Coder Social home page Coder Social logo

gbfs_rs's Introduction

Industry-advance

A GBA game more-or-less loosely intended as a demake of Mindustry (Changes planned largely due to technical limitations).

Build and run

The quickest way to get started under Linux/macOS is to use https://nixos.org/nix/ as a dev environment. Just run nix-shell in the project directory.

Once set up, all that's needed is to run git submodule init && git submodule update && cargo make assets && cargo make run-qt to clone the Mindustry submodule, build assets, build the game and start it in mGBA. Alternatively, cargo make assets && cargo make debug-run creates a debug build and launches it in mGBA, waiting for a GDB client to attach on port 2345 (you should strongly consider using our VScode debug config, as all the annoying setup has already been done for you there). cargo make assets && cargo make test runs the tests.

NOTE: If you change the Mindustry assets/the asset generation script you have to run cargo make assets manually. The process is manual because rebuilding them takes a long time.

HW resource map

When developing the game, please keep in mind which subsystems use which resources (and expect exclusive access to them). Otherwise, fun debugging will ensue.

  • IWRAM: Entirely used by static variables and the stack
  • EWRAM: Entirely used by the global allocator (heap)
  • OAM: Entirely managed by the HW sprite allocator
  • Sprite palette: Entirely managed by the HW sprite allocator
  • Background palette (slots 0-15): Used by the text engine
  • Background palette (slots 16-255): Entirely managed by the background system
  • Charblocks 0, 1: Entirely managed by the background system
  • Screenblocks 8-11: Entirely managed by the background system
  • Charblock 2: Entirely managed by the text engine
  • Screenblock 24: Entirely managed by the text engine
  • Screenblocks 25, 26: Used by instances of crate::menu::Window
  • Charblock 3: Unusable, as it overlaps the screenblocks we use
  • Windows: Entirely used by instances of crate::menu::Window
  • Backgrounds 0, 1: Used by background
  • Background 3: Used by text engine
  • Background 2: Used by windows

Further reading

gbfs_rs's People

Contributors

casept avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

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.