Difference between revisions of "Current Action Data Nulling"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
(Created page with " 0018bd74: 27bdffe8 addiu r29,r29,0xffe8 0018bd78: afb00010 sw r16,0x0010(r29) 0018bd7c: 00808021 addu r16,r4,r0 r16 = Unit's Current Action Data Pointer 0018bd80: afbf001...")
 
m (Notes in return links)
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
  0018bd74: 27bdffe8 addiu r29,r29,0xffe8
+
Need r4 = Unit data pointer
  0018bd78: afb00010 sw r16,0x0010(r29)
+
Reset most of unit action data from 0x00 to 0x29  --> See [[Data/Table_Locations#Current Action Data|Current Action Data]]
  0018bd7c: 00808021 addu r16,r4,r0 r16 = Unit's Current Action Data Pointer
+
Preserve : - Current action reaction ID (halfword at +0x0e)
  0018bd80: afbf0014 sw r31,0x0014(r29)
+
            - Last attack recieved ID (halfword at +0x26)
  0018bd84: 0c017991 jal 0x0005e644 [[Data Nullifying]]
+
Set hit% to 100% and hit flag to "hit"
  0018bd88: 3405000e ori r5,r0,0x000e Limit = 0xe (0x0-0xd)
+
----------------------------------------------
  0018bd8c: 26040010 addiu r4,r16,0x0010 r4 = UCADP + 0x10
+
  0018bd74: 27bdffe8 addiu r29,r29,0xffe8     |
  0018bd90: 0c017991 jal 0x0005e644 [[Data Nullifying]]
+
  0018bd78: afb00010 sw r16,0x0010(r29)       |
  0018bd94: 34050016 ori r5,r0,0x0016 Limit = 0x16 (0x10-0x25)
+
  0018bd7c: 00808021 addu r16,r4,r0           |{{f/adr|<nowiki>r16 = Unit's Current Action Data ( = UCAD) Pointer </nowiki>}}
  0018bd98: 26040028 addiu r4,r16,0x0028 r4 = UCDAP + 0x28
+
  0018bd80: afbf0014 sw r31,0x0014(r29)       |
  0018bd9c: 0c017991 jal 0x0005e644 [[Data Nullifying]]
+
  0018bd84: 0c017991 jal 0x0005e644           |{{f/jal|Data Nullifying|<nowiki>Data Nullifying</nowiki>}} Nullify data from UCAD 0x00 (hit flag) to UCAD 0x0d (gil stolen)
  0018bda0: 34050002 ori r5,r0,0x0002 Limit = 2 (0x28-0x29)
+
  0018bd88: 3405000e ori r5,r0,0x000e         |{{f/std|<nowiki>r5 = 0x0e (number of byte to delete)</nowiki>}}
  0018bda4: 02002021 addu r4,r16,r0 r4 = Unit's Current Action Data Pointer
+
  0018bd8c: 26040010 addiu r4,r16,0x0010     |{{f/std|<nowiki>r4 = UCADP + 0x10</nowiki>}}
  0018bda8: 34020064 ori r2,r0,0x0064 Hit% = 100
+
  0018bd90: 0c017991 jal 0x0005e644           |{{f/jal|Data Nullifying|<nowiki>Data Nullifying</nowiki>}} Nullify data from UCAD 0x10 (special flags) to UCAD 0x25 (Attack type)
  0018bdac: a482002a sh r2,0x002a(r4) Store Hit%
+
  0018bd94: 34050016 ori r5,r0,0x0016         |{{f/std|<nowiki>r5 = 0x16 (number of byte to delete)</nowiki>}}
  0018bdb0: 34020001 ori r2,r0,0x0001 r2 = 1 (Hit)
+
  0018bd98: 26040028 addiu r4,r16,0x0028     |{{f/std|<nowiki>r4 = UCDAP + 0x28</nowiki>}}
  0018bdb4: a0800025 sb r0,0x0025(r4) Store Attack Type = 0 (Already done above)
+
  0018bd9c: 0c017991 jal 0x0005e644           |{{f/jal|Data Nullifying|<nowiki>Data Nullifying</nowiki>}} Nullify data from UCAD 0x28 and UCAD 0x29 (stolen xp and jp)
  0018bdb8: 0c062f75 jal 0x0018bdd4 [[Null Some Status Data]]
+
  0018bda0: 34050002 ori r5,r0,0x0002         |{{f/std|<nowiki>r5 = 0x02 (number of byte to delete)</nowiki>}}
  0018bdbc: a0820000 sb r2,0x0000(r4) Store Hit Flag = Hit
+
  0018bda4: 02002021 addu r4,r16,r0           |{{f/std|<nowiki>r4 = Unit's Current Action Data Pointer</nowiki>}}
  0018bdc0: 8fbf0014 lw r31,0x0014(r29)
+
  0018bda8: 34020064 ori r2,r0,0x0064         |{{f/std|<nowiki>r2 = 0x064 (=100)</nowiki>}}
  0018bdc4: 8fb00010 lw r16,0x0010(r29)
+
  0018bdac: a482002a sh r2,0x002a(r4)         |{{f/store|<nowiki>Store UCAD Hit% = 100%</nowiki>}}
  0018bdc8: 27bd0018 addiu r29,r29,0x0018
+
  0018bdb0: 34020001 ori r2,r0,0x0001         |{{f/std|<nowiki>r2 = 0x01</nowiki>}}
  0018bdcc: 03e00008 jr r31
+
  0018bdb4: a0800025 sb r0,0x0025(r4)         |{{f/store|<nowiki>Store UCAD Attack Type = 0 (Already done above ?)</nowiki>}}
  0018bdd0: 00000000 nop
+
  0018bdb8: 0c062f75 jal 0x0018bdd4           |{{f/jal|Null Some Status Data|<nowiki>Null Some Status Data</nowiki>}} Nullify UCAD Statuses infliction and removal sections - Nullify UCAD status to cancel ( 0x80193860 )
 +
  0018bdbc: a0820000 sb r2,0x0000(r4)         |{{f/store|<nowiki>Store UCAD Hit Flag = Hit</nowiki>}}
 +
  0018bdc0: 8fbf0014 lw r31,0x0014(r29)       |End
 +
  0018bdc4: 8fb00010 lw r16,0x0010(r29)      
 +
  0018bdc8: 27bd0018 addiu r29,r29,0x0018    
 +
  0018bdcc: 03e00008 jr r31                  
 +
  0018bdd0: 00000000 nop    
 +
===Return Locations===
 +
0017ced4: [[Main_ability_loading_routine%3F]] - Attacker current action (at 0x801908cc + Attacker ID)
 +
0017cef0: [[Main_ability_loading_routine%3F]] - at 0x80192da0 (copy of attacker action ?)
 +
0017f248: [[Calculate_Projected_Action_Effect]]
 +
00180040: [[Set_target_for_mounted_unit,_move_find_item/trap]]
 +
00180924: [[Learn_from_Crystal]]
 +
00183098: [[Death_sentence,_crystalization,_treasurization,_etc]]
 +
0018ae0c: [[Action data nulling]] - Target current action
 +
0018ae1c: [[Action data nulling]] - Attacker current action
 +
0018da34: [[Set_Action_Target_Variables]]
 +
0018db28: [[Poison_Marsh_Routine]]
 +
0018dc2c: [[Traps_Routine]]
 +
0018dd7c: [[Move-HP_Up,_Move-MP_Up,_Gained_Exp_Up]]

Latest revision as of 20:44, 1 December 2021

Need r4 = Unit data pointer 
Reset most of unit action data from 0x00 to 0x29   --> See Current Action Data
Preserve : - Current action reaction ID (halfword at +0x0e)
           - Last attack recieved ID (halfword at +0x26)
Set hit% to 100% and hit flag to "hit"
----------------------------------------------
0018bd74: 27bdffe8 addiu r29,r29,0xffe8     |
0018bd78: afb00010 sw r16,0x0010(r29)       |
0018bd7c: 00808021 addu r16,r4,r0           |r16 = Unit's Current Action Data ( = UCAD) Pointer  
0018bd80: afbf0014 sw r31,0x0014(r29)       |
0018bd84: 0c017991 jal 0x0005e644           |-->Data Nullifying Nullify data from UCAD 0x00 (hit flag) to UCAD 0x0d (gil stolen)
0018bd88: 3405000e ori r5,r0,0x000e         |r5 = 0x0e (number of byte to delete)
0018bd8c: 26040010 addiu r4,r16,0x0010      |r4 = UCADP + 0x10
0018bd90: 0c017991 jal 0x0005e644           |-->Data Nullifying Nullify data from UCAD 0x10 (special flags) to UCAD 0x25 (Attack type)
0018bd94: 34050016 ori r5,r0,0x0016         |r5 = 0x16 (number of byte to delete)
0018bd98: 26040028 addiu r4,r16,0x0028      |r4 = UCDAP + 0x28
0018bd9c: 0c017991 jal 0x0005e644           |-->Data Nullifying Nullify data from UCAD 0x28 and UCAD 0x29 (stolen xp and jp)
0018bda0: 34050002 ori r5,r0,0x0002         |r5 = 0x02 (number of byte to delete)
0018bda4: 02002021 addu r4,r16,r0           |r4 = Unit's Current Action Data Pointer
0018bda8: 34020064 ori r2,r0,0x0064         |r2 = 0x064 (=100)
0018bdac: a482002a sh r2,0x002a(r4)         |Store UCAD Hit% = 100%
0018bdb0: 34020001 ori r2,r0,0x0001         |r2 = 0x01
0018bdb4: a0800025 sb r0,0x0025(r4)         |Store UCAD Attack Type = 0 (Already done above ?)
0018bdb8: 0c062f75 jal 0x0018bdd4           |-->Null Some Status Data Nullify UCAD Statuses infliction and removal sections - Nullify UCAD status to cancel ( 0x80193860 )
0018bdbc: a0820000 sb r2,0x0000(r4)         |Store UCAD Hit Flag = Hit
0018bdc0: 8fbf0014 lw r31,0x0014(r29)       |End
0018bdc4: 8fb00010 lw r16,0x0010(r29)       
0018bdc8: 27bd0018 addiu r29,r29,0x0018     
0018bdcc: 03e00008 jr r31                   
0018bdd0: 00000000 nop     

Return Locations

0017ced4: Main_ability_loading_routine? - Attacker current action (at 0x801908cc + Attacker ID)
0017cef0: Main_ability_loading_routine? - at 0x80192da0 (copy of attacker action ?)
0017f248: Calculate_Projected_Action_Effect
00180040: Set_target_for_mounted_unit,_move_find_item/trap
00180924: Learn_from_Crystal
00183098: Death_sentence,_crystalization,_treasurization,_etc
0018ae0c: Action data nulling - Target current action
0018ae1c: Action data nulling - Attacker current action
0018da34: Set_Action_Target_Variables
0018db28: Poison_Marsh_Routine 
0018dc2c: Traps_Routine
0018dd7c: Move-HP_Up,_Move-MP_Up,_Gained_Exp_Up