View Single Post
Old April 11th, 2015 (3:57 PM). Edited April 12th, 2015 by Incineroar.
Incineroar's Avatar
Incineroar Incineroar is offline
the spirit of the fighter
  • Moderator
  • Platinum Tier
  • Developer
Join Date: May 2009
Location: Iki Town
Age: 22
Gender: Male
Nature: Brave
Posts: 13,614
Internal song list order. To hear these, place a breakpoint on 08001882 in No$GBA, then when it breaks, edit r1 to hear the following songs:

00 - mayan
01 - persian
02 - egypt
03 - volcano
04 - wake
05 - jaws
06 - coco
07 - bonus round
08 - evil crunch
09 - evil coco
0A - fake
0B - ntrance
0C - ntropy
0D - theme
0E - warproom
0F - drums
10 - cutscenes normal
11 - cutscenes spooky
12 - cutscenes //unused

==Anything further crashes the game==

Edit: There's a subroutine at 08023EFC, it seems to be called only when levels are loading. It also seems to control Aku Aku's state (0, 1, 2, or an unused 3 which renders you invincible at level start), as well as load level pallets, as well as a reference number to what level is currently being played. See below for more information on this.

==Ram Stuff==
When the subroutine at 08023EFC is called, it reads 02002740 for some level information. Playing with this number in accordance to the level table I posted earlier can allow you to sequence break the game by playing an easier level but have you beat a harder level (For example, select Island Intro, and when it breaks to 08023EFC, set 02002744 to 1C, then continue execution. You'll be playing Island Intro, but the game thinks you're playing on N. Tropy's level. Beat Island Intro, and the game will continue on as if you have just beat the game. It's quite fun to sequence break the game!). There's also a pointer at 0200275C that points to another pointer in the ROM. This other pointer is for the level pallet data. Editing this pointer in the rom will modify the pallet in the level and make it look weird af.

As well, from this research, it seems that Island Intro has some flag control tied to the crystal you can obtain in the level. If the purple crystal has not been obtained, you'll encounter a cutscene halfway through the level, just before the checkpoint, similar to when you first play the level. However, in doing the wrong-level sequence break, since the game thinks you're playing a different level, the crystal will be there, and will still play the Island Intro cutscenes.

Edit: On further analysis, it seems there's a loop that always jumps to 080214D4 whenever a level is loaded. It's around there somewhere, as it also seems to read the byte at 02002744. I think it loads the level header by taking the number of the level, in hex, and does a binary shift left twice on the register, then uses that absolute offset to get the pointer to the header for that particular level (Similar to how the pointer to text is obtained), but feel free to correct me.
Reply With Quote