If preferred job for random success is present calculation

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
Preferred job is done here
returning r2 = unit party ID + 1 makes that unit give random success
r2 = 0 - no random success
0007a2a8: 27bdffa0 addiu r29,r29,0xffa0
0007a2ac: 3c02800a lui r2,0x800a
0007a2b0: 8c42f1f8 lw r2,-0x0e08(r2)
0007a2b4: 3404000e ori r4,r0,0x000e
0007a2b8: afb30044 sw r19,0x0044(r29)
0007a2bc: afbf0058 sw r31,0x0058(r29)
0007a2c0: afb70054 sw r23,0x0054(r29)
0007a2c4: afb60050 sw r22,0x0050(r29)
0007a2c8: afb5004c sw r21,0x004c(r29)
0007a2cc: afb40048 sw r20,0x0048(r29)
0007a2d0: afb20040 sw r18,0x0040(r29)
0007a2d4: afb1003c sw r17,0x003c(r29)
0007a2d8: afb00038 sw r16,0x0038(r29)
0007a2dc: 000218c0 sll r3,r2,0x03
0007a2e0: 00621821 addu r3,r3,r2
0007a2e4: 3c018005 lui r1,0x8005
0007a2e8: 24217ef1 addiu r1,r1,0x7ef1
0007a2ec: 00230821 addu r1,r1,r3
0007a2f0: 90340000 lbu r20,0x0000(r1)
0007a2f4: 0c01a646 jal 0x00069918
0007a2f8: 00009821 addu r19,r0,r0
0007a2fc: 3c03800a lui r3,0x800a
0007a300: 9463f314 lhu r3,-0x0cec(r3)			load preferred job for prop
0007a304: 00000000 nop
0007a308: 1060001f beq r3,r0,0x0007a388			branch if none
0007a30c: 0040b021 addu r22,r2,r0
0007a310: 0274102a slt r2,r19,r20
0007a314: 1040001c beq r2,r0,0x0007a388			branch if ??
0007a318: 00009021 addu r18,r0,r0
0007a31c: 3c03800a lui r3,0x800a
0007a320: 8c63f1f8 lw r3,-0x0e08(r3)
0007a324: 00000000 nop
0007a328: 000310c0 sll r2,r3,0x03
0007a32c: 00431021 addu r2,r2,r3
0007a330: 3c038005 lui r3,0x8005
0007a334: 24637ef2 addiu r3,r3,0x7ef2			57ef2 unit ID?
0007a338: 00431021 addu r2,r2,r3
0007a33c: 00521021 addu r2,r2,r18
0007a340: 90510000 lbu r17,0x0000(r2)			load unit ID?
0007a344: 0c01a78e jal 0x00069e38
0007a348: 02202021 addu r4,r17,r0
0007a34c: 3c10800a lui r16,0x800a
0007a350: 9610f314 lhu r16,-0x0cec(r16)			load preferred job
0007a354: 90440002 lbu r4,0x0002(r2)			load job
0007a358: 0c01e608 jal 0x00079820				returns generic job ID
												special jobs or monsters = 15 or 16
0007a35c: 2610ffff addiu r16,r16,0xffff			preferred job - 1
0007a360: 16020005 bne r16,r2,0x0007a378		branch if job isn't preferred job
0007a364: 00131080 sll r2,r19,0x02
0007a368: 27a30010 addiu r3,r29,0x0010
0007a36c: 00431021 addu r2,r2,r3
0007a370: ac510000 sw r17,0x0000(r2)			store unit Id on the stack as a word
0007a374: 26730001 addiu r19,r19,0x0001
0007a378: 26520001 addiu r18,r18,0x0001
0007a37c: 0254102a slt r2,r18,r20
0007a380: 1440ffe6 bne r2,r0,0x0007a31c			do for all units on this proposition
0007a384: 00000000 nop

0007a388: 1260000f beq r19,r0,0x0007a3c8		branch if no preferred job units?
0007a38c: 00000000 nop
0007a390: 1a60004b blez r19,0x0007a4c0
0007a394: 00009021 addu r18,r0,r0
0007a398: 3c04800a lui r4,0x800a
0007a39c: 8c84f1ec lw r4,-0x0e14(r4)			load ??
0007a3a0: 27a30010 addiu r3,r29,0x0010
0007a3a4: 8c620000 lw r2,0x0000(r3)				load unit ID
0007a3a8: 00000000 nop
0007a3ac: 14440045 bne r2,r4,0x0007a4c4			jump to end if not equal
0007a3b0: 26520001 addiu r18,r18,0x0001
0007a3b4: 0253102a slt r2,r18,r19
0007a3b8: 1440fffa bne r2,r0,0x0007a3a4
0007a3bc: 24630004 addiu r3,r3,0x0004
0007a3c0: 0801e930 j 0x0007a4c0
0007a3c4: 00000000 nop

