Difference between revisions of "Check AI Target Type (00196adc)"
Jump to navigation
Jump to search
(Uploaded the correct routine) |
m |
||
Line 3: | Line 3: | ||
00196adc: 27bdffd0 addiu r29,r29,0xffd0 | 00196adc: 27bdffd0 addiu r29,r29,0xffd0 | ||
00196ae0: afb10024 sw r17,0x0024(r29) | 00196ae0: afb10024 sw r17,0x0024(r29) | ||
− | 00196ae4: 00808821 addu r17,r4,r0 | + | 00196ae4: 00808821 addu r17,r4,r0 r17 = Ability/Move Range |
00196ae8: afb00020 sw r16,0x0020(r29) | 00196ae8: afb00020 sw r16,0x0020(r29) | ||
00196aec: 00008021 addu r16,r0,r0 | 00196aec: 00008021 addu r16,r0,r0 | ||
Line 10: | Line 10: | ||
00196af8: 00003021 addu r6,r0,r0 | 00196af8: 00003021 addu r6,r0,r0 | ||
00196afc: afbf0028 sw r31,0x0028(r29) | 00196afc: afbf0028 sw r31,0x0028(r29) | ||
+ | |||
+ | <Initialize Target List? Loop> | ||
00196b00: 90a30e2d lbu r3,0x0e2d(r5) | 00196b00: 90a30e2d lbu r3,0x0e2d(r5) | ||
00196b04: 00062040 sll r4,r6,0x01 | 00196b04: 00062040 sll r4,r6,0x01 | ||
Line 26: | Line 28: | ||
00196b38: 00822021 addu r4,r4,r2 | 00196b38: 00822021 addu r4,r4,r2 | ||
00196b3c: 28c20012 slti r2,r6,0x0012 | 00196b3c: 28c20012 slti r2,r6,0x0012 | ||
− | 00196b40: 1440ffef bne r2,r0,0x00196b00 | + | 00196b40: 1440ffef bne r2,r0,0x00196b00 Do 18 (0x12) times |
00196b44: a4800a98 sh r0,0x0a98(r4) | 00196b44: a4800a98 sh r0,0x0a98(r4) | ||
+ | |||
+ | <Initialize> | ||
00196b48: 0000c821 addu r25,r0,r0 | 00196b48: 0000c821 addu r25,r0,r0 | ||
00196b4c: 00a0c021 addu r24,r5,r0 | 00196b4c: 00a0c021 addu r24,r5,r0 | ||
Line 33: | Line 37: | ||
00196b54: 00007021 addu r14,r0,r0 | 00196b54: 00007021 addu r14,r0,r0 | ||
− | <Loop | + | <Map Level Loop> |
00196b58: 90a20e3b lbu r2,0x0e3b(r5) | 00196b58: 90a20e3b lbu r2,0x0e3b(r5) | ||
00196b5c: 00000000 nop | 00196b5c: 00000000 nop | ||
− | 00196b60: 18400032 blez r2,0x00196c2c | + | 00196b60: 18400032 blez r2,0x00196c2c <Map Level++> if Y is not positive |
00196b64: 00004021 addu r8,r0,r0 | 00196b64: 00004021 addu r8,r0,r0 | ||
00196b68: 01c06821 addu r13,r14,r0 | 00196b68: 01c06821 addu r13,r14,r0 | ||
Line 42: | Line 46: | ||
00196b70: 270b03b4 addiu r11,r24,0x03b4 | 00196b70: 270b03b4 addiu r11,r24,0x03b4 | ||
00196b74: 25ea0a74 addiu r10,r15,0x0a74 | 00196b74: 25ea0a74 addiu r10,r15,0x0a74 | ||
+ | |||
+ | <Y Loop> | ||
00196b78: 95430000 lhu r3,0x0000(r10) | 00196b78: 95430000 lhu r3,0x0000(r10) | ||
00196b7c: 00000000 nop | 00196b7c: 00000000 nop | ||
− | 00196b80: 10600023 beq r3,r0,0x00196c10 | + | 00196b80: 10600023 beq r3,r0,0x00196c10 <Y++> if no value are present |
00196b84: 00000000 nop | 00196b84: 00000000 nop | ||
00196b88: 90a20e3a lbu r2,0x0e3a(r5) | 00196b88: 90a20e3a lbu r2,0x0e3a(r5) | ||
00196b8c: 00000000 nop | 00196b8c: 00000000 nop | ||
− | 00196b90: 1840001f blez r2,0x00196c10 | + | 00196b90: 1840001f blez r2,0x00196c10 <Y++> if X is not positive |
00196b94: 00003021 addu r6,r0,r0 | 00196b94: 00003021 addu r6,r0,r0 | ||
00196b98: 00606021 addu r12,r3,r0 | 00196b98: 00606021 addu r12,r3,r0 | ||
00196b9c: 01603821 addu r7,r11,r0 | 00196b9c: 01603821 addu r7,r11,r0 | ||
+ | |||
+ | <X Loop> | ||
00196ba0: 00cc1004 sllv r2,r12,r6 | 00196ba0: 00cc1004 sllv r2,r12,r6 | ||
00196ba4: 30428000 andi r2,r2,0x8000 | 00196ba4: 30428000 andi r2,r2,0x8000 | ||
− | 00196ba8: 10400014 beq r2,r0,0x00196bfc | + | 00196ba8: 10400014 beq r2,r0,0x00196bfc <X++> if this is not the correct target |
00196bac: 00000000 nop | 00196bac: 00000000 nop | ||
− | + | 00196bb0: 90e20000 lbu r2,0x0000(r7) Load Target Distance? | |
− | |||
− | 00196bb0: 90e20000 lbu r2,0x0000(r7) | ||
00196bb4: 00000000 nop | 00196bb4: 00000000 nop | ||
00196bb8: 0222102a slt r2,r17,r2 | 00196bb8: 0222102a slt r2,r17,r2 | ||
− | 00196bbc: 1440000f bne r2,r0,0x00196bfc | + | 00196bbc: 1440000f bne r2,r0,0x00196bfc <X++> if target is out of Ability/Range Move |
00196bc0: 00000000 nop | 00196bc0: 00000000 nop | ||
− | 00196bc4: 90a30e2d lbu r3,0x0e2d(r5) | + | |
− | 00196bc8: 34100001 ori r16,r0,0x0001 | + | 00196bc4: 90a30e2d lbu r3,0x0e2d(r5) Load Action Decided? |
+ | 00196bc8: 34100001 ori r16,r0,0x0001 | ||
00196bcc: 000310c0 sll r2,r3,0x03 | 00196bcc: 000310c0 sll r2,r3,0x03 | ||
00196bd0: 00431021 addu r2,r2,r3 | 00196bd0: 00431021 addu r2,r2,r3 | ||
Line 74: | Line 81: | ||
00196be8: 34038000 ori r3,r0,0x8000 | 00196be8: 34038000 ori r3,r0,0x8000 | ||
00196bec: 94440000 lhu r4,0x0000(r2) | 00196bec: 94440000 lhu r4,0x0000(r2) | ||
− | 00196bf0: 00c31807 srav r3,r3,r6 | + | 00196bf0: 00c31807 srav r3,r3,r6 r3 = 8000 / Current X |
− | 00196bf4: 00832025 or r4,r4,r3 | + | 00196bf4: 00832025 or r4,r4,r3 |
− | 00196bf8: a4440000 sh r4,0x0000(r2) | + | 00196bf8: a4440000 sh r4,0x0000(r2) Save to Matrix |
− | 00196bfc: 90a20e3a lbu r2,0x0e3a(r5) | + | <X++> |
+ | 00196bfc: 90a20e3a lbu r2,0x0e3a(r5) | ||
00196c00: 24c60001 addiu r6,r6,0x0001 | 00196c00: 24c60001 addiu r6,r6,0x0001 | ||
00196c04: 00c2102a slt r2,r6,r2 | 00196c04: 00c2102a slt r2,r6,r2 | ||
00196c08: 1440ffe5 bne r2,r0,0x00196ba0 | 00196c08: 1440ffe5 bne r2,r0,0x00196ba0 | ||
00196c0c: 24e70001 addiu r7,r7,0x0001 | 00196c0c: 24e70001 addiu r7,r7,0x0001 | ||
+ | |||
+ | <Y++> | ||
00196c10: 25290002 addiu r9,r9,0x0002 | 00196c10: 25290002 addiu r9,r9,0x0002 | ||
00196c14: 256b0010 addiu r11,r11,0x0010 | 00196c14: 256b0010 addiu r11,r11,0x0010 | ||
− | 00196c18: 90a20e3b lbu r2,0x0e3b(r5) | + | 00196c18: 90a20e3b lbu r2,0x0e3b(r5) |
00196c1c: 25080001 addiu r8,r8,0x0001 | 00196c1c: 25080001 addiu r8,r8,0x0001 | ||
00196c20: 0102102a slt r2,r8,r2 | 00196c20: 0102102a slt r2,r8,r2 | ||
00196c24: 1440ffd4 bne r2,r0,0x00196b78 | 00196c24: 1440ffd4 bne r2,r0,0x00196b78 | ||
00196c28: 254a0002 addiu r10,r10,0x0002 | 00196c28: 254a0002 addiu r10,r10,0x0002 | ||
+ | |||
+ | <Map Level++> | ||
00196c2c: 27180120 addiu r24,r24,0x0120 | 00196c2c: 27180120 addiu r24,r24,0x0120 | ||
00196c30: 25ef0024 addiu r15,r15,0x0024 | 00196c30: 25ef0024 addiu r15,r15,0x0024 | ||
Line 97: | Line 109: | ||
00196c40: 25ce0024 addiu r14,r14,0x0024 | 00196c40: 25ce0024 addiu r14,r14,0x0024 | ||
− | 00196c44: 1600000b bne r16,r0,0x00196c74 | + | |
+ | 00196c44: 1600000b bne r16,r0,0x00196c74 Exit and return 1 if there is a target in range | ||
00196c48: 34020001 ori r2,r0,0x0001 | 00196c48: 34020001 ori r2,r0,0x0001 | ||
+ | |||
00196c4c: 90a20e2d lbu r2,0x0e2d(r5) | 00196c4c: 90a20e2d lbu r2,0x0e2d(r5) | ||
00196c50: 34060048 ori r6,r0,0x0048 | 00196c50: 34060048 ori r6,r0,0x0048 | ||
Line 106: | Line 120: | ||
00196c60: 24840a74 addiu r4,r4,0x0a74 | 00196c60: 24840a74 addiu r4,r4,0x0a74 | ||
00196c64: 00a42021 addu r4,r5,r4 | 00196c64: 00a42021 addu r4,r5,r4 | ||
− | 00196c68: 0c066ac2 jal 0x0019ab08 | + | 00196c68: 0c066ac2 jal 0x0019ab08 Transfer Halfword Values |
00196c6c: 24a50a74 addiu r5,r5,0x0a74 | 00196c6c: 24a50a74 addiu r5,r5,0x0a74 | ||
− | 00196c70: 00001021 addu r2,r0,r0 | + | 00196c70: 00001021 addu r2,r0,r0 Return False |
+ | |||
00196c74: 8fbf0028 lw r31,0x0028(r29) | 00196c74: 8fbf0028 lw r31,0x0028(r29) | ||
00196c78: 8fb10024 lw r17,0x0024(r29) | 00196c78: 8fb10024 lw r17,0x0024(r29) |
Revision as of 01:02, 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 = Ability/Move Range 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)
<Initialize Target List? Loop> 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 Do 18 (0x12) times 00196b44: a4800a98 sh r0,0x0a98(r4)
<Initialize> 00196b48: 0000c821 addu r25,r0,r0 00196b4c: 00a0c021 addu r24,r5,r0 00196b50: 00a07821 addu r15,r5,r0 00196b54: 00007021 addu r14,r0,r0
<Map Level Loop> 00196b58: 90a20e3b lbu r2,0x0e3b(r5) 00196b5c: 00000000 nop 00196b60: 18400032 blez r2,0x00196c2c <Map Level++> if Y is not positive 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
<Y Loop> 00196b78: 95430000 lhu r3,0x0000(r10) 00196b7c: 00000000 nop 00196b80: 10600023 beq r3,r0,0x00196c10 <Y++> if no value are present 00196b84: 00000000 nop 00196b88: 90a20e3a lbu r2,0x0e3a(r5) 00196b8c: 00000000 nop 00196b90: 1840001f blez r2,0x00196c10 <Y++> if X is not positive 00196b94: 00003021 addu r6,r0,r0 00196b98: 00606021 addu r12,r3,r0 00196b9c: 01603821 addu r7,r11,r0
<X Loop> 00196ba0: 00cc1004 sllv r2,r12,r6 00196ba4: 30428000 andi r2,r2,0x8000 00196ba8: 10400014 beq r2,r0,0x00196bfc <X++> if this is not the correct target 00196bac: 00000000 nop 00196bb0: 90e20000 lbu r2,0x0000(r7) Load Target Distance? 00196bb4: 00000000 nop 00196bb8: 0222102a slt r2,r17,r2 00196bbc: 1440000f bne r2,r0,0x00196bfc <X++> if target is out of Ability/Range Move 00196bc0: 00000000 nop
00196bc4: 90a30e2d lbu r3,0x0e2d(r5) Load Action Decided? 00196bc8: 34100001 ori r16,r0,0x0001 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 r3 = 8000 / Current X 00196bf4: 00832025 or r4,r4,r3 00196bf8: a4440000 sh r4,0x0000(r2) Save to Matrix
<X++> 00196bfc: 90a20e3a lbu r2,0x0e3a(r5) 00196c00: 24c60001 addiu r6,r6,0x0001 00196c04: 00c2102a slt r2,r6,r2 00196c08: 1440ffe5 bne r2,r0,0x00196ba0 00196c0c: 24e70001 addiu r7,r7,0x0001
<Y++> 00196c10: 25290002 addiu r9,r9,0x0002 00196c14: 256b0010 addiu r11,r11,0x0010 00196c18: 90a20e3b lbu r2,0x0e3b(r5) 00196c1c: 25080001 addiu r8,r8,0x0001 00196c20: 0102102a slt r2,r8,r2 00196c24: 1440ffd4 bne r2,r0,0x00196b78 00196c28: 254a0002 addiu r10,r10,0x0002
<Map Level++> 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 Exit and return 1 if there is a target in range 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 Transfer Halfword Values 00196c6c: 24a50a74 addiu r5,r5,0x0a74 00196c70: 00001021 addu r2,r0,r0 Return False
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