All Projects → rodri042 → piugba

rodri042 / piugba

Licence: MIT license
🎮 PIU emulator for the GBA 🎮

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to piugba

gba-remote-play
Stream Raspberry Pi games to a GBA via Link Cable
Stars: ✭ 356 (+727.91%)
Mutual labels:  gba, gameboy, advance
gbjam8
A Game Boy demake of The Binding of Isaac made for GBJAM8.
Stars: ✭ 18 (-58.14%)
Mutual labels:  gameboy, rom
Rom Properties
ROM Properties Page shell extension
Stars: ✭ 210 (+388.37%)
Mutual labels:  gameboy, rom
cart-dumper
🎮 Gameboy ROM for cartridge dumping
Stars: ✭ 24 (-44.19%)
Mutual labels:  gameboy, rom
minishmaker
Level editing suite for The Legend of Zelda: The Minish Cap
Stars: ✭ 58 (+34.88%)
Mutual labels:  gba, rom
Hades
🔥 A Nintendo Game Boy Advance emulator
Stars: ✭ 44 (+2.33%)
Mutual labels:  gba, gameboy
awesome-emu-resources
A curated list of emulator development resources
Stars: ✭ 26 (-39.53%)
Mutual labels:  gba, gameboy
Mgba
mGBA Game Boy Advance Emulator
Stars: ✭ 3,355 (+7702.33%)
Mutual labels:  gba, gameboy
GameboyBoilerplateProj
Gameboy boilerplate to get started quickly
Stars: ✭ 25 (-41.86%)
Mutual labels:  gameboy
oracles-disasm
Disassembly of Oracle of Ages and Seasons
Stars: ✭ 125 (+190.7%)
Mutual labels:  gameboy
ENGAGE
Source code repository for ENGAGE: Battery-Free Game Boy
Stars: ✭ 75 (+74.42%)
Mutual labels:  gameboy
newbark-unity
🌳 A proof-of-concept Pokémon-style Retro RPG game framework created with Unity 🔥🌿💧⚡️
Stars: ✭ 139 (+223.26%)
Mutual labels:  gameboy
RxLogs
An Android & Kotlin Reactive Advanced Logging Framework.
Stars: ✭ 12 (-72.09%)
Mutual labels:  advance
stepmania-song-manager
Download and update song packs for StepMania with ease.
Stars: ✭ 23 (-46.51%)
Mutual labels:  stepmania
How-to-Solve-it-by-Computer-R-G-Dromey
How to Solve it by Computer - R.G. Dromey Solutions
Stars: ✭ 20 (-53.49%)
Mutual labels:  it
AROS
www.axrt.org
Stars: ✭ 33 (-23.26%)
Mutual labels:  rom
helloworld
Hello world and other commented GameBoy assembly examples for beginners.
Stars: ✭ 31 (-27.91%)
Mutual labels:  gameboy
JukeBot
Discord music bot written in Python 3
Stars: ✭ 23 (-46.51%)
Mutual labels:  rythm
AMO-Tools-Suite
AMO-Tools-Suite is an energy efficiency calculation library in C++ with optional Nan Node add-on bindings for the Department of Energy Advanced Manufacturing Office (DOE AMO) Desktop, also known as MEASUR.
Stars: ✭ 16 (-62.79%)
Mutual labels:  pump
access
Access - Access is a initiative started by a bunch of professionals from various disciplines (engineering/education/finance) with only one goal- "Make technology education accessible in rural areas of India". This repo contains the content related to access bootcamp.
Stars: ✭ 38 (-11.63%)
Mutual labels:  it

piuGBA

This is a PIU emulator for the GBA that uses StepMania SSC charts.

demo1demo2demo3demo4demo5demo6demo7demo8demo9demo10demo11demo12

rlabs Created by [r]labs.

discord Join our Discord server to find pre-built ROMs and user-created content!

Key features

  • Full .ssc files support, including:
    • Normal, hold and fake notes
    • BPM changes
    • Scroll speed changes
    • Stops/Delays and async-stops
    • Warps and fast-BPM warps
  • Multiple game modes:
    • Campaign: Play, unlock songs and defeat bosses
    • Arcade: Play songs in any numerical difficulty level
      • Single: 1 player, either Single (5-panel) or Double (10-panel) charts
      • Multi VS: VS battles via Link Cable
      • Multi Coop: Double (10-panel) charts via Link Cable
    • Impossible: Hardcore charts with insane mods
  • Speed multipliers can be changed in-game
  • Mods support:
    • Stage break
    • Pixelate: Mosaic effect
    • Jump/Reduce: Moves game area
    • Decolorize: Inverts/removes colors
    • Random speed
    • Mirror and random steps
    • Training mode: Rate and checkpoints
  • Hardware integrations:
    • Rumble
    • I/O LED Sync
    • SRAM LED Sync
  • BGA DARK background with blink effect
  • Song selector with names, backgrounds and sound previews
  • Optimized to support ~70 songs per ROM file.

How does it work?

A node.js script (the importer) converts a list of SSC/MP3/PNG files into binary files which the GBA can understand. For audio, it uses GSM audio files which are very small in size.

