BUNIT.OUT Copy Unit Data to Status Billboard

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
#See also:
#ATTACK.OUT Copy Unit Data to Status Billboard
#BATTLE.BIN Copy Unit Data to Status Billboard
#WORLD.BIN Copy Unit Data to Status Billboard
#WORLD.BIN Load party data into Formation screen data
001c6854: 27bdffd0 addiu r29,r29,-0x0030               #
001c6858: afb10014 sw r17,0x0014(r29)                  #
001c685c: 00808821 addu r17,r4,r0                      #r17 = r4 (Unit's Data Pointer)
001c6860: afb20018 sw r18,0x0018(r29)
001c6864: 00a09021 addu r18,r5,r0
001c6868: 02402021 addu r4,r18,r0
001c686c: 00002821 addu r5,r0,r0
001c6870: 3406010c ori r6,r0,0x010c
001c6874: afbf0028 sw r31,0x0028(r29)
001c6878: afb50024 sw r21,0x0024(r29)
001c687c: afb40020 sw r20,0x0020(r29)
001c6880: afb3001c sw r19,0x001c(r29)
001c6884: 0c0088bf jal 0x000222fc                      #0002228c - 00022b94 KERNEL memset
001c6888: afb00010 sw r16,0x0010(r29)
001c688c: 92220022 lbu r2,0x0022(r17)
001c6890: 00000000 nop
001c6894: 2c420064 sltiu r2,r2,0x0064
001c6898: 10400002 beq r2,r0,0x001c68a4
001c689c: 34030063 ori r3,r0,0x0063
001c68a0: 92230022 lbu r3,0x0022(r17)
001c68a4: 00000000 nop
001c68a8: a6430000 sh r3,0x0000(r18)
001c68ac: 922201ba lbu r2,0x01ba(r17)
001c68b0: 00000000 nop
001c68b4: 30420030 andi r2,r2,0x0030
001c68b8: 10400002 beq r2,r0,0x001c68c4
001c68bc: 34020001 ori r2,r0,0x0001
001c68c0: a6420002 sh r2,0x0002(r18)
001c68c4: 922201ba lbu r2,0x01ba(r17)
001c68c8: 00000000 nop
001c68cc: 30420038 andi r2,r2,0x0038
001c68d0: 14400002 bne r2,r0,0x001c68dc
001c68d4: 34020002 ori r2,r0,0x0002
001c68d8: a6420002 sh r2,0x0002(r18)
001c68dc: 922201b8 lbu r2,0x01b8(r17)
001c68e0: 00000000 nop
001c68e4: 10400003 beq r2,r0,0x001c68f4
001c68e8: 00000000 nop
001c68ec: 34020003 ori r2,r0,0x0003
001c68f0: a6420002 sh r2,0x0002(r18)
001c68f4: 0c060d2f jal 0x001834bc                      #Check some list for Unit Battle ID
001c68f8: 02202021 addu r4,r17,r0
001c68fc: 00408021 addu r16,r2,r0
001c6900: 06000002 bltz r16,0x001c690c
001c6904: 2402ffff addiu r2,r0,-0x0001
001c6908: 26020001 addiu r2,r16,0x0001
001c690c: a6420004 sh r2,0x0004(r18)
001c6910: 92220021 lbu r2,0x0021(r17)
001c6914: 00000000 nop
001c6918: 2c420064 sltiu r2,r2,0x0064
001c691c: 10400002 beq r2,r0,0x001c6928
001c6920: 34030063 ori r3,r0,0x0063
001c6924: 92230021 lbu r3,0x0021(r17)
001c6928: 00000000 nop
001c692c: a6430008 sh r3,0x0008(r18)
001c6930: 92220001 lbu r2,0x0001(r17)
001c6934: 00000000 nop
001c6938: a642000a sh r2,0x000a(r18)
001c693c: 96220028 lhu r2,0x0028(r17)
001c6940: 00000000 nop
001c6944: 2c4203e8 sltiu r2,r2,0x03e8
001c6948: 10400002 beq r2,r0,0x001c6954
001c694c: 340303e7 ori r3,r0,0x03e7
001c6950: 96230028 lhu r3,0x0028(r17)
001c6954: 00000000 nop
001c6958: a643000c sh r3,0x000c(r18)
001c695c: 9622002a lhu r2,0x002a(r17)
001c6960: 00000000 nop
001c6964: 2c4203e8 sltiu r2,r2,0x03e8
001c6968: 10400002 beq r2,r0,0x001c6974
001c696c: 340303e7 ori r3,r0,0x03e7
001c6970: 9623002a lhu r3,0x002a(r17)
001c6974: 00000000 nop
001c6978: a6430010 sh r3,0x0010(r18)
001c697c: 9622002c lhu r2,0x002c(r17)
001c6980: 00000000 nop
001c6984: 2c4203e8 sltiu r2,r2,0x03e8
001c6988: 10400002 beq r2,r0,0x001c6994
001c698c: 340303e7 ori r3,r0,0x03e7
001c6990: 9623002c lhu r3,0x002c(r17)
001c6994: 00000000 nop
001c6998: a6430012 sh r3,0x0012(r18)
001c699c: 9622002e lhu r2,0x002e(r17)
001c69a0: 00000000 nop
001c69a4: 2c4203e8 sltiu r2,r2,0x03e8
001c69a8: 10400002 beq r2,r0,0x001c69b4
001c69ac: 340303e7 ori r3,r0,0x03e7
001c69b0: 9623002e lhu r3,0x002e(r17)
001c69b4: 00000000 nop
001c69b8: a6430016 sh r3,0x0016(r18)
001c69bc: 92230186 lbu r3,0x0186(r17)
001c69c0: 34020001 ori r2,r0,0x0001
001c69c4: 10620002 beq r3,r2,0x001c69d0
001c69c8: 34040064 ori r4,r0,0x0064
001c69cc: 92240039 lbu r4,0x0039(r17)
001c69d0: 00000000 nop
001c69d4: 28820065 slti r2,r4,0x0065
001c69d8: 14400003 bne r2,r0,0x001c69e8
001c69dc: a6440018 sh r4,0x0018(r18)
001c69e0: 34020064 ori r2,r0,0x0064
001c69e4: a6420018 sh r2,0x0018(r18)
001c69e8: 34020064 ori r2,r0,0x0064
001c69ec: a642001c sh r2,0x001c(r18)
001c69f0: 92220002 lbu r2,0x0002(r17)
001c69f4: 00000000 nop
001c69f8: a642001e sh r2,0x001e(r18)
001c69fc: 92220001 lbu r2,0x0001(r17)
001c6a00: 00000000 nop
001c6a04: a6420022 sh r2,0x0022(r18)
001c6a08: 92220003 lbu r2,0x0003(r17)
001c6a0c: 00000000 nop
001c6a10: a6420024 sh r2,0x0024(r18)
001c6a14: 92220024 lbu r2,0x0024(r17)
001c6a18: 00000000 nop
001c6a1c: a6420026 sh r2,0x0026(r18)
001c6a20: 92220026 lbu r2,0x0026(r17)
001c6a24: 00000000 nop
001c6a28: a6420028 sh r2,0x0028(r18)
001c6a2c: 96220008 lhu r2,0x0008(r17)
001c6a30: 00000000 nop
001c6a34: 00021302 srl r2,r2,0x0c
001c6a38: a642002a sh r2,0x002a(r18)
001c6a3c: 92220001 lbu r2,0x0001(r17)
001c6a40: 00000000 nop
001c6a44: a642002c sh r2,0x002c(r18)
001c6a48: 9222003a lbu r2,0x003a(r17)
001c6a4c: 00000000 nop
001c6a50: a6420030 sh r2,0x0030(r18)
001c6a54: 92220038 lbu r2,0x0038(r17)
001c6a58: 00000000 nop
001c6a5c: a6420032 sh r2,0x0032(r18)
001c6a60: 9222003b lbu r2,0x003b(r17)
001c6a64: 00000000 nop
001c6a68: a6420034 sh r2,0x0034(r18)
001c6a6c: 9222003c lbu r2,0x003c(r17)
001c6a70: 00000000 nop
001c6a74: a6420036 sh r2,0x0036(r18)
001c6a78: 9222003d lbu r2,0x003d(r17)
001c6a7c: 00000000 nop
001c6a80: a6420038 sh r2,0x0038(r18)
001c6a84: 9222003e lbu r2,0x003e(r17)
001c6a88: 00000000 nop
001c6a8c: a642003a sh r2,0x003a(r18)
001c6a90: 9222003f lbu r2,0x003f(r17)
001c6a94: 00000000 nop
001c6a98: a642003c sh r2,0x003c(r18)
001c6a9c: 92220012 lbu r2,0x0012(r17)
001c6aa0: 00000000 nop
001c6aa4: 24420050 addiu r2,r2,0x0050
001c6aa8: 304200ff andi r2,r2,0x00ff
001c6aac: 2c500030 sltiu r16,r2,0x0030
001c6ab0: a650003e sh r16,0x003e(r18)
001c6ab4: 92220036 lbu r2,0x0036(r17)
001c6ab8: 00000000 nop
001c6abc: a6420042 sh r2,0x0042(r18)
001c6ac0: 92220043 lbu r2,0x0043(r17)
001c6ac4: 00000000 nop
001c6ac8: a6420044 sh r2,0x0044(r18)
001c6acc: 92230041 lbu r3,0x0041(r17)
001c6ad0: 92240042 lbu r4,0x0042(r17)
001c6ad4: 00000000 nop
001c6ad8: 0064102b sltu r2,r3,r4
001c6adc: 10400002 beq r2,r0,0x001c6ae8
001c6ae0: 00000000 nop
001c6ae4: 00801821 addu r3,r4,r0
001c6ae8: a6430046 sh r3,0x0046(r18)
001c6aec: 92220040 lbu r2,0x0040(r17)
001c6af0: 00000000 nop
001c6af4: a6420048 sh r2,0x0048(r18)
001c6af8: 92220037 lbu r2,0x0037(r17)
001c6afc: a640004e sh r0,0x004e(r18)               #Store 0 M-C-Ev to Billboard
001c6b00: a642004c sh r2,0x004c(r18)
001c6b04: 92230045 lbu r3,0x0045(r17)
001c6b08: 92240046 lbu r4,0x0046(r17)
001c6b0c: 00000000 nop
001c6b10: 0064102b sltu r2,r3,r4
001c6b14: 10400002 beq r2,r0,0x001c6b20
001c6b18: 00000000 nop
001c6b1c: 00801821 addu r3,r4,r0
001c6b20: a6430050 sh r3,0x0050(r18)
001c6b24: 92220044 lbu r2,0x0044(r17)
001c6b28: 8643003e lh r3,0x003e(r18)               #Load Generic Monster flag from Billboard
001c6b2c: 00000000 nop                             #
001c6b30: 10600023 beq r3,r0,0x001c6bc0            #If Generic Monster    /Else Branch
001c6b34: a6420052 sh r2,0x0052(r18)               #
001c6b38: 92240012 lbu r4,0x0012(r17)                  #r4  = Unit's Primary Skillset
001c6b3c: 34050001 ori r5,r0,0x0001                    #r5  = 1
001c6b40: 00008021 addu r16,r0,r0                      #r16 = 0 (counter)
001c6b44: 0c01698e jal 0x0005a638                      #Store Skillset's Abilities
001c6b48: 0240a021 addu r20,r18,r0                     #r20 = Billboard pointer?
001c6b4c: 0040a821 addu r21,r2,r0                      #r21 = Temporary Ability List Pointer
001c6b50: 02a09821 addu r19,r21,r0                     #r19 = Temporary Ability List Pointer
                                                       #Loop Start
001c6b54: 34020003 ori r2,r0,0x0003                        #r2  = 3
001c6b58: 16020009 bne r16,r2,0x001c6b80                   #If counter = 3    /Else Branch
001c6b5c: 00001821 addu r3,r0,r0                           #r3  = 0 (used to skip saving to Billboard if unchanged)
001c6b60: 86a20006 lh r2,0x0006(r21)                           #Load 4th Ability ID in Temporary Ability List Pointer
001c6b64: 00000000 nop                                         #
001c6b68: 1040000a beq r2,r0,0x001c6b94                        #If not null    /Else Branch
001c6b6c: 00000000 nop                                         #
001c6b70: 0c06090c jal 0x00182430                                  #Monster Skill check prep
001c6b74: 02202021 addu r4,r17,r0                                  #r4  = r17 (Unit's Data Pointer)
001c6b78: 08071ae5 j 0x001c6b94                                    #Jump
001c6b7c: 0002182b sltu r3,r0,r2                                   #r3  = 1 if Monster Skill active
001c6b80: 86620000 lh r2,0x0000(r19)                       #Load Ability ID in Temporary Ability List Pointer
001c6b84: 00000000 nop                                     #
001c6b88: 10400002 beq r2,r0,0x001c6b94                    #If not null    /Else Branch
001c6b8c: 00000000 nop                                     #
001c6b90: 34030001 ori r3,r0,0x0001                            #r3  = 1
001c6b94: 10600005 beq r3,r0,0x001c6bac                    #If r3 ≠ 0    /Else Branch
001c6b98: 26100001 addiu r16,r16,0x0001                    #r16 counter++
001c6b9c: 96620000 lhu r2,0x0000(r19)                          #Load Ability ID in Temporary Ability List Pointer
001c6ba0: 00000000 nop                                         #
001c6ba4: a682005e sh r2,0x005e(r20)                           #Store Ability ID to Billboard
001c6ba8: 26940002 addiu r20,r20,0x0002                        #Increment Billboard pointer to next slot?
001c6bac: 2a020004 slti r2,r16,0x0004                      #Compare r16 counter to 4
001c6bb0: 1440ffe8 bne r2,r0,0x001c6b54                    #Loop 3 times
001c6bb4: 26730002 addiu r19,r19,0x0002                    #Increment Temporary Ability List Pointer to next Ability
001c6bb8: 08071b25 j 0x001c6c94                        #Jump past non-Generic-Monster section below   
001c6bbc: 00000000 nop                                 #
001c6bc0: 9223001d lbu r3,0x001d(r17)
001c6bc4: 340200ff ori r2,r0,0x00ff
001c6bc8: 10620004 beq r3,r2,0x001c6bdc
001c6bcc: 00000000 nop
001c6bd0: 9222001d lbu r2,0x001d(r17)
001c6bd4: 08071afa j 0x001c6be8
001c6bd8: a6420054 sh r2,0x0054(r18)
001c6bdc: 9222001e lbu r2,0x001e(r17)
001c6be0: 00000000 nop
001c6be4: a6420054 sh r2,0x0054(r18)
001c6be8: 9223001f lbu r3,0x001f(r17)
001c6bec: 340200ff ori r2,r0,0x00ff
001c6bf0: 10620004 beq r3,r2,0x001c6c04
001c6bf4: 00000000 nop
001c6bf8: 9222001f lbu r2,0x001f(r17)
001c6bfc: 08071b04 j 0x001c6c10
001c6c00: a6420056 sh r2,0x0056(r18)
001c6c04: 92220020 lbu r2,0x0020(r17)
001c6c08: 00000000 nop
001c6c0c: a6420056 sh r2,0x0056(r18)
001c6c10: 9222001a lbu r2,0x001a(r17)
001c6c14: 00000000 nop
001c6c18: a6420058 sh r2,0x0058(r18)
001c6c1c: 9222001b lbu r2,0x001b(r17)
001c6c20: 00008021 addu r16,r0,r0
001c6c24: a642005a sh r2,0x005a(r18)
001c6c28: 9222001c lbu r2,0x001c(r17)
001c6c2c: 02401821 addu r3,r18,r0
001c6c30: a642005c sh r2,0x005c(r18)
001c6c34: 84620054 lh r2,0x0054(r3)
001c6c38: 00000000 nop
001c6c3c: 284200fe slti r2,r2,0x00fe
001c6c40: 14400002 bne r2,r0,0x001c6c4c
001c6c44: 26100001 addiu r16,r16,0x0001
001c6c48: a4600054 sh r0,0x0054(r3)
001c6c4c: 2a020005 slti r2,r16,0x0005
001c6c50: 1440fff8 bne r2,r0,0x001c6c34
001c6c54: 24630002 addiu r3,r3,0x0002
001c6c58: 92220012 lbu r2,0x0012(r17)
001c6c5c: 00000000 nop
001c6c60: a642005e sh r2,0x005e(r18)
001c6c64: 92220013 lbu r2,0x0013(r17)
001c6c68: 00000000 nop
001c6c6c: a6420060 sh r2,0x0060(r18)
001c6c70: 96220014 lhu r2,0x0014(r17)
001c6c74: 00000000 nop
001c6c78: a6420062 sh r2,0x0062(r18)
001c6c7c: 96220016 lhu r2,0x0016(r17)
001c6c80: 00000000 nop
001c6c84: a6420064 sh r2,0x0064(r18)
001c6c88: 96220018 lhu r2,0x0018(r17)
001c6c8c: 00000000 nop
001c6c90: a6420066 sh r2,0x0066(r18)
001c6c94: 92240001 lbu r4,0x0001(r17)
001c6c98: 0c023388 jal 0x0008ce20                  #0008ce20 - 0008ce74
001c6c9c: 00000000 nop
001c6ca0: a2420071 sb r2,0x0071(r18)
001c6ca4: 922201ba lbu r2,0x01ba(r17)
001c6ca8: 00000000 nop
001c6cac: a2420072 sb r2,0x0072(r18)
001c6cb0: 92220182 lbu r2,0x0182(r17)
001c6cb4: 00000000 nop
001c6cb8: a2420073 sb r2,0x0073(r18)
001c6cbc: 92250091 lbu r5,0x0091(r17)
001c6cc0: 26440054 addiu r4,r18,0x0054
001c6cc4: 0c0719e8 jal 0x001c67a0                  #BUNIT.OUT 001c67a0 - 001c6830
001c6cc8: 30a50002 andi r5,r5,0x0002
001c6ccc: a6420040 sh r2,0x0040(r18)
001c6cd0: 92220006 lbu r2,0x0006(r17)
001c6cd4: 00000000 nop
001c6cd8: a2420070 sb r2,0x0070(r18)
001c6cdc: 92220000 lbu r2,0x0000(r17)
001c6ce0: 00000000 nop
001c6ce4: a2420074 sb r2,0x0074(r18)
001c6ce8: 92240003 lbu r4,0x0003(r17)
001c6cec: 0c071a0d jal 0x001c6834                  #BUNIT.OUT Special Monster check
001c6cf0: 00000000 nop
001c6cf4: 14400009 bne r2,r0,0x001c6d1c
001c6cf8: 26240096 addiu r4,r17,0x0096
001c6cfc: 8642003e lh r2,0x003e(r18)
001c6d00: 00000000 nop
001c6d04: 14400006 bne r2,r0,0x001c6d20
001c6d08: 26450075 addiu r5,r18,0x0075
001c6d0c: 86430002 lh r3,0x0002(r18)
001c6d10: 34020001 ori r2,r0,0x0001
001c6d14: 14620006 bne r3,r2,0x001c6d30
001c6d18: 00000000 nop
001c6d1c: 26450075 addiu r5,r18,0x0075
001c6d20: 0c0088b7 jal 0x000222dc                  #0002228c - 00022b94 KERNEL bcopy
001c6d24: 34060003 ori r6,r0,0x0003
001c6d28: 08071b57 j 0x001c6d5c
001c6d2c: 26240099 addiu r4,r17,0x0099
001c6d30: 92250006 lbu r5,0x0006(r17)
001c6d34: 262400d2 addiu r4,r17,0x00d2
001c6d38: 0c017705 jal 0x0005dc14                  #Calculate Unlocked Jobs
001c6d3c: 30a50080 andi r5,r5,0x0080
001c6d40: 00408021 addu r16,r2,r0
001c6d44: 00101403 sra r2,r16,0x10
001c6d48: a2420075 sb r2,0x0075(r18)
001c6d4c: 00101203 sra r2,r16,0x08
001c6d50: a2420076 sb r2,0x0076(r18)
001c6d54: a2500077 sb r16,0x0077(r18)
001c6d58: 26240099 addiu r4,r17,0x0099
001c6d5c: 26450078 addiu r5,r18,0x0078
001c6d60: 0c0088b7 jal 0x000222dc                  #0002228c - 00022b94 KERNEL bcopy
001c6d64: 34060039 ori r6,r0,0x0039
001c6d68: 262400d2 addiu r4,r17,0x00d2
001c6d6c: 264500b1 addiu r5,r18,0x00b1
001c6d70: 0c0088b7 jal 0x000222dc                  #0002228c - 00022b94 KERNEL bcopy
001c6d74: 3406000a ori r6,r0,0x000a
001c6d78: 262400dc addiu r4,r17,0x00dc
001c6d7c: 264500bc addiu r5,r18,0x00bc
001c6d80: 0c0088b7 jal 0x000222dc                  #0002228c - 00022b94 KERNEL bcopy
001c6d84: 34060028 ori r6,r0,0x0028
001c6d88: 26240104 addiu r4,r17,0x0104
001c6d8c: 264500e4 addiu r5,r18,0x00e4
001c6d90: 0c0088b7 jal 0x000222dc                  #0002228c - 00022b94 KERNEL bcopy
001c6d94: 34060028 ori r6,r0,0x0028
001c6d98: 00008021 addu r16,r0,r0
001c6d9c: 3403270f ori r3,r0,0x270f
001c6da0: 02402021 addu r4,r18,r0
001c6da4: 948200bc lhu r2,0x00bc(r4)
001c6da8: 00000000 nop
001c6dac: 2c422710 sltiu r2,r2,0x2710
001c6db0: 14400002 bne r2,r0,0x001c6dbc
001c6db4: 00000000 nop
001c6db8: a48300bc sh r3,0x00bc(r4)
001c6dbc: 948200e4 lhu r2,0x00e4(r4)
001c6dc0: 00000000 nop
001c6dc4: 2c422710 sltiu r2,r2,0x2710
001c6dc8: 14400002 bne r2,r0,0x001c6dd4
001c6dcc: 26100001 addiu r16,r16,0x0001
001c6dd0: a48300e4 sh r3,0x00e4(r4)
001c6dd4: 2a020014 slti r2,r16,0x0014
001c6dd8: 1440fff2 bne r2,r0,0x001c6da4
001c6ddc: 24840002 addiu r4,r4,0x0002
001c6de0: 8fbf0028 lw r31,0x0028(r29)
001c6de4: 8fb50024 lw r21,0x0024(r29)
001c6de8: 8fb40020 lw r20,0x0020(r29)
001c6dec: 8fb3001c lw r19,0x001c(r29)
001c6df0: 8fb20018 lw r18,0x0018(r29)
001c6df4: 8fb10014 lw r17,0x0014(r29)
001c6df8: 8fb00010 lw r16,0x0010(r29)
001c6dfc: 27bd0030 addiu r29,r29,0x0030
001c6e00: 03e00008 jr r31
001c6e04: 00000000 nop