Calculate Unit's Abilities
Jump to navigation
Jump to search
Calculate Unit's Abilities 0005ba70: 27bdffc0 addiu r29,r29,0xffc0 0005ba74: afb20020 sw r18,0x0020(r29) 0005ba78: 00809021 addu r18,r4,r0 r18 = Unit's Data Pointer 0005ba7c: afbf003c sw r31,0x003c(r29) 0005ba80: afbe0038 sw r30,0x0038(r29) 0005ba84: afb70034 sw r23,0x0034(r29) 0005ba88: afb60030 sw r22,0x0030(r29) 0005ba8c: afb5002c sw r21,0x002c(r29) 0005ba90: afb40028 sw r20,0x0028(r29) 0005ba94: afb30024 sw r19,0x0024(r29) 0005ba98: afb1001c sw r17,0x001c(r29) 0005ba9c: afb00018 sw r16,0x0018(r29) 0005baa0: 92480003 lbu r8,0x0003(r18) Load Unit's Job ID 0005baa4: 00a0b021 addu r22,r5,r0 r22 = ENTD Pointer 0005baa8: a3a80010 sb r8,0x0010(r29) Temp Store Unit's Job ID 0005baac: 92570006 lbu r23,0x0006(r18) Load Unit's Gender Byte 0005bab0: 16c00006 bne r22,r0,0x 0005bacc Branch if ENTD Pointer Exists 0005bab4: 340200ff ori r2,r0,0x00ff r2 = FF 0005bab8: 26440014 addiu r4,r18,0x0014 r2 = Unit's Reaction Ability Pointer 0005babc: 0c017991 jal 0x 0005e644 Data Nullifying (R/S/M) 0005bac0: 34050006 ori r5,r0,0x0006 Limit = 6 0005bac4: 08016f5f j 0x 0005bd7c 0005bac8: 00000000 nop 0005bacc: 92d3001d lbu r19,0x001d(r22) Load ENTD Primary Skillset 0005bad0: 00000000 nop 0005bad4: 326300ff andi r3,r19,0x00ff 0005bad8: 1062 0005 beq r3,r2,0x 0005baf0 Branch if Skillset = FF (Job's) 0005badc: 00000000 nop 0005bae0: 10600003 beq r3,r0,0x 0005baf0 Branch if Skillset = 0 0005bae4: 00000000 nop 0005bae8: 08016ec6 j 0x 0005bb18 0005baec: a2530012 sb r19,0x0012(r18) Store Unit's Primary Skillset 0005baf0: 93a80010 lbu r8,0x0010(r29) Load Temp Stored Job ID 0005baf4: 3c038006 lui r3,0x8006 0005baf8: 8c636194 lw r3,0x6194(r3) Load Job Data Pointer 0005bafc: 00081040 sll r2,r8,0x01 ID * 2 0005bb00: 00481021 addu r2,r2,r8 ID * 3 0005bb04: 00021100 sll r2,r2,0x04 ID * 48 0005bb08: 00431021 addu r2,r2,r3 0005bb0c: 90420000 lbu r2,0x0000(r2) Load Job's Skillset 0005bb10: 00000000 nop 0005bb14: a2420012 sb r2,0x0012(r18) Store Unit's Primary = Job's Skillset 0005bb18: 32e200c0 andi r2,r23,0x00c0 0005bb1c: 1040006c beq r2,r0,0x 0005bcd0 Branch if Unit doesn't have a Gender 0005bb20: 26440099 addiu r4,r18,0x0099 r4 = Unit's Known Ability Pointer 0005bb24: 0c017991 jal 0x 0005e644 Data Nullifying (Known Abilities) 0005bb28: 34050039 ori r5,r0,0x0039 Limit = 0x39 0005bb2c: 00008821 addu r17,r0,r0 Counter = 0 0005bb30: 3c1e8006 lui r30,0x8006 0005bb34: 27de6182 addiu r30,r30,0x6182 r30 = Level 0 JP Req Pointer 0005bb38: 0240a021 addu r20,r18,r0 r20 = Unit's Data Pointer 0005bb3c: 0000a821 addu r21,r0,r0 Job Counter = 0 0005bb40: 02511021 addu r2,r18,r17 r2 = Unit's Data Pointer + Counter 0005bb44: 905300d2 lbu r19,0x00d2(r2) Load Unit's Job Levels 0005bb48: 34020009 ori r2,r0,0x0009 r2 = 9 0005bb4c: 16220004 bne r17,r2,0x 0005bb60 Branch if Counter != 9 (Dancer Check) 0005bb50: 00138102 srl r16,r19,0x04 Job Level / 16 (get High Nybble Job Level) 0005bb54: 32e20080 andi r2,r23,0x0080 0005bb58: 1440001e bne r2,r0,0x 0005bbd4 Branch if Unit is a Male 0005bb5c: 00001021 addu r2,r0,r0 JP = 0 0005bb60: 12000010 beq r16,r0,0x 0005bba4 Branch if High Nybble Job Level = 0 0005bb64: 00000000 nop 0005bb68: 0c0088c3 jal 0x0002230c Random Number Generator 0005bb6c: 00000000 nop 0005bb70: 00021840 sll r3,r2,0x01 Random * 2 0005bb74: 00621821 addu r3,r3,r2 Random * 3 0005bb78: 000318c0 sll r3,r3,0x03 Random * 24 0005bb7c: 00621821 addu r3,r3,r2 Random * 25 0005bb80: 00032080 sll r4,r3,0x02 Random * 100 0005bb84: 00101040 sll r2,r16,0x01 Dancer Job Level 0005bb88: 04810002 bgez r4,0x 0005bb94 Branch if Random is positive 0005bb8c: 005e1021 addu r2,r2,r30 Job Level + Job Req. Pointer 0005bb90: 24847fff addiu r4,r4,0x7fff 0005bb94: 94430000 lhu r3,0x0000(r2) Load JP Requirement 0005bb98: 000413c3 sra r2,r4,0x0f rand(0..99) 0005bb9c: 08016ef5 j 0x 0005bbd4 0005bba0: 00621021 addu r2,r3,r2 JP = JP Requirement + rand(0..99) 0005bba4: 0c0088c3 jal 0x0002230c Random Number Generator 0005bba8: 00000000 nop 0005bbac: 00021840 sll r3,r2,0x01 0005bbb0: 00621821 addu r3,r3,r2 0005bbb4: 000318c0 sll r3,r3,0x03 0005bbb8: 00621821 addu r3,r3,r2 0005bbbc: 00031080 sll r2,r3,0x02 Random * 100 0005bbc0: 04410002 bgez r2,0x 0005bbcc Branch if Random is Positive 0005bbc4: 00000000 nop 0005bbc8: 24427fff addiu r2,r2,0x7fff 0005bbcc: 000213c3 sra r2,r2,0x0f rand(0..99) 0005bbd0: 24420064 addiu r2,r2,0x0064 JP = 100 + rand(0..99) 0005bbd4: 02402021 addu r4,r18,r0 r4 = Unit's Data Pointer 0005bbd8: 26a5004a addiu r5,r21,0x004a r5 = Job Counter + 0x4a 0005bbdc: 02c03021 addu r6,r22,r0 r6 = ENTD Pointer 0005bbe0: a6820104 sh r2,0x0104(r20) Store Unit's Total JP 0005bbe4: 0c01739d jal 0x 0005ce74 Calculate Learned Abilities 0005bbe8: a68200dc sh r2,0x00dc(r20) Store Unit's JP 0005bbec: 34020008 ori r2,r0,0x0008 r2 = 8 0005bbf0: 16220004 bne r17,r2,0x 0005bc04 Branch if Counter != 8 (Bard Check) 0005bbf4: 3270000f andi r16,r19,0x000f r16 = Low Nybble Job Level 0005bbf8: 32e20040 andi r2,r23,0x0040 0005bbfc: 1440001e bne r2,r0,0x 0005bc78 Branch if Unit is Female 0005bc00: 00001021 addu r2,r0,r0 JP = 0 0005bc04: 12000010 beq r16,r0,0x 0005bc48 Branch if Job Level = 0 0005bc08: 00000000 nop 0005bc0c: 0c0088c3 jal 0x0002230c Random Number Generator 0005bc10: 00000000 nop 0005bc14: 00021840 sll r3,r2,0x01 0005bc18: 00621821 addu r3,r3,r2 0005bc1c: 000318c0 sll r3,r3,0x03 0005bc20: 00621821 addu r3,r3,r2 0005bc24: 00032080 sll r4,r3,0x02 Random * 100 0005bc28: 00101040 sll r2,r16,0x01 Job Level * 2 0005bc2c: 04810002 bgez r4,0x 0005bc38 Branch if Random is Positive 0005bc30: 005e1021 addu r2,r2,r30 Job Level + Job Level Requirements Pointer 0005bc34: 24847fff addiu r4,r4,0x7fff 0005bc38: 94430000 lhu r3,0x0000(r2) Load Job Level's JP Requirement 0005bc3c: 000413c3 sra r2,r4,0x0f rand(0..99) 0005bc40: 08016f1e j 0x 0005bc78 0005bc44: 00621021 addu r2,r3,r2 JP = Job Level's JP Req. + rand(0..99) 0005bc48: 0c0088c3 jal 0x0002230c Random Number Generator 0005bc4c: 00000000 nop 0005bc50: 00021840 sll r3,r2,0x01 0005bc54: 00621821 addu r3,r3,r2 0005bc58: 000318c0 sll r3,r3,0x03 0005bc5c: 00621821 addu r3,r3,r2 0005bc60: 00031080 sll r2,r3,0x02 Random * 100 0005bc64: 04410002 bgez r2,0x 0005bc70 Branch if Random is Positive 0005bc68: 00000000 nop 0005bc6c: 24427fff addiu r2,r2,0x7fff 0005bc70: 000213c3 sra r2,r2,0x0f rand(0..99) 0005bc74: 24420064 addiu r2,r2,0x0064 JP = rand(0..99) + 100 0005bc78: a6820106 sh r2,0x0106(r20) Store Unit's Total JP 0005bc7c: a68200de sh r2,0x00de(r20) Store Unit's Current JP 0005bc80: 34020009 ori r2,r0,0x0009 r2 = 9 0005bc84: 12220009 beq r17,r2,0x 0005bcac Branch if Counter = 9 (Mime Check) 0005bc88: 02402021 addu r4,r18,r0 r4 = Unit's Data Pointer 0005bc8c: 26a5004b addiu r5,r21,0x004b r5 = Job Counter + 0x4b 0005bc90: 0c01739d jal 0x 0005ce74 Calculate Learned Abilities 0005bc94: 02c03021 addu r6,r22,r0 r6 = ENTD Pointer 0005bc98: 26940004 addiu r20,r20,0x0004 Unit's Data Pointer += 4 (next set of JP) 0005bc9c: 26310001 addiu r17,r17,0x0001 Counter ++ 0005bca0: 2a22000a slti r2,r17,0x000a 0005bca4: 1440ffa6 bne r2,r0,0x 0005bb40 Branch if Counter < 10 0005bca8: 26b50002 addiu r21,r21,0x0002 Job Counter += 2 0005bcac: 92c3001d lbu r3,0x001d(r22) Load ENTD Primary Skillset 0005bcb0: 00000000 nop 0005bcb4: 10600006 beq r3,r0,0x 0005bcd0 Branch if Skillset = 0 0005bcb8: 340200ff ori r2,r0,0x00ff r2 = FF 0005bcbc: 10620004 beq r3,r2,0x 0005bcd0 Branch if Skillset = Job's 0005bcc0: 340200ff ori r2,r0,0x00ff r2 = FF 0005bcc4: a2420099 sb r2,0x0099(r18) Store Unit's Known Abilities 1 = FF (all abilities) 0005bcc8: a242009a sb r2,0x009a(r18) Store Unit's Known Abilities 2 = FF 0005bccc: a242009b sb r2,0x009b(r18) Store Unit's Known R/S/M = FF 0005bcd0: 00008821 addu r17,r0,r0 Counter = 0 0005bcd4: 93a80010 lbu r8,0x0010(r29) Load Temp Stored Job ID 0005bcd8: 02403021 addu r6,r18,r0 r6 = Unit's Data Pointer 0005bcdc: 00081040 sll r2,r8,0x01 ID * 2 0005bce0: 00481021 addu r2,r2,r8 ID * 3 0005bce4: 00023900 sll r7,r2,0x04 ID * 48 0005bce8: 00111840 sll r3,r17,0x01 Counter * 2 0005bcec: 3c028006 lui r2,0x8006 0005bcf0: 8c426194 lw r2,0x6194(r2) Load Job Data Pointer 0005bcf4: 02512821 addu r5,r18,r17 r5 = Unit's Data Pointer + Counter 0005bcf8: 00e21021 addu r2,r7,r2 0005bcfc: 00512021 addu r4,r2,r17 r4 = Job's Data Pointer + Counter 0005bd00: 26310001 addiu r17,r17,0x0001 Counter ++ 0005bd04: 00431021 addu r2,r2,r3 r2 = Job's Data Pointer + Counter * 2 0005bd08: 90430002 lbu r3,0x0002(r2) Load Innate Ability's High Bit 0005bd0c: 90420001 lbu r2,0x0001(r2) Load Innate Ability 0005bd10: 00031a00 sll r3,r3,0x08 High Bit * 256 0005bd14: 00431021 addu r2,r2,r3 r2 = Innate Ability ID 0005bd18: a4c2000a sh r2,0x000a(r6) Store Unit's Innate Ability 0005bd1c: 90820009 lbu r2,0x0009(r4) Load Job's Equippable Items 0005bd20: 00000000 nop 0005bd24: a0a2004a sb r2,0x004a(r5) Store Unit's Equippable Items 0005bd28: 2a220004 slti r2,r17,0x0004 0005bd2c: 1440ffee bne r2,r0,0x 0005bce8 Branch if Counter < 4 0005bd30: 24c60002 addiu r6,r6,0x0002 Unit's Data Pointer += 2 0005bd34: 02402021 addu r4,r18,r0 r4 = Unit's Data Pointer 0005bd38: 34060002 ori r6,r0,0x0002 r6 = 2 (Reaction) 0005bd3c: 96c5000c lhu r5,0x000c(r22) Load ENTD Reaction 0005bd40: 0c01742f jal 0x 0005d0bc Calculate Unit's R/S/M 0005bd44: 02c03821 addu r7,r22,r0 r7 = ENTD Pointer 0005bd48: 02402021 addu r4,r18,r0 r4 = Unit's Data Pointer 0005bd4c: 34060004 ori r6,r0,0x0004 r6 = 4 (Support) 0005bd50: a6420014 sh r2,0x0014(r18) Store Unit's Reaction ID 0005bd54: 96c5000e lhu r5,0x000e(r22) Load ENTD Support 0005bd58: 0c01742f jal 0x 0005d0bc Calculate Unit's R/S/M 0005bd5c: 02c03821 addu r7,r22,r0 r7 = ENTD Pointer 0005bd60: 02402021 addu r4,r18,r0 r4 = Unit's Data Pointer 0005bd64: 34060008 ori r6,r0,0x0008 r6 = 8 (Movement) 0005bd68: a6420016 sh r2,0x0016(r18) Store Unit's Support ID 0005bd6c: 96c50010 lhu r5,0x0010(r22) Load ENTD Movement 0005bd70: 0c01742f jal 0x 0005d0bc Calculate Unit's R/S/M 0005bd74: 02c03821 addu r7,r22,r0 r7 = ENTD Pointer 0005bd78: a6420018 sh r2,0x0018(r18) Store Unit's Movement ID 0005bd7c: 8fbf003c lw r31,0x003c(r29) 0005bd80: 8fbe0038 lw r30,0x0038(r29) 0005bd84: 8fb70034 lw r23,0x0034(r29) 0005bd88: 8fb60030 lw r22,0x0030(r29) 0005bd8c: 8fb5002c lw r21,0x002c(r29) 0005bd90: 8fb40028 lw r20,0x0028(r29) 0005bd94: 8fb30024 lw r19,0x0024(r29) 0005bd98: 8fb20020 lw r18,0x0020(r29) 0005bd9c: 8fb1001c lw r17,0x001c(r29) 0005bda0: 8fb00018 lw r16,0x0018(r29) 0005bda4: 27bd0040 addiu r29,r29,0x0040 0005bda8: 03e00008 jr r31 0005bdac: 00000000 nop
Return Locations
0005aa4c: Unit Battle Initialization