Previous Page

by JacintaB19 at 7:39 PM EDT on July 15, 2020
I'll need to find a good copy of Technic Beat, then for the re-rip, which will take forever.

I've just got all the music for the first game, but as you said, the .mus files have the jumbled pattern. I need help on getting all the tracks to sound right like in the game (and on it's soundtrack album) with all the right patterns for all tracks.

edited 10:23 PM EDT July 15, 2020
by almendaz at 2:04 AM EDT on July 16, 2020
We would need to study the .seq/.mex/.mrk, to combine them with the .vh/.vb and "mix" them into the descrambled .mus, in order to get music as in the (proper) OST. The .mus files only contain background music, while the .vb files contain the instrument samples as played in-game.
The music data should be in some .DAT files (according to .bms script), please upload it/these here, I do not believe you need to find a "good" copy if you have the game. The "null" files look like the .bms script got in trouble, or there was a file read error on your side. These failed-to-extract files seem indicative of missing (music) tracks.
by JacintaB19 at 8:44 AM EDT on July 16, 2020
.DAT files for the first game.

edited 8:46 AM EDT July 16, 2020
by almendaz at 2:02 AM EDT on July 17, 2020
Can you also upload "Technic Beat"'s .DAT files?
by JacintaB19 at 5:49 AM EDT on July 17, 2020
I can't upload Technic Beat's files yet, as i haven't done a complete re-rip.
by almendaz at 12:30 AM EDT on May 31, 2021
Hello.

I rerip Technic Beat's data using some .iso rip from the web. The .mus files are extracted using AnonRunzes's qbms script. I edited a few lines in this script in order to accept the game's ELF file as input.

So, we got the .mus files already, but they will not play right! Using useful info from permic(2)'s post, I figured some algorithm that hopefully could be implemented in vgmstream:


########################################################

codec = PCM16LE                ## input (Technictix, Technic Beat)
sample_rate = 24000            ## input (Technictix, Technic Beat)

channels = 2 ## default; or =4;    ## input, maybe from source data/executables
interleave = 0x17700            ## input, as above


## The .mus files are arranged such that playback is as follows:

## Let (block) be the nº of bytes of data separated by 0x200 (default 2-channel), encompassing all channels as audible by testing:
block := 0x2F000*(channels/2);

## Thus defined this block like this, it represents a portion of time (2.000.. seconds) in the music track.

## Let NN be the nº of these chunks:
NN := data_size / block;

## Let's index these blocks as 0, 1, 2, ... NN-2, NN-1.
## Then, if (NN is even), play order would be: 0, 2, 4, ..., (NN-2); (NN-1), NN-3, NN-5, ... 1;
## Otherwise, if (NN is odd), then play order would be: 0, 2, 4, ..., NN-3, (NN-1); (NN-2), NN-4, ... 1.


## The playback method would be something like this:


if (NN % 2 == 0) ## (NN is even)
{
NP1 = NN - 2;
NP2 = NN - 1;
}
else ## (NN is odd)
{
NP1 = NN - 1;
NP2 = NN - 2;
}


i = 0;
while ( i <= NP1 )
{
play [interleave] bytes from offset [i*block] & send to channel 1;
play [interleave] bytes from offset [i*block + interleave] & send to channel 2;

if (channels == 4)
{
    play [interleave] bytes from offset [i*block + block/2] & send to channel 3;
    play [interleave] bytes from offset [i*block + block/2 + interleave] & send to channel 4;
}

i += 2;
}


i = NP2;
while ( i >= 1 )
{
play [interleave] bytes from offset [i*block] & send to channel 1;
play [interleave] bytes from offset [i*block + interleave] & send to channel 2;

if (channels == 4)
{
    play [interleave] bytes from offset [i*block + block/2] & send to channel 3;
    play [interleave] bytes from offset [i*block + block/2 + interleave] & send to channel 4;
}

i -= 2;
}

########################################################

That way we would not have to configure many .txtp/.txth combinations for all the .mus files! Also, these files will not need to be rearranged/"descrambled" with this implementation.
by almendaz at 12:38 AM EDT on May 31, 2021
Sample files.
by Sakimotor at 9:33 AM EDT on August 14, 2022
The post above was really helpful, thank you almendaz !

I've made a simple Script in python that makes playable .WAV files based on your algorithm (which still isn't enough for a proper gamerip since it lacks the samples from the .VB files, we'd need to understand the .seq and .mrk files for that I guess ?)
by retrorocket at 1:19 AM EDT on August 14, 2026
Thanks to all of you, I was able to create a prototype script for converting TechnicBeat song data to WAV. Thank you very much. The song conversion requires mrk and seq files with underscores in their filenames, and TechnicBeat only has these in the arcade ISO.
Not all songs have been converted perfectly yet, so a few more tweaks are needed.

https://gist.github.com/retrorocket/a53000fa0283990b35c5c0e5b8c5c729

edited 1:20 AM EDT August 14, 2026

edited 1:21 AM EDT August 14, 2026
[edit] (18 hours left)

Previous 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