Difference between revisions of "00175fa4 - 00176160"
Jump to navigation
Jump to search
(Created page with "<font face='Courier New'> 00175fa4: 00a05821 addu r11,r5,r0 00175fa8: 00802821 addu r5,r4,r0 00175fac: 3c078019 lui r7,0x8019 00175fb0: 8ce7f4e4 lw r7,-0x0b1c(r7) 00175...") |
|||
Line 1: | Line 1: | ||
− | + | BATTLE.BIN : Height Check to reach the Chocobo ? | |
+ | ------------------------------------------------------------------------------------------------------- | ||
+ | Parameters : r4 - ID of Unit on Destination Tile | ||
+ | r5 - Preset Value ? (Only seen 0x00 so far) | ||
− | 00175fa4: 00a05821 addu r11,r5,r0 | + | Uses Data from ScratchPad 0x1f800000 - 0x1f800080 - 0x1f800180 |
− | 00175fa8: 00802821 addu r5,r4,r0 | + | Runs a bunch of checks relative to height and size of acting unit and unit present on destination Tile |
− | 00175fac: 3c078019 lui r7,0x8019 | + | If All checks are Ok : Store Data in Tile Grid Table (80192dd8) |
− | 00175fb0: 8ce7f4e4 lw r7,-0x0b1c(r7) | + | - Load Origin Tile Grid 0x00 (AoE of Move) And Substract (1+Preset Value) |
− | 00175fb4: 3c098019 lui r9,0x8019 | + | - Store the result in Destination Tile Grid 0x03 (80192dd8) - |
− | 00175fb8: 8d29f4e0 lw r9,-0x0b20(r9) | + | Looks like the movement cost to reach the tile. (It's a guess for now) |
− | 00175fbc: 3c068019 lui r6,0x8019 | + | --------------------------------------------------------------------------------------------------------- |
− | 00175fc0: 8cc6f4e8 lw r6,-0x0b18(r6) | + | 00175fa4: 00a05821 addu r11,r5,r0 |{{f/std|Preset value}} |
− | 00175fc4: 90e20048 lbu r2,0x0048(r7) | + | 00175fa8: 00802821 addu r5,r4,r0 |{{f/std|Unit ID (on Tile)}} |
− | 00175fc8: 9124001b lbu r4,0x001b(r9) | + | 00175fac: 3c078019 lui r7,0x8019 | |
− | 00175fcc: 90e30047 lbu r3,0x0047(r7) | + | 00175fb0: 8ce7f4e4 lw r7,-0x0b1c(r7) |{{f/adr|Pointer to Scratch Pad (0x1f800180)}} |
− | 00175fd0: 00441021 addu r2,r2,r4 | + | 00175fb4: 3c098019 lui r9,0x8019 | |
− | 00175fd4: 0062182a slt r3,r3,r2 | + | 00175fb8: 8d29f4e0 lw r9,-0x0b20(r9) |{{f/adr|Pointer to Scratch Pad (0x1f800000)}} |
− | 00175fd8: 14600060 bne r3,r0,0x0017615c | + | 00175fbc: 3c068019 lui r6,0x8019 | |
− | 00175fdc: 25620001 addiu r2,r11,0x0001 | + | 00175fc0: 8cc6f4e8 lw r6,-0x0b18(r6) |{{f/adr|Poiter to Other units Scratchpad ( 0x1f800080 )}} |
− | 00175fe0: 8ce40010 lw r4,0x0010(r7) | + | 00175fc4: 90e20048 lbu r2,0x0048(r7) |{{f/load|Origin Tile Exit Height / Acting Unit Height + Size}} |
− | 00175fe4: 00000000 nop | + | 00175fc8: 9124001b lbu r4,0x001b(r9) |{{f/load|Acting Unit Size}} |
− | 00175fe8: 90830000 lbu r3,0x0000(r4) | + | 00175fcc: 90e30047 lbu r3,0x0047(r7) |{{f/load|Destination Ceiling Distance}} |
− | 00175fec: 00000000 nop | + | 00175fd0: 00441021 addu r2,r2,r4 |{{f/std|Origin Tile Exit Height + Unit Size}} |
− | 00175ff0: 00626023 subu r12,r3,r2 | + | 00175fd4: 0062182a slt r3,r3,r2 | |
− | 00175ff4: 318a00ff andi r10,r12,0x00ff | + | 00175fd8: 14600060 bne r3,r0,0x0017615c {{f/Cond|If Destination Ceiling is lower than Origin height + Unit Size}} {{f/loc| Exit routine}} |
− | 00175ff8: 11400058 beq r10,r0,0x0017615c | + | 00175fdc: 25620001 addiu r2,r11,0x0001 | |
− | 00175ffc: 00000000 nop | + | 00175fe0: 8ce40010 lw r4,0x0010(r7) |{{f/adr|Pointer to Origin Tile's Grid data}} |
− | 00176000: 90820003 lbu r2,0x0003(r4) | + | 00175fe4: 00000000 nop | |
− | 00176004: 00000000 nop | + | 00175fe8: 90830000 lbu r3,0x0000(r4) |{{f/load|Load Aoe/Move}} |
− | 00176008: 0142102b sltu r2,r10,r2 | + | 00175fec: 00000000 nop | |
− | 0017600c: 14400053 bne r2,r0,0x0017615c | + | 00175ff0: 00626023 subu r12,r3,r2 |{{f/std|Move - PV + 1}} |
− | 00176010: 00000000 nop | + | 00175ff4: 318a00ff andi r10,r12,0x00ff | |
− | 00176014: 90e20059 lbu r2,0x0059(r7) | + | 00175ff8: 11400058 beq r10,r0,0x0017615c {{f/Cond|<nowiki>If Movement left = 0 </nowiki>}} {{f/loc| Exit routine}} |
− | 00176018: 90e30045 lbu r3,0x0045(r7) | + | 00175ffc: 00000000 nop | |
− | 0017601c: 90e4004d lbu r4,0x004d(r7) | + | 00176000: 90820003 lbu r2,0x0003(r4) |{{f/load|Grid 0x03}} |
− | 00176020: 00621007 srav r2,r2,r3 | + | 00176004: 00000000 nop | |
− | 00176024: 90e30057 lbu r3,0x0057(r7) | + | 00176008: 0142102b sltu r2,r10,r2 | |
− | 00176028: 30420003 andi r2,r2,0x0003 | + | 0017600c: 14400053 bne r2,r0,0x0017615c {{f/Cond|If Movement left < Tile's Grid 0x03 }} {{f/loc| Exit routine}} {{f/std|Movement cost ?}} |
− | 0017602c: 00620018 mult r3,r2 | + | 00176010: 00000000 nop | |
− | 00176030: 30a200ff andi r2,r5,0x00ff | + | 00176014: 90e20059 lbu r2,0x0059(r7) |{{f/load|Destination Slope Type}} |
− | 00176034: 000228c0 sll r5,r2,0x03 | + | 00176018: 90e30045 lbu r3,0x0045(r7) |{{f/load|Destination Entry Slope Mod}} |
− | 00176038: 00a22823 subu r5,r5,r2 | + | 0017601c: 90e4004d lbu r4,0x004d(r7) |{{f/load|Destination Height*2}} |
− | 0017603c: 00a62821 addu r5,r5,r6 | + | 00176020: 00621007 srav r2,r2,r3 | |
− | 00176040: 8ce20004 lw r2,0x0004(r7) | + | 00176024: 90e30057 lbu r3,0x0057(r7) |{{f/load|Destination Halves}} |
− | 00176044: 90a80005 lbu r8,0x0005(r5) | + | 00176028: 30420003 andi r2,r2,0x0003 |{{f/std|Entry Slope Type}} |
− | 00176048: 90430003 lbu r3,0x0003(r2) | + | 0017602c: 00620018 mult r3,r2 | |
− | 0017604c: 90a20004 lbu r2,0x0004(r5) | + | 00176030: 30a200ff andi r2,r5,0x00ff | |
− | 00176050: 00031942 srl r3,r3,0x05 | + | 00176034: 000228c0 sll r5,r2,0x03 | |
− | 00176054: 00031840 sll r3,r3,0x01 | + | 00176038: 00a22823 subu r5,r5,r2 |{{f/std|Unit ID * 7}} |
− | 00176058: 01021021 addu r2,r8,r2 | + | 0017603c: 00a62821 addu r5,r5,r6 |{{f/adr|Pointer to Unit data in S-Pad 0x080}} |
− | 0017605c: 00003012 mflo r6 | + | 00176040: 8ce20004 lw r2,0x0004(r7) |{{f/adr|Pointer to Destination data (8018f8cc)}} |
− | 00176060: 00862021 addu r4,r4,r6 | + | 00176044: 90a80005 lbu r8,0x0005(r5) |{{f/load|Destination Unit Height}} |
− | 00176064: 00832021 addu r4,r4,r3 | + | 00176048: 90430003 lbu r3,0x0003(r2) |{{f/load|Destination Halves + depth}} |
− | 00176068: 00401821 addu r3,r2,r0 | + | 0017604c: 90a20004 lbu r2,0x0004(r5) |{{f/load|Destination Unit Size}} |
− | 0017606c: 308200ff andi r2,r4,0x00ff | + | 00176050: 00031942 srl r3,r3,0x05 |{{f/std|Depth only}} |
− | 00176070: 0102102b sltu r2,r8,r2 | + | 00176054: 00031840 sll r3,r3,0x01 |{{f/std|Depth * 2}} |
− | 00176074: 10400002 beq r2,r0,0x00176080 | + | 00176058: 01021021 addu r2,r8,r2 |{{f/std|Unit Height + Unit Size}} |
− | 00176078: 306300ff andi r3,r3,0x00ff | + | 0017605c: 00003012 mflo r6 |{{f/std|Destination Entry Slope Height}} |
− | 0017607c: 00804021 addu r8,r4,r0 | + | 00176060: 00862021 addu r4,r4,r6 |{{f/std|Destination Entry Height}} |
− | 00176080: 01002821 addu r5,r8,r0 | + | 00176064: 00832021 addu r4,r4,r3 |{{f/std|Destination Entry Height + Depth}} |
− | 00176084: 30a400ff andi r4,r5,0x00ff | + | 00176068: 00401821 addu r3,r2,r0 |{{f/std|Unit Height + Unit Size}} |
− | 00176088: 0064102b sltu r2,r3,r4 | + | 0017606c: 308200ff andi r2,r4,0x00ff | |
− | 0017608c: 14400033 bne r2,r0,0x0017615c | + | 00176070: 0102102b sltu r2,r8,r2 |{{f/std|0x1 if Present Unit Tile's Height < Destination Entry Height + Depth * 2}} |
− | 00176090: 00000000 nop | + | 00176074: 10400002 beq r2,r0,0x00176080 {{f/Cond|If There is depth ?}} |
− | 00176094: 01404021 addu r8,r10,r0 | + | 00176078: 306300ff andi r3,r3,0x00ff | |
− | 00176098: 00603021 addu r6,r3,r0 | + | 0017607c: 00804021 addu r8,r4,r0 |{{f/std|Present Unit height + depth}} |
− | 0017609c: 9123001b lbu r3,0x001b(r9) | + | 00176080: 01002821 addu r5,r8,r0 |{{f/std|Height or Height + depth }} |
− | 001760a0: 90e20046 lbu r2,0x0046(r7) | + | 00176084: 30a400ff andi r4,r5,0x00ff |{{f/std|Height or Height + depth }} |
− | 001760a4: 00831821 addu r3,r4,r3 | + | 00176088: 0064102b sltu r2,r3,r4 |{{f/std|0x1 if Unit height + Size < Height +/- Depth }} |
− | 001760a8: 0043102a slt r2,r2,r3 | + | 0017608c: 14400033 bne r2,r0,0x0017615c {{f/Cond|If Unit is below water level}} {{f/loc| Exit routine}} |
− | 001760ac: 1440002b bne r2,r0,0x0017615c | + | 00176090: 00000000 nop | |
− | 001760b0: 00000000 nop | + | 00176094: 01404021 addu r8,r10,r0 |{{f/std|Movement left}} |
− | 001760b4: 90e20047 lbu r2,0x0047(r7) | + | 00176098: 00603021 addu r6,r3,r0 |{{f/std|Unit Height + Unit Size}} |
− | 001760b8: 00000000 nop | + | 0017609c: 9123001b lbu r3,0x001b(r9) |{{f/load|Acting Unit Size}} |
− | 001760bc: 0043102a slt r2,r2,r3 | + | 001760a0: 90e20046 lbu r2,0x0046(r7) |{{f/load|Origin ceiling height}} |
− | 001760c0: 14400026 bne r2,r0,0x0017615c | + | 001760a4: 00831821 addu r3,r4,r3 |{{f/std|Destination Unit Height + Acting Unit Size}} |
− | 001760c4: 00000000 nop | + | 001760a8: 0043102a slt r2,r2,r3 | |
− | 001760c8: 90e20048 lbu r2,0x0048(r7) | + | 001760ac: 1440002b bne r2,r0,0x0017615c {{f/Cond|If Destination's Unit Height + Acting Unit Size < Origin Ceiling height}} {{f/loc| Exit routine}} |
− | 001760cc: 00000000 nop | + | 001760b0: 00000000 nop | |
− | 001760d0: 0044102b sltu r2,r2,r4 | + | 001760b4: 90e20047 lbu r2,0x0047(r7) |{{f/load|Destination Ceiling height}} |
− | 001760d4: 1040000c beq r2,r0,0x00176108 | + | 001760b8: 00000000 nop | |
− | 001760d8: 00000000 nop | + | 001760bc: 0043102a slt r2,r2,r3 | |
− | 001760dc: 1560001f bne r11,r0,0x0017615c | + | 001760c0: 14400026 bne r2,r0,0x0017615c {{f/Cond|If Destination ceiling < Destination Unit height + Acting Unit size}} {{f/Cond|{{f/loc| Exit routine}}}} |
− | 001760e0: 00000000 nop | + | 001760c4: 00000000 nop | |
− | 001760e4: 90e20048 lbu r2,0x0048(r7) | + | 001760c8: 90e20048 lbu r2,0x0048(r7) |{{f/load|Origin Exit Side Height}} |
− | 001760e8: 91230002 lbu r3,0x0002(r9) | + | 001760cc: 00000000 nop | |
− | 001760ec: 00a21023 subu r2,r5,r2 | + | 001760d0: 0044102b sltu r2,r2,r4 | |
− | 001760f0: 304200ff andi r2,r2,0x00ff | + | 001760d4: 1040000c beq r2,r0,0x00176108 {{f/Cond|If Origin Exit Height < Destination Height}} {{f/std|Move Up}} |
− | 001760f4: 0062182b sltu r3,r3,r2 | + | 001760d8: 00000000 nop | |
− | 001760f8: 14600018 bne r3,r0,0x0017615c | + | 001760dc: 1560001f bne r11,r0,0x0017615c {{f/Cond|if Preset Value is <> 0x00}} {{f/loc| Exit routine}} |
− | 001760fc: 00000000 nop | + | 001760e0: 00000000 nop | |
− | 00176100: 0805d849 j 0x00176124 | + | 001760e4: 90e20048 lbu r2,0x0048(r7) |{{f/load|Origin Side Height}} |
− | 00176104: 00000000 nop | + | 001760e8: 91230002 lbu r3,0x0002(r9) |{{f/load|Acting Unit Jump}} |
− | 00176108: 90e20048 lbu r2,0x0048(r7) | + | 001760ec: 00a21023 subu r2,r5,r2 |{{f/std|Destination Height - Origin Height}} |
− | 0017610c: 91230002 lbu r3,0x0002(r9) | + | 001760f0: 304200ff andi r2,r2,0x00ff | |
− | 00176110: 00451023 subu r2,r2,r5 | + | 001760f4: 0062182b sltu r3,r3,r2 | |
− | 00176114: 304200ff andi r2,r2,0x00ff | + | 001760f8: 14600018 bne r3,r0,0x0017615c {{f/Cond|If Acting Unit Jump is insufficient}} {{f/loc| Exit routine}} |
− | 00176118: 0062182b sltu r3,r3,r2 | + | 001760fc: 00000000 nop | |
− | 0017611c: 1460000a bne r3,r0,0x00176148 | + | 00176100: 0805d849 j 0x00176124 {{f/jump|Avoid Move down section}} |
− | 00176120: 00000000 nop | + | 00176104: 00000000 nop | |
− | 00176124: 8ce3000c lw r3,0x000c(r7) | + | '''Else : Origin Exit Height > Destination Height''' |
− | 00176128: 00000000 nop | + | 00176108: 90e20048 lbu r2,0x0048(r7) |{{f/load|Origin Side Height}} |
− | 0017612c: 90620003 lbu r2,0x0003(r3) | + | 0017610c: 91230002 lbu r3,0x0002(r9) |{{f/load|Acting Unit Jump}} |
− | 00176130: 00000000 nop | + | 00176110: 00451023 subu r2,r2,r5 |{{f/std|Origin Height - Destination Height}} |
− | 00176134: 0048102b sltu r2,r2,r8 | + | 00176114: 304200ff andi r2,r2,0x00ff | |
− | 00176138: 10400008 beq r2,r0,0x0017615c | + | 00176118: 0062182b sltu r3,r3,r2 | |
− | 0017613c: 00000000 nop | + | 0017611c: 1460000a bne r3,r0,0x00176148 {{f/Cond|If Jump is insufficient : Branch below to eventually try again}} |
− | 00176140: 0805d857 j 0x0017615c | + | 00176120: 00000000 nop | |
− | 00176144: a06c0003 sb r12,0x0003(r3) | + | 00176124: 8ce3000c lw r3,0x000c(r7) |{{f/adr|Pointer to Destination grid data}} |
− | 00176148: 24a50001 addiu r5,r5,0x0001 | + | 00176128: 00000000 nop | |
− | 0017614c: 30a400ff andi r4,r5,0x00ff | + | 0017612c: 90620003 lbu r2,0x0003(r3) |{{f/load|Grid 0x03}} |
− | 00176150: 00c4102b sltu r2,r6,r4 | + | 00176130: 00000000 nop | |
− | 00176154: 1040ffd1 beq r2,r0,0x0017609c | + | 00176134: 0048102b sltu r2,r2,r8 |{{f/std|1 if Grid 0x03 < }} |
− | 00176158: 00000000 nop | + | 00176138: 10400008 beq r2,r0,0x0017615c {{f/Cond|If Tile 0x03 > Movement left}} {{f/loc| Exit routine}} |
− | 0017615c: 03e00008 jr r31 | + | 0017613c: 00000000 nop | |
+ | 00176140: 0805d857 j 0x0017615c |{{f/loc| Exit routine}} | ||
+ | 00176144: a06c0003 sb r12,0x0003(r3) |{{f/store|Store AoE/Move - (PV +1)}} | ||
+ | {{f/sec|Climb down insufficient Jump}} | ||
+ | 00176148: 24a50001 addiu r5,r5,0x0001 |{{f/std|Destination Height + 1}} | ||
+ | 0017614c: 30a400ff andi r4,r5,0x00ff | | ||
+ | 00176150: 00c4102b sltu r2,r6,r4 |{{f/std|0x01 If Unit Height + Unit Size < Destination Height +1}} | ||
+ | 00176154: 1040ffd1 beq r2,r0,0x0017609c {{f/Cond|If Destination Unit Height + Unit Size > Destination Height +1}} {{f/loc|branch backward to check heights}} {{f/std|Wtf}} | ||
+ | 00176158: 00000000 nop | | ||
+ | 0017615c: 03e00008 jr r31 END | ||
00176160: 00000000 nop | 00176160: 00000000 nop | ||
</font> | </font> | ||
+ | |||
+ | === Return Locations === | ||
+ | '''BATTLE.BIN''' | ||
+ | 00175ad4: [[Movement_routine]] |
Revision as of 20:54, 28 May 2023
BATTLE.BIN : Height Check to reach the Chocobo ? ------------------------------------------------------------------------------------------------------- Parameters : r4 - ID of Unit on Destination Tile r5 - Preset Value ? (Only seen 0x00 so far) Uses Data from ScratchPad 0x1f800000 - 0x1f800080 - 0x1f800180 Runs a bunch of checks relative to height and size of acting unit and unit present on destination Tile If All checks are Ok : Store Data in Tile Grid Table (80192dd8) - Load Origin Tile Grid 0x00 (AoE of Move) And Substract (1+Preset Value) - Store the result in Destination Tile Grid 0x03 (80192dd8) - Looks like the movement cost to reach the tile. (It's a guess for now) --------------------------------------------------------------------------------------------------------- 00175fa4: 00a05821 addu r11,r5,r0 |Preset value 00175fa8: 00802821 addu r5,r4,r0 |Unit ID (on Tile) 00175fac: 3c078019 lui r7,0x8019 | 00175fb0: 8ce7f4e4 lw r7,-0x0b1c(r7) |Pointer to Scratch Pad (0x1f800180) 00175fb4: 3c098019 lui r9,0x8019 | 00175fb8: 8d29f4e0 lw r9,-0x0b20(r9) |Pointer to Scratch Pad (0x1f800000) 00175fbc: 3c068019 lui r6,0x8019 | 00175fc0: 8cc6f4e8 lw r6,-0x0b18(r6) |Poiter to Other units Scratchpad ( 0x1f800080 ) 00175fc4: 90e20048 lbu r2,0x0048(r7) |Origin Tile Exit Height / Acting Unit Height + Size 00175fc8: 9124001b lbu r4,0x001b(r9) |Acting Unit Size 00175fcc: 90e30047 lbu r3,0x0047(r7) |Destination Ceiling Distance 00175fd0: 00441021 addu r2,r2,r4 |Origin Tile Exit Height + Unit Size 00175fd4: 0062182a slt r3,r3,r2 | 00175fd8: 14600060 bne r3,r0,0x0017615c #If Destination Ceiling is lower than Origin height + Unit Size Exit routine 00175fdc: 25620001 addiu r2,r11,0x0001 | 00175fe0: 8ce40010 lw r4,0x0010(r7) |Pointer to Origin Tile's Grid data 00175fe4: 00000000 nop | 00175fe8: 90830000 lbu r3,0x0000(r4) |Load Aoe/Move 00175fec: 00000000 nop | 00175ff0: 00626023 subu r12,r3,r2 |Move - PV + 1 00175ff4: 318a00ff andi r10,r12,0x00ff | 00175ff8: 11400058 beq r10,r0,0x0017615c #If Movement left = 0 Exit routine 00175ffc: 00000000 nop | 00176000: 90820003 lbu r2,0x0003(r4) |Grid 0x03 00176004: 00000000 nop | 00176008: 0142102b sltu r2,r10,r2 | 0017600c: 14400053 bne r2,r0,0x0017615c #If Movement left < Tile's Grid 0x03 Exit routine Movement cost ? 00176010: 00000000 nop | 00176014: 90e20059 lbu r2,0x0059(r7) |Destination Slope Type 00176018: 90e30045 lbu r3,0x0045(r7) |Destination Entry Slope Mod 0017601c: 90e4004d lbu r4,0x004d(r7) |Destination Height*2 00176020: 00621007 srav r2,r2,r3 | 00176024: 90e30057 lbu r3,0x0057(r7) |Destination Halves 00176028: 30420003 andi r2,r2,0x0003 |Entry Slope Type 0017602c: 00620018 mult r3,r2 | 00176030: 30a200ff andi r2,r5,0x00ff | 00176034: 000228c0 sll r5,r2,0x03 | 00176038: 00a22823 subu r5,r5,r2 |Unit ID * 7 0017603c: 00a62821 addu r5,r5,r6 |Pointer to Unit data in S-Pad 0x080 00176040: 8ce20004 lw r2,0x0004(r7) |Pointer to Destination data (8018f8cc) 00176044: 90a80005 lbu r8,0x0005(r5) |Destination Unit Height 00176048: 90430003 lbu r3,0x0003(r2) |Destination Halves + depth 0017604c: 90a20004 lbu r2,0x0004(r5) |Destination Unit Size 00176050: 00031942 srl r3,r3,0x05 |Depth only 00176054: 00031840 sll r3,r3,0x01 |Depth * 2 00176058: 01021021 addu r2,r8,r2 |Unit Height + Unit Size 0017605c: 00003012 mflo r6 |Destination Entry Slope Height 00176060: 00862021 addu r4,r4,r6 |Destination Entry Height 00176064: 00832021 addu r4,r4,r3 |Destination Entry Height + Depth 00176068: 00401821 addu r3,r2,r0 |Unit Height + Unit Size 0017606c: 308200ff andi r2,r4,0x00ff | 00176070: 0102102b sltu r2,r8,r2 |0x1 if Present Unit Tile's Height < Destination Entry Height + Depth * 2 00176074: 10400002 beq r2,r0,0x00176080 #If There is depth ? 00176078: 306300ff andi r3,r3,0x00ff | 0017607c: 00804021 addu r8,r4,r0 |Present Unit height + depth 00176080: 01002821 addu r5,r8,r0 |Height or Height + depth 00176084: 30a400ff andi r4,r5,0x00ff |Height or Height + depth 00176088: 0064102b sltu r2,r3,r4 |0x1 if Unit height + Size < Height +/- Depth 0017608c: 14400033 bne r2,r0,0x0017615c #If Unit is below water level Exit routine 00176090: 00000000 nop | 00176094: 01404021 addu r8,r10,r0 |Movement left 00176098: 00603021 addu r6,r3,r0 |Unit Height + Unit Size 0017609c: 9123001b lbu r3,0x001b(r9) |Acting Unit Size 001760a0: 90e20046 lbu r2,0x0046(r7) |Origin ceiling height 001760a4: 00831821 addu r3,r4,r3 |Destination Unit Height + Acting Unit Size 001760a8: 0043102a slt r2,r2,r3 | 001760ac: 1440002b bne r2,r0,0x0017615c #If Destination's Unit Height + Acting Unit Size < Origin Ceiling height Exit routine 001760b0: 00000000 nop | 001760b4: 90e20047 lbu r2,0x0047(r7) |Destination Ceiling height 001760b8: 00000000 nop | 001760bc: 0043102a slt r2,r2,r3 | 001760c0: 14400026 bne r2,r0,0x0017615c #If Destination ceiling < Destination Unit height + Acting Unit size' # Exit routine' 001760c4: 00000000 nop | 001760c8: 90e20048 lbu r2,0x0048(r7) |Origin Exit Side Height 001760cc: 00000000 nop | 001760d0: 0044102b sltu r2,r2,r4 | 001760d4: 1040000c beq r2,r0,0x00176108 #If Origin Exit Height < Destination Height Move Up 001760d8: 00000000 nop | 001760dc: 1560001f bne r11,r0,0x0017615c #if Preset Value is <> 0x00 Exit routine 001760e0: 00000000 nop | 001760e4: 90e20048 lbu r2,0x0048(r7) |Origin Side Height 001760e8: 91230002 lbu r3,0x0002(r9) |Acting Unit Jump 001760ec: 00a21023 subu r2,r5,r2 |Destination Height - Origin Height 001760f0: 304200ff andi r2,r2,0x00ff | 001760f4: 0062182b sltu r3,r3,r2 | 001760f8: 14600018 bne r3,r0,0x0017615c #If Acting Unit Jump is insufficient Exit routine 001760fc: 00000000 nop | 00176100: 0805d849 j 0x00176124 >>Avoid Move down section 00176104: 00000000 nop | Else : Origin Exit Height > Destination Height 00176108: 90e20048 lbu r2,0x0048(r7) |Origin Side Height 0017610c: 91230002 lbu r3,0x0002(r9) |Acting Unit Jump 00176110: 00451023 subu r2,r2,r5 |Origin Height - Destination Height 00176114: 304200ff andi r2,r2,0x00ff | 00176118: 0062182b sltu r3,r3,r2 | 0017611c: 1460000a bne r3,r0,0x00176148 #If Jump is insufficient : Branch below to eventually try again 00176120: 00000000 nop | 00176124: 8ce3000c lw r3,0x000c(r7) |Pointer to Destination grid data 00176128: 00000000 nop | 0017612c: 90620003 lbu r2,0x0003(r3) |Grid 0x03 00176130: 00000000 nop | 00176134: 0048102b sltu r2,r2,r8 |1 if Grid 0x03 < 00176138: 10400008 beq r2,r0,0x0017615c #If Tile 0x03 > Movement left Exit routine 0017613c: 00000000 nop | 00176140: 0805d857 j 0x0017615c | Exit routine 00176144: a06c0003 sb r12,0x0003(r3) |Store AoE/Move - (PV +1) Climb down insufficient Jump 00176148: 24a50001 addiu r5,r5,0x0001 |Destination Height + 1 0017614c: 30a400ff andi r4,r5,0x00ff | 00176150: 00c4102b sltu r2,r6,r4 |0x01 If Unit Height + Unit Size < Destination Height +1 00176154: 1040ffd1 beq r2,r0,0x0017609c #If Destination Unit Height + Unit Size > Destination Height +1 branch backward to check heights Wtf 00176158: 00000000 nop | 0017615c: 03e00008 jr r31 END 00176160: 00000000 nop
Return Locations
BATTLE.BIN 00175ad4: Movement_routine