Difference between revisions of "1K Intro"
From SizeCoding
Line 5: | Line 5: | ||
In general writing everything in assembler should give you a little more freedom in pushing/popping your function arguments but in th past quality intros have been written in both languages. | In general writing everything in assembler should give you a little more freedom in pushing/popping your function arguments but in th past quality intros have been written in both languages. | ||
− | Graphics are usualy done using OpenGL | + | Graphics are usualy done using OpenGL / GLSL, but there are 1K intros out there that have used D3D instead. |
− | === Setup ( | + | === Setup (Windows) === |
* ChangeDisplaySettings(&screenSettings, CDS_FULLSCREEN) - Initialise fullscreen view | * ChangeDisplaySettings(&screenSettings, CDS_FULLSCREEN) - Initialise fullscreen view | ||
− | * CreateWindow((LPCSTR)0xC018, 0, WS_POPUP | WS_VISIBLE | WS_MAXIMIZE, 0, 0, 0, 0, 0, 0, 0, 0) - Setting up a Maximised Window | + | * hwnd = CreateWindow((LPCSTR)0xC018, 0, WS_POPUP | WS_VISIBLE | WS_MAXIMIZE, 0, 0, 0, 0, 0, 0, 0, 0) - Setting up a Maximised Window |
− | + | * GetDC(hwnd) - Get DeviceContext handle | |
− | * GetDC() - Get DeviceContext handle | ||
* ChoosePixelFormat(hDC, &pfd) - Set pixelformat describer by pfd to DeviceContext handle | * ChoosePixelFormat(hDC, &pfd) - Set pixelformat describer by pfd to DeviceContext handle | ||
− | * wglCreateContext(hDC) - Create OpenGL context | + | * ShowCursor(NULL) - Hide mousecursor (usually required by compo rules) |
− | * | + | |
− | * | + | === Setup (OpenGL) === |
+ | * glContent = wglCreateContext(hDC) - Create OpenGL context | ||
+ | * wglMakeCurrent(hDC, glContext) - Set OpenGL Context | ||
+ | * shaderProgam = glCreateShaderProgramv(GL_FRAGMENT_SHADER, 1, &shader) - Create and compile GLSL Shader | ||
+ | * glUseProgram(shaderProgram) - Set active shader | ||
+ | |||
+ | === Update Loop === | ||
+ | * t = GetTickCount() - Optional: Get Current ticks | ||
+ | * glColor3us(t,0,0) / glColor3i(t,0,0) - Parse time via gl_Color (saves importing uniform functions) | ||
+ | * glRects(-1,-1,1,1) - Draw a single quad with current Shader | ||
+ | * SwapBuffers(hDC) - Swap Buffers | ||
+ | * GetAsyncKeyState(VK_ESCAPE) - Checks for escape key (required by compo rules) | ||
+ | |||
+ | === Closedown === | ||
+ | * ExitProcess(0) - Close down application | ||
=== Graphics / effect === | === Graphics / effect === | ||
Line 24: | Line 37: | ||
* Win32 Single Note MIDI | * Win32 Single Note MIDI | ||
* Win32 MIDI player | * Win32 MIDI player | ||
+ | |||
* Bytebeat softsynth | * Bytebeat softsynth | ||
− | * | + | * Shader softsynth |
=== Compression === | === Compression === |
Revision as of 04:07, 12 April 2024
Contents
Introduction
This category is dedicated to 1K Intros for Windows 32.
Windows 1K Intros can be setup in C or Aseembler, or a combination of both, with only the few windows calls that are used being linked in. In general writing everything in assembler should give you a little more freedom in pushing/popping your function arguments but in th past quality intros have been written in both languages.
Graphics are usualy done using OpenGL / GLSL, but there are 1K intros out there that have used D3D instead.
Setup (Windows)
- ChangeDisplaySettings(&screenSettings, CDS_FULLSCREEN) - Initialise fullscreen view
- hwnd = CreateWindow((LPCSTR)0xC018, 0, WS_POPUP | WS_VISIBLE | WS_MAXIMIZE, 0, 0, 0, 0, 0, 0, 0, 0) - Setting up a Maximised Window
- GetDC(hwnd) - Get DeviceContext handle
- ChoosePixelFormat(hDC, &pfd) - Set pixelformat describer by pfd to DeviceContext handle
- ShowCursor(NULL) - Hide mousecursor (usually required by compo rules)
Setup (OpenGL)
- glContent = wglCreateContext(hDC) - Create OpenGL context
- wglMakeCurrent(hDC, glContext) - Set OpenGL Context
- shaderProgam = glCreateShaderProgramv(GL_FRAGMENT_SHADER, 1, &shader) - Create and compile GLSL Shader
- glUseProgram(shaderProgram) - Set active shader
Update Loop
- t = GetTickCount() - Optional: Get Current ticks
- glColor3us(t,0,0) / glColor3i(t,0,0) - Parse time via gl_Color (saves importing uniform functions)
- glRects(-1,-1,1,1) - Draw a single quad with current Shader
- SwapBuffers(hDC) - Swap Buffers
- GetAsyncKeyState(VK_ESCAPE) - Checks for escape key (required by compo rules)
Closedown
- ExitProcess(0) - Close down application
Graphics / effect
- Passed time via glColor (no uniforms used)
- GLSL Shadercode
Sound
- Win32 Single Note MIDI
- Win32 MIDI player
- Bytebeat softsynth
- Shader softsynth
Compression
- Microsoft Cabinet decmpression
- Crinkler