Skip to content

Instantly share code, notes, and snippets.

@mewmew
mewmew / custom_game_engines_small_study.md
Created April 24, 2020 16:38 — forked from raysan5/custom_game_engines_small_study.md
A small state-of-the-art study on custom engines

CUSTOM GAME ENGINES: A Small Study

a_plague_tale

A couple of weeks ago I played (and finished) A Plague Tale, a game by Asobo Studio. I was really captivated by the game, not only by the beautiful graphics but also by the story and the locations in the game. I decided to investigate a bit about the game tech and I was surprised to see it was developed with a custom engine by a relatively small studio. I know there are some companies using custom engines but it's very difficult to find a detailed market study with that kind of information curated and updated. So this article.

Nowadays lots of companies choose engines like Unreal or Unity for their games (or that's what lot of people think) becaus

#!/usr/bin/env python3
import librosa
import numpy as np
from pathlib import Path
import pandas as pd
class WaveFile(object):
filename = None
/*
* LD_PRELOAD shim which applies two patches necesary to get the game
* Divinity: Original Sin Enhanded Edition for Linux to work with Mesa (12+)
*
* Build with: gcc -s -O2 -shared -fPIC -o divos-hack.{so,c} -ldl
*/
/* for RTLD_NEXT */
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
@mewmew
mewmew / main.c
Created February 6, 2020 01:48
Proof of concept to render first cutscene of Diablo 1.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "diablo.h"
#include "dx.h"
#include "init.h"
#include "interfac.h"
void StoreScreenshot();
@mewmew
mewmew / yolo.py
Created January 17, 2020 03:40 — forked from alexander-hanel/yolo.py
old and new names in idc.py (in progress)
import re
import sys
import os
def load_apis():
new_old_apis = [
# start of changes for idc.py
("hasValue", "has_value"),
("byteValue", "byte_value"),
("isLoaded", "is_loaded"),
@mewmew
mewmew / use-example.go
Last active December 24, 2019 00:35
Example of use-tracking API with modification of value.
// nopTrunc propagates From values of truncation instructions that have no
// effect on type (where From and To type are the same).
//
// Example:
//
// before:
// %10 = xor i32 %src2, %src1
// %11 = trunc i32 %10 to i32
// %12 = xor i32 %sum, %11
//
@mewmew
mewmew / subject.c
Created July 17, 2019 17:03 — forked from ceeac/subject.c
Boomerang v0.5.0 output for dmi/cfg test file
int main(int argc, char *argv[]);
void basic_1_if(__size32 param1);
void basic_2_if_else(__size32 param1);
void basic_3_if_elseif(int param1);
void basic_4_if_elseif_else(__size32 param1);
void basic_5_head_controlled_loop(__size32 param1);
void basic_6_tail_controlled_loop(__size32 param1);
void basic_7_for_loop();
void basic_8_forever_loop(__size32 param1);
void basic_9_dead_block();
@mewmew
mewmew / natural_sort.go
Created June 30, 2019 18:00 — forked from philippbayer/natural_sort.go
A perverted kind of natural sort in golang
package main
import (
"fmt"
"log"
"sort"
"strconv"
"strings"
"unicode"
)
@mewmew
mewmew / ll.bnf
Created February 27, 2019 01:41
Gocc grammar for LLVM IR.
// Based on https://github.com/llir/grammar/blob/6cb09c87c6e434310b41d3c5b2b3d59c94f986c4/ll.bnf
// ### [ Lexical part ] ########################################################
_ascii_letter_upper
: 'A' - 'Z'
;
_ascii_letter_lower
: 'a' - 'z'
@mewmew
mewmew / llvm-7.0_8.0.patch
Created April 1, 2019 07:08
Diff between LLVM 7.0 and 8.0 of the lib/AsmParser directory.
diff -r -u llvm-7.0.0.src/lib/AsmParser/LLLexer.cpp llvm-8.0.0.src/lib/AsmParser/LLLexer.cpp
--- llvm-7.0.0.src/lib/AsmParser/LLLexer.cpp 2018-07-12 11:03:53.000000000 +0900
+++ llvm-8.0.0.src/lib/AsmParser/LLLexer.cpp 2018-11-29 06:14:32.000000000 +0900
@@ -592,6 +592,7 @@
KEYWORD(arm_apcscc);
KEYWORD(arm_aapcscc);
KEYWORD(arm_aapcs_vfpcc);
+ KEYWORD(aarch64_vector_pcs);
KEYWORD(msp430_intrcc);
KEYWORD(avr_intrcc);