Difference between revisions of "Non-Specific AI AutoBattle (Enemies)"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
Line 1: Line 1:
<font face='Courier New'>
+
Non-Specific AI AutoBattle (Enemies)
Non-Specific AI AutoBattle (Enemies) <font face='Courier New'>
+
 
 
+
*Note: 0x1f1 is the same as 0xe2d
  0019619c: 3c02801a lui r2,0x801a
+
 
  001961a0: 90420d7b lbu r2,0x0d7b(r2) load skillset/usage byte
+
0019619c: 3c02801a lui r2,0x801a
  001961a4: 27bdffe8 addiu r29,r29,0xffe8
+
001961a0: 90420d7b lbu r2,0x0d7b(r2) load skillset/usage byte
  001961a8: afb00010 sw r16,0x0010(r29)
+
001961a4: 27bdffe8 addiu r29,r29,0xffe8
  001961ac: 3c10801a lui r16,0x801a
+
001961a8: afb00010 sw r16,0x0010(r29)
  001961b0: 2610f3c4 addiu r16,r16,0xf3c4
+
001961ac: 3c10801a lui r16,0x801a
  001961b4: 1040000a beq r2,r0,0x001961e0 branch if none set
+
001961b0: 2610f3c4 addiu r16,r16,0xf3c4
  001961b8: afbf0014 sw r31,0x0014(r29)
+
001961b4: 1040000a beq r2,r0,0x001961e0 branch if none set
  001961bc: 3c03801a lui r3,0x801a
+
001961b8: afbf0014 sw r31,0x0014(r29)
  001961c0: 90630299 lbu r3,0x0299(r3) loda ??
+
001961bc: 3c03801a lui r3,0x801a
  001961c4: 34020004 ori r2,r0,0x0004
+
001961c0: 90630299 lbu r3,0x0299(r3) load Ability Use Ruling
  001961c8: 10620008 beq r3,r2,0x001961ec
+
001961c4: 34020004 ori r2,r0,0x0004
  001961cc: 34020002 ori r2,r0,0x0002
+
001961c8: 10620008 beq r3,r2,0x001961ec <Movement> if 4
  001961d0: 1062000f beq r3,r2,0x00196210
+
001961cc: 34020002 ori r2,r0,0x0002
  001961d4: 00000000 nop
+
001961d0: 1062000f beq r3,r2,0x00196210 <Charging> if 2
  001961d8: 08065894 j 0x00196250
+
001961d4: 00000000 nop
  001961dc: 00000000 nop
+
001961d8: 08065894 j 0x00196250 Else <Choose Current Ability>
  no skillset usage set
+
001961dc: 00000000 nop
  001961e0: 34020001 ori r2,r0,0x0001
+
 
  001961e4: 3c01801a lui r1,0x801a
+
no skillset usage set
  001961e8: a02201f1 sb r2,0x01f1(r1)
+
001961e0: 34020001 ori r2,r0,0x0001
 
+
001961e4: 3c01801a lui r1,0x801a
  001961ec: 0c0658e3 jal 0x0019638c [[Map movement decision/data setting]]
+
001961e8: a02201f1 sb r2,0x01f1(r1) Ability Decided = True (0x1f1 = 0xe2d)
  001961f0: 00000000 nop
+
 
  001961f4: 2403ffff addiu r3,r0,0xffff
+
001961ec: 0c0658e3 jal 0x0019638c Map movement decision/data setting
  001961f8: 1043001a beq r2,r3,0x00196264
+
001961f0: 00000000 nop
  001961fc: 34020004 ori r2,r0,0x0004
+
001961f4: 2403ffff addiu r3,r0,0xffff
  00196200: 0c0658c3 jal 0x0019630c [[0019630c - 00196388]]
+
001961f8: 1043001a beq r2,r3,0x00196264 Branch to Ability Ruling if needed position cannot be reached
  00196204: a2000e2d sb r0,0x0e2d(r16)
+
001961fc: 34020004 ori r2,r0,0x0004 Can't move into position
  00196208: 34020001 ori r2,r0,0x0001
+
00196200: 0c0658c3 jal 0x0019630c Find and Invert Target Priority?
  0019620c: a2020e2d sb r2,0x0e2d(r16)
+
00196204: a2000e2d sb r0,0x0e2d(r16) Ability Decided = False
 
+
00196208: 34020001 ori r2,r0,0x0001
  00196210: 0c0657e3 jal 0x00195f8c [[set current ability CT/status change]]
+
0019620c: a2020e2d sb r2,0x0e2d(r16) Ability Decided = True
  00196214: 00000000 nop
+
  00196218: 00401821 addu r3,r2,r0
+
00196210: 0c0657e3 jal 0x00195f8c Set/Remove Charging
  0019621c: 2402ffff addiu r2,r0,0xffff
