diff options
Diffstat (limited to 'asm')
-rw-r--r-- | asm/trainer_see.s | 161 |
1 files changed, 22 insertions, 139 deletions
diff --git a/asm/trainer_see.s b/asm/trainer_see.s index 16398f9a4..82e5f89cb 100644 --- a/asm/trainer_see.s +++ b/asm/trainer_see.s @@ -5,127 +5,10 @@ .text - thumb_func_start CheckIfTrainerWantsBattle -@ u8 CheckIfTrainerWantsBattle(u8 trainerFieldObjectId) -CheckIfTrainerWantsBattle: @ 80B3D00 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0x1 - mov r9, r0 - bl InTrainerHill - cmp r0, 0x1 - bne _080B3D1E - bl sub_81D62AC - b _080B3D24 -_080B3D1E: - adds r0, r5, 0 - bl GetFieldObjectScriptPointerByFieldObjectId -_080B3D24: - adds r7, r0, 0 - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - beq _080B3D3E - adds r0, r5, 0 - bl GetBattlePyramidTrainerFlag -_080B3D36: - lsls r0, 24 -_080B3D38: - cmp r0, 0 - beq _080B3D56 - b _080B3DE0 -_080B3D3E: - bl InTrainerHill - cmp r0, 0x1 - bne _080B3D4E - adds r0, r5, 0 - bl GetTrainerHillTrainerFlag - b _080B3D36 -_080B3D4E: - adds r0, r7, 0 - bl GetTrainerFlagFromScriptPointer - b _080B3D38 -_080B3D56: - lsls r4, r5, 3 - adds r0, r4, r5 - lsls r0, 2 - ldr r1, =gMapObjects - adds r0, r1 - bl CheckIfTrainerCanApproachPlayer - lsls r0, 24 - lsrs r6, r0, 24 - mov r8, r4 - cmp r6, 0 - beq _080B3DE0 - ldrb r0, [r7, 0x1] - cmp r0, 0x4 - beq _080B3D7C - cmp r0, 0x7 - beq _080B3D7C - cmp r0, 0x6 - bne _080B3D8A -_080B3D7C: - bl GetMonsStateToDoubles_2 - lsls r0, 24 - cmp r0, 0 - bne _080B3DE0 - movs r1, 0x2 - mov r9, r1 -_080B3D8A: - ldr r2, =gApproachingTrainers - ldr r4, =gNoOfApproachingTrainers - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strb r5, [r0] - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r1, r2, 0x4 - adds r0, r1 - str r7, [r0] - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strb r6, [r0, 0x1] - mov r1, r8 - adds r0, r1, r5 - lsls r0, 2 - ldr r1, =gMapObjects - adds r0, r1 - subs r1, r6, 0x1 - lsls r1, 24 - lsrs r1, 24 - bl TrainerApproachPlayer - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - mov r0, r9 - b _080B3DE2 - .pool -_080B3DE0: - movs r0, 0 -_080B3DE2: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end CheckIfTrainerWantsBattle - thumb_func_start CheckIfTrainerCanApproachPlayer -@ u8 CheckIfTrainerCanApproachPlayer(struct npc_state *trainerFieldObject) -CheckIfTrainerCanApproachPlayer: @ 80B3DF0 + thumb_func_start GetTrainerApproachDistance +@ u8 GetTrainerApproachDistance(struct npc_state *trainerFieldObject) +GetTrainerApproachDistance: @ 80B3DF0 push {r4-r7,lr} mov r7, r8 push {r7} @@ -140,7 +23,7 @@ CheckIfTrainerCanApproachPlayer: @ 80B3DF0 mov r8, r4 cmp r0, 0x1 bne _080B3E50 - ldr r1, =gIsTrainerInRange + ldr r1, =sDirectionalApproachDistanceFuncs ldrb r0, [r7, 0x18] lsls r0, 28 lsrs r0, 26 @@ -173,7 +56,7 @@ _080B3E4C: _080B3E50: movs r5, 0 _080B3E52: - ldr r0, =gIsTrainerInRange + ldr r0, =sDirectionalApproachDistanceFuncs lsls r4, r5, 2 adds r4, r0 ldrb r1, [r7, 0x1D] @@ -210,11 +93,11 @@ _080B3E90: pop {r1} bx r1 .pool - thumb_func_end CheckIfTrainerCanApproachPlayer + thumb_func_end GetTrainerApproachDistance - thumb_func_start IsTrainerInRangeSouth -@ u8 IsTrainerInRangeSouth(struct npc_state *trainerFieldObject, u16 sightRange, u16 playerX, u16 playerY) -IsTrainerInRangeSouth: @ 80B3EA0 + thumb_func_start GetTrainerApproachDistanceSouth +@ u8 GetTrainerApproachDistanceSouth(struct npc_state *trainerFieldObject, u16 sightRange, u16 playerX, u16 playerY) +GetTrainerApproachDistanceSouth: @ 80B3EA0 push {r4-r6,lr} adds r4, r0, 0 lsls r1, 16 @@ -250,11 +133,11 @@ _080B3EDC: pop {r4-r6} pop {r1} bx r1 - thumb_func_end IsTrainerInRangeSouth + thumb_func_end GetTrainerApproachDistanceSouth - thumb_func_start IsTrainerInRangeNorth -@ u8 IsTrainerInRangeNorth(struct npc_state *trainerFieldObject, u16 sightRange, u16 playerX, u16 playerY) -IsTrainerInRangeNorth: @ 80B3EE4 + thumb_func_start GetTrainerApproachDistanceNorth +@ u8 GetTrainerApproachDistanceNorth(struct npc_state *trainerFieldObject, u16 sightRange, u16 playerX, u16 playerY) +GetTrainerApproachDistanceNorth: @ 80B3EE4 push {r4-r6,lr} adds r4, r0, 0 lsls r1, 16 @@ -290,11 +173,11 @@ _080B3F20: pop {r4-r6} pop {r1} bx r1 - thumb_func_end IsTrainerInRangeNorth + thumb_func_end GetTrainerApproachDistanceNorth - thumb_func_start IsTrainerInRangeWest -@ u8 IsTrainerInRangeWest(struct npc_state *trainerFieldObject, u16 sightRange, u16 playerX, u16 playerY) -IsTrainerInRangeWest: @ 80B3F28 + thumb_func_start GetTrainerApproachDistanceWest +@ u8 GetTrainerApproachDistanceWest(struct npc_state *trainerFieldObject, u16 sightRange, u16 playerX, u16 playerY) +GetTrainerApproachDistanceWest: @ 80B3F28 push {r4-r6,lr} adds r4, r0, 0 lsls r1, 16 @@ -330,11 +213,11 @@ _080B3F64: pop {r4-r6} pop {r1} bx r1 - thumb_func_end IsTrainerInRangeWest + thumb_func_end GetTrainerApproachDistanceWest - thumb_func_start IsTrainerInRangeEast -@ u8 IsTrainerInRangeEast(struct npc_state *trainerFieldObject, u16 sightRange, u16 playerX, u16 playerY) -IsTrainerInRangeEast: @ 80B3F6C + thumb_func_start GetTrainerApproachDistanceEast +@ u8 GetTrainerApproachDistanceEast(struct npc_state *trainerFieldObject, u16 sightRange, u16 playerX, u16 playerY) +GetTrainerApproachDistanceEast: @ 80B3F6C push {r4-r6,lr} adds r4, r0, 0 lsls r1, 16 @@ -370,7 +253,7 @@ _080B3FA8: pop {r4-r6} pop {r1} bx r1 - thumb_func_end IsTrainerInRangeEast + thumb_func_end GetTrainerApproachDistanceEast thumb_func_start CheckPathBetweenTrainerAndPlayer @ u8 CheckPathBetweenTrainerAndPlayer(struct npc_state *fieldObject, u8 a2, u8 direction) |