Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .macro CALL symbol
- lis r18,\symbol@h
- ori r18,r18,\symbol@l
- mtctr r18
- bctrl
- .endm
- .set sqrt, 0x8001B094
- stwu r1,-256(r1)
- stmw r4,8(r1)
- mflr r14
- mr r20,r3
- mr r8, r4
- lwz r3,12(r20)
- lis r4,-32768
- cmpw r4,r29
- bge endSubroutine
- lis r4,-32384
- cmpw r4,r29
- ble endSubroutine
- mr r4,r29
- mr r7,r4
- lwz r5, -0x18(r4)
- lwz r5,48(r4)
- lis r15,-32612
- lwz r19,-28816(r15)
- lwz r19,12(r19)
- rlwinm r17,r5,2,22,29
- li r5,0
- rlwinm r18,r5,2,22,29
- lwzx r17,r19,r17
- lwzx r18,r19,r18
- mr r3,r18
- mr r4,r17
- bl determineKMPDirection
- cmpwi r3,0
- lwz r3,12(r20)
- beq lololol
- lwz r3,8(r20)
- lololol:
- lbz r5, -0x18(r29)
- cmpwi r5, 0
- bne endSubroutine
- lbz r5, -0x17(r29)
- cmpwi r5, 0
- beq endSubroutine
- li r5, 0
- stb r5, -0x17(r29)
- mr r4, r3
- lwz r3, 0x30(r7)
- bl determineNearestKMPPoint
- endSubroutine:
- mtlr r14
- lmw r4,8(r1)
- addi r1,r1,256
- b end
- determineKMPDirection:
- stwu r1,-256(r1)
- stmw r4,8(r1)
- lfs f0,12(r3)
- lfs f1,12(r4)
- fcmpo cr0,f0,f1
- li r3,0
- bge setForwardFlag
- li r3,1
- setForwardFlag:
- lmw r4,8(r1)
- addi r1,r1,256
- blr
- getPlayerVector3:
- stwu r1, -256(r1)
- stmw r4, 8(r1)
- mflr r14
- lis r15, 0x809C
- lwz r15, -0x2EF0(r15)
- lwz r15, 0x20(r15)
- slwi r17, r3, 2
- lwzx r15, r15, r17
- lwz r15, 0x18(r15)
- addi r15, r15, 0x758
- mr r3, r15
- mtlr r14
- lmw r4,8(r1)
- addi r1,r1,256
- blr
- getEnemyPointVector3:
- stwu r1, -256(r1)
- stmw r4, 8(r1)
- mflr r14
- lis r15, 0x809C
- lwz r15, -0x70D8(r15)
- lwz r15, 0x10(r15)
- lwz r15, 0(r15)
- mr r9, r15
- clrlslwi r16, r3, 16,2
- lwzx r15, r15, r16
- cmpwi r4, 0
- lwz r3, 0xC(r15)
- beq goForward
- lwz r3, 0x8(r15)
- goForward:
- lbz r3, 0(r3)
- cmpw r3, r8
- bne skipThisAdjustment
- li r15, -1
- skipThisAdjustment:
- mr r3, r15
- mtlr r14
- lmw r4,8(r1)
- addi r1,r1,256
- blr
- getMaxEnemyPoints:
- stwu r1, -256(r1)
- stmw r4, 8(r1)
- mflr r14
- lis r15, 0x809C
- lwz r15, -0x70D8(r15)
- lwz r15, 0x10(r15)
- lhz r3, 4(r15)
- mtlr r14
- lmw r4,8(r1)
- addi r1,r1,256
- blr
- determineNearestKMPPoint:
- stwu r1,-256(r1)
- stmw r4,8(r1)
- mflr r14
- mr r18, r4
- BL getPlayerVector3
- mr r15, r3
- BL getMaxEnemyPoints
- mr r5, r3
- lis r16, 0x8160
- lis r17, 0x7F80
- stw r17, 4(r16)
- li r17, 0
- distanceDeterminationLoop:
- mr r4, r18
- mr r3, r17
- BL getEnemyPointVector3
- cmpwi r3, -1
- beq doNotReplace
- mr r9, r3
- lwz r4, 4(r9)
- mr r3, r15
- BL determineDistance
- lfs f0, 4(r16)
- fcmpo cr0, f0, f1
- ble doNotReplace
- stfs f1, 4(r16)
- stw r9, 8(r16)
- doNotReplace:
- addi r17, r17, 1
- cmpw r17, r5
- blt distanceDeterminationLoop
- exitLoop:
- lwz r3, 8(r16)
- cmpwi r18, 0
- lwz r4, 0xC(r3)
- beq skipThis
- lwz r4, 8(r3)
- skipThis:
- mr r3, r4
- li r5, 0
- stw r5, 4(r16)
- stw r5, 8(r16)
- mtlr r14
- lmw r4,8(r1)
- addi r1,r1,256
- blr
- determineDistance:
- stwu r1,-256(r1)
- stmw r4,8(r1)
- mflr r14
- lfs f10, 8(r3)
- lfs f11, 4(r3)
- lfs f12, 0(r3)
- lfs f13, 8(r3)
- lfs f14, 4(r3)
- lfs f15, 0(r3)
- subf f10, f10, f13
- subf f11, f11, f14
- subf f12, f12, f15
- fmul f10, f10, f10
- fmul f11, f11, f11
- fmul f12, f12, f12
- fadd f10, f10, f11
- fadd f10, f10, f12
- fmr f1, f10
- CALL sqrt
- mtlr r14
- lmw r4,8(r1)
- addi r1,r1,256
- blr
- end:
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement