Difference between revisions of "Check AI Target Type (00196adc)"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
m (Dokurider moved page 00196adc - 00196c88 to Check AI Target Type (00196adc): Renaming and adding new documentation)
(Uploaded the correct routine)
Line 1: Line 1:
<font face='Courier New'>
+
Check Target Type
+
 
  0019693c: 27bdffe8 addiu r29,r29,0xffe8
+
  00196adc: 27bdffd0 addiu r29,r29,0xffd0
  00196940: afb10014 sw r17,0x0014(r29)
+
  00196ae0: afb10024 sw r17,0x0024(r29)
  00196944: 00a08821 addu r17,r5,r0
+
  00196ae4: 00808821 addu r17,r4,r0 r17 = Main Target ID
  00196948: 3c0b7fff lui r11,0x7fff
+
  00196ae8: afb00020 sw r16,0x0020(r29)
  0019694c: 356bffff ori r11,r11,0xffff
+
  00196aec: 00008021 addu r16,r0,r0
  00196950: 3c0e7fff lui r14,0x7fff
+
  00196af0: 3c05801a lui r5,0x801a
  00196954: 35ceffff ori r14,r14,0xffff
+
  00196af4: 24a5f3c4 addiu r5,r5,0xf3c4
  00196958: 00006821 addu r13,r0,r0
+
  00196af8: 00003021 addu r6,r0,r0
  0019695c: 00002821 addu r5,r0,r0
+
  00196afc: afbf0028 sw r31,0x0028(r29)
  00196960: 0000c821 addu r25,r0,r0
+
00196b00: 90a30e2d lbu r3,0x0e2d(r5)
  00196964: 3c02801a lui r2,0x801a
+
00196b04: 00062040 sll r4,r6,0x01
  00196968: 904201f1 lbu r2,0x01f1(r2) ??
+
00196b08: 000310c0 sll r2,r3,0x03
  0019696c: 3c0c801a lui r12,0x801a
+
  00196b0c: 00431021 addu r2,r2,r3
  00196970: 258cf3c4 addiu r12,r12,0xf3c4 r12 = AI data
+
00196b10: 000210c0 sll r2,r2,0x03
  00196974: afb00010 sw r16,0x0010(r29)
+
  00196b14: 00a21021 addu r2,r5,r2
  00196978: 00021080 sll r2,r2,0x02
+
  00196b18: 00821021 addu r2,r4,r2
  0019697c: 24420cc4 addiu r2,r2,0x0cc4
+
00196b1c: a4400a74 sh r0,0x0a74(r2)
  00196980: 004c5021 addu r10,r2,r12
+
  00196b20: 90a30e2d lbu r3,0x0e2d(r5)
  00196984: 91820e3b lbu r2,0x0e3b(r12) load map max Y
+
  00196b24: 24c60001 addiu r6,r6,0x0001
  00196988: 00000000 nop
+
  00196b28: 000310c0 sll r2,r3,0x03
  0019698c: 18400045 blez r2,0x00196aa4
+
  00196b2c: 00431021 addu r2,r2,r3
  00196990: 00004821 addu r9,r0,r0
+
  00196b30: 000210c0 sll r2,r2,0x03
  00196994: 03208021 addu r16,r25,r0
+
  00196b34: 00a21021 addu r2,r5,r2
  00196998: 00a0c021 addu r24,r5,r0
+
00196b38: 00822021 addu r4,r4,r2
  0019699c: 91820e2d lbu r2,0x0e2d(r12) load unit ID
+
  00196b3c: 28c20012 slti r2,r6,0x0012
  001969a0: 00000000 nop
+
  00196b40: 1440ffef bne r2,r0,0x00196b00
  001969a4: 000218c0 sll r3,r2,0x03 ??*8
+
  00196b44: a4800a98 sh r0,0x0a98(r4)
  001969a8: 00621821 addu r3,r3,r2 ??*9
+
  00196b48: 0000c821 addu r25,r0,r0
  001969ac: 000318c0 sll r3,r3,0x03 ??*72 (0x48)
+
  00196b4c: 00a0c021 addu r24,r5,r0
  001969b0: 006c1821 addu r3,r3,r12
