Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
The main server is currently down. We are running on a backup server, so editing and search functionality are temporarily disabled. Please check back in a few hours.
Revision as of 02:50, 7 January 2024 by HydeWing (talk | contribs)
piuGBA
General
Author[r]labs
TypeMusic
Version1.7.1
LicenseMIT License
Last Updated2023/12/31
Links
Download
Website
Source

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

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.

User guide

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 and guide of how to build a ROM.

You can also join the official Discord server to find pre-built ROMs and user-created content.

Screenshots

piugba3.gif piugba4.gif piugba5.gif

piugba6.gif piugba7.gif piugba8.gif

piugba9.gif piugba10.gif piugba11.gif

piugba12.gif piugba13.gif piugba14.gif

Media

piuGBA - Impossible Mode w/ Rumble (Rodrigo Alfonso)

Compatibility

Tested and works on mGBA, VBA-M, and NO$GBA.

Changelog

v1.7.*

  • New features:
    • Menu controls
    • Menus can now be navigated using two key layouts: GBA style (new), and PIU style
    • GBA style feels more natural, as it's how most GBA games work (navigate with arrows and confirm with A)
    • The default layout was changed to GBA style, but it can be changed using the Admin menu
    • Single-player Arcade mode
    • Double charts can now be selected directly using the level change buttons
    • Added AutoVelocity, under the Speed hacks mod (replaces Random speeds). AutoVelocity ignores the multiplier and sets a regular scroll BPM for all songs
    • Added Color filter mod (replaces Decolorize), with 16 different filters to alter game's background and sprites
    • Added Bounce mod, which makes the arrows (and/or its receptors) bounce
    • Added AutoMod mod, which randomly combines all mods every 1~4 beats
    • Modified LINEAR and MICRO variants of Jump/Reduce mods to move the game area rhythmically
    • Consecutive charts with the same numeric level now have a subindex to differentiate them
    • Enabled mods are now highlighted to easily identify which ones are in use
    • Added a warning to let users know when the current mods won't let them save their Dance Grades
    • Multiplayer Arcade mode
    • VS mode now makes the winner's life bar bounce during gameplay to enhance competitiveness
    • Now players don't have to set the difficulty level after each song; the game remembers
    • Impossible mode
    • It now uses the AutoMod/INSANE, +1 rate, and mirror steps mods
    • Admin menu
    • offsets
    • Added a menu to set up custom offsets for each song/level. This feature is useful if you're playing a non-tested song pack and encounter an out-of-sync song. Now, you can add +/- 8ms offsets, which will be recorded in the save file and applied when playing.
  • Engine fixes:
    • This build fixes ~32768 corner cases related to chart reading, increasing overall compatibility (specially with gimmick charts)
    • Added mid-note BPM changes support. This fixes a lot of out-of-sync charts
    • Important ASYNC_STOP (aka setting #SCROLLS to 0) rewrite. This fixes multiple bugs where ASYNC_STOPs caused the chart to end up completely out of sync, with a broken metronome, or with infinite holds
    • BPM changes and arrow predictions are now executed even if the chart has stopped
    • The importer now ensures that every HOLD_START will have a subsequent HOLD_END. Now most of the start events have their duration pre-assigned, so no chart should show broken holds again
    • Events inside WARP sections are no longer ignored by the importer, as they are important for gimmick charts. Instead, these are ignored during the judgement phase, to avoid unfair MISSes
    • Unsupported #SCROLLS segments are now emulated as regular speed changes. It doesn't have the same effect, but it works better than ignoring them. This fixes songs with a broken multiplier
    • MISSes are now judged by timing instead of by their Y coordinate. This is important when using low multiplier / speed values.
    • Using a lower FAST_BPM_WARP constant also fixed some songs
    • Fixed a corner case with fake segments events which caused some fake notes to appear as regular notes
    • Removed frame skip in chart reading code, which fixes some glitches in gimmick charts
    • Fixed a corner case where a Scroll BPM change could be ignored until the player manually adjusts the multiplier
    • Equivalent keys (like RIGHT and B for CENTER) now trigger new keypress events even when the other key is already pressed. This makes single-note trills easier
    • Precision of hold arrow judging was adjusted
    • The default scroll BPM change speed was adjusted (100 => 150) and a lower arrow speed limit was set (1px/frame)
  • Engine improvements:
    • Added co-op chart support: pump-couple and pump-routine
    • SSC parsing is now more robust, ignoring comments and finding charts using #NOTEDATA:; tags
    • Unsupported S, V and H events are now individually ignored instead of ignoring the whole chart
    • Unsupported negative #SPEEDS are now individually ignored instead of ignoring the whole chart
  • Optimizations:
    • Optimized IWRAM code, making everything faster and preventing slowdowns in complex charts
    • Reduced memory access and CPU usage during gameplay
    • Updated gba-link-connection to v6
    • Significantly reduced latency in multiplayer sessions (both wired and wireless)
    • Significantly reduced CPU consumption in multiplayer sessions
    • Reduced base ROM size by removing dead gba-sprite-engine code
    • Reduced final ROM size by optimizing space in the PIUS format
  • Misc. changes:
    • Pressing L and R in menus now lets the player change the option in any direction
    • You can now exit any menu using either START or SELECT
    • Finishing the game now takes user to the updated Home screen
    • Rumble is now disabled during fast-forward (Training Mode)
    • SUDDEN_DEATH was renamed to DEATH
    • The FAST Background blink mode was removed
    • The keys tutorial was moved from song 1 to song 0
    • Holding START before entering a multiplayer mode will now set the communication mode to Wireless Host
    • Wireless multiplayer will now use a slightly higher timeout value
    • Library autoscroll can now be used in multiplayer
    • Added save file validation code
  • Build process updates:
    • Support for double/multiplayer chart offsets, subindex, and delete keyword in offset.pofs files
    • The importer can now automatically add BOSS levels when creating Campaign builds
    • Fixed some errors with the parsing of chart vs global properties
    • Fixed an error that caused complexity to be zero if the charts didn't have a #LASTSECONDHINT
    • Using a Campaign build with an Arcade library will now show a proper error when running the ROM (instead of crashing)
    • Reusing romid.u32 while changing the song count will now throw a proper error instead of building an incorrect ROM file
    • Fixed make package silently failing when the output ROM file was in use
    • All errors thrown by the importer now have more details
  • Graphical improvements:
    • Song screen
      • Fake HOLD_FILL notes now look fake (dedicated sprite)
    • Home screen
      • Increased demo chart complexity when some of the campaign modes are completed
    • Multiplayer/Connecting screen
      • Added a 'transmitting' animated icon
    • Selection screen
      • DOUBLE mode now has its own color palette, to easily identify what type of charts we're seeing
      • Added 'transmitting' animated icons. On the host side, it will show two 'sending' icons over the lights. On the client side, a 'receiving' icon at the corner
    • Dance Grade screen
      • Updated winner message in VS multiplayer mode for clarity
  • Bugfixes:
    • Fixed a random DMA lockup on hardware
    • Fixed a glitch where changing the multiplier before the first SET_TEMPO event would cause the Scroll BPM to be set to 0, making initial arrows appear from nowhere
    • Fixed a glitch where correctly judged arrows would pass through receptors when using the Reduce mod
    • Fixed a glitch during transitions where the Selection screen could show garbage for one frame
    • Fixed a bug where I/O SD blink time was tied to the value of the -now deprecated- Background blink speed setting
    • Fixed a bug related to numeric level synchronization (again) in multiplayer sessions
    • Fixed a bug where SRAM LED blink/ON HIT was also blinking with other player's arrows
    • Fixed a bug where other player's WARPs were causing the local screen to blink using the pixel effect
    • Fixed a bug where multiplier changes were not synchronized correctly in multiplayer sessions
    • Fixed a bug where pixel blinks in level selection were not synchronized correctly during multiplayer sessions
    • Fixed a bug where using fast-forward in training mode would cause a subsequent multiplier change to be ignored
    • (v1.7.1) Fixed a bug in the importer which caused a few songs (with redundant #WARPS and #BPMS:...=1000000) to warp twice
    • (v1.7.1) Fixed a glitch where the life bar could blink at max level when returning from negative to positive value
    • (v1.7.1) Fixed a glitch where the controls screen was animating one of the center buttons at double speed
    • (v1.7.1) Adjusted the orientation of the R button sprite, which previously had its corner pointing to the left
    • (v1.7.1) Adjusted the contrast of the center idle sprite, which appeared too bright on some consoles compared to other sprites

v1.6.*

  • Graphical improvements:
    • Added black outline to sprites
    • Added bounce animation on note hit
    • Added a SLOW background blink mode
  • Bugfixes:
    • Decolorize mod now also mutates life bars
    • Fixed arrow holders blinking one frame late
    • (v1.6.1) Fixed small glitch where fake taps were displaying the wrong tile

v1.5.*

  • (v1.5.1) Fixed random crash in wireless multiplayer sessions due to audio DMA conflicts with serial IRQs
  • (v1.5.1) Fixed wireless multiplayer slowdowns by moving time-critical code to IWRAM
  • (v1.5.2) Fixed graphical glitch when the initial multiplier is set to 6x
  • (v1.5.3) Fixed invalid memory read that affects SRAM LED Blink, but might cause other crashes
  • (v1.5.3) Fixed vsync method (changed in v1.5.0) for better battery life

v1.5

  • New features:
  • Bugfixes:
    • Now multiplayer scores will always be in sync after a game (fixed Link Connection's packet loss).
    • Fixed errors where individual difficulty levels could get out of sync in multiplayer sessions.
    • Fixed glitch when confirming a song selection while crossing a page.
    • Fixed admin menu key combo handling

v1.4
New features:

SRAM LED Blink.

  • Arcade improvements:
    • Added Double charts support inside Single player mode.
    • Added mark as deffective option for broken charts.
    • Added Reduce Mod variant: MICRO.
    • Added save file reset options.

Impossible mode changes:

  • Removed decolorize.
  • Added reduce=micro.

Engine improvements:

  • Added fake notes support through the {1|v|1|0} SSC syntax.

Graphical improvements:

  • Improved screen transitions.
  • Now the selection screen background looks cleaner (less dithering below the lights)

Bugfixes:

  • Fixed random crash due to invalid read after winning a song
  • Fixed random crash due to a memory leak during screen transitions
  • Fixed metronome. It was sometimes blinking on weak beats
  • Now the random is more random
  • Now "random steps" is more humanly usable, since it tries to avoid repeated notes

Release notes.

Credits

Open-source projects involved:

External links

Advertising: