Git Product home page Git Product logo

asmfunbox's Introduction

ASM Funbox

This is the ASM Funbox, a stupid-simple game framework that lets you write your tick function in x64 Assembly.

If you are a game programmer looking to learn 64-bit assembly, this is a good approach. The build system is extensible -- see Creating Modules below.

Compiling

Dependencies

  • Python for scons
  • scons for building
  • nasm for assembling
  • 64-bit GCC for compiling
  • SDL2 and OpenGL headers

Known Issues

In SConstruct, add_sdl_to_env must be investigated, as the locations for CPPPATH and LIBPATH will need to be updated.

Controls

See sample_inputs in game.c

Creating Modules

Create a subdir under src/modules. Copy src/modules/stub/SConscript into your directory, replacing module_files with a list of the files you want to assemble into a static library.

Build the module with: scons debug=1 module=modulename install

If successful, this places the module at bin/modulename.

Modules have one API responsibility: to implement int asm_tick( Uint8 buttons, Uint32 *pixels, Uint32 elapsed_ms ).

  • buttons is a bitflag of inputs which are either on or off. See BTN_ constants in main.h
  • pixels is a 32-bit RGBA buffer which represents your backbuffer for the frame. It is (BUFFER_W * BUFFER_H * 4) bytes large. This is uploaded to an OpenGL texture and displayed on a Window.
  • elapsed_ms is the number of milliseconds that have elapsed since program start.

Author

Michael Labbe [email protected]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.