diff options
author | YamaArashi <shadow962@live.com> | 2016-10-25 23:00:52 -0700 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2016-10-25 23:04:25 -0700 |
commit | 67fc1b8a4426fae09e60d4f0f83f320d25770c57 (patch) | |
tree | 5aaee5260ed805d7dd6d49be030b52f689773f10 /src | |
parent | e65f3ef73280c94549452f4142cbee70887fad65 (diff) |
fix GetLocalWildMon()
Diffstat (limited to 'src')
-rw-r--r-- | src/rom4.c | 11 | ||||
-rw-r--r-- | src/wild_encounter.c | 144 |
2 files changed, 37 insertions, 118 deletions
diff --git a/src/rom4.c b/src/rom4.c index ce067b104..82c78b21d 100644 --- a/src/rom4.c +++ b/src/rom4.c @@ -75,7 +75,7 @@ extern struct WarpData gUnknown_02029800; extern struct WarpData gUnknown_02029808; extern struct UnkPlayerStruct gUnknown_02029810; extern u16 gUnknown_02029814; -extern u8 gUnknown_02029816; +extern bool8 gUnknown_02029816; extern struct UnkMapObjStruct gUnknown_02029818[]; extern u8 gUnknown_0202E85C; @@ -129,7 +129,8 @@ extern u8 FlagGet(u16); extern u8 GetSav1Weather(void); extern void PlayerGetDestCoords(u16 *, u16 *); extern u8 sub_810D32C(void); -extern u16 GetLocalWildMon(u8 *); +extern u16 GetLocalWildMon(bool8 *); +extern u16 GetMirageIslandMon(void); extern void sub_80C76A0(void); extern void sub_8080B60(void); extern void sub_810CC80(void); @@ -173,8 +174,6 @@ void sav1_reset_battle_music_maybe(void); void sub_8053F0C(void); u8 is_light_level_8_or_9(u8); void sub_8054164(void); -u16 GetMirageIslandMon(); -u16 GetLocalWildMon(u8 *); void sub_8055354(void); void c2_overworld(void); void CB2_LoadMap2(void); @@ -1004,7 +1003,7 @@ void sub_8054050(void) { s16 x, y; PlayerGetDestCoords((u16 *)&x, (u16 *)&y); - if (gUnknown_02029816 != 1 + if (gUnknown_02029816 != TRUE || MetatileBehavior_IsSurfableWaterOrUnderwater(MapGridGetMetatileBehaviorAt(x, y))) { s8 pan = (Random() % 88) + 212; @@ -1048,7 +1047,7 @@ void sub_8054164(void) { if ((gSaveBlock1.location.mapGroup == 0 && gSaveBlock1.location.mapNum == 45) && !sub_810D32C()) { - gUnknown_02029816 = 1; + gUnknown_02029816 = TRUE; gUnknown_02029814 = GetMirageIslandMon(); } else diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 2e93683b7..4ce15473d 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -869,124 +869,44 @@ void FishingWildEncounter(u8 rod) sub_8081A00(); } -#ifdef NONMATCHING -u16 GetLocalWildMon(u8 *a1) +u16 GetLocalWildMon(bool8 *isWaterMon) { u16 headerNum; - - *a1 = 0; + struct WildPokemonInfo *landMonsInfo; + struct WildPokemonInfo *waterMonsInfo; + + *isWaterMon = FALSE; headerNum = GetCurrentMapWildMonHeader(); - if(headerNum != 0xFFFF) + if(headerNum == 0xFFFF) + return 0; + + landMonsInfo = gWildMonHeaders[headerNum].landMonsInfo; + waterMonsInfo = gWildMonHeaders[headerNum].waterMonsInfo; + + if (!landMonsInfo && !waterMonsInfo) + return 0; + + if (landMonsInfo && !waterMonsInfo) { - struct WildPokemonInfo *landMonsInfo = gWildMonHeaders[headerNum].landMonsInfo; - struct WildPokemonInfo *waterMonsInfo = gWildMonHeaders[headerNum].waterMonsInfo; - - if(landMonsInfo || waterMonsInfo) - { - if(waterMonsInfo && landMonsInfo == NULL) - { - //_080854CE - *a1 = 1; - return waterMonsInfo->wildPokemon[PickWildMon_Water()].species; - } - else if(landMonsInfo && waterMonsInfo) - { - //_080854DC - if(Random() % 100 < 80) - //jump to _08085500 - return landMonsInfo->wildPokemon[PickWildMon_Grass()].species; - else - { - *a1 = 1; - return waterMonsInfo->wildPokemon[PickWildMon_Water()].species; - } - } - else if(landMonsInfo && waterMonsInfo == NULL) - { - //_08085500: - return landMonsInfo->wildPokemon[PickWildMon_Grass()].species; - } - } + return landMonsInfo->wildPokemon[PickWildMon_Grass()].species; + } + + if (!landMonsInfo && waterMonsInfo) + { + *isWaterMon = TRUE; + return waterMonsInfo->wildPokemon[PickWildMon_Water()].species; + } + + if ((Random() % 100) < 80) + { + return landMonsInfo->wildPokemon[PickWildMon_Grass()].species; + } + else + { + *isWaterMon = TRUE; + return waterMonsInfo->wildPokemon[PickWildMon_Water()].species; } - return 0; -} -#else -__attribute__((naked)) -u16 GetLocalWildMon(u8 *a1) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - adds r6, r0, 0\n\ - movs r0, 0\n\ - strb r0, [r6]\n\ - bl GetCurrentMapWildMonHeader\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - ldr r0, _080854C0\n\ - cmp r3, r0\n\ - beq _080854BA\n\ - ldr r2, _080854C4\n\ - lsls r1, r3, 2\n\ - adds r1, r3\n\ - lsls r1, 2\n\ - adds r0, r2, 0x4\n\ - adds r0, r1, r0\n\ - ldr r5, [r0]\n\ - adds r2, 0x8\n\ - adds r1, r2\n\ - ldr r4, [r1]\n\ - cmp r5, 0\n\ - bne _080854C8\n\ - cmp r4, 0\n\ - bne _080854CE\n\ -_080854BA:\n\ - movs r0, 0\n\ - b _0808550E\n\ - .align 2, 0\n\ -_080854C0: .4byte 0x0000ffff\n\ -_080854C4: .4byte gWildMonHeaders\n\ -_080854C8:\n\ - cmp r4, 0\n\ - bne _080854DC\n\ - b _08085500\n\ -_080854CE:\n\ - movs r0, 0x1\n\ - strb r0, [r6]\n\ - bl PickWildMon_Water\n\ - lsls r0, 24\n\ - ldr r1, [r4, 0x4]\n\ - b _08085508\n\ -_080854DC:\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0x64\n\ - bl __umodsi3\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x4F\n\ - bls _08085500\n\ - movs r0, 0x1\n\ - strb r0, [r6]\n\ - bl PickWildMon_Water\n\ - lsls r0, 24\n\ - ldr r1, [r4, 0x4]\n\ - b _08085508\n\ -_08085500:\n\ - bl PickWildMon_Grass\n\ - lsls r0, 24\n\ - ldr r1, [r5, 0x4]\n\ -_08085508:\n\ - lsrs r0, 22\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x2]\n\ -_0808550E:\n\ - pop {r4-r6}\n\ - pop {r1}\n\ - bx r1\n\ - .syntax divided\n"); } -#endif u16 GetMirageIslandMon(void) { |