port from perforce

This commit is contained in:
2026-04-18 22:31:51 +02:00
commit 8d0ab5b7cc
8409 changed files with 3972376 additions and 0 deletions

View File

@@ -0,0 +1,164 @@
#define WIN32_LEAN_AND_MEAN
#define WIN32_EXTRA_LEAN
#include "synth.h"
#include <GL/gl.h>
#include "glext.h"
#include "mark_small.h"
#ifndef SCREENWIDTH
#define SCREENWIDTH 1280
#endif
#ifndef SCREENHEIGHT
#define SCREENHEIGHT 720
#endif
#ifndef ASPECTOFFSET
#define ASPECTOFFSET 0.375f
#endif
#define WINDOWED
#pragma data_seg(".Shader0")
#include "mark_small.h"
#pragma data_seg(".pfd")
static const PIXELFORMATDESCRIPTOR pfd = {
0, 1, PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, PFD_TYPE_RGBA, 32, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 8
};
#pragma data_seg(".dms")
static DEVMODE dmScreenSettings = {
"", 0, 0, sizeof(dmScreenSettings), 0, DM_PELSWIDTH | DM_PELSHEIGHT,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "", 0, 0, SCREENWIDTH, SCREENHEIGHT
};
#pragma data_seg(".fltused")
int _fltused = 1;
#pragma bss_seg(".mainbss")
static int gCurScene = 0;
static int gCurSceneStart = 0;
static float lf_Time = 0.0f;
static unsigned int shaders[3];
#pragma data_seg(".g_SceneLength")
int g_SceneLength[] =
{
16, 16,
16, 8, 8, 8, 8, 16,
8, 8, 16, 16,
16, 16, 16, 16,
0x80000000
};
#pragma data_seg(".g_SceneShader")
int g_SceneShader[] =
{
0, 0,
0, 0, 0, 0, 0, 0,
1, 1, 1, 1,
2, 2, 2, 2
};
#pragma data_seg(".glCreateShaderProgramEXT")
static const char* sglCreateShaderProgramEXT = "glCreateShaderProgramEXT";
#pragma data_seg(".glUseProgram")
static const char* sglUseProgram = "glUseProgram";
#pragma data_seg(".glUniform4f")
static const char* sglUniform4f = "glUniform4f";
#define shaderCountOffset 12
#ifdef _DEBUG
void _printProgramInfoLog(GLhandleARB ah_Program)
{
int li_InfologLength = 0;
int li_CharsWritten = 0;
((PFNGLGETPROGRAMIVPROC)wglGetProcAddress("glGetProgramiv"))(ah_Program, GL_INFO_LOG_LENGTH, &li_InfologLength);
if (li_InfologLength > 0)
{
static char ls_InfoLog[65536];
((PFNGLGETPROGRAMINFOLOGPROC)wglGetProcAddress("glGetProgramInfoLog"))(ah_Program, li_InfologLength, &li_CharsWritten, ls_InfoLog);
OutputDebugString(ls_InfoLog);
}
}
#else
#define _printProgramInfoLog(foo)
#endif
#define ATOM_EDIT 0xC018
#define ATOM_STATIC 0xC019
#include "..\..\hgplus\obliterator\syncprototype\syncprototype\timeline.h"
#pragma code_seg(".main")
void _cdecl main()
{
#ifndef WINDOWED
ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN);
HDC hDC = GetDC(CreateWindowExA(0, (LPCSTR)ATOM_STATIC, 0, WS_POPUP | WS_VISIBLE | WS_MAXIMIZE, 0, 0, 0, 0, 0, 0, 0, 0));
#else
HDC hDC = GetDC(CreateWindowExA(0, (LPCSTR)ATOM_EDIT, 0, WS_EX_APPWINDOW | WS_VISIBLE | WS_SYSMENU, 0, 0, SCREENWIDTH + 16, SCREENHEIGHT + 39, 0, 0, 0, 0));
#endif
SetPixelFormat(hDC, ChoosePixelFormat(hDC, &pfd), &pfd);
wglMakeCurrent(hDC, wglCreateContext(hDC));
//shaders[0] =
((PFNGLCREATESHADERPROGRAMEXTPROC)wglGetProcAddress(sglCreateShaderProgramEXT))(GL_FRAGMENT_SHADER, mark_fs_0);
mark_fs_0[shaderCountOffset]++;
_printProgramInfoLog(1);
//shaders[1] =
((PFNGLCREATESHADERPROGRAMEXTPROC)wglGetProcAddress(sglCreateShaderProgramEXT))(GL_FRAGMENT_SHADER, mark_fs_0);
mark_fs_0[shaderCountOffset]++;
_printProgramInfoLog(2);
//shaders[2] =
((PFNGLCREATESHADERPROGRAMEXTPROC)wglGetProcAddress(sglCreateShaderProgramEXT))(GL_FRAGMENT_SHADER, mark_fs_0);
mark_fs_0[shaderCountOffset]++;
_printProgramInfoLog(3);
ShowCursor(FALSE);
CreateTimeline();
InitSound();
do
{
UpdateTimeline();
get_Sample();
int Sample = MMTime.u.sample - gCurSceneStart;
int SceneEnd = g_SceneLength[gCurScene] * SAMPLES_PER_TICK * 8;//samples per tick
lf_Time = (float)Sample / (float)SceneEnd;
//auto program = shaders[g_SceneShader[gCurScene]];
auto program = 1 + g_SceneShader[gCurScene];
((PFNGLUSEPROGRAMPROC)wglGetProcAddress(sglUseProgram))(program);
((PFNGLUNIFORM4FPROC)wglGetProcAddress(sglUniform4f))(0, gCurScene, lf_Time, SCREENHEIGHT, ASPECTOFFSET);
glRecti(-1, -1, 1, 1);
SwapBuffers(hDC);
if (Sample > SceneEnd)
{
gCurSceneStart += SceneEnd;
gCurScene++;
}
MSG msg;
while (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
} while (MMTime.u.sample < MAX_SAMPLES && !GetAsyncKeyState(VK_ESCAPE));
ExitProcess(0);
}