Hi there
Really pleased with how open you are with feedback, and seeing as this may be the de-facto portable GBA emulator down in the future, I figured I might want to elaborate a bit on my.. wish list of stuff I'd really, really love to find in the game
So, without further ado, here I go
Color Correction
The older GBA models lacked back-lighting, hence why some games tended to overcompensate with altering their palettes to look far brighter than needed. As later models included back-lighting, some games disregarded this.
It would be lovely to have some custom palette correction options, kind of like with NES palettes.
SAPPY Sound Emulation Enhancements
GBA sound output is, bluntly put, often horrible. Sound gets processed through the CPU, and in most games it just tends to get the shorter end of the stick.
That aside, for games that do get the sound processed to the full potential of the hardware, the sound quality is full of crackling and noise, kind of like how sound gets distorted through phones.
While some games rely on chiptunes/GB sounds (Starfy 1, Castlevania HoD, Super Robot Taisen J), or the internal sound samples themselves have a very low bitrate to save ROM space (Lunar), ... in most cases, the sound samples found within the ROM are much higher quality than what gets output.
I often used this tool "GBA Music Ripper". It's a bit of a work-in-progress, and there are bugs at times (having to do with some instruments not being figured out, or in the case of both Golden Sun games not at all due to them using a different sappy format with reverb and stuff like that).
However, the sappy format is really widespread and almost universal in GBA games, and this tool takes the rom and rips all music, voice samples and sound effects, in sets of SoundFont files (.sf2) and midi files (midi). Using a tool like foobar to read the soundtrack, even Mother 3, often cited as a highlight of sound engineering in the GBA, pales compared to the ripped version which sounds like from a DS game. Zelda Minish Cap is a delight.
So, what I'm asking for is...
This reminded me a huge lot of 3D models rendering in shit resolutions... then emulators added upscale options to process the game's assembly instructions for graphic displaying (in our case it would be sound emulation) as normal, then recognizing specific calls to graphic hardware (here sound hardware, or just sappy sound engine assembly instructions), overriding them when it comes to end-user output to show a custom higher quality model/sound output done in real time.
Would this be possible here? I have the feeling this would be the biggest drawing point to this emulator if this ever materialized.
Debugger Suite
To help fan-translators and such folks.
Well, for starters we'd need some basic stuff, namely:
1/ Cheat support (we have already a really good base work, besides editing/deleting cheats it would also need external cheat files)
2/ Powerful cheat search engine (relative search with ability to set initial values, searching specific value, searching value equal to a given address, displaying values signed/unsigned/hex), and options for bigger/lower/equal... should be assigned to hotkeys in-game with HUD optionally displaying and telling how many results are there.
3/ Search for ranges of unused memory addresses throughout the game that never get written to aside from instructions blanking whole memory, could be running in the background as we play.
Useful for translators to find where to stuff their custom code.
4/ Save States, Rewinding, Frame Advance, Pause key, Reset key
With that out of the way:
1/ VRAM viewer (with ability to switch between various GBA modes)
2/ Map viewer (with ability to see what each square from each BG is from)
3/ OAM viewer (with info like rotation/palette/etc, palette viewer and exporter to same format as VBA, )
4/ Hex viewer/editor (divided by memory types ROM/VRAM/SRAM/...) and the ability to extract a specific range to an external file, pick a custom table (tbl) to change what each hex byte displays as as a letter/char in the right column (ascii, shift-jis, given by default, with option to get an external tbl file)
5/ you can drag to select a given area in either hex viewer or map/vram viewer, then
a: copy it to the clipboard (for VRAM: as a bitmap, for HEX: depending if it's the letter area or the hex area, as a string of characters/hex bytes selected in raw text)
b: paste with overwriting from the first byte onwards, byte number gets unchanged
c: track from ROM : meaning, relying on the rewind feature, tracking where this byte originated from in the ROM - either until a MOV instruction of a block of stuff from the rom, an LZ/Huffman compression scheme or just displaying the instruction that generated it the instant we reach a dead-end.
Figuring out where stuff is in the ROM is the bane of translators
d: watch value for RAM addresses. Like with SNES9X, it can show a tiny HUD with the value real time in-game. Could be useful too if available in the cheat engine
Of course, there's the debugger:
1/ Disassembler
2/ All Breakpoint options (on write, on read, on execute, run, break...) with keyboard shortcuts too
3/ A good status viewer of various hardware flags
4/ Tracer (just dumps all instructions executed between instants t1 and t2)
5/ Assembler (like with FCEUX)
Unemulated Stuff
* Various rumble features: GB Player Rumble, Drill Dozer variable Rumble, WarioWare Rumble...
could use smartphone rumble, joypad rumble, wiimote rumble, or alternatively just a colored HUD square (that turns orange, or shades of orange/yellow/red for Drill Dozer's variable speed rumble)
* Key mapping for gyro controls in Yoshi/WarioWare with various schemes - key inputs with four keys, wiimote emulation (better), wiimotion plus/gyroscopic smartphones (best). And maybe the screen could rotate too?
* Figurine stuff (LegendZ, among 4 other games, but it's really obscure)
Really pleased with how open you are with feedback, and seeing as this may be the de-facto portable GBA emulator down in the future, I figured I might want to elaborate a bit on my.. wish list of stuff I'd really, really love to find in the game
So, without further ado, here I go
Color Correction
The older GBA models lacked back-lighting, hence why some games tended to overcompensate with altering their palettes to look far brighter than needed. As later models included back-lighting, some games disregarded this.
It would be lovely to have some custom palette correction options, kind of like with NES palettes.
SAPPY Sound Emulation Enhancements
GBA sound output is, bluntly put, often horrible. Sound gets processed through the CPU, and in most games it just tends to get the shorter end of the stick.
That aside, for games that do get the sound processed to the full potential of the hardware, the sound quality is full of crackling and noise, kind of like how sound gets distorted through phones.
While some games rely on chiptunes/GB sounds (Starfy 1, Castlevania HoD, Super Robot Taisen J), or the internal sound samples themselves have a very low bitrate to save ROM space (Lunar), ... in most cases, the sound samples found within the ROM are much higher quality than what gets output.
I often used this tool "GBA Music Ripper". It's a bit of a work-in-progress, and there are bugs at times (having to do with some instruments not being figured out, or in the case of both Golden Sun games not at all due to them using a different sappy format with reverb and stuff like that).
However, the sappy format is really widespread and almost universal in GBA games, and this tool takes the rom and rips all music, voice samples and sound effects, in sets of SoundFont files (.sf2) and midi files (midi). Using a tool like foobar to read the soundtrack, even Mother 3, often cited as a highlight of sound engineering in the GBA, pales compared to the ripped version which sounds like from a DS game. Zelda Minish Cap is a delight.
So, what I'm asking for is...
This reminded me a huge lot of 3D models rendering in shit resolutions... then emulators added upscale options to process the game's assembly instructions for graphic displaying (in our case it would be sound emulation) as normal, then recognizing specific calls to graphic hardware (here sound hardware, or just sappy sound engine assembly instructions), overriding them when it comes to end-user output to show a custom higher quality model/sound output done in real time.
Would this be possible here? I have the feeling this would be the biggest drawing point to this emulator if this ever materialized.
Debugger Suite
To help fan-translators and such folks.
Well, for starters we'd need some basic stuff, namely:
1/ Cheat support (we have already a really good base work, besides editing/deleting cheats it would also need external cheat files)
2/ Powerful cheat search engine (relative search with ability to set initial values, searching specific value, searching value equal to a given address, displaying values signed/unsigned/hex), and options for bigger/lower/equal... should be assigned to hotkeys in-game with HUD optionally displaying and telling how many results are there.
3/ Search for ranges of unused memory addresses throughout the game that never get written to aside from instructions blanking whole memory, could be running in the background as we play.
Useful for translators to find where to stuff their custom code.
4/ Save States, Rewinding, Frame Advance, Pause key, Reset key
With that out of the way:
1/ VRAM viewer (with ability to switch between various GBA modes)
2/ Map viewer (with ability to see what each square from each BG is from)
3/ OAM viewer (with info like rotation/palette/etc, palette viewer and exporter to same format as VBA, )
4/ Hex viewer/editor (divided by memory types ROM/VRAM/SRAM/...) and the ability to extract a specific range to an external file, pick a custom table (tbl) to change what each hex byte displays as as a letter/char in the right column (ascii, shift-jis, given by default, with option to get an external tbl file)
5/ you can drag to select a given area in either hex viewer or map/vram viewer, then
a: copy it to the clipboard (for VRAM: as a bitmap, for HEX: depending if it's the letter area or the hex area, as a string of characters/hex bytes selected in raw text)
b: paste with overwriting from the first byte onwards, byte number gets unchanged
c: track from ROM : meaning, relying on the rewind feature, tracking where this byte originated from in the ROM - either until a MOV instruction of a block of stuff from the rom, an LZ/Huffman compression scheme or just displaying the instruction that generated it the instant we reach a dead-end.
Figuring out where stuff is in the ROM is the bane of translators
d: watch value for RAM addresses. Like with SNES9X, it can show a tiny HUD with the value real time in-game. Could be useful too if available in the cheat engine
Of course, there's the debugger:
1/ Disassembler
2/ All Breakpoint options (on write, on read, on execute, run, break...) with keyboard shortcuts too
3/ A good status viewer of various hardware flags
4/ Tracer (just dumps all instructions executed between instants t1 and t2)
5/ Assembler (like with FCEUX)
Unemulated Stuff
* Various rumble features: GB Player Rumble, Drill Dozer variable Rumble, WarioWare Rumble...
could use smartphone rumble, joypad rumble, wiimote rumble, or alternatively just a colored HUD square (that turns orange, or shades of orange/yellow/red for Drill Dozer's variable speed rumble)
* Key mapping for gyro controls in Yoshi/WarioWare with various schemes - key inputs with four keys, wiimote emulation (better), wiimotion plus/gyroscopic smartphones (best). And maybe the screen could rotate too?
* Figurine stuff (LegendZ, among 4 other games, but it's really obscure)