Previous Page | Next Page

JaiSeq's name and functions by unknownfile at 9:36 PM EST on December 24, 2006
JaiSeq is officially known as JAudio.

A list of its functions can be found here.

From what it looks, it was written in C and C++ and assembled with GCC.

Stay tuned for more stuff.
by valiant at 8:00 AM EST on December 25, 2006
They didn't leave the source code for JaiSeqs in Pikmin, did they?
The obvious by unknownfile at 10:36 AM EST on December 25, 2006
no
Bad news by unknownfile at 11:51 PM EST on January 2, 2007
The jaudio library is used only in games that Nintendo EAD has had involvement in, with the possible exception being Pac-Man Vs., which was developed elsewhere in the Nintendo labs.

See the list here (courtesy Wikipedia).

As we don't know who compiled the US build of Pikmin, we cannot determine who has the library, and even asking them about it would result in no response.

We can, however, wait for a Gamecube emulator with sound and debugging features that works so that we can analyze the format from there. Who knows, we even might be able to make 3sf rips...
by valiant at 4:00 PM EST on January 13, 2007
I've seen in the DSP distribution thread that you're working on a BMS ripper for ARC files. So you just want to extract files from ARC archives?
thakis programmed some tools for GC files a whole while ago, among them an ARC archive dumper. If your ripper has a different purpose I apologise for the useless information. :-)

3sf? What's that an acronym for?
by unknownfile at 5:27 PM EST on January 26, 2007
Found this crap in Mario Kart Double Dash. This was compiled by Yoji Inagaki, who was one of the sound programmers for many games using the library. The syntax seems to derrive from C.

Comments written in Japanese have been removed

//***********************************************************
//            
//            Project:    GC KART
//            Author:        Yoji Inagaki
//            Date:        2003.5.8(THU)
//***********************************************************

#define baac 'b', 'a', 'a', 'c', long, long

#include"GCKart.def"

    begin_audio_arc

    bst, _BEGIN_BST, _END_BST

//    bstn, _BEGIN_BSTN, _END_BSTN

    ws, 0, NINTENDO_LOGO_MARIO_WS_START, 0xffffffff
    ws, 1, SE_WS_START, 0    //0xffffffff
    ws, 5, TANAKA_BGM_WS_START, 0    //0xffffffff

    bnk, 1, SE_BANK_START
    bnk, 0, NINTENDO_LOGO_MARIO_BANK_START
    bnk, 5, TANAKA_BGM_BANK_START

    bsft, _BEGIN_SFT

    bsc, _BEGIN_BSC, _END_BSC

    bms, JA_BGM_TITLE, _BEGIN_BMS_0001, _END_BMS_0001
    bms, JA_BGM_SELECT, _BEGIN_BMS_0002, _END_BMS_0002
    bms, JA_BGM_OPTION, _BEGIN_BMS_0003, _END_BMS_0003
    bms, JA_BGM_RECORD, _BEGIN_BMS_0004, _END_BMS_0004
    bms, JA_BGM_START_FANFARE, _BEGIN_BMS_0005, _END_BMS_0005
    bms, JA_BGM_START_FANFARE2, _BEGIN_BMS_0006, _END_BMS_0006
    bms, JA_BGM_START_FANFARE4, _BEGIN_BMS_0008, _END_BMS_0008
    bms, JA_BGM_START_FANFARE5, _BEGIN_BMS_0009, _END_BMS_0009
    bms, JA_BGM_START_FANFARE6, _BEGIN_BMS_0010, _END_BMS_0010
    bms, JA_BGM_STAR, _BEGIN_BMS_0011, _END_BMS_0011
    bms, JA_BGM_FINALLAP_FANFARE, _BEGIN_BMS_0012, _END_BMS_0012
    bms, JA_BGM_WANWAN, _BEGIN_BMS_0013, _END_BMS_0013

    baac, _BEGIN_BAAC, _END_BAAC

    end_audio_arc

_BEGIN_BST
#incbin "GCKart.bst"
_END_BST

//_BEGIN_BSTN
//#incbin "GCKart.bstn"
//_END_BSTN

_BEGIN_SFT
#incbin "GCKart.bsft"
_END_SFT

SE_BANK_START
#incbin"SE/Banks/se00.bnk"
#evencl
SE_BANK_END
SE_WS_START
#incbin"SE/Banks/se00.ws"
#evencl
SE_WS_END

