Difference between revisions of "1K Intro"

From SizeCoding
Jump to: navigation, search
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+GLSL, but there are 1K intros out there that have used D3D instead.
+
Graphics are usualy done using OpenGL / GLSL, but there are 1K intros out there that have used D3D instead.
  
=== Setup (OpenGL) ===
+
=== 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
* ShowCursor(NULL) - Hide mousecursor (usually required by compo rules
+
* 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)
* Initialising GLSL Shader
+
 
* Mainloop that
+
=== 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  
* Bytebeat softsynth  
+
* Shader softsynth  
  
 
=== Compression ===
 
=== Compression ===

Revision as of 05:07, 12 April 2024

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

Frameworks

1K intros for Windows