00086b44 - 00086dc0

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search

00086b44: 27bdffb8 addiu r29,r29,0xffb8
00086b48: afb00038 sw r16,0x0038(r29)
00086b4c: 3c10800a lui r16,0x800a
00086b50: 26108a24 addiu r16,r16,0x8a24				GPU Rotation matrix
00086b54: 02002021 addu r4,r16,r0
00086b58: afbf0044 sw r31,0x0044(r29)
00086b5c: afb20040 sw r18,0x0040(r29)
00086b60: 0c00742a jal 0x0001d0a8                   Store_Rotation_matrix_elements_to_GTE
00086b64: afb1003c sw r17,0x003c(r29)
00086b68: 0c00744e jal 0x0001d138                   Store_Translation_Vectors_to_GTE
00086b6c: 02002021 addu r4,r16,r0
00086b70: 3c11800a lui r17,0x800a
00086b74: 8e318a54 lw r17,-0x75ac(r17)				load misc data
00086b78: 00000000 nop
00086b7c: 1220008a beq r17,r0,0x00086da8			
00086b80: 3c129249 lui r18,0x9249
00086b84: 36522493 ori r18,r18,0x2493				
00086b88: 27b00020 addiu r16,r29,0x0020
r17 = next units misc data <loop>
00086b8c: 02002021 addu r4,r16,r0
00086b90: 0c01ee5b jal 0x0007b96c					store some X/Y/Height
00086b94: 02202821 addu r5,r17,r0
00086b98: 02002021 addu r4,r16,r0
00086b9c: 27a50010 addiu r5,r29,0x0010
00086ba0: 0c00755e jal 0x0001d578                     Get_vector_from_GTE		multiply vectors/matrix
00086ba4: 2626012c addiu r6,r17,0x012c				r6 = misc data + 0x12c
00086ba8: 96220012 lhu r2,0x0012(r17)				load byte 0x12
00086bac: 00000000 nop
00086bb0: 30420002 andi r2,r2,0x0002
00086bb4: 10400005 beq r2,r0,0x00086bcc				branch if not 0x02 (reflecting?)
00086bb8: 00000000 nop
if reflecting?
00086bbc: 97a20010 lhu r2,0x0010(r29)				load ??
00086bc0: 96230058 lhu r3,0x0058(r17)				load ??
00086bc4: 08021af7 j 0x00086bdc					
00086bc8: 00431023 subu r2,r2,r3
if not reflecting
00086bcc: 97a20010 lhu r2,0x0010(r29)
00086bd0: 96230058 lhu r3,0x0058(r17)
00086bd4: 00000000 nop
00086bd8: 00431021 addu r2,r2,r3
00086bdc: a6220120 sh r2,0x0120(r17)				store difference / sum
00086be0: 96220012 lhu r2,0x0012(r17)
00086be4: 00000000 nop
00086be8: 30420004 andi r2,r2,0x0004
00086bec: 10400005 beq r2,r0,0x00086c04				branch if not ??
00086bf0: 00000000 nop
00086bf4: 97a20014 lhu r2,0x0014(r29)
00086bf8: 9623005a lhu r3,0x005a(r17)
00086bfc: 08021b05 j 0x00086c14						skip next
00086c00: 00431023 subu r2,r2,r3
if 0x04 active
00086c04: 97a20014 lhu r2,0x0014(r29)
00086c08: 9623005a lhu r3,0x005a(r17)
00086c0c: 00000000 nop
00086c10: 00431021 addu r2,r2,r3					?? + ??
00086c14: a6220122 sh r2,0x0122(r17)
00086c18: 96220040 lhu r2,0x0040(r17)				load X mod
00086c1c: 00000000 nop
00086c20: 00021400 sll r2,r2,0x10
00086c24: 00022c03 sra r5,r2,0x10
00086c28: 00b20018 mult r5,r18						Xmod * 92494293
00086c2c: 96230044 lhu r3,0x0044(r17)				load Y mod
00086c30: 00002010 mfhi r4
00086c34: 00031c00 sll r3,r3,0x10
00086c38: 00033c03 sra r7,r3,0x10
00086c3c: 00f20018 mult r7,r18						Ymod * 92494293
00086c40: 9226007e lbu r6,0x007e(r17)				load map level
00086c44: 000217c3 sra r2,r2,0x1f
00086c48: 00031fc3 sra r3,r3,0x1f
00086c4c: 00852021 addu r4,r4,r5
00086c50: 00042103 sra r4,r4,0x04
00086c54: 00822023 subu r4,r4,r2
00086c58: 00042400 sll r4,r4,0x10
00086c5c: 00042403 sra r4,r4,0x10
00086c60: 00002810 mfhi r5
00086c64: 00a72821 addu r5,r5,r7
00086c68: 00052903 sra r5,r5,0x04
00086c6c: 00a32823 subu r5,r5,r3
00086c70: 00052c00 sll r5,r5,0x10
00086c74: 0c060fed jal 0x00183fb4					get tile's data pointer
00086c78: 00052c03 sra r5,r5,0x10
00086c7c: 9223007f lbu r3,0x007f(r17)				load ??
00086c80: 00000000 nop
00086c84: 1060000e beq r3,r0,0x00086cc0				branch if ??
00086c88: 00408021 addu r16,r2,r0
00086c8c: 92020000 lbu r2,0x0000(r16)				load tile type?
00086c90: 00000000 nop
00086c94: 30420040 andi r2,r2,0x0040
00086c98: 10400005 beq r2,r0,0x00086cb0				branch if not 0x40?
00086c9c: 27a40020 addiu r4,r29,0x0020
If tile = 0x40
00086ca0: 0c01edaa jal 0x0007b6a8					some calculations
00086ca4: 27a50028 addiu r5,r29,0x0028
00086ca8: 08021b3b j 0x00086cec
00086cac: 00000000 nop
00086cb0: 0c01eda2 jal 0x0007b688					same as 7b6a8 but different input value
00086cb4: 27a50028 addiu r5,r29,0x0028
00086cb8: 08021b3b j 0x00086cec
00086cbc: 00000000 nop
00086cc0: 92020000 lbu r2,0x0000(r16)				load tile type
00086cc4: 00000000 nop
00086cc8: 30420040 andi r2,r2,0x0040
00086ccc: 10400005 beq r2,r0,0x00086ce4				branch if not 0x40
00086cd0: 27a40020 addiu r4,r29,0x0020
00086cd4: 0c01ee53 jal 0x0007b94c					distance calculations?
00086cd8: 27a50028 addiu r5,r29,0x0028
00086cdc: 08021b3b j 0x00086cec
00086ce0: 00000000 nop
00086ce4: 0c01ee4b jal 0x0007b92c					some calculation based on 80097786
00086ce8: 27a50028 addiu r5,r29,0x0028
Move in water
00086cec: 8e240134 lw r4,0x0134(r17)				load unit data
00086cf0: 00000000 nop
00086cf4: 1080001d beq r4,r0,0x00086d6c
00086cf8: 00000000 nop
00086cfc: 0c05fc08 jal 0x0017f020					Float/Float/Fly_movements
00086d00: 00000000 nop
00086d04: 00401821 addu r3,r2,r0
00086d08: 30620010 andi r2,r3,0x0010
00086d0c: 10400009 beq r2,r0,0x00086d34				branch if not move in water?
00086d10: 30620040 andi r2,r3,0x0040
00086d14: 92020003 lbu r2,0x0003(r16)				load depth
00086d18: 00000000 nop
00086d1c: 304200e0 andi r2,r2,0x00e0				remove some depth flag
00086d20: 10400013 beq r2,r0,0x00086d70				branch if depth = 0?
00086d24: 27a40028 addiu r4,r29,0x0028
00086d28: 97a2002a lhu r2,0x002a(r29)
00086d2c: 08021b5a j 0x00086d68
00086d30: 2442fff4 addiu r2,r2,0xfff4
00086d34: 1440000e bne r2,r0,0x00086d70				branch if has float?
00086d38: 27a40028 addiu r4,r29,0x0028
00086d3c: 30620020 andi r2,r3,0x0020
00086d40: 1440000c bne r2,r0,0x00086d74				branch if has walk on water?
00086d44: 27a50010 addiu r5,r29,0x0010
00086d48: 92020003 lbu r2,0x0003(r16)				load depth
00086d4c: 00000000 nop
00086d50: 00021142 srl r2,r2,0x05
00086d54: 00021840 sll r3,r2,0x01
00086d58: 00621821 addu r3,r3,r2
00086d5c: 97a2002a lhu r2,0x002a(r29)
00086d60: 00031880 sll r3,r3,0x02
00086d64: 00431023 subu r2,r2,r3
00086d68: a7a2002a sh r2,0x002a(r29)
00086d6c: 27a40028 addiu r4,r29,0x0028
00086d70: 27a50010 addiu r5,r29,0x0010
00086d74: 0c00755e jal 0x0001d578                     Get_vector_from_GTE  multiply translation vector/matrix
00086d78: 27a60030 addiu r6,r29,0x0030
00086d7c: 8fa20018 lw r2,0x0018(r29)
00086d80: 00000000 nop
00086d84: 04410002 bgez r2,0x00086d90
00086d88: 00000000 nop
00086d8c: 24420003 addiu r2,r2,0x0003
00086d90: 00021083 sra r2,r2,0x02
00086d94: ae220128 sw r2,0x0128(r17)
00086d98: 8e310000 lw r17,0x0000(r17)				get previous units misc data
00086d9c: 00000000 nop
00086da0: 1620ff7a bne r17,r0,0x00086b8c			branch if not first unit
00086da4: 27b00020 addiu r16,r29,0x0020
00086da8: 8fbf0044 lw r31,0x0044(r29)
00086dac: 8fb20040 lw r18,0x0040(r29)
00086db0: 8fb1003c lw r17,0x003c(r29)
00086db4: 8fb00038 lw r16,0x0038(r29)
00086db8: 27bd0048 addiu r29,r29,0x0048
00086dbc: 03e00008 jr r31
00086dc0: 00000000 nop

Return Location

Battle.bin 
 00074bbc: Free Cursor Controller Input