cmake windows

This commit is contained in:
antpoms 2025-06-11 16:50:48 +02:00
parent f698a38c7e
commit 2ace28d941
387 changed files with 96179 additions and 1 deletions

View file

@ -0,0 +1,163 @@
/*==============================================================================
Event 3D Example
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
This example demonstrates how to position events in 3D for spatialization.
For information on using FMOD example code in your own programs, visit
https://www.fmod.com/legal
==============================================================================*/
#include "fmod_studio.hpp"
#include "fmod.hpp"
#include "common.h"
const int SCREEN_WIDTH = NUM_COLUMNS;
const int SCREEN_HEIGHT = 16;
int currentScreenPosition = -1;
char screenBuffer[(SCREEN_WIDTH + 1) * SCREEN_HEIGHT + 1] = {0};
void initializeScreenBuffer();
void updateScreenPosition(const FMOD_VECTOR& worldPosition);
int FMOD_Main()
{
void *extraDriverData = NULL;
Common_Init(&extraDriverData);
FMOD::Studio::System* system = NULL;
ERRCHECK( FMOD::Studio::System::create(&system) );
// The example Studio project is authored for 5.1 sound, so set up the system output mode to match
FMOD::System* coreSystem = NULL;
ERRCHECK( system->getCoreSystem(&coreSystem) );
ERRCHECK( coreSystem->setSoftwareFormat(0, FMOD_SPEAKERMODE_5POINT1, 0) );
ERRCHECK( system->initialize(1024, FMOD_STUDIO_INIT_NORMAL, FMOD_INIT_NORMAL, extraDriverData) );
FMOD::Studio::Bank* masterBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &masterBank) );
FMOD::Studio::Bank* stringsBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.strings.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &stringsBank) );
FMOD::Studio::Bank* vehiclesBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Vehicles.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &vehiclesBank) );
FMOD::Studio::EventDescription* eventDescription = NULL;
ERRCHECK( system->getEvent("event:/Vehicles/Ride-on Mower", &eventDescription) );
FMOD::Studio::EventInstance* eventInstance = NULL;
ERRCHECK( eventDescription->createInstance(&eventInstance) );
ERRCHECK( eventInstance->setParameterByName("RPM", 650.0f) );
ERRCHECK( eventInstance->start() );
// Position the listener at the origin
FMOD_3D_ATTRIBUTES attributes = { { 0 } };
attributes.forward.z = 1.0f;
attributes.up.y = 1.0f;
ERRCHECK( system->setListenerAttributes(0, &attributes) );
// Position the event 2 units in front of the listener
attributes.position.z = 2.0f;
ERRCHECK( eventInstance->set3DAttributes(&attributes) );
initializeScreenBuffer();
do
{
Common_Update();
if (Common_BtnDown(BTN_LEFT))
{
attributes.position.x -= 1.0f;
ERRCHECK( eventInstance->set3DAttributes(&attributes) );
}
if (Common_BtnDown(BTN_RIGHT))
{
attributes.position.x += 1.0f;
ERRCHECK( eventInstance->set3DAttributes(&attributes) );
}
if (Common_BtnDown(BTN_UP))
{
attributes.position.z += 1.0f;
ERRCHECK( eventInstance->set3DAttributes(&attributes) );
}
if (Common_BtnDown(BTN_DOWN))
{
attributes.position.z -= 1.0f;
ERRCHECK( eventInstance->set3DAttributes(&attributes) );
}
ERRCHECK( system->update() );
updateScreenPosition(attributes.position);
Common_Draw("==================================================");
Common_Draw("Event 3D Example.");
Common_Draw("Copyright (c) Firelight Technologies 2012-2025.");
Common_Draw("==================================================");
Common_Draw(screenBuffer);
Common_Draw("Use the arrow keys (%s, %s, %s, %s) to control the event position",
Common_BtnStr(BTN_LEFT), Common_BtnStr(BTN_RIGHT), Common_BtnStr(BTN_UP), Common_BtnStr(BTN_DOWN));
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Sleep(50);
} while (!Common_BtnPress(BTN_QUIT));
ERRCHECK( system->release() );
Common_Close();
return 0;
}
void initializeScreenBuffer()
{
memset(screenBuffer, ' ', sizeof(screenBuffer));
int idx = SCREEN_WIDTH;
for (int i = 0; i < SCREEN_HEIGHT; ++i)
{
screenBuffer[idx] = '\n';
idx += SCREEN_WIDTH + 1;
}
screenBuffer[(SCREEN_WIDTH + 1) * SCREEN_HEIGHT] = '\0';
}
int getCharacterIndex(const FMOD_VECTOR& position)
{
int row = static_cast<int>(-position.z + (SCREEN_HEIGHT / 2));
int col = static_cast<int>(position.x + (SCREEN_WIDTH / 2));
if (0 < row && row < SCREEN_HEIGHT && 0 < col && col < SCREEN_WIDTH)
{
return (row * (SCREEN_WIDTH + 1)) + col;
}
return -1;
}
void updateScreenPosition(const FMOD_VECTOR& eventPosition)
{
if (currentScreenPosition != -1)
{
screenBuffer[currentScreenPosition] = ' ';
currentScreenPosition = -1;
}
FMOD_VECTOR origin = {0};
int idx = getCharacterIndex(origin);
screenBuffer[idx] = '^';
idx = getCharacterIndex(eventPosition);
if (idx != -1)
{
screenBuffer[idx] = 'o';
currentScreenPosition = idx;
}
}

View file

@ -0,0 +1,241 @@
/*==============================================================================
Event 3D Multi-Listener Example
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
This example demonstrates how use listener weighting to crossfade listeners
in and out.
For information on using FMOD example code in your own programs, visit
https://www.fmod.com/legal
==============================================================================*/
#include "fmod_studio.hpp"
#include "fmod.hpp"
#include "common.h"
const int SCREEN_WIDTH = NUM_COLUMNS;
const int SCREEN_HEIGHT = 10;
char backBuffer[(SCREEN_WIDTH + 1) * SCREEN_HEIGHT + 1] = {0};
char screenBuffer[(SCREEN_WIDTH + 1) * SCREEN_HEIGHT + 1] = {0};
void initializeScreenBuffer();
void updateScreenPosition(const FMOD_VECTOR& worldPosition, float listenerDist, float weight1, float weight2);
int FMOD_Main()
{
void *extraDriverData = NULL;
Common_Init(&extraDriverData);
FMOD::Studio::System* system = NULL;
ERRCHECK( FMOD::Studio::System::create(&system) );
// The example Studio project is authored for 5.1 sound, so set up the system output mode to match
FMOD::System* coreSystem = NULL;
ERRCHECK( system->getCoreSystem(&coreSystem) );
ERRCHECK( coreSystem->setSoftwareFormat(0, FMOD_SPEAKERMODE_5POINT1, 0) );
ERRCHECK( system->initialize(1024, FMOD_STUDIO_INIT_NORMAL, FMOD_INIT_NORMAL, extraDriverData) );
FMOD::Studio::Bank* masterBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &masterBank) );
FMOD::Studio::Bank* stringsBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.strings.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &stringsBank) );
FMOD::Studio::Bank* vehiclesBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Vehicles.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &vehiclesBank) );
FMOD::Studio::EventDescription* eventDescription = NULL;
ERRCHECK( system->getEvent("event:/Vehicles/Ride-on Mower", &eventDescription) );
FMOD::Studio::EventInstance* eventInstance = NULL;
ERRCHECK( eventDescription->createInstance(&eventInstance) );
ERRCHECK( eventInstance->setParameterByName("RPM", 650.0f) );
ERRCHECK( eventInstance->start() );
// Position two listeners
ERRCHECK( system->setNumListeners(2) );
int activeListener = 0;
float listenerDist = 8.0f;
float listenerWeight[2] = { 1.0f, 0.0f };
FMOD_3D_ATTRIBUTES listenerAttributes[2] = {};
listenerAttributes[0].forward.z = 1.0f;
listenerAttributes[0].up.y = 1.0f;
listenerAttributes[0].position.x = -listenerDist;
listenerAttributes[1].forward.z = 1.0f;
listenerAttributes[1].up.y = 1.0f;
listenerAttributes[1].position.x = listenerDist;
ERRCHECK( system->setListenerAttributes(0, &listenerAttributes[0]) );
ERRCHECK( system->setListenerWeight(0, listenerWeight[0]) );
ERRCHECK( system->setListenerAttributes(1, &listenerAttributes[1]) );
ERRCHECK( system->setListenerWeight(1, listenerWeight[1]) );
// Position the event 2 units in front of the listener
FMOD_3D_ATTRIBUTES carAttributes = {};
carAttributes.forward.z = 1.0f;
carAttributes.up.y = 1.0f;
carAttributes.position.x = 0.0f;
carAttributes.position.z = 2.0f;
ERRCHECK( eventInstance->set3DAttributes(&carAttributes) );
initializeScreenBuffer();
do
{
Common_Update();
if (Common_BtnPress(BTN_LEFT))
{
carAttributes.position.x -= 1.0f;
ERRCHECK( eventInstance->set3DAttributes(&carAttributes) );
}
if (Common_BtnPress(BTN_RIGHT))
{
carAttributes.position.x += 1.0f;
ERRCHECK( eventInstance->set3DAttributes(&carAttributes) );
}
if (Common_BtnPress(BTN_UP))
{
carAttributes.position.z += 1.0f;
ERRCHECK( eventInstance->set3DAttributes(&carAttributes) );
}
if (Common_BtnPress(BTN_DOWN))
{
carAttributes.position.z -= 1.0f;
ERRCHECK( eventInstance->set3DAttributes(&carAttributes) );
}
if (Common_BtnPress(BTN_ACTION1))
{
activeListener++;
if (activeListener > 2)
activeListener = 0;
}
if (Common_BtnPress(BTN_ACTION2))
{
activeListener--;
if (activeListener < 0)
activeListener = 2;
}
if (Common_BtnPress(BTN_ACTION3))
{
listenerDist -= 1.0f;
if (listenerDist < 0.0f)
listenerDist = 0.0f;
}
if (Common_BtnPress(BTN_ACTION4))
{
listenerDist += 1.0f;
if (listenerDist < 0.0f)
listenerDist = 0.0f;
}
for (int i=0; i<2; ++i)
{
float target = (activeListener == i || activeListener == 2); // 0 = left, 1 = right, 2 = both
float dist = (target - listenerWeight[i]);
float step = 50.0f / 1000.0f; // very rough estimate of 50ms per update, not properly timed
if (dist >= -step && dist <= step)
listenerWeight[i] = target;
else if (dist > 0.0f)
listenerWeight[i] += step;
else
listenerWeight[i] += -step;
}
listenerAttributes[0].position.x = -listenerDist;
listenerAttributes[1].position.x = listenerDist;
ERRCHECK( system->setListenerAttributes(0, &listenerAttributes[0]) );
ERRCHECK( system->setListenerAttributes(1, &listenerAttributes[1]) );
ERRCHECK( system->setListenerWeight(0, listenerWeight[0]) );
ERRCHECK( system->setListenerWeight(1, listenerWeight[1]) );
ERRCHECK( system->update() );
updateScreenPosition(carAttributes.position, listenerDist, listenerWeight[0], listenerWeight[1]);
Common_Draw("==================================================");
Common_Draw("Event 3D Multi-Listener Example.");
Common_Draw("Copyright (c) Firelight Technologies 2012-2025.");
Common_Draw("==================================================");
Common_Draw(screenBuffer);
Common_Draw("Left listener: %d%%", (int)(listenerWeight[0] * 100));
Common_Draw("Right listener: %d%%", (int)(listenerWeight[1] * 100));
Common_Draw("Use the arrow keys (%s, %s, %s, %s) to control the event position",
Common_BtnStr(BTN_LEFT), Common_BtnStr(BTN_RIGHT), Common_BtnStr(BTN_UP), Common_BtnStr(BTN_DOWN));
Common_Draw("Use %s and %s to toggle left/right/both listeners", Common_BtnStr(BTN_ACTION1), Common_BtnStr(BTN_ACTION2));
Common_Draw("Use %s and %s to move listeners closer or further apart", Common_BtnStr(BTN_ACTION3), Common_BtnStr(BTN_ACTION4));
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Sleep(50);
} while (!Common_BtnPress(BTN_QUIT));
ERRCHECK( system->release() );
Common_Close();
return 0;
}
void initializeScreenBuffer()
{
memset(backBuffer, ' ', sizeof(backBuffer));
int idx = SCREEN_WIDTH;
for (int i = 0; i < SCREEN_HEIGHT; ++i)
{
backBuffer[idx] = '\n';
idx += SCREEN_WIDTH + 1;
}
backBuffer[(SCREEN_WIDTH + 1) * SCREEN_HEIGHT] = '\0';
memcpy(screenBuffer, backBuffer, sizeof(screenBuffer));
}
void setCharacterIndex(const FMOD_VECTOR& position, char ch)
{
int row = static_cast<int>(-position.z + (SCREEN_HEIGHT / 2));
int col = static_cast<int>(position.x + (SCREEN_WIDTH / 2));
if (0 < row && row < SCREEN_HEIGHT && 0 < col && col < SCREEN_WIDTH)
{
screenBuffer[row * (SCREEN_WIDTH + 1) + col] = ch;
}
}
char symbolForWeight(float weight)
{
if (weight >= 0.95f)
return 'X';
else if (weight >= 0.05f)
return 'x';
else
return '.';
}
void updateScreenPosition(const FMOD_VECTOR& worldPosition, float listenerDist, float weight1, float weight2)
{
memcpy(screenBuffer, backBuffer, sizeof(screenBuffer));
FMOD_VECTOR pos = {0};
setCharacterIndex(pos, '^');
pos.x = -listenerDist;
setCharacterIndex(pos, symbolForWeight(weight1));
pos.x = listenerDist;
setCharacterIndex(pos, symbolForWeight(weight2));
setCharacterIndex(worldPosition, 'o');
}

