diff --git a/asm/include/overlay_01_021E6880.inc b/asm/include/overlay_01_021E6880.inc index 1b45fdf350..61d6d04b4a 100644 --- a/asm/include/overlay_01_021E6880.inc +++ b/asm/include/overlay_01_021E6880.inc @@ -14,7 +14,7 @@ .public GameStats_GetCapped .public GameStats_AddScore .public SaveData_GetPhoneCallPersistentState -.public sub_0202F08C +.public PhoneCallPersistentState_CheckCallTriggerFlag .public Save_SafariZone_Get .public sub_0202F620 .public Save_ApricornBox_Get @@ -177,7 +177,7 @@ .public ov01_021F6B64 .public ov01_021FB630 .public ov01_02206378 -.public ov02_02246C8C +.public FieldSystem_PerformLandOrSurfEncounterCheck .public PlayerStepEvent_RepelCounterDecrement .public ov02_0224E35C .public ov02_0224E4CC diff --git a/asm/include/overlay_01_021F3610.inc b/asm/include/overlay_01_021F3610.inc index 4f89c4774b..6516e98681 100644 --- a/asm/include/overlay_01_021F3610.inc +++ b/asm/include/overlay_01_021F3610.inc @@ -8,7 +8,7 @@ .public sub_0201F990 .public sub_02020D2C .public GF_AssertFail -.public sub_02097268 +.public GetSafariObjectConfig .public NNS_G3dGlbFlushP .public NNS_G3dGlbSetBaseTrans .public NNS_G3dGlbSetBaseScale diff --git a/asm/include/overlay_01_021FC05C.inc b/asm/include/overlay_01_021FC05C.inc index 195ded47d3..977d59811b 100644 --- a/asm/include/overlay_01_021FC05C.inc +++ b/asm/include/overlay_01_021FC05C.inc @@ -27,5 +27,5 @@ .public ov01_021EB31C .public GetHoneySweetScentWorkSize .public Task_HoneyOrSweetScent -.public ov02_02247170 -.public ov02_02247F9C +.public FieldSystem_PerformSweetScentEncounterCheck +.public FieldSystem_CanGenerateStepEncounter diff --git a/asm/include/overlay_01_021FC66C.inc b/asm/include/overlay_01_021FC66C.inc index a6b3cd1f61..c8aee6d8e8 100644 --- a/asm/include/overlay_01_021FC66C.inc +++ b/asm/include/overlay_01_021FC66C.inc @@ -56,4 +56,4 @@ .public Task_OverworldFish .public ov01_02200400 .public ov01_02200540 -.public ov02_02246F70 +.public FieldSystem_PerformFishEncounterCheck diff --git a/asm/include/overlay_02.inc b/asm/include/overlay_02.inc index cfb00b2a09..4d8bd44b24 100644 --- a/asm/include/overlay_02.inc +++ b/asm/include/overlay_02.inc @@ -182,7 +182,7 @@ .public SavePokegear_FindEmptyPhonebookSlot .public SavePokegear_IsNumberRegistered .public SavePokegear_AllocAndCopyPhonebook -.public sub_0202F08C +.public PhoneCallPersistentState_CheckCallTriggerFlag .public Save_SafariZone_Get .public sub_0202F620 .public SafariZone_GetAreaSet @@ -238,7 +238,7 @@ .public MetatileBehavior_IsEncounterGrass .public sub_0205B6F4 .public MetatileBehavior_IsSurfableWater -.public sub_0205B994 +.public MetatileBehavior_CanGenerateWalkingEncounters .public sub_0205BAD0 .public sub_0205BAE4 .public sub_0205BB04 @@ -343,8 +343,8 @@ .public FreePhoneBook .public GetPhoneMessageGmm .public sub_02095FF8 -.public sub_02097268 -.public sub_020974C4 +.public GetSafariObjectConfig +.public SafariZoneAreaSet_LoadAreaEncounters .public sub_02097F6C .public NNS_G2dGetUnpackedCharacterData .public NNS_G2dGetUnpackedPaletteData @@ -458,13 +458,13 @@ .public ov02_02246714 .public OpenAlphHiddenRoom .public ov02_022469B4 -.public ov02_02246C8C -.public ov02_02246F70 -.public ov02_022470A0 -.public ov02_02247170 -.public FieldSystem_ChooseHeadbuttEncounter -.public ov02_02247F30 -.public ov02_02247F9C +.public FieldSystem_PerformLandOrSurfEncounterCheck +.public FieldSystem_PerformFishEncounterCheck +.public FieldSystem_PerformRockSmashEncounterCheck +.public FieldSystem_PerformSweetScentEncounterCheck +.public FieldSystem_PerformHeadbuttEncounterCheck +.public FieldSystem_GenerateSingleWildPokemon +.public FieldSystem_CanGenerateStepEncounter .public ov02_02249458 .public ov02_0224953C .public ov02_02249548 @@ -539,3 +539,5 @@ .public ov02_02253188 .public ov02_022531B4 .public BugContest_GetEncounterSlot +.public ov02_022494C4 +.public ov02_0224E340 diff --git a/asm/include/overlay_03.inc b/asm/include/overlay_03.inc index 42d46687a0..b58b8f4261 100644 --- a/asm/include/overlay_03.inc +++ b/asm/include/overlay_03.inc @@ -214,7 +214,7 @@ .public sub_020881C0 .public sub_020910B8 .public sub_02092B04 -.public sub_02097268 +.public GetSafariObjectConfig .public sub_02097720 .public MI_CpuFill8 .public abs diff --git a/asm/include/overlay_108.inc b/asm/include/overlay_108.inc index 81f1ebe021..574d222e50 100644 --- a/asm/include/overlay_108.inc +++ b/asm/include/overlay_108.inc @@ -197,7 +197,7 @@ .public Save_VarsFlags_Get .public ChangeFlag99D .public BgConfig_LoadAssetFromOpenNarc -.public sub_02097268 +.public GetSafariObjectConfig .public NNS_GfdGetLnkTexVramManagerWorkSize .public NNS_GfdGetLnkPlttVramManagerWorkSize .public NNS_G3dAnmObjInit diff --git a/asm/include/unk_02097268.inc b/asm/include/unk_02097268.inc index f87e91d7cc..472638bb71 100644 --- a/asm/include/unk_02097268.inc +++ b/asm/include/unk_02097268.inc @@ -5,19 +5,19 @@ .public Heap_Free .public GF_AssertFail .public SaveData_GetPhoneCallPersistentState -.public sub_0202F01C -.public sub_0202F050 +.public PhoneCallPersistentState_SetCallTriggerFlag +.public PhoneCallPersistentState_ClearCallTriggerFlag .public PhoneCallPersistentState_SafariZoneArrangement_Set .public Save_SafariZone_Get .public SafariZone_GetAreaSet -.public sub_0202F6A0 -.public sub_0202F6AC -.public sub_0202F6B8 +.public SafariZone_SetLevel +.public SafariZone_GetLevel +.public SafariZone_AddToAllAreaLevels .public SafariZone_GetObjectUnlockLevel .public Save_VarsFlags_Get .public Save_VarsFlags_CheckSafariSysFlag -.public sub_02097268 -.public sub_0209730C -.public sub_020974C4 +.public GetSafariObjectConfig +.public SaveData_SafariZone_CheckAreasWithUpdatedEncounters +.public SafariZoneAreaSet_LoadAreaEncounters .public MI_CpuFill8 .public _s32_div_f diff --git a/asm/macros/script.inc b/asm/macros/script.inc index afdb98132c..9ba53e0c69 100644 --- a/asm/macros/script.inc +++ b/asm/macros/script.inc @@ -903,7 +903,7 @@ .byte \arg1 .endm - .macro scrcmd_149 arg0 + .macro unset_phone_call_trigger arg0 .short 149 .byte \arg0 .endm diff --git a/asm/overlay_01_021E6880.s b/asm/overlay_01_021E6880.s index 4ac649bd34..d287920be0 100644 --- a/asm/overlay_01_021E6880.s +++ b/asm/overlay_01_021E6880.s @@ -7,6 +7,7 @@ #include "constants/flags.h" #include "constants/mmodel.h" #include "constants/items.h" +#include "constants/phone_constants.h" #include "msgdata/msg/msg_0096_D31R0201.h" #include "msgdata/msg/msg_0066_D23R0102.h" .include "asm/macros.inc" @@ -1138,7 +1139,7 @@ _021E7172: cmp r0, #0 beq _021E718E add r0, r4, #0 - bl ov02_02246C8C + bl FieldSystem_PerformLandOrSurfEncounterCheck cmp r0, #1 bne _021E718E add sp, #8 @@ -2193,13 +2194,13 @@ ov01_021E7A08: ; 0x021E7A08 add r5, r0, #0 ldr r0, [r4, #0xc] bl Save_VarsFlags_Get - ldr r1, _021E7A5C ; =FLAG_UNK_984 + ldr r1, _021E7A5C ; =FLAG_SYS_GOT_BIKE_SHOP_CALL bl Save_VarsFlags_CheckFlagInArray cmp r0, #0 bne _021E7A56 add r0, r5, #0 mov r1, #2 - bl sub_0202F08C + bl PhoneCallPersistentState_CheckCallTriggerFlag cmp r0, #0 bne _021E7A56 ldr r0, [r4, #0xc] @@ -2212,8 +2213,8 @@ ov01_021E7A08: ; 0x021E7A08 blo _021E7A56 add r0, r4, #0 bl FieldSystem_GetGearPhoneRingManager - mov r1, #2 - mov r2, #1 + mov r1, #CALL_TRIGGER_BIKE_SHOP_STEPS + mov r2, #1 // TRUE bl sub_02092E14 mov r0, #0 pop {r3, r4, r5, pc} @@ -2221,7 +2222,7 @@ _021E7A56: mov r0, #0 pop {r3, r4, r5, pc} nop -_021E7A5C: .word FLAG_UNK_984 +_021E7A5C: .word FLAG_SYS_GOT_BIKE_SHOP_CALL thumb_func_end ov01_021E7A08 thumb_func_start BugContestTimeoutCheck diff --git a/asm/overlay_01_021F3610.s b/asm/overlay_01_021F3610.s index 7110c280ff..654d77b666 100644 --- a/asm/overlay_01_021F3610.s +++ b/asm/overlay_01_021F3610.s @@ -378,7 +378,7 @@ _021F38AC: ldrb r1, [r4, #2] ldr r2, [sp, #0x4c] add r0, sp, #0x14 - bl sub_02097268 + bl GetSafariObjectConfig add r1, sp, #0x14 ldrb r2, [r1] ldr r0, [sp, #8] diff --git a/asm/overlay_01_021FC05C.s b/asm/overlay_01_021FC05C.s index 551e47eae3..92ef774e6e 100644 --- a/asm/overlay_01_021FC05C.s +++ b/asm/overlay_01_021FC05C.s @@ -502,7 +502,7 @@ _021FC3A8: bl GetMetatileBehavior add r1, r0, #0 add r0, r5, #0 - bl ov02_02247F9C + bl FieldSystem_CanGenerateStepEncounter cmp r0, #0 beq _021FC3EE mov r0, #6 @@ -552,7 +552,7 @@ _021FC434: _021FC444: add r0, r5, #0 add r1, r6, #0 - bl ov02_02247170 + bl FieldSystem_PerformSweetScentEncounterCheck cmp r0, #0 bne _021FC4B2 bl GF_AssertFail diff --git a/asm/overlay_01_021FC66C.s b/asm/overlay_01_021FC66C.s index ac267a40b9..5ba9b0c249 100644 --- a/asm/overlay_01_021FC66C.s +++ b/asm/overlay_01_021FC66C.s @@ -63,7 +63,7 @@ _021FC6B6: ldr r1, [r5, #0xc] add r0, r4, #0 add r2, #0x10 - bl ov02_02246F70 + bl FieldSystem_PerformFishEncounterCheck str r0, [r5, #8] ldr r1, [r5, #0xc] ldr r2, [r5, #8] diff --git a/asm/overlay_02_02245B80.s b/asm/overlay_02_02245B80.s index 67a4e30b74..c35bcbf7b5 100644 --- a/asm/overlay_02_02245B80.s +++ b/asm/overlay_02_02245B80.s @@ -1917,21274 +1917,6 @@ _02246A7E: .balign 4, 0 thumb_func_end ov02_02246A34 - thumb_func_start ov02_02246A84 -ov02_02246A84: ; 0x02246A84 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl GF_RTC_GetTimeOfDay - cmp r0, #0 - bne _02246A98 - add r3, r5, #0 - add r3, #0x14 - b _02246AB8 -_02246A98: - sub r1, r0, #1 - cmp r1, #1 - bhi _02246AA4 - add r3, r5, #0 - add r3, #0x2c - b _02246AB8 -_02246AA4: - sub r0, r0, #3 - cmp r0, #1 - bhi _02246AB0 - add r3, r5, #0 - add r3, #0x44 - b _02246AB8 -_02246AB0: - bl GF_AssertFail - add r3, r5, #0 - add r3, #0x14 -_02246AB8: - mov r2, #0 -_02246ABA: - ldrh r0, [r3] - add r1, r5, r2 - add r2, r2, #1 - str r0, [r4] - ldrb r0, [r1, #8] - add r3, r3, #2 - strh r0, [r4, #4] - ldrb r0, [r1, #8] - strh r0, [r4, #6] - add r4, #8 - cmp r2, #0xc - blt _02246ABA - pop {r3, r4, r5, pc} - thumb_func_end ov02_02246A84 - - thumb_func_start ov02_02246AD4 -ov02_02246AD4: ; 0x02246AD4 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r1, #0 - add r6, r2, #0 - bl GF_RTC_GetTimeOfDay - sub r0, r0, #3 - cmp r0, #1 - bhi _02246AFC - cmp r4, #1 - bne _02246AF2 - add r5, #0xc0 - ldrh r0, [r5] - str r0, [r6, #0x18] - pop {r4, r5, r6, pc} -_02246AF2: - cmp r4, #2 - bne _02246AFC - add r5, #0xc0 - ldrh r0, [r5] - str r0, [r6, #8] -_02246AFC: - pop {r4, r5, r6, pc} - .balign 4, 0 - thumb_func_end ov02_02246AD4 - - thumb_func_start ov02_02246B00 -ov02_02246B00: ; 0x02246B00 - push {r3, r4, r5, lr} - add r5, r1, #0 - add r4, r2, #0 - bl GetRadioMusicPlayingSeq - cmp r0, #3 - bne _02246B2E - add r0, r5, #0 - add r0, #0x5c - ldrh r0, [r0] - str r0, [r4, #0x10] - add r0, r5, #0 - add r0, #0x5c - ldrh r0, [r0] - str r0, [r4, #0x18] - add r0, r5, #0 - add r0, #0x5e - ldrh r0, [r0] - add r5, #0x5e - str r0, [r4, #0x20] - ldrh r0, [r5] - str r0, [r4, #0x28] - pop {r3, r4, r5, pc} -_02246B2E: - bl GetRadioMusicPlayingSeq - cmp r0, #4 - bne _02246B54 - add r0, r5, #0 - add r0, #0x60 - ldrh r0, [r0] - str r0, [r4, #0x10] - add r0, r5, #0 - add r0, #0x60 - ldrh r0, [r0] - str r0, [r4, #0x18] - add r0, r5, #0 - add r0, #0x62 - ldrh r0, [r0] - add r5, #0x62 - str r0, [r4, #0x20] - ldrh r0, [r5] - str r0, [r4, #0x28] -_02246B54: - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end ov02_02246B00 - - thumb_func_start ov02_02246B58 -ov02_02246B58: ; 0x02246B58 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - ldr r0, [r5, #0xc] - add r4, r1, #0 - add r6, r2, #0 - add r7, r3, #0 - bl Save_Roamers_Get - str r0, [sp] - bl RoamerSave_OutbreakActive - cmp r0, #0 - beq _02246B9A - ldr r0, [sp] - mov r1, #2 - bl Roamers_GetRand - ldr r1, [r5, #0x20] - mov r2, #0 - ldr r1, [r1] - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - bl sub_02097F6C - cmp r0, #0 - beq _02246B9A - add r0, r4, #0 - add r0, #0xbc - ldrh r0, [r0] - add r4, #0xbc - str r0, [r6] - ldrh r0, [r4] - str r0, [r7] -_02246B9A: - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov02_02246B58 - - thumb_func_start ov02_02246B9C -ov02_02246B9C: ; 0x02246B9C - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - ldr r0, [r5, #0xc] - add r4, r1, #0 - add r6, r2, #0 - bl Save_Roamers_Get - add r7, r0, #0 - bl RoamerSave_OutbreakActive - cmp r0, #0 - beq _02246BD4 - add r0, r7, #0 - mov r1, #2 - bl Roamers_GetRand - ldr r1, [r5, #0x20] - mov r2, #1 - ldr r1, [r1] - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - bl sub_02097F6C - cmp r0, #0 - beq _02246BD4 - add r4, #0xbe - ldrh r0, [r4] - str r0, [r6] -_02246BD4: - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_02246B9C - - thumb_func_start ov02_02246BD8 -ov02_02246BD8: ; 0x02246BD8 - push {r4, r5, r6, r7, lr} - sub sp, #0x2c - add r6, r0, #0 - ldr r0, [r6, #0xc] - add r7, r1, #0 - add r5, r2, #0 - add r4, r3, #0 - bl Save_Roamers_Get - str r0, [sp] - bl RoamerSave_OutbreakActive - cmp r0, #0 - beq _02246C7A - ldr r0, [sp] - mov r1, #2 - bl Roamers_GetRand - ldr r1, [r6, #0x20] - mov r2, #2 - ldr r1, [r1] - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - bl sub_02097F6C - cmp r0, #0 - beq _02246C7A - ldr r0, _02246C80 ; =ov02_02253290 - add r2, sp, #0x20 - ldr r0, [r0] - ldr r6, _02246C84 ; =ov02_02253294 - str r0, [sp, #8] - ldmia r6!, {r0, r1} - str r2, [sp, #4] - stmia r2!, {r0, r1} - ldr r0, [r6] - add r6, sp, #0xc - str r0, [r2] - ldr r2, _02246C88 ; =ov02_022532A0 - mov ip, r6 - ldmia r2!, {r0, r1} - stmia r6!, {r0, r1} - ldmia r2!, {r0, r1} - stmia r6!, {r0, r1} - ldr r0, [r2] - add r3, sp, #8 - str r0, [r6] - cmp r7, #0 - beq _02246C44 - cmp r7, #1 - beq _02246C48 - cmp r7, #2 - beq _02246C4E - b _02246C54 -_02246C44: - mov r1, #1 - b _02246C5C -_02246C48: - mov r1, #3 - ldr r3, [sp, #4] - b _02246C5C -_02246C4E: - mov r1, #5 - mov r3, ip - b _02246C5C -_02246C54: - bl GF_AssertFail - add sp, #0x2c - pop {r4, r5, r6, r7, pc} -_02246C5C: - mov r2, #0 - cmp r1, #0 - bls _02246C7A -_02246C62: - add r0, r5, #0 - add r0, #0xc2 - lsl r6, r2, #2 - ldr r6, [r3, r6] - ldrh r0, [r0] - lsl r6, r6, #3 - str r0, [r4, r6] - add r0, r2, #1 - lsl r0, r0, #0x18 - lsr r2, r0, #0x18 - cmp r2, r1 - blo _02246C62 -_02246C7A: - add sp, #0x2c - pop {r4, r5, r6, r7, pc} - nop -_02246C80: .word ov02_02253290 -_02246C84: .word ov02_02253294 -_02246C88: .word ov02_022532A0 - thumb_func_end ov02_02246BD8 - - thumb_func_start ov02_02246C8C -ov02_02246C8C: ; 0x02246C8C - push {r3, r4, r5, r6, r7, lr} - sub sp, #0xa0 - add r5, r0, #0 - add r0, #0x7e - ldrh r0, [r0] - cmp r0, #3 - bhi _02246CA0 - add sp, #0xa0 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02246CA0: - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetXCoord - add r4, r0, #0 - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetZCoord - add r2, r0, #0 - add r0, r5, #0 - add r1, r4, #0 - bl GetMetatileBehavior - add r7, r0, #0 - add r2, sp, #0x18 - add r0, r5, #0 - add r1, r7, #0 - add r2, #1 - bl ov02_0224762C - add r1, sp, #0x18 - strb r0, [r1] - ldrb r0, [r1] - cmp r0, #0 - bne _02246CD6 - add sp, #0xa0 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02246CD6: - add r0, r5, #0 - bl ov02_02248698 - ldr r0, [r5, #0xc] - bl SaveArray_Party_Get - add r6, r0, #0 - add r0, r5, #0 - bl MapEvents_GetLoadedEncTable - add r4, r0, #0 - add r0, r6, #0 - mov r1, #0 - bl Party_GetMonByIndex - str r0, [sp, #0x10] - ldr r1, [sp, #0x10] - add r0, r5, #0 - add r2, r4, #0 - add r3, sp, #0x24 - bl ov02_02248618 - ldr r0, [r5, #0xc] - bl Save_Roamers_Get - bl RoamerSave_RepelNotInUse - cmp r0, #0 - bne _02246D26 - add r0, r6, #0 - bl GetFirstAliveMonInParty_CrashIfNone - mov r1, #1 - str r1, [sp, #0x28] - mov r1, #MON_DATA_LEVEL - mov r2, #0 - bl GetMonData - add r1, sp, #0x18 - strb r0, [r1, #0x18] -_02246D26: - ldr r0, [r5, #0xc] - bl Save_LocalFieldData_Get - bl LocalFieldData_GetWeatherType - add r3, r0, #0 - ldr r0, [sp, #0x10] - add r1, sp, #0x18 - str r0, [sp] - ldrb r1, [r1] - mov r0, #0 - add r2, sp, #0x24 - bl ov02_02248190 - add r1, sp, #0x18 - strb r0, [r1] - add r0, r5, #0 - add r1, sp, #0x18 - bl ApplyFluteEffectToEncounterRate - ldr r0, [sp, #0x10] - add r1, sp, #0x18 - bl ApplyLeadMonHeldItemEffectToEncounterRate - add r1, sp, #0x18 - ldrb r1, [r1] - add r0, r5, #0 - add r2, r7, #0 - bl ov02_02247568 - cmp r0, #0 - beq _02246D6A - mov r7, #1 - b _02246D6C -_02246D6A: - mov r7, #0 -_02246D6C: - cmp r7, #0 - bne _02246D76 - add sp, #0xa0 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02246D76: - ldr r0, [r5, #0xc] - bl Save_VarsFlags_Get - bl Save_VarsFlags_CheckHaveFollower - cmp r0, #0 - beq _02246D88 - mov r6, #1 - b _02246D8A -_02246D88: - mov r6, #0 -_02246D8A: - cmp r6, #0 - bne _02246DE0 - add r0, r5, #0 - add r1, sp, #0x1c - bl ov02_GetRandomActiveRoamerInCurrMap - cmp r0, #0 - beq _02246DE0 - ldr r0, [sp, #0x1c] - mov r1, #6 - bl GetRoamerData - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - add r1, sp, #0x24 - bl ov02_02248290 - cmp r0, #0 - bne _02246DDA - mov r0, #0xb - add r1, r0, #0 - add r1, #0xf5 - bl BattleSetup_New - str r0, [sp, #0x20] - add r1, r5, #0 - bl BattleSetup_InitFromFieldSystem - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x1c] - ldr r2, [sp, #0x20] - bl ov02_022482BC - ldr r1, [sp, #0x20] - add r0, r5, #0 - bl sub_02050B08 - add sp, #0xa0 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_02246DDA: - add sp, #0xa0 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02246DE0: - ldr r0, [r5, #0xc] - bl Save_VarsFlags_Get - str r0, [sp, #0x14] - bl Save_VarsFlags_CheckSafariSysFlag - str r0, [sp, #0xc] - ldr r0, [sp, #0x14] - bl Save_VarsFlags_CheckBugContestFlag - str r0, [sp, #8] - cmp r6, #0 - bne _02246E18 - ldr r0, [sp, #0xc] - mov r1, #0 - cmp r0, #0 - beq _02246E06 - mov r1, #1 - b _02246E0E -_02246E06: - ldr r0, [sp, #8] - cmp r0, #0 - beq _02246E0E - mov r1, #2 -_02246E0E: - add r0, r5, #0 - add r2, sp, #0x20 - bl ov02_02248244 - b _02246E22 -_02246E18: - mov r0, #0xb - mov r1, #0x4a - bl BattleSetup_New - str r0, [sp, #0x20] -_02246E22: - ldr r0, [sp, #0x20] - add r1, r5, #0 - bl BattleSetup_InitFromFieldSystem - add r0, sp, #0x18 - ldrb r0, [r0, #1] - cmp r0, #0 - bne _02246ECA - add r0, r4, #0 - add r1, sp, #0x40 - bl ov02_02246A84 - add r0, r5, #0 - add r1, r4, #0 - add r2, sp, #0x40 - add r3, sp, #0x48 - bl ov02_02246B58 - add r0, r5, #0 - add r1, r4, #0 - add r2, sp, #0x40 - bl ov02_02246B00 - cmp r6, #0 - bne _02246EA0 - ldr r0, [sp, #0xc] - cmp r0, #0 - beq _02246E70 - add r0, sp, #0x40 - str r0, [sp] - add r0, sp, #0x24 - str r0, [sp, #4] - ldr r1, [sp, #0x10] - ldr r2, [sp, #0x20] - add r0, r5, #0 - add r3, r4, #0 - bl ov02_02247444 - b _02246F26 -_02246E70: - ldr r0, [sp, #8] - cmp r0, #0 - add r0, sp, #0x40 - beq _02246E8C - str r0, [sp] - add r0, sp, #0x24 - str r0, [sp, #4] - ldr r1, [sp, #0x10] - ldr r2, [sp, #0x20] - add r0, r5, #0 - add r3, r4, #0 - bl ov02_02247460 - b _02246F26 -_02246E8C: - str r0, [sp] - add r0, sp, #0x24 - str r0, [sp, #4] - ldr r1, [sp, #0x10] - ldr r2, [sp, #0x20] - add r0, r5, #0 - add r3, r4, #0 - bl ov02_02247424 - b _02246F26 -_02246EA0: - ldr r0, [r5, #0xc] - bl Save_VarsFlags_Get - bl Save_VarsFlags_GetFollowerTrainerNum - ldr r1, [sp, #0x20] - mov r2, #0xb - str r0, [r1, #0x20] - ldr r0, [sp, #0x20] - ldr r1, [r5, #0xc] - bl EnemyTrainerSet_Init - add r0, sp, #0x24 - str r0, [sp] - ldr r1, [sp, #0x10] - ldr r2, [sp, #0x20] - add r0, r5, #0 - add r3, sp, #0x40 - bl ov02_0224749C - b _02246F26 -_02246ECA: - cmp r0, #1 - bne _02246F16 - mov r0, #0 - add r1, r4, #0 - add r2, sp, #0x40 -_02246ED4: - add r3, r1, #0 - add r3, #0x66 - ldrh r3, [r3] - add r0, r0, #1 - str r3, [r2] - add r3, r1, #0 - add r3, #0x65 - ldrb r3, [r3] - strh r3, [r2, #4] - add r3, r1, #0 - add r3, #0x64 - ldrb r3, [r3] - add r1, r1, #4 - strh r3, [r2, #6] - add r2, #8 - cmp r0, #5 - blt _02246ED4 - add r0, r5, #0 - add r1, r4, #0 - add r2, sp, #0x40 - bl ov02_02246B9C - add r0, sp, #0x24 - str r0, [sp] - ldr r0, [sp, #0xc] - ldr r1, [sp, #0x10] - str r0, [sp, #4] - ldr r2, [sp, #0x20] - add r0, r5, #0 - add r3, sp, #0x40 - bl ov02_022474E0 - b _02246F26 -_02246F16: - bl GF_AssertFail - ldr r0, [sp, #0x20] - bl BattleSetup_Delete - add sp, #0xa0 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02246F26: - cmp r0, #0 - beq _02246F40 - ldr r1, [sp, #0x20] - add r0, r5, #0 - bl sub_02050B08 - add r0, r5, #0 - mov r1, #0 - add r0, #0x7e - strh r1, [r0] - add r5, #0x7c - strh r1, [r5] - b _02246F42 -_02246F40: - mov r7, #0 -_02246F42: - mov r0, #4 - bl GF_heap_c_dummy_return_true - cmp r0, #0 - bne _02246F50 - bl GF_AssertFail -_02246F50: - mov r0, #0xb - bl GF_heap_c_dummy_return_true - cmp r0, #0 - bne _02246F5E - bl GF_AssertFail -_02246F5E: - cmp r7, #0 - bne _02246F68 - ldr r0, [sp, #0x20] - bl BattleSetup_Delete -_02246F68: - add r0, r7, #0 - add sp, #0xa0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_02246C8C - - thumb_func_start ov02_02246F70 -ov02_02246F70: ; 0x02246F70 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0xa0 - str r0, [sp, #0x20] - str r1, [sp, #0xc] - str r2, [sp, #0x10] - bl ov02_0224802C - add r4, r0, #0 - bne _02246F88 - add sp, #0xa0 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02246F88: - ldr r0, [sp, #0x20] - ldr r0, [r0, #0xc] - bl SaveArray_Party_Get - mov r1, #0 - bl Party_GetMonByIndex - str r0, [sp, #0x1c] - ldr r0, [sp, #0x20] - ldr r1, [sp, #0x1c] - mov r2, #0 - add r3, sp, #0x24 - bl ov02_02248618 - ldr r0, [sp, #0x20] - ldr r0, [r0, #0xc] - bl Save_LocalFieldData_Get - bl LocalFieldData_GetWeatherType - add r3, r0, #0 - ldr r0, [sp, #0x1c] - add r1, r4, #0 - str r0, [sp] - mov r0, #1 - add r2, sp, #0x24 - bl ov02_02248190 - add r4, r0, #0 - bl LCRandom - mov r1, #0x64 - bl _s32_div_f - lsl r0, r1, #0x10 - lsr r0, r0, #0x10 - cmp r0, r4 - blt _02246FDA - add sp, #0xa0 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02246FDA: - ldr r0, [sp, #0x20] - ldr r0, [r0, #0xc] - bl Save_VarsFlags_Get - bl Save_VarsFlags_CheckSafariSysFlag - str r0, [sp, #0x18] - cmp r0, #0 - beq _02246FF8 - ldr r0, [sp, #0x20] - ldr r2, [sp, #0x10] - mov r1, #1 - bl ov02_02248244 - b _02247002 -_02246FF8: - ldr r0, [sp, #0x20] - ldr r2, [sp, #0x10] - mov r1, #0 - bl ov02_02248244 -_02247002: - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x20] - ldr r0, [r0] - bl BattleSetup_InitFromFieldSystem - ldr r0, [sp, #0x10] - ldr r0, [r0] - bl sub_02052544 - ldr r0, [sp, #0x20] - bl MapEvents_GetLoadedEncTable - str r0, [sp, #0x14] - ldr r0, [sp, #0xc] - cmp r0, #0 - beq _0224702C - cmp r0, #1 - beq _02247032 - cmp r0, #2 - beq _02247038 - b _0224703C -_0224702C: - ldr r7, [sp, #0x14] - add r7, #0x80 - b _0224703C -_02247032: - ldr r7, [sp, #0x14] - add r7, #0x94 - b _0224703C -_02247038: - ldr r7, [sp, #0x14] - add r7, #0xa8 -_0224703C: - mov r6, #0 -_0224703E: - lsl r4, r6, #2 - add r5, r7, r4 - ldrh r1, [r5, #2] - lsl r2, r6, #3 - add r0, sp, #0x40 - add r3, r0, r2 - str r1, [r0, r2] - ldrb r0, [r5, #1] - strh r0, [r3, #4] - ldrb r0, [r7, r4] - strh r0, [r3, #6] - add r0, r6, #1 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - cmp r6, #5 - blo _0224703E - ldr r0, [sp, #0x14] - ldr r1, [sp, #0xc] - add r2, sp, #0x40 - bl ov02_02246AD4 - ldr r0, [sp, #0x20] - ldr r1, [sp, #0xc] - ldr r2, [sp, #0x14] - add r3, sp, #0x40 - bl ov02_02246BD8 - add r0, sp, #0x24 - str r0, [sp] - ldr r0, [sp, #0xc] - ldr r2, [sp, #0x10] - str r0, [sp, #4] - ldr r0, [sp, #0x18] - ldr r1, [sp, #0x1c] - str r0, [sp, #8] - ldr r0, [sp, #0x20] - ldr r2, [r2] - add r3, sp, #0x40 - bl ov02_02247514 - cmp r0, #0 - beq _02247098 - add sp, #0xa0 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_02247098: - mov r0, #0 - add sp, #0xa0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_02246F70 - - thumb_func_start ov02_022470A0 -ov02_022470A0: ; 0x022470A0 - push {r4, r5, r6, r7, lr} - sub sp, #0x8c - str r0, [sp, #0xc] - str r1, [sp, #4] - bl ov02_022480B4 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - bne _022470B8 - add sp, #0x8c - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_022470B8: - ldr r0, [sp, #0xc] - ldr r0, [r0, #0xc] - bl SaveArray_Party_Get - mov r1, #0 - bl Party_GetMonByIndex - str r0, [sp, #8] - ldr r0, [sp, #0xc] - ldr r1, [sp, #8] - mov r2, #0 - add r3, sp, #0x10 - bl ov02_02248618 - ldr r0, [sp, #0xc] - ldr r0, [r0, #0xc] - bl Save_LocalFieldData_Get - bl LocalFieldData_GetWeatherType - add r3, r0, #0 - ldr r0, [sp, #8] - add r1, r4, #0 - str r0, [sp] - mov r0, #0 - add r2, sp, #0x10 - bl ov02_02248190 - add r4, r0, #0 - bl LCRandom - mov r1, #0x64 - bl _s32_div_f - cmp r1, r4 - blt _02247106 - add sp, #0x8c - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_02247106: - ldr r0, [sp, #0xc] - ldr r2, [sp, #4] - mov r1, #0 - bl ov02_02248244 - ldr r0, [sp, #4] - ldr r1, [sp, #0xc] - ldr r0, [r0] - bl BattleSetup_InitFromFieldSystem - ldr r0, [sp, #0xc] - bl MapEvents_GetLoadedEncTable - add r5, r0, #0 - add r5, #0x78 - mov r6, #0 -_02247126: - lsl r3, r6, #2 - add r4, r5, r3 - ldrh r1, [r4, #2] - lsl r7, r6, #3 - add r0, sp, #0x2c - add r2, r0, r7 - str r1, [r0, r7] - ldrb r0, [r4, #1] - strh r0, [r2, #4] - ldrb r0, [r5, r3] - strh r0, [r2, #6] - add r0, r6, #1 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - cmp r6, #2 - blo _02247126 - add r0, sp, #0x10 - str r0, [sp] - ldr r2, [sp, #4] - ldr r0, [sp, #0xc] - ldr r1, [sp, #8] - ldr r2, [r2] - add r3, sp, #0x2c - bl ov02_0224754C - cmp r0, #0 - bne _0224716A - ldr r0, [sp, #4] - ldr r0, [r0] - bl BattleSetup_Delete - add sp, #0x8c - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_0224716A: - mov r0, #1 - add sp, #0x8c - pop {r4, r5, r6, r7, pc} - thumb_func_end ov02_022470A0 - - thumb_func_start ov02_02247170 -ov02_02247170: ; 0x02247170 - push {r4, r5, r6, r7, lr} - sub sp, #0x9c - add r5, r0, #0 - ldr r0, [r5, #0xc] - str r1, [sp, #8] - bl Save_VarsFlags_Get - add r7, r0, #0 - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetXCoord - add r4, r0, #0 - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetZCoord - add r2, r0, #0 - add r0, r5, #0 - add r1, r4, #0 - bl GetMetatileBehavior - add r1, r0, #0 - add r0, r5, #0 - add r2, sp, #0x14 - bl ov02_0224762C - cmp r0, #0 - bne _022471AC - add sp, #0x9c - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_022471AC: - ldr r0, [r5, #0xc] - bl SaveArray_Party_Get - add r6, r0, #0 - add r0, r5, #0 - bl MapEvents_GetLoadedEncTable - add r4, r0, #0 - add r0, r6, #0 - mov r1, #0 - bl Party_GetMonByIndex - str r0, [sp, #0x10] - ldr r1, [sp, #0x10] - add r0, r5, #0 - add r2, r4, #0 - add r3, sp, #0x20 - bl ov02_02248618 - mov r0, #1 - str r0, [sp, #0x28] - add r0, r7, #0 - bl Save_VarsFlags_CheckHaveFollower - str r0, [sp, #0xc] - cmp r0, #0 - bne _0224721A - add r0, r5, #0 - add r1, sp, #0x18 - bl ov02_GetRandomActiveRoamerInCurrMap - cmp r0, #0 - beq _0224721A - mov r0, #0xb - add r1, r0, #0 - add r1, #0xf5 - bl BattleSetup_New - str r0, [sp, #0x1c] - add r1, r5, #0 - bl BattleSetup_InitFromFieldSystem - ldr r0, [sp, #0x20] - ldr r1, [sp, #0x18] - ldr r2, [sp, #0x1c] - bl ov02_022482BC - ldr r1, [sp, #8] - ldr r2, [sp, #0x1c] - add r0, r5, #0 - bl FieldSystem_StartForcedWildBattle - add sp, #0x9c - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_0224721A: - add r0, r7, #0 - bl Save_VarsFlags_CheckSafariSysFlag - add r6, r0, #0 - add r0, r7, #0 - bl Save_VarsFlags_CheckBugContestFlag - add r7, r0, #0 - ldr r0, [sp, #0xc] - cmp r0, #0 - bne _0224724A - mov r1, #0 - cmp r6, #0 - beq _0224723A - mov r1, #1 - b _02247240 -_0224723A: - cmp r7, #0 - beq _02247240 - mov r1, #2 -_02247240: - add r0, r5, #0 - add r2, sp, #0x1c - bl ov02_02248244 - b _02247254 -_0224724A: - mov r0, #0xb - mov r1, #0x4a - bl BattleSetup_New - str r0, [sp, #0x1c] -_02247254: - ldr r0, [sp, #0x1c] - add r1, r5, #0 - bl BattleSetup_InitFromFieldSystem - add r0, sp, #0x14 - ldrb r0, [r0] - cmp r0, #0 - bne _022472F8 - add r0, r4, #0 - add r1, sp, #0x3c - bl ov02_02246A84 - add r0, r5, #0 - add r1, r4, #0 - add r2, sp, #0x3c - add r3, sp, #0x44 - bl ov02_02246B58 - add r0, r5, #0 - add r1, r4, #0 - add r2, sp, #0x3c - bl ov02_02246B00 - ldr r0, [sp, #0xc] - cmp r0, #0 - bne _022472CE - cmp r6, #0 - add r0, sp, #0x3c - beq _022472A2 - str r0, [sp] - add r0, sp, #0x20 - str r0, [sp, #4] - ldr r1, [sp, #0x10] - ldr r2, [sp, #0x1c] - add r0, r5, #0 - add r3, r4, #0 - bl ov02_02247444 - b _0224734C -_022472A2: - cmp r7, #0 - beq _022472BA - str r0, [sp] - add r0, sp, #0x20 - str r0, [sp, #4] - ldr r1, [sp, #0x10] - ldr r2, [sp, #0x1c] - add r0, r5, #0 - add r3, r4, #0 - bl ov02_02247460 - b _0224734C -_022472BA: - str r0, [sp] - add r0, sp, #0x20 - str r0, [sp, #4] - ldr r1, [sp, #0x10] - ldr r2, [sp, #0x1c] - add r0, r5, #0 - add r3, r4, #0 - bl ov02_02247424 - b _0224734C -_022472CE: - ldr r0, [r5, #0xc] - bl Save_VarsFlags_Get - bl Save_VarsFlags_GetFollowerTrainerNum - ldr r1, [sp, #0x1c] - mov r2, #0xb - str r0, [r1, #0x20] - ldr r0, [sp, #0x1c] - ldr r1, [r5, #0xc] - bl EnemyTrainerSet_Init - add r0, sp, #0x20 - str r0, [sp] - ldr r1, [sp, #0x10] - ldr r2, [sp, #0x1c] - add r0, r5, #0 - add r3, sp, #0x3c - bl ov02_0224749C - b _0224734C -_022472F8: - cmp r0, #1 - bne _02247342 - mov r0, #0 - add r1, r4, #0 - add r2, sp, #0x3c -_02247302: - add r3, r1, #0 - add r3, #0x66 - ldrh r3, [r3] - add r0, r0, #1 - str r3, [r2] - add r3, r1, #0 - add r3, #0x65 - ldrb r3, [r3] - strh r3, [r2, #4] - add r3, r1, #0 - add r3, #0x64 - ldrb r3, [r3] - add r1, r1, #4 - strh r3, [r2, #6] - add r2, #8 - cmp r0, #5 - blt _02247302 - add r0, r5, #0 - add r1, r4, #0 - add r2, sp, #0x3c - bl ov02_02246B9C - add r0, sp, #0x20 - str r0, [sp] - str r6, [sp, #4] - ldr r1, [sp, #0x10] - ldr r2, [sp, #0x1c] - add r0, r5, #0 - add r3, sp, #0x3c - bl ov02_022474E0 - b _0224734C -_02247342: - bl GF_AssertFail - add sp, #0x9c - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_0224734C: - cmp r0, #0 - beq _0224735C - ldr r1, [sp, #8] - ldr r2, [sp, #0x1c] - add r0, r5, #0 - bl FieldSystem_StartForcedWildBattle - b _02247360 -_0224735C: - bl GF_AssertFail -_02247360: - add r0, r5, #0 - mov r1, #0 - add r0, #0x7e - strh r1, [r0] - add r5, #0x7c - strh r1, [r5] - mov r0, #1 - add sp, #0x9c - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_02247170 - - thumb_func_start FieldSystem_ChooseHeadbuttEncounter -FieldSystem_ChooseHeadbuttEncounter: ; 0x02247374 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0xa8 - add r5, r0, #0 - ldr r0, [r5, #0xc] - str r1, [sp, #0xc] - add r4, r2, #0 - bl SaveArray_Party_Get - mov r1, #0 - bl Party_GetMonByIndex - str r0, [sp, #0x10] - ldr r1, [sp, #0x10] - add r0, r5, #0 - mov r2, #0 - add r3, sp, #0x2c - bl ov02_02248618 - ldr r2, [sp, #0xc] - add r0, r5, #0 - mov r1, #0 - bl ov02_02248244 - ldr r0, [sp, #0xc] - add r1, r5, #0 - ldr r0, [r0] - bl BattleSetup_InitFromFieldSystem - mov r5, #0 - add r0, sp, #0x14 -_022473B0: - lsl r3, r5, #2 - ldrh r6, [r4, r3] - add r1, r0, r3 - add r2, r4, r3 - strh r6, [r1, #2] - ldrb r6, [r2, #3] - strb r6, [r1, #1] - ldrb r1, [r2, #2] - strb r1, [r0, r3] - add r1, r5, #1 - lsl r1, r1, #0x18 - lsr r5, r1, #0x18 - cmp r5, #6 - blo _022473B0 - mov r6, #0 - add r4, sp, #0x14 - add r7, sp, #0x48 -_022473D2: - lsl r3, r6, #2 - add r5, r4, r3 - ldrh r0, [r5, #2] - lsl r1, r6, #3 - add r2, r7, r1 - str r0, [r7, r1] - ldrb r0, [r5, #1] - strh r0, [r2, #4] - ldrb r0, [r4, r3] - strh r0, [r2, #6] - add r0, r6, #1 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - cmp r6, #6 - blo _022473D2 - mov r0, #4 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [sp, #0xc] - mov r1, #0xff - ldr r0, [r0] - add r2, sp, #0x2c - str r0, [sp, #8] - ldr r0, [sp, #0x10] - add r3, r7, #0 - bl ov02_02247B64 - cmp r0, #0 - bne _0224741C - ldr r0, [sp, #0xc] - ldr r0, [r0] - bl BattleSetup_Delete - add sp, #0xa8 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224741C: - mov r0, #1 - add sp, #0xa8 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end FieldSystem_ChooseHeadbuttEncounter - - thumb_func_start ov02_02247424 -ov02_02247424: ; 0x02247424 - push {lr} - sub sp, #0xc - mov r0, #0 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - str r2, [sp, #8] - add r0, r1, #0 - ldr r2, [sp, #0x14] - ldr r3, [sp, #0x10] - mov r1, #0xff - bl ov02_02247B64 - add sp, #0xc - pop {pc} - .balign 4, 0 - thumb_func_end ov02_02247424 - - thumb_func_start ov02_02247444 -ov02_02247444: ; 0x02247444 - push {lr} - sub sp, #0xc - mov r3, #0 - str r3, [sp] - mov r3, #1 - str r3, [sp, #4] - str r2, [sp, #8] - ldr r3, [sp, #0x14] - mov r2, #0xff - bl ov02_02247DA0 - add sp, #0xc - pop {pc} - .balign 4, 0 - thumb_func_end ov02_02247444 - - thumb_func_start ov02_02247460 -ov02_02247460: ; 0x02247460 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - ldr r7, _02247498 ; =FS_OVERLAY_ID(bug_contest) - add r5, r0, #0 - add r6, r1, #0 - add r0, r7, #0 - mov r1, #2 - add r4, r2, #0 - bl HandleLoadOverlay - mov r0, #0 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r3, [sp, #0x24] - add r0, r5, #0 - add r1, r6, #0 - mov r2, #0xff - str r4, [sp, #8] - bl ov02_02247ED8 - add r4, r0, #0 - add r0, r7, #0 - bl UnloadOverlayByID - add r0, r4, #0 - add sp, #0xc - pop {r4, r5, r6, r7, pc} - .balign 4, 0 -_02247498: .word FS_OVERLAY_ID(bug_contest) - thumb_func_end ov02_02247460 - - thumb_func_start ov02_0224749C -ov02_0224749C: ; 0x0224749C - push {r3, r4, r5, r6, lr} - sub sp, #0xc - mov r0, #0 - add r5, r1, #0 - add r4, r2, #0 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r2, [sp, #0x20] - add r0, r5, #0 - mov r1, #0xff - add r6, r3, #0 - str r4, [sp, #8] - bl ov02_02247B64 - cmp r0, #0 - bne _022474C4 - add sp, #0xc - mov r0, #0 - pop {r3, r4, r5, r6, pc} -_022474C4: - mov r0, #0 - str r0, [sp] - mov r0, #3 - str r0, [sp, #4] - ldr r2, [sp, #0x20] - add r0, r5, #0 - mov r1, #0xff - add r3, r6, #0 - str r4, [sp, #8] - bl ov02_02247B64 - add sp, #0xc - pop {r3, r4, r5, r6, pc} - .balign 4, 0 - thumb_func_end ov02_0224749C - - thumb_func_start ov02_022474E0 -ov02_022474E0: ; 0x022474E0 - push {r3, r4, lr} - sub sp, #0xc - ldr r4, [sp, #0x1c] - cmp r4, #0 - beq _022474FE - mov r3, #1 - str r3, [sp] - str r3, [sp, #4] - str r2, [sp, #8] - ldr r3, [sp, #0x18] - mov r2, #0xff - bl ov02_02247DA0 - add sp, #0xc - pop {r3, r4, pc} -_022474FE: - mov r0, #1 - str r0, [sp] - str r0, [sp, #4] - str r2, [sp, #8] - add r0, r1, #0 - ldr r2, [sp, #0x18] - mov r1, #0xff - bl ov02_02247B64 - add sp, #0xc - pop {r3, r4, pc} - thumb_func_end ov02_022474E0 - - thumb_func_start ov02_02247514 -ov02_02247514: ; 0x02247514 - push {r3, r4, lr} - sub sp, #0xc - ldr r4, [sp, #0x20] - cmp r4, #0 - beq _02247534 - mov r3, #2 - str r3, [sp] - mov r3, #1 - str r3, [sp, #4] - str r2, [sp, #8] - ldr r2, [sp, #0x1c] - ldr r3, [sp, #0x18] - bl ov02_02247DA0 - add sp, #0xc - pop {r3, r4, pc} -_02247534: - mov r0, #2 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - str r2, [sp, #8] - add r0, r1, #0 - ldr r1, [sp, #0x1c] - ldr r2, [sp, #0x18] - bl ov02_02247B64 - add sp, #0xc - pop {r3, r4, pc} - thumb_func_end ov02_02247514 - - thumb_func_start ov02_0224754C -ov02_0224754C: ; 0x0224754C - push {lr} - sub sp, #0xc - mov r0, #3 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - str r2, [sp, #8] - add r0, r1, #0 - ldr r2, [sp, #0x10] - mov r1, #0xff - bl ov02_02247B64 - add sp, #0xc - pop {pc} - thumb_func_end ov02_0224754C - - thumb_func_start ov02_02247568 -ov02_02247568: ; 0x02247568 - push {r3, r4, r5, r6, r7, lr} - add r6, r1, #0 - add r5, r0, #0 - str r2, [sp] - cmp r6, #0x64 - bls _02247576 - mov r6, #0x64 -_02247576: - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetState - add r7, r0, #0 - mov r4, #0x28 - cmp r7, #1 - beq _02247598 - cmp r7, #2 - beq _02247598 - ldr r0, [r5, #0x40] - bl sub_0205DE98 - cmp r0, #0 - bne _02247598 - sub r4, #0x14 - lsl r0, r4, #0x18 - lsr r4, r0, #0x18 -_02247598: - ldr r0, [sp] - bl sub_0205B6F4 - cmp r0, #0 - beq _022475AA - add r4, #0x28 - lsl r0, r4, #0x18 - lsr r4, r0, #0x18 - b _022475B4 -_022475AA: - cmp r7, #1 - bne _022475B4 - add r4, #0x1e - lsl r0, r4, #0x18 - lsr r4, r0, #0x18 -_022475B4: - add r0, r5, #0 - add r0, #0x7c - ldrh r0, [r0] - bl ov02_02247610 - add r0, r4, r0 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - bl GetRadioMusicPlayingSeq - cmp r0, #1 - bne _022475D4 - add r4, #0x19 - lsl r0, r4, #0x18 - lsr r4, r0, #0x18 - b _022475E2 -_022475D4: - bl GetRadioMusicPlayingSeq - cmp r0, #2 - bne _022475E2 - sub r4, #0x19 - lsl r0, r4, #0x18 - lsr r4, r0, #0x18 -_022475E2: - cmp r4, #0x64 - bls _022475E8 - mov r4, #0x64 -_022475E8: - bl LCRandom - mov r1, #0x64 - bl _s32_div_f - lsl r0, r1, #0x10 - lsr r0, r0, #0x10 - cmp r0, r4 - bge _0224760A - add r0, r5, #0 - add r1, r6, #0 - bl ov02_0224766C - cmp r0, #0 - beq _0224760A - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_0224760A: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_02247568 - - thumb_func_start ov02_02247610 -ov02_02247610: ; 0x02247610 - mov r1, #0 - cmp r0, #4 - blo _0224761A - mov r1, #0x3c - b _02247628 -_0224761A: - cmp r0, #3 - blo _02247622 - mov r1, #0x28 - b _02247628 -_02247622: - cmp r0, #2 - blo _02247628 - mov r1, #0x1e -_02247628: - add r0, r1, #0 - bx lr - thumb_func_end ov02_02247610 - - thumb_func_start ov02_0224762C -ov02_0224762C: ; 0x0224762C - push {r4, r5, r6, lr} - add r6, r1, #0 - add r5, r0, #0 - add r0, r6, #0 - add r4, r2, #0 - bl sub_0205B994 - cmp r0, #0 - beq _02247668 - add r0, r6, #0 - bl MetatileBehavior_IsSurfableWater - cmp r0, #0 - beq _02247658 - mov r0, #1 - strb r0, [r4] - add r0, r5, #0 - bl ov02_02248020 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r4, r5, r6, pc} -_02247658: - mov r0, #0 - strb r0, [r4] - add r0, r5, #0 - bl ov02_02248014 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r4, r5, r6, pc} -_02247668: - mov r0, #0 - pop {r4, r5, r6, pc} - thumb_func_end ov02_0224762C - - thumb_func_start ov02_0224766C -ov02_0224766C: ; 0x0224766C - push {r4, lr} - add r4, r1, #0 - bl LCRandom - mov r1, #0x64 - bl _s32_div_f - lsl r0, r1, #0x10 - lsr r0, r0, #0x10 - cmp r0, r4 - bhs _02247686 - mov r0, #1 - pop {r4, pc} -_02247686: - mov r0, #0 - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_0224766C - - thumb_func_start ov02_0224768C -ov02_0224768C: ; 0x0224768C - push {r3, lr} - bl LCRandom - mov r1, #0x64 - bl _s32_div_f - lsl r0, r1, #0x10 - lsr r0, r0, #0x10 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x14 - bhs _022476A8 - mov r0, #0 - pop {r3, pc} -_022476A8: - blo _022476B2 - cmp r0, #0x28 - bhs _022476B2 - mov r0, #1 - pop {r3, pc} -_022476B2: - cmp r0, #0x28 - blo _022476BE - cmp r0, #0x32 - bhs _022476BE - mov r0, #2 - pop {r3, pc} -_022476BE: - cmp r0, #0x32 - blo _022476CA - cmp r0, #0x3c - bhs _022476CA - mov r0, #3 - pop {r3, pc} -_022476CA: - cmp r0, #0x3c - blo _022476D6 - cmp r0, #0x46 - bhs _022476D6 - mov r0, #4 - pop {r3, pc} -_022476D6: - cmp r0, #0x46 - blo _022476E2 - cmp r0, #0x50 - bhs _022476E2 - mov r0, #5 - pop {r3, pc} -_022476E2: - cmp r0, #0x50 - blo _022476EE - cmp r0, #0x55 - bhs _022476EE - mov r0, #6 - pop {r3, pc} -_022476EE: - cmp r0, #0x55 - blo _022476FA - cmp r0, #0x5a - bhs _022476FA - mov r0, #7 - pop {r3, pc} -_022476FA: - cmp r0, #0x5a - blo _02247706 - cmp r0, #0x5e - bhs _02247706 - mov r0, #8 - pop {r3, pc} -_02247706: - cmp r0, #0x5e - blo _02247712 - cmp r0, #0x62 - bhs _02247712 - mov r0, #9 - pop {r3, pc} -_02247712: - cmp r0, #0x62 - bne _0224771A - mov r0, #0xa - pop {r3, pc} -_0224771A: - mov r0, #0xb - pop {r3, pc} - .balign 4, 0 - thumb_func_end ov02_0224768C - - thumb_func_start EncounterSlot_WildMonSlotRoll_Surfing -EncounterSlot_WildMonSlotRoll_Surfing: ; 0x02247720 - push {r3, lr} - bl LCRandom - mov r1, #0x64 - bl _s32_div_f - lsl r0, r1, #0x10 - lsr r0, r0, #0x10 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x3c - bhs _0224773C - mov r0, #0 - pop {r3, pc} -_0224773C: - blo _02247746 - cmp r0, #0x5a - bhs _02247746 - mov r0, #1 - pop {r3, pc} -_02247746: - cmp r0, #0x5a - blo _02247752 - cmp r0, #0x5f - bhs _02247752 - mov r0, #2 - pop {r3, pc} -_02247752: - cmp r0, #0x5f - blo _0224775E - cmp r0, #0x63 - bhs _0224775E - mov r0, #3 - pop {r3, pc} -_0224775E: - mov r0, #4 - pop {r3, pc} - .balign 4, 0 - thumb_func_end EncounterSlot_WildMonSlotRoll_Surfing - - thumb_func_start EncounterSlot_WildMonSlotRoll_Fishing -EncounterSlot_WildMonSlotRoll_Fishing: ; 0x02247764 - push {r3, lr} - bl LCRandom - mov r1, #0x64 - bl _s32_div_f - lsl r0, r1, #0x10 - lsr r0, r0, #0x10 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x28 - bhs _02247780 - mov r0, #0 - pop {r3, pc} -_02247780: - cmp r0, #0x46 - bhs _02247788 - mov r0, #1 - pop {r3, pc} -_02247788: - cmp r0, #0x55 - bhs _02247790 - mov r0, #2 - pop {r3, pc} -_02247790: - cmp r0, #0x5f - bhs _02247798 - mov r0, #3 - pop {r3, pc} -_02247798: - mov r0, #4 - pop {r3, pc} - thumb_func_end EncounterSlot_WildMonSlotRoll_Fishing - - thumb_func_start EncounterSlot_WildMonSlotRoll_RockSmash -EncounterSlot_WildMonSlotRoll_RockSmash: ; 0x0224779C - push {r3, lr} - bl LCRandom - mov r1, #0x64 - bl _s32_div_f - lsl r0, r1, #0x10 - lsr r0, r0, #0x10 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x50 - blo _022477B8 - mov r0, #1 - b _022477BA -_022477B8: - mov r0, #0 -_022477BA: - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3, pc} - thumb_func_end EncounterSlot_WildMonSlotRoll_RockSmash - - ; 50-15-15-10-5-5 - thumb_func_start EncounterSlot_WildMonSlotRoll_Headbutt -EncounterSlot_WildMonSlotRoll_Headbutt: ; 0x022477C0 - push {r3, lr} - bl LCRandom - mov r1, #0x64 - bl _s32_div_f - lsl r0, r1, #0x10 - lsr r0, r0, #0x10 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x32 - bhs _022477DC - mov r0, #0 - pop {r3, pc} -_022477DC: - cmp r0, #0x41 - bhs _022477E4 - mov r0, #1 - pop {r3, pc} -_022477E4: - cmp r0, #0x50 - bhs _022477EC - mov r0, #2 - pop {r3, pc} -_022477EC: - cmp r0, #0x5a - bhs _022477F4 - mov r0, #3 - pop {r3, pc} -_022477F4: - cmp r0, #0x5f - bhs _022477FC - mov r0, #4 - pop {r3, pc} -_022477FC: - mov r0, #5 - pop {r3, pc} - thumb_func_end EncounterSlot_WildMonSlotRoll_Headbutt - - thumb_func_start ApplyLeadMonHeldItemEffectToEncounterRate -ApplyLeadMonHeldItemEffectToEncounterRate: ; 0x02247800 - push {r4, lr} - add r4, r1, #0 - mov r1, #6 - mov r2, #0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - cmp r1, #ITEM_CLEANSE_TAG - beq _0224781C - mov r0, #ITEM_PURE_INCENSE>>6 - lsl r0, r0, #6 - cmp r1, r0 - bne _02247828 -_0224781C: - ldrb r0, [r4] - mov r1, #3 - lsl r0, r0, #1 - bl _s32_div_f - strb r0, [r4] -_02247828: - pop {r4, pc} - .balign 4, 0 - thumb_func_end ApplyLeadMonHeldItemEffectToEncounterRate - - thumb_func_start ApplyFluteEffectToEncounterRate -ApplyFluteEffectToEncounterRate: ; 0x0224782C - push {r4, lr} - ldr r0, [r0, #0xc] - add r4, r1, #0 - bl Save_Roamers_Get - bl RoamerSave_GetFlute - cmp r0, #1 - bne _02247846 - ldrb r0, [r4] - asr r0, r0, #1 - strb r0, [r4] - pop {r4, pc} -_02247846: - cmp r0, #2 - bne _02247852 - ldrb r1, [r4] - lsr r0, r1, #1 - add r0, r1, r0 - strb r0, [r4] -_02247852: - pop {r4, pc} - thumb_func_end ApplyFluteEffectToEncounterRate - - thumb_func_start ov02_02247854 -ov02_02247854: ; 0x02247854 - push {r4, lr} - add r4, r0, #0 - ldrb r0, [r1, #0xd] - cmp r0, #0 - bne _02247890 - ldrb r0, [r1, #0xe] - cmp r0, #0x1c - bne _02247890 - bl LCRandom - lsr r2, r0, #0x1f - lsl r1, r0, #0x1f - sub r1, r1, r2 - mov r0, #0x1f - ror r1, r0 - add r0, r2, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bne _02247890 - mov r1, #0 - add r0, r4, #0 - add r2, r1, #0 - bl GetMonData - mov r1, #0x19 - bl _u32_div_f - lsl r0, r1, #0x18 - lsr r0, r0, #0x18 - pop {r4, pc} -_02247890: - bl LCRandom - mov r1, #0x19 - bl _s32_div_f - lsl r0, r1, #0x10 - lsr r0, r0, #0x10 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r4, pc} - thumb_func_end ov02_02247854 - - thumb_func_start EncounterSlot_WildMonLevelRoll -EncounterSlot_WildMonLevelRoll: ; 0x022478A4 - push {r3, r4, r5, r6, r7, lr} - add r7, r1, #0 - ldrh r2, [r0, #6] - ldrh r1, [r0, #4] - cmp r1, r2 - blo _022478B8 - lsl r0, r2, #0x18 - lsr r4, r0, #0x18 - lsl r0, r1, #0x18 - b _022478BE -_022478B8: - lsl r0, r1, #0x18 - lsr r4, r0, #0x18 - lsl r0, r2, #0x18 -_022478BE: - lsr r5, r0, #0x18 - bl LCRandom - sub r1, r5, r4 - add r1, r1, #1 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - bl _s32_div_f - lsl r0, r1, #0x18 - lsr r6, r0, #0x18 - ldrb r0, [r7, #0xd] - cmp r0, #0 - bne _02247908 - ldrb r0, [r7, #0xe] - cmp r0, #0x37 - beq _022478E8 - cmp r0, #0x48 - beq _022478E8 - cmp r0, #0x2e - bne _02247908 -_022478E8: - bl LCRandom - lsr r2, r0, #0x1f - lsl r1, r0, #0x1f - sub r1, r1, r2 - mov r0, #0x1f - ror r1, r0 - add r0, r2, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bne _02247904 - add r0, r4, r6 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 -_02247904: - add r0, r5, #0 - pop {r3, r4, r5, r6, r7, pc} -_02247908: - add r0, r4, r6 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end EncounterSlot_WildMonLevelRoll - - thumb_func_start ov02_02247910 -ov02_02247910: ; 0x02247910 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x28 - str r0, [sp, #0x10] - ldr r6, [sp, #0x40] - str r1, [sp, #0x14] - mov r0, #0xb - str r2, [sp, #0x18] - add r5, r3, #0 - bl AllocMonZeroed - str r0, [sp, #0x1c] - bl ZeroMonData - ldrb r0, [r6, #0xd] - mov r7, #0 - cmp r0, #0 - bne _02247994 - ldrb r0, [r6, #0xe] - cmp r0, #0x38 - bne _02247970 - ldr r0, [sp, #0x10] - mov r1, #0x12 - bl GetMonBaseStat - cmp r0, #0 - beq _02247994 - cmp r0, #0xfe - beq _02247994 - cmp r0, #0xff - beq _02247994 - bl LCRandom - mov r1, #3 - bl _s32_div_f - lsl r0, r1, #0x10 - lsr r0, r0, #0x10 - beq _02247994 - ldr r0, [sp, #0x44] - mov r1, #0x6f - add r2, r7, #0 - bl GetMonData - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x24] - mov r7, #1 - b _02247994 -_02247970: - cmp r0, #0x1c - bne _02247994 - bl LCRandom - lsr r2, r0, #0x1f - lsl r1, r0, #0x1f - sub r1, r1, r2 - mov r0, #0x1f - ror r1, r0 - add r0, r2, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bne _02247994 - ldr r0, [sp, #0x44] - bl GetMonNature - str r0, [sp, #0x20] - mov r7, #1 -_02247994: - add r0, r5, #0 - bl GenerateShinyPersonality - add r4, r0, #0 - cmp r7, #0 - beq _022479E2 -_022479A0: - ldrb r0, [r6, #0xe] - cmp r0, #0x38 - bne _022479C8 - ldr r0, [sp, #0x10] - add r1, r4, #0 - bl GetGenderBySpeciesAndPersonality - add r7, r0, #0 - cmp r7, #2 - bne _022479B8 - bl GF_AssertFail -_022479B8: - ldr r0, [sp, #0x24] - cmp r7, r0 - bne _022479E2 - add r0, r5, #0 - bl GenerateShinyPersonality - add r4, r0, #0 - b _022479A0 -_022479C8: - cmp r0, #0x1c - bne _022479A0 - add r0, r4, #0 - bl GetNatureFromPersonality - ldr r1, [sp, #0x20] - cmp r0, r1 - beq _022479E2 - add r0, r5, #0 - bl GenerateShinyPersonality - add r4, r0, #0 - b _022479A0 -_022479E2: - mov r0, #1 - str r0, [sp] - str r4, [sp, #4] - str r0, [sp, #8] - ldr r0, [r6] - mov r3, #0x20 - str r0, [sp, #0xc] - ldr r0, [sp, #0x1c] - ldr r1, [sp, #0x10] - ldr r2, [sp, #0x14] - bl CreateMon - ldr r0, [sp, #0x18] - ldr r2, [sp, #0x1c] - ldr r3, [sp, #0x48] - add r1, r6, #0 - bl ov02_0224855C - cmp r0, #0 - bne _02247A0E - bl GF_AssertFail -_02247A0E: - ldr r0, [sp, #0x1c] - bl Heap_Free - add sp, #0x28 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov02_02247910 - - thumb_func_start ov02_02247A18 -ov02_02247A18: ; 0x02247A18 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x20 - str r0, [sp, #0xc] - ldr r0, [sp, #0x3c] - str r1, [sp, #0x10] - str r0, [sp, #0x3c] - mov r0, #0xb - str r2, [sp, #0x14] - add r6, r3, #0 - ldr r7, [sp, #0x38] - bl AllocMonZeroed - add r4, r0, #0 - bl ZeroMonData - ldr r0, [sp, #0xc] - mov r1, #0x12 - mov r5, #1 - bl GetMonBaseStat - cmp r0, #0 - beq _02247A4C - cmp r0, #0xfe - beq _02247A4C - cmp r0, #0xff - bne _02247A4E -_02247A4C: - mov r5, #0 -_02247A4E: - cmp r5, #0 - beq _02247AD4 - ldrb r0, [r7, #0xd] - cmp r0, #0 - bne _02247AD4 - ldrb r0, [r7, #0xe] - cmp r0, #0x38 - bne _02247AD4 - bl LCRandom - mov r1, #3 - bl _s32_div_f - lsl r0, r1, #0x10 - lsr r0, r0, #0x10 - beq _02247AD4 - ldr r0, [sp, #0x3c] - mov r1, #0x6f - mov r2, #0 - bl GetMonData - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, #1 - bne _02247A84 - mov r5, #0 - b _02247A90 -_02247A84: - cmp r5, #0 - bne _02247A8C - mov r5, #1 - b _02247A90 -_02247A8C: - bl GF_AssertFail -_02247A90: - ldr r0, [sp, #0x3c] - add r1, r7, #0 - bl ov02_02247854 - str r5, [sp] - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - ldr r1, [sp, #0xc] - ldr r2, [sp, #0x10] - add r0, r4, #0 - mov r3, #0x20 - bl CreateMonWithGenderNatureLetter - add r0, r4, #0 - mov r1, #7 - add r2, r7, #0 - bl SetMonData - ldr r0, [sp, #0x14] - ldr r3, [sp, #0x40] - add r1, r7, #0 - add r2, r4, #0 - bl ov02_0224855C - cmp r0, #0 - bne _02247ACA - bl GF_AssertFail -_02247ACA: - add r0, r4, #0 - bl Heap_Free - add sp, #0x20 - pop {r3, r4, r5, r6, r7, pc} -_02247AD4: - cmp r6, #0 - beq _02247B26 - mov r0, #0 - str r0, [sp, #0x18] - str r0, [sp, #0x1c] - add r6, r0, #0 -_02247AE0: - ldr r0, [sp, #0x3c] - add r1, r7, #0 - bl ov02_02247854 - str r0, [sp] - ldr r1, [sp, #0xc] - ldr r2, [sp, #0x10] - add r0, r4, #0 - mov r3, #0x20 - bl CreateMonWithNature - mov r5, #0 -_02247AF8: - add r1, r5, #0 - add r0, r4, #0 - add r1, #0x46 - add r2, r6, #0 - bl GetMonData - cmp r0, #0x1f - bne _02247B0E - mov r0, #1 - str r0, [sp, #0x18] - b _02247B14 -_02247B0E: - add r5, r5, #1 - cmp r5, #6 - blt _02247AF8 -_02247B14: - ldr r0, [sp, #0x18] - cmp r0, #0 - bne _02247B3C - ldr r0, [sp, #0x1c] - add r0, r0, #1 - str r0, [sp, #0x1c] - cmp r0, #4 - blt _02247AE0 - b _02247B3C -_02247B26: - ldr r0, [sp, #0x3c] - add r1, r7, #0 - bl ov02_02247854 - str r0, [sp] - ldr r1, [sp, #0xc] - ldr r2, [sp, #0x10] - add r0, r4, #0 - mov r3, #0x20 - bl CreateMonWithNature -_02247B3C: - add r0, r4, #0 - mov r1, #7 - add r2, r7, #0 - bl SetMonData - ldr r0, [sp, #0x14] - ldr r3, [sp, #0x40] - add r1, r7, #0 - add r2, r4, #0 - bl ov02_0224855C - cmp r0, #0 - bne _02247B5A - bl GF_AssertFail -_02247B5A: - add r0, r4, #0 - bl Heap_Free - add sp, #0x20 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov02_02247A18 - - thumb_func_start ov02_02247B64 -ov02_02247B64: ; 0x02247B64 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - str r1, [sp, #0xc] - mov r7, #0 - add r1, sp, #0x10 - strb r7, [r1] - add r1, sp, #0x18 - ldrb r1, [r1, #0x10] - add r6, r0, #0 - add r5, r2, #0 - add r4, r3, #0 - cmp r1, #4 - bls _02247B80 - b _02247D36 -_02247B80: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_02247B8C: ; jump table - .short _02247B96 - _02247B8C - 2 ; case 0 - .short _02247C44 - _02247B8C - 2 ; case 1 - .short _02247C94 - _02247B8C - 2 ; case 2 - .short _02247BF4 - _02247B8C - 2 ; case 3 - .short _02247CE6 - _02247B8C - 2 ; case 4 -_02247B96: - mov r1, #8 - str r1, [sp] - mov r1, #0x2a - str r1, [sp, #4] - add r1, sp, #0x10 - str r1, [sp, #8] - add r1, r5, #0 - add r2, r4, #0 - mov r3, #0xc - bl EncounterSlot_AbilityInfluenceOnSlotChoiceCheck - cmp r0, #0 - bne _02247BD4 - mov r0, #0xd - str r0, [sp] - mov r0, #9 - str r0, [sp, #4] - add r0, sp, #0x10 - str r0, [sp, #8] - add r0, r6, #0 - add r1, r5, #0 - add r2, r4, #0 - mov r3, #0xc - bl EncounterSlot_AbilityInfluenceOnSlotChoiceCheck - cmp r0, #0 - bne _02247BD4 - bl ov02_0224768C - add r1, sp, #0x10 - strb r0, [r1] -_02247BD4: - add r3, sp, #0x10 - ldrb r3, [r3] - add r0, r4, #0 - mov r1, #0xc - add r2, r5, #0 - bl ov02_022485B0 - add r1, sp, #0x10 - strb r0, [r1] - ldrb r0, [r1] - lsl r0, r0, #3 - add r0, r4, r0 - ldrh r0, [r0, #4] - lsl r0, r0, #0x18 - lsr r7, r0, #0x18 - b _02247D3A -_02247BF4: - mov r1, #8 - str r1, [sp] - mov r1, #0x2a - str r1, [sp, #4] - add r1, sp, #0x10 - str r1, [sp, #8] - add r1, r5, #0 - add r2, r4, #0 - mov r3, #2 - bl EncounterSlot_AbilityInfluenceOnSlotChoiceCheck - cmp r0, #0 - bne _02247C32 - mov r0, #0xd - str r0, [sp] - mov r0, #9 - str r0, [sp, #4] - add r0, sp, #0x10 - str r0, [sp, #8] - add r0, r6, #0 - add r1, r5, #0 - add r2, r4, #0 - mov r3, #2 - bl EncounterSlot_AbilityInfluenceOnSlotChoiceCheck - cmp r0, #0 - bne _02247C32 - bl EncounterSlot_WildMonSlotRoll_RockSmash - add r1, sp, #0x10 - strb r0, [r1] -_02247C32: - add r0, sp, #0x10 - ldrb r0, [r0] - add r1, r5, #0 - lsl r0, r0, #3 - add r0, r4, r0 - bl EncounterSlot_WildMonLevelRoll - add r7, r0, #0 - b _02247D3A -_02247C44: - mov r1, #8 - str r1, [sp] - mov r1, #0x2a - str r1, [sp, #4] - add r1, sp, #0x10 - str r1, [sp, #8] - add r1, r5, #0 - add r2, r4, #0 - mov r3, #5 - bl EncounterSlot_AbilityInfluenceOnSlotChoiceCheck - cmp r0, #0 - bne _02247C82 - mov r0, #0xd - str r0, [sp] - mov r0, #9 - str r0, [sp, #4] - add r0, sp, #0x10 - str r0, [sp, #8] - add r0, r6, #0 - add r1, r5, #0 - add r2, r4, #0 - mov r3, #5 - bl EncounterSlot_AbilityInfluenceOnSlotChoiceCheck - cmp r0, #0 - bne _02247C82 - bl EncounterSlot_WildMonSlotRoll_Surfing - add r1, sp, #0x10 - strb r0, [r1] -_02247C82: - add r0, sp, #0x10 - ldrb r0, [r0] - add r1, r5, #0 - lsl r0, r0, #3 - add r0, r4, r0 - bl EncounterSlot_WildMonLevelRoll - add r7, r0, #0 - b _02247D3A -_02247C94: - mov r1, #8 - str r1, [sp] - mov r1, #0x2a - str r1, [sp, #4] - add r1, sp, #0x10 - str r1, [sp, #8] - add r1, r5, #0 - add r2, r4, #0 - mov r3, #5 - bl EncounterSlot_AbilityInfluenceOnSlotChoiceCheck - cmp r0, #0 - bne _02247CD4 - mov r0, #0xd - str r0, [sp] - mov r0, #9 - str r0, [sp, #4] - add r0, sp, #0x10 - str r0, [sp, #8] - add r0, r6, #0 - add r1, r5, #0 - add r2, r4, #0 - mov r3, #5 - bl EncounterSlot_AbilityInfluenceOnSlotChoiceCheck - cmp r0, #0 - bne _02247CD4 - ldr r0, [sp, #0xc] - bl EncounterSlot_WildMonSlotRoll_Fishing - add r1, sp, #0x10 - strb r0, [r1] -_02247CD4: - add r0, sp, #0x10 - ldrb r0, [r0] - add r1, r5, #0 - lsl r0, r0, #3 - add r0, r4, r0 - bl EncounterSlot_WildMonLevelRoll - add r7, r0, #0 - b _02247D3A -_02247CE6: - mov r1, #8 - str r1, [sp] - mov r1, #0x2a - str r1, [sp, #4] - add r1, sp, #0x10 - str r1, [sp, #8] - add r1, r5, #0 - add r2, r4, #0 - mov r3, #6 - bl EncounterSlot_AbilityInfluenceOnSlotChoiceCheck ; (leadMon, a2, encounterSlots, 6, TYPE_STEEL, ABILITY_MAGNET_PULL, &slot) - cmp r0, #0 - bne _02247D24 - mov r0, #0xd - str r0, [sp] - mov r0, #9 - str r0, [sp, #4] - add r0, sp, #0x10 - str r0, [sp, #8] - add r0, r6, #0 - add r1, r5, #0 - add r2, r4, #0 - mov r3, #6 - bl EncounterSlot_AbilityInfluenceOnSlotChoiceCheck ; (leadMon, a2, encounterSlots, 6, TYPE_ELECTRIC, ABILITY_STATIC, &slot) - cmp r0, #0 - bne _02247D24 - bl EncounterSlot_WildMonSlotRoll_Headbutt - add r1, sp, #0x10 - strb r0, [r1] -_02247D24: - add r0, sp, #0x10 - ldrb r0, [r0] - add r1, r5, #0 - lsl r0, r0, #3 - add r0, r4, r0 - bl EncounterSlot_WildMonLevelRoll - add r7, r0, #0 - b _02247D3A -_02247D36: - bl GF_AssertFail -_02247D3A: - add r0, sp, #0x10 - ldrb r0, [r0] - lsl r0, r0, #3 - ldr r0, [r4, r0] - cmp r0, #0xc9 - bne _02247D56 - add r0, r5, #0 - bl ov02_022482A4 - cmp r0, #0 - bne _02247D56 - add sp, #0x14 - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_02247D56: - add r0, r5, #0 - add r1, r6, #0 - add r2, r7, #0 - bl ov02_022481EC - cmp r0, #0 - beq _02247D6A - add sp, #0x14 - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_02247D6A: - add r0, r7, #0 - add r1, r5, #0 - bl ov02_02248290 - cmp r0, #1 - bne _02247D7C - add sp, #0x14 - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_02247D7C: - str r5, [sp] - ldr r0, [sp, #0x30] - str r6, [sp, #4] - str r0, [sp, #8] - add r0, sp, #0x10 - ldrb r0, [r0] - ldr r2, [sp, #0x2c] - add r1, r7, #0 - lsl r0, r0, #3 - ldr r0, [r4, r0] - mov r3, #0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl ov02_02247A18 - mov r0, #1 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - thumb_func_end ov02_02247B64 - - thumb_func_start ov02_02247DA0 -ov02_02247DA0: ; 0x02247DA0 - push {r4, r5, r6, r7, lr} - sub sp, #0x1c - add r7, r0, #0 - ldr r0, [r7, #0xc] - add r6, r1, #0 - str r2, [sp, #0xc] - add r5, r3, #0 - bl Save_SafariZone_Get - mov r1, #3 - bl SafariZone_GetAreaSet - str r0, [sp, #0x14] - add r0, r7, #0 - bl ov02_0224E340 - add r7, r0, #0 - bl GF_RTC_GetTimeOfDayWildParam - add r3, r0, #0 - add r0, sp, #0x20 - ldrb r0, [r0, #0x10] - cmp r0, #0 - beq _02247DDA - cmp r0, #1 - beq _02247DEC - cmp r0, #2 - beq _02247DFE - b _02247E12 -_02247DDA: - mov r0, #4 - str r0, [sp] - ldr r0, [sp, #0x14] - add r1, r7, #0 - mov r2, #0 - bl sub_020974C4 - add r4, r0, #0 - b _02247E16 -_02247DEC: - mov r0, #4 - str r0, [sp] - ldr r0, [sp, #0x14] - add r1, r7, #0 - mov r2, #1 - bl sub_020974C4 - add r4, r0, #0 - b _02247E16 -_02247DFE: - mov r0, #4 - ldr r2, [sp, #0xc] - str r0, [sp] - ldr r0, [sp, #0x14] - add r1, r7, #0 - add r2, r2, #2 - bl sub_020974C4 - add r4, r0, #0 - b _02247E16 -_02247E12: - bl GF_AssertFail -_02247E16: - mov r1, #0 - add r0, sp, #0x18 - strb r1, [r0] - mov r0, #8 - str r0, [sp] - mov r0, #0x2a - str r0, [sp, #4] - add r0, sp, #0x18 - str r0, [sp, #8] - add r0, r6, #0 - add r1, r5, #0 - add r2, r4, #0 - mov r3, #0xa - bl EncounterSlot_AbilityInfluenceOnSlotChoiceCheck - cmp r0, #0 - bne _02247E50 - mov r0, #0xd - str r0, [sp] - mov r0, #9 - str r0, [sp, #4] - add r0, sp, #0x18 - str r0, [sp, #8] - add r0, r6, #0 - add r1, r5, #0 - add r2, r4, #0 - mov r3, #0xa - bl EncounterSlot_AbilityInfluenceOnSlotChoiceCheck -_02247E50: - cmp r0, #0 - bne _02247E62 - bl LCRandom - mov r1, #0xa - bl _s32_div_f - add r0, sp, #0x18 - strb r1, [r0] -_02247E62: - add r0, sp, #0x20 - ldrb r0, [r0, #0x10] - cmp r0, #0 - bne _02247E7C - add r3, sp, #0x18 - ldrb r3, [r3] - add r0, r4, #0 - mov r1, #0xa - add r2, r5, #0 - bl ov02_022485B0 - add r1, sp, #0x18 - strb r0, [r1] -_02247E7C: - add r0, sp, #0x18 - ldrb r0, [r0] - lsl r1, r0, #3 - ldr r0, [r4, r1] - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x10] - add r0, r4, r1 - ldrh r0, [r0, #4] - add r1, r6, #0 - lsl r0, r0, #0x18 - lsr r7, r0, #0x18 - add r0, r5, #0 - add r2, r7, #0 - bl ov02_022481EC - cmp r0, #0 - bne _02247EAC - add r0, r7, #0 - add r1, r5, #0 - bl ov02_02248290 - cmp r0, #1 - bne _02247EB8 -_02247EAC: - add r0, r4, #0 - bl Heap_Free - add sp, #0x1c - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_02247EB8: - str r5, [sp] - ldr r0, [sp, #0x38] - str r6, [sp, #4] - str r0, [sp, #8] - ldr r0, [sp, #0x10] - ldr r2, [sp, #0x34] - add r1, r7, #0 - mov r3, #1 - bl ov02_02247A18 - add r0, r4, #0 - bl Heap_Free - mov r0, #1 - add sp, #0x1c - pop {r4, r5, r6, r7, pc} - thumb_func_end ov02_02247DA0 - - thumb_func_start ov02_02247ED8 -ov02_02247ED8: ; 0x02247ED8 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r6, r1, #0 - add r5, r3, #0 - bl FieldSystem_BugContest_Get - mov r1, #4 - bl BugContest_GetEncounterSlot - add r4, r0, #0 - ldrh r0, [r4, #4] - add r1, r5, #0 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl ov02_02248290 - cmp r0, #1 - bne _02247F08 - add r0, r4, #0 - bl Heap_Free - add sp, #0xc - mov r0, #0 - pop {r3, r4, r5, r6, pc} -_02247F08: - str r5, [sp] - ldr r0, [sp, #0x28] - str r6, [sp, #4] - str r0, [sp, #8] - ldrh r1, [r4, #4] - ldr r0, [r4] - ldr r2, [sp, #0x24] - lsl r0, r0, #0x10 - lsl r1, r1, #0x18 - lsr r0, r0, #0x10 - lsr r1, r1, #0x18 - mov r3, #1 - bl ov02_02247A18 - add r0, r4, #0 - bl Heap_Free - mov r0, #1 - add sp, #0xc - pop {r3, r4, r5, r6, pc} - thumb_func_end ov02_02247ED8 - - thumb_func_start ov02_02247F30 -ov02_02247F30: ; 0x02247F30 - push {r4, r5, r6, r7, lr} - sub sp, #0x2c - add r5, r0, #0 - ldr r0, [r5, #0xc] - add r6, r1, #0 - add r7, r2, #0 - str r3, [sp, #0xc] - bl SaveArray_Party_Get - mov r1, #0 - bl Party_GetMonByIndex - add r4, r0, #0 - add r0, r5, #0 - add r1, r4, #0 - mov r2, #0 - add r3, sp, #0x10 - bl ov02_02248618 - ldr r0, [sp, #0xc] - cmp r0, #0 - beq _02247F80 - ldr r0, [r5, #0xc] - bl Save_PlayerData_GetProfile - bl PlayerProfile_GetTrainerID - add r3, r0, #0 - add r0, sp, #0x10 - str r0, [sp] - ldr r0, [sp, #0x40] - str r4, [sp, #4] - str r0, [sp, #8] - add r0, r6, #0 - add r1, r7, #0 - mov r2, #1 - bl ov02_02247910 - add sp, #0x2c - pop {r4, r5, r6, r7, pc} -_02247F80: - add r0, sp, #0x10 - str r0, [sp] - ldr r0, [sp, #0x40] - str r4, [sp, #4] - str r0, [sp, #8] - add r0, r6, #0 - add r1, r7, #0 - mov r2, #1 - mov r3, #0 - bl ov02_02247A18 - add sp, #0x2c - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_02247F30 - - thumb_func_start ov02_02247F9C -ov02_02247F9C: ; 0x02247F9C - push {r4, r5, r6, lr} - add r6, r1, #0 - add r5, r0, #0 - add r0, r6, #0 - mov r4, #0 - bl sub_0205B994 - cmp r0, #0 - beq _02247FCA - add r0, r6, #0 - bl MetatileBehavior_IsSurfableWater - cmp r0, #0 - beq _02247FC2 - add r0, r5, #0 - bl ov02_02248020 - add r4, r0, #0 - b _02247FCA -_02247FC2: - add r0, r5, #0 - bl ov02_02248014 - add r4, r0, #0 -_02247FCA: - cmp r4, #0 - beq _0224800C - ldr r0, [r5, #0x20] - ldr r1, [r0] - ldr r0, _02248010 ; =0x0000013B - cmp r1, r0 - beq _02247FE0 - add r0, #0xaf - sub r0, r1, r0 - cmp r0, #2 - bhi _02248008 -_02247FE0: - ldr r0, [r5, #0xc] - bl Save_VarsFlags_Get - add r4, r0, #0 - mov r5, #0 -_02247FEA: - add r0, r4, #0 - add r1, r5, #0 - bl Save_VarsFlags_CheckAlphPuzzleFlag - cmp r0, #0 - beq _02247FFA - mov r0, #1 - pop {r4, r5, r6, pc} -_02247FFA: - add r0, r5, #1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, #4 - blo _02247FEA - mov r0, #0 - pop {r4, r5, r6, pc} -_02248008: - mov r0, #1 - pop {r4, r5, r6, pc} -_0224800C: - mov r0, #0 - pop {r4, r5, r6, pc} - .balign 4, 0 -_02248010: .word 0x0000013B - thumb_func_end ov02_02247F9C - - thumb_func_start ov02_02248014 -ov02_02248014: ; 0x02248014 - push {r3, lr} - bl MapEvents_GetLoadedEncTable - ldrb r0, [r0] - pop {r3, pc} - .balign 4, 0 - thumb_func_end ov02_02248014 - - thumb_func_start ov02_02248020 -ov02_02248020: ; 0x02248020 - push {r3, lr} - bl MapEvents_GetLoadedEncTable - ldrb r0, [r0, #1] - pop {r3, pc} - .balign 4, 0 - thumb_func_end ov02_02248020 - - thumb_func_start ov02_0224802C -ov02_0224802C: ; 0x0224802C - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl MapEvents_GetLoadedEncTable - cmp r4, #0 - beq _02248044 - cmp r4, #1 - beq _02248048 - cmp r4, #2 - beq _0224804C - b _02248050 -_02248044: - ldrb r4, [r0, #3] - b _02248058 -_02248048: - ldrb r4, [r0, #4] - b _02248058 -_0224804C: - ldrb r4, [r0, #5] - b _02248058 -_02248050: - bl GF_AssertFail - mov r0, #0 - pop {r3, r4, r5, pc} -_02248058: - cmp r4, #0 - bne _02248060 - mov r0, #0 - pop {r3, r4, r5, pc} -_02248060: - add r0, r5, #0 - bl FollowMon_IsActive - cmp r0, #0 - beq _0224808A - ldr r0, [r5, #0xc] - bl SaveArray_Party_Get - bl GetFirstAliveMonInParty_CrashIfNone - mov r1, #9 - mov r2, #0 - bl GetMonData - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl ov02_02248090 - add r0, r4, r0 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 -_0224808A: - add r0, r4, #0 - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end ov02_0224802C - - thumb_func_start ov02_02248090 -ov02_02248090: ; 0x02248090 - cmp r0, #0x63 - bhi _02248098 - mov r0, #0 - bx lr -_02248098: - cmp r0, #0x95 - bhi _022480A0 - mov r0, #0x14 - bx lr -_022480A0: - cmp r0, #0xc7 - bhi _022480A8 - mov r0, #0x1e - bx lr -_022480A8: - cmp r0, #0xf9 - bhi _022480B0 - mov r0, #0x28 - bx lr -_022480B0: - mov r0, #0x32 - bx lr - thumb_func_end ov02_02248090 - - thumb_func_start ov02_022480B4 -ov02_022480B4: ; 0x022480B4 - push {r3, lr} - bl MapEvents_GetLoadedEncTable - ldrb r0, [r0, #2] - pop {r3, pc} - .balign 4, 0 - thumb_func_end ov02_022480B4 - - thumb_func_start ov02_022480C0 -ov02_022480C0: ; 0x022480C0 - push {r4, r5, r6, r7, lr} - sub sp, #0x1c - add r6, r0, #0 - mov r0, #0 - str r1, [sp] - add r7, r2, #0 - str r3, [sp, #4] - add r4, r0, #0 - add r1, sp, #0x10 -_022480D2: - strb r4, [r1, r0] - add r0, r0, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0xc - blo _022480D2 - ldr r0, [sp] - add r5, r4, #0 - cmp r0, #0 - bls _02248128 -_022480E6: - lsl r0, r5, #3 - str r0, [sp, #0xc] - ldr r0, [r6, r0] - mov r1, #6 - bl GetMonBaseStat - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #8] - ldr r0, [sp, #0xc] - mov r1, #7 - ldr r0, [r6, r0] - bl GetMonBaseStat - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - ldr r0, [sp, #8] - cmp r0, r7 - beq _02248110 - cmp r1, r7 - bne _0224811C -_02248110: - add r1, r4, #1 - lsl r1, r1, #0x18 - add r0, r4, #0 - lsr r4, r1, #0x18 - add r1, sp, #0x10 - strb r5, [r1, r0] -_0224811C: - add r0, r5, #1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - ldr r0, [sp] - cmp r5, r0 - blo _022480E6 -_02248128: - cmp r4, #0 - beq _02248132 - ldr r0, [sp] - cmp r4, r0 - bne _02248138 -_02248132: - add sp, #0x1c - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_02248138: - bl LCRandom - add r1, r4, #0 - bl _s32_div_f - add r0, sp, #0x10 - ldrb r1, [r0, r1] - ldr r0, [sp, #4] - strb r1, [r0] - mov r0, #1 - add sp, #0x1c - pop {r4, r5, r6, r7, pc} - thumb_func_end ov02_022480C0 - - thumb_func_start EncounterSlot_AbilityInfluenceOnSlotChoiceCheck -EncounterSlot_AbilityInfluenceOnSlotChoiceCheck: ; 0x02248150 - push {r3, r4, r5, lr} - ldrb r0, [r1, #0xd] - add r5, r2, #0 - add r4, r3, #0 - cmp r0, #0 - bne _0224818C - add r0, sp, #0 - ldrb r1, [r1, #0xe] - ldrb r0, [r0, #0x14] - cmp r1, r0 - bne _0224818C - bl LCRandom - lsr r2, r0, #0x1f - lsl r1, r0, #0x1f - sub r1, r1, r2 - mov r0, #0x1f - ror r1, r0 - add r0, r2, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bne _0224818C - add r2, sp, #0 - ldrb r2, [r2, #0x10] - ldr r3, [sp, #0x18] - add r0, r5, #0 - add r1, r4, #0 - bl ov02_022480C0 - pop {r3, r4, r5, pc} -_0224818C: - mov r0, #0 - pop {r3, r4, r5, pc} - thumb_func_end EncounterSlot_AbilityInfluenceOnSlotChoiceCheck - - thumb_func_start ov02_02248190 -ov02_02248190: ; 0x02248190 - push {r3, r4} - ldrb r4, [r2, #0xd] - cmp r4, #0 - bne _022481E2 - cmp r0, #0 - ldrb r0, [r2, #0xe] - beq _022481AA - cmp r0, #0x3c - beq _022481A6 - cmp r0, #0x15 - bne _022481DC -_022481A6: - lsl r1, r1, #1 - b _022481DC -_022481AA: - cmp r0, #0x47 - beq _022481B6 - cmp r0, #0x63 - beq _022481B6 - cmp r0, #0x23 - bne _022481BA -_022481B6: - lsl r1, r1, #1 - b _022481DC -_022481BA: - cmp r0, #0x51 - bne _022481CA - cmp r3, #5 - bne _022481DC - lsr r0, r1, #0x1f - add r0, r1, r0 - asr r1, r0, #1 - b _022481DC -_022481CA: - cmp r0, #0x49 - beq _022481D6 - cmp r0, #0x5f - beq _022481D6 - cmp r0, #1 - bne _022481DC -_022481D6: - lsr r0, r1, #0x1f - add r0, r1, r0 - asr r1, r0, #1 -_022481DC: - cmp r1, #0x64 - ble _022481E2 - mov r1, #0x64 -_022481E2: - lsl r0, r1, #0x18 - lsr r0, r0, #0x18 - pop {r3, r4} - bx lr - .balign 4, 0 - thumb_func_end ov02_02248190 - - thumb_func_start ov02_022481EC -ov02_022481EC: ; 0x022481EC - push {r4, lr} - add r4, r2, #0 - ldr r2, [r0, #8] - cmp r2, #0 - beq _022481FA - mov r0, #0 - pop {r4, pc} -_022481FA: - ldrb r2, [r0, #0xd] - cmp r2, #0 - bne _02248240 - ldrb r0, [r0, #0xe] - cmp r0, #0x33 - beq _0224820A - cmp r0, #0x16 - bne _02248240 -_0224820A: - add r0, r1, #0 - mov r1, #0xa1 - mov r2, #0 - bl GetMonData - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #5 - bhi _02248220 - mov r0, #0 - pop {r4, pc} -_02248220: - sub r0, r0, #5 - cmp r4, r0 - bgt _02248240 - bl LCRandom - lsr r2, r0, #0x1f - lsl r1, r0, #0x1f - sub r1, r1, r2 - mov r0, #0x1f - ror r1, r0 - add r0, r2, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bne _02248240 - mov r0, #1 - pop {r4, pc} -_02248240: - mov r0, #0 - pop {r4, pc} - thumb_func_end ov02_022481EC - - thumb_func_start ov02_02248244 -ov02_02248244: ; 0x02248244 - push {r3, r4, r5, lr} - add r5, r2, #0 - cmp r1, #1 - beq _02248252 - cmp r1, #2 - beq _0224826A - b _02248284 -_02248252: - ldr r0, [r0, #0xc] - bl Save_LocalFieldData_Get - bl LocalFieldData_GetSafariBallsCounter - add r1, r0, #0 - ldrh r1, [r1] - mov r0, #0xb - bl BattleSetup_New_SafariZone - str r0, [r5] - pop {r3, r4, r5, pc} -_0224826A: - bl FieldSystem_BugContest_Get - add r4, r0, #0 - bl BugContest_GetSportBallsAddr - add r1, r0, #0 - ldrh r1, [r1] - ldr r2, [r4, #0x10] - mov r0, #0xb - bl BattleSetup_New_BugContest - str r0, [r5] - pop {r3, r4, r5, pc} -_02248284: - mov r0, #0xb - mov r1, #0 - bl BattleSetup_New - str r0, [r5] - pop {r3, r4, r5, pc} - thumb_func_end ov02_02248244 - - thumb_func_start ov02_02248290 -ov02_02248290: ; 0x02248290 - ldr r2, [r1, #4] - cmp r2, #0 - beq _022482A0 - ldrb r1, [r1, #0xc] - cmp r1, r0 - bls _022482A0 - mov r0, #1 - bx lr -_022482A0: - mov r0, #0 - bx lr - thumb_func_end ov02_02248290 - - thumb_func_start ov02_022482A4 -ov02_022482A4: ; 0x022482A4 - mov r2, #0 -_022482A6: - add r1, r0, r2 - ldrb r1, [r1, #0x12] - cmp r1, #0 - beq _022482B2 - mov r0, #1 - bx lr -_022482B2: - add r2, r2, #1 - cmp r2, #4 - blt _022482A6 - mov r0, #0 - bx lr - thumb_func_end ov02_022482A4 - - thumb_func_start ov02_022482BC -ov02_022482BC: ; 0x022482BC - push {r0, r1, r2, r3} - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - add r5, r1, #0 - mov r0, #4 - add r6, r2, #0 - bl AllocMonZeroed - add r4, r0, #0 - add r0, r5, #0 - mov r1, #4 - bl GetRoamerData - str r0, [sp, #4] - add r0, r5, #0 - mov r1, #6 - bl GetRoamerData - lsl r0, r0, #0x18 - lsr r7, r0, #0x18 - add r0, r5, #0 - mov r1, #2 - bl GetRoamerData - str r0, [sp, #8] - add r0, r5, #0 - mov r1, #3 - bl GetRoamerData - str r0, [sp, #0xc] - add r0, r5, #0 - mov r1, #7 - bl GetRoamerData - str r0, [sp, #0x14] - add r0, r5, #0 - mov r1, #5 - bl GetRoamerData - add r1, sp, #0x10 - strh r0, [r1] - ldr r1, [sp, #4] - ldr r0, [sp, #0xc] - lsl r1, r1, #0x10 - str r0, [sp] - ldr r3, [sp, #8] - add r0, r4, #0 - lsr r1, r1, #0x10 - add r2, r7, #0 - bl CreateMonWithFixedIVs - add r0, r4, #0 - mov r1, #7 - add r2, sp, #0x30 - bl SetMonData - add r0, r4, #0 - mov r1, #0xa0 - add r2, sp, #0x14 - bl SetMonData - add r0, r4, #0 - mov r1, #0xa3 - add r2, sp, #0x10 - bl SetMonData - ldr r0, [r6, #8] - add r1, r4, #0 - bl Party_AddMon - cmp r0, #0 - bne _02248350 - bl GF_AssertFail -_02248350: - add r0, r4, #0 - bl Heap_Free - add sp, #0x18 - pop {r3, r4, r5, r6, r7} - pop {r3} - add sp, #0x10 - bx r3 - thumb_func_end ov02_022482BC - -; BOOL ov02_GetRandomActiveRoamerInCurrMap(FieldSystem *fieldSystem, Roamer **out); - thumb_func_start ov02_GetRandomActiveRoamerInCurrMap -ov02_GetRandomActiveRoamerInCurrMap: ; 0x02248360 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - str r0, [sp] - ldr r0, [r0, #0xc] - str r1, [sp, #4] - mov r5, #0 - bl Save_Roamers_Get - add r6, r0, #0 - add r4, r5, #0 -_02248374: - add r0, r6, #0 - add r1, r4, #0 - bl Roamer_GetLocation - bl GetRoamMapByLocationIdx - add r7, r0, #0 - add r0, r6, #0 - add r1, r4, #0 - bl GetRoamerIsActiveByIndex - cmp r0, #0 - beq _022483AC - ldr r0, [sp] - ldr r0, [r0, #0x20] - ldr r0, [r0] - cmp r7, r0 - bne _022483AC - add r0, r6, #0 - add r1, r4, #0 - bl Roamers_GetRoamMonStats - lsl r2, r5, #2 - add r1, sp, #8 - str r0, [r1, r2] - add r0, r5, #1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 -_022483AC: - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #4 - blo _02248374 - cmp r5, #0 - bne _022483C0 - add sp, #0x18 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_022483C0: - bl LCRandom - lsr r2, r0, #0x1f - lsl r1, r0, #0x1f - sub r1, r1, r2 - mov r0, #0x1f - ror r1, r0 - add r0, r2, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bne _022483DC - add sp, #0x18 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_022483DC: - cmp r5, #1 - bls _0224840A - cmp r5, #0 - bne _022483E8 - bl GF_AssertFail -_022483E8: - cmp r5, #1 - bhi _022483F0 - mov r0, #0 - b _022483FE -_022483F0: - bl LCRandom - add r1, r5, #0 - bl _s32_div_f - lsl r0, r1, #0x10 - lsr r0, r0, #0x10 -_022483FE: - lsl r1, r0, #2 - add r0, sp, #8 - ldr r1, [r0, r1] - ldr r0, [sp, #4] - str r1, [r0] - b _02248410 -_0224840A: - ldr r1, [sp, #8] - ldr r0, [sp, #4] - str r1, [r0] -_02248410: - mov r0, #1 - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_GetRandomActiveRoamerInCurrMap - - thumb_func_start ov02_02248418 -ov02_02248418: ; 0x02248418 - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - add r7, r0, #0 - add r6, r2, #0 - mov r4, #0 - cmp r5, #0 - ble _0224843E -_02248426: - add r0, r7, #0 - add r1, r4, #0 - mov r2, #1 - bl Pokedex_GetSeenFormByIdx_Unown - cmp r6, r0 - bne _02248438 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_02248438: - add r4, r4, #1 - cmp r4, r5 - blt _02248426 -_0224843E: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_02248418 - - thumb_func_start ov02_02248444 -ov02_02248444: ; 0x02248444 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - str r0, [sp] - mov r0, #0 - str r0, [sp, #0xc] - ldr r0, [sp] - ldrb r0, [r0, #0x11] - cmp r0, #0 - beq _02248470 - bl LCRandom - ldr r1, _02248554 ; =ov02_02253290 - lsr r2, r0, #0x1f - ldr r3, [r1, #0x48] - lsl r1, r0, #0x1f - sub r1, r1, r2 - mov r0, #0x1f - ror r1, r0 - add r0, r2, r1 - add sp, #0x18 - ldrb r0, [r3, r0] - pop {r3, r4, r5, r6, r7, pc} -_02248470: - mov r0, #4 - mov r1, #0x1c - bl Heap_AllocAtEnd - str r0, [sp, #8] - mov r0, #4 - mov r1, #0x1c - bl Heap_AllocAtEnd - str r0, [sp, #4] - ldr r0, [sp, #8] - mov r1, #0 - mov r2, #0x1c - bl MI_CpuFill8 - ldr r0, [sp, #4] - mov r1, #0 - mov r2, #0x1c - bl MI_CpuFill8 - bl GetRadioMusicPlayingSeq - cmp r0, #6 - bne _022484A4 - mov r0, #1 - str r0, [sp, #0xc] -_022484A4: - ldr r0, [sp] - mov r6, #0 - ldr r0, [r0, #0x18] - mov r1, #1 - add r7, r6, #0 - bl Pokedex_GetSeenFormNum_Unown - lsl r0, r0, #0x18 - add r1, r6, #0 - lsr r0, r0, #0x18 - ldr r4, _02248558 ; =ov02_022532B4 - str r1, [sp, #0x10] - str r0, [sp, #0x14] -_022484BE: - ldr r1, [sp] - ldr r0, [sp, #0x10] - add r0, r1, r0 - ldrb r0, [r0, #0x12] - cmp r0, #0 - beq _02248500 - ldr r0, [r4] - mov r5, #0 - cmp r0, #0 - ble _02248500 -_022484D2: - ldr r2, [r4, #4] - ldr r0, [sp] - ldrb r2, [r2, r5] - ldr r0, [r0, #0x18] - ldr r1, [sp, #0x14] - bl ov02_02248418 - cmp r0, #0 - bne _022484EE - ldr r0, [r4, #4] - ldrb r1, [r0, r5] - ldr r0, [sp, #4] - strb r1, [r0, r6] - add r6, r6, #1 -_022484EE: - ldr r0, [r4, #4] - ldrb r1, [r0, r5] - ldr r0, [sp, #8] - add r5, r5, #1 - strb r1, [r0, r7] - ldr r0, [r4] - add r7, r7, #1 - cmp r5, r0 - blt _022484D2 -_02248500: - ldr r0, [sp, #0x10] - add r4, #8 - add r0, r0, #1 - str r0, [sp, #0x10] - cmp r0, #4 - blt _022484BE - ldr r0, [sp, #0xc] - cmp r0, #0 - beq _02248534 - cmp r6, #0 - ble _02248534 - bl LCRandom - mov r1, #0x64 - bl _s32_div_f - cmp r1, #0x32 - bge _02248534 - bl LCRandom - add r1, r6, #0 - bl _s32_div_f - ldr r0, [sp, #4] - ldrb r4, [r0, r1] - b _02248542 -_02248534: - bl LCRandom - add r1, r7, #0 - bl _s32_div_f - ldr r0, [sp, #8] - ldrb r4, [r0, r1] -_02248542: - ldr r0, [sp, #4] - bl Heap_Free - ldr r0, [sp, #8] - bl Heap_Free - add r0, r4, #0 - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_02248554: .word ov02_02253290 -_02248558: .word ov02_022532B4 - thumb_func_end ov02_02248444 - - thumb_func_start ov02_0224855C -ov02_0224855C: ; 0x0224855C - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - add r7, r0, #0 - ldrb r0, [r5, #0xd] - add r4, r2, #0 - add r6, r3, #0 - cmp r0, #0 - bne _02248576 - ldrb r0, [r5, #0xe] - cmp r0, #0xe - bne _02248576 - mov r2, #1 - b _02248578 -_02248576: - mov r2, #0 -_02248578: - ldr r1, [r6] - add r0, r4, #0 - bl WildMonSetRandomHeldItem - add r0, r4, #0 - mov r1, #5 - mov r2, #0 - bl GetMonData - cmp r0, #SPECIES_UNOWN - bne _022485A2 - add r0, r5, #0 - bl ov02_02248444 - add r1, sp, #0 - strb r0, [r1] - add r0, r4, #0 - mov r1, #0x70 - add r2, sp, #0 - bl SetMonData -_022485A2: - lsl r0, r7, #2 - add r0, r6, r0 - ldr r0, [r0, #4] - add r1, r4, #0 - bl Party_AddMon - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov02_0224855C - - thumb_func_start ov02_022485B0 -ov02_022485B0: ; 0x022485B0 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - ldrb r0, [r2, #0xd] - add r6, r1, #0 - add r4, r3, #0 - cmp r0, #0 - bne _02248614 - ldrb r0, [r2, #0xe] - cmp r0, #0x48 - beq _022485CC - cmp r0, #0x37 - beq _022485CC - cmp r0, #0x2e - bne _02248614 -_022485CC: - bl LCRandom - lsr r2, r0, #0x1f - lsl r1, r0, #0x1f - sub r1, r1, r2 - mov r0, #0x1f - ror r1, r0 - add r0, r2, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bne _022485E6 - add r0, r4, #0 - pop {r3, r4, r5, r6, r7, pc} -_022485E6: - mov r7, #0 - cmp r6, #0 - ble _02248610 -_022485EC: - lsl r2, r4, #3 - lsl r0, r7, #3 - add r3, r5, r2 - add r1, r5, r0 - ldr r0, [r5, r0] - ldr r2, [r5, r2] - cmp r0, r2 - bne _02248606 - ldrh r1, [r1, #4] - ldrh r0, [r3, #4] - cmp r1, r0 - bls _02248606 - add r4, r7, #0 -_02248606: - add r0, r7, #1 - lsl r0, r0, #0x18 - lsr r7, r0, #0x18 - cmp r7, r6 - blt _022485EC -_02248610: - add r0, r4, #0 - pop {r3, r4, r5, r6, r7, pc} -_02248614: - add r0, r4, #0 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov02_022485B0 - - thumb_func_start ov02_02248618 -ov02_02248618: ; 0x02248618 - push {r3, r4, r5, r6, r7, lr} - add r4, r1, #0 - add r7, r0, #0 - add r0, r4, #0 - mov r1, #0x4c - mov r2, #0 - add r5, r3, #0 - bl GetMonData - cmp r0, #0 - bne _0224863C - mov r2, #0 - add r0, r4, #0 - mov r1, #0xa - strb r2, [r5, #0xd] - bl GetMonData - b _02248642 -_0224863C: - mov r0, #1 - strb r0, [r5, #0xd] - mov r0, #NUM_ABILITIES -_02248642: - strb r0, [r5, #0xe] - mov r0, #0 - strb r0, [r5, #0xc] - str r0, [r5, #4] - str r0, [r5, #8] - strb r0, [r5, #0xf] - strb r0, [r5, #0x10] - ldr r0, [r7, #0xc] - bl Save_VarsFlags_Get - add r6, r0, #0 - ldr r0, [r7, #0x20] - ldr r1, [r0] - ldr r0, _02248694 ; =0x000001EB - cmp r1, r0 - bne _02248666 - mov r0, #1 - b _02248668 -_02248666: - mov r0, #0 -_02248668: - strb r0, [r5, #0x11] - mov r4, #0 -_0224866C: - add r0, r6, #0 - add r1, r4, #0 - bl Save_VarsFlags_CheckAlphPuzzleFlag - add r1, r5, r4 - add r4, r4, #1 - strb r0, [r1, #0x12] - cmp r4, #4 - blt _0224866C - ldr r0, [r7, #0xc] - bl Save_Pokedex_Get - str r0, [r5, #0x18] - ldr r0, [r7, #0xc] - bl Save_PlayerData_GetProfile - bl PlayerProfile_GetTrainerID - str r0, [r5] - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_02248694: .word 0x000001EB - thumb_func_end ov02_02248618 - - thumb_func_start ov02_02248698 -ov02_02248698: ; 0x02248698 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x40] - bl PlayerAvatar_GetFacingDirection - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - mov r1, #0 - cmp r0, #3 - bhi _022486F8 - add r2, r0, r0 - add r2, pc - ldrh r2, [r2, #6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_022486B8: ; jump table - .short _022486C0 - _022486B8 - 2 ; case 0 - .short _022486CE - _022486B8 - 2 ; case 1 - .short _022486DC - _022486B8 - 2 ; case 2 - .short _022486EA - _022486B8 - 2 ; case 3 -_022486C0: - add r2, r4, #0 - add r2, #0x7a - ldrh r2, [r2] - cmp r2, #1 - bne _022486FE - mov r1, #1 - b _022486FE -_022486CE: - add r2, r4, #0 - add r2, #0x7a - ldrh r2, [r2] - cmp r2, #0 - bne _022486FE - mov r1, #1 - b _022486FE -_022486DC: - add r2, r4, #0 - add r2, #0x7a - ldrh r2, [r2] - cmp r2, #3 - bne _022486FE - mov r1, #1 - b _022486FE -_022486EA: - add r2, r4, #0 - add r2, #0x7a - ldrh r2, [r2] - cmp r2, #2 - bne _022486FE - mov r1, #1 - b _022486FE -_022486F8: - bl GF_AssertFail - pop {r4, pc} -_022486FE: - cmp r1, #0 - beq _0224871C - add r1, r4, #0 - add r1, #0x7c - ldrh r2, [r1] - ldr r1, _02248724 ; =0x0000FFFF - cmp r2, r1 - bhs _0224871C - add r1, r4, #0 - add r1, #0x7c - ldrh r1, [r1] - add r2, r1, #1 - add r1, r4, #0 - add r1, #0x7c - strh r2, [r1] -_0224871C: - add r4, #0x7a - strh r0, [r4] - pop {r4, pc} - nop -_02248724: .word 0x0000FFFF - thumb_func_end ov02_02248698 - - thumb_func_start ov02_02248728 -ov02_02248728: ; 0x02248728 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r6, r2, #0 - ldr r0, [sp, #0x1c] - add r7, r3, #0 - strb r6, [r5] - ldr r4, [sp, #0x18] - strb r7, [r5, #1] - strb r4, [r5, #2] - str r0, [sp, #0x1c] - strb r0, [r5, #3] - ldr r0, [sp, #0x20] - mov r2, #4 - strb r0, [r5, #4] - ldr r0, [sp, #0x24] - strb r0, [r5, #5] - ldr r0, [sp, #0x28] - strb r0, [r5, #6] - ldr r0, [sp, #0x2c] - strb r0, [r5, #7] - add r0, r1, #0 - add r1, r5, #0 - add r1, #0xc - bl G2dRenderer_Init - str r0, [r5, #8] - add r0, r5, #0 - mov r2, #2 - add r0, #0xc - mov r1, #0 - lsl r2, r2, #0x14 - bl G2dRenderer_SetSubSurfaceCoords - add r0, r6, #0 - mov r1, #0 - mov r2, #4 - bl Create2DGfxResObjMan - mov r1, #0x4d - lsl r1, r1, #2 - str r0, [r5, r1] - add r0, r7, #0 - mov r1, #1 - mov r2, #4 - bl Create2DGfxResObjMan - mov r1, #0x4e - lsl r1, r1, #2 - str r0, [r5, r1] - add r0, r4, #0 - mov r1, #2 - mov r2, #4 - bl Create2DGfxResObjMan - mov r1, #0x4f - lsl r1, r1, #2 - str r0, [r5, r1] - ldr r0, [sp, #0x1c] - mov r1, #3 - mov r2, #4 - bl Create2DGfxResObjMan - mov r1, #5 - lsl r1, r1, #6 - str r0, [r5, r1] - mov r0, #4 - lsl r1, r6, #3 - bl ov02_0224B690 - mov r1, #0x51 - lsl r1, r1, #2 - str r0, [r5, r1] - mov r0, #4 - lsl r1, r7, #3 - bl ov02_0224B690 - mov r1, #0x52 - lsl r1, r1, #2 - str r0, [r5, r1] - mov r0, #4 - lsl r1, r4, #3 - bl ov02_0224B690 - mov r1, #0x53 - lsl r1, r1, #2 - str r0, [r5, r1] - ldr r1, [sp, #0x1c] - mov r0, #4 - lsl r1, r1, #3 - bl ov02_0224B690 - mov r1, #0x15 - lsl r1, r1, #4 - str r0, [r5, r1] - mov r1, #0 - cmp r6, #0 - ble _02248804 - ble _02248804 - ldr r0, [sp, #0x20] - add r2, r1, #0 - lsl r0, r0, #0x10 - asr r0, r0, #0x10 -_022487F4: - mov r3, #0x51 - lsl r3, r3, #2 - ldr r3, [r5, r3] - add r1, r1, #1 - strh r0, [r3, r2] - add r2, #8 - cmp r1, r6 - blt _022487F4 -_02248804: - mov r3, #0 - cmp r7, #0 - ble _02248824 - ble _02248824 - ldr r0, [sp, #0x24] - mov r6, #0x52 - lsl r0, r0, #0x10 - add r2, r3, #0 - asr r1, r0, #0x10 - lsl r6, r6, #2 -_02248818: - ldr r0, [r5, r6] - add r3, r3, #1 - strh r1, [r0, r2] - add r2, #8 - cmp r3, r7 - blt _02248818 -_02248824: - mov r1, #0 - cmp r4, #0 - ble _02248844 - ble _02248844 - ldr r2, [sp, #0x28] - add r0, r1, #0 - lsl r2, r2, #0x10 - asr r6, r2, #0x10 - mov r2, #0x53 - lsl r2, r2, #2 -_02248838: - ldr r3, [r5, r2] - add r1, r1, #1 - strh r6, [r3, r0] - add r0, #8 - cmp r1, r4 - blt _02248838 -_02248844: - ldr r0, [sp, #0x1c] - mov r1, #0 - cmp r0, #0 - ble _02248868 - ble _02248868 - ldr r2, [sp, #0x2c] - mov r3, #0x15 - lsl r2, r2, #0x10 - add r0, r1, #0 - asr r4, r2, #0x10 - lsl r3, r3, #4 -_0224885A: - ldr r2, [r5, r3] - add r1, r1, #1 - strh r4, [r2, r0] - ldr r2, [sp, #0x1c] - add r0, #8 - cmp r1, r2 - blt _0224885A -_02248868: - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_02248728 - - thumb_func_start ov02_0224886C -ov02_0224886C: ; 0x0224886C - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - ldrb r0, [r5] - mov r6, #0 - cmp r0, #0 - ble _0224889C - add r4, r6, #0 - mov r7, #4 -_0224887C: - mov r0, #0x51 - lsl r0, r0, #2 - ldr r1, [r5, r0] - ldrsb r2, [r5, r7] - add r0, r1, r4 - ldrsh r1, [r1, r4] - cmp r2, r1 - beq _02248892 - ldr r0, [r0, #4] - bl sub_0200AEB0 -_02248892: - ldrb r0, [r5] - add r6, r6, #1 - add r4, #8 - cmp r6, r0 - blt _0224887C -_0224889C: - ldrb r0, [r5, #1] - mov r6, #0 - cmp r0, #0 - ble _022488C8 - add r4, r6, #0 - mov r7, #5 -_022488A8: - mov r0, #0x52 - lsl r0, r0, #2 - ldr r1, [r5, r0] - ldrsb r2, [r5, r7] - add r0, r1, r4 - ldrsh r1, [r1, r4] - cmp r2, r1 - beq _022488BE - ldr r0, [r0, #4] - bl sub_0200B0A8 -_022488BE: - ldrb r0, [r5, #1] - add r6, r6, #1 - add r4, #8 - cmp r6, r0 - blt _022488A8 -_022488C8: - ldrb r0, [r5, #2] - mov r6, #0 - cmp r0, #0 - ble _022488F4 - add r4, r6, #0 - mov r7, #6 -_022488D4: - mov r0, #0x53 - lsl r0, r0, #2 - ldr r1, [r5, r0] - ldrsb r2, [r5, r7] - add r0, r1, r4 - ldrsh r1, [r1, r4] - cmp r2, r1 - beq _022488EA - ldr r0, [r0, #4] - bl sub_0200A740 -_022488EA: - ldrb r0, [r5, #2] - add r6, r6, #1 - add r4, #8 - cmp r6, r0 - blt _022488D4 -_022488F4: - ldrb r0, [r5, #3] - mov r6, #0 - cmp r0, #0 - ble _02248920 - add r4, r6, #0 - mov r7, #7 -_02248900: - mov r0, #0x15 - lsl r0, r0, #4 - ldr r1, [r5, r0] - ldrsb r2, [r5, r7] - add r0, r1, r4 - ldrsh r1, [r1, r4] - cmp r2, r1 - beq _02248916 - ldr r0, [r0, #4] - bl sub_0200A740 -_02248916: - ldrb r0, [r5, #3] - add r6, r6, #1 - add r4, #8 - cmp r6, r0 - blt _02248900 -_02248920: - mov r0, #0x4d - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl Destroy2DGfxResObjMan - mov r0, #0x4e - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl Destroy2DGfxResObjMan - mov r0, #0x4f - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl Destroy2DGfxResObjMan - mov r0, #5 - lsl r0, r0, #6 - ldr r0, [r5, r0] - bl Destroy2DGfxResObjMan - mov r0, #0x51 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl Heap_Free - mov r0, #0x52 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl Heap_Free - mov r0, #0x53 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl Heap_Free - mov r0, #0x15 - lsl r0, r0, #4 - ldr r0, [r5, r0] - bl Heap_Free - ldr r0, [r5, #8] - bl SpriteList_DeleteAllSprites - ldr r0, [r5, #8] - bl SpriteList_Delete - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_0224886C - - thumb_func_start ov02_02248980 -ov02_02248980: ; 0x02248980 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r6, r0, #0 - ldrb r5, [r6] - str r2, [sp, #0x10] - str r1, [sp, #0xc] - add r7, r3, #0 - mov r2, #0 - cmp r5, #0 - ble _022489E6 - mov r0, #0x51 - lsl r0, r0, #2 - ldr r3, [r6, r0] - mov r0, #4 - ldrsb r4, [r6, r0] - mov ip, r3 - add r0, r2, #0 -_022489A2: - ldrsh r1, [r3, r0] - cmp r4, r1 - bne _022489DE - lsl r4, r2, #3 - mov r0, ip - strh r7, [r0, r4] - mov r0, #0x51 - lsl r0, r0, #2 - ldr r1, [r6, r0] - mov r3, #0 - add r1, r1, r4 - strh r3, [r1, #2] - str r7, [sp] - mov r1, #1 - str r1, [sp, #4] - mov r1, #4 - str r1, [sp, #8] - sub r0, #0x10 - ldr r0, [r6, r0] - ldr r1, [sp, #0xc] - ldr r2, [sp, #0x10] - bl AddCharResObjFromOpenNarc - mov r1, #0x51 - lsl r1, r1, #2 - ldr r1, [r6, r1] - add sp, #0x14 - add r1, r1, r4 - str r0, [r1, #4] - pop {r4, r5, r6, r7, pc} -_022489DE: - add r2, r2, #1 - add r3, #8 - cmp r2, r5 - blt _022489A2 -_022489E6: - bl GF_AssertFail - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_02248980 - - thumb_func_start ov02_022489F0 -ov02_022489F0: ; 0x022489F0 - push {r4, r5, r6, lr} - ldrb r3, [r0] - mov r2, #0 - cmp r3, #0 - ble _02248A1E - mov r4, #0x51 - lsl r4, r4, #2 - ldr r0, [r0, r4] - add r4, r2, #0 - add r6, r0, #0 -_02248A04: - ldrsh r5, [r6, r4] - cmp r1, r5 - bne _02248A16 - lsl r1, r2, #3 - add r0, r0, r1 - ldr r0, [r0, #4] - bl sub_0200ADA4 - pop {r4, r5, r6, pc} -_02248A16: - add r2, r2, #1 - add r6, #8 - cmp r2, r3 - blt _02248A04 -_02248A1E: - bl GF_AssertFail - pop {r4, r5, r6, pc} - thumb_func_end ov02_022489F0 - - thumb_func_start ov02_02248A24 -ov02_02248A24: ; 0x02248A24 - push {r4, r5, r6, lr} - ldrb r3, [r0] - mov r2, #0 - cmp r3, #0 - ble _02248A52 - mov r4, #0x51 - lsl r4, r4, #2 - ldr r0, [r0, r4] - add r4, r2, #0 - add r6, r0, #0 -_02248A38: - ldrsh r5, [r6, r4] - cmp r1, r5 - bne _02248A4A - lsl r1, r2, #3 - add r0, r0, r1 - ldr r0, [r0, #4] - bl sub_0200A740 - pop {r4, r5, r6, pc} -_02248A4A: - add r2, r2, #1 - add r6, #8 - cmp r2, r3 - blt _02248A38 -_02248A52: - bl GF_AssertFail - pop {r4, r5, r6, pc} - thumb_func_end ov02_02248A24 - - thumb_func_start ov02_02248A58 -ov02_02248A58: ; 0x02248A58 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - add r6, r0, #0 - ldrb r5, [r6] - str r2, [sp, #0x14] - str r1, [sp, #0x10] - add r7, r3, #0 - mov r2, #0 - cmp r5, #0 - ble _02248AC0 - mov r0, #0x52 - lsl r0, r0, #2 - ldr r3, [r6, r0] - mov r0, #5 - ldrsb r4, [r6, r0] - mov ip, r3 - add r0, r2, #0 -_02248A7A: - ldrsh r1, [r3, r0] - cmp r4, r1 - bne _02248AB8 - lsl r4, r2, #3 - mov r0, ip - strh r7, [r0, r4] - mov r0, #0x52 - lsl r0, r0, #2 - ldr r1, [r6, r0] - mov r3, #0 - add r1, r1, r4 - strh r3, [r1, #2] - str r7, [sp] - mov r1, #1 - str r1, [sp, #4] - str r1, [sp, #8] - mov r1, #4 - str r1, [sp, #0xc] - sub r0, #0x10 - ldr r0, [r6, r0] - ldr r1, [sp, #0x10] - ldr r2, [sp, #0x14] - bl AddPlttResObjFromOpenNarc - mov r1, #0x52 - lsl r1, r1, #2 - ldr r1, [r6, r1] - add sp, #0x18 - add r1, r1, r4 - str r0, [r1, #4] - pop {r3, r4, r5, r6, r7, pc} -_02248AB8: - add r2, r2, #1 - add r3, #8 - cmp r2, r5 - blt _02248A7A -_02248AC0: - bl GF_AssertFail - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov02_02248A58 - - thumb_func_start ov02_02248AC8 -ov02_02248AC8: ; 0x02248AC8 - push {r4, r5, r6, lr} - ldrb r3, [r0, #1] - mov r2, #0 - cmp r3, #0 - ble _02248AF6 - mov r4, #0x52 - lsl r4, r4, #2 - ldr r0, [r0, r4] - add r4, r2, #0 - add r6, r0, #0 -_02248ADC: - ldrsh r5, [r6, r4] - cmp r1, r5 - bne _02248AEE - lsl r1, r2, #3 - add r0, r0, r1 - ldr r0, [r0, #4] - bl sub_0200B00C - pop {r4, r5, r6, pc} -_02248AEE: - add r2, r2, #1 - add r6, #8 - cmp r2, r3 - blt _02248ADC -_02248AF6: - bl GF_AssertFail - pop {r4, r5, r6, pc} - thumb_func_end ov02_02248AC8 - - thumb_func_start ov02_02248AFC -ov02_02248AFC: ; 0x02248AFC - push {r4, r5, r6, lr} - ldrb r3, [r0, #1] - mov r2, #0 - cmp r3, #0 - ble _02248B2A - mov r4, #0x52 - lsl r4, r4, #2 - ldr r0, [r0, r4] - add r4, r2, #0 - add r6, r0, #0 -_02248B10: - ldrsh r5, [r6, r4] - cmp r1, r5 - bne _02248B22 - lsl r1, r2, #3 - add r0, r0, r1 - ldr r0, [r0, #4] - bl sub_0200A740 - pop {r4, r5, r6, pc} -_02248B22: - add r2, r2, #1 - add r6, #8 - cmp r2, r3 - blt _02248B10 -_02248B2A: - bl GF_AssertFail - pop {r4, r5, r6, pc} - thumb_func_end ov02_02248AFC - - thumb_func_start ov02_02248B30 -ov02_02248B30: ; 0x02248B30 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r6, r0, #0 - ldrb r5, [r6] - str r2, [sp, #0x10] - str r1, [sp, #0xc] - add r7, r3, #0 - mov r2, #0 - cmp r5, #0 - ble _02248B96 - mov r0, #0x53 - lsl r0, r0, #2 - ldr r3, [r6, r0] - mov r0, #6 - ldrsb r4, [r6, r0] - mov ip, r3 - add r0, r2, #0 -_02248B52: - ldrsh r1, [r3, r0] - cmp r4, r1 - bne _02248B8E - lsl r4, r2, #3 - mov r0, ip - strh r7, [r0, r4] - mov r0, #0x53 - lsl r0, r0, #2 - ldr r1, [r6, r0] - mov r3, #0 - add r1, r1, r4 - strh r3, [r1, #2] - str r7, [sp] - mov r1, #2 - str r1, [sp, #4] - mov r1, #4 - str r1, [sp, #8] - sub r0, #0x10 - ldr r0, [r6, r0] - ldr r1, [sp, #0xc] - ldr r2, [sp, #0x10] - bl AddCellOrAnimResObjFromOpenNarc - mov r1, #0x53 - lsl r1, r1, #2 - ldr r1, [r6, r1] - add sp, #0x14 - add r1, r1, r4 - str r0, [r1, #4] - pop {r4, r5, r6, r7, pc} -_02248B8E: - add r2, r2, #1 - add r3, #8 - cmp r2, r5 - blt _02248B52 -_02248B96: - bl GF_AssertFail - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_02248B30 - - thumb_func_start ov02_02248BA0 -ov02_02248BA0: ; 0x02248BA0 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r6, r0, #0 - ldrb r5, [r6] - str r2, [sp, #0x10] - str r1, [sp, #0xc] - add r7, r3, #0 - mov r2, #0 - cmp r5, #0 - ble _02248C06 - mov r0, #0x15 - lsl r0, r0, #4 - ldr r3, [r6, r0] - mov r0, #7 - ldrsb r4, [r6, r0] - mov ip, r3 - add r0, r2, #0 -_02248BC2: - ldrsh r1, [r3, r0] - cmp r4, r1 - bne _02248BFE - lsl r4, r2, #3 - mov r0, ip - strh r7, [r0, r4] - mov r0, #0x15 - lsl r0, r0, #4 - ldr r1, [r6, r0] - mov r3, #0 - add r1, r1, r4 - strh r3, [r1, #2] - str r7, [sp] - mov r1, #3 - str r1, [sp, #4] - mov r1, #4 - str r1, [sp, #8] - sub r0, #0x10 - ldr r0, [r6, r0] - ldr r1, [sp, #0xc] - ldr r2, [sp, #0x10] - bl AddCellOrAnimResObjFromOpenNarc - mov r1, #0x15 - lsl r1, r1, #4 - ldr r1, [r6, r1] - add sp, #0x14 - add r1, r1, r4 - str r0, [r1, #4] - pop {r4, r5, r6, r7, pc} -_02248BFE: - add r2, r2, #1 - add r3, #8 - cmp r2, r5 - blt _02248BC2 -_02248C06: - bl GF_AssertFail - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_02248BA0 - - thumb_func_start ov02_02248C10 -ov02_02248C10: ; 0x02248C10 - push {r4, r5, r6, lr} - sub sp, #0x70 - add r5, r0, #0 - add r4, r1, #0 - add r1, r2, #0 - mov r0, #7 - add r2, r3, #0 - ldrsb r3, [r5, r0] - ldr r6, [sp, #0x84] - cmp r6, r3 - bne _02248C2A - sub r0, #8 - str r0, [sp, #0x84] -_02248C2A: - ldr r0, [sp, #0x84] - mov r3, #0 - str r0, [sp] - mov r0, #0 - mvn r0, r0 - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [sp, #0x88] - str r3, [sp, #0xc] - str r0, [sp, #0x10] - mov r0, #0x4d - lsl r0, r0, #2 - ldr r6, [r5, r0] - str r6, [sp, #0x14] - add r6, r0, #4 - ldr r6, [r5, r6] - str r6, [sp, #0x18] - add r6, r0, #0 - add r6, #8 - ldr r6, [r5, r6] - add r0, #0xc - str r6, [sp, #0x1c] - ldr r0, [r5, r0] - str r0, [sp, #0x20] - str r3, [sp, #0x24] - str r3, [sp, #0x28] - ldr r3, [sp, #0x80] - add r0, sp, #0x4c - bl CreateSpriteResourcesHeader - ldr r0, [r5, #8] - add r2, sp, #0x34 - str r0, [sp, #0x2c] - add r0, sp, #0x4c - str r0, [sp, #0x30] - ldmia r4!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r4] - str r0, [r2] - ldr r0, [sp, #0x8c] - str r0, [sp, #0x40] - mov r0, #1 - str r0, [sp, #0x44] - mov r0, #4 - str r0, [sp, #0x48] - add r0, sp, #0x2c - bl Sprite_Create - add r4, r0, #0 - bne _02248C92 - bl GF_AssertFail -_02248C92: - add r0, r4, #0 - add sp, #0x70 - pop {r4, r5, r6, pc} - thumb_func_end ov02_02248C10 - - thumb_func_start ov02_02248C98 -ov02_02248C98: ; 0x02248C98 - push {r4, lr} - add r4, r1, #0 - bl Sprite_GetMatrixPtr - add r2, r0, #0 - ldmia r2!, {r0, r1} - stmia r4!, {r0, r1} - ldr r0, [r2] - str r0, [r4] - pop {r4, pc} - thumb_func_end ov02_02248C98 - - thumb_func_start ov02_02248CAC -ov02_02248CAC: ; 0x02248CAC - push {r3, r4, r5, r6, lr} - sub sp, #0x34 - add r4, r0, #0 - mov r2, #0 - add r0, sp, #0x1c - str r2, [r0] - str r2, [r0, #4] - add r3, sp, #0x28 - str r2, [r3] - str r2, [r3, #4] - ldr r6, _02248D14 ; =ov02_02253360 - str r2, [r0, #8] - ldmia r6!, {r0, r1} - add r5, sp, #0x10 - stmia r5!, {r0, r1} - ldr r0, [r6] - str r2, [r3, #8] - str r0, [r5] - add r1, r3, #0 - str r2, [sp] - mov r0, #2 - str r0, [sp, #4] - str r2, [sp, #8] - mov r0, #0x84 - str r0, [sp, #0xc] - add r0, r4, #0 - add r3, r2, #0 - bl ov02_02248C10 - add r4, r0, #0 - mov r1, #2 - bl Sprite_SetAffineOverwriteMode - add r0, r4, #0 - add r1, sp, #0x1c - bl Sprite_SetAffineMatrix - add r0, r4, #0 - add r1, sp, #0x10 - bl Sprite_SetAffineScale - mov r0, #0 - bl GF_DegreeToSinCosIdx - add r1, r0, #0 - add r0, r4, #0 - bl Sprite_SetAffineZRotation - add r0, r4, #0 - add sp, #0x34 - pop {r3, r4, r5, r6, pc} - nop -_02248D14: .word ov02_02253360 - thumb_func_end ov02_02248CAC - - thumb_func_start ov02_02248D18 -ov02_02248D18: ; 0x02248D18 - push {r3, r4, lr} - sub sp, #0x1c - mov r3, #0 - add r2, sp, #0x10 - str r3, [r2] - str r3, [r2, #4] - str r3, [r2, #8] - cmp r1, #1 - bne _02248D2C - mov r3, #1 -_02248D2C: - mov r2, #2 - str r2, [sp] - mov r1, #1 - str r1, [sp, #4] - mov r1, #0 - str r1, [sp, #8] - mov r1, #0x83 - str r1, [sp, #0xc] - add r1, sp, #0x10 - bl ov02_02248C10 - add r4, r0, #0 - mov r1, #0 - bl Sprite_SetDrawFlag - add r0, r4, #0 - mov r1, #6 - bl Sprite_SetAnimCtrlSeq - add r0, r4, #0 - add sp, #0x1c - pop {r3, r4, pc} - thumb_func_end ov02_02248D18 - - thumb_func_start ov02_02248D58 -ov02_02248D58: ; 0x02248D58 - push {r4, r5, lr} - sub sp, #0x24 - add r5, sp, #0x18 - mov r4, #0 - str r4, [r5] - str r4, [r5, #4] - str r0, [sp, #0xc] - str r2, [sp, #0x14] - str r3, [sp, #0x10] - str r4, [r5, #8] - str r1, [sp, #8] - add r0, sp, #8 - str r0, [sp] - mov r0, #0x82 - str r0, [sp, #4] - add r0, r1, #0 - ldr r1, _02248D88 ; =ov02_02253454 - add r2, r5, #0 - add r3, r4, #0 - bl sub_02068B0C - add sp, #0x24 - pop {r4, r5, pc} - nop -_02248D88: .word ov02_02253454 - thumb_func_end ov02_02248D58 - - thumb_func_start ov02_02248D8C -ov02_02248D8C: ; 0x02248D8C - push {r3, lr} - bl sub_02068D74 - ldrb r0, [r0, #2] - pop {r3, pc} - .balign 4, 0 - thumb_func_end ov02_02248D8C - - thumb_func_start ov02_02248D98 -ov02_02248D98: ; 0x02248D98 - push {r4, lr} - add r4, r1, #0 - bl sub_02068D98 - add r2, r4, #0 - add r3, r0, #0 - add r2, #0x58 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r4, #0x64] - bl ov02_02248CAC - str r0, [r4, #0x68] - mov r0, #1 - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_02248D98 - - thumb_func_start ov02_02248DBC -ov02_02248DBC: ; 0x02248DBC - push {r3, r4, r5, lr} - add r5, r0, #0 - bl sub_02068D74 - add r4, r0, #0 - ldr r0, [r4, #0x6c] - cmp r0, #0 - beq _02248DD0 - bl sub_02068B48 -_02248DD0: - ldr r0, [r4, #0x70] - cmp r0, #0 - beq _02248DDA - bl ov01_021FCD78 -_02248DDA: - add r0, r5, #0 - bl sub_02068B48 - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end ov02_02248DBC - - thumb_func_start ov02_02248DE4 -ov02_02248DE4: ; 0x02248DE4 - ldr r3, _02248DEC ; =Sprite_Delete - ldr r0, [r1, #0x68] - bx r3 - nop -_02248DEC: .word Sprite_Delete - thumb_func_end ov02_02248DE4 - - thumb_func_start ov02_02248DF0 -ov02_02248DF0: ; 0x02248DF0 - push {r3, r4, r5, lr} - add r5, r1, #0 - ldrb r0, [r5] - lsl r1, r0, #2 - ldr r0, _02248E0C ; =ov02_02253320 - ldr r4, [r0, r1] -_02248DFC: - ldrb r1, [r5, #1] - add r0, r5, #0 - lsl r1, r1, #2 - ldr r1, [r4, r1] - blx r1 - cmp r0, #1 - beq _02248DFC - pop {r3, r4, r5, pc} - .balign 4, 0 -_02248E0C: .word ov02_02253320 - thumb_func_end ov02_02248DF0 - - thumb_func_start ov02_02248E10 -ov02_02248E10: ; 0x02248E10 - push {r3, lr} - mov r1, #0 - strb r1, [r0, #2] - ldr r0, [r0, #0x68] - bl Sprite_SetDrawFlag - mov r0, #0 - pop {r3, pc} - thumb_func_end ov02_02248E10 - - thumb_func_start ov02_02248E20 -ov02_02248E20: ; 0x02248E20 - push {r4, r5, r6, lr} - sub sp, #0x30 - ldr r4, _02248F74 ; =ov02_0225339C - add r2, r0, #0 - ldmia r4!, {r0, r1} - add r3, sp, #0x24 - stmia r3!, {r0, r1} - ldr r0, [r4] - ldr r4, _02248F78 ; =ov02_022533CC - str r0, [r3] - ldmia r4!, {r0, r1} - add r3, sp, #0x18 - stmia r3!, {r0, r1} - ldr r0, [r4] - str r0, [r3] - add r0, r2, #0 - bl sub_02068D74 - add r4, r0, #0 - mov r3, #1 - add r5, r4, #0 - strb r3, [r4] - mov r2, #0 - strb r2, [r4, #2] - strb r2, [r4, #1] - str r2, [r4, #4] - add r6, sp, #0x24 - ldmia r6!, {r0, r1} - add r5, #8 - stmia r5!, {r0, r1} - ldr r0, [r6] - str r0, [r5] - str r2, [r4, #0x14] - str r2, [r4, #0x18] - str r2, [r4, #0x1c] - ldr r0, _02248F7C ; =0x0015E000 - add r2, r4, #0 - add r5, sp, #0x18 - str r0, [r4, #0x38] - ldmia r5!, {r0, r1} - add r2, #0x2c - stmia r2!, {r0, r1} - ldr r0, [r5] - str r0, [r2] - lsl r0, r3, #0xa - str r0, [r4, #0x50] - mov r0, #0x2d - lsl r0, r0, #0xc - str r0, [r4, #0x40] - mov r0, #3 - lsl r0, r0, #0x12 - str r0, [r4, #0x48] - lsl r0, r3, #0x11 - str r0, [r4, #0x4c] - mov r0, #0x2d - bl GF_CosDeg - ldr r2, [r4, #0x48] - asr r1, r2, #0xb - lsr r1, r1, #0x14 - add r1, r2, r1 - asr r1, r1, #0xc - mul r0, r1 - str r0, [r4, #0x14] - ldr r1, [r4, #0x40] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - lsl r0, r0, #4 - lsr r0, r0, #0x10 - bl GF_SinDeg - ldr r2, [r4, #0x48] - asr r1, r2, #0xb - lsr r1, r1, #0x14 - add r1, r2, r1 - asr r1, r1, #0xc - mul r0, r1 - str r0, [r4, #0x18] - ldr r1, [r4, #8] - ldr r0, [r4, #0x14] - add r0, r1, r0 - str r0, [sp, #0x24] - ldr r1, [r4, #0xc] - ldr r0, [r4, #0x18] - add r0, r1, r0 - str r0, [sp, #0x28] - ldr r0, [r4, #0x68] - add r1, sp, #0x24 - bl Sprite_SetMatrix - ldr r0, [r4, #0x68] - add r1, sp, #0x18 - bl Sprite_SetAffineScale - ldr r1, [r4, #0x38] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - lsl r0, r0, #4 - lsr r0, r0, #0x10 - bl GF_DegreeToSinCosIdx - add r1, r0, #0 - ldr r0, [r4, #0x68] - bl Sprite_SetAffineZRotation - ldr r0, [r4, #0x68] - mov r1, #0x84 - bl Sprite_SetDrawPriority - ldr r0, [r4, #0x68] - mov r1, #1 - bl Sprite_SetDrawFlag - ldr r0, [r4, #0x58] - ldr r1, [r4, #0x60] - bl ov02_0224B298 - str r0, [r4, #0x6c] - ldr r0, [r4, #0x5c] - mov r1, #4 - bl ov01_021FCD2C - ldr r2, _02248F80 ; =0xFFF88000 - mov r1, #1 - mov r3, #0xc - str r0, [r4, #0x70] - bl ov01_021FCD8C - add r1, sp, #0xc - mov r0, #0 - str r0, [r1] - str r0, [r1, #4] - ldr r3, _02248F84 ; =ov02_022533A8 - str r0, [r1, #8] - ldmia r3!, {r0, r1} - add r2, sp, #0 - stmia r2!, {r0, r1} - ldr r0, [r3] - mov r1, #2 - str r0, [r2] - ldr r4, [r4, #0x60] - add r0, r4, #0 - bl Sprite_SetAffineOverwriteMode - add r0, r4, #0 - add r1, sp, #0xc - bl Sprite_SetAffineMatrix - add r0, r4, #0 - add r1, sp, #0 - bl Sprite_SetAffineScale - mov r0, #0 - bl GF_DegreeToSinCosIdx - add r1, r0, #0 - add r0, r4, #0 - bl Sprite_SetAffineZRotation - add r0, r4, #0 - mov r1, #2 - bl Sprite_SetAnimCtrlSeq - bl ov02_022493FC - add sp, #0x30 - pop {r4, r5, r6, pc} - nop -_02248F74: .word ov02_0225339C -_02248F78: .word ov02_022533CC -_02248F7C: .word 0x0015E000 -_02248F80: .word 0xFFF88000 -_02248F84: .word ov02_022533A8 - thumb_func_end ov02_02248E20 - - thumb_func_start ov02_02248F88 -ov02_02248F88: ; 0x02248F88 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r5, r0, #0 - ldr r1, [r5, #0x48] - ldr r0, [r5, #0x4c] - ldr r6, [r5, #0x68] - ldr r4, [r5, #0x60] - sub r0, r1, r0 - str r0, [r5, #0x48] - bpl _02248FA0 - mov r0, #0 - str r0, [r5, #0x48] -_02248FA0: - mov r0, #2 - ldr r1, [r5, #0x4c] - lsl r0, r0, #0xa - cmp r1, r0 - ble _02248FB2 - mov r0, #7 - lsl r0, r0, #0xa - sub r0, r1, r0 - str r0, [r5, #0x4c] -_02248FB2: - mov r0, #1 - ldr r1, [r5, #0x4c] - lsl r0, r0, #0xc - cmp r1, r0 - bge _02248FBE - str r0, [r5, #0x4c] -_02248FBE: - mov r0, #0x2d - bl GF_CosDeg - ldr r2, [r5, #0x48] - asr r1, r2, #0xb - lsr r1, r1, #0x14 - add r1, r2, r1 - asr r1, r1, #0xc - mul r0, r1 - str r0, [r5, #0x14] - ldr r1, [r5, #0x40] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - lsl r0, r0, #4 - lsr r0, r0, #0x10 - bl GF_SinDeg - ldr r2, [r5, #0x48] - asr r1, r2, #0xb - lsr r1, r1, #0x14 - add r1, r2, r1 - asr r1, r1, #0xc - mul r0, r1 - str r0, [r5, #0x18] - ldr r1, [r5, #0x40] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - asr r0, r0, #0xc - cmp r0, #0x5a - bge _02249006 - mov r0, #1 - lsl r0, r0, #0xe - add r0, r1, r0 - str r0, [r5, #0x40] -_02249006: - ldr r1, [r5, #0x2c] - ldr r0, [r5, #0x50] - sub r1, r1, r0 - mov r0, #1 - lsl r0, r0, #0xc - str r1, [r5, #0x2c] - cmp r1, r0 - bge _02249018 - str r0, [r5, #0x2c] -_02249018: - ldr r1, [r5, #0x30] - ldr r0, [r5, #0x50] - sub r1, r1, r0 - mov r0, #1 - lsl r0, r0, #0xc - str r1, [r5, #0x30] - cmp r1, r0 - bge _0224902A - str r0, [r5, #0x30] -_0224902A: - add r1, r5, #0 - add r0, r6, #0 - add r1, #0x2c - bl Sprite_SetAffineScale - add r1, r5, #0 - add r0, r4, #0 - add r1, #0x2c - bl Sprite_SetAffineScale - ldr r1, [r5, #8] - ldr r0, [r5, #0x14] - add r0, r1, r0 - str r0, [sp] - ldr r1, [r5, #0xc] - ldr r0, [r5, #0x18] - add r0, r1, r0 - str r0, [sp, #4] - add r0, r6, #0 - add r1, sp, #0 - bl Sprite_SetMatrix - mov r0, #0x12 - ldr r1, [sp, #4] - lsl r0, r0, #0xc - sub r0, r1, r0 - str r0, [sp, #4] - add r0, r4, #0 - add r1, sp, #0 - bl Sprite_SetMatrix - ldr r0, [r5, #0x48] - cmp r0, #0 - bne _0224907A - mov r0, #0 - str r0, [r5, #4] - ldrb r0, [r5, #1] - add r0, r0, #1 - strb r0, [r5, #1] - b _02249080 -_0224907A: - ldr r0, [r5, #4] - add r0, r0, #1 - str r0, [r5, #4] -_02249080: - mov r0, #0 - add sp, #0xc - pop {r3, r4, r5, r6, pc} - .balign 4, 0 - thumb_func_end ov02_02248F88 - - thumb_func_start ov02_02249088 -ov02_02249088: ; 0x02249088 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x6c] - bl ov02_0224B314 - ldr r0, [r4, #0x70] - mov r1, #2 - mov r2, #0 - mov r3, #0xc - bl ov01_021FCD8C - mov r0, #1 - lsl r0, r0, #0xa - str r0, [r4, #0x50] - lsl r0, r0, #9 - str r0, [r4, #0x40] - mov r0, #0 - str r0, [r4, #0x48] - mov r0, #6 - lsl r0, r0, #0xa - str r0, [r4, #0x4c] - ldrb r0, [r4, #1] - add r0, r0, #1 - strb r0, [r4, #1] - mov r0, #1 - pop {r4, pc} - thumb_func_end ov02_02249088 - - thumb_func_start ov02_022490BC -ov02_022490BC: ; 0x022490BC - push {r4, r5, lr} - sub sp, #0xc - add r5, r0, #0 - ldr r1, [r5, #0x48] - ldr r0, [r5, #0x4c] - ldr r4, [r5, #0x68] - add r0, r1, r0 - str r0, [r5, #0x48] - mov r0, #1 - ldr r1, [r5, #0x4c] - lsl r0, r0, #0xc - add r2, r1, r0 - lsl r1, r0, #4 - str r2, [r5, #0x4c] - cmp r2, r1 - ble _022490E0 - lsl r0, r0, #4 - str r0, [r5, #0x4c] -_022490E0: - ldr r1, [r5, #0x40] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - lsl r0, r0, #4 - lsr r0, r0, #0x10 - bl GF_CosDeg - ldr r2, [r5, #0x48] - asr r1, r2, #0xb - lsr r1, r1, #0x14 - add r1, r2, r1 - asr r1, r1, #0xc - mul r0, r1 - str r0, [r5, #0x14] - mov r0, #0x80 - bl GF_SinDeg - ldr r2, [r5, #0x48] - asr r1, r2, #0xb - lsr r1, r1, #0x14 - add r1, r2, r1 - asr r1, r1, #0xc - mul r0, r1 - str r0, [r5, #0x18] - mov r0, #0xa - ldr r1, [r5, #0x40] - lsl r0, r0, #0x10 - cmp r1, r0 - bge _02249124 - mov r0, #1 - lsl r0, r0, #0xc - add r0, r1, r0 - str r0, [r5, #0x40] -_02249124: - mov r0, #2 - ldr r1, [r5, #0x38] - lsl r0, r0, #0xc - add r1, r1, r0 - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - lsl r0, r0, #4 - lsr r0, r0, #0x10 - str r1, [r5, #0x38] - bl GF_DegreeToSinCosIdx - add r1, r0, #0 - add r0, r4, #0 - bl Sprite_SetAffineZRotation - ldr r1, [r5, #0x2c] - ldr r0, [r5, #0x50] - add r1, r1, r0 - mov r0, #1 - lsl r0, r0, #0xc - str r1, [r5, #0x2c] - cmp r1, r0 - ble _02249156 - str r0, [r5, #0x2c] -_02249156: - ldr r1, [r5, #0x30] - ldr r0, [r5, #0x50] - add r1, r1, r0 - mov r0, #1 - lsl r0, r0, #0xc - str r1, [r5, #0x30] - cmp r1, r0 - ble _02249168 - str r0, [r5, #0x30] -_02249168: - add r1, r5, #0 - add r0, r4, #0 - add r1, #0x2c - bl Sprite_SetAffineScale - ldr r1, [r5, #8] - ldr r0, [r5, #0x14] - add r0, r1, r0 - str r0, [sp] - ldr r1, [r5, #0xc] - ldr r0, [r5, #0x18] - sub r0, r1, r0 - str r0, [sp, #4] - add r0, r4, #0 - add r1, sp, #0 - bl Sprite_SetMatrix - ldr r1, [sp, #4] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - asr r1, r0, #0xc - mov r0, #0xf - mvn r0, r0 - cmp r1, r0 - bgt _022491A2 - ldrb r0, [r5, #1] - add r0, r0, #1 - strb r0, [r5, #1] -_022491A2: - mov r0, #0 - add sp, #0xc - pop {r4, r5, pc} - thumb_func_end ov02_022490BC - - thumb_func_start ov02_022491A8 -ov02_022491A8: ; 0x022491A8 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x68] - mov r1, #0 - bl Sprite_SetDrawFlag - ldr r0, [r4, #0x60] - mov r1, #1 - bl Sprite_SetAnimCtrlSeq - mov r0, #0 - str r0, [r4, #4] - ldrb r0, [r4, #1] - add r0, r0, #1 - strb r0, [r4, #1] - mov r0, #1 - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_022491A8 - - thumb_func_start ov02_022491CC -ov02_022491CC: ; 0x022491CC - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - add r4, r0, #0 - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - cmp r0, #0x14 - bge _022491E2 - add sp, #0x18 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_022491E2: - ldr r3, _02249284 ; =ov02_022533D8 - add r2, sp, #0xc - ldmia r3!, {r0, r1} - add r6, r2, #0 - stmia r2!, {r0, r1} - ldr r0, [r3] - ldr r3, _02249288 ; =ov02_022533B4 - str r0, [r2] - add r2, sp, #0 - ldmia r3!, {r0, r1} - add r5, r2, #0 - stmia r2!, {r0, r1} - ldr r0, [r3] - mov r7, #0 - str r0, [r2] - add r2, r4, #0 - str r7, [r4, #4] - add r3, r6, #0 - ldmia r3!, {r0, r1} - add r2, #8 - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - str r7, [r4, #0x14] - str r7, [r4, #0x18] - str r7, [r4, #0x1c] - str r7, [r4, #0x38] - add r2, r4, #0 - ldmia r5!, {r0, r1} - add r2, #0x2c - stmia r2!, {r0, r1} - ldr r0, [r5] - mov r1, #2 - str r0, [r2] - lsl r1, r1, #8 - ldr r0, _0224928C ; =0x0013B000 - str r1, [r4, #0x50] - str r0, [r4, #0x40] - lsl r0, r1, #0xa - str r0, [r4, #0x48] - lsl r0, r1, #4 - str r0, [r4, #0x4c] - ldr r0, [r4, #0x68] - add r1, r6, #0 - bl Sprite_SetMatrix - ldr r0, [r4, #0x68] - add r1, sp, #0 - bl Sprite_SetAffineScale - ldr r1, [r4, #0x38] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - lsl r0, r0, #4 - lsr r0, r0, #0x10 - bl GF_DegreeToSinCosIdx - add r1, r0, #0 - ldr r0, [r4, #0x68] - bl Sprite_SetAffineZRotation - ldr r0, [r4, #0x68] - mov r1, #1 - bl Sprite_SetDrawFlag - ldr r0, [r4, #0x60] - mov r1, #6 - bl Sprite_SetAnimCtrlSeq - ldr r0, [r4, #0x60] - mov r1, #1 - bl Sprite_SetAnimActiveFlag - ldrb r0, [r4, #1] - add r0, r0, #1 - strb r0, [r4, #1] - mov r0, #1 - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - nop -_02249284: .word ov02_022533D8 -_02249288: .word ov02_022533B4 -_0224928C: .word 0x0013B000 - thumb_func_end ov02_022491CC - - thumb_func_start ov02_02249290 -ov02_02249290: ; 0x02249290 - push {r4, r5, lr} - sub sp, #0xc - add r5, r0, #0 - ldr r1, [r5, #0x48] - ldr r0, [r5, #0x4c] - ldr r4, [r5, #0x68] - sub r0, r1, r0 - str r0, [r5, #0x48] - mov r0, #1 - ldr r1, [r5, #0x4c] - lsl r0, r0, #0x10 - cmp r1, r0 - bge _022492B0 - lsr r0, r0, #3 - add r0, r1, r0 - str r0, [r5, #0x4c] -_022492B0: - ldr r0, [r5, #0x48] - cmp r0, #0 - bge _022492BA - mov r0, #0 - str r0, [r5, #0x48] -_022492BA: - ldr r0, _02249398 ; =0x0000013B - bl GF_CosDeg - ldr r2, [r5, #0x48] - asr r1, r2, #0xb - lsr r1, r1, #0x14 - add r1, r2, r1 - asr r1, r1, #0xc - mul r0, r1 - str r0, [r5, #0x14] - ldr r1, [r5, #0x40] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - lsl r0, r0, #4 - lsr r0, r0, #0x10 - bl GF_SinDeg - ldr r2, [r5, #0x48] - asr r1, r2, #0xb - lsr r1, r1, #0x14 - add r1, r2, r1 - asr r1, r1, #0xc - mul r0, r1 - str r0, [r5, #0x18] - ldr r1, [r5, #0x40] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - asr r0, r0, #0xc - cmp r0, #0xb4 - bge _02249302 - mov r0, #1 - lsl r0, r0, #0xe - sub r0, r1, r0 - str r0, [r5, #0x40] -_02249302: - ldr r1, [r5, #0x2c] - ldr r0, [r5, #0x50] - sub r1, r1, r0 - mov r0, #1 - lsl r0, r0, #0xa - str r1, [r5, #0x2c] - cmp r1, r0 - bge _02249314 - str r0, [r5, #0x2c] -_02249314: - ldr r1, [r5, #0x30] - ldr r0, [r5, #0x50] - sub r1, r1, r0 - mov r0, #1 - lsl r0, r0, #0xa - str r1, [r5, #0x30] - cmp r1, r0 - bge _02249326 - str r0, [r5, #0x30] -_02249326: - add r1, r5, #0 - add r0, r4, #0 - add r1, #0x2c - bl Sprite_SetAffineScale - mov r0, #6 - ldr r1, [r5, #0x38] - lsl r0, r0, #0xc - add r1, r1, r0 - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - asr r0, r0, #0xc - str r1, [r5, #0x38] - cmp r0, #0x3c - ble _0224934C - mov r0, #0xf - lsl r0, r0, #0xe - str r0, [r5, #0x38] -_0224934C: - ldr r1, [r5, #0x38] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - lsl r0, r0, #4 - lsr r0, r0, #0x10 - bl GF_DegreeToSinCosIdx - add r1, r0, #0 - add r0, r4, #0 - bl Sprite_SetAffineZRotation - ldr r1, [r5, #8] - ldr r0, [r5, #0x14] - add r0, r1, r0 - str r0, [sp] - ldr r1, [r5, #0xc] - ldr r0, [r5, #0x18] - add r0, r1, r0 - str r0, [sp, #4] - add r0, r4, #0 - add r1, sp, #0 - bl Sprite_SetMatrix - ldr r0, [r5, #0x48] - cmp r0, #0 - bgt _02249390 - add r0, r4, #0 - mov r1, #0 - bl Sprite_SetDrawFlag - ldrb r0, [r5, #1] - add r0, r0, #1 - strb r0, [r5, #1] -_02249390: - mov r0, #0 - add sp, #0xc - pop {r4, r5, pc} - nop -_02249398: .word 0x0000013B - thumb_func_end ov02_02249290 - - thumb_func_start ov02_0224939C -ov02_0224939C: ; 0x0224939C - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - cmp r0, #8 - bne _022493BA - ldr r0, [r4, #0x60] - mov r1, #1 - bl Sprite_SetAnimCtrlSeq - ldr r0, [r4, #0x5c] - mov r1, #0 - bl ov02_02249444 -_022493BA: - ldr r0, [r4, #4] - cmp r0, #0xa - bne _022493C8 - ldr r0, [r4, #0x60] - mov r1, #0 - bl Sprite_SetDrawFlag -_022493C8: - ldr r0, [r4, #4] - cmp r0, #0xf - ble _022493E6 - ldr r0, [r4, #0x70] - bl ov01_021FCD6C - cmp r0, #1 - bne _022493E6 - mov r0, #0 - str r0, [r4, #4] - ldrb r0, [r4, #1] - add r0, r0, #1 - strb r0, [r4, #1] - mov r0, #2 - strb r0, [r4, #2] -_022493E6: - mov r0, #0 - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_0224939C - - thumb_func_start ov02_022493EC -ov02_022493EC: ; 0x022493EC - mov r0, #0 - bx lr - thumb_func_end ov02_022493EC - - thumb_func_start ov02_022493F0 -ov02_022493F0: ; 0x022493F0 - ldr r3, _022493F8 ; =NARC_New - mov r0, #0x5d - mov r1, #4 - bx r3 - .balign 4, 0 -_022493F8: .word NARC_New - thumb_func_end ov02_022493F0 - - thumb_func_start ov02_022493FC -ov02_022493FC: ; 0x022493FC - push {lr} - sub sp, #0xc - mov r0, #6 - str r0, [sp] - mov r1, #1 - str r1, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - ldr r3, _0224941C ; =0x00007FFF - mov r0, #0 - add r2, r1, #0 - bl BeginNormalPaletteFade - add sp, #0xc - pop {pc} - nop -_0224941C: .word 0x00007FFF - thumb_func_end ov02_022493FC - - thumb_func_start ov02_02249420 -ov02_02249420: ; 0x02249420 - push {lr} - sub sp, #0xc - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - mov r0, #0 - ldr r3, _02249440 ; =0x00007FFF - add r1, r0, #0 - add r2, r0, #0 - bl BeginNormalPaletteFade - add sp, #0xc - pop {pc} - .balign 4, 0 -_02249440: .word 0x00007FFF - thumb_func_end ov02_02249420 - - thumb_func_start ov02_02249444 -ov02_02249444: ; 0x02249444 - push {r4, lr} - ldr r0, [r0, #0x40] - add r4, r1, #0 - bl PlayerAvatar_GetMapObject - add r1, r4, #0 - bl MapObject_SetVisible - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_02249444 - - thumb_func_start ov02_02249458 -ov02_02249458: ; 0x02249458 - push {r3, r4, r5, r6, r7, lr} - str r0, [sp] - add r5, r1, #0 - add r6, r2, #0 - add r7, r3, #0 - bl ov02_0224955C - add r4, r0, #0 - str r6, [r4, #0x5c] - strh r7, [r4, #0xc] - ldrh r0, [r4, #0xc] - strh r0, [r4, #0xe] - str r5, [r4, #0x20] - ldr r0, [r4, #0x60] - ldr r0, [r0, #0x40] - bl PlayerAvatar_GetMapObject - mov r1, #0x82 - lsl r1, r1, #2 - str r0, [r4, r1] - cmp r5, #0 - bne _02249490 - ldr r0, _022494B8 ; =ov02_02249584 - add r1, r4, #0 - mov r2, #0x86 - bl SysTask_CreateOnMainQueue - pop {r3, r4, r5, r6, r7, pc} -_02249490: - cmp r5, #2 - bne _022494AC - ldr r0, [sp] - bl FollowMon_GetMapObject - mov r1, #0x83 - lsl r1, r1, #2 - str r0, [r4, r1] - ldr r0, _022494BC ; =ov02_022499B8 - add r1, r4, #0 - mov r2, #0x86 - bl SysTask_CreateOnMainQueue - pop {r3, r4, r5, r6, r7, pc} -_022494AC: - ldr r0, _022494C0 ; =ov02_02249984 - add r1, r4, #0 - mov r2, #0x86 - bl SysTask_CreateOnMainQueue - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_022494B8: .word ov02_02249584 -_022494BC: .word ov02_022499B8 -_022494C0: .word ov02_02249984 - thumb_func_end ov02_02249458 - - thumb_func_start ov02_022494C4 -ov02_022494C4: ; 0x022494C4 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - add r5, r1, #0 - add r6, r2, #0 - add r7, r3, #0 - bl ov02_0224955C - add r4, r0, #0 - str r5, [r4, #0x5c] - mov r0, #0 - strh r0, [r4, #0xc] - mov r0, #2 - strh r0, [r4, #0xe] - mov r0, #3 - str r0, [r4, #0x20] - mov r0, #0x82 - lsl r0, r0, #2 - str r6, [r4, r0] - add r0, r0, #4 - str r7, [r4, r0] - ldr r0, [r4, #0x60] - ldr r0, [r0, #0x40] - bl PlayerAvatar_GetMapObject - add r1, sp, #0xc - bl MapObject_CopyPositionVector - mov r0, #0x82 - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0 - bl MapObject_CopyPositionVector - ldr r1, [sp] - ldr r0, [sp, #0xc] - sub r0, r1, r0 - mov r1, #2 - lsl r1, r1, #0xc - bl FX_Div - mov r1, #0xbb - lsl r1, r1, #2 - ldr r2, [r4, r1] - add r0, r2, r0 - str r0, [r4, r1] - ldr r2, [sp, #8] - ldr r0, [sp, #0x14] - add r1, #8 - sub r0, r2, r0 - str r0, [r4, r1] - ldr r0, _02249538 ; =ov02_022499B8 - add r1, r4, #0 - mov r2, #0x86 - bl SysTask_CreateOnMainQueue - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - nop -_02249538: .word ov02_022499B8 - thumb_func_end ov02_022494C4 - - thumb_func_start ov02_0224953C -ov02_0224953C: ; 0x0224953C - push {r3, lr} - bl SysTask_GetData - ldr r0, [r0, #4] - pop {r3, pc} - .balign 4, 0 - thumb_func_end ov02_0224953C - - thumb_func_start ov02_02249548 -ov02_02249548: ; 0x02249548 - push {r4, lr} - add r4, r0, #0 - bl SysTask_GetData - bl ov02_0224957C - add r0, r4, #0 - bl SysTask_Destroy - pop {r4, pc} - thumb_func_end ov02_02249548 - - thumb_func_start ov02_0224955C -ov02_0224955C: ; 0x0224955C - push {r3, r4, r5, lr} - mov r1, #0xbe - add r5, r0, #0 - mov r0, #4 - lsl r1, r1, #2 - bl Heap_AllocAtEnd - mov r2, #0xbe - mov r1, #0 - lsl r2, r2, #2 - add r4, r0, #0 - bl memset - str r5, [r4, #0x60] - add r0, r4, #0 - pop {r3, r4, r5, pc} - thumb_func_end ov02_0224955C - - thumb_func_start ov02_0224957C -ov02_0224957C: ; 0x0224957C - ldr r3, _02249580 ; =Heap_Free - bx r3 - .balign 4, 0 -_02249580: .word Heap_Free - thumb_func_end ov02_0224957C - - thumb_func_start ov02_02249584 -ov02_02249584: ; 0x02249584 - push {r3, r4, r5, lr} - ldr r4, _022495B4 ; =ov02_02253550 - add r5, r1, #0 -_0224958A: - ldr r1, [r5] - add r0, r5, #0 - lsl r1, r1, #2 - ldr r1, [r4, r1] - blx r1 - cmp r0, #1 - beq _0224958A - ldr r0, [r5, #0x10] - cmp r0, #1 - bne _022495B2 - mov r0, #0x1e - lsl r0, r0, #4 - ldr r0, [r5, r0] - cmp r0, #0 - beq _022495AC - bl sub_02068BAC -_022495AC: - add r0, r5, #0 - bl ov02_0224A32C -_022495B2: - pop {r3, r4, r5, pc} - .balign 4, 0 -_022495B4: .word ov02_02253550 - thumb_func_end ov02_02249584 - - thumb_func_start ov02_022495B8 -ov02_022495B8: ; 0x022495B8 - push {r4, lr} - add r4, r0, #0 - bl ov02_02249EC0 - add r0, r4, #0 - bl ov02_02249CF0 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - pop {r4, pc} - thumb_func_end ov02_022495B8 - - thumb_func_start ov02_022495D0 -ov02_022495D0: ; 0x022495D0 - push {r4, lr} - add r4, r0, #0 - bl ov02_02249F6C - add r0, r4, #0 - bl ov02_02249CF0 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - pop {r4, pc} - thumb_func_end ov02_022495D0 - - thumb_func_start ov02_022495E8 -ov02_022495E8: ; 0x022495E8 - push {r3, r4, r5, lr} - sub sp, #0x18 - add r4, r0, #0 - mov r0, #0x85 - lsl r0, r0, #2 - ldr r0, [r4, r0] - cmp r0, #0 - bne _022495FE - add sp, #0x18 - mov r0, #0 - pop {r3, r4, r5, pc} -_022495FE: - ldr r5, _02249650 ; =ov02_02253408 - add r3, sp, #0xc - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r5] - ldr r5, _02249654 ; =ov02_02253384 - str r0, [r3] - ldmia r5!, {r0, r1} - add r3, sp, #0 - stmia r3!, {r0, r1} - ldr r0, [r5] - add r1, r2, #0 - str r0, [r3] - add r0, r4, #0 - bl ov02_0224A418 - mov r1, #0x79 - lsl r1, r1, #2 - str r0, [r4, r1] - add r0, r4, #0 - add r1, sp, #0 - bl ov02_0224A9B8 - mov r1, #0x7a - lsl r1, r1, #2 - str r0, [r4, r1] - add r0, r4, #0 - mov r1, #1 - bl ov02_0224A9D8 - add r0, r4, #0 - bl ov02_02249D40 - mov r0, #1 - str r0, [r4, #0x10] - ldr r1, [r4] - add r1, r1, #1 - str r1, [r4] - add sp, #0x18 - pop {r3, r4, r5, pc} - .balign 4, 0 -_02249650: .word ov02_02253408 -_02249654: .word ov02_02253384 - thumb_func_end ov02_022495E8 - - thumb_func_start ov02_02249658 -ov02_02249658: ; 0x02249658 - push {r4, lr} - add r4, r0, #0 - bl ov02_0224B72C - mov r0, #0 - ldr r1, _0224968C ; =0xFFFC0000 - str r0, [r4, #0x2c] - str r1, [r4, #0x54] - mov r1, #0xfe - lsl r1, r1, #0xc - str r1, [r4, #0x44] - mov r1, #0xff - lsl r1, r1, #0xc - str r1, [r4, #0x48] - mov r1, #0x5f - lsl r1, r1, #0xc - str r1, [r4, #0x4c] - mov r1, #0x61 - lsl r1, r1, #0xc - str r1, [r4, #0x50] - mov r1, #1 - str r1, [r4, #0x2c] - ldr r1, [r4] - add r1, r1, #1 - str r1, [r4] - pop {r4, pc} - .balign 4, 0 -_0224968C: .word 0xFFFC0000 - thumb_func_end ov02_02249658 - - thumb_func_start ov02_02249690 -ov02_02249690: ; 0x02249690 - push {r3, r4, lr} - sub sp, #4 - add r4, r0, #0 - mov r2, #0 - str r2, [r4, #0x2c] - ldr r1, [r4, #0x44] - ldr r0, [r4, #0x54] - add r0, r1, r0 - str r0, [r4, #0x44] - cmp r0, #0 - bgt _022496B4 - mov r0, #2 - str r2, [r4, #0x44] - lsl r0, r0, #0xc - str r0, [r4, #0x54] - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] -_022496B4: - ldr r0, [r4, #0x50] - str r0, [sp] - ldr r1, [r4, #0x44] - ldr r2, [r4, #0x4c] - ldr r3, [r4, #0x48] - add r0, r4, #0 - bl ov02_0224A69C - mov r0, #1 - str r0, [r4, #0x2c] - mov r0, #0 - add sp, #4 - pop {r3, r4, pc} - .balign 4, 0 - thumb_func_end ov02_02249690 - - thumb_func_start ov02_022496D0 -ov02_022496D0: ; 0x022496D0 - push {r3, r4, lr} - sub sp, #4 - add r4, r0, #0 - mov r0, #0 - str r0, [r4, #0x2c] - ldr r1, [r4, #0x4c] - ldr r0, [r4, #0x54] - sub r0, r1, r0 - str r0, [r4, #0x4c] - ldr r1, [r4, #0x50] - ldr r0, [r4, #0x54] - add r0, r1, r0 - str r0, [r4, #0x50] - mov r0, #2 - ldr r1, [r4, #0x54] - lsl r0, r0, #0xc - add r2, r1, r0 - lsl r1, r0, #4 - str r2, [r4, #0x54] - cmp r2, r1 - ble _022496FE - lsl r0, r0, #4 - str r0, [r4, #0x54] -_022496FE: - mov r0, #0xe - ldr r1, [r4, #0x4c] - lsl r0, r0, #0xe - cmp r1, r0 - bge _0224970A - str r0, [r4, #0x4c] -_0224970A: - mov r0, #0x22 - ldr r1, [r4, #0x50] - lsl r0, r0, #0xe - cmp r1, r0 - ble _02249716 - str r0, [r4, #0x50] -_02249716: - ldr r0, [r4, #0x50] - str r0, [sp] - ldr r1, [r4, #0x44] - ldr r2, [r4, #0x4c] - ldr r3, [r4, #0x48] - add r0, r4, #0 - bl ov02_0224A69C - mov r0, #1 - str r0, [r4, #0x2c] - mov r0, #0xe - ldr r1, [r4, #0x4c] - lsl r0, r0, #0xe - cmp r1, r0 - bne _0224974E - mov r0, #0x22 - ldr r1, [r4, #0x50] - lsl r0, r0, #0xe - cmp r1, r0 - bne _0224974E - mov r0, #0x79 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl ov02_0224A450 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] -_0224974E: - mov r0, #0 - add sp, #4 - pop {r3, r4, pc} - thumb_func_end ov02_022496D0 - - thumb_func_start ov02_02249754 -ov02_02249754: ; 0x02249754 - ldr r1, [r0, #8] - add r1, r1, #1 - str r1, [r0, #8] - cmp r1, #0xf - blt _0224976C - mov r1, #0 - str r1, [r0, #8] - ldr r1, _02249770 ; =0xFFFC0000 - str r1, [r0, #0x58] - ldr r1, [r0] - add r1, r1, #1 - str r1, [r0] -_0224976C: - mov r0, #0 - bx lr - .balign 4, 0 -_02249770: .word 0xFFFC0000 - thumb_func_end ov02_02249754 - - thumb_func_start ov02_02249774 -ov02_02249774: ; 0x02249774 - push {r3, r4, lr} - sub sp, #0xc - add r4, r0, #0 - mov r0, #0x7a - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl Sprite_GetMatrixPtr - add r3, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #0 - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - ldr r1, [sp] - ldr r0, [r4, #0x58] - add r1, r1, r0 - mov r0, #0xa - lsl r0, r0, #0x10 - str r1, [sp] - cmp r1, r0 - bgt _022497AC - mov r0, #3 - lsl r0, r0, #0x12 - str r0, [sp] - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] -_022497AC: - mov r0, #0x7a - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0 - bl Sprite_SetMatrix - mov r0, #0 - add sp, #0xc - pop {r3, r4, pc} - .balign 4, 0 - thumb_func_end ov02_02249774 - - thumb_func_start ov02_022497C0 -ov02_022497C0: ; 0x022497C0 - push {r4, r5, lr} - sub sp, #0xc - add r4, r0, #0 - ldr r1, [r4, #0x58] - lsr r0, r1, #0x1f - add r0, r1, r0 - asr r1, r0, #1 - ldr r0, _02249834 ; =0xFFFFE000 - str r1, [r4, #0x58] - cmp r1, r0 - ble _02249802 - str r0, [r4, #0x58] - ldr r0, [r4] - mov r1, #5 - add r0, r0, #1 - str r0, [r4] - ldr r0, [r4, #0x5c] - mov r2, #0 - bl GetMonData - add r5, r0, #0 - ldr r0, [r4, #0x5c] - mov r1, #0x70 - mov r2, #0 - bl GetMonData - add r1, r0, #0 - lsl r0, r5, #0x10 - lsl r1, r1, #0x18 - lsr r0, r0, #0x10 - lsr r1, r1, #0x18 - bl PlayCry -_02249802: - mov r0, #0x7a - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl Sprite_GetMatrixPtr - add r5, r0, #0 - add r3, sp, #0 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r5] - str r0, [r3] - ldr r1, [sp] - ldr r0, [r4, #0x58] - add r0, r1, r0 - str r0, [sp] - mov r0, #0x7a - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, r2, #0 - bl Sprite_SetMatrix - mov r0, #0 - add sp, #0xc - pop {r4, r5, pc} - .balign 4, 0 -_02249834: .word 0xFFFFE000 - thumb_func_end ov02_022497C0 - - thumb_func_start ov02_02249838 -ov02_02249838: ; 0x02249838 - ldr r1, [r0, #8] - add r1, r1, #1 - str r1, [r0, #8] - cmp r1, #8 - blt _02249850 - mov r1, #0 - str r1, [r0, #8] - ldr r1, _02249854 ; =0xFFFFF000 - str r1, [r0, #0x58] - ldr r1, [r0] - add r1, r1, #1 - str r1, [r0] -_02249850: - mov r0, #0 - bx lr - .balign 4, 0 -_02249854: .word 0xFFFFF000 - thumb_func_end ov02_02249838 - - thumb_func_start ov02_02249858 -ov02_02249858: ; 0x02249858 - push {r4, r5, lr} - sub sp, #0xc - add r4, r0, #0 - ldr r0, [r4, #0x58] - lsl r1, r0, #1 - ldr r0, _022498B4 ; =0xFFFC0000 - str r1, [r4, #0x58] - cmp r1, r0 - bge _0224986C - str r0, [r4, #0x58] -_0224986C: - mov r0, #0x7a - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl Sprite_GetMatrixPtr - add r5, r0, #0 - add r3, sp, #0 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r5] - str r0, [r3] - ldr r1, [sp] - ldr r0, [r4, #0x58] - add r0, r1, r0 - str r0, [sp] - mov r0, #0x7a - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, r2, #0 - bl Sprite_SetMatrix - ldr r1, [sp] - ldr r0, _022498B8 ; =0xFFFD8000 - cmp r1, r0 - bgt _022498AC - mov r0, #1 - lsl r0, r0, #0xc - str r0, [r4, #0x54] - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] -_022498AC: - mov r0, #0 - add sp, #0xc - pop {r4, r5, pc} - nop -_022498B4: .word 0xFFFC0000 -_022498B8: .word 0xFFFD8000 - thumb_func_end ov02_02249858 - - thumb_func_start ov02_022498BC -ov02_022498BC: ; 0x022498BC - push {r3, r4, lr} - sub sp, #4 - add r4, r0, #0 - mov r0, #0 - str r0, [r4, #0x2c] - ldr r1, [r4, #0x4c] - ldr r0, [r4, #0x54] - add r0, r1, r0 - str r0, [r4, #0x4c] - ldr r1, [r4, #0x50] - ldr r0, [r4, #0x54] - sub r0, r1, r0 - str r0, [r4, #0x50] - mov r0, #1 - ldr r1, [r4, #0x54] - lsl r0, r0, #0xe - add r2, r1, r0 - lsl r1, r0, #2 - str r2, [r4, #0x54] - cmp r2, r1 - ble _022498EA - lsl r0, r0, #2 - str r0, [r4, #0x54] -_022498EA: - mov r0, #0x5f - ldr r1, [r4, #0x4c] - lsl r0, r0, #0xc - cmp r1, r0 - blt _022498F6 - str r0, [r4, #0x4c] -_022498F6: - mov r0, #0x61 - ldr r1, [r4, #0x50] - lsl r0, r0, #0xc - cmp r1, r0 - bgt _02249902 - str r0, [r4, #0x50] -_02249902: - ldr r0, [r4, #0x50] - str r0, [sp] - ldr r1, [r4, #0x44] - ldr r2, [r4, #0x4c] - ldr r3, [r4, #0x48] - add r0, r4, #0 - bl ov02_0224A69C - mov r0, #1 - str r0, [r4, #0x2c] - mov r0, #0x5f - ldr r1, [r4, #0x4c] - lsl r0, r0, #0xc - cmp r1, r0 - bne _0224993A - mov r0, #0x61 - ldr r1, [r4, #0x50] - lsl r0, r0, #0xc - cmp r1, r0 - bne _0224993A - add r0, r4, #0 - bl ov02_0224B768 - mov r0, #0x11 - str r0, [r4, #0x34] - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] -_0224993A: - mov r0, #0 - add sp, #4 - pop {r3, r4, pc} - thumb_func_end ov02_022498BC - - thumb_func_start ov02_02249940 -ov02_02249940: ; 0x02249940 - push {r4, lr} - add r4, r0, #0 - bl ov02_02249FD4 - mov r0, #0 - str r0, [r4, #0x10] - ldr r1, [r4] - add r1, r1, #1 - str r1, [r4] - pop {r4, pc} - thumb_func_end ov02_02249940 - - thumb_func_start ov02_02249954 -ov02_02249954: ; 0x02249954 - push {r4, lr} - add r4, r0, #0 - bl ov02_0224A028 - mov r0, #0 - str r0, [r4, #0x10] - ldr r1, [r4] - add r1, r1, #1 - str r1, [r4] - pop {r4, pc} - thumb_func_end ov02_02249954 - - thumb_func_start ov02_02249968 -ov02_02249968: ; 0x02249968 - push {r4, lr} - add r4, r0, #0 - bl ov02_0224A6D0 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_02249968 - - thumb_func_start ov02_0224997C -ov02_0224997C: ; 0x0224997C - mov r1, #1 - str r1, [r0, #4] - mov r0, #0 - bx lr - thumb_func_end ov02_0224997C - - thumb_func_start ov02_02249984 -ov02_02249984: ; 0x02249984 - push {r3, r4, r5, lr} - ldr r4, _022499B4 ; =ov02_02253588 - add r5, r1, #0 -_0224998A: - ldr r1, [r5] - add r0, r5, #0 - lsl r1, r1, #2 - ldr r1, [r4, r1] - blx r1 - cmp r0, #1 - beq _0224998A - ldr r0, [r5, #0x10] - cmp r0, #1 - bne _022499B2 - mov r0, #0x1e - lsl r0, r0, #4 - ldr r0, [r5, r0] - cmp r0, #0 - beq _022499AC - bl sub_02068BAC -_022499AC: - add r0, r5, #0 - bl ov02_0224A32C -_022499B2: - pop {r3, r4, r5, pc} - .balign 4, 0 -_022499B4: .word ov02_02253588 - thumb_func_end ov02_02249984 - - thumb_func_start ov02_022499B8 -ov02_022499B8: ; 0x022499B8 - push {r3, r4, r5, lr} - ldr r4, _022499E8 ; =ov02_022534F0 - add r5, r1, #0 -_022499BE: - ldr r1, [r5] - add r0, r5, #0 - lsl r1, r1, #2 - ldr r1, [r4, r1] - blx r1 - cmp r0, #1 - beq _022499BE - ldr r0, [r5, #0x10] - cmp r0, #1 - bne _022499E6 - mov r0, #0x1e - lsl r0, r0, #4 - ldr r0, [r5, r0] - cmp r0, #0 - beq _022499E0 - bl sub_02068BAC -_022499E0: - add r0, r5, #0 - bl ov02_0224A32C -_022499E6: - pop {r3, r4, r5, pc} - .balign 4, 0 -_022499E8: .word ov02_022534F0 - thumb_func_end ov02_022499B8 - - thumb_func_start ov02_022499EC -ov02_022499EC: ; 0x022499EC - push {r3, r4, r5, lr} - sub sp, #0x18 - add r4, r0, #0 - mov r0, #0x85 - lsl r0, r0, #2 - ldr r0, [r4, r0] - cmp r0, #0 - bne _02249A02 - add sp, #0x18 - mov r0, #0 - pop {r3, r4, r5, pc} -_02249A02: - ldr r5, _02249A54 ; =ov02_022533FC - add r3, sp, #0xc - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r5] - ldr r5, _02249A58 ; =ov02_02253414 - str r0, [r3] - ldmia r5!, {r0, r1} - add r3, sp, #0 - stmia r3!, {r0, r1} - ldr r0, [r5] - add r1, r2, #0 - str r0, [r3] - add r0, r4, #0 - bl ov02_0224A418 - mov r1, #0x79 - lsl r1, r1, #2 - str r0, [r4, r1] - add r0, r4, #0 - add r1, sp, #0 - bl ov02_0224A9B8 - mov r1, #0x7a - lsl r1, r1, #2 - str r0, [r4, r1] - add r0, r4, #0 - mov r1, #1 - bl ov02_0224A9D8 - add r0, r4, #0 - bl ov02_02249D40 - mov r0, #1 - str r0, [r4, #0x10] - ldr r1, [r4] - add r1, r1, #1 - str r1, [r4] - add sp, #0x18 - pop {r3, r4, r5, pc} - .balign 4, 0 -_02249A54: .word ov02_022533FC -_02249A58: .word ov02_02253414 - thumb_func_end ov02_022499EC - - thumb_func_start ov02_02249A5C -ov02_02249A5C: ; 0x02249A5C - push {r3, r4, r5, r6, lr} - sub sp, #0xc - mov r3, #0x85 - add r4, r0, #0 - lsl r3, r3, #2 - ldr r0, [r4, r3] - cmp r0, #0 - bne _02249A72 - add sp, #0xc - mov r0, #0 - pop {r3, r4, r5, r6, pc} -_02249A72: - ldr r6, _02249AC0 ; =ov02_02253348 - add r5, sp, #0 - ldmia r6!, {r0, r1} - add r2, r5, #0 - stmia r5!, {r0, r1} - ldr r0, [r6] - str r0, [r5] - add r0, r3, #0 - add r0, #0xd8 - ldr r1, [sp] - ldr r0, [r4, r0] - add r3, #0xe0 - add r0, r1, r0 - str r0, [sp] - ldr r1, [sp, #4] - ldr r0, [r4, r3] - add r0, r1, r0 - str r0, [sp, #4] - add r0, r4, #0 - add r1, r2, #0 - bl ov02_0224A418 - mov r1, #0x79 - lsl r1, r1, #2 - str r0, [r4, r1] - ldr r0, [r4, r1] - mov r1, #1 - bl Sprite_SetAnimCtrlSeq - add r0, r4, #0 - bl ov02_02249D40 - mov r0, #1 - str r0, [r4, #0x10] - ldr r1, [r4] - add r1, r1, #1 - str r1, [r4] - add sp, #0xc - pop {r3, r4, r5, r6, pc} - .balign 4, 0 -_02249AC0: .word ov02_02253348 - thumb_func_end ov02_02249A5C - - thumb_func_start ov02_02249AC4 -ov02_02249AC4: ; 0x02249AC4 - push {r4, lr} - add r4, r0, #0 - bl ov02_0224A8D4 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_02249AC4 - - thumb_func_start ov02_02249AD8 -ov02_02249AD8: ; 0x02249AD8 - push {r4, lr} - add r4, r0, #0 - bl ov02_0224A4D0 - add r0, r4, #0 - bl ov02_02249D18 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - pop {r4, pc} - thumb_func_end ov02_02249AD8 - - thumb_func_start ov02_02249AF0 -ov02_02249AF0: ; 0x02249AF0 - push {r4, lr} - mov r1, #0x85 - add r4, r0, #0 - lsl r1, r1, #2 - ldr r1, [r4, r1] - cmp r1, #0 - bne _02249B02 - mov r0, #0 - pop {r4, pc} -_02249B02: - bl ov02_02249D40 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #1 - pop {r4, pc} - thumb_func_end ov02_02249AF0 - - thumb_func_start ov02_02249B10 -ov02_02249B10: ; 0x02249B10 - push {r4, lr} - add r4, r0, #0 - bl ov02_0224AB58 - add r0, r4, #0 - bl ov02_0224AC38 - add r0, r4, #0 - bl ov02_0224A690 - add r0, r4, #0 - mov r1, #1 - bl ov02_0224B6B0 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_02249B10 - - thumb_func_start ov02_02249B38 -ov02_02249B38: ; 0x02249B38 - push {r4, lr} - add r4, r0, #0 - bl ov02_0224AB8C - cmp r0, #2 - beq _02249B48 - mov r0, #0 - pop {r4, pc} -_02249B48: - mov r0, #0x79 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl Sprite_SetAnimCtrlSeq - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_02249B38 - - thumb_func_start ov02_02249B60 -ov02_02249B60: ; 0x02249B60 - push {r3, lr} - ldr r1, [r0, #8] - add r1, r1, #1 - str r1, [r0, #8] - cmp r1, #0x14 - blt _02249B7A - mov r1, #0 - str r1, [r0, #8] - ldr r1, [r0] - add r1, r1, #1 - str r1, [r0] - bl ov02_0224ADF0 -_02249B7A: - mov r0, #1 - pop {r3, pc} - .balign 4, 0 - thumb_func_end ov02_02249B60 - - thumb_func_start ov02_02249B80 -ov02_02249B80: ; 0x02249B80 - push {r4, lr} - add r4, r0, #0 - ldr r1, [r4, #8] - add r1, r1, #1 - str r1, [r4, #8] - cmp r1, #0x14 - blt _02249BA2 - mov r1, #0 - str r1, [r4, #8] - ldr r1, [r4] - add r1, r1, #1 - str r1, [r4] - bl ov02_0224AB58 - add r0, r4, #0 - bl ov02_0224ADF0 -_02249BA2: - mov r0, #1 - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_02249B80 - - thumb_func_start ov02_02249BA8 -ov02_02249BA8: ; 0x02249BA8 - push {r4, lr} - add r4, r0, #0 - bl ov02_0224AB8C - cmp r0, #3 - beq _02249BB8 - mov r0, #0 - pop {r4, pc} -_02249BB8: - ldr r0, _02249BD4 ; =SEQ_SE_DP_FW019 - bl PlaySE - mov r0, #2 - lsl r0, r0, #0xa - str r0, [r4, #0x54] - mov r0, #2 - str r0, [r4, #0x14] - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #1 - pop {r4, pc} - nop -_02249BD4: .word SEQ_SE_DP_FW019 - thumb_func_end ov02_02249BA8 - - thumb_func_start ov02_02249BD8 -ov02_02249BD8: ; 0x02249BD8 - push {r3, r4, lr} - sub sp, #4 - add r4, r0, #0 - mov r0, #0 - str r0, [r4, #0x2c] - ldr r1, [r4, #0x4c] - ldr r0, [r4, #0x54] - add r0, r1, r0 - str r0, [r4, #0x4c] - ldr r1, [r4, #0x50] - ldr r0, [r4, #0x54] - sub r0, r1, r0 - str r0, [r4, #0x50] - mov r0, #2 - ldr r1, [r4, #0x54] - lsl r0, r0, #0xa - add r2, r1, r0 - lsl r1, r0, #5 - str r2, [r4, #0x54] - cmp r2, r1 - ble _02249C06 - lsl r0, r0, #5 - str r0, [r4, #0x54] -_02249C06: - mov r0, #0x5f - ldr r1, [r4, #0x4c] - lsl r0, r0, #0xc - cmp r1, r0 - blt _02249C12 - str r0, [r4, #0x4c] -_02249C12: - mov r0, #0x61 - ldr r1, [r4, #0x50] - lsl r0, r0, #0xc - cmp r1, r0 - bgt _02249C1E - str r0, [r4, #0x50] -_02249C1E: - ldr r0, [r4, #0x50] - str r0, [sp] - ldr r1, [r4, #0x44] - ldr r2, [r4, #0x4c] - ldr r3, [r4, #0x48] - add r0, r4, #0 - bl ov02_0224A69C - mov r0, #1 - str r0, [r4, #0x2c] - ldr r0, [r4, #0x18] - cmp r0, #0 - bne _02249C4A - add r0, r4, #0 - bl ov02_0224AB8C - cmp r0, #4 - bne _02249C4A - mov r0, #1 - str r0, [r4, #0x18] - bl ov02_02249420 -_02249C4A: - mov r0, #0x5f - ldr r1, [r4, #0x4c] - lsl r0, r0, #0xc - cmp r1, r0 - bne _02249C6C - mov r0, #0x61 - ldr r1, [r4, #0x50] - lsl r0, r0, #0xc - cmp r1, r0 - bne _02249C6C - mov r0, #0x11 - str r0, [r4, #0x34] - mov r0, #1 - str r0, [r4, #0x14] - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] -_02249C6C: - mov r0, #0 - add sp, #4 - pop {r3, r4, pc} - .balign 4, 0 - thumb_func_end ov02_02249BD8 - - thumb_func_start ov02_02249C74 -ov02_02249C74: ; 0x02249C74 - push {r4, lr} - add r4, r0, #0 - ldr r1, [r4, #0x20] - cmp r1, #3 - bne _02249C96 - bl ov02_0224AB8C - cmp r0, #2 - bne _02249C92 - add r0, r4, #0 - bl ov02_0224AB9C - ldr r0, [r4] - add r0, r0, #2 - str r0, [r4] -_02249C92: - mov r0, #0 - pop {r4, pc} -_02249C96: - ldr r1, [r4, #0x18] - cmp r1, #0 - bne _02249CAC - bl ov02_0224AB8C - cmp r0, #4 - bne _02249CAC - mov r0, #1 - str r0, [r4, #0x18] - bl ov02_02249420 -_02249CAC: - add r0, r4, #0 - bl ov02_0224AB8C - cmp r0, #2 - beq _02249CBA - mov r0, #0 - pop {r4, pc} -_02249CBA: - ldr r0, [r4, #0x18] - cmp r0, #0 - bne _02249CC8 - mov r0, #1 - str r0, [r4, #0x18] - bl ov02_02249420 -_02249CC8: - add r0, r4, #0 - bl ov02_0224AB9C - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - pop {r4, pc} - thumb_func_end ov02_02249C74 - - thumb_func_start ov02_02249CD8 -ov02_02249CD8: ; 0x02249CD8 - push {r4, lr} - add r4, r0, #0 - bl IsPaletteFadeFinished - cmp r0, #0 - beq _02249CEA - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] -_02249CEA: - mov r0, #0 - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_02249CD8 - - thumb_func_start ov02_02249CF0 -ov02_02249CF0: ; 0x02249CF0 - push {r4, lr} - add r4, r0, #0 - mov r0, #0x21 - mov r1, #0 - lsl r0, r0, #4 - str r1, [r4, r0] - add r0, r0, #4 - str r1, [r4, r0] - ldr r0, _02249D14 ; =ov02_02249D5C - add r1, r4, #0 - mov r2, #0x80 - bl SysTask_CreateOnVBlankQueue - mov r1, #0x22 - lsl r1, r1, #4 - str r0, [r4, r1] - pop {r4, pc} - nop -_02249D14: .word ov02_02249D5C - thumb_func_end ov02_02249CF0 - - thumb_func_start ov02_02249D18 -ov02_02249D18: ; 0x02249D18 - push {r4, lr} - add r4, r0, #0 - mov r0, #0x21 - mov r1, #0 - lsl r0, r0, #4 - str r1, [r4, r0] - add r0, r0, #4 - str r1, [r4, r0] - ldr r0, _02249D3C ; =ov02_02249E58 - add r1, r4, #0 - mov r2, #0x80 - bl SysTask_CreateOnVBlankQueue - mov r1, #0x22 - lsl r1, r1, #4 - str r0, [r4, r1] - pop {r4, pc} - nop -_02249D3C: .word ov02_02249E58 - thumb_func_end ov02_02249D18 - - thumb_func_start ov02_02249D40 -ov02_02249D40: ; 0x02249D40 - push {r4, lr} - add r4, r0, #0 - mov r0, #0x22 - lsl r0, r0, #4 - ldr r0, [r4, r0] - cmp r0, #0 - beq _02249D5A - bl SysTask_Destroy - mov r0, #0x22 - mov r1, #0 - lsl r0, r0, #4 - str r1, [r4, r0] -_02249D5A: - pop {r4, pc} - thumb_func_end ov02_02249D40 - - thumb_func_start ov02_02249D5C -ov02_02249D5C: ; 0x02249D5C - push {r3, r4, r5, r6, r7, lr} - mov r0, #0x21 - add r6, r1, #0 - lsl r0, r0, #4 - ldr r0, [r6, r0] - cmp r0, #0 - bne _02249DD2 - mov r7, #0x6b - mov r4, #0 - add r5, r6, #0 - lsl r7, r7, #2 -_02249D72: - ldr r0, [r5, r7] - cmp r0, #0 - beq _02249D7C - bl sub_0200ADA4 -_02249D7C: - add r4, r4, #1 - add r5, r5, #4 - cmp r4, #4 - blt _02249D72 - mov r7, #0x6f - mov r5, #0 - add r4, r6, #0 - lsl r7, r7, #2 -_02249D8C: - ldr r0, [r4, r7] - cmp r0, #0 - beq _02249D96 - bl sub_0200B00C -_02249D96: - add r5, r5, #1 - add r4, r4, #4 - cmp r5, #3 - blt _02249D8C - mov r0, #0x86 - lsl r0, r0, #2 - ldr r1, [r6, r0] - cmp r1, #0 - beq _02249DAE - add r0, r6, #0 - bl ov02_0224A834 -_02249DAE: - mov r0, #0x87 - lsl r0, r0, #2 - ldr r1, [r6, r0] - cmp r1, #0 - beq _02249DBE - add r0, r6, #0 - bl ov02_0224A88C -_02249DBE: - mov r0, #0x21 - lsl r0, r0, #4 - ldr r1, [r6, r0] - mov r2, #0x80 - add r1, r1, #1 - str r1, [r6, r0] - ldr r0, _02249DD4 ; =ov02_02249DD8 - add r1, r6, #0 - bl SysTask_CreateOnVWaitQueue -_02249DD2: - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_02249DD4: .word ov02_02249DD8 - thumb_func_end ov02_02249D5C - - thumb_func_start ov02_02249DD8 -ov02_02249DD8: ; 0x02249DD8 - push {r3, r4, r5, r6, r7, lr} - str r0, [sp] - mov r0, #0x21 - add r6, r1, #0 - lsl r0, r0, #4 - ldr r0, [r6, r0] - cmp r0, #1 - bne _02249E56 - mov r7, #0x6b - mov r4, #0 - add r5, r6, #0 - lsl r7, r7, #2 -_02249DF0: - ldr r0, [r5, r7] - cmp r0, #0 - beq _02249DFA - bl sub_0200A740 -_02249DFA: - add r4, r4, #1 - add r5, r5, #4 - cmp r4, #4 - blt _02249DF0 - mov r7, #0x6f - mov r5, #0 - add r4, r6, #0 - lsl r7, r7, #2 -_02249E0A: - ldr r0, [r4, r7] - cmp r0, #0 - beq _02249E14 - bl sub_0200A740 -_02249E14: - add r5, r5, #1 - add r4, r4, #4 - cmp r5, #3 - blt _02249E0A - mov r0, #0x86 - lsl r0, r0, #2 - ldr r0, [r6, r0] - cmp r0, #0 - beq _02249E32 - bl Heap_Free - mov r0, #0x86 - mov r1, #0 - lsl r0, r0, #2 - str r1, [r6, r0] -_02249E32: - mov r0, #0x87 - lsl r0, r0, #2 - ldr r0, [r6, r0] - cmp r0, #0 - beq _02249E48 - bl Heap_Free - mov r0, #0x87 - mov r1, #0 - lsl r0, r0, #2 - str r1, [r6, r0] -_02249E48: - mov r0, #0x85 - mov r1, #1 - lsl r0, r0, #2 - str r1, [r6, r0] - ldr r0, [sp] - bl SysTask_Destroy -_02249E56: - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov02_02249DD8 - - thumb_func_start ov02_02249E58 -ov02_02249E58: ; 0x02249E58 - push {r4, lr} - mov r0, #0x67 - add r4, r1, #0 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0 - bl SpriteResourceCollection_Find - mov r1, #0x21 - lsl r1, r1, #4 - ldr r1, [r4, r1] - cmp r1, #0 - bne _02249E8A - bl sub_0200ADA4 - ldr r0, _02249E8C ; =ov02_02249E90 - add r1, r4, #0 - mov r2, #0x80 - bl SysTask_CreateOnVWaitQueue - mov r0, #0x21 - lsl r0, r0, #4 - ldr r1, [r4, r0] - add r1, r1, #1 - str r1, [r4, r0] -_02249E8A: - pop {r4, pc} - .balign 4, 0 -_02249E8C: .word ov02_02249E90 - thumb_func_end ov02_02249E58 - - thumb_func_start ov02_02249E90 -ov02_02249E90: ; 0x02249E90 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #0x67 - add r4, r1, #0 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0 - bl SpriteResourceCollection_Find - mov r1, #0x21 - lsl r1, r1, #4 - ldr r1, [r4, r1] - cmp r1, #1 - bne _02249EBE - bl sub_0200A740 - mov r0, #0x85 - mov r1, #1 - lsl r0, r0, #2 - str r1, [r4, r0] - add r0, r5, #0 - bl SysTask_Destroy -_02249EBE: - pop {r3, r4, r5, pc} - thumb_func_end ov02_02249E90 - - thumb_func_start ov02_02249EC0 -ov02_02249EC0: ; 0x02249EC0 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl ov02_0224A074 - mov r2, #3 - mov r3, #1 - add r4, r0, #0 - lsl r2, r2, #0x12 - add r0, r5, #0 - mov r1, #0 - lsl r3, r3, #0xc - str r2, [sp] - bl ov02_0224A69C - add r0, r5, #0 - bl ov02_0224A648 - ldr r0, [r5, #0x60] - mov r1, #0 - ldr r0, [r0, #8] - bl GetBgPriority - strh r0, [r5, #0x24] - ldr r0, [r5, #0x60] - mov r1, #3 - ldr r0, [r0, #8] - bl GetBgPriority - strh r0, [r5, #0x26] - ldr r2, _02249F68 ; =0x0400000A - mov r1, #3 - ldrh r3, [r2] - mov r0, #1 - bic r3, r1 - orr r0, r3 - strh r0, [r2] - ldrh r0, [r2, #4] - bic r0, r1 - strh r0, [r2, #4] - mov r0, #8 - mov r1, #0 - bl GfGfx_EngineATogglePlanes - add r2, r5, #0 - add r0, r4, #0 -#ifdef HEARTGOLD - mov r1, #2 -#else - mov r1, #5 -#endif - add r2, #0x6c - bl ov02_0224A570 - ldr r0, [r5, #0x60] - add r3, r5, #0 - ldr r0, [r0, #8] - add r1, r4, #0 -#ifdef HEARTGOLD - mov r2, #0 -#else - mov r2, #3 -#endif - add r3, #0x68 - bl ov02_0224A598 - ldr r0, [r5, #0x60] - add r3, r5, #0 - ldr r0, [r0, #8] - add r1, r4, #0 -#ifdef HEARTGOLD - mov r2, #1 -#else - mov r2, #4 -#endif - add r3, #0x64 - bl ov02_0224A5D0 - add r0, r5, #0 - add r1, r4, #0 - bl ov02_0224A080 - add r0, r4, #0 - bl NARC_Delete - mov r0, #4 - mov r1, #0x20 - bl sub_020689C8 - mov r1, #0x1e - lsl r1, r1, #4 - str r0, [r5, r1] - mov r0, #8 - mov r1, #1 - bl GfGfx_EngineATogglePlanes - pop {r3, r4, r5, pc} - .balign 4, 0 -_02249F68: .word 0x0400000A - thumb_func_end ov02_02249EC0 - - thumb_func_start ov02_02249F6C -ov02_02249F6C: ; 0x02249F6C - push {r3, r4, r5, lr} - add r5, r0, #0 - bl ov02_0224A074 - add r4, r0, #0 - ldr r0, [r5, #0x60] - mov r1, #0 - ldr r0, [r0, #8] - bl GetBgPriority - strh r0, [r5, #0x24] - ldr r0, [r5, #0x60] - mov r1, #3 - ldr r0, [r0, #8] - bl GetBgPriority - strh r0, [r5, #0x26] - ldr r2, _02249FD0 ; =0x0400000A - mov r1, #3 - ldrh r3, [r2] - mov r0, #1 - bic r3, r1 - orr r0, r3 - strh r0, [r2] - ldrh r0, [r2, #4] - bic r0, r1 - strh r0, [r2, #4] - mov r0, #8 - mov r1, #0 - bl GfGfx_EngineATogglePlanes - add r0, r5, #0 - add r1, r4, #0 - bl ov02_0224A080 - add r0, r4, #0 - bl NARC_Delete - mov r0, #4 - mov r1, #0x20 - bl sub_020689C8 - mov r1, #0x1e - lsl r1, r1, #4 - str r0, [r5, r1] - mov r0, #8 - mov r1, #1 - bl GfGfx_EngineATogglePlanes - pop {r3, r4, r5, pc} - .balign 4, 0 -_02249FD0: .word 0x0400000A - thumb_func_end ov02_02249F6C - - thumb_func_start ov02_02249FD4 -ov02_02249FD4: ; 0x02249FD4 - push {r4, lr} - add r4, r0, #0 - mov r0, #8 - mov r1, #0 - bl GfGfx_EngineATogglePlanes - mov r0, #0x1e - lsl r0, r0, #4 - ldr r0, [r4, r0] - bl sub_020689F8 - ldr r0, [r4, #0x60] - ldr r0, [r0, #8] - bl ov02_0224A63C - add r0, r4, #0 - bl ov02_0224A288 - ldr r2, _0224A024 ; =0x04000008 - ldrh r1, [r4, #0x24] - ldrh r3, [r2] - mov r0, #3 - bic r3, r0 - orr r1, r3 - strh r1, [r2] - ldrh r1, [r2, #6] - bic r1, r0 - ldrh r0, [r4, #0x26] - orr r0, r1 - strh r0, [r2, #6] - mov r0, #0 - mov r1, #1 - bl sub_0205B4EC - mov r0, #8 - mov r1, #1 - bl GfGfx_EngineATogglePlanes - pop {r4, pc} - nop -_0224A024: .word 0x04000008 - thumb_func_end ov02_02249FD4 - - thumb_func_start ov02_0224A028 -ov02_0224A028: ; 0x0224A028 - push {r4, lr} - add r4, r0, #0 - mov r0, #8 - mov r1, #0 - bl GfGfx_EngineATogglePlanes - mov r0, #0x1e - lsl r0, r0, #4 - ldr r0, [r4, r0] - bl sub_020689F8 - add r0, r4, #0 - bl ov02_0224A288 - ldr r2, _0224A070 ; =0x04000008 - ldrh r1, [r4, #0x24] - ldrh r3, [r2] - mov r0, #3 - bic r3, r0 - orr r1, r3 - strh r1, [r2] - ldrh r1, [r2, #6] - bic r1, r0 - ldrh r0, [r4, #0x26] - orr r0, r1 - strh r0, [r2, #6] - mov r0, #0 - mov r1, #1 - bl sub_0205B4EC - mov r0, #8 - mov r1, #1 - bl GfGfx_EngineATogglePlanes - pop {r4, pc} - nop -_0224A070: .word 0x04000008 - thumb_func_end ov02_0224A028 - - thumb_func_start ov02_0224A074 -ov02_0224A074: ; 0x0224A074 - ldr r3, _0224A07C ; =NARC_New - mov r0, #0x5d - mov r1, #4 - bx r3 - .balign 4, 0 -_0224A07C: .word NARC_New - thumb_func_end ov02_0224A074 - - thumb_func_start ov02_0224A080 -ov02_0224A080: ; 0x0224A080 - push {r4, r5, r6, lr} - sub sp, #0x10 - add r6, r1, #0 - mov r1, #0x7e - add r5, r0, #0 - lsl r1, r1, #2 - add r1, r5, r1 - bl ov02_0224A7A8 - add r1, r5, #0 - mov r0, #0x20 - add r1, #0x74 - mov r2, #4 - bl G2dRenderer_Init - str r0, [r5, #0x70] - add r0, r5, #0 - mov r2, #2 - add r0, #0x74 - mov r1, #0 - lsl r2, r2, #0x14 - bl G2dRenderer_SetSubSurfaceCoords - mov r0, #4 - mov r1, #0 - add r2, r0, #0 - bl Create2DGfxResObjMan - mov r1, #0x67 - lsl r1, r1, #2 - str r0, [r5, r1] - mov r0, #3 - mov r1, #1 - mov r2, #4 - bl Create2DGfxResObjMan - mov r1, #0x1a - lsl r1, r1, #4 - str r0, [r5, r1] - mov r0, #4 - mov r1, #2 - add r2, r0, #0 - bl Create2DGfxResObjMan - mov r1, #0x69 - lsl r1, r1, #2 - str r0, [r5, r1] - mov r0, #2 - mov r1, #3 - mov r2, #4 - bl Create2DGfxResObjMan - mov r1, #0x6a - lsl r1, r1, #2 - str r0, [r5, r1] - mov r0, #1 - str r0, [sp] - str r0, [sp, #4] - mov r0, #4 - sub r1, #0xc - str r0, [sp, #8] - ldr r0, [r5, r1] - add r1, r6, #0 - mov r2, #0xe - mov r3, #0 - bl AddCharResObjFromOpenNarc - mov r1, #0x6b - lsl r1, r1, #2 - str r0, [r5, r1] - mov r0, #2 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - ldrh r2, [r5, #0xe] - sub r1, #0x10 - ldr r0, [r5, r1] - lsl r3, r2, #1 - ldr r2, _0224A278 ; =ov02_02253304 - add r1, r6, #0 - ldrh r2, [r2, r3] - mov r3, #0 - bl AddCharResObjFromOpenNarc - mov r1, #0x1b - lsl r1, r1, #4 - str r0, [r5, r1] - add r0, r5, #0 - add r1, r6, #0 - bl ov02_0224A810 - mov r1, #0x6d - lsl r1, r1, #2 - str r0, [r5, r1] - mov r4, #0 - str r4, [sp] - mov r0, #1 - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #4 - sub r1, #0x14 - str r0, [sp, #0xc] - ldr r0, [r5, r1] - add r1, r6, #0 - mov r2, #6 - add r3, r4, #0 - bl AddPlttResObjFromOpenNarc - mov r1, #0x6f - lsl r1, r1, #2 - str r0, [r5, r1] - ldrh r2, [r5, #0xe] - add r4, r4, #1 - cmp r2, #0 - beq _0224A196 - mov r0, #1 - sub r2, r2, #1 - str r0, [sp] - lsl r3, r2, #1 - ldr r2, _0224A27C ; =ov02_022532FC - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #4 - ldrh r2, [r2, r3] - sub r1, #0x1c - str r0, [sp, #0xc] - ldr r0, [r5, r1] - add r1, r6, #0 - mov r3, #0 - bl AddPlttResObjFromOpenNarc - lsl r1, r4, #2 - add r2, r5, r1 - mov r1, #0x6f - lsl r1, r1, #2 - str r0, [r2, r1] - add r4, r4, #1 -_0224A196: - add r0, r5, #0 - add r1, r6, #0 - bl ov02_0224A868 - lsl r1, r4, #2 - add r2, r5, r1 - mov r1, #0x6f - lsl r1, r1, #2 - str r0, [r2, r1] - mov r0, #1 - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - mov r0, #4 - sub r1, #0x18 - str r0, [sp, #8] - ldr r0, [r5, r1] - add r1, r6, #0 - mov r2, #0xf - mov r3, #0 - bl AddCellOrAnimResObjFromOpenNarc - mov r1, #0x72 - lsl r1, r1, #2 - str r0, [r5, r1] - mov r0, #2 - str r0, [sp] - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - ldrh r2, [r5, #0xe] - sub r1, #0x24 - ldr r0, [r5, r1] - lsl r3, r2, #1 - ldr r2, _0224A280 ; =ov02_02253310 - add r1, r6, #0 - ldrh r2, [r2, r3] - mov r3, #0 - bl AddCellOrAnimResObjFromOpenNarc - mov r1, #0x73 - lsl r1, r1, #2 - str r0, [r5, r1] - mov r0, #3 - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - mov r0, #4 - sub r1, #0x28 - str r0, [sp, #8] - ldr r0, [r5, r1] - add r1, r6, #0 - mov r2, #0xa - mov r3, #0 - bl AddCellOrAnimResObjFromOpenNarc - mov r1, #0x1d - lsl r1, r1, #4 - str r0, [r5, r1] - mov r3, #0 - str r3, [sp] - mov r0, #3 - str r0, [sp, #4] - mov r0, #4 - sub r1, #0x28 - str r0, [sp, #8] - ldr r0, [r5, r1] - add r1, r6, #0 - mov r2, #0x10 - bl AddCellOrAnimResObjFromOpenNarc - mov r1, #0x76 - lsl r1, r1, #2 - str r0, [r5, r1] - mov r0, #1 - str r0, [sp] - mov r0, #3 - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - ldrh r2, [r5, #0xe] - sub r1, #0x30 - ldr r0, [r5, r1] - lsl r3, r2, #1 - ldr r2, _0224A284 ; =ov02_0225330A - add r1, r6, #0 - ldrh r2, [r2, r3] - mov r3, #0 - bl AddCellOrAnimResObjFromOpenNarc - mov r1, #0x77 - lsl r1, r1, #2 - str r0, [r5, r1] - add r1, #0x1c - ldr r0, [r5, #0x5c] - add r1, r5, r1 - mov r2, #4 - bl ov02_0224A7B8 - mov r1, #0x86 - lsl r1, r1, #2 - str r0, [r5, r1] - sub r1, #0x20 - add r0, r5, r1 - mov r1, #4 - bl ov02_0224A800 - mov r1, #0x87 - lsl r1, r1, #2 - str r0, [r5, r1] - add sp, #0x10 - pop {r4, r5, r6, pc} - nop -_0224A278: .word ov02_02253304 -_0224A27C: .word ov02_022532FC -_0224A280: .word ov02_02253310 -_0224A284: .word ov02_0225330A - thumb_func_end ov02_0224A080 - - thumb_func_start ov02_0224A288 -ov02_0224A288: ; 0x0224A288 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - mov r7, #0x6b - mov r4, #0 - add r5, r6, #0 - lsl r7, r7, #2 -_0224A294: - ldr r0, [r5, r7] - cmp r0, #0 - beq _0224A29E - bl sub_0200AEB0 -_0224A29E: - add r4, r4, #1 - add r5, r5, #4 - cmp r4, #4 - blt _0224A294 - mov r7, #0x6f - mov r5, #0 - add r4, r6, #0 - lsl r7, r7, #2 -_0224A2AE: - ldr r0, [r4, r7] - cmp r0, #0 - beq _0224A2B8 - bl sub_0200B0A8 -_0224A2B8: - add r5, r5, #1 - add r4, r4, #4 - cmp r5, #3 - blt _0224A2AE - mov r7, #0x72 - mov r5, #0 - add r4, r6, #0 - lsl r7, r7, #2 -_0224A2C8: - ldr r0, [r4, r7] - cmp r0, #0 - beq _0224A2D2 - bl sub_0200A740 -_0224A2D2: - add r5, r5, #1 - add r4, r4, #4 - cmp r5, #4 - blt _0224A2C8 - mov r7, #0x76 - mov r5, #0 - add r4, r6, #0 - lsl r7, r7, #2 -_0224A2E2: - ldr r0, [r4, r7] - cmp r0, #0 - beq _0224A2EC - bl sub_0200A740 -_0224A2EC: - add r5, r5, #1 - add r4, r4, #4 - cmp r5, #2 - blt _0224A2E2 - mov r0, #0x67 - lsl r0, r0, #2 - ldr r0, [r6, r0] - bl Destroy2DGfxResObjMan - mov r0, #0x1a - lsl r0, r0, #4 - ldr r0, [r6, r0] - bl Destroy2DGfxResObjMan - mov r0, #0x69 - lsl r0, r0, #2 - ldr r0, [r6, r0] - bl Destroy2DGfxResObjMan - mov r0, #0x6a - lsl r0, r0, #2 - ldr r0, [r6, r0] - bl Destroy2DGfxResObjMan - ldr r0, [r6, #0x70] - bl SpriteList_DeleteAllSprites - ldr r0, [r6, #0x70] - bl SpriteList_Delete - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_0224A288 - - thumb_func_start ov02_0224A32C -ov02_0224A32C: ; 0x0224A32C - push {r3, lr} - ldr r0, [r0, #0x70] - cmp r0, #0 - beq _0224A338 - bl SpriteList_RenderAndAnimateSprites -_0224A338: - pop {r3, pc} - .balign 4, 0 - thumb_func_end ov02_0224A32C - - thumb_func_start ov02_0224A33C -ov02_0224A33C: ; 0x0224A33C - push {r4, r5, r6, lr} - sub sp, #0x70 - add r5, r0, #0 - ldr r0, [sp, #0x84] - add r4, r1, #0 - add r1, r2, #0 - add r2, r3, #0 - cmp r0, #4 - bne _0224A384 - mov r0, #0 - mvn r0, r0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0 - mov r6, #0x67 - ldr r3, [sp, #0x88] - str r0, [sp, #0xc] - lsl r6, r6, #2 - str r3, [sp, #0x10] - ldr r3, [r5, r6] - str r3, [sp, #0x14] - add r3, r6, #4 - ldr r3, [r5, r3] - add r6, #8 - str r3, [sp, #0x18] - ldr r3, [r5, r6] - str r3, [sp, #0x1c] - str r0, [sp, #0x20] - str r0, [sp, #0x24] - str r0, [sp, #0x28] - ldr r3, [sp, #0x80] - add r0, sp, #0x4c - bl CreateSpriteResourcesHeader - b _0224A3BE -_0224A384: - str r0, [sp] - mov r0, #0 - mvn r0, r0 - str r0, [sp, #4] - str r0, [sp, #8] - mov r3, #0 - ldr r0, [sp, #0x88] - str r3, [sp, #0xc] - str r0, [sp, #0x10] - mov r0, #0x67 - lsl r0, r0, #2 - ldr r6, [r5, r0] - str r6, [sp, #0x14] - add r6, r0, #4 - ldr r6, [r5, r6] - str r6, [sp, #0x18] - add r6, r0, #0 - add r6, #8 - ldr r6, [r5, r6] - add r0, #0xc - str r6, [sp, #0x1c] - ldr r0, [r5, r0] - str r0, [sp, #0x20] - str r3, [sp, #0x24] - str r3, [sp, #0x28] - ldr r3, [sp, #0x80] - add r0, sp, #0x4c - bl CreateSpriteResourcesHeader -_0224A3BE: - ldr r0, [r5, #0x70] - add r2, sp, #0x34 - str r0, [sp, #0x2c] - add r0, sp, #0x4c - str r0, [sp, #0x30] - ldmia r4!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r4] - str r0, [r2] - ldr r0, [sp, #0x8c] - str r0, [sp, #0x40] - mov r0, #1 - str r0, [sp, #0x44] - mov r0, #4 - str r0, [sp, #0x48] - add r0, sp, #0x2c - bl Sprite_Create - add r4, r0, #0 - bne _0224A3EA - bl GF_AssertFail -_0224A3EA: - add r0, r4, #0 - add sp, #0x70 - pop {r4, r5, r6, pc} - thumb_func_end ov02_0224A33C - - thumb_func_start ov02_0224A3F0 -ov02_0224A3F0: ; 0x0224A3F0 - push {r3, r4, r5, lr} - sub sp, #0x10 - mov r5, #1 - add r4, r3, #0 - str r5, [sp] - mov r3, #0 - str r3, [sp, #4] - str r3, [sp, #8] - str r2, [sp, #0xc] - add r2, r5, #0 - bl ov02_0224A33C - add r1, r4, #0 - add r5, r0, #0 - bl Sprite_SetAnimCtrlSeq - add r0, r5, #0 - add sp, #0x10 - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end ov02_0224A3F0 - - thumb_func_start ov02_0224A418 -ov02_0224A418: ; 0x0224A418 - push {r4, lr} - sub sp, #0x10 - ldrh r2, [r0, #0xe] - mov r3, #0 - cmp r2, #0 - beq _0224A426 - mov r3, #1 -_0224A426: - mov r2, #2 - str r2, [sp] - mov r4, #1 - str r4, [sp, #4] - mov r4, #0 - str r4, [sp, #8] - mov r4, #0x83 - str r4, [sp, #0xc] - bl ov02_0224A33C - add r4, r0, #0 - mov r1, #0 - bl Sprite_SetDrawFlag - add r0, r4, #0 - mov r1, #6 - bl Sprite_SetAnimCtrlSeq - add r0, r4, #0 - add sp, #0x10 - pop {r4, pc} - thumb_func_end ov02_0224A418 - - thumb_func_start ov02_0224A450 -ov02_0224A450: ; 0x0224A450 - push {r4, lr} - mov r1, #1 - add r4, r0, #0 - bl Sprite_SetAnimActiveFlag - mov r1, #1 - add r0, r4, #0 - lsl r1, r1, #0xc - bl Sprite_SetAnimSpeed - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_0224A450 - - thumb_func_start ov02_0224A468 -ov02_0224A468: ; 0x0224A468 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x28 - add r4, r0, #0 - add r0, sp, #0x1c - mov r7, #0 - str r7, [r0] - str r7, [r0, #4] - add r6, r2, #0 - ldr r5, _0224A4CC ; =ov02_02253390 - add r3, r1, #0 - str r7, [r0, #8] - ldmia r5!, {r0, r1} - add r2, sp, #0x10 - stmia r2!, {r0, r1} - ldr r0, [r5] - add r1, r3, #0 - str r0, [r2] - str r7, [sp] - sub r0, r7, #1 - str r0, [sp, #4] - str r7, [sp, #8] - add r0, r4, #0 - add r2, r7, #0 - add r3, r7, #0 - str r6, [sp, #0xc] - bl ov02_0224A33C - add r4, r0, #0 - mov r1, #2 - bl Sprite_SetAffineOverwriteMode - add r0, r4, #0 - add r1, sp, #0x1c - bl Sprite_SetAffineMatrix - add r0, r4, #0 - add r1, sp, #0x10 - bl Sprite_SetAffineScale - add r0, r7, #0 - bl GF_DegreeToSinCosIdx - add r1, r0, #0 - add r0, r4, #0 - bl Sprite_SetAffineZRotation - add r0, r4, #0 - add sp, #0x28 - pop {r3, r4, r5, r6, r7, pc} - nop -_0224A4CC: .word ov02_02253390 - thumb_func_end ov02_0224A468 - - thumb_func_start ov02_0224A4D0 -ov02_0224A4D0: ; 0x0224A4D0 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r4, r0, #0 - bl ov02_0224A074 - add r6, r0, #0 - mov r0, #0x6b - mov r5, #0 - add r2, r4, #0 - lsl r0, r0, #2 -_0224A4E4: - ldr r1, [r2, r0] - cmp r1, #0 - bne _0224A510 - mov r3, #0 - str r3, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - mov r0, #0x67 - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, r6, #0 - mov r2, #0xb - bl AddCharResObjFromOpenNarc - lsl r1, r5, #2 - add r2, r4, r1 - mov r1, #0x6b - lsl r1, r1, #2 - str r0, [r2, r1] - b _0224A518 -_0224A510: - add r5, r5, #1 - add r2, r2, #4 - cmp r5, #4 - blt _0224A4E4 -_0224A518: - cmp r5, #4 - blt _0224A520 - bl GF_AssertFail -_0224A520: - mov r0, #0x72 - mov r5, #0 - add r2, r4, #0 - lsl r0, r0, #2 -_0224A528: - ldr r1, [r2, r0] - cmp r1, #0 - bne _0224A554 - mov r3, #0 - str r3, [sp] - mov r0, #2 - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - mov r0, #0x69 - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, r6, #0 - mov r2, #0xc - bl AddCellOrAnimResObjFromOpenNarc - lsl r1, r5, #2 - add r2, r4, r1 - mov r1, #0x72 - lsl r1, r1, #2 - str r0, [r2, r1] - b _0224A55C -_0224A554: - add r5, r5, #1 - add r2, r2, #4 - cmp r5, #4 - blt _0224A528 -_0224A55C: - cmp r5, #4 - blt _0224A564 - bl GF_AssertFail -_0224A564: - add r0, r6, #0 - bl NARC_Delete - add sp, #0xc - pop {r3, r4, r5, r6, pc} - .balign 4, 0 - thumb_func_end ov02_0224A4D0 - - thumb_func_start ov02_0224A570 -ov02_0224A570: ; 0x0224A570 - push {r3, r4, r5, lr} - add r5, r2, #0 - mov r2, #4 - bl NARC_AllocAndReadWholeMember - add r1, r5, #0 - add r4, r0, #0 - bl NNS_G2dGetUnpackedPaletteData - ldr r1, [r5] - mov r0, #3 - ldr r1, [r1, #0xc] - mov r2, #0x20 - lsl r3, r0, #7 - bl BG_LoadPlttData - add r0, r4, #0 - bl Heap_Free - pop {r3, r4, r5, pc} - thumb_func_end ov02_0224A570 - - thumb_func_start ov02_0224A598 -ov02_0224A598: ; 0x0224A598 - push {r3, r4, r5, r6, lr} - sub sp, #4 - add r5, r0, #0 - add r0, r1, #0 - add r1, r2, #0 - add r4, r3, #0 - mov r2, #4 - bl NARC_AllocAndReadWholeMember - add r1, r4, #0 - add r6, r0, #0 - bl NNS_G2dGetUnpackedCharacterData - ldr r3, [r4] - mov r0, #0 - str r0, [sp] - ldr r2, [r3, #0x14] - ldr r3, [r3, #0x10] - add r0, r5, #0 - mov r1, #3 - bl BG_LoadCharTilesData - add r0, r6, #0 - bl Heap_Free - add sp, #4 - pop {r3, r4, r5, r6, pc} - .balign 4, 0 - thumb_func_end ov02_0224A598 - - thumb_func_start ov02_0224A5D0 -ov02_0224A5D0: ; 0x0224A5D0 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r7, r2, #0 - add r6, r1, #0 - mov r2, #0 - add r4, r3, #0 - mov r1, #3 - add r3, r2, #0 - add r5, r0, #0 - bl BgSetPosTextAndCommit - mov r1, #3 - add r0, r5, #0 - add r2, r1, #0 - mov r3, #0 - bl BgSetPosTextAndCommit - add r0, r6, #0 - add r1, r7, #0 - mov r2, #4 - bl NARC_AllocAndReadWholeMember - add r1, r4, #0 - add r6, r0, #0 - bl NNS_G2dGetUnpackedScreenData - ldr r3, [r4] - add r0, r5, #0 - add r2, r3, #0 - ldr r3, [r3, #8] - mov r1, #3 - add r2, #0xc - bl BG_LoadScreenTilemapData - mov r0, #0x20 - str r0, [sp] - str r0, [sp, #4] - mov r0, #0xc - mov r2, #0 - str r0, [sp, #8] - add r0, r5, #0 - mov r1, #3 - add r3, r2, #0 - bl BgTilemapRectChangePalette - add r0, r5, #0 - mov r1, #3 - bl BgCommitTilemapBufferToVram - add r0, r6, #0 - bl Heap_Free - add sp, #0xc - pop {r4, r5, r6, r7, pc} - thumb_func_end ov02_0224A5D0 - - thumb_func_start ov02_0224A63C -ov02_0224A63C: ; 0x0224A63C - ldr r3, _0224A644 ; =BgClearTilemapBufferAndCommit - mov r1, #3 - bx r3 - nop -_0224A644: .word BgClearTilemapBufferAndCommit - thumb_func_end ov02_0224A63C - - thumb_func_start ov02_0224A648 -ov02_0224A648: ; 0x0224A648 - push {r4, lr} - add r4, r0, #0 - bl ov02_0224A6A8 - mov r0, #0 - str r0, [r4, #0x2c] - add r0, r4, #0 - bl ov02_0224A674 - add r0, r4, #0 - bl ov02_0224A67C - add r0, r4, #0 - bl ov02_0224A66C - mov r0, #1 - str r0, [r4, #0x2c] - pop {r4, pc} - thumb_func_end ov02_0224A648 - - thumb_func_start ov02_0224A66C -ov02_0224A66C: ; 0x0224A66C - mov r1, #1 - str r1, [r0, #0x30] - bx lr - .balign 4, 0 - thumb_func_end ov02_0224A66C - - thumb_func_start ov02_0224A674 -ov02_0224A674: ; 0x0224A674 - mov r1, #0 - str r1, [r0, #0x30] - bx lr - .balign 4, 0 - thumb_func_end ov02_0224A674 - - thumb_func_start ov02_0224A67C -ov02_0224A67C: ; 0x0224A67C - mov r1, #0x18 - str r1, [r0, #0x34] - mov r1, #0 - str r1, [r0, #0x38] - mov r1, #0x17 - str r1, [r0, #0x3c] - mov r1, #1 - str r1, [r0, #0x40] - bx lr - .balign 4, 0 - thumb_func_end ov02_0224A67C - - thumb_func_start ov02_0224A690 -ov02_0224A690: ; 0x0224A690 - mov r1, #0x17 - str r1, [r0, #0x3c] - mov r1, #1 - str r1, [r0, #0x40] - bx lr - .balign 4, 0 - thumb_func_end ov02_0224A690 - - thumb_func_start ov02_0224A69C -ov02_0224A69C: ; 0x0224A69C - str r1, [r0, #0x44] - str r3, [r0, #0x48] - ldr r1, [sp] - str r2, [r0, #0x4c] - str r1, [r0, #0x50] - bx lr - thumb_func_end ov02_0224A69C - - thumb_func_start ov02_0224A6A8 -ov02_0224A6A8: ; 0x0224A6A8 - push {r4, lr} - add r4, r0, #0 - mov r0, #0x89 - lsl r0, r0, #2 - ldr r0, [r4, r0] - cmp r0, #0 - beq _0224A6BA - bl GF_AssertFail -_0224A6BA: - ldr r0, _0224A6CC ; =ov02_0224A700 - add r1, r4, #0 - mov r2, #0x81 - bl SysTask_CreateOnVBlankQueue - mov r1, #0x89 - lsl r1, r1, #2 - str r0, [r4, r1] - pop {r4, pc} - .balign 4, 0 -_0224A6CC: .word ov02_0224A700 - thumb_func_end ov02_0224A6A8 - - thumb_func_start ov02_0224A6D0 -ov02_0224A6D0: ; 0x0224A6D0 - push {r4, lr} - add r4, r0, #0 - mov r0, #0x89 - lsl r0, r0, #2 - ldr r0, [r4, r0] - cmp r0, #0 - bne _0224A6E2 - bl GF_AssertFail -_0224A6E2: - mov r0, #0x89 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl SysTask_Destroy - mov r2, #1 - lsl r2, r2, #0x1a - ldr r1, [r2] - ldr r0, _0224A6FC ; =0xFFFF1FFF - and r0, r1 - str r0, [r2] - pop {r4, pc} - nop -_0224A6FC: .word 0xFFFF1FFF - thumb_func_end ov02_0224A6D0 - - thumb_func_start ov02_0224A700 -ov02_0224A700: ; 0x0224A700 - push {r3, r4, r5, r6} - ldr r0, [r1, #0x2c] - cmp r0, #0 - beq _0224A796 - mov r3, #1 - lsl r3, r3, #0x1a - ldr r2, [r3] - ldr r0, _0224A79C ; =0xFFFF1FFF - and r2, r0 - ldr r0, [r1, #0x30] - lsl r0, r0, #0xd - orr r0, r2 - str r0, [r3] - add r3, #0x48 - ldrh r2, [r3] - mov r0, #0x3f - bic r2, r0 - ldr r0, [r1, #0x34] - orr r2, r0 - ldr r0, [r1, #0x38] - cmp r0, #0 - beq _0224A730 - mov r0, #0x20 - orr r2, r0 -_0224A730: - ldr r0, _0224A7A0 ; =0x04000048 - strh r2, [r0] - ldrh r2, [r0, #2] - mov r0, #0x3f - bic r2, r0 - ldr r0, [r1, #0x3c] - orr r2, r0 - ldr r0, [r1, #0x40] - cmp r0, #0 - beq _0224A748 - mov r0, #0x20 - orr r2, r0 -_0224A748: - ldr r5, _0224A7A4 ; =0x0400004A - strh r2, [r5] - ldr r2, [r1, #0x50] - ldr r6, [r1, #0x48] - asr r0, r2, #0xb - lsr r0, r0, #0x14 - add r0, r2, r0 - ldr r2, [r1, #0x4c] - asr r4, r0, #0xc - asr r0, r2, #0xb - lsr r0, r0, #0x14 - add r0, r2, r0 - ldr r2, [r1, #0x44] - asr r3, r0, #0xc - asr r0, r2, #0xb - lsr r0, r0, #0x14 - asr r1, r6, #0xb - add r0, r2, r0 - lsr r1, r1, #0x14 - asr r0, r0, #0xc - add r1, r6, r1 - lsl r2, r0, #8 - mov r0, #0xff - asr r1, r1, #0xc - lsl r0, r0, #8 - lsl r1, r1, #0x18 - and r2, r0 - lsr r1, r1, #0x18 - orr r2, r1 - add r1, r5, #0 - sub r1, #0xa - strh r2, [r1] - lsl r1, r3, #8 - and r1, r0 - lsl r0, r4, #0x18 - lsr r0, r0, #0x18 - orr r1, r0 - sub r0, r5, #6 - strh r1, [r0] -_0224A796: - pop {r3, r4, r5, r6} - bx lr - nop -_0224A79C: .word 0xFFFF1FFF -_0224A7A0: .word 0x04000048 -_0224A7A4: .word 0x0400004A - thumb_func_end ov02_0224A700 - - thumb_func_start ov02_0224A7A8 -ov02_0224A7A8: ; 0x0224A7A8 - ldr r3, _0224A7B4 ; =GetPokemonSpriteCharAndPlttNarcIds - add r2, r0, #0 - add r0, r1, #0 - ldr r1, [r2, #0x5c] - mov r2, #2 - bx r3 - .balign 4, 0 -_0224A7B4: .word GetPokemonSpriteCharAndPlttNarcIds - thumb_func_end ov02_0224A7A8 - - thumb_func_start ov02_0224A7B8 -ov02_0224A7B8: ; 0x0224A7B8 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r5, r1, #0 - mov r1, #0x32 - add r6, r0, #0 - mov r0, #4 - lsl r1, r1, #6 - add r7, r2, #0 - bl Heap_Alloc - add r4, r0, #0 - bne _0224A7D4 - bl GF_AssertFail -_0224A7D4: - mov r1, #0 - add r0, r6, #0 - add r2, r1, #0 - bl GetMonData - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - mov r0, #2 - str r0, [sp, #8] - ldrh r0, [r5, #6] - add r2, r7, #0 - add r3, r4, #0 - str r0, [sp, #0xc] - ldrh r0, [r5] - ldrh r1, [r5, #2] - bl sub_02014540 - add r0, r4, #0 - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_0224A7B8 - - thumb_func_start ov02_0224A800 -ov02_0224A800: ; 0x0224A800 - add r3, r0, #0 - add r2, r1, #0 - ldrh r0, [r3] - ldrh r1, [r3, #4] - ldr r3, _0224A80C ; =sub_02014450 - bx r3 - .balign 4, 0 -_0224A80C: .word sub_02014450 - thumb_func_end ov02_0224A800 - - thumb_func_start ov02_0224A810 -ov02_0224A810: ; 0x0224A810 - push {lr} - sub sp, #0xc - mov r2, #3 - str r2, [sp] - mov r2, #1 - str r2, [sp, #4] - mov r2, #4 - str r2, [sp, #8] - mov r2, #0x67 - lsl r2, r2, #2 - ldr r0, [r0, r2] - mov r2, #9 - mov r3, #0 - bl AddCharResObjFromOpenNarc - add sp, #0xc - pop {pc} - .balign 4, 0 - thumb_func_end ov02_0224A810 - - thumb_func_start ov02_0224A834 -ov02_0224A834: ; 0x0224A834 - push {r3, r4, r5, lr} - add r4, r1, #0 - mov r1, #0x67 - lsl r1, r1, #2 - ldr r0, [r0, r1] - mov r1, #3 - bl SpriteResourceCollection_Find - bl sub_0200AF00 - mov r1, #1 - bl NNS_G2dGetImageLocation - mov r1, #0x32 - add r5, r0, #0 - add r0, r4, #0 - lsl r1, r1, #6 - bl DC_FlushRange - mov r2, #0x32 - add r0, r4, #0 - add r1, r5, #0 - lsl r2, r2, #6 - bl GX_LoadOBJ - pop {r3, r4, r5, pc} - thumb_func_end ov02_0224A834 - - thumb_func_start ov02_0224A868 -ov02_0224A868: ; 0x0224A868 - push {r3, lr} - sub sp, #0x10 - mov r2, #3 - str r2, [sp] - mov r2, #1 - str r2, [sp, #4] - str r2, [sp, #8] - mov r2, #4 - str r2, [sp, #0xc] - mov r2, #0x1a - lsl r2, r2, #4 - ldr r0, [r0, r2] - mov r2, #6 - mov r3, #0 - bl AddPlttResObjFromOpenNarc - add sp, #0x10 - pop {r3, pc} - thumb_func_end ov02_0224A868 - - thumb_func_start ov02_0224A88C -ov02_0224A88C: ; 0x0224A88C - push {r4, r5, r6, lr} - add r5, r0, #0 - mov r0, #0x67 - lsl r0, r0, #2 - add r4, r1, #0 - ldr r0, [r5, r0] - mov r1, #3 - bl SpriteResourceCollection_Find - bl sub_0200AF00 - add r6, r0, #0 - mov r0, #0x1a - lsl r0, r0, #4 - ldr r0, [r5, r0] - mov r1, #3 - bl SpriteResourceCollection_Find - add r1, r6, #0 - bl SpriteTransfer_GetPaletteProxy - mov r1, #1 - bl NNS_G2dGetImagePaletteLocation - add r5, r0, #0 - add r0, r4, #0 - mov r1, #0x20 - bl DC_FlushRange - add r0, r4, #0 - add r1, r5, #0 - mov r2, #0x20 - bl GX_LoadOBJPltt - pop {r4, r5, r6, pc} - .balign 4, 0 - thumb_func_end ov02_0224A88C - - thumb_func_start ov02_0224A8D4 -ov02_0224A8D4: ; 0x0224A8D4 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #0x67 - lsl r0, r0, #2 - ldr r0, [r5, r0] - mov r1, #3 - bl SpriteResourceCollection_Find - add r4, r0, #0 - bl sub_0200AEB0 - mov r0, #0x67 - lsl r0, r0, #2 - ldr r0, [r5, r0] - add r1, r4, #0 - bl DestroySingle2DGfxResObj - mov r1, #0x6b - mov r0, #0 - add r3, r5, #0 - lsl r1, r1, #2 -_0224A8FE: - ldr r2, [r3, r1] - cmp r2, r4 - bne _0224A912 - lsl r1, r0, #2 - add r2, r5, r1 - mov r1, #0x6b - mov r3, #0 - lsl r1, r1, #2 - str r3, [r2, r1] - b _0224A91A -_0224A912: - add r0, r0, #1 - add r3, r3, #4 - cmp r0, #4 - blt _0224A8FE -_0224A91A: - cmp r0, #4 - blt _0224A922 - bl GF_AssertFail -_0224A922: - mov r0, #0x1a - lsl r0, r0, #4 - ldr r0, [r5, r0] - mov r1, #3 - bl SpriteResourceCollection_Find - add r4, r0, #0 - bl sub_0200B0A8 - mov r0, #0x1a - lsl r0, r0, #4 - ldr r0, [r5, r0] - add r1, r4, #0 - bl DestroySingle2DGfxResObj - mov r1, #0x6f - mov r0, #0 - add r3, r5, #0 - lsl r1, r1, #2 -_0224A948: - ldr r2, [r3, r1] - cmp r2, r4 - bne _0224A95C - lsl r1, r0, #2 - add r2, r5, r1 - mov r1, #0x6f - mov r3, #0 - lsl r1, r1, #2 - str r3, [r2, r1] - b _0224A964 -_0224A95C: - add r0, r0, #1 - add r3, r3, #4 - cmp r0, #3 - blt _0224A948 -_0224A964: - cmp r0, #3 - blt _0224A96C - bl GF_AssertFail -_0224A96C: - mov r0, #0x69 - lsl r0, r0, #2 - ldr r0, [r5, r0] - mov r1, #3 - bl SpriteResourceCollection_Find - add r4, r0, #0 - bl sub_0200A740 - mov r0, #0x69 - lsl r0, r0, #2 - ldr r0, [r5, r0] - add r1, r4, #0 - bl DestroySingle2DGfxResObj - mov r1, #0x72 - mov r0, #0 - add r3, r5, #0 - lsl r1, r1, #2 -_0224A992: - ldr r2, [r3, r1] - cmp r2, r4 - bne _0224A9A6 - lsl r1, r0, #2 - add r2, r5, r1 - mov r1, #0x72 - mov r3, #0 - lsl r1, r1, #2 - str r3, [r2, r1] - b _0224A9AE -_0224A9A6: - add r0, r0, #1 - add r3, r3, #4 - cmp r0, #4 - blt _0224A992 -_0224A9AE: - cmp r0, #4 - blt _0224A9B6 - bl GF_AssertFail -_0224A9B6: - pop {r3, r4, r5, pc} - thumb_func_end ov02_0224A8D4 - - thumb_func_start ov02_0224A9B8 -ov02_0224A9B8: ; 0x0224A9B8 - push {r3, lr} - sub sp, #0x10 - mov r2, #3 - str r2, [sp] - sub r3, r2, #4 - str r3, [sp, #4] - mov r3, #0 - str r3, [sp, #8] - mov r3, #0x81 - str r3, [sp, #0xc] - add r3, r2, #0 - bl ov02_0224A33C - add sp, #0x10 - pop {r3, pc} - .balign 4, 0 - thumb_func_end ov02_0224A9B8 - - thumb_func_start ov02_0224A9D8 -ov02_0224A9D8: ; 0x0224A9D8 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x28 - add r5, r0, #0 - mov r0, #2 - ldr r4, _0224AA40 ; =ov02_022535E4 - add r6, r1, #0 - str r0, [r5, #0x14] - mov r7, #0 -_0224A9E8: - ldr r0, [r4] - add r1, sp, #0x1c - str r0, [sp, #0x1c] - ldr r0, [r4, #4] - add r2, sp, #0x10 - str r0, [sp, #0x20] - mov r0, #0 - str r0, [sp, #0x24] - ldr r0, [r4, #8] - str r0, [sp, #0x10] - mov r0, #0 - str r0, [sp, #0x14] - str r0, [sp, #0x18] - ldr r0, [r4, #0xc] - str r0, [sp, #8] - ldr r0, [r4, #0x10] - ldr r3, [sp, #8] - str r0, [sp] - str r0, [sp, #0xc] - str r6, [sp, #4] - add r0, r5, #0 - bl ov02_0224AA44 - mov r0, #1 - ldr r1, [sp, #0x1c] - lsl r0, r0, #0x14 - add r0, r1, r0 - str r0, [sp, #0x1c] - ldr r0, [sp, #0xc] - ldr r3, [sp, #8] - str r0, [sp] - add r0, r5, #0 - add r1, sp, #0x1c - add r2, sp, #0x10 - str r6, [sp, #4] - bl ov02_0224AA44 - add r7, r7, #1 - add r4, #0x14 - cmp r7, #0xd - blt _0224A9E8 - add sp, #0x28 - pop {r3, r4, r5, r6, r7, pc} - nop -_0224AA40: .word ov02_022535E4 - thumb_func_end ov02_0224A9D8 - - thumb_func_start ov02_0224AA44 -ov02_0224AA44: ; 0x0224AA44 - push {r3, r4, r5, lr} - sub sp, #0x20 - add r5, r0, #0 - ldr r0, [sp, #0x34] - str r3, [sp, #8] - str r5, [sp, #0x10] - add r4, r1, #0 - str r0, [sp, #0xc] - ldmia r2!, {r0, r1} - add r3, sp, #0x14 - stmia r3!, {r0, r1} - ldr r0, [r2] - ldr r1, _0224AA7C ; =ov02_02253468 - str r0, [r3] - add r0, sp, #8 - str r0, [sp] - mov r0, #0x85 - str r0, [sp, #4] - mov r0, #0x1e - lsl r0, r0, #4 - ldr r0, [r5, r0] - ldr r3, [sp, #0x30] - add r2, r4, #0 - bl sub_02068B0C - add sp, #0x20 - pop {r3, r4, r5, pc} - nop -_0224AA7C: .word ov02_02253468 - thumb_func_end ov02_0224AA44 - - thumb_func_start ov02_0224AA80 -ov02_0224AA80: ; 0x0224AA80 - push {r4, r5, lr} - sub sp, #0xc - add r4, r1, #0 - add r5, r0, #0 - bl sub_02068D98 - add r2, r4, #0 - add r3, r0, #0 - add r2, #0xc - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - add r0, r5, #0 - bl sub_02068D90 - str r0, [r4, #4] - add r0, r5, #0 - add r1, sp, #0 - bl sub_02068DB8 - ldr r0, [r4, #0x14] - ldr r2, [r4, #0xc] - ldr r3, [r4, #4] - add r1, sp, #0 - bl ov02_0224A3F0 - mov r1, #0 - str r0, [r4, #8] - bl Sprite_SetDrawFlag - mov r0, #1 - add sp, #0xc - pop {r4, r5, pc} - thumb_func_end ov02_0224AA80 - - thumb_func_start ov02_0224AAC8 -ov02_0224AAC8: ; 0x0224AAC8 - ldr r3, _0224AAD0 ; =Sprite_Delete - ldr r0, [r1, #8] - bx r3 - nop -_0224AAD0: .word Sprite_Delete - thumb_func_end ov02_0224AAC8 - - thumb_func_start ov02_0224AAD4 -ov02_0224AAD4: ; 0x0224AAD4 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r4, r1, #0 - add r1, sp, #0 - add r5, r0, #0 - bl sub_02068DB8 - ldr r1, [sp] - ldr r0, [r4, #0x18] - add r0, r1, r0 - lsr r2, r0, #0x1f - lsl r1, r0, #0xb - str r0, [sp] - sub r1, r1, r2 - mov r0, #0xb - ror r1, r0 - add r0, r2, r1 - str r0, [sp] - add r0, r5, #0 - add r1, sp, #0 - bl sub_02068DA8 - ldr r0, [r4, #8] - add r1, sp, #0 - bl Sprite_SetMatrix - ldr r0, [r4, #0x10] - cmp r0, #1 - bne _0224AB4E - ldr r3, [r4, #0x14] - ldr r0, [r3, #0x14] - cmp r0, #2 - bne _0224AB42 - ldr r2, [r3, #0x4c] - ldr r0, [r3, #0x50] - mov r3, #2 - ldr r6, [sp, #4] - lsl r3, r3, #0xc - sub r5, r6, r3 - mov r1, #0 - cmp r5, r2 - blt _0224AB38 - cmp r5, r0 - bgt _0224AB38 - add r3, r6, r3 - cmp r3, r2 - blt _0224AB38 - cmp r3, r0 - bgt _0224AB38 - mov r1, #1 -_0224AB38: - ldr r0, [r4, #8] - bl Sprite_SetDrawFlag - add sp, #0xc - pop {r3, r4, r5, r6, pc} -_0224AB42: - cmp r0, #1 - bne _0224AB4E - ldr r0, [r4, #8] - mov r1, #0 - bl Sprite_SetDrawFlag -_0224AB4E: - add sp, #0xc - pop {r3, r4, r5, r6, pc} - .balign 4, 0 - thumb_func_end ov02_0224AAD4 - - thumb_func_start ov02_0224AB54 -ov02_0224AB54: ; 0x0224AB54 - bx lr - .balign 4, 0 - thumb_func_end ov02_0224AB54 - - thumb_func_start ov02_0224AB58 -ov02_0224AB58: ; 0x0224AB58 - push {r4, lr} - sub sp, #0x18 - add r2, sp, #0xc - mov r3, #0 - add r4, r0, #0 - str r3, [r2] - str r3, [r2, #4] - str r3, [r2, #8] - str r4, [sp, #8] - add r0, sp, #8 - str r0, [sp] - mov r0, #0x82 - str r0, [sp, #4] - mov r0, #0x1e - lsl r0, r0, #4 - ldr r0, [r4, r0] - ldr r1, _0224AB88 ; =ov02_0225347C - bl sub_02068B0C - mov r1, #0x7b - lsl r1, r1, #2 - str r0, [r4, r1] - add sp, #0x18 - pop {r4, pc} - .balign 4, 0 -_0224AB88: .word ov02_0225347C - thumb_func_end ov02_0224AB58 - - thumb_func_start ov02_0224AB8C -ov02_0224AB8C: ; 0x0224AB8C - push {r3, lr} - mov r1, #0x7b - lsl r1, r1, #2 - ldr r0, [r0, r1] - bl sub_02068D74 - ldrb r0, [r0, #2] - pop {r3, pc} - thumb_func_end ov02_0224AB8C - - thumb_func_start ov02_0224AB9C -ov02_0224AB9C: ; 0x0224AB9C - push {r3, r4, r5, lr} - add r4, r0, #0 - mov r0, #0x7b - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl sub_02068D74 - add r5, r0, #0 - ldr r0, [r5, #0x60] - cmp r0, #0 - beq _0224ABB6 - bl sub_02068B48 -_0224ABB6: - ldr r0, [r5, #0x64] - cmp r0, #0 - beq _0224ABC0 - bl ov01_021FCD78 -_0224ABC0: - mov r0, #0x7b - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl sub_02068B48 - pop {r3, r4, r5, pc} - thumb_func_end ov02_0224AB9C - - thumb_func_start ov02_0224ABCC -ov02_0224ABCC: ; 0x0224ABCC - push {r4, r5, lr} - sub sp, #0xc - add r5, r0, #0 - add r4, r1, #0 - bl sub_02068D98 - ldr r0, [r0] - add r1, sp, #0 - str r0, [r4, #0x5c] - add r0, r5, #0 - bl sub_02068DB8 - mov r2, #0 - ldr r0, [r4, #0x5c] - add r1, sp, #0 - add r3, r2, #0 - bl ov02_0224A468 - str r0, [r4, #0x58] - mov r0, #1 - add sp, #0xc - pop {r4, r5, pc} - thumb_func_end ov02_0224ABCC - - thumb_func_start ov02_0224ABF8 -ov02_0224ABF8: ; 0x0224ABF8 - ldr r3, _0224AC00 ; =Sprite_Delete - ldr r0, [r1, #0x58] - bx r3 - nop -_0224AC00: .word Sprite_Delete - thumb_func_end ov02_0224ABF8 - - thumb_func_start ov02_0224AC04 -ov02_0224AC04: ; 0x0224AC04 - push {r3, r4, r5, lr} - add r5, r1, #0 - ldrb r0, [r5] - lsl r1, r0, #2 - ldr r0, _0224AC20 ; =ov02_022533C0 - ldr r4, [r0, r1] -_0224AC10: - ldrb r1, [r5, #1] - add r0, r5, #0 - lsl r1, r1, #2 - ldr r1, [r4, r1] - blx r1 - cmp r0, #1 - beq _0224AC10 - pop {r3, r4, r5, pc} - .balign 4, 0 -_0224AC20: .word ov02_022533C0 - thumb_func_end ov02_0224AC04 - - thumb_func_start ov02_0224AC24 -ov02_0224AC24: ; 0x0224AC24 - bx lr - .balign 4, 0 - thumb_func_end ov02_0224AC24 - - thumb_func_start ov02_0224AC28 -ov02_0224AC28: ; 0x0224AC28 - push {r3, lr} - mov r1, #0 - strb r1, [r0, #2] - ldr r0, [r0, #0x58] - bl Sprite_SetDrawFlag - mov r0, #0 - pop {r3, pc} - thumb_func_end ov02_0224AC28 - - thumb_func_start ov02_0224AC38 -ov02_0224AC38: ; 0x0224AC38 - push {r4, r5, r6, lr} - sub sp, #0x18 - ldr r4, _0224ACD8 ; =ov02_022533E4 - add r2, r0, #0 - ldmia r4!, {r0, r1} - add r3, sp, #0xc - stmia r3!, {r0, r1} - ldr r0, [r4] - ldr r4, _0224ACDC ; =ov02_022533F0 - str r0, [r3] - ldmia r4!, {r0, r1} - add r3, sp, #0 - stmia r3!, {r0, r1} - ldr r0, [r4] - str r0, [r3] - mov r0, #0x7b - lsl r0, r0, #2 - ldr r0, [r2, r0] - bl sub_02068D74 - add r4, r0, #0 - mov r3, #1 - add r5, r4, #0 - strb r3, [r4] - mov r2, #0 - strb r2, [r4, #1] - strb r2, [r4, #2] - add r6, sp, #0xc - ldmia r6!, {r0, r1} - add r5, #8 - stmia r5!, {r0, r1} - ldr r0, [r6] - add r6, sp, #0 - str r0, [r5] - str r2, [r4, #0x14] - str r2, [r4, #0x18] - mov r0, #0xf - add r5, r4, #0 - str r2, [r4, #0x1c] - lsl r0, r0, #0xe - str r0, [r4, #0x38] - ldmia r6!, {r0, r1} - add r5, #0x2c - stmia r5!, {r0, r1} - ldr r0, [r6] - add r1, sp, #0xc - str r0, [r5] - lsl r0, r3, #9 - str r0, [r4, #0x50] - mov r0, #0x2d - lsl r0, r0, #0xe - str r0, [r4, #0x40] - str r2, [r4, #0x48] - lsl r0, r3, #0xd - str r0, [r4, #0x4c] - ldr r0, [r4, #0x58] - bl Sprite_SetMatrix - ldr r0, [r4, #0x58] - add r1, sp, #0 - bl Sprite_SetAffineScale - ldr r1, [r4, #0x38] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - lsl r0, r0, #4 - lsr r0, r0, #0x10 - bl GF_DegreeToSinCosIdx - add r1, r0, #0 - ldr r0, [r4, #0x58] - bl Sprite_SetAffineZRotation - ldr r0, [r4, #0x58] - mov r1, #1 - bl Sprite_SetDrawFlag - add sp, #0x18 - pop {r4, r5, r6, pc} - .balign 4, 0 -_0224ACD8: .word ov02_022533E4 -_0224ACDC: .word ov02_022533F0 - thumb_func_end ov02_0224AC38 - - thumb_func_start ov02_0224ACE0 -ov02_0224ACE0: ; 0x0224ACE0 - push {r4, r5, lr} - sub sp, #0xc - add r5, r0, #0 - ldr r1, [r5, #0x48] - ldr r0, [r5, #0x4c] - ldr r4, [r5, #0x58] - add r0, r1, r0 - str r0, [r5, #0x48] - mov r0, #1 - ldr r1, [r5, #0x4c] - lsl r0, r0, #0x10 - cmp r1, r0 - bge _0224AD00 - lsr r0, r0, #2 - add r0, r1, r0 - str r0, [r5, #0x4c] -_0224AD00: - ldr r0, _0224ADE0 ; =0x0000013B - bl GF_CosDeg - ldr r2, [r5, #0x48] - asr r1, r2, #0xb - lsr r1, r1, #0x14 - add r1, r2, r1 - asr r1, r1, #0xc - mul r0, r1 - str r0, [r5, #0x14] - ldr r1, [r5, #0x40] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - lsl r0, r0, #4 - lsr r0, r0, #0x10 - bl GF_SinDeg - ldr r2, [r5, #0x48] - asr r1, r2, #0xb - lsr r1, r1, #0x14 - add r1, r2, r1 - asr r1, r1, #0xc - mul r0, r1 - str r0, [r5, #0x18] - ldr r1, [r5, #0x40] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - asr r2, r0, #0xc - ldr r0, _0224ADE4 ; =0x0000010E - cmp r2, r0 - bge _0224AD4A - mov r0, #1 - lsl r0, r0, #0xe - add r0, r1, r0 - str r0, [r5, #0x40] -_0224AD4A: - ldr r1, [r5, #0x2c] - ldr r0, [r5, #0x50] - add r1, r1, r0 - mov r0, #1 - lsl r0, r0, #0xc - str r1, [r5, #0x2c] - cmp r1, r0 - ble _0224AD5C - str r0, [r5, #0x2c] -_0224AD5C: - ldr r1, [r5, #0x30] - ldr r0, [r5, #0x50] - add r1, r1, r0 - mov r0, #1 - lsl r0, r0, #0xc - str r1, [r5, #0x30] - cmp r1, r0 - ble _0224AD6E - str r0, [r5, #0x30] -_0224AD6E: - add r1, r5, #0 - add r0, r4, #0 - add r1, #0x2c - bl Sprite_SetAffineScale - mov r0, #6 - ldr r1, [r5, #0x38] - lsl r0, r0, #0xc - sub r1, r1, r0 - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - str r1, [r5, #0x38] - asr r0, r0, #0xc - bpl _0224AD90 - mov r0, #0 - str r0, [r5, #0x38] -_0224AD90: - ldr r1, [r5, #0x38] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - lsl r0, r0, #4 - lsr r0, r0, #0x10 - bl GF_DegreeToSinCosIdx - add r1, r0, #0 - add r0, r4, #0 - bl Sprite_SetAffineZRotation - ldr r1, [r5, #8] - ldr r0, [r5, #0x14] - add r0, r1, r0 - str r0, [sp] - ldr r1, [r5, #0xc] - ldr r0, [r5, #0x18] - add r0, r1, r0 - str r0, [sp, #4] - add r0, r4, #0 - add r1, sp, #0 - bl Sprite_SetMatrix - ldr r1, [sp, #4] - ldr r0, _0224ADE8 ; =0xFFFC0000 - cmp r1, r0 - bge _0224ADDA - add r0, r4, #0 - mov r1, #0 - bl Sprite_SetDrawFlag - mov r0, #2 - strb r0, [r5, #2] - ldrb r0, [r5, #1] - add r0, r0, #1 - strb r0, [r5, #1] -_0224ADDA: - mov r0, #0 - add sp, #0xc - pop {r4, r5, pc} - .balign 4, 0 -_0224ADE0: .word 0x0000013B -_0224ADE4: .word 0x0000010E -_0224ADE8: .word 0xFFFC0000 - thumb_func_end ov02_0224ACE0 - - thumb_func_start ov02_0224ADEC -ov02_0224ADEC: ; 0x0224ADEC - mov r0, #0 - bx lr - thumb_func_end ov02_0224ADEC - - thumb_func_start ov02_0224ADF0 -ov02_0224ADF0: ; 0x0224ADF0 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x30 - ldr r3, _0224AF5C ; =ov02_02253354 - add r5, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #0x24 - stmia r2!, {r0, r1} - ldr r0, [r3] - ldr r3, _0224AF60 ; =ov02_0225336C - str r0, [r2] - ldmia r3!, {r0, r1} - add r2, sp, #0x18 - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - mov r0, #0x7b - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl sub_02068D74 - add r4, r0, #0 - mov r0, #2 - strb r0, [r4] - mov r6, #0 - mov r0, #0xbb - strb r6, [r4, #1] - mov r7, #1 - strb r7, [r4, #2] - str r6, [r4, #4] - lsl r0, r0, #2 - ldr r1, [r5, r0] - ldr r2, [sp, #0x24] - add r0, #8 - add r1, r2, r1 - str r1, [sp, #0x24] - add r2, r4, #0 - ldr r1, [sp, #0x28] - ldr r0, [r5, r0] - add r3, sp, #0x24 - add r0, r1, r0 - str r0, [sp, #0x28] - ldmia r3!, {r0, r1} - add r2, #8 - stmia r2!, {r0, r1} - ldr r0, [r3] - add r3, sp, #0x18 - str r0, [r2] - str r6, [r4, #0x14] - str r6, [r4, #0x18] - str r6, [r4, #0x1c] - ldr r6, _0224AF64 ; =0x0013B000 - add r2, r4, #0 - str r6, [r4, #0x38] - ldmia r3!, {r0, r1} - add r2, #0x2c - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - add r0, r7, #0 - add r0, #0xff - str r0, [r4, #0x50] - mov r0, #0xe1 - lsl r0, r0, #0xc - str r0, [r4, #0x40] - mov r0, #3 - lsl r0, r0, #0x12 - str r0, [r4, #0x48] - lsl r0, r7, #0x11 - str r0, [r4, #0x4c] - lsr r0, r6, #0xc - bl GF_CosDeg - ldr r2, [r4, #0x48] - asr r1, r2, #0xb - lsr r1, r1, #0x14 - add r1, r2, r1 - asr r1, r1, #0xc - mul r0, r1 - str r0, [r4, #0x14] - ldr r1, [r4, #0x40] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - lsl r0, r0, #4 - lsr r0, r0, #0x10 - bl GF_SinDeg - ldr r2, [r4, #0x48] - asr r1, r2, #0xb - lsr r1, r1, #0x14 - add r1, r2, r1 - asr r1, r1, #0xc - mul r0, r1 - str r0, [r4, #0x18] - ldr r1, [r4, #8] - ldr r0, [r4, #0x14] - add r0, r1, r0 - str r0, [sp, #0x24] - ldr r1, [r4, #0xc] - ldr r0, [r4, #0x18] - add r0, r1, r0 - str r0, [sp, #0x28] - ldr r0, [r4, #0x58] - add r1, sp, #0x24 - bl Sprite_SetMatrix - ldr r0, [r4, #0x58] - add r1, sp, #0x18 - bl Sprite_SetAffineScale - ldr r1, [r4, #0x38] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - lsl r0, r0, #4 - lsr r0, r0, #0x10 - bl GF_DegreeToSinCosIdx - add r1, r0, #0 - ldr r0, [r4, #0x58] - bl Sprite_SetAffineZRotation - ldr r0, [r4, #0x58] - add r1, r7, #0 - bl Sprite_SetDrawFlag - mov r1, #0x1e - lsl r1, r1, #4 - ldr r0, [r5, r1] - add r1, r1, #4 - ldr r1, [r5, r1] - bl ov02_0224B298 - str r0, [r4, #0x60] - add r0, r7, #0 - str r0, [r5, #0x1c] - ldr r0, [r5, #0x60] - mov r1, #4 - bl ov01_021FCD2C - ldr r2, _0224AF68 ; =0xFFF88000 - add r1, r7, #0 - mov r3, #0xc - str r0, [r4, #0x64] - bl ov01_021FCD8C - add r1, sp, #0xc - mov r0, #0 - str r0, [r1] - str r0, [r1, #4] - ldr r3, _0224AF6C ; =ov02_02253378 - str r0, [r1, #8] - ldmia r3!, {r0, r1} - add r2, sp, #0 - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - mov r0, #0x79 - ldr r1, [r4, #0x5c] - lsl r0, r0, #2 - ldr r4, [r1, r0] - mov r1, #2 - add r0, r4, #0 - bl Sprite_SetAffineOverwriteMode - add r0, r4, #0 - add r1, sp, #0xc - bl Sprite_SetAffineMatrix - add r0, r4, #0 - add r1, sp, #0 - bl Sprite_SetAffineScale - mov r0, #0 - bl GF_DegreeToSinCosIdx - add r1, r0, #0 - add r0, r4, #0 - bl Sprite_SetAffineZRotation - add sp, #0x30 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_0224AF5C: .word ov02_02253354 -_0224AF60: .word ov02_0225336C -_0224AF64: .word 0x0013B000 -_0224AF68: .word 0xFFF88000 -_0224AF6C: .word ov02_02253378 - thumb_func_end ov02_0224ADF0 - - thumb_func_start ov02_0224AF70 -ov02_0224AF70: ; 0x0224AF70 - push {r3, r4, r5, lr} - sub sp, #0x18 - add r5, r0, #0 - ldr r1, [r5, #0x48] - ldr r0, [r5, #0x4c] - ldr r4, [r5, #0x58] - sub r0, r1, r0 - str r0, [r5, #0x48] - bpl _0224AF86 - mov r0, #0 - str r0, [r5, #0x48] -_0224AF86: - mov r0, #2 - ldr r1, [r5, #0x4c] - lsl r0, r0, #0xa - cmp r1, r0 - ble _0224AF98 - mov r0, #6 - lsl r0, r0, #0xa - sub r0, r1, r0 - str r0, [r5, #0x4c] -_0224AF98: - mov r0, #1 - ldr r1, [r5, #0x4c] - lsl r0, r0, #0xc - cmp r1, r0 - bge _0224AFA4 - str r0, [r5, #0x4c] -_0224AFA4: - ldr r0, _0224B0D8 ; =0x0000013B - bl GF_CosDeg - ldr r2, [r5, #0x48] - asr r1, r2, #0xb - lsr r1, r1, #0x14 - add r1, r2, r1 - asr r1, r1, #0xc - mul r0, r1 - str r0, [r5, #0x14] - ldr r1, [r5, #0x40] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - lsl r0, r0, #4 - lsr r0, r0, #0x10 - bl GF_SinDeg - ldr r2, [r5, #0x48] - asr r1, r2, #0xb - lsr r1, r1, #0x14 - add r1, r2, r1 - asr r1, r1, #0xc - mul r0, r1 - str r0, [r5, #0x18] - ldr r1, [r5, #0x40] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - asr r2, r0, #0xc - ldr r0, _0224B0DC ; =0x0000010E - cmp r2, r0 - bge _0224AFEE - mov r0, #1 - lsl r0, r0, #0xe - add r0, r1, r0 - str r0, [r5, #0x40] -_0224AFEE: - ldr r1, [r5, #0x2c] - ldr r0, [r5, #0x50] - add r1, r1, r0 - mov r0, #6 - lsl r0, r0, #0xa - str r1, [r5, #0x2c] - cmp r1, r0 - ble _0224B000 - str r0, [r5, #0x2c] -_0224B000: - ldr r1, [r5, #0x30] - ldr r0, [r5, #0x50] - add r1, r1, r0 - mov r0, #6 - lsl r0, r0, #0xa - str r1, [r5, #0x30] - cmp r1, r0 - ble _0224B012 - str r0, [r5, #0x30] -_0224B012: - add r1, r5, #0 - add r0, r4, #0 - add r1, #0x2c - bl Sprite_SetAffineScale - mov r0, #2 - ldr r1, [r5, #0x38] - lsl r0, r0, #0xe - add r1, r1, r0 - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - str r1, [r5, #0x38] - asr r1, r0, #0xc - mov r0, #0x5a - lsl r0, r0, #2 - cmp r1, r0 - ble _0224B03A - lsl r0, r0, #0xc - str r0, [r5, #0x38] -_0224B03A: - ldr r1, [r5, #0x38] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - lsl r0, r0, #4 - lsr r0, r0, #0x10 - bl GF_DegreeToSinCosIdx - add r1, r0, #0 - add r0, r4, #0 - bl Sprite_SetAffineZRotation - ldr r1, [r5, #8] - ldr r0, [r5, #0x14] - add r0, r1, r0 - str r0, [sp, #0xc] - ldr r1, [r5, #0xc] - ldr r0, [r5, #0x18] - add r0, r1, r0 - str r0, [sp, #0x10] - add r0, r4, #0 - add r1, sp, #0xc - bl Sprite_SetMatrix - ldr r0, [r5, #0x48] - cmp r0, #0 - bne _0224B07C - mov r0, #0 - str r0, [r5, #4] - ldrb r0, [r5, #1] - add r0, r0, #1 - strb r0, [r5, #1] - b _0224B082 -_0224B07C: - ldr r0, [r5, #4] - add r0, r0, #1 - str r0, [r5, #4] -_0224B082: - ldr r0, [r5, #4] - cmp r0, #0xc - bne _0224B08E - ldr r0, [r5, #0x60] - bl ov02_0224B2CC -_0224B08E: - mov r0, #0x79 - ldr r1, [r5, #0x5c] - lsl r0, r0, #2 - ldr r4, [r1, r0] - add r0, r4, #0 - bl Sprite_GetScalePtr - add r3, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #0 - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - ldr r1, [sp] - mov r0, #5 - add r1, #0x80 - lsl r0, r0, #0xa - str r1, [sp] - cmp r1, r0 - ble _0224B0B8 - str r0, [sp] -_0224B0B8: - ldr r1, [sp, #4] - mov r0, #5 - add r1, #0x80 - lsl r0, r0, #0xa - str r1, [sp, #4] - cmp r1, r0 - ble _0224B0C8 - str r0, [sp, #4] -_0224B0C8: - add r0, r4, #0 - add r1, sp, #0 - bl Sprite_SetAffineScale - mov r0, #0 - add sp, #0x18 - pop {r3, r4, r5, pc} - nop -_0224B0D8: .word 0x0000013B -_0224B0DC: .word 0x0000010E - thumb_func_end ov02_0224AF70 - - thumb_func_start ov02_0224B0E0 -ov02_0224B0E0: ; 0x0224B0E0 - push {r3, r4, r5, lr} - add r4, r0, #0 - mov r0, #0x79 - ldr r1, [r4, #0x5c] - lsl r0, r0, #2 - ldr r5, [r1, r0] - mov r1, #3 - add r0, r5, #0 - bl Sprite_SetAnimCtrlSeq - add r0, r5, #0 - mov r1, #1 - bl Sprite_SetDrawFlag - ldr r0, [r4, #0x5c] - mov r1, #1 - bl ov02_0224B6B0 - mov r0, #0x82 - ldr r1, [r4, #0x5c] - lsl r0, r0, #2 - ldr r0, [r1, r0] - bl sub_0205F484 - add r0, r5, #0 - bl Sprite_GetMatrixPtr - ldr r5, [r0, #4] - ldr r0, [r4, #0x58] - bl Sprite_GetMatrixPtr - ldr r0, [r0, #4] - sub r0, r5, r0 - str r0, [r4, #0x54] - ldr r0, [r4, #0x60] - bl ov02_0224B2C0 - ldr r0, [r4, #0x64] - mov r1, #2 - mov r2, #0 - mov r3, #0xc - bl ov01_021FCD8C - mov r1, #1 - lsl r1, r1, #8 - str r1, [r4, #0x50] - lsl r0, r1, #0xb - str r0, [r4, #0x40] - mov r0, #0 - str r0, [r4, #0x48] - lsl r0, r1, #3 - str r0, [r4, #0x4c] - mov r0, #3 - strb r0, [r4, #2] - ldrb r0, [r4, #1] - add r0, r0, #1 - strb r0, [r4, #1] - mov r0, #1 - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end ov02_0224B0E0 - - thumb_func_start ov02_0224B158 -ov02_0224B158: ; 0x0224B158 - push {r4, r5, r6, r7, lr} - sub sp, #0x24 - add r4, r0, #0 - ldr r1, [r4, #0x48] - ldr r0, [r4, #0x4c] - ldr r6, [r4, #0x58] - add r0, r1, r0 - str r0, [r4, #0x48] - mov r0, #1 - ldr r1, [r4, #0x4c] - lsl r0, r0, #0xc - add r2, r1, r0 - lsl r1, r0, #4 - str r2, [r4, #0x4c] - cmp r2, r1 - ble _0224B17C - lsl r0, r0, #4 - str r0, [r4, #0x4c] -_0224B17C: - ldr r1, [r4, #0x40] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - lsl r0, r0, #4 - lsr r0, r0, #0x10 - bl GF_CosDeg - ldr r2, [r4, #0x48] - asr r1, r2, #0xb - lsr r1, r1, #0x14 - add r1, r2, r1 - asr r1, r1, #0xc - mul r0, r1 - str r0, [r4, #0x14] - mov r0, #0x80 - bl GF_SinDeg - ldr r2, [r4, #0x48] - asr r1, r2, #0xb - lsr r1, r1, #0x14 - add r1, r2, r1 - asr r1, r1, #0xc - mul r0, r1 - str r0, [r4, #0x18] - mov r0, #0x87 - ldr r1, [r4, #0x40] - lsl r0, r0, #0xc - cmp r1, r0 - bge _0224B1C0 - mov r0, #1 - lsl r0, r0, #0xc - add r0, r1, r0 - str r0, [r4, #0x40] -_0224B1C0: - ldr r1, [r4, #0x2c] - ldr r0, [r4, #0x50] - add r1, r1, r0 - mov r0, #2 - lsl r0, r0, #0xc - str r1, [r4, #0x2c] - cmp r1, r0 - ble _0224B1D2 - str r0, [r4, #0x2c] -_0224B1D2: - ldr r1, [r4, #0x30] - ldr r0, [r4, #0x50] - add r1, r1, r0 - mov r0, #2 - lsl r0, r0, #0xc - str r1, [r4, #0x30] - cmp r1, r0 - ble _0224B1E4 - str r0, [r4, #0x30] -_0224B1E4: - ldr r1, [r4, #8] - ldr r0, [r4, #0x14] - add r0, r1, r0 - str r0, [sp, #0x18] - ldr r1, [r4, #0xc] - ldr r0, [r4, #0x18] - add r1, r1, r0 - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - asr r0, r0, #0xc - str r1, [sp, #0x1c] - cmp r0, #0xe6 - blt _0224B20A - mov r0, #2 - strb r0, [r4, #2] - ldrb r0, [r4, #1] - add r0, r0, #1 - strb r0, [r4, #1] -_0224B20A: - mov r0, #0x79 - ldr r1, [r4, #0x5c] - lsl r0, r0, #2 - ldr r7, [r1, r0] - add r0, r7, #0 - bl Sprite_GetScalePtr - add r2, sp, #0xc - add r3, sp, #0x18 - add r5, r0, #0 - ldmia r3!, {r0, r1} - mov ip, r2 - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - ldmia r5!, {r0, r1} - add r2, sp, #0 - stmia r2!, {r0, r1} - ldr r0, [r5] - str r0, [r2] - mov r0, #1 - ldr r1, [r4, #0x54] - lsl r0, r0, #0xc - sub r1, r1, r0 - str r1, [r4, #0x54] - ldr r0, [sp, #0x10] - add r0, r0, r1 - str r0, [sp, #0x10] - add r0, r7, #0 - mov r1, ip - bl Sprite_SetMatrix - mov r0, #1 - ldr r1, [sp] - lsl r0, r0, #8 - add r2, r1, r0 - lsl r1, r0, #5 - str r2, [sp] - cmp r2, r1 - ble _0224B25E - lsl r0, r0, #5 - str r0, [sp] -_0224B25E: - mov r0, #1 - ldr r1, [sp, #4] - lsl r0, r0, #8 - add r2, r1, r0 - lsl r1, r0, #5 - str r2, [sp, #4] - cmp r2, r1 - ble _0224B272 - lsl r0, r0, #5 - str r0, [sp, #4] -_0224B272: - add r0, r7, #0 - add r1, sp, #0 - bl Sprite_SetAffineScale - add r4, #0x2c - add r0, r6, #0 - add r1, r4, #0 - bl Sprite_SetAffineScale - add r0, r6, #0 - add r1, sp, #0x18 - bl Sprite_SetMatrix - mov r0, #0 - add sp, #0x24 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_0224B158 - - thumb_func_start ov02_0224B294 -ov02_0224B294: ; 0x0224B294 - mov r0, #0 - bx lr - thumb_func_end ov02_0224B294 - - thumb_func_start ov02_0224B298 -ov02_0224B298: ; 0x0224B298 - push {lr} - sub sp, #0x1c - add r2, sp, #0x10 - mov r3, #0 - str r3, [r2] - str r3, [r2, #4] - str r1, [sp, #0xc] - str r3, [r2, #8] - add r1, sp, #8 - str r1, [sp] - mov r1, #0x81 - str r1, [sp, #4] - ldr r1, _0224B2BC ; =ov02_022534A4 - bl sub_02068B0C - add sp, #0x1c - pop {pc} - nop -_0224B2BC: .word ov02_022534A4 - thumb_func_end ov02_0224B298 - - thumb_func_start ov02_0224B2C0 -ov02_0224B2C0: ; 0x0224B2C0 - push {r3, lr} - bl sub_02068D74 - mov r1, #0 - str r1, [r0] - pop {r3, pc} - thumb_func_end ov02_0224B2C0 - - thumb_func_start ov02_0224B2CC -ov02_0224B2CC: ; 0x0224B2CC - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r5, r0, #0 - bl sub_02068D74 - add r4, r0, #0 - mov r0, #1 - str r0, [r4] - mov r0, #0 - str r0, [r4, #4] - str r0, [r4, #0xc] - str r0, [r4, #8] - str r0, [r4, #0x10] - str r0, [r4, #0x14] - str r0, [r4, #0x18] - ldr r0, [r4, #0x20] - bl Sprite_GetMatrixPtr - add r6, r0, #0 - add r3, sp, #0 - ldmia r6!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r6] - add r1, r2, #0 - str r0, [r3] - add r0, r5, #0 - bl sub_02068DA8 - ldr r0, [r4, #0x20] - mov r1, #5 - bl Sprite_SetAnimCtrlSeq - add sp, #0xc - pop {r3, r4, r5, r6, pc} - .balign 4, 0 - thumb_func_end ov02_0224B2CC - - thumb_func_start ov02_0224B314 -ov02_0224B314: ; 0x0224B314 - push {r4, r5, lr} - sub sp, #0xc - add r5, r0, #0 - bl sub_02068D74 - add r4, r0, #0 - mov r0, #2 - str r0, [r4] - mov r0, #0 - str r0, [r4, #4] - str r0, [r4, #0xc] - str r0, [r4, #8] - str r0, [r4, #0x10] - str r0, [r4, #0x14] - str r0, [r4, #0x18] - ldr r0, [r4, #0x20] - add r1, sp, #0 - bl ov02_02248C98 - add r0, r5, #0 - add r1, sp, #0 - bl sub_02068DA8 - ldr r0, [r4, #0x20] - mov r1, #4 - bl Sprite_SetAnimCtrlSeq - add sp, #0xc - pop {r4, r5, pc} - .balign 4, 0 - thumb_func_end ov02_0224B314 - - thumb_func_start ov02_0224B350 -ov02_0224B350: ; 0x0224B350 - push {r4, lr} - add r4, r1, #0 - bl sub_02068D98 - ldr r1, [r0] - str r1, [r4, #0x1c] - ldr r0, [r0, #4] - str r0, [r4, #0x20] - mov r0, #1 - pop {r4, pc} - thumb_func_end ov02_0224B350 - - thumb_func_start ov02_0224B364 -ov02_0224B364: ; 0x0224B364 - push {r3, r4, lr} - sub sp, #0xc - add r4, r1, #0 - ldr r1, [r4, #4] - cmp r1, #0 - bne _0224B3A8 - ldr r1, [r4, #0xc] - lsl r2, r1, #2 - ldr r1, _0224B3AC ; =ov02_02253520 - ldr r1, [r1, r2] - str r1, [r4, #0x14] - add r1, sp, #0 - bl sub_02068DB8 - ldr r1, [sp, #4] - ldr r0, [r4, #0x14] - add r0, r1, r0 - str r0, [sp, #4] - ldr r0, [r4, #0x20] - add r1, sp, #0 - bl Sprite_SetMatrix - ldr r0, [r4, #0xc] - add r0, r0, #1 - str r0, [r4, #0xc] - cmp r0, #0xc - blt _0224B3A8 - mov r0, #0 - str r0, [r4, #0xc] - mov r0, #1 - str r0, [r4, #8] - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] -_0224B3A8: - add sp, #0xc - pop {r3, r4, pc} - .balign 4, 0 -_0224B3AC: .word ov02_02253520 - thumb_func_end ov02_0224B364 - - thumb_func_start ov02_0224B3B0 -ov02_0224B3B0: ; 0x0224B3B0 - push {r3, r4, lr} - sub sp, #0xc - add r4, r1, #0 - ldr r1, [r4, #4] - cmp r1, #0 - bne _0224B3F4 - ldr r1, [r4, #0xc] - lsl r2, r1, #2 - ldr r1, _0224B3F8 ; =ov02_02253430 - ldr r1, [r1, r2] - str r1, [r4, #0x14] - add r1, sp, #0 - bl sub_02068DB8 - ldr r1, [sp, #4] - ldr r0, [r4, #0x14] - add r0, r1, r0 - str r0, [sp, #4] - ldr r0, [r4, #0x20] - add r1, sp, #0 - bl Sprite_SetMatrix - ldr r0, [r4, #0xc] - add r0, r0, #1 - str r0, [r4, #0xc] - cmp r0, #4 - blt _0224B3F4 - mov r0, #0 - str r0, [r4, #0xc] - mov r0, #1 - str r0, [r4, #8] - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] -_0224B3F4: - add sp, #0xc - pop {r3, r4, pc} - .balign 4, 0 -_0224B3F8: .word ov02_02253430 - thumb_func_end ov02_0224B3B0 - - thumb_func_start ov02_0224B3FC -ov02_0224B3FC: ; 0x0224B3FC - push {r3, lr} - ldr r2, [r1] - cmp r2, #1 - beq _0224B40A - cmp r2, #2 - beq _0224B410 - pop {r3, pc} -_0224B40A: - bl ov02_0224B364 - pop {r3, pc} -_0224B410: - bl ov02_0224B3B0 - pop {r3, pc} - .balign 4, 0 - thumb_func_end ov02_0224B3FC - - thumb_func_start ov02_0224B418 -ov02_0224B418: ; 0x0224B418 - push {r3, r4, r5, lr} - add r4, r1, #0 - mov r1, #0x5f - add r5, r0, #0 - mov r0, #4 - lsl r1, r1, #2 - bl ov02_0224B690 - add r1, r0, #0 - str r4, [r1, #0xc] - ldr r0, _0224B438 ; =ov02_0224B45C - mov r2, #0x86 - str r5, [r1, #0x14] - bl SysTask_CreateOnMainQueue - pop {r3, r4, r5, pc} - .balign 4, 0 -_0224B438: .word ov02_0224B45C - thumb_func_end ov02_0224B418 - - thumb_func_start ov02_0224B43C -ov02_0224B43C: ; 0x0224B43C - push {r3, lr} - bl SysTask_GetData - ldr r0, [r0, #4] - pop {r3, pc} - .balign 4, 0 - thumb_func_end ov02_0224B43C - - thumb_func_start ov02_0224B448 -ov02_0224B448: ; 0x0224B448 - push {r4, lr} - add r4, r0, #0 - bl SysTask_GetData - bl Heap_Free - add r0, r4, #0 - bl SysTask_Destroy - pop {r4, pc} - thumb_func_end ov02_0224B448 - - thumb_func_start ov02_0224B45C -ov02_0224B45C: ; 0x0224B45C - push {r3, r4, r5, lr} - ldr r4, _0224B490 ; =ov02_022534B8 - add r5, r1, #0 -_0224B462: - ldr r1, [r5] - add r0, r5, #0 - lsl r1, r1, #2 - ldr r1, [r4, r1] - blx r1 - cmp r0, #1 - beq _0224B462 - ldr r0, [r5, #0x10] - cmp r0, #0 - beq _0224B48E - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r5, r0] - cmp r0, #0 - beq _0224B484 - bl sub_02068BAC -_0224B484: - ldr r0, [r5, #0x20] - cmp r0, #0 - beq _0224B48E - bl SpriteList_RenderAndAnimateSprites -_0224B48E: - pop {r3, r4, r5, pc} - .balign 4, 0 -_0224B490: .word ov02_022534B8 - thumb_func_end ov02_0224B45C - - thumb_func_start ov02_0224B494 -ov02_0224B494: ; 0x0224B494 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x14] - mov r1, #1 - bl ov02_02249444 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_0224B494 - - thumb_func_start ov02_0224B4AC -ov02_0224B4AC: ; 0x0224B4AC - push {r3, r4, r5, lr} - sub sp, #0x18 - add r5, r0, #0 - mov r0, #4 - mov r1, #0x20 - bl sub_020689C8 - mov r1, #0x17 - lsl r1, r1, #4 - str r0, [r5, r1] - mov r2, #2 - str r2, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - str r0, [sp, #0xc] - str r0, [sp, #0x10] - add r0, r5, #0 - add r0, #0x18 - mov r1, #0x20 - add r3, r2, #0 - str r2, [sp, #0x14] - bl ov02_02248728 - bl ov02_022493F0 - add r4, r0, #0 - add r0, r5, #0 - add r0, #0x18 - add r1, r4, #0 - mov r2, #0xb - mov r3, #0 - bl ov02_02248980 - add r0, r5, #0 - add r0, #0x18 - add r1, r4, #0 - mov r2, #6 - mov r3, #0 - bl ov02_02248A58 - add r0, r5, #0 - add r0, #0x18 - add r1, r4, #0 - mov r2, #0xc - mov r3, #0 - bl ov02_02248B30 - add r0, r5, #0 - add r0, #0x18 - mov r1, #0 - bl ov02_022489F0 - add r0, r5, #0 - add r0, #0x18 - mov r1, #0 - bl ov02_02248AC8 - add r0, r5, #0 - add r0, #0x18 - mov r1, #0 - bl ov02_02248A24 - add r0, r5, #0 - add r0, #0x18 - mov r1, #0 - bl ov02_02248AFC - ldr r0, [r5, #0xc] - cmp r0, #0 - bne _0224B57C - add r0, r5, #0 - add r0, #0x18 - add r1, r4, #0 - mov r2, #0x11 - mov r3, #2 - bl ov02_02248980 - add r0, r5, #0 - add r0, #0x18 - add r1, r4, #0 - mov r2, #0x12 - mov r3, #2 - bl ov02_02248B30 - add r0, r5, #0 - add r0, #0x18 - add r1, r4, #0 - mov r2, #0x13 - mov r3, #1 - bl ov02_02248BA0 - add r0, r5, #0 - add r0, #0x18 - mov r1, #2 - bl ov02_022489F0 - add r0, r5, #0 - add r0, #0x18 - mov r1, #2 - bl ov02_02248A24 - b _0224B5DC -_0224B57C: - add r0, r5, #0 - add r0, #0x18 - add r1, r4, #0 - mov r2, #0x14 - mov r3, #2 - bl ov02_02248980 - add r0, r5, #0 - add r0, #0x18 - add r1, r4, #0 - mov r2, #7 - mov r3, #1 - bl ov02_02248A58 - add r0, r5, #0 - add r0, #0x18 - add r1, r4, #0 - mov r2, #0x15 - mov r3, #2 - bl ov02_02248B30 - add r0, r5, #0 - add r0, #0x18 - add r1, r4, #0 - mov r2, #0x16 - mov r3, #1 - bl ov02_02248BA0 - add r0, r5, #0 - add r0, #0x18 - mov r1, #2 - bl ov02_022489F0 - add r0, r5, #0 - add r0, #0x18 - mov r1, #1 - bl ov02_02248AC8 - add r0, r5, #0 - add r0, #0x18 - mov r1, #2 - bl ov02_02248A24 - add r0, r5, #0 - add r0, #0x18 - mov r1, #1 - bl ov02_02248AFC -_0224B5DC: - add r0, r4, #0 - bl NARC_Delete - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - mov r0, #0 - add sp, #0x18 - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end ov02_0224B4AC - - thumb_func_start ov02_0224B5F0 -ov02_0224B5F0: ; 0x0224B5F0 - push {r4, lr} - add r4, r0, #0 - ldr r1, [r4, #0xc] - add r0, #0x18 - bl ov02_02248D18 - mov r1, #0x5b - lsl r1, r1, #2 - str r0, [r4, r1] - ldr r0, [r4, r1] - mov r1, #1 - bl Sprite_SetDrawFlag - mov r3, #0x17 - lsl r3, r3, #4 - ldr r1, [r4, r3] - sub r3, r3, #4 - add r2, r4, #0 - ldr r0, [r4, #0x14] - ldr r3, [r4, r3] - add r2, #0x18 - bl ov02_02248D58 - mov r1, #0x5d - lsl r1, r1, #2 - str r0, [r4, r1] - ldr r0, [r4, r1] - bl ov02_02248E20 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #1 - str r0, [r4, #0x10] - mov r0, #0 - pop {r4, pc} - thumb_func_end ov02_0224B5F0 - - thumb_func_start ov02_0224B638 -ov02_0224B638: ; 0x0224B638 - push {r4, lr} - add r4, r0, #0 - mov r0, #0x5d - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl ov02_02248D8C - cmp r0, #2 - beq _0224B64E - mov r0, #0 - pop {r4, pc} -_0224B64E: - mov r0, #0x5d - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl ov02_02248DBC - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_0224B638 - - thumb_func_start ov02_0224B664 -ov02_0224B664: ; 0x0224B664 - push {r4, lr} - add r4, r0, #0 - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r4, r0] - bl sub_020689F8 - add r0, r4, #0 - add r0, #0x18 - bl ov02_0224886C - mov r0, #0 - str r0, [r4, #0x10] - mov r1, #1 - str r1, [r4, #4] - ldr r1, [r4] - add r1, r1, #1 - str r1, [r4] - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_0224B664 - - thumb_func_start ov02_0224B68C -ov02_0224B68C: ; 0x0224B68C - mov r0, #0 - bx lr - thumb_func_end ov02_0224B68C - - thumb_func_start ov02_0224B690 -ov02_0224B690: ; 0x0224B690 - push {r3, r4, r5, lr} - add r5, r1, #0 - bl Heap_AllocAtEnd - add r4, r0, #0 - bne _0224B6A0 - bl GF_AssertFail -_0224B6A0: - add r0, r4, #0 - mov r1, #0 - add r2, r5, #0 - bl memset - add r0, r4, #0 - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end ov02_0224B690 - - thumb_func_start ov02_0224B6B0 -ov02_0224B6B0: ; 0x0224B6B0 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #0x82 - lsl r0, r0, #2 - ldr r0, [r5, r0] - add r4, r1, #0 - bl MapObject_UnpauseMovement - mov r0, #0x82 - lsl r0, r0, #2 - ldr r0, [r5, r0] - add r1, r4, #0 - bl MapObject_SetVisible - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end ov02_0224B6B0 - - thumb_func_start ov02_0224B6D0 -ov02_0224B6D0: ; 0x0224B6D0 - push {r4, lr} - add r4, r1, #0 - bl sub_02068D98 - ldr r1, [r0] - ldr r0, [r0, #4] - str r1, [r4] - str r0, [r4, #4] - mov r0, #1 - pop {r4, pc} - thumb_func_end ov02_0224B6D0 - - thumb_func_start ov02_0224B6E4 -ov02_0224B6E4: ; 0x0224B6E4 - push {r3, r4, r5, lr} - add r4, r1, #0 - ldr r0, [r4] - bl Sprite_GetMatrixPtr - ldr r1, [r4, #4] - ldr r0, [r0, #4] - ldr r5, [r1, #0x4c] - ldr r3, [r1, #0x50] - ldr r1, [r1, #0x1c] - cmp r1, #0 - bne _0224B720 - mov r1, #2 - lsl r1, r1, #0xe - sub r2, r0, r1 - cmp r2, r5 - blt _0224B716 - add r0, r0, r1 - cmp r0, r3 - bgt _0224B716 - ldr r0, [r4] - mov r1, #1 - bl Sprite_SetDrawFlag - pop {r3, r4, r5, pc} -_0224B716: - ldr r0, [r4] - mov r1, #0 - bl Sprite_SetDrawFlag - pop {r3, r4, r5, pc} -_0224B720: - ldr r0, [r4] - mov r1, #1 - bl Sprite_SetDrawFlag - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end ov02_0224B6E4 - - thumb_func_start ov02_0224B72C -ov02_0224B72C: ; 0x0224B72C - push {r3, r4, lr} - sub sp, #0x1c - add r2, sp, #0x10 - mov r3, #0 - str r3, [r2] - add r4, r0, #0 - str r3, [r2, #4] - mov r0, #0x79 - str r3, [r2, #8] - lsl r0, r0, #2 - ldr r1, [r4, r0] - sub r0, r0, #4 - str r1, [sp, #8] - str r4, [sp, #0xc] - add r1, sp, #8 - str r1, [sp] - mov r1, #0x87 - str r1, [sp, #4] - ldr r0, [r4, r0] - ldr r1, _0224B764 ; =ov02_02253440 - bl sub_02068B0C - mov r1, #0x7d - lsl r1, r1, #2 - str r0, [r4, r1] - add sp, #0x1c - pop {r3, r4, pc} - nop -_0224B764: .word ov02_02253440 - thumb_func_end ov02_0224B72C - - thumb_func_start ov02_0224B768 -ov02_0224B768: ; 0x0224B768 - push {r4, lr} - add r4, r0, #0 - mov r0, #0x7d - lsl r0, r0, #2 - ldr r0, [r4, r0] - cmp r0, #0 - beq _0224B782 - bl sub_02068B48 - mov r0, #0x7d - mov r1, #0 - lsl r0, r0, #2 - str r1, [r4, r0] -_0224B782: - pop {r4, pc} - thumb_func_end ov02_0224B768 - - thumb_func_start ov02_0224B784 -ov02_0224B784: ; 0x0224B784 - push {r4, lr} - sub sp, #0x18 - add r2, sp, #0xc - mov r1, #0 - str r1, [r2] - add r4, r0, #0 - str r1, [r2, #4] - str r1, [r2, #8] - str r4, [sp, #8] - bl ov02_0224B88C - mov r0, #0x83 - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, sp, #0xc - bl MapObject_CopyPositionVector - add r0, sp, #8 - str r0, [sp] - mov r0, #0x83 - str r0, [sp, #4] - mov r0, #0x1e - lsl r0, r0, #4 - ldr r0, [r4, r0] - ldr r1, _0224B7C8 ; =ov02_02253490 - add r2, sp, #0xc - mov r3, #0 - bl sub_02068B0C - mov r1, #0x1f - lsl r1, r1, #4 - str r0, [r4, r1] - add sp, #0x18 - pop {r4, pc} - .balign 4, 0 -_0224B7C8: .word ov02_02253490 - thumb_func_end ov02_0224B784 - - thumb_func_start ov02_0224B7CC -ov02_0224B7CC: ; 0x0224B7CC - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r5, r0, #0 - add r4, r1, #0 - bl sub_02068D98 - ldr r1, [r0] - mov r6, #0x8a - str r1, [r4] - ldr r4, [r0] - lsl r6, r6, #2 - add r0, r5, #0 - add r1, sp, #0 - bl sub_02068DB8 - add r0, r4, r6 - add r0, #0x24 - add r1, sp, #0 - bl Field3dObject_SetPos - add r0, r4, r6 - add r0, #0x24 - mov r1, #0 - bl Field3dObject_SetActiveFlag - mov r0, #1 - add sp, #0xc - pop {r3, r4, r5, r6, pc} - thumb_func_end ov02_0224B7CC - - thumb_func_start ov02_0224B804 -ov02_0224B804: ; 0x0224B804 - bx lr - .balign 4, 0 - thumb_func_end ov02_0224B804 - - thumb_func_start ov02_0224B808 -ov02_0224B808: ; 0x0224B808 - push {r4, r5, r6, lr} - add r5, r1, #0 - ldr r0, [r5, #4] - mov r6, #0x8a - lsl r6, r6, #2 - ldr r4, [r5] - cmp r0, #3 - bhi _0224B878 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0224B824: ; jump table - .short _0224B82C - _0224B824 - 2 ; case 0 - .short _0224B832 - _0224B824 - 2 ; case 1 - .short _0224B854 - _0224B824 - 2 ; case 2 - .short _0224B878 - _0224B824 - 2 ; case 3 -_0224B82C: - mov r0, #1 - str r0, [r5, #4] - pop {r4, r5, r6, pc} -_0224B832: - add r0, r4, r6 - add r0, #0x24 - mov r1, #1 - bl Field3dObject_SetActiveFlag - add r0, r4, r6 - add r0, #0x9c - mov r1, #0 - bl Field3dModelAnimation_FrameSet - add r0, r4, r6 - add r0, #0xb0 - mov r1, #0 - bl Field3dModelAnimation_FrameSet - mov r0, #2 - str r0, [r5, #4] -_0224B854: - add r0, r4, r6 - mov r1, #1 - add r0, #0x9c - lsl r1, r1, #0xc - bl Field3dModelAnimation_FrameAdvanceAndCheck - add r0, r4, r6 - mov r1, #1 - add r0, #0xb0 - lsl r1, r1, #0xc - bl Field3dModelAnimation_FrameAdvanceAndCheck - cmp r0, #0 - beq _0224B878 - mov r0, #1 - str r0, [r5, #8] - mov r0, #3 - str r0, [r5, #4] -_0224B878: - pop {r4, r5, r6, pc} - .balign 4, 0 - thumb_func_end ov02_0224B808 - - thumb_func_start ov02_0224B87C -ov02_0224B87C: ; 0x0224B87C - mov r0, #0x93 - ldr r1, [r1] - lsl r0, r0, #2 - ldr r3, _0224B888 ; =Field3dObject_Draw - add r0, r1, r0 - bx r3 - .balign 4, 0 -_0224B888: .word Field3dObject_Draw - thumb_func_end ov02_0224B87C - - thumb_func_start ov02_0224B88C -ov02_0224B88C: ; 0x0224B88C - push {r4, lr} - sub sp, #8 - mov r1, #0x8a - lsl r1, r1, #2 - add r4, r0, r1 - add r0, r4, #0 - mov r1, #4 - mov r2, #0x20 - bl HeapExp_FndInitAllocator - mov r0, #0x67 - mov r1, #0x83 - mov r2, #4 - bl AllocAtEndAndReadWholeNarcMemberByIdPair - str r0, [r4, #0x10] - add r0, r4, #0 - ldr r1, [r4, #0x10] - add r0, #0x14 - bl ov01_021FBD38 - add r0, r4, #0 - add r1, r4, #0 - add r0, #0x24 - add r1, #0x14 - bl Field3dObject_InitFromModel - mov r0, #4 - str r0, [sp] - add r0, r4, #0 - add r1, r4, #0 - add r0, #0x9c - add r1, #0x14 - mov r2, #0x67 - mov r3, #0xa7 - str r4, [sp, #4] - bl Field3dModelAnimation_LoadFromFilesystem - mov r0, #4 - str r0, [sp] - add r0, r4, #0 - add r1, r4, #0 - add r0, #0xb0 - add r1, #0x14 - mov r2, #0x67 - mov r3, #0xa5 - str r4, [sp, #4] - bl Field3dModelAnimation_LoadFromFilesystem - add r0, r4, #0 - add r1, r4, #0 - add r0, #0x24 - add r1, #0x9c - bl Field3dObject_AddAnimation - add r0, r4, #0 - add r4, #0xb0 - add r0, #0x24 - add r1, r4, #0 - bl Field3dObject_AddAnimation - add sp, #8 - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_0224B88C - - thumb_func_start ov02_0224B90C -ov02_0224B90C: ; 0x0224B90C - push {r4, lr} - mov r1, #0x8a - lsl r1, r1, #2 - add r4, r0, r1 - add r0, r4, #0 - add r0, #0x14 - bl ov01_021FBDFC - ldr r0, [r4, #0x10] - bl ov01_021F1448 - add r0, r4, #0 - add r0, #0x9c - add r1, r4, #0 - bl Field3dModelAnimation_Unload - add r0, r4, #0 - add r0, #0xb0 - add r1, r4, #0 - bl Field3dModelAnimation_Unload - pop {r4, pc} - thumb_func_end ov02_0224B90C - - thumb_func_start ov02_0224B938 -ov02_0224B938: ; 0x0224B938 - push {r4, lr} - add r4, r0, #0 - mov r0, #0x83 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl MapObject_SetVisible - mov r0, #0x83 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl sub_0205F484 - add r0, r4, #0 - bl ov02_0224B784 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #1 - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_0224B938 - - thumb_func_start ov02_0224B964 -ov02_0224B964: ; 0x0224B964 - push {r4, lr} - add r4, r0, #0 - mov r0, #0x1f - lsl r0, r0, #4 - ldr r0, [r4, r0] - bl sub_02068D74 - ldr r0, [r0, #8] - cmp r0, #1 - bne _0224B992 - mov r0, #0x1f - lsl r0, r0, #4 - ldr r0, [r4, r0] - bl sub_02068B48 - add r0, r4, #0 - bl ov02_0224B90C - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - pop {r4, pc} -_0224B992: - mov r0, #0 - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_0224B964 - - thumb_func_start ov02_BattleExit_HandleRoamerAction -ov02_BattleExit_HandleRoamerAction: ; 0x0224B998 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r5, r0, #0 - ldr r0, [r1, #8] - str r1, [sp] - mov r1, #0 - bl Party_GetMonByIndex - add r7, r0, #0 - ldr r0, [r5, #0xc] - bl Save_Roamers_Get - add r6, r0, #0 - add r0, r7, #0 - mov r1, #5 - mov r2, #0 - bl GetMonData - add r4, r0, #0 - add r0, r6, #0 - add r1, r4, #0 - bl ov02_0224BAA8 - str r0, [sp, #8] - cmp r0, #0 - beq _0224BA50 - lsl r0, r4, #0x10 - lsr r0, r0, #0x10 - bl SpeciesToRoamerIdx - str r0, [sp, #4] - add r0, r7, #0 - mov r1, #0xa3 - mov r2, #0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r7, #0 - mov r1, #0xa0 - mov r2, #0 - bl GetMonData - lsl r0, r0, #0x18 - lsr r7, r0, #0x18 - ldr r0, [sp] - ldr r0, [r0, #0x14] - cmp r0, #1 - bne _0224BA14 - cmp r4, #0 - bne _0224BA14 - add r0, sp, #8 - bl RoamerMon_Init - ldr r0, [r5, #0xc] - bl Save_VarsFlags_Get - ldr r1, [sp, #4] - mov r2, #2 - bl sub_02066BE8 - b _0224BA42 -_0224BA14: - cmp r0, #4 - bne _0224BA2E - add r0, sp, #8 - bl RoamerMon_Init - ldr r0, [r5, #0xc] - bl Save_VarsFlags_Get - ldr r1, [sp, #4] - mov r2, #1 - bl sub_02066BE8 - b _0224BA42 -_0224BA2E: - ldr r0, [sp, #8] - mov r1, #5 - add r2, r4, #0 - bl SetRoamerData - ldr r0, [sp, #8] - mov r1, #7 - add r2, r7, #0 - bl SetRoamerData -_0224BA42: - ldr r1, [r5, #0x20] - add r0, r6, #0 - ldr r1, [r1] - bl ov02_RepelActiveRoamersFromMapNo - add sp, #0xc - pop {r4, r5, r6, r7, pc} -_0224BA50: - bl LCRandom - mov r1, #0x64 - bl _s32_div_f - lsl r0, r1, #0x10 - lsr r0, r0, #0x10 - cmp r0, #0x1e - bhs _0224BA6C - ldr r1, [r5, #0x20] - add r0, r6, #0 - ldr r1, [r1] - bl ov02_RepelActiveRoamersFromMapNo -_0224BA6C: - add sp, #0xc - pop {r4, r5, r6, r7, pc} - thumb_func_end ov02_BattleExit_HandleRoamerAction - - thumb_func_start ov02_RepelActiveRoamersFromMapNo -ov02_RepelActiveRoamersFromMapNo: ; 0x0224BA70 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r6, r1, #0 - mov r4, #0 -_0224BA78: - add r0, r5, #0 - add r1, r4, #0 - bl GetRoamerIsActiveByIndex - cmp r0, #0 - beq _0224BA9C - add r0, r5, #0 - add r1, r4, #0 - bl Roamer_GetLocation - bl GetRoamMapByLocationIdx - cmp r6, r0 - bne _0224BA9C - add r0, r5, #0 - add r1, r4, #0 - bl RoamerLocationUpdateRand -_0224BA9C: - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #4 - blo _0224BA78 - pop {r4, r5, r6, pc} - thumb_func_end ov02_RepelActiveRoamersFromMapNo - - thumb_func_start ov02_0224BAA8 -ov02_0224BAA8: ; 0x0224BAA8 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r6, r1, #0 - mov r4, #0 -_0224BAB0: - add r0, r5, #0 - add r1, r4, #0 - bl GetRoamerIsActiveByIndex - cmp r0, #0 - beq _0224BAD4 - add r0, r5, #0 - add r1, r4, #0 - bl Roamers_GetRoamMonStats - mov r1, #4 - add r7, r0, #0 - bl GetRoamerData - cmp r6, r0 - bne _0224BAD4 - add r0, r7, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224BAD4: - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #4 - blo _0224BAB0 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_0224BAA8 - - thumb_func_start PlayerStepEvent_RepelCounterDecrement -PlayerStepEvent_RepelCounterDecrement: ; 0x0224BAE4 - push {r4, lr} - add r4, r1, #0 - bl Save_Roamers_Get - bl RoamerSave_GetRepelAddr - ldrb r1, [r0] - cmp r1, #0 - beq _0224BB0E - sub r1, r1, #1 - strb r1, [r0] - ldrb r0, [r0] - cmp r0, #0 - bne _0224BB0E - ldr r1, _0224BB14 ; =std_repel_wore_off - add r0, r4, #0 - mov r2, #0 - bl StartMapSceneScript - mov r0, #1 - pop {r4, pc} -_0224BB0E: - mov r0, #0 - pop {r4, pc} - nop -_0224BB14: .word std_repel_wore_off - thumb_func_end PlayerStepEvent_RepelCounterDecrement - - thumb_func_start PokecenterAnimCreate -PokecenterAnimCreate: ; 0x0224BB18 - push {r4, r5, r6, lr} - sub sp, #0x20 - add r6, r1, #0 - mov r1, #0x24 - add r2, sp, #4 - add r3, sp, #0 - add r5, r0, #0 - bl sub_02054C20 - cmp r0, #0 - beq _0224BB84 - mov r0, #4 - mov r1, #0x18 - bl Heap_AllocAtEnd - add r4, r0, #0 - strb r6, [r4, #0xc] - mov r0, #0 - strb r0, [r4, #0xd] - strb r0, [r4, #0xe] - strb r0, [r4, #0xf] - ldr r0, [r5, #0x30] - bl MapMatrix_GetWidth - add r1, r0, #0 - ldr r0, [sp] - add r2, sp, #0x14 - bl sub_02054DC8 - ldr r1, [sp, #4] - add r0, sp, #8 - bl ov01_021F3B0C - add r3, sp, #8 - ldmia r3!, {r0, r1} - add r2, r4, #0 - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - ldr r1, [r4] - ldr r0, [sp, #0x14] - add r2, r4, #0 - add r0, r1, r0 - str r0, [r4] - ldr r1, [r4, #8] - ldr r0, [sp, #0x1c] - add r0, r1, r0 - str r0, [r4, #8] - ldr r0, [r5, #0x10] - ldr r1, _0224BB8C ; =PokecenterAnimRun - bl TaskManager_Call - add sp, #0x20 - pop {r4, r5, r6, pc} -_0224BB84: - bl GF_AssertFail - add sp, #0x20 - pop {r4, r5, r6, pc} - .balign 4, 0 -_0224BB8C: .word PokecenterAnimRun - thumb_func_end PokecenterAnimCreate - - thumb_func_start PokecenterAnimRun -PokecenterAnimRun: ; 0x0224BB90 - push {r4, r5, r6, r7, lr} - sub sp, #0x34 - add r4, r0, #0 - bl TaskManager_GetFieldSystem - add r6, r0, #0 - add r0, r4, #0 - bl TaskManager_GetEnvironment - add r4, r0, #0 - ldrb r1, [r4, #0xf] - cmp r1, #5 - bls _0224BBAC - b _0224BDCC -_0224BBAC: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0224BBB8: ; jump table - .short _0224BBC4 - _0224BBB8 - 2 ; case 0 - .short _0224BC98 - _0224BBB8 - 2 ; case 1 - .short _0224BCFA - _0224BBB8 - 2 ; case 2 - .short _0224BD42 - _0224BBB8 - 2 ; case 3 - .short _0224BD64 - _0224BBB8 - 2 ; case 4 - .short _0224BDC2 - _0224BBB8 - 2 ; case 5 -_0224BBC4: - ldr r1, [r6, #0x34] - mov r0, #0x6b - bl ov01_021FB90C - add r5, r0, #0 - ldr r1, [r6, #0x34] - mov r0, #0x25 - bl ov01_021FB90C - add r7, r0, #0 - ldr r0, [r5] - bl NNS_G3dGetMdlSet - cmp r0, #0 - beq _0224BC02 - add r2, r0, #0 - add r2, #8 - beq _0224BBF6 - ldrb r1, [r0, #9] - cmp r1, #0 - bls _0224BBF6 - ldrh r1, [r0, #0xe] - add r1, r2, r1 - add r1, r1, #4 - b _0224BBF8 -_0224BBF6: - mov r1, #0 -_0224BBF8: - cmp r1, #0 - beq _0224BC02 - ldr r1, [r1] - add r5, r0, r1 - b _0224BC04 -_0224BC02: - mov r5, #0 -_0224BC04: - ldr r0, [r7] - bl NNS_G3dGetMdlSet - cmp r0, #0 - beq _0224BC2E - add r2, r0, #0 - add r2, #8 - beq _0224BC22 - ldrb r1, [r0, #9] - cmp r1, #0 - bls _0224BC22 - ldrh r1, [r0, #0xe] - add r1, r2, r1 - add r1, r1, #4 - b _0224BC24 -_0224BC22: - mov r1, #0 -_0224BC24: - cmp r1, #0 - beq _0224BC2E - ldr r1, [r1] - add r7, r0, r1 - b _0224BC30 -_0224BC2E: - mov r7, #0 -_0224BC30: - ldr r0, [r6, #0x34] - bl ov01_021FB9E0 - mov r1, #0 - str r1, [sp] - str r5, [sp, #4] - str r0, [sp, #8] - mov r0, #1 - str r0, [sp, #0xc] - str r0, [sp, #0x10] - str r1, [sp, #0x14] - ldr r0, [r6, #0x54] - ldr r1, [r6, #0x58] - mov r2, #0x10 - mov r3, #0x6b - bl ov01_021E8DE8 - add r0, r6, #0 - mov r1, #0x25 - add r2, sp, #0x18 - mov r3, #0 - bl sub_02054C20 - cmp r0, #0 - bne _0224BC66 - bl GF_AssertFail -_0224BC66: - ldr r0, [sp, #0x18] - bl ov01_021F3B38 - add r5, r0, #0 - ldr r0, [r6, #0x34] - bl ov01_021FB9E0 - str r5, [sp] - str r7, [sp, #4] - str r0, [sp, #8] - mov r0, #1 - str r0, [sp, #0xc] - str r0, [sp, #0x10] - mov r0, #0 - str r0, [sp, #0x14] - ldr r0, [r6, #0x54] - ldr r1, [r6, #0x58] - mov r2, #0x20 - mov r3, #0x25 - bl ov01_021E8DE8 - ldrb r0, [r4, #0xf] - add r0, r0, #1 - strb r0, [r4, #0xf] - b _0224BDCC -_0224BC98: - add r1, sp, #0x1c - mov r0, #0 - str r0, [r1] - str r0, [r1, #4] - str r0, [r1, #8] - ldrb r2, [r4, #0xd] - mov r1, #0xc - ldr r0, [r4] - add r3, r2, #0 - ldr r2, _0224BDD4 ; =ov02_02253D90 - mul r3, r1 - ldr r2, [r2, r3] - add r0, r0, r2 - str r0, [sp, #0x28] - ldrb r2, [r4, #0xd] - ldr r0, [r4, #4] - add r3, r2, #0 - ldr r2, _0224BDD8 ; =ov02_02253D94 - mul r3, r1 - ldr r2, [r2, r3] - add r0, r0, r2 - str r0, [sp, #0x2c] - ldrb r2, [r4, #0xd] - ldr r0, [r4, #8] - add r3, r2, #0 - mul r3, r1 - ldr r1, _0224BDDC ; =ov02_02253D98 - ldr r1, [r1, r3] - add r0, r0, r1 - str r0, [sp, #0x30] - ldr r0, _0224BDE0 ; =SEQ_SE_DP_BOWA - bl PlaySE - ldr r0, [r6, #0x54] - add r6, #0x9c - str r0, [sp] - ldr r0, [r6] - mov r1, #0x6b - add r2, sp, #0x28 - add r3, sp, #0x1c - bl ov01_021F3C0C - ldrb r1, [r4, #0xd] - add r1, r4, r1 - strb r0, [r1, #0x10] - ldrb r0, [r4, #0xf] - add r0, r0, #1 - strb r0, [r4, #0xf] - b _0224BDCC -_0224BCFA: - ldrb r0, [r4, #0xe] - cmp r0, #0xc - bhs _0224BD06 - add r0, r0, #1 - strb r0, [r4, #0xe] - b _0224BDCC -_0224BD06: - mov r0, #0 - strb r0, [r4, #0xe] - ldrb r0, [r4, #0xd] - add r0, r0, #1 - strb r0, [r4, #0xd] - ldrb r1, [r4, #0xd] - ldrb r0, [r4, #0xc] - cmp r1, r0 - bhs _0224BD1E - mov r0, #1 - strb r0, [r4, #0xf] - b _0224BDCC -_0224BD1E: - add r0, r6, #0 - add r0, #0x9c - ldrb r1, [r4, #0x10] - ldr r0, [r0] - bl ov01_021F3B60 - bl ov01_021F3B38 - add r3, r0, #0 - ldr r0, [r6, #0x58] - mov r1, #0x10 - mov r2, #0 - bl ov01_021E8E40 - ldrb r0, [r4, #0xf] - add r0, r0, #1 - strb r0, [r4, #0xf] - b _0224BDCC -_0224BD42: - ldr r0, [r6, #0x58] - mov r1, #0x10 - mov r2, #0 - bl ov01_021E8E70 - ldr r0, [r6, #0x58] - mov r1, #0x20 - mov r2, #0 - bl ov01_021E8E70 - ldr r0, _0224BDE4 ; =SEQ_ME_ASA - bl PlayFanfare - ldrb r0, [r4, #0xf] - add r0, r0, #1 - strb r0, [r4, #0xf] - b _0224BDCC -_0224BD64: - ldr r0, [r6, #0x58] - mov r1, #0x10 - bl ov01_021E8F10 - cmp r0, #0 - beq _0224BDCC - ldr r0, [r6, #0x58] - mov r1, #0x20 - bl ov01_021E8F10 - cmp r0, #0 - beq _0224BDCC - bl IsFanfarePlaying - cmp r0, #0 - bne _0224BDCC - ldr r0, [r6, #0x54] - ldr r1, [r6, #0x58] - mov r2, #0x20 - bl ov01_021E8ED0 - ldr r0, [r6, #0x54] - ldr r1, [r6, #0x58] - mov r2, #0x10 - bl ov01_021E8ED0 - ldrb r0, [r4, #0xc] - mov r5, #0 - cmp r0, #0 - bls _0224BDBA -_0224BDA0: - add r0, r4, r5 - add r1, r6, #0 - add r1, #0x9c - ldrb r0, [r0, #0x10] - ldr r1, [r1] - bl ov01_021F36DC - add r0, r5, #1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - ldrb r0, [r4, #0xc] - cmp r5, r0 - blo _0224BDA0 -_0224BDBA: - ldrb r0, [r4, #0xf] - add r0, r0, #1 - strb r0, [r4, #0xf] - b _0224BDCC -_0224BDC2: - bl Heap_Free - add sp, #0x34 - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_0224BDCC: - mov r0, #0 - add sp, #0x34 - pop {r4, r5, r6, r7, pc} - nop -_0224BDD4: .word ov02_02253D90 -_0224BDD8: .word ov02_02253D94 -_0224BDDC: .word ov02_02253D98 -_0224BDE0: .word SEQ_SE_DP_BOWA -_0224BDE4: .word SEQ_ME_ASA - thumb_func_end PokecenterAnimRun - - thumb_func_start ov02_0224BDE8 -ov02_0224BDE8: ; 0x0224BDE8 - push {r4, r5, r6, lr} - add r6, r2, #0 - mov r2, #0 - add r4, r1, #0 - mov r1, #0xd0 - add r3, r2, #0 - add r5, r0, #0 - bl sub_02054C20 - cmp r0, #0 - beq _0224BE1A - mov r0, #4 - add r1, r0, #0 - bl Heap_AllocAtEnd - add r2, r0, #0 - strb r6, [r2] - strb r4, [r2, #1] - mov r0, #0 - strb r0, [r2, #2] - ldr r0, [r5, #0x10] - ldr r1, _0224BE20 ; =ov02_0224BE24 - bl TaskManager_Call - pop {r4, r5, r6, pc} -_0224BE1A: - bl GF_AssertFail - pop {r4, r5, r6, pc} - .balign 4, 0 -_0224BE20: .word ov02_0224BE24 - thumb_func_end ov02_0224BDE8 - - thumb_func_start ov02_0224BE24 -ov02_0224BE24: ; 0x0224BE24 - push {r4, r5, r6, r7, lr} - sub sp, #0x1c - add r4, r0, #0 - bl TaskManager_GetFieldSystem - add r6, r0, #0 - add r0, r4, #0 - bl TaskManager_GetEnvironment - add r4, r0, #0 - ldrb r1, [r4, #2] - cmp r1, #4 - bls _0224BE40 - b _0224BF48 -_0224BE40: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0224BE4C: ; jump table - .short _0224BE56 - _0224BE4C - 2 ; case 0 - .short _0224BED2 - _0224BE4C - 2 ; case 1 - .short _0224BF00 - _0224BE4C - 2 ; case 2 - .short _0224BF2C - _0224BE4C - 2 ; case 3 - .short _0224BF3E - _0224BE4C - 2 ; case 4 -_0224BE56: - ldr r1, [r6, #0x34] - mov r0, #0xd0 - bl ov01_021FB90C - ldr r0, [r0] - bl NNS_G3dGetMdlSet - cmp r0, #0 - beq _0224BE88 - add r2, r0, #0 - add r2, #8 - beq _0224BE7C - ldrb r1, [r0, #9] - cmp r1, #0 - bls _0224BE7C - ldrh r1, [r0, #0xe] - add r1, r2, r1 - add r1, r1, #4 - b _0224BE7E -_0224BE7C: - mov r1, #0 -_0224BE7E: - cmp r1, #0 - beq _0224BE88 - ldr r1, [r1] - add r7, r0, r1 - b _0224BE8A -_0224BE88: - mov r7, #0 -_0224BE8A: - add r0, r6, #0 - mov r1, #0xd0 - add r2, sp, #0x18 - mov r3, #0 - bl sub_02054C20 - cmp r0, #0 - bne _0224BE9E - bl GF_AssertFail -_0224BE9E: - ldr r0, [sp, #0x18] - bl ov01_021F3B38 - add r5, r0, #0 - ldr r0, [r6, #0x34] - bl ov01_021FB9E0 - str r5, [sp] - str r7, [sp, #4] - str r0, [sp, #8] - mov r0, #2 - str r0, [sp, #0xc] - ldrb r0, [r4] - mov r2, #1 - mov r3, #0xd0 - str r0, [sp, #0x10] - mov r0, #0 - str r0, [sp, #0x14] - ldr r0, [r6, #0x54] - ldr r1, [r6, #0x58] - bl ov01_021E8DE8 - ldrb r0, [r4, #2] - add r0, r0, #1 - strb r0, [r4, #2] - b _0224BF48 -_0224BED2: - ldrb r0, [r4, #1] - mov r1, #1 - cmp r0, #0 - beq _0224BEE0 - cmp r0, #1 - beq _0224BEE0 - mov r1, #0 -_0224BEE0: - cmp r1, #0 - bne _0224BEE8 - bl GF_AssertFail -_0224BEE8: - ldrb r2, [r4, #1] - ldr r0, [r6, #0x58] - mov r1, #1 - bl ov01_021E8E70 - ldr r0, _0224BF50 ; =SEQ_SE_DP_ELEBETA2 - bl PlaySE - ldrb r0, [r4, #2] - add r0, r0, #1 - strb r0, [r4, #2] - b _0224BF48 -_0224BF00: - ldr r0, [r6, #0x58] - mov r1, #1 - bl ov01_021E8F10 - cmp r0, #0 - beq _0224BF48 - ldr r0, _0224BF50 ; =SEQ_SE_DP_ELEBETA2 - mov r1, #0 - bl StopSE - ldr r0, _0224BF54 ; =SEQ_SE_DP_PINPON - bl PlaySE - ldr r0, [r6, #0x54] - ldr r1, [r6, #0x58] - mov r2, #1 - bl ov01_021E8ED0 - ldrb r0, [r4, #2] - add r0, r0, #1 - strb r0, [r4, #2] - b _0224BF48 -_0224BF2C: - ldr r0, _0224BF54 ; =SEQ_SE_DP_PINPON - bl IsSEPlaying - cmp r0, #0 - bne _0224BF48 - ldrb r0, [r4, #2] - add r0, r0, #1 - strb r0, [r4, #2] - b _0224BF48 -_0224BF3E: - bl Heap_Free - add sp, #0x1c - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_0224BF48: - mov r0, #0 - add sp, #0x1c - pop {r4, r5, r6, r7, pc} - nop -_0224BF50: .word SEQ_SE_DP_ELEBETA2 -_0224BF54: .word SEQ_SE_DP_PINPON - thumb_func_end ov02_0224BE24 - - thumb_func_start ov02_0224BF58 -ov02_0224BF58: ; 0x0224BF58 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x28 - ldr r2, _0224BFBC ; =ov02_022536E8 - add r7, r1, #0 - ldr r3, [r2] - ldr r2, [r2, #4] - str r3, [sp, #0x18] - str r2, [sp, #0x1c] - add r2, sp, #0x20 - str r2, [sp] - add r1, sp, #0x18 - mov r2, #2 - add r3, sp, #0x24 - add r5, r0, #0 - bl sub_02054C90 - cmp r0, #0 - beq _0224BFB4 - ldr r0, [r5, #0x34] - bl ov01_021FB9E0 - add r6, r0, #0 - ldr r0, [sp, #0x24] - bl ov01_021F3B38 - add r4, r0, #0 - ldr r0, [sp, #0x24] - bl ov01_021F3B3C - str r4, [sp] - str r0, [sp, #4] - str r6, [sp, #8] - mov r0, #2 - str r0, [sp, #0xc] - mov r0, #1 - str r0, [sp, #0x10] - mov r0, #0 - str r0, [sp, #0x14] - ldr r0, [r5, #0x54] - ldr r1, [r5, #0x58] - ldr r3, [sp, #0x20] - add r2, r7, #0 - bl ov01_021E8DE8 - add sp, #0x28 - pop {r3, r4, r5, r6, r7, pc} -_0224BFB4: - bl GF_AssertFail - add sp, #0x28 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_0224BFBC: .word ov02_022536E8 - thumb_func_end ov02_0224BF58 - - thumb_func_start ov02_0224BFC0 -ov02_0224BFC0: ; 0x0224BFC0 - ldr r3, _0224BFC8 ; =ov01_021E8E70 - ldr r0, [r0, #0x58] - mov r2, #0 - bx r3 - .balign 4, 0 -_0224BFC8: .word ov01_021E8E70 - thumb_func_end ov02_0224BFC0 - - thumb_func_start ov02_0224BFCC -ov02_0224BFCC: ; 0x0224BFCC - ldr r3, _0224BFD4 ; =ov01_021E8E70 - ldr r0, [r0, #0x58] - mov r2, #1 - bx r3 - .balign 4, 0 -_0224BFD4: .word ov01_021E8E70 - thumb_func_end ov02_0224BFCC - - thumb_func_start CreateFieldEscapeRopeTaskEnv -CreateFieldEscapeRopeTaskEnv: ; 0x0224BFD8 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r0, r1, #0 - mov r1, #0x30 - bl ov02_0224C660 - add r4, r0, #0 - mov r0, #0 - str r0, [r4, #0xc] - str r5, [r4, #0x24] - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetMapObject - str r0, [r4, #0x20] - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetState - sub r0, r0, #1 - cmp r0, #1 - bhi _0224C006 - mov r0, #0 - str r0, [r4, #8] - b _0224C01A -_0224C006: - add r0, r5, #0 - bl FollowMon_IsActive - cmp r0, #0 - beq _0224C016 - mov r0, #1 - str r0, [r4, #8] - b _0224C01A -_0224C016: - mov r0, #0 - str r0, [r4, #8] -_0224C01A: - add r0, r4, #0 - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end CreateFieldEscapeRopeTaskEnv - - thumb_func_start Task_FieldEscapeRope -Task_FieldEscapeRope: ; 0x0224C020 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - bl TaskManager_GetFieldSystem - add r7, r0, #0 - add r0, r6, #0 - bl TaskManager_GetEnvironment - add r5, r0, #0 -_0224C032: - ldr r3, [r5] - add r0, r6, #0 - lsl r4, r3, #2 - ldr r3, _0224C058 ; =ov02_02253700 - add r1, r7, #0 - ldr r3, [r3, r4] - add r2, r5, #0 - blx r3 - add r4, r0, #0 - cmp r4, #2 - bne _0224C04E - add r0, r5, #0 - bl Heap_Free -_0224C04E: - cmp r4, #1 - beq _0224C032 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - nop -_0224C058: .word ov02_02253700 - thumb_func_end Task_FieldEscapeRope - - thumb_func_start ov02_0224C05C -ov02_0224C05C: ; 0x0224C05C - push {r3, r4, r5, lr} - add r5, r1, #0 - add r0, r5, #0 - mov r1, #4 - add r4, r2, #0 - bl ov01_021FCD2C - ldr r2, _0224C0A4 ; =0xFFF6A000 - str r0, [r4, #0x1c] - mov r1, #1 - mov r3, #0xf - bl ov01_021FCD8C - ldr r0, [r4, #0x20] - ldr r1, _0224C0A8 ; =ov02_02253820 - bl EventObjectMovementMan_Create - str r0, [r4, #0x10] - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224C092 - add r5, #0xe4 - ldr r0, [r5] - ldr r1, _0224C0A8 ; =ov02_02253820 - bl EventObjectMovementMan_Create - str r0, [r4, #0x14] -_0224C092: - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - ldr r0, _0224C0AC ; =SEQ_SE_DP_KAIDAN2 - bl PlaySE - mov r0, #0 - pop {r3, r4, r5, pc} - nop -_0224C0A4: .word 0xFFF6A000 -_0224C0A8: .word ov02_02253820 -_0224C0AC: .word SEQ_SE_DP_KAIDAN2 - thumb_func_end ov02_0224C05C - - thumb_func_start ov02_0224C0B0 -ov02_0224C0B0: ; 0x0224C0B0 - push {r4, r5, lr} - sub sp, #0xc - add r4, r2, #0 - ldr r0, [r4, #0x10] - add r5, r1, #0 - bl EventObjectMovementMan_IsFinish - cmp r0, #0 - bne _0224C0C8 - add sp, #0xc - mov r0, #0 - pop {r4, r5, pc} -_0224C0C8: - ldr r0, [r4, #0x10] - bl EventObjectMovementMan_Delete - ldr r0, [r4, #0x20] - ldr r1, _0224C144 ; =ov02_02253794 - bl EventObjectMovementMan_Create - str r0, [r4, #0x10] - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224C0F0 - ldr r0, [r4, #0x14] - bl EventObjectMovementMan_Delete - add r5, #0xe4 - ldr r0, [r5] - ldr r1, _0224C144 ; =ov02_02253794 - bl EventObjectMovementMan_Create - str r0, [r4, #0x14] -_0224C0F0: - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - cmp r0, #8 - bge _0224C100 - add sp, #0xc - mov r0, #0 - pop {r4, r5, pc} -_0224C100: - ldr r0, [r4, #0xc] - cmp r0, #2 - bne _0224C120 - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - mov r0, #0 - add r1, r0, #0 - add r2, r0, #0 - add r3, r0, #0 - bl BeginNormalPaletteFade - b _0224C138 -_0224C120: - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - mov r0, #0 - ldr r3, _0224C148 ; =0x00007FFF - add r1, r0, #0 - add r2, r0, #0 - bl BeginNormalPaletteFade -_0224C138: - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - add sp, #0xc - pop {r4, r5, pc} - .balign 4, 0 -_0224C144: .word ov02_02253794 -_0224C148: .word 0x00007FFF - thumb_func_end ov02_0224C0B0 - - thumb_func_start ov02_0224C14C -ov02_0224C14C: ; 0x0224C14C - push {r3, r4, r5, lr} - add r4, r2, #0 - ldr r0, [r4, #0x10] - add r5, r1, #0 - bl EventObjectMovementMan_IsFinish - cmp r0, #1 - bne _0224C184 - ldr r0, [r4, #0x10] - bl EventObjectMovementMan_Delete - ldr r0, [r4, #0x20] - ldr r1, _0224C1B4 ; =ov02_02253794 - bl EventObjectMovementMan_Create - str r0, [r4, #0x10] - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224C184 - ldr r0, [r4, #0x14] - bl EventObjectMovementMan_Delete - add r5, #0xe4 - ldr r0, [r5] - ldr r1, _0224C1B4 ; =ov02_02253794 - bl EventObjectMovementMan_Create - str r0, [r4, #0x14] -_0224C184: - bl IsPaletteFadeFinished - cmp r0, #0 - bne _0224C190 - mov r0, #0 - pop {r3, r4, r5, pc} -_0224C190: - ldr r0, [r4, #0x10] - bl EventObjectMovementMan_Delete - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224C1A2 - ldr r0, [r4, #0x14] - bl EventObjectMovementMan_Delete -_0224C1A2: - ldr r0, [r4, #0x1c] - bl ov01_021FCD78 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #1 - pop {r3, r4, r5, pc} - nop -_0224C1B4: .word ov02_02253794 - thumb_func_end ov02_0224C14C - - thumb_func_start ov02_0224C1B8 -ov02_0224C1B8: ; 0x0224C1B8 - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r0, [r1, #0xc] - add r4, r2, #0 - bl Save_LocalFieldData_Get - bl LocalFieldData_GetSpecialSpawnWarpPtr - add r1, r0, #0 - ldr r2, [r4, #0xc] - add r0, r5, #0 - bl sub_02053B04 - mov r0, #2 - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end ov02_0224C1B8 - - thumb_func_start ov02_0224C1D8 -ov02_0224C1D8: ; 0x0224C1D8 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r0, r1, #0 - mov r1, #0x30 - add r6, r2, #0 - bl ov02_0224C660 - add r4, r0, #0 - str r6, [r4, #0xc] - str r5, [r4, #0x24] - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetMapObject - str r0, [r4, #0x20] - add r0, r4, #0 - pop {r4, r5, r6, pc} - thumb_func_end ov02_0224C1D8 - - thumb_func_start ov02_0224C1F8 -ov02_0224C1F8: ; 0x0224C1F8 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - bl TaskManager_GetFieldSystem - add r6, r0, #0 - add r0, r5, #0 - bl TaskManager_GetEnvironment - ldr r7, _0224C230 ; =ov02_022536F0 - add r4, r0, #0 -_0224C20C: - ldr r3, [r4] - add r0, r5, #0 - lsl r3, r3, #2 - ldr r3, [r7, r3] - add r1, r6, #0 - add r2, r4, #0 - blx r3 - cmp r0, #2 - bne _0224C228 - add r0, r4, #0 - bl Heap_Free - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_0224C228: - cmp r0, #1 - beq _0224C20C - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_0224C230: .word ov02_022536F0 - thumb_func_end ov02_0224C1F8 - - thumb_func_start ov02_0224C234 -ov02_0224C234: ; 0x0224C234 - push {r4, r5, lr} - sub sp, #0xc - add r4, r2, #0 - ldr r0, [r4, #0xc] - add r5, r1, #0 - cmp r0, #2 - bne _0224C25A - mov r0, #6 - str r0, [sp] - mov r1, #1 - str r1, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - mov r0, #0 - add r2, r1, #0 - add r3, r0, #0 - bl BeginNormalPaletteFade - b _0224C270 -_0224C25A: - mov r0, #6 - str r0, [sp] - mov r1, #1 - str r1, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - ldr r3, _0224C29C ; =0x00007FFF - mov r0, #0 - add r2, r1, #0 - bl BeginNormalPaletteFade -_0224C270: - add r0, r5, #0 - mov r1, #4 - bl ov01_021FCD2C - mov r1, #1 - ldr r2, _0224C2A0 ; =0xFFF6A000 - str r0, [r4, #0x1c] - add r3, r1, #0 - bl ov01_021FCD8C - ldr r0, [r4, #0x20] - ldr r1, _0224C2A4 ; =ov02_02253794 - bl EventObjectMovementMan_Create - str r0, [r4, #0x10] - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - add sp, #0xc - pop {r4, r5, pc} - nop -_0224C29C: .word 0x00007FFF -_0224C2A0: .word 0xFFF6A000 -_0224C2A4: .word ov02_02253794 - thumb_func_end ov02_0224C234 - - thumb_func_start ov02_0224C2A8 -ov02_0224C2A8: ; 0x0224C2A8 - push {r4, lr} - add r4, r2, #0 - ldr r0, [r4, #0x10] - bl EventObjectMovementMan_IsFinish - cmp r0, #1 - bne _0224C2C6 - ldr r0, [r4, #0x10] - bl EventObjectMovementMan_Delete - ldr r0, [r4, #0x20] - ldr r1, _0224C2E8 ; =ov02_02253794 - bl EventObjectMovementMan_Create - str r0, [r4, #0x10] -_0224C2C6: - bl IsPaletteFadeFinished - cmp r0, #0 - bne _0224C2D2 - mov r0, #0 - pop {r4, pc} -_0224C2D2: - ldr r0, [r4, #0x1c] - mov r1, #2 - mov r2, #0 - mov r3, #0x3c - bl ov01_021FCD8C - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #1 - pop {r4, pc} - .balign 4, 0 -_0224C2E8: .word ov02_02253794 - thumb_func_end ov02_0224C2A8 - - thumb_func_start ov02_0224C2EC -ov02_0224C2EC: ; 0x0224C2EC - push {r4, lr} - add r4, r2, #0 - ldr r0, [r4, #0x10] - bl EventObjectMovementMan_IsFinish - cmp r0, #0 - bne _0224C2FE - mov r0, #0 - pop {r4, pc} -_0224C2FE: - ldr r0, [r4, #0x10] - bl EventObjectMovementMan_Delete - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - cmp r0, #4 - ldr r0, [r4, #0x20] - bge _0224C31C - ldr r1, _0224C330 ; =ov02_02253794 - bl EventObjectMovementMan_Create - str r0, [r4, #0x10] - mov r0, #0 - pop {r4, pc} -_0224C31C: - ldr r1, _0224C334 ; =ov02_02253884 - bl EventObjectMovementMan_Create - str r0, [r4, #0x10] - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - pop {r4, pc} - nop -_0224C330: .word ov02_02253794 -_0224C334: .word ov02_02253884 - thumb_func_end ov02_0224C2EC - - thumb_func_start ov02_0224C338 -ov02_0224C338: ; 0x0224C338 - push {r4, lr} - add r4, r2, #0 - ldr r0, [r4, #0x10] - bl EventObjectMovementMan_IsFinish - cmp r0, #0 - bne _0224C34A - mov r0, #0 - pop {r4, pc} -_0224C34A: - ldr r0, [r4, #0x1c] - bl ov01_021FCD6C - cmp r0, #0 - bne _0224C358 - mov r0, #0 - pop {r4, pc} -_0224C358: - ldr r0, [r4, #0x1c] - bl ov01_021FCD78 - ldr r0, [r4, #0x10] - bl EventObjectMovementMan_Delete - mov r0, #2 - pop {r4, pc} - thumb_func_end ov02_0224C338 - - thumb_func_start FieldMoveTask_CreateDigEnvironment -FieldMoveTask_CreateDigEnvironment: ; 0x0224C368 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r6, r1, #0 - add r0, r3, #0 - mov r1, #0x30 - add r7, r2, #0 - bl ov02_0224C660 - add r4, r0, #0 - mov r0, #1 - str r0, [r4, #0xc] - str r5, [r4, #0x24] - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetMapObject - str r0, [r4, #0x20] - add r0, r5, #0 - str r6, [r4, #0x28] - bl ov01_02206268 - cmp r0, #0 - beq _0224C3A4 - add r0, r5, #0 - bl ov01_022062CC - cmp r7, r0 - bne _0224C3A4 - mov r0, #1 - str r0, [r4, #8] - b _0224C3A8 -_0224C3A4: - mov r0, #0 - str r0, [r4, #8] -_0224C3A8: - add r0, r4, #0 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end FieldMoveTask_CreateDigEnvironment - - thumb_func_start Task_FieldDig -Task_FieldDig: ; 0x0224C3AC - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - bl TaskManager_GetFieldSystem - add r6, r0, #0 - add r0, r7, #0 - bl TaskManager_GetEnvironment - add r4, r0, #0 - add r0, r7, #0 - bl TaskManager_GetStatePtr - add r5, r0, #0 - ldr r0, [r5] - cmp r0, #3 - bhi _0224C4A2 - add r1, r0, r0 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0224C3D8: ; jump table - .short _0224C3E0 - _0224C3D8 - 2 ; case 0 - .short _0224C3F8 - _0224C3D8 - 2 ; case 1 - .short _0224C42A - _0224C3D8 - 2 ; case 2 - .short _0224C45C - _0224C3D8 - 2 ; case 3 -_0224C3E0: - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224C3F0 - ldr r1, _0224C4A8 ; =ov01_02205A60 - add r0, r7, #0 - mov r2, #0 - bl TaskManager_Call -_0224C3F0: - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _0224C4A2 -_0224C3F8: - add r0, r0, #1 - str r0, [r5] - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224C42A - add r0, r6, #0 - mov r1, #4 - bl ov02_02250780 - cmp r0, #0 - beq _0224C41E - mov r0, #0x42 - lsl r0, r0, #2 - ldr r0, [r6, r0] - mov r1, #1 - mov r4, #2 - bl FieldSystem_UnkSub108_AddMonMood - b _0224C420 -_0224C41E: - mov r4, #1 -_0224C420: - add r0, r6, #0 - add r1, r4, #0 - bl ov02_022507B4 - b _0224C4A2 -_0224C42A: - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224C456 - ldr r0, [r4, #0x28] - mov r1, #5 - mov r2, #0 - bl GetMonData - str r0, [sp] - ldr r0, [r4, #0x28] - mov r1, #0x70 - mov r2, #0 - bl GetMonData - add r1, r0, #0 - ldr r0, [sp] - lsl r1, r1, #0x18 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - lsr r1, r1, #0x18 - bl PlayCry -_0224C456: - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] -_0224C45C: - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224C482 - bl IsCryFinished - cmp r0, #0 - beq _0224C46E - mov r5, #0 - b _0224C494 -_0224C46E: - ldr r3, [r4] - add r0, r7, #0 - lsl r5, r3, #2 - ldr r3, _0224C4AC ; =ov02_02253710 - add r1, r6, #0 - ldr r3, [r3, r5] - add r2, r4, #0 - blx r3 - add r5, r0, #0 - b _0224C494 -_0224C482: - ldr r3, [r4] - add r0, r7, #0 - lsl r5, r3, #2 - ldr r3, _0224C4B0 ; =ov02_02253754 - add r1, r6, #0 - ldr r3, [r3, r5] - add r2, r4, #0 - blx r3 - add r5, r0, #0 -_0224C494: - cmp r5, #2 - bne _0224C49E - add r0, r4, #0 - bl Heap_Free -_0224C49E: - cmp r5, #1 - beq _0224C45C -_0224C4A2: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - nop -_0224C4A8: .word ov01_02205A60 -_0224C4AC: .word ov02_02253710 -_0224C4B0: .word ov02_02253754 - thumb_func_end Task_FieldDig - - thumb_func_start ov02_0224C4B4 -ov02_0224C4B4: ; 0x0224C4B4 - push {r3, r4, r5, lr} - add r5, r1, #0 - ldr r0, [r5, #0x40] - add r4, r2, #0 - bl PlayerAvatar_GetGender - add r3, r0, #0 - ldr r2, [r4, #0x28] - add r0, r5, #0 - mov r1, #0 - bl ov02_02249458 - str r0, [r4, #0x18] - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - pop {r3, r4, r5, pc} - thumb_func_end ov02_0224C4B4 - - thumb_func_start ov02_0224C4D8 -ov02_0224C4D8: ; 0x0224C4D8 - push {r4, lr} - add r4, r2, #0 - ldr r0, [r4, #0x18] - bl ov02_0224953C - cmp r0, #0 - bne _0224C4EA - mov r0, #0 - pop {r4, pc} -_0224C4EA: - ldr r0, [r4, #0x18] - bl ov02_02249548 - ldr r0, [r4, #0x24] - bl ov01_02205D68 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - pop {r4, pc} - thumb_func_end ov02_0224C4D8 - - thumb_func_start FieldMoveTask_CreateTeleportEnvironment -FieldMoveTask_CreateTeleportEnvironment: ; 0x0224C500 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r6, r1, #0 - add r0, r3, #0 - mov r1, #0x30 - add r7, r2, #0 - bl ov02_0224C660 - add r4, r0, #0 - mov r0, #2 - str r0, [r4, #0xc] - str r5, [r4, #0x24] - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetMapObject - str r0, [r4, #0x20] - str r6, [r4, #0x28] - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetState - sub r0, r0, #1 - cmp r0, #1 - bhi _0224C534 - mov r0, #0 - str r0, [r4, #8] - b _0224C552 -_0224C534: - add r0, r5, #0 - bl ov01_02206268 - cmp r0, #0 - beq _0224C54E - add r0, r5, #0 - bl ov01_022062CC - cmp r7, r0 - bne _0224C54E - mov r0, #1 - str r0, [r4, #8] - b _0224C552 -_0224C54E: - mov r0, #0 - str r0, [r4, #8] -_0224C552: - add r0, r4, #0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end FieldMoveTask_CreateTeleportEnvironment - - thumb_func_start Task_FieldTeleport -Task_FieldTeleport: ; 0x0224C558 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - bl TaskManager_GetFieldSystem - add r6, r0, #0 - add r0, r7, #0 - bl TaskManager_GetEnvironment - add r4, r0, #0 - add r0, r7, #0 - bl TaskManager_GetStatePtr - add r5, r0, #0 - ldr r0, [r5] - cmp r0, #3 - bhi _0224C64E - add r1, r0, r0 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0224C584: ; jump table - .short _0224C58C - _0224C584 - 2 ; case 0 - .short _0224C5A4 - _0224C584 - 2 ; case 1 - .short _0224C5D6 - _0224C584 - 2 ; case 2 - .short _0224C608 - _0224C584 - 2 ; case 3 -_0224C58C: - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224C59C - ldr r1, _0224C654 ; =ov01_02205A60 - add r0, r7, #0 - mov r2, #0 - bl TaskManager_Call -_0224C59C: - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _0224C64E -_0224C5A4: - add r0, r0, #1 - str r0, [r5] - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224C5D6 - add r0, r6, #0 - mov r1, #0xe - bl ov02_02250780 - cmp r0, #0 - beq _0224C5CA - mov r0, #0x42 - lsl r0, r0, #2 - ldr r0, [r6, r0] - mov r1, #1 - mov r4, #2 - bl FieldSystem_UnkSub108_AddMonMood - b _0224C5CC -_0224C5CA: - mov r4, #1 -_0224C5CC: - add r0, r6, #0 - add r1, r4, #0 - bl ov02_022507B4 - b _0224C64E -_0224C5D6: - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224C602 - ldr r0, [r4, #0x28] - mov r1, #5 - mov r2, #0 - bl GetMonData - str r0, [sp] - ldr r0, [r4, #0x28] - mov r1, #0x70 - mov r2, #0 - bl GetMonData - add r1, r0, #0 - ldr r0, [sp] - lsl r1, r1, #0x18 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - lsr r1, r1, #0x18 - bl PlayCry -_0224C602: - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] -_0224C608: - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224C62E - bl IsCryFinished - cmp r0, #0 - beq _0224C61A - mov r5, #0 - b _0224C640 -_0224C61A: - ldr r3, [r4] - add r0, r7, #0 - lsl r5, r3, #2 - ldr r3, _0224C658 ; =ov02_0225373C - add r1, r6, #0 - ldr r3, [r3, r5] - add r2, r4, #0 - blx r3 - add r5, r0, #0 - b _0224C640 -_0224C62E: - ldr r3, [r4] - add r0, r7, #0 - lsl r5, r3, #2 - ldr r3, _0224C65C ; =ov02_02253724 - add r1, r6, #0 - ldr r3, [r3, r5] - add r2, r4, #0 - blx r3 - add r5, r0, #0 -_0224C640: - cmp r5, #2 - bne _0224C64A - add r0, r4, #0 - bl Heap_Free -_0224C64A: - cmp r5, #1 - beq _0224C608 -_0224C64E: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - nop -_0224C654: .word ov01_02205A60 -_0224C658: .word ov02_0225373C -_0224C65C: .word ov02_02253724 - thumb_func_end Task_FieldTeleport - - thumb_func_start ov02_0224C660 -ov02_0224C660: ; 0x0224C660 - push {r3, r4, r5, lr} - add r5, r1, #0 - bl Heap_AllocAtEnd - add r4, r0, #0 - bne _0224C670 - bl GF_AssertFail -_0224C670: - add r0, r4, #0 - mov r1, #0 - add r2, r5, #0 - bl memset - add r0, r4, #0 - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end ov02_0224C660 - - thumb_func_start ov02_0224C680 -ov02_0224C680: ; 0x0224C680 - push {r4, lr} - add r4, r2, #0 - add r0, r1, #0 - mov r1, #2 - mov r2, #1 - bl ov01_022060B8 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - pop {r4, pc} - thumb_func_end ov02_0224C680 - - thumb_func_start ov02_0224C698 -ov02_0224C698: ; 0x0224C698 - push {r3, r4, r5, lr} - add r5, r1, #0 - add r0, r5, #0 - mov r1, #4 - add r4, r2, #0 - bl ov01_021FCD2C - ldr r2, _0224C6D0 ; =0xFFF6A000 - mov r1, #1 - mov r3, #0xf - str r0, [r4, #0x1c] - bl ov01_021FCD8C - add r5, #0xe4 - ldr r0, [r5] - ldr r1, _0224C6D4 ; =ov02_02253770 - bl EventObjectMovementMan_Create - str r0, [r4, #0x14] - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - ldr r0, _0224C6D8 ; =SEQ_SE_DP_TELE - bl PlaySE - mov r0, #0 - pop {r3, r4, r5, pc} - nop -_0224C6D0: .word 0xFFF6A000 -_0224C6D4: .word ov02_02253770 -_0224C6D8: .word SEQ_SE_DP_TELE - thumb_func_end ov02_0224C698 - - thumb_func_start ov02_0224C6DC -ov02_0224C6DC: ; 0x0224C6DC - push {r3, r4, r5, lr} - add r4, r2, #0 - ldr r0, [r4, #0x14] - add r5, r1, #0 - bl EventObjectMovementMan_IsFinish - cmp r0, #0 - bne _0224C6F0 - mov r0, #0 - pop {r3, r4, r5, pc} -_0224C6F0: - ldr r0, [r4, #0x14] - bl EventObjectMovementMan_Delete - ldr r0, [r4, #0x20] - ldr r1, _0224C718 ; =ov02_02253820 - bl EventObjectMovementMan_Create - add r5, #0xe4 - str r0, [r4, #0x10] - ldr r0, [r5] - ldr r1, _0224C718 ; =ov02_02253820 - bl EventObjectMovementMan_Create - str r0, [r4, #0x14] - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - pop {r3, r4, r5, pc} - nop -_0224C718: .word ov02_02253820 - thumb_func_end ov02_0224C6DC - - thumb_func_start ov02_0224C71C -ov02_0224C71C: ; 0x0224C71C - push {r4, lr} - add r0, r1, #0 - mov r1, #4 - add r4, r2, #0 - bl ov01_021FCD2C - ldr r2, _0224C750 ; =0xFFF6A000 - str r0, [r4, #0x1c] - mov r1, #1 - mov r3, #0xf - bl ov01_021FCD8C - ldr r0, [r4, #0x20] - ldr r1, _0224C754 ; =ov02_02253820 - bl EventObjectMovementMan_Create - str r0, [r4, #0x10] - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - ldr r0, _0224C758 ; =SEQ_SE_DP_TELE - bl PlaySE - mov r0, #0 - pop {r4, pc} - nop -_0224C750: .word 0xFFF6A000 -_0224C754: .word ov02_02253820 -_0224C758: .word SEQ_SE_DP_TELE - thumb_func_end ov02_0224C71C - - thumb_func_start ov02_0224C75C -ov02_0224C75C: ; 0x0224C75C - push {r4, r5, lr} - sub sp, #0xc - add r4, r2, #0 - ldr r0, [r4, #0x10] - add r5, r1, #0 - bl EventObjectMovementMan_IsFinish - cmp r0, #0 - bne _0224C774 - add sp, #0xc - mov r0, #0 - pop {r4, r5, pc} -_0224C774: - ldr r0, [r4, #0x10] - bl EventObjectMovementMan_Delete - ldr r0, [r4, #0x20] - ldr r1, _0224C7D0 ; =ov02_02253794 - bl EventObjectMovementMan_Create - str r0, [r4, #0x10] - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224C79C - ldr r0, [r4, #0x14] - bl EventObjectMovementMan_Delete - add r5, #0xe4 - ldr r0, [r5] - ldr r1, _0224C7D0 ; =ov02_02253794 - bl EventObjectMovementMan_Create - str r0, [r4, #0x14] -_0224C79C: - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - cmp r0, #8 - bge _0224C7AC - add sp, #0xc - mov r0, #0 - pop {r4, r5, pc} -_0224C7AC: - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - mov r0, #0 - add r1, r0, #0 - add r2, r0, #0 - add r3, r0, #0 - bl BeginNormalPaletteFade - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - add sp, #0xc - pop {r4, r5, pc} - .balign 4, 0 -_0224C7D0: .word ov02_02253794 - thumb_func_end ov02_0224C75C - - thumb_func_start ov02_0224C7D4 -ov02_0224C7D4: ; 0x0224C7D4 - push {r3, r4, r5, lr} - add r4, r2, #0 - ldr r0, [r4, #0x10] - add r5, r1, #0 - bl EventObjectMovementMan_IsFinish - cmp r0, #1 - bne _0224C80C - ldr r0, [r4, #0x10] - bl EventObjectMovementMan_Delete - ldr r0, [r4, #0x20] - ldr r1, _0224C83C ; =ov02_02253794 - bl EventObjectMovementMan_Create - str r0, [r4, #0x10] - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224C80C - ldr r0, [r4, #0x14] - bl EventObjectMovementMan_Delete - add r5, #0xe4 - ldr r0, [r5] - ldr r1, _0224C83C ; =ov02_02253794 - bl EventObjectMovementMan_Create - str r0, [r4, #0x14] -_0224C80C: - bl IsPaletteFadeFinished - cmp r0, #0 - bne _0224C818 - mov r0, #0 - pop {r3, r4, r5, pc} -_0224C818: - ldr r0, [r4, #0x10] - bl EventObjectMovementMan_Delete - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224C82A - ldr r0, [r4, #0x14] - bl EventObjectMovementMan_Delete -_0224C82A: - ldr r0, [r4, #0x1c] - bl ov01_021FCD78 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #1 - pop {r3, r4, r5, pc} - nop -_0224C83C: .word ov02_02253794 - thumb_func_end ov02_0224C7D4 - - thumb_func_start ov02_0224C840 -ov02_0224C840: ; 0x0224C840 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r5, r0, #0 - ldr r0, [r1, #0xc] - add r4, r2, #0 - bl Save_LocalFieldData_Get - add r6, r0, #0 - bl LocalFieldData_GetBlackoutSpawn - add r1, sp, #0 - add r7, r0, #0 - bl GetFlyWarpData - add r0, r6, #0 - bl LocalFieldData_GetSpecialSpawnWarpPtr - add r1, r0, #0 - add r0, r7, #0 - bl GetSpecialSpawnWarpData - ldr r2, [r4, #0xc] - add r0, r5, #0 - add r1, sp, #0 - bl sub_02053B04 - mov r0, #2 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_0224C840 - - thumb_func_start ov02_0224C87C -ov02_0224C87C: ; 0x0224C87C - push {r3, r4, r5, lr} - add r5, r1, #0 - add r0, r5, #0 - mov r1, #4 - add r4, r2, #0 - bl ov01_021FCD2C - ldr r2, _0224C8C4 ; =0xFFF6A000 - str r0, [r4, #0x1c] - mov r1, #1 - mov r3, #0xf - bl ov01_021FCD8C - ldr r0, [r4, #0x20] - ldr r1, _0224C8C8 ; =ov02_022537DC - bl EventObjectMovementMan_Create - str r0, [r4, #0x10] - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224C8B2 - add r5, #0xe4 - ldr r0, [r5] - ldr r1, _0224C8C8 ; =ov02_022537DC - bl EventObjectMovementMan_Create - str r0, [r4, #0x14] -_0224C8B2: - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - ldr r0, _0224C8CC ; =SEQ_SE_DP_KAIDAN2 - bl PlaySE - mov r0, #0 - pop {r3, r4, r5, pc} - nop -_0224C8C4: .word 0xFFF6A000 -_0224C8C8: .word ov02_022537DC -_0224C8CC: .word SEQ_SE_DP_KAIDAN2 - thumb_func_end ov02_0224C87C - - thumb_func_start ov02_0224C8D0 -ov02_0224C8D0: ; 0x0224C8D0 - push {r3, r4, r5, lr} - add r4, r2, #0 - ldr r0, [r4, #0x10] - add r5, r1, #0 - bl EventObjectMovementMan_IsFinish - cmp r0, #0 - bne _0224C8E4 - mov r0, #0 - pop {r3, r4, r5, pc} -_0224C8E4: - ldr r0, [r4, #0x10] - bl EventObjectMovementMan_Delete - ldr r0, [r4, #0x20] - ldr r1, _0224C938 ; =ov02_022537B8 - bl EventObjectMovementMan_Create - str r0, [r4, #0x10] - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224C90E - ldr r0, [r4, #0x14] - bl EventObjectMovementMan_Delete - add r0, r5, #0 - add r0, #0xe4 - ldr r0, [r0] - ldr r1, _0224C938 ; =ov02_022537B8 - bl EventObjectMovementMan_Create - str r0, [r4, #0x14] -_0224C90E: - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetState - cmp r0, #2 - beq _0224C92E - ldr r0, [r4, #8] - cmp r0, #0 - ldr r0, [r4, #0x24] - beq _0224C928 - bl ov02_0224DDF4 - str r0, [r4, #0x2c] - b _0224C92E -_0224C928: - bl ov02_0224DDE0 - str r0, [r4, #0x2c] -_0224C92E: - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - pop {r3, r4, r5, pc} - .balign 4, 0 -_0224C938: .word ov02_022537B8 - thumb_func_end ov02_0224C8D0 - - thumb_func_start ov02_0224C93C -ov02_0224C93C: ; 0x0224C93C - push {r4, r5, lr} - sub sp, #0xc - add r4, r2, #0 - ldr r0, [r4, #0x10] - add r5, r1, #0 - bl EventObjectMovementMan_IsFinish - cmp r0, #0 - bne _0224C954 - add sp, #0xc - mov r0, #0 - pop {r4, r5, pc} -_0224C954: - ldr r0, [r4, #0x10] - bl EventObjectMovementMan_Delete - ldr r0, [r4, #0x20] - ldr r1, _0224C9B0 ; =ov02_02253794 - bl EventObjectMovementMan_Create - str r0, [r4, #0x10] - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224C97C - ldr r0, [r4, #0x14] - bl EventObjectMovementMan_Delete - add r5, #0xe4 - ldr r0, [r5] - ldr r1, _0224C9B0 ; =ov02_02253794 - bl EventObjectMovementMan_Create - str r0, [r4, #0x14] -_0224C97C: - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - cmp r0, #8 - bge _0224C98C - add sp, #0xc - mov r0, #0 - pop {r4, r5, pc} -_0224C98C: - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - mov r0, #0 - ldr r3, _0224C9B4 ; =0x00007FFF - add r1, r0, #0 - add r2, r0, #0 - bl BeginNormalPaletteFade - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - add sp, #0xc - pop {r4, r5, pc} - .balign 4, 0 -_0224C9B0: .word ov02_02253794 -_0224C9B4: .word 0x00007FFF - thumb_func_end ov02_0224C93C - - thumb_func_start ov02_0224C9B8 -ov02_0224C9B8: ; 0x0224C9B8 - push {r3, r4, r5, lr} - add r4, r2, #0 - ldr r0, [r4, #0x10] - add r5, r1, #0 - bl EventObjectMovementMan_IsFinish - cmp r0, #1 - bne _0224C9F2 - ldr r0, [r4, #0x10] - bl EventObjectMovementMan_Delete - ldr r0, [r4, #0x20] - ldr r1, _0224CA34 ; =ov02_02253794 - bl EventObjectMovementMan_Create - str r0, [r4, #0x10] - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224C9F2 - ldr r0, [r4, #0x14] - bl EventObjectMovementMan_Delete - add r0, r5, #0 - add r0, #0xe4 - ldr r0, [r0] - ldr r1, _0224CA34 ; =ov02_02253794 - bl EventObjectMovementMan_Create - str r0, [r4, #0x14] -_0224C9F2: - bl IsPaletteFadeFinished - cmp r0, #0 - bne _0224C9FE - mov r0, #0 - pop {r3, r4, r5, pc} -_0224C9FE: - ldr r0, [r4, #0x10] - bl EventObjectMovementMan_Delete - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetState - cmp r0, #2 - beq _0224CA18 - ldr r0, [r4, #0x2c] - bl ov02_0224DE08 - mov r0, #0 - str r0, [r4, #0x2c] -_0224CA18: - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224CA24 - ldr r0, [r4, #0x14] - bl EventObjectMovementMan_Delete -_0224CA24: - ldr r0, [r4, #0x1c] - bl ov01_021FCD78 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #1 - pop {r3, r4, r5, pc} - .balign 4, 0 -_0224CA34: .word ov02_02253794 - thumb_func_end ov02_0224C9B8 - - thumb_func_start ov02_0224CA38 -ov02_0224CA38: ; 0x0224CA38 - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r0, [r1, #0xc] - add r4, r2, #0 - bl Save_LocalFieldData_Get - bl LocalFieldData_GetSpecialSpawnWarpPtr - add r1, r0, #0 - ldr r2, [r4, #0xc] - add r0, r5, #0 - bl sub_02053B04 - mov r0, #2 - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end ov02_0224CA38 - - thumb_func_start ov02_0224CA58 -ov02_0224CA58: ; 0x0224CA58 - push {r4, r5, r6, r7} - add r3, r0, #0 - add r0, r2, #0 - sub r0, r0, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r2, #0 - beq _0224CAB4 - add r6, r3, r1 - sub r7, r1, #1 -_0224CA6C: - sub r1, r6, #1 - ldrb r2, [r1] - mov r1, #1 - add r5, r7, #0 - and r1, r2 - lsl r1, r1, #0x18 - lsr r4, r1, #0x18 - cmp r7, #0 - ble _0224CA9A -_0224CA7E: - ldrb r1, [r3, r5] - add r2, r3, r5 - sub r2, r2, #1 - asr r1, r1, #1 - strb r1, [r3, r5] - ldrb r2, [r2] - ldrb r1, [r3, r5] - lsl r2, r2, #0x1f - lsr r2, r2, #0x18 - orr r1, r2 - strb r1, [r3, r5] - sub r5, r5, #1 - cmp r5, #0 - bgt _0224CA7E -_0224CA9A: - ldrb r1, [r3, r5] - asr r1, r1, #1 - strb r1, [r3, r5] - ldrb r2, [r3, r5] - lsl r1, r4, #7 - orr r1, r2 - strb r1, [r3, r5] - add r1, r0, #0 - sub r0, r0, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r1, #0 - bne _0224CA6C -_0224CAB4: - pop {r4, r5, r6, r7} - bx lr - thumb_func_end ov02_0224CA58 - - thumb_func_start ov02_0224CAB8 -ov02_0224CAB8: ; 0x0224CAB8 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r5, r0, #0 - add r6, r2, #0 - str r1, [sp] - add r7, r3, #0 - bl WallpaperPasswordBank_GetCount - add r4, r0, #0 - add r0, r5, #0 - add r1, r6, #0 - bl WallpaperPasswordBank_GetIndexOfWord - add r1, sp, #4 - strh r0, [r1, #4] - add r0, r5, #0 - add r1, r7, #0 - bl WallpaperPasswordBank_GetIndexOfWord - add r1, sp, #4 - strh r0, [r1, #6] - add r1, sp, #0x18 - ldrh r1, [r1, #0x10] - add r0, r5, #0 - bl WallpaperPasswordBank_GetIndexOfWord - add r1, sp, #4 - strh r0, [r1, #8] - add r1, sp, #0x18 - ldrh r1, [r1, #0x14] - add r0, r5, #0 - bl WallpaperPasswordBank_GetIndexOfWord - add r1, sp, #4 - mov r2, #0 - strh r0, [r1, #0xa] - add r3, sp, #8 - add r5, sp, #4 - add r7, r2, #0 -_0224CB06: - ldrsh r0, [r3, r7] - cmp r0, #0 - bge _0224CB14 - mov r0, #0 - add sp, #0x10 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_0224CB14: - cmp r2, #0 - ble _0224CB48 - mov r6, #1 - mvn r6, r6 - ldrsh r6, [r3, r6] - cmp r0, r6 - blt _0224CB34 - sub r0, r0, r6 - cmp r0, #0xff - ble _0224CB30 - mov r0, #0 - add sp, #0x10 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_0224CB30: - strb r0, [r5] - b _0224CB5A -_0224CB34: - sub r0, r6, r0 - sub r0, r4, r0 - cmp r0, #0xff - ble _0224CB44 - mov r0, #0 - add sp, #0x10 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_0224CB44: - strb r0, [r5] - b _0224CB5A -_0224CB48: - mov r0, #4 - ldrsh r0, [r1, r0] - cmp r0, #0xff - ble _0224CB58 - mov r0, #0 - add sp, #0x10 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_0224CB58: - strb r0, [r1] -_0224CB5A: - add r2, r2, #1 - add r3, r3, #2 - add r5, r5, #1 - cmp r2, #4 - blt _0224CB06 - add r0, sp, #4 - mov r1, #4 - mov r2, #5 - bl ov02_0224CA58 - mov r2, #0 - add r1, sp, #4 - add r4, sp, #4 - mov r3, #0xf0 -_0224CB76: - ldrb r5, [r4, #3] - ldrb r0, [r1] - add r2, r2, #1 - asr r6, r5, #4 - and r5, r3 - orr r5, r6 - eor r0, r5 - strb r0, [r1] - add r1, r1, #1 - cmp r2, #3 - blt _0224CB76 - add r2, sp, #4 - ldrb r3, [r2, #3] - mov r2, #0xf - add r0, sp, #4 - and r2, r3 - lsl r2, r2, #0x18 - mov r1, #3 - lsr r2, r2, #0x18 - bl ov02_0224CA58 - add r1, sp, #4 - ldrb r5, [r1] - mov r0, #0xf - add r4, r5, #0 - and r4, r0 - cmp r4, #8 - blt _0224CBB4 - add sp, #0x10 - sub r0, #0x10 - pop {r3, r4, r5, r6, r7, pc} -_0224CBB4: - ldrb r0, [r1, #1] - eor r0, r5 - strb r0, [r1, #1] - ldrb r0, [r1, #2] - eor r0, r5 - strb r0, [r1, #2] - ldrb r2, [r1, #1] - ldrb r3, [r1, #2] - lsl r0, r2, #8 - add r6, r0, #0 - ldr r0, [sp] - orr r6, r3 - cmp r0, r6 - bne _0224CBEE - mov r0, #0xf0 - and r0, r5 - asr r0, r0, #4 - cmp r0, #6 - bne _0224CBEE - ldrb r0, [r1, #3] - add r1, r5, r2 - mul r1, r3 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - cmp r0, r1 - bne _0224CBEE - add sp, #0x10 - add r0, r4, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224CBEE: - mov r0, #0 - mvn r0, r0 - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_0224CAB8 - - thumb_func_start ov02_0224CBF8 -ov02_0224CBF8: ; 0x0224CBF8 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r5, r0, #0 - add r6, r2, #0 - str r1, [sp] - add r7, r3, #0 - bl WallpaperPasswordBank_GetCount - add r4, r0, #0 - add r0, r5, #0 - add r1, r6, #0 - bl WallpaperPasswordBank_GetIndexOfWord - add r1, sp, #4 - strh r0, [r1, #4] - add r0, r5, #0 - add r1, r7, #0 - bl WallpaperPasswordBank_GetIndexOfWord - add r1, sp, #4 - strh r0, [r1, #6] - add r1, sp, #0x18 - ldrh r1, [r1, #0x10] - add r0, r5, #0 - bl WallpaperPasswordBank_GetIndexOfWord - add r1, sp, #4 - strh r0, [r1, #8] - add r1, sp, #0x18 - ldrh r1, [r1, #0x14] - add r0, r5, #0 - bl WallpaperPasswordBank_GetIndexOfWord - add r1, sp, #4 - mov r2, #0 - strh r0, [r1, #0xa] - add r3, sp, #8 - add r5, sp, #4 - add r7, r2, #0 -_0224CC46: - ldrsh r0, [r3, r7] - cmp r0, #0 - bge _0224CC54 - mov r0, #0 - add sp, #0x10 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_0224CC54: - cmp r2, #0 - ble _0224CC88 - mov r6, #1 - mvn r6, r6 - ldrsh r6, [r3, r6] - cmp r0, r6 - blt _0224CC74 - sub r0, r0, r6 - cmp r0, #0xff - ble _0224CC70 - mov r0, #0 - add sp, #0x10 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_0224CC70: - strb r0, [r5] - b _0224CC9A -_0224CC74: - sub r0, r6, r0 - sub r0, r4, r0 - cmp r0, #0xff - ble _0224CC84 - mov r0, #0 - add sp, #0x10 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_0224CC84: - strb r0, [r5] - b _0224CC9A -_0224CC88: - mov r0, #4 - ldrsh r0, [r1, r0] - cmp r0, #0xff - ble _0224CC98 - mov r0, #0 - add sp, #0x10 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_0224CC98: - strb r0, [r1] -_0224CC9A: - add r2, r2, #1 - add r3, r3, #2 - add r5, r5, #1 - cmp r2, #4 - blt _0224CC46 - add r0, sp, #4 - mov r1, #4 - mov r2, #5 - bl ov02_0224CA58 - mov r2, #0 - add r1, sp, #4 - add r4, sp, #4 - mov r3, #0xf0 -_0224CCB6: - ldrb r5, [r4, #3] - ldrb r0, [r1] - add r2, r2, #1 - asr r6, r5, #4 - and r5, r3 - orr r5, r6 - eor r0, r5 - strb r0, [r1] - add r1, r1, #1 - cmp r2, #3 - blt _0224CCB6 - add r2, sp, #4 - ldrb r3, [r2, #3] - mov r2, #0xf - add r0, sp, #4 - and r2, r3 - lsl r2, r2, #0x18 - mov r1, #3 - lsr r2, r2, #0x18 - bl ov02_0224CA58 - add r1, sp, #4 - ldrb r4, [r1] - mov r0, #0xf - and r0, r4 - lsl r2, r0, #0x18 - lsr r2, r2, #0x18 - cmp r2, #8 - blo _0224CCF4 - cmp r2, #0xb - blo _0224CCFC -_0224CCF4: - mov r0, #0 - add sp, #0x10 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_0224CCFC: - ldrb r2, [r1, #1] - eor r2, r4 - strb r2, [r1, #1] - ldrb r2, [r1, #2] - eor r2, r4 - strb r2, [r1, #2] - ldrb r2, [r1, #1] - ldrb r3, [r1, #2] - lsl r5, r2, #8 - add r6, r5, #0 - ldr r5, [sp] - orr r6, r3 - cmp r5, r6 - bne _0224CD30 - mov r5, #0xf0 - and r5, r4 - asr r5, r5, #4 - cmp r5, #6 - bne _0224CD30 - add r2, r4, r2 - mul r2, r3 - lsl r2, r2, #0x18 - ldrb r1, [r1, #3] - lsr r2, r2, #0x18 - cmp r1, r2 - beq _0224CD34 -_0224CD30: - mov r0, #0 - mvn r0, r0 -_0224CD34: - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov02_0224CBF8 - - thumb_func_start ov02_0224CD38 -ov02_0224CD38: ; 0x0224CD38 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r6, r0, #0 - ldr r0, [sp, #0x24] - add r7, r1, #0 - str r2, [sp, #8] - add r5, r3, #0 - bl WallpaperPasswordBank_Create - add r4, r0, #0 - add r0, r6, #0 - bl PlayerProfile_GetTrainerID_VisibleHalf - add r1, r0, #0 - str r5, [sp] - add r0, sp, #0x10 - ldrh r0, [r0, #0x10] - add r2, r7, #0 - str r0, [sp, #4] - ldr r3, [sp, #8] - add r0, r4, #0 - bl ov02_0224CAB8 - add r5, r0, #0 - add r0, r4, #0 - bl WallpaperPasswordBank_Delete - add r0, r5, #0 - add sp, #0xc - pop {r4, r5, r6, r7, pc} - thumb_func_end ov02_0224CD38 - - thumb_func_start ov02_0224CD74 -ov02_0224CD74: ; 0x0224CD74 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r6, r0, #0 - ldr r0, [sp, #0x24] - add r7, r1, #0 - str r2, [sp, #8] - add r5, r3, #0 - bl WallpaperPasswordBank_Create - add r4, r0, #0 - add r0, r6, #0 - bl PlayerProfile_GetTrainerID_VisibleHalf - add r1, r0, #0 - str r5, [sp] - add r0, sp, #0x10 - ldrh r0, [r0, #0x10] - add r2, r7, #0 - str r0, [sp, #4] - ldr r3, [sp, #8] - add r0, r4, #0 - bl ov02_0224CBF8 - add r5, r0, #0 - add r0, r4, #0 - bl WallpaperPasswordBank_Delete - add r0, r5, #0 - add sp, #0xc - pop {r4, r5, r6, r7, pc} - thumb_func_end ov02_0224CD74 - - thumb_func_start ov02_0224CDB0 -ov02_0224CDB0: ; 0x0224CDB0 - push {r4, r5, r6, lr} - sub sp, #0x20 - add r6, r1, #0 - mov r1, #0x26 - add r2, sp, #4 - add r3, sp, #0 - add r5, r0, #0 - bl sub_02054C20 - cmp r0, #0 - beq _0224CE1C - mov r0, #4 - mov r1, #0x18 - bl Heap_AllocAtEnd - add r4, r0, #0 - strb r6, [r4, #0xc] - mov r0, #0 - strb r0, [r4, #0xd] - strb r0, [r4, #0xe] - strb r0, [r4, #0xf] - ldr r0, [r5, #0x30] - bl MapMatrix_GetWidth - add r1, r0, #0 - ldr r0, [sp] - add r2, sp, #0x14 - bl sub_02054DC8 - ldr r1, [sp, #4] - add r0, sp, #8 - bl ov01_021F3B0C - add r3, sp, #8 - ldmia r3!, {r0, r1} - add r2, r4, #0 - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - ldr r1, [r4] - ldr r0, [sp, #0x14] - add r2, r4, #0 - add r0, r1, r0 - str r0, [r4] - ldr r1, [r4, #8] - ldr r0, [sp, #0x1c] - add r0, r1, r0 - str r0, [r4, #8] - ldr r0, [r5, #0x10] - ldr r1, _0224CE24 ; =ov02_0224CE28 - bl TaskManager_Call - add sp, #0x20 - pop {r4, r5, r6, pc} -_0224CE1C: - bl GF_AssertFail - add sp, #0x20 - pop {r4, r5, r6, pc} - .balign 4, 0 -_0224CE24: .word ov02_0224CE28 - thumb_func_end ov02_0224CDB0 - - thumb_func_start ov02_0224CE28 -ov02_0224CE28: ; 0x0224CE28 - push {r4, r5, r6, lr} - sub sp, #0x30 - add r4, r0, #0 - bl TaskManager_GetFieldSystem - add r6, r0, #0 - add r0, r4, #0 - bl TaskManager_GetEnvironment - add r4, r0, #0 - ldrb r1, [r4, #0xf] - cmp r1, #5 - bls _0224CE44 - b _0224CFC0 -_0224CE44: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0224CE50: ; jump table - .short _0224CE5C - _0224CE50 - 2 ; case 0 - .short _0224CEBA - _0224CE50 - 2 ; case 1 - .short _0224CF1C - _0224CE50 - 2 ; case 2 - .short _0224CF64 - _0224CE50 - 2 ; case 3 - .short _0224CF76 - _0224CE50 - 2 ; case 4 - .short _0224CFB6 - _0224CE50 - 2 ; case 5 -_0224CE5C: - ldr r1, [r6, #0x34] - mov r0, #0x6b - bl ov01_021FB90C - ldr r0, [r0] - bl NNS_G3dGetMdlSet - cmp r0, #0 - beq _0224CE8E - add r2, r0, #0 - add r2, #8 - beq _0224CE82 - ldrb r1, [r0, #9] - cmp r1, #0 - bls _0224CE82 - ldrh r1, [r0, #0xe] - add r1, r2, r1 - add r1, r1, #4 - b _0224CE84 -_0224CE82: - mov r1, #0 -_0224CE84: - cmp r1, #0 - beq _0224CE8E - ldr r1, [r1] - add r5, r0, r1 - b _0224CE90 -_0224CE8E: - mov r5, #0 -_0224CE90: - ldr r0, [r6, #0x34] - bl ov01_021FB9E0 - mov r1, #0 - str r1, [sp] - str r5, [sp, #4] - str r0, [sp, #8] - mov r0, #1 - str r0, [sp, #0xc] - str r0, [sp, #0x10] - str r1, [sp, #0x14] - ldr r0, [r6, #0x54] - ldr r1, [r6, #0x58] - mov r2, #0x10 - mov r3, #0x6b - bl ov01_021E8DE8 - ldrb r0, [r4, #0xf] - add r0, r0, #1 - strb r0, [r4, #0xf] - b _0224CFC0 -_0224CEBA: - add r1, sp, #0x18 - mov r0, #0 - str r0, [r1] - str r0, [r1, #4] - str r0, [r1, #8] - ldrb r2, [r4, #0xd] - mov r1, #0xc - ldr r0, [r4] - add r3, r2, #0 - ldr r2, _0224CFC8 ; =ov02_02253DD8 - mul r3, r1 - ldr r2, [r2, r3] - add r0, r0, r2 - str r0, [sp, #0x24] - ldrb r2, [r4, #0xd] - ldr r0, [r4, #4] - add r3, r2, #0 - ldr r2, _0224CFCC ; =ov02_02253DDC - mul r3, r1 - ldr r2, [r2, r3] - add r0, r0, r2 - str r0, [sp, #0x28] - ldrb r2, [r4, #0xd] - ldr r0, [r4, #8] - add r3, r2, #0 - mul r3, r1 - ldr r1, _0224CFD0 ; =ov02_02253DE0 - ldr r1, [r1, r3] - add r0, r0, r1 - str r0, [sp, #0x2c] - ldr r0, _0224CFD4 ; =SEQ_SE_DP_BOWA - bl PlaySE - ldr r0, [r6, #0x54] - add r6, #0x9c - str r0, [sp] - ldr r0, [r6] - mov r1, #0x6b - add r2, sp, #0x24 - add r3, sp, #0x18 - bl ov01_021F3C0C - ldrb r1, [r4, #0xd] - add r1, r4, r1 - strb r0, [r1, #0x10] - ldrb r0, [r4, #0xf] - add r0, r0, #1 - strb r0, [r4, #0xf] - b _0224CFC0 -_0224CF1C: - ldrb r0, [r4, #0xe] - cmp r0, #0xf - bhs _0224CF28 - add r0, r0, #1 - strb r0, [r4, #0xe] - b _0224CFC0 -_0224CF28: - mov r0, #0 - strb r0, [r4, #0xe] - ldrb r0, [r4, #0xd] - add r0, r0, #1 - strb r0, [r4, #0xd] - ldrb r1, [r4, #0xd] - ldrb r0, [r4, #0xc] - cmp r1, r0 - bhs _0224CF40 - mov r0, #1 - strb r0, [r4, #0xf] - b _0224CFC0 -_0224CF40: - add r0, r6, #0 - add r0, #0x9c - ldrb r1, [r4, #0x10] - ldr r0, [r0] - bl ov01_021F3B60 - bl ov01_021F3B38 - add r3, r0, #0 - ldr r0, [r6, #0x58] - mov r1, #0x10 - mov r2, #0 - bl ov01_021E8E40 - ldrb r0, [r4, #0xf] - add r0, r0, #1 - strb r0, [r4, #0xf] - b _0224CFC0 -_0224CF64: - ldr r0, [r6, #0x58] - mov r1, #0x10 - mov r2, #0 - bl ov01_021E8E70 - ldrb r0, [r4, #0xf] - add r0, r0, #1 - strb r0, [r4, #0xf] - b _0224CFC0 -_0224CF76: - ldr r0, [r6, #0x58] - mov r1, #0x10 - bl ov01_021E8F10 - cmp r0, #0 - beq _0224CFC0 - ldr r0, [r6, #0x54] - ldr r1, [r6, #0x58] - mov r2, #0x10 - bl ov01_021E8ED0 - ldrb r0, [r4, #0xc] - mov r5, #0 - cmp r0, #0 - bls _0224CFAE -_0224CF94: - add r0, r4, r5 - add r1, r6, #0 - add r1, #0x9c - ldrb r0, [r0, #0x10] - ldr r1, [r1] - bl ov01_021F36DC - add r0, r5, #1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - ldrb r0, [r4, #0xc] - cmp r5, r0 - blo _0224CF94 -_0224CFAE: - ldrb r0, [r4, #0xf] - add r0, r0, #1 - strb r0, [r4, #0xf] - b _0224CFC0 -_0224CFB6: - bl Heap_Free - add sp, #0x30 - mov r0, #1 - pop {r4, r5, r6, pc} -_0224CFC0: - mov r0, #0 - add sp, #0x30 - pop {r4, r5, r6, pc} - nop -_0224CFC8: .word ov02_02253DD8 -_0224CFCC: .word ov02_02253DDC -_0224CFD0: .word ov02_02253DE0 -_0224CFD4: .word SEQ_SE_DP_BOWA - thumb_func_end ov02_0224CE28 - - thumb_func_start ov02_0224CFD8 -ov02_0224CFD8: ; 0x0224CFD8 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r7, r2, #0 - bl MapObjectManager_GetFirstActiveObjectByID - add r6, r0, #0 - add r1, sp, #0 - bl MapObject_CopyPositionVector - add r0, r6, #0 - bl MapObject_GetXCoord - add r5, r0, #0 - add r0, r6, #0 - bl MapObject_GetZCoord - add r4, r0, #0 - add r0, r6, #0 - bl MapObject_GetFacingDirection - cmp r0, #3 - bhi _0224D028 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0224D010: ; jump table - .short _0224D018 - _0224D010 - 2 ; case 0 - .short _0224D01C - _0224D010 - 2 ; case 1 - .short _0224D020 - _0224D010 - 2 ; case 2 - .short _0224D024 - _0224D010 - 2 ; case 3 -_0224D018: - sub r4, r4, #1 - b _0224D02C -_0224D01C: - add r4, r4, #1 - b _0224D02C -_0224D020: - sub r5, r5, #1 - b _0224D02C -_0224D024: - add r5, r5, #1 - b _0224D02C -_0224D028: - bl GF_AssertFail -_0224D02C: - mov r3, #2 - lsl r1, r5, #0x10 - lsl r3, r3, #0xe - ldr r2, [sp, #4] - lsl r4, r4, #0x10 - add r1, r1, r3 - add r0, r7, #0 - add r3, r4, r3 - bl Field3dObject_SetPosEx - add sp, #0xc - pop {r4, r5, r6, r7, pc} - thumb_func_end ov02_0224CFD8 - - thumb_func_start ov02_0224D044 -ov02_0224D044: ; 0x0224D044 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r7, r1, #0 - add r6, r0, #0 - add r1, sp, #0 - bl PlayerAvatar_CopyPositionVector - add r0, r6, #0 - bl PlayerAvatar_GetXCoord - add r5, r0, #0 - add r0, r6, #0 - bl PlayerAvatar_GetZCoord - add r4, r0, #0 - add r0, r6, #0 - bl PlayerAvatar_GetFacingDirection - cmp r0, #3 - bhi _0224D090 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0224D078: ; jump table - .short _0224D080 - _0224D078 - 2 ; case 0 - .short _0224D084 - _0224D078 - 2 ; case 1 - .short _0224D088 - _0224D078 - 2 ; case 2 - .short _0224D08C - _0224D078 - 2 ; case 3 -_0224D080: - sub r4, r4, #1 - b _0224D094 -_0224D084: - add r4, r4, #1 - b _0224D094 -_0224D088: - sub r5, r5, #1 - b _0224D094 -_0224D08C: - add r5, r5, #1 - b _0224D094 -_0224D090: - bl GF_AssertFail -_0224D094: - mov r3, #2 - lsl r1, r5, #0x10 - lsl r3, r3, #0xe - ldr r2, [sp, #4] - lsl r4, r4, #0x10 - add r1, r1, r3 - add r0, r7, #0 - add r3, r4, r3 - bl Field3dObject_SetPosEx - add sp, #0xc - pop {r4, r5, r6, r7, pc} - thumb_func_end ov02_0224D044 - - thumb_func_start ov02_0224D0AC -ov02_0224D0AC: ; 0x0224D0AC - push {r3, r4, lr} - sub sp, #0xc - add r4, r1, #0 - add r1, sp, #0 - bl PlayerAvatar_CopyPositionVector - ldr r1, [sp] - ldr r2, [sp, #4] - ldr r3, [sp, #8] - add r0, r4, #0 - bl Field3dObject_SetPosEx - add sp, #0xc - pop {r3, r4, pc} - thumb_func_end ov02_0224D0AC - - thumb_func_start ov02_0224D0C8 -ov02_0224D0C8: ; 0x0224D0C8 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r5, r1, #0 - str r2, [sp, #8] - add r6, r0, #0 - mov r1, #0 - mov r2, #0xdc - add r4, r3, #0 - ldr r7, [sp, #0x28] - bl memset - add r0, r6, #0 - add r0, #0x78 - mov r1, #0x86 - add r2, r5, #0 - mov r3, #4 - bl Field3dModel_LoadFromFilesystem - add r1, r6, #0 - add r0, r6, #0 - add r1, #0x78 - bl Field3dObject_InitFromModel - add r0, r6, #0 - add r0, #0xd8 - str r4, [r0] - add r0, r6, #0 - add r0, #0xd8 - ldr r0, [r0] - mov r4, #0 - cmp r0, #0 - bls _0224D13E - add r0, r6, #0 - add r5, r6, #0 - str r0, [sp, #0xc] - add r0, #0x78 - add r5, #0x88 - str r0, [sp, #0xc] -_0224D114: - ldr r3, [sp, #8] - mov r0, #4 - str r0, [sp] - ldr r1, [sp, #0xc] - add r0, r5, #0 - mov r2, #0x86 - add r3, r3, r4 - str r7, [sp, #4] - bl Field3dModelAnimation_LoadFromFilesystem - add r0, r6, #0 - add r1, r5, #0 - bl Field3dObject_AddAnimation - add r0, r6, #0 - add r0, #0xd8 - ldr r0, [r0] - add r4, r4, #1 - add r5, #0x14 - cmp r4, r0 - blo _0224D114 -_0224D13E: - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_0224D0C8 - - thumb_func_start ov02_0224D144 -ov02_0224D144: ; 0x0224D144 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - add r0, #0x78 - add r7, r1, #0 - bl Field3dModel_Unload - add r0, r6, #0 - add r0, #0xd8 - ldr r0, [r0] - mov r4, #0 - cmp r0, #0 - bls _0224D176 - add r5, r6, #0 - add r5, #0x88 -_0224D160: - add r0, r5, #0 - add r1, r7, #0 - bl Field3dModelAnimation_Unload - add r0, r6, #0 - add r0, #0xd8 - ldr r0, [r0] - add r4, r4, #1 - add r5, #0x14 - cmp r4, r0 - blo _0224D160 -_0224D176: - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov02_0224D144 - - thumb_func_start ov02_0224D178 -ov02_0224D178: ; 0x0224D178 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - add r0, #0xd8 - ldr r0, [r0] - mov r6, #1 - mov r4, #0 - cmp r0, #0 - bls _0224D1A6 - add r5, r7, #0 - add r5, #0x88 -_0224D18C: - mov r1, #1 - add r0, r5, #0 - lsl r1, r1, #0xc - bl Field3dModelAnimation_FrameAdvanceAndCheck - and r6, r0 - add r0, r7, #0 - add r0, #0xd8 - ldr r0, [r0] - add r4, r4, #1 - add r5, #0x14 - cmp r4, r0 - blo _0224D18C -_0224D1A6: - add r0, r6, #0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_0224D178 - - thumb_func_start ov02_0224D1AC -ov02_0224D1AC: ; 0x0224D1AC - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - add r0, #0xd8 - ldr r0, [r0] - mov r4, #0 - cmp r0, #0 - bls _0224D1D8 - add r5, r6, #0 - mov r7, #1 - add r5, #0x88 - lsl r7, r7, #0xc -_0224D1C2: - add r0, r5, #0 - add r1, r7, #0 - bl Field3dModelAnimation_FrameAdvanceAndLoop - add r0, r6, #0 - add r0, #0xd8 - ldr r0, [r0] - add r4, r4, #1 - add r5, #0x14 - cmp r4, r0 - blo _0224D1C2 -_0224D1D8: - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_0224D1AC - - thumb_func_start ov02_0224D1DC -ov02_0224D1DC: ; 0x0224D1DC - ldr r3, _0224D1E0 ; =Field3dObject_Draw - bx r3 - .balign 4, 0 -_0224D1E0: .word Field3dObject_Draw - thumb_func_end ov02_0224D1DC - - thumb_func_start ov02_0224D1E4 -ov02_0224D1E4: ; 0x0224D1E4 - push {r3, r4, r5, lr} - add r4, r2, #0 - add r5, r1, #0 - add r0, r4, #0 - mov r1, #0 - mov r2, #0xf0 - bl memset - add r0, r4, #0 - add r0, #0xdc - mov r1, #4 - mov r2, #0x20 - bl HeapExp_FndInitAllocator - add r0, r4, #0 - add r0, #0xdc - mov r1, #3 - str r0, [sp] - add r0, r4, #0 - mov r2, #0 - add r3, r1, #0 - bl ov02_0224D0C8 - ldr r0, [r5, #0x40] - add r1, r4, #0 - bl ov02_0224D044 - ldr r0, _0224D228 ; =SEQ_SE_DP_FW015 - bl PlaySE - mov r0, #0 - add r4, #0xec - str r0, [r4] - pop {r3, r4, r5, pc} - .balign 4, 0 -_0224D228: .word SEQ_SE_DP_FW015 - thumb_func_end ov02_0224D1E4 - - thumb_func_start ov02_0224D22C -ov02_0224D22C: ; 0x0224D22C - push {r3, r4, r5, lr} - add r4, r2, #0 - add r5, r1, #0 - add r0, r4, #0 - mov r1, #0 - mov r2, #0xf0 - bl memset - add r0, r4, #0 - add r0, #0xdc - mov r1, #4 - mov r2, #0x20 - bl HeapExp_FndInitAllocator - add r0, r4, #0 - add r0, #0xdc - mov r1, #3 - str r0, [sp] - add r0, r4, #0 - mov r2, #0 - add r3, r1, #0 - bl ov02_0224D0C8 - ldr r0, [r5, #0x3c] - mov r1, #0xfd - add r2, r4, #0 - bl ov02_0224CFD8 - ldr r0, _0224D274 ; =SEQ_SE_DP_FW015 - bl PlaySE - mov r0, #0 - add r4, #0xec - str r0, [r4] - pop {r3, r4, r5, pc} - nop -_0224D274: .word SEQ_SE_DP_FW015 - thumb_func_end ov02_0224D22C - - thumb_func_start ov02_0224D278 -ov02_0224D278: ; 0x0224D278 - ldr r3, _0224D284 ; =ov02_0224D144 - add r0, r2, #0 - add r2, #0xdc - add r1, r2, #0 - bx r3 - nop -_0224D284: .word ov02_0224D144 - thumb_func_end ov02_0224D278 - - thumb_func_start ov02_0224D288 -ov02_0224D288: ; 0x0224D288 - push {r4, lr} - add r4, r2, #0 - add r0, r4, #0 - add r0, #0xec - ldr r0, [r0] - cmp r0, #0 - beq _0224D29A - cmp r0, #1 - pop {r4, pc} -_0224D29A: - add r0, r4, #0 - bl ov02_0224D178 - cmp r0, #1 - bne _0224D2B8 - add r0, r4, #0 - mov r1, #0 - bl Field3dObject_SetActiveFlag - add r0, r4, #0 - add r0, #0xec - ldr r0, [r0] - add r4, #0xec - add r0, r0, #1 - str r0, [r4] -_0224D2B8: - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_0224D288 - - thumb_func_start ov02_0224D2BC -ov02_0224D2BC: ; 0x0224D2BC - ldr r3, _0224D2C4 ; =ov02_0224D1DC - add r0, r2, #0 - bx r3 - nop -_0224D2C4: .word ov02_0224D1DC - thumb_func_end ov02_0224D2BC - - thumb_func_start ov02_0224D2C8 -ov02_0224D2C8: ; 0x0224D2C8 - ldr r0, [r0, #4] - ldr r3, _0224D2D4 ; =Field3dObjectTaskManager_CreateTask - ldr r0, [r0, #4] - ldr r1, _0224D2D8 ; =ov02_02253974 - bx r3 - nop -_0224D2D4: .word Field3dObjectTaskManager_CreateTask -_0224D2D8: .word ov02_02253974 - thumb_func_end ov02_0224D2C8 - - thumb_func_start ov02_0224D2DC -ov02_0224D2DC: ; 0x0224D2DC - ldr r0, [r0, #4] - ldr r3, _0224D2E8 ; =Field3dObjectTaskManager_CreateTask - ldr r0, [r0, #4] - ldr r1, _0224D2EC ; =ov02_022539BC - bx r3 - nop -_0224D2E8: .word Field3dObjectTaskManager_CreateTask -_0224D2EC: .word ov02_022539BC - thumb_func_end ov02_0224D2DC - - thumb_func_start ov02_0224D2F0 -ov02_0224D2F0: ; 0x0224D2F0 - ldr r3, _0224D2F4 ; =Field3dObjectTask_Delete - bx r3 - .balign 4, 0 -_0224D2F4: .word Field3dObjectTask_Delete - thumb_func_end ov02_0224D2F0 - - thumb_func_start ov02_0224D2F8 -ov02_0224D2F8: ; 0x0224D2F8 - push {r3, lr} - bl Field3dObjectTask_GetData - add r0, #0xec - ldr r0, [r0] - cmp r0, #1 - bne _0224D30A - mov r0, #1 - pop {r3, pc} -_0224D30A: - mov r0, #0 - pop {r3, pc} - .balign 4, 0 - thumb_func_end ov02_0224D2F8 - - thumb_func_start ov02_0224D310 -ov02_0224D310: ; 0x0224D310 - push {r3, r4, r5, lr} - add r4, r2, #0 - add r5, r1, #0 - add r0, r4, #0 - mov r1, #0 - mov r2, #0xf0 - bl memset - add r0, r4, #0 - add r0, #0xdc - mov r1, #4 - mov r2, #0x20 - bl HeapExp_FndInitAllocator - add r0, r4, #0 - add r0, #0xdc - mov r2, #4 - str r0, [sp] - add r0, r4, #0 - mov r1, #8 - add r3, r2, #0 - bl ov02_0224D0C8 - ldr r0, [r5, #0x40] - add r1, r4, #0 - bl ov02_0224D044 - ldr r0, _0224D354 ; =SEQ_SE_DP_FW088 - bl PlaySE - mov r0, #0 - add r4, #0xec - str r0, [r4] - pop {r3, r4, r5, pc} - .balign 4, 0 -_0224D354: .word SEQ_SE_DP_FW088 - thumb_func_end ov02_0224D310 - - thumb_func_start ov02_0224D358 -ov02_0224D358: ; 0x0224D358 - push {r3, r4, r5, lr} - add r4, r2, #0 - add r5, r1, #0 - add r0, r4, #0 - mov r1, #0 - mov r2, #0xf0 - bl memset - add r0, r4, #0 - add r0, #0xdc - mov r1, #4 - mov r2, #0x20 - bl HeapExp_FndInitAllocator - add r0, r4, #0 - add r0, #0xdc - mov r2, #4 - str r0, [sp] - add r0, r4, #0 - mov r1, #8 - add r3, r2, #0 - bl ov02_0224D0C8 - ldr r0, [r5, #0x3c] - mov r1, #0xfd - add r2, r4, #0 - bl ov02_0224CFD8 - ldr r0, _0224D3A0 ; =SEQ_SE_DP_FW088 - bl PlaySE - mov r0, #0 - add r4, #0xec - str r0, [r4] - pop {r3, r4, r5, pc} - nop -_0224D3A0: .word SEQ_SE_DP_FW088 - thumb_func_end ov02_0224D358 - - thumb_func_start ov02_0224D3A4 -ov02_0224D3A4: ; 0x0224D3A4 - ldr r3, _0224D3B0 ; =ov02_0224D144 - add r0, r2, #0 - add r2, #0xdc - add r1, r2, #0 - bx r3 - nop -_0224D3B0: .word ov02_0224D144 - thumb_func_end ov02_0224D3A4 - - thumb_func_start ov02_0224D3B4 -ov02_0224D3B4: ; 0x0224D3B4 - push {r4, lr} - add r4, r2, #0 - add r0, r4, #0 - add r0, #0xec - ldr r0, [r0] - cmp r0, #0 - beq _0224D3C6 - cmp r0, #1 - pop {r4, pc} -_0224D3C6: - add r0, r4, #0 - bl ov02_0224D178 - cmp r0, #1 - bne _0224D3E4 - add r0, r4, #0 - mov r1, #0 - bl Field3dObject_SetActiveFlag - add r0, r4, #0 - add r0, #0xec - ldr r0, [r0] - add r4, #0xec - add r0, r0, #1 - str r0, [r4] -_0224D3E4: - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_0224D3B4 - - thumb_func_start ov02_0224D3E8 -ov02_0224D3E8: ; 0x0224D3E8 - ldr r3, _0224D3F0 ; =ov02_0224D1DC - add r0, r2, #0 - bx r3 - nop -_0224D3F0: .word ov02_0224D1DC - thumb_func_end ov02_0224D3E8 - - thumb_func_start ov02_0224D3F4 -ov02_0224D3F4: ; 0x0224D3F4 - ldr r0, [r0, #4] - ldr r3, _0224D400 ; =Field3dObjectTaskManager_CreateTask - ldr r0, [r0, #4] - ldr r1, _0224D404 ; =ov02_022538FC - bx r3 - nop -_0224D400: .word Field3dObjectTaskManager_CreateTask -_0224D404: .word ov02_022538FC - thumb_func_end ov02_0224D3F4 - - thumb_func_start ov02_0224D408 -ov02_0224D408: ; 0x0224D408 - ldr r0, [r0, #4] - ldr r3, _0224D414 ; =Field3dObjectTaskManager_CreateTask - ldr r0, [r0, #4] - ldr r1, _0224D418 ; =ov02_0225398C - bx r3 - nop -_0224D414: .word Field3dObjectTaskManager_CreateTask -_0224D418: .word ov02_0225398C - thumb_func_end ov02_0224D408 - - thumb_func_start ov02_0224D41C -ov02_0224D41C: ; 0x0224D41C - ldr r3, _0224D420 ; =Field3dObjectTask_Delete - bx r3 - .balign 4, 0 -_0224D420: .word Field3dObjectTask_Delete - thumb_func_end ov02_0224D41C - - thumb_func_start ov02_0224D424 -ov02_0224D424: ; 0x0224D424 - push {r3, lr} - bl Field3dObjectTask_GetData - add r0, #0xec - ldr r0, [r0] - cmp r0, #1 - bne _0224D436 - mov r0, #1 - pop {r3, pc} -_0224D436: - mov r0, #0 - pop {r3, pc} - .balign 4, 0 - thumb_func_end ov02_0224D424 - - thumb_func_start ov02_0224D43C -ov02_0224D43C: ; 0x0224D43C - push {r4, lr} - add r4, r2, #0 - mov r2, #0x73 - add r0, r4, #0 - mov r1, #0 - lsl r2, r2, #2 - bl memset - mov r0, #0x6e - lsl r0, r0, #2 - add r0, r4, r0 - mov r1, #4 - mov r2, #0x20 - bl HeapExp_FndInitAllocator - ldr r0, _0224D464 ; =0x000001CA - mov r1, #0 - strh r1, [r4, r0] - pop {r4, pc} - nop -_0224D464: .word 0x000001CA - thumb_func_end ov02_0224D43C - - thumb_func_start ov02_0224D468 -ov02_0224D468: ; 0x0224D468 - push {r4, r5, r6, lr} - mov r0, #0x6e - add r5, r2, #0 - lsl r0, r0, #2 - mov r4, #0 - add r6, r5, r0 -_0224D474: - add r0, r5, #0 - add r1, r6, #0 - bl ov02_0224D144 - add r4, r4, #1 - add r5, #0xdc - cmp r4, #2 - blt _0224D474 - pop {r4, r5, r6, pc} - .balign 4, 0 - thumb_func_end ov02_0224D468 - - thumb_func_start ov02_0224D488 -ov02_0224D488: ; 0x0224D488 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - ldr r7, _0224D574 ; =0x000001CA - add r4, r2, #0 - ldrh r0, [r4, r7] - add r5, r1, #0 - cmp r0, #3 - bhi _0224D570 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0224D4A4: ; jump table - .short _0224D4AC - _0224D4A4 - 2 ; case 0 - .short _0224D50A - _0224D4A4 - 2 ; case 1 - .short _0224D522 - _0224D4A4 - 2 ; case 2 - .short _0224D55E - _0224D4A4 - 2 ; case 3 -_0224D4AC: - ldr r2, _0224D578 ; =ov02_022538EC - add r1, sp, #4 - ldrb r3, [r2, #2] - add r0, sp, #4 - add r1, #2 - strb r3, [r0, #2] - ldrb r3, [r2, #3] - strb r3, [r0, #3] - ldrb r6, [r2, #4] - add r3, sp, #4 - strb r6, [r0] - ldrb r2, [r2, #5] - strb r2, [r0, #1] - sub r0, r7, #2 - ldrh r0, [r4, r0] - lsl r0, r0, #0x18 - lsr r2, r0, #0x18 - mov r0, #0xdc - add r6, r2, #0 - mul r6, r0 - add r0, #0xdc - add r0, r4, r0 - str r0, [sp] - ldrb r1, [r1, r2] - ldrb r2, [r3, r2] - add r0, r4, r6 - mov r3, #2 - bl ov02_0224D0C8 - ldr r0, [r5, #0x40] - add r1, r4, r6 - bl ov02_0224D0AC - sub r1, r7, #2 - ldrh r0, [r4, r1] - add r0, r0, #1 - strh r0, [r4, r1] - ldrh r0, [r4, r1] - cmp r0, #2 - blo _0224D570 - add r0, r1, #2 - ldrh r0, [r4, r0] - add sp, #8 - add r2, r0, #1 - add r0, r1, #2 - strh r2, [r4, r0] - pop {r3, r4, r5, r6, r7, pc} -_0224D50A: - add r0, r4, #0 - add r0, #0xdc - mov r1, #0 - bl Field3dObject_SetActiveFlag - ldr r0, _0224D57C ; =SEQ_SE_DP_FW463 - bl PlaySE - add r0, r7, #0 - ldrh r1, [r4, r0] - add r1, r1, #1 - strh r1, [r4, r0] -_0224D522: - add r0, r4, #0 - bl ov02_0224D178 - add r6, r0, #0 - ldr r0, [r5, #0x40] - add r1, r4, #0 - bl ov02_0224D0AC - cmp r6, #1 - bne _0224D570 - add r0, r4, #0 - add r0, #0xdc - mov r1, #1 - bl Field3dObject_SetActiveFlag - add r0, r4, #0 - mov r1, #0 - bl Field3dObject_SetActiveFlag - add r1, r4, #0 - ldr r0, [r5, #0x40] - add r1, #0xdc - bl ov02_0224D0AC - ldr r0, _0224D574 ; =0x000001CA - add sp, #8 - ldrh r1, [r4, r0] - add r1, r1, #1 - strh r1, [r4, r0] - pop {r3, r4, r5, r6, r7, pc} -_0224D55E: - add r0, r4, #0 - add r0, #0xdc - bl ov02_0224D1AC - add r4, #0xdc - ldr r0, [r5, #0x40] - add r1, r4, #0 - bl ov02_0224D0AC -_0224D570: - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_0224D574: .word 0x000001CA -_0224D578: .word ov02_022538EC -_0224D57C: .word SEQ_SE_DP_FW463 - thumb_func_end ov02_0224D488 - - thumb_func_start ov02_0224D580 -ov02_0224D580: ; 0x0224D580 - push {r3, r4, r5, lr} - add r5, r2, #0 - mov r4, #0 -_0224D586: - add r0, r5, #0 - bl ov02_0224D1DC - add r4, r4, #1 - add r5, #0xdc - cmp r4, #2 - blt _0224D586 - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end ov02_0224D580 - - thumb_func_start ov02_0224D598 -ov02_0224D598: ; 0x0224D598 - ldr r0, [r0, #4] - ldr r3, _0224D5A4 ; =Field3dObjectTaskManager_CreateTask - ldr r0, [r0, #4] - ldr r1, _0224D5A8 ; =ov02_02253944 - bx r3 - nop -_0224D5A4: .word Field3dObjectTaskManager_CreateTask -_0224D5A8: .word ov02_02253944 - thumb_func_end ov02_0224D598 - - thumb_func_start ov02_0224D5AC -ov02_0224D5AC: ; 0x0224D5AC - ldr r3, _0224D5B0 ; =Field3dObjectTask_Delete - bx r3 - .balign 4, 0 -_0224D5B0: .word Field3dObjectTask_Delete - thumb_func_end ov02_0224D5AC - - thumb_func_start ov02_0224D5B4 -ov02_0224D5B4: ; 0x0224D5B4 - push {r4, r5, r6, lr} - sub sp, #0x10 - add r5, r1, #0 - ldr r1, _0224D640 ; =ov02_022538EC - add r4, r2, #0 - ldrb r2, [r1] - add r0, sp, #4 - strb r2, [r0, #1] - ldrb r2, [r1, #1] - strb r2, [r0] - ldrh r2, [r1, #6] - strh r2, [r0, #2] - ldrh r2, [r1, #8] - strh r2, [r0, #4] - ldrh r2, [r1, #0xa] - strh r2, [r0, #6] - ldrh r1, [r1, #0xc] - mov r2, #0xf0 - strh r1, [r0, #8] - add r0, r4, #0 - mov r1, #0 - bl memset - add r0, r4, #0 - add r0, #0xdc - mov r1, #4 - mov r2, #0x20 - bl HeapExp_FndInitAllocator - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetFacingDirection - add r6, r0, #0 - add r0, r4, #0 - add r0, #0xdc - str r0, [sp] - add r2, sp, #4 - ldrb r1, [r2, #1] - ldrb r2, [r2] - add r0, r4, #0 - mov r3, #1 - bl ov02_0224D0C8 - add r0, r4, #0 - bl ov02_0224D1AC - ldr r0, [r5, #0x40] - add r1, r4, #0 - bl ov02_0224D0AC - add r0, sp, #4 - lsl r1, r6, #1 - add r0, #2 - ldrh r0, [r0, r1] - bl GF_DegreeToSinCosIdxNoWrap - add r1, r0, #0 - add r0, r4, #0 - mov r2, #1 - bl Field3dObject_SetXRotation - ldr r0, _0224D644 ; =SEQ_SE_DP_FW463 - bl PlaySE - mov r0, #0 - add r4, #0xec - strh r0, [r4] - add sp, #0x10 - pop {r4, r5, r6, pc} - nop -_0224D640: .word ov02_022538EC -_0224D644: .word SEQ_SE_DP_FW463 - thumb_func_end ov02_0224D5B4 - - thumb_func_start ov02_0224D648 -ov02_0224D648: ; 0x0224D648 - ldr r3, _0224D654 ; =ov02_0224D144 - add r0, r2, #0 - add r2, #0xdc - add r1, r2, #0 - bx r3 - nop -_0224D654: .word ov02_0224D144 - thumb_func_end ov02_0224D648 - - thumb_func_start ov02_0224D658 -ov02_0224D658: ; 0x0224D658 - push {r3, r4, r5, lr} - add r4, r2, #0 - add r5, r1, #0 - add r0, r4, #0 - bl ov02_0224D1AC - ldr r0, [r5, #0x40] - add r1, r4, #0 - bl ov02_0224D0AC - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end ov02_0224D658 - - thumb_func_start ov02_0224D670 -ov02_0224D670: ; 0x0224D670 - ldr r3, _0224D678 ; =ov02_0224D1DC - add r0, r2, #0 - bx r3 - nop -_0224D678: .word ov02_0224D1DC - thumb_func_end ov02_0224D670 - - thumb_func_start ov02_0224D67C -ov02_0224D67C: ; 0x0224D67C - ldr r0, [r0, #4] - ldr r3, _0224D688 ; =Field3dObjectTaskManager_CreateTask - ldr r0, [r0, #4] - ldr r1, _0224D68C ; =ov02_02253914 - bx r3 - nop -_0224D688: .word Field3dObjectTaskManager_CreateTask -_0224D68C: .word ov02_02253914 - thumb_func_end ov02_0224D67C - - thumb_func_start ov02_0224D690 -ov02_0224D690: ; 0x0224D690 - ldr r3, _0224D694 ; =Field3dObjectTask_Delete - bx r3 - .balign 4, 0 -_0224D694: .word Field3dObjectTask_Delete - thumb_func_end ov02_0224D690 - - thumb_func_start ov02_0224D698 -ov02_0224D698: ; 0x0224D698 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r7, r0, #0 - add r0, #0xc8 - ldr r0, [r0] - add r6, r1, #0 - add r4, r2, #0 - add r5, r3, #0 - cmp r0, #0 - beq _0224D6B0 - bl GF_AssertFail -_0224D6B0: - add r0, r6, #0 - add r1, sp, #0 - bl PlayerAvatar_CopyPositionVector - ldr r2, [sp, #4] - ldr r3, [sp, #8] - ldr r1, [sp] - add r0, r7, #0 - add r2, r2, r4 - add r3, r3, r5 - bl Field3dObject_SetPosEx - add r0, r7, #0 - mov r4, #0 - add r5, r7, #0 - mov r1, #1 - add r0, #0xc8 - str r1, [r0] - add r5, #0x78 - add r6, r4, #0 -_0224D6D8: - add r0, r5, #0 - add r1, r6, #0 - bl Field3dModelAnimation_FrameSet - add r4, r4, #1 - add r5, #0x14 - cmp r4, #4 - blt _0224D6D8 - add r0, r7, #0 - mov r1, #1 - bl Field3dObject_SetActiveFlag - ldr r0, _0224D6FC ; =SEQ_SE_DP_UG_023 - bl PlaySE - add sp, #0xc - pop {r4, r5, r6, r7, pc} - nop -_0224D6FC: .word SEQ_SE_DP_UG_023 - thumb_func_end ov02_0224D698 - - thumb_func_start ov02_0224D700 -ov02_0224D700: ; 0x0224D700 - push {r3, r4, r5, r6, r7, lr} - str r0, [sp] - add r0, #0xc8 - ldr r0, [r0] - cmp r0, #0 - beq _0224D73A - ldr r5, [sp] - mov r4, #1 - mov r6, #0 - add r5, #0x78 - lsl r7, r4, #0xc -_0224D716: - add r0, r5, #0 - add r1, r7, #0 - bl Field3dModelAnimation_FrameAdvanceAndCheck - add r6, r6, #1 - and r4, r0 - add r5, #0x14 - cmp r6, #4 - blt _0224D716 - cmp r4, #1 - bne _0224D73A - ldr r0, [sp] - mov r1, #0 - add r0, #0xc8 - str r1, [r0] - ldr r0, [sp] - bl Field3dObject_SetActiveFlag -_0224D73A: - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov02_0224D700 - - thumb_func_start ov02_0224D73C -ov02_0224D73C: ; 0x0224D73C - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - str r1, [sp] - str r2, [sp, #4] - mov r1, #0 - mov r2, #0xcc - add r7, r0, #0 - add r5, r3, #0 - bl memset - ldr r1, [sp] - add r0, r7, #0 - bl Field3dObject_InitFromModel - add r4, r7, #0 - mov r6, #0 - add r4, #0x78 -_0224D75E: - ldr r1, [sp] - ldr r2, [r5] - ldr r3, [sp, #4] - add r0, r4, #0 - bl ov01_021FBE70 - add r0, r7, #0 - add r1, r4, #0 - bl Field3dObject_AddAnimation - add r6, r6, #1 - add r5, r5, #4 - add r4, #0x14 - cmp r6, #4 - blt _0224D75E - add r0, r7, #0 - mov r1, #0 - bl Field3dObject_SetActiveFlag - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov02_0224D73C - - thumb_func_start ov02_0224D788 -ov02_0224D788: ; 0x0224D788 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - add r5, r7, #0 - add r6, r1, #0 - mov r4, #0 - add r5, #0x78 -_0224D794: - add r0, r5, #0 - add r1, r6, #0 - bl Field3dModelAnimation_Unload - add r4, r4, #1 - add r5, #0x14 - cmp r4, #4 - blt _0224D794 - add r0, r7, #0 - mov r1, #0 - mov r2, #0xcc - bl memset - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov02_0224D788 - - thumb_func_start ov02_0224D7B0 -ov02_0224D7B0: ; 0x0224D7B0 - push {r3, r4, lr} - sub sp, #0xc - add r4, r0, #0 - mov r0, #0xce - lsl r0, r0, #4 - ldr r0, [r4, r0] - add r1, sp, #0 - ldr r0, [r0, #0x40] - bl PlayerAvatar_CopyPositionVector - mov r1, #0xcf - lsl r1, r1, #4 - ldr r2, [sp] - ldr r0, [r4, r1] - sub r0, r2, r0 - bne _0224D7F8 - add r0, r1, #4 - ldr r2, [sp, #4] - ldr r0, [r4, r0] - cmp r2, r0 - bge _0224D7F8 - add r0, r1, #0 - add r0, #8 - ldr r2, [sp, #8] - ldr r0, [r4, r0] - cmp r2, r0 - ble _0224D7F8 - add r0, r1, #0 - mov r2, #0 - sub r0, #8 - str r2, [r4, r0] - mov r2, #2 - lsl r2, r2, #0x10 - sub r0, r1, #4 - str r2, [r4, r0] - b _0224D806 -_0224D7F8: - mov r1, #2 - ldr r0, _0224D81C ; =0x00000CE8 - lsl r1, r1, #0x10 - str r1, [r4, r0] - lsr r1, r1, #1 - add r0, r0, #4 - str r1, [r4, r0] -_0224D806: - mov r0, #0xcf - lsl r0, r0, #4 - add r3, sp, #0 - add r2, r4, r0 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - add sp, #0xc - pop {r3, r4, pc} - nop -_0224D81C: .word 0x00000CE8 - thumb_func_end ov02_0224D7B0 - - thumb_func_start ov02_0224D820 -ov02_0224D820: ; 0x0224D820 - push {r4, lr} - add r4, r0, #0 - bl ov02_0224D7B0 - mov r2, #0 - add r1, r4, #0 -_0224D82C: - add r0, r1, #0 - add r0, #0xd8 - ldr r0, [r0] - cmp r0, #0 - bne _0224D858 - add r1, r4, #0 - mov r0, #0xcc - mov r3, #0xce - add r1, #0x10 - mul r0, r2 - lsl r3, r3, #4 - add r0, r1, r0 - ldr r1, [r4, r3] - add r2, r3, #0 - add r2, #8 - add r3, #0xc - ldr r1, [r1, #0x40] - ldr r2, [r4, r2] - ldr r3, [r4, r3] - bl ov02_0224D698 - pop {r4, pc} -_0224D858: - add r2, r2, #1 - add r1, #0xcc - cmp r2, #0x10 - blt _0224D82C - bl GF_AssertFail - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_0224D820 - - thumb_func_start ov02_0224D868 -ov02_0224D868: ; 0x0224D868 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r4, #0 - add r5, #0x10 -_0224D870: - add r0, r5, #0 - bl ov02_0224D700 - add r4, r4, #1 - add r5, #0xcc - cmp r4, #0x10 - blt _0224D870 - pop {r3, r4, r5, pc} - thumb_func_end ov02_0224D868 - - thumb_func_start ov02_0224D880 -ov02_0224D880: ; 0x0224D880 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r5, r2, #0 - mov r2, #0xd1 - str r1, [sp, #4] - add r0, r5, #0 - mov r1, #0 - lsl r2, r2, #4 - bl memset - ldr r0, _0224D90C ; =0x00000CFC - mov r1, #4 - add r0, r5, r0 - mov r2, #0x20 - bl HeapExp_FndInitAllocator - add r0, r5, #0 - mov r1, #0x86 - mov r2, #8 - mov r3, #4 - bl Field3dModel_LoadFromFilesystem - mov r7, #0xcd - mov r4, #0 - add r6, r5, #0 - lsl r7, r7, #4 -_0224D8B4: - mov r0, #0 - str r0, [sp] - mov r0, #0x86 - add r1, r4, #4 - mov r2, #0 - mov r3, #4 - bl GfGfxLoader_LoadFromNarc - str r0, [r6, r7] - add r4, r4, #1 - add r6, r6, #4 - cmp r4, #4 - blt _0224D8B4 - add r4, r5, #0 - mov r7, #0xcd - mov r6, #0 - add r4, #0x10 - lsl r7, r7, #4 -_0224D8D8: - ldr r2, _0224D90C ; =0x00000CFC - add r0, r4, #0 - add r1, r5, #0 - add r2, r5, r2 - add r3, r5, r7 - bl ov02_0224D73C - add r6, r6, #1 - add r4, #0xcc - cmp r6, #0x10 - blt _0224D8D8 - mov r1, #0xce - ldr r0, [sp, #4] - lsl r1, r1, #4 - str r0, [r5, r1] - ldr r0, [r5, r1] - add r1, #0x10 - ldr r0, [r0, #0x40] - add r1, r5, r1 - bl PlayerAvatar_CopyPositionVector - ldr r0, _0224D910 ; =0x00000D0C - mov r1, #0 - str r1, [r5, r0] - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_0224D90C: .word 0x00000CFC -_0224D910: .word 0x00000D0C - thumb_func_end ov02_0224D880 - - thumb_func_start ov02_0224D914 -ov02_0224D914: ; 0x0224D914 - push {r3, r4, r5, r6, r7, lr} - add r5, r2, #0 - add r4, r5, #0 - ldr r7, _0224D94C ; =0x00000CFC - mov r6, #0 - add r4, #0x10 -_0224D920: - add r0, r4, #0 - add r1, r5, r7 - bl ov02_0224D788 - add r6, r6, #1 - add r4, #0xcc - cmp r6, #0x10 - blt _0224D920 - add r0, r5, #0 - bl Field3dModel_Unload - mov r6, #0xcd - mov r4, #0 - lsl r6, r6, #4 -_0224D93C: - ldr r0, [r5, r6] - bl Heap_Free - add r4, r4, #1 - add r5, r5, #4 - cmp r4, #4 - blt _0224D93C - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_0224D94C: .word 0x00000CFC - thumb_func_end ov02_0224D914 - - thumb_func_start ov02_0224D950 -ov02_0224D950: ; 0x0224D950 - push {r4, lr} - ldr r1, _0224D988 ; =0x00000D0C - add r4, r2, #0 - ldr r0, [r4, r1] - cmp r0, #0 - bne _0224D986 - add r0, r1, #0 - sub r0, #0x28 - ldr r0, [r4, r0] - sub r2, r0, #1 - add r0, r1, #0 - sub r0, #0x28 - str r2, [r4, r0] - add r0, r1, #0 - sub r0, #0x28 - ldr r0, [r4, r0] - cmp r0, #0 - bge _0224D980 - mov r0, #4 - sub r1, #0x28 - str r0, [r4, r1] - add r0, r4, #0 - bl ov02_0224D820 -_0224D980: - add r0, r4, #0 - bl ov02_0224D868 -_0224D986: - pop {r4, pc} - .balign 4, 0 -_0224D988: .word 0x00000D0C - thumb_func_end ov02_0224D950 - - thumb_func_start ov02_0224D98C -ov02_0224D98C: ; 0x0224D98C - push {r3, r4, r5, lr} - add r5, r2, #0 - mov r4, #0 - add r5, #0x10 -_0224D994: - add r0, r5, #0 - bl Field3dObject_Draw - add r4, r4, #1 - add r5, #0xcc - cmp r4, #0x10 - blt _0224D994 - pop {r3, r4, r5, pc} - thumb_func_end ov02_0224D98C - - thumb_func_start ov02_0224D9A4 -ov02_0224D9A4: ; 0x0224D9A4 - ldr r0, [r0, #4] - ldr r3, _0224D9B0 ; =Field3dObjectTaskManager_CreateTask - ldr r0, [r0, #4] - ldr r1, _0224D9B4 ; =ov02_0225395C - bx r3 - nop -_0224D9B0: .word Field3dObjectTaskManager_CreateTask -_0224D9B4: .word ov02_0225395C - thumb_func_end ov02_0224D9A4 - - thumb_func_start ov02_0224D9B8 -ov02_0224D9B8: ; 0x0224D9B8 - ldr r3, _0224D9BC ; =Field3dObjectTask_Delete - bx r3 - .balign 4, 0 -_0224D9BC: .word Field3dObjectTask_Delete - thumb_func_end ov02_0224D9B8 - - thumb_func_start ov02_0224D9C0 -ov02_0224D9C0: ; 0x0224D9C0 - push {r3, r4, r5, lr} - sub sp, #0x28 - add r4, r2, #0 - mov r2, #0x45 - add r5, r1, #0 - add r0, r4, #0 - mov r1, #0 - lsl r2, r2, #2 - bl memset - add r0, r4, #0 - add r0, #0xdc - mov r1, #4 - mov r2, #0x20 - bl HeapExp_FndInitAllocator - add r0, r4, #0 - add r0, #0xdc - str r0, [sp] - add r0, r4, #0 - mov r1, #0x13 - mov r2, #0x11 - mov r3, #2 - bl ov02_0224D0C8 - ldr r0, [r5, #0x40] - add r1, r4, #0 - bl ov02_0224D044 - ldr r1, [r5, #0x24] - add r0, sp, #0x10 - bl Camera_GetLookAtCamTarget - add r3, sp, #0x10 - add r2, r4, #0 - ldmia r3!, {r0, r1} - add r2, #0xf8 - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - ldr r1, [r5, #0x24] - add r0, sp, #4 - bl Camera_GetLookAtCamPos - add r3, sp, #4 - add r2, r4, #0 - ldmia r3!, {r0, r1} - add r2, #0xec - stmia r2!, {r0, r1} - ldr r0, [r3] - add r1, sp, #0x1c - str r0, [r2] - mov r0, #0 - str r0, [r1] - str r0, [r1, #4] - str r0, [r1, #8] - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetFacingDirection - cmp r0, #3 - bhi _0224DA7C - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0224DA46: ; jump table - .short _0224DA4E - _0224DA46 - 2 ; case 0 - .short _0224DA5A - _0224DA46 - 2 ; case 1 - .short _0224DA66 - _0224DA46 - 2 ; case 2 - .short _0224DA72 - _0224DA46 - 2 ; case 3 -_0224DA4E: - mov r0, #2 - ldr r1, [sp, #0x24] - lsl r0, r0, #0xe - sub r0, r1, r0 - str r0, [sp, #0x24] - b _0224DA7C -_0224DA5A: - mov r0, #2 - ldr r1, [sp, #0x24] - lsl r0, r0, #0xe - add r0, r1, r0 - str r0, [sp, #0x24] - b _0224DA7C -_0224DA66: - mov r0, #2 - ldr r1, [sp, #0x1c] - lsl r0, r0, #0xe - sub r0, r1, r0 - str r0, [sp, #0x1c] - b _0224DA7C -_0224DA72: - mov r0, #2 - ldr r1, [sp, #0x1c] - lsl r0, r0, #0xe - add r0, r1, r0 - str r0, [sp, #0x1c] -_0224DA7C: - mov r0, #0x41 - lsl r0, r0, #2 - add r3, sp, #0x1c - add r2, r4, r0 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - ldr r0, _0224DA9C ; =SEQ_SE_GS_ZUTUKI - bl PlaySE - ldr r0, _0224DAA0 ; =0x00000113 - mov r1, #0 - strb r1, [r4, r0] - add sp, #0x28 - pop {r3, r4, r5, pc} - .balign 4, 0 -_0224DA9C: .word SEQ_SE_GS_ZUTUKI -_0224DAA0: .word 0x00000113 - thumb_func_end ov02_0224D9C0 - - thumb_func_start ov02_0224DAA4 -ov02_0224DAA4: ; 0x0224DAA4 - push {r3, r4, r5, lr} - sub sp, #0x28 - add r4, r2, #0 - mov r2, #0x45 - add r5, r1, #0 - add r0, r4, #0 - mov r1, #0 - lsl r2, r2, #2 - bl memset - add r0, r4, #0 - add r0, #0xdc - mov r1, #4 - mov r2, #0x20 - bl HeapExp_FndInitAllocator - add r0, r4, #0 - add r0, #0xdc - str r0, [sp] - add r0, r4, #0 - mov r1, #0x13 - mov r2, #0x11 - mov r3, #2 - bl ov02_0224D0C8 - ldr r0, [r5, #0x3c] - mov r1, #0xfd - add r2, r4, #0 - bl ov02_0224CFD8 - ldr r1, [r5, #0x24] - add r0, sp, #0x10 - bl Camera_GetLookAtCamTarget - add r3, sp, #0x10 - add r2, r4, #0 - ldmia r3!, {r0, r1} - add r2, #0xf8 - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - ldr r1, [r5, #0x24] - add r0, sp, #4 - bl Camera_GetLookAtCamPos - add r3, sp, #4 - add r2, r4, #0 - ldmia r3!, {r0, r1} - add r2, #0xec - stmia r2!, {r0, r1} - ldr r0, [r3] - add r1, sp, #0x1c - str r0, [r2] - mov r0, #0 - str r0, [r1] - str r0, [r1, #4] - str r0, [r1, #8] - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetFacingDirection - cmp r0, #3 - bhi _0224DB62 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0224DB2C: ; jump table - .short _0224DB34 - _0224DB2C - 2 ; case 0 - .short _0224DB40 - _0224DB2C - 2 ; case 1 - .short _0224DB4C - _0224DB2C - 2 ; case 2 - .short _0224DB58 - _0224DB2C - 2 ; case 3 -_0224DB34: - mov r0, #2 - ldr r1, [sp, #0x24] - lsl r0, r0, #0xe - sub r0, r1, r0 - str r0, [sp, #0x24] - b _0224DB62 -_0224DB40: - mov r0, #2 - ldr r1, [sp, #0x24] - lsl r0, r0, #0xe - add r0, r1, r0 - str r0, [sp, #0x24] - b _0224DB62 -_0224DB4C: - mov r0, #2 - ldr r1, [sp, #0x1c] - lsl r0, r0, #0xe - sub r0, r1, r0 - str r0, [sp, #0x1c] - b _0224DB62 -_0224DB58: - mov r0, #2 - ldr r1, [sp, #0x1c] - lsl r0, r0, #0xe - add r0, r1, r0 - str r0, [sp, #0x1c] -_0224DB62: - mov r0, #0x41 - lsl r0, r0, #2 - add r3, sp, #0x1c - add r2, r4, r0 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - ldr r0, _0224DB84 ; =SEQ_SE_GS_ZUTUKI - bl PlaySE - ldr r0, _0224DB88 ; =0x00000113 - mov r1, #0 - strb r1, [r4, r0] - add sp, #0x28 - pop {r3, r4, r5, pc} - nop -_0224DB84: .word SEQ_SE_GS_ZUTUKI -_0224DB88: .word 0x00000113 - thumb_func_end ov02_0224DAA4 - - thumb_func_start ov02_0224DB8C -ov02_0224DB8C: ; 0x0224DB8C - ldr r3, _0224DB98 ; =ov02_0224D144 - add r0, r2, #0 - add r2, #0xdc - add r1, r2, #0 - bx r3 - nop -_0224DB98: .word ov02_0224D144 - thumb_func_end ov02_0224DB8C - - thumb_func_start ov02_0224DB9C -ov02_0224DB9C: ; 0x0224DB9C - push {r3, r4, r5, lr} - add r5, r1, #0 - ldr r1, _0224DC50 ; =0x00000113 - add r4, r2, #0 - ldrb r0, [r4, r1] - cmp r0, #0 - beq _0224DBB0 - cmp r0, #1 - beq _0224DC38 - pop {r3, r4, r5, pc} -_0224DBB0: - sub r0, r1, #1 - ldrb r0, [r4, r0] - cmp r0, #2 - bhs _0224DC1C - sub r0, r1, #3 - ldrsb r0, [r4, r0] - cmp r0, #0 - bgt _0224DC12 - mov r2, #1 - sub r0, r1, #3 - strb r2, [r4, r0] - sub r0, r1, #2 - ldrb r0, [r4, r0] - add r0, r0, #1 - lsr r2, r0, #0x1f - lsl r1, r0, #0x1f - sub r1, r1, r2 - mov r0, #0x1f - ror r1, r0 - add r2, r2, r1 - add r1, r0, #0 - add r1, #0xf2 - strb r2, [r4, r1] - add r1, r0, #0 - add r1, #0xf2 - ldrb r1, [r4, r1] - cmp r1, #0 - beq _0224DBF4 - add r0, #0xe5 - ldr r1, [r5, #0x24] - add r0, r4, r0 - bl Camera_OffsetLookAtPosAndTarget - b _0224DC1C -_0224DBF4: - add r0, r4, #0 - ldr r1, [r5, #0x24] - add r0, #0xf8 - bl Camera_SetLookAtCamTarget - add r0, r4, #0 - ldr r1, [r5, #0x24] - add r0, #0xec - bl Camera_SetLookAtCamPos - ldr r0, _0224DC54 ; =0x00000112 - ldrb r1, [r4, r0] - add r1, r1, #1 - strb r1, [r4, r0] - b _0224DC1C -_0224DC12: - sub r0, r1, #3 - ldrsb r0, [r4, r0] - sub r2, r0, #1 - sub r0, r1, #3 - strb r2, [r4, r0] -_0224DC1C: - add r0, r4, #0 - bl ov02_0224D178 - cmp r0, #1 - bne _0224DC4C - add r0, r4, #0 - mov r1, #0 - bl Field3dObject_SetActiveFlag - ldr r0, _0224DC50 ; =0x00000113 - ldrb r1, [r4, r0] - add r1, r1, #1 - strb r1, [r4, r0] - pop {r3, r4, r5, pc} -_0224DC38: - add r0, r4, #0 - ldr r1, [r5, #0x24] - add r0, #0xf8 - bl Camera_SetLookAtCamTarget - add r4, #0xec - ldr r1, [r5, #0x24] - add r0, r4, #0 - bl Camera_SetLookAtCamPos -_0224DC4C: - pop {r3, r4, r5, pc} - nop -_0224DC50: .word 0x00000113 -_0224DC54: .word 0x00000112 - thumb_func_end ov02_0224DB9C - - thumb_func_start ov02_0224DC58 -ov02_0224DC58: ; 0x0224DC58 - ldr r3, _0224DC60 ; =ov02_0224D1DC - add r0, r2, #0 - bx r3 - nop -_0224DC60: .word ov02_0224D1DC - thumb_func_end ov02_0224DC58 - - thumb_func_start ov02_0224DC64 -ov02_0224DC64: ; 0x0224DC64 - ldr r0, [r0, #4] - ldr r3, _0224DC70 ; =Field3dObjectTaskManager_CreateTask - ldr r0, [r0, #4] - ldr r1, _0224DC74 ; =ov02_022539A4 - bx r3 - nop -_0224DC70: .word Field3dObjectTaskManager_CreateTask -_0224DC74: .word ov02_022539A4 - thumb_func_end ov02_0224DC64 - - thumb_func_start ov02_0224DC78 -ov02_0224DC78: ; 0x0224DC78 - ldr r0, [r0, #4] - ldr r3, _0224DC84 ; =Field3dObjectTaskManager_CreateTask - ldr r0, [r0, #4] - ldr r1, _0224DC88 ; =ov02_0225392C - bx r3 - nop -_0224DC84: .word Field3dObjectTaskManager_CreateTask -_0224DC88: .word ov02_0225392C - thumb_func_end ov02_0224DC78 - - thumb_func_start ov02_0224DC8C -ov02_0224DC8C: ; 0x0224DC8C - ldr r3, _0224DC90 ; =Field3dObjectTask_Delete - bx r3 - .balign 4, 0 -_0224DC90: .word Field3dObjectTask_Delete - thumb_func_end ov02_0224DC8C - - thumb_func_start ov02_0224DC94 -ov02_0224DC94: ; 0x0224DC94 - push {r3, lr} - bl Field3dObjectTask_GetData - ldr r1, _0224DCAC ; =0x00000113 - ldrb r0, [r0, r1] - cmp r0, #1 - bne _0224DCA6 - mov r0, #1 - pop {r3, pc} -_0224DCA6: - mov r0, #0 - pop {r3, pc} - nop -_0224DCAC: .word 0x00000113 - thumb_func_end ov02_0224DC94 - - thumb_func_start ov02_0224DCB0 -ov02_0224DCB0: ; 0x0224DCB0 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r6, r2, #0 - str r1, [sp, #4] - ldr r2, _0224DD28 ; =0x00000E9C - add r0, r6, #0 - mov r1, #0 - bl memset - ldr r0, _0224DD2C ; =0x00000E88 - mov r1, #4 - add r0, r6, r0 - mov r2, #0x20 - bl HeapExp_FndInitAllocator - add r0, r6, #0 - mov r1, #0x86 - mov r2, #8 - mov r3, #4 - bl Field3dModel_LoadFromFilesystem - ldr r7, _0224DD30 ; =0x00000E68 - mov r4, #0 - add r5, r6, #0 -_0224DCE0: - mov r0, #0 - str r0, [sp] - mov r0, #0x86 - add r1, r4, #4 - mov r2, #0 - mov r3, #4 - bl GfGfxLoader_LoadFromNarc - str r0, [r5, r7] - add r4, r4, #1 - add r5, r5, #4 - cmp r4, #4 - blt _0224DCE0 - add r4, r6, #0 - ldr r7, _0224DD30 ; =0x00000E68 - mov r5, #0 - add r4, #0x10 -_0224DD02: - ldr r2, _0224DD2C ; =0x00000E88 - add r0, r4, #0 - add r1, r6, #0 - add r2, r6, r2 - add r3, r6, r7 - bl ov02_0224DEA8 - add r5, r5, #1 - add r4, #0xcc - cmp r5, #0x12 - blt _0224DD02 - ldr r1, _0224DD34 ; =0x00000E78 - ldr r0, [sp, #4] - str r0, [r6, r1] - mov r0, #0 - add r1, #0x20 - strh r0, [r6, r1] - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_0224DD28: .word 0x00000E9C -_0224DD2C: .word 0x00000E88 -_0224DD30: .word 0x00000E68 -_0224DD34: .word 0x00000E78 - thumb_func_end ov02_0224DCB0 - - thumb_func_start ov02_0224DD38 -ov02_0224DD38: ; 0x0224DD38 - push {r4, lr} - add r4, r2, #0 - bl ov02_0224DCB0 - ldr r0, _0224DD48 ; =0x00000E9A - mov r1, #1 - strh r1, [r4, r0] - pop {r4, pc} - .balign 4, 0 -_0224DD48: .word 0x00000E9A - thumb_func_end ov02_0224DD38 - - thumb_func_start ov02_0224DD4C -ov02_0224DD4C: ; 0x0224DD4C - push {r3, r4, r5, r6, r7, lr} - add r5, r2, #0 - add r4, r5, #0 - ldr r7, _0224DD84 ; =0x00000E88 - mov r6, #0 - add r4, #0x10 -_0224DD58: - add r0, r4, #0 - add r1, r5, r7 - bl ov02_0224DEF4 - add r6, r6, #1 - add r4, #0xcc - cmp r6, #0x12 - blt _0224DD58 - add r0, r5, #0 - bl Field3dModel_Unload - ldr r6, _0224DD88 ; =0x00000E68 - mov r4, #0 -_0224DD72: - ldr r0, [r5, r6] - bl Heap_Free - add r4, r4, #1 - add r5, r5, #4 - cmp r4, #4 - blt _0224DD72 - pop {r3, r4, r5, r6, r7, pc} - nop -_0224DD84: .word 0x00000E88 -_0224DD88: .word 0x00000E68 - thumb_func_end ov02_0224DD4C - - thumb_func_start ov02_0224DD8C -ov02_0224DD8C: ; 0x0224DD8C - push {r4, lr} - ldr r1, _0224DDC4 ; =0x00000E98 - add r4, r2, #0 - ldrh r0, [r4, r1] - cmp r0, #0 - bne _0224DDC2 - add r0, r1, #0 - sub r0, #0x1c - ldr r0, [r4, r0] - sub r2, r0, #1 - add r0, r1, #0 - sub r0, #0x1c - str r2, [r4, r0] - add r0, r1, #0 - sub r0, #0x1c - ldr r0, [r4, r0] - cmp r0, #0 - bge _0224DDBC - mov r0, #4 - sub r1, #0x1c - str r0, [r4, r1] - add r0, r4, #0 - bl ov02_0224DF1C -_0224DDBC: - add r0, r4, #0 - bl ov02_0224E008 -_0224DDC2: - pop {r4, pc} - .balign 4, 0 -_0224DDC4: .word 0x00000E98 - thumb_func_end ov02_0224DD8C - - thumb_func_start ov02_0224DDC8 -ov02_0224DDC8: ; 0x0224DDC8 - push {r3, r4, r5, lr} - add r5, r2, #0 - mov r4, #0 - add r5, #0x10 -_0224DDD0: - add r0, r5, #0 - bl Field3dObject_Draw - add r4, r4, #1 - add r5, #0xcc - cmp r4, #0x12 - blt _0224DDD0 - pop {r3, r4, r5, pc} - thumb_func_end ov02_0224DDC8 - - thumb_func_start ov02_0224DDE0 -ov02_0224DDE0: ; 0x0224DDE0 - ldr r0, [r0, #4] - ldr r3, _0224DDEC ; =Field3dObjectTaskManager_CreateTask - ldr r0, [r0, #4] - ldr r1, _0224DDF0 ; =ov02_022539D4 - bx r3 - nop -_0224DDEC: .word Field3dObjectTaskManager_CreateTask -_0224DDF0: .word ov02_022539D4 - thumb_func_end ov02_0224DDE0 - - thumb_func_start ov02_0224DDF4 -ov02_0224DDF4: ; 0x0224DDF4 - ldr r0, [r0, #4] - ldr r3, _0224DE00 ; =Field3dObjectTaskManager_CreateTask - ldr r0, [r0, #4] - ldr r1, _0224DE04 ; =ov02_022539EC - bx r3 - nop -_0224DE00: .word Field3dObjectTaskManager_CreateTask -_0224DE04: .word ov02_022539EC - thumb_func_end ov02_0224DDF4 - - thumb_func_start ov02_0224DE08 -ov02_0224DE08: ; 0x0224DE08 - ldr r3, _0224DE0C ; =Field3dObjectTask_Delete - bx r3 - .balign 4, 0 -_0224DE0C: .word Field3dObjectTask_Delete - thumb_func_end ov02_0224DE08 - - thumb_func_start ov02_0224DE10 -ov02_0224DE10: ; 0x0224DE10 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - add r0, #0xc8 - ldr r0, [r0] - add r4, r1, #0 - add r5, r2, #0 - add r6, r3, #0 - cmp r0, #0 - beq _0224DE26 - bl GF_AssertFail -_0224DE26: - ldr r2, [r4, #4] - ldr r3, [r4, #8] - ldr r1, [r4] - add r0, r7, #0 - add r2, r2, r5 - add r3, r3, r6 - bl Field3dObject_SetPosEx - add r0, r7, #0 - mov r4, #0 - add r5, r7, #0 - mov r1, #1 - add r0, #0xc8 - str r1, [r0] - add r5, #0x78 - add r6, r4, #0 -_0224DE46: - add r0, r5, #0 - add r1, r6, #0 - bl Field3dModelAnimation_FrameSet - add r4, r4, #1 - add r5, #0x14 - cmp r4, #4 - blt _0224DE46 - add r0, r7, #0 - mov r1, #1 - bl Field3dObject_SetActiveFlag - ldr r0, _0224DE68 ; =SEQ_SE_DP_UG_023 - bl PlaySE - pop {r3, r4, r5, r6, r7, pc} - nop -_0224DE68: .word SEQ_SE_DP_UG_023 - thumb_func_end ov02_0224DE10 - - thumb_func_start ov02_0224DE6C -ov02_0224DE6C: ; 0x0224DE6C - push {r3, r4, r5, r6, r7, lr} - str r0, [sp] - add r0, #0xc8 - ldr r0, [r0] - cmp r0, #0 - beq _0224DEA6 - ldr r5, [sp] - mov r4, #1 - mov r6, #0 - add r5, #0x78 - lsl r7, r4, #0xc -_0224DE82: - add r0, r5, #0 - add r1, r7, #0 - bl Field3dModelAnimation_FrameAdvanceAndCheck - add r6, r6, #1 - and r4, r0 - add r5, #0x14 - cmp r6, #4 - blt _0224DE82 - cmp r4, #1 - bne _0224DEA6 - ldr r0, [sp] - mov r1, #0 - add r0, #0xc8 - str r1, [r0] - ldr r0, [sp] - bl Field3dObject_SetActiveFlag -_0224DEA6: - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov02_0224DE6C - - thumb_func_start ov02_0224DEA8 -ov02_0224DEA8: ; 0x0224DEA8 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - str r1, [sp] - str r2, [sp, #4] - mov r1, #0 - mov r2, #0xcc - add r7, r0, #0 - add r5, r3, #0 - bl memset - ldr r1, [sp] - add r0, r7, #0 - bl Field3dObject_InitFromModel - add r4, r7, #0 - mov r6, #0 - add r4, #0x78 -_0224DECA: - ldr r1, [sp] - ldr r2, [r5] - ldr r3, [sp, #4] - add r0, r4, #0 - bl ov01_021FBE70 - add r0, r7, #0 - add r1, r4, #0 - bl Field3dObject_AddAnimation - add r6, r6, #1 - add r5, r5, #4 - add r4, #0x14 - cmp r6, #4 - blt _0224DECA - add r0, r7, #0 - mov r1, #0 - bl Field3dObject_SetActiveFlag - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov02_0224DEA8 - - thumb_func_start ov02_0224DEF4 -ov02_0224DEF4: ; 0x0224DEF4 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - add r5, r7, #0 - add r6, r1, #0 - mov r4, #0 - add r5, #0x78 -_0224DF00: - add r0, r5, #0 - add r1, r6, #0 - bl Field3dModelAnimation_Unload - add r4, r4, #1 - add r5, #0x14 - cmp r4, #4 - blt _0224DF00 - add r0, r7, #0 - mov r1, #0 - mov r2, #0xcc - bl memset - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov02_0224DEF4 - - thumb_func_start ov02_0224DF1C -ov02_0224DF1C: ; 0x0224DF1C - push {r3, r4, r5, lr} - sub sp, #0x18 - add r4, r0, #0 - mov r0, #1 - mov r1, #0x3a - mov r2, #3 - lsl r0, r0, #0xc - lsl r1, r1, #6 - str r0, [r4, r1] - add r0, r1, #4 - lsl r2, r2, #0xc - sub r1, #8 - str r2, [r4, r0] - ldr r0, [r4, r1] - add r1, sp, #0xc - ldr r0, [r0, #0x40] - bl PlayerAvatar_CopyPositionVector - ldr r0, _0224E004 ; =0x00000E9A - ldrh r1, [r4, r0] - cmp r1, #0 - beq _0224DFC6 - sub r0, #0x22 - ldr r0, [r4, r0] - bl FollowMon_GetMapObject - add r1, sp, #0 - bl MapObject_CopyPositionVector - mov r5, #0 - add r1, r4, #0 -_0224DF5A: - add r0, r1, #0 - add r0, #0xd8 - ldr r0, [r0] - cmp r0, #0 - bne _0224DF80 - mov r3, #0x3a - lsl r3, r3, #6 - add r1, r4, #0 - mov r0, #0xcc - ldr r2, [r4, r3] - add r3, r3, #4 - add r1, #0x10 - mul r0, r5 - add r0, r1, r0 - ldr r3, [r4, r3] - add r1, sp, #0xc - bl ov02_0224DE10 - b _0224DF88 -_0224DF80: - add r5, r5, #1 - add r1, #0xcc - cmp r5, #0x12 - blt _0224DF5A -_0224DF88: - cmp r5, #0x12 - bne _0224DF90 - bl GF_AssertFail -_0224DF90: - mov r0, #0 - add r2, r4, #0 -_0224DF94: - add r1, r2, #0 - add r1, #0xd8 - ldr r1, [r1] - cmp r1, #0 - bne _0224DFBC - add r2, r4, #0 - mov r1, #0xcc - mov r3, #0x3a - add r2, #0x10 - mul r1, r0 - add r0, r2, r1 - lsl r3, r3, #6 - ldr r2, [r4, r3] - add r3, r3, #4 - ldr r3, [r4, r3] - add r1, sp, #0 - bl ov02_0224DE10 - add sp, #0x18 - pop {r3, r4, r5, pc} -_0224DFBC: - add r0, r0, #1 - add r2, #0xcc - cmp r0, #0x12 - blt _0224DF94 - b _0224DFFA -_0224DFC6: - mov r0, #0 - add r2, r4, #0 -_0224DFCA: - add r1, r2, #0 - add r1, #0xd8 - ldr r1, [r1] - cmp r1, #0 - bne _0224DFF2 - add r2, r4, #0 - mov r1, #0xcc - mov r3, #0x3a - add r2, #0x10 - mul r1, r0 - add r0, r2, r1 - lsl r3, r3, #6 - ldr r2, [r4, r3] - add r3, r3, #4 - ldr r3, [r4, r3] - add r1, sp, #0xc - bl ov02_0224DE10 - add sp, #0x18 - pop {r3, r4, r5, pc} -_0224DFF2: - add r0, r0, #1 - add r2, #0xcc - cmp r0, #0x12 - blt _0224DFCA -_0224DFFA: - bl GF_AssertFail - add sp, #0x18 - pop {r3, r4, r5, pc} - nop -_0224E004: .word 0x00000E9A - thumb_func_end ov02_0224DF1C - - thumb_func_start ov02_0224E008 -ov02_0224E008: ; 0x0224E008 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r4, #0 - add r5, #0x10 -_0224E010: - add r0, r5, #0 - bl ov02_0224DE6C - add r4, r4, #1 - add r5, #0xcc - cmp r4, #0x12 - blt _0224E010 - pop {r3, r4, r5, pc} - thumb_func_end ov02_0224E008 - - thumb_func_start ov02_0224E020 -ov02_0224E020: ; 0x0224E020 - push {r3, r4, r5, lr} - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224E032 - cmp r0, #1 - beq _0224E04A - pop {r3, r4, r5, pc} -_0224E032: - ldr r1, [r4, #0xc] - ldr r0, [r4] - lsl r2, r1, #2 - ldr r1, _0224E06C ; =ov02_02253A34 - ldr r1, [r1, r2] - blx r1 - cmp r0, #1 - bne _0224E068 - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - pop {r3, r4, r5, pc} -_0224E04A: - ldr r1, [r4, #0xc] - ldr r0, [r4] - lsl r2, r1, #2 - ldr r1, _0224E070 ; =ov02_02253A04 - ldr r1, [r1, r2] - blx r1 - ldr r0, [r4, #4] - mov r1, #1 - strh r1, [r0] - add r0, r4, #0 - bl Heap_Free - add r0, r5, #0 - bl SysTask_Destroy -_0224E068: - pop {r3, r4, r5, pc} - nop -_0224E06C: .word ov02_02253A34 -_0224E070: .word ov02_02253A04 - thumb_func_end ov02_0224E020 - - thumb_func_start ov02_0224E074 -ov02_0224E074: ; 0x0224E074 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - add r5, r1, #0 - add r0, r3, #0 - mov r1, #0x10 - add r4, r2, #0 - bl Heap_Alloc - add r6, r0, #0 - add r2, r6, #0 - mov r1, #0x10 - mov r0, #0 -_0224E08C: - strb r0, [r2] - add r2, r2, #1 - sub r1, r1, #1 - bne _0224E08C - ldr r1, _0224E0B4 ; =ov02_02253A1C - lsl r2, r4, #2 - ldr r1, [r1, r2] - add r0, r7, #0 - blx r1 - str r0, [r6] - str r5, [r6, #4] - ldr r0, _0224E0B8 ; =ov02_0224E020 - str r4, [r6, #0xc] - mov r2, #0 - add r1, r6, #0 - strh r2, [r5] - bl SysTask_CreateOnMainQueue - pop {r3, r4, r5, r6, r7, pc} - nop -_0224E0B4: .word ov02_02253A1C -_0224E0B8: .word ov02_0224E020 - thumb_func_end ov02_0224E074 - - thumb_func_start ov02_0224E0BC -ov02_0224E0BC: ; 0x0224E0BC - push {r4, lr} - add r4, r2, #0 - bl ov02_0224E0D4 - add r2, r0, #0 - ldr r1, _0224E0D0 ; =ov02_0224E0EC - add r0, r4, #0 - bl TaskManager_Call - pop {r4, pc} - .balign 4, 0 -_0224E0D0: .word ov02_0224E0EC - thumb_func_end ov02_0224E0BC - - thumb_func_start ov02_0224E0D4 -ov02_0224E0D4: ; 0x0224E0D4 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - mov r0, #4 - mov r1, #0x20 - bl Heap_AllocAtEnd - mov r1, #0 - str r1, [r0] - str r5, [r0, #4] - str r4, [r0, #8] - pop {r3, r4, r5, pc} - thumb_func_end ov02_0224E0D4 - - thumb_func_start ov02_0224E0EC -ov02_0224E0EC: ; 0x0224E0EC - push {r4, r5, r6, lr} - add r4, r0, #0 - bl TaskManager_GetFieldSystem - add r6, r0, #0 - add r0, r4, #0 - bl TaskManager_GetEnvironment - add r4, r0, #0 - ldr r0, [r4] - mov r5, #0 - cmp r0, #5 - bls _0224E108 - b _0224E21E -_0224E108: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0224E114: ; jump table - .short _0224E120 - _0224E114 - 2 ; case 0 - .short _0224E130 - _0224E114 - 2 ; case 1 - .short _0224E156 - _0224E114 - 2 ; case 2 - .short _0224E1AA - _0224E114 - 2 ; case 3 - .short _0224E1C6 - _0224E114 - 2 ; case 4 - .short _0224E1F6 - _0224E114 - 2 ; case 5 -_0224E120: - add r0, r6, #0 - bl FollowMon_GetMapObject - bl MapObject_UnpauseMovement - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] -_0224E130: - ldr r0, [r4, #4] - bl MapObject_AreBitsSetForMovementScriptInit - cmp r0, #0 - beq _0224E21E - ldr r0, [r4, #8] - bl MapObject_AreBitsSetForMovementScriptInit - cmp r0, #0 - beq _0224E21E - add r0, r6, #0 - bl FollowMon_GetMapObject - bl MapObject_PauseMovement - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _0224E21E -_0224E156: - ldr r0, [r4, #4] - bl MapObject_GetXCoord - str r0, [r4, #0xc] - ldr r0, [r4, #4] - bl MapObject_GetZCoord - str r0, [r4, #0x10] - ldr r0, [r4, #4] - bl MapObject_GetFacingDirection - str r0, [r4, #0x14] - ldr r0, [r4, #8] - bl MapObject_GetXCoord - str r0, [r4, #0x18] - ldr r0, [r4, #8] - bl MapObject_GetZCoord - str r0, [r4, #0x1c] - add r0, r4, #0 - add r1, r4, #0 - add r0, #0xc - add r1, #0x18 - bl ov02_0224E224 - add r6, r0, #0 - ldr r0, [r4, #4] - add r1, r6, #0 - bl MapObject_SetHeldMovement - add r0, r6, #0 - bl ov02_0224E2D4 - add r1, r0, #0 - ldr r0, [r4, #8] - bl MapObject_SetHeldMovement - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _0224E21E -_0224E1AA: - ldr r0, [r4, #4] - bl MapObject_AreBitsSetForMovementScriptInit - cmp r0, #0 - beq _0224E21E - ldr r0, [r4, #8] - bl MapObject_AreBitsSetForMovementScriptInit - cmp r0, #0 - beq _0224E21E - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _0224E21E -_0224E1C6: - ldr r0, [r4, #4] - bl MapObject_GetFacingDirection - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl ov02_0224E2A0 - add r1, r0, #0 - ldr r0, [r4, #4] - bl MapObject_SetHeldMovement - ldr r0, [r4, #0x14] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl ov02_0224E26C - add r1, r0, #0 - ldr r0, [r4, #8] - bl MapObject_SetHeldMovement - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _0224E21E -_0224E1F6: - ldr r0, [r4, #4] - bl MapObject_AreBitsSetForMovementScriptInit - cmp r0, #0 - beq _0224E21E - ldr r0, [r4, #8] - bl MapObject_AreBitsSetForMovementScriptInit - cmp r0, #0 - beq _0224E21E - ldr r0, [r4, #4] - bl MapObject_ClearHeldMovementIfActive - ldr r0, [r4, #8] - bl MapObject_ClearHeldMovementIfActive - add r0, r4, #0 - mov r5, #1 - bl Heap_Free -_0224E21E: - add r0, r5, #0 - pop {r4, r5, r6, pc} - .balign 4, 0 - thumb_func_end ov02_0224E0EC - - thumb_func_start ov02_0224E224 -ov02_0224E224: ; 0x0224E224 - push {r3, r4, r5, lr} - ldr r5, [r1] - ldr r3, [r0] - mov r4, #0xd - cmp r3, r5 - bne _0224E246 - ldr r1, [r1, #4] - ldr r0, [r0, #4] - cmp r0, r1 - ble _0224E23C - mov r4, #0xc - b _0224E268 -_0224E23C: - cmp r0, r1 - blt _0224E268 - bl GF_AssertFail - b _0224E268 -_0224E246: - ldr r2, [r0, #4] - ldr r0, [r1, #4] - cmp r2, r0 - bne _0224E264 - cmp r3, r5 - ble _0224E256 - mov r4, #0xe - b _0224E268 -_0224E256: - cmp r3, r5 - bge _0224E25E - mov r4, #0xf - b _0224E268 -_0224E25E: - bl GF_AssertFail - b _0224E268 -_0224E264: - bl GF_AssertFail -_0224E268: - add r0, r4, #0 - pop {r3, r4, r5, pc} - thumb_func_end ov02_0224E224 - - thumb_func_start ov02_0224E26C -ov02_0224E26C: ; 0x0224E26C - push {r3, lr} - cmp r0, #3 - bhi _0224E296 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0224E27E: ; jump table - .short _0224E286 - _0224E27E - 2 ; case 0 - .short _0224E28A - _0224E27E - 2 ; case 1 - .short _0224E28E - _0224E27E - 2 ; case 2 - .short _0224E292 - _0224E27E - 2 ; case 3 -_0224E286: - mov r0, #0 - pop {r3, pc} -_0224E28A: - mov r0, #1 - pop {r3, pc} -_0224E28E: - mov r0, #2 - pop {r3, pc} -_0224E292: - mov r0, #3 - pop {r3, pc} -_0224E296: - bl GF_AssertFail - mov r0, #0 - pop {r3, pc} - .balign 4, 0 - thumb_func_end ov02_0224E26C - - thumb_func_start ov02_0224E2A0 -ov02_0224E2A0: ; 0x0224E2A0 - push {r3, lr} - cmp r0, #3 - bhi _0224E2CA - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0224E2B2: ; jump table - .short _0224E2BA - _0224E2B2 - 2 ; case 0 - .short _0224E2BE - _0224E2B2 - 2 ; case 1 - .short _0224E2C2 - _0224E2B2 - 2 ; case 2 - .short _0224E2C6 - _0224E2B2 - 2 ; case 3 -_0224E2BA: - mov r0, #1 - pop {r3, pc} -_0224E2BE: - mov r0, #0 - pop {r3, pc} -_0224E2C2: - mov r0, #3 - pop {r3, pc} -_0224E2C6: - mov r0, #2 - pop {r3, pc} -_0224E2CA: - bl GF_AssertFail - mov r0, #0 - pop {r3, pc} - .balign 4, 0 - thumb_func_end ov02_0224E2A0 - - thumb_func_start ov02_0224E2D4 -ov02_0224E2D4: ; 0x0224E2D4 - push {r3, lr} - sub r0, #0xc - cmp r0, #3 - bhi _0224E300 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0224E2E8: ; jump table - .short _0224E2F0 - _0224E2E8 - 2 ; case 0 - .short _0224E2F4 - _0224E2E8 - 2 ; case 1 - .short _0224E2F8 - _0224E2E8 - 2 ; case 2 - .short _0224E2FC - _0224E2E8 - 2 ; case 3 -_0224E2F0: - mov r0, #0xd - pop {r3, pc} -_0224E2F4: - mov r0, #0xc - pop {r3, pc} -_0224E2F8: - mov r0, #0xf - pop {r3, pc} -_0224E2FC: - mov r0, #0xe - pop {r3, pc} -_0224E300: - bl GF_AssertFail - mov r0, #0 - pop {r3, pc} - thumb_func_end ov02_0224E2D4 - - thumb_func_start ov02_0224E308 -ov02_0224E308: ; 0x0224E308 - ldr r1, _0224E318 ; =0x00000165 - cmp r0, r1 - bne _0224E312 - mov r0, #1 - bx lr -_0224E312: - mov r0, #0 - bx lr - nop -_0224E318: .word 0x00000165 - thumb_func_end ov02_0224E308 - - thumb_func_start ov02_0224E31C -ov02_0224E31C: ; 0x0224E31C - sub r0, #0x20 - asr r2, r0, #4 - lsr r2, r2, #0x1b - add r2, r0, r2 - sub r1, #0x20 - asr r0, r1, #4 - lsr r0, r0, #0x1b - add r0, r1, r0 - asr r1, r0, #5 - lsl r0, r1, #1 - asr r2, r2, #5 - add r0, r1, r0 - add r0, r2, r0 - bmi _0224E33C - cmp r0, #6 - blt _0224E33E -_0224E33C: - mov r0, #0 -_0224E33E: - bx lr - thumb_func_end ov02_0224E31C - - thumb_func_start ov02_0224E340 -ov02_0224E340: ; 0x0224E340 - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetXCoord - add r4, r0, #0 - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetZCoord - add r1, r0, #0 - add r0, r4, #0 - bl ov02_0224E31C - pop {r3, r4, r5, pc} - thumb_func_end ov02_0224E340 - - thumb_func_start ov02_0224E35C -ov02_0224E35C: ; 0x0224E35C - push {r4, r5, r6, r7, lr} - sub sp, #0x1c - add r5, r0, #0 - ldr r0, [r5, #0xc] - bl Save_VarsFlags_Get - add r6, r0, #0 - ldr r0, [r5, #0xc] - bl Save_LocalFieldData_Get - bl LocalFieldData_GetCurrentPosition - ldr r0, [r5, #0xc] - bl Save_SafariZone_Get - add r4, r0, #0 - ldr r0, [r5, #0x20] - ldr r0, [r0] - bl ov02_0224E308 - cmp r0, #0 - bne _0224E38E - add sp, #0x1c - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_0224E38E: - add r0, r6, #0 - bl Save_VarsFlags_CheckSafariSysFlag - cmp r0, #0 - bne _0224E39E - add sp, #0x1c - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_0224E39E: - add r0, r4, #0 - bl sub_0202F620 - cmp r0, #0 - beq _0224E3AE - add sp, #0x1c - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_0224E3AE: - add r0, r4, #0 - bl SafariZone_GetObjectUnlockLevel - cmp r0, #0 - bne _0224E3BE - add sp, #0x1c - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_0224E3BE: - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetFacingDirection - add r7, r0, #0 - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetXCoord - add r4, r0, #0 - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetZCoord - str r0, [sp, #8] - add r0, r7, #0 - bl GetDeltaXByFacingDirection - add r6, r4, r0 - add r0, r7, #0 - bl GetDeltaYByFacingDirection - ldr r1, [sp, #8] - add r4, r1, r0 - cmp r6, #0x20 - blt _0224E3F8 - cmp r6, #0x80 - bge _0224E3F8 - cmp r4, #0x20 - blt _0224E3F8 - cmp r4, #0x60 - blt _0224E3FE -_0224E3F8: - add sp, #0x1c - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_0224E3FE: - cmp r6, #0x20 - blt _0224E40E - cmp r6, #0x80 - bge _0224E40E - cmp r4, #0x20 - blt _0224E40E - cmp r4, #0x60 - blt _0224E414 -_0224E40E: - add sp, #0x1c - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_0224E414: - ldr r0, [r5, #0x40] - add r1, sp, #0x10 - bl PlayerAvatar_CopyPositionVector - add r0, sp, #0xc - str r0, [sp] - ldr r1, [sp, #0x14] - ldr r2, [sp, #0x10] - ldr r3, [sp, #0x18] - add r0, r5, #0 - bl sub_02054774 - add r7, r0, #0 - add r0, sp, #0xc - ldrb r0, [r0] - cmp r0, #1 - beq _0224E43C - add sp, #0x1c - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_0224E43C: - lsl r0, r4, #4 - add r0, #8 - cmp r0, #0 - ble _0224E458 - lsl r0, r0, #0xc - bl _fflt - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - str r0, [sp, #4] - b _0224E468 -_0224E458: - lsl r0, r0, #0xc - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub - str r0, [sp, #4] -_0224E468: - lsl r0, r6, #4 - add r0, #8 - cmp r0, #0 - ble _0224E482 - lsl r0, r0, #0xc - bl _fflt - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - b _0224E490 -_0224E482: - lsl r0, r0, #0xc - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub -_0224E490: - bl _ffix - add r4, r0, #0 - ldr r0, [sp, #4] - bl _ffix - add r3, r0, #0 - add r0, sp, #0xc - str r0, [sp] - ldr r1, [sp, #0x14] - add r0, r5, #0 - add r2, r4, #0 - bl sub_02054774 - add r1, sp, #0xc - ldrb r1, [r1] - cmp r1, #1 - beq _0224E4BA - add sp, #0x1c - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_0224E4BA: - cmp r7, r0 - bne _0224E4C4 - add sp, #0x1c - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_0224E4C4: - mov r0, #0 - add sp, #0x1c - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_0224E35C - - thumb_func_start ov02_0224E4CC -ov02_0224E4CC: ; 0x0224E4CC - push {r3, lr} - cmp r1, #0 - beq _0224E4D6 - mov r0, #0 - pop {r3, pc} -_0224E4D6: - bl sub_0205BAD0 - pop {r3, pc} - thumb_func_end ov02_0224E4CC - - thumb_func_start ov02_0224E4DC -ov02_0224E4DC: ; 0x0224E4DC - push {r3, lr} - cmp r1, #0 - beq _0224E4E6 - mov r0, #0 - pop {r3, pc} -_0224E4E6: - bl sub_0205BAE4 - pop {r3, pc} - thumb_func_end ov02_0224E4DC - - thumb_func_start SafariDecoration_CreateArgs -SafariDecoration_CreateArgs: ; 0x0224E4EC - push {r4, r5, r6, r7, lr} - sub sp, #0x2c - add r5, r0, #0 - add r0, r1, #0 - mov r1, #0x24 - bl Heap_AllocAtEnd - mov r1, #0 - mov r2, #0x24 - add r4, r0, #0 - bl MI_CpuFill8 - add r0, r5, #0 - bl FieldSystem_GetSaveData - str r0, [r4] - mov r0, #0x43 - lsl r0, r0, #2 - add r1, r5, r0 - add r0, r0, #5 - str r1, [r4, #4] - add r0, r5, r0 - str r0, [r4, #0x20] - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetState - cmp r0, #2 - bne _0224E528 - mov r0, #1 - b _0224E52A -_0224E528: - mov r0, #0 -_0224E52A: - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - strb r6, [r4, #0x18] - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetFacingDirection - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x10] - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetXCoord - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - str r0, [sp, #0x14] - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetZCoord - lsl r0, r0, #0x10 - asr r7, r0, #0x10 - ldr r0, [r5, #0x40] - add r1, sp, #0x20 - bl PlayerAvatar_CopyPositionVector - ldr r0, [sp, #0x14] - add r1, r7, #0 - bl ov02_0224E31C - strb r0, [r4, #0x19] - add r0, sp, #0x18 - str r0, [sp] - ldr r1, [sp, #0x24] - ldr r2, [sp, #0x20] - ldr r3, [sp, #0x28] - add r0, r5, #0 - bl sub_02054774 - str r0, [sp, #0x24] - add r1, sp, #0x18 - ldrb r1, [r1] - cmp r1, #1 - beq _0224E584 - add sp, #0x2c - add r0, r4, #0 - pop {r4, r5, r6, r7, pc} -_0224E584: - asr r0, r0, #0xc - strb r0, [r4, #0x1a] - ldr r0, [sp, #0x10] - bl GetDeltaXByFacingDirection - ldr r1, [sp, #0x14] - add r0, r1, r0 - strb r0, [r4, #9] - ldr r0, [sp, #0x10] - bl GetDeltaYByFacingDirection - add r0, r7, r0 - strb r0, [r4, #0xb] - mov r0, #1 - strb r0, [r4, #8] - ldr r0, [sp, #0x24] - add r2, r7, #0 - str r0, [sp] - add r0, sp, #0x1c - str r0, [sp, #4] - add r0, sp, #0x18 - add r0, #2 - str r0, [sp, #8] - str r6, [sp, #0xc] - ldr r1, [sp, #0x14] - ldr r3, [sp, #0x10] - add r0, r5, #0 - bl ov02_0224E828 - cmp r0, #0 - beq _0224E5D4 - add r1, sp, #0x18 - mov r0, #4 - ldrsh r0, [r1, r0] - strb r0, [r4, #0xd] - mov r0, #2 - ldrsh r0, [r1, r0] - strb r0, [r4, #0xf] - mov r0, #1 - strb r0, [r4, #0xc] -_0224E5D4: - ldr r0, [sp, #0x24] - add r2, r7, #0 - str r0, [sp] - add r0, sp, #0x1c - str r0, [sp, #4] - add r0, sp, #0x18 - add r0, #2 - str r0, [sp, #8] - str r6, [sp, #0xc] - ldr r1, [sp, #0x14] - ldr r3, [sp, #0x10] - add r0, r5, #0 - bl ov02_0224EB48 - cmp r0, #0 - beq _0224E606 - add r1, sp, #0x18 - mov r0, #4 - ldrsh r0, [r1, r0] - strb r0, [r4, #0x11] - mov r0, #2 - ldrsh r0, [r1, r0] - strb r0, [r4, #0x13] - mov r0, #1 - strb r0, [r4, #0x10] -_0224E606: - ldr r0, [sp, #0x24] - add r2, r7, #0 - str r0, [sp] - add r0, sp, #0x1c - str r0, [sp, #4] - add r0, sp, #0x18 - add r0, #2 - str r0, [sp, #8] - str r6, [sp, #0xc] - ldr r1, [sp, #0x14] - ldr r3, [sp, #0x10] - add r0, r5, #0 - bl ov02_0224EE4C - cmp r0, #0 - beq _0224E638 - add r1, sp, #0x18 - mov r0, #4 - ldrsh r0, [r1, r0] - strb r0, [r4, #0x15] - mov r0, #2 - ldrsh r0, [r1, r0] - strb r0, [r4, #0x17] - mov r0, #1 - strb r0, [r4, #0x14] -_0224E638: - add r0, r4, #0 - add sp, #0x2c - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end SafariDecoration_CreateArgs - - thumb_func_start ov02_0224E640 -ov02_0224E640: ; 0x0224E640 - push {r3, r4, r5, lr} - add r4, r0, #0 - bl Save_PlayerData_GetProfile - bl PlayerProfile_GetTrainerID - add r5, r0, #0 - add r0, r4, #0 - bl Save_SafariZone_Get - bl SafariZone_GetObjectUnlockLevel - add r4, r0, #0 - add r0, r5, #0 - mov r1, #0xa - bl _u32_div_f - lsl r0, r1, #0x18 - lsr r0, r0, #0x18 - cmp r0, #6 - bhs _0224E672 - mov r1, #3 - bl _s32_div_f - b _0224E67C -_0224E672: - sub r1, r0, #6 - lsr r0, r1, #0x1f - add r0, r1, r0 - asr r0, r0, #1 - add r0, r0, #2 -_0224E67C: - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - mov r0, #3 - sub r0, r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - add r0, r0, #1 - cmp r4, r0 - blt _0224E692 - mov r0, #1 - pop {r3, r4, r5, pc} -_0224E692: - mov r0, #0 - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end ov02_0224E640 - - thumb_func_start ov02_0224E698 -ov02_0224E698: ; 0x0224E698 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x20 - add r5, r0, #0 - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetFacingDirection - lsl r0, r0, #0x18 - lsr r7, r0, #0x18 - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetXCoord - lsl r0, r0, #0x10 - asr r6, r0, #0x10 - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetZCoord - lsl r0, r0, #0x10 - asr r4, r0, #0x10 - ldr r0, [r5, #0x40] - add r1, sp, #0x14 - bl PlayerAvatar_CopyPositionVector - ldr r0, [r5, #0xc] - bl Save_SafariZone_Get - mov r1, #0 - bl SafariZone_GetAreaSet - add r2, r0, #0 - add r0, r6, #0 - sub r0, #0x20 - asr r1, r0, #4 - lsr r1, r1, #0x1b - add r1, r0, r1 - add r0, r4, #0 - sub r0, #0x20 - asr r3, r0, #4 - lsr r3, r3, #0x1b - add r3, r0, r3 - asr r3, r3, #5 - lsl r0, r3, #1 - asr r1, r1, #5 - add r0, r3, r0 - add r0, r1, r0 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - mov r0, #0x7a - mul r0, r1 - add r0, r2, r0 - ldrb r0, [r0, #1] - cmp r0, #0x1e - blo _0224E706 - add sp, #0x20 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_0224E706: - ldr r0, [r5, #0x40] - bl PlayerAvatar_GetState - cmp r0, #2 - beq _0224E716 - add sp, #0x20 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224E716: - ldr r0, [r5, #0xc] - bl ov02_0224E640 - cmp r0, #0 - bne _0224E726 - add sp, #0x20 - mov r0, #2 - pop {r3, r4, r5, r6, r7, pc} -_0224E726: - ldr r0, [sp, #0x18] - add r1, r6, #0 - str r0, [sp] - add r0, sp, #0x10 - add r0, #2 - str r0, [sp, #4] - add r0, sp, #0x10 - str r0, [sp, #8] - mov r0, #1 - str r0, [sp, #0xc] - add r0, r5, #0 - add r2, r4, #0 - add r3, r7, #0 - bl ov02_0224EE4C - cmp r0, #0 - beq _0224E74E - add sp, #0x20 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224E74E: - mov r0, #3 - add sp, #0x20 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov02_0224E698 - - thumb_func_start ov02_0224E754 -ov02_0224E754: ; 0x0224E754 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r4, r0, #0 - ldr r0, [r4, #0x40] - str r1, [sp] - bl PlayerAvatar_GetFacingDirection - add r6, r0, #0 - ldr r0, [r4, #0x40] - bl PlayerAvatar_GetXCoord - add r5, r0, #0 - add r0, r6, #0 - bl GetDeltaXByFacingDirection - add r7, r5, r0 - ldr r0, [r4, #0x40] - bl PlayerAvatar_GetZCoord - add r5, r0, #0 - add r0, r6, #0 - bl GetDeltaYByFacingDirection - add r6, r5, r0 - ldr r0, [r4, #0xc] - bl Save_PlayerData_GetProfile - bl PlayerProfile_GetTrainerGender - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #4] - add r0, r7, #0 - add r1, r6, #0 - bl ov02_0224E31C - add r5, r0, #0 - lsr r1, r7, #0x1f - lsl r0, r7, #0x1b - sub r0, r0, r1 - mov r2, #0x1b - ror r0, r2 - add r7, r1, r0 - lsr r1, r6, #0x1f - lsl r0, r6, #0x1b - sub r0, r0, r1 - ror r0, r2 - add r6, r1, r0 - ldr r0, [r4, #0xc] - bl Save_SafariZone_Get - mov r1, #0 - bl SafariZone_GetAreaSet - mov r1, #0x7a - mul r1, r5 - add r0, r0, r1 - str r0, [sp, #8] - ldrb r0, [r0, #1] - mov r4, #0 - cmp r0, #0 - ble _0224E81C - ldr r0, [sp, #8] - add r5, r0, #2 -_0224E7D4: - ldrb r1, [r5] - ldr r2, [sp, #4] - add r0, sp, #0xc - bl sub_02097268 - ldrb r1, [r5, #1] - cmp r7, r1 - blt _0224E810 - ldrb r0, [r5, #3] - cmp r6, r0 - bgt _0224E810 - add r2, sp, #0xc - ldrb r2, [r2, #1] - lsl r3, r2, #0x1c - lsr r3, r3, #0x1d - add r1, r1, r3 - cmp r7, r1 - bge _0224E810 - lsl r1, r2, #0x19 - lsr r1, r1, #0x1d - sub r0, r0, r1 - cmp r6, r0 - ble _0224E810 - ldr r0, [sp] - cmp r0, #0 - beq _0224E80A - strh r4, [r0] -_0224E80A: - add sp, #0x10 - ldrb r0, [r5] - pop {r3, r4, r5, r6, r7, pc} -_0224E810: - ldr r0, [sp, #8] - add r4, r4, #1 - ldrb r0, [r0, #1] - add r5, r5, #4 - cmp r4, r0 - blt _0224E7D4 -_0224E81C: - ldr r0, [sp] - mov r1, #0 - strh r1, [r0] - mov r0, #0xff - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov02_0224E754 - - thumb_func_start ov02_0224E828 -ov02_0224E828: ; 0x0224E828 - push {r4, r5, r6, r7, lr} - sub sp, #0x6c - add r4, r0, #0 - add r5, r1, #0 - ldr r0, [sp, #0x84] - str r2, [sp, #4] - ldr r1, _0224EB44 ; =ov02_02253A4C - str r0, [sp, #0x84] - ldr r0, [sp, #0x88] - ldrb r2, [r1, #2] - str r0, [sp, #0x88] - ldrb r1, [r1, #3] - str r3, [sp, #8] - add r0, sp, #0x68 - strb r2, [r0, #1] - strb r1, [r0, #2] - ldr r1, [sp, #0x84] - ldr r6, [sp, #0x80] - strh r5, [r1] - ldr r2, [sp, #4] - ldr r1, [sp, #0x88] - strh r2, [r1] - ldr r1, [sp, #8] - cmp r1, #3 - bls _0224E85C - b _0224EB3E -_0224E85C: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0224E868: ; jump table - .short _0224E870 - _0224E868 - 2 ; case 0 - .short _0224E870 - _0224E868 - 2 ; case 1 - .short _0224E992 - _0224E868 - 2 ; case 2 - .short _0224E992 - _0224E868 - 2 ; case 3 -_0224E870: - mov r0, #0 - str r0, [sp, #0x50] - ldr r0, [sp, #8] - cmp r0, #0 - beq _0224E87E - mov r0, #1 - b _0224E880 -_0224E87E: - ldr r0, [sp, #0x50] -_0224E880: - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - mov r0, #0 - str r0, [sp, #0x54] - add r0, sp, #0x68 - add r0, #1 - ldrsb r0, [r0, r1] - ldr r7, [sp, #0x54] - str r0, [sp, #0x38] - add r0, sp, #0x70 - ldrb r0, [r0, #0x1c] - str r0, [sp, #0x48] - lsl r0, r5, #4 - str r0, [sp, #0x44] - add r0, #8 - str r0, [sp, #0x44] - lsl r0, r0, #0xc - str r0, [sp, #0x40] -_0224E8A4: - ldr r0, [sp, #0x38] - add r1, r7, r0 - ldr r0, [sp, #4] - add r0, r0, r1 - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - str r0, [sp, #0x3c] - ldr r2, [sp, #0x3c] - add r0, r4, #0 - add r1, r5, #0 - bl GetMetatileBehavior - str r0, [sp, #0x58] - ldr r2, [sp, #0x3c] - add r0, r4, #0 - add r1, r5, #0 - bl sub_020548C0 - add r1, r0, #0 - ldr r0, [sp, #0x58] - ldr r2, [sp, #0x48] - bl ov02_0224EF6C - cmp r0, #0 - beq _0224E95C - ldr r0, [sp, #0x3c] - lsl r0, r0, #4 - add r0, #8 - cmp r0, #0 - ble _0224E8F4 - lsl r0, r0, #0xc - bl _fflt - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - str r0, [sp, #0x14] - b _0224E904 -_0224E8F4: - lsl r0, r0, #0xc - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub - str r0, [sp, #0x14] -_0224E904: - ldr r0, [sp, #0x44] - cmp r0, #0 - ble _0224E91C - ldr r0, [sp, #0x40] - bl _fflt - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - b _0224E92A -_0224E91C: - ldr r0, [sp, #0x40] - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub -_0224E92A: - bl _ffix - str r0, [sp, #0x5c] - ldr r0, [sp, #0x14] - bl _ffix - add r3, r0, #0 - add r0, sp, #0x68 - str r0, [sp] - ldr r2, [sp, #0x5c] - add r0, r4, #0 - add r1, r6, #0 - bl sub_02054774 - add r1, sp, #0x68 - ldrb r1, [r1] - cmp r1, #1 - bne _0224E95C - cmp r0, r6 - bne _0224E95C - ldr r0, [sp, #0x50] - add r0, r0, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x50] -_0224E95C: - ldr r0, [sp, #0x38] - add r7, r7, r0 - ldr r0, [sp, #0x54] - add r0, r0, #1 - str r0, [sp, #0x54] - cmp r0, #2 - blt _0224E8A4 - ldr r0, [sp, #0x50] - cmp r0, #2 - beq _0224E972 - b _0224EB3E -_0224E972: - ldr r0, [sp, #0x84] - strh r5, [r0] - ldr r0, [sp, #8] - cmp r0, #0 - bne _0224E984 - ldr r0, [sp, #4] - sub r1, r0, #1 - ldr r0, [sp, #0x88] - b _0224E98A -_0224E984: - ldr r0, [sp, #4] - add r1, r0, #2 - ldr r0, [sp, #0x88] -_0224E98A: - strh r1, [r0] - add sp, #0x6c - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_0224E992: - ldr r1, [sp, #8] - cmp r1, #2 - bne _0224E99C - mov r1, #1 - b _0224E99E -_0224E99C: - mov r1, #2 -_0224E99E: - ldrsb r0, [r0, r1] - ldr r2, [sp, #4] - add r0, r5, r0 - lsl r0, r0, #0x10 - asr r5, r0, #0x10 - add r0, r4, #0 - add r1, r5, #0 - bl GetMetatileBehavior - str r0, [sp, #0x20] - ldr r2, [sp, #4] - add r0, r4, #0 - add r1, r5, #0 - bl sub_020548C0 - str r0, [sp, #0x18] - ldr r0, [sp, #4] - lsl r0, r0, #4 - add r0, #8 - cmp r0, #0 - ble _0224E9DC - lsl r0, r0, #0xc - bl _fflt - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - str r0, [sp, #0x10] - b _0224E9EC -_0224E9DC: - lsl r0, r0, #0xc - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub - str r0, [sp, #0x10] -_0224E9EC: - lsl r0, r5, #4 - str r0, [sp, #0x2c] - add r0, #8 - str r0, [sp, #0x2c] - cmp r0, #0 - ble _0224EA0A - lsl r0, r0, #0xc - bl _fflt - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - b _0224EA18 -_0224EA0A: - lsl r0, r0, #0xc - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub -_0224EA18: - bl _ffix - add r7, r0, #0 - ldr r0, [sp, #0x10] - bl _ffix - add r3, r0, #0 - add r0, sp, #0x68 - str r0, [sp] - add r0, r4, #0 - add r1, r6, #0 - add r2, r7, #0 - bl sub_02054774 - add r7, r0, #0 - add r0, sp, #0x70 - ldrb r0, [r0, #0x1c] - ldr r1, [sp, #0x18] - str r0, [sp, #0x34] - ldr r0, [sp, #0x20] - ldr r2, [sp, #0x34] - bl ov02_0224EF6C - cmp r0, #0 - beq _0224EA56 - add r0, sp, #0x68 - ldrb r0, [r0] - cmp r0, #1 - bne _0224EA56 - cmp r7, r6 - beq _0224EA5C -_0224EA56: - add sp, #0x6c - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_0224EA5C: - mov r0, #0 - str r0, [sp, #0x28] - ldr r0, [sp, #0x2c] - add r7, sp, #0x68 - lsl r0, r0, #0xc - add r7, #1 - str r0, [sp, #0x4c] -_0224EA6A: - mov r0, #0 - ldrsb r1, [r7, r0] - ldr r0, [sp, #4] - add r0, r0, r1 - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - str r0, [sp, #0x30] - ldr r2, [sp, #0x30] - add r0, r4, #0 - add r1, r5, #0 - bl GetMetatileBehavior - str r0, [sp, #0x24] - ldr r2, [sp, #0x30] - add r0, r4, #0 - add r1, r5, #0 - bl sub_020548C0 - str r0, [sp, #0x1c] - ldr r0, [sp, #0x30] - lsl r0, r0, #4 - add r0, #8 - cmp r0, #0 - ble _0224EAAE - lsl r0, r0, #0xc - bl _fflt - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - str r0, [sp, #0xc] - b _0224EABE -_0224EAAE: - lsl r0, r0, #0xc - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub - str r0, [sp, #0xc] -_0224EABE: - ldr r0, [sp, #0x2c] - cmp r0, #0 - ble _0224EAD6 - ldr r0, [sp, #0x4c] - bl _fflt - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - b _0224EAE4 -_0224EAD6: - ldr r0, [sp, #0x4c] - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub -_0224EAE4: - bl _ffix - str r0, [sp, #0x60] - ldr r0, [sp, #0xc] - bl _ffix - add r3, r0, #0 - add r0, sp, #0x68 - str r0, [sp] - ldr r2, [sp, #0x60] - add r0, r4, #0 - add r1, r6, #0 - bl sub_02054774 - str r0, [sp, #0x64] - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x1c] - ldr r2, [sp, #0x34] - bl ov02_0224EF6C - cmp r0, #0 - beq _0224EB32 - add r0, sp, #0x68 - ldrb r0, [r0] - cmp r0, #1 - bne _0224EB32 - ldr r0, [sp, #0x64] - cmp r0, r6 - bne _0224EB32 - ldr r0, [sp, #0x84] - strh r5, [r0] - ldr r1, [sp, #4] - ldr r0, [sp, #0x28] - add r1, r1, r0 - ldr r0, [sp, #0x88] - add sp, #0x6c - strh r1, [r0] - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_0224EB32: - ldr r0, [sp, #0x28] - add r7, r7, #1 - add r0, r0, #1 - str r0, [sp, #0x28] - cmp r0, #2 - blt _0224EA6A -_0224EB3E: - mov r0, #0 - add sp, #0x6c - pop {r4, r5, r6, r7, pc} - .balign 4, 0 -_0224EB44: .word ov02_02253A4C - thumb_func_end ov02_0224E828 - - thumb_func_start ov02_0224EB48 -ov02_0224EB48: ; 0x0224EB48 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x68 - add r4, r0, #0 - ldr r0, [sp, #0x84] - str r1, [sp, #4] - str r0, [sp, #0x84] - ldr r0, [sp, #0x88] - ldr r1, _0224EE48 ; =ov02_02253A4C - str r0, [sp, #0x88] - add r5, r2, #0 - add r2, r3, #0 - ldrb r0, [r1] - add r3, sp, #0x64 - ldr r6, [sp, #0x80] - strb r0, [r3, #1] - ldrb r0, [r1, #1] - cmp r2, #3 - strb r0, [r3, #2] - ldr r1, [sp, #4] - ldr r0, [sp, #0x84] - strh r1, [r0] - ldr r0, [sp, #0x88] - strh r5, [r0] - bls _0224EB7A - b _0224EE42 -_0224EB7A: - add r0, r2, r2 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0224EB86: ; jump table - .short _0224EB8E - _0224EB86 - 2 ; case 0 - .short _0224EB8E - _0224EB86 - 2 ; case 1 - .short _0224ED3A - _0224EB86 - 2 ; case 2 - .short _0224ED3A - _0224EB86 - 2 ; case 3 -_0224EB8E: - cmp r2, #0 - bne _0224EB96 - mov r0, #1 - b _0224EB98 -_0224EB96: - mov r0, #2 -_0224EB98: - ldrsb r0, [r3, r0] - ldr r1, [sp, #4] - add r0, r5, r0 - lsl r0, r0, #0x10 - asr r5, r0, #0x10 - add r0, r4, #0 - add r2, r5, #0 - bl GetMetatileBehavior - str r0, [sp, #0x50] - ldr r1, [sp, #4] - add r0, r4, #0 - add r2, r5, #0 - bl sub_020548C0 - str r0, [sp, #0x4c] - lsl r0, r5, #4 - str r0, [sp, #0x24] - add r0, #8 - str r0, [sp, #0x24] - cmp r0, #0 - ble _0224EBD8 - lsl r0, r0, #0xc - bl _fflt - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - str r0, [sp, #0x14] - b _0224EBE8 -_0224EBD8: - lsl r0, r0, #0xc - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub - str r0, [sp, #0x14] -_0224EBE8: - ldr r0, [sp, #4] - lsl r0, r0, #4 - add r0, #8 - cmp r0, #0 - ble _0224EC04 - lsl r0, r0, #0xc - bl _fflt - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - b _0224EC12 -_0224EC04: - lsl r0, r0, #0xc - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub -_0224EC12: - bl _ffix - add r7, r0, #0 - ldr r0, [sp, #0x14] - bl _ffix - add r3, r0, #0 - add r0, sp, #0x64 - str r0, [sp] - add r0, r4, #0 - add r1, r6, #0 - add r2, r7, #0 - bl sub_02054774 - add r7, r0, #0 - add r0, sp, #0x70 - ldrb r0, [r0, #0x1c] - ldr r1, [sp, #0x4c] - str r0, [sp, #0x30] - ldr r0, [sp, #0x50] - ldr r2, [sp, #0x30] - bl ov02_0224EF6C - cmp r0, #0 - beq _0224EC50 - add r0, sp, #0x64 - ldrb r0, [r0] - cmp r0, #1 - bne _0224EC50 - cmp r7, r6 - beq _0224EC56 -_0224EC50: - add sp, #0x68 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224EC56: - mov r0, #0 - str r0, [sp, #0x48] - ldr r0, [sp, #0x24] - add r7, sp, #0x64 - lsl r0, r0, #0xc - add r7, #1 - str r0, [sp, #0x34] -_0224EC64: - mov r0, #0 - ldrsb r1, [r7, r0] - ldr r0, [sp, #4] - add r2, r5, #0 - sub r0, r0, r1 - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - str r0, [sp, #0x2c] - ldr r1, [sp, #0x2c] - add r0, r4, #0 - bl GetMetatileBehavior - str r0, [sp, #0x20] - ldr r1, [sp, #0x2c] - add r0, r4, #0 - add r2, r5, #0 - bl sub_020548C0 - str r0, [sp, #0x1c] - ldr r0, [sp, #0x24] - cmp r0, #0 - ble _0224ECA4 - ldr r0, [sp, #0x34] - bl _fflt - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - str r0, [sp, #0x10] - b _0224ECB4 -_0224ECA4: - ldr r0, [sp, #0x34] - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub - str r0, [sp, #0x10] -_0224ECB4: - ldr r0, [sp, #0x2c] - lsl r0, r0, #4 - add r0, #8 - cmp r0, #0 - ble _0224ECD0 - lsl r0, r0, #0xc - bl _fflt - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - b _0224ECDE -_0224ECD0: - lsl r0, r0, #0xc - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub -_0224ECDE: - bl _ffix - str r0, [sp, #0x54] - ldr r0, [sp, #0x10] - bl _ffix - add r3, r0, #0 - add r0, sp, #0x64 - str r0, [sp] - ldr r2, [sp, #0x54] - add r0, r4, #0 - add r1, r6, #0 - bl sub_02054774 - str r0, [sp, #0x58] - ldr r0, [sp, #0x20] - ldr r1, [sp, #0x1c] - ldr r2, [sp, #0x30] - bl ov02_0224EF6C - cmp r0, #0 - beq _0224ED2C - add r0, sp, #0x64 - ldrb r0, [r0] - cmp r0, #1 - bne _0224ED2C - ldr r0, [sp, #0x58] - cmp r0, r6 - bne _0224ED2C - ldr r1, [sp, #4] - ldr r0, [sp, #0x48] - sub r1, r1, r0 - ldr r0, [sp, #0x84] - strh r1, [r0] - ldr r0, [sp, #0x88] - add sp, #0x68 - strh r5, [r0] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_0224ED2C: - ldr r0, [sp, #0x48] - add r7, r7, #1 - add r0, r0, #1 - str r0, [sp, #0x48] - cmp r0, #2 - blt _0224EC64 - b _0224EE42 -_0224ED3A: - mov r0, #0 - str r0, [sp, #0x44] - cmp r2, #2 - bne _0224ED4E - ldr r0, [sp, #4] - sub r0, r0, #2 - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - str r0, [sp, #0xc] - b _0224ED58 -_0224ED4E: - ldr r0, [sp, #4] - add r0, r0, #1 - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - str r0, [sp, #0xc] -_0224ED58: - mov r0, #0 - str r0, [sp, #0x18] - add r0, sp, #0x70 - ldrb r0, [r0, #0x1c] - ldr r7, [sp, #0xc] - str r0, [sp, #0x40] - lsl r0, r5, #4 - str r0, [sp, #0x3c] - add r0, #8 - str r0, [sp, #0x3c] - lsl r0, r0, #0xc - str r0, [sp, #0x38] -_0224ED70: - lsl r0, r7, #0x10 - asr r0, r0, #0x10 - str r0, [sp, #0x28] - ldr r1, [sp, #0x28] - add r0, r4, #0 - add r2, r5, #0 - bl GetMetatileBehavior - str r0, [sp, #0x5c] - ldr r1, [sp, #0x28] - add r0, r4, #0 - add r2, r5, #0 - bl sub_020548C0 - add r1, r0, #0 - ldr r0, [sp, #0x5c] - ldr r2, [sp, #0x40] - bl ov02_0224EF6C - cmp r0, #0 - beq _0224EE20 - ldr r0, [sp, #0x3c] - cmp r0, #0 - ble _0224EDB4 - ldr r0, [sp, #0x38] - bl _fflt - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - str r0, [sp, #8] - b _0224EDC4 -_0224EDB4: - ldr r0, [sp, #0x38] - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub - str r0, [sp, #8] -_0224EDC4: - ldr r0, [sp, #0x28] - lsl r0, r0, #4 - add r0, #8 - cmp r0, #0 - ble _0224EDE0 - lsl r0, r0, #0xc - bl _fflt - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - b _0224EDEE -_0224EDE0: - lsl r0, r0, #0xc - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub -_0224EDEE: - bl _ffix - str r0, [sp, #0x60] - ldr r0, [sp, #8] - bl _ffix - add r3, r0, #0 - add r0, sp, #0x64 - str r0, [sp] - ldr r2, [sp, #0x60] - add r0, r4, #0 - add r1, r6, #0 - bl sub_02054774 - add r1, sp, #0x64 - ldrb r1, [r1] - cmp r1, #1 - bne _0224EE20 - cmp r0, r6 - bne _0224EE20 - ldr r0, [sp, #0x44] - add r0, r0, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x44] -_0224EE20: - ldr r0, [sp, #0x18] - add r7, r7, #1 - add r0, r0, #1 - str r0, [sp, #0x18] - cmp r0, #2 - blt _0224ED70 - ldr r0, [sp, #0x44] - cmp r0, #2 - bne _0224EE42 - ldr r1, [sp, #0xc] - ldr r0, [sp, #0x84] - strh r1, [r0] - ldr r0, [sp, #0x88] - add sp, #0x68 - strh r5, [r0] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_0224EE42: - mov r0, #0 - add sp, #0x68 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_0224EE48: .word ov02_02253A4C - thumb_func_end ov02_0224EB48 - - thumb_func_start ov02_0224EE4C -ov02_0224EE4C: ; 0x0224EE4C - push {r4, r5, r6, r7, lr} - sub sp, #0x24 - str r1, [sp, #0x14] - str r2, [sp, #0x18] - ldr r4, [sp, #0x38] - str r3, [sp, #0x1c] - str r4, [sp, #0x38] - ldr r4, [sp, #0x44] - ldr r6, [sp, #0x3c] - str r4, [sp, #0x44] - ldr r4, _0224EF68 ; =ov02_02253A4C - ldr r7, [sp, #0x40] - ldrb r5, [r4, #4] - add r4, sp, #0x20 - str r0, [sp, #0x10] - strb r5, [r4] - ldr r4, _0224EF68 ; =ov02_02253A4C - ldrb r5, [r4, #5] - add r4, sp, #0x20 - strb r5, [r4, #1] - ldr r4, [sp, #0x14] - strh r4, [r6] - ldr r4, [sp, #0x18] - strh r4, [r7] - ldr r4, [sp, #0x1c] - cmp r4, #3 - bhi _0224EF60 - add r4, r4, r4 - add r4, pc - ldrh r4, [r4, #6] - lsl r4, r4, #0x10 - asr r4, r4, #0x10 - add pc, r4 -_0224EE8E: ; jump table - .short _0224EE96 - _0224EE8E - 2 ; case 0 - .short _0224EE96 - _0224EE8E - 2 ; case 1 - .short _0224EEFC - _0224EE8E - 2 ; case 2 - .short _0224EEFC - _0224EE8E - 2 ; case 3 -_0224EE96: - ldr r4, [sp, #0x38] - str r4, [sp] - str r6, [sp, #4] - str r7, [sp, #8] - ldr r4, [sp, #0x44] - str r4, [sp, #0xc] - bl ov02_0224E828 - cmp r0, #0 - beq _0224EF60 - mov r4, #0 - add r5, sp, #0x20 -_0224EEAE: - ldr r0, [sp, #0x38] - mov r1, #0 - str r0, [sp] - str r6, [sp, #4] - str r7, [sp, #8] - ldr r0, [sp, #0x44] - str r0, [sp, #0xc] - ldrsb r2, [r5, r1] - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x10] - add r1, r1, r2 - lsl r1, r1, #0x10 - ldr r2, [sp, #0x18] - ldr r3, [sp, #0x1c] - asr r1, r1, #0x10 - bl ov02_0224E828 - cmp r0, #0 - beq _0224EEF2 - ldr r0, [sp, #0x14] - sub r0, r0, r4 - strh r0, [r6] - ldr r0, [sp, #0x1c] - cmp r0, #0 - bne _0224EEE6 - ldr r0, [sp, #0x18] - sub r0, r0, #1 - b _0224EEEA -_0224EEE6: - ldr r0, [sp, #0x18] - add r0, r0, #2 -_0224EEEA: - add sp, #0x24 - strh r0, [r7] - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_0224EEF2: - add r4, r4, #1 - add r5, r5, #1 - cmp r4, #2 - blt _0224EEAE - b _0224EF60 -_0224EEFC: - ldr r4, [sp, #0x38] - str r4, [sp] - str r6, [sp, #4] - str r7, [sp, #8] - ldr r4, [sp, #0x44] - str r4, [sp, #0xc] - bl ov02_0224EB48 - cmp r0, #0 - beq _0224EF60 - mov r5, #0 - add r4, sp, #0x20 -_0224EF14: - ldr r0, [sp, #0x38] - mov r2, #0 - str r0, [sp] - str r6, [sp, #4] - str r7, [sp, #8] - ldr r0, [sp, #0x44] - str r0, [sp, #0xc] - ldrsb r3, [r4, r2] - ldr r2, [sp, #0x18] - ldr r0, [sp, #0x10] - sub r2, r2, r3 - lsl r2, r2, #0x10 - ldr r1, [sp, #0x14] - ldr r3, [sp, #0x1c] - asr r2, r2, #0x10 - bl ov02_0224EB48 - cmp r0, #0 - beq _0224EF58 - ldr r0, [sp, #0x1c] - cmp r0, #2 - bne _0224EF46 - ldr r0, [sp, #0x14] - sub r0, r0, #2 - b _0224EF4A -_0224EF46: - ldr r0, [sp, #0x14] - add r0, r0, #1 -_0224EF4A: - strh r0, [r6] - ldr r0, [sp, #0x18] - add sp, #0x24 - add r0, r0, r5 - strh r0, [r7] - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_0224EF58: - add r5, r5, #1 - add r4, r4, #1 - cmp r5, #2 - blt _0224EF14 -_0224EF60: - mov r0, #0 - add sp, #0x24 - pop {r4, r5, r6, r7, pc} - nop -_0224EF68: .word ov02_02253A4C - thumb_func_end ov02_0224EE4C - - thumb_func_start ov02_0224EF6C -ov02_0224EF6C: ; 0x0224EF6C - push {r3, lr} - cmp r2, #0 - bne _0224EF78 - bl ov02_0224E4CC - pop {r3, pc} -_0224EF78: - bl ov02_0224E4DC - pop {r3, pc} - .balign 4, 0 - thumb_func_end ov02_0224EF6C - - thumb_func_start FieldSystem_FollowMonInteract -FieldSystem_FollowMonInteract: ; 0x0224EF80 - ldr r3, _0224EF8C ; =TaskManager_Call - ldr r0, [r0, #0x10] - ldr r1, _0224EF90 ; =Task_FollowMonInteract - mov r2, #0 - bx r3 - nop -_0224EF8C: .word TaskManager_Call -_0224EF90: .word Task_FollowMonInteract - thumb_func_end FieldSystem_FollowMonInteract - - thumb_func_start ov02_0224EF94 -ov02_0224EF94: ; 0x0224EF94 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x1b0 - add r7, r0, #0 - ldr r0, [r7, #0x20] - ldr r0, [r0] - bl MapHeader_GetMapSec - add r2, r0, #0 - mov r0, #0x12 - lsl r0, r0, #4 - ldr r0, [r7, r0] - mov r1, #0xde - add r0, #0x14 - add r2, r2, #1 - bl ReadWholeNarcMemberByIdPair - mov r0, #0x12 - lsl r0, r0, #4 - ldr r1, [r7, r0] - mov r0, #0x9b - lsl r0, r0, #2 - add r0, r1, r0 - mov r1, #0xde - mov r2, #0 - bl ReadWholeNarcMemberByIdPair - add r0, r7, #0 - add r1, sp, #4 - bl ov02_0224F058 - mov r0, #0x12 - lsl r0, r0, #4 - ldr r0, [r7, r0] - add r3, sp, #0x20 - str r0, [sp] - add r0, #0x14 - str r0, [sp] - mov r0, #0 - add r2, r0, #0 -_0224EFE2: - add r1, r2, #0 - add r1, #0x1e - add r2, r2, #1 - add r0, r0, #1 - stmia r3!, {r1} - cmp r2, #0xc - blt _0224EFE2 - add r2, sp, #0x20 - lsl r1, r0, #2 - mov r3, #0 - add r1, r2, r1 -_0224EFF8: - stmia r1!, {r3} - add r3, r3, #1 - add r0, r0, #1 - cmp r3, #0x1e - blt _0224EFF8 - add r2, sp, #0x20 - lsl r1, r0, #2 - mov r3, #0x2a - add r1, r2, r1 -_0224F00A: - stmia r1!, {r3} - add r3, r3, #1 - add r0, r0, #1 - cmp r3, #0x64 - blt _0224F00A - mov r5, #0 - add r4, sp, #0x20 -_0224F018: - ldr r1, [r4] - mov r0, #0x14 - add r2, r1, #0 - mul r2, r0 - ldr r0, [sp] - add r6, r0, r2 - ldrh r0, [r6, #0xa] - lsl r0, r0, #0x10 - lsr r0, r0, #0x16 - beq _0224F044 - add r0, r7, #0 - add r1, r6, #0 - add r2, sp, #4 - bl ov02_0224F108 - cmp r0, #0 - beq _0224F044 - ldrh r0, [r6, #0xa] - add sp, #0x1b0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x16 - pop {r3, r4, r5, r6, r7, pc} -_0224F044: - add r5, r5, #1 - add r4, r4, #4 - cmp r5, #0x64 - blt _0224F018 - bl GF_AssertFail - mov r0, #0 - add sp, #0x1b0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_0224EF94 - - thumb_func_start ov02_0224F058 -ov02_0224F058: ; 0x0224F058 - push {r4, r5, r6, lr} - add r5, r0, #0 - ldr r0, [r5, #0xc] - add r4, r1, #0 - bl SaveArray_Party_Get - bl GetFirstAliveMonInParty_CrashIfNone - mov r1, #5 - mov r2, #0 - add r6, r0, #0 - bl GetMonData - mov r1, #0x12 - lsl r1, r1, #4 - ldr r2, [r5, r1] - ldr r1, _0224F100 ; =0x0000087E - strh r0, [r2, r1] - add r0, r6, #0 - mov r1, #0x70 - mov r2, #0 - bl GetMonData - mov r1, #0x12 - lsl r1, r1, #4 - ldr r2, [r5, r1] - ldr r1, _0224F104 ; =0x0000087D - strb r0, [r2, r1] - add r0, r6, #0 - add r1, r4, #0 - bl ov02_0224F324 - add r0, r5, #0 - add r1, r4, #0 - bl ov02_0224F4BC - add r0, r5, #0 - add r1, r4, #0 - bl ov02_0224F580 - add r0, r5, #0 - add r1, r4, #0 - bl ov02_0224F5D0 - add r0, r5, #0 - add r1, r4, #0 - bl ov02_0224F5FC - add r0, r5, #0 - add r1, r4, #0 - bl ov02_0224F644 - add r0, r5, #0 - add r1, r4, #0 - bl ov02_0224F64C - add r0, r5, #0 - add r1, r4, #0 - bl ov02_0224F698 - mov r0, #0x12 - lsl r0, r0, #4 - ldr r3, [r5, r0] - ldr r2, _0224F100 ; =0x0000087E - add r0, r5, #0 - ldrh r1, [r3, r2] - sub r2, r2, #1 - ldrb r2, [r3, r2] - add r3, r4, #0 - bl ov02_0224F6AC - add r0, r5, #0 - add r1, r4, #0 - bl ov02_0224F728 - mov r0, #0x12 - lsl r0, r0, #4 - ldr r1, [r5, r0] - ldr r0, _0224F100 ; =0x0000087E - ldrh r0, [r1, r0] - add r1, r4, #0 - bl ov02_0224F76C - pop {r4, r5, r6, pc} - .balign 4, 0 -_0224F100: .word 0x0000087E -_0224F104: .word 0x0000087D - thumb_func_end ov02_0224F058 - - thumb_func_start ov02_0224F108 -ov02_0224F108: ; 0x0224F108 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - add r5, r1, #0 - add r4, r2, #0 - bl LCRandom - mov r1, #0x64 - bl _s32_div_f - ldrb r0, [r5, #0x11] - cmp r1, r0 - blt _0224F124 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F124: - ldrh r7, [r5, #0x12] - cmp r7, #0 - beq _0224F13E - ldr r0, [r6, #0xc] - bl Save_VarsFlags_Get - add r1, r7, #0 - bl Save_VarsFlags_CheckFlagInArray - cmp r0, #0 - bne _0224F13E - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F13E: - ldrb r0, [r5, #3] - lsl r0, r0, #0x1b - lsr r1, r0, #0x1b - beq _0224F15E - cmp r1, #9 - bne _0224F154 - ldrb r0, [r4] - cmp r0, #0 - bne _0224F15E - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F154: - ldrb r0, [r4, #1] - cmp r1, r0 - beq _0224F15E - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F15E: - ldrb r1, [r5] - cmp r1, #0 - beq _0224F16E - ldrb r0, [r4, #2] - cmp r1, r0 - beq _0224F16E - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F16E: - ldrb r0, [r5, #2] - lsl r0, r0, #0x18 - lsr r1, r0, #0x1d - beq _0224F19C - cmp r1, #7 - ldrb r0, [r4, #3] - bne _0224F194 - cmp r0, #2 - beq _0224F19C - cmp r0, #3 - beq _0224F19C - cmp r0, #4 - beq _0224F19C - cmp r0, #5 - beq _0224F19C - cmp r0, #8 - beq _0224F19C - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F194: - cmp r1, r0 - beq _0224F19C - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F19C: - ldrh r0, [r5, #0xa] - lsl r0, r0, #0x1d - lsr r1, r0, #0x1d - beq _0224F1BA - cmp r1, #5 - ldrb r0, [r4, #0xc] - bne _0224F1B2 - cmp r0, #5 - bhs _0224F1BA - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F1B2: - cmp r1, r0 - beq _0224F1BA - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F1BA: - ldrb r0, [r5, #0x10] - lsl r0, r0, #0x18 - lsr r1, r0, #0x1d - beq _0224F1D8 - cmp r1, #4 - ldrb r0, [r4, #0xd] - bne _0224F1D0 - cmp r0, #4 - bhs _0224F1D8 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F1D0: - cmp r1, r0 - beq _0224F1D8 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F1D8: - ldrb r0, [r5, #0x10] - lsl r0, r0, #0x1d - lsr r1, r0, #0x1e - beq _0224F1EA - ldrb r0, [r4, #4] - cmp r1, r0 - beq _0224F1EA - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F1EA: - ldrb r0, [r5, #0x10] - lsl r0, r0, #0x1b - lsr r1, r0, #0x1e - beq _0224F212 - cmp r1, #3 - bne _0224F200 - ldrb r0, [r4, #0xe] - cmp r0, #0 - bne _0224F200 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F200: - cmp r1, #1 - bne _0224F20E - ldrb r0, [r4, #0xf] - cmp r0, #0 - bne _0224F20E - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F20E: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F212: - ldrb r0, [r5, #4] - lsl r0, r0, #0x1b - lsr r1, r0, #0x1b - beq _0224F22A - ldrb r0, [r4, #5] - cmp r1, r0 - beq _0224F22A - ldrb r0, [r4, #6] - cmp r1, r0 - beq _0224F22A - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F22A: - ldrh r0, [r5, #8] - lsl r0, r0, #0x1d - lsr r1, r0, #0x1d - beq _0224F23C - ldrb r0, [r4, #0x11] - cmp r1, r0 - beq _0224F23C - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F23C: - ldrh r1, [r5, #0xe] - cmp r1, #0 - beq _0224F24C - ldrb r0, [r4, #0x12] - cmp r1, r0 - beq _0224F24C - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F24C: - ldrb r1, [r5, #5] - cmp r1, #0 - beq _0224F25C - ldrb r0, [r4, #0x13] - cmp r1, r0 - beq _0224F25C - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F25C: - ldrh r0, [r5, #0xc] - cmp r0, #0 - beq _0224F26E - sub r1, r0, #1 - ldrh r0, [r4, #0x1a] - cmp r1, r0 - beq _0224F26E - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F26E: - ldrh r0, [r5, #0xa] - lsl r0, r0, #0x1a - lsr r1, r0, #0x1d - beq _0224F280 - ldrb r0, [r4, #0x14] - cmp r1, r0 - beq _0224F280 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F280: - ldrb r0, [r5, #1] - lsl r0, r0, #0x1c - lsr r0, r0, #0x1c - beq _0224F298 - mov r1, #0x15 - ldrsb r1, [r4, r1] - bl ov02_02250628 - cmp r0, #0 - bne _0224F298 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F298: - ldrb r0, [r5, #4] - lsl r0, r0, #0x18 - lsr r1, r0, #0x1d - beq _0224F2AA - ldrb r0, [r4, #0x16] - cmp r1, r0 - beq _0224F2AA - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F2AA: - ldrb r0, [r5, #1] - lsl r0, r0, #0x18 - lsr r0, r0, #0x1c - beq _0224F2C0 - ldrb r1, [r4, #7] - bl ov02_02250594 - cmp r0, #0 - bne _0224F2C0 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F2C0: - ldrb r0, [r5, #2] - lsl r0, r0, #0x1d - lsr r1, r0, #0x1d - beq _0224F2D2 - ldrb r0, [r4, #8] - cmp r1, r0 - beq _0224F2D2 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F2D2: - ldrb r0, [r5, #6] - cmp r0, #0 - beq _0224F2E6 - ldrb r1, [r4, #0xa] - bl ov02_022506D4 - cmp r0, #0 - bne _0224F2E6 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F2E6: - ldrb r0, [r5, #7] - cmp r0, #0 - beq _0224F2FA - ldrb r1, [r4, #0xb] - bl ov02_02250738 - cmp r0, #0 - bne _0224F2FA - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F2FA: - ldrb r0, [r5, #2] - lsl r0, r0, #0x1b - lsr r1, r0, #0x1e - beq _0224F30C - ldrb r0, [r4, #9] - cmp r1, r0 - beq _0224F30C - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F30C: - ldrh r0, [r5, #8] - lsl r0, r0, #0x10 - lsr r1, r0, #0x1d - beq _0224F31E - ldrb r0, [r4, #0x17] - cmp r1, r0 - beq _0224F31E - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0224F31E: - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_0224F108 - - thumb_func_start ov02_0224F324 -ov02_0224F324: ; 0x0224F324 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r5, r1, #0 - mov r1, #6 - mov r2, #0 - add r7, r0, #0 - bl GetMonData - cmp r0, #0 - beq _0224F34E - mov r1, #1 - lsl r0, r0, #0x10 - strb r1, [r5] - lsr r0, r0, #0x10 - mov r1, #5 - mov r2, #0xb - bl GetItemAttr - bl ov02_0224F820 - b _0224F354 -_0224F34E: - mov r0, #0 - strb r0, [r5] - mov r0, #8 -_0224F354: - strb r0, [r5, #1] - add r0, r7, #0 - mov r1, #0xa3 - mov r2, #0 - bl GetMonData - add r4, r0, #0 - add r0, r7, #0 - mov r1, #0xa4 - mov r2, #0 - bl GetMonData - add r1, r0, #0 - mov r0, #0x64 - mul r0, r4 - bl _s32_div_f - cmp r0, #0x64 - bne _0224F380 - mov r0, #1 - strb r0, [r5, #2] - b _0224F3A2 -_0224F380: - cmp r0, #0x4b - blt _0224F38A - mov r0, #2 - strb r0, [r5, #2] - b _0224F3A2 -_0224F38A: - cmp r0, #0x32 - blt _0224F394 - mov r0, #3 - strb r0, [r5, #2] - b _0224F3A2 -_0224F394: - cmp r0, #0x19 - blt _0224F39E - mov r0, #4 - strb r0, [r5, #2] - b _0224F3A2 -_0224F39E: - mov r0, #5 - strb r0, [r5, #2] -_0224F3A2: - add r0, r7, #0 - mov r1, #0xa0 - mov r2, #0 - bl GetMonData - mov r1, #0x88 - tst r1, r0 - beq _0224F3B8 - mov r0, #5 - strb r0, [r5, #3] - b _0224F3FA -_0224F3B8: - mov r1, #7 - tst r1, r0 - beq _0224F3C4 - mov r0, #8 - strb r0, [r5, #3] - b _0224F3FA -_0224F3C4: - mov r1, #0x10 - tst r1, r0 - beq _0224F3D0 - mov r0, #2 - strb r0, [r5, #3] - b _0224F3FA -_0224F3D0: - mov r1, #0x20 - tst r1, r0 - beq _0224F3DC - mov r0, #3 - strb r0, [r5, #3] - b _0224F3FA -_0224F3DC: - mov r1, #0x40 - tst r1, r0 - beq _0224F3E8 - mov r0, #4 - strb r0, [r5, #3] - b _0224F3FA -_0224F3E8: - cmp r0, #0 - bne _0224F3F2 - mov r0, #1 - strb r0, [r5, #3] - b _0224F3FA -_0224F3F2: - bl GF_AssertFail - mov r0, #1 - strb r0, [r5, #3] -_0224F3FA: - add r0, r7, #0 - mov r1, #0xa1 - mov r2, #0 - bl GetMonData - add r1, r0, #2 - cmp r1, #0x32 - blt _0224F410 - mov r0, #4 - strb r0, [r5, #4] - b _0224F420 -_0224F410: - sub r0, r0, #2 - cmp r0, #0x32 - bgt _0224F41C - mov r0, #6 - strb r0, [r5, #4] - b _0224F420 -_0224F41C: - mov r0, #5 - strb r0, [r5, #4] -_0224F420: - add r0, r7, #0 - mov r1, #0xb1 - mov r2, #0 - bl GetMonData - add r4, r0, #0 - add r0, r7, #0 - mov r1, #0xb2 - mov r2, #0 - bl GetMonData - add r6, r0, #0 - add r0, r4, #0 - bl ov02_0224F79C - strb r0, [r5, #5] - add r0, r6, #0 - bl ov02_0224F79C - strb r0, [r5, #6] - add r0, r7, #0 - mov r1, #9 - mov r2, #0 - bl GetMonData - strb r0, [r5, #7] - add r0, r7, #0 - bl GetMonNature - lsl r1, r0, #2 - ldr r0, _0224F4B4 ; =ov02_02253AC0 - mov r2, #0 - ldr r0, [r0, r1] - mov r1, #0x6f - strb r0, [r5, #8] - add r0, r7, #0 - bl GetMonData - cmp r0, #0 - bne _0224F474 - mov r0, #1 - b _0224F476 -_0224F474: - mov r0, #2 -_0224F476: - ldr r3, _0224F4B8 ; =ov02_02253A5C - strb r0, [r5, #9] - ldmia r3!, {r0, r1} - add r2, sp, #0 - add r6, r2, #0 - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r3] - mov r4, #0 - str r0, [r2] - strb r4, [r5, #0xb] - add r5, #0xb -_0224F490: - ldr r1, [r6] - add r0, r7, #0 - mov r2, #0 - bl GetMonData - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - lsl r0, r4 - ldrb r1, [r5] - add r4, r4, #1 - add r6, r6, #4 - orr r0, r1 - strb r0, [r5] - cmp r4, #5 - blt _0224F490 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - nop -_0224F4B4: .word ov02_02253AC0 -_0224F4B8: .word ov02_02253A5C - thumb_func_end ov02_0224F324 - - thumb_func_start ov02_0224F4BC -ov02_0224F4BC: ; 0x0224F4BC - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r4, r0, #0 - add r5, r1, #0 - mov r0, #0 - strb r0, [r5, #0xc] - strb r0, [r5, #0xe] - strb r0, [r5, #0xf] - strb r0, [r5, #0x10] - ldr r0, [r4, #0x40] - bl PlayerAvatar_GetXCoord - str r0, [sp, #4] - ldr r0, [r4, #0x40] - bl PlayerAvatar_GetZCoord - str r0, [sp] - ldr r0, [r4, #0x3c] - bl MapObjectManager_GetObjectCount - str r0, [sp, #8] - ldr r0, [r4, #0x3c] - bl MapObjectManager_GetObjects - str r0, [sp, #0x10] - mov r0, #0 - str r0, [sp, #0xc] - ldr r0, [sp, #8] - cmp r0, #0 - ble _0224F57A - add r7, r5, #0 - add r7, #0xc -_0224F4FC: - ldr r0, [sp, #0x10] - bl MapObject_CheckActive - cmp r0, #1 - bne _0224F568 - ldr r0, [sp, #0x10] - bl MapObject_GetXCoord - add r4, r0, #0 - ldr r0, [sp, #0x10] - bl MapObject_GetZCoord - ldr r1, [sp, #4] - sub r6, r1, r4 - ldr r1, [sp] - sub r4, r1, r0 - ldr r0, [sp, #0x10] - bl MapObject_GetSpriteID - cmp r0, #0x54 - bne _0224F52C - mov r0, #1 - strb r0, [r5, #0xf] - b _0224F568 -_0224F52C: - cmp r0, #0x55 - bne _0224F536 - mov r0, #1 - strb r0, [r5, #0xe] - b _0224F568 -_0224F536: - cmp r0, #0x56 - bne _0224F540 - mov r0, #1 - strb r0, [r5, #0x10] - b _0224F568 -_0224F540: - mov r0, #0 - mvn r0, r0 - cmp r6, r0 - blt _0224F568 - cmp r6, #1 - bgt _0224F568 - cmp r4, r0 - blt _0224F568 - cmp r4, #1 - bgt _0224F568 - ldr r0, [sp, #0x10] - bl MapObject_GetID - cmp r0, #0xfd - beq _0224F568 - cmp r0, #0xff - beq _0224F568 - ldrb r0, [r7] - add r0, r0, #1 - strb r0, [r7] -_0224F568: - add r0, sp, #0x10 - bl MapObjectArray_NextObject2 - ldr r0, [sp, #0xc] - add r1, r0, #1 - ldr r0, [sp, #8] - str r1, [sp, #0xc] - cmp r1, r0 - blt _0224F4FC -_0224F57A: - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_0224F4BC - - thumb_func_start ov02_0224F580 -ov02_0224F580: ; 0x0224F580 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - str r0, [sp] - str r1, [sp, #4] - mov r4, #0 - bl Field_GetBgEvents - add r5, r0, #0 - ldr r0, [sp] - bl Field_GetNumBgEvents - add r7, r0, #0 - beq _0224F5C6 - cmp r5, #0 - beq _0224F5C6 - add r6, r4, #0 - cmp r7, #0 - ble _0224F5C6 -_0224F5A4: - ldrh r0, [r5, #2] - cmp r0, #2 - bne _0224F5BE - ldrh r0, [r5] - bl HiddenItemScriptNoToFlagId - add r1, r0, #0 - ldr r0, [sp] - bl FieldSystem_FlagCheck - cmp r0, #0 - bne _0224F5BE - add r4, r4, #1 -_0224F5BE: - add r6, r6, #1 - add r5, #0x14 - cmp r6, r7 - blt _0224F5A4 -_0224F5C6: - ldr r0, [sp, #4] - strb r4, [r0, #0xd] - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_0224F580 - - thumb_func_start ov02_0224F5D0 -ov02_0224F5D0: ; 0x0224F5D0 - push {r4, lr} - ldr r0, [r0, #0xc] - add r4, r1, #0 - bl Save_LocalFieldData_Get - bl LocalFieldData_GetWeatherType - cmp r0, #0 - beq _0224F5E8 - cmp r0, #1 - beq _0224F5EE - b _0224F5F4 -_0224F5E8: - mov r0, #1 - strb r0, [r4, #0x11] - pop {r4, pc} -_0224F5EE: - mov r0, #3 - strb r0, [r4, #0x11] - pop {r4, pc} -_0224F5F4: - mov r0, #0 - strb r0, [r4, #0x11] - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_0224F5D0 - - thumb_func_start ov02_0224F5FC -ov02_0224F5FC: ; 0x0224F5FC - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r1, #0 - bl FollowMon_GetMapObject - bl MapObject_GetXCoord - add r6, r0, #0 - add r0, r5, #0 - bl FollowMon_GetMapObject - bl MapObject_GetZCoord - add r2, r0, #0 - add r0, r5, #0 - add r1, r6, #0 - bl GetMetatileBehavior - mov r1, #0x12 - strb r0, [r4, #0x12] - lsl r1, r1, #4 - ldr r2, [r5, r1] - ldr r1, _0224F640 ; =0x00000882 - strh r0, [r2, r1] - bl sub_0205B994 - cmp r0, #0 - beq _0224F63A - mov r0, #1 - strb r0, [r4, #0x13] - pop {r4, r5, r6, pc} -_0224F63A: - mov r0, #2 - strb r0, [r4, #0x13] - pop {r4, r5, r6, pc} - .balign 4, 0 -_0224F640: .word 0x00000882 - thumb_func_end ov02_0224F5FC - - thumb_func_start ov02_0224F644 -ov02_0224F644: ; 0x0224F644 - ldr r0, [r0, #0x20] - ldr r0, [r0] - strh r0, [r1, #0x1a] - bx lr - thumb_func_end ov02_0224F644 - - thumb_func_start ov02_0224F64C -ov02_0224F64C: ; 0x0224F64C - push {r4, lr} - add r4, r1, #0 - bl Field_GetTimeOfDay - cmp r0, #4 - bhi _0224F68C - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0224F664: ; jump table - .short _0224F66E - _0224F664 - 2 ; case 0 - .short _0224F674 - _0224F664 - 2 ; case 1 - .short _0224F67A - _0224F664 - 2 ; case 2 - .short _0224F680 - _0224F664 - 2 ; case 3 - .short _0224F686 - _0224F664 - 2 ; case 4 -_0224F66E: - mov r0, #1 - strb r0, [r4, #0x14] - pop {r4, pc} -_0224F674: - mov r0, #2 - strb r0, [r4, #0x14] - pop {r4, pc} -_0224F67A: - mov r0, #3 - strb r0, [r4, #0x14] - pop {r4, pc} -_0224F680: - mov r0, #4 - strb r0, [r4, #0x14] - pop {r4, pc} -_0224F686: - mov r0, #5 - strb r0, [r4, #0x14] - pop {r4, pc} -_0224F68C: - bl GF_AssertFail - mov r0, #0 - strb r0, [r4, #0x14] - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_0224F64C - - thumb_func_start ov02_0224F698 -ov02_0224F698: ; 0x0224F698 - push {r4, lr} - add r4, r1, #0 - mov r1, #0x42 - lsl r1, r1, #2 - ldr r0, [r0, r1] - bl FieldSystem_UnkSub108_GetMonMood - strb r0, [r4, #0x15] - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_0224F698 - - thumb_func_start ov02_0224F6AC -ov02_0224F6AC: ; 0x0224F6AC - push {r4, r5, r6, lr} - sub sp, #0x10 - ldr r0, [r0, #0xc] - add r5, r3, #0 - bl SaveArray_Party_Get - add r4, r0, #0 - bl GetIdxOfFirstAliveMonInParty_CrashIfNone - add r6, r0, #0 - add r0, r4, #0 - add r1, sp, #8 - add r2, r6, #0 - bl Party_GetMonAprijuiceModifiers - add r0, r4, #0 - add r1, r6, #0 - bl Party_GetMonByIndex - add r1, r0, #0 - add r0, sp, #0 - add r2, sp, #8 - mov r3, #0xb - bl CalcMonPokeathlonStars - add r0, sp, #0 - ldrh r2, [r0] - lsl r0, r2, #0x1d - lsl r2, r2, #0x11 - lsr r1, r0, #0x1d - lsr r2, r2, #0x1d - mov r0, #1 - cmp r1, r2 - bhs _0224F6F4 - add r1, r2, #0 - mov r0, #2 -_0224F6F4: - add r2, sp, #0 - ldrh r2, [r2] - lsl r2, r2, #0x14 - lsr r2, r2, #0x1d - cmp r1, r2 - bhs _0224F704 - add r1, r2, #0 - mov r0, #4 -_0224F704: - add r2, sp, #0 - ldrh r2, [r2] - lsl r2, r2, #0x1a - lsr r2, r2, #0x1d - cmp r1, r2 - bhs _0224F714 - add r1, r2, #0 - mov r0, #3 -_0224F714: - add r2, sp, #0 - ldrh r2, [r2] - lsl r2, r2, #0x17 - lsr r2, r2, #0x1d - cmp r1, r2 - bhs _0224F722 - mov r0, #5 -_0224F722: - strb r0, [r5, #0x16] - add sp, #0x10 - pop {r4, r5, r6, pc} - thumb_func_end ov02_0224F6AC - - thumb_func_start ov02_0224F728 -ov02_0224F728: ; 0x0224F728 - push {r4, lr} - add r0, #0xe4 - ldr r0, [r0] - add r4, r1, #0 - bl MapObject_GetFacingDirection - cmp r0, #3 - bhi _0224F764 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0224F744: ; jump table - .short _0224F74C - _0224F744 - 2 ; case 0 - .short _0224F752 - _0224F744 - 2 ; case 1 - .short _0224F758 - _0224F744 - 2 ; case 2 - .short _0224F75E - _0224F744 - 2 ; case 3 -_0224F74C: - mov r0, #3 - strb r0, [r4, #0x17] - pop {r4, pc} -_0224F752: - mov r0, #4 - strb r0, [r4, #0x17] - pop {r4, pc} -_0224F758: - mov r0, #2 - strb r0, [r4, #0x17] - pop {r4, pc} -_0224F75E: - mov r0, #1 - strb r0, [r4, #0x17] - pop {r4, pc} -_0224F764: - mov r0, #0 - strb r0, [r4, #0x17] - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov02_0224F728 - - thumb_func_start ov02_0224F76C -ov02_0224F76C: ; 0x0224F76C - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - cmp r5, #0 - ble _0224F77C - ldr r0, _0224F798 ; =0x000001ED - cmp r5, r0 - ble _0224F782 -_0224F77C: - bl GF_AssertFail - pop {r3, r4, r5, pc} -_0224F782: - mov r0, #0xe9 - mov r1, #0 - mov r2, #0xb - bl AllocAtEndAndReadWholeNarcMemberByIdPair - sub r1, r5, #1 - ldrb r1, [r0, r1] - strb r1, [r4, #0xa] - bl Heap_Free - pop {r3, r4, r5, pc} - .balign 4, 0 -_0224F798: .word 0x000001ED - thumb_func_end ov02_0224F76C - - thumb_func_start ov02_0224F79C -ov02_0224F79C: ; 0x0224F79C - push {r3, lr} - cmp r0, #0x11 - bhi _0224F816 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0224F7AE: ; jump table - .short _0224F7D2 - _0224F7AE - 2 ; case 0 - .short _0224F7D6 - _0224F7AE - 2 ; case 1 - .short _0224F7DA - _0224F7AE - 2 ; case 2 - .short _0224F7DE - _0224F7AE - 2 ; case 3 - .short _0224F7E2 - _0224F7AE - 2 ; case 4 - .short _0224F7E6 - _0224F7AE - 2 ; case 5 - .short _0224F7EA - _0224F7AE - 2 ; case 6 - .short _0224F7EE - _0224F7AE - 2 ; case 7 - .short _0224F7F2 - _0224F7AE - 2 ; case 8 - .short _0224F816 - _0224F7AE - 2 ; case 9 - .short _0224F7F6 - _0224F7AE - 2 ; case 10 - .short _0224F7FA - _0224F7AE - 2 ; case 11 - .short _0224F7FE - _0224F7AE - 2 ; case 12 - .short _0224F802 - _0224F7AE - 2 ; case 13 - .short _0224F806 - _0224F7AE - 2 ; case 14 - .short _0224F80A - _0224F7AE - 2 ; case 15 - .short _0224F80E - _0224F7AE - 2 ; case 16 - .short _0224F812 - _0224F7AE - 2 ; case 17 -_0224F7D2: - mov r0, #1 - pop {r3, pc} -_0224F7D6: - mov r0, #7 - pop {r3, pc} -_0224F7DA: - mov r0, #0xa - pop {r3, pc} -_0224F7DE: - mov r0, #8 - pop {r3, pc} -_0224F7E2: - mov r0, #9 - pop {r3, pc} -_0224F7E6: - mov r0, #0xd - pop {r3, pc} -_0224F7EA: - mov r0, #0xc - pop {r3, pc} -_0224F7EE: - mov r0, #0xe - pop {r3, pc} -_0224F7F2: - mov r0, #0x11 - pop {r3, pc} -_0224F7F6: - mov r0, #2 - pop {r3, pc} -_0224F7FA: - mov r0, #3 - pop {r3, pc} -_0224F7FE: - mov r0, #5 - pop {r3, pc} -_0224F802: - mov r0, #4 - pop {r3, pc} -_0224F806: - mov r0, #0xb - pop {r3, pc} -_0224F80A: - mov r0, #6 - pop {r3, pc} -_0224F80E: - mov r0, #0xf - pop {r3, pc} -_0224F812: - mov r0, #0x10 - pop {r3, pc} -_0224F816: - bl GF_AssertFail - mov r0, #0 - pop {r3, pc} - .balign 4, 0 - thumb_func_end ov02_0224F79C - - thumb_func_start ov02_0224F820 -ov02_0224F820: ; 0x0224F820 - push {r3, lr} - cmp r0, #6 - bhi _0224F85C - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0224F832: ; jump table - .short _0224F840 - _0224F832 - 2 ; case 0 - .short _0224F844 - _0224F832 - 2 ; case 1 - .short _0224F848 - _0224F832 - 2 ; case 2 - .short _0224F84C - _0224F832 - 2 ; case 3 - .short _0224F850 - _0224F832 - 2 ; case 4 - .short _0224F854 - _0224F832 - 2 ; case 5 - .short _0224F858 - _0224F832 - 2 ; case 6 -_0224F840: - mov r0, #4 - pop {r3, pc} -_0224F844: - mov r0, #2 - pop {r3, pc} -_0224F848: - mov r0, #1 - pop {r3, pc} -_0224F84C: - mov r0, #7 - pop {r3, pc} -_0224F850: - mov r0, #6 - pop {r3, pc} -_0224F854: - mov r0, #5 - pop {r3, pc} -_0224F858: - mov r0, #3 - pop {r3, pc} -_0224F85C: - bl GF_AssertFail - mov r0, #8 - pop {r3, pc} - thumb_func_end ov02_0224F820 - - thumb_func_start ov02_0224F864 -ov02_0224F864: ; 0x0224F864 - push {r4, lr} - ldr r1, _0224F87C ; =0x00000884 - bl Heap_Alloc - ldr r2, _0224F87C ; =0x00000884 - mov r1, #0 - add r4, r0, #0 - bl MI_CpuFill8 - add r0, r4, #0 - pop {r4, pc} - nop -_0224F87C: .word 0x00000884 - thumb_func_end ov02_0224F864 - - thumb_func_start ov02_0224F880 -ov02_0224F880: ; 0x0224F880 - push {r3, r4, r5, lr} - add r4, r0, #0 - add r2, r1, #0 - ldr r0, _0224F8E4 ; =0x000007E4 - mov r1, #0xdf - add r0, r4, r0 - sub r2, r2, #1 - bl ReadWholeNarcMemberByIdPair - ldr r0, _0224F8E8 ; =0x00000868 - mov r1, #0 - strb r1, [r4, r0] - add r2, r0, #1 - strb r1, [r4, r2] - add r2, r0, #3 - strb r1, [r4, r2] - add r2, r0, #4 - ldrb r3, [r4, r2] - mov r2, #0xf - add r5, r4, #0 - bic r3, r2 - add r2, r0, #4 - strb r3, [r4, r2] - add r2, r0, #2 - strb r1, [r4, r2] - add r2, r0, #5 - strb r1, [r4, r2] - add r0, r0, #6 - strh r1, [r4, r0] - ldr r0, _0224F8E4 ; =0x000007E4 - ldr r2, _0224F8EC ; =0x0000FFFF -_0224F8BE: - ldrh r3, [r5, r0] - cmp r3, r2 - beq _0224F8CC - add r1, r1, #1 - add r5, #8 - cmp r1, #5 - blt _0224F8BE -_0224F8CC: - ldr r3, _0224F8F0 ; =0x0000086C - lsl r1, r1, #0x18 - ldrb r0, [r4, r3] - lsr r1, r1, #0x18 - mov r2, #0xf0 - lsl r1, r1, #0x1c - bic r0, r2 - lsr r1, r1, #0x18 - orr r0, r1 - strb r0, [r4, r3] - pop {r3, r4, r5, pc} - nop -_0224F8E4: .word 0x000007E4 -_0224F8E8: .word 0x00000868 -_0224F8EC: .word 0x0000FFFF -_0224F8F0: .word 0x0000086C - thumb_func_end ov02_0224F880 - - thumb_func_start ov02_0224F8F4 -ov02_0224F8F4: ; 0x0224F8F4 - ldr r3, _0224F8F8 ; =Heap_Free - bx r3 - .balign 4, 0 -_0224F8F8: .word Heap_Free - thumb_func_end ov02_0224F8F4 - - thumb_func_start ov02_0224F8FC -ov02_0224F8FC: ; 0x0224F8FC - push {r3, r4, r5, r6, r7, lr} - ldr r2, _0224FB2C ; =0x0000086C - add r4, r1, #0 - ldrb r3, [r4, r2] - add r5, r0, #0 - lsl r2, r3, #0x1c - lsr r2, r2, #0x1c - mov ip, r2 - cmp r2, #5 - blo _0224F93E - bl ov02_02250504 - ldr r1, _0224FB30 ; =0x0000080C - ldr r0, [r4, r1] - cmp r0, #0 - beq _0224F920 - mov r0, #2 - pop {r3, r4, r5, r6, r7, pc} -_0224F920: - add r0, r1, #0 - add r0, #0xa - ldrb r0, [r4, r0] - cmp r0, #0 - beq _0224F92E - mov r0, #3 - pop {r3, r4, r5, r6, r7, pc} -_0224F92E: - add r1, #0xb - ldrb r0, [r4, r1] - cmp r0, #0 - beq _0224F93A - mov r0, #4 - pop {r3, r4, r5, r6, r7, pc} -_0224F93A: - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_0224F93E: - ldr r2, _0224FB2C ; =0x0000086C - sub r2, #0x88 - add r7, r4, r2 - mov r2, ip - lsl r2, r2, #3 - add r6, r7, r2 - ldrh r7, [r7, r2] - ldr r2, _0224FB34 ; =0x0000FFFF - cmp r7, r2 - bne _0224F980 - bl ov02_02250504 - ldr r1, _0224FB30 ; =0x0000080C - ldr r0, [r4, r1] - cmp r0, #0 - beq _0224F962 - mov r0, #2 - pop {r3, r4, r5, r6, r7, pc} -_0224F962: - add r0, r1, #0 - add r0, #0xa - ldrb r0, [r4, r0] - cmp r0, #0 - beq _0224F970 - mov r0, #3 - pop {r3, r4, r5, r6, r7, pc} -_0224F970: - add r1, #0xb - ldrb r0, [r4, r1] - cmp r0, #0 - beq _0224F97C - mov r0, #4 - pop {r3, r4, r5, r6, r7, pc} -_0224F97C: - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_0224F980: - ldr r2, _0224FB2C ; =0x0000086C - sub r2, r2, #3 - ldrb r2, [r4, r2] - cmp r2, #7 - bls _0224F98C - b _0224FB28 -_0224F98C: - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0224F998: ; jump table - .short _0224F9A8 - _0224F998 - 2 ; case 0 - .short _0224F9CA - _0224F998 - 2 ; case 1 - .short _0224F9E8 - _0224F998 - 2 ; case 2 - .short _0224FA06 - _0224F998 - 2 ; case 3 - .short _0224FA1A - _0224F998 - 2 ; case 4 - .short _0224FA3E - _0224F998 - 2 ; case 5 - .short _0224FA50 - _0224F998 - 2 ; case 6 - .short _0224FAEE - _0224F998 - 2 ; case 7 -_0224F9A8: - add r0, r4, #0 - add r1, r6, #0 - bl ov02_0224FB44 - cmp r0, #0 - beq _0224F9CA - add r5, #0xe4 - ldr r0, [r5] - bl MapObject_UnpauseMovement - ldr r0, _0224FB38 ; =0x00000868 - mov r1, #0 - strb r1, [r4, r0] - mov r1, #5 - add r0, r0, #1 - strb r1, [r4, r0] - b _0224FB28 -_0224F9CA: - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl ov02_0224FB54 - cmp r0, #0 - beq _0224F9E8 - add r5, #0xe4 - ldr r0, [r5] - bl MapObject_UnpauseMovement - ldr r0, _0224FB3C ; =0x00000869 - mov r1, #2 - strb r1, [r4, r0] - b _0224FB28 -_0224F9E8: - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl FollowMon_TryPrintInteractionMessage - cmp r0, #0 - beq _0224FA06 - add r5, #0xe4 - ldr r0, [r5] - bl MapObject_PauseMovement - ldr r0, _0224FB3C ; =0x00000869 - mov r1, #6 - strb r1, [r4, r0] - b _0224FB28 -_0224FA06: - add r0, r4, #0 - add r1, r6, #0 - bl ov02_0224FC74 - cmp r0, #0 - beq _0224FA1A - ldr r0, _0224FB3C ; =0x00000869 - mov r1, #7 - strb r1, [r4, r0] - b _0224FB28 -_0224FA1A: - ldr r2, _0224FB2C ; =0x0000086C - mov r1, #0xf - ldrb r3, [r4, r2] - add r0, r3, #0 - bic r0, r1 - lsl r1, r3, #0x1c - lsr r1, r1, #0x1c - add r1, r1, #1 - lsl r1, r1, #0x18 - lsr r3, r1, #0x18 - mov r1, #0xf - and r1, r3 - orr r0, r1 - strb r0, [r4, r2] - mov r1, #0 - sub r0, r2, #3 - strb r1, [r4, r0] - b _0224FB28 -_0224FA3E: - add r2, r7, #0 - bl ov02_02250004 - cmp r0, #0 - beq _0224FB28 - ldr r0, _0224FB3C ; =0x00000869 - mov r1, #1 - strb r1, [r4, r0] - b _0224FB28 -_0224FA50: - ldr r0, _0224FB2C ; =0x0000086C - add r0, r0, #2 - ldrh r0, [r4, r0] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl IsPrintFinished - cmp r0, #1 - bne _0224FB28 - ldr r1, _0224FB2C ; =0x0000086C - ldrb r2, [r4, r1] - lsl r0, r2, #0x18 - lsl r2, r2, #0x1c - lsr r2, r2, #0x1c - lsr r0, r0, #0x1c - add r2, r2, #1 - cmp r0, r2 - ble _0224FAA8 - ldr r0, _0224FB40 ; =gSystem - ldr r1, [r0, #0x48] - mov r0, #3 - tst r0, r1 - beq _0224FB28 - add r0, r4, #0 - mov r1, #0 - bl ClearFrameAndWindow2 - add r0, r4, #0 - bl RemoveWindow - ldr r0, [r4, #0x10] - bl String_Delete - add r0, r5, #0 - add r0, #0xd2 - ldrb r1, [r0] - mov r0, #0x40 - add r5, #0xd2 - bic r1, r0 - strb r1, [r5] - ldr r0, _0224FB3C ; =0x00000869 - mov r1, #3 - strb r1, [r4, r0] - b _0224FB28 -_0224FAA8: - add r0, r1, #0 - sub r0, #0x60 - ldr r0, [r4, r0] - cmp r0, #0 - beq _0224FABA - mov r2, #3 - sub r0, r1, #3 - strb r2, [r4, r0] - b _0224FB28 -_0224FABA: - ldr r0, _0224FB40 ; =gSystem - ldr r1, [r0, #0x48] - mov r0, #3 - tst r0, r1 - beq _0224FB28 - add r0, r4, #0 - mov r1, #0 - bl ClearFrameAndWindow2 - add r0, r4, #0 - bl RemoveWindow - ldr r0, [r4, #0x10] - bl String_Delete - add r0, r5, #0 - add r0, #0xd2 - ldrb r1, [r0] - mov r0, #0x40 - add r5, #0xd2 - bic r1, r0 - strb r1, [r5] - ldr r0, _0224FB3C ; =0x00000869 - mov r1, #3 - strb r1, [r4, r0] - b _0224FB28 -_0224FAEE: - ldr r0, _0224FB2C ; =0x0000086C - add r0, r0, #1 - ldrb r1, [r4, r0] - ldrb r0, [r6, #7] - cmp r1, r0 - blo _0224FB1A - mov r0, #0xf - bic r3, r0 - mov r0, ip - add r0, r0, #1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - mov r0, #0xf - and r0, r1 - add r1, r3, #0 - orr r1, r0 - ldr r0, _0224FB2C ; =0x0000086C - strb r1, [r4, r0] - mov r1, #0 - sub r0, r0, #3 - strb r1, [r4, r0] - b _0224FB28 -_0224FB1A: - ldr r0, _0224FB2C ; =0x0000086C - add r0, r0, #1 - ldrb r0, [r4, r0] - add r1, r0, #1 - ldr r0, _0224FB2C ; =0x0000086C - add r0, r0, #1 - strb r1, [r4, r0] -_0224FB28: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_0224FB2C: .word 0x0000086C -_0224FB30: .word 0x0000080C -_0224FB34: .word 0x0000FFFF -_0224FB38: .word 0x00000868 -_0224FB3C: .word 0x00000869 -_0224FB40: .word gSystem - thumb_func_end ov02_0224F8FC - - thumb_func_start ov02_0224FB44 -ov02_0224FB44: ; 0x0224FB44 - ldrh r0, [r1] - cmp r0, #0 - beq _0224FB4E - mov r0, #1 - bx lr -_0224FB4E: - mov r0, #0 - bx lr - .balign 4, 0 - thumb_func_end ov02_0224FB44 - - thumb_func_start ov02_0224FB54 -ov02_0224FB54: ; 0x0224FB54 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #0x12 - lsl r0, r0, #4 - ldr r1, [r5, r0] - ldr r0, _0224FB98 ; =0x00000882 - add r4, r2, #0 - ldrh r0, [r1, r0] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl sub_0205BB04 - cmp r0, #0 - beq _0224FB74 - mov r0, #0 - pop {r3, r4, r5, pc} -_0224FB74: - ldrb r2, [r4, #6] - cmp r2, #0 - beq _0224FB92 - cmp r2, #0xe - bls _0224FB82 - mov r0, #0 - pop {r3, r4, r5, pc} -_0224FB82: - add r0, r5, #0 - add r5, #0xe4 - ldr r1, [r5] - sub r2, r2, #1 - bl ov01_02203AB4 - mov r0, #1 - pop {r3, r4, r5, pc} -_0224FB92: - mov r0, #0 - pop {r3, r4, r5, pc} - nop -_0224FB98: .word 0x00000882 - thumb_func_end ov02_0224FB54 - - thumb_func_start FollowMon_TryPrintInteractionMessage -FollowMon_TryPrintInteractionMessage: ; 0x0224FB9C - push {r4, r5, r6, lr} - add r6, r2, #0 - add r5, r0, #0 - ldrh r0, [r6, #2] - add r4, r1, #0 - cmp r0, #0 - beq _0224FC00 - mov r0, #1 - lsl r0, r0, #0xa - mov r1, #0xb - bl String_New - str r0, [r4, #0x10] - ldr r0, [r5, #8] - add r1, r4, #0 - mov r2, #3 - bl sub_0205B514 - ldrh r3, [r6, #2] - ldr r1, [r4, #0x10] - add r0, r5, #0 - mov r2, #0xb - sub r3, r3, #1 - bl FollowMon_ExpandInteractionMessage - ldr r0, [r5, #0xc] - bl Save_PlayerData_GetOptionsAddr - add r6, r0, #0 - add r0, r4, #0 - add r1, r6, #0 - bl sub_0205B564 - ldr r1, [r4, #0x10] - add r0, r4, #0 - add r2, r6, #0 - mov r3, #1 - bl sub_0205B5B4 - ldr r1, _0224FC04 ; =0x0000086E - strh r0, [r4, r1] - add r0, r5, #0 - add r0, #0xd2 - ldrb r1, [r0] - mov r0, #0x40 - add r5, #0xd2 - orr r0, r1 - strb r0, [r5] - mov r0, #1 - pop {r4, r5, r6, pc} -_0224FC00: - mov r0, #0 - pop {r4, r5, r6, pc} - .balign 4, 0 -_0224FC04: .word 0x0000086E - thumb_func_end FollowMon_TryPrintInteractionMessage - - thumb_func_start ov02_0224FC08 -ov02_0224FC08: ; 0x0224FC08 - push {r3, r4, r5, r6, lr} - sub sp, #4 - add r5, r0, #0 - mov r0, #1 - add r4, r1, #0 - lsl r0, r0, #0xa - mov r1, #0xb - add r6, r2, #0 - bl String_New - str r0, [r4, #0x10] - ldr r0, [r5, #8] - add r1, r4, #0 - mov r2, #3 - bl sub_0205B514 - ldr r0, _0224FC6C ; =0x00000816 - mov r2, #0xb - ldrb r0, [r4, r0] - add r3, r6, #0 - str r0, [sp] - ldr r1, [r4, #0x10] - add r0, r5, #0 - bl ov02_0224FCE0 - ldr r0, [r5, #0xc] - bl Save_PlayerData_GetOptionsAddr - add r6, r0, #0 - add r0, r4, #0 - add r1, r6, #0 - bl sub_0205B564 - ldr r1, [r4, #0x10] - add r0, r4, #0 - add r2, r6, #0 - mov r3, #1 - bl sub_0205B5B4 - ldr r1, _0224FC70 ; =0x0000086E - strh r0, [r4, r1] - add r0, r5, #0 - add r0, #0xd2 - ldrb r1, [r0] - mov r0, #0x40 - add r5, #0xd2 - orr r0, r1 - strb r0, [r5] - add sp, #4 - pop {r3, r4, r5, r6, pc} - .balign 4, 0 -_0224FC6C: .word 0x00000816 -_0224FC70: .word 0x0000086E - thumb_func_end ov02_0224FC08 - - thumb_func_start ov02_0224FC74 -ov02_0224FC74: ; 0x0224FC74 - ldr r2, _0224FC88 ; =0x0000086D - mov r3, #0 - strb r3, [r0, r2] - ldrb r0, [r1, #7] - cmp r0, #0 - beq _0224FC82 - mov r3, #1 -_0224FC82: - add r0, r3, #0 - bx lr - nop -_0224FC88: .word 0x0000086D - thumb_func_end ov02_0224FC74 - - thumb_func_start FollowMon_ExpandInteractionMessage -FollowMon_ExpandInteractionMessage: ; 0x0224FC8C - push {r3, r4, r5, r6, r7, lr} - str r1, [sp] - mov r1, #0x1b - add r4, r2, #0 - add r2, r1, #0 - add r6, r0, #0 - add r7, r3, #0 - mov r0, #0 - add r2, #0xee - add r3, r4, #0 - bl NewMsgDataFromNarc - add r5, r0, #0 - add r0, r4, #0 - bl MessageFormat_New - add r4, r0, #0 - add r0, r6, #0 - add r1, r4, #0 - bl FollowMon_PlaceholdersSet - add r0, r5, #0 - add r1, r7, #0 - bl NewString_ReadMsgData - add r6, r0, #0 - ldr r1, [sp] - add r0, r4, #0 - add r2, r6, #0 - bl StringExpandPlaceholders - add r0, r6, #0 - bl String_Delete - add r0, r4, #0 - bl MessageFormat_Delete - add r0, r5, #0 - bl DestroyMsgData - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end FollowMon_ExpandInteractionMessage - - thumb_func_start ov02_0224FCE0 -ov02_0224FCE0: ; 0x0224FCE0 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r4, r2, #0 - add r5, r0, #0 - str r1, [sp] - add r6, r3, #0 - mov r0, #0 - mov r1, #0x1b - mov r2, #0x28 - add r3, r4, #0 - bl NewMsgDataFromNarc - add r7, r0, #0 - add r0, r4, #0 - bl MessageFormat_New - add r4, r0, #0 - mov r0, #2 - tst r0, r6 - ldr r0, [r5, #0xc] - beq _0224FD3E - bl Save_PlayerData_GetProfile - add r2, r0, #0 - add r0, r4, #0 - mov r1, #0 - bl BufferPlayersName - mov r1, #1 - add r0, r6, #0 - tst r0, r1 - add r2, sp, #0x10 - beq _0224FD30 - ldrb r2, [r2, #0x10] - add r0, r4, #0 - sub r2, r2, #1 - bl BufferFashionName - mov r1, #0x20 - b _0224FD72 -_0224FD30: - ldrb r2, [r2, #0x10] - add r0, r4, #0 - sub r2, r2, #1 - bl BufferFashionNameWithArticle - mov r1, #0x5f - b _0224FD72 -_0224FD3E: - bl SaveArray_Party_Get - bl GetFirstAliveMonInParty_CrashIfNone - bl Mon_GetBoxMon - str r0, [sp, #4] - ldr r0, [r5, #0xc] - bl Save_PlayerData_GetProfile - add r2, r0, #0 - add r0, r4, #0 - mov r1, #0 - bl BufferPlayersName - ldr r2, [sp, #4] - add r0, r4, #0 - mov r1, #1 - bl BufferBoxMonNickname - mov r0, #1 - tst r0, r6 - beq _0224FD70 - mov r1, #0x61 - b _0224FD72 -_0224FD70: - mov r1, #0x62 -_0224FD72: - add r0, r7, #0 - bl NewString_ReadMsgData - add r5, r0, #0 - ldr r1, [sp] - add r0, r4, #0 - add r2, r5, #0 - bl StringExpandPlaceholders - add r0, r5, #0 - bl String_Delete - add r0, r4, #0 - bl MessageFormat_Delete - add r0, r7, #0 - bl DestroyMsgData - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_0224FCE0 - - thumb_func_start ov02_0224FD9C -ov02_0224FD9C: ; 0x0224FD9C - push {r4, r5, lr} - sub sp, #0xc - add r4, r1, #0 - add r5, r0, #0 - add r0, r4, #0 - add r1, sp, #0 - bl MapObject_CopyPositionVector - mov r0, #2 - ldrsb r0, [r5, r0] - cmp r0, #0 - beq _0224FDBC - ldr r1, [sp] - lsl r0, r0, #0xc - add r0, r1, r0 - str r0, [sp] -_0224FDBC: - mov r0, #3 - ldrsb r0, [r5, r0] - cmp r0, #0 - beq _0224FDDC - add r0, r4, #0 - bl FollowMon_GetSpecies - cmp r0, #0x32 - beq _0224FDDC - cmp r0, #0x33 - beq _0224FDDC - mov r1, #3 - ldrsb r1, [r5, r1] - add r0, r4, #0 - bl ov01_021F8F74 -_0224FDDC: - mov r0, #4 - ldrsb r0, [r5, r0] - cmp r0, #0 - beq _0224FDEC - ldr r1, [sp, #8] - lsl r0, r0, #0xc - add r0, r1, r0 - str r0, [sp, #8] -_0224FDEC: - add r0, r4, #0 - add r1, sp, #0 - bl MapObject_SetPositionVector - add sp, #0xc - pop {r4, r5, pc} - thumb_func_end ov02_0224FD9C - - thumb_func_start ov02_0224FDF8 -ov02_0224FDF8: ; 0x0224FDF8 - push {r4, lr} - sub sp, #8 - ldrb r0, [r0, #5] - cmp r0, #0 - beq _0224FE32 - cmp r1, #0 - beq _0224FE32 - ldr r0, _0224FE38 ; =SEQ_SE_END - cmp r1, r0 - bls _0224FE2C - add r0, r0, #1 - cmp r1, r0 - bne _0224FE16 - mov r0, #0 - b _0224FE18 -_0224FE16: - mov r0, #0xb -_0224FE18: - ldr r4, _0224FE3C ; =0x000001FF - add r1, r2, #0 - str r4, [sp] - str r3, [sp, #4] - add r2, r4, #0 - add r3, r4, #0 - bl PlayCryEx - add sp, #8 - pop {r4, pc} -_0224FE2C: - add r0, r1, #0 - bl PlaySE -_0224FE32: - add sp, #8 - pop {r4, pc} - nop -_0224FE38: .word SEQ_SE_END -_0224FE3C: .word 0x000001FF - thumb_func_end ov02_0224FDF8 - - thumb_func_start ov02_0224FE40 -ov02_0224FE40: ; 0x0224FE40 - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - add r7, r0, #0 - ldrb r0, [r5] - add r4, r2, #0 - cmp r0, #0 - beq _0224FE6C - add r0, r4, #0 - bl MapObject_GetFacingDirection - ldrb r1, [r5] - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - add r0, r4, #0 - sub r1, r1, #1 - bl MapObject_SetFacingDirectionDirect - add r0, r7, #0 - add r1, r4, #0 - add r2, r6, #0 - bl ov02_0224FE70 -_0224FE6C: - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_0224FE40 - - thumb_func_start ov02_0224FE70 -ov02_0224FE70: ; 0x0224FE70 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r4, r1, #0 - add r5, r0, #0 - add r0, r4, #0 - add r6, r2, #0 - bl ov01_022055DC - cmp r0, #0 - beq _0224FEFC - add r0, r4, #0 - bl MapObject_GetFacingDirection - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r6, r0 - beq _0224FEFC - ldr r0, _0224FF00 ; =0x0000087C - ldrb r0, [r5, r0] - cmp r0, #2 - beq _0224FE9E - cmp r0, #3 - bne _0224FEFC -_0224FE9E: - add r0, r4, #0 - bl MapObject_GetFieldSystem - ldr r1, _0224FF00 ; =0x0000087C - add r6, r0, #0 - ldrb r1, [r5, r1] - add r0, r4, #0 - add r2, sp, #8 - add r3, sp, #4 - bl ov02_0224FF04 - ldr r1, [sp, #8] - ldr r2, [sp, #4] - add r0, r6, #0 - bl GetMetatileBehavior - add r5, r0, #0 - lsl r0, r5, #0x18 - lsr r0, r0, #0x18 - bl MetatileBehavior_IsEncounterGrass - cmp r0, #1 - bne _0224FEE0 - mov r0, #1 - str r0, [sp] - ldr r2, [sp, #8] - ldr r3, [sp, #4] - add r0, r4, #0 - mov r1, #0 - bl ov01_021FF0E4 - add sp, #0xc - pop {r3, r4, r5, r6, pc} -_0224FEE0: - lsl r0, r5, #0x18 - lsr r0, r0, #0x18 - bl sub_0205B6F4 - cmp r0, #1 - bne _0224FEFC - mov r0, #1 - str r0, [sp] - ldr r2, [sp, #8] - ldr r3, [sp, #4] - add r0, r4, #0 - mov r1, #0 - bl ov01_021FF964 -_0224FEFC: - add sp, #0xc - pop {r3, r4, r5, r6, pc} - .balign 4, 0 -_0224FF00: .word 0x0000087C - thumb_func_end ov02_0224FE70 - - thumb_func_start ov02_0224FF04 -ov02_0224FF04: ; 0x0224FF04 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - add r4, r2, #0 - add r6, r1, #0 - add r5, r3, #0 - bl MapObject_GetXCoord - str r0, [r4] - add r0, r7, #0 - bl MapObject_GetZCoord - str r0, [r5] - cmp r6, #3 - bhi _0224FF54 - add r0, r6, r6 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0224FF2C: ; jump table - .short _0224FF34 - _0224FF2C - 2 ; case 0 - .short _0224FF3C - _0224FF2C - 2 ; case 1 - .short _0224FF44 - _0224FF2C - 2 ; case 2 - .short _0224FF4C - _0224FF2C - 2 ; case 3 -_0224FF34: - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - pop {r3, r4, r5, r6, r7, pc} -_0224FF3C: - ldr r0, [r5] - sub r0, r0, #1 - str r0, [r5] - pop {r3, r4, r5, r6, r7, pc} -_0224FF44: - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, r7, pc} -_0224FF4C: - ldr r0, [r4] - sub r0, r0, #1 - str r0, [r4] - pop {r3, r4, r5, r6, r7, pc} -_0224FF54: - bl GF_AssertFail - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov02_0224FF04 - - thumb_func_start ov02_0224FF5C -ov02_0224FF5C: ; 0x0224FF5C - push {r4, r5, r6, lr} - ldr r3, _0224FFCC ; =0x00000818 - add r5, r0, #0 - add r2, r3, #0 - add r2, #0x53 - ldrb r2, [r5, r2] - add r0, r5, r3 - add r3, #0x52 - lsl r2, r2, #3 - add r4, r0, r2 - ldrb r0, [r5, r3] - add r6, r1, #0 - cmp r0, #0 - bne _0224FFA8 - add r0, r4, #0 - bl ov02_0224FD9C - ldr r3, _0224FFD0 ; =0x0000086C - add r0, r4, #0 - ldrb r1, [r5, r3] - lsl r1, r1, #0x1c - lsr r1, r1, #0x19 - add r2, r5, r1 - add r1, r3, #0 - sub r1, #0x84 - ldrh r1, [r2, r1] - add r2, r3, #0 - add r2, #0x12 - add r3, #0x11 - ldrh r2, [r5, r2] - ldrb r3, [r5, r3] - bl ov02_0224FDF8 - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl ov02_0224FE40 -_0224FFA8: - ldr r1, _0224FFD4 ; =0x0000086A - ldrb r0, [r5, r1] - add r0, r0, #1 - strb r0, [r5, r1] - ldrb r2, [r5, r1] - ldrb r0, [r4, #1] - cmp r2, r0 - blo _0224FFC6 - add r0, r1, #1 - ldrb r0, [r5, r0] - add r2, r0, #1 - add r0, r1, #1 - strb r2, [r5, r0] - mov r0, #1 - pop {r4, r5, r6, pc} -_0224FFC6: - mov r0, #0 - pop {r4, r5, r6, pc} - nop -_0224FFCC: .word 0x00000818 -_0224FFD0: .word 0x0000086C -_0224FFD4: .word 0x0000086A - thumb_func_end ov02_0224FF5C - - thumb_func_start ov02_0224FFD8 -ov02_0224FFD8: ; 0x0224FFD8 - ldr r2, _02250000 ; =0x0000086B - ldrb r1, [r0, r2] - cmp r1, #0xa - blo _0224FFE4 - mov r0, #0 - bx lr -_0224FFE4: - lsl r1, r1, #3 - add r3, r0, r1 - add r1, r2, #0 - sub r1, #0x53 - ldrb r1, [r3, r1] - cmp r1, #0xff - bne _0224FFF6 - mov r0, #0 - bx lr -_0224FFF6: - mov r3, #0 - sub r1, r2, #1 - strb r3, [r0, r1] - mov r0, #1 - bx lr - .balign 4, 0 -_02250000: .word 0x0000086B - thumb_func_end ov02_0224FFD8 - - thumb_func_start ov02_02250004 -ov02_02250004: ; 0x02250004 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r1, #0 - cmp r2, #0 - bne _02250016 - bl GF_AssertFail - mov r0, #1 - pop {r4, r5, r6, pc} -_02250016: - ldr r0, _02250108 ; =0x00000868 - ldrb r1, [r4, r0] - cmp r1, #4 - bhi _02250102 - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0225002A: ; jump table - .short _02250034 - _0225002A - 2 ; case 0 - .short _02250040 - _0225002A - 2 ; case 1 - .short _02250082 - _0225002A - 2 ; case 2 - .short _02250098 - _0225002A - 2 ; case 3 - .short _022500AE - _0225002A - 2 ; case 4 -_02250034: - sub r0, #0x50 - add r0, r4, r0 - mov r1, #0xe0 - sub r2, r2, #1 - bl ReadWholeNarcMemberByIdPair -_02250040: - add r0, r5, #0 - add r0, #0xe4 - mov r1, #0x87 - lsl r1, r1, #4 - ldr r0, [r0] - add r1, r4, r1 - bl MapObject_CopyPositionVector - add r0, r5, #0 - add r0, #0xe4 - ldr r0, [r0] - bl MapObject_GetFacingDirection - ldr r1, _0225010C ; =0x0000087C - strb r0, [r4, r1] - add r0, r5, #0 - add r0, #0xe4 - ldr r0, [r0] - mov r1, #0 - bl ov01_021F8F68 - add r5, #0xe4 - ldr r0, [r5] - mov r1, #1 - bl ov01_021F8F08 - ldr r0, _02250108 ; =0x00000868 - mov r1, #2 - strb r1, [r4, r0] - mov r1, #0 - add r0, r0, #3 - strb r1, [r4, r0] - b _02250102 -_02250082: - add r0, r4, #0 - bl ov02_0224FFD8 - cmp r0, #0 - ldr r0, _02250108 ; =0x00000868 - bne _02250094 - mov r1, #4 - strb r1, [r4, r0] - b _02250102 -_02250094: - mov r1, #3 - strb r1, [r4, r0] -_02250098: - add r5, #0xe4 - ldr r1, [r5] - add r0, r4, #0 - bl ov02_0224FF5C - cmp r0, #0 - beq _02250102 - ldr r0, _02250108 ; =0x00000868 - mov r1, #2 - strb r1, [r4, r0] - b _02250102 -_022500AE: - add r0, r5, #0 - add r0, #0xe4 - ldr r0, [r0] - bl MapObject_GetFacingDirection - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - add r0, r5, #0 - add r0, #0xe4 - ldr r0, [r0] - mov r1, #0 - bl ov01_021F8F68 - add r0, r5, #0 - add r0, #0xe4 - ldr r0, [r0] - mov r1, #0 - bl ov01_021F8F08 - add r0, r5, #0 - add r0, #0xe4 - mov r1, #0x87 - lsl r1, r1, #4 - ldr r0, [r0] - add r1, r4, r1 - bl MapObject_SetPositionVector - ldr r1, _0225010C ; =0x0000087C - add r0, r5, #0 - add r0, #0xe4 - ldrb r1, [r4, r1] - ldr r0, [r0] - bl MapObject_SetFacingDirectionDirect - add r5, #0xe4 - ldr r1, [r5] - add r0, r4, #0 - add r2, r6, #0 - bl ov02_0224FE70 - mov r0, #1 - pop {r4, r5, r6, pc} -_02250102: - mov r0, #0 - pop {r4, r5, r6, pc} - nop -_02250108: .word 0x00000868 -_0225010C: .word 0x0000087C - thumb_func_end ov02_02250004 - - thumb_func_start Task_FollowMonInteract -Task_FollowMonInteract: ; 0x02250110 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - bl TaskManager_GetFieldSystem - add r4, r0, #0 - add r0, r5, #0 - bl TaskManager_GetStatePtr - add r6, r0, #0 - ldr r0, [r6] - cmp r0, #5 - bls _0225012A - b _0225047E -_0225012A: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02250136: ; jump table - .short _02250142 - _02250136 - 2 ; case 0 - .short _0225015C - _02250136 - 2 ; case 1 - .short _022501A2 - _02250136 - 2 ; case 2 - .short _02250314 - _02250136 - 2 ; case 3 - .short _02250378 - _02250136 - 2 ; case 4 - .short _02250418 - _02250136 - 2 ; case 5 -_02250142: - add r0, r4, #0 - bl ov02_0224EF94 - add r1, r0, #0 - mov r0, #0x12 - lsl r0, r0, #4 - ldr r0, [r4, r0] - bl ov02_0224F880 - ldr r0, [r6] - add r0, r0, #1 - str r0, [r6] - b _0225047E -_0225015C: - mov r1, #0x12 - lsl r1, r1, #4 - ldr r1, [r4, r1] - add r0, r4, #0 - bl ov02_0224F8FC - cmp r0, #1 - bne _02250178 - add r4, #0xe4 - ldr r0, [r4] - bl MapObject_PauseMovement - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_02250178: - cmp r0, #2 - bne _0225018E - mov r0, #0x12 - lsl r0, r0, #4 - ldr r1, [r4, r0] - ldr r0, _02250484 ; =0x00000869 - mov r2, #0xa - strb r2, [r1, r0] - mov r0, #2 - str r0, [r6] - b _0225047E -_0225018E: - cmp r0, #3 - bne _02250198 - mov r0, #3 - str r0, [r6] - b _0225047E -_02250198: - cmp r0, #4 - bne _02250270 - mov r0, #4 - str r0, [r6] - b _0225047E -_022501A2: - mov r0, #0x12 - lsl r0, r0, #4 - ldr r1, [r4, r0] - ldr r0, _02250484 ; =0x00000869 - ldrb r0, [r1, r0] - sub r0, #0xa - cmp r0, #3 - bhi _02250270 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_022501BE: ; jump table - .short _022501C6 - _022501BE - 2 ; case 0 - .short _022501DE - _022501BE - 2 ; case 1 - .short _02250218 - _022501BE - 2 ; case 2 - .short _02250246 - _022501BE - 2 ; case 3 -_022501C6: - add r0, r4, #0 - mov r1, #3 - mov r2, #0 - bl ov01_021F6A9C - mov r0, #0x12 - lsl r0, r0, #4 - ldr r1, [r4, r0] - ldr r0, _02250484 ; =0x00000869 - mov r2, #0xb - strb r2, [r1, r0] - b _0225047E -_022501DE: - add r0, r4, #0 - bl ov01_021F6B00 - add r5, r0, #0 - add r0, r4, #0 - bl ov01_021F6B10 - cmp r5, #3 - bne _02250270 - cmp r0, #1 - bne _02250270 - mov r3, #0x12 - lsl r3, r3, #4 - ldr r5, [r4, r3] - mov r3, #0x22 - mov r1, #3 - lsl r3, r3, #6 - add r0, r4, #0 - add r2, r1, #0 - add r3, r5, r3 - bl ov01_021F6ABC - mov r0, #0x12 - lsl r0, r0, #4 - ldr r1, [r4, r0] - ldr r0, _02250484 ; =0x00000869 - mov r2, #0xc - strb r2, [r1, r0] - b _0225047E -_02250218: - add r0, r4, #0 - bl ov01_021F6B00 - add r5, r0, #0 - add r0, r4, #0 - bl ov01_021F6AEC - cmp r5, #3 - bne _02250270 - cmp r0, #6 - bne _02250270 - mov r1, #0 - add r0, r4, #0 - add r2, r1, #0 - bl ov01_021F6A9C - mov r0, #0x12 - lsl r0, r0, #4 - ldr r1, [r4, r0] - ldr r0, _02250484 ; =0x00000869 - mov r2, #0xd - strb r2, [r1, r0] - b _0225047E -_02250246: - add r0, r4, #0 - bl ov01_021F6B00 - add r5, r0, #0 - add r0, r4, #0 - bl ov01_021F6B10 - cmp r5, #0 - bne _02250270 - cmp r0, #1 - bne _02250270 - mov r0, #0x12 - lsl r0, r0, #4 - mov r1, #0x22 - ldr r0, [r4, r0] - lsl r1, r1, #6 - ldrh r1, [r0, r1] - cmp r1, #0 - beq _02250272 - cmp r1, #1 - beq _022502C4 -_02250270: - b _0225047E -_02250272: - mov r1, #0 - bl ClearFrameAndWindow2 - mov r0, #0x12 - lsl r0, r0, #4 - ldr r0, [r4, r0] - bl RemoveWindow - mov r0, #0x12 - lsl r0, r0, #4 - ldr r0, [r4, r0] - ldr r0, [r0, #0x10] - bl String_Delete - add r0, r4, #0 - add r0, #0xd2 - ldrb r1, [r0] - mov r0, #0x40 - bic r1, r0 - add r0, r4, #0 - add r0, #0xd2 - strb r1, [r0] - mov r0, #0x12 - lsl r0, r0, #4 - mov r1, #0x81 - ldr r0, [r4, r0] - lsl r1, r1, #4 - ldrh r1, [r0, r1] - cmp r1, #0 - bne _022502BA - add r4, #0xe4 - ldr r0, [r4] - bl MapObject_PauseMovement - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_022502BA: - bl ov02_0224F880 - mov r0, #1 - str r0, [r6] - b _0225047E -_022502C4: - mov r1, #0 - bl ClearFrameAndWindow2 - mov r0, #0x12 - lsl r0, r0, #4 - ldr r0, [r4, r0] - bl RemoveWindow - mov r0, #0x12 - lsl r0, r0, #4 - ldr r0, [r4, r0] - ldr r0, [r0, #0x10] - bl String_Delete - add r0, r4, #0 - add r0, #0xd2 - ldrb r1, [r0] - mov r0, #0x40 - bic r1, r0 - add r0, r4, #0 - add r0, #0xd2 - strb r1, [r0] - mov r0, #0x12 - lsl r0, r0, #4 - ldr r0, [r4, r0] - ldr r1, _02250488 ; =0x00000812 - ldrh r1, [r0, r1] - cmp r1, #0 - bne _0225030A - add r4, #0xe4 - ldr r0, [r4] - bl MapObject_PauseMovement - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_0225030A: - bl ov02_0224F880 - mov r0, #1 - str r0, [r6] - b _0225047E -_02250314: - ldr r0, [r4, #0xc] - bl Save_FashionData_Get - bl Save_FashionData_GetFashionCase - add r7, r0, #0 - mov r0, #0x12 - lsl r0, r0, #4 - ldr r1, [r4, r0] - ldr r0, _0225048C ; =0x00000816 - ldrb r0, [r1, r0] - sub r5, r0, #1 - bmi _02250332 - cmp r5, #0x64 - blt _02250336 -_02250332: - bl GF_AssertFail -_02250336: - add r0, r7, #0 - add r1, r5, #0 - mov r2, #1 - bl sub_0202BA2C - cmp r0, #0 - beq _02250364 - add r0, r7, #0 - add r1, r5, #0 - mov r2, #1 - bl FashionCase_GiveFashionItem - mov r1, #0x12 - lsl r1, r1, #4 - ldr r1, [r4, r1] - add r0, r4, #0 - mov r2, #3 - bl ov02_0224FC08 - ldr r0, _02250490 ; =SEQ_ME_ACCE - bl PlayFanfare - b _02250372 -_02250364: - mov r1, #0x12 - lsl r1, r1, #4 - ldr r1, [r4, r1] - add r0, r4, #0 - mov r2, #2 - bl ov02_0224FC08 -_02250372: - mov r0, #5 - str r0, [r6] - b _0225047E -_02250378: - mov r0, #0x12 - lsl r0, r0, #4 - ldr r1, [r4, r0] - ldr r0, _02250494 ; =0x00000817 - ldrb r0, [r1, r0] - cmp r0, #5 - bhi _022503B2 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02250392: ; jump table - .short _022503B2 - _02250392 - 2 ; case 0 - .short _0225039E - _02250392 - 2 ; case 1 - .short _022503A2 - _02250392 - 2 ; case 2 - .short _022503A6 - _02250392 - 2 ; case 3 - .short _022503AA - _02250392 - 2 ; case 4 - .short _022503AE - _02250392 - 2 ; case 5 -_0225039E: - mov r5, #MON_DATA_SHINY_LEAF_A - b _022503BA -_022503A2: - mov r5, #MON_DATA_SHINY_LEAF_B - b _022503BA -_022503A6: - mov r5, #MON_DATA_SHINY_LEAF_C - b _022503BA -_022503AA: - mov r5, #MON_DATA_SHINY_LEAF_D - b _022503BA -_022503AE: - mov r5, #MON_DATA_SHINY_LEAF_E - b _022503BA -_022503B2: - bl GF_AssertFail - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_022503BA: - ldr r0, [r4, #0xc] - bl SaveArray_Party_Get - bl GetFirstAliveMonInParty_CrashIfNone - add r1, r5, #0 - mov r2, #0 - add r7, r0, #0 - bl GetMonData - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bne _02250404 - ldr r0, [r4, #0xc] - bl Save_VarsFlags_Get - bl SetFlag99C - mov r1, #1 - add r0, sp, #0 - strb r1, [r0] - add r0, r7, #0 - add r1, r5, #0 - add r2, sp, #0 - bl SetMonData - mov r1, #0x12 - lsl r1, r1, #4 - ldr r1, [r4, r1] - add r0, r4, #0 - mov r2, #1 - bl ov02_0224FC08 - ldr r0, _02250490 ; =SEQ_ME_ACCE - bl PlayFanfare - b _02250412 -_02250404: - mov r1, #0x12 - lsl r1, r1, #4 - ldr r1, [r4, r1] - add r0, r4, #0 - mov r2, #0 - bl ov02_0224FC08 -_02250412: - mov r0, #5 - str r0, [r6] - b _0225047E -_02250418: - mov r0, #0x12 - lsl r0, r0, #4 - ldr r1, [r4, r0] - ldr r0, _02250498 ; =0x0000086E - ldrh r0, [r1, r0] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl IsPrintFinished - cmp r0, #1 - bne _0225047E - bl IsFanfarePlaying - cmp r0, #0 - bne _0225047E - ldr r0, _0225049C ; =gSystem - ldr r1, [r0, #0x48] - mov r0, #3 - tst r0, r1 - beq _0225047E - mov r0, #0x12 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #0 - bl ClearFrameAndWindow2 - mov r0, #0x12 - lsl r0, r0, #4 - ldr r0, [r4, r0] - bl RemoveWindow - mov r0, #0x12 - lsl r0, r0, #4 - ldr r0, [r4, r0] - ldr r0, [r0, #0x10] - bl String_Delete - add r0, r4, #0 - add r0, #0xd2 - ldrb r1, [r0] - mov r0, #0x40 - bic r1, r0 - add r0, r4, #0 - add r0, #0xd2 - add r4, #0xe4 - strb r1, [r0] - ldr r0, [r4] - bl MapObject_PauseMovement - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_0225047E: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - nop -_02250484: .word 0x00000869 -_02250488: .word 0x00000812 -_0225048C: .word 0x00000816 -_02250490: .word SEQ_ME_ACCE -_02250494: .word 0x00000817 -_02250498: .word 0x0000086E -_0225049C: .word gSystem - thumb_func_end Task_FollowMonInteract - - thumb_func_start FollowMon_PlaceholdersSet -FollowMon_PlaceholdersSet: ; 0x022504A0 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - ldr r0, [r5, #0xc] - add r4, r1, #0 - bl SaveArray_Party_Get - bl GetFirstAliveMonInParty_CrashIfNone - add r6, r0, #0 - bl Mon_GetBoxMon - add r7, r0, #0 - add r0, r4, #0 - mov r1, #0 - add r2, r7, #0 - bl BufferBoxMonNickname - add r0, r4, #0 - mov r1, #1 - add r2, r7, #0 - bl BufferBoxMonSpeciesName - ldr r0, [r5, #0xc] - bl Save_PlayerData_GetProfile - add r2, r0, #0 - add r0, r4, #0 - mov r1, #2 - bl BufferPlayersName - ldr r0, [r5, #0x20] - ldr r0, [r0] - bl MapHeader_GetMapSec - add r2, r0, #0 - add r0, r4, #0 - mov r1, #3 - bl BufferLocationName - add r0, r6, #0 - mov r1, #6 - mov r2, #0 - bl GetMonData - add r2, r0, #0 - add r0, r4, #0 - mov r1, #4 - bl BufferItemName - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end FollowMon_PlaceholdersSet - - thumb_func_start ov02_02250504 -ov02_02250504: ; 0x02250504 - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r0, [r5, #0xc] - bl SaveArray_Party_Get - bl GetFirstAliveMonInParty_CrashIfNone - add r4, r0, #0 - mov r0, #0x42 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl FieldSystem_UnkSub108_GetMonMood - mov r1, #0x12 - str r0, [sp] - lsl r1, r1, #4 - ldr r2, [r5, r1] - ldr r1, _0225058C ; =0x00000815 - ldrsb r1, [r2, r1] - add r1, r0, r1 - str r1, [sp] - cmp r1, #0x7f - ble _02250538 - mov r0, #0x7f - str r0, [sp] - b _02250542 -_02250538: - mov r0, #0x7e - mvn r0, r0 - cmp r1, r0 - bge _02250542 - str r0, [sp] -_02250542: - mov r0, #0x42 - ldr r1, [sp] - lsl r0, r0, #2 - lsl r1, r1, #0x18 - ldr r0, [r5, r0] - asr r1, r1, #0x18 - bl FieldSystem_UnkSub108_SetMonMood - add r0, r4, #0 - mov r1, #9 - mov r2, #0 - bl GetMonData - mov r1, #0x12 - str r0, [sp] - lsl r1, r1, #4 - ldr r2, [r5, r1] - ldr r1, _02250590 ; =0x00000814 - ldrsb r1, [r2, r1] - add r0, r0, r1 - str r0, [sp] - cmp r0, #0xff - ble _02250576 - mov r0, #0xff - str r0, [sp] - b _0225057E -_02250576: - cmp r0, #0 - bge _0225057E - mov r0, #0 - str r0, [sp] -_0225057E: - add r0, r4, #0 - mov r1, #9 - add r2, sp, #0 - bl SetMonData - pop {r3, r4, r5, pc} - nop -_0225058C: .word 0x00000815 -_02250590: .word 0x00000814 - thumb_func_end ov02_02250504 - - thumb_func_start ov02_02250594 -ov02_02250594: ; 0x02250594 - cmp r0, #0xa - bhi _02250622 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_022505A4: ; jump table - .short _02250622 - _022505A4 - 2 ; case 0 - .short _022505BA - _022505A4 - 2 ; case 1 - .short _022505C2 - _022505A4 - 2 ; case 2 - .short _022505CE - _022505A4 - 2 ; case 3 - .short _022505DA - _022505A4 - 2 ; case 4 - .short _022505E6 - _022505A4 - 2 ; case 5 - .short _022505F2 - _022505A4 - 2 ; case 6 - .short _022505FE - _022505A4 - 2 ; case 7 - .short _0225060A - _022505A4 - 2 ; case 8 - .short _02250612 - _022505A4 - 2 ; case 9 - .short _0225061A - _022505A4 - 2 ; case 10 -_022505BA: - cmp r1, #0xff - bne _02250622 - mov r0, #1 - bx lr -_022505C2: - cmp r1, #0xc8 - blt _02250622 - cmp r1, #0xff - bge _02250622 - mov r0, #1 - bx lr -_022505CE: - cmp r1, #0x96 - blt _02250622 - cmp r1, #0xc8 - bge _02250622 - mov r0, #1 - bx lr -_022505DA: - cmp r1, #0x5a - blt _02250622 - cmp r1, #0x96 - bge _02250622 - mov r0, #1 - bx lr -_022505E6: - cmp r1, #0x3c - blt _02250622 - cmp r1, #0x5a - bge _02250622 - mov r0, #1 - bx lr -_022505F2: - cmp r1, #0x1e - blt _02250622 - cmp r1, #0x3c - bge _02250622 - mov r0, #1 - bx lr -_022505FE: - cmp r1, #1 - blt _02250622 - cmp r1, #0x1e - bge _02250622 - mov r0, #1 - bx lr -_0225060A: - cmp r1, #0 - bne _02250622 - mov r0, #1 - bx lr -_02250612: - cmp r1, #0x5a - blt _02250622 - mov r0, #1 - bx lr -_0225061A: - cmp r1, #0x3c - bge _02250622 - mov r0, #1 - bx lr -_02250622: - mov r0, #0 - bx lr - .balign 4, 0 - thumb_func_end ov02_02250594 - - thumb_func_start ov02_02250628 -ov02_02250628: ; 0x02250628 - cmp r0, #0xa - bhi _022506CE - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02250638: ; jump table - .short _022506CE - _02250638 - 2 ; case 0 - .short _0225064E - _02250638 - 2 ; case 1 - .short _02250656 - _02250638 - 2 ; case 2 - .short _02250662 - _02250638 - 2 ; case 3 - .short _0225066E - _02250638 - 2 ; case 4 - .short _0225067A - _02250638 - 2 ; case 5 - .short _0225068A - _02250638 - 2 ; case 6 - .short _0225069C - _02250638 - 2 ; case 7 - .short _022506AE - _02250638 - 2 ; case 8 - .short _022506BA - _02250638 - 2 ; case 9 - .short _022506C2 - _02250638 - 2 ; case 10 -_0225064E: - cmp r1, #0x7f - bne _022506CE - mov r0, #1 - bx lr -_02250656: - cmp r1, #0x64 - blt _022506CE - cmp r1, #0x7f - bge _022506CE - mov r0, #1 - bx lr -_02250662: - cmp r1, #0x32 - blt _022506CE - cmp r1, #0x64 - bge _022506CE - mov r0, #1 - bx lr -_0225066E: - cmp r1, #0x1e - blt _022506CE - cmp r1, #0x32 - bge _022506CE - mov r0, #1 - bx lr -_0225067A: - mov r0, #0x1d - mvn r0, r0 - cmp r1, r0 - ble _022506CE - cmp r1, #0x1e - bge _022506CE - mov r0, #1 - bx lr -_0225068A: - mov r0, #0x31 - mvn r0, r0 - cmp r1, r0 - ble _022506CE - add r0, #0x14 - cmp r1, r0 - bgt _022506CE - mov r0, #1 - bx lr -_0225069C: - mov r0, #0x7e - mvn r0, r0 - cmp r1, r0 - ble _022506CE - add r0, #0x4d - cmp r1, r0 - bgt _022506CE - mov r0, #1 - bx lr -_022506AE: - mov r0, #0x7e - mvn r0, r0 - cmp r1, r0 - bne _022506CE - mov r0, #1 - bx lr -_022506BA: - cmp r1, #0 - blt _022506CE - mov r0, #1 - bx lr -_022506C2: - mov r0, #0 - mvn r0, r0 - cmp r1, r0 - bgt _022506CE - mov r0, #1 - bx lr -_022506CE: - mov r0, #0 - bx lr - .balign 4, 0 - thumb_func_end ov02_02250628 - - thumb_func_start ov02_022506D4 -ov02_022506D4: ; 0x022506D4 - push {r3, lr} - cmp r0, #0xf9 - bhi _022506E2 - cmp r0, r1 - bne _02250732 - mov r0, #1 - pop {r3, pc} -_022506E2: - sub r0, #0xfa - cmp r0, #4 - bhi _0225072A - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_022506F4: ; jump table - .short _022506FE - _022506F4 - 2 ; case 0 - .short _02250706 - _022506F4 - 2 ; case 1 - .short _0225070E - _022506F4 - 2 ; case 2 - .short _0225071A - _022506F4 - 2 ; case 3 - .short _02250722 - _022506F4 - 2 ; case 4 -_022506FE: - cmp r1, #0x13 - bhi _02250732 - mov r0, #1 - pop {r3, pc} -_02250706: - cmp r1, #0x82 - bhi _02250732 - mov r0, #1 - pop {r3, pc} -_0225070E: - cmp r1, #0x8c - blo _02250732 - cmp r1, #0x95 - bhi _02250732 - mov r0, #1 - pop {r3, pc} -_0225071A: - cmp r1, #0xa0 - blo _02250732 - mov r0, #1 - pop {r3, pc} -_02250722: - cmp r1, #0xdc - blo _02250732 - mov r0, #1 - pop {r3, pc} -_0225072A: - bl GF_AssertFail - mov r0, #0 - pop {r3, pc} -_02250732: - mov r0, #0 - pop {r3, pc} - .balign 4, 0 - thumb_func_end ov02_022506D4 - - thumb_func_start ov02_02250738 -ov02_02250738: ; 0x02250738 - push {r4, r5} - sub sp, #8 - ldr r4, _0225077C ; =ov02_02253A54 - add r2, sp, #0 - ldrb r5, [r4] - add r3, sp, #0 - add r0, r2, r0 - strb r5, [r3] - ldrb r5, [r4, #1] - sub r0, r0, #1 - strb r5, [r3, #1] - ldrb r5, [r4, #2] - strb r5, [r3, #2] - ldrb r5, [r4, #3] - ldrb r4, [r4, #4] - strb r5, [r3, #3] - strb r4, [r3, #4] - ldrb r0, [r0] - mov r3, #0 - and r0, r1 -_02250760: - cmp r0, #0 - bne _0225076C - add sp, #8 - mov r0, #1 - pop {r4, r5} - bx lr -_0225076C: - add r3, r3, #1 - cmp r3, #5 - blt _02250760 - mov r0, #0 - add sp, #8 - pop {r4, r5} - bx lr - nop -_0225077C: .word ov02_02253A54 - thumb_func_end ov02_02250738 - - thumb_func_start ov02_02250780 -ov02_02250780: ; 0x02250780 - push {r4, r5, r6, lr} - ldr r0, [r0, #0xc] - add r5, r1, #0 - bl SaveArray_Party_Get - bl GetFirstAliveMonInParty_CrashIfNone - add r6, r0, #0 - mov r1, #0xb1 - mov r2, #0 - bl GetMonData - add r4, r0, #0 - add r0, r6, #0 - mov r1, #0xb2 - mov r2, #0 - bl GetMonData - cmp r4, r5 - beq _022507AC - cmp r0, r5 - bne _022507B0 -_022507AC: - mov r0, #1 - pop {r4, r5, r6, pc} -_022507B0: - mov r0, #0 - pop {r4, r5, r6, pc} - thumb_func_end ov02_02250780 - - thumb_func_start ov02_022507B4 -ov02_022507B4: ; 0x022507B4 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r0, #0xe4 - ldr r0, [r0] - add r4, r1, #0 - bl FollowMon_GetSpecies - sub r0, #0x32 - cmp r0, #1 - bls _022507E0 - mov r0, #0xb - mov r1, #8 - bl Heap_AllocAtEnd - add r2, r0, #0 - strh r4, [r2] - mov r0, #0 - strh r0, [r2, #2] - ldr r0, [r5, #0x10] - ldr r1, _022507E4 ; =ov02_022507E8 - bl TaskManager_Call -_022507E0: - pop {r3, r4, r5, pc} - nop -_022507E4: .word ov02_022507E8 - thumb_func_end ov02_022507B4 - - thumb_func_start ov02_022507E8 -ov02_022507E8: ; 0x022507E8 - push {r4, r5, r6, lr} - add r4, r0, #0 - bl TaskManager_GetFieldSystem - add r6, r0, #0 - add r0, r4, #0 - bl TaskManager_GetEnvironment - add r5, r0, #0 - add r0, r4, #0 - bl TaskManager_GetStatePtr - add r4, r0, #0 - ldr r0, [r4] - cmp r0, #4 - bhi _022508AA - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02250814: ; jump table - .short _0225081E - _02250814 - 2 ; case 0 - .short _0225082E - _02250814 - 2 ; case 1 - .short _0225084C - _02250814 - 2 ; case 2 - .short _02250874 - _02250814 - 2 ; case 3 - .short _022508A0 - _02250814 - 2 ; case 4 -_0225081E: - add r0, r6, #0 - add r0, #0xe4 - ldr r0, [r0] - bl MapObject_UnpauseMovement - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] -_0225082E: - add r0, r6, #0 - bl FollowMon_GetMapObject - bl MapObject_AreBitsSetForMovementScriptInit - cmp r0, #0 - beq _022508AA - add r6, #0xe4 - ldr r0, [r6] - bl MapObject_PauseMovement - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _022508AA -_0225084C: - add r0, r6, #0 - add r0, #0xe4 - ldr r0, [r0] - bl MapObject_GetFacingDirection - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - add r6, #0xe4 - mov r2, #0x14 - ldr r3, _022508B0 ; =ov02_02253A70 - mul r2, r1 - ldr r0, [r6] - add r1, r3, r2 - bl EventObjectMovementMan_Create - str r0, [r5, #4] - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _022508AA -_02250874: - ldr r0, [r5, #4] - bl EventObjectMovementMan_IsFinish - cmp r0, #1 - bne _022508AA - ldr r0, [r5, #4] - bl EventObjectMovementMan_Delete - ldrh r0, [r5, #2] - add r0, r0, #1 - strh r0, [r5, #2] - ldrh r1, [r5, #2] - ldrh r0, [r5] - cmp r1, r0 - blo _0225089A - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _022508AA -_0225089A: - mov r0, #0 - str r0, [r4] - b _022508AA -_022508A0: - add r0, r5, #0 - bl Heap_Free - mov r0, #1 - pop {r4, r5, r6, pc} -_022508AA: - mov r0, #0 - pop {r4, r5, r6, pc} - nop -_022508B0: .word ov02_02253A70 - thumb_func_end ov02_022507E8 - - thumb_func_start ov02_022508B4 -ov02_022508B4: ; 0x022508B4 - push {r4, lr} - add r4, r0, #0 - mov r0, #0xb - mov r1, #4 - bl Heap_AllocAtEnd - add r2, r0, #0 - mov r0, #0 - strh r0, [r2] - strh r0, [r2, #2] - ldr r0, [r4, #0x10] - ldr r1, _022508D4 ; =ov02_022508D8 - bl TaskManager_Call - mov r0, #1 - pop {r4, pc} - .balign 4, 0 -_022508D4: .word ov02_022508D8 - thumb_func_end ov02_022508B4 - - thumb_func_start ov02_022508D8 -ov02_022508D8: ; 0x022508D8 - push {r4, r5, r6, lr} - sub sp, #0x18 - add r4, r0, #0 - bl TaskManager_GetFieldSystem - add r6, r0, #0 - add r0, r4, #0 - bl TaskManager_GetStatePtr - add r5, r0, #0 - add r0, r4, #0 - bl TaskManager_GetEnvironment - ldr r1, [r5] - add r4, r0, #0 - cmp r1, #3 - bls _022508FC - b _02250A44 -_022508FC: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_02250908: ; jump table - .short _02250910 - _02250908 - 2 ; case 0 - .short _0225099A - _02250908 - 2 ; case 1 - .short _022509AE - _02250908 - 2 ; case 2 - .short _02250A3A - _02250908 - 2 ; case 3 -_02250910: - ldr r3, _02250A4C ; =ov02_02253B24 - add r2, sp, #0xc - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - ldrh r0, [r4, #2] - add r0, r0, #1 - strh r0, [r4, #2] - ldrh r0, [r4, #2] - bl _dfltu - add r3, r1, #0 - add r2, r0, #0 - ldr r1, _02250A50 ; =0x40A00000 - mov r0, #0 - bl _dmul - ldr r3, _02250A54 ; =0x40240000 - mov r2, #0 - bl _ddiv - add r3, r1, #0 - add r2, r0, #0 - ldr r1, _02250A58 ; =0x40B00000 - mov r0, #0 - bl _dadd - bl _dfix - str r0, [sp, #0xc] - ldrh r0, [r4, #2] - bl _dfltu - add r3, r1, #0 - add r2, r0, #0 - ldr r1, _02250A50 ; =0x40A00000 - mov r0, #0 - bl _dmul - ldr r3, _02250A54 ; =0x40240000 - mov r2, #0 - bl _ddiv - add r3, r1, #0 - add r2, r0, #0 - ldr r1, _02250A58 ; =0x40B00000 - mov r0, #0 - bl _dadd - bl _dfix - str r0, [sp, #0x10] - ldr r0, [r6, #0x3c] - bl ov01_021F771C - add r1, sp, #0xc - bl sub_02023E78 - ldrh r0, [r4, #2] - cmp r0, #0xa - blo _02250A44 - mov r0, #0 - strh r0, [r4, #2] - strh r0, [r4] - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _02250A44 -_0225099A: - ldrh r0, [r4] - add r0, r0, #1 - strh r0, [r4] - ldrh r0, [r4] - cmp r0, #0xa - blo _02250A44 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _02250A44 -_022509AE: - ldr r3, _02250A5C ; =ov02_02253B30 - add r2, sp, #0 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - ldrh r0, [r4, #2] - add r0, r0, #1 - strh r0, [r4, #2] - ldrh r1, [r4, #2] - cmp r1, #0xa - blo _022509CE - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _02250A2C -_022509CE: - mov r0, #0xa - sub r0, r0, r1 - bl _dflt - add r3, r1, #0 - add r2, r0, #0 - ldr r1, _02250A50 ; =0x40A00000 - mov r0, #0 - bl _dmul - ldr r3, _02250A54 ; =0x40240000 - mov r2, #0 - bl _ddiv - add r3, r1, #0 - add r2, r0, #0 - ldr r1, _02250A58 ; =0x40B00000 - mov r0, #0 - bl _dadd - bl _dfix - str r0, [sp] - ldrh r1, [r4, #2] - mov r0, #0xa - sub r0, r0, r1 - bl _dflt - add r3, r1, #0 - add r2, r0, #0 - ldr r1, _02250A50 ; =0x40A00000 - mov r0, #0 - bl _dmul - ldr r3, _02250A54 ; =0x40240000 - mov r2, #0 - bl _ddiv - add r3, r1, #0 - add r2, r0, #0 - ldr r1, _02250A58 ; =0x40B00000 - mov r0, #0 - bl _dadd - bl _dfix - str r0, [sp, #4] -_02250A2C: - ldr r0, [r6, #0x3c] - bl ov01_021F771C - add r1, sp, #0 - bl sub_02023E78 - b _02250A44 -_02250A3A: - bl Heap_Free - add sp, #0x18 - mov r0, #1 - pop {r4, r5, r6, pc} -_02250A44: - mov r0, #0 - add sp, #0x18 - pop {r4, r5, r6, pc} - nop -_02250A4C: .word ov02_02253B24 -_02250A50: .word 0x40A00000 -_02250A54: .word 0x40240000 -_02250A58: .word 0x40B00000 -_02250A5C: .word ov02_02253B30 - thumb_func_end ov02_022508D8 - .rodata ov02_0225321C: @@ -23238,497 +1970,6 @@ ov02_02253264: ; 0x02253264 .word ov02_02253246 .short SEQ_SE_GS_IWA_TRAP .balign 4 -ov02_02253288: - .byte 0x1A, 0x1B, 0x00, 0x00 - -ov02_0225328C: - .byte 0x16, 0x17, 0x18, 0x19 - -ov02_02253290: ; 0x02253290 - .byte 0x02, 0x00, 0x00, 0x00 - -ov02_02253294: ; 0x02253294 - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - -ov02_022532A0: ; 0x022532A0 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x04, 0x00, 0x00, 0x00 - -ov02_022532B4: ; 0x022532B4 - .word 0x0A, ov02_022532EC - .word 0x05, ov02_022532DC - .word 0x07, ov02_022532E4 - .word 0x04, ov02_0225328C - .word 0x02, ov02_02253288 - -ov02_022532DC: - .byte 0x11, 0x12, 0x13, 0x14, 0x15, 0x00, 0x00, 0x00 - -ov02_022532E4: - .byte 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x00 - -ov02_022532EC: - .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x00 - -ov02_022532F8: - .word ov02_02248E10 - -ov02_022532FC: ; 0x022532FC - .byte 0x07, 0x00, 0x08, 0x00 - -ov02_02253300: - .word ov02_0224AC28 - -ov02_02253304: ; 0x02253304 - .byte 0x11, 0x00, 0x14, 0x00, 0x17, 0x00 - -ov02_0225330A: ; 0x0225330A - .byte 0x13, 0x00, 0x16, 0x00, 0x19, 0x00 - -ov02_02253310: ; 0x02253310 - .byte 0x12, 0x00, 0x15, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 - -ov02_02253320: ; 0x02253320 - .word ov02_022532F8, ov02_022534D0, 0x01, 0x0F - -ov02_02253330: - .word ov02_0224ACE0, ov02_0224ADEC, 0x00, 0x06 - .byte 0x01, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00 - -ov02_02253348: ; 0x02253348 - .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0x40, 0x05, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - -ov02_02253354: ; 0x02253354 - .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0x80, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 - -ov02_02253360: ; 0x02253360 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -ov02_0225336C: ; 0x0225336C - .byte 0x00, 0x14, 0x00, 0x00 - .byte 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -ov02_02253378: ; 0x02253378 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - -ov02_02253384: ; 0x02253384 - .byte 0x00, 0x80, 0x12, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 - -ov02_02253390: ; 0x02253390 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -ov02_0225339C: ; 0x0225339C - .byte 0x00, 0x00, 0x08, 0x00 - .byte 0x00, 0xF0, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 - -ov02_022533A8: ; 0x022533A8 - .byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - -ov02_022533B4: ; 0x022533B4 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -ov02_022533C0: ; 0x022533C0 - .word ov02_02253300 - .word ov02_02253330 - .word ov02_02253420 - -ov02_022533CC: ; 0x022533CC - .byte 0x00, 0x20, 0x00, 0x00 - .byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -ov02_022533D8: ; 0x022533D8 - .byte 0x00, 0x80, 0x08, 0x00, 0x00, 0xF0, 0x04, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - -ov02_022533E4: ; 0x022533E4 - .byte 0x00, 0x80, 0x08, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00 - -ov02_022533F0: ; 0x022533F0 - .byte 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -ov02_022533FC: ; 0x022533FC - .byte 0x00, 0x00, 0x08, 0x00 - .byte 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 - -ov02_02253408: ; 0x02253408 - .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - -ov02_02253414: ; 0x02253414 - .byte 0x00, 0x80, 0x12, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 - -ov02_02253420: - .word ov02_0224AF70, ov02_0224B0E0, ov02_0224B158, ov02_0224B294 - -ov02_02253430: ; 0x02253430 - .byte 0x00, 0xC0, 0xFF, 0xFF, 0x00, 0xA0, 0xFF, 0xFF, 0x00, 0x90, 0xFF, 0xFF, 0x00, 0x80, 0xFF, 0xFF - -ov02_02253440: ; 0x02253440 - .byte 0x08, 0x00, 0x00, 0x00 - .word ov02_0224B6D0 - .word sub_02068DD4 - .word ov02_0224B6E4 - .word sub_02068DD0 - -ov02_02253454: ; 0x02253454 - .byte 0x74, 0x00, 0x00, 0x00 - .word ov02_02248D98 - .word ov02_02248DE4 - .word ov02_02248DF0 - .word sub_02068DD0 - -ov02_02253468: ; 0x02253468 - .byte 0x24, 0x00, 0x00, 0x00 - .word ov02_0224AA80 - .word ov02_0224AAC8 - .word ov02_0224AAD4 - .word ov02_0224AB54 - -ov02_0225347C: ; 0x0225347C - .byte 0x68, 0x00, 0x00, 0x00 - .word ov02_0224ABCC - .word ov02_0224ABF8 - .word ov02_0224AC04 - .word ov02_0224AC24 - -ov02_02253490: ; 0x02253490 - .byte 0x0C, 0x00, 0x00, 0x00 - .word ov02_0224B7CC - .word ov02_0224B804 - .word ov02_0224B808 - .word ov02_0224B87C - -ov02_022534A4: ; 0x022534A4 - .byte 0x24, 0x00, 0x00, 0x00 - .word ov02_0224B350 - .word sub_02068DD4 - .word ov02_0224B3FC - .word sub_02068DD0 - -ov02_022534B8: ; 0x022534B8 - .word ov02_0224B494 - .word ov02_0224B4AC - .word ov02_0224B5F0 - .word ov02_0224B638 - .word ov02_0224B664 - .word ov02_0224B68C - -ov02_022534D0: - .word ov02_02248F88 - .word ov02_02249088 - .word ov02_022490BC - .word ov02_022491A8 - .word ov02_022491CC - .word ov02_02249290 - .word ov02_0224939C - .word ov02_022493EC - -ov02_022534F0: ; 0x022534F0 - .word ov02_022495D0 - .word ov02_02249A5C - .word ov02_0224B938 - .word ov02_0224B964 - .word ov02_02249AD8 - .word ov02_02249AF0 - .word ov02_02249B80 - .word ov02_02249BA8 - .word ov02_02249C74 - .word ov02_02249CD8 - .word ov02_02249954 - .word ov02_0224997C - -ov02_02253520: ; 0x02253520 - .byte 0x00, 0x40, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xC0, 0xFE, 0xFF, 0x00, 0x80, 0xFE, 0xFF - .byte 0x00, 0x60, 0xFE, 0xFF, 0x00, 0x40, 0xFE, 0xFF, 0x00, 0x40, 0xFE, 0xFF, 0x00, 0x40, 0xFE, 0xFF - .byte 0x00, 0x60, 0xFE, 0xFF, 0x00, 0x80, 0xFE, 0xFF, 0x00, 0xA0, 0xFE, 0xFF, 0x00, 0xC0, 0xFE, 0xFF - -ov02_02253550: ; 0x02253550 - .word ov02_022495B8 - .word ov02_022495E8 - .word ov02_02249658 - .word ov02_02249690 - .word ov02_022496D0 - .word ov02_02249754 - .word ov02_02249774 - .word ov02_022497C0 - .word ov02_02249838 - .word ov02_02249858 - .word ov02_022498BC - .word ov02_02249940 - .word ov02_02249968 - .word ov02_0224997C - -ov02_02253588: ; 0x02253588 - .word ov02_022495B8 - .word ov02_022499EC - .word ov02_02249658 - .word ov02_02249690 - .word ov02_022496D0 - .word ov02_02249754 - .word ov02_02249774 - .word ov02_022497C0 - .word ov02_02249838 - .word ov02_02249858 - .word ov02_02249AC4 - .word ov02_02249AD8 - .word ov02_02249AF0 - .word ov02_02249B10 - .word ov02_02249B38 - .word ov02_02249B60 - .word ov02_02249BA8 - .word ov02_02249BD8 - .word ov02_02249C74 - .word ov02_02249CD8 - .word ov02_02249940 - .word ov02_02249968 - .word ov02_0224997C - -ov02_022535E4: ; 0x022535E4 - .byte 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00 - .byte 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x04, 0x00, 0x00, 0x30, 0x04, 0x00 - .byte 0x00, 0x00, 0x01, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00 - .byte 0x00, 0xD0, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x0F, 0x00, 0x00, 0x50, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x85, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xE0, 0x04, 0x00, 0x00, 0x80, 0x01, 0x00 - .byte 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0xB0, 0x05, 0x00 - .byte 0x00, 0x00, 0x01, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00 - .byte 0x00, 0x60, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x00, 0x80, 0x03, 0x00, 0x00, 0x40, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x85, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x05, 0x00, 0x00, 0xD0, 0x06, 0x00, 0x00, 0x80, 0x01, 0x00 - .byte 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x09, 0x00, 0x00, 0x40, 0x06, 0x00 - .byte 0x00, 0x00, 0x01, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00 - .byte 0x00, 0xE0, 0x07, 0x00, 0x00, 0x80, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x00, 0xC0, 0x08, 0x00, 0x00, 0xD0, 0x07, 0x00, 0x00, 0x80, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x0D, 0x00, 0x00, 0xC0, 0x07, 0x00, 0x00, 0x80, 0x01, 0x00 - .byte 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - -ov02_022536E8: ; 0x022536E8 - .byte 0x21, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00 - -ov02_022536F0: ; 0x022536F0 - .word ov02_0224C234 - .word ov02_0224C2A8 - .word ov02_0224C2EC - .word ov02_0224C338 - -ov02_02253700: ; 0x02253700 - .word ov02_0224C05C - .word ov02_0224C0B0 - .word ov02_0224C14C - .word ov02_0224C1B8 - -ov02_02253710: ; 0x02253710 - .word ov02_0224C87C - .word ov02_0224C8D0 - .word ov02_0224C93C - .word ov02_0224C9B8 - .word ov02_0224CA38 - -ov02_02253724: ; 0x02253724 - .word ov02_0224C4B4 - .word ov02_0224C4D8 - .word ov02_0224C71C - .word ov02_0224C75C - .word ov02_0224C7D4 - .word ov02_0224C840 - -ov02_0225373C: ; 0x0225373C - .word ov02_0224C680 - .word ov02_0224C698 - .word ov02_0224C6DC - .word ov02_0224C75C - .word ov02_0224C7D4 - .word ov02_0224C840 - -ov02_02253754: ; 0x02253754 - .word ov02_0224C4B4 - .word ov02_0224C4D8 - .word ov02_0224C87C - .word ov02_0224C8D0 - .word ov02_0224C93C - .word ov02_0224C9B8 - .word ov02_0224CA38 - -ov02_02253770: ; 0x02253770 - .byte 0x01, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00 - .byte 0x00, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00 - .byte 0xFE, 0x00, 0x00, 0x00 - -ov02_02253794: ; 0x02253794 - .byte 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00 - .byte 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00 - .byte 0x02, 0x00, 0x01, 0x00, 0xFE, 0x00, 0x00, 0x00 - -ov02_022537B8: ; 0x022537B8 - .byte 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00 - .byte 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00 - .byte 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0xFE, 0x00, 0x00, 0x00 - -ov02_022537DC: ; 0x022537DC - .byte 0x01, 0x00, 0x01, 0x00 - .byte 0x3C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00 - .byte 0x3C, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00 - .byte 0x3C, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00 - .byte 0x3C, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00, 0xFE, 0x00, 0x00, 0x00 - -ov02_02253820: ; 0x02253820 - .byte 0x01, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00 - .byte 0x00, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00 - .byte 0x01, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00 - .byte 0x00, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00 - .byte 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00 - .byte 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00 - .byte 0xFE, 0x00, 0x00, 0x00 - -ov02_02253884: ; 0x02253884 - .byte 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00 - .byte 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00 - .byte 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00 - .byte 0x3C, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00 - .byte 0x3C, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00 - .byte 0x3C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x04, 0x00, 0x03, 0x00, 0x01, 0x00 - .byte 0x3C, 0x00, 0x05, 0x00, 0x01, 0x00, 0x01, 0x00, 0xFE, 0x00, 0x00, 0x00 - -ov02_022538EC: ; 0x022538EC - .byte 0x10, 0x0F, 0x0E, 0x0B - .byte 0x0C, 0x09, 0xB4, 0x00, 0x00, 0x00, 0x0E, 0x01, 0x5A, 0x00, 0x00, 0x00 - -ov02_022538FC: ; 0x022538FC - .byte 0x00, 0x04, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00 - .word ov02_0224D310 - .word ov02_0224D3A4 - .word ov02_0224D3B4 - .word ov02_0224D3E8 - -ov02_02253914: ; 0x02253914 - .byte 0x00, 0x04, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00 - .word ov02_0224D5B4 - .word ov02_0224D648 - .word ov02_0224D658 - .word ov02_0224D670 - -ov02_0225392C: ; 0x0225392C - .byte 0x00, 0x04, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00 - .word ov02_0224DAA4 - .word ov02_0224DB8C - .word ov02_0224DB9C - .word ov02_0224DC58 - -ov02_02253944: ; 0x02253944 - .byte 0x00, 0x04, 0x00, 0x00, 0xCC, 0x01, 0x00, 0x00 - .word ov02_0224D43C - .word ov02_0224D468 - .word ov02_0224D488 - .word ov02_0224D580 - -ov02_0225395C: ; 0x0225395C - .byte 0x00, 0x04, 0x00, 0x00, 0x10, 0x0D, 0x00, 0x00 - .word ov02_0224D880 - .word ov02_0224D914 - .word ov02_0224D950 - .word ov02_0224D98C - -ov02_02253974: ; 0x02253974 - .byte 0x00, 0x04, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00 - .word ov02_0224D1E4 - .word ov02_0224D278 - .word ov02_0224D288 - .word ov02_0224D2BC - -ov02_0225398C: ; 0x0225398C - .byte 0x00, 0x04, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00 - .word ov02_0224D358 - .word ov02_0224D3A4 - .word ov02_0224D3B4 - .word ov02_0224D3E8 - -ov02_022539A4: ; 0x022539A4 - .byte 0x00, 0x04, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00 - .word ov02_0224D9C0 - .word ov02_0224DB8C - .word ov02_0224DB9C - .word ov02_0224DC58 - -ov02_022539BC: ; 0x022539BC - .byte 0x00, 0x04, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00 - .word ov02_0224D22C - .word ov02_0224D278 - .word ov02_0224D288 - .word ov02_0224D2BC - -ov02_022539D4: ; 0x022539D4 - .byte 0x00, 0x04, 0x00, 0x00, 0x9C, 0x0E, 0x00, 0x00 - .word ov02_0224DCB0 - .word ov02_0224DD4C - .word ov02_0224DD8C - .word ov02_0224DDC8 - -ov02_022539EC: ; 0x022539EC - .byte 0x00, 0x04, 0x00, 0x00, 0x9C, 0x0E, 0x00, 0x00 - .word ov02_0224DD38 - .word ov02_0224DD4C - .word ov02_0224DD8C - .word ov02_0224DDC8 - -ov02_02253A04: ; 0x02253A04 - .word ov02_0224D2F0 - .word ov02_0224D41C - .word ov02_0224D41C - .word ov02_0224D2F0 - .word ov02_0224DC8C - .word ov02_0224DC8C - -ov02_02253A1C: ; 0x02253A1C - .word ov02_0224D2C8 - .word ov02_0224D3F4 - .word ov02_0224D408 - .word ov02_0224D2DC - .word ov02_0224DC64 - .word ov02_0224DC78 - -ov02_02253A34: ; 0x02253A34 - .word ov02_0224D2F8 - .word ov02_0224D424 - .word ov02_0224D424 - .word ov02_0224D2F8 - .word ov02_0224DC94 - .word ov02_0224DC94 - -ov02_02253A4C: ; 0x02253A4C - .byte 0xFF, 0x01, 0xFF, 0x01 - .byte 0x01, 0xFF, 0x00, 0x00 - -ov02_02253A54: ; 0x02253A54 - .byte 0x01, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00, 0x00 - -ov02_02253A5C: ; 0x02253A5C - .byte 0xB5, 0x00, 0x00, 0x00 - .byte 0xB6, 0x00, 0x00, 0x00, 0xB7, 0x00, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x00 - -ov02_02253A70: ; 0x02253A70 - .byte 0x49, 0x00, 0x01, 0x00, 0x30, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x4A, 0x00, 0x01, 0x00 - .byte 0xFE, 0x00, 0x00, 0x00, 0x49, 0x00, 0x01, 0x00, 0x31, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x01, 0x00 - .byte 0x4A, 0x00, 0x01, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x49, 0x00, 0x01, 0x00, 0x32, 0x00, 0x01, 0x00 - .byte 0x3E, 0x00, 0x01, 0x00, 0x4A, 0x00, 0x01, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x49, 0x00, 0x01, 0x00 - .byte 0x33, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x4A, 0x00, 0x01, 0x00, 0xFE, 0x00, 0x00, 0x00 - -ov02_02253AC0: ; 0x02253AC0 - .byte 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x06, 0x00, 0x00, 0x00 - -ov02_02253B24: ; 0x02253B24 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - -ov02_02253B30: ; 0x02253B30 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 .data @@ -23739,29 +1980,3 @@ ov02_02253D84: ; 0x02253D84 .word ov02_02253234 .word ov02_02253228 .word ov02_0225323A - -ov02_02253D90: ; 0x02253D90 - .byte 0x00, 0xB8, 0xFF, 0xFF - -ov02_02253D94: ; 0x02253D94 - .byte 0x00, 0xC0, 0x00, 0x00 - -ov02_02253D98: ; 0x02253D98 - .byte 0x00, 0xB8, 0xFF, 0xFF, 0x00, 0x48, 0x00, 0x00 - .byte 0x00, 0xC0, 0x00, 0x00, 0x00, 0xB8, 0xFF, 0xFF, 0x00, 0xB8, 0xFF, 0xFF, 0x00, 0xC0, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0xB8, 0xFF, 0xFF, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00 - .byte 0x00, 0xC0, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00 - -ov02_02253DD8: ; 0x02253DD8 - .byte 0x00, 0xB8, 0xFF, 0xFF - -ov02_02253DDC: ; 0x02253DDC - .byte 0x00, 0xC0, 0x00, 0x00 - -ov02_02253DE0: ; 0x02253DE0 - .byte 0x00, 0xB8, 0xFF, 0xFF, 0x00, 0x48, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xB8, 0xFF, 0xFF - .byte 0x00, 0xB8, 0xFF, 0xFF, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00 - .byte 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xFF, 0xFF, 0x00, 0xC0, 0x00, 0x00 - .byte 0x00, 0x48, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00 -_02253E20: diff --git a/asm/overlay_02_02248728.s b/asm/overlay_02_02248728.s new file mode 100644 index 0000000000..3a213bb5c6 --- /dev/null +++ b/asm/overlay_02_02248728.s @@ -0,0 +1,17995 @@ +#include "constants/abilities.h" +#include "constants/species.h" +#include "constants/sndseq.h" +#include "constants/items.h" +#include "constants/pokemon.h" +#include "constants/std_script.h" + .include "asm/macros.inc" + .include "overlay_02.inc" + .include "global.inc" + + .text + + thumb_func_start ov02_02248728 +ov02_02248728: ; 0x02248728 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r2, #0 + ldr r0, [sp, #0x1c] + add r7, r3, #0 + strb r6, [r5] + ldr r4, [sp, #0x18] + strb r7, [r5, #1] + strb r4, [r5, #2] + str r0, [sp, #0x1c] + strb r0, [r5, #3] + ldr r0, [sp, #0x20] + mov r2, #4 + strb r0, [r5, #4] + ldr r0, [sp, #0x24] + strb r0, [r5, #5] + ldr r0, [sp, #0x28] + strb r0, [r5, #6] + ldr r0, [sp, #0x2c] + strb r0, [r5, #7] + add r0, r1, #0 + add r1, r5, #0 + add r1, #0xc + bl G2dRenderer_Init + str r0, [r5, #8] + add r0, r5, #0 + mov r2, #2 + add r0, #0xc + mov r1, #0 + lsl r2, r2, #0x14 + bl G2dRenderer_SetSubSurfaceCoords + add r0, r6, #0 + mov r1, #0 + mov r2, #4 + bl Create2DGfxResObjMan + mov r1, #0x4d + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r7, #0 + mov r1, #1 + mov r2, #4 + bl Create2DGfxResObjMan + mov r1, #0x4e + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r4, #0 + mov r1, #2 + mov r2, #4 + bl Create2DGfxResObjMan + mov r1, #0x4f + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [sp, #0x1c] + mov r1, #3 + mov r2, #4 + bl Create2DGfxResObjMan + mov r1, #5 + lsl r1, r1, #6 + str r0, [r5, r1] + mov r0, #4 + lsl r1, r6, #3 + bl ov02_0224B690 + mov r1, #0x51 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #4 + lsl r1, r7, #3 + bl ov02_0224B690 + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #4 + lsl r1, r4, #3 + bl ov02_0224B690 + mov r1, #0x53 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r1, [sp, #0x1c] + mov r0, #4 + lsl r1, r1, #3 + bl ov02_0224B690 + mov r1, #0x15 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r1, #0 + cmp r6, #0 + ble _02248804 + ble _02248804 + ldr r0, [sp, #0x20] + add r2, r1, #0 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 +_022487F4: + mov r3, #0x51 + lsl r3, r3, #2 + ldr r3, [r5, r3] + add r1, r1, #1 + strh r0, [r3, r2] + add r2, #8 + cmp r1, r6 + blt _022487F4 +_02248804: + mov r3, #0 + cmp r7, #0 + ble _02248824 + ble _02248824 + ldr r0, [sp, #0x24] + mov r6, #0x52 + lsl r0, r0, #0x10 + add r2, r3, #0 + asr r1, r0, #0x10 + lsl r6, r6, #2 +_02248818: + ldr r0, [r5, r6] + add r3, r3, #1 + strh r1, [r0, r2] + add r2, #8 + cmp r3, r7 + blt _02248818 +_02248824: + mov r1, #0 + cmp r4, #0 + ble _02248844 + ble _02248844 + ldr r2, [sp, #0x28] + add r0, r1, #0 + lsl r2, r2, #0x10 + asr r6, r2, #0x10 + mov r2, #0x53 + lsl r2, r2, #2 +_02248838: + ldr r3, [r5, r2] + add r1, r1, #1 + strh r6, [r3, r0] + add r0, #8 + cmp r1, r4 + blt _02248838 +_02248844: + ldr r0, [sp, #0x1c] + mov r1, #0 + cmp r0, #0 + ble _02248868 + ble _02248868 + ldr r2, [sp, #0x2c] + mov r3, #0x15 + lsl r2, r2, #0x10 + add r0, r1, #0 + asr r4, r2, #0x10 + lsl r3, r3, #4 +_0224885A: + ldr r2, [r5, r3] + add r1, r1, #1 + strh r4, [r2, r0] + ldr r2, [sp, #0x1c] + add r0, #8 + cmp r1, r2 + blt _0224885A +_02248868: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end ov02_02248728 + + thumb_func_start ov02_0224886C +ov02_0224886C: ; 0x0224886C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldrb r0, [r5] + mov r6, #0 + cmp r0, #0 + ble _0224889C + add r4, r6, #0 + mov r7, #4 +_0224887C: + mov r0, #0x51 + lsl r0, r0, #2 + ldr r1, [r5, r0] + ldrsb r2, [r5, r7] + add r0, r1, r4 + ldrsh r1, [r1, r4] + cmp r2, r1 + beq _02248892 + ldr r0, [r0, #4] + bl sub_0200AEB0 +_02248892: + ldrb r0, [r5] + add r6, r6, #1 + add r4, #8 + cmp r6, r0 + blt _0224887C +_0224889C: + ldrb r0, [r5, #1] + mov r6, #0 + cmp r0, #0 + ble _022488C8 + add r4, r6, #0 + mov r7, #5 +_022488A8: + mov r0, #0x52 + lsl r0, r0, #2 + ldr r1, [r5, r0] + ldrsb r2, [r5, r7] + add r0, r1, r4 + ldrsh r1, [r1, r4] + cmp r2, r1 + beq _022488BE + ldr r0, [r0, #4] + bl sub_0200B0A8 +_022488BE: + ldrb r0, [r5, #1] + add r6, r6, #1 + add r4, #8 + cmp r6, r0 + blt _022488A8 +_022488C8: + ldrb r0, [r5, #2] + mov r6, #0 + cmp r0, #0 + ble _022488F4 + add r4, r6, #0 + mov r7, #6 +_022488D4: + mov r0, #0x53 + lsl r0, r0, #2 + ldr r1, [r5, r0] + ldrsb r2, [r5, r7] + add r0, r1, r4 + ldrsh r1, [r1, r4] + cmp r2, r1 + beq _022488EA + ldr r0, [r0, #4] + bl sub_0200A740 +_022488EA: + ldrb r0, [r5, #2] + add r6, r6, #1 + add r4, #8 + cmp r6, r0 + blt _022488D4 +_022488F4: + ldrb r0, [r5, #3] + mov r6, #0 + cmp r0, #0 + ble _02248920 + add r4, r6, #0 + mov r7, #7 +_02248900: + mov r0, #0x15 + lsl r0, r0, #4 + ldr r1, [r5, r0] + ldrsb r2, [r5, r7] + add r0, r1, r4 + ldrsh r1, [r1, r4] + cmp r2, r1 + beq _02248916 + ldr r0, [r0, #4] + bl sub_0200A740 +_02248916: + ldrb r0, [r5, #3] + add r6, r6, #1 + add r4, #8 + cmp r6, r0 + blt _02248900 +_02248920: + mov r0, #0x4d + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl Destroy2DGfxResObjMan + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl Destroy2DGfxResObjMan + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl Destroy2DGfxResObjMan + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r5, r0] + bl Destroy2DGfxResObjMan + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl Heap_Free + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl Heap_Free + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl Heap_Free + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl Heap_Free + ldr r0, [r5, #8] + bl SpriteList_DeleteAllSprites + ldr r0, [r5, #8] + bl SpriteList_Delete + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end ov02_0224886C + + thumb_func_start ov02_02248980 +ov02_02248980: ; 0x02248980 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + ldrb r5, [r6] + str r2, [sp, #0x10] + str r1, [sp, #0xc] + add r7, r3, #0 + mov r2, #0 + cmp r5, #0 + ble _022489E6 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r3, [r6, r0] + mov r0, #4 + ldrsb r4, [r6, r0] + mov ip, r3 + add r0, r2, #0 +_022489A2: + ldrsh r1, [r3, r0] + cmp r4, r1 + bne _022489DE + lsl r4, r2, #3 + mov r0, ip + strh r7, [r0, r4] + mov r0, #0x51 + lsl r0, r0, #2 + ldr r1, [r6, r0] + mov r3, #0 + add r1, r1, r4 + strh r3, [r1, #2] + str r7, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + sub r0, #0x10 + ldr r0, [r6, r0] + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + bl AddCharResObjFromOpenNarc + mov r1, #0x51 + lsl r1, r1, #2 + ldr r1, [r6, r1] + add sp, #0x14 + add r1, r1, r4 + str r0, [r1, #4] + pop {r4, r5, r6, r7, pc} +_022489DE: + add r2, r2, #1 + add r3, #8 + cmp r2, r5 + blt _022489A2 +_022489E6: + bl GF_AssertFail + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end ov02_02248980 + + thumb_func_start ov02_022489F0 +ov02_022489F0: ; 0x022489F0 + push {r4, r5, r6, lr} + ldrb r3, [r0] + mov r2, #0 + cmp r3, #0 + ble _02248A1E + mov r4, #0x51 + lsl r4, r4, #2 + ldr r0, [r0, r4] + add r4, r2, #0 + add r6, r0, #0 +_02248A04: + ldrsh r5, [r6, r4] + cmp r1, r5 + bne _02248A16 + lsl r1, r2, #3 + add r0, r0, r1 + ldr r0, [r0, #4] + bl sub_0200ADA4 + pop {r4, r5, r6, pc} +_02248A16: + add r2, r2, #1 + add r6, #8 + cmp r2, r3 + blt _02248A04 +_02248A1E: + bl GF_AssertFail + pop {r4, r5, r6, pc} + thumb_func_end ov02_022489F0 + + thumb_func_start ov02_02248A24 +ov02_02248A24: ; 0x02248A24 + push {r4, r5, r6, lr} + ldrb r3, [r0] + mov r2, #0 + cmp r3, #0 + ble _02248A52 + mov r4, #0x51 + lsl r4, r4, #2 + ldr r0, [r0, r4] + add r4, r2, #0 + add r6, r0, #0 +_02248A38: + ldrsh r5, [r6, r4] + cmp r1, r5 + bne _02248A4A + lsl r1, r2, #3 + add r0, r0, r1 + ldr r0, [r0, #4] + bl sub_0200A740 + pop {r4, r5, r6, pc} +_02248A4A: + add r2, r2, #1 + add r6, #8 + cmp r2, r3 + blt _02248A38 +_02248A52: + bl GF_AssertFail + pop {r4, r5, r6, pc} + thumb_func_end ov02_02248A24 + + thumb_func_start ov02_02248A58 +ov02_02248A58: ; 0x02248A58 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r0, #0 + ldrb r5, [r6] + str r2, [sp, #0x14] + str r1, [sp, #0x10] + add r7, r3, #0 + mov r2, #0 + cmp r5, #0 + ble _02248AC0 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r3, [r6, r0] + mov r0, #5 + ldrsb r4, [r6, r0] + mov ip, r3 + add r0, r2, #0 +_02248A7A: + ldrsh r1, [r3, r0] + cmp r4, r1 + bne _02248AB8 + lsl r4, r2, #3 + mov r0, ip + strh r7, [r0, r4] + mov r0, #0x52 + lsl r0, r0, #2 + ldr r1, [r6, r0] + mov r3, #0 + add r1, r1, r4 + strh r3, [r1, #2] + str r7, [sp] + mov r1, #1 + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #4 + str r1, [sp, #0xc] + sub r0, #0x10 + ldr r0, [r6, r0] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x14] + bl AddPlttResObjFromOpenNarc + mov r1, #0x52 + lsl r1, r1, #2 + ldr r1, [r6, r1] + add sp, #0x18 + add r1, r1, r4 + str r0, [r1, #4] + pop {r3, r4, r5, r6, r7, pc} +_02248AB8: + add r2, r2, #1 + add r3, #8 + cmp r2, r5 + blt _02248A7A +_02248AC0: + bl GF_AssertFail + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end ov02_02248A58 + + thumb_func_start ov02_02248AC8 +ov02_02248AC8: ; 0x02248AC8 + push {r4, r5, r6, lr} + ldrb r3, [r0, #1] + mov r2, #0 + cmp r3, #0 + ble _02248AF6 + mov r4, #0x52 + lsl r4, r4, #2 + ldr r0, [r0, r4] + add r4, r2, #0 + add r6, r0, #0 +_02248ADC: + ldrsh r5, [r6, r4] + cmp r1, r5 + bne _02248AEE + lsl r1, r2, #3 + add r0, r0, r1 + ldr r0, [r0, #4] + bl sub_0200B00C + pop {r4, r5, r6, pc} +_02248AEE: + add r2, r2, #1 + add r6, #8 + cmp r2, r3 + blt _02248ADC +_02248AF6: + bl GF_AssertFail + pop {r4, r5, r6, pc} + thumb_func_end ov02_02248AC8 + + thumb_func_start ov02_02248AFC +ov02_02248AFC: ; 0x02248AFC + push {r4, r5, r6, lr} + ldrb r3, [r0, #1] + mov r2, #0 + cmp r3, #0 + ble _02248B2A + mov r4, #0x52 + lsl r4, r4, #2 + ldr r0, [r0, r4] + add r4, r2, #0 + add r6, r0, #0 +_02248B10: + ldrsh r5, [r6, r4] + cmp r1, r5 + bne _02248B22 + lsl r1, r2, #3 + add r0, r0, r1 + ldr r0, [r0, #4] + bl sub_0200A740 + pop {r4, r5, r6, pc} +_02248B22: + add r2, r2, #1 + add r6, #8 + cmp r2, r3 + blt _02248B10 +_02248B2A: + bl GF_AssertFail + pop {r4, r5, r6, pc} + thumb_func_end ov02_02248AFC + + thumb_func_start ov02_02248B30 +ov02_02248B30: ; 0x02248B30 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + ldrb r5, [r6] + str r2, [sp, #0x10] + str r1, [sp, #0xc] + add r7, r3, #0 + mov r2, #0 + cmp r5, #0 + ble _02248B96 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r3, [r6, r0] + mov r0, #6 + ldrsb r4, [r6, r0] + mov ip, r3 + add r0, r2, #0 +_02248B52: + ldrsh r1, [r3, r0] + cmp r4, r1 + bne _02248B8E + lsl r4, r2, #3 + mov r0, ip + strh r7, [r0, r4] + mov r0, #0x53 + lsl r0, r0, #2 + ldr r1, [r6, r0] + mov r3, #0 + add r1, r1, r4 + strh r3, [r1, #2] + str r7, [sp] + mov r1, #2 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + sub r0, #0x10 + ldr r0, [r6, r0] + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + bl AddCellOrAnimResObjFromOpenNarc + mov r1, #0x53 + lsl r1, r1, #2 + ldr r1, [r6, r1] + add sp, #0x14 + add r1, r1, r4 + str r0, [r1, #4] + pop {r4, r5, r6, r7, pc} +_02248B8E: + add r2, r2, #1 + add r3, #8 + cmp r2, r5 + blt _02248B52 +_02248B96: + bl GF_AssertFail + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end ov02_02248B30 + + thumb_func_start ov02_02248BA0 +ov02_02248BA0: ; 0x02248BA0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + ldrb r5, [r6] + str r2, [sp, #0x10] + str r1, [sp, #0xc] + add r7, r3, #0 + mov r2, #0 + cmp r5, #0 + ble _02248C06 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r3, [r6, r0] + mov r0, #7 + ldrsb r4, [r6, r0] + mov ip, r3 + add r0, r2, #0 +_02248BC2: + ldrsh r1, [r3, r0] + cmp r4, r1 + bne _02248BFE + lsl r4, r2, #3 + mov r0, ip + strh r7, [r0, r4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r1, [r6, r0] + mov r3, #0 + add r1, r1, r4 + strh r3, [r1, #2] + str r7, [sp] + mov r1, #3 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + sub r0, #0x10 + ldr r0, [r6, r0] + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + bl AddCellOrAnimResObjFromOpenNarc + mov r1, #0x15 + lsl r1, r1, #4 + ldr r1, [r6, r1] + add sp, #0x14 + add r1, r1, r4 + str r0, [r1, #4] + pop {r4, r5, r6, r7, pc} +_02248BFE: + add r2, r2, #1 + add r3, #8 + cmp r2, r5 + blt _02248BC2 +_02248C06: + bl GF_AssertFail + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end ov02_02248BA0 + + thumb_func_start ov02_02248C10 +ov02_02248C10: ; 0x02248C10 + push {r4, r5, r6, lr} + sub sp, #0x70 + add r5, r0, #0 + add r4, r1, #0 + add r1, r2, #0 + mov r0, #7 + add r2, r3, #0 + ldrsb r3, [r5, r0] + ldr r6, [sp, #0x84] + cmp r6, r3 + bne _02248C2A + sub r0, #8 + str r0, [sp, #0x84] +_02248C2A: + ldr r0, [sp, #0x84] + mov r3, #0 + str r0, [sp] + mov r0, #0 + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [sp, #0x88] + str r3, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #0x4d + lsl r0, r0, #2 + ldr r6, [r5, r0] + str r6, [sp, #0x14] + add r6, r0, #4 + ldr r6, [r5, r6] + str r6, [sp, #0x18] + add r6, r0, #0 + add r6, #8 + ldr r6, [r5, r6] + add r0, #0xc + str r6, [sp, #0x1c] + ldr r0, [r5, r0] + str r0, [sp, #0x20] + str r3, [sp, #0x24] + str r3, [sp, #0x28] + ldr r3, [sp, #0x80] + add r0, sp, #0x4c + bl CreateSpriteResourcesHeader + ldr r0, [r5, #8] + add r2, sp, #0x34 + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + ldmia r4!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4] + str r0, [r2] + ldr r0, [sp, #0x8c] + str r0, [sp, #0x40] + mov r0, #1 + str r0, [sp, #0x44] + mov r0, #4 + str r0, [sp, #0x48] + add r0, sp, #0x2c + bl Sprite_Create + add r4, r0, #0 + bne _02248C92 + bl GF_AssertFail +_02248C92: + add r0, r4, #0 + add sp, #0x70 + pop {r4, r5, r6, pc} + thumb_func_end ov02_02248C10 + + thumb_func_start ov02_02248C98 +ov02_02248C98: ; 0x02248C98 + push {r4, lr} + add r4, r1, #0 + bl Sprite_GetMatrixPtr + add r2, r0, #0 + ldmia r2!, {r0, r1} + stmia r4!, {r0, r1} + ldr r0, [r2] + str r0, [r4] + pop {r4, pc} + thumb_func_end ov02_02248C98 + + thumb_func_start ov02_02248CAC +ov02_02248CAC: ; 0x02248CAC + push {r3, r4, r5, r6, lr} + sub sp, #0x34 + add r4, r0, #0 + mov r2, #0 + add r0, sp, #0x1c + str r2, [r0] + str r2, [r0, #4] + add r3, sp, #0x28 + str r2, [r3] + str r2, [r3, #4] + ldr r6, _02248D14 ; =ov02_02253360 + str r2, [r0, #8] + ldmia r6!, {r0, r1} + add r5, sp, #0x10 + stmia r5!, {r0, r1} + ldr r0, [r6] + str r2, [r3, #8] + str r0, [r5] + add r1, r3, #0 + str r2, [sp] + mov r0, #2 + str r0, [sp, #4] + str r2, [sp, #8] + mov r0, #0x84 + str r0, [sp, #0xc] + add r0, r4, #0 + add r3, r2, #0 + bl ov02_02248C10 + add r4, r0, #0 + mov r1, #2 + bl Sprite_SetAffineOverwriteMode + add r0, r4, #0 + add r1, sp, #0x1c + bl Sprite_SetAffineMatrix + add r0, r4, #0 + add r1, sp, #0x10 + bl Sprite_SetAffineScale + mov r0, #0 + bl GF_DegreeToSinCosIdx + add r1, r0, #0 + add r0, r4, #0 + bl Sprite_SetAffineZRotation + add r0, r4, #0 + add sp, #0x34 + pop {r3, r4, r5, r6, pc} + nop +_02248D14: .word ov02_02253360 + thumb_func_end ov02_02248CAC + + thumb_func_start ov02_02248D18 +ov02_02248D18: ; 0x02248D18 + push {r3, r4, lr} + sub sp, #0x1c + mov r3, #0 + add r2, sp, #0x10 + str r3, [r2] + str r3, [r2, #4] + str r3, [r2, #8] + cmp r1, #1 + bne _02248D2C + mov r3, #1 +_02248D2C: + mov r2, #2 + str r2, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + mov r1, #0x83 + str r1, [sp, #0xc] + add r1, sp, #0x10 + bl ov02_02248C10 + add r4, r0, #0 + mov r1, #0 + bl Sprite_SetDrawFlag + add r0, r4, #0 + mov r1, #6 + bl Sprite_SetAnimCtrlSeq + add r0, r4, #0 + add sp, #0x1c + pop {r3, r4, pc} + thumb_func_end ov02_02248D18 + + thumb_func_start ov02_02248D58 +ov02_02248D58: ; 0x02248D58 + push {r4, r5, lr} + sub sp, #0x24 + add r5, sp, #0x18 + mov r4, #0 + str r4, [r5] + str r4, [r5, #4] + str r0, [sp, #0xc] + str r2, [sp, #0x14] + str r3, [sp, #0x10] + str r4, [r5, #8] + str r1, [sp, #8] + add r0, sp, #8 + str r0, [sp] + mov r0, #0x82 + str r0, [sp, #4] + add r0, r1, #0 + ldr r1, _02248D88 ; =ov02_02253454 + add r2, r5, #0 + add r3, r4, #0 + bl sub_02068B0C + add sp, #0x24 + pop {r4, r5, pc} + nop +_02248D88: .word ov02_02253454 + thumb_func_end ov02_02248D58 + + thumb_func_start ov02_02248D8C +ov02_02248D8C: ; 0x02248D8C + push {r3, lr} + bl sub_02068D74 + ldrb r0, [r0, #2] + pop {r3, pc} + .balign 4, 0 + thumb_func_end ov02_02248D8C + + thumb_func_start ov02_02248D98 +ov02_02248D98: ; 0x02248D98 + push {r4, lr} + add r4, r1, #0 + bl sub_02068D98 + add r2, r4, #0 + add r3, r0, #0 + add r2, #0x58 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4, #0x64] + bl ov02_02248CAC + str r0, [r4, #0x68] + mov r0, #1 + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_02248D98 + + thumb_func_start ov02_02248DBC +ov02_02248DBC: ; 0x02248DBC + push {r3, r4, r5, lr} + add r5, r0, #0 + bl sub_02068D74 + add r4, r0, #0 + ldr r0, [r4, #0x6c] + cmp r0, #0 + beq _02248DD0 + bl sub_02068B48 +_02248DD0: + ldr r0, [r4, #0x70] + cmp r0, #0 + beq _02248DDA + bl ov01_021FCD78 +_02248DDA: + add r0, r5, #0 + bl sub_02068B48 + pop {r3, r4, r5, pc} + .balign 4, 0 + thumb_func_end ov02_02248DBC + + thumb_func_start ov02_02248DE4 +ov02_02248DE4: ; 0x02248DE4 + ldr r3, _02248DEC ; =Sprite_Delete + ldr r0, [r1, #0x68] + bx r3 + nop +_02248DEC: .word Sprite_Delete + thumb_func_end ov02_02248DE4 + + thumb_func_start ov02_02248DF0 +ov02_02248DF0: ; 0x02248DF0 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrb r0, [r5] + lsl r1, r0, #2 + ldr r0, _02248E0C ; =ov02_02253320 + ldr r4, [r0, r1] +_02248DFC: + ldrb r1, [r5, #1] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + blx r1 + cmp r0, #1 + beq _02248DFC + pop {r3, r4, r5, pc} + .balign 4, 0 +_02248E0C: .word ov02_02253320 + thumb_func_end ov02_02248DF0 + + thumb_func_start ov02_02248E10 +ov02_02248E10: ; 0x02248E10 + push {r3, lr} + mov r1, #0 + strb r1, [r0, #2] + ldr r0, [r0, #0x68] + bl Sprite_SetDrawFlag + mov r0, #0 + pop {r3, pc} + thumb_func_end ov02_02248E10 + + thumb_func_start ov02_02248E20 +ov02_02248E20: ; 0x02248E20 + push {r4, r5, r6, lr} + sub sp, #0x30 + ldr r4, _02248F74 ; =ov02_0225339C + add r2, r0, #0 + ldmia r4!, {r0, r1} + add r3, sp, #0x24 + stmia r3!, {r0, r1} + ldr r0, [r4] + ldr r4, _02248F78 ; =ov02_022533CC + str r0, [r3] + ldmia r4!, {r0, r1} + add r3, sp, #0x18 + stmia r3!, {r0, r1} + ldr r0, [r4] + str r0, [r3] + add r0, r2, #0 + bl sub_02068D74 + add r4, r0, #0 + mov r3, #1 + add r5, r4, #0 + strb r3, [r4] + mov r2, #0 + strb r2, [r4, #2] + strb r2, [r4, #1] + str r2, [r4, #4] + add r6, sp, #0x24 + ldmia r6!, {r0, r1} + add r5, #8 + stmia r5!, {r0, r1} + ldr r0, [r6] + str r0, [r5] + str r2, [r4, #0x14] + str r2, [r4, #0x18] + str r2, [r4, #0x1c] + ldr r0, _02248F7C ; =0x0015E000 + add r2, r4, #0 + add r5, sp, #0x18 + str r0, [r4, #0x38] + ldmia r5!, {r0, r1} + add r2, #0x2c + stmia r2!, {r0, r1} + ldr r0, [r5] + str r0, [r2] + lsl r0, r3, #0xa + str r0, [r4, #0x50] + mov r0, #0x2d + lsl r0, r0, #0xc + str r0, [r4, #0x40] + mov r0, #3 + lsl r0, r0, #0x12 + str r0, [r4, #0x48] + lsl r0, r3, #0x11 + str r0, [r4, #0x4c] + mov r0, #0x2d + bl GF_CosDeg + ldr r2, [r4, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r4, #0x14] + ldr r1, [r4, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl GF_SinDeg + ldr r2, [r4, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r4, #0x18] + ldr r1, [r4, #8] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [sp, #0x24] + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x18] + add r0, r1, r0 + str r0, [sp, #0x28] + ldr r0, [r4, #0x68] + add r1, sp, #0x24 + bl Sprite_SetMatrix + ldr r0, [r4, #0x68] + add r1, sp, #0x18 + bl Sprite_SetAffineScale + ldr r1, [r4, #0x38] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl GF_DegreeToSinCosIdx + add r1, r0, #0 + ldr r0, [r4, #0x68] + bl Sprite_SetAffineZRotation + ldr r0, [r4, #0x68] + mov r1, #0x84 + bl Sprite_SetDrawPriority + ldr r0, [r4, #0x68] + mov r1, #1 + bl Sprite_SetDrawFlag + ldr r0, [r4, #0x58] + ldr r1, [r4, #0x60] + bl ov02_0224B298 + str r0, [r4, #0x6c] + ldr r0, [r4, #0x5c] + mov r1, #4 + bl ov01_021FCD2C + ldr r2, _02248F80 ; =0xFFF88000 + mov r1, #1 + mov r3, #0xc + str r0, [r4, #0x70] + bl ov01_021FCD8C + add r1, sp, #0xc + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + ldr r3, _02248F84 ; =ov02_022533A8 + str r0, [r1, #8] + ldmia r3!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #2 + str r0, [r2] + ldr r4, [r4, #0x60] + add r0, r4, #0 + bl Sprite_SetAffineOverwriteMode + add r0, r4, #0 + add r1, sp, #0xc + bl Sprite_SetAffineMatrix + add r0, r4, #0 + add r1, sp, #0 + bl Sprite_SetAffineScale + mov r0, #0 + bl GF_DegreeToSinCosIdx + add r1, r0, #0 + add r0, r4, #0 + bl Sprite_SetAffineZRotation + add r0, r4, #0 + mov r1, #2 + bl Sprite_SetAnimCtrlSeq + bl ov02_022493FC + add sp, #0x30 + pop {r4, r5, r6, pc} + nop +_02248F74: .word ov02_0225339C +_02248F78: .word ov02_022533CC +_02248F7C: .word 0x0015E000 +_02248F80: .word 0xFFF88000 +_02248F84: .word ov02_022533A8 + thumb_func_end ov02_02248E20 + + thumb_func_start ov02_02248F88 +ov02_02248F88: ; 0x02248F88 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r1, [r5, #0x48] + ldr r0, [r5, #0x4c] + ldr r6, [r5, #0x68] + ldr r4, [r5, #0x60] + sub r0, r1, r0 + str r0, [r5, #0x48] + bpl _02248FA0 + mov r0, #0 + str r0, [r5, #0x48] +_02248FA0: + mov r0, #2 + ldr r1, [r5, #0x4c] + lsl r0, r0, #0xa + cmp r1, r0 + ble _02248FB2 + mov r0, #7 + lsl r0, r0, #0xa + sub r0, r1, r0 + str r0, [r5, #0x4c] +_02248FB2: + mov r0, #1 + ldr r1, [r5, #0x4c] + lsl r0, r0, #0xc + cmp r1, r0 + bge _02248FBE + str r0, [r5, #0x4c] +_02248FBE: + mov r0, #0x2d + bl GF_CosDeg + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x14] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl GF_SinDeg + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x18] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + cmp r0, #0x5a + bge _02249006 + mov r0, #1 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [r5, #0x40] +_02249006: + ldr r1, [r5, #0x2c] + ldr r0, [r5, #0x50] + sub r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xc + str r1, [r5, #0x2c] + cmp r1, r0 + bge _02249018 + str r0, [r5, #0x2c] +_02249018: + ldr r1, [r5, #0x30] + ldr r0, [r5, #0x50] + sub r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xc + str r1, [r5, #0x30] + cmp r1, r0 + bge _0224902A + str r0, [r5, #0x30] +_0224902A: + add r1, r5, #0 + add r0, r6, #0 + add r1, #0x2c + bl Sprite_SetAffineScale + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x2c + bl Sprite_SetAffineScale + ldr r1, [r5, #8] + ldr r0, [r5, #0x14] + add r0, r1, r0 + str r0, [sp] + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x18] + add r0, r1, r0 + str r0, [sp, #4] + add r0, r6, #0 + add r1, sp, #0 + bl Sprite_SetMatrix + mov r0, #0x12 + ldr r1, [sp, #4] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0 + bl Sprite_SetMatrix + ldr r0, [r5, #0x48] + cmp r0, #0 + bne _0224907A + mov r0, #0 + str r0, [r5, #4] + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] + b _02249080 +_0224907A: + ldr r0, [r5, #4] + add r0, r0, #1 + str r0, [r5, #4] +_02249080: + mov r0, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .balign 4, 0 + thumb_func_end ov02_02248F88 + + thumb_func_start ov02_02249088 +ov02_02249088: ; 0x02249088 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x6c] + bl ov02_0224B314 + ldr r0, [r4, #0x70] + mov r1, #2 + mov r2, #0 + mov r3, #0xc + bl ov01_021FCD8C + mov r0, #1 + lsl r0, r0, #0xa + str r0, [r4, #0x50] + lsl r0, r0, #9 + str r0, [r4, #0x40] + mov r0, #0 + str r0, [r4, #0x48] + mov r0, #6 + lsl r0, r0, #0xa + str r0, [r4, #0x4c] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + mov r0, #1 + pop {r4, pc} + thumb_func_end ov02_02249088 + + thumb_func_start ov02_022490BC +ov02_022490BC: ; 0x022490BC + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r1, [r5, #0x48] + ldr r0, [r5, #0x4c] + ldr r4, [r5, #0x68] + add r0, r1, r0 + str r0, [r5, #0x48] + mov r0, #1 + ldr r1, [r5, #0x4c] + lsl r0, r0, #0xc + add r2, r1, r0 + lsl r1, r0, #4 + str r2, [r5, #0x4c] + cmp r2, r1 + ble _022490E0 + lsl r0, r0, #4 + str r0, [r5, #0x4c] +_022490E0: + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl GF_CosDeg + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x14] + mov r0, #0x80 + bl GF_SinDeg + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x18] + mov r0, #0xa + ldr r1, [r5, #0x40] + lsl r0, r0, #0x10 + cmp r1, r0 + bge _02249124 + mov r0, #1 + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [r5, #0x40] +_02249124: + mov r0, #2 + ldr r1, [r5, #0x38] + lsl r0, r0, #0xc + add r1, r1, r0 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + str r1, [r5, #0x38] + bl GF_DegreeToSinCosIdx + add r1, r0, #0 + add r0, r4, #0 + bl Sprite_SetAffineZRotation + ldr r1, [r5, #0x2c] + ldr r0, [r5, #0x50] + add r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xc + str r1, [r5, #0x2c] + cmp r1, r0 + ble _02249156 + str r0, [r5, #0x2c] +_02249156: + ldr r1, [r5, #0x30] + ldr r0, [r5, #0x50] + add r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xc + str r1, [r5, #0x30] + cmp r1, r0 + ble _02249168 + str r0, [r5, #0x30] +_02249168: + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x2c + bl Sprite_SetAffineScale + ldr r1, [r5, #8] + ldr r0, [r5, #0x14] + add r0, r1, r0 + str r0, [sp] + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x18] + sub r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0 + bl Sprite_SetMatrix + ldr r1, [sp, #4] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r1, r0, #0xc + mov r0, #0xf + mvn r0, r0 + cmp r1, r0 + bgt _022491A2 + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] +_022491A2: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + thumb_func_end ov02_022490BC + + thumb_func_start ov02_022491A8 +ov02_022491A8: ; 0x022491A8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x68] + mov r1, #0 + bl Sprite_SetDrawFlag + ldr r0, [r4, #0x60] + mov r1, #1 + bl Sprite_SetAnimCtrlSeq + mov r0, #0 + str r0, [r4, #4] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + mov r0, #1 + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_022491A8 + + thumb_func_start ov02_022491CC +ov02_022491CC: ; 0x022491CC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r0, #0 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #0x14 + bge _022491E2 + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_022491E2: + ldr r3, _02249284 ; =ov02_022533D8 + add r2, sp, #0xc + ldmia r3!, {r0, r1} + add r6, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r3, _02249288 ; =ov02_022533B4 + str r0, [r2] + add r2, sp, #0 + ldmia r3!, {r0, r1} + add r5, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r7, #0 + str r0, [r2] + add r2, r4, #0 + str r7, [r4, #4] + add r3, r6, #0 + ldmia r3!, {r0, r1} + add r2, #8 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + str r7, [r4, #0x14] + str r7, [r4, #0x18] + str r7, [r4, #0x1c] + str r7, [r4, #0x38] + add r2, r4, #0 + ldmia r5!, {r0, r1} + add r2, #0x2c + stmia r2!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r2] + lsl r1, r1, #8 + ldr r0, _0224928C ; =0x0013B000 + str r1, [r4, #0x50] + str r0, [r4, #0x40] + lsl r0, r1, #0xa + str r0, [r4, #0x48] + lsl r0, r1, #4 + str r0, [r4, #0x4c] + ldr r0, [r4, #0x68] + add r1, r6, #0 + bl Sprite_SetMatrix + ldr r0, [r4, #0x68] + add r1, sp, #0 + bl Sprite_SetAffineScale + ldr r1, [r4, #0x38] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl GF_DegreeToSinCosIdx + add r1, r0, #0 + ldr r0, [r4, #0x68] + bl Sprite_SetAffineZRotation + ldr r0, [r4, #0x68] + mov r1, #1 + bl Sprite_SetDrawFlag + ldr r0, [r4, #0x60] + mov r1, #6 + bl Sprite_SetAnimCtrlSeq + ldr r0, [r4, #0x60] + mov r1, #1 + bl Sprite_SetAnimActiveFlag + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + mov r0, #1 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02249284: .word ov02_022533D8 +_02249288: .word ov02_022533B4 +_0224928C: .word 0x0013B000 + thumb_func_end ov02_022491CC + + thumb_func_start ov02_02249290 +ov02_02249290: ; 0x02249290 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r1, [r5, #0x48] + ldr r0, [r5, #0x4c] + ldr r4, [r5, #0x68] + sub r0, r1, r0 + str r0, [r5, #0x48] + mov r0, #1 + ldr r1, [r5, #0x4c] + lsl r0, r0, #0x10 + cmp r1, r0 + bge _022492B0 + lsr r0, r0, #3 + add r0, r1, r0 + str r0, [r5, #0x4c] +_022492B0: + ldr r0, [r5, #0x48] + cmp r0, #0 + bge _022492BA + mov r0, #0 + str r0, [r5, #0x48] +_022492BA: + ldr r0, _02249398 ; =0x0000013B + bl GF_CosDeg + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x14] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl GF_SinDeg + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x18] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + cmp r0, #0xb4 + bge _02249302 + mov r0, #1 + lsl r0, r0, #0xe + sub r0, r1, r0 + str r0, [r5, #0x40] +_02249302: + ldr r1, [r5, #0x2c] + ldr r0, [r5, #0x50] + sub r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xa + str r1, [r5, #0x2c] + cmp r1, r0 + bge _02249314 + str r0, [r5, #0x2c] +_02249314: + ldr r1, [r5, #0x30] + ldr r0, [r5, #0x50] + sub r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xa + str r1, [r5, #0x30] + cmp r1, r0 + bge _02249326 + str r0, [r5, #0x30] +_02249326: + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x2c + bl Sprite_SetAffineScale + mov r0, #6 + ldr r1, [r5, #0x38] + lsl r0, r0, #0xc + add r1, r1, r0 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + str r1, [r5, #0x38] + cmp r0, #0x3c + ble _0224934C + mov r0, #0xf + lsl r0, r0, #0xe + str r0, [r5, #0x38] +_0224934C: + ldr r1, [r5, #0x38] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl GF_DegreeToSinCosIdx + add r1, r0, #0 + add r0, r4, #0 + bl Sprite_SetAffineZRotation + ldr r1, [r5, #8] + ldr r0, [r5, #0x14] + add r0, r1, r0 + str r0, [sp] + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x18] + add r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0 + bl Sprite_SetMatrix + ldr r0, [r5, #0x48] + cmp r0, #0 + bgt _02249390 + add r0, r4, #0 + mov r1, #0 + bl Sprite_SetDrawFlag + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] +_02249390: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_02249398: .word 0x0000013B + thumb_func_end ov02_02249290 + + thumb_func_start ov02_0224939C +ov02_0224939C: ; 0x0224939C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #8 + bne _022493BA + ldr r0, [r4, #0x60] + mov r1, #1 + bl Sprite_SetAnimCtrlSeq + ldr r0, [r4, #0x5c] + mov r1, #0 + bl ov02_02249444 +_022493BA: + ldr r0, [r4, #4] + cmp r0, #0xa + bne _022493C8 + ldr r0, [r4, #0x60] + mov r1, #0 + bl Sprite_SetDrawFlag +_022493C8: + ldr r0, [r4, #4] + cmp r0, #0xf + ble _022493E6 + ldr r0, [r4, #0x70] + bl ov01_021FCD6C + cmp r0, #1 + bne _022493E6 + mov r0, #0 + str r0, [r4, #4] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + mov r0, #2 + strb r0, [r4, #2] +_022493E6: + mov r0, #0 + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_0224939C + + thumb_func_start ov02_022493EC +ov02_022493EC: ; 0x022493EC + mov r0, #0 + bx lr + thumb_func_end ov02_022493EC + + thumb_func_start ov02_022493F0 +ov02_022493F0: ; 0x022493F0 + ldr r3, _022493F8 ; =NARC_New + mov r0, #0x5d + mov r1, #4 + bx r3 + .balign 4, 0 +_022493F8: .word NARC_New + thumb_func_end ov02_022493F0 + + thumb_func_start ov02_022493FC +ov02_022493FC: ; 0x022493FC + push {lr} + sub sp, #0xc + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r3, _0224941C ; =0x00007FFF + mov r0, #0 + add r2, r1, #0 + bl BeginNormalPaletteFade + add sp, #0xc + pop {pc} + nop +_0224941C: .word 0x00007FFF + thumb_func_end ov02_022493FC + + thumb_func_start ov02_02249420 +ov02_02249420: ; 0x02249420 + push {lr} + sub sp, #0xc + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0 + ldr r3, _02249440 ; =0x00007FFF + add r1, r0, #0 + add r2, r0, #0 + bl BeginNormalPaletteFade + add sp, #0xc + pop {pc} + .balign 4, 0 +_02249440: .word 0x00007FFF + thumb_func_end ov02_02249420 + + thumb_func_start ov02_02249444 +ov02_02249444: ; 0x02249444 + push {r4, lr} + ldr r0, [r0, #0x40] + add r4, r1, #0 + bl PlayerAvatar_GetMapObject + add r1, r4, #0 + bl MapObject_SetVisible + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_02249444 + + thumb_func_start ov02_02249458 +ov02_02249458: ; 0x02249458 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + add r5, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl ov02_0224955C + add r4, r0, #0 + str r6, [r4, #0x5c] + strh r7, [r4, #0xc] + ldrh r0, [r4, #0xc] + strh r0, [r4, #0xe] + str r5, [r4, #0x20] + ldr r0, [r4, #0x60] + ldr r0, [r0, #0x40] + bl PlayerAvatar_GetMapObject + mov r1, #0x82 + lsl r1, r1, #2 + str r0, [r4, r1] + cmp r5, #0 + bne _02249490 + ldr r0, _022494B8 ; =ov02_02249584 + add r1, r4, #0 + mov r2, #0x86 + bl SysTask_CreateOnMainQueue + pop {r3, r4, r5, r6, r7, pc} +_02249490: + cmp r5, #2 + bne _022494AC + ldr r0, [sp] + bl FollowMon_GetMapObject + mov r1, #0x83 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, _022494BC ; =ov02_022499B8 + add r1, r4, #0 + mov r2, #0x86 + bl SysTask_CreateOnMainQueue + pop {r3, r4, r5, r6, r7, pc} +_022494AC: + ldr r0, _022494C0 ; =ov02_02249984 + add r1, r4, #0 + mov r2, #0x86 + bl SysTask_CreateOnMainQueue + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_022494B8: .word ov02_02249584 +_022494BC: .word ov02_022499B8 +_022494C0: .word ov02_02249984 + thumb_func_end ov02_02249458 + + thumb_func_start ov02_022494C4 +ov02_022494C4: ; 0x022494C4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl ov02_0224955C + add r4, r0, #0 + str r5, [r4, #0x5c] + mov r0, #0 + strh r0, [r4, #0xc] + mov r0, #2 + strh r0, [r4, #0xe] + mov r0, #3 + str r0, [r4, #0x20] + mov r0, #0x82 + lsl r0, r0, #2 + str r6, [r4, r0] + add r0, r0, #4 + str r7, [r4, r0] + ldr r0, [r4, #0x60] + ldr r0, [r0, #0x40] + bl PlayerAvatar_GetMapObject + add r1, sp, #0xc + bl MapObject_CopyPositionVector + mov r0, #0x82 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0 + bl MapObject_CopyPositionVector + ldr r1, [sp] + ldr r0, [sp, #0xc] + sub r0, r1, r0 + mov r1, #2 + lsl r1, r1, #0xc + bl FX_Div + mov r1, #0xbb + lsl r1, r1, #2 + ldr r2, [r4, r1] + add r0, r2, r0 + str r0, [r4, r1] + ldr r2, [sp, #8] + ldr r0, [sp, #0x14] + add r1, #8 + sub r0, r2, r0 + str r0, [r4, r1] + ldr r0, _02249538 ; =ov02_022499B8 + add r1, r4, #0 + mov r2, #0x86 + bl SysTask_CreateOnMainQueue + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02249538: .word ov02_022499B8 + thumb_func_end ov02_022494C4 + + thumb_func_start ov02_0224953C +ov02_0224953C: ; 0x0224953C + push {r3, lr} + bl SysTask_GetData + ldr r0, [r0, #4] + pop {r3, pc} + .balign 4, 0 + thumb_func_end ov02_0224953C + + thumb_func_start ov02_02249548 +ov02_02249548: ; 0x02249548 + push {r4, lr} + add r4, r0, #0 + bl SysTask_GetData + bl ov02_0224957C + add r0, r4, #0 + bl SysTask_Destroy + pop {r4, pc} + thumb_func_end ov02_02249548 + + thumb_func_start ov02_0224955C +ov02_0224955C: ; 0x0224955C + push {r3, r4, r5, lr} + mov r1, #0xbe + add r5, r0, #0 + mov r0, #4 + lsl r1, r1, #2 + bl Heap_AllocAtEnd + mov r2, #0xbe + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl memset + str r5, [r4, #0x60] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end ov02_0224955C + + thumb_func_start ov02_0224957C +ov02_0224957C: ; 0x0224957C + ldr r3, _02249580 ; =Heap_Free + bx r3 + .balign 4, 0 +_02249580: .word Heap_Free + thumb_func_end ov02_0224957C + + thumb_func_start ov02_02249584 +ov02_02249584: ; 0x02249584 + push {r3, r4, r5, lr} + ldr r4, _022495B4 ; =ov02_02253550 + add r5, r1, #0 +_0224958A: + ldr r1, [r5] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + blx r1 + cmp r0, #1 + beq _0224958A + ldr r0, [r5, #0x10] + cmp r0, #1 + bne _022495B2 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + beq _022495AC + bl sub_02068BAC +_022495AC: + add r0, r5, #0 + bl ov02_0224A32C +_022495B2: + pop {r3, r4, r5, pc} + .balign 4, 0 +_022495B4: .word ov02_02253550 + thumb_func_end ov02_02249584 + + thumb_func_start ov02_022495B8 +ov02_022495B8: ; 0x022495B8 + push {r4, lr} + add r4, r0, #0 + bl ov02_02249EC0 + add r0, r4, #0 + bl ov02_02249CF0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + thumb_func_end ov02_022495B8 + + thumb_func_start ov02_022495D0 +ov02_022495D0: ; 0x022495D0 + push {r4, lr} + add r4, r0, #0 + bl ov02_02249F6C + add r0, r4, #0 + bl ov02_02249CF0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + thumb_func_end ov02_022495D0 + + thumb_func_start ov02_022495E8 +ov02_022495E8: ; 0x022495E8 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x85 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _022495FE + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, pc} +_022495FE: + ldr r5, _02249650 ; =ov02_02253408 + add r3, sp, #0xc + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r5, _02249654 ; =ov02_02253384 + str r0, [r3] + ldmia r5!, {r0, r1} + add r3, sp, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, r2, #0 + str r0, [r3] + add r0, r4, #0 + bl ov02_0224A418 + mov r1, #0x79 + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + add r1, sp, #0 + bl ov02_0224A9B8 + mov r1, #0x7a + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + mov r1, #1 + bl ov02_0224A9D8 + add r0, r4, #0 + bl ov02_02249D40 + mov r0, #1 + str r0, [r4, #0x10] + ldr r1, [r4] + add r1, r1, #1 + str r1, [r4] + add sp, #0x18 + pop {r3, r4, r5, pc} + .balign 4, 0 +_02249650: .word ov02_02253408 +_02249654: .word ov02_02253384 + thumb_func_end ov02_022495E8 + + thumb_func_start ov02_02249658 +ov02_02249658: ; 0x02249658 + push {r4, lr} + add r4, r0, #0 + bl ov02_0224B72C + mov r0, #0 + ldr r1, _0224968C ; =0xFFFC0000 + str r0, [r4, #0x2c] + str r1, [r4, #0x54] + mov r1, #0xfe + lsl r1, r1, #0xc + str r1, [r4, #0x44] + mov r1, #0xff + lsl r1, r1, #0xc + str r1, [r4, #0x48] + mov r1, #0x5f + lsl r1, r1, #0xc + str r1, [r4, #0x4c] + mov r1, #0x61 + lsl r1, r1, #0xc + str r1, [r4, #0x50] + mov r1, #1 + str r1, [r4, #0x2c] + ldr r1, [r4] + add r1, r1, #1 + str r1, [r4] + pop {r4, pc} + .balign 4, 0 +_0224968C: .word 0xFFFC0000 + thumb_func_end ov02_02249658 + + thumb_func_start ov02_02249690 +ov02_02249690: ; 0x02249690 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r2, #0 + str r2, [r4, #0x2c] + ldr r1, [r4, #0x44] + ldr r0, [r4, #0x54] + add r0, r1, r0 + str r0, [r4, #0x44] + cmp r0, #0 + bgt _022496B4 + mov r0, #2 + str r2, [r4, #0x44] + lsl r0, r0, #0xc + str r0, [r4, #0x54] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_022496B4: + ldr r0, [r4, #0x50] + str r0, [sp] + ldr r1, [r4, #0x44] + ldr r2, [r4, #0x4c] + ldr r3, [r4, #0x48] + add r0, r4, #0 + bl ov02_0224A69C + mov r0, #1 + str r0, [r4, #0x2c] + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + .balign 4, 0 + thumb_func_end ov02_02249690 + + thumb_func_start ov02_022496D0 +ov02_022496D0: ; 0x022496D0 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0 + str r0, [r4, #0x2c] + ldr r1, [r4, #0x4c] + ldr r0, [r4, #0x54] + sub r0, r1, r0 + str r0, [r4, #0x4c] + ldr r1, [r4, #0x50] + ldr r0, [r4, #0x54] + add r0, r1, r0 + str r0, [r4, #0x50] + mov r0, #2 + ldr r1, [r4, #0x54] + lsl r0, r0, #0xc + add r2, r1, r0 + lsl r1, r0, #4 + str r2, [r4, #0x54] + cmp r2, r1 + ble _022496FE + lsl r0, r0, #4 + str r0, [r4, #0x54] +_022496FE: + mov r0, #0xe + ldr r1, [r4, #0x4c] + lsl r0, r0, #0xe + cmp r1, r0 + bge _0224970A + str r0, [r4, #0x4c] +_0224970A: + mov r0, #0x22 + ldr r1, [r4, #0x50] + lsl r0, r0, #0xe + cmp r1, r0 + ble _02249716 + str r0, [r4, #0x50] +_02249716: + ldr r0, [r4, #0x50] + str r0, [sp] + ldr r1, [r4, #0x44] + ldr r2, [r4, #0x4c] + ldr r3, [r4, #0x48] + add r0, r4, #0 + bl ov02_0224A69C + mov r0, #1 + str r0, [r4, #0x2c] + mov r0, #0xe + ldr r1, [r4, #0x4c] + lsl r0, r0, #0xe + cmp r1, r0 + bne _0224974E + mov r0, #0x22 + ldr r1, [r4, #0x50] + lsl r0, r0, #0xe + cmp r1, r0 + bne _0224974E + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl ov02_0224A450 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_0224974E: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + thumb_func_end ov02_022496D0 + + thumb_func_start ov02_02249754 +ov02_02249754: ; 0x02249754 + ldr r1, [r0, #8] + add r1, r1, #1 + str r1, [r0, #8] + cmp r1, #0xf + blt _0224976C + mov r1, #0 + str r1, [r0, #8] + ldr r1, _02249770 ; =0xFFFC0000 + str r1, [r0, #0x58] + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] +_0224976C: + mov r0, #0 + bx lr + .balign 4, 0 +_02249770: .word 0xFFFC0000 + thumb_func_end ov02_02249754 + + thumb_func_start ov02_02249774 +ov02_02249774: ; 0x02249774 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl Sprite_GetMatrixPtr + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r1, [sp] + ldr r0, [r4, #0x58] + add r1, r1, r0 + mov r0, #0xa + lsl r0, r0, #0x10 + str r1, [sp] + cmp r1, r0 + bgt _022497AC + mov r0, #3 + lsl r0, r0, #0x12 + str r0, [sp] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_022497AC: + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0 + bl Sprite_SetMatrix + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + .balign 4, 0 + thumb_func_end ov02_02249774 + + thumb_func_start ov02_022497C0 +ov02_022497C0: ; 0x022497C0 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r1, [r4, #0x58] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r1, r0, #1 + ldr r0, _02249834 ; =0xFFFFE000 + str r1, [r4, #0x58] + cmp r1, r0 + ble _02249802 + str r0, [r4, #0x58] + ldr r0, [r4] + mov r1, #5 + add r0, r0, #1 + str r0, [r4] + ldr r0, [r4, #0x5c] + mov r2, #0 + bl GetMonData + add r5, r0, #0 + ldr r0, [r4, #0x5c] + mov r1, #0x70 + mov r2, #0 + bl GetMonData + add r1, r0, #0 + lsl r0, r5, #0x10 + lsl r1, r1, #0x18 + lsr r0, r0, #0x10 + lsr r1, r1, #0x18 + bl PlayCry +_02249802: + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl Sprite_GetMatrixPtr + add r5, r0, #0 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + ldr r1, [sp] + ldr r0, [r4, #0x58] + add r0, r1, r0 + str r0, [sp] + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r2, #0 + bl Sprite_SetMatrix + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .balign 4, 0 +_02249834: .word 0xFFFFE000 + thumb_func_end ov02_022497C0 + + thumb_func_start ov02_02249838 +ov02_02249838: ; 0x02249838 + ldr r1, [r0, #8] + add r1, r1, #1 + str r1, [r0, #8] + cmp r1, #8 + blt _02249850 + mov r1, #0 + str r1, [r0, #8] + ldr r1, _02249854 ; =0xFFFFF000 + str r1, [r0, #0x58] + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] +_02249850: + mov r0, #0 + bx lr + .balign 4, 0 +_02249854: .word 0xFFFFF000 + thumb_func_end ov02_02249838 + + thumb_func_start ov02_02249858 +ov02_02249858: ; 0x02249858 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #0x58] + lsl r1, r0, #1 + ldr r0, _022498B4 ; =0xFFFC0000 + str r1, [r4, #0x58] + cmp r1, r0 + bge _0224986C + str r0, [r4, #0x58] +_0224986C: + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl Sprite_GetMatrixPtr + add r5, r0, #0 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + ldr r1, [sp] + ldr r0, [r4, #0x58] + add r0, r1, r0 + str r0, [sp] + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r2, #0 + bl Sprite_SetMatrix + ldr r1, [sp] + ldr r0, _022498B8 ; =0xFFFD8000 + cmp r1, r0 + bgt _022498AC + mov r0, #1 + lsl r0, r0, #0xc + str r0, [r4, #0x54] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_022498AC: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_022498B4: .word 0xFFFC0000 +_022498B8: .word 0xFFFD8000 + thumb_func_end ov02_02249858 + + thumb_func_start ov02_022498BC +ov02_022498BC: ; 0x022498BC + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0 + str r0, [r4, #0x2c] + ldr r1, [r4, #0x4c] + ldr r0, [r4, #0x54] + add r0, r1, r0 + str r0, [r4, #0x4c] + ldr r1, [r4, #0x50] + ldr r0, [r4, #0x54] + sub r0, r1, r0 + str r0, [r4, #0x50] + mov r0, #1 + ldr r1, [r4, #0x54] + lsl r0, r0, #0xe + add r2, r1, r0 + lsl r1, r0, #2 + str r2, [r4, #0x54] + cmp r2, r1 + ble _022498EA + lsl r0, r0, #2 + str r0, [r4, #0x54] +_022498EA: + mov r0, #0x5f + ldr r1, [r4, #0x4c] + lsl r0, r0, #0xc + cmp r1, r0 + blt _022498F6 + str r0, [r4, #0x4c] +_022498F6: + mov r0, #0x61 + ldr r1, [r4, #0x50] + lsl r0, r0, #0xc + cmp r1, r0 + bgt _02249902 + str r0, [r4, #0x50] +_02249902: + ldr r0, [r4, #0x50] + str r0, [sp] + ldr r1, [r4, #0x44] + ldr r2, [r4, #0x4c] + ldr r3, [r4, #0x48] + add r0, r4, #0 + bl ov02_0224A69C + mov r0, #1 + str r0, [r4, #0x2c] + mov r0, #0x5f + ldr r1, [r4, #0x4c] + lsl r0, r0, #0xc + cmp r1, r0 + bne _0224993A + mov r0, #0x61 + ldr r1, [r4, #0x50] + lsl r0, r0, #0xc + cmp r1, r0 + bne _0224993A + add r0, r4, #0 + bl ov02_0224B768 + mov r0, #0x11 + str r0, [r4, #0x34] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_0224993A: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + thumb_func_end ov02_022498BC + + thumb_func_start ov02_02249940 +ov02_02249940: ; 0x02249940 + push {r4, lr} + add r4, r0, #0 + bl ov02_02249FD4 + mov r0, #0 + str r0, [r4, #0x10] + ldr r1, [r4] + add r1, r1, #1 + str r1, [r4] + pop {r4, pc} + thumb_func_end ov02_02249940 + + thumb_func_start ov02_02249954 +ov02_02249954: ; 0x02249954 + push {r4, lr} + add r4, r0, #0 + bl ov02_0224A028 + mov r0, #0 + str r0, [r4, #0x10] + ldr r1, [r4] + add r1, r1, #1 + str r1, [r4] + pop {r4, pc} + thumb_func_end ov02_02249954 + + thumb_func_start ov02_02249968 +ov02_02249968: ; 0x02249968 + push {r4, lr} + add r4, r0, #0 + bl ov02_0224A6D0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_02249968 + + thumb_func_start ov02_0224997C +ov02_0224997C: ; 0x0224997C + mov r1, #1 + str r1, [r0, #4] + mov r0, #0 + bx lr + thumb_func_end ov02_0224997C + + thumb_func_start ov02_02249984 +ov02_02249984: ; 0x02249984 + push {r3, r4, r5, lr} + ldr r4, _022499B4 ; =ov02_02253588 + add r5, r1, #0 +_0224998A: + ldr r1, [r5] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + blx r1 + cmp r0, #1 + beq _0224998A + ldr r0, [r5, #0x10] + cmp r0, #1 + bne _022499B2 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + beq _022499AC + bl sub_02068BAC +_022499AC: + add r0, r5, #0 + bl ov02_0224A32C +_022499B2: + pop {r3, r4, r5, pc} + .balign 4, 0 +_022499B4: .word ov02_02253588 + thumb_func_end ov02_02249984 + + thumb_func_start ov02_022499B8 +ov02_022499B8: ; 0x022499B8 + push {r3, r4, r5, lr} + ldr r4, _022499E8 ; =ov02_022534F0 + add r5, r1, #0 +_022499BE: + ldr r1, [r5] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + blx r1 + cmp r0, #1 + beq _022499BE + ldr r0, [r5, #0x10] + cmp r0, #1 + bne _022499E6 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + beq _022499E0 + bl sub_02068BAC +_022499E0: + add r0, r5, #0 + bl ov02_0224A32C +_022499E6: + pop {r3, r4, r5, pc} + .balign 4, 0 +_022499E8: .word ov02_022534F0 + thumb_func_end ov02_022499B8 + + thumb_func_start ov02_022499EC +ov02_022499EC: ; 0x022499EC + push {r3, r4, r5, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x85 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _02249A02 + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, pc} +_02249A02: + ldr r5, _02249A54 ; =ov02_022533FC + add r3, sp, #0xc + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r5, _02249A58 ; =ov02_02253414 + str r0, [r3] + ldmia r5!, {r0, r1} + add r3, sp, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, r2, #0 + str r0, [r3] + add r0, r4, #0 + bl ov02_0224A418 + mov r1, #0x79 + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + add r1, sp, #0 + bl ov02_0224A9B8 + mov r1, #0x7a + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + mov r1, #1 + bl ov02_0224A9D8 + add r0, r4, #0 + bl ov02_02249D40 + mov r0, #1 + str r0, [r4, #0x10] + ldr r1, [r4] + add r1, r1, #1 + str r1, [r4] + add sp, #0x18 + pop {r3, r4, r5, pc} + .balign 4, 0 +_02249A54: .word ov02_022533FC +_02249A58: .word ov02_02253414 + thumb_func_end ov02_022499EC + + thumb_func_start ov02_02249A5C +ov02_02249A5C: ; 0x02249A5C + push {r3, r4, r5, r6, lr} + sub sp, #0xc + mov r3, #0x85 + add r4, r0, #0 + lsl r3, r3, #2 + ldr r0, [r4, r3] + cmp r0, #0 + bne _02249A72 + add sp, #0xc + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_02249A72: + ldr r6, _02249AC0 ; =ov02_02253348 + add r5, sp, #0 + ldmia r6!, {r0, r1} + add r2, r5, #0 + stmia r5!, {r0, r1} + ldr r0, [r6] + str r0, [r5] + add r0, r3, #0 + add r0, #0xd8 + ldr r1, [sp] + ldr r0, [r4, r0] + add r3, #0xe0 + add r0, r1, r0 + str r0, [sp] + ldr r1, [sp, #4] + ldr r0, [r4, r3] + add r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, r2, #0 + bl ov02_0224A418 + mov r1, #0x79 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #1 + bl Sprite_SetAnimCtrlSeq + add r0, r4, #0 + bl ov02_02249D40 + mov r0, #1 + str r0, [r4, #0x10] + ldr r1, [r4] + add r1, r1, #1 + str r1, [r4] + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .balign 4, 0 +_02249AC0: .word ov02_02253348 + thumb_func_end ov02_02249A5C + + thumb_func_start ov02_02249AC4 +ov02_02249AC4: ; 0x02249AC4 + push {r4, lr} + add r4, r0, #0 + bl ov02_0224A8D4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_02249AC4 + + thumb_func_start ov02_02249AD8 +ov02_02249AD8: ; 0x02249AD8 + push {r4, lr} + add r4, r0, #0 + bl ov02_0224A4D0 + add r0, r4, #0 + bl ov02_02249D18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + thumb_func_end ov02_02249AD8 + + thumb_func_start ov02_02249AF0 +ov02_02249AF0: ; 0x02249AF0 + push {r4, lr} + mov r1, #0x85 + add r4, r0, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + cmp r1, #0 + bne _02249B02 + mov r0, #0 + pop {r4, pc} +_02249B02: + bl ov02_02249D40 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + thumb_func_end ov02_02249AF0 + + thumb_func_start ov02_02249B10 +ov02_02249B10: ; 0x02249B10 + push {r4, lr} + add r4, r0, #0 + bl ov02_0224AB58 + add r0, r4, #0 + bl ov02_0224AC38 + add r0, r4, #0 + bl ov02_0224A690 + add r0, r4, #0 + mov r1, #1 + bl ov02_0224B6B0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_02249B10 + + thumb_func_start ov02_02249B38 +ov02_02249B38: ; 0x02249B38 + push {r4, lr} + add r4, r0, #0 + bl ov02_0224AB8C + cmp r0, #2 + beq _02249B48 + mov r0, #0 + pop {r4, pc} +_02249B48: + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl Sprite_SetAnimCtrlSeq + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_02249B38 + + thumb_func_start ov02_02249B60 +ov02_02249B60: ; 0x02249B60 + push {r3, lr} + ldr r1, [r0, #8] + add r1, r1, #1 + str r1, [r0, #8] + cmp r1, #0x14 + blt _02249B7A + mov r1, #0 + str r1, [r0, #8] + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] + bl ov02_0224ADF0 +_02249B7A: + mov r0, #1 + pop {r3, pc} + .balign 4, 0 + thumb_func_end ov02_02249B60 + + thumb_func_start ov02_02249B80 +ov02_02249B80: ; 0x02249B80 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #8] + add r1, r1, #1 + str r1, [r4, #8] + cmp r1, #0x14 + blt _02249BA2 + mov r1, #0 + str r1, [r4, #8] + ldr r1, [r4] + add r1, r1, #1 + str r1, [r4] + bl ov02_0224AB58 + add r0, r4, #0 + bl ov02_0224ADF0 +_02249BA2: + mov r0, #1 + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_02249B80 + + thumb_func_start ov02_02249BA8 +ov02_02249BA8: ; 0x02249BA8 + push {r4, lr} + add r4, r0, #0 + bl ov02_0224AB8C + cmp r0, #3 + beq _02249BB8 + mov r0, #0 + pop {r4, pc} +_02249BB8: + ldr r0, _02249BD4 ; =SEQ_SE_DP_FW019 + bl PlaySE + mov r0, #2 + lsl r0, r0, #0xa + str r0, [r4, #0x54] + mov r0, #2 + str r0, [r4, #0x14] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + nop +_02249BD4: .word SEQ_SE_DP_FW019 + thumb_func_end ov02_02249BA8 + + thumb_func_start ov02_02249BD8 +ov02_02249BD8: ; 0x02249BD8 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0 + str r0, [r4, #0x2c] + ldr r1, [r4, #0x4c] + ldr r0, [r4, #0x54] + add r0, r1, r0 + str r0, [r4, #0x4c] + ldr r1, [r4, #0x50] + ldr r0, [r4, #0x54] + sub r0, r1, r0 + str r0, [r4, #0x50] + mov r0, #2 + ldr r1, [r4, #0x54] + lsl r0, r0, #0xa + add r2, r1, r0 + lsl r1, r0, #5 + str r2, [r4, #0x54] + cmp r2, r1 + ble _02249C06 + lsl r0, r0, #5 + str r0, [r4, #0x54] +_02249C06: + mov r0, #0x5f + ldr r1, [r4, #0x4c] + lsl r0, r0, #0xc + cmp r1, r0 + blt _02249C12 + str r0, [r4, #0x4c] +_02249C12: + mov r0, #0x61 + ldr r1, [r4, #0x50] + lsl r0, r0, #0xc + cmp r1, r0 + bgt _02249C1E + str r0, [r4, #0x50] +_02249C1E: + ldr r0, [r4, #0x50] + str r0, [sp] + ldr r1, [r4, #0x44] + ldr r2, [r4, #0x4c] + ldr r3, [r4, #0x48] + add r0, r4, #0 + bl ov02_0224A69C + mov r0, #1 + str r0, [r4, #0x2c] + ldr r0, [r4, #0x18] + cmp r0, #0 + bne _02249C4A + add r0, r4, #0 + bl ov02_0224AB8C + cmp r0, #4 + bne _02249C4A + mov r0, #1 + str r0, [r4, #0x18] + bl ov02_02249420 +_02249C4A: + mov r0, #0x5f + ldr r1, [r4, #0x4c] + lsl r0, r0, #0xc + cmp r1, r0 + bne _02249C6C + mov r0, #0x61 + ldr r1, [r4, #0x50] + lsl r0, r0, #0xc + cmp r1, r0 + bne _02249C6C + mov r0, #0x11 + str r0, [r4, #0x34] + mov r0, #1 + str r0, [r4, #0x14] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02249C6C: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + .balign 4, 0 + thumb_func_end ov02_02249BD8 + + thumb_func_start ov02_02249C74 +ov02_02249C74: ; 0x02249C74 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x20] + cmp r1, #3 + bne _02249C96 + bl ov02_0224AB8C + cmp r0, #2 + bne _02249C92 + add r0, r4, #0 + bl ov02_0224AB9C + ldr r0, [r4] + add r0, r0, #2 + str r0, [r4] +_02249C92: + mov r0, #0 + pop {r4, pc} +_02249C96: + ldr r1, [r4, #0x18] + cmp r1, #0 + bne _02249CAC + bl ov02_0224AB8C + cmp r0, #4 + bne _02249CAC + mov r0, #1 + str r0, [r4, #0x18] + bl ov02_02249420 +_02249CAC: + add r0, r4, #0 + bl ov02_0224AB8C + cmp r0, #2 + beq _02249CBA + mov r0, #0 + pop {r4, pc} +_02249CBA: + ldr r0, [r4, #0x18] + cmp r0, #0 + bne _02249CC8 + mov r0, #1 + str r0, [r4, #0x18] + bl ov02_02249420 +_02249CC8: + add r0, r4, #0 + bl ov02_0224AB9C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + thumb_func_end ov02_02249C74 + + thumb_func_start ov02_02249CD8 +ov02_02249CD8: ; 0x02249CD8 + push {r4, lr} + add r4, r0, #0 + bl IsPaletteFadeFinished + cmp r0, #0 + beq _02249CEA + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02249CEA: + mov r0, #0 + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_02249CD8 + + thumb_func_start ov02_02249CF0 +ov02_02249CF0: ; 0x02249CF0 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x21 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + add r0, r0, #4 + str r1, [r4, r0] + ldr r0, _02249D14 ; =ov02_02249D5C + add r1, r4, #0 + mov r2, #0x80 + bl SysTask_CreateOnVBlankQueue + mov r1, #0x22 + lsl r1, r1, #4 + str r0, [r4, r1] + pop {r4, pc} + nop +_02249D14: .word ov02_02249D5C + thumb_func_end ov02_02249CF0 + + thumb_func_start ov02_02249D18 +ov02_02249D18: ; 0x02249D18 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x21 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + add r0, r0, #4 + str r1, [r4, r0] + ldr r0, _02249D3C ; =ov02_02249E58 + add r1, r4, #0 + mov r2, #0x80 + bl SysTask_CreateOnVBlankQueue + mov r1, #0x22 + lsl r1, r1, #4 + str r0, [r4, r1] + pop {r4, pc} + nop +_02249D3C: .word ov02_02249E58 + thumb_func_end ov02_02249D18 + + thumb_func_start ov02_02249D40 +ov02_02249D40: ; 0x02249D40 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x22 + lsl r0, r0, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02249D5A + bl SysTask_Destroy + mov r0, #0x22 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] +_02249D5A: + pop {r4, pc} + thumb_func_end ov02_02249D40 + + thumb_func_start ov02_02249D5C +ov02_02249D5C: ; 0x02249D5C + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x21 + add r6, r1, #0 + lsl r0, r0, #4 + ldr r0, [r6, r0] + cmp r0, #0 + bne _02249DD2 + mov r7, #0x6b + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_02249D72: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02249D7C + bl sub_0200ADA4 +_02249D7C: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02249D72 + mov r7, #0x6f + mov r5, #0 + add r4, r6, #0 + lsl r7, r7, #2 +_02249D8C: + ldr r0, [r4, r7] + cmp r0, #0 + beq _02249D96 + bl sub_0200B00C +_02249D96: + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #3 + blt _02249D8C + mov r0, #0x86 + lsl r0, r0, #2 + ldr r1, [r6, r0] + cmp r1, #0 + beq _02249DAE + add r0, r6, #0 + bl ov02_0224A834 +_02249DAE: + mov r0, #0x87 + lsl r0, r0, #2 + ldr r1, [r6, r0] + cmp r1, #0 + beq _02249DBE + add r0, r6, #0 + bl ov02_0224A88C +_02249DBE: + mov r0, #0x21 + lsl r0, r0, #4 + ldr r1, [r6, r0] + mov r2, #0x80 + add r1, r1, #1 + str r1, [r6, r0] + ldr r0, _02249DD4 ; =ov02_02249DD8 + add r1, r6, #0 + bl SysTask_CreateOnVWaitQueue +_02249DD2: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_02249DD4: .word ov02_02249DD8 + thumb_func_end ov02_02249D5C + + thumb_func_start ov02_02249DD8 +ov02_02249DD8: ; 0x02249DD8 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + mov r0, #0x21 + add r6, r1, #0 + lsl r0, r0, #4 + ldr r0, [r6, r0] + cmp r0, #1 + bne _02249E56 + mov r7, #0x6b + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_02249DF0: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02249DFA + bl sub_0200A740 +_02249DFA: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02249DF0 + mov r7, #0x6f + mov r5, #0 + add r4, r6, #0 + lsl r7, r7, #2 +_02249E0A: + ldr r0, [r4, r7] + cmp r0, #0 + beq _02249E14 + bl sub_0200A740 +_02249E14: + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #3 + blt _02249E0A + mov r0, #0x86 + lsl r0, r0, #2 + ldr r0, [r6, r0] + cmp r0, #0 + beq _02249E32 + bl Heap_Free + mov r0, #0x86 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r6, r0] +_02249E32: + mov r0, #0x87 + lsl r0, r0, #2 + ldr r0, [r6, r0] + cmp r0, #0 + beq _02249E48 + bl Heap_Free + mov r0, #0x87 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r6, r0] +_02249E48: + mov r0, #0x85 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r6, r0] + ldr r0, [sp] + bl SysTask_Destroy +_02249E56: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end ov02_02249DD8 + + thumb_func_start ov02_02249E58 +ov02_02249E58: ; 0x02249E58 + push {r4, lr} + mov r0, #0x67 + add r4, r1, #0 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl SpriteResourceCollection_Find + mov r1, #0x21 + lsl r1, r1, #4 + ldr r1, [r4, r1] + cmp r1, #0 + bne _02249E8A + bl sub_0200ADA4 + ldr r0, _02249E8C ; =ov02_02249E90 + add r1, r4, #0 + mov r2, #0x80 + bl SysTask_CreateOnVWaitQueue + mov r0, #0x21 + lsl r0, r0, #4 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] +_02249E8A: + pop {r4, pc} + .balign 4, 0 +_02249E8C: .word ov02_02249E90 + thumb_func_end ov02_02249E58 + + thumb_func_start ov02_02249E90 +ov02_02249E90: ; 0x02249E90 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x67 + add r4, r1, #0 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl SpriteResourceCollection_Find + mov r1, #0x21 + lsl r1, r1, #4 + ldr r1, [r4, r1] + cmp r1, #1 + bne _02249EBE + bl sub_0200A740 + mov r0, #0x85 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r5, #0 + bl SysTask_Destroy +_02249EBE: + pop {r3, r4, r5, pc} + thumb_func_end ov02_02249E90 + + thumb_func_start ov02_02249EC0 +ov02_02249EC0: ; 0x02249EC0 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl ov02_0224A074 + mov r2, #3 + mov r3, #1 + add r4, r0, #0 + lsl r2, r2, #0x12 + add r0, r5, #0 + mov r1, #0 + lsl r3, r3, #0xc + str r2, [sp] + bl ov02_0224A69C + add r0, r5, #0 + bl ov02_0224A648 + ldr r0, [r5, #0x60] + mov r1, #0 + ldr r0, [r0, #8] + bl GetBgPriority + strh r0, [r5, #0x24] + ldr r0, [r5, #0x60] + mov r1, #3 + ldr r0, [r0, #8] + bl GetBgPriority + strh r0, [r5, #0x26] + ldr r2, _02249F68 ; =0x0400000A + mov r1, #3 + ldrh r3, [r2] + mov r0, #1 + bic r3, r1 + orr r0, r3 + strh r0, [r2] + ldrh r0, [r2, #4] + bic r0, r1 + strh r0, [r2, #4] + mov r0, #8 + mov r1, #0 + bl GfGfx_EngineATogglePlanes + add r2, r5, #0 + add r0, r4, #0 +#ifdef HEARTGOLD + mov r1, #2 +#else + mov r1, #5 +#endif + add r2, #0x6c + bl ov02_0224A570 + ldr r0, [r5, #0x60] + add r3, r5, #0 + ldr r0, [r0, #8] + add r1, r4, #0 +#ifdef HEARTGOLD + mov r2, #0 +#else + mov r2, #3 +#endif + add r3, #0x68 + bl ov02_0224A598 + ldr r0, [r5, #0x60] + add r3, r5, #0 + ldr r0, [r0, #8] + add r1, r4, #0 +#ifdef HEARTGOLD + mov r2, #1 +#else + mov r2, #4 +#endif + add r3, #0x64 + bl ov02_0224A5D0 + add r0, r5, #0 + add r1, r4, #0 + bl ov02_0224A080 + add r0, r4, #0 + bl NARC_Delete + mov r0, #4 + mov r1, #0x20 + bl sub_020689C8 + mov r1, #0x1e + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #8 + mov r1, #1 + bl GfGfx_EngineATogglePlanes + pop {r3, r4, r5, pc} + .balign 4, 0 +_02249F68: .word 0x0400000A + thumb_func_end ov02_02249EC0 + + thumb_func_start ov02_02249F6C +ov02_02249F6C: ; 0x02249F6C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl ov02_0224A074 + add r4, r0, #0 + ldr r0, [r5, #0x60] + mov r1, #0 + ldr r0, [r0, #8] + bl GetBgPriority + strh r0, [r5, #0x24] + ldr r0, [r5, #0x60] + mov r1, #3 + ldr r0, [r0, #8] + bl GetBgPriority + strh r0, [r5, #0x26] + ldr r2, _02249FD0 ; =0x0400000A + mov r1, #3 + ldrh r3, [r2] + mov r0, #1 + bic r3, r1 + orr r0, r3 + strh r0, [r2] + ldrh r0, [r2, #4] + bic r0, r1 + strh r0, [r2, #4] + mov r0, #8 + mov r1, #0 + bl GfGfx_EngineATogglePlanes + add r0, r5, #0 + add r1, r4, #0 + bl ov02_0224A080 + add r0, r4, #0 + bl NARC_Delete + mov r0, #4 + mov r1, #0x20 + bl sub_020689C8 + mov r1, #0x1e + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #8 + mov r1, #1 + bl GfGfx_EngineATogglePlanes + pop {r3, r4, r5, pc} + .balign 4, 0 +_02249FD0: .word 0x0400000A + thumb_func_end ov02_02249F6C + + thumb_func_start ov02_02249FD4 +ov02_02249FD4: ; 0x02249FD4 + push {r4, lr} + add r4, r0, #0 + mov r0, #8 + mov r1, #0 + bl GfGfx_EngineATogglePlanes + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl sub_020689F8 + ldr r0, [r4, #0x60] + ldr r0, [r0, #8] + bl ov02_0224A63C + add r0, r4, #0 + bl ov02_0224A288 + ldr r2, _0224A024 ; =0x04000008 + ldrh r1, [r4, #0x24] + ldrh r3, [r2] + mov r0, #3 + bic r3, r0 + orr r1, r3 + strh r1, [r2] + ldrh r1, [r2, #6] + bic r1, r0 + ldrh r0, [r4, #0x26] + orr r0, r1 + strh r0, [r2, #6] + mov r0, #0 + mov r1, #1 + bl sub_0205B4EC + mov r0, #8 + mov r1, #1 + bl GfGfx_EngineATogglePlanes + pop {r4, pc} + nop +_0224A024: .word 0x04000008 + thumb_func_end ov02_02249FD4 + + thumb_func_start ov02_0224A028 +ov02_0224A028: ; 0x0224A028 + push {r4, lr} + add r4, r0, #0 + mov r0, #8 + mov r1, #0 + bl GfGfx_EngineATogglePlanes + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl sub_020689F8 + add r0, r4, #0 + bl ov02_0224A288 + ldr r2, _0224A070 ; =0x04000008 + ldrh r1, [r4, #0x24] + ldrh r3, [r2] + mov r0, #3 + bic r3, r0 + orr r1, r3 + strh r1, [r2] + ldrh r1, [r2, #6] + bic r1, r0 + ldrh r0, [r4, #0x26] + orr r0, r1 + strh r0, [r2, #6] + mov r0, #0 + mov r1, #1 + bl sub_0205B4EC + mov r0, #8 + mov r1, #1 + bl GfGfx_EngineATogglePlanes + pop {r4, pc} + nop +_0224A070: .word 0x04000008 + thumb_func_end ov02_0224A028 + + thumb_func_start ov02_0224A074 +ov02_0224A074: ; 0x0224A074 + ldr r3, _0224A07C ; =NARC_New + mov r0, #0x5d + mov r1, #4 + bx r3 + .balign 4, 0 +_0224A07C: .word NARC_New + thumb_func_end ov02_0224A074 + + thumb_func_start ov02_0224A080 +ov02_0224A080: ; 0x0224A080 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r6, r1, #0 + mov r1, #0x7e + add r5, r0, #0 + lsl r1, r1, #2 + add r1, r5, r1 + bl ov02_0224A7A8 + add r1, r5, #0 + mov r0, #0x20 + add r1, #0x74 + mov r2, #4 + bl G2dRenderer_Init + str r0, [r5, #0x70] + add r0, r5, #0 + mov r2, #2 + add r0, #0x74 + mov r1, #0 + lsl r2, r2, #0x14 + bl G2dRenderer_SetSubSurfaceCoords + mov r0, #4 + mov r1, #0 + add r2, r0, #0 + bl Create2DGfxResObjMan + mov r1, #0x67 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #3 + mov r1, #1 + mov r2, #4 + bl Create2DGfxResObjMan + mov r1, #0x1a + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #4 + mov r1, #2 + add r2, r0, #0 + bl Create2DGfxResObjMan + mov r1, #0x69 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #2 + mov r1, #3 + mov r2, #4 + bl Create2DGfxResObjMan + mov r1, #0x6a + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + mov r0, #4 + sub r1, #0xc + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r6, #0 + mov r2, #0xe + mov r3, #0 + bl AddCharResObjFromOpenNarc + mov r1, #0x6b + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldrh r2, [r5, #0xe] + sub r1, #0x10 + ldr r0, [r5, r1] + lsl r3, r2, #1 + ldr r2, _0224A278 ; =ov02_02253304 + add r1, r6, #0 + ldrh r2, [r2, r3] + mov r3, #0 + bl AddCharResObjFromOpenNarc + mov r1, #0x1b + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r5, #0 + add r1, r6, #0 + bl ov02_0224A810 + mov r1, #0x6d + lsl r1, r1, #2 + str r0, [r5, r1] + mov r4, #0 + str r4, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #4 + sub r1, #0x14 + str r0, [sp, #0xc] + ldr r0, [r5, r1] + add r1, r6, #0 + mov r2, #6 + add r3, r4, #0 + bl AddPlttResObjFromOpenNarc + mov r1, #0x6f + lsl r1, r1, #2 + str r0, [r5, r1] + ldrh r2, [r5, #0xe] + add r4, r4, #1 + cmp r2, #0 + beq _0224A196 + mov r0, #1 + sub r2, r2, #1 + str r0, [sp] + lsl r3, r2, #1 + ldr r2, _0224A27C ; =ov02_022532FC + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #4 + ldrh r2, [r2, r3] + sub r1, #0x1c + str r0, [sp, #0xc] + ldr r0, [r5, r1] + add r1, r6, #0 + mov r3, #0 + bl AddPlttResObjFromOpenNarc + lsl r1, r4, #2 + add r2, r5, r1 + mov r1, #0x6f + lsl r1, r1, #2 + str r0, [r2, r1] + add r4, r4, #1 +_0224A196: + add r0, r5, #0 + add r1, r6, #0 + bl ov02_0224A868 + lsl r1, r4, #2 + add r2, r5, r1 + mov r1, #0x6f + lsl r1, r1, #2 + str r0, [r2, r1] + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #4 + sub r1, #0x18 + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r6, #0 + mov r2, #0xf + mov r3, #0 + bl AddCellOrAnimResObjFromOpenNarc + mov r1, #0x72 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #2 + str r0, [sp] + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldrh r2, [r5, #0xe] + sub r1, #0x24 + ldr r0, [r5, r1] + lsl r3, r2, #1 + ldr r2, _0224A280 ; =ov02_02253310 + add r1, r6, #0 + ldrh r2, [r2, r3] + mov r3, #0 + bl AddCellOrAnimResObjFromOpenNarc + mov r1, #0x73 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #3 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #4 + sub r1, #0x28 + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r6, #0 + mov r2, #0xa + mov r3, #0 + bl AddCellOrAnimResObjFromOpenNarc + mov r1, #0x1d + lsl r1, r1, #4 + str r0, [r5, r1] + mov r3, #0 + str r3, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #4 + sub r1, #0x28 + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r6, #0 + mov r2, #0x10 + bl AddCellOrAnimResObjFromOpenNarc + mov r1, #0x76 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #1 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldrh r2, [r5, #0xe] + sub r1, #0x30 + ldr r0, [r5, r1] + lsl r3, r2, #1 + ldr r2, _0224A284 ; =ov02_0225330A + add r1, r6, #0 + ldrh r2, [r2, r3] + mov r3, #0 + bl AddCellOrAnimResObjFromOpenNarc + mov r1, #0x77 + lsl r1, r1, #2 + str r0, [r5, r1] + add r1, #0x1c + ldr r0, [r5, #0x5c] + add r1, r5, r1 + mov r2, #4 + bl ov02_0224A7B8 + mov r1, #0x86 + lsl r1, r1, #2 + str r0, [r5, r1] + sub r1, #0x20 + add r0, r5, r1 + mov r1, #4 + bl ov02_0224A800 + mov r1, #0x87 + lsl r1, r1, #2 + str r0, [r5, r1] + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_0224A278: .word ov02_02253304 +_0224A27C: .word ov02_022532FC +_0224A280: .word ov02_02253310 +_0224A284: .word ov02_0225330A + thumb_func_end ov02_0224A080 + + thumb_func_start ov02_0224A288 +ov02_0224A288: ; 0x0224A288 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r7, #0x6b + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_0224A294: + ldr r0, [r5, r7] + cmp r0, #0 + beq _0224A29E + bl sub_0200AEB0 +_0224A29E: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0224A294 + mov r7, #0x6f + mov r5, #0 + add r4, r6, #0 + lsl r7, r7, #2 +_0224A2AE: + ldr r0, [r4, r7] + cmp r0, #0 + beq _0224A2B8 + bl sub_0200B0A8 +_0224A2B8: + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #3 + blt _0224A2AE + mov r7, #0x72 + mov r5, #0 + add r4, r6, #0 + lsl r7, r7, #2 +_0224A2C8: + ldr r0, [r4, r7] + cmp r0, #0 + beq _0224A2D2 + bl sub_0200A740 +_0224A2D2: + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #4 + blt _0224A2C8 + mov r7, #0x76 + mov r5, #0 + add r4, r6, #0 + lsl r7, r7, #2 +_0224A2E2: + ldr r0, [r4, r7] + cmp r0, #0 + beq _0224A2EC + bl sub_0200A740 +_0224A2EC: + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #2 + blt _0224A2E2 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl Destroy2DGfxResObjMan + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r6, r0] + bl Destroy2DGfxResObjMan + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl Destroy2DGfxResObjMan + mov r0, #0x6a + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl Destroy2DGfxResObjMan + ldr r0, [r6, #0x70] + bl SpriteList_DeleteAllSprites + ldr r0, [r6, #0x70] + bl SpriteList_Delete + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end ov02_0224A288 + + thumb_func_start ov02_0224A32C +ov02_0224A32C: ; 0x0224A32C + push {r3, lr} + ldr r0, [r0, #0x70] + cmp r0, #0 + beq _0224A338 + bl SpriteList_RenderAndAnimateSprites +_0224A338: + pop {r3, pc} + .balign 4, 0 + thumb_func_end ov02_0224A32C + + thumb_func_start ov02_0224A33C +ov02_0224A33C: ; 0x0224A33C + push {r4, r5, r6, lr} + sub sp, #0x70 + add r5, r0, #0 + ldr r0, [sp, #0x84] + add r4, r1, #0 + add r1, r2, #0 + add r2, r3, #0 + cmp r0, #4 + bne _0224A384 + mov r0, #0 + mvn r0, r0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + mov r6, #0x67 + ldr r3, [sp, #0x88] + str r0, [sp, #0xc] + lsl r6, r6, #2 + str r3, [sp, #0x10] + ldr r3, [r5, r6] + str r3, [sp, #0x14] + add r3, r6, #4 + ldr r3, [r5, r3] + add r6, #8 + str r3, [sp, #0x18] + ldr r3, [r5, r6] + str r3, [sp, #0x1c] + str r0, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + ldr r3, [sp, #0x80] + add r0, sp, #0x4c + bl CreateSpriteResourcesHeader + b _0224A3BE +_0224A384: + str r0, [sp] + mov r0, #0 + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r3, #0 + ldr r0, [sp, #0x88] + str r3, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #0x67 + lsl r0, r0, #2 + ldr r6, [r5, r0] + str r6, [sp, #0x14] + add r6, r0, #4 + ldr r6, [r5, r6] + str r6, [sp, #0x18] + add r6, r0, #0 + add r6, #8 + ldr r6, [r5, r6] + add r0, #0xc + str r6, [sp, #0x1c] + ldr r0, [r5, r0] + str r0, [sp, #0x20] + str r3, [sp, #0x24] + str r3, [sp, #0x28] + ldr r3, [sp, #0x80] + add r0, sp, #0x4c + bl CreateSpriteResourcesHeader +_0224A3BE: + ldr r0, [r5, #0x70] + add r2, sp, #0x34 + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + ldmia r4!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4] + str r0, [r2] + ldr r0, [sp, #0x8c] + str r0, [sp, #0x40] + mov r0, #1 + str r0, [sp, #0x44] + mov r0, #4 + str r0, [sp, #0x48] + add r0, sp, #0x2c + bl Sprite_Create + add r4, r0, #0 + bne _0224A3EA + bl GF_AssertFail +_0224A3EA: + add r0, r4, #0 + add sp, #0x70 + pop {r4, r5, r6, pc} + thumb_func_end ov02_0224A33C + + thumb_func_start ov02_0224A3F0 +ov02_0224A3F0: ; 0x0224A3F0 + push {r3, r4, r5, lr} + sub sp, #0x10 + mov r5, #1 + add r4, r3, #0 + str r5, [sp] + mov r3, #0 + str r3, [sp, #4] + str r3, [sp, #8] + str r2, [sp, #0xc] + add r2, r5, #0 + bl ov02_0224A33C + add r1, r4, #0 + add r5, r0, #0 + bl Sprite_SetAnimCtrlSeq + add r0, r5, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + .balign 4, 0 + thumb_func_end ov02_0224A3F0 + + thumb_func_start ov02_0224A418 +ov02_0224A418: ; 0x0224A418 + push {r4, lr} + sub sp, #0x10 + ldrh r2, [r0, #0xe] + mov r3, #0 + cmp r2, #0 + beq _0224A426 + mov r3, #1 +_0224A426: + mov r2, #2 + str r2, [sp] + mov r4, #1 + str r4, [sp, #4] + mov r4, #0 + str r4, [sp, #8] + mov r4, #0x83 + str r4, [sp, #0xc] + bl ov02_0224A33C + add r4, r0, #0 + mov r1, #0 + bl Sprite_SetDrawFlag + add r0, r4, #0 + mov r1, #6 + bl Sprite_SetAnimCtrlSeq + add r0, r4, #0 + add sp, #0x10 + pop {r4, pc} + thumb_func_end ov02_0224A418 + + thumb_func_start ov02_0224A450 +ov02_0224A450: ; 0x0224A450 + push {r4, lr} + mov r1, #1 + add r4, r0, #0 + bl Sprite_SetAnimActiveFlag + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl Sprite_SetAnimSpeed + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_0224A450 + + thumb_func_start ov02_0224A468 +ov02_0224A468: ; 0x0224A468 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r4, r0, #0 + add r0, sp, #0x1c + mov r7, #0 + str r7, [r0] + str r7, [r0, #4] + add r6, r2, #0 + ldr r5, _0224A4CC ; =ov02_02253390 + add r3, r1, #0 + str r7, [r0, #8] + ldmia r5!, {r0, r1} + add r2, sp, #0x10 + stmia r2!, {r0, r1} + ldr r0, [r5] + add r1, r3, #0 + str r0, [r2] + str r7, [sp] + sub r0, r7, #1 + str r0, [sp, #4] + str r7, [sp, #8] + add r0, r4, #0 + add r2, r7, #0 + add r3, r7, #0 + str r6, [sp, #0xc] + bl ov02_0224A33C + add r4, r0, #0 + mov r1, #2 + bl Sprite_SetAffineOverwriteMode + add r0, r4, #0 + add r1, sp, #0x1c + bl Sprite_SetAffineMatrix + add r0, r4, #0 + add r1, sp, #0x10 + bl Sprite_SetAffineScale + add r0, r7, #0 + bl GF_DegreeToSinCosIdx + add r1, r0, #0 + add r0, r4, #0 + bl Sprite_SetAffineZRotation + add r0, r4, #0 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224A4CC: .word ov02_02253390 + thumb_func_end ov02_0224A468 + + thumb_func_start ov02_0224A4D0 +ov02_0224A4D0: ; 0x0224A4D0 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r0, #0 + bl ov02_0224A074 + add r6, r0, #0 + mov r0, #0x6b + mov r5, #0 + add r2, r4, #0 + lsl r0, r0, #2 +_0224A4E4: + ldr r1, [r2, r0] + cmp r1, #0 + bne _0224A510 + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r6, #0 + mov r2, #0xb + bl AddCharResObjFromOpenNarc + lsl r1, r5, #2 + add r2, r4, r1 + mov r1, #0x6b + lsl r1, r1, #2 + str r0, [r2, r1] + b _0224A518 +_0224A510: + add r5, r5, #1 + add r2, r2, #4 + cmp r5, #4 + blt _0224A4E4 +_0224A518: + cmp r5, #4 + blt _0224A520 + bl GF_AssertFail +_0224A520: + mov r0, #0x72 + mov r5, #0 + add r2, r4, #0 + lsl r0, r0, #2 +_0224A528: + ldr r1, [r2, r0] + cmp r1, #0 + bne _0224A554 + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r6, #0 + mov r2, #0xc + bl AddCellOrAnimResObjFromOpenNarc + lsl r1, r5, #2 + add r2, r4, r1 + mov r1, #0x72 + lsl r1, r1, #2 + str r0, [r2, r1] + b _0224A55C +_0224A554: + add r5, r5, #1 + add r2, r2, #4 + cmp r5, #4 + blt _0224A528 +_0224A55C: + cmp r5, #4 + blt _0224A564 + bl GF_AssertFail +_0224A564: + add r0, r6, #0 + bl NARC_Delete + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .balign 4, 0 + thumb_func_end ov02_0224A4D0 + + thumb_func_start ov02_0224A570 +ov02_0224A570: ; 0x0224A570 + push {r3, r4, r5, lr} + add r5, r2, #0 + mov r2, #4 + bl NARC_AllocAndReadWholeMember + add r1, r5, #0 + add r4, r0, #0 + bl NNS_G2dGetUnpackedPaletteData + ldr r1, [r5] + mov r0, #3 + ldr r1, [r1, #0xc] + mov r2, #0x20 + lsl r3, r0, #7 + bl BG_LoadPlttData + add r0, r4, #0 + bl Heap_Free + pop {r3, r4, r5, pc} + thumb_func_end ov02_0224A570 + + thumb_func_start ov02_0224A598 +ov02_0224A598: ; 0x0224A598 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + add r4, r3, #0 + mov r2, #4 + bl NARC_AllocAndReadWholeMember + add r1, r4, #0 + add r6, r0, #0 + bl NNS_G2dGetUnpackedCharacterData + ldr r3, [r4] + mov r0, #0 + str r0, [sp] + ldr r2, [r3, #0x14] + ldr r3, [r3, #0x10] + add r0, r5, #0 + mov r1, #3 + bl BG_LoadCharTilesData + add r0, r6, #0 + bl Heap_Free + add sp, #4 + pop {r3, r4, r5, r6, pc} + .balign 4, 0 + thumb_func_end ov02_0224A598 + + thumb_func_start ov02_0224A5D0 +ov02_0224A5D0: ; 0x0224A5D0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r2, #0 + add r6, r1, #0 + mov r2, #0 + add r4, r3, #0 + mov r1, #3 + add r3, r2, #0 + add r5, r0, #0 + bl BgSetPosTextAndCommit + mov r1, #3 + add r0, r5, #0 + add r2, r1, #0 + mov r3, #0 + bl BgSetPosTextAndCommit + add r0, r6, #0 + add r1, r7, #0 + mov r2, #4 + bl NARC_AllocAndReadWholeMember + add r1, r4, #0 + add r6, r0, #0 + bl NNS_G2dGetUnpackedScreenData + ldr r3, [r4] + add r0, r5, #0 + add r2, r3, #0 + ldr r3, [r3, #8] + mov r1, #3 + add r2, #0xc + bl BG_LoadScreenTilemapData + mov r0, #0x20 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0xc + mov r2, #0 + str r0, [sp, #8] + add r0, r5, #0 + mov r1, #3 + add r3, r2, #0 + bl BgTilemapRectChangePalette + add r0, r5, #0 + mov r1, #3 + bl BgCommitTilemapBufferToVram + add r0, r6, #0 + bl Heap_Free + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end ov02_0224A5D0 + + thumb_func_start ov02_0224A63C +ov02_0224A63C: ; 0x0224A63C + ldr r3, _0224A644 ; =BgClearTilemapBufferAndCommit + mov r1, #3 + bx r3 + nop +_0224A644: .word BgClearTilemapBufferAndCommit + thumb_func_end ov02_0224A63C + + thumb_func_start ov02_0224A648 +ov02_0224A648: ; 0x0224A648 + push {r4, lr} + add r4, r0, #0 + bl ov02_0224A6A8 + mov r0, #0 + str r0, [r4, #0x2c] + add r0, r4, #0 + bl ov02_0224A674 + add r0, r4, #0 + bl ov02_0224A67C + add r0, r4, #0 + bl ov02_0224A66C + mov r0, #1 + str r0, [r4, #0x2c] + pop {r4, pc} + thumb_func_end ov02_0224A648 + + thumb_func_start ov02_0224A66C +ov02_0224A66C: ; 0x0224A66C + mov r1, #1 + str r1, [r0, #0x30] + bx lr + .balign 4, 0 + thumb_func_end ov02_0224A66C + + thumb_func_start ov02_0224A674 +ov02_0224A674: ; 0x0224A674 + mov r1, #0 + str r1, [r0, #0x30] + bx lr + .balign 4, 0 + thumb_func_end ov02_0224A674 + + thumb_func_start ov02_0224A67C +ov02_0224A67C: ; 0x0224A67C + mov r1, #0x18 + str r1, [r0, #0x34] + mov r1, #0 + str r1, [r0, #0x38] + mov r1, #0x17 + str r1, [r0, #0x3c] + mov r1, #1 + str r1, [r0, #0x40] + bx lr + .balign 4, 0 + thumb_func_end ov02_0224A67C + + thumb_func_start ov02_0224A690 +ov02_0224A690: ; 0x0224A690 + mov r1, #0x17 + str r1, [r0, #0x3c] + mov r1, #1 + str r1, [r0, #0x40] + bx lr + .balign 4, 0 + thumb_func_end ov02_0224A690 + + thumb_func_start ov02_0224A69C +ov02_0224A69C: ; 0x0224A69C + str r1, [r0, #0x44] + str r3, [r0, #0x48] + ldr r1, [sp] + str r2, [r0, #0x4c] + str r1, [r0, #0x50] + bx lr + thumb_func_end ov02_0224A69C + + thumb_func_start ov02_0224A6A8 +ov02_0224A6A8: ; 0x0224A6A8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x89 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0224A6BA + bl GF_AssertFail +_0224A6BA: + ldr r0, _0224A6CC ; =ov02_0224A700 + add r1, r4, #0 + mov r2, #0x81 + bl SysTask_CreateOnVBlankQueue + mov r1, #0x89 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r4, pc} + .balign 4, 0 +_0224A6CC: .word ov02_0224A700 + thumb_func_end ov02_0224A6A8 + + thumb_func_start ov02_0224A6D0 +ov02_0224A6D0: ; 0x0224A6D0 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x89 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _0224A6E2 + bl GF_AssertFail +_0224A6E2: + mov r0, #0x89 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl SysTask_Destroy + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _0224A6FC ; =0xFFFF1FFF + and r0, r1 + str r0, [r2] + pop {r4, pc} + nop +_0224A6FC: .word 0xFFFF1FFF + thumb_func_end ov02_0224A6D0 + + thumb_func_start ov02_0224A700 +ov02_0224A700: ; 0x0224A700 + push {r3, r4, r5, r6} + ldr r0, [r1, #0x2c] + cmp r0, #0 + beq _0224A796 + mov r3, #1 + lsl r3, r3, #0x1a + ldr r2, [r3] + ldr r0, _0224A79C ; =0xFFFF1FFF + and r2, r0 + ldr r0, [r1, #0x30] + lsl r0, r0, #0xd + orr r0, r2 + str r0, [r3] + add r3, #0x48 + ldrh r2, [r3] + mov r0, #0x3f + bic r2, r0 + ldr r0, [r1, #0x34] + orr r2, r0 + ldr r0, [r1, #0x38] + cmp r0, #0 + beq _0224A730 + mov r0, #0x20 + orr r2, r0 +_0224A730: + ldr r0, _0224A7A0 ; =0x04000048 + strh r2, [r0] + ldrh r2, [r0, #2] + mov r0, #0x3f + bic r2, r0 + ldr r0, [r1, #0x3c] + orr r2, r0 + ldr r0, [r1, #0x40] + cmp r0, #0 + beq _0224A748 + mov r0, #0x20 + orr r2, r0 +_0224A748: + ldr r5, _0224A7A4 ; =0x0400004A + strh r2, [r5] + ldr r2, [r1, #0x50] + ldr r6, [r1, #0x48] + asr r0, r2, #0xb + lsr r0, r0, #0x14 + add r0, r2, r0 + ldr r2, [r1, #0x4c] + asr r4, r0, #0xc + asr r0, r2, #0xb + lsr r0, r0, #0x14 + add r0, r2, r0 + ldr r2, [r1, #0x44] + asr r3, r0, #0xc + asr r0, r2, #0xb + lsr r0, r0, #0x14 + asr r1, r6, #0xb + add r0, r2, r0 + lsr r1, r1, #0x14 + asr r0, r0, #0xc + add r1, r6, r1 + lsl r2, r0, #8 + mov r0, #0xff + asr r1, r1, #0xc + lsl r0, r0, #8 + lsl r1, r1, #0x18 + and r2, r0 + lsr r1, r1, #0x18 + orr r2, r1 + add r1, r5, #0 + sub r1, #0xa + strh r2, [r1] + lsl r1, r3, #8 + and r1, r0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + orr r1, r0 + sub r0, r5, #6 + strh r1, [r0] +_0224A796: + pop {r3, r4, r5, r6} + bx lr + nop +_0224A79C: .word 0xFFFF1FFF +_0224A7A0: .word 0x04000048 +_0224A7A4: .word 0x0400004A + thumb_func_end ov02_0224A700 + + thumb_func_start ov02_0224A7A8 +ov02_0224A7A8: ; 0x0224A7A8 + ldr r3, _0224A7B4 ; =GetPokemonSpriteCharAndPlttNarcIds + add r2, r0, #0 + add r0, r1, #0 + ldr r1, [r2, #0x5c] + mov r2, #2 + bx r3 + .balign 4, 0 +_0224A7B4: .word GetPokemonSpriteCharAndPlttNarcIds + thumb_func_end ov02_0224A7A8 + + thumb_func_start ov02_0224A7B8 +ov02_0224A7B8: ; 0x0224A7B8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + mov r1, #0x32 + add r6, r0, #0 + mov r0, #4 + lsl r1, r1, #6 + add r7, r2, #0 + bl Heap_Alloc + add r4, r0, #0 + bne _0224A7D4 + bl GF_AssertFail +_0224A7D4: + mov r1, #0 + add r0, r6, #0 + add r2, r1, #0 + bl GetMonData + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + ldrh r0, [r5, #6] + add r2, r7, #0 + add r3, r4, #0 + str r0, [sp, #0xc] + ldrh r0, [r5] + ldrh r1, [r5, #2] + bl sub_02014540 + add r0, r4, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end ov02_0224A7B8 + + thumb_func_start ov02_0224A800 +ov02_0224A800: ; 0x0224A800 + add r3, r0, #0 + add r2, r1, #0 + ldrh r0, [r3] + ldrh r1, [r3, #4] + ldr r3, _0224A80C ; =sub_02014450 + bx r3 + .balign 4, 0 +_0224A80C: .word sub_02014450 + thumb_func_end ov02_0224A800 + + thumb_func_start ov02_0224A810 +ov02_0224A810: ; 0x0224A810 + push {lr} + sub sp, #0xc + mov r2, #3 + str r2, [sp] + mov r2, #1 + str r2, [sp, #4] + mov r2, #4 + str r2, [sp, #8] + mov r2, #0x67 + lsl r2, r2, #2 + ldr r0, [r0, r2] + mov r2, #9 + mov r3, #0 + bl AddCharResObjFromOpenNarc + add sp, #0xc + pop {pc} + .balign 4, 0 + thumb_func_end ov02_0224A810 + + thumb_func_start ov02_0224A834 +ov02_0224A834: ; 0x0224A834 + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #0x67 + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r1, #3 + bl SpriteResourceCollection_Find + bl sub_0200AF00 + mov r1, #1 + bl NNS_G2dGetImageLocation + mov r1, #0x32 + add r5, r0, #0 + add r0, r4, #0 + lsl r1, r1, #6 + bl DC_FlushRange + mov r2, #0x32 + add r0, r4, #0 + add r1, r5, #0 + lsl r2, r2, #6 + bl GX_LoadOBJ + pop {r3, r4, r5, pc} + thumb_func_end ov02_0224A834 + + thumb_func_start ov02_0224A868 +ov02_0224A868: ; 0x0224A868 + push {r3, lr} + sub sp, #0x10 + mov r2, #3 + str r2, [sp] + mov r2, #1 + str r2, [sp, #4] + str r2, [sp, #8] + mov r2, #4 + str r2, [sp, #0xc] + mov r2, #0x1a + lsl r2, r2, #4 + ldr r0, [r0, r2] + mov r2, #6 + mov r3, #0 + bl AddPlttResObjFromOpenNarc + add sp, #0x10 + pop {r3, pc} + thumb_func_end ov02_0224A868 + + thumb_func_start ov02_0224A88C +ov02_0224A88C: ; 0x0224A88C + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x67 + lsl r0, r0, #2 + add r4, r1, #0 + ldr r0, [r5, r0] + mov r1, #3 + bl SpriteResourceCollection_Find + bl sub_0200AF00 + add r6, r0, #0 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #3 + bl SpriteResourceCollection_Find + add r1, r6, #0 + bl SpriteTransfer_GetPaletteProxy + mov r1, #1 + bl NNS_G2dGetImagePaletteLocation + add r5, r0, #0 + add r0, r4, #0 + mov r1, #0x20 + bl DC_FlushRange + add r0, r4, #0 + add r1, r5, #0 + mov r2, #0x20 + bl GX_LoadOBJPltt + pop {r4, r5, r6, pc} + .balign 4, 0 + thumb_func_end ov02_0224A88C + + thumb_func_start ov02_0224A8D4 +ov02_0224A8D4: ; 0x0224A8D4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #3 + bl SpriteResourceCollection_Find + add r4, r0, #0 + bl sub_0200AEB0 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + bl DestroySingle2DGfxResObj + mov r1, #0x6b + mov r0, #0 + add r3, r5, #0 + lsl r1, r1, #2 +_0224A8FE: + ldr r2, [r3, r1] + cmp r2, r4 + bne _0224A912 + lsl r1, r0, #2 + add r2, r5, r1 + mov r1, #0x6b + mov r3, #0 + lsl r1, r1, #2 + str r3, [r2, r1] + b _0224A91A +_0224A912: + add r0, r0, #1 + add r3, r3, #4 + cmp r0, #4 + blt _0224A8FE +_0224A91A: + cmp r0, #4 + blt _0224A922 + bl GF_AssertFail +_0224A922: + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #3 + bl SpriteResourceCollection_Find + add r4, r0, #0 + bl sub_0200B0A8 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, r4, #0 + bl DestroySingle2DGfxResObj + mov r1, #0x6f + mov r0, #0 + add r3, r5, #0 + lsl r1, r1, #2 +_0224A948: + ldr r2, [r3, r1] + cmp r2, r4 + bne _0224A95C + lsl r1, r0, #2 + add r2, r5, r1 + mov r1, #0x6f + mov r3, #0 + lsl r1, r1, #2 + str r3, [r2, r1] + b _0224A964 +_0224A95C: + add r0, r0, #1 + add r3, r3, #4 + cmp r0, #3 + blt _0224A948 +_0224A964: + cmp r0, #3 + blt _0224A96C + bl GF_AssertFail +_0224A96C: + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #3 + bl SpriteResourceCollection_Find + add r4, r0, #0 + bl sub_0200A740 + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + bl DestroySingle2DGfxResObj + mov r1, #0x72 + mov r0, #0 + add r3, r5, #0 + lsl r1, r1, #2 +_0224A992: + ldr r2, [r3, r1] + cmp r2, r4 + bne _0224A9A6 + lsl r1, r0, #2 + add r2, r5, r1 + mov r1, #0x72 + mov r3, #0 + lsl r1, r1, #2 + str r3, [r2, r1] + b _0224A9AE +_0224A9A6: + add r0, r0, #1 + add r3, r3, #4 + cmp r0, #4 + blt _0224A992 +_0224A9AE: + cmp r0, #4 + blt _0224A9B6 + bl GF_AssertFail +_0224A9B6: + pop {r3, r4, r5, pc} + thumb_func_end ov02_0224A8D4 + + thumb_func_start ov02_0224A9B8 +ov02_0224A9B8: ; 0x0224A9B8 + push {r3, lr} + sub sp, #0x10 + mov r2, #3 + str r2, [sp] + sub r3, r2, #4 + str r3, [sp, #4] + mov r3, #0 + str r3, [sp, #8] + mov r3, #0x81 + str r3, [sp, #0xc] + add r3, r2, #0 + bl ov02_0224A33C + add sp, #0x10 + pop {r3, pc} + .balign 4, 0 + thumb_func_end ov02_0224A9B8 + + thumb_func_start ov02_0224A9D8 +ov02_0224A9D8: ; 0x0224A9D8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r0, #0 + mov r0, #2 + ldr r4, _0224AA40 ; =ov02_022535E4 + add r6, r1, #0 + str r0, [r5, #0x14] + mov r7, #0 +_0224A9E8: + ldr r0, [r4] + add r1, sp, #0x1c + str r0, [sp, #0x1c] + ldr r0, [r4, #4] + add r2, sp, #0x10 + str r0, [sp, #0x20] + mov r0, #0 + str r0, [sp, #0x24] + ldr r0, [r4, #8] + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [r4, #0xc] + str r0, [sp, #8] + ldr r0, [r4, #0x10] + ldr r3, [sp, #8] + str r0, [sp] + str r0, [sp, #0xc] + str r6, [sp, #4] + add r0, r5, #0 + bl ov02_0224AA44 + mov r0, #1 + ldr r1, [sp, #0x1c] + lsl r0, r0, #0x14 + add r0, r1, r0 + str r0, [sp, #0x1c] + ldr r0, [sp, #0xc] + ldr r3, [sp, #8] + str r0, [sp] + add r0, r5, #0 + add r1, sp, #0x1c + add r2, sp, #0x10 + str r6, [sp, #4] + bl ov02_0224AA44 + add r7, r7, #1 + add r4, #0x14 + cmp r7, #0xd + blt _0224A9E8 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224AA40: .word ov02_022535E4 + thumb_func_end ov02_0224A9D8 + + thumb_func_start ov02_0224AA44 +ov02_0224AA44: ; 0x0224AA44 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + ldr r0, [sp, #0x34] + str r3, [sp, #8] + str r5, [sp, #0x10] + add r4, r1, #0 + str r0, [sp, #0xc] + ldmia r2!, {r0, r1} + add r3, sp, #0x14 + stmia r3!, {r0, r1} + ldr r0, [r2] + ldr r1, _0224AA7C ; =ov02_02253468 + str r0, [r3] + add r0, sp, #8 + str r0, [sp] + mov r0, #0x85 + str r0, [sp, #4] + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r5, r0] + ldr r3, [sp, #0x30] + add r2, r4, #0 + bl sub_02068B0C + add sp, #0x20 + pop {r3, r4, r5, pc} + nop +_0224AA7C: .word ov02_02253468 + thumb_func_end ov02_0224AA44 + + thumb_func_start ov02_0224AA80 +ov02_0224AA80: ; 0x0224AA80 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + bl sub_02068D98 + add r2, r4, #0 + add r3, r0, #0 + add r2, #0xc + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r5, #0 + bl sub_02068D90 + str r0, [r4, #4] + add r0, r5, #0 + add r1, sp, #0 + bl sub_02068DB8 + ldr r0, [r4, #0x14] + ldr r2, [r4, #0xc] + ldr r3, [r4, #4] + add r1, sp, #0 + bl ov02_0224A3F0 + mov r1, #0 + str r0, [r4, #8] + bl Sprite_SetDrawFlag + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + thumb_func_end ov02_0224AA80 + + thumb_func_start ov02_0224AAC8 +ov02_0224AAC8: ; 0x0224AAC8 + ldr r3, _0224AAD0 ; =Sprite_Delete + ldr r0, [r1, #8] + bx r3 + nop +_0224AAD0: .word Sprite_Delete + thumb_func_end ov02_0224AAC8 + + thumb_func_start ov02_0224AAD4 +ov02_0224AAD4: ; 0x0224AAD4 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + add r5, r0, #0 + bl sub_02068DB8 + ldr r1, [sp] + ldr r0, [r4, #0x18] + add r0, r1, r0 + lsr r2, r0, #0x1f + lsl r1, r0, #0xb + str r0, [sp] + sub r1, r1, r2 + mov r0, #0xb + ror r1, r0 + add r0, r2, r1 + str r0, [sp] + add r0, r5, #0 + add r1, sp, #0 + bl sub_02068DA8 + ldr r0, [r4, #8] + add r1, sp, #0 + bl Sprite_SetMatrix + ldr r0, [r4, #0x10] + cmp r0, #1 + bne _0224AB4E + ldr r3, [r4, #0x14] + ldr r0, [r3, #0x14] + cmp r0, #2 + bne _0224AB42 + ldr r2, [r3, #0x4c] + ldr r0, [r3, #0x50] + mov r3, #2 + ldr r6, [sp, #4] + lsl r3, r3, #0xc + sub r5, r6, r3 + mov r1, #0 + cmp r5, r2 + blt _0224AB38 + cmp r5, r0 + bgt _0224AB38 + add r3, r6, r3 + cmp r3, r2 + blt _0224AB38 + cmp r3, r0 + bgt _0224AB38 + mov r1, #1 +_0224AB38: + ldr r0, [r4, #8] + bl Sprite_SetDrawFlag + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0224AB42: + cmp r0, #1 + bne _0224AB4E + ldr r0, [r4, #8] + mov r1, #0 + bl Sprite_SetDrawFlag +_0224AB4E: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .balign 4, 0 + thumb_func_end ov02_0224AAD4 + + thumb_func_start ov02_0224AB54 +ov02_0224AB54: ; 0x0224AB54 + bx lr + .balign 4, 0 + thumb_func_end ov02_0224AB54 + + thumb_func_start ov02_0224AB58 +ov02_0224AB58: ; 0x0224AB58 + push {r4, lr} + sub sp, #0x18 + add r2, sp, #0xc + mov r3, #0 + add r4, r0, #0 + str r3, [r2] + str r3, [r2, #4] + str r3, [r2, #8] + str r4, [sp, #8] + add r0, sp, #8 + str r0, [sp] + mov r0, #0x82 + str r0, [sp, #4] + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r1, _0224AB88 ; =ov02_0225347C + bl sub_02068B0C + mov r1, #0x7b + lsl r1, r1, #2 + str r0, [r4, r1] + add sp, #0x18 + pop {r4, pc} + .balign 4, 0 +_0224AB88: .word ov02_0225347C + thumb_func_end ov02_0224AB58 + + thumb_func_start ov02_0224AB8C +ov02_0224AB8C: ; 0x0224AB8C + push {r3, lr} + mov r1, #0x7b + lsl r1, r1, #2 + ldr r0, [r0, r1] + bl sub_02068D74 + ldrb r0, [r0, #2] + pop {r3, pc} + thumb_func_end ov02_0224AB8C + + thumb_func_start ov02_0224AB9C +ov02_0224AB9C: ; 0x0224AB9C + push {r3, r4, r5, lr} + add r4, r0, #0 + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl sub_02068D74 + add r5, r0, #0 + ldr r0, [r5, #0x60] + cmp r0, #0 + beq _0224ABB6 + bl sub_02068B48 +_0224ABB6: + ldr r0, [r5, #0x64] + cmp r0, #0 + beq _0224ABC0 + bl ov01_021FCD78 +_0224ABC0: + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl sub_02068B48 + pop {r3, r4, r5, pc} + thumb_func_end ov02_0224AB9C + + thumb_func_start ov02_0224ABCC +ov02_0224ABCC: ; 0x0224ABCC + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl sub_02068D98 + ldr r0, [r0] + add r1, sp, #0 + str r0, [r4, #0x5c] + add r0, r5, #0 + bl sub_02068DB8 + mov r2, #0 + ldr r0, [r4, #0x5c] + add r1, sp, #0 + add r3, r2, #0 + bl ov02_0224A468 + str r0, [r4, #0x58] + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + thumb_func_end ov02_0224ABCC + + thumb_func_start ov02_0224ABF8 +ov02_0224ABF8: ; 0x0224ABF8 + ldr r3, _0224AC00 ; =Sprite_Delete + ldr r0, [r1, #0x58] + bx r3 + nop +_0224AC00: .word Sprite_Delete + thumb_func_end ov02_0224ABF8 + + thumb_func_start ov02_0224AC04 +ov02_0224AC04: ; 0x0224AC04 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrb r0, [r5] + lsl r1, r0, #2 + ldr r0, _0224AC20 ; =ov02_022533C0 + ldr r4, [r0, r1] +_0224AC10: + ldrb r1, [r5, #1] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + blx r1 + cmp r0, #1 + beq _0224AC10 + pop {r3, r4, r5, pc} + .balign 4, 0 +_0224AC20: .word ov02_022533C0 + thumb_func_end ov02_0224AC04 + + thumb_func_start ov02_0224AC24 +ov02_0224AC24: ; 0x0224AC24 + bx lr + .balign 4, 0 + thumb_func_end ov02_0224AC24 + + thumb_func_start ov02_0224AC28 +ov02_0224AC28: ; 0x0224AC28 + push {r3, lr} + mov r1, #0 + strb r1, [r0, #2] + ldr r0, [r0, #0x58] + bl Sprite_SetDrawFlag + mov r0, #0 + pop {r3, pc} + thumb_func_end ov02_0224AC28 + + thumb_func_start ov02_0224AC38 +ov02_0224AC38: ; 0x0224AC38 + push {r4, r5, r6, lr} + sub sp, #0x18 + ldr r4, _0224ACD8 ; =ov02_022533E4 + add r2, r0, #0 + ldmia r4!, {r0, r1} + add r3, sp, #0xc + stmia r3!, {r0, r1} + ldr r0, [r4] + ldr r4, _0224ACDC ; =ov02_022533F0 + str r0, [r3] + ldmia r4!, {r0, r1} + add r3, sp, #0 + stmia r3!, {r0, r1} + ldr r0, [r4] + str r0, [r3] + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r2, r0] + bl sub_02068D74 + add r4, r0, #0 + mov r3, #1 + add r5, r4, #0 + strb r3, [r4] + mov r2, #0 + strb r2, [r4, #1] + strb r2, [r4, #2] + add r6, sp, #0xc + ldmia r6!, {r0, r1} + add r5, #8 + stmia r5!, {r0, r1} + ldr r0, [r6] + add r6, sp, #0 + str r0, [r5] + str r2, [r4, #0x14] + str r2, [r4, #0x18] + mov r0, #0xf + add r5, r4, #0 + str r2, [r4, #0x1c] + lsl r0, r0, #0xe + str r0, [r4, #0x38] + ldmia r6!, {r0, r1} + add r5, #0x2c + stmia r5!, {r0, r1} + ldr r0, [r6] + add r1, sp, #0xc + str r0, [r5] + lsl r0, r3, #9 + str r0, [r4, #0x50] + mov r0, #0x2d + lsl r0, r0, #0xe + str r0, [r4, #0x40] + str r2, [r4, #0x48] + lsl r0, r3, #0xd + str r0, [r4, #0x4c] + ldr r0, [r4, #0x58] + bl Sprite_SetMatrix + ldr r0, [r4, #0x58] + add r1, sp, #0 + bl Sprite_SetAffineScale + ldr r1, [r4, #0x38] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl GF_DegreeToSinCosIdx + add r1, r0, #0 + ldr r0, [r4, #0x58] + bl Sprite_SetAffineZRotation + ldr r0, [r4, #0x58] + mov r1, #1 + bl Sprite_SetDrawFlag + add sp, #0x18 + pop {r4, r5, r6, pc} + .balign 4, 0 +_0224ACD8: .word ov02_022533E4 +_0224ACDC: .word ov02_022533F0 + thumb_func_end ov02_0224AC38 + + thumb_func_start ov02_0224ACE0 +ov02_0224ACE0: ; 0x0224ACE0 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r1, [r5, #0x48] + ldr r0, [r5, #0x4c] + ldr r4, [r5, #0x58] + add r0, r1, r0 + str r0, [r5, #0x48] + mov r0, #1 + ldr r1, [r5, #0x4c] + lsl r0, r0, #0x10 + cmp r1, r0 + bge _0224AD00 + lsr r0, r0, #2 + add r0, r1, r0 + str r0, [r5, #0x4c] +_0224AD00: + ldr r0, _0224ADE0 ; =0x0000013B + bl GF_CosDeg + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x14] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl GF_SinDeg + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x18] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r2, r0, #0xc + ldr r0, _0224ADE4 ; =0x0000010E + cmp r2, r0 + bge _0224AD4A + mov r0, #1 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [r5, #0x40] +_0224AD4A: + ldr r1, [r5, #0x2c] + ldr r0, [r5, #0x50] + add r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xc + str r1, [r5, #0x2c] + cmp r1, r0 + ble _0224AD5C + str r0, [r5, #0x2c] +_0224AD5C: + ldr r1, [r5, #0x30] + ldr r0, [r5, #0x50] + add r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xc + str r1, [r5, #0x30] + cmp r1, r0 + ble _0224AD6E + str r0, [r5, #0x30] +_0224AD6E: + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x2c + bl Sprite_SetAffineScale + mov r0, #6 + ldr r1, [r5, #0x38] + lsl r0, r0, #0xc + sub r1, r1, r0 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + str r1, [r5, #0x38] + asr r0, r0, #0xc + bpl _0224AD90 + mov r0, #0 + str r0, [r5, #0x38] +_0224AD90: + ldr r1, [r5, #0x38] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl GF_DegreeToSinCosIdx + add r1, r0, #0 + add r0, r4, #0 + bl Sprite_SetAffineZRotation + ldr r1, [r5, #8] + ldr r0, [r5, #0x14] + add r0, r1, r0 + str r0, [sp] + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x18] + add r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0 + bl Sprite_SetMatrix + ldr r1, [sp, #4] + ldr r0, _0224ADE8 ; =0xFFFC0000 + cmp r1, r0 + bge _0224ADDA + add r0, r4, #0 + mov r1, #0 + bl Sprite_SetDrawFlag + mov r0, #2 + strb r0, [r5, #2] + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] +_0224ADDA: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .balign 4, 0 +_0224ADE0: .word 0x0000013B +_0224ADE4: .word 0x0000010E +_0224ADE8: .word 0xFFFC0000 + thumb_func_end ov02_0224ACE0 + + thumb_func_start ov02_0224ADEC +ov02_0224ADEC: ; 0x0224ADEC + mov r0, #0 + bx lr + thumb_func_end ov02_0224ADEC + + thumb_func_start ov02_0224ADF0 +ov02_0224ADF0: ; 0x0224ADF0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + ldr r3, _0224AF5C ; =ov02_02253354 + add r5, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0x24 + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r3, _0224AF60 ; =ov02_0225336C + str r0, [r2] + ldmia r3!, {r0, r1} + add r2, sp, #0x18 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl sub_02068D74 + add r4, r0, #0 + mov r0, #2 + strb r0, [r4] + mov r6, #0 + mov r0, #0xbb + strb r6, [r4, #1] + mov r7, #1 + strb r7, [r4, #2] + str r6, [r4, #4] + lsl r0, r0, #2 + ldr r1, [r5, r0] + ldr r2, [sp, #0x24] + add r0, #8 + add r1, r2, r1 + str r1, [sp, #0x24] + add r2, r4, #0 + ldr r1, [sp, #0x28] + ldr r0, [r5, r0] + add r3, sp, #0x24 + add r0, r1, r0 + str r0, [sp, #0x28] + ldmia r3!, {r0, r1} + add r2, #8 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, sp, #0x18 + str r0, [r2] + str r6, [r4, #0x14] + str r6, [r4, #0x18] + str r6, [r4, #0x1c] + ldr r6, _0224AF64 ; =0x0013B000 + add r2, r4, #0 + str r6, [r4, #0x38] + ldmia r3!, {r0, r1} + add r2, #0x2c + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, r7, #0 + add r0, #0xff + str r0, [r4, #0x50] + mov r0, #0xe1 + lsl r0, r0, #0xc + str r0, [r4, #0x40] + mov r0, #3 + lsl r0, r0, #0x12 + str r0, [r4, #0x48] + lsl r0, r7, #0x11 + str r0, [r4, #0x4c] + lsr r0, r6, #0xc + bl GF_CosDeg + ldr r2, [r4, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r4, #0x14] + ldr r1, [r4, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl GF_SinDeg + ldr r2, [r4, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r4, #0x18] + ldr r1, [r4, #8] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [sp, #0x24] + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x18] + add r0, r1, r0 + str r0, [sp, #0x28] + ldr r0, [r4, #0x58] + add r1, sp, #0x24 + bl Sprite_SetMatrix + ldr r0, [r4, #0x58] + add r1, sp, #0x18 + bl Sprite_SetAffineScale + ldr r1, [r4, #0x38] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl GF_DegreeToSinCosIdx + add r1, r0, #0 + ldr r0, [r4, #0x58] + bl Sprite_SetAffineZRotation + ldr r0, [r4, #0x58] + add r1, r7, #0 + bl Sprite_SetDrawFlag + mov r1, #0x1e + lsl r1, r1, #4 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + bl ov02_0224B298 + str r0, [r4, #0x60] + add r0, r7, #0 + str r0, [r5, #0x1c] + ldr r0, [r5, #0x60] + mov r1, #4 + bl ov01_021FCD2C + ldr r2, _0224AF68 ; =0xFFF88000 + add r1, r7, #0 + mov r3, #0xc + str r0, [r4, #0x64] + bl ov01_021FCD8C + add r1, sp, #0xc + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + ldr r3, _0224AF6C ; =ov02_02253378 + str r0, [r1, #8] + ldmia r3!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + mov r0, #0x79 + ldr r1, [r4, #0x5c] + lsl r0, r0, #2 + ldr r4, [r1, r0] + mov r1, #2 + add r0, r4, #0 + bl Sprite_SetAffineOverwriteMode + add r0, r4, #0 + add r1, sp, #0xc + bl Sprite_SetAffineMatrix + add r0, r4, #0 + add r1, sp, #0 + bl Sprite_SetAffineScale + mov r0, #0 + bl GF_DegreeToSinCosIdx + add r1, r0, #0 + add r0, r4, #0 + bl Sprite_SetAffineZRotation + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_0224AF5C: .word ov02_02253354 +_0224AF60: .word ov02_0225336C +_0224AF64: .word 0x0013B000 +_0224AF68: .word 0xFFF88000 +_0224AF6C: .word ov02_02253378 + thumb_func_end ov02_0224ADF0 + + thumb_func_start ov02_0224AF70 +ov02_0224AF70: ; 0x0224AF70 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r1, [r5, #0x48] + ldr r0, [r5, #0x4c] + ldr r4, [r5, #0x58] + sub r0, r1, r0 + str r0, [r5, #0x48] + bpl _0224AF86 + mov r0, #0 + str r0, [r5, #0x48] +_0224AF86: + mov r0, #2 + ldr r1, [r5, #0x4c] + lsl r0, r0, #0xa + cmp r1, r0 + ble _0224AF98 + mov r0, #6 + lsl r0, r0, #0xa + sub r0, r1, r0 + str r0, [r5, #0x4c] +_0224AF98: + mov r0, #1 + ldr r1, [r5, #0x4c] + lsl r0, r0, #0xc + cmp r1, r0 + bge _0224AFA4 + str r0, [r5, #0x4c] +_0224AFA4: + ldr r0, _0224B0D8 ; =0x0000013B + bl GF_CosDeg + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x14] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl GF_SinDeg + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x18] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r2, r0, #0xc + ldr r0, _0224B0DC ; =0x0000010E + cmp r2, r0 + bge _0224AFEE + mov r0, #1 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [r5, #0x40] +_0224AFEE: + ldr r1, [r5, #0x2c] + ldr r0, [r5, #0x50] + add r1, r1, r0 + mov r0, #6 + lsl r0, r0, #0xa + str r1, [r5, #0x2c] + cmp r1, r0 + ble _0224B000 + str r0, [r5, #0x2c] +_0224B000: + ldr r1, [r5, #0x30] + ldr r0, [r5, #0x50] + add r1, r1, r0 + mov r0, #6 + lsl r0, r0, #0xa + str r1, [r5, #0x30] + cmp r1, r0 + ble _0224B012 + str r0, [r5, #0x30] +_0224B012: + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x2c + bl Sprite_SetAffineScale + mov r0, #2 + ldr r1, [r5, #0x38] + lsl r0, r0, #0xe + add r1, r1, r0 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + str r1, [r5, #0x38] + asr r1, r0, #0xc + mov r0, #0x5a + lsl r0, r0, #2 + cmp r1, r0 + ble _0224B03A + lsl r0, r0, #0xc + str r0, [r5, #0x38] +_0224B03A: + ldr r1, [r5, #0x38] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl GF_DegreeToSinCosIdx + add r1, r0, #0 + add r0, r4, #0 + bl Sprite_SetAffineZRotation + ldr r1, [r5, #8] + ldr r0, [r5, #0x14] + add r0, r1, r0 + str r0, [sp, #0xc] + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x18] + add r0, r1, r0 + str r0, [sp, #0x10] + add r0, r4, #0 + add r1, sp, #0xc + bl Sprite_SetMatrix + ldr r0, [r5, #0x48] + cmp r0, #0 + bne _0224B07C + mov r0, #0 + str r0, [r5, #4] + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] + b _0224B082 +_0224B07C: + ldr r0, [r5, #4] + add r0, r0, #1 + str r0, [r5, #4] +_0224B082: + ldr r0, [r5, #4] + cmp r0, #0xc + bne _0224B08E + ldr r0, [r5, #0x60] + bl ov02_0224B2CC +_0224B08E: + mov r0, #0x79 + ldr r1, [r5, #0x5c] + lsl r0, r0, #2 + ldr r4, [r1, r0] + add r0, r4, #0 + bl Sprite_GetScalePtr + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r1, [sp] + mov r0, #5 + add r1, #0x80 + lsl r0, r0, #0xa + str r1, [sp] + cmp r1, r0 + ble _0224B0B8 + str r0, [sp] +_0224B0B8: + ldr r1, [sp, #4] + mov r0, #5 + add r1, #0x80 + lsl r0, r0, #0xa + str r1, [sp, #4] + cmp r1, r0 + ble _0224B0C8 + str r0, [sp, #4] +_0224B0C8: + add r0, r4, #0 + add r1, sp, #0 + bl Sprite_SetAffineScale + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, pc} + nop +_0224B0D8: .word 0x0000013B +_0224B0DC: .word 0x0000010E + thumb_func_end ov02_0224AF70 + + thumb_func_start ov02_0224B0E0 +ov02_0224B0E0: ; 0x0224B0E0 + push {r3, r4, r5, lr} + add r4, r0, #0 + mov r0, #0x79 + ldr r1, [r4, #0x5c] + lsl r0, r0, #2 + ldr r5, [r1, r0] + mov r1, #3 + add r0, r5, #0 + bl Sprite_SetAnimCtrlSeq + add r0, r5, #0 + mov r1, #1 + bl Sprite_SetDrawFlag + ldr r0, [r4, #0x5c] + mov r1, #1 + bl ov02_0224B6B0 + mov r0, #0x82 + ldr r1, [r4, #0x5c] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl sub_0205F484 + add r0, r5, #0 + bl Sprite_GetMatrixPtr + ldr r5, [r0, #4] + ldr r0, [r4, #0x58] + bl Sprite_GetMatrixPtr + ldr r0, [r0, #4] + sub r0, r5, r0 + str r0, [r4, #0x54] + ldr r0, [r4, #0x60] + bl ov02_0224B2C0 + ldr r0, [r4, #0x64] + mov r1, #2 + mov r2, #0 + mov r3, #0xc + bl ov01_021FCD8C + mov r1, #1 + lsl r1, r1, #8 + str r1, [r4, #0x50] + lsl r0, r1, #0xb + str r0, [r4, #0x40] + mov r0, #0 + str r0, [r4, #0x48] + lsl r0, r1, #3 + str r0, [r4, #0x4c] + mov r0, #3 + strb r0, [r4, #2] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + mov r0, #1 + pop {r3, r4, r5, pc} + .balign 4, 0 + thumb_func_end ov02_0224B0E0 + + thumb_func_start ov02_0224B158 +ov02_0224B158: ; 0x0224B158 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r4, r0, #0 + ldr r1, [r4, #0x48] + ldr r0, [r4, #0x4c] + ldr r6, [r4, #0x58] + add r0, r1, r0 + str r0, [r4, #0x48] + mov r0, #1 + ldr r1, [r4, #0x4c] + lsl r0, r0, #0xc + add r2, r1, r0 + lsl r1, r0, #4 + str r2, [r4, #0x4c] + cmp r2, r1 + ble _0224B17C + lsl r0, r0, #4 + str r0, [r4, #0x4c] +_0224B17C: + ldr r1, [r4, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl GF_CosDeg + ldr r2, [r4, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r4, #0x14] + mov r0, #0x80 + bl GF_SinDeg + ldr r2, [r4, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r4, #0x18] + mov r0, #0x87 + ldr r1, [r4, #0x40] + lsl r0, r0, #0xc + cmp r1, r0 + bge _0224B1C0 + mov r0, #1 + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [r4, #0x40] +_0224B1C0: + ldr r1, [r4, #0x2c] + ldr r0, [r4, #0x50] + add r1, r1, r0 + mov r0, #2 + lsl r0, r0, #0xc + str r1, [r4, #0x2c] + cmp r1, r0 + ble _0224B1D2 + str r0, [r4, #0x2c] +_0224B1D2: + ldr r1, [r4, #0x30] + ldr r0, [r4, #0x50] + add r1, r1, r0 + mov r0, #2 + lsl r0, r0, #0xc + str r1, [r4, #0x30] + cmp r1, r0 + ble _0224B1E4 + str r0, [r4, #0x30] +_0224B1E4: + ldr r1, [r4, #8] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [sp, #0x18] + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x18] + add r1, r1, r0 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + str r1, [sp, #0x1c] + cmp r0, #0xe6 + blt _0224B20A + mov r0, #2 + strb r0, [r4, #2] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] +_0224B20A: + mov r0, #0x79 + ldr r1, [r4, #0x5c] + lsl r0, r0, #2 + ldr r7, [r1, r0] + add r0, r7, #0 + bl Sprite_GetScalePtr + add r2, sp, #0xc + add r3, sp, #0x18 + add r5, r0, #0 + ldmia r3!, {r0, r1} + mov ip, r2 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldmia r5!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r5] + str r0, [r2] + mov r0, #1 + ldr r1, [r4, #0x54] + lsl r0, r0, #0xc + sub r1, r1, r0 + str r1, [r4, #0x54] + ldr r0, [sp, #0x10] + add r0, r0, r1 + str r0, [sp, #0x10] + add r0, r7, #0 + mov r1, ip + bl Sprite_SetMatrix + mov r0, #1 + ldr r1, [sp] + lsl r0, r0, #8 + add r2, r1, r0 + lsl r1, r0, #5 + str r2, [sp] + cmp r2, r1 + ble _0224B25E + lsl r0, r0, #5 + str r0, [sp] +_0224B25E: + mov r0, #1 + ldr r1, [sp, #4] + lsl r0, r0, #8 + add r2, r1, r0 + lsl r1, r0, #5 + str r2, [sp, #4] + cmp r2, r1 + ble _0224B272 + lsl r0, r0, #5 + str r0, [sp, #4] +_0224B272: + add r0, r7, #0 + add r1, sp, #0 + bl Sprite_SetAffineScale + add r4, #0x2c + add r0, r6, #0 + add r1, r4, #0 + bl Sprite_SetAffineScale + add r0, r6, #0 + add r1, sp, #0x18 + bl Sprite_SetMatrix + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end ov02_0224B158 + + thumb_func_start ov02_0224B294 +ov02_0224B294: ; 0x0224B294 + mov r0, #0 + bx lr + thumb_func_end ov02_0224B294 + + thumb_func_start ov02_0224B298 +ov02_0224B298: ; 0x0224B298 + push {lr} + sub sp, #0x1c + add r2, sp, #0x10 + mov r3, #0 + str r3, [r2] + str r3, [r2, #4] + str r1, [sp, #0xc] + str r3, [r2, #8] + add r1, sp, #8 + str r1, [sp] + mov r1, #0x81 + str r1, [sp, #4] + ldr r1, _0224B2BC ; =ov02_022534A4 + bl sub_02068B0C + add sp, #0x1c + pop {pc} + nop +_0224B2BC: .word ov02_022534A4 + thumb_func_end ov02_0224B298 + + thumb_func_start ov02_0224B2C0 +ov02_0224B2C0: ; 0x0224B2C0 + push {r3, lr} + bl sub_02068D74 + mov r1, #0 + str r1, [r0] + pop {r3, pc} + thumb_func_end ov02_0224B2C0 + + thumb_func_start ov02_0224B2CC +ov02_0224B2CC: ; 0x0224B2CC + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + bl sub_02068D74 + add r4, r0, #0 + mov r0, #1 + str r0, [r4] + mov r0, #0 + str r0, [r4, #4] + str r0, [r4, #0xc] + str r0, [r4, #8] + str r0, [r4, #0x10] + str r0, [r4, #0x14] + str r0, [r4, #0x18] + ldr r0, [r4, #0x20] + bl Sprite_GetMatrixPtr + add r6, r0, #0 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r2, #0 + str r0, [r3] + add r0, r5, #0 + bl sub_02068DA8 + ldr r0, [r4, #0x20] + mov r1, #5 + bl Sprite_SetAnimCtrlSeq + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .balign 4, 0 + thumb_func_end ov02_0224B2CC + + thumb_func_start ov02_0224B314 +ov02_0224B314: ; 0x0224B314 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + bl sub_02068D74 + add r4, r0, #0 + mov r0, #2 + str r0, [r4] + mov r0, #0 + str r0, [r4, #4] + str r0, [r4, #0xc] + str r0, [r4, #8] + str r0, [r4, #0x10] + str r0, [r4, #0x14] + str r0, [r4, #0x18] + ldr r0, [r4, #0x20] + add r1, sp, #0 + bl ov02_02248C98 + add r0, r5, #0 + add r1, sp, #0 + bl sub_02068DA8 + ldr r0, [r4, #0x20] + mov r1, #4 + bl Sprite_SetAnimCtrlSeq + add sp, #0xc + pop {r4, r5, pc} + .balign 4, 0 + thumb_func_end ov02_0224B314 + + thumb_func_start ov02_0224B350 +ov02_0224B350: ; 0x0224B350 + push {r4, lr} + add r4, r1, #0 + bl sub_02068D98 + ldr r1, [r0] + str r1, [r4, #0x1c] + ldr r0, [r0, #4] + str r0, [r4, #0x20] + mov r0, #1 + pop {r4, pc} + thumb_func_end ov02_0224B350 + + thumb_func_start ov02_0224B364 +ov02_0224B364: ; 0x0224B364 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r1, [r4, #4] + cmp r1, #0 + bne _0224B3A8 + ldr r1, [r4, #0xc] + lsl r2, r1, #2 + ldr r1, _0224B3AC ; =ov02_02253520 + ldr r1, [r1, r2] + str r1, [r4, #0x14] + add r1, sp, #0 + bl sub_02068DB8 + ldr r1, [sp, #4] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [sp, #4] + ldr r0, [r4, #0x20] + add r1, sp, #0 + bl Sprite_SetMatrix + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #0xc + blt _0224B3A8 + mov r0, #0 + str r0, [r4, #0xc] + mov r0, #1 + str r0, [r4, #8] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_0224B3A8: + add sp, #0xc + pop {r3, r4, pc} + .balign 4, 0 +_0224B3AC: .word ov02_02253520 + thumb_func_end ov02_0224B364 + + thumb_func_start ov02_0224B3B0 +ov02_0224B3B0: ; 0x0224B3B0 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r1, [r4, #4] + cmp r1, #0 + bne _0224B3F4 + ldr r1, [r4, #0xc] + lsl r2, r1, #2 + ldr r1, _0224B3F8 ; =ov02_02253430 + ldr r1, [r1, r2] + str r1, [r4, #0x14] + add r1, sp, #0 + bl sub_02068DB8 + ldr r1, [sp, #4] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [sp, #4] + ldr r0, [r4, #0x20] + add r1, sp, #0 + bl Sprite_SetMatrix + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #4 + blt _0224B3F4 + mov r0, #0 + str r0, [r4, #0xc] + mov r0, #1 + str r0, [r4, #8] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_0224B3F4: + add sp, #0xc + pop {r3, r4, pc} + .balign 4, 0 +_0224B3F8: .word ov02_02253430 + thumb_func_end ov02_0224B3B0 + + thumb_func_start ov02_0224B3FC +ov02_0224B3FC: ; 0x0224B3FC + push {r3, lr} + ldr r2, [r1] + cmp r2, #1 + beq _0224B40A + cmp r2, #2 + beq _0224B410 + pop {r3, pc} +_0224B40A: + bl ov02_0224B364 + pop {r3, pc} +_0224B410: + bl ov02_0224B3B0 + pop {r3, pc} + .balign 4, 0 + thumb_func_end ov02_0224B3FC + + thumb_func_start ov02_0224B418 +ov02_0224B418: ; 0x0224B418 + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #0x5f + add r5, r0, #0 + mov r0, #4 + lsl r1, r1, #2 + bl ov02_0224B690 + add r1, r0, #0 + str r4, [r1, #0xc] + ldr r0, _0224B438 ; =ov02_0224B45C + mov r2, #0x86 + str r5, [r1, #0x14] + bl SysTask_CreateOnMainQueue + pop {r3, r4, r5, pc} + .balign 4, 0 +_0224B438: .word ov02_0224B45C + thumb_func_end ov02_0224B418 + + thumb_func_start ov02_0224B43C +ov02_0224B43C: ; 0x0224B43C + push {r3, lr} + bl SysTask_GetData + ldr r0, [r0, #4] + pop {r3, pc} + .balign 4, 0 + thumb_func_end ov02_0224B43C + + thumb_func_start ov02_0224B448 +ov02_0224B448: ; 0x0224B448 + push {r4, lr} + add r4, r0, #0 + bl SysTask_GetData + bl Heap_Free + add r0, r4, #0 + bl SysTask_Destroy + pop {r4, pc} + thumb_func_end ov02_0224B448 + + thumb_func_start ov02_0224B45C +ov02_0224B45C: ; 0x0224B45C + push {r3, r4, r5, lr} + ldr r4, _0224B490 ; =ov02_022534B8 + add r5, r1, #0 +_0224B462: + ldr r1, [r5] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + blx r1 + cmp r0, #1 + beq _0224B462 + ldr r0, [r5, #0x10] + cmp r0, #0 + beq _0224B48E + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + beq _0224B484 + bl sub_02068BAC +_0224B484: + ldr r0, [r5, #0x20] + cmp r0, #0 + beq _0224B48E + bl SpriteList_RenderAndAnimateSprites +_0224B48E: + pop {r3, r4, r5, pc} + .balign 4, 0 +_0224B490: .word ov02_022534B8 + thumb_func_end ov02_0224B45C + + thumb_func_start ov02_0224B494 +ov02_0224B494: ; 0x0224B494 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + mov r1, #1 + bl ov02_02249444 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_0224B494 + + thumb_func_start ov02_0224B4AC +ov02_0224B4AC: ; 0x0224B4AC + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #4 + mov r1, #0x20 + bl sub_020689C8 + mov r1, #0x17 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r2, #2 + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + add r0, r5, #0 + add r0, #0x18 + mov r1, #0x20 + add r3, r2, #0 + str r2, [sp, #0x14] + bl ov02_02248728 + bl ov02_022493F0 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #0xb + mov r3, #0 + bl ov02_02248980 + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #6 + mov r3, #0 + bl ov02_02248A58 + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #0xc + mov r3, #0 + bl ov02_02248B30 + add r0, r5, #0 + add r0, #0x18 + mov r1, #0 + bl ov02_022489F0 + add r0, r5, #0 + add r0, #0x18 + mov r1, #0 + bl ov02_02248AC8 + add r0, r5, #0 + add r0, #0x18 + mov r1, #0 + bl ov02_02248A24 + add r0, r5, #0 + add r0, #0x18 + mov r1, #0 + bl ov02_02248AFC + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _0224B57C + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #0x11 + mov r3, #2 + bl ov02_02248980 + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #0x12 + mov r3, #2 + bl ov02_02248B30 + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #0x13 + mov r3, #1 + bl ov02_02248BA0 + add r0, r5, #0 + add r0, #0x18 + mov r1, #2 + bl ov02_022489F0 + add r0, r5, #0 + add r0, #0x18 + mov r1, #2 + bl ov02_02248A24 + b _0224B5DC +_0224B57C: + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #0x14 + mov r3, #2 + bl ov02_02248980 + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #7 + mov r3, #1 + bl ov02_02248A58 + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #0x15 + mov r3, #2 + bl ov02_02248B30 + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #0x16 + mov r3, #1 + bl ov02_02248BA0 + add r0, r5, #0 + add r0, #0x18 + mov r1, #2 + bl ov02_022489F0 + add r0, r5, #0 + add r0, #0x18 + mov r1, #1 + bl ov02_02248AC8 + add r0, r5, #0 + add r0, #0x18 + mov r1, #2 + bl ov02_02248A24 + add r0, r5, #0 + add r0, #0x18 + mov r1, #1 + bl ov02_02248AFC +_0224B5DC: + add r0, r4, #0 + bl NARC_Delete + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, pc} + .balign 4, 0 + thumb_func_end ov02_0224B4AC + + thumb_func_start ov02_0224B5F0 +ov02_0224B5F0: ; 0x0224B5F0 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0xc] + add r0, #0x18 + bl ov02_02248D18 + mov r1, #0x5b + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #1 + bl Sprite_SetDrawFlag + mov r3, #0x17 + lsl r3, r3, #4 + ldr r1, [r4, r3] + sub r3, r3, #4 + add r2, r4, #0 + ldr r0, [r4, #0x14] + ldr r3, [r4, r3] + add r2, #0x18 + bl ov02_02248D58 + mov r1, #0x5d + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + bl ov02_02248E20 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #1 + str r0, [r4, #0x10] + mov r0, #0 + pop {r4, pc} + thumb_func_end ov02_0224B5F0 + + thumb_func_start ov02_0224B638 +ov02_0224B638: ; 0x0224B638 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl ov02_02248D8C + cmp r0, #2 + beq _0224B64E + mov r0, #0 + pop {r4, pc} +_0224B64E: + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl ov02_02248DBC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_0224B638 + + thumb_func_start ov02_0224B664 +ov02_0224B664: ; 0x0224B664 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl sub_020689F8 + add r0, r4, #0 + add r0, #0x18 + bl ov02_0224886C + mov r0, #0 + str r0, [r4, #0x10] + mov r1, #1 + str r1, [r4, #4] + ldr r1, [r4] + add r1, r1, #1 + str r1, [r4] + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_0224B664 + + thumb_func_start ov02_0224B68C +ov02_0224B68C: ; 0x0224B68C + mov r0, #0 + bx lr + thumb_func_end ov02_0224B68C + + thumb_func_start ov02_0224B690 +ov02_0224B690: ; 0x0224B690 + push {r3, r4, r5, lr} + add r5, r1, #0 + bl Heap_AllocAtEnd + add r4, r0, #0 + bne _0224B6A0 + bl GF_AssertFail +_0224B6A0: + add r0, r4, #0 + mov r1, #0 + add r2, r5, #0 + bl memset + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + thumb_func_end ov02_0224B690 + + thumb_func_start ov02_0224B6B0 +ov02_0224B6B0: ; 0x0224B6B0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x82 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + bl MapObject_UnpauseMovement + mov r0, #0x82 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + bl MapObject_SetVisible + pop {r3, r4, r5, pc} + .balign 4, 0 + thumb_func_end ov02_0224B6B0 + + thumb_func_start ov02_0224B6D0 +ov02_0224B6D0: ; 0x0224B6D0 + push {r4, lr} + add r4, r1, #0 + bl sub_02068D98 + ldr r1, [r0] + ldr r0, [r0, #4] + str r1, [r4] + str r0, [r4, #4] + mov r0, #1 + pop {r4, pc} + thumb_func_end ov02_0224B6D0 + + thumb_func_start ov02_0224B6E4 +ov02_0224B6E4: ; 0x0224B6E4 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r0, [r4] + bl Sprite_GetMatrixPtr + ldr r1, [r4, #4] + ldr r0, [r0, #4] + ldr r5, [r1, #0x4c] + ldr r3, [r1, #0x50] + ldr r1, [r1, #0x1c] + cmp r1, #0 + bne _0224B720 + mov r1, #2 + lsl r1, r1, #0xe + sub r2, r0, r1 + cmp r2, r5 + blt _0224B716 + add r0, r0, r1 + cmp r0, r3 + bgt _0224B716 + ldr r0, [r4] + mov r1, #1 + bl Sprite_SetDrawFlag + pop {r3, r4, r5, pc} +_0224B716: + ldr r0, [r4] + mov r1, #0 + bl Sprite_SetDrawFlag + pop {r3, r4, r5, pc} +_0224B720: + ldr r0, [r4] + mov r1, #1 + bl Sprite_SetDrawFlag + pop {r3, r4, r5, pc} + .balign 4, 0 + thumb_func_end ov02_0224B6E4 + + thumb_func_start ov02_0224B72C +ov02_0224B72C: ; 0x0224B72C + push {r3, r4, lr} + sub sp, #0x1c + add r2, sp, #0x10 + mov r3, #0 + str r3, [r2] + add r4, r0, #0 + str r3, [r2, #4] + mov r0, #0x79 + str r3, [r2, #8] + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r0, r0, #4 + str r1, [sp, #8] + str r4, [sp, #0xc] + add r1, sp, #8 + str r1, [sp] + mov r1, #0x87 + str r1, [sp, #4] + ldr r0, [r4, r0] + ldr r1, _0224B764 ; =ov02_02253440 + bl sub_02068B0C + mov r1, #0x7d + lsl r1, r1, #2 + str r0, [r4, r1] + add sp, #0x1c + pop {r3, r4, pc} + nop +_0224B764: .word ov02_02253440 + thumb_func_end ov02_0224B72C + + thumb_func_start ov02_0224B768 +ov02_0224B768: ; 0x0224B768 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x7d + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0224B782 + bl sub_02068B48 + mov r0, #0x7d + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_0224B782: + pop {r4, pc} + thumb_func_end ov02_0224B768 + + thumb_func_start ov02_0224B784 +ov02_0224B784: ; 0x0224B784 + push {r4, lr} + sub sp, #0x18 + add r2, sp, #0xc + mov r1, #0 + str r1, [r2] + add r4, r0, #0 + str r1, [r2, #4] + str r1, [r2, #8] + str r4, [sp, #8] + bl ov02_0224B88C + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0xc + bl MapObject_CopyPositionVector + add r0, sp, #8 + str r0, [sp] + mov r0, #0x83 + str r0, [sp, #4] + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r1, _0224B7C8 ; =ov02_02253490 + add r2, sp, #0xc + mov r3, #0 + bl sub_02068B0C + mov r1, #0x1f + lsl r1, r1, #4 + str r0, [r4, r1] + add sp, #0x18 + pop {r4, pc} + .balign 4, 0 +_0224B7C8: .word ov02_02253490 + thumb_func_end ov02_0224B784 + + thumb_func_start ov02_0224B7CC +ov02_0224B7CC: ; 0x0224B7CC + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl sub_02068D98 + ldr r1, [r0] + mov r6, #0x8a + str r1, [r4] + ldr r4, [r0] + lsl r6, r6, #2 + add r0, r5, #0 + add r1, sp, #0 + bl sub_02068DB8 + add r0, r4, r6 + add r0, #0x24 + add r1, sp, #0 + bl Field3dObject_SetPos + add r0, r4, r6 + add r0, #0x24 + mov r1, #0 + bl Field3dObject_SetActiveFlag + mov r0, #1 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + thumb_func_end ov02_0224B7CC + + thumb_func_start ov02_0224B804 +ov02_0224B804: ; 0x0224B804 + bx lr + .balign 4, 0 + thumb_func_end ov02_0224B804 + + thumb_func_start ov02_0224B808 +ov02_0224B808: ; 0x0224B808 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r0, [r5, #4] + mov r6, #0x8a + lsl r6, r6, #2 + ldr r4, [r5] + cmp r0, #3 + bhi _0224B878 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224B824: ; jump table + .short _0224B82C - _0224B824 - 2 ; case 0 + .short _0224B832 - _0224B824 - 2 ; case 1 + .short _0224B854 - _0224B824 - 2 ; case 2 + .short _0224B878 - _0224B824 - 2 ; case 3 +_0224B82C: + mov r0, #1 + str r0, [r5, #4] + pop {r4, r5, r6, pc} +_0224B832: + add r0, r4, r6 + add r0, #0x24 + mov r1, #1 + bl Field3dObject_SetActiveFlag + add r0, r4, r6 + add r0, #0x9c + mov r1, #0 + bl Field3dModelAnimation_FrameSet + add r0, r4, r6 + add r0, #0xb0 + mov r1, #0 + bl Field3dModelAnimation_FrameSet + mov r0, #2 + str r0, [r5, #4] +_0224B854: + add r0, r4, r6 + mov r1, #1 + add r0, #0x9c + lsl r1, r1, #0xc + bl Field3dModelAnimation_FrameAdvanceAndCheck + add r0, r4, r6 + mov r1, #1 + add r0, #0xb0 + lsl r1, r1, #0xc + bl Field3dModelAnimation_FrameAdvanceAndCheck + cmp r0, #0 + beq _0224B878 + mov r0, #1 + str r0, [r5, #8] + mov r0, #3 + str r0, [r5, #4] +_0224B878: + pop {r4, r5, r6, pc} + .balign 4, 0 + thumb_func_end ov02_0224B808 + + thumb_func_start ov02_0224B87C +ov02_0224B87C: ; 0x0224B87C + mov r0, #0x93 + ldr r1, [r1] + lsl r0, r0, #2 + ldr r3, _0224B888 ; =Field3dObject_Draw + add r0, r1, r0 + bx r3 + .balign 4, 0 +_0224B888: .word Field3dObject_Draw + thumb_func_end ov02_0224B87C + + thumb_func_start ov02_0224B88C +ov02_0224B88C: ; 0x0224B88C + push {r4, lr} + sub sp, #8 + mov r1, #0x8a + lsl r1, r1, #2 + add r4, r0, r1 + add r0, r4, #0 + mov r1, #4 + mov r2, #0x20 + bl HeapExp_FndInitAllocator + mov r0, #0x67 + mov r1, #0x83 + mov r2, #4 + bl AllocAtEndAndReadWholeNarcMemberByIdPair + str r0, [r4, #0x10] + add r0, r4, #0 + ldr r1, [r4, #0x10] + add r0, #0x14 + bl ov01_021FBD38 + add r0, r4, #0 + add r1, r4, #0 + add r0, #0x24 + add r1, #0x14 + bl Field3dObject_InitFromModel + mov r0, #4 + str r0, [sp] + add r0, r4, #0 + add r1, r4, #0 + add r0, #0x9c + add r1, #0x14 + mov r2, #0x67 + mov r3, #0xa7 + str r4, [sp, #4] + bl Field3dModelAnimation_LoadFromFilesystem + mov r0, #4 + str r0, [sp] + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xb0 + add r1, #0x14 + mov r2, #0x67 + mov r3, #0xa5 + str r4, [sp, #4] + bl Field3dModelAnimation_LoadFromFilesystem + add r0, r4, #0 + add r1, r4, #0 + add r0, #0x24 + add r1, #0x9c + bl Field3dObject_AddAnimation + add r0, r4, #0 + add r4, #0xb0 + add r0, #0x24 + add r1, r4, #0 + bl Field3dObject_AddAnimation + add sp, #8 + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_0224B88C + + thumb_func_start ov02_0224B90C +ov02_0224B90C: ; 0x0224B90C + push {r4, lr} + mov r1, #0x8a + lsl r1, r1, #2 + add r4, r0, r1 + add r0, r4, #0 + add r0, #0x14 + bl ov01_021FBDFC + ldr r0, [r4, #0x10] + bl ov01_021F1448 + add r0, r4, #0 + add r0, #0x9c + add r1, r4, #0 + bl Field3dModelAnimation_Unload + add r0, r4, #0 + add r0, #0xb0 + add r1, r4, #0 + bl Field3dModelAnimation_Unload + pop {r4, pc} + thumb_func_end ov02_0224B90C + + thumb_func_start ov02_0224B938 +ov02_0224B938: ; 0x0224B938 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl MapObject_SetVisible + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl sub_0205F484 + add r0, r4, #0 + bl ov02_0224B784 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_0224B938 + + thumb_func_start ov02_0224B964 +ov02_0224B964: ; 0x0224B964 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl sub_02068D74 + ldr r0, [r0, #8] + cmp r0, #1 + bne _0224B992 + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl sub_02068B48 + add r0, r4, #0 + bl ov02_0224B90C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} +_0224B992: + mov r0, #0 + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_0224B964 + + thumb_func_start ov02_BattleExit_HandleRoamerAction +ov02_BattleExit_HandleRoamerAction: ; 0x0224B998 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r1, #8] + str r1, [sp] + mov r1, #0 + bl Party_GetMonByIndex + add r7, r0, #0 + ldr r0, [r5, #0xc] + bl Save_Roamers_Get + add r6, r0, #0 + add r0, r7, #0 + mov r1, #5 + mov r2, #0 + bl GetMonData + add r4, r0, #0 + add r0, r6, #0 + add r1, r4, #0 + bl ov02_0224BAA8 + str r0, [sp, #8] + cmp r0, #0 + beq _0224BA50 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl SpeciesToRoamerIdx + str r0, [sp, #4] + add r0, r7, #0 + mov r1, #0xa3 + mov r2, #0 + bl GetMonData + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r7, #0 + mov r1, #0xa0 + mov r2, #0 + bl GetMonData + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + ldr r0, [sp] + ldr r0, [r0, #0x14] + cmp r0, #1 + bne _0224BA14 + cmp r4, #0 + bne _0224BA14 + add r0, sp, #8 + bl RoamerMon_Init + ldr r0, [r5, #0xc] + bl Save_VarsFlags_Get + ldr r1, [sp, #4] + mov r2, #2 + bl sub_02066BE8 + b _0224BA42 +_0224BA14: + cmp r0, #4 + bne _0224BA2E + add r0, sp, #8 + bl RoamerMon_Init + ldr r0, [r5, #0xc] + bl Save_VarsFlags_Get + ldr r1, [sp, #4] + mov r2, #1 + bl sub_02066BE8 + b _0224BA42 +_0224BA2E: + ldr r0, [sp, #8] + mov r1, #5 + add r2, r4, #0 + bl SetRoamerData + ldr r0, [sp, #8] + mov r1, #7 + add r2, r7, #0 + bl SetRoamerData +_0224BA42: + ldr r1, [r5, #0x20] + add r0, r6, #0 + ldr r1, [r1] + bl ov02_RepelActiveRoamersFromMapNo + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0224BA50: + bl LCRandom + mov r1, #0x64 + bl _s32_div_f + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + cmp r0, #0x1e + bhs _0224BA6C + ldr r1, [r5, #0x20] + add r0, r6, #0 + ldr r1, [r1] + bl ov02_RepelActiveRoamersFromMapNo +_0224BA6C: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end ov02_BattleExit_HandleRoamerAction + + thumb_func_start ov02_RepelActiveRoamersFromMapNo +ov02_RepelActiveRoamersFromMapNo: ; 0x0224BA70 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 +_0224BA78: + add r0, r5, #0 + add r1, r4, #0 + bl GetRoamerIsActiveByIndex + cmp r0, #0 + beq _0224BA9C + add r0, r5, #0 + add r1, r4, #0 + bl Roamer_GetLocation + bl GetRoamMapByLocationIdx + cmp r6, r0 + bne _0224BA9C + add r0, r5, #0 + add r1, r4, #0 + bl RoamerLocationUpdateRand +_0224BA9C: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _0224BA78 + pop {r4, r5, r6, pc} + thumb_func_end ov02_RepelActiveRoamersFromMapNo + + thumb_func_start ov02_0224BAA8 +ov02_0224BAA8: ; 0x0224BAA8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 +_0224BAB0: + add r0, r5, #0 + add r1, r4, #0 + bl GetRoamerIsActiveByIndex + cmp r0, #0 + beq _0224BAD4 + add r0, r5, #0 + add r1, r4, #0 + bl Roamers_GetRoamMonStats + mov r1, #4 + add r7, r0, #0 + bl GetRoamerData + cmp r6, r0 + bne _0224BAD4 + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224BAD4: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _0224BAB0 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end ov02_0224BAA8 + + thumb_func_start PlayerStepEvent_RepelCounterDecrement +PlayerStepEvent_RepelCounterDecrement: ; 0x0224BAE4 + push {r4, lr} + add r4, r1, #0 + bl Save_Roamers_Get + bl RoamerSave_GetRepelAddr + ldrb r1, [r0] + cmp r1, #0 + beq _0224BB0E + sub r1, r1, #1 + strb r1, [r0] + ldrb r0, [r0] + cmp r0, #0 + bne _0224BB0E + ldr r1, _0224BB14 ; =std_repel_wore_off + add r0, r4, #0 + mov r2, #0 + bl StartMapSceneScript + mov r0, #1 + pop {r4, pc} +_0224BB0E: + mov r0, #0 + pop {r4, pc} + nop +_0224BB14: .word std_repel_wore_off + thumb_func_end PlayerStepEvent_RepelCounterDecrement + + thumb_func_start PokecenterAnimCreate +PokecenterAnimCreate: ; 0x0224BB18 + push {r4, r5, r6, lr} + sub sp, #0x20 + add r6, r1, #0 + mov r1, #0x24 + add r2, sp, #4 + add r3, sp, #0 + add r5, r0, #0 + bl sub_02054C20 + cmp r0, #0 + beq _0224BB84 + mov r0, #4 + mov r1, #0x18 + bl Heap_AllocAtEnd + add r4, r0, #0 + strb r6, [r4, #0xc] + mov r0, #0 + strb r0, [r4, #0xd] + strb r0, [r4, #0xe] + strb r0, [r4, #0xf] + ldr r0, [r5, #0x30] + bl MapMatrix_GetWidth + add r1, r0, #0 + ldr r0, [sp] + add r2, sp, #0x14 + bl sub_02054DC8 + ldr r1, [sp, #4] + add r0, sp, #8 + bl ov01_021F3B0C + add r3, sp, #8 + ldmia r3!, {r0, r1} + add r2, r4, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r1, [r4] + ldr r0, [sp, #0x14] + add r2, r4, #0 + add r0, r1, r0 + str r0, [r4] + ldr r1, [r4, #8] + ldr r0, [sp, #0x1c] + add r0, r1, r0 + str r0, [r4, #8] + ldr r0, [r5, #0x10] + ldr r1, _0224BB8C ; =PokecenterAnimRun + bl TaskManager_Call + add sp, #0x20 + pop {r4, r5, r6, pc} +_0224BB84: + bl GF_AssertFail + add sp, #0x20 + pop {r4, r5, r6, pc} + .balign 4, 0 +_0224BB8C: .word PokecenterAnimRun + thumb_func_end PokecenterAnimCreate + + thumb_func_start PokecenterAnimRun +PokecenterAnimRun: ; 0x0224BB90 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r4, r0, #0 + bl TaskManager_GetFieldSystem + add r6, r0, #0 + add r0, r4, #0 + bl TaskManager_GetEnvironment + add r4, r0, #0 + ldrb r1, [r4, #0xf] + cmp r1, #5 + bls _0224BBAC + b _0224BDCC +_0224BBAC: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224BBB8: ; jump table + .short _0224BBC4 - _0224BBB8 - 2 ; case 0 + .short _0224BC98 - _0224BBB8 - 2 ; case 1 + .short _0224BCFA - _0224BBB8 - 2 ; case 2 + .short _0224BD42 - _0224BBB8 - 2 ; case 3 + .short _0224BD64 - _0224BBB8 - 2 ; case 4 + .short _0224BDC2 - _0224BBB8 - 2 ; case 5 +_0224BBC4: + ldr r1, [r6, #0x34] + mov r0, #0x6b + bl ov01_021FB90C + add r5, r0, #0 + ldr r1, [r6, #0x34] + mov r0, #0x25 + bl ov01_021FB90C + add r7, r0, #0 + ldr r0, [r5] + bl NNS_G3dGetMdlSet + cmp r0, #0 + beq _0224BC02 + add r2, r0, #0 + add r2, #8 + beq _0224BBF6 + ldrb r1, [r0, #9] + cmp r1, #0 + bls _0224BBF6 + ldrh r1, [r0, #0xe] + add r1, r2, r1 + add r1, r1, #4 + b _0224BBF8 +_0224BBF6: + mov r1, #0 +_0224BBF8: + cmp r1, #0 + beq _0224BC02 + ldr r1, [r1] + add r5, r0, r1 + b _0224BC04 +_0224BC02: + mov r5, #0 +_0224BC04: + ldr r0, [r7] + bl NNS_G3dGetMdlSet + cmp r0, #0 + beq _0224BC2E + add r2, r0, #0 + add r2, #8 + beq _0224BC22 + ldrb r1, [r0, #9] + cmp r1, #0 + bls _0224BC22 + ldrh r1, [r0, #0xe] + add r1, r2, r1 + add r1, r1, #4 + b _0224BC24 +_0224BC22: + mov r1, #0 +_0224BC24: + cmp r1, #0 + beq _0224BC2E + ldr r1, [r1] + add r7, r0, r1 + b _0224BC30 +_0224BC2E: + mov r7, #0 +_0224BC30: + ldr r0, [r6, #0x34] + bl ov01_021FB9E0 + mov r1, #0 + str r1, [sp] + str r5, [sp, #4] + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r1, [sp, #0x14] + ldr r0, [r6, #0x54] + ldr r1, [r6, #0x58] + mov r2, #0x10 + mov r3, #0x6b + bl ov01_021E8DE8 + add r0, r6, #0 + mov r1, #0x25 + add r2, sp, #0x18 + mov r3, #0 + bl sub_02054C20 + cmp r0, #0 + bne _0224BC66 + bl GF_AssertFail +_0224BC66: + ldr r0, [sp, #0x18] + bl ov01_021F3B38 + add r5, r0, #0 + ldr r0, [r6, #0x34] + bl ov01_021FB9E0 + str r5, [sp] + str r7, [sp, #4] + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [r6, #0x54] + ldr r1, [r6, #0x58] + mov r2, #0x20 + mov r3, #0x25 + bl ov01_021E8DE8 + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224BDCC +_0224BC98: + add r1, sp, #0x1c + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + ldrb r2, [r4, #0xd] + mov r1, #0xc + ldr r0, [r4] + add r3, r2, #0 + ldr r2, _0224BDD4 ; =ov02_02253D90 + mul r3, r1 + ldr r2, [r2, r3] + add r0, r0, r2 + str r0, [sp, #0x28] + ldrb r2, [r4, #0xd] + ldr r0, [r4, #4] + add r3, r2, #0 + ldr r2, _0224BDD8 ; =ov02_02253D94 + mul r3, r1 + ldr r2, [r2, r3] + add r0, r0, r2 + str r0, [sp, #0x2c] + ldrb r2, [r4, #0xd] + ldr r0, [r4, #8] + add r3, r2, #0 + mul r3, r1 + ldr r1, _0224BDDC ; =ov02_02253D98 + ldr r1, [r1, r3] + add r0, r0, r1 + str r0, [sp, #0x30] + ldr r0, _0224BDE0 ; =SEQ_SE_DP_BOWA + bl PlaySE + ldr r0, [r6, #0x54] + add r6, #0x9c + str r0, [sp] + ldr r0, [r6] + mov r1, #0x6b + add r2, sp, #0x28 + add r3, sp, #0x1c + bl ov01_021F3C0C + ldrb r1, [r4, #0xd] + add r1, r4, r1 + strb r0, [r1, #0x10] + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224BDCC +_0224BCFA: + ldrb r0, [r4, #0xe] + cmp r0, #0xc + bhs _0224BD06 + add r0, r0, #1 + strb r0, [r4, #0xe] + b _0224BDCC +_0224BD06: + mov r0, #0 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xd] + add r0, r0, #1 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0xd] + ldrb r0, [r4, #0xc] + cmp r1, r0 + bhs _0224BD1E + mov r0, #1 + strb r0, [r4, #0xf] + b _0224BDCC +_0224BD1E: + add r0, r6, #0 + add r0, #0x9c + ldrb r1, [r4, #0x10] + ldr r0, [r0] + bl ov01_021F3B60 + bl ov01_021F3B38 + add r3, r0, #0 + ldr r0, [r6, #0x58] + mov r1, #0x10 + mov r2, #0 + bl ov01_021E8E40 + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224BDCC +_0224BD42: + ldr r0, [r6, #0x58] + mov r1, #0x10 + mov r2, #0 + bl ov01_021E8E70 + ldr r0, [r6, #0x58] + mov r1, #0x20 + mov r2, #0 + bl ov01_021E8E70 + ldr r0, _0224BDE4 ; =SEQ_ME_ASA + bl PlayFanfare + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224BDCC +_0224BD64: + ldr r0, [r6, #0x58] + mov r1, #0x10 + bl ov01_021E8F10 + cmp r0, #0 + beq _0224BDCC + ldr r0, [r6, #0x58] + mov r1, #0x20 + bl ov01_021E8F10 + cmp r0, #0 + beq _0224BDCC + bl IsFanfarePlaying + cmp r0, #0 + bne _0224BDCC + ldr r0, [r6, #0x54] + ldr r1, [r6, #0x58] + mov r2, #0x20 + bl ov01_021E8ED0 + ldr r0, [r6, #0x54] + ldr r1, [r6, #0x58] + mov r2, #0x10 + bl ov01_021E8ED0 + ldrb r0, [r4, #0xc] + mov r5, #0 + cmp r0, #0 + bls _0224BDBA +_0224BDA0: + add r0, r4, r5 + add r1, r6, #0 + add r1, #0x9c + ldrb r0, [r0, #0x10] + ldr r1, [r1] + bl ov01_021F36DC + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldrb r0, [r4, #0xc] + cmp r5, r0 + blo _0224BDA0 +_0224BDBA: + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224BDCC +_0224BDC2: + bl Heap_Free + add sp, #0x34 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224BDCC: + mov r0, #0 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_0224BDD4: .word ov02_02253D90 +_0224BDD8: .word ov02_02253D94 +_0224BDDC: .word ov02_02253D98 +_0224BDE0: .word SEQ_SE_DP_BOWA +_0224BDE4: .word SEQ_ME_ASA + thumb_func_end PokecenterAnimRun + + thumb_func_start ov02_0224BDE8 +ov02_0224BDE8: ; 0x0224BDE8 + push {r4, r5, r6, lr} + add r6, r2, #0 + mov r2, #0 + add r4, r1, #0 + mov r1, #0xd0 + add r3, r2, #0 + add r5, r0, #0 + bl sub_02054C20 + cmp r0, #0 + beq _0224BE1A + mov r0, #4 + add r1, r0, #0 + bl Heap_AllocAtEnd + add r2, r0, #0 + strb r6, [r2] + strb r4, [r2, #1] + mov r0, #0 + strb r0, [r2, #2] + ldr r0, [r5, #0x10] + ldr r1, _0224BE20 ; =ov02_0224BE24 + bl TaskManager_Call + pop {r4, r5, r6, pc} +_0224BE1A: + bl GF_AssertFail + pop {r4, r5, r6, pc} + .balign 4, 0 +_0224BE20: .word ov02_0224BE24 + thumb_func_end ov02_0224BDE8 + + thumb_func_start ov02_0224BE24 +ov02_0224BE24: ; 0x0224BE24 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r0, #0 + bl TaskManager_GetFieldSystem + add r6, r0, #0 + add r0, r4, #0 + bl TaskManager_GetEnvironment + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #4 + bls _0224BE40 + b _0224BF48 +_0224BE40: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224BE4C: ; jump table + .short _0224BE56 - _0224BE4C - 2 ; case 0 + .short _0224BED2 - _0224BE4C - 2 ; case 1 + .short _0224BF00 - _0224BE4C - 2 ; case 2 + .short _0224BF2C - _0224BE4C - 2 ; case 3 + .short _0224BF3E - _0224BE4C - 2 ; case 4 +_0224BE56: + ldr r1, [r6, #0x34] + mov r0, #0xd0 + bl ov01_021FB90C + ldr r0, [r0] + bl NNS_G3dGetMdlSet + cmp r0, #0 + beq _0224BE88 + add r2, r0, #0 + add r2, #8 + beq _0224BE7C + ldrb r1, [r0, #9] + cmp r1, #0 + bls _0224BE7C + ldrh r1, [r0, #0xe] + add r1, r2, r1 + add r1, r1, #4 + b _0224BE7E +_0224BE7C: + mov r1, #0 +_0224BE7E: + cmp r1, #0 + beq _0224BE88 + ldr r1, [r1] + add r7, r0, r1 + b _0224BE8A +_0224BE88: + mov r7, #0 +_0224BE8A: + add r0, r6, #0 + mov r1, #0xd0 + add r2, sp, #0x18 + mov r3, #0 + bl sub_02054C20 + cmp r0, #0 + bne _0224BE9E + bl GF_AssertFail +_0224BE9E: + ldr r0, [sp, #0x18] + bl ov01_021F3B38 + add r5, r0, #0 + ldr r0, [r6, #0x34] + bl ov01_021FB9E0 + str r5, [sp] + str r7, [sp, #4] + str r0, [sp, #8] + mov r0, #2 + str r0, [sp, #0xc] + ldrb r0, [r4] + mov r2, #1 + mov r3, #0xd0 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [r6, #0x54] + ldr r1, [r6, #0x58] + bl ov01_021E8DE8 + ldrb r0, [r4, #2] + add r0, r0, #1 + strb r0, [r4, #2] + b _0224BF48 +_0224BED2: + ldrb r0, [r4, #1] + mov r1, #1 + cmp r0, #0 + beq _0224BEE0 + cmp r0, #1 + beq _0224BEE0 + mov r1, #0 +_0224BEE0: + cmp r1, #0 + bne _0224BEE8 + bl GF_AssertFail +_0224BEE8: + ldrb r2, [r4, #1] + ldr r0, [r6, #0x58] + mov r1, #1 + bl ov01_021E8E70 + ldr r0, _0224BF50 ; =SEQ_SE_DP_ELEBETA2 + bl PlaySE + ldrb r0, [r4, #2] + add r0, r0, #1 + strb r0, [r4, #2] + b _0224BF48 +_0224BF00: + ldr r0, [r6, #0x58] + mov r1, #1 + bl ov01_021E8F10 + cmp r0, #0 + beq _0224BF48 + ldr r0, _0224BF50 ; =SEQ_SE_DP_ELEBETA2 + mov r1, #0 + bl StopSE + ldr r0, _0224BF54 ; =SEQ_SE_DP_PINPON + bl PlaySE + ldr r0, [r6, #0x54] + ldr r1, [r6, #0x58] + mov r2, #1 + bl ov01_021E8ED0 + ldrb r0, [r4, #2] + add r0, r0, #1 + strb r0, [r4, #2] + b _0224BF48 +_0224BF2C: + ldr r0, _0224BF54 ; =SEQ_SE_DP_PINPON + bl IsSEPlaying + cmp r0, #0 + bne _0224BF48 + ldrb r0, [r4, #2] + add r0, r0, #1 + strb r0, [r4, #2] + b _0224BF48 +_0224BF3E: + bl Heap_Free + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224BF48: + mov r0, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_0224BF50: .word SEQ_SE_DP_ELEBETA2 +_0224BF54: .word SEQ_SE_DP_PINPON + thumb_func_end ov02_0224BE24 + + thumb_func_start ov02_0224BF58 +ov02_0224BF58: ; 0x0224BF58 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + ldr r2, _0224BFBC ; =ov02_022536E8 + add r7, r1, #0 + ldr r3, [r2] + ldr r2, [r2, #4] + str r3, [sp, #0x18] + str r2, [sp, #0x1c] + add r2, sp, #0x20 + str r2, [sp] + add r1, sp, #0x18 + mov r2, #2 + add r3, sp, #0x24 + add r5, r0, #0 + bl sub_02054C90 + cmp r0, #0 + beq _0224BFB4 + ldr r0, [r5, #0x34] + bl ov01_021FB9E0 + add r6, r0, #0 + ldr r0, [sp, #0x24] + bl ov01_021F3B38 + add r4, r0, #0 + ldr r0, [sp, #0x24] + bl ov01_021F3B3C + str r4, [sp] + str r0, [sp, #4] + str r6, [sp, #8] + mov r0, #2 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + ldr r3, [sp, #0x20] + add r2, r7, #0 + bl ov01_021E8DE8 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} +_0224BFB4: + bl GF_AssertFail + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_0224BFBC: .word ov02_022536E8 + thumb_func_end ov02_0224BF58 + + thumb_func_start ov02_0224BFC0 +ov02_0224BFC0: ; 0x0224BFC0 + ldr r3, _0224BFC8 ; =ov01_021E8E70 + ldr r0, [r0, #0x58] + mov r2, #0 + bx r3 + .balign 4, 0 +_0224BFC8: .word ov01_021E8E70 + thumb_func_end ov02_0224BFC0 + + thumb_func_start ov02_0224BFCC +ov02_0224BFCC: ; 0x0224BFCC + ldr r3, _0224BFD4 ; =ov01_021E8E70 + ldr r0, [r0, #0x58] + mov r2, #1 + bx r3 + .balign 4, 0 +_0224BFD4: .word ov01_021E8E70 + thumb_func_end ov02_0224BFCC + + thumb_func_start CreateFieldEscapeRopeTaskEnv +CreateFieldEscapeRopeTaskEnv: ; 0x0224BFD8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, r1, #0 + mov r1, #0x30 + bl ov02_0224C660 + add r4, r0, #0 + mov r0, #0 + str r0, [r4, #0xc] + str r5, [r4, #0x24] + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetMapObject + str r0, [r4, #0x20] + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetState + sub r0, r0, #1 + cmp r0, #1 + bhi _0224C006 + mov r0, #0 + str r0, [r4, #8] + b _0224C01A +_0224C006: + add r0, r5, #0 + bl FollowMon_IsActive + cmp r0, #0 + beq _0224C016 + mov r0, #1 + str r0, [r4, #8] + b _0224C01A +_0224C016: + mov r0, #0 + str r0, [r4, #8] +_0224C01A: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + thumb_func_end CreateFieldEscapeRopeTaskEnv + + thumb_func_start Task_FieldEscapeRope +Task_FieldEscapeRope: ; 0x0224C020 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + bl TaskManager_GetFieldSystem + add r7, r0, #0 + add r0, r6, #0 + bl TaskManager_GetEnvironment + add r5, r0, #0 +_0224C032: + ldr r3, [r5] + add r0, r6, #0 + lsl r4, r3, #2 + ldr r3, _0224C058 ; =ov02_02253700 + add r1, r7, #0 + ldr r3, [r3, r4] + add r2, r5, #0 + blx r3 + add r4, r0, #0 + cmp r4, #2 + bne _0224C04E + add r0, r5, #0 + bl Heap_Free +_0224C04E: + cmp r4, #1 + beq _0224C032 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224C058: .word ov02_02253700 + thumb_func_end Task_FieldEscapeRope + + thumb_func_start ov02_0224C05C +ov02_0224C05C: ; 0x0224C05C + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #4 + add r4, r2, #0 + bl ov01_021FCD2C + ldr r2, _0224C0A4 ; =0xFFF6A000 + str r0, [r4, #0x1c] + mov r1, #1 + mov r3, #0xf + bl ov01_021FCD8C + ldr r0, [r4, #0x20] + ldr r1, _0224C0A8 ; =ov02_02253820 + bl EventObjectMovementMan_Create + str r0, [r4, #0x10] + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224C092 + add r5, #0xe4 + ldr r0, [r5] + ldr r1, _0224C0A8 ; =ov02_02253820 + bl EventObjectMovementMan_Create + str r0, [r4, #0x14] +_0224C092: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + ldr r0, _0224C0AC ; =SEQ_SE_DP_KAIDAN2 + bl PlaySE + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0224C0A4: .word 0xFFF6A000 +_0224C0A8: .word ov02_02253820 +_0224C0AC: .word SEQ_SE_DP_KAIDAN2 + thumb_func_end ov02_0224C05C + + thumb_func_start ov02_0224C0B0 +ov02_0224C0B0: ; 0x0224C0B0 + push {r4, r5, lr} + sub sp, #0xc + add r4, r2, #0 + ldr r0, [r4, #0x10] + add r5, r1, #0 + bl EventObjectMovementMan_IsFinish + cmp r0, #0 + bne _0224C0C8 + add sp, #0xc + mov r0, #0 + pop {r4, r5, pc} +_0224C0C8: + ldr r0, [r4, #0x10] + bl EventObjectMovementMan_Delete + ldr r0, [r4, #0x20] + ldr r1, _0224C144 ; =ov02_02253794 + bl EventObjectMovementMan_Create + str r0, [r4, #0x10] + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224C0F0 + ldr r0, [r4, #0x14] + bl EventObjectMovementMan_Delete + add r5, #0xe4 + ldr r0, [r5] + ldr r1, _0224C144 ; =ov02_02253794 + bl EventObjectMovementMan_Create + str r0, [r4, #0x14] +_0224C0F0: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #8 + bge _0224C100 + add sp, #0xc + mov r0, #0 + pop {r4, r5, pc} +_0224C100: + ldr r0, [r4, #0xc] + cmp r0, #2 + bne _0224C120 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl BeginNormalPaletteFade + b _0224C138 +_0224C120: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0 + ldr r3, _0224C148 ; =0x00007FFF + add r1, r0, #0 + add r2, r0, #0 + bl BeginNormalPaletteFade +_0224C138: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .balign 4, 0 +_0224C144: .word ov02_02253794 +_0224C148: .word 0x00007FFF + thumb_func_end ov02_0224C0B0 + + thumb_func_start ov02_0224C14C +ov02_0224C14C: ; 0x0224C14C + push {r3, r4, r5, lr} + add r4, r2, #0 + ldr r0, [r4, #0x10] + add r5, r1, #0 + bl EventObjectMovementMan_IsFinish + cmp r0, #1 + bne _0224C184 + ldr r0, [r4, #0x10] + bl EventObjectMovementMan_Delete + ldr r0, [r4, #0x20] + ldr r1, _0224C1B4 ; =ov02_02253794 + bl EventObjectMovementMan_Create + str r0, [r4, #0x10] + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224C184 + ldr r0, [r4, #0x14] + bl EventObjectMovementMan_Delete + add r5, #0xe4 + ldr r0, [r5] + ldr r1, _0224C1B4 ; =ov02_02253794 + bl EventObjectMovementMan_Create + str r0, [r4, #0x14] +_0224C184: + bl IsPaletteFadeFinished + cmp r0, #0 + bne _0224C190 + mov r0, #0 + pop {r3, r4, r5, pc} +_0224C190: + ldr r0, [r4, #0x10] + bl EventObjectMovementMan_Delete + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224C1A2 + ldr r0, [r4, #0x14] + bl EventObjectMovementMan_Delete +_0224C1A2: + ldr r0, [r4, #0x1c] + bl ov01_021FCD78 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_0224C1B4: .word ov02_02253794 + thumb_func_end ov02_0224C14C + + thumb_func_start ov02_0224C1B8 +ov02_0224C1B8: ; 0x0224C1B8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r1, #0xc] + add r4, r2, #0 + bl Save_LocalFieldData_Get + bl LocalFieldData_GetSpecialSpawnWarpPtr + add r1, r0, #0 + ldr r2, [r4, #0xc] + add r0, r5, #0 + bl sub_02053B04 + mov r0, #2 + pop {r3, r4, r5, pc} + .balign 4, 0 + thumb_func_end ov02_0224C1B8 + + thumb_func_start ov02_0224C1D8 +ov02_0224C1D8: ; 0x0224C1D8 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, r1, #0 + mov r1, #0x30 + add r6, r2, #0 + bl ov02_0224C660 + add r4, r0, #0 + str r6, [r4, #0xc] + str r5, [r4, #0x24] + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetMapObject + str r0, [r4, #0x20] + add r0, r4, #0 + pop {r4, r5, r6, pc} + thumb_func_end ov02_0224C1D8 + + thumb_func_start ov02_0224C1F8 +ov02_0224C1F8: ; 0x0224C1F8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl TaskManager_GetFieldSystem + add r6, r0, #0 + add r0, r5, #0 + bl TaskManager_GetEnvironment + ldr r7, _0224C230 ; =ov02_022536F0 + add r4, r0, #0 +_0224C20C: + ldr r3, [r4] + add r0, r5, #0 + lsl r3, r3, #2 + ldr r3, [r7, r3] + add r1, r6, #0 + add r2, r4, #0 + blx r3 + cmp r0, #2 + bne _0224C228 + add r0, r4, #0 + bl Heap_Free + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224C228: + cmp r0, #1 + beq _0224C20C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_0224C230: .word ov02_022536F0 + thumb_func_end ov02_0224C1F8 + + thumb_func_start ov02_0224C234 +ov02_0224C234: ; 0x0224C234 + push {r4, r5, lr} + sub sp, #0xc + add r4, r2, #0 + ldr r0, [r4, #0xc] + add r5, r1, #0 + cmp r0, #2 + bne _0224C25A + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl BeginNormalPaletteFade + b _0224C270 +_0224C25A: + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r3, _0224C29C ; =0x00007FFF + mov r0, #0 + add r2, r1, #0 + bl BeginNormalPaletteFade +_0224C270: + add r0, r5, #0 + mov r1, #4 + bl ov01_021FCD2C + mov r1, #1 + ldr r2, _0224C2A0 ; =0xFFF6A000 + str r0, [r4, #0x1c] + add r3, r1, #0 + bl ov01_021FCD8C + ldr r0, [r4, #0x20] + ldr r1, _0224C2A4 ; =ov02_02253794 + bl EventObjectMovementMan_Create + str r0, [r4, #0x10] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_0224C29C: .word 0x00007FFF +_0224C2A0: .word 0xFFF6A000 +_0224C2A4: .word ov02_02253794 + thumb_func_end ov02_0224C234 + + thumb_func_start ov02_0224C2A8 +ov02_0224C2A8: ; 0x0224C2A8 + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #0x10] + bl EventObjectMovementMan_IsFinish + cmp r0, #1 + bne _0224C2C6 + ldr r0, [r4, #0x10] + bl EventObjectMovementMan_Delete + ldr r0, [r4, #0x20] + ldr r1, _0224C2E8 ; =ov02_02253794 + bl EventObjectMovementMan_Create + str r0, [r4, #0x10] +_0224C2C6: + bl IsPaletteFadeFinished + cmp r0, #0 + bne _0224C2D2 + mov r0, #0 + pop {r4, pc} +_0224C2D2: + ldr r0, [r4, #0x1c] + mov r1, #2 + mov r2, #0 + mov r3, #0x3c + bl ov01_021FCD8C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + .balign 4, 0 +_0224C2E8: .word ov02_02253794 + thumb_func_end ov02_0224C2A8 + + thumb_func_start ov02_0224C2EC +ov02_0224C2EC: ; 0x0224C2EC + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #0x10] + bl EventObjectMovementMan_IsFinish + cmp r0, #0 + bne _0224C2FE + mov r0, #0 + pop {r4, pc} +_0224C2FE: + ldr r0, [r4, #0x10] + bl EventObjectMovementMan_Delete + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #4 + ldr r0, [r4, #0x20] + bge _0224C31C + ldr r1, _0224C330 ; =ov02_02253794 + bl EventObjectMovementMan_Create + str r0, [r4, #0x10] + mov r0, #0 + pop {r4, pc} +_0224C31C: + ldr r1, _0224C334 ; =ov02_02253884 + bl EventObjectMovementMan_Create + str r0, [r4, #0x10] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + nop +_0224C330: .word ov02_02253794 +_0224C334: .word ov02_02253884 + thumb_func_end ov02_0224C2EC + + thumb_func_start ov02_0224C338 +ov02_0224C338: ; 0x0224C338 + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #0x10] + bl EventObjectMovementMan_IsFinish + cmp r0, #0 + bne _0224C34A + mov r0, #0 + pop {r4, pc} +_0224C34A: + ldr r0, [r4, #0x1c] + bl ov01_021FCD6C + cmp r0, #0 + bne _0224C358 + mov r0, #0 + pop {r4, pc} +_0224C358: + ldr r0, [r4, #0x1c] + bl ov01_021FCD78 + ldr r0, [r4, #0x10] + bl EventObjectMovementMan_Delete + mov r0, #2 + pop {r4, pc} + thumb_func_end ov02_0224C338 + + thumb_func_start FieldMoveTask_CreateDigEnvironment +FieldMoveTask_CreateDigEnvironment: ; 0x0224C368 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r0, r3, #0 + mov r1, #0x30 + add r7, r2, #0 + bl ov02_0224C660 + add r4, r0, #0 + mov r0, #1 + str r0, [r4, #0xc] + str r5, [r4, #0x24] + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetMapObject + str r0, [r4, #0x20] + add r0, r5, #0 + str r6, [r4, #0x28] + bl ov01_02206268 + cmp r0, #0 + beq _0224C3A4 + add r0, r5, #0 + bl ov01_022062CC + cmp r7, r0 + bne _0224C3A4 + mov r0, #1 + str r0, [r4, #8] + b _0224C3A8 +_0224C3A4: + mov r0, #0 + str r0, [r4, #8] +_0224C3A8: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end FieldMoveTask_CreateDigEnvironment + + thumb_func_start Task_FieldDig +Task_FieldDig: ; 0x0224C3AC + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + bl TaskManager_GetFieldSystem + add r6, r0, #0 + add r0, r7, #0 + bl TaskManager_GetEnvironment + add r4, r0, #0 + add r0, r7, #0 + bl TaskManager_GetStatePtr + add r5, r0, #0 + ldr r0, [r5] + cmp r0, #3 + bhi _0224C4A2 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224C3D8: ; jump table + .short _0224C3E0 - _0224C3D8 - 2 ; case 0 + .short _0224C3F8 - _0224C3D8 - 2 ; case 1 + .short _0224C42A - _0224C3D8 - 2 ; case 2 + .short _0224C45C - _0224C3D8 - 2 ; case 3 +_0224C3E0: + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224C3F0 + ldr r1, _0224C4A8 ; =ov01_02205A60 + add r0, r7, #0 + mov r2, #0 + bl TaskManager_Call +_0224C3F0: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0224C4A2 +_0224C3F8: + add r0, r0, #1 + str r0, [r5] + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224C42A + add r0, r6, #0 + mov r1, #4 + bl ov02_02250780 + cmp r0, #0 + beq _0224C41E + mov r0, #0x42 + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r1, #1 + mov r4, #2 + bl FieldSystem_UnkSub108_AddMonMood + b _0224C420 +_0224C41E: + mov r4, #1 +_0224C420: + add r0, r6, #0 + add r1, r4, #0 + bl ov02_022507B4 + b _0224C4A2 +_0224C42A: + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224C456 + ldr r0, [r4, #0x28] + mov r1, #5 + mov r2, #0 + bl GetMonData + str r0, [sp] + ldr r0, [r4, #0x28] + mov r1, #0x70 + mov r2, #0 + bl GetMonData + add r1, r0, #0 + ldr r0, [sp] + lsl r1, r1, #0x18 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsr r1, r1, #0x18 + bl PlayCry +_0224C456: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] +_0224C45C: + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224C482 + bl IsCryFinished + cmp r0, #0 + beq _0224C46E + mov r5, #0 + b _0224C494 +_0224C46E: + ldr r3, [r4] + add r0, r7, #0 + lsl r5, r3, #2 + ldr r3, _0224C4AC ; =ov02_02253710 + add r1, r6, #0 + ldr r3, [r3, r5] + add r2, r4, #0 + blx r3 + add r5, r0, #0 + b _0224C494 +_0224C482: + ldr r3, [r4] + add r0, r7, #0 + lsl r5, r3, #2 + ldr r3, _0224C4B0 ; =ov02_02253754 + add r1, r6, #0 + ldr r3, [r3, r5] + add r2, r4, #0 + blx r3 + add r5, r0, #0 +_0224C494: + cmp r5, #2 + bne _0224C49E + add r0, r4, #0 + bl Heap_Free +_0224C49E: + cmp r5, #1 + beq _0224C45C +_0224C4A2: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224C4A8: .word ov01_02205A60 +_0224C4AC: .word ov02_02253710 +_0224C4B0: .word ov02_02253754 + thumb_func_end Task_FieldDig + + thumb_func_start ov02_0224C4B4 +ov02_0224C4B4: ; 0x0224C4B4 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x40] + add r4, r2, #0 + bl PlayerAvatar_GetGender + add r3, r0, #0 + ldr r2, [r4, #0x28] + add r0, r5, #0 + mov r1, #0 + bl ov02_02249458 + str r0, [r4, #0x18] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end ov02_0224C4B4 + + thumb_func_start ov02_0224C4D8 +ov02_0224C4D8: ; 0x0224C4D8 + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #0x18] + bl ov02_0224953C + cmp r0, #0 + bne _0224C4EA + mov r0, #0 + pop {r4, pc} +_0224C4EA: + ldr r0, [r4, #0x18] + bl ov02_02249548 + ldr r0, [r4, #0x24] + bl ov01_02205D68 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + thumb_func_end ov02_0224C4D8 + + thumb_func_start FieldMoveTask_CreateTeleportEnvironment +FieldMoveTask_CreateTeleportEnvironment: ; 0x0224C500 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r0, r3, #0 + mov r1, #0x30 + add r7, r2, #0 + bl ov02_0224C660 + add r4, r0, #0 + mov r0, #2 + str r0, [r4, #0xc] + str r5, [r4, #0x24] + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetMapObject + str r0, [r4, #0x20] + str r6, [r4, #0x28] + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetState + sub r0, r0, #1 + cmp r0, #1 + bhi _0224C534 + mov r0, #0 + str r0, [r4, #8] + b _0224C552 +_0224C534: + add r0, r5, #0 + bl ov01_02206268 + cmp r0, #0 + beq _0224C54E + add r0, r5, #0 + bl ov01_022062CC + cmp r7, r0 + bne _0224C54E + mov r0, #1 + str r0, [r4, #8] + b _0224C552 +_0224C54E: + mov r0, #0 + str r0, [r4, #8] +_0224C552: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end FieldMoveTask_CreateTeleportEnvironment + + thumb_func_start Task_FieldTeleport +Task_FieldTeleport: ; 0x0224C558 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + bl TaskManager_GetFieldSystem + add r6, r0, #0 + add r0, r7, #0 + bl TaskManager_GetEnvironment + add r4, r0, #0 + add r0, r7, #0 + bl TaskManager_GetStatePtr + add r5, r0, #0 + ldr r0, [r5] + cmp r0, #3 + bhi _0224C64E + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224C584: ; jump table + .short _0224C58C - _0224C584 - 2 ; case 0 + .short _0224C5A4 - _0224C584 - 2 ; case 1 + .short _0224C5D6 - _0224C584 - 2 ; case 2 + .short _0224C608 - _0224C584 - 2 ; case 3 +_0224C58C: + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224C59C + ldr r1, _0224C654 ; =ov01_02205A60 + add r0, r7, #0 + mov r2, #0 + bl TaskManager_Call +_0224C59C: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0224C64E +_0224C5A4: + add r0, r0, #1 + str r0, [r5] + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224C5D6 + add r0, r6, #0 + mov r1, #0xe + bl ov02_02250780 + cmp r0, #0 + beq _0224C5CA + mov r0, #0x42 + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r1, #1 + mov r4, #2 + bl FieldSystem_UnkSub108_AddMonMood + b _0224C5CC +_0224C5CA: + mov r4, #1 +_0224C5CC: + add r0, r6, #0 + add r1, r4, #0 + bl ov02_022507B4 + b _0224C64E +_0224C5D6: + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224C602 + ldr r0, [r4, #0x28] + mov r1, #5 + mov r2, #0 + bl GetMonData + str r0, [sp] + ldr r0, [r4, #0x28] + mov r1, #0x70 + mov r2, #0 + bl GetMonData + add r1, r0, #0 + ldr r0, [sp] + lsl r1, r1, #0x18 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsr r1, r1, #0x18 + bl PlayCry +_0224C602: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] +_0224C608: + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224C62E + bl IsCryFinished + cmp r0, #0 + beq _0224C61A + mov r5, #0 + b _0224C640 +_0224C61A: + ldr r3, [r4] + add r0, r7, #0 + lsl r5, r3, #2 + ldr r3, _0224C658 ; =ov02_0225373C + add r1, r6, #0 + ldr r3, [r3, r5] + add r2, r4, #0 + blx r3 + add r5, r0, #0 + b _0224C640 +_0224C62E: + ldr r3, [r4] + add r0, r7, #0 + lsl r5, r3, #2 + ldr r3, _0224C65C ; =ov02_02253724 + add r1, r6, #0 + ldr r3, [r3, r5] + add r2, r4, #0 + blx r3 + add r5, r0, #0 +_0224C640: + cmp r5, #2 + bne _0224C64A + add r0, r4, #0 + bl Heap_Free +_0224C64A: + cmp r5, #1 + beq _0224C608 +_0224C64E: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224C654: .word ov01_02205A60 +_0224C658: .word ov02_0225373C +_0224C65C: .word ov02_02253724 + thumb_func_end Task_FieldTeleport + + thumb_func_start ov02_0224C660 +ov02_0224C660: ; 0x0224C660 + push {r3, r4, r5, lr} + add r5, r1, #0 + bl Heap_AllocAtEnd + add r4, r0, #0 + bne _0224C670 + bl GF_AssertFail +_0224C670: + add r0, r4, #0 + mov r1, #0 + add r2, r5, #0 + bl memset + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + thumb_func_end ov02_0224C660 + + thumb_func_start ov02_0224C680 +ov02_0224C680: ; 0x0224C680 + push {r4, lr} + add r4, r2, #0 + add r0, r1, #0 + mov r1, #2 + mov r2, #1 + bl ov01_022060B8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + thumb_func_end ov02_0224C680 + + thumb_func_start ov02_0224C698 +ov02_0224C698: ; 0x0224C698 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #4 + add r4, r2, #0 + bl ov01_021FCD2C + ldr r2, _0224C6D0 ; =0xFFF6A000 + mov r1, #1 + mov r3, #0xf + str r0, [r4, #0x1c] + bl ov01_021FCD8C + add r5, #0xe4 + ldr r0, [r5] + ldr r1, _0224C6D4 ; =ov02_02253770 + bl EventObjectMovementMan_Create + str r0, [r4, #0x14] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + ldr r0, _0224C6D8 ; =SEQ_SE_DP_TELE + bl PlaySE + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0224C6D0: .word 0xFFF6A000 +_0224C6D4: .word ov02_02253770 +_0224C6D8: .word SEQ_SE_DP_TELE + thumb_func_end ov02_0224C698 + + thumb_func_start ov02_0224C6DC +ov02_0224C6DC: ; 0x0224C6DC + push {r3, r4, r5, lr} + add r4, r2, #0 + ldr r0, [r4, #0x14] + add r5, r1, #0 + bl EventObjectMovementMan_IsFinish + cmp r0, #0 + bne _0224C6F0 + mov r0, #0 + pop {r3, r4, r5, pc} +_0224C6F0: + ldr r0, [r4, #0x14] + bl EventObjectMovementMan_Delete + ldr r0, [r4, #0x20] + ldr r1, _0224C718 ; =ov02_02253820 + bl EventObjectMovementMan_Create + add r5, #0xe4 + str r0, [r4, #0x10] + ldr r0, [r5] + ldr r1, _0224C718 ; =ov02_02253820 + bl EventObjectMovementMan_Create + str r0, [r4, #0x14] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0224C718: .word ov02_02253820 + thumb_func_end ov02_0224C6DC + + thumb_func_start ov02_0224C71C +ov02_0224C71C: ; 0x0224C71C + push {r4, lr} + add r0, r1, #0 + mov r1, #4 + add r4, r2, #0 + bl ov01_021FCD2C + ldr r2, _0224C750 ; =0xFFF6A000 + str r0, [r4, #0x1c] + mov r1, #1 + mov r3, #0xf + bl ov01_021FCD8C + ldr r0, [r4, #0x20] + ldr r1, _0224C754 ; =ov02_02253820 + bl EventObjectMovementMan_Create + str r0, [r4, #0x10] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + ldr r0, _0224C758 ; =SEQ_SE_DP_TELE + bl PlaySE + mov r0, #0 + pop {r4, pc} + nop +_0224C750: .word 0xFFF6A000 +_0224C754: .word ov02_02253820 +_0224C758: .word SEQ_SE_DP_TELE + thumb_func_end ov02_0224C71C + + thumb_func_start ov02_0224C75C +ov02_0224C75C: ; 0x0224C75C + push {r4, r5, lr} + sub sp, #0xc + add r4, r2, #0 + ldr r0, [r4, #0x10] + add r5, r1, #0 + bl EventObjectMovementMan_IsFinish + cmp r0, #0 + bne _0224C774 + add sp, #0xc + mov r0, #0 + pop {r4, r5, pc} +_0224C774: + ldr r0, [r4, #0x10] + bl EventObjectMovementMan_Delete + ldr r0, [r4, #0x20] + ldr r1, _0224C7D0 ; =ov02_02253794 + bl EventObjectMovementMan_Create + str r0, [r4, #0x10] + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224C79C + ldr r0, [r4, #0x14] + bl EventObjectMovementMan_Delete + add r5, #0xe4 + ldr r0, [r5] + ldr r1, _0224C7D0 ; =ov02_02253794 + bl EventObjectMovementMan_Create + str r0, [r4, #0x14] +_0224C79C: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #8 + bge _0224C7AC + add sp, #0xc + mov r0, #0 + pop {r4, r5, pc} +_0224C7AC: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl BeginNormalPaletteFade + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .balign 4, 0 +_0224C7D0: .word ov02_02253794 + thumb_func_end ov02_0224C75C + + thumb_func_start ov02_0224C7D4 +ov02_0224C7D4: ; 0x0224C7D4 + push {r3, r4, r5, lr} + add r4, r2, #0 + ldr r0, [r4, #0x10] + add r5, r1, #0 + bl EventObjectMovementMan_IsFinish + cmp r0, #1 + bne _0224C80C + ldr r0, [r4, #0x10] + bl EventObjectMovementMan_Delete + ldr r0, [r4, #0x20] + ldr r1, _0224C83C ; =ov02_02253794 + bl EventObjectMovementMan_Create + str r0, [r4, #0x10] + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224C80C + ldr r0, [r4, #0x14] + bl EventObjectMovementMan_Delete + add r5, #0xe4 + ldr r0, [r5] + ldr r1, _0224C83C ; =ov02_02253794 + bl EventObjectMovementMan_Create + str r0, [r4, #0x14] +_0224C80C: + bl IsPaletteFadeFinished + cmp r0, #0 + bne _0224C818 + mov r0, #0 + pop {r3, r4, r5, pc} +_0224C818: + ldr r0, [r4, #0x10] + bl EventObjectMovementMan_Delete + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224C82A + ldr r0, [r4, #0x14] + bl EventObjectMovementMan_Delete +_0224C82A: + ldr r0, [r4, #0x1c] + bl ov01_021FCD78 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_0224C83C: .word ov02_02253794 + thumb_func_end ov02_0224C7D4 + + thumb_func_start ov02_0224C840 +ov02_0224C840: ; 0x0224C840 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r1, #0xc] + add r4, r2, #0 + bl Save_LocalFieldData_Get + add r6, r0, #0 + bl LocalFieldData_GetBlackoutSpawn + add r1, sp, #0 + add r7, r0, #0 + bl GetFlyWarpData + add r0, r6, #0 + bl LocalFieldData_GetSpecialSpawnWarpPtr + add r1, r0, #0 + add r0, r7, #0 + bl GetSpecialSpawnWarpData + ldr r2, [r4, #0xc] + add r0, r5, #0 + add r1, sp, #0 + bl sub_02053B04 + mov r0, #2 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end ov02_0224C840 + + thumb_func_start ov02_0224C87C +ov02_0224C87C: ; 0x0224C87C + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #4 + add r4, r2, #0 + bl ov01_021FCD2C + ldr r2, _0224C8C4 ; =0xFFF6A000 + str r0, [r4, #0x1c] + mov r1, #1 + mov r3, #0xf + bl ov01_021FCD8C + ldr r0, [r4, #0x20] + ldr r1, _0224C8C8 ; =ov02_022537DC + bl EventObjectMovementMan_Create + str r0, [r4, #0x10] + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224C8B2 + add r5, #0xe4 + ldr r0, [r5] + ldr r1, _0224C8C8 ; =ov02_022537DC + bl EventObjectMovementMan_Create + str r0, [r4, #0x14] +_0224C8B2: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + ldr r0, _0224C8CC ; =SEQ_SE_DP_KAIDAN2 + bl PlaySE + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0224C8C4: .word 0xFFF6A000 +_0224C8C8: .word ov02_022537DC +_0224C8CC: .word SEQ_SE_DP_KAIDAN2 + thumb_func_end ov02_0224C87C + + thumb_func_start ov02_0224C8D0 +ov02_0224C8D0: ; 0x0224C8D0 + push {r3, r4, r5, lr} + add r4, r2, #0 + ldr r0, [r4, #0x10] + add r5, r1, #0 + bl EventObjectMovementMan_IsFinish + cmp r0, #0 + bne _0224C8E4 + mov r0, #0 + pop {r3, r4, r5, pc} +_0224C8E4: + ldr r0, [r4, #0x10] + bl EventObjectMovementMan_Delete + ldr r0, [r4, #0x20] + ldr r1, _0224C938 ; =ov02_022537B8 + bl EventObjectMovementMan_Create + str r0, [r4, #0x10] + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224C90E + ldr r0, [r4, #0x14] + bl EventObjectMovementMan_Delete + add r0, r5, #0 + add r0, #0xe4 + ldr r0, [r0] + ldr r1, _0224C938 ; =ov02_022537B8 + bl EventObjectMovementMan_Create + str r0, [r4, #0x14] +_0224C90E: + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetState + cmp r0, #2 + beq _0224C92E + ldr r0, [r4, #8] + cmp r0, #0 + ldr r0, [r4, #0x24] + beq _0224C928 + bl ov02_0224DDF4 + str r0, [r4, #0x2c] + b _0224C92E +_0224C928: + bl ov02_0224DDE0 + str r0, [r4, #0x2c] +_0224C92E: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 +_0224C938: .word ov02_022537B8 + thumb_func_end ov02_0224C8D0 + + thumb_func_start ov02_0224C93C +ov02_0224C93C: ; 0x0224C93C + push {r4, r5, lr} + sub sp, #0xc + add r4, r2, #0 + ldr r0, [r4, #0x10] + add r5, r1, #0 + bl EventObjectMovementMan_IsFinish + cmp r0, #0 + bne _0224C954 + add sp, #0xc + mov r0, #0 + pop {r4, r5, pc} +_0224C954: + ldr r0, [r4, #0x10] + bl EventObjectMovementMan_Delete + ldr r0, [r4, #0x20] + ldr r1, _0224C9B0 ; =ov02_02253794 + bl EventObjectMovementMan_Create + str r0, [r4, #0x10] + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224C97C + ldr r0, [r4, #0x14] + bl EventObjectMovementMan_Delete + add r5, #0xe4 + ldr r0, [r5] + ldr r1, _0224C9B0 ; =ov02_02253794 + bl EventObjectMovementMan_Create + str r0, [r4, #0x14] +_0224C97C: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #8 + bge _0224C98C + add sp, #0xc + mov r0, #0 + pop {r4, r5, pc} +_0224C98C: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0 + ldr r3, _0224C9B4 ; =0x00007FFF + add r1, r0, #0 + add r2, r0, #0 + bl BeginNormalPaletteFade + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .balign 4, 0 +_0224C9B0: .word ov02_02253794 +_0224C9B4: .word 0x00007FFF + thumb_func_end ov02_0224C93C + + thumb_func_start ov02_0224C9B8 +ov02_0224C9B8: ; 0x0224C9B8 + push {r3, r4, r5, lr} + add r4, r2, #0 + ldr r0, [r4, #0x10] + add r5, r1, #0 + bl EventObjectMovementMan_IsFinish + cmp r0, #1 + bne _0224C9F2 + ldr r0, [r4, #0x10] + bl EventObjectMovementMan_Delete + ldr r0, [r4, #0x20] + ldr r1, _0224CA34 ; =ov02_02253794 + bl EventObjectMovementMan_Create + str r0, [r4, #0x10] + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224C9F2 + ldr r0, [r4, #0x14] + bl EventObjectMovementMan_Delete + add r0, r5, #0 + add r0, #0xe4 + ldr r0, [r0] + ldr r1, _0224CA34 ; =ov02_02253794 + bl EventObjectMovementMan_Create + str r0, [r4, #0x14] +_0224C9F2: + bl IsPaletteFadeFinished + cmp r0, #0 + bne _0224C9FE + mov r0, #0 + pop {r3, r4, r5, pc} +_0224C9FE: + ldr r0, [r4, #0x10] + bl EventObjectMovementMan_Delete + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetState + cmp r0, #2 + beq _0224CA18 + ldr r0, [r4, #0x2c] + bl ov02_0224DE08 + mov r0, #0 + str r0, [r4, #0x2c] +_0224CA18: + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224CA24 + ldr r0, [r4, #0x14] + bl EventObjectMovementMan_Delete +_0224CA24: + ldr r0, [r4, #0x1c] + bl ov01_021FCD78 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #1 + pop {r3, r4, r5, pc} + .balign 4, 0 +_0224CA34: .word ov02_02253794 + thumb_func_end ov02_0224C9B8 + + thumb_func_start ov02_0224CA38 +ov02_0224CA38: ; 0x0224CA38 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r1, #0xc] + add r4, r2, #0 + bl Save_LocalFieldData_Get + bl LocalFieldData_GetSpecialSpawnWarpPtr + add r1, r0, #0 + ldr r2, [r4, #0xc] + add r0, r5, #0 + bl sub_02053B04 + mov r0, #2 + pop {r3, r4, r5, pc} + .balign 4, 0 + thumb_func_end ov02_0224CA38 + + thumb_func_start ov02_0224CA58 +ov02_0224CA58: ; 0x0224CA58 + push {r4, r5, r6, r7} + add r3, r0, #0 + add r0, r2, #0 + sub r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r2, #0 + beq _0224CAB4 + add r6, r3, r1 + sub r7, r1, #1 +_0224CA6C: + sub r1, r6, #1 + ldrb r2, [r1] + mov r1, #1 + add r5, r7, #0 + and r1, r2 + lsl r1, r1, #0x18 + lsr r4, r1, #0x18 + cmp r7, #0 + ble _0224CA9A +_0224CA7E: + ldrb r1, [r3, r5] + add r2, r3, r5 + sub r2, r2, #1 + asr r1, r1, #1 + strb r1, [r3, r5] + ldrb r2, [r2] + ldrb r1, [r3, r5] + lsl r2, r2, #0x1f + lsr r2, r2, #0x18 + orr r1, r2 + strb r1, [r3, r5] + sub r5, r5, #1 + cmp r5, #0 + bgt _0224CA7E +_0224CA9A: + ldrb r1, [r3, r5] + asr r1, r1, #1 + strb r1, [r3, r5] + ldrb r2, [r3, r5] + lsl r1, r4, #7 + orr r1, r2 + strb r1, [r3, r5] + add r1, r0, #0 + sub r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r1, #0 + bne _0224CA6C +_0224CAB4: + pop {r4, r5, r6, r7} + bx lr + thumb_func_end ov02_0224CA58 + + thumb_func_start ov02_0224CAB8 +ov02_0224CAB8: ; 0x0224CAB8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r2, #0 + str r1, [sp] + add r7, r3, #0 + bl WallpaperPasswordBank_GetCount + add r4, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + bl WallpaperPasswordBank_GetIndexOfWord + add r1, sp, #4 + strh r0, [r1, #4] + add r0, r5, #0 + add r1, r7, #0 + bl WallpaperPasswordBank_GetIndexOfWord + add r1, sp, #4 + strh r0, [r1, #6] + add r1, sp, #0x18 + ldrh r1, [r1, #0x10] + add r0, r5, #0 + bl WallpaperPasswordBank_GetIndexOfWord + add r1, sp, #4 + strh r0, [r1, #8] + add r1, sp, #0x18 + ldrh r1, [r1, #0x14] + add r0, r5, #0 + bl WallpaperPasswordBank_GetIndexOfWord + add r1, sp, #4 + mov r2, #0 + strh r0, [r1, #0xa] + add r3, sp, #8 + add r5, sp, #4 + add r7, r2, #0 +_0224CB06: + ldrsh r0, [r3, r7] + cmp r0, #0 + bge _0224CB14 + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0224CB14: + cmp r2, #0 + ble _0224CB48 + mov r6, #1 + mvn r6, r6 + ldrsh r6, [r3, r6] + cmp r0, r6 + blt _0224CB34 + sub r0, r0, r6 + cmp r0, #0xff + ble _0224CB30 + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0224CB30: + strb r0, [r5] + b _0224CB5A +_0224CB34: + sub r0, r6, r0 + sub r0, r4, r0 + cmp r0, #0xff + ble _0224CB44 + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0224CB44: + strb r0, [r5] + b _0224CB5A +_0224CB48: + mov r0, #4 + ldrsh r0, [r1, r0] + cmp r0, #0xff + ble _0224CB58 + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0224CB58: + strb r0, [r1] +_0224CB5A: + add r2, r2, #1 + add r3, r3, #2 + add r5, r5, #1 + cmp r2, #4 + blt _0224CB06 + add r0, sp, #4 + mov r1, #4 + mov r2, #5 + bl ov02_0224CA58 + mov r2, #0 + add r1, sp, #4 + add r4, sp, #4 + mov r3, #0xf0 +_0224CB76: + ldrb r5, [r4, #3] + ldrb r0, [r1] + add r2, r2, #1 + asr r6, r5, #4 + and r5, r3 + orr r5, r6 + eor r0, r5 + strb r0, [r1] + add r1, r1, #1 + cmp r2, #3 + blt _0224CB76 + add r2, sp, #4 + ldrb r3, [r2, #3] + mov r2, #0xf + add r0, sp, #4 + and r2, r3 + lsl r2, r2, #0x18 + mov r1, #3 + lsr r2, r2, #0x18 + bl ov02_0224CA58 + add r1, sp, #4 + ldrb r5, [r1] + mov r0, #0xf + add r4, r5, #0 + and r4, r0 + cmp r4, #8 + blt _0224CBB4 + add sp, #0x10 + sub r0, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_0224CBB4: + ldrb r0, [r1, #1] + eor r0, r5 + strb r0, [r1, #1] + ldrb r0, [r1, #2] + eor r0, r5 + strb r0, [r1, #2] + ldrb r2, [r1, #1] + ldrb r3, [r1, #2] + lsl r0, r2, #8 + add r6, r0, #0 + ldr r0, [sp] + orr r6, r3 + cmp r0, r6 + bne _0224CBEE + mov r0, #0xf0 + and r0, r5 + asr r0, r0, #4 + cmp r0, #6 + bne _0224CBEE + ldrb r0, [r1, #3] + add r1, r5, r2 + mul r1, r3 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + cmp r0, r1 + bne _0224CBEE + add sp, #0x10 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224CBEE: + mov r0, #0 + mvn r0, r0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end ov02_0224CAB8 + + thumb_func_start ov02_0224CBF8 +ov02_0224CBF8: ; 0x0224CBF8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r2, #0 + str r1, [sp] + add r7, r3, #0 + bl WallpaperPasswordBank_GetCount + add r4, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + bl WallpaperPasswordBank_GetIndexOfWord + add r1, sp, #4 + strh r0, [r1, #4] + add r0, r5, #0 + add r1, r7, #0 + bl WallpaperPasswordBank_GetIndexOfWord + add r1, sp, #4 + strh r0, [r1, #6] + add r1, sp, #0x18 + ldrh r1, [r1, #0x10] + add r0, r5, #0 + bl WallpaperPasswordBank_GetIndexOfWord + add r1, sp, #4 + strh r0, [r1, #8] + add r1, sp, #0x18 + ldrh r1, [r1, #0x14] + add r0, r5, #0 + bl WallpaperPasswordBank_GetIndexOfWord + add r1, sp, #4 + mov r2, #0 + strh r0, [r1, #0xa] + add r3, sp, #8 + add r5, sp, #4 + add r7, r2, #0 +_0224CC46: + ldrsh r0, [r3, r7] + cmp r0, #0 + bge _0224CC54 + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0224CC54: + cmp r2, #0 + ble _0224CC88 + mov r6, #1 + mvn r6, r6 + ldrsh r6, [r3, r6] + cmp r0, r6 + blt _0224CC74 + sub r0, r0, r6 + cmp r0, #0xff + ble _0224CC70 + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0224CC70: + strb r0, [r5] + b _0224CC9A +_0224CC74: + sub r0, r6, r0 + sub r0, r4, r0 + cmp r0, #0xff + ble _0224CC84 + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0224CC84: + strb r0, [r5] + b _0224CC9A +_0224CC88: + mov r0, #4 + ldrsh r0, [r1, r0] + cmp r0, #0xff + ble _0224CC98 + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0224CC98: + strb r0, [r1] +_0224CC9A: + add r2, r2, #1 + add r3, r3, #2 + add r5, r5, #1 + cmp r2, #4 + blt _0224CC46 + add r0, sp, #4 + mov r1, #4 + mov r2, #5 + bl ov02_0224CA58 + mov r2, #0 + add r1, sp, #4 + add r4, sp, #4 + mov r3, #0xf0 +_0224CCB6: + ldrb r5, [r4, #3] + ldrb r0, [r1] + add r2, r2, #1 + asr r6, r5, #4 + and r5, r3 + orr r5, r6 + eor r0, r5 + strb r0, [r1] + add r1, r1, #1 + cmp r2, #3 + blt _0224CCB6 + add r2, sp, #4 + ldrb r3, [r2, #3] + mov r2, #0xf + add r0, sp, #4 + and r2, r3 + lsl r2, r2, #0x18 + mov r1, #3 + lsr r2, r2, #0x18 + bl ov02_0224CA58 + add r1, sp, #4 + ldrb r4, [r1] + mov r0, #0xf + and r0, r4 + lsl r2, r0, #0x18 + lsr r2, r2, #0x18 + cmp r2, #8 + blo _0224CCF4 + cmp r2, #0xb + blo _0224CCFC +_0224CCF4: + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0224CCFC: + ldrb r2, [r1, #1] + eor r2, r4 + strb r2, [r1, #1] + ldrb r2, [r1, #2] + eor r2, r4 + strb r2, [r1, #2] + ldrb r2, [r1, #1] + ldrb r3, [r1, #2] + lsl r5, r2, #8 + add r6, r5, #0 + ldr r5, [sp] + orr r6, r3 + cmp r5, r6 + bne _0224CD30 + mov r5, #0xf0 + and r5, r4 + asr r5, r5, #4 + cmp r5, #6 + bne _0224CD30 + add r2, r4, r2 + mul r2, r3 + lsl r2, r2, #0x18 + ldrb r1, [r1, #3] + lsr r2, r2, #0x18 + cmp r1, r2 + beq _0224CD34 +_0224CD30: + mov r0, #0 + mvn r0, r0 +_0224CD34: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end ov02_0224CBF8 + + thumb_func_start ov02_0224CD38 +ov02_0224CD38: ; 0x0224CD38 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r0, #0 + ldr r0, [sp, #0x24] + add r7, r1, #0 + str r2, [sp, #8] + add r5, r3, #0 + bl WallpaperPasswordBank_Create + add r4, r0, #0 + add r0, r6, #0 + bl PlayerProfile_GetTrainerID_VisibleHalf + add r1, r0, #0 + str r5, [sp] + add r0, sp, #0x10 + ldrh r0, [r0, #0x10] + add r2, r7, #0 + str r0, [sp, #4] + ldr r3, [sp, #8] + add r0, r4, #0 + bl ov02_0224CAB8 + add r5, r0, #0 + add r0, r4, #0 + bl WallpaperPasswordBank_Delete + add r0, r5, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end ov02_0224CD38 + + thumb_func_start ov02_0224CD74 +ov02_0224CD74: ; 0x0224CD74 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r0, #0 + ldr r0, [sp, #0x24] + add r7, r1, #0 + str r2, [sp, #8] + add r5, r3, #0 + bl WallpaperPasswordBank_Create + add r4, r0, #0 + add r0, r6, #0 + bl PlayerProfile_GetTrainerID_VisibleHalf + add r1, r0, #0 + str r5, [sp] + add r0, sp, #0x10 + ldrh r0, [r0, #0x10] + add r2, r7, #0 + str r0, [sp, #4] + ldr r3, [sp, #8] + add r0, r4, #0 + bl ov02_0224CBF8 + add r5, r0, #0 + add r0, r4, #0 + bl WallpaperPasswordBank_Delete + add r0, r5, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end ov02_0224CD74 + + thumb_func_start ov02_0224CDB0 +ov02_0224CDB0: ; 0x0224CDB0 + push {r4, r5, r6, lr} + sub sp, #0x20 + add r6, r1, #0 + mov r1, #0x26 + add r2, sp, #4 + add r3, sp, #0 + add r5, r0, #0 + bl sub_02054C20 + cmp r0, #0 + beq _0224CE1C + mov r0, #4 + mov r1, #0x18 + bl Heap_AllocAtEnd + add r4, r0, #0 + strb r6, [r4, #0xc] + mov r0, #0 + strb r0, [r4, #0xd] + strb r0, [r4, #0xe] + strb r0, [r4, #0xf] + ldr r0, [r5, #0x30] + bl MapMatrix_GetWidth + add r1, r0, #0 + ldr r0, [sp] + add r2, sp, #0x14 + bl sub_02054DC8 + ldr r1, [sp, #4] + add r0, sp, #8 + bl ov01_021F3B0C + add r3, sp, #8 + ldmia r3!, {r0, r1} + add r2, r4, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r1, [r4] + ldr r0, [sp, #0x14] + add r2, r4, #0 + add r0, r1, r0 + str r0, [r4] + ldr r1, [r4, #8] + ldr r0, [sp, #0x1c] + add r0, r1, r0 + str r0, [r4, #8] + ldr r0, [r5, #0x10] + ldr r1, _0224CE24 ; =ov02_0224CE28 + bl TaskManager_Call + add sp, #0x20 + pop {r4, r5, r6, pc} +_0224CE1C: + bl GF_AssertFail + add sp, #0x20 + pop {r4, r5, r6, pc} + .balign 4, 0 +_0224CE24: .word ov02_0224CE28 + thumb_func_end ov02_0224CDB0 + + thumb_func_start ov02_0224CE28 +ov02_0224CE28: ; 0x0224CE28 + push {r4, r5, r6, lr} + sub sp, #0x30 + add r4, r0, #0 + bl TaskManager_GetFieldSystem + add r6, r0, #0 + add r0, r4, #0 + bl TaskManager_GetEnvironment + add r4, r0, #0 + ldrb r1, [r4, #0xf] + cmp r1, #5 + bls _0224CE44 + b _0224CFC0 +_0224CE44: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224CE50: ; jump table + .short _0224CE5C - _0224CE50 - 2 ; case 0 + .short _0224CEBA - _0224CE50 - 2 ; case 1 + .short _0224CF1C - _0224CE50 - 2 ; case 2 + .short _0224CF64 - _0224CE50 - 2 ; case 3 + .short _0224CF76 - _0224CE50 - 2 ; case 4 + .short _0224CFB6 - _0224CE50 - 2 ; case 5 +_0224CE5C: + ldr r1, [r6, #0x34] + mov r0, #0x6b + bl ov01_021FB90C + ldr r0, [r0] + bl NNS_G3dGetMdlSet + cmp r0, #0 + beq _0224CE8E + add r2, r0, #0 + add r2, #8 + beq _0224CE82 + ldrb r1, [r0, #9] + cmp r1, #0 + bls _0224CE82 + ldrh r1, [r0, #0xe] + add r1, r2, r1 + add r1, r1, #4 + b _0224CE84 +_0224CE82: + mov r1, #0 +_0224CE84: + cmp r1, #0 + beq _0224CE8E + ldr r1, [r1] + add r5, r0, r1 + b _0224CE90 +_0224CE8E: + mov r5, #0 +_0224CE90: + ldr r0, [r6, #0x34] + bl ov01_021FB9E0 + mov r1, #0 + str r1, [sp] + str r5, [sp, #4] + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r1, [sp, #0x14] + ldr r0, [r6, #0x54] + ldr r1, [r6, #0x58] + mov r2, #0x10 + mov r3, #0x6b + bl ov01_021E8DE8 + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224CFC0 +_0224CEBA: + add r1, sp, #0x18 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + ldrb r2, [r4, #0xd] + mov r1, #0xc + ldr r0, [r4] + add r3, r2, #0 + ldr r2, _0224CFC8 ; =ov02_02253DD8 + mul r3, r1 + ldr r2, [r2, r3] + add r0, r0, r2 + str r0, [sp, #0x24] + ldrb r2, [r4, #0xd] + ldr r0, [r4, #4] + add r3, r2, #0 + ldr r2, _0224CFCC ; =ov02_02253DDC + mul r3, r1 + ldr r2, [r2, r3] + add r0, r0, r2 + str r0, [sp, #0x28] + ldrb r2, [r4, #0xd] + ldr r0, [r4, #8] + add r3, r2, #0 + mul r3, r1 + ldr r1, _0224CFD0 ; =ov02_02253DE0 + ldr r1, [r1, r3] + add r0, r0, r1 + str r0, [sp, #0x2c] + ldr r0, _0224CFD4 ; =SEQ_SE_DP_BOWA + bl PlaySE + ldr r0, [r6, #0x54] + add r6, #0x9c + str r0, [sp] + ldr r0, [r6] + mov r1, #0x6b + add r2, sp, #0x24 + add r3, sp, #0x18 + bl ov01_021F3C0C + ldrb r1, [r4, #0xd] + add r1, r4, r1 + strb r0, [r1, #0x10] + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224CFC0 +_0224CF1C: + ldrb r0, [r4, #0xe] + cmp r0, #0xf + bhs _0224CF28 + add r0, r0, #1 + strb r0, [r4, #0xe] + b _0224CFC0 +_0224CF28: + mov r0, #0 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xd] + add r0, r0, #1 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0xd] + ldrb r0, [r4, #0xc] + cmp r1, r0 + bhs _0224CF40 + mov r0, #1 + strb r0, [r4, #0xf] + b _0224CFC0 +_0224CF40: + add r0, r6, #0 + add r0, #0x9c + ldrb r1, [r4, #0x10] + ldr r0, [r0] + bl ov01_021F3B60 + bl ov01_021F3B38 + add r3, r0, #0 + ldr r0, [r6, #0x58] + mov r1, #0x10 + mov r2, #0 + bl ov01_021E8E40 + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224CFC0 +_0224CF64: + ldr r0, [r6, #0x58] + mov r1, #0x10 + mov r2, #0 + bl ov01_021E8E70 + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224CFC0 +_0224CF76: + ldr r0, [r6, #0x58] + mov r1, #0x10 + bl ov01_021E8F10 + cmp r0, #0 + beq _0224CFC0 + ldr r0, [r6, #0x54] + ldr r1, [r6, #0x58] + mov r2, #0x10 + bl ov01_021E8ED0 + ldrb r0, [r4, #0xc] + mov r5, #0 + cmp r0, #0 + bls _0224CFAE +_0224CF94: + add r0, r4, r5 + add r1, r6, #0 + add r1, #0x9c + ldrb r0, [r0, #0x10] + ldr r1, [r1] + bl ov01_021F36DC + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldrb r0, [r4, #0xc] + cmp r5, r0 + blo _0224CF94 +_0224CFAE: + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224CFC0 +_0224CFB6: + bl Heap_Free + add sp, #0x30 + mov r0, #1 + pop {r4, r5, r6, pc} +_0224CFC0: + mov r0, #0 + add sp, #0x30 + pop {r4, r5, r6, pc} + nop +_0224CFC8: .word ov02_02253DD8 +_0224CFCC: .word ov02_02253DDC +_0224CFD0: .word ov02_02253DE0 +_0224CFD4: .word SEQ_SE_DP_BOWA + thumb_func_end ov02_0224CE28 + + thumb_func_start ov02_0224CFD8 +ov02_0224CFD8: ; 0x0224CFD8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r2, #0 + bl MapObjectManager_GetFirstActiveObjectByID + add r6, r0, #0 + add r1, sp, #0 + bl MapObject_CopyPositionVector + add r0, r6, #0 + bl MapObject_GetXCoord + add r5, r0, #0 + add r0, r6, #0 + bl MapObject_GetZCoord + add r4, r0, #0 + add r0, r6, #0 + bl MapObject_GetFacingDirection + cmp r0, #3 + bhi _0224D028 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224D010: ; jump table + .short _0224D018 - _0224D010 - 2 ; case 0 + .short _0224D01C - _0224D010 - 2 ; case 1 + .short _0224D020 - _0224D010 - 2 ; case 2 + .short _0224D024 - _0224D010 - 2 ; case 3 +_0224D018: + sub r4, r4, #1 + b _0224D02C +_0224D01C: + add r4, r4, #1 + b _0224D02C +_0224D020: + sub r5, r5, #1 + b _0224D02C +_0224D024: + add r5, r5, #1 + b _0224D02C +_0224D028: + bl GF_AssertFail +_0224D02C: + mov r3, #2 + lsl r1, r5, #0x10 + lsl r3, r3, #0xe + ldr r2, [sp, #4] + lsl r4, r4, #0x10 + add r1, r1, r3 + add r0, r7, #0 + add r3, r4, r3 + bl Field3dObject_SetPosEx + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end ov02_0224CFD8 + + thumb_func_start ov02_0224D044 +ov02_0224D044: ; 0x0224D044 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r1, #0 + add r6, r0, #0 + add r1, sp, #0 + bl PlayerAvatar_CopyPositionVector + add r0, r6, #0 + bl PlayerAvatar_GetXCoord + add r5, r0, #0 + add r0, r6, #0 + bl PlayerAvatar_GetZCoord + add r4, r0, #0 + add r0, r6, #0 + bl PlayerAvatar_GetFacingDirection + cmp r0, #3 + bhi _0224D090 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224D078: ; jump table + .short _0224D080 - _0224D078 - 2 ; case 0 + .short _0224D084 - _0224D078 - 2 ; case 1 + .short _0224D088 - _0224D078 - 2 ; case 2 + .short _0224D08C - _0224D078 - 2 ; case 3 +_0224D080: + sub r4, r4, #1 + b _0224D094 +_0224D084: + add r4, r4, #1 + b _0224D094 +_0224D088: + sub r5, r5, #1 + b _0224D094 +_0224D08C: + add r5, r5, #1 + b _0224D094 +_0224D090: + bl GF_AssertFail +_0224D094: + mov r3, #2 + lsl r1, r5, #0x10 + lsl r3, r3, #0xe + ldr r2, [sp, #4] + lsl r4, r4, #0x10 + add r1, r1, r3 + add r0, r7, #0 + add r3, r4, r3 + bl Field3dObject_SetPosEx + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end ov02_0224D044 + + thumb_func_start ov02_0224D0AC +ov02_0224D0AC: ; 0x0224D0AC + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + bl PlayerAvatar_CopyPositionVector + ldr r1, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #8] + add r0, r4, #0 + bl Field3dObject_SetPosEx + add sp, #0xc + pop {r3, r4, pc} + thumb_func_end ov02_0224D0AC + + thumb_func_start ov02_0224D0C8 +ov02_0224D0C8: ; 0x0224D0C8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + str r2, [sp, #8] + add r6, r0, #0 + mov r1, #0 + mov r2, #0xdc + add r4, r3, #0 + ldr r7, [sp, #0x28] + bl memset + add r0, r6, #0 + add r0, #0x78 + mov r1, #0x86 + add r2, r5, #0 + mov r3, #4 + bl Field3dModel_LoadFromFilesystem + add r1, r6, #0 + add r0, r6, #0 + add r1, #0x78 + bl Field3dObject_InitFromModel + add r0, r6, #0 + add r0, #0xd8 + str r4, [r0] + add r0, r6, #0 + add r0, #0xd8 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + bls _0224D13E + add r0, r6, #0 + add r5, r6, #0 + str r0, [sp, #0xc] + add r0, #0x78 + add r5, #0x88 + str r0, [sp, #0xc] +_0224D114: + ldr r3, [sp, #8] + mov r0, #4 + str r0, [sp] + ldr r1, [sp, #0xc] + add r0, r5, #0 + mov r2, #0x86 + add r3, r3, r4 + str r7, [sp, #4] + bl Field3dModelAnimation_LoadFromFilesystem + add r0, r6, #0 + add r1, r5, #0 + bl Field3dObject_AddAnimation + add r0, r6, #0 + add r0, #0xd8 + ldr r0, [r0] + add r4, r4, #1 + add r5, #0x14 + cmp r4, r0 + blo _0224D114 +_0224D13E: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end ov02_0224D0C8 + + thumb_func_start ov02_0224D144 +ov02_0224D144: ; 0x0224D144 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r0, #0x78 + add r7, r1, #0 + bl Field3dModel_Unload + add r0, r6, #0 + add r0, #0xd8 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + bls _0224D176 + add r5, r6, #0 + add r5, #0x88 +_0224D160: + add r0, r5, #0 + add r1, r7, #0 + bl Field3dModelAnimation_Unload + add r0, r6, #0 + add r0, #0xd8 + ldr r0, [r0] + add r4, r4, #1 + add r5, #0x14 + cmp r4, r0 + blo _0224D160 +_0224D176: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end ov02_0224D144 + + thumb_func_start ov02_0224D178 +ov02_0224D178: ; 0x0224D178 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, #0xd8 + ldr r0, [r0] + mov r6, #1 + mov r4, #0 + cmp r0, #0 + bls _0224D1A6 + add r5, r7, #0 + add r5, #0x88 +_0224D18C: + mov r1, #1 + add r0, r5, #0 + lsl r1, r1, #0xc + bl Field3dModelAnimation_FrameAdvanceAndCheck + and r6, r0 + add r0, r7, #0 + add r0, #0xd8 + ldr r0, [r0] + add r4, r4, #1 + add r5, #0x14 + cmp r4, r0 + blo _0224D18C +_0224D1A6: + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end ov02_0224D178 + + thumb_func_start ov02_0224D1AC +ov02_0224D1AC: ; 0x0224D1AC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r0, #0xd8 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + bls _0224D1D8 + add r5, r6, #0 + mov r7, #1 + add r5, #0x88 + lsl r7, r7, #0xc +_0224D1C2: + add r0, r5, #0 + add r1, r7, #0 + bl Field3dModelAnimation_FrameAdvanceAndLoop + add r0, r6, #0 + add r0, #0xd8 + ldr r0, [r0] + add r4, r4, #1 + add r5, #0x14 + cmp r4, r0 + blo _0224D1C2 +_0224D1D8: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end ov02_0224D1AC + + thumb_func_start ov02_0224D1DC +ov02_0224D1DC: ; 0x0224D1DC + ldr r3, _0224D1E0 ; =Field3dObject_Draw + bx r3 + .balign 4, 0 +_0224D1E0: .word Field3dObject_Draw + thumb_func_end ov02_0224D1DC + + thumb_func_start ov02_0224D1E4 +ov02_0224D1E4: ; 0x0224D1E4 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + add r0, r4, #0 + mov r1, #0 + mov r2, #0xf0 + bl memset + add r0, r4, #0 + add r0, #0xdc + mov r1, #4 + mov r2, #0x20 + bl HeapExp_FndInitAllocator + add r0, r4, #0 + add r0, #0xdc + mov r1, #3 + str r0, [sp] + add r0, r4, #0 + mov r2, #0 + add r3, r1, #0 + bl ov02_0224D0C8 + ldr r0, [r5, #0x40] + add r1, r4, #0 + bl ov02_0224D044 + ldr r0, _0224D228 ; =SEQ_SE_DP_FW015 + bl PlaySE + mov r0, #0 + add r4, #0xec + str r0, [r4] + pop {r3, r4, r5, pc} + .balign 4, 0 +_0224D228: .word SEQ_SE_DP_FW015 + thumb_func_end ov02_0224D1E4 + + thumb_func_start ov02_0224D22C +ov02_0224D22C: ; 0x0224D22C + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + add r0, r4, #0 + mov r1, #0 + mov r2, #0xf0 + bl memset + add r0, r4, #0 + add r0, #0xdc + mov r1, #4 + mov r2, #0x20 + bl HeapExp_FndInitAllocator + add r0, r4, #0 + add r0, #0xdc + mov r1, #3 + str r0, [sp] + add r0, r4, #0 + mov r2, #0 + add r3, r1, #0 + bl ov02_0224D0C8 + ldr r0, [r5, #0x3c] + mov r1, #0xfd + add r2, r4, #0 + bl ov02_0224CFD8 + ldr r0, _0224D274 ; =SEQ_SE_DP_FW015 + bl PlaySE + mov r0, #0 + add r4, #0xec + str r0, [r4] + pop {r3, r4, r5, pc} + nop +_0224D274: .word SEQ_SE_DP_FW015 + thumb_func_end ov02_0224D22C + + thumb_func_start ov02_0224D278 +ov02_0224D278: ; 0x0224D278 + ldr r3, _0224D284 ; =ov02_0224D144 + add r0, r2, #0 + add r2, #0xdc + add r1, r2, #0 + bx r3 + nop +_0224D284: .word ov02_0224D144 + thumb_func_end ov02_0224D278 + + thumb_func_start ov02_0224D288 +ov02_0224D288: ; 0x0224D288 + push {r4, lr} + add r4, r2, #0 + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + cmp r0, #0 + beq _0224D29A + cmp r0, #1 + pop {r4, pc} +_0224D29A: + add r0, r4, #0 + bl ov02_0224D178 + cmp r0, #1 + bne _0224D2B8 + add r0, r4, #0 + mov r1, #0 + bl Field3dObject_SetActiveFlag + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + add r4, #0xec + add r0, r0, #1 + str r0, [r4] +_0224D2B8: + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_0224D288 + + thumb_func_start ov02_0224D2BC +ov02_0224D2BC: ; 0x0224D2BC + ldr r3, _0224D2C4 ; =ov02_0224D1DC + add r0, r2, #0 + bx r3 + nop +_0224D2C4: .word ov02_0224D1DC + thumb_func_end ov02_0224D2BC + + thumb_func_start ov02_0224D2C8 +ov02_0224D2C8: ; 0x0224D2C8 + ldr r0, [r0, #4] + ldr r3, _0224D2D4 ; =Field3dObjectTaskManager_CreateTask + ldr r0, [r0, #4] + ldr r1, _0224D2D8 ; =ov02_02253974 + bx r3 + nop +_0224D2D4: .word Field3dObjectTaskManager_CreateTask +_0224D2D8: .word ov02_02253974 + thumb_func_end ov02_0224D2C8 + + thumb_func_start ov02_0224D2DC +ov02_0224D2DC: ; 0x0224D2DC + ldr r0, [r0, #4] + ldr r3, _0224D2E8 ; =Field3dObjectTaskManager_CreateTask + ldr r0, [r0, #4] + ldr r1, _0224D2EC ; =ov02_022539BC + bx r3 + nop +_0224D2E8: .word Field3dObjectTaskManager_CreateTask +_0224D2EC: .word ov02_022539BC + thumb_func_end ov02_0224D2DC + + thumb_func_start ov02_0224D2F0 +ov02_0224D2F0: ; 0x0224D2F0 + ldr r3, _0224D2F4 ; =Field3dObjectTask_Delete + bx r3 + .balign 4, 0 +_0224D2F4: .word Field3dObjectTask_Delete + thumb_func_end ov02_0224D2F0 + + thumb_func_start ov02_0224D2F8 +ov02_0224D2F8: ; 0x0224D2F8 + push {r3, lr} + bl Field3dObjectTask_GetData + add r0, #0xec + ldr r0, [r0] + cmp r0, #1 + bne _0224D30A + mov r0, #1 + pop {r3, pc} +_0224D30A: + mov r0, #0 + pop {r3, pc} + .balign 4, 0 + thumb_func_end ov02_0224D2F8 + + thumb_func_start ov02_0224D310 +ov02_0224D310: ; 0x0224D310 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + add r0, r4, #0 + mov r1, #0 + mov r2, #0xf0 + bl memset + add r0, r4, #0 + add r0, #0xdc + mov r1, #4 + mov r2, #0x20 + bl HeapExp_FndInitAllocator + add r0, r4, #0 + add r0, #0xdc + mov r2, #4 + str r0, [sp] + add r0, r4, #0 + mov r1, #8 + add r3, r2, #0 + bl ov02_0224D0C8 + ldr r0, [r5, #0x40] + add r1, r4, #0 + bl ov02_0224D044 + ldr r0, _0224D354 ; =SEQ_SE_DP_FW088 + bl PlaySE + mov r0, #0 + add r4, #0xec + str r0, [r4] + pop {r3, r4, r5, pc} + .balign 4, 0 +_0224D354: .word SEQ_SE_DP_FW088 + thumb_func_end ov02_0224D310 + + thumb_func_start ov02_0224D358 +ov02_0224D358: ; 0x0224D358 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + add r0, r4, #0 + mov r1, #0 + mov r2, #0xf0 + bl memset + add r0, r4, #0 + add r0, #0xdc + mov r1, #4 + mov r2, #0x20 + bl HeapExp_FndInitAllocator + add r0, r4, #0 + add r0, #0xdc + mov r2, #4 + str r0, [sp] + add r0, r4, #0 + mov r1, #8 + add r3, r2, #0 + bl ov02_0224D0C8 + ldr r0, [r5, #0x3c] + mov r1, #0xfd + add r2, r4, #0 + bl ov02_0224CFD8 + ldr r0, _0224D3A0 ; =SEQ_SE_DP_FW088 + bl PlaySE + mov r0, #0 + add r4, #0xec + str r0, [r4] + pop {r3, r4, r5, pc} + nop +_0224D3A0: .word SEQ_SE_DP_FW088 + thumb_func_end ov02_0224D358 + + thumb_func_start ov02_0224D3A4 +ov02_0224D3A4: ; 0x0224D3A4 + ldr r3, _0224D3B0 ; =ov02_0224D144 + add r0, r2, #0 + add r2, #0xdc + add r1, r2, #0 + bx r3 + nop +_0224D3B0: .word ov02_0224D144 + thumb_func_end ov02_0224D3A4 + + thumb_func_start ov02_0224D3B4 +ov02_0224D3B4: ; 0x0224D3B4 + push {r4, lr} + add r4, r2, #0 + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + cmp r0, #0 + beq _0224D3C6 + cmp r0, #1 + pop {r4, pc} +_0224D3C6: + add r0, r4, #0 + bl ov02_0224D178 + cmp r0, #1 + bne _0224D3E4 + add r0, r4, #0 + mov r1, #0 + bl Field3dObject_SetActiveFlag + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + add r4, #0xec + add r0, r0, #1 + str r0, [r4] +_0224D3E4: + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_0224D3B4 + + thumb_func_start ov02_0224D3E8 +ov02_0224D3E8: ; 0x0224D3E8 + ldr r3, _0224D3F0 ; =ov02_0224D1DC + add r0, r2, #0 + bx r3 + nop +_0224D3F0: .word ov02_0224D1DC + thumb_func_end ov02_0224D3E8 + + thumb_func_start ov02_0224D3F4 +ov02_0224D3F4: ; 0x0224D3F4 + ldr r0, [r0, #4] + ldr r3, _0224D400 ; =Field3dObjectTaskManager_CreateTask + ldr r0, [r0, #4] + ldr r1, _0224D404 ; =ov02_022538FC + bx r3 + nop +_0224D400: .word Field3dObjectTaskManager_CreateTask +_0224D404: .word ov02_022538FC + thumb_func_end ov02_0224D3F4 + + thumb_func_start ov02_0224D408 +ov02_0224D408: ; 0x0224D408 + ldr r0, [r0, #4] + ldr r3, _0224D414 ; =Field3dObjectTaskManager_CreateTask + ldr r0, [r0, #4] + ldr r1, _0224D418 ; =ov02_0225398C + bx r3 + nop +_0224D414: .word Field3dObjectTaskManager_CreateTask +_0224D418: .word ov02_0225398C + thumb_func_end ov02_0224D408 + + thumb_func_start ov02_0224D41C +ov02_0224D41C: ; 0x0224D41C + ldr r3, _0224D420 ; =Field3dObjectTask_Delete + bx r3 + .balign 4, 0 +_0224D420: .word Field3dObjectTask_Delete + thumb_func_end ov02_0224D41C + + thumb_func_start ov02_0224D424 +ov02_0224D424: ; 0x0224D424 + push {r3, lr} + bl Field3dObjectTask_GetData + add r0, #0xec + ldr r0, [r0] + cmp r0, #1 + bne _0224D436 + mov r0, #1 + pop {r3, pc} +_0224D436: + mov r0, #0 + pop {r3, pc} + .balign 4, 0 + thumb_func_end ov02_0224D424 + + thumb_func_start ov02_0224D43C +ov02_0224D43C: ; 0x0224D43C + push {r4, lr} + add r4, r2, #0 + mov r2, #0x73 + add r0, r4, #0 + mov r1, #0 + lsl r2, r2, #2 + bl memset + mov r0, #0x6e + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #4 + mov r2, #0x20 + bl HeapExp_FndInitAllocator + ldr r0, _0224D464 ; =0x000001CA + mov r1, #0 + strh r1, [r4, r0] + pop {r4, pc} + nop +_0224D464: .word 0x000001CA + thumb_func_end ov02_0224D43C + + thumb_func_start ov02_0224D468 +ov02_0224D468: ; 0x0224D468 + push {r4, r5, r6, lr} + mov r0, #0x6e + add r5, r2, #0 + lsl r0, r0, #2 + mov r4, #0 + add r6, r5, r0 +_0224D474: + add r0, r5, #0 + add r1, r6, #0 + bl ov02_0224D144 + add r4, r4, #1 + add r5, #0xdc + cmp r4, #2 + blt _0224D474 + pop {r4, r5, r6, pc} + .balign 4, 0 + thumb_func_end ov02_0224D468 + + thumb_func_start ov02_0224D488 +ov02_0224D488: ; 0x0224D488 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r7, _0224D574 ; =0x000001CA + add r4, r2, #0 + ldrh r0, [r4, r7] + add r5, r1, #0 + cmp r0, #3 + bhi _0224D570 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224D4A4: ; jump table + .short _0224D4AC - _0224D4A4 - 2 ; case 0 + .short _0224D50A - _0224D4A4 - 2 ; case 1 + .short _0224D522 - _0224D4A4 - 2 ; case 2 + .short _0224D55E - _0224D4A4 - 2 ; case 3 +_0224D4AC: + ldr r2, _0224D578 ; =ov02_022538EC + add r1, sp, #4 + ldrb r3, [r2, #2] + add r0, sp, #4 + add r1, #2 + strb r3, [r0, #2] + ldrb r3, [r2, #3] + strb r3, [r0, #3] + ldrb r6, [r2, #4] + add r3, sp, #4 + strb r6, [r0] + ldrb r2, [r2, #5] + strb r2, [r0, #1] + sub r0, r7, #2 + ldrh r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 + mov r0, #0xdc + add r6, r2, #0 + mul r6, r0 + add r0, #0xdc + add r0, r4, r0 + str r0, [sp] + ldrb r1, [r1, r2] + ldrb r2, [r3, r2] + add r0, r4, r6 + mov r3, #2 + bl ov02_0224D0C8 + ldr r0, [r5, #0x40] + add r1, r4, r6 + bl ov02_0224D0AC + sub r1, r7, #2 + ldrh r0, [r4, r1] + add r0, r0, #1 + strh r0, [r4, r1] + ldrh r0, [r4, r1] + cmp r0, #2 + blo _0224D570 + add r0, r1, #2 + ldrh r0, [r4, r0] + add sp, #8 + add r2, r0, #1 + add r0, r1, #2 + strh r2, [r4, r0] + pop {r3, r4, r5, r6, r7, pc} +_0224D50A: + add r0, r4, #0 + add r0, #0xdc + mov r1, #0 + bl Field3dObject_SetActiveFlag + ldr r0, _0224D57C ; =SEQ_SE_DP_FW463 + bl PlaySE + add r0, r7, #0 + ldrh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, r0] +_0224D522: + add r0, r4, #0 + bl ov02_0224D178 + add r6, r0, #0 + ldr r0, [r5, #0x40] + add r1, r4, #0 + bl ov02_0224D0AC + cmp r6, #1 + bne _0224D570 + add r0, r4, #0 + add r0, #0xdc + mov r1, #1 + bl Field3dObject_SetActiveFlag + add r0, r4, #0 + mov r1, #0 + bl Field3dObject_SetActiveFlag + add r1, r4, #0 + ldr r0, [r5, #0x40] + add r1, #0xdc + bl ov02_0224D0AC + ldr r0, _0224D574 ; =0x000001CA + add sp, #8 + ldrh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, r0] + pop {r3, r4, r5, r6, r7, pc} +_0224D55E: + add r0, r4, #0 + add r0, #0xdc + bl ov02_0224D1AC + add r4, #0xdc + ldr r0, [r5, #0x40] + add r1, r4, #0 + bl ov02_0224D0AC +_0224D570: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_0224D574: .word 0x000001CA +_0224D578: .word ov02_022538EC +_0224D57C: .word SEQ_SE_DP_FW463 + thumb_func_end ov02_0224D488 + + thumb_func_start ov02_0224D580 +ov02_0224D580: ; 0x0224D580 + push {r3, r4, r5, lr} + add r5, r2, #0 + mov r4, #0 +_0224D586: + add r0, r5, #0 + bl ov02_0224D1DC + add r4, r4, #1 + add r5, #0xdc + cmp r4, #2 + blt _0224D586 + pop {r3, r4, r5, pc} + .balign 4, 0 + thumb_func_end ov02_0224D580 + + thumb_func_start ov02_0224D598 +ov02_0224D598: ; 0x0224D598 + ldr r0, [r0, #4] + ldr r3, _0224D5A4 ; =Field3dObjectTaskManager_CreateTask + ldr r0, [r0, #4] + ldr r1, _0224D5A8 ; =ov02_02253944 + bx r3 + nop +_0224D5A4: .word Field3dObjectTaskManager_CreateTask +_0224D5A8: .word ov02_02253944 + thumb_func_end ov02_0224D598 + + thumb_func_start ov02_0224D5AC +ov02_0224D5AC: ; 0x0224D5AC + ldr r3, _0224D5B0 ; =Field3dObjectTask_Delete + bx r3 + .balign 4, 0 +_0224D5B0: .word Field3dObjectTask_Delete + thumb_func_end ov02_0224D5AC + + thumb_func_start ov02_0224D5B4 +ov02_0224D5B4: ; 0x0224D5B4 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r1, #0 + ldr r1, _0224D640 ; =ov02_022538EC + add r4, r2, #0 + ldrb r2, [r1] + add r0, sp, #4 + strb r2, [r0, #1] + ldrb r2, [r1, #1] + strb r2, [r0] + ldrh r2, [r1, #6] + strh r2, [r0, #2] + ldrh r2, [r1, #8] + strh r2, [r0, #4] + ldrh r2, [r1, #0xa] + strh r2, [r0, #6] + ldrh r1, [r1, #0xc] + mov r2, #0xf0 + strh r1, [r0, #8] + add r0, r4, #0 + mov r1, #0 + bl memset + add r0, r4, #0 + add r0, #0xdc + mov r1, #4 + mov r2, #0x20 + bl HeapExp_FndInitAllocator + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetFacingDirection + add r6, r0, #0 + add r0, r4, #0 + add r0, #0xdc + str r0, [sp] + add r2, sp, #4 + ldrb r1, [r2, #1] + ldrb r2, [r2] + add r0, r4, #0 + mov r3, #1 + bl ov02_0224D0C8 + add r0, r4, #0 + bl ov02_0224D1AC + ldr r0, [r5, #0x40] + add r1, r4, #0 + bl ov02_0224D0AC + add r0, sp, #4 + lsl r1, r6, #1 + add r0, #2 + ldrh r0, [r0, r1] + bl GF_DegreeToSinCosIdxNoWrap + add r1, r0, #0 + add r0, r4, #0 + mov r2, #1 + bl Field3dObject_SetXRotation + ldr r0, _0224D644 ; =SEQ_SE_DP_FW463 + bl PlaySE + mov r0, #0 + add r4, #0xec + strh r0, [r4] + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_0224D640: .word ov02_022538EC +_0224D644: .word SEQ_SE_DP_FW463 + thumb_func_end ov02_0224D5B4 + + thumb_func_start ov02_0224D648 +ov02_0224D648: ; 0x0224D648 + ldr r3, _0224D654 ; =ov02_0224D144 + add r0, r2, #0 + add r2, #0xdc + add r1, r2, #0 + bx r3 + nop +_0224D654: .word ov02_0224D144 + thumb_func_end ov02_0224D648 + + thumb_func_start ov02_0224D658 +ov02_0224D658: ; 0x0224D658 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + add r0, r4, #0 + bl ov02_0224D1AC + ldr r0, [r5, #0x40] + add r1, r4, #0 + bl ov02_0224D0AC + pop {r3, r4, r5, pc} + .balign 4, 0 + thumb_func_end ov02_0224D658 + + thumb_func_start ov02_0224D670 +ov02_0224D670: ; 0x0224D670 + ldr r3, _0224D678 ; =ov02_0224D1DC + add r0, r2, #0 + bx r3 + nop +_0224D678: .word ov02_0224D1DC + thumb_func_end ov02_0224D670 + + thumb_func_start ov02_0224D67C +ov02_0224D67C: ; 0x0224D67C + ldr r0, [r0, #4] + ldr r3, _0224D688 ; =Field3dObjectTaskManager_CreateTask + ldr r0, [r0, #4] + ldr r1, _0224D68C ; =ov02_02253914 + bx r3 + nop +_0224D688: .word Field3dObjectTaskManager_CreateTask +_0224D68C: .word ov02_02253914 + thumb_func_end ov02_0224D67C + + thumb_func_start ov02_0224D690 +ov02_0224D690: ; 0x0224D690 + ldr r3, _0224D694 ; =Field3dObjectTask_Delete + bx r3 + .balign 4, 0 +_0224D694: .word Field3dObjectTask_Delete + thumb_func_end ov02_0224D690 + + thumb_func_start ov02_0224D698 +ov02_0224D698: ; 0x0224D698 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + add r0, #0xc8 + ldr r0, [r0] + add r6, r1, #0 + add r4, r2, #0 + add r5, r3, #0 + cmp r0, #0 + beq _0224D6B0 + bl GF_AssertFail +_0224D6B0: + add r0, r6, #0 + add r1, sp, #0 + bl PlayerAvatar_CopyPositionVector + ldr r2, [sp, #4] + ldr r3, [sp, #8] + ldr r1, [sp] + add r0, r7, #0 + add r2, r2, r4 + add r3, r3, r5 + bl Field3dObject_SetPosEx + add r0, r7, #0 + mov r4, #0 + add r5, r7, #0 + mov r1, #1 + add r0, #0xc8 + str r1, [r0] + add r5, #0x78 + add r6, r4, #0 +_0224D6D8: + add r0, r5, #0 + add r1, r6, #0 + bl Field3dModelAnimation_FrameSet + add r4, r4, #1 + add r5, #0x14 + cmp r4, #4 + blt _0224D6D8 + add r0, r7, #0 + mov r1, #1 + bl Field3dObject_SetActiveFlag + ldr r0, _0224D6FC ; =SEQ_SE_DP_UG_023 + bl PlaySE + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_0224D6FC: .word SEQ_SE_DP_UG_023 + thumb_func_end ov02_0224D698 + + thumb_func_start ov02_0224D700 +ov02_0224D700: ; 0x0224D700 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + add r0, #0xc8 + ldr r0, [r0] + cmp r0, #0 + beq _0224D73A + ldr r5, [sp] + mov r4, #1 + mov r6, #0 + add r5, #0x78 + lsl r7, r4, #0xc +_0224D716: + add r0, r5, #0 + add r1, r7, #0 + bl Field3dModelAnimation_FrameAdvanceAndCheck + add r6, r6, #1 + and r4, r0 + add r5, #0x14 + cmp r6, #4 + blt _0224D716 + cmp r4, #1 + bne _0224D73A + ldr r0, [sp] + mov r1, #0 + add r0, #0xc8 + str r1, [r0] + ldr r0, [sp] + bl Field3dObject_SetActiveFlag +_0224D73A: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end ov02_0224D700 + + thumb_func_start ov02_0224D73C +ov02_0224D73C: ; 0x0224D73C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r1, [sp] + str r2, [sp, #4] + mov r1, #0 + mov r2, #0xcc + add r7, r0, #0 + add r5, r3, #0 + bl memset + ldr r1, [sp] + add r0, r7, #0 + bl Field3dObject_InitFromModel + add r4, r7, #0 + mov r6, #0 + add r4, #0x78 +_0224D75E: + ldr r1, [sp] + ldr r2, [r5] + ldr r3, [sp, #4] + add r0, r4, #0 + bl ov01_021FBE70 + add r0, r7, #0 + add r1, r4, #0 + bl Field3dObject_AddAnimation + add r6, r6, #1 + add r5, r5, #4 + add r4, #0x14 + cmp r6, #4 + blt _0224D75E + add r0, r7, #0 + mov r1, #0 + bl Field3dObject_SetActiveFlag + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end ov02_0224D73C + + thumb_func_start ov02_0224D788 +ov02_0224D788: ; 0x0224D788 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r7, #0 + add r6, r1, #0 + mov r4, #0 + add r5, #0x78 +_0224D794: + add r0, r5, #0 + add r1, r6, #0 + bl Field3dModelAnimation_Unload + add r4, r4, #1 + add r5, #0x14 + cmp r4, #4 + blt _0224D794 + add r0, r7, #0 + mov r1, #0 + mov r2, #0xcc + bl memset + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end ov02_0224D788 + + thumb_func_start ov02_0224D7B0 +ov02_0224D7B0: ; 0x0224D7B0 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0xce + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, sp, #0 + ldr r0, [r0, #0x40] + bl PlayerAvatar_CopyPositionVector + mov r1, #0xcf + lsl r1, r1, #4 + ldr r2, [sp] + ldr r0, [r4, r1] + sub r0, r2, r0 + bne _0224D7F8 + add r0, r1, #4 + ldr r2, [sp, #4] + ldr r0, [r4, r0] + cmp r2, r0 + bge _0224D7F8 + add r0, r1, #0 + add r0, #8 + ldr r2, [sp, #8] + ldr r0, [r4, r0] + cmp r2, r0 + ble _0224D7F8 + add r0, r1, #0 + mov r2, #0 + sub r0, #8 + str r2, [r4, r0] + mov r2, #2 + lsl r2, r2, #0x10 + sub r0, r1, #4 + str r2, [r4, r0] + b _0224D806 +_0224D7F8: + mov r1, #2 + ldr r0, _0224D81C ; =0x00000CE8 + lsl r1, r1, #0x10 + str r1, [r4, r0] + lsr r1, r1, #1 + add r0, r0, #4 + str r1, [r4, r0] +_0224D806: + mov r0, #0xcf + lsl r0, r0, #4 + add r3, sp, #0 + add r2, r4, r0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add sp, #0xc + pop {r3, r4, pc} + nop +_0224D81C: .word 0x00000CE8 + thumb_func_end ov02_0224D7B0 + + thumb_func_start ov02_0224D820 +ov02_0224D820: ; 0x0224D820 + push {r4, lr} + add r4, r0, #0 + bl ov02_0224D7B0 + mov r2, #0 + add r1, r4, #0 +_0224D82C: + add r0, r1, #0 + add r0, #0xd8 + ldr r0, [r0] + cmp r0, #0 + bne _0224D858 + add r1, r4, #0 + mov r0, #0xcc + mov r3, #0xce + add r1, #0x10 + mul r0, r2 + lsl r3, r3, #4 + add r0, r1, r0 + ldr r1, [r4, r3] + add r2, r3, #0 + add r2, #8 + add r3, #0xc + ldr r1, [r1, #0x40] + ldr r2, [r4, r2] + ldr r3, [r4, r3] + bl ov02_0224D698 + pop {r4, pc} +_0224D858: + add r2, r2, #1 + add r1, #0xcc + cmp r2, #0x10 + blt _0224D82C + bl GF_AssertFail + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_0224D820 + + thumb_func_start ov02_0224D868 +ov02_0224D868: ; 0x0224D868 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 + add r5, #0x10 +_0224D870: + add r0, r5, #0 + bl ov02_0224D700 + add r4, r4, #1 + add r5, #0xcc + cmp r4, #0x10 + blt _0224D870 + pop {r3, r4, r5, pc} + thumb_func_end ov02_0224D868 + + thumb_func_start ov02_0224D880 +ov02_0224D880: ; 0x0224D880 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r2, #0 + mov r2, #0xd1 + str r1, [sp, #4] + add r0, r5, #0 + mov r1, #0 + lsl r2, r2, #4 + bl memset + ldr r0, _0224D90C ; =0x00000CFC + mov r1, #4 + add r0, r5, r0 + mov r2, #0x20 + bl HeapExp_FndInitAllocator + add r0, r5, #0 + mov r1, #0x86 + mov r2, #8 + mov r3, #4 + bl Field3dModel_LoadFromFilesystem + mov r7, #0xcd + mov r4, #0 + add r6, r5, #0 + lsl r7, r7, #4 +_0224D8B4: + mov r0, #0 + str r0, [sp] + mov r0, #0x86 + add r1, r4, #4 + mov r2, #0 + mov r3, #4 + bl GfGfxLoader_LoadFromNarc + str r0, [r6, r7] + add r4, r4, #1 + add r6, r6, #4 + cmp r4, #4 + blt _0224D8B4 + add r4, r5, #0 + mov r7, #0xcd + mov r6, #0 + add r4, #0x10 + lsl r7, r7, #4 +_0224D8D8: + ldr r2, _0224D90C ; =0x00000CFC + add r0, r4, #0 + add r1, r5, #0 + add r2, r5, r2 + add r3, r5, r7 + bl ov02_0224D73C + add r6, r6, #1 + add r4, #0xcc + cmp r6, #0x10 + blt _0224D8D8 + mov r1, #0xce + ldr r0, [sp, #4] + lsl r1, r1, #4 + str r0, [r5, r1] + ldr r0, [r5, r1] + add r1, #0x10 + ldr r0, [r0, #0x40] + add r1, r5, r1 + bl PlayerAvatar_CopyPositionVector + ldr r0, _0224D910 ; =0x00000D0C + mov r1, #0 + str r1, [r5, r0] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_0224D90C: .word 0x00000CFC +_0224D910: .word 0x00000D0C + thumb_func_end ov02_0224D880 + + thumb_func_start ov02_0224D914 +ov02_0224D914: ; 0x0224D914 + push {r3, r4, r5, r6, r7, lr} + add r5, r2, #0 + add r4, r5, #0 + ldr r7, _0224D94C ; =0x00000CFC + mov r6, #0 + add r4, #0x10 +_0224D920: + add r0, r4, #0 + add r1, r5, r7 + bl ov02_0224D788 + add r6, r6, #1 + add r4, #0xcc + cmp r6, #0x10 + blt _0224D920 + add r0, r5, #0 + bl Field3dModel_Unload + mov r6, #0xcd + mov r4, #0 + lsl r6, r6, #4 +_0224D93C: + ldr r0, [r5, r6] + bl Heap_Free + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0224D93C + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_0224D94C: .word 0x00000CFC + thumb_func_end ov02_0224D914 + + thumb_func_start ov02_0224D950 +ov02_0224D950: ; 0x0224D950 + push {r4, lr} + ldr r1, _0224D988 ; =0x00000D0C + add r4, r2, #0 + ldr r0, [r4, r1] + cmp r0, #0 + bne _0224D986 + add r0, r1, #0 + sub r0, #0x28 + ldr r0, [r4, r0] + sub r2, r0, #1 + add r0, r1, #0 + sub r0, #0x28 + str r2, [r4, r0] + add r0, r1, #0 + sub r0, #0x28 + ldr r0, [r4, r0] + cmp r0, #0 + bge _0224D980 + mov r0, #4 + sub r1, #0x28 + str r0, [r4, r1] + add r0, r4, #0 + bl ov02_0224D820 +_0224D980: + add r0, r4, #0 + bl ov02_0224D868 +_0224D986: + pop {r4, pc} + .balign 4, 0 +_0224D988: .word 0x00000D0C + thumb_func_end ov02_0224D950 + + thumb_func_start ov02_0224D98C +ov02_0224D98C: ; 0x0224D98C + push {r3, r4, r5, lr} + add r5, r2, #0 + mov r4, #0 + add r5, #0x10 +_0224D994: + add r0, r5, #0 + bl Field3dObject_Draw + add r4, r4, #1 + add r5, #0xcc + cmp r4, #0x10 + blt _0224D994 + pop {r3, r4, r5, pc} + thumb_func_end ov02_0224D98C + + thumb_func_start ov02_0224D9A4 +ov02_0224D9A4: ; 0x0224D9A4 + ldr r0, [r0, #4] + ldr r3, _0224D9B0 ; =Field3dObjectTaskManager_CreateTask + ldr r0, [r0, #4] + ldr r1, _0224D9B4 ; =ov02_0225395C + bx r3 + nop +_0224D9B0: .word Field3dObjectTaskManager_CreateTask +_0224D9B4: .word ov02_0225395C + thumb_func_end ov02_0224D9A4 + + thumb_func_start ov02_0224D9B8 +ov02_0224D9B8: ; 0x0224D9B8 + ldr r3, _0224D9BC ; =Field3dObjectTask_Delete + bx r3 + .balign 4, 0 +_0224D9BC: .word Field3dObjectTask_Delete + thumb_func_end ov02_0224D9B8 + + thumb_func_start ov02_0224D9C0 +ov02_0224D9C0: ; 0x0224D9C0 + push {r3, r4, r5, lr} + sub sp, #0x28 + add r4, r2, #0 + mov r2, #0x45 + add r5, r1, #0 + add r0, r4, #0 + mov r1, #0 + lsl r2, r2, #2 + bl memset + add r0, r4, #0 + add r0, #0xdc + mov r1, #4 + mov r2, #0x20 + bl HeapExp_FndInitAllocator + add r0, r4, #0 + add r0, #0xdc + str r0, [sp] + add r0, r4, #0 + mov r1, #0x13 + mov r2, #0x11 + mov r3, #2 + bl ov02_0224D0C8 + ldr r0, [r5, #0x40] + add r1, r4, #0 + bl ov02_0224D044 + ldr r1, [r5, #0x24] + add r0, sp, #0x10 + bl Camera_GetLookAtCamTarget + add r3, sp, #0x10 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0xf8 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r1, [r5, #0x24] + add r0, sp, #4 + bl Camera_GetLookAtCamPos + add r3, sp, #4 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0xec + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, sp, #0x1c + str r0, [r2] + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetFacingDirection + cmp r0, #3 + bhi _0224DA7C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224DA46: ; jump table + .short _0224DA4E - _0224DA46 - 2 ; case 0 + .short _0224DA5A - _0224DA46 - 2 ; case 1 + .short _0224DA66 - _0224DA46 - 2 ; case 2 + .short _0224DA72 - _0224DA46 - 2 ; case 3 +_0224DA4E: + mov r0, #2 + ldr r1, [sp, #0x24] + lsl r0, r0, #0xe + sub r0, r1, r0 + str r0, [sp, #0x24] + b _0224DA7C +_0224DA5A: + mov r0, #2 + ldr r1, [sp, #0x24] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x24] + b _0224DA7C +_0224DA66: + mov r0, #2 + ldr r1, [sp, #0x1c] + lsl r0, r0, #0xe + sub r0, r1, r0 + str r0, [sp, #0x1c] + b _0224DA7C +_0224DA72: + mov r0, #2 + ldr r1, [sp, #0x1c] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x1c] +_0224DA7C: + mov r0, #0x41 + lsl r0, r0, #2 + add r3, sp, #0x1c + add r2, r4, r0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, _0224DA9C ; =SEQ_SE_GS_ZUTUKI + bl PlaySE + ldr r0, _0224DAA0 ; =0x00000113 + mov r1, #0 + strb r1, [r4, r0] + add sp, #0x28 + pop {r3, r4, r5, pc} + .balign 4, 0 +_0224DA9C: .word SEQ_SE_GS_ZUTUKI +_0224DAA0: .word 0x00000113 + thumb_func_end ov02_0224D9C0 + + thumb_func_start ov02_0224DAA4 +ov02_0224DAA4: ; 0x0224DAA4 + push {r3, r4, r5, lr} + sub sp, #0x28 + add r4, r2, #0 + mov r2, #0x45 + add r5, r1, #0 + add r0, r4, #0 + mov r1, #0 + lsl r2, r2, #2 + bl memset + add r0, r4, #0 + add r0, #0xdc + mov r1, #4 + mov r2, #0x20 + bl HeapExp_FndInitAllocator + add r0, r4, #0 + add r0, #0xdc + str r0, [sp] + add r0, r4, #0 + mov r1, #0x13 + mov r2, #0x11 + mov r3, #2 + bl ov02_0224D0C8 + ldr r0, [r5, #0x3c] + mov r1, #0xfd + add r2, r4, #0 + bl ov02_0224CFD8 + ldr r1, [r5, #0x24] + add r0, sp, #0x10 + bl Camera_GetLookAtCamTarget + add r3, sp, #0x10 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0xf8 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r1, [r5, #0x24] + add r0, sp, #4 + bl Camera_GetLookAtCamPos + add r3, sp, #4 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0xec + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, sp, #0x1c + str r0, [r2] + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetFacingDirection + cmp r0, #3 + bhi _0224DB62 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224DB2C: ; jump table + .short _0224DB34 - _0224DB2C - 2 ; case 0 + .short _0224DB40 - _0224DB2C - 2 ; case 1 + .short _0224DB4C - _0224DB2C - 2 ; case 2 + .short _0224DB58 - _0224DB2C - 2 ; case 3 +_0224DB34: + mov r0, #2 + ldr r1, [sp, #0x24] + lsl r0, r0, #0xe + sub r0, r1, r0 + str r0, [sp, #0x24] + b _0224DB62 +_0224DB40: + mov r0, #2 + ldr r1, [sp, #0x24] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x24] + b _0224DB62 +_0224DB4C: + mov r0, #2 + ldr r1, [sp, #0x1c] + lsl r0, r0, #0xe + sub r0, r1, r0 + str r0, [sp, #0x1c] + b _0224DB62 +_0224DB58: + mov r0, #2 + ldr r1, [sp, #0x1c] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x1c] +_0224DB62: + mov r0, #0x41 + lsl r0, r0, #2 + add r3, sp, #0x1c + add r2, r4, r0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, _0224DB84 ; =SEQ_SE_GS_ZUTUKI + bl PlaySE + ldr r0, _0224DB88 ; =0x00000113 + mov r1, #0 + strb r1, [r4, r0] + add sp, #0x28 + pop {r3, r4, r5, pc} + nop +_0224DB84: .word SEQ_SE_GS_ZUTUKI +_0224DB88: .word 0x00000113 + thumb_func_end ov02_0224DAA4 + + thumb_func_start ov02_0224DB8C +ov02_0224DB8C: ; 0x0224DB8C + ldr r3, _0224DB98 ; =ov02_0224D144 + add r0, r2, #0 + add r2, #0xdc + add r1, r2, #0 + bx r3 + nop +_0224DB98: .word ov02_0224D144 + thumb_func_end ov02_0224DB8C + + thumb_func_start ov02_0224DB9C +ov02_0224DB9C: ; 0x0224DB9C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, _0224DC50 ; =0x00000113 + add r4, r2, #0 + ldrb r0, [r4, r1] + cmp r0, #0 + beq _0224DBB0 + cmp r0, #1 + beq _0224DC38 + pop {r3, r4, r5, pc} +_0224DBB0: + sub r0, r1, #1 + ldrb r0, [r4, r0] + cmp r0, #2 + bhs _0224DC1C + sub r0, r1, #3 + ldrsb r0, [r4, r0] + cmp r0, #0 + bgt _0224DC12 + mov r2, #1 + sub r0, r1, #3 + strb r2, [r4, r0] + sub r0, r1, #2 + ldrb r0, [r4, r0] + add r0, r0, #1 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r2, r2, r1 + add r1, r0, #0 + add r1, #0xf2 + strb r2, [r4, r1] + add r1, r0, #0 + add r1, #0xf2 + ldrb r1, [r4, r1] + cmp r1, #0 + beq _0224DBF4 + add r0, #0xe5 + ldr r1, [r5, #0x24] + add r0, r4, r0 + bl Camera_OffsetLookAtPosAndTarget + b _0224DC1C +_0224DBF4: + add r0, r4, #0 + ldr r1, [r5, #0x24] + add r0, #0xf8 + bl Camera_SetLookAtCamTarget + add r0, r4, #0 + ldr r1, [r5, #0x24] + add r0, #0xec + bl Camera_SetLookAtCamPos + ldr r0, _0224DC54 ; =0x00000112 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _0224DC1C +_0224DC12: + sub r0, r1, #3 + ldrsb r0, [r4, r0] + sub r2, r0, #1 + sub r0, r1, #3 + strb r2, [r4, r0] +_0224DC1C: + add r0, r4, #0 + bl ov02_0224D178 + cmp r0, #1 + bne _0224DC4C + add r0, r4, #0 + mov r1, #0 + bl Field3dObject_SetActiveFlag + ldr r0, _0224DC50 ; =0x00000113 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_0224DC38: + add r0, r4, #0 + ldr r1, [r5, #0x24] + add r0, #0xf8 + bl Camera_SetLookAtCamTarget + add r4, #0xec + ldr r1, [r5, #0x24] + add r0, r4, #0 + bl Camera_SetLookAtCamPos +_0224DC4C: + pop {r3, r4, r5, pc} + nop +_0224DC50: .word 0x00000113 +_0224DC54: .word 0x00000112 + thumb_func_end ov02_0224DB9C + + thumb_func_start ov02_0224DC58 +ov02_0224DC58: ; 0x0224DC58 + ldr r3, _0224DC60 ; =ov02_0224D1DC + add r0, r2, #0 + bx r3 + nop +_0224DC60: .word ov02_0224D1DC + thumb_func_end ov02_0224DC58 + + thumb_func_start ov02_0224DC64 +ov02_0224DC64: ; 0x0224DC64 + ldr r0, [r0, #4] + ldr r3, _0224DC70 ; =Field3dObjectTaskManager_CreateTask + ldr r0, [r0, #4] + ldr r1, _0224DC74 ; =ov02_022539A4 + bx r3 + nop +_0224DC70: .word Field3dObjectTaskManager_CreateTask +_0224DC74: .word ov02_022539A4 + thumb_func_end ov02_0224DC64 + + thumb_func_start ov02_0224DC78 +ov02_0224DC78: ; 0x0224DC78 + ldr r0, [r0, #4] + ldr r3, _0224DC84 ; =Field3dObjectTaskManager_CreateTask + ldr r0, [r0, #4] + ldr r1, _0224DC88 ; =ov02_0225392C + bx r3 + nop +_0224DC84: .word Field3dObjectTaskManager_CreateTask +_0224DC88: .word ov02_0225392C + thumb_func_end ov02_0224DC78 + + thumb_func_start ov02_0224DC8C +ov02_0224DC8C: ; 0x0224DC8C + ldr r3, _0224DC90 ; =Field3dObjectTask_Delete + bx r3 + .balign 4, 0 +_0224DC90: .word Field3dObjectTask_Delete + thumb_func_end ov02_0224DC8C + + thumb_func_start ov02_0224DC94 +ov02_0224DC94: ; 0x0224DC94 + push {r3, lr} + bl Field3dObjectTask_GetData + ldr r1, _0224DCAC ; =0x00000113 + ldrb r0, [r0, r1] + cmp r0, #1 + bne _0224DCA6 + mov r0, #1 + pop {r3, pc} +_0224DCA6: + mov r0, #0 + pop {r3, pc} + nop +_0224DCAC: .word 0x00000113 + thumb_func_end ov02_0224DC94 + + thumb_func_start ov02_0224DCB0 +ov02_0224DCB0: ; 0x0224DCB0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r2, #0 + str r1, [sp, #4] + ldr r2, _0224DD28 ; =0x00000E9C + add r0, r6, #0 + mov r1, #0 + bl memset + ldr r0, _0224DD2C ; =0x00000E88 + mov r1, #4 + add r0, r6, r0 + mov r2, #0x20 + bl HeapExp_FndInitAllocator + add r0, r6, #0 + mov r1, #0x86 + mov r2, #8 + mov r3, #4 + bl Field3dModel_LoadFromFilesystem + ldr r7, _0224DD30 ; =0x00000E68 + mov r4, #0 + add r5, r6, #0 +_0224DCE0: + mov r0, #0 + str r0, [sp] + mov r0, #0x86 + add r1, r4, #4 + mov r2, #0 + mov r3, #4 + bl GfGfxLoader_LoadFromNarc + str r0, [r5, r7] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0224DCE0 + add r4, r6, #0 + ldr r7, _0224DD30 ; =0x00000E68 + mov r5, #0 + add r4, #0x10 +_0224DD02: + ldr r2, _0224DD2C ; =0x00000E88 + add r0, r4, #0 + add r1, r6, #0 + add r2, r6, r2 + add r3, r6, r7 + bl ov02_0224DEA8 + add r5, r5, #1 + add r4, #0xcc + cmp r5, #0x12 + blt _0224DD02 + ldr r1, _0224DD34 ; =0x00000E78 + ldr r0, [sp, #4] + str r0, [r6, r1] + mov r0, #0 + add r1, #0x20 + strh r0, [r6, r1] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_0224DD28: .word 0x00000E9C +_0224DD2C: .word 0x00000E88 +_0224DD30: .word 0x00000E68 +_0224DD34: .word 0x00000E78 + thumb_func_end ov02_0224DCB0 + + thumb_func_start ov02_0224DD38 +ov02_0224DD38: ; 0x0224DD38 + push {r4, lr} + add r4, r2, #0 + bl ov02_0224DCB0 + ldr r0, _0224DD48 ; =0x00000E9A + mov r1, #1 + strh r1, [r4, r0] + pop {r4, pc} + .balign 4, 0 +_0224DD48: .word 0x00000E9A + thumb_func_end ov02_0224DD38 + + thumb_func_start ov02_0224DD4C +ov02_0224DD4C: ; 0x0224DD4C + push {r3, r4, r5, r6, r7, lr} + add r5, r2, #0 + add r4, r5, #0 + ldr r7, _0224DD84 ; =0x00000E88 + mov r6, #0 + add r4, #0x10 +_0224DD58: + add r0, r4, #0 + add r1, r5, r7 + bl ov02_0224DEF4 + add r6, r6, #1 + add r4, #0xcc + cmp r6, #0x12 + blt _0224DD58 + add r0, r5, #0 + bl Field3dModel_Unload + ldr r6, _0224DD88 ; =0x00000E68 + mov r4, #0 +_0224DD72: + ldr r0, [r5, r6] + bl Heap_Free + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0224DD72 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224DD84: .word 0x00000E88 +_0224DD88: .word 0x00000E68 + thumb_func_end ov02_0224DD4C + + thumb_func_start ov02_0224DD8C +ov02_0224DD8C: ; 0x0224DD8C + push {r4, lr} + ldr r1, _0224DDC4 ; =0x00000E98 + add r4, r2, #0 + ldrh r0, [r4, r1] + cmp r0, #0 + bne _0224DDC2 + add r0, r1, #0 + sub r0, #0x1c + ldr r0, [r4, r0] + sub r2, r0, #1 + add r0, r1, #0 + sub r0, #0x1c + str r2, [r4, r0] + add r0, r1, #0 + sub r0, #0x1c + ldr r0, [r4, r0] + cmp r0, #0 + bge _0224DDBC + mov r0, #4 + sub r1, #0x1c + str r0, [r4, r1] + add r0, r4, #0 + bl ov02_0224DF1C +_0224DDBC: + add r0, r4, #0 + bl ov02_0224E008 +_0224DDC2: + pop {r4, pc} + .balign 4, 0 +_0224DDC4: .word 0x00000E98 + thumb_func_end ov02_0224DD8C + + thumb_func_start ov02_0224DDC8 +ov02_0224DDC8: ; 0x0224DDC8 + push {r3, r4, r5, lr} + add r5, r2, #0 + mov r4, #0 + add r5, #0x10 +_0224DDD0: + add r0, r5, #0 + bl Field3dObject_Draw + add r4, r4, #1 + add r5, #0xcc + cmp r4, #0x12 + blt _0224DDD0 + pop {r3, r4, r5, pc} + thumb_func_end ov02_0224DDC8 + + thumb_func_start ov02_0224DDE0 +ov02_0224DDE0: ; 0x0224DDE0 + ldr r0, [r0, #4] + ldr r3, _0224DDEC ; =Field3dObjectTaskManager_CreateTask + ldr r0, [r0, #4] + ldr r1, _0224DDF0 ; =ov02_022539D4 + bx r3 + nop +_0224DDEC: .word Field3dObjectTaskManager_CreateTask +_0224DDF0: .word ov02_022539D4 + thumb_func_end ov02_0224DDE0 + + thumb_func_start ov02_0224DDF4 +ov02_0224DDF4: ; 0x0224DDF4 + ldr r0, [r0, #4] + ldr r3, _0224DE00 ; =Field3dObjectTaskManager_CreateTask + ldr r0, [r0, #4] + ldr r1, _0224DE04 ; =ov02_022539EC + bx r3 + nop +_0224DE00: .word Field3dObjectTaskManager_CreateTask +_0224DE04: .word ov02_022539EC + thumb_func_end ov02_0224DDF4 + + thumb_func_start ov02_0224DE08 +ov02_0224DE08: ; 0x0224DE08 + ldr r3, _0224DE0C ; =Field3dObjectTask_Delete + bx r3 + .balign 4, 0 +_0224DE0C: .word Field3dObjectTask_Delete + thumb_func_end ov02_0224DE08 + + thumb_func_start ov02_0224DE10 +ov02_0224DE10: ; 0x0224DE10 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, #0xc8 + ldr r0, [r0] + add r4, r1, #0 + add r5, r2, #0 + add r6, r3, #0 + cmp r0, #0 + beq _0224DE26 + bl GF_AssertFail +_0224DE26: + ldr r2, [r4, #4] + ldr r3, [r4, #8] + ldr r1, [r4] + add r0, r7, #0 + add r2, r2, r5 + add r3, r3, r6 + bl Field3dObject_SetPosEx + add r0, r7, #0 + mov r4, #0 + add r5, r7, #0 + mov r1, #1 + add r0, #0xc8 + str r1, [r0] + add r5, #0x78 + add r6, r4, #0 +_0224DE46: + add r0, r5, #0 + add r1, r6, #0 + bl Field3dModelAnimation_FrameSet + add r4, r4, #1 + add r5, #0x14 + cmp r4, #4 + blt _0224DE46 + add r0, r7, #0 + mov r1, #1 + bl Field3dObject_SetActiveFlag + ldr r0, _0224DE68 ; =SEQ_SE_DP_UG_023 + bl PlaySE + pop {r3, r4, r5, r6, r7, pc} + nop +_0224DE68: .word SEQ_SE_DP_UG_023 + thumb_func_end ov02_0224DE10 + + thumb_func_start ov02_0224DE6C +ov02_0224DE6C: ; 0x0224DE6C + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + add r0, #0xc8 + ldr r0, [r0] + cmp r0, #0 + beq _0224DEA6 + ldr r5, [sp] + mov r4, #1 + mov r6, #0 + add r5, #0x78 + lsl r7, r4, #0xc +_0224DE82: + add r0, r5, #0 + add r1, r7, #0 + bl Field3dModelAnimation_FrameAdvanceAndCheck + add r6, r6, #1 + and r4, r0 + add r5, #0x14 + cmp r6, #4 + blt _0224DE82 + cmp r4, #1 + bne _0224DEA6 + ldr r0, [sp] + mov r1, #0 + add r0, #0xc8 + str r1, [r0] + ldr r0, [sp] + bl Field3dObject_SetActiveFlag +_0224DEA6: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end ov02_0224DE6C + + thumb_func_start ov02_0224DEA8 +ov02_0224DEA8: ; 0x0224DEA8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r1, [sp] + str r2, [sp, #4] + mov r1, #0 + mov r2, #0xcc + add r7, r0, #0 + add r5, r3, #0 + bl memset + ldr r1, [sp] + add r0, r7, #0 + bl Field3dObject_InitFromModel + add r4, r7, #0 + mov r6, #0 + add r4, #0x78 +_0224DECA: + ldr r1, [sp] + ldr r2, [r5] + ldr r3, [sp, #4] + add r0, r4, #0 + bl ov01_021FBE70 + add r0, r7, #0 + add r1, r4, #0 + bl Field3dObject_AddAnimation + add r6, r6, #1 + add r5, r5, #4 + add r4, #0x14 + cmp r6, #4 + blt _0224DECA + add r0, r7, #0 + mov r1, #0 + bl Field3dObject_SetActiveFlag + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end ov02_0224DEA8 + + thumb_func_start ov02_0224DEF4 +ov02_0224DEF4: ; 0x0224DEF4 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r7, #0 + add r6, r1, #0 + mov r4, #0 + add r5, #0x78 +_0224DF00: + add r0, r5, #0 + add r1, r6, #0 + bl Field3dModelAnimation_Unload + add r4, r4, #1 + add r5, #0x14 + cmp r4, #4 + blt _0224DF00 + add r0, r7, #0 + mov r1, #0 + mov r2, #0xcc + bl memset + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end ov02_0224DEF4 + + thumb_func_start ov02_0224DF1C +ov02_0224DF1C: ; 0x0224DF1C + push {r3, r4, r5, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #1 + mov r1, #0x3a + mov r2, #3 + lsl r0, r0, #0xc + lsl r1, r1, #6 + str r0, [r4, r1] + add r0, r1, #4 + lsl r2, r2, #0xc + sub r1, #8 + str r2, [r4, r0] + ldr r0, [r4, r1] + add r1, sp, #0xc + ldr r0, [r0, #0x40] + bl PlayerAvatar_CopyPositionVector + ldr r0, _0224E004 ; =0x00000E9A + ldrh r1, [r4, r0] + cmp r1, #0 + beq _0224DFC6 + sub r0, #0x22 + ldr r0, [r4, r0] + bl FollowMon_GetMapObject + add r1, sp, #0 + bl MapObject_CopyPositionVector + mov r5, #0 + add r1, r4, #0 +_0224DF5A: + add r0, r1, #0 + add r0, #0xd8 + ldr r0, [r0] + cmp r0, #0 + bne _0224DF80 + mov r3, #0x3a + lsl r3, r3, #6 + add r1, r4, #0 + mov r0, #0xcc + ldr r2, [r4, r3] + add r3, r3, #4 + add r1, #0x10 + mul r0, r5 + add r0, r1, r0 + ldr r3, [r4, r3] + add r1, sp, #0xc + bl ov02_0224DE10 + b _0224DF88 +_0224DF80: + add r5, r5, #1 + add r1, #0xcc + cmp r5, #0x12 + blt _0224DF5A +_0224DF88: + cmp r5, #0x12 + bne _0224DF90 + bl GF_AssertFail +_0224DF90: + mov r0, #0 + add r2, r4, #0 +_0224DF94: + add r1, r2, #0 + add r1, #0xd8 + ldr r1, [r1] + cmp r1, #0 + bne _0224DFBC + add r2, r4, #0 + mov r1, #0xcc + mov r3, #0x3a + add r2, #0x10 + mul r1, r0 + add r0, r2, r1 + lsl r3, r3, #6 + ldr r2, [r4, r3] + add r3, r3, #4 + ldr r3, [r4, r3] + add r1, sp, #0 + bl ov02_0224DE10 + add sp, #0x18 + pop {r3, r4, r5, pc} +_0224DFBC: + add r0, r0, #1 + add r2, #0xcc + cmp r0, #0x12 + blt _0224DF94 + b _0224DFFA +_0224DFC6: + mov r0, #0 + add r2, r4, #0 +_0224DFCA: + add r1, r2, #0 + add r1, #0xd8 + ldr r1, [r1] + cmp r1, #0 + bne _0224DFF2 + add r2, r4, #0 + mov r1, #0xcc + mov r3, #0x3a + add r2, #0x10 + mul r1, r0 + add r0, r2, r1 + lsl r3, r3, #6 + ldr r2, [r4, r3] + add r3, r3, #4 + ldr r3, [r4, r3] + add r1, sp, #0xc + bl ov02_0224DE10 + add sp, #0x18 + pop {r3, r4, r5, pc} +_0224DFF2: + add r0, r0, #1 + add r2, #0xcc + cmp r0, #0x12 + blt _0224DFCA +_0224DFFA: + bl GF_AssertFail + add sp, #0x18 + pop {r3, r4, r5, pc} + nop +_0224E004: .word 0x00000E9A + thumb_func_end ov02_0224DF1C + + thumb_func_start ov02_0224E008 +ov02_0224E008: ; 0x0224E008 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 + add r5, #0x10 +_0224E010: + add r0, r5, #0 + bl ov02_0224DE6C + add r4, r4, #1 + add r5, #0xcc + cmp r4, #0x12 + blt _0224E010 + pop {r3, r4, r5, pc} + thumb_func_end ov02_0224E008 + + thumb_func_start ov02_0224E020 +ov02_0224E020: ; 0x0224E020 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224E032 + cmp r0, #1 + beq _0224E04A + pop {r3, r4, r5, pc} +_0224E032: + ldr r1, [r4, #0xc] + ldr r0, [r4] + lsl r2, r1, #2 + ldr r1, _0224E06C ; =ov02_02253A34 + ldr r1, [r1, r2] + blx r1 + cmp r0, #1 + bne _0224E068 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + pop {r3, r4, r5, pc} +_0224E04A: + ldr r1, [r4, #0xc] + ldr r0, [r4] + lsl r2, r1, #2 + ldr r1, _0224E070 ; =ov02_02253A04 + ldr r1, [r1, r2] + blx r1 + ldr r0, [r4, #4] + mov r1, #1 + strh r1, [r0] + add r0, r4, #0 + bl Heap_Free + add r0, r5, #0 + bl SysTask_Destroy +_0224E068: + pop {r3, r4, r5, pc} + nop +_0224E06C: .word ov02_02253A34 +_0224E070: .word ov02_02253A04 + thumb_func_end ov02_0224E020 + + thumb_func_start ov02_0224E074 +ov02_0224E074: ; 0x0224E074 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + add r0, r3, #0 + mov r1, #0x10 + add r4, r2, #0 + bl Heap_Alloc + add r6, r0, #0 + add r2, r6, #0 + mov r1, #0x10 + mov r0, #0 +_0224E08C: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _0224E08C + ldr r1, _0224E0B4 ; =ov02_02253A1C + lsl r2, r4, #2 + ldr r1, [r1, r2] + add r0, r7, #0 + blx r1 + str r0, [r6] + str r5, [r6, #4] + ldr r0, _0224E0B8 ; =ov02_0224E020 + str r4, [r6, #0xc] + mov r2, #0 + add r1, r6, #0 + strh r2, [r5] + bl SysTask_CreateOnMainQueue + pop {r3, r4, r5, r6, r7, pc} + nop +_0224E0B4: .word ov02_02253A1C +_0224E0B8: .word ov02_0224E020 + thumb_func_end ov02_0224E074 + + thumb_func_start ov02_0224E0BC +ov02_0224E0BC: ; 0x0224E0BC + push {r4, lr} + add r4, r2, #0 + bl ov02_0224E0D4 + add r2, r0, #0 + ldr r1, _0224E0D0 ; =ov02_0224E0EC + add r0, r4, #0 + bl TaskManager_Call + pop {r4, pc} + .balign 4, 0 +_0224E0D0: .word ov02_0224E0EC + thumb_func_end ov02_0224E0BC + + thumb_func_start ov02_0224E0D4 +ov02_0224E0D4: ; 0x0224E0D4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #4 + mov r1, #0x20 + bl Heap_AllocAtEnd + mov r1, #0 + str r1, [r0] + str r5, [r0, #4] + str r4, [r0, #8] + pop {r3, r4, r5, pc} + thumb_func_end ov02_0224E0D4 + + thumb_func_start ov02_0224E0EC +ov02_0224E0EC: ; 0x0224E0EC + push {r4, r5, r6, lr} + add r4, r0, #0 + bl TaskManager_GetFieldSystem + add r6, r0, #0 + add r0, r4, #0 + bl TaskManager_GetEnvironment + add r4, r0, #0 + ldr r0, [r4] + mov r5, #0 + cmp r0, #5 + bls _0224E108 + b _0224E21E +_0224E108: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224E114: ; jump table + .short _0224E120 - _0224E114 - 2 ; case 0 + .short _0224E130 - _0224E114 - 2 ; case 1 + .short _0224E156 - _0224E114 - 2 ; case 2 + .short _0224E1AA - _0224E114 - 2 ; case 3 + .short _0224E1C6 - _0224E114 - 2 ; case 4 + .short _0224E1F6 - _0224E114 - 2 ; case 5 +_0224E120: + add r0, r6, #0 + bl FollowMon_GetMapObject + bl MapObject_UnpauseMovement + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_0224E130: + ldr r0, [r4, #4] + bl MapObject_AreBitsSetForMovementScriptInit + cmp r0, #0 + beq _0224E21E + ldr r0, [r4, #8] + bl MapObject_AreBitsSetForMovementScriptInit + cmp r0, #0 + beq _0224E21E + add r0, r6, #0 + bl FollowMon_GetMapObject + bl MapObject_PauseMovement + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0224E21E +_0224E156: + ldr r0, [r4, #4] + bl MapObject_GetXCoord + str r0, [r4, #0xc] + ldr r0, [r4, #4] + bl MapObject_GetZCoord + str r0, [r4, #0x10] + ldr r0, [r4, #4] + bl MapObject_GetFacingDirection + str r0, [r4, #0x14] + ldr r0, [r4, #8] + bl MapObject_GetXCoord + str r0, [r4, #0x18] + ldr r0, [r4, #8] + bl MapObject_GetZCoord + str r0, [r4, #0x1c] + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xc + add r1, #0x18 + bl ov02_0224E224 + add r6, r0, #0 + ldr r0, [r4, #4] + add r1, r6, #0 + bl MapObject_SetHeldMovement + add r0, r6, #0 + bl ov02_0224E2D4 + add r1, r0, #0 + ldr r0, [r4, #8] + bl MapObject_SetHeldMovement + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0224E21E +_0224E1AA: + ldr r0, [r4, #4] + bl MapObject_AreBitsSetForMovementScriptInit + cmp r0, #0 + beq _0224E21E + ldr r0, [r4, #8] + bl MapObject_AreBitsSetForMovementScriptInit + cmp r0, #0 + beq _0224E21E + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0224E21E +_0224E1C6: + ldr r0, [r4, #4] + bl MapObject_GetFacingDirection + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl ov02_0224E2A0 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MapObject_SetHeldMovement + ldr r0, [r4, #0x14] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl ov02_0224E26C + add r1, r0, #0 + ldr r0, [r4, #8] + bl MapObject_SetHeldMovement + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0224E21E +_0224E1F6: + ldr r0, [r4, #4] + bl MapObject_AreBitsSetForMovementScriptInit + cmp r0, #0 + beq _0224E21E + ldr r0, [r4, #8] + bl MapObject_AreBitsSetForMovementScriptInit + cmp r0, #0 + beq _0224E21E + ldr r0, [r4, #4] + bl MapObject_ClearHeldMovementIfActive + ldr r0, [r4, #8] + bl MapObject_ClearHeldMovementIfActive + add r0, r4, #0 + mov r5, #1 + bl Heap_Free +_0224E21E: + add r0, r5, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 + thumb_func_end ov02_0224E0EC + + thumb_func_start ov02_0224E224 +ov02_0224E224: ; 0x0224E224 + push {r3, r4, r5, lr} + ldr r5, [r1] + ldr r3, [r0] + mov r4, #0xd + cmp r3, r5 + bne _0224E246 + ldr r1, [r1, #4] + ldr r0, [r0, #4] + cmp r0, r1 + ble _0224E23C + mov r4, #0xc + b _0224E268 +_0224E23C: + cmp r0, r1 + blt _0224E268 + bl GF_AssertFail + b _0224E268 +_0224E246: + ldr r2, [r0, #4] + ldr r0, [r1, #4] + cmp r2, r0 + bne _0224E264 + cmp r3, r5 + ble _0224E256 + mov r4, #0xe + b _0224E268 +_0224E256: + cmp r3, r5 + bge _0224E25E + mov r4, #0xf + b _0224E268 +_0224E25E: + bl GF_AssertFail + b _0224E268 +_0224E264: + bl GF_AssertFail +_0224E268: + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end ov02_0224E224 + + thumb_func_start ov02_0224E26C +ov02_0224E26C: ; 0x0224E26C + push {r3, lr} + cmp r0, #3 + bhi _0224E296 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224E27E: ; jump table + .short _0224E286 - _0224E27E - 2 ; case 0 + .short _0224E28A - _0224E27E - 2 ; case 1 + .short _0224E28E - _0224E27E - 2 ; case 2 + .short _0224E292 - _0224E27E - 2 ; case 3 +_0224E286: + mov r0, #0 + pop {r3, pc} +_0224E28A: + mov r0, #1 + pop {r3, pc} +_0224E28E: + mov r0, #2 + pop {r3, pc} +_0224E292: + mov r0, #3 + pop {r3, pc} +_0224E296: + bl GF_AssertFail + mov r0, #0 + pop {r3, pc} + .balign 4, 0 + thumb_func_end ov02_0224E26C + + thumb_func_start ov02_0224E2A0 +ov02_0224E2A0: ; 0x0224E2A0 + push {r3, lr} + cmp r0, #3 + bhi _0224E2CA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224E2B2: ; jump table + .short _0224E2BA - _0224E2B2 - 2 ; case 0 + .short _0224E2BE - _0224E2B2 - 2 ; case 1 + .short _0224E2C2 - _0224E2B2 - 2 ; case 2 + .short _0224E2C6 - _0224E2B2 - 2 ; case 3 +_0224E2BA: + mov r0, #1 + pop {r3, pc} +_0224E2BE: + mov r0, #0 + pop {r3, pc} +_0224E2C2: + mov r0, #3 + pop {r3, pc} +_0224E2C6: + mov r0, #2 + pop {r3, pc} +_0224E2CA: + bl GF_AssertFail + mov r0, #0 + pop {r3, pc} + .balign 4, 0 + thumb_func_end ov02_0224E2A0 + + thumb_func_start ov02_0224E2D4 +ov02_0224E2D4: ; 0x0224E2D4 + push {r3, lr} + sub r0, #0xc + cmp r0, #3 + bhi _0224E300 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224E2E8: ; jump table + .short _0224E2F0 - _0224E2E8 - 2 ; case 0 + .short _0224E2F4 - _0224E2E8 - 2 ; case 1 + .short _0224E2F8 - _0224E2E8 - 2 ; case 2 + .short _0224E2FC - _0224E2E8 - 2 ; case 3 +_0224E2F0: + mov r0, #0xd + pop {r3, pc} +_0224E2F4: + mov r0, #0xc + pop {r3, pc} +_0224E2F8: + mov r0, #0xf + pop {r3, pc} +_0224E2FC: + mov r0, #0xe + pop {r3, pc} +_0224E300: + bl GF_AssertFail + mov r0, #0 + pop {r3, pc} + thumb_func_end ov02_0224E2D4 + + thumb_func_start ov02_0224E308 +ov02_0224E308: ; 0x0224E308 + ldr r1, _0224E318 ; =0x00000165 + cmp r0, r1 + bne _0224E312 + mov r0, #1 + bx lr +_0224E312: + mov r0, #0 + bx lr + nop +_0224E318: .word 0x00000165 + thumb_func_end ov02_0224E308 + +/* + * int ov02_0224E31C(int x, int z) { + * int ret = ((x - 32) / 32) + (((z - 32) / 32) * 3); + * if (ret < 0 || ret >= 6) { + * ret = 0; + * } + * return ret; + * } + */ + thumb_func_start ov02_0224E31C +ov02_0224E31C: ; 0x0224E31C + sub r0, #0x20 + asr r2, r0, #4 + lsr r2, r2, #0x1b + add r2, r0, r2 + sub r1, #0x20 + asr r0, r1, #4 + lsr r0, r0, #0x1b + add r0, r1, r0 + asr r1, r0, #5 + lsl r0, r1, #1 + asr r2, r2, #5 + add r0, r1, r0 + add r0, r2, r0 + bmi _0224E33C + cmp r0, #6 + blt _0224E33E +_0224E33C: + mov r0, #0 +_0224E33E: + bx lr + thumb_func_end ov02_0224E31C + + thumb_func_start ov02_0224E340 +ov02_0224E340: ; 0x0224E340 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetXCoord + add r4, r0, #0 + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetZCoord + add r1, r0, #0 + add r0, r4, #0 + bl ov02_0224E31C + pop {r3, r4, r5, pc} + thumb_func_end ov02_0224E340 + + thumb_func_start ov02_0224E35C +ov02_0224E35C: ; 0x0224E35C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl Save_VarsFlags_Get + add r6, r0, #0 + ldr r0, [r5, #0xc] + bl Save_LocalFieldData_Get + bl LocalFieldData_GetCurrentPosition + ldr r0, [r5, #0xc] + bl Save_SafariZone_Get + add r4, r0, #0 + ldr r0, [r5, #0x20] + ldr r0, [r0] + bl ov02_0224E308 + cmp r0, #0 + bne _0224E38E + add sp, #0x1c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0224E38E: + add r0, r6, #0 + bl Save_VarsFlags_CheckSafariSysFlag + cmp r0, #0 + bne _0224E39E + add sp, #0x1c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0224E39E: + add r0, r4, #0 + bl sub_0202F620 + cmp r0, #0 + beq _0224E3AE + add sp, #0x1c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0224E3AE: + add r0, r4, #0 + bl SafariZone_GetObjectUnlockLevel + cmp r0, #0 + bne _0224E3BE + add sp, #0x1c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0224E3BE: + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetFacingDirection + add r7, r0, #0 + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetXCoord + add r4, r0, #0 + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetZCoord + str r0, [sp, #8] + add r0, r7, #0 + bl GetDeltaXByFacingDirection + add r6, r4, r0 + add r0, r7, #0 + bl GetDeltaYByFacingDirection + ldr r1, [sp, #8] + add r4, r1, r0 + cmp r6, #0x20 + blt _0224E3F8 + cmp r6, #0x80 + bge _0224E3F8 + cmp r4, #0x20 + blt _0224E3F8 + cmp r4, #0x60 + blt _0224E3FE +_0224E3F8: + add sp, #0x1c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0224E3FE: + cmp r6, #0x20 + blt _0224E40E + cmp r6, #0x80 + bge _0224E40E + cmp r4, #0x20 + blt _0224E40E + cmp r4, #0x60 + blt _0224E414 +_0224E40E: + add sp, #0x1c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0224E414: + ldr r0, [r5, #0x40] + add r1, sp, #0x10 + bl PlayerAvatar_CopyPositionVector + add r0, sp, #0xc + str r0, [sp] + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x18] + add r0, r5, #0 + bl sub_02054774 + add r7, r0, #0 + add r0, sp, #0xc + ldrb r0, [r0] + cmp r0, #1 + beq _0224E43C + add sp, #0x1c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0224E43C: + lsl r0, r4, #4 + add r0, #8 + cmp r0, #0 + ble _0224E458 + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + str r0, [sp, #4] + b _0224E468 +_0224E458: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub + str r0, [sp, #4] +_0224E468: + lsl r0, r6, #4 + add r0, #8 + cmp r0, #0 + ble _0224E482 + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _0224E490 +_0224E482: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_0224E490: + bl _ffix + add r4, r0, #0 + ldr r0, [sp, #4] + bl _ffix + add r3, r0, #0 + add r0, sp, #0xc + str r0, [sp] + ldr r1, [sp, #0x14] + add r0, r5, #0 + add r2, r4, #0 + bl sub_02054774 + add r1, sp, #0xc + ldrb r1, [r1] + cmp r1, #1 + beq _0224E4BA + add sp, #0x1c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0224E4BA: + cmp r7, r0 + bne _0224E4C4 + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224E4C4: + mov r0, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end ov02_0224E35C + + thumb_func_start ov02_0224E4CC +ov02_0224E4CC: ; 0x0224E4CC + push {r3, lr} + cmp r1, #0 + beq _0224E4D6 + mov r0, #0 + pop {r3, pc} +_0224E4D6: + bl sub_0205BAD0 + pop {r3, pc} + thumb_func_end ov02_0224E4CC + + thumb_func_start ov02_0224E4DC +ov02_0224E4DC: ; 0x0224E4DC + push {r3, lr} + cmp r1, #0 + beq _0224E4E6 + mov r0, #0 + pop {r3, pc} +_0224E4E6: + bl sub_0205BAE4 + pop {r3, pc} + thumb_func_end ov02_0224E4DC + + thumb_func_start SafariDecoration_CreateArgs +SafariDecoration_CreateArgs: ; 0x0224E4EC + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + add r0, r1, #0 + mov r1, #0x24 + bl Heap_AllocAtEnd + mov r1, #0 + mov r2, #0x24 + add r4, r0, #0 + bl MI_CpuFill8 + add r0, r5, #0 + bl FieldSystem_GetSaveData + str r0, [r4] + mov r0, #0x43 + lsl r0, r0, #2 + add r1, r5, r0 + add r0, r0, #5 + str r1, [r4, #4] + add r0, r5, r0 + str r0, [r4, #0x20] + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetState + cmp r0, #2 + bne _0224E528 + mov r0, #1 + b _0224E52A +_0224E528: + mov r0, #0 +_0224E52A: + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + strb r6, [r4, #0x18] + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetFacingDirection + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10] + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetXCoord + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #0x14] + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetZCoord + lsl r0, r0, #0x10 + asr r7, r0, #0x10 + ldr r0, [r5, #0x40] + add r1, sp, #0x20 + bl PlayerAvatar_CopyPositionVector + ldr r0, [sp, #0x14] + add r1, r7, #0 + bl ov02_0224E31C + strb r0, [r4, #0x19] + add r0, sp, #0x18 + str r0, [sp] + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x20] + ldr r3, [sp, #0x28] + add r0, r5, #0 + bl sub_02054774 + str r0, [sp, #0x24] + add r1, sp, #0x18 + ldrb r1, [r1] + cmp r1, #1 + beq _0224E584 + add sp, #0x2c + add r0, r4, #0 + pop {r4, r5, r6, r7, pc} +_0224E584: + asr r0, r0, #0xc + strb r0, [r4, #0x1a] + ldr r0, [sp, #0x10] + bl GetDeltaXByFacingDirection + ldr r1, [sp, #0x14] + add r0, r1, r0 + strb r0, [r4, #9] + ldr r0, [sp, #0x10] + bl GetDeltaYByFacingDirection + add r0, r7, r0 + strb r0, [r4, #0xb] + mov r0, #1 + strb r0, [r4, #8] + ldr r0, [sp, #0x24] + add r2, r7, #0 + str r0, [sp] + add r0, sp, #0x1c + str r0, [sp, #4] + add r0, sp, #0x18 + add r0, #2 + str r0, [sp, #8] + str r6, [sp, #0xc] + ldr r1, [sp, #0x14] + ldr r3, [sp, #0x10] + add r0, r5, #0 + bl ov02_0224E828 + cmp r0, #0 + beq _0224E5D4 + add r1, sp, #0x18 + mov r0, #4 + ldrsh r0, [r1, r0] + strb r0, [r4, #0xd] + mov r0, #2 + ldrsh r0, [r1, r0] + strb r0, [r4, #0xf] + mov r0, #1 + strb r0, [r4, #0xc] +_0224E5D4: + ldr r0, [sp, #0x24] + add r2, r7, #0 + str r0, [sp] + add r0, sp, #0x1c + str r0, [sp, #4] + add r0, sp, #0x18 + add r0, #2 + str r0, [sp, #8] + str r6, [sp, #0xc] + ldr r1, [sp, #0x14] + ldr r3, [sp, #0x10] + add r0, r5, #0 + bl ov02_0224EB48 + cmp r0, #0 + beq _0224E606 + add r1, sp, #0x18 + mov r0, #4 + ldrsh r0, [r1, r0] + strb r0, [r4, #0x11] + mov r0, #2 + ldrsh r0, [r1, r0] + strb r0, [r4, #0x13] + mov r0, #1 + strb r0, [r4, #0x10] +_0224E606: + ldr r0, [sp, #0x24] + add r2, r7, #0 + str r0, [sp] + add r0, sp, #0x1c + str r0, [sp, #4] + add r0, sp, #0x18 + add r0, #2 + str r0, [sp, #8] + str r6, [sp, #0xc] + ldr r1, [sp, #0x14] + ldr r3, [sp, #0x10] + add r0, r5, #0 + bl ov02_0224EE4C + cmp r0, #0 + beq _0224E638 + add r1, sp, #0x18 + mov r0, #4 + ldrsh r0, [r1, r0] + strb r0, [r4, #0x15] + mov r0, #2 + ldrsh r0, [r1, r0] + strb r0, [r4, #0x17] + mov r0, #1 + strb r0, [r4, #0x14] +_0224E638: + add r0, r4, #0 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end SafariDecoration_CreateArgs + + thumb_func_start ov02_0224E640 +ov02_0224E640: ; 0x0224E640 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl Save_PlayerData_GetProfile + bl PlayerProfile_GetTrainerID + add r5, r0, #0 + add r0, r4, #0 + bl Save_SafariZone_Get + bl SafariZone_GetObjectUnlockLevel + add r4, r0, #0 + add r0, r5, #0 + mov r1, #0xa + bl _u32_div_f + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + cmp r0, #6 + bhs _0224E672 + mov r1, #3 + bl _s32_div_f + b _0224E67C +_0224E672: + sub r1, r0, #6 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + add r0, r0, #2 +_0224E67C: + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #3 + sub r0, r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r0, r0, #1 + cmp r4, r0 + blt _0224E692 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224E692: + mov r0, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + thumb_func_end ov02_0224E640 + + thumb_func_start ov02_0224E698 +ov02_0224E698: ; 0x0224E698 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetFacingDirection + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetXCoord + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetZCoord + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + ldr r0, [r5, #0x40] + add r1, sp, #0x14 + bl PlayerAvatar_CopyPositionVector + ldr r0, [r5, #0xc] + bl Save_SafariZone_Get + mov r1, #0 + bl SafariZone_GetAreaSet + add r2, r0, #0 + add r0, r6, #0 + sub r0, #0x20 + asr r1, r0, #4 + lsr r1, r1, #0x1b + add r1, r0, r1 + add r0, r4, #0 + sub r0, #0x20 + asr r3, r0, #4 + lsr r3, r3, #0x1b + add r3, r0, r3 + asr r3, r3, #5 + lsl r0, r3, #1 + asr r1, r1, #5 + add r0, r3, r0 + add r0, r1, r0 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #0x7a + mul r0, r1 + add r0, r2, r0 + ldrb r0, [r0, #1] + cmp r0, #0x1e + blo _0224E706 + add sp, #0x20 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224E706: + ldr r0, [r5, #0x40] + bl PlayerAvatar_GetState + cmp r0, #2 + beq _0224E716 + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224E716: + ldr r0, [r5, #0xc] + bl ov02_0224E640 + cmp r0, #0 + bne _0224E726 + add sp, #0x20 + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_0224E726: + ldr r0, [sp, #0x18] + add r1, r6, #0 + str r0, [sp] + add r0, sp, #0x10 + add r0, #2 + str r0, [sp, #4] + add r0, sp, #0x10 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + add r0, r5, #0 + add r2, r4, #0 + add r3, r7, #0 + bl ov02_0224EE4C + cmp r0, #0 + beq _0224E74E + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224E74E: + mov r0, #3 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end ov02_0224E698 + + thumb_func_start ov02_0224E754 +ov02_0224E754: ; 0x0224E754 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r0, [r4, #0x40] + str r1, [sp] + bl PlayerAvatar_GetFacingDirection + add r6, r0, #0 + ldr r0, [r4, #0x40] + bl PlayerAvatar_GetXCoord + add r5, r0, #0 + add r0, r6, #0 + bl GetDeltaXByFacingDirection + add r7, r5, r0 + ldr r0, [r4, #0x40] + bl PlayerAvatar_GetZCoord + add r5, r0, #0 + add r0, r6, #0 + bl GetDeltaYByFacingDirection + add r6, r5, r0 + ldr r0, [r4, #0xc] + bl Save_PlayerData_GetProfile + bl PlayerProfile_GetTrainerGender + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + add r0, r7, #0 + add r1, r6, #0 + bl ov02_0224E31C + add r5, r0, #0 + lsr r1, r7, #0x1f + lsl r0, r7, #0x1b + sub r0, r0, r1 + mov r2, #0x1b + ror r0, r2 + add r7, r1, r0 + lsr r1, r6, #0x1f + lsl r0, r6, #0x1b + sub r0, r0, r1 + ror r0, r2 + add r6, r1, r0 + ldr r0, [r4, #0xc] + bl Save_SafariZone_Get + mov r1, #0 + bl SafariZone_GetAreaSet + mov r1, #0x7a + mul r1, r5 + add r0, r0, r1 + str r0, [sp, #8] + ldrb r0, [r0, #1] + mov r4, #0 + cmp r0, #0 + ble _0224E81C + ldr r0, [sp, #8] + add r5, r0, #2 +_0224E7D4: + ldrb r1, [r5] + ldr r2, [sp, #4] + add r0, sp, #0xc + bl GetSafariObjectConfig + ldrb r1, [r5, #1] + cmp r7, r1 + blt _0224E810 + ldrb r0, [r5, #3] + cmp r6, r0 + bgt _0224E810 + add r2, sp, #0xc + ldrb r2, [r2, #1] + lsl r3, r2, #0x1c + lsr r3, r3, #0x1d + add r1, r1, r3 + cmp r7, r1 + bge _0224E810 + lsl r1, r2, #0x19 + lsr r1, r1, #0x1d + sub r0, r0, r1 + cmp r6, r0 + ble _0224E810 + ldr r0, [sp] + cmp r0, #0 + beq _0224E80A + strh r4, [r0] +_0224E80A: + add sp, #0x10 + ldrb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_0224E810: + ldr r0, [sp, #8] + add r4, r4, #1 + ldrb r0, [r0, #1] + add r5, r5, #4 + cmp r4, r0 + blt _0224E7D4 +_0224E81C: + ldr r0, [sp] + mov r1, #0 + strh r1, [r0] + mov r0, #0xff + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end ov02_0224E754 + + thumb_func_start ov02_0224E828 +ov02_0224E828: ; 0x0224E828 + push {r4, r5, r6, r7, lr} + sub sp, #0x6c + add r4, r0, #0 + add r5, r1, #0 + ldr r0, [sp, #0x84] + str r2, [sp, #4] + ldr r1, _0224EB44 ; =ov02_02253A4C + str r0, [sp, #0x84] + ldr r0, [sp, #0x88] + ldrb r2, [r1, #2] + str r0, [sp, #0x88] + ldrb r1, [r1, #3] + str r3, [sp, #8] + add r0, sp, #0x68 + strb r2, [r0, #1] + strb r1, [r0, #2] + ldr r1, [sp, #0x84] + ldr r6, [sp, #0x80] + strh r5, [r1] + ldr r2, [sp, #4] + ldr r1, [sp, #0x88] + strh r2, [r1] + ldr r1, [sp, #8] + cmp r1, #3 + bls _0224E85C + b _0224EB3E +_0224E85C: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224E868: ; jump table + .short _0224E870 - _0224E868 - 2 ; case 0 + .short _0224E870 - _0224E868 - 2 ; case 1 + .short _0224E992 - _0224E868 - 2 ; case 2 + .short _0224E992 - _0224E868 - 2 ; case 3 +_0224E870: + mov r0, #0 + str r0, [sp, #0x50] + ldr r0, [sp, #8] + cmp r0, #0 + beq _0224E87E + mov r0, #1 + b _0224E880 +_0224E87E: + ldr r0, [sp, #0x50] +_0224E880: + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #0 + str r0, [sp, #0x54] + add r0, sp, #0x68 + add r0, #1 + ldrsb r0, [r0, r1] + ldr r7, [sp, #0x54] + str r0, [sp, #0x38] + add r0, sp, #0x70 + ldrb r0, [r0, #0x1c] + str r0, [sp, #0x48] + lsl r0, r5, #4 + str r0, [sp, #0x44] + add r0, #8 + str r0, [sp, #0x44] + lsl r0, r0, #0xc + str r0, [sp, #0x40] +_0224E8A4: + ldr r0, [sp, #0x38] + add r1, r7, r0 + ldr r0, [sp, #4] + add r0, r0, r1 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #0x3c] + ldr r2, [sp, #0x3c] + add r0, r4, #0 + add r1, r5, #0 + bl GetMetatileBehavior + str r0, [sp, #0x58] + ldr r2, [sp, #0x3c] + add r0, r4, #0 + add r1, r5, #0 + bl sub_020548C0 + add r1, r0, #0 + ldr r0, [sp, #0x58] + ldr r2, [sp, #0x48] + bl ov02_0224EF6C + cmp r0, #0 + beq _0224E95C + ldr r0, [sp, #0x3c] + lsl r0, r0, #4 + add r0, #8 + cmp r0, #0 + ble _0224E8F4 + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + str r0, [sp, #0x14] + b _0224E904 +_0224E8F4: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub + str r0, [sp, #0x14] +_0224E904: + ldr r0, [sp, #0x44] + cmp r0, #0 + ble _0224E91C + ldr r0, [sp, #0x40] + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _0224E92A +_0224E91C: + ldr r0, [sp, #0x40] + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_0224E92A: + bl _ffix + str r0, [sp, #0x5c] + ldr r0, [sp, #0x14] + bl _ffix + add r3, r0, #0 + add r0, sp, #0x68 + str r0, [sp] + ldr r2, [sp, #0x5c] + add r0, r4, #0 + add r1, r6, #0 + bl sub_02054774 + add r1, sp, #0x68 + ldrb r1, [r1] + cmp r1, #1 + bne _0224E95C + cmp r0, r6 + bne _0224E95C + ldr r0, [sp, #0x50] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x50] +_0224E95C: + ldr r0, [sp, #0x38] + add r7, r7, r0 + ldr r0, [sp, #0x54] + add r0, r0, #1 + str r0, [sp, #0x54] + cmp r0, #2 + blt _0224E8A4 + ldr r0, [sp, #0x50] + cmp r0, #2 + beq _0224E972 + b _0224EB3E +_0224E972: + ldr r0, [sp, #0x84] + strh r5, [r0] + ldr r0, [sp, #8] + cmp r0, #0 + bne _0224E984 + ldr r0, [sp, #4] + sub r1, r0, #1 + ldr r0, [sp, #0x88] + b _0224E98A +_0224E984: + ldr r0, [sp, #4] + add r1, r0, #2 + ldr r0, [sp, #0x88] +_0224E98A: + strh r1, [r0] + add sp, #0x6c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224E992: + ldr r1, [sp, #8] + cmp r1, #2 + bne _0224E99C + mov r1, #1 + b _0224E99E +_0224E99C: + mov r1, #2 +_0224E99E: + ldrsb r0, [r0, r1] + ldr r2, [sp, #4] + add r0, r5, r0 + lsl r0, r0, #0x10 + asr r5, r0, #0x10 + add r0, r4, #0 + add r1, r5, #0 + bl GetMetatileBehavior + str r0, [sp, #0x20] + ldr r2, [sp, #4] + add r0, r4, #0 + add r1, r5, #0 + bl sub_020548C0 + str r0, [sp, #0x18] + ldr r0, [sp, #4] + lsl r0, r0, #4 + add r0, #8 + cmp r0, #0 + ble _0224E9DC + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + str r0, [sp, #0x10] + b _0224E9EC +_0224E9DC: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub + str r0, [sp, #0x10] +_0224E9EC: + lsl r0, r5, #4 + str r0, [sp, #0x2c] + add r0, #8 + str r0, [sp, #0x2c] + cmp r0, #0 + ble _0224EA0A + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _0224EA18 +_0224EA0A: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_0224EA18: + bl _ffix + add r7, r0, #0 + ldr r0, [sp, #0x10] + bl _ffix + add r3, r0, #0 + add r0, sp, #0x68 + str r0, [sp] + add r0, r4, #0 + add r1, r6, #0 + add r2, r7, #0 + bl sub_02054774 + add r7, r0, #0 + add r0, sp, #0x70 + ldrb r0, [r0, #0x1c] + ldr r1, [sp, #0x18] + str r0, [sp, #0x34] + ldr r0, [sp, #0x20] + ldr r2, [sp, #0x34] + bl ov02_0224EF6C + cmp r0, #0 + beq _0224EA56 + add r0, sp, #0x68 + ldrb r0, [r0] + cmp r0, #1 + bne _0224EA56 + cmp r7, r6 + beq _0224EA5C +_0224EA56: + add sp, #0x6c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0224EA5C: + mov r0, #0 + str r0, [sp, #0x28] + ldr r0, [sp, #0x2c] + add r7, sp, #0x68 + lsl r0, r0, #0xc + add r7, #1 + str r0, [sp, #0x4c] +_0224EA6A: + mov r0, #0 + ldrsb r1, [r7, r0] + ldr r0, [sp, #4] + add r0, r0, r1 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #0x30] + ldr r2, [sp, #0x30] + add r0, r4, #0 + add r1, r5, #0 + bl GetMetatileBehavior + str r0, [sp, #0x24] + ldr r2, [sp, #0x30] + add r0, r4, #0 + add r1, r5, #0 + bl sub_020548C0 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x30] + lsl r0, r0, #4 + add r0, #8 + cmp r0, #0 + ble _0224EAAE + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + str r0, [sp, #0xc] + b _0224EABE +_0224EAAE: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub + str r0, [sp, #0xc] +_0224EABE: + ldr r0, [sp, #0x2c] + cmp r0, #0 + ble _0224EAD6 + ldr r0, [sp, #0x4c] + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _0224EAE4 +_0224EAD6: + ldr r0, [sp, #0x4c] + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_0224EAE4: + bl _ffix + str r0, [sp, #0x60] + ldr r0, [sp, #0xc] + bl _ffix + add r3, r0, #0 + add r0, sp, #0x68 + str r0, [sp] + ldr r2, [sp, #0x60] + add r0, r4, #0 + add r1, r6, #0 + bl sub_02054774 + str r0, [sp, #0x64] + ldr r0, [sp, #0x24] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x34] + bl ov02_0224EF6C + cmp r0, #0 + beq _0224EB32 + add r0, sp, #0x68 + ldrb r0, [r0] + cmp r0, #1 + bne _0224EB32 + ldr r0, [sp, #0x64] + cmp r0, r6 + bne _0224EB32 + ldr r0, [sp, #0x84] + strh r5, [r0] + ldr r1, [sp, #4] + ldr r0, [sp, #0x28] + add r1, r1, r0 + ldr r0, [sp, #0x88] + add sp, #0x6c + strh r1, [r0] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224EB32: + ldr r0, [sp, #0x28] + add r7, r7, #1 + add r0, r0, #1 + str r0, [sp, #0x28] + cmp r0, #2 + blt _0224EA6A +_0224EB3E: + mov r0, #0 + add sp, #0x6c + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_0224EB44: .word ov02_02253A4C + thumb_func_end ov02_0224E828 + + thumb_func_start ov02_0224EB48 +ov02_0224EB48: ; 0x0224EB48 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x68 + add r4, r0, #0 + ldr r0, [sp, #0x84] + str r1, [sp, #4] + str r0, [sp, #0x84] + ldr r0, [sp, #0x88] + ldr r1, _0224EE48 ; =ov02_02253A4C + str r0, [sp, #0x88] + add r5, r2, #0 + add r2, r3, #0 + ldrb r0, [r1] + add r3, sp, #0x64 + ldr r6, [sp, #0x80] + strb r0, [r3, #1] + ldrb r0, [r1, #1] + cmp r2, #3 + strb r0, [r3, #2] + ldr r1, [sp, #4] + ldr r0, [sp, #0x84] + strh r1, [r0] + ldr r0, [sp, #0x88] + strh r5, [r0] + bls _0224EB7A + b _0224EE42 +_0224EB7A: + add r0, r2, r2 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224EB86: ; jump table + .short _0224EB8E - _0224EB86 - 2 ; case 0 + .short _0224EB8E - _0224EB86 - 2 ; case 1 + .short _0224ED3A - _0224EB86 - 2 ; case 2 + .short _0224ED3A - _0224EB86 - 2 ; case 3 +_0224EB8E: + cmp r2, #0 + bne _0224EB96 + mov r0, #1 + b _0224EB98 +_0224EB96: + mov r0, #2 +_0224EB98: + ldrsb r0, [r3, r0] + ldr r1, [sp, #4] + add r0, r5, r0 + lsl r0, r0, #0x10 + asr r5, r0, #0x10 + add r0, r4, #0 + add r2, r5, #0 + bl GetMetatileBehavior + str r0, [sp, #0x50] + ldr r1, [sp, #4] + add r0, r4, #0 + add r2, r5, #0 + bl sub_020548C0 + str r0, [sp, #0x4c] + lsl r0, r5, #4 + str r0, [sp, #0x24] + add r0, #8 + str r0, [sp, #0x24] + cmp r0, #0 + ble _0224EBD8 + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + str r0, [sp, #0x14] + b _0224EBE8 +_0224EBD8: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub + str r0, [sp, #0x14] +_0224EBE8: + ldr r0, [sp, #4] + lsl r0, r0, #4 + add r0, #8 + cmp r0, #0 + ble _0224EC04 + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _0224EC12 +_0224EC04: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_0224EC12: + bl _ffix + add r7, r0, #0 + ldr r0, [sp, #0x14] + bl _ffix + add r3, r0, #0 + add r0, sp, #0x64 + str r0, [sp] + add r0, r4, #0 + add r1, r6, #0 + add r2, r7, #0 + bl sub_02054774 + add r7, r0, #0 + add r0, sp, #0x70 + ldrb r0, [r0, #0x1c] + ldr r1, [sp, #0x4c] + str r0, [sp, #0x30] + ldr r0, [sp, #0x50] + ldr r2, [sp, #0x30] + bl ov02_0224EF6C + cmp r0, #0 + beq _0224EC50 + add r0, sp, #0x64 + ldrb r0, [r0] + cmp r0, #1 + bne _0224EC50 + cmp r7, r6 + beq _0224EC56 +_0224EC50: + add sp, #0x68 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224EC56: + mov r0, #0 + str r0, [sp, #0x48] + ldr r0, [sp, #0x24] + add r7, sp, #0x64 + lsl r0, r0, #0xc + add r7, #1 + str r0, [sp, #0x34] +_0224EC64: + mov r0, #0 + ldrsb r1, [r7, r0] + ldr r0, [sp, #4] + add r2, r5, #0 + sub r0, r0, r1 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #0x2c] + ldr r1, [sp, #0x2c] + add r0, r4, #0 + bl GetMetatileBehavior + str r0, [sp, #0x20] + ldr r1, [sp, #0x2c] + add r0, r4, #0 + add r2, r5, #0 + bl sub_020548C0 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x24] + cmp r0, #0 + ble _0224ECA4 + ldr r0, [sp, #0x34] + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + str r0, [sp, #0x10] + b _0224ECB4 +_0224ECA4: + ldr r0, [sp, #0x34] + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub + str r0, [sp, #0x10] +_0224ECB4: + ldr r0, [sp, #0x2c] + lsl r0, r0, #4 + add r0, #8 + cmp r0, #0 + ble _0224ECD0 + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _0224ECDE +_0224ECD0: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_0224ECDE: + bl _ffix + str r0, [sp, #0x54] + ldr r0, [sp, #0x10] + bl _ffix + add r3, r0, #0 + add r0, sp, #0x64 + str r0, [sp] + ldr r2, [sp, #0x54] + add r0, r4, #0 + add r1, r6, #0 + bl sub_02054774 + str r0, [sp, #0x58] + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x30] + bl ov02_0224EF6C + cmp r0, #0 + beq _0224ED2C + add r0, sp, #0x64 + ldrb r0, [r0] + cmp r0, #1 + bne _0224ED2C + ldr r0, [sp, #0x58] + cmp r0, r6 + bne _0224ED2C + ldr r1, [sp, #4] + ldr r0, [sp, #0x48] + sub r1, r1, r0 + ldr r0, [sp, #0x84] + strh r1, [r0] + ldr r0, [sp, #0x88] + add sp, #0x68 + strh r5, [r0] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224ED2C: + ldr r0, [sp, #0x48] + add r7, r7, #1 + add r0, r0, #1 + str r0, [sp, #0x48] + cmp r0, #2 + blt _0224EC64 + b _0224EE42 +_0224ED3A: + mov r0, #0 + str r0, [sp, #0x44] + cmp r2, #2 + bne _0224ED4E + ldr r0, [sp, #4] + sub r0, r0, #2 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #0xc] + b _0224ED58 +_0224ED4E: + ldr r0, [sp, #4] + add r0, r0, #1 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #0xc] +_0224ED58: + mov r0, #0 + str r0, [sp, #0x18] + add r0, sp, #0x70 + ldrb r0, [r0, #0x1c] + ldr r7, [sp, #0xc] + str r0, [sp, #0x40] + lsl r0, r5, #4 + str r0, [sp, #0x3c] + add r0, #8 + str r0, [sp, #0x3c] + lsl r0, r0, #0xc + str r0, [sp, #0x38] +_0224ED70: + lsl r0, r7, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #0x28] + ldr r1, [sp, #0x28] + add r0, r4, #0 + add r2, r5, #0 + bl GetMetatileBehavior + str r0, [sp, #0x5c] + ldr r1, [sp, #0x28] + add r0, r4, #0 + add r2, r5, #0 + bl sub_020548C0 + add r1, r0, #0 + ldr r0, [sp, #0x5c] + ldr r2, [sp, #0x40] + bl ov02_0224EF6C + cmp r0, #0 + beq _0224EE20 + ldr r0, [sp, #0x3c] + cmp r0, #0 + ble _0224EDB4 + ldr r0, [sp, #0x38] + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + str r0, [sp, #8] + b _0224EDC4 +_0224EDB4: + ldr r0, [sp, #0x38] + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub + str r0, [sp, #8] +_0224EDC4: + ldr r0, [sp, #0x28] + lsl r0, r0, #4 + add r0, #8 + cmp r0, #0 + ble _0224EDE0 + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _0224EDEE +_0224EDE0: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_0224EDEE: + bl _ffix + str r0, [sp, #0x60] + ldr r0, [sp, #8] + bl _ffix + add r3, r0, #0 + add r0, sp, #0x64 + str r0, [sp] + ldr r2, [sp, #0x60] + add r0, r4, #0 + add r1, r6, #0 + bl sub_02054774 + add r1, sp, #0x64 + ldrb r1, [r1] + cmp r1, #1 + bne _0224EE20 + cmp r0, r6 + bne _0224EE20 + ldr r0, [sp, #0x44] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x44] +_0224EE20: + ldr r0, [sp, #0x18] + add r7, r7, #1 + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, #2 + blt _0224ED70 + ldr r0, [sp, #0x44] + cmp r0, #2 + bne _0224EE42 + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x84] + strh r1, [r0] + ldr r0, [sp, #0x88] + add sp, #0x68 + strh r5, [r0] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224EE42: + mov r0, #0 + add sp, #0x68 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_0224EE48: .word ov02_02253A4C + thumb_func_end ov02_0224EB48 + + thumb_func_start ov02_0224EE4C +ov02_0224EE4C: ; 0x0224EE4C + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r1, [sp, #0x14] + str r2, [sp, #0x18] + ldr r4, [sp, #0x38] + str r3, [sp, #0x1c] + str r4, [sp, #0x38] + ldr r4, [sp, #0x44] + ldr r6, [sp, #0x3c] + str r4, [sp, #0x44] + ldr r4, _0224EF68 ; =ov02_02253A4C + ldr r7, [sp, #0x40] + ldrb r5, [r4, #4] + add r4, sp, #0x20 + str r0, [sp, #0x10] + strb r5, [r4] + ldr r4, _0224EF68 ; =ov02_02253A4C + ldrb r5, [r4, #5] + add r4, sp, #0x20 + strb r5, [r4, #1] + ldr r4, [sp, #0x14] + strh r4, [r6] + ldr r4, [sp, #0x18] + strh r4, [r7] + ldr r4, [sp, #0x1c] + cmp r4, #3 + bhi _0224EF60 + add r4, r4, r4 + add r4, pc + ldrh r4, [r4, #6] + lsl r4, r4, #0x10 + asr r4, r4, #0x10 + add pc, r4 +_0224EE8E: ; jump table + .short _0224EE96 - _0224EE8E - 2 ; case 0 + .short _0224EE96 - _0224EE8E - 2 ; case 1 + .short _0224EEFC - _0224EE8E - 2 ; case 2 + .short _0224EEFC - _0224EE8E - 2 ; case 3 +_0224EE96: + ldr r4, [sp, #0x38] + str r4, [sp] + str r6, [sp, #4] + str r7, [sp, #8] + ldr r4, [sp, #0x44] + str r4, [sp, #0xc] + bl ov02_0224E828 + cmp r0, #0 + beq _0224EF60 + mov r4, #0 + add r5, sp, #0x20 +_0224EEAE: + ldr r0, [sp, #0x38] + mov r1, #0 + str r0, [sp] + str r6, [sp, #4] + str r7, [sp, #8] + ldr r0, [sp, #0x44] + str r0, [sp, #0xc] + ldrsb r2, [r5, r1] + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x10] + add r1, r1, r2 + lsl r1, r1, #0x10 + ldr r2, [sp, #0x18] + ldr r3, [sp, #0x1c] + asr r1, r1, #0x10 + bl ov02_0224E828 + cmp r0, #0 + beq _0224EEF2 + ldr r0, [sp, #0x14] + sub r0, r0, r4 + strh r0, [r6] + ldr r0, [sp, #0x1c] + cmp r0, #0 + bne _0224EEE6 + ldr r0, [sp, #0x18] + sub r0, r0, #1 + b _0224EEEA +_0224EEE6: + ldr r0, [sp, #0x18] + add r0, r0, #2 +_0224EEEA: + add sp, #0x24 + strh r0, [r7] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224EEF2: + add r4, r4, #1 + add r5, r5, #1 + cmp r4, #2 + blt _0224EEAE + b _0224EF60 +_0224EEFC: + ldr r4, [sp, #0x38] + str r4, [sp] + str r6, [sp, #4] + str r7, [sp, #8] + ldr r4, [sp, #0x44] + str r4, [sp, #0xc] + bl ov02_0224EB48 + cmp r0, #0 + beq _0224EF60 + mov r5, #0 + add r4, sp, #0x20 +_0224EF14: + ldr r0, [sp, #0x38] + mov r2, #0 + str r0, [sp] + str r6, [sp, #4] + str r7, [sp, #8] + ldr r0, [sp, #0x44] + str r0, [sp, #0xc] + ldrsb r3, [r4, r2] + ldr r2, [sp, #0x18] + ldr r0, [sp, #0x10] + sub r2, r2, r3 + lsl r2, r2, #0x10 + ldr r1, [sp, #0x14] + ldr r3, [sp, #0x1c] + asr r2, r2, #0x10 + bl ov02_0224EB48 + cmp r0, #0 + beq _0224EF58 + ldr r0, [sp, #0x1c] + cmp r0, #2 + bne _0224EF46 + ldr r0, [sp, #0x14] + sub r0, r0, #2 + b _0224EF4A +_0224EF46: + ldr r0, [sp, #0x14] + add r0, r0, #1 +_0224EF4A: + strh r0, [r6] + ldr r0, [sp, #0x18] + add sp, #0x24 + add r0, r0, r5 + strh r0, [r7] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224EF58: + add r5, r5, #1 + add r4, r4, #1 + cmp r5, #2 + blt _0224EF14 +_0224EF60: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_0224EF68: .word ov02_02253A4C + thumb_func_end ov02_0224EE4C + + thumb_func_start ov02_0224EF6C +ov02_0224EF6C: ; 0x0224EF6C + push {r3, lr} + cmp r2, #0 + bne _0224EF78 + bl ov02_0224E4CC + pop {r3, pc} +_0224EF78: + bl ov02_0224E4DC + pop {r3, pc} + .balign 4, 0 + thumb_func_end ov02_0224EF6C + + thumb_func_start FieldSystem_FollowMonInteract +FieldSystem_FollowMonInteract: ; 0x0224EF80 + ldr r3, _0224EF8C ; =TaskManager_Call + ldr r0, [r0, #0x10] + ldr r1, _0224EF90 ; =Task_FollowMonInteract + mov r2, #0 + bx r3 + nop +_0224EF8C: .word TaskManager_Call +_0224EF90: .word Task_FollowMonInteract + thumb_func_end FieldSystem_FollowMonInteract + + thumb_func_start ov02_0224EF94 +ov02_0224EF94: ; 0x0224EF94 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x1b0 + add r7, r0, #0 + ldr r0, [r7, #0x20] + ldr r0, [r0] + bl MapHeader_GetMapSec + add r2, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r7, r0] + mov r1, #0xde + add r0, #0x14 + add r2, r2, #1 + bl ReadWholeNarcMemberByIdPair + mov r0, #0x12 + lsl r0, r0, #4 + ldr r1, [r7, r0] + mov r0, #0x9b + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #0xde + mov r2, #0 + bl ReadWholeNarcMemberByIdPair + add r0, r7, #0 + add r1, sp, #4 + bl ov02_0224F058 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r7, r0] + add r3, sp, #0x20 + str r0, [sp] + add r0, #0x14 + str r0, [sp] + mov r0, #0 + add r2, r0, #0 +_0224EFE2: + add r1, r2, #0 + add r1, #0x1e + add r2, r2, #1 + add r0, r0, #1 + stmia r3!, {r1} + cmp r2, #0xc + blt _0224EFE2 + add r2, sp, #0x20 + lsl r1, r0, #2 + mov r3, #0 + add r1, r2, r1 +_0224EFF8: + stmia r1!, {r3} + add r3, r3, #1 + add r0, r0, #1 + cmp r3, #0x1e + blt _0224EFF8 + add r2, sp, #0x20 + lsl r1, r0, #2 + mov r3, #0x2a + add r1, r2, r1 +_0224F00A: + stmia r1!, {r3} + add r3, r3, #1 + add r0, r0, #1 + cmp r3, #0x64 + blt _0224F00A + mov r5, #0 + add r4, sp, #0x20 +_0224F018: + ldr r1, [r4] + mov r0, #0x14 + add r2, r1, #0 + mul r2, r0 + ldr r0, [sp] + add r6, r0, r2 + ldrh r0, [r6, #0xa] + lsl r0, r0, #0x10 + lsr r0, r0, #0x16 + beq _0224F044 + add r0, r7, #0 + add r1, r6, #0 + add r2, sp, #4 + bl ov02_0224F108 + cmp r0, #0 + beq _0224F044 + ldrh r0, [r6, #0xa] + add sp, #0x1b0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x16 + pop {r3, r4, r5, r6, r7, pc} +_0224F044: + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #0x64 + blt _0224F018 + bl GF_AssertFail + mov r0, #0 + add sp, #0x1b0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end ov02_0224EF94 + + thumb_func_start ov02_0224F058 +ov02_0224F058: ; 0x0224F058 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + add r4, r1, #0 + bl SaveArray_Party_Get + bl GetFirstAliveMonInParty_CrashIfNone + mov r1, #5 + mov r2, #0 + add r6, r0, #0 + bl GetMonData + mov r1, #0x12 + lsl r1, r1, #4 + ldr r2, [r5, r1] + ldr r1, _0224F100 ; =0x0000087E + strh r0, [r2, r1] + add r0, r6, #0 + mov r1, #0x70 + mov r2, #0 + bl GetMonData + mov r1, #0x12 + lsl r1, r1, #4 + ldr r2, [r5, r1] + ldr r1, _0224F104 ; =0x0000087D + strb r0, [r2, r1] + add r0, r6, #0 + add r1, r4, #0 + bl ov02_0224F324 + add r0, r5, #0 + add r1, r4, #0 + bl ov02_0224F4BC + add r0, r5, #0 + add r1, r4, #0 + bl ov02_0224F580 + add r0, r5, #0 + add r1, r4, #0 + bl ov02_0224F5D0 + add r0, r5, #0 + add r1, r4, #0 + bl ov02_0224F5FC + add r0, r5, #0 + add r1, r4, #0 + bl ov02_0224F644 + add r0, r5, #0 + add r1, r4, #0 + bl ov02_0224F64C + add r0, r5, #0 + add r1, r4, #0 + bl ov02_0224F698 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r3, [r5, r0] + ldr r2, _0224F100 ; =0x0000087E + add r0, r5, #0 + ldrh r1, [r3, r2] + sub r2, r2, #1 + ldrb r2, [r3, r2] + add r3, r4, #0 + bl ov02_0224F6AC + add r0, r5, #0 + add r1, r4, #0 + bl ov02_0224F728 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r1, [r5, r0] + ldr r0, _0224F100 ; =0x0000087E + ldrh r0, [r1, r0] + add r1, r4, #0 + bl ov02_0224F76C + pop {r4, r5, r6, pc} + .balign 4, 0 +_0224F100: .word 0x0000087E +_0224F104: .word 0x0000087D + thumb_func_end ov02_0224F058 + + thumb_func_start ov02_0224F108 +ov02_0224F108: ; 0x0224F108 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + bl LCRandom + mov r1, #0x64 + bl _s32_div_f + ldrb r0, [r5, #0x11] + cmp r1, r0 + blt _0224F124 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F124: + ldrh r7, [r5, #0x12] + cmp r7, #0 + beq _0224F13E + ldr r0, [r6, #0xc] + bl Save_VarsFlags_Get + add r1, r7, #0 + bl Save_VarsFlags_CheckFlagInArray + cmp r0, #0 + bne _0224F13E + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F13E: + ldrb r0, [r5, #3] + lsl r0, r0, #0x1b + lsr r1, r0, #0x1b + beq _0224F15E + cmp r1, #9 + bne _0224F154 + ldrb r0, [r4] + cmp r0, #0 + bne _0224F15E + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F154: + ldrb r0, [r4, #1] + cmp r1, r0 + beq _0224F15E + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F15E: + ldrb r1, [r5] + cmp r1, #0 + beq _0224F16E + ldrb r0, [r4, #2] + cmp r1, r0 + beq _0224F16E + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F16E: + ldrb r0, [r5, #2] + lsl r0, r0, #0x18 + lsr r1, r0, #0x1d + beq _0224F19C + cmp r1, #7 + ldrb r0, [r4, #3] + bne _0224F194 + cmp r0, #2 + beq _0224F19C + cmp r0, #3 + beq _0224F19C + cmp r0, #4 + beq _0224F19C + cmp r0, #5 + beq _0224F19C + cmp r0, #8 + beq _0224F19C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F194: + cmp r1, r0 + beq _0224F19C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F19C: + ldrh r0, [r5, #0xa] + lsl r0, r0, #0x1d + lsr r1, r0, #0x1d + beq _0224F1BA + cmp r1, #5 + ldrb r0, [r4, #0xc] + bne _0224F1B2 + cmp r0, #5 + bhs _0224F1BA + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F1B2: + cmp r1, r0 + beq _0224F1BA + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F1BA: + ldrb r0, [r5, #0x10] + lsl r0, r0, #0x18 + lsr r1, r0, #0x1d + beq _0224F1D8 + cmp r1, #4 + ldrb r0, [r4, #0xd] + bne _0224F1D0 + cmp r0, #4 + bhs _0224F1D8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F1D0: + cmp r1, r0 + beq _0224F1D8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F1D8: + ldrb r0, [r5, #0x10] + lsl r0, r0, #0x1d + lsr r1, r0, #0x1e + beq _0224F1EA + ldrb r0, [r4, #4] + cmp r1, r0 + beq _0224F1EA + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F1EA: + ldrb r0, [r5, #0x10] + lsl r0, r0, #0x1b + lsr r1, r0, #0x1e + beq _0224F212 + cmp r1, #3 + bne _0224F200 + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _0224F200 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F200: + cmp r1, #1 + bne _0224F20E + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _0224F20E + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F20E: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F212: + ldrb r0, [r5, #4] + lsl r0, r0, #0x1b + lsr r1, r0, #0x1b + beq _0224F22A + ldrb r0, [r4, #5] + cmp r1, r0 + beq _0224F22A + ldrb r0, [r4, #6] + cmp r1, r0 + beq _0224F22A + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F22A: + ldrh r0, [r5, #8] + lsl r0, r0, #0x1d + lsr r1, r0, #0x1d + beq _0224F23C + ldrb r0, [r4, #0x11] + cmp r1, r0 + beq _0224F23C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F23C: + ldrh r1, [r5, #0xe] + cmp r1, #0 + beq _0224F24C + ldrb r0, [r4, #0x12] + cmp r1, r0 + beq _0224F24C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F24C: + ldrb r1, [r5, #5] + cmp r1, #0 + beq _0224F25C + ldrb r0, [r4, #0x13] + cmp r1, r0 + beq _0224F25C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F25C: + ldrh r0, [r5, #0xc] + cmp r0, #0 + beq _0224F26E + sub r1, r0, #1 + ldrh r0, [r4, #0x1a] + cmp r1, r0 + beq _0224F26E + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F26E: + ldrh r0, [r5, #0xa] + lsl r0, r0, #0x1a + lsr r1, r0, #0x1d + beq _0224F280 + ldrb r0, [r4, #0x14] + cmp r1, r0 + beq _0224F280 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F280: + ldrb r0, [r5, #1] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + beq _0224F298 + mov r1, #0x15 + ldrsb r1, [r4, r1] + bl ov02_02250628 + cmp r0, #0 + bne _0224F298 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F298: + ldrb r0, [r5, #4] + lsl r0, r0, #0x18 + lsr r1, r0, #0x1d + beq _0224F2AA + ldrb r0, [r4, #0x16] + cmp r1, r0 + beq _0224F2AA + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F2AA: + ldrb r0, [r5, #1] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + beq _0224F2C0 + ldrb r1, [r4, #7] + bl ov02_02250594 + cmp r0, #0 + bne _0224F2C0 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F2C0: + ldrb r0, [r5, #2] + lsl r0, r0, #0x1d + lsr r1, r0, #0x1d + beq _0224F2D2 + ldrb r0, [r4, #8] + cmp r1, r0 + beq _0224F2D2 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F2D2: + ldrb r0, [r5, #6] + cmp r0, #0 + beq _0224F2E6 + ldrb r1, [r4, #0xa] + bl ov02_022506D4 + cmp r0, #0 + bne _0224F2E6 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F2E6: + ldrb r0, [r5, #7] + cmp r0, #0 + beq _0224F2FA + ldrb r1, [r4, #0xb] + bl ov02_02250738 + cmp r0, #0 + bne _0224F2FA + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F2FA: + ldrb r0, [r5, #2] + lsl r0, r0, #0x1b + lsr r1, r0, #0x1e + beq _0224F30C + ldrb r0, [r4, #9] + cmp r1, r0 + beq _0224F30C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F30C: + ldrh r0, [r5, #8] + lsl r0, r0, #0x10 + lsr r1, r0, #0x1d + beq _0224F31E + ldrb r0, [r4, #0x17] + cmp r1, r0 + beq _0224F31E + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F31E: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end ov02_0224F108 + + thumb_func_start ov02_0224F324 +ov02_0224F324: ; 0x0224F324 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + mov r1, #6 + mov r2, #0 + add r7, r0, #0 + bl GetMonData + cmp r0, #0 + beq _0224F34E + mov r1, #1 + lsl r0, r0, #0x10 + strb r1, [r5] + lsr r0, r0, #0x10 + mov r1, #5 + mov r2, #0xb + bl GetItemAttr + bl ov02_0224F820 + b _0224F354 +_0224F34E: + mov r0, #0 + strb r0, [r5] + mov r0, #8 +_0224F354: + strb r0, [r5, #1] + add r0, r7, #0 + mov r1, #0xa3 + mov r2, #0 + bl GetMonData + add r4, r0, #0 + add r0, r7, #0 + mov r1, #0xa4 + mov r2, #0 + bl GetMonData + add r1, r0, #0 + mov r0, #0x64 + mul r0, r4 + bl _s32_div_f + cmp r0, #0x64 + bne _0224F380 + mov r0, #1 + strb r0, [r5, #2] + b _0224F3A2 +_0224F380: + cmp r0, #0x4b + blt _0224F38A + mov r0, #2 + strb r0, [r5, #2] + b _0224F3A2 +_0224F38A: + cmp r0, #0x32 + blt _0224F394 + mov r0, #3 + strb r0, [r5, #2] + b _0224F3A2 +_0224F394: + cmp r0, #0x19 + blt _0224F39E + mov r0, #4 + strb r0, [r5, #2] + b _0224F3A2 +_0224F39E: + mov r0, #5 + strb r0, [r5, #2] +_0224F3A2: + add r0, r7, #0 + mov r1, #0xa0 + mov r2, #0 + bl GetMonData + mov r1, #0x88 + tst r1, r0 + beq _0224F3B8 + mov r0, #5 + strb r0, [r5, #3] + b _0224F3FA +_0224F3B8: + mov r1, #7 + tst r1, r0 + beq _0224F3C4 + mov r0, #8 + strb r0, [r5, #3] + b _0224F3FA +_0224F3C4: + mov r1, #0x10 + tst r1, r0 + beq _0224F3D0 + mov r0, #2 + strb r0, [r5, #3] + b _0224F3FA +_0224F3D0: + mov r1, #0x20 + tst r1, r0 + beq _0224F3DC + mov r0, #3 + strb r0, [r5, #3] + b _0224F3FA +_0224F3DC: + mov r1, #0x40 + tst r1, r0 + beq _0224F3E8 + mov r0, #4 + strb r0, [r5, #3] + b _0224F3FA +_0224F3E8: + cmp r0, #0 + bne _0224F3F2 + mov r0, #1 + strb r0, [r5, #3] + b _0224F3FA +_0224F3F2: + bl GF_AssertFail + mov r0, #1 + strb r0, [r5, #3] +_0224F3FA: + add r0, r7, #0 + mov r1, #0xa1 + mov r2, #0 + bl GetMonData + add r1, r0, #2 + cmp r1, #0x32 + blt _0224F410 + mov r0, #4 + strb r0, [r5, #4] + b _0224F420 +_0224F410: + sub r0, r0, #2 + cmp r0, #0x32 + bgt _0224F41C + mov r0, #6 + strb r0, [r5, #4] + b _0224F420 +_0224F41C: + mov r0, #5 + strb r0, [r5, #4] +_0224F420: + add r0, r7, #0 + mov r1, #0xb1 + mov r2, #0 + bl GetMonData + add r4, r0, #0 + add r0, r7, #0 + mov r1, #0xb2 + mov r2, #0 + bl GetMonData + add r6, r0, #0 + add r0, r4, #0 + bl ov02_0224F79C + strb r0, [r5, #5] + add r0, r6, #0 + bl ov02_0224F79C + strb r0, [r5, #6] + add r0, r7, #0 + mov r1, #9 + mov r2, #0 + bl GetMonData + strb r0, [r5, #7] + add r0, r7, #0 + bl GetMonNature + lsl r1, r0, #2 + ldr r0, _0224F4B4 ; =ov02_02253AC0 + mov r2, #0 + ldr r0, [r0, r1] + mov r1, #0x6f + strb r0, [r5, #8] + add r0, r7, #0 + bl GetMonData + cmp r0, #0 + bne _0224F474 + mov r0, #1 + b _0224F476 +_0224F474: + mov r0, #2 +_0224F476: + ldr r3, _0224F4B8 ; =ov02_02253A5C + strb r0, [r5, #9] + ldmia r3!, {r0, r1} + add r2, sp, #0 + add r6, r2, #0 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r4, #0 + str r0, [r2] + strb r4, [r5, #0xb] + add r5, #0xb +_0224F490: + ldr r1, [r6] + add r0, r7, #0 + mov r2, #0 + bl GetMonData + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r0, r4 + ldrb r1, [r5] + add r4, r4, #1 + add r6, r6, #4 + orr r0, r1 + strb r0, [r5] + cmp r4, #5 + blt _0224F490 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0224F4B4: .word ov02_02253AC0 +_0224F4B8: .word ov02_02253A5C + thumb_func_end ov02_0224F324 + + thumb_func_start ov02_0224F4BC +ov02_0224F4BC: ; 0x0224F4BC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r0, #0 + add r5, r1, #0 + mov r0, #0 + strb r0, [r5, #0xc] + strb r0, [r5, #0xe] + strb r0, [r5, #0xf] + strb r0, [r5, #0x10] + ldr r0, [r4, #0x40] + bl PlayerAvatar_GetXCoord + str r0, [sp, #4] + ldr r0, [r4, #0x40] + bl PlayerAvatar_GetZCoord + str r0, [sp] + ldr r0, [r4, #0x3c] + bl MapObjectManager_GetObjectCount + str r0, [sp, #8] + ldr r0, [r4, #0x3c] + bl MapObjectManager_GetObjects + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #8] + cmp r0, #0 + ble _0224F57A + add r7, r5, #0 + add r7, #0xc +_0224F4FC: + ldr r0, [sp, #0x10] + bl MapObject_CheckActive + cmp r0, #1 + bne _0224F568 + ldr r0, [sp, #0x10] + bl MapObject_GetXCoord + add r4, r0, #0 + ldr r0, [sp, #0x10] + bl MapObject_GetZCoord + ldr r1, [sp, #4] + sub r6, r1, r4 + ldr r1, [sp] + sub r4, r1, r0 + ldr r0, [sp, #0x10] + bl MapObject_GetSpriteID + cmp r0, #0x54 + bne _0224F52C + mov r0, #1 + strb r0, [r5, #0xf] + b _0224F568 +_0224F52C: + cmp r0, #0x55 + bne _0224F536 + mov r0, #1 + strb r0, [r5, #0xe] + b _0224F568 +_0224F536: + cmp r0, #0x56 + bne _0224F540 + mov r0, #1 + strb r0, [r5, #0x10] + b _0224F568 +_0224F540: + mov r0, #0 + mvn r0, r0 + cmp r6, r0 + blt _0224F568 + cmp r6, #1 + bgt _0224F568 + cmp r4, r0 + blt _0224F568 + cmp r4, #1 + bgt _0224F568 + ldr r0, [sp, #0x10] + bl MapObject_GetID + cmp r0, #0xfd + beq _0224F568 + cmp r0, #0xff + beq _0224F568 + ldrb r0, [r7] + add r0, r0, #1 + strb r0, [r7] +_0224F568: + add r0, sp, #0x10 + bl MapObjectArray_NextObject2 + ldr r0, [sp, #0xc] + add r1, r0, #1 + ldr r0, [sp, #8] + str r1, [sp, #0xc] + cmp r1, r0 + blt _0224F4FC +_0224F57A: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end ov02_0224F4BC + + thumb_func_start ov02_0224F580 +ov02_0224F580: ; 0x0224F580 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + str r1, [sp, #4] + mov r4, #0 + bl Field_GetBgEvents + add r5, r0, #0 + ldr r0, [sp] + bl Field_GetNumBgEvents + add r7, r0, #0 + beq _0224F5C6 + cmp r5, #0 + beq _0224F5C6 + add r6, r4, #0 + cmp r7, #0 + ble _0224F5C6 +_0224F5A4: + ldrh r0, [r5, #2] + cmp r0, #2 + bne _0224F5BE + ldrh r0, [r5] + bl HiddenItemScriptNoToFlagId + add r1, r0, #0 + ldr r0, [sp] + bl FieldSystem_FlagCheck + cmp r0, #0 + bne _0224F5BE + add r4, r4, #1 +_0224F5BE: + add r6, r6, #1 + add r5, #0x14 + cmp r6, r7 + blt _0224F5A4 +_0224F5C6: + ldr r0, [sp, #4] + strb r4, [r0, #0xd] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end ov02_0224F580 + + thumb_func_start ov02_0224F5D0 +ov02_0224F5D0: ; 0x0224F5D0 + push {r4, lr} + ldr r0, [r0, #0xc] + add r4, r1, #0 + bl Save_LocalFieldData_Get + bl LocalFieldData_GetWeatherType + cmp r0, #0 + beq _0224F5E8 + cmp r0, #1 + beq _0224F5EE + b _0224F5F4 +_0224F5E8: + mov r0, #1 + strb r0, [r4, #0x11] + pop {r4, pc} +_0224F5EE: + mov r0, #3 + strb r0, [r4, #0x11] + pop {r4, pc} +_0224F5F4: + mov r0, #0 + strb r0, [r4, #0x11] + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_0224F5D0 + + thumb_func_start ov02_0224F5FC +ov02_0224F5FC: ; 0x0224F5FC + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FollowMon_GetMapObject + bl MapObject_GetXCoord + add r6, r0, #0 + add r0, r5, #0 + bl FollowMon_GetMapObject + bl MapObject_GetZCoord + add r2, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + bl GetMetatileBehavior + mov r1, #0x12 + strb r0, [r4, #0x12] + lsl r1, r1, #4 + ldr r2, [r5, r1] + ldr r1, _0224F640 ; =0x00000882 + strh r0, [r2, r1] + bl MetatileBehavior_CanGenerateWalkingEncounters + cmp r0, #0 + beq _0224F63A + mov r0, #1 + strb r0, [r4, #0x13] + pop {r4, r5, r6, pc} +_0224F63A: + mov r0, #2 + strb r0, [r4, #0x13] + pop {r4, r5, r6, pc} + .balign 4, 0 +_0224F640: .word 0x00000882 + thumb_func_end ov02_0224F5FC + + thumb_func_start ov02_0224F644 +ov02_0224F644: ; 0x0224F644 + ldr r0, [r0, #0x20] + ldr r0, [r0] + strh r0, [r1, #0x1a] + bx lr + thumb_func_end ov02_0224F644 + + thumb_func_start ov02_0224F64C +ov02_0224F64C: ; 0x0224F64C + push {r4, lr} + add r4, r1, #0 + bl Field_GetTimeOfDay + cmp r0, #4 + bhi _0224F68C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224F664: ; jump table + .short _0224F66E - _0224F664 - 2 ; case 0 + .short _0224F674 - _0224F664 - 2 ; case 1 + .short _0224F67A - _0224F664 - 2 ; case 2 + .short _0224F680 - _0224F664 - 2 ; case 3 + .short _0224F686 - _0224F664 - 2 ; case 4 +_0224F66E: + mov r0, #1 + strb r0, [r4, #0x14] + pop {r4, pc} +_0224F674: + mov r0, #2 + strb r0, [r4, #0x14] + pop {r4, pc} +_0224F67A: + mov r0, #3 + strb r0, [r4, #0x14] + pop {r4, pc} +_0224F680: + mov r0, #4 + strb r0, [r4, #0x14] + pop {r4, pc} +_0224F686: + mov r0, #5 + strb r0, [r4, #0x14] + pop {r4, pc} +_0224F68C: + bl GF_AssertFail + mov r0, #0 + strb r0, [r4, #0x14] + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_0224F64C + + thumb_func_start ov02_0224F698 +ov02_0224F698: ; 0x0224F698 + push {r4, lr} + add r4, r1, #0 + mov r1, #0x42 + lsl r1, r1, #2 + ldr r0, [r0, r1] + bl FieldSystem_UnkSub108_GetMonMood + strb r0, [r4, #0x15] + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_0224F698 + + thumb_func_start ov02_0224F6AC +ov02_0224F6AC: ; 0x0224F6AC + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r0, [r0, #0xc] + add r5, r3, #0 + bl SaveArray_Party_Get + add r4, r0, #0 + bl GetIdxOfFirstAliveMonInParty_CrashIfNone + add r6, r0, #0 + add r0, r4, #0 + add r1, sp, #8 + add r2, r6, #0 + bl Party_GetMonAprijuiceModifiers + add r0, r4, #0 + add r1, r6, #0 + bl Party_GetMonByIndex + add r1, r0, #0 + add r0, sp, #0 + add r2, sp, #8 + mov r3, #0xb + bl CalcMonPokeathlonStars + add r0, sp, #0 + ldrh r2, [r0] + lsl r0, r2, #0x1d + lsl r2, r2, #0x11 + lsr r1, r0, #0x1d + lsr r2, r2, #0x1d + mov r0, #1 + cmp r1, r2 + bhs _0224F6F4 + add r1, r2, #0 + mov r0, #2 +_0224F6F4: + add r2, sp, #0 + ldrh r2, [r2] + lsl r2, r2, #0x14 + lsr r2, r2, #0x1d + cmp r1, r2 + bhs _0224F704 + add r1, r2, #0 + mov r0, #4 +_0224F704: + add r2, sp, #0 + ldrh r2, [r2] + lsl r2, r2, #0x1a + lsr r2, r2, #0x1d + cmp r1, r2 + bhs _0224F714 + add r1, r2, #0 + mov r0, #3 +_0224F714: + add r2, sp, #0 + ldrh r2, [r2] + lsl r2, r2, #0x17 + lsr r2, r2, #0x1d + cmp r1, r2 + bhs _0224F722 + mov r0, #5 +_0224F722: + strb r0, [r5, #0x16] + add sp, #0x10 + pop {r4, r5, r6, pc} + thumb_func_end ov02_0224F6AC + + thumb_func_start ov02_0224F728 +ov02_0224F728: ; 0x0224F728 + push {r4, lr} + add r0, #0xe4 + ldr r0, [r0] + add r4, r1, #0 + bl MapObject_GetFacingDirection + cmp r0, #3 + bhi _0224F764 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224F744: ; jump table + .short _0224F74C - _0224F744 - 2 ; case 0 + .short _0224F752 - _0224F744 - 2 ; case 1 + .short _0224F758 - _0224F744 - 2 ; case 2 + .short _0224F75E - _0224F744 - 2 ; case 3 +_0224F74C: + mov r0, #3 + strb r0, [r4, #0x17] + pop {r4, pc} +_0224F752: + mov r0, #4 + strb r0, [r4, #0x17] + pop {r4, pc} +_0224F758: + mov r0, #2 + strb r0, [r4, #0x17] + pop {r4, pc} +_0224F75E: + mov r0, #1 + strb r0, [r4, #0x17] + pop {r4, pc} +_0224F764: + mov r0, #0 + strb r0, [r4, #0x17] + pop {r4, pc} + .balign 4, 0 + thumb_func_end ov02_0224F728 + + thumb_func_start ov02_0224F76C +ov02_0224F76C: ; 0x0224F76C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + cmp r5, #0 + ble _0224F77C + ldr r0, _0224F798 ; =0x000001ED + cmp r5, r0 + ble _0224F782 +_0224F77C: + bl GF_AssertFail + pop {r3, r4, r5, pc} +_0224F782: + mov r0, #0xe9 + mov r1, #0 + mov r2, #0xb + bl AllocAtEndAndReadWholeNarcMemberByIdPair + sub r1, r5, #1 + ldrb r1, [r0, r1] + strb r1, [r4, #0xa] + bl Heap_Free + pop {r3, r4, r5, pc} + .balign 4, 0 +_0224F798: .word 0x000001ED + thumb_func_end ov02_0224F76C + + thumb_func_start ov02_0224F79C +ov02_0224F79C: ; 0x0224F79C + push {r3, lr} + cmp r0, #0x11 + bhi _0224F816 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224F7AE: ; jump table + .short _0224F7D2 - _0224F7AE - 2 ; case 0 + .short _0224F7D6 - _0224F7AE - 2 ; case 1 + .short _0224F7DA - _0224F7AE - 2 ; case 2 + .short _0224F7DE - _0224F7AE - 2 ; case 3 + .short _0224F7E2 - _0224F7AE - 2 ; case 4 + .short _0224F7E6 - _0224F7AE - 2 ; case 5 + .short _0224F7EA - _0224F7AE - 2 ; case 6 + .short _0224F7EE - _0224F7AE - 2 ; case 7 + .short _0224F7F2 - _0224F7AE - 2 ; case 8 + .short _0224F816 - _0224F7AE - 2 ; case 9 + .short _0224F7F6 - _0224F7AE - 2 ; case 10 + .short _0224F7FA - _0224F7AE - 2 ; case 11 + .short _0224F7FE - _0224F7AE - 2 ; case 12 + .short _0224F802 - _0224F7AE - 2 ; case 13 + .short _0224F806 - _0224F7AE - 2 ; case 14 + .short _0224F80A - _0224F7AE - 2 ; case 15 + .short _0224F80E - _0224F7AE - 2 ; case 16 + .short _0224F812 - _0224F7AE - 2 ; case 17 +_0224F7D2: + mov r0, #1 + pop {r3, pc} +_0224F7D6: + mov r0, #7 + pop {r3, pc} +_0224F7DA: + mov r0, #0xa + pop {r3, pc} +_0224F7DE: + mov r0, #8 + pop {r3, pc} +_0224F7E2: + mov r0, #9 + pop {r3, pc} +_0224F7E6: + mov r0, #0xd + pop {r3, pc} +_0224F7EA: + mov r0, #0xc + pop {r3, pc} +_0224F7EE: + mov r0, #0xe + pop {r3, pc} +_0224F7F2: + mov r0, #0x11 + pop {r3, pc} +_0224F7F6: + mov r0, #2 + pop {r3, pc} +_0224F7FA: + mov r0, #3 + pop {r3, pc} +_0224F7FE: + mov r0, #5 + pop {r3, pc} +_0224F802: + mov r0, #4 + pop {r3, pc} +_0224F806: + mov r0, #0xb + pop {r3, pc} +_0224F80A: + mov r0, #6 + pop {r3, pc} +_0224F80E: + mov r0, #0xf + pop {r3, pc} +_0224F812: + mov r0, #0x10 + pop {r3, pc} +_0224F816: + bl GF_AssertFail + mov r0, #0 + pop {r3, pc} + .balign 4, 0 + thumb_func_end ov02_0224F79C + + thumb_func_start ov02_0224F820 +ov02_0224F820: ; 0x0224F820 + push {r3, lr} + cmp r0, #6 + bhi _0224F85C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224F832: ; jump table + .short _0224F840 - _0224F832 - 2 ; case 0 + .short _0224F844 - _0224F832 - 2 ; case 1 + .short _0224F848 - _0224F832 - 2 ; case 2 + .short _0224F84C - _0224F832 - 2 ; case 3 + .short _0224F850 - _0224F832 - 2 ; case 4 + .short _0224F854 - _0224F832 - 2 ; case 5 + .short _0224F858 - _0224F832 - 2 ; case 6 +_0224F840: + mov r0, #4 + pop {r3, pc} +_0224F844: + mov r0, #2 + pop {r3, pc} +_0224F848: + mov r0, #1 + pop {r3, pc} +_0224F84C: + mov r0, #7 + pop {r3, pc} +_0224F850: + mov r0, #6 + pop {r3, pc} +_0224F854: + mov r0, #5 + pop {r3, pc} +_0224F858: + mov r0, #3 + pop {r3, pc} +_0224F85C: + bl GF_AssertFail + mov r0, #8 + pop {r3, pc} + thumb_func_end ov02_0224F820 + + thumb_func_start ov02_0224F864 +ov02_0224F864: ; 0x0224F864 + push {r4, lr} + ldr r1, _0224F87C ; =0x00000884 + bl Heap_Alloc + ldr r2, _0224F87C ; =0x00000884 + mov r1, #0 + add r4, r0, #0 + bl MI_CpuFill8 + add r0, r4, #0 + pop {r4, pc} + nop +_0224F87C: .word 0x00000884 + thumb_func_end ov02_0224F864 + + thumb_func_start ov02_0224F880 +ov02_0224F880: ; 0x0224F880 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r2, r1, #0 + ldr r0, _0224F8E4 ; =0x000007E4 + mov r1, #0xdf + add r0, r4, r0 + sub r2, r2, #1 + bl ReadWholeNarcMemberByIdPair + ldr r0, _0224F8E8 ; =0x00000868 + mov r1, #0 + strb r1, [r4, r0] + add r2, r0, #1 + strb r1, [r4, r2] + add r2, r0, #3 + strb r1, [r4, r2] + add r2, r0, #4 + ldrb r3, [r4, r2] + mov r2, #0xf + add r5, r4, #0 + bic r3, r2 + add r2, r0, #4 + strb r3, [r4, r2] + add r2, r0, #2 + strb r1, [r4, r2] + add r2, r0, #5 + strb r1, [r4, r2] + add r0, r0, #6 + strh r1, [r4, r0] + ldr r0, _0224F8E4 ; =0x000007E4 + ldr r2, _0224F8EC ; =0x0000FFFF +_0224F8BE: + ldrh r3, [r5, r0] + cmp r3, r2 + beq _0224F8CC + add r1, r1, #1 + add r5, #8 + cmp r1, #5 + blt _0224F8BE +_0224F8CC: + ldr r3, _0224F8F0 ; =0x0000086C + lsl r1, r1, #0x18 + ldrb r0, [r4, r3] + lsr r1, r1, #0x18 + mov r2, #0xf0 + lsl r1, r1, #0x1c + bic r0, r2 + lsr r1, r1, #0x18 + orr r0, r1 + strb r0, [r4, r3] + pop {r3, r4, r5, pc} + nop +_0224F8E4: .word 0x000007E4 +_0224F8E8: .word 0x00000868 +_0224F8EC: .word 0x0000FFFF +_0224F8F0: .word 0x0000086C + thumb_func_end ov02_0224F880 + + thumb_func_start ov02_0224F8F4 +ov02_0224F8F4: ; 0x0224F8F4 + ldr r3, _0224F8F8 ; =Heap_Free + bx r3 + .balign 4, 0 +_0224F8F8: .word Heap_Free + thumb_func_end ov02_0224F8F4 + + thumb_func_start ov02_0224F8FC +ov02_0224F8FC: ; 0x0224F8FC + push {r3, r4, r5, r6, r7, lr} + ldr r2, _0224FB2C ; =0x0000086C + add r4, r1, #0 + ldrb r3, [r4, r2] + add r5, r0, #0 + lsl r2, r3, #0x1c + lsr r2, r2, #0x1c + mov ip, r2 + cmp r2, #5 + blo _0224F93E + bl ov02_02250504 + ldr r1, _0224FB30 ; =0x0000080C + ldr r0, [r4, r1] + cmp r0, #0 + beq _0224F920 + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_0224F920: + add r0, r1, #0 + add r0, #0xa + ldrb r0, [r4, r0] + cmp r0, #0 + beq _0224F92E + mov r0, #3 + pop {r3, r4, r5, r6, r7, pc} +_0224F92E: + add r1, #0xb + ldrb r0, [r4, r1] + cmp r0, #0 + beq _0224F93A + mov r0, #4 + pop {r3, r4, r5, r6, r7, pc} +_0224F93A: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224F93E: + ldr r2, _0224FB2C ; =0x0000086C + sub r2, #0x88 + add r7, r4, r2 + mov r2, ip + lsl r2, r2, #3 + add r6, r7, r2 + ldrh r7, [r7, r2] + ldr r2, _0224FB34 ; =0x0000FFFF + cmp r7, r2 + bne _0224F980 + bl ov02_02250504 + ldr r1, _0224FB30 ; =0x0000080C + ldr r0, [r4, r1] + cmp r0, #0 + beq _0224F962 + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_0224F962: + add r0, r1, #0 + add r0, #0xa + ldrb r0, [r4, r0] + cmp r0, #0 + beq _0224F970 + mov r0, #3 + pop {r3, r4, r5, r6, r7, pc} +_0224F970: + add r1, #0xb + ldrb r0, [r4, r1] + cmp r0, #0 + beq _0224F97C + mov r0, #4 + pop {r3, r4, r5, r6, r7, pc} +_0224F97C: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224F980: + ldr r2, _0224FB2C ; =0x0000086C + sub r2, r2, #3 + ldrb r2, [r4, r2] + cmp r2, #7 + bls _0224F98C + b _0224FB28 +_0224F98C: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0224F998: ; jump table + .short _0224F9A8 - _0224F998 - 2 ; case 0 + .short _0224F9CA - _0224F998 - 2 ; case 1 + .short _0224F9E8 - _0224F998 - 2 ; case 2 + .short _0224FA06 - _0224F998 - 2 ; case 3 + .short _0224FA1A - _0224F998 - 2 ; case 4 + .short _0224FA3E - _0224F998 - 2 ; case 5 + .short _0224FA50 - _0224F998 - 2 ; case 6 + .short _0224FAEE - _0224F998 - 2 ; case 7 +_0224F9A8: + add r0, r4, #0 + add r1, r6, #0 + bl ov02_0224FB44 + cmp r0, #0 + beq _0224F9CA + add r5, #0xe4 + ldr r0, [r5] + bl MapObject_UnpauseMovement + ldr r0, _0224FB38 ; =0x00000868 + mov r1, #0 + strb r1, [r4, r0] + mov r1, #5 + add r0, r0, #1 + strb r1, [r4, r0] + b _0224FB28 +_0224F9CA: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl ov02_0224FB54 + cmp r0, #0 + beq _0224F9E8 + add r5, #0xe4 + ldr r0, [r5] + bl MapObject_UnpauseMovement + ldr r0, _0224FB3C ; =0x00000869 + mov r1, #2 + strb r1, [r4, r0] + b _0224FB28 +_0224F9E8: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl FollowMon_TryPrintInteractionMessage + cmp r0, #0 + beq _0224FA06 + add r5, #0xe4 + ldr r0, [r5] + bl MapObject_PauseMovement + ldr r0, _0224FB3C ; =0x00000869 + mov r1, #6 + strb r1, [r4, r0] + b _0224FB28 +_0224FA06: + add r0, r4, #0 + add r1, r6, #0 + bl ov02_0224FC74 + cmp r0, #0 + beq _0224FA1A + ldr r0, _0224FB3C ; =0x00000869 + mov r1, #7 + strb r1, [r4, r0] + b _0224FB28 +_0224FA1A: + ldr r2, _0224FB2C ; =0x0000086C + mov r1, #0xf + ldrb r3, [r4, r2] + add r0, r3, #0 + bic r0, r1 + lsl r1, r3, #0x1c + lsr r1, r1, #0x1c + add r1, r1, #1 + lsl r1, r1, #0x18 + lsr r3, r1, #0x18 + mov r1, #0xf + and r1, r3 + orr r0, r1 + strb r0, [r4, r2] + mov r1, #0 + sub r0, r2, #3 + strb r1, [r4, r0] + b _0224FB28 +_0224FA3E: + add r2, r7, #0 + bl ov02_02250004 + cmp r0, #0 + beq _0224FB28 + ldr r0, _0224FB3C ; =0x00000869 + mov r1, #1 + strb r1, [r4, r0] + b _0224FB28 +_0224FA50: + ldr r0, _0224FB2C ; =0x0000086C + add r0, r0, #2 + ldrh r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl IsPrintFinished + cmp r0, #1 + bne _0224FB28 + ldr r1, _0224FB2C ; =0x0000086C + ldrb r2, [r4, r1] + lsl r0, r2, #0x18 + lsl r2, r2, #0x1c + lsr r2, r2, #0x1c + lsr r0, r0, #0x1c + add r2, r2, #1 + cmp r0, r2 + ble _0224FAA8 + ldr r0, _0224FB40 ; =gSystem + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0224FB28 + add r0, r4, #0 + mov r1, #0 + bl ClearFrameAndWindow2 + add r0, r4, #0 + bl RemoveWindow + ldr r0, [r4, #0x10] + bl String_Delete + add r0, r5, #0 + add r0, #0xd2 + ldrb r1, [r0] + mov r0, #0x40 + add r5, #0xd2 + bic r1, r0 + strb r1, [r5] + ldr r0, _0224FB3C ; =0x00000869 + mov r1, #3 + strb r1, [r4, r0] + b _0224FB28 +_0224FAA8: + add r0, r1, #0 + sub r0, #0x60 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0224FABA + mov r2, #3 + sub r0, r1, #3 + strb r2, [r4, r0] + b _0224FB28 +_0224FABA: + ldr r0, _0224FB40 ; =gSystem + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0224FB28 + add r0, r4, #0 + mov r1, #0 + bl ClearFrameAndWindow2 + add r0, r4, #0 + bl RemoveWindow + ldr r0, [r4, #0x10] + bl String_Delete + add r0, r5, #0 + add r0, #0xd2 + ldrb r1, [r0] + mov r0, #0x40 + add r5, #0xd2 + bic r1, r0 + strb r1, [r5] + ldr r0, _0224FB3C ; =0x00000869 + mov r1, #3 + strb r1, [r4, r0] + b _0224FB28 +_0224FAEE: + ldr r0, _0224FB2C ; =0x0000086C + add r0, r0, #1 + ldrb r1, [r4, r0] + ldrb r0, [r6, #7] + cmp r1, r0 + blo _0224FB1A + mov r0, #0xf + bic r3, r0 + mov r0, ip + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #0xf + and r0, r1 + add r1, r3, #0 + orr r1, r0 + ldr r0, _0224FB2C ; =0x0000086C + strb r1, [r4, r0] + mov r1, #0 + sub r0, r0, #3 + strb r1, [r4, r0] + b _0224FB28 +_0224FB1A: + ldr r0, _0224FB2C ; =0x0000086C + add r0, r0, #1 + ldrb r0, [r4, r0] + add r1, r0, #1 + ldr r0, _0224FB2C ; =0x0000086C + add r0, r0, #1 + strb r1, [r4, r0] +_0224FB28: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_0224FB2C: .word 0x0000086C +_0224FB30: .word 0x0000080C +_0224FB34: .word 0x0000FFFF +_0224FB38: .word 0x00000868 +_0224FB3C: .word 0x00000869 +_0224FB40: .word gSystem + thumb_func_end ov02_0224F8FC + + thumb_func_start ov02_0224FB44 +ov02_0224FB44: ; 0x0224FB44 + ldrh r0, [r1] + cmp r0, #0 + beq _0224FB4E + mov r0, #1 + bx lr +_0224FB4E: + mov r0, #0 + bx lr + .balign 4, 0 + thumb_func_end ov02_0224FB44 + + thumb_func_start ov02_0224FB54 +ov02_0224FB54: ; 0x0224FB54 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r1, [r5, r0] + ldr r0, _0224FB98 ; =0x00000882 + add r4, r2, #0 + ldrh r0, [r1, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl sub_0205BB04 + cmp r0, #0 + beq _0224FB74 + mov r0, #0 + pop {r3, r4, r5, pc} +_0224FB74: + ldrb r2, [r4, #6] + cmp r2, #0 + beq _0224FB92 + cmp r2, #0xe + bls _0224FB82 + mov r0, #0 + pop {r3, r4, r5, pc} +_0224FB82: + add r0, r5, #0 + add r5, #0xe4 + ldr r1, [r5] + sub r2, r2, #1 + bl ov01_02203AB4 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224FB92: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0224FB98: .word 0x00000882 + thumb_func_end ov02_0224FB54 + + thumb_func_start FollowMon_TryPrintInteractionMessage +FollowMon_TryPrintInteractionMessage: ; 0x0224FB9C + push {r4, r5, r6, lr} + add r6, r2, #0 + add r5, r0, #0 + ldrh r0, [r6, #2] + add r4, r1, #0 + cmp r0, #0 + beq _0224FC00 + mov r0, #1 + lsl r0, r0, #0xa + mov r1, #0xb + bl String_New + str r0, [r4, #0x10] + ldr r0, [r5, #8] + add r1, r4, #0 + mov r2, #3 + bl sub_0205B514 + ldrh r3, [r6, #2] + ldr r1, [r4, #0x10] + add r0, r5, #0 + mov r2, #0xb + sub r3, r3, #1 + bl FollowMon_ExpandInteractionMessage + ldr r0, [r5, #0xc] + bl Save_PlayerData_GetOptionsAddr + add r6, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl sub_0205B564 + ldr r1, [r4, #0x10] + add r0, r4, #0 + add r2, r6, #0 + mov r3, #1 + bl sub_0205B5B4 + ldr r1, _0224FC04 ; =0x0000086E + strh r0, [r4, r1] + add r0, r5, #0 + add r0, #0xd2 + ldrb r1, [r0] + mov r0, #0x40 + add r5, #0xd2 + orr r0, r1 + strb r0, [r5] + mov r0, #1 + pop {r4, r5, r6, pc} +_0224FC00: + mov r0, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 +_0224FC04: .word 0x0000086E + thumb_func_end FollowMon_TryPrintInteractionMessage + + thumb_func_start ov02_0224FC08 +ov02_0224FC08: ; 0x0224FC08 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + mov r0, #1 + add r4, r1, #0 + lsl r0, r0, #0xa + mov r1, #0xb + add r6, r2, #0 + bl String_New + str r0, [r4, #0x10] + ldr r0, [r5, #8] + add r1, r4, #0 + mov r2, #3 + bl sub_0205B514 + ldr r0, _0224FC6C ; =0x00000816 + mov r2, #0xb + ldrb r0, [r4, r0] + add r3, r6, #0 + str r0, [sp] + ldr r1, [r4, #0x10] + add r0, r5, #0 + bl ov02_0224FCE0 + ldr r0, [r5, #0xc] + bl Save_PlayerData_GetOptionsAddr + add r6, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl sub_0205B564 + ldr r1, [r4, #0x10] + add r0, r4, #0 + add r2, r6, #0 + mov r3, #1 + bl sub_0205B5B4 + ldr r1, _0224FC70 ; =0x0000086E + strh r0, [r4, r1] + add r0, r5, #0 + add r0, #0xd2 + ldrb r1, [r0] + mov r0, #0x40 + add r5, #0xd2 + orr r0, r1 + strb r0, [r5] + add sp, #4 + pop {r3, r4, r5, r6, pc} + .balign 4, 0 +_0224FC6C: .word 0x00000816 +_0224FC70: .word 0x0000086E + thumb_func_end ov02_0224FC08 + + thumb_func_start ov02_0224FC74 +ov02_0224FC74: ; 0x0224FC74 + ldr r2, _0224FC88 ; =0x0000086D + mov r3, #0 + strb r3, [r0, r2] + ldrb r0, [r1, #7] + cmp r0, #0 + beq _0224FC82 + mov r3, #1 +_0224FC82: + add r0, r3, #0 + bx lr + nop +_0224FC88: .word 0x0000086D + thumb_func_end ov02_0224FC74 + + thumb_func_start FollowMon_ExpandInteractionMessage +FollowMon_ExpandInteractionMessage: ; 0x0224FC8C + push {r3, r4, r5, r6, r7, lr} + str r1, [sp] + mov r1, #0x1b + add r4, r2, #0 + add r2, r1, #0 + add r6, r0, #0 + add r7, r3, #0 + mov r0, #0 + add r2, #0xee + add r3, r4, #0 + bl NewMsgDataFromNarc + add r5, r0, #0 + add r0, r4, #0 + bl MessageFormat_New + add r4, r0, #0 + add r0, r6, #0 + add r1, r4, #0 + bl FollowMon_PlaceholdersSet + add r0, r5, #0 + add r1, r7, #0 + bl NewString_ReadMsgData + add r6, r0, #0 + ldr r1, [sp] + add r0, r4, #0 + add r2, r6, #0 + bl StringExpandPlaceholders + add r0, r6, #0 + bl String_Delete + add r0, r4, #0 + bl MessageFormat_Delete + add r0, r5, #0 + bl DestroyMsgData + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end FollowMon_ExpandInteractionMessage + + thumb_func_start ov02_0224FCE0 +ov02_0224FCE0: ; 0x0224FCE0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r2, #0 + add r5, r0, #0 + str r1, [sp] + add r6, r3, #0 + mov r0, #0 + mov r1, #0x1b + mov r2, #0x28 + add r3, r4, #0 + bl NewMsgDataFromNarc + add r7, r0, #0 + add r0, r4, #0 + bl MessageFormat_New + add r4, r0, #0 + mov r0, #2 + tst r0, r6 + ldr r0, [r5, #0xc] + beq _0224FD3E + bl Save_PlayerData_GetProfile + add r2, r0, #0 + add r0, r4, #0 + mov r1, #0 + bl BufferPlayersName + mov r1, #1 + add r0, r6, #0 + tst r0, r1 + add r2, sp, #0x10 + beq _0224FD30 + ldrb r2, [r2, #0x10] + add r0, r4, #0 + sub r2, r2, #1 + bl BufferFashionName + mov r1, #0x20 + b _0224FD72 +_0224FD30: + ldrb r2, [r2, #0x10] + add r0, r4, #0 + sub r2, r2, #1 + bl BufferFashionNameWithArticle + mov r1, #0x5f + b _0224FD72 +_0224FD3E: + bl SaveArray_Party_Get + bl GetFirstAliveMonInParty_CrashIfNone + bl Mon_GetBoxMon + str r0, [sp, #4] + ldr r0, [r5, #0xc] + bl Save_PlayerData_GetProfile + add r2, r0, #0 + add r0, r4, #0 + mov r1, #0 + bl BufferPlayersName + ldr r2, [sp, #4] + add r0, r4, #0 + mov r1, #1 + bl BufferBoxMonNickname + mov r0, #1 + tst r0, r6 + beq _0224FD70 + mov r1, #0x61 + b _0224FD72 +_0224FD70: + mov r1, #0x62 +_0224FD72: + add r0, r7, #0 + bl NewString_ReadMsgData + add r5, r0, #0 + ldr r1, [sp] + add r0, r4, #0 + add r2, r5, #0 + bl StringExpandPlaceholders + add r0, r5, #0 + bl String_Delete + add r0, r4, #0 + bl MessageFormat_Delete + add r0, r7, #0 + bl DestroyMsgData + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end ov02_0224FCE0 + + thumb_func_start ov02_0224FD9C +ov02_0224FD9C: ; 0x0224FD9C + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r1, sp, #0 + bl MapObject_CopyPositionVector + mov r0, #2 + ldrsb r0, [r5, r0] + cmp r0, #0 + beq _0224FDBC + ldr r1, [sp] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp] +_0224FDBC: + mov r0, #3 + ldrsb r0, [r5, r0] + cmp r0, #0 + beq _0224FDDC + add r0, r4, #0 + bl FollowMon_GetSpecies + cmp r0, #0x32 + beq _0224FDDC + cmp r0, #0x33 + beq _0224FDDC + mov r1, #3 + ldrsb r1, [r5, r1] + add r0, r4, #0 + bl ov01_021F8F74 +_0224FDDC: + mov r0, #4 + ldrsb r0, [r5, r0] + cmp r0, #0 + beq _0224FDEC + ldr r1, [sp, #8] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #8] +_0224FDEC: + add r0, r4, #0 + add r1, sp, #0 + bl MapObject_SetPositionVector + add sp, #0xc + pop {r4, r5, pc} + thumb_func_end ov02_0224FD9C + + thumb_func_start ov02_0224FDF8 +ov02_0224FDF8: ; 0x0224FDF8 + push {r4, lr} + sub sp, #8 + ldrb r0, [r0, #5] + cmp r0, #0 + beq _0224FE32 + cmp r1, #0 + beq _0224FE32 + ldr r0, _0224FE38 ; =SEQ_SE_END + cmp r1, r0 + bls _0224FE2C + add r0, r0, #1 + cmp r1, r0 + bne _0224FE16 + mov r0, #0 + b _0224FE18 +_0224FE16: + mov r0, #0xb +_0224FE18: + ldr r4, _0224FE3C ; =0x000001FF + add r1, r2, #0 + str r4, [sp] + str r3, [sp, #4] + add r2, r4, #0 + add r3, r4, #0 + bl PlayCryEx + add sp, #8 + pop {r4, pc} +_0224FE2C: + add r0, r1, #0 + bl PlaySE +_0224FE32: + add sp, #8 + pop {r4, pc} + nop +_0224FE38: .word SEQ_SE_END +_0224FE3C: .word 0x000001FF + thumb_func_end ov02_0224FDF8 + + thumb_func_start ov02_0224FE40 +ov02_0224FE40: ; 0x0224FE40 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + ldrb r0, [r5] + add r4, r2, #0 + cmp r0, #0 + beq _0224FE6C + add r0, r4, #0 + bl MapObject_GetFacingDirection + ldrb r1, [r5] + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + add r0, r4, #0 + sub r1, r1, #1 + bl MapObject_SetFacingDirectionDirect + add r0, r7, #0 + add r1, r4, #0 + add r2, r6, #0 + bl ov02_0224FE70 +_0224FE6C: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end ov02_0224FE40 + + thumb_func_start ov02_0224FE70 +ov02_0224FE70: ; 0x0224FE70 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r6, r2, #0 + bl ov01_022055DC + cmp r0, #0 + beq _0224FEFC + add r0, r4, #0 + bl MapObject_GetFacingDirection + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r6, r0 + beq _0224FEFC + ldr r0, _0224FF00 ; =0x0000087C + ldrb r0, [r5, r0] + cmp r0, #2 + beq _0224FE9E + cmp r0, #3 + bne _0224FEFC +_0224FE9E: + add r0, r4, #0 + bl MapObject_GetFieldSystem + ldr r1, _0224FF00 ; =0x0000087C + add r6, r0, #0 + ldrb r1, [r5, r1] + add r0, r4, #0 + add r2, sp, #8 + add r3, sp, #4 + bl ov02_0224FF04 + ldr r1, [sp, #8] + ldr r2, [sp, #4] + add r0, r6, #0 + bl GetMetatileBehavior + add r5, r0, #0 + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + bl MetatileBehavior_IsEncounterGrass + cmp r0, #1 + bne _0224FEE0 + mov r0, #1 + str r0, [sp] + ldr r2, [sp, #8] + ldr r3, [sp, #4] + add r0, r4, #0 + mov r1, #0 + bl ov01_021FF0E4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0224FEE0: + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + bl sub_0205B6F4 + cmp r0, #1 + bne _0224FEFC + mov r0, #1 + str r0, [sp] + ldr r2, [sp, #8] + ldr r3, [sp, #4] + add r0, r4, #0 + mov r1, #0 + bl ov01_021FF964 +_0224FEFC: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .balign 4, 0 +_0224FF00: .word 0x0000087C + thumb_func_end ov02_0224FE70 + + thumb_func_start ov02_0224FF04 +ov02_0224FF04: ; 0x0224FF04 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r4, r2, #0 + add r6, r1, #0 + add r5, r3, #0 + bl MapObject_GetXCoord + str r0, [r4] + add r0, r7, #0 + bl MapObject_GetZCoord + str r0, [r5] + cmp r6, #3 + bhi _0224FF54 + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224FF2C: ; jump table + .short _0224FF34 - _0224FF2C - 2 ; case 0 + .short _0224FF3C - _0224FF2C - 2 ; case 1 + .short _0224FF44 - _0224FF2C - 2 ; case 2 + .short _0224FF4C - _0224FF2C - 2 ; case 3 +_0224FF34: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_0224FF3C: + ldr r0, [r5] + sub r0, r0, #1 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_0224FF44: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0224FF4C: + ldr r0, [r4] + sub r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0224FF54: + bl GF_AssertFail + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + thumb_func_end ov02_0224FF04 + + thumb_func_start ov02_0224FF5C +ov02_0224FF5C: ; 0x0224FF5C + push {r4, r5, r6, lr} + ldr r3, _0224FFCC ; =0x00000818 + add r5, r0, #0 + add r2, r3, #0 + add r2, #0x53 + ldrb r2, [r5, r2] + add r0, r5, r3 + add r3, #0x52 + lsl r2, r2, #3 + add r4, r0, r2 + ldrb r0, [r5, r3] + add r6, r1, #0 + cmp r0, #0 + bne _0224FFA8 + add r0, r4, #0 + bl ov02_0224FD9C + ldr r3, _0224FFD0 ; =0x0000086C + add r0, r4, #0 + ldrb r1, [r5, r3] + lsl r1, r1, #0x1c + lsr r1, r1, #0x19 + add r2, r5, r1 + add r1, r3, #0 + sub r1, #0x84 + ldrh r1, [r2, r1] + add r2, r3, #0 + add r2, #0x12 + add r3, #0x11 + ldrh r2, [r5, r2] + ldrb r3, [r5, r3] + bl ov02_0224FDF8 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl ov02_0224FE40 +_0224FFA8: + ldr r1, _0224FFD4 ; =0x0000086A + ldrb r0, [r5, r1] + add r0, r0, #1 + strb r0, [r5, r1] + ldrb r2, [r5, r1] + ldrb r0, [r4, #1] + cmp r2, r0 + blo _0224FFC6 + add r0, r1, #1 + ldrb r0, [r5, r0] + add r2, r0, #1 + add r0, r1, #1 + strb r2, [r5, r0] + mov r0, #1 + pop {r4, r5, r6, pc} +_0224FFC6: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_0224FFCC: .word 0x00000818 +_0224FFD0: .word 0x0000086C +_0224FFD4: .word 0x0000086A + thumb_func_end ov02_0224FF5C + + thumb_func_start ov02_0224FFD8 +ov02_0224FFD8: ; 0x0224FFD8 + ldr r2, _02250000 ; =0x0000086B + ldrb r1, [r0, r2] + cmp r1, #0xa + blo _0224FFE4 + mov r0, #0 + bx lr +_0224FFE4: + lsl r1, r1, #3 + add r3, r0, r1 + add r1, r2, #0 + sub r1, #0x53 + ldrb r1, [r3, r1] + cmp r1, #0xff + bne _0224FFF6 + mov r0, #0 + bx lr +_0224FFF6: + mov r3, #0 + sub r1, r2, #1 + strb r3, [r0, r1] + mov r0, #1 + bx lr + .balign 4, 0 +_02250000: .word 0x0000086B + thumb_func_end ov02_0224FFD8 + + thumb_func_start ov02_02250004 +ov02_02250004: ; 0x02250004 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + cmp r2, #0 + bne _02250016 + bl GF_AssertFail + mov r0, #1 + pop {r4, r5, r6, pc} +_02250016: + ldr r0, _02250108 ; =0x00000868 + ldrb r1, [r4, r0] + cmp r1, #4 + bhi _02250102 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0225002A: ; jump table + .short _02250034 - _0225002A - 2 ; case 0 + .short _02250040 - _0225002A - 2 ; case 1 + .short _02250082 - _0225002A - 2 ; case 2 + .short _02250098 - _0225002A - 2 ; case 3 + .short _022500AE - _0225002A - 2 ; case 4 +_02250034: + sub r0, #0x50 + add r0, r4, r0 + mov r1, #0xe0 + sub r2, r2, #1 + bl ReadWholeNarcMemberByIdPair +_02250040: + add r0, r5, #0 + add r0, #0xe4 + mov r1, #0x87 + lsl r1, r1, #4 + ldr r0, [r0] + add r1, r4, r1 + bl MapObject_CopyPositionVector + add r0, r5, #0 + add r0, #0xe4 + ldr r0, [r0] + bl MapObject_GetFacingDirection + ldr r1, _0225010C ; =0x0000087C + strb r0, [r4, r1] + add r0, r5, #0 + add r0, #0xe4 + ldr r0, [r0] + mov r1, #0 + bl ov01_021F8F68 + add r5, #0xe4 + ldr r0, [r5] + mov r1, #1 + bl ov01_021F8F08 + ldr r0, _02250108 ; =0x00000868 + mov r1, #2 + strb r1, [r4, r0] + mov r1, #0 + add r0, r0, #3 + strb r1, [r4, r0] + b _02250102 +_02250082: + add r0, r4, #0 + bl ov02_0224FFD8 + cmp r0, #0 + ldr r0, _02250108 ; =0x00000868 + bne _02250094 + mov r1, #4 + strb r1, [r4, r0] + b _02250102 +_02250094: + mov r1, #3 + strb r1, [r4, r0] +_02250098: + add r5, #0xe4 + ldr r1, [r5] + add r0, r4, #0 + bl ov02_0224FF5C + cmp r0, #0 + beq _02250102 + ldr r0, _02250108 ; =0x00000868 + mov r1, #2 + strb r1, [r4, r0] + b _02250102 +_022500AE: + add r0, r5, #0 + add r0, #0xe4 + ldr r0, [r0] + bl MapObject_GetFacingDirection + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + add r0, r5, #0 + add r0, #0xe4 + ldr r0, [r0] + mov r1, #0 + bl ov01_021F8F68 + add r0, r5, #0 + add r0, #0xe4 + ldr r0, [r0] + mov r1, #0 + bl ov01_021F8F08 + add r0, r5, #0 + add r0, #0xe4 + mov r1, #0x87 + lsl r1, r1, #4 + ldr r0, [r0] + add r1, r4, r1 + bl MapObject_SetPositionVector + ldr r1, _0225010C ; =0x0000087C + add r0, r5, #0 + add r0, #0xe4 + ldrb r1, [r4, r1] + ldr r0, [r0] + bl MapObject_SetFacingDirectionDirect + add r5, #0xe4 + ldr r1, [r5] + add r0, r4, #0 + add r2, r6, #0 + bl ov02_0224FE70 + mov r0, #1 + pop {r4, r5, r6, pc} +_02250102: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_02250108: .word 0x00000868 +_0225010C: .word 0x0000087C + thumb_func_end ov02_02250004 + + thumb_func_start Task_FollowMonInteract +Task_FollowMonInteract: ; 0x02250110 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl TaskManager_GetFieldSystem + add r4, r0, #0 + add r0, r5, #0 + bl TaskManager_GetStatePtr + add r6, r0, #0 + ldr r0, [r6] + cmp r0, #5 + bls _0225012A + b _0225047E +_0225012A: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02250136: ; jump table + .short _02250142 - _02250136 - 2 ; case 0 + .short _0225015C - _02250136 - 2 ; case 1 + .short _022501A2 - _02250136 - 2 ; case 2 + .short _02250314 - _02250136 - 2 ; case 3 + .short _02250378 - _02250136 - 2 ; case 4 + .short _02250418 - _02250136 - 2 ; case 5 +_02250142: + add r0, r4, #0 + bl ov02_0224EF94 + add r1, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl ov02_0224F880 + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _0225047E +_0225015C: + mov r1, #0x12 + lsl r1, r1, #4 + ldr r1, [r4, r1] + add r0, r4, #0 + bl ov02_0224F8FC + cmp r0, #1 + bne _02250178 + add r4, #0xe4 + ldr r0, [r4] + bl MapObject_PauseMovement + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02250178: + cmp r0, #2 + bne _0225018E + mov r0, #0x12 + lsl r0, r0, #4 + ldr r1, [r4, r0] + ldr r0, _02250484 ; =0x00000869 + mov r2, #0xa + strb r2, [r1, r0] + mov r0, #2 + str r0, [r6] + b _0225047E +_0225018E: + cmp r0, #3 + bne _02250198 + mov r0, #3 + str r0, [r6] + b _0225047E +_02250198: + cmp r0, #4 + bne _02250270 + mov r0, #4 + str r0, [r6] + b _0225047E +_022501A2: + mov r0, #0x12 + lsl r0, r0, #4 + ldr r1, [r4, r0] + ldr r0, _02250484 ; =0x00000869 + ldrb r0, [r1, r0] + sub r0, #0xa + cmp r0, #3 + bhi _02250270 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022501BE: ; jump table + .short _022501C6 - _022501BE - 2 ; case 0 + .short _022501DE - _022501BE - 2 ; case 1 + .short _02250218 - _022501BE - 2 ; case 2 + .short _02250246 - _022501BE - 2 ; case 3 +_022501C6: + add r0, r4, #0 + mov r1, #3 + mov r2, #0 + bl ov01_021F6A9C + mov r0, #0x12 + lsl r0, r0, #4 + ldr r1, [r4, r0] + ldr r0, _02250484 ; =0x00000869 + mov r2, #0xb + strb r2, [r1, r0] + b _0225047E +_022501DE: + add r0, r4, #0 + bl ov01_021F6B00 + add r5, r0, #0 + add r0, r4, #0 + bl ov01_021F6B10 + cmp r5, #3 + bne _02250270 + cmp r0, #1 + bne _02250270 + mov r3, #0x12 + lsl r3, r3, #4 + ldr r5, [r4, r3] + mov r3, #0x22 + mov r1, #3 + lsl r3, r3, #6 + add r0, r4, #0 + add r2, r1, #0 + add r3, r5, r3 + bl ov01_021F6ABC + mov r0, #0x12 + lsl r0, r0, #4 + ldr r1, [r4, r0] + ldr r0, _02250484 ; =0x00000869 + mov r2, #0xc + strb r2, [r1, r0] + b _0225047E +_02250218: + add r0, r4, #0 + bl ov01_021F6B00 + add r5, r0, #0 + add r0, r4, #0 + bl ov01_021F6AEC + cmp r5, #3 + bne _02250270 + cmp r0, #6 + bne _02250270 + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl ov01_021F6A9C + mov r0, #0x12 + lsl r0, r0, #4 + ldr r1, [r4, r0] + ldr r0, _02250484 ; =0x00000869 + mov r2, #0xd + strb r2, [r1, r0] + b _0225047E +_02250246: + add r0, r4, #0 + bl ov01_021F6B00 + add r5, r0, #0 + add r0, r4, #0 + bl ov01_021F6B10 + cmp r5, #0 + bne _02250270 + cmp r0, #1 + bne _02250270 + mov r0, #0x12 + lsl r0, r0, #4 + mov r1, #0x22 + ldr r0, [r4, r0] + lsl r1, r1, #6 + ldrh r1, [r0, r1] + cmp r1, #0 + beq _02250272 + cmp r1, #1 + beq _022502C4 +_02250270: + b _0225047E +_02250272: + mov r1, #0 + bl ClearFrameAndWindow2 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl RemoveWindow + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r0, [r0, #0x10] + bl String_Delete + add r0, r4, #0 + add r0, #0xd2 + ldrb r1, [r0] + mov r0, #0x40 + bic r1, r0 + add r0, r4, #0 + add r0, #0xd2 + strb r1, [r0] + mov r0, #0x12 + lsl r0, r0, #4 + mov r1, #0x81 + ldr r0, [r4, r0] + lsl r1, r1, #4 + ldrh r1, [r0, r1] + cmp r1, #0 + bne _022502BA + add r4, #0xe4 + ldr r0, [r4] + bl MapObject_PauseMovement + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_022502BA: + bl ov02_0224F880 + mov r0, #1 + str r0, [r6] + b _0225047E +_022502C4: + mov r1, #0 + bl ClearFrameAndWindow2 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl RemoveWindow + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r0, [r0, #0x10] + bl String_Delete + add r0, r4, #0 + add r0, #0xd2 + ldrb r1, [r0] + mov r0, #0x40 + bic r1, r0 + add r0, r4, #0 + add r0, #0xd2 + strb r1, [r0] + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r1, _02250488 ; =0x00000812 + ldrh r1, [r0, r1] + cmp r1, #0 + bne _0225030A + add r4, #0xe4 + ldr r0, [r4] + bl MapObject_PauseMovement + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0225030A: + bl ov02_0224F880 + mov r0, #1 + str r0, [r6] + b _0225047E +_02250314: + ldr r0, [r4, #0xc] + bl Save_FashionData_Get + bl Save_FashionData_GetFashionCase + add r7, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r1, [r4, r0] + ldr r0, _0225048C ; =0x00000816 + ldrb r0, [r1, r0] + sub r5, r0, #1 + bmi _02250332 + cmp r5, #0x64 + blt _02250336 +_02250332: + bl GF_AssertFail +_02250336: + add r0, r7, #0 + add r1, r5, #0 + mov r2, #1 + bl sub_0202BA2C + cmp r0, #0 + beq _02250364 + add r0, r7, #0 + add r1, r5, #0 + mov r2, #1 + bl FashionCase_GiveFashionItem + mov r1, #0x12 + lsl r1, r1, #4 + ldr r1, [r4, r1] + add r0, r4, #0 + mov r2, #3 + bl ov02_0224FC08 + ldr r0, _02250490 ; =SEQ_ME_ACCE + bl PlayFanfare + b _02250372 +_02250364: + mov r1, #0x12 + lsl r1, r1, #4 + ldr r1, [r4, r1] + add r0, r4, #0 + mov r2, #2 + bl ov02_0224FC08 +_02250372: + mov r0, #5 + str r0, [r6] + b _0225047E +_02250378: + mov r0, #0x12 + lsl r0, r0, #4 + ldr r1, [r4, r0] + ldr r0, _02250494 ; =0x00000817 + ldrb r0, [r1, r0] + cmp r0, #5 + bhi _022503B2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02250392: ; jump table + .short _022503B2 - _02250392 - 2 ; case 0 + .short _0225039E - _02250392 - 2 ; case 1 + .short _022503A2 - _02250392 - 2 ; case 2 + .short _022503A6 - _02250392 - 2 ; case 3 + .short _022503AA - _02250392 - 2 ; case 4 + .short _022503AE - _02250392 - 2 ; case 5 +_0225039E: + mov r5, #MON_DATA_SHINY_LEAF_A + b _022503BA +_022503A2: + mov r5, #MON_DATA_SHINY_LEAF_B + b _022503BA +_022503A6: + mov r5, #MON_DATA_SHINY_LEAF_C + b _022503BA +_022503AA: + mov r5, #MON_DATA_SHINY_LEAF_D + b _022503BA +_022503AE: + mov r5, #MON_DATA_SHINY_LEAF_E + b _022503BA +_022503B2: + bl GF_AssertFail + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_022503BA: + ldr r0, [r4, #0xc] + bl SaveArray_Party_Get + bl GetFirstAliveMonInParty_CrashIfNone + add r1, r5, #0 + mov r2, #0 + add r7, r0, #0 + bl GetMonData + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bne _02250404 + ldr r0, [r4, #0xc] + bl Save_VarsFlags_Get + bl SetFlag99C + mov r1, #1 + add r0, sp, #0 + strb r1, [r0] + add r0, r7, #0 + add r1, r5, #0 + add r2, sp, #0 + bl SetMonData + mov r1, #0x12 + lsl r1, r1, #4 + ldr r1, [r4, r1] + add r0, r4, #0 + mov r2, #1 + bl ov02_0224FC08 + ldr r0, _02250490 ; =SEQ_ME_ACCE + bl PlayFanfare + b _02250412 +_02250404: + mov r1, #0x12 + lsl r1, r1, #4 + ldr r1, [r4, r1] + add r0, r4, #0 + mov r2, #0 + bl ov02_0224FC08 +_02250412: + mov r0, #5 + str r0, [r6] + b _0225047E +_02250418: + mov r0, #0x12 + lsl r0, r0, #4 + ldr r1, [r4, r0] + ldr r0, _02250498 ; =0x0000086E + ldrh r0, [r1, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl IsPrintFinished + cmp r0, #1 + bne _0225047E + bl IsFanfarePlaying + cmp r0, #0 + bne _0225047E + ldr r0, _0225049C ; =gSystem + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0225047E + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl ClearFrameAndWindow2 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl RemoveWindow + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r0, [r0, #0x10] + bl String_Delete + add r0, r4, #0 + add r0, #0xd2 + ldrb r1, [r0] + mov r0, #0x40 + bic r1, r0 + add r0, r4, #0 + add r0, #0xd2 + add r4, #0xe4 + strb r1, [r0] + ldr r0, [r4] + bl MapObject_PauseMovement + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0225047E: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02250484: .word 0x00000869 +_02250488: .word 0x00000812 +_0225048C: .word 0x00000816 +_02250490: .word SEQ_ME_ACCE +_02250494: .word 0x00000817 +_02250498: .word 0x0000086E +_0225049C: .word gSystem + thumb_func_end Task_FollowMonInteract + + thumb_func_start FollowMon_PlaceholdersSet +FollowMon_PlaceholdersSet: ; 0x022504A0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + add r4, r1, #0 + bl SaveArray_Party_Get + bl GetFirstAliveMonInParty_CrashIfNone + add r6, r0, #0 + bl Mon_GetBoxMon + add r7, r0, #0 + add r0, r4, #0 + mov r1, #0 + add r2, r7, #0 + bl BufferBoxMonNickname + add r0, r4, #0 + mov r1, #1 + add r2, r7, #0 + bl BufferBoxMonSpeciesName + ldr r0, [r5, #0xc] + bl Save_PlayerData_GetProfile + add r2, r0, #0 + add r0, r4, #0 + mov r1, #2 + bl BufferPlayersName + ldr r0, [r5, #0x20] + ldr r0, [r0] + bl MapHeader_GetMapSec + add r2, r0, #0 + add r0, r4, #0 + mov r1, #3 + bl BufferLocationName + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + bl GetMonData + add r2, r0, #0 + add r0, r4, #0 + mov r1, #4 + bl BufferItemName + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end FollowMon_PlaceholdersSet + + thumb_func_start ov02_02250504 +ov02_02250504: ; 0x02250504 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl SaveArray_Party_Get + bl GetFirstAliveMonInParty_CrashIfNone + add r4, r0, #0 + mov r0, #0x42 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FieldSystem_UnkSub108_GetMonMood + mov r1, #0x12 + str r0, [sp] + lsl r1, r1, #4 + ldr r2, [r5, r1] + ldr r1, _0225058C ; =0x00000815 + ldrsb r1, [r2, r1] + add r1, r0, r1 + str r1, [sp] + cmp r1, #0x7f + ble _02250538 + mov r0, #0x7f + str r0, [sp] + b _02250542 +_02250538: + mov r0, #0x7e + mvn r0, r0 + cmp r1, r0 + bge _02250542 + str r0, [sp] +_02250542: + mov r0, #0x42 + ldr r1, [sp] + lsl r0, r0, #2 + lsl r1, r1, #0x18 + ldr r0, [r5, r0] + asr r1, r1, #0x18 + bl FieldSystem_UnkSub108_SetMonMood + add r0, r4, #0 + mov r1, #9 + mov r2, #0 + bl GetMonData + mov r1, #0x12 + str r0, [sp] + lsl r1, r1, #4 + ldr r2, [r5, r1] + ldr r1, _02250590 ; =0x00000814 + ldrsb r1, [r2, r1] + add r0, r0, r1 + str r0, [sp] + cmp r0, #0xff + ble _02250576 + mov r0, #0xff + str r0, [sp] + b _0225057E +_02250576: + cmp r0, #0 + bge _0225057E + mov r0, #0 + str r0, [sp] +_0225057E: + add r0, r4, #0 + mov r1, #9 + add r2, sp, #0 + bl SetMonData + pop {r3, r4, r5, pc} + nop +_0225058C: .word 0x00000815 +_02250590: .word 0x00000814 + thumb_func_end ov02_02250504 + + thumb_func_start ov02_02250594 +ov02_02250594: ; 0x02250594 + cmp r0, #0xa + bhi _02250622 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022505A4: ; jump table + .short _02250622 - _022505A4 - 2 ; case 0 + .short _022505BA - _022505A4 - 2 ; case 1 + .short _022505C2 - _022505A4 - 2 ; case 2 + .short _022505CE - _022505A4 - 2 ; case 3 + .short _022505DA - _022505A4 - 2 ; case 4 + .short _022505E6 - _022505A4 - 2 ; case 5 + .short _022505F2 - _022505A4 - 2 ; case 6 + .short _022505FE - _022505A4 - 2 ; case 7 + .short _0225060A - _022505A4 - 2 ; case 8 + .short _02250612 - _022505A4 - 2 ; case 9 + .short _0225061A - _022505A4 - 2 ; case 10 +_022505BA: + cmp r1, #0xff + bne _02250622 + mov r0, #1 + bx lr +_022505C2: + cmp r1, #0xc8 + blt _02250622 + cmp r1, #0xff + bge _02250622 + mov r0, #1 + bx lr +_022505CE: + cmp r1, #0x96 + blt _02250622 + cmp r1, #0xc8 + bge _02250622 + mov r0, #1 + bx lr +_022505DA: + cmp r1, #0x5a + blt _02250622 + cmp r1, #0x96 + bge _02250622 + mov r0, #1 + bx lr +_022505E6: + cmp r1, #0x3c + blt _02250622 + cmp r1, #0x5a + bge _02250622 + mov r0, #1 + bx lr +_022505F2: + cmp r1, #0x1e + blt _02250622 + cmp r1, #0x3c + bge _02250622 + mov r0, #1 + bx lr +_022505FE: + cmp r1, #1 + blt _02250622 + cmp r1, #0x1e + bge _02250622 + mov r0, #1 + bx lr +_0225060A: + cmp r1, #0 + bne _02250622 + mov r0, #1 + bx lr +_02250612: + cmp r1, #0x5a + blt _02250622 + mov r0, #1 + bx lr +_0225061A: + cmp r1, #0x3c + bge _02250622 + mov r0, #1 + bx lr +_02250622: + mov r0, #0 + bx lr + .balign 4, 0 + thumb_func_end ov02_02250594 + + thumb_func_start ov02_02250628 +ov02_02250628: ; 0x02250628 + cmp r0, #0xa + bhi _022506CE + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02250638: ; jump table + .short _022506CE - _02250638 - 2 ; case 0 + .short _0225064E - _02250638 - 2 ; case 1 + .short _02250656 - _02250638 - 2 ; case 2 + .short _02250662 - _02250638 - 2 ; case 3 + .short _0225066E - _02250638 - 2 ; case 4 + .short _0225067A - _02250638 - 2 ; case 5 + .short _0225068A - _02250638 - 2 ; case 6 + .short _0225069C - _02250638 - 2 ; case 7 + .short _022506AE - _02250638 - 2 ; case 8 + .short _022506BA - _02250638 - 2 ; case 9 + .short _022506C2 - _02250638 - 2 ; case 10 +_0225064E: + cmp r1, #0x7f + bne _022506CE + mov r0, #1 + bx lr +_02250656: + cmp r1, #0x64 + blt _022506CE + cmp r1, #0x7f + bge _022506CE + mov r0, #1 + bx lr +_02250662: + cmp r1, #0x32 + blt _022506CE + cmp r1, #0x64 + bge _022506CE + mov r0, #1 + bx lr +_0225066E: + cmp r1, #0x1e + blt _022506CE + cmp r1, #0x32 + bge _022506CE + mov r0, #1 + bx lr +_0225067A: + mov r0, #0x1d + mvn r0, r0 + cmp r1, r0 + ble _022506CE + cmp r1, #0x1e + bge _022506CE + mov r0, #1 + bx lr +_0225068A: + mov r0, #0x31 + mvn r0, r0 + cmp r1, r0 + ble _022506CE + add r0, #0x14 + cmp r1, r0 + bgt _022506CE + mov r0, #1 + bx lr +_0225069C: + mov r0, #0x7e + mvn r0, r0 + cmp r1, r0 + ble _022506CE + add r0, #0x4d + cmp r1, r0 + bgt _022506CE + mov r0, #1 + bx lr +_022506AE: + mov r0, #0x7e + mvn r0, r0 + cmp r1, r0 + bne _022506CE + mov r0, #1 + bx lr +_022506BA: + cmp r1, #0 + blt _022506CE + mov r0, #1 + bx lr +_022506C2: + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + bgt _022506CE + mov r0, #1 + bx lr +_022506CE: + mov r0, #0 + bx lr + .balign 4, 0 + thumb_func_end ov02_02250628 + + thumb_func_start ov02_022506D4 +ov02_022506D4: ; 0x022506D4 + push {r3, lr} + cmp r0, #0xf9 + bhi _022506E2 + cmp r0, r1 + bne _02250732 + mov r0, #1 + pop {r3, pc} +_022506E2: + sub r0, #0xfa + cmp r0, #4 + bhi _0225072A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022506F4: ; jump table + .short _022506FE - _022506F4 - 2 ; case 0 + .short _02250706 - _022506F4 - 2 ; case 1 + .short _0225070E - _022506F4 - 2 ; case 2 + .short _0225071A - _022506F4 - 2 ; case 3 + .short _02250722 - _022506F4 - 2 ; case 4 +_022506FE: + cmp r1, #0x13 + bhi _02250732 + mov r0, #1 + pop {r3, pc} +_02250706: + cmp r1, #0x82 + bhi _02250732 + mov r0, #1 + pop {r3, pc} +_0225070E: + cmp r1, #0x8c + blo _02250732 + cmp r1, #0x95 + bhi _02250732 + mov r0, #1 + pop {r3, pc} +_0225071A: + cmp r1, #0xa0 + blo _02250732 + mov r0, #1 + pop {r3, pc} +_02250722: + cmp r1, #0xdc + blo _02250732 + mov r0, #1 + pop {r3, pc} +_0225072A: + bl GF_AssertFail + mov r0, #0 + pop {r3, pc} +_02250732: + mov r0, #0 + pop {r3, pc} + .balign 4, 0 + thumb_func_end ov02_022506D4 + + thumb_func_start ov02_02250738 +ov02_02250738: ; 0x02250738 + push {r4, r5} + sub sp, #8 + ldr r4, _0225077C ; =ov02_02253A54 + add r2, sp, #0 + ldrb r5, [r4] + add r3, sp, #0 + add r0, r2, r0 + strb r5, [r3] + ldrb r5, [r4, #1] + sub r0, r0, #1 + strb r5, [r3, #1] + ldrb r5, [r4, #2] + strb r5, [r3, #2] + ldrb r5, [r4, #3] + ldrb r4, [r4, #4] + strb r5, [r3, #3] + strb r4, [r3, #4] + ldrb r0, [r0] + mov r3, #0 + and r0, r1 +_02250760: + cmp r0, #0 + bne _0225076C + add sp, #8 + mov r0, #1 + pop {r4, r5} + bx lr +_0225076C: + add r3, r3, #1 + cmp r3, #5 + blt _02250760 + mov r0, #0 + add sp, #8 + pop {r4, r5} + bx lr + nop +_0225077C: .word ov02_02253A54 + thumb_func_end ov02_02250738 + + thumb_func_start ov02_02250780 +ov02_02250780: ; 0x02250780 + push {r4, r5, r6, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0 + bl SaveArray_Party_Get + bl GetFirstAliveMonInParty_CrashIfNone + add r6, r0, #0 + mov r1, #0xb1 + mov r2, #0 + bl GetMonData + add r4, r0, #0 + add r0, r6, #0 + mov r1, #0xb2 + mov r2, #0 + bl GetMonData + cmp r4, r5 + beq _022507AC + cmp r0, r5 + bne _022507B0 +_022507AC: + mov r0, #1 + pop {r4, r5, r6, pc} +_022507B0: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end ov02_02250780 + + thumb_func_start ov02_022507B4 +ov02_022507B4: ; 0x022507B4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0xe4 + ldr r0, [r0] + add r4, r1, #0 + bl FollowMon_GetSpecies + sub r0, #0x32 + cmp r0, #1 + bls _022507E0 + mov r0, #0xb + mov r1, #8 + bl Heap_AllocAtEnd + add r2, r0, #0 + strh r4, [r2] + mov r0, #0 + strh r0, [r2, #2] + ldr r0, [r5, #0x10] + ldr r1, _022507E4 ; =ov02_022507E8 + bl TaskManager_Call +_022507E0: + pop {r3, r4, r5, pc} + nop +_022507E4: .word ov02_022507E8 + thumb_func_end ov02_022507B4 + + thumb_func_start ov02_022507E8 +ov02_022507E8: ; 0x022507E8 + push {r4, r5, r6, lr} + add r4, r0, #0 + bl TaskManager_GetFieldSystem + add r6, r0, #0 + add r0, r4, #0 + bl TaskManager_GetEnvironment + add r5, r0, #0 + add r0, r4, #0 + bl TaskManager_GetStatePtr + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #4 + bhi _022508AA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02250814: ; jump table + .short _0225081E - _02250814 - 2 ; case 0 + .short _0225082E - _02250814 - 2 ; case 1 + .short _0225084C - _02250814 - 2 ; case 2 + .short _02250874 - _02250814 - 2 ; case 3 + .short _022508A0 - _02250814 - 2 ; case 4 +_0225081E: + add r0, r6, #0 + add r0, #0xe4 + ldr r0, [r0] + bl MapObject_UnpauseMovement + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_0225082E: + add r0, r6, #0 + bl FollowMon_GetMapObject + bl MapObject_AreBitsSetForMovementScriptInit + cmp r0, #0 + beq _022508AA + add r6, #0xe4 + ldr r0, [r6] + bl MapObject_PauseMovement + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _022508AA +_0225084C: + add r0, r6, #0 + add r0, #0xe4 + ldr r0, [r0] + bl MapObject_GetFacingDirection + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + add r6, #0xe4 + mov r2, #0x14 + ldr r3, _022508B0 ; =ov02_02253A70 + mul r2, r1 + ldr r0, [r6] + add r1, r3, r2 + bl EventObjectMovementMan_Create + str r0, [r5, #4] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _022508AA +_02250874: + ldr r0, [r5, #4] + bl EventObjectMovementMan_IsFinish + cmp r0, #1 + bne _022508AA + ldr r0, [r5, #4] + bl EventObjectMovementMan_Delete + ldrh r0, [r5, #2] + add r0, r0, #1 + strh r0, [r5, #2] + ldrh r1, [r5, #2] + ldrh r0, [r5] + cmp r1, r0 + blo _0225089A + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _022508AA +_0225089A: + mov r0, #0 + str r0, [r4] + b _022508AA +_022508A0: + add r0, r5, #0 + bl Heap_Free + mov r0, #1 + pop {r4, r5, r6, pc} +_022508AA: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_022508B0: .word ov02_02253A70 + thumb_func_end ov02_022507E8 + + thumb_func_start ov02_022508B4 +ov02_022508B4: ; 0x022508B4 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xb + mov r1, #4 + bl Heap_AllocAtEnd + add r2, r0, #0 + mov r0, #0 + strh r0, [r2] + strh r0, [r2, #2] + ldr r0, [r4, #0x10] + ldr r1, _022508D4 ; =ov02_022508D8 + bl TaskManager_Call + mov r0, #1 + pop {r4, pc} + .balign 4, 0 +_022508D4: .word ov02_022508D8 + thumb_func_end ov02_022508B4 + + thumb_func_start ov02_022508D8 +ov02_022508D8: ; 0x022508D8 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r4, r0, #0 + bl TaskManager_GetFieldSystem + add r6, r0, #0 + add r0, r4, #0 + bl TaskManager_GetStatePtr + add r5, r0, #0 + add r0, r4, #0 + bl TaskManager_GetEnvironment + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #3 + bls _022508FC + b _02250A44 +_022508FC: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02250908: ; jump table + .short _02250910 - _02250908 - 2 ; case 0 + .short _0225099A - _02250908 - 2 ; case 1 + .short _022509AE - _02250908 - 2 ; case 2 + .short _02250A3A - _02250908 - 2 ; case 3 +_02250910: + ldr r3, _02250A4C ; =ov02_02253B24 + add r2, sp, #0xc + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldrh r0, [r4, #2] + add r0, r0, #1 + strh r0, [r4, #2] + ldrh r0, [r4, #2] + bl _dfltu + add r3, r1, #0 + add r2, r0, #0 + ldr r1, _02250A50 ; =0x40A00000 + mov r0, #0 + bl _dmul + ldr r3, _02250A54 ; =0x40240000 + mov r2, #0 + bl _ddiv + add r3, r1, #0 + add r2, r0, #0 + ldr r1, _02250A58 ; =0x40B00000 + mov r0, #0 + bl _dadd + bl _dfix + str r0, [sp, #0xc] + ldrh r0, [r4, #2] + bl _dfltu + add r3, r1, #0 + add r2, r0, #0 + ldr r1, _02250A50 ; =0x40A00000 + mov r0, #0 + bl _dmul + ldr r3, _02250A54 ; =0x40240000 + mov r2, #0 + bl _ddiv + add r3, r1, #0 + add r2, r0, #0 + ldr r1, _02250A58 ; =0x40B00000 + mov r0, #0 + bl _dadd + bl _dfix + str r0, [sp, #0x10] + ldr r0, [r6, #0x3c] + bl ov01_021F771C + add r1, sp, #0xc + bl sub_02023E78 + ldrh r0, [r4, #2] + cmp r0, #0xa + blo _02250A44 + mov r0, #0 + strh r0, [r4, #2] + strh r0, [r4] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _02250A44 +_0225099A: + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + ldrh r0, [r4] + cmp r0, #0xa + blo _02250A44 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _02250A44 +_022509AE: + ldr r3, _02250A5C ; =ov02_02253B30 + add r2, sp, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldrh r0, [r4, #2] + add r0, r0, #1 + strh r0, [r4, #2] + ldrh r1, [r4, #2] + cmp r1, #0xa + blo _022509CE + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _02250A2C +_022509CE: + mov r0, #0xa + sub r0, r0, r1 + bl _dflt + add r3, r1, #0 + add r2, r0, #0 + ldr r1, _02250A50 ; =0x40A00000 + mov r0, #0 + bl _dmul + ldr r3, _02250A54 ; =0x40240000 + mov r2, #0 + bl _ddiv + add r3, r1, #0 + add r2, r0, #0 + ldr r1, _02250A58 ; =0x40B00000 + mov r0, #0 + bl _dadd + bl _dfix + str r0, [sp] + ldrh r1, [r4, #2] + mov r0, #0xa + sub r0, r0, r1 + bl _dflt + add r3, r1, #0 + add r2, r0, #0 + ldr r1, _02250A50 ; =0x40A00000 + mov r0, #0 + bl _dmul + ldr r3, _02250A54 ; =0x40240000 + mov r2, #0 + bl _ddiv + add r3, r1, #0 + add r2, r0, #0 + ldr r1, _02250A58 ; =0x40B00000 + mov r0, #0 + bl _dadd + bl _dfix + str r0, [sp, #4] +_02250A2C: + ldr r0, [r6, #0x3c] + bl ov01_021F771C + add r1, sp, #0 + bl sub_02023E78 + b _02250A44 +_02250A3A: + bl Heap_Free + add sp, #0x18 + mov r0, #1 + pop {r4, r5, r6, pc} +_02250A44: + mov r0, #0 + add sp, #0x18 + pop {r4, r5, r6, pc} + nop +_02250A4C: .word ov02_02253B24 +_02250A50: .word 0x40A00000 +_02250A54: .word 0x40240000 +_02250A58: .word 0x40B00000 +_02250A5C: .word ov02_02253B30 + thumb_func_end ov02_022508D8 + + .rodata + +ov02_022532F8: + .word ov02_02248E10 + +ov02_022532FC: ; 0x022532FC + .byte 0x07, 0x00, 0x08, 0x00 + +ov02_02253300: + .word ov02_0224AC28 + +ov02_02253304: ; 0x02253304 + .byte 0x11, 0x00, 0x14, 0x00, 0x17, 0x00 + +ov02_0225330A: ; 0x0225330A + .byte 0x13, 0x00, 0x16, 0x00, 0x19, 0x00 + +ov02_02253310: ; 0x02253310 + .byte 0x12, 0x00, 0x15, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 + +ov02_02253320: ; 0x02253320 + .word ov02_022532F8, ov02_022534D0, 0x01, 0x0F + +ov02_02253330: + .word ov02_0224ACE0, ov02_0224ADEC, 0x00, 0x06 + .byte 0x01, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00 + +ov02_02253348: ; 0x02253348 + .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0x40, 0x05, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + +ov02_02253354: ; 0x02253354 + .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0x80, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 + +ov02_02253360: ; 0x02253360 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +ov02_0225336C: ; 0x0225336C + .byte 0x00, 0x14, 0x00, 0x00 + .byte 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +ov02_02253378: ; 0x02253378 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + +ov02_02253384: ; 0x02253384 + .byte 0x00, 0x80, 0x12, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 + +ov02_02253390: ; 0x02253390 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +ov02_0225339C: ; 0x0225339C + .byte 0x00, 0x00, 0x08, 0x00 + .byte 0x00, 0xF0, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 + +ov02_022533A8: ; 0x022533A8 + .byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + +ov02_022533B4: ; 0x022533B4 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +ov02_022533C0: ; 0x022533C0 + .word ov02_02253300 + .word ov02_02253330 + .word ov02_02253420 + +ov02_022533CC: ; 0x022533CC + .byte 0x00, 0x20, 0x00, 0x00 + .byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +ov02_022533D8: ; 0x022533D8 + .byte 0x00, 0x80, 0x08, 0x00, 0x00, 0xF0, 0x04, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + +ov02_022533E4: ; 0x022533E4 + .byte 0x00, 0x80, 0x08, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00 + +ov02_022533F0: ; 0x022533F0 + .byte 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + +ov02_022533FC: ; 0x022533FC + .byte 0x00, 0x00, 0x08, 0x00 + .byte 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 + +ov02_02253408: ; 0x02253408 + .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + +ov02_02253414: ; 0x02253414 + .byte 0x00, 0x80, 0x12, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 + +ov02_02253420: + .word ov02_0224AF70, ov02_0224B0E0, ov02_0224B158, ov02_0224B294 + +ov02_02253430: ; 0x02253430 + .byte 0x00, 0xC0, 0xFF, 0xFF, 0x00, 0xA0, 0xFF, 0xFF, 0x00, 0x90, 0xFF, 0xFF, 0x00, 0x80, 0xFF, 0xFF + +ov02_02253440: ; 0x02253440 + .byte 0x08, 0x00, 0x00, 0x00 + .word ov02_0224B6D0 + .word sub_02068DD4 + .word ov02_0224B6E4 + .word sub_02068DD0 + +ov02_02253454: ; 0x02253454 + .byte 0x74, 0x00, 0x00, 0x00 + .word ov02_02248D98 + .word ov02_02248DE4 + .word ov02_02248DF0 + .word sub_02068DD0 + +ov02_02253468: ; 0x02253468 + .byte 0x24, 0x00, 0x00, 0x00 + .word ov02_0224AA80 + .word ov02_0224AAC8 + .word ov02_0224AAD4 + .word ov02_0224AB54 + +ov02_0225347C: ; 0x0225347C + .byte 0x68, 0x00, 0x00, 0x00 + .word ov02_0224ABCC + .word ov02_0224ABF8 + .word ov02_0224AC04 + .word ov02_0224AC24 + +ov02_02253490: ; 0x02253490 + .byte 0x0C, 0x00, 0x00, 0x00 + .word ov02_0224B7CC + .word ov02_0224B804 + .word ov02_0224B808 + .word ov02_0224B87C + +ov02_022534A4: ; 0x022534A4 + .byte 0x24, 0x00, 0x00, 0x00 + .word ov02_0224B350 + .word sub_02068DD4 + .word ov02_0224B3FC + .word sub_02068DD0 + +ov02_022534B8: ; 0x022534B8 + .word ov02_0224B494 + .word ov02_0224B4AC + .word ov02_0224B5F0 + .word ov02_0224B638 + .word ov02_0224B664 + .word ov02_0224B68C + +ov02_022534D0: + .word ov02_02248F88 + .word ov02_02249088 + .word ov02_022490BC + .word ov02_022491A8 + .word ov02_022491CC + .word ov02_02249290 + .word ov02_0224939C + .word ov02_022493EC + +ov02_022534F0: ; 0x022534F0 + .word ov02_022495D0 + .word ov02_02249A5C + .word ov02_0224B938 + .word ov02_0224B964 + .word ov02_02249AD8 + .word ov02_02249AF0 + .word ov02_02249B80 + .word ov02_02249BA8 + .word ov02_02249C74 + .word ov02_02249CD8 + .word ov02_02249954 + .word ov02_0224997C + +ov02_02253520: ; 0x02253520 + .byte 0x00, 0x40, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xC0, 0xFE, 0xFF, 0x00, 0x80, 0xFE, 0xFF + .byte 0x00, 0x60, 0xFE, 0xFF, 0x00, 0x40, 0xFE, 0xFF, 0x00, 0x40, 0xFE, 0xFF, 0x00, 0x40, 0xFE, 0xFF + .byte 0x00, 0x60, 0xFE, 0xFF, 0x00, 0x80, 0xFE, 0xFF, 0x00, 0xA0, 0xFE, 0xFF, 0x00, 0xC0, 0xFE, 0xFF + +ov02_02253550: ; 0x02253550 + .word ov02_022495B8 + .word ov02_022495E8 + .word ov02_02249658 + .word ov02_02249690 + .word ov02_022496D0 + .word ov02_02249754 + .word ov02_02249774 + .word ov02_022497C0 + .word ov02_02249838 + .word ov02_02249858 + .word ov02_022498BC + .word ov02_02249940 + .word ov02_02249968 + .word ov02_0224997C + +ov02_02253588: ; 0x02253588 + .word ov02_022495B8 + .word ov02_022499EC + .word ov02_02249658 + .word ov02_02249690 + .word ov02_022496D0 + .word ov02_02249754 + .word ov02_02249774 + .word ov02_022497C0 + .word ov02_02249838 + .word ov02_02249858 + .word ov02_02249AC4 + .word ov02_02249AD8 + .word ov02_02249AF0 + .word ov02_02249B10 + .word ov02_02249B38 + .word ov02_02249B60 + .word ov02_02249BA8 + .word ov02_02249BD8 + .word ov02_02249C74 + .word ov02_02249CD8 + .word ov02_02249940 + .word ov02_02249968 + .word ov02_0224997C + +ov02_022535E4: ; 0x022535E4 + .byte 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00 + .byte 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x04, 0x00, 0x00, 0x30, 0x04, 0x00 + .byte 0x00, 0x00, 0x01, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00 + .byte 0x00, 0xD0, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x0F, 0x00, 0x00, 0x50, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x85, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xE0, 0x04, 0x00, 0x00, 0x80, 0x01, 0x00 + .byte 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0xB0, 0x05, 0x00 + .byte 0x00, 0x00, 0x01, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00 + .byte 0x00, 0x60, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x00, 0x80, 0x03, 0x00, 0x00, 0x40, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x85, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x05, 0x00, 0x00, 0xD0, 0x06, 0x00, 0x00, 0x80, 0x01, 0x00 + .byte 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x09, 0x00, 0x00, 0x40, 0x06, 0x00 + .byte 0x00, 0x00, 0x01, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00 + .byte 0x00, 0xE0, 0x07, 0x00, 0x00, 0x80, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x00, 0xC0, 0x08, 0x00, 0x00, 0xD0, 0x07, 0x00, 0x00, 0x80, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x0D, 0x00, 0x00, 0xC0, 0x07, 0x00, 0x00, 0x80, 0x01, 0x00 + .byte 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + +ov02_022536E8: ; 0x022536E8 + .byte 0x21, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00 + +ov02_022536F0: ; 0x022536F0 + .word ov02_0224C234 + .word ov02_0224C2A8 + .word ov02_0224C2EC + .word ov02_0224C338 + +ov02_02253700: ; 0x02253700 + .word ov02_0224C05C + .word ov02_0224C0B0 + .word ov02_0224C14C + .word ov02_0224C1B8 + +ov02_02253710: ; 0x02253710 + .word ov02_0224C87C + .word ov02_0224C8D0 + .word ov02_0224C93C + .word ov02_0224C9B8 + .word ov02_0224CA38 + +ov02_02253724: ; 0x02253724 + .word ov02_0224C4B4 + .word ov02_0224C4D8 + .word ov02_0224C71C + .word ov02_0224C75C + .word ov02_0224C7D4 + .word ov02_0224C840 + +ov02_0225373C: ; 0x0225373C + .word ov02_0224C680 + .word ov02_0224C698 + .word ov02_0224C6DC + .word ov02_0224C75C + .word ov02_0224C7D4 + .word ov02_0224C840 + +ov02_02253754: ; 0x02253754 + .word ov02_0224C4B4 + .word ov02_0224C4D8 + .word ov02_0224C87C + .word ov02_0224C8D0 + .word ov02_0224C93C + .word ov02_0224C9B8 + .word ov02_0224CA38 + +ov02_02253770: ; 0x02253770 + .byte 0x01, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00 + .byte 0x00, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00 + .byte 0xFE, 0x00, 0x00, 0x00 + +ov02_02253794: ; 0x02253794 + .byte 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00 + .byte 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00 + .byte 0x02, 0x00, 0x01, 0x00, 0xFE, 0x00, 0x00, 0x00 + +ov02_022537B8: ; 0x022537B8 + .byte 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00 + .byte 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00 + .byte 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0xFE, 0x00, 0x00, 0x00 + +ov02_022537DC: ; 0x022537DC + .byte 0x01, 0x00, 0x01, 0x00 + .byte 0x3C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00 + .byte 0x3C, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00 + .byte 0x3C, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00 + .byte 0x3C, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00, 0xFE, 0x00, 0x00, 0x00 + +ov02_02253820: ; 0x02253820 + .byte 0x01, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00 + .byte 0x00, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00 + .byte 0x01, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00 + .byte 0x00, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00 + .byte 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00 + .byte 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00 + .byte 0xFE, 0x00, 0x00, 0x00 + +ov02_02253884: ; 0x02253884 + .byte 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00 + .byte 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00 + .byte 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00 + .byte 0x3C, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00 + .byte 0x3C, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00 + .byte 0x3C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3C, 0x00, 0x04, 0x00, 0x03, 0x00, 0x01, 0x00 + .byte 0x3C, 0x00, 0x05, 0x00, 0x01, 0x00, 0x01, 0x00, 0xFE, 0x00, 0x00, 0x00 + +ov02_022538EC: ; 0x022538EC + .byte 0x10, 0x0F, 0x0E, 0x0B + .byte 0x0C, 0x09, 0xB4, 0x00, 0x00, 0x00, 0x0E, 0x01, 0x5A, 0x00, 0x00, 0x00 + +ov02_022538FC: ; 0x022538FC + .byte 0x00, 0x04, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00 + .word ov02_0224D310 + .word ov02_0224D3A4 + .word ov02_0224D3B4 + .word ov02_0224D3E8 + +ov02_02253914: ; 0x02253914 + .byte 0x00, 0x04, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00 + .word ov02_0224D5B4 + .word ov02_0224D648 + .word ov02_0224D658 + .word ov02_0224D670 + +ov02_0225392C: ; 0x0225392C + .byte 0x00, 0x04, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00 + .word ov02_0224DAA4 + .word ov02_0224DB8C + .word ov02_0224DB9C + .word ov02_0224DC58 + +ov02_02253944: ; 0x02253944 + .byte 0x00, 0x04, 0x00, 0x00, 0xCC, 0x01, 0x00, 0x00 + .word ov02_0224D43C + .word ov02_0224D468 + .word ov02_0224D488 + .word ov02_0224D580 + +ov02_0225395C: ; 0x0225395C + .byte 0x00, 0x04, 0x00, 0x00, 0x10, 0x0D, 0x00, 0x00 + .word ov02_0224D880 + .word ov02_0224D914 + .word ov02_0224D950 + .word ov02_0224D98C + +ov02_02253974: ; 0x02253974 + .byte 0x00, 0x04, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00 + .word ov02_0224D1E4 + .word ov02_0224D278 + .word ov02_0224D288 + .word ov02_0224D2BC + +ov02_0225398C: ; 0x0225398C + .byte 0x00, 0x04, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00 + .word ov02_0224D358 + .word ov02_0224D3A4 + .word ov02_0224D3B4 + .word ov02_0224D3E8 + +ov02_022539A4: ; 0x022539A4 + .byte 0x00, 0x04, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00 + .word ov02_0224D9C0 + .word ov02_0224DB8C + .word ov02_0224DB9C + .word ov02_0224DC58 + +ov02_022539BC: ; 0x022539BC + .byte 0x00, 0x04, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00 + .word ov02_0224D22C + .word ov02_0224D278 + .word ov02_0224D288 + .word ov02_0224D2BC + +ov02_022539D4: ; 0x022539D4 + .byte 0x00, 0x04, 0x00, 0x00, 0x9C, 0x0E, 0x00, 0x00 + .word ov02_0224DCB0 + .word ov02_0224DD4C + .word ov02_0224DD8C + .word ov02_0224DDC8 + +ov02_022539EC: ; 0x022539EC + .byte 0x00, 0x04, 0x00, 0x00, 0x9C, 0x0E, 0x00, 0x00 + .word ov02_0224DD38 + .word ov02_0224DD4C + .word ov02_0224DD8C + .word ov02_0224DDC8 + +ov02_02253A04: ; 0x02253A04 + .word ov02_0224D2F0 + .word ov02_0224D41C + .word ov02_0224D41C + .word ov02_0224D2F0 + .word ov02_0224DC8C + .word ov02_0224DC8C + +ov02_02253A1C: ; 0x02253A1C + .word ov02_0224D2C8 + .word ov02_0224D3F4 + .word ov02_0224D408 + .word ov02_0224D2DC + .word ov02_0224DC64 + .word ov02_0224DC78 + +ov02_02253A34: ; 0x02253A34 + .word ov02_0224D2F8 + .word ov02_0224D424 + .word ov02_0224D424 + .word ov02_0224D2F8 + .word ov02_0224DC94 + .word ov02_0224DC94 + +ov02_02253A4C: ; 0x02253A4C + .byte 0xFF, 0x01, 0xFF, 0x01 + .byte 0x01, 0xFF, 0x00, 0x00 + +ov02_02253A54: ; 0x02253A54 + .byte 0x01, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00, 0x00 + +ov02_02253A5C: ; 0x02253A5C + .byte 0xB5, 0x00, 0x00, 0x00 + .byte 0xB6, 0x00, 0x00, 0x00, 0xB7, 0x00, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x00 + +ov02_02253A70: ; 0x02253A70 + .byte 0x49, 0x00, 0x01, 0x00, 0x30, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x4A, 0x00, 0x01, 0x00 + .byte 0xFE, 0x00, 0x00, 0x00, 0x49, 0x00, 0x01, 0x00, 0x31, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x01, 0x00 + .byte 0x4A, 0x00, 0x01, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x49, 0x00, 0x01, 0x00, 0x32, 0x00, 0x01, 0x00 + .byte 0x3E, 0x00, 0x01, 0x00, 0x4A, 0x00, 0x01, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x49, 0x00, 0x01, 0x00 + .byte 0x33, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x4A, 0x00, 0x01, 0x00, 0xFE, 0x00, 0x00, 0x00 + +ov02_02253AC0: ; 0x02253AC0 + .byte 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .byte 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .byte 0x06, 0x00, 0x00, 0x00 + +ov02_02253B24: ; 0x02253B24 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + +ov02_02253B30: ; 0x02253B30 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + + .data + +ov02_02253D90: ; 0x02253D90 + .byte 0x00, 0xB8, 0xFF, 0xFF + +ov02_02253D94: ; 0x02253D94 + .byte 0x00, 0xC0, 0x00, 0x00 + +ov02_02253D98: ; 0x02253D98 + .byte 0x00, 0xB8, 0xFF, 0xFF, 0x00, 0x48, 0x00, 0x00 + .byte 0x00, 0xC0, 0x00, 0x00, 0x00, 0xB8, 0xFF, 0xFF, 0x00, 0xB8, 0xFF, 0xFF, 0x00, 0xC0, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0xB8, 0xFF, 0xFF, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00 + .byte 0x00, 0xC0, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00 + +ov02_02253DD8: ; 0x02253DD8 + .byte 0x00, 0xB8, 0xFF, 0xFF + +ov02_02253DDC: ; 0x02253DDC + .byte 0x00, 0xC0, 0x00, 0x00 + +ov02_02253DE0: ; 0x02253DE0 + .byte 0x00, 0xB8, 0xFF, 0xFF, 0x00, 0x48, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xB8, 0xFF, 0xFF + .byte 0x00, 0xB8, 0xFF, 0xFF, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00 + .byte 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xFF, 0xFF, 0x00, 0xC0, 0x00, 0x00 + .byte 0x00, 0x48, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00 +_02253E20: diff --git a/asm/overlay_03.s b/asm/overlay_03.s index 350c2740b9..7d9b86b565 100644 --- a/asm/overlay_03.s +++ b/asm/overlay_03.s @@ -9676,7 +9676,7 @@ ScrCmd_720: ; 0x02258A18 ldrb r1, [r4] add r0, sp, #0x1c lsr r2, r2, #0x18 - bl sub_02097268 + bl GetSafariObjectConfig ldrb r0, [r4, #3] mov ip, r0 add r0, sp, #0x1c diff --git a/asm/overlay_108.s b/asm/overlay_108.s index fe61667bd0..757309a39d 100644 --- a/asm/overlay_108.s +++ b/asm/overlay_108.s @@ -4613,7 +4613,7 @@ _021E7DD0: ldrb r1, [r6, #2] add r0, sp, #0x24 mov r2, #2 - bl sub_02097268 + bl GetSafariObjectConfig ldrb r1, [r7, #2] cmp r1, #0 bne _021E7DE8 diff --git a/asm/overlay_108_021E8850.s b/asm/overlay_108_021E8850.s index e98713a256..30ebc1df95 100644 --- a/asm/overlay_108_021E8850.s +++ b/asm/overlay_108_021E8850.s @@ -3818,7 +3818,7 @@ _021EA6B4: ldr r2, [sp, #4] add r0, r5, #2 add r1, r6, #0 - bl sub_02097268 + bl GetSafariObjectConfig ldrb r1, [r5, #3] lsl r0, r1, #0x1c lsl r1, r1, #0x19 diff --git a/asm/unk_02097268.s b/asm/unk_02097268.s deleted file mode 100644 index 183c96e127..0000000000 --- a/asm/unk_02097268.s +++ /dev/null @@ -1,688 +0,0 @@ -#include "constants/easy_chat.h" -#include "constants/items.h" -#include "constants/maps.h" -#include "constants/moves.h" -#include "constants/species.h" - .include "asm/macros.inc" - .include "unk_02097268.inc" - .include "global.inc" - - .text - - thumb_func_start sub_02097268 -sub_02097268: ; 0x02097268 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r2, #0 - cmp r1, #0x18 - blt _02097278 - bl GF_AssertFail - mov r1, #0 -_02097278: - lsl r0, r1, #1 - add r2, r1, r0 - ldr r0, _020972A0 ; =_02108EEE - add r1, r0, r2 - ldrb r0, [r0, r2] - strb r0, [r5] - ldrb r0, [r1, #1] - strb r0, [r5, #1] - ldrb r0, [r1, #2] - strb r0, [r5, #2] - ldrb r0, [r5, #1] - lsl r0, r0, #0x18 - lsr r0, r0, #0x1f - beq _0209729E - cmp r4, #1 - bne _0209729E - ldrb r0, [r5] - add r0, r0, #1 - strb r0, [r5] -_0209729E: - pop {r3, r4, r5, pc} - .balign 4, 0 -_020972A0: .word _02108EEE - thumb_func_end sub_02097268 - - thumb_func_start sub_020972A4 -sub_020972A4: ; 0x020972A4 - ldr r3, [r0] - ldr r2, [r1] - cmp r3, r2 - bne _020972BC - ldrh r3, [r0, #4] - ldrh r2, [r1, #4] - cmp r3, r2 - bne _020972BC - ldrh r2, [r0, #6] - ldrh r0, [r1, #6] - cmp r2, r0 - beq _020972C0 -_020972BC: - mov r0, #0 - bx lr -_020972C0: - mov r0, #1 - bx lr - thumb_func_end sub_020972A4 - - thumb_func_start sub_020972C4 -sub_020972C4: ; 0x020972C4 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r1, #0 - mov r6, #0 -_020972CC: - add r0, r5, #0 - add r1, r4, #0 - bl sub_020972A4 - cmp r0, #0 - bne _020972DC - mov r0, #0 - pop {r4, r5, r6, pc} -_020972DC: - add r6, r6, #1 - add r4, #8 - add r5, #8 - cmp r6, #0xa - blt _020972CC - mov r0, #1 - pop {r4, r5, r6, pc} - .balign 4, 0 - thumb_func_end sub_020972C4 - - thumb_func_start sub_020972EC -sub_020972EC: ; 0x020972EC - push {r3, r4} - mov r4, #0 - cmp r2, #0 - ble _02097306 -_020972F4: - ldrb r3, [r1, r4] - cmp r0, r3 - bne _02097300 - mov r0, #1 - pop {r3, r4} - bx lr -_02097300: - add r4, r4, #1 - cmp r4, r2 - blt _020972F4 -_02097306: - mov r0, #0 - pop {r3, r4} - bx lr - thumb_func_end sub_020972EC - - thumb_func_start sub_0209730C -sub_0209730C: ; 0x0209730C - push {r3, r4, r5, r6, r7, lr} - sub sp, #0xb0 - add r4, r0, #0 - str r1, [sp, #4] - bl SaveData_GetPhoneCallPersistentState - str r0, [sp, #0x2c] - add r0, r4, #0 - bl Save_SafariZone_Get - str r0, [sp, #0x28] - mov r1, #0 - bl SafariZone_GetAreaSet - str r0, [sp, #0x24] - ldr r0, [sp, #0x28] - bl SafariZone_GetObjectUnlockLevel - cmp r0, #0 - beq _0209733A - ldr r0, [sp, #4] - cmp r0, #0 - bgt _0209733C -_0209733A: - b _020974BC -_0209733C: - add r0, r4, #0 - bl Save_VarsFlags_Get - bl Save_VarsFlags_CheckSafariSysFlag - cmp r0, #0 - beq _02097364 - ldr r0, [sp, #0x28] - bl sub_0202F6AC - add r2, r0, #0 - ldr r1, [sp, #4] - ldr r0, [sp, #0x28] - add r1, r2, r1 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - bl sub_0202F6A0 - add sp, #0xb0 - pop {r3, r4, r5, r6, r7, pc} -_02097364: - mov r0, #0 - str r0, [sp, #0x20] - ldr r1, [sp, #0x20] - add r0, sp, #0x30 - mov r2, #6 - bl MI_CpuFill8 - add r0, sp, #0x38 - mov r1, #0 - mov r2, #0x78 - bl MI_CpuFill8 - add r0, sp, #0x38 - mov r6, #0 - str r0, [sp, #0xc] -_02097382: - ldr r0, _020974C0 ; =0x0000FFFF - ldr r5, [sp, #0xc] - asr r0, r6 - lsl r0, r0, #0x1f - lsr r0, r0, #0x1d - mov r4, #0 - add r7, r0, #1 -_02097390: - mov r0, #0xb - str r0, [sp] - ldr r0, [sp, #0x24] - add r1, r6, #0 - add r2, r4, #0 - mov r3, #0 - bl sub_020974C4 - add r4, r4, #1 - stmia r5!, {r0} - cmp r4, r7 - blt _02097390 - ldr r0, [sp, #0xc] - add r6, r6, #1 - add r0, #0x14 - str r0, [sp, #0xc] - cmp r6, #6 - blt _02097382 - ldr r0, [sp, #0x28] - ldr r1, [sp, #4] - bl sub_0202F6B8 - mov r0, #0 - str r0, [sp, #8] - ldr r0, [sp, #0x24] - str r0, [sp, #0x18] - add r0, sp, #0x38 - str r0, [sp, #0x14] -_020973C8: - ldr r0, [sp, #0x18] - ldr r2, [sp, #0x20] - ldrb r7, [r0] - lsl r2, r2, #0x18 - add r1, sp, #0x30 - add r0, r7, #0 - lsr r2, r2, #0x18 - bl sub_020972EC - cmp r0, #0 - bne _02097442 - ldr r1, _020974C0 ; =0x0000FFFF - ldr r0, [sp, #8] - ldr r4, [sp, #0x14] - asr r1, r0 - lsl r0, r1, #0x1f - lsr r0, r0, #0x1d - add r0, r0, #1 - mov r5, #0 - str r0, [sp, #0x10] -_020973F0: - mov r0, #0xb - str r0, [sp] - ldr r0, [sp, #0x24] - ldr r1, [sp, #8] - add r2, r5, #0 - mov r3, #0 - bl sub_020974C4 - add r6, r0, #0 - ldr r0, [r4] - add r1, r6, #0 - bl sub_020972C4 - cmp r0, #0 - beq _02097416 - add r0, r6, #0 - bl Heap_Free - b _02097438 -_02097416: - ldr r2, [sp, #0x20] - add r0, r7, #0 - lsl r2, r2, #0x18 - add r1, sp, #0x30 - lsr r2, r2, #0x18 - bl sub_020972EC - cmp r0, #0 - bne _02097432 - ldr r0, [sp, #0x20] - add r1, sp, #0x30 - strb r7, [r1, r0] - add r0, r0, #1 - str r0, [sp, #0x20] -_02097432: - add r0, r6, #0 - bl Heap_Free -_02097438: - ldr r0, [sp, #0x10] - add r5, r5, #1 - add r4, r4, #4 - cmp r5, r0 - blt _020973F0 -_02097442: - ldr r0, [sp, #0x18] - add r0, #0x7a - str r0, [sp, #0x18] - ldr r0, [sp, #0x14] - add r0, #0x14 - str r0, [sp, #0x14] - ldr r0, [sp, #8] - add r0, r0, #1 - str r0, [sp, #8] - cmp r0, #6 - blt _020973C8 - add r0, sp, #0x38 - mov r7, #0 - str r0, [sp, #0x1c] -_0209745E: - ldr r0, _020974C0 ; =0x0000FFFF - ldr r4, [sp, #0x1c] - asr r0, r7 - lsl r0, r0, #0x1f - lsr r0, r0, #0x1d - mov r5, #0 - add r6, r0, #1 -_0209746C: - ldr r0, [r4] - cmp r0, #0 - beq _02097476 - bl Heap_Free -_02097476: - add r5, r5, #1 - add r4, r4, #4 - cmp r5, r6 - blt _0209746C - ldr r0, [sp, #0x1c] - add r7, r7, #1 - add r0, #0x14 - str r0, [sp, #0x1c] - cmp r7, #6 - blt _0209745E - ldr r0, [sp, #0x20] - cmp r0, #0 - bne _020974A6 - ldr r0, [sp, #0x2c] - mov r1, #6 - bl sub_0202F050 - mov r1, #0 - ldr r0, [sp, #0x2c] - add r2, r1, #0 - bl PhoneCallPersistentState_SafariZoneArrangement_Set - add sp, #0xb0 - pop {r3, r4, r5, r6, r7, pc} -_020974A6: - ldr r0, [sp, #0x2c] - mov r1, #6 - bl sub_0202F01C - ldr r2, [sp, #0x20] - ldr r0, [sp, #0x2c] - lsl r2, r2, #0x18 - add r1, sp, #0x30 - lsr r2, r2, #0x18 - bl PhoneCallPersistentState_SafariZoneArrangement_Set -_020974BC: - add sp, #0xb0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_020974C0: .word 0x0000FFFF - thumb_func_end sub_0209730C - - thumb_func_start sub_020974C4 -sub_020974C4: ; 0x020974C4 - push {r4, r5, r6, r7, lr} - sub sp, #0x34 - str r1, [sp, #8] - str r0, [sp, #4] - ldr r0, [sp, #8] - mov r1, #0x7a - add r7, r0, #0 - ldr r0, [sp, #0x48] - mul r7, r1 - mov r1, #0x50 - add r4, r2, #0 - str r3, [sp, #0xc] - str r0, [sp, #0x14] - bl Heap_AllocAtEnd - str r0, [sp, #0x20] - mov r5, #0 - add r6, r0, #0 - mov r2, #0x81 - mov r3, #0x13 - mov r1, #5 -_020974EE: - cmp r4, #0 - bne _020974F6 - str r3, [r6] - b _020974F8 -_020974F6: - str r2, [r6] -_020974F8: - strh r1, [r6, #6] - ldrh r0, [r6, #6] - add r5, r5, #1 - strh r0, [r6, #4] - add r6, #8 - cmp r5, #0xa - blt _020974EE - mov r0, #1 - str r0, [sp] - ldr r1, [sp, #4] - ldr r3, [sp, #0x14] - ldrb r1, [r1, r7] - mov r0, #0xe8 - mov r2, #0 - bl GfGfxLoader_LoadFromNarc - add r5, r0, #0 - bne _02097522 - ldr r0, [sp, #0x20] - add sp, #0x34 - pop {r4, r5, r6, r7, pc} -_02097522: - ldr r0, [sp, #0x14] - mov r1, #0x64 - bl Heap_AllocAtEnd - str r0, [sp, #0x1c] - ldr r1, [sp, #0x1c] - mov r0, #8 - mov r2, #0 -_02097532: - add r3, r5, r0 - add r0, #0x78 - str r3, [r1] - add r3, r5, r0 - str r3, [r1, #4] - ldrb r3, [r5, r2] - add r2, r2, #1 - lsl r6, r3, #2 - strb r3, [r1, #0x10] - lsl r3, r6, #1 - add r3, r6, r3 - add r0, r0, r3 - str r6, [r1, #0xc] - add r3, r5, r0 - str r3, [r1, #8] - ldrb r3, [r1, #0x10] - add r1, #0x14 - lsl r3, r3, #2 - add r0, r0, r3 - cmp r2, #5 - blt _02097532 - ldr r0, [sp, #0x1c] - add r0, #0x24 - ldrb r0, [r0] - cmp r0, #0 - bne _0209757C - cmp r4, #0 - ble _0209757C - ldr r0, [sp, #0x1c] - bl Heap_Free - add r0, r5, #0 - bl Heap_Free - ldr r0, [sp, #0x20] - add sp, #0x34 - pop {r4, r5, r6, r7, pc} -_0209757C: - ldr r0, [sp, #0xc] - mov r2, #0x14 - add r7, r0, #0 - mov r1, #0xa - mul r2, r4 - ldr r3, [sp, #0x1c] - mul r7, r1 - ldr r0, [sp, #0x20] - mov r1, #0 - str r2, [sp, #0x10] - add r4, r3, r2 -_02097592: - add r2, r7, r1 - ldr r3, [r4] - lsl r2, r2, #2 - add r6, r3, r2 - ldrh r2, [r3, r2] - add r1, r1, #1 - str r2, [r0] - ldrh r2, [r6, #2] - strh r2, [r0, #6] - strh r2, [r0, #4] - add r0, #8 - cmp r1, #0xa - blt _02097592 - mov r0, #0 - str r0, [sp, #0x18] - ldr r0, [sp, #4] - ldr r1, [sp, #8] - add r2, sp, #0x2c - bl sub_02097694 - ldr r1, [sp, #0x1c] - ldr r0, [sp, #0x10] - mov r2, #0 - add r0, r1, r0 - ldrb r0, [r0, #0x10] - cmp r0, #0 - ble _0209763C - add r1, r2, #0 -_020975CA: - ldr r3, [r4, #8] - ldrb r6, [r3, r1] - add r0, r3, r1 - add r3, sp, #0x2c - add r3, r3, r6 - sub r3, r3, #1 - ldrb r6, [r3] - ldrb r3, [r0, #1] - cmp r6, r3 - blo _02097632 - ldrb r6, [r0, #2] - cmp r6, #0 - beq _020975F2 - add r3, sp, #0x2c - add r3, r3, r6 - sub r3, r3, #1 - ldrb r3, [r3] - ldrb r0, [r0, #3] - cmp r3, r0 - blo _02097632 -_020975F2: - ldrb r3, [r4, #0x10] - ldr r0, [sp, #0xc] - mul r3, r0 - add r0, r2, r3 - lsl r0, r0, #2 - str r0, [sp, #0x28] - ldr r0, [sp, #0x18] - ldr r3, [sp, #0x20] - lsl r0, r0, #3 - mov ip, r0 - add r7, r3, r0 - ldr r3, [r4, #4] - ldr r0, [sp, #0x28] - mov r6, ip - ldrh r0, [r3, r0] - str r0, [sp, #0x24] - ldr r0, [sp, #0x20] - ldr r3, [sp, #0x24] - str r3, [r0, r6] - ldr r3, [r4, #4] - ldr r0, [sp, #0x28] - add r0, r3, r0 - ldrh r0, [r0, #2] - strh r0, [r7, #6] - strh r0, [r7, #4] - ldr r0, [sp, #0x18] - add r0, r0, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x18] - cmp r0, #9 - bhi _0209763C -_02097632: - ldrb r0, [r4, #0x10] - add r2, r2, #1 - add r1, r1, #4 - cmp r2, r0 - blt _020975CA -_0209763C: - ldr r0, [sp, #0x1c] - bl Heap_Free - add r0, r5, #0 - bl Heap_Free - ldr r0, [sp, #0x20] - add sp, #0x34 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end sub_020974C4 - - thumb_func_start sub_02097650 -sub_02097650: ; 0x02097650 - push {r3, r4} - cmp r1, #0 - bne _0209765C - mov r0, #0 - pop {r3, r4} - bx lr -_0209765C: - sub r2, r1, #1 - lsl r1, r2, #2 - ldr r3, _02097690 ; =_02108EDA - add r1, r2, r1 - mov r4, #0 - add r2, r3, r1 -_02097668: - ldrb r1, [r2] - cmp r0, r1 - bhs _02097678 - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3, r4} - bx lr -_02097678: - add r4, r4, #1 - add r2, r2, #1 - cmp r4, #5 - blt _02097668 - cmp r0, #0x19 - bhs _0209768A - mov r0, #6 - pop {r3, r4} - bx lr -_0209768A: - mov r0, #7 - pop {r3, r4} - bx lr - .balign 4, 0 -_02097690: .word _02108EDA - thumb_func_end sub_02097650 - - thumb_func_start sub_02097694 -sub_02097694: ; 0x02097694 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r6, r2, #0 - mov r2, #0x7a - mul r2, r1 - add r1, r0, r2 - str r1, [sp] - ldrb r1, [r0, r2] - add r1, r0, r1 - mov r0, #0xb7 - lsl r0, r0, #2 - ldrb r0, [r1, r0] - mov r1, #0xa - bl _s32_div_f - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #4] - add r0, r6, #0 - mov r1, #0 - mov r2, #8 - bl MI_CpuFill8 - ldr r0, [sp] - mov r4, #0 - ldrb r0, [r0, #1] - cmp r0, #0 - ble _0209771A - ldr r5, [sp] - add r7, sp, #8 -_020976D0: - ldrb r1, [r5, #2] - add r0, sp, #8 - mov r2, #2 - bl sub_02097268 - ldrb r0, [r7, #2] - cmp r0, #0 - beq _0209770E - add r0, r6, r0 - add r0, r0, #4 - sub r0, r0, #1 - ldrb r1, [r0] - add r1, r1, #1 - strb r1, [r0] - ldrb r1, [r7, #2] - ldr r0, [sp, #4] - bl sub_02097650 - add r3, r0, #0 - ldrb r0, [r7, #2] - add r0, r6, r0 - sub r0, r0, #1 - ldrb r1, [r0] - add r2, r3, r1 - cmp r2, #0xff - ble _0209770A - mov r1, #0xff - strb r1, [r0] - b _0209770E -_0209770A: - add r1, r1, r3 - strb r1, [r0] -_0209770E: - ldr r0, [sp] - add r4, r4, #1 - ldrb r0, [r0, #1] - add r5, r5, #4 - cmp r4, r0 - blt _020976D0 -_0209771A: - add sp, #0xc - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end sub_02097694 - - .rodata - -_02108ED8: - .byte 0xFF, 0xFF -_02108EDA: - .byte 0x01, 0x05, 0x0A, 0x0F, 0x14 - .byte 0x02, 0x06, 0x0B, 0x10, 0x15 - .byte 0x03, 0x07, 0x0C, 0x11, 0x16 - .byte 0x04, 0x08, 0x0D, 0x12, 0x17 -_02108EEE: - .byte 0xBD, 0x12, 0x01 - .byte 0xBE, 0x12, 0x01 - .byte 0xBF, 0x12, 0x01 - .byte 0xC0, 0x24, 0x02 - .byte 0xC1, 0x24, 0x02 - .byte 0xC2, 0x24, 0x02 - .byte 0xC3, 0x12, 0x03 - .byte 0xC4, 0x24, 0x03 - .byte 0xC5, 0x24, 0x03 - .byte 0xC6, 0x24, 0x04 - .byte 0xC7, 0x25, 0x04 - .byte 0xC8, 0x24, 0x04 - .byte 0xC9, 0x14, 0x00 - .byte 0xCA, 0x12, 0x00 - .byte 0xCB, 0x12, 0x00 - .byte 0xCC, 0x14, 0x00 - .byte 0xCD, 0x22, 0x00 - .byte 0xCE, 0x12, 0x00 - .byte 0xCF, 0x92, 0x00 - .byte 0xD1, 0x92, 0x00 - .byte 0xD3, 0x12, 0x00 - .byte 0xD4, 0x12, 0x00 - .byte 0xD5, 0x12, 0x00 - .byte 0xD6, 0x12, 0x00 diff --git a/files/.gitignore b/files/.gitignore index 748890f58d..e9bd858509 100644 --- a/files/.gitignore +++ b/files/.gitignore @@ -59,6 +59,7 @@ a/1/9/5 a/2/1/2 a/2/1/4 a/2/2/9 +a/2/3/0 a/2/5/2 a/2/5/4 a/2/6/0 diff --git a/files/arc/safari_enc.json b/files/arc/safari_enc.json new file mode 100644 index 0000000000..08d81493ac --- /dev/null +++ b/files/arc/safari_enc.json @@ -0,0 +1,12612 @@ +{ + "encounters": [ + { + "area": "SAFARI_ZONE_AREA_PLAINS", + "land": { + "mons": { + "morn": [ + { + "species": "SPECIES_RATTATA", + "level": 15 + }, + { + "species": "SPECIES_ABRA", + "level": 15 + }, + { + "species": "SPECIES_GIRAFARIG", + "level": 15 + }, + { + "species": "SPECIES_RATTATA", + "level": 16 + }, + { + "species": "SPECIES_ABRA", + "level": 16 + }, + { + "species": "SPECIES_GIRAFARIG", + "level": 16 + }, + { + "species": "SPECIES_RATTATA", + "level": 17 + }, + { + "species": "SPECIES_ABRA", + "level": 17 + }, + { + "species": "SPECIES_GIRAFARIG", + "level": 17 + }, + { + "species": "SPECIES_SMEARGLE", + "level": 17 + } + ], + "day": [ + { + "species": "SPECIES_RATTATA", + "level": 15 + }, + { + "species": "SPECIES_ABRA", + "level": 15 + }, + { + "species": "SPECIES_GIRAFARIG", + "level": 15 + }, + { + "species": "SPECIES_RATTATA", + "level": 16 + }, + { + "species": "SPECIES_ABRA", + "level": 16 + }, + { + "species": "SPECIES_GIRAFARIG", + "level": 16 + }, + { + "species": "SPECIES_RATTATA", + "level": 17 + }, + { + "species": "SPECIES_ABRA", + "level": 17 + }, + { + "species": "SPECIES_GIRAFARIG", + "level": 17 + }, + { + "species": "SPECIES_SMEARGLE", + "level": 17 + } + ], + "nite": [ + { + "species": "SPECIES_RATICATE", + "level": 15 + }, + { + "species": "SPECIES_ABRA", + "level": 15 + }, + { + "species": "SPECIES_GIRAFARIG", + "level": 15 + }, + { + "species": "SPECIES_RATICATE", + "level": 16 + }, + { + "species": "SPECIES_ABRA", + "level": 16 + }, + { + "species": "SPECIES_GIRAFARIG", + "level": 16 + }, + { + "species": "SPECIES_RATICATE", + "level": 17 + }, + { + "species": "SPECIES_ABRA", + "level": 17 + }, + { + "species": "SPECIES_STANTLER", + "level": 17 + }, + { + "species": "SPECIES_STANTLER", + "level": 17 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_GIRAFARIG", + "level": 40 + }, + "day": { + "species": "SPECIES_GIRAFARIG", + "level": 40 + }, + "nite": { + "species": "SPECIES_STANTLER", + "level": 40 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_SHINX", + "level": 43 + }, + "day": { + "species": "SPECIES_SHINX", + "level": 43 + }, + "nite": { + "species": "SPECIES_SHINX", + "level": 44 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 15 + } + ], + "morn": { + "species": "SPECIES_MANECTRIC", + "level": 45 + }, + "day": { + "species": "SPECIES_MANECTRIC", + "level": 45 + }, + "nite": { + "species": "SPECIES_MANECTRIC", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_SMEARGLE", + "level": 41 + }, + "day": { + "species": "SPECIES_SMEARGLE", + "level": 41 + }, + "nite": { + "species": "SPECIES_STANTLER", + "level": 41 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 15 + } + ], + "morn": { + "species": "SPECIES_ZIGZAGOON", + "level": 44 + }, + "day": { + "species": "SPECIES_ZIGZAGOON", + "level": 44 + }, + "nite": { + "species": "SPECIES_ZIGZAGOON", + "level": 44 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 5 + } + ], + "morn": { + "species": "SPECIES_PONYTA", + "level": 42 + }, + "day": { + "species": "SPECIES_PONYTA", + "level": 42 + }, + "nite": { + "species": "SPECIES_PONYTA", + "level": 42 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_HOUNDOOM", + "level": 43 + }, + "day": { + "species": "SPECIES_HOUNDOOM", + "level": 43 + }, + "nite": { + "species": "SPECIES_HOUNDOOM", + "level": 44 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 15 + } + ], + "morn": { + "species": "SPECIES_ZANGOOSE", + "level": 43 + }, + "day": { + "species": "SPECIES_ZANGOOSE", + "level": 43 + }, + "nite": { + "species": "SPECIES_ZANGOOSE", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 12 + } + ], + "morn": { + "species": "SPECIES_LOTAD", + "level": 42 + }, + "day": { + "species": "SPECIES_LOTAD", + "level": 42 + }, + "nite": { + "species": "SPECIES_LOTAD", + "level": 42 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 28 + } + ], + "morn": { + "species": "SPECIES_SURSKIT", + "level": 46 + }, + "day": { + "species": "SPECIES_SURSKIT", + "level": 46 + }, + "nite": { + "species": "SPECIES_SURSKIT", + "level": 46 + } + } + ], + "bonus_param": [] + }, + "surf": { + "mons": { + "morn": [ + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 24 + }, + { + "species": "SPECIES_WOOPER", + "level": 25 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 24 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 25 + } + ], + "day": [ + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 24 + }, + { + "species": "SPECIES_WOOPER", + "level": 25 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 24 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 25 + } + ], + "nite": [ + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 24 + }, + { + "species": "SPECIES_WOOPER", + "level": 25 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 24 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 25 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_QUAGSIRE", + "level": 25 + }, + "day": { + "species": "SPECIES_QUAGSIRE", + "level": 25 + }, + "nite": { + "species": "SPECIES_QUAGSIRE", + "level": 25 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "day": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "nite": { + "species": "SPECIES_SURSKIT", + "level": 25 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "day": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "nite": { + "species": "SPECIES_SURSKIT", + "level": 25 + } + } + ], + "bonus_param": [] + }, + "oldrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "day": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "nite": { + "species": "SPECIES_SEAKING", + "level": 20 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "day": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "nite": { + "species": "SPECIES_SEAKING", + "level": 20 + } + } + ], + "bonus_param": [] + }, + "goodrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "day": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "nite": { + "species": "SPECIES_DRATINI", + "level": 25 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "day": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "nite": { + "species": "SPECIES_DRATINI", + "level": 25 + } + } + ], + "bonus_param": [] + }, + "superrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_DRATINI", + "level": 44 + }, + { + "species": "SPECIES_DRATINI", + "level": 45 + } + ], + "day": [ + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_DRATINI", + "level": 44 + }, + { + "species": "SPECIES_DRATINI", + "level": 45 + } + ], + "nite": [ + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_DRATINI", + "level": 44 + }, + { + "species": "SPECIES_DRATINI", + "level": 45 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "day": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "nite": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 30 + } + ], + "morn": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "day": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "nite": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + } + } + ], + "bonus_param": [] + } + }, + { + "area": "SAFARI_ZONE_AREA_MEADOW", + "land": { + "mons": { + "morn": [ + { + "species": "SPECIES_JIGGLYPUFF", + "level": 15 + }, + { + "species": "SPECIES_HOPPIP", + "level": 15 + }, + { + "species": "SPECIES_HOPPIP", + "level": 15 + }, + { + "species": "SPECIES_JIGGLYPUFF", + "level": 16 + }, + { + "species": "SPECIES_HOPPIP", + "level": 16 + }, + { + "species": "SPECIES_JIGGLYPUFF", + "level": 16 + }, + { + "species": "SPECIES_JIGGLYPUFF", + "level": 17 + }, + { + "species": "SPECIES_HOPPIP", + "level": 17 + }, + { + "species": "SPECIES_JIGGLYPUFF", + "level": 17 + }, + { + "species": "SPECIES_SKIPLOOM", + "level": 17 + } + ], + "day": [ + { + "species": "SPECIES_JIGGLYPUFF", + "level": 15 + }, + { + "species": "SPECIES_SUNKERN", + "level": 15 + }, + { + "species": "SPECIES_HOPPIP", + "level": 15 + }, + { + "species": "SPECIES_JIGGLYPUFF", + "level": 16 + }, + { + "species": "SPECIES_SUNKERN", + "level": 16 + }, + { + "species": "SPECIES_HOPPIP", + "level": 16 + }, + { + "species": "SPECIES_JIGGLYPUFF", + "level": 17 + }, + { + "species": "SPECIES_SUNKERN", + "level": 17 + }, + { + "species": "SPECIES_HOPPIP", + "level": 17 + }, + { + "species": "SPECIES_SKIPLOOM", + "level": 17 + } + ], + "nite": [ + { + "species": "SPECIES_JIGGLYPUFF", + "level": 15 + }, + { + "species": "SPECIES_MARILL", + "level": 15 + }, + { + "species": "SPECIES_WOOPER", + "level": 15 + }, + { + "species": "SPECIES_JIGGLYPUFF", + "level": 16 + }, + { + "species": "SPECIES_MARILL", + "level": 16 + }, + { + "species": "SPECIES_WOOPER", + "level": 16 + }, + { + "species": "SPECIES_JIGGLYPUFF", + "level": 17 + }, + { + "species": "SPECIES_MARILL", + "level": 17 + }, + { + "species": "SPECIES_WOOPER", + "level": 17 + }, + { + "species": "SPECIES_CLEFAIRY", + "level": 17 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 5 + } + ], + "morn": { + "species": "SPECIES_RATICATE", + "level": 40 + }, + "day": { + "species": "SPECIES_RATICATE", + "level": 40 + }, + "nite": { + "species": "SPECIES_RATICATE", + "level": 40 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 12 + } + ], + "morn": { + "species": "SPECIES_CHANSEY", + "level": 42 + }, + "day": { + "species": "SPECIES_CHANSEY", + "level": 42 + }, + "nite": { + "species": "SPECIES_CHANSEY", + "level": 42 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 35 + } + ], + "morn": { + "species": "SPECIES_SEEDOT", + "level": 45 + }, + "day": { + "species": "SPECIES_SEEDOT", + "level": 45 + }, + "nite": { + "species": "SPECIES_SEEDOT", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 8 + } + ], + "morn": { + "species": "SPECIES_SKIPLOOM", + "level": 40 + }, + "day": { + "species": "SPECIES_SKIPLOOM", + "level": 40 + }, + "nite": { + "species": "SPECIES_SKIPLOOM", + "level": 40 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 28 + } + ], + "morn": { + "species": "SPECIES_NUZLEAF", + "level": 38 + }, + "day": { + "species": "SPECIES_NUZLEAF", + "level": 38 + }, + "nite": { + "species": "SPECIES_NUZLEAF", + "level": 38 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 35 + } + ], + "morn": { + "species": "SPECIES_NUZLEAF", + "level": 48 + }, + "day": { + "species": "SPECIES_NUZLEAF", + "level": 47 + }, + "nite": { + "species": "SPECIES_NUZLEAF", + "level": 47 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_GEODUDE", + "level": 45 + }, + "day": { + "species": "SPECIES_GEODUDE", + "level": 45 + }, + "nite": { + "species": "SPECIES_CLEFAIRY", + "level": 42 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 35 + } + ], + "morn": { + "species": "SPECIES_NOSEPASS", + "level": 45 + }, + "day": { + "species": "SPECIES_NOSEPASS", + "level": 45 + }, + "nite": { + "species": "SPECIES_NOSEPASS", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 42 + }, + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 28 + } + ], + "morn": { + "species": "SPECIES_RIOLU", + "level": 45 + }, + "day": { + "species": "SPECIES_RIOLU", + "level": 46 + }, + "nite": { + "species": "SPECIES_RIOLU", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_WOOPER", + "level": 40 + }, + "day": { + "species": "SPECIES_WOOPER", + "level": 40 + }, + "nite": { + "species": "SPECIES_WOOPER", + "level": 40 + } + } + ], + "bonus_param": [] + }, + "surf": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 16 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 16 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 17 + }, + { + "species": "SPECIES_WOOPER", + "level": 15 + }, + { + "species": "SPECIES_WOOPER", + "level": 16 + }, + { + "species": "SPECIES_WOOPER", + "level": 17 + }, + { + "species": "SPECIES_MARILL", + "level": 16 + }, + { + "species": "SPECIES_MARILL", + "level": 17 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 16 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 16 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 17 + }, + { + "species": "SPECIES_WOOPER", + "level": 15 + }, + { + "species": "SPECIES_WOOPER", + "level": 16 + }, + { + "species": "SPECIES_WOOPER", + "level": 17 + }, + { + "species": "SPECIES_MARILL", + "level": 16 + }, + { + "species": "SPECIES_MARILL", + "level": 17 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 16 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 16 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 17 + }, + { + "species": "SPECIES_WOOPER", + "level": 15 + }, + { + "species": "SPECIES_WOOPER", + "level": 16 + }, + { + "species": "SPECIES_WOOPER", + "level": 17 + }, + { + "species": "SPECIES_MARILL", + "level": 16 + }, + { + "species": "SPECIES_MARILL", + "level": 17 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_SKIPLOOM", + "level": 47 + }, + "day": { + "species": "SPECIES_SKIPLOOM", + "level": 47 + }, + "nite": { + "species": "SPECIES_SKIPLOOM", + "level": 47 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_MASQUERAIN", + "level": 42 + }, + "day": { + "species": "SPECIES_MASQUERAIN", + "level": 42 + }, + "nite": { + "species": "SPECIES_MASQUERAIN", + "level": 42 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 14 + } + ], + "morn": { + "species": "SPECIES_MASQUERAIN", + "level": 46 + }, + "day": { + "species": "SPECIES_MASQUERAIN", + "level": 46 + }, + "nite": { + "species": "SPECIES_MASQUERAIN", + "level": 46 + } + } + ], + "bonus_param": [] + }, + "oldrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 14 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_POLIWAG", + "level": 12 + }, + { + "species": "SPECIES_POLIWAG", + "level": 13 + }, + { + "species": "SPECIES_POLIWAG", + "level": 14 + }, + { + "species": "SPECIES_POLIWAG", + "level": 15 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 14 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_POLIWAG", + "level": 12 + }, + { + "species": "SPECIES_POLIWAG", + "level": 13 + }, + { + "species": "SPECIES_POLIWAG", + "level": 14 + }, + { + "species": "SPECIES_POLIWAG", + "level": 15 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 14 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_POLIWAG", + "level": 12 + }, + { + "species": "SPECIES_POLIWAG", + "level": 13 + }, + { + "species": "SPECIES_POLIWAG", + "level": 14 + }, + { + "species": "SPECIES_POLIWAG", + "level": 15 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 2 + } + ], + "morn": { + "species": "SPECIES_POLIWHIRL", + "level": 15 + }, + "day": { + "species": "SPECIES_POLIWHIRL", + "level": 15 + }, + "nite": { + "species": "SPECIES_POLIWHIRL", + "level": 15 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_POLIWHIRL", + "level": 16 + }, + "day": { + "species": "SPECIES_POLIWHIRL", + "level": 16 + }, + "nite": { + "species": "SPECIES_POLIWHIRL", + "level": 16 + } + } + ], + "bonus_param": [] + }, + "goodrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_POLIWAG", + "level": 22 + }, + { + "species": "SPECIES_POLIWAG", + "level": 22 + }, + { + "species": "SPECIES_POLIWAG", + "level": 23 + }, + { + "species": "SPECIES_POLIWAG", + "level": 24 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 24 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 25 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_POLIWAG", + "level": 22 + }, + { + "species": "SPECIES_POLIWAG", + "level": 22 + }, + { + "species": "SPECIES_POLIWAG", + "level": 23 + }, + { + "species": "SPECIES_POLIWAG", + "level": 24 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 24 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 25 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_POLIWAG", + "level": 22 + }, + { + "species": "SPECIES_POLIWAG", + "level": 22 + }, + { + "species": "SPECIES_POLIWAG", + "level": 23 + }, + { + "species": "SPECIES_POLIWAG", + "level": 24 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 24 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 25 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 5 + } + ], + "morn": { + "species": "SPECIES_POLIWHIRL", + "level": 27 + }, + "day": { + "species": "SPECIES_POLIWHIRL", + "level": 27 + }, + "nite": { + "species": "SPECIES_POLIWHIRL", + "level": 27 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 7 + } + ], + "morn": { + "species": "SPECIES_GYARADOS", + "level": 28 + }, + "day": { + "species": "SPECIES_GYARADOS", + "level": 28 + }, + "nite": { + "species": "SPECIES_GYARADOS", + "level": 28 + } + } + ], + "bonus_param": [] + }, + "superrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_POLIWAG", + "level": 35 + }, + { + "species": "SPECIES_POLIWAG", + "level": 35 + }, + { + "species": "SPECIES_POLIWAG", + "level": 36 + }, + { + "species": "SPECIES_POLIWAG", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 35 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 35 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 37 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 38 + } + ], + "day": [ + { + "species": "SPECIES_POLIWAG", + "level": 35 + }, + { + "species": "SPECIES_POLIWAG", + "level": 35 + }, + { + "species": "SPECIES_POLIWAG", + "level": 36 + }, + { + "species": "SPECIES_POLIWAG", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 35 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 35 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 37 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 38 + } + ], + "nite": [ + { + "species": "SPECIES_POLIWAG", + "level": 35 + }, + { + "species": "SPECIES_POLIWAG", + "level": 35 + }, + { + "species": "SPECIES_POLIWAG", + "level": 36 + }, + { + "species": "SPECIES_POLIWAG", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 35 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 35 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 37 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 38 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_GYARADOS", + "level": 42 + }, + "day": { + "species": "SPECIES_GYARADOS", + "level": 42 + }, + "nite": { + "species": "SPECIES_GYARADOS", + "level": 42 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 14 + } + ], + "morn": { + "species": "SPECIES_GYARADOS", + "level": 45 + }, + "day": { + "species": "SPECIES_GYARADOS", + "level": 45 + }, + "nite": { + "species": "SPECIES_GYARADOS", + "level": 45 + } + } + ], + "bonus_param": [] + } + }, + { + "area": "SAFARI_ZONE_AREA_SAVANNAH", + "land": { + "mons": { + "morn": [ + { + "species": "SPECIES_NIDORAN_F", + "level": 15 + }, + { + "species": "SPECIES_NIDORAN_M", + "level": 15 + }, + { + "species": "SPECIES_TAUROS", + "level": 15 + }, + { + "species": "SPECIES_NIDORAN_F", + "level": 16 + }, + { + "species": "SPECIES_NIDORAN_M", + "level": 16 + }, + { + "species": "SPECIES_TAUROS", + "level": 16 + }, + { + "species": "SPECIES_NIDORAN_F", + "level": 17 + }, + { + "species": "SPECIES_NIDORAN_M", + "level": 17 + }, + { + "species": "SPECIES_TAUROS", + "level": 17 + }, + { + "species": "SPECIES_RHYHORN", + "level": 17 + } + ], + "day": [ + { + "species": "SPECIES_NIDORAN_F", + "level": 15 + }, + { + "species": "SPECIES_NIDORAN_M", + "level": 15 + }, + { + "species": "SPECIES_TAUROS", + "level": 15 + }, + { + "species": "SPECIES_NIDORAN_F", + "level": 16 + }, + { + "species": "SPECIES_NIDORAN_M", + "level": 16 + }, + { + "species": "SPECIES_TAUROS", + "level": 16 + }, + { + "species": "SPECIES_NIDORAN_F", + "level": 17 + }, + { + "species": "SPECIES_NIDORAN_M", + "level": 17 + }, + { + "species": "SPECIES_TAUROS", + "level": 17 + }, + { + "species": "SPECIES_RHYHORN", + "level": 17 + } + ], + "nite": [ + { + "species": "SPECIES_NIDORINA", + "level": 15 + }, + { + "species": "SPECIES_NIDORINO", + "level": 15 + }, + { + "species": "SPECIES_ZUBAT", + "level": 15 + }, + { + "species": "SPECIES_NIDORINA", + "level": 16 + }, + { + "species": "SPECIES_NIDORINO", + "level": 16 + }, + { + "species": "SPECIES_ZUBAT", + "level": 16 + }, + { + "species": "SPECIES_NIDORINA", + "level": 17 + }, + { + "species": "SPECIES_NIDORINO", + "level": 17 + }, + { + "species": "SPECIES_ZUBAT", + "level": 17 + }, + { + "species": "SPECIES_GOLBAT", + "level": 17 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 5 + } + ], + "morn": { + "species": "SPECIES_TAUROS", + "level": 41 + }, + "day": { + "species": "SPECIES_TAUROS", + "level": 41 + }, + "nite": { + "species": "SPECIES_TAUROS", + "level": 41 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_ZIGZAGOON", + "level": 38 + }, + "day": { + "species": "SPECIES_ZIGZAGOON", + "level": 38 + }, + "nite": { + "species": "SPECIES_ZIGZAGOON", + "level": 38 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 24 + } + ], + "morn": { + "species": "SPECIES_LUXIO", + "level": 46 + }, + "day": { + "species": "SPECIES_LUXIO", + "level": 46 + }, + "nite": { + "species": "SPECIES_LUXIO", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 4 + } + ], + "morn": { + "species": "SPECIES_HOUNDOUR", + "level": 42 + }, + "day": { + "species": "SPECIES_HOUNDOUR", + "level": 42 + }, + "nite": { + "species": "SPECIES_HOUNDOUR", + "level": 42 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 35 + } + ], + "morn": { + "species": "SPECIES_CACTURNE", + "level": 42 + }, + "day": { + "species": "SPECIES_CACTURNE", + "level": 42 + }, + "nite": { + "species": "SPECIES_CACTURNE", + "level": 42 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 35 + }, + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 12 + } + ], + "morn": { + "species": "SPECIES_SHROOMISH", + "level": 45 + }, + "day": { + "species": "SPECIES_SHROOMISH", + "level": 45 + }, + "nite": { + "species": "SPECIES_SHROOMISH", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 5 + } + ], + "morn": { + "species": "SPECIES_RHYHORN", + "level": 41 + }, + "day": { + "species": "SPECIES_RHYHORN", + "level": 41 + }, + "nite": { + "species": "SPECIES_RHYHORN", + "level": 41 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_RHYDON", + "level": 44 + }, + "day": { + "species": "SPECIES_RHYDON", + "level": 44 + }, + "nite": { + "species": "SPECIES_RHYDON", + "level": 44 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 35 + } + ], + "morn": { + "species": "SPECIES_TORKOAL", + "level": 46 + }, + "day": { + "species": "SPECIES_TORKOAL", + "level": 47 + }, + "nite": { + "species": "SPECIES_TORKOAL", + "level": 47 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 5 + } + ], + "morn": { + "species": "SPECIES_AZURILL", + "level": 42 + }, + "day": { + "species": "SPECIES_AZURILL", + "level": 42 + }, + "nite": { + "species": "SPECIES_AZURILL", + "level": 42 + } + } + ], + "bonus_param": [] + }, + "surf": { + "mons": { + "morn": [ + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 24 + }, + { + "species": "SPECIES_WOOPER", + "level": 25 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 24 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 25 + } + ], + "day": [ + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 24 + }, + { + "species": "SPECIES_WOOPER", + "level": 25 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 24 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 25 + } + ], + "nite": [ + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 24 + }, + { + "species": "SPECIES_WOOPER", + "level": 25 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 24 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 25 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_QUAGSIRE", + "level": 25 + }, + "day": { + "species": "SPECIES_QUAGSIRE", + "level": 25 + }, + "nite": { + "species": "SPECIES_QUAGSIRE", + "level": 25 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "day": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "nite": { + "species": "SPECIES_SURSKIT", + "level": 25 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "day": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "nite": { + "species": "SPECIES_SURSKIT", + "level": 25 + } + } + ], + "bonus_param": [] + }, + "oldrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "day": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "nite": { + "species": "SPECIES_SEAKING", + "level": 20 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "day": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "nite": { + "species": "SPECIES_SEAKING", + "level": 20 + } + } + ], + "bonus_param": [] + }, + "goodrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "day": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "nite": { + "species": "SPECIES_DRATINI", + "level": 25 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "day": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "nite": { + "species": "SPECIES_DRATINI", + "level": 25 + } + } + ], + "bonus_param": [] + }, + "superrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_DRATINI", + "level": 44 + }, + { + "species": "SPECIES_DRATINI", + "level": 45 + } + ], + "day": [ + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_DRATINI", + "level": 44 + }, + { + "species": "SPECIES_DRATINI", + "level": 45 + } + ], + "nite": [ + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_DRATINI", + "level": 44 + }, + { + "species": "SPECIES_DRATINI", + "level": 45 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "day": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "nite": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 30 + } + ], + "morn": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "day": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "nite": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + } + } + ], + "bonus_param": [] + } + }, + { + "area": "SAFARI_ZONE_AREA_PEAK", + "land": { + "mons": { + "morn": [ + { + "species": "SPECIES_GEODUDE", + "level": 15 + }, + { + "species": "SPECIES_MAGNEMITE", + "level": 15 + }, + { + "species": "SPECIES_GEODUDE", + "level": 15 + }, + { + "species": "SPECIES_GEODUDE", + "level": 16 + }, + { + "species": "SPECIES_MAGNEMITE", + "level": 16 + }, + { + "species": "SPECIES_GRAVELER", + "level": 16 + }, + { + "species": "SPECIES_GEODUDE", + "level": 17 + }, + { + "species": "SPECIES_MAGNETON", + "level": 17 + }, + { + "species": "SPECIES_GRAVELER", + "level": 17 + }, + { + "species": "SPECIES_MAGMAR", + "level": 17 + } + ], + "day": [ + { + "species": "SPECIES_GEODUDE", + "level": 15 + }, + { + "species": "SPECIES_MAGNEMITE", + "level": 15 + }, + { + "species": "SPECIES_GEODUDE", + "level": 15 + }, + { + "species": "SPECIES_GEODUDE", + "level": 16 + }, + { + "species": "SPECIES_MAGNEMITE", + "level": 16 + }, + { + "species": "SPECIES_GRAVELER", + "level": 16 + }, + { + "species": "SPECIES_GEODUDE", + "level": 17 + }, + { + "species": "SPECIES_MAGNETON", + "level": 17 + }, + { + "species": "SPECIES_GRAVELER", + "level": 17 + }, + { + "species": "SPECIES_MAGMAR", + "level": 17 + } + ], + "nite": [ + { + "species": "SPECIES_GEODUDE", + "level": 15 + }, + { + "species": "SPECIES_MAGNEMITE", + "level": 15 + }, + { + "species": "SPECIES_GEODUDE", + "level": 15 + }, + { + "species": "SPECIES_GEODUDE", + "level": 16 + }, + { + "species": "SPECIES_WOBBUFFET", + "level": 16 + }, + { + "species": "SPECIES_MAGNEMITE", + "level": 16 + }, + { + "species": "SPECIES_GEODUDE", + "level": 17 + }, + { + "species": "SPECIES_MAGNETON", + "level": 17 + }, + { + "species": "SPECIES_WOBBUFFET", + "level": 17 + }, + { + "species": "SPECIES_MAGNETON", + "level": 17 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 5 + } + ], + "morn": { + "species": "SPECIES_LINOONE", + "level": 46 + }, + "day": { + "species": "SPECIES_LINOONE", + "level": 46 + }, + "nite": { + "species": "SPECIES_LINOONE", + "level": 46 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 12 + } + ], + "morn": { + "species": "SPECIES_ZANGOOSE", + "level": 45 + }, + "day": { + "species": "SPECIES_ZANGOOSE", + "level": 45 + }, + "nite": { + "species": "SPECIES_ZANGOOSE", + "level": 43 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_PARAS", + "level": 42 + }, + "day": { + "species": "SPECIES_PARAS", + "level": 42 + }, + "nite": { + "species": "SPECIES_PARAS", + "level": 42 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 5 + } + ], + "morn": { + "species": "SPECIES_FEAROW", + "level": 44 + }, + "day": { + "species": "SPECIES_FEAROW", + "level": 44 + }, + "nite": { + "species": "SPECIES_FEAROW", + "level": 44 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 56 + }, + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 28 + } + ], + "morn": { + "species": "SPECIES_VIGOROTH", + "level": 47 + }, + "day": { + "species": "SPECIES_VIGOROTH", + "level": 47 + }, + "nite": { + "species": "SPECIES_VIGOROTH", + "level": 47 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_MAGMAR", + "level": 41 + }, + "day": { + "species": "SPECIES_MAGMAR", + "level": 41 + }, + "nite": { + "species": "SPECIES_WOBBUFFET", + "level": 41 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 24 + } + ], + "morn": { + "species": "SPECIES_LAIRON", + "level": 45 + }, + "day": { + "species": "SPECIES_LAIRON", + "level": 45 + }, + "nite": { + "species": "SPECIES_LAIRON", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 35 + }, + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 14 + } + ], + "morn": { + "species": "SPECIES_BRONZOR", + "level": 45 + }, + "day": { + "species": "SPECIES_BRONZOR", + "level": 45 + }, + "nite": { + "species": "SPECIES_BRONZOR", + "level": 46 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 5 + } + ], + "morn": { + "species": "SPECIES_SLOWBRO", + "level": 45 + }, + "day": { + "species": "SPECIES_SLOWBRO", + "level": 45 + }, + "nite": { + "species": "SPECIES_SLOWBRO", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 35 + } + ], + "morn": { + "species": "SPECIES_SPHEAL", + "level": 45 + }, + "day": { + "species": "SPECIES_SPHEAL", + "level": 45 + }, + "nite": { + "species": "SPECIES_SPHEAL", + "level": 44 + } + } + ], + "bonus_param": [] + }, + "surf": { + "mons": { + "morn": [ + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 24 + }, + { + "species": "SPECIES_WOOPER", + "level": 25 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 24 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 25 + } + ], + "day": [ + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 24 + }, + { + "species": "SPECIES_WOOPER", + "level": 25 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 24 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 25 + } + ], + "nite": [ + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 24 + }, + { + "species": "SPECIES_WOOPER", + "level": 25 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 24 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 25 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_QUAGSIRE", + "level": 25 + }, + "day": { + "species": "SPECIES_QUAGSIRE", + "level": 25 + }, + "nite": { + "species": "SPECIES_QUAGSIRE", + "level": 25 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "day": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "nite": { + "species": "SPECIES_SURSKIT", + "level": 25 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "day": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "nite": { + "species": "SPECIES_SURSKIT", + "level": 25 + } + } + ], + "bonus_param": [] + }, + "oldrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "day": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "nite": { + "species": "SPECIES_SEAKING", + "level": 20 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "day": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "nite": { + "species": "SPECIES_SEAKING", + "level": 20 + } + } + ], + "bonus_param": [] + }, + "goodrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "day": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "nite": { + "species": "SPECIES_DRATINI", + "level": 25 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "day": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "nite": { + "species": "SPECIES_DRATINI", + "level": 25 + } + } + ], + "bonus_param": [] + }, + "superrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_DRATINI", + "level": 44 + }, + { + "species": "SPECIES_DRATINI", + "level": 45 + } + ], + "day": [ + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_DRATINI", + "level": 44 + }, + { + "species": "SPECIES_DRATINI", + "level": 45 + } + ], + "nite": [ + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_DRATINI", + "level": 44 + }, + { + "species": "SPECIES_DRATINI", + "level": 45 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "day": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "nite": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 30 + } + ], + "morn": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "day": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "nite": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + } + } + ], + "bonus_param": [] + } + }, + { + "area": "SAFARI_ZONE_AREA_ROCKY_BEACH", + "land": { + "mons": { + "morn": [ + { + "species": "SPECIES_DODUO", + "level": 15 + }, + { + "species": "SPECIES_SLOWPOKE", + "level": 15 + }, + { + "species": "SPECIES_KRABBY", + "level": 15 + }, + { + "species": "SPECIES_DODUO", + "level": 16 + }, + { + "species": "SPECIES_SLOWPOKE", + "level": 16 + }, + { + "species": "SPECIES_KRABBY", + "level": 16 + }, + { + "species": "SPECIES_DODUO", + "level": 17 + }, + { + "species": "SPECIES_SLOWPOKE", + "level": 17 + }, + { + "species": "SPECIES_KRABBY", + "level": 17 + }, + { + "species": "SPECIES_SLOWBRO", + "level": 17 + } + ], + "day": [ + { + "species": "SPECIES_DODUO", + "level": 15 + }, + { + "species": "SPECIES_SLOWPOKE", + "level": 15 + }, + { + "species": "SPECIES_KRABBY", + "level": 15 + }, + { + "species": "SPECIES_DODUO", + "level": 16 + }, + { + "species": "SPECIES_SLOWPOKE", + "level": 16 + }, + { + "species": "SPECIES_KRABBY", + "level": 16 + }, + { + "species": "SPECIES_DODUO", + "level": 17 + }, + { + "species": "SPECIES_SLOWPOKE", + "level": 17 + }, + { + "species": "SPECIES_KRABBY", + "level": 17 + }, + { + "species": "SPECIES_SLOWBRO", + "level": 17 + } + ], + "nite": [ + { + "species": "SPECIES_ZUBAT", + "level": 15 + }, + { + "species": "SPECIES_SLOWPOKE", + "level": 15 + }, + { + "species": "SPECIES_KRABBY", + "level": 15 + }, + { + "species": "SPECIES_ZUBAT", + "level": 16 + }, + { + "species": "SPECIES_SLOWPOKE", + "level": 16 + }, + { + "species": "SPECIES_KRABBY", + "level": 16 + }, + { + "species": "SPECIES_ZUBAT", + "level": 17 + }, + { + "species": "SPECIES_SLOWPOKE", + "level": 17 + }, + { + "species": "SPECIES_KRABBY", + "level": 17 + }, + { + "species": "SPECIES_SLOWBRO", + "level": 17 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 4 + } + ], + "morn": { + "species": "SPECIES_DODRIO", + "level": 42 + }, + "day": { + "species": "SPECIES_DODRIO", + "level": 42 + }, + "nite": { + "species": "SPECIES_DODRIO", + "level": 42 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_ELECTRIKE", + "level": 42 + }, + "day": { + "species": "SPECIES_ELECTRIKE", + "level": 42 + }, + "nite": { + "species": "SPECIES_ELECTRIKE", + "level": 42 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 49 + }, + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 49 + } + ], + "morn": { + "species": "SPECIES_GIBLE", + "level": 44 + }, + "day": { + "species": "SPECIES_GIBLE", + "level": 44 + }, + "nite": { + "species": "SPECIES_GIBLE", + "level": 44 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 5 + } + ], + "morn": { + "species": "SPECIES_MAREEP", + "level": 43 + }, + "day": { + "species": "SPECIES_MAREEP", + "level": 43 + }, + "nite": { + "species": "SPECIES_MAREEP", + "level": 43 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_MANECTRIC", + "level": 37 + }, + "day": { + "species": "SPECIES_MANECTRIC", + "level": 37 + }, + "nite": { + "species": "SPECIES_MANECTRIC", + "level": 37 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 18 + } + ], + "morn": { + "species": "SPECIES_BUDEW", + "level": 40 + }, + "day": { + "species": "SPECIES_BUDEW", + "level": 40 + }, + "nite": { + "species": "SPECIES_BUDEW", + "level": 40 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_SLOWBRO", + "level": 42 + }, + "day": { + "species": "SPECIES_SLOWBRO", + "level": 42 + }, + "nite": { + "species": "SPECIES_SLOWBRO", + "level": 42 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 8 + } + ], + "morn": { + "species": "SPECIES_KINGLER", + "level": 40 + }, + "day": { + "species": "SPECIES_KINGLER", + "level": 40 + }, + "nite": { + "species": "SPECIES_KINGLER", + "level": 40 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 24 + } + ], + "morn": { + "species": "SPECIES_ARON", + "level": 45 + }, + "day": { + "species": "SPECIES_ARON", + "level": 45 + }, + "nite": { + "species": "SPECIES_ARON", + "level": 44 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 5 + } + ], + "morn": { + "species": "SPECIES_SLOWBRO", + "level": 37 + }, + "day": { + "species": "SPECIES_SLOWBRO", + "level": 37 + }, + "nite": { + "species": "SPECIES_SLOWBRO", + "level": 37 + } + } + ], + "bonus_param": [] + }, + "surf": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 16 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 16 + }, + { + "species": "SPECIES_POLIWAG", + "level": 15 + }, + { + "species": "SPECIES_POLIWAG", + "level": 16 + }, + { + "species": "SPECIES_POLIWAG", + "level": 16 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 16 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 17 + }, + { + "species": "SPECIES_LAPRAS", + "level": 15 + }, + { + "species": "SPECIES_LAPRAS", + "level": 16 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 16 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 16 + }, + { + "species": "SPECIES_POLIWAG", + "level": 15 + }, + { + "species": "SPECIES_POLIWAG", + "level": 16 + }, + { + "species": "SPECIES_POLIWAG", + "level": 16 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 16 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 17 + }, + { + "species": "SPECIES_LAPRAS", + "level": 15 + }, + { + "species": "SPECIES_LAPRAS", + "level": 16 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 16 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 16 + }, + { + "species": "SPECIES_POLIWAG", + "level": 15 + }, + { + "species": "SPECIES_POLIWAG", + "level": 16 + }, + { + "species": "SPECIES_POLIWAG", + "level": 16 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 16 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 17 + }, + { + "species": "SPECIES_LAPRAS", + "level": 15 + }, + { + "species": "SPECIES_LAPRAS", + "level": 16 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_LAPRAS", + "level": 37 + }, + "day": { + "species": "SPECIES_LAPRAS", + "level": 37 + }, + "nite": { + "species": "SPECIES_LAPRAS", + "level": 36 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 14 + } + ], + "morn": { + "species": "SPECIES_LAPRAS", + "level": 42 + }, + "day": { + "species": "SPECIES_LAPRAS", + "level": 42 + }, + "nite": { + "species": "SPECIES_LAPRAS", + "level": 41 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 18 + } + ], + "morn": { + "species": "SPECIES_LAPRAS", + "level": 47 + }, + "day": { + "species": "SPECIES_LAPRAS", + "level": 47 + }, + "nite": { + "species": "SPECIES_LAPRAS", + "level": 46 + } + } + ], + "bonus_param": [] + }, + "oldrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 14 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 14 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 15 + }, + { + "species": "SPECIES_KRABBY", + "level": 13 + }, + { + "species": "SPECIES_KRABBY", + "level": 14 + }, + { + "species": "SPECIES_KRABBY", + "level": 15 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 14 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 14 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 15 + }, + { + "species": "SPECIES_KRABBY", + "level": 13 + }, + { + "species": "SPECIES_KRABBY", + "level": 14 + }, + { + "species": "SPECIES_KRABBY", + "level": 15 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 14 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 14 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 15 + }, + { + "species": "SPECIES_KRABBY", + "level": 13 + }, + { + "species": "SPECIES_KRABBY", + "level": 14 + }, + { + "species": "SPECIES_KRABBY", + "level": 15 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 2 + } + ], + "morn": { + "species": "SPECIES_KRABBY", + "level": 17 + }, + "day": { + "species": "SPECIES_KRABBY", + "level": 17 + }, + "nite": { + "species": "SPECIES_KRABBY", + "level": 17 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_KRABBY", + "level": 18 + }, + "day": { + "species": "SPECIES_KRABBY", + "level": 18 + }, + "nite": { + "species": "SPECIES_KRABBY", + "level": 18 + } + } + ], + "bonus_param": [] + }, + "goodrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_KRABBY", + "level": 22 + }, + { + "species": "SPECIES_KRABBY", + "level": 23 + }, + { + "species": "SPECIES_KRABBY", + "level": 24 + }, + { + "species": "SPECIES_KRABBY", + "level": 25 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_KRABBY", + "level": 22 + }, + { + "species": "SPECIES_KRABBY", + "level": 23 + }, + { + "species": "SPECIES_KRABBY", + "level": 24 + }, + { + "species": "SPECIES_KRABBY", + "level": 25 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_KRABBY", + "level": 22 + }, + { + "species": "SPECIES_KRABBY", + "level": 23 + }, + { + "species": "SPECIES_KRABBY", + "level": 24 + }, + { + "species": "SPECIES_KRABBY", + "level": 25 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 5 + } + ], + "morn": { + "species": "SPECIES_KINGLER", + "level": 26 + }, + "day": { + "species": "SPECIES_KINGLER", + "level": 26 + }, + "nite": { + "species": "SPECIES_KINGLER", + "level": 26 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 8 + } + ], + "morn": { + "species": "SPECIES_KINGLER", + "level": 27 + }, + "day": { + "species": "SPECIES_KINGLER", + "level": 27 + }, + "nite": { + "species": "SPECIES_KINGLER", + "level": 27 + } + } + ], + "bonus_param": [] + }, + "superrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_GOLDEEN", + "level": 35 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 36 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 37 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 38 + }, + { + "species": "SPECIES_SEAKING", + "level": 35 + }, + { + "species": "SPECIES_SEAKING", + "level": 36 + }, + { + "species": "SPECIES_SEAKING", + "level": 37 + }, + { + "species": "SPECIES_SEAKING", + "level": 38 + }, + { + "species": "SPECIES_KINGLER", + "level": 38 + }, + { + "species": "SPECIES_KINGLER", + "level": 39 + } + ], + "day": [ + { + "species": "SPECIES_GOLDEEN", + "level": 35 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 36 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 37 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 38 + }, + { + "species": "SPECIES_SEAKING", + "level": 35 + }, + { + "species": "SPECIES_SEAKING", + "level": 36 + }, + { + "species": "SPECIES_SEAKING", + "level": 37 + }, + { + "species": "SPECIES_SEAKING", + "level": 38 + }, + { + "species": "SPECIES_KINGLER", + "level": 38 + }, + { + "species": "SPECIES_KINGLER", + "level": 39 + } + ], + "nite": [ + { + "species": "SPECIES_GOLDEEN", + "level": 35 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 36 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 37 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 38 + }, + { + "species": "SPECIES_SEAKING", + "level": 35 + }, + { + "species": "SPECIES_SEAKING", + "level": 36 + }, + { + "species": "SPECIES_SEAKING", + "level": 37 + }, + { + "species": "SPECIES_SEAKING", + "level": 38 + }, + { + "species": "SPECIES_KINGLER", + "level": 38 + }, + { + "species": "SPECIES_KINGLER", + "level": 39 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 15 + } + ], + "morn": { + "species": "SPECIES_CORPHISH", + "level": 46 + }, + "day": { + "species": "SPECIES_CORPHISH", + "level": 46 + }, + "nite": { + "species": "SPECIES_CORPHISH", + "level": 46 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_CORPHISH", + "level": 48 + }, + "day": { + "species": "SPECIES_CORPHISH", + "level": 48 + }, + "nite": { + "species": "SPECIES_CORPHISH", + "level": 48 + } + } + ], + "bonus_param": [] + } + }, + { + "area": "SAFARI_ZONE_AREA_WETLAND", + "land": { + "mons": { + "morn": [ + { + "species": "SPECIES_SPEAROW", + "level": 15 + }, + { + "species": "SPECIES_SENTRET", + "level": 15 + }, + { + "species": "SPECIES_FARFETCHD", + "level": 15 + }, + { + "species": "SPECIES_SPEAROW", + "level": 16 + }, + { + "species": "SPECIES_SENTRET", + "level": 16 + }, + { + "species": "SPECIES_FARFETCHD", + "level": 16 + }, + { + "species": "SPECIES_SPEAROW", + "level": 17 + }, + { + "species": "SPECIES_SENTRET", + "level": 17 + }, + { + "species": "SPECIES_FARFETCHD", + "level": 17 + }, + { + "species": "SPECIES_DITTO", + "level": 17 + } + ], + "day": [ + { + "species": "SPECIES_SPEAROW", + "level": 15 + }, + { + "species": "SPECIES_SENTRET", + "level": 15 + }, + { + "species": "SPECIES_FARFETCHD", + "level": 15 + }, + { + "species": "SPECIES_SPEAROW", + "level": 16 + }, + { + "species": "SPECIES_SENTRET", + "level": 16 + }, + { + "species": "SPECIES_FARFETCHD", + "level": 16 + }, + { + "species": "SPECIES_SPEAROW", + "level": 17 + }, + { + "species": "SPECIES_SENTRET", + "level": 17 + }, + { + "species": "SPECIES_FARFETCHD", + "level": 17 + }, + { + "species": "SPECIES_DITTO", + "level": 17 + } + ], + "nite": [ + { + "species": "SPECIES_WOOPER", + "level": 15 + }, + { + "species": "SPECIES_WOOPER", + "level": 15 + }, + { + "species": "SPECIES_PSYDUCK", + "level": 15 + }, + { + "species": "SPECIES_WOOPER", + "level": 16 + }, + { + "species": "SPECIES_QUAGSIRE", + "level": 16 + }, + { + "species": "SPECIES_PSYDUCK", + "level": 16 + }, + { + "species": "SPECIES_WOOPER", + "level": 17 + }, + { + "species": "SPECIES_QUAGSIRE", + "level": 17 + }, + { + "species": "SPECIES_GOLDUCK", + "level": 17 + }, + { + "species": "SPECIES_GOLDUCK", + "level": 17 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 2 + } + ], + "morn": { + "species": "SPECIES_FURRET", + "level": 37 + }, + "day": { + "species": "SPECIES_FURRET", + "level": 37 + }, + "nite": { + "species": "SPECIES_FURRET", + "level": 37 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 6 + } + ], + "morn": { + "species": "SPECIES_SURSKIT", + "level": 40 + }, + "day": { + "species": "SPECIES_SURSKIT", + "level": 40 + }, + "nite": { + "species": "SPECIES_SURSKIT", + "level": 40 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 14 + } + ], + "morn": { + "species": "SPECIES_LOMBRE", + "level": 47 + }, + "day": { + "species": "SPECIES_LOMBRE", + "level": 47 + }, + "nite": { + "species": "SPECIES_LOMBRE", + "level": 47 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_FARFETCHD", + "level": 41 + }, + "day": { + "species": "SPECIES_FARFETCHD", + "level": 41 + }, + "nite": { + "species": "SPECIES_FARFETCHD", + "level": 41 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 8 + } + ], + "morn": { + "species": "SPECIES_PACHIRISU", + "level": 43 + }, + "day": { + "species": "SPECIES_PACHIRISU", + "level": 43 + }, + "nite": { + "species": "SPECIES_PACHIRISU", + "level": 43 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 4 + } + ], + "morn": { + "species": "SPECIES_DODUO", + "level": 45 + }, + "day": { + "species": "SPECIES_DODUO", + "level": 45 + }, + "nite": { + "species": "SPECIES_DODUO", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 5 + } + ], + "morn": { + "species": "SPECIES_GOLDUCK", + "level": 40 + }, + "day": { + "species": "SPECIES_GOLDUCK", + "level": 40 + }, + "nite": { + "species": "SPECIES_GOLDUCK", + "level": 40 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 63 + } + ], + "morn": { + "species": "SPECIES_SHELGON", + "level": 46 + }, + "day": { + "species": "SPECIES_SHELGON", + "level": 46 + }, + "nite": { + "species": "SPECIES_SHELGON", + "level": 46 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 15 + } + ], + "morn": { + "species": "SPECIES_DITTO", + "level": 41 + }, + "day": { + "species": "SPECIES_DITTO", + "level": 41 + }, + "nite": { + "species": "SPECIES_DITTO", + "level": 41 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 35 + } + ], + "morn": { + "species": "SPECIES_BUIZEL", + "level": 45 + }, + "day": { + "species": "SPECIES_BUIZEL", + "level": 45 + }, + "nite": { + "species": "SPECIES_BUIZEL", + "level": 44 + } + } + ], + "bonus_param": [] + }, + "surf": { + "mons": { + "morn": [ + { + "species": "SPECIES_POLIWAG", + "level": 15 + }, + { + "species": "SPECIES_POLIWAG", + "level": 16 + }, + { + "species": "SPECIES_POLIWAG", + "level": 16 + }, + { + "species": "SPECIES_WOOPER", + "level": 15 + }, + { + "species": "SPECIES_WOOPER", + "level": 16 + }, + { + "species": "SPECIES_WOOPER", + "level": 16 + }, + { + "species": "SPECIES_PSYDUCK", + "level": 16 + }, + { + "species": "SPECIES_PSYDUCK", + "level": 17 + }, + { + "species": "SPECIES_QUAGSIRE", + "level": 16 + }, + { + "species": "SPECIES_QUAGSIRE", + "level": 17 + } + ], + "day": [ + { + "species": "SPECIES_POLIWAG", + "level": 15 + }, + { + "species": "SPECIES_POLIWAG", + "level": 16 + }, + { + "species": "SPECIES_POLIWAG", + "level": 16 + }, + { + "species": "SPECIES_WOOPER", + "level": 15 + }, + { + "species": "SPECIES_WOOPER", + "level": 16 + }, + { + "species": "SPECIES_WOOPER", + "level": 16 + }, + { + "species": "SPECIES_PSYDUCK", + "level": 16 + }, + { + "species": "SPECIES_PSYDUCK", + "level": 17 + }, + { + "species": "SPECIES_QUAGSIRE", + "level": 16 + }, + { + "species": "SPECIES_QUAGSIRE", + "level": 17 + } + ], + "nite": [ + { + "species": "SPECIES_POLIWAG", + "level": 15 + }, + { + "species": "SPECIES_POLIWAG", + "level": 16 + }, + { + "species": "SPECIES_POLIWAG", + "level": 16 + }, + { + "species": "SPECIES_WOOPER", + "level": 15 + }, + { + "species": "SPECIES_WOOPER", + "level": 16 + }, + { + "species": "SPECIES_WOOPER", + "level": 16 + }, + { + "species": "SPECIES_PSYDUCK", + "level": 16 + }, + { + "species": "SPECIES_PSYDUCK", + "level": 17 + }, + { + "species": "SPECIES_QUAGSIRE", + "level": 16 + }, + { + "species": "SPECIES_QUAGSIRE", + "level": 17 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_QUAGSIRE", + "level": 37 + }, + "day": { + "species": "SPECIES_QUAGSIRE", + "level": 37 + }, + "nite": { + "species": "SPECIES_QUAGSIRE", + "level": 37 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 4 + } + ], + "morn": { + "species": "SPECIES_GOLDUCK", + "level": 37 + }, + "day": { + "species": "SPECIES_GOLDUCK", + "level": 37 + }, + "nite": { + "species": "SPECIES_GOLDUCK", + "level": 37 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 6 + } + ], + "morn": { + "species": "SPECIES_GOLDUCK", + "level": 45 + }, + "day": { + "species": "SPECIES_GOLDUCK", + "level": 45 + }, + "nite": { + "species": "SPECIES_GOLDUCK", + "level": 45 + } + } + ], + "bonus_param": [] + }, + "oldrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 14 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_POLIWAG", + "level": 12 + }, + { + "species": "SPECIES_POLIWAG", + "level": 13 + }, + { + "species": "SPECIES_POLIWAG", + "level": 14 + }, + { + "species": "SPECIES_POLIWAG", + "level": 15 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 14 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_POLIWAG", + "level": 12 + }, + { + "species": "SPECIES_POLIWAG", + "level": 13 + }, + { + "species": "SPECIES_POLIWAG", + "level": 14 + }, + { + "species": "SPECIES_POLIWAG", + "level": 15 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 14 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_POLIWAG", + "level": 12 + }, + { + "species": "SPECIES_POLIWAG", + "level": 13 + }, + { + "species": "SPECIES_POLIWAG", + "level": 14 + }, + { + "species": "SPECIES_POLIWAG", + "level": 15 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 2 + } + ], + "morn": { + "species": "SPECIES_POLIWHIRL", + "level": 17 + }, + "day": { + "species": "SPECIES_POLIWHIRL", + "level": 17 + }, + "nite": { + "species": "SPECIES_POLIWHIRL", + "level": 17 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_POLIWHIRL", + "level": 18 + }, + "day": { + "species": "SPECIES_POLIWHIRL", + "level": 18 + }, + "nite": { + "species": "SPECIES_POLIWHIRL", + "level": 18 + } + } + ], + "bonus_param": [] + }, + "goodrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_POLIWAG", + "level": 22 + }, + { + "species": "SPECIES_POLIWAG", + "level": 22 + }, + { + "species": "SPECIES_POLIWAG", + "level": 22 + }, + { + "species": "SPECIES_POLIWAG", + "level": 23 + }, + { + "species": "SPECIES_POLIWAG", + "level": 23 + }, + { + "species": "SPECIES_POLIWAG", + "level": 24 + }, + { + "species": "SPECIES_POLIWAG", + "level": 24 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 23 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 24 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 25 + } + ], + "day": [ + { + "species": "SPECIES_POLIWAG", + "level": 22 + }, + { + "species": "SPECIES_POLIWAG", + "level": 22 + }, + { + "species": "SPECIES_POLIWAG", + "level": 22 + }, + { + "species": "SPECIES_POLIWAG", + "level": 23 + }, + { + "species": "SPECIES_POLIWAG", + "level": 23 + }, + { + "species": "SPECIES_POLIWAG", + "level": 24 + }, + { + "species": "SPECIES_POLIWAG", + "level": 24 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 23 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 24 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 25 + } + ], + "nite": [ + { + "species": "SPECIES_POLIWAG", + "level": 22 + }, + { + "species": "SPECIES_POLIWAG", + "level": 22 + }, + { + "species": "SPECIES_POLIWAG", + "level": 23 + }, + { + "species": "SPECIES_POLIWAG", + "level": 23 + }, + { + "species": "SPECIES_POLIWAG", + "level": 23 + }, + { + "species": "SPECIES_POLIWAG", + "level": 24 + }, + { + "species": "SPECIES_POLIWAG", + "level": 24 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 23 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 24 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 25 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_CORPHISH", + "level": 26 + }, + "day": { + "species": "SPECIES_CORPHISH", + "level": 26 + }, + "nite": { + "species": "SPECIES_CORPHISH", + "level": 26 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 14 + } + ], + "morn": { + "species": "SPECIES_CORPHISH", + "level": 28 + }, + "day": { + "species": "SPECIES_CORPHISH", + "level": 28 + }, + "nite": { + "species": "SPECIES_CORPHISH", + "level": 28 + } + } + ], + "bonus_param": [] + }, + "superrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_POLIWAG", + "level": 35 + }, + { + "species": "SPECIES_POLIWAG", + "level": 35 + }, + { + "species": "SPECIES_POLIWAG", + "level": 36 + }, + { + "species": "SPECIES_POLIWAG", + "level": 36 + }, + { + "species": "SPECIES_POLIWAG", + "level": 37 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 35 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 35 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 37 + } + ], + "day": [ + { + "species": "SPECIES_POLIWAG", + "level": 35 + }, + { + "species": "SPECIES_POLIWAG", + "level": 35 + }, + { + "species": "SPECIES_POLIWAG", + "level": 36 + }, + { + "species": "SPECIES_POLIWAG", + "level": 36 + }, + { + "species": "SPECIES_POLIWAG", + "level": 37 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 35 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 35 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 37 + } + ], + "nite": [ + { + "species": "SPECIES_POLIWAG", + "level": 35 + }, + { + "species": "SPECIES_POLIWAG", + "level": 35 + }, + { + "species": "SPECIES_POLIWAG", + "level": 36 + }, + { + "species": "SPECIES_POLIWAG", + "level": 36 + }, + { + "species": "SPECIES_POLIWAG", + "level": 37 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 35 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 35 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 37 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 6 + } + ], + "morn": { + "species": "SPECIES_GYARADOS", + "level": 45 + }, + "day": { + "species": "SPECIES_GYARADOS", + "level": 44 + }, + "nite": { + "species": "SPECIES_GYARADOS", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 9 + } + ], + "morn": { + "species": "SPECIES_GYARADOS", + "level": 48 + }, + "day": { + "species": "SPECIES_GYARADOS", + "level": 47 + }, + "nite": { + "species": "SPECIES_GYARADOS", + "level": 48 + } + } + ], + "bonus_param": [] + } + }, + { + "area": "SAFARI_ZONE_AREA_FOREST", + "land": { + "mons": { + "morn": [ + { + "species": "SPECIES_BELLSPROUT", + "level": 15 + }, + { + "species": "SPECIES_PIDGEY", + "level": 15 + }, + { + "species": "SPECIES_BELLSPROUT", + "level": 15 + }, + { + "species": "SPECIES_BELLSPROUT", + "level": 16 + }, + { + "species": "SPECIES_PIDGEY", + "level": 16 + }, + { + "species": "SPECIES_MR_MIME", + "level": 16 + }, + { + "species": "SPECIES_BELLSPROUT", + "level": 17 + }, + { + "species": "SPECIES_PIDGEY", + "level": 17 + }, + { + "species": "SPECIES_MR_MIME", + "level": 17 + }, + { + "species": "SPECIES_MISDREAVUS", + "level": 17 + } + ], + "day": [ + { + "species": "SPECIES_BELLSPROUT", + "level": 15 + }, + { + "species": "SPECIES_PIDGEY", + "level": 15 + }, + { + "species": "SPECIES_BELLSPROUT", + "level": 15 + }, + { + "species": "SPECIES_BELLSPROUT", + "level": 16 + }, + { + "species": "SPECIES_PIDGEY", + "level": 16 + }, + { + "species": "SPECIES_MR_MIME", + "level": 16 + }, + { + "species": "SPECIES_BELLSPROUT", + "level": 17 + }, + { + "species": "SPECIES_PIDGEY", + "level": 17 + }, + { + "species": "SPECIES_MR_MIME", + "level": 17 + }, + { + "species": "SPECIES_MISDREAVUS", + "level": 17 + } + ], + "nite": [ + { + "species": "SPECIES_BELLSPROUT", + "level": 15 + }, + { + "species": "SPECIES_GASTLY", + "level": 15 + }, + { + "species": "SPECIES_MISDREAVUS", + "level": 15 + }, + { + "species": "SPECIES_BELLSPROUT", + "level": 16 + }, + { + "species": "SPECIES_HAUNTER", + "level": 16 + }, + { + "species": "SPECIES_MISDREAVUS", + "level": 16 + }, + { + "species": "SPECIES_BELLSPROUT", + "level": 17 + }, + { + "species": "SPECIES_GASTLY", + "level": 17 + }, + { + "species": "SPECIES_MISDREAVUS", + "level": 17 + }, + { + "species": "SPECIES_HAUNTER", + "level": 17 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_MR_MIME", + "level": 45 + }, + "day": { + "species": "SPECIES_MR_MIME", + "level": 45 + }, + "nite": { + "species": "SPECIES_MR_MIME", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 24 + } + ], + "morn": { + "species": "SPECIES_BUDEW", + "level": 47 + }, + "day": { + "species": "SPECIES_BUDEW", + "level": 47 + }, + "nite": { + "species": "SPECIES_BUDEW", + "level": 47 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 4 + } + ], + "morn": { + "species": "SPECIES_MISDREAVUS", + "level": 42 + }, + "day": { + "species": "SPECIES_MISDREAVUS", + "level": 42 + }, + "nite": { + "species": "SPECIES_MISDREAVUS", + "level": 42 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 35 + } + ], + "morn": { + "species": "SPECIES_SHUPPET", + "level": 46 + }, + "day": { + "species": "SPECIES_SHUPPET", + "level": 46 + }, + "nite": { + "species": "SPECIES_SHUPPET", + "level": 47 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 4 + } + ], + "morn": { + "species": "SPECIES_ELECTABUZZ", + "level": 41 + }, + "day": { + "species": "SPECIES_ELECTABUZZ", + "level": 41 + }, + "nite": { + "species": "SPECIES_ELECTABUZZ", + "level": 41 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 56 + }, + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 35 + } + ], + "morn": { + "species": "SPECIES_BRONZONG", + "level": 45 + }, + "day": { + "species": "SPECIES_BRONZONG", + "level": 44 + }, + "nite": { + "species": "SPECIES_BRONZONG", + "level": 44 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 63 + } + ], + "morn": { + "species": "SPECIES_BELDUM", + "level": 44 + }, + "day": { + "species": "SPECIES_BELDUM", + "level": 44 + }, + "nite": { + "species": "SPECIES_BELDUM", + "level": 44 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_LICKITUNG", + "level": 40 + }, + "day": { + "species": "SPECIES_LICKITUNG", + "level": 40 + }, + "nite": { + "species": "SPECIES_LICKITUNG", + "level": 40 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_BIDOOF", + "level": 40 + }, + "day": { + "species": "SPECIES_BIDOOF", + "level": 40 + }, + "nite": { + "species": "SPECIES_BIDOOF", + "level": 40 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 24 + } + ], + "morn": { + "species": "SPECIES_SURSKIT", + "level": 42 + }, + "day": { + "species": "SPECIES_SURSKIT", + "level": 42 + }, + "nite": { + "species": "SPECIES_SURSKIT", + "level": 42 + } + } + ], + "bonus_param": [] + }, + "surf": { + "mons": { + "morn": [ + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 24 + }, + { + "species": "SPECIES_WOOPER", + "level": 25 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 24 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 25 + } + ], + "day": [ + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 24 + }, + { + "species": "SPECIES_WOOPER", + "level": 25 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 24 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 25 + } + ], + "nite": [ + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 24 + }, + { + "species": "SPECIES_WOOPER", + "level": 25 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 24 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 25 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_QUAGSIRE", + "level": 25 + }, + "day": { + "species": "SPECIES_QUAGSIRE", + "level": 25 + }, + "nite": { + "species": "SPECIES_QUAGSIRE", + "level": 25 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "day": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "nite": { + "species": "SPECIES_SURSKIT", + "level": 25 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "day": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "nite": { + "species": "SPECIES_SURSKIT", + "level": 25 + } + } + ], + "bonus_param": [] + }, + "oldrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "day": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "nite": { + "species": "SPECIES_SEAKING", + "level": 20 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "day": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "nite": { + "species": "SPECIES_SEAKING", + "level": 20 + } + } + ], + "bonus_param": [] + }, + "goodrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "day": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "nite": { + "species": "SPECIES_DRATINI", + "level": 25 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "day": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "nite": { + "species": "SPECIES_DRATINI", + "level": 25 + } + } + ], + "bonus_param": [] + }, + "superrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_DRATINI", + "level": 44 + }, + { + "species": "SPECIES_DRATINI", + "level": 45 + } + ], + "day": [ + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_DRATINI", + "level": 44 + }, + { + "species": "SPECIES_DRATINI", + "level": 45 + } + ], + "nite": [ + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_DRATINI", + "level": 44 + }, + { + "species": "SPECIES_DRATINI", + "level": 45 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "day": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "nite": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 30 + } + ], + "morn": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "day": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "nite": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + } + } + ], + "bonus_param": [] + } + }, + { + "area": "SAFARI_ZONE_AREA_SWAMP", + "land": { + "mons": { + "morn": [ + { + "species": "SPECIES_SENTRET", + "level": 15 + }, + { + "species": "SPECIES_JIGGLYPUFF", + "level": 15 + }, + { + "species": "SPECIES_PARAS", + "level": 15 + }, + { + "species": "SPECIES_SENTRET", + "level": 16 + }, + { + "species": "SPECIES_JIGGLYPUFF", + "level": 16 + }, + { + "species": "SPECIES_PARAS", + "level": 16 + }, + { + "species": "SPECIES_SENTRET", + "level": 17 + }, + { + "species": "SPECIES_JIGGLYPUFF", + "level": 17 + }, + { + "species": "SPECIES_PARAS", + "level": 17 + }, + { + "species": "SPECIES_MURKROW", + "level": 17 + } + ], + "day": [ + { + "species": "SPECIES_SENTRET", + "level": 15 + }, + { + "species": "SPECIES_JIGGLYPUFF", + "level": 15 + }, + { + "species": "SPECIES_PARAS", + "level": 15 + }, + { + "species": "SPECIES_SENTRET", + "level": 16 + }, + { + "species": "SPECIES_JIGGLYPUFF", + "level": 16 + }, + { + "species": "SPECIES_PARAS", + "level": 16 + }, + { + "species": "SPECIES_SENTRET", + "level": 17 + }, + { + "species": "SPECIES_JIGGLYPUFF", + "level": 17 + }, + { + "species": "SPECIES_PARAS", + "level": 17 + }, + { + "species": "SPECIES_MURKROW", + "level": 17 + } + ], + "nite": [ + { + "species": "SPECIES_SENTRET", + "level": 15 + }, + { + "species": "SPECIES_DROWZEE", + "level": 15 + }, + { + "species": "SPECIES_MURKROW", + "level": 15 + }, + { + "species": "SPECIES_SENTRET", + "level": 16 + }, + { + "species": "SPECIES_HYPNO", + "level": 16 + }, + { + "species": "SPECIES_MURKROW", + "level": 16 + }, + { + "species": "SPECIES_SENTRET", + "level": 17 + }, + { + "species": "SPECIES_DROWZEE", + "level": 17 + }, + { + "species": "SPECIES_MURKROW", + "level": 17 + }, + { + "species": "SPECIES_HYPNO", + "level": 17 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_PARASECT", + "level": 41 + }, + "day": { + "species": "SPECIES_PARASECT", + "level": 41 + }, + "nite": { + "species": "SPECIES_PARASECT", + "level": 41 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 5 + } + ], + "morn": { + "species": "SPECIES_FURRET", + "level": 42 + }, + "day": { + "species": "SPECIES_FURRET", + "level": 42 + }, + "nite": { + "species": "SPECIES_FURRET", + "level": 42 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_PACHIRISU", + "level": 47 + }, + "day": { + "species": "SPECIES_PACHIRISU", + "level": 47 + }, + "nite": { + "species": "SPECIES_PACHIRISU", + "level": 47 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 5 + } + ], + "morn": { + "species": "SPECIES_MURKROW", + "level": 37 + }, + "day": { + "species": "SPECIES_MURKROW", + "level": 37 + }, + "nite": { + "species": "SPECIES_HYPNO", + "level": 37 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 8 + } + ], + "morn": { + "species": "SPECIES_WEEPINBELL", + "level": 46 + }, + "day": { + "species": "SPECIES_WEEPINBELL", + "level": 46 + }, + "nite": { + "species": "SPECIES_WEEPINBELL", + "level": 46 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 15 + } + ], + "morn": { + "species": "SPECIES_CHIMECHO", + "level": 46 + }, + "day": { + "species": "SPECIES_CHIMECHO", + "level": 46 + }, + "nite": { + "species": "SPECIES_CHIMECHO", + "level": 47 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_VOLTORB", + "level": 42 + }, + "day": { + "species": "SPECIES_VOLTORB", + "level": 42 + }, + "nite": { + "species": "SPECIES_VOLTORB", + "level": 42 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 28 + } + ], + "morn": { + "species": "SPECIES_DUSKULL", + "level": 38 + }, + "day": { + "species": "SPECIES_DUSKULL", + "level": 38 + }, + "nite": { + "species": "SPECIES_DUSKULL", + "level": 38 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 56 + }, + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 35 + } + ], + "morn": { + "species": "SPECIES_BAGON", + "level": 45 + }, + "day": { + "species": "SPECIES_BAGON", + "level": 45 + }, + "nite": { + "species": "SPECIES_BAGON", + "level": 44 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_FLOATZEL", + "level": 44 + }, + "day": { + "species": "SPECIES_FLOATZEL", + "level": 44 + }, + "nite": { + "species": "SPECIES_FLOATZEL", + "level": 44 + } + } + ], + "bonus_param": [] + }, + "surf": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 16 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 16 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 17 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 17 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 15 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 15 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 16 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 17 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 16 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 16 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 17 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 17 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 15 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 15 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 16 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 17 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 16 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 16 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 17 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 17 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 15 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 15 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 16 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 17 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 4 + } + ], + "morn": { + "species": "SPECIES_SEAKING", + "level": 42 + }, + "day": { + "species": "SPECIES_SEAKING", + "level": 42 + }, + "nite": { + "species": "SPECIES_SEAKING", + "level": 42 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_MURKROW", + "level": 47 + }, + "day": { + "species": "SPECIES_MURKROW", + "level": 47 + }, + "nite": { + "species": "SPECIES_MURKROW", + "level": 47 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 35 + } + ], + "morn": { + "species": "SPECIES_DUSKULL", + "level": 48 + }, + "day": { + "species": "SPECIES_DUSKULL", + "level": 48 + }, + "nite": { + "species": "SPECIES_DUSKULL", + "level": 48 + } + } + ], + "bonus_param": [] + }, + "oldrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 14 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 14 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 14 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 14 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 14 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 14 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 14 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 14 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 14 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 2 + } + ], + "morn": { + "species": "SPECIES_GOLDEEN", + "level": 17 + }, + "day": { + "species": "SPECIES_GOLDEEN", + "level": 17 + }, + "nite": { + "species": "SPECIES_GOLDEEN", + "level": 17 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_SEAKING", + "level": 17 + }, + "day": { + "species": "SPECIES_SEAKING", + "level": 17 + }, + "nite": { + "species": "SPECIES_SEAKING", + "level": 17 + } + } + ], + "bonus_param": [] + }, + "goodrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 6 + } + ], + "morn": { + "species": "SPECIES_SEAKING", + "level": 27 + }, + "day": { + "species": "SPECIES_SEAKING", + "level": 27 + }, + "nite": { + "species": "SPECIES_SEAKING", + "level": 27 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_DRATINI", + "level": 29 + }, + "day": { + "species": "SPECIES_DRATINI", + "level": 29 + }, + "nite": { + "species": "SPECIES_DRATINI", + "level": 29 + } + } + ], + "bonus_param": [] + }, + "superrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_GOLDEEN", + "level": 35 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 35 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 36 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 37 + }, + { + "species": "SPECIES_SEAKING", + "level": 35 + }, + { + "species": "SPECIES_SEAKING", + "level": 35 + }, + { + "species": "SPECIES_SEAKING", + "level": 36 + }, + { + "species": "SPECIES_SEAKING", + "level": 37 + }, + { + "species": "SPECIES_DRATINI", + "level": 36 + }, + { + "species": "SPECIES_DRATINI", + "level": 37 + } + ], + "day": [ + { + "species": "SPECIES_GOLDEEN", + "level": 35 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 35 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 36 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 37 + }, + { + "species": "SPECIES_SEAKING", + "level": 35 + }, + { + "species": "SPECIES_SEAKING", + "level": 35 + }, + { + "species": "SPECIES_SEAKING", + "level": 36 + }, + { + "species": "SPECIES_SEAKING", + "level": 37 + }, + { + "species": "SPECIES_DRATINI", + "level": 36 + }, + { + "species": "SPECIES_DRATINI", + "level": 37 + } + ], + "nite": [ + { + "species": "SPECIES_GOLDEEN", + "level": 35 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 35 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 36 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 37 + }, + { + "species": "SPECIES_SEAKING", + "level": 35 + }, + { + "species": "SPECIES_SEAKING", + "level": 35 + }, + { + "species": "SPECIES_SEAKING", + "level": 36 + }, + { + "species": "SPECIES_SEAKING", + "level": 37 + }, + { + "species": "SPECIES_DRATINI", + "level": 36 + }, + { + "species": "SPECIES_DRATINI", + "level": 37 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 15 + } + ], + "morn": { + "species": "SPECIES_DRAGONAIR", + "level": 42 + }, + "day": { + "species": "SPECIES_DRAGONAIR", + "level": 42 + }, + "nite": { + "species": "SPECIES_DRAGONAIR", + "level": 42 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "day": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "nite": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + } + } + ], + "bonus_param": [] + } + }, + { + "area": "SAFARI_ZONE_AREA_MARSHLAND", + "land": { + "mons": { + "morn": [ + { + "species": "SPECIES_EKANS", + "level": 15 + }, + { + "species": "SPECIES_KOFFING", + "level": 15 + }, + { + "species": "SPECIES_WEEZING", + "level": 15 + }, + { + "species": "SPECIES_EKANS", + "level": 16 + }, + { + "species": "SPECIES_KOFFING", + "level": 16 + }, + { + "species": "SPECIES_WEEZING", + "level": 16 + }, + { + "species": "SPECIES_ARBOK", + "level": 17 + }, + { + "species": "SPECIES_KOFFING", + "level": 17 + }, + { + "species": "SPECIES_WEEZING", + "level": 17 + }, + { + "species": "SPECIES_GRIMER", + "level": 17 + } + ], + "day": [ + { + "species": "SPECIES_EKANS", + "level": 15 + }, + { + "species": "SPECIES_KOFFING", + "level": 15 + }, + { + "species": "SPECIES_WEEZING", + "level": 15 + }, + { + "species": "SPECIES_EKANS", + "level": 16 + }, + { + "species": "SPECIES_KOFFING", + "level": 16 + }, + { + "species": "SPECIES_WEEZING", + "level": 16 + }, + { + "species": "SPECIES_ARBOK", + "level": 17 + }, + { + "species": "SPECIES_KOFFING", + "level": 17 + }, + { + "species": "SPECIES_WEEZING", + "level": 17 + }, + { + "species": "SPECIES_GRIMER", + "level": 17 + } + ], + "nite": [ + { + "species": "SPECIES_WOOPER", + "level": 15 + }, + { + "species": "SPECIES_KOFFING", + "level": 15 + }, + { + "species": "SPECIES_ODDISH", + "level": 15 + }, + { + "species": "SPECIES_WOOPER", + "level": 16 + }, + { + "species": "SPECIES_KOFFING", + "level": 16 + }, + { + "species": "SPECIES_GLOOM", + "level": 16 + }, + { + "species": "SPECIES_WOOPER", + "level": 17 + }, + { + "species": "SPECIES_KOFFING", + "level": 17 + }, + { + "species": "SPECIES_ODDISH", + "level": 17 + }, + { + "species": "SPECIES_GLOOM", + "level": 17 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 2 + } + ], + "morn": { + "species": "SPECIES_GLOOM", + "level": 42 + }, + "day": { + "species": "SPECIES_GLOOM", + "level": 42 + }, + "nite": { + "species": "SPECIES_GLOOM", + "level": 42 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 5 + } + ], + "morn": { + "species": "SPECIES_JUMPLUFF", + "level": 38 + }, + "day": { + "species": "SPECIES_JUMPLUFF", + "level": 38 + }, + "nite": { + "species": "SPECIES_JUMPLUFF", + "level": 38 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 35 + } + ], + "morn": { + "species": "SPECIES_SEVIPER", + "level": 48 + }, + "day": { + "species": "SPECIES_SEVIPER", + "level": 47 + }, + "nite": { + "species": "SPECIES_SEVIPER", + "level": 47 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 35 + } + ], + "morn": { + "species": "SPECIES_CARNIVINE", + "level": 41 + }, + "day": { + "species": "SPECIES_CARNIVINE", + "level": 41 + }, + "nite": { + "species": "SPECIES_CARNIVINE", + "level": 41 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 42 + } + ], + "morn": { + "species": "SPECIES_CROAGUNK", + "level": 44 + }, + "day": { + "species": "SPECIES_CROAGUNK", + "level": 44 + }, + "nite": { + "species": "SPECIES_CROAGUNK", + "level": 44 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 49 + } + ], + "morn": { + "species": "SPECIES_ROSELIA", + "level": 46 + }, + "day": { + "species": "SPECIES_ROSELIA", + "level": 46 + }, + "nite": { + "species": "SPECIES_ROSELIA", + "level": 46 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 5 + } + ], + "morn": { + "species": "SPECIES_DIGLETT", + "level": 43 + }, + "day": { + "species": "SPECIES_DIGLETT", + "level": 43 + }, + "nite": { + "species": "SPECIES_DIGLETT", + "level": 43 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 8 + } + ], + "morn": { + "species": "SPECIES_SHUCKLE", + "level": 44 + }, + "day": { + "species": "SPECIES_SHUCKLE", + "level": 44 + }, + "nite": { + "species": "SPECIES_SHUCKLE", + "level": 44 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 49 + } + ], + "morn": { + "species": "SPECIES_BANETTE", + "level": 44 + }, + "day": { + "species": "SPECIES_BANETTE", + "level": 44 + }, + "nite": { + "species": "SPECIES_BANETTE", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 8 + } + ], + "morn": { + "species": "SPECIES_MUK", + "level": 38 + }, + "day": { + "species": "SPECIES_MUK", + "level": 38 + }, + "nite": { + "species": "SPECIES_MUK", + "level": 38 + } + } + ], + "bonus_param": [] + }, + "surf": { + "mons": { + "morn": [ + { + "species": "SPECIES_POLIWAG", + "level": 15 + }, + { + "species": "SPECIES_POLIWAG", + "level": 15 + }, + { + "species": "SPECIES_POLIWAG", + "level": 16 + }, + { + "species": "SPECIES_POLIWAG", + "level": 17 + }, + { + "species": "SPECIES_WOOPER", + "level": 15 + }, + { + "species": "SPECIES_WOOPER", + "level": 16 + }, + { + "species": "SPECIES_WOOPER", + "level": 17 + }, + { + "species": "SPECIES_GRIMER", + "level": 15 + }, + { + "species": "SPECIES_GRIMER", + "level": 16 + }, + { + "species": "SPECIES_GRIMER", + "level": 17 + } + ], + "day": [ + { + "species": "SPECIES_POLIWAG", + "level": 15 + }, + { + "species": "SPECIES_POLIWAG", + "level": 15 + }, + { + "species": "SPECIES_POLIWAG", + "level": 16 + }, + { + "species": "SPECIES_POLIWAG", + "level": 17 + }, + { + "species": "SPECIES_WOOPER", + "level": 15 + }, + { + "species": "SPECIES_WOOPER", + "level": 16 + }, + { + "species": "SPECIES_WOOPER", + "level": 17 + }, + { + "species": "SPECIES_GRIMER", + "level": 15 + }, + { + "species": "SPECIES_GRIMER", + "level": 16 + }, + { + "species": "SPECIES_GRIMER", + "level": 17 + } + ], + "nite": [ + { + "species": "SPECIES_POLIWAG", + "level": 15 + }, + { + "species": "SPECIES_POLIWAG", + "level": 15 + }, + { + "species": "SPECIES_POLIWAG", + "level": 16 + }, + { + "species": "SPECIES_POLIWAG", + "level": 17 + }, + { + "species": "SPECIES_WOOPER", + "level": 15 + }, + { + "species": "SPECIES_WOOPER", + "level": 16 + }, + { + "species": "SPECIES_WOOPER", + "level": 17 + }, + { + "species": "SPECIES_GRIMER", + "level": 15 + }, + { + "species": "SPECIES_GRIMER", + "level": 16 + }, + { + "species": "SPECIES_GRIMER", + "level": 17 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_JUMPLUFF", + "level": 47 + }, + "day": { + "species": "SPECIES_JUMPLUFF", + "level": 47 + }, + "nite": { + "species": "SPECIES_JUMPLUFF", + "level": 47 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 13 + } + ], + "morn": { + "species": "SPECIES_QUAGSIRE", + "level": 43 + }, + "day": { + "species": "SPECIES_QUAGSIRE", + "level": 43 + }, + "nite": { + "species": "SPECIES_QUAGSIRE", + "level": 43 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 16 + } + ], + "morn": { + "species": "SPECIES_MUK", + "level": 48 + }, + "day": { + "species": "SPECIES_MUK", + "level": 48 + }, + "nite": { + "species": "SPECIES_MUK", + "level": 48 + } + } + ], + "bonus_param": [] + }, + "oldrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 14 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_POLIWAG", + "level": 12 + }, + { + "species": "SPECIES_POLIWAG", + "level": 13 + }, + { + "species": "SPECIES_POLIWAG", + "level": 14 + }, + { + "species": "SPECIES_POLIWAG", + "level": 15 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 14 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_POLIWAG", + "level": 12 + }, + { + "species": "SPECIES_POLIWAG", + "level": 13 + }, + { + "species": "SPECIES_POLIWAG", + "level": 14 + }, + { + "species": "SPECIES_POLIWAG", + "level": 15 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 14 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 15 + }, + { + "species": "SPECIES_POLIWAG", + "level": 12 + }, + { + "species": "SPECIES_POLIWAG", + "level": 13 + }, + { + "species": "SPECIES_POLIWAG", + "level": 14 + }, + { + "species": "SPECIES_POLIWAG", + "level": 15 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 2 + } + ], + "morn": { + "species": "SPECIES_POLIWAG", + "level": 16 + }, + "day": { + "species": "SPECIES_POLIWAG", + "level": 16 + }, + "nite": { + "species": "SPECIES_POLIWAG", + "level": 16 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_POLIWAG", + "level": 18 + }, + "day": { + "species": "SPECIES_POLIWAG", + "level": 18 + }, + "nite": { + "species": "SPECIES_POLIWAG", + "level": 18 + } + } + ], + "bonus_param": [] + }, + "goodrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 24 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 25 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 24 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 25 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 24 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 25 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 24 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 25 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 24 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 25 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 24 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 25 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 22 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 22 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 23 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 23 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 24 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 25 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_GYARADOS", + "level": 26 + }, + "day": { + "species": "SPECIES_GYARADOS", + "level": 26 + }, + "nite": { + "species": "SPECIES_GYARADOS", + "level": 26 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 4 + } + ], + "morn": { + "species": "SPECIES_GYARADOS", + "level": 29 + }, + "day": { + "species": "SPECIES_GYARADOS", + "level": 29 + }, + "nite": { + "species": "SPECIES_GYARADOS", + "level": 29 + } + } + ], + "bonus_param": [] + }, + "superrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_POLIWHIRL", + "level": 35 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 35 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 37 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 37 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 38 + }, + { + "species": "SPECIES_GYARADOS", + "level": 36 + }, + { + "species": "SPECIES_GYARADOS", + "level": 37 + } + ], + "day": [ + { + "species": "SPECIES_POLIWHIRL", + "level": 35 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 35 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 37 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 37 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 38 + }, + { + "species": "SPECIES_GYARADOS", + "level": 36 + }, + { + "species": "SPECIES_GYARADOS", + "level": 37 + } + ], + "nite": [ + { + "species": "SPECIES_POLIWHIRL", + "level": 35 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 35 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 35 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 36 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 37 + }, + { + "species": "SPECIES_POLIWHIRL", + "level": 38 + }, + { + "species": "SPECIES_GYARADOS", + "level": 36 + }, + { + "species": "SPECIES_GYARADOS", + "level": 37 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 4 + } + ], + "morn": { + "species": "SPECIES_BARBOACH", + "level": 42 + }, + "day": { + "species": "SPECIES_BARBOACH", + "level": 42 + }, + "nite": { + "species": "SPECIES_BARBOACH", + "level": 42 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 5 + } + ], + "morn": { + "species": "SPECIES_BARBOACH", + "level": 45 + }, + "day": { + "species": "SPECIES_BARBOACH", + "level": 45 + }, + "nite": { + "species": "SPECIES_BARBOACH", + "level": 45 + } + } + ], + "bonus_param": [] + } + }, + { + "area": "SAFARI_ZONE_AREA_WASTELAND", + "land": { + "mons": { + "morn": [ + { + "species": "SPECIES_KANGASKHAN", + "level": 15 + }, + { + "species": "SPECIES_ONIX", + "level": 15 + }, + { + "species": "SPECIES_MAGNEMITE", + "level": 15 + }, + { + "species": "SPECIES_MACHOP", + "level": 16 + }, + { + "species": "SPECIES_ONIX", + "level": 16 + }, + { + "species": "SPECIES_MAGNEMITE", + "level": 16 + }, + { + "species": "SPECIES_KANGASKHAN", + "level": 17 + }, + { + "species": "SPECIES_MACHOKE", + "level": 17 + }, + { + "species": "SPECIES_MAGNEMITE", + "level": 17 + }, + { + "species": "SPECIES_MACHOP", + "level": 17 + } + ], + "day": [ + { + "species": "SPECIES_KANGASKHAN", + "level": 15 + }, + { + "species": "SPECIES_ONIX", + "level": 15 + }, + { + "species": "SPECIES_MAGNEMITE", + "level": 15 + }, + { + "species": "SPECIES_MACHOP", + "level": 16 + }, + { + "species": "SPECIES_ONIX", + "level": 16 + }, + { + "species": "SPECIES_MAGNEMITE", + "level": 16 + }, + { + "species": "SPECIES_KANGASKHAN", + "level": 17 + }, + { + "species": "SPECIES_ONIX", + "level": 17 + }, + { + "species": "SPECIES_MAGNEMITE", + "level": 17 + }, + { + "species": "SPECIES_MACHOP", + "level": 17 + } + ], + "nite": [ + { + "species": "SPECIES_FEAROW", + "level": 15 + }, + { + "species": "SPECIES_ONIX", + "level": 15 + }, + { + "species": "SPECIES_MAGNEMITE", + "level": 15 + }, + { + "species": "SPECIES_FEAROW", + "level": 16 + }, + { + "species": "SPECIES_ONIX", + "level": 16 + }, + { + "species": "SPECIES_MAGNEMITE", + "level": 16 + }, + { + "species": "SPECIES_FEAROW", + "level": 17 + }, + { + "species": "SPECIES_ONIX", + "level": 17 + }, + { + "species": "SPECIES_MAGNEMITE", + "level": 17 + }, + { + "species": "SPECIES_ONIX", + "level": 17 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_MANECTRIC", + "level": 41 + }, + "day": { + "species": "SPECIES_MANECTRIC", + "level": 41 + }, + "nite": { + "species": "SPECIES_MANECTRIC", + "level": 41 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_ILLUMISE", + "level": 46 + }, + "day": { + "species": "SPECIES_ILLUMISE", + "level": 46 + }, + "nite": { + "species": "SPECIES_ILLUMISE", + "level": 46 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_BELLSPROUT", + "level": 41 + }, + "day": { + "species": "SPECIES_BELLSPROUT", + "level": 41 + }, + "nite": { + "species": "SPECIES_BELLSPROUT", + "level": 41 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 35 + } + ], + "morn": { + "species": "SPECIES_MEDICHAM", + "level": 44 + }, + "day": { + "species": "SPECIES_MEDICHAM", + "level": 44 + }, + "nite": { + "species": "SPECIES_MEDICHAM", + "level": 44 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 42 + } + ], + "morn": { + "species": "SPECIES_BRELOOM", + "level": 46 + }, + "day": { + "species": "SPECIES_BRELOOM", + "level": 46 + }, + "nite": { + "species": "SPECIES_BRELOOM", + "level": 46 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 5 + } + ], + "morn": { + "species": "SPECIES_MACHOKE", + "level": 40 + }, + "day": { + "species": "SPECIES_MACHOKE", + "level": 40 + }, + "nite": { + "species": "SPECIES_MACHOKE", + "level": 40 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 28 + } + ], + "morn": { + "species": "SPECIES_SKORUPI", + "level": 44 + }, + "day": { + "species": "SPECIES_SKORUPI", + "level": 44 + }, + "nite": { + "species": "SPECIES_SKORUPI", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 42 + } + ], + "morn": { + "species": "SPECIES_SOLROCK", + "level": 45 + }, + "day": { + "species": "SPECIES_SOLROCK", + "level": 46 + }, + "nite": { + "species": "SPECIES_SOLROCK", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_GOLDUCK", + "level": 45 + }, + "day": { + "species": "SPECIES_GOLDUCK", + "level": 45 + }, + "nite": { + "species": "SPECIES_GOLDUCK", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_KINGLER", + "level": 48 + }, + "day": { + "species": "SPECIES_KINGLER", + "level": 48 + }, + "nite": { + "species": "SPECIES_KINGLER", + "level": 48 + } + } + ], + "bonus_param": [] + }, + "surf": { + "mons": { + "morn": [ + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 24 + }, + { + "species": "SPECIES_WOOPER", + "level": 25 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 24 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 25 + } + ], + "day": [ + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 24 + }, + { + "species": "SPECIES_WOOPER", + "level": 25 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 24 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 25 + } + ], + "nite": [ + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 24 + }, + { + "species": "SPECIES_WOOPER", + "level": 25 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 24 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 25 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_QUAGSIRE", + "level": 25 + }, + "day": { + "species": "SPECIES_QUAGSIRE", + "level": 25 + }, + "nite": { + "species": "SPECIES_QUAGSIRE", + "level": 25 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "day": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "nite": { + "species": "SPECIES_SURSKIT", + "level": 25 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "day": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "nite": { + "species": "SPECIES_SURSKIT", + "level": 25 + } + } + ], + "bonus_param": [] + }, + "oldrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "day": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "nite": { + "species": "SPECIES_SEAKING", + "level": 20 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "day": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "nite": { + "species": "SPECIES_SEAKING", + "level": 20 + } + } + ], + "bonus_param": [] + }, + "goodrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "day": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "nite": { + "species": "SPECIES_DRATINI", + "level": 25 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "day": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "nite": { + "species": "SPECIES_DRATINI", + "level": 25 + } + } + ], + "bonus_param": [] + }, + "superrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_DRATINI", + "level": 44 + }, + { + "species": "SPECIES_DRATINI", + "level": 45 + } + ], + "day": [ + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_DRATINI", + "level": 44 + }, + { + "species": "SPECIES_DRATINI", + "level": 45 + } + ], + "nite": [ + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_DRATINI", + "level": 44 + }, + { + "species": "SPECIES_DRATINI", + "level": 45 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "day": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "nite": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 30 + } + ], + "morn": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "day": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "nite": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + } + } + ], + "bonus_param": [] + } + }, + { + "area": "SAFARI_ZONE_AREA_MOUNTAIN", + "land": { + "mons": { + "morn": [ + { + "species": "SPECIES_RATICATE", + "level": 15 + }, + { + "species": "SPECIES_LICKITUNG", + "level": 15 + }, + { + "species": "SPECIES_RATTATA", + "level": 15 + }, + { + "species": "SPECIES_RATICATE", + "level": 16 + }, + { + "species": "SPECIES_LICKITUNG", + "level": 16 + }, + { + "species": "SPECIES_RATTATA", + "level": 16 + }, + { + "species": "SPECIES_RATICATE", + "level": 17 + }, + { + "species": "SPECIES_LICKITUNG", + "level": 17 + }, + { + "species": "SPECIES_MAGNETON", + "level": 17 + }, + { + "species": "SPECIES_LARVITAR", + "level": 17 + } + ], + "day": [ + { + "species": "SPECIES_RATICATE", + "level": 15 + }, + { + "species": "SPECIES_LICKITUNG", + "level": 15 + }, + { + "species": "SPECIES_RATTATA", + "level": 15 + }, + { + "species": "SPECIES_RATICATE", + "level": 16 + }, + { + "species": "SPECIES_LICKITUNG", + "level": 16 + }, + { + "species": "SPECIES_RATTATA", + "level": 16 + }, + { + "species": "SPECIES_RATICATE", + "level": 17 + }, + { + "species": "SPECIES_LICKITUNG", + "level": 17 + }, + { + "species": "SPECIES_MAGNETON", + "level": 17 + }, + { + "species": "SPECIES_LARVITAR", + "level": 17 + } + ], + "nite": [ + { + "species": "SPECIES_ZUBAT", + "level": 15 + }, + { + "species": "SPECIES_GOLBAT", + "level": 15 + }, + { + "species": "SPECIES_RATTATA", + "level": 15 + }, + { + "species": "SPECIES_ZUBAT", + "level": 16 + }, + { + "species": "SPECIES_GOLBAT", + "level": 16 + }, + { + "species": "SPECIES_RATTATA", + "level": 16 + }, + { + "species": "SPECIES_ZUBAT", + "level": 17 + }, + { + "species": "SPECIES_GOLBAT", + "level": 17 + }, + { + "species": "SPECIES_MAGNETON", + "level": 17 + }, + { + "species": "SPECIES_ZUBAT", + "level": 17 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_MAGNETON", + "level": 42 + }, + "day": { + "species": "SPECIES_MAGNETON", + "level": 42 + }, + "nite": { + "species": "SPECIES_MAGNETON", + "level": 42 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_VOLBEAT", + "level": 46 + }, + "day": { + "species": "SPECIES_VOLBEAT", + "level": 46 + }, + "nite": { + "species": "SPECIES_VOLBEAT", + "level": 46 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_CHINGLING", + "level": 38 + }, + "day": { + "species": "SPECIES_CHINGLING", + "level": 38 + }, + "nite": { + "species": "SPECIES_CHINGLING", + "level": 38 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_MEDITITE", + "level": 44 + }, + "day": { + "species": "SPECIES_MEDITITE", + "level": 43 + }, + "nite": { + "species": "SPECIES_MEDITITE", + "level": 43 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 35 + } + ], + "morn": { + "species": "SPECIES_DUSCLOPS", + "level": 45 + }, + "day": { + "species": "SPECIES_DUSCLOPS", + "level": 45 + }, + "nite": { + "species": "SPECIES_DUSCLOPS", + "level": 46 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 5 + } + ], + "morn": { + "species": "SPECIES_LARVITAR", + "level": 42 + }, + "day": { + "species": "SPECIES_LARVITAR", + "level": 42 + }, + "nite": { + "species": "SPECIES_LARVITAR", + "level": 42 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 15 + } + ], + "morn": { + "species": "SPECIES_LUNATONE", + "level": 46 + }, + "day": { + "species": "SPECIES_LUNATONE", + "level": 46 + }, + "nite": { + "species": "SPECIES_LUNATONE", + "level": 46 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 56 + } + ], + "morn": { + "species": "SPECIES_METANG", + "level": 44 + }, + "day": { + "species": "SPECIES_METANG", + "level": 44 + }, + "nite": { + "species": "SPECIES_METANG", + "level": 44 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_KRABBY", + "level": 43 + }, + "day": { + "species": "SPECIES_KRABBY", + "level": 43 + }, + "nite": { + "species": "SPECIES_KRABBY", + "level": 43 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 49 + }, + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 21 + } + ], + "morn": { + "species": "SPECIES_SEALEO", + "level": 45 + }, + "day": { + "species": "SPECIES_SEALEO", + "level": 45 + }, + "nite": { + "species": "SPECIES_SEALEO", + "level": 45 + } + } + ], + "bonus_param": [] + }, + "surf": { + "mons": { + "morn": [ + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 24 + }, + { + "species": "SPECIES_WOOPER", + "level": 25 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 24 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 25 + } + ], + "day": [ + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 24 + }, + { + "species": "SPECIES_WOOPER", + "level": 25 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 24 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 25 + } + ], + "nite": [ + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 24 + }, + { + "species": "SPECIES_WOOPER", + "level": 25 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 24 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 25 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_QUAGSIRE", + "level": 25 + }, + "day": { + "species": "SPECIES_QUAGSIRE", + "level": 25 + }, + "nite": { + "species": "SPECIES_QUAGSIRE", + "level": 25 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "day": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "nite": { + "species": "SPECIES_SURSKIT", + "level": 25 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "day": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "nite": { + "species": "SPECIES_SURSKIT", + "level": 25 + } + } + ], + "bonus_param": [] + }, + "oldrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "day": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "nite": { + "species": "SPECIES_SEAKING", + "level": 20 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "day": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "nite": { + "species": "SPECIES_SEAKING", + "level": 20 + } + } + ], + "bonus_param": [] + }, + "goodrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "day": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "nite": { + "species": "SPECIES_DRATINI", + "level": 25 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "day": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "nite": { + "species": "SPECIES_DRATINI", + "level": 25 + } + } + ], + "bonus_param": [] + }, + "superrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_DRATINI", + "level": 44 + }, + { + "species": "SPECIES_DRATINI", + "level": 45 + } + ], + "day": [ + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_DRATINI", + "level": 44 + }, + { + "species": "SPECIES_DRATINI", + "level": 45 + } + ], + "nite": [ + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_DRATINI", + "level": 44 + }, + { + "species": "SPECIES_DRATINI", + "level": 45 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "day": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "nite": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 30 + } + ], + "morn": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "day": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "nite": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + } + } + ], + "bonus_param": [] + } + }, + { + "area": "SAFARI_ZONE_AREA_DESERT", + "land": { + "mons": { + "morn": [ + { + "species": "SPECIES_SANDSHREW", + "level": 15 + }, + { + "species": "SPECIES_SANDSLASH", + "level": 15 + }, + { + "species": "SPECIES_SANDSHREW", + "level": 15 + }, + { + "species": "SPECIES_SANDSHREW", + "level": 16 + }, + { + "species": "SPECIES_SANDSLASH", + "level": 16 + }, + { + "species": "SPECIES_CUBONE", + "level": 16 + }, + { + "species": "SPECIES_SANDSHREW", + "level": 17 + }, + { + "species": "SPECIES_SANDSLASH", + "level": 17 + }, + { + "species": "SPECIES_CUBONE", + "level": 17 + }, + { + "species": "SPECIES_MAROWAK", + "level": 17 + } + ], + "day": [ + { + "species": "SPECIES_SANDSHREW", + "level": 15 + }, + { + "species": "SPECIES_SANDSLASH", + "level": 15 + }, + { + "species": "SPECIES_SANDSHREW", + "level": 15 + }, + { + "species": "SPECIES_SANDSHREW", + "level": 16 + }, + { + "species": "SPECIES_SANDSLASH", + "level": 16 + }, + { + "species": "SPECIES_CUBONE", + "level": 16 + }, + { + "species": "SPECIES_SANDSHREW", + "level": 17 + }, + { + "species": "SPECIES_SANDSLASH", + "level": 17 + }, + { + "species": "SPECIES_CUBONE", + "level": 17 + }, + { + "species": "SPECIES_MAROWAK", + "level": 17 + } + ], + "nite": [ + { + "species": "SPECIES_SANDSHREW", + "level": 15 + }, + { + "species": "SPECIES_SANDSLASH", + "level": 15 + }, + { + "species": "SPECIES_FEAROW", + "level": 15 + }, + { + "species": "SPECIES_SANDSHREW", + "level": 16 + }, + { + "species": "SPECIES_SANDSLASH", + "level": 16 + }, + { + "species": "SPECIES_FEAROW", + "level": 16 + }, + { + "species": "SPECIES_SANDSHREW", + "level": 17 + }, + { + "species": "SPECIES_SANDSLASH", + "level": 17 + }, + { + "species": "SPECIES_SANDSHREW", + "level": 17 + }, + { + "species": "SPECIES_FEAROW", + "level": 17 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 3 + } + ], + "morn": { + "species": "SPECIES_FEAROW", + "level": 38 + }, + "day": { + "species": "SPECIES_FEAROW", + "level": 38 + }, + "nite": { + "species": "SPECIES_FEAROW", + "level": 38 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 14 + } + ], + "morn": { + "species": "SPECIES_SPINDA", + "level": 45 + }, + "day": { + "species": "SPECIES_SPINDA", + "level": 45 + }, + "nite": { + "species": "SPECIES_SPINDA", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PLAINS", + "count": 49 + } + ], + "morn": { + "species": "SPECIES_CARNIVINE", + "level": 48 + }, + "day": { + "species": "SPECIES_CARNIVINE", + "level": 48 + }, + "nite": { + "species": "SPECIES_CARNIVINE", + "level": 48 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 35 + } + ], + "morn": { + "species": "SPECIES_CACNEA", + "level": 35 + }, + "day": { + "species": "SPECIES_CACNEA", + "level": 35 + }, + "nite": { + "species": "SPECIES_CACNEA", + "level": 35 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 49 + } + ], + "morn": { + "species": "SPECIES_VIBRAVA", + "level": 44 + }, + "day": { + "species": "SPECIES_VIBRAVA", + "level": 45 + }, + "nite": { + "species": "SPECIES_VIBRAVA", + "level": 44 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 6 + } + ], + "morn": { + "species": "SPECIES_MAROWAK", + "level": 41 + }, + "day": { + "species": "SPECIES_MAROWAK", + "level": 41 + }, + "nite": { + "species": "SPECIES_FEAROW", + "level": 41 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 28 + } + ], + "morn": { + "species": "SPECIES_HIPPOPOTAS", + "level": 43 + }, + "day": { + "species": "SPECIES_HIPPOPOTAS", + "level": 43 + }, + "nite": { + "species": "SPECIES_HIPPOPOTAS", + "level": 43 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_PEAK", + "count": 49 + } + ], + "morn": { + "species": "SPECIES_TRAPINCH", + "level": 46 + }, + "day": { + "species": "SPECIES_TRAPINCH", + "level": 47 + }, + "nite": { + "species": "SPECIES_TRAPINCH", + "level": 46 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 8 + } + ], + "morn": { + "species": "SPECIES_LOTAD", + "level": 38 + }, + "day": { + "species": "SPECIES_LOTAD", + "level": 38 + }, + "nite": { + "species": "SPECIES_LOTAD", + "level": 38 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 42 + } + ], + "morn": { + "species": "SPECIES_CACTURNE", + "level": 48 + }, + "day": { + "species": "SPECIES_CACTURNE", + "level": 48 + }, + "nite": { + "species": "SPECIES_CACTURNE", + "level": 48 + } + } + ], + "bonus_param": [] + }, + "surf": { + "mons": { + "morn": [ + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 24 + }, + { + "species": "SPECIES_WOOPER", + "level": 25 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 24 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 25 + } + ], + "day": [ + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 24 + }, + { + "species": "SPECIES_WOOPER", + "level": 25 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 24 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 25 + } + ], + "nite": [ + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 22 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 23 + }, + { + "species": "SPECIES_WOOPER", + "level": 24 + }, + { + "species": "SPECIES_WOOPER", + "level": 25 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 23 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 24 + }, + { + "species": "SPECIES_TENTACOOL", + "level": 25 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_QUAGSIRE", + "level": 25 + }, + "day": { + "species": "SPECIES_QUAGSIRE", + "level": 25 + }, + "nite": { + "species": "SPECIES_QUAGSIRE", + "level": 25 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "day": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "nite": { + "species": "SPECIES_SURSKIT", + "level": 25 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_FOREST", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "day": { + "species": "SPECIES_SURSKIT", + "level": 25 + }, + "nite": { + "species": "SPECIES_SURSKIT", + "level": 25 + } + } + ], + "bonus_param": [] + }, + "oldrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 12 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 13 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 12 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 13 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "day": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "nite": { + "species": "SPECIES_SEAKING", + "level": 20 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "day": { + "species": "SPECIES_SEAKING", + "level": 20 + }, + "nite": { + "species": "SPECIES_SEAKING", + "level": 20 + } + } + ], + "bonus_param": [] + }, + "goodrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ], + "day": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ], + "nite": [ + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 22 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 23 + }, + { + "species": "SPECIES_MAGIKARP", + "level": 24 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 22 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 23 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 24 + }, + { + "species": "SPECIES_SEAKING", + "level": 25 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 10 + } + ], + "morn": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "day": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "nite": { + "species": "SPECIES_DRATINI", + "level": 25 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "day": { + "species": "SPECIES_DRATINI", + "level": 25 + }, + "nite": { + "species": "SPECIES_DRATINI", + "level": 25 + } + } + ], + "bonus_param": [] + }, + "superrod": { + "mons": { + "morn": [ + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_DRATINI", + "level": 44 + }, + { + "species": "SPECIES_DRATINI", + "level": 45 + } + ], + "day": [ + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_DRATINI", + "level": 44 + }, + { + "species": "SPECIES_DRATINI", + "level": 45 + } + ], + "nite": [ + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 42 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_GOLDEEN", + "level": 43 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_SEAKING", + "level": 44 + }, + { + "species": "SPECIES_SEAKING", + "level": 45 + }, + { + "species": "SPECIES_DRATINI", + "level": 44 + }, + { + "species": "SPECIES_DRATINI", + "level": 45 + } + ] + }, + "bonus_mons": [ + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 20 + } + ], + "morn": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "day": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "nite": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + } + }, + { + "conditions": [ + { + "object_type": "SAFARI_ZONE_OBJECT_TYPE_WATER", + "count": 30 + } + ], + "morn": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "day": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + }, + "nite": { + "species": "SPECIES_DRAGONAIR", + "level": 45 + } + } + ], + "bonus_param": [] + } + } + ] +} \ No newline at end of file diff --git a/files/arc/safari_enc.json.txt b/files/arc/safari_enc.json.txt new file mode 100644 index 0000000000..d4f7d4f3fb --- /dev/null +++ b/files/arc/safari_enc.json.txt @@ -0,0 +1,188 @@ +{{ doNotModifyHeader }} + +#include "constants/species.h" +#include "constants/safari.h" + + .rodata +## for map in encounters + .type sMap_{{ map.area }},@object + .balign 4, 0 +sMap_{{ map.area }}: + .byte {{ length(map.land.bonus_mons) }} + .byte {{ length(map.surf.bonus_mons) }} + .byte {{ length(map.oldrod.bonus_mons) }} + .byte {{ length(map.goodrod.bonus_mons) }} + .byte {{ length(map.superrod.bonus_mons) }} + .balign 4, 0 +## for mon in map.land.mons.morn + .short {{ mon.species }} + .short {{ mon.level }} +## endfor +## for mon in map.land.mons.day + .short {{ mon.species }} + .short {{ mon.level }} +## endfor +## for mon in map.land.mons.nite + .short {{ mon.species }} + .short {{ mon.level }} +## endfor +## for bonus in map.land.bonus_mons + .short {{ bonus.morn.species }} + .short {{ bonus.morn.level }} +## endfor +## for bonus in map.land.bonus_mons + .short {{ bonus.day.species }} + .short {{ bonus.day.level }} +## endfor +## for bonus in map.land.bonus_mons + .short {{ bonus.nite.species }} + .short {{ bonus.nite.level }} +## endfor +## for bonus in map.land.bonus_mons +## for condition in bonus.conditions + .byte {{ condition.object_type }} + .byte {{ condition.count }} +## endfor +## for i in range(2 - length(bonus.conditions)) + .byte 0 + .byte 0 +## endfor +## endfor +## for mon in map.surf.mons.morn + .short {{ mon.species }} + .short {{ mon.level }} +## endfor +## for mon in map.surf.mons.day + .short {{ mon.species }} + .short {{ mon.level }} +## endfor +## for mon in map.surf.mons.nite + .short {{ mon.species }} + .short {{ mon.level }} +## endfor +## for bonus in map.surf.bonus_mons + .short {{ bonus.morn.species }} + .short {{ bonus.morn.level }} +## endfor +## for bonus in map.surf.bonus_mons + .short {{ bonus.day.species }} + .short {{ bonus.day.level }} +## endfor +## for bonus in map.surf.bonus_mons + .short {{ bonus.nite.species }} + .short {{ bonus.nite.level }} +## endfor +## for bonus in map.surf.bonus_mons +## for condition in bonus.conditions + .byte {{ condition.object_type }} + .byte {{ condition.count }} +## endfor +## for i in range(2 - length(bonus.conditions)) + .byte 0 + .byte 0 +## endfor +## endfor +## for mon in map.oldrod.mons.morn + .short {{ mon.species }} + .short {{ mon.level }} +## endfor +## for mon in map.oldrod.mons.day + .short {{ mon.species }} + .short {{ mon.level }} +## endfor +## for mon in map.oldrod.mons.nite + .short {{ mon.species }} + .short {{ mon.level }} +## endfor +## for bonus in map.oldrod.bonus_mons + .short {{ bonus.morn.species }} + .short {{ bonus.morn.level }} +## endfor +## for bonus in map.oldrod.bonus_mons + .short {{ bonus.day.species }} + .short {{ bonus.day.level }} +## endfor +## for bonus in map.oldrod.bonus_mons + .short {{ bonus.nite.species }} + .short {{ bonus.nite.level }} +## endfor +## for bonus in map.oldrod.bonus_mons +## for condition in bonus.conditions + .byte {{ condition.object_type }} + .byte {{ condition.count }} +## endfor +## for i in range(2 - length(bonus.conditions)) + .byte 0 + .byte 0 +## endfor +## endfor +## for mon in map.goodrod.mons.morn + .short {{ mon.species }} + .short {{ mon.level }} +## endfor +## for mon in map.goodrod.mons.day + .short {{ mon.species }} + .short {{ mon.level }} +## endfor +## for mon in map.goodrod.mons.nite + .short {{ mon.species }} + .short {{ mon.level }} +## endfor +## for bonus in map.goodrod.bonus_mons + .short {{ bonus.morn.species }} + .short {{ bonus.morn.level }} +## endfor +## for bonus in map.goodrod.bonus_mons + .short {{ bonus.day.species }} + .short {{ bonus.day.level }} +## endfor +## for bonus in map.goodrod.bonus_mons + .short {{ bonus.nite.species }} + .short {{ bonus.nite.level }} +## endfor +## for bonus in map.goodrod.bonus_mons +## for condition in bonus.conditions + .byte {{ condition.object_type }} + .byte {{ condition.count }} +## endfor +## for i in range(2 - length(bonus.conditions)) + .byte 0 + .byte 0 +## endfor +## endfor +## for mon in map.superrod.mons.morn + .short {{ mon.species }} + .short {{ mon.level }} +## endfor +## for mon in map.superrod.mons.day + .short {{ mon.species }} + .short {{ mon.level }} +## endfor +## for mon in map.superrod.mons.nite + .short {{ mon.species }} + .short {{ mon.level }} +## endfor +## for bonus in map.superrod.bonus_mons + .short {{ bonus.morn.species }} + .short {{ bonus.morn.level }} +## endfor +## for bonus in map.superrod.bonus_mons + .short {{ bonus.day.species }} + .short {{ bonus.day.level }} +## endfor +## for bonus in map.superrod.bonus_mons + .short {{ bonus.nite.species }} + .short {{ bonus.nite.level }} +## endfor +## for bonus in map.superrod.bonus_mons +## for condition in bonus.conditions + .byte {{ condition.object_type }} + .byte {{ condition.count }} +## endfor +## for i in range(2 - length(bonus.conditions)) + .byte 0 + .byte 0 +## endfor +## endfor + .size sMap_{{ map.area }},.-sMap_{{ map.area }} +## endfor diff --git a/files/arc/safari_enc.mk b/files/arc/safari_enc.mk new file mode 100644 index 0000000000..67deafea3b --- /dev/null +++ b/files/arc/safari_enc.mk @@ -0,0 +1,12 @@ +SAFARI_ENC_JSON := files/arc/safari_enc.json +SAFARI_ENC_NARC := files/arc/safari_enc.narc + +$(SAFARI_ENC_NARC): $(SAFARI_ENC_JSON) $(SAFARI_ENC_JSON).txt + $(JSONPROC) $^ $*.s + $(WINE) $(MWAS) $(MWASFLAGS) -o $*.o $*.s + $(O2NARC) $*.o $@ + @$(RM) $*.s $*.o + +.PHONY: clean-safari-enc +clean-safari-enc: + rm -f $(SAFARI_ENC_NARC) diff --git a/files/a/2/3/0 b/files/arc/safari_enc.narc similarity index 100% rename from files/a/2/3/0 rename to files/arc/safari_enc.narc diff --git a/files/fielddata/script/scr_seq/scr_seq_0003.s b/files/fielddata/script/scr_seq/scr_seq_0003.s index 6a6ee12e7d..1546a2ed89 100644 --- a/files/fielddata/script/scr_seq/scr_seq_0003.s +++ b/files/fielddata/script/scr_seq/scr_seq_0003.s @@ -243,7 +243,7 @@ _034D: _0364: setflag FLAG_WAS_TOLD_ABOUT_POKERUS - scrcmd_148 1, 0 + scrcmd_148 CALL_TRIGGER_ELM_POKERUS, FALSE apply_movement obj_player, _0468 wait_movement get_player_state VAR_SPECIAL_RESULT diff --git a/files/fielddata/script/scr_seq/scr_seq_0144.s b/files/fielddata/script/scr_seq/scr_seq_0144.s index 3e702591e2..17a9f4cb67 100644 --- a/files/fielddata/script/scr_seq/scr_seq_0144.s +++ b/files/fielddata/script/scr_seq/scr_seq_0144.s @@ -160,7 +160,7 @@ _01F3: goto_if_eq _0222 callstd std_give_item_verbose scrcmd_812 - scrcmd_149 12 + unset_phone_call_trigger CALL_TRIGGER_MOM_BOUGHT_SOMETHING npc_msg msg_0209_00020 wait_button_or_walk_away closemsg diff --git a/files/fielddata/script/scr_seq/scr_seq_0265.s b/files/fielddata/script/scr_seq/scr_seq_0265.s index ab844833c4..3aa71c71d7 100644 --- a/files/fielddata/script/scr_seq/scr_seq_0265.s +++ b/files/fielddata/script/scr_seq/scr_seq_0265.s @@ -37,7 +37,7 @@ _0057: touchscreen_menu_show compare VAR_SPECIAL_RESULT, 1 goto_if_eq _0082 - setflag FLAG_UNK_99E + setflag FLAG_SYS_SUBSCRIBED_TO_EGG_CALLS npc_msg msg_0439_00015 wait_button_or_walk_away closemsg @@ -45,8 +45,8 @@ _0057: end _0082: - clearflag FLAG_UNK_99E - scrcmd_149 5 + clearflag FLAG_SYS_SUBSCRIBED_TO_EGG_CALLS + unset_phone_call_trigger CALL_TRIGGER_DAYCARE_HAS_EGG npc_msg msg_0439_00016 wait_button_or_walk_away closemsg @@ -54,7 +54,7 @@ _0082: end _0094: - scrcmd_149 5 + unset_phone_call_trigger CALL_TRIGGER_DAYCARE_HAS_EGG npc_msg msg_0439_00001 touchscreen_menu_hide getmenuchoice VAR_SPECIAL_RESULT @@ -72,7 +72,7 @@ _0094: goto_if_ne _00EB npc_msg msg_0439_00012 setvar VAR_UNK_408E, 4 - setflag FLAG_UNK_992 + setflag FLAG_SYS_TRIGGER_EGG_CALL goto _0057 _00EB: @@ -104,7 +104,7 @@ _0114: goto_if_ne _0146 npc_msg msg_0439_00011 setvar VAR_UNK_408E, 4 - setflag FLAG_UNK_992 + setflag FLAG_SYS_TRIGGER_EGG_CALL goto _0057 _0146: diff --git a/files/fielddata/script/scr_seq/scr_seq_0843_T20R0101.s b/files/fielddata/script/scr_seq/scr_seq_0843_T20R0101.s index 158b24e55b..a517f369d5 100644 --- a/files/fielddata/script/scr_seq/scr_seq_0843_T20R0101.s +++ b/files/fielddata/script/scr_seq/scr_seq_0843_T20R0101.s @@ -414,12 +414,12 @@ _0550: _055F: get_party_lead_alive VAR_TEMP_x4000 get_partymon_species VAR_TEMP_x4000, VAR_TEMP_x4001 - scrcmd_149 0 - compare VAR_TEMP_x4001, 175 + unset_phone_call_trigger CALL_TRIGGER_ELM_EGG_HATCHED + compare VAR_TEMP_x4001, SPECIES_TOGEPI goto_if_eq _0599 - compare VAR_TEMP_x4001, 176 + compare VAR_TEMP_x4001, SPECIES_TOGETIC goto_if_eq _0599 - compare VAR_TEMP_x4001, 468 + compare VAR_TEMP_x4001, SPECIES_TOGEKISS goto_if_eq _0599 goto _0637 diff --git a/filesystem.mk b/filesystem.mk index a61b9a22d4..4af9ccd81e 100644 --- a/filesystem.mk +++ b/filesystem.mk @@ -456,6 +456,7 @@ $(eval $(call arc_strip_name,files/pbr/dp_height_o.narc,files/a/1/9/5)) $(eval $(call arc_strip_name,files/resource/eng/pms_aikotoba/pms_aikotoba.narc,files/a/2/1/2)) $(eval $(call arc_strip_name,files/application/zukanlist/zkn_data/zukan_data_gira.narc,files/a/2/1/4)) $(eval $(call arc_strip_name,files/fielddata/sodateya/kowaza_list.narc,files/a/2/2/9)) +$(eval $(call arc_strip_name,files/arc/safari_enc.narc,files/a/2/3/0)) $(eval $(call arc_strip_name,files/arc/headbutt.$(buildname).narc,files/a/2/5/2)) $(eval $(call arc_strip_name,files/demo/opening/gs_opening.narc,files/a/2/6/2)) $(eval $(call arc_strip_name,files/application/voltorb_flip.narc,files/a/2/6/4)) @@ -541,6 +542,7 @@ include files/application/guinness.mk include files/demo/intro/intro.mk include files/data/namein.mk include files/data/sbox_gra.mk +include files/arc/safari_enc.mk $(filter-out $(DIFF_ARCS) $(FS_RULE_OVERRIDES),$(NITROFS_FILES)): ; diff --git a/include/constants/buildmodel.h b/include/constants/buildmodel.h new file mode 100644 index 0000000000..a5ad1cc4ce --- /dev/null +++ b/include/constants/buildmodel.h @@ -0,0 +1,345 @@ +#ifndef GUARD_POKEHEARTGOLD_CONSTANTS_BUILDMODEL_H +#define GUARD_POKEHEARTGOLD_CONSTANTS_BUILDMODEL_H + +#define BUILD_MODEL_DMYBOX00 0 +#define BUILD_MODEL_EN_FS 1 +#define BUILD_MODEL_EN_PC 2 +#define BUILD_MODEL_EN_GATE01 3 +#define BUILD_MODEL_EN_GATE02 4 +#define BUILD_MODEL_EN_GYM 5 +#define BUILD_MODEL_EN_SEKIA 6 +#define BUILD_MODEL_EN_SEKIB 7 +#define BUILD_MODEL_EN_YAKE 8 +#define BUILD_MODEL_EN_SUZU 9 +#define BUILD_MODEL_EN_KABU 10 +#define BUILD_MODEL_EN_H01A 11 +#define BUILD_MODEL_EN_H01B 12 +#define BUILD_MODEL_EN_DOOR1 13 +#define BUILD_MODEL_EN_DOOR2 14 +#define BUILD_MODEL_P_DOOR 15 +#define BUILD_MODEL_GYM_DOOR 16 +#define BUILD_MODEL_EN_DOOR3 17 +#define BUILD_MODEL_EN_SP1 18 +#define BUILD_MODEL_EN_SKY 19 +#define BUILD_MODEL_WK_HHOUSE 20 +#define BUILD_MODEL_WK_LABO 21 +#define BUILD_MODEL_WK_H01 22 +#define BUILD_MODEL_WK_H02 23 +#define BUILD_MODEL_WK_DOOR1 24 +#define BUILD_MODEL_WK_DOOR2 25 +#define BUILD_MODEL_WK_DOOR3 26 +#define BUILD_MODEL_WK_SP1 27 +#define BUILD_MODEL_WIND 28 +#define BUILD_MODEL_BOARD_A 29 +#define BUILD_MODEL_BOARD_B 30 +#define BUILD_MODEL_BOARD_C 31 +#define BUILD_MODEL_BOARD_D 32 +#define BUILD_MODEL_BOARD_E 33 +#define BUILD_MODEL_BOARD_F 34 +#define BUILD_MODEL_GATE_A 35 +#define BUILD_MODEL_GATE_B 36 +#define BUILD_MODEL_YO_H01 37 +#define BUILD_MODEL_YO_H02 38 +#define BUILD_MODEL_POLYSURFACE2 39 +#define BUILD_MODEL_POLYSURFACE2_2 40 +#define BUILD_MODEL_KN_H01 41 +#define BUILD_MODEL_KN_GATE 42 +#define BUILD_MODEL_UZUSHIO 43 +#define BUILD_MODEL_KK_GYM 44 +#define BUILD_MODEL_HW_GYM 45 +#define BUILD_MODEL_HW_H01 46 +#define BUILD_MODEL_HW_H02 47 +#define BUILD_MODEL_HW_IDO 48 +#define BUILD_MODEL_TIME_ANIME 49 +#define BUILD_MODEL_YO_DOOR1 50 +#define BUILD_MODEL_YO_SP1 51 +#define BUILD_MODEL_YO_SP2 52 +#define BUILD_MODEL_R30_H01 53 +#define BUILD_MODEL_KK_MADA 54 +#define BUILD_MODEL_KK_TOUROU 55 +#define BUILD_MODEL_KK_H01 56 +#define BUILD_MODEL_KK_DOOR1 57 +#define BUILD_MODEL_KK_SCHOOL 58 +#define BUILD_MODEL_KK_BRIDGE 59 +#define BUILD_MODEL_KK_DOOR2 60 +#define BUILD_MODEL_KK_DOOR3 61 +#define BUILD_MODEL_KK_PC 62 +#define BUILD_MODEL_KK_FS 63 +#define BUILD_MODEL_D15_OBJ 64 +#define BUILD_MODEL_D15_PILLAR 65 +#define BUILD_MODEL_D15_STAIRUP 66 +#define BUILD_MODEL_D15_STAIRDW 67 +#define BUILD_MODEL_D15_LIGHT 68 +#define BUILD_MODEL_DUN_STAIRUP 69 +#define BUILD_MODEL_DUN_STAIRDW 70 +#define BUILD_MODEL_UBA_HOKORA 71 +#define BUILD_MODEL_UBA_EDA 72 +#define BUILD_MODEL_YADO_LIGHT 73 +#define BUILD_MODEL_KO_CHIKA 74 +#define BUILD_MODEL_KO_CYCLE 75 +#define BUILD_MODEL_KO_DEPART 76 +#define BUILD_MODEL_KO_FLOWER 77 +#define BUILD_MODEL_KO_FUNSUI 78 +#define BUILD_MODEL_KO_GAME 79 +#define BUILD_MODEL_KO_GYM 80 +#define BUILD_MODEL_KO_H01 81 +#define BUILD_MODEL_KO_H02 82 +#define BUILD_MODEL_KO_H03 83 +#define BUILD_MODEL_KO_FOOT 84 +#define BUILD_MODEL_KO_OVERPASS 85 +#define BUILD_MODEL_KO_RADIO 86 +#define BUILD_MODEL_KO_SEIMEI 87 +#define BUILD_MODEL_KO_STATION 88 +#define BUILD_MODEL_KO_WIFI 89 +#define BUILD_MODEL_SNAP_CAMERA 90 +#define BUILD_MODEL_HW_DOOR1 91 +#define BUILD_MODEL_HW_DOOR2 92 +#define BUILD_MODEL_HW_MAKI 93 +#define BUILD_MODEL_KO_DOOR1 94 +#define BUILD_MODEL_KO_LIGHT 95 +#define BUILD_MODEL_KO_FLAG 96 +#define BUILD_MODEL_KO_ARCH 97 +#define BUILD_MODEL_KO_TETRA 98 +#define BUILD_MODEL_KO_BELL 99 +#define BUILD_MODEL_HW_KEMURI 100 +#define BUILD_MODEL_KO_H03X 101 +#define BUILD_MODEL_TN_H01 102 +#define BUILD_MODEL_TN_DOOR1 103 +#define BUILD_MODEL_TN_PHARMACY 104 +#define BUILD_MODEL_TN_PHOTO 105 +#define BUILD_MODEL_TN_DRIED 106 +#define BUILD_MODEL_TN_GYMBASE 107 +#define BUILD_MODEL_TN_GYM 108 +#define BUILD_MODEL_AS_H01 109 +#define BUILD_MODEL_AS_TOUDAI 110 +#define BUILD_MODEL_AS_GYM 111 +#define BUILD_MODEL_R39_MOUMOU 112 +#define BUILD_MODEL_R39_NAYA 113 +#define BUILD_MODEL_R39_DOOR1 114 +#define BUILD_MODEL_AS_BENCH 115 +#define BUILD_MODEL_TN_DOOR2 116 +#define BUILD_MODEL_OBJ_YAKETA 117 +#define BUILD_MODEL_AS_RESTAURANT 118 +#define BUILD_MODEL_AS_YACHT 119 +#define BUILD_MODEL_AS_DOOR1 120 +#define BUILD_MODEL_AS_HATA 121 +#define BUILD_MODEL_TOUDAI_SKY 122 +#define BUILD_MODEL_TOU3F_BACK 123 +#define BUILD_MODEL_ELE_DOOR_DUN 124 +#define BUILD_MODEL_MAP15_01KOKAGE 125 +#define BUILD_MODEL_FALL03_01 126 +#define BUILD_MODEL_MAP15_02KOKAGE 127 +#define BUILD_MODEL_MAP16_01KOKAGE 128 +#define BUILD_MODEL_MAP16_02KOKAGE 129 +#define BUILD_MODEL_MAP17_01KOKAGE 130 +#define BUILD_MODEL_D_UZUSHIO 131 +#define BUILD_MODEL_FU_H01 132 +#define BUILD_MODEL_FU_DOOR1 133 +#define BUILD_MODEL_CH_H01 134 +#define BUILD_MODEL_CH_DOOR1 135 +#define BUILD_MODEL_ANTENA_TREE 136 +#define BUILD_MODEL_ANTENA_TREE_ 137 +#define BUILD_MODEL_CH_GYM 138 +#define BUILD_MODEL_FU_GYM 139 +#define BUILD_MODEL_D17_TMPL 140 +#define BUILD_MODEL_D17_TPDR 141 +#define BUILD_MODEL_D22_MIZU 142 +#define BUILD_MODEL_D22_FUNSUI 143 +#define BUILD_MODEL_FALL_TOUJOU 144 +#define BUILD_MODEL_PKE_OBJ01 145 +#define BUILD_MODEL_PKE_LEAGUE 146 +#define BUILD_MODEL_PKE_GATE 147 +#define BUILD_MODEL_PKE_FLOWER 148 +#define BUILD_MODEL_PKE_DOOR1 149 +#define BUILD_MODEL_KN_DOOR1 150 +#define BUILD_MODEL_KN_DOOR2 151 +#define BUILD_MODEL_FALL_SURI 152 +#define BUILD_MODEL_AR_STUDY 153 +#define BUILD_MODEL_AR_CENTER 154 +#define BUILD_MODEL_AR_SHRINE1 155 +#define BUILD_MODEL_AR_SHRINE2 156 +#define BUILD_MODEL_AR_SHRINE3 157 +#define BUILD_MODEL_AR_SHRINE1_2 158 +#define BUILD_MODEL_AR_SHRINE1_3 159 +#define BUILD_MODEL_AR_SHRINE1_4 160 +#define BUILD_MODEL_AR_SHRINE1_5 161 +#define BUILD_MODEL_AR_SHRINE1_6 162 +#define BUILD_MODEL_AR_SHRINE1_7 163 +#define BUILD_MODEL_AR_STUDY_DOOR 164 +#define BUILD_MODEL_R34_EDUCATE 165 +#define BUILD_MODEL_R34_DOOR1 166 +#define BUILD_MODEL_AS_AQUAGATE 167 +#define BUILD_MODEL_AQUA_GO 168 +#define BUILD_MODEL_OBJECT_SUZU 169 +#define BUILD_MODEL_FALL_R47 170 +#define BUILD_MODEL_MSG_GTMN 171 +#define BUILD_MODEL_MSG_GTOB 172 +#define BUILD_MODEL_MSG_TN01 173 +#define BUILD_MODEL_MSG_TN02 174 +#define BUILD_MODEL_MSG_TN03 175 +#define BUILD_MODEL_MSG_TN04 176 +#define BUILD_MODEL_WARP_J01 177 +#define BUILD_MODEL_POKE_C_BENCH 178 +#define BUILD_MODEL_POKE_C_DOME 179 +#define BUILD_MODEL_POKE_C_FLOWER 180 +#define BUILD_MODEL_POKE_C_GATE 181 +#define BUILD_MODEL_POKE_C_LIGHT 182 +#define BUILD_MODEL_POKE_C_MON 183 +#define BUILD_MODEL_POKE_C_OBJ 184 +#define BUILD_MODEL_SG_DOOR_OP 185 +#define BUILD_MODEL_D17_LIGHT 186 +#define BUILD_MODEL_SROOF_BACK 187 +#define BUILD_MODEL_KU_GYM 188 +#define BUILD_MODEL_SAF_GO01 189 +#define BUILD_MODEL_SAF_GO02 190 +#define BUILD_MODEL_SAF_GO03 191 +#define BUILD_MODEL_SAF_TO01 192 +#define BUILD_MODEL_SAF_TO02 193 +#define BUILD_MODEL_SAF_TO03 194 +#define BUILD_MODEL_SAF_RO01 195 +#define BUILD_MODEL_SAF_RO02 196 +#define BUILD_MODEL_SAF_RO03 197 +#define BUILD_MODEL_SAF_WO01 198 +#define BUILD_MODEL_SAF_WO02 199 +#define BUILD_MODEL_SAF_WO03 200 +#define BUILD_MODEL_SAF_EO01 201 +#define BUILD_MODEL_SAF_EO02 202 +#define BUILD_MODEL_SAF_EO03 203 +#define BUILD_MODEL_SAF_EO04 204 +#define BUILD_MODEL_SAF_EO05 205 +#define BUILD_MODEL_SAF_EO06 206 +#define BUILD_MODEL_SAF_EO07M 207 +#define BUILD_MODEL_SAF_EO07F 208 +#define BUILD_MODEL_SAF_EO08M 209 +#define BUILD_MODEL_SAF_EO08F 210 +#define BUILD_MODEL_SAF_EO09 211 +#define BUILD_MODEL_SAF_EO10 212 +#define BUILD_MODEL_SAF_EO11 213 +#define BUILD_MODEL_SAF_EO12 214 +#define BUILD_MODEL_KBC_H01 215 +#define BUILD_MODEL_KBC_H02 216 +#define BUILD_MODEL_KBC_LOVE 217 +#define BUILD_MODEL_KBC_PORT 218 +#define BUILD_MODEL_KBC_GYM 219 +#define BUILD_MODEL_GYM_DOOR_KN 220 +#define BUILD_MODEL_KBC_DR01 221 +#define BUILD_MODEL_KBC_DR02 222 +#define BUILD_MODEL_KBC_SL 223 +#define BUILD_MODEL_POKE_C_DOOR 224 +#define BUILD_MODEL_KBC_DR03 225 +#define BUILD_MODEL_POKE_C_DOME2 226 +#define BUILD_MODEL_EN_LIGHT 227 +#define BUILD_MODEL_D36_00_00 228 +#define BUILD_MODEL_D36_00_01 229 +#define BUILD_MODEL_D36_00_02 230 +#define BUILD_MODEL_D36_01_00 231 +#define BUILD_MODEL_D36_01_01 232 +#define BUILD_MODEL_D36_01_02 233 +#define BUILD_MODEL_FU_MON 234 +#define BUILD_MODEL_FU_ROCK 235 +#define BUILD_MODEL_TA_H01 236 +#define BUILD_MODEL_TA_H02 237 +#define BUILD_MODEL_TA_H03 238 +#define BUILD_MODEL_TA_FOUNTAIN 239 +#define BUILD_MODEL_TA_GIFT 240 +#define BUILD_MODEL_TA_GAME 241 +#define BUILD_MODEL_TA_DEPART 242 +#define BUILD_MODEL_TA_RESTAURANT 243 +#define BUILD_MODEL_TA_MANSION 244 +#define BUILD_MODEL_TA_GYM 245 +#define BUILD_MODEL_KN_GATE_A 246 +#define BUILD_MODEL_KN_GATE_B 247 +#define BUILD_MODEL_AS_LIGHT 248 +#define BUILD_MODEL_CH_MIHARI 249 +#define BUILD_MODEL_YA_GYM 250 +#define BUILD_MODEL_YBC_H01 251 +#define BUILD_MODEL_YBC_H02 252 +#define BUILD_MODEL_YBC_H03 253 +#define BUILD_MODEL_YBC_H04 254 +#define BUILD_MODEL_YBC_FGM 255 +#define BUILD_MODEL_YBC_LNR 256 +#define BUILD_MODEL_YBC_SLF 257 +#define BUILD_MODEL_YBC_MMC 258 +#define BUILD_MODEL_YBC_DOR1 259 +#define BUILD_MODEL_YBC_DOR2 260 +#define BUILD_MODEL_YBC_DOR3 261 +#define BUILD_MODEL_D31_S01 262 +#define BUILD_MODEL_D32_S01 263 +#define BUILD_MODEL_D32_S02 264 +#define BUILD_MODEL_D32_S03 265 +#define BUILD_MODEL_D32_S04 266 +#define BUILD_MODEL_D32_S05 267 +#define BUILD_MODEL_D32_S06 268 +#define BUILD_MODEL_GYM_DOOR00 269 +#define BUILD_MODEL_D32_HATA 270 +#define BUILD_MODEL_GATE_POKES 271 +#define BUILD_MODEL_BF_H01 272 +#define BUILD_MODEL_BF_DOOR1 273 +#define BUILD_MODEL_TAFL04_DOOR1 274 +#define BUILD_MODEL_TAFL04_H01 275 +#define BUILD_MODEL_HA_H01A 276 +#define BUILD_MODEL_HA_H01B 277 +#define BUILD_MODEL_HA_CYCLE 278 +#define BUILD_MODEL_MISAKI_H01 279 +#define BUILD_MODEL_SI_H01 280 +#define BUILD_MODEL_SI_RADIO 281 +#define BUILD_MODEL_SI_TEMP 282 +#define BUILD_MODEL_KN_POWER 283 +#define BUILD_MODEL_HA_GYM 284 +#define BUILD_MODEL_SI_GYM 285 +#define BUILD_MODEL_HA_DR01 286 +#define BUILD_MODEL_MSK_DR01 287 +#define BUILD_MODEL_SI_DOOR1 288 +#define BUILD_MODEL_SI_DOOR2 289 +#define BUILD_MODEL_KN_CHIKA 290 +#define BUILD_MODEL_A13_ANEMO 291 +#define BUILD_MODEL_NBC_H01 292 +#define BUILD_MODEL_NBC_MSEM 293 +#define BUILD_MODEL_NBC_GYM 294 +#define BUILD_MODEL_SE_PALPARK 295 +#define BUILD_MODEL_UZU_TAKI 296 +#define BUILD_MODEL_SK_H01 297 +#define BUILD_MODEL_SK_H02 298 +#define BUILD_MODEL_SK_H03 299 +#define BUILD_MODEL_SK_GYM 300 +#define BUILD_MODEL_NBC_DR1 301 +#define BUILD_MODEL_CL_SLHT 302 +#define BUILD_MODEL_CL_STBG 303 +#define BUILD_MODEL_OBJ_HOSZ 304 +#define BUILD_MODEL_OBJ_LGSZ 305 +#define BUILD_MODEL_SK_DOOR1 306 +#define BUILD_MODEL_SK_DOOR2 307 +#define BUILD_MODEL_KN_GATE_L 308 +#define BUILD_MODEL_KN_GATE_R 309 +#define BUILD_MODEL_MST_DR1 310 +#define BUILD_MODEL_MST_DR2 311 +#define BUILD_MODEL_MST_GRH 312 +#define BUILD_MODEL_MST_RDH 313 +#define BUILD_MODEL_MST_OKL 314 +#define BUILD_MODEL_TO_H01 315 +#define BUILD_MODEL_TO_H02 316 +#define BUILD_MODEL_TO_TRAINER 317 +#define BUILD_MODEL_TO_GYM 318 +#define BUILD_MODEL_DSM_FAL1 319 +#define BUILD_MODEL_DSM_FAL2 320 +#define BUILD_MODEL_DSM_BG1 321 +#define BUILD_MODEL_O_MOON 322 +#define BUILD_MODEL_FALL_FUTAGO 323 +#define BUILD_MODEL_MD52K_01 324 +#define BUILD_MODEL_MD52G_01 325 +#define BUILD_MODEL_MD52R_01 326 +#define BUILD_MODEL_TAFL_LIGHT 327 +#define BUILD_MODEL_MSP_F 328 +#define BUILD_MODEL_TKWA_SL 329 +#define BUILD_MODEL_YMBK_SL 330 +#define BUILD_MODEL_HNDA_SL 331 +#define BUILD_MODEL_TMMS_SL 332 +#define BUILD_MODEL_SKTK_SL 333 +#define BUILD_MODEL_NIBI_SL 334 +#define BUILD_MODEL_SINTO_H01 335 +#define BUILD_MODEL_SINTO_DOOR1 336 +#define BUILD_MODEL_MS01_P01 337 +#define BUILD_MODEL_RADIO 338 +#define BUILD_MODEL_KN_CHIKA_X 339 + +#endif // GUARD_POKEHEARTGOLD_CONSTANTS_BUILDMODEL_H diff --git a/include/constants/flags.h b/include/constants/flags.h index fc8459fe11..22ee8ff77f 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -1739,8 +1739,8 @@ #define FLAG_SYS_CIANWOOD_WATERFALL_DISABLE 0x981 #define FLAG_UNK_982 0x982 #define FLAG_SYS_HATCHED_TOGEPI_EGG 0x983 -#define FLAG_UNK_984 0x984 -#define FLAG_UNK_985 0x985 +#define FLAG_SYS_GOT_BIKE_SHOP_CALL 0x984 +#define FLAG_SYS_GOT_BILL_PC_FULL_CALL 0x985 #define FLAG_SYS_MOMS_SAVINGS 0x986 #define FLAG_SYS_OAK_ACKNOWLEDGED_JOHTO_DEX_COMPLETION 0x987 #define FLAG_SYS_OAK_ACKNOWLEDGED_NATIONAL_DEX_COMPLETION 0x988 @@ -1753,7 +1753,7 @@ #define FLAG_UNK_98F 0x98F #define FLAG_UNK_990 0x990 #define FLAG_UNK_991 0x991 -#define FLAG_UNK_992 0x992 +#define FLAG_SYS_TRIGGER_EGG_CALL 0x992 #define FLAG_BUG_CONTEST_ACTIVE 0x993 #define FLAG_UNK_994 0x994 #define FLAG_UNK_995 0x995 @@ -1765,7 +1765,7 @@ #define FLAG_ROCKET_TAKEOVER_ACTIVE 0x99B #define FLAG_UNK_99C 0x99C #define FLAG_UNK_99D 0x99D -#define FLAG_UNK_99E 0x99E +#define FLAG_SYS_SUBSCRIBED_TO_EGG_CALLS 0x99E #define FLAG_UNK_99F 0x99F #define FLAG_UNK_9A0 0x9A0 #define FLAG_UNK_9A1 0x9A1 diff --git a/include/constants/phone_constants.h b/include/constants/phone_constants.h new file mode 100644 index 0000000000..3162e15d7d --- /dev/null +++ b/include/constants/phone_constants.h @@ -0,0 +1,19 @@ +#ifndef GUARD_POKEHEARTGOLD_CONSTANTS_PHONE_CONSTANTS_H +#define GUARD_POKEHEARTGOLD_CONSTANTS_PHONE_CONSTANTS_H + +#define CALL_TRIGGER_ELM_EGG_HATCHED 0 +#define CALL_TRIGGER_ELM_POKERUS 1 +#define CALL_TRIGGER_BIKE_SHOP_STEPS 2 +#define CALL_TRIGGER_BILL_PC_FULL 3 +#define CALL_TRIGGER_OAK_DEX_PROGRESS 4 +#define CALL_TRIGGER_DAYCARE_HAS_EGG 5 +#define CALL_TRIGGER_BAOBA_NEW_POKEMON 6 +#define CALL_TRIGGER_BAOBA_NEXT_TEST 7 +#define CALL_TRIGGER_BAOBA_OBJECT_ARRANGEMENT 8 +#define CALL_TRIGGER_BAOBA_MORE_OBJECTS 9 +#define CALL_TRIGGER_BAOBA_EVEN_MORE_OBJECTS 10 +#define CALL_TRIGGER_BAOBA_MEMORY_LOSS 11 +#define CALL_TRIGGER_MOM_BOUGHT_SOMETHING 12 +#define NUM_CALL_TRIGGERS 13 + +#endif // GUARD_POKEHEARTGOLD_CONSTANTS_PHONE_CONSTANTS_H diff --git a/include/constants/safari.h b/include/constants/safari.h new file mode 100644 index 0000000000..5533081a8b --- /dev/null +++ b/include/constants/safari.h @@ -0,0 +1,58 @@ +#ifndef GUARD_POKEHEARTGOLD_CONSTANTS_SAFARI_H +#define GUARD_POKEHEARTGOLD_CONSTANTS_SAFARI_H + +#define SAFARI_ZONE_MAX_OBJECTS 30 +#define SAFARI_ZONE_AREA_SET_COLS 3 +#define SAFARI_ZONE_AREA_SET_ROWS 2 +#define SAFARI_ZONE_MAX_AREAS_PER_SET (SAFARI_ZONE_AREA_SET_COLS * SAFARI_ZONE_AREA_SET_ROWS) +#define SAFARI_ZONE_MAX_AREA_SETS 2 + +#define SAFARI_ZONE_AREA_PLAINS 0 +#define SAFARI_ZONE_AREA_MEADOW 1 +#define SAFARI_ZONE_AREA_SAVANNAH 2 +#define SAFARI_ZONE_AREA_PEAK 3 +#define SAFARI_ZONE_AREA_ROCKY_BEACH 4 +#define SAFARI_ZONE_AREA_WETLAND 5 +#define SAFARI_ZONE_AREA_FOREST 6 +#define SAFARI_ZONE_AREA_SWAMP 7 +#define SAFARI_ZONE_AREA_MARSHLAND 8 +#define SAFARI_ZONE_AREA_WASTELAND 9 +#define SAFARI_ZONE_AREA_MOUNTAIN 10 +#define SAFARI_ZONE_AREA_DESERT 11 +#define NUM_SAFARI_ZONE_AREAS 12 + +#define SAFARI_ZONE_OBJECT_TYPE_NONE 0 +#define SAFARI_ZONE_OBJECT_TYPE_PLAINS 1 +#define SAFARI_ZONE_OBJECT_TYPE_FOREST 2 +#define SAFARI_ZONE_OBJECT_TYPE_PEAK 3 +#define SAFARI_ZONE_OBJECT_TYPE_WATER 4 + +#define SAFARI_ZONE_OBJECTID_SHRUBBERY 0 +#define SAFARI_ZONE_OBJECTID_RED_FLOWER 1 +#define SAFARI_ZONE_OBJECTID_WHITE_FLOWER 2 +#define SAFARI_ZONE_OBJECTID_TREE 3 +#define SAFARI_ZONE_OBJECTID_STUMP 4 +#define SAFARI_ZONE_OBJECTID_BRANCHES 5 +#define SAFARI_ZONE_OBJECTID_SMALL_ROCK 6 +#define SAFARI_ZONE_OBJECTID_BIG_ROCK 7 +#define SAFARI_ZONE_OBJECTID_MOSSY_ROCK 8 +#define SAFARI_ZONE_OBJECTID_PUDDLE 9 +#define SAFARI_ZONE_OBJECTID_FOUNTAIN 10 +#define SAFARI_ZONE_OBJECTID_WATER_HOLE 11 +#define SAFARI_ZONE_OBJECTID_BENCH 12 +#define SAFARI_ZONE_OBJECTID_SHORT_FENCE1 13 +#define SAFARI_ZONE_OBJECTID_SHORT_FENCE2 14 +#define SAFARI_ZONE_OBJECTID_LONG_FENCE1 15 +#define SAFARI_ZONE_OBJECTID_LONG_FENCE2 16 +#define SAFARI_ZONE_OBJECTID_SIGNBOARD 17 +#define SAFARI_ZONE_OBJECTID_YOUR_STATUE 18 +#define SAFARI_ZONE_OBJECTID_YOUR_FLAG 19 +#define SAFARI_ZONE_OBJECTID_OUTSIDE_LAMP 20 +#define SAFARI_ZONE_OBJECTID_GUIDEPOST_R_ 21 +#define SAFARI_ZONE_OBJECTID_GUIDEPOST_L_ 22 +#define SAFARI_ZONE_OBJECTID_TRASH_CAN 23 +#define NUM_SAFARI_ZONE_OBJECT_IDS 24 + +#define NUM_ENCOUNTERS_SAFARI 10 + +#endif // GUARD_POKEHEARTGOLD_CONSTANTS_SAFARI_H diff --git a/include/constants/scrcmd.h b/include/constants/scrcmd.h index e99374fda8..65c99ca5cc 100644 --- a/include/constants/scrcmd.h +++ b/include/constants/scrcmd.h @@ -8,10 +8,12 @@ #include "constants/game_stats.h" #include "constants/global.h" #include "constants/global_fieldmap.h" +#include "constants/init_script_types.h" #include "constants/items.h" #include "constants/maps.h" #include "constants/movements.h" #include "constants/moves.h" +#include "constants/phone_constants.h" #include "constants/phone_contacts.h" #include "constants/pokemon.h" #include "constants/ranking.h" @@ -23,7 +25,6 @@ #include "constants/std_script.h" #include "constants/trainers.h" #include "constants/vars.h" -#include "constants/init_script_types.h" #define lt 0 #define eq 1 diff --git a/include/field/encounter_check.h b/include/field/encounter_check.h new file mode 100644 index 0000000000..ab49af16f6 --- /dev/null +++ b/include/field/encounter_check.h @@ -0,0 +1,16 @@ +#ifndef GUARD_POKEHEARTGOLD_FIELD_ENCOUNTER_CHECK_H +#define GUARD_POKEHEARTGOLD_FIELD_ENCOUNTER_CHECK_H + +#include "field/headbutt.h" + +#include "field_system.h" + +BOOL FieldSystem_PerformLandOrSurfEncounterCheck(FieldSystem *fieldSystem); +BOOL FieldSystem_PerformFishEncounterCheck(FieldSystem *fieldSystem, u8 rodType, BattleSetup **pBattleSetup); +BOOL FieldSystem_PerformRockSmashEncounterCheck(FieldSystem *fieldSystem, BattleSetup **pBattleSetup); +BOOL FieldSystem_PerformSweetScentEncounterCheck(FieldSystem *fieldSystem, TaskManager *taskManager); +BOOL FieldSystem_PerformHeadbuttEncounterCheck(FieldSystem *fieldSystem, BattleSetup **pBattleSetup, const HeadbuttSlot *headbuttSlots); +void FieldSystem_GenerateSingleWildPokemon(FieldSystem *fieldSystem, u16 species, u8 level, BOOL shiny, BattleSetup *battleSetup); +BOOL FieldSystem_CanGenerateStepEncounter(FieldSystem *fieldSystem, u8 metatileBehavior); + +#endif // GUARD_POKEHEARTGOLD_FIELD_ENCOUNTER_CHECK_H diff --git a/include/field/headbutt.h b/include/field/headbutt.h index 0d066adce8..2aaa97cab1 100644 --- a/include/field/headbutt.h +++ b/include/field/headbutt.h @@ -3,6 +3,8 @@ #include "global.h" +#define NUM_ENCOUNTERS_HEADBUTT 6 + typedef struct HeadbuttSlot { u16 species; u8 minLevel; @@ -12,9 +14,9 @@ typedef struct HeadbuttSlot { typedef struct HeadbuttEncounterData { u16 numRegularTrees; u16 numSecretTrees; - HeadbuttSlot common[6]; - HeadbuttSlot rare[6]; - HeadbuttSlot secret[6]; + HeadbuttSlot common[NUM_ENCOUNTERS_HEADBUTT]; + HeadbuttSlot rare[NUM_ENCOUNTERS_HEADBUTT]; + HeadbuttSlot secret[NUM_ENCOUNTERS_HEADBUTT]; s16 treeCoords[][2]; } HeadbuttEncounterData; diff --git a/include/field_system.h b/include/field_system.h index c1a7ec085c..3572d51735 100644 --- a/include/field_system.h +++ b/include/field_system.h @@ -50,7 +50,7 @@ struct GearPhoneRingManager { u8 isScriptedCall; u8 callScriptID; u8 unk_arr5[2]; - u8 unk_var7; + u8 callTriggerID; s32 unk_var8; s32 unk_varC; u16 maxActiveDuration; @@ -135,9 +135,9 @@ struct FieldSystem { int unk70; const struct UnkStruct_020FC5CC *unk74; u16 unk78; - u16 unk7A; - u16 unk7C; - u16 unk7E; + u16 lastFacingDirection; // 0x7A, used to determine whether the following field should be incremented + u16 reverseTurnFrameSteps; // 0x7C, turning back and forth in place will increase the effective encounter rate + u16 encounterInhibitSteps; // 0x7E, don't generate an encounter in the first 4 steps on a new map struct UnkStruct_02059E1C *unk80; struct UnkStruct_0205AC88 *unk84; u8 filler_88[0x8]; diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h index ad44babd9d..588b4b9fdb 100644 --- a/include/metatile_behavior.h +++ b/include/metatile_behavior.h @@ -51,7 +51,7 @@ BOOL sub_0205B918(u8 tile); BOOL sub_0205B93C(u8 tile); BOOL sub_0205B960(u8 tile); BOOL sub_0205B984(u8 tile); -BOOL sub_0205B994(u8 tile); +BOOL MetatileBehavior_CanGenerateWalkingEncounters(u8 tile); BOOL sub_0205B9AC(u8 tile); BOOL sub_0205B9B8(u8 tile); BOOL sub_0205B9DC(u8 tile); diff --git a/include/overlay_01.h b/include/overlay_01.h index cf6547a452..3679ffaaba 100644 --- a/include/overlay_01.h +++ b/include/overlay_01.h @@ -12,6 +12,11 @@ struct ErrorContinueEnv { Location location; }; +#define ROD_TYPE_OLD 0 +#define ROD_TYPE_GOOD 1 +#define ROD_TYPE_SUPER 2 +#define ROD_TYPE_NONE 0xFF + struct FishingRodWork; // TODO: does this struct have more members? diff --git a/include/overlay_02.h b/include/overlay_02.h index 6085483acd..60f3d99ca2 100644 --- a/include/overlay_02.h +++ b/include/overlay_02.h @@ -75,13 +75,11 @@ void ov02_022507B4(FieldSystem *fieldSystem, u8 a1); void ov02_022508B4(FieldSystem *fieldSystem); void ov02_022523B4(TaskManager *taskManager); -BOOL ov02_022470A0(FieldSystem *fieldSystem, BattleSetup **setupPtr); void ov02_BattleExit_HandleRoamerAction(FieldSystem *fieldSystem, BattleSetup *setup); -BOOL FieldSystem_ChooseHeadbuttEncounter(FieldSystem *fieldSystem, BattleSetup **setup, const HeadbuttSlot *headbuttSlots); -void ov02_02247F30(FieldSystem *fieldSystem, u16 mon, u8 level, BOOL shiny, BattleSetup *setup); void ov02_02246714(TaskManager *man, u32 a1, u32 a2, u32 a3, u32 a4); void ov02_022469B4(TaskManager *man, LocalMapObject *obj1, LocalMapObject *obj2); void OpenAlphHiddenRoom(TaskManager *man, u32 a1); +int ov02_0224E340(FieldSystem *fieldSystem); SafariDecorationArgs *SafariDecoration_CreateArgs(FieldSystem *fieldSystem, enum HeapID heapID); diff --git a/include/overlay_2/overlay_02_gear_phone.h b/include/overlay_2/overlay_02_gear_phone.h index bda4410ebc..fce7052abf 100644 --- a/include/overlay_2/overlay_02_gear_phone.h +++ b/include/overlay_2/overlay_02_gear_phone.h @@ -1,13 +1,25 @@ #ifndef POKEHEARTGOLD_OVERLAY_02_GEAR_PHONE_H #define POKEHEARTGOLD_OVERLAY_02_GEAR_PHONE_H +#include "constants/phone_constants.h" + #include "field_system.h" #include "unk_02092BE8.h" +enum RadioMusicPlayingSeq { + RADIO_MUSIC_SEQ_NONE = 0, + RADIO_MUSIC_SEQ_MARCH, + RADIO_MUSIC_SEQ_LULLABY, + RADIO_MUSIC_SEQ_HOENN_SOUNDS, + RADIO_MUSIC_SEQ_SINNOH_SOUNDS, + RADIO_MUSIC_SEQ_POKEFLUTE, + RADIO_MUSIC_SEQ_UNOWN, +}; + String *GetPhoneBookEntryName(GearPhoneRingManager *gearPhone, enum HeapID heapID); void GearPhoneRingManager_SetCallerParams(GearPhoneRingManager *phoneRingManager, u8 callerId, u8 a2, u8 a3, u8 a4, u8 a5); u8 ov02_02251EE8(GearPhoneRingManager *gearPhone, Unk_PokegearSTRUCT_14 *a1); BOOL ov02_02251F20(GearPhoneRingManager *gearPhone); -int GetRadioMusicPlayingSeq(void); +enum RadioMusicPlayingSeq GetRadioMusicPlayingSeq(void); #endif diff --git a/include/pokemon.h b/include/pokemon.h index f5ebba2016..aee196eea8 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -45,7 +45,7 @@ void CreateBoxMon(BoxPokemon *boxMon, int species, int level, int fixedIV, int h void CreateMonWithNature(Pokemon *mon, u16 species, u8 level, u8 fixedIv, u8 nature); void CreateMonWithGenderNatureLetter(Pokemon *mon, u16 species, u8 level, u8 fixedIv, u8 gender, u8 nature, u8 letter); u32 GenPersonalityByGenderAndNature(u16 species, u8 gender, u8 nature); -void CreateMonWithFixedIVs(Pokemon *mon, int species, int level, int ivs, int personality); +void CreateMonWithFixedIVs(Pokemon *mon, u16 species, u8 level, u32 ivs, u32 personality); void CalcMonLevelAndStats(Pokemon *mon); void CalcMonStats(Pokemon *mon); u32 GetMonData(Pokemon *mon, int attr, void *ptr); @@ -176,7 +176,7 @@ void sub_020720FC(Pokemon *mon, PlayerProfile *a1, u32 pokeball, u32 a3, u32 enc void sub_0207213C(BoxPokemon *boxMon, PlayerProfile *playerProfile, u32 pokeball, u32 a3, u32 encounterType, enum HeapID heapID); void sub_0207217C(Pokemon *mon, PlayerProfile *a1, u32 pokeball, u32 a3, u32 encounterType, enum HeapID heapID); void sub_02072190(BoxPokemon *boxMon, PlayerProfile *a1, u32 pokeball, u32 a3, u32 encounterType, enum HeapID heapID); -void WildMonSetRandomHeldItem(Pokemon *mon, u32 a1, u32 a2); +void WildMonSetRandomHeldItem(Pokemon *mon, u32 battleType, u32 isCompoundEyes); BOOL GetMonTMHMCompat(Pokemon *mon, u8 tmhm); BOOL GetBoxMonTMHMCompat(BoxPokemon *boxMon, u8 tmhm); BOOL GetTMHMCompatBySpeciesAndForm(u16 species, u32 form, u8 tmhm); diff --git a/include/safari_zone.h b/include/safari_zone.h index c258da0fd8..75b0643c8f 100644 --- a/include/safari_zone.h +++ b/include/safari_zone.h @@ -1,29 +1,12 @@ #ifndef POKEHEARTGOLD_SAFARI_ZONE_H #define POKEHEARTGOLD_SAFARI_ZONE_H +#include "constants/safari.h" + #include "igt.h" #include "player_data.h" #include "save.h" -#define SAFARI_ZONE_MAX_OBJECTS 30 -#define SAFARI_ZONE_AREA_SET_COLS 3 -#define SAFARI_ZONE_AREA_SET_ROWS 2 -#define SAFARI_ZONE_MAX_AREAS_PER_SET (SAFARI_ZONE_AREA_SET_COLS * SAFARI_ZONE_AREA_SET_ROWS) -#define SAFARI_ZONE_MAX_AREA_SETS 2 - -#define SAFARI_ZONE_AREA_PLAINS 0 -#define SAFARI_ZONE_AREA_MEADOW 1 -#define SAFARI_ZONE_AREA_SAVANNAH 2 -#define SAFARI_ZONE_AREA_PEAK 3 -#define SAFARI_ZONE_AREA_ROCKY_BEACH 4 -#define SAFARI_ZONE_AREA_WETLAND 5 -#define SAFARI_ZONE_AREA_FOREST 6 -#define SAFARI_ZONE_AREA_SWAMP 7 -#define SAFARI_ZONE_AREA_MARSHLAND 8 -#define SAFARI_ZONE_AREA_WASTELAND 9 -#define SAFARI_ZONE_AREA_MOUNTAIN 10 -#define SAFARI_ZONE_AREA_DESERT 11 - typedef struct SAFARIZONE_OBJECT { u8 unk[4]; } SAFARIZONE_OBJECT; @@ -36,7 +19,7 @@ typedef struct SAFARIZONE_AREA { typedef struct SAFARIZONE_AREASET { SAFARIZONE_AREA areas[SAFARI_ZONE_MAX_AREAS_PER_SET]; - u8 unk2DC[12]; + u8 areaLevels[NUM_SAFARI_ZONE_AREAS]; } SAFARIZONE_AREASET; typedef struct SAFARIZONE_LINKLEADER { @@ -68,9 +51,9 @@ u8 sub_0202F620(SafariZone *safari_zone); SAFARIZONE_AREASET *SafariZone_GetAreaSet(SafariZone *safari_zone, s32 area_set_no); void SafariZone_CopyAreaSet(SafariZone *safari_zone, s32 area_set_no, SAFARIZONE_AREASET *area_set_dest); void SafariZone_SetAreaSet(SafariZone *safari_zone, s32 area_set_no, SAFARIZONE_AREASET *area_set_src); -void sub_0202F6A0(SafariZone *safari_zone, u8 a1); -u8 sub_0202F6AC(SafariZone *safari_zone); -void sub_0202F6B8(SAFARIZONE_AREASET *area_set, s32 a1); +void SafariZone_SetLevel(SafariZone *safari_zone, u8 a1); +u8 SafariZone_GetLevel(SafariZone *safari_zone); +void SafariZone_AddToAllAreaLevels(SafariZone *safariZone, s32 a1); u8 SafariZone_GetObjectUnlockLevel(SafariZone *safari_zone); u8 SafariZone_IncObjectUnlockLevel(SafariZone *safari_zone, s32 a1); void SafariZone_SetObjectUnlockLevel(SafariZone *safari_zone, u8 a1); diff --git a/include/save_pokegear.h b/include/save_pokegear.h index 38540ba02f..76b99aa60e 100644 --- a/include/save_pokegear.h +++ b/include/save_pokegear.h @@ -34,7 +34,7 @@ typedef struct PhoneCallPersistentState { u8 kenjiActive : 1; u8 numSafariAreas; u8 safariAreas[6]; - u8 unk_14E[2]; + u8 callTriggerFlags[2]; u8 filler_150[4]; } PhoneCallPersistentState; // size=0x154 @@ -82,9 +82,9 @@ void SavePokegear_RegisterPhoneNumber(SavePokegear *pokegear, u8 contact); PhoneContact *SavePokegear_AllocAndCopyPhonebook(SavePokegear *pokegear, enum HeapID heapID); void SavePokegear_SetPhonebookFromBuffer(SavePokegear *pokegear, PhoneContact *contacts, u8 num); -void sub_0202F01C(PhoneCallPersistentState *callPersistentState, u8 idx); -void sub_0202F050(PhoneCallPersistentState *callPersistentState, u8 idx); -BOOL sub_0202F08C(PhoneCallPersistentState *callPersistentState, u8 idx); +void PhoneCallPersistentState_SetCallTriggerFlag(PhoneCallPersistentState *callPersistentState, u8 idx); +void PhoneCallPersistentState_ClearCallTriggerFlag(PhoneCallPersistentState *callPersistentState, u8 idx); +BOOL PhoneCallPersistentState_CheckCallTriggerFlag(PhoneCallPersistentState *callPersistentState, u8 idx); void PhoneCallPersistentState_PhoneRematches_SetSeeking(PhoneCallPersistentState *callPersistentState, u8 idx, BOOL state); BOOL PhoneCallPersistentState_PhoneRematches_IsSeeking(PhoneCallPersistentState *callPersistentState, u8 idx); void PhoneCallPersistentState_PhoneRematches_GiftItemIdSet(PhoneCallPersistentState *callPersistentState, u8 idx, u16 itemId); diff --git a/include/sys_flags.h b/include/sys_flags.h index 0112ad231b..72b88d2509 100644 --- a/include/sys_flags.h +++ b/include/sys_flags.h @@ -23,7 +23,7 @@ void Save_VarsFlags_ClearRocketCostumeFlag(SaveVarsFlags *state); BOOL Save_VarsFlags_CheckRocketCostumeFlag(SaveVarsFlags *state); BOOL EventFlagCheck_RematchGroup(SaveVarsFlags *state, u16 flag_id); void Save_VarsFlags_SetAlphPuzzleFlag(SaveVarsFlags *state, u8 flag); -BOOL Save_VarsFlags_CheckAlphPuzzleFlag(SaveVarsFlags *state, u8 flag); +BOOL Save_VarsFlags_CheckAlphPuzzleFlag(SaveVarsFlags *state, int flag); void Save_VarsFlags_MomsSavingsFlagAction(SaveVarsFlags *state, BOOL set); BOOL Save_VarsFlags_MomsSavingsFlagCheck(SaveVarsFlags *state); u16 GetOverriddenMapMusic(SaveVarsFlags *state, u32 map_no); diff --git a/include/unk_0205CB48.h b/include/unk_0205CB48.h index 34b67a6080..c3d0373bbe 100644 --- a/include/unk_0205CB48.h +++ b/include/unk_0205CB48.h @@ -9,5 +9,6 @@ void PlayerAvatar_MoveControl(PlayerAvatar *playerAvatar, FieldSystemUnkSub2C *a void sub_0205CF44(PlayerAvatar *playerAvatar); BOOL sub_0205CF60(PlayerAvatar *playerAvatar); void sub_0205CFBC(PlayerAvatar *playerAvatar, int direction); +BOOL sub_0205DE98(PlayerAvatar *playerAvatar); #endif // POKEHEARTGOLD_UNK_0205CB48_H diff --git a/include/unk_02092BE8.h b/include/unk_02092BE8.h index f6c76a8928..f43b1ccb2f 100644 --- a/include/unk_02092BE8.h +++ b/include/unk_02092BE8.h @@ -35,7 +35,7 @@ typedef struct PokegearArgs { typedef struct UnkPokegearstruct_14 { u8 unk_0; u8 unk_1; - u8 unk_2; + u8 callTriggerID; u8 isScriptedCall; u8 callScriptID; } Unk_PokegearSTRUCT_14; diff --git a/include/unk_02097268.h b/include/unk_02097268.h index 62f380bc4c..0bc11509fe 100644 --- a/include/unk_02097268.h +++ b/include/unk_02097268.h @@ -1,8 +1,28 @@ #ifndef POKEHEARTGOLD_UNK_02097268_H #define POKEHEARTGOLD_UNK_02097268_H +#include "gf_rtc.h" +#include "overlay_01.h" +#include "safari_zone.h" #include "save.h" +#include "wild_encounter.h" -void sub_0209730C(SaveData *, int); +#define SAFARI_ENCOUNTER_SLOTS_LAND 0 +#define SAFARI_ENCOUNTER_SLOTS_SURFING 1 +#define SAFARI_ENCOUNTER_SLOTS_ROD(rod_type) (2 + (rod_type)) +#define NUM_SAFARI_ENCOUNTER_TYPES 5 + +typedef struct SafariObjectConfig { + u8 buildModel; + u8 isAnimated : 1; + u8 width : 3; + u8 height : 3; + u8 hasGenderedLayout : 1; + u8 objectType; +} SafariObjectConfig; + +void GetSafariObjectConfig(SafariObjectConfig *a0, int a1, BOOL a2); +void SaveData_SafariZone_CheckAreasWithUpdatedEncounters(SaveData *saveData, int a1); +ENC_SLOT *SafariZoneAreaSet_LoadAreaEncounters(SAFARIZONE_AREASET *areaSet, int area, int encounterType, TimeOfDayWildParam timeOfDay, enum HeapID heapID); #endif // POKEHEARTGOLD_UNK_02097268_H diff --git a/include/wild_encounter.h b/include/wild_encounter.h index b3c07d8d4b..6df52923c4 100644 --- a/include/wild_encounter.h +++ b/include/wild_encounter.h @@ -16,8 +16,8 @@ extern "C" { typedef struct ENC_SLOT { u32 species; - u16 level_min; u16 level_max; + u16 level_min; } ENC_SLOT; typedef struct ENC_DATA_LAND { diff --git a/main.lsf b/main.lsf index bbe56d7b06..d254d56198 100644 --- a/main.lsf +++ b/main.lsf @@ -332,7 +332,7 @@ Static main Object asm/unk_02096C88.o Object asm/unk_02097024.o Object asm/unk_020971F8.o - Object asm/unk_02097268.o + Object src/unk_02097268.o Object src/unk_02097720.o Object asm/unk_020977CC.o Object asm/unk_020979A8.o @@ -568,6 +568,8 @@ Overlay OVY_2 { After field Object asm/overlay_02_02245B80.o + Object src/field/encounter_check.o + Object asm/overlay_02_02248728.o Object src/field/legend_cutscene_camera.o Object src/field/overlay_2_gear_phone.o Object src/field/event_cutscene_shaymin.o diff --git a/scripts/dump_safari_enc.py b/scripts/dump_safari_enc.py new file mode 100644 index 0000000000..6eab74c601 --- /dev/null +++ b/scripts/dump_safari_enc.py @@ -0,0 +1,81 @@ +#!/usr/bin/env python + +import json +import pathlib +import struct + +project_root = pathlib.Path(__file__).parent.parent +arc_base = project_root / "files" / "arc" / "safari_enc" + +species_names = [] +with (project_root / "include" / "constants" / "species.h").open() as species_h: + for line in species_h: + if line.startswith("#define SPECIES_"): + species_names.append(line.split()[1]) + +safari_zone_area_names = [] +safari_zone_object_type_names = [] +with (project_root / "include" / "constants" / "safari.h").open() as safari_areas_h: + for line in safari_areas_h: + if line.startswith("#define SAFARI_ZONE_AREA_") and not line.startswith( + "#define SAFARI_ZONE_AREA_SET_" + ): + safari_zone_area_names.append(line.split()[1]) + elif line.startswith("#define SAFARI_ZONE_OBJECT_TYPE_"): + safari_zone_object_type_names.append(line.split()[1]) + +encounter_modes = "land", "surf", "oldrod", "goodrod", "superrod" +data = {"encounters": []} +for i, area_name in enumerate(safari_zone_area_names): + cur_map = {"area": area_name} + with (arc_base / f"safari_enc_{i:08d}.bin").open("rb") as fp: + bonus_counts = fp.read(8) + for name, num_bonus in zip(encounter_modes, bonus_counts): + cur_elem = { + "mons": { + "morn": [], + "day": [], + "nite": [], + }, + "bonus_mons": { + "morn": [], + "day": [], + "nite": [], + }, + "bonus_param": [], + } + for time_of_day in "morn", "day", "nite": + for i in range(10): + mon, level = struct.unpack("scriptType = 0; if (state->isIncomingCall) { - if (Save_VarsFlags_CheckFlagInArray(ctx->saveVarsFlags, FLAG_UNK_992)) { + if (Save_VarsFlags_CheckFlagInArray(ctx->saveVarsFlags, FLAG_SYS_TRIGGER_EGG_CALL)) { return PHONE_SCRIPT_096; } else { return PHONE_SCRIPT_095; diff --git a/src/encounter.c b/src/encounter.c index 13ea7a4794..96f76bc8b5 100644 --- a/src/encounter.c +++ b/src/encounter.c @@ -7,6 +7,7 @@ #include "constants/std_script.h" #include "battle/battle_setup.h" +#include "field/encounter_check.h" #include "fielddata/script/scr_seq/event_D10R0101.h" #include "frontier/overlay_80.h" @@ -137,8 +138,8 @@ static BOOL Task_StartEncounter(TaskManager *taskManager) { // todo: better name sub_020930C4(fieldSystem); } - fieldSystem->unk7E = 0; - fieldSystem->unk7C = 0; + fieldSystem->encounterInhibitSteps = 0; + fieldSystem->reverseTurnFrameSteps = 0; if (Encounter_GetResult(encounter, fieldSystem) == FALSE) { if (encounter->setup->battleType & BATTLE_TYPE_11) { @@ -542,7 +543,7 @@ void SetupAndStartWildBattle(TaskManager *taskManager, u16 species, u8 level, u3 FieldSystem *fieldSystem = TaskManager_GetFieldSystem(taskManager); setup = BattleSetup_New(HEAP_ID_FIELD2, BATTLE_TYPE_NONE); BattleSetup_InitFromFieldSystem(setup, fieldSystem); - ov02_02247F30(fieldSystem, species, level, shiny, setup); + FieldSystem_GenerateSingleWildPokemon(fieldSystem, species, level, shiny, setup); if (canFlee) { setup->battleSpecial |= 8; @@ -558,7 +559,7 @@ void SetupAndStartFatefulWildBattle(TaskManager *taskManager, u16 species, u8 le FieldSystem *fieldSystem = TaskManager_GetFieldSystem(taskManager); setup = BattleSetup_New(HEAP_ID_FIELD2, 0); BattleSetup_InitFromFieldSystem(setup, fieldSystem); - ov02_02247F30(fieldSystem, species, level, FALSE, setup); + FieldSystem_GenerateSingleWildPokemon(fieldSystem, species, level, FALSE, setup); u32 var = 1; @@ -633,7 +634,7 @@ void SetupAndStartFirstBattle(TaskManager *taskManager, u16 species, u8 level) { BattleSetup *setup = BattleSetup_New(HEAP_ID_FIELD2, BATTLE_TYPE_NONE); BattleSetup_InitFromFieldSystem(setup, fieldSystem); - ov02_02247F30(fieldSystem, species, level, FALSE, setup); + FieldSystem_GenerateSingleWildPokemon(fieldSystem, species, level, FALSE, setup); setup->battleSpecial = BATTLE_SPECIAL_FIRST_RIVAL; diff --git a/src/field/encounter_check.c b/src/field/encounter_check.c new file mode 100644 index 0000000000..96eb039dc5 --- /dev/null +++ b/src/field/encounter_check.c @@ -0,0 +1,1423 @@ +#include "field/encounter_check.h" + +#include "global.h" + +#include "constants/abilities.h" +#include "constants/maps.h" +#include "constants/weather.h" + +#include "battle/battle_setup.h" +#include "overlay_2/overlay_02_gear_phone.h" + +#include "alph_puzzle.h" +#include "bug_contest.h" +#include "encounter.h" +#include "field_roamer.h" +#include "follow_mon.h" +#include "gf_rtc.h" +#include "map_events.h" +#include "math_util.h" +#include "metatile_behavior.h" +#include "overlay_01.h" +#include "overlay_02.h" +#include "roamer.h" +#include "safari_zone.h" +#include "script_pokemon_util.h" +#include "sys_flags.h" +#include "sys_vars.h" +#include "unk_02054648.h" +#include "unk_0205CB48.h" +#include "unk_0206D494.h" +#include "unk_02097268.h" +#include "unk_02097F6C.h" +#include "wild_encounter.h" + +#define ENCOUNTER_TYPE_LAND 0 +#define ENCOUNTER_TYPE_SURFING 1 +#define ENCOUNTER_TYPE_FISHING 2 +#define ENCOUNTER_TYPE_ROCK_SMASH 3 +#define ENCOUNTER_TYPE_HEADBUTT 4 + +#define ENCOUNTER_CONTEXT_REGULAR 0 +#define ENCOUNTER_CONTEXT_SAFARI 1 +#define ENCOUNTER_CONTEXT_BUG_CONTEST 2 + +FS_EXTERN_OVERLAY(bug_contest); + +typedef struct UnlockedUnown { + int num; + const u8 *letters; +} UnlockedUnown; + +typedef struct EncounterGenState { + u32 playerId; + BOOL isRepel; + BOOL isSweetScent; + u8 level; + u8 isEgg; + u8 ability; + u8 unk_0F; + u8 unk_10; + u8 isSinjohMap; + u8 unownPuzzleFlags[ALPH_PUZZLE_MAX]; + Pokedex *pokedex; +} EncounterGenState; + +static void EncSlotArray_Init_Land(const ENC_DATA *encData, ENC_SLOT *encSlots); +static void EncSlotArray_Update_NightFishing(const ENC_DATA *encData, u8 rodType, ENC_SLOT *encSlots); +static void EncSlotArray_Update_HoennSinnohSounds(FieldSystem *fieldSystem, const ENC_DATA *encData, ENC_SLOT *encSlots); +static void EncSlots_Update_LandSwarm(FieldSystem *fieldSystem, const ENC_DATA *encData, ENC_SLOT *encSlotA, ENC_SLOT *encSlotB); +static void EncSlots_Update_SurfingSwarm(FieldSystem *fieldSystem, const ENC_DATA *encData, ENC_SLOT *encSlot); +static void EncSlots_Update_FishingSwarm(FieldSystem *fieldSystem, u8 rodType, const ENC_DATA *encData, ENC_SLOT *encSlots); +static BOOL FieldSystem_GenerateLandRegularEncounter(FieldSystem *fieldSystem, Pokemon *leadMon, BattleSetup *battleSetup, const ENC_DATA *encData, ENC_SLOT *encSlots, EncounterGenState *encounterGen); +static BOOL FieldSystem_GenerateLandSafariEncounter(FieldSystem *fieldSystem, Pokemon *leadMon, BattleSetup *battleSetup, const ENC_DATA *encData, ENC_SLOT *encSlots, EncounterGenState *encounterGen); +static BOOL FieldSystem_GenerateBugContestEncounter(FieldSystem *fieldSystem, Pokemon *leadMon, BattleSetup *battleSetup, const ENC_DATA *encData, ENC_SLOT *encSlots, EncounterGenState *encounterGen); +static BOOL FieldSystem_GenerateDoubleEncounter(FieldSystem *fieldSystem, Pokemon *leadMon, BattleSetup *battleSetup, ENC_SLOT *encSlots, EncounterGenState *encounterGen); +static BOOL FieldSystem_GenerateSurfingEncounter(FieldSystem *fieldSystem, Pokemon *leadMon, BattleSetup *battleSetup, ENC_SLOT *encSlots, EncounterGenState *encounterGen, BOOL isSafari); +static BOOL FieldSystem_GenerateFishingEncounter(FieldSystem *fieldSystem, Pokemon *leadMon, BattleSetup *battleSetup, ENC_SLOT *encSlots, EncounterGenState *encounterGen, int rodType, BOOL isSafari); +static BOOL FieldSystem_GenerateRockSmashEncounter(FieldSystem *fieldSystem, Pokemon *leadMon, BattleSetup *battleSetup, ENC_SLOT *encSlots, EncounterGenState *encounterGen); +static BOOL FieldSystem_EncounterRateRoll(FieldSystem *fieldSystem, u8 encounterRate, u8 metatileBehavior); +static u8 getStepCountEncounterRateBoost(u16 stepCount); +static u8 FieldSystem_GetTileEncounterTypeAndRate(FieldSystem *fieldSystem, u8 metatileBehavior, u8 *pEncType); +static BOOL FieldSystem_SecondEncounterRoll(FieldSystem *fieldSystem, u16 encounterRate); +static u8 EncounterSlot_WildMonSlotRoll_Land(void); +static u8 EncounterSlot_WildMonSlotRoll_Surfing(void); +static u8 EncounterSlot_WildMonSlotRoll_Fishing(int rodType); +static u8 EncounterSlot_WildMonSlotRoll_RockSmash(void); +static u8 EncounterSlot_WildMonSlotRoll_Headbutt(void); +static void ApplyLeadMonHeldItemEffectToEncounterRate(Pokemon *leadMon, u8 *pEncounterRate); +static void ApplyFluteEffectToEncounterRate(FieldSystem *fieldSystem, u8 *pEncounterRate); +static u8 getWildMonNature(Pokemon *pokemon, EncounterGenState *encounterGen); +static u8 EncounterSlot_WildMonLevelRoll(ENC_SLOT *encSlot, EncounterGenState *encounterGen); +static void generateWildShinyAndAddToParty(u16 species, u8 level, int battler, u32 otid, EncounterGenState *encounterGen, Pokemon *leadMon, BattleSetup *battleSetup); +static void generateWildNonShinyAndAddToParty(u16 species, u8 level, int battler, BOOL forceOnePerfectIV, EncounterGenState *encounterGen, Pokemon *leadMon, BattleSetup *battleSetup); +static BOOL FieldSystem_GenerateRegularEncounter(Pokemon *leadMon, int rodType, EncounterGenState *encounterGen, ENC_SLOT *encSlots, u8 encType, int battler, BattleSetup *battleSetup); +static BOOL FieldSystem_GenerateSafariEncounter(FieldSystem *fieldSystem, Pokemon *leadMon, int rodType, EncounterGenState *encounterGen, u8 encType, int battler, BattleSetup *battleSetup); +static BOOL FieldSystem_GenerateBugContestEncounter_Internal(FieldSystem *fieldSystem, Pokemon *leadMon, int rodType, EncounterGenState *encounterGen, u8 encType, int battler, BattleSetup *battleSetup); +static int FieldSystem_GetLandEncounterRate(FieldSystem *fieldSystem); +static int FieldSystem_GetSurfingEncounterRate(FieldSystem *fieldSystem); +static u8 FieldSystem_GetFishingEncounterRate(FieldSystem *fieldSystem, u8 rodType); +static u8 getFriendshipBoostToFishingBiteRate(u8 friendship); +static int FieldSystem_GetRockSmashEncounterRate(FieldSystem *fieldSystem); +static BOOL chooseAbilityCoercedSlot(ENC_SLOT *encSlots, u8 numEncSlots, u8 type, u8 *slot); +static BOOL EncounterSlot_AbilityInfluenceOnSlotChoiceCheck(Pokemon *leadMon, EncounterGenState *encounterGen, ENC_SLOT *encSlots, u8 numSlots, u8 type, u8 ability, u8 *slotNum); +static u8 ApplyAbilityEffectToEncounterRate(BOOL isFishing, u8 encounterRate, EncounterGenState *encounterGen, u16 weatherType, Pokemon *leadMon); +static BOOL DoesAbilitySuppressEncounter(EncounterGenState *encounterGen, Pokemon *leadMon, u8 level); +static void FieldSystem_CreateBattleSetupForWildBattle(FieldSystem *fieldSystem, u8 encounterCtx, BattleSetup **pBattleSetup); +static BOOL EncounterGen_DoesRepelSuppressEncounter(u8 roamerLevel, EncounterGenState *encounterGen); +static BOOL EncounterGen_CanGenerateUnownEncounter(EncounterGenState *encounterGen); +static void initRoamingWildmon(u32 otId, Roamer *roamer, BattleSetup *battleSetup); +static BOOL getRandomActiveRoamerInCurrMap(FieldSystem *fieldSystem, Roamer **pRoamer); +static BOOL hasCaughtUnownForm(Pokedex *pokedex, u8 numForms, u8 targetForm); +static u8 EncounterGen_ChooseUnownForm(EncounterGenState *encounterGen); +static BOOL addGeneratedMonToBattleSetupParty(int battler, EncounterGenState *encounterGen, Pokemon *pokemon, BattleSetup *battleSetup); +static u8 ApplyAbilityEffectToSlotLevel(ENC_SLOT *encSlots, int numEncSlots, EncounterGenState *encounterGen, u8 chosenSlot); +static void EncounterGenState_Init(FieldSystem *fieldSystem, Pokemon *pokemon, const ENC_DATA *encData, EncounterGenState *encounterGen); +static void FieldSystem_UpdateTurnFrameCounter(FieldSystem *fieldSystem); + +static void EncSlotArray_Init_Land(const ENC_DATA *encData, ENC_SLOT *encSlots) { + TIMEOFDAY timeOfDay = GF_RTC_GetTimeOfDay(); + const u16 *slotSpecies; + + if (timeOfDay == RTC_TIMEOFDAY_MORN) { + slotSpecies = encData->landSlots.species_morn; + } else if (timeOfDay == RTC_TIMEOFDAY_DAY || timeOfDay == RTC_TIMEOFDAY_EVE) { + slotSpecies = encData->landSlots.species_day; + } else if (timeOfDay == RTC_TIMEOFDAY_NITE || timeOfDay == RTC_TIMEOFDAY_LATE) { + slotSpecies = encData->landSlots.species_nite; + } else { + GF_ASSERT(FALSE); + slotSpecies = encData->landSlots.species_morn; + } + for (int i = 0; i < NUM_ENCOUNTERS_LAND; ++i) { + encSlots[i].species = slotSpecies[i]; + encSlots[i].level_max = encData->landSlots.levels[i]; + encSlots[i].level_min = encData->landSlots.levels[i]; + } +} + +static void EncSlotArray_Update_NightFishing(const ENC_DATA *encData, u8 rodType, ENC_SLOT *encSlots) { + TIMEOFDAY timeOfDay = GF_RTC_GetTimeOfDay(); + + if (timeOfDay == RTC_TIMEOFDAY_NITE || timeOfDay == RTC_TIMEOFDAY_LATE) { + if (rodType == ROD_TYPE_GOOD) { + encSlots[3].species = encData->swarmSpecies[2]; + } else if (rodType == ROD_TYPE_SUPER) { + encSlots[1].species = encData->swarmSpecies[2]; + } + } +} + +static void EncSlotArray_Update_HoennSinnohSounds(FieldSystem *fieldSystem, const ENC_DATA *encData, ENC_SLOT *encSlots) { + if (GetRadioMusicPlayingSeq() == RADIO_MUSIC_SEQ_HOENN_SOUNDS) { + encSlots[2].species = encData->hoennSoundsSpecies[0]; + encSlots[3].species = encData->hoennSoundsSpecies[0]; + encSlots[4].species = encData->hoennSoundsSpecies[1]; + encSlots[5].species = encData->hoennSoundsSpecies[1]; + } else if (GetRadioMusicPlayingSeq() == RADIO_MUSIC_SEQ_SINNOH_SOUNDS) { + encSlots[2].species = encData->sinnohSoundsSpecies[0]; + encSlots[3].species = encData->sinnohSoundsSpecies[0]; + encSlots[4].species = encData->sinnohSoundsSpecies[1]; + encSlots[5].species = encData->sinnohSoundsSpecies[1]; + } +} + +static void EncSlots_Update_LandSwarm(FieldSystem *fieldSystem, const ENC_DATA *encData, ENC_SLOT *encSlotA, ENC_SLOT *encSlotB) { + RoamerSaveData *roamerSave = Save_Roamers_Get(fieldSystem->saveData); + if (RoamerSave_OutbreakActive(roamerSave) && sub_02097F6C(Roamers_GetRand(roamerSave, 2), fieldSystem->location->mapId, 0)) { + encSlotA->species = encData->swarmSpecies[0]; + encSlotB->species = encData->swarmSpecies[0]; + } +} + +static void EncSlots_Update_SurfingSwarm(FieldSystem *fieldSystem, const ENC_DATA *encData, ENC_SLOT *encSlot) { + RoamerSaveData *roamerSave = Save_Roamers_Get(fieldSystem->saveData); + if (RoamerSave_OutbreakActive(roamerSave) && sub_02097F6C(Roamers_GetRand(roamerSave, 2), fieldSystem->location->mapId, 1)) { + encSlot->species = encData->swarmSpecies[1]; + } +} + +static void EncSlots_Update_FishingSwarm(FieldSystem *fieldSystem, u8 rodType, const ENC_DATA *encData, ENC_SLOT *encSlots) { + RoamerSaveData *roamerSave = Save_Roamers_Get(fieldSystem->saveData); + if (RoamerSave_OutbreakActive(roamerSave) && sub_02097F6C(Roamers_GetRand(roamerSave, 2), fieldSystem->location->mapId, 2)) { + int slots_oldRod[1] = { 2 }; + int slots_goodRod[3] = { 0, 2, 3 }; + int slots_superRod[5] = { 0, 1, 2, 3, 4 }; + + const int *slots; + u32 numSlots; + + switch (rodType) { + case ROD_TYPE_OLD: + numSlots = NELEMS(slots_oldRod); + slots = slots_oldRod; + break; + case ROD_TYPE_GOOD: + numSlots = NELEMS(slots_goodRod); + slots = slots_goodRod; + break; + case ROD_TYPE_SUPER: + numSlots = NELEMS(slots_superRod); + slots = slots_superRod; + break; + default: + GF_ASSERT(FALSE); + return; + } + + for (u8 i = 0; i < numSlots; ++i) { + encSlots[slots[i]].species = encData->swarmSpecies[3]; + } + } +} + +BOOL FieldSystem_PerformLandOrSurfEncounterCheck(FieldSystem *fieldSystem) { + if (fieldSystem->encounterInhibitSteps <= 3) { + return FALSE; + } + + ENC_SLOT encSlots[NUM_ENCOUNTERS_LAND]; + EncounterGenState encounterGen; + BattleSetup *battleSetup; + Roamer *roamer; + u8 encounterType; + u8 encounterRate; + + u32 x = PlayerAvatar_GetXCoord(fieldSystem->playerAvatar); + u32 z = PlayerAvatar_GetZCoord(fieldSystem->playerAvatar); + u8 metatileBehavior = GetMetatileBehavior(fieldSystem, x, z); + encounterRate = FieldSystem_GetTileEncounterTypeAndRate(fieldSystem, metatileBehavior, &encounterType); + if (encounterRate == 0) { + return FALSE; + } + FieldSystem_UpdateTurnFrameCounter(fieldSystem); + Party *party = SaveArray_Party_Get(fieldSystem->saveData); + ENC_DATA *encData = MapEvents_GetLoadedEncTable(fieldSystem); + Pokemon *leadMon = Party_GetMonByIndex(party, 0); + EncounterGenState_Init(fieldSystem, leadMon, encData, &encounterGen); + if (!RoamerSave_RepelNotInUse(Save_Roamers_Get(fieldSystem->saveData))) { + Pokemon *mon = GetFirstAliveMonInParty_CrashIfNone(party); + encounterGen.isRepel = TRUE; + encounterGen.level = GetMonData(mon, MON_DATA_LEVEL, NULL); + } + encounterRate = ApplyAbilityEffectToEncounterRate(FALSE, encounterRate, &encounterGen, LocalFieldData_GetWeatherType(Save_LocalFieldData_Get(fieldSystem->saveData)), leadMon); + ApplyFluteEffectToEncounterRate(fieldSystem, &encounterRate); + ApplyLeadMonHeldItemEffectToEncounterRate(leadMon, &encounterRate); + BOOL ret = FieldSystem_EncounterRateRoll(fieldSystem, encounterRate, metatileBehavior) ? TRUE : FALSE; + if (!ret) { + return FALSE; + } + BOOL followerFlag = Save_VarsFlags_CheckHaveFollower(Save_VarsFlags_Get(fieldSystem->saveData)) ? TRUE : FALSE; + if (!followerFlag && getRandomActiveRoamerInCurrMap(fieldSystem, &roamer)) { + if (!EncounterGen_DoesRepelSuppressEncounter(GetRoamerData(roamer, ROAMER_DATA_LEVEL), &encounterGen)) { + battleSetup = BattleSetup_New(HEAP_ID_FIELD2, BATTLE_TYPE_ROAMER); + BattleSetup_InitFromFieldSystem(battleSetup, fieldSystem); + initRoamingWildmon(encounterGen.playerId, roamer, battleSetup); + sub_02050B08(fieldSystem, battleSetup); + return TRUE; + } + return FALSE; + } + + SaveVarsFlags *saveVarsFlags = Save_VarsFlags_Get(fieldSystem->saveData); + BOOL safariFlag = Save_VarsFlags_CheckSafariSysFlag(saveVarsFlags); + BOOL bugContestFlag = Save_VarsFlags_CheckBugContestFlag(saveVarsFlags); + + if (!followerFlag) { + u8 encounterCtx = ENCOUNTER_CONTEXT_REGULAR; + if (safariFlag) { + encounterCtx = ENCOUNTER_CONTEXT_SAFARI; + } else if (bugContestFlag) { + encounterCtx = ENCOUNTER_CONTEXT_BUG_CONTEST; + } + FieldSystem_CreateBattleSetupForWildBattle(fieldSystem, encounterCtx, &battleSetup); + } else { + battleSetup = BattleSetup_New(HEAP_ID_FIELD2, BATTLE_TYPE_DOUBLES | BATTLE_TYPE_MULTI | BATTLE_TYPE_AI); + } + BattleSetup_InitFromFieldSystem(battleSetup, fieldSystem); + BOOL found; + if (encounterType == ENCOUNTER_TYPE_LAND) { + EncSlotArray_Init_Land(encData, encSlots); + EncSlots_Update_LandSwarm(fieldSystem, encData, &encSlots[0], &encSlots[1]); + EncSlotArray_Update_HoennSinnohSounds(fieldSystem, encData, encSlots); + if (!followerFlag) { + if (safariFlag) { + found = FieldSystem_GenerateLandSafariEncounter(fieldSystem, leadMon, battleSetup, encData, encSlots, &encounterGen); + } else if (bugContestFlag) { + found = FieldSystem_GenerateBugContestEncounter(fieldSystem, leadMon, battleSetup, encData, encSlots, &encounterGen); + } else { + found = FieldSystem_GenerateLandRegularEncounter(fieldSystem, leadMon, battleSetup, encData, encSlots, &encounterGen); + } + } else { + battleSetup->trainerId[BATTLER_PLAYER2] = Save_VarsFlags_GetFollowerTrainerNum(Save_VarsFlags_Get(fieldSystem->saveData)); + EnemyTrainerSet_Init(battleSetup, fieldSystem->saveData, HEAP_ID_FIELD2); + found = FieldSystem_GenerateDoubleEncounter(fieldSystem, leadMon, battleSetup, encSlots, &encounterGen); + } + } else if (encounterType == ENCOUNTER_TYPE_SURFING) { + for (int i = 0; i < NUM_ENCOUNTERS_SURF; ++i) { + encSlots[i].species = encData->surfSlots[i].species; + encSlots[i].level_max = encData->surfSlots[i].level_max; + encSlots[i].level_min = encData->surfSlots[i].level_min; + } + EncSlots_Update_SurfingSwarm(fieldSystem, encData, encSlots); + found = FieldSystem_GenerateSurfingEncounter(fieldSystem, leadMon, battleSetup, encSlots, &encounterGen, safariFlag); + } else { + GF_ASSERT(FALSE); + BattleSetup_Delete(battleSetup); + return FALSE; + } + if (found) { + sub_02050B08(fieldSystem, battleSetup); + fieldSystem->encounterInhibitSteps = 0; + fieldSystem->reverseTurnFrameSteps = 0; + } else { + ret = FALSE; + } + GF_ASSERT(GF_heap_c_dummy_return_true(HEAP_ID_FIELD1)); + GF_ASSERT(GF_heap_c_dummy_return_true(HEAP_ID_FIELD2)); + if (!ret) { + BattleSetup_Delete(battleSetup); + } + return ret; +} + +BOOL FieldSystem_PerformFishEncounterCheck(FieldSystem *fieldSystem, u8 rodType, BattleSetup **pBattleSetup) { + ENC_SLOT encSlots[NUM_ENCOUNTERS_LAND]; + EncounterGenState encounterGen; + + u8 encounterRate = FieldSystem_GetFishingEncounterRate(fieldSystem, rodType); + if (encounterRate == 0) { + return FALSE; + } + + Pokemon *leadMon = Party_GetMonByIndex(SaveArray_Party_Get(fieldSystem->saveData), 0); + EncounterGenState_Init(fieldSystem, leadMon, NULL, &encounterGen); + encounterRate = ApplyAbilityEffectToEncounterRate(TRUE, encounterRate, &encounterGen, LocalFieldData_GetWeatherType(Save_LocalFieldData_Get(fieldSystem->saveData)), leadMon); + if (LCRandRange(100) >= encounterRate) { + return FALSE; + } + BOOL safariFlag = Save_VarsFlags_CheckSafariSysFlag(Save_VarsFlags_Get(fieldSystem->saveData)); + if (safariFlag) { + FieldSystem_CreateBattleSetupForWildBattle(fieldSystem, ENCOUNTER_CONTEXT_SAFARI, pBattleSetup); + } else { + FieldSystem_CreateBattleSetupForWildBattle(fieldSystem, ENCOUNTER_CONTEXT_REGULAR, pBattleSetup); + } + BattleSetup_InitFromFieldSystem(*pBattleSetup, fieldSystem); + sub_02052544(*pBattleSetup); + const ENC_DATA *encData = MapEvents_GetLoadedEncTable(fieldSystem); + const ENC_DATA_SLOT *rodSlots; + switch (rodType) { + case ROD_TYPE_OLD: + rodSlots = encData->oldRodSlots; + break; + case ROD_TYPE_GOOD: + rodSlots = encData->goodRodSlots; + break; + case ROD_TYPE_SUPER: + rodSlots = encData->superRodSlots; + break; + } + // potential UB: r7 is uninitialized on invalid rod type + for (u8 i = 0; i < NUM_ENCOUNTERS_FISH; ++i) { + encSlots[i].species = rodSlots[i].species; + encSlots[i].level_max = rodSlots[i].level_max; + encSlots[i].level_min = rodSlots[i].level_min; + } + EncSlotArray_Update_NightFishing(encData, rodType, encSlots); + EncSlots_Update_FishingSwarm(fieldSystem, rodType, encData, encSlots); + return FieldSystem_GenerateFishingEncounter(fieldSystem, leadMon, *pBattleSetup, encSlots, &encounterGen, rodType, safariFlag) ? TRUE : FALSE; +} + +BOOL FieldSystem_PerformRockSmashEncounterCheck(FieldSystem *fieldSystem, BattleSetup **pBattleSetup) { + ENC_SLOT encSlots[NUM_ENCOUNTERS_LAND]; + EncounterGenState encounterGen; + + u8 encounterRate = FieldSystem_GetRockSmashEncounterRate(fieldSystem); + if (encounterRate == 0) { + return FALSE; + } + + Pokemon *leadMon = Party_GetMonByIndex(SaveArray_Party_Get(fieldSystem->saveData), 0); + EncounterGenState_Init(fieldSystem, leadMon, NULL, &encounterGen); + encounterRate = ApplyAbilityEffectToEncounterRate(FALSE, encounterRate, &encounterGen, LocalFieldData_GetWeatherType(Save_LocalFieldData_Get(fieldSystem->saveData)), leadMon); + if ((LCRandom() % 100) >= encounterRate) { + return FALSE; + } + + FieldSystem_CreateBattleSetupForWildBattle(fieldSystem, ENCOUNTER_CONTEXT_REGULAR, pBattleSetup); + BattleSetup_InitFromFieldSystem(*pBattleSetup, fieldSystem); + const ENC_DATA *r5 = MapEvents_GetLoadedEncTable(fieldSystem); + const ENC_DATA_SLOT *r5_2 = r5->rockSmashSlots; + for (u8 i = 0; i < NUM_ENCOUNTERS_ROCKSMASH; ++i) { + encSlots[i].species = r5_2[i].species; + encSlots[i].level_max = r5_2[i].level_max; + encSlots[i].level_min = r5_2[i].level_min; + } + if (!FieldSystem_GenerateRockSmashEncounter(fieldSystem, leadMon, *pBattleSetup, encSlots, &encounterGen)) { + BattleSetup_Delete(*pBattleSetup); + return FALSE; + } + + return TRUE; +} + +BOOL FieldSystem_PerformSweetScentEncounterCheck(FieldSystem *fieldSystem, TaskManager *taskManager) { + ENC_SLOT encSlots[NUM_ENCOUNTERS_LAND]; + EncounterGenState encounterGen; + BattleSetup *battleSetup; + Roamer *roamer; + u8 encType; + SaveVarsFlags *saveVarsFlags = Save_VarsFlags_Get(fieldSystem->saveData); + u32 x = PlayerAvatar_GetXCoord(fieldSystem->playerAvatar); + u32 z = PlayerAvatar_GetZCoord(fieldSystem->playerAvatar); + u8 metatileBehavior = GetMetatileBehavior(fieldSystem, x, z); + + if (!FieldSystem_GetTileEncounterTypeAndRate(fieldSystem, metatileBehavior, &encType)) { + return FALSE; + } + + Party *party = SaveArray_Party_Get(fieldSystem->saveData); + const ENC_DATA *encData = MapEvents_GetLoadedEncTable(fieldSystem); + Pokemon *leadMon = Party_GetMonByIndex(party, 0); + EncounterGenState_Init(fieldSystem, leadMon, encData, &encounterGen); + encounterGen.isSweetScent = TRUE; + BOOL followerFlag = Save_VarsFlags_CheckHaveFollower(saveVarsFlags); + if (!followerFlag && getRandomActiveRoamerInCurrMap(fieldSystem, &roamer)) { + battleSetup = BattleSetup_New(HEAP_ID_FIELD2, BATTLE_TYPE_ROAMER); + BattleSetup_InitFromFieldSystem(battleSetup, fieldSystem); + initRoamingWildmon(encounterGen.playerId, roamer, battleSetup); + FieldSystem_StartForcedWildBattle(fieldSystem, taskManager, battleSetup); + return TRUE; + } + + BOOL safariFlag = Save_VarsFlags_CheckSafariSysFlag(saveVarsFlags); + BOOL bugContestFlag = Save_VarsFlags_CheckBugContestFlag(saveVarsFlags); + if (!followerFlag) { + u8 encounterCtx = ENCOUNTER_CONTEXT_REGULAR; + if (safariFlag) { + encounterCtx = ENCOUNTER_CONTEXT_SAFARI; + } else if (bugContestFlag) { + encounterCtx = ENCOUNTER_CONTEXT_BUG_CONTEST; + } + FieldSystem_CreateBattleSetupForWildBattle(fieldSystem, encounterCtx, &battleSetup); + } else { + battleSetup = BattleSetup_New(HEAP_ID_FIELD2, BATTLE_TYPE_DOUBLES | BATTLE_TYPE_MULTI | BATTLE_TYPE_AI); + } + BattleSetup_InitFromFieldSystem(battleSetup, fieldSystem); + BOOL found; + if (encType == ENCOUNTER_TYPE_LAND) { + EncSlotArray_Init_Land(encData, encSlots); + EncSlots_Update_LandSwarm(fieldSystem, encData, &encSlots[0], &encSlots[1]); + EncSlotArray_Update_HoennSinnohSounds(fieldSystem, encData, encSlots); + if (!followerFlag) { + if (safariFlag) { + found = FieldSystem_GenerateLandSafariEncounter(fieldSystem, leadMon, battleSetup, encData, encSlots, &encounterGen); + } else if (bugContestFlag) { + found = FieldSystem_GenerateBugContestEncounter(fieldSystem, leadMon, battleSetup, encData, encSlots, &encounterGen); + } else { + found = FieldSystem_GenerateLandRegularEncounter(fieldSystem, leadMon, battleSetup, encData, encSlots, &encounterGen); + } + } else { + battleSetup->trainerId[BATTLER_PLAYER2] = Save_VarsFlags_GetFollowerTrainerNum(Save_VarsFlags_Get(fieldSystem->saveData)); + EnemyTrainerSet_Init(battleSetup, fieldSystem->saveData, HEAP_ID_FIELD2); + found = FieldSystem_GenerateDoubleEncounter(fieldSystem, leadMon, battleSetup, encSlots, &encounterGen); + } + } else if (encType == ENCOUNTER_TYPE_SURFING) { + for (int i = 0; i < NUM_ENCOUNTERS_SURF; ++i) { + encSlots[i].species = encData->surfSlots[i].species; + encSlots[i].level_max = encData->surfSlots[i].level_max; + encSlots[i].level_min = encData->surfSlots[i].level_min; + } + EncSlots_Update_SurfingSwarm(fieldSystem, encData, encSlots); + found = FieldSystem_GenerateSurfingEncounter(fieldSystem, leadMon, battleSetup, encSlots, &encounterGen, safariFlag); + } else { + GF_ASSERT(FALSE); + return FALSE; + } + if (found) { + FieldSystem_StartForcedWildBattle(fieldSystem, taskManager, battleSetup); + } else { + GF_ASSERT(FALSE); + } + fieldSystem->encounterInhibitSteps = 0; + fieldSystem->reverseTurnFrameSteps = 0; + return TRUE; +} + +BOOL FieldSystem_PerformHeadbuttEncounterCheck(FieldSystem *fieldSystem, BattleSetup **pBattleSetup, const HeadbuttSlot *headbuttSlots) { + ENC_SLOT encSlots[NUM_ENCOUNTERS_LAND]; + EncounterGenState encounterGen; + ENC_DATA_SLOT encDataSlots[NUM_ENCOUNTERS_HEADBUTT]; + + Pokemon *leadMon = Party_GetMonByIndex(SaveArray_Party_Get(fieldSystem->saveData), 0); + EncounterGenState_Init(fieldSystem, leadMon, NULL, &encounterGen); + FieldSystem_CreateBattleSetupForWildBattle(fieldSystem, ENCOUNTER_CONTEXT_REGULAR, pBattleSetup); + BattleSetup_InitFromFieldSystem(*pBattleSetup, fieldSystem); + for (u8 i = 0; i < NUM_ENCOUNTERS_HEADBUTT; ++i) { + encDataSlots[i].species = headbuttSlots[i].species; + encDataSlots[i].level_max = headbuttSlots[i].maxLevel; + encDataSlots[i].level_min = headbuttSlots[i].minLevel; + } + for (u8 i = 0; i < NUM_ENCOUNTERS_HEADBUTT; ++i) { + encSlots[i].species = encDataSlots[i].species; + encSlots[i].level_max = encDataSlots[i].level_max; + encSlots[i].level_min = encDataSlots[i].level_min; + } + if (!FieldSystem_GenerateRegularEncounter(leadMon, ROD_TYPE_NONE, &encounterGen, encSlots, ENCOUNTER_TYPE_HEADBUTT, BATTLER_ENEMY, *pBattleSetup)) { + BattleSetup_Delete(*pBattleSetup); + return FALSE; + } + + return TRUE; +} + +static BOOL FieldSystem_GenerateLandRegularEncounter(FieldSystem *fieldSystem, Pokemon *leadMon, BattleSetup *battleSetup, const ENC_DATA *encData, ENC_SLOT *encSlots, EncounterGenState *encounterGen) { + return FieldSystem_GenerateRegularEncounter(leadMon, ROD_TYPE_NONE, encounterGen, encSlots, ENCOUNTER_TYPE_LAND, BATTLER_ENEMY, battleSetup); +} + +static BOOL FieldSystem_GenerateLandSafariEncounter(FieldSystem *fieldSystem, Pokemon *leadMon, BattleSetup *battleSetup, const ENC_DATA *encData, ENC_SLOT *encSlots, EncounterGenState *encounterGen) { + return FieldSystem_GenerateSafariEncounter(fieldSystem, leadMon, ROD_TYPE_NONE, encounterGen, ENCOUNTER_TYPE_LAND, BATTLER_ENEMY, battleSetup); +} + +static BOOL FieldSystem_GenerateBugContestEncounter(FieldSystem *fieldSystem, Pokemon *leadMon, BattleSetup *battleSetup, const ENC_DATA *encData, ENC_SLOT *encSlots, EncounterGenState *encounterGen) { + FSOverlayID ovyId = FS_OVERLAY_ID(bug_contest); + + HandleLoadOverlay(ovyId, OVY_LOAD_ASYNC); + BOOL ret = FieldSystem_GenerateBugContestEncounter_Internal(fieldSystem, leadMon, ROD_TYPE_NONE, encounterGen, ENCOUNTER_TYPE_LAND, BATTLER_ENEMY, battleSetup); + UnloadOverlayByID(ovyId); + return ret; +} + +static BOOL FieldSystem_GenerateDoubleEncounter(FieldSystem *fieldSystem, Pokemon *leadMon, BattleSetup *battleSetup, ENC_SLOT *encSlots, EncounterGenState *encounterGen) { + if (FieldSystem_GenerateRegularEncounter(leadMon, ROD_TYPE_NONE, encounterGen, encSlots, ENCOUNTER_TYPE_LAND, BATTLER_ENEMY, battleSetup) == FALSE) { // explicit comparison to FALSE required to match + return FALSE; + } else { + return FieldSystem_GenerateRegularEncounter(leadMon, ROD_TYPE_NONE, encounterGen, encSlots, ENCOUNTER_TYPE_LAND, BATTLER_ENEMY2, battleSetup); + } +} + +static BOOL FieldSystem_GenerateSurfingEncounter(FieldSystem *fieldSystem, Pokemon *leadMon, BattleSetup *battleSetup, ENC_SLOT *encSlots, EncounterGenState *encounterGen, BOOL isSafari) { + if (isSafari) { + return FieldSystem_GenerateSafariEncounter(fieldSystem, leadMon, ROD_TYPE_NONE, encounterGen, ENCOUNTER_TYPE_SURFING, BATTLER_ENEMY, battleSetup); + } else { + return FieldSystem_GenerateRegularEncounter(leadMon, ROD_TYPE_NONE, encounterGen, encSlots, ENCOUNTER_TYPE_SURFING, BATTLER_ENEMY, battleSetup); + } +} + +static BOOL FieldSystem_GenerateFishingEncounter(FieldSystem *fieldSystem, Pokemon *leadMon, BattleSetup *battleSetup, ENC_SLOT *encSlots, EncounterGenState *encounterGen, int rodType, BOOL isSafari) { + if (isSafari) { + return FieldSystem_GenerateSafariEncounter(fieldSystem, leadMon, rodType, encounterGen, ENCOUNTER_TYPE_FISHING, BATTLER_ENEMY, battleSetup); + } else { + return FieldSystem_GenerateRegularEncounter(leadMon, rodType, encounterGen, encSlots, ENCOUNTER_TYPE_FISHING, BATTLER_ENEMY, battleSetup); + } +} + +static BOOL FieldSystem_GenerateRockSmashEncounter(FieldSystem *fieldSystem, Pokemon *leadMon, BattleSetup *battleSetup, ENC_SLOT *encSlots, EncounterGenState *encounterGen) { + return FieldSystem_GenerateRegularEncounter(leadMon, ROD_TYPE_NONE, encounterGen, encSlots, ENCOUNTER_TYPE_ROCK_SMASH, BATTLER_ENEMY, battleSetup); +} + +static BOOL FieldSystem_EncounterRateRoll(FieldSystem *fieldSystem, u8 encounterRate, u8 metatileBehavior) { + if (encounterRate > 100) { + encounterRate = 100; + } + int avatarState = PlayerAvatar_GetState(fieldSystem->playerAvatar); + u8 modifiedRate = 40; + if (avatarState != PLAYER_STATE_CYCLING && avatarState != PLAYER_STATE_SURFING && !sub_0205DE98(fieldSystem->playerAvatar)) { + modifiedRate -= 20; + } + if (sub_0205B6F4(metatileBehavior)) { + modifiedRate += 40; + } else if (avatarState == PLAYER_STATE_CYCLING) { + modifiedRate += 30; + } + modifiedRate += getStepCountEncounterRateBoost(fieldSystem->reverseTurnFrameSteps); + if (GetRadioMusicPlayingSeq() == RADIO_MUSIC_SEQ_MARCH) { + modifiedRate += 25; + } else if (GetRadioMusicPlayingSeq() == RADIO_MUSIC_SEQ_LULLABY) { + modifiedRate -= 25; + } + if (modifiedRate > 100) { + modifiedRate = 100; + } + if (LCRandRange(100) < modifiedRate && FieldSystem_SecondEncounterRoll(fieldSystem, encounterRate)) { + return TRUE; + } + + return FALSE; +} + +static u8 getStepCountEncounterRateBoost(u16 stepCount) { + u8 result = 0; + + if (stepCount >= 4) { + result = 60; + } else if (stepCount >= 3) { + result = 40; + } else if (stepCount >= 2) { + result = 30; + } + + return result; +} + +static u8 FieldSystem_GetTileEncounterTypeAndRate(FieldSystem *fieldSystem, u8 metatileBehavior, u8 *pEncType) { + if (MetatileBehavior_CanGenerateWalkingEncounters(metatileBehavior)) { + if (MetatileBehavior_IsSurfableWater(metatileBehavior)) { + *pEncType = ENCOUNTER_TYPE_SURFING; + return FieldSystem_GetSurfingEncounterRate(fieldSystem); + } else { + *pEncType = ENCOUNTER_TYPE_LAND; + return FieldSystem_GetLandEncounterRate(fieldSystem); + } + } + + return 0; +} + +static BOOL FieldSystem_SecondEncounterRoll(FieldSystem *fieldSystem, u16 encounterRate) { + // This may have been used for some additional logic, but it's essentially + // just an encounter roll against the unmodified rate. + if (LCRandRange(100) < encounterRate) { + return TRUE; + } + return FALSE; +} + +static u8 EncounterSlot_WildMonSlotRoll_Land(void) { + u8 rnd = LCRandRange(100); + + if (rnd < 20) { + return 0; + } else if (rnd >= 20 && rnd < 40) { + return 1; + } else if (rnd >= 40 && rnd < 50) { + return 2; + } else if (rnd >= 50 && rnd < 60) { + return 3; + } else if (rnd >= 60 && rnd < 70) { + return 4; + } else if (rnd >= 70 && rnd < 80) { + return 5; + } else if (rnd >= 80 && rnd < 85) { + return 6; + } else if (rnd >= 85 && rnd < 90) { + return 7; + } else if (rnd >= 90 && rnd < 94) { + return 8; + } else if (rnd >= 94 && rnd < 98) { + return 9; + } else if (rnd == 98) { + return 10; + } else { + return 11; + } +} + +static u8 EncounterSlot_WildMonSlotRoll_Surfing(void) { + u8 rnd = LCRandRange(100); + + if (rnd < 60) { + return 0; + } else if (rnd >= 60 && rnd < 90) { + return 1; + } else if (rnd >= 90 && rnd < 95) { + return 2; + } else if (rnd >= 95 && rnd < 99) { + return 3; + } else { + return 4; + } +} + +static u8 EncounterSlot_WildMonSlotRoll_Fishing(int rodType) { + u8 rnd = LCRandRange(100); + + if (rnd < 40) { + return 0; + } else if (rnd < 70) { + return 1; + } else if (rnd < 85) { + return 2; + } else if (rnd < 95) { + return 3; + } else { + return 4; + } +} + +static u8 EncounterSlot_WildMonSlotRoll_RockSmash(void) { + u8 rnd = LCRandRange(100); + + return rnd >= 80 ? 1 : 0; +} + +static u8 EncounterSlot_WildMonSlotRoll_Headbutt(void) { + u8 rnd = LCRandRange(100); + + if (rnd < 50) { + return 0; + } else if (rnd < 65) { + return 1; + } else if (rnd < 80) { + return 2; + } else if (rnd < 90) { + return 3; + } else if (rnd < 95) { + return 4; + } else { + return 5; + } +} + +static void ApplyLeadMonHeldItemEffectToEncounterRate(Pokemon *leadMon, u8 *pEncounterRate) { + u16 heldItem = GetMonData(leadMon, MON_DATA_HELD_ITEM, NULL); + if (heldItem == ITEM_CLEANSE_TAG || heldItem == ITEM_PURE_INCENSE) { + *pEncounterRate = *pEncounterRate * 2 / 3; + } +} + +static void ApplyFluteEffectToEncounterRate(FieldSystem *fieldSystem, u8 *pEncounterRate) { + u8 flute = RoamerSave_GetFlute(Save_Roamers_Get(fieldSystem->saveData)); + if (flute == 1) { // black flute + *pEncounterRate /= 2; + } else if (flute == 2) { // white flute + *pEncounterRate += *pEncounterRate / 2; + } +} + +static u8 getWildMonNature(Pokemon *pokemon, EncounterGenState *encounterGen) { + if (!encounterGen->isEgg && encounterGen->ability == ABILITY_SYNCHRONIZE && LCRandRange(2) == 0) { + return GetMonData(pokemon, MON_DATA_PERSONALITY, NULL) % 25; + } else { + return LCRandRange(25); + } +} + +static u8 EncounterSlot_WildMonLevelRoll(ENC_SLOT *encSlot, EncounterGenState *encounterGen) { + u8 hi; + u8 lo; + + if (encSlot->level_max >= encSlot->level_min) { + lo = encSlot->level_min; + hi = encSlot->level_max; + } else { + lo = encSlot->level_max; + hi = encSlot->level_min; + } + + u8 range = hi - lo + 1; + u8 lvl = LCRandom() % range; + if (!encounterGen->isEgg && (encounterGen->ability == ABILITY_HUSTLE || encounterGen->ability == ABILITY_VITAL_SPIRIT || encounterGen->ability == ABILITY_PRESSURE)) { + if (LCRandRange(2) == 0) { + return lo + lvl; + } + return hi; + } + + return lo + lvl; +} + +static void generateWildShinyAndAddToParty(u16 species, u8 level, int battler, u32 otid, EncounterGenState *encounterGen, Pokemon *leadMon, BattleSetup *battleSetup) { + u8 monGender; + u8 monNature; + Pokemon *wildMon = AllocMonZeroed(HEAP_ID_FIELD2); + BOOL overrideGenderOrNature; + u32 personality; + + ZeroMonData(wildMon); + + overrideGenderOrNature = FALSE; + if (!encounterGen->isEgg) { + if (encounterGen->ability == ABILITY_CUTE_CHARM) { + switch (GetMonBaseStat(species, BASE_GENDER_RATIO)) { + case MON_RATIO_MALE: + case MON_RATIO_FEMALE: + case MON_RATIO_UNKNOWN: + break; + default: + if (LCRandRange(3) != 0) { + monGender = GetMonData(leadMon, MON_DATA_GENDER, NULL); + overrideGenderOrNature = TRUE; + } + break; + } + } else if (encounterGen->ability == ABILITY_SYNCHRONIZE) { + if (LCRandRange(2) == 0) { + monNature = GetMonNature(leadMon); + overrideGenderOrNature = TRUE; + } + } + } + personality = GenerateShinyPersonality(otid); + if (overrideGenderOrNature) { + do { + if (encounterGen->ability == ABILITY_CUTE_CHARM) { + u8 generatedGender = GetGenderBySpeciesAndPersonality(species, personality); + GF_ASSERT(generatedGender != MON_GENDERLESS); + if (generatedGender != monGender) { + break; + } + personality = GenerateShinyPersonality(otid); + } else if (encounterGen->ability == ABILITY_SYNCHRONIZE) { + u8 generatedNature = GetNatureFromPersonality(personality); + if (generatedNature == monNature) { + break; + } + personality = GenerateShinyPersonality(otid); + } + } while (TRUE); + } + + CreateMon(wildMon, species, level, 0x20, TRUE, personality, OT_ID_PRESET, encounterGen->playerId); + GF_ASSERT(addGeneratedMonToBattleSetupParty(battler, encounterGen, wildMon, battleSetup)); + Heap_Free(wildMon); +} + +static void generateWildNonShinyAndAddToParty(u16 species, u8 level, int battler, BOOL forceOnePerfectIV, EncounterGenState *encounterGen, Pokemon *leadMon, BattleSetup *battleSetup) { + u8 monGender; + u8 canCoerceGender; + Pokemon *wildMon = AllocMonZeroed(HEAP_ID_FIELD2); + ZeroMonData(wildMon); + + canCoerceGender = TRUE; + switch (GetMonBaseStat(species, BASE_GENDER_RATIO)) { + case MON_RATIO_MALE: + case MON_RATIO_FEMALE: + case MON_RATIO_UNKNOWN: + canCoerceGender = FALSE; + default: + break; + } + + if (canCoerceGender && !encounterGen->isEgg && encounterGen->ability == ABILITY_CUTE_CHARM && LCRandRange(3) != 0) { + monGender = GetMonData(leadMon, MON_DATA_GENDER, NULL); + if (monGender == MON_FEMALE) { + monGender = MON_MALE; + } else if (monGender == MON_MALE) { + monGender = MON_FEMALE; + } else { + GF_ASSERT(FALSE); // can't put cute charm on a genderless pokemon + } + CreateMonWithGenderNatureLetter(wildMon, species, level, 0x20, monGender, getWildMonNature(leadMon, encounterGen), 0); + SetMonData(wildMon, MON_DATA_OT_ID, &encounterGen->playerId); + GF_ASSERT(addGeneratedMonToBattleSetupParty(battler, encounterGen, wildMon, battleSetup)); + Heap_Free(wildMon); + return; + } + + if (forceOnePerfectIV) { + int i; + BOOL success = FALSE; + for (i = 0; i < 4; ++i) { + CreateMonWithNature(wildMon, species, level, 0x20, getWildMonNature(leadMon, encounterGen)); + for (int j = 0; j < 6; ++j) { + if (GetMonData(wildMon, MON_DATA_HP_IV + j, NULL) == 31) { + success = TRUE; + break; + } + } + if (success) { + break; + } + } + } else { + CreateMonWithNature(wildMon, species, level, 0x20, getWildMonNature(leadMon, encounterGen)); + } + + SetMonData(wildMon, MON_DATA_OT_ID, &encounterGen->playerId); + GF_ASSERT(addGeneratedMonToBattleSetupParty(battler, encounterGen, wildMon, battleSetup)); + Heap_Free(wildMon); +} + +static BOOL FieldSystem_GenerateRegularEncounter(Pokemon *leadMon, int rodType, EncounterGenState *encounterGen, ENC_SLOT *encSlots, u8 encType, int battler, BattleSetup *battleSetup) { + u8 slot = 0; + u8 level = 0; + + switch (encType) { + case ENCOUNTER_TYPE_LAND: + if (!EncounterSlot_AbilityInfluenceOnSlotChoiceCheck(leadMon, encounterGen, encSlots, NUM_ENCOUNTERS_LAND, TYPE_STEEL, ABILITY_MAGNET_PULL, &slot) && !EncounterSlot_AbilityInfluenceOnSlotChoiceCheck(leadMon, encounterGen, encSlots, NUM_ENCOUNTERS_LAND, TYPE_ELECTRIC, ABILITY_STATIC, &slot)) { + slot = EncounterSlot_WildMonSlotRoll_Land(); + } + slot = ApplyAbilityEffectToSlotLevel(encSlots, NUM_ENCOUNTERS_LAND, encounterGen, slot); + level = encSlots[slot].level_max; + break; + case ENCOUNTER_TYPE_ROCK_SMASH: + if (!EncounterSlot_AbilityInfluenceOnSlotChoiceCheck(leadMon, encounterGen, encSlots, NUM_ENCOUNTERS_ROCKSMASH, TYPE_STEEL, ABILITY_MAGNET_PULL, &slot) && !EncounterSlot_AbilityInfluenceOnSlotChoiceCheck(leadMon, encounterGen, encSlots, NUM_ENCOUNTERS_ROCKSMASH, TYPE_ELECTRIC, ABILITY_STATIC, &slot)) { + slot = EncounterSlot_WildMonSlotRoll_RockSmash(); + } + level = EncounterSlot_WildMonLevelRoll(&encSlots[slot], encounterGen); + break; + case ENCOUNTER_TYPE_SURFING: + if (!EncounterSlot_AbilityInfluenceOnSlotChoiceCheck(leadMon, encounterGen, encSlots, NUM_ENCOUNTERS_SURF, TYPE_STEEL, ABILITY_MAGNET_PULL, &slot) && !EncounterSlot_AbilityInfluenceOnSlotChoiceCheck(leadMon, encounterGen, encSlots, NUM_ENCOUNTERS_SURF, TYPE_ELECTRIC, ABILITY_STATIC, &slot)) { + slot = EncounterSlot_WildMonSlotRoll_Surfing(); + } + level = EncounterSlot_WildMonLevelRoll(&encSlots[slot], encounterGen); + break; + case ENCOUNTER_TYPE_FISHING: + if (!EncounterSlot_AbilityInfluenceOnSlotChoiceCheck(leadMon, encounterGen, encSlots, NUM_ENCOUNTERS_FISH, TYPE_STEEL, ABILITY_MAGNET_PULL, &slot) && !EncounterSlot_AbilityInfluenceOnSlotChoiceCheck(leadMon, encounterGen, encSlots, NUM_ENCOUNTERS_FISH, TYPE_ELECTRIC, ABILITY_STATIC, &slot)) { + slot = EncounterSlot_WildMonSlotRoll_Fishing(rodType); + } + level = EncounterSlot_WildMonLevelRoll(&encSlots[slot], encounterGen); + break; + case ENCOUNTER_TYPE_HEADBUTT: + if (!EncounterSlot_AbilityInfluenceOnSlotChoiceCheck(leadMon, encounterGen, encSlots, NUM_ENCOUNTERS_HEADBUTT, TYPE_STEEL, ABILITY_MAGNET_PULL, &slot) && !EncounterSlot_AbilityInfluenceOnSlotChoiceCheck(leadMon, encounterGen, encSlots, NUM_ENCOUNTERS_HEADBUTT, TYPE_ELECTRIC, ABILITY_STATIC, &slot)) { + slot = EncounterSlot_WildMonSlotRoll_Headbutt(); + } + level = EncounterSlot_WildMonLevelRoll(&encSlots[slot], encounterGen); + break; + default: + GF_ASSERT(FALSE); + } + + if (encSlots[slot].species == SPECIES_UNOWN && !EncounterGen_CanGenerateUnownEncounter(encounterGen)) { + return FALSE; + } + if (DoesAbilitySuppressEncounter(encounterGen, leadMon, level)) { + return FALSE; + } + if (EncounterGen_DoesRepelSuppressEncounter(level, encounterGen) == TRUE) { + return FALSE; + } + generateWildNonShinyAndAddToParty(encSlots[slot].species, level, battler, FALSE, encounterGen, leadMon, battleSetup); + return TRUE; +} + +static BOOL FieldSystem_GenerateSafariEncounter(FieldSystem *fieldSystem, Pokemon *leadMon, int rodType, EncounterGenState *encounterGen, u8 encType, int battler, BattleSetup *battleSetup) { + u8 slot; + SAFARIZONE_AREASET *areaSet = SafariZone_GetAreaSet(Save_SafariZone_Get(fieldSystem->saveData), 3); + u16 species; + u8 level; + ENC_SLOT *encSlots; + int area = ov02_0224E340(fieldSystem); + TimeOfDayWildParam timeOfDay = GF_RTC_GetTimeOfDayWildParam(); + + switch (encType) { + case ENCOUNTER_TYPE_LAND: + encSlots = SafariZoneAreaSet_LoadAreaEncounters(areaSet, area, SAFARI_ENCOUNTER_SLOTS_LAND, timeOfDay, HEAP_ID_FIELD1); + break; + case ENCOUNTER_TYPE_SURFING: + encSlots = SafariZoneAreaSet_LoadAreaEncounters(areaSet, area, SAFARI_ENCOUNTER_SLOTS_SURFING, timeOfDay, HEAP_ID_FIELD1); + break; + case ENCOUNTER_TYPE_FISHING: + encSlots = SafariZoneAreaSet_LoadAreaEncounters(areaSet, area, SAFARI_ENCOUNTER_SLOTS_ROD(rodType), timeOfDay, HEAP_ID_FIELD1); + break; + default: // other encounter types invalid in safari + GF_ASSERT(FALSE); + } + + slot = 0; + BOOL encSlotModified = EncounterSlot_AbilityInfluenceOnSlotChoiceCheck(leadMon, encounterGen, encSlots, NUM_ENCOUNTERS_SAFARI, TYPE_STEEL, ABILITY_MAGNET_PULL, &slot); + if (!encSlotModified) { + encSlotModified = EncounterSlot_AbilityInfluenceOnSlotChoiceCheck(leadMon, encounterGen, encSlots, NUM_ENCOUNTERS_SAFARI, TYPE_ELECTRIC, ABILITY_STATIC, &slot); + } + if (!encSlotModified) { + slot = LCRandom() % NUM_ENCOUNTERS_SAFARI; + } + if (encType == ENCOUNTER_TYPE_LAND) { + slot = ApplyAbilityEffectToSlotLevel(encSlots, NUM_ENCOUNTERS_SAFARI, encounterGen, slot); + } + species = encSlots[slot].species; + level = encSlots[slot].level_max; + if (DoesAbilitySuppressEncounter(encounterGen, leadMon, level) || EncounterGen_DoesRepelSuppressEncounter(level, encounterGen) == TRUE) { + Heap_Free(encSlots); + return FALSE; + } + + generateWildNonShinyAndAddToParty(species, level, battler, TRUE, encounterGen, leadMon, battleSetup); + Heap_Free(encSlots); + return TRUE; +} + +static BOOL FieldSystem_GenerateBugContestEncounter_Internal(FieldSystem *fieldSystem, Pokemon *leadMon, int rodType, EncounterGenState *encounterGen, u8 encType, int battler, BattleSetup *battleSetup) { + ENC_SLOT *encSlot = BugContest_GetEncounterSlot(FieldSystem_BugContest_Get(fieldSystem), HEAP_ID_FIELD1); + if (EncounterGen_DoesRepelSuppressEncounter(encSlot->level_max, encounterGen) == TRUE) { + Heap_Free(encSlot); + return FALSE; + } + + generateWildNonShinyAndAddToParty(encSlot->species, encSlot->level_max, battler, TRUE, encounterGen, leadMon, battleSetup); + Heap_Free(encSlot); + return TRUE; +} + +void FieldSystem_GenerateSingleWildPokemon(FieldSystem *fieldSystem, u16 species, u8 level, BOOL shiny, BattleSetup *battleSetup) { + EncounterGenState encounterGen; + Pokemon *leadMon = Party_GetMonByIndex(SaveArray_Party_Get(fieldSystem->saveData), 0); + EncounterGenState_Init(fieldSystem, leadMon, NULL, &encounterGen); + if (shiny) { + u32 otid = PlayerProfile_GetTrainerID(Save_PlayerData_GetProfile(fieldSystem->saveData)); + generateWildShinyAndAddToParty(species, level, BATTLER_ENEMY, otid, &encounterGen, leadMon, battleSetup); + } else { + generateWildNonShinyAndAddToParty(species, level, BATTLER_ENEMY, FALSE, &encounterGen, leadMon, battleSetup); + } +} + +BOOL FieldSystem_CanGenerateStepEncounter(FieldSystem *fieldSystem, u8 metatileBehavior) { + int encounterRate = 0; + + if (MetatileBehavior_CanGenerateWalkingEncounters(metatileBehavior)) { + if (MetatileBehavior_IsSurfableWater(metatileBehavior)) { + encounterRate = FieldSystem_GetSurfingEncounterRate(fieldSystem); + } else { + encounterRate = FieldSystem_GetLandEncounterRate(fieldSystem); + } + } + + if (encounterRate != 0) { + if (fieldSystem->location->mapId == MAP_RUINS_OF_ALPH_UNDERGROUND_HALL + || fieldSystem->location->mapId == MAP_RUINS_OF_ALPH_UNDERGROUND_HALL_SINJOH_EVENT + || fieldSystem->location->mapId == MAP_RUINS_OF_ALPH_HALL_ENTRANCE_SINJOH_EVENT + || fieldSystem->location->mapId == MAP_RUINS_OF_ALPH_UNDERGROUND_HALL_SINJOH_EVENT_2) { + SaveVarsFlags *varsFlags = Save_VarsFlags_Get(fieldSystem->saveData); + for (u8 i = 0; i < 4; ++i) { + if (Save_VarsFlags_CheckAlphPuzzleFlag(varsFlags, i)) { + return TRUE; + } + } + return FALSE; + } + return TRUE; + } + + return FALSE; +} + +static int FieldSystem_GetLandEncounterRate(FieldSystem *fieldSystem) { + const ENC_DATA *encData = MapEvents_GetLoadedEncTable(fieldSystem); + return encData->encounterRate_walking; +} + +static int FieldSystem_GetSurfingEncounterRate(FieldSystem *fieldSystem) { + const ENC_DATA *encData = MapEvents_GetLoadedEncTable(fieldSystem); + return encData->encounterRate_surfing; +} + +static u8 FieldSystem_GetFishingEncounterRate(FieldSystem *fieldSystem, u8 rodType) { + const ENC_DATA *encData = MapEvents_GetLoadedEncTable(fieldSystem); + u8 ret; + + switch (rodType) { + case ROD_TYPE_OLD: + ret = encData->encounterRate_oldRod; + break; + case ROD_TYPE_GOOD: + ret = encData->encounterRate_goodRod; + break; + case ROD_TYPE_SUPER: + ret = encData->encounterRate_superRod; + break; + default: + GF_ASSERT(FALSE); + return 0; + } + if (ret == 0) { + return 0; + } + if (FollowMon_IsActive(fieldSystem)) { + ret += getFriendshipBoostToFishingBiteRate(GetMonData(GetFirstAliveMonInParty_CrashIfNone(SaveArray_Party_Get(fieldSystem->saveData)), MON_DATA_FRIENDSHIP, NULL)); + } + return ret; +} + +static u8 getFriendshipBoostToFishingBiteRate(u8 friendship) { + if (friendship <= 99) { + return 0; + } + if (friendship <= 149) { + return 20; + } + if (friendship <= 199) { + return 30; + } + if (friendship <= 249) { + return 40; + } + return 50; +} + +static int FieldSystem_GetRockSmashEncounterRate(FieldSystem *fieldSystem) { + const ENC_DATA *encData = MapEvents_GetLoadedEncTable(fieldSystem); + return encData->encounterRate_rockSmash; +} + +static BOOL chooseAbilityCoercedSlot(ENC_SLOT *encSlots, u8 numEncSlots, u8 type, u8 *slot) { + u8 foundSlots[NUM_ENCOUNTERS_LAND]; + u8 i; + u8 numFoundSlots; + + for (i = 0; i < NUM_ENCOUNTERS_LAND; ++i) { + foundSlots[i] = 0; + } + numFoundSlots = 0; + for (i = 0; i < numEncSlots; ++i) { + u8 type1 = GetMonBaseStat(encSlots[i].species, BASE_TYPE1); + u8 type2 = GetMonBaseStat(encSlots[i].species, BASE_TYPE2); + if (type1 == type || type2 == type) { + foundSlots[numFoundSlots++] = i; + } + } + if (numFoundSlots == 0 || numFoundSlots == numEncSlots) { + return FALSE; + } + *slot = foundSlots[LCRandom() % numFoundSlots]; + return TRUE; +} + +static BOOL EncounterSlot_AbilityInfluenceOnSlotChoiceCheck(Pokemon *leadMon, EncounterGenState *encounterGen, ENC_SLOT *encSlots, u8 numSlots, u8 type, u8 ability, u8 *slotNum) { + if (!encounterGen->isEgg && encounterGen->ability == ability && LCRandRange(2) == 0) { + return chooseAbilityCoercedSlot(encSlots, numSlots, type, slotNum); + } + + return FALSE; +} + +static u8 ApplyAbilityEffectToEncounterRate(BOOL isFishing, u8 encounterRate, EncounterGenState *encounterGen, u16 weatherType, Pokemon *leadMon) { + int ret = encounterRate; + + if (!encounterGen->isEgg) { + if (isFishing) { + if (encounterGen->ability == ABILITY_STICKY_HOLD || encounterGen->ability == ABILITY_SUCTION_CUPS) { + ret *= 2; + } + } else if (encounterGen->ability == ABILITY_ARENA_TRAP || encounterGen->ability == ABILITY_NO_GUARD || encounterGen->ability == ABILITY_ILLUMINATE) { + ret *= 2; + } else if (encounterGen->ability == ABILITY_SNOW_CLOAK) { + if (weatherType == WEATHER_SNOW) { + ret /= 2; + } + } else if (encounterGen->ability == ABILITY_WHITE_SMOKE || encounterGen->ability == ABILITY_QUICK_FEET || encounterGen->ability == ABILITY_STENCH) { + ret /= 2; + } + if (ret > 100) { + ret = 100; + } + } + + return ret; +} + +static BOOL DoesAbilitySuppressEncounter(EncounterGenState *encounterGen, Pokemon *leadMon, u8 level) { + if (encounterGen->isSweetScent) { + return FALSE; + } + if (!encounterGen->isEgg) { + if (encounterGen->ability == ABILITY_KEEN_EYE || encounterGen->ability == ABILITY_INTIMIDATE) { + u8 leadMonLevel = GetMonData(leadMon, MON_DATA_LEVEL, NULL); + if (leadMonLevel <= 5) { + return FALSE; + } else if (level <= leadMonLevel - 5 && LCRandRange(2) == 0) { + return TRUE; + } + } + } + + return FALSE; +} + +static void FieldSystem_CreateBattleSetupForWildBattle(FieldSystem *fieldSystem, u8 encounterCtx, BattleSetup **pBattleSetup) { + switch (encounterCtx) { + case ENCOUNTER_CONTEXT_SAFARI: { + LocalFieldData *localFieldData = Save_LocalFieldData_Get(fieldSystem->saveData); + u16 *pSafariBalls = LocalFieldData_GetSafariBallsCounter(localFieldData); + *pBattleSetup = BattleSetup_New_SafariZone(HEAP_ID_FIELD2, *pSafariBalls); + } break; + case ENCOUNTER_CONTEXT_BUG_CONTEST: { + BugContest *bugContest = FieldSystem_BugContest_Get(fieldSystem); + u16 *pSportBalls = BugContest_GetSportBallsAddr(bugContest); + *pBattleSetup = BattleSetup_New_BugContest(HEAP_ID_FIELD2, *pSportBalls, bugContest->mon); + } break; + default: + *pBattleSetup = BattleSetup_New(HEAP_ID_FIELD2, BATTLE_TYPE_NONE); + break; + } +} + +static BOOL EncounterGen_DoesRepelSuppressEncounter(u8 roamerLevel, EncounterGenState *encounterGen) { + if (encounterGen->isRepel && encounterGen->level > roamerLevel) { + return TRUE; + } + + return FALSE; +} + +static BOOL EncounterGen_CanGenerateUnownEncounter(EncounterGenState *encounterGen) { + for (int i = 0; i < ALPH_PUZZLE_MAX; ++i) { + if (encounterGen->unownPuzzleFlags[i]) { + return TRUE; + } + } + + return FALSE; +} + +static void initRoamingWildmon(u32 otId, Roamer *roamer, BattleSetup *battleSetup) { + Pokemon *pokemon = AllocMonZeroed(HEAP_ID_FIELD1); + u32 species = GetRoamerData(roamer, ROAMER_DATA_SPECIES); + u8 level = GetRoamerData(roamer, ROAMER_DATA_LEVEL); + u32 ivs = GetRoamerData(roamer, ROAMER_DATA_IVS); + u32 pid = GetRoamerData(roamer, ROAMER_DATA_PERSONALITY); + u32 status = GetRoamerData(roamer, ROAMER_DATA_STATUS); + u16 hp = GetRoamerData(roamer, ROAMER_DATA_HP); + + CreateMonWithFixedIVs(pokemon, species, level, ivs, pid); + SetMonData(pokemon, MON_DATA_OT_ID, &otId); + SetMonData(pokemon, MON_DATA_STATUS, &status); + SetMonData(pokemon, MON_DATA_HP, &hp); + GF_ASSERT(Party_AddMon(battleSetup->party[BATTLER_ENEMY], pokemon)); + Heap_Free(pokemon); +} + +static BOOL getRandomActiveRoamerInCurrMap(FieldSystem *fieldSystem, Roamer **pRoamer) { + Roamer *foundRoamers[ROAMER_MAX]; + u8 nRoamers = 0; + RoamerSaveData *saveRoamers = Save_Roamers_Get(fieldSystem->saveData); + + for (u8 i = 0; i < ROAMER_MAX; ++i) { + u32 mapId = GetRoamMapByLocationIdx(Roamer_GetLocation(saveRoamers, i)); + if (GetRoamerIsActiveByIndex(saveRoamers, i) && mapId == fieldSystem->location->mapId) { + foundRoamers[nRoamers] = Roamers_GetRoamMonStats(saveRoamers, i); + ++nRoamers; + } + } + if (nRoamers == 0) { + return FALSE; + } + if (LCRandRange(2) == 0) { + return FALSE; + } + if (nRoamers > 1) { + u16 chosenRoamer = LCRandRange(nRoamers); + *pRoamer = foundRoamers[chosenRoamer]; + } else { + *pRoamer = foundRoamers[0]; + } + return TRUE; +} + +static BOOL hasCaughtUnownForm(Pokedex *pokedex, u8 numForms, u8 targetForm) { + for (int i = 0; i < numForms; ++i) { + if (targetForm == Pokedex_GetSeenFormByIdx_Unown(pokedex, i, TRUE)) { + return TRUE; + } + } + + return FALSE; +} + +static const u8 sUnlockedUnown_Kabuto[] = { + UNOWN_A, + UNOWN_B, + UNOWN_C, + UNOWN_D, + UNOWN_E, + UNOWN_F, + UNOWN_G, + UNOWN_H, + UNOWN_I, + UNOWN_J, +}; +static const u8 sUnlockedUnown_Aerodactyl[] = { + UNOWN_R, + UNOWN_S, + UNOWN_T, + UNOWN_U, + UNOWN_V, +}; +static const u8 sUnlockedUnown_Omanyte[] = { + UNOWN_K, + UNOWN_L, + UNOWN_M, + UNOWN_N, + UNOWN_O, + UNOWN_P, + UNOWN_Q, +}; +static const u8 sUnlockedUnown_HoOh[] = { + UNOWN_W, + UNOWN_X, + UNOWN_Y, + UNOWN_Z, +}; +static const u8 sUnlockedUnown_Sinjoh[] = { + UNOWN_EXCLAMATION_MARK, + UNOWN_QUESTION_MARK, +}; + +static const UnlockedUnown sUnlockedUnown[] = { + { NELEMS(sUnlockedUnown_Kabuto), sUnlockedUnown_Kabuto }, + { NELEMS(sUnlockedUnown_Aerodactyl), sUnlockedUnown_Aerodactyl }, + { NELEMS(sUnlockedUnown_Omanyte), sUnlockedUnown_Omanyte }, + { NELEMS(sUnlockedUnown_HoOh), sUnlockedUnown_HoOh }, + { NELEMS(sUnlockedUnown_Sinjoh), sUnlockedUnown_Sinjoh }, +}; + +static u8 EncounterGen_ChooseUnownForm(EncounterGenState *encounterGen) { + u8 ret; + int i; + int j; + int numUncaughtUnown; + int numAvailableUnown; + int numSeenUnown; + BOOL isUnownSounds = FALSE; + u8 *availableUnown; + u8 *availableUncaughtUnown; + const UnlockedUnown *r4; + + if (encounterGen->isSinjohMap) { + return sUnlockedUnown[4].letters[LCRandom() % 2]; + } + + availableUnown = Heap_AllocAtEnd(HEAP_ID_FIELD1, UNOWN_FORM_MAX); + availableUncaughtUnown = Heap_AllocAtEnd(HEAP_ID_FIELD1, UNOWN_FORM_MAX); + MI_CpuClear8(availableUnown, UNOWN_FORM_MAX); + MI_CpuClear8(availableUncaughtUnown, UNOWN_FORM_MAX); + if (GetRadioMusicPlayingSeq() == RADIO_MUSIC_SEQ_UNOWN) { + isUnownSounds = TRUE; + } + numUncaughtUnown = 0; + numAvailableUnown = 0; + numSeenUnown = Pokedex_GetSeenFormNum_Unown(encounterGen->pokedex, TRUE); + for (i = 0; i < 4; ++i) { + if (!encounterGen->unownPuzzleFlags[i]) { + continue; + } + r4 = &sUnlockedUnown[i]; + for (j = 0; j < r4->num; ++j) { + if (!hasCaughtUnownForm(encounterGen->pokedex, numSeenUnown, r4->letters[j])) { + availableUncaughtUnown[numUncaughtUnown] = r4->letters[j]; + ++numUncaughtUnown; + } + availableUnown[numAvailableUnown] = r4->letters[j]; + ++numAvailableUnown; + } + } + if (isUnownSounds && numUncaughtUnown > 0 && (LCRandom() % 100) < 50) { + ret = availableUncaughtUnown[LCRandom() % numUncaughtUnown]; + } else { + ret = availableUnown[LCRandom() % numAvailableUnown]; + } + Heap_Free(availableUncaughtUnown); + Heap_Free(availableUnown); + return ret; +} + +static BOOL addGeneratedMonToBattleSetupParty(int battler, EncounterGenState *encounterGen, Pokemon *pokemon, BattleSetup *battleSetup) { + WildMonSetRandomHeldItem(pokemon, battleSetup->battleType, !encounterGen->isEgg && encounterGen->ability == ABILITY_COMPOUNDEYES ? 1 : 0); + if (GetMonData(pokemon, MON_DATA_SPECIES, NULL) == SPECIES_UNOWN) { + u8 form = EncounterGen_ChooseUnownForm(encounterGen); + SetMonData(pokemon, MON_DATA_FORM, &form); + } + return Party_AddMon(battleSetup->party[battler], pokemon); +} + +static u8 ApplyAbilityEffectToSlotLevel(ENC_SLOT *encSlots, int numEncSlots, EncounterGenState *encounterGen, u8 chosenSlot) { + if (!encounterGen->isEgg && (encounterGen->ability == ABILITY_VITAL_SPIRIT || encounterGen->ability == ABILITY_HUSTLE || encounterGen->ability == ABILITY_PRESSURE)) { + if (LCRandRange(2) == 0) { + return chosenSlot; + } + for (u8 i = 0; i < numEncSlots; ++i) { + if (encSlots[i].species == encSlots[chosenSlot].species && encSlots[i].level_max > encSlots[chosenSlot].level_max) { + chosenSlot = i; + } + } + return chosenSlot; + } + + return chosenSlot; +} + +static void EncounterGenState_Init(FieldSystem *fieldSystem, Pokemon *pokemon, const ENC_DATA *encData, EncounterGenState *encounterGen) { + if (!GetMonData(pokemon, MON_DATA_IS_EGG, NULL)) { + encounterGen->isEgg = FALSE; + encounterGen->ability = GetMonData(pokemon, MON_DATA_ABILITY, NULL); + } else { + encounterGen->isEgg = TRUE; + encounterGen->ability = NUM_ABILITIES; + } + encounterGen->level = 0; + encounterGen->isRepel = FALSE; + encounterGen->isSweetScent = FALSE; + encounterGen->unk_0F = 0; + encounterGen->unk_10 = 0; + SaveVarsFlags *saveVarsFlags = Save_VarsFlags_Get(fieldSystem->saveData); + encounterGen->isSinjohMap = fieldSystem->location->mapId == MAP_RUINS_OF_ALPH_HALL_ENTRANCE_SINJOH_EVENT; + for (int i = 0; i < 4; ++i) { + encounterGen->unownPuzzleFlags[i] = Save_VarsFlags_CheckAlphPuzzleFlag(saveVarsFlags, i); + } + encounterGen->pokedex = Save_Pokedex_Get(fieldSystem->saveData); + encounterGen->playerId = PlayerProfile_GetTrainerID(Save_PlayerData_GetProfile(fieldSystem->saveData)); +} + +static void FieldSystem_UpdateTurnFrameCounter(FieldSystem *fieldSystem) { + u8 facingDirection = PlayerAvatar_GetFacingDirection(fieldSystem->playerAvatar); + BOOL isTurnFrame = FALSE; + switch (facingDirection) { + case DIR_NORTH: + if (fieldSystem->lastFacingDirection == DIR_SOUTH) { + isTurnFrame = TRUE; + } + break; + case DIR_SOUTH: + if (fieldSystem->lastFacingDirection == DIR_NORTH) { + isTurnFrame = TRUE; + } + break; + case DIR_WEST: + if (fieldSystem->lastFacingDirection == DIR_EAST) { + isTurnFrame = TRUE; + } + break; + case DIR_EAST: + if (fieldSystem->lastFacingDirection == DIR_WEST) { + isTurnFrame = TRUE; + } + break; + default: + GF_ASSERT(FALSE); + return; + } + if (isTurnFrame && fieldSystem->reverseTurnFrameSteps < 0xFFFF) { + ++fieldSystem->reverseTurnFrameSteps; + } + fieldSystem->lastFacingDirection = facingDirection; +} diff --git a/src/field/headbutt.c b/src/field/headbutt.c index d13a109c11..ffa3f7fd6e 100644 --- a/src/field/headbutt.c +++ b/src/field/headbutt.c @@ -2,6 +2,8 @@ #include "global.h" +#include "field/encounter_check.h" + #include "assert.h" #include "encounter.h" #include "fieldmap.h" @@ -11,7 +13,6 @@ #include "map_object.h" #include "overlay_01_021EDAFC.h" #include "overlay_01_02204ED8.h" -#include "overlay_02.h" #include "player_data.h" #include "scrcmd.h" #include "script.h" @@ -139,7 +140,7 @@ static BOOL Task_TryHeadbuttEncounter(TaskManager *taskManager) { Heap_Free(didHeadbuttStartBattle); return TRUE; } - if (FieldSystem_ChooseHeadbuttEncounter(fieldSystem, &setup, headbuttEncounterSlots)) { + if (FieldSystem_PerformHeadbuttEncounterCheck(fieldSystem, &setup, headbuttEncounterSlots)) { *didHeadbuttStartBattle->resultPtr = TRUE; Heap_Free(headbuttTable); Heap_Free(didHeadbuttStartBattle); diff --git a/src/field/overlay_01_rock_smash_item.c b/src/field/overlay_01_rock_smash_item.c index 61ca98e857..004bbd4d30 100644 --- a/src/field/overlay_01_rock_smash_item.c +++ b/src/field/overlay_01_rock_smash_item.c @@ -5,12 +5,13 @@ #include "constants/abilities.h" #include "constants/items.h" +#include "field/encounter_check.h" + #include "encounter.h" #include "filesystem.h" #include "follow_mon.h" #include "math_util.h" #include "overlay_01_022001E4.h" -#include "overlay_02.h" #include "script.h" #include "task.h" #include "unk_020689C8.h" @@ -108,7 +109,7 @@ static BOOL Task_RockSmashItemCheck(TaskManager *taskman) { FieldSystem *fieldSystem = TaskManager_GetFieldSystem(taskman); RockSmashItemCheckWork *env = TaskManager_GetEnvironment(taskman); - if (ov02_022470A0(fieldSystem, &setup)) { + if (FieldSystem_PerformRockSmashEncounterCheck(fieldSystem, &setup)) { *env->itemFound = FALSE; *env->item = ITEM_NONE; Heap_Free(env); diff --git a/src/field/overlay_2_gear_phone.c b/src/field/overlay_2_gear_phone.c index 3eba306e5c..c31603241d 100644 --- a/src/field/overlay_2_gear_phone.c +++ b/src/field/overlay_2_gear_phone.c @@ -1,4 +1,5 @@ #include "constants/maps.h" +#include "constants/phone_scripts.h" #include "constants/sndseq.h" #include "overlay_2/overlay_02_gear_phone.h" @@ -17,27 +18,37 @@ #include "unk_02092BE8.h" typedef struct UnkStruct_02253C86 { - u8 unk0; + u8 callerId; u8 unk1; - u16 unk2; - u8 unk4; + u16 callScriptID; + u8 forcePickUp; u8 unk5; } UnkStruct_02253C86; static const UnkStruct_02253C86 ov02_02253C84[] = { - { 1, 0, 13, 0, 0 }, - { 1, 0, 7, 0, 0 }, - { 15, 0, 85, 1, 0 }, - { 9, 0, 93, 1, 0 }, - { 2, 0, 0, 0, 0 }, - { 6, 0, 0, 0, 0 }, - { 24, 0, 0, 0, 0 }, - { 24, 0, 142, 1, 0 }, - { 24, 0, 143, 1, 0 }, - { 24, 0, 144, 1, 0 }, - { 24, 0, 145, 1, 0 }, - { 24, 0, 146, 1, 0 }, - { 0, 0, 27, 0, 0 } + // Hey, player, this is great news! A Pokémon hatched from that Egg! + { PHONE_CONTACT_PROF__ELM, 0, PHONE_SCRIPT_013, FALSE, 0 }, + // Hello, player? I discovered something called Pokérus + { PHONE_CONTACT_PROF__ELM, 0, PHONE_SCRIPT_007, FALSE, 0 }, + // Oh hey, this is the Bike Shop! + { PHONE_CONTACT_BIKE_SHOP, 0, PHONE_SCRIPT_085, TRUE, 0 }, + // Hey, this is Bill here. You know your PC boxes are full, right? + { PHONE_CONTACT_BILL, 0, PHONE_SCRIPT_093, TRUE, 0 }, + { PHONE_CONTACT_PROF__OAK, 0, PHONE_SCRIPT_NONE, FALSE, 0 }, + { PHONE_CONTACT_DAY_C_MAN, 0, PHONE_SCRIPT_NONE, FALSE, 0 }, + { PHONE_CONTACT_BAOBA, 0, PHONE_SCRIPT_NONE, FALSE, 0 }, + // This is Baoba, I've finally come up with the next test + { PHONE_CONTACT_BAOBA, 0, PHONE_SCRIPT_142, TRUE, 0 }, + // This is Baoba, I thought of a new way to play! It's called Object Arrangement! + { PHONE_CONTACT_BAOBA, 0, PHONE_SCRIPT_143, TRUE, 0 }, + // This is Baoba, we've come up with new objects + { PHONE_CONTACT_BAOBA, 0, PHONE_SCRIPT_144, TRUE, 0 }, + // This is Baoba, we've come up with so many objects! + { PHONE_CONTACT_BAOBA, 0, PHONE_SCRIPT_145, TRUE, 0 }, + // This is Baoba, I'm stuck in a time loop! + { PHONE_CONTACT_BAOBA, 0, PHONE_SCRIPT_146, TRUE, 0 }, + // Hi honey, I bought something with your money :3 + { PHONE_CONTACT_MOTHER, 0, PHONE_SCRIPT_027, FALSE, 0 } }; static u32 ov02_02251FDC(GearPhoneRingManager *gearPhone, PhoneBook *phoneBook, u32 mapId); @@ -87,7 +98,7 @@ u8 ov02_02251EE8(GearPhoneRingManager *gearPhone, Unk_PokegearSTRUCT_14 *a1) { a1->unk_1 = gearPhone->unk_arr5[1]; a1->isScriptedCall = gearPhone->isScriptedCall; a1->callScriptID = gearPhone->callScriptID; - a1->unk_2 = gearPhone->unk_var7; + a1->callTriggerID = gearPhone->callTriggerID; return gearPhone->callerId; } @@ -107,7 +118,7 @@ BOOL ov02_02251F20(GearPhoneRingManager *gearPhone) { if (var) { FreePhoneBook(phoneBook); if (var == 2) { - gearPhone->sys->unkD2_7 = 1; + gearPhone->sys->unkD2_7 = TRUE; StartMapSceneScript(gearPhone->sys, 0x7FF, 0); return TRUE; } @@ -444,27 +455,27 @@ asm static u32 ov02_02251FDC(GearPhoneRingManager *gearPhone, PhoneBook *phoneBo #endif static u32 ov02_022521C0(GearPhoneRingManager *gearPhone, PhoneBook *phoneBook, u32 mapId) { - u8 r6 = ov02_02252218(gearPhone, phoneBook, mapId); - if (r6 == 0xFF) { + u8 callTriggerID = ov02_02252218(gearPhone, phoneBook, mapId); + if (callTriggerID == 0xFF) { return FALSE; } - GearPhoneRingManager_SetCallerParams(gearPhone, ov02_02253C84[r6].unk0, 0xFF, 0, 3, ov02_02253C84[r6].unk2); + GearPhoneRingManager_SetCallerParams(gearPhone, ov02_02253C84[callTriggerID].callerId, 0xFF, 0, 3, ov02_02253C84[callTriggerID].callScriptID); GearPhoneRingManager_StartRinging(gearPhone); - gearPhone->unk_var7 = r6; - return ov02_02253C84[r6].unk4 + 1; + gearPhone->callTriggerID = callTriggerID; + return ov02_02253C84[callTriggerID].forcePickUp + 1; } // FIXME: This is a fakematch from decomp.me, it doesn't match locally without the label https://decomp.me/scratch/YdDak static u8 ov02_02252218(GearPhoneRingManager *gearPhone, PhoneBook *phoneBook, u32 mapId) { - u8 *ptr = Heap_AllocAtEnd(HEAP_ID_FIELD1, 13); - MI_CpuFill8(ptr, 0, 13); + u8 *ptr = Heap_AllocAtEnd(HEAP_ID_FIELD1, NUM_CALL_TRIGGERS); + MI_CpuFill8(ptr, 0, NUM_CALL_TRIGGERS); int cnt = 0; - for (int i = 0; i < 13; i++) { - if (sub_0202F08C(gearPhone->savingsData, i) == 0) { + for (int i = 0; i < NUM_CALL_TRIGGERS; i++) { + if (PhoneCallPersistentState_CheckCallTriggerFlag(gearPhone->savingsData, i) == 0) { continue; } - PhoneBookEntry *entry = &phoneBook->entries[ov02_02253C84[i].unk0]; + PhoneBookEntry *entry = &phoneBook->entries[ov02_02253C84[i].callerId]; if (entry->id == PHONE_CONTACT_DAY_C_MAN) { if (SavePokegear_IsNumberRegistered(gearPhone->pokegearData, PHONE_CONTACT_DAY_C_MAN) != 0xFF) { // had to do this to match @@ -493,24 +504,24 @@ static void ov02_022522AC(GearPhoneRingManager *gearPhone, BOOL a1) { GearPhone_ToggleRinging(gearPhone, a1); } -int GetRadioMusicPlayingSeq(void) { +enum RadioMusicPlayingSeq GetRadioMusicPlayingSeq(void) { u16 seq = SndRadio_GetSeqNo(); switch (seq) { case SEQ_GS_RADIO_MARCH: case SEQ_GS_P_RADIO_MARCH: - return 1; + return RADIO_MUSIC_SEQ_MARCH; case SEQ_GS_RADIO_KOMORIUTA: case SEQ_GS_P_RADIO_KOMORIUTA: - return 2; + return RADIO_MUSIC_SEQ_LULLABY; case SEQ_GS_RADIO_R_101: - return 3; + return RADIO_MUSIC_SEQ_HOENN_SOUNDS; case SEQ_GS_RADIO_R_201: - return 4; + return RADIO_MUSIC_SEQ_SINNOH_SOUNDS; case SEQ_GS_RADIO_UNKNOWN: - return 6; + return RADIO_MUSIC_SEQ_UNOWN; case SEQ_GS_HUE: case SEQ_GS_P_HUE: - return 5; + return RADIO_MUSIC_SEQ_POKEFLUTE; } - return 0; + return RADIO_MUSIC_SEQ_NONE; } diff --git a/src/field_use_item.c b/src/field_use_item.c index 2a1d2bf45e..ef7fe5673b 100644 --- a/src/field_use_item.c +++ b/src/field_use_item.c @@ -260,7 +260,7 @@ static void ItemMenuUseFunc_Bicycle(struct ItemMenuUseData *data, const struct I static BOOL ItemFieldUseFunc_Bicycle(struct ItemFieldUseData *data) { FieldSystem_CreateTask(data->fieldSystem, Task_MountOrDismountBicycle, NULL); - data->fieldSystem->unkD2_7 = 1; + data->fieldSystem->unkD2_7 = TRUE; return FALSE; } @@ -428,12 +428,12 @@ static void ItemMenuUseFunc_OldRod(struct ItemMenuUseData *data, const struct It StartMenuTaskData *env = TaskManager_GetEnvironment(data->taskManager); FieldSystem_LoadFieldOverlay(fieldSystem); env->exitTaskFunc = Task_OverworldFish; - env->exitTaskEnvironment = CreateFishingRodTaskEnv(fieldSystem, HEAP_ID_FIELD2, 0); + env->exitTaskEnvironment = CreateFishingRodTaskEnv(fieldSystem, HEAP_ID_FIELD2, ROD_TYPE_OLD); env->state = 12; } static BOOL ItemFieldUseFunc_OldRod(struct ItemFieldUseData *data) { - FieldSystem_CreateTask(data->fieldSystem, Task_OverworldFish, CreateFishingRodTaskEnv(data->fieldSystem, HEAP_ID_FIELD1, 0)); + FieldSystem_CreateTask(data->fieldSystem, Task_OverworldFish, CreateFishingRodTaskEnv(data->fieldSystem, HEAP_ID_FIELD1, ROD_TYPE_OLD)); return FALSE; } @@ -442,12 +442,12 @@ static void ItemMenuUseFunc_GoodRod(struct ItemMenuUseData *data, const struct I StartMenuTaskData *env = TaskManager_GetEnvironment(data->taskManager); FieldSystem_LoadFieldOverlay(fieldSystem); env->exitTaskFunc = Task_OverworldFish; - env->exitTaskEnvironment = CreateFishingRodTaskEnv(fieldSystem, HEAP_ID_FIELD2, 1); + env->exitTaskEnvironment = CreateFishingRodTaskEnv(fieldSystem, HEAP_ID_FIELD2, ROD_TYPE_GOOD); env->state = 12; } static BOOL ItemFieldUseFunc_GoodRod(struct ItemFieldUseData *data) { - FieldSystem_CreateTask(data->fieldSystem, Task_OverworldFish, CreateFishingRodTaskEnv(data->fieldSystem, HEAP_ID_FIELD1, 1)); + FieldSystem_CreateTask(data->fieldSystem, Task_OverworldFish, CreateFishingRodTaskEnv(data->fieldSystem, HEAP_ID_FIELD1, ROD_TYPE_GOOD)); return FALSE; } @@ -456,12 +456,12 @@ static void ItemMenuUseFunc_SuperRod(struct ItemMenuUseData *data, const struct StartMenuTaskData *env = TaskManager_GetEnvironment(data->taskManager); FieldSystem_LoadFieldOverlay(fieldSystem); env->exitTaskFunc = Task_OverworldFish; - env->exitTaskEnvironment = CreateFishingRodTaskEnv(fieldSystem, HEAP_ID_FIELD2, 2); + env->exitTaskEnvironment = CreateFishingRodTaskEnv(fieldSystem, HEAP_ID_FIELD2, ROD_TYPE_SUPER); env->state = 12; } static BOOL ItemFieldUseFunc_SuperRod(struct ItemFieldUseData *data) { - FieldSystem_CreateTask(data->fieldSystem, Task_OverworldFish, CreateFishingRodTaskEnv(data->fieldSystem, HEAP_ID_FIELD1, 2)); + FieldSystem_CreateTask(data->fieldSystem, Task_OverworldFish, CreateFishingRodTaskEnv(data->fieldSystem, HEAP_ID_FIELD1, ROD_TYPE_SUPER)); return FALSE; } diff --git a/src/field_warp_tasks.c b/src/field_warp_tasks.c index b24c75e335..2329086190 100644 --- a/src/field_warp_tasks.c +++ b/src/field_warp_tasks.c @@ -209,8 +209,8 @@ void sub_02053038(FieldSystem *fieldSystem, BOOL isConnection) { } } TryStartMapScriptByType(fieldSystem, 2); - fieldSystem->unk7E = 0; - fieldSystem->unk7C = 0; + fieldSystem->encounterInhibitSteps = 0; + fieldSystem->reverseTurnFrameSteps = 0; fieldSystem->unk78 = 0; Save_FollowMon_SetInhibitFlagState(Save_FollowMon_Get(fieldSystem->saveData), FALSE); ClearFlag99A(Save_VarsFlags_Get(fieldSystem->saveData)); diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c index 93a703a354..d4fcf9a2a1 100644 --- a/src/metatile_behavior.c +++ b/src/metatile_behavior.c @@ -200,7 +200,7 @@ BOOL sub_0205B984(u8 tile) { return tile == TILE_BEHAVIOR_22 || tile == TILE_BEHAVIOR_29; } -BOOL sub_0205B994(u8 tile) { +BOOL MetatileBehavior_CanGenerateWalkingEncounters(u8 tile) { return (_020FCA74[tile] & 2) != 0; } diff --git a/src/overlay_25.c b/src/overlay_25.c index 8f5d149312..b0fe5ccbf1 100644 --- a/src/overlay_25.c +++ b/src/overlay_25.c @@ -300,11 +300,10 @@ static void TrainerHouse_CopyToPokemon(TrainerHouseMon *trainerHouseMon, Pokemon s32 i; u8 tempByte; ZeroMonData(mon); - u32 level = trainerHouseMon->level > MAX_TRAINER_HOUSE_LEVEL + tempByte = trainerHouseMon->level > MAX_TRAINER_HOUSE_LEVEL ? MAX_TRAINER_HOUSE_LEVEL : trainerHouseMon->level; - tempByte = level; - u32 species = trainerHouseMon->species; + u16 species = trainerHouseMon->species; u32 ivs = trainerHouseMon->ivsWord & 0x3fffffff; u32 pid = trainerHouseMon->pid; CreateMonWithFixedIVs(mon, species, tempByte, ivs, pid); diff --git a/src/overlay_bug_contest.c b/src/overlay_bug_contest.c index cb5ad41ac0..dc440575a4 100644 --- a/src/overlay_bug_contest.c +++ b/src/overlay_bug_contest.c @@ -183,8 +183,8 @@ ENC_SLOT *BugContest_GetEncounterSlot(BugContest *bugContest, enum HeapID heapID } slot->species = bugContest->encounters[i].species; modulo = bugContest->encounters[i].lvlmax - bugContest->encounters[i].lvlmin + 1; - slot->level_min = (LCRandom() % modulo) + bugContest->encounters[i].lvlmin; - slot->level_max = 0; + slot->level_max = (LCRandom() % modulo) + bugContest->encounters[i].lvlmin; + slot->level_min = 0; return slot; } diff --git a/src/pokemon.c b/src/pokemon.c index abf453e39a..6127956d12 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4,6 +4,7 @@ #include "constants/abilities.h" #include "constants/balls.h" +#include "constants/battle.h" #include "constants/items.h" #include "constants/map_sections.h" #include "constants/moves.h" @@ -296,7 +297,7 @@ u32 GenPersonalityByGenderAndNature(u16 species, u8 gender, u8 nature) { return (u32)pid; } -void CreateMonWithFixedIVs(Pokemon *mon, int species, int level, int ivs, int personality) { +void CreateMonWithFixedIVs(Pokemon *mon, u16 species, u8 level, u32 ivs, u32 personality) { CreateMon(mon, species, level, 0, 1, personality, 0, 0); SetMonData(mon, MON_DATA_COMBINED_IVS, &ivs); CalcMonLevelAndStats(mon); @@ -3737,13 +3738,13 @@ static const u16 sItemOdds[2][2] = { { 20, 80 }, }; -void WildMonSetRandomHeldItem(Pokemon *mon, u32 a1, u32 a2) { +void WildMonSetRandomHeldItem(Pokemon *mon, u32 battleType, u32 isCompoundEyes) { u32 chance; u16 species; u16 form; u16 item1; u16 item2; - if (!(a1 & 0x81)) { + if (!(battleType & (BATTLE_TYPE_TRAINER | BATTLE_TYPE_FRONTIER))) { chance = (u32)(LCRandom() % 100); species = (u16)GetMonData(mon, MON_DATA_SPECIES, 0); form = (u16)GetMonData(mon, MON_DATA_FORM, 0); @@ -3752,8 +3753,8 @@ void WildMonSetRandomHeldItem(Pokemon *mon, u32 a1, u32 a2) { if (item1 == item2 && item1 != ITEM_NONE) { SetMonData(mon, MON_DATA_HELD_ITEM, &item1); } else { - if (chance >= sItemOdds[a2][0]) { - if (chance < sItemOdds[a2][1]) { + if (chance >= sItemOdds[isCompoundEyes][0]) { + if (chance < sItemOdds[isCompoundEyes][1]) { SetMonData(mon, MON_DATA_HELD_ITEM, &item1); } else { SetMonData(mon, MON_DATA_HELD_ITEM, &item2); diff --git a/src/safari_zone.c b/src/safari_zone.c index 8b87c22aae..a495f35422 100644 --- a/src/safari_zone.c +++ b/src/safari_zone.c @@ -43,7 +43,7 @@ void SafariZone_ResetAreaSetToDefaultSet(SAFARIZONE_AREASET *area_set, u32 defau SafariZone_InitArea(&area_set->areas[i], sSafariZoneDefaultAreaSets[default_set_no_mod][i]); } - MI_CpuClear8(area_set->unk2DC, sizeof(area_set->unk2DC)); + MI_CpuClear8(area_set->areaLevels, sizeof(area_set->areaLevels)); } void sub_0202F5F8(SafariZone *safari_zone, s32 areaSetNo) { @@ -91,15 +91,15 @@ void SafariZone_SetAreaSet(SafariZone *safari_zone, s32 area_set_no, SAFARIZONE_ MI_CpuCopy8(area_set_src, &safari_zone->area_sets[area_set_no], sizeof(SAFARIZONE_AREASET)); } -void sub_0202F6A0(SafariZone *safari_zone, u8 a1) { +void SafariZone_SetLevel(SafariZone *safari_zone, u8 a1) { safari_zone->unk5F8 = a1; } -u8 sub_0202F6AC(SafariZone *safari_zone) { +u8 SafariZone_GetLevel(SafariZone *safari_zone) { return safari_zone->unk5F8; } -void sub_0202F6B8(SAFARIZONE_AREASET *area_set, s32 a1) { +void SafariZone_AddToAllAreaLevels(SafariZone *safariZone, s32 a1) { u8 sp8[6]; u32 area_no; int j; @@ -112,15 +112,15 @@ void sub_0202F6B8(SAFARIZONE_AREASET *area_set, s32 a1) { j = 0; MI_CpuClear8(sp8, NELEMS(sp8)); for (i = 0; i < SAFARI_ZONE_MAX_AREAS_PER_SET; i++) { - area_no = area_set->areas[i].area_no; + area_no = safariZone->area_sets[0].areas[i].area_no; if (sub_0202FA3C(area_no, sp8, j)) { continue; } - if (area_set->unk2DC[area_no] + a1 < 0xFF) { - area_set->unk2DC[area_no] += a1; + if (safariZone->area_sets[0].areaLevels[area_no] + a1 < 0xFF) { + safariZone->area_sets[0].areaLevels[area_no] += a1; } else { - area_set->unk2DC[area_no] = 0xFF; + safariZone->area_sets[0].areaLevels[area_no] = 0xFF; } sp8[j++] = area_no; diff --git a/src/save_pokegear.c b/src/save_pokegear.c index 1f1412e590..0cab4bf06d 100644 --- a/src/save_pokegear.c +++ b/src/save_pokegear.c @@ -4,6 +4,8 @@ #include "constants/items.h" +#include "overlay_2/overlay_02_gear_phone.h" + #include "math_util.h" static void SavePokegear_Init_Internal(SavePokegear *pokegear); @@ -194,42 +196,42 @@ static void PhoneCallPersistentState_Init(PhoneCallPersistentState *callPersiste callPersistentState->kenjiWaitDays = 7; } -void sub_0202F01C(PhoneCallPersistentState *callPersistentState, u8 idx) { +void PhoneCallPersistentState_SetCallTriggerFlag(PhoneCallPersistentState *callPersistentState, u8 idx) { u8 byteno; u8 flagno; - if (idx >= 13) { + if (idx >= NUM_CALL_TRIGGERS) { GF_ASSERT(FALSE); return; } byteno = idx / 8; flagno = idx % 8; - callPersistentState->unk_14E[byteno] |= (1 << flagno); + callPersistentState->callTriggerFlags[byteno] |= (1 << flagno); } -void sub_0202F050(PhoneCallPersistentState *callPersistentState, u8 idx) { +void PhoneCallPersistentState_ClearCallTriggerFlag(PhoneCallPersistentState *callPersistentState, u8 idx) { u8 byteno; u8 mask; - if (idx >= 13) { + if (idx >= NUM_CALL_TRIGGERS) { GF_ASSERT(FALSE); return; } byteno = idx / 8; mask = 1 << (idx % 8); - if (callPersistentState->unk_14E[byteno] & mask) { - callPersistentState->unk_14E[byteno] ^= mask; + if (callPersistentState->callTriggerFlags[byteno] & mask) { + callPersistentState->callTriggerFlags[byteno] ^= mask; } } -BOOL sub_0202F08C(PhoneCallPersistentState *callPersistentState, u8 idx) { +BOOL PhoneCallPersistentState_CheckCallTriggerFlag(PhoneCallPersistentState *callPersistentState, u8 idx) { u8 byteno; u8 flagno; - if (idx >= 13) { + if (idx >= NUM_CALL_TRIGGERS) { GF_ASSERT(FALSE); return FALSE; } byteno = idx / 8; flagno = idx % 8; - return (callPersistentState->unk_14E[byteno] >> flagno) & 1; + return (callPersistentState->callTriggerFlags[byteno] >> flagno) & 1; } void PhoneCallPersistentState_PhoneRematches_SetSeeking(PhoneCallPersistentState *callPersistentState, u8 idx, BOOL state) { diff --git a/src/scrcmd_c.c b/src/scrcmd_c.c index 8f820c2676..d2ca475ebc 100644 --- a/src/scrcmd_c.c +++ b/src/scrcmd_c.c @@ -3406,10 +3406,10 @@ BOOL ScrCmd_SafariZoneAction(ScriptContext *ctx) { case 1: Save_VarsFlags_ClearSafariSysFlag(varsFlags); sub_0202F5F8(safariZone, 1); - r1 = sub_0202F6AC(safariZone); + r1 = SafariZone_GetLevel(safariZone); if (r1 != 0) { - sub_0209730C(ctx->fieldSystem->saveData, r1); - sub_0202F6A0(safariZone, 0); + SaveData_SafariZone_CheckAreasWithUpdatedEncounters(ctx->fieldSystem->saveData, r1); + SafariZone_SetLevel(safariZone, 0); } *p_nSafariBall = 0; *p_nSafariSteps = 0; @@ -4734,7 +4734,7 @@ BOOL ScrCmd_148(ScriptContext *ctx) { } BOOL ScrCmd_149(ScriptContext *ctx) { - sub_0202F050(SaveData_GetPhoneCallPersistentState(ctx->fieldSystem->saveData), ScriptReadByte(ctx)); + PhoneCallPersistentState_ClearCallTriggerFlag(SaveData_GetPhoneCallPersistentState(ctx->fieldSystem->saveData), ScriptReadByte(ctx)); return FALSE; } diff --git a/src/sys_flags.c b/src/sys_flags.c index a5ba9adda6..a4c413cdb1 100644 --- a/src/sys_flags.c +++ b/src/sys_flags.c @@ -134,7 +134,7 @@ void Save_VarsFlags_SetAlphPuzzleFlag(SaveVarsFlags *state, u8 flag) { } } -BOOL Save_VarsFlags_CheckAlphPuzzleFlag(SaveVarsFlags *state, u8 flag) { +BOOL Save_VarsFlags_CheckAlphPuzzleFlag(SaveVarsFlags *state, int flag) { BOOL ret = FALSE; switch (flag) { diff --git a/src/unk_02055418.c b/src/unk_02055418.c index fc3c3615a3..862a9a4956 100644 --- a/src/unk_02055418.c +++ b/src/unk_02055418.c @@ -86,7 +86,7 @@ void sub_02055508(FieldSystem *fieldSystem, int days) { sub_0202F294(SaveData_GetPhoneCallPersistentState(fieldSystem->saveData), days); if (!hasPenalty) { sub_02031CCC(Save_ApricornBox_Get(fieldSystem->saveData), days); - sub_0209730C(fieldSystem->saveData, days); + SaveData_SafariZone_CheckAreasWithUpdatedEncounters(fieldSystem->saveData, days); } sub_02031AE4(Save_Pokeathlon_Get(fieldSystem->saveData)); Save_VarsFlags_UpdateBuenasPasswordSet(Save_VarsFlags_Get(fieldSystem->saveData)); diff --git a/src/unk_02092BE8.c b/src/unk_02092BE8.c index 9dd1614462..5a4b138c34 100644 --- a/src/unk_02092BE8.c +++ b/src/unk_02092BE8.c @@ -77,7 +77,7 @@ static void FieldSystem_InitPokegearArgs(FieldSystem *sys, PokegearArgs *pokegea pokegearArgs->callScriptID = Unk_struct.callScriptID; // message num? pokegearArgs->isScriptedCall = Unk_struct.isScriptedCall; // call type? if (pokegearArgs->isScriptedCall == 3) { - sub_0202F050(SaveData_GetPhoneCallPersistentState(sys->saveData), Unk_struct.unk_2); + PhoneCallPersistentState_ClearCallTriggerFlag(SaveData_GetPhoneCallPersistentState(sys->saveData), Unk_struct.callTriggerID); } else if (pokegearArgs->isScriptedCall == 0) { sub_0202AB18(Save_Misc_Get(sys->saveData), Unk_struct.unk_0, Unk_struct.unk_1, pokegearArgs->callerId); } @@ -134,7 +134,7 @@ PhoneBookEntry *GearPhoneRingManager_GetCallerPhoneBookEntry(GearPhoneRingManage } void sub_02092E14(GearPhoneRingManager *ptr, u8 a1, BOOL a2) { - sub_0202F01C(ptr->savingsData, a1); + PhoneCallPersistentState_SetCallTriggerFlag(ptr->savingsData, a1); if (a2) { if (ptr->unk_var8 < ptr->unk_varC - 1) { ptr->unk_var8 = ptr->unk_varC - 1; @@ -160,7 +160,7 @@ static void sub_02092E54(GearPhoneRingManager *ptr) { u8 var4057 = Save_VarsFlags_GetVar4057(state); u8 i; for (i = 0; i < 5; i++) { - if (sub_0202F08C(ptr->savingsData, i + 7)) { + if (PhoneCallPersistentState_CheckCallTriggerFlag(ptr->savingsData, i + 7)) { return; } } @@ -172,7 +172,7 @@ static void sub_02092E54(GearPhoneRingManager *ptr) { if (sub_0202F798(zone, igt, 3) == 0) { return; } - sub_02092E14(ptr, 7, TRUE); + sub_02092E14(ptr, CALL_TRIGGER_BAOBA_NEXT_TEST, TRUE); } else { if (var4057 < 6) { return; @@ -186,19 +186,17 @@ static void sub_02092E54(GearPhoneRingManager *ptr) { } if (Unkvar > 1) { if (var < 3) { - sub_02092E14(ptr, 11, TRUE); + sub_02092E14(ptr, CALL_TRIGGER_BAOBA_MEMORY_LOSS, TRUE); } else { - sub_02092E14(ptr, 10, TRUE); + sub_02092E14(ptr, CALL_TRIGGER_BAOBA_EVEN_MORE_OBJECTS, TRUE); } } else { if (var == 0) { - sub_02092E14(ptr, 8, TRUE); + sub_02092E14(ptr, CALL_TRIGGER_BAOBA_OBJECT_ARRANGEMENT, TRUE); + } else if (var == 3) { + sub_02092E14(ptr, CALL_TRIGGER_BAOBA_EVEN_MORE_OBJECTS, TRUE); } else { - if (var == 3) { - sub_02092E14(ptr, 10, TRUE); - } else { - sub_02092E14(ptr, 9, TRUE); - } + sub_02092E14(ptr, CALL_TRIGGER_BAOBA_MORE_OBJECTS, TRUE); } } } @@ -228,7 +226,7 @@ static void gearRingingManagerReset(GearPhoneRingManager *ptr) { ptr->callerId = PHONE_CONTACT_NONE; ptr->isScriptedCall = 0; ptr->callScriptID = 0; - ptr->unk_var7 = 0; + ptr->callTriggerID = 0; ptr->entry.id = PHONE_CONTACT_NONE; ptr->unk_var12 = 50; } @@ -282,13 +280,13 @@ BOOL sub_02093070(FieldSystem *sys) { if (SavePokegear_IsNumberRegistered(SaveData_Pokegear_Get(sys->saveData), PHONE_CONTACT_BILL) == 0xff) { return FALSE; } - if (Save_VarsFlags_CheckFlagInArray(Save_VarsFlags_Get(sys->saveData), FLAG_UNK_985)) { + if (Save_VarsFlags_CheckFlagInArray(Save_VarsFlags_Get(sys->saveData), FLAG_SYS_GOT_BILL_PC_FULL_CALL)) { return FALSE; } if (PCStorage_CountEmptySpotsInAllBoxes(SaveArray_PCStorage_Get(sys->saveData)) != 0) { return FALSE; } - sub_02092E14(FieldSystem_GetGearPhoneRingManager(sys), 3, TRUE); + sub_02092E14(FieldSystem_GetGearPhoneRingManager(sys), CALL_TRIGGER_BILL_PC_FULL, TRUE); return TRUE; } @@ -306,7 +304,7 @@ BOOL sub_020930C4(FieldSystem *sys) { var = 9; // unreachable } if (!Save_VarsFlags_CheckFlagInArray(state, var + FLAG_SYS_OAK_ACKNOWLEDGED_NATIONAL_DEX_COMPLETION)) { - sub_02092E14(FieldSystem_GetGearPhoneRingManager(sys), 4, FALSE); + sub_02092E14(FieldSystem_GetGearPhoneRingManager(sys), CALL_TRIGGER_OAK_DEX_PROGRESS, FALSE); return TRUE; } return FALSE; @@ -316,7 +314,7 @@ BOOL sub_02093134(FieldSystem *sys, Pokemon *mon) { if (MonIsFromTogepiEgg(mon, sys->saveData) == 0) { return FALSE; } - sub_02092E14(FieldSystem_GetGearPhoneRingManager(sys), 0, 1); + sub_02092E14(FieldSystem_GetGearPhoneRingManager(sys), CALL_TRIGGER_ELM_EGG_HATCHED, 1); Save_VarsFlags_SetFlagInArray(Save_VarsFlags_Get(sys->saveData), FLAG_SYS_HATCHED_TOGEPI_EGG); return TRUE; } @@ -326,9 +324,9 @@ BOOL sub_0209316C(FieldSystem *sys) { if (SavePokegear_IsNumberRegistered(SaveData_Pokegear_Get(sys->saveData), PHONE_CONTACT_DAY_C_MAN) == 0xff) { return FALSE; } - if (Save_VarsFlags_CheckFlagInArray(state, FLAG_UNK_992) && !Save_VarsFlags_CheckFlagInArray(state, FLAG_UNK_99E)) { + if (Save_VarsFlags_CheckFlagInArray(state, FLAG_SYS_TRIGGER_EGG_CALL) && !Save_VarsFlags_CheckFlagInArray(state, FLAG_SYS_SUBSCRIBED_TO_EGG_CALLS)) { return FALSE; } - sub_02092E14(FieldSystem_GetGearPhoneRingManager(sys), 5, 1); + sub_02092E14(FieldSystem_GetGearPhoneRingManager(sys), CALL_TRIGGER_DAYCARE_HAS_EGG, 1); return TRUE; } diff --git a/src/unk_02097268.c b/src/unk_02097268.c new file mode 100644 index 0000000000..842f25d1bf --- /dev/null +++ b/src/unk_02097268.c @@ -0,0 +1,302 @@ +#include "unk_02097268.h" + +#include "constants/buildmodel.h" +#include "constants/phone_constants.h" + +#include "gf_gfx_loader.h" +#include "sys_flags.h" + +typedef struct SafariZoneAreaEncounterSlot { + u16 species; + u16 level; +} SafariZoneAreaEncounterSlot; + +typedef struct SafariZoneAreaBonusSlotUnlockConditions { + u8 object1_type; + u8 object1_level; + u8 object2_type; + u8 object2_level; +} SafariZoneAreaBonusSlotUnlockConditions; + +typedef struct SafariZoneObjectLevels { + u8 levels[4]; + u8 count[4]; +} SafariZoneObjectLevels; + +typedef struct LoadedSafariZoneEncounterData { + SafariZoneAreaEncounterSlot *baseMons; + SafariZoneAreaEncounterSlot *bonusMons; + SafariZoneAreaBonusSlotUnlockConditions *unlockConditions; + int bonusMonsArraySize; + u8 numBonusMons; +} LoadedSafariZoneEncounterData; + +static BOOL encSlotsEqual(const ENC_SLOT *a, const ENC_SLOT *b); +static BOOL encSlotArraysEqual(const ENC_SLOT *a, const ENC_SLOT *b); +static BOOL areaIsInArray(u8 areaNum, const u8 *areas, u8 numAreas); +static u8 getObjectLevelBoost(u8 days, u8 objectType); +static void SafariZoneAreaSet_GetObjectsInArea(SAFARIZONE_AREASET *areaSet, int area, SafariZoneObjectLevels *out); + +// clang-format off +static const SafariObjectConfig sObjects[NUM_SAFARI_ZONE_OBJECT_IDS] = { + [SAFARI_ZONE_OBJECTID_SHRUBBERY] = { BUILD_MODEL_SAF_GO01, FALSE, 1, 1, FALSE, SAFARI_ZONE_OBJECT_TYPE_PLAINS }, + [SAFARI_ZONE_OBJECTID_RED_FLOWER] = { BUILD_MODEL_SAF_GO02, FALSE, 1, 1, FALSE, SAFARI_ZONE_OBJECT_TYPE_PLAINS }, + [SAFARI_ZONE_OBJECTID_WHITE_FLOWER] = { BUILD_MODEL_SAF_GO03, FALSE, 1, 1, FALSE, SAFARI_ZONE_OBJECT_TYPE_PLAINS }, + [SAFARI_ZONE_OBJECTID_TREE] = { BUILD_MODEL_SAF_TO01, FALSE, 2, 2, FALSE, SAFARI_ZONE_OBJECT_TYPE_FOREST }, + [SAFARI_ZONE_OBJECTID_STUMP] = { BUILD_MODEL_SAF_TO02, FALSE, 2, 2, FALSE, SAFARI_ZONE_OBJECT_TYPE_FOREST }, + [SAFARI_ZONE_OBJECTID_BRANCHES] = { BUILD_MODEL_SAF_TO03, FALSE, 2, 2, FALSE, SAFARI_ZONE_OBJECT_TYPE_FOREST }, + [SAFARI_ZONE_OBJECTID_SMALL_ROCK] = { BUILD_MODEL_SAF_RO01, FALSE, 1, 1, FALSE, SAFARI_ZONE_OBJECT_TYPE_PEAK }, + [SAFARI_ZONE_OBJECTID_BIG_ROCK] = { BUILD_MODEL_SAF_RO02, FALSE, 2, 2, FALSE, SAFARI_ZONE_OBJECT_TYPE_PEAK }, + [SAFARI_ZONE_OBJECTID_MOSSY_ROCK] = { BUILD_MODEL_SAF_RO03, FALSE, 2, 2, FALSE, SAFARI_ZONE_OBJECT_TYPE_PEAK }, + [SAFARI_ZONE_OBJECTID_PUDDLE] = { BUILD_MODEL_SAF_WO01, FALSE, 2, 2, FALSE, SAFARI_ZONE_OBJECT_TYPE_WATER }, + [SAFARI_ZONE_OBJECTID_FOUNTAIN] = { BUILD_MODEL_SAF_WO02, TRUE, 2, 2, FALSE, SAFARI_ZONE_OBJECT_TYPE_WATER }, + [SAFARI_ZONE_OBJECTID_WATER_HOLE] = { BUILD_MODEL_SAF_WO03, FALSE, 2, 2, FALSE, SAFARI_ZONE_OBJECT_TYPE_WATER }, + [SAFARI_ZONE_OBJECTID_BENCH] = { BUILD_MODEL_SAF_EO01, FALSE, 2, 1, FALSE, SAFARI_ZONE_OBJECT_TYPE_NONE }, + [SAFARI_ZONE_OBJECTID_SHORT_FENCE1] = { BUILD_MODEL_SAF_EO02, FALSE, 1, 1, FALSE, SAFARI_ZONE_OBJECT_TYPE_NONE }, + [SAFARI_ZONE_OBJECTID_SHORT_FENCE2] = { BUILD_MODEL_SAF_EO03, FALSE, 1, 1, FALSE, SAFARI_ZONE_OBJECT_TYPE_NONE }, + [SAFARI_ZONE_OBJECTID_LONG_FENCE1] = { BUILD_MODEL_SAF_EO04, FALSE, 2, 1, FALSE, SAFARI_ZONE_OBJECT_TYPE_NONE }, + [SAFARI_ZONE_OBJECTID_LONG_FENCE2] = { BUILD_MODEL_SAF_EO05, FALSE, 1, 2, FALSE, SAFARI_ZONE_OBJECT_TYPE_NONE }, + [SAFARI_ZONE_OBJECTID_SIGNBOARD] = { BUILD_MODEL_SAF_EO06, FALSE, 1, 1, FALSE, SAFARI_ZONE_OBJECT_TYPE_NONE }, + [SAFARI_ZONE_OBJECTID_YOUR_STATUE] = { BUILD_MODEL_SAF_EO07M, FALSE, 1, 1, TRUE, SAFARI_ZONE_OBJECT_TYPE_NONE }, + [SAFARI_ZONE_OBJECTID_YOUR_FLAG] = { BUILD_MODEL_SAF_EO08M, FALSE, 1, 1, TRUE, SAFARI_ZONE_OBJECT_TYPE_NONE }, + [SAFARI_ZONE_OBJECTID_OUTSIDE_LAMP] = { BUILD_MODEL_SAF_EO09, FALSE, 1, 1, FALSE, SAFARI_ZONE_OBJECT_TYPE_NONE }, + [SAFARI_ZONE_OBJECTID_GUIDEPOST_R_] = { BUILD_MODEL_SAF_EO10, FALSE, 1, 1, FALSE, SAFARI_ZONE_OBJECT_TYPE_NONE }, + [SAFARI_ZONE_OBJECTID_GUIDEPOST_L_] = { BUILD_MODEL_SAF_EO11, FALSE, 1, 1, FALSE, SAFARI_ZONE_OBJECT_TYPE_NONE }, + [SAFARI_ZONE_OBJECTID_TRASH_CAN] = { BUILD_MODEL_SAF_EO12, FALSE, 1, 1, FALSE, SAFARI_ZONE_OBJECT_TYPE_NONE }, +}; +// clang-format on + +void GetSafariObjectConfig(SafariObjectConfig *dest, int idx, int gender) { + if (idx >= NUM_SAFARI_ZONE_OBJECT_IDS) { + GF_ASSERT(FALSE); + idx = 0; + } + *dest = sObjects[idx]; + if (dest->hasGenderedLayout && gender == TRAINER_FEMALE) { + // BUILD_MODEL_SAF_EO07M --> BUILD_MODEL_SAF_EO07F + // BUILD_MODEL_SAF_EO08M --> BUILD_MODEL_SAF_EO08F + ++dest->buildModel; + } +} + +static BOOL encSlotsEqual(const ENC_SLOT *a, const ENC_SLOT *b) { + if (a->species != b->species || a->level_max != b->level_max || a->level_min != b->level_min) { + return FALSE; + } + + return TRUE; +} + +static BOOL encSlotArraysEqual(const ENC_SLOT *a, const ENC_SLOT *b) { + for (int i = 0; i < NUM_ENCOUNTERS_SAFARI; ++i) { + if (!encSlotsEqual(&a[i], &b[i])) { + return FALSE; + } + } + + return TRUE; +} + +static BOOL areaIsInArray(u8 areaNum, const u8 *areas, u8 numAreas) { + for (int i = 0; i < numAreas; ++i) { + if (areas[i] == areaNum) { + return TRUE; + } + } + + return FALSE; +} + +void SaveData_SafariZone_CheckAreasWithUpdatedEncounters(SaveData *saveData, int daysElapsed) { + int i; + int j; + int numAreas; + ENC_SLOT *allEncounterSlots[SAFARI_ZONE_MAX_AREAS_PER_SET][NUM_SAFARI_ENCOUNTER_TYPES]; + ENC_SLOT *encounters; + u8 areas[SAFARI_ZONE_MAX_AREAS_PER_SET]; + PhoneCallPersistentState *callPersistentState = SaveData_GetPhoneCallPersistentState(saveData); + SafariZone *safariZone = Save_SafariZone_Get(saveData); + SAFARIZONE_AREASET *areaSet = SafariZone_GetAreaSet(safariZone, 0); + + static const u16 ffff = 0xFFFF; + + if (SafariZone_GetObjectUnlockLevel(safariZone) == 0 || daysElapsed <= 0) { + return; + } + + if (Save_VarsFlags_CheckSafariSysFlag(Save_VarsFlags_Get(saveData))) { + int zoneLevel = SafariZone_GetLevel(safariZone); + SafariZone_SetLevel(safariZone, zoneLevel + daysElapsed); + return; + } + + numAreas = 0; + MI_CpuClear8(areas, sizeof(areas)); + MI_CpuClear8(allEncounterSlots, sizeof(allEncounterSlots)); + for (i = 0; i < SAFARI_ZONE_MAX_AREAS_PER_SET; ++i) { + // (((ffff >> i) & 1) * 4) + 1 + // fancy way of saying + // mapHasWater ? 5 : 1 + for (j = 0; j < (((ffff >> i) & 1) * 4) + 1; ++j) { + allEncounterSlots[i][j] = SafariZoneAreaSet_LoadAreaEncounters(areaSet, i, j, TIMEOFDAY_WILD_MORN, HEAP_ID_FIELD2); + } + } + SafariZone_AddToAllAreaLevels(safariZone, daysElapsed); + for (i = 0; i < SAFARI_ZONE_MAX_AREAS_PER_SET; ++i) { + u8 areaNum = areaSet->areas[i].area_no; + if (areaIsInArray(areaNum, areas, numAreas)) { + continue; + } + for (j = 0; j < (((ffff >> i) & 1) * 4) + 1; ++j) { + encounters = SafariZoneAreaSet_LoadAreaEncounters(areaSet, i, j, TIMEOFDAY_WILD_MORN, HEAP_ID_FIELD2); + if (encSlotArraysEqual(allEncounterSlots[i][j], encounters)) { + Heap_Free(encounters); + continue; + } + if (!areaIsInArray(areaNum, areas, numAreas)) { + areas[numAreas++] = areaNum; + } + Heap_Free(encounters); + } + } + for (i = 0; i < SAFARI_ZONE_MAX_AREAS_PER_SET; ++i) { + for (j = 0; j < (((ffff >> i) & 1) * 4) + 1; ++j) { + if (allEncounterSlots[i][j] != NULL) { + Heap_Free(allEncounterSlots[i][j]); + } + } + } + if (numAreas == 0) { + PhoneCallPersistentState_ClearCallTriggerFlag(callPersistentState, CALL_TRIGGER_BAOBA_NEW_POKEMON); + PhoneCallPersistentState_SafariZoneArrangement_Set(callPersistentState, NULL, 0); + } else { + PhoneCallPersistentState_SetCallTriggerFlag(callPersistentState, CALL_TRIGGER_BAOBA_NEW_POKEMON); + PhoneCallPersistentState_SafariZoneArrangement_Set(callPersistentState, areas, numAreas); + } +} + +ENC_SLOT *SafariZoneAreaSet_LoadAreaEncounters(SAFARIZONE_AREASET *areaSet, int area, int encounterType, TimeOfDayWildParam timeOfDay, enum HeapID heapID) { + int i; + int offset; + u8 *encDataArc; + ENC_SLOT *ret; + SAFARIZONE_AREA *safariZoneArea; + LoadedSafariZoneEncounterData *loadedEncData; + u32 lcl_heapID; // required to match + + safariZoneArea = &areaSet->areas[area]; + lcl_heapID = heapID; + ret = Heap_AllocAtEnd((enum HeapID)lcl_heapID, NUM_ENCOUNTERS_SAFARI * sizeof(ENC_SLOT)); + + for (i = 0; i < NUM_ENCOUNTERS_SAFARI; ++i) { + if (encounterType == SAFARI_ENCOUNTER_SLOTS_LAND) { + ret[i].species = SPECIES_RATTATA; + } else { + ret[i].species = SPECIES_MAGIKARP; + } + ret[i].level_max = ret[i].level_min = 5; + } + + encDataArc = GfGfxLoader_LoadFromNarc(NARC_a_2_3_0, safariZoneArea->area_no, FALSE, (enum HeapID)lcl_heapID, TRUE); + if (encDataArc == NULL) { + return ret; + } + + loadedEncData = Heap_AllocAtEnd((enum HeapID)lcl_heapID, NUM_SAFARI_ENCOUNTER_TYPES * sizeof(LoadedSafariZoneEncounterData)); + offset = 8; + for (i = 0; i < NUM_SAFARI_ENCOUNTER_TYPES; ++i) { + loadedEncData[i].baseMons = (SafariZoneAreaEncounterSlot *)&encDataArc[offset]; + offset += TIMEOFDAY_WILD_MAX * NUM_ENCOUNTERS_SAFARI * sizeof(SafariZoneAreaEncounterSlot); + loadedEncData[i].bonusMons = (SafariZoneAreaEncounterSlot *)&encDataArc[offset]; + loadedEncData[i].numBonusMons = encDataArc[i]; + loadedEncData[i].bonusMonsArraySize = loadedEncData[i].numBonusMons * sizeof(SafariZoneAreaEncounterSlot); + offset += TIMEOFDAY_WILD_MAX * loadedEncData[i].bonusMonsArraySize; + loadedEncData[i].unlockConditions = (SafariZoneAreaBonusSlotUnlockConditions *)&encDataArc[offset]; + offset += loadedEncData[i].numBonusMons * sizeof(SafariZoneAreaBonusSlotUnlockConditions); + } + if (loadedEncData[1].numBonusMons == 0 && encounterType > 0) { + Heap_Free(loadedEncData); + Heap_Free(encDataArc); + return ret; + } + offset = NUM_ENCOUNTERS_SAFARI * timeOfDay; + for (i = 0; i < NUM_ENCOUNTERS_SAFARI; ++i) { + SafariZoneAreaEncounterSlot *slot = &loadedEncData[encounterType].baseMons[offset + i]; + ret[i].species = slot->species; + ret[i].level_max = ret[i].level_min = slot->level; + } + + { + SafariZoneObjectLevels areaObjects; + u8 numBonusMons = 0; + SafariZoneAreaSet_GetObjectsInArea(areaSet, area, &areaObjects); + for (i = 0; i < loadedEncData[encounterType].numBonusMons; ++i) { + int idx; + SafariZoneAreaBonusSlotUnlockConditions *unlockConditions = &loadedEncData[encounterType].unlockConditions[i]; + if (areaObjects.levels[unlockConditions->object1_type - 1] < unlockConditions->object1_level) { + continue; + } + if (unlockConditions->object2_type != 0 && areaObjects.levels[unlockConditions->object2_type - 1] < unlockConditions->object2_level) { + continue; + } + idx = loadedEncData[encounterType].numBonusMons * timeOfDay + i; + ret[numBonusMons].species = loadedEncData[encounterType].bonusMons[idx].species; + ret[numBonusMons].level_max = ret[numBonusMons].level_min = loadedEncData[encounterType].bonusMons[idx].level; + if (++numBonusMons > NUM_ENCOUNTERS_SAFARI - 1) { + break; + } + } + } + Heap_Free(loadedEncData); + Heap_Free(encDataArc); + return ret; +} + +// clang-format off +static const u8 sObjectLevelBoosts[][5] = { + [SAFARI_ZONE_OBJECT_TYPE_PLAINS - 1] = { 1, 5, 10, 15, 20 }, + [SAFARI_ZONE_OBJECT_TYPE_FOREST - 1] = { 2, 6, 11, 16, 21 }, + [SAFARI_ZONE_OBJECT_TYPE_PEAK - 1] = { 3, 7, 12, 17, 22 }, + [SAFARI_ZONE_OBJECT_TYPE_WATER - 1] = { 4, 8, 13, 18, 23 }, +}; +// clang-format on + +static u8 getObjectLevelBoost(u8 days, u8 objectType) { + if (objectType == SAFARI_ZONE_OBJECT_TYPE_NONE) { + return 0; + } + for (int i = 0; i < 5; ++i) { + if (days < sObjectLevelBoosts[objectType - 1][i]) { + return i + 1; + } + } + if (days < 25) { + return 6; + } + return 7; +} + +static void SafariZoneAreaSet_GetObjectsInArea(SAFARIZONE_AREASET *areaSet, int area, SafariZoneObjectLevels *out) { + SafariObjectConfig objectConfig; + u8 areaLevel; + SAFARIZONE_AREA *szArea; + + szArea = &areaSet->areas[area]; + areaLevel = areaSet->areaLevels[szArea->area_no] / 10; + + MI_CpuClear8(out, sizeof(SafariZoneObjectLevels)); + + for (int i = 0; i < szArea->active_object_count; ++i) { + GetSafariObjectConfig(&objectConfig, szArea->objects[i].unk[0], 2); + if (objectConfig.objectType == SAFARI_ZONE_OBJECT_TYPE_NONE) { + continue; + } + ++out->count[objectConfig.objectType - 1]; + u8 attrBonus = getObjectLevelBoost(areaLevel, objectConfig.objectType); + if (out->levels[objectConfig.objectType - 1] + attrBonus > 255) { + out->levels[objectConfig.objectType - 1] = 255; + } else { + out->levels[objectConfig.objectType - 1] += attrBonus; + } + } +} diff --git a/src/unk_02097F6C.c b/src/unk_02097F6C.c index 1bcb167436..9979b02585 100644 --- a/src/unk_02097F6C.c +++ b/src/unk_02097F6C.c @@ -12,6 +12,7 @@ #define SWARM_MAP_COUNT 20 +// 0 = land, 1 = surf, 2 = fish static const u16 sSwarmMapLUT[SWARM_MAP_COUNT][2] = { { MAP_ROUTE_1, 0 }, { MAP_ROUTE_3, 0 }, diff --git a/tools/py_scripts/scrcmd.json b/tools/py_scripts/scrcmd.json index 0c733937aa..288471838b 100644 --- a/tools/py_scripts/scrcmd.json +++ b/tools/py_scripts/scrcmd.json @@ -945,7 +945,7 @@ ] }, { - "name": "scrcmd_149", + "name": "unset_phone_call_trigger", "args": [ 1 ]