Difference between revisions of "Sin Call Function"
Jump to navigation
Jump to search
(Created page with "<font face='Courier New'> 0001bb98: 28820801 slti r2,r4,0x0801 0001bb9c: 10400010 beq r2,r0,0x0001bbe0 0001bba0: 28820401 slti r2,r4,0x0401 0001bba4: 10400006 beq r2,r0,...") |
|||
Line 1: | Line 1: | ||
<font face='Courier New'> | <font face='Courier New'> | ||
− | 0001bb98: 28820801 slti r2,r4,0x0801 | + | 0001bb98: 28820801 slti r2,r4,0x0801 Set if angle input < 0x0801 (<= 180 degrees) |
− | 0001bb9c: 10400010 beq r2,r0,0x0001bbe0 | + | 0001bb9c: 10400010 beq r2,r0,0x0001bbe0 branch if angle > 180 degrees |
− | 0001bba0: 28820401 slti r2,r4,0x0401 | + | 0001bba0: 28820401 slti r2,r4,0x0401 set if angle input < 0x401 (<= 90 degrees) |
− | 0001bba4: 10400006 beq r2,r0,0x0001bbc0 | + | 0001bba4: 10400006 beq r2,r0,0x0001bbc0 branch if angle input > 90 degrees (less than 180, greater than 90). -x +y quadrant |
− | 0001bba8: 00041040 sll r2,r4,0x01 | + | 0001bba8: 00041040 sll r2,r4,0x01 If less than 90 degrees (/): |
0001bbac: 3c018003 lui r1,0x8003 | 0001bbac: 3c018003 lui r1,0x8003 | ||
0001bbb0: 00220821 addu r1,r1,r2 | 0001bbb0: 00220821 addu r1,r1,r2 | ||
− | 0001bbb4: 8422b0a4 lh r2,-0x4f5c(r1) | + | 0001bbb4: 8422b0a4 lh r2,-0x4f5c(r1) Load sin(angle) |
0001bbb8: 08006f08 j 0x0001bc20 | 0001bbb8: 08006f08 j 0x0001bc20 | ||
0001bbbc: 00000000 nop | 0001bbbc: 00000000 nop | ||
− | 0001bbc0: 34020800 ori r2,r0,0x0800 | + | |
− | 0001bbc4: 00441023 subu r2,r2,r4 | + | if angle is > 90 degrees (\) |
+ | 0001bbc0: 34020800 ori r2,r0,0x0800 r2 = 0x800 (180 degrees) | ||
+ | 0001bbc4: 00441023 subu r2,r2,r4 180 - angle | ||
0001bbc8: 00021040 sll r2,r2,0x01 | 0001bbc8: 00021040 sll r2,r2,0x01 | ||
0001bbcc: 3c018003 lui r1,0x8003 | 0001bbcc: 3c018003 lui r1,0x8003 | ||
0001bbd0: 00220821 addu r1,r1,r2 | 0001bbd0: 00220821 addu r1,r1,r2 | ||
− | 0001bbd4: 8422b0a4 lh r2,-0x4f5c(r1) | + | 0001bbd4: 8422b0a4 lh r2,-0x4f5c(r1) Load sin(angle) |
0001bbd8: 08006f08 j 0x0001bc20 | 0001bbd8: 08006f08 j 0x0001bc20 | ||
0001bbdc: 00000000 nop | 0001bbdc: 00000000 nop | ||
− | 0001bbe0: 28820c01 slti r2,r4,0x0c01 | + | |
− | 0001bbe4: 14400009 bne r2,r0,0x0001bc0c | + | if angle > 270 degrees (-\) |
+ | 0001bbe0: 28820c01 slti r2,r4,0x0c01 set if angle < 0x0c01 (angle < 270) | ||
+ | 0001bbe4: 14400009 bne r2,r0,0x0001bc0c Branch if angle < 270 degrees | ||
0001bbe8: 00041040 sll r2,r4,0x01 | 0001bbe8: 00041040 sll r2,r4,0x01 | ||
− | 0001bbec: 34021000 ori r2,r0,0x1000 | + | 0001bbec: 34021000 ori r2,r0,0x1000 r2 = 360 degrees |
− | 0001bbf0: 00441023 subu r2,r2,r4 | + | 0001bbf0: 00441023 subu r2,r2,r4 360 - angle |
0001bbf4: 00021040 sll r2,r2,0x01 | 0001bbf4: 00021040 sll r2,r2,0x01 | ||
0001bbf8: 3c018003 lui r1,0x8003 | 0001bbf8: 3c018003 lui r1,0x8003 | ||
0001bbfc: 00220821 addu r1,r1,r2 | 0001bbfc: 00220821 addu r1,r1,r2 | ||
− | 0001bc00: 8422b0a4 lh r2,-0x4f5c(r1) | + | 0001bc00: 8422b0a4 lh r2,-0x4f5c(r1) load sin(angle) |
0001bc04: 08006f08 j 0x0001bc20 | 0001bc04: 08006f08 j 0x0001bc20 | ||
− | 0001bc08: 00021023 subu r2,r0,r2 | + | 0001bc08: 00021023 subu r2,r0,r2 get negative |
+ | |||
+ | if angle > 0x180 degrees (-/) | ||
0001bc0c: 3c018003 lui r1,0x8003 | 0001bc0c: 3c018003 lui r1,0x8003 | ||
− | 0001bc10: 00220821 addu r1,r1,r2 | + | 0001bc10: 00220821 addu r1,r1,r2 shouldn't this subtract the angle from 270? |
− | 0001bc14: 8422a0a4 lh r2,-0x5f5c(r1) | + | 0001bc14: 8422a0a4 lh r2,-0x5f5c(r1) load sin(angle) |
0001bc18: 00000000 nop | 0001bc18: 00000000 nop | ||
− | 0001bc1c: 00021023 subu r2,r0,r2 | + | 0001bc1c: 00021023 subu r2,r0,r2 get negative |
0001bc20: 03e00008 jr r31 | 0001bc20: 03e00008 jr r31 | ||
0001bc24: 00000000 nop | 0001bc24: 00000000 nop | ||
</font> | </font> |
Revision as of 06:14, 20 March 2022
0001bb98: 28820801 slti r2,r4,0x0801 Set if angle input < 0x0801 (<= 180 degrees) 0001bb9c: 10400010 beq r2,r0,0x0001bbe0 branch if angle > 180 degrees 0001bba0: 28820401 slti r2,r4,0x0401 set if angle input < 0x401 (<= 90 degrees) 0001bba4: 10400006 beq r2,r0,0x0001bbc0 branch if angle input > 90 degrees (less than 180, greater than 90). -x +y quadrant 0001bba8: 00041040 sll r2,r4,0x01 If less than 90 degrees (/): 0001bbac: 3c018003 lui r1,0x8003 0001bbb0: 00220821 addu r1,r1,r2 0001bbb4: 8422b0a4 lh r2,-0x4f5c(r1) Load sin(angle) 0001bbb8: 08006f08 j 0x0001bc20 0001bbbc: 00000000 nop if angle is > 90 degrees (\) 0001bbc0: 34020800 ori r2,r0,0x0800 r2 = 0x800 (180 degrees) 0001bbc4: 00441023 subu r2,r2,r4 180 - angle 0001bbc8: 00021040 sll r2,r2,0x01 0001bbcc: 3c018003 lui r1,0x8003 0001bbd0: 00220821 addu r1,r1,r2 0001bbd4: 8422b0a4 lh r2,-0x4f5c(r1) Load sin(angle) 0001bbd8: 08006f08 j 0x0001bc20 0001bbdc: 00000000 nop if angle > 270 degrees (-\) 0001bbe0: 28820c01 slti r2,r4,0x0c01 set if angle < 0x0c01 (angle < 270) 0001bbe4: 14400009 bne r2,r0,0x0001bc0c Branch if angle < 270 degrees 0001bbe8: 00041040 sll r2,r4,0x01 0001bbec: 34021000 ori r2,r0,0x1000 r2 = 360 degrees 0001bbf0: 00441023 subu r2,r2,r4 360 - angle 0001bbf4: 00021040 sll r2,r2,0x01 0001bbf8: 3c018003 lui r1,0x8003 0001bbfc: 00220821 addu r1,r1,r2 0001bc00: 8422b0a4 lh r2,-0x4f5c(r1) load sin(angle) 0001bc04: 08006f08 j 0x0001bc20 0001bc08: 00021023 subu r2,r0,r2 get negative if angle > 0x180 degrees (-/) 0001bc0c: 3c018003 lui r1,0x8003 0001bc10: 00220821 addu r1,r1,r2 shouldn't this subtract the angle from 270? 0001bc14: 8422a0a4 lh r2,-0x5f5c(r1) load sin(angle) 0001bc18: 00000000 nop 0001bc1c: 00021023 subu r2,r0,r2 get negative 0001bc20: 03e00008 jr r31 0001bc24: 00000000 nop