View file

@ -0,0 +1,234 @@
/*==============================================================================
FMOD Example Framework
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
==============================================================================*/
#include "common.h"
#include "fmod_errors.h"
/* Cross platform OS Functions internal to the FMOD library, exposed for the example framework. */
#ifdef __cplusplus
extern "C" {
#endif
typedef struct FMOD_OS_FILE FMOD_OS_FILE;
typedef struct FMOD_OS_CRITICALSECTION FMOD_OS_CRITICALSECTION;
FMOD_RESULT F_API FMOD_OS_Time_GetUs(unsigned int *us);
FMOD_RESULT F_API FMOD_OS_Debug_Output(const char *format, ...);
FMOD_RESULT F_API FMOD_OS_File_Open(const char *name, int mode, unsigned int *filesize, FMOD_OS_FILE **handle);
FMOD_RESULT F_API FMOD_OS_File_Close(FMOD_OS_FILE *handle);
FMOD_RESULT F_API FMOD_OS_File_Read(FMOD_OS_FILE *handle, void *buf, unsigned int count, unsigned int *read);
FMOD_RESULT F_API FMOD_OS_File_Write(FMOD_OS_FILE *handle, const void *buffer, unsigned int bytesToWrite, bool flush);
FMOD_RESULT F_API FMOD_OS_File_Seek(FMOD_OS_FILE *handle, unsigned int offset);
FMOD_RESULT F_API FMOD_OS_Time_Sleep(unsigned int ms);
FMOD_RESULT F_API FMOD_OS_CriticalSection_Create(FMOD_OS_CRITICALSECTION **crit, bool memorycrit);
FMOD_RESULT F_API FMOD_OS_CriticalSection_Free(FMOD_OS_CRITICALSECTION *crit, bool memorycrit);
FMOD_RESULT F_API FMOD_OS_CriticalSection_Enter(FMOD_OS_CRITICALSECTION *crit);
FMOD_RESULT F_API FMOD_OS_CriticalSection_Leave(FMOD_OS_CRITICALSECTION *crit);
FMOD_RESULT F_API FMOD_OS_CriticalSection_TryEnter(FMOD_OS_CRITICALSECTION *crit, bool *entered);
FMOD_RESULT F_API FMOD_OS_CriticalSection_IsLocked(FMOD_OS_CRITICALSECTION *crit, bool *locked);
FMOD_RESULT F_API FMOD_OS_Thread_Create(const char *name, void (*callback)(void *param), void *param, FMOD_THREAD_AFFINITY affinity, FMOD_THREAD_PRIORITY priority, FMOD_THREAD_STACK_SIZE stacksize, void **handle);
FMOD_RESULT F_API FMOD_OS_Thread_Destroy(void *handle);
#ifdef __cplusplus
}
#endif
void (*Common_Private_Error)(FMOD_RESULT, const char *, int);
void ERRCHECK_fn(FMOD_RESULT result, const char *file, int line)
{
if (result != FMOD_OK)
{
if (Common_Private_Error)
{
Common_Private_Error(result, file, line);
}
Common_Fatal("%s(%d): FMOD error %d - %s", file, line, result, FMOD_ErrorString(result));
}
}
void Common_Format(char *buffer, int bufferSize, const char *formatString...)
{
va_list args;
va_start(args, formatString);
Common_vsnprintf(buffer, bufferSize, formatString, args);
va_end(args);
buffer[bufferSize-1] = '\0';
}
void Common_Fatal(const char *format, ...)
{
char error[1024];
va_list args;
va_start(args, format);
Common_vsnprintf(error, 1024, format, args);
va_end(args);
error[1023] = '\0';
do
{
Common_Draw("A fatal error has occurred...");
Common_Draw("");
Common_Draw("%s", error);
Common_Draw("");
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Update();
Common_Sleep(50);
} while (!Common_BtnPress(BTN_QUIT));
Common_Exit(0);
}
void Common_Draw(const char *format, ...)
{
char string[1024];
char *stringPtr = string;
va_list args;
va_start(args, format);
Common_vsnprintf(string, 1024, format, args);
va_end(args);
string[1023] = '\0';
unsigned int length = (unsigned int)strlen(string);
do
{
bool consumeNewLine = false;
unsigned int copyLength = length;
// Search for new line characters
char *newLinePtr = strchr(stringPtr, '\n');
if (newLinePtr)
{
consumeNewLine = true;
copyLength = (unsigned int)(newLinePtr - stringPtr);
}
if (copyLength > NUM_COLUMNS)
{
// Hard wrap by default
copyLength = NUM_COLUMNS;
// Loop for a soft wrap
for (int i = NUM_COLUMNS - 1; i >= 0; i--)
{
if (stringPtr[i] == ' ')
{
copyLength = i + 1;
break;
}
}
}
// Null terminate the sub string temporarily by swapping out a char
char tempChar = stringPtr[copyLength];
stringPtr[copyLength] = 0;
Common_DrawText(stringPtr);
stringPtr[copyLength] = tempChar;
copyLength += (consumeNewLine ? 1 : 0);
length -= copyLength;
stringPtr += copyLength;
} while (length > 0);
}
void Common_Time_GetUs(unsigned int *us)
{
FMOD_OS_Time_GetUs(us);
}
void Common_Log(const char *format, ...)
{
char string[1024];
va_list args;
va_start(args, format);
Common_vsnprintf(string, 1024, format, args);
va_end(args);
string[1023] = '\0';
FMOD_OS_Debug_Output(string);
}
void Common_LoadFileMemory(const char *name, void **buff, int *length)
{
FMOD_OS_FILE *file = NULL;
unsigned int len, bytesread;
FMOD_OS_File_Open(name, 0, &len, &file);
void *mem = malloc(len);
FMOD_OS_File_Read(file, mem, len, &bytesread);
FMOD_OS_File_Close(file);
*buff = mem;
*length = bytesread;
}
void Common_UnloadFileMemory(void *buff)
{
free(buff);
}
void Common_Sleep(unsigned int ms)
{
FMOD_OS_Time_Sleep(ms);
}
void Common_File_Open(const char *name, int mode, unsigned int *filesize, void **handle)
{
FMOD_OS_File_Open(name, mode, filesize, (FMOD_OS_FILE **)handle);
}
void Common_File_Close(void *handle)
{
FMOD_OS_File_Close((FMOD_OS_FILE *)handle);
}
void Common_File_Read(void *handle, void *buf, unsigned int length, unsigned int *read)
{
FMOD_OS_File_Read((FMOD_OS_FILE *)handle, buf, length, read);
}
void Common_File_Write(void *handle, void *buf, unsigned int length)
{
FMOD_OS_File_Write((FMOD_OS_FILE *)handle, buf, length, true);
}
void Common_File_Seek(void *handle, unsigned int offset)
{
FMOD_OS_File_Seek((FMOD_OS_FILE *)handle, offset);
}
void Common_Mutex_Create(Common_Mutex *mutex)
{
FMOD_OS_CriticalSection_Create((FMOD_OS_CRITICALSECTION **)&mutex->crit, false);
}
void Common_Mutex_Destroy(Common_Mutex *mutex)
{
FMOD_OS_CriticalSection_Free((FMOD_OS_CRITICALSECTION *)mutex->crit, false);
}
void Common_Mutex_Enter(Common_Mutex *mutex)
{
FMOD_OS_CriticalSection_Enter((FMOD_OS_CRITICALSECTION *)mutex->crit);
}
void Common_Mutex_Leave(Common_Mutex *mutex)
{
FMOD_OS_CriticalSection_Leave((FMOD_OS_CRITICALSECTION *)mutex->crit);
}
void Common_Thread_Create(void (*callback)(void *param), void *param, void **handle)
{
FMOD_OS_Thread_Create("FMOD Example Thread", callback, param, FMOD_THREAD_AFFINITY_GROUP_A, FMOD_THREAD_PRIORITY_MEDIUM, (16 * 1024), handle);
}
void Common_Thread_Destroy(void *handle)
{
FMOD_OS_Thread_Destroy(handle);
}

View file

@ -0,0 +1,93 @@
/*==============================================================================
FMOD Example Framework
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
==============================================================================*/
#ifndef FMOD_EXAMPLES_COMMON_H
#define FMOD_EXAMPLES_COMMON_H
#include "common_platform.h"
#include "fmod.h"
#include <stddef.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <stdarg.h>
#include <stdio.h>
#include <assert.h>
#define NUM_COLUMNS 50
#define NUM_ROWS 25
#ifndef Common_Sin
#define Common_Sin sin
#endif
#ifndef Common_snprintf
#define Common_snprintf snprintf
#endif
#ifndef Common_vsnprintf
#define Common_vsnprintf vsnprintf
#endif
enum Common_Button
{
BTN_ACTION1,
BTN_ACTION2,
BTN_ACTION3,
BTN_ACTION4,
BTN_LEFT,
BTN_RIGHT,
BTN_UP,
BTN_DOWN,
BTN_MORE,
BTN_QUIT
};
typedef struct
{
void *crit;
} Common_Mutex;
/* Cross platform functions (common) */
void Common_Format(char *buffer, int bufferSize, const char *formatString...);
void Common_Fatal(const char *format, ...);
void Common_Draw(const char *format, ...);
void Common_Time_GetUs(unsigned int *us);
void Common_Log(const char *format, ...);
void Common_LoadFileMemory(const char *name, void **buff, int *length);
void Common_UnloadFileMemory(void *buff);
void Common_Sleep(unsigned int ms);
void Common_File_Open(const char *name, int mode, unsigned int *filesize, void **handle); // mode : 0 = read, 1 = write.
void Common_File_Close(void *handle);
void Common_File_Read(void *handle, void *buf, unsigned int length, unsigned int *read);
void Common_File_Write(void *handle, void *buf, unsigned int length);
void Common_File_Seek(void *handle, unsigned int offset);
void Common_Mutex_Create(Common_Mutex *mutex);
void Common_Mutex_Destroy(Common_Mutex *mutex);
void Common_Mutex_Enter(Common_Mutex *mutex);
void Common_Mutex_Leave(Common_Mutex *mutex);
void Common_Thread_Create(void (*callback)(void *param), void *param, void **handle);
void Common_Thread_Destroy(void *handle);
void ERRCHECK_fn(FMOD_RESULT result, const char *file, int line);
#define ERRCHECK(_result) ERRCHECK_fn(_result, __FILE__, __LINE__)
#define Common_Max(_a, _b) ((_a) > (_b) ? (_a) : (_b))
#define Common_Min(_a, _b) ((_a) < (_b) ? (_a) : (_b))
#define Common_Clamp(_min, _val, _max) ((_val) < (_min) ? (_min) : ((_val) > (_max) ? (_max) : (_val)))
/* Functions with platform specific implementation (common_platform) */
void Common_Init(void **extraDriverData);
void Common_Close();
void Common_Update();
void Common_Exit(int returnCode);
void Common_DrawText(const char *text);
bool Common_BtnPress(Common_Button btn);
bool Common_BtnDown(Common_Button btn);
const char *Common_BtnStr(Common_Button btn);
const char *Common_MediaPath(const char *fileName);
const char *Common_WritePath(const char *fileName);
#endif

View file

