Difference between revisions of "Initialise Secondary Effect"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
m
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
  #  ROUTINE: (Effect related) ? 0x1add54
 
  #  ROUTINE: (Effect related) ? 0x1add54
 
  #      Parameters:
 
  #      Parameters:
  #          r4 = (p1) ?
+
  #          r4 = Secondary Animation ID
  #          r5 = (p2) ?
+
  #          r5 = element as integer
  #          r6 = (p3) ?
+
  #          r6 = Stack pointer to effect's data
 +
#                for all units 0 -> f:
 +
#                - 0x0000: target counter
 +
#                - 0x0002: non-targeted unit counter
 +
#                - 0x0003: math skill flag
 +
#                - 0x0004: animate on miss flag
 +
#                - 0x0006: Unit misc ID // if no targets, X pos of effect (+ below)
 +
#                - 0x0007: display type // if no targets, X pos of effect (+ above)
 +
#                - 0x0008: ?           // if no targets, elevation of effect
 +
#                - 0x000a: ?            // if no targets, Y pos of effect
 +
#                appended:
 +
#                - 0x00a4: 0?
 +
#                - 0x00a6: caster misc ID
 
   
 
   
 
  801add54: 27bdffe0 addiu r29,r29,-0x0020
 
  801add54: 27bdffe0 addiu r29,r29,-0x0020
 
  801add58: afb10014 sw r17,0x0014(r29)
 
  801add58: afb10014 sw r17,0x0014(r29)
  801add5c: 00808821 addu r17,r4,r0              #  p1
+
  801add5c: 00808821 addu r17,r4,r0              #  animationID
 
  801add60: afb20018 sw r18,0x0018(r29)
 
  801add60: afb20018 sw r18,0x0018(r29)
  801add64: 00a09021 addu r18,r5,r0              #  p2
+
  801add64: 00a09021 addu r18,r5,r0              #  elements
 
  801add68: afb00010 sw r16,0x0010(r29)
 
  801add68: afb00010 sw r16,0x0010(r29)
 
  801add6c: afbf001c sw r31,0x001c(r29)
 
  801add6c: afbf001c sw r31,0x001c(r29)
  801add70: 0c06b60a jal 0x801ad828              #  result_0x1ad828 = [[Effect Related (0x1ad828)]] ();
+
  801add70: 0c06b60a jal 0x801ad828              #  [[Shift Current Effect Target ID]] // returns current effect target ID
 
  801add74: 00c08021 addu r16,r6,r0              #  p3
 
  801add74: 00c08021 addu r16,r6,r0              #  p3
  801add78: 304200ff andi r2,r2,0x00ff            #  result_0x1ad828
+
  801add78: 304200ff andi r2,r2,0x00ff            #   
  801add7c: 00021880 sll r3,r2,0x02              #  result_0x1ad828 * 4
+
  801add7c: 00021880 sll r3,r2,0x02              #   
  801add80: 00621821 addu r3,r3,r2                #  result_0x1ad828 * 5
+
  801add80: 00621821 addu r3,r3,r2                #   
  801add84: 00031880 sll r3,r3,0x02              #  result_0x1ad828 * 20
+
  801add84: 00031880 sll r3,r3,0x02              #   
  801add88: 00621821 addu r3,r3,r2                #  result_0x1ad828 * 21
+
  801add88: 00621821 addu r3,r3,r2                #   
  801add8c: 00031880 sll r3,r3,0x02              #  result_0x1ad828 * 84
+
  801add8c: 00031880 sll r3,r3,0x02              #  Current effect target ID * 0x54
 
  801add90: 3c01801c lui r1,0x801c
 
  801add90: 3c01801c lui r1,0x801c
 
  801add94: 00230821 addu r1,r1,r3
 
  801add94: 00230821 addu r1,r1,r3
  801add98: a4318ba0 sh r17,-0x7460(r1)          #  *(0x801b8ba0 + (result_0x1ad828 * 84)) = p1
+
  801add98: a4318ba0 sh r17,-0x7460(r1)          #  Store current secondary effect animation ID
 
  801add9c: 3c01801c lui r1,0x801c
 
  801add9c: 3c01801c lui r1,0x801c
 
  801adda0: 00230821 addu r1,r1,r3
 
  801adda0: 00230821 addu r1,r1,r3
  801adda4: 94248ba0 lhu r4,-0x7460(r1)          #  *(0x801b8ba0 + (result_0x1ad828 * 84))
+
  801adda4: 94248ba0 lhu r4,-0x7460(r1)          #  load secondary animation
 
  801adda8: 3c01801c lui r1,0x801c
 
  801adda8: 3c01801c lui r1,0x801c
 
  801addac: 00230821 addu r1,r1,r3
 
  801addac: 00230821 addu r1,r1,r3
  801addb0: a4208ba8 sh r0,-0x7458(r1)            #  *(0x801b8ba8 + (result_0x1ad828 * 84)) = 0
+
  801addb0: a4208ba8 sh r0,-0x7458(r1)            #  reset effect progression counter
 
  801addb4: 3c01801c lui r1,0x801c
 
  801addb4: 3c01801c lui r1,0x801c
 
  801addb8: 00230821 addu r1,r1,r3
 
  801addb8: 00230821 addu r1,r1,r3
  801addbc: a4328ba2 sh r18,-0x745e(r1)          #  *(0x801b8ba2 + (result_0x1ad828 * 84)) = p2
+
  801addbc: a4328ba2 sh r18,-0x745e(r1)          #  store ability element
  801addc0: 00042080 sll r4,r4,0x02              #  *(0x801b8ba0 + (result_0x1ad828 * 84)) * 4
+
  801addc0: 00042080 sll r4,r4,0x02              #  secondary anim ID * 4
 
  801addc4: 3c01801c lui r1,0x801c
 
  801addc4: 3c01801c lui r1,0x801c
 
  801addc8: 00240821 addu r1,r1,r4
 
  801addc8: 00240821 addu r1,r1,r4
  801addcc: 902484dc lbu r4,-0x7b24(r1)          #  *(0x801b84dc + (*(0x801b8ba0 + (result_0x1ad828 * 84)) * 4))
+
  801addcc: 902484dc lbu r4,-0x7b24(r1)          #  load secondary effect's function ID
 
  801addd0: 3c01801c lui r1,0x801c
 
  801addd0: 3c01801c lui r1,0x801c
 
  801addd4: 00230821 addu r1,r1,r3
 
  801addd4: 00230821 addu r1,r1,r3
  801addd8: a0248b9f sb r4,-0x7461(r1)            #  *(0x801b8b9f + (result_0x1ad828 * 84)) = *(0x801b84dc + (*(0x801b8ba0 + (result_0x1ad828 * 84)) * 4))
+
  801addd8: a0248b9f sb r4,-0x7461(r1)            #  store seconday anims effect function
 
  801adddc: 3c04801c lui r4,0x801c
 
  801adddc: 3c04801c lui r4,0x801c
  801adde0: 24848bac addiu r4,r4,-0x7454          #  0x801b8bac
+
  801adde0: 24848bac addiu r4,r4,-0x7454          #  effect target data table + 0x10
  801adde4: 00642821 addu r5,r3,r4                #  (result_0x1ad828 * 84) + 0x801b8bac
+
  801adde4: 00642821 addu r5,r3,r4                #  effect target's data table + 0x10
 
  801adde8: 8a0600a7 lwl r6,0x00a7(r16)
 
  801adde8: 8a0600a7 lwl r6,0x00a7(r16)
 
  801addec: 9a0600a4 lwr r6,0x00a4(r16)          #  *(p3 + 0xa4)
 
  801addec: 9a0600a4 lwr r6,0x00a4(r16)          #  *(p3 + 0xa4)
Line 48: Line 60:
 
  801addf8: 860800ac lh r8,0x00ac(r16)            #  *(p3 + 0xac)
 
  801addf8: 860800ac lh r8,0x00ac(r16)            #  *(p3 + 0xac)
 
  801addfc: a8a60003 swl r6,0x0003(r5)
 
  801addfc: a8a60003 swl r6,0x0003(r5)
  801ade00: b8a60000 swr r6,0x0000(r5)            #  *((result_0x1ad828 * 84) + 0x801b8bac) = *(p3 + 0xa4)
+
  801ade00: b8a60000 swr r6,0x0000(r5)            #  store misc. unit ID of target & caster to effect target data?
 
  801ade04: a8a70007 swl r7,0x0007(r5)
 
  801ade04: a8a70007 swl r7,0x0007(r5)
  801ade08: b8a70004 swr r7,0x0004(r5)            #  *((result_0x1ad828 * 84) + 0x801b8bac + 4) = *(p3 + 0xa8)
+
  801ade08: b8a70004 swr r7,0x0004(r5)            #  ?
  801ade0c: a4a80008 sh r8,0x0008(r5)            #  *((result_0x1ad828 * 84) + 0x801b8bac + 8) = *(p3 + 0xac)
+
  801ade0c: a4a80008 sh r8,0x0008(r5)            #  ?
  801ade10: 2484000a addiu r4,r4,0x000a          #  0x801b8bb6
+
  801ade10: 2484000a addiu r4,r4,0x000a          #   
  801ade14: 00642021 addu r4,r3,r4                #  (result_0x1ad828 * 84) + 0x801b8bb6
+
  801ade14: 00642021 addu r4,r3,r4                #  effect target's data table + 0x1a
 
  801ade18: 8a050007 lwl r5,0x0007(r16)
 
  801ade18: 8a050007 lwl r5,0x0007(r16)
  801ade1c: 9a050004 lwr r5,0x0004(r16)          #  *(p3 + 4) 
