So, About OoT... by holyice7 at 4:48 PM EDT on May 26, 2009
Seems like it's been sitting there forever, unfinished. I'm itching to get some tags for it if someone's willing to take another look into the missing intros and tracks.
by Mouser X at 10:19 PM EDT on May 26, 2009
What are you talking about? Zelda: OoT has been tagged almost from the beginning. I know, since I tagged it. Unless you're refering to ugetab's rip? If you're talking about ugetab's rip, simply copy the tags from HCS's rip, and put them into ugetab's rip. It should be pretty good (though, for completeness' sake, it'd be a good idea to go over the track times for ugetab's rip).

Unless I'm missing somethine else entirely. If that's the case, please explain yourself. I don't know what you're talking about, because I know that Zelda: OoT has been tagged almost from the day it was ripped (though, it has received a few updates since then). Mouser X over and out.
by valiant at 10:47 PM EDT on May 26, 2009
The real problem is that ugetab's new OoT rips miss the attack noise at the beginning of the tracks. A few milliseconds are noticeable absent from them, whereas hcs's miniusfs start as they should. It's just like the Banjo-Tooie issue, but not as severe.
by holyice7 at 5:37 AM EDT on May 27, 2009
You're going to have to point me to the set(s) you mean. All the ones I find are still missing part of the credits, and one of the Kakariko village themes, as well as several song introductions.

Incidentally, I referred to the tagging of the set because I thought it looked rather preliminary and unpolished. No offense.

edited 5:38 AM EDT May 27, 2009
by Franpa at 9:04 AM EDT on May 27, 2009
http://hcs64.com/usf/sets/lozusf.zip
http://hcs64.com/usf/
by ugetab at 4:01 PM EDT on May 27, 2009
I was going to re-re-rip them, but I couldn't find a way to get the music to start at full volume, and I determined that even a perfect rip was going to sound wrong to me.

It's still a double-version-rip, flaws or no, and the notes I have on both games will still likely allow for a fairly complete rerip if I(or anyone else, just ask for a copy) ever have cause to try for one.
by holyice7 at 1:25 PM EDT on May 30, 2009
Well I hope someone takes up the challenge...seems like a game that should get the special attention.
by Lunar at 8:31 AM EDT on May 31, 2009
not worth the bother IMO. if accuracy is the absolute highest concern, there's an OST release. i think as it stands it's "good enough" though.
by ugetab at 1:48 PM EDT on May 31, 2009
If it was just about OoT, that would likely be the case. Since this affects sets with no OST/OSV release, I think it would be worth having fixed if it meant considerably better players for USFs.

The only reason I'm not pushing heavily to have this done is that there's only 1 or 2 people who can relatively easily provide the info, and they haven't yet said yes or no about it to my knowledge.
by Lunar at 5:22 PM EDT on May 31, 2009
yes obviously fixing every set is worth it. i mean there's not a lot of point obsessing over one set just because it's popular.
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


Go to Page 0

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