|
|
@@ -1,86 +0,0 @@ |
|
|
|
#include "handmade.h" |
|
|
|
|
|
|
|
#define PI32 3.141592653589f |
|
|
|
|
|
|
|
void debug_printf(wchar_t* format, ...) { |
|
|
|
size_t bufsize = wcslen(format)*10; |
|
|
|
wchar_t *output = (wchar_t*)malloc(bufsize); |
|
|
|
va_list list; |
|
|
|
va_start(list, format); |
|
|
|
vswprintf(output, bufsize, format, list); |
|
|
|
OutputDebugStringW(output); |
|
|
|
free(output); |
|
|
|
} |
|
|
|
|
|
|
|
internal void outputSineSound(GameSoundOutputBuffer *soundBuffer, GameState *state) { |
|
|
|
int16 toneVolume = 3000; |
|
|
|
int wavePeriod = soundBuffer->samplesPerSecond/state->toneHz; |
|
|
|
|
|
|
|
int16 *sampleOut = soundBuffer->samples; |
|
|
|
for (int sampleIndex = 0; sampleIndex < soundBuffer->sampleCount; sampleIndex++) { |
|
|
|
int16 sampleValue = (int16)(sin(state->tSine) * (real32)toneVolume); |
|
|
|
*sampleOut++ = sampleValue; |
|
|
|
*sampleOut++ = sampleValue; |
|
|
|
state->tSine += 2.0f * PI32 / (real32)wavePeriod; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
internal void renderWeirdGradient(GameOffscreenBuffer *buffer, int xOffset, int yOffset) { |
|
|
|
int bytesPerPixel = 4; |
|
|
|
int pitch = buffer->width*bytesPerPixel; |
|
|
|
uint8 *row = (uint8 *)buffer->memory; |
|
|
|
for (int y = 0; y < buffer->height; y++) { |
|
|
|
uint32 *pixel = (uint32*)row; |
|
|
|
for (int x = 0; x < buffer->width; x++) { |
|
|
|
uint8 blue = (uint8)(x + xOffset); |
|
|
|
uint8 green = (uint8)(y + yOffset); |
|
|
|
*pixel++ = (green << 8) | blue; |
|
|
|
} |
|
|
|
row += pitch; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
internal void gameUpdateAndRender(GameMemory *memory, GameOffscreenBuffer *videoBuf, GameInput *input, GameSoundOutputBuffer *soundBuf) { |
|
|
|
Assert(sizeof(GameState) <= memory->permanentStorageSize); |
|
|
|
|
|
|
|
GameState *state = (GameState*)memory->permanentStorage; |
|
|
|
|
|
|
|
if (!memory->isInitialised) { |
|
|
|
DebugReadFileResult bmpMem = DEBUG_platformReadEntireFile(__FILE__); |
|
|
|
if (bmpMem.contents) { |
|
|
|
DEBUG_platformWriteEntireFile("c:/source/repos/handmade/src/test.cpp", bmpMem.contentsSize, bmpMem.contents); |
|
|
|
DEBUG_platformFreeFileMemory(bmpMem.contents); |
|
|
|
} |
|
|
|
|
|
|
|
state->toneHz = 440; |
|
|
|
state->tSine = 0; |
|
|
|
memory->isInitialised = true; |
|
|
|
} |
|
|
|
|
|
|
|
for (int controllerIndex = 0; controllerIndex < ArrayCount(input->controllers); controllerIndex++) { |
|
|
|
GameControllerInput *controllerInput = &input->controllers[controllerIndex]; |
|
|
|
if (controllerInput->isAnalog) { |
|
|
|
//state->toneHz = 440 + (int)(128.0f*controllerInput->stickAvgX); |
|
|
|
//state->greenOffset -= (int)(4.0f*controllerInput->stickAvgX); |
|
|
|
//state->blueOffset += (int)(4.0f*controllerInput->stickAvgY); |
|
|
|
} else { |
|
|
|
if (controllerInput->stickRight.endedDown) { |
|
|
|
state->toneHz = 440 + 128; |
|
|
|
state->greenOffset -= 4; |
|
|
|
} else if (controllerInput->stickLeft.endedDown) { |
|
|
|
state->toneHz = 440 - 128; |
|
|
|
state->greenOffset += 4; |
|
|
|
} else { |
|
|
|
state->toneHz = 440; |
|
|
|
} |
|
|
|
if (controllerInput->stickUp.endedDown) { |
|
|
|
state->blueOffset += 4; |
|
|
|
} else if (controllerInput->stickDown.endedDown) { |
|
|
|
state->blueOffset -= 4; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
outputSineSound(soundBuf, state); |
|
|
|
renderWeirdGradient(videoBuf, state->greenOffset, state->blueOffset); |
|
|
|
} |