Difference between revisions of "Another targeting routine"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
(Created page with "<font face='Courier New'> 0017a6dc: 27bdffc8 addiu r29,r29,0xffc8 0017a6e0: afb10014 sw r17,0x0014(r29) 0017a6e4: 00808821 addu r17,r4,r0 0017a6e8: afb7002c sw r23,0x002...")
 
Line 1: Line 1:
 
<font face='Courier New'>
 
<font face='Courier New'>
 +
another targeting routine 17a7bc: : some map calculation
 
   
 
   
  0017a6dc: 27bdffc8 addiu r29,r29,0xffc8
+
   
  0017a6e0: afb10014 sw r17,0x0014(r29)
+
0017a7bc: 308400ff andi r4,r4,0x00ff Mask second byte
  0017a6e4: 00808821 addu r17,r4,r0
+
  0017a7c0: 30a500ff andi r5,r5,0x00ff Mask second byte
  0017a6e8: afb7002c sw r23,0x002c(r29)
+
  0017a7c4: 00a05021 addu r10,r5,r0
  0017a6ec: 30b70080 andi r23,r5,0x0080
+
  0017a7c8: 2406ffe1 addiu r6,r0,0xffe1
  0017a6f0: afb60028 sw r22,0x0028(r29)
+
  0017a7cc: 3c0c8019 lui r12,0x8019
  0017a6f4: 30b60040 andi r22,r5,0x0040
+
  0017a7d0: 258c2dd8 addiu r12,r12,0x2dd8
  0017a6f8: afb3001c sw r19,0x001c(r29)
+
  0017a7d4: 258d0500 addiu r13,r12,0x0500 Exception
  0017a6fc: 00009821 addu r19,r0,r0
+
  0017a7d8: 340b0001 ori r11,r0,0x0001 r11 = (0x1) 1
  0017a700: afb40020 sw r20,0x0020(r29)
+
  0017a7dc: 3c08800e lui r8,0x800e
  0017a704: 34140001 ori r20,r0,0x0001
+
  0017a7e0: 91084e9c lbu r8,0x4e9c(r8) Load Map Max X coordinate
  0017a708: afbf0030 sw r31,0x0030(r29)
+
  0017a7e4: 00000000 nop
  0017a70c: afb50024 sw r21,0x0024(r29)
+
0017a7e8: 01480018 mult r10,r8 0x0 * Map Max X coordinate
  0017a710: afb20018 sw r18,0x0018(r29)
+
0017a7ec: 00864821 addu r9,r4,r6
  0017a714: afb00010 sw r16,0x0010(r29)
+
  0017a7f0: 00001012 mflo r2 0x0
  0017a718: 92350005 lbu r21,0x0005(r17) load ENTD flags
+
  0017a7f4: 00491821 addu r3,r2,r9
  0017a71c: 92230001 lbu r3,0x0001(r17) load Unit ID
+
  0017a7f8: 00031080 sll r2,r3,0x02 Shift left 2 bits (*0x4) (*4)
  0017a720: 340200ff ori r2,r0,0x00ff
+
  0017a7fc: 00433821 addu r7,r2,r3
  0017a724: 10620015 beq r3,r2,0x0017a77c doesn't exist check
+
  0017a800: 0520000a bltz r9,0x0017a82c
  0017a728: 02202021 addu r4,r17,r0
+
  0017a804: 00ec1821 addu r3,r7,r12
  0017a72c: 922201ba lbu r2,0x01ba(r17) load modified ENTD flags
+
  0017a808: 0128102a slt r2,r9,r8 Set if -0x1F + Unit Data  < Map Max X coordinate
  0017a730: 00000000 nop
+
  0017a80c: 10400007 beq r2,r0,0x0017a82c Branch if not
  0017a734: 02a28026 xor r16,r21,r2
+
  0017a810: 00000000 nop
  0017a738: 0c060428 jal 0x001810a0 map calculation
+
  0017a814: 90620000 lbu r2,0x0000(r3) Load ???
  0017a73c: 02009021 addu r18,r16,r0
+
  0017a818: 00000000 nop
  0017a740: 00021880 sll r3,r2,0x02
+
  0017a81c: 10400003 beq r2,r0,0x0017a82c Branch if  == 0x0
  0017a744: 00621821 addu r3,r3,r2
+
0017a820: 00ed1021 addu r2,r7,r13
  0017a748: 3c028019 lui r2,0x8019
+
0017a824: a06b0001 sb r11,0x0001(r3) Store 1 (1) into 0x1
  0017a74c: 24422dd8 addiu r2,r2,0x2dd8
+
  0017a828: a04b0001 sb r11,0x0001(r2) Store 1 (1) into 0x2
  0017a750: 12e00005 beq r23,r0,0x0017a768