+
  00196b50: 00a07821 addu r15,r5,r0
  001969b4: 24630a74 addiu r3,r3,0x0a74
+
  00196b54: 00007021 addu r14,r0,r0
  001969b8: 02031821 addu r3,r16,r3 address + counter (0x24 at a time)
+
 
  001969bc: 00091040 sll r2,r9,0x01 other counter*2
+
<Loop Start>
001969c0: 00431021 addu r2,r2,r3
+
00196b58: 90a20e3b lbu r2,0x0e3b(r5)
001969c4: 94430000 lhu r3,0x0000(r2) load ??
+
  00196b5c: 00000000 nop
  001969c8: 00000000 nop
+
  00196b60: 18400032 blez r2,0x00196c2c
  001969cc: 10600030 beq r3,r0,0x00196a90
+
  00196b64: 00004021 addu r8,r0,r0
  001969d0: 00000000 nop
+
  00196b68: 01c06821 addu r13,r14,r0
  001969d4: 91820e3a lbu r2,0x0e3a(r12) load map max X
+
  00196b6c: 00004821 addu r9,r0,r0
  001969d8: 00000000 nop
+
  00196b70: 270b03b4 addiu r11,r24,0x03b4
  001969dc: 1840002c blez r2,0x00196a90 branch if invalid?
+
  00196b74: 25ea0a74 addiu r10,r15,0x0a74
  001969e0: 00004021 addu r8,r0,r0
+
  00196b78: 95430000 lhu r3,0x0000(r10)
  001969e4: 00607821 addu r15,r3,r0
+
  00196b7c: 00000000 nop
  001969e8: 010f1004 sllv r2,r15,r8
+
  00196b80: 10600023 beq r3,r0,0x00196c10
  001969ec: 30428000 andi r2,r2,0x8000
+
  00196b84: 00000000 nop
  001969f0: 10400022 beq r2,r0,0x00196a7c
+
  00196b88: 90a20e3a lbu r2,0x0e3a(r5)
  001969f4: 00091100 sll r2,r9,0x04
+
  00196b8c: 00000000 nop
  001969f8: 00481021 addu r2,r2,r8
+
  00196b90: 1840001f blez r2,0x00196c10
  001969fc: 03021821 addu r3,r24,r2
+
  00196b94: 00003021 addu r6,r0,r0
  00196a00: 006c3021 addu r6,r3,r12
+
  00196b98: 00606021 addu r12,r3,r0
  00196a04: 90c703b4 lbu r7,0x03b4(r6)
+
  00196b9c: 01603821 addu r7,r11,r0
  00196a08: 00000000 nop
+
00196ba0: 00cc1004 sllv r2,r12,r6
  00196a0c: 0087102a slt r2,r4,r7
+
  00196ba4: 30428000 andi r2,r2,0x8000
  00196a10: 1440001a bne r2,r0,0x00196a7c
+
  00196ba8: 10400014 beq r2,r0,0x00196bfc
  00196a14: 00031040 sll r2,r3,0x01
+
  00196bac: 00000000 nop
  00196a18: 004c1021 addu r2,r2,r12
+
 
  00196a1c: 944305f4 lhu r3,0x05f4(r2)
+
<Find and Set Main Target>
  00196a20: 90c20174 lbu r2,0x0174(r6)
+
  00196bb0: 90e20000 lbu r2,0x0000(r7) Get Unit ID
  00196a24: 00031c00 sll r3,r3,0x10
+
  00196bb4: 00000000 nop
  00196a28: 12200007 beq r17,r0,0x00196a48 branch if PV = 0
+
  00196bb8: 0222102a slt r2,r17,r2
  00196a2c: 00621821 addu r3,r3,r2
+
  00196bbc: 1440000f bne r2,r0,0x00196bfc Continue until Unit ID = Main Target ID
  00196a30: 14870003 bne r4,r7,0x00196a40
+
  00196bc0: 00000000 nop
  00196a34: 0163102a slt r2,r11,r3
+
  00196bc4: 90a30e2d lbu r3,0x0e2d(r5)
  00196a38: 14400010 bne r2,r0,0x00196a7c
+
  00196bc8: 34100001 ori r16,r0,0x0001 Main Target Found = True
