Skillset Display
Revision as of 14:45, 30 January 2024 by RetroTypes (talk | contribs)
Skillset Display Skillset Display
001228f0: 27bdffc0 addiu r29,r29,0xffc0 001228f4: afb20020 sw r18,0x0020(r29) 001228f8: 00c09021 addu r18,r6,r0 01 (cursor counter?) 001228fc: afb60030 sw r22,0x0030(r29) 00122900: 00e0b021 addu r22,r7,r0 R/S/M display pointer / stack 00122904: afb40028 sw r20,0x0028(r29) 00122908: 0080a021 addu r20,r4,r0 00 0012290c: afb30024 sw r19,0x0024(r29) 00122910: 8fb30050 lw r19,0x0050(r29) 00122914: 34020001 ori r2,r0,0x0001 00122918: afbf0038 sw r31,0x0038(r29) 0012291c: afb70034 sw r23,0x0034(r29) 00122920: afb5002c sw r21,0x002c(r29) 00122924: afb1001c sw r17,0x001c(r29) 00122928: 16620009 bne r19,r2,0x00122950 branch if learning/displaying jobs and abilities 0012292c: afb00018 sw r16,0x0018(r29) 00122930: 16400008 bne r18,r0,0x00122954 branch if learning/displaying jobs and abilities OR setting R/S/M 00122934: 00058400 sll r16,r5,0x10 job 00122938: 00042400 sll r4,r4,0x10 0012293c: 00042403 sra r4,r4,0x10 00122940: 0c0489e4 jal 0x00122790 get known skillsets/load to menu 00122944: 02c02821 addu r5,r22,r0 00122948: 08048afc j 0x00122bf0 Jump to end 0012294c: 00000000 nop If not setting 00122950: 00058400 sll r16,r5,0x10 00122954: 00108403 sra r16,r16,0x10 00122958: 0c0489db jal 0x0012276c get job data pointer 0012295c: 02002021 addu r4,r16,r0 00122960: 00408821 addu r17,r2,r0 00122964: 0c0488ee jal 0x001223b8 default to base job if not generic job 00122968: 02002021 addu r4,r16,r0 0012296c: 02202021 addu r4,r17,r0 r17 = skillset 00122970: 0c0488f9 jal 0x001223e4 get some skillset pointer (r2 = job ID that has the skillset) 00122974: 0040b821 addu r23,r2,r0 r2 = generic job # 00122978: 2403ffff addiu r3,r0,0xffff 0012297c: 1443000a bne r2,r3,0x001229a8 branch if job not found that matches skillset 00122980: 02202021 addu r4,r17,r0 r4 = skillset ID 00122984: 00141400 sll r2,r20,0x10 00122988: 00021383 sra r2,r2,0x0e 0012298c: 3c01801d lui r1,0x801d 00122990: 00220821 addu r1,r1,r2 00122994: 8c22d5ec lw r2,-0x2a14(r1) 00122998: 00000000 nop 0012299c: 9451005e lhu r17,0x005e(r2) default to primary skillset 001229a0: 00000000 nop 001229a4: 02202021 addu r4,r17,r0 001229a8: 0c01698e jal 0x0005a638 store skillset's abilities 001229ac: 3405000f ori r5,r0,0x000f 001229b0: 16400004 bne r18,r0,0x001229c4 branch if not active ability 001229b4: 00408021 addu r16,r2,r0 Active ability 001229b8: 34030001 ori r3,r0,0x0001 lower limit 001229bc: 08048a80 j 0x00122a00 001229c0: 340201a5 ori r2,r0,0x01a5 set upper limit 001229c4: 34020001 ori r2,r0,0x0001 001229c8: 16420004 bne r18,r2,0x001229dc branch if not = 1 001229cc: 34020002 ori r2,r0,0x0002 reaction 1 001229d0: 340301a6 ori r3,r0,0x01a6 001229d4: 08048a80 j 0x00122a00 001229d8: 340201c5 ori r2,r0,0x01c5 support 2 001229dc: 16420004 bne r18,r2,0x001229f0 branch if not 2 001229e0: 34020003 ori r2,r0,0x0003 001229e4: 340301c6 ori r3,r0,0x01c6 001229e8: 08048a80 j 0x00122a00 001229ec: 340201e5 ori r2,r0,0x01e5 movement 001229f0: 16420002 bne r18,r2,0x001229fc branch if not 3 001229f4: 34030001 ori r3,r0,0x0001 001229f8: 340301e6 ori r3,r0,0x01e6 001229fc: 340201fd ori r2,r0,0x01fd 00122a00: 00009021 addu r18,r0,r0 00122a04: 00603021 addu r6,r3,r0 00122a08: 00402821 addu r5,r2,r0 00122a0c: 02002021 addu r4,r16,r0 00122a10: 84830000 lh r3,0x0000(r4) load temp ability 00122a14: 00000000 nop 00122a18: 0066102a slt r2,r3,r6 set ability < lower ability limit (out of range) 00122a1c: 14400003 bne r2,r0,0x00122a2c branch if out of range 00122a20: 00a3102a slt r2,r5,r3 set if ability > upper limit (out of range) 00122a24: 10400002 beq r2,r0,0x00122a30 branch if not 00122a28: 00000000 nop 00122a2c: a4800000 sh r0,0x0000(r4) clear that ability? 00122a30: 26520001 addiu r18,r18,0x0001 00122a34: 2a420018 slti r2,r18,0x0018 perform for all abilities 00122a38: 1440fff5 bne r2,r0,0x00122a10 00122a3c: 24840002 addiu r4,r4,0x0002 00122a40: 00008821 addu r17,r0,r0 00122a44: 00009021 addu r18,r0,r0 00122a48: 00141400 sll r2,r20,0x10 ?? << 0x10 00122a4c: 3c03801d lui r3,0x801d 00122a50: 2463d5ec addiu r3,r3,0xd5ec 1cd5ec 00122a54: 00021383 sra r2,r2,0x0e ?? >> 0x0e 00122a58: 00431021 addu r2,r2,r3 00122a5c: 0040a821 addu r21,r2,r0 00122a60: 0200a021 addu r20,r16,r0 66204 - temp ability list 00122a64: 02c08021 addu r16,r22,r0 00122a68: 00172400 sll r4,r23,0x10 generic job #? 00122a6c: 00042403 sra r4,r4,0x10 00122a70: 00041040 sll r2,r4,0x01 job#*2 00122a74: 00442021 addu r4,r2,r4 job#*3 00122a78: 8ea30000 lw r3,0x0000(r21) load formation data 00122a7c: 2484007a addiu r4,r4,0x007a job*3 + 7a 00122a80: 00431021 addu r2,r2,r3 job#*2 + formation pointer 00122a84: 945700be lhu r23,0x00be(r2) load Current JP 00122a88: 0c04ac6d jal 0x0012b1b4 stored data pointer 00122a8c: 00832021 addu r4,r4,r3 Base Action Abilities pointer 00122a90: 8ea20000 lw r2,0x0000(r21) load formation data 00122a94: 00000000 nop 00122a98: 84440024 lh r4,0x0024(r2) load job 00122a9c: 0c0482e4 jal 0x00120b90 return 1 if zodiac beast/apanda/ultima demon 00122aa0: 00000000 nop 00122aa4: 1440000e bne r2,r0,0x00122ae0 special monster 00122aa8: 34030001 ori r3,r0,0x0001 set ability known if special monster 00122aac: 8ea20000 lw r2,0x0000(r21) 00122ab0: 00000000 nop 00122ab4: 8442003e lh r2,0x003e(r2) 00122ab8: 00000000 nop 00122abc: 10400005 beq r2,r0,0x00122ad4 branch if not ?? 00122ac0: 2a420003 slti r2,r18,0x0003 00122ac4: 10400044 beq r2,r0,0x00122bd8 jump to end if more than 3 abilities 00122ac8: 34020003 ori r2,r0,0x0003 00122acc: 08048ab8 j 0x00122ae0 skip job unlocked check/ 00122ad0: 00000000 nop 00122ad4: 0c04ac7b jal 0x0012b1ec job unlocked check? 00122ad8: 34040001 ori r4,r0,0x0001 00122adc: 00401821 addu r3,r2,r0 r3 = 1 if ability is unlocked 00122ae0: 86850000 lh r5,0x0000(r20) load temp ability 00122ae4: 00000000 nop 00122ae8: 10a00036 beq r5,r0,0x00122bc4 branch if attack 00122aec: 00a02021 addu r4,r5,r0 00122af0: 1660000f bne r19,r0,0x00122b30 00122af4: 34020001 ori r2,r0,0x0001 00122af8: 1460000b bne r3,r0,0x00122b28 branch if ability is known 00122afc: 000510c0 sll r2,r5,0x03 00122b00: 3c018006 lui r1,0x8006 00122b04: 00220821 addu r1,r1,r2 00122b08: 9022ebf3 lbu r2,-0x140d(r1) load learn on hit bytes 00122b0c: 00000000 nop 00122b10: 000211c2 srl r2,r2,0x07 00122b14: 14400003 bne r2,r0,0x00122b24 branch if learn with JP 00122b18: 00000000 nop 00122b1c: 08048aca j 0x00122b28 00122b20: 34844000 ori r4,r4,0x4000 set job unknown 00122b24: 34846000 ori r4,r4,0x6000 set ability learn on hit 00122b28: 08048aef j 0x00122bbc 00122b2c: a6040000 sh r4,0x0000(r16) store ability 00122b30: 16620005 bne r19,r2,0x00122b48 00122b34: 00000000 nop 00122b38: 10600022 beq r3,r0,0x00122bc4 branch if ability not known 00122b3c: 00000000 nop 00122b40: 08048aef j 0x00122bbc 00122b44: a6040000 sh r4,0x0000(r16) store ability ID 00122b48: 34020002 ori r2,r0,0x0002 00122b4c: 16620016 bne r19,r2,0x00122ba8 00122b50: 00000000 nop 00122b54: 14600011 bne r3,r0,0x00122b9c branch if ability is known 00122b58: 000518c0 sll r3,r5,0x03 check if have enough jp 00122b5c: 3c018006 lui r1,0x8006 00122b60: 00230821 addu r1,r1,r3 00122b64: 9022ebf3 lbu r2,-0x140d(r1) load learn on hit flag 00122b68: 00000000 nop 00122b6c: 000211c2 srl r2,r2,0x07 00122b70: 14400014 bne r2,r0,0x00122bc4 branch if learn with JP 00122b74: 00171400 sll r2,r23,0x10 JP << 10 00122b78: 3c018006 lui r1,0x8006 00122b7c: 00230821 addu r1,r1,r3 00122b80: 9423ebf0 lhu r3,-0x1410(r1) load JP cost 00122b84: 00021403 sra r2,r2,0x10 00122b88: 0043102a slt r2,r2,r3 set if jp < cost 00122b8c: 10400004 beq r2,r0,0x00122ba0 branch if having enough jp 00122b90: 00000000 nop 00122b94: 08048ae8 j 0x00122ba0 00122b98: 34844000 ori r4,r4,0x4000 store ability as unknown 00122b9c: 34841000 ori r4,r4,0x1000 add 0x1000 flag 00122ba0: 08048aef j 0x00122bbc 00122ba4: a6040000 sh r4,0x0000(r16) store ability ID as known? 00122ba8: 34020003 ori r2,r0,0x0003 00122bac: 16620005 bne r19,r2,0x00122bc4 00122bb0: 00000000 nop 00122bb4: 14600003 bne r3,r0,0x00122bc4 branch if ability is known 00122bb8: 00000000 nop 00122bbc: 26100002 addiu r16,r16,0x0002 increment ability list 00122bc0: 26310001 addiu r17,r17,0x0001 skillset++? 00122bc4: 26520001 addiu r18,r18,0x0001 ability # ++ 00122bc8: 2a420018 slti r2,r18,0x0018 do for 0x18 abilities 00122bcc: 1440ffb0 bne r2,r0,0x00122a90 do for all abilities 00122bd0: 26940002 addiu r20,r20,0x0002 increment temp ability list 00122bd4: 34020003 ori r2,r0,0x0003 00122bd8: 12620004 beq r19,r2,0x00122bec 00122bdc: 00111040 sll r2,r17,0x01 00122be0: 00561021 addu r2,r2,r22 00122be4: 2403ffff addiu r3,r0,0xffff 00122be8: a4430000 sh r3,0x0000(r2) store end of ability list 00122bec: 02201021 addu r2,r17,r0 00122bf0: 8fbf0038 lw r31,0x0038(r29) 00122bf4: 8fb70034 lw r23,0x0034(r29) 00122bf8: 8fb60030 lw r22,0x0030(r29) 00122bfc: 8fb5002c lw r21,0x002c(r29) 00122c00: 8fb40028 lw r20,0x0028(r29) 00122c04: 8fb30024 lw r19,0x0024(r29) 00122c08: 8fb20020 lw r18,0x0020(r29) 00122c0c: 8fb1001c lw r17,0x001c(r29) 00122c10: 8fb00018 lw r16,0x0018(r29) 00122c14: 27bd0040 addiu r29,r29,0x0040 00122c18: 03e00008 jr r31 00122c1c: 00000000 nop