shithub: cstory

Download patch

ref: 10a014dabda1d525f0e51eef2084f268f33c046e
parent: 5abf8a887833b3e9fa97845ac43f2d56eadd853f
author: Clownacy <Clownacy@users.noreply.github.com>
date: Tue Jan 7 16:45:43 EST 2020

More-accurate PixTone.cpp variable arrangement

Also added the Linux port's optimisation, for anyone that's curious

--- a/src/PixTone.cpp
+++ b/src/PixTone.cpp
@@ -6,12 +6,14 @@
 
 #include "WindowsWrapper.h"
 
-static signed char gWaveModelTable[6][0x100];
+signed char gWaveModelTable[6][0x100];
 
 void MakeWaveTables(void)
 {
-	int i, a;
+	int i;
 
+	int a;
+
 	// Sine wave
 	for (i = 0; i < 0x100; ++i)
 	{
@@ -59,24 +61,28 @@
 		gWaveModelTable[5][i] = (signed char)(rand() & 0xFF) / 2;
 }
 
+//BOOL wave_tables_made;
+
 BOOL MakePixelWaveData(const PIXTONEPARAMETER *ptp, unsigned char *pData)
 {
 	int i;
-	double dEnvelope;
+	int a, b, c, d;
+
 	double dPitch;
 	double dMain;
 	double dVolume;
-	double d1;
-	double d2;
-	double d3;
-	int a;
-	int b;
-	int c;
-	int d;
+
+	double dEnvelope;
 	signed char envelopeTable[0x100];
 
+	double d1, d2, d3;
+
 	// The Linux port added a cute optimisation here, where MakeWaveTables is only called once during the game's execution
-	MakeWaveTables();
+	//if (wave_tables_made != TRUE)
+	//{
+		MakeWaveTables();
+	//	wave_tables_made = TRUE;
+	//}
 
 	memset(envelopeTable, 0, sizeof(envelopeTable));