00196a3c: 00000000 nop
+
  00196bcc: 000310c0 sll r2,r3,0x03
00196a40: 08065a99 j 0x00196a64
+
  00196bd0: 00431021 addu r2,r2,r3
  00196a44: 00e02021 addu r4,r7,r0
+
  00196bd4: 000210c0 sll r2,r2,0x03
  00196a48: 0163102a slt r2,r11,r3
+
  00196bd8: 00451021 addu r2,r2,r5
  00196a4c: 1440000b bne r2,r0,0x00196a7c
+
  00196bdc: 24420a74 addiu r2,r2,0x0a74
  00196a50: 00000000 nop
+
  00196be0: 01a21021 addu r2,r13,r2
00196a54: 146b0003 bne r3,r11,0x00196a64
+
  00196be4: 01221021 addu r2,r9,r2
  00196a58: 01c7102a slt r2,r14,r7
+
  00196be8: 34038000 ori r3,r0,0x8000
  00196a5c: 14400007 bne r2,r0,0x00196a7c
+
  00196bec: 94440000 lhu r4,0x0000(r2)
  00196a60: 00000000 nop
+
  00196bf0: 00c31807 srav r3,r3,r6
00196a64: 00605821 addu r11,r3,r0
+
  00196bf4: 00832025 or r4,r4,r3
00196a68: 00e07021 addu r14,r7,r0
+
  00196bf8: a4440000 sh r4,0x0000(r2) Set Main Target
  00196a6c: a1480000 sb r8,0x0000(r10)
+
 
00196a70: a1490002 sb r9,0x0002(r10)
+
  00196bfc: 90a20e3a lbu r2,0x0e3a(r5) map max x
  00196a74: a14d0001 sb r13,0x0001(r10)
+
  00196c00: 24c60001 addiu r6,r6,0x0001
00196a78: a1400003 sb r0,0x0003(r10)
+
  00196c04: 00c2102a slt r2,r6,r2
  00196a7c: 91820e3a lbu r2,0x0e3a(r12) load map max X
+
  00196c08: 1440ffe5 bne r2,r0,0x00196ba0
  00196a80: 25080001 addiu r8,r8,0x0001
+
  00196c0c: 24e70001 addiu r7,r7,0x0001
  00196a84: 0102102a slt r2,r8,r2
+
  00196c10: 25290002 addiu r9,r9,0x0002
  00196a88: 1440ffd8 bne r2,r0,0x001969ec
+
  00196c14: 256b0010 addiu r11,r11,0x0010
  00196a8c: 010f1004 sllv r2,r15,r8
+
  00196c18: 90a20e3b lbu r2,0x0e3b(r5) map max y
  00196a90: 91820e3b lbu r2,0x0e3b(r12) load map max Y
+
  00196c1c: 25080001 addiu r8,r8,0x0001
  00196a94: 25290001 addiu r9,r9,0x0001
+
  00196c20: 0102102a slt r2,r8,r2
  00196a98: 0122102a slt r2,r9,r2
+
  00196c24: 1440ffd4 bne r2,r0,0x00196b78
  00196a9c: 1440ffbf bne r2,r0,0x0019699c
+
00196c28: 254a0002 addiu r10,r10,0x0002
  00196aa0: 00000000 nop
+
  00196c2c: 27180120 addiu r24,r24,0x0120
  00196aa4: 24a50120 addiu r5,r5,0x0120
+
  00196c30: 25ef0024 addiu r15,r15,0x0024
  00196aa8: 25ad0001 addiu r13,r13,0x0001
+
  00196c34: 27390001 addiu r25,r25,0x0001
  00196aac: 29a20002 slti r2,r13,0x0002
+
  00196c38: 2b220002 slti r2,r25,0x0002
  00196ab0: 1440ffb4 bne r2,r0,0x00196984
+
  00196c3c: 1440ffc6 bne r2,r0,0x00196b58
  00196ab4: 27390024 addiu r25,r25,0x0024 some counter++
+
  00196c40: 25ce0024 addiu r14,r14,0x0024
  00196ab8: 3c027fff lui r2,0x7fff
+
 
  00196abc: 3442ffff ori r2,r2,0xffff