@ -0,0 +1,306 @@
/*==============================================================================
FMOD Example Framework
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
==============================================================================*/
#define WIN32_LEAN_AND_MEAN
#include "common.h"
#include <stdio.h>
#include <conio.h>
#include <Windows.h>
#include <Objbase.h>
#include <vector>
static HWND gWindow = nullptr;
static int gScreenWidth = 0;
static int gScreenHeight = 0;
static unsigned int gPressedButtons = 0;
static unsigned int gDownButtons = 0;
static unsigned int gLastDownButtons = 0;
static char gWriteBuffer[(NUM_COLUMNS+1) * NUM_ROWS] = {0};
static char gDisplayBuffer[(NUM_COLUMNS+1) * NUM_ROWS] = {0};
static unsigned int gYPos = 0;
static bool gQuit = false;
static std::vector<char *> gPathList;
bool Common_Private_Test;
int Common_Private_Argc;
char** Common_Private_Argv;
void (*Common_Private_Update)(unsigned int*);
void (*Common_Private_Print)(const char*);
void (*Common_Private_Close)();
void Common_Init(void** /*extraDriverData*/)
{
CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);
}
void Common_Close()
{
CoUninitialize();
for (std::vector<char *>::iterator item = gPathList.begin(); item != gPathList.end(); ++item)
{
free(*item);
}
if (Common_Private_Close)
{
Common_Private_Close();
}
}
static unsigned int translateButton(unsigned int button)
{
switch (button)
{
case '1': return (1 << BTN_ACTION1);
case '2': return (1 << BTN_ACTION2);
case '3': return (1 << BTN_ACTION3);
case '4': return (1 << BTN_ACTION4);
case VK_LEFT: return (1 << BTN_LEFT);
case VK_RIGHT: return (1 << BTN_RIGHT);
case VK_UP: return (1 << BTN_UP);
case VK_DOWN: return (1 << BTN_DOWN);
case VK_SPACE: return (1 << BTN_MORE);
case VK_ESCAPE: return (1 << BTN_QUIT);
default: return 0;
}
}
void Common_Update()
{
MSG msg = { };
while (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
gPressedButtons = (gLastDownButtons ^ gDownButtons) & gDownButtons;
gPressedButtons |= (gQuit ? (1 << BTN_QUIT) : 0);
gLastDownButtons = gDownButtons;
memcpy(gDisplayBuffer, gWriteBuffer, sizeof(gWriteBuffer));
InvalidateRect(gWindow, nullptr, FALSE);
gYPos = 0;
memset(gWriteBuffer, ' ', sizeof(gWriteBuffer));
for (int i = 0; i < NUM_ROWS; i++)
{
gWriteBuffer[(i * (NUM_COLUMNS + 1)) + NUM_COLUMNS] = '\n';
}
if (Common_Private_Update)
{
Common_Private_Update(&gPressedButtons);
}
}
void Common_Exit(int returnCode)
{
exit(returnCode);
}
void Common_DrawText(const char *text)
{
if (gYPos < NUM_ROWS)
{
char tempBuffer[NUM_COLUMNS + 1];
Common_Format(tempBuffer, sizeof(tempBuffer), "%s", text);
memcpy(&gWriteBuffer[gYPos * (NUM_COLUMNS + 1)], tempBuffer, strlen(tempBuffer));
gYPos++;
}
}
bool Common_BtnPress(Common_Button btn)
{
return ((gPressedButtons & (1 << btn)) != 0);
}
bool Common_BtnDown(Common_Button btn)
{
return ((gDownButtons & (1 << btn)) != 0);
}
const char *Common_BtnStr(Common_Button btn)
{
switch (btn)
{
case BTN_ACTION1: return "1";
case BTN_ACTION2: return "2";
case BTN_ACTION3: return "3";
case BTN_ACTION4: return "4";
case BTN_LEFT: return "Left";
case BTN_RIGHT: return "Right";
case BTN_UP: return "Up";
case BTN_DOWN: return "Down";
case BTN_MORE: return "Space";
case BTN_QUIT: return "Escape";
default: return "Unknown";
}
}
const char *Common_MediaPath(const char *fileName)
{
char *filePath = (char *)calloc(256, sizeof(char));
static const char* pathPrefix = nullptr;
if (!pathPrefix)
{
const char *emptyPrefix = "";
const char *mediaPrefix = "../media/";
FILE *file = fopen(fileName, "r");
if (file)
{
fclose(file);
pathPrefix = emptyPrefix;
}
else
{
pathPrefix = mediaPrefix;
}
}
strcat(filePath, pathPrefix);
strcat(filePath, fileName);
gPathList.push_back(filePath);
return filePath;
}
const char *Common_WritePath(const char *fileName)
{
return Common_MediaPath(fileName);
}
void Common_TTY(const char *format, ...)
{
char string[1024] = {0};
va_list args;
va_start(args, format);
Common_vsnprintf(string, 1023, format, args);
va_end(args);
if (Common_Private_Print)
{
(*Common_Private_Print)(string);
}
else
{
OutputDebugStringA(string);
}
}
HFONT CreateDisplayFont()
{
return CreateFontA(22, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_OUTLINE_PRECIS,
CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH, 0);
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
if (message == WM_PAINT)
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
HDC hdcBack = CreateCompatibleDC(hdc);
HBITMAP hbmBack = CreateCompatibleBitmap(hdc, gScreenWidth, gScreenHeight);
HBITMAP hbmOld = (HBITMAP)SelectObject(hdcBack, hbmBack);
HFONT hfnt = CreateDisplayFont();
HFONT hfntOld = (HFONT)SelectObject(hdcBack, hfnt);
SetBkColor(hdcBack, RGB(0x0, 0x0, 0x0));
SetTextColor(hdcBack, RGB(0xFF, 0xFF, 0xFF));
DrawTextA(hdcBack, gDisplayBuffer, -1, &ps.rcPaint, 0);
BitBlt(hdc, 0, 0, gScreenWidth, gScreenHeight, hdcBack, 0, 0, SRCCOPY);
SelectObject(hdcBack, hfntOld);
DeleteObject(hfnt);
SelectObject(hdcBack, hbmOld);
DeleteObject(hbmBack);
DeleteDC(hdcBack);
EndPaint(hWnd, &ps);
}
else if (message == WM_DESTROY)
{
gQuit = true;
}
else if (message == WM_GETMINMAXINFO)
{
if (gScreenWidth == 0)
{
HDC hdc = GetDC(hWnd);
HFONT hfnt = CreateDisplayFont();
HFONT hfntOld = (HFONT)SelectObject(hdc, hfnt);
TEXTMETRICA metrics = { };
GetTextMetricsA(hdc, &metrics);
SelectObject(hdc, hfntOld);
DeleteObject(hfnt);
ReleaseDC(hWnd, hdc);
RECT rec = { };
rec.right = metrics.tmAveCharWidth * NUM_COLUMNS;
rec.bottom = metrics.tmHeight * NUM_ROWS;
BOOL success = AdjustWindowRect(&rec, WS_CAPTION | WS_SYSMENU, FALSE);
assert(success);
gScreenWidth = rec.right - rec.left;
gScreenHeight = rec.bottom - rec.top;
}
LPMINMAXINFO lpMMI = (LPMINMAXINFO)lParam;
lpMMI->ptMinTrackSize.x = gScreenWidth;
lpMMI->ptMinTrackSize.y = gScreenHeight;
lpMMI->ptMaxTrackSize = lpMMI->ptMinTrackSize;
}
else if (message == WM_KEYDOWN)
{
gDownButtons |= translateButton((unsigned int)wParam);
}
else if (message == WM_KEYUP)
{
gDownButtons &= ~translateButton((unsigned int)wParam);
}
else
{
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, PSTR /*pCmdLine*/, int nCmdShow)
{
const char CLASS_NAME[] = "FMOD Example Window Class";
Common_Private_Argc = __argc;
Common_Private_Argv = __argv;
WNDCLASSA wc = { };
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.hInstance = hInstance;
wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wc.lpszClassName = CLASS_NAME;
ATOM atom = RegisterClassA(&wc);
assert(atom);
gWindow = CreateWindowA(CLASS_NAME, "FMOD Example", WS_CAPTION | WS_SYSMENU, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, nullptr, nullptr, hInstance, nullptr);
assert(gWindow);
ShowWindow(gWindow, nCmdShow);
return FMOD_Main();
}

View file

@ -0,0 +1,16 @@
/*==============================================================================
FMOD Example Framework
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
==============================================================================*/
#include <windows.h>
int FMOD_Main();
#define COMMON_PLATFORM_SUPPORTS_FOPEN
#define Common_snprintf _snprintf
#define Common_vsnprintf _vsnprintf
void Common_TTY(const char *format, ...);

View file

@ -0,0 +1,97 @@
/*==============================================================================
Event Parameter Example
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
This example demonstrates how to control event playback using game parameters.
For information on using FMOD example code in your own programs, visit
https://www.fmod.com/legal
==============================================================================*/
#include "fmod_studio.hpp"
#include "fmod.hpp"
#include "common.h"
int FMOD_Main()
{
void *extraDriverData = NULL;
Common_Init(&extraDriverData);
FMOD::Studio::System* system = NULL;
ERRCHECK( FMOD::Studio::System::create(&system) );
ERRCHECK( system->initialize(1024, FMOD_STUDIO_INIT_NORMAL, FMOD_INIT_NORMAL, extraDriverData) );
FMOD::Studio::Bank* masterBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &masterBank) );
FMOD::Studio::Bank* stringsBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.strings.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &stringsBank) );
FMOD::Studio::Bank* sfxBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("SFX.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &sfxBank) );
FMOD::Studio::EventDescription* eventDescription = NULL;
ERRCHECK( system->getEvent("event:/Character/Player Footsteps", &eventDescription) );
// Find the parameter once and then set by handle
// Or we can just find by name every time but by handle is more efficient if we are setting lots of parameters
FMOD_STUDIO_PARAMETER_DESCRIPTION paramDesc;
ERRCHECK( eventDescription->getParameterDescriptionByName("Surface", &paramDesc) );
FMOD_STUDIO_PARAMETER_ID surfaceID = paramDesc.id;
FMOD::Studio::EventInstance* eventInstance = NULL;
ERRCHECK( eventDescription->createInstance(&eventInstance) );
// Make the event audible to start with
float surfaceParameterValue = 1.0f;
ERRCHECK( eventInstance->setParameterByID(surfaceID, surfaceParameterValue) );
do
{
Common_Update();
if (Common_BtnPress(BTN_MORE))
{
ERRCHECK( eventInstance->start() );
}
if (Common_BtnPress(BTN_ACTION1))
{
surfaceParameterValue = Common_Max(paramDesc.minimum, surfaceParameterValue - 1.0f);
ERRCHECK( eventInstance->setParameterByID(surfaceID, surfaceParameterValue) );
}
if (Common_BtnPress(BTN_ACTION2))
{
surfaceParameterValue = Common_Min(surfaceParameterValue + 1.0f, paramDesc.maximum);
ERRCHECK( eventInstance->setParameterByID(surfaceID, surfaceParameterValue) );
}
ERRCHECK( system->update() );
float userValue = 0.0f;
float finalValue = 0.0f;
ERRCHECK( eventInstance->getParameterByID(surfaceID, &userValue, &finalValue) );
Common_Draw("==================================================");
Common_Draw("Event Parameter Example.");
Common_Draw("Copyright (c) Firelight Technologies 2012-2025.");
Common_Draw("==================================================");
Common_Draw("");
Common_Draw("Surface Parameter = (user: %1.1f, final: %1.1f)", userValue, finalValue);
Common_Draw("");
Common_Draw("Surface Parameter:");
Common_Draw("Press %s to play event", Common_BtnStr(BTN_MORE));
Common_Draw("Press %s to decrease value", Common_BtnStr(BTN_ACTION1));
Common_Draw("Press %s to increase value", Common_BtnStr(BTN_ACTION2));
Common_Draw("");
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Sleep(50);
} while (!Common_BtnPress(BTN_QUIT));
ERRCHECK( system->release() );
Common_Close();
return 0;
}

View file

