Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Note: This code will be stand alone.
- 0017b8f8:
- 8f8: 0100B3A3 sb r19, 0x0001(r29)
- 8fc: FF55050C jal 0x1557fc
- 900: 00008426 addiu r4, r20, 0x0000
- 0017b920:
- 920: 06006410 beq r3, r4, 0x001c
- 0017bb24:
- b24: 0100A793 lbu r7, 0x0001(r29)
- b28: 0100A0A3 sb r0, 0x0001(r29)
- b2c: 00000000 nop
- b30: 00000000 nop
- b34: 00000000 nop
- b38: 00000000 nop
- b3c: 00000000 nop
- b40: 00000000 nop
- b44: 1000A427 addiu r4,r29,0x0010 Important pointer data for an upcoming function
- b48: 9356050C jal 0x00155a4c Jump to AoE Flagging Routine
- b4c: C0003032 andi r16, r17, 0x00c0 Needed for Ally/Enemy Targeting Routine
- 001557fc: Retargeting Routine
- 7fc: 2150E003 addu r10,r31,r0
- 800: EDE5050C jal 0x001797b4
- 804: FF004E30 andi r14,r2,0x00ff r3 = Height Value (Return)
- 808: 21F84001 addu r31,r10,r0
- 80c: 0F000434 ori r4,r0,0x000f r4 = 0x000f
- 810: 02006416 bne r19,r4,0x0015581c
- 814: 00000B34 ori r11,r0,0x0000
- 818: FF000B34 ori r11,r0,0x00ff
- 81c: 80006232 andi r2,r19,0x0080 If Cone AoE
- 820: 81004010 beq r2,r0,0x00155a28 Linear/Tri if no
- 824: 0F006332 andi r3,r19,0x000f
- 828: 25186B00 or r3,r3,r11
- 82c: 0E80073C lui r7,0x800e
- 830: 9C4EE790 lbu r7,0x4e9c(r7) map max x
- 834: 0E80063C lui r6,0x800e
- 838: A04EC690 lbu r6,0x4ea0(r6) load max y
- 83c: 1C00A593 lbu r5,0x001c(r29) load target x
- 840: 2000A493 lbu r4,0x0020(r29) load target y
- 844: 47000F92 lbu r15,0x0047(r16) load caster x
- 848: 19800C3C lui r12,0x8019
- 84c: CCF88C25 addiu r12,r12,-0x0734
- 850: 01000B34 ori r11,r0,0x0001
- 854: 2B10E501 sltu r2,r15,r5 If Caster X(r15) < Target X(r5)
- 858: 04004010 beq r2,r0,0x0015586c
- 85c: 00000000 nop
- 860: 0100EF25 addiu r15,r15,0x0001
- 864: 20560508 j 0x00155880
- 868: 2128A300 addu r5,r5,r3 Target X(r5) + AoE Size (r3)
- 86c: 2B10AF00 sltu r2,r5,r15 If Target X(r5) < Caster X(r15)
- 870: 32004010 beq r2,r0,0x0015593c
- 874: 00000000 nop
- 878: FFFFEF21 addi r15,r15,-0x0001
- 87c: 2328A300 subu r5,r5,r3 Target X(r5) - AoE Size(r3)
- 880: 2A10A700 slt r2,r5,r7 Is Target X(r5) > Max X (r7) (Out of bounds)
- 884: 07004014 bne r2,r0,0x001558a4 Branch if not
- 888: 00000000 nop
- 88c: 2310EB00 subu r2,r7,r11
- 890: 1C00A693 lbu r6,0x001c(r29) load target x
- 894: 00004534 ori r5,r2,0x0000 Target X (r5) = Max X (r7) - 1
- 898: 23184600 subu r3,r2,r6 Max X(r2) - Old Target X(r6) = New AoE size(r3)
- 89c: 2F560508 j 0x001558bc
- 8a0: 00000000 nop
- 8a4: 2A10A000 slt r2,r5,r0 Is Target X(r5) < r0 (Negative Out of bounds)
- 8a8: 04004010 beq r2,r0,0x001558bc Branch if not
- 8ac: 00000000 nop
- 8b0: 1C00A693 lbu r6,0x001c(r29) load target x
- 8b4: 00000534 ori r5,r0,0x0000 Target X(r5) = r0
- 8b8: 0000E335 ori r3,r15,0x0000 Old Target X(r6) = New AoE size
- 8bc: 18008700 mult r4,r7
- 8c0: 00000000 nop
- 8c4: 12100000 mflo r2
- 8c8: 21104500 addu r2,r2,r5
- 8cc: C0100200 sll r2,r2,0x03
- 8d0: 21604C00 addu r12,r2,r12
- 8d4: 06008291 lbu r2,0x0006(r12)
- 8d8: 00000000 nop
- 8dc: 02004230 andi r2,r2,0x0002 If Tile is targetable
- 8e0: DCFF4010 beq r2,r0,0x00155854 Branch Back if false
- 8e4: 00000000 nop
- 8e8: 02008A91 lbu r10,0x0002(r12) Caster Tile's Height
- 8ec: 03008D91 lbu r13,0x0003(r12) Caster Tile's Height (halves)
- 8f0: 03008291 lbu r2,0x0003(r12) Caster Tile's Height (halves)
- 8f4: 40500A00 sll r10,r10,0x01
- 8f8: 1F00AD31 andi r13,r13,0x001f Ignore Depth
- 8fc: 21504D01 addu r10,r10,r13 Height + Height(halves)
- 900: 42110200 srl r2,r2,0x05 Ignore Halves
- 904: 40100200 sll r2,r2,0x01
- 908: 21504201 addu r10,r10,r2 r3 = Height + Halves + Depth
- 90c: FF004A31 andi r10,r10,0x00ff r3 = Non Zero Height
- 910: 2310CA01 subu r2,r14,r10 r2 = Height(Float/Water Supports) - Height(normal)
- 914: CFFF4004 bltz r2,0x00155854 Branch Back if difference is negative
- 918: 00000000 nop
- 91c: 1C00A693 lbu r6,0x001c(r29) load target x
- 920: 2128AF00 addu r5,r5,r15
- 924: 4700A610 beq r5,r6,0x00155a44 Branch if New X = Old X
- 928: 00000000 nop
- 92c: 1C00A5A3 sb r5,0x001c(r29) Save new Target X
- 930: 00007334 ori r19,r3,0x0000 Add New AoE size
- 934: 91560508 j 0x00155a44
- 938: 00000000 nop
- 93c: 48000F92 lbu r15,0x0048(r16) load caster y
- 940: 00000000 nop
- 944: 2B10E401 sltu r2,r15,r4 If Caster Y(r15) < Target Y(r4)
- 948: 03004010 beq r2,r0,0x00155958
- 94c: 00000000 nop
- 950: 0100EF25 addiu r15,r15,0x0001
- 954: 5C560508 j 0x00155970
- 958: 21208300 addu r4,r4,r3 Target Y(r4) + AoE Size (r3)
- 95c: 2B108F00 sltu r2,r4,r15 If Target Y(r4) < Caster Y(r15)
- 960: 31004010 beq r2,r0,0x00155a28 Failed all checks
- 964: 00000000 nop
- 968: FFFFEF21 addi r15,r15,-0x0001
- 96c: 23208300 subu r4,r4,r3 Target Y(r4) - AoE Size(r3)
- 970: 2A108600 slt r2,r4,r6 Is Target Y(r4) < Max Y (r6) (Out of bounds)
- 974: 07004014 bne r2,r0,0x00155994 Branch if not
- 978: 00000000 nop
- 97c: 2310CB00 subu r2,r6,r11
- 980: 2000A693 lbu r6,0x0020(r29) load target y
- 984: 00004434 ori r4,r2,0x0000 Target Y (r4) = Max Y (r6)
- 988: 23184F00 subu r3,r2,r15 Max Y - Old Target Y(r6) = New AoE size
- 98c: 6B560508 j 0x001559ac
- 990: 00000000 nop
- 994: 2A108000 slt r2,r4,r0 Is Target Y(r4) negative? (Out of bounds)
- 998: 04004010 beq r2,r0,0x001559ac Branch if not
- 99c: 00000000 nop
- 9a0: 2000A693 lbu r6,0x0020(r29) load target y
- 9a4: 00000434 ori r4,r0,0x0000 Target Y(r4) = r0
- 9a8: 0000C334 ori r3,r6,0x0000 Target Y = New AoE Size
- 9ac: 18008700 mult r4,r7
- 9b0: 00000000 nop
- 9b4: 12100000 mflo r2
- 9b8: 21104500 addu r2,r2,r5
- 9bc: C0100200 sll r2,r2,0x03
- 9c0: 21604C00 addu r12,r2,r12
- 9c4: 06008291 lbu r2,0x0006(r12)
- 9c8: 00000000 nop
- 9cc: 02004230 andi r2,r2,0x0002 If Tile is targetable
- 9d0: 9AFF4010 beq r2,r0,0x0015583c Branch Back if false
- 9d4: 02008A91 lbu r10,0x0002(r12) Caster Tile's Height
- 9d8: 03008D91 lbu r13,0x0003(r12) Caster Tile's Height (halves)
- 9dc: 03008291 lbu r2,0x0003(r12) Caster Tile's Height (halves)
- 9e0: 40500A00 sll r10,r10,0x01
- 9e4: 1F00AD31 andi r13,r13,0x001f Ignore Depth
- 9e8: 21504D01 addu r10,r10,r13 Height + Height(halves)
- 9ec: 42110200 srl r2,r2,0x05 Ignore Halves
- 9f0: 40100200 sll r2,r2,0x01
- 9f4: 21504201 addu r10,r10,r2 r3 = Height + Halves + Depth
- af8: FF004A31 andi r10,r10,0x00ff r3 = Non Zero Height
- afc: 2310CA01 subu r2,r14,r10 r2 = Height(Float/Water Supports) - Height(normal)
- a00: 94FF4018 blez r2,0x00155854 Branch if difference isn't negative
- a04: 00000000 nop
- a08: 2000A693 lbu r6,0x0020(r29) load target y
- a0c: 21208F00 addu r4,r4,r15
- a10: 0B008610 beq r4,r6,0x00155a40 Branch if New Y = Old Y
- a14: 00000000 nop
- a18: 2000A4A3 sb r4,0x0020(r29) save new Target Y
- a1c: 00007334 ori r19,r3,0x0000 Add New AoE size
- a20: 91560508 j 0x00155a44
- a24: 00000000 nop
- a28: 25186B00 or r3,r3,r11
- a2c: 60006232 andi r2,r19,0x0060 Check for Linear/Tri Attack
- a30: 03004014 bne r2,r0,0x00155a40
- a34: 00000000 nop
- a38: 91560508 j 0x00155a44
- a3c: 1400FF27 addiu r31,r31,0x0014
- a40: 00007334 ori r19,r3,0x0000 Save flagless AoE
- a44: 0800E003 jr r31
- a48: 06000434 ori r4,r0,0x0006
- 00155a4c: AoE Flagging Routine
- a58: C0FFBD27 addiu r29,r29,-0x0040 Pointer Memory - 40
- a5c: 1000A527 addiu r5,r29,0x0010
- a60: 3C00BFAF sw r31,0x003c(r29)
- a64: 3800B4AF sw r20,0x0038(r29)
- a68: 3400B3AF sw r19,0x0034(r29)
- a6c: 3000B2AF sw r18,0x0030(r29)
- a70: 2C00B1AF sw r17,0x002c(r29)
- a74: 8B78010C jal 0x0005e22c Transfer Attacker/Self ID Routine
- a78: 2800B0AF sw r16,0x0028(r29)
- a7c: 1000A393 lbu r3,0x0010(r29) Load Attacker/Self ID
- a80: 1C00B287 lh r18,0x001c(r29) Load Target X
- a84: 2000B487 lh r20,0x0020(r29) Load Target Y
- a88: 01000234 ori r2,r0,0x0001 r2 = 1
- a8c: 1980013C lui r1,0x8019
- a90: F8F422AC sw r2,-0x0b08(r1) Save to 0x18f4f8. No idea what this accomplishes.
- a94: C0100300 sll r2,r3,0x03
- a98: 23104300 subu r2,r2,r3
- a9c: 80110200 sll r2,r2,0x06
- aa0: 1980033C lui r3,0x8019
- aa4: CC086324 addiu r3,r3,0x08cc
- aa8: 21104300 addu r2,r2,r3
- aac: 47005190 lbu r17,0x0047(r2) Load Unit's X
- ab0: 48005090 lbu r16,0x0048(r2) Load Unit's Y
- ab4: 8000E230 andi r2,r7,0x0080 If Cone AoE
- ab8: 05004010 beq r2,r0,0x00155ac4
- abc: 00000000 nop
- ac0: C556050C jal 0x00155b14 Cone AoE Routine
- ac4: 00000000 nop
- ac8: BD560508 j 0x00155af4
- acc: 00000000 nop
- ad0: 4000E230 andi r2,r7,0x0040 If Linear AoE
- ad4: 05004010 beq r2,r0,0x00155ae0
- ad8: 00000000 nop
- adc: B1EF050C jal 0x0017bec4 Linear/Tri Routine
- ae0: 01001334 ori r19,r0,0x0001
- ae4: BD560508 j 0x00155af4
- ae8: 00000000 nop
- aec: 2000E230 andi r2,r7,0x0020 If Tri Attack AoE
- af0: 03004010 beq r2,r0,0x00155af4
- af4: 00000000 nop
- af8: B1EF050C jal 0x0017bec4 Linear/Tri Routine
- afc: 03001334 ori r19,r0,0x0003
- b00: 3C00BF8F lw r31,0x003c(r29)
- b04: 3800B48F lw r20,0x0038(r29)
- b08: 3400B38F lw r19,0x0034(r29)
- b0c: 3000B28F lw r18,0x0030(r29)
- b10: 2C00B18F lw r17,0x002c(r29)
- b14: 2800B08F lw r16,0x0028(r29)
- b18: 4000BD27 addiu r29,r29,0x0040 Pointer + 40
- b1c: 0800E003 jr r31
- b20: 00000000 nop
- 00155b14:
- b24: 2B103202 sltu r2,r17,r18
- b28: 02004010 beq r2,r0,0x00155b24
- b2c: 00000000 nop
- b30: CE560508 j 0x00155b38
- b34: 00000634 ori r6,r0,0x0000
- b38: 2B105102 sltu r2,r18,r17
- b3c: 04004010 beq r2,r0,0x00155b40
- b40: 00000000 nop
- b44: 02000634 ori r6,r0,0x0002
- b48: DD560508 j 0x00155b74
- b4c: 00004536 ori r5,r18,0x0000 r5 = Axis
- b50: 2B101402 sltu r2,r16,r20
- b54: 02004010 beq r2,r0,0x00155b50
- b58: 00000000 nop
- b5c: D9560508 j 0x00155b64
- b60: 06000634 ori r6,r0,0x0006
- b64: 2B109002 sltu r2,r20,r16
- b68: 04004010 beq r2,r0,0x00155b6c
- b6c: 00000000 nop
- b70: 04000634 ori r6,r0,0x0004
- b74: DD560508 j 0x00155b74
- b78: 00008536 ori r5,r20,0x0000 r5 = Axis
- b7c: 26570508 j 0x00155c98
- b80: 00000000 nop
- b84: 1980043C lui r4,0x8019
- b88: D82D8424 addiu r4,r4,0x2dd8
- b8c: 0E80023C lui r2,0x800e
- b90: A04E4290 lbu r2,0x4ea0(r2) Load Map Max Y
- b94: 00000000 nop
- b9c: 35004004 bltz r2,0x00155c60 Branch if Y <= 0
- ba0: 21880000 addu r17,r0,r0Y Counter = 0
- ba4: 0E80033C lui r3,0x800e
- ba8: 9C4E6390 lbu r3,0x4e9c(r3) Load Map Max X
- bac: 00000000 nop
- bb0: 2A006010 beq r3,r0,0x00155c48 Branch if X = 0
- bb4: 21800000 addu r16,r0,r0X Counter = 0
- bb8: 18002302 mult r17,r3 YC * Map X
- bbc: 12100000 mflo r2
- bc0: 21105000 addu r2,r2,r16 YC * Map X + XC
- bc4: 80180200 sll r3,r2,0x02 (YC * Map X + X) * 4
- bc8: 21186200 addu r3,r3,r2 Tile ID = (YC * Map X + X) * 5
- bcc: 21186400 addu r3,r3,r4
- bd0: 00006290 lbu r2,0x0000(r3)
- bd4: 00000000 nop
- bd8: 1A004010 beq r2,r0,0x00155c30 Next Tile if not in AoE
- bdc: 00000734 ori r7,r0,0x0000
- be0: 0500C014 bne r6,r0,0x00155be4 If Direction 0
- be4: 00000000 nop
- be8: 2B10B000 sltu r2,r5,r16If Caster X(r5) is less than X Counter(r16)
- bec: 15004014 bne r2,r0,0x00155c30
- bf0: 00000000 nop
- bf4: 0A570508 j 0x00155c28
- bf8: 02000834 ori r8,r0,0x0002 If Direction 2
- bfc: 0400C814 bne r6,r8,0x00155bfc
- c00: 2B100502 sltu r2,r16,r5 If X Counter is less than Caster X
- c04: 0F004014 bne r2,r0,0x00155c30
- c08: 00000000 nop
- c0c: 0A570508 j 0x00155c28
- c10: 06000834 ori r8,r0,0x0006 If Direction 6
- c14: 0400C814 bne r6,r8,0x00155c14
- c18: 2B10B100 sltu r2,r5,r17If Caster Y is less than Y Counter
- c1c: 09004014 bne r2,r0,0x00155c30
- c20: 00000000 nop
- c24: 0A570508 j 0x00155c28
- c28: 04000834 ori r8,r0,0x0004 If Direction 4
- c2c: 0500C814 bne r6,r8,0x00155c30
- c30: 2B102502 sltu r2,r17,r5 If Y Counter is less than Caster Y
- c34: 03004014 bne r2,r0,0x00155c30
- c38: 00000000 nop
- c3c: 01000724 addiu r7,r0,0x0001
- c40: 010067A0 sb r7,0x0001(r3)
- c44: 0E80033C lui r3,0x800e
- c48: 9C4E6390 lbu r3,0x4e9c(r3) Load Map Max X
- c4c: 01001026 addiu r16,r16,0x0001 X Counter ++
- c50: 2A100302 slt r2,r16,r3
- c54: D9FF4014 bne r2,r0,0x00155ba8 Branch if X Counter < Max X
- c58: 18002302 mult r17,r3 Y Counter * Max X
- c5c: 0E80023C lui r2,0x800e
- c60: A04E4290 lbu r2,0x4ea0(r2) Load Map Max Y
- c64: 01003126 addiu r17,r17,0x0001 Y Counter ++
- c68: 2A102202 slt r2,r17,r2
- c6c: CDFF4014 bne r2,r0,0x00155b90 Branch if Y Counter < Max Y
- c70: 00000000 nop
- c74: 21200000 addu r4,r0,r0 Counter = 0
- c78: 1980033C lui r3,0x8019
- c7c: D82D6324 addiu r3,r3,0x2dd8
- c80: 01006290 lbu r2,0x0001(r3) Load Tile Targeted? Flag
- c84: 00000000 nop
- c88: 03004014 bne r2,r0,0x00155c84 Branch if Tile is Targeted?
- c8c: 00000000 nop
- c90: 22570508 j 0x00155c88
- c94: 000060A0 sb r0,0x0000(r3) AoE = 0
- c98: 010060A0 sb r0,0x0001(r3) Tile Targeted? = False
- c9c: 01008424 addiu r4,r4,0x0001 Counter ++
- ca0: 00028228 slti r2,r4,0x0200
- ca4: F6FF4014 bne r2,r0,0x00155c6c Branch if Counter < 0x200
- ca8: 05006324 addiu r3,r3,0x0005 Pointer += 5
- cac: 0800E003 jr r31
- cb0: 00000000 nop
- 0017bec4:
- ec4: 0000EF37 ori r15, r31, 0x0000 Store old value so we can go back
- 0017c020:
- 020: 00000000 nop
- 024: 00000000 nop
- 028: 00000000 nop
- 02c: 00000000 nop
- 030: 00000000 nop
- 034: 00000000 nop
- 038: 21F8E001 addu r31, r15, r0
- Total Lines: 0xef or 239
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement