Next Page

Gamecube .HPS music by nifanatic at 7:55 PM EDT on September 5, 2009
Been trying to do some GCN/Smash Bros. Melee music editing, but I can't seem to nail .hps format. Would anyone happen to know how it's possible to convert, say, WAV files into working HPS files that can run in-game?
by TRG at 10:47 PM EDT on September 5, 2009
Oh, and a GC iso program that allows larger files to replace smaller files would be nice, like with Wii Scrubber. Otherwise the music possibilities are very limited.
by hcs at 11:33 PM EDT on September 5, 2009
I don't know of any existing tools for creating HPS, but it shouldn't be hard to make one. It'd require DSP format input, though, as with dkdsp or revb.
This does not mean that I'm working on such a thing.
by god at 7:18 PM EDT on September 7, 2009
Do you have written documentation on the HALPST format, hcs? I was able to get a cached version of the DSP information from a "wiki" off of the sourceforge page, but now everything with a url pointing to this wiki sends me to the sourceforge mainpage. Do you have the original documentation? I'm interested in trying to make a WAV -> HPS converter.
HPS (HALPST) format info by hcs at 9:11 PM EDT on September 7, 2009
I've still got a dump of the wiki, looks like I never put up anything interesting about HALPST.
vgmstream itself is probably the best documentation around, here's a rundown of what I see now:

(integers are big endian)
0x00-0x07: " HALPST\0" // magic
0x08-0x0B: sample rate
0x0C-0x0F: channel count

channel info (left channel 0x10-0x47, right channel 0x48-0x7F):
0x00-0x03: maximum block size (all channels)
0x04-0x07: 2? loop start? channel count?
0x08-0x0b: nibble count
0x0c-0x0f: 2? start nibble? channel count?
0x10-0x2f: DSP decode coefficients
0x30-0x31: 0? gain?
0x32-0x33: initial P/S
0x34-0x35: 0? initial hist1?
0x36-0x37: 0? initial hist2?

block structure (blocks start at 0x80):
0x00-0x03: block size (all channels)
0x04-0x07: last nibble in block to play?
0x08-0x0b: next block offset (looping implemented this way!)
0x0C-0x13: left channel decode state
0x14-0x1B: right channel decode state
0x1C-0x1F: 0? padding?
Then the left channel starts, and the right channel starts halfway through the block.

per block per channel initial decode state:
0x00-0x01: initial P/S
0x02-0x03: initial hist1?
0x04-0x05: initial hist2?
0x06-0x07: 0? gain? padding?

Oh, and I should note that nonlooping tracks are indicated by a 0xFFFFFFFF for the last "next block". Also mono HPSes are possible (and if you don't have a way of inserting larger files you might try this to save space), but I don't recall what game had them to check against this info.

edited 9:25 PM EDT September 7, 2009

edited 9:41 PM EDT September 7, 2009

So after looking at it for a little I've decided to go ahead and make a revb-type utility for this format. I'll post when it's done.

edited 10:03 PM EDT September 7, 2009
by god at 11:05 PM EDT on September 7, 2009
Thanks for all that info. It's pretty much what I gathered by looking through vgmstream. My issue is understanding the bitwise operations when decoding the blocks. :/
A revb, halpst style, would be absolutely great. I'd be very impressed..and grateful. Keep it up.
by bxaimc at 8:48 AM EDT on September 9, 2009
I still don't understand the hps spec.....it's a bit weird thanks to HAL...
anyway, here's my attempt at hps making by hand:
hpstest4.hps
edit: fixed nibble count

edited 9:09 AM EDT September 9, 2009
by nifanatic at 9:46 PM EDT on September 9, 2009
Good show, bxaimc... But the only unfortunate thing is, won't be able to test than in Melee due to how massive the size is. I can only replace themes that are of equal to less KB size as the song I'm wanting to replace. Nothing comes close to 10MB, last I checked. If you could find a way of shrinking... that'd be great.
by hcs at 10:02 PM EDT on September 9, 2009
Wouldn't work anyway, I'm almost certain the block size would make their driver throw a fit.
by bxaimc at 5:23 PM EDT on September 10, 2009
Yea, my file was only a test of the format. If you wanted it to work on melee, the block spliting is key.

Next Page
Go to Page 0 1 2

Search this thread

Show all threads

Reply to this thread:

User Name Tags:

bold: [b]bold[/b]
italics: [i]italics[/i]
emphasis: [em]emphasis[/em]
underline: [u]underline[/u]
small: [small]small[/small]
Link: [url=http://www.google.com]Link[/url]

[img=https://www.hcs64.com/images/mm1.png]
Password
Subject
Message

HCS Forum Index
Halley's Comet Software
forum source