shithub: cstory

Download patch

ref: 113c3fc124268633663c454f465459ad1c8172a3
parent: c284afdaddde42695af3df1507f024758cf29ebf
author: cuckydev <cuckydev@users.noreply.github.com>
date: Thu Jan 31 08:01:09 EST 2019

Made SFX loading more similar to the original

--- a/src/GenericLoad.cpp
+++ b/src/GenericLoad.cpp
@@ -1,5 +1,7 @@
 #include "CommonDefines.h"
 #include "Draw.h"
+#include "Sound.h"
+#include "PixTone.h"
 
 bool LoadGenericData()
 {
@@ -51,6 +53,34 @@
 		MakeSurface_Generic(320, 240, SURFACE_ID_LEVEL_SPRITESET_1);
 		MakeSurface_Generic(320, 240, SURFACE_ID_LEVEL_SPRITESET_2);
 		MakeSurface_Generic(WINDOW_WIDTH, 240, SURFACE_ID_CREDIT_CAST);
+		
+		char path[0x100];
+		uint8_t *buf = nullptr;
+		size_t len;
+			
+		for (unsigned int n = 0; n < SOUND_NO; n++)
+		{
+			sprintf(path, "%2.2X.pxt", n);
+			
+			if (LoadPxt(path, &buf, &len))
+			{
+				lpSECONDARYBUFFER[n] = new SOUNDBUFFER(len);
+				
+				uint8_t *sBuf;
+				size_t sLen;
+				lpSECONDARYBUFFER[n]->Lock(&sBuf, &sLen);
+				memcpy(sBuf, buf, sLen);
+				lpSECONDARYBUFFER[n]->Unlock();
+				lpSECONDARYBUFFER[n]->SetFrequency(22050);
+			}
+			
+			//Free buffer, we're done with it
+			if (buf)
+			{
+				free(buf);
+				buf = nullptr;
+			}
+		}
 		return true;
 	}
 }
--- a/src/PixTone.cpp
+++ b/src/PixTone.cpp
@@ -10,6 +10,7 @@
 #include "PixTone.h"
 
 int8_t gWaveModelTable[6][0x100];
+bool wave_tables_made;
 
 void MakeWaveTables()
 {
@@ -72,6 +73,13 @@
 
 bool MakePixelWaveData(const std::vector<double>& pxtData, uint8_t *data)
 {
+	//Make wave tables if not created already
+	if (!wave_tables_made)
+	{
+		MakeWaveTables();
+		wave_tables_made = true;
+	}
+	
 	//Get some envelope stuff
 	char envelopeTable[0x100];
 	memset(envelopeTable, 0, sizeof(envelopeTable));
--- a/src/Sound.cpp
+++ b/src/Sound.cpp
@@ -268,38 +268,6 @@
 	
 	//Start organya
 	StartOrganya();
-	
-	//Load sound effects
-	MakeWaveTables();
-	
-	char path[0x100];
-	uint8_t *buf = nullptr;
-	size_t len;
-		
-	for (unsigned int n = 0; n < SOUND_NO; n++)
-	{
-		sprintf(path, "%2.2X.pxt", n);
-		
-		if (LoadPxt(path, &buf, &len))
-		{
-			lpSECONDARYBUFFER[n] = new SOUNDBUFFER(len);
-			
-			uint8_t *sBuf;
-			size_t sLen;
-			lpSECONDARYBUFFER[n]->Lock(&sBuf, &sLen);
-			memcpy(sBuf, buf, sLen);
-			lpSECONDARYBUFFER[n]->Unlock();
-			lpSECONDARYBUFFER[n]->SetFrequency(22050);
-		}
-		
-		//Free buffer, we're done with it
-		if (buf)
-		{
-			free(buf);
-			buf = nullptr;
-		}
-	}
-	
 	return true;
 }
 
--