+
  801ade1c: 9a050004 lwr r5,0x0004(r16)          #   
 
  801ade20: 8a06000b lwl r6,0x000b(r16)
 
  801ade20: 8a06000b lwl r6,0x000b(r16)
 
  801ade24: 9a060008 lwr r6,0x0008(r16)          #  *(p3 + 8)
 
  801ade24: 9a060008 lwr r6,0x0008(r16)          #  *(p3 + 8)
 
  801ade28: 8607000c lh r7,0x000c(r16)            #  *(p3 + 12)
 
  801ade28: 8607000c lh r7,0x000c(r16)            #  *(p3 + 12)
 
  801ade2c: a8850003 swl r5,0x0003(r4)
 
  801ade2c: a8850003 swl r5,0x0003(r4)
  801ade30: b8850000 swr r5,0x0000(r4)            #  *((result_0x1ad828 * 84) + 0x801b8bb6) = *(p3 + 4)
+
  801ade30: b8850000 swr r5,0x0000(r4)            #  store hit# & x coordinate of target?
 
  801ade34: a8860007 swl r6,0x0007(r4)
 
  801ade34: a8860007 swl r6,0x0007(r4)
  801ade38: b8860004 swr r6,0x0004(r4)            #  *((result_0x1ad828 * 84) + 0x801b8bb6 + 4) = *(p3 + 8)
+
  801ade38: b8860004 swr r6,0x0004(r4)            #  store map level & y coordinate of target?
  801ade3c: a4870008 sh r7,0x0008(r4)            #  *((result_0x1ad828 * 84) + 0x801b8bb6 + 8) = *(p3 + 12)
+
  801ade3c: a4870008 sh r7,0x0008(r4)            #  ?
  801ade40: 960500c6 lhu r5,0x00c6(r16)          #  *(p3 + 0xc6)
+
  801ade40: 960500c6 lhu r5,0x00c6(r16)          #  load used weapon ID
 
  801ade44: 34040001 ori r4,r0,0x0001            #  1
 
  801ade44: 34040001 ori r4,r0,0x0001            #  1
 
  801ade48: 3c01801c lui r1,0x801c
 
  801ade48: 3c01801c lui r1,0x801c
 
  801ade4c: 00230821 addu r1,r1,r3
 
  801ade4c: 00230821 addu r1,r1,r3
  801ade50: ac248ba4 sw r4,-0x745c(r1)            #  *((result_0x1ad828 * 84) + 0x801b8ba4) = 1
+
  801ade50: ac248ba4 sw r4,-0x745c(r1)            #  set current secondary effect phase to initialised
 
  801ade54: 3c01801c lui r1,0x801c
 
  801ade54: 3c01801c lui r1,0x801c
 
  801ade58: 00230821 addu r1,r1,r3
 
  801ade58: 00230821 addu r1,r1,r3
  801ade5c: ac258bc0 sw r5,-0x7440(r1)            #  *((result_0x1ad828 * 84) + 0x801b8bc0) = *(p3 + 0xc6)
+
  801ade5c: ac258bc0 sw r5,-0x7440(r1)            #  store used weapon ID
 
  801ade60: 8fbf001c lw r31,0x001c(r29)
 
  801ade60: 8fbf001c lw r31,0x001c(r29)
 
  801ade64: 8fb20018 lw r18,0x0018(r29)
 
  801ade64: 8fb20018 lw r18,0x0018(r29)

Latest revision as of 12:04, 16 March 2024

#   ROUTINE: (Effect related) ? 0x1add54
#       Parameters:
#           r4 = Secondary Animation ID
#           r5 = element as integer
#           r6 = Stack pointer to effect's data
#                for all units 0 -> f:
#                - 0x0000: target counter
#                - 0x0002: non-targeted unit counter
#                - 0x0003: math skill flag
#                - 0x0004: animate on miss flag
#                - 0x0006: Unit misc ID // if no targets, X pos of effect (+ below)
#                - 0x0007: display type // if no targets, X pos of effect (+ above)
#                - 0x0008: ?            // if no targets, elevation of effect
#                - 0x000a: ?            // if no targets, Y pos of effect
#                appended:
#                - 0x00a4: 0?
#                - 0x00a6: caster misc ID

