Difference between revisions of "4B Heal (Rdm(1..9)) 100% Status"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
m (Wrong indent.)
(fixes the note taking to synergize with other pages)
Line 2: Line 2:
 
  0018a2ec: 27bdffe8 addiu r29,r29,0xffe8     
 
  0018a2ec: 27bdffe8 addiu r29,r29,0xffe8     
 
  0018a2f0: afbf0010 sw r31,0x0010(r29)       
 
  0018a2f0: afbf0010 sw r31,0x0010(r29)       
  0018a2f4: 0c062b37 jal 0x[[0018acdc]]          Add Status at 100%; must add or item fails.
+
  0018a2f4: 0c062b37 jal 0x[[0018acdc]]          checks if status adds
 
  0018a2f8: 00000000 nop                       
 
  0018a2f8: 00000000 nop                       
  0018a2fc: 10400024 beq r2,r0,0x0018a390     
+
  0018a2fc: 10400024 beq r2,r0,0x0018a390    Branches if status does not add
 
  0018a300: 00000000 nop                       
 
  0018a300: 00000000 nop                       
  0018a304: 3c048019 lui r4,0x8019             
+
0018a304: 3c048019 lui r4,0x8019             
  0018a308: 8c842d98 lw r4,0x2d98(r4)         
+
0018a308: 8c842d98 lw r4,0x2d98(r4)        Loads Target data pointer
  0018a30c: 00000000 nop                       
+
0018a30c: 00000000 nop                       
  0018a310: 90820058 lbu r2,0x0058(r4)         
+
0018a310: 90820058 lbu r2,0x0058(r4)        Loads Current statuses
  0018a314: 00000000 nop                       
+
0018a314: 00000000 nop                       
  IF r2 & 0x10 != 0:
+
0018a318: 30420010 andi r2,r2,0x0010        checks for undead
  0018a318: 30420010 andi r2,r2,0x0010         
+
0018a31c: 10400006 beq r2,r0,0x0018a338    Branches if not undead
  0018a31c: 10400006 beq r2,r0,0x0018a338     
+
0018a320: 00000000 nop                       
  0018a320: 00000000 nop                       
+
0018a324: 3c038019 lui r3,0x8019             
  THEN:
+
0018a328: 8c632d90 lw r3,0x2d90(r3)        loads target current action data
    0018a324: 3c038019 lui r3,0x8019            Run only if undead.
+
0018a32c: 94820028 lhu r2,0x0028(r4)        Load Target current HP
    0018a328: 8c632d90 lw r3,0x2d90(r3)         
+
0018a330: 080628e2 j 0x0018a388            jumps to jump to undead reversal
    0018a32c: 94820028 lhu r2,0x0028(r4)        Load Target curHP
+
0018a334: 00000000 nop
    0018a330: 080628e2 j 0x0018a388            Skip to damage if undead
+
0018a338: 0c063ba8 jal 0x[[0018eea0]]          Load random number between 0 and 0x7fff
    0018a334: 00000000 nop                    
+
0018a33c: 00000000 nop                       
  ELSE:
+
0018a340: 3c038019 lui r3,0x8019             
    0018a338: 0c063ba8 jal 0x[[0018eea0]]          Load RN between 0 and 1
+
0018a344: 906338db lbu r3,0x38db(r3)        Load used Item ID
    0018a33c: 00000000 nop                       
+
0018a348: 00000000 nop                       
    0018a340: 3c038019 lui r3,0x8019             
+
0018a34c: 00032040 sll r4,r3,0x01          Item ID * 2
    0018a344: 906338db lbu r3,0x38db(r3)        Load item used
+
0018a350: 00832021 addu r4,r4,r3            ID * 3
    0018a348: 00000000 nop                       
+
0018a354: 3c018006 lui r1,0x8006             
    0018a34c: 00032040 sll r4,r3,0x01          Item ID * 2
+
0018a358: 00240821 addu r1,r1,r4             
    0018a350: 00832021 addu r4,r4,r3            ID * 3
+
0018a35c: 90233f99 lbu r3,0x3f99(r1)        Load Item's Z
    0018a354: 3c018006 lui r1,0x8006             
+
0018a360: 00000000 nop                       
    0018a358: 00240821 addu r1,r1,r4             
+
0018a364: 00430018 mult r2,r3              Multiply Random Number by item's Z
    0018a35c: 90233f99 lbu r3,0x3f99(r1)        Load Z
+
0018a368: 3c038019 lui r3,0x8019             
    0018a360: 00000000 nop                       
+
0018a36c: 8c632d90 lw r3,0x2d90(r3)        load target current action data pointer
    0018a364: 00430018 mult r2,r3               
+
0018a370: 00001012 mflo r2                  Load Z * RN
    0018a368: 3c038019 lui r3,0x8019             
+
0018a374: 04410002 bgez r2,0x0018a380      Branches if result greater than or equal to 0
    0018a36c: 8c632d90 lw r3,0x2d90(r3)         
+
0018a378: 00000000 nop                       
    0018a370: 00001012 mflo r2                  Load Z * RN