+
00196214: 00000000 nop
  00196220: 10620010 beq r3,r2,0x00196264
+
00196218: 00401821 addu r3,r2,r0
  00196224: 34020002 ori r2,r0,0x0002
+
0019621c: 2402ffff addiu r2,r0,0xffff
  00196228: 34020001 ori r2,r0,0x0001
+
00196220: 10620010 beq r3,r2,0x00196264 Ability Ruling because RNG said so
  0019622c: 10620017 beq r3,r2,0x0019628c
+
00196224: 34020002 ori r2,r0,0x0002 RNG said no (taking too long to decide?)
  00196230: 00001021 addu r2,r0,r0
+
00196228: 34020001 ori r2,r0,0x0001
  00196234: 34020001 ori r2,r0,0x0001
+
0019622c: 10620017 beq r3,r2,0x0019628c Exit if lower than the current Highest Priority
  00196238: a2020e2d sb r2,0x0e2d(r16)
+
00196230: 00001021 addu r2,r0,r0
  0019623c: 00002021 addu r4,r0,r0
+
00196234: 34020001 ori r2,r0,0x0001
  00196240: 0c065f43 jal 0x00197d0c [[Find which units are active?]]
+
00196238: a2020e2d sb r2,0x0e2d(r16) Ability Decided = True?
  00196244: 00002821 addu r5,r0,r0
+
0019623c: 00002021 addu r4,r0,r0 Set Look for any unit
  00196248: 10400009 beq r2,r0,0x00196270
+
00196240: 0c065f43 jal 0x00197d0c Find which units are active
  0019624c: 00000000 nop
+
00196244: 00002821 addu r5,r0,r0 Set Look for self
  00196250: 0c065f98 jal 0x00197e60 [[00197e60 - 00197f10]]
+
00196248: 10400009 beq r2,r0,0x00196270 Branch if no units are active
  00196254: 00000000 nop
+
0019624c: 00000000 nop
  00196258: 2403ffff addiu r3,r0,0xffff
+
 
  0019625c: 14430004 bne r2,r3,0x00196270
+
<Choose Current Ability>
  00196260: 34020007 ori r2,r0,0x0007
+
00196250: 0c065f98 jal 0x00197e60 Decide if AI will choose Ability(Chose move from movelist)
 
+
00196254: 00000000 nop
  00196264: a2020ed5 sb r2,0x0ed5(r16)
+
00196258: 2403ffff addiu r3,r0,0xffff
  00196268: 080658a3 j 0x0019628c
+
0019625c: 14430004 bne r2,r3,0x00196270 <Transfer Data Randomly> if AI choose to use this ability
  0019626c: 2402ffff addiu r2,r0,0xffff
+
00196260: 34020007 ori r2,r0,0x0007 Chose not to use ability
  00196270: 0c065c2f jal 0x001970bc [[001970bc - 001971b4]]
+
 
  00196274: 00000000 nop
+
<Ability Ruling>
  00196278: 14400004 bne r2,r0,0x0019628c