@ -0,0 +1,427 @@
/*==============================================================================
Load Banks Example
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
This example demonstrates loading banks via file, memory, and user callbacks.
The banks that are loaded are:
* SFX.bank (file)
* Music.bank (memory)
* Vehicles.bank (memory-point)
* VO.bank (custom)
The loading and unloading is asynchronous, and we displays the current
state of each bank as loading is occuring.
### See Also ###
* Studio::System::loadBankFile
* Studio::System::loadBankMemory
* Studio::System::loadBankCustom
* Studio::Bank::loadSampleData
* Studio::Bank::getLoadingState
* Studio::Bank::getSampleLoadingState
* Studio::Bank::getUserData
* Studio::Bank::setUserData
For information on using FMOD example code in your own programs, visit
https://www.fmod.com/legal
==============================================================================*/
#include "fmod_studio.hpp"
#include "fmod.hpp"
#include "common.h"
#include <stdio.h>
//
// Some platforms don't support cross platform fopen. Or you can disable this
// to see how the sample deals with bank load failures.
//
#ifdef COMMON_PLATFORM_SUPPORTS_FOPEN
#define ENABLE_FILE_OPEN
#endif
//
// Load method as enum for our sample code
//
enum LoadBankMethod
{
LoadBank_File,
LoadBank_Memory,
LoadBank_MemoryPoint,
LoadBank_Custom
};
static const char* BANK_LOAD_METHOD_NAMES[] =
{
"File",
"Memory",
"Memory-Point",
"Custom"
};
//
// Sanity check for loading files
//
#ifdef ENABLE_FILE_OPEN
static const size_t MAX_FILE_LENGTH = 2*1024*1024*1024ULL;
#endif
//
// Custom callbacks that just wrap fopen
//
FMOD_RESULT F_CALL customFileOpen(const char *name, unsigned int *filesize, void **handle, void *userdata)
{
#ifdef ENABLE_FILE_OPEN
// We pass the filename into our callbacks via userdata in the custom info struct
const char* filename = (const char*)userdata;
FILE* file = fopen(filename, "rb");
if (!file)
{
return FMOD_ERR_FILE_NOTFOUND;
}
fseek(file, 0, SEEK_END);
size_t length = ftell(file);
fseek(file, 0, SEEK_SET);
if (length >= MAX_FILE_LENGTH)
{
fclose(file);
return FMOD_ERR_FILE_BAD;
}
*filesize = (unsigned int)length;
*handle = file;
return FMOD_OK;
#else
return FMOD_ERR_FILE_NOTFOUND;
#endif
}
FMOD_RESULT F_CALL customFileClose(void *handle, void *userdata)
{
#ifdef ENABLE_FILE_OPEN
FILE* file = (FILE*)handle;
fclose(file);
#endif
return FMOD_OK;
}
FMOD_RESULT F_CALL customFileRead(void *handle, void *buffer, unsigned int sizebytes, unsigned int *bytesread, void *userdata)
{
*bytesread = 0;
#ifdef ENABLE_FILE_OPEN
FILE* file = (FILE*)handle;
size_t read = fread(buffer, 1, sizebytes, file);
*bytesread = (unsigned int)read;
// If the request is larger than the bytes left in the file, then we must return EOF
if (read < sizebytes)
{
return FMOD_ERR_FILE_EOF;
}
#endif
return FMOD_OK;
}
FMOD_RESULT F_CALL customFileSeek(void *handle, unsigned int pos, void *userdata)
{
#ifdef ENABLE_FILE_OPEN
FILE* file = (FILE*)handle;
fseek(file, pos, SEEK_SET);
#endif
return FMOD_OK;
}
//
// Helper function that loads a file into aligned memory buffer
//
FMOD_RESULT loadFile(const char* filename, char** memoryBase, char** memoryPtr, int* memoryLength)
{
// If we don't support fopen then just return a single invalid byte for our file
size_t length = 1;
#ifdef ENABLE_FILE_OPEN
FILE* file = fopen(filename, "rb");
if (!file)
{
return FMOD_ERR_FILE_NOTFOUND;
}
fseek(file, 0, SEEK_END);
length = ftell(file);
fseek(file, 0, SEEK_SET);
if (length >= MAX_FILE_LENGTH)
{
fclose(file);
return FMOD_ERR_FILE_BAD;
}
#endif
// Load into a pointer aligned to FMOD_STUDIO_LOAD_MEMORY_ALIGNMENT
char* membase = reinterpret_cast<char*>(malloc(length + FMOD_STUDIO_LOAD_MEMORY_ALIGNMENT));
char* memptr = (char*)(((size_t)membase + (FMOD_STUDIO_LOAD_MEMORY_ALIGNMENT-1)) & ~(FMOD_STUDIO_LOAD_MEMORY_ALIGNMENT-1));
#ifdef ENABLE_FILE_OPEN
size_t bytesRead = fread(memptr, 1, length, file);
fclose(file);
if (bytesRead != length)
{
free(membase);
return FMOD_ERR_FILE_BAD;
}
#endif
*memoryBase = membase;
*memoryPtr = memptr;
*memoryLength = (int)length;
return FMOD_OK;
}
//
// Helper function that loads a bank in using the given method
//
FMOD_RESULT loadBank(FMOD::Studio::System* system, LoadBankMethod method, const char* filename, FMOD::Studio::Bank** bank)
{
if (method == LoadBank_File)
{
return system->loadBankFile(filename, FMOD_STUDIO_LOAD_BANK_NONBLOCKING, bank);
}
else if (method == LoadBank_Memory || method == LoadBank_MemoryPoint)
{
char* memoryBase;
char* memoryPtr;
int memoryLength;
FMOD_RESULT result = loadFile(filename, &memoryBase, &memoryPtr, &memoryLength);
if (result != FMOD_OK)
{
return result;
}
FMOD_STUDIO_LOAD_MEMORY_MODE memoryMode = (method == LoadBank_MemoryPoint ? FMOD_STUDIO_LOAD_MEMORY_POINT : FMOD_STUDIO_LOAD_MEMORY);
result = system->loadBankMemory(memoryPtr, memoryLength, memoryMode, FMOD_STUDIO_LOAD_BANK_NONBLOCKING, bank);
if (result != FMOD_OK)
{
free(memoryBase);
return result;
}
if (method == LoadBank_MemoryPoint)
{
// Keep memory around until bank unload completes
result = (*bank)->setUserData(memoryBase);
}
else
{
// Don't need memory any more
free(memoryBase);
}
return result;
}
else
{
// Set up custom callback
FMOD_STUDIO_BANK_INFO info;
memset(&info, 0, sizeof(info));
info.size = sizeof(info);
info.opencallback = customFileOpen;
info.closecallback = customFileClose;
info.readcallback = customFileRead;
info.seekcallback = customFileSeek;
info.userdata = (void*)filename;
return system->loadBankCustom(&info, FMOD_STUDIO_LOAD_BANK_NONBLOCKING, bank);
}
}
//
// Helper function to return state as a string
//
const char* getLoadingStateString(FMOD_STUDIO_LOADING_STATE state, FMOD_RESULT loadResult)
{
switch (state)
{
case FMOD_STUDIO_LOADING_STATE_UNLOADING:
return "unloading ";
case FMOD_STUDIO_LOADING_STATE_UNLOADED:
return "unloaded ";
case FMOD_STUDIO_LOADING_STATE_LOADING:
return "loading ";
case FMOD_STUDIO_LOADING_STATE_LOADED:
return "loaded ";
case FMOD_STUDIO_LOADING_STATE_ERROR:
// Show some common errors
if (loadResult == FMOD_ERR_NOTREADY)
{
return "error (rdy)";
}
else if (loadResult == FMOD_ERR_FILE_BAD)
{
return "error (bad)";
}
else if (loadResult == FMOD_ERR_FILE_NOTFOUND)
{
return "error (mis)";
}
else
{
return "error ";
}
default:
return "???";
};
}
//
// Helper function to return handle validity as a string.
// Just because the bank handle is valid doesn't mean the bank load
// has completed successfully!
//
const char* getHandleStateString(FMOD::Studio::Bank* bank)
{
if (bank == NULL)
{
return "null ";
}
else if (!bank->isValid())
{
return "invalid";
}
else
{
return "valid ";
}
}
//
// Callback to free memory-point allocation when it is safe to do so
//
FMOD_RESULT F_CALL studioCallback(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_SYSTEM_CALLBACK_TYPE type, void *commanddata, void *userdata)
{
if (type == FMOD_STUDIO_SYSTEM_CALLBACK_BANK_UNLOAD)
{
// For memory-point, it is now safe to free our memory
FMOD::Studio::Bank* bank = (FMOD::Studio::Bank*)commanddata;
void* memory;
ERRCHECK(bank->getUserData(&memory));
if (memory)
{
free(memory);
}
}
return FMOD_OK;
}
//
// Main example code
//
int FMOD_Main()
{
void *extraDriverData = 0;
Common_Init(&extraDriverData);
FMOD::Studio::System* system;
ERRCHECK( FMOD::Studio::System::create(&system) );
ERRCHECK( system->initialize(1024, FMOD_STUDIO_INIT_NORMAL, FMOD_INIT_NORMAL, extraDriverData) );
ERRCHECK( system->setCallback(studioCallback, FMOD_STUDIO_SYSTEM_CALLBACK_BANK_UNLOAD) );
static const int BANK_COUNT = 4;
static const char* BANK_NAMES[] =
{
"SFX.bank",
"Music.bank",
"Vehicles.bank",
"VO.bank",
};
FMOD::Studio::Bank* banks[BANK_COUNT] = {0};
bool wantBankLoaded[BANK_COUNT] = {0};
bool wantSampleLoad = true;
do
{
Common_Update();
for (int i=0; i<BANK_COUNT; ++i)
{
if (Common_BtnPress((Common_Button)(BTN_ACTION1 + i)))
{
// Toggle bank load, or bank unload
if (!wantBankLoaded[i])
{
ERRCHECK(loadBank(system, (LoadBankMethod)i, Common_MediaPath(BANK_NAMES[i]), &banks[i]));
wantBankLoaded[i] = true;
}
else
{
ERRCHECK(banks[i]->unload());
wantBankLoaded[i] = false;
}
}
}
if (Common_BtnPress(BTN_MORE))
{
wantSampleLoad = !wantSampleLoad;
}
// Load bank sample data automatically if that mode is enabled
// Also query current status for text display
FMOD_RESULT loadStateResult[BANK_COUNT] = { FMOD_OK, FMOD_OK, FMOD_OK, FMOD_OK, };
FMOD_RESULT sampleStateResult[BANK_COUNT] = { FMOD_OK, FMOD_OK, FMOD_OK, FMOD_OK, };
FMOD_STUDIO_LOADING_STATE bankLoadState[BANK_COUNT] = { FMOD_STUDIO_LOADING_STATE_UNLOADED, FMOD_STUDIO_LOADING_STATE_UNLOADED, FMOD_STUDIO_LOADING_STATE_UNLOADED, FMOD_STUDIO_LOADING_STATE_UNLOADED };
FMOD_STUDIO_LOADING_STATE sampleLoadState[BANK_COUNT] = { FMOD_STUDIO_LOADING_STATE_UNLOADED, FMOD_STUDIO_LOADING_STATE_UNLOADED, FMOD_STUDIO_LOADING_STATE_UNLOADED, FMOD_STUDIO_LOADING_STATE_UNLOADED };
for (int i=0; i<BANK_COUNT; ++i)
{
if (banks[i] && banks[i]->isValid())
{
loadStateResult[i] = banks[i]->getLoadingState(&bankLoadState[i]);
}
if (bankLoadState[i] == FMOD_STUDIO_LOADING_STATE_LOADED)
{
sampleStateResult[i] = banks[i]->getSampleLoadingState(&sampleLoadState[i]);
if (wantSampleLoad && sampleLoadState[i] == FMOD_STUDIO_LOADING_STATE_UNLOADED)
{
ERRCHECK(banks[i]->loadSampleData());
}
else if (!wantSampleLoad && (sampleLoadState[i] == FMOD_STUDIO_LOADING_STATE_LOADING || sampleLoadState[i] == FMOD_STUDIO_LOADING_STATE_LOADED))
{
ERRCHECK(banks[i]->unloadSampleData());
}
}
}
ERRCHECK( system->update() );
Common_Draw("==================================================");
Common_Draw("Bank Load Example.");
Common_Draw("Copyright (c) Firelight Technologies 2012-2025.");
Common_Draw("==================================================");
Common_Draw("Name Handle Bank-State Sample-State");
for (int i=0; i<BANK_COUNT; ++i)
{
char namePad[64] = {0};
int bankNameLen = strlen(BANK_NAMES[i]);
memset(namePad, ' ', 15);
strncpy(namePad, BANK_NAMES[i], bankNameLen);
Common_Draw("%s %s %s %s",
namePad,
getHandleStateString(banks[i]),
getLoadingStateString(bankLoadState[i], loadStateResult[i]),
getLoadingStateString(sampleLoadState[i], sampleStateResult[i]));
}
Common_Draw("");
Common_Draw("Press %s to load bank 1 via %s",Common_BtnStr(BTN_ACTION1), BANK_LOAD_METHOD_NAMES[0]);
Common_Draw("Press %s to load bank 2 via %s",Common_BtnStr(BTN_ACTION2), BANK_LOAD_METHOD_NAMES[1]);
Common_Draw("Press %s to load bank 3 via %s",Common_BtnStr(BTN_ACTION3), BANK_LOAD_METHOD_NAMES[2]);
Common_Draw("Press %s to load bank 4 via %s",Common_BtnStr(BTN_ACTION4), BANK_LOAD_METHOD_NAMES[3]);
Common_Draw("Press %s to toggle sample data", Common_BtnStr(BTN_MORE));
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Sleep(50);
} while (!Common_BtnPress(BTN_QUIT));
ERRCHECK( system->unloadAll() );
ERRCHECK( system->flushCommands() );
ERRCHECK( system->release() );
Common_Close();
return 0;
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,175 @@
/*==============================================================================
Music Callback Example
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
This example demonstrates beat and named marker callbacks when playing music.
### See Also ###
* Studio::EventInstance::setCallback
* FMOD_STUDIO_EVENT_CALLBACK_TIMELINE_MARKER
* FMOD_STUDIO_EVENT_CALLBACK_TIMELINE_BEAT
For information on using FMOD example code in your own programs, visit
https://www.fmod.com/legal
==============================================================================*/
#include "fmod_studio.hpp"
#include "fmod.hpp"
#include "common.h"
#include <vector>
#include <string>
static const int MAX_ENTRIES = 6;
struct CallbackInfo
{
Common_Mutex mMutex;
std::vector<std::string> mEntries;
};
FMOD_RESULT F_CALL markerCallback(FMOD_STUDIO_EVENT_CALLBACK_TYPE type, FMOD_STUDIO_EVENTINSTANCE* event, void *parameters);
int FMOD_Main()
{
void *extraDriverData = NULL;
Common_Init(&extraDriverData);
FMOD::Studio::System* system = NULL;
ERRCHECK( FMOD::Studio::System::create(&system) );
// The example Studio project is authored for 5.1 sound, so set up the system output mode to match
FMOD::System* coreSystem = NULL;
ERRCHECK( system->getCoreSystem(&coreSystem) );
ERRCHECK( coreSystem->setSoftwareFormat(0, FMOD_SPEAKERMODE_5POINT1, 0) );
ERRCHECK( system->initialize(1024, FMOD_STUDIO_INIT_NORMAL, FMOD_INIT_NORMAL, extraDriverData) );
FMOD::Studio::Bank* masterBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &masterBank) );
FMOD::Studio::Bank* stringsBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.strings.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &stringsBank) );
FMOD::Studio::Bank* musicBank = NULL;
FMOD_RESULT result = system->loadBankFile(Common_MediaPath("Music.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &musicBank);
if (result != FMOD_OK)
{
// Music bank is not exported by default, you will have to export from the tool first
Common_Fatal("Please export music.bank from the Studio tool to run this example");
}
FMOD::Studio::EventDescription* eventDescription = NULL;
ERRCHECK( system->getEvent("event:/Music/Level 01", &eventDescription) );
FMOD::Studio::EventInstance* eventInstance = NULL;
ERRCHECK( eventDescription->createInstance(&eventInstance) );
CallbackInfo info;
Common_Mutex_Create(&info.mMutex);
ERRCHECK( eventInstance->setUserData(&info) );
ERRCHECK( eventInstance->setCallback(markerCallback,
FMOD_STUDIO_EVENT_CALLBACK_TIMELINE_MARKER | FMOD_STUDIO_EVENT_CALLBACK_TIMELINE_BEAT |
FMOD_STUDIO_EVENT_CALLBACK_SOUND_PLAYED | FMOD_STUDIO_EVENT_CALLBACK_SOUND_STOPPED) );
ERRCHECK( eventInstance->start() );
FMOD_STUDIO_PARAMETER_DESCRIPTION parameterDescription;
ERRCHECK( eventDescription->getParameterDescriptionByName("Progression", &parameterDescription) );
FMOD_STUDIO_PARAMETER_ID progressionID = parameterDescription.id;
float progression = 0.0f;
ERRCHECK(eventInstance->setParameterByID(progressionID, progression));
do
{
Common_Update();
if (Common_BtnPress(BTN_MORE))
{
progression = (progression == 0.0f ? 1.0f : 0.0f);
ERRCHECK(eventInstance->setParameterByID(progressionID, progression));
}
ERRCHECK( system->update() );
int position;
ERRCHECK( eventInstance->getTimelinePosition(&position) );
Common_Draw("==================================================");
Common_Draw("Music Callback Example.");
Common_Draw("Copyright (c) Firelight Technologies 2012-2025.");
Common_Draw("==================================================");
Common_Draw("");
Common_Draw("Timeline = %d", position);
Common_Draw("");
// Obtain lock and look at our strings
Common_Mutex_Enter(&info.mMutex);
for (size_t i=0; i<info.mEntries.size(); ++i)
{
Common_Draw(" %s\n", info.mEntries[i].c_str());
}
Common_Mutex_Leave(&info.mMutex);
Common_Draw("");
Common_Draw("Press %s to toggle progression (currently %g)", Common_BtnStr(BTN_MORE), progression);
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Sleep(50);
} while (!Common_BtnPress(BTN_QUIT));
ERRCHECK( system->release() );
Common_Mutex_Destroy(&info.mMutex);
Common_Close();
return 0;
}
// Obtain a lock and add a string entry to our list
void markerAddString(CallbackInfo* info, const char* format, ...)
{
char buf[256];
va_list args;
va_start(args, format);
Common_vsnprintf(buf, 256, format, args);
va_end(args);
buf[255] = '\0';
Common_Mutex_Enter(&info->mMutex);
if (info->mEntries.size() >= MAX_ENTRIES)
{
info->mEntries.erase(info->mEntries.begin());
}
info->mEntries.push_back(std::string(buf));
Common_Mutex_Leave(&info->mMutex);
}
// Callback from Studio - Remember these callbacks will occur in the Studio update thread, NOT the game thread.
FMOD_RESULT F_CALL markerCallback(FMOD_STUDIO_EVENT_CALLBACK_TYPE type, FMOD_STUDIO_EVENTINSTANCE* event, void *parameters)
{
CallbackInfo* callbackInfo;
ERRCHECK(((FMOD::Studio::EventInstance*)event)->getUserData((void**)&callbackInfo));
if (type == FMOD_STUDIO_EVENT_CALLBACK_TIMELINE_MARKER)
{
FMOD_STUDIO_TIMELINE_MARKER_PROPERTIES* props = (FMOD_STUDIO_TIMELINE_MARKER_PROPERTIES*)parameters;
markerAddString(callbackInfo, "Named marker '%s'", props->name);
}
else if (type == FMOD_STUDIO_EVENT_CALLBACK_TIMELINE_BEAT)
{
FMOD_STUDIO_TIMELINE_BEAT_PROPERTIES* props = (FMOD_STUDIO_TIMELINE_BEAT_PROPERTIES*)parameters;
markerAddString(callbackInfo, "beat %d, bar %d (tempo %.1f %d:%d)", props->beat, props->bar, props->tempo, props->timesignatureupper, props->timesignaturelower);
}
if (type == FMOD_STUDIO_EVENT_CALLBACK_SOUND_PLAYED || type == FMOD_STUDIO_EVENT_CALLBACK_SOUND_STOPPED)
{
FMOD::Sound* sound = (FMOD::Sound*)parameters;
char name[256];
ERRCHECK(sound->getName(name, 256));
unsigned int len;
ERRCHECK(sound->getLength(&len, FMOD_TIMEUNIT_MS));
markerAddString(callbackInfo, "Sound '%s' (length %.3f) %s",
name, (float)len/1000.0f,
type == FMOD_STUDIO_EVENT_CALLBACK_SOUND_PLAYED ? "Started" : "Stopped");
}
return FMOD_OK;
}

View file

@ -0,0 +1,189 @@
/*==============================================================================
Object Panning Example
Copyright (c), Firelight Technologies Pty, Ltd 2015-2025.
This example demonstrates the FMOD object panner. The usage is completely
transparent to the API, the only difference is how the event is authored in the
FMOD Studio tool.
To hear the difference between object panning and normal panning this example
has two events (one configured with the normal panner, and one with the object
panner). As they move around the listener you may toggle between panning method
and two different sounds.
Object panning requires compatible hardware such as a Dolby Atmos amplifier or
a Playstation VR headset. For cases when the necessary hardware is not available
FMOD will fallback to standard 3D panning.
For information on using FMOD example code in your own programs, visit
https://www.fmod.com/legal
==============================================================================*/
#include "fmod_studio.hpp"
#include "fmod.hpp"
#include "common.h"
#include <math.h>
int FMOD_Main()
{
bool isOnGround = false;
bool useListenerAttenuationPosition = false;
void *extraDriverData = NULL;
Common_Init(&extraDriverData);
FMOD::Studio::System *system = NULL;
ERRCHECK( FMOD::Studio::System::create(&system) );
// The example Studio project is authored for 5.1 sound, so set up the system output mode to match
FMOD::System* coreSystem = NULL;
ERRCHECK( system->getCoreSystem(&coreSystem) );
ERRCHECK( coreSystem->setSoftwareFormat(0, FMOD_SPEAKERMODE_5POINT1, 0) );
// Attempt to initialize with a compatible object panning output
FMOD_RESULT result = coreSystem->setOutput(FMOD_OUTPUTTYPE_AUDIO3D);
if (result != FMOD_OK)
{
result = coreSystem->setOutput(FMOD_OUTPUTTYPE_WINSONIC);
if (result == FMOD_OK)
{
ERRCHECK( coreSystem->setSoftwareFormat(0, FMOD_SPEAKERMODE_7POINT1POINT4, 0) );
}
else
{
result = coreSystem->setOutput(FMOD_OUTPUTTYPE_PHASE);
if (result == FMOD_OK)
{
ERRCHECK( coreSystem->setSoftwareFormat(0, FMOD_SPEAKERMODE_7POINT1POINT4, 0) );
}
}
}
int numDrivers = 0;
ERRCHECK( coreSystem->getNumDrivers(&numDrivers) );
if (numDrivers == 0)
{
ERRCHECK( coreSystem->setDSPBufferSize(512, 4) );
ERRCHECK( coreSystem->setOutput(FMOD_OUTPUTTYPE_AUTODETECT) );
}
// Due to a bug in WinSonic on Windows, FMOD initialization may fail on some machines.
// If you get the error "FMOD error 51 - Error initializing output device", try using
// a different output type such as FMOD_OUTPUTTYPE_AUTODETECT
ERRCHECK( system->initialize(1024, FMOD_STUDIO_INIT_NORMAL, FMOD_INIT_NORMAL, extraDriverData) );
// Load everything needed for playback
FMOD::Studio::Bank *masterBank = NULL;
FMOD::Studio::Bank *musicBank = NULL;
FMOD::Studio::Bank *stringsBank = NULL;
FMOD::Studio::EventDescription *spatializerDescription = NULL;
FMOD::Studio::EventInstance *spatializerInstance = NULL;
float spatializer;
float radioFrequency;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &masterBank) );
ERRCHECK( system->loadBankFile(Common_MediaPath("Music.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &musicBank) );
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.strings.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &stringsBank) );
ERRCHECK( system->getEvent("event:/Music/Radio Station", &spatializerDescription) );
ERRCHECK( spatializerDescription->createInstance(&spatializerInstance) );
ERRCHECK( spatializerInstance->start() );
do
{
Common_Update();
ERRCHECK(spatializerInstance->getParameterByName("Freq", NULL, &radioFrequency));
ERRCHECK(spatializerInstance->getParameterByName("Spatializer", NULL, &spatializer));
if (Common_BtnPress(BTN_ACTION1))
{
if (radioFrequency == 3.00f)
{
ERRCHECK(spatializerInstance->setParameterByName("Freq", 0.00f));
}
else
{
ERRCHECK(spatializerInstance->setParameterByName("Freq", (radioFrequency + 1.50f)));
}
}
if (Common_BtnPress(BTN_ACTION2))
{
if (spatializer == 1.00)
{
ERRCHECK(spatializerInstance->setParameterByName("Spatializer", 0.00f));
}
else
{
ERRCHECK(spatializerInstance->setParameterByName("Spatializer", 1.00f));
}
}
if (Common_BtnPress(BTN_ACTION3))
{
isOnGround = !isOnGround;
}
if (Common_BtnPress(BTN_ACTION4))
{
useListenerAttenuationPosition = !useListenerAttenuationPosition;
}
FMOD_3D_ATTRIBUTES vec = { };
vec.forward.z = 1.0f;
vec.up.y = 1.0f;
static float t = 0;
vec.position.x = sinf(t) * 3.0f; /* Rotate sound in a circle */
vec.position.z = cosf(t) * 3.0f; /* Rotate sound in a circle */
t += 0.03f;
if (isOnGround)
{
vec.position.y = 0; /* At ground level */
}
else
{
vec.position.y = 5.0f; /* Up high */
}
ERRCHECK( spatializerInstance->set3DAttributes(&vec) );
FMOD_3D_ATTRIBUTES listener_vec = { };
listener_vec.forward.z = 1.0f;
listener_vec.up.y = 1.0f;
FMOD_VECTOR listener_attenuationPos = vec.position;
listener_attenuationPos.z -= -10.0f;
ERRCHECK( system->setListenerAttributes(0, &listener_vec, useListenerAttenuationPosition ? &listener_attenuationPos : nullptr) );
ERRCHECK( system->update() );
const char *radioString = (radioFrequency == 0.00f) ? "Rock" : (radioFrequency == 1.50f) ? "Lo-fi" : "Hip hop";
const char *spatialString = (spatializer == 0.00f) ? "Standard 3D Spatializer" : "Object Spatializer";
Common_Draw("==================================================");
Common_Draw("Object Panning Example.");
Common_Draw("Copyright (c) Firelight Technologies 2015-2025.");
Common_Draw("==================================================");
Common_Draw("");
Common_Draw("Playing %s with the %s.", radioString, spatialString);
Common_Draw("Radio is %s.", isOnGround ? "on the ground" : "up in the air");
Common_Draw("");
Common_Draw("Press %s to switch stations.", Common_BtnStr(BTN_ACTION1));
Common_Draw("Press %s to switch spatializer.", Common_BtnStr(BTN_ACTION2));
Common_Draw("Press %s to elevate the event instance.", Common_BtnStr(BTN_ACTION3));
Common_Draw("Press %s to %s use of attenuation position.", Common_BtnStr(BTN_ACTION4), useListenerAttenuationPosition ? "disable" : "enable");
Common_Draw("");
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Sleep(50);
} while (!Common_BtnPress(BTN_QUIT));
ERRCHECK( stringsBank->unload() );
ERRCHECK( musicBank->unload() );
ERRCHECK( system->release() );
Common_Close();
return 0;
}