0007a3c8: 3c02800a lui r2,0x800a
0007a3cc: 9442f2ee lhu r2,-0x0d12(r2)
0007a3d0: 00000000 nop
0007a3d4: 2442ffff addiu r2,r2,0xffff
0007a3d8: 000218c0 sll r3,r2,0x03
0007a3dc: 00628021 addu r16,r3,r2
0007a3e0: 0274102a slt r2,r19,r20
0007a3e4: 1040002a beq r2,r0,0x0007a490
0007a3e8: 00009021 addu r18,r0,r0
0007a3ec: 3c15800a lui r21,0x800a
0007a3f0: 26b5f1f8 addiu r21,r21,0xf1f8
0007a3f4: 27b70010 addiu r23,r29,0x0010
0007a3f8: 8ea30000 lw r3,0x0000(r21)
0007a3fc: 00000000 nop
0007a400: 000310c0 sll r2,r3,0x03
0007a404: 00431021 addu r2,r2,r3
0007a408: 3c038005 lui r3,0x8005
0007a40c: 24637ef2 addiu r3,r3,0x7ef2
0007a410: 00431021 addu r2,r2,r3
0007a414: 00521021 addu r2,r2,r18
0007a418: 90510000 lbu r17,0x0000(r2)
0007a41c: 8ea2fff4 lw r2,-0x000c(r21)
0007a420: 00000000 nop
0007a424: 12220016 beq r17,r2,0x0007a480
0007a428: 00000000 nop
0007a42c: 0c01a78e jal 0x00069e38
0007a430: 02202021 addu r4,r17,r0
0007a434: 00402821 addu r5,r2,r0
0007a438: 00002021 addu r4,r0,r0
0007a43c: 00131080 sll r2,r19,0x02
0007a440: 00573021 addu r6,r2,r23
0007a444: 02041021 addu r2,r16,r4
0007a448: 02c21021 addu r2,r22,r2
0007a44c: 90430000 lbu r3,0x0000(r2)
0007a450: 90a20002 lbu r2,0x0002(r5)
0007a454: 00000000 nop
0007a458: 14620005 bne r3,r2,0x0007a470
0007a45c: 00000000 nop
0007a460: 26730001 addiu r19,r19,0x0001
0007a464: acd10000 sw r17,0x0000(r6)
0007a468: 0801e920 j 0x0007a480
0007a46c: acc40010 sw r4,0x0010(r6)

0007a470: 24840001 addiu r4,r4,0x0001
0007a474: 28820009 slti r2,r4,0x0009
0007a478: 1440fff3 bne r2,r0,0x0007a448
0007a47c: 02041021 addu r2,r16,r4
0007a480: 26520001 addiu r18,r18,0x0001
0007a484: 0254102a slt r2,r18,r20
0007a488: 1440ffdb bne r2,r0,0x0007a3f8
0007a48c: 00000000 nop
0007a490: 34020001 ori r2,r0,0x0001
0007a494: 1262000a beq r19,r2,0x0007a4c0
0007a498: 00000000 nop
0007a49c: 34020002 ori r2,r0,0x0002
0007a4a0: 1662000d bne r19,r2,0x0007a4d8
0007a4a4: 00001021 addu r2,r0,r0
0007a4a8: 8fa30020 lw r3,0x0020(r29)
0007a4ac: 8fa20024 lw r2,0x0024(r29)
0007a4b0: 00000000 nop
0007a4b4: 0043102a slt r2,r2,r3
0007a4b8: 14400004 bne r2,r0,0x0007a4cc
0007a4bc: 00000000 nop

0007a4c0: 8fa20010 lw r2,0x0010(r29)
0007a4c4: 0801e936 j 0x0007a4d8
0007a4c8: 24420001 addiu r2,r2,0x0001
0007a4cc: 8fa20014 lw r2,0x0014(r29)
0007a4d0: 00000000 nop
0007a4d4: 24420001 addiu r2,r2,0x0001
0007a4d8: 8fbf0058 lw r31,0x0058(r29)
0007a4dc: 8fb70054 lw r23,0x0054(r29)
0007a4e0: 8fb60050 lw r22,0x0050(r29)
0007a4e4: 8fb5004c lw r21,0x004c(r29)
0007a4e8: 8fb40048 lw r20,0x0048(r29)
0007a4ec: 8fb30044 lw r19,0x0044(r29)
0007a4f0: 8fb20040 lw r18,0x0040(r29)
0007a4f4: 8fb1003c lw r17,0x003c(r29)
0007a4f8: 8fb00038 lw r16,0x0038(r29)
0007a4fc: 27bd0060 addiu r29,r29,0x0060
0007a500: 03e00008 jr r31
0007a504: 00000000 nop