Difference between revisions of "Knockback with bows"
Jump to navigation
Jump to search
m (links) |
m |
||
Line 3: | Line 3: | ||
0006dc8c: 27bdffe8 addiu r29,r29,0xffe8 | 0006dc8c: 27bdffe8 addiu r29,r29,0xffe8 | ||
0006dc90: afb00010 sw r16,0x0010(r29) | 0006dc90: afb00010 sw r16,0x0010(r29) | ||
− | 0006dc94: 00808021 addu r16,r4,r0 | + | 0006dc94: 00808021 addu r16,r4,r0 Target misc data |
0006dc98: afbf0014 sw r31,0x0014(r29) | 0006dc98: afbf0014 sw r31,0x0014(r29) | ||
0006dc9c: 8e040134 lw r4,0x0134(r16) | 0006dc9c: 8e040134 lw r4,0x0134(r16) | ||
Line 11: | Line 11: | ||
0006dcac: a202009c sb r2,0x009c(r16) | 0006dcac: a202009c sb r2,0x009c(r16) | ||
0006dcb0: 02002021 addu r4,r16,r0 | 0006dcb0: 02002021 addu r4,r16,r0 | ||
− | 0006dcb4: a2020119 sb r2,0x0119(r16) | + | 0006dcb4: a2020119 sb r2,0x0119(r16) store movement flags |
− | 0006dcb8: 2402fcff addiu r2,r0,0xfcff | + | 0006dcb8: 2402fcff addiu r2,r0,0xfcff 0xfffffcff |
− | 0006dcbc: 8e03009c lw r3,0x009c(r16) | + | 0006dcbc: 8e03009c lw r3,0x009c(r16) No. tiles to move + the data for movement for the unit |
− | 0006dcc0: 2405dfff addiu r5,r0,0xdfff | + | 0006dcc0: 2405dfff addiu r5,r0,0xdfff 0xffffdfff |
− | 0006dcc4: 00621824 and r3,r3,r2 | + | 0006dcc4: 00621824 and r3,r3,r2 removes 0x0200 & 0x0100 flags |
− | 0006dcc8: 2402fbff addiu r2,r0,0xfbff | + | 0006dcc8: 2402fbff addiu r2,r0,0xfbff |
− | 0006dccc: 00621824 and r3,r3,r2 | + | 0006dccc: 00621824 and r3,r3,r2 removes 0x0400 flag (removes number of tiles to jump over, just about) |
0006dcd0: 2402f7ff addiu r2,r0,0xf7ff | 0006dcd0: 2402f7ff addiu r2,r0,0xf7ff | ||
− | 0006dcd4: 00621824 and r3,r3,r2 | + | 0006dcd4: 00621824 and r3,r3,r2 removes 0x8000 flag (removes move south) |
0006dcd8: 2402efff addiu r2,r0,0xefff | 0006dcd8: 2402efff addiu r2,r0,0xefff | ||
− | 0006dcdc: 00621824 and r3,r3,r2 | + | 0006dcdc: 00621824 and r3,r3,r2 removes 0x1000 flag (removes another number of tiles to jump over bit) |
− | 0006dce0: 92020082 lbu r2,0x0082(r16) | + | 0006dce0: 92020082 lbu r2,0x0082(r16) load unit's map level |
− | 0006dce4: 00652824 and r5,r3,r5 | + | 0006dce4: 00652824 and r5,r3,r5 removes 0x2000 flag (removes move to higher elevation) |
− | 0006dce8: ae03009c sw r3,0x009c(r16) | + | 0006dce8: ae03009c sw r3,0x009c(r16) restore |
0006dcec: 30420001 andi r2,r2,0x0001 | 0006dcec: 30420001 andi r2,r2,0x0001 | ||
0006dcf0: 00021340 sll r2,r2,0x0d | 0006dcf0: 00021340 sll r2,r2,0x0d | ||
− | 0006dcf4: 00a22825 or r5,r5,r2 | + | 0006dcf4: 00a22825 or r5,r5,r2 if moving to higher elevation, restore higher elevation bit |
− | 0006dcf8: 0c01b0af jal 0x0006c2bc | + | 0006dcf8: 0c01b0af jal 0x0006c2bc [[0006c2bc - 0006c31c]] returns move direction for knocked back units |
− | 0006dcfc: ae05009c sw r5,0x009c(r16) | + | 0006dcfc: ae05009c sw r5,0x009c(r16) restore. again. |
0006dd00: 00401821 addu r3,r2,r0 | 0006dd00: 00401821 addu r3,r2,r0 | ||
0006dd04: 34020001 ori r2,r0,0x0001 | 0006dd04: 34020001 ori r2,r0,0x0001 | ||
− | 0006dd08: 1062001c beq r3,r2,0x0006dd7c | + | 0006dd08: 1062001c beq r3,r2,0x0006dd7c branch if returns 1 |
0006dd0c: 28620002 slti r2,r3,0x0002 | 0006dd0c: 28620002 slti r2,r3,0x0002 | ||
− | 0006dd10: 10400005 beq r2,r0,0x0006dd28 | + | 0006dd10: 10400005 beq r2,r0,0x0006dd28 branch if returns 2 or 3 |
0006dd14: 00000000 nop | 0006dd14: 00000000 nop | ||
− | 0006dd18: 1060000e beq r3,r0,0x0006dd54 | + | 0006dd18: 1060000e beq r3,r0,0x0006dd54 branch if returns 0 |
0006dd1c: 3c03ffff lui r3,0xffff | 0006dd1c: 3c03ffff lui r3,0xffff | ||
− | 0006dd20: 0801b765 j 0x0006dd94 | + | 0006dd20: 0801b765 j 0x0006dd94 if error |
− | 0006dd24: 34028000 ori r2,r0,0x8000 | + | 0006dd24: 34028000 ori r2,r0,0x8000 move south |
+ | |||
0006dd28: 34020002 ori r2,r0,0x0002 | 0006dd28: 34020002 ori r2,r0,0x0002 | ||
− | 0006dd2c: 10620006 beq r3,r2,0x0006dd48 | + | 0006dd2c: 10620006 beq r3,r2,0x0006dd48 branch if returns 2 |
0006dd30: 00000000 nop | 0006dd30: 00000000 nop | ||
0006dd34: 34020003 ori r2,r0,0x0003 | 0006dd34: 34020003 ori r2,r0,0x0003 | ||
− | 0006dd38: 1062000b beq r3,r2,0x0006dd68 | + | 0006dd38: 1062000b beq r3,r2,0x0006dd68 branch if returns 3 |
0006dd3c: 3c03ffff lui r3,0xffff | 0006dd3c: 3c03ffff lui r3,0xffff | ||
0006dd40: 0801b765 j 0x0006dd94 | 0006dd40: 0801b765 j 0x0006dd94 | ||
− | 0006dd44: 34028000 ori r2,r0,0x8000 | + | 0006dd44: 34028000 ori r2,r0,0x8000 move south |
+ | |||
0006dd48: 8e02009c lw r2,0x009c(r16) | 0006dd48: 8e02009c lw r2,0x009c(r16) | ||
0006dd4c: 0801b763 j 0x0006dd8c | 0006dd4c: 0801b763 j 0x0006dd8c | ||
− | 0006dd50: 3442c000 ori r2,r2,0xc000 | + | 0006dd50: 3442c000 ori r2,r2,0xc000 if returns 2, enable move north |
+ | |||
0006dd54: 8e02009c lw r2,0x009c(r16) | 0006dd54: 8e02009c lw r2,0x009c(r16) | ||
0006dd58: 34633fff ori r3,r3,0x3fff | 0006dd58: 34633fff ori r3,r3,0x3fff | ||
0006dd5c: 00431024 and r2,r2,r3 | 0006dd5c: 00431024 and r2,r2,r3 | ||
− | 0006dd60: 0801b763 j 0x0006dd8c | + | 0006dd60: 0801b763 j 0x0006dd8c if returns 0, enable move south |
0006dd64: 34428000 ori r2,r2,0x8000 | 0006dd64: 34428000 ori r2,r2,0x8000 | ||
+ | |||
0006dd68: 8e02009c lw r2,0x009c(r16) | 0006dd68: 8e02009c lw r2,0x009c(r16) | ||
0006dd6c: 34633fff ori r3,r3,0x3fff | 0006dd6c: 34633fff ori r3,r3,0x3fff | ||
0006dd70: 00431024 and r2,r2,r3 | 0006dd70: 00431024 and r2,r2,r3 | ||
− | 0006dd74: 0801b763 j 0x0006dd8c | + | 0006dd74: 0801b763 j 0x0006dd8c if returns 3, enable move west |
0006dd78: 34424000 ori r2,r2,0x4000 | 0006dd78: 34424000 ori r2,r2,0x4000 | ||
+ | |||
0006dd7c: 3c03ffff lui r3,0xffff | 0006dd7c: 3c03ffff lui r3,0xffff | ||
0006dd80: 8e02009c lw r2,0x009c(r16) | 0006dd80: 8e02009c lw r2,0x009c(r16) | ||
0006dd84: 34633fff ori r3,r3,0x3fff | 0006dd84: 34633fff ori r3,r3,0x3fff | ||
0006dd88: 00431024 and r2,r2,r3 | 0006dd88: 00431024 and r2,r2,r3 | ||
− | 0006dd8c: ae02009c sw r2,0x009c(r16) | + | 0006dd8c: ae02009c sw r2,0x009c(r16) if returns 1, enable move east |
0006dd90: 34028000 ori r2,r0,0x8000 | 0006dd90: 34028000 ori r2,r0,0x8000 | ||
− | 0006dd94: ae020038 sw r2,0x0038(r16) | + | 0006dd94: ae020038 sw r2,0x0038(r16) enable 0x8000 special movement flag (knockback?) |
0006dd98: 8fbf0014 lw r31,0x0014(r29) | 0006dd98: 8fbf0014 lw r31,0x0014(r29) | ||
0006dd9c: 8fb00010 lw r16,0x0010(r29) | 0006dd9c: 8fb00010 lw r16,0x0010(r29) |
Revision as of 02:44, 3 May 2024
0006dc8c: 27bdffe8 addiu r29,r29,0xffe8 0006dc90: afb00010 sw r16,0x0010(r29) 0006dc94: 00808021 addu r16,r4,r0 Target misc data 0006dc98: afbf0014 sw r31,0x0014(r29) 0006dc9c: 8e040134 lw r4,0x0134(r16) 0006dca0: 34020001 ori r2,r0,0x0001 0006dca4: ae000098 sw r0,0x0098(r16) 0006dca8: 0c05fc08 jal 0x0017f020 Float/Float/Fly_movements 0006dcac: a202009c sb r2,0x009c(r16) 0006dcb0: 02002021 addu r4,r16,r0 0006dcb4: a2020119 sb r2,0x0119(r16) store movement flags 0006dcb8: 2402fcff addiu r2,r0,0xfcff 0xfffffcff 0006dcbc: 8e03009c lw r3,0x009c(r16) No. tiles to move + the data for movement for the unit 0006dcc0: 2405dfff addiu r5,r0,0xdfff 0xffffdfff 0006dcc4: 00621824 and r3,r3,r2 removes 0x0200 & 0x0100 flags 0006dcc8: 2402fbff addiu r2,r0,0xfbff 0006dccc: 00621824 and r3,r3,r2 removes 0x0400 flag (removes number of tiles to jump over, just about) 0006dcd0: 2402f7ff addiu r2,r0,0xf7ff 0006dcd4: 00621824 and r3,r3,r2 removes 0x8000 flag (removes move south) 0006dcd8: 2402efff addiu r2,r0,0xefff 0006dcdc: 00621824 and r3,r3,r2 removes 0x1000 flag (removes another number of tiles to jump over bit) 0006dce0: 92020082 lbu r2,0x0082(r16) load unit's map level 0006dce4: 00652824 and r5,r3,r5 removes 0x2000 flag (removes move to higher elevation) 0006dce8: ae03009c sw r3,0x009c(r16) restore 0006dcec: 30420001 andi r2,r2,0x0001 0006dcf0: 00021340 sll r2,r2,0x0d 0006dcf4: 00a22825 or r5,r5,r2 if moving to higher elevation, restore higher elevation bit 0006dcf8: 0c01b0af jal 0x0006c2bc 0006c2bc - 0006c31c returns move direction for knocked back units 0006dcfc: ae05009c sw r5,0x009c(r16) restore. again. 0006dd00: 00401821 addu r3,r2,r0 0006dd04: 34020001 ori r2,r0,0x0001 0006dd08: 1062001c beq r3,r2,0x0006dd7c branch if returns 1 0006dd0c: 28620002 slti r2,r3,0x0002 0006dd10: 10400005 beq r2,r0,0x0006dd28 branch if returns 2 or 3 0006dd14: 00000000 nop 0006dd18: 1060000e beq r3,r0,0x0006dd54 branch if returns 0 0006dd1c: 3c03ffff lui r3,0xffff 0006dd20: 0801b765 j 0x0006dd94 if error 0006dd24: 34028000 ori r2,r0,0x8000 move south
0006dd28: 34020002 ori r2,r0,0x0002 0006dd2c: 10620006 beq r3,r2,0x0006dd48 branch if returns 2 0006dd30: 00000000 nop 0006dd34: 34020003 ori r2,r0,0x0003 0006dd38: 1062000b beq r3,r2,0x0006dd68 branch if returns 3 0006dd3c: 3c03ffff lui r3,0xffff 0006dd40: 0801b765 j 0x0006dd94 0006dd44: 34028000 ori r2,r0,0x8000 move south
0006dd48: 8e02009c lw r2,0x009c(r16) 0006dd4c: 0801b763 j 0x0006dd8c 0006dd50: 3442c000 ori r2,r2,0xc000 if returns 2, enable move north
0006dd54: 8e02009c lw r2,0x009c(r16) 0006dd58: 34633fff ori r3,r3,0x3fff 0006dd5c: 00431024 and r2,r2,r3 0006dd60: 0801b763 j 0x0006dd8c if returns 0, enable move south 0006dd64: 34428000 ori r2,r2,0x8000
0006dd68: 8e02009c lw r2,0x009c(r16) 0006dd6c: 34633fff ori r3,r3,0x3fff 0006dd70: 00431024 and r2,r2,r3 0006dd74: 0801b763 j 0x0006dd8c if returns 3, enable move west 0006dd78: 34424000 ori r2,r2,0x4000
0006dd7c: 3c03ffff lui r3,0xffff 0006dd80: 8e02009c lw r2,0x009c(r16) 0006dd84: 34633fff ori r3,r3,0x3fff 0006dd88: 00431024 and r2,r2,r3 0006dd8c: ae02009c sw r2,0x009c(r16) if returns 1, enable move east 0006dd90: 34028000 ori r2,r0,0x8000 0006dd94: ae020038 sw r2,0x0038(r16) enable 0x8000 special movement flag (knockback?) 0006dd98: 8fbf0014 lw r31,0x0014(r29) 0006dd9c: 8fb00010 lw r16,0x0010(r29) 0006dda0: 27bd0018 addiu r29,r29,0x0018 0006dda4: 03e00008 jr r31 0006dda8: 00000000 nop