Previous Page

by arbingordon at 11:13 AM EDT on June 20, 2009
well, if I recall correctly, josh managed to add a function/script/something in the banjo tooie set to, in a hacky sort of way, force the music to play without delay (which, having gone through nearly all of the sets, I can say that is very very common to have a ~100ms delay, so whether it actually should be fixed or not I don't know), so he may be the person to ask if you'd like them to not have opening silence and such.
by ugetab at 3:57 PM EDT on June 20, 2009
I inspected the coding that he used in the newest set before. I could be wrong, but it looks like he may have built a lookup table of all the data he was using, and initialized the songs with this data, so that it was using a number reference to lookup the data, instead of just adjusting the channel data code or otherwise forcing it to use the specified channels and separately choosing the song to play back.
by Josh W at 7:27 PM EDT on June 20, 2009
INDEED SIR,
such code looked something like this:


extern const char qq[];
extern const unsigned long values[199][3];

#define NULL (0)
#define F0(x) (*((func0)(x)))
#define F1(x) (*((func1)(x)))
#define F2(x) (*((func2)(x)))
#define F3(x) (*((func3)(x)))
#define F4(x) (*((func4)(x)))
#define F5(x) (*((func5)(x)))
#define F6(x) (*((func6)(x)))
#define F7(x) (*((func7)(x)))
typedef int (*func0)(void);
typedef int (*func1)(int);
typedef int (*func2)(int,int);
typedef int (*func3)(int,int,int);
typedef int (*func4)(int,int,int,int);
typedef int (*func5)(int,int,int,int,int);
typedef int (*func6)(int,int,int,int,int,int);
typedef int (*func7)(int,int,int,int,int,int,int);


#define    osStartThread(a)                F1(0x8002E510)    ((int)(a))
#define    MusicFunction(a,b)                F2(0x8001713C)    ((int)(a),(int)(b))
#define    main()                            F0(0x80000450)    ()
#define    osCreateThread(a,b,c,d,e,f,g)    F7(0x8001DCB0)    ((int)(a),(int)(b),(int)(c),(int)(d),(int)(e),(int)(f),(int)(g))
#define    mainloop2()                        F0(0x80012030)    ()

#define PI_DRAM_ADDR_REG        (*(unsigned long*)0xA4600000)
#define PI_CART_ADDR_REG        (*(unsigned long*)0xA4600004)
#define PI_WR_LEN_REG            (*(unsigned long*)0xA460000C)

#define PATCH(x,y)                { *(int*)(x) = (y); }
#define JAL(x)        (0x0C000000|((((unsigned long)x) & 0x7fffff)/4))

int dmastuff();
int main2();
int mainloop();

// must be first function defined (in this file)
int _start()
{
    void * i = 0;

    for(i = (void*)0x800044E0; i < (void*)0x80008470; i+=4)
        *(int*)i = 0;

    PATCH(0x8000046C, 0);
    PATCH(0x8000048C, JAL(dmastuff));

    for(i = (void*)0x80000494; i < (void*)0x800004BC; i+=4)
        *(int*)i = 0;

    PATCH(0x800004BC, 0);
    PATCH(0x8001205C, 0);
PATCH(0x80000518, JAL(mainloop));

    main();
}

int dmastuff()
{
    PI_DRAM_ADDR_REG = 0x200000;
    PI_CART_ADDR_REG = 0x11e29b60;
    PI_WR_LEN_REG = 0x189f0;
    return 0;
}

char stack[4096];
static void (*alSeqpPlay)(void *) = (void*)0x80025F20;
static void (*LoadTrack)(int,int) = (void*)0x8001713C;
static void (*alSeqpSetVol)(void *,int) = (void*)0x80025ED0;
static void * seqp = (void *)0x8007a180;
static int * speed = (int *)0x8007A1A4;

static int track_index = 0;

volatile void chennels(long a, long b, long c)
{
    ((void*(*)())0x800178C4)(a,values[track_index][1],c);
}


volatile void playtrack(int index)
{
    int i = 0;
    track_index = index;

    LoadTrack(0, values[index][0]);

    alSeqpPlay(seqp);

    for(i=0;i<(95000);i++) ; //small delay

    if(values[index][2] != 0xffffffff)
        *speed = values[index][2];

    alSeqpSetVol(seqp, 0x7fff);
}

int main5()
{
    playtrack(0xa3);

    for(;;);
}

int main3()
{
    PATCH(0x800124FC, JAL(main5));
    PATCH(0x80017028, JAL(chennels));
    PATCH(0x8001704C, 0);

    osCreateThread(0x800775F0, stack, 1, 0x80013678, 0, 0x800775F0, 0);
    osStartThread(0x800775F0);
}

int mainloop()
{
    PATCH(0x80012064, JAL(main3));
    mainloop2();
}

const char qq[] = "<LOOKUP TABLE=>";
const unsigned long values[199][3]={
{0x32, 0x000063FF, 0x000007A1},
{0x32, 0x00001C00, 0x000007A1},
{0x32, 0x01FE0000, 0x000007A1},
{0x59, 0x000041FE, 0x000005D0},
{0x59, 0x00000601, 0x000005FB},
{0x59, 0x0000B000, 0x00000823},
{0x59, 0x0000E060, 0x00000823},
{0x58, 0x0000007F, 0x000005FB},
{0x58, 0x00000080, 0x000005FB},
{0x58, 0x00001F00, 0x000005FB},
{0x58, 0x0000E000, 0x000005FB},
{0x58, 0x00070000, 0x000005FB},
{0x58, 0x001C0000, 0x000005FB},
{0x58, 0x03000A00, 0x000005FB},
{0x58, 0x30800000, 0x000005FB},
{0x58, 0x00E00000, 0x000005FB},
{0x58, 0x0C040000, 0x000005FB},
{0x58, 0xE0000000, 0x000005FB},
{0x39, 0x000073FF, 0x00000516},
{0x39, 0x00000C00, 0x000005D0},
{0x39, 0xBE200000, 0x0000066C},
{0x39, 0x401F0000, 0x00000516},
{0x39, 0x41C00000, 0x00000516},
{0x3E, 0x000004FF, 0x000004B1},
{0x3E, 0x00000300, 0x0000061A},
{0x3E, 0x0000C090, 0x00000537},
{0x3E, 0x00113800, 0x0000061A},
{0x3E, 0x7C610000, 0x000006C8},
{0x3E, 0x07FF0000, 0x0000061A},
{0x3E, 0x07EF0000, 0x0000061A},
{0x40, 0x000000FF, 0x00000364},
{0x40, 0xFE080000, 0x00000364},
{0x40, 0x000060FF, 0x00000364},
{0x40, 0x30098050, 0x00000364},
{0x40, 0x01FF0000, 0x00000397},
{0x40, 0x013F0000, 0x00000397},
{0x40, 0x00001F00, 0x000003B2},
{0x40, 0x00000E00, 0x000003B2},
{0x45, 0x00000CFF, 0x0000061A},
{0x45, 0x00003000, 0x0000066C},
{0x45, 0x003F0000, 0x000006A2},
{0x4B, 0x000000FE, 0x0000058C},
{0x4B, 0x00001F00, 0x0000061A},
{0x4B, 0xFE010000, 0x0000061A},
{0x4B, 0x00070000, 0x0000061A},
{0x4B, 0x03F80000, 0x0000061A},
{0x4B, 0x00060000, 0x0000061A},
{0x52, 0x0000C1FF, 0x00000411},
{0x52, 0x00000600, 0x00000444},
{0x52, 0x007F0000, 0x00000444},
{0x52, 0x0000D000, 0x00000411},
{0x3F, 0x0000003F, 0x0000044C},
{0x3F, 0x00F00000, 0x000004B1},
{0x3F, 0x00001FD0, 0x00000474},
{0x3F, 0x000FE040, 0x000004B1},
{0x41, 0x00000FFF, 0x000005BF},
{0x41, 0x0FF90000, 0x000005BF},
{0x41, 0x00040000, 0x0000066C},
{0x41, 0xFD920000, 0x0000066C},
{0x41, 0x0002FE40, 0x0000066C},
{0x57, 0x000007FE, 0x000004E2},
{0x57, 0x00001800, 0x00000542},
{0x57, 0x1C080000, 0x00000542},
{0x57, 0x0000E001, 0x00000542},
{0x57, 0x003F0000, 0x00000542},
{0x57, 0x03C80000, 0x000004E2},
{0x75, 0x00000F00, 0x0000054E},
{0x75, 0x000080FE, 0x0000054E},
{0x01, 0xFFFFFFFF, 0xFFFFFFFF},
{0x02, 0xFFFFFFFF, 0xFFFFFFFF},
{0x03, 0xFFFFFFFF, 0xFFFFFFFF},
{0x04, 0xFFFFFFFF, 0xFFFFFFFF},
{0x05, 0xFFFFFFFF, 0xFFFFFFFF},
{0x06, 0xFFFFFFFF, 0xFFFFFFFF},
{0x07, 0xFFFFFFFF, 0xFFFFFFFF},
{0x08, 0xFFFFFFFF, 0xFFFFFFFF},
{0x09, 0xFFFFFFFF, 0xFFFFFFFF},
{0x0a, 0xFFFFFFFF, 0xFFFFFFFF},
{0x0b, 0xFFFFFFFF, 0xFFFFFFFF},
{0x0c, 0xFFFFFFFF, 0xFFFFFFFF},
{0x0d, 0xFFFFFFFF, 0xFFFFFFFF},
{0x0e, 0xFFFFFFFF, 0xFFFFFFFF},
{0x0f, 0xFFFFFFFF, 0xFFFFFFFF},
{0x10, 0xFFFFFFFF, 0xFFFFFFFF},
{0x11, 0xFFFFFFFF, 0xFFFFFFFF},
{0x12, 0xFFFFFFFF, 0xFFFFFFFF},
{0x14, 0xFFFFFFFF, 0xFFFFFFFF},
{0x15, 0xFFFFFFFF, 0xFFFFFFFF},
{0x16, 0xFFFFFFFF, 0xFFFFFFFF},
{0x17, 0xFFFFFFFF, 0xFFFFFFFF},
{0x18, 0xFFFFFFFF, 0xFFFFFFFF},
{0x19, 0xFFFFFFFF, 0xFFFFFFFF},
{0x1a, 0xFFFFFFFF, 0xFFFFFFFF},
{0x1b, 0xFFFFFFFF, 0xFFFFFFFF},
{0x1c, 0xFFFFFFFF, 0xFFFFFFFF},
{0x1d, 0xFFFFFFFF, 0xFFFFFFFF},
{0x1e, 0xFFFFFFFF, 0xFFFFFFFF},
{0x1f, 0xFFFFFFFF, 0xFFFFFFFF},
{0x20, 0xFFFFFFFF, 0xFFFFFFFF},
{0x24, 0xFFFFFFFF, 0xFFFFFFFF},
{0x2b, 0xFFFFFFFF, 0xFFFFFFFF},
{0x2e, 0xFFFFFFFF, 0xFFFFFFFF},
{0x2f, 0xFFFFFFFF, 0xFFFFFFFF},
{0x30, 0xFFFFFFFF, 0xFFFFFFFF},
{0x31, 0xFFFFFFFF, 0xFFFFFFFF},
{0x33, 0xFFFFFFFF, 0xFFFFFFFF},
{0x34, 0xFFFFFFFF, 0xFFFFFFFF},
{0x37, 0xFFFFFFFF, 0xFFFFFFFF},
{0x38, 0xFFFFFFFF, 0xFFFFFFFF},
{0x3a, 0xFFFFFFFF, 0xFFFFFFFF},
{0x3b, 0xFFFFFFFF, 0xFFFFFFFF},
{0x3d, 0xFFFFFFFF, 0xFFFFFFFF},
{0x42, 0xFFFFFFFF, 0xFFFFFFFF},
{0x43, 0xFFFFFFFF, 0xFFFFFFFF},
{0x44, 0xFFFFFFFF, 0xFFFFFFFF},
{0x46, 0xFFFFFFFF, 0xFFFFFFFF},
{0x47, 0xFFFFFFFF, 0xFFFFFFFF},
{0x48, 0xFFFFFFFF, 0xFFFFFFFF},
{0x49, 0xFFFFFFFF, 0xFFFFFFFF},
{0x4a, 0xFFFFFFFF, 0xFFFFFFFF},
{0x4c, 0xFFFFFFFF, 0xFFFFFFFF},
{0x4d, 0xFFFFFFFF, 0xFFFFFFFF},
{0x4e, 0xFFFFFFFF, 0xFFFFFFFF},
{0x4f, 0xFFFFFFFF, 0xFFFFFFFF},
{0x50, 0xFFFFFFFF, 0xFFFFFFFF},
{0x53, 0xFFFFFFFF, 0xFFFFFFFF},
{0x54, 0xFFFFFFFF, 0xFFFFFFFF},
{0x55, 0xFFFFFFFF, 0xFFFFFFFF},
{0x56, 0xFFFFFFFF, 0xFFFFFFFF},
{0x5a, 0xFFFFFFFF, 0xFFFFFFFF},
{0x5b, 0xFFFFFFFF, 0xFFFFFFFF},
{0x5c, 0xFFFFFFFF, 0xFFFFFFFF},
{0x5d, 0xFFFFFFFF, 0xFFFFFFFF},
{0x5e, 0xFFFFFFFF, 0xFFFFFFFF},
{0x5f, 0xFFFFFFFF, 0xFFFFFFFF},
{0x60, 0xFFFFFFFF, 0xFFFFFFFF},
{0x61, 0xFFFFFFFF, 0xFFFFFFFF},
{0x62, 0xFFFFFFFF, 0xFFFFFFFF},
{0x63, 0xFFFFFFFF, 0xFFFFFFFF},
{0x64, 0xFFFFFFFF, 0xFFFFFFFF},
{0x65, 0xFFFFFFFF, 0xFFFFFFFF},
{0x66, 0xFFFFFFFF, 0xFFFFFFFF},
{0x67, 0xFFFFFFFF, 0xFFFFFFFF},
{0x68, 0xFFFFFFFF, 0xFFFFFFFF},
{0x69, 0xFFFFFFFF, 0xFFFFFFFF},
{0x6a, 0xFFFFFFFF, 0xFFFFFFFF},
{0x6b, 0xFFFFFFFF, 0xFFFFFFFF},
{0x6c, 0xFFFFFFFF, 0xFFFFFFFF},
{0x6d, 0xFFFFFFFF, 0xFFFFFFFF},
{0x6e, 0xFFFFFFFF, 0xFFFFFFFF},
{0x6f, 0xFFFFFFFF, 0xFFFFFFFF},
{0x70, 0xFFFFFFFF, 0xFFFFFFFF},
{0x71, 0xFFFFFFFF, 0xFFFFFFFF},
{0x72, 0xFFFFFFFF, 0xFFFFFFFF},
{0x73, 0xFFFFFFFF, 0xFFFFFFFF},
{0x74, 0xFFFFFFFF, 0xFFFFFFFF},
{0x76, 0xFFFFFFFF, 0xFFFFFFFF},
{0x77, 0xFFFFFFFF, 0xFFFFFFFF},
{0x78, 0xFFFFFFFF, 0xFFFFFFFF},
{0x79, 0xFFFFFFFF, 0xFFFFFFFF},
{0x7a, 0xFFFFFFFF, 0xFFFFFFFF},
{0x7b, 0xFFFFFFFF, 0xFFFFFFFF},
{0x7c, 0xFFFFFFFF, 0xFFFFFFFF},
{0x7d, 0xFFFFFFFF, 0xFFFFFFFF},
{0x7e, 0xFFFFFFFF, 0xFFFFFFFF},
{0x7f, 0xFFFFFFFF, 0xFFFFFFFF},
{0x80, 0xFFFFFFFF, 0xFFFFFFFF},
{0x81, 0xFFFFFFFF, 0xFFFFFFFF},
{0x82, 0xFFFFFFFF, 0xFFFFFFFF},
{0x83, 0xFFFFFFFF, 0xFFFFFFFF},
{0x84, 0xFFFFFFFF, 0xFFFFFFFF},
{0x85, 0xFFFFFFFF, 0xFFFFFFFF},
{0x86, 0xFFFFFFFF, 0xFFFFFFFF},
{0x87, 0xFFFFFFFF, 0xFFFFFFFF},
{0x88, 0xFFFFFFFF, 0xFFFFFFFF},
{0x89, 0xFFFFFFFF, 0xFFFFFFFF},
{0x8a, 0xFFFFFFFF, 0xFFFFFFFF},
{0x8b, 0xFFFFFFFF, 0xFFFFFFFF},
{0x8c, 0xFFFFFFFF, 0xFFFFFFFF},
{0x8d, 0xFFFFFFFF, 0xFFFFFFFF},
{0x8e, 0xFFFFFFFF, 0xFFFFFFFF},
{0x8f, 0xFFFFFFFF, 0xFFFFFFFF},
{0x90, 0xFFFFFFFF, 0xFFFFFFFF},
{0x91, 0xFFFFFFFF, 0xFFFFFFFF},
{0x92, 0xFFFFFFFF, 0xFFFFFFFF},
{0x93, 0xFFFFFFFF, 0xFFFFFFFF},
{0x94, 0xFFFFFFFF, 0xFFFFFFFF},
{0x95, 0xFFFFFFFF, 0xFFFFFFFF},
{0x96, 0xFFFFFFFF, 0xFFFFFFFF},
{0x97, 0xFFFFFFFF, 0xFFFFFFFF},
{0x98, 0xFFFFFFFF, 0xFFFFFFFF},
{0x99, 0xFFFFFFFF, 0xFFFFFFFF},
{0x9a, 0xFFFFFFFF, 0xFFFFFFFF},
{0x9b, 0xFFFFFFFF, 0xFFFFFFFF},
{0x9c, 0xFFFFFFFF, 0xFFFFFFFF},
{0x9d, 0xFFFFFFFF, 0xFFFFFFFF},
{0x9e, 0xFFFFFFFF, 0xFFFFFFFF},
{0x9f, 0xFFFFFFFF, 0xFFFFFFFF},
{0xa0, 0xFFFFFFFF, 0xFFFFFFFF}};


by holyice7 at 1:24 PM EDT on June 29, 2009
So where does this get us?
by arbingordon at 5:12 PM EDT on June 29, 2009
it doesn't

Previous Page
Go to Page 0 1

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