More actions
No edit summary |
No edit summary |
||
Line 4: | Line 4: | ||
|description=PIU (Pump It Up) emulator for the GBA. | |description=PIU (Pump It Up) emulator for the GBA. | ||
|author=[r]labs | |author=[r]labs | ||
|lastupdated=2023/ | |lastupdated=2023/12/31 | ||
|type=Music | |type=Music | ||
|version=1. | |version=1.7.1 | ||
|license=MIT | |license=MIT | ||
|download=https://github.com/afska/piugba/releases | |download=https://github.com/afska/piugba/releases | ||
Line 86: | Line 86: | ||
==Changelog== | ==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.*''' | '''v1.6.*''' | ||
* Graphical improvements: | * Graphical improvements: |
Revision as of 02:50, 7 Ocak 2024
piuGBA | |
---|---|
General | |
Author | [r]labs |
Type | Music |
Version | 1.7.1 |
License | MIT License |
Last Updated | 2023/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
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
- Song screen
- 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:
- Wireless Adapter support
- Wireless adapter support.
- 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:
- Hardware integrations
- 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
Credits
Open-source projects involved:
- wgroeneveld/gba-sprite-engine Dec 18, 2019.
- Forked at: rodri042/gba-sprite-engine.
- pinobatch/gsmplayer-gba Feb 9, 2020.
- rodri042/gba-link-connection.
External links
- GitHub - https://github.com/rodri042/piugba
- DIscord - https://discord.com/invite/JE33cc2