Charts are converted into a format created for this project called PIUS. Then everything is bundled in a GBFS file (a filesystem created by the GBA scene) and appended to the final ROM.

Read the wiki for more details!

How to a build a ROM

  • Install everything (read the section below).
  • Create in src/data/content/songs one folder per song, including:
    • one .mp3 file with the song
    • one .png file with the background
    • one .ssc file with the charts
  • Run:
make import
make assets
make restart ENV=production

Full guide:

Wiki: Building a ROM

Install

Windows

  • Choose a folder (from now, GBA_DIR), and use this file structure:
    • gba
      • tools
        • devkitPro
      • projects
        • piugba
  • Install the toolchain:
    • Dev
      • devkitPro&gcc 9.1.0: The devkit for compiling GBA roms. It comes with:
        • grit: Used to convert paletted bitmaps to C arrays or raw binary files
        • gbfs: Used to create a package with all the game assets
      • node.js 10: The JS runtime
      • make 3.81: The build automation tool
    • Media Processing
      • ImageMagick 7.0.10.3: The tool used to convert images to paletted bitmaps
      • ffmpeg (with libgsm) 3.3.3: The tool used to convert audio files to PCM
        • To avoid using the ffmpeg.exe binary included with ImageMagick, add it to PATH first!
        • Check this running where ffmpeg
      • pngfix: A small command line util to fix corrupted PNG files
    • Other
      • Git Bash: Linux shell and tools. It contains required commands like dd or md5sum
      • VSCode: The IDE
  • Install node dependencies:
cd scripts/importer
npm install
  • Add to ~/.bash_profile:
# set your ImageMagick install path here:
export PATH=$PATH:/c/Program\ Files/ImageMagick-7.0.10-Q16

export GBA_DIR="/c/Work/gba" # <<< CHANGE THIS PATH

export DEVKITPRO="$GBA_DIR/tools/devkitPro"
export PATH="$PATH:$GBA_DIR/tools/devkitPro/bin"
export PATH="$PATH:$GBA_DIR/tools/devkitPro/devkitARM/bin"
export PATH="$PATH:$GBA_DIR/tools/devkitPro/tools/bin"
  • You can check if the tools are installed correctly by running ./scripts/toolchain/check.sh

VSCode

  • Recommended plugins: C/C++ Extensions, EditorConfig, Prettier - Code formatter
  • Recommended settings: here

Actions

Commands

  • make clean: Cleans build artifacts
  • make assets: Compiles the needed assets in src/data/content/_compiled_sprites (required for compiling)
  • make build: Compiles and generates a .gba file without data
  • make import: Imports the songs from src/data/content/songs to a GBFS file
  • make package: Compiles and appends the GBFS file to the ROM
  • make start: Starts the compiled ROM
  • make rebuild: Recompiles (clean+build+package) a full ROM
  • make restart: Recompiles and starts the ROM
  • make reimport: Reimport the songs and starts the ROM without recompiling

Parameters

Name Values Description
MODE auto or manual When using auto, the import process tries to guess the missing data (e.g. difficulty levels). See Wiki: Autoimporting songs.
SORT level or dir When using level, the import process sorts the songs by level, in ascending order. See Wiki: Song order.
ENV development, or debug or production debug: everything is unlocked, backgrounds are disabled, and stage-break is OFF.
development: the same thing, but including backgrounds.
production: backgrounds, stage-break ON, and working locks.

Non-production versions also have a debug menu to correct songs' offsets. See Wiki: Correcting offsets.

If SELECT is pressed when a song starts, stage-break will be ON regardless of the environment.
ARCADE false or true Creates an arcade-only version of the game that only uses numeric levels, without the campaign modes.

Add this parameter to both import and build commands!
SONGS path to a directory Songs directory. Defaults to: src/data/content/songs

Scripts

Build sprites

# use #FF00FF as transparency color
grit *.bmp -ftc -pS -gB8 -gT ff00ff -O shared_palette.c

Build backgrounds

magick file.png -resize 240x160\! -colors 255 file.bmp
grit file.bmp -gt -gB8 -mRtf -mLs -ftb

Build music

ffmpeg -y -i file.mp3 -ac 1 -af 'aresample=18157' -strict unofficial -c:a gsm file.gsm
ffplay -ar 18157 file.gsm

Build filesystem

gbfs files.gbfs *.pius *.gsm *.bin
# pad rom.gba to a 256-byte boundary
cat rom.gba files.gbfs > rom.out.gba

Build gba-sprite-engine

rm -rf cmake-build-debug ; mkdir cmake-build-debug ; cd cmake-build-debug ; cmake ./../ -G "Unix Makefiles" ; make ; cp engine/libgba-sprite-engine.a ../../piugba/libs/libgba-sprite-engine/lib/libgba-sprite-engine.a ; cd ../

Troubleshooting

How to debug

  • In Makefile, replace -Ofast by -Og -g to include debug symbols in the .elf file
  • In mGBA, go to Tools -> Start GDB server...
  • Start debugging in VS Code

Undefined reference to function name

If you've added new folders, check if they're in Makefile's SRCDIRS list!

Open-source projects involved

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].