Pages: 1
Posted on 01-11-17, 08:57 pm (rev. 2 by  skawo on 01-11-17, 09:00 pm)


Karma: 19752
Posts: 896/1100
Since: 04-02-13
Most of the code that makes up sprite 125:
bool Class229_ExecuteState0(Class229* class) { 0x2185EBC(class); 0x209ADB0(class, 0); return 1; } void 0x2185F30(Class229* class, unk, unk1) { class->unk3FC = unk; int something = (0x2186634 + ((unk<<3) / 4) + 1); int somethingelse = *(0x2186634 + ((unk<<3) / 4)); class->unk3F4 = somethingelse; class->unk3F8 = something; class->unk400 = 1; } void 0x2185EBC(Class229* class); { if (!class->unk400) { u32* pointer = (((class->unk3F8 >>> 1) / 4) + class); if (class->unk3F8 & 1) { u32* pointer2 = *pointer; u32* pointer3 = (*pointer2 + *class->unk3F8); } else u32* pointer3 = *class->unk3F8; pointer3(); } else { Similar jump as above; } } bool Class229_LoadFiles(Class229* class) { return 1; } bool Class229_onDelete(Class229* class) { return 1; } void 0x21860F0(Class229* class) { return; } bool Class229_OnCreate(Class229* class) { class->direction = (class->spriteData >> 28) & 1; class->scale.x = 0x1000; class->scale.y = 0x1000; class->scale.z = 0x1000; class->unk40C = (class->spriteData << 4) >> 28; if (class->unk40C == 0) class->unk40C = 1; if (class->unk40C > 4) class->unk40C = 4; int TempUnk40D = ((class->spriteData << 8) >> 28) & 0xFF; if (TempUnk40D == 0) TempUnk40D = 1; if (TempUnk40D > 3) TempUnk40D = 3; class->unk40D = (TempUnk40D - 1) << (TempUnk40D - 1); if (class->EventIDField2 == class->EventIDField1) { if (!IsEventActivated(class->EventFieldID2) && !IsEventActivated(class->EventFieldIDw)) { class->unk404 = 0; 0x2185F30(class, 0, ActivatedEventsBitmask); *20CAC9C = -class->unk40D & *20CAC9C; } } else { class->unk404 = 3; 0x2185F30(class, 2, 3); *20CAC9C = -class->unk40D & *20CAC9C; } class->unk3B4 = 1; return 1; }

What does it do?
Well, uh... it sets some level params on event, it seems. No idea what those params do.
There are three nybbles it references: Nybble 5 which changes the field usually used by other sprites for direction, Nybble 6, which has range of 1-4 and Nybble 7, which has range of 1-3.

There's more code to tackle here, which I'll do later.
Posted on 01-22-17, 03:09 pm (rev. 12 by  skawo on 01-22-17, 05:32 pm)


Karma: 19752
Posts: 900/1100
Since: 04-02-13
Actor 2 is a dummied out debug menu.

Sadly, all that left of it is the OnDelete and LoadFiles; everything else is just a return;
Load Files seems to check which levels can be used and whether midway points have been acquired in them.

There's also some strings left of it:
KINOK, KINO2, KINO3, WORLD, SAVE, TITLE, ENDIN, GOVER, KEY, SOUND, ENTRY, ERROR, MGVS


Seems like it would let you go to different scenes from a menu.
They would load:

KINOK = World Map, from node 1 in World 1
KINO2 = World Map, on 1-1
KINO3 = World Map, on node 1 in World 2
WORLD = The also-unused early World Select: https://www.youtube.com/watch?v=0ndFUoSyIYk
SAVE = Scene 7*

TITLE = Title screen
ENDIN = Ending
CRSIN = The "World X-X" screen.
GOVER = Game Over screen.
KEY = Scene 17?
SOUND = Scene 10**
ENTRY = MvsL Opponent select screen
ERROR = File corrupted error screen
MGVS = Minigames screen

The code that switches the scene is there too, but not hooked to anything.

As such, the entirety of overlay 2 is unused.


Scene 7* seems also unused and seems to be an early save-handling menu that was also dummied out. It could have loaded a save, erased it, or returned to the Debug Menu. It DOES work, but the OnDraw has been dummied out.

The options on this screen were:
Load Save 1
Load Save 2
Load Save 3
Erase Data

Erasing Data seems to just corrupt it.

I redid the OnDraw, and there it is, undummied:


Scene 10** is a Sound Effect test. Left and Right scroll through the effects. A plays it.

I redid the OnDraw, and there it is, undummied:

Pages: 1