Difference between revisions of "Set Origin Height Data"
Jump to navigation
Jump to search
(Created page with "<font face='Courier New'> 0017567c: 27bdffe0 addiu r29,r29,0xffe0 00175680: afb20018 sw r18,0x0018(r29) 00175684: 3c128019 lui r18,0x8019 00175688: 8e52f4e0 lw r18,-0x0b...") |
|||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | + | BATTLE.BIN : Set Origin Height Data | |
+ | --------------------------------------------------------------------------------------------------------- | ||
+ | Parameters : r4 - Preset value (some loop counter from previous routine) | ||
+ | 0x0 to 0x3 : Tile Path Height (4 directions) | ||
+ | 0x4 to 0x7 : Check Unit Path (if any) | ||
+ | Above 0x8 (until 0x24 when Acting Unit stop riding) - seems to increment height above unit (?) | ||
− | + | Returns : r2 = 0x00 if AoE of move is not finsihed | |
− | + | r2 = 0x04 if AoE ended | |
− | + | r2 = 0x01 when ? (Above 8 section) | |
− | + | ||
− | + | Multiple Height Check to finaly set some Origin height data in S-Pad 0x180 | |
− | + | (0x48 0x49 0x36 0x46 0x1d 0x10) | |
− | + | ------------------------------------------------------------------------------------------------------------ | |
− | + | 0017567c: 27bdffe0 addiu r29,r29,-0x0020 | | |
− | + | 00175680: afb20018 sw r18,0x0018(r29) | | |
− | + | 00175684: 3c128019 lui r18,0x8019 | | |
− | + | 00175688: 8e52f4e0 lw r18,-0x0b20(r18) |{{f/adr|Pointer to scratch pad}} [[1f800000|<span style=color:blue>0x1f800000</span>]] | |
− | + | 0017568c: afb10014 sw r17,0x0014(r29) | | |
− | + | 00175690: 3c118019 lui r17,0x8019 | | |
− | + | 00175694: 8e31f4f0 lw r17,-0x0b10(r17) |{{f/adr|Pointer to Scratch Pad}} [[1f800200|<span style=color:blue>0x1f800200</span>]] | |
− | + | 00175698: afb00010 sw r16,0x0010(r29) | | |
− | + | 0017569c: 3c108019 lui r16,0x8019 | | |
− | + | 001756a0: 8e10f4e4 lw r16,-0x0b1c(r16) |{{f/adr|Pointer to Scratch Pad}} [[1f800180|<span style=color:blue>0x1f800180</span>]] | |
− | + | 001756a4: 3c058019 lui r5,0x8019 | | |
− | + | 001756a8: 8ca5f4e8 lw r5,-0x0b18(r5) |{{f/adr|Pointer to scratch pad}} [[1f800080|<span style=color:blue>0x1f800080</span>]] | |
− | + | 001756ac: 28830008 slti r3,r4,0x0008 | | |
− | + | 001756b0: 10600005 beq r3,r0,0x001756c8 {{f/Cond|If Counter < 8}} | |
− | + | 001756b4: afbf001c sw r31,0x001c(r29) | | |
− | + | 001756b8: 92020040 lbu r2,0x0040(r16) |{{f/load|Load Tile/Unit Path flag}} | |
− | + | 001756bc: 00000000 nop | | |
− | + | 001756c0: 1040004a beq r2,r0,0x001757ec {{f/Cond|<nowiki>If Path flag = 0 then branch to </nowiki>}} {{f/loc| Tile section}} | |
− | + | 001756c4: 00000000 nop | | |
− | + | 001756c8: 8e020008 lw r2,0x0008(r16) |{{f/adr|Pointer : Tile's data in Targetable grid table}} {{f/std|80192dd8}} | |
− | + | 001756cc: 00000000 nop | | |
− | + | 001756d0: 90420002 lbu r2,0x0002(r2) |{{f/load|Unit ID on Tile}} | |
− | + | 001756d4: 14600020 bne r3,r0,0x00175758 {{f/Cond|If Value is between 4 and 7 Branch to}} {{f/loc| Unit section}} | |
− | + | 001756d8: a2020041 sb r2,0x0041(r16) |{{f/store|Store Unit ID }} | |
− | + | {{f/sec|8 or Above}} | |
− | + | 001756dc: 92030041 lbu r3,0x0041(r16) |{{f/load|Unit ID}} | |
− | + | 001756e0: 00000000 nop | | |
− | + | 001756e4: 000310c0 sll r2,r3,0x03 | | |
− | + | 001756e8: 00431023 subu r2,r2,r3 |{{f/std|Unit ID * 7}} | |
− | + | 001756ec: 04810002 bgez r4,0x001756f8 {{f/Cond|If Preset value < 0x00}} | |
− | + | 001756f0: 00452821 addu r5,r2,r5 |{{f/adr|Pointer to Unit data in S-Pad 0x80}} | |
− | + | 001756f4: 24840003 addiu r4,r4,0x0003 |{{f/std|Value +3}} | |
− | + | 001756f8: 92020058 lbu r2,0x0058(r16) |{{f/load|Load Slope Type}} | |
− | + | 001756fc: 92030044 lbu r3,0x0044(r16) |{{f/load|Load Origin Slope Mod}} | |
− | + | 00175700: 00000000 nop | | |
− | + | 00175704: 00621007 srav r2,r2,r3 |{{f/std|Side slope}} | |
− | + | 00175708: 92030056 lbu r3,0x0056(r16) |{{f/load|Load Tile's Halves}} | |
− | + | 0017570c: 30420003 andi r2,r2,0x0003 | | |
− | + | 00175710: 00620018 mult r3,r2 | | |
− | + | 00175714: 90a20005 lbu r2,0x0005(r5) |{{f/load|Unit Height}} | |
− | + | 00175718: 00041883 sra r3,r4,0x02 |{{f/std|Preset Value / 4}} | |
− | + | 0017571c: 00431021 addu r2,r2,r3 |{{f/std|Unit Total Height + Preset Value/4}} | |
− | + | 00175720: 2442fffe addiu r2,r2,-0x0002 | | |
− | + | 00175724: a2020048 sb r2,0x0048(r16) |{{f/store|Store Unit Height + PV/4 - 2}} | |
− | + | 00175728: 9202004c lbu r2,0x004c(r16) |{{f/load|Load Origin's Height*2}} | |
− | + | 0017572c: 00001812 mflo r3 |{{f/std|Slope Type * Halves}} | |
− | + | 00175730: 00431021 addu r2,r2,r3 | | |
− | + | 00175734: a2020050 sb r2,0x0050(r16) |{{f/store|Store Origin exit side's Height}} | |
− | + | 00175738: 92020048 lbu r2,0x0048(r16) |{{f/load|Load Unit Total Height}} | |
− | + | 0017573c: 92030050 lbu r3,0x0050(r16) |{{f/load|Load Tile's Size height}} | |
− | + | 00175740: 00000000 nop | | |
− | + | 00175744: 0043102b sltu r2,r2,r3 | | |
− | + | 00175748: 10400013 beq r2,r0,0x00175798 {{f/Cond|If Unit Height + PV mod > Origin Exit Size}} {{f/loc| Branch in section below}} | |
− | + | 0017574c: 34020001 ori r2,r0,0x0001 | | |
− | + | 00175750: 0805d64f j 0x0017593c {{f/jump|If not Returns 0x1}} | |
− | + | 00175754: 00000000 nop | | |
− | + | {{f/sec|--- Above Unit Path (Counter 4 to 7) ---}} | |
− | + | 00175758: 8602001a lh r2,0x001a(r16) |{{f/load|Load Tile ID}} | |
− | + | 0017575c: 00000000 nop | | |
− | + | 00175760: 02221021 addu r2,r17,r2 |{{f/adr|Tile's data pointer in S-Pad 0x200}} | |
− | + | 00175764: 90420000 lbu r2,0x0000(r2) |{{f/load|Load Tile's flags}} | |
− | + | 00175768: 00000000 nop | | |
− | + | 0017576c: 30420008 andi r2,r2,0x0008 |{{f/std|Check 0x08 (Fly - Ally with stepping stone)}} | |
− | + | 00175770: 10400072 beq r2,r0,0x0017593c {{f/Cond|If Flag 0x08 is ON}} Else returns 0x2 | |
− | + | 00175774: 34020002 ori r2,r0,0x0002 |{{f/std|0x2}} | |
− | + | 00175778: 92020041 lbu r2,0x0041(r16) |{{f/load|Load Unit ID}} | |
− | + | 0017577c: 00000000 nop | | |
− | + | 00175780: 000218c0 sll r3,r2,0x03 |{{f/std|ID*8}} | |
− | + | 00175784: 00621823 subu r3,r3,r2 |{{f/std|ID*7}} | |
− | + | 00175788: 00651821 addu r3,r3,r5 |{{f/adr|Pointer to Unit data in S-Pad 0x80}} | |
− | + | 0017578c: 90620006 lbu r2,0x0006(r3) |{{f/load|Tile Height + unit Size}} | |
− | + | 00175790: 00000000 nop | | |
− | + | 00175794: a2020048 sb r2,0x0048(r16) |{{f/store|Store Height + Size}} | |
− | + | {{f/sec|--- > 8 Section Branch here ---}} | |
− | + | 00175798: 86040026 lh r4,0x0026(r16) |{{f/load|Tile's X Coord}} {{f/std|(for Jal)}} | |
− | + | 0017579c: 86050028 lh r5,0x0028(r16) |{{f/load|Tile's Y Coord}} {{f/std|(for Jal)}} | |
− | + | 001757a0: 92060044 lbu r6,0x0044(r16) |{{f/load|Exit Side slope mod}} {{f/std|(for Jal)}} | |
− | + | 001757a4: 92070048 lbu r7,0x0048(r16) |{{f/load|Height + Size}} {{f/std|(for Jal)}} | |
− | + | 001757a8: 92020048 lbu r2,0x0048(r16) |{{f/load|Height + Size}} | |
− | + | 001757ac: a6000036 sh r0,0x0036(r16) |{{f/store|Reset 0x36}} | |
− | + | 001757b0: 24e7ffff addiu r7,r7,-0x0001 |{{f/std|Height - 1}} | |
− | + | 001757b4: 30e700ff andi r7,r7,0x00ff |{{f/std|Byte only}} | |
− | + | 001757b8: 0c05d859 jal 0x00176164 |{{f/jal|Calculate_Tile_Ceiling|Calculate_Tile_Ceiling}} {{f/std|<nowiki>returns r2 = Ceiling height or 0x7f (Height from unit head here)</nowiki>}} | |
− | + | 001757bc: a2020049 sb r2,0x0049(r16) |{{f/store|Store Height + Size}} | |
− | + | 001757c0: 92030041 lbu r3,0x0041(r16) |{{f/load|Unit ID}} | |
− | + | 001757c4: a2020046 sb r2,0x0046(r16) |{{f/store|Store Ceiling Height}} | |
− | + | 001757c8: 24630200 addiu r3,r3,0x0200 |{{f/std|Unit ID + 0x200}} | |
− | + | 001757cc: 00031080 sll r2,r3,0x02 | | |
− | + | 001757d0: 00431021 addu r2,r2,r3 |{{f/adr|Pointer to Unit data in Post-Grid Table}} {{f/std| 801937d8}} | |
− | + | 001757d4: a603001e sh r3,0x001e(r16) |{{f/store|Unit Offset in Post-Grid Table}} | |
− | + | 001757d8: 3c038019 lui r3,0x8019 | | |
− | + | 001757dc: 24632dd8 addiu r3,r3,0x2dd8 |{{f/adr|Start of Targetable grid data}} | |
− | + | 001757e0: 00431021 addu r2,r2,r3 |{{f/adr|Unit Data (Offset 0x05) at 801937d8}} | |
− | + | 001757e4: 0805d649 j 0x00175924 {{f/jump|End section}} | |
− | + | 001757e8: ae020010 sw r2,0x0010(r16) |{{f/store|Store pointer}} | |
− | + | {{f/sec|---- Tile Section ---}} | |
− | + | 001757ec: 92020058 lbu r2,0x0058(r16) |{{f/load|Load Tile's Slope Type}} | |
− | + | 001757f0: 92030044 lbu r3,0x0044(r16) |{{f/load|Load Exit Side Slope Mod}} | |
− | + | 001757f4: 00000000 nop | | |
− | + | 001757f8: 00621007 srav r2,r2,r3 | | |
− | + | 001757fc: 92030056 lbu r3,0x0056(r16) |{{f/load|Load Tile's Halves}} | |
− | + | 00175800: 30420003 andi r2,r2,0x0003 |{{f/std|Exit Side Slope mod}} | |
− | + | 00175804: 00620018 mult r3,r2 | | |
− | + | 00175808: 92020058 lbu r2,0x0058(r16) |{{f/load|Slope Type}} | |
− | + | 0017580c: 92030045 lbu r3,0x0045(r16) |{{f/load|Opposite Side Slope Mod}} | |
− | + | 00175810: 00000000 nop | | |
− | + | 00175814: 00621007 srav r2,r2,r3 | | |
− | + | 00175818: 00003812 mflo r7 |{{f/std|Exit Side slope mod * Halves}} | |
− | + | 0017581c: 92030056 lbu r3,0x0056(r16) |{{f/load|Tile's Halves}} | |
− | + | 00175820: 30420003 andi r2,r2,0x0003 | | |
− | + | 00175824: 00620018 mult r3,r2 | | |
− | + | 00175828: 86040026 lh r4,0x0026(r16) |{{f/load|X Coord}} {{f/std|(for Jal)}} | |
− | + | 0017582c: 86050028 lh r5,0x0028(r16) |{{f/load|Y Coord }} {{f/std|(for Jal)}} | |
− | + | 00175830: 9202004c lbu r2,0x004c(r16) |{{f/load|Tile's Height*2}} | |
− | + | 00175834: 92060044 lbu r6,0x0044(r16) |{{f/load|Exit Side Slope Mod}} {{f/std|(for Jal)}} | |
− | + | 00175838: 00471021 addu r2,r2,r7 | | |
− | + | 0017583c: a2020048 sb r2,0x0048(r16) |{{f/store|Store Exit Side Height}} {{f/std| Height * 2 + Halve * Exit Side slope mod (0,1 or 2)}} | |
− | + | 00175840: 9202004c lbu r2,0x004c(r16) |{{f/load|Tile's Height*2}} | |
− | + | 00175844: 00001812 mflo r3 |{{f/std|Opposite Side slope mod * Halves}} | |
− | + | 00175848: 00431021 addu r2,r2,r3 |{{f/std|Opposite Side Height}} | |
− | + | 0017584c: a2020049 sb r2,0x0049(r16) |{{f/store|Store Opposite Side Height}} | |
− | + | 00175850: 92020048 lbu r2,0x0048(r16) |{{f/load|Exit Side Height}} | |
− | + | 00175854: 92030049 lbu r3,0x0049(r16) |{{f/load|Opposite Side Height}} | |
− | + | 00175858: 92070048 lbu r7,0x0048(r16) |{{f/load|Exit Side Height}} {{f/std|(for Jal)}} | |
− | + | 0017585c: 00431023 subu r2,r2,r3 |{{f/std|Delta Height (2 Side)}} | |
− | + | 00175860: 0c05d859 jal 0x00176164 |{{f/jal|Calculate_Tile_Ceiling|Calculate_Tile_Ceiling}} {{f/std|<nowiki>returns r2 = Ceiling height or 0x7f</nowiki>}} | |
− | + | 00175864: a6020036 sh r2,0x0036(r16) |{{f/store|Store Height diffences (of the 2 sides)}} | |
− | + | 00175868: 86030036 lh r3,0x0036(r16) |{{f/load|Load delta Height}} | |
− | + | 0017586c: 00000000 nop | | |
− | + | 00175870: 04600009 bltz r3,0x00175898 {{f/Cond|If Delta height is Valid}} | |
− | + | 00175874: a2020046 sb r2,0x0046(r16) |{{f/store|Store ceiling height}} | |
− | + | 00175878: 8602001a lh r2,0x001a(r16) |{{f/load|Load Tile ID}} | |
− | + | 0017587c: 00000000 nop | | |
− | + | 00175880: 02221021 addu r2,r17,r2 |{{f/adr|Pointer to Tile S-Pad 0x200}} | |
− | + | 00175884: 90420000 lbu r2,0x0000(r2) |{{f/load|Load Flags}} | |
− | + | 00175888: 00000000 nop | | |
− | + | 0017588c: 30420040 andi r2,r2,0x0040 |{{f/std|Check Unwalkable}} | |
− | + | 00175890: 1440002a bne r2,r0,0x0017593c {{f/Cond|If Tile is unWalkable (0x40 if ON) : }} {{f/loc| Exit and returns 0x03}} | |
− | + | 00175894: 34020003 ori r2,r0,0x0003 | | |
− | + | 00175898: 8e030000 lw r3,0x0000(r16) |{{f/adr|Load Tile's data pointer ( 8019f8cc Table)}} | |
− | + | 0017589c: 00000000 nop | | |
− | + | 001758a0: 90620003 lbu r2,0x0003(r3) |{{f/load|Halve + Depth}} | |
− | + | 001758a4: 00000000 nop | | |
− | + | 001758a8: 304200e0 andi r2,r2,0x00e0 |{{f/std|Depth only}} | |
− | + | 001758ac: 10400012 beq r2,r0,0x001758f8 {{f/Cond|If depht > 0x00}} | |
− | + | 001758b0: 00000000 nop | | |
− | + | 001758b4: 9242001c lbu r2,0x001c(r18) |{{f/load|Load Unit's Movement 3}} | |
− | + | 001758b8: 00000000 nop | | |
− | + | 001758bc: 304200c0 andi r2,r2,0x00c0 |{{f/std|Check on/in Water}} | |
− | + | 001758c0: 1040000d beq r2,r0,0x001758f8 {{f/Cond|If Unit Can walk on/in water}} | |
− | + | 001758c4: 00000000 nop | | |
− | + | 001758c8: 90620003 lbu r2,0x0003(r3) |{{f/load|Halve + Depth}} | |
− | + | 001758cc: 92030048 lbu r3,0x0048(r16) |{{f/load|Exit Side Height}} | |
− | + | 001758d0: 00021142 srl r2,r2,0x05 |{{f/std|Depht only}} | |
− | + | 001758d4: 00021040 sll r2,r2,0x01 |{{f/std|Depht * 2}} | |
− | + | 001758d8: 00621821 addu r3,r3,r2 | | |
− | + | 001758dc: a2030048 sb r3,0x0048(r16) |{{f/store|Add Depth*2 to Exit side height}} | |
− | + | 001758e0: 9242001c lbu r2,0x001c(r18) |{{f/load|Load Unit's Movement 3}} | |
− | + | 001758e4: 00000000 nop | | |
− | + | 001758e8: 30420040 andi r2,r2,0x0040 | | |
− | + | 001758ec: 10400002 beq r2,r0,0x001758f8 {{f/Cond|If Unit Uses Move in Water}} | |
− | + | 001758f0: 246200fe addiu r2,r3,-0x0002 |{{f/std|Path Heght - 2}} | |
− | + | 001758f4: a2020048 sb r2,0x0048(r16) |{{f/store|Add Depth*2 - 2 to Exit side Height}} | |
− | + | 001758f8: 9602001a lhu r2,0x001a(r16) |{{f/load|Load Tile ID}} | |
− | + | 001758fc: 00000000 nop | | |
− | + | 00175900: a602001e sh r2,0x001e(r16) |{{f/store|Store Tile's ID in 0x1e}} | |
− | + | 00175904: 00021400 sll r2,r2,0x10 | | |
− | + | 00175908: 00021403 sra r2,r2,0x10 | | |
− | 00175938: 00021080 sll r2,r2,0x02 | + | 0017590c: 00021880 sll r3,r2,0x02 |{{f/std|Tile ID *4}} |
− | 0017593c: 8fbf001c lw r31,0x001c(r29) | + | 00175910: 00621821 addu r3,r3,r2 |{{f/std|Tile ID * 5}} |
+ | 00175914: 3c028019 lui r2,0x8019 | | ||
+ | 00175918: 24422dd8 addiu r2,r2,0x2dd8 | | ||
+ | 0017591c: 00621821 addu r3,r3,r2 |{{f/adr|Tile Offset in Targetable grid data ( 80192dd8 )}} | ||
+ | 00175920: ae030010 sw r3,0x0010(r16) |{{f/store|Store pointer}} | ||
+ | {{f/sec|--- End section --}} | ||
+ | 00175924: 8e020010 lw r2,0x0010(r16) |{{f/adr|Load Grid Pointer / Unit post grid pointer}} | ||
+ | 00175928: 00000000 nop | | ||
+ | 0017592c: 90420000 lbu r2,0x0000(r2) |{{f/load|Load Tile's AoE data}} | ||
+ | 00175930: 00000000 nop | | ||
+ | 00175934: 2c420002 sltiu r2,r2,0x0002 |{{f/std|1 if AoE < 2}} | ||
+ | 00175938: 00021080 sll r2,r2,0x02 |{{f/std|4 if AoE < 2 / Else 0x00}} | ||
+ | 0017593c: 8fbf001c lw r31,0x001c(r29) END | ||
00175940: 8fb20018 lw r18,0x0018(r29) | 00175940: 8fb20018 lw r18,0x0018(r29) | ||
00175944: 8fb10014 lw r17,0x0014(r29) | 00175944: 8fb10014 lw r17,0x0014(r29) | ||
Line 185: | Line 202: | ||
00175954: 00000000 nop | 00175954: 00000000 nop | ||
</font> | </font> | ||
+ | |||
+ | === Return Location === | ||
+ | '''BATTLE.BIN''' | ||
+ | 00175f38: [[Check_and_Spread_Movement_One_Tile_Around]] | ||
+ | 00176560: [[Spread_Horizontal_Jump]] |
Latest revision as of 10:54, 3 June 2023
BATTLE.BIN : Set Origin Height Data --------------------------------------------------------------------------------------------------------- Parameters : r4 - Preset value (some loop counter from previous routine) 0x0 to 0x3 : Tile Path Height (4 directions) 0x4 to 0x7 : Check Unit Path (if any) Above 0x8 (until 0x24 when Acting Unit stop riding) - seems to increment height above unit (?) Returns : r2 = 0x00 if AoE of move is not finsihed r2 = 0x04 if AoE ended r2 = 0x01 when ? (Above 8 section) Multiple Height Check to finaly set some Origin height data in S-Pad 0x180 (0x48 0x49 0x36 0x46 0x1d 0x10) ------------------------------------------------------------------------------------------------------------ 0017567c: 27bdffe0 addiu r29,r29,-0x0020 | 00175680: afb20018 sw r18,0x0018(r29) | 00175684: 3c128019 lui r18,0x8019 | 00175688: 8e52f4e0 lw r18,-0x0b20(r18) |Pointer to scratch pad 0x1f800000 0017568c: afb10014 sw r17,0x0014(r29) | 00175690: 3c118019 lui r17,0x8019 | 00175694: 8e31f4f0 lw r17,-0x0b10(r17) |Pointer to Scratch Pad 0x1f800200 00175698: afb00010 sw r16,0x0010(r29) | 0017569c: 3c108019 lui r16,0x8019 | 001756a0: 8e10f4e4 lw r16,-0x0b1c(r16) |Pointer to Scratch Pad 0x1f800180 001756a4: 3c058019 lui r5,0x8019 | 001756a8: 8ca5f4e8 lw r5,-0x0b18(r5) |Pointer to scratch pad 0x1f800080 001756ac: 28830008 slti r3,r4,0x0008 | 001756b0: 10600005 beq r3,r0,0x001756c8 #If Counter < 8 001756b4: afbf001c sw r31,0x001c(r29) | 001756b8: 92020040 lbu r2,0x0040(r16) |Load Tile/Unit Path flag 001756bc: 00000000 nop | 001756c0: 1040004a beq r2,r0,0x001757ec #If Path flag = 0 then branch to Tile section 001756c4: 00000000 nop | 001756c8: 8e020008 lw r2,0x0008(r16) |Pointer : Tile's data in Targetable grid table 80192dd8 001756cc: 00000000 nop | 001756d0: 90420002 lbu r2,0x0002(r2) |Unit ID on Tile 001756d4: 14600020 bne r3,r0,0x00175758 #If Value is between 4 and 7 Branch to Unit section 001756d8: a2020041 sb r2,0x0041(r16) |Store Unit ID 8 or Above 001756dc: 92030041 lbu r3,0x0041(r16) |Unit ID 001756e0: 00000000 nop | 001756e4: 000310c0 sll r2,r3,0x03 | 001756e8: 00431023 subu r2,r2,r3 |Unit ID * 7 001756ec: 04810002 bgez r4,0x001756f8 #If Preset value < 0x00 001756f0: 00452821 addu r5,r2,r5 |Pointer to Unit data in S-Pad 0x80 001756f4: 24840003 addiu r4,r4,0x0003 |Value +3 001756f8: 92020058 lbu r2,0x0058(r16) |Load Slope Type 001756fc: 92030044 lbu r3,0x0044(r16) |Load Origin Slope Mod 00175700: 00000000 nop | 00175704: 00621007 srav r2,r2,r3 |Side slope 00175708: 92030056 lbu r3,0x0056(r16) |Load Tile's Halves 0017570c: 30420003 andi r2,r2,0x0003 | 00175710: 00620018 mult r3,r2 | 00175714: 90a20005 lbu r2,0x0005(r5) |Unit Height 00175718: 00041883 sra r3,r4,0x02 |Preset Value / 4 0017571c: 00431021 addu r2,r2,r3 |Unit Total Height + Preset Value/4 00175720: 2442fffe addiu r2,r2,-0x0002 | 00175724: a2020048 sb r2,0x0048(r16) |Store Unit Height + PV/4 - 2 00175728: 9202004c lbu r2,0x004c(r16) |Load Origin's Height*2 0017572c: 00001812 mflo r3 |Slope Type * Halves 00175730: 00431021 addu r2,r2,r3 | 00175734: a2020050 sb r2,0x0050(r16) |Store Origin exit side's Height 00175738: 92020048 lbu r2,0x0048(r16) |Load Unit Total Height 0017573c: 92030050 lbu r3,0x0050(r16) |Load Tile's Size height 00175740: 00000000 nop | 00175744: 0043102b sltu r2,r2,r3 | 00175748: 10400013 beq r2,r0,0x00175798 #If Unit Height + PV mod > Origin Exit Size Branch in section below 0017574c: 34020001 ori r2,r0,0x0001 | 00175750: 0805d64f j 0x0017593c >>If not Returns 0x1 00175754: 00000000 nop | --- Above Unit Path (Counter 4 to 7) --- 00175758: 8602001a lh r2,0x001a(r16) |Load Tile ID 0017575c: 00000000 nop | 00175760: 02221021 addu r2,r17,r2 |Tile's data pointer in S-Pad 0x200 00175764: 90420000 lbu r2,0x0000(r2) |Load Tile's flags 00175768: 00000000 nop | 0017576c: 30420008 andi r2,r2,0x0008 |Check 0x08 (Fly - Ally with stepping stone) 00175770: 10400072 beq r2,r0,0x0017593c #If Flag 0x08 is ON Else returns 0x2 00175774: 34020002 ori r2,r0,0x0002 |0x2 00175778: 92020041 lbu r2,0x0041(r16) |Load Unit ID 0017577c: 00000000 nop | 00175780: 000218c0 sll r3,r2,0x03 |ID*8 00175784: 00621823 subu r3,r3,r2 |ID*7 00175788: 00651821 addu r3,r3,r5 |Pointer to Unit data in S-Pad 0x80 0017578c: 90620006 lbu r2,0x0006(r3) |Tile Height + unit Size 00175790: 00000000 nop | 00175794: a2020048 sb r2,0x0048(r16) |Store Height + Size --- > 8 Section Branch here --- 00175798: 86040026 lh r4,0x0026(r16) |Tile's X Coord (for Jal) 0017579c: 86050028 lh r5,0x0028(r16) |Tile's Y Coord (for Jal) 001757a0: 92060044 lbu r6,0x0044(r16) |Exit Side slope mod (for Jal) 001757a4: 92070048 lbu r7,0x0048(r16) |Height + Size (for Jal) 001757a8: 92020048 lbu r2,0x0048(r16) |Height + Size 001757ac: a6000036 sh r0,0x0036(r16) |Reset 0x36 001757b0: 24e7ffff addiu r7,r7,-0x0001 |Height - 1 001757b4: 30e700ff andi r7,r7,0x00ff |Byte only 001757b8: 0c05d859 jal 0x00176164 |-->Calculate_Tile_Ceiling returns r2 = Ceiling height or 0x7f (Height from unit head here) 001757bc: a2020049 sb r2,0x0049(r16) |Store Height + Size 001757c0: 92030041 lbu r3,0x0041(r16) |Unit ID 001757c4: a2020046 sb r2,0x0046(r16) |Store Ceiling Height 001757c8: 24630200 addiu r3,r3,0x0200 |Unit ID + 0x200 001757cc: 00031080 sll r2,r3,0x02 | 001757d0: 00431021 addu r2,r2,r3 |Pointer to Unit data in Post-Grid Table 801937d8 001757d4: a603001e sh r3,0x001e(r16) |Unit Offset in Post-Grid Table 001757d8: 3c038019 lui r3,0x8019 | 001757dc: 24632dd8 addiu r3,r3,0x2dd8 |Start of Targetable grid data 001757e0: 00431021 addu r2,r2,r3 |Unit Data (Offset 0x05) at 801937d8 001757e4: 0805d649 j 0x00175924 >>End section 001757e8: ae020010 sw r2,0x0010(r16) |Store pointer ---- Tile Section --- 001757ec: 92020058 lbu r2,0x0058(r16) |Load Tile's Slope Type 001757f0: 92030044 lbu r3,0x0044(r16) |Load Exit Side Slope Mod 001757f4: 00000000 nop | 001757f8: 00621007 srav r2,r2,r3 | 001757fc: 92030056 lbu r3,0x0056(r16) |Load Tile's Halves 00175800: 30420003 andi r2,r2,0x0003 |Exit Side Slope mod 00175804: 00620018 mult r3,r2 | 00175808: 92020058 lbu r2,0x0058(r16) |Slope Type 0017580c: 92030045 lbu r3,0x0045(r16) |Opposite Side Slope Mod 00175810: 00000000 nop | 00175814: 00621007 srav r2,r2,r3 | 00175818: 00003812 mflo r7 |Exit Side slope mod * Halves 0017581c: 92030056 lbu r3,0x0056(r16) |Tile's Halves 00175820: 30420003 andi r2,r2,0x0003 | 00175824: 00620018 mult r3,r2 | 00175828: 86040026 lh r4,0x0026(r16) |X Coord (for Jal) 0017582c: 86050028 lh r5,0x0028(r16) |Y Coord (for Jal) 00175830: 9202004c lbu r2,0x004c(r16) |Tile's Height*2 00175834: 92060044 lbu r6,0x0044(r16) |Exit Side Slope Mod (for Jal) 00175838: 00471021 addu r2,r2,r7 | 0017583c: a2020048 sb r2,0x0048(r16) |Store Exit Side Height Height * 2 + Halve * Exit Side slope mod (0,1 or 2) 00175840: 9202004c lbu r2,0x004c(r16) |Tile's Height*2 00175844: 00001812 mflo r3 |Opposite Side slope mod * Halves 00175848: 00431021 addu r2,r2,r3 |Opposite Side Height 0017584c: a2020049 sb r2,0x0049(r16) |Store Opposite Side Height 00175850: 92020048 lbu r2,0x0048(r16) |Exit Side Height 00175854: 92030049 lbu r3,0x0049(r16) |Opposite Side Height 00175858: 92070048 lbu r7,0x0048(r16) |Exit Side Height (for Jal) 0017585c: 00431023 subu r2,r2,r3 |Delta Height (2 Side) 00175860: 0c05d859 jal 0x00176164 |-->Calculate_Tile_Ceiling returns r2 = Ceiling height or 0x7f 00175864: a6020036 sh r2,0x0036(r16) |Store Height diffences (of the 2 sides) 00175868: 86030036 lh r3,0x0036(r16) |Load delta Height 0017586c: 00000000 nop | 00175870: 04600009 bltz r3,0x00175898 #If Delta height is Valid 00175874: a2020046 sb r2,0x0046(r16) |Store ceiling height 00175878: 8602001a lh r2,0x001a(r16) |Load Tile ID 0017587c: 00000000 nop | 00175880: 02221021 addu r2,r17,r2 |Pointer to Tile S-Pad 0x200 00175884: 90420000 lbu r2,0x0000(r2) |Load Flags 00175888: 00000000 nop | 0017588c: 30420040 andi r2,r2,0x0040 |Check Unwalkable 00175890: 1440002a bne r2,r0,0x0017593c #If Tile is unWalkable (0x40 if ON) : Exit and returns 0x03 00175894: 34020003 ori r2,r0,0x0003 | 00175898: 8e030000 lw r3,0x0000(r16) |Load Tile's data pointer ( 8019f8cc Table) 0017589c: 00000000 nop | 001758a0: 90620003 lbu r2,0x0003(r3) |Halve + Depth 001758a4: 00000000 nop | 001758a8: 304200e0 andi r2,r2,0x00e0 |Depth only 001758ac: 10400012 beq r2,r0,0x001758f8 #If depht > 0x00 001758b0: 00000000 nop | 001758b4: 9242001c lbu r2,0x001c(r18) |Load Unit's Movement 3 001758b8: 00000000 nop | 001758bc: 304200c0 andi r2,r2,0x00c0 |Check on/in Water 001758c0: 1040000d beq r2,r0,0x001758f8 #If Unit Can walk on/in water 001758c4: 00000000 nop | 001758c8: 90620003 lbu r2,0x0003(r3) |Halve + Depth 001758cc: 92030048 lbu r3,0x0048(r16) |Exit Side Height 001758d0: 00021142 srl r2,r2,0x05 |Depht only 001758d4: 00021040 sll r2,r2,0x01 |Depht * 2 001758d8: 00621821 addu r3,r3,r2 | 001758dc: a2030048 sb r3,0x0048(r16) |Add Depth*2 to Exit side height 001758e0: 9242001c lbu r2,0x001c(r18) |Load Unit's Movement 3 001758e4: 00000000 nop | 001758e8: 30420040 andi r2,r2,0x0040 | 001758ec: 10400002 beq r2,r0,0x001758f8 #If Unit Uses Move in Water 001758f0: 246200fe addiu r2,r3,-0x0002 |Path Heght - 2 001758f4: a2020048 sb r2,0x0048(r16) |Add Depth*2 - 2 to Exit side Height 001758f8: 9602001a lhu r2,0x001a(r16) |Load Tile ID 001758fc: 00000000 nop | 00175900: a602001e sh r2,0x001e(r16) |Store Tile's ID in 0x1e 00175904: 00021400 sll r2,r2,0x10 | 00175908: 00021403 sra r2,r2,0x10 | 0017590c: 00021880 sll r3,r2,0x02 |Tile ID *4 00175910: 00621821 addu r3,r3,r2 |Tile ID * 5 00175914: 3c028019 lui r2,0x8019 | 00175918: 24422dd8 addiu r2,r2,0x2dd8 | 0017591c: 00621821 addu r3,r3,r2 |Tile Offset in Targetable grid data ( 80192dd8 ) 00175920: ae030010 sw r3,0x0010(r16) |Store pointer --- End section -- 00175924: 8e020010 lw r2,0x0010(r16) |Load Grid Pointer / Unit post grid pointer 00175928: 00000000 nop | 0017592c: 90420000 lbu r2,0x0000(r2) |Load Tile's AoE data 00175930: 00000000 nop | 00175934: 2c420002 sltiu r2,r2,0x0002 |1 if AoE < 2 00175938: 00021080 sll r2,r2,0x02 |4 if AoE < 2 / Else 0x00 0017593c: 8fbf001c lw r31,0x001c(r29) END 00175940: 8fb20018 lw r18,0x0018(r29) 00175944: 8fb10014 lw r17,0x0014(r29) 00175948: 8fb00010 lw r16,0x0010(r29) 0017594c: 27bd0020 addiu r29,r29,0x0020 00175950: 03e00008 jr r31 00175954: 00000000 nop
Return Location
BATTLE.BIN 00175f38: Check_and_Spread_Movement_One_Tile_Around 00176560: Spread_Horizontal_Jump