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 ?)

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