Okay, credit to this guide goes to Cinossu, from SWS2B, as well as Shadow Fire, for adding a bit of extra information, seeing as Cinossu forgot some information needed, as well as writing it up.

You need to have some ASM knowledge to do this. You will also need to have individually edited palette files from SonED 2. Make sure to have them labelled correctly.

*****GUIDE STARTS HERE*****

Make copies of "Pallet pointers.asm" and rename them to "Pallet pointers2.asm" and "Pallet pointers3.asm". Make sure they're all in the "_inc" folder. Now, it's time to edit them. Open "Pallet pointers2.asm".

Change:

Pal_GHZ, Pal_LZ, Pal_MZ, Pal_SLZ, Pal_SYZ, and Pal_LZWater

...into:

Pal_GHZ2, Pal_LZ2, Pal_MZ2, Pal_SLZ2, Pal_SYZ2, and Pal_LZWater2

Save and close. Open "Pallet pointers3.asm" and do the same edits, only replacing 2 with 3. Save and close. Now, we move onto editing the main ASM file, called "sonic1.asm".

Open "sonic1.asm" and run a search for "Pallet pointers" (without the quotes), and replace the following lines...

PalPointers:
; include=_inc\Pallet pointers.asm

...with...

PalPointers:
; include=_inc\Pallet pointers.asm

PalPointers2:

; include=_inc\Pallet pointers2.asm

PalPointers3:

; include=_inc\Pallet pointers3.asm

Now, just below that, you should see a routine labelled "Pallet data". Move down to where "Pal_GHZ"'s routine ends. (After incbin pallet\ghz.bin) Create a new line and add the following...

Pal_GHZ2: incbin pallet\ghz2.bin
Pal_GHZ3: incbin pallet\ghz3.bin

The next line will show "Pal_LZ". Copy that data twice and paste underneath, being sure to rename it accordingly. In the end, this is how it should read...

Note: "PalLoad#_Continue:" must be changed to whatever palette number you have pasted under. In this first case, it should be "PalLoad1_Continue". Do the same for the other PalLoad routines, only changing the PalLoad#_Continue numbers. If you did it right, you should see the following for all subroutines...

If that's all correct, save your ASM files and copy your new palette files into the "pallet" folder.

Now, you should be able to load dynamic palettes, but hold on, we're not done yet. I'm assuming you'd prefer to be able to edit the palettes in SonED2, depending on which zone's act you load. In this case, open up the following files in a text editor:

project\ghz2.sep
project\ghz3.sep

project\mz2.sep

project\mz3.sep

project\syz2.sep

project\syz3.sep

project\lz2.sep

project\lz3.sep

project\slz2.sep

project\slz3.sep

Click to expand...

Now, locate the following line in each file:

Code:

File&#58; ..\pallet\<zonename>.bin

where <zonename> references which zone the palette belongs to.

We are now going to make a minor change. After <zonename>, simply place "2" for all act 2 project files, and "3" for all act 3 project files. To show an example, here's the contents of my ghz2.sep file:

Pay no attention to "..\pallet\sonic2.bin", as in my hack, Sonic's palette is also loaded dynamically, and that isn't part of this guide. But see how under "Palette 2-" the file it loads is "..\pallet\ghz2.bin"? That's what your GHZ2.sep file should have. Yeah, I'm explaining myself again, but whatever. Modify a few palettes in GHZ2 as a test, and save the changes.

Then, build your ROM and test. If you run into errors, you obviously made a mistake and forgot to do something. However, assuming you followed the guide properly, you should have dynamic zone palettes. Congratulations. You ownz!