+
  0017a82c: 24c60001 addiu r6,r6,0x0001
  0017a754: 00621821 addu r3,r3,r2
+
  0017a830: 28c20020 slti r2,r6,0x0020 Set if -0x1E < 32
  0017a758: 32020030 andi r2,r16,0x0030 check if current or modified ENTD = 0x30
+
0017a834: 1440ffe9 bne r2,r0,0x0017a7dc Branch if so
  0017a75c: 14400002 bne r2,r0,0x0017a768 branch if so
+
  0017a838: 00804821 addu r9,r4,r0
  0017a760: 00000000 nop
+
0017a83c: 2406ffe1 addiu r6,r0,0xffe1
  0017a764: a0740001 sb r20,0x0001(r3)
+
  0017a840: 3c088019 lui r8,0x8019
  0017a768: 12c00004 beq r22,r0,0x0017a77c check if randomly/always present?
+
  0017a844: 25082dd8 addiu r8,r8,0x2dd8
  0017a76c: 32420030 andi r2,r18,0x0030 check if current or modified ENTD = 0x30
+
  0017a848: 250b0500 addiu r11,r8,0x0500 Exception
  0017a770: 10400002 beq r2,r0,0x0017a77c branch if not
+
0017a84c: 34070001 ori r7,r0,0x0001 r7 = (0x1) 1
  0017a774: 00000000 nop
+
0017a850: 3c02800e lui r2,0x800e
  0017a778: a0740001 sb r20,0x0001(r3) store ?? = 01 (designates player control?)
+
0017a854: 90424e9c lbu r2,0x4e9c(r2) Load Map Max X coordinate
  0017a77c: 26730001 addiu r19,r19,0x0001
+
  0017a858: 00a65021 addu r10,r5,r6
  0017a780: 2a620015 slti r2,r19,0x0015
+
0017a85c: 01420018 mult r10,r2 -0x1001F + 0x0 * Map Max X coordinate
  0017a784: 1440ffe5 bne r2,r0,0x0017a71c check all player units
+
0017a860: 00001012 mflo r2 0x0
  0017a788: 00000000 nop
+
0017a864: 00491821 addu r3,r2,r9
0017a78c: 8fbf0030 lw r31,0x0030(r29)
+
  0017a868: 00031080 sll r2,r3,0x02 Shift left 2 bits (*0x4) (*4)
0017a790: 8fb7002c lw r23,0x002c(r29)
+
  0017a86c: 00432021 addu r4,r2,r3
  0017a794: 8fb60028 lw r22,0x0028(r29)
+
0017a870: 0540000d bltz r10,0x0017a8a8
0017a798: 8fb50024 lw r21,0x0024(r29)
+
0017a874: 00881821 addu r3,r4,r8
  0017a79c: 8fb40020 lw r20,0x0020(r29)
+
  0017a878: 3c02800e lui r2,0x800e
  0017a7a0: 8fb3001c lw r19,0x001c(r29)
+
  0017a87c: 90424ea0 lbu r2,0x4ea0(r2) Load Map Max Y coordinate
0017a7a4: 8fb20018 lw r18,0x0018(r29)
+
  0017a880: 00000000 nop
  0017a7a8: 8fb10014 lw r17,0x0014(r29)
+
  0017a884: 0142102a slt r2,r10,r2 Set if -0x1001F + 0x0 < Map Max Y coordinate
0017a7ac: 8fb00010 lw r16,0x0010(r29)
+
  0017a888: 10400007 beq r2,r0,0x0017a8a8 Branch if not
  0017a7b0: 27bd0038 addiu r29,r29,0x0038
+
  0017a88c: 00000000 nop
  0017a7b4: 03e00008 jr r31
+
  0017a890: 90620000 lbu r2,0x0000(r3) Load ???
  0017a7b8: 00000000 nop
+
  0017a894: 00000000 nop
</font>
+
  0017a898: 10400003 beq r2,r0,0x0017a8a8 Branch if  == 0x0
 +
  0017a89c: 008b1021 addu r2,r4,r11
 +
  0017a8a0: a0670001 sb r7,0x0001(r3) Store 1 (1) into 0x1
 +
  0017a8a4: a0470001 sb r7,0x0001(r2) Store 1 (1) into 0x2
 +
  0017a8a8: 24c60001 addiu r6,r6,0x0001
 +
  0017a8ac: 28c20020 slti r2,r6,0x0020 Set if -0x1001E < 32
 +
  0017a8b0: 1440ffe7 bne r2,r0,0x0017a850 Branch if so
 +
  0017a8b4: 00000000 nop
 +
  0017a8b8: 03e00008 jr r31 Jump to Address
 +
  0017a8bc: 00000000 nop
 +
 +
 +
</font>

Revision as of 22:23, 14 February 2015

