u/InsipidAxiom

🔥 Hot ▲ 436 r/PokemonRomhackDev+1 crossposts

Pokemon Iridium Mapping/Music Showcase: Exitium Ridge & Grandfather Tower

In light of the recent streamed music capabilities that I've worked to port to hg-engine, I've made a showcase of one of my favorite areas. This combines a ton of custom made tiles, vast depth + special rendering techniques (export groups, polygon optimizations), camera work, and most of all, the new NWAV music format which lets you play any music you want.

This music uses Yzana Plain from XC3, which fits with the vibes of Exitium Ridge. If you want to use NWAV music, you can use this setup guide that I wrote: https://docs.google.com/document/d/1IdQZpPWB6zYhsuO6rWfCQpmylZc2cRzcPtinmEeUHwY/edit?usp=drivesdk

At the time of this writing, I believe the implementation has also been ported to the pokeplatinum decomp by memory5ty7, but I have not used the platinum decomp myself, so I do not know how the setup works.

Anyway, enjoy!

-sauceyaTTa

u/InsipidAxiom — 1 day ago
🔥 Hot ▲ 372 r/PokemonRomhackDev+1 crossposts

Streamed Audio is Now Possible on NDS Hacks!

After a lot of effort, I have been able to port TheGameratorT's NWAV file format / audio streaming to HeartGold via hg-engine. This allows for ANY audio file to be played instead of using sequenced audio in the HGSS soundfont (which, in my opinion, doesn't sound very good and heavily limits custom audio edits).

Currently, the sound system can transition between the regular sseq -> nwav and nwav -> sseq audio really well. It can loop songs, it can play in-battle, in the overworld, or by script command on an NPC/tile trigger. I've tested on both desmume and MelonDS, so I am very hopeful it works on hardware.

How it works:

Typically, audio is stored as a sequenced file (think sheet music or midi), and is loaded into RAM when it needs to be played. Overworld songs are limited to about 14kb in order not to overflow the sound heap. In contrast, NWAV files are essentially full .wav files which are about 10,000-20,000kb. They are streamed in bits to the CPU to play the song (similar to like Spotify or other streaming services, via a buffer), instead of loading the whole thing into memory which obviously would not work.

My hg-engine code reads whether or not a queued up song is sseq or nwav, and if it is sseq it will return to the original vanilla sound functions. If it is nwav (checks through a hex bit in the file header), it will route through the streaming logic. There's a lot more technical details than this, but that's the general idea.

This video is just a demonstration of it actually working in-game using an orchestrated song "You Will Know Our Names - Finale" from Xenoblade Chronicles 3. I have set up Elm's lab to link to that nwav song, so it will play upon loading the area. As I've said before, you can do this for battles, but you will need to edit the music table in hg-engine.

Anyway, this opens up a LOT of opportunity for making good NDS hacks, and I will definitely be using this for Pokemon Iridium.

-sauceyaTTa

u/InsipidAxiom — 6 days ago