801add54: 27bdffe0 addiu r29,r29,-0x0020
801add58: afb10014 sw r17,0x0014(r29)
801add5c: 00808821 addu r17,r4,r0               #   animationID
801add60: afb20018 sw r18,0x0018(r29)
801add64: 00a09021 addu r18,r5,r0               #   elements
801add68: afb00010 sw r16,0x0010(r29)
801add6c: afbf001c sw r31,0x001c(r29)
801add70: 0c06b60a jal 0x801ad828               #   Shift Current Effect Target ID // returns current effect target ID
801add74: 00c08021 addu r16,r6,r0               #   p3
801add78: 304200ff andi r2,r2,0x00ff            #   
801add7c: 00021880 sll r3,r2,0x02               #   
801add80: 00621821 addu r3,r3,r2                #   
801add84: 00031880 sll r3,r3,0x02               #   
801add88: 00621821 addu r3,r3,r2                #   
801add8c: 00031880 sll r3,r3,0x02               #   Current effect target ID * 0x54
801add90: 3c01801c lui r1,0x801c
801add94: 00230821 addu r1,r1,r3
801add98: a4318ba0 sh r17,-0x7460(r1)           #   Store current secondary effect animation ID 
801add9c: 3c01801c lui r1,0x801c
801adda0: 00230821 addu r1,r1,r3
801adda4: 94248ba0 lhu r4,-0x7460(r1)           #   load secondary animation
801adda8: 3c01801c lui r1,0x801c
801addac: 00230821 addu r1,r1,r3
801addb0: a4208ba8 sh r0,-0x7458(r1)            #   reset effect progression counter
801addb4: 3c01801c lui r1,0x801c
801addb8: 00230821 addu r1,r1,r3
801addbc: a4328ba2 sh r18,-0x745e(r1)           #   store ability element
801addc0: 00042080 sll r4,r4,0x02               #   secondary anim ID * 4
801addc4: 3c01801c lui r1,0x801c
801addc8: 00240821 addu r1,r1,r4
801addcc: 902484dc lbu r4,-0x7b24(r1)           #   load secondary effect's function ID
801addd0: 3c01801c lui r1,0x801c
801addd4: 00230821 addu r1,r1,r3
801addd8: a0248b9f sb r4,-0x7461(r1)            #   store seconday anims effect function
801adddc: 3c04801c lui r4,0x801c
801adde0: 24848bac addiu r4,r4,-0x7454          #   effect target data table + 0x10
801adde4: 00642821 addu r5,r3,r4                #   effect target's data table + 0x10
801adde8: 8a0600a7 lwl r6,0x00a7(r16)
801addec: 9a0600a4 lwr r6,0x00a4(r16)           #   *(p3 + 0xa4)
801addf0: 8a0700ab lwl r7,0x00ab(r16)
801addf4: 9a0700a8 lwr r7,0x00a8(r16)           #   *(p3 + 0xa8)
801addf8: 860800ac lh r8,0x00ac(r16)            #   *(p3 + 0xac)
801addfc: a8a60003 swl r6,0x0003(r5)
801ade00: b8a60000 swr r6,0x0000(r5)            #   store misc. unit ID of target & caster to effect target data?
801ade04: a8a70007 swl r7,0x0007(r5)
801ade08: b8a70004 swr r7,0x0004(r5)            #   ?
801ade0c: a4a80008 sh r8,0x0008(r5)             #   ?
801ade10: 2484000a addiu r4,r4,0x000a           #   
801ade14: 00642021 addu r4,r3,r4                #   effect target's data table + 0x1a
801ade18: 8a050007 lwl r5,0x0007(r16)
801ade1c: 9a050004 lwr r5,0x0004(r16)           #   
801ade20: 8a06000b lwl r6,0x000b(r16)
801ade24: 9a060008 lwr r6,0x0008(r16)           #   *(p3 + 8)
801ade28: 8607000c lh r7,0x000c(r16)            #   *(p3 + 12)
801ade2c: a8850003 swl r5,0x0003(r4)
801ade30: b8850000 swr r5,0x0000(r4)            #   store hit# & x coordinate of target?
801ade34: a8860007 swl r6,0x0007(r4)
801ade38: b8860004 swr r6,0x0004(r4)            #   store map level & y coordinate of target?
801ade3c: a4870008 sh r7,0x0008(r4)             #   ?
801ade40: 960500c6 lhu r5,0x00c6(r16)           #   load used weapon ID
801ade44: 34040001 ori r4,r0,0x0001             #   1
801ade48: 3c01801c lui r1,0x801c
801ade4c: 00230821 addu r1,r1,r3
801ade50: ac248ba4 sw r4,-0x745c(r1)            #   set current secondary effect phase to initialised
801ade54: 3c01801c lui r1,0x801c
801ade58: 00230821 addu r1,r1,r3
801ade5c: ac258bc0 sw r5,-0x7440(r1)            #   store used weapon ID
801ade60: 8fbf001c lw r31,0x001c(r29)
801ade64: 8fb20018 lw r18,0x0018(r29)
801ade68: 8fb10014 lw r17,0x0014(r29)
801ade6c: 8fb00010 lw r16,0x0010(r29)
801ade70: 27bd0020 addiu r29,r29,0x0020
801ade74: 03e00008 jr r31
801ade78: 00000000 nop