+
00196264: a2020ed5 sb r2,0x0ed5(r16) Save Ability Ruling (Denied by Frame Data, Can't move into position, Chose not to use ability)
  0019627c: 00001021 addu r2,r0,r0
+
00196268: 080658a3 j 0x0019628c Exit and return -1
  00196280: 0c066526 jal 0x00199498 [[00199498 - 001994f4]]
+
0019626c: 2402ffff addiu r2,r0,0xffff
  00196284: a2000e2d sb r0,0x0e2d(r16)
+
 
  00196288: 00001021 addu r2,r0,r0
+
<Transfer Data Randomly>
 
+
00196270: 0c065c2f jal 0x001970bc Transfer Data based on RNG
  0019628c: 8fbf0014 lw r31,0x0014(r29)
+
00196274: 00000000 nop
  00196290: 8fb00010 lw r16,0x0010(r29)
+
00196278: 14400004 bne r2,r0,0x0019628c Exit and return 0 if successfully transfered data
  00196294: 27bd0018 addiu r29,r29,0x0018
+
0019627c: 00001021 addu r2,r0,r0
  00196298: 03e00008 jr r31
+
00196280: 0c066526 jal 0x00199498 Reset Ability Choice Data? (Target Flags?)
  0019629c: 00000000 nop
+
00196284: a2000e2d sb r0,0x0e2d(r16) Ability Decided = False
</font></font>
+
00196288: 00001021 addu r2,r0,r0
 +
 
 +
0019628c: 8fbf0014 lw r31,0x0014(r29)
 +
00196290: 8fb00010 lw r16,0x0010(r29)
 +
00196294: 27bd0018 addiu r29,r29,0x0018
 +
00196298: 03e00008 jr r31
 +
0019629c: 00000000 nop

Revision as of 23:46, 8 March 2017

Non-Specific AI AutoBattle (Enemies)
*Note: 0x1f1 is the same as 0xe2d
0019619c: 3c02801a lui r2,0x801a
001961a0: 90420d7b lbu r2,0x0d7b(r2)				load skillset/usage byte
001961a4: 27bdffe8 addiu r29,r29,0xffe8	
001961a8: afb00010 sw r16,0x0010(r29)	
001961ac: 3c10801a lui r16,0x801a	
001961b0: 2610f3c4 addiu r16,r16,0xf3c4	
001961b4: 1040000a beq r2,r0,0x001961e0				branch if none set
001961b8: afbf0014 sw r31,0x0014(r29)	
001961bc: 3c03801a lui r3,0x801a	
001961c0: 90630299 lbu r3,0x0299(r3)				load Ability Use Ruling
001961c4: 34020004 ori r2,r0,0x0004
001961c8: 10620008 beq r3,r2,0x001961ec				<Movement> if 4
001961cc: 34020002 ori r2,r0,0x0002
001961d0: 1062000f beq r3,r2,0x00196210				<Charging> if 2
001961d4: 00000000 nop
001961d8: 08065894 j 0x00196250						Else <Choose Current Ability>
001961dc: 00000000 nop
no skillset usage set
001961e0: 34020001 ori r2,r0,0x0001
001961e4: 3c01801a lui r1,0x801a
001961e8: a02201f1 sb r2,0x01f1(r1)					Ability Decided = True (0x1f1 = 0xe2d)
001961ec: 0c0658e3 jal 0x0019638c					Map movement decision/data setting
001961f0: 00000000 nop		
001961f4: 2403ffff addiu r3,r0,0xffff		
001961f8: 1043001a beq r2,r3,0x00196264				Branch to Ability Ruling if needed position cannot be reached
001961fc: 34020004 ori r2,r0,0x0004					Can't move into position
00196200: 0c0658c3 jal 0x0019630c					Find and Invert Target Priority?
00196204: a2000e2d sb r0,0x0e2d(r16)				Ability Decided = False		
00196208: 34020001 ori r2,r0,0x0001		
0019620c: a2020e2d sb r2,0x0e2d(r16)				Ability Decided = True
		
00196210: 0c0657e3 jal 0x00195f8c					Set/Remove Charging
00196214: 00000000 nop
00196218: 00401821 addu r3,r2,r0
0019621c: 2402ffff addiu r2,r0,0xffff
00196220: 10620010 beq r3,r2,0x00196264				Ability Ruling because RNG said so
00196224: 34020002 ori r2,r0,0x0002					RNG said no (taking too long to decide?)
00196228: 34020001 ori r2,r0,0x0001
0019622c: 10620017 beq r3,r2,0x0019628c				Exit if lower than the current Highest Priority
00196230: 00001021 addu r2,r0,r0
00196234: 34020001 ori r2,r0,0x0001
00196238: a2020e2d sb r2,0x0e2d(r16)				Ability Decided = True?
0019623c: 00002021 addu r4,r0,r0					Set Look for any unit
00196240: 0c065f43 jal 0x00197d0c					Find which units are active
00196244: 00002821 addu r5,r0,r0					Set Look for self
00196248: 10400009 beq r2,r0,0x00196270				Branch if no units are active
0019624c: 00000000 nop
<Choose Current Ability>		
00196250: 0c065f98 jal 0x00197e60					Decide if AI will choose Ability(Chose move from movelist)
00196254: 00000000 nop		
00196258: 2403ffff addiu r3,r0,0xffff		
0019625c: 14430004 bne r2,r3,0x00196270				<Transfer Data Randomly> if AI choose to use this ability
00196260: 34020007 ori r2,r0,0x0007					Chose not to use ability
<Ability Ruling>
00196264: a2020ed5 sb r2,0x0ed5(r16)				Save Ability Ruling (Denied by Frame Data, Can't move into position, Chose not to use ability)
00196268: 080658a3 j 0x0019628c						Exit and return -1
0019626c: 2402ffff addiu r2,r0,0xffff
<Transfer Data Randomly>
00196270: 0c065c2f jal 0x001970bc					Transfer Data based on RNG
00196274: 00000000 nop		
00196278: 14400004 bne r2,r0,0x0019628c				Exit and return 0 if successfully transfered data
0019627c: 00001021 addu r2,r0,r0		
00196280: 0c066526 jal 0x00199498					Reset Ability Choice Data? (Target Flags?)
00196284: a2000e2d sb r0,0x0e2d(r16)				Ability Decided = False
00196288: 00001021 addu r2,r0,r0
0019628c: 8fbf0014 lw r31,0x0014(r29)
00196290: 8fb00010 lw r16,0x0010(r29)
00196294: 27bd0018 addiu r29,r29,0x0018
00196298: 03e00008 jr r31
0019629c: 00000000 nop