Difference between revisions of "User:Dokurider"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
(Do user pages have different editing than normal pages?? Well fuck it, I'll figure it out later.)
m
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
Planned Uploads (Formatting, etc.)
+
TODO:
 +
Rename all the links in Battle Bin I changed
 +
Explain every routine that I can
 +
Link every routine I uploaded to where it coming from and what routines it calls
 +
And link them
 +
Straighten up comments
 +
Organize every routine I uploaded onto this very page for ease of searching
  
198b04 - Find Peril Most Unit
+
For now, just look at my user contribution page if you need to find what I worked on
 +
  
00198b04: 3c03801a lui r3,0x801a
+
AI Routines:
00198b08: 8c630bbc lw r3,0x0bbc(r3)            Acting unit data
+
00198b0c: 3c02801a lui r2,0x801a
 
00198b10: 904201f2 lbu r2,0x01f2(r2)          Acting unit id
 
00198b14: 27bdffc8 addiu r29,r29,0xffc8
 
00198b18: afb40020 sw r20,0x0020(r29)
 
00198b1c: 3c14801a lui r20,0x801a
 
00198b20: 2694f3c4 addiu r20,r20,0xf3c4
 
00198b24: afbe0030 sw r30,0x0030(r29)
 
00198b28: 0000f021 addu r30,r0,r0
 
00198b2c: afb20018 sw r18,0x0018(r29)
 
00198b30: 00009021 addu r18,r0,r0
 
00198b34: afb7002c sw r23,0x002c(r29)
 
00198b38: 0000b821 addu r23,r0,r0
 
00198b3c: afbf0034 sw r31,0x0034(r29)
 
00198b40: afb60028 sw r22,0x0028(r29)
 
00198b44: afb50024 sw r21,0x0024(r29)
 
00198b48: afb3001c sw r19,0x001c(r29)
 
00198b4c: afb10014 sw r17,0x0014(r29)
 
00198b50: afb00010 sw r16,0x0010(r29)
 
00198b54: a06201b9 sb r2,0x01b9(r3) Save Acting Unit ID
 
00198b58: 3c028019 lui r2,0x8019
 
00198b5c: 244208cc addiu r2,r2,0x08cc Unit Data
 
00198b60: 00121900 sll r3,r18,0x04
 
00198b64: 2463182c addiu r3,r3,0x182c
 
00198b68: 02838821 addu r17,r20,r3
 
00198b6c: 92230007 lbu r3,0x0007(r17)          AI Target State
 
00198b70: 00000000 nop
 
00198b74: 30630010 andi r3,r3,0x0010
 
00198b78: 1460006a bne r3,r0,0x00198d24        <Unit++> if can't be targeted
 
00198b7c: 02e28021 addu r16,r23,r2 r16 = Current Unit Data Pointer
 
  
00198b80: 92220008 lbu r2,0x0008(r17) Load Enemy Flag
+
AoE/Range Routines:
00198b84: 00000000 nop
+
00198b88: 14400066 bne r2,r0,0x00198d24        <Unit++> if enemy
 
00198b8c: 00000000 nop
 
  
00198b90: 8e8417f8 lw r4,0x17f8(r20)            Acting unit data
+
Miscellaneous Routines:
00198b94: 0c0664db jal 0x0019936c Calculate Distance Between Units
+
00198b98: 02002821 addu r5,r16,r0
 
00198b9c: 96060028 lhu r6,0x0028(r16)          r6 = Load Target Current HP
 
00198ba0: 9603002a lhu r3,0x002a(r16)          r3 = Load Target Max HP
 
00198ba4: 000631c0 sll r6,r6,0x07              HP * 80
 
00198ba8: 00c3001a div r6,r3                    (curHP * 80) / Max HP
 
00198bac: 00003012 mflo r6 r6 = ""
 
00198bb0: 02002021 addu r4,r16,r0 r4 = Current Unit Data Pointer
 
00198bb4: 34050002 ori r5,r0,0x0002 r5 = Dead Status
 
00198bb8: 340300ff ori r3,r0,0x00ff r3 = 0xff
 
00198bbc: 00629823 subu r19,r3,r2 r19 = ff - Distance between Target and Caster (Closer distance = Higher score)
 
00198bc0: 92030005 lbu r3,0x0005(r16) Load ENTD Flags
 
00198bc4: 34020080 ori r2,r0,0x0080
 
00198bc8: 30760003 andi r22,r3,0x0003          r22 = is unit Ramza?
 
  
<Dead?>
+
Needs More Documentation Routines:
00198bcc: 0c066360 jal 0x00198d80 Check for Status
 
00198bd0: 0046a823 subu r21,r2,r6 r21 = 80 - curHP%
 
00198bd4: 10400006 beq r2,r0,0x00198bf0 <HP Recovery> if this unit is not dead
 
00198bd8: 00000000 nop
 
 
 
<Dead without reraise?>
 
00198bdc: 92220007 lbu r2,0x0007(r17) Load AI Target State
 
00198be0: 00000000 nop
 
00198be4: 30420020 andi r2,r2,0x0020
 
00198be8: 14400033 bne r2,r0,0x00198cb8        <Status Checks> if dead without reraise
 
00198bec: 34030078 ori r3,r0,0x0078 Dead = Highest Status Priority
 
 
 
<HP Recovery?>
 
00198bf0: 8e820e34 lw r2,0x0e34(r20)            Acting unit decision data
 
00198bf4: 00000000 nop
 
00198bf8: 90420006 lbu r2,0x0006(r2) Load AI Targeting Flags           
 
00198bfc: 00000000 nop
 
00198c00: 30420002 andi r2,r2,0x0002
 
00198c04: 1040000b beq r2,r0,0x00198c34        <Blood Suck> if doesn't have HP recovery ability (Skip ReraiseDead and Critical)
 
00198c08: 02002021 addu r4,r16,r0 r4 = Current Unit Data Pointer
 
 
 
<Dead w/ Reraise?>
 
00198c0c: 92220007 lbu r2,0x0007(r17) Load AI Target State
 
00198c10: 00000000 nop
 
00198c14: 30420040 andi r2,r2,0x0040
 
00198c18: 14400027 bne r2,r0,0x00198cb8        <Status Checks> if dead unit with reraise
 
00198c1c: 34030077 ori r3,r0,0x0077 Dead w/ reraise = 2nd highest?
 
 
 
<Critical?>
 
00198c20: 9202005a lbu r2,0x005a(r16) Load Current Status 3
 
00198c24: 00000000 nop
 
00198c28: 30420001 andi r2,r2,0x0001
 
00198c2c: 14400022 bne r2,r0,0x00198cb8        <Status Checks> if critical
 
00198c30: 00000000 nop Critical Unit = 2nd Highest
 
 
 
<Blood Suck?>
 
00198c34: 0c066360 jal 0x00198d80 Check for Status
 
00198c38: 3405000d ori r5,r0,0x000d Check for Blood Suck
 
00198c3c: 1440001e bne r2,r0,0x00198cb8 <Status Checks> if unit has Blood Suck
 
00198c40: 34030076 ori r3,r0,0x0076 Blood Suck = 3rd Highest
 
 
 
<Petrify?>
 
00198c44: 02002021 addu r4,r16,r0
 
00198c48: 0c066360 jal 0x00198d80 Check for Status
 
00198c4c: 34050008 ori r5,r0,0x0008 Check for Petrify
 
00198c50: 14400019 bne r2,r0,0x00198cb8 <Status Checks> if unit is Petrified
 
00198c54: 34030075 ori r3,r0,0x0075 Petrify = 4th Highest
 
 
 
<Confused?>
 
00198c58: 02002021 addu r4,r16,r0
 
00198c5c: 0c066360 jal 0x00198d80 Check for Status
 
00198c60: 3405000b ori r5,r0,0x000b Check for Confusion
 
00198c64: 14400014 bne r2,r0,0x00198cb8 <Status Checks> if unit is Confused
 
00198c68: 34030074 ori r3,r0,0x0074 Confusion = 5th Highest
 
 
 
<Frog?>
 
00198c6c: 02002021 addu r4,r16,r0
 
00198c70: 0c066360 jal 0x00198d80 Check for Status
 
00198c74: 34050016 ori r5,r0,0x0016 Check for Frog
 
00198c78: 10400003 beq r2,r0,0x00198c88 Branch if not Frog
 
00198c7c: 00000000 nop
 
00198c80: 0806632e j 0x00198cb8 <Status Checks>
 
00198c84: 34030073 ori r3,r0,0x0073 Frog = 6th Highest
 
 
 
<HP Recovery?>
 
00198c88: 8e820e34 lw r2,0x0e34(r20) Load Current AI Pointer
 
00198c8c: 00000000 nop
 
00198c90: 90420006 lbu r2,0x0006(r2) Load AI Target Flags
 
00198c94: 00000000 nop
 
00198c98: 30420002 andi r2,r2,0x0002
 
00198c9c: 10400006 beq r2,r0,0x00198cb8        <Status Checks> if doesn't have healing ability
 
00198ca0: 00001821 addu r3,r0,r0 No Priority if unit can heal itself (No low HP check)
 
 
 
<Low HP Unit?>
 
00198ca4: 92220007 lbu r2,0x0007(r17) Load AI Target State
 
00198ca8: 00000000 nop
 
00198cac: 30420001 andi r2,r2,0x0001 Get Low HP Flag
 
00198cb0: 00021023 subu r2,r0,r2 -1 if Low HP Flag, else 0
 
00198cb4: 30430072 andi r3,r2,0x0072 Low HP = 72 (7th Lowest)
 
 
 
<Status Checks>
 
00198cb8: 1460000f bne r3,r0,0x00198cf8        <Peril Score B> if low HP unit
 
00198cbc: 00031600 sll r2,r3,0x18 Status Score * 1000000
 
 
 
<Most usable abilities?>
 
00198cc0: 92220006 lbu r2,0x0006(r17) Load AI Target Flags
 
00198cc4: 00000000 nop
 
00198cc8: 30420004 andi r2,r2,0x0004
 
00198ccc: 14400015 bne r2,r0,0x00198d24          <Unit++> if unit has most usable abilities
 
00198cd0: 00000000 nop
 
 
 
<Acting Unit = Current Unit?>
 
00198cd4: 92820e2e lbu r2,0x0e2e(r20) Load Acting Unit ID
 
00198cd8: 00000000 nop
 
00198cdc: 14520002 bne r2,r18,0x00198ce8 <Peril Score A> if Acting Unit and Current Unit are the same unit
 
00198ce0: 00161a00 sll r3,r22,0x08` Ramza check * 100 = 300 (Ultimate Priority for AI)
 
00198ce4: 00009821 addu r19,r0,r0 Distance between targets is zero (same unit, duh)
 
 
 
<Peril Score A = (Missing HP% * 10000) + (Ramza Check * 100) + Close Distance> (Non Statused Units)
 
00198ce8: 00151400 sll r2,r21,0x10 Missing HP% (80 - curHP%) * 10000
 
00198cec: 00431021 addu r2,r2,r3 Missing HP% + Ramza Check * 100
 
00198cf0: 08066343 j 0x00198d0c
 
00198cf4: 00531821 addu r3,r2,r19 r3 = Missing HP% + Ramza Check + Distance
 
 
 
<Peril Score B = (Missing HP% * 100) + (State Check * 1000000) + (Close Distance * 10000) + Ramza> (Statused Unit)
 
00198cf8: 00131c00 sll r3,r19,0x10 Close Distance * 10000
 
00198cfc: 00431021 addu r2,r2,r3 Close Distance + State Check * 1000000
 
00198d00: 00151a00 sll r3,r21,0x08 Missing HP% * 100
 
00198d04: 00431021 addu r2,r2,r3 Close Distance + State Check + Missing HP%
 
00198d08: 00561821 addu r3,r2,r22 Close Distance + State Check + Missing HP% + Ramza Check
 
 
 
<Highest Peril Check>
 
00198d0c: 03c3102a slt r2,r30,r3
 
00198d10: 10400004 beq r2,r0,0x00198d24 <Unit++> if this unit is not the current most unit in peril
 
00198d14: 00000000 nop
 
00198d18: 8e8217f8 lw r2,0x17f8(r20) Load Acting Unit Data Pointer
 
00198d1c: 0060f021 addu r30,r3,r0 r30 = Highest Peril Score so far
 
00198d20: a05201b9 sb r18,0x01b9(r2) Current Unit that needs to be saved the most
 
 
 
<Unit++>
 
00198d24: 26520001 addiu r18,r18,0x0001
 
00198d28: 2a420015 slti r2,r18,0x0015
 
00198d2c: 1440ff8a bne r2,r0,0x00198b58 Do for all units
 
00198d30: 26f701c0 addiu r23,r23,0x01c0
 
 
 
<Peril Minimum>
 
00198d34: 8e840e34 lw r4,0x0e34(r20) Acting Unit's AI Decision Pointer
 
00198d38: 3c020200 lui r2,0x0200
 
00198d3c: 90830004 lbu r3,0x0004(r4) Load Range
 
00198d40: 005e102a slt r2,r2,r30 Set if Highest Peril Score > 0x02000000
 
00198d44: 306300f7 andi r3,r3,0x00f7
 
00198d48: a0830004 sb r3,0x0004(r4) Only look for units up to 7 range away
 
 
 
00198d4c: 8fbf0034 lw r31,0x0034(r29)
 
00198d50: 8fbe0030 lw r30,0x0030(r29)
 
00198d54: 8fb7002c lw r23,0x002c(r29)
 
00198d58: 8fb60028 lw r22,0x0028(r29)
 
00198d5c: 8fb50024 lw r21,0x0024(r29)
 
00198d60: 8fb40020 lw r20,0x0020(r29)
 
00198d64: 8fb3001c lw r19,0x001c(r29)
 
00198d68: 8fb20018 lw r18,0x0018(r29)
 
00198d6c: 8fb10014 lw r17,0x0014(r29)
 
00198d70: 8fb00010 lw r16,0x0010(r29)
 
00198d74: 27bd0038 addiu r29,r29,0x0038
 
00198d78: 03e00008 jr r31
 
00198d7c: 00000000 nop
 

Latest revision as of 02:20, 9 March 2017

TODO:

Rename all the links in Battle Bin I changed
Explain every routine that I can
Link every routine I uploaded to where it coming from and what routines it calls
And link them
Straighten up comments
Organize every routine I uploaded onto this very page for ease of searching

For now, just look at my user contribution page if you need to find what I worked on


AI Routines:


AoE/Range Routines:


Miscellaneous Routines:


Needs More Documentation Routines: