This commit is contained in:
2024-09-03 23:06:21 +01:00
parent a9d7869644
commit b5fe21928f

View File

@@ -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);
}