View file

@ -0,0 +1,177 @@
/*==============================================================================
Programmer Sound Example
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
This example demonstrates how to implement the programmer sound callback to
play an event that has a programmer specified sound.
### See Also ###
Studio::EventInstance::setCallback
For information on using FMOD example code in your own programs, visit
https://www.fmod.com/legal
==============================================================================*/
#include "fmod_studio.hpp"
#include "fmod.hpp"
#include "common.h"
struct ProgrammerSoundContext
{
const char* dialogueString;
};
FMOD_RESULT F_CALL programmerSoundCallback(FMOD_STUDIO_EVENT_CALLBACK_TYPE type, FMOD_STUDIO_EVENTINSTANCE* event, void *parameters);
int FMOD_Main()
{
void *extraDriverData = NULL;
Common_Init(&extraDriverData);
FMOD::Studio::System* system = NULL;
ERRCHECK( FMOD::Studio::System::create(&system) );
// The example Studio project is authored for 5.1 sound, so set up the system output mode to match
FMOD::System* coreSystem = NULL;
ERRCHECK( system->getCoreSystem(&coreSystem) );
ERRCHECK( coreSystem->setSoftwareFormat(0, FMOD_SPEAKERMODE_5POINT1, 0) );
ERRCHECK( system->initialize(1024, FMOD_STUDIO_INIT_NORMAL, FMOD_INIT_NORMAL, extraDriverData) );
FMOD::Studio::Bank* masterBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &masterBank) );
FMOD::Studio::Bank* stringsBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.strings.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &stringsBank) );
FMOD::Studio::Bank* sfxBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("SFX.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &sfxBank) );
// Available banks
unsigned int bankIndex = 0;
static const char* const banks[] = { "Dialogue_EN.bank", "Dialogue_JP.bank", "Dialogue_CN.bank" };
FMOD::Studio::Bank* localizedBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath(banks[bankIndex]), FMOD_STUDIO_LOAD_BANK_NORMAL, &localizedBank) );
FMOD::Studio::EventDescription* eventDescription = NULL;
ERRCHECK( system->getEvent("event:/Character/Dialogue", &eventDescription) );
FMOD::Studio::EventInstance* eventInstance = NULL;
ERRCHECK( eventDescription->createInstance(&eventInstance) );
// Dialogue keys available
// These keys are shared amongst all audio tables
unsigned int dialogueIndex = 0;
static const char* const dialogue[] = {"welcome", "main menu", "goodbye"};
ProgrammerSoundContext programmerSoundContext;
programmerSoundContext.dialogueString = dialogue[dialogueIndex];
ERRCHECK( eventInstance->setUserData(&programmerSoundContext) );
ERRCHECK( eventInstance->setCallback(programmerSoundCallback, FMOD_STUDIO_EVENT_CALLBACK_CREATE_PROGRAMMER_SOUND | FMOD_STUDIO_EVENT_CALLBACK_DESTROY_PROGRAMMER_SOUND) );
do
{
Common_Update();
if (Common_BtnPress(BTN_ACTION1))
{
ERRCHECK( localizedBank->unload() );
bankIndex = (bankIndex < 2) ? bankIndex + 1 : 0;
ERRCHECK( system->loadBankFile(Common_MediaPath(banks[bankIndex]), FMOD_STUDIO_LOAD_BANK_NORMAL, &localizedBank) );
}
if (Common_BtnPress(BTN_ACTION2))
{
dialogueIndex = (dialogueIndex < 2) ? dialogueIndex + 1 : 0;
programmerSoundContext.dialogueString = dialogue[dialogueIndex];
}
if (Common_BtnPress(BTN_MORE))
{
ERRCHECK( eventInstance->start() );
}
ERRCHECK( system->update() );
Common_Draw("==================================================");
Common_Draw("Programmer Sound Example.");
Common_Draw("Copyright (c) Firelight Technologies 2012-2025.");
Common_Draw("==================================================");
Common_Draw("");
Common_Draw("Press %s to change language", Common_BtnStr(BTN_ACTION1));
Common_Draw("Press %s to change dialogue", Common_BtnStr(BTN_ACTION2));
Common_Draw("Press %s to play the event", Common_BtnStr(BTN_MORE));
Common_Draw("");
Common_Draw("Language:");
Common_Draw(" %s English", bankIndex == 0 ? ">" : " ");
Common_Draw(" %s Japanese", bankIndex == 1 ? ">" : " ");
Common_Draw(" %s Chinese", bankIndex == 2 ? ">" : " ");
Common_Draw("");
Common_Draw("Dialogue:");
Common_Draw(" %s Welcome to the FMOD Studio tutorial", dialogueIndex == 0 ? ">" : " ");
Common_Draw(" %s This is the main menu", dialogueIndex == 1 ? ">" : " ");
Common_Draw(" %s Goodbye", dialogueIndex == 2 ? ">" : " ");
Common_Draw("");
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Sleep(50);
} while (!Common_BtnPress(BTN_QUIT));
ERRCHECK( system->release() );
Common_Close();
return 0;
}
#define CHECK_RESULT(op) \
{ \
FMOD_RESULT res = (op); \
if (res != FMOD_OK) \
{ \
return res; \
} \
}
FMOD_RESULT F_CALL programmerSoundCallback(FMOD_STUDIO_EVENT_CALLBACK_TYPE type, FMOD_STUDIO_EVENTINSTANCE* event, void *parameters)
{
FMOD::Studio::EventInstance* eventInstance = (FMOD::Studio::EventInstance*)event;
if (type == FMOD_STUDIO_EVENT_CALLBACK_CREATE_PROGRAMMER_SOUND)
{
FMOD_STUDIO_PROGRAMMER_SOUND_PROPERTIES* props = (FMOD_STUDIO_PROGRAMMER_SOUND_PROPERTIES*)parameters;
// Get our context from the event instance user data
ProgrammerSoundContext* context = NULL;
CHECK_RESULT( eventInstance->getUserData((void**)&context) );
FMOD::Studio::System* studioSystem = NULL;
CHECK_RESULT( eventInstance->getSystem(&studioSystem) );
// Find the audio file in the audio table with the key
FMOD_STUDIO_SOUND_INFO info;
CHECK_RESULT( studioSystem->getSoundInfo(context->dialogueString, &info) );
FMOD::System* coreSystem = NULL;
CHECK_RESULT( studioSystem->getCoreSystem(&coreSystem) );
FMOD::Sound* sound = NULL;
CHECK_RESULT( coreSystem->createSound(info.name_or_data, FMOD_LOOP_NORMAL | FMOD_CREATECOMPRESSEDSAMPLE | FMOD_NONBLOCKING | info.mode, &info.exinfo, &sound) );
// Pass the sound to FMOD
props->sound = (FMOD_SOUND*)sound;
props->subsoundIndex = info.subsoundindex;
}
else if (type == FMOD_STUDIO_EVENT_CALLBACK_DESTROY_PROGRAMMER_SOUND)
{
FMOD_STUDIO_PROGRAMMER_SOUND_PROPERTIES* props = (FMOD_STUDIO_PROGRAMMER_SOUND_PROPERTIES*)parameters;
// Obtain the sound
FMOD::Sound* sound = (FMOD::Sound*)props->sound;
// Release the sound
CHECK_RESULT( sound->release() );
}
return FMOD_OK;
}

