diff options
Diffstat (limited to 'asm/wild_encounter.s')
-rw-r--r-- | asm/wild_encounter.s | 1746 |
1 files changed, 1746 insertions, 0 deletions
diff --git a/asm/wild_encounter.s b/asm/wild_encounter.s new file mode 100644 index 000000000..8e04d4a4a --- /dev/null +++ b/asm/wild_encounter.s @@ -0,0 +1,1746 @@ + .include "constants/gba_constants.s" + .include "constants/species_constants.s" + .include "asm/macros.s" + + .syntax unified + + .text + + thumb_func_start unref_sub_8084978 +unref_sub_8084978: @ 8084978 + ldr r1, _08084980 + strb r0, [r1] + bx lr + .align 2, 0 +_08084980: .4byte gUnknown_0202FF7C + thumb_func_end unref_sub_8084978 + + thumb_func_start sub_8084984 +sub_8084984: @ 8084984 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp] + lsls r1, 16 + lsrs r1, 16 + str r1, [sp, 0x4] + lsls r2, 24 + lsrs r2, 24 + ldr r3, _08084A0C + lsls r1, r2, 1 + adds r1, r2 + lsls r2, r1, 1 + adds r2, r3 + adds r0, r1, 0x1 + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + mov r9, r0 + adds r1, 0x2 + lsls r1, 1 + adds r1, r3 + ldrh r6, [r1] + ldrh r5, [r2] + cmp r5, r9 + bhi _08084A2E + ldr r0, _08084A10 + mov r10, r0 +_080849C6: + movs r4, 0 + mov r1, r10 + ldr r0, [r1] + ldr r0, [r0] + cmp r4, r0 + bge _08084A24 + ldr r1, [sp] + lsls r0, r1, 16 + asrs r0, 16 + mov r8, r0 + ldr r1, [sp, 0x4] + lsls r0, r1, 16 + asrs r7, r0, 16 +_080849E0: + adds r0, r4, 0x7 + adds r1, r5, 0x7 + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl sub_805759C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08084A14 + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + cmp r8, r4 + bne _08084A14 + cmp r7, r5 + bne _08084A14 + adds r0, r6, 0 + b _08084A34 + .align 2, 0 +_08084A0C: .4byte gUnknown_0839DC00 +_08084A10: .4byte gMapHeader +_08084A14: + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + mov r1, r10 + ldr r0, [r1] + ldr r0, [r0] + cmp r4, r0 + blt _080849E0 +_08084A24: + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, r9 + bls _080849C6 +_08084A2E: + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r0, 16 +_08084A34: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8084984 + + thumb_func_start check_feebas +check_feebas: @ 8084A44 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x10 + movs r7, 0 + ldr r0, _08084ABC + ldrh r1, [r0, 0x4] + movs r0, 0x88 + lsls r0, 6 + cmp r1, r0 + bne _08084B38 + add r5, sp, 0xC + mov r4, sp + adds r4, 0xE + adds r0, r5, 0 + adds r1, r4, 0 + bl GetXYCoordsOneStepInFrontOfPlayer + ldrh r0, [r5] + subs r0, 0x7 + strh r0, [r5] + ldrh r0, [r4] + subs r0, 0x7 + strh r0, [r4] + movs r0, 0 + ldrsh r1, [r4, r0] + ldr r0, _08084AC0 + mov r9, r5 + mov r8, r4 + ldrh r2, [r0, 0x6] + cmp r1, r2 + blt _08084A8E + ldrh r3, [r0, 0x8] + cmp r1, r3 + bgt _08084A8E + movs r7, 0x1 +_08084A8E: + mov r2, r8 + movs r3, 0 + ldrsh r1, [r2, r3] + ldrh r2, [r0, 0xC] + cmp r1, r2 + blt _08084AA2 + ldrh r0, [r0, 0xE] + cmp r1, r0 + bgt _08084AA2 + movs r7, 0x2 +_08084AA2: + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x31 + bls _08084AC8 + b _08084B38 + .align 2, 0 +_08084ABC: .4byte gSaveBlock1 +_08084AC0: .4byte gUnknown_0839DC00 +_08084AC4: + movs r0, 0x1 + b _08084B3A +_08084AC8: + ldr r0, _08084B48 + ldr r3, _08084B4C + adds r0, r3 + ldrh r0, [r0] + bl sub_8084B74 + movs r5, 0 + ldr r6, _08084B50 +_08084AD8: + bl sub_8084B54 + lsls r1, r5, 1 + mov r2, sp + adds r4, r2, r1 + lsls r0, 16 + lsrs r0, 16 + adds r1, r6, 0 + bl __umodsi3 + strh r0, [r4] + lsls r0, 16 + cmp r0, 0 + bne _08084AF6 + strh r6, [r4] +_08084AF6: + ldrh r0, [r4] + subs r0, 0x1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x2 + bls _08084B08 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_08084B08: + cmp r5, 0x6 + bne _08084AD8 + mov r3, r9 + movs r1, 0 + ldrsh r0, [r3, r1] + mov r2, r8 + movs r3, 0 + ldrsh r1, [r2, r3] + adds r2, r7, 0 + bl sub_8084984 + lsls r0, 16 + lsrs r1, r0, 16 + movs r5, 0 +_08084B24: + lsls r0, r5, 1 + add r0, sp + ldrh r0, [r0] + cmp r1, r0 + beq _08084AC4 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _08084B24 +_08084B38: + movs r0, 0 +_08084B3A: + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08084B48: .4byte gSaveBlock1 +_08084B4C: .4byte 0x00002dd6 +_08084B50: .4byte 0x000001bf + thumb_func_end check_feebas + + thumb_func_start sub_8084B54 +sub_8084B54: @ 8084B54 + ldr r2, _08084B68 + ldr r1, [r2] + ldr r0, _08084B6C + muls r0, r1 + ldr r1, _08084B70 + adds r0, r1 + str r0, [r2] + lsrs r0, 16 + bx lr + .align 2, 0 +_08084B68: .4byte gUnknown_0202FF80 +_08084B6C: .4byte 0x41c64e6d +_08084B70: .4byte 0x00003039 + thumb_func_end sub_8084B54 + + thumb_func_start sub_8084B74 +sub_8084B74: @ 8084B74 + lsls r0, 16 + lsrs r0, 16 + ldr r1, _08084B80 + str r0, [r1] + bx lr + .align 2, 0 +_08084B80: .4byte gUnknown_0202FF80 + thumb_func_end sub_8084B74 + + thumb_func_start wild_pokemon_rand_grass +wild_pokemon_rand_grass: @ 8084B84 + push {lr} + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x13 + bhi _08084BA0 + movs r0, 0 + b _08084C3A +_08084BA0: + adds r0, r1, 0 + subs r0, 0x14 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x13 + bhi _08084BB0 + movs r0, 0x1 + b _08084C3A +_08084BB0: + adds r0, r1, 0 + subs r0, 0x28 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x9 + bhi _08084BC0 + movs r0, 0x2 + b _08084C3A +_08084BC0: + adds r0, r1, 0 + subs r0, 0x32 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x9 + bhi _08084BD0 + movs r0, 0x3 + b _08084C3A +_08084BD0: + adds r0, r1, 0 + subs r0, 0x3C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x9 + bhi _08084BE0 + movs r0, 0x4 + b _08084C3A +_08084BE0: + adds r0, r1, 0 + subs r0, 0x46 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x9 + bhi _08084BF0 + movs r0, 0x5 + b _08084C3A +_08084BF0: + adds r0, r1, 0 + subs r0, 0x50 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bhi _08084C00 + movs r0, 0x6 + b _08084C3A +_08084C00: + adds r0, r1, 0 + subs r0, 0x55 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bhi _08084C10 + movs r0, 0x7 + b _08084C3A +_08084C10: + adds r0, r1, 0 + subs r0, 0x5A + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bhi _08084C20 + movs r0, 0x8 + b _08084C3A +_08084C20: + adds r0, r1, 0 + subs r0, 0x5E + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bhi _08084C30 + movs r0, 0x9 + b _08084C3A +_08084C30: + cmp r1, 0x62 + beq _08084C38 + movs r0, 0xB + b _08084C3A +_08084C38: + movs r0, 0xA +_08084C3A: + pop {r1} + bx r1 + thumb_func_end wild_pokemon_rand_grass + + thumb_func_start wild_pokemon_rand_water +wild_pokemon_rand_water: @ 8084C40 + push {lr} + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 24 + lsrs r1, r0, 24 + adds r2, r1, 0 + cmp r1, 0x3B + bhi _08084C5E + movs r0, 0 + b _08084C90 +_08084C5E: + adds r0, r1, 0 + subs r0, 0x3C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1D + bhi _08084C6E + movs r0, 0x1 + b _08084C90 +_08084C6E: + adds r0, r1, 0 + subs r0, 0x5A + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bhi _08084C7E + movs r0, 0x2 + b _08084C90 +_08084C7E: + adds r0, r2, 0 + subs r0, 0x5F + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bls _08084C8E + movs r0, 0x4 + b _08084C90 +_08084C8E: + movs r0, 0x3 +_08084C90: + pop {r1} + bx r1 + thumb_func_end wild_pokemon_rand_water + + thumb_func_start sub_8084C94 +sub_8084C94: @ 8084C94 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r6, r4, 0 + movs r5, 0 + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r4, 0x1 + beq _08084CCE + cmp r4, 0x1 + bgt _08084CBE + cmp r4, 0 + beq _08084CC4 + b _08084D28 +_08084CBE: + cmp r6, 0x2 + beq _08084CF2 + b _08084D28 +_08084CC4: + movs r5, 0x1 + cmp r1, 0x45 + bhi _08084D28 + movs r5, 0 + b _08084D28 +_08084CCE: + cmp r1, 0x3B + bhi _08084CD4 + movs r5, 0x2 +_08084CD4: + adds r0, r1, 0 + subs r0, 0x3C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x13 + bhi _08084CE2 + movs r5, 0x3 +_08084CE2: + adds r0, r1, 0 + subs r0, 0x50 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x13 + bhi _08084D28 + movs r5, 0x4 + b _08084D28 +_08084CF2: + cmp r1, 0x27 + bhi _08084CF8 + movs r5, 0x5 +_08084CF8: + adds r0, r1, 0 + subs r0, 0x28 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x27 + bhi _08084D06 + movs r5, 0x6 +_08084D06: + adds r0, r1, 0 + subs r0, 0x50 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xE + bhi _08084D14 + movs r5, 0x7 +_08084D14: + adds r0, r1, 0 + subs r0, 0x5F + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bhi _08084D22 + movs r5, 0x8 +_08084D22: + cmp r1, 0x63 + bne _08084D28 + movs r5, 0x9 +_08084D28: + adds r0, r5, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8084C94 + + thumb_func_start random_number_in_range +random_number_in_range: @ 8084D30 + push {r4,r5,lr} + adds r4, r0, 0 + ldrb r0, [r4, 0x1] + ldrb r1, [r4] + cmp r0, r1 + bcc _08084D40 + ldrb r5, [r4] + b _08084D44 +_08084D40: + ldrb r5, [r4, 0x1] + ldrb r0, [r4] +_08084D44: + subs r4, r0, r5 + adds r4, 0x1 + lsls r4, 24 + lsrs r4, 24 + bl Random + lsls r0, 16 + lsrs r0, 16 + adds r1, r4, 0 + bl __modsi3 + lsls r0, 24 + lsrs r0, 24 + adds r0, r5, r0 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end random_number_in_range + + thumb_func_start sub_8084D6C +sub_8084D6C: @ 8084D6C + push {r4-r6,lr} + movs r3, 0 + ldr r5, _08084D9C + ldrb r0, [r5] + cmp r0, 0xFF + beq _08084DB8 + adds r6, r5, 0 + ldr r4, _08084DA0 +_08084D7C: + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 2 + adds r2, r0, r6 + ldrb r1, [r2] + movs r0, 0x4 + ldrsb r0, [r4, r0] + cmp r1, r0 + bne _08084DA4 + ldrb r1, [r2, 0x1] + movs r0, 0x5 + ldrsb r0, [r4, r0] + cmp r1, r0 + bne _08084DA4 + adds r0, r3, 0 + b _08084DBA + .align 2, 0 +_08084D9C: .4byte gWildMonHeaders +_08084DA0: .4byte gSaveBlock1 +_08084DA4: + adds r0, r3, 0x1 + lsls r0, 16 + lsrs r3, r0, 16 + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 2 + adds r0, r5 + ldrb r0, [r0] + cmp r0, 0xFF + bne _08084D7C +_08084DB8: + ldr r0, _08084DC0 +_08084DBA: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08084DC0: .4byte 0x0000ffff + thumb_func_end sub_8084D6C + + thumb_func_start sub_8084DC4 +sub_8084DC4: @ 8084DC4 + push {r4-r7,lr} + sub sp, 0x1C + bl GetSafariZoneFlag + cmp r0, 0x1 + bne _08084E5E + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x4F + bhi _08084E5E + bl sub_80C8448 + adds r7, r0, 0 + cmp r7, 0 + beq _08084E5E + movs r5, 0 +_08084DF2: + mov r1, sp + adds r0, r1, r5 + strb r5, [r0] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x18 + bls _08084DF2 + movs r5, 0 +_08084E04: + adds r1, r5, 0x1 + lsls r0, r1, 24 + lsrs r4, r0, 24 + adds r6, r1, 0 + cmp r4, 0x18 + bhi _08084E34 + add r5, sp +_08084E12: + bl Random + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _08084E2A + ldrb r2, [r5] + mov r0, sp + adds r1, r0, r4 + ldrb r0, [r1] + strb r0, [r5] + strb r2, [r1] +_08084E2A: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x18 + bls _08084E12 +_08084E34: + lsls r0, r6, 24 + lsrs r5, r0, 24 + cmp r5, 0x17 + bls _08084E04 + movs r5, 0 +_08084E3E: + mov r1, sp + adds r4, r1, r5 + ldrb r0, [r4] + adds r1, r7, 0 + bl sub_810CAE4 + lsls r0, 16 + cmp r0, 0 + ble _08084E54 + ldrb r0, [r4] + b _08084E70 +_08084E54: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x18 + bls _08084E3E +_08084E5E: + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x19 + bl __umodsi3 + lsls r0, 24 + lsrs r0, 24 +_08084E70: + add sp, 0x1C + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8084DC4 + + thumb_func_start sub_8084E78 +sub_8084E78: @ 8084E78 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 24 + lsrs r5, 24 + bl ZeroEnemyPartyMons + bl sub_8084DC4 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08084EAC + str r0, [sp] + adds r0, r1, 0 + adds r1, r4, 0 + adds r2, r5, 0 + movs r3, 0x20 + bl CreateMonWithNature + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08084EAC: .4byte gEnemyParty + thumb_func_end sub_8084E78 + + thumb_func_start sub_8084EB0 +sub_8084EB0: @ 8084EB0 + push {r4-r7,lr} + adds r6, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r3, r1, 0 + lsls r2, 24 + lsrs r7, r2, 24 + movs r0, 0 + cmp r1, 0x1 + beq _08084EDA + cmp r1, 0x1 + bgt _08084ECE + cmp r1, 0 + beq _08084ED4 + b _08084EE2 +_08084ECE: + cmp r3, 0x2 + beq _08084EDA + b _08084EE2 +_08084ED4: + bl wild_pokemon_rand_grass + b _08084EDE +_08084EDA: + bl wild_pokemon_rand_water +_08084EDE: + lsls r0, 24 + lsrs r0, 24 +_08084EE2: + lsls r4, r0, 2 + ldr r0, [r6, 0x4] + adds r0, r4 + bl random_number_in_range + lsls r0, 24 + lsrs r5, r0, 24 + cmp r7, 0x1 + bne _08084F04 + adds r0, r5, 0 + bl sub_8085598 + lsls r0, 24 + cmp r0, 0 + bne _08084F04 + movs r0, 0 + b _08084F12 +_08084F04: + ldr r0, [r6, 0x4] + adds r0, r4, r0 + ldrh r0, [r0, 0x2] + adds r1, r5, 0 + bl sub_8084E78 + movs r0, 0x1 +_08084F12: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8084EB0 + + thumb_func_start sub_8084F18 +sub_8084F18: @ 8084F18 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r0, r1, 24 + lsrs r0, 24 + bl sub_8084C94 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 22 + ldr r0, [r5, 0x4] + adds r0, r4 + bl random_number_in_range + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, [r5, 0x4] + adds r0, r4, r0 + ldrh r0, [r0, 0x2] + bl sub_8084E78 + ldr r0, [r5, 0x4] + adds r4, r0 + ldrh r0, [r4, 0x2] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8084F18 + + thumb_func_start SetUpMassOutbreakEncounter +SetUpMassOutbreakEncounter: @ 8084F50 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08084F78 + ldr r0, _08084F74 + movs r1, 0xAC + lsls r1, 6 + adds r0, r1 + ldrb r0, [r0] + bl sub_8085598 + lsls r0, 24 + cmp r0, 0 + bne _08084F78 + movs r0, 0 + b _08084FAC + .align 2, 0 +_08084F74: .4byte gSaveBlock1 +_08084F78: + ldr r4, _08084FB4 + ldr r2, _08084FB8 + adds r0, r4, r2 + ldrh r0, [r0] + adds r2, 0x4 + adds r1, r4, r2 + ldrb r1, [r1] + bl sub_8084E78 + movs r5, 0 + ldr r0, _08084FBC + adds r4, r0 +_08084F90: + lsls r0, r5, 1 + adds r0, r4 + ldrh r1, [r0] + lsls r2, r5, 24 + lsrs r2, 24 + ldr r0, _08084FC0 + bl SetMonMoveSlot + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x3 + bls _08084F90 + movs r0, 0x1 +_08084FAC: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08084FB4: .4byte gSaveBlock1 +_08084FB8: .4byte 0x00002afc +_08084FBC: .4byte 0x00002b04 +_08084FC0: .4byte gEnemyParty + thumb_func_end SetUpMassOutbreakEncounter + + thumb_func_start DoMassOutbreakEncounterTest +DoMassOutbreakEncounterTest: @ 8084FC4 + push {r4,lr} + ldr r4, _08085010 + ldr r1, _08085014 + adds r0, r4, r1 + ldrh r0, [r0] + cmp r0, 0 + beq _08085020 + movs r1, 0x5 + ldrsb r1, [r4, r1] + ldr r2, _08085018 + adds r0, r4, r2 + ldrb r0, [r0] + cmp r1, r0 + bne _08085020 + movs r1, 0x4 + ldrsb r1, [r4, r1] + adds r2, 0x1 + adds r0, r4, r2 + ldrb r0, [r0] + cmp r1, r0 + bne _08085020 + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + ldr r2, _0808501C + adds r1, r4, r2 + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1] + cmp r0, r1 + bcs _08085020 + movs r0, 0x1 + b _08085022 + .align 2, 0 +_08085010: .4byte gSaveBlock1 +_08085014: .4byte 0x00002afc +_08085018: .4byte 0x00002afe +_0808501C: .4byte 0x00002b0d +_08085020: + movs r0, 0 +_08085022: + pop {r4} + pop {r1} + bx r1 + thumb_func_end DoMassOutbreakEncounterTest + + thumb_func_start DoWildEncounterRateDiceRoll +DoWildEncounterRateDiceRoll: @ 8085028 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xB4 + lsls r1, 4 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r4 + bcc _0808504C + movs r0, 0 + b _0808504E +_0808504C: + movs r0, 0x1 +_0808504E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end DoWildEncounterRateDiceRoll + + thumb_func_start sub_8085054 +sub_8085054: @ 8085054 + push {r4,lr} + sub sp, 0x4 + str r0, [sp] + lsls r1, 24 + lsrs r4, r1, 24 + lsls r0, 4 + str r0, [sp] + movs r0, 0x6 + bl TestPlayerAvatarFlags + lsls r0, 24 + cmp r0, 0 + beq _0808507E + ldr r1, [sp] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + movs r1, 0x64 + bl __udivsi3 + str r0, [sp] +_0808507E: + mov r0, sp + bl affects_encounter_rate_based_on_flags + mov r0, sp + bl ApplyCleanseTagWildEncounterRateReduction + cmp r4, 0 + bne _080850BA + ldr r4, _080850DC + adds r0, r4, 0 + movs r1, 0x6 + bl GetMonData + cmp r0, 0 + bne _080850BA + adds r0, r4, 0 + bl GetMonAbility + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x1 + bne _080850B0 + ldr r0, [sp] + lsrs r0, 1 + str r0, [sp] +_080850B0: + cmp r1, 0x23 + bne _080850BA + ldr r0, [sp] + lsls r0, 1 + str r0, [sp] +_080850BA: + ldr r0, [sp] + movs r1, 0xB4 + lsls r1, 4 + cmp r0, r1 + bls _080850C6 + str r1, [sp] +_080850C6: + ldr r0, [sp] + lsls r0, 16 + lsrs r0, 16 + bl DoWildEncounterRateDiceRoll + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080850DC: .4byte gPlayerParty + thumb_func_end sub_8085054 + + thumb_func_start DoGlobalWildEncounterDiceRoll +DoGlobalWildEncounterDiceRoll: @ 80850E0 + push {lr} + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x3B + bhi _080850FC + movs r0, 0x1 + b _080850FE +_080850FC: + movs r0, 0 +_080850FE: + pop {r1} + bx r1 + thumb_func_end DoGlobalWildEncounterDiceRoll + + thumb_func_start sub_8085104 +sub_8085104: @ 8085104 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 16 + lsrs r6, r0, 16 + mov r9, r6 + lsls r1, 16 + lsrs r7, r1, 16 + mov r8, r7 + ldr r0, _080851CC + ldrb r0, [r0] + cmp r0, 0x1 + bne _08085122 + b _08085282 +_08085122: + bl sub_8084D6C + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, _080851D0 + cmp r5, r0 + bne _08085132 + b _08085282 +_08085132: + lsls r0, r6, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8057468 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080851D8 + ldr r1, _080851D4 + lsls r2, r5, 2 + adds r0, r2, r5 + lsls r0, 2 + adds r1, 0x4 + adds r0, r1 + ldr r0, [r0] + adds r4, r2, 0 + cmp r0, 0 + bne _0808515A + b _08085282 +_0808515A: + cmp r7, r6 + beq _0808516A + bl DoGlobalWildEncounterDiceRoll + lsls r0, 24 + cmp r0, 0 + bne _0808516A + b _08085282 +_0808516A: + ldr r1, _080851D4 + adds r0, r4, r5 + lsls r0, 2 + adds r1, 0x4 + adds r0, r1 + ldr r0, [r0] + ldrb r0, [r0] + movs r1, 0 + bl sub_8085054 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08085188 + b _08085282 +_08085188: + bl sub_81344CC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0808524A + bl DoMassOutbreakEncounterTest + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080851AE + movs r0, 0x1 + bl SetUpMassOutbreakEncounter + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0808527A +_080851AE: + ldr r1, _080851D4 + adds r0, r4, r5 + lsls r0, 2 + adds r1, 0x4 + adds r0, r1 + ldr r0, [r0] + movs r1, 0 + movs r2, 0x1 + bl sub_8084EB0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0808527A + b _08085282 + .align 2, 0 +_080851CC: .4byte gUnknown_0202FF7C +_080851D0: .4byte 0x0000ffff +_080851D4: .4byte gWildMonHeaders +_080851D8: + adds r0, r4, 0 + bl sub_8057494 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08085200 + movs r0, 0x8 + bl TestPlayerAvatarFlags + lsls r0, 24 + cmp r0, 0 + beq _08085282 + adds r0, r4, 0 + bl sub_8057434 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08085282 +_08085200: + ldr r1, _08085260 + lsls r2, r5, 2 + adds r0, r2, r5 + lsls r0, 2 + adds r1, 0x8 + adds r0, r1 + ldr r0, [r0] + adds r4, r2, 0 + cmp r0, 0 + beq _08085282 + cmp r8, r9 + beq _08085222 + bl DoGlobalWildEncounterDiceRoll + lsls r0, 24 + cmp r0, 0 + beq _08085282 +_08085222: + ldr r1, _08085260 + adds r0, r4, r5 + lsls r0, 2 + adds r1, 0x8 + adds r4, r0, r1 + ldr r0, [r4] + ldrb r0, [r0] + movs r1, 0 + bl sub_8085054 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08085282 + bl sub_81344CC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08085268 +_0808524A: + ldr r0, _08085264 + ldrb r0, [r0, 0xC] + bl sub_8085598 + lsls r0, 24 + cmp r0, 0 + beq _08085282 + bl sub_8081A5C + movs r0, 0x1 + b _08085284 + .align 2, 0 +_08085260: .4byte gWildMonHeaders +_08085264: .4byte gSaveBlock1 + 0x3144 +_08085268: + ldr r0, [r4] + movs r1, 0x1 + movs r2, 0x1 + bl sub_8084EB0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08085282 +_0808527A: + bl sub_8081A00 + movs r0, 0x1 + b _08085284 +_08085282: + movs r0, 0 +_08085284: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8085104 + + thumb_func_start rock_smash_wild_pokemon_encounter +rock_smash_wild_pokemon_encounter: @ 8085290 + push {r4,lr} + bl sub_8084D6C + lsls r0, 16 + lsrs r2, r0, 16 + ldr r0, _080852E0 + cmp r2, r0 + beq _080852EC + ldr r1, _080852E4 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 2 + adds r1, 0xC + adds r0, r1 + ldr r4, [r0] + cmp r4, 0 + beq _080852D8 + ldrb r0, [r4] + movs r1, 0x1 + bl sub_8085054 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080852EC + adds r0, r4, 0 + movs r1, 0x2 + movs r2, 0x1 + bl sub_8084EB0 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1 + bne _080852EC + bl sub_8081A00 +_080852D8: + ldr r0, _080852E8 + strh r4, [r0] + b _080852F2 + .align 2, 0 +_080852E0: .4byte 0x0000ffff +_080852E4: .4byte gWildMonHeaders +_080852E8: .4byte gScriptResult +_080852EC: + ldr r1, _080852F8 + movs r0, 0 + strh r0, [r1] +_080852F2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080852F8: .4byte gScriptResult + thumb_func_end rock_smash_wild_pokemon_encounter + + thumb_func_start sub_80852FC +sub_80852FC: @ 80852FC + push {r4,r5,lr} + sub sp, 0x4 + mov r5, sp + adds r5, 0x2 + mov r0, sp + adds r1, r5, 0 + bl PlayerGetDestCoords + bl sub_8084D6C + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, _0808536C + cmp r4, r0 + beq _080853DA + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r5, r2] + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl sub_8057468 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08085380 + ldr r1, _08085370 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 2 + adds r1, 0x4 + adds r0, r1 + ldr r4, [r0] + cmp r4, 0 + beq _080853DA + bl sub_81344CC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080853BC + bl DoMassOutbreakEncounterTest + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08085374 + movs r0, 0 + bl SetUpMassOutbreakEncounter + b _080853D2 + .align 2, 0 +_0808536C: .4byte 0x0000ffff +_08085370: .4byte gWildMonHeaders +_08085374: + adds r0, r4, 0 + movs r1, 0 + movs r2, 0 + bl sub_8084EB0 + b _080853D2 +_08085380: + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r5, r2] + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl sub_8057494 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080853DA + ldr r1, _080853C4 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 2 + adds r1, 0x8 + adds r0, r1 + ldr r4, [r0] + cmp r4, 0 + beq _080853DA + bl sub_81344CC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080853C8 +_080853BC: + bl sub_8081A5C + movs r0, 0x1 + b _080853DC + .align 2, 0 +_080853C4: .4byte gWildMonHeaders +_080853C8: + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0 + bl sub_8084EB0 +_080853D2: + bl sub_8081A00 + movs r0, 0x1 + b _080853DC +_080853DA: + movs r0, 0 +_080853DC: + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80852FC + + thumb_func_start GetFishingWildMonListHeader +GetFishingWildMonListHeader: @ 80853E4 + push {lr} + bl sub_8084D6C + lsls r0, 16 + lsrs r2, r0, 16 + ldr r0, _0808540C + cmp r2, r0 + beq _08085414 + ldr r0, _08085410 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 2 + adds r0, 0x10 + adds r1, r0 + ldr r0, [r1] + cmp r0, 0 + beq _08085414 + movs r0, 0x1 + b _08085416 + .align 2, 0 +_0808540C: .4byte 0x0000ffff +_08085410: .4byte gWildMonHeaders +_08085414: + movs r0, 0 +_08085416: + pop {r1} + bx r1 + thumb_func_end GetFishingWildMonListHeader + + thumb_func_start sub_808541C +sub_808541C: @ 808541C + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + bl check_feebas + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0808544C + ldr r4, _08085448 + adds r0, r4, 0 + bl random_number_in_range + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldrh r4, [r4, 0x2] + adds r0, r4, 0 + bl sub_8084E78 + b _0808546C + .align 2, 0 +_08085448: .4byte gWildFeebasRoute119Data +_0808544C: + ldr r4, _08085484 + bl sub_8084D6C + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r4, 0x10 + adds r1, r4 + ldr r0, [r1] + adds r1, r5, 0 + bl sub_8084F18 + lsls r0, 16 + lsrs r4, r0, 16 +_0808546C: + movs r0, 0xC + bl sav12_xor_increment + adds r0, r4, 0 + bl sub_80BEA50 + bl sub_8081A00 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08085484: .4byte gWildMonHeaders + thumb_func_end sub_808541C + + thumb_func_start wild_pokemon_rand_for_map +wild_pokemon_rand_for_map: @ 8085488 + push {r4-r6,lr} + adds r6, r0, 0 + movs r0, 0 + strb r0, [r6] + bl sub_8084D6C + lsls r0, 16 + lsrs r3, r0, 16 + ldr r0, _080854C0 + cmp r3, r0 + beq _080854BA + ldr r2, _080854C4 + lsls r1, r3, 2 + adds r1, r3 + lsls r1, 2 + adds r0, r2, 0x4 + adds r0, r1, r0 + ldr r5, [r0] + adds r2, 0x8 + adds r1, r2 + ldr r4, [r1] + cmp r5, 0 + bne _080854C8 + cmp r4, 0 + bne _080854CE +_080854BA: + movs r0, 0 + b _0808550E + .align 2, 0 +_080854C0: .4byte 0x0000ffff +_080854C4: .4byte gWildMonHeaders +_080854C8: + cmp r4, 0 + bne _080854DC + b _08085500 +_080854CE: + movs r0, 0x1 + strb r0, [r6] + bl wild_pokemon_rand_water + lsls r0, 24 + ldr r1, [r4, 0x4] + b _08085508 +_080854DC: + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x4F + bls _08085500 + movs r0, 0x1 + strb r0, [r6] + bl wild_pokemon_rand_water + lsls r0, 24 + ldr r1, [r4, 0x4] + b _08085508 +_08085500: + bl wild_pokemon_rand_grass + lsls r0, 24 + ldr r1, [r5, 0x4] +_08085508: + lsrs r0, 22 + adds r0, r1 + ldrh r0, [r0, 0x2] +_0808550E: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end wild_pokemon_rand_for_map + + thumb_func_start sub_8085514 +sub_8085514: @ 8085514 + push {r4,lr} + bl sub_8084D6C + lsls r0, 16 + lsrs r2, r0, 16 + ldr r0, _08085548 + cmp r2, r0 + beq _08085550 + ldr r1, _0808554C + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 2 + adds r1, 0x8 + adds r0, r1 + ldr r4, [r0] + cmp r4, 0 + beq _08085550 + bl wild_pokemon_rand_water + lsls r0, 24 + ldr r1, [r4, 0x4] + lsrs r0, 22 + adds r0, r1 + ldrh r0, [r0, 0x2] + b _08085552 + .align 2, 0 +_08085548: .4byte 0x0000ffff +_0808554C: .4byte gWildMonHeaders +_08085550: + movs r0, 0 +_08085552: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8085514 + + thumb_func_start sub_8085558 +sub_8085558: @ 8085558 + push {r4,r5,lr} + ldr r5, _08085588 + adds r0, r5, 0 + bl VarGet + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + beq _08085590 + subs r4, r0, 0x1 + lsls r4, 16 + lsrs r4, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl VarSet + cmp r4, 0 + bne _08085590 + ldr r0, _0808558C + bl ScriptContext1_SetupScript + movs r0, 0x1 + b _08085592 + .align 2, 0 +_08085588: .4byte 0x00004021 +_0808558C: .4byte Event_RepelWoreOff +_08085590: + movs r0, 0 +_08085592: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8085558 + + thumb_func_start sub_8085598 +sub_8085598: @ 8085598 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _080855E4 + bl VarGet + lsls r0, 16 + cmp r0, 0 + beq _080855DE + movs r5, 0 +_080855AC: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _080855E8 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x39 + bl GetMonData + cmp r0, 0 + beq _080855EC + adds r0, r4, 0 + movs r1, 0x2D + bl GetMonData + cmp r0, 0 + bne _080855EC + adds r0, r4, 0 + movs r1, 0x38 + bl GetMonData + lsls r0, 24 + lsrs r0, 24 + cmp r6, r0 + bcc _080855F6 +_080855DE: + movs r0, 0x1 + b _080855F8 + .align 2, 0 +_080855E4: .4byte 0x00004021 +_080855E8: .4byte gPlayerParty +_080855EC: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _080855AC +_080855F6: + movs r0, 0 +_080855F8: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8085598 + + thumb_func_start affects_encounter_rate_based_on_flags +affects_encounter_rate_based_on_flags: @ 8085600 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _0808561C + bl FlagGet + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08085620 + ldr r0, [r4] + lsrs r1, r0, 1 + adds r0, r1 + b _08085632 + .align 2, 0 +_0808561C: .4byte 0x0000084d +_08085620: + ldr r0, _0808563C + bl FlagGet + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08085634 + ldr r0, [r4] + lsrs r0, 1 +_08085632: + str r0, [r4] +_08085634: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808563C: .4byte 0x0000084e + thumb_func_end affects_encounter_rate_based_on_flags + + thumb_func_start ApplyCleanseTagWildEncounterRateReduction +ApplyCleanseTagWildEncounterRateReduction: @ 8085640 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _08085664 + movs r1, 0xC + bl GetMonData + cmp r0, 0xBE + bne _0808565C + ldr r0, [r4] + lsls r0, 1 + movs r1, 0x3 + bl __udivsi3 + str r0, [r4] +_0808565C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08085664: .4byte gPlayerParty + thumb_func_end ApplyCleanseTagWildEncounterRateReduction + + .align 2, 0 @ Don't pad with nop. |