another targeting routine 17a7bc: : some map calculation


0017a7bc: 308400ff andi r4,r4,0x00ff			Mask second byte
0017a7c0: 30a500ff andi r5,r5,0x00ff			Mask second byte
0017a7c4: 00a05021 addu r10,r5,r0
0017a7c8: 2406ffe1 addiu r6,r0,0xffe1
0017a7cc: 3c0c8019 lui r12,0x8019			
0017a7d0: 258c2dd8 addiu r12,r12,0x2dd8
0017a7d4: 258d0500 addiu r13,r12,0x0500			Exception
0017a7d8: 340b0001 ori r11,r0,0x0001			r11 = (0x1) 1
0017a7dc: 3c08800e lui r8,0x800e			
0017a7e0: 91084e9c lbu r8,0x4e9c(r8)			Load Map Max X coordinate
0017a7e4: 00000000 nop
0017a7e8: 01480018 mult r10,r8				0x0 * Map Max X coordinate
0017a7ec: 00864821 addu r9,r4,r6
0017a7f0: 00001012 mflo r2				0x0
0017a7f4: 00491821 addu r3,r2,r9
0017a7f8: 00031080 sll r2,r3,0x02			Shift left 2 bits (*0x4) (*4)
0017a7fc: 00433821 addu r7,r2,r3
0017a800: 0520000a bltz r9,0x0017a82c
0017a804: 00ec1821 addu r3,r7,r12
0017a808: 0128102a slt r2,r9,r8			Set if -0x1F + Unit Data  < Map Max X coordinate
0017a80c: 10400007 beq r2,r0,0x0017a82c			Branch if not
0017a810: 00000000 nop
0017a814: 90620000 lbu r2,0x0000(r3)			Load ???
0017a818: 00000000 nop
0017a81c: 10400003 beq r2,r0,0x0017a82c			Branch if  == 0x0
0017a820: 00ed1021 addu r2,r7,r13
0017a824: a06b0001 sb r11,0x0001(r3)			Store 1 (1) into 0x1
0017a828: a04b0001 sb r11,0x0001(r2)			Store 1 (1) into 0x2
0017a82c: 24c60001 addiu r6,r6,0x0001
0017a830: 28c20020 slti r2,r6,0x0020			Set if -0x1E < 32
0017a834: 1440ffe9 bne r2,r0,0x0017a7dc			Branch if so
0017a838: 00804821 addu r9,r4,r0
0017a83c: 2406ffe1 addiu r6,r0,0xffe1
0017a840: 3c088019 lui r8,0x8019			
0017a844: 25082dd8 addiu r8,r8,0x2dd8
0017a848: 250b0500 addiu r11,r8,0x0500			Exception
0017a84c: 34070001 ori r7,r0,0x0001			r7 = (0x1) 1
0017a850: 3c02800e lui r2,0x800e			
0017a854: 90424e9c lbu r2,0x4e9c(r2)			Load Map Max X coordinate
0017a858: 00a65021 addu r10,r5,r6
0017a85c: 01420018 mult r10,r2				-0x1001F + 0x0 * Map Max X coordinate
0017a860: 00001012 mflo r2				0x0
0017a864: 00491821 addu r3,r2,r9
0017a868: 00031080 sll r2,r3,0x02			Shift left 2 bits (*0x4) (*4)
0017a86c: 00432021 addu r4,r2,r3
0017a870: 0540000d bltz r10,0x0017a8a8
0017a874: 00881821 addu r3,r4,r8
0017a878: 3c02800e lui r2,0x800e			
0017a87c: 90424ea0 lbu r2,0x4ea0(r2)			Load Map Max Y coordinate
0017a880: 00000000 nop
0017a884: 0142102a slt r2,r10,r2			Set if -0x1001F + 0x0 < Map Max Y coordinate
0017a888: 10400007 beq r2,r0,0x0017a8a8			Branch if not
0017a88c: 00000000 nop
0017a890: 90620000 lbu r2,0x0000(r3)			Load ???
0017a894: 00000000 nop
0017a898: 10400003 beq r2,r0,0x0017a8a8			Branch if  == 0x0
0017a89c: 008b1021 addu r2,r4,r11
0017a8a0: a0670001 sb r7,0x0001(r3)			Store 1 (1) into 0x1
0017a8a4: a0470001 sb r7,0x0001(r2)			Store 1 (1) into 0x2
0017a8a8: 24c60001 addiu r6,r6,0x0001
0017a8ac: 28c20020 slti r2,r6,0x0020			Set if -0x1001E < 32
0017a8b0: 1440ffe7 bne r2,r0,0x0017a850			Branch if so
0017a8b4: 00000000 nop
0017a8b8: 03e00008 jr r31			Jump to Address
0017a8bc: 00000000 nop