wild_encounter through sub_8082C98
This commit is contained in:
+6
-772
@@ -5,772 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start sub_8082740
|
|
||||||
sub_8082740: @ 8082740
|
|
||||||
ldr r1, _08082748 @ =gUnknown_20386DC
|
|
||||||
strb r0, [r1]
|
|
||||||
bx lr
|
|
||||||
.align 2, 0
|
|
||||||
_08082748: .4byte gUnknown_20386DC
|
|
||||||
thumb_func_end sub_8082740
|
|
||||||
|
|
||||||
thumb_func_start ChooseWildMonIndex_Land
|
|
||||||
ChooseWildMonIndex_Land: @ 808274C
|
|
||||||
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 _08082768
|
|
||||||
movs r0, 0
|
|
||||||
b _08082802
|
|
||||||
_08082768:
|
|
||||||
adds r0, r1, 0
|
|
||||||
subs r0, 0x14
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x13
|
|
||||||
bhi _08082778
|
|
||||||
movs r0, 0x1
|
|
||||||
b _08082802
|
|
||||||
_08082778:
|
|
||||||
adds r0, r1, 0
|
|
||||||
subs r0, 0x28
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x9
|
|
||||||
bhi _08082788
|
|
||||||
movs r0, 0x2
|
|
||||||
b _08082802
|
|
||||||
_08082788:
|
|
||||||
adds r0, r1, 0
|
|
||||||
subs r0, 0x32
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x9
|
|
||||||
bhi _08082798
|
|
||||||
movs r0, 0x3
|
|
||||||
b _08082802
|
|
||||||
_08082798:
|
|
||||||
adds r0, r1, 0
|
|
||||||
subs r0, 0x3C
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x9
|
|
||||||
bhi _080827A8
|
|
||||||
movs r0, 0x4
|
|
||||||
b _08082802
|
|
||||||
_080827A8:
|
|
||||||
adds r0, r1, 0
|
|
||||||
subs r0, 0x46
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x9
|
|
||||||
bhi _080827B8
|
|
||||||
movs r0, 0x5
|
|
||||||
b _08082802
|
|
||||||
_080827B8:
|
|
||||||
adds r0, r1, 0
|
|
||||||
subs r0, 0x50
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x4
|
|
||||||
bhi _080827C8
|
|
||||||
movs r0, 0x6
|
|
||||||
b _08082802
|
|
||||||
_080827C8:
|
|
||||||
adds r0, r1, 0
|
|
||||||
subs r0, 0x55
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x4
|
|
||||||
bhi _080827D8
|
|
||||||
movs r0, 0x7
|
|
||||||
b _08082802
|
|
||||||
_080827D8:
|
|
||||||
adds r0, r1, 0
|
|
||||||
subs r0, 0x5A
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x3
|
|
||||||
bhi _080827E8
|
|
||||||
movs r0, 0x8
|
|
||||||
b _08082802
|
|
||||||
_080827E8:
|
|
||||||
adds r0, r1, 0
|
|
||||||
subs r0, 0x5E
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x3
|
|
||||||
bhi _080827F8
|
|
||||||
movs r0, 0x9
|
|
||||||
b _08082802
|
|
||||||
_080827F8:
|
|
||||||
cmp r1, 0x62
|
|
||||||
beq _08082800
|
|
||||||
movs r0, 0xB
|
|
||||||
b _08082802
|
|
||||||
_08082800:
|
|
||||||
movs r0, 0xA
|
|
||||||
_08082802:
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end ChooseWildMonIndex_Land
|
|
||||||
|
|
||||||
thumb_func_start ChooseWildMonIndex_WaterRock
|
|
||||||
ChooseWildMonIndex_WaterRock: @ 8082808
|
|
||||||
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 _08082826
|
|
||||||
movs r0, 0
|
|
||||||
b _08082858
|
|
||||||
_08082826:
|
|
||||||
adds r0, r1, 0
|
|
||||||
subs r0, 0x3C
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x1D
|
|
||||||
bhi _08082836
|
|
||||||
movs r0, 0x1
|
|
||||||
b _08082858
|
|
||||||
_08082836:
|
|
||||||
adds r0, r1, 0
|
|
||||||
subs r0, 0x5A
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x4
|
|
||||||
bhi _08082846
|
|
||||||
movs r0, 0x2
|
|
||||||
b _08082858
|
|
||||||
_08082846:
|
|
||||||
adds r0, r2, 0
|
|
||||||
subs r0, 0x5F
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x3
|
|
||||||
bls _08082856
|
|
||||||
movs r0, 0x4
|
|
||||||
b _08082858
|
|
||||||
_08082856:
|
|
||||||
movs r0, 0x3
|
|
||||||
_08082858:
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end ChooseWildMonIndex_WaterRock
|
|
||||||
|
|
||||||
thumb_func_start ChooseWildMonIndex_Fishing
|
|
||||||
ChooseWildMonIndex_Fishing: @ 808285C
|
|
||||||
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 _08082896
|
|
||||||
cmp r4, 0x1
|
|
||||||
bgt _08082886
|
|
||||||
cmp r4, 0
|
|
||||||
beq _0808288C
|
|
||||||
b _080828F0
|
|
||||||
_08082886:
|
|
||||||
cmp r6, 0x2
|
|
||||||
beq _080828BA
|
|
||||||
b _080828F0
|
|
||||||
_0808288C:
|
|
||||||
movs r5, 0x1
|
|
||||||
cmp r1, 0x45
|
|
||||||
bhi _080828F0
|
|
||||||
movs r5, 0
|
|
||||||
b _080828F0
|
|
||||||
_08082896:
|
|
||||||
cmp r1, 0x3B
|
|
||||||
bhi _0808289C
|
|
||||||
movs r5, 0x2
|
|
||||||
_0808289C:
|
|
||||||
adds r0, r1, 0
|
|
||||||
subs r0, 0x3C
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x13
|
|
||||||
bhi _080828AA
|
|
||||||
movs r5, 0x3
|
|
||||||
_080828AA:
|
|
||||||
adds r0, r1, 0
|
|
||||||
subs r0, 0x50
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x13
|
|
||||||
bhi _080828F0
|
|
||||||
movs r5, 0x4
|
|
||||||
b _080828F0
|
|
||||||
_080828BA:
|
|
||||||
cmp r1, 0x27
|
|
||||||
bhi _080828C0
|
|
||||||
movs r5, 0x5
|
|
||||||
_080828C0:
|
|
||||||
adds r0, r1, 0
|
|
||||||
subs r0, 0x28
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x27
|
|
||||||
bhi _080828CE
|
|
||||||
movs r5, 0x6
|
|
||||||
_080828CE:
|
|
||||||
adds r0, r1, 0
|
|
||||||
subs r0, 0x50
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0xE
|
|
||||||
bhi _080828DC
|
|
||||||
movs r5, 0x7
|
|
||||||
_080828DC:
|
|
||||||
adds r0, r1, 0
|
|
||||||
subs r0, 0x5F
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x3
|
|
||||||
bhi _080828EA
|
|
||||||
movs r5, 0x8
|
|
||||||
_080828EA:
|
|
||||||
cmp r1, 0x63
|
|
||||||
bne _080828F0
|
|
||||||
movs r5, 0x9
|
|
||||||
_080828F0:
|
|
||||||
adds r0, r5, 0
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end ChooseWildMonIndex_Fishing
|
|
||||||
|
|
||||||
thumb_func_start ChooseWildMonLevel
|
|
||||||
ChooseWildMonLevel: @ 80828F8
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
ldrb r0, [r4, 0x1]
|
|
||||||
ldrb r1, [r4]
|
|
||||||
cmp r0, r1
|
|
||||||
bcc _08082908
|
|
||||||
ldrb r5, [r4]
|
|
||||||
b _0808290C
|
|
||||||
_08082908:
|
|
||||||
ldrb r5, [r4, 0x1]
|
|
||||||
ldrb r0, [r4]
|
|
||||||
_0808290C:
|
|
||||||
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 ChooseWildMonLevel
|
|
||||||
|
|
||||||
thumb_func_start sub_8082934
|
|
||||||
sub_8082934: @ 8082934
|
|
||||||
push {r4-r6,lr}
|
|
||||||
movs r4, 0
|
|
||||||
ldr r0, _08082990 @ =gWildMonHeaders
|
|
||||||
ldrb r1, [r0]
|
|
||||||
adds r5, r0, 0
|
|
||||||
cmp r1, 0xFF
|
|
||||||
beq _080829B4
|
|
||||||
ldr r6, _08082994 @ =0x00007a01
|
|
||||||
_08082944:
|
|
||||||
lsls r0, r4, 2
|
|
||||||
adds r0, r4
|
|
||||||
lsls r0, 2
|
|
||||||
adds r3, r0, r5
|
|
||||||
ldrb r1, [r3]
|
|
||||||
ldr r0, _08082998 @ =gSaveBlock1Ptr
|
|
||||||
ldr r2, [r0]
|
|
||||||
movs r0, 0x4
|
|
||||||
ldrsb r0, [r2, r0]
|
|
||||||
cmp r1, r0
|
|
||||||
bne _080829A0
|
|
||||||
ldrb r1, [r3, 0x1]
|
|
||||||
movs r0, 0x5
|
|
||||||
ldrsb r0, [r2, r0]
|
|
||||||
cmp r1, r0
|
|
||||||
bne _080829A0
|
|
||||||
ldrh r0, [r2, 0x4]
|
|
||||||
cmp r0, r6
|
|
||||||
bne _08082980
|
|
||||||
ldr r0, _0808299C @ =0x00004024
|
|
||||||
bl VarGet
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
cmp r0, 0x8
|
|
||||||
bls _0808297A
|
|
||||||
movs r0, 0
|
|
||||||
_0808297A:
|
|
||||||
adds r0, r4, r0
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r4, r0, 16
|
|
||||||
_08082980:
|
|
||||||
bl sub_80829C0
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080829B4
|
|
||||||
adds r0, r4, 0
|
|
||||||
b _080829B6
|
|
||||||
.align 2, 0
|
|
||||||
_08082990: .4byte gWildMonHeaders
|
|
||||||
_08082994: .4byte 0x00007a01
|
|
||||||
_08082998: .4byte gSaveBlock1Ptr
|
|
||||||
_0808299C: .4byte 0x00004024
|
|
||||||
_080829A0:
|
|
||||||
adds r0, r4, 0x1
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r4, r0, 16
|
|
||||||
lsls r0, r4, 2
|
|
||||||
adds r0, r4
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r5
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r0, 0xFF
|
|
||||||
bne _08082944
|
|
||||||
_080829B4:
|
|
||||||
ldr r0, _080829BC @ =0x0000ffff
|
|
||||||
_080829B6:
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_080829BC: .4byte 0x0000ffff
|
|
||||||
thumb_func_end sub_8082934
|
|
||||||
|
|
||||||
thumb_func_start sub_80829C0
|
|
||||||
sub_80829C0: @ 80829C0
|
|
||||||
push {lr}
|
|
||||||
ldr r0, _080829EC @ =0x00000849
|
|
||||||
bl FlagGet
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080829F4
|
|
||||||
ldr r0, _080829F0 @ =gSaveBlock1Ptr
|
|
||||||
ldr r1, [r0]
|
|
||||||
movs r0, 0x4
|
|
||||||
ldrsb r0, [r1, r0]
|
|
||||||
cmp r0, 0x2
|
|
||||||
bne _080829F4
|
|
||||||
ldrb r0, [r1, 0x5]
|
|
||||||
subs r0, 0x1B
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x6
|
|
||||||
bhi _080829F4
|
|
||||||
movs r0, 0
|
|
||||||
b _080829F6
|
|
||||||
.align 2, 0
|
|
||||||
_080829EC: .4byte 0x00000849
|
|
||||||
_080829F0: .4byte gSaveBlock1Ptr
|
|
||||||
_080829F4:
|
|
||||||
movs r0, 0x1
|
|
||||||
_080829F6:
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_80829C0
|
|
||||||
|
|
||||||
thumb_func_start sub_80829FC
|
|
||||||
sub_80829FC: @ 80829FC
|
|
||||||
push {r4-r6,lr}
|
|
||||||
sub sp, 0x10
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r4, r0, 16
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r6, r1, 24
|
|
||||||
lsls r2, 24
|
|
||||||
lsrs r5, r2, 24
|
|
||||||
bl ZeroEnemyPartyMons
|
|
||||||
cmp r4, 0xC9
|
|
||||||
beq _08082A3C
|
|
||||||
bl Random
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
movs r1, 0x19
|
|
||||||
bl __umodsi3
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
ldr r1, _08082A38 @ =gEnemyParty
|
|
||||||
str r0, [sp]
|
|
||||||
adds r0, r1, 0
|
|
||||||
adds r1, r4, 0
|
|
||||||
adds r2, r6, 0
|
|
||||||
movs r3, 0x20
|
|
||||||
bl CreateMonWithNature
|
|
||||||
b _08082A74
|
|
||||||
.align 2, 0
|
|
||||||
_08082A38: .4byte gEnemyParty
|
|
||||||
_08082A3C:
|
|
||||||
ldr r0, _08082A7C @ =gSaveBlock1Ptr
|
|
||||||
ldr r0, [r0]
|
|
||||||
ldrb r1, [r0, 0x5]
|
|
||||||
subs r1, 0x1B
|
|
||||||
ldr r2, _08082A80 @ =gUnknown_83CA71C
|
|
||||||
lsls r1, 24
|
|
||||||
asrs r1, 24
|
|
||||||
lsls r0, r1, 1
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r5, r0
|
|
||||||
adds r0, r2
|
|
||||||
ldrb r0, [r0]
|
|
||||||
bl sub_8082A88
|
|
||||||
ldr r2, _08082A84 @ =gEnemyParty
|
|
||||||
movs r1, 0x1
|
|
||||||
str r1, [sp]
|
|
||||||
str r0, [sp, 0x4]
|
|
||||||
movs r0, 0
|
|
||||||
str r0, [sp, 0x8]
|
|
||||||
str r0, [sp, 0xC]
|
|
||||||
adds r0, r2, 0
|
|
||||||
movs r1, 0xC9
|
|
||||||
adds r2, r6, 0
|
|
||||||
movs r3, 0x20
|
|
||||||
bl CreateMon
|
|
||||||
_08082A74:
|
|
||||||
add sp, 0x10
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_08082A7C: .4byte gSaveBlock1Ptr
|
|
||||||
_08082A80: .4byte gUnknown_83CA71C
|
|
||||||
_08082A84: .4byte gEnemyParty
|
|
||||||
thumb_func_end sub_80829FC
|
|
||||||
|
|
||||||
thumb_func_start sub_8082A88
|
|
||||||
sub_8082A88: @ 8082A88
|
|
||||||
push {r4,r5,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r5, r0, 24
|
|
||||||
_08082A8E:
|
|
||||||
bl Random
|
|
||||||
adds r4, r0, 0
|
|
||||||
bl Random
|
|
||||||
lsls r4, 16
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
orrs r4, r0
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl GetUnownLetterByPersonalityLoByte
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, r5
|
|
||||||
bne _08082A8E
|
|
||||||
adds r0, r4, 0
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_8082A88
|
|
||||||
|
|
||||||
thumb_func_start GetUnownLetterByPersonalityLoByte
|
|
||||||
GetUnownLetterByPersonalityLoByte: @ 8082AB8
|
|
||||||
push {lr}
|
|
||||||
adds r2, r0, 0
|
|
||||||
movs r0, 0xC0
|
|
||||||
lsls r0, 18
|
|
||||||
ands r0, r2
|
|
||||||
lsrs r0, 18
|
|
||||||
movs r1, 0xC0
|
|
||||||
lsls r1, 10
|
|
||||||
ands r1, r2
|
|
||||||
lsrs r1, 12
|
|
||||||
orrs r0, r1
|
|
||||||
movs r1, 0xC0
|
|
||||||
lsls r1, 2
|
|
||||||
ands r1, r2
|
|
||||||
lsrs r1, 6
|
|
||||||
orrs r0, r1
|
|
||||||
movs r1, 0x3
|
|
||||||
ands r1, r2
|
|
||||||
orrs r0, r1
|
|
||||||
movs r1, 0x1C
|
|
||||||
bl __umodsi3
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end GetUnownLetterByPersonalityLoByte
|
|
||||||
|
|
||||||
thumb_func_start sub_8082AEC
|
|
||||||
sub_8082AEC: @ 8082AEC
|
|
||||||
push {r4-r7,lr}
|
|
||||||
mov r7, r8
|
|
||||||
push {r7}
|
|
||||||
adds r7, r0, 0
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
adds r0, r1, 0
|
|
||||||
lsls r2, 24
|
|
||||||
lsrs r2, 24
|
|
||||||
mov r8, r2
|
|
||||||
movs r6, 0
|
|
||||||
cmp r1, 0x1
|
|
||||||
beq _08082B1C
|
|
||||||
cmp r1, 0x1
|
|
||||||
bgt _08082B10
|
|
||||||
cmp r1, 0
|
|
||||||
beq _08082B16
|
|
||||||
b _08082B24
|
|
||||||
_08082B10:
|
|
||||||
cmp r0, 0x2
|
|
||||||
beq _08082B1C
|
|
||||||
b _08082B24
|
|
||||||
_08082B16:
|
|
||||||
bl ChooseWildMonIndex_Land
|
|
||||||
b _08082B20
|
|
||||||
_08082B1C:
|
|
||||||
bl ChooseWildMonIndex_WaterRock
|
|
||||||
_08082B20:
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r6, r0, 24
|
|
||||||
_08082B24:
|
|
||||||
lsls r4, r6, 2
|
|
||||||
ldr r0, [r7, 0x4]
|
|
||||||
adds r0, r4
|
|
||||||
bl ChooseWildMonLevel
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r5, r0, 24
|
|
||||||
mov r0, r8
|
|
||||||
cmp r0, 0x1
|
|
||||||
bne _08082B48
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl sub_808310C
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _08082B48
|
|
||||||
movs r0, 0
|
|
||||||
b _08082B58
|
|
||||||
_08082B48:
|
|
||||||
ldr r0, [r7, 0x4]
|
|
||||||
adds r0, r4, r0
|
|
||||||
ldrh r0, [r0, 0x2]
|
|
||||||
adds r1, r5, 0
|
|
||||||
adds r2, r6, 0
|
|
||||||
bl sub_80829FC
|
|
||||||
movs r0, 0x1
|
|
||||||
_08082B58:
|
|
||||||
pop {r3}
|
|
||||||
mov r8, r3
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_8082AEC
|
|
||||||
|
|
||||||
thumb_func_start sub_8082B64
|
|
||||||
sub_8082B64: @ 8082B64
|
|
||||||
push {r4-r6,lr}
|
|
||||||
adds r6, r0, 0
|
|
||||||
lsls r0, r1, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl ChooseWildMonIndex_Fishing
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
lsls r5, r4, 2
|
|
||||||
ldr r0, [r6, 0x4]
|
|
||||||
adds r0, r5
|
|
||||||
bl ChooseWildMonLevel
|
|
||||||
adds r1, r0, 0
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
ldr r0, [r6, 0x4]
|
|
||||||
adds r0, r5, r0
|
|
||||||
ldrh r0, [r0, 0x2]
|
|
||||||
adds r2, r4, 0
|
|
||||||
bl sub_80829FC
|
|
||||||
ldr r0, [r6, 0x4]
|
|
||||||
adds r5, r0
|
|
||||||
ldrh r0, [r5, 0x2]
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_8082B64
|
|
||||||
|
|
||||||
thumb_func_start sub_8082BA0
|
|
||||||
sub_8082BA0: @ 8082BA0
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r4, 16
|
|
||||||
lsrs r4, 16
|
|
||||||
bl sub_808322C
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
movs r1, 0xC8
|
|
||||||
lsls r1, 3
|
|
||||||
bl __umodsi3
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
cmp r0, r4
|
|
||||||
bcc _08082BC4
|
|
||||||
movs r0, 0
|
|
||||||
b _08082BC6
|
|
||||||
_08082BC4:
|
|
||||||
movs r0, 0x1
|
|
||||||
_08082BC6:
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_8082BA0
|
|
||||||
|
|
||||||
thumb_func_start sub_8082BCC
|
|
||||||
sub_8082BCC: @ 8082BCC
|
|
||||||
push {r4,r5,lr}
|
|
||||||
sub sp, 0x4
|
|
||||||
str r0, [sp]
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r5, r1, 24
|
|
||||||
lsls r0, 4
|
|
||||||
str r0, [sp]
|
|
||||||
movs r0, 0x6
|
|
||||||
bl TestPlayerAvatarFlags
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _08082BF6
|
|
||||||
ldr r1, [sp]
|
|
||||||
lsls r0, r1, 2
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 4
|
|
||||||
movs r1, 0x64
|
|
||||||
bl __udivsi3
|
|
||||||
str r0, [sp]
|
|
||||||
_08082BF6:
|
|
||||||
ldr r4, _08082C24 @ =gUnknown_20386D0
|
|
||||||
ldrh r0, [r4, 0x6]
|
|
||||||
lsls r0, 4
|
|
||||||
movs r1, 0xC8
|
|
||||||
bl __divsi3
|
|
||||||
ldr r1, [sp]
|
|
||||||
adds r1, r0
|
|
||||||
str r1, [sp]
|
|
||||||
mov r0, sp
|
|
||||||
bl sub_8083174
|
|
||||||
mov r0, sp
|
|
||||||
bl sub_80831D8
|
|
||||||
cmp r5, 0
|
|
||||||
bne _08082C34
|
|
||||||
ldrb r0, [r4, 0x9]
|
|
||||||
cmp r0, 0x1
|
|
||||||
beq _08082C28
|
|
||||||
cmp r0, 0x2
|
|
||||||
beq _08082C2E
|
|
||||||
b _08082C34
|
|
||||||
.align 2, 0
|
|
||||||
_08082C24: .4byte gUnknown_20386D0
|
|
||||||
_08082C28:
|
|
||||||
ldr r0, [sp]
|
|
||||||
lsrs r0, 1
|
|
||||||
b _08082C32
|
|
||||||
_08082C2E:
|
|
||||||
ldr r0, [sp]
|
|
||||||
lsls r0, 1
|
|
||||||
_08082C32:
|
|
||||||
str r0, [sp]
|
|
||||||
_08082C34:
|
|
||||||
ldr r0, [sp]
|
|
||||||
movs r1, 0xC8
|
|
||||||
lsls r1, 3
|
|
||||||
cmp r0, r1
|
|
||||||
bls _08082C40
|
|
||||||
str r1, [sp]
|
|
||||||
_08082C40:
|
|
||||||
ldr r0, [sp]
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
bl sub_8082BA0
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
add sp, 0x4
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_8082BCC
|
|
||||||
|
|
||||||
thumb_func_start sub_8082C58
|
|
||||||
sub_8082C58: @ 8082C58
|
|
||||||
push {r4,r5,lr}
|
|
||||||
ldr r5, _08082C90 @ =gUnknown_20386D0
|
|
||||||
movs r0, 0
|
|
||||||
strb r0, [r5, 0x9]
|
|
||||||
ldr r4, _08082C94 @ =gPlayerParty
|
|
||||||
adds r0, r4, 0
|
|
||||||
movs r1, 0x6
|
|
||||||
bl GetMonData
|
|
||||||
cmp r0, 0
|
|
||||||
bne _08082C84
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl GetMonAbility
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x1
|
|
||||||
beq _08082C82
|
|
||||||
cmp r0, 0x23
|
|
||||||
bne _08082C84
|
|
||||||
movs r0, 0x2
|
|
||||||
_08082C82:
|
|
||||||
strb r0, [r5, 0x9]
|
|
||||||
_08082C84:
|
|
||||||
ldr r0, _08082C90 @ =gUnknown_20386D0
|
|
||||||
ldrb r0, [r0, 0x9]
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_08082C90: .4byte gUnknown_20386D0
|
|
||||||
_08082C94: .4byte gPlayerParty
|
|
||||||
thumb_func_end sub_8082C58
|
|
||||||
|
|
||||||
thumb_func_start sub_8082C98
|
|
||||||
sub_8082C98: @ 8082C98
|
|
||||||
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 _08082CB4
|
|
||||||
movs r0, 0x1
|
|
||||||
b _08082CB6
|
|
||||||
_08082CB4:
|
|
||||||
movs r0, 0
|
|
||||||
_08082CB6:
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_8082C98
|
|
||||||
|
|
||||||
thumb_func_start sub_8082CBC
|
thumb_func_start sub_8082CBC
|
||||||
sub_8082CBC: @ 8082CBC
|
sub_8082CBC: @ 8082CBC
|
||||||
push {r4-r7,lr}
|
push {r4-r7,lr}
|
||||||
@@ -1372,8 +606,8 @@ _0808316C:
|
|||||||
bx r1
|
bx r1
|
||||||
thumb_func_end sub_808310C
|
thumb_func_end sub_808310C
|
||||||
|
|
||||||
thumb_func_start sub_8083174
|
thumb_func_start ApplyFluteEncounterRateMod
|
||||||
sub_8083174: @ 8083174
|
ApplyFluteEncounterRateMod: @ 8083174
|
||||||
push {r4,lr}
|
push {r4,lr}
|
||||||
adds r4, r0, 0
|
adds r4, r0, 0
|
||||||
bl sub_80831A0
|
bl sub_80831A0
|
||||||
@@ -1398,7 +632,7 @@ _08083198:
|
|||||||
pop {r4}
|
pop {r4}
|
||||||
pop {r0}
|
pop {r0}
|
||||||
bx r0
|
bx r0
|
||||||
thumb_func_end sub_8083174
|
thumb_func_end ApplyFluteEncounterRateMod
|
||||||
|
|
||||||
thumb_func_start sub_80831A0
|
thumb_func_start sub_80831A0
|
||||||
sub_80831A0: @ 80831A0
|
sub_80831A0: @ 80831A0
|
||||||
@@ -1431,8 +665,8 @@ _080831D2:
|
|||||||
bx r1
|
bx r1
|
||||||
thumb_func_end sub_80831A0
|
thumb_func_end sub_80831A0
|
||||||
|
|
||||||
thumb_func_start sub_80831D8
|
thumb_func_start ApplyCleanseTagEncounterRateMod
|
||||||
sub_80831D8: @ 80831D8
|
ApplyCleanseTagEncounterRateMod: @ 80831D8
|
||||||
push {r4,lr}
|
push {r4,lr}
|
||||||
adds r4, r0, 0
|
adds r4, r0, 0
|
||||||
bl sub_80831F8
|
bl sub_80831F8
|
||||||
@@ -1448,7 +682,7 @@ _080831F2:
|
|||||||
pop {r4}
|
pop {r4}
|
||||||
pop {r0}
|
pop {r0}
|
||||||
bx r0
|
bx r0
|
||||||
thumb_func_end sub_80831D8
|
thumb_func_end ApplyCleanseTagEncounterRateMod
|
||||||
|
|
||||||
thumb_func_start sub_80831F8
|
thumb_func_start sub_80831F8
|
||||||
sub_80831F8: @ 80831F8
|
sub_80831F8: @ 80831F8
|
||||||
|
|||||||
+9
-1
@@ -9,7 +9,15 @@
|
|||||||
.include "data/wild_encounters.inc"
|
.include "data/wild_encounters.inc"
|
||||||
|
|
||||||
gUnknown_83CA71C:: @ 83CA71C
|
gUnknown_83CA71C:: @ 83CA71C
|
||||||
.incbin "baserom.gba", 0x3CA71C, 0xED4
|
.byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27
|
||||||
|
.byte 2, 2, 2, 3, 3, 3, 7, 7, 7, 20, 20, 14
|
||||||
|
.byte 13, 13, 13, 13, 18, 18, 18, 18, 8, 8, 4, 4
|
||||||
|
.byte 15, 15, 11, 11, 9, 9, 17, 17, 17, 16, 16, 16
|
||||||
|
.byte 24, 24, 19, 19, 6, 6, 6, 5, 5, 5, 10, 10
|
||||||
|
.byte 21, 21, 21, 22, 22, 22, 23, 23, 12, 12, 1, 1
|
||||||
|
.byte 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26
|
||||||
|
|
||||||
|
.incbin "baserom.gba", 0x3CA770, 0xE80
|
||||||
|
|
||||||
gUnknown_83CB5F0:: @ 83CB5F0
|
gUnknown_83CB5F0:: @ 83CB5F0
|
||||||
.incbin "baserom.gba", 0x3CB5F0, 0x200
|
.incbin "baserom.gba", 0x3CB5F0, 0x200
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ void FishingWildEncounter(u8 rod);
|
|||||||
u16 GetLocalWildMon(bool8 *isWaterMon);
|
u16 GetLocalWildMon(bool8 *isWaterMon);
|
||||||
u16 GetLocalWaterMon(void);
|
u16 GetLocalWaterMon(void);
|
||||||
bool8 UpdateRepelCounter(void);
|
bool8 UpdateRepelCounter(void);
|
||||||
void sub_8082740(u8);
|
void sub_8082740(bool8 state);
|
||||||
u8 GetUnownLetterByPersonalityLoByte(u32 personality);
|
u8 GetUnownLetterByPersonalityLoByte(u32 personality);
|
||||||
bool8 SweetScentWildEncounter(void);
|
bool8 SweetScentWildEncounter(void);
|
||||||
void sub_8083214(u16 randVal);
|
void sub_8083214(u16 randVal);
|
||||||
|
|||||||
@@ -125,6 +125,7 @@ SECTIONS {
|
|||||||
src/battle_setup.o(.text);
|
src/battle_setup.o(.text);
|
||||||
asm/cable_club.o(.text);
|
asm/cable_club.o(.text);
|
||||||
asm/trainer_see.o(.text);
|
asm/trainer_see.o(.text);
|
||||||
|
src/wild_encounter.o(.text);
|
||||||
asm/wild_encounter.o(.text);
|
asm/wild_encounter.o(.text);
|
||||||
asm/field_effect.o(.text);
|
asm/field_effect.o(.text);
|
||||||
src/scanline_effect.o(.text);
|
src/scanline_effect.o(.text);
|
||||||
@@ -430,6 +431,7 @@ SECTIONS {
|
|||||||
src/battle_setup.o(.rodata);
|
src/battle_setup.o(.rodata);
|
||||||
data/cable_club.o(.rodata);
|
data/cable_club.o(.rodata);
|
||||||
data/trainer_see.o(.rodata);
|
data/trainer_see.o(.rodata);
|
||||||
|
src/wild_encounter.o(.rodata);
|
||||||
data/data_835B488.o(.rodata);
|
data/data_835B488.o(.rodata);
|
||||||
src/pokemon_icon.o(.rodata);
|
src/pokemon_icon.o(.rodata);
|
||||||
data/data_835B488.o(.rodata.83D4100);
|
data/data_835B488.o(.rodata.83D4100);
|
||||||
|
|||||||
@@ -0,0 +1,301 @@
|
|||||||
|
#include "global.h"
|
||||||
|
#include "random.h"
|
||||||
|
#include "wild_encounter.h"
|
||||||
|
#include "event_data.h"
|
||||||
|
#include "field_player_avatar.h"
|
||||||
|
#include "constants/species.h"
|
||||||
|
#include "constants/maps.h"
|
||||||
|
#include "constants/vars.h"
|
||||||
|
#include "constants/abilities.h"
|
||||||
|
|
||||||
|
struct UnkStruct_20386D0
|
||||||
|
{
|
||||||
|
u8 filler_0[6];
|
||||||
|
u16 unk_6;
|
||||||
|
u8 unk_8;
|
||||||
|
u8 unk_9;
|
||||||
|
};
|
||||||
|
|
||||||
|
EWRAM_DATA struct UnkStruct_20386D0 gUnknown_20386D0 = {};
|
||||||
|
EWRAM_DATA bool8 gUnknown_20386DC = FALSE;
|
||||||
|
|
||||||
|
extern const u8 gUnknown_83CA71C[][12];
|
||||||
|
|
||||||
|
bool8 UnlockedTanobyOrAreNotInTanoby(void);
|
||||||
|
u32 GenerateUnownPersonalityByLetter(u8 letter);
|
||||||
|
bool8 sub_808310C(u8 level);
|
||||||
|
u16 sub_808322C(void);
|
||||||
|
void ApplyFluteEncounterRateMod(u32 *rate);
|
||||||
|
void ApplyCleanseTagEncounterRateMod(u32 *rate);
|
||||||
|
|
||||||
|
void sub_8082740(bool8 state)
|
||||||
|
{
|
||||||
|
gUnknown_20386DC = state;
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 ChooseWildMonIndex_Land(void)
|
||||||
|
{
|
||||||
|
u8 pct = Random() % 100;
|
||||||
|
if (pct < 20)
|
||||||
|
return 0;
|
||||||
|
if (pct >= 20 && pct < 40)
|
||||||
|
return 1;
|
||||||
|
if (pct >= 40 && pct < 50)
|
||||||
|
return 2;
|
||||||
|
if (pct >= 50 && pct < 60)
|
||||||
|
return 3;
|
||||||
|
if (pct >= 60 && pct < 70)
|
||||||
|
return 4;
|
||||||
|
if (pct >= 70 && pct < 80)
|
||||||
|
return 5;
|
||||||
|
if (pct >= 80 && pct < 85)
|
||||||
|
return 6;
|
||||||
|
if (pct >= 85 && pct < 90)
|
||||||
|
return 7;
|
||||||
|
if (pct >= 90 && pct < 94)
|
||||||
|
return 8;
|
||||||
|
if (pct >= 94 && pct < 98)
|
||||||
|
return 9;
|
||||||
|
if (pct == 98)
|
||||||
|
return 10;
|
||||||
|
return 11;
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 ChooseWildMonIndex_WaterRock(void)
|
||||||
|
{
|
||||||
|
u8 pct = Random() % 100;
|
||||||
|
if (pct < 60)
|
||||||
|
return 0;
|
||||||
|
if (pct >= 60 && pct < 90)
|
||||||
|
return 1;
|
||||||
|
if (pct >= 90 && pct < 95)
|
||||||
|
return 2;
|
||||||
|
if (pct >= 95 && pct < 99)
|
||||||
|
return 3;
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 ChooseWildMonIndex_Fishing(u8 rod)
|
||||||
|
{
|
||||||
|
u8 slot = 0;
|
||||||
|
u8 pct = Random() % 100;
|
||||||
|
switch (rod)
|
||||||
|
{
|
||||||
|
case 0: // old
|
||||||
|
if (pct < 70)
|
||||||
|
slot = 0;
|
||||||
|
else
|
||||||
|
slot = 1;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
if (pct < 60)
|
||||||
|
slot = 2;
|
||||||
|
if (pct >= 60 && pct < 80)
|
||||||
|
slot = 3;
|
||||||
|
if (pct >= 80 && pct < 100)
|
||||||
|
slot = 4;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (pct < 40)
|
||||||
|
slot = 5;
|
||||||
|
if (pct >= 40 && pct < 80)
|
||||||
|
slot = 6;
|
||||||
|
if (pct >= 80 && pct < 95)
|
||||||
|
slot = 7;
|
||||||
|
if (pct >= 95 && pct < 99)
|
||||||
|
slot = 8;
|
||||||
|
if (pct == 99)
|
||||||
|
slot = 9;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return slot;
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 ChooseWildMonLevel(const struct WildPokemon * info)
|
||||||
|
{
|
||||||
|
u8 lo;
|
||||||
|
u8 hi;
|
||||||
|
u8 mod;
|
||||||
|
u8 res;
|
||||||
|
if (info->maxLevel >= info->minLevel)
|
||||||
|
{
|
||||||
|
lo = info->minLevel;
|
||||||
|
hi = info->maxLevel;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lo = info->maxLevel;
|
||||||
|
hi = info->minLevel;
|
||||||
|
}
|
||||||
|
mod = hi - lo + 1;
|
||||||
|
res = Random() % mod;
|
||||||
|
return lo + res;
|
||||||
|
}
|
||||||
|
|
||||||
|
u16 sub_8082934(void)
|
||||||
|
{
|
||||||
|
u16 i;
|
||||||
|
|
||||||
|
for (i = 0; ; i++)
|
||||||
|
{
|
||||||
|
const struct WildPokemonHeader *wildHeader = &gWildMonHeaders[i];
|
||||||
|
if (wildHeader->mapGroup == 0xFF)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (gWildMonHeaders[i].mapGroup == gSaveBlock1Ptr->location.mapGroup &&
|
||||||
|
gWildMonHeaders[i].mapNum == gSaveBlock1Ptr->location.mapNum)
|
||||||
|
{
|
||||||
|
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SIX_ISLAND_ALTERING_CAVE) &&
|
||||||
|
gSaveBlock1Ptr->location.mapNum == MAP_NUM(SIX_ISLAND_ALTERING_CAVE))
|
||||||
|
{
|
||||||
|
u16 alteringCaveId = VarGet(VAR_ALTERING_CAVE_WILD_SET);
|
||||||
|
if (alteringCaveId > 8)
|
||||||
|
alteringCaveId = 0;
|
||||||
|
|
||||||
|
i += alteringCaveId;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!UnlockedTanobyOrAreNotInTanoby())
|
||||||
|
break;
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 UnlockedTanobyOrAreNotInTanoby(void)
|
||||||
|
{
|
||||||
|
if (FlagGet(FLAG_SYS_UNLOCKED_TANOBY_RUINS))
|
||||||
|
return TRUE;
|
||||||
|
if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(SEVEN_ISLAND_TANOBY_RUINS_DILFORD_CHAMBER))
|
||||||
|
return TRUE;
|
||||||
|
if (!(gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER)
|
||||||
|
|| gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS_LIPTOO_CHAMBER)
|
||||||
|
|| gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS_WEEPTH_CHAMBER)
|
||||||
|
|| gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS_DILFORD_CHAMBER)
|
||||||
|
|| gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS_SCUFIB_CHAMBER)
|
||||||
|
|| gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS_RIXY_CHAMBER)
|
||||||
|
|| gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS_VIAPOIS_CHAMBER)
|
||||||
|
))
|
||||||
|
return TRUE;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GenerateWildMon(u16 species, u8 level, u8 slot)
|
||||||
|
{
|
||||||
|
u32 personality;
|
||||||
|
s8 chamber;
|
||||||
|
ZeroEnemyPartyMons();
|
||||||
|
if (species != SPECIES_UNOWN)
|
||||||
|
{
|
||||||
|
CreateMonWithNature(&gEnemyParty[0], species, level, 32, Random() % 25);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
chamber = gSaveBlock1Ptr->location.mapNum - MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER);
|
||||||
|
personality = GenerateUnownPersonalityByLetter(gUnknown_83CA71C[chamber][slot]);
|
||||||
|
CreateMon(&gEnemyParty[0], species, level, 32, TRUE, personality, FALSE, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 GenerateUnownPersonalityByLetter(u8 letter)
|
||||||
|
{
|
||||||
|
u32 personality;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
personality = (Random() << 16) | Random();
|
||||||
|
} while (GetUnownLetterByPersonalityLoByte(personality) != letter);
|
||||||
|
return personality;
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 GetUnownLetterByPersonalityLoByte(u32 personality)
|
||||||
|
{
|
||||||
|
return (((personality & 0x3000000) >> 18) | ((personality & 0x30000) >> 12) | ((personality & 0x300) >> 6) | (personality & 0x3)) % 0x1C;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 sub_8082AEC(const struct WildPokemonInfo * info, u8 tableIdx, u8 a2)
|
||||||
|
{
|
||||||
|
u8 slot = 0;
|
||||||
|
u8 level;
|
||||||
|
switch (tableIdx)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
slot = ChooseWildMonIndex_Land();
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
slot = ChooseWildMonIndex_WaterRock();
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
slot = ChooseWildMonIndex_WaterRock();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
level = ChooseWildMonLevel(&info->wildPokemon[slot]);
|
||||||
|
if (a2 == 1 && !sub_808310C(level))
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
GenerateWildMon(info->wildPokemon[slot].species, level, slot);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
u16 sub_8082B64(const struct WildPokemonInfo * info, u8 rod)
|
||||||
|
{
|
||||||
|
u8 slot = ChooseWildMonIndex_Fishing(rod);
|
||||||
|
u8 level = ChooseWildMonLevel(&info->wildPokemon[slot]);
|
||||||
|
GenerateWildMon(info->wildPokemon[slot].species, level, slot);
|
||||||
|
return info->wildPokemon[slot].species;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 DoWildEncounterRateDiceRoll(u16 a0)
|
||||||
|
{
|
||||||
|
if (sub_808322C() % 1600 < a0)
|
||||||
|
return TRUE;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 sub_8082BCC(u32 encounterRate, bool8 ignoreAbility)
|
||||||
|
{
|
||||||
|
encounterRate *= 16;
|
||||||
|
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE))
|
||||||
|
encounterRate = encounterRate * 80 / 100;
|
||||||
|
encounterRate += gUnknown_20386D0.unk_6 * 16 / 200;
|
||||||
|
ApplyFluteEncounterRateMod(&encounterRate);
|
||||||
|
ApplyCleanseTagEncounterRateMod(&encounterRate);
|
||||||
|
if (!ignoreAbility)
|
||||||
|
{
|
||||||
|
switch (gUnknown_20386D0.unk_9)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
encounterRate /= 2;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
encounterRate *= 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (encounterRate > 1600)
|
||||||
|
encounterRate = 1600;
|
||||||
|
return DoWildEncounterRateDiceRoll(encounterRate);
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 sub_8082C58(void)
|
||||||
|
{
|
||||||
|
gUnknown_20386D0.unk_9 = 0;
|
||||||
|
if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG))
|
||||||
|
{
|
||||||
|
u8 ability = GetMonAbility(&gPlayerParty[0]);
|
||||||
|
if (ability == ABILITY_STENCH)
|
||||||
|
gUnknown_20386D0.unk_9 = 1;
|
||||||
|
else if (ability == ABILITY_ILLUMINATE)
|
||||||
|
gUnknown_20386D0.unk_9 = 2;
|
||||||
|
}
|
||||||
|
return gUnknown_20386D0.unk_9;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 sub_8082C98(void)
|
||||||
|
{
|
||||||
|
if ((Random() % 100) >= 60)
|
||||||
|
return FALSE;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user