Big ENTD unit loading routine
Jump to navigation
Jump to search
0017f8a0: 27bdff80 addiu r29,r29,0xff80 0017f8a4: 340800fe ori r8,r0,0x00fe 0017f8a8: afb00058 sw r16,0x0058(r29) 0017f8ac: afbf007c sw r31,0x007c(r29) 0017f8b0: afbe0078 sw r30,0x0078(r29) 0017f8b4: afb70074 sw r23,0x0074(r29) 0017f8b8: afb60070 sw r22,0x0070(r29) 0017f8bc: afb5006c sw r21,0x006c(r29) 0017f8c0: afb40068 sw r20,0x0068(r29) 0017f8c4: afb30064 sw r19,0x0064(r29) 0017f8c8: afb20060 sw r18,0x0060(r29) 0017f8cc: afb1005c sw r17,0x005c(r29) 0017f8d0: afa00040 sw r0,0x0040(r29) 0017f8d4: afa00048 sw r0,0x0048(r29) 0017f8d8: a3a80050 sb r8,0x0050(r29) 0017f8dc: 3c018019 lui r1,0x8019 0017f8e0: a0203898 sb r0,0x3898(r1) 0017f8e4: 3c018019 lui r1,0x8019 0017f8e8: a4203844 sh r0,0x3844(r1) 0017f8ec: 3c018019 lui r1,0x8019 0017f8f0: a0203920 sb r0,0x3920(r1) 0017f8f4: 0c0172f4 jal 0x0005cbd0 Calculate highest party level 0017f8f8: 00808021 addu r16,r4,r0 r4 is return value from 0x42880 routine: ENTD pointer? 0017f8fc: 0c04ed64 jal 0x0013b590 ?? 0017f900: 34040039 ori r4,r0,0x0039 0017f904: afa20030 sw r2,0x0030(r29) 0017f908: 2842000a slti r2,r2,0x000a 0017f90c: 10400004 beq r2,r0,0x0017f920 0017f910: 34020009 ori r2,r0,0x0009 0017f914: 8fa80030 lw r8,0x0030(r29) 0017f918: 0805fe49 j 0x0017f924 0017f91c: 00481023 subu r2,r2,r8 0017f920: 00001021 addu r2,r0,r0 0017f924: afa20030 sw r2,0x0030(r29) 0017f928: 24480007 addiu r8,r2,0x0007 0017f92c: 0000b021 addu r22,r0,r0 0017f930: 340400ff ori r4,r0,0x00ff 0017f934: 00002821 addu r5,r0,r0 0017f938: 00003021 addu r6,r0,r0 0017f93c: 0c05fefb jal 0x0017fbec ??? 0017f940: afa80038 sw r8,0x0038(r29) 0017f944: 00009021 addu r18,r0,r0 0017f948: 0200b821 addu r23,r16,r0 0017f94c: 0000f021 addu r30,r0,r0 0017f950: 3c028019 lui r2,0x8019 0017f954: 244208cc addiu r2,r2,0x08cc 0017f958: 03c28021 addu r16,r30,r2 0017f95c: a212018a sb r18,0x018a(r16) Store ENTD ID = 0 0017f960: 3c018006 lui r1,0x8006 0017f964: ac376238 sw r23,0x6238(r1) Store Current ENTD Pointer 0017f968: 92e20000 lbu r2,0x0000(r23) 0017f96c: 00000000 nop 0017f970: 14400005 bne r2,r0,0x0017f988 branch if ENTD != 0 (same unit?) 0017f974: 02002021 addu r4,r16,r0 0017f978: 340800ff ori r8,r0,0x00ff 0017f97c: a2080001 sb r8,0x0001(r16) store unit ID = 0xff 0017f980: 0805fee9 j 0x0017fba4 0017f984: a2080183 sb r8,0x0183(r16) store unit cannot exist 0017f988: 00003021 addu r6,r0,r0 0017f98c: 34020001 ori r2,r0,0x0001 0017f990: a2120001 sb r18,0x0001(r16) store unit ID = 0? 0017f994: a2020183 sb r2,0x0183(r16) store unit exists 0017f998: 3c058006 lui r5,0x8006 0017f99c: 8ca56238 lw r5,0x6238(r5) load Current ENTD Pointer 0017f9a0: 0c016a6d jal 0x0005a9b4 Unit Battle Initialization 0017f9a4: 00003821 addu r7,r0,r0 0017f9a8: 10400004 beq r2,r0,0x0017f9bc 0017f9ac: 02002021 addu r4,r16,r0 0017f9b0: 0c017a3a jal 0x0005e8e8 xfer r4 to r5, r4 = 0x03 0017f9b4: 26440258 addiu r4,r18,0x0258 0017f9b8: 02002021 addu r4,r16,r0 0017f9bc: 0c017822 jal 0x0005e088 Calculate unit palette/portrait 0017f9c0: 27a50028 addiu r5,r29,0x0028 0017f9c4: 02002021 addu r4,r16,r0 0017f9c8: 00002821 addu r5,r0,r0 0017f9cc: 0c0177f5 jal 0x0005dfd4 Minimum SP Capping/War Trophy Nulling/Status Initialization 0017f9d0: 0040a821 addu r21,r2,r0 0017f9d4: 3c028006 lui r2,0x8006 0017f9d8: 8c426238 lw r2,0x6238(r2) load Current ENTD Pointer 0017f9dc: 00000000 nop 0017f9e0: 90530020 lbu r19,0x0020(r2) Unit ID from ENTD 0017f9e4: 340800ff ori r8,r0,0x00ff 0017f9e8: 16680007 bne r19,r8,0x0017fa08 Branch if Unit ID is not 0xFF 0017f9ec: 00000000 nop 0017f9f0: 93a20050 lbu r2,0x0050(r29) 0017f9f4: 00000000 nop 0017f9f8: 00404021 addu r8,r2,r0 0017f9fc: 2508ffff addiu r8,r8,0xffff 0017fa00: 305300ff andi r19,r2,0x00ff r19 = 0xFF (new Unit ID) 0017fa04: a3a80050 sb r8,0x0050(r29) 0017fa08: 92020005 lbu r2,0x0005(r16) load ENTD flags 0017fa0c: 00000000 nop 0017fa10: 305400c0 andi r20,r2,0x00c0 0017fa14: 328300ff andi r3,r20,0x00ff 0017fa18: 10600009 beq r3,r0,0x0017fa40 branch if not randomly/always present 0017fa1c: a2130161 sb r19,0x0161(r16) store Battle Stats unit ID 0017fa20: 34020040 ori r2,r0,0x0040 0017fa24: 1462000f bne r3,r2,0x0017fa64 branch if not randomly present 0017fa28: 00000000 nop 0017fa2c: 0c0088c3 jal 0x0002230c # rand() 0017fa30: 00000000 nop 0017fa34: 30420001 andi r2,r2,0x0001 0017fa38: 1040000a beq r2,r0,0x0017fa64 # if ((rand() % 2) != 0) { // 50% random chancebranch if branch if unit can exist?0017fa3c: 00000000 nop 0017fa40: 340200ff ori r2,r0,0x00ff 0017fa44: a2020001 sb r2,0x0001(r16) store unit ID = 0xff 0017fa48: a2000183 sb r0,0x0183(r16) store unit doesn't exist (but can?) 0017fa4c: 3c058006 lui r5,0x8006 0017fa50: 8ca56238 lw r5,0x6238(r5) 0017fa54: 0c01791e jal 0x0005e478 Initialize Unit's X/Y+Facing/Battle Rewards 0017fa58: 02002021 addu r4,r16,r0 0017fa5c: 0805feea j 0x0017fba8 jump to check next unit 0017fa60: 26f70028 addiu r23,r23,0x0028 0017fa64: 3c058006 lui r5,0x8006 # } 0017fa68: 8ca56238 lw r5,0x6238(r5) 0017fa6c: 0c01791e jal 0x0005e478 Initialize Unit's X/Y+Facing/Battle Rewards 0017fa70: 02002021 addu r4,r16,r0 0017fa74: 0c05fdb1 jal 0x0017f6c4 0017fa78: 02402021 addu r4,r18,r0 0017fa7c: 10400007 beq r2,r0,0x0017fa9c 0017fa80: 340800ff ori r8,r0,0x00ff 0017fa84: 0c017a3a jal 0x0005e8e8 xfer r4 to r5, r4 = 0x03 0017fa88: 2644012c addiu r4,r18,0x012c 0017fa8c: 340200ff ori r2,r0,0x00ff 0017fa90: a2020001 sb r2,0x0001(r16) store Unit ID = 0xff 0017fa94: 0805fee9 j 0x0017fba4 0017fa98: a2020183 sb r2,0x0183(r16) store unit cannot exist 0017fa9c: 92020001 lbu r2,0x0001(r16) load unit ID 0017faa0: 00000000 nop 0017faa4: 1048003f beq r2,r8,0x0017fba4 branch if unit doesn't exist? 0017faa8: 02402021 addu r4,r18,r0 0017faac: 8fa60030 lw r6,0x0030(r29) 0017fab0: 0c05fefb jal 0x0017fbec ??? 0017fab4: 32a500ff andi r5,r21,0x00ff 0017fab8: 1040000c beq r2,r0,0x0017faec 0017fabc: 340200ff ori r2,r0,0x00ff 0017fac0: a2020001 sb r2,0x0001(r16) unit ID = 0xff 0017fac4: a2000183 sb r0,0x0183(r16) unit doesn't exist (but can) 0017fac8: 8fa80040 lw r8,0x0040(r29) 0017facc: 00000000 nop 0017fad0: 15000034 bne r8,r0,0x0017fba4 0017fad4: 00000000 nop 0017fad8: 0c017a3a jal 0x0005e8e8 xfer r4 to r5, r4 = 0x03 0017fadc: 26440064 addiu r4,r18,0x0064 0017fae0: 34080001 ori r8,r0,0x0001 0017fae4: 0805fee9 j 0x0017fba4 0017fae8: afa80040 sw r8,0x0040(r29) 0017faec: 328300ff andi r3,r20,0x00ff 0017faf0: 340200c0 ori r2,r0,0x00c0 0017faf4: 10620012 beq r3,r2,0x0017fb40 always/random present check? 0017faf8: 34110001 ori r17,r0,0x0001 0017fafc: 8fa80038 lw r8,0x0038(r29) 0017fb00: 00000000 nop 0017fb04: 02c8102a slt r2,r22,r8 0017fb08: 14400011 bne r2,r0,0x0017fb50 0017fb0c: 00008821 addu r17,r0,r0 0017fb10: 340200ff ori r2,r0,0x00ff 0017fb14: a2020001 sb r2,0x0001(r16) store unit ID = 0xff 0017fb18: a2020183 sb r2,0x0183(r16) store unit cannot exist 0017fb1c: 8fa80048 lw r8,0x0048(r29) 0017fb20: 00000000 nop 0017fb24: 1500001f bne r8,r0,0x0017fba4 0017fb28: 00000000 nop 0017fb2c: 0c017a3a jal 0x0005e8e8 xfer r4 to r5, r4 = 0x03 0017fb30: 264400c8 addiu r4,r18,0x00c8 0017fb34: 34080001 ori r8,r0,0x0001 0017fb38: 0805fee8 j 0x0017fba0 0017fb3c: afa80048 sw r8,0x0048(r29) 0017fb40: 340200ff ori r2,r0,0x00ff 0017fb44: a2020001 sb r2,0x0001(r16) store unit ID = 0xff 0017fb48: 0805fed6 j 0x0017fb58 0017fb4c: a2000183 sb r0,0x0183(r16) store unit doesn't exist, but can 0017fb50: 0c06036c jal 0x00180db0 Set Enemy Level Data 0017fb54: 02002021 addu r4,r16,r0 0017fb58: 92040047 lbu r4,0x0047(r16) 0017fb5c: 92050048 lbu r5,0x0048(r16) 0017fb60: 96070048 lhu r7,0x0048(r16) 0017fb64: 32a200ff andi r2,r21,0x00ff 0017fb68: afa20010 sw r2,0x0010(r29) 0017fb6c: 93a20028 lbu r2,0x0028(r29) 0017fb70: afb30018 sw r19,0x0018(r29) 0017fb74: afb0001c sw r16,0x001c(r29) 0017fb78: afb10020 sw r17,0x0020(r29) 0017fb7c: 000733c2 srl r6,r7,0x0f 0017fb80: 00073a02 srl r7,r7,0x08 0017fb84: 30e7000f andi r7,r7,0x000f 0017fb88: 0c023950 jal 0x0008e540 0017fb8c: afa20014 sw r2,0x0014(r29) 0017fb90: 328300ff andi r3,r20,0x00ff 0017fb94: 340200c0 ori r2,r0,0x00c0 0017fb98: 10620002 beq r3,r2,0x0017fba4 0017fb9c: 00000000 nop 0017fba0: 26d60001 addiu r22,r22,0x0001 0017fba4: 26f70028 addiu r23,r23,0x0028 0017fba8: 26520001 addiu r18,r18,0x0001 0017fbac: 2a420010 slti r2,r18,0x0010 0017fbb0: 1440ff67 bne r2,r0,0x0017f950 0017fbb4: 27de01c0 addiu r30,r30,0x01c0 0017fbb8: 8fbf007c lw r31,0x007c(r29) 0017fbbc: 8fbe0078 lw r30,0x0078(r29) 0017fbc0: 8fb70074 lw r23,0x0074(r29) 0017fbc4: 8fb60070 lw r22,0x0070(r29) 0017fbc8: 8fb5006c lw r21,0x006c(r29) 0017fbcc: 8fb40068 lw r20,0x0068(r29) 0017fbd0: 8fb30064 lw r19,0x0064(r29) 0017fbd4: 8fb20060 lw r18,0x0060(r29) 0017fbd8: 8fb1005c lw r17,0x005c(r29) 0017fbdc: 8fb00058 lw r16,0x0058(r29) 0017fbe0: 27bd0080 addiu r29,r29,0x0080 0017fbe4: 03e00008 jr r31 0017fbe8: 00000000 nop
Return Locations
0008e7e8: 0008e7b8 - 0008e808