+
  00196c44: 1600000b bne r16,r0,0x00196c74 Branch if Main Target was found
  00196ac0: 01621026 xor r2,r11,r2
+
  00196c48: 34020001 ori r2,r0,0x0001
  00196ac4: 0002102b sltu r2,r0,r2
+
  00196c4c: 90a20e2d lbu r2,0x0e2d(r5)
  00196ac8: 8fb10014 lw r17,0x0014(r29)
+
00196c50: 34060048 ori r6,r0,0x0048
  00196acc: 8fb00010 lw r16,0x0010(r29)
+
  00196c54: 000220c0 sll r4,r2,0x03
  00196ad0: 27bd0018 addiu r29,r29,0x0018
+
00196c58: 00822021 addu r4,r4,r2
  00196ad4: 03e00008 jr r31
+
  00196c5c: 000420c0 sll r4,r4,0x03
  00196ad8: 00000000 nop
+
  00196c60: 24840a74 addiu r4,r4,0x0a74
</font>
+
  00196c64: 00a42021 addu r4,r5,r4
 +
  00196c68: 0c066ac2 jal 0x0019ab08
 +
00196c6c: 24a50a74 addiu r5,r5,0x0a74
 +
  00196c70: 00001021 addu r2,r0,r0
 +
00196c74: 8fbf0028 lw r31,0x0028(r29)
 +
  00196c78: 8fb10024 lw r17,0x0024(r29)
 +
  00196c7c: 8fb00020 lw r16,0x0020(r29)
 +
  00196c80: 27bd0030 addiu r29,r29,0x0030
 +
  00196c84: 03e00008 jr r31
 +
  00196c88: 00000000 nop

Revision as of 00:59, 9 March 2017

