summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryenatch <yenatch@gmail.com>2017-06-19 20:56:40 -0400
committerGitHub <noreply@github.com>2017-06-19 20:56:40 -0400
commit2c4dc714db7cb1d37963fcadddf2f7a744f1e654 (patch)
treed95da4a2cf854a8bd4c05a978966e728ac8bfae4
parent13ff901d46f1726d5c0680cf8593484e0e9bbc4d (diff)
parent2c6e9e9bc5c4a88ae50f17c5bd22e59328da074b (diff)
Merge pull request #327 from camthesaxman/trig_data
convert trig data to C
-rw-r--r--data/sine_degree_table.inc183
-rw-r--r--data/sine_table.inc323
-rw-r--r--data/trig.s10
-rw-r--r--include/trig.h2
-rwxr-xr-xld_script.txt2
-rw-r--r--src/trig.c516
6 files changed, 517 insertions, 519 deletions
diff --git a/data/sine_degree_table.inc b/data/sine_degree_table.inc
deleted file mode 100644
index a9cf05b62..000000000
--- a/data/sine_degree_table.inc
+++ /dev/null
@@ -1,183 +0,0 @@
-@ values of sin(x) as Q4.12 fixed-point numbers from x = 0° to x = 179°
- .align 1
-gSineDegreeTable:: @ 82085C4
- .2byte 0x0000 @ sin(0°) = 0
- .2byte 0x0047 @ sin(1°) = 0.017333984375
- .2byte 0x008F @ sin(2°) = 0.034912109375
- .2byte 0x00D6 @ sin(3°) = 0.05224609375
- .2byte 0x011E @ sin(4°) = 0.06982421875
- .2byte 0x0165 @ sin(5°) = 0.087158203125
- .2byte 0x01AC @ sin(6°) = 0.1044921875
- .2byte 0x01F3 @ sin(7°) = 0.121826171875
- .2byte 0x023A @ sin(8°) = 0.13916015625
- .2byte 0x0281 @ sin(9°) = 0.156494140625
- .2byte 0x02C7 @ sin(10°) = 0.173583984375
- .2byte 0x030E @ sin(11°) = 0.19091796875
- .2byte 0x0354 @ sin(12°) = 0.2080078125
- .2byte 0x0399 @ sin(13°) = 0.224853515625
- .2byte 0x03DF @ sin(14°) = 0.241943359375
- .2byte 0x0424 @ sin(15°) = 0.2587890625
- .2byte 0x0469 @ sin(16°) = 0.275634765625
- .2byte 0x04AE @ sin(17°) = 0.29248046875
- .2byte 0x04F2 @ sin(18°) = 0.30908203125
- .2byte 0x0536 @ sin(19°) = 0.32568359375
- .2byte 0x0579 @ sin(20°) = 0.342041015625
- .2byte 0x05BC @ sin(21°) = 0.3583984375
- .2byte 0x05FE @ sin(22°) = 0.37451171875
- .2byte 0x0640 @ sin(23°) = 0.390625
- .2byte 0x0682 @ sin(24°) = 0.40673828125
- .2byte 0x06C3 @ sin(25°) = 0.422607421875
- .2byte 0x0704 @ sin(26°) = 0.4384765625
- .2byte 0x0744 @ sin(27°) = 0.4541015625
- .2byte 0x0783 @ sin(28°) = 0.469482421875
- .2byte 0x07C2 @ sin(29°) = 0.48486328125
- .2byte 0x0800 @ sin(30°) = 0.5
- .2byte 0x083E @ sin(31°) = 0.51513671875
- .2byte 0x087B @ sin(32°) = 0.530029296875
- .2byte 0x08B7 @ sin(33°) = 0.544677734375
- .2byte 0x08F2 @ sin(34°) = 0.55908203125
- .2byte 0x092D @ sin(35°) = 0.573486328125
- .2byte 0x0968 @ sin(36°) = 0.587890625
- .2byte 0x09A1 @ sin(37°) = 0.601806640625
- .2byte 0x09DA @ sin(38°) = 0.61572265625
- .2byte 0x0A12 @ sin(39°) = 0.62939453125
- .2byte 0x0A49 @ sin(40°) = 0.642822265625
- .2byte 0x0A7F @ sin(41°) = 0.656005859375
- .2byte 0x0AB5 @ sin(42°) = 0.669189453125
- .2byte 0x0AE9 @ sin(43°) = 0.681884765625
- .2byte 0x0B1D @ sin(44°) = 0.694580078125
- .2byte 0x0B50 @ sin(45°) = 0.70703125
- .2byte 0x0B82 @ sin(46°) = 0.71923828125
- .2byte 0x0BB4 @ sin(47°) = 0.7314453125
- .2byte 0x0BE4 @ sin(48°) = 0.7431640625
- .2byte 0x0C13 @ sin(49°) = 0.754638671875
- .2byte 0x0C42 @ sin(50°) = 0.76611328125
- .2byte 0x0C6F @ sin(51°) = 0.777099609375
- .2byte 0x0C9C @ sin(52°) = 0.7880859375
- .2byte 0x0CC7 @ sin(53°) = 0.798583984375
- .2byte 0x0CF2 @ sin(54°) = 0.80908203125
- .2byte 0x0D1B @ sin(55°) = 0.819091796875
- .2byte 0x0D44 @ sin(56°) = 0.8291015625
- .2byte 0x0D6B @ sin(57°) = 0.838623046875
- .2byte 0x0D92 @ sin(58°) = 0.84814453125
- .2byte 0x0DB7 @ sin(59°) = 0.857177734375
- .2byte 0x0DDB @ sin(60°) = 0.865966796875
- .2byte 0x0DFE @ sin(61°) = 0.87451171875
- .2byte 0x0E21 @ sin(62°) = 0.883056640625
- .2byte 0x0E42 @ sin(63°) = 0.89111328125
- .2byte 0x0E61 @ sin(64°) = 0.898681640625
- .2byte 0x0E80 @ sin(65°) = 0.90625
- .2byte 0x0E9E @ sin(66°) = 0.91357421875
- .2byte 0x0EBA @ sin(67°) = 0.92041015625
- .2byte 0x0ED6 @ sin(68°) = 0.92724609375
- .2byte 0x0EF0 @ sin(69°) = 0.93359375
- .2byte 0x0F09 @ sin(70°) = 0.939697265625
- .2byte 0x0F21 @ sin(71°) = 0.945556640625
- .2byte 0x0F38 @ sin(72°) = 0.951171875
- .2byte 0x0F4D @ sin(73°) = 0.956298828125
- .2byte 0x0F61 @ sin(74°) = 0.961181640625
- .2byte 0x0F74 @ sin(75°) = 0.9658203125
- .2byte 0x0F86 @ sin(76°) = 0.97021484375
- .2byte 0x0F97 @ sin(77°) = 0.974365234375
- .2byte 0x0FA6 @ sin(78°) = 0.97802734375
- .2byte 0x0FB5 @ sin(79°) = 0.981689453125
- .2byte 0x0FC2 @ sin(80°) = 0.98486328125
- .2byte 0x0FCE @ sin(81°) = 0.98779296875
- .2byte 0x0FD8 @ sin(82°) = 0.990234375
- .2byte 0x0FE1 @ sin(83°) = 0.992431640625
- .2byte 0x0FE9 @ sin(84°) = 0.994384765625
- .2byte 0x0FF0 @ sin(85°) = 0.99609375
- .2byte 0x0FF6 @ sin(86°) = 0.99755859375
- .2byte 0x0FFA @ sin(87°) = 0.99853515625
- .2byte 0x0FFD @ sin(88°) = 0.999267578125
- .2byte 0x0FFF @ sin(89°) = 0.999755859375
- .2byte 0x1000 @ sin(90°) = 1
- .2byte 0x0FFF @ sin(91°) = 0.999755859375
- .2byte 0x0FFD @ sin(92°) = 0.999267578125
- .2byte 0x0FFA @ sin(93°) = 0.99853515625
- .2byte 0x0FF6 @ sin(94°) = 0.99755859375
- .2byte 0x0FF0 @ sin(95°) = 0.99609375
- .2byte 0x0FE9 @ sin(96°) = 0.994384765625
- .2byte 0x0FE1 @ sin(97°) = 0.992431640625
- .2byte 0x0FD8 @ sin(98°) = 0.990234375
- .2byte 0x0FCE @ sin(99°) = 0.98779296875
- .2byte 0x0FC2 @ sin(100°) = 0.98486328125
- .2byte 0x0FB5 @ sin(101°) = 0.981689453125
- .2byte 0x0FA6 @ sin(102°) = 0.97802734375
- .2byte 0x0F97 @ sin(103°) = 0.974365234375
- .2byte 0x0F86 @ sin(104°) = 0.97021484375
- .2byte 0x0F74 @ sin(105°) = 0.9658203125
- .2byte 0x0F61 @ sin(106°) = 0.961181640625
- .2byte 0x0F4D @ sin(107°) = 0.956298828125
- .2byte 0x0F38 @ sin(108°) = 0.951171875
- .2byte 0x0F21 @ sin(109°) = 0.945556640625
- .2byte 0x0F09 @ sin(110°) = 0.939697265625
- .2byte 0x0EF0 @ sin(111°) = 0.93359375
- .2byte 0x0ED6 @ sin(112°) = 0.92724609375
- .2byte 0x0EBA @ sin(113°) = 0.92041015625
- .2byte 0x0E9E @ sin(114°) = 0.91357421875
- .2byte 0x0E80 @ sin(115°) = 0.90625
- .2byte 0x0E61 @ sin(116°) = 0.898681640625
- .2byte 0x0E42 @ sin(117°) = 0.89111328125
- .2byte 0x0E21 @ sin(118°) = 0.883056640625
- .2byte 0x0DFE @ sin(119°) = 0.87451171875
- .2byte 0x0DDB @ sin(120°) = 0.865966796875
- .2byte 0x0DB7 @ sin(121°) = 0.857177734375
- .2byte 0x0D92 @ sin(122°) = 0.84814453125
- .2byte 0x0D6B @ sin(123°) = 0.838623046875
- .2byte 0x0D44 @ sin(124°) = 0.8291015625
- .2byte 0x0D1B @ sin(125°) = 0.819091796875
- .2byte 0x0CF2 @ sin(126°) = 0.80908203125
- .2byte 0x0CC7 @ sin(127°) = 0.798583984375
- .2byte 0x0C9C @ sin(128°) = 0.7880859375
- .2byte 0x0C6F @ sin(129°) = 0.777099609375
- .2byte 0x0C42 @ sin(130°) = 0.76611328125
- .2byte 0x0C13 @ sin(131°) = 0.754638671875
- .2byte 0x0BE4 @ sin(132°) = 0.7431640625
- .2byte 0x0BB4 @ sin(133°) = 0.7314453125
- .2byte 0x0B82 @ sin(134°) = 0.71923828125
- .2byte 0x0B50 @ sin(135°) = 0.70703125
- .2byte 0x0B1D @ sin(136°) = 0.694580078125
- .2byte 0x0AE9 @ sin(137°) = 0.681884765625
- .2byte 0x0AB5 @ sin(138°) = 0.669189453125
- .2byte 0x0A7F @ sin(139°) = 0.656005859375
- .2byte 0x0A49 @ sin(140°) = 0.642822265625
- .2byte 0x0A12 @ sin(141°) = 0.62939453125
- .2byte 0x09DA @ sin(142°) = 0.61572265625
- .2byte 0x09A1 @ sin(143°) = 0.601806640625
- .2byte 0x0968 @ sin(144°) = 0.587890625
- .2byte 0x092D @ sin(145°) = 0.573486328125
- .2byte 0x08F2 @ sin(146°) = 0.55908203125
- .2byte 0x08B7 @ sin(147°) = 0.544677734375
- .2byte 0x087B @ sin(148°) = 0.530029296875
- .2byte 0x083E @ sin(149°) = 0.51513671875
- .2byte 0x0800 @ sin(150°) = 0.5
- .2byte 0x07C2 @ sin(151°) = 0.48486328125
- .2byte 0x0783 @ sin(152°) = 0.469482421875
- .2byte 0x0744 @ sin(153°) = 0.4541015625
- .2byte 0x0704 @ sin(154°) = 0.4384765625
- .2byte 0x06C3 @ sin(155°) = 0.422607421875
- .2byte 0x0682 @ sin(156°) = 0.40673828125
- .2byte 0x0640 @ sin(157°) = 0.390625
- .2byte 0x05FE @ sin(158°) = 0.37451171875
- .2byte 0x05BC @ sin(159°) = 0.3583984375
- .2byte 0x0579 @ sin(160°) = 0.342041015625
- .2byte 0x0536 @ sin(161°) = 0.32568359375
- .2byte 0x04F2 @ sin(162°) = 0.30908203125
- .2byte 0x04AE @ sin(163°) = 0.29248046875
- .2byte 0x0469 @ sin(164°) = 0.275634765625
- .2byte 0x0424 @ sin(165°) = 0.2587890625
- .2byte 0x03DF @ sin(166°) = 0.241943359375
- .2byte 0x0399 @ sin(167°) = 0.224853515625
- .2byte 0x0354 @ sin(168°) = 0.2080078125
- .2byte 0x030E @ sin(169°) = 0.19091796875
- .2byte 0x02C7 @ sin(170°) = 0.173583984375
- .2byte 0x0281 @ sin(171°) = 0.156494140625
- .2byte 0x023A @ sin(172°) = 0.13916015625
- .2byte 0x01F3 @ sin(173°) = 0.121826171875
- .2byte 0x01AC @ sin(174°) = 0.1044921875
- .2byte 0x0165 @ sin(175°) = 0.087158203125
- .2byte 0x011E @ sin(176°) = 0.06982421875
- .2byte 0x00D6 @ sin(177°) = 0.05224609375
- .2byte 0x008F @ sin(178°) = 0.034912109375
- .2byte 0x0047 @ sin(179°) = 0.017333984375
diff --git a/data/sine_table.inc b/data/sine_table.inc
deleted file mode 100644
index fd1a5da72..000000000
--- a/data/sine_table.inc
+++ /dev/null
@@ -1,323 +0,0 @@
-@ values of sin(x*(π/128)) as Q8.8 fixed-point numbers from x = 0 to x = 319
- .align 1
-gSineTable:: @ 8208344
- .2byte 0x0000 @ sin(0*(π/128)) = 0
- .2byte 0x0006 @ sin(1*(π/128)) = 0.0234375
- .2byte 0x000C @ sin(2*(π/128)) = 0.046875
- .2byte 0x0012 @ sin(3*(π/128)) = 0.0703125
- .2byte 0x0019 @ sin(4*(π/128)) = 0.09765625
- .2byte 0x001F @ sin(5*(π/128)) = 0.12109375
- .2byte 0x0025 @ sin(6*(π/128)) = 0.14453125
- .2byte 0x002B @ sin(7*(π/128)) = 0.16796875
- .2byte 0x0031 @ sin(8*(π/128)) = 0.19140625
- .2byte 0x0038 @ sin(9*(π/128)) = 0.21875
- .2byte 0x003E @ sin(10*(π/128)) = 0.2421875
- .2byte 0x0044 @ sin(11*(π/128)) = 0.265625
- .2byte 0x004A @ sin(12*(π/128)) = 0.2890625
- .2byte 0x0050 @ sin(13*(π/128)) = 0.3125
- .2byte 0x0056 @ sin(14*(π/128)) = 0.3359375
- .2byte 0x005C @ sin(15*(π/128)) = 0.359375
- .2byte 0x0061 @ sin(16*(π/128)) = 0.37890625
- .2byte 0x0067 @ sin(17*(π/128)) = 0.40234375
- .2byte 0x006D @ sin(18*(π/128)) = 0.42578125
- .2byte 0x0073 @ sin(19*(π/128)) = 0.44921875
- .2byte 0x0078 @ sin(20*(π/128)) = 0.46875
- .2byte 0x007E @ sin(21*(π/128)) = 0.4921875
- .2byte 0x0083 @ sin(22*(π/128)) = 0.51171875
- .2byte 0x0088 @ sin(23*(π/128)) = 0.53125
- .2byte 0x008E @ sin(24*(π/128)) = 0.5546875
- .2byte 0x0093 @ sin(25*(π/128)) = 0.57421875
- .2byte 0x0098 @ sin(26*(π/128)) = 0.59375
- .2byte 0x009D @ sin(27*(π/128)) = 0.61328125
- .2byte 0x00A2 @ sin(28*(π/128)) = 0.6328125
- .2byte 0x00A7 @ sin(29*(π/128)) = 0.65234375
- .2byte 0x00AB @ sin(30*(π/128)) = 0.66796875
- .2byte 0x00B0 @ sin(31*(π/128)) = 0.6875
- .2byte 0x00B5 @ sin(32*(π/128)) = 0.70703125
- .2byte 0x00B9 @ sin(33*(π/128)) = 0.72265625
- .2byte 0x00BD @ sin(34*(π/128)) = 0.73828125
- .2byte 0x00C1 @ sin(35*(π/128)) = 0.75390625
- .2byte 0x00C5 @ sin(36*(π/128)) = 0.76953125
- .2byte 0x00C9 @ sin(37*(π/128)) = 0.78515625
- .2byte 0x00CD @ sin(38*(π/128)) = 0.80078125
- .2byte 0x00D1 @ sin(39*(π/128)) = 0.81640625
- .2byte 0x00D4 @ sin(40*(π/128)) = 0.828125
- .2byte 0x00D8 @ sin(41*(π/128)) = 0.84375
- .2byte 0x00DB @ sin(42*(π/128)) = 0.85546875
- .2byte 0x00DE @ sin(43*(π/128)) = 0.8671875
- .2byte 0x00E1 @ sin(44*(π/128)) = 0.87890625
- .2byte 0x00E4 @ sin(45*(π/128)) = 0.890625
- .2byte 0x00E7 @ sin(46*(π/128)) = 0.90234375
- .2byte 0x00EA @ sin(47*(π/128)) = 0.9140625
- .2byte 0x00EC @ sin(48*(π/128)) = 0.921875
- .2byte 0x00EE @ sin(49*(π/128)) = 0.9296875
- .2byte 0x00F1 @ sin(50*(π/128)) = 0.94140625
- .2byte 0x00F3 @ sin(51*(π/128)) = 0.94921875
- .2byte 0x00F4 @ sin(52*(π/128)) = 0.953125
- .2byte 0x00F6 @ sin(53*(π/128)) = 0.9609375
- .2byte 0x00F8 @ sin(54*(π/128)) = 0.96875
- .2byte 0x00F9 @ sin(55*(π/128)) = 0.97265625
- .2byte 0x00FB @ sin(56*(π/128)) = 0.98046875
- .2byte 0x00FC @ sin(57*(π/128)) = 0.984375
- .2byte 0x00FD @ sin(58*(π/128)) = 0.98828125
- .2byte 0x00FE @ sin(59*(π/128)) = 0.9921875
- .2byte 0x00FE @ sin(60*(π/128)) = 0.9921875
- .2byte 0x00FF @ sin(61*(π/128)) = 0.99609375
- .2byte 0x00FF @ sin(62*(π/128)) = 0.99609375
- .2byte 0x00FF @ sin(63*(π/128)) = 0.99609375
- .2byte 0x0100 @ sin(64*(π/128)) = 1
- .2byte 0x00FF @ sin(65*(π/128)) = 0.99609375
- .2byte 0x00FF @ sin(66*(π/128)) = 0.99609375
- .2byte 0x00FF @ sin(67*(π/128)) = 0.99609375
- .2byte 0x00FE @ sin(68*(π/128)) = 0.9921875
- .2byte 0x00FE @ sin(69*(π/128)) = 0.9921875
- .2byte 0x00FD @ sin(70*(π/128)) = 0.98828125
- .2byte 0x00FC @ sin(71*(π/128)) = 0.984375
- .2byte 0x00FB @ sin(72*(π/128)) = 0.98046875
- .2byte 0x00F9 @ sin(73*(π/128)) = 0.97265625
- .2byte 0x00F8 @ sin(74*(π/128)) = 0.96875
- .2byte 0x00F6 @ sin(75*(π/128)) = 0.9609375
- .2byte 0x00F4 @ sin(76*(π/128)) = 0.953125
- .2byte 0x00F3 @ sin(77*(π/128)) = 0.94921875
- .2byte 0x00F1 @ sin(78*(π/128)) = 0.94140625
- .2byte 0x00EE @ sin(79*(π/128)) = 0.9296875
- .2byte 0x00EC @ sin(80*(π/128)) = 0.921875
- .2byte 0x00EA @ sin(81*(π/128)) = 0.9140625
- .2byte 0x00E7 @ sin(82*(π/128)) = 0.90234375
- .2byte 0x00E4 @ sin(83*(π/128)) = 0.890625
- .2byte 0x00E1 @ sin(84*(π/128)) = 0.87890625
- .2byte 0x00DE @ sin(85*(π/128)) = 0.8671875
- .2byte 0x00DB @ sin(86*(π/128)) = 0.85546875
- .2byte 0x00D8 @ sin(87*(π/128)) = 0.84375
- .2byte 0x00D4 @ sin(88*(π/128)) = 0.828125
- .2byte 0x00D1 @ sin(89*(π/128)) = 0.81640625
- .2byte 0x00CD @ sin(90*(π/128)) = 0.80078125
- .2byte 0x00C9 @ sin(91*(π/128)) = 0.78515625
- .2byte 0x00C5 @ sin(92*(π/128)) = 0.76953125
- .2byte 0x00C1 @ sin(93*(π/128)) = 0.75390625
- .2byte 0x00BD @ sin(94*(π/128)) = 0.73828125
- .2byte 0x00B9 @ sin(95*(π/128)) = 0.72265625
- .2byte 0x00B5 @ sin(96*(π/128)) = 0.70703125
- .2byte 0x00B0 @ sin(97*(π/128)) = 0.6875
- .2byte 0x00AB @ sin(98*(π/128)) = 0.66796875
- .2byte 0x00A7 @ sin(99*(π/128)) = 0.65234375
- .2byte 0x00A2 @ sin(100*(π/128)) = 0.6328125
- .2byte 0x009D @ sin(101*(π/128)) = 0.61328125
- .2byte 0x0098 @ sin(102*(π/128)) = 0.59375
- .2byte 0x0093 @ sin(103*(π/128)) = 0.57421875
- .2byte 0x008E @ sin(104*(π/128)) = 0.5546875
- .2byte 0x0088 @ sin(105*(π/128)) = 0.53125
- .2byte 0x0083 @ sin(106*(π/128)) = 0.51171875
- .2byte 0x007E @ sin(107*(π/128)) = 0.4921875
- .2byte 0x0078 @ sin(108*(π/128)) = 0.46875
- .2byte 0x0073 @ sin(109*(π/128)) = 0.44921875
- .2byte 0x006D @ sin(110*(π/128)) = 0.42578125
- .2byte 0x0067 @ sin(111*(π/128)) = 0.40234375
- .2byte 0x0061 @ sin(112*(π/128)) = 0.37890625
- .2byte 0x005C @ sin(113*(π/128)) = 0.359375
- .2byte 0x0056 @ sin(114*(π/128)) = 0.3359375
- .2byte 0x0050 @ sin(115*(π/128)) = 0.3125
- .2byte 0x004A @ sin(116*(π/128)) = 0.2890625
- .2byte 0x0044 @ sin(117*(π/128)) = 0.265625
- .2byte 0x003E @ sin(118*(π/128)) = 0.2421875
- .2byte 0x0038 @ sin(119*(π/128)) = 0.21875
- .2byte 0x0031 @ sin(120*(π/128)) = 0.19140625
- .2byte 0x002B @ sin(121*(π/128)) = 0.16796875
- .2byte 0x0025 @ sin(122*(π/128)) = 0.14453125
- .2byte 0x001F @ sin(123*(π/128)) = 0.12109375
- .2byte 0x0019 @ sin(124*(π/128)) = 0.09765625
- .2byte 0x0012 @ sin(125*(π/128)) = 0.0703125
- .2byte 0x000C @ sin(126*(π/128)) = 0.046875
- .2byte 0x0006 @ sin(127*(π/128)) = 0.0234375
- .2byte 0x0000 @ sin(128*(π/128)) = 0
- .2byte 0xFFFA @ sin(129*(π/128)) = -0.0234375
- .2byte 0xFFF4 @ sin(130*(π/128)) = -0.046875
- .2byte 0xFFEE @ sin(131*(π/128)) = -0.0703125
- .2byte 0xFFE7 @ sin(132*(π/128)) = -0.09765625
- .2byte 0xFFE1 @ sin(133*(π/128)) = -0.12109375
- .2byte 0xFFDB @ sin(134*(π/128)) = -0.14453125
- .2byte 0xFFD5 @ sin(135*(π/128)) = -0.16796875
- .2byte 0xFFCF @ sin(136*(π/128)) = -0.19140625
- .2byte 0xFFC8 @ sin(137*(π/128)) = -0.21875
- .2byte 0xFFC2 @ sin(138*(π/128)) = -0.2421875
- .2byte 0xFFBC @ sin(139*(π/128)) = -0.265625
- .2byte 0xFFB6 @ sin(140*(π/128)) = -0.2890625
- .2byte 0xFFB0 @ sin(141*(π/128)) = -0.3125
- .2byte 0xFFAA @ sin(142*(π/128)) = -0.3359375
- .2byte 0xFFA4 @ sin(143*(π/128)) = -0.359375
- .2byte 0xFF9F @ sin(144*(π/128)) = -0.37890625
- .2byte 0xFF99 @ sin(145*(π/128)) = -0.40234375
- .2byte 0xFF93 @ sin(146*(π/128)) = -0.42578125
- .2byte 0xFF8D @ sin(147*(π/128)) = -0.44921875
- .2byte 0xFF88 @ sin(148*(π/128)) = -0.46875
- .2byte 0xFF82 @ sin(149*(π/128)) = -0.4921875
- .2byte 0xFF7D @ sin(150*(π/128)) = -0.51171875
- .2byte 0xFF78 @ sin(151*(π/128)) = -0.53125
- .2byte 0xFF72 @ sin(152*(π/128)) = -0.5546875
- .2byte 0xFF6D @ sin(153*(π/128)) = -0.57421875
- .2byte 0xFF68 @ sin(154*(π/128)) = -0.59375
- .2byte 0xFF63 @ sin(155*(π/128)) = -0.61328125
- .2byte 0xFF5E @ sin(156*(π/128)) = -0.6328125
- .2byte 0xFF59 @ sin(157*(π/128)) = -0.65234375
- .2byte 0xFF55 @ sin(158*(π/128)) = -0.66796875
- .2byte 0xFF50 @ sin(159*(π/128)) = -0.6875
- .2byte 0xFF4B @ sin(160*(π/128)) = -0.70703125
- .2byte 0xFF47 @ sin(161*(π/128)) = -0.72265625
- .2byte 0xFF43 @ sin(162*(π/128)) = -0.73828125
- .2byte 0xFF3F @ sin(163*(π/128)) = -0.75390625
- .2byte 0xFF3B @ sin(164*(π/128)) = -0.76953125
- .2byte 0xFF37 @ sin(165*(π/128)) = -0.78515625
- .2byte 0xFF33 @ sin(166*(π/128)) = -0.80078125
- .2byte 0xFF2F @ sin(167*(π/128)) = -0.81640625
- .2byte 0xFF2C @ sin(168*(π/128)) = -0.828125
- .2byte 0xFF28 @ sin(169*(π/128)) = -0.84375
- .2byte 0xFF25 @ sin(170*(π/128)) = -0.85546875
- .2byte 0xFF22 @ sin(171*(π/128)) = -0.8671875
- .2byte 0xFF1F @ sin(172*(π/128)) = -0.87890625
- .2byte 0xFF1C @ sin(173*(π/128)) = -0.890625
- .2byte 0xFF19 @ sin(174*(π/128)) = -0.90234375
- .2byte 0xFF16 @ sin(175*(π/128)) = -0.9140625
- .2byte 0xFF14 @ sin(176*(π/128)) = -0.921875
- .2byte 0xFF12 @ sin(177*(π/128)) = -0.9296875
- .2byte 0xFF0F @ sin(178*(π/128)) = -0.94140625
- .2byte 0xFF0D @ sin(179*(π/128)) = -0.94921875
- .2byte 0xFF0C @ sin(180*(π/128)) = -0.953125
- .2byte 0xFF0A @ sin(181*(π/128)) = -0.9609375
- .2byte 0xFF08 @ sin(182*(π/128)) = -0.96875
- .2byte 0xFF07 @ sin(183*(π/128)) = -0.97265625
- .2byte 0xFF05 @ sin(184*(π/128)) = -0.98046875
- .2byte 0xFF04 @ sin(185*(π/128)) = -0.984375
- .2byte 0xFF03 @ sin(186*(π/128)) = -0.98828125
- .2byte 0xFF02 @ sin(187*(π/128)) = -0.9921875
- .2byte 0xFF02 @ sin(188*(π/128)) = -0.9921875
- .2byte 0xFF01 @ sin(189*(π/128)) = -0.99609375
- .2byte 0xFF01 @ sin(190*(π/128)) = -0.99609375
- .2byte 0xFF01 @ sin(191*(π/128)) = -0.99609375
- .2byte 0xFF00 @ sin(192*(π/128)) = -1
- .2byte 0xFF01 @ sin(193*(π/128)) = -0.99609375
- .2byte 0xFF01 @ sin(194*(π/128)) = -0.99609375
- .2byte 0xFF01 @ sin(195*(π/128)) = -0.99609375
- .2byte 0xFF02 @ sin(196*(π/128)) = -0.9921875
- .2byte 0xFF02 @ sin(197*(π/128)) = -0.9921875
- .2byte 0xFF03 @ sin(198*(π/128)) = -0.98828125
- .2byte 0xFF04 @ sin(199*(π/128)) = -0.984375
- .2byte 0xFF05 @ sin(200*(π/128)) = -0.98046875
- .2byte 0xFF07 @ sin(201*(π/128)) = -0.97265625
- .2byte 0xFF08 @ sin(202*(π/128)) = -0.96875
- .2byte 0xFF0A @ sin(203*(π/128)) = -0.9609375
- .2byte 0xFF0C @ sin(204*(π/128)) = -0.953125
- .2byte 0xFF0D @ sin(205*(π/128)) = -0.94921875
- .2byte 0xFF0F @ sin(206*(π/128)) = -0.94140625
- .2byte 0xFF12 @ sin(207*(π/128)) = -0.9296875
- .2byte 0xFF14 @ sin(208*(π/128)) = -0.921875
- .2byte 0xFF16 @ sin(209*(π/128)) = -0.9140625
- .2byte 0xFF19 @ sin(210*(π/128)) = -0.90234375
- .2byte 0xFF1C @ sin(211*(π/128)) = -0.890625
- .2byte 0xFF1F @ sin(212*(π/128)) = -0.87890625
- .2byte 0xFF22 @ sin(213*(π/128)) = -0.8671875
- .2byte 0xFF25 @ sin(214*(π/128)) = -0.85546875
- .2byte 0xFF28 @ sin(215*(π/128)) = -0.84375
- .2byte 0xFF2C @ sin(216*(π/128)) = -0.828125
- .2byte 0xFF2F @ sin(217*(π/128)) = -0.81640625
- .2byte 0xFF33 @ sin(218*(π/128)) = -0.80078125
- .2byte 0xFF37 @ sin(219*(π/128)) = -0.78515625
- .2byte 0xFF3B @ sin(220*(π/128)) = -0.76953125
- .2byte 0xFF3F @ sin(221*(π/128)) = -0.75390625
- .2byte 0xFF43 @ sin(222*(π/128)) = -0.73828125
- .2byte 0xFF47 @ sin(223*(π/128)) = -0.72265625
- .2byte 0xFF4B @ sin(224*(π/128)) = -0.70703125
- .2byte 0xFF50 @ sin(225*(π/128)) = -0.6875
- .2byte 0xFF55 @ sin(226*(π/128)) = -0.66796875
- .2byte 0xFF59 @ sin(227*(π/128)) = -0.65234375
- .2byte 0xFF5E @ sin(228*(π/128)) = -0.6328125
- .2byte 0xFF63 @ sin(229*(π/128)) = -0.61328125
- .2byte 0xFF68 @ sin(230*(π/128)) = -0.59375
- .2byte 0xFF6D @ sin(231*(π/128)) = -0.57421875
- .2byte 0xFF72 @ sin(232*(π/128)) = -0.5546875
- .2byte 0xFF78 @ sin(233*(π/128)) = -0.53125
- .2byte 0xFF7D @ sin(234*(π/128)) = -0.51171875
- .2byte 0xFF82 @ sin(235*(π/128)) = -0.4921875
- .2byte 0xFF88 @ sin(236*(π/128)) = -0.46875
- .2byte 0xFF8D @ sin(237*(π/128)) = -0.44921875
- .2byte 0xFF93 @ sin(238*(π/128)) = -0.42578125
- .2byte 0xFF99 @ sin(239*(π/128)) = -0.40234375
- .2byte 0xFF9F @ sin(240*(π/128)) = -0.37890625
- .2byte 0xFFA4 @ sin(241*(π/128)) = -0.359375
- .2byte 0xFFAA @ sin(242*(π/128)) = -0.3359375
- .2byte 0xFFB0 @ sin(243*(π/128)) = -0.3125
- .2byte 0xFFB6 @ sin(244*(π/128)) = -0.2890625
- .2byte 0xFFBC @ sin(245*(π/128)) = -0.265625
- .2byte 0xFFC2 @ sin(246*(π/128)) = -0.2421875
- .2byte 0xFFC8 @ sin(247*(π/128)) = -0.21875
- .2byte 0xFFCF @ sin(248*(π/128)) = -0.19140625
- .2byte 0xFFD5 @ sin(249*(π/128)) = -0.16796875
- .2byte 0xFFDB @ sin(250*(π/128)) = -0.14453125
- .2byte 0xFFE1 @ sin(251*(π/128)) = -0.12109375
- .2byte 0xFFE7 @ sin(252*(π/128)) = -0.09765625
- .2byte 0xFFEE @ sin(253*(π/128)) = -0.0703125
- .2byte 0xFFF4 @ sin(254*(π/128)) = -0.046875
- .2byte 0xFFFA @ sin(255*(π/128)) = -0.0234375
- .2byte 0x0000 @ sin(256*(π/128)) = 0
- .2byte 0x0006 @ sin(257*(π/128)) = 0.0234375
- .2byte 0x000C @ sin(258*(π/128)) = 0.046875
- .2byte 0x0012 @ sin(259*(π/128)) = 0.0703125
- .2byte 0x0019 @ sin(260*(π/128)) = 0.09765625
- .2byte 0x001F @ sin(261*(π/128)) = 0.12109375
- .2byte 0x0025 @ sin(262*(π/128)) = 0.14453125
- .2byte 0x002B @ sin(263*(π/128)) = 0.16796875
- .2byte 0x0031 @ sin(264*(π/128)) = 0.19140625
- .2byte 0x0038 @ sin(265*(π/128)) = 0.21875
- .2byte 0x003E @ sin(266*(π/128)) = 0.2421875
- .2byte 0x0044 @ sin(267*(π/128)) = 0.265625
- .2byte 0x004A @ sin(268*(π/128)) = 0.2890625
- .2byte 0x0050 @ sin(269*(π/128)) = 0.3125
- .2byte 0x0056 @ sin(270*(π/128)) = 0.3359375
- .2byte 0x005C @ sin(271*(π/128)) = 0.359375
- .2byte 0x0061 @ sin(272*(π/128)) = 0.37890625
- .2byte 0x0067 @ sin(273*(π/128)) = 0.40234375
- .2byte 0x006D @ sin(274*(π/128)) = 0.42578125
- .2byte 0x0073 @ sin(275*(π/128)) = 0.44921875
- .2byte 0x0078 @ sin(276*(π/128)) = 0.46875
- .2byte 0x007E @ sin(277*(π/128)) = 0.4921875
- .2byte 0x0083 @ sin(278*(π/128)) = 0.51171875
- .2byte 0x0088 @ sin(279*(π/128)) = 0.53125
- .2byte 0x008E @ sin(280*(π/128)) = 0.5546875
- .2byte 0x0093 @ sin(281*(π/128)) = 0.57421875
- .2byte 0x0098 @ sin(282*(π/128)) = 0.59375
- .2byte 0x009D @ sin(283*(π/128)) = 0.61328125
- .2byte 0x00A2 @ sin(284*(π/128)) = 0.6328125
- .2byte 0x00A7 @ sin(285*(π/128)) = 0.65234375
- .2byte 0x00AB @ sin(286*(π/128)) = 0.66796875
- .2byte 0x00B0 @ sin(287*(π/128)) = 0.6875
- .2byte 0x00B5 @ sin(288*(π/128)) = 0.70703125
- .2byte 0x00B9 @ sin(289*(π/128)) = 0.72265625
- .2byte 0x00BD @ sin(290*(π/128)) = 0.73828125
- .2byte 0x00C1 @ sin(291*(π/128)) = 0.75390625
- .2byte 0x00C5 @ sin(292*(π/128)) = 0.76953125
- .2byte 0x00C9 @ sin(293*(π/128)) = 0.78515625
- .2byte 0x00CD @ sin(294*(π/128)) = 0.80078125
- .2byte 0x00D1 @ sin(295*(π/128)) = 0.81640625
- .2byte 0x00D4 @ sin(296*(π/128)) = 0.828125
- .2byte 0x00D8 @ sin(297*(π/128)) = 0.84375
- .2byte 0x00DB @ sin(298*(π/128)) = 0.85546875
- .2byte 0x00DE @ sin(299*(π/128)) = 0.8671875
- .2byte 0x00E1 @ sin(300*(π/128)) = 0.87890625
- .2byte 0x00E4 @ sin(301*(π/128)) = 0.890625
- .2byte 0x00E7 @ sin(302*(π/128)) = 0.90234375
- .2byte 0x00EA @ sin(303*(π/128)) = 0.9140625
- .2byte 0x00EC @ sin(304*(π/128)) = 0.921875
- .2byte 0x00EE @ sin(305*(π/128)) = 0.9296875
- .2byte 0x00F1 @ sin(306*(π/128)) = 0.94140625
- .2byte 0x00F3 @ sin(307*(π/128)) = 0.94921875
- .2byte 0x00F4 @ sin(308*(π/128)) = 0.953125
- .2byte 0x00F6 @ sin(309*(π/128)) = 0.9609375
- .2byte 0x00F8 @ sin(310*(π/128)) = 0.96875
- .2byte 0x00F9 @ sin(311*(π/128)) = 0.97265625
- .2byte 0x00FB @ sin(312*(π/128)) = 0.98046875
- .2byte 0x00FC @ sin(313*(π/128)) = 0.984375
- .2byte 0x00FD @ sin(314*(π/128)) = 0.98828125
- .2byte 0x00FE @ sin(315*(π/128)) = 0.9921875
- .2byte 0x00FE @ sin(316*(π/128)) = 0.9921875
- .2byte 0x00FF @ sin(317*(π/128)) = 0.99609375
- .2byte 0x00FF @ sin(318*(π/128)) = 0.99609375
- .2byte 0x00FF @ sin(319*(π/128)) = 0.99609375
diff --git a/data/trig.s b/data/trig.s
deleted file mode 100644
index 6f9c95971..000000000
--- a/data/trig.s
+++ /dev/null
@@ -1,10 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-@ 8208344
- .include "data/sine_table.inc"
-
-@ 82085C4
- .include "data/sine_degree_table.inc"
diff --git a/include/trig.h b/include/trig.h
index 03d8c453e..a2f98a3e6 100644
--- a/include/trig.h
+++ b/include/trig.h
@@ -1,7 +1,7 @@
#ifndef GUARD_TRIG_H
#define GUARD_TRIG_H
-extern s16 gSineTable[];
+extern const s16 gSineTable[];
s16 Sin(s16 index, s16 amplitude);
s16 Cos(s16 index, s16 amplitude);
diff --git a/ld_script.txt b/ld_script.txt
index b20e05223..9f9df16c8 100755
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -334,7 +334,7 @@ SECTIONS {
data/data2.o(.rodata);
data/pokemon.o(.rodata);
. = ALIGN(4);
- data/trig.o(.rodata);
+ src/trig.o(.rodata);
data/util.o(.rodata);
data/daycare.o(.rodata);
data/egg_hatch.o(.rodata);
diff --git a/src/trig.c b/src/trig.c
index d64231087..e16a69e63 100644
--- a/src/trig.c
+++ b/src/trig.c
@@ -1,7 +1,521 @@
#include "global.h"
#include "trig.h"
-extern s16 gSineDegreeTable[];
+// Converts a number to Q8.8 fixed-point format
+#define Q_8_8(n) ((s16)((n) * 256))
+
+// Converts a number to Q4.12 fixed-point format
+#define Q_4_12(n) ((s16)((n) * 4096))
+
+// Values of sin(x*(π/128)) as Q8.8 fixed-point numbers from x = 0 to x = 319
+const s16 gSineTable[] =
+{
+ Q_8_8(0), // sin(0*(π/128))
+ Q_8_8(0.0234375), // sin(1*(π/128))
+ Q_8_8(0.046875), // sin(2*(π/128))
+ Q_8_8(0.0703125), // sin(3*(π/128))
+ Q_8_8(0.09765625), // sin(4*(π/128))
+ Q_8_8(0.12109375), // sin(5*(π/128))
+ Q_8_8(0.14453125), // sin(6*(π/128))
+ Q_8_8(0.16796875), // sin(7*(π/128))
+ Q_8_8(0.19140625), // sin(8*(π/128))
+ Q_8_8(0.21875), // sin(9*(π/128))
+ Q_8_8(0.2421875), // sin(10*(π/128))
+ Q_8_8(0.265625), // sin(11*(π/128))
+ Q_8_8(0.2890625), // sin(12*(π/128))
+ Q_8_8(0.3125), // sin(13*(π/128))
+ Q_8_8(0.3359375), // sin(14*(π/128))
+ Q_8_8(0.359375), // sin(15*(π/128))
+ Q_8_8(0.37890625), // sin(16*(π/128))
+ Q_8_8(0.40234375), // sin(17*(π/128))
+ Q_8_8(0.42578125), // sin(18*(π/128))
+ Q_8_8(0.44921875), // sin(19*(π/128))
+ Q_8_8(0.46875), // sin(20*(π/128))
+ Q_8_8(0.4921875), // sin(21*(π/128))
+ Q_8_8(0.51171875), // sin(22*(π/128))
+ Q_8_8(0.53125), // sin(23*(π/128))
+ Q_8_8(0.5546875), // sin(24*(π/128))
+ Q_8_8(0.57421875), // sin(25*(π/128))
+ Q_8_8(0.59375), // sin(26*(π/128))
+ Q_8_8(0.61328125), // sin(27*(π/128))
+ Q_8_8(0.6328125), // sin(28*(π/128))
+ Q_8_8(0.65234375), // sin(29*(π/128))
+ Q_8_8(0.66796875), // sin(30*(π/128))
+ Q_8_8(0.6875), // sin(31*(π/128))
+ Q_8_8(0.70703125), // sin(32*(π/128))
+ Q_8_8(0.72265625), // sin(33*(π/128))
+ Q_8_8(0.73828125), // sin(34*(π/128))
+ Q_8_8(0.75390625), // sin(35*(π/128))
+ Q_8_8(0.76953125), // sin(36*(π/128))
+ Q_8_8(0.78515625), // sin(37*(π/128))
+ Q_8_8(0.80078125), // sin(38*(π/128))
+ Q_8_8(0.81640625), // sin(39*(π/128))
+ Q_8_8(0.828125), // sin(40*(π/128))
+ Q_8_8(0.84375), // sin(41*(π/128))
+ Q_8_8(0.85546875), // sin(42*(π/128))
+ Q_8_8(0.8671875), // sin(43*(π/128))
+ Q_8_8(0.87890625), // sin(44*(π/128))
+ Q_8_8(0.890625), // sin(45*(π/128))
+ Q_8_8(0.90234375), // sin(46*(π/128))
+ Q_8_8(0.9140625), // sin(47*(π/128))
+ Q_8_8(0.921875), // sin(48*(π/128))
+ Q_8_8(0.9296875), // sin(49*(π/128))
+ Q_8_8(0.94140625), // sin(50*(π/128))
+ Q_8_8(0.94921875), // sin(51*(π/128))
+ Q_8_8(0.953125), // sin(52*(π/128))
+ Q_8_8(0.9609375), // sin(53*(π/128))
+ Q_8_8(0.96875), // sin(54*(π/128))
+ Q_8_8(0.97265625), // sin(55*(π/128))
+ Q_8_8(0.98046875), // sin(56*(π/128))
+ Q_8_8(0.984375), // sin(57*(π/128))
+ Q_8_8(0.98828125), // sin(58*(π/128))
+ Q_8_8(0.9921875), // sin(59*(π/128))
+ Q_8_8(0.9921875), // sin(60*(π/128))
+ Q_8_8(0.99609375), // sin(61*(π/128))
+ Q_8_8(0.99609375), // sin(62*(π/128))
+ Q_8_8(0.99609375), // sin(63*(π/128))
+ Q_8_8(1), // sin(64*(π/128))
+ Q_8_8(0.99609375), // sin(65*(π/128))
+ Q_8_8(0.99609375), // sin(66*(π/128))
+ Q_8_8(0.99609375), // sin(67*(π/128))
+ Q_8_8(0.9921875), // sin(68*(π/128))
+ Q_8_8(0.9921875), // sin(69*(π/128))
+ Q_8_8(0.98828125), // sin(70*(π/128))
+ Q_8_8(0.984375), // sin(71*(π/128))
+ Q_8_8(0.98046875), // sin(72*(π/128))
+ Q_8_8(0.97265625), // sin(73*(π/128))
+ Q_8_8(0.96875), // sin(74*(π/128))
+ Q_8_8(0.9609375), // sin(75*(π/128))
+ Q_8_8(0.953125), // sin(76*(π/128))
+ Q_8_8(0.94921875), // sin(77*(π/128))
+ Q_8_8(0.94140625), // sin(78*(π/128))
+ Q_8_8(0.9296875), // sin(79*(π/128))
+ Q_8_8(0.921875), // sin(80*(π/128))
+ Q_8_8(0.9140625), // sin(81*(π/128))
+ Q_8_8(0.90234375), // sin(82*(π/128))
+ Q_8_8(0.890625), // sin(83*(π/128))
+ Q_8_8(0.87890625), // sin(84*(π/128))
+ Q_8_8(0.8671875), // sin(85*(π/128))
+ Q_8_8(0.85546875), // sin(86*(π/128))
+ Q_8_8(0.84375), // sin(87*(π/128))
+ Q_8_8(0.828125), // sin(88*(π/128))
+ Q_8_8(0.81640625), // sin(89*(π/128))
+ Q_8_8(0.80078125), // sin(90*(π/128))
+ Q_8_8(0.78515625), // sin(91*(π/128))
+ Q_8_8(0.76953125), // sin(92*(π/128))
+ Q_8_8(0.75390625), // sin(93*(π/128))
+ Q_8_8(0.73828125), // sin(94*(π/128))
+ Q_8_8(0.72265625), // sin(95*(π/128))
+ Q_8_8(0.70703125), // sin(96*(π/128))
+ Q_8_8(0.6875), // sin(97*(π/128))
+ Q_8_8(0.66796875), // sin(98*(π/128))
+ Q_8_8(0.65234375), // sin(99*(π/128))
+ Q_8_8(0.6328125), // sin(100*(π/128))
+ Q_8_8(0.61328125), // sin(101*(π/128))
+ Q_8_8(0.59375), // sin(102*(π/128))
+ Q_8_8(0.57421875), // sin(103*(π/128))
+ Q_8_8(0.5546875), // sin(104*(π/128))
+ Q_8_8(0.53125), // sin(105*(π/128))
+ Q_8_8(0.51171875), // sin(106*(π/128))
+ Q_8_8(0.4921875), // sin(107*(π/128))
+ Q_8_8(0.46875), // sin(108*(π/128))
+ Q_8_8(0.44921875), // sin(109*(π/128))
+ Q_8_8(0.42578125), // sin(110*(π/128))
+ Q_8_8(0.40234375), // sin(111*(π/128))
+ Q_8_8(0.37890625), // sin(112*(π/128))
+ Q_8_8(0.359375), // sin(113*(π/128))
+ Q_8_8(0.3359375), // sin(114*(π/128))
+ Q_8_8(0.3125), // sin(115*(π/128))
+ Q_8_8(0.2890625), // sin(116*(π/128))
+ Q_8_8(0.265625), // sin(117*(π/128))
+ Q_8_8(0.2421875), // sin(118*(π/128))
+ Q_8_8(0.21875), // sin(119*(π/128))
+ Q_8_8(0.19140625), // sin(120*(π/128))
+ Q_8_8(0.16796875), // sin(121*(π/128))
+ Q_8_8(0.14453125), // sin(122*(π/128))
+ Q_8_8(0.12109375), // sin(123*(π/128))
+ Q_8_8(0.09765625), // sin(124*(π/128))
+ Q_8_8(0.0703125), // sin(125*(π/128))
+ Q_8_8(0.046875), // sin(126*(π/128))
+ Q_8_8(0.0234375), // sin(127*(π/128))
+ Q_8_8(0), // sin(128*(π/128))
+ Q_8_8(-0.0234375), // sin(129*(π/128))
+ Q_8_8(-0.046875), // sin(130*(π/128))
+ Q_8_8(-0.0703125), // sin(131*(π/128))
+ Q_8_8(-0.09765625), // sin(132*(π/128))
+ Q_8_8(-0.12109375), // sin(133*(π/128))
+ Q_8_8(-0.14453125), // sin(134*(π/128))
+ Q_8_8(-0.16796875), // sin(135*(π/128))
+ Q_8_8(-0.19140625), // sin(136*(π/128))
+ Q_8_8(-0.21875), // sin(137*(π/128))
+ Q_8_8(-0.2421875), // sin(138*(π/128))
+ Q_8_8(-0.265625), // sin(139*(π/128))
+ Q_8_8(-0.2890625), // sin(140*(π/128))
+ Q_8_8(-0.3125), // sin(141*(π/128))
+ Q_8_8(-0.3359375), // sin(142*(π/128))
+ Q_8_8(-0.359375), // sin(143*(π/128))
+ Q_8_8(-0.37890625), // sin(144*(π/128))
+ Q_8_8(-0.40234375), // sin(145*(π/128))
+ Q_8_8(-0.42578125), // sin(146*(π/128))
+ Q_8_8(-0.44921875), // sin(147*(π/128))
+ Q_8_8(-0.46875), // sin(148*(π/128))
+ Q_8_8(-0.4921875), // sin(149*(π/128))
+ Q_8_8(-0.51171875), // sin(150*(π/128))
+ Q_8_8(-0.53125), // sin(151*(π/128))
+ Q_8_8(-0.5546875), // sin(152*(π/128))
+ Q_8_8(-0.57421875), // sin(153*(π/128))
+ Q_8_8(-0.59375), // sin(154*(π/128))
+ Q_8_8(-0.61328125), // sin(155*(π/128))
+ Q_8_8(-0.6328125), // sin(156*(π/128))
+ Q_8_8(-0.65234375), // sin(157*(π/128))
+ Q_8_8(-0.66796875), // sin(158*(π/128))
+ Q_8_8(-0.6875), // sin(159*(π/128))
+ Q_8_8(-0.70703125), // sin(160*(π/128))
+ Q_8_8(-0.72265625), // sin(161*(π/128))
+ Q_8_8(-0.73828125), // sin(162*(π/128))
+ Q_8_8(-0.75390625), // sin(163*(π/128))
+ Q_8_8(-0.76953125), // sin(164*(π/128))
+ Q_8_8(-0.78515625), // sin(165*(π/128))
+ Q_8_8(-0.80078125), // sin(166*(π/128))
+ Q_8_8(-0.81640625), // sin(167*(π/128))
+ Q_8_8(-0.828125), // sin(168*(π/128))
+ Q_8_8(-0.84375), // sin(169*(π/128))
+ Q_8_8(-0.85546875), // sin(170*(π/128))
+ Q_8_8(-0.8671875), // sin(171*(π/128))
+ Q_8_8(-0.87890625), // sin(172*(π/128))
+ Q_8_8(-0.890625), // sin(173*(π/128))
+ Q_8_8(-0.90234375), // sin(174*(π/128))
+ Q_8_8(-0.9140625), // sin(175*(π/128))
+ Q_8_8(-0.921875), // sin(176*(π/128))
+ Q_8_8(-0.9296875), // sin(177*(π/128))
+ Q_8_8(-0.94140625), // sin(178*(π/128))
+ Q_8_8(-0.94921875), // sin(179*(π/128))
+ Q_8_8(-0.953125), // sin(180*(π/128))
+ Q_8_8(-0.9609375), // sin(181*(π/128))
+ Q_8_8(-0.96875), // sin(182*(π/128))
+ Q_8_8(-0.97265625), // sin(183*(π/128))
+ Q_8_8(-0.98046875), // sin(184*(π/128))
+ Q_8_8(-0.984375), // sin(185*(π/128))
+ Q_8_8(-0.98828125), // sin(186*(π/128))
+ Q_8_8(-0.9921875), // sin(187*(π/128))
+ Q_8_8(-0.9921875), // sin(188*(π/128))
+ Q_8_8(-0.99609375), // sin(189*(π/128))
+ Q_8_8(-0.99609375), // sin(190*(π/128))
+ Q_8_8(-0.99609375), // sin(191*(π/128))
+ Q_8_8(-1), // sin(192*(π/128))
+ Q_8_8(-0.99609375), // sin(193*(π/128))
+ Q_8_8(-0.99609375), // sin(194*(π/128))
+ Q_8_8(-0.99609375), // sin(195*(π/128))
+ Q_8_8(-0.9921875), // sin(196*(π/128))
+ Q_8_8(-0.9921875), // sin(197*(π/128))
+ Q_8_8(-0.98828125), // sin(198*(π/128))
+ Q_8_8(-0.984375), // sin(199*(π/128))
+ Q_8_8(-0.98046875), // sin(200*(π/128))
+ Q_8_8(-0.97265625), // sin(201*(π/128))
+ Q_8_8(-0.96875), // sin(202*(π/128))
+ Q_8_8(-0.9609375), // sin(203*(π/128))
+ Q_8_8(-0.953125), // sin(204*(π/128))
+ Q_8_8(-0.94921875), // sin(205*(π/128))
+ Q_8_8(-0.94140625), // sin(206*(π/128))
+ Q_8_8(-0.9296875), // sin(207*(π/128))
+ Q_8_8(-0.921875), // sin(208*(π/128))
+ Q_8_8(-0.9140625), // sin(209*(π/128))
+ Q_8_8(-0.90234375), // sin(210*(π/128))
+ Q_8_8(-0.890625), // sin(211*(π/128))
+ Q_8_8(-0.87890625), // sin(212*(π/128))
+ Q_8_8(-0.8671875), // sin(213*(π/128))
+ Q_8_8(-0.85546875), // sin(214*(π/128))
+ Q_8_8(-0.84375), // sin(215*(π/128))
+ Q_8_8(-0.828125), // sin(216*(π/128))
+ Q_8_8(-0.81640625), // sin(217*(π/128))
+ Q_8_8(-0.80078125), // sin(218*(π/128))
+ Q_8_8(-0.78515625), // sin(219*(π/128))
+ Q_8_8(-0.76953125), // sin(220*(π/128))
+ Q_8_8(-0.75390625), // sin(221*(π/128))
+ Q_8_8(-0.73828125), // sin(222*(π/128))
+ Q_8_8(-0.72265625), // sin(223*(π/128))
+ Q_8_8(-0.70703125), // sin(224*(π/128))
+ Q_8_8(-0.6875), // sin(225*(π/128))
+ Q_8_8(-0.66796875), // sin(226*(π/128))
+ Q_8_8(-0.65234375), // sin(227*(π/128))
+ Q_8_8(-0.6328125), // sin(228*(π/128))
+ Q_8_8(-0.61328125), // sin(229*(π/128))
+ Q_8_8(-0.59375), // sin(230*(π/128))
+ Q_8_8(-0.57421875), // sin(231*(π/128))
+ Q_8_8(-0.5546875), // sin(232*(π/128))
+ Q_8_8(-0.53125), // sin(233*(π/128))
+ Q_8_8(-0.51171875), // sin(234*(π/128))
+ Q_8_8(-0.4921875), // sin(235*(π/128))
+ Q_8_8(-0.46875), // sin(236*(π/128))
+ Q_8_8(-0.44921875), // sin(237*(π/128))
+ Q_8_8(-0.42578125), // sin(238*(π/128))
+ Q_8_8(-0.40234375), // sin(239*(π/128))
+ Q_8_8(-0.37890625), // sin(240*(π/128))
+ Q_8_8(-0.359375), // sin(241*(π/128))
+ Q_8_8(-0.3359375), // sin(242*(π/128))
+ Q_8_8(-0.3125), // sin(243*(π/128))
+ Q_8_8(-0.2890625), // sin(244*(π/128))
+ Q_8_8(-0.265625), // sin(245*(π/128))
+ Q_8_8(-0.2421875), // sin(246*(π/128))
+ Q_8_8(-0.21875), // sin(247*(π/128))
+ Q_8_8(-0.19140625), // sin(248*(π/128))
+ Q_8_8(-0.16796875), // sin(249*(π/128))
+ Q_8_8(-0.14453125), // sin(250*(π/128))
+ Q_8_8(-0.12109375), // sin(251*(π/128))
+ Q_8_8(-0.09765625), // sin(252*(π/128))
+ Q_8_8(-0.0703125), // sin(253*(π/128))
+ Q_8_8(-0.046875), // sin(254*(π/128))
+ Q_8_8(-0.0234375), // sin(255*(π/128))
+ Q_8_8(0), // sin(256*(π/128))
+ Q_8_8(0.0234375), // sin(257*(π/128))
+ Q_8_8(0.046875), // sin(258*(π/128))
+ Q_8_8(0.0703125), // sin(259*(π/128))
+ Q_8_8(0.09765625), // sin(260*(π/128))
+ Q_8_8(0.12109375), // sin(261*(π/128))
+ Q_8_8(0.14453125), // sin(262*(π/128))
+ Q_8_8(0.16796875), // sin(263*(π/128))
+ Q_8_8(0.19140625), // sin(264*(π/128))
+ Q_8_8(0.21875), // sin(265*(π/128))
+ Q_8_8(0.2421875), // sin(266*(π/128))
+ Q_8_8(0.265625), // sin(267*(π/128))
+ Q_8_8(0.2890625), // sin(268*(π/128))
+ Q_8_8(0.3125), // sin(269*(π/128))
+ Q_8_8(0.3359375), // sin(270*(π/128))
+ Q_8_8(0.359375), // sin(271*(π/128))
+ Q_8_8(0.37890625), // sin(272*(π/128))
+ Q_8_8(0.40234375), // sin(273*(π/128))
+ Q_8_8(0.42578125), // sin(274*(π/128))
+ Q_8_8(0.44921875), // sin(275*(π/128))
+ Q_8_8(0.46875), // sin(276*(π/128))
+ Q_8_8(0.4921875), // sin(277*(π/128))
+ Q_8_8(0.51171875), // sin(278*(π/128))
+ Q_8_8(0.53125), // sin(279*(π/128))
+ Q_8_8(0.5546875), // sin(280*(π/128))
+ Q_8_8(0.57421875), // sin(281*(π/128))
+ Q_8_8(0.59375), // sin(282*(π/128))
+ Q_8_8(0.61328125), // sin(283*(π/128))
+ Q_8_8(0.6328125), // sin(284*(π/128))
+ Q_8_8(0.65234375), // sin(285*(π/128))
+ Q_8_8(0.66796875), // sin(286*(π/128))
+ Q_8_8(0.6875), // sin(287*(π/128))
+ Q_8_8(0.70703125), // sin(288*(π/128))
+ Q_8_8(0.72265625), // sin(289*(π/128))
+ Q_8_8(0.73828125), // sin(290*(π/128))
+ Q_8_8(0.75390625), // sin(291*(π/128))
+ Q_8_8(0.76953125), // sin(292*(π/128))
+ Q_8_8(0.78515625), // sin(293*(π/128))
+ Q_8_8(0.80078125), // sin(294*(π/128))
+ Q_8_8(0.81640625), // sin(295*(π/128))
+ Q_8_8(0.828125), // sin(296*(π/128))
+ Q_8_8(0.84375), // sin(297*(π/128))
+ Q_8_8(0.85546875), // sin(298*(π/128))
+ Q_8_8(0.8671875), // sin(299*(π/128))
+ Q_8_8(0.87890625), // sin(300*(π/128))
+ Q_8_8(0.890625), // sin(301*(π/128))
+ Q_8_8(0.90234375), // sin(302*(π/128))
+ Q_8_8(0.9140625), // sin(303*(π/128))
+ Q_8_8(0.921875), // sin(304*(π/128))
+ Q_8_8(0.9296875), // sin(305*(π/128))
+ Q_8_8(0.94140625), // sin(306*(π/128))
+ Q_8_8(0.94921875), // sin(307*(π/128))
+ Q_8_8(0.953125), // sin(308*(π/128))
+ Q_8_8(0.9609375), // sin(309*(π/128))
+ Q_8_8(0.96875), // sin(310*(π/128))
+ Q_8_8(0.97265625), // sin(311*(π/128))
+ Q_8_8(0.98046875), // sin(312*(π/128))
+ Q_8_8(0.984375), // sin(313*(π/128))
+ Q_8_8(0.98828125), // sin(314*(π/128))
+ Q_8_8(0.9921875), // sin(315*(π/128))
+ Q_8_8(0.9921875), // sin(316*(π/128))
+ Q_8_8(0.99609375), // sin(317*(π/128))
+ Q_8_8(0.99609375), // sin(318*(π/128))
+ Q_8_8(0.99609375), // sin(319*(π/128))
+};
+
+// values of sin(x) as Q4.12 fixed-point numbers from x = 0° to x = 179°
+const s16 gSineDegreeTable[] =
+{
+ Q_4_12(0), // sin(0°)
+ Q_4_12(0.017333984375), // sin(1°)
+ Q_4_12(0.034912109375), // sin(2°)
+ Q_4_12(0.05224609375), // sin(3°)
+ Q_4_12(0.06982421875), // sin(4°)
+ Q_4_12(0.087158203125), // sin(5°)
+ Q_4_12(0.1044921875), // sin(6°)
+ Q_4_12(0.121826171875), // sin(7°)
+ Q_4_12(0.13916015625), // sin(8°)
+ Q_4_12(0.156494140625), // sin(9°)
+ Q_4_12(0.173583984375), // sin(10°)
+ Q_4_12(0.19091796875), // sin(11°)
+ Q_4_12(0.2080078125), // sin(12°)
+ Q_4_12(0.224853515625), // sin(13°)
+ Q_4_12(0.241943359375), // sin(14°)
+ Q_4_12(0.2587890625), // sin(15°)
+ Q_4_12(0.275634765625), // sin(16°)
+ Q_4_12(0.29248046875), // sin(17°)
+ Q_4_12(0.30908203125), // sin(18°)
+ Q_4_12(0.32568359375), // sin(19°)
+ Q_4_12(0.342041015625), // sin(20°)
+ Q_4_12(0.3583984375), // sin(21°)
+ Q_4_12(0.37451171875), // sin(22°)
+ Q_4_12(0.390625), // sin(23°)
+ Q_4_12(0.40673828125), // sin(24°)
+ Q_4_12(0.422607421875), // sin(25°)
+ Q_4_12(0.4384765625), // sin(26°)
+ Q_4_12(0.4541015625), // sin(27°)
+ Q_4_12(0.469482421875), // sin(28°)
+ Q_4_12(0.48486328125), // sin(29°)
+ Q_4_12(0.5), // sin(30°)
+ Q_4_12(0.51513671875), // sin(31°)
+ Q_4_12(0.530029296875), // sin(32°)
+ Q_4_12(0.544677734375), // sin(33°)
+ Q_4_12(0.55908203125), // sin(34°)
+ Q_4_12(0.573486328125), // sin(35°)
+ Q_4_12(0.587890625), // sin(36°)
+ Q_4_12(0.601806640625), // sin(37°)
+ Q_4_12(0.61572265625), // sin(38°)
+ Q_4_12(0.62939453125), // sin(39°)
+ Q_4_12(0.642822265625), // sin(40°)
+ Q_4_12(0.656005859375), // sin(41°)
+ Q_4_12(0.669189453125), // sin(42°)
+ Q_4_12(0.681884765625), // sin(43°)
+ Q_4_12(0.694580078125), // sin(44°)
+ Q_4_12(0.70703125), // sin(45°)
+ Q_4_12(0.71923828125), // sin(46°)
+ Q_4_12(0.7314453125), // sin(47°)
+ Q_4_12(0.7431640625), // sin(48°)
+ Q_4_12(0.754638671875), // sin(49°)
+ Q_4_12(0.76611328125), // sin(50°)
+ Q_4_12(0.777099609375), // sin(51°)
+ Q_4_12(0.7880859375), // sin(52°)
+ Q_4_12(0.798583984375), // sin(53°)
+ Q_4_12(0.80908203125), // sin(54°)
+ Q_4_12(0.819091796875), // sin(55°)
+ Q_4_12(0.8291015625), // sin(56°)
+ Q_4_12(0.838623046875), // sin(57°)
+ Q_4_12(0.84814453125), // sin(58°)
+ Q_4_12(0.857177734375), // sin(59°)
+ Q_4_12(0.865966796875), // sin(60°)
+ Q_4_12(0.87451171875), // sin(61°)
+ Q_4_12(0.883056640625), // sin(62°)
+ Q_4_12(0.89111328125), // sin(63°)
+ Q_4_12(0.898681640625), // sin(64°)
+ Q_4_12(0.90625), // sin(65°)
+ Q_4_12(0.91357421875), // sin(66°)
+ Q_4_12(0.92041015625), // sin(67°)
+ Q_4_12(0.92724609375), // sin(68°)
+ Q_4_12(0.93359375), // sin(69°)
+ Q_4_12(0.939697265625), // sin(70°)
+ Q_4_12(0.945556640625), // sin(71°)
+ Q_4_12(0.951171875), // sin(72°)
+ Q_4_12(0.956298828125), // sin(73°)
+ Q_4_12(0.961181640625), // sin(74°)
+ Q_4_12(0.9658203125), // sin(75°)
+ Q_4_12(0.97021484375), // sin(76°)
+ Q_4_12(0.974365234375), // sin(77°)
+ Q_4_12(0.97802734375), // sin(78°)
+ Q_4_12(0.981689453125), // sin(79°)
+ Q_4_12(0.98486328125), // sin(80°)
+ Q_4_12(0.98779296875), // sin(81°)
+ Q_4_12(0.990234375), // sin(82°)
+ Q_4_12(0.992431640625), // sin(83°)
+ Q_4_12(0.994384765625), // sin(84°)
+ Q_4_12(0.99609375), // sin(85°)
+ Q_4_12(0.99755859375), // sin(86°)
+ Q_4_12(0.99853515625), // sin(87°)
+ Q_4_12(0.999267578125), // sin(88°)
+ Q_4_12(0.999755859375), // sin(89°)
+ Q_4_12(1), // sin(90°)
+ Q_4_12(0.999755859375), // sin(91°)
+ Q_4_12(0.999267578125), // sin(92°)
+ Q_4_12(0.99853515625), // sin(93°)
+ Q_4_12(0.99755859375), // sin(94°)
+ Q_4_12(0.99609375), // sin(95°)
+ Q_4_12(0.994384765625), // sin(96°)
+ Q_4_12(0.992431640625), // sin(97°)
+ Q_4_12(0.990234375), // sin(98°)
+ Q_4_12(0.98779296875), // sin(99°)
+ Q_4_12(0.98486328125), // sin(100°)
+ Q_4_12(0.981689453125), // sin(101°)
+ Q_4_12(0.97802734375), // sin(102°)
+ Q_4_12(0.974365234375), // sin(103°)
+ Q_4_12(0.97021484375), // sin(104°)
+ Q_4_12(0.9658203125), // sin(105°)
+ Q_4_12(0.961181640625), // sin(106°)
+ Q_4_12(0.956298828125), // sin(107°)
+ Q_4_12(0.951171875), // sin(108°)
+ Q_4_12(0.945556640625), // sin(109°)
+ Q_4_12(0.939697265625), // sin(110°)
+ Q_4_12(0.93359375), // sin(111°)
+ Q_4_12(0.92724609375), // sin(112°)
+ Q_4_12(0.92041015625), // sin(113°)
+ Q_4_12(0.91357421875), // sin(114°)
+ Q_4_12(0.90625), // sin(115°)
+ Q_4_12(0.898681640625), // sin(116°)
+ Q_4_12(0.89111328125), // sin(117°)
+ Q_4_12(0.883056640625), // sin(118°)
+ Q_4_12(0.87451171875), // sin(119°)
+ Q_4_12(0.865966796875), // sin(120°)
+ Q_4_12(0.857177734375), // sin(121°)
+ Q_4_12(0.84814453125), // sin(122°)
+ Q_4_12(0.838623046875), // sin(123°)
+ Q_4_12(0.8291015625), // sin(124°)
+ Q_4_12(0.819091796875), // sin(125°)
+ Q_4_12(0.80908203125), // sin(126°)
+ Q_4_12(0.798583984375), // sin(127°)
+ Q_4_12(0.7880859375), // sin(128°)
+ Q_4_12(0.777099609375), // sin(129°)
+ Q_4_12(0.76611328125), // sin(130°)
+ Q_4_12(0.754638671875), // sin(131°)
+ Q_4_12(0.7431640625), // sin(132°)
+ Q_4_12(0.7314453125), // sin(133°)
+ Q_4_12(0.71923828125), // sin(134°)
+ Q_4_12(0.70703125), // sin(135°)
+ Q_4_12(0.694580078125), // sin(136°)
+ Q_4_12(0.681884765625), // sin(137°)
+ Q_4_12(0.669189453125), // sin(138°)
+ Q_4_12(0.656005859375), // sin(139°)
+ Q_4_12(0.642822265625), // sin(140°)
+ Q_4_12(0.62939453125), // sin(141°)
+ Q_4_12(0.61572265625), // sin(142°)
+ Q_4_12(0.601806640625), // sin(143°)
+ Q_4_12(0.587890625), // sin(144°)
+ Q_4_12(0.573486328125), // sin(145°)
+ Q_4_12(0.55908203125), // sin(146°)
+ Q_4_12(0.544677734375), // sin(147°)
+ Q_4_12(0.530029296875), // sin(148°)
+ Q_4_12(0.51513671875), // sin(149°)
+ Q_4_12(0.5), // sin(150°)
+ Q_4_12(0.48486328125), // sin(151°)
+ Q_4_12(0.469482421875), // sin(152°)
+ Q_4_12(0.4541015625), // sin(153°)
+ Q_4_12(0.4384765625), // sin(154°)
+ Q_4_12(0.422607421875), // sin(155°)
+ Q_4_12(0.40673828125), // sin(156°)
+ Q_4_12(0.390625), // sin(157°)
+ Q_4_12(0.37451171875), // sin(158°)
+ Q_4_12(0.3583984375), // sin(159°)
+ Q_4_12(0.342041015625), // sin(160°)
+ Q_4_12(0.32568359375), // sin(161°)
+ Q_4_12(0.30908203125), // sin(162°)
+ Q_4_12(0.29248046875), // sin(163°)
+ Q_4_12(0.275634765625), // sin(164°)
+ Q_4_12(0.2587890625), // sin(165°)
+ Q_4_12(0.241943359375), // sin(166°)
+ Q_4_12(0.224853515625), // sin(167°)
+ Q_4_12(0.2080078125), // sin(168°)
+ Q_4_12(0.19091796875), // sin(169°)
+ Q_4_12(0.173583984375), // sin(170°)
+ Q_4_12(0.156494140625), // sin(171°)
+ Q_4_12(0.13916015625), // sin(172°)
+ Q_4_12(0.121826171875), // sin(173°)
+ Q_4_12(0.1044921875), // sin(174°)
+ Q_4_12(0.087158203125), // sin(175°)
+ Q_4_12(0.06982421875), // sin(176°)
+ Q_4_12(0.05224609375), // sin(177°)
+ Q_4_12(0.034912109375), // sin(178°)
+ Q_4_12(0.017333984375), // sin(179°)
+};
// amplitude * sin(index*(π/128))
s16 Sin(s16 index, s16 amplitude)