Skip to content

Instantly share code, notes, and snippets.

View graphitemaster's full-sized avatar
🎩
Building my dream game

Dale Weiler graphitemaster

🎩
Building my dream game
View GitHub Profile
This file has been truncated, but you can view the full file.
YldvD1veTwok7rHc4qhq3ubN5pseXBl94zAzenQabAgQPGSExJFqsbvfTYhzjR6nQEk41AdaIJ1hZTtV
k9LckEIDxAROGEoVwrU6U5Ol44IVxnG6qoJ8234CVQRhDue4iWR5FV7X14LF9P5xiCxkG8DgXsrRWtpD
PFIekNCjRVyYu2bEPLUXW84O0VttJ6HYMtGj3y8WufRw90AYJc4pj6Djc4atpPUhdBkbKHUxgQ4gbazD
emwlxdL2CCAzZfgCoRm8gG3Mg70FixRKjNezOe9Yp87SnIGE2NsQEwYCCE9dYqycUvy4VwBcOyscAuz2
AOE7wQHAXsgLoIpiFwmkqvCtDp15m3EAFL6daE8QtTC9HuOBf62aRESc3TfqXtykC5OkUA8yNIFFgQun
SVCfxogQRUvLTeXW0IlUQuSlCh1q6tdWOnBJZsi1MbMpDrJD9gYz8JBoK1uEdOaQasySazm9JaNAtYIy
EqvN969S61ehC7z43Pc2CmLk7UdfmauaVFjaO9gPlLmySm2U9fWJPq3WIf94DciIJGeTu1EFoCgYDAhq
e1FS4jkhqmuObAirn9kozcYd8lnqZSrutVdZJPTo4MWu7dev0bWWFeF2SoSHaLB3kNLBY9Gsd8zGmtFN
Pj1zdUl3lMMuPIckeoJl29NA9bu2qFPaqQXRsISccpW27kjv1VvBq3KRxKGAjoyLPybsaEf4EkByS40v
zBl2TCxnS8UG4ZUXBK7PzAdhLZ9OZ4NinO90JuQPOhUyEyTPGZmDjNu2x2QU4mBs8KsRFGrvLXAH1XVa
/*
* Copyright (C) 2013
* Dale Weiler
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
* of the Software, and to permit persons to whom the Software is furnished to do
* so, subject to the following conditions:
module gmqcc_out
function CSQC_Init
1 locals:
i
liferanges:
i: float [local] locked @0 [13,30] [35,46]
call0: string [value] @0 [null]
call1: void [return] @0 [null]
call2: string [value] callparam @0 [3,4]
call3: void [return] @0 [null]
typedef struct {
size_t allocated;
size_t used;
} vector_metadata_t;
#define VEC_WILLGROW(X,Y) ( \
((!(X) || vec_meta(X)->used + Y >= vec_meta(X)->allocated)) ? \
(void) VEC_MAKEGROW(((void**)&X), (Y), sizeof(*X)) : \
(void) 0 \
)
static unsigned long x[624];
static int n;
void seed(unsigned long s) {
x[0] = s & 0xFFFFFFFFUL;
for (n=1;n<624;n++){x[n]=(1812433253UL*(x[n-1]^(x[n-1]>>30))+n);}n=0;
}
unsigned long rand() {
unsigned long y[2];
if (n==624) {
for (n = 0; n < 624 - 1; n++)
#include <string.h>
#define BLOCK_ITEMS 16 /* largest alloc 262272 bytes */
/*
* This is a blockade allocator, a new idea in the world of allocators for small short
* lived objects. This allocator creates a table of BLOCK_ITEM chunks, which all contain
* pieces of memory that are allocated for N instances (by blockade_init(N)). Unlike a
* traditional block allocator we use integer log base 2 to map the byte-size to a linear
* sequence: e.g
* 8 bytes = 0
* 16 bytes = 1
@graphitemaster
graphitemaster / Makefile
Created October 14, 2012 00:17
gmbootloader
CFLAGS = -nostdinc -nostdlib -ffreestanding -m32 -fno-pic
CC ?= gcc
DD ?= dd
OBJDUMP = objdump
OBJCOPY = objcopy
HEXDUMP = hexdump
boot: main.S boot.c
$(CC) $(CFLAGS) -c boot.c
$(CC) $(CFLAGS) -c main.S
#include "gmrast.h"
#include <math.h> /* acos, fabs, sqrtf */
#include <string.h> /* memset, memcpy */
#include <stdlib.h> /* malloc, calloc, free */
/*
* TODO:
* Fix up the rasterizer to use GM_* functions below
* for memory managment.
*/
This file has been truncated, but you can view the full file.
DEBUG: [COM] starting ...
Mode: progs.src
src: defs.qc
src: subs.qc
src: fight.qc
src: ai.qc
src: combat.qc
src: items.qc
src: weapons.qc
src: world.qc
#if FOO_H == 1
#error Cyclic include
#endif
#ifndef FOO_H
#define FOO_H 1
stuff;
#undef FOO_H
#define FOO_H 0