TANAKA_BGM_BANK_START
#incbin"BGM/Tanaka/Banks/bgm.bnk"
#evencl
TANAKA_BGM_BANK_END
TANAKA_BGM_WS_START
#incbin"BGM/Tanaka/Banks/bgm.ws"
#evencl
TANAKA_BGM_WS_END

NINTENDO_LOGO_MARIO_BANK_START
#incbin"SE/Banks/NintendoLogoMario.bnk"
#evencl
NINTENDO_LOGO_MARIO_BANK_END
NINTENDO_LOGO_MARIO_WS_START
#incbin"SE/Banks/NintendoLogoMario.ws"
#evencl
NINTENDO_LOGO_MARIO_WS_END

_BEGIN_BSC
#incbin "SE/Seqs/GCKartSe.bsc"
_END_BSC

_BEGIN_BAAC
#incbin "SceneJPN.baac"
_END_BAAC

_BEGIN_BMS_0001
#incbin "Bms/0001.bms"
_END_BMS_0001

_BEGIN_BMS_0002
#incbin "Bms/0002.bms"
_END_BMS_0002

_BEGIN_BMS_0003
#incbin "Bms/0003.bms"
_END_BMS_0003

_BEGIN_BMS_0004
#incbin "Bms/0004.bms"
_END_BMS_0004

_BEGIN_BMS_0005
#incbin "Bms/0005.bms"
_END_BMS_0005

_BEGIN_BMS_0006
#incbin "Bms/0006.bms"
_END_BMS_0006

_BEGIN_BMS_0008
#incbin "Bms/0008.bms"
_END_BMS_0008

_BEGIN_BMS_0009
#incbin "Bms/0009.bms"
_END_BMS_0009

_BEGIN_BMS_0010
#incbin "Bms/0010.bms"
_END_BMS_0010

_BEGIN_BMS_0011
#incbin "Bms/0011.bms"
_END_BMS_0011

_BEGIN_BMS_0012
#incbin "Bms/0012.bms"
_END_BMS_0012

_BEGIN_BMS_0013
#incbin "Bms/0013.bms"
_END_BMS_0013
by unknownfile at 5:56 PM EST on January 26, 2007
Here's some converted audio I got from ye royale ModPlugTracker. AW seems to just be 8-bit signed PCM.

Forest_0 from Pikmin
wScene_1.aw from Mario Sunshine

Sorry for the static.
code by unknownfile at 12:46 AM EST on January 27, 2007
I have some code that rather crappily decodes the samplebanks.

Decoding is done thus:

outbin=*(long*)inbin - 128;
idx = (outbin)&0xf;
outbin=((outbin-16)+afccoef[idx][1]);
outbin=(outbin << 8)^0x8000; // convert to 16-bit signed pcm

Samples should be decoded at 18000 Hz

This uses some code from the AFC decoder, and I must admit that it works quite nicely, though not accurately.

...

What, you're still here?
Fine, take these wavs and leave me alone!
Wavs from Super Mario Sunshine and Luigi's Mansion
This is on megaupload as the ftp uploads here are slow and I am collapsing from drowsiness atm, so get it while its hot.
by unknownfile at 12:36 PM EST on January 27, 2007
Tweaked the code a bit, it is now easier to hear samples. The playback rate is a bit slow, but whatever.

Decoding is now done thus:

for (int i=0;i<2;i++) {
    outbin=*(long*)inbin + 128;
    idx = (outbin)&0xf;
delta = 1<<(((outbin)>>4)&0xf); // currently unused.
outbin=outbin^afccoef[idx][i];
    outbin=(outbin << 8)^0x8000;
// output the audio here...
}

and the samplerate is 36000 Hz.

The way decoding is done is pretty much the same as before, but at least it's easier to hear now.

I'm also doing analysis on the BMS format as well. Setting up the instruments seems to be done thus

SET_INSTRUMENT(long instrument,long offset)
C1 0000 00E2
by unknownfile at 9:00 PM EST on February 1, 2007
Here's another flowchart, outlining Super Mario Sunshine:



In theory, to get to the function that handles music, we could xref DVD-related functions until we land at the jaudio sequence subroutines.

Previous Page | Next Page
Go to Page 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

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