View file

@ -0,0 +1,373 @@
/*==============================================================================
API Recording Example
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
This example shows recording and playback functionality, allowing the user to
trigger some sounds and then play back what they have recorded. The provided
functionality is intended to assist in debugging.
For information on using FMOD example code in your own programs, visit
https://www.fmod.com/legal
==============================================================================*/
#include "fmod_studio.hpp"
#include "fmod.hpp"
#include "common.h"
const int SCREEN_WIDTH = NUM_COLUMNS;
const int SCREEN_HEIGHT = 10;
int currentScreenPosition = -1;
char screenBuffer[(SCREEN_WIDTH + 1) * SCREEN_HEIGHT + 1] = {0};
void initializeScreenBuffer();
void updateScreenPosition(const FMOD_VECTOR& worldPosition);
static const char* RECORD_FILENAME = "playback.cmd.txt";
enum State
{
State_Selection,
State_Record,
State_Playback,
State_Quit
};
State executeSelection(FMOD::Studio::System* system);
State executeRecord(FMOD::Studio::System* system);
State executePlayback(FMOD::Studio::System* system);
int FMOD_Main()
{
void *extraDriverData = 0;
Common_Init(&extraDriverData);
FMOD::Studio::System* system = NULL;
ERRCHECK( FMOD::Studio::System::create(&system) );
// The example Studio project is authored for 5.1 sound, so set up the system output mode to match
FMOD::System* coreSystem = NULL;
ERRCHECK( system->getCoreSystem(&coreSystem) );
ERRCHECK( coreSystem->setSoftwareFormat(0, FMOD_SPEAKERMODE_5POINT1, 0) );
ERRCHECK( system->initialize(1024, FMOD_STUDIO_INIT_NORMAL, FMOD_INIT_NORMAL, extraDriverData) );
State state = State_Selection;
while (state != State_Quit)
{
switch (state)
{
case State_Selection:
state = executeSelection(system);
break;
case State_Record:
state = executeRecord(system);
break;
case State_Playback:
state = executePlayback(system);
break;
case State_Quit:
break;
};
};
ERRCHECK( system->release() );
Common_Close();
return 0;
}
// Show the main selection menu
State executeSelection(FMOD::Studio::System* system)
{
for (;;)
{
Common_Update();
if (Common_BtnPress(BTN_ACTION1))
{
return State_Record;
}
if (Common_BtnPress(BTN_ACTION2))
{
return State_Playback;
}
if (Common_BtnPress(BTN_QUIT))
{
return State_Quit;
}
ERRCHECK( system->update() );
Common_Draw("==================================================");
Common_Draw("Recording and playback example.");
Common_Draw("Copyright (c) Firelight Technologies 2012-2025.");
Common_Draw("==================================================");
Common_Draw("");
Common_Draw("Waiting to start recording");
Common_Draw("");
Common_Draw("Press %s to start recording", Common_BtnStr(BTN_ACTION1));
Common_Draw("Press %s to play back recording", Common_BtnStr(BTN_ACTION2));
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Draw("");
Common_Sleep(50);
}
}
// Start recording, load banks and then let the user trigger some sounds
State executeRecord(FMOD::Studio::System* system)
{
FMOD::Studio::Bank* masterBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.bank"), FMOD_STUDIO_LOAD_BANK_NONBLOCKING, &masterBank) );
FMOD::Studio::Bank* stringsBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.strings.bank"), FMOD_STUDIO_LOAD_BANK_NONBLOCKING, &stringsBank) );
FMOD::Studio::Bank* vehiclesBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Vehicles.bank"), FMOD_STUDIO_LOAD_BANK_NONBLOCKING, &vehiclesBank) );
FMOD::Studio::Bank* sfxBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("SFX.bank"), FMOD_STUDIO_LOAD_BANK_NONBLOCKING, &sfxBank) );
// Wait for banks to load
ERRCHECK( system->flushCommands() );
// Start recording commands - it will also record which banks we have already loaded by now
ERRCHECK( system->startCommandCapture(Common_WritePath(RECORD_FILENAME), FMOD_STUDIO_COMMANDCAPTURE_NORMAL) );
FMOD_GUID explosionID = {0};
ERRCHECK( system->lookupID("event:/Weapons/Explosion", &explosionID) );
FMOD::Studio::EventDescription* engineDescription = NULL;
ERRCHECK( system->getEvent("event:/Vehicles/Ride-on Mower", &engineDescription) );
FMOD::Studio::EventInstance* engineInstance = NULL;
ERRCHECK( engineDescription->createInstance(&engineInstance) );
ERRCHECK( engineInstance->setParameterByName("RPM", 650.0f) );
ERRCHECK( engineInstance->start() );
// Position the listener at the origin
FMOD_3D_ATTRIBUTES attributes = { { 0 } };
attributes.forward.z = 1.0f;
attributes.up.y = 1.0f;
ERRCHECK( system->setListenerAttributes(0, &attributes) );
// Position the event 2 units in front of the listener
attributes.position.z = 2.0f;
ERRCHECK( engineInstance->set3DAttributes(&attributes) );
initializeScreenBuffer();
bool wantQuit = false;
for (;;)
{
Common_Update();
if (Common_BtnPress(BTN_MORE))
{
break;
}
if (Common_BtnPress(BTN_QUIT))
{
wantQuit = true;
break;
}
if (Common_BtnPress(BTN_ACTION1))
{
// One-shot event
FMOD::Studio::EventDescription* eventDescription = NULL;
ERRCHECK( system->getEventByID(&explosionID, &eventDescription) );
FMOD::Studio::EventInstance* eventInstance = NULL;
ERRCHECK( eventDescription->createInstance(&eventInstance) );
for (int i=0; i<10; ++i)
{
ERRCHECK( eventInstance->setVolume(i / 10.0f) );
}
ERRCHECK( eventInstance->start() );
// Release will clean up the instance when it completes
ERRCHECK( eventInstance->release() );
}
if (Common_BtnPress(BTN_LEFT))
{
attributes.position.x -= 1.0f;
ERRCHECK( engineInstance->set3DAttributes(&attributes) );
}
if (Common_BtnPress(BTN_RIGHT))
{
attributes.position.x += 1.0f;
ERRCHECK( engineInstance->set3DAttributes(&attributes) );
}
if (Common_BtnPress(BTN_UP))
{
attributes.position.z += 1.0f;
ERRCHECK( engineInstance->set3DAttributes(&attributes) );
}
if (Common_BtnPress(BTN_DOWN))
{
attributes.position.z -= 1.0f;
ERRCHECK( engineInstance->set3DAttributes(&attributes) );
}
if (Common_BtnPress(BTN_MORE))
{
break;
}
if (Common_BtnPress(BTN_QUIT))
{
wantQuit = true;
break;
}
ERRCHECK(system->update());
updateScreenPosition(attributes.position);
Common_Draw("==================================================");
Common_Draw("Recording and playback example.");
Common_Draw("Copyright (c) Firelight Technologies 2012-2025.");
Common_Draw("==================================================");
Common_Draw("");
Common_Draw("Recording!");
Common_Draw("");
Common_Draw(screenBuffer);
Common_Draw("");
Common_Draw("Press %s to finish recording", Common_BtnStr(BTN_MORE));
Common_Draw("Press %s to play a one-shot", Common_BtnStr(BTN_ACTION1));
Common_Draw("Use the arrow keys (%s, %s, %s, %s) to control the engine position",
Common_BtnStr(BTN_LEFT), Common_BtnStr(BTN_RIGHT), Common_BtnStr(BTN_UP), Common_BtnStr(BTN_DOWN));
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Sleep(50);
}
// Unload all the banks
ERRCHECK( masterBank->unload() );
ERRCHECK( stringsBank->unload() );
ERRCHECK( vehiclesBank->unload() );
ERRCHECK( sfxBank->unload() );
// Finish recording
ERRCHECK( system->flushCommands() );
ERRCHECK( system->stopCommandCapture() );
return (wantQuit ? State_Quit : State_Selection);
}
// Play back a previously recorded file
State executePlayback(FMOD::Studio::System* system)
{
FMOD::Studio::CommandReplay* replay;
ERRCHECK( system->loadCommandReplay(Common_WritePath(RECORD_FILENAME), FMOD_STUDIO_COMMANDREPLAY_NORMAL, &replay));
int commandCount;
ERRCHECK(replay->getCommandCount(&commandCount));
float totalTime;
ERRCHECK(replay->getLength(&totalTime));
ERRCHECK(replay->start());
ERRCHECK(system->update());
for (;;)
{
Common_Update();
if (Common_BtnPress(BTN_QUIT))
{
break;
}
if (Common_BtnPress(BTN_MORE))
{
bool paused;
ERRCHECK(replay->getPaused(&paused));
ERRCHECK(replay->setPaused(!paused));
}
FMOD_STUDIO_PLAYBACK_STATE state;
ERRCHECK(replay->getPlaybackState(&state));
if (state == FMOD_STUDIO_PLAYBACK_STOPPED)
{
break;
}
int currentIndex;
float currentTime;
ERRCHECK(replay->getCurrentCommand(&currentIndex, &currentTime));
ERRCHECK(system->update());
Common_Draw("==================================================");
Common_Draw("Recording and playback example.");
Common_Draw("Copyright (c) Firelight Technologies 2012-2025.");
Common_Draw("==================================================");
Common_Draw("");
Common_Draw("Playing back commands:");
Common_Draw("Command = %d / %d\n", currentIndex, commandCount);
Common_Draw("Time = %.3f / %.3f\n", currentTime, totalTime);
Common_Draw("");
Common_Draw("Press %s to pause/unpause recording", Common_BtnStr(BTN_MORE));
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Sleep(50);
}
ERRCHECK( replay->release() );
ERRCHECK( system->unloadAll() );
return State_Selection;
}
void initializeScreenBuffer()
{
memset(screenBuffer, ' ', sizeof(screenBuffer));
int idx = SCREEN_WIDTH;
for (int i = 0; i < SCREEN_HEIGHT; ++i)
{
screenBuffer[idx] = '\n';
idx += SCREEN_WIDTH + 1;
}
screenBuffer[(SCREEN_WIDTH + 1) * SCREEN_HEIGHT] = '\0';
}
int getCharacterIndex(const FMOD_VECTOR& position)
{
int row = static_cast<int>(-position.z + (SCREEN_HEIGHT / 2));
int col = static_cast<int>(position.x + (SCREEN_WIDTH / 2));
if (0 < row && row < SCREEN_HEIGHT && 0 < col && col < SCREEN_WIDTH)
{
return (row * (SCREEN_WIDTH + 1)) + col;
}
return -1;
}
void updateScreenPosition(const FMOD_VECTOR& eventPosition)
{
if (currentScreenPosition != -1)
{
screenBuffer[currentScreenPosition] = ' ';
currentScreenPosition = -1;
}
FMOD_VECTOR origin = {0};
int idx = getCharacterIndex(origin);
screenBuffer[idx] = '^';
idx = getCharacterIndex(eventPosition);
if (idx != -1)
{
screenBuffer[idx] = 'o';
currentScreenPosition = idx;
}
}

