Giter Club home page Giter Club logo

bpp's Introduction

Bytepusher++

This is an implementation of the Bytepusher fantasy console in C++ and SDL2, complete with a humble debug interface written in ImGui inspired by Lauchmelder's GameBoy emulator.

A screenshot of Bytepusher++ running the nyan.bp ROM

I've only tested this on a Mac, but considering all dependencies are platform-agnostic there shouldn't be any issues running this on Windows or Linux.

I tried to document best to my abilities how each component works in its respective header file, so I won't write more about how the Bytepusher works here. The 16 controller keys are mapped to 1234QWERASDFZXCV -- you can test them out with the "Keyboard Test.bytepusher" ROM.

You can take snapshots of the RAM with the "Debug -> Snapshot RAM" button. They will be saved to the "snapshots" directory in the project and will be named according to the format <date of VM bootup>: <number of snapshot>.bytepusher.

Building and running

You can build the project using either CMake or Click, a one-command C/C++ build tool made by me. Once you're in the project directory just run click. The binary will be outputted to the "build" directory (unless you specify a different one in click.toml).

Run the binary without any console arguments โ€” ROMs are loaded in the interface using a file dialog.

There are some ROMs in the "roms" directory which I got from the Esolangs page and JonathanDC64's implementation (because not all links on Esolangs worked); you can use them or choose your own. Those which are in "roms" have all been tested and each works correctly.

Built with

I wasn't sure how to implement the audio (this is my first "real" project with SDL), so I looked into David Jolly (majestic53)'s bpvm, an awesome and professional implementation of the Bytepusher. As a result of that some audio-related code may look similar, but I never explicitly copied any. A great thanks to David for bpvm!

Credit also goes to Lauchmelder for helping me with some SDL (and other) bugs I would've never found myself.

bpp's People

Contributors

ab9st8 avatar lauchmelder23 avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

lauchmelder23

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.