+
0018a37c: 24427fff addiu r2,r2,0x7fff      if, when number is signed, the result is a negative, add it (when unsigned) to an immediate. this is a very blaring error in the code
    0018a374: 04410002 bgez r2,0x0018a380       
+
0018a380: 000213c3 sra r2,r2,0x0f          divide number by 2^15, effectively setting to 0 UNLESS the number was prefaced with a negative sign previously. usually results in 0 due to chance.
    0018a378: 00000000 nop                       
+
0018a384: 24420001 addiu r2,r2,0x0001      adds 1 to this number. usually results in 1
      0018a37c: 24427fff addiu r2,r2,0x7fff       
+
0018a388: 0c061cd4 jal 0x[[00187350]]          Undead Reversal
    0018a380: 000213c3 sra r2,r2,0x0f           
+
0018a38c: a4620004 sh r2,0x0004(r3)        Store as HP Damage (Changed to healing by above routine)
    0018a384: 24420001 addiu r2,r2,0x0001       
 
  0018a388: 0c061cd4 jal 0x[[00187350]]          Undead Reversal
 
  0018a38c: a4620004 sh r2,0x0004(r3)        Store as HP Damage (Changed to healing by above routine)
 
RETURN:
 
 
  0018a390: 8fbf0010 lw r31,0x0010(r29)       
 
  0018a390: 8fbf0010 lw r31,0x0010(r29)       
 
  0018a394: 27bd0018 addiu r29,r29,0x0018     
 
  0018a394: 27bd0018 addiu r29,r29,0x0018     
 
  0018a398: 03e00008 jr r31                   
 
  0018a398: 03e00008 jr r31                   
 
  0018a39c: 00000000 nop
 
  0018a39c: 00000000 nop

Revision as of 11:50, 22 December 2020

[4b] Remove status and restore Rand(1..(X-1)) HP
0018a2ec: 27bdffe8 addiu r29,r29,0xffe8     
0018a2f0: afbf0010 sw r31,0x0010(r29)       
0018a2f4: 0c062b37 jal 0x0018acdc           checks if status adds
0018a2f8: 00000000 nop                      
0018a2fc: 10400024 beq r2,r0,0x0018a390     Branches if status does not add
0018a300: 00000000 nop                      
0018a304: 3c048019 lui r4,0x8019            
0018a308: 8c842d98 lw r4,0x2d98(r4)         Loads Target data pointer
0018a30c: 00000000 nop                      
0018a310: 90820058 lbu r2,0x0058(r4)        Loads Current statuses
0018a314: 00000000 nop                      
0018a318: 30420010 andi r2,r2,0x0010        checks for undead
0018a31c: 10400006 beq r2,r0,0x0018a338     Branches if not undead
0018a320: 00000000 nop                      
0018a324: 3c038019 lui r3,0x8019            
0018a328: 8c632d90 lw r3,0x2d90(r3)         loads target current action data
0018a32c: 94820028 lhu r2,0x0028(r4)        Load Target current HP
0018a330: 080628e2 j 0x0018a388             jumps to jump to undead reversal
0018a334: 00000000 nop
0018a338: 0c063ba8 jal 0x0018eea0           Load random number between 0 and 0x7fff
0018a33c: 00000000 nop                      
0018a340: 3c038019 lui r3,0x8019            
0018a344: 906338db lbu r3,0x38db(r3)        Load used Item ID
0018a348: 00000000 nop                      
0018a34c: 00032040 sll r4,r3,0x01           Item ID * 2
0018a350: 00832021 addu r4,r4,r3            ID * 3
0018a354: 3c018006 lui r1,0x8006            
0018a358: 00240821 addu r1,r1,r4            
0018a35c: 90233f99 lbu r3,0x3f99(r1)        Load Item's Z
0018a360: 00000000 nop                      
0018a364: 00430018 mult r2,r3               Multiply Random Number by item's Z
0018a368: 3c038019 lui r3,0x8019            
0018a36c: 8c632d90 lw r3,0x2d90(r3)         load target current action data pointer
0018a370: 00001012 mflo r2                  Load Z * RN
0018a374: 04410002 bgez r2,0x0018a380       Branches if result greater than or equal to 0
0018a378: 00000000 nop                      
0018a37c: 24427fff addiu r2,r2,0x7fff       if, when number is signed, the result is a negative, add it (when unsigned) to an immediate. this is a very blaring error in the code
0018a380: 000213c3 sra r2,r2,0x0f           divide number by 2^15, effectively setting to 0 UNLESS the number was prefaced with a negative sign previously. usually results in 0 due to chance.
0018a384: 24420001 addiu r2,r2,0x0001       adds 1 to this number. usually results in 1
0018a388: 0c061cd4 jal 0x00187350           Undead Reversal
0018a38c: a4620004 sh r2,0x0004(r3)         Store as HP Damage (Changed to healing by above routine)
0018a390: 8fbf0010 lw r31,0x0010(r29)       
0018a394: 27bd0018 addiu r29,r29,0x0018     
0018a398: 03e00008 jr r31                   
0018a39c: 00000000 nop