Skip to content

Instantly share code, notes, and snippets.

// can be built with:
// $ gcc -o sdl2test `sdl2-config --cflags` sdl_fullscreentest.c `sdl2-config --libs`
// will try to create a fullscreen window with 1920x1080 by default,
// but accepts commandline arguments to use a different resolution, like
// $ ./sdl2test 2560 1440
// will create testlog.txt and write some info there
#include <SDL.h>
#include <unistd.h>
@DanielGibson
DanielGibson / flexarr.cpp
Last active January 11, 2019 16:55
C++ Flexible Array example
/*
* (C) 2019 Daniel Gibson
*
* This software is dual-licensed to the public domain and under the following
* license: you are granted a perpetual, irrevocable license to copy, modify,
* publish, and distribute this file as you see fit.
* No warranty implied; use at your own risk.
*/
#include <stdlib.h> // size_t
@DanielGibson
DanielGibson / GOG-Q2-Trackmapping.txt
Last active June 10, 2018 01:09
GOG Quake2 Trackname mapping to Yamagi Quake2 Tracks
GOG music/Track02.ogg to Track11.ogg => baseq2/music/02.ogg .. 11.ogg
Track12.ogg .. Track21.ogg => rogue/music/02.ogg .. 11.ogg
For xatrix it's like to following
(xatrix track number => Q2/Ground Zero(GZ) Track number => GOG Track number)
02 => Q2:09 => Track09
03 => GZ:03 => Track13
04 => GZ:04 => Track14
05 => Q2:07 => Track07
@DanielGibson
DanielGibson / warptest.c
Created May 6, 2018 00:38
testcase for SDL2 bug #4152 (and the old #3931)
// gcc -Wall -o warptest `sdl2-config --cflags` warptest.c `sdl2-config --libs`
#include <stdio.h>
#include <SDL.h>
static FILE* outfile = NULL;
static void UpdateWinTitle(int accumX, int accumY, SDL_Window* win)
{
char buf[128];
@DanielGibson
DanielGibson / TestMouseWarp.cpp
Last active May 6, 2018 00:28
Test "SetCursorPos() doesn't always generate mouse events"
// This is mostly generated by Visual Studio 2013, I marked all places I changed/added with // DG: ...
// this probably doesn't build as is; I didn't know how to create a portable Visual Studio "solution"
// or which parts of the project folder are relevant..
// when running this, you can quit with Alt+F4
// TestMouseWarp.cpp : Defines the entry point for the application.
//
#include <windowsx.h>
@DanielGibson
DanielGibson / al_funcs.h
Last active April 10, 2018 15:10
OpenAL function in X-Macros, can be used to define and load function pointers etc
/*
* All function names and corresponding pointer-to-function-types
* from the OpenAL headers, wrapped in a magic macro so it can be used for whatever.
*
* Idea for the magic X macro from Walter Bright:
* http://www.drdobbs.com/cpp/the-x-macro/228700289
*
* To use this, you have to #define the AL_X_MAGIC(fn, fnptrt)
* macro for the AL_H_FUNCS and ALC_H_FUNCS and the
* ALEXT_X_MAGIC(fn, fnptrt, ext) macro for the ALEXT_H_FUNCS and EFX_H_FUNCS
@DanielGibson
DanielGibson / daikatana-wal.txt
Last active March 2, 2018 20:42
Description of the .wal format as used in Daikatana
The Daikatana .wal format is similar to Quake2, but supports a palette per texture
(even if it's not always used, see below) and 9 mipmap levels instead of 4.
If you wanna check whether a .wal is in daikatana or q2 format, check whether
the first byte is == 3 (daikatana) or > 32 (ASCII ' '; then it's likely Quake2)
because in Quake2 it's the name which should start with a printable ASCII char.
Having 9 MipMap levels implies that for many textures, the last levels will be
1x1 pixels... Daikatana itself stops loading more mipmaps once the last loaded
one has a width or height of 1.
Each mipmap level has half the width and height of the previous one.
@DanielGibson
DanielGibson / extract_daikatana_gog.sh
Created January 24, 2018 01:12
A shellscript that extracts Daikatana from the GOG Inno Setup installer into the current directory
#!/bin/sh
INSTALLER_PATH="$1"
print_usage () {
echo "Usage: "
echo " $0 /path/to/setup_daikatana_2.0.0.3.exe"
}
print_bug_info () {
@DanielGibson
DanielGibson / SDL_mouse.c
Last active December 6, 2017 16:03
test sdl relative mouse input with mouse warping
// in src/events/SDL_mouse.c added some SDL_Log() calls to SDL_PrivateSendMouseMotion():
#include "SDL_log.h"
static int
SDL_PrivateSendMouseMotion(SDL_Window * window, SDL_MouseID mouseID, int relative, int x, int y)
{
SDL_Mouse *mouse = SDL_GetMouse();
int posted;
int xrel;
int yrel;
@DanielGibson
DanielGibson / testrapidjson.cpp
Created August 2, 2016 21:56
Test rapidjson parsing speed, like in http://computers-are-fast.github.io/
// this is hacky and assumes messages.json is <64k bytes. that's the case for
// https://github.com/kamalmarhubi/one-second/blob/master/setup/protobuf/message.json
#include "rapidjson/document.h"
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
size_t numIterations = 1;