Difference between revisions of "Sin Call Function"

From Final Fantasy Hacktics Wiki
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