shithub: cstory

Download patch

ref: 80e502b58273bec2fb470f55563ccc4867dcae1f
parent: db3fb6c37b988cc8a4e40150216d229937897d6f
parent: 0af9bcc89b64bd2a8dc46e1bce0a1c0a665068c4
author: Clownacy <[email protected]>
date: Tue Dec 3 14:29:04 EST 2019

Merge branch 'accurate' into portable

--- a/src/PixTone.cpp
+++ b/src/PixTone.cpp
@@ -17,8 +17,8 @@
 	// Sine wave
 	for (i = 0; i < 0x100; ++i)
 	{
-		gWaveModelTable[0][i] = (signed char)(sin(i * 6.283184 / 256.0) * 64.0);
-		a = gWaveModelTable[0][i];
+		gWaveModelTable[0][i] = (signed char)(sin((i * 6.283184) / 256.0) * 64.0);
+		a = gWaveModelTable[0][i];	// I have no idea what this line was meant to do
 	}
 
 	// Triangle wave
@@ -31,23 +31,23 @@
 	for (a = 0; i < 0xC0; ++i)
 	{
 		// Downwards
-		gWaveModelTable[1][i] = 0x40 - (a * 0x40) / 0x40;
+		gWaveModelTable[1][i] = 0x40 - ((a * 0x40) / 0x40);
 		++a;
 	}
 	for (a = 0; i < 0x100; ++i)
 	{
 		// Back up
-		gWaveModelTable[1][i] = (a * 0x40) / 0x40 - 0x40;
+		gWaveModelTable[1][i] = ((a * 0x40) / 0x40) - 0x40;
 		++a;
 	}
 
 	// Saw up wave
 	for (i = 0; i < 0x100; ++i)
-		gWaveModelTable[2][i] = i / 2 - 0x40;
+		gWaveModelTable[2][i] = (i / 2) - 0x40;
 
 	// Saw down wave
 	for (i = 0; i < 0x100; ++i)
-		gWaveModelTable[3][i] = 0x40 - i / 2;
+		gWaveModelTable[3][i] = 0x40 - (i / 2);
 
 	// Square wave
 	for (i = 0; i < 0x80; ++i)
@@ -88,7 +88,7 @@
 	while (i < ptp->pointAx)
 	{
 		envelopeTable[i] = (signed char)dEnvelope;
-		dEnvelope = ((double)ptp->pointAy - ptp->initial) / ptp->pointAx + dEnvelope;
+		dEnvelope = (((double)ptp->pointAy - ptp->initial) / ptp->pointAx) + dEnvelope;
 		++i;
 	}
 
@@ -96,7 +96,7 @@
 	while (i < ptp->pointBx)
 	{
 		envelopeTable[i] = (signed char)dEnvelope;
-		dEnvelope = ((double)ptp->pointBy - ptp->pointAy) / (double)(ptp->pointBx - ptp->pointAx) + dEnvelope;
+		dEnvelope = (((double)ptp->pointBy - ptp->pointAy) / (double)(ptp->pointBx - ptp->pointAx)) + dEnvelope;
 		++i;
 	}
 
@@ -112,7 +112,7 @@
 	while (i < 0x100)
 	{
 		envelopeTable[i] = (signed char)dEnvelope;
-		dEnvelope = (double)dEnvelope - ptp->pointCy / (double)(256 - ptp->pointCx);
+		dEnvelope = dEnvelope - (ptp->pointCy / (double)(0x100 - ptp->pointCx));
 		++i;
 	}
 
@@ -144,7 +144,7 @@
 		pData[i] = gWaveModelTable[ptp->oMain.model][a]
 		         * ptp->oMain.top
 		         / 64
-		         * (gWaveModelTable[ptp->oVolume.model][c] * ptp->oVolume.top / 64 + 64)
+		         * (((gWaveModelTable[ptp->oVolume.model][c] * ptp->oVolume.top) / 64) + 64)
 		         / 64
 		         * envelopeTable[d]
 		         / 64