mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 03:34:15 +01:00
decomp safari zone
This commit is contained in:
parent
2a1e63f2b2
commit
10a525d5a0
@ -7675,7 +7675,7 @@ sub_80838AC: @ 80838AC
|
|||||||
adds r6, r1, 0
|
adds r6, r1, 0
|
||||||
movs r0, 0xFF
|
movs r0, 0xFF
|
||||||
strb r0, [r6]
|
strb r0, [r6]
|
||||||
ldr r1, =gUnknown_085B262C
|
ldr r1, =gPokeblockNames
|
||||||
ldrb r0, [r5]
|
ldrb r0, [r5]
|
||||||
lsls r0, 2
|
lsls r0, 2
|
||||||
adds r0, r1
|
adds r0, r1
|
||||||
|
@ -1461,7 +1461,7 @@ _0809CAE4:
|
|||||||
b _0809CB28
|
b _0809CB28
|
||||||
.pool
|
.pool
|
||||||
_0809CAF8:
|
_0809CAF8:
|
||||||
bl safari_step
|
bl SafariZoneTakeStep
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
lsrs r0, 24
|
lsrs r0, 24
|
||||||
cmp r0, 0x1
|
cmp r0, 0x1
|
||||||
|
@ -590,7 +590,7 @@ sub_80FA004: @ 80FA004
|
|||||||
cmp r0, 0x1
|
cmp r0, 0x1
|
||||||
bne _080FA070
|
bne _080FA070
|
||||||
bl sub_80F9F5C
|
bl sub_80F9F5C
|
||||||
ldr r1, =gFieldCallback
|
ldr r1, =gUnknown_03005DB0
|
||||||
ldr r0, =hm_add_c3_launch_phase_2
|
ldr r0, =hm_add_c3_launch_phase_2
|
||||||
str r0, [r1]
|
str r0, [r1]
|
||||||
ldr r1, =gUnknown_0203CEEC
|
ldr r1, =gUnknown_0203CEEC
|
||||||
@ -605,7 +605,7 @@ _080FA070:
|
|||||||
cmp r0, 0x1
|
cmp r0, 0x1
|
||||||
bne _080FA0A0
|
bne _080FA0A0
|
||||||
bl sub_80F9F5C
|
bl sub_80F9F5C
|
||||||
ldr r1, =gFieldCallback
|
ldr r1, =gUnknown_03005DB0
|
||||||
ldr r0, =hm_add_c3_launch_phase_2
|
ldr r0, =hm_add_c3_launch_phase_2
|
||||||
str r0, [r1]
|
str r0, [r1]
|
||||||
ldr r1, =gUnknown_0203CEEC
|
ldr r1, =gUnknown_0203CEEC
|
||||||
@ -624,7 +624,7 @@ _080FA0AE:
|
|||||||
b _080FA0C4
|
b _080FA0C4
|
||||||
_080FA0B2:
|
_080FA0B2:
|
||||||
bl sub_80F9F5C
|
bl sub_80F9F5C
|
||||||
ldr r1, =gFieldCallback
|
ldr r1, =gUnknown_03005DB0
|
||||||
ldr r0, =hm_add_c3_launch_phase_2
|
ldr r0, =hm_add_c3_launch_phase_2
|
||||||
str r0, [r1]
|
str r0, [r1]
|
||||||
ldr r1, =gUnknown_0203CEEC
|
ldr r1, =gUnknown_0203CEEC
|
||||||
|
@ -22,7 +22,7 @@ _08145DD8:
|
|||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
lsrs r0, 24
|
lsrs r0, 24
|
||||||
strh r0, [r4]
|
strh r0, [r4]
|
||||||
ldr r1, =gFieldCallback
|
ldr r1, =gUnknown_03005DB0
|
||||||
ldr r0, =hm_add_c3_launch_phase_2
|
ldr r0, =hm_add_c3_launch_phase_2
|
||||||
str r0, [r1]
|
str r0, [r1]
|
||||||
ldr r1, =gUnknown_0203CEEC
|
ldr r1, =gUnknown_0203CEEC
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
thumb_func_start SetUpFieldMove_SweetScent
|
thumb_func_start SetUpFieldMove_SweetScent
|
||||||
SetUpFieldMove_SweetScent: @ 8159EF0
|
SetUpFieldMove_SweetScent: @ 8159EF0
|
||||||
ldr r1, =gFieldCallback
|
ldr r1, =gUnknown_03005DB0
|
||||||
ldr r0, =hm_add_c3_launch_phase_2
|
ldr r0, =hm_add_c3_launch_phase_2
|
||||||
str r0, [r1]
|
str r0, [r1]
|
||||||
ldr r1, =gUnknown_0203CEEC
|
ldr r1, =gUnknown_0203CEEC
|
||||||
|
@ -19,7 +19,7 @@ SetUpFieldMove_Teleport: @ 817C8BC
|
|||||||
b _0817C8E6
|
b _0817C8E6
|
||||||
.pool
|
.pool
|
||||||
_0817C8D8:
|
_0817C8D8:
|
||||||
ldr r1, =gFieldCallback
|
ldr r1, =gUnknown_03005DB0
|
||||||
ldr r0, =hm_add_c3_launch_phase_2
|
ldr r0, =hm_add_c3_launch_phase_2
|
||||||
str r0, [r1]
|
str r0, [r1]
|
||||||
ldr r1, =gUnknown_0203CEEC
|
ldr r1, =gUnknown_0203CEEC
|
||||||
|
@ -3122,7 +3122,7 @@ sub_8085E94: @ 8085E94
|
|||||||
thumb_func_start map_post_load_hook_exec
|
thumb_func_start map_post_load_hook_exec
|
||||||
map_post_load_hook_exec: @ 8085EA0
|
map_post_load_hook_exec: @ 8085EA0
|
||||||
push {r4,lr}
|
push {r4,lr}
|
||||||
ldr r4, =gFieldCallback
|
ldr r4, =gUnknown_03005DB0
|
||||||
ldr r0, [r4]
|
ldr r0, [r4]
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
beq _08085ECC
|
beq _08085ECC
|
||||||
@ -3177,7 +3177,7 @@ CB2_NewGame: @ 8085EF8
|
|||||||
ldr r1, =gUnknown_03005DAC
|
ldr r1, =gUnknown_03005DAC
|
||||||
ldr r0, =sub_80FB4E0
|
ldr r0, =sub_80FB4E0
|
||||||
str r0, [r1]
|
str r0, [r1]
|
||||||
ldr r1, =gFieldCallback
|
ldr r1, =gUnknown_03005DB0
|
||||||
movs r0, 0
|
movs r0, 0
|
||||||
str r0, [r1]
|
str r0, [r1]
|
||||||
ldr r0, =gUnknown_030026F8
|
ldr r0, =gUnknown_030026F8
|
||||||
@ -3420,7 +3420,7 @@ _08086178:
|
|||||||
sub_8086194: @ 8086194
|
sub_8086194: @ 8086194
|
||||||
push {lr}
|
push {lr}
|
||||||
bl sub_808631C
|
bl sub_808631C
|
||||||
ldr r1, =gFieldCallback
|
ldr r1, =gUnknown_03005DB0
|
||||||
ldr r0, =sub_80AF6A4
|
ldr r0, =sub_80AF6A4
|
||||||
str r0, [r1]
|
str r0, [r1]
|
||||||
bl c2_exit_to_overworld_2_switch
|
bl c2_exit_to_overworld_2_switch
|
||||||
|
24
asm/rom6.s
24
asm/rom6.s
@ -267,7 +267,7 @@ sub_8135654: @ 8135654
|
|||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
lsrs r0, 24
|
lsrs r0, 24
|
||||||
strh r0, [r4]
|
strh r0, [r4]
|
||||||
ldr r1, =gFieldCallback
|
ldr r1, =gUnknown_03005DB0
|
||||||
ldr r0, =hm_add_c3_launch_phase_2
|
ldr r0, =hm_add_c3_launch_phase_2
|
||||||
str r0, [r1]
|
str r0, [r1]
|
||||||
ldr r1, =gUnknown_0203CEEC
|
ldr r1, =gUnknown_0203CEEC
|
||||||
@ -284,7 +284,7 @@ _0813568C:
|
|||||||
movs r0, 0
|
movs r0, 0
|
||||||
b _081356AC
|
b _081356AC
|
||||||
_0813569E:
|
_0813569E:
|
||||||
ldr r1, =gFieldCallback
|
ldr r1, =gUnknown_03005DB0
|
||||||
ldr r0, =hm_add_c3_launch_phase_2
|
ldr r0, =hm_add_c3_launch_phase_2
|
||||||
str r0, [r1]
|
str r0, [r1]
|
||||||
ldr r1, =gUnknown_0203CEEC
|
ldr r1, =gUnknown_0203CEEC
|
||||||
@ -360,7 +360,7 @@ sub_813572C: @ 813572C
|
|||||||
movs r0, 0
|
movs r0, 0
|
||||||
b _0813574C
|
b _0813574C
|
||||||
_0813573E:
|
_0813573E:
|
||||||
ldr r1, =gFieldCallback
|
ldr r1, =gUnknown_03005DB0
|
||||||
ldr r0, =hm_add_c3_launch_phase_2
|
ldr r0, =hm_add_c3_launch_phase_2
|
||||||
str r0, [r1]
|
str r0, [r1]
|
||||||
ldr r1, =gUnknown_0203CEEC
|
ldr r1, =gUnknown_0203CEEC
|
||||||
@ -1205,7 +1205,7 @@ sub_8135F04: @ 8135F04
|
|||||||
adds r1, r3
|
adds r1, r3
|
||||||
ldr r5, [r2]
|
ldr r5, [r2]
|
||||||
adds r5, r1
|
adds r5, r1
|
||||||
ldr r2, =gUnknown_085B262C
|
ldr r2, =gPokeblockNames
|
||||||
ldrb r1, [r5]
|
ldrb r1, [r5]
|
||||||
lsls r1, 2
|
lsls r1, 2
|
||||||
adds r1, r2
|
adds r1, r2
|
||||||
@ -2583,7 +2583,7 @@ sub_8136AB4: @ 8136AB4
|
|||||||
movs r1, 0
|
movs r1, 0
|
||||||
bl sub_8198070
|
bl sub_8198070
|
||||||
ldr r0, =gStringVar1
|
ldr r0, =gStringVar1
|
||||||
ldr r3, =gUnknown_085B262C
|
ldr r3, =gPokeblockNames
|
||||||
ldr r1, =gSaveBlock1Ptr
|
ldr r1, =gSaveBlock1Ptr
|
||||||
ldr r2, [r1]
|
ldr r2, [r1]
|
||||||
ldr r1, =gUnknown_0203CE7C
|
ldr r1, =gUnknown_0203CE7C
|
||||||
@ -2784,7 +2784,7 @@ sub_8136C8C: @ 8136C8C
|
|||||||
lsls r4, 16
|
lsls r4, 16
|
||||||
lsrs r4, 16
|
lsrs r4, 16
|
||||||
ldr r0, =gBattleTextBuff1
|
ldr r0, =gBattleTextBuff1
|
||||||
ldr r3, =gUnknown_085B262C
|
ldr r3, =gPokeblockNames
|
||||||
ldr r2, [r5]
|
ldr r2, [r5]
|
||||||
ldrh r1, [r7]
|
ldrh r1, [r7]
|
||||||
lsls r1, 3
|
lsls r1, 3
|
||||||
@ -2838,9 +2838,9 @@ sub_8136D2C: @ 8136D2C
|
|||||||
lsrs r4, 24
|
lsrs r4, 24
|
||||||
ldr r5, =gUnknown_0203CE7C
|
ldr r5, =gUnknown_0203CE7C
|
||||||
ldrb r0, [r5]
|
ldrb r0, [r5]
|
||||||
bl sub_80FC3E8
|
bl SafariZoneActivatePokeblockFeeder
|
||||||
ldr r0, =gStringVar1
|
ldr r0, =gStringVar1
|
||||||
ldr r3, =gUnknown_085B262C
|
ldr r3, =gPokeblockNames
|
||||||
ldr r1, =gSaveBlock1Ptr
|
ldr r1, =gSaveBlock1Ptr
|
||||||
ldr r2, [r1]
|
ldr r2, [r1]
|
||||||
ldrh r1, [r5]
|
ldrh r1, [r5]
|
||||||
@ -3236,7 +3236,7 @@ sub_8137044: @ 8137044
|
|||||||
movs r1, 0
|
movs r1, 0
|
||||||
bl sub_8136F9C
|
bl sub_8136F9C
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
ldr r1, =gUnknown_085B262C
|
ldr r1, =gPokeblockNames
|
||||||
lsrs r0, 22
|
lsrs r0, 22
|
||||||
adds r0, r1
|
adds r0, r1
|
||||||
ldr r1, [r0]
|
ldr r1, [r0]
|
||||||
@ -3255,7 +3255,7 @@ sub_8137068: @ 8137068
|
|||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
lsrs r5, r0, 24
|
lsrs r5, r0, 24
|
||||||
movs r4, 0
|
movs r4, 0
|
||||||
ldr r7, =gUnknown_085B262C
|
ldr r7, =gPokeblockNames
|
||||||
_08137074:
|
_08137074:
|
||||||
lsls r1, r4, 3
|
lsls r1, r4, 3
|
||||||
ldr r0, =gUnknown_085B2720
|
ldr r0, =gUnknown_085B2720
|
||||||
@ -3338,7 +3338,7 @@ sub_81370FC: @ 81370FC
|
|||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
lsrs r0, 24
|
lsrs r0, 24
|
||||||
strh r0, [r4]
|
strh r0, [r4]
|
||||||
ldr r1, =gFieldCallback
|
ldr r1, =gUnknown_03005DB0
|
||||||
ldr r0, =hm_add_c3_launch_phase_2
|
ldr r0, =hm_add_c3_launch_phase_2
|
||||||
str r0, [r1]
|
str r0, [r1]
|
||||||
ldr r1, =gUnknown_0203CEEC
|
ldr r1, =gUnknown_0203CEEC
|
||||||
@ -3355,7 +3355,7 @@ _08137134:
|
|||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
bne _08137170
|
bne _08137170
|
||||||
ldr r1, =gFieldCallback
|
ldr r1, =gUnknown_03005DB0
|
||||||
ldr r0, =hm_add_c3_launch_phase_2
|
ldr r0, =hm_add_c3_launch_phase_2
|
||||||
str r0, [r1]
|
str r0, [r1]
|
||||||
ldr r1, =gUnknown_0203CEEC
|
ldr r1, =gUnknown_0203CEEC
|
||||||
|
@ -24078,7 +24078,7 @@ sub_80D3718: @ 80D3718
|
|||||||
lsrs r0, 24
|
lsrs r0, 24
|
||||||
cmp r0, 0x1
|
cmp r0, 0x1
|
||||||
bne _080D3754
|
bne _080D3754
|
||||||
ldr r1, =gFieldCallback
|
ldr r1, =gUnknown_03005DB0
|
||||||
ldr r0, =hm_add_c3_launch_phase_2
|
ldr r0, =hm_add_c3_launch_phase_2
|
||||||
str r0, [r1]
|
str r0, [r1]
|
||||||
ldr r1, =gUnknown_0203CEEC
|
ldr r1, =gUnknown_0203CEEC
|
||||||
@ -24380,7 +24380,7 @@ _080D395A:
|
|||||||
cmp r0, 0x1
|
cmp r0, 0x1
|
||||||
bne _080D39F8
|
bne _080D39F8
|
||||||
_080D39BC:
|
_080D39BC:
|
||||||
ldr r1, =gFieldCallback
|
ldr r1, =gUnknown_03005DB0
|
||||||
ldr r0, =hm_add_c3_launch_phase_2
|
ldr r0, =hm_add_c3_launch_phase_2
|
||||||
str r0, [r1]
|
str r0, [r1]
|
||||||
ldr r1, =gUnknown_0203CEEC
|
ldr r1, =gUnknown_0203CEEC
|
||||||
@ -24418,7 +24418,7 @@ _080D3A18:
|
|||||||
cmp r2, 0x1
|
cmp r2, 0x1
|
||||||
bne _080D3A2A
|
bne _080D3A2A
|
||||||
_080D3A1E:
|
_080D3A1E:
|
||||||
ldr r1, =gFieldCallback
|
ldr r1, =gUnknown_03005DB0
|
||||||
ldr r0, =hm_add_c3_launch_phase_2
|
ldr r0, =hm_add_c3_launch_phase_2
|
||||||
str r0, [r1]
|
str r0, [r1]
|
||||||
ldr r1, =gUnknown_0203CEEC
|
ldr r1, =gUnknown_0203CEEC
|
||||||
|
@ -74275,7 +74275,7 @@ _081B5714:
|
|||||||
movs r0, 0x5
|
movs r0, 0x5
|
||||||
bl PlaySE
|
bl PlaySE
|
||||||
_081B571A:
|
_081B571A:
|
||||||
ldr r0, =gFieldCallback
|
ldr r0, =gUnknown_03005DB0
|
||||||
movs r1, 0
|
movs r1, 0
|
||||||
str r1, [r0]
|
str r1, [r0]
|
||||||
ldr r0, =gUnknown_0203CEEC
|
ldr r0, =gUnknown_0203CEEC
|
||||||
@ -74421,7 +74421,7 @@ sub_81B5820: @ 81B5820
|
|||||||
lsrs r0, 24
|
lsrs r0, 24
|
||||||
cmp r0, 0x1
|
cmp r0, 0x1
|
||||||
bne _081B585C
|
bne _081B585C
|
||||||
ldr r1, =gFieldCallback
|
ldr r1, =gUnknown_03005DB0
|
||||||
ldr r0, =hm_add_c3_launch_phase_2
|
ldr r0, =hm_add_c3_launch_phase_2
|
||||||
str r0, [r1]
|
str r0, [r1]
|
||||||
ldr r1, =gUnknown_0203CEEC
|
ldr r1, =gUnknown_0203CEEC
|
||||||
@ -74539,7 +74539,7 @@ hm_prepare_waterfall: @ 81B58F0
|
|||||||
lsrs r0, 24
|
lsrs r0, 24
|
||||||
cmp r0, 0x1
|
cmp r0, 0x1
|
||||||
bne _081B594C
|
bne _081B594C
|
||||||
ldr r1, =gFieldCallback
|
ldr r1, =gUnknown_03005DB0
|
||||||
ldr r0, =hm_add_c3_launch_phase_2
|
ldr r0, =hm_add_c3_launch_phase_2
|
||||||
str r0, [r1]
|
str r0, [r1]
|
||||||
ldr r1, =gUnknown_0203CEEC
|
ldr r1, =gUnknown_0203CEEC
|
||||||
@ -74586,7 +74586,7 @@ sub_81B5974: @ 81B5974
|
|||||||
b _081B599E
|
b _081B599E
|
||||||
.pool
|
.pool
|
||||||
_081B5990:
|
_081B5990:
|
||||||
ldr r1, =gFieldCallback
|
ldr r1, =gUnknown_03005DB0
|
||||||
ldr r0, =hm_add_c3_launch_phase_2
|
ldr r0, =hm_add_c3_launch_phase_2
|
||||||
str r0, [r1]
|
str r0, [r1]
|
||||||
ldr r1, =gUnknown_0203CEEC
|
ldr r1, =gUnknown_0203CEEC
|
||||||
@ -81352,7 +81352,7 @@ sub_81B9354: @ 81B9354
|
|||||||
sub sp, 0xC
|
sub sp, 0xC
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
lsrs r0, 24
|
lsrs r0, 24
|
||||||
ldr r2, =gFieldCallback
|
ldr r2, =gUnknown_03005DB0
|
||||||
ldr r1, =hm_add_c3_without_phase_2
|
ldr r1, =hm_add_c3_without_phase_2
|
||||||
str r1, [r2]
|
str r1, [r2]
|
||||||
movs r1, 0
|
movs r1, 0
|
||||||
@ -81384,7 +81384,7 @@ sub_81B9390: @ 81B9390
|
|||||||
movs r0, 0xFF
|
movs r0, 0xFF
|
||||||
strh r0, [r4]
|
strh r0, [r4]
|
||||||
_081B93A6:
|
_081B93A6:
|
||||||
ldr r0, =gFieldCallback
|
ldr r0, =gUnknown_03005DB0
|
||||||
ldr r1, =hm_add_c3_without_phase_2
|
ldr r1, =hm_add_c3_without_phase_2
|
||||||
str r1, [r0]
|
str r1, [r0]
|
||||||
ldr r0, =c2_exit_to_overworld_2_switch
|
ldr r0, =c2_exit_to_overworld_2_switch
|
||||||
@ -81493,7 +81493,7 @@ _081B9486:
|
|||||||
ldr r1, =gSpecialVar_0x8004
|
ldr r1, =gSpecialVar_0x8004
|
||||||
ldrb r0, [r2]
|
ldrb r0, [r2]
|
||||||
strh r0, [r1]
|
strh r0, [r1]
|
||||||
ldr r1, =gFieldCallback
|
ldr r1, =gUnknown_03005DB0
|
||||||
ldr r0, =hm_add_c3_without_phase_2
|
ldr r0, =hm_add_c3_without_phase_2
|
||||||
str r0, [r1]
|
str r0, [r1]
|
||||||
ldr r0, =c2_exit_to_overworld_2_switch
|
ldr r0, =c2_exit_to_overworld_2_switch
|
||||||
@ -81629,7 +81629,7 @@ _081B95A4:
|
|||||||
lsrs r0, 24
|
lsrs r0, 24
|
||||||
strh r0, [r4]
|
strh r0, [r4]
|
||||||
_081B95BA:
|
_081B95BA:
|
||||||
ldr r0, =gFieldCallback
|
ldr r0, =gUnknown_03005DB0
|
||||||
ldr r1, =hm_add_c3_without_phase_2
|
ldr r1, =hm_add_c3_without_phase_2
|
||||||
str r1, [r0]
|
str r1, [r0]
|
||||||
ldr r0, =c2_exit_to_overworld_2_switch
|
ldr r0, =c2_exit_to_overworld_2_switch
|
||||||
|
@ -12059,7 +12059,7 @@ sub_81C4F44: @ 81C4F44
|
|||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
bne _081C4F6E
|
bne _081C4F6E
|
||||||
bl overworld_free_bg_tilemaps
|
bl overworld_free_bg_tilemaps
|
||||||
ldr r0, =gFieldCallback
|
ldr r0, =gUnknown_03005DB0
|
||||||
ldr r1, =hm_add_c3_without_phase_2
|
ldr r1, =hm_add_c3_without_phase_2
|
||||||
str r1, [r0]
|
str r1, [r0]
|
||||||
ldr r1, =c2_exit_to_overworld_2_switch
|
ldr r1, =c2_exit_to_overworld_2_switch
|
||||||
|
@ -1,524 +0,0 @@
|
|||||||
.include "asm/macros.inc"
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.syntax unified
|
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
thumb_func_start GetSafariZoneFlag
|
|
||||||
GetSafariZoneFlag: @ 80FC0A0
|
|
||||||
push {lr}
|
|
||||||
ldr r0, =0x0000088c
|
|
||||||
bl FlagGet
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.pool
|
|
||||||
thumb_func_end GetSafariZoneFlag
|
|
||||||
|
|
||||||
thumb_func_start SetSafariZoneFlag
|
|
||||||
SetSafariZoneFlag: @ 80FC0B4
|
|
||||||
push {lr}
|
|
||||||
ldr r0, =0x0000088c
|
|
||||||
bl FlagSet
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end SetSafariZoneFlag
|
|
||||||
|
|
||||||
thumb_func_start ResetSafariZoneFlag
|
|
||||||
ResetSafariZoneFlag: @ 80FC0C4
|
|
||||||
push {lr}
|
|
||||||
ldr r0, =0x0000088c
|
|
||||||
bl FlagReset
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end ResetSafariZoneFlag
|
|
||||||
|
|
||||||
thumb_func_start sub_80FC0D4
|
|
||||||
sub_80FC0D4: @ 80FC0D4
|
|
||||||
push {lr}
|
|
||||||
movs r0, 0x11
|
|
||||||
bl IncrementGameStat
|
|
||||||
bl SetSafariZoneFlag
|
|
||||||
bl sub_80FC244
|
|
||||||
ldr r1, =gNumSafariBalls
|
|
||||||
movs r0, 0x1E
|
|
||||||
strb r0, [r1]
|
|
||||||
ldr r1, =gUnknown_0203A04E
|
|
||||||
movs r2, 0xFA
|
|
||||||
lsls r2, 1
|
|
||||||
adds r0, r2, 0
|
|
||||||
strh r0, [r1]
|
|
||||||
ldr r0, =gUnknown_0203A050
|
|
||||||
movs r1, 0
|
|
||||||
strb r1, [r0]
|
|
||||||
ldr r0, =gUnknown_0203A051
|
|
||||||
strb r1, [r0]
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_80FC0D4
|
|
||||||
|
|
||||||
thumb_func_start sub_80FC114
|
|
||||||
sub_80FC114: @ 80FC114
|
|
||||||
push {lr}
|
|
||||||
ldr r0, =gUnknown_0203A050
|
|
||||||
ldrb r0, [r0]
|
|
||||||
ldr r1, =gUnknown_0203A051
|
|
||||||
ldrb r1, [r1]
|
|
||||||
bl sub_80EE44C
|
|
||||||
bl ResetSafariZoneFlag
|
|
||||||
bl sub_80FC244
|
|
||||||
ldr r1, =gNumSafariBalls
|
|
||||||
movs r0, 0
|
|
||||||
strb r0, [r1]
|
|
||||||
ldr r1, =gUnknown_0203A04E
|
|
||||||
movs r0, 0
|
|
||||||
strh r0, [r1]
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_80FC114
|
|
||||||
|
|
||||||
thumb_func_start safari_step
|
|
||||||
safari_step: @ 80FC14C
|
|
||||||
push {lr}
|
|
||||||
bl GetSafariZoneFlag
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080FC168
|
|
||||||
bl sub_80FC480
|
|
||||||
ldr r1, =gUnknown_0203A04E
|
|
||||||
ldrh r0, [r1]
|
|
||||||
subs r0, 0x1
|
|
||||||
strh r0, [r1]
|
|
||||||
lsls r0, 16
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080FC170
|
|
||||||
_080FC168:
|
|
||||||
movs r0, 0
|
|
||||||
b _080FC178
|
|
||||||
.pool
|
|
||||||
_080FC170:
|
|
||||||
ldr r0, =gUnknown_082A4B8A
|
|
||||||
bl ScriptContext1_SetupScript
|
|
||||||
movs r0, 0x1
|
|
||||||
_080FC178:
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.pool
|
|
||||||
thumb_func_end safari_step
|
|
||||||
|
|
||||||
thumb_func_start sub_80FC180
|
|
||||||
sub_80FC180: @ 80FC180
|
|
||||||
push {lr}
|
|
||||||
ldr r0, =gUnknown_082A4B6F
|
|
||||||
bl ScriptContext1_SetupScript
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_80FC180
|
|
||||||
|
|
||||||
thumb_func_start sub_80FC190
|
|
||||||
sub_80FC190: @ 80FC190
|
|
||||||
push {lr}
|
|
||||||
ldr r1, =gUnknown_0203A051
|
|
||||||
ldr r0, =gBattleResults
|
|
||||||
ldrb r0, [r0, 0x1F]
|
|
||||||
ldrb r2, [r1]
|
|
||||||
adds r0, r2
|
|
||||||
strb r0, [r1]
|
|
||||||
ldr r2, =gBattleOutcome
|
|
||||||
ldrb r0, [r2]
|
|
||||||
cmp r0, 0x7
|
|
||||||
bne _080FC1AE
|
|
||||||
ldr r1, =gUnknown_0203A050
|
|
||||||
ldrb r0, [r1]
|
|
||||||
adds r0, 0x1
|
|
||||||
strb r0, [r1]
|
|
||||||
_080FC1AE:
|
|
||||||
ldr r0, =gNumSafariBalls
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080FC1D8
|
|
||||||
ldr r0, =c2_exit_to_overworld_2_switch
|
|
||||||
bl SetMainCallback2
|
|
||||||
b _080FC21C
|
|
||||||
.pool
|
|
||||||
_080FC1D8:
|
|
||||||
ldrb r0, [r2]
|
|
||||||
cmp r0, 0x8
|
|
||||||
bne _080FC208
|
|
||||||
ldr r0, =gUnknown_082A4B4C
|
|
||||||
bl ScriptContext2_RunNewScript
|
|
||||||
bl warp_in
|
|
||||||
ldr r1, =gUnknown_03005DAC
|
|
||||||
ldr r0, =sub_80AF6F0
|
|
||||||
str r0, [r1]
|
|
||||||
ldr r0, =c2_load_new_map
|
|
||||||
bl SetMainCallback2
|
|
||||||
b _080FC21C
|
|
||||||
.pool
|
|
||||||
_080FC208:
|
|
||||||
cmp r0, 0x7
|
|
||||||
bne _080FC21C
|
|
||||||
ldr r0, =gUnknown_082A4B9B
|
|
||||||
bl ScriptContext1_SetupScript
|
|
||||||
bl script_env_2_set_ctx_paused
|
|
||||||
ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
|
|
||||||
bl SetMainCallback2
|
|
||||||
_080FC21C:
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_80FC190
|
|
||||||
|
|
||||||
thumb_func_start sub_80FC228
|
|
||||||
sub_80FC228: @ 80FC228
|
|
||||||
push {lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 20
|
|
||||||
ldr r1, =gUnknown_0203A054
|
|
||||||
adds r0, r1
|
|
||||||
movs r1, 0
|
|
||||||
movs r2, 0x10
|
|
||||||
bl memset
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_80FC228
|
|
||||||
|
|
||||||
thumb_func_start sub_80FC244
|
|
||||||
sub_80FC244: @ 80FC244
|
|
||||||
push {lr}
|
|
||||||
ldr r0, =gUnknown_0203A054
|
|
||||||
movs r1, 0
|
|
||||||
movs r2, 0xA0
|
|
||||||
bl memset
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_80FC244
|
|
||||||
|
|
||||||
thumb_func_start sub_80FC258
|
|
||||||
sub_80FC258: @ 80FC258
|
|
||||||
push {r4,r5,lr}
|
|
||||||
sub sp, 0x4
|
|
||||||
mov r4, sp
|
|
||||||
adds r4, 0x2
|
|
||||||
mov r0, sp
|
|
||||||
adds r1, r4, 0
|
|
||||||
bl GetXYCoordsOneStepInFrontOfPlayer
|
|
||||||
movs r5, 0
|
|
||||||
_080FC26A:
|
|
||||||
ldr r0, =gSaveBlock1Ptr
|
|
||||||
ldr r2, [r0]
|
|
||||||
ldr r1, =gUnknown_0203A054
|
|
||||||
lsls r0, r5, 4
|
|
||||||
adds r3, r0, r1
|
|
||||||
movs r1, 0x5
|
|
||||||
ldrsb r1, [r2, r1]
|
|
||||||
movs r0, 0x4
|
|
||||||
ldrsb r0, [r3, r0]
|
|
||||||
cmp r1, r0
|
|
||||||
bne _080FC2C4
|
|
||||||
mov r0, sp
|
|
||||||
movs r2, 0
|
|
||||||
ldrsh r1, [r3, r2]
|
|
||||||
movs r2, 0
|
|
||||||
ldrsh r0, [r0, r2]
|
|
||||||
cmp r1, r0
|
|
||||||
bne _080FC2C4
|
|
||||||
movs r0, 0x2
|
|
||||||
ldrsh r1, [r3, r0]
|
|
||||||
movs r2, 0
|
|
||||||
ldrsh r0, [r4, r2]
|
|
||||||
cmp r1, r0
|
|
||||||
bne _080FC2C4
|
|
||||||
ldr r0, =gScriptResult
|
|
||||||
strh r5, [r0]
|
|
||||||
ldr r1, =gUnknown_085B262C
|
|
||||||
ldrb r0, [r3, 0x8]
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r1
|
|
||||||
ldr r1, [r0]
|
|
||||||
ldr r0, =gStringVar1
|
|
||||||
bl StringCopy
|
|
||||||
b _080FC2D6
|
|
||||||
.pool
|
|
||||||
_080FC2C4:
|
|
||||||
adds r0, r5, 0x1
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r5, r0, 16
|
|
||||||
cmp r5, 0x9
|
|
||||||
bls _080FC26A
|
|
||||||
ldr r1, =gScriptResult
|
|
||||||
ldr r2, =0x0000ffff
|
|
||||||
adds r0, r2, 0
|
|
||||||
strh r0, [r1]
|
|
||||||
_080FC2D6:
|
|
||||||
add sp, 0x4
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_80FC258
|
|
||||||
|
|
||||||
thumb_func_start sub_80FC2E8
|
|
||||||
sub_80FC2E8: @ 80FC2E8
|
|
||||||
push {r4-r7,lr}
|
|
||||||
sub sp, 0x4
|
|
||||||
mov r4, sp
|
|
||||||
adds r4, 0x2
|
|
||||||
mov r0, sp
|
|
||||||
adds r1, r4, 0
|
|
||||||
bl PlayerGetDestCoords
|
|
||||||
movs r5, 0
|
|
||||||
adds r6, r4, 0
|
|
||||||
ldr r0, =gSaveBlock1Ptr
|
|
||||||
ldr r7, [r0]
|
|
||||||
mov r4, sp
|
|
||||||
ldr r0, =gUnknown_0203A054
|
|
||||||
mov r12, r0
|
|
||||||
_080FC306:
|
|
||||||
lsls r0, r5, 4
|
|
||||||
mov r1, r12
|
|
||||||
adds r3, r0, r1
|
|
||||||
movs r1, 0x5
|
|
||||||
ldrsb r1, [r7, r1]
|
|
||||||
movs r0, 0x4
|
|
||||||
ldrsb r0, [r3, r0]
|
|
||||||
cmp r1, r0
|
|
||||||
bne _080FC364
|
|
||||||
ldrh r0, [r4]
|
|
||||||
ldrh r1, [r3]
|
|
||||||
subs r0, r1
|
|
||||||
strh r0, [r4]
|
|
||||||
adds r2, r6, 0
|
|
||||||
ldrh r0, [r2]
|
|
||||||
ldrh r1, [r3, 0x2]
|
|
||||||
subs r0, r1
|
|
||||||
strh r0, [r2]
|
|
||||||
movs r1, 0
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
cmp r0, 0
|
|
||||||
bge _080FC336
|
|
||||||
negs r0, r0
|
|
||||||
strh r0, [r4]
|
|
||||||
_080FC336:
|
|
||||||
movs r1, 0
|
|
||||||
ldrsh r0, [r2, r1]
|
|
||||||
cmp r0, 0
|
|
||||||
bge _080FC342
|
|
||||||
negs r0, r0
|
|
||||||
strh r0, [r2]
|
|
||||||
_080FC342:
|
|
||||||
movs r2, 0
|
|
||||||
ldrsh r0, [r4, r2]
|
|
||||||
movs r2, 0
|
|
||||||
ldrsh r1, [r6, r2]
|
|
||||||
adds r0, r1
|
|
||||||
cmp r0, 0x5
|
|
||||||
bgt _080FC364
|
|
||||||
ldr r0, =gScriptResult
|
|
||||||
strh r5, [r0]
|
|
||||||
b _080FC376
|
|
||||||
.pool
|
|
||||||
_080FC364:
|
|
||||||
adds r0, r5, 0x1
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r5, r0, 16
|
|
||||||
cmp r5, 0x9
|
|
||||||
bls _080FC306
|
|
||||||
ldr r1, =gScriptResult
|
|
||||||
ldr r2, =0x0000ffff
|
|
||||||
adds r0, r2, 0
|
|
||||||
strh r0, [r1]
|
|
||||||
_080FC376:
|
|
||||||
add sp, 0x4
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_80FC2E8
|
|
||||||
|
|
||||||
thumb_func_start sub_80FC388
|
|
||||||
sub_80FC388: @ 80FC388
|
|
||||||
push {lr}
|
|
||||||
bl sub_80FC258
|
|
||||||
ldr r2, =gScriptResult
|
|
||||||
ldrh r1, [r2]
|
|
||||||
ldr r0, =0x0000ffff
|
|
||||||
cmp r1, r0
|
|
||||||
beq _080FC3B0
|
|
||||||
adds r0, r1, 0
|
|
||||||
lsls r0, 4
|
|
||||||
ldr r1, =gUnknown_0203A05C
|
|
||||||
adds r0, r1
|
|
||||||
b _080FC3B2
|
|
||||||
.pool
|
|
||||||
_080FC3B0:
|
|
||||||
movs r0, 0
|
|
||||||
_080FC3B2:
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_80FC388
|
|
||||||
|
|
||||||
thumb_func_start sub_80FC3B8
|
|
||||||
sub_80FC3B8: @ 80FC3B8
|
|
||||||
push {lr}
|
|
||||||
bl sub_80FC2E8
|
|
||||||
ldr r2, =gScriptResult
|
|
||||||
ldrh r1, [r2]
|
|
||||||
ldr r0, =0x0000ffff
|
|
||||||
cmp r1, r0
|
|
||||||
beq _080FC3E0
|
|
||||||
adds r0, r1, 0
|
|
||||||
lsls r0, 4
|
|
||||||
ldr r1, =gUnknown_0203A05C
|
|
||||||
adds r0, r1
|
|
||||||
b _080FC3E2
|
|
||||||
.pool
|
|
||||||
_080FC3E0:
|
|
||||||
movs r0, 0
|
|
||||||
_080FC3E2:
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_80FC3B8
|
|
||||||
|
|
||||||
thumb_func_start sub_80FC3E8
|
|
||||||
sub_80FC3E8: @ 80FC3E8
|
|
||||||
push {r4-r7,lr}
|
|
||||||
mov r7, r9
|
|
||||||
mov r6, r8
|
|
||||||
push {r6,r7}
|
|
||||||
sub sp, 0x4
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
mov r8, r0
|
|
||||||
movs r1, 0
|
|
||||||
ldr r2, =gUnknown_0203A054
|
|
||||||
mov r6, sp
|
|
||||||
adds r6, 0x2
|
|
||||||
movs r0, 0x8
|
|
||||||
adds r0, r2
|
|
||||||
mov r9, r0
|
|
||||||
ldr r7, =gSaveBlock1Ptr
|
|
||||||
_080FC408:
|
|
||||||
lsls r5, r1, 4
|
|
||||||
adds r4, r5, r2
|
|
||||||
movs r0, 0x4
|
|
||||||
ldrsb r0, [r4, r0]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080FC468
|
|
||||||
movs r3, 0
|
|
||||||
ldrsh r0, [r4, r3]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080FC468
|
|
||||||
movs r3, 0x2
|
|
||||||
ldrsh r0, [r4, r3]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080FC468
|
|
||||||
mov r0, sp
|
|
||||||
adds r1, r6, 0
|
|
||||||
bl GetXYCoordsOneStepInFrontOfPlayer
|
|
||||||
ldr r0, [r7]
|
|
||||||
ldrb r0, [r0, 0x5]
|
|
||||||
strb r0, [r4, 0x4]
|
|
||||||
mov r0, r9
|
|
||||||
adds r2, r5, r0
|
|
||||||
ldr r0, [r7]
|
|
||||||
mov r3, r8
|
|
||||||
lsls r1, r3, 3
|
|
||||||
ldr r3, =0x00000848
|
|
||||||
adds r0, r3
|
|
||||||
adds r0, r1
|
|
||||||
ldr r1, [r0, 0x4]
|
|
||||||
ldr r0, [r0]
|
|
||||||
str r0, [r2]
|
|
||||||
str r1, [r2, 0x4]
|
|
||||||
movs r0, 0x64
|
|
||||||
strb r0, [r4, 0x5]
|
|
||||||
mov r0, sp
|
|
||||||
ldrh r0, [r0]
|
|
||||||
strh r0, [r4]
|
|
||||||
ldrh r0, [r6]
|
|
||||||
strh r0, [r4, 0x2]
|
|
||||||
b _080FC472
|
|
||||||
.pool
|
|
||||||
_080FC468:
|
|
||||||
adds r0, r1, 0x1
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r1, r0, 24
|
|
||||||
cmp r1, 0x9
|
|
||||||
bls _080FC408
|
|
||||||
_080FC472:
|
|
||||||
add sp, 0x4
|
|
||||||
pop {r3,r4}
|
|
||||||
mov r8, r3
|
|
||||||
mov r9, r4
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_80FC3E8
|
|
||||||
|
|
||||||
thumb_func_start sub_80FC480
|
|
||||||
sub_80FC480: @ 80FC480
|
|
||||||
push {r4,r5,lr}
|
|
||||||
movs r4, 0
|
|
||||||
ldr r5, =gUnknown_0203A054
|
|
||||||
_080FC486:
|
|
||||||
lsls r0, r4, 4
|
|
||||||
adds r1, r0, r5
|
|
||||||
ldrb r0, [r1, 0x5]
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080FC4A0
|
|
||||||
subs r0, 0x1
|
|
||||||
strb r0, [r1, 0x5]
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080FC4A0
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl sub_80FC228
|
|
||||||
_080FC4A0:
|
|
||||||
adds r0, r4, 0x1
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r4, r0, 24
|
|
||||||
cmp r4, 0x9
|
|
||||||
bls _080FC486
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_80FC480
|
|
||||||
|
|
||||||
thumb_func_start sub_80FC4B4
|
|
||||||
sub_80FC4B4: @ 80FC4B4
|
|
||||||
push {lr}
|
|
||||||
bl sub_80FC258
|
|
||||||
ldr r3, =gScriptResult
|
|
||||||
ldrh r1, [r3]
|
|
||||||
ldr r0, =0x0000ffff
|
|
||||||
cmp r1, r0
|
|
||||||
beq _080FC4EC
|
|
||||||
ldr r0, =gStringVar2
|
|
||||||
ldr r2, =gUnknown_0203A054
|
|
||||||
lsls r1, 4
|
|
||||||
adds r1, r2
|
|
||||||
ldrb r1, [r1, 0x5]
|
|
||||||
movs r2, 0x2
|
|
||||||
movs r3, 0x3
|
|
||||||
bl ConvertIntToDecimalStringN
|
|
||||||
movs r0, 0x1
|
|
||||||
b _080FC4EE
|
|
||||||
.pool
|
|
||||||
_080FC4EC:
|
|
||||||
movs r0, 0
|
|
||||||
_080FC4EE:
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_80FC4B4
|
|
||||||
|
|
||||||
.align 2, 0 @ Don't pad with nop.
|
|
@ -294,7 +294,7 @@ sub_809FA18: @ 809FA18
|
|||||||
movs r0, 0
|
movs r0, 0
|
||||||
strb r0, [r1]
|
strb r0, [r1]
|
||||||
strb r0, [r1, 0x1]
|
strb r0, [r1, 0x1]
|
||||||
ldr r1, =gFieldCallback
|
ldr r1, =gUnknown_03005DB0
|
||||||
ldr r0, =sub_809FA00
|
ldr r0, =sub_809FA00
|
||||||
str r0, [r1]
|
str r0, [r1]
|
||||||
bx lr
|
bx lr
|
||||||
@ -680,7 +680,7 @@ StartMenu_SafariZoneRetire: @ 809FD74
|
|||||||
push {lr}
|
push {lr}
|
||||||
bl RemoveExtraStartMenuWindows
|
bl RemoveExtraStartMenuWindows
|
||||||
bl sub_80A0934
|
bl sub_80A0934
|
||||||
bl sub_80FC180
|
bl SafariZoneRetirePrompt
|
||||||
movs r0, 0x1
|
movs r0, 0x1
|
||||||
pop {r1}
|
pop {r1}
|
||||||
bx r1
|
bx r1
|
||||||
|
@ -670,7 +670,7 @@ sub_80B4D78: @ 80B4D78
|
|||||||
lsrs r0, 16
|
lsrs r0, 16
|
||||||
cmp r0, 0x4F
|
cmp r0, 0x4F
|
||||||
bhi _080B4E0E
|
bhi _080B4E0E
|
||||||
bl sub_80FC3B8
|
bl SafariZoneGetActivePokeblock
|
||||||
adds r7, r0, 0
|
adds r7, r0, 0
|
||||||
cmp r7, 0
|
cmp r7, 0
|
||||||
beq _080B4E0E
|
beq _080B4E0E
|
||||||
|
@ -116,7 +116,7 @@ gPokeblockFlavorCompatibilityTable:: @ 85B25A0
|
|||||||
gUnknown_085B2620:: @ 85B2620
|
gUnknown_085B2620:: @ 85B2620
|
||||||
.incbin "baserom.gba", 0x5b2620, 0xc
|
.incbin "baserom.gba", 0x5b2620, 0xc
|
||||||
|
|
||||||
gUnknown_085B262C:: @ 85B262C
|
gPokeblockNames:: @ 85B262C
|
||||||
.incbin "baserom.gba", 0x5b262c, 0x3c
|
.incbin "baserom.gba", 0x5b262c, 0x3c
|
||||||
|
|
||||||
gUnknown_085B2668:: @ 85B2668
|
gUnknown_085B2668:: @ 85B2668
|
||||||
|
@ -34,6 +34,15 @@
|
|||||||
|
|
||||||
#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID)
|
#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID)
|
||||||
|
|
||||||
|
#define BATTLE_WON 0x1
|
||||||
|
#define BATTLE_LOST 0x2
|
||||||
|
#define BATTLE_DREW 0x3
|
||||||
|
#define BATTLE_RAN 0x4
|
||||||
|
#define BATTLE_PLAYER_TELEPORTED 0x5
|
||||||
|
#define BATTLE_POKE_FLED 0x6
|
||||||
|
#define BATTLE_CAUGHT 0x7
|
||||||
|
#define BATTLE_OPPONENT_TELEPORTED 0xA
|
||||||
|
|
||||||
#define STATUS_SLEEP 0x7
|
#define STATUS_SLEEP 0x7
|
||||||
#define STATUS_POISON 0x8
|
#define STATUS_POISON 0x8
|
||||||
#define STATUS_BURN 0x10
|
#define STATUS_BURN 0x10
|
||||||
@ -299,7 +308,8 @@ struct BattleResults
|
|||||||
u8 unk12;
|
u8 unk12;
|
||||||
u8 battleTurnCounter; // 0x13
|
u8 battleTurnCounter; // 0x13
|
||||||
u8 pokeString2[10]; // 0x14
|
u8 pokeString2[10]; // 0x14
|
||||||
u8 filler1E[2];
|
u8 field_1E; // 0x1E
|
||||||
|
u8 field_1F; // 0x1F
|
||||||
u16 lastOpponentSpecies; // 0x20
|
u16 lastOpponentSpecies; // 0x20
|
||||||
u16 lastUsedMove; // 0x22
|
u16 lastUsedMove; // 0x22
|
||||||
u16 opponentMove; // 0x24
|
u16 opponentMove; // 0x24
|
||||||
|
@ -13,7 +13,6 @@ void ExitSafariMode(void);
|
|||||||
bool8 SafariZoneTakeStep(void);
|
bool8 SafariZoneTakeStep(void);
|
||||||
void SafariZoneRetirePrompt(void);
|
void SafariZoneRetirePrompt(void);
|
||||||
|
|
||||||
void SafariZoneGetPokeblockNameInFeeder(void);
|
|
||||||
struct Pokeblock *SafariZoneGetActivePokeblock(void);
|
struct Pokeblock *SafariZoneGetActivePokeblock(void);
|
||||||
void SafariZoneActivatePokeblockFeeder(u8 pokeblock_index);
|
void SafariZoneActivatePokeblockFeeder(u8 pokeblock_index);
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@ SECTIONS {
|
|||||||
asm/truck_scene.o(.text);
|
asm/truck_scene.o(.text);
|
||||||
asm/porthole.o(.text);
|
asm/porthole.o(.text);
|
||||||
asm/rotating_gate.o(.text);
|
asm/rotating_gate.o(.text);
|
||||||
asm/safari_zone.o(.text);
|
src/safari_zone.o(.text);
|
||||||
asm/contest_link_80FC4F4.o(.text);
|
asm/contest_link_80FC4F4.o(.text);
|
||||||
asm/item_use.o(.text);
|
asm/item_use.o(.text);
|
||||||
asm/battle_anim_80FE840.o(.text);
|
asm/battle_anim_80FE840.o(.text);
|
||||||
|
268
src/safari_zone.c
Normal file
268
src/safari_zone.c
Normal file
@ -0,0 +1,268 @@
|
|||||||
|
#include "global.h"
|
||||||
|
#include "safari_zone.h"
|
||||||
|
#include "event_data.h"
|
||||||
|
#include "game_stat.h"
|
||||||
|
#include "main.h"
|
||||||
|
#include "battle.h"
|
||||||
|
#include "string_util.h"
|
||||||
|
|
||||||
|
struct PokeblockFeeder
|
||||||
|
{
|
||||||
|
/*0x00*/ s16 x;
|
||||||
|
/*0x02*/ s16 y;
|
||||||
|
/*0x04*/ s8 mapNum;
|
||||||
|
/*0x05*/ u8 stepCounter;
|
||||||
|
/*0x08*/ struct Pokeblock pokeblock;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define NUM_POKEBLOCK_FEEDERS 10
|
||||||
|
|
||||||
|
extern u8 gBattleOutcome;
|
||||||
|
extern void* gUnknown_03005DAC;
|
||||||
|
|
||||||
|
extern u8 gUnknown_082A4B8A[];
|
||||||
|
extern u8 gUnknown_082A4B6F[];
|
||||||
|
extern u8 gUnknown_082A4B4C[];
|
||||||
|
extern u8 gUnknown_082A4B9B[];
|
||||||
|
extern const u8* const gPokeblockNames[];
|
||||||
|
|
||||||
|
extern void sub_80EE44C(u8, u8);
|
||||||
|
extern void IncrementGameStat(u8 index);
|
||||||
|
extern void ScriptContext1_SetupScript(u8*);
|
||||||
|
extern void ScriptContext2_RunNewScript(u8*);
|
||||||
|
extern void c2_exit_to_overworld_2_switch(void);
|
||||||
|
extern void c2_exit_to_overworld_1_continue_scripts_restart_music(void);
|
||||||
|
extern void c2_load_new_map(void);
|
||||||
|
extern void sub_80AF6F0(void);
|
||||||
|
extern void script_env_2_set_ctx_paused(void);
|
||||||
|
extern void warp_in(void);
|
||||||
|
extern void GetXYCoordsOneStepInFrontOfPlayer(s16* x, s16* y);
|
||||||
|
extern void PlayerGetDestCoords(s16* x, s16* y);
|
||||||
|
|
||||||
|
EWRAM_DATA u8 gNumSafariBalls = 0;
|
||||||
|
EWRAM_DATA static u16 sSafariZoneStepCounter = 0;
|
||||||
|
EWRAM_DATA static u8 sSafariZoneCaughtMons = 0;
|
||||||
|
EWRAM_DATA static u8 sSafariZoneFleedMons = 0;
|
||||||
|
EWRAM_DATA static struct PokeblockFeeder sPokeblockFeeders[NUM_POKEBLOCK_FEEDERS] = {0};
|
||||||
|
|
||||||
|
static void ClearAllPokeblockFeeders(void);
|
||||||
|
static void DecrementFeederStepCounters(void);
|
||||||
|
|
||||||
|
bool32 GetSafariZoneFlag(void)
|
||||||
|
{
|
||||||
|
return FlagGet(SYS_SAFARI_MODE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetSafariZoneFlag(void)
|
||||||
|
{
|
||||||
|
FlagSet(SYS_SAFARI_MODE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ResetSafariZoneFlag(void)
|
||||||
|
{
|
||||||
|
FlagReset(SYS_SAFARI_MODE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void EnterSafariMode(void)
|
||||||
|
{
|
||||||
|
IncrementGameStat(GAME_STAT_ENTERED_SAFARI_ZONE);
|
||||||
|
SetSafariZoneFlag();
|
||||||
|
ClearAllPokeblockFeeders();
|
||||||
|
gNumSafariBalls = 30;
|
||||||
|
sSafariZoneStepCounter = 500;
|
||||||
|
sSafariZoneCaughtMons = 0;
|
||||||
|
sSafariZoneFleedMons = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExitSafariMode(void)
|
||||||
|
{
|
||||||
|
sub_80EE44C(sSafariZoneCaughtMons, sSafariZoneFleedMons);
|
||||||
|
ResetSafariZoneFlag();
|
||||||
|
ClearAllPokeblockFeeders();
|
||||||
|
gNumSafariBalls = 0;
|
||||||
|
sSafariZoneStepCounter = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 SafariZoneTakeStep(void)
|
||||||
|
{
|
||||||
|
if (GetSafariZoneFlag() == FALSE)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
DecrementFeederStepCounters();
|
||||||
|
sSafariZoneStepCounter--;
|
||||||
|
if (sSafariZoneStepCounter == 0)
|
||||||
|
{
|
||||||
|
ScriptContext1_SetupScript(gUnknown_082A4B8A);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SafariZoneRetirePrompt(void)
|
||||||
|
{
|
||||||
|
ScriptContext1_SetupScript(gUnknown_082A4B6F);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80FC190(void)
|
||||||
|
{
|
||||||
|
sSafariZoneFleedMons += gBattleResults.field_1F;
|
||||||
|
if (gBattleOutcome == BATTLE_CAUGHT)
|
||||||
|
sSafariZoneCaughtMons++;
|
||||||
|
if (gNumSafariBalls != 0)
|
||||||
|
{
|
||||||
|
SetMainCallback2(c2_exit_to_overworld_2_switch);
|
||||||
|
}
|
||||||
|
else if (gBattleOutcome == 8)
|
||||||
|
{
|
||||||
|
ScriptContext2_RunNewScript(gUnknown_082A4B4C);
|
||||||
|
warp_in();
|
||||||
|
gUnknown_03005DAC = sub_80AF6F0;
|
||||||
|
SetMainCallback2(c2_load_new_map);
|
||||||
|
}
|
||||||
|
else if (gBattleOutcome == BATTLE_CAUGHT)
|
||||||
|
{
|
||||||
|
ScriptContext1_SetupScript(gUnknown_082A4B9B);
|
||||||
|
script_env_2_set_ctx_paused();
|
||||||
|
SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ClearPokeblockFeeder(u8 index)
|
||||||
|
{
|
||||||
|
memset(&sPokeblockFeeders[index], 0, sizeof(struct PokeblockFeeder));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ClearAllPokeblockFeeders(void)
|
||||||
|
{
|
||||||
|
memset(sPokeblockFeeders, 0, sizeof(sPokeblockFeeders));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void GetPokeblockFeederInFront(void)
|
||||||
|
{
|
||||||
|
s16 x, y;
|
||||||
|
u16 i;
|
||||||
|
|
||||||
|
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
|
||||||
|
|
||||||
|
for (i = 0; i < NUM_POKEBLOCK_FEEDERS; i++)
|
||||||
|
{
|
||||||
|
if (gSaveBlock1Ptr->location.mapNum == sPokeblockFeeders[i].mapNum
|
||||||
|
&& sPokeblockFeeders[i].x == x
|
||||||
|
&& sPokeblockFeeders[i].y == y)
|
||||||
|
{
|
||||||
|
gScriptResult = i;
|
||||||
|
StringCopy(gStringVar1, gPokeblockNames[sPokeblockFeeders[i].pokeblock.color]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gScriptResult = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GetPokeblockFeederWithinRange(void)
|
||||||
|
{
|
||||||
|
s16 x, y;
|
||||||
|
u16 i;
|
||||||
|
|
||||||
|
PlayerGetDestCoords(&x, &y);
|
||||||
|
|
||||||
|
for (i = 0; i < NUM_POKEBLOCK_FEEDERS; i++)
|
||||||
|
{
|
||||||
|
if (gSaveBlock1Ptr->location.mapNum == sPokeblockFeeders[i].mapNum)
|
||||||
|
{
|
||||||
|
//Get absolute value of x and y distance from Pokeblock feeder on current map
|
||||||
|
x -= sPokeblockFeeders[i].x;
|
||||||
|
y -= sPokeblockFeeders[i].y;
|
||||||
|
if (x < 0)
|
||||||
|
x *= -1;
|
||||||
|
if (y < 0)
|
||||||
|
y *= -1;
|
||||||
|
if ((x + y) <= 5)
|
||||||
|
{
|
||||||
|
gScriptResult = i;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gScriptResult = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// unused
|
||||||
|
struct Pokeblock *SafariZoneGetPokeblockInFront(void)
|
||||||
|
{
|
||||||
|
GetPokeblockFeederInFront();
|
||||||
|
|
||||||
|
if (gScriptResult == 0xFFFF)
|
||||||
|
return NULL;
|
||||||
|
else
|
||||||
|
return &sPokeblockFeeders[gScriptResult].pokeblock;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Pokeblock *SafariZoneGetActivePokeblock(void)
|
||||||
|
{
|
||||||
|
GetPokeblockFeederWithinRange();
|
||||||
|
|
||||||
|
if (gScriptResult == 0xFFFF)
|
||||||
|
return NULL;
|
||||||
|
else
|
||||||
|
return &sPokeblockFeeders[gScriptResult].pokeblock;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SafariZoneActivatePokeblockFeeder(u8 pkblId)
|
||||||
|
{
|
||||||
|
s16 x, y;
|
||||||
|
u8 i;
|
||||||
|
|
||||||
|
for (i = 0; i < NUM_POKEBLOCK_FEEDERS; i++)
|
||||||
|
{
|
||||||
|
// Find free entry in sPokeblockFeeders
|
||||||
|
if (sPokeblockFeeders[i].mapNum == 0
|
||||||
|
&& sPokeblockFeeders[i].x == 0
|
||||||
|
&& sPokeblockFeeders[i].y == 0)
|
||||||
|
{
|
||||||
|
// Initialize Pokeblock feeder
|
||||||
|
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
|
||||||
|
sPokeblockFeeders[i].mapNum = gSaveBlock1Ptr->location.mapNum;
|
||||||
|
sPokeblockFeeders[i].pokeblock = gSaveBlock1Ptr->pokeblocks[pkblId];
|
||||||
|
sPokeblockFeeders[i].stepCounter = 100;
|
||||||
|
sPokeblockFeeders[i].x = x;
|
||||||
|
sPokeblockFeeders[i].y = y;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DecrementFeederStepCounters(void)
|
||||||
|
{
|
||||||
|
u8 i;
|
||||||
|
|
||||||
|
for (i = 0; i < NUM_POKEBLOCK_FEEDERS; i++)
|
||||||
|
{
|
||||||
|
if (sPokeblockFeeders[i].stepCounter != 0)
|
||||||
|
{
|
||||||
|
sPokeblockFeeders[i].stepCounter--;
|
||||||
|
if (sPokeblockFeeders[i].stepCounter == 0)
|
||||||
|
ClearPokeblockFeeder(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// unused
|
||||||
|
bool8 GetInFrontFeederPokeblockAndSteps(void)
|
||||||
|
{
|
||||||
|
GetPokeblockFeederInFront();
|
||||||
|
|
||||||
|
if (gScriptResult == 0xFFFF)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
ConvertIntToDecimalStringN(gStringVar2,
|
||||||
|
sPokeblockFeeders[gScriptResult].stepCounter,
|
||||||
|
STR_CONV_MODE_LEADING_ZEROS, 3);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
@ -272,7 +272,7 @@ gUnknown_03005DA8: @ 3005DA8
|
|||||||
gUnknown_03005DAC: @ 3005DAC
|
gUnknown_03005DAC: @ 3005DAC
|
||||||
.space 0x4
|
.space 0x4
|
||||||
|
|
||||||
gFieldCallback: @ 3005DB0
|
gUnknown_03005DB0: @ 3005DB0
|
||||||
.space 0x4
|
.space 0x4
|
||||||
|
|
||||||
gUnknown_03005DB4: @ 3005DB4
|
gUnknown_03005DB4: @ 3005DB4
|
||||||
|
@ -1205,23 +1205,7 @@ gUnknown_0203A044: @ 203A044
|
|||||||
gUnknown_0203A048: @ 203A048
|
gUnknown_0203A048: @ 203A048
|
||||||
.space 0x4
|
.space 0x4
|
||||||
|
|
||||||
gNumSafariBalls: @ 203A04C
|
.include "src/safari_zone.o"
|
||||||
.space 0x2
|
|
||||||
|
|
||||||
gUnknown_0203A04E: @ 203A04E
|
|
||||||
.space 0x2
|
|
||||||
|
|
||||||
gUnknown_0203A050: @ 203A050
|
|
||||||
.space 0x1
|
|
||||||
|
|
||||||
gUnknown_0203A051: @ 203A051
|
|
||||||
.space 0x3
|
|
||||||
|
|
||||||
gUnknown_0203A054: @ 203A054
|
|
||||||
.space 0x8
|
|
||||||
|
|
||||||
gUnknown_0203A05C: @ 203A05C
|
|
||||||
.space 0x98
|
|
||||||
|
|
||||||
gUnknown_0203A0F4: @ 203A0F4
|
gUnknown_0203A0F4: @ 203A0F4
|
||||||
.space 0x4
|
.space 0x4
|
||||||
|
Loading…
Reference in New Issue
Block a user