001a5c3c - 001a5d70

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search

Parameters:
	r4 = (p1) Effect Phase
	r5 = (p2) VRAM flag; camera interactions (zoom and tilt?)


001a5c3c: 27bdffe0 addiu r29,r29,0xffe0
001a5c40: afb20018 sw r18,0x0018(r29)
001a5c44: 00a09021 addu r18,r5,r0			r18 = r5 input
001a5c48: 3c02801c lui r2,0x801c
001a5c4c: 8c42bf68 lw r2,-0x4098(r2)			0x801bbf68
001a5c50: 3c03801c lui r3,0x801c
001a5c54: 8c639140 lw r3,-0x6ec0(r3)			0x801b9140
001a5c58: 00042400 sll r4,r4,0x10
001a5c5c: afb00010 sw r16,0x0010(r29)
001a5c60: 3c10801c lui r16,0x801c
001a5c64: 8e109270 lw r16,-0x6d90(r16)			Load pointer to current misc/temporary? frame data. 0x54 bytes long.
001a5c68: 00042403 sra r4,r4,0x10
001a5c6c: afbf001c sw r31,0x001c(r29)
001a5c70: afb10014 sw r17,0x0014(r29)
001a5c74: 24450001 addiu r5,r2,0x0001			add 1 to the thing
001a5c78: 00041140 sll r2,r4,0x05			
001a5c7c: 00441023 subu r2,r2,r4			
001a5c80: 000210c0 sll r2,r2,0x03			r2 = phase * 0xF8 
001a5c84: 3c04801c lui r4,0x801c
001a5c88: 2484f02c addiu r4,r4,0xf02c			0x801bf02c
001a5c8c: 0065182a slt r3,r3,r5			set if r3 < r2 + 1
001a5c90: 3c01801c lui r1,0x801c
001a5c94: ac25bf68 sw r5,-0x4098(r1)			store r2 + 1 to 0x801bbf68 (counter?)
001a5c98: 10600003 beq r3,r0,0x001a5ca8		branch if r3 > r2 + 1 (don't save input to 0x801b9140)
001a5c9c: 00448821 addu r17,r2,r4			r17 = 0x801bf02c + effect * 0xF8
001a5ca0: 3c01801c lui r1,0x801c
001a5ca4: ac259140 sw r5,-0x6ec0(r1)			Count only if greater than other number?
001a5ca8: 16000003 bne r16,r0,0x001a5cb8		branch if frame pointer is not erroneous
001a5cac: 34040001 ori r4,r0,0x0001
001a5cb0: 0c01127e jal 0x000449f8			jr r31. error code 0x13e? no frame to process?
001a5cb4: 3405003e ori r5,r0,0x003e
001a5cb8: 8e020004 lw r2,0x0004(r16)			Load pointer to next frame's data?
001a5cbc: 3245f000 andi r5,r18,0xf000			r5 = r18 bitmask 0xf000
001a5cc0: 3c01801c lui r1,0x801c
001a5cc4: ac229270 sw r2,-0x6d90(r1)			store pointer for next repeat
001a5cc8: 34021000 ori r2,r0,0x1000
001a5ccc: 10a2000e beq r5,r2,0x001a5d08		branch if r5 = 0x1000 (do not apply transform matrix + apply effect zoom with camera)
001a5cd0: 28a21001 slti r2,r5,0x1001
001a5cd4: 10400005 beq r2,r0,0x001a5cec		branch if r5 > 0x1000
001a5cd8: 00000000 nop
001a5cdc: 10a0000d beq r5,r0,0x001a5d14		branch if r5 = 0
001a5ce0: 00002021 addu r4,r0,r0			apply transformation matrix + zoom effect to camera
001a5ce4: 08069749 j 0x001a5d24			skip rotating effect data. if an error is thrown
001a5ce8: ae000000 sw r0,0x0000(r16)

001a5cec: 34022000 ori r2,r0,0x2000
001a5cf0: 10a20007 beq r5,r2,0x001a5d10		branch if r5 = 0x2000 (don't zoom effect to camera, apply transform matrix
001a5cf4: 34023000 ori r2,r0,0x3000
001a5cf8: 10a20006 beq r5,r2,0x001a5d14		branch if r5 = 0x3000
001a5cfc: 34040006 ori r4,r0,0x0006			Store do not apply transformational(?) matrix and do not zoom effect with camera function
001a5d00: 08069749 j 0x001a5d24
001a5d04: ae000000 sw r0,0x0000(r16)

001a5d08: 08069745 j 0x001a5d14
001a5d0c: 34040002 ori r4,r0,0x0002			store do not apply transformational(?) Matrix and zoom effect with camera

001a5d10: 34040004 ori r4,r0,0x0004			Store Do not zoom effect with camera function + apply transform matrix

Default return:
001a5d14: 0c06a802 jal 0x001aa008			001aa008 - 001aa0e4
001a5d18: 00000000 nop
001a5d1c: ae020054 sw r2,0x0054(r16)			Store pointer to parameter data
001a5d20: ae000000 sw r0,0x0000(r16)			clear?
001a5d24: 8e2200d0 lw r2,0x00d0(r17)			load another effect table? right after palette table maybe???
001a5d28: 00000000 nop
001a5d2c: ae020004 sw r2,0x0004(r16)			store the pointer to it, in place of the temporary beforehand?
001a5d30: 8e2200d0 lw r2,0x00d0(r17)			"
001a5d34: 00000000 nop
001a5d38: 10400002 beq r2,r0,0x001a5d44		branch if erroneous 
001a5d3c: 00000000 nop
001a5d40: ac500000 sw r16,0x0000(r2)			store pointer to ? in ? effect table (loads later for 0x0004 point...? which is the where this pointer is being saved???)
001a5d44: 9623001c lhu r3,0x001c(r17)			load counter from Effect data table
001a5d48: 02001021 addu r2,r16,r0
001a5d4c: ae2200d0 sw r2,0x00d0(r17)
001a5d50: 24630001 addiu r3,r3,0x0001			add 1 to counter
001a5d54: a623001c sh r3,0x001c(r17)			store new counter
001a5d58: 8fbf001c lw r31,0x001c(r29)
001a5d5c: 8fb20018 lw r18,0x0018(r29)
001a5d60: 8fb10014 lw r17,0x0014(r29)
001a5d64: 8fb00010 lw r16,0x0010(r29)
001a5d68: 27bd0020 addiu r29,r29,0x0020
001a5d6c: 03e00008 jr r31
001a5d70: 00000000 nop