Source code from 068A, our 64k demo presented at Syntax 2017

068A source code dump

This is a dump of the source code for the engine, graphics tool and player for 068A, our 64k demo released at Syntax 2017. It's been updated to fix a couple of minor things that have broken since release, but for the most part is identical to what we showed in the breakdown video with Ferris.

Goals of this dump:

  • You should be able to build and run a fully-functional demo and toolset.
  • You should be able to explore the code in this repo and maybe learn some things about how we built it.

To that end, we will accept pull requests and issue reports that help us achieve these goals. Other PRs and issues will not be accepted. For instance, a PR to fix a crash when starting the player is fine, but a PR that replaces part of our post-processing stack or fixes a synth bug is not.

Building

You'll need a 32-bit copy of mingw-w64. The MingW-W64-builds package works fine. Make sure to install the 32-bit version!

The demo is built with CMake. The Debug build plays an audio file, loads shaders from disk, supports live reloading and connecting to a Rocket compatible editor for sync-tracking. The Release build bundles up a synth, shaders and tracks into an optimized executable that plays the demo from start to end and can be krunched to around 50kb.

For example, to create a Debug build:

  • Create a folder at tool/cmake-build-debug
  • Inside that folder in the MinGW environment, run the following commands:
    cmake --build . --target tool ">
    > cmake -DCMAKE_BUILD_TYPE=Debug -G "MinGW Makefiles" ..
    > cmake --build . --target tool
    

And to create a Release build:

  • Ensure the Debug build has run at least once to generate the export blob - see the section below on running the tool.
  • Create a folder at tool/cmake-build-release
  • Inside that folder in the MinGW environment, run the following commands:
    cmake --build . --target tool ">
    > cmake -DCMAKE_BUILD_TYPE=Release -G "MinGW Makefiles" ..
    > cmake --build . --target tool
    

Running the tool

The Debug build of the demo which is sometimes referred to as the "tool", has a few differing features from the Release build:

  • Playback and animations are all handled by the Rocket library and a compatible editor. I used emoon's editor mainly for folding and grouping support, which is included as rocket.exe in the repo.
  • Audio is played from a file instead of being generated by the executable. You can swap out audio.ogg in the repo with your own audio file to use different music.
  • Shaders are loaded from disk, can include other shaders, and support live reloading. Shaders are also validated with glslang before being compiled.
  • There's a "free camera" mode that allows you to fly around and experiment with different angles, focal lengths, etc.
  • The tool has a performance meter and debugging tools for textures and lights.

Before running the tool, make sure to open your Rocket editor and load the TRACKER.rocket file to import the tracking data used for the demo.

To use the "free camera" mode, click anywhere in the tool outside the debug windows. You can now use the following controls:

  • W/A/S/D to move around, Space to fly up and Ctrl to fly down, Shift to move faster.
  • Q/E to roll the camera left and right, R to reset roll and FOV.
  • Scroll wheel to adjust FOV.
  • P to print the camera position and direction to the debug console.
  • Escape to leave free camera mode and reset the camera to the tracker's settings.

When closed, the tool generates a binary blob of shaders and tracking data to be packed into a Release build. This is placed in ../player/export.cpp relative to the tool's current directory, which should Just Work if you run the tool from tool/cmake-build-debug.

Known issues

  • The rover doesn't show in Debug builds. It might just be in some weird place since the tracks aren't showing either.
  • Release builds seem to be overwriting the coloured output with the ambient occlusion channel.

License

The demo code is provided under the MIT license. It contains code from Rocket which is provided under the zlib license.

glslang is licensed under the 3-clause BSD license.

emoon's Rocket editor is provided under the zlib license.

Un4seen Developments' BASS audio library is used under a free for non-commercial use license.

Owner
Monad
Hop into the Monad-mobile and we'll show you a cool coffee shop downtown that also sells candles.
Monad
Similar Resources

DigiMahal is the First Project of Our Team in Sharif University of Technology for Basics of Programming That in this Code we Implemented an Online Shop like DigiKala

DigiMahal is the First Project of Our Team in Sharif University of Technology for Basics of Programming That in this Code we Implemented an Online Shop like DigiKala

DigiMahal is the First Project of Our Team in Sharif University of Technology for Basics of Programming That in this Code we Implemented an Online Shop like DigiKala.

Jul 23, 2022

Project is to port original Zmodem for Unix to CP/M and provide binaries and source code for platform specific modification as needed. Based on 1986 C source code by Chuck Forsberg

Zmodem-CP-M This repository is intended to foster a RetroBrewComputers community effort to port the original Zmodem source code for Unix to CP/M so ev

Aug 31, 2022

Project is to port original Zmodem for Unix to CP/M and provide binaries and source code for platform specific modification as needed. Based on 1986 C source code by Chuck Forsberg

Zmodem4CPM This repository is intended to foster a RetroBrewComputers community effort to port the original Zmodem source code for Unix to CP/M so eve

Aug 31, 2022

A simple wrapper for 'pacman' with a syntax similar to 'apt' to help people transitioning to Arch and Arch based distributions like Manjaro.

aptpac aptpac is a program which helps with the transition to Arch Linux and Arch based distros like Manjaro. It simplifies using pacman as it works l

Dec 4, 2022

Arobase is a simple programming language with a c-like syntax.

Arobase is a simple programming language with a c-like syntax.

Arobase Arobase is a simple programming language with a c-like syntax. Requirements gcc gas (gnu as) ld A 64 bits linux distribution (generated assemb

Nov 28, 2022

A Simple Language (PHP-Like Syntax)

SL A Simple Language (PHP-Like Syntax) Usage: SL.exe filename A 64-bit windows executable is provided (SL.exe) alongside some demo SL code (main.sl)

Nov 15, 2021

Keepy is a pseudo-language / HTML preprocessor that translates special syntax into HTML

Keepy is a pseudo-language / HTML preprocessor that translates special syntax into HTML with the peculiarity of being a "compiled pseudo-language". So after using Keepy you can edit the final output HTML file.

Jan 1, 2022

A single-header, new syntax for C & C++

sea A new syntax for C & C++, in one header file sea is a new syntax for C & C++. It can be used by adding the following line of code to a .c, or .cc/

Nov 19, 2021

A software rasterizer with nice syntax.

Acleris A software rasterizer with nice syntax. The main goal of the project was to learn how rasterization works, and to try to do it in a fast way.

Dec 5, 2022
Sandbox binary and source code for the Siggraph 2017 paper "Water Wave Packets" by Stefan Jeschke (NVIDIA) and Chris Wojtan (IST Austria)

----------------------------- Manual for wave packet viewer ----------------------------- System requirements: Windows8/8.1/10 with DirectX runtime e

Nov 28, 2022
This is our take on the digitalisation of the board game "b00le0", where you can play versus our AI, or against one of your friends in an online match.
This is our take on the digitalisation of the board game

This is our take on the digitalisation of the board game "b00le0", where you can play versus our AI, or against one of your friends in an online match.

Dec 8, 2022
A refactored Proof-of-concept originally developed in 2017 to print all function calls with their arguments data types and values using Ptrace during program execution.

print-function-args-debugger A refactored Proof-of-concept originally developed in 2017 to print all function calls with their arguments data types an

Jun 17, 2022
Source Code and Embedded Design of Our Factory Robot at AUTCup 2015 Competitions
Source Code and Embedded Design of Our Factory Robot at AUTCup 2015 Competitions

AUTCup 2015 @Factory Robot This repository contains the source code and embedded design of our @Factory robot at AUTCup 2015 competitions. The robot w

Oct 20, 2021
A collection of code snippets and examples showing syntax and capabilities of VEX language inside SideFX Houdini
A collection of code snippets and examples showing syntax and capabilities of VEX language inside SideFX Houdini

VEX tutorial A collection of code snippets and examples showing syntax and capabilities of VEX language inside SideFX Houdini by Juraj Tomori How to u

Dec 11, 2022
Visual Studio extension for assembly syntax highlighting and code completion in assembly files and the disassembly window
Visual Studio extension for assembly syntax highlighting and code completion in assembly files and the disassembly window

Asm-Dude Assembly syntax highlighting and code assistance for assembly source files and the disassembly window for Visual Studio 2015, 2017 and 2019.

Jan 6, 2023
Here it is! SRB2 Final Demo 1.09 (in development) source code!

Here it is! SRB2 Final Demo 1.09 (in development) source code!

Jan 23, 2022
Code for our ECE445/ME470 design: Wireless Charging Table with Automatic Alignment
Code for our ECE445/ME470 design: Wireless Charging Table with Automatic Alignment

Qi Wireless Charging Table with Automatic Alignment Code for ECE445/ME470 Senior Design Project SP21 at ZJUI. Team 24: Kaiwen Cao, Tianyi Han, Tingkai

May 1, 2022
Code accompanying our SIGGRAPH 2021 Technical Communications paper "Transition Motion Tensor: A Data-Driven Approach for Versatile and Controllable Agents in Physically Simulated Environments"
Code accompanying our SIGGRAPH 2021 Technical Communications paper

SIGGRAPH ASIA 2021 Technical Communications Transition Motion Tensor: A Data-Driven Framework for Versatile and Controllable Agents in Physically Simu

Apr 21, 2022