• Welcome to Final Fantasy Hacktics. Please login or sign up.
 

ASM Collective BATTLE.BIN Map

Started by formerdeathcorps, January 06, 2011, 05:09:33 am

formerdeathcorps

July 19, 2011, 08:03:28 am #100 Last Edit: August 13, 2011, 05:30:30 am by formerdeathcorps
All right, let's try a slightly different approach.  I'm getting really tired of coding long routines, so let's explicitly write down the called functions first.


addiu r29, r29, 0xFFE0
sw r16, 0x0000 (r29)
sw r17, 0x0004 (r29)
sw r18, 0x0008 (r29)
sw r19, 0x000C (r29)
sw r20, 0x0010 (r29)
sw r21, 0x0014 (r29)
sw r22, 0x0018 (r29)
sw r23, 0x001C (r29)
lui r16, 0x8019 r16 = 0x190000
sh r0, 0x38CE (r16) Resets XA to 0.
sh r0, 0x38D0 (r16) Resets YA to 0.
lw r17, 0x2D94 (r16) r17 = Attacker Offset
lw r18, 0x2D98 (r16) r18 = Defender Offset
lhu r19, 0x38D6 (r16)
lui r20, 0x8006
sll r19, r19, 0x03
addu r19, r20, r19
jr 31 Return to Main Routine
lbu r19, -0x1410 (r19) r19 = AI flags.  r20 will be used as a r31 replacement for complicated mechanics routines that call subroutines; r21-r23 will be used during the floating point multiplication routine.



This allows you to multiply stats without ever again running into rounding errors.  This function accepts r1/r2 and r21.r22 as inputs (r1 = numerator, r2 = denominator, r21 = integer part, r22 = fractional part) and returns r21.r22 (r21 = new integer part, r22 = new fractional part).  This formula assumes you already used "Initialize", r21.r22 is your XA2 stat, and r1/r2 is your multiplier from ATKUP/2H/...  NOTE, r3 is overridden and r2 should NEVER be 0 or 1.

lui r3, 0xFFFF
ori r3, r3, 0xFFFF r3 = 0xFFFFFFFF
divu r3, r2
mflo r3
addiu r3, r3, 0x0001 r3 = 0xFFFFFFFF / denominator1 + 1
nop
multu r21, r3
mfhi r21 r21 = int{r21 / r2}
mflo r23 r23 = frac{r21 / r2}
nop
nop
multu r22, r3
mfhi r3 r3 = Upper32Bits{[1 / r2] * 0.r22}
addu r22, r3, r23 r22 = r3 + r23
sltu r3, r22, r3 r3 = 1 if overflow, ELSE, r3 = 0
beq r3, r0, (*Top) If no overflow, GOTO (*Top)
nop
addiu r21, r21, 0x0001 If overflow, r21 = r21 + 1 (arithmetic carryover).
(*Top) multu r21, r1
mflo r21 r21 = (int{r21 / r2} + int{frac{r21 / r2} + frac{0.r22 * 1 / r2}}) * r1
nop
nop
multu r22, r1
mfhi r1 r1 = int{frac{{frac{r21 / r2} + frac{0.r22 * 1 / r2}} * r1}
mflo r22 r22 = frac{frac{{frac{r21 / r2} + frac{0.r22 * 1 / r2}} * r1}
jr 31 Return to Main Routine
addu r21, r21, r1 r21 = r21 + r1



This generates a random number.  This function accepts r4 as an input, and outputs int{r4 * {0...1}}.  NOTE, this overrides r1, r2, and r3.

lui r1, 0xA001
lw r2, -0x6FF0 (r1) Load random word.
lui r3, 0x41C6
addiu r3, r3, 0x4E6D
multu r2, r3
mflo r2
addiu r2, r2, 0x3039
sw r2, -0x6FF0 (r1) Store new random word.
multu r4, r2
mfhi r4 r4 = {0...value(r4)-1}
jr 31 Return to Critical/Knockback Routine
nop



This formula outputs r10 as non-zero if the first blank flag under "Learn on Hit" is flagged and zero if not.  From here on out, this flag will be known as "FoeStats".  r6 is outputted as either the target's or attacker's data offsets, depending on FoeStat's state.  This formula assumes "Initialize" was already used.  NOTE, this overrides r1.

lbu r1, 0x0003 (r19)
nop
andi r10, r1, 0x0010
beq r10, r0, (End)
addu r6, r17, r0
addu r6, r18, r0
(End) jr 31
nop
The destruction of the will is the rape of the mind.
The dogmas of every era are nothing but the fantasies of those in power; their dreams are our waking nightmares.

formerdeathcorps

July 19, 2011, 11:12:39 am #101 Last Edit: August 01, 2011, 03:56:14 am by formerdeathcorps
The above were the simplest functions (the ones that perform basic legwork); here are the functions that determine XA1/XA2/YA3/Y, which assume the functions "Initialize" and "Address" were already used.
Coded below are all the possibilities, but a given formula will just use one or none of each colored type.

Get XA1:


This formula outputs r5 as XA1.  Used with formulas that involve 3 or more stats.  NOTE, this overrides r1-r4.

lbu r3, 0x38F9 (r16)
ori r2, r0, 0x0001
andi r3, r3, 0x0003
beq r3, r0, (End)
lbu r5, 0x0036 (r6)
beq r3, r2, (End)
lbu r5, 0x0037 (r6)
ori r2, r0, 0x0002
beq r3, r2, (End)
lbu r5, 0x0038 (r6)
lbu r4, 0x003C (r18)
lbu r1, 0x003D (r18)
beq r10, r0, (End)
lbu r5, 0x3902 (r16)
sltiu r5, r1, r4
bne r5, r0, (End)
addu r5, r4, r0
addu r5, r1, r0
(End) jr 31
sh r5, 0x38CE (r16)



This formula outputs r5 as XA1.  Used with formulas of the Lifebreak type.  NOTE, this overrides r3.

lbu r3, 0x38F9 (r16)
nop
andi r3, r3, 0x0001
beq r3, r0, (End)
lhu r5, 0x002a (r6)
nop
lhu r5, 0x002e (r6)
(End) jr 31
sh r5, 0x38CE (r16)


Get XA2:


This formula outputs r8 as XA2 and r7 as the attack type (for ATKUP/MATKUP/2H purposes).  Used with formulas that involve 2 or fewer stats.  NOTE, this overrides r1-r4.

lbu r3, 0x38F9 (r16)
ori r7, r0, 0x00FF
andi r3, r3, 0x0007
beq r3, r0, (End)
ori r8, r0, 0x0001
ori r7, r0, 0x0001
ori r2, r0, 0x0001
beq r3, r2, (End)
lbu r8, 0x0036 (r17)
ori r2, r0, 0x0003
beq r3, r2, (End)
lbu r8, 0x0038 (r17)
lbu r1, 0x003e (r17)
lbu r4, 0x003f (r17)
ori r2, r0, 0x0005
sltiu r8, r4, r1
bne r8, r0, (Quarter)
addu r8, r1, r0
addu r8, r4, r0
(Quarter) srl r8, r8, 0x02
beq r3, r2, (End)
addiu r8, r8, 0x0003
lbu r1, 0x0041 (r17)
lbu r4, 0x0042 (r17)
ori r2, r0, 0x0006
sltiu r8, r4, r1
bne r8, r0, (*.25)
addu r8, r1, r0
addu r8, r4, r0
(*.25) beq r3, r2, (End)
srl r8, r8, 0x02
ori r7, r0, 0x0000
lbu r8, 0x0022 (r17)
ori r2, r0, 0x0007
srl r8, r8, 0x03
beq r3, r2, (End)
addiu r8, r8, 0x0006
ori r2, r0, 0x0002
beq r3, r2, (End)
lbu r8, 0x0037 (r17)
ori r7, r0, 0x0002
lbu r8, 0x3902 (r16)
(End) jr 31
sh r8, 0x38D0 (r16)



This formula outputs r8 as XA2 and r7 as the attack type (for ATKUP/MATKUP/2H purposes).  Used with formulas that involve 3 or more stats.  NOTE, this overrides r2/r3.

lbu r3, 0x38F9 (r16)
ori r7, r0, 0x0001
andi r3, r3, 0x000F
sltiu r2, r3, 0x0004
bne r2, r0, (End)
lbu r8, 0x0036 (r17)
sltiu r2, r3, 0x0008
ori r7, r0, 0x0000
bne r2, r0, (End)
lbu r8, 0x0037 (r17)
sltiu r2, r3, 0x0008
ori r7, r0, 0x0001
bne r2, r0, (End)
lbu r8, 0x0038 (r17)
ori r7, r0, 0x0002
lbu r8, 0x3902 (r16)
(End) jr 31
sh r8, 0x38D0 (r16)


Get YA3:


This formula outputs r5 as XA1 + YA3.  There are 8 options for YA3 and is used with most formulas.  NOTE, this overrides r1-r4 and r9.

lbu r3, 0x38FA (r16)
lhu r5, 0x38CE (r16)
andi r3, r3, 0x0007
beq r3, r0, (End)
addiu r9, r0, 0x000A
ori r2, r0, 0x0001
beq r3, r2, (End)
lbu r9, 0x0036 (r6)
ori r2, r0, 0x0002
beq r3, r2, (End)
lbu r9, 0x0037 (r6)
ori r2, r0, 0x0003
beq r3, r2, (End)
lbu r9, 0x0038 (r6)
ori r2, r0, 0x0004
bne r3, r2, (NotWP)
lbu r4, 0x003C (r18)
lbu r1, 0x003D (r18)
beq r10, r0, (End)
lbu r9, 0x3902 (r16)
sltiu r9, r1, r4
bne r9, r0, (End)
addu r9, r4, r0
addu r9, r1, r0
(NotWP) lbu r1, 0x003e (r6)
lbu r4, 0x003f (r6)
ori r2, r0, 0x0005
sltiu r9, r4, r1
bne r9, r0, (Quarter)
addu r9, r1, r0
addu r9, r4, r0
(Quarter) srl r9, r9, 0x02
beq r3, r2, (End)
addiu r9, r9, 0x0003
lbu r1, 0x0041 (r6)
lbu r4, 0x0042 (r6)
ori r2, r0, 0x0006
sltiu r9, r4, r1
bne r9, r0, (*.25)
addu r9, r1, r0
addu r9, r4, r0
(*.25) beq r3, r2, (End)
srl r9, r9, 0x02
lbu r9, 0x0022 (r6)
nop
srl r9, r9, 0x03
addiu r9, r9, 0x0006
(End) nop
addu r5, r9, r5
jr 31
sh r5, 0x38CE (r16)



This formula outputs r5 as XA1 * YA3.  There are 8 options for YA3 and is used mostly with type Lifebreak formulas.  NOTE, this overrides r1-r4 and r9.

lbu r3, 0x38FA (r16)
lhu r5, 0x38CE (r16)
andi r3, r3, 0x0007
lhu r4, 0x0002a (r6)
beq r3, r0, (0Check)
lhu r9, 0x0028 (r6)
ori r2, r0, 0x0001
beq r3, r2, (0Check-1)
ori r2, r0, 0x0002
lhu r4, 0x0002e (r6)
beq r3, r2, (0Check)
lhu r9, 0x002c (r6)
ori r2, r0, 0x0003
beq r3, r2, (0Check-1)
ori r2, r0, 0x0004
ori r4, r0, 0x0064
beq r3, r2, (0Check)
lbu r9, 0x0024 (r6)
ori r2, r0, 0x0005
beq r3, r2, (0Check-1)
lbu r1, 0x005c (r6)
ori r2, r0, 0x0006
andi r1, r1, 0x00c0
beq r1, r0, (Jumper)
lbu r9, 0x0026 (r6)
addiu r1, r1, FF80
beq r1, r0, (Jumper)
ori r9, r0, 0x0064
ori r9, r0, 0x0000
(Jumper) beq r3, r2, (0Check)
nop
(0Check-1) subu r9, r4, r9
(0Check) bne r5, r0, (Mult)
nop
addiu r5, r0, 0x0001
(Mult) multu r9, r5
mflo r5
nop
nop
divu r5, r4
mflo r5
jr 31
sh r5, 0x38CE (r16)



This formula outputs r5 as XA1 * YA3.  There are 16 options for YA3 and is used mostly % healing/damage formulas.  NOTE, this overrides r2-r4.

lbu r3, 0x38FA (r16)
lhu r5, 0x38CE (r16)
andi r3, r3, 0x000F
sll r2, r3, 0x01
sll r3, r3, 0x03
subu r3, r3, r2
bne r5, r0, (Mult)
addiu r3, r3, 0x000A
addiu r5, r0, 0x0001
(Mult) multu r3, r5
mflo r5
ori r4, r0, 0x0064
nop
divu r5, r4
mflo r5
jr 31
sh r5, 0x38CE (r16)


Get Y:


This formula outputs r5 as XA1 + Y.  This assumes there's no YA3 term and is mostly used with formulas of the XA2 * Y type.  NOTE, this overrides r3.

lbu r3, 0x38FA (r16)
lhu r5, 0x38CE (r16)
nop
addu r5, r3, r5
jr 31
sh r5, 0x38CE (r16)



This formula outputs r5 as XA1 + YA3 + Y.  This is mostly used with damage formulas.  NOTE, this overrides r3.

lbu r3, 0x38FA (r16)
lhu r5, 0x38CE (r16)
srl r3, r3, 0x03
addu r5, r3, r5
jr 31
sh r5, 0x38CE (r16)



This formula outputs r8 as XA2 + Y.  This assumes XA2 has already undergone all the requisite multipliers and is mostly used with % hit formulas.  NOTE, this overrides r3.

lbu r3, 0x38FA (r16)
nop
andi r3, r3, 0x00F0
addu r8, r3, r21
jr 31
sh r8, 0x38D0 (r16)
The destruction of the will is the rape of the mind.
The dogmas of every era are nothing but the fantasies of those in power; their dreams are our waking nightmares.

formerdeathcorps

August 06, 2011, 05:09:30 pm #102 Last Edit: August 13, 2011, 06:08:27 am by formerdeathcorps
The following will list multiplier routines that every formula will use.  Most of the important ones are tied to flags for added customization.  This assumes "Initialize", "Address", and "Get XA2" were already used.


This incorporates Xif's fix to holy sword, but ties it to the weapon strike flag.  r11 carries the final element of the attack.  This overrides r1-r3.

lbu r1, 0x3904 (r16) r1 = Weapon Elemental
lbu r2, 0x38F3 (r16) r2 = Ability Flags Byte 1
lbu r3, 0x38F7 (r16) r3 = Ability Elemental
andi r2, r2, 0x0004
beq r2, r0 (E) If Weapon Strike is not flagged, GOTO (E)
addiu r21, r8, 0x0000 r21 = XA2
or r3, r3, r1 ELSE, Ability Elemental = Weapon Elemental + Ability Elemental
(E) jr 31 Returns to the Main Formula Routine.
addiu r11, r3, 0x0000 r11 = new Ability Elemental



This applies the elemental boost to an attack (set at default to 5/4 * XA2).  This overrides r1-r4, r20, and r23.

lbu r4, 0x0071 (r17) Loads elements strengthened
addiu r20, r31, 0x0000 r20 = r31 since r31 will be modified below.
and r4, r11, r4 Checks ability element against elements strengthened
beq r4, r0, (E) If ability element isn't a boosted element, GOTO (E)
addiu r1, r0, 0x0005
jal Fraction If ability element is boosted, GOTO (Fraction)
addiu r2, r0, 0x0004 The fraction to be multiplied against XA2 is 5/4.
(E)  jr 20 Return to Main Routine
nop



This applies the support boost to an attack (set at default to 4/3 * XA2 for ATKUP/MATKUP, 3/2 * XA2 for Martial Arts, and 2 * XA2 for Two Hands).  This overrides r1-r4, r20, and r23.

lbu r4, 0x0090 (r17) r4 = Support Byte 2
bne r7, r0, (NoMATKUP) If r7 isn't 0x00 (magical damage), GOTO (NoMATKUP)
addiu r20, r31, 0x0000 r20 = r31 since r31 will be modified below.
andi r3, r4, 0x0004
beq r3, r0, (NoMATKUP) If r3 is zero (meaning no MATKUP is used), GOTO (NoMATKUP)
addiu r1, r0, 0x0004
jal (Fraction) If attack is magical and MATKUP is used, GOTO (Fraction)
addiu r2, r0, 0x0003 The fraction to be multiplied against XA2 is 4/3.
(NoMATKUP) andi r2, r7, 0x0003
beq r2, r0, (NoATKUP) If r7 isn't 0x01 or 0x02 (PA/SP/W-EV/SP-EV/WP), GOTO (NoATKUP)
andi r3, r4, 0x0010
beq r3, r0, (NoATKUP) If r3 is zero (meaning no ATKUP is used), GOTO (NoATKUP)
addiu r1, r0, 0x0004
jal (Fraction) If attack is physical and ATKUP is used, GOTO (Fraction)
addiu r2, r0, 0x0003 The fraction to be multiplied against XA2 is 4/3.
(NoATKUP) lbu r4, 0x0091 (r17) r4 = Support Byte 3
ori r3, r0, 0x0001
bne r3, r7 (NoMar-A) If r7 isn't 0x01 (PA/SP/W-EV/SP-EV), GOTO (NoMar-A)
lbu r1, 0x38E5 (r16) r1 = Skill Formula #
lbu r2, 0x38D8 (r16) r2 = Weapon ID #
sltiu r1, r1, 0x0008
beq r1, r0 (NotATTACK) If skill formula isn't less than 0x08 (isn't a weapon formula), GOTO (NotATTACK)
andi r3, r4, 0x0020
beq r2, r0 (NoMar-A) If using weapon formula and equipping a non-fist weapon, GOTO (NoMar-A)
nop
(NotATTACK) beq r3, r0, (NoMar-A) If r3 is zero (meaning no Martial Arts is used), GOTO (NoMar-A)
addiu r1, r0, 0x0003
jal (Fraction) If attack is non-weapon in both ID and XA2 and Martial Arts is used, GOTO (Fraction)
addiu r2, r0, 0x0002 The fraction to be multiplied against XA2 is 3/2.
(NoMar-A) ori r3, r0, 0x0002
bne r3, r7 (End) If r7 isn't 0x02 (WP), GOTO (End)
lbu r1, 0x38D9 (r16) r1 = 0x01 if 2H is active.
lbu r2, 0x38FF (r16) r2 = Weapon Characteristics byte
beq r1, r0 (End) If 2H is inactive (not being equipped or not being used due to a RH and LH equip), GOTO (End)
andi r3, r2, 0x0001
bne r3, r0 (End) If weapon is Forced 2H, GOTO (End)
andi r3, r2, 0x0004
beq r3, r0 (End) If weapon is not 2H-able, GOTO (End)
addiu r1, r0, 0x0004
jal (Fraction) ELSE, GOTO (Fraction)
addiu r2, r0, 0x0002 The fraction to be multiplied against XA2 is 4/2 (the subroutine Fraction will mess up if you multiply anything with a denominator of 1).
(End)  jr 20 Return to Main Routine
nop

NOTE: For the above to work correctly, you must apply the following ASM hack as well.
BATTLE.BIN:
0x124734
00000000
00000000
08001092
00000000
302E0608



This applies the defensive multiplier to an attack (set at default to 2/3 * XA2 for Protect/Shell/DEFUP/MADEF).  Attacks will take Protect and DEFUP if the AI flag "Defense Up" is flagged and will take Shell and MADEF if the AI flag "Magic Defense Up" is flagged.  This overrides r1-r4, r8, r20, and r23.

addiu r20, r31, 0x0000 r20 = r31, since r31 will be modified below
lbu r4, 0x0006 (r19) r4 = AI Byte 6
lbu r8, 0x005B (r3) r8 = Status Byte 4
andi r1, r4, 0x0002
beq r1, r0 (Prot) If Magic Defense Up is not checked, GOTO (Prot)
andi r2, r8, 0x0010
beq r2, r0 (Prot) If target does not have Shell, GOTO (Prot)
addiu r1, r0, 0x0002
jal (Fraction) If attack takes MADEF and target has Shell, GOTO (Fraction)
addiu r2, r0, 0x0003 The fraction to be multiplied against XA2 is 2/3.
(Prot) andi r1, r4, 0x0001
beq r1, r0 (MADEF) If flag Defense Up is not checked, GOTO (MADEF)
andi r2, r8, 0x0020
beq r2, r0 (MADEF) If target does not have Protect, GOTO (MADEF)
addiu r1, r0, 0x0002
jal (Fraction) If attack takes DEFUP and target has Protect, GOTO (Fraction)
addiu r2, r0, 0x0003 The fraction to be multiplied against XA2 is 2/3.
(MADEF) lbu r8, 0x0090 (r3) r8 = Support Byte 2
andi r1, r4, 0x0002
beq r1, r0 (DEFUP) If flag Magic Defense Up is not checked, GOTO (DEFUP)
andi r2, r8, 0x0002
beq r2, r0 (DEFUP) If target does not have Magic Defense Up, GOTO (DEFUP)
addiu r1, r0, 0x0002
jal (Fraction) If attack takes MADEF and target has MADEF, GOTO (Fraction)
addiu r2, r0, 0x0003 The fraction to be multiplied against XA2 is 2/3.
(DEFUP) andi r1, r4, 0x0001
beq r5, r0 (E) If flag Defense Up is not checked, GOTO (E)
andi r2, r8, 0x0008
beq r2, r0 (E) If target does not have Defense Up, GOTO (E)
addiu r1, r0, 0x0002
jal (Fraction) If attack takes DEFUP and target has DEFUP, GOTO (Fraction)
addiu r2, r0, 0x0003 The fraction to be multiplied against XA2 is 2/3.
(E) jr r20 Return to Main Routine
nop
The destruction of the will is the rape of the mind.
The dogmas of every era are nothing but the fantasies of those in power; their dreams are our waking nightmares.

formerdeathcorps

September 16, 2011, 06:00:56 am #103 Last Edit: September 16, 2011, 06:13:43 am by formerdeathcorps

0017b4d0: 27bdffb0 addiu r29,r29,0xffb0
0017b4d4: afb50044 sw r21,0x0044(r29)
0017b4d8: 0000a821 addu r21,r0,r0
0017b4dc: 27a50018 addiu r5,r29,0x0018
0017b4e0: afbf004c sw r31,0x004c(r29)
0017b4e4: afb60048 sw r22,0x0048(r29)
0017b4e8: afb40040 sw r20,0x0040(r29)
0017b4ec: afb3003c sw r19,0x003c(r29)
0017b4f0: afb20038 sw r18,0x0038(r29)
0017b4f4: afb10034 sw r17,0x0034(r29)
0017b4f8: 0c01788b jal 0x0005e22c
0017b4fc: afb00030 sw r16,0x0030(r29)
0017b500: 3407fe62 ori r7,r0,0xfe62
0017b504: 97a6001c lhu r6,0x001c(r29)
0017b508: 93a30018 lbu r3,0x0018(r29)
0017b50c: 97a5001e lhu r5,0x001e(r29)
0017b510: 00c72021 addu r4,r6,r7  r4 = 00-07 if calculator skills, r6 = CT/Height/LVL/EXP Parameter?
0017b514: 000310c0 sll r2,r3,0x03
0017b518: 00431023 subu r2,r2,r3
0017b51c: 00021180 sll r2,r2,0x06
0017b520: 3c038019 lui r3,0x8019
0017b524: 246308cc addiu r3,r3,0x08cc
0017b528: 3084ffff andi r4,r4,0xffff
0017b52c: 2c840008 sltiu r4,r4,0x0008
0017b530: 10800019 beq r4,r0,0x0017b598 if r4 isn't 00-07, GOTO END and r2 = 0xFFFF
0017b534: 0043b021 addu r22,r2,r3
0017b538: 00a71021 addu r2,r5,r7 r2 = 00-07 if calculator skills, r5 = Prime/5/4/3 Parameter?
0017b53c: 3042ffff andi r2,r2,0xffff
0017b540: 2c420008 sltiu r2,r2,0x0008
0017b544: 10400014 beq r2,r0,0x0017b598 if r2 isn't 00-07, GOTO END and r2 = 0xFFFF
0017b548: 00061c00 sll r3,r6,0x10
0017b54c: 00031c03 sra r3,r3,0x10
0017b550: 3c048006 lui r4,0x8006
0017b554: 24840eb6 addiu r4,r4,0x0eb6
0017b558: 00641821 addu r3,r3,r4
0017b55c: 00051400 sll r2,r5,0x10
0017b560: 00021403 sra r2,r2,0x10
0017b564: 00441021 addu r2,r2,r4
0017b568: 90730000 lbu r19,0x0000(r3)
0017b56c: 90510000 lbu r17,0x0000(r2)
0017b570: 326300f0 andi r3,r19,0x00f0
0017b574: 10600008 beq r3,r0,0x0017b598
0017b578: 3222000f andi r2,r17,0x000f
0017b57c: 10400006 beq r2,r0,0x0017b598
0017b580: 3262000f andi r2,r19,0x000f
0017b584: 14400080 bne r2,r0,0x0017b788
0017b588: 2402ffff addiu r2,r0,0xffff
0017b58c: 322200f0 andi r2,r17,0x00f0
0017b590: 10400003 beq r2,r0,0x0017b5a0
0017b594: 00000000 nop
0017b598: 0805ede2 j 0x0017b788 If there aren't 4 Grid Params or 4 Num Params, GOTO END
0017b59c: 2402ffff addiu r2,r0,0xffff
0017b5a0: 0c05ed28 jal 0x0017b4a0 //Initialize Grid
0017b5a4: 00009021 addu r18,r0,r0
0017b5a8: 0000a021 addu r20,r0,r0
0017b5ac: 3c028019 lui r2,0x8019
0017b5b0: 244208cc addiu r2,r2,0x08cc
0017b5b4: 02828021 addu r16,r20,r2
0017b5b8: 92030001 lbu r3,0x0001(r16)
0017b5bc: 340200ff ori r2,r0,0x00ff
0017b5c0: 1062006c beq r3,r2,0x0017b774 If unit doesn't exist, Check NEXT UNIT
0017b5c4: 00000000 nop
0017b5c8: 92020058 lbu r2,0x0058(r16)
0017b5cc: 00000000 nop
0017b5d0: 30420044 andi r2,r2,0x0044
0017b5d4: 14400067 bne r2,r0,0x0017b774 If unit is jumping or crystallized, Check NEXT UNIT
0017b5d8: 00000000 nop
0017b5dc: 92020059 lbu r2,0x0059(r16)
0017b5e0: 00000000 nop
0017b5e4: 30420001 andi r2,r2,0x0001
0017b5e8: 14400062 bne r2,r0,0x0017b774 If unit is treasure boxed, Check NEXT UNIT.
0017b5ec: 00000000 nop
0017b5f0: 92020182 lbu r2,0x0182(r16)
0017b5f4: 00000000 nop
0017b5f8: 30420040 andi r2,r2,0x0040
0017b5fc: 1440005d bne r2,r0,0x0017b774 If unit is riding a chocobo, Check NEXT UNIT
0017b600: 32620080 andi r2,r19,0x0080
0017b604: 1040000a beq r2,r0,0x0017b630 If not CT, GOTO check LEVEL
0017b608: 32620040 andi r2,r19,0x0040
0017b60c: 92040039 lbu r4,0x0039(r16)
0017b610: 00000000 nop
0017b614: 2c820065 sltiu r2,r4,0x0065
0017b618: 10400003 beq r2,r0,0x0017b628 If CT > 100, treat CT as 100.
0017b61c: 00000000 nop
0017b620: 16160016 bne r16,r22,0x0017b67c If Target isn't Self, r5 = CT.
0017b624: 308500ff andi r5,r4,0x00ff
0017b628: 0805ed9e j 0x0017b678 If CT > 100 or Target is Self, CT = 100
0017b62c: 34040064 ori r4,r0,0x0064
0017b630: 10400004 beq r2,r0,0x0017b644 If not LVL, GOTO EXP
0017b634: 32620020 andi r2,r19,0x0020
0017b638: 92040022 lbu r4,0x0022(r16)
0017b63c: 0805ed9f j 0x0017b67c
0017b640: 308500ff andi r5,r4,0x00ff ELSE, r5 = LVL
0017b644: 10400004 beq r2,r0,0x0017b658 If not EXP, GOTO HEight
0017b648: 27a40010 addiu r4,r29,0x0010
0017b64c: 92040021 lbu r4,0x0021(r16)
0017b650: 0805ed9f j 0x0017b67c
0017b654: 308500ff andi r5,r4,0x00ff ELSE, r5 = EXP
0017b658: 0c05f056 jal 0x0017c158 If Height, r5 = Height
0017b65c: 02402821 addu r5,r18,r0
0017b660: 93a40015 lbu r4,0x0015(r29)
0017b664: 00000000 nop
0017b668: 30820001 andi r2,r4,0x0001
0017b66c: 14400041 bne r2,r0,0x0017b774 If ??? is 1, GOTO Check NExt Unit
0017b670: 00000000 nop
0017b674: 00042042 srl r4,r4,0x01
0017b678: 308500ff andi r5,r4,0x00ff r5 = r4 / 2, so r4 = ??? = Height in half tiles?  If that's the case, then why even run jal 0x17c158?
0017b67c: 10a0003d beq r5,r0,0x0017b774 If ??? = 0 or 1, GOTO Check Next Unit
0017b680: 32220008 andi r2,r17,0x0008
0017b684: 1040000e beq r2,r0,0x0017b6c0 If not Prime, GOTO Check 5
0017b688: 00003021 addu r6,r0,r0
0017b68c: 00001821 addu r3,r0,r0
0017b690: 00a02021 addu r4,r5,r0
0017b694: 3c018006 lui r1,0x8006
0017b698: 00230821 addu r1,r1,r3
0017b69c: 90226198 lbu r2,0x6198(r1)
0017b6a0: 00000000 nop
0017b6a4: 10440026 beq r2,r4,0x0017b740 If Prime = Above Param, Unit = Hit
0017b6a8: 24630001 addiu r3,r3,0x0001
0017b6ac: 28620036 slti r2,r3,0x0036
0017b6b0: 10400024 beq r2,r0,0x0017b744 If no prime = Above Param, Check Next Unit
0017b6b4: 00000000 nop
0017b6b8: 0805eda5 j 0x0017b694
0017b6bc: 00000000 nop
0017b6c0: 32220004 andi r2,r17,0x0004
0017b6c4: 1040000b beq r2,r0,0x0017b6f4 If not 5, GOTO Check 4
0017b6c8: 3c02cccc lui r2,0xcccc
0017b6cc: 3442cccd ori r2,r2,0xcccd
0017b6d0: 00a20019 multu r5,r2
0017b6d4: 00001810 mfhi r3
0017b6d8: 00031882 srl r3,r3,0x02
0017b6dc: 00031080 sll r2,r3,0x02
0017b6e0: 00431021 addu r2,r2,r3
0017b6e4: 00a21023 subu r2,r5,r2
0017b6e8: 304200ff andi r2,r2,0x00ff
0017b6ec: 10400014 beq r2,r0,0x0017b740 If x MOD 5 = 0, Unit = HIT
0017b6f0: 00000000 nop
0017b6f4: 32220002 andi r2,r17,0x0002
0017b6f8: 10400003 beq r2,r0,0x0017b708 If NOT 4, Check 3
0017b6fc: 30820003 andi r2,r4,0x0003
0017b700: 1040000f beq r2,r0,0x0017b740 If X MOD 4 = 0, Check Next unit
0017b704: 00000000 nop
0017b708: 32220001 andi r2,r17,0x0001
0017b70c: 1040000d beq r2,r0,0x0017b744
0017b710: 3c02aaaa lui r2,0xaaaa
0017b714: 3442aaab ori r2,r2,0xaaab
0017b718: 308400ff andi r4,r4,0x00ff
0017b71c: 00820019 multu r4,r2
0017b720: 00001810 mfhi r3
0017b724: 00031842 srl r3,r3,0x01
0017b728: 00031040 sll r2,r3,0x01
0017b72c: 00431021 addu r2,r2,r3
0017b730: 00822023 subu r4,r4,r2
0017b734: 308400ff andi r4,r4,0x00ff
0017b738: 14800002 bne r4,r0,0x0017b744 If X MOD 3 != 0, Check NExt Unit
0017b73c: 00000000 nop
0017b740: 34060001 ori r6,r0,0x0001
0017b744: 10c0000b beq r6,r0,0x0017b774
0017b748: 00000000 nop
0017b74c: 0c060428 jal 0x001810a0 Find X/Y coordinate of target
0017b750: 02002021 addu r4,r16,r0
0017b754: 000210c0 sll r2,r2,0x03
0017b758: 3c038019 lui r3,0x8019
0017b75c: 2463f8cc addiu r3,r3,0xf8cc
0017b760: 00431021 addu r2,r2,r3
0017b764: 90430005 lbu r3,0x0005(r2)
0017b768: 26b50001 addiu r21,r21,0x0001
0017b76c: 34630080 ori r3,r3,0x0080
0017b770: a0430005 sb r3,0x0005(r2) Flag X/Y coordinate as green = target.
0017b774: 26520001 addiu r18,r18,0x0001
0017b778: 2a420015 slti r2,r18,0x0015
0017b77c: 1440ff8b bne r2,r0,0x0017b5ac
0017b780: 269401c0 addiu r20,r20,0x01c0 Pointer = next unit's data.
0017b784: 02a01021 addu r2,r21,r0 RETURN (r2) = # of units hit
0017b788: 8fbf004c lw r31,0x004c(r29)
0017b78c: 8fb60048 lw r22,0x0048(r29)
0017b790: 8fb50044 lw r21,0x0044(r29)
0017b794: 8fb40040 lw r20,0x0040(r29)
0017b798: 8fb3003c lw r19,0x003c(r29)
0017b79c: 8fb20038 lw r18,0x0038(r29)
0017b7a0: 8fb10034 lw r17,0x0034(r29)
0017b7a4: 8fb00030 lw r16,0x0030(r29)
0017b7a8: 27bd0050 addiu r29,r29,0x0050
0017b7ac: 03e00008 jr r31
The destruction of the will is the rape of the mind.
The dogmas of every era are nothing but the fantasies of those in power; their dreams are our waking nightmares.

formerdeathcorps

September 18, 2011, 06:15:57 am #104 Last Edit: September 18, 2011, 06:35:46 am by formerdeathcorps
Here's more basic research from me...and this is only half the routine.


0018b34c: 27bdffc8 addiu r29,r29,0xffc8
0018b350: afb00028 sw r16,0x0028(r29)
0018b354: 00a08021 addu r16,r5,r0
0018b358: 27a50010 addiu r5,r29,0x0010
0018b35c: afbf0034 sw r31,0x0034(r29)
0018b360: afb20030 sw r18,0x0030(r29)
0018b364: 0c01788b jal 0x0005e22c
0018b368: afb1002c sw r17,0x002c(r29)
0018b36c: 3c018019 lui r1,0x8019
0018b370: a03038c1 sb r16,0x38c1(r1) Store ID of the defending unit.
0018b374: 321000ff andi r16,r16,0x00ff
0018b378: 001010c0 sll r2,r16,0x03
0018b37c: 00501023 subu r2,r2,r16
0018b380: 00021180 sll r2,r2,0x06
0018b384: 3c048019 lui r4,0x8019
0018b388: 248408cc addiu r4,r4,0x08cc
0018b38c: 00441821 addu r3,r2,r4
0018b390: 3c018019 lui r1,0x8019
0018b394: ac232d98 sw r3,0x2d98(r1) Store pointer of the defending unit.
0018b398: 2483018c addiu r3,r4,0x018c
0018b39c: 00431021 addu r2,r2,r3
0018b3a0: 93a30010 lbu r3,0x0010(r29)
0018b3a4: 3c018019 lui r1,0x8019
0018b3a8: ac222d90 sw r2,0x2d90(r1) Store pointer2 of defending unit
0018b3ac: 3c028019 lui r2,0x8019
0018b3b0: 244238c0 addiu r2,r2,0x38c0
0018b3b4: 3c018019 lui r1,0x8019
0018b3b8: a020390e sb r0,0x390e(r1) Store 0 into ????
0018b3bc: a0430000 sb r3,0x0000(r2) Store ID of the attacking unit.
0018b3c0: 90430000 lbu r3,0x0000(r2)
0018b3c4: 3c028019 lui r2,0x8019
0018b3c8: 24422da0 addiu r2,r2,0x2da0
0018b3cc: 3c018019 lui r1,0x8019
0018b3d0: ac222d8c sw r2,0x2d8c(r1) Stores 192da0 into Pointer2 of attacking unit?!
0018b3d4: 000310c0 sll r2,r3,0x03
0018b3d8: 00431023 subu r2,r2,r3
0018b3dc: 00021180 sll r2,r2,0x06
0018b3e0: 3c038019 lui r3,0x8019
0018b3e4: 8c63f5f0 lw r3,-0x0a10(r3)
0018b3e8: 00441021 addu r2,r2,r4
0018b3ec: 3c018019 lui r1,0x8019
0018b3f0: ac222d94 sw r2,0x2d94(r1) Store pointer of attacking unit
0018b3f4: 10600009 beq r3,r0,0x0018b41c If Reaction did not activate, GOTO ???
0018b3f8: 00000000 nop
0018b3fc: 0c062bcb jal 0x0018af2c ELSE, setup Reaction
0018b400: 00000000 nop
0018b404: 10400005 beq r2,r0,0x0018b41c If reaction failed, GOTO ???
0018b408: 00000000 nop
0018b40c: 0c062c9d jal 0x0018b274 Store correct weapon ID, modified by action menu ID (this should be deleted anyways)
0018b410: 27a40010 addiu r4,r29,0x0010
0018b414: 08062e77 j 0x0018b9dc GOTO END
0018b418: 00001021 addu r2,r0,r0
0018b41c: 3c028019 lui r2,0x8019
0018b420: 904238ed lbu r2,0x38ed(r2)
0018b424: 00000000 nop
0018b428: 30420080 andi r2,r2,0x0080
0018b42c: 10400005 beq r2,r0,0x0018b444 If NOT Crystal/Treasure Box/Please Eat(?), GOTO normal attack
0018b430: 00000000 nop
0018b434: 0c062b8f jal 0x0018ae3c Erase unit from map (?)
0018b438: 00000000 nop
0018b43c: 08062e77 j 0x0018b9dc GOTO END
0018b440: 00001021 addu r2,r0,r0
0018b444: 3c048019 lui r4,0x8019
0018b448: 8c842d98 lw r4,0x2d98(r4)
0018b44c: 0c060428 jal 0x001810a0
0018b450: 00000000 nop
0018b454: 000210c0 sll r2,r2,0x03
0018b458: 3c018019 lui r1,0x8019
0018b45c: 00220821 addu r1,r1,r2
0018b460: 9022f8cc lbu r2,-0x0734(r1)
0018b464: 3c038019 lui r3,0x8019
0018b468: 906338c3 lbu r3,0x38c3(r3)
0018b46c: 3042003f andi r2,r2,0x003f
0018b470: 3c018019 lui r1,0x8019
0018b474: a02238cd sb r2,0x38cd(r1) Store terrain type into 1938cd.
0018b478: 14600005 bne r3,r0,0x0018b490
0018b47c: 00000000 nop
0018b480: 3c078019 lui r7,0x8019
0018b484: 90e738c4 lbu r7,0x38c4(r7)
0018b488: 08062d26 j 0x0018b498
0018b48c: 00000000 nop
0018b490: 3c078019 lui r7,0x8019
0018b494: 90e738c5 lbu r7,0x38c5(r7)
0018b498: 93a30011 lbu r3,0x0011(r29) Load equipment ID type
0018b49c: 34020013 ori r2,r0,0x0013
0018b4a0: 14620004 bne r3,r2,0x0018b4b4 If not shields, r2 is weapon ID
0018b4a4: 30e200ff andi r2,r7,0x00ff
0018b4a8: 93a70018 lbu r7,0x0018(r29)
0018b4ac: 00000000 nop
0018b4b0: 30e200ff andi r2,r7,0x00ff ELSE, r2 = 0xFF
0018b4b4: 2c420080 sltiu r2,r2,0x0080
0018b4b8: 14400002 bne r2,r0,0x0018b4c4
0018b4bc: 00000000 nop
0018b4c0: 00003821 addu r7,r0,r0 If equipment type was shields, weapon ID = 0
0018b4c4: 97a30012 lhu r3,0x0012(r29)
0018b4c8: 3c108019 lui r16,0x8019
0018b4cc: 261038d8 addiu r16,r16,0x38d8
0018b4d0: a2070000 sb r7,0x0000(r16) Store weapon ID.
0018b4d4: 3c018019 lui r1,0x8019
0018b4d8: a42338d6 sh r3,0x38d6(r1) Store used ability ID.
0018b4dc: 3c028019 lui r2,0x8019
0018b4e0: 944238d6 lhu r2,0x38d6(r2)
0018b4e4: 3c018019 lui r1,0x8019
0018b4e8: a02038d9 sb r0,0x38d9(r1) Set 2H to false.
0018b4ec: 2c420171 sltiu r2,r2,0x0171
0018b4f0: 14400002 bne r2,r0,0x0018b4fc If Move ID < Hi-Potion (shouldn't this be potion?), GOTO get ability pointer.
0018b4f4: 26050018 addiu r5,r16,0x0018
0018b4f8: 00001821 addu r3,r0,r0 ELSE, load the pointer of first attack.
0018b4fc: 000320c0 sll r4,r3,0x03
0018b500: 00832023 subu r4,r4,r3
0018b504: 00042040 sll r4,r4,0x01
0018b508: 3c028006 lui r2,0x8006
0018b50c: 2442fbf0 addiu r2,r2,0xfbf0
0018b510: 00822021 addu r4,r4,r2
0018b514: 3406000e ori r6,r0,0x000e
0018b518: 30e200ff andi r2,r7,0x00ff
0018b51c: 000210c0 sll r2,r2,0x03 r2 = weapon ID * 8
0018b520: 3c038006 lui r3,0x8006
0018b524: 24633ab8 addiu r3,r3,0x3ab8
0018b528: 0c017895 jal 0x0005e254 Store ability data into 0x1938f0-d
0018b52c: 00438821 addu r17,r2,r3 r17 = pointer of weapon
0018b530: 02202021 addu r4,r17,r0
0018b534: 26050026 addiu r5,r16,0x0026
0018b538: 0c017895 jal 0x0005e254 Store weapon data into 0x1938fe-905
0018b53c: 34060008 ori r6,r0,0x0008
0018b540: 92240007 lbu r4,0x0007(r17)
0018b544: 3c038019 lui r3,0x8019
0018b548: 8c632d94 lw r3,0x2d94(r3)
0018b54c: 34020001 ori r2,r0,0x0001
0018b550: 3c018019 lui r1,0x8019
0018b554: a02038e4 sb r0,0x38e4(r1) Default Charge (on charged attacks) = 0
0018b558: 3c018019 lui r1,0x8019
0018b55c: a02238e5 sb r2,0x38e5(r1) Default formula = 01
0018b560: 3c018019 lui r1,0x8019
0018b564: a02438da sb r4,0x38da(r1) Store weapon proc
0018b568: 90620026 lbu r2,0x0026(r3)
0018b56c: 3c038019 lui r3,0x8019
0018b570: 8c632d98 lw r3,0x2d98(r3)
0018b574: 3c018019 lui r1,0x8019
0018b578: a02238d3 sb r2,0x38d3(r1) Store faith of attacker (never used)
0018b57c: 90620026 lbu r2,0x0026(r3)
0018b580: 3c018019 lui r1,0x8019
0018b584: a02238d2 sb r2,0x38d2(r1) Store faith of defender (never used)
0018b588: 0c062b7d jal 0x0018adf4 Clear micro-unit RAM (this code in SCUS is terribly inefficient), but set attack type = psuedo-status, hit = true, and base accuracy = 100%
0018b58c: 00000000 nop
0018b590: 93a20011 lbu r2,0x0011(r29)
0018b594: 3c038019 lui r3,0x8019
0018b598: 946338c8 lhu r3,0x38c8(r3) r3 = 0x1 if spell proc is true, and 0x0 otherwise
0018b59c: 3c018019 lui r1,0x8019
0018b5a0: a02238d4 sb r2,0x38d4(r1) Store Action Menu # (put a read on this location to find hard-coded WTF)
0018b5a4: 304200ff andi r2,r2,0x00ff
0018b5a8: 3c018006 lui r1,0x8006
0018b5ac: 00220821 addu r1,r1,r2
0018b5b0: 90325cb4 lbu r18,0x5cb4(r1) r18 = Action Menu ID
0018b5b4: 10600009 beq r3,r0,0x0018b5dc
0018b5b8: 00000000 nop
0018b5bc: 3c028019 lui r2,0x8019
0018b5c0: 944238c6 lhu r2,0x38c6(r2)
0018b5c4: 00000000 nop
0018b5c8: a7a20012 sh r2,0x0012(r29) If Spell proc is true, store proc ID as used ability ID (temporary)
0018b5cc: 3c018019 lui r1,0x8019
0018b5d0: a42238d6 sh r2,0x38d6(r1) Store proc ID as used ability ID (unit RAM)
0018b5d4: 08062d79 j 0x0018b5e4
0018b5d8: 00009021 addu r18,r0,r0 Ignore action menu ID.
0018b5dc: 3c018019 lui r1,0x8019
0018b5e0: a42038c6 sh r0,0x38c6(r1) If Spell proc is false, proc ID = 0.
0018b5e4: 87a30012 lh r3,0x0012(r29)
0018b5e8: 3c028006 lui r2,0x8006
0018b5ec: 2442ebf0 addiu r2,r2,0xebf0
0018b5f0: 000318c0 sll r3,r3,0x03 Load AI pointer of used ability
0018b5f4: 00621821 addu r3,r3,r2
0018b5f8: 90620004 lbu r2,0x0004(r3)
0018b5fc: 3c048019 lui r4,0x8019
0018b600: 8c842d90 lw r4,0x2d90(r4)
0018b604: 30420003 andi r2,r2,0x0003
0018b608: a0820018 sb r2,0x0018(r4) Store target enemy/self flags into byte 0x18 of target's micro-unit RAM
0018b60c: 90620007 lbu r2,0x0007(r3)
0018b610: 00000000 nop
0018b614: 30420001 andi r2,r2,0x0001
0018b618: 10400009 beq r2,r0,0x0018b640
0018b61c: 324300ff andi r3,r18,0x00ff
0018b620: 3c038019 lui r3,0x8019
0018b624: 8c632d90 lw r3,0x2d90(r3)
0018b628: 00000000 nop
0018b62c: 90620018 lbu r2,0x0018(r3)
0018b630: 00000000 nop
0018b634: 24420080 addiu r2,r2,0x0080
0018b638: a0620018 sb r2,0x0018(r3) If animate on miss, store animate on miss flag as bit 8 into byte 0x18 of target's micro-unit RAM
0018b63c: 324300ff andi r3,r18,0x00ff
0018b640: 34020007 ori r2,r0,0x0007
0018b644: 14620006 bne r3,r2,0x0018b660 Branch if Action Menu Type isn't Draw Out
0018b648: 2c62000b sltiu r2,r3,0x000b
0018b64c: 93a20018 lbu r2,0x0018(r29)
0018b650: 00000000 nop
0018b654: 24420026 addiu r2,r2,0x0026
0018b658: a7a20012 sh r2,0x0012(r29) If Draw Out, store weapon ID of katana as used ability ID (temp).
0018b65c: 2c62000b sltiu r2,r3,0x000b
0018b660: 10400095 beq r2,r0,0x0018b8b8 Branch if Action Menu Type is defend/equip change; weapon formula = 0x01
0018b664: 00031080 sll r2,r3,0x02
0018b668: 3c018017 lui r1,0x8017
0018b66c: 00220821 addu r1,r1,r2
0018b670: 8c224344 lw r2,0x4344(r1)
0018b674: 00000000 nop
0018b678: 00400008 jr r2
0018b67c: 00000000 nop
0018b680: 3c048019 lui r4,0x8019
0018b684: 8c842d94 lw r4,0x2d94(r4)
0018b688: 0c05fcb6 jal 0x0017f2d8 ELEMENTAL terrain to skill hard-coding
0018b68c: 00000000 nop
0018b690: a7a20012 sh r2,0x0012(r29)
0018b694: 87a20012 lh r2,0x0012(r29)
0018b698: 00000000 nop
0018b69c: 28420171 slti r2,r2,0x0171
0018b6a0: 10400086 beq r2,r0,0x0018b8bc Branch if Move ID >= Hi-Potion (shouldn't this be potion?) to get formula address, using the basic attack formula
0018b6a4: 34100001 ori r16,r0,0x0001
0018b6a8: 3c028019 lui r2,0x8019
0018b6ac: 8c422d94 lw r2,0x2d94(r2)
0018b6b0: 00000000 nop
0018b6b4: 9042005a lbu r2,0x005a(r2)
0018b6b8: 00000000 nop
0018b6bc: 30420002 andi r2,r2,0x0002
0018b6c0: 1040000d beq r2,r0,0x0018b6f8 Branch if not frogged
0018b6c4: 00000000 nop
0018b6c8: 3c058019 lui r5,0x8019
0018b6cc: 24a538c8 addiu r5,r5,0x38c8
0018b6d0: 94a20000 lhu r2,0x0000(r5)
0018b6d4: 00000000 nop
0018b6d8: 14400007 bne r2,r0,0x0018b6f8 Branch if spell proc is true (but I don't recall frogged holy lance users doing normal damage, so frog probably overrides this byte; check is redundant)
0018b6dc: 24a50036 addiu r5,r5,0x0036
0018b6e0: 3c018019 lui r1,0x8019
0018b6e4: a02038d8 sb r0,0x38d8(r1) If frogged and no spell proc, weapon ID = 0.
0018b6e8: 3c048006 lui r4,0x8006
0018b6ec: 24843ab8 addiu r4,r4,0x3ab8
0018b6f0: 0c017895 jal 0x0005e254 Store data for the null weapon (fists) into 0x1938fe-905
0018b6f4: 34060008 ori r6,r0,0x0008
0018b6f8: 3c058019 lui r5,0x8019
0018b6fc: 24a538f0 addiu r5,r5,0x38f0
0018b700: 87a20012 lh r2,0x0012(r29)
0018b704: 3406000e ori r6,r0,0x000e
0018b708: 000280c0 sll r16,r2,0x03
0018b70c: 02028023 subu r16,r16,r2
0018b710: 00108040 sll r16,r16,0x01
0018b714: 3c028006 lui r2,0x8006
0018b718: 2442fbf0 addiu r2,r2,0xfbf0
0018b71c: 02028021 addu r16,r16,r2
0018b720: 0c017895 jal 0x0005e254 Store ability data into 0x1938f0-d (but didn't we already do this?)
0018b724: 02002021 addu r4,r16,r0
0018b728: 9202000b lbu r2,0x000b(r16)
0018b72c: 3c018019 lui r1,0x8019
0018b730: a02238da sb r2,0x38da(r1) Store status proc from spell
0018b734: 3c028019 lui r2,0x8019
0018b738: 904238f3 lbu r2,0x38f3(r2)
0018b73c: 92100008 lbu r16,0x0008(r16)
0018b740: 30420024 andi r2,r2,0x0024
0018b744: 1440005e bne r2,r0,0x0018b8c0 Branch if ranged weapon or weapon strike to get formula address, using the spell's formula
0018b748: 320200ff andi r2,r16,0x00ff
0018b74c: 324300ff andi r3,r18,0x00ff
0018b750: 34020007 ori r2,r0,0x0007
0018b754: 1062005a beq r3,r2,0x0018b8c0 Branch if Draw Out to get formula address, using the spell's formula
0018b758: 320200ff andi r2,r16,0x00ff
0018b75c: 3c018019 lui r1,0x8019
0018b760: a02038d8 sb r0,0x38d8(r1) If not, Used Weapon ID = 0
0018b764: 08062e2f j 0x0018b8bc Jump to get formula address, using the spell's formula [but WP = 0]
0018b768: 00000000 nop
0018b76c: 93a70018 lbu r7,0x0018(r29)
0018b770: 00000000 nop
0018b774: 2ce200f0 sltiu r2,r7,0x00f0
0018b778: 14400050 bne r2,r0,0x0018b8bc Branch if ITEM was not used
0018b77c: 34100001 ori r16,r0,0x0001
0018b780: 3c048019 lui r4,0x8019
0018b784: 248438d8 addiu r4,r4,0x38d8
0018b788: a0870000 sb r7,0x0000(r4) If ITEM was used, store item ID as Used Weapon ID.
0018b78c: 24e70010 addiu r7,r7,0x0010
0018b790: 24840018 addiu r4,r4,0x0018
0018b794: 30e200ff andi r2,r7,0x00ff
0018b798: 00028040 sll r16,r2,0x01
0018b79c: 02028021 addu r16,r16,r2
0018b7a0: 3c028006 lui r2,0x8006
0018b7a4: 24423f98 addiu r2,r2,0x3f98
0018b7a8: 02028021 addu r16,r16,r2
0018b7ac: 3c018019 lui r1,0x8019
0018b7b0: a02738db sb r7,0x38db(r1) Store item used as Conusmable ID (which is simply item ID - 0xF0)
0018b7b4: 92020002 lbu r2,0x0002(r16)
0018b7b8: 3c018019 lui r1,0x8019
0018b7bc: a02238da sb r2,0x38da(r1) Store status proc of item
0018b7c0: 0c017991 jal 0x0005e644 Set to zero ability data from 0x1938f0-d (I'm assuming ability range is then later determined)
0018b7c4: 3405000e ori r5,r0,0x000e
0018b7c8: 92100000 lbu r16,0x0000(r16)
0018b7cc: 08062e30 j 0x0018b8c0 If ITEM, get formula address of item formula.
0018b7d0: 320200ff andi r2,r16,0x00ff
0018b7d4: 08062e2f j 0x0018b8bc If THROW, get formula address with formula = 0x63
0018b7d8: 34100063 ori r16,r0,0x0063
0018b7dc: 08062e2f j 0x0018b8bc If JUMP, get formula address with formula = 0x64
0018b7e0: 34100064 ori r16,r0,0x0064
0018b7e4: 97a30012 lhu r3,0x0012(r29)
0018b7e8: 00000000 nop
0018b7ec: 2462fe6a addiu r2,r3,0xfe6a
0018b7f0: 2c420008 sltiu r2,r2,0x0008
0018b7f4: 14400003 bne r2,r0,0x0018b804 Branch if skill is CHARGE (where does CHARGE decide to always use formula 05?)
0018b7f8: 00031040 sll r2,r3,0x01
0018b7fc: 34030196 ori r3,r0,0x0196 ELSE, default to Charge +1 (if I change this a bit, should be possible to make Charge accept Charge +X attacks and normal attacks)
0018b800: 00031040 sll r2,r3,0x01
0018b804: 3c018006 lui r1,0x8006
0018b808: 00220821 addu r1,r1,r2
0018b80c: 90220d19 lbu r2,0x0d19(r1)
0018b810: 3c018019 lui r1,0x8019
0018b814: a02238e4 sb r2,0x38e4(r1) Store charge power boost
0018b818: 3c028019 lui r2,0x8019
0018b81c: 904238ff lbu r2,0x38ff(r2)
0018b820: 92300002 lbu r16,0x0002(r17)
0018b824: 30420004 andi r2,r2,0x0004
0018b828: 10400025 beq r2,r0,0x0018b8c0 If weapon can't be 2H, get formula address with formula = weapon formula
0018b82c: 320200ff andi r2,r16,0x00ff
0018b830: 3c038019 lui r3,0x8019
0018b834: 8c632d94 lw r3,0x2d94(r3)
0018b838: 00000000 nop
0018b83c: 90620091 lbu r2,0x0091(r3)
0018b840: 00000000 nop
0018b844: 30420002 andi r2,r2,0x0002
0018b848: 1040001c beq r2,r0,0x0018b8bc If 2H support is not used, get formula address with formula = weapon formula
0018b84c: 340200ff ori r2,r0,0x00ff
0018b850: 9064001d lbu r4,0x001d(r3)
0018b854: 00000000 nop
0018b858: 14820009 bne r4,r2,0x0018b880 Branch to ??? if 2H is an active support but RH weapon exists
0018b85c: 00000000 nop
0018b860: 9062001e lbu r2,0x001e(r3)
0018b864: 00000000 nop
0018b868: 14440005 bne r2,r4,0x0018b880 Branch to ??? if 2H is an active support but RH shield exists (no...this should cause auto-void)
0018b86c: 34020001 ori r2,r0,0x0001
0018b870: 3c018019 lui r1,0x8019
0018b874: a02238d9 sb r2,0x38d9(r1) ELSE, set 2H flag as true.
0018b878: 3c038019 lui r3,0x8019
0018b87c: 8c632d94 lw r3,0x2d94(r3)
0018b880: 00000000 nop
0018b884: 9064001f lbu r4,0x001f(r3)
0018b888: 340200ff ori r2,r0,0x00ff
0018b88c: 1482000c bne r4,r2,0x0018b8c0 Branch to get formula address using weapon formula if 2H is an active support and LH weapon exists
0018b890: 320200ff andi r2,r16,0x00ff
0018b894: 90620020 lbu r2,0x0020(r3)
0018b898: 00000000 nop
0018b89c: 14440008 bne r2,r4,0x0018b8c0 Branch to get formula address using weapon formula if 2H is an active support and LH shield exists
0018b8a0: 320200ff andi r2,r16,0x00ff
0018b8a4: 34020001 ori r2,r0,0x0001
0018b8a8: 3c018019 lui r1,0x8019
0018b8ac: a02238d9 sb r2,0x38d9(r1) ELSE, set 2H flag as true and get formula address using weapon formula
0018b8b0: 08062e30 j 0x0018b8c0
0018b8b4: 320200ff andi r2,r16,0x00ff
0018b8b8: 34100001 ori r16,r0,0x0001
0018b8bc: 320200ff andi r2,r16,0x00ff
0018b8c0: 3c018019 lui r1,0x8019
0018b8c4: a42038c8 sh r0,0x38c8(r1) Turn off spell proc (obviously, this would make no sense unless this routine is run twice, first by the regular attack, and then by the spell proc)
0018b8c8: 3c018019 lui r1,0x8019
0018b8cc: a02038ed sb r0,0x38ed(r1) Zero byte 0x1938ed (but this byte is always either zero....or above 0x80, in which this code gets skipped...WTF?)
0018b8d0: 10400003 beq r2,r0,0x0018b8e0
0018b8d4: 2c420065 sltiu r2,r2,0x0065
0018b8d8: 14400002 bne r2,r0,0x0018b8e4 If formula is from 0x01 to 0x64, GOTO calculate offset
0018b8dc: 00000000 nop
0018b8e0: 34100001 ori r16,r0,0x0001 ELSE, formula is hard-coded to 0x01
0018b8e4: 3c058019 lui r5,0x8019
0018b8e8: 24a538da addiu r5,r5,0x38da
0018b8ec: 90a70000 lbu r7,0x0000(r5) r7 = Spell Proc ID
0018b8f0: 321100ff andi r17,r16,0x00ff r17 = Formula ID
0018b8f4: 34020003 ori r2,r0,0x0003
0018b8f8: 16220002 bne r17,r2,0x0018b904 If formula isn't Guns, GOTO ???
0018b8fc: 24a5002c addiu r5,r5,0x002c
0018b900: 00003821 addu r7,r0,r0 If formula is guns, spell proc ID = 0
0018b904: 30e200ff andi r2,r7,0x00ff
0018b908: 00022040 sll r4,r2,0x01
0018b90c: 00822021 addu r4,r4,r2
0018b910: 00042040 sll r4,r4,0x01
0018b914: 3c028006 lui r2,0x8006
0018b918: 24423fc4 addiu r2,r2,0x3fc4
0018b91c: 00822021 addu r4,r4,r2
0018b920: 0c017895 jal 0x0005e254 Store status proc type and statii to 0x193906-0B
0018b924: 34060006 ori r6,r0,0x0006
0018b928: 0c062e7e jal 0x0018b9f8 Write status cured to 0x193860-64
0018b92c: 00000000 nop
0018b930: 3c018019 lui r1,0x8019
0018b934: a03038e5 sb r16,0x38e5(r1) Store formula ID.
0018b938: 0c063279 jal 0x0018c9e4 Hard-coded stuff (Reflect status triggers the "unused" reaction Reflect, Blade Grasp/Arrow Guard modify accuracy, spell/status proc is nulled by specials...)
0018b93c: 00000000 nop
0018b940: 3c028019 lui r2,0x8019
0018b944: 8c422d90 lw r2,0x2d90(r2)
0018b948: 00000000 nop
0018b94c: 90420000 lbu r2,0x0000(r2)
0018b950: 00000000 nop
0018b954: 14400003 bne r2,r0,0x0018b964 Branch to get formula address if attack hits.
0018b958: 00111080 sll r2,r17,0x02
0018b95c: 08062e77 j 0x0018b9dc If miss, GOTO ???
0018b960: 34020001 ori r2,r0,0x0001
0018b964: 3c018019 lui r1,0x8019
0018b968: 00220821 addu r1,r1,r2
0018b96c: 8c22f610 lw r2,-0x09f0(r1)
0018b970: 00000000 nop
0018b974: 0040f809 jalr r2,r31 Jump to Formula Routine
The destruction of the will is the rape of the mind.
The dogmas of every era are nothing but the fantasies of those in power; their dreams are our waking nightmares.

Xifanie

November 29, 2011, 01:41:28 am #105 Last Edit: November 29, 2011, 04:14:44 am by Xifanie
00143bd8: 27bdffb0 addiu r29,r29,0xffb0   
00143bdc: 34040044 ori r4,r0,0x0044       
00143be0: afbf004c sw r31,0x004c(r29)     
00143be4: afbe0048 sw r30,0x0048(r29)     
00143be8: afb70044 sw r23,0x0044(r29)     
00143bec: afb60040 sw r22,0x0040(r29)     
00143bf0: afb5003c sw r21,0x003c(r29)     
00143bf4: afb40038 sw r20,0x0038(r29)     
00143bf8: afb30034 sw r19,0x0034(r29)     
00143bfc: afb20030 sw r18,0x0030(r29)     
00143c00: afb1002c sw r17,0x002c(r29)     
00143c04: 0c052752 jal 0x00149d48         
00143c08: afb00028 sw r16,0x0028(r29)     
00143c0c: 0c04b721 jal 0x0012dc84         
00143c10: 00000000 nop                   
00143c14: 10400003 beq r2,r0,0x00143c24   
00143c18: 00000000 nop                   
00143c1c: 0c04b6f7 jal 0x0012dbdc         
00143c20: 00000000 nop                   
00143c24: 3c028016 lui r2,0x8016         
00143c28: 94425ff6 lhu r2,0x5ff6(r2)     
00143c2c: 00000000 nop                   
00143c30: 1440000c bne r2,r0,0x00143c64   
00143c34: 340200aa ori r2,r0,0x00aa       
00143c38: 34100002 ori r16,r0,0x0002     
00143c3c: 0c053274 jal 0x0014c9d0         
00143c40: 02002021 addu r4,r16,r0         
00143c44: 26100001 addiu r16,r16,0x0001   
00143c48: 2a02000e slti r2,r16,0x000e     
00143c4c: 1440fffb bne r2,r0,0x00143c3c   
00143c50: 00000000 nop                   
00143c54: 0c04b765 jal 0x0012dd94         
00143c58: 00000000 nop                   
00143c5c: 08050f21 j 0x00143c84           
00143c60: 00000000 nop                   
00143c64: 3c018017 lui r1,0x8017         
00143c68: a422864a sh r2,-0x79b6(r1)     
00143c6c: 3c018017 lui r1,0x8017         
00143c70: a4228652 sh r2,-0x79ae(r1)     
00143c74: 3c018017 lui r1,0x8017         
00143c78: a422865a sh r2,-0x79a6(r1)     
00143c7c: 3c018017 lui r1,0x8017         
00143c80: a4228662 sh r2,-0x799e(r1)     
00143c84: 0c05214f jal 0x0014853c         
00143c88: 00000000 nop                   
00143c8c: 0c04ed64 jal 0x0013b590         
00143c90: 340401fd ori r4,r0,0x01fd       
00143c94: 10400006 beq r2,r0,0x00143cb0   
00143c98: 00000000 nop                   
00143c9c: 00002021 addu r4,r0,r0         
00143ca0: 0c052336 jal 0x00148cd8         
00143ca4: 00002821 addu r5,r0,r0         
00143ca8: 08050f2f j 0x00143cbc           
00143cac: 34040028 ori r4,r0,0x0028       
00143cb0: 0c04b639 jal 0x0012d8e4         
00143cb4: 00000000 nop                   
00143cb8: 34040028 ori r4,r0,0x0028       
00143cbc: 0c04ed91 jal 0x0013b644         
00143cc0: 00002821 addu r5,r0,r0         
00143cc4: 34040029 ori r4,r0,0x0029       
00143cc8: 0c04ed91 jal 0x0013b644         
00143ccc: 00002821 addu r5,r0,r0         
00143cd0: 3404002a ori r4,r0,0x002a       
00143cd4: 0c04ed91 jal 0x0013b644         
00143cd8: 00002821 addu r5,r0,r0         
00143cdc: 0c04f680 jal 0x0013da00         
00143ce0: 34040001 ori r4,r0,0x0001       
00143ce4: 0c04b771 jal 0x0012ddc4         
00143ce8: 0000f021 addu r30,r0,r0         
00143cec: 340303e8 ori r3,r0,0x03e8       
00143cf0: 34100003 ori r16,r0,0x0003     
00143cf4: 3c028016 lui r2,0x8016         
00143cf8: 24425fee addiu r2,r2,0x5fee     
00143cfc: a4430000 sh r3,0x0000(r2)       
00143d00: 2610ffff addiu r16,r16,0xffff   
00143d04: 0601fffd bgez r16,0x00143cfc   
00143d08: 2442fffe addiu r2,r2,0xfffe     
00143d0c: 3c028017 lui r2,0x8017         
00143d10: 8c423ca4 lw r2,0x3ca4(r2)       
00143d14: 00000000 nop                   
00143d18: 005e1021 addu r2,r2,r30         
00143d1c: 24510001 addiu r17,r2,0x0001   
00143d20: 90520001 lbu r18,0x0001(r2)     
00143d24: 90550002 lbu r21,0x0002(r2)     
00143d28: 90560003 lbu r22,0x0003(r2)     
00143d2c: 90570004 lbu r23,0x0004(r2)     
00143d30: 90540000 lbu r20,0x0000(r2)     
00143d34: 0c05181e jal 0x00146078         
00143d38: 02202021 addu r4,r17,r0         
00143d3c: 00409821 addu r19,r2,r0         
00143d40: 340200c0 ori r2,r0,0x00c0       
00143d44: 12820877 beq r20,r2,0x00145f24  {C0} GOTO END
00143d48: 340200f2 ori r2,r0,0x00f2       
00143d4c: 12820875 beq r20,r2,0x00145f24  {F2} GOTO END
00143d50: 2682ff60 addiu r2,r20,0xff60   
00143d54: 2c420006 sltiu r2,r2,0x0006     
00143d58: 10400005 beq r2,r0,0x00143d70   
00143d5c: 2682ff50 addiu r2,r20,0xff50   
00143d60: 0c0527c4 jal 0x00149f10         {A0-A5}
00143d64: 02802021 addu r4,r20,r0         
00143d68: 080517c9 j 0x00145f24           GOTO END
00143d6c: 00000000 nop                   
00143d70: 2c42000f sltiu r2,r2,0x000f     
00143d74: 1040000e beq r2,r0,0x00143db0   
00143d78: 3402004d ori r2,r0,0x004d       
00143d7c: 3c048017 lui r4,0x8017          {B0-BE}
00143d80: 8c843ca4 lw r4,0x3ca4(r4)       
00143d84: 3272ffff andi r18,r19,0xffff   
00143d88: 03c42021 addu r4,r30,r4         
00143d8c: 0c05181e jal 0x00146078         
00143d90: 24840003 addiu r4,r4,0x0003     
00143d94: 02802021 addu r4,r20,r0         
00143d98: 02402821 addu r5,r18,r0         
00143d9c: 3046ffff andi r6,r2,0xffff     
00143da0: 0c052806 jal 0x0014a018         
00143da4: 00003821 addu r7,r0,r0         
00143da8: 080517c9 j 0x00145f24           GOTO END
00143dac: 00000000 nop                   
00143db0: 16820005 bne r20,r2,0x00143dc8 
00143db4: 3402007a ori r2,r0,0x007a       
00143db8: 3c018017 lui r1,0x8017          {4D}
00143dbc: a432d9bc sh r18,-0x2644(r1)     
00143dc0: 080512d0 j 0x00144b40           
00143dc4: 00000000 nop                   
00143dc8: 16820009 bne r20,r2,0x00143df0 
00143dcc: 34020043 ori r2,r0,0x0043       
00143dd0: 0c04ed64 jal 0x0013b590         {7A} DismissUnit ?
00143dd4: 340401fc ori r4,r0,0x01fc       
00143dd8: 14400852 bne r2,r0,0x00145f24   
00143ddc: 00132400 sll r4,r19,0x10       
00143de0: 0c04d02b jal 0x001340ac         
00143de4: 00042403 sra r4,r4,0x10         
00143de8: 080517c9 j 0x00145f24           GOTO END
00143dec: 00000000 nop                   
00143df0: 16820127 bne r20,r2,0x00144290 
00143df4: 34020099 ori r2,r0,0x0099       
00143df8: 0c053216 jal 0x0014c858         {43}
00143dfc: 34040004 ori r4,r0,0x0004       
00143e00: 0c04ed64 jal 0x0013b590         
00143e04: 340401fc ori r4,r0,0x01fc       
00143e08: 1440004a bne r2,r0,0x00143f34   
00143e0c: 34080001 ori r8,r0,0x0001       
00143e10: 1648000b bne r18,r8,0x00143e40 
00143e14: 34020006 ori r2,r0,0x0006       
00143e18: 0c04ed64 jal 0x0013b590         
00143e1c: 34040027 ori r4,r0,0x0027       
00143e20: 2842004e slti r2,r2,0x004e     
00143e24: 10400003 beq r2,r0,0x00143e34   
00143e28: 00000000 nop                   
00143e2c: 0c010a84 jal 0x00042a10         
00143e30: 00000000 nop                   
00143e34: 0c04d060 jal 0x00134180         
00143e38: 00000000 nop                   
00143e3c: 34020006 ori r2,r0,0x0006       
00143e40: 1642003d bne r18,r2,0x00143f38 
00143e44: 34020002 ori r2,r0,0x0002       
00143e48: 34120002 ori r18,r0,0x0002     
00143e4c: 34110003 ori r17,r0,0x0003     
00143e50: 34100800 ori r16,r0,0x0800     
00143e54: 02402021 addu r4,r18,r0         
00143e58: 00002821 addu r5,r0,r0         
00143e5c: 00003021 addu r6,r0,r0         
00143e60: 0c05328e jal 0x0014ca38         
00143e64: 34070001 ori r7,r0,0x0001       
00143e68: 3c018017 lui r1,0x8017         
00143e6c: 00300821 addu r1,r1,r16         
00143e70: ac3198b8 sw r17,-0x6748(r1)     
00143e74: 0c053274 jal 0x0014c9d0         
00143e78: 02402021 addu r4,r18,r0         
00143e7c: 26520001 addiu r18,r18,0x0001   
00143e80: 2a42000f slti r2,r18,0x000f     
00143e84: 1440fff3 bne r2,r0,0x00143e54   
00143e88: 26100400 addiu r16,r16,0x0400   
00143e8c: 0c04ed64 jal 0x0013b590         
00143e90: 34040027 ori r4,r0,0x0027       
00143e94: 3403012c ori r3,r0,0x012c       
00143e98: 10430004 beq r2,r3,0x00143eac   
00143e9c: 00000000 nop                   
00143ea0: 34040064 ori r4,r0,0x0064       
00143ea4: 0c04ed91 jal 0x0013b644         
00143ea8: 34050001 ori r5,r0,0x0001       
00143eac: 34040051 ori r4,r0,0x0051       
00143eb0: 0c04ed91 jal 0x0013b644         
00143eb4: 34050001 ori r5,r0,0x0001       
00143eb8: 0c04ef05 jal 0x0013bc14         
00143ebc: 3404000e ori r4,r0,0x000e       
00143ec0: 34020005 ori r2,r0,0x0005       
00143ec4: 3c018016 lui r1,0x8016         
00143ec8: ac22600c sw r2,0x600c(r1)       
00143ecc: 0c0532a0 jal 0x0014ca80         
00143ed0: 00000000 nop                   
00143ed4: 3c028016 lui r2,0x8016         
00143ed8: 8c42600c lw r2,0x600c(r2)       
00143edc: 00000000 nop                   
00143ee0: 1440fffa bne r2,r0,0x00143ecc   
00143ee4: 34040064 ori r4,r0,0x0064       
00143ee8: 0c04ed91 jal 0x0013b644         
00143eec: 00002821 addu r5,r0,r0         
00143ef0: 34120002 ori r18,r0,0x0002     
00143ef4: 34110003 ori r17,r0,0x0003     
00143ef8: 34100800 ori r16,r0,0x0800     
00143efc: 02402021 addu r4,r18,r0         
00143f00: 00002821 addu r5,r0,r0         
00143f04: 00003021 addu r6,r0,r0         
00143f08: 0c05328e jal 0x0014ca38         
00143f0c: 34070001 ori r7,r0,0x0001       
00143f10: 3c018017 lui r1,0x8017         
00143f14: 00300821 addu r1,r1,r16         
00143f18: ac3198b8 sw r17,-0x6748(r1)     
00143f1c: 0c053274 jal 0x0014c9d0         
00143f20: 02402021 addu r4,r18,r0         
00143f24: 26520001 addiu r18,r18,0x0001   
00143f28: 2a42000f slti r2,r18,0x000f     
00143f2c: 1440fff3 bne r2,r0,0x00143efc   
00143f30: 26100400 addiu r16,r16,0x0400   
00143f34: 34020002 ori r2,r0,0x0002       
00143f38: 12420003 beq r18,r2,0x00143f48 
00143f3c: 34020007 ori r2,r0,0x0007       
00143f40: 16420004 bne r18,r2,0x00143f54 
00143f44: 34020003 ori r2,r0,0x0003       
00143f48: 0c04d089 jal 0x00134224         
00143f4c: 00000000 nop                   
00143f50: 34020003 ori r2,r0,0x0003       
00143f54: 16420004 bne r18,r2,0x00143f68 
00143f58: 34020004 ori r2,r0,0x0004       
00143f5c: 0c04d092 jal 0x00134248         
00143f60: 00000000 nop                   
00143f64: 34020004 ori r2,r0,0x0004       
00143f68: 16420006 bne r18,r2,0x00143f84 
00143f6c: 34020005 ori r2,r0,0x0005       
00143f70: 0c051f3c jal 0x00147cf0         
00143f74: 00000000 nop                   
00143f78: 0c053216 jal 0x0014c858         
00143f7c: 34040078 ori r4,r0,0x0078       
00143f80: 34020005 ori r2,r0,0x0005       
00143f84: 16420004 bne r18,r2,0x00143f98 
00143f88: 34020008 ori r2,r0,0x0008       
00143f8c: 34080001 ori r8,r0,0x0001       
00143f90: 3c018017 lui r1,0x8017         
00143f94: ac2896f8 sw r8,-0x6908(r1)     
00143f98: 16420005 bne r18,r2,0x00143fb0 
00143f9c: 34020009 ori r2,r0,0x0009       
00143fa0: 3c018004 lui r1,0x8004         
00143fa4: ac2059cc sw r0,0x59cc(r1)       
00143fa8: 3c018004 lui r1,0x8004         
00143fac: ac2059d8 sw r0,0x59d8(r1)       
00143fb0: 16420005 bne r18,r2,0x00143fc8 
00143fb4: 3402000a ori r2,r0,0x000a       
00143fb8: 34040053 ori r4,r0,0x0053       
00143fbc: 0c04ed91 jal 0x0013b644         
00143fc0: 34050001 ori r5,r0,0x0001       
00143fc4: 3402000a ori r2,r0,0x000a       
00143fc8: 16420005 bne r18,r2,0x00143fe0 
00143fcc: 3402000b ori r2,r0,0x000b       
00143fd0: 34040053 ori r4,r0,0x0053       
00143fd4: 0c04ed91 jal 0x0013b644         
00143fd8: 00002821 addu r5,r0,r0         
00143fdc: 3402000b ori r2,r0,0x000b       
00143fe0: 1642000f bne r18,r2,0x00144020 
00143fe4: 3402000c ori r2,r0,0x000c       
00143fe8: 0c050cfa jal 0x001433e8         
00143fec: 00000000 nop                   
00143ff0: 3c028016 lui r2,0x8016         
00143ff4: 8442605c lh r2,0x605c(r2)       
00143ff8: 00000000 nop                   
00143ffc: 10400008 beq r2,r0,0x00144020   
00144000: 3402000c ori r2,r0,0x000c       
00144004: 0c0532a0 jal 0x0014ca80         
00144008: 00000000 nop                   
0014400c: 3c028016 lui r2,0x8016         
00144010: 8442605c lh r2,0x605c(r2)       
00144014: 00000000 nop                   
00144018: 1440fffa bne r2,r0,0x00144004   
0014401c: 3402000c ori r2,r0,0x000c       
00144020: 1642000c bne r18,r2,0x00144054 
00144024: 3402000d ori r2,r0,0x000d       
00144028: 34040013 ori r4,r0,0x0013       
0014402c: 34020013 ori r2,r0,0x0013       
00144030: 3c018016 lui r1,0x8016         
00144034: a4205fd8 sh r0,0x5fd8(r1)       
00144038: 3c018016 lui r1,0x8016         
0014403c: a4225fd4 sh r2,0x5fd4(r1)       
00144040: 3c018016 lui r1,0x8016         
00144044: a4205fd6 sh r0,0x5fd6(r1)       
00144048: 0c04f49e jal 0x0013d278         
0014404c: 00002821 addu r5,r0,r0         
00144050: 3402000d ori r2,r0,0x000d       
00144054: 16420023 bne r18,r2,0x001440e4 
00144058: 3402000e ori r2,r0,0x000e       
0014405c: 0c0602bf jal 0x00180afc         
00144060: 34040007 ori r4,r0,0x0007       
00144064: 00408821 addu r17,r2,r0         
00144068: 0c0602bf jal 0x00180afc         
0014406c: 34040008 ori r4,r0,0x0008       
00144070: 00403021 addu r6,r2,r0         
00144074: 92220047 lbu r2,0x0047(r17)     
00144078: 34040008 ori r4,r0,0x0008       
0014407c: a0c20047 sb r2,0x0047(r6)       
00144080: 92220048 lbu r2,0x0048(r17)     
00144084: 34050001 ori r5,r0,0x0001       
00144088: a0c20048 sb r2,0x0048(r6)       
0014408c: 96230048 lhu r3,0x0048(r17)     
00144090: 94c20048 lhu r2,0x0048(r6)     
00144094: 30638000 andi r3,r3,0x8000     
00144098: 30427fff andi r2,r2,0x7fff     
0014409c: 00431025 or r2,r2,r3           
001440a0: 0c023417 jal 0x0008d05c         
001440a4: a4c20048 sh r2,0x0048(r6)       
001440a8: 34080001 ori r8,r0,0x0001       
001440ac: 3c018016 lui r1,0x8016         
001440b0: a428604e sh r8,0x604e(r1)       
001440b4: 0c0532a0 jal 0x0014ca80         
001440b8: 00000000 nop                   
001440bc: 3c028016 lui r2,0x8016         
001440c0: 9442604e lhu r2,0x604e(r2)     
001440c4: 00000000 nop                   
001440c8: 1440fffa bne r2,r0,0x001440b4   
001440cc: 00000000 nop                   
001440d0: 0c0532a0 jal 0x0014ca80         
001440d4: 00000000 nop                   
001440d8: 0c0532a0 jal 0x0014ca80         
001440dc: 00000000 nop                   
001440e0: 3402000e ori r2,r0,0x000e       
001440e4: 1642002d bne r18,r2,0x0014419c 
001440e8: 34020011 ori r2,r0,0x0011       
001440ec: 00008021 addu r16,r0,r0         
001440f0: 0c0232ed jal 0x0008cbb4         
001440f4: 02002021 addu r4,r16,r0         
001440f8: 10400024 beq r2,r0,0x0014418c   
001440fc: 00000000 nop                   
00144100: 0c023374 jal 0x0008cdd0         
00144104: 02002021 addu r4,r16,r0         
00144108: 00409021 addu r18,r2,r0         
0014410c: 2402ffff addiu r2,r0,0xffff     
00144110: 1242001e beq r18,r2,0x0014418c 
00144114: 00000000 nop                   
00144118: 0c0602bf jal 0x00180afc         
0014411c: 02402021 addu r4,r18,r0         
00144120: 00408821 addu r17,r2,r0         
00144124: 92220047 lbu r2,0x0047(r17)     
00144128: 00000000 nop                   
0014412c: 2c420004 sltiu r2,r2,0x0004     
00144130: 10400008 beq r2,r0,0x00144154   
00144134: 00000000 nop                   
00144138: 92220048 lbu r2,0x0048(r17)     
0014413c: 00000000 nop                   
00144140: 2c42000b sltiu r2,r2,0x000b     
00144144: 10400003 beq r2,r0,0x00144154   
00144148: 00000000 nop                   
0014414c: 0c023463 jal 0x0008d18c         
00144150: 02002021 addu r4,r16,r0         
00144154: 92220047 lbu r2,0x0047(r17)     
00144158: 00000000 nop                   
0014415c: 2442fffc addiu r2,r2,0xfffc     
00144160: 2c420003 sltiu r2,r2,0x0003     
00144164: 10400009 beq r2,r0,0x0014418c   
00144168: 00000000 nop                   
0014416c: 92220048 lbu r2,0x0048(r17)     
00144170: 00000000 nop                   
00144174: 2442fffe addiu r2,r2,0xfffe     
00144178: 2c420006 sltiu r2,r2,0x0006     
0014417c: 10400003 beq r2,r0,0x0014418c   
00144180: 00000000 nop                   
00144184: 0c023463 jal 0x0008d18c         
00144188: 02002021 addu r4,r16,r0         
0014418c: 26100001 addiu r16,r16,0x0001   
00144190: 2a020015 slti r2,r16,0x0015     
00144194: 1440ffd6 bne r2,r0,0x001440f0   
00144198: 34020011 ori r2,r0,0x0011       
0014419c: 16420028 bne r18,r2,0x00144240 
001441a0: 2642fff1 addiu r2,r18,0xfff1   
001441a4: 0c0602bf jal 0x00180afc         
001441a8: 34040001 ori r4,r0,0x0001       
001441ac: 00408821 addu r17,r2,r0         
001441b0: 0c0602bf jal 0x00180afc         
001441b4: 34040007 ori r4,r0,0x0007       
001441b8: 00403021 addu r6,r2,r0         
001441bc: 92230047 lbu r3,0x0047(r17)     
001441c0: 34040007 ori r4,r0,0x0007       
001441c4: a0c30047 sb r3,0x0047(r6)       
001441c8: 92220048 lbu r2,0x0048(r17)     
001441cc: 34050001 ori r5,r0,0x0001       
001441d0: a0c20048 sb r2,0x0048(r6)       
001441d4: 96230048 lhu r3,0x0048(r17)     
001441d8: 94c20048 lhu r2,0x0048(r6)     
001441dc: 30638000 andi r3,r3,0x8000     
001441e0: 30427fff andi r2,r2,0x7fff     
001441e4: 00431025 or r2,r2,r3           
001441e8: a4c20048 sh r2,0x0048(r6)       
001441ec: 96230048 lhu r3,0x0048(r17)     
001441f0: 3042f0ff andi r2,r2,0xf0ff     
001441f4: 30630f00 andi r3,r3,0x0f00     
001441f8: 00431025 or r2,r2,r3           
001441fc: 0c023417 jal 0x0008d05c         
00144200: a4c20048 sh r2,0x0048(r6)       
00144204: 34080001 ori r8,r0,0x0001       
00144208: 3c018016 lui r1,0x8016         
0014420c: a428604e sh r8,0x604e(r1)       
00144210: 0c0532a0 jal 0x0014ca80         
00144214: 00000000 nop                   
00144218: 3c028016 lui r2,0x8016         
0014421c: 9442604e lhu r2,0x604e(r2)     
00144220: 00000000 nop                   
00144224: 1440fffa bne r2,r0,0x00144210   
00144228: 00000000 nop                   
0014422c: 0c0532a0 jal 0x0014ca80         
00144230: 00000000 nop                   
00144234: 0c0532a0 jal 0x0014ca80         
00144238: 00000000 nop                   
0014423c: 2642fff1 addiu r2,r18,0xfff1   
00144240: 2c420002 sltiu r2,r2,0x0002     
00144244: 10400004 beq r2,r0,0x00144258   
00144248: 34020012 ori r2,r0,0x0012       
0014424c: 0c04d0b3 jal 0x001342cc         
00144250: 02402021 addu r4,r18,r0         
00144254: 34020012 ori r2,r0,0x0012       
00144258: 16420732 bne r18,r2,0x00145f24 
0014425c: 00000000 nop                   
00144260: 0c04cc56 jal 0x00133158         
00144264: 3404003e ori r4,r0,0x003e       
00144268: 00021400 sll r2,r2,0x10         
0014426c: 00028403 sra r16,r2,0x10       
00144270: 340807d0 ori r8,r0,0x07d0       
00144274: 1208072b beq r16,r8,0x00145f24 
00144278: 00000000 nop                   
0014427c: 0c023374 jal 0x0008cdd0         
00144280: 02002021 addu r4,r16,r0         
00144284: 00402021 addu r4,r2,r0         
00144288: 08051589 j 0x00145624           
0014428c: 00002821 addu r5,r0,r0         
00144290: 16820006 bne r20,r2,0x001442ac 
00144294: 340200db ori r2,r0,0x00db       
00144298: 00132400 sll r4,r19,0x10        {99}
0014429c: 0c051f66 jal 0x00147d98         
001442a0: 00042403 sra r4,r4,0x10         
001442a4: 080517c9 j 0x00145f24           GOTO END
001442a8: 00000000 nop                   
001442ac: 12820003 beq r20,r2,0x001442bc  {DB} EventEnd
001442b0: 340200e3 ori r2,r0,0x00e3       
001442b4: 16820077 bne r20,r2,0x00144494 
001442b8: 340200da ori r2,r0,0x00da       
001442bc: 0c051829 jal 0x001460a4         {E3}
001442c0: 00000000 nop                   
001442c4: 0c0532a0 jal 0x0014ca80         
001442c8: 00000000 nop                   
001442cc: 0c05272f jal 0x00149cbc         
001442d0: 34040008 ori r4,r0,0x0008       
001442d4: 1440fffb bne r2,r0,0x001442c4   
001442d8: 00000000 nop                   
001442dc: 0c0532a0 jal 0x0014ca80         
001442e0: 00000000 nop                   
001442e4: 0c0111b2 jal 0x000446c8         
001442e8: 00000000 nop                   
001442ec: 1440fffb bne r2,r0,0x001442dc   
001442f0: 00000000 nop                   
001442f4: 0c0532a0 jal 0x0014ca80         
001442f8: 00000000 nop                   
001442fc: 0c04b721 jal 0x0012dc84         
00144300: 00000000 nop                   
00144304: 1040000c beq r2,r0,0x00144338   
00144308: 00000000 nop                   
0014430c: 0c04b70c jal 0x0012dc30         
00144310: 00000000 nop                   
00144314: 340401fc ori r4,r0,0x01fc       
00144318: 3c028017 lui r2,0x8017         
0014431c: 8c42d99c lw r2,-0x2664(r2)     
00144320: 3c018004 lui r1,0x8004         
00144324: ac2273ac sw r2,0x73ac(r1)       
00144328: 0c04ed91 jal 0x0013b644         
0014432c: 00002821 addu r5,r0,r0         
00144330: 0c0230e8 jal 0x0008c3a0         
00144334: 34040020 ori r4,r0,0x0020       
00144338: 3c028016 lui r2,0x8016         
0014433c: 94425ff6 lhu r2,0x5ff6(r2)     
00144340: 00000000 nop                   
00144344: 14400008 bne r2,r0,0x00144368   
00144348: 00000000 nop                   
0014434c: 34100002 ori r16,r0,0x0002     
00144350: 0c053274 jal 0x0014c9d0         
00144354: 02002021 addu r4,r16,r0         
00144358: 26100001 addiu r16,r16,0x0001   
0014435c: 2a02000e slti r2,r16,0x000e     
00144360: 1440fffb bne r2,r0,0x00144350   
00144364: 00000000 nop                   
00144368: 0c04ed64 jal 0x0013b590         
0014436c: 34040027 ori r4,r0,0x0027       
00144370: 00409021 addu r18,r2,r0         
00144374: 340201ad ori r2,r0,0x01ad       
00144378: 12420006 beq r18,r2,0x00144394 
0014437c: 00000000 nop                   
00144380: 340201d1 ori r2,r0,0x01d1       
00144384: 12420004 beq r18,r2,0x00144398 
00144388: 340401fd ori r4,r0,0x01fd       
0014438c: 0c023654 jal 0x0008d950         
00144390: 00000000 nop                   
00144394: 340401fd ori r4,r0,0x01fd       
00144398: 0c04ed91 jal 0x0013b644         
0014439c: 00002821 addu r5,r0,r0         
001443a0: 00121040 sll r2,r18,0x01       
001443a4: 3c018005 lui r1,0x8005         
001443a8: 00220821 addu r1,r1,r2         
001443ac: 9422e5d0 lhu r2,-0x1a30(r1)     
001443b0: 3c038016 lui r3,0x8016         
001443b4: 94635ff6 lhu r3,0x5ff6(r3)     
001443b8: 3042f300 andi r2,r2,0xf300     
001443bc: 14600010 bne r3,r0,0x00144400   
001443c0: 00021203 sra r2,r2,0x08         
001443c4: 1440000e bne r2,r0,0x00144400   
001443c8: 2642fe70 addiu r2,r18,0xfe70   
001443cc: 2c42001a sltiu r2,r2,0x001a     
001443d0: 1440000b bne r2,r0,0x00144400   
001443d4: 00000000 nop                   
001443d8: 12400009 beq r18,r0,0x00144400 
001443dc: 340200ff ori r2,r0,0x00ff       
001443e0: 3c018015 lui r1,0x8015         
001443e4: ac22d304 sw r2,-0x2cfc(r1)     
001443e8: 0c05096c jal 0x001425b0         
001443ec: 00000000 nop                   
001443f0: 0c0517de jal 0x00145f78         
001443f4: 00000000 nop                   
001443f8: 1440fe38 bne r2,r0,0x00143cdc   
001443fc: 00000000 nop                   
00144400: 0c023079 jal 0x0008c1e4         
00144404: 00008021 addu r16,r0,r0         
00144408: 00002021 addu r4,r0,r0         
0014440c: 0c052336 jal 0x00148cd8         
00144410: 34050001 ori r5,r0,0x0001       
00144414: 0c0232ed jal 0x0008cbb4         
00144418: 02002021 addu r4,r16,r0         
0014441c: 10400011 beq r2,r0,0x00144464   
00144420: 00000000 nop                   
00144424: 0c023374 jal 0x0008cdd0         
00144428: 02002021 addu r4,r16,r0         
0014442c: 00409021 addu r18,r2,r0         
00144430: 0640000c bltz r18,0x00144464   
00144434: 00000000 nop                   
00144438: 0c0602bf jal 0x00180afc         
0014443c: 02402021 addu r4,r18,r0         
00144440: 00408821 addu r17,r2,r0         
00144444: 0c022fc7 jal 0x0008bf1c         
00144448: 02002021 addu r4,r16,r0         
0014444c: 3042000f andi r2,r2,0x000f     
00144450: 96230048 lhu r3,0x0048(r17)     
00144454: 00021200 sll r2,r2,0x08         
00144458: 3063f0ff andi r3,r3,0xf0ff     
0014445c: 00621825 or r3,r3,r2           
00144460: a6230048 sh r3,0x0048(r17)     
00144464: 26100001 addiu r16,r16,0x0001   
00144468: 2a020015 slti r2,r16,0x0015     
0014446c: 1440ffe9 bne r2,r0,0x00144414   
00144470: 00000000 nop                   
00144474: 0c04b771 jal 0x0012ddc4         
00144478: 00000000 nop                   
0014447c: 0c04b77a jal 0x0012dde8         
00144480: 00000000 nop                   
00144484: 0c053256 jal 0x0014c958         
00144488: 00000000 nop                   
0014448c: 080517c9 j 0x00145f24           GOTO END
00144490: 00000000 nop                   
00144494: 128206a3 beq r20,r2,0x00145f24  {DA} GOTO END
00144498: 340200d0 ori r2,r0,0x00d0       
0014449c: 1682000b bne r20,r2,0x001444cc 
001444a0: 340200d1 ori r2,r0,0x00d1       
001444a4: 3c028016 lui r2,0x8016          {D0} (B) Block Start
001444a8: 8c425f9c lw r2,0x5f9c(r2)       
001444ac: 00000000 nop                   
001444b0: 8c420000 lw r2,0x0000(r2)       
001444b4: 00000000 nop                   
001444b8: 1440069a bne r2,r0,0x00145f24   
001444bc: 27c40002 addiu r4,r30,0x0002   
001444c0: 340500d2 ori r5,r0,0x00d2       Block End = D2
001444c4: 08051141 j 0x00144504           
001444c8: 340600d4 ori r6,r0,0x00d4        
001444cc: 16820004 bne r20,r2,0x001444e0 
001444d0: 340200d2 ori r2,r0,0x00d2       
001444d4: 27c40002 addiu r4,r30,0x0002    {D1}
001444d8: 08051140 j 0x00144500           GOTO (AAA)
001444dc: 340500d2 ori r5,r0,0x00d2       
001444e0: 12820690 beq r20,r2,0x00145f24  {D2} GOTO END
001444e4: 340200d4 ori r2,r0,0x00d4       
001444e8: 12820694 beq r20,r2,0x00145f3c  {D4}
001444ec: 340200d3 ori r2,r0,0x00d3       
001444f0: 16820008 bne r20,r2,0x00144514 
001444f4: 340200d5 ori r2,r0,0x00d5       
001444f8: 03c02021 addu r4,r30,r0         {D3} (C) Block Start
001444fc: 340500d5 ori r5,r0,0x00d5       Block End = D5
00144500: 2406ffff addiu r6,r0,0xffff     (AAA)
00144504: 0c05275b jal 0x00149d6c         
00144508: 02403821 addu r7,r18,r0         
0014450c: 08050f43 j 0x00143d0c           
00144510: 0040f021 addu r30,r2,r0         
00144514: 12820683 beq r20,r2,0x00145f24  {D5} GOTO END
00144518: 340200d8 ori r2,r0,0x00d8       
0014451c: 12820681 beq r20,r2,0x00145f24  {D8} GOTO END
00144520: 340200d9 ori r2,r0,0x00d9       
00144524: 1282067f beq r20,r2,0x00145f24  {D9} GOTO END
00144528: 340200dc ori r2,r0,0x00dc       
0014452c: 16820006 bne r20,r2,0x00144548 
00144530: 34020010 ori r2,r0,0x0010       
00144534: 3402000d ori r2,r0,0x000d       {DC}
00144538: 3c018016 lui r1,0x8016         
0014453c: a4225fb0 sh r2,0x5fb0(r1)       
00144540: 080517c9 j 0x00145f24           GOTO END
00144544: 00000000 nop                   
00144548: 1682004c bne r20,r2,0x0014467c 
0014454c: 34020051 ori r2,r0,0x0051       
00144550: 0c0526fb jal 0x00149bec         {10} DisplayMessage
00144554: 02402021 addu r4,r18,r0         
00144558: 00409021 addu r18,r2,r0         
0014455c: 3c058013 lui r5,0x8013         
00144560: 24a508c0 addiu r5,r5,0x08c0     
00144564: 0c053228 jal 0x0014c8a0         
00144568: 02402021 addu r4,r18,r0         
0014456c: 03c02021 addu r4,r30,r0         
00144570: 02a02821 addu r5,r21,r0         
00144574: 00128280 sll r16,r18,0x0a       
00144578: 3c068017 lui r6,0x8017         
0014457c: 24c698d4 addiu r6,r6,0x98d4     
00144580: 0c04bd38 jal 0x0012f4e0         
00144584: 02063021 addu r6,r16,r6         
00144588: 00171200 sll r2,r23,0x08       
0014458c: 00561021 addu r2,r2,r22         
00144590: 3c048017 lui r4,0x8017         
00144594: 8c843ca4 lw r4,0x3ca4(r4)       
00144598: 2442ffff addiu r2,r2,0xffff     
0014459c: 3c018017 lui r1,0x8017         
001445a0: 00300821 addu r1,r1,r16         
001445a4: ac35986c sw r21,-0x6794(r1)     
001445a8: 3c018017 lui r1,0x8017         
001445ac: 00300821 addu r1,r1,r16         
001445b0: ac229870 sw r2,-0x6790(r1)     
001445b4: 009e2021 addu r4,r4,r30         
001445b8: 90970006 lbu r23,0x0006(r4)     
001445bc: 90960005 lbu r22,0x0005(r4)     
001445c0: 00171200 sll r2,r23,0x08       
001445c4: 00561021 addu r2,r2,r22         
001445c8: 3c018017 lui r1,0x8017         
001445cc: 00300821 addu r1,r1,r16         
001445d0: ac229874 sw r2,-0x678c(r1)     
001445d4: 90820007 lbu r2,0x0007(r4)     
001445d8: 3c018017 lui r1,0x8017         
001445dc: 00300821 addu r1,r1,r16         
001445e0: ac229878 sw r2,-0x6788(r1)     
001445e4: 0c05181e jal 0x00146078         
001445e8: 24840008 addiu r4,r4,0x0008     
001445ec: 00021400 sll r2,r2,0x10         
001445f0: 3c048017 lui r4,0x8017         
001445f4: 8c843ca4 lw r4,0x3ca4(r4)       
001445f8: 00021403 sra r2,r2,0x10         
001445fc: 3c018017 lui r1,0x8017         
00144600: 00300821 addu r1,r1,r16         
00144604: ac2298c4 sw r2,-0x673c(r1)     
00144608: 03c42021 addu r4,r30,r4         
0014460c: 0c05181e jal 0x00146078         
00144610: 2484000a addiu r4,r4,0x000a     
00144614: 00021400 sll r2,r2,0x10         
00144618: 3c048017 lui r4,0x8017         
0014461c: 8c843ca4 lw r4,0x3ca4(r4)       
00144620: 00021403 sra r2,r2,0x10         
00144624: 3c018017 lui r1,0x8017         
00144628: 00300821 addu r1,r1,r16         
0014462c: ac2298c8 sw r2,-0x6738(r1)     
00144630: 03c42021 addu r4,r30,r4         
00144634: 0c05181e jal 0x00146078         
00144638: 2484000c addiu r4,r4,0x000c     
0014463c: 00021400 sll r2,r2,0x10         
00144640: 3c038017 lui r3,0x8017         
00144644: 8c633ca4 lw r3,0x3ca4(r3)       
00144648: 00021403 sra r2,r2,0x10         
0014464c: 3c018017 lui r1,0x8017         
00144650: 00300821 addu r1,r1,r16         
00144654: ac2298cc sw r2,-0x6734(r1)     
00144658: 007e1821 addu r3,r3,r30         
0014465c: 9062000e lbu r2,0x000e(r3)     
00144660: 3c018017 lui r1,0x8017         
00144664: 00300821 addu r1,r1,r16         
00144668: ac2298d0 sw r2,-0x6730(r1)     
0014466c: 0c0532a0 jal 0x0014ca80         
00144670: 00000000 nop                   
00144674: 080517c9 j 0x00145f24           GOTO END
00144678: 00000000 nop                   
0014467c: 1682003c bne r20,r2,0x00144770 
00144680: 34020050 ori r2,r0,0x0050       
00144684: 00008021 addu r16,r0,r0         {51} ChangeDialog
00144688: 00008821 addu r17,r0,r0         
0014468c: 3c018017 lui r1,0x8017         
00144690: 00310821 addu r1,r1,r17         
00144694: 8c22e450 lw r2,-0x1bb0(r1)     
00144698: 3c018017 lui r1,0x8017         
0014469c: 00310821 addu r1,r1,r17         
001446a0: 8c35e440 lw r21,-0x1bc0(r1)     
001446a4: 1452002c bne r2,r18,0x00144758 
001446a8: 00000000 nop                   
001446ac: 0c053325 jal 0x0014cc94         
001446b0: 02a02021 addu r4,r21,r0         
001446b4: 34080001 ori r8,r0,0x0001       
001446b8: 14480027 bne r2,r8,0x00144758   
001446bc: 00159a80 sll r19,r21,0x0a       
001446c0: 3c018017 lui r1,0x8017         
001446c4: 00330821 addu r1,r1,r19         
001446c8: 8c2398b8 lw r3,-0x6748(r1)     
001446cc: 34020033 ori r2,r0,0x0033       
001446d0: 14620021 bne r3,r2,0x00144758   
001446d4: 00000000 nop                   
001446d8: 3c048017 lui r4,0x8017         
001446dc: 8c843ca4 lw r4,0x3ca4(r4)       
001446e0: 00000000 nop                   
001446e4: 03c42021 addu r4,r30,r4         
001446e8: 0c05181e jal 0x00146078         
001446ec: 24840002 addiu r4,r4,0x0002     
001446f0: 00021400 sll r2,r2,0x10         
001446f4: 00029403 sra r18,r2,0x10       
001446f8: 3243ffff andi r3,r18,0xffff     
001446fc: 3402ffff ori r2,r0,0xffff       
00144700: 10620002 beq r3,r2,0x0014470c   
00144704: 00000000 nop                   
00144708: 2652ffff addiu r18,r18,0xffff   
0014470c: 3c048017 lui r4,0x8017         
00144710: 8c843ca4 lw r4,0x3ca4(r4)       
00144714: 3c018017 lui r1,0x8017         
00144718: 00330821 addu r1,r1,r19         
0014471c: ac329870 sw r18,-0x6790(r1)     
00144720: 03c42021 addu r4,r30,r4         
00144724: 0c05181e jal 0x00146078         
00144728: 24840004 addiu r4,r4,0x0004     
0014472c: 00021400 sll r2,r2,0x10         
00144730: 00021403 sra r2,r2,0x10         
00144734: 34080001 ori r8,r0,0x0001       
00144738: 3c018017 lui r1,0x8017         
0014473c: 00330821 addu r1,r1,r19         
00144740: ac229878 sw r2,-0x6788(r1)     
00144744: 3c018017 lui r1,0x8017         
00144748: 00330821 addu r1,r1,r19         
0014474c: ac2898b8 sw r8,-0x6748(r1)     
00144750: 080517c9 j 0x00145f24           GOTO END
00144754: 00000000 nop                   
00144758: 26100002 addiu r16,r16,0x0002   
0014475c: 2a020006 slti r2,r16,0x0006     
00144760: 1440ffca bne r2,r0,0x0014468c   
00144764: 26310230 addiu r17,r17,0x0230   
00144768: 080517c9 j 0x00145f24           GOTO END
0014476c: 00000000 nop                   
00144770: 16820005 bne r20,r2,0x00144788 
00144774: 34020054 ori r2,r0,0x0054       
00144778: 0c04f22a jal 0x0013c8a8         {50} PortraitCol
0014477c: 02402021 addu r4,r18,r0         
00144780: 080517c9 j 0x00145f24           GOTO END
00144784: 00000000 nop                   
00144788: 1682000c bne r20,r2,0x001447bc 
0014478c: 34020056 ori r2,r0,0x0056       
00144790: 34080001 ori r8,r0,0x0001       {54}
00144794: 3c018016 lui r1,0x8016         
00144798: a4285fe2 sh r8,0x5fe2(r1)       
0014479c: 3c018017 lui r1,0x8017         
001447a0: a4323c94 sh r18,0x3c94(r1)     
001447a4: 3c018017 lui r1,0x8017         
001447a8: a4353c96 sh r21,0x3c96(r1)     
001447ac: 0c0532a0 jal 0x0014ca80         
001447b0: 00000000 nop                   
001447b4: 080517c9 j 0x00145f24           GOTO END
001447b8: 00000000 nop                   
001447bc: 1682000d bne r20,r2,0x001447f4 
001447c0: 34020055 ori r2,r0,0x0055       
001447c4: 34080001 ori r8,r0,0x0001       {56}
001447c8: 3c018016 lui r1,0x8016         
001447cc: a428606e sh r8,0x606e(r1)       
001447d0: 0c0532a0 jal 0x0014ca80         
001447d4: 00000000 nop                   
001447d8: 3c028016 lui r2,0x8016         
001447dc: 9442606e lhu r2,0x606e(r2)     
001447e0: 00000000 nop                   
001447e4: 104005cf beq r2,r0,0x00145f24   
001447e8: 00000000 nop                   
001447ec: 080511f4 j 0x001447d0           
001447f0: 00000000 nop                   
001447f4: 1682000c bne r20,r2,0x00144828 
001447f8: 34020057 ori r2,r0,0x0057       
001447fc: 34080001 ori r8,r0,0x0001       {55} UseFieldObject
00144800: 3c018016 lui r1,0x8016         
00144804: a4285fe4 sh r8,0x5fe4(r1)       
00144808: 3c018017 lui r1,0x8017         
0014480c: a4324058 sh r18,0x4058(r1)     
00144810: 3c018017 lui r1,0x8017         
00144814: a435405a sh r21,0x405a(r1)     
00144818: 0c0532a0 jal 0x0014ca80         
0014481c: 00000000 nop                   
00144820: 080517c9 j 0x00145f24           GOTO END
00144824: 00000000 nop                   
00144828: 1682000d bne r20,r2,0x00144860 
0014482c: 34020068 ori r2,r0,0x0068       
00144830: 34080001 ori r8,r0,0x0001       {57} WaitFieldObject ?
00144834: 3c018016 lui r1,0x8016         
00144838: a4286070 sh r8,0x6070(r1)       
0014483c: 0c0532a0 jal 0x0014ca80         
00144840: 00000000 nop                   
00144844: 3c028016 lui r2,0x8016         
00144848: 94426070 lhu r2,0x6070(r2)     
0014484c: 00000000 nop                   
00144850: 104005b4 beq r2,r0,0x00145f24   
00144854: 00000000 nop                   
00144858: 0805120f j 0x0014483c           
0014485c: 00000000 nop                   
00144860: 16820005 bne r20,r2,0x00144878 
00144864: 34020097 ori r2,r0,0x0097       
00144868: 0c04f997 jal 0x0013e65c         {68}
0014486c: 02202021 addu r4,r17,r0         
00144870: 080517c9 j 0x00145f24           GOTO END
00144874: 00000000 nop                   
00144878: 16820005 bne r20,r2,0x00144890 
0014487c: 34020071 ori r2,r0,0x0071       
00144880: 0c04f9b1 jal 0x0013e6c4         {97} ResetUnitColor
00144884: 02202021 addu r4,r17,r0         
00144888: 080517c9 j 0x00145f24           GOTO END
0014488c: 00000000 nop                   
00144890: 1682000c bne r20,r2,0x001448c4 
00144894: 34020011 ori r2,r0,0x0011       
00144898: 00132400 sll r4,r19,0x10        {71}
0014489c: 0c04cc56 jal 0x00133158         
001448a0: 00042403 sra r4,r4,0x10         
001448a4: 00409021 addu r18,r2,r0         
001448a8: 340807d0 ori r8,r0,0x07d0       
001448ac: 1248059d beq r18,r8,0x00145f24 
001448b0: 00000000 nop                   
001448b4: 0c01e9ee jal 0x0007a7b8         
001448b8: 02402021 addu r4,r18,r0         
001448bc: 080517c9 j 0x00145f24           GOTO END
001448c0: 00000000 nop                   
001448c4: 16820005 bne r20,r2,0x001448dc 
001448c8: 34020080 ori r2,r0,0x0080       
001448cc: 0c0524e6 jal 0x00149398         {11} UnitAnim
001448d0: 02202021 addu r4,r17,r0         
001448d4: 080517c9 j 0x00145f24           GOTO END
001448d8: 00000000 nop                   
001448dc: 16820005 bne r20,r2,0x001448f4 
001448e0: 34020081 ori r2,r0,0x0081       
001448e4: 0c052524 jal 0x00149490         {80} March
001448e8: 02202021 addu r4,r17,r0         
001448ec: 080517c9 j 0x00145f24           GOTO END
001448f0: 00000000 nop                   
001448f4: 16820005 bne r20,r2,0x0014490c 
001448f8: 34020012 ori r2,r0,0x0012       
001448fc: 0c05254b jal 0x0014952c         {81}
00144900: 02202021 addu r4,r17,r0         
00144904: 080517c9 j 0x00145f24           GOTO END
00144908: 00000000 nop                   
0014490c: 1682000c bne r20,r2,0x00144940 
00144910: 34020013 ori r2,r0,0x0013       
00144914: 00132400 sll r4,r19,0x10        {12}
00144918: 0c04cc56 jal 0x00133158         
0014491c: 00042403 sra r4,r4,0x10         
00144920: 00409021 addu r18,r2,r0         
00144924: 340807d0 ori r8,r0,0x07d0       
00144928: 1248057e beq r18,r8,0x00145f24 
0014492c: 00000000 nop                   
00144930: 0c052936 jal 0x0014a4d8         
00144934: 02402021 addu r4,r18,r0         
00144938: 080517c9 j 0x00145f24           GOTO END
0014493c: 00000000 nop                   
00144940: 16820005 bne r20,r2,0x00144958 
00144944: 3402004c ori r2,r0,0x004c       
00144948: 3c018017 lui r1,0x8017          {13} ChangeMap
0014494c: a4334054 sh r19,0x4054(r1)     
00144950: 0805125a j 0x00144968           
00144954: 00000000 nop                   
00144958: 16820009 bne r20,r2,0x00144980 
0014495c: 3402004f ori r2,r0,0x004f       
00144960: 3c018017 lui r1,0x8017          {4C}
00144964: a433405c sh r19,0x405c(r1)     
00144968: 0c053216 jal 0x0014c858         
0014496c: 34040002 ori r4,r0,0x0002       
00144970: 0c04fc30 jal 0x0013f0c0         
00144974: 00000000 nop                   
00144978: 080517c9 j 0x00145f24           GOTO END
0014497c: 00000000 nop                   
00144980: 16820005 bne r20,r2,0x00144998 
00144984: 3402003c ori r2,r0,0x003c       
00144988: 3c018017 lui r1,0x8017          {4F}
0014498c: a4323f64 sh r18,0x3f64(r1)     
00144990: 0805126a j 0x001449a8           
00144994: 00000000 nop                   
00144998: 16820009 bne r20,r2,0x001449c0 
0014499c: 34020027 ori r2,r0,0x0027       
001449a0: 3c018017 lui r1,0x8017          {3C} Weather
001449a4: a4333f68 sh r19,0x3f68(r1)     
001449a8: 0c053216 jal 0x0014c858         
001449ac: 34040002 ori r4,r0,0x0002       
001449b0: 0c051829 jal 0x001460a4         
001449b4: 00000000 nop                   
001449b8: 080517c9 j 0x00145f24           GOTO END
001449bc: 00000000 nop                   
001449c0: 1682000d bne r20,r2,0x001449f8 
001449c4: 34020096 ori r2,r0,0x0096       
001449c8: 34080001 ori r8,r0,0x0001       {27}
001449cc: 3c018016 lui r1,0x8016         
001449d0: a4285fde sh r8,0x5fde(r1)       
001449d4: 0c0532a0 jal 0x0014ca80         
001449d8: 00000000 nop                   
001449dc: 3c028016 lui r2,0x8016         
001449e0: 94425fde lhu r2,0x5fde(r2)     
001449e4: 00000000 nop                   
001449e8: 1040054e beq r2,r0,0x00145f24   
001449ec: 00000000 nop                   
001449f0: 08051275 j 0x001449d4           
001449f4: 00000000 nop                   
001449f8: 1682000d bne r20,r2,0x00144a30 
  • Modding version: PSX
Love what you're seeing? https://supportus.ffhacktics.com/ 💜 it's really appreciated

Anything is possible as long as it is within the hardware's limits. (ie. disc space, RAM, Video RAM, processor, etc.)
<R999> My target market is not FFT mod players
<Raijinili> remember that? it was awful

Xifanie

November 29, 2011, 02:29:40 am #106 Last Edit: November 29, 2011, 04:15:09 am by Xifanie
001449fc: 34020016 ori r2,r0,0x0016   
00144a00: 34080001 ori r8,r0,0x0001       {96}
00144a04: 3c018016 lui r1,0x8016         
00144a08: a4285fe0 sh r8,0x5fe0(r1)       
00144a0c: 0c0532a0 jal 0x0014ca80         
00144a10: 00000000 nop                   
00144a14: 3c028016 lui r2,0x8016         
00144a18: 94425fe0 lhu r2,0x5fe0(r2)     
00144a1c: 00000000 nop                   
00144a20: 10400540 beq r2,r0,0x00145f24   
00144a24: 00000000 nop                   
00144a28: 08051283 j 0x00144a0c           
00144a2c: 00000000 nop                   
00144a30: 16820005 bne r20,r2,0x00144a48 
00144a34: 34020026 ori r2,r0,0x0026       
00144a38: 0c04cbe7 jal 0x00132f9c         {16} Pause
00144a3c: 00000000 nop                   
00144a40: 080517c9 j 0x00145f24           GOTO END
00144a44: 00000000 nop                   
00144a48: 1682001a bne r20,r2,0x00144ab4 
00144a4c: 34020037 ori r2,r0,0x0037       
00144a50: 34100001 ori r16,r0,0x0001      {26}
00144a54: 34050002 ori r5,r0,0x0002       
00144a58: 00131400 sll r2,r19,0x10       
00144a5c: 00022403 sra r4,r2,0x10         
00144a60: 3c038017 lui r3,0x8017         
00144a64: 24639c6c addiu r3,r3,0x9c6c     
00144a68: 8c620048 lw r2,0x0048(r3)       
00144a6c: 00000000 nop                   
00144a70: 1040000b beq r2,r0,0x00144aa0   
00144a74: 26100001 addiu r16,r16,0x0001   
00144a78: 8c62004c lw r2,0x004c(r3)       
00144a7c: 00000000 nop                   
00144a80: 14450008 bne r2,r5,0x00144aa4   
00144a84: 2a020010 slti r2,r16,0x0010     
00144a88: 8c620004 lw r2,0x0004(r3)       
00144a8c: 00000000 nop                   
00144a90: 14440004 bne r2,r4,0x00144aa4   
00144a94: 2a020010 slti r2,r16,0x0010     
00144a98: 34080001 ori r8,r0,0x0001       
00144a9c: ac68004c sw r8,0x004c(r3)       
00144aa0: 2a020010 slti r2,r16,0x0010     
00144aa4: 1440fff0 bne r2,r0,0x00144a68   
00144aa8: 24630400 addiu r3,r3,0x0400     
00144aac: 080517c9 j 0x00145f24           GOTO END
00144ab0: 00000000 nop                   
00144ab4: 16820005 bne r20,r2,0x00144acc 
00144ab8: 34020017 ori r2,r0,0x0017       
00144abc: 0c0526ce jal 0x00149b38         {37}
00144ac0: 02202021 addu r4,r17,r0         
00144ac4: 080517c9 j 0x00145f24           GOTO END
00144ac8: 00000000 nop                   
00144acc: 12820515 beq r20,r2,0x00145f24  {17} GOTO END
00144ad0: 34020018 ori r2,r0,0x0018       
00144ad4: 1682001e bne r20,r2,0x00144b50 
00144ad8: 3402008a ori r2,r0,0x008a       
00144adc: 3c028017 lui r2,0x8017          {18} Effect
00144ae0: 8c423ca4 lw r2,0x3ca4(r2)       
00144ae4: 3c018017 lui r1,0x8017         
00144ae8: a4333cb4 sh r19,0x3cb4(r1)     
00144aec: 005e1021 addu r2,r2,r30         
00144af0: 90440003 lbu r4,0x0003(r2)     
00144af4: 0c04cc56 jal 0x00133158         
00144af8: 00000000 nop                   
00144afc: 3c038017 lui r3,0x8017         
00144b00: 8c633ca4 lw r3,0x3ca4(r3)       
00144b04: 3c018016 lui r1,0x8016         
00144b08: a4225ff8 sh r2,0x5ff8(r1)       
00144b0c: 007e1821 addu r3,r3,r30         
00144b10: 90620004 lbu r2,0x0004(r3)     
00144b14: 3c018016 lui r1,0x8016         
00144b18: a4225ffc sh r2,0x5ffc(r1)       
00144b1c: 90620005 lbu r2,0x0005(r3)     
00144b20: 3404001f ori r4,r0,0x001f       
00144b24: 3c018016 lui r1,0x8016         
00144b28: a4225ffe sh r2,0x5ffe(r1)       
00144b2c: 90620006 lbu r2,0x0006(r3)     
00144b30: 3c018016 lui r1,0x8016         
00144b34: a4226000 sh r2,0x6000(r1)       
00144b38: 0c04ed91 jal 0x0013b644         
00144b3c: 00002821 addu r5,r0,r0         
00144b40: 0c053216 jal 0x0014c858         
00144b44: 34040002 ori r4,r0,0x0002       
00144b48: 080517c9 j 0x00145f24           GOTO END
00144b4c: 00000000 nop                   
00144b50: 1682000d bne r20,r2,0x00144b88 
00144b54: 3402008b ori r2,r0,0x008b       
00144b58: 3c108009 lui r16,0x8009         {8A} EffectStart
00144b5c: 2610dda8 addiu r16,r16,0xdda8   
00144b60: 0c0532a0 jal 0x0014ca80         
00144b64: 00000000 nop                   
00144b68: 3c018017 lui r1,0x8017         
00144b6c: ac303ca8 sw r16,0x3ca8(r1)     
00144b70: 0c0533ad jal 0x0014ceb4         
00144b74: 00000000 nop                   
00144b78: 104004ea beq r2,r0,0x00145f24   
00144b7c: 00000000 nop                   
00144b80: 080512d8 j 0x00144b60           
00144b84: 00000000 nop                   
00144b88: 16820009 bne r20,r2,0x00144bb0 
00144b8c: 3402001f ori r2,r0,0x001f       
00144b90: 0c0526fb jal 0x00149bec         {8B} EffectEnd
00144b94: 34040010 ori r4,r0,0x0010       
00144b98: 3c058014 lui r5,0x8014         
00144b9c: 24a5e8d4 addiu r5,r5,0xe8d4     
00144ba0: 0c053228 jal 0x0014c8a0         
00144ba4: 00402021 addu r4,r2,r0         
00144ba8: 080517c9 j 0x00145f24           GOTO END
00144bac: 00000000 nop                   
00144bb0: 1682000b bne r20,r2,0x00144be0 
00144bb4: 34020038 ori r2,r0,0x0038       
00144bb8: 3c028016 lui r2,0x8016          {1F} Focus
00144bbc: 8c425f9c lw r2,0x5f9c(r2)       
00144bc0: 00000000 nop                   
00144bc4: 8c440078 lw r4,0x0078(r2)       
00144bc8: 0c051cb7 jal 0x001472dc         
00144bcc: 00000000 nop                   
00144bd0: 0c051d61 jal 0x00147584         
00144bd4: 02202021 addu r4,r17,r0         
00144bd8: 080517c9 j 0x00145f24           GOTO END
00144bdc: 00000000 nop                   
00144be0: 16820009 bne r20,r2,0x00144c08 
00144be4: 34020073 ori r2,r0,0x0073       
00144be8: 3c068016 lui r6,0x8016          {38}
00144bec: 8cc65f9c lw r6,0x5f9c(r6)       
00144bf0: 02202021 addu r4,r17,r0         
00144bf4: 24c50068 addiu r5,r6,0x0068     
00144bf8: 0c051de0 jal 0x00147780         
00144bfc: 24c60074 addiu r6,r6,0x0074     
00144c00: 080517c9 j 0x00145f24           GOTO END
00144c04: 00000000 nop                   
00144c08: 16820008 bne r20,r2,0x00144c2c 
00144c0c: 34020019 ori r2,r0,0x0019       
00144c10: 3c058016 lui r5,0x8016          {73}
00144c14: 8ca55f9c lw r5,0x5f9c(r5)       
00144c18: 02202021 addu r4,r17,r0         
00144c1c: 0c051d29 jal 0x001474a4         
00144c20: 24a50068 addiu r5,r5,0x0068     
00144c24: 080517c9 j 0x00145f24           GOTO END
00144c28: 00000000 nop                   
00144c2c: 16820008 bne r20,r2,0x00144c50 
00144c30: 3402001d ori r2,r0,0x001d       
00144c34: 0c0526fb jal 0x00149bec         {19} Camera
00144c38: 34040010 ori r4,r0,0x0010       
00144c3c: 00409021 addu r18,r2,r0         
00144c40: 3c058014 lui r5,0x8014         
00144c44: 24a56110 addiu r5,r5,0x6110     
00144c48: 08051413 j 0x0014504c           
00144c4c: 02402021 addu r4,r18,r0         
00144c50: 1682000f bne r20,r2,0x00144c90 
00144c54: 3402001e ori r2,r0,0x001e       
00144c58: 0c0526fb jal 0x00149bec         {1D}
00144c5c: 34040010 ori r4,r0,0x0010       
00144c60: 00409021 addu r18,r2,r0         
00144c64: 3c058014 lui r5,0x8014         
00144c68: 24a5db9c addiu r5,r5,0xdb9c     
00144c6c: 0c053228 jal 0x0014c8a0         
00144c70: 02402021 addu r4,r18,r0         
00144c74: 00121280 sll r2,r18,0x0a       
00144c78: 3c018017 lui r1,0x8017         
00144c7c: 00220821 addu r1,r1,r2         
00144c80: ac31986c sw r17,-0x6794(r1)     
00144c84: 03c02021 addu r4,r30,r0         
00144c88: 08051651 j 0x00145944           
00144c8c: 3405001e ori r5,r0,0x001e       Block End = 1E
00144c90: 128204a4 beq r20,r2,0x00145f24  {1E} GOTO END
00144c94: 34020063 ori r2,r0,0x0063       
00144c98: 16820005 bne r20,r2,0x00144cb0 
00144c9c: 34020074 ori r2,r0,0x0074       
00144ca0: 3c018016 lui r1,0x8016          {63}
00144ca4: ac326054 sw r18,0x6054(r1)     
00144ca8: 080517c9 j 0x00145f24           GOTO END
00144cac: 00000000 nop                   
00144cb0: 16820005 bne r20,r2,0x00144cc8 
00144cb4: 34020028 ori r2,r0,0x0028       
00144cb8: 0c0526f9 jal 0x00149be4         {74}
00144cbc: 02202021 addu r4,r17,r0         
00144cc0: 080517c9 j 0x00145f24           GOTO END
00144cc4: 00000000 nop                   
00144cc8: 16820009 bne r20,r2,0x00144cf0 
00144ccc: 34020070 ori r2,r0,0x0070       
00144cd0: 3c028014 lui r2,0x8014          {28} WalkTo
00144cd4: 2442e5c0 addiu r2,r2,0xe5c0     
00144cd8: 3c018017 lui r1,0x8017         
00144cdc: ac223ca8 sw r2,0x3ca8(r1)       
00144ce0: 0c0533ad jal 0x0014ceb4         
00144ce4: 02202021 addu r4,r17,r0         
00144ce8: 080517c9 j 0x00145f24           GOTO END
00144cec: 00000000 nop                   
00144cf0: 16820005 bne r20,r2,0x00144d08 
00144cf4: 34020029 ori r2,r0,0x0029       
00144cf8: 0c04f9c2 jal 0x0013e708         {70}
00144cfc: 02202021 addu r4,r17,r0         
00144d00: 080517c9 j 0x00145f24           GOTO END
00144d04: 00000000 nop                   
00144d08: 16820006 bne r20,r2,0x00144d24 
00144d0c: 34020079 ori r2,r0,0x0079       
00144d10: 00132400 sll r4,r19,0x10        {29} WaitWalk
00144d14: 0c04f9f4 jal 0x0013e7d0         
00144d18: 00042403 sra r4,r4,0x10         
00144d1c: 080517c9 j 0x00145f24           GOTO END
00144d20: 00000000 nop                   
00144d24: 16820017 bne r20,r2,0x00144d84 
00144d28: 34020039 ori r2,r0,0x0039       
00144d2c: 00132400 sll r4,r19,0x10        {79} MovementAnim
00144d30: 0c04cc56 jal 0x00133158         
00144d34: 00042403 sra r4,r4,0x10         
00144d38: 00409021 addu r18,r2,r0         
00144d3c: 340807d0 ori r8,r0,0x07d0       
00144d40: 12480478 beq r18,r8,0x00145f24 
00144d44: 00000000 nop                   
00144d48: 3c048017 lui r4,0x8017         
00144d4c: 8c843ca4 lw r4,0x3ca4(r4)       
00144d50: 00000000 nop                   
00144d54: 03c42021 addu r4,r30,r4         
00144d58: 0c05181e jal 0x00146078         
00144d5c: 24840003 addiu r4,r4,0x0003     
00144d60: 00121840 sll r3,r18,0x01       
00144d64: 3c018017 lui r1,0x8017         
00144d68: 00230821 addu r1,r1,r3         
00144d6c: a422da6c sh r2,-0x2594(r1)     
00144d70: 3c018017 lui r1,0x8017         
00144d74: 00230821 addu r1,r1,r3         
00144d78: a420da98 sh r0,-0x2568(r1)     
00144d7c: 080517c9 j 0x00145f24           GOTO END
00144d80: 00000000 nop                   
00144d84: 16820009 bne r20,r2,0x00144dac 
00144d88: 3402003a ori r2,r0,0x003a       
00144d8c: 0c0532a0 jal 0x0014ca80         {39}
00144d90: 00000000 nop                   
00144d94: 0c051801 jal 0x00146004         
00144d98: 2404ffff addiu r4,r0,0xffff     
00144d9c: 10400461 beq r2,r0,0x00145f24   
00144da0: 00000000 nop                   
00144da4: 08051363 j 0x00144d8c           
00144da8: 00000000 nop                   
00144dac: 16820009 bne r20,r2,0x00144dd4 
00144db0: 3402002d ori r2,r0,0x002d       
00144db4: 0c0532a0 jal 0x0014ca80         {3A}
00144db8: 00000000 nop                   
00144dbc: 0c0111b2 jal 0x000446c8         
00144dc0: 00000000 nop                   
00144dc4: 10400457 beq r2,r0,0x00145f24   
00144dc8: 00000000 nop                   
00144dcc: 0805136d j 0x00144db4           
00144dd0: 00000000 nop                   
00144dd4: 16820005 bne r20,r2,0x00144dec 
00144dd8: 3402002c ori r2,r0,0x002c       
00144ddc: 0c0520a1 jal 0x00148284         {2D} RotateUnit
00144de0: 02202021 addu r4,r17,r0         
00144de4: 080517c9 j 0x00145f24           GOTO END
00144de8: 00000000 nop                   
00144dec: 16820006 bne r20,r2,0x00144e08 
00144df0: 34020053 ori r2,r0,0x0053       
00144df4: 02202021 addu r4,r17,r0         {2C}
00144df8: 0c052021 jal 0x00148084         
00144dfc: 00002821 addu r5,r0,r0         
00144e00: 080517c9 j 0x00145f24           GOTO END
00144e04: 00000000 nop                   
00144e08: 16820006 bne r20,r2,0x00144e24 
00144e0c: 34020069 ori r2,r0,0x0069       
00144e10: 02202021 addu r4,r17,r0         {53} FaceUnit
00144e14: 0c052021 jal 0x00148084         
00144e18: 34050001 ori r5,r0,0x0001       
00144e1c: 080517c9 j 0x00145f24           GOTO END
00144e20: 00000000 nop                   
00144e24: 16820005 bne r20,r2,0x00144e3c 
00144e28: 34020064 ori r2,r0,0x0064       
00144e2c: 0c0525e3 jal 0x0014978c         {69}
00144e30: 02202021 addu r4,r17,r0         
00144e34: 080517c9 j 0x00145f24           GOTO END
00144e38: 00000000 nop                   
00144e3c: 16820006 bne r20,r2,0x00144e58 
00144e40: 34020065 ori r2,r0,0x0065       
00144e44: 00132400 sll r4,r19,0x10        {64} WaitRotateUnit ?
00144e48: 0c05263f jal 0x001498fc         
00144e4c: 00042403 sra r4,r4,0x10         
00144e50: 080517c9 j 0x00145f24           GOTO END
00144e54: 00000000 nop                   
00144e58: 16820005 bne r20,r2,0x00144e70 
00144e5c: 3402002a ori r2,r0,0x002a       
00144e60: 0c05263f jal 0x001498fc         {65} WaitFaceUnit ?
00144e64: 2404ffff addiu r4,r0,0xffff     
00144e68: 080517c9 j 0x00145f24           GOTO END
00144e6c: 00000000 nop                   
00144e70: 1682000f bne r20,r2,0x00144eb0 
00144e74: 3402002b ori r2,r0,0x002b       
00144e78: 0c0526fb jal 0x00149bec         {2A} (A) Block Start
00144e7c: 34040010 ori r4,r0,0x0010       
00144e80: 00409021 addu r18,r2,r0         
00144e84: 3c058014 lui r5,0x8014         
00144e88: 24a5e904 addiu r5,r5,0xe904     
00144e8c: 0c053228 jal 0x0014c8a0         
00144e90: 02402021 addu r4,r18,r0         
00144e94: 00121280 sll r2,r18,0x0a       
00144e98: 3c018017 lui r1,0x8017         
00144e9c: 00220821 addu r1,r1,r2         
00144ea0: ac31986c sw r17,-0x6794(r1)     
00144ea4: 03c02021 addu r4,r30,r0         
00144ea8: 08051651 j 0x00145944           
00144eac: 3405002b ori r5,r0,0x002b       Block End = 2B
00144eb0: 1282041c beq r20,r2,0x00145f24  {2B} GOTO END
00144eb4: 34020023 ori r2,r0,0x0023       
00144eb8: 1282041a beq r20,r2,0x00145f24  {23} GOTO END
00144ebc: 34020024 ori r2,r0,0x0024       
00144ec0: 12820418 beq r20,r2,0x00145f24  {24} GOTO END
00144ec4: 34020042 ori r2,r0,0x0042       
00144ec8: 16820009 bne r20,r2,0x00144ef0 
00144ecc: 34020025 ori r2,r0,0x0025       
00144ed0: 0c053216 jal 0x0014c858         {42}
00144ed4: 34040001 ori r4,r0,0x0001       
00144ed8: 0c05272f jal 0x00149cbc         
00144edc: 3404000d ori r4,r0,0x000d       
00144ee0: 0c053250 jal 0x0014c940         
00144ee4: 00402021 addu r4,r2,r0         
00144ee8: 080517c9 j 0x00145f24           GOTO END
00144eec: 00000000 nop                   
00144ef0: 1682000c bne r20,r2,0x00144f24 
00144ef4: 3402001a ori r2,r0,0x001a       
00144ef8: 3c048017 lui r4,0x8017          {25}
00144efc: 8c843ca4 lw r4,0x3ca4(r4)       
00144f00: 3c018016 lui r1,0x8016         
00144f04: a4336072 sh r19,0x6072(r1)     
00144f08: 03c42021 addu r4,r30,r4         
00144f0c: 0c05181e jal 0x00146078         
00144f10: 24840003 addiu r4,r4,0x0003     
00144f14: 3c018016 lui r1,0x8016         
00144f18: a4226074 sh r2,0x6074(r1)       
00144f1c: 080517c9 j 0x00145f24           GOTO END
00144f20: 00000000 nop                   
00144f24: 16820008 bne r20,r2,0x00144f48 
00144f28: 3402003e ori r2,r0,0x003e       
00144f2c: 0c0526fb jal 0x00149bec         {1A}
00144f30: 34040010 ori r4,r0,0x0010       
00144f34: 00409021 addu r18,r2,r0         
00144f38: 3c058014 lui r5,0x8014         
00144f3c: 24a566b4 addiu r5,r5,0x66b4     
00144f40: 08051413 j 0x0014504c           
00144f44: 02402021 addu r4,r18,r0         
00144f48: 16820008 bne r20,r2,0x00144f6c 
00144f4c: 34020041 ori r2,r0,0x0041       
00144f50: 0c0526fb jal 0x00149bec         {3E}
00144f54: 34040010 ori r4,r0,0x0010       
00144f58: 00409021 addu r18,r2,r0         
00144f5c: 3c058014 lui r5,0x8014         
00144f60: 24a567dc addiu r5,r5,0x67dc     
00144f64: 08051413 j 0x0014504c           
00144f68: 02402021 addu r4,r18,r0         
00144f6c: 16820008 bne r20,r2,0x00144f90 
00144f70: 3410003b ori r16,r0,0x003b     
00144f74: 0c0526fb jal 0x00149bec         {41} Earthquake
00144f78: 34040010 ori r4,r0,0x0010       
00144f7c: 00409021 addu r18,r2,r0         
00144f80: 3c058014 lui r5,0x8014         
00144f84: 24a5672c addiu r5,r5,0x672c     
00144f88: 08051413 j 0x0014504c           
00144f8c: 02402021 addu r4,r18,r0         
00144f90: 12900003 beq r20,r16,0x00144fa0 {3B} SpriteMove
00144f94: 3402006e ori r2,r0,0x006e       
00144f98: 1682001d bne r20,r2,0x00145010 
00144f9c: 3402006f ori r2,r0,0x006f       
00144fa0: 0c052712 jal 0x00149c48         {6E}
00144fa4: 34040010 ori r4,r0,0x0010       
00144fa8: 16900005 bne r20,r16,0x00144fc0
00144fac: 00409021 addu r18,r2,r0         
00144fb0: 3c058014 lui r5,0x8014         
00144fb4: 24a56ee4 addiu r5,r5,0x6ee4     
00144fb8: 080513f3 j 0x00144fcc           
00144fbc: 02402021 addu r4,r18,r0         
00144fc0: 02402021 addu r4,r18,r0         
00144fc4: 3c058014 lui r5,0x8014         
00144fc8: 24a56f20 addiu r5,r5,0x6f20     
00144fcc: 0c053228 jal 0x0014c8a0         
00144fd0: 00128280 sll r16,r18,0x0a       
00144fd4: 00132400 sll r4,r19,0x10       
00144fd8: 3402000b ori r2,r0,0x000b       
00144fdc: 3c018017 lui r1,0x8017         
00144fe0: 00300821 addu r1,r1,r16         
00144fe4: ac31986c sw r17,-0x6794(r1)     
00144fe8: 3c018017 lui r1,0x8017         
00144fec: 00300821 addu r1,r1,r16         
00144ff0: ac2298b8 sw r2,-0x6748(r1)     
00144ff4: 0c04cc56 jal 0x00133158         
00144ff8: 00042403 sra r4,r4,0x10         
00144ffc: 3c018017 lui r1,0x8017         
00145000: 00300821 addu r1,r1,r16         
00145004: ac2298bc sw r2,-0x6744(r1)     
00145008: 080517c9 j 0x00145f24           GOTO END
0014500c: 00000000 nop                   
00145010: 16820006 bne r20,r2,0x0014502c 
00145014: 3402001b ori r2,r0,0x001b       
00145018: 00132400 sll r4,r19,0x10        {6F} WaitSpriteMove ?
0014501c: 0c051bd7 jal 0x00146f5c         
00145020: 00042403 sra r4,r4,0x10         
00145024: 080517c9 j 0x00145f24           GOTO END
00145028: 00000000 nop                   
0014502c: 1682000f bne r20,r2,0x0014506c 
00145030: 3402002e ori r2,r0,0x002e       
00145034: 0c0526fb jal 0x00149bec         {1B}
00145038: 34040010 ori r4,r0,0x0010       
0014503c: 00409021 addu r18,r2,r0         
00145040: 02402021 addu r4,r18,r0         
00145044: 3c058014 lui r5,0x8014         
00145048: 24a5703c addiu r5,r5,0x703c     
0014504c: 0c053228 jal 0x0014c8a0         
00145050: 00000000 nop                   
00145054: 00121280 sll r2,r18,0x0a       
00145058: 3c018017 lui r1,0x8017         
0014505c: 00220821 addu r1,r1,r2         
00145060: ac31986c sw r17,-0x6794(r1)     
00145064: 080517c9 j 0x00145f24           GOTO END
00145068: 00000000 nop                   
0014506c: 16820019 bne r20,r2,0x001450d4 
00145070: 34020031 ori r2,r0,0x0031       
00145074: 3c108017 lui r16,0x8017         {2E} Background
00145078: 2610e418 addiu r16,r16,0xe418   
0014507c: 02002021 addu r4,r16,r0         
00145080: 02202821 addu r5,r17,r0         
00145084: 0c052fd5 jal 0x0014bf54         
00145088: 34060003 ori r6,r0,0x0003       
0014508c: 26040004 addiu r4,r16,0x0004   
00145090: 26250003 addiu r5,r17,0x0003   
00145094: 0c052fd5 jal 0x0014bf54         
00145098: 34060003 ori r6,r0,0x0003       
0014509c: 92220007 lbu r2,0x0007(r17)     
001450a0: 00000000 nop                   
001450a4: 14400006 bne r2,r0,0x001450c0   
001450a8: 00000000 nop                   
001450ac: 92240006 lbu r4,0x0006(r17)     
001450b0: 0c02407e jal 0x000901f8         
001450b4: 02002821 addu r5,r16,r0         
001450b8: 080517c9 j 0x00145f24           GOTO END
001450bc: 00000000 nop                   
001450c0: 92240006 lbu r4,0x0006(r17)     
001450c4: 0c024d7d jal 0x000935f4         
001450c8: 02002821 addu r5,r16,r0         
001450cc: 080517c9 j 0x00145f24           GOTO END
001450d0: 00000000 nop                   
001450d4: 1682000a bne r20,r2,0x00145100 
001450d8: 34020032 ori r2,r0,0x0032       
001450dc: 82220003 lb r2,0x0003(r17)      {31} ColorBGBeta
001450e0: 92240000 lbu r4,0x0000(r17)     
001450e4: 92250004 lbu r5,0x0004(r17)     
001450e8: 82260001 lb r6,0x0001(r17)     
001450ec: 82270002 lb r7,0x0002(r17)     
001450f0: 0c024d27 jal 0x0009349c         
001450f4: afa20010 sw r2,0x0010(r29)     
001450f8: 080517c9 j 0x00145f24           GOTO END
001450fc: 00000000 nop                   
00145100: 16820005 bne r20,r2,0x00145118 
00145104: 3402006c ori r2,r0,0x006c       
00145108: 0c052578 jal 0x001495e0         {32} ColorUnit
0014510c: 02202021 addu r4,r17,r0         
00145110: 080517c9 j 0x00145f24           GOTO END
00145114: 00000000 nop                   
00145118: 16820006 bne r20,r2,0x00145134 
0014511c: 3402006d ori r2,r0,0x006d       
00145120: 3264ffff andi r4,r19,0xffff     {6C}
00145124: 0c0525a3 jal 0x0014968c         
00145128: 00002821 addu r5,r0,r0         
0014512c: 080517c9 j 0x00145f24           GOTO END
00145130: 00000000 nop                   
00145134: 16820006 bne r20,r2,0x00145150 
00145138: 34020033 ori r2,r0,0x0033       
0014513c: 3264ffff andi r4,r19,0xffff     {6D}
00145140: 0c0525a3 jal 0x0014968c         
00145144: 34050001 ori r5,r0,0x0001       
00145148: 080517c9 j 0x00145f24           GOTO END
0014514c: 00000000 nop                   
00145150: 1682000a bne r20,r2,0x0014517c 
00145154: 34020066 ori r2,r0,0x0066       
00145158: 82220003 lb r2,0x0003(r17)      {33} ColorField
0014515c: 92240000 lbu r4,0x0000(r17)     
00145160: 92250004 lbu r5,0x0004(r17)     
00145164: 82260001 lb r6,0x0001(r17)     
00145168: 82270002 lb r7,0x0002(r17)     
0014516c: 0c024c5c jal 0x00093170         
00145170: afa20010 sw r2,0x0010(r29)     
00145174: 080517c9 j 0x00145f24           GOTO END
00145178: 00000000 nop                   
0014517c: 16820007 bne r20,r2,0x0014519c 
00145180: 3402003f ori r2,r0,0x003f       
00145184: 00002021 addu r4,r0,r0          {66}
00145188: 00002821 addu r5,r0,r0         
0014518c: 0c023d8f jal 0x0008f63c         
00145190: 34060001 ori r6,r0,0x0001       
00145194: 080517c9 j 0x00145f24           GOTO END
00145198: 00000000 nop                   
0014519c: 1682000a bne r20,r2,0x001451c8 
001451a0: 34020040 ori r2,r0,0x0040       
001451a4: 92250000 lbu r5,0x0000(r17)     {3F}
001451a8: 92260001 lbu r6,0x0001(r17)     
001451ac: 92270002 lbu r7,0x0002(r17)     
001451b0: 92220003 lbu r2,0x0003(r17)     
001451b4: 3404000b ori r4,r0,0x000b       
001451b8: 0c061053 jal 0x0018414c         
001451bc: afa20010 sw r2,0x0010(r29)     
001451c0: 080517c9 j 0x00145f24           GOTO END
001451c4: 00000000 nop                   
001451c8: 1682001f bne r20,r2,0x00145248 
001451cc: 3402001c ori r2,r0,0x001c       
001451d0: 92240000 lbu r4,0x0000(r17)     {40}
001451d4: 92250001 lbu r5,0x0001(r17)     
001451d8: 92260002 lbu r6,0x0002(r17)     
001451dc: 0c060fed jal 0x00183fb4         
001451e0: 00000000 nop                   
001451e4: 00402021 addu r4,r2,r0         
001451e8: 90820000 lbu r2,0x0000(r4)     
001451ec: 00000000 nop                   
001451f0: 3042003f andi r2,r2,0x003f     
001451f4: 2442fffd addiu r2,r2,0xfffd     
001451f8: 2c420002 sltiu r2,r2,0x0002     
001451fc: 14400006 bne r2,r0,0x00145218   
00145200: 00000000 nop                   
00145204: 90820000 lbu r2,0x0000(r4)     
00145208: 00000000 nop                   
0014520c: 304200c0 andi r2,r2,0x00c0     
00145210: 34420015 ori r2,r2,0x0015       
00145214: a0820000 sb r2,0x0000(r4)       
00145218: 92220003 lbu r2,0x0003(r17)     
0014521c: 00000000 nop                   
00145220: a0820002 sb r2,0x0002(r4)       
00145224: 92230004 lbu r3,0x0004(r17)     
00145228: 90820006 lbu r2,0x0006(r4)     
0014522c: 30630001 andi r3,r3,0x0001     
00145230: 00031840 sll r3,r3,0x01         
00145234: 304200fd andi r2,r2,0x00fd     
00145238: 00431025 or r2,r2,r3           
0014523c: 304200fe andi r2,r2,0x00fe     
00145240: 080517c9 j 0x00145f24           GOTO END
00145244: a0820006 sb r2,0x0006(r4)       
00145248: 16820005 bne r20,r2,0x00145260 
0014524c: 34020076 ori r2,r0,0x0076       
00145250: 0c04f680 jal 0x0013da00         {1C}
00145254: 02402021 addu r4,r18,r0         
00145258: 080517c9 j 0x00145f24           GOTO END
0014525c: 00000000 nop                   
00145260: 1682000e bne r20,r2,0x0014529c 
00145264: 34020077 ori r2,r0,0x0077       
00145268: 3c018016 lui r1,0x8016          {76} DarkScreen
0014526c: ac206044 sw r0,0x6044(r1)       
00145270: 0c0526fb jal 0x00149bec         
00145274: 34040010 ori r4,r0,0x0010       
00145278: 00409021 addu r18,r2,r0         
0014527c: 3c058014 lui r5,0x8014         
00145280: 24a5bd94 addiu r5,r5,0xbd94     
00145284: 0c053228 jal 0x0014c8a0         
00145288: 02402021 addu r4,r18,r0         
0014528c: 02402021 addu r4,r18,r0         
00145290: 00002821 addu r5,r0,r0         
00145294: 080517c3 j 0x00145f0c           
00145298: 02203021 addu r6,r17,r0         
0014529c: 1682000c bne r20,r2,0x001452d0 
001452a0: 34020078 ori r2,r0,0x0078       
001452a4: 0c05272f jal 0x00149cbc         {77} RemoveDarkScreen
001452a8: 34040037 ori r4,r0,0x0037       
001452ac: 00409021 addu r18,r2,r0         
001452b0: 1240031c beq r18,r0,0x00145f24 
001452b4: 00121a80 sll r3,r18,0x0a       
001452b8: 34020036 ori r2,r0,0x0036       
001452bc: 3c018017 lui r1,0x8017         
001452c0: 00230821 addu r1,r1,r3         
001452c4: ac2298b8 sw r2,-0x6748(r1)     
001452c8: 080517c9 j 0x00145f24           GOTO END
001452cc: 00000000 nop                   
001452d0: 16820014 bne r20,r2,0x00145324 
001452d4: 3402007d ori r2,r0,0x007d       
001452d8: 0c0526fb jal 0x00149bec         {78} DisplayConditions
001452dc: 34040010 ori r4,r0,0x0010       
001452e0: 0040b021 addu r22,r2,r0         
001452e4: 34020004 ori r2,r0,0x0004       
001452e8: 16c20006 bne r22,r2,0x00145304 
001452ec: 34020007 ori r2,r0,0x0007       
001452f0: 16420004 bne r18,r2,0x00145304 
001452f4: 00000000 nop                   
001452f8: 0c053274 jal 0x0014c9d0         
001452fc: 34040002 ori r4,r0,0x0002       
00145300: 34160002 ori r22,r0,0x0002     
00145304: 3c058014 lui r5,0x8014         
00145308: 24a5bd6c addiu r5,r5,0xbd6c     
0014530c: 0c053228 jal 0x0014c8a0         
00145310: 02c02021 addu r4,r22,r0         
00145314: 02c02021 addu r4,r22,r0         
00145318: 02402821 addu r5,r18,r0         
0014531c: 080517c3 j 0x00145f0c           
00145320: 02a03021 addu r6,r21,r0         
00145324: 1682000b bne r20,r2,0x00145354 
00145328: 34020021 ori r2,r0,0x0021       
0014532c: 0c0526fb jal 0x00149bec         {7D} ShowChapter
00145330: 34040010 ori r4,r0,0x0010       
00145334: 0040b021 addu r22,r2,r0         
00145338: 3c058014 lui r5,0x8014         
0014533c: 24a5c710 addiu r5,r5,0xc710     
00145340: 0c053228 jal 0x0014c8a0         
00145344: 02c02021 addu r4,r22,r0         
00145348: 02c02021 addu r4,r22,r0         
0014534c: 080517c2 j 0x00145f08           
00145350: 02402821 addu r5,r18,r0         
00145354: 16820007 bne r20,r2,0x00145374 
00145358: 3402006b ori r2,r0,0x006b       
0014535c: 00131400 sll r2,r19,0x10        {21} Sound
00145360: 00021403 sra r2,r2,0x10         
00145364: 3c018016 lui r1,0x8016         
00145368: ac225fb4 sw r2,0x5fb4(r1)       
0014536c: 080517c9 j 0x00145f24           GOTO END
00145370: 00000000 nop                   
00145374: 16820008 bne r20,r2,0x00145398 
00145378: 3402006a ori r2,r0,0x006a       
0014537c: 0c0526fb jal 0x00149bec         {6B} BGSound
00145380: 34040010 ori r4,r0,0x0010       
00145384: 00409021 addu r18,r2,r0         
00145388: 3c058015 lui r5,0x8015         
0014538c: 24a599ac addiu r5,r5,0x99ac     
00145390: 080517be j 0x00145ef8           
00145394: 02402021 addu r4,r18,r0         
00145398: 16820008 bne r20,r2,0x001453bc 
0014539c: 34020022 ori r2,r0,0x0022       
001453a0: 0c0526fb jal 0x00149bec         {6A}
001453a4: 34040010 ori r4,r0,0x0010       
001453a8: 00409021 addu r18,r2,r0         
001453ac: 3c058015 lui r5,0x8015         
001453b0: 24a59a54 addiu r5,r5,0x9a54     
001453b4: 080517be j 0x00145ef8           
001453b8: 02402021 addu r4,r18,r0         
001453bc: 1682000b bne r20,r2,0x001453ec 
001453c0: 34020060 ori r2,r0,0x0060       
001453c4: 3c018016 lui r1,0x8016          {22} Music
001453c8: a4325fc8 sh r18,0x5fc8(r1)     
001453cc: 3c018017 lui r1,0x8017         
001453d0: a4353f54 sh r21,0x3f54(r1)     
001453d4: 3c018017 lui r1,0x8017         
001453d8: a4363f56 sh r22,0x3f56(r1)     
001453dc: 0c0532a0 jal 0x0014ca80         
001453e0: 00000000 nop                   
001453e4: 080517c9 j 0x00145f24           GOTO END
001453e8: 00000000 nop                   
001453ec: 16820009 bne r20,r2,0x00145414 
001453f0: 3402005e ori r2,r0,0x005e       
001453f4: 26420010 addiu r2,r18,0x0010    {60}
001453f8: 00551004 sllv r2,r21,r2         
001453fc: 3c018016 lui r1,0x8016         
00145400: ac225fc0 sw r2,0x5fc0(r1)       
00145404: 0c0532a0 jal 0x0014ca80         
00145408: 00000000 nop                   
0014540c: 080517c9 j 0x00145f24           GOTO END
00145410: 00000000 nop                   
00145414: 16820007 bne r20,r2,0x00145434 
00145418: 34020058 ori r2,r0,0x0058       
0014541c: 3c018016 lui r1,0x8016          {5E}
00145420: a4325fca sh r18,0x5fca(r1)     
00145424: 0c0532a0 jal 0x0014ca80         
00145428: 00000000 nop                   
0014542c: 080517c9 j 0x00145f24           GOTO END
00145430: 00000000 nop                   
00145434: 16820018 bne r20,r2,0x00145498 
00145438: 3402005b ori r2,r0,0x005b       
0014543c: 0c0526fb jal 0x00149bec         {58} LoadEVTCHR
00145440: 34040010 ori r4,r0,0x0010       
00145444: 0040a821 addu r21,r2,r0         
00145448: 3c058014 lui r5,0x8014         
0014544c: 24a5c7c4 addiu r5,r5,0xc7c4     
00145450: 0c053228 jal 0x0014c8a0         
00145454: 02a02021 addu r4,r21,r0         
00145458: 3c048017 lui r4,0x8017         
0014545c: 8c843ca4 lw r4,0x3ca4(r4)       
00145460: 00000000 nop                   
00145464: 03c42021 addu r4,r30,r4         
00145468: 0c05181e jal 0x00146078         
0014546c: 24840002 addiu r4,r4,0x0002     
00145470: 02a02021 addu r4,r21,r0         
00145474: 02402821 addu r5,r18,r0         
00145478: 00021400 sll r2,r2,0x10         
0014547c: 00023403 sra r6,r2,0x10         
00145480: 0c05328e jal 0x0014ca38         
00145484: 00003821 addu r7,r0,r0         
00145488: 0c0532a0 jal 0x0014ca80         
0014548c: 00000000 nop                   
00145490: 080517c9 j 0x00145f24           GOTO END
00145494: 00000000 nop                   
00145498: 16820007 bne r20,r2,0x001454b8 
0014549c: 34020059 ori r2,r0,0x0059       
001454a0: 3c018017 lui r1,0x8017          {5B}
001454a4: ac323ca0 sw r18,0x3ca0(r1)     
001454a8: 0c0532a0 jal 0x0014ca80         
001454ac: 00000000 nop                   
001454b0: 080517c9 j 0x00145f24           GOTO END
001454b4: 00000000 nop                   
001454b8: 16820007 bne r20,r2,0x001454d8 
001454bc: 3402005a ori r2,r0,0x005a       
001454c0: 3c018017 lui r1,0x8017          {59} SaveEVTCHR
001454c4: ac323f4c sw r18,0x3f4c(r1)     
001454c8: 0c0532a0 jal 0x0014ca80         
001454cc: 00000000 nop                   
001454d0: 080517c9 j 0x00145f24           GOTO END
001454d4: 00000000 nop                   
001454d8: 16820007 bne r20,r2,0x001454f8 
001454dc: 3402005c ori r2,r0,0x005c       
001454e0: 3c018017 lui r1,0x8017          {5A}
001454e4: ac323f50 sw r18,0x3f50(r1)     
001454e8: 0c0532a0 jal 0x0014ca80         
001454ec: 00000000 nop                   
001454f0: 080517c9 j 0x00145f24           GOTO END
001454f4: 00000000 nop                   
001454f8: 1682000c bne r20,r2,0x0014552c 
001454fc: 3402005d ori r2,r0,0x005d       
00145500: 00132400 sll r4,r19,0x10        {5C}
00145504: 0c04cc56 jal 0x00133158         
00145508: 00042403 sra r4,r4,0x10         
0014550c: 00021200 sll r2,r2,0x08         
00145510: 00561025 or r2,r2,r22           
00145514: 3c018017 lui r1,0x8017         
00145518: ac223cac sw r2,0x3cac(r1)       
0014551c: 0c0532a0 jal 0x0014ca80         
00145520: 00000000 nop                   
00145524: 080517c9 j 0x00145f24           GOTO END
00145528: 00000000 nop                   
0014552c: 16820007 bne r20,r2,0x0014554c 
00145530: 340200e0 ori r2,r0,0x00e0       
00145534: 3c018017 lui r1,0x8017          {5D}
00145538: ac323f48 sw r18,0x3f48(r1)     
0014553c: 0c0532a0 jal 0x0014ca80         
00145540: 00000000 nop                   
00145544: 080517c9 j 0x00145f24           GOTO END
00145548: 00000000 nop                   
0014554c: 12820275 beq r20,r2,0x00145f24  {E0}
00145550: 3402003d ori r2,r0,0x003d       
00145554: 1682001e bne r20,r2,0x001455d0 
00145558: 34020044 ori r2,r0,0x0044       
0014555c: 00132400 sll r4,r19,0x10        {3D}
00145560: 0c04cc56 jal 0x00133158         
00145564: 00042403 sra r4,r4,0x10         
00145568: 00021400 sll r2,r2,0x10         
0014556c: 00022403 sra r4,r2,0x10         
00145570: 340807d0 ori r8,r0,0x07d0       
00145574: 1088026b beq r4,r8,0x00145f24   
00145578: 00808021 addu r16,r4,r0         
0014557c: 0c051801 jal 0x00146004         
00145580: 02002021 addu r4,r16,r0         
00145584: 10400005 beq r2,r0,0x0014559c   
00145588: 340807d0 ori r8,r0,0x07d0       
0014558c: 0c0532a0 jal 0x0014ca80         
00145590: 00000000 nop                   
00145594: 0805155f j 0x0014557c           
00145598: 00000000 nop                   
0014559c: 12080261 beq r16,r8,0x00145f24 
001455a0: 00000000 nop                   
001455a4: 0c023374 jal 0x0008cdd0         
001455a8: 02002021 addu r4,r16,r0         
001455ac: 00409021 addu r18,r2,r0         
001455b0: 0c02348a jal 0x0008d228         
001455b4: 02002021 addu r4,r16,r0         
001455b8: 0640025a bltz r18,0x00145f24   
001455bc: 00000000 nop                   
001455c0: 0c05ff60 jal 0x0017fd80         
001455c4: 02402021 addu r4,r18,r0         
001455c8: 080517c9 j 0x00145f24           GOTO END
001455cc: 00000000 nop                   
001455d0: 1682001e bne r20,r2,0x0014564c 
001455d4: 34020046 ori r2,r0,0x0046       
001455d8: 00132400 sll r4,r19,0x10        {44} Draw
001455dc: 0c04cc56 jal 0x00133158         
001455e0: 00042403 sra r4,r4,0x10         
001455e4: 00021400 sll r2,r2,0x10         
001455e8: 00028403 sra r16,r2,0x10       
001455ec: 340807d0 ori r8,r0,0x07d0       
001455f0: 1208024c beq r16,r8,0x00145f24 
001455f4: 00000000 nop                   
001455f8: 0c02344e jal 0x0008d138         
001455fc: 02002021 addu r4,r16,r0         
00145600: 0c04ed64 jal 0x0013b590         
00145604: 34040027 ori r4,r0,0x0027       
00145608: 3403018c ori r3,r0,0x018c       
0014560c: 14430245 bne r2,r3,0x00145f24   
00145610: 00000000 nop                   
00145614: 0c023374 jal 0x0008cdd0         
00145618: 02002021 addu r4,r16,r0         
0014561c: 00402021 addu r4,r2,r0         
00145620: 34050001 ori r5,r0,0x0001       
00145624: 0c052122 jal 0x00148488         
00145628: 00000000 nop                   
0014562c: 3c028009 lui r2,0x8009         
00145630: 2442bde4 addiu r2,r2,0xbde4     
00145634: 3c018017 lui r1,0x8017         
00145638: ac223ca8 sw r2,0x3ca8(r1)       
0014563c: 0c0533ad jal 0x0014ceb4         
00145640: 02002021 addu r4,r16,r0         
00145644: 080517c9 j 0x00145f24           GOTO END
00145648: 00000000 nop                   
0014564c: 16820015 bne r20,r2,0x001456a4 
00145650: 34020047 ori r2,r0,0x0047       
00145654: 00132400 sll r4,r19,0x10        {46} Erase
00145658: 0c04cc56 jal 0x00133158         
0014565c: 00042403 sra r4,r4,0x10         
00145660: 00021400 sll r2,r2,0x10         
00145664: 00022403 sra r4,r2,0x10         
00145668: 340807d0 ori r8,r0,0x07d0       
0014566c: 1088022d beq r4,r8,0x00145f24   
00145670: 00000000 nop                   
00145674: 0c023463 jal 0x0008d18c         
00145678: 00000000 nop                   
0014567c: 080517c9 j 0x00145f24           GOTO END
00145680: 00000000 nop                   
00145684: 92220000 lbu r2,0x0000(r17)     
00145688: 00000000 nop                   
0014568c: 00021040 sll r2,r2,0x01         
00145690: 3c018016 lui r1,0x8016         
00145694: 00220821 addu r1,r1,r2         
00145698: a4305fe8 sh r16,0x5fe8(r1)     
0014569c: 080515bc j 0x001456f0           
001456a0: 34020015 ori r2,r0,0x0015       
001456a4: 16820027 bne r20,r2,0x00145744 
001456a8: 34020075 ori r2,r0,0x0075       
001456ac: 3c028017 lui r2,0x8017          {47}
001456b0: 8c423ca4 lw r2,0x3ca4(r2)       
001456b4: 34100003 ori r16,r0,0x0003     
001456b8: 03c21021 addu r2,r30,r2         
001456bc: 24510003 addiu r17,r2,0x0003   
001456c0: 2610ffff addiu r16,r16,0xffff   
001456c4: 0601ffff bgez r16,0x001456c4   
001456c8: 2610ffff addiu r16,r16,0xffff   
001456cc: 00008021 addu r16,r0,r0         
001456d0: 0c0232ed jal 0x0008cbb4         
001456d4: 02002021 addu r4,r16,r0         
001456d8: 1040ffea beq r2,r0,0x00145684   
001456dc: 00000000 nop                   
001456e0: 26100001 addiu r16,r16,0x0001   
001456e4: 2a020015 slti r2,r16,0x0015     
001456e8: 1440fff9 bne r2,r0,0x001456d0   
001456ec: 34020015 ori r2,r0,0x0015       
001456f0: 1202f986 beq r16,r2,0x00143d0c 
001456f4: 00131400 sll r2,r19,0x10       
001456f8: 92240001 lbu r4,0x0001(r17)     
001456fc: 92250002 lbu r5,0x0002(r17)     
00145700: 92260003 lbu r6,0x0003(r17)     
00145704: 92270004 lbu r7,0x0004(r17)     
00145708: 00021403 sra r2,r2,0x10         
0014570c: afa20010 sw r2,0x0010(r29)     
00145710: 92220000 lbu r2,0x0000(r17)     
00145714: 00000000 nop                   
00145718: 00021040 sll r2,r2,0x01         
0014571c: 3c018016 lui r1,0x8016         
00145720: 00220821 addu r1,r1,r2         
00145724: 84225fe8 lh r2,0x5fe8(r1)       
00145728: 00000000 nop                   
0014572c: afa20014 sw r2,0x0014(r29)     
00145730: 92220005 lbu r2,0x0005(r17)     
00145734: 0c0233de jal 0x0008cf78         
00145738: afa20018 sw r2,0x0018(r29)     
0014573c: 080515f6 j 0x001457d8           
00145740: 34080001 ori r8,r0,0x0001       
00145744: 128201f7 beq r20,r2,0x00145f24  {75} GOTO END
00145748: 34020045 ori r2,r0,0x0045       
0014574c: 16820036 bne r20,r2,0x00145828 
00145750: 3402005f ori r2,r0,0x005f       
  • Modding version: PSX
Love what you're seeing? https://supportus.ffhacktics.com/ 💜 it's really appreciated

Anything is possible as long as it is within the hardware's limits. (ie. disc space, RAM, Video RAM, processor, etc.)
<R999> My target market is not FFT mod players
<Raijinili> remember that? it was awful

Xifanie

November 29, 2011, 02:33:23 am #107 Last Edit: November 29, 2011, 04:15:34 am by Xifanie
00145754: 0c050ef4 jal 0x00143bd0         {45}
00145758: 00000000 nop                   
0014575c: 00132400 sll r4,r19,0x10       
00145760: 00042403 sra r4,r4,0x10         
00145764: 0c060324 jal 0x00180c90         
00145768: 27a50020 addiu r5,r29,0x0020   
0014576c: 00408821 addu r17,r2,r0         
00145770: 8fa30020 lw r3,0x0020(r29)     
00145774: 2402fffe addiu r2,r0,0xfffe     
00145778: 10620003 beq r3,r2,0x00145788   
0014577c: 00008021 addu r16,r0,r0         
00145780: 046001e8 bltz r3,0x00145f24     
00145784: 00000000 nop                   
00145788: 0c0602bf jal 0x00180afc         
0014578c: 02002021 addu r4,r16,r0         
00145790: 10510005 beq r2,r17,0x001457a8 
00145794: 00000000 nop                   
00145798: 26100001 addiu r16,r16,0x0001   
0014579c: 2a020015 slti r2,r16,0x0015     
001457a0: 1440fff9 bne r2,r0,0x00145788   
001457a4: 00000000 nop                   
001457a8: 0c023388 jal 0x0008ce20         
001457ac: 02002021 addu r4,r16,r0         
001457b0: 00409021 addu r18,r2,r0         
001457b4: 2402ffff addiu r2,r0,0xffff     
001457b8: 1642000b bne r18,r2,0x001457e8 
001457bc: 00000000 nop                   
001457c0: 0c052160 jal 0x00148580         
001457c4: 02002021 addu r4,r16,r0         
001457c8: 02002021 addu r4,r16,r0         
001457cc: 0c023417 jal 0x0008d05c         
001457d0: 02c02821 addu r5,r22,r0         
001457d4: 34080001 ori r8,r0,0x0001       
001457d8: 3c018016 lui r1,0x8016         
001457dc: a428604e sh r8,0x604e(r1)       
001457e0: 080517c9 j 0x00145f24           GOTO END
001457e4: 00000000 nop                   
001457e8: 16c00003 bne r22,r0,0x001457f8 
001457ec: 00000000 nop                   
001457f0: 0c02344e jal 0x0008d138         
001457f4: 02402021 addu r4,r18,r0         
001457f8: 0c052160 jal 0x00148580         
001457fc: 02002021 addu r4,r16,r0         
00145800: 104001c8 beq r2,r0,0x00145f24   
00145804: 00000000 nop                   
00145808: 3c028009 lui r2,0x8009         
0014580c: 2442bde4 addiu r2,r2,0xbde4     
00145810: 3c018017 lui r1,0x8017         
00145814: ac223ca8 sw r2,0x3ca8(r1)       
00145818: 0c0533ad jal 0x0014ceb4         
0014581c: 02402021 addu r4,r18,r0         
00145820: 080517c9 j 0x00145f24           GOTO END
00145824: 00000000 nop                   
00145828: 16820005 bne r20,r2,0x00145840 
0014582c: 34020061 ori r2,r0,0x0061       
00145830: 0c051f98 jal 0x00147e60         {5F} WarpUnit
00145834: 02202021 addu r4,r17,r0         
00145838: 080517c9 j 0x00145f24           GOTO END
0014583c: 00000000 nop                   
00145840: 128201b8 beq r20,r2,0x00145f24  {61} GOTO END
00145844: 34020062 ori r2,r0,0x0062       
00145848: 1682001a bne r20,r2,0x001458b4 
0014584c: 34020048 ori r2,r0,0x0048       
00145850: 0c0602bf jal 0x00180afc         {62}
00145854: 02402021 addu r4,r18,r0         
00145858: 3c048017 lui r4,0x8017         
0014585c: 8c843ca4 lw r4,0x3ca4(r4)       
00145860: 00000000 nop                   
00145864: 03c42021 addu r4,r30,r4         
00145868: 90830003 lbu r3,0x0003(r4)     
0014586c: 00408821 addu r17,r2,r0         
00145870: a2230047 sb r3,0x0047(r17)     
00145874: 90820004 lbu r2,0x0004(r4)     
00145878: 00000000 nop                   
0014587c: a2220048 sb r2,0x0048(r17)     
00145880: 90820005 lbu r2,0x0005(r4)     
00145884: 96230048 lhu r3,0x0048(r17)     
00145888: 000213c0 sll r2,r2,0x0f         
0014588c: 30637fff andi r3,r3,0x7fff     
00145890: 00621825 or r3,r3,r2           
00145894: a6230048 sh r3,0x0048(r17)     
00145898: 90820006 lbu r2,0x0006(r4)     
0014589c: 3063f0ff andi r3,r3,0xf0ff     
001458a0: 3042000f andi r2,r2,0x000f     
001458a4: 00021200 sll r2,r2,0x08         
001458a8: 00621825 or r3,r3,r2           
001458ac: 080517c9 j 0x00145f24           GOTO END
001458b0: a6230048 sh r3,0x0048(r17)     
001458b4: 1682000a bne r20,r2,0x001458e0 
001458b8: 3402004b ori r2,r0,0x004b       
001458bc: 0c0532a0 jal 0x0014ca80         {48}
001458c0: 00000000 nop                   
001458c4: 3c028016 lui r2,0x8016         
001458c8: 9442604e lhu r2,0x604e(r2)     
001458cc: 00000000 nop                   
001458d0: 10400194 beq r2,r0,0x00145f24   
001458d4: 00000000 nop                   
001458d8: 0805162f j 0x001458bc           
001458dc: 00000000 nop                   
001458e0: 16820009 bne r20,r2,0x00145908 
001458e4: 34020049 ori r2,r0,0x0049       
001458e8: 0c0532a0 jal 0x0014ca80         {4B} AddUnitEnd ?
001458ec: 00000000 nop                   
001458f0: 0c05272f jal 0x00149cbc         
001458f4: 3404000e ori r4,r0,0x000e       
001458f8: 1040018a beq r2,r0,0x00145f24   
001458fc: 00000000 nop                   
00145900: 0805163a j 0x001458e8           
00145904: 00000000 nop                   
00145908: 16820012 bne r20,r2,0x00145954 
0014590c: 3402004a ori r2,r0,0x004a       
00145910: 0c0526fb jal 0x00149bec         {49}
00145914: 34040010 ori r4,r0,0x0010       
00145918: 00409021 addu r18,r2,r0         
0014591c: 3c058014 lui r5,0x8014         
00145920: 24a5edd8 addiu r5,r5,0xedd8     
00145924: 0c053228 jal 0x0014c8a0         
00145928: 02402021 addu r4,r18,r0         
0014592c: 00121280 sll r2,r18,0x0a       
00145930: 3c018017 lui r1,0x8017         
00145934: 00220821 addu r1,r1,r2         
00145938: ac31986c sw r17,-0x6794(r1)     
0014593c: 03c02021 addu r4,r30,r0         
00145940: 3405004a ori r5,r0,0x004a       Block End = 4A
00145944: 0c0527af jal 0x00149ebc         
00145948: 00000000 nop                   
0014594c: 080517c9 j 0x00145f24           GOTO END
00145950: 0040f021 addu r30,r2,r0         
00145954: 12820173 beq r20,r2,0x00145f24  {4A} GOTO END
00145958: 340200e5 ori r2,r0,0x00e5       
0014595c: 1682001a bne r20,r2,0x001459c8 
00145960: 340200f0 ori r2,r0,0x00f0       
00145964: 00151200 sll r2,r21,0x08        {E5} WaitForInstruction
00145968: 0052b021 addu r22,r2,r18       
0014596c: 3c118017 lui r17,0x8017         
00145970: 2631986c addiu r17,r17,0x986c   
00145974: 0c0532a0 jal 0x0014ca80         
00145978: 34100001 ori r16,r0,0x0001     
0014597c: 00101280 sll r2,r16,0x0a       
00145980: 00511821 addu r3,r2,r17         
00145984: 8c620048 lw r2,0x0048(r3)       
00145988: 00000000 nop                   
0014598c: 10400005 beq r2,r0,0x001459a4   
00145990: 00000000 nop                   
00145994: 8c62004c lw r2,0x004c(r3)       
00145998: 00000000 nop                   
0014599c: 10560006 beq r2,r22,0x001459b8 
001459a0: 34020010 ori r2,r0,0x0010       
001459a4: 26100001 addiu r16,r16,0x0001   
001459a8: 2a020010 slti r2,r16,0x0010     
001459ac: 1440fff4 bne r2,r0,0x00145980   
001459b0: 00101280 sll r2,r16,0x0a       
001459b4: 34020010 ori r2,r0,0x0010       
001459b8: 1202015a beq r16,r2,0x00145f24 
001459bc: 00000000 nop                   
001459c0: 0805165d j 0x00145974           
001459c4: 00000000 nop                   
001459c8: 16820005 bne r20,r2,0x001459e0 
001459cc: 340200f1 ori r2,r0,0x00f1       
001459d0: 0c0532a0 jal 0x0014ca80         {F0}
001459d4: 00000000 nop                   
001459d8: 080517c9 j 0x00145f24           GOTO END
001459dc: 00000000 nop                   
001459e0: 16820016 bne r20,r2,0x00145a3c 
001459e4: 3402007b ori r2,r0,0x007b       
001459e8: 0c04b721 jal 0x0012dc84         {F1} Wait
001459ec: 00000000 nop                   
001459f0: 1040000d beq r2,r0,0x00145a28   
001459f4: 00131400 sll r2,r19,0x10       
001459f8: 00028403 sra r16,r2,0x10       
001459fc: 2a020003 slti r2,r16,0x0003     
00145a00: 1440000a bne r2,r0,0x00145a2c   
00145a04: 00132400 sll r4,r19,0x10       
00145a08: 0c0237b6 jal 0x0008ded8         
00145a0c: 00000000 nop                   
00145a10: 0202001a div r16,r2             
00145a14: 00002012 mflo r4               
00145a18: 0c053216 jal 0x0014c858         
00145a1c: 00000000 nop                   
00145a20: 080517c9 j 0x00145f24           GOTO END
00145a24: 00000000 nop                   
00145a28: 00132400 sll r4,r19,0x10       
00145a2c: 0c053216 jal 0x0014c858         
00145a30: 00042403 sra r4,r4,0x10         
00145a34: 080517c9 j 0x00145f24           GOTO END
00145a38: 00000000 nop                   
00145a3c: 1682000d bne r20,r2,0x00145a74 
00145a40: 3402007c ori r2,r0,0x007c       
00145a44: 00131400 sll r2,r19,0x10        {7B}
00145a48: 00028403 sra r16,r2,0x10       
00145a4c: 0c0532a0 jal 0x0014ca80         
00145a50: 00000000 nop                   
00145a54: 3c028017 lui r2,0x8017         
00145a58: 8c42d9b4 lw r2,-0x264c(r2)     
00145a5c: 00000000 nop                   
00145a60: 02021024 and r2,r16,r2         
00145a64: 1040fff9 beq r2,r0,0x00145a4c   
00145a68: 00000000 nop                   
00145a6c: 080517c9 j 0x00145f24           GOTO END
00145a70: 00000000 nop                   
00145a74: 16820005 bne r20,r2,0x00145a8c 
00145a78: 3402004e ori r2,r0,0x004e       
00145a7c: 0c011033 jal 0x000440cc         {7C}
00145a80: 00000000 nop                   
00145a84: 080517c9 j 0x00145f24           GOTO END
00145a88: 00000000 nop                   
00145a8c: 16820013 bne r20,r2,0x00145adc 
00145a90: 34020072 ori r2,r0,0x0072       
00145a94: 00132400 sll r4,r19,0x10        {4E} AddUnit
00145a98: 0c04cc56 jal 0x00133158         
00145a9c: 00042403 sra r4,r4,0x10         
00145aa0: 00021400 sll r2,r2,0x10         
00145aa4: 00022403 sra r4,r2,0x10         
00145aa8: 340807d0 ori r8,r0,0x07d0       
00145aac: 1088011d beq r4,r8,0x00145f24   
00145ab0: 00000000 nop                   
00145ab4: 12c00005 beq r22,r0,0x00145acc 
00145ab8: 00000000 nop                   
00145abc: 0c0230a9 jal 0x0008c2a4         
00145ac0: 00000000 nop                   
00145ac4: 080517c9 j 0x00145f24           GOTO END
00145ac8: 00000000 nop                   
00145acc: 0c02309a jal 0x0008c268         
00145ad0: 00000000 nop                   
00145ad4: 080517c9 j 0x00145f24           GOTO END
00145ad8: 00000000 nop                   
00145adc: 16820005 bne r20,r2,0x00145af4 
00145ae0: 3402007e ori r2,r0,0x007e       
00145ae4: 0c04f961 jal 0x0013e584         {72}
00145ae8: 00000000 nop                   
00145aec: 080517c9 j 0x00145f24           GOTO END
00145af0: 00000000 nop                   
00145af4: 16820005 bne r20,r2,0x00145b0c 
00145af8: 3402007f ori r2,r0,0x007f       
00145afc: 0c0528fe jal 0x0014a3f8         {7E}
00145b00: 02202021 addu r4,r17,r0         
00145b04: 080517c9 j 0x00145f24           GOTO END
00145b08: 00000000 nop                   
00145b0c: 1682000d bne r20,r2,0x00145b44 
00145b10: 34020082 ori r2,r0,0x0082       
00145b14: 00132400 sll r4,r19,0x10        {7F}
00145b18: 0c04cc56 jal 0x00133158         
00145b1c: 00042403 sra r4,r4,0x10         
00145b20: 00021400 sll r2,r2,0x10         
00145b24: 00022403 sra r4,r2,0x10         
00145b28: 340807d0 ori r8,r0,0x07d0       
00145b2c: 108800fd beq r4,r8,0x00145f24   
00145b30: 02c02821 addu r5,r22,r0         
00145b34: 0c0236b0 jal 0x0008dac0         
00145b38: 02e03021 addu r6,r23,r0         
00145b3c: 080517c9 j 0x00145f24           GOTO END
00145b40: 00000000 nop                   
00145b44: 16820005 bne r20,r2,0x00145b5c 
00145b48: 34020083 ori r2,r0,0x0083       
00145b4c: 0c04fa07 jal 0x0013e81c         {82}
00145b50: 00000000 nop                   
00145b54: 080517c9 j 0x00145f24           GOTO END
00145b58: 00000000 nop                   
00145b5c: 16820005 bne r20,r2,0x00145b74 
00145b60: 34020084 ori r2,r0,0x0084       
00145b64: 0c052476 jal 0x001491d8         {83} ChangeStats ?
00145b68: 02202021 addu r4,r17,r0         
00145b6c: 080517c9 j 0x00145f24           GOTO END
00145b70: 00000000 nop                   
00145b74: 16820005 bne r20,r2,0x00145b8c 
00145b78: 34020085 ori r2,r0,0x0085       
00145b7c: 0c010f48 jal 0x00043d20         {84}
00145b80: 02402021 addu r4,r18,r0         
00145b84: 080517c9 j 0x00145f24           GOTO END
00145b88: 00000000 nop                   
00145b8c: 16820014 bne r20,r2,0x00145be0 
00145b90: 34020086 ori r2,r0,0x0086       
00145b94: 0c04ed64 jal 0x0013b590         {85} Date
00145b98: 340401fc ori r4,r0,0x01fc       
00145b9c: 144000e1 bne r2,r0,0x00145f24   
00145ba0: 00000000 nop                   
00145ba4: 124000df beq r18,r0,0x00145f24 
00145ba8: 00000000 nop                   
00145bac: 0c04ed64 jal 0x0013b590         
00145bb0: 3404002e ori r4,r0,0x002e       
00145bb4: 3404002f ori r4,r0,0x002f       
00145bb8: 0c04ed64 jal 0x0013b590         
00145bbc: 00408021 addu r16,r2,r0         
00145bc0: 3c048005 lui r4,0x8005         
00145bc4: 24847cec addiu r4,r4,0x7cec     
00145bc8: 2645ffff addiu r5,r18,0xffff   
00145bcc: 02003021 addu r6,r16,r0         
00145bd0: 0c04f6b9 jal 0x0013dae4         
00145bd4: 00403821 addu r7,r2,r0         
00145bd8: 080517c9 j 0x00145f24           GOTO END
00145bdc: 00000000 nop                   
00145be0: 1682000d bne r20,r2,0x00145c18 
00145be4: 34020087 ori r2,r0,0x0087       
00145be8: 00132400 sll r4,r19,0x10        {86} TempWeapon
00145bec: 0c04cc56 jal 0x00133158         
00145bf0: 00042403 sra r4,r4,0x10         
00145bf4: 00021400 sll r2,r2,0x10         
00145bf8: 00022c03 sra r5,r2,0x10         
00145bfc: 340807d0 ori r8,r0,0x07d0       
00145c00: 10a800c8 beq r5,r8,0x00145f24   
00145c04: 00000000 nop                   
00145c08: 0c0233cf jal 0x0008cf3c         
00145c0c: 02c02021 addu r4,r22,r0         
00145c10: 080517c9 j 0x00145f24           GOTO END
00145c14: 00000000 nop                   
00145c18: 16820026 bne r20,r2,0x00145cb4 
00145c1c: 34020089 ori r2,r0,0x0089       
00145c20: 00132400 sll r4,r19,0x10        {87} Arrow
00145c24: 0c04cc56 jal 0x00133158         
00145c28: 00042403 sra r4,r4,0x10         
00145c2c: 00021400 sll r2,r2,0x10         
00145c30: 00022403 sra r4,r2,0x10         
00145c34: 340807d0 ori r8,r0,0x07d0       
00145c38: 108800ba beq r4,r8,0x00145f24   
00145c3c: 00000000 nop                   
00145c40: 0c023374 jal 0x0008cdd0         
00145c44: 00000000 nop                   
00145c48: 3c048017 lui r4,0x8017         
00145c4c: 8c843ca4 lw r4,0x3ca4(r4)       
00145c50: 00409021 addu r18,r2,r0         
00145c54: 03c42021 addu r4,r30,r4         
00145c58: 0c05181e jal 0x00146078         
00145c5c: 24840003 addiu r4,r4,0x0003     
00145c60: 00021400 sll r2,r2,0x10         
00145c64: 0c04cc56 jal 0x00133158         
00145c68: 00022403 sra r4,r2,0x10         
00145c6c: 00021400 sll r2,r2,0x10         
00145c70: 00022403 sra r4,r2,0x10         
00145c74: 340807d0 ori r8,r0,0x07d0       
00145c78: 108800aa beq r4,r8,0x00145f24   
00145c7c: 00000000 nop                   
00145c80: 0c023374 jal 0x0008cdd0         
00145c84: 00000000 nop                   
00145c88: 3c03801b lui r3,0x801b         
00145c8c: 24630a90 addiu r3,r3,0x0a90     
00145c90: 3c018017 lui r1,0x8017         
00145c94: ac233ca8 sw r3,0x3ca8(r1)       
00145c98: 00402021 addu r4,r2,r0         
00145c9c: 3c058017 lui r5,0x8017         
00145ca0: 24a5e40c addiu r5,r5,0xe40c     
00145ca4: 0c0533ad jal 0x0014ceb4         
00145ca8: 02403021 addu r6,r18,r0         
00145cac: 080517c9 j 0x00145f24           GOTO END
00145cb0: 00000000 nop                   
00145cb4: 16820005 bne r20,r2,0x00145ccc 
00145cb8: 34020088 ori r2,r0,0x0088       
00145cbc: 0c024c46 jal 0x00093118         {89}
00145cc0: 00000000 nop                   
00145cc4: 080517c9 j 0x00145f24           GOTO END
00145cc8: 00000000 nop                   
00145ccc: 16820005 bne r20,r2,0x00145ce4 
00145cd0: 3402008c ori r2,r0,0x008c       
00145cd4: 0c024c51 jal 0x00093144         {88}
00145cd8: 00000000 nop                   
00145cdc: 080517c9 j 0x00145f24           GOTO END
00145ce0: 00000000 nop                   
00145ce4: 16820005 bne r20,r2,0x00145cfc 
00145ce8: 3402008e ori r2,r0,0x008e       
00145cec: 0c051feb jal 0x00147fac         {8C}
00145cf0: 02202021 addu r4,r17,r0         
00145cf4: 080517c9 j 0x00145f24           GOTO END
00145cf8: 00000000 nop                   
00145cfc: 16820012 bne r20,r2,0x00145d48 
00145d00: 3402008f ori r2,r0,0x008f       
00145d04: 0c0532a0 jal 0x0014ca80         {8E}
00145d08: 00000000 nop                   
00145d0c: 0c0532a0 jal 0x0014ca80         
00145d10: 00000000 nop                   
00145d14: 0c05272f jal 0x00149cbc         
00145d18: 3404003d ori r4,r0,0x003d       
00145d1c: 00409021 addu r18,r2,r0         
00145d20: 12400080 beq r18,r0,0x00145f24 
00145d24: 00121280 sll r2,r18,0x0a       
00145d28: 3c018017 lui r1,0x8017         
00145d2c: 00220821 addu r1,r1,r2         
00145d30: 8c229878 lw r2,-0x6788(r1)     
00145d34: 00000000 nop                   
00145d38: 1040fff4 beq r2,r0,0x00145d0c   
00145d3c: 00000000 nop                   
00145d40: 080517c9 j 0x00145f24           GOTO END
00145d44: 00000000 nop                   
00145d48: 16820005 bne r20,r2,0x00145d60 
00145d4c: 34020090 ori r2,r0,0x0090       
00145d50: 3c018016 lui r1,0x8016          {8F}
00145d54: ac326028 sw r18,0x6028(r1)     
00145d58: 080517c9 j 0x00145f24           GOTO END
00145d5c: 00000000 nop                   
00145d60: 16820029 bne r20,r2,0x00145e08 
00145d64: 34020091 ori r2,r0,0x0091       
00145d68: 3c028009 lui r2,0x8009          {90}
00145d6c: 8c4261b4 lw r2,0x61b4(r2)       
00145d70: 00000000 nop                   
00145d74: 1452000e bne r2,r18,0x00145db0 
00145d78: 00000000 nop                   
00145d7c: 3c028009 lui r2,0x8009         
00145d80: 8c4261bc lw r2,0x61bc(r2)       
00145d84: 00000000 nop                   
00145d88: 14550009 bne r2,r21,0x00145db0 
00145d8c: 00000000 nop                   
00145d90: 3c038017 lui r3,0x8017         
00145d94: 8c63d9b4 lw r3,-0x264c(r3)     
00145d98: 00000000 nop                   
00145d9c: 30620020 andi r2,r3,0x0020     
00145da0: 10400003 beq r2,r0,0x00145db0   
00145da4: 3062f000 andi r2,r3,0xf000     
00145da8: 1040005e beq r2,r0,0x00145f24   
00145dac: 00000000 nop                   
00145db0: 0c0532a0 jal 0x0014ca80         
00145db4: 00000000 nop                   
00145db8: 3c028009 lui r2,0x8009         
00145dbc: 8c4261b4 lw r2,0x61b4(r2)       
00145dc0: 00000000 nop                   
00145dc4: 1452fffa bne r2,r18,0x00145db0 
00145dc8: 00000000 nop                   
00145dcc: 3c028009 lui r2,0x8009         
00145dd0: 8c4261bc lw r2,0x61bc(r2)       
00145dd4: 00000000 nop                   
00145dd8: 1455fff5 bne r2,r21,0x00145db0 
00145ddc: 00000000 nop                   
00145de0: 3c038017 lui r3,0x8017         
00145de4: 8c63d9b4 lw r3,-0x264c(r3)     
00145de8: 00000000 nop                   
00145dec: 30620020 andi r2,r3,0x0020     
00145df0: 1040ffef beq r2,r0,0x00145db0   
00145df4: 3062f000 andi r2,r3,0xf000     
00145df8: 1040004a beq r2,r0,0x00145f24   
00145dfc: 00000000 nop                   
00145e00: 0805176c j 0x00145db0           
00145e04: 00000000 nop                   
00145e08: 16820018 bne r20,r2,0x00145e6c 
00145e0c: 34020093 ori r2,r0,0x0093       
00145e10: 0c0526fb jal 0x00149bec         {91} ShowMapTitle
00145e14: 34040010 ori r4,r0,0x0010       
00145e18: 0040b821 addu r23,r2,r0         
00145e1c: 0c04ef05 jal 0x0013bc14         
00145e20: 3404000d ori r4,r0,0x000d       
00145e24: 0c0727b0 jal 0x001c9ec0         
00145e28: 00000000 nop                   
00145e2c: 3c05801d lui r5,0x801d         
00145e30: 24a59d68 addiu r5,r5,0x9d68     
00145e34: 0c053228 jal 0x0014c8a0         
00145e38: 02e02021 addu r4,r23,r0         
00145e3c: 02e02021 addu r4,r23,r0         
00145e40: 00122e00 sll r5,r18,0x18       
00145e44: 00052e03 sra r5,r5,0x18         
00145e48: 00153600 sll r6,r21,0x18       
00145e4c: 00063603 sra r6,r6,0x18         
00145e50: 00163e00 sll r7,r22,0x18       
00145e54: 0c05328e jal 0x0014ca38         
00145e58: 00073e03 sra r7,r7,0x18         
00145e5c: 0c053274 jal 0x0014c9d0         
00145e60: 02e02021 addu r4,r23,r0         
00145e64: 080517c9 j 0x00145f24           GOTO END
00145e68: 00000000 nop                   
00145e6c: 1682000a bne r20,r2,0x00145e98 
00145e70: 34020094 ori r2,r0,0x0094       
00145e74: 0c04ed64 jal 0x0013b590         {93}
00145e78: 340401fc ori r4,r0,0x01fc       
00145e7c: 14400029 bne r2,r0,0x00145f24   
00145e80: 34040054 ori r4,r0,0x0054       
00145e84: 00132c00 sll r5,r19,0x10       
00145e88: 0c04ed91 jal 0x0013b644         
00145e8c: 00052c03 sra r5,r5,0x10         
00145e90: 080517c9 j 0x00145f24           GOTO END
00145e94: 00000000 nop                   
00145e98: 16820007 bne r20,r2,0x00145eb8 
00145e9c: 34020098 ori r2,r0,0x0098       
00145ea0: 00132400 sll r4,r19,0x10        {94} TeleportOut
00145ea4: 00042403 sra r4,r4,0x10         
00145ea8: 0c051ef4 jal 0x00147bd0         
00145eac: 34050001 ori r5,r0,0x0001       
00145eb0: 080517c9 j 0x00145f24           GOTO END
00145eb4: 00000000 nop                   
00145eb8: 16820007 bne r20,r2,0x00145ed8 
00145ebc: 34020092 ori r2,r0,0x0092       
00145ec0: 00132400 sll r4,r19,0x10        {98} TeleportIn
00145ec4: 00042403 sra r4,r4,0x10         
00145ec8: 0c051f2a jal 0x00147ca8         
00145ecc: 34050001 ori r5,r0,0x0001       
00145ed0: 080517c9 j 0x00145f24           GOTO END
00145ed4: 00000000 nop                   
00145ed8: 16820010 bne r20,r2,0x00145f1c 
00145edc: 34020095 ori r2,r0,0x0095       
00145ee0: 0c0526fb jal 0x00149bec         {92} InflictStatus ?
00145ee4: 34040010 ori r4,r0,0x0010       
00145ee8: 00409021 addu r18,r2,r0         
00145eec: 02402021 addu r4,r18,r0         
00145ef0: 3c058015 lui r5,0x8015         
00145ef4: 24a58e88 addiu r5,r5,0x8e88     
00145ef8: 0c053228 jal 0x0014c8a0         
00145efc: 00000000 nop                   
00145f00: 02402021 addu r4,r18,r0         
00145f04: 02202821 addu r5,r17,r0         
00145f08: 00003021 addu r6,r0,r0         
00145f0c: 0c05328e jal 0x0014ca38         
00145f10: 00003821 addu r7,r0,r0         
00145f14: 080517c9 j 0x00145f24           GOTO END
00145f18: 00000000 nop                   
00145f1c: 16820007 bne r20,r2,0x00145f3c 
00145f20: 00000000 nop                   
00145f24: 3c018015 lui r1,0x8015          {95} (END)
00145f28: 00340821 addu r1,r1,r20         
00145f2c: 9023d170 lbu r3,-0x2e90(r1)     
00145f30: 27c20001 addiu r2,r30,0x0001   
00145f34: 08050f43 j 0x00143d0c           
00145f38: 0043f021 addu r30,r2,r3         
00145f3c: 0c053256 jal 0x0014c958         
00145f40: 00000000 nop                   
00145f44: 8fbf004c lw r31,0x004c(r29)     
00145f48: 8fbe0048 lw r30,0x0048(r29)     
00145f4c: 8fb70044 lw r23,0x0044(r29)     
00145f50: 8fb60040 lw r22,0x0040(r29)     
00145f54: 8fb5003c lw r21,0x003c(r29)     
00145f58: 8fb40038 lw r20,0x0038(r29)     
00145f5c: 8fb30034 lw r19,0x0034(r29)     
00145f60: 8fb20030 lw r18,0x0030(r29)     
00145f64: 8fb1002c lw r17,0x002c(r29)     
00145f68: 8fb00028 lw r16,0x0028(r29)     
00145f6c: 27bd0050 addiu r29,r29,0x0050   
00145f70: 03e00008 jr r31                 
  • Modding version: PSX
Love what you're seeing? https://supportus.ffhacktics.com/ 💜 it's really appreciated

Anything is possible as long as it is within the hardware's limits. (ie. disc space, RAM, Video RAM, processor, etc.)
<R999> My target market is not FFT mod players
<Raijinili> remember that? it was awful

Glain

Here's a few battle.bin routines I made notes on while checking out crystal inheriting (The forum seems to hate my formatting).



ROUTINE: FIND UNIT AT SPECIFIED COORDINATES

   PARAMETERS:
      r4 = X-Coordinate
      r5 = Y-Coordinate
      r6 = Is on Upper Level
      r7 = Flags to specify which units to find (Example 0x41 = Crystal and Treasure units)
         0x80 : Chocobo
         0x40 : Crystal
         0x10 : Transparent
         0x01 : Treasure
      
   RETURNS:
      r2    =    -2, If coordinates invalid;
            -1, If no unit found at coordinates with any of the specified flags;
            >=0, If unit found at coordinates with at least one specified flag; Value = [index of unit found]

SECTION 1 : SET UP ROUTINE

0017dca8: 27bdffd0 addiu r29,r29,0xffd0
0017dcac: afb40020 sw r20,0x0020(r29)
0017dcb0: 0080a021 addu r20,r4,r0            #   r20 = r4 (X)
0017dcb4: afb50024 sw r21,0x0024(r29)
0017dcb8: 00a0a821 addu r21,r5,r0            #    r21 = r5 (Y)
0017dcbc: afb60028 sw r22,0x0028(r29)
0017dcc0: 00c0b021 addu r22,r6,r0            #    r22 = r6 (Is on Upper Level)
0017dcc4: afb20018 sw r18,0x0018(r29)   
0017dcc8: 00e09021 addu r18,r7,r0            #    r18 = r7 (Flags)
0017dccc: afbf002c sw r31,0x002c(r29)
0017dcd0: afb3001c sw r19,0x001c(r29)
0017dcd4: afb10014 sw r17,0x0014(r29)

SECTION 2 : INTEGRITY CHECK ON COORDINATES

0017dcd8: 0680002c bltz r20,0x0017dd8c         #    IF (X < 0)
0017dcdc: afb00010 sw r16,0x0010(r29)         #      RETURN -2
0017dce0: 3c03800e lui r3,0x800e
0017dce4: 90634e9c lbu r3,0x4e9c(r3)         #   r3 = [Map MAX X]      
0017dce8: 00000000 nop
0017dcec: 0283102a slt r2,r20,r3            #   IF (X >= [Map MAX X])
0017dcf0: 10400026 beq r2,r0,0x0017dd8c         #      RETURN -2
0017dcf4: 00000000 nop
0017dcf8: 06a0006a bltz r21,0x0017dea4         #   IF (Y < 0)
0017dcfc: 2402fffe addiu r2,r0,0xfffe         #      RETURN -2
0017dd00: 3c02800e lui r2,0x800e
0017dd04: 90424ea0 lbu r2,0x4ea0(r2)         
0017dd08: 00000000 nop
0017dd0c: 02a2102a slt r2,r21,r2            #   IF (Y >= [Map MAX Y])
0017dd10: 1040001e beq r2,r0,0x0017dd8c         #      RETURN -2
0017dd14: 2ec20002 sltiu r2,r22,0x0002         #   IF (r22 >= 2)
0017dd18: 1040001c beq r2,r0,0x0017dd8c         #      RETURN -2
0017dd1c: 02a30018 mult r21,r3               
0017dd20: 00161200 sll r2,r22,0x08            
0017dd24: 00001812 mflo r3                  
0017dd28: 00431021 addu r2,r2,r3
0017dd2c: 00541021 addu r2,r2,r20            
0017dd30: 000210c0 sll r2,r2,0x03
0017dd34: 3c038019 lui r3,0x8019
0017dd38: 2463f8cc addiu r3,r3,0xf8cc
0017dd3c: 00431821 addu r3,r2,r3            #   r3 = [Tile data for current tile specified by (X,Y)]
0017dd40: 90620006 lbu r2,0x0006(r3)
0017dd44: 00000000 nop
0017dd48: 30420003 andi r2,r2,0x0003         #   IF (current tile unselectable and/or cannot target)
0017dd4c: 14400055 bne r2,r0,0x0017dea4         #      RETURN -2
0017dd50: 2402fffe addiu r2,r0,0xfffe
0017dd54: 30e20002 andi r2,r7,0x0002         #   r17 = 0; IF (?) (TRUE for r7=65)
0017dd58: 10400010 beq r2,r0,0x0017dd9c         #      JUMP to [SECTION 3]
0017dd5c: 00008821 addu r17,r0,r0            
0017dd60: 90620003 lbu r2,0x0003(r3)
0017dd64: 00000000 nop
0017dd68: 304200e0 andi r2,r2,0x00e0         #   IF (tile depth >= 2)
0017dd6c: 1440004d bne r2,r0,0x0017dea4         #      RETURN -2
0017dd70: 2402fffe addiu r2,r0,0xfffe
0017dd74: 90620003 lbu r2,0x0003(r3)
0017dd78: 00000000 nop
0017dd7c: 3042001f andi r2,r2,0x001f
0017dd80: 28420003 slti r2,r2,0x0003         #   IF (tile height < 3) ??
0017dd84: 14400006 bne r2,r0,0x0017dda0         #      JUMP to [SECTION 3]
0017dd88: 00009821 addu r19,r0,r0
0017dd8c: 0805f7a9 j 0x0017dea4
0017dd90: 2402fffe addiu r2,r0,0xfffe         #   RETURN -2
0017dd94: 0805f7a9 j 0x0017dea4
0017dd98: 3082001f andi r2,r4,0x001f         #   RETURN r4 (low 5 bits)
0017dd9c: 00009821 addu r19,r0,r0            #   r19 = 0 (Offset to current unit in loop)

# SECTION 3 : LOOP THROUGH IN-BATTLE UNITS

#   SECTION 3.0 : START OF LOOP : BEGIN FLAG CHECKS : CRYSTAL=0x40

0017dda0: 3c028019 lui r2,0x8019            #    DO {
0017dda4: 244208cc addiu r2,r2,0x08cc         #      
0017dda8: 02628021 addu r16,r19,r2            #      r16 = [Current unit in loop]
0017ddac: 92030001 lbu r3,0x0001(r16)
0017ddb0: 340200ff ori r2,r0,0x00ff
0017ddb4: 10620036 beq r3,r2,0x0017de90         #       IF (current unit doesn't exist)
0017ddb8: 32420051 andi r2,r18,0x0051         #         CONTINUE
0017ddbc: 10400018 beq r2,r0,0x0017de20         #      (Check r18 = fourth parameter) : bits 0x40, 0x10, 0x01
0017ddc0: 32420040 andi r2,r18,0x0040         #      IF (Checked bits) == 0
0017ddc4: 10400007 beq r2,r0,0x0017dde4         #         r2 = (Check r18 bit 0x01); JUMP to [SECTION 3.1]
0017ddc8: 32420001 andi r2,r18,0x0001         
0017ddcc: 92020058 lbu r2,0x0058(r16)         
0017ddd0: 00000000 nop
0017ddd4: 30420040 andi r2,r2,0x0040         #      IF (current unit is crystal)
0017ddd8: 14400012 bne r2,r0,0x0017de24         #         r2 = (Check r18 bit 0x80); JUMP TO [SECTION 3.3]
0017dddc: 32420080 andi r2,r18,0x0080
0017dde0: 32420001 andi r2,r18,0x0001         #      r2 = (Check r18 bit 0x01)

#   SECTION 3.1 : FLAG CHECKS SUBSECTION 1 : TREASURE=0x01

0017dde4: 10400007 beq r2,r0,0x0017de04         #      IF (Check r18 bit 0x01) == 0
0017dde8: 32420010 andi r2,r18,0x0010         #         r2 = (Check r18 bit 0x10); JUMP to [SECTION 3.2]
0017ddec: 92020059 lbu r2,0x0059(r16)
0017ddf0: 00000000 nop
0017ddf4: 30420001 andi r2,r2,0x0001         #      IF (current unit is treasure)
0017ddf8: 1440000a bne r2,r0,0x0017de24         #         r2 = (Check r18 bit 0x80); JUMP to [SECTION 3.3]
0017ddfc: 32420080 andi r2,r18,0x0080
0017de00: 32420010 andi r2,r18,0x0010         #      r2 = (Check r18 bit 0x10)

#   SECTION 3.2 : FLAG CHECKS SUBSECTION 2 : TRANSPARENT=0x10

0017de04: 10400022 beq r2,r0,0x0017de90         #      IF (Check r18 bit 0x10) == 0
0017de08: 00000000 nop                     #         CONTINUE
0017de0c: 9202005a lbu r2,0x005a(r16)               
0017de10: 00000000 nop
0017de14: 30420010 andi r2,r2,0x0010
0017de18: 1040001d beq r2,r0,0x0017de90         #       IF (current unit is not transparent)
0017de1c: 00000000 nop                     #         CONTINUE
0017de20: 32420080 andi r2,r18,0x0080         #      r2 = (Check r18 bit 0x80)

#   SECTION 3.3 : FLAG CHECKS SUBSECTION 3 : CHOCOBO=0x80

0017de24: 10400005 beq r2,r0,0x0017de3c         #       IF (Check r18 bit 0x80) == 0
0017de28: 00000000 nop                     #         JUMP to [SECTION 3.4]
0017de2c: 0c05d0f2 jal 0x001743c8            #      Routine: Chocobo check? (r4 = current unit pointer)
0017de30: 02002021 addu r4,r16,r0
0017de34: 10400016 beq r2,r0,0x0017de90         #      IF (Chocobo check result == 0)
0017de38: 00000000 nop                     #         CONTINUE

#   SECTION 3.4 : UNIT CHECKS

0017de3c: 92020047 lbu r2,0x0047(r16)
0017de40: 00000000 nop
0017de44: 14540012 bne r2,r20,0x0017de90      #      IF (current unit X-coord != X)
0017de48: 00000000 nop                     #         CONTINUE
0017de4c: 92020048 lbu r2,0x0048(r16)         
0017de50: 00000000 nop
0017de54: 1455000e bne r2,r21,0x0017de90      #      IF (current unit Y-coord != Y)
0017de58: 00000000 nop                     #         CONTINUE
0017de5c: 96020048 lhu r2,0x0048(r16)
0017de60: 00000000 nop
0017de64: 000213c2 srl r2,r2,0x0f            #      IF (current unit IsOnUpperLevel != IsOnUpperLevel)
0017de68: 14560009 bne r2,r22,0x0017de90      #         CONTINUE
0017de6c: 00000000 nop
0017de70: 92040182 lbu r4,0x0182(r16)
0017de74: 00000000 nop
0017de78: 308200ff andi r2,r4,0x00ff
0017de7c: 2c420080 sltiu r2,r2,0x0080         #      IF (current unit is riding a unit?)
0017de80: 1040ffc4 beq r2,r0,0x0017dd94         #         RETURN (??)
0017de84: 02201021 addu r2,r17,r0            #       
0017de88: 0805f7a9 j 0x0017dea4               #      RETURN (current unit index)
0017de8c: 00000000 nop

#    SECTION 3.5 : END OF LOOP

0017de90: 26310001 addiu r17,r17,0x0001
0017de94: 2a220015 slti r2,r17,0x0015
0017de98: 1440ffc1 bne r2,r0,0x0017dda0         #    } WHILE (r17 (current unit index) < 21)
0017de9c: 267301c0 addiu r19,r19,0x01c0
0017dea0: 2402ffff addiu r2,r0,0xffff         #   r2 (Return result) = -1 (No unit found)

# SECTION 4 : RETURN r2

0017dea4: 8fbf002c lw r31,0x002c(r29)
0017dea8: 8fb60028 lw r22,0x0028(r29)
0017deac: 8fb50024 lw r21,0x0024(r29)
0017deb0: 8fb40020 lw r20,0x0020(r29)
0017deb4: 8fb3001c lw r19,0x001c(r29)
0017deb8: 8fb20018 lw r18,0x0018(r29)
0017debc: 8fb10014 lw r17,0x0014(r29)
0017dec0: 8fb00010 lw r16,0x0010(r29)
0017dec4: 27bd0030 addiu r29,r29,0x0030
0017dec8: 03e00008 jr r31
0017decc: 00000000 nop




ROUTINE : GENERATE CRYSTAL/TREASURE

   PARAMETERS:
      r4 = [In-battle unit index of moving unit]
      
   RETURNS:
      r2               =   0x8006623c (Pointer);
      MEMORY[0x8006623c]    =    -1, If no crystal/treasure unit found; 0, If no abilities to inherit from a crystal; 1, Otherwise;
      MEMORY[0x80066254]   =    [Crystal abilities: List of flags by skillset (1-8,9-16,17-24) for which ability slots are contained in crystal];
      MEMORY[0x8006628d]    =    [In-battle unit index of unit found], if a unit was found;
      MEMORY[0x8006628e]    =    [Treasure item ID], if unit is obtaining treasure; 2, Otherwise;
      MEMORY[0x8006628f]    =    ?

# SECTION 1 : SET UP ROUTINE

00180530: 27bdff70 addiu r29,r29,0xff70
00180534: afb20070 sw r18,0x0070(r29)
00180538: 00809021 addu r18,r4,r0         #    r18 = (Moving unit)
0018053c: 34070041 ori r7,r0,0x0041         #    r7 = 0x41 = (Flags for find-unit-at-coords routine: Crystal, Treasure)
00180540: afbf008c sw r31,0x008c(r29)
00180544: afbe0088 sw r30,0x0088(r29)
00180548: afb70084 sw r23,0x0084(r29)
0018054c: afb60080 sw r22,0x0080(r29)
00180550: afb5007c sw r21,0x007c(r29)
00180554: afb40078 sw r20,0x0078(r29)
00180558: afb30074 sw r19,0x0074(r29)
0018055c: afb1006c sw r17,0x006c(r29)
00180560: afb00068 sw r16,0x0068(r29)

# SECTION 2 : FIND APPROPRIATE UNIT, BEGIN LIST?

00180564: 92440047 lbu r4,0x0047(r18)      #    Load in coordinates (X,Y,IsOnUpperLevel) of moving unit
00180568: 96460048 lhu r6,0x0048(r18)
0018056c: 92450048 lbu r5,0x0048(r18)
00180570: 0c05f72a jal 0x0017dca8         #    Routine: Find unit at coordinates (Flags: Crystal, Treasure)
00180574: 000633c2 srl r6,r6,0x0f         
00180578: 00401821 addu r3,r2,r0         #    r3 = r2 (Index of unit found)
0018057c: 04610006 bgez r3,0x00180598      #    IF (No unit found) {
00180580: 000310c0 sll r2,r3,0x03
00180584: 3c028006 lui r2,0x8006
00180588: 2442623c addiu r2,r2,0x623c
0018058c: 2403ffff addiu r3,r0,0xffff            MEM[0x06623c] = -1 (Code for empty?)
00180590: 08060234 j 0x001808d0                  RETURN 0x8006623c
00180594: ac430000 sw r3,0x0000(r2)         #   }
00180598: 3c118006 lui r17,0x8006
0018059c: 2631623c addiu r17,r17,0x623c      #    r17 = 0x8006623c
001805a0: 00431023 subu r2,r2,r3
001805a4: 00021180 sll r2,r2,0x06
001805a8: ae200000 sw r0,0x0000(r17)      #    MEM[0x06623c] = 0
001805ac: 3c018006 lui r1,0x8006
001805b0: a023628d sb r3,0x628d(r1)         #    MEM[0x06628d] = [Coordinate routine result?]
001805b4: 3c038019 lui r3,0x8019
001805b8: 246308cc addiu r3,r3,0x08cc      
001805bc: 00438021 addu r16,r2,r3         #    r16 = (Found unit)
001805c0: 92020059 lbu r2,0x0059(r16)   
001805c4: 00000000 nop
001805c8: 30420001 andi r2,r2,0x0001      
001805cc: 10400008 beq r2,r0,0x001805f0      #    IF (Found unit is treasure status) {
001805d0: 02002021 addu r4,r16,r0
001805d4: 34020004 ori r2,r0,0x0004
001805d8: 0c060282 jal 0x00180a08               Routine: Generate treasure from treasure unit
001805dc: ae220000 sw r2,0x0000(r17)
001805e0: 3c018006 lui r1,0x8006
001805e4: a022628e sb r2,0x628e(r1)               MEM[0x6628e] = [Routine result]
001805e8: 08060232 j 0x001808c8                  RETURN 0x8006623c
001805ec: 00000000 nop                  #   }
001805f0: 34020002 ori r2,r0,0x0002
001805f4: ae220000 sw r2,0x0000(r17)      #    MEM[0x6628e] = 2
001805f8: 924b0006 lbu r11,0x0006(r18)      
001805fc: 00000000 nop
00180600: 31620020 andi r2,r11,0x0020
00180604: afab0040 sw r11,0x0040(r29)      #    STACK[0x40] = [Gender/monster flags of moving unit]
00180608: 92030006 lbu r3,0x0006(r16)
0018060c: 144000ae bne r2,r0,0x001808c8      #    IF (Moving unit or found unit is monster), RETURN 0x8006623c
00180610: 30620020 andi r2,r3,0x0020
00180614: 144000ac bne r2,r0,0x001808c8
00180618: 00000000 nop
0018061c: 26240053 addiu r4,r17,0x0053      #    r4 = 0x800662e1
00180620: 34050040 ori r5,r0,0x0040         #    r5 = 0x40 (64)
00180624: 27aa0010 addiu r10,r29,0x0010
00180628: 27ab0018 addiu r11,r29,0x0018
0018062c: 0240b021 addu r22,r18,r0         #    r22 = (Moving unit)
00180630: afa00028 sw r0,0x0028(r29)      #    STACK[0x28] = 0      
00180634: afaa0058 sw r10,0x0058(r29)      #    STACK[0x58] = (Pointer to stack) + 0x10
00180638: afab0050 sw r11,0x0050(r29)      #    STACK[0x50] = (Pointer to stack) + 0x18
0018063c: afb00060 sw r16,0x0060(r29)      #    STACK[0x60] = (Found unit)
00180640: 92c20096 lbu r2,0x0096(r22)      #    r2 = [Moving unit jobs unlocked 1]   
00180644: 92c30097 lbu r3,0x0097(r22)      #    r3 = [Moving unit jobs unlocked 2]
00180648: 92c60098 lbu r6,0x0098(r22)      #    r6 = [Moving unit jobs unlocked 3]
0018064c: 00021400 sll r2,r2,0x10
00180650: 00031a00 sll r3,r3,0x08
00180654: 00431021 addu r2,r2,r3
00180658: 00461021 addu r2,r2,r6
0018065c: afa20048 sw r2,0x0048(r29)      #    STACK[0x48] = [Moving unit unlocked job info]
00180660: 92ca0000 lbu r10,0x0000(r22)      #    r10 = [Moving unit base job]
00180664: 0000a821 addu r21,r0,r0         #    r21 = 0
00180668: afaa0030 sw r10,0x0030(r29)      #    STACK[0x30] = [Moving unit base job]
0018066c: 920b0000 lbu r11,0x0000(r16)      #    r11 = [Found unit base job]
00180670: 26370018 addiu r23,r17,0x0018      #    r23 = 0x66254 (Starting list position?)
00180674: 0c017991 jal 0x0005e644         #    Routine: Clear (zero out) array (pointer=0x6628F, size=0x40=64)
00180678: afab0038 sw r11,0x0038(r29)      #    STACK[0x38] = [Found unit base job]

SECTION 3 : START OF LOOP

0018067c: 27a40020 addiu r4,r29,0x0020      #   DO {
00180680: 26c60099 addiu r6,r22,0x0099      #       r6 = [Moving unit's action abilities for current class]
00180684: 02e01821 addu r3,r23,r0         #       r3 = [list position]
00180688: 27a90023 addiu r9,r29,0x0023
0018068c: 8faa0060 lw r10,0x0060(r29)      #       r10 = [Found unit]
00180690: 8fa70050 lw r7,0x0050(r29)      #       r7 = (Pointer to stack) + 0x18
00180694: 8fa50058 lw r5,0x0058(r29)      #       r5 = (Pointer to stack) + 0x10
00180698: 25480099 addiu r8,r10,0x0099      #       r8 = [Found unit's action abilities for current class]

SECTION 4 : LOOP THROUGH BASE ACTION ABILITIES

0018069c: a0600000 sb r0,0x0000(r3)         #       FOR (i=1; i < 3; i++) {
001806a0: a0a00000 sb r0,0x0000(r5)         #          MEM[r3] = 0; STACK[r5] = 0
001806a4: 90c20000 lbu r2,0x0000(r6)      #          r2 = (i-th Moving unit base action abilities)
001806a8: 24c60001 addiu r6,r6,0x0001      #          r6++
001806ac: 24a50001 addiu r5,r5,0x0001      #          r5++
001806b0: 24630001 addiu r3,r3,0x0001      #          r3++
001806b4: a0e20000 sb r2,0x0000(r7)         #          STACK[r7] = (i-th Moving unit base action abilities)
001806b8: 91020000 lbu r2,0x0000(r8)      #          r2 = (i-th Found unit base action abilities)
001806bc: 25080001 addiu r8,r8,0x0001      #          r8++
001806c0: a0820000 sb r2,0x0000(r4)         #          STACK[r4] = (i-th Found unit base action abilities)
001806c4: 24840001 addiu r4,r4,0x0001      #          r4++; r7++
001806c8: 0089102a slt r2,r4,r9            #       }
001806cc: 1440fff3 bne r2,r0,0x0018069c
001806d0: 24e70001 addiu r7,r7,0x0001      

SECTION 5 : BASE JOB CHECK

                                 #       r3 = r21 + 0x4A (NOTE: Start of generic jobs? Job 0x4A = Squire)
001806d4: 16a0000b bne r21,r0,0x00180704   #       IF (r21 != 0)
001806d8: 26a3004a addiu r3,r21,0x004a      #         JUMP to [SECTION 6]
001806dc: 8fab0030 lw r11,0x0030(r29)      #       r11 = [Moving unit base job]
001806e0: 8faa0038 lw r10,0x0038(r29)      #       r10 = [Found unit base job]
001806e4: 00000000 nop                  #       IF (r11 != r10)
001806e8: 156a0065 bne r11,r10,0x00180880   #         JUMP to [SECTION 14]
001806ec: 29620080 slti r2,r11,0x0080      #       IF (r11 >= 0x80)
001806f0: 1040000a beq r2,r0,0x0018071c      #         JUMP to [SECTION 7]
001806f4: 34020011 ori r2,r0,0x0011
001806f8: 8fa30030 lw r3,0x0030(r29)      #       r3 = [Moving unit base job]
001806fc: 080601c7 j 0x0018071c            #       JUMP to [SECTION 7]
00180700: 00000000 nop

SECTION 6 : JOB UNLOCKED CHECK

00180704: 3c020080 lui r2,0x0080
00180708: 8fab0048 lw r11,0x0048(r29)      #       r11 = [Moving unit unlocked job info]
0018070c: 02a21007 srav r2,r2,r21
00180710: 01621024 and r2,r11,r2         #       IF (Moving unit doesn't have this job unlocked)
00180714: 1040005a beq r2,r0,0x00180880      #         Jump to [SECTION 14]
00180718: 34020011 ori r2,r0,0x0011

SECTION 7 : BARD CHECK

0018071c: 16a20006 bne r21,r2,0x00180738   #       IF (r21 != 0x11 (BARD))
00180720: 34020012 ori r2,r0,0x0012         #         Jump to [SECTION 8]
00180724: 8faa0040 lw r10,0x0040(r29)      #       r10 = [Gender/monster flags of moving unit]
00180728: 00000000 nop
0018072c: 31420040 andi r2,r10,0x0040      
00180730: 14400053 bne r2,r0,0x00180880      #       IF (Moving unit is female)
00180734: 34020012 ori r2,r0,0x0012         #         JUMP to [SECTION 14]

SECTION 8 : DANCER CHECK

                                 #       r17 = 0 (NULL?)
00180738: 16a20006 bne r21,r2,0x00180754   #       IF (r21 != 0x12 (DANCER))
0018073c: 00008821 addu r17,r0,r0         #         Jump to [SECTION 9]
00180740: 8fab0040 lw r11,0x0040(r29)      #       r11 = [Gender/monster flags of moving unit]
00180744: 00000000 nop
00180748: 31620080 andi r2,r11,0x0080      #       IF (Moving unit is male)
0018074c: 1440004c bne r2,r0,0x00180880      #         JUMP to [SECTION 14]
00180750: 00000000 nop

SECTION 9 : FIND SKILLSET ID

00180754: 00031040 sll r2,r3,0x01
00180758: 00431021 addu r2,r2,r3
0018075c: 3c038006 lui r3,0x8006
00180760: 8c636194 lw r3,0x6194(r3)         
00180764: 00021100 sll r2,r2,0x04
00180768: 00431021 addu r2,r2,r3         
0018076c: 905e0000 lbu r30,0x0000(r2)      #       r30 = [Skillset ID of current job]      

SECTION 10 : BEGIN INNER LOOP : LOOP THROUGH ABILITIES OF SKILLSET?

00180770: 06210002 bgez r17,0x0018077c      #      DO
00180774: 02201821 addu r3,r17,r0         #      {
00180778: 26230007 addiu r3,r17,0x0007      #          r3 = [Ability index]   NOTE: Calculation is: r3 =(r17 >= 0) ? r17 : (r17 + 7)

SECTION 11

0018077c: 000390c3 sra r18,r3,0x03
00180780: 001218c0 sll r3,r18,0x03
00180784: 02231823 subu r3,r17,r3         #         r3 = Offset?
00180788: 8faa0050 lw r10,0x0050(r29)      #         r10 = (Pointer to stack) + 0x18
0018078c: 34040080 ori r4,r0,0x0080         #         r4 = 0x80
00180790: 01521021 addu r2,r10,r18         #         r2 = Offset?
00180794: 90420000 lbu r2,0x0000(r2)      #         r2 = STACK[0x18+r18]
00180798: 00649807 srav r19,r4,r3
0018079c: 00531024 and r2,r2,r19         #         r2 = (Stack pointer offset?); IF (???)
001807a0: 14400029 bne r2,r0,0x00180848      #            JUMP to [SECTION 12]
001807a4: 03b21021 addu r2,r29,r18               
001807a8: 90420020 lbu r2,0x0020(r2)      #         r2 = MEM[r2+0x20]
001807ac: 00000000 nop
001807b0: 00531024 and r2,r2,r19         #         r2 = Offset?
001807b4: 10400024 beq r2,r0,0x00180848      #         IF (???)
001807b8: 03c02021 addu r4,r30,r0         #            Jump to [SECTION 12]
001807bc: 0c01695a jal 0x0005a568         #         Routine : Get Ability ID (r4=[Skillset ID]; r5=[Ability index])
001807c0: 02202821 addu r5,r17,r0
001807c4: 0040a021 addu r20,r2,r0         
001807c8: 3290ffff andi r16,r20,0xffff      #         r16 = (Routine result)
001807cc: 1200001e beq r16,r0,0x00180848   #         IF (r16 == 0) JUMP to [SECTION 12]
001807d0: 001010c0 sll r2,r16,0x03         #         
001807d4: 3c018006 lui r1,0x8006
001807d8: 00220821 addu r1,r1,r2         
001807dc: 9025ebf2 lbu r5,-0x140e(r1)      #         r5 = (Ability's Chance to Learn?)
001807e0: 0c017833 jal 0x0005e0cc         #          Routine: Pass/Fail Roll (Possibilities=100, Threshold=r5)
001807e4: 34040064 ori r4,r0,0x0064
001807e8: 14400017 bne r2,r0,0x00180848      #         IF (Roll was a Fail)
001807ec: 00000000 nop                  #            JUMP to [SECTION 12]
001807f0: 8fab0058 lw r11,0x0058(r29)      #         r11 = (Pointer to stack) + 0x10
001807f4: 00000000 nop
001807f8: 01721021 addu r2,r11,r18         #         r2 = Offset?
001807fc: 8faa0028 lw r10,0x0028(r29)      #         
00180800: 90430000 lbu r3,0x0000(r2)      #         r3 = MEM[r2]
00180804: 254a0001 addiu r10,r10,0x0001      #         
00180808: 02631825 or r3,r19,r3            #         r3 = ?
0018080c: afaa0028 sw r10,0x0028(r29)      #         STACK[0x28]++
00180810: a0430000 sb r3,0x0000(r2)         #         MEM[r2] = r3
00180814: 2e020200 sltiu r2,r16,0x0200      #         IF (r16 >= 0x200)
00180818: 1040000b beq r2,r0,0x00180848      #            JUMP to [SECTION 12]
0018081c: 001020c2 srl r4,r16,0x03
00180820: 32850007 andi r5,r20,0x0007      #         r5 = r20 + 7
00180824: 34020001 ori r2,r0,0x0001         #         r2 = 1
00180828: 3c018006 lui r1,0x8006
0018082c: 00240821 addu r1,r1,r4
00180830: 9023628f lbu r3,0x628f(r1)      #         r3 = (Element of list)
00180834: 00a21004 sllv r2,r2,r5
00180838: 00431025 or r2,r2,r3
0018083c: 3c018006 lui r1,0x8006
00180840: 00240821 addu r1,r1,r4
00180844: a022628f sb r2,0x628f(r1)         #         (Save new element to list)

SECTION 12 : END OF INNER LOOP

00180848: 26310001 addiu r17,r17,0x0001
0018084c: 2a220018 slti r2,r17,0x0018
00180850: 1440ffc7 bne r2,r0,0x00180770      #      } WHILE (r17 < 0x18)
00180854: 26e50003 addiu r5,r23,0x0003
00180858: 02e01821 addu r3,r23,r0
0018085c: 8fa40058 lw r4,0x0058(r29)   

SECTION 13 : WRITE ELEMENTS TO LIST
      
00180860: 00000000 nop                  #      DO {
00180864: 90820000 lbu r2,0x0000(r4)      
00180868: 00000000 nop
0018086c: a0620000 sb r2,0x0000(r3)         #         LIST[r23 + i] = STACK[0x10 + i]
00180870: 24630001 addiu r3,r3,0x0001      #         r3++; r4++
00180874: 0065102a slt r2,r3,r5            
00180878: 1440fff9 bne r2,r0,0x00180860      #      } WHILE (r3 < r5)
0018087c: 24840001 addiu r4,r4,0x0001

SECTION 14 : END OF OUTER LOOP : INCREMENT APPROPRIATE COUNTERS/VARIABLES

00180880: 26f70003 addiu r23,r23,0x0003      #       r23 += 3            NOTE: r23 = (Position in list?)
00180884: 26d60003 addiu r22,r22,0x0003      #       r22 += 3            NOTE: r22 = [Moving unit offset]
00180888: 26b50001 addiu r21,r21,0x0001      #       r21++                NOTE: r21 = (Current job ID) - 0x4A (Loop counter)
0018088c: 8fab0060 lw r11,0x0060(r29)      
00180890: 2aa20013 slti r2,r21,0x0013      #       STACK[0x60] += 3      NOTE: STACK[0x60] = [Found unit offset]
00180894: 256b0003 addiu r11,r11,0x0003   
00180898: 1440ff78 bne r2,r0,0x0018067c      #    } WHILE (r21 < 0x13)
0018089c: afab0060 sw r11,0x0060(r29)

SECTION 15

001808a0: 8faa0028 lw r10,0x0028(r29)
001808a4: 00000000 nop
001808a8: 11400007 beq r10,r0,0x001808c8   #    IF (STACK[0x28] == 0)
001808ac: 00000000 nop                  #      RETURN 0x8006623c
001808b0: 3c038006 lui r3,0x8006
001808b4: 2463623c addiu r3,r3,0x623c
001808b8: 8c620000 lw r2,0x0000(r3)
001808bc: 00000000 nop
001808c0: 34420001 ori r2,r2,0x0001
001808c4: ac620000 sw r2,0x0000(r3)         #   MEM[0x6623c]++

SECTION 16 : RETURN 0x8006623c (Pointer to list?)

001808c8: 3c028006 lui r2,0x8006
001808cc: 2442623c addiu r2,r2,0x623c      #   RETURN 0x8006623c
001808d0: 8fbf008c lw r31,0x008c(r29)
001808d4: 8fbe0088 lw r30,0x0088(r29)
001808d8: 8fb70084 lw r23,0x0084(r29)
001808dc: 8fb60080 lw r22,0x0080(r29)
001808e0: 8fb5007c lw r21,0x007c(r29)
001808e4: 8fb40078 lw r20,0x0078(r29)
001808e8: 8fb30074 lw r19,0x0074(r29)
001808ec: 8fb20070 lw r18,0x0070(r29)
001808f0: 8fb1006c lw r17,0x006c(r29)
001808f4: 8fb00068 lw r16,0x0068(r29)
001808f8: 27bd0090 addiu r29,r29,0x0090
001808fc: 03e00008 jr r31
00180900: 00000000 nop




ROUTINE : CHOCOBO CHECK

   PARAMETERS:
      r4 = Unit
   
   RETURNS:
      r2   =   0, If proper statuses not found and/or unit is not a chocobo
            1, If unit is a chocobo with proper status and riding check was not passed
            2, If unit is a chocobo with proper status and riding check was passed

SECTION 1 : SET UP ROUTINE AND CALL OTHER ROUTINE

001743c8: 27bdffe8 addiu r29,r29,0xffe8
001743cc: afb00010 sw r16,0x0010(r29)
001743d0: 00808021 addu r16,r4,r0
001743d4: afbf0014 sw r31,0x0014(r29)
001743d8: 92020003 lbu r2,0x0003(r16)         #   r2 = [Current job ID of unit]
001743dc: 00000000 nop
001743e0: 2442ffa2 addiu r2,r2,0xffa2         #   r2 = r2 - 0x5E (94)
001743e4: 2c420003 sltiu r2,r2,0x0003         #   IF (Unit is not a chocobo)   Note: Condition is (UNSIGNED r2 < 3); can only happen for jobs 0x5E - 0x60
001743e8: 10400005 beq r2,r0,0x00174400         #      RETURN 0
001743ec: 02002021 addu r4,r16,r0         
001743f0: 0c01786c jal 0x0005e1b0            #   Routine: Check status flags (r4 = current unit, r5 = 10)
001743f4: 3405000a ori r5,r0,0x000a            
001743f8: 10400003 beq r2,r0,0x00174408         #   IF (Routine result == 0)
001743fc: 00000000 nop                     #      JUMP to [SECTION 2]
00174400: 0805d107 j 0x0017441c               #   RETURN 0
00174404: 00001021 addu r2,r0,r0

SECTION 2 : CHECK RIDDEN UNIT

00174408: 92030182 lbu r3,0x0182(r16)
0017440c: 00000000 nop
00174410: 14600002 bne r3,r0,0x0017441c         #   IF (Something to do with riding?)
00174414: 34020002 ori r2,r0,0x0002            #      RETURN 2
00174418: 34020001 ori r2,r0,0x0001            #    RETURN 1

SECTION 3 : RETURN r2

0017441c: 8fbf0014 lw r31,0x0014(r29)
00174420: 8fb00010 lw r16,0x0010(r29)
00174424: 27bd0018 addiu r29,r29,0x0018
00174428: 03e00008 jr r31
0017442c: 00000000 nop




ROUTINE : GENERATE TREASURE FOR TREASURE CHEST

   PARAMETERS:
      r4    =   [Treasure unit]
      
   RETURNS:
      r2   =   [Item]

SECTION 1 : SET UP
      
00180a08: 3c028019 lui r2,0x8019
00180a0c: 8c42f5fc lw r2,-0x0a04(r2)            #   r2 = MEM[0x18f5fc]
00180a10: 27bdffe0 addiu r29,r29,0xffe0
00180a14: afbf001c sw r31,0x001c(r29)            #   IF (r2 != 0)
00180a18: 14400033 bne r2,r0,0x00180ae8            #      RETURN r2
00180a1c: afb00018 sw r16,0x0018(r29)
00180a20: 00008021 addu r16,r0,r0               #   r16 = 0   [Count of valid items]
00180a24: 00003021 addu r6,r0,r0               #   r6 = 0    [Current equipment slot index]
00180a28: 27a50010 addiu r5,r29,0x0010            #   r5 =    [Valid item array pointer]

SECTION 2 : FIND VALID ITEMS ON TREASURE UNIT (EQUIPMENT)

                                       #   DO {
00180a2c: 00861021 addu r2,r4,r6               #      
00180a30: 9042001a lbu r2,0x001a(r2)            #      r2 = MEM[r4+r6+0x1a) [Equip] (Equipment in current slot of treasure unit)
00180a34: 00000000 nop
00180a38: a0a20000 sb r2,0x0000(r5)               #      ValidItems[i-th] (MEM[r5]) = [Equip]
00180a3c: 90a30000 lbu r3,0x0000(r5)
00180a40: 00000000 nop                        #      r6++ (LoopCount++)
00180a44: 2c6200fe sltiu r2,r3,0x00fe            #      IF ([Equip] >= 0xFE) (empty)
00180a48: 10400005 beq r2,r0,0x00180a60            #         CONTINUE (skip this item)
00180a4c: 24c60001 addiu r6,r6,0x0001
00180a50: 10600004 beq r3,r0,0x00180a64            #      IF ([Equip] == 0x00)
00180a54: 28c20007 slti r2,r6,0x0007            #         CONTINUE (skip this item)
00180a58: 24a50001 addiu r5,r5,0x0001            #      r5++
00180a5c: 26100001 addiu r16,r16,0x0001            #      r16++ (ValidItemCount++)
00180a60: 28c20007 slti r2,r6,0x0007
00180a64: 1440fff1 bne r2,r0,0x00180a2c            #   } WHILE (r6 < 7)
00180a68: 00000000 nop

SECTION 3 : NO VALID ITEMS : FIND USABLE ITEM? (POTION, ETC?)

00180a6c: 16000014 bne r16,r0,0x00180ac0         #   IF ([Valid item count] = 0)
00180a70: 00000000 nop                        #   {   
00180a74: 0c0088c3 jal 0x0002230c               #       r2 = [Random number]
00180a78: 00000000 nop
00180a7c: 00021840 sll r3,r2,0x01
00180a80: 00621821 addu r3,r3,r2
00180a84: 00031880 sll r3,r3,0x02
00180a88: 00621021 addu r2,r3,r2               
00180a8c: 04410002 bgez r2,0x00180a98            
00180a90: 00000000 nop                        
00180a94: 24427fff addiu r2,r2,0x7fff            
00180a98: 000213c3 sra r2,r2,0x0f               
00180a9c: 2442fff0 addiu r2,r2,0xfff0            #      r2 = [Random usable item]
00180aa0: a3a20010 sb r2,0x0010(r29)            #      ValidItems[0] (STACK[0x10]) = r2
00180aa4: 93a30010 lbu r3,0x0010(r29)            #      r3 = r2
00180aa8: 00000000 nop                        #      IF (r3 >= 0xf5) (We found a usable item?)
00180aac: 2c6200f5 sltiu r2,r3,0x00f5            #      {   
00180ab0: 14400003 bne r2,r0,0x00180ac0            #         ValidItemCount (r16) = 1
00180ab4: 34100001 ori r16,r0,0x0001            #         r2 = r3 + 1
00180ab8: 24620001 addiu r2,r3,0x0001            #         ValidItems[0] = r2
00180abc: a3a20010 sb r2,0x0010(r29)            #      }

SECTION 4 : RETURN RANDOM ITEM FROM VALID ITEMS LIST

00180ac0: 0c0088c3 jal 0x0002230c               #    r2 = [Random number]
00180ac4: 00000000 nop
00180ac8: 00500018 mult r2,r16
00180acc: 00001012 mflo r2                     #   r2 = [Random index]
00180ad0: 04410003 bgez r2,0x00180ae0
00180ad4: 000233c3 sra r6,r2,0x0f
00180ad8: 24427fff addiu r2,r2,0x7fff
00180adc: 000233c3 sra r6,r2,0x0f
00180ae0: 03a61021 addu r2,r29,r6               
00180ae4: 90420010 lbu r2,0x0010(r2)            #   r2 = ValidItems[RandomIndex]
00180ae8: 8fbf001c lw r31,0x001c(r29)
00180aec: 8fb00018 lw r16,0x0018(r29)
00180af0: 27bd0020 addiu r29,r29,0x0020
00180af4: 03e00008 jr r31                     #   RETURN r2
00180af8: 00000000 nop




#    ROUTINE : LEARN FROM CRYSTAL ?

#      PARAMETERS:
#         r4 = [In-battle unit pointer]
#         r5 = ?

#      RETURNS:
#         r2   =   0?

#    SECTION 1 : CHECKS AND SET UP

00180904: 27bdffe0 addiu r29,r29,0xffe0
00180908: afb00010 sw r16,0x0010(r29)
0018090c: 00808021 addu r16,r4,r0               #   r16 = r4
00180910: afb10014 sw r17,0x0014(r29)
00180914: 00a08821 addu r17,r5,r0               #   r17 = r5
00180918: afbf0018 sw r31,0x0018(r29)
0018091c: 0c062f5d jal 0x0018bd74               #   Routine: clear some temp in-battle unit data?
00180920: 2604018c addiu r4,r16,0x018c   
00180924: 34020008 ori r2,r0,0x0008               #    Temp in-battle data offsets : read/write
00180928: a202018e sb r2,0x018e(r16)
0018092c: 32220004 andi r2,r17,0x0004            #   r2 = (r17 bit 0x04 check)
00180930: 10400007 beq r2,r0,0x00180950            #   IF (r2 != 0)
00180934: a200018c sb r0,0x018c(r16)            #    {
00180938: 3c058006 lui r5,0x8006
0018093c: 90a5628e lbu r5,0x628e(r5)            #      r5 = MEM[0x8006628e]
00180940: 0c063a7a jal 0x0018e9e8               #      Routine: ? (r4=[In-battle unit pointer])
00180944: 02002021 addu r4,r16,r0
00180948: 0806027c j 0x001809f0                  #      RETURN r2
0018094c: 00000000 nop                        #   }
00180950: 32220002 andi r2,r17,0x0002            #   r2 = (r17 bit 0x02 check)
00180954: 1040000d beq r2,r0,0x0018098c            #   IF (r2 != 0)
00180958: 34020001 ori r2,r0,0x0001               #   {
0018095c: a202018c sb r2,0x018c(r16)            #      (Mess with temp data)   
00180960: 34020050 ori r2,r0,0x0050
00180964: a20201b1 sb r2,0x01b1(r16)
00180968: 9602002a lhu r2,0x002a(r16)
0018096c: 96040028 lhu r4,0x0028(r16)
00180970: 9603002e lhu r3,0x002e(r16)
00180974: 9605002c lhu r5,0x002c(r16)
00180978: a200018e sb r0,0x018e(r16)
0018097c: 00441023 subu r2,r2,r4
00180980: 00651823 subu r3,r3,r5
00180984: a6020192 sh r2,0x0192(r16)
00180988: a6030196 sh r3,0x0196(r16)            #   }
0018098c: 32220001 andi r2,r17,0x0001            #   r2 = (r17 bit 0x01 check)
00180990: 10400017 beq r2,r0,0x001809f0            #   IF (r2 == 0), RETURN 0
00180994: 00001021 addu r2,r0,r0               #   r2 = 0
00180998: 00004821 addu r9,r0,r0               #   r9 = 0
0018099c: 3c088006 lui r8,0x8006               
001809a0: 25086254 addiu r8,r8,0x6254            #   r8 = MEM[0x80066254]
001809a4: 02002021 addu r4,r16,r0               #   r4 = [Unit]

#   SECTION 2 : BEGIN OUTER LOOP

001809a8: 24850099 addiu r5,r4,0x0099            #   DO
001809ac: 01003021 addu r6,r8,r0               #   {
001809b0: 2487009c addiu r7,r4,0x009c            #      r6 = r8

#    SECTION 3 : BEGIN INNER LOOP

001809b4: 90a20000 lbu r2,0x0000(r5)            #      DO {
001809b8: 90c30000 lbu r3,0x0000(r6)            #         r2 = [Unit Action abilities]    (r5th)
001809bc: 00000000 nop                        #         r3 = [Crystal action abilities]   (r6th)
001809c0: 00431025 or r2,r2,r3
001809c4: a0a20000 sb r2,0x0000(r5)               #         [Unit action abilities] = (Combination of r2 and r3)   NOTE : r2 | r3
001809c8: 24a50001 addiu r5,r5,0x0001            #         r5++
001809cc: 00a7102a slt r2,r5,r7                  #         r6++
001809d0: 1440fff8 bne r2,r0,0x001809b4            #      } WHILE (r5 < r7)
001809d4: 24c60001 addiu r6,r6,0x0001            #      
001809d8: 25080003 addiu r8,r8,0x0003            #      r8++
001809dc: 25290001 addiu r9,r9,0x0001            #      r9++
001809e0: 29220013 slti r2,r9,0x0013            #      r4 += 3
001809e4: 1440fff0 bne r2,r0,0x001809a8            #   } WHILE (r9 < 0x13)
001809e8: 24840003 addiu r4,r4,0x0003

#   SECTION 4 : RETURN

001809ec: 00001021 addu r2,r0,r0               #   RETURN 0
001809f0: 8fbf0018 lw r31,0x0018(r29)
001809f4: 8fb10014 lw r17,0x0014(r29)
001809f8: 8fb00010 lw r16,0x0010(r29)
001809fc: 27bd0020 addiu r29,r29,0x0020
00180a00: 03e00008 jr r31
00180a04: 00000000 nop
  • Modding version: Other/Unknown

Pride

 Transparent Removal Routine (gogogo Ghost Status)

0018d868: 27bdffe8 addiu r29,r29,0xffe8      
0018d86c: afb00010 sw r16,0x0010(r29)      
0018d870: afbf0014 sw r31,0x0014(r29)      
0018d874: 0c063691 jal 0x0018da44      Check for Crystal, Dead, Jump, Petrify, or Treasure
0018d878: 00808021 addu r16,r4,r0      r16 = Unit Data
0018d87c: 1440001f bne r2,r0,0x0018d8fc      Branch if Crystal, Dead, Jump, Petrify, or Treasure
0018d880: 00001021 addu r2,r0,r0      r2 = 0
0018d884: 0c063681 jal 0x0018da04      Store Unit Data
0018d888: 02002021 addu r4,r16,r0      r4 = Unit Data
0018d88c: 92020188 lbu r2,0x0188(r16)      Load Unit Action Taken?
0018d890: 00000000 nop         
0018d894: 10400015 beq r2,r0,0x0018d8ec      Branch if No Action Taken
0018d898: 00000000 nop            
0018d89c: 3c038019 lui r3,0x8019      
0018d8a0: 8c632d98 lw r3,0x2d98(r3)      Load Defender's Stats
0018d8a4: 00000000 nop            
0018d8a8: 906201bd lbu r2,0x01bd(r3)      Load Inflicted Status List 3
0018d8ac: 00000000 nop            
0018d8b0: 30420010 andi r2,r2,0x0010      
0018d8b4: 1040000d beq r2,r0,0x0018d8ec      Branch if Unit is not Transparent
0018d8b8: 00000000 nop            
0018d8bc: 90620027 lbu r2,0x0027(r3)      Load... Unit's Turn?
0018d8c0: 00000000 nop            
0018d8c4: 10400009 beq r2,r0,0x0018d8ec      Branch if /not/ Unit's Turn
0018d8c8: 34020010 ori r2,r0,0x0010      r2 = 0x10
0018d8cc: 3c038019 lui r3,0x8019      
0018d8d0: 8c632d90 lw r3,0x2d90(r3)      Load Current Action Data Pointer
0018d8d4: 00000000 nop            
0018d8d8: a0620022 sb r2,0x0022(r3)      Store Transparent Removal
0018d8dc: 3c038019 lui r3,0x8019      
0018d8e0: 8c632d90 lw r3,0x2d90(r3)      Load Current Action Data Pointer
0018d8e4: 34020008 ori r2,r0,0x0008      
0018d8e8: a0620025 sb r2,0x0025(r3)      Store Attack-Type as Status Change
0018d8ec: 3c028019 lui r2,0x8019      
0018d8f0: 8c422d90 lw r2,0x2d90(r2)      Load Current Action Data Pointer
0018d8f4: 00000000 nop            
0018d8f8: 90420025 lbu r2,0x0025(r2)      Load Current Action Data Pointer
0018d8fc: 8fbf0014 lw r31,0x0014(r29)      
0018d900: 8fb00010 lw r16,0x0010(r29)      
0018d904: 27bd0018 addiu r29,r29,0x0018      
0018d908: 03e00008 jr r31         
0018d90c: 00000000 nop            
  • Modding version: PSX
Check out my ASM thread. Who doesn't like hax?

Pride

Some more routines

Poison Marsh Routine (found by Pokeytax, I'm just giving notes)

0018da88: 27bdffe0 addiu r29,r29,0xffe0
0018da8c: afb10014 sw r17,0x0014(r29)
0018da90: 00808821 addu r17,r4,r0
0018da94: afbf0018 sw r31,0x0018(r29)
0018da98: afb00010 sw r16,0x0010(r29)
0018da9c: 92300182 lbu r16,0x0182(r17)      
0018daa0: 0c063691 jal 0x0018da44      Check for Crystal, Dead, Jump, Petrify, or Treasure
0018daa4: 00000000 nop
0018daa8: 1440003b bne r2,r0,0x0018db98      Branch if unit is afflicted with the above Status
0018daac: 00001021 addu r2,r0,r0      r2 = 0x00
0018dab0: 32020040 andi r2,r16,0x0040      
0018dab4: 14400038 bne r2,r0,0x0018db98      Branch if being ridden.
0018dab8: 00001021 addu r2,r0,r0      r2 = 0x00
0018dabc: 32020080 andi r2,r16,0x0080      
0018dac0: 1040000d beq r2,r0,0x0018daf8      Branch if user is riding another unit
0018dac4: 3202001f andi r2,r16,0x001f      
0018dac8: 000218c0 sll r3,r2,0x03      
0018dacc: 00621823 subu r3,r3,r2      
0018dad0: 00031980 sll r3,r3,0x06      
0018dad4: 3c018019 lui r1,0x8019      
0018dad8: 00230821 addu r1,r1,r3      Load Unit data?
0018dadc: 90220926 lbu r2,0x0926(r1)      ?_?
0018dae0: 00000000 nop         
0018dae4: 30420040 andi r2,r2,0x0040      
0018dae8: 10400006 beq r2,r0,0x0018db04      Branch if bit x40 or float is active
0018daec: 2624018c addiu r4,r17,0x018c      
0018daf0: 080636e6 j 0x0018db98         
0018daf4: 00001021 addu r2,r0,r0      r2 = 0
0018daf8: 9222005a lbu r2,0x005a(r17)      Load Current Statuses 3
0018dafc: 080636ba j 0x0018dae8         
0018db00: 30420040 andi r2,r2,0x0040      
0018db04: 9222018a lbu r2,0x018a(r17)      
0018db08: 3c018019 lui r1,0x8019      
0018db0c: ac312d98 sw r17,0x2d98(r1)      Store Defender's Data
0018db10: 3c018019 lui r1,0x8019      
0018db14: ac242d90 sw r4,0x2d90(r1)      Store Defender's Current Action Data
0018db18: 3c018019 lui r1,0x8019
0018db1c: a02238c1 sb r2,0x38c1(r1)      Store Target Unit ID
0018db20: 0c062f5d jal 0x0018bd74      Sub-routine (there's a routine to load all this...)
0018db24: 00000000 nop            
0018db28: 0c060428 jal 0x001810a0      Map Location Calculation
0018db2c: 02202021 addu r4,r17,r0      r4 = Unit Data
0018db30: 000210c0 sll r2,r2,0x03      
0018db34: 3c018019 lui r1,0x8019      
0018db38: 00220821 addu r1,r1,r2      
0018db3c: 9022f8cc lbu r2,-0x0734(r1)      Load some RAM data
0018db40: 00000000 nop            
0018db44: 3042003f andi r2,r2,0x003f      
0018db48: 3c018006 lui r1,0x8006      
0018db4c: 00220821 addu r1,r1,r2      
0018db50: 9022ea10 lbu r2,-0x15f0(r1)      Load Terrain Status Infliction
0018db54: 00000000 nop            
0018db58: 30420080 andi r2,r2,0x0080      
0018db5c: 1040000d beq r2,r0,0x0018db94      Branch if Status is Poison
0018db60: 00002021 addu r4,r0,r0      r4 = 0
0018db64: 3c038019 lui r3,0x8019      
0018db68: 8c632d90 lw r3,0x2d90(r3)      Load Current Action Data Pointer
0018db6c: 34020080 ori r2,r0,0x0080      
0018db70: 0c0612c9 jal 0x00184b24      
0018db74: a062001e sb r2,0x001e(r3)      Store Status Infliction as Poison
0018db78: 10400006 beq r2,r0,0x0018db94      
0018db7c: 34020001 ori r2,r0,0x0001      
0018db80: 3c048019 lui r4,0x8019      
0018db84: 8c842d90 lw r4,0x2d90(r4)      
0018db88: 34030008 ori r3,r0,0x0008      
0018db8c: 080636e6 j 0x0018db98         
0018db90: a0830025 sb r3,0x0025(r4)      
0018db94: 00001021 addu r2,r0,r0      
0018db98: 8fbf0018 lw r31,0x0018(r29)      
0018db9c: 8fb10014 lw r17,0x0014(r29)      
0018dba0: 8fb00010 lw r16,0x0010(r29)      
0018dba4: 27bd0020 addiu r29,r29,0x0020      
0018dba8: 03e00008 jr r31         
0018dbac: 00000000 nop   


Traps Routine

0018dbb0: 27bdffe0 addiu r29,r29,0xffe0      
0018dbb4: afb00010 sw r16,0x0010(r29)      
0018dbb8: 00808021 addu r16,r4,r0      
0018dbbc: afbf0018 sw r31,0x0018(r29)      
0018dbc0: afb10014 sw r17,0x0014(r29)      
0018dbc4: 92040047 lbu r4,0x0047(r16)      Load X Coordinate
0018dbc8: 96060048 lhu r6,0x0048(r16)      Load Y Coordinate
0018dbcc: 92050048 lbu r5,0x0048(r16)      Load Y Coordinate
0018dbd0: 0c0600b2 jal 0x001802c8      Big routine, I can only assume that it finds out if the unit triggered a trap.
0018dbd4: 000633c2 srl r6,r6,0x0f      
0018dbd8: 92030182 lbu r3,0x0182(r16)      Mount Info
0018dbdc: 90510004 lbu r17,0x0004(r2)      
0018dbe0: 30620040 andi r2,r3,0x0040      
0018dbe4: 10400007 beq r2,r0,0x0018dc04      
0018dbe8: 3062001f andi r2,r3,0x001f      
0018dbec: 000218c0 sll r3,r2,0x03      
0018dbf0: 00621823 subu r3,r3,r2      
0018dbf4: 00031980 sll r3,r3,0x06      
0018dbf8: 3c028019 lui r2,0x8019      
0018dbfc: 244208cc addiu r2,r2,0x08cc      Load Unit Data
0018dc00: 00628021 addu r16,r3,r2      
0018dc04: 9202018a lbu r2,0x018a(r16)      Load Unit ID   
0018dc08: 2604018c addiu r4,r16,0x018c      
0018dc0c: 3c018019 lui r1,0x8019      
0018dc10: ac302d98 sw r16,0x2d98(r1)      Store Defender's Stats
0018dc14: 3c018019 lui r1,0x8019      
0018dc18: ac242d90 sw r4,0x2d90(r1)      Store Defender's Current Action Data
0018dc1c: 3c018019 lui r1,0x8019      
0018dc20: a02238c1 sb r2,0x38c1(r1)      Store Target ID
0018dc24: 0c062f5d jal 0x0018bd74      
0018dc28: 00000000 nop            
0018dc2c: 322300ff andi r3,r17,0x00ff      
0018dc30: 34020001 ori r2,r0,0x0001      
0018dc34: 10620017 beq r3,r2,0x0018dc94      
0018dc38: 28620002 slti r2,r3,0x0002      
0018dc3c: 10400005 beq r2,r0,0x0018dc54      
0018dc40: 00000000 nop            
0018dc44: 1060000a beq r3,r0,0x0018dc70      
0018dc48: 34020001 ori r2,r0,0x0001      
0018dc4c: 0806374a j 0x0018dd28         
0018dc50: 341100ff ori r17,r0,0x00ff      
0018dc54: 34020002 ori r2,r0,0x0002      
0018dc58: 10620018 beq r3,r2,0x0018dcbc      
0018dc5c: 34020003 ori r2,r0,0x0003      
0018dc60: 10620027 beq r3,r2,0x0018dd00      
0018dc64: 3c03cccc lui r3,0xcccc      
0018dc68: 0806374a j 0x0018dd28         
0018dc6c: 341100ff ori r17,r0,0x00ff      
0018dc70: 3c038019 lui r3,0x8019      
0018dc74: 8c632d90 lw r3,0x2d90(r3)      Load Defender Current Action Data
0018dc78: 00000000 nop            
0018dc7c: a0620025 sb r2,0x0025(r3)      Store Attack-type
0018dc80: 3c038019 lui r3,0x8019      
0018dc84: 8c632d90 lw r3,0x2d90(r3)      Load Defender Current Action Data
0018dc88: 34020100 ori r2,r0,0x0100      
0018dc8c: 0806374a j 0x0018dd28         
0018dc90: a4620010 sh r2,0x0010(r3)      Store flag as Level Reduction
0018dc94: 00002021 addu r4,r0,r0      r4 = 0x00
0018dc98: 3c038019 lui r3,0x8019      
0018dc9c: 8c632d90 lw r3,0x2d90(r3)      Load Defender Current Action Data
0018dca0: 34020001 ori r2,r0,0x0001      
0018dca4: 0c0612c9 jal 0x00184b24      Check if Unit is immune to status
0018dca8: a062001f sb r2,0x001f(r3)      Store Status as Death Sentence
0018dcac: 10400010 beq r2,r0,0x0018dcf0      Branch if no status is inflicted
0018dcb0: 00000000 nop            
0018dcb4: 08063737 j 0x0018dcdc         
0018dcb8: 00000000 nop            
0018dcbc: 00002021 addu r4,r0,r0      r4 = 0x00
0018dcc0: 3c038019 lui r3,0x8019      
0018dcc4: 8c632d90 lw r3,0x2d90(r3)      Load Defender Current Action Data
0018dcc8: 34020010 ori r2,r0,0x0010      
0018dccc: 0c0612c9 jal 0x00184b24      Check if Unit is immune to status
0018dcd0: a062001f sb r2,0x001f(r3)      Store Unit as Sleeping
0018dcd4: 10400006 beq r2,r0,0x0018dcf0      
0018dcd8: 00000000 nop            
0018dcdc: 3c038019 lui r3,0x8019      
0018dce0: 8c632d90 lw r3,0x2d90(r3)      Load Defender Current Action Data
0018dce4: 34020008 ori r2,r0,0x0008      
0018dce8: 0806374a j 0x0018dd28         
0018dcec: a0620025 sb r2,0x0025(r3)      Store Attack-type as Status change
0018dcf0: 0c0610c3 jal 0x0018430c      
0018dcf4: 00000000 nop            
0018dcf8: 0806374b j 0x0018dd2c         
0018dcfc: 02201021 addu r2,r17,r0      
0018dd00: 9602002a lhu r2,0x002a(r16)      Load Max HP
0018dd04: 3463cccd ori r3,r3,0xcccd            
0018dd08: 00430019 multu r2,r3         
0018dd0c: 3c038019 lui r3,0x8019      
0018dd10: 8c632d90 lw r3,0x2d90(r3)      Load Current Action Data Pointer
0018dd14: 34020080 ori r2,r0,0x0080      
0018dd18: a0620025 sb r2,0x0025(r3)      Store attack type has HP Damage
0018dd1c: 00001010 mfhi r2         
0018dd20: 00021082 srl r2,r2,0x02      
0018dd24: a4620004 sh r2,0x0004(r3)      Store HP Damage
0018dd28: 02201021 addu r2,r17,r0      
0018dd2c: 8fbf0018 lw r31,0x0018(r29)      
0018dd30: 8fb10014 lw r17,0x0014(r29)      
0018dd34: 8fb00010 lw r16,0x0010(r29)      
0018dd38: 27bd0020 addiu r29,r29,0x0020      
0018dd3c: 03e00008 jr r31         
0018dd40: 00000000 nop            
  • Modding version: PSX
Check out my ASM thread. Who doesn't like hax?

Pride

February 11, 2012, 06:54:29 am #111 Last Edit: February 12, 2012, 04:05:25 pm by Pride
Some display stuff and some stuff SecondAdvent g
  • Modding version: PSX
Check out my ASM thread. Who doesn't like hax?

Choto

February 12, 2012, 12:25:46 am #112 Last Edit: February 12, 2012, 11:31:59 am by Choto
Steal routine with shoddy notes:

Edit: also, inventory increment routine


Steal Routine
0018d3c0: 3c028019 lui r2,0x8019
0018d3c4: 8c422d90 lw r2,0x2d90(r2)      target current action pointer
0018d3c8: 27bdffe0 addiu r29,r29,0xffe0
0018d3cc: afbf001c sw r31,0x001c(r29)
0018d3d0: afb20018 sw r18,0x0018(r29)
0018d3d4: afb10014 sw r17,0x0014(r29)
0018d3d8: afb00010 sw r16,0x0010(r29)
0018d3dc: 94420010 lhu r2,0x0010(r2)      load steal/break item flags
0018d3e0: 00000000 nop
0018d3e4: 30420014 andi r2,r2,0x0014      
0018d3e8: 10400059 beq r2,r0,0x0018d550      branch if not stealing or breaking
0018d3ec: 00008821 addu r17,r0,r0
0018d3f0: 00008021 addu r16,r0,r0
0018d3f4: 341200ff ori r18,r0,0x00ff
0018d3f8: 3c028019 lui r2,0x8019
0018d3fc: 8c422d90 lw r2,0x2d90(r2)      target current action pointer again
0018d400: 34030080 ori r3,r0,0x0080      
0018d404: 90420019 lbu r2,0x0019(r2)      load remove equipment byte
0018d408: 02031807 srav r3,r3,r16      r3 = 0?
0018d40c: 00431024 and r2,r2,r3         
0018d410: 10400021 beq r2,r0,0x0018d498      skip if nothing stolen/broken?
0018d414: 00000000 nop
0018d418: 3c028019 lui r2,0x8019
0018d41c: 8c422d98 lw r2,0x2d98(r2)      target data pointer
0018d420: 00000000 nop
0018d424: 00501821 addu r3,r2,r16      
0018d428: 9065001a lbu r5,0x001a(r3)      ??
0018d42c: 00000000 nop
0018d430: 10a00019 beq r5,r0,0x0018d498
0018d434: 00000000 nop
0018d438: 10b20017 beq r5,r18,0x0018d498   
0018d43c: 00051040 sll r2,r5,0x01      
0018d440: 00451021 addu r2,r2,r5
0018d444: 00021080 sll r2,r2,0x02
0018d448: 3c018006 lui r1,0x8006
0018d44c: 00220821 addu r1,r1,r2
0018d450: 90222ebb lbu r2,0x2ebb(r1)      item data pointer
0018d454: 00000000 nop
0018d458: 30420001 andi r2,r2,0x0001      
0018d45c: 1440000e bne r2,r0,0x0018d498
0018d460: 00000000 nop
0018d464: a072001a sb r18,0x001a(r3)      decrement?
0018d468: 3c028019 lui r2,0x8019
0018d46c: 8c422d90 lw r2,0x2d90(r2)      target current action pointer
0018d470: 00000000 nop
0018d474: 94420010 lhu r2,0x0010(r2)      steal/break byte
0018d478: 00000000 nop
0018d47c: 30420010 andi r2,r2,0x0010      steal check
0018d480: 10400005 beq r2,r0,0x0018d498
0018d484: 26310001 addiu r17,r17,0x0001      
0018d488: 3c048019 lui r4,0x8019
0018d48c: 8c842d94 lw r4,0x2d94(r4)      attacker data ponter
0018d490: 0c063a7a jal 0x0018e9e8      item/stat increment routines?
0018d494: 00000000 nop
0018d498: 26100001 addiu r16,r16,0x0001      counter
0018d49c: 2a020007 slti r2,r16,0x0007      runs 7 times
0018d4a0: 1440ffd5 bne r2,r0,0x0018d3f8
0018d4a4: 00000000 nop
0018d4a8: 1220002a beq r17,r0,0x0018d554   branch if no steal?
0018d4ac: 00001021 addu r2,r0,r0
0018d4b0: 3c028019 lui r2,0x8019
0018d4b4: 8c42f5fc lw r2,-0x0a04(r2)
0018d4b8: 00000000 nop
0018d4bc: 14400005 bne r2,r0,0x0018d4d4      ?
0018d4c0: 00000000 nop
0018d4c4: 3c048019 lui r4,0x8019
0018d4c8: 8c842d98 lw r4,0x2d98(r4)      target data pointer
0018d4cc: 0c017578 jal 0x0005d5e0      status setting/checking + equip R/S/M stats check
0018d4d0: 00000000 nop
0018d4d4: 3c058019 lui r5,0x8019
0018d4d8: 8ca52d90 lw r5,0x2d90(r5)      target current action pointer
0018d4dc: 00000000 nop
0018d4e0: 90a30019 lbu r3,0x0019(r5)      remove item byte
0018d4e4: 34020010 ori r2,r0,0x0010      
0018d4e8: 10620003 beq r3,r2,0x0018d4f8      branch if right hand weapon
0018d4ec: 34020004 ori r2,r0,0x0004      
0018d4f0: 14620018 bne r3,r2,0x0018d554      branch if left hand weapon
0018d4f4: 34020001 ori r2,r0,0x0001      
0018d4f8: 3c048019 lui r4,0x8019
0018d4fc: 8c842d98 lw r4,0x2d98(r4)      target data pointer?? again??
0018d500: 00000000 nop
0018d504: 90820058 lbu r2,0x0058(r4)      load status 1   
0018d508: 00000000 nop
0018d50c: 30420008 andi r2,r2,0x0008      if  charging?
0018d510: 1040000d beq r2,r0,0x0018d548      branch if not charging
0018d514: 340200ff ori r2,r0,0x00ff
0018d518: 9083015d lbu r3,0x015d(r4)      load target current ability CT
0018d51c: 00000000 nop
0018d520: 10620009 beq r3,r2,0x0018d548
0018d524: 34020008 ori r2,r0,0x0008
0018d528: 9083016f lbu r3,0x016f(r4)      skillset of last attack used
0018d52c: 00000000 nop
0018d530: 14620005 bne r3,r2,0x0018d548      branch if skillset != charge?
0018d534: 00000000 nop
0018d538: 90a20020 lbu r2,0x0020(r5)      attack status removal 1
0018d53c: 00000000 nop
0018d540: 34420008 ori r2,r2,0x0008
0018d544: a0a20020 sb r2,0x0020(r5)      store remove charge
0018d548: 08063555 j 0x0018d554         
0018d54c: 34020001 ori r2,r0,0x0001
0018d550: 00001021 addu r2,r0,r0
0018d554: 8fbf001c lw r31,0x001c(r29)
0018d558: 8fb20018 lw r18,0x0018(r29)
0018d55c: 8fb10014 lw r17,0x0014(r29)
0018d560: 8fb00010 lw r16,0x0010(r29)
0018d564: 27bd0020 addiu r29,r29,0x0020
0018d568: 03e00008 jr r31
0018d56c: 00000000 nop



Item quantity increment for steal/break?
0018e9e8: 3c028019 lui r2,0x8019
0018e9ec: 8c42f5fc lw r2,-0x0a04(r2)      
0018e9f0: 27bdffe0 addiu r29,r29,0xffe0
0018e9f4: afb10014 sw r17,0x0014(r29)
0018e9f8: 00808821 addu r17,r4,r0      r17 = attacker data pointer
0018e9fc: afbf0018 sw r31,0x0018(r29)
0018ea00: 1440000a bne r2,r0,0x0018ea2c
0018ea04: afb00010 sw r16,0x0010(r29)
0018ea08: 922201ba lbu r2,0x01ba(r17)      load ENTD team flags
0018ea0c: 00000000 nop
0018ea10: 30420030 andi r2,r2,0x0030      team = red lightblue green
0018ea14: 14400005 bne r2,r0,0x0018ea2c      skip routine if not
0018ea18: 30b000ff andi r16,r5,0x00ff      r16 = r5?
0018ea1c: 12000003 beq r16,r0,0x0018ea2c   skip routine if r5 = 0
0018ea20: 340200ff ori r2,r0,0x00ff      r2 = ff
0018ea24: 16020003 bne r16,r2,0x0018ea34   skip if r5 = ff
0018ea28: 02002021 addu r4,r16,r0
0018ea2c: 08063aa0 j 0x0018ea80
0018ea30: 00001021 addu r2,r0,r0
0018ea34: 0c0178a2 jal 0x0005e288      get total equipment quantity
0018ea38: 34050001 ori r5,r0,0x0001
0018ea3c: 28420063 slti r2,r2,0x0063      set if quantity <99
0018ea40: 1040000b beq r2,r0,0x0018ea70      skip if not
0018ea44: 00001021 addu r2,r0,r0
0018ea48: 3c018006 lui r1,0x8006
0018ea4c: 00300821 addu r1,r1,r16
0018ea50: 902396e0 lbu r3,-0x6920(r1)      item data pointer?
0018ea54: 00000000 nop
0018ea58: 24630001 addiu r3,r3,0x0001      increment by 1
0018ea5c: 3c018006 lui r1,0x8006
0018ea60: 00300821 addu r1,r1,r16
0018ea64: a02396e0 sb r3,-0x6920(r1)      store new item quantity
0018ea68: 08063aa0 j 0x0018ea80         jump to end
0018ea6c: 00000000 nop
0018ea70: 02202021 addu r4,r17,r0      r4 = data pointer?
0018ea74: 00002821 addu r5,r0,r0      r5 = 0
0018ea78: 0c063aa6 jal 0x0018ea98
0018ea7c: 02003021 addu r6,r16,r0      r6 = item ID?
0018ea80: 8fbf0018 lw r31,0x0018(r29)
0018ea84: 8fb10014 lw r17,0x0014(r29)
0018ea88: 8fb00010 lw r16,0x0010(r29)
0018ea8c: 27bd0020 addiu r29,r29,0x0020
0018ea90: 03e00008 jr r31
0018ea94: 00000000 nop

Choto

Big targeting routine with even shoddier notes:


Targeting routine:
0017b874: 27bdffb8 addiu r29,r29,0xffb8
0017b878: 27a50010 addiu r5,r29,0x0010
0017b87c: afbf0040 sw r31,0x0040(r29)
0017b880: afb5003c sw r21,0x003c(r29)
0017b884: afb40038 sw r20,0x0038(r29)
0017b888: afb30034 sw r19,0x0034(r29)
0017b88c: afb20030 sw r18,0x0030(r29)
0017b890: afb1002c sw r17,0x002c(r29)
0017b894: 0c01788b jal 0x0005e22c
0017b898: afb00028 sw r16,0x0028(r29)
0017b89c: 3c058019 lui r5,0x8019
0017b8a0: 24a508cc addiu r5,r5,0x08cc
0017b8a4: 87a20012 lh r2,0x0012(r29)
0017b8a8: 93b40010 lbu r20,0x0010(r29)
0017b8ac: 000218c0 sll r3,r2,0x03
0017b8b0: 00621823 subu r3,r3,r2
0017b8b4: 00031840 sll r3,r3,0x01
0017b8b8: 3c028006 lui r2,0x8006
0017b8bc: 2442fbf0 addiu r2,r2,0xfbf0
0017b8c0: 00621821 addu r3,r3,r2
0017b8c4: 001410c0 sll r2,r20,0x03
0017b8c8: 00541023 subu r2,r2,r20
0017b8cc: 00021180 sll r2,r2,0x06
0017b8d0: 90690003 lbu r9,0x0003(r3)      ability flags 1
0017b8d4: 90710004 lbu r17,0x0004(r3)      ability flags 2
0017b8d8: 90640006 lbu r4,0x0006(r3)      ability flags 4
0017b8dc: 90730001 lbu r19,0x0001(r3)      load aoe
0017b8e0: 90750002 lbu r21,0x0002(r3)      load verticle
0017b8e4: 30840020 andi r4,r4,0x0020      
0017b8e8: 10800003 beq r4,r0,0x0017b8f8      branch if not direct attack
0017b8ec: 00458021 addu r16,r2,r5      r16 = unit data pointer
0017b8f0: 35290020 ori r9,r9,0x0020      r9 = 20
0017b8f4: 32310039 andi r17,r17,0x0039      set if all flags under cannot hit allies=true
0017b8f8: 32220006 andi r2,r17,0x0006      set if linear 3 direction
0017b8fc: 10400006 beq r2,r0,0x0017b918      else branch
0017b900: 34020006 ori r2,r0,0x0006      r2= 06
0017b904: 92050047 lbu r5,0x0047(r16)      load x coordinate
0017b908: 96020048 lhu r2,0x0048(r16)      load y coordinate
0017b90c: 92040048 lbu r4,0x0048(r16)      load y coordinate
0017b910: 0805ee59 j 0x0017b964         skip following routine
0017b914: 00021bc2 srl r3,r2,0x0f      r2= y coordinate/2^0f?
0017b918: 93a3001a lbu r3,0x001a(r29)      load target Y coordinate?
0017b91c: 00000000 nop
0017b920: 10620006 beq r3,r2,0x0017b93c      branch if target y = caster y
0017b924: 00000000 nop
0017b928: 93a5001c lbu r5,0x001c(r29)      load target x
0017b92c: 93a40020 lbu r4,0x0020(r29)      load target y
0017b930: 93a3001e lbu r3,0x001e(r29)      load ?
0017b934: 0805ee59 j 0x0017b964         
0017b938: 00000000 nop
0017b93c: 93a2001b lbu r2,0x001b(r29)      load ?
0017b940: 00000000 nop
0017b944: 000218c0 sll r3,r2,0x03
0017b948: 00621823 subu r3,r3,r2
0017b94c: 00031980 sll r3,r3,0x06
0017b950: 00651821 addu r3,r3,r5
0017b954: 90650047 lbu r5,0x0047(r3)      load caster x
0017b958: 94620048 lhu r2,0x0048(r3)      load caster y
0017b95c: 90640048 lbu r4,0x0048(r3)      load caster y
0017b960: 00021bc2 srl r3,r2,0x0f      caster y/2^0f?
0017b964: 3c06800e lui r6,0x800e
0017b968: 90c64e9c lbu r6,0x4e9c(r6)      map max x
0017b96c: 00000000 nop   
0017b970: 00a6102a slt r2,r5,r6         set if caster x < max x??
0017b974: 104000b6 beq r2,r0,0x0017bc50      skip to end if not
0017b978: 2402ffff addiu r2,r0,0xffff      
0017b97c: 3c02800e lui r2,0x800e
0017b980: 90424ea0 lbu r2,0x4ea0(r2)      load max y?
0017b984: 00000000 nop
0017b988: 0082102a slt r2,r4,r2         set if caster y < max y??
0017b98c: 10400010 beq r2,r0,0x0017b9d0      skip to end if not      
0017b990: 28620002 slti r2,r3,0x0002      set if caster y/2^0f < 02
0017b994: 1040000e beq r2,r0,0x0017b9d0      skip to end if not?
0017b998: 00860018 mult r4,r6
0017b99c: 00031200 sll r2,r3,0x08
0017b9a0: 00001812 mflo r3
0017b9a4: 00431021 addu r2,r2,r3
0017b9a8: 00453021 addu r6,r2,r5
0017b9ac: 000618c0 sll r3,r6,0x03      
0017b9b0: 3c028019 lui r2,0x8019
0017b9b4: 2442f8cc addiu r2,r2,0xf8cc      load tile data start
0017b9b8: 00622821 addu r5,r3,r2
0017b9bc: 90a20006 lbu r2,0x0006(r5)      load byte at 8018f8cc + 2B8 (20)
0017b9c0: 00000000 nop
0017b9c4: 30420001 andi r2,r2,0x0001      
0017b9c8: 10400003 beq r2,r0,0x0017b9d8      jump if tile isn't unselectable via cursor
0017b9cc: 00000000 nop
0017b9d0: 0805ef14 j 0x0017bc50         else skip to end
0017b9d4: 2402ffff addiu r2,r0,0xffff
0017b9d8: 90a40002 lbu r4,0x0002(r5)      load tile height
0017b9dc: 90a30003 lbu r3,0x0003(r5)      load depth
0017b9e0: 90a20003 lbu r2,0x0003(r5)      load depth
0017b9e4: 00042040 sll r4,r4,0x01      height*2
0017b9e8: 3063001f andi r3,r3,0x001f      set if depth flag = 1f? (never)
0017b9ec: 00832021 addu r4,r4,r3      r4 = (height*2) + 0?
0017b9f0: 00021142 srl r2,r2,0x05      depth/2^5
0017b9f4: 00021040 sll r2,r2,0x01      depth*2
0017b9f8: 00829021 addu r18,r4,r2      
0017b9fc: 326300ff andi r3,r19,0x00ff      ?dunno what r19 is, 01 in this case
0017ba00: 340200ff ori r2,r0,0x00ff      
0017ba04: 1462000c bne r3,r2,0x0017ba38      ?
0017ba08: 00002021 addu r4,r0,r0      
0017ba0c: 34050001 ori r5,r0,0x0001      
0017ba10: 3c038019 lui r3,0x8019      
0017ba14: 24632dd8 addiu r3,r3,0x2dd8      
0017ba18: a0650000 sb r5,0x0000(r3)
0017ba1c: a0600001 sb r0,0x0001(r3)
0017ba20: 24840001 addiu r4,r4,0x0001
0017ba24: 28820200 slti r2,r4,0x0200      loop runs 200 times?
0017ba28: 1440fffb bne r2,r0,0x0017ba18
0017ba2c: 24630005 addiu r3,r3,0x0005
0017ba30: 0805eebf j 0x0017bafc         skip big following routine
0017ba34: 00000000 nop
0017ba38: 3c038019 lui r3,0x8019
0017ba3c: 24632dd8 addiu r3,r3,0x2dd8      
0017ba40: a0600000 sb r0,0x0000(r3)
0017ba44: a0600001 sb r0,0x0001(r3)
0017ba48: 24840001 addiu r4,r4,0x0001
0017ba4c: 28820200 slti r2,r4,0x0200
0017ba50: 1440fffb bne r2,r0,0x0017ba40      loop runs 200 times, clearing every 5th byte starting at 80192dd8
0017ba54: 24630005 addiu r3,r3,0x0005
0017ba58: 00061080 sll r2,r6,0x02
0017ba5c: 00461821 addu r3,r2,r6
0017ba60: 3c048019 lui r4,0x8019
0017ba64: 24842dd8 addiu r4,r4,0x2dd8
0017ba68: 00644021 addu r8,r3,r4
0017ba6c: 26620001 addiu r2,r19,0x0001
0017ba70: a1020000 sb r2,0x0000(r8)
0017ba74: 28c20100 slti r2,r6,0x0100
0017ba78: 10400005 beq r2,r0,0x0017ba90
0017ba7c: 24820500 addiu r2,r4,0x0500
0017ba80: 00623821 addu r7,r3,r2
0017ba84: 34020001 ori r2,r0,0x0001
0017ba88: 0805eea8 j 0x0017baa0
0017ba8c: a1020001 sb r2,0x0001(r8)
0017ba90: 2482fb00 addiu r2,r4,0xfb00
0017ba94: 00623821 addu r7,r3,r2
0017ba98: 34020001 ori r2,r0,0x0001
0017ba9c: a0e20001 sb r2,0x0001(r7)
0017baa0: 30c300ff andi r3,r6,0x00ff
0017baa4: 00031080 sll r2,r3,0x02
0017baa8: 00431021 addu r2,r2,r3
0017baac: 34030001 ori r3,r0,0x0001
0017bab0: 3c018019 lui r1,0x8019
0017bab4: 00220821 addu r1,r1,r2
0017bab8: a0232dd9 sb r3,0x2dd9(r1)
0017babc: 31220020 andi r2,r9,0x0020
0017bac0: 1440000e bne r2,r0,0x0017bafc
0017bac4: 02602021 addu r4,r19,r0
0017bac8: 00002821 addu r5,r0,r0
0017bacc: 26620001 addiu r2,r19,0x0001
0017bad0: a1020000 sb r2,0x0000(r8)
0017bad4: 0c05e546 jal 0x00179518
0017bad8: a0e20000 sb r2,0x0000(r7)
0017badc: 324400ff andi r4,r18,0x00ff
0017bae0: 02a02821 addu r5,r21,r0
0017bae4: 00113142 srl r6,r17,0x05
0017bae8: 0c05e4a9 jal 0x001792a4
0017baec: 30c60001 andi r6,r6,0x0001
0017baf0: 87a40012 lh r4,0x0012(r29)
0017baf4: 0c05e481 jal 0x00179204
0017baf8: 00000000 nop
0017bafc: 0c060428 jal 0x001810a0
0017bb00: 02002021 addu r4,r16,r0
0017bb04: 00021880 sll r3,r2,0x02
0017bb08: 00621821 addu r3,r3,r2
0017bb0c: 3c128019 lui r18,0x8019
0017bb10: 26522dd8 addiu r18,r18,0x2dd8
0017bb14: 32220001 andi r2,r17,0x0001
0017bb18: 10400002 beq r2,r0,0x0017bb24
0017bb1c: 00721821 addu r3,r3,r18
0017bb20: a0600000 sb r0,0x0000(r3)
0017bb24: 32220004 andi r2,r17,0x0004
0017bb28: 10400003 beq r2,r0,0x0017bb38
0017bb2c: 27a40010 addiu r4,r29,0x0010
0017bb30: 0c05ef9a jal 0x0017be68
0017bb34: 34050001 ori r5,r0,0x0001
0017bb38: 32220002 andi r2,r17,0x0002
0017bb3c: 10400004 beq r2,r0,0x0017bb50
0017bb40: 323000c0 andi r16,r17,0x00c0
0017bb44: 27a40010 addiu r4,r29,0x0010
0017bb48: 0c05ef9a jal 0x0017be68
0017bb4c: 34050003 ori r5,r0,0x0003
0017bb50: 12000006 beq r16,r0,0x0017bb6c
0017bb54: 02802021 addu r4,r20,r0
0017bb58: 32250080 andi r5,r17,0x0080
0017bb5c: 32260040 andi r6,r17,0x0040
0017bb60: 3a6700ff xori r7,r19,0x00ff
0017bb64: 0c05ef1e jal 0x0017bc78
0017bb68: 2ce70001 sltiu r7,r7,0x0001
0017bb6c: 1600001d bne r16,r0,0x0017bbe4
0017bb70: 00003021 addu r6,r0,r0
0017bb74: 00002021 addu r4,r0,r0
0017bb78: 02402821 addu r5,r18,r0
0017bb7c: 3c038019 lui r3,0x8019
0017bb80: 2463f8cc addiu r3,r3,0xf8cc
0017bb84: 90a20000 lbu r2,0x0000(r5)
0017bb88: 00000000 nop
0017bb8c: 1040000a beq r2,r0,0x0017bbb8
0017bb90: 00000000 nop
0017bb94: 90620006 lbu r2,0x0006(r3)
0017bb98: 00000000 nop
0017bb9c: 30420003 andi r2,r2,0x0003
0017bba0: 14400005 bne r2,r0,0x0017bbb8
0017bba4: 00000000 nop
0017bba8: 90620005 lbu r2,0x0005(r3)
0017bbac: 24c60001 addiu r6,r6,0x0001
0017bbb0: 0805eef1 j 0x0017bbc4
0017bbb4: 34420080 ori r2,r2,0x0080
0017bbb8: 90620005 lbu r2,0x0005(r3)
0017bbbc: 00000000 nop
0017bbc0: 3042007f andi r2,r2,0x007f
0017bbc4: a0620005 sb r2,0x0005(r3)
0017bbc8: 24a50005 addiu r5,r5,0x0005
0017bbcc: 24840001 addiu r4,r4,0x0001
0017bbd0: 28820200 slti r2,r4,0x0200
0017bbd4: 1440ffeb bne r2,r0,0x0017bb84
0017bbd8: 24630008 addiu r3,r3,0x0008
0017bbdc: 0805ef14 j 0x0017bc50
0017bbe0: 00c01021 addu r2,r6,r0
0017bbe4: 00002021 addu r4,r0,r0
0017bbe8: 02402821 addu r5,r18,r0
0017bbec: 3c038019 lui r3,0x8019
0017bbf0: 2463f8cc addiu r3,r3,0xf8cc
0017bbf4: 90a20001 lbu r2,0x0001(r5)
0017bbf8: 00000000 nop
0017bbfc: 1040000a beq r2,r0,0x0017bc28
0017bc00: 00000000 nop
0017bc04: 90620006 lbu r2,0x0006(r3)
0017bc08: 00000000 nop
0017bc0c: 30420003 andi r2,r2,0x0003
0017bc10: 14400005 bne r2,r0,0x0017bc28
0017bc14: 00000000 nop
0017bc18: 90620005 lbu r2,0x0005(r3)
0017bc1c: 24c60001 addiu r6,r6,0x0001
0017bc20: 0805ef0d j 0x0017bc34
0017bc24: 34420080 ori r2,r2,0x0080
0017bc28: 90620005 lbu r2,0x0005(r3)
0017bc2c: 00000000 nop
0017bc30: 3042007f andi r2,r2,0x007f
0017bc34: a0620005 sb r2,0x0005(r3)
0017bc38: 24a50005 addiu r5,r5,0x0005
0017bc3c: 24840001 addiu r4,r4,0x0001
0017bc40: 28820200 slti r2,r4,0x0200
0017bc44: 1440ffeb bne r2,r0,0x0017bbf4
0017bc48: 24630008 addiu r3,r3,0x0008
0017bc4c: 00c01021 addu r2,r6,r0
0017bc50: 8fbf0040 lw r31,0x0040(r29)
0017bc54: 8fb5003c lw r21,0x003c(r29)
0017bc58: 8fb40038 lw r20,0x0038(r29)
0017bc5c: 8fb30034 lw r19,0x0034(r29)
0017bc60: 8fb20030 lw r18,0x0030(r29)
0017bc64: 8fb1002c lw r17,0x002c(r29)
0017bc68: 8fb00028 lw r16,0x0028(r29)
0017bc6c: 27bd0048 addiu r29,r29,0x0048
0017bc70: 03e00008 jr r31
0017bc74: 00000000 nop


Choto

February 12, 2012, 09:43:24 am #114 Last Edit: February 12, 2012, 08:46:33 pm by Choto
3 routines dealing with act/move/end of turn with semi-crumby notes:


Various Flags? r4= data pointer?
00183bf0: 27bdffe8 addiu r29,r29,0xffe8
00183bf4: afb00010 sw r16,0x0010(r29)
00183bf8: 00808021 addu r16,r4,r0
00183bfc: 001010c0 sll r2,r16,0x03
00183c00: 00501023 subu r2,r2,r16
00183c04: 00021180 sll r2,r2,0x06
00183c08: 3c038019 lui r3,0x8019
00183c0c: 246308cc addiu r3,r3,0x08cc      r3 = unit data pointer
00183c10: 00432021 addu r4,r2,r3
00183c14: afbf0014 sw r31,0x0014(r29)
00183c18: 90830001 lbu r3,0x0001(r4)      
00183c1c: 340200ff ori r2,r0,0x00ff
00183c20: 1062000d beq r3,r2,0x00183c58
00183c24: 2402ffff addiu r2,r0,0xffff
00183c28: 10a00002 beq r5,r0,0x00183c34
00183c2c: 34020001 ori r2,r0,0x0001
00183c30: a0820187 sb r2,0x0187(r4)      store movement taken
00183c34: 10c00002 beq r6,r0,0x00183c40
00183c38: 34020001 ori r2,r0,0x0001
00183c3c: a0820188 sb r2,0x0188(r4)      Store action taken
00183c40: 0c060f44 jal 0x00183d10      jump to Nullify act/move
00183c44: 00000000 nop
00183c48: 10400003 beq r2,r0,0x00183c58      Branch if action not taken
00183c4c: 00000000 nop
00183c50: 0c060f1b jal 0x00183c6c      Jump to end of turn***
00183c54: 02002021 addu r4,r16,r0
00183c58: 8fbf0014 lw r31,0x0014(r29)
00183c5c: 8fb00010 lw r16,0x0010(r29)
00183c60: 27bd0018 addiu r29,r29,0x0018
00183c64: 03e00008 jr r31
00183c68: 00000000 nop

End of Turn
00183c6c: 000410c0 sll r2,r4,0x03      r2 = r4* 8?
00183c70: 00441023 subu r2,r2,r4      r2 = r2 - r4
00183c74: 00021180 sll r2,r2,0x06      r2 *
00183c78: 3c038019 lui r3,0x8019      
00183c7c: 246308cc addiu r3,r3,0x08cc      Unit Data pointer?
00183c80: 00433821 addu r7,r2,r3      Get certain unit data
00183c84: 3c018019 lui r1,0x8019      
00183c88: 00220821 addu r1,r1,r2
00183c8c: 902308cd lbu r3,0x08cd(r1)      ?
00183c90: 340200ff ori r2,r0,0x00ff      r2 = ff
00183c94: 1062001c beq r3,r2,0x00183d08      skip routine if equal
00183c98: 34020001 ori r2,r0,0x0001      r2 = 01
00183c9c: 90e20186 lbu r2,0x0186(r7)      Load Characters turn
00183ca0: 00000000 nop
00183ca4: 10400018 beq r2,r0,0x00183d08      Skip routine if turn over
00183ca8: 34020001 ori r2,r0,0x0001
00183cac: 90e60039 lbu r6,0x0039(r7)      Load CT?
00183cb0: 90e3005c lbu r3,0x005c(r7)      load status
00183cb4: 90e50187 lbu r5,0x0187(r7)      Load movement taken
00183cb8: 90e40188 lbu r4,0x0188(r7)      Load action taken
00183cbc: 30620008 andi r2,r3,0x0008      Don't move check
00183cc0: 00a22825 or r5,r5,r2         r5 = 1 if no movement allowed
00183cc4: 30630004 andi r3,r3,0x0004      r3 = 1 if don't act status
00183cc8: 90e20058 lbu r2,0x0058(r7)      load performing check?
00183ccc: 00641825 or r3,r3,r4         r3 = 1 if don't act or action taken
00183cd0: 30420001 andi r2,r2,0x0001      r2 = 1 if performing?
00183cd4: 14a00002 bne r5,r0,0x00183ce0      branch if movement taken?
00183cd8: 00621825 or r3,r3,r2         r3 = 1 if don't act, action taken, or performing
00183cdc: 24c60014 addiu r6,r6,0x0014      Award 20 CT?
00183ce0: 14600003 bne r3,r0,0x00183cf0      Branch if action taken?
00183ce4: 30c2ffff andi r2,r6,0xffff      
00183ce8: 24c60014 addiu r6,r6,0x0014      Award 20 CT?
00183cec: 30c2ffff andi r2,r6,0xffff
00183cf0: 2c42003d sltiu r2,r2,0x003d      If CT < 61?
00183cf4: 14400002 bne r2,r0,0x00183d00      branch if ct = 0
00183cf8: 34020001 ori r2,r0,0x0001      r2 = 01?
00183cfc: 3406003c ori r6,r0,0x003c      r6 = 01?
00183d00: a0e60039 sb r6,0x0039(r7)      store r6 as CT
00183d04: a0e00186 sb r0,0x0186(r7)      store store turn over
00183d08: 03e00008 jr r31
00183d0c: 00000000 nop

Able to move/Act checks (loading menu?)
00183d10: 27bdffe8 addiu r29,r29,0xffe8
00183d14: afb00010 sw r16,0x0010(r29)
00183d18: afbf0014 sw r31,0x0014(r29)
00183d1c: 0c0604c3 jal 0x0018130c
00183d20: 00808021 addu r16,r4,r0
00183d24: 9204005c lbu r4,0x005c(r16)      Load Current Status
00183d28: 92030187 lbu r3,0x0187(r16)      Load Movement Taken
00183d2c: 92050188 lbu r5,0x0188(r16)      Load Action Taken
00183d30: 30840008 andi r4,r4,0x0008      r4 = 1 if Don't Move
00183d34: 00642025 or r4,r3,r4         r4 = 1 if Don't move or movement taken
00183d38: 00a23025 or r6,r5,r2         r6=1 if action taken or ?? stop ride?
00183d3c: 00001021 addu r2,r0,r0
00183d40: 00651825 or r3,r3,r5         if movement taken or action taken
00183d44: 10800005 beq r4,r0,0x00183d5c      branch if don't move or movement taken?
00183d48: 00602821 addu r5,r3,r0      
00183d4c: 30c300ff andi r3,r6,0x00ff
00183d50: 10600002 beq r3,r0,0x00183d5c      brance if neither moved nor acted
00183d54: 00000000 nop
00183d58: 0005102b sltu r2,r0,r5      r2=1 if action taken or movement taken?
00183d5c: 8fbf0014 lw r31,0x0014(r29)
00183d60: 8fb00010 lw r16,0x0010(r29)
00183d64: 27bd0018 addiu r29,r29,0x0018
00183d68: 03e00008 jr r31
00183d6c: 00000000 nop

Choto

I've seen alot of people interested in looking at AI, so here's a disassembly of what I think is most of the AI routines. I pointed out where they reference unit data and do checks that I could decipher, but most of it references unknown locations.

801af3c4 - This address is referenced in quite a few of the routines and is preceded by about 0x10000 of AI data. I'm not sure if all that space is filled up, but it seems to be where all the AI stuff is going on

Choto

Please visit the Wiki page "Routine Locations" and add any routines that aren't up there already if you have time. I can't get the formatting to work correctly on the wiki when posting routines. If anybody figures it out let me know please! thanks! Oh also try to keep them in order of location!

http://ffhacktics.com/wiki/Routine_Locations

Glain

Here's some of the elemental stuff. I've written comments as valid C/C++ code, because why not. I had to use code tags so that my formatting didn't get butchered. Doesn't seem you can spoiler code tags... hmm.

186ff8: Apply Elemental

void apply_elemental()

00186ff8: 3c028019 lui r2,0x8019
00186ffc: 8c422d98 lw r2,0x2d98(r2)
00187000: 27bdffe8 addiu r29,r29,0xffe8
00187004: afbf0014 sw r31,0x0014(r29)
00187008: afb00010 sw r16,0x0010(r29)
0018700c: 9042005a lbu r2,0x005a(r2)
00187010: 3c108019 lui r16,0x8019
00187014: 921038f7 lbu r16,0x38f7(r16)
00187018: 30420080 andi r2,r2,0x0080
0018701c: 10400015 beq r2,r0,0x00187074
00187020: 32020080 andi r2,r16,0x0080
00187024: 10400013 beq r2,r0,0x00187074 # if ((target[UNIT_STATUS_FLAGS_3] & STATUS_OIL) && (ability_element == ELEMENT_FIRE))
00187028: 00002021 addu r4,r0,r0 # {
0018702c: 3c028019 lui r2,0x8019
00187030: 844238ce lh r2,0x38ce(r2)
00187034: 3c038019 lui r3,0x8019
00187038: 8c632d90 lw r3,0x2d90(r3)
0018703c: 00021040 sll r2,r2,0x01
00187040: 3c018019 lui r1,0x8019
00187044: a42238ce sh r2,0x38ce(r1) # action_XA = action_XA * 2
00187048: 90620022 lbu r2,0x0022(r3)
0018704c: 00000000 nop
00187050: 34420080 ori r2,r2,0x0080 # action[STATUS_REMOVAL_3] = action[STATUS_REMOVAL_3] | STATUS_OIL
00187054: 0c0612c9 jal 0x00184b24
00187058: a0620022 sb r2,0x0022(r3)
0018705c: 10400005 beq r2,r0,0x00187074 # if (validate_status_changes(false) != 0) // If this action changes a status
00187060: 34020008 ori r2,r0,0x0008 # {
00187064: 3c038019 lui r3,0x8019
00187068: 8c632d90 lw r3,0x2d90(r3)
0018706c: 00000000 nop # action[ACTION_TYPE] = ACTION_TYPE_STATUS_CHANGE;
00187070: a0620025 sb r2,0x0025(r3) # }
00187074: 3c038019 lui r3,0x8019 # }
00187078: 8c632d98 lw r3,0x2d98(r3) # Unit affected_unit = target;
0018707c: 00000000 nop
00187080: 90640182 lbu r4,0x0182(r3)
00187084: 00000000 nop
00187088: 30820080 andi r2,r4,0x0080
0018708c: 10400007 beq r2,r0,0x001870ac # if (target[UNIT_FLAGS_0x182] & UNIT_FLAGS_0x182_RIDING_CHOCOBO)
00187090: 3082001f andi r2,r4,0x001f # {
00187094: 000218c0 sll r3,r2,0x03 # int ridden_unit_index = target[UNIT_FLAGS_0x182] & 0x1f;
00187098: 00621823 subu r3,r3,r2
0018709c: 00031980 sll r3,r3,0x06
001870a0: 3c028019 lui r2,0x8019
001870a4: 244208cc addiu r2,r2,0x08cc
001870a8: 00621821 addu r3,r3,r2 # affected_unit = units[ridden_unit_index];
001870ac: 9062005a lbu r2,0x005a(r3) # }
001870b0: 00000000 nop
001870b4: 30420040 andi r2,r2,0x0040
001870b8: 10400009 beq r2,r0,0x001870e0
001870bc: 32020008 andi r2,r16,0x0008
001870c0: 10400007 beq r2,r0,0x001870e0 # if ((units[affected_unit][UNIT_STATUS_FLAGS_3] & STATUS_FLOAT) && (ability_element == ELEMENT_EARTH))
001870c4: 00000000 nop # {
001870c8: 0c061390 jal 0x00184e40 # nullify_action();
001870cc: 00000000 nop
001870d0: 3c038019 lui r3,0x8019
001870d4: 8c632d90 lw r3,0x2d90(r3)
001870d8: 34020007 ori r2,r0,0x0007 # action[EVADE_TYPE] = EVADE_TYPE_FLOATING;
001870dc: a0620002 sb r2,0x0002(r3) # }
001870e0: 0c0613a6 jal 0x00184e98 # apply_elemental_unit_modifiers(ability_element);
001870e4: 02002021 addu r4,r16,r0
001870e8: 8fbf0014 lw r31,0x0014(r29)
001870ec: 8fb00010 lw r16,0x0010(r29)
001870f0: 27bd0018 addiu r29,r29,0x0018
001870f4: 03e00008 jr r31 # return;
001870f8: 00000000 nop


184b24: Validate status changes

int validate_status_changes(bool p_IgnoreInvalidStatusChanges)

00184b24: 00803821 addu r7,r4,r0
00184b28: 3c028019 lui r2,0x8019
00184b2c: 8c422d98 lw r2,0x2d98(r2)
00184b30: 00005021 addu r10,r0,r0 # int result = 0;
00184b34: 90430005 lbu r3,0x0005(r2)
00184b38: 90420182 lbu r2,0x0182(r2)
00184b3c: 00000000 nop # int flags;
00184b40: 30420080 andi r2,r2,0x0080
00184b44: 1040000f beq r2,r0,0x00184b84 # if (target[UNIT_FLAGS_0x182] & UNIT_FLAGS_0x182_RIDING_CHOCOBO)
00184b48: 30680004 andi r8,r3,0x0004 # {
00184b4c: 00003021 addu r6,r0,r0 # for (int i=0; i < 5; i++)
00184b50: 3c038019 lui r3,0x8019 # {
00184b54: 8c632d90 lw r3,0x2d90(r3)
00184b58: 3c018019 lui r1,0x8019
00184b5c: 00260821 addu r1,r1,r6
00184b60: 9024f60c lbu r4,-0x09f4(r1)
00184b64: 00661821 addu r3,r3,r6
00184b68: 9062001b lbu r2,0x001b(r3)
00184b6c: 24c60001 addiu r6,r6,0x0001
00184b70: 00441024 and r2,r2,r4
00184b74: a062001b sb r2,0x001b(r3) # action[ACTION_STATUS_INFLICTION_FLAGS_1 + i] &= array_18f60c[i];
00184b78: 28c20005 slti r2,r6,0x0005
00184b7c: 1440fff4 bne r2,r0,0x00184b50 # }
00184b80: 00000000 nop # }
00184b84: 3c048019 lui r4,0x8019
00184b88: 8c842d90 lw r4,0x2d90(r4)
00184b8c: 00000000 nop
00184b90: 9083001d lbu r3,0x001d(r4)
00184b94: 00000000 nop
00184b98: 30620002 andi r2,r3,0x0002
00184b9c: 10400013 beq r2,r0,0x00184bec # if (action[ACTION_STATUS_INFLICTION_FLAGS_3] & STATUS_FROG)
00184ba0: 00003021 addu r6,r0,r0 # {
00184ba4: 3c028019 lui r2,0x8019
00184ba8: 8c422d98 lw r2,0x2d98(r2)
00184bac: 00000000 nop
00184bb0: 9042005a lbu r2,0x005a(r2)
00184bb4: 00000000 nop
00184bb8: 30420002 andi r2,r2,0x0002
00184bbc: 1040000b beq r2,r0,0x00184bec
00184bc0: 00000000 nop
00184bc4: 14e00009 bne r7,r0,0x00184bec # if ((target[UNIT_STATUS_FLAGS_3] & STATUS_FROG) && (!p_IgnoreInvalidStatusChanges))
00184bc8: 306200fd andi r2,r3,0x00fd # {
00184bcc: a082001d sb r2,0x001d(r4) # action[ACTION_STATUS_INFLICTION_FLAGS_3] &= 0xFD; // Removes "Frog" from status inflict list
00184bd0: 3c038019 lui r3,0x8019
00184bd4: 8c632d90 lw r3,0x2d90(r3)
00184bd8: 00000000 nop
00184bdc: 90620022 lbu r2,0x0022(r3) # action[ACTION_STATUS_REMOVAL_FLAGS_3] |= STATUS_FROG; // Adds "Frog" to status removal list
00184be0: 00000000 nop
00184be4: 34420002 ori r2,r2,0x0002 # }
00184be8: a0620022 sb r2,0x0022(r3) # }
00184bec: 14e00023 bne r7,r0,0x00184c7c # for (int i=0; i < 5; i++)
00184bf0: 28c20003 slti r2,r6,0x0003 # {
00184bf4: 1040000a beq r2,r0,0x00184c20 # if (!p_IgnoreInvalidStatusChanges)
00184bf8: 00000000 nop # {
00184bfc: 3c058019 lui r5,0x8019 # if (i < 3)
00184c00: 8ca52d90 lw r5,0x2d90(r5) # {
00184c04: 3c028019 lui r2,0x8019
00184c08: 8c422d98 lw r2,0x2d98(r2)
00184c0c: 00000000 nop
00184c10: 00461021 addu r2,r2,r6
00184c14: 90430058 lbu r3,0x0058(r2) # flags = target[UNIT_STATUS_FLAGS_1 + i] // Can't be reapplied
00184c18: 0806130f j 0x00184c3c
00184c1c: 00a62821 addu r5,r5,r6 # }
00184c20: 3c058019 lui r5,0x8019 # else
00184c24: 8ca52d90 lw r5,0x2d90(r5) # {
00184c28: 3c028019 lui r2,0x8019
00184c2c: 8c422d98 lw r2,0x2d98(r2)
00184c30: 00a62821 addu r5,r5,r6
00184c34: 00461021 addu r2,r2,r6 # flags = target[UNIT_AUTO_STATUS_FLAGS_1 + i] // Can be reapplied
00184c38: 9043004e lbu r3,0x004e(r2) # }
00184c3c: 90440053 lbu r4,0x0053(r2)
00184c40: 90a2001b lbu r2,0x001b(r5)
00184c44: 00641827 nor r3,r3,r4
00184c48: 00431024 and r2,r2,r3 # action[STATUS_INFLICT_1 + i] &= !(flags | target[STATUS_IMMUNE_1 + i]);
00184c4c: 1100000b beq r8,r0,0x00184c7c # if (target[UNIT_TEAM_FLAGS] & TEAM_FLAGS_IMMORTAL)
00184c50: a0a2001b sb r2,0x001b(r5) # {
00184c54: 3c028019 lui r2,0x8019
00184c58: 8c422d90 lw r2,0x2d90(r2)
00184c5c: 3c018006 lui r1,0x8006
00184c60: 00260821 addu r1,r1,r6
00184c64: 902362ee lbu r3,0x62ee(r1)
00184c68: 00461021 addu r2,r2,r6
00184c6c: 9044001b lbu r4,0x001b(r2)
00184c70: 00031827 nor r3,r0,r3 # action[STATUS_INFLICT_1 + i] &= !array_0662ee[i];
00184c74: 00832024 and r4,r4,r3 # }
00184c78: a044001b sb r4,0x001b(r2) # }
00184c7c: 3c058019 lui r5,0x8019
00184c80: 8ca52d90 lw r5,0x2d90(r5)
00184c84: 3c048019 lui r4,0x8019
00184c88: 8c842d98 lw r4,0x2d98(r4)
00184c8c: 00a62821 addu r5,r5,r6
00184c90: 00862021 addu r4,r4,r6
00184c94: 24c60001 addiu r6,r6,0x0001
00184c98: 9083004e lbu r3,0x004e(r4)
00184c9c: 90a20020 lbu r2,0x0020(r5)
00184ca0: 908401bb lbu r4,0x01bb(r4)
00184ca4: 00031827 nor r3,r0,r3
00184ca8: 00431024 and r2,r2,r3
00184cac: 00441024 and r2,r2,r4
00184cb0: a0a20020 sb r2,0x0020(r5) # action[STATUS_REMOVAL_1 + i] &= !target[UNIT_AUTO_STATUS_FLAGS_1 + i] & target[0x1bb + i];
00184cb4: 28c20005 slti r2,r6,0x0005
00184cb8: 1440ffcc bne r2,r0,0x00184bec # }
00184cbc: 00000000 nop
00184cc0: 14e00051 bne r7,r0,0x00184e08 # if (!p_IgnoreInvalidStatusChanges)
00184cc4: 00003021 addu r6,r0,r0 # {
00184cc8: 340b0080 ori r11,r0,0x0080 #
00184ccc: 3c098006 lui r9,0x8006 # for (int i=0; i < 40; i++)
00184cd0: 25295def addiu r9,r9,0x5def # {
00184cd4: 04c10002 bgez r6,0x00184ce0 #
00184cd8: 00c01021 addu r2,r6,r0
00184cdc: 24c20007 addiu r2,r6,0x0007
00184ce0: 000238c3 sra r7,r2,0x03
00184ce4: 3c028019 lui r2,0x8019
00184ce8: 8c422d90 lw r2,0x2d90(r2)
00184cec: 30c30007 andi r3,r6,0x0007
00184cf0: 00471021 addu r2,r2,r7
00184cf4: 9042001b lbu r2,0x001b(r2) # int action_status_flags = action[STATUS_INFLICT_1 + (i / 8)]; // Integer division
00184cf8: 006b1807 srav r3,r11,r3 # char current_flag = 0x80 >> (i % 8);
00184cfc: 00431024 and r2,r2,r3
00184d00: 10400019 beq r2,r0,0x00184d68 # if (action_status_flags & current_flag) // Does ability inflict this status?
00184d04: 00000000 nop # {
00184d08: 00002821 addu r5,r0,r0
00184d0c: 00034027 nor r8,r0,r3
00184d10: 01202021 addu r4,r9,r0
00184d14: 3c028019 lui r2,0x8019 # for (int j=0; j < 5; j++)
00184d18: 8c422d98 lw r2,0x2d98(r2) # {
00184d1c: 90830000 lbu r3,0x0000(r4)
00184d20: 00451021 addu r2,r2,r5
00184d24: 90420058 lbu r2,0x0058(r2)
00184d28: 00000000 nop
00184d2c: 00431024 and r2,r2,r3
00184d30: 10400009 beq r2,r0,0x00184d58 # if (target[STATUS_FLAGS_1 + j] & status[i][NO_STACK_1 + j])
00184d34: 24840001 addiu r4,r4,0x0001 # {
00184d38: 3c038019 lui r3,0x8019
00184d3c: 8c632d90 lw r3,0x2d90(r3)
00184d40: 00000000 nop
00184d44: 00671821 addu r3,r3,r7
00184d48: 9062001b lbu r2,0x001b(r3)
00184d4c: 00000000 nop
00184d50: 00481024 and r2,r2,r8 # action[STATUS_INFLICT_1 + (i / 8)] &= !current_flag;
00184d54: a062001b sb r2,0x001b(r3) # }
00184d58: 24a50001 addiu r5,r5,0x0001
00184d5c: 28a20005 slti r2,r5,0x0005
00184d60: 1440ffec bne r2,r0,0x00184d14 # }
00184d64: 00000000 nop # }
00184d68: 24c60001 addiu r6,r6,0x0001
00184d6c: 28c20028 slti r2,r6,0x0028
00184d70: 1440ffd8 bne r2,r0,0x00184cd4 # }
00184d74: 25290010 addiu r9,r9,0x0010
00184d78: 00003021 addu r6,r0,r0
00184d7c: 34090080 ori r9,r0,0x0080
00184d80: 3c088006 lui r8,0x8006
00184d84: 25085dea addiu r8,r8,0x5dea #
00184d88: 04c10002 bgez r6,0x00184d94 # for (int i=0; i < 40; i++)
00184d8c: 00c01021 addu r2,r6,r0 # {
00184d90: 24c20007 addiu r2,r6,0x0007
00184d94: 000238c3 sra r7,r2,0x03
00184d98: 3c028019 lui r2,0x8019
00184d9c: 8c422d90 lw r2,0x2d90(r2)
00184da0: 30c30007 andi r3,r6,0x0007
00184da4: 00471021 addu r2,r2,r7
00184da8: 9042001b lbu r2,0x001b(r2) # int action_status_flags = action[STATUS_INFLICT_1 + (i / 8)]; // Integer division
00184dac: 00691807 srav r3,r9,r3 # char current_flag = 0x80 >> (i % 8);
00184db0: 00431024 and r2,r2,r3
00184db4: 1040000f beq r2,r0,0x00184df4 # if (action_status_flags & current_flag) // Does ability inflict this status?
00184db8: 00000000 nop # {
00184dbc: 00002821 addu r5,r0,r0
00184dc0: 01003821 addu r7,r8,r0
00184dc4: 3c048019 lui r4,0x8019 # for (int j=0; j < 5; j++)
00184dc8: 8c842d90 lw r4,0x2d90(r4) # {
00184dcc: 90e30000 lbu r3,0x0000(r7)
00184dd0: 00852021 addu r4,r4,r5
00184dd4: 24a50001 addiu r5,r5,0x0001
00184dd8: 9082001b lbu r2,0x001b(r4)
00184ddc: 00031827 nor r3,r0,r3
00184de0: 00431024 and r2,r2,r3
00184de4: a082001b sb r2,0x001b(r4) # action[STATUS_INFLICT_1 + j] &= status[i][STATUS_CANCELS_1 + j];
00184de8: 28a20005 slti r2,r5,0x0005
00184dec: 1440fff5 bne r2,r0,0x00184dc4 # }
00184df0: 24e70001 addiu r7,r7,0x0001
00184df4: 24c60001 addiu r6,r6,0x0001
00184df8: 28c20028 slti r2,r6,0x0028
00184dfc: 1440ffe2 bne r2,r0,0x00184d88 # }
00184e00: 25080010 addiu r8,r8,0x0010 # }
00184e04: 00003021 addu r6,r0,r0 # for (int i=0; i < 5; i++)
00184e08: 3c048019 lui r4,0x8019 # {
00184e0c: 8c842d90 lw r4,0x2d90(r4)
00184e10: 00000000 nop
00184e14: 00861821 addu r3,r4,r6
00184e18: 24c60001 addiu r6,r6,0x0001
00184e1c: 9062001b lbu r2,0x001b(r3)
00184e20: 90630020 lbu r3,0x0020(r3)
00184e24: 01421021 addu r2,r10,r2
00184e28: 00435021 addu r10,r2,r3 # result += action[STATUS_INFLICT_1 + i] + action[STATUS_REMOVAL_1 + i];
00184e2c: 28c20005 slti r2,r6,0x0005
00184e30: 1440fff7 bne r2,r0,0x00184e10 # }
00184e34: 00000000 nop
00184e38: 03e00008 jr r31 # return result; // "result" signifies whether a status was changed (non-zero=changed, zero=not)
00184e3c: 01401021 addu r2,r10,r0


184e98: Apply elemental unit modifiers

void apply_elemental_unit_modifiers(int p_abilityElement)

00184e98: 3c028019 lui r2,0x8019
00184e9c: 8c422d98 lw r2,0x2d98(r2)
00184ea0: 27bdffe8 addiu r29,r29,0xffe8
00184ea4: afbf0010 sw r31,0x0010(r29)
00184ea8: 9042006d lbu r2,0x006d(r2)
00184eac: 00802821 addu r5,r4,r0
00184eb0: 00451024 and r2,r2,r5
00184eb4: 10400008 beq r2,r0,0x00184ed8 # if (target[UNIT_ELEMENTAL_ABSORB] & p_abilityElement)
00184eb8: 00000000 nop # {
00184ebc: 3c038019 lui r3,0x8019
00184ec0: 8c632d90 lw r3,0x2d90(r3)
00184ec4: 00000000 nop
00184ec8: 94620010 lhu r2,0x0010(r3)
00184ecc: 00000000 nop
00184ed0: 34420400 ori r2,r2,0x0400 # action[0x11] = action[0x11] | 0x04;
00184ed4: a4620010 sh r2,0x0010(r3) # }
00184ed8: 3c038019 lui r3,0x8019
00184edc: 8c632d98 lw r3,0x2d98(r3)
00184ee0: 00000000 nop
00184ee4: 9062006e lbu r2,0x006e(r3)
00184ee8: 00000000 nop
00184eec: 00451024 and r2,r2,r5
00184ef0: 10400005 beq r2,r0,0x00184f08 # if (target[UNIT_ELEMENTAL_CANCEL] & p_AbilityElement)
00184ef4: 00000000 nop # {
00184ef8: 0c061390 jal 0x00184e40 # nullify_action();
00184efc: 00000000 nop
00184f00: 080613e3 j 0x00184f8c # return;
00184f04: 00000000 nop # }
00184f08: 9062006f lbu r2,0x006f(r3)
00184f0c: 00000000 nop
00184f10: 00451024 and r2,r2,r5
00184f14: 1040000c beq r2,r0,0x00184f48 # if (target[UNIT_ELEMENTAL_HALF] & p_AbilityElement)
00184f18: 00000000 nop # {
00184f1c: 3c028019 lui r2,0x8019
00184f20: 8c422d90 lw r2,0x2d90(r2)
00184f24: 00000000 nop
00184f28: 94430004 lhu r3,0x0004(r2)
00184f2c: 00000000 nop
00184f30: 00031c00 sll r3,r3,0x10
00184f34: 00032403 sra r4,r3,0x10
00184f38: 00031fc2 srl r3,r3,0x1f
00184f3c: 00832021 addu r4,r4,r3
00184f40: 00042043 sra r4,r4,0x01 # action[ACTION_HP_DAMAGE] = action[ACTION_HP_DAMAGE] / 2;
00184f44: a4440004 sh r4,0x0004(r2) # }
00184f48: 3c028019 lui r2,0x8019
00184f4c: 8c422d98 lw r2,0x2d98(r2)
00184f50: 00000000 nop
00184f54: 90420070 lbu r2,0x0070(r2)
00184f58: 00000000 nop
00184f5c: 00451024 and r2,r2,r5
00184f60: 1040000a beq r2,r0,0x00184f8c # if (target[UNIT_ELEMENTAL_WEAK] & p_AbilityElement)
00184f64: 00000000 nop # {
00184f68: 3c028019 lui r2,0x8019
00184f6c: 8c422d90 lw r2,0x2d90(r2)
00184f70: 00000000 nop
00184f74: 94430010 lhu r3,0x0010(r2)
00184f78: 84440004 lh r4,0x0004(r2)
00184f7c: 34630800 ori r3,r3,0x0800
00184f80: 00042040 sll r4,r4,0x01
00184f84: a4430010 sh r3,0x0010(r2) # action[0x11] = action[0x11] | 0x08;
00184f88: a4440004 sh r4,0x0004(r2) # action[ACTION_HP_DAMAGE] = action[ACTION_HP_DAMAGE] * 2;
00184f8c: 8fbf0010 lw r31,0x0010(r29) # }
00184f90: 27bd0018 addiu r29,r29,0x0018
00184f94: 03e00008 jr r31 # return;
00184f98: 00000000 nop


184e40: Nullify action

void nullify_action()

00184e40: 3c028019 lui r2,0x8019
00184e44: 8c422d90 lw r2,0x2d90(r2)
00184e48: 27bdffe8 addiu r29,r29,0xffe8
00184e4c: afbf0010 sw r31,0x0010(r29)
00184e50: a0400000 sb r0,0x0000(r2) # action[ACTION_HIT_STATUS] = HIT_STATUS_MISS;
00184e54: 3c038019 lui r3,0x8019
00184e58: 8c632d90 lw r3,0x2d90(r3)
00184e5c: 34020005 ori r2,r0,0x0005
00184e60: a0620002 sb r2,0x0002(r3) # action[ACTION_EVADE_TYPE] = EVADE_TYPE_NULLIFIED;
00184e64: 3c028019 lui r2,0x8019
00184e68: 8c422d90 lw r2,0x2d90(r2)
00184e6c: a4600004 sh r0,0x0004(r3) # action[ACTION_HP_DAMAGE] = 0;
00184e70: a460002a sh r0,0x002a(r3) # action[ACTION_HIT_PERCENT_SELF] = 0;
00184e74: a4600010 sh r0,0x0010(r3) # action[0x10] = 0; action[ACTION_TYPE] = ACTION_TYPE_NOTHING;
00184e78: 0c062f3c jal 0x0018bcf0 # func_18bcf0();
00184e7c: a0400025 sb r0,0x0025(r2)
00184e80: 0c062f4d jal 0x0018bd34 # func_18bd34();
00184e84: 00000000 nop
00184e88: 8fbf0010 lw r31,0x0010(r29) # return;
00184e8c: 27bd0018 addiu r29,r29,0x0018
00184e90: 03e00008 jr r31
00184e94: 00000000 nop


Here's a few functions, called by nullify_action() above (0x184e40), where I can see what's happening but don't understand the significance:


void func_18bcf0()

0018bcf0: 3c048019 lui r4,0x8019
0018bcf4: 248438c8 addiu r4,r4,0x38c8
0018bcf8: 94820000 lhu r2,0x0000(r4)
0018bcfc: 00000000 nop
0018bd00: 1040000a beq r2,r0,0x0018bd2c # if (var_1938c8 == 0) return;
0018bd04: 00000000 nop
0018bd08: 3c038019 lui r3,0x8019
0018bd0c: 8c632d90 lw r3,0x2d90(r3)
0018bd10: 3c018019 lui r1,0x8019
0018bd14: a42038c6 sh r0,0x38c6(r1) # var_1938c6 = 0;
0018bd18: a4800000 sh r0,0x0000(r4) # var_1938c8 = 0;
0018bd1c: 94620010 lhu r2,0x0010(r3)
0018bd20: 00000000 nop
0018bd24: 3042fdff andi r2,r2,0xfdff
0018bd28: a4620010 sh r2,0x0010(r3) # action[0x11] &= 0xfd; // Remove flag 0x02 from action[0x11]
0018bd2c: 03e00008 jr r31 # return;
0018bd30: 00000000 nop



void func_18bd34()

0018bd34: 3c048019 lui r4,0x8019
0018bd38: 248438ed addiu r4,r4,0x38ed
0018bd3c: 90820000 lbu r2,0x0000(r4)
0018bd40: 00000000 nop
0018bd44: 30420080 andi r2,r2,0x0080
0018bd48: 10400008 beq r2,r0,0x0018bd6c # if (!(var_1938ed & 0x80)) return;
0018bd4c: 00000000 nop
0018bd50: 3c038019 lui r3,0x8019
0018bd54: 8c632d90 lw r3,0x2d90(r3)
0018bd58: a0800000 sb r0,0x0000(r4) # var_1938ed = 0;
0018bd5c: 94620010 lhu r2,0x0010(r3)
0018bd60: 00000000 nop
0018bd64: 3042bfff andi r2,r2,0xbfff
0018bd68: a4620010 sh r2,0x0010(r3) # action[0x11] &= 0xbf; // Remove flag 0x20 from action[0x11]
0018bd6c: 03e00008 jr r31 # return;
0018bd70: 00000000 nop

  • Modding version: Other/Unknown

Choto

Here's an interesting routine. This carries out some of the residual effects of an action - transparent removal, chicken brave increment/status application, critical status application/removal, etc. Its also on the wiki I think if anybody wants to fill the holes.

Its a huge routine and it loads the target's action and data pointers about 50 billion times.

0018be08: 27bdffc8 addiu r29,r29,0xffc8
0018be0c: afb20030 sw r18,0x0030(r29)
0018be10: 00809021 addu r18,r4,r0
0018be14: afb00028 sw r16,0x0028(r29)
0018be18: 00008021 addu r16,r0,r0
0018be1c: 2a420015 slti r2,r18,0x0015
0018be20: afbf0034 sw r31,0x0034(r29)
0018be24: 10400013 beq r2,r0,0x0018be74
0018be28: afb1002c sw r17,0x002c(r29)
0018be2c: 001218c0 sll r3,r18,0x03
0018be30: 00721823 subu r3,r3,r18
0018be34: 00031980 sll r3,r3,0x06
0018be38: 3c028019 lui r2,0x8019
0018be3c: 244208cc addiu r2,r2,0x08cc      Unit Data
0018be40: 00622021 addu r4,r3,r2      
0018be44: 2442018c addiu r2,r2,0x018c      
0018be48: 00622821 addu r5,r3,r2      
0018be4c: 3c018019 lui r1,0x8019      
0018be50: a03238c1 sb r18,0x38c1(r1)      AI action data?
0018be54: 3c018019 lui r1,0x8019      
0018be58: ac242d98 sw r4,0x2d98(r1)      store targte data
0018be5c: 3c018019 lui r1,0x8019      
0018be60: ac252d90 sw r5,0x2d90(r1)      store target action
0018be64: 90830001 lbu r3,0x0001(r4)      
0018be68: 340200ff ori r2,r0,0x00ff      
0018be6c: 14620003 bne r3,r2,0x0018be7c      
0018be70: 00000000 nop            
0018be74: 08063199 j 0x0018c664         
0018be78: 2402ffff addiu r2,r0,0xffff      
0018be7c: 90820058 lbu r2,0x0058(r4)      Load First Set of Current Status   
0018be80: 00000000 nop            
0018be84: 30420020 andi r2,r2,0x0020      
0018be88: 1040000f beq r2,r0,0x0018bec8      Branch if unit is not dead?
0018be8c: 00000000 nop            
0018be90: 90a2001b lbu r2,0x001b(r5)      status infliction 1
0018be94: 00000000 nop
0018be98: 30420040 andi r2,r2,0x0040      
0018be9c: 14400006 bne r2,r0,0x0018beb8      branch if crystal inflicted
0018bea0: 02402021 addu r4,r18,r0
0018bea4: 90a2001c lbu r2,0x001c(r5)      status infliction 2
0018bea8: 00000000 nop
0018beac: 30420001 andi r2,r2,0x0001
0018beb0: 10400005 beq r2,r0,0x0018bec8      branch if treasure inflicted
0018beb4: 00000000 nop
0018beb8: 0c06381f jal 0x0018e07c      ????
0018bebc: 00002821 addu r5,r0,r0
0018bec0: 08063199 j 0x0018c664         jump to end
0018bec4: 00001021 addu r2,r0,r0
0018bec8: 3c028019 lui r2,0x8019
0018becc: 8c42f5f0 lw r2,-0x0a10(r2)
0018bed0: 00000000 nop
0018bed4: 14400005 bne r2,r0,0x0018beec
0018bed8: 34020001 ori r2,r0,0x0001
0018bedc: 3c038019 lui r3,0x8019
0018bee0: 8c632d98 lw r3,0x2d98(r3)      Load Defender's Data
0018bee4: 00000000 nop            
0018bee8: a0620189 sb r2,0x0189(r3)      
0018beec: 0c0632c0 jal 0x0018cb00      Sunken State, Caution, Dragon Spirit, Brave Up, Face Up, Counter Tackle, Counter Flood, Absorb Used MP, Counter, Counter Magic usability
0018bef0: 00000000 nop            
0018bef4: 3c058019 lui r5,0x8019      
0018bef8: 8ca52d90 lw r5,0x2d90(r5)      Load Defender's Current Action Data
0018befc: 00000000 nop            
0018bf00: 84a3000e lh r3,0x000e(r5)      Load Reaction ID
0018bf04: 340201c2 ori r2,r0,0x01c2      
0018bf08: 14620006 bne r3,r2,0x0018bf24      Branch if Reaction ID isn't Catch
0018bf0c: 00000000 nop            
0018bf10: 3c048019 lui r4,0x8019      
0018bf14: 8c842d98 lw r4,0x2d98(r4)      Load Target Data
0018bf18: 90a50026 lbu r5,0x0026(r5)      Load Last Attack?
0018bf1c: 0c063a7a jal 0x0018e9e8      Store Caught Item in Inventory
0018bf20: 00000000 nop            
0018bf24: 3c048019 lui r4,0x8019      
0018bf28: 8c842d90 lw r4,0x2d90(r4)      Load Defender's Current Action Data
0018bf2c: 00000000 nop            
0018bf30: 90820000 lbu r2,0x0000(r4)      Load Hit Flag
0018bf34: 00000000 nop            
0018bf38: 104001ca beq r2,r0,0x0018c664      Branch if Attack Missed
0018bf3c: 00001021 addu r2,r0,r0      
0018bf40: 94830010 lhu r3,0x0010(r4)      load special flags
0018bf44: 00000000 nop            
0018bf48: 30628000 andi r2,r3,0x8000      
0018bf4c: 10400013 beq r2,r0,0x0018bf9c      ?
0018bf50: 30620001 andi r2,r3,0x0001      
0018bf54: 3c028019 lui r2,0x8019      
0018bf58: 8c422d98 lw r2,0x2d98(r2)      Load Defender's Data
0018bf5c: 00000000 nop            
0018bf60: 904201ba lbu r2,0x01ba(r2)      modified ENTD flags
0018bf64: 3c038019 lui r3,0x8019      
0018bf68: 2463f5f4 addiu r3,r3,0xf5f4      
0018bf6c: 30420030 andi r2,r2,0x0030      enemy team check
0018bf70: 000210c2 srl r2,r2,0x03      
0018bf74: 00432821 addu r5,r2,r3      
0018bf78: 94a30000 lhu r3,0x0000(r5)      Load Hit Flag
0018bf7c: 84820004 lh r2,0x0004(r4)      Load HP Damage
0018bf80: 00000000 nop            
0018bf84: 00628823 subu r17,r3,r2      
0018bf88: 06210002 bgez r17,0x0018bf94      
0018bf8c: 00001021 addu r2,r0,r0      
0018bf90: 00008821 addu r17,r0,r0      
0018bf94: 08063199 j 0x0018c664         jump to end
0018bf98: a4b10000 sh r17,0x0000(r5)      store no hit
0018bf9c: 1040000b beq r2,r0,0x0018bfcc      
0018bfa0: 00000000 nop            
0018bfa4: 3c028019 lui r2,0x8019      
0018bfa8: 8c422d98 lw r2,0x2d98(r2)      Load Defender's Data
0018bfac: 34100001 ori r16,r0,0x0001      
0018bfb0: 90430005 lbu r3,0x0005(r2)      Load Defender's Team
0018bfb4: 9442002a lhu r2,0x002a(r2)      Load Defender's Max HP
0018bfb8: 30630030 andi r3,r3,0x0030      enemy team check
0018bfbc: 000318c2 srl r3,r3,0x03
0018bfc0: 3c018019 lui r1,0x8019
0018bfc4: 00230821 addu r1,r1,r3
0018bfc8: a422f5f4 sh r2,-0x0a0c(r1)
0018bfcc: 0c06330d jal 0x0018cc34      MP Switch, Distribute, Damage Split Check
0018bfd0: 00000000 nop            
0018bfd4: 3c058019 lui r5,0x8019      
0018bfd8: 8ca52d98 lw r5,0x2d98(r5)      Load Defender's Data
0018bfdc: 3c048019 lui r4,0x8019      
0018bfe0: 8c842d90 lw r4,0x2d90(r4)      Load Defender's Current Action Data
0018bfe4: 94a70028 lhu r7,0x0028(r5)      Load Defender's Current HP
0018bfe8: 84820004 lh r2,0x0004(r4)      Load HP Damage
0018bfec: 84830006 lh r3,0x0006(r4)      Load HP Recovery
0018bff0: 00e21023 subu r2,r7,r2      Defender's Current HP - HP Damage
0018bff4: 00438821 addu r17,r2,r3      Defender's Current HP - HP Damage + HP Recovery
0018bff8: 06210002 bgez r17,0x0018c004      Branch if >= 0
0018bffc: 00000000 nop            
0018c000: 00008821 addu r17,r0,r0      else unit ko'd
0018c004: 94a3002a lhu r3,0x002a(r5)      Load Defender's Max HP
0018c008: 00000000 nop            
0018c00c: 0071102a slt r2,r3,r17      If Defender's Max HP < above, r2 = 1;else is 0
0018c010: 10400002 beq r2,r0,0x0018c01c      branch if defenders max < hp recovery (cap check)
0018c014: 00000000 nop            
0018c018: 00608821 addu r17,r3,r0      r17 = max hp
0018c01c: 94a6002c lhu r6,0x002c(r5)      Load Defender's Current MP
0018c020: 84820008 lh r2,0x0008(r4)      Load MP Damage
0018c024: 8483000a lh r3,0x000a(r4)      Load MP Recovery
0018c028: 00c21023 subu r2,r6,r2      Defender's Current MP - MP Damage
0018c02c: 00431821 addu r3,r2,r3      Defender's Current MP - MP Damage + MP Recovery
0018c030: 04610002 bgez r3,0x0018c03c      Branch if >= 0
0018c034: 00000000 nop            
0018c038: 00001821 addu r3,r0,r0      
0018c03c: 94a4002e lhu r4,0x002e(r5)      Load Defender's Max MP
0018c040: 00000000 nop            
0018c044: 0083102a slt r2,r4,r3         If target max MP < above, r2 = 1; else is 0
0018c048: 10400002 beq r2,r0,0x0018c054      branch if max mp < mp recovery (cap?)
0018c04c: 00000000 nop            
0018c050: 00801821 addu r3,r4,r0      r3 = max mp
0018c054: 14f10003 bne r7,r17,0x0018c064   branch if current HP != max hp or 0?   
0018c058: 00000000 nop
0018c05c: 10c30003 beq r6,r3,0x0018c06c      branch if current mp != max mp or 0?
0018c060: 34060032 ori r6,r0,0x0032      r6 = 0x32
0018c064: 34100001 ori r16,r0,0x0001      r16 = 1
0018c068: 34060032 ori r6,r0,0x0032      um.. r6 = 0x32 again
0018c06c: 3c058019 lui r5,0x8019
0018c070: 8ca52d98 lw r5,0x2d98(r5)      target data
0018c074: 3c028019 lui r2,0x8019
0018c078: 8c422d90 lw r2,0x2d90(r2)      target action
0018c07c: 34070001 ori r7,r0,0x0001      r7 = 01
0018c080: a4b10028 sh r17,0x0028(r5)      Store current HP
0018c084: a4a3002c sh r3,0x002c(r5)      store current MP
0018c088: 90440012 lbu r4,0x0012(r2)      load speed change?      
0018c08c: 0c06355c jal 0x0018d570      stat change?
0018c090: 24a50032 addiu r5,r5,0x0032      target data + 0x32 (stat change prep?)
0018c094: 02028025 or r16,r16,r2      target action OR 0x01
0018c098: 340600ff ori r6,r0,0x00ff
0018c09c: 00003821 addu r7,r0,r0
0018c0a0: 3c028019 lui r2,0x8019
0018c0a4: 8c422d90 lw r2,0x2d90(r2)      target action
0018c0a8: 3c058019 lui r5,0x8019
0018c0ac: 8ca52d98 lw r5,0x2d98(r5)      target data
0018c0b0: 90440013 lbu r4,0x0013(r2)      load CT change
0018c0b4: 0c06355c jal 0x0018d570      stat change routine?
0018c0b8: 24a50039 addiu r5,r5,0x0039      (stat change prep)
0018c0bc: 02028025 or r16,r16,r2      
0018c0c0: 34060063 ori r6,r0,0x0063      
0018c0c4: 34070001 ori r7,r0,0x0001
0018c0c8: 3c028019 lui r2,0x8019
0018c0cc: 8c422d90 lw r2,0x2d90(r2)      target action
0018c0d0: 3c058019 lui r5,0x8019
0018c0d4: 8ca52d98 lw r5,0x2d98(r5)      target data
0018c0d8: 90440014 lbu r4,0x0014(r2)      load PA change
0018c0dc: 0c06355c jal 0x0018d570
0018c0e0: 24a50030 addiu r5,r5,0x0030
0018c0e4: 02028025 or r16,r16,r2
0018c0e8: 34060063 ori r6,r0,0x0063
0018c0ec: 34070001 ori r7,r0,0x0001
0018c0f0: 3c028019 lui r2,0x8019
0018c0f4: 8c422d90 lw r2,0x2d90(r2)      target action
0018c0f8: 3c058019 lui r5,0x8019
0018c0fc: 8ca52d98 lw r5,0x2d98(r5)      target data
0018c100: 90440015 lbu r4,0x0015(r2)      load MA change
0018c104: 0c06355c jal 0x0018d570
0018c108: 24a50031 addiu r5,r5,0x0031
0018c10c: 02028025 or r16,r16,r2
0018c110: 34060064 ori r6,r0,0x0064
0018c114: 3c038019 lui r3,0x8019
0018c118: 8c632d98 lw r3,0x2d98(r3)      target data
0018c11c: 3c028019 lui r2,0x8019
0018c120: 8c422d90 lw r2,0x2d90(r2)      target action
0018c124: 24650024 addiu r5,r3,0x0024      
0018c128: 90670182 lbu r7,0x0182(r3)      load mount info
0018c12c: 90440016 lbu r4,0x0016(r2)      load brave change
0018c130: 000739c2 srl r7,r7,0x07
0018c134: 00073823 subu r7,r0,r7
0018c138: 0c06355c jal 0x0018d570   
0018c13c: 30e7000a andi r7,r7,0x000a
0018c140: 02028025 or r16,r16,r2
0018c144: 34060064 ori r6,r0,0x0064
0018c148: 00003821 addu r7,r0,r0
0018c14c: 3c028019 lui r2,0x8019
0018c150: 8c422d90 lw r2,0x2d90(r2)      target action
0018c154: 3c058019 lui r5,0x8019
0018c158: 8ca52d98 lw r5,0x2d98(r5)      target data
0018c15c: 90440017 lbu r4,0x0017(r2)      load faith change
0018c160: 0c06355c jal 0x0018d570
0018c164: 24a50026 addiu r5,r5,0x0026
0018c168: 0c0634f0 jal 0x0018d3c0      Steal/break(?) Routine
0018c16c: 02028025 or r16,r16,r2
0018c170: 3c038019 lui r3,0x8019
0018c174: 8c632d90 lw r3,0x2d90(r3)      target action
0018c178: 00000000 nop
0018c17c: 94630010 lhu r3,0x0010(r3)      item to break/use
0018c180: 00000000 nop
0018c184: 30630008 andi r3,r3,0x0008      assassin dagger?
0018c188: 10600007 beq r3,r0,0x0018c1a8      
0018c18c: 02028025 or r16,r16,r2
0018c190: 3c048019 lui r4,0x8019
0018c194: 8c842d98 lw r4,0x2d98(r4)      target data
0018c198: 00000000 nop
0018c19c: 90850176 lbu r5,0x0176(r4)      load used item/equip ID
0018c1a0: 0c063a7a jal 0x0018e9e8      item increment   
0018c1a4: 00000000 nop
0018c1a8: 3c038019 lui r3,0x8019
0018c1ac: 8c632d90 lw r3,0x2d90(r3)      target action
0018c1b0: 00000000 nop
0018c1b4: 8462000c lh r2,0x000c(r3)      load gil lost/stolen      
0018c1b8: 00000000 nop
0018c1bc: 14400005 bne r2,r0,0x0018c1d4      skip if not 0
0018c1c0: 00000000 nop
0018c1c4: 90620028 lbu r2,0x0028(r3)      load stolen exp
0018c1c8: 00000000 nop
0018c1cc: 10400002 beq r2,r0,0x0018c1d8      skip if 0
0018c1d0: 00000000 nop
0018c1d4: 36100001 ori r16,r16,0x0001      sets 1 if exp/gil stolen
0018c1d8: 3c028019 lui r2,0x8019
0018c1dc: 8c422d90 lw r2,0x2d90(r2)      target action pointer
0018c1e0: 3c048019 lui r4,0x8019
0018c1e4: 8c842d98 lw r4,0x2d98(r4)      target data pointer
0018c1e8: 8445000c lh r5,0x000c(r2)
0018c1ec: 0c063aa6 jal 0x0018ea98      some steal routine (gil/exp?)
0018c1f0: 00003021 addu r6,r0,r0
0018c1f4: 3c028019 lui r2,0x8019
0018c1f8: 8c422d90 lw r2,0x2d90(r2)      target action pointer
0018c1fc: 3c048019 lui r4,0x8019
0018c200: 8c842d98 lw r4,0x2d98(r4)      target data pointer
0018c204: 90450028 lbu r5,0x0028(r2)      
0018c208: 0c063ad4 jal 0x0018eb50      unknown yet
0018c20c: 00000000 nop
0018c210: 3c028019 lui r2,0x8019
0018c214: 8c422d90 lw r2,0x2d90(r2)      target action pointer
0018c218: 00000000 nop
0018c21c: 90420029 lbu r2,0x0029(r2)      stolen jp? unknown data
0018c220: 00000000 nop
0018c224: 10400005 beq r2,r0,0x0018c23c      branch if 0
0018c228: 00000000 nop
0018c22c: 3c048019 lui r4,0x8019
0018c230: 8c842d98 lw r4,0x2d98(r4)      target data
0018c234: 0c0637fe jal 0x0018dff8      ???
0018c238: 00000000 nop
0018c23c: 0c063217 jal 0x0018c85c      ???
0018c240: 00000000 nop
0018c244: 0c0631a0 jal 0x0018c680      ???
0018c248: 02028025 or r16,r16,r2
0018c24c: 3c038019 lui r3,0x8019
0018c250: 8c632d90 lw r3,0x2d90(r3)
0018c254: 00000000 nop
0018c258: 94630010 lhu r3,0x0010(r3)      load special flags (marlboro)
0018c25c: 00000000 nop
0018c260: 30630002 andi r3,r3,0x0002      murbol morph check
0018c264: 1060000a beq r3,r0,0x0018c290      branch if not morbolized
0018c268: 02028025 or r16,r16,r2
0018c26c: 3c028019 lui r2,0x8019
0018c270: 8c42f5fc lw r2,-0x0a04(r2)      load display data      
0018c274: 00000000 nop
0018c278: 14400005 bne r2,r0,0x0018c290      skip if not 0
0018c27c: 36100001 ori r16,r16,0x0001      
0018c280: 3c048019 lui r4,0x8019
0018c284: 8c842d98 lw r4,0x2d98(r4)      target data
0018c288: 0c0603d0 jal 0x00180f40      ???
0018c28c: 00000000 nop
0018c290: 16200028 bne r17,r0,0x0018c334   branch if ?
0018c294: 00000000 nop
0018c298: 3c028019 lui r2,0x8019
0018c29c: 8c422d98 lw r2,0x2d98(r2)      target data
0018c2a0: 00000000 nop
0018c2a4: 94420058 lhu r2,0x0058(r2)      current status 1
0018c2a8: 00000000 nop
0018c2ac: 30420160 andi r2,r2,0x0160      dead/crystal/performing check?
0018c2b0: 14400020 bne r2,r0,0x0018c334      branch  if ^
0018c2b4: 00000000 nop
0018c2b8: 3c048019 lui r4,0x8019
0018c2bc: 8c842d90 lw r4,0x2d90(r4)      target action
0018c2c0: 0c062f75 jal 0x0018bdd4      ???      
0018c2c4: 00000000 nop
0018c2c8: 02402021 addu r4,r18,r0
0018c2cc: 34050001 ori r5,r0,0x0001
0018c2d0: 3c028019 lui r2,0x8019
0018c2d4: 8c422d90 lw r2,0x2d90(r2)      target action
0018c2d8: 34030020 ori r3,r0,0x0020
0018c2dc: 0c06381f jal 0x0018e07c      ???
0018c2e0: a043001b sb r3,0x001b(r2)      store dead as status inflictin      
0018c2e4: 3c028019 lui r2,0x8019
0018c2e8: 8c42f5fc lw r2,-0x0a04(r2)      display data
0018c2ec: 00000000 nop
0018c2f0: 14400008 bne r2,r0,0x0018c314      ??
0018c2f4: 00000000 nop
0018c2f8: 3c038019 lui r3,0x8019
0018c2fc: 8c632d98 lw r3,0x2d98(r3)      target data
0018c300: 00000000 nop
0018c304: 9062015c lbu r2,0x015c(r3)      load ??
0018c308: 00000000 nop
0018c30c: 24420001 addiu r2,r2,0x0001      
0018c310: a062015c sb r2,0x015c(r3)      store 01 into ??
0018c314: 0c063588 jal 0x0018d620      gained EXP
0018c318: 34040002 ori r4,r0,0x0002
0018c31c: 3c028019 lui r2,0x8019
0018c320: 8c422d98 lw r2,0x2d98(r2)      target data
0018c324: 00000000 nop
0018c328: 90420182 lbu r2,0x0182(r2)      mount flags
0018c32c: 08063198 j 0x0018c660         end
0018c330: 000211c2 srl r2,r2,0x07
0018c334: 3c028019 lui r2,0x8019
0018c338: 8c422d98 lw r2,0x2d98(r2)      target data
0018c33c: 3c03cccc lui r3,0xcccc
0018c340: 9442002a lhu r2,0x002a(r2)      load max HP      
0018c344: 3463cccd ori r3,r3,0xcccd
0018c348: 00430019 multu r2,r3
0018c34c: 00001010 mfhi r2
0018c350: 00021082 srl r2,r2,0x02
0018c354: 3042ffff andi r2,r2,0xffff      checking if max hp = fraction of max hp (critical)
0018c358: 0051102a slt r2,r2,r17
0018c35c: 14400009 bne r2,r0,0x0018c384      branch if not critical?
0018c360: 00000000 nop
0018c364: 3c038019 lui r3,0x8019
0018c368: 8c632d90 lw r3,0x2d90(r3)      target action pointer
0018c36c: 00000000 nop
0018c370: 9062001d lbu r2,0x001d(r3)      status infliction 3
0018c374: 00000000 nop
0018c378: 34420001 ori r2,r2,0x0001      critical
0018c37c: 080630e8 j 0x0018c3a0         skip next rountine
0018c380: a062001d sb r2,0x001d(r3)      store set critical status
0018c384: 3c038019 lui r3,0x8019
0018c388: 8c632d90 lw r3,0x2d90(r3)      target action
0018c38c: 00000000 nop
0018c390: 90620022 lbu r2,0x0022(r3)      load status removal 3
0018c394: 00000000 nop
0018c398: 34420001 ori r2,r2,0x0001
0018c39c: a0620022 sb r2,0x0022(r3)      store remove critical status
0018c3a0: 3c028019 lui r2,0x8019
0018c3a4: 8c422d98 lw r2,0x2d98(r2)      target data
0018c3a8: 00000000 nop
0018c3ac: 90420024 lbu r2,0x0024(r2)      load brave
0018c3b0: 00000000 nop
0018c3b4: 2c42000a sltiu r2,r2,0x000a      set if less than 10
0018c3b8: 10400009 beq r2,r0,0x0018c3e0      branch if not less than 10 brave
0018c3bc: 00000000 nop
0018c3c0: 3c038019 lui r3,0x8019
0018c3c4: 8c632d90 lw r3,0x2d90(r3)
0018c3c8: 00000000 nop
0018c3cc: 9062001d lbu r2,0x001d(r3)      load
0018c3d0: 00000000 nop
0018c3d4: 34420004 ori r2,r2,0x0004
0018c3d8: 080630ff j 0x0018c3fc         skip brave increment
0018c3dc: a062001d sb r2,0x001d(r3)      store chicken status
0018c3e0: 3c038019 lui r3,0x8019
0018c3e4: 8c632d90 lw r3,0x2d90(r3)      target action
0018c3e8: 00000000 nop
0018c3ec: 90620022 lbu r2,0x0022(r3)      load status removal
0018c3f0: 00000000 nop
0018c3f4: 34420004 ori r2,r2,0x0004
0018c3f8: a0620022 sb r2,0x0022(r3)      store remove chicken status
0018c3fc: 3c038019 lui r3,0x8019
0018c400: 8c632d90 lw r3,0x2d90(r3)
0018c404: 00000000 nop
0018c408: 90620025 lbu r2,0x0025(r3)      load attack type
0018c40c: 00000000 nop
0018c410: 30420080 andi r2,r2,0x0080      HP damage check
0018c414: 10400013 beq r2,r0,0x0018c464      branch if not HP damage
0018c418: 00000000 nop
0018c41c: 90620024 lbu r2,0x0024(r3)      load status removal 5
0018c420: 00000000 nop
0018c424: 34420030 ori r2,r2,0x0030      store charm/sleep
0018c428: a0620024 sb r2,0x0024(r3)      remove ^      
0018c42c: 3c038019 lui r3,0x8019
0018c430: 8c632d90 lw r3,0x2d90(r3)      target action
0018c434: 00000000 nop
0018c438: 90620022 lbu r2,0x0022(r3)      status removal 3
0018c43c: 00000000 nop
0018c440: 34420010 ori r2,r2,0x0010      
0018c444: a0620022 sb r2,0x0022(r3)      store remove transparent
0018c448: 3c038019 lui r3,0x8019
0018c44c: 8c632d90 lw r3,0x2d90(r3)      target current action
0018c450: 00000000 nop
0018c454: 90620021 lbu r2,0x0021(r3)      status removal 2
0018c458: 00000000 nop
0018c45c: 34420010 ori r2,r2,0x0010
0018c460: a0620021 sb r2,0x0021(r3)      store remove confusion
0018c464: 3c028019 lui r2,0x8019
0018c468: 8c422d90 lw r2,0x2d90(r2)      target current action
0018c46c: 00000000 nop
0018c470: 94420010 lhu r2,0x0010(r2)      special flags
0018c474: 00000000 nop
0018c478: 30424000 andi r2,r2,0x4000      switch team?
0018c47c: 10400012 beq r2,r0,0x0018c4c8      branch if no team switch
0018c480: 00000000 nop
0018c484: 3c048019 lui r4,0x8019
0018c488: 8c842d98 lw r4,0x2d98(r4)      target data
0018c48c: 0c06005e jal 0x00180178      ????
0018c490: 00002821 addu r5,r0,r0      r5 = 0
0018c494: 1040000c beq r2,r0,0x0018c4c8      branch if ?
0018c498: 00000000 nop
0018c49c: 3c038019 lui r3,0x8019
0018c4a0: 8c632d90 lw r3,0x2d90(r3)      target current action
0018c4a4: 00000000 nop
0018c4a8: 90620020 lbu r2,0x0020(r3)      attack status removal 1
0018c4ac: 00000000 nop
0018c4b0: 34420008 ori r2,r2,0x0008      charging
0018c4b4: a0620020 sb r2,0x0020(r3)      remove charging
0018c4b8: 3c038019 lui r3,0x8019
0018c4bc: 8c632d98 lw r3,0x2d98(r3)      target data
0018c4c0: 340200ff ori r2,r0,0x00ff      ff
0018c4c4: a062015d sb r2,0x015d(r3)      store current ability CT ff (no charge?)
0018c4c8: 0c0612c9 jal 0x00184b24      status infliction checks
0018c4cc: 00002021 addu r4,r0,r0
0018c4d0: 00002021 addu r4,r0,r0
0018c4d4: 27a30010 addiu r3,r29,0x0010
0018c4d8: 3c028019 lui r2,0x8019
0018c4dc: 8c422d98 lw r2,0x2d98(r2)      target data
0018c4e0: 00000000 nop
0018c4e4: 00441021 addu r2,r2,r4
0018c4e8: 90420058 lbu r2,0x0058(r2)      load current status 1
0018c4ec: 24840001 addiu r4,r4,0x0001      ??
0018c4f0: a0620000 sb r2,0x0000(r3)      store current status ??
0018c4f4: 28820005 slti r2,r4,0x0005
0018c4f8: 1440fff7 bne r2,r0,0x0018c4d8      ??
0018c4fc: 24630001 addiu r3,r3,0x0001
0018c500: 00002021 addu r4,r0,r0
0018c504: 27a30018 addiu r3,r29,0x0018
0018c508: 3c028019 lui r2,0x8019
0018c50c: 8c422d98 lw r2,0x2d98(r2)      target data
0018c510: 00000000 nop
0018c514: 00441021 addu r2,r2,r4
0018c518: 9042005d lbu r2,0x005d(r2)      current status 2
0018c51c: 24840001 addiu r4,r4,0x0001
0018c520: a0620000 sb r2,0x0000(r3)
0018c524: 28820010 slti r2,r4,0x0010
0018c528: 1440fff7 bne r2,r0,0x0018c508      ???
0018c52c: 24630001 addiu r3,r3,0x0001
0018c530: 02402021 addu r4,r18,r0
0018c534: 0c06381f jal 0x0018e07c      ???
0018c538: 00002821 addu r5,r0,r0
0018c53c: 3c038019 lui r3,0x8019
0018c540: 8c632d98 lw r3,0x2d98(r3)      target data
0018c544: 00000000 nop
0018c548: 90620058 lbu r2,0x0058(r3)      current status 1
0018c54c: 00000000 nop
0018c550: 30420020 andi r2,r2,0x0020      dead
0018c554: 10400014 beq r2,r0,0x0018c5a8      branch if not
0018c558: 00002021 addu r4,r0,r0      r4 = 0
0018c55c: 93a20010 lbu r2,0x0010(r29)      
0018c560: 00000000 nop
0018c564: 30420020 andi r2,r2,0x0020
0018c568: 1440000f bne r2,r0,0x0018c5a8      skip if not dead
0018c56c: 00000000 nop
0018c570: 3c028019 lui r2,0x8019
0018c574: 8c42f5fc lw r2,-0x0a04(r2)      display data
0018c578: 00000000 nop
0018c57c: 14400023 bne r2,r0,0x0018c60c      branch if not dead?
0018c580: 34100002 ori r16,r0,0x0002      r16 = 02
0018c584: 9062015c lbu r2,0x015c(r3)      load dead flag?
0018c588: 00000000 nop
0018c58c: 24420001 addiu r2,r2,0x0001      add 0x01
0018c590: 08063183 j 0x0018c60c         
0018c594: a062015c sb r2,0x015c(r3)      store unit dead
0018c598: 08063176 j 0x0018c5d8
0018c59c: 34100001 ori r16,r0,0x0001
0018c5a0: 08063183 j 0x0018c60c
0018c5a4: 34100001 ori r16,r0,0x0001
0018c5a8: 3c068019 lui r6,0x8019
0018c5ac: 8cc62d98 lw r6,0x2d98(r6)      target data
0018c5b0: 27a50010 addiu r5,r29,0x0010      target dead check
0018c5b4: 00c41021 addu r2,r6,r4
0018c5b8: 90430058 lbu r3,0x0058(r2)      load current status
0018c5bc: 90a20000 lbu r2,0x0000(r5)      ??      
0018c5c0: 00000000 nop
0018c5c4: 1462fff4 bne r3,r2,0x0018c598      ??
0018c5c8: 24840001 addiu r4,r4,0x0001
0018c5cc: 28820005 slti r2,r4,0x0005
0018c5d0: 1440fff8 bne r2,r0,0x0018c5b4
0018c5d4: 24a50001 addiu r5,r5,0x0001
0018c5d8: 00002021 addu r4,r0,r0
0018c5dc: 3c068019 lui r6,0x8019
0018c5e0: 8cc62d98 lw r6,0x2d98(r6)      target data
0018c5e4: 27a50018 addiu r5,r29,0x0018
0018c5e8: 00c41021 addu r2,r6,r4
0018c5ec: 9043005d lbu r3,0x005d(r2)      load status CT left
0018c5f0: 90a20000 lbu r2,0x0000(r5)
0018c5f4: 00000000 nop
0018c5f8: 1462ffe9 bne r3,r2,0x0018c5a0      ??
0018c5fc: 24840001 addiu r4,r4,0x0001      
0018c600: 28820010 slti r2,r4,0x0010
0018c604: 1440fff8 bne r2,r0,0x0018c5e8
0018c608: 24a50001 addiu r5,r5,0x0001
0018c60c: 0c063588 jal 0x0018d620      attackers earned exp
0018c610: 02002021 addu r4,r16,r0
0018c614: 12000005 beq r16,r0,0x0018c62c   
0018c618: 34020002 ori r2,r0,0x0002      r2 = 02
0018c61c: 3c038019 lui r3,0x8019
0018c620: 8c632d98 lw r3,0x2d98(r3)      target data
0018c624: 00000000 nop
0018c628: a0620189 sb r2,0x0189(r3)      store in water??
0018c62c: 0c063336 jal 0x0018ccd8      PA Save, MA Save, Speed Save, Regenerator, HP Restore, MP Restore, Critical Quick Meatbone Slash, Auto Potion, Gilgame Heart check
0018c630: 00000000 nop
0018c634: 3c048019 lui r4,0x8019
0018c638: 8c842d98 lw r4,0x2d98(r4)      target data
0018c63c: 00000000 nop
0018c640: 90830058 lbu r3,0x0058(r4)      load current status
0018c644: 00000000 nop
0018c648: 30630060 andi r3,r3,0x0060      
0018c64c: 10600005 beq r3,r0,0x0018c664      branch if not dead/crystal
0018c650: 00001021 addu r2,r0,r0
0018c654: 90820182 lbu r2,0x0182(r4)      set mount flags = 0
0018c658: 00000000 nop
0018c65c: 000211c2 srl r2,r2,0x07
0018c660: 00021023 subu r2,r0,r2
0018c664: 8fbf0034 lw r31,0x0034(r29)
0018c668: 8fb20030 lw r18,0x0030(r29)
0018c66c: 8fb1002c lw r17,0x002c(r29)
0018c670: 8fb00028 lw r16,0x0028(r29)
0018c674: 27bd0038 addiu r29,r29,0x0038
0018c678: 03e00008 jr r31
0018c67c: 00000000 nop



Vanya

Could that routine be the place to mess around to make a skill act like the Defend command, Choto?
  • Modding version: Other/Unknown
¯\(°_0)/¯