Calculate ability range with map parameters?

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search

0017a16c: 27bdffd8 addiu r29,r29,0xffd8
0017a170: afbf0020 sw r31,0x0020(r29)
0017a174: afb3001c sw r19,0x001c(r29)
0017a178: afb20018 sw r18,0x0018(r29)
0017a17c: afb10014 sw r17,0x0014(r29)
0017a180: afb00010 sw r16,0x0010(r29)
0017a184: 90830048 lbu r3,0x0048(r4)		load X coordinate
0017a188: 3c02800e lui r2,0x800e
0017a18c: 90424e9c lbu r2,0x4e9c(r2)		map max X
0017a190: 00000000 nop
0017a194: 00620018 mult r3,r2
0017a198: 00a08821 addu r17,r5,r0		(r5 = range?)
0017a19c: 90820047 lbu r2,0x0047(r4)		load Y coordinate
0017a1a0: 00008012 mflo r16
0017a1a4: 0c05f7b4 jal 0x0017ded0		clear bytes in big table at 80192dd8	
0017a1a8: 02028021 addu r16,r16,r2
0017a1ac: 3224007f andi r4,r17,0x007f
0017a1b0: 24840001 addiu r4,r4,0x0001
0017a1b4: 00101880 sll r3,r16,0x02
0017a1b8: 00701821 addu r3,r3,r16
0017a1bc: 3c138019 lui r19,0x8019
0017a1c0: 26732dd8 addiu r19,r19,0x2dd8
0017a1c4: 00738021 addu r16,r3,r19
0017a1c8: 26620500 addiu r2,r19,0x0500
0017a1cc: 00629021 addu r18,r3,r2
0017a1d0: 34020001 ori r2,r0,0x0001
0017a1d4: a2040000 sb r4,0x0000(r16)
0017a1d8: a2440000 sb r4,0x0000(r18)
0017a1dc: 02202021 addu r4,r17,r0		
0017a1e0: 308400ff andi r4,r4,0x00ff		r4 = range?
0017a1e4: 00002821 addu r5,r0,r0
0017a1e8: 0c05e546 jal 0x00179518		Calculate_Tiles_Hit_by_Ability
0017a1ec: a2020001 sb r2,0x0001(r16)
0017a1f0: 32310080 andi r17,r17,0x0080
0017a1f4: 12200003 beq r17,r0,0x0017a204
0017a1f8: 00003021 addu r6,r0,r0
0017a1fc: a2000000 sb r0,0x0000(r16)
0017a200: a2400000 sb r0,0x0000(r18)
0017a204: 00002821 addu r5,r0,r0
0017a208: 02602021 addu r4,r19,r0
0017a20c: 3c038019 lui r3,0x8019
0017a210: 2463f8cc addiu r3,r3,0xf8cc		Tile data
0017a214: 90820000 lbu r2,0x0000(r4)		
0017a218: 00000000 nop
0017a21c: 1040000a beq r2,r0,0x0017a248
0017a220: 00000000 nop
0017a224: 90620006 lbu r2,0x0006(r3)		
0017a228: 00000000 nop
0017a22c: 30420003 andi r2,r2,0x0003
0017a230: 14400005 bne r2,r0,0x0017a248		unselectable/cannot target check
0017a234: 00000000 nop
0017a238: 90620005 lbu r2,0x0005(r3)		enemy in range?
0017a23c: 24c60001 addiu r6,r6,0x0001
0017a240: 0805e895 j 0x0017a254
0017a244: 34420040 ori r2,r2,0x0040		set targetable?
0017a248: 90620005 lbu r2,0x0005(r3)
0017a24c: 00000000 nop
0017a250: 304200bf andi r2,r2,0x00bf
0017a254: a0620005 sb r2,0x0005(r3)
0017a258: 24840005 addiu r4,r4,0x0005
0017a25c: 24a50001 addiu r5,r5,0x0001
0017a260: 28a20200 slti r2,r5,0x0200
0017a264: 1440ffeb bne r2,r0,0x0017a214
0017a268: 24630008 addiu r3,r3,0x0008
0017a26c: 00c01021 addu r2,r6,r0
0017a270: 8fbf0020 lw r31,0x0020(r29)
0017a274: 8fb3001c lw r19,0x001c(r29)
0017a278: 8fb20018 lw r18,0x0018(r29)
0017a27c: 8fb10014 lw r17,0x0014(r29)
0017a280: 8fb00010 lw r16,0x0010(r29)
0017a284: 27bd0028 addiu r29,r29,0x0028
0017a288: 03e00008 jr r31
0017a28c: 00000000 nop