Check Target Type
00196adc: 27bdffd0 addiu r29,r29,0xffd0
00196ae0: afb10024 sw r17,0x0024(r29)
00196ae4: 00808821 addu r17,r4,r0			r17 = Main Target ID
00196ae8: afb00020 sw r16,0x0020(r29)
00196aec: 00008021 addu r16,r0,r0
00196af0: 3c05801a lui r5,0x801a
00196af4: 24a5f3c4 addiu r5,r5,0xf3c4
00196af8: 00003021 addu r6,r0,r0
00196afc: afbf0028 sw r31,0x0028(r29)
00196b00: 90a30e2d lbu r3,0x0e2d(r5)
00196b04: 00062040 sll r4,r6,0x01
00196b08: 000310c0 sll r2,r3,0x03
00196b0c: 00431021 addu r2,r2,r3
00196b10: 000210c0 sll r2,r2,0x03
00196b14: 00a21021 addu r2,r5,r2
00196b18: 00821021 addu r2,r4,r2
00196b1c: a4400a74 sh r0,0x0a74(r2)
00196b20: 90a30e2d lbu r3,0x0e2d(r5)
00196b24: 24c60001 addiu r6,r6,0x0001
00196b28: 000310c0 sll r2,r3,0x03
00196b2c: 00431021 addu r2,r2,r3
00196b30: 000210c0 sll r2,r2,0x03
00196b34: 00a21021 addu r2,r5,r2
00196b38: 00822021 addu r4,r4,r2
00196b3c: 28c20012 slti r2,r6,0x0012
00196b40: 1440ffef bne r2,r0,0x00196b00
00196b44: a4800a98 sh r0,0x0a98(r4)
00196b48: 0000c821 addu r25,r0,r0
00196b4c: 00a0c021 addu r24,r5,r0
00196b50: 00a07821 addu r15,r5,r0
00196b54: 00007021 addu r14,r0,r0
<Loop Start>
00196b58: 90a20e3b lbu r2,0x0e3b(r5)
00196b5c: 00000000 nop
00196b60: 18400032 blez r2,0x00196c2c
00196b64: 00004021 addu r8,r0,r0
00196b68: 01c06821 addu r13,r14,r0
00196b6c: 00004821 addu r9,r0,r0
00196b70: 270b03b4 addiu r11,r24,0x03b4
00196b74: 25ea0a74 addiu r10,r15,0x0a74
00196b78: 95430000 lhu r3,0x0000(r10)
00196b7c: 00000000 nop
00196b80: 10600023 beq r3,r0,0x00196c10
00196b84: 00000000 nop
00196b88: 90a20e3a lbu r2,0x0e3a(r5)
00196b8c: 00000000 nop
00196b90: 1840001f blez r2,0x00196c10
00196b94: 00003021 addu r6,r0,r0
00196b98: 00606021 addu r12,r3,r0
00196b9c: 01603821 addu r7,r11,r0
00196ba0: 00cc1004 sllv r2,r12,r6
00196ba4: 30428000 andi r2,r2,0x8000
00196ba8: 10400014 beq r2,r0,0x00196bfc
00196bac: 00000000 nop
<Find and Set Main Target>
00196bb0: 90e20000 lbu r2,0x0000(r7)			Get Unit ID
00196bb4: 00000000 nop
00196bb8: 0222102a slt r2,r17,r2
00196bbc: 1440000f bne r2,r0,0x00196bfc			Continue until Unit ID = Main Target ID
00196bc0: 00000000 nop
00196bc4: 90a30e2d lbu r3,0x0e2d(r5)
00196bc8: 34100001 ori r16,r0,0x0001			Main Target Found = True
00196bcc: 000310c0 sll r2,r3,0x03
00196bd0: 00431021 addu r2,r2,r3
00196bd4: 000210c0 sll r2,r2,0x03
00196bd8: 00451021 addu r2,r2,r5
00196bdc: 24420a74 addiu r2,r2,0x0a74
00196be0: 01a21021 addu r2,r13,r2
00196be4: 01221021 addu r2,r9,r2
00196be8: 34038000 ori r3,r0,0x8000
00196bec: 94440000 lhu r4,0x0000(r2)
00196bf0: 00c31807 srav r3,r3,r6
00196bf4: 00832025 or r4,r4,r3
00196bf8: a4440000 sh r4,0x0000(r2)				Set Main Target
00196bfc: 90a20e3a lbu r2,0x0e3a(r5)			map max x
00196c00: 24c60001 addiu r6,r6,0x0001
00196c04: 00c2102a slt r2,r6,r2
00196c08: 1440ffe5 bne r2,r0,0x00196ba0
00196c0c: 24e70001 addiu r7,r7,0x0001
00196c10: 25290002 addiu r9,r9,0x0002
00196c14: 256b0010 addiu r11,r11,0x0010
00196c18: 90a20e3b lbu r2,0x0e3b(r5)			map max y
00196c1c: 25080001 addiu r8,r8,0x0001
00196c20: 0102102a slt r2,r8,r2
00196c24: 1440ffd4 bne r2,r0,0x00196b78
00196c28: 254a0002 addiu r10,r10,0x0002
00196c2c: 27180120 addiu r24,r24,0x0120
00196c30: 25ef0024 addiu r15,r15,0x0024
00196c34: 27390001 addiu r25,r25,0x0001
00196c38: 2b220002 slti r2,r25,0x0002
00196c3c: 1440ffc6 bne r2,r0,0x00196b58
00196c40: 25ce0024 addiu r14,r14,0x0024
00196c44: 1600000b bne r16,r0,0x00196c74		Branch if Main Target was found
00196c48: 34020001 ori r2,r0,0x0001
00196c4c: 90a20e2d lbu r2,0x0e2d(r5)
00196c50: 34060048 ori r6,r0,0x0048
00196c54: 000220c0 sll r4,r2,0x03
00196c58: 00822021 addu r4,r4,r2
00196c5c: 000420c0 sll r4,r4,0x03
00196c60: 24840a74 addiu r4,r4,0x0a74
00196c64: 00a42021 addu r4,r5,r4
00196c68: 0c066ac2 jal 0x0019ab08
00196c6c: 24a50a74 addiu r5,r5,0x0a74
00196c70: 00001021 addu r2,r0,r0
00196c74: 8fbf0028 lw r31,0x0028(r29)
00196c78: 8fb10024 lw r17,0x0024(r29)
00196c7c: 8fb00020 lw r16,0x0020(r29)
00196c80: 27bd0030 addiu r29,r29,0x0030
00196c84: 03e00008 jr r31
00196c88: 00000000 nop