Difference between revisions of "Effect Code Script 0x1d"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
(added link to duplicate routine)
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
 +
Duplicate routine: [[Effect_code_script_1D_-_check_timer_against_effect_duration]]
 
  801a2c28: 3c02801c lui r2,0x801c
 
  801a2c28: 3c02801c lui r2,0x801c
 
  801a2c2c: 8c42bf84 lw r2,-0x407c(r2)                #  *0x801bbf84 // Misc. Timed display pointer
 
  801a2c2c: 8c42bf84 lw r2,-0x407c(r2)                #  *0x801bbf84 // Misc. Timed display pointer
 
  801a2c30: 84830028 lh r3,0x0028(r4)                #  effectBlock.0x28 // current effect timer
 
  801a2c30: 84830028 lh r3,0x0028(r4)                #  effectBlock.0x28 // current effect timer
  801a2c34: 94420002 lhu r2,0x0002(r2)                #  *(*0x801bbf84 + 2) // ?
+
  801a2c34: 94420002 lhu r2,0x0002(r2)                #  *(*0x801bbf84 + 2) // effect length
 
  801a2c38: 00000000 nop
 
  801a2c38: 00000000 nop
 
  801a2c3c: 0062182a slt r3,r3,r2                     
 
  801a2c3c: 0062182a slt r3,r3,r2                     
  801a2c40: 14600008 bne r3,r0,0x801a2c64            #  if (effectBlock.0x28 >= *(*0x801bbf84 + 2)) { // branch if timer is not yet at minimum timer for...?
+
  801a2c40: 14600008 bne r3,r0,0x801a2c64            #  if (effectBlock.0x28 >= *(*0x801bbf84 + 2)) { // branch if timer is not yet at effect length
 
  801a2c44: 00000000 nop
 
  801a2c44: 00000000 nop
 
  801a2c48: 84820006 lh r2,0x0006(r4)                #      effectBlock.offset
 
  801a2c48: 84820006 lh r2,0x0006(r4)                #      effectBlock.offset
Line 13: Line 14:
 
  801a2c58: 94420002 lhu r2,0x0002(r2)                #      *(commandPtr + 2)
 
  801a2c58: 94420002 lhu r2,0x0002(r2)                #      *(commandPtr + 2)
 
  801a2c5c: 08068b1d j 0x801a2c74
 
  801a2c5c: 08068b1d j 0x801a2c74
  801a2c60: a4820006 sh r2,0x0006(r4)                #      effectBlock.offset = *(commandPtr + 2) // set script counter to arg2 (if exceeded minimum timer?)
+
  801a2c60: a4820006 sh r2,0x0006(r4)                #      effectBlock.offset = *(commandPtr + 2) // set script counter to arg2 if exceeded max timer.
 
                                                     #  } else {
 
                                                     #  } else {
 
  801a2c64: 94820006 lhu r2,0x0006(r4)                #      effectBlock.offset
 
  801a2c64: 94820006 lhu r2,0x0006(r4)                #      effectBlock.offset

Latest revision as of 17:50, 26 April 2025

Duplicate routine: Effect_code_script_1D_-_check_timer_against_effect_duration

801a2c28: 3c02801c lui r2,0x801c
801a2c2c: 8c42bf84 lw r2,-0x407c(r2)                #   *0x801bbf84							// Misc. Timed display pointer
801a2c30: 84830028 lh r3,0x0028(r4)                 #   effectBlock.0x28						// current effect timer
801a2c34: 94420002 lhu r2,0x0002(r2)                #   *(*0x801bbf84 + 2)						// effect length
801a2c38: 00000000 nop
801a2c3c: 0062182a slt r3,r3,r2                     
801a2c40: 14600008 bne r3,r0,0x801a2c64             #   if (effectBlock.0x28 >= *(*0x801bbf84 + 2)) {			// branch if timer is not yet at effect length
801a2c44: 00000000 nop
801a2c48: 84820006 lh r2,0x0006(r4)                 #       effectBlock.offset
801a2c4c: 8c830008 lw r3,0x0008(r4)                 #       effectBlock.basePointer
801a2c50: 00000000 nop
801a2c54: 00431021 addu r2,r2,r3                    #       commandPtr = effectBlock.offset + effectBlock.basePointer
801a2c58: 94420002 lhu r2,0x0002(r2)                #       *(commandPtr + 2)
801a2c5c: 08068b1d j 0x801a2c74
801a2c60: a4820006 sh r2,0x0006(r4)                 #       effectBlock.offset = *(commandPtr + 2)			// set script counter to arg2 if exceeded max timer.
                                                    #   } else {
801a2c64: 94820006 lhu r2,0x0006(r4)                #       effectBlock.offset
801a2c68: 00000000 nop
801a2c6c: 24420004 addiu r2,r2,0x0004               #       effectBlock.offset + 4					// else add 4, execute next instruction.
801a2c70: a4820006 sh r2,0x0006(r4)                 #       effectBlock.offset = effectBlock.offset + 4
                                                    #   }
801a2c74: 03e00008 jr r31                           #   return 1;
801a2c78: 34020001 ori r2,r0,0x0001