View file

@ -0,0 +1,126 @@
/*==============================================================================
Simple Event Example
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
This example demonstrates the various ways of playing an event.
#### Explosion Event ####
This event is played as a one-shot and released immediately after it has been
created.
#### Looping Ambience Event ####
A single instance is started or stopped based on user input.
#### Cancel Event ####
This instance is started and if already playing, restarted.
For information on using FMOD example code in your own programs, visit
https://www.fmod.com/legal
==============================================================================*/
#include "fmod_studio.hpp"
#include "fmod.hpp"
#include "common.h"
int FMOD_Main()
{
void *extraDriverData = NULL;
Common_Init(&extraDriverData);
FMOD::Studio::System* system = NULL;
ERRCHECK( FMOD::Studio::System::create(&system) );
// The example Studio project is authored for 5.1 sound, so set up the system output mode to match
FMOD::System* coreSystem = NULL;
ERRCHECK( system->getCoreSystem(&coreSystem) );
ERRCHECK( coreSystem->setSoftwareFormat(0, FMOD_SPEAKERMODE_5POINT1, 0) );
ERRCHECK( system->initialize(1024, FMOD_STUDIO_INIT_NORMAL, FMOD_INIT_NORMAL, extraDriverData) );
FMOD::Studio::Bank* masterBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &masterBank) );
FMOD::Studio::Bank* stringsBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.strings.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &stringsBank) );
FMOD::Studio::Bank* sfxBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("SFX.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &sfxBank) );
// Get the Looping Ambience event
FMOD::Studio::EventDescription* loopingAmbienceDescription = NULL;
ERRCHECK( system->getEvent("event:/Ambience/Country", &loopingAmbienceDescription) );
FMOD::Studio::EventInstance* loopingAmbienceInstance = NULL;
ERRCHECK( loopingAmbienceDescription->createInstance(&loopingAmbienceInstance) );
// Get the 4 Second Surge event
FMOD::Studio::EventDescription* cancelDescription = NULL;
ERRCHECK( system->getEvent("event:/UI/Cancel", &cancelDescription) );
FMOD::Studio::EventInstance* cancelInstance = NULL;
ERRCHECK( cancelDescription->createInstance(&cancelInstance) );
// Get the Single Explosion event
FMOD::Studio::EventDescription* explosionDescription = NULL;
ERRCHECK( system->getEvent("event:/Weapons/Explosion", &explosionDescription) );
// Start loading explosion sample data and keep it in memory
ERRCHECK( explosionDescription->loadSampleData() );
do
{
Common_Update();
if (Common_BtnPress(BTN_ACTION1))
{
// One-shot event
FMOD::Studio::EventInstance* eventInstance = NULL;
ERRCHECK( explosionDescription->createInstance(&eventInstance) );
ERRCHECK( eventInstance->start() );
// Release will clean up the instance when it completes
ERRCHECK( eventInstance->release() );
}
if (Common_BtnPress(BTN_ACTION2))
{
ERRCHECK( loopingAmbienceInstance->start() );
}
if (Common_BtnPress(BTN_ACTION3))
{
ERRCHECK( loopingAmbienceInstance->stop(FMOD_STUDIO_STOP_IMMEDIATE) );
}
if (Common_BtnPress(BTN_ACTION4))
{
// Calling start on an instance will cause it to restart if it's already playing
ERRCHECK( cancelInstance->start() );
}
ERRCHECK( system->update() );
Common_Draw("==================================================");
Common_Draw("Simple Event Example.");
Common_Draw("Copyright (c) Firelight Technologies 2012-2025.");
Common_Draw("==================================================");
Common_Draw("");
Common_Draw("Press %s to fire and forget the explosion", Common_BtnStr(BTN_ACTION1));
Common_Draw("Press %s to start the looping ambience", Common_BtnStr(BTN_ACTION2));
Common_Draw("Press %s to stop the looping ambience", Common_BtnStr(BTN_ACTION3));
Common_Draw("Press %s to start/restart the cancel sound", Common_BtnStr(BTN_ACTION4));
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Sleep(50);
} while (!Common_BtnPress(BTN_QUIT));
ERRCHECK( sfxBank->unload() );
ERRCHECK( stringsBank->unload() );
ERRCHECK( masterBank->unload() );
ERRCHECK( system->release() );
Common_Close();
return 0;
}

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{73693ACD-D6D7-4784-A76D-DA990895F0FF}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\3d.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\3d_multi.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\event_parameter.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,198 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 15
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3d", "3d.vcxproj", "{73693ACD-D6D7-4784-A76D-DA990895F0FF}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3d_multi", "3d_multi.vcxproj", "{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "event_parameter", "event_parameter.vcxproj", "{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "load_banks", "load_banks.vcxproj", "{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "music_callbacks", "music_callbacks.vcxproj", "{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "objectpan", "objectpan.vcxproj", "{45CC7BC5-F619-4460-931E-7CCDB0FFF609}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "programmer_sound", "programmer_sound.vcxproj", "{E59D3927-5537-471A-AEE6-4D13D3057E67}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "recording_playback", "recording_playback.vcxproj", "{B7D13C73-23F1-41F9-ADA9-626994A99F3E}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "simple_event", "simple_event.vcxproj", "{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Debug|ARM64 = Debug|ARM64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
Release|ARM64 = Release|ARM64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Debug|Win32.ActiveCfg = Debug|Win32
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Debug|Win32.Build.0 = Debug|Win32
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Debug|Win32.Deploy.0 = Debug|Win32
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Debug|x64.ActiveCfg = Debug|x64
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Debug|x64.Build.0 = Debug|x64
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Debug|x64.Deploy.0 = Debug|x64
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Debug|ARM64.ActiveCfg = Debug|ARM64
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Debug|ARM64.Build.0 = Debug|ARM64
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Debug|ARM64.Deploy.0 = Debug|ARM64
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Release|Win32.ActiveCfg = Release|Win32
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Release|Win32.Build.0 = Release|Win32
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Release|Win32.Deploy.0 = Release|Win32
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Release|x64.ActiveCfg = Release|x64
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Release|x64.Build.0 = Release|x64
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Release|x64.Deploy.0 = Release|x64
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Release|ARM64.ActiveCfg = Release|ARM64
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Release|ARM64.Build.0 = Release|ARM64
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Release|ARM64.Deploy.0 = Release|ARM64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Debug|Win32.ActiveCfg = Debug|Win32
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Debug|Win32.Build.0 = Debug|Win32
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Debug|Win32.Deploy.0 = Debug|Win32
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Debug|x64.ActiveCfg = Debug|x64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Debug|x64.Build.0 = Debug|x64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Debug|x64.Deploy.0 = Debug|x64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Debug|ARM64.ActiveCfg = Debug|ARM64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Debug|ARM64.Build.0 = Debug|ARM64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Debug|ARM64.Deploy.0 = Debug|ARM64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Release|Win32.ActiveCfg = Release|Win32
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Release|Win32.Build.0 = Release|Win32
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Release|Win32.Deploy.0 = Release|Win32
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Release|x64.ActiveCfg = Release|x64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Release|x64.Build.0 = Release|x64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Release|x64.Deploy.0 = Release|x64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Release|ARM64.ActiveCfg = Release|ARM64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Release|ARM64.Build.0 = Release|ARM64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Release|ARM64.Deploy.0 = Release|ARM64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Debug|Win32.ActiveCfg = Debug|Win32
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Debug|Win32.Build.0 = Debug|Win32
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Debug|Win32.Deploy.0 = Debug|Win32
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Debug|x64.ActiveCfg = Debug|x64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Debug|x64.Build.0 = Debug|x64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Debug|x64.Deploy.0 = Debug|x64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Debug|ARM64.ActiveCfg = Debug|ARM64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Debug|ARM64.Build.0 = Debug|ARM64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Debug|ARM64.Deploy.0 = Debug|ARM64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Release|Win32.ActiveCfg = Release|Win32
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Release|Win32.Build.0 = Release|Win32
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Release|Win32.Deploy.0 = Release|Win32
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Release|x64.ActiveCfg = Release|x64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Release|x64.Build.0 = Release|x64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Release|x64.Deploy.0 = Release|x64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Release|ARM64.ActiveCfg = Release|ARM64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Release|ARM64.Build.0 = Release|ARM64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Release|ARM64.Deploy.0 = Release|ARM64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Debug|Win32.ActiveCfg = Debug|Win32
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Debug|Win32.Build.0 = Debug|Win32
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Debug|Win32.Deploy.0 = Debug|Win32
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Debug|x64.ActiveCfg = Debug|x64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Debug|x64.Build.0 = Debug|x64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Debug|x64.Deploy.0 = Debug|x64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Debug|ARM64.ActiveCfg = Debug|ARM64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Debug|ARM64.Build.0 = Debug|ARM64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Debug|ARM64.Deploy.0 = Debug|ARM64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Release|Win32.ActiveCfg = Release|Win32
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Release|Win32.Build.0 = Release|Win32
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Release|Win32.Deploy.0 = Release|Win32
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Release|x64.ActiveCfg = Release|x64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Release|x64.Build.0 = Release|x64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Release|x64.Deploy.0 = Release|x64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Release|ARM64.ActiveCfg = Release|ARM64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Release|ARM64.Build.0 = Release|ARM64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Release|ARM64.Deploy.0 = Release|ARM64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Debug|Win32.ActiveCfg = Debug|Win32
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Debug|Win32.Build.0 = Debug|Win32
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Debug|Win32.Deploy.0 = Debug|Win32
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Debug|x64.ActiveCfg = Debug|x64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Debug|x64.Build.0 = Debug|x64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Debug|x64.Deploy.0 = Debug|x64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Debug|ARM64.ActiveCfg = Debug|ARM64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Debug|ARM64.Build.0 = Debug|ARM64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Debug|ARM64.Deploy.0 = Debug|ARM64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Release|Win32.ActiveCfg = Release|Win32
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Release|Win32.Build.0 = Release|Win32
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Release|Win32.Deploy.0 = Release|Win32
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Release|x64.ActiveCfg = Release|x64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Release|x64.Build.0 = Release|x64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Release|x64.Deploy.0 = Release|x64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Release|ARM64.ActiveCfg = Release|ARM64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Release|ARM64.Build.0 = Release|ARM64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Release|ARM64.Deploy.0 = Release|ARM64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Debug|Win32.ActiveCfg = Debug|Win32
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Debug|Win32.Build.0 = Debug|Win32
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Debug|Win32.Deploy.0 = Debug|Win32
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Debug|x64.ActiveCfg = Debug|x64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Debug|x64.Build.0 = Debug|x64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Debug|x64.Deploy.0 = Debug|x64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Debug|ARM64.ActiveCfg = Debug|ARM64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Debug|ARM64.Build.0 = Debug|ARM64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Debug|ARM64.Deploy.0 = Debug|ARM64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Release|Win32.ActiveCfg = Release|Win32
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Release|Win32.Build.0 = Release|Win32
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Release|Win32.Deploy.0 = Release|Win32
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Release|x64.ActiveCfg = Release|x64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Release|x64.Build.0 = Release|x64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Release|x64.Deploy.0 = Release|x64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Release|ARM64.ActiveCfg = Release|ARM64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Release|ARM64.Build.0 = Release|ARM64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Release|ARM64.Deploy.0 = Release|ARM64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Debug|Win32.ActiveCfg = Debug|Win32
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Debug|Win32.Build.0 = Debug|Win32
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Debug|Win32.Deploy.0 = Debug|Win32
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Debug|x64.ActiveCfg = Debug|x64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Debug|x64.Build.0 = Debug|x64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Debug|x64.Deploy.0 = Debug|x64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Debug|ARM64.ActiveCfg = Debug|ARM64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Debug|ARM64.Build.0 = Debug|ARM64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Debug|ARM64.Deploy.0 = Debug|ARM64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Release|Win32.ActiveCfg = Release|Win32
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Release|Win32.Build.0 = Release|Win32
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Release|Win32.Deploy.0 = Release|Win32
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Release|x64.ActiveCfg = Release|x64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Release|x64.Build.0 = Release|x64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Release|x64.Deploy.0 = Release|x64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Release|ARM64.ActiveCfg = Release|ARM64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Release|ARM64.Build.0 = Release|ARM64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Release|ARM64.Deploy.0 = Release|ARM64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Debug|Win32.ActiveCfg = Debug|Win32
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Debug|Win32.Build.0 = Debug|Win32
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Debug|Win32.Deploy.0 = Debug|Win32
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Debug|x64.ActiveCfg = Debug|x64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Debug|x64.Build.0 = Debug|x64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Debug|x64.Deploy.0 = Debug|x64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Debug|ARM64.ActiveCfg = Debug|ARM64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Debug|ARM64.Build.0 = Debug|ARM64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Debug|ARM64.Deploy.0 = Debug|ARM64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Release|Win32.ActiveCfg = Release|Win32
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Release|Win32.Build.0 = Release|Win32
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Release|Win32.Deploy.0 = Release|Win32
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Release|x64.ActiveCfg = Release|x64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Release|x64.Build.0 = Release|x64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Release|x64.Deploy.0 = Release|x64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Release|ARM64.ActiveCfg = Release|ARM64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Release|ARM64.Build.0 = Release|ARM64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Release|ARM64.Deploy.0 = Release|ARM64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Debug|Win32.ActiveCfg = Debug|Win32
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Debug|Win32.Build.0 = Debug|Win32
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Debug|Win32.Deploy.0 = Debug|Win32
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Debug|x64.ActiveCfg = Debug|x64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Debug|x64.Build.0 = Debug|x64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Debug|x64.Deploy.0 = Debug|x64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Debug|ARM64.ActiveCfg = Debug|ARM64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Debug|ARM64.Build.0 = Debug|ARM64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Debug|ARM64.Deploy.0 = Debug|ARM64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Release|Win32.ActiveCfg = Release|Win32
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Release|Win32.Build.0 = Release|Win32
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Release|Win32.Deploy.0 = Release|Win32
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Release|x64.ActiveCfg = Release|x64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Release|x64.Build.0 = Release|x64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Release|x64.Deploy.0 = Release|x64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Release|ARM64.ActiveCfg = Release|ARM64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Release|ARM64.Build.0 = Release|ARM64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Release|ARM64.Deploy.0 = Release|ARM64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\load_banks.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\music_callbacks.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{45CC7BC5-F619-4460-931E-7CCDB0FFF609}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\objectpan.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{E59D3927-5537-471A-AEE6-4D13D3057E67}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\programmer_sound.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{B7D13C73-23F1-41F9-ADA9-626994A99F3E}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\recording_playback.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\simple_event.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\3d.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{7DF05649-1998-4E76-8C22-9CCE1A5D6353}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\3d_multi.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{632C755A-6FB4-47A7-A755-AF75940D83AE}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\event_parameter.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,198 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio Version 16
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3d", "3d.vcxproj", "{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3d_multi", "3d_multi.vcxproj", "{7DF05649-1998-4E76-8C22-9CCE1A5D6353}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "event_parameter", "event_parameter.vcxproj", "{632C755A-6FB4-47A7-A755-AF75940D83AE}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "load_banks", "load_banks.vcxproj", "{3328A7D5-F136-4678-993F-9F243D27FBEA}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "music_callbacks", "music_callbacks.vcxproj", "{2C1EA18D-07AA-43E3-B4FB-600F556D9840}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "objectpan", "objectpan.vcxproj", "{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "programmer_sound", "programmer_sound.vcxproj", "{3807BE27-3975-4BD7-9D53-F96202BDAC3B}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "recording_playback", "recording_playback.vcxproj", "{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "simple_event", "simple_event.vcxproj", "{49C1282C-9CE5-4980-9590-8678615DB435}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Debug|ARM64 = Debug|ARM64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
Release|ARM64 = Release|ARM64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Debug|Win32.ActiveCfg = Debug|Win32
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Debug|Win32.Build.0 = Debug|Win32
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Debug|Win32.Deploy.0 = Debug|Win32
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Debug|x64.ActiveCfg = Debug|x64
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Debug|x64.Build.0 = Debug|x64
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Debug|x64.Deploy.0 = Debug|x64
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Debug|ARM64.ActiveCfg = Debug|ARM64
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Debug|ARM64.Build.0 = Debug|ARM64
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Debug|ARM64.Deploy.0 = Debug|ARM64
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Release|Win32.ActiveCfg = Release|Win32
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Release|Win32.Build.0 = Release|Win32
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Release|Win32.Deploy.0 = Release|Win32
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Release|x64.ActiveCfg = Release|x64
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Release|x64.Build.0 = Release|x64
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Release|x64.Deploy.0 = Release|x64
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Release|ARM64.ActiveCfg = Release|ARM64
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Release|ARM64.Build.0 = Release|ARM64
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Release|ARM64.Deploy.0 = Release|ARM64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Debug|Win32.ActiveCfg = Debug|Win32
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Debug|Win32.Build.0 = Debug|Win32
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Debug|Win32.Deploy.0 = Debug|Win32
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Debug|x64.ActiveCfg = Debug|x64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Debug|x64.Build.0 = Debug|x64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Debug|x64.Deploy.0 = Debug|x64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Debug|ARM64.ActiveCfg = Debug|ARM64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Debug|ARM64.Build.0 = Debug|ARM64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Debug|ARM64.Deploy.0 = Debug|ARM64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Release|Win32.ActiveCfg = Release|Win32
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Release|Win32.Build.0 = Release|Win32
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Release|Win32.Deploy.0 = Release|Win32
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Release|x64.ActiveCfg = Release|x64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Release|x64.Build.0 = Release|x64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Release|x64.Deploy.0 = Release|x64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Release|ARM64.ActiveCfg = Release|ARM64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Release|ARM64.Build.0 = Release|ARM64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Release|ARM64.Deploy.0 = Release|ARM64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Debug|Win32.ActiveCfg = Debug|Win32
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Debug|Win32.Build.0 = Debug|Win32
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Debug|Win32.Deploy.0 = Debug|Win32
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Debug|x64.ActiveCfg = Debug|x64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Debug|x64.Build.0 = Debug|x64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Debug|x64.Deploy.0 = Debug|x64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Debug|ARM64.ActiveCfg = Debug|ARM64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Debug|ARM64.Build.0 = Debug|ARM64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Debug|ARM64.Deploy.0 = Debug|ARM64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Release|Win32.ActiveCfg = Release|Win32
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Release|Win32.Build.0 = Release|Win32
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Release|Win32.Deploy.0 = Release|Win32
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Release|x64.ActiveCfg = Release|x64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Release|x64.Build.0 = Release|x64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Release|x64.Deploy.0 = Release|x64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Release|ARM64.ActiveCfg = Release|ARM64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Release|ARM64.Build.0 = Release|ARM64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Release|ARM64.Deploy.0 = Release|ARM64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Debug|Win32.ActiveCfg = Debug|Win32
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Debug|Win32.Build.0 = Debug|Win32
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Debug|Win32.Deploy.0 = Debug|Win32
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Debug|x64.ActiveCfg = Debug|x64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Debug|x64.Build.0 = Debug|x64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Debug|x64.Deploy.0 = Debug|x64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Debug|ARM64.ActiveCfg = Debug|ARM64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Debug|ARM64.Build.0 = Debug|ARM64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Debug|ARM64.Deploy.0 = Debug|ARM64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Release|Win32.ActiveCfg = Release|Win32
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Release|Win32.Build.0 = Release|Win32
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Release|Win32.Deploy.0 = Release|Win32
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Release|x64.ActiveCfg = Release|x64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Release|x64.Build.0 = Release|x64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Release|x64.Deploy.0 = Release|x64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Release|ARM64.ActiveCfg = Release|ARM64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Release|ARM64.Build.0 = Release|ARM64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Release|ARM64.Deploy.0 = Release|ARM64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Debug|Win32.ActiveCfg = Debug|Win32
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Debug|Win32.Build.0 = Debug|Win32
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Debug|Win32.Deploy.0 = Debug|Win32
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Debug|x64.ActiveCfg = Debug|x64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Debug|x64.Build.0 = Debug|x64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Debug|x64.Deploy.0 = Debug|x64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Debug|ARM64.ActiveCfg = Debug|ARM64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Debug|ARM64.Build.0 = Debug|ARM64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Debug|ARM64.Deploy.0 = Debug|ARM64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Release|Win32.ActiveCfg = Release|Win32
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Release|Win32.Build.0 = Release|Win32
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Release|Win32.Deploy.0 = Release|Win32
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Release|x64.ActiveCfg = Release|x64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Release|x64.Build.0 = Release|x64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Release|x64.Deploy.0 = Release|x64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Release|ARM64.ActiveCfg = Release|ARM64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Release|ARM64.Build.0 = Release|ARM64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Release|ARM64.Deploy.0 = Release|ARM64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Debug|Win32.ActiveCfg = Debug|Win32
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Debug|Win32.Build.0 = Debug|Win32
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Debug|Win32.Deploy.0 = Debug|Win32
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Debug|x64.ActiveCfg = Debug|x64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Debug|x64.Build.0 = Debug|x64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Debug|x64.Deploy.0 = Debug|x64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Debug|ARM64.ActiveCfg = Debug|ARM64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Debug|ARM64.Build.0 = Debug|ARM64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Debug|ARM64.Deploy.0 = Debug|ARM64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Release|Win32.ActiveCfg = Release|Win32
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Release|Win32.Build.0 = Release|Win32
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Release|Win32.Deploy.0 = Release|Win32
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Release|x64.ActiveCfg = Release|x64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Release|x64.Build.0 = Release|x64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Release|x64.Deploy.0 = Release|x64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Release|ARM64.ActiveCfg = Release|ARM64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Release|ARM64.Build.0 = Release|ARM64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Release|ARM64.Deploy.0 = Release|ARM64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Debug|Win32.ActiveCfg = Debug|Win32
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Debug|Win32.Build.0 = Debug|Win32
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Debug|Win32.Deploy.0 = Debug|Win32
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Debug|x64.ActiveCfg = Debug|x64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Debug|x64.Build.0 = Debug|x64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Debug|x64.Deploy.0 = Debug|x64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Debug|ARM64.ActiveCfg = Debug|ARM64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Debug|ARM64.Build.0 = Debug|ARM64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Debug|ARM64.Deploy.0 = Debug|ARM64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Release|Win32.ActiveCfg = Release|Win32
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Release|Win32.Build.0 = Release|Win32
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Release|Win32.Deploy.0 = Release|Win32
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Release|x64.ActiveCfg = Release|x64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Release|x64.Build.0 = Release|x64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Release|x64.Deploy.0 = Release|x64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Release|ARM64.ActiveCfg = Release|ARM64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Release|ARM64.Build.0 = Release|ARM64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Release|ARM64.Deploy.0 = Release|ARM64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Debug|Win32.ActiveCfg = Debug|Win32
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Debug|Win32.Build.0 = Debug|Win32
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Debug|Win32.Deploy.0 = Debug|Win32
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Debug|x64.ActiveCfg = Debug|x64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Debug|x64.Build.0 = Debug|x64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Debug|x64.Deploy.0 = Debug|x64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Debug|ARM64.ActiveCfg = Debug|ARM64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Debug|ARM64.Build.0 = Debug|ARM64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Debug|ARM64.Deploy.0 = Debug|ARM64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Release|Win32.ActiveCfg = Release|Win32
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Release|Win32.Build.0 = Release|Win32
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Release|Win32.Deploy.0 = Release|Win32
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Release|x64.ActiveCfg = Release|x64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Release|x64.Build.0 = Release|x64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Release|x64.Deploy.0 = Release|x64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Release|ARM64.ActiveCfg = Release|ARM64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Release|ARM64.Build.0 = Release|ARM64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Release|ARM64.Deploy.0 = Release|ARM64
{49C1282C-9CE5-4980-9590-8678615DB435}.Debug|Win32.ActiveCfg = Debug|Win32
{49C1282C-9CE5-4980-9590-8678615DB435}.Debug|Win32.Build.0 = Debug|Win32
{49C1282C-9CE5-4980-9590-8678615DB435}.Debug|Win32.Deploy.0 = Debug|Win32
{49C1282C-9CE5-4980-9590-8678615DB435}.Debug|x64.ActiveCfg = Debug|x64
{49C1282C-9CE5-4980-9590-8678615DB435}.Debug|x64.Build.0 = Debug|x64
{49C1282C-9CE5-4980-9590-8678615DB435}.Debug|x64.Deploy.0 = Debug|x64
{49C1282C-9CE5-4980-9590-8678615DB435}.Debug|ARM64.ActiveCfg = Debug|ARM64
{49C1282C-9CE5-4980-9590-8678615DB435}.Debug|ARM64.Build.0 = Debug|ARM64
{49C1282C-9CE5-4980-9590-8678615DB435}.Debug|ARM64.Deploy.0 = Debug|ARM64
{49C1282C-9CE5-4980-9590-8678615DB435}.Release|Win32.ActiveCfg = Release|Win32
{49C1282C-9CE5-4980-9590-8678615DB435}.Release|Win32.Build.0 = Release|Win32
{49C1282C-9CE5-4980-9590-8678615DB435}.Release|Win32.Deploy.0 = Release|Win32
{49C1282C-9CE5-4980-9590-8678615DB435}.Release|x64.ActiveCfg = Release|x64
{49C1282C-9CE5-4980-9590-8678615DB435}.Release|x64.Build.0 = Release|x64
{49C1282C-9CE5-4980-9590-8678615DB435}.Release|x64.Deploy.0 = Release|x64
{49C1282C-9CE5-4980-9590-8678615DB435}.Release|ARM64.ActiveCfg = Release|ARM64
{49C1282C-9CE5-4980-9590-8678615DB435}.Release|ARM64.Build.0 = Release|ARM64
{49C1282C-9CE5-4980-9590-8678615DB435}.Release|ARM64.Deploy.0 = Release|ARM64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{3328A7D5-F136-4678-993F-9F243D27FBEA}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\load_banks.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{2C1EA18D-07AA-43E3-B4FB-600F556D9840}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\music_callbacks.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\objectpan.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{3807BE27-3975-4BD7-9D53-F96202BDAC3B}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\programmer_sound.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\recording_playback.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{49C1282C-9CE5-4980-9590-8678615DB435}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\simple_event.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>