Banner
Views: 771,793,577
Time:
22 users online:  bebn legg,  Deakula, ForthRightMC, GabrielJohn, Green Jerry, Hiro-sofT, jona255,  KKevinM,  Lazy, Lucaogt46, Mad Lad, Matheus2653, MotaDaVarjota, placeholder02, placeholdertest, Poison, Romano338,  Tahixham, The Hacking Yoshi, thewhiskas27,  Thomas, zfleeman - Guests: 65 - Bots: 228Users: 40,541 (1,855 active)
Latest: ChippiHeppu
Tip: Before asking for help on the forums, make sure you've tried to figure out the problem on your own first.Not logged in.
Super Mario Advance 3 hacking
Forum Index - Non-SMW Hacking - Yoshi's Island Hacking - Super Mario Advance 3 hacking
Pages: « 1 2 3 4 5 6 7 8 9 »
Note: See adolif2's SNES-to-GBA level converter thread for more information relating to SMA3 hacking.

---

wxEVA: Yakov's SMA3 level name editor

---

---

Anyway, I decided to create a topic for Super Mario Advance 3 hacking, to avoid crowding the SMW2 Offsets thread with information irrelevant to hacking the SNES version.

(It should also prevent those topics of "Why can't I hack the GBA version?" that appear every so often.)

I'll be updating this post with anything I find.

By the way, I'm pretty sure I'm using "Super Mario Advance 3 - Yoshi's Island (U) [!].gba". Just in case there are multiple versions...

---

Newest version of SNES/GBA info document:

YI info for editor.rtf (updated 2010-4-7)

This document contains information towards making a SNES/GBA editor, but it may also be useful in general.

---

---

x1C1D54-x1EEE8B: Level data

x1C1D54: Level 38 (data looks entirely different from the other levels)
x1C1DA4: Level 39
x1C1F29: Level 0
x1C2265: Level 3A
x1C2320: Level 38 sprite data (blank)
x1C2324: Level 39 sprite data
x1C2354: Level 0 sprite data
x1C2434: Level 3A sprite data
x1C245C: Level 1
x1C264E: Level 3B
x1C2D70: Level 1 sprite data
x1C2E18: Level 3B sprite data
x1C2F00: Level 2
...
...
x1EED08: Level F5 sprite data
x1EED90: Level 36
x1EEDEF: Level 37
x1EEE5C: Level 36 sprite data
x1EEE70: Level 37 sprite data

The first 10 bytes of level data are the header. The sprite set now takes up 8 bits; as a result, some bits in the header have been shifted slightly from the SNES version.

If the SMW2 headers are:
BBBB BTTT TPPP PPII III2 2222 2333 333e eeee eSSS SSSS pppp OOOO Oxtt tEEE EEEE 2233 4mmm mMMx xxxx

Then the SMA3 headers are:
BBBB BTTT TPPP PPII III2 2222 2333 333e eeee eSSS SSSS Sxpp ppOO OOOx tttE EEEE EE22 334m mmmM Mxxx

Notes:
As the first bit of Eggvine's "music" value affects layer 3, not music, I labeled it "4" instead of "m".
Similarly, I only labeled the Midring bits that actually affect the Middle Rings, the rest being labeled "x".
"2" and "3" each refer to two different values, but it should be self-explanatory which is which if you're familiar with the SNES version's level headers.

I also decoded the headers for levels DE-F5, for reference:
SMA3 Level Headers (RTF file) (updated 2010-4-10)


Sprites are 4 bytes each; the first 3 bytes are the same as in the SNES; the 4th byte is always 00.

Objects are stored in the same manner as the SNES version.


Sprite data ends with FF FF FF FF. (Level 38's sprite data is only the FF FF FF FF.)

Object data appears to end with just FF.


Screen exits are stored in the same manner as the SNES version; however, they are 7 bytes each instead of 5. The two additional bytes are the same as those of the level entrances (see below).

---

Objects/sprites that are different from the SNES version:
- The SNES version's S1D6 (Lock Horizontal Scroll) is now S1E0.
- The "Green Red Coins" (82, 83, 84, and X17) are normal red coins in the GBA version.

---

x1EF1A4-x1EF57B: Pointers to level data (4 bytes each)
x1EF57C-x1EF953: Pointers to sprite data (4 bytes each)

Going by the number of pointers, the highest-numbered level is F5.

---

About pointers (this applies to all pointers as far as I know):

Pointers are 4 bytes each, e.g. 29 1F 1C 08.

The first 3 bytes are the offset (bytes are in reverse order, so 29 1F 1C points to x1C1F29).
The 4th byte is always 08.

Note: The 4th byte is 09 if the offset is x1000000 or higher (the GBA ROM size limit is 32MiB, or x2000000). Considering that SMA3 is 0x400000 bytes, though, I find it unlikely that the ROM will need to be expanded to that size.

---

x1EEE8C-x1EEFFF: Level entrances (6 bytes each)

If the pointers are unmodified, the order is:
1-1 to 1-8, 1-Extra, 2-1 to 2-8, 2-Extra, 3-1 ... 6-8, 6-Extra, level 38, Welcome, 1-Secret, 2-Secret ... 6-Secret

1st 4 bytes are the same as SMW2: level #, X position, Y position, icon to unlock

5th byte: unknown, but relates to the camera

6th byte: Scrolling settings
Originally posted by Yoshis Fan
00---> Free scrolling
01---> Locks horizontal scrolling
02---> Locks vertical scrolling
03---> Locks scrolling
04---> Locks downwards scrolling
05---> Locks sidewards and downwards scrolling

Values 04 and 05 set the camera position higher related to other values if the 6th byte determines the camera's Y-position.

SMA3 Level Entrances.txt
I've copied all of the level entrances into a .txt file for convenience.

---

x1EF08C-x1EF1A3: Pointers to level entrances (4 bytes each)
1-1 to 1-8, 1-Secret, 1-Extra, level 38, Welcome, 2-1 to 2-8, 2-Secret, 2-Extra, (8 bytes of 00s), 3-1 to 3-8, 3-Secret, 3-Extra, (8 bytes of 00s), ... 6-8, 6-Secret, 6-Extra

---

x164184-x1643BB: Midway entrances (4 bytes each)

As far as I can tell, these are stored in exactly the same way as SMW2.
Level #, X position, Y position, entrance type (I assume the 4th byte is still entrance type-- it's always 00 in the original.)

New midway entrances are in
DE, F3,
E0, E1, E2,
E3, E4, E5, E6,
E7, E8, E9, EA,
EB, EC,
EF, EF, F0, F2.
(Double EF is explained in-game if you've ever died in Secret 6's spike shaft. And I doubt anyone who has played Secret 6 has not died in Secret 6's spike shaft.)

---

x1643BC-x1644D3: Pointers to midway entrances (4 bytes each)
1-1 to 1-8, 1-Secret, 1-Extra, level 38, Welcome, 2-1 to 2-8, 2-Secret, 2-Extra, (8 bytes of 00s), 3-1 to 3-8, 3-Secret, 3-Extra, (8 bytes of 00s), ... 6-8, 6-Secret, 6-Extra

As the midway entrance pointers can point anywhere in the ROM, it is possible for every level to have a full 4 midway entrances...

---

Text:

x2F215C-x2F5E11: Messages - Includes goal minigames, Bandit minigames, Welcome message, automated messages, message blocks, Kamek messages, and ending messages (in this order)

x2F90AC-x2F9880: Level names

x16B0EC-x16B745: Pre-title-screen text

x1994C0-x1995DE: File select screen text

x16CEE8-x16D47D: Credits

Text can be edited using the same table files as SMW2.

---

x2F5E18-x2F6297: Pointers to message blocks (4 bytes per pointer, 16 bytes per map icon)
1-1 to 1-8, 1-Secret, 1-Extra, 1-Bonus, Welcome, 2-1 to 2-8, 2-Secret, 2-Extra, 2-Bonus, (16 bytes of 00s), 3-1 ... 6-8, 6-Secret, 6-Extra

Some of the Secret and Extra levels' pointers point to the various boss battle messages; I'm not sure if these are the actual pointers used in the boss battles or not.

---

x2F629C-x2F62CB: Pointers to Bandit minigame messages (with some duplicates)

I wonder if these pointers are for the minigame huts, the LLBAR minigames, or both...

---

---

Level list:

0-DD: These appear to be the same as SMW2.

DE: 1-Secret Entrance
DF: 1-Secret 2nd Area
E0: 2-Secret Entrance
E1: 2-Secret 2nd Area
E2: 2-Secret 3rd Area
E3: 3-Secret Entrance
E4: 3-Secret 2nd Area
E5: 3-Secret 3rd Area
E6: 3-Secret 4th Area
E7: 4-Secret Entrance
E8: 4-Secret 2nd Area
E9: 4-Secret 3rd Area
EA: 4-Secret 4th Area
EB: 5-Secret Jungle Areas
EC: 5-Secret Castle Areas
ED: 5-Secret Snowy Areas
EE: 6-Secret Entrance
EF: 6-Secret Castle Area
F0: 6-Secret Main Cave Area
F1: 6-Secret Super Star Cave
F2: 6-Secret Dark Forest with Welcome music
F3: 1-Secret 3rd Area
F4: 2-Secret Outside Area with goal
F5: 6-Secret Final Area

(See this post for more about the Bandit minigames.)
F6: Minigame: Throwing Balloons (1up)
F7: Minigame: Throwing Balloons (2up)
F8: Minigame: Throwing Balloons (3up)
F9: Minigame: (freeze)
FA: Minigame: Gather Coins
FB: Minigame: Popping Balloons
FC: Minigame: Popping Balloons
FD: Minigame: (freeze)
FE: Minigame: (freeze)
FF: Minigame: Seed-Spitting

I have no idea how 1-8's new room fits into this. (It's probably part of an existing sewer-tileset level.)

---

---

So this is what I've found so far.

It appears the GBA version is almost a direct port of the original.

(By the way, there's already something I like about hacking the GBA version-- the pointers are much simpler!)

–=–=–=–=–=–=–
Alyssa's Unlikely Trap - Zeldara's Glitch City
Very nice finds!

Originally posted by Zeldara109
I have no idea how 1-8's new room fits into this.


It's possible that they could've attached the extra room to an existing level index. I still don't understand why that extra room was necessary for the port. o_O

I've noticed a few other oddities SMA3 had over the original YI. There was one new autoscroll, the spongy, expandable platform had a translucent white variant in Secret 6, and the Welcome music was used outside of the original level. Also, in several levels, objects were moved around. I suppose it was to accommodate for the smaller screen of the GBA.
Originally posted by Jacob
It's possible that they could've attached the extra room to an existing level index. I still don't understand why that extra room was necessary for the port. o_O

I don't understand either... Maybe a glitch was discovered when there is a Shy-Guy-generating pipe near the water-spitting fish and/or the ghost platform?

Do you know if there are any other new rooms besides the 6 Secret levels and that one in 1-8?


Originally posted by Jacob
I've noticed a few other oddities SMA3 had over the original YI. There was one new autoscroll, the spongy, expandable platform had a translucent white variant in Secret 6, and the Welcome music was used outside of the original level. Also, in several levels, objects were moved around. I suppose it was to accommodate for the smaller screen of the GBA.

Is the new autoscroll the one in Secret 6 or the one in Secret 4?

The translucent white platform could be a special effect of some kind.

As for the Welcome music, the programmers probably did something similar to what Mattrizzle did. (If I know which level that was, I would check the header. I suppose I should find out exactly which level numbers the secret levels are...)

–=–=–=–=–=–=–
Alyssa's Unlikely Trap - Zeldara's Glitch City
Oh yes, there were two new autoscrolls total: one in Secret 4 and one in Secret 6.

As for new rooms...nope, none other that I saw besides the additional Secret levels.

Incidentally, the GBA port had a few bug fixes from the original:

1. It's now possible to land on a flower on the goal roulette in Extra 1. In the original YI, it was made impossible so that the BONUS CHALLENGE logo would not glitch up Poochy's graphics. In the GBA version, it's possible to land on the flower. Poochy now just runs off-screen as soon as Yoshi goes through the goal.
2. The glitched falling blocks bug from 2-1 is fixed. They just placed a blocker after the falling block area, that way the player can't re-access it once coming back from the bonus area.
3. The issue where you teleport to the skies of 1-1 when hugging the left wall of the shaft before the bonus area of 4-7 is fixed.

Oh...and there appears to be another unused sprite in the remake other than the red bullet shooter. In levels 4-3 and Secret 4, there are stationary Baron Von Zeppelins (the balloons). There is the single balloon sprite in YI, however, it floats away instantly instead of staying anchored like in SMA3.

Also, in Secret 4, Bullet Bill Shooters appeared on top of moving vertical platforms. This was not possible in the original YI.
I do not believe these are important enough to include in the first post, so I'm posting them here:

SMA3 level headers

DE x1C6724: C7 9F AD D3 14 03 00 00 01 40
DF x1C6A9E: C7 D7 AD D3 14 0A 00 00 01 48
E0 x1CE47C: A3 5F 20 30 8C 10 16 6A 40 40
E1 x1CEB4F: A3 5F 20 30 8C 18 16 6A 40 48
E2 x1CEF16: 03 5C C3 04 04 20 16 38 C8 50
E3 x1D4AB4: D1 08 41 02 14 28 84 08 02 20
E4 x1D4CB7: A1 08 41 02 14 30 04 08 02 28
E5 x1D4FAF: 03 A9 D7 46 E4 38 00 7B 7B 50
E6 x1D568F: E0 D2 16 53 0C 40 00 00 01 58
E7 x1DCB30: C9 8F 50 53 0C 48 00 00 01 40
E8 x1DCE28: E4 46 69 DB 6C 50 1E 10 0D 48
E9 x1DD352: C0 32 69 80 04 58 1E 11 4D 50
EA x1DD4D9: D1 8E AA D7 14 60 00 00 01 58
EB x1E4CD0: AB 9E 54 5D 0C 68 16 00 26 20
EC x1E507A: AB 66 8A 00 64 70 16 00 80 48
ED x1E55BD: DA 13 4A B4 94 7A 40 50 2A 30
EE x1ED058: 98 87 D1 D4 C4 80 0A 18 14 00
EF x1ED145: 03 6A 97 DB 5C 88 00 38 0C 48
F0 x1ED77D: B4 44 10 AA 6C 90 1E 64 CC 90
F1 x1EDBE7: C4 00 10 18 64 98 0A 04 FE 98
F2 x1EE1D7: 00 87 D1 84 04 A0 C0 00 00 20
F3 x1C6D62: C7 D7 AD D3 14 02 00 00 01 50
F4 x1CF31F: EB 5F 20 30 88 C0 16 6A 40 58
F5 x1EE595: EE 27 4A B6 9C AA 8A 58 0C 10

I'm currently decoding them.

---

Edit:

SMA3 Level Headers (RTF file) (there was a link here to an older version of this document; the newest version can be found in the first post)

(This was based on the existing level header file.)

I see the programmers did not feel like searching through existing sprite sets for their needs, so they just created 21 more. :-)


Level F2 (the "dark forest" area of 6-Secret, which uses the welcome music) is interesting...

The music setting is 1 (jungle).

Also, the Middle Ring setting is 0, even though this room contains Middle Ring #3...

---

Edit 2:

Does anyone have any ideas about the purpose of the 2 additional bytes in each level entrance?

I copied the hex data into a .txt file for convenience.

SMA3 Level Entrances

Edit 3: I have a feeling that the last 2 bytes are a single number... When byte 6 is 00, byte 5 is always in the range 26-2C.

–=–=–=–=–=–=–
Alyssa's Unlikely Trap - Zeldara's Glitch City
Impressive finds! =D
As far as I know the object format is the same like in the "old" Yoshi's Island, right? I found LVL 0 by searching the primary object of it; EB 69 A4 00 09.
And to your F2: That's probably a special-determined level, like the Ski-Mode levels in the SNES version and the thing, that Yoshi looks to the left in 1-5; 2-7 and 5-7.
BTW: With the object- and sprite-data pointers you found out it'd be possible to make a EggVine-like SMA3 Yoshi's Island level editor. But I guess no one is interested in coding one so far =(

--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Oh wow! I've always wanted to be able to hack the GBA version of YI! Awesome finds there, Zeldara!

Also, perhaps a modification could be made to Eggvine to allow the ability to edit the GBA version?Free counters!
We probably would need the source code of EggVine to do this, as I don't think it can be done by a few Hex-Edits.

--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Originally posted by Yoshis Fan
We probably would need the source code of EggVine to do this, as I don't think it can be done by a few Hex-Edits.


Depending on the way Eggvine is structured, it may be possible...

If it is possible, this is exactly what would need to be changed (as far as I know)...


Original SNES (for comparison):

- Sprites are 3 bytes each

- Pointer to level header and object data: xBF9C3 + 6 * (level number)
- Pointer to sprite data: add 0x3 to the object data
   - Alternately, xBF9C6 + 6 * (level number)
- Pointers have a strange method of interpretation (C7 81 16 means xB03C7)

- Level header: sprite set is 7 bits, sprite palette is 4 bits, Midring value contains the last 7 bits


GBA:

- Sprites are 4 bytes each (ignore the 4th byte)

- Pointer to level header and object data: x1EF1A4 + 4 * (level number)
- Pointer to sprite data: add 0x3D8 to the object data
   - Alternately, x1EF57C + 4 * (level number)
- Pointers are just a direct reversal of bytes (29 1F 1C means x1C1F29)

- Level header: sprite set is 8 bits, sprite palette can be interpreted as 5 bits, Midring value would only contain the last 5 bits
   - And, if this is relevant, all values after sprite palette are shifted two bits to the right
   - If it is possible to edit this, it would also be a good idea to transfer the first bit of "Music" to be part of Layer 3 position, for both the SNES and GBA versions

- Also, sprite data ends with 4 FFs on the GBA, as opposed to 2 FFs on the SNES, but 4 FFs contain 2 FFs, so that shouldn't be a problem.


Also, it would be helpful if the new version of Eggvine recognizes the .gba extension (and not the .smc extension), so you do not need to manually enter the ROM title when loading.


Changing it so Eggvine loads sprites every 4 bytes would be the most important, since as you can see here, the offsets could be entered manually. Also, the headers can be hex-edited without too much annoyance (rendering levels is most important)...

–=–=–=–=–=–=–
Alyssa's Unlikely Trap - Zeldara's Glitch City

I think we should start a fresh editor for this game.


Last updated December 4, 2017. What, you expected something new?

My Website
Originally posted by Yakov
I think we should start a fresh editor for this game.

I think someone should make a new editor that doesn't crash like Eggvine does (and has entrance/midring/text editors built in), and make it compatible with both versions since they're nearly the same anyway.

However, as Eggvine already exists, I think I would prefer using it for the time being, if possible, as opposed to waiting for someone to make a new editor.

(Though if someone here decides to start a new editor, I'd like to help out-- though I have no experience with making user interfaces or anything like that.)

–=–=–=–=–=–=–
Alyssa's Unlikely Trap - Zeldara's Glitch City
Well, I managed to change some of the header settings of the Welcome level:



I rather like the new FG Palette #w{=P}Free counters!
That looks very neat, Jeorge!
But unless there isn't a proper level-editor, there probably won't be any SMA3 hack, as Hex-Editing the entire ROM is very time-consuming and much more complicated than editing it with an editor (like EggVine). :(

--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Thanks, Yoshis Fan!

More:

1-1



^ Turns out the unused background in the SNES version was also put in the GBA one, too.



^ Area also now has castle music.

1-2



^ FG shines here, and level has castle music. I also used the header settings from 6-7/First room of 6-Secret.



Also, how would we easily find level data for further levels other than the ones Zeldara specified?

Free counters!
By looking up the pointers.
x1EF1A4-x1EF57B: Pointers to level data (4 bytes each)
x1EF57C-x1EF953: Pointers to sprite data (4 bytes each)
Those have been found out by Zeldara109 and they are much easier to "decode" as the ones from the SNES version. The Offset is the first byte of the pointer swapped with the third. The fourth byte of those pointers have no function and can be ignored!

--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Thanks, Yoshis Fan!

I quite like editing the headers. I hope we'll have a proper editor developed soon, though.Free counters!
Originally posted by Yoshis Fan
The fourth byte of those pointers have no function and can be ignored!

The fourth byte does have a function (I listed it in the pointer section), but it certainly can be ignored, as it is irrelevant unless the ROM is more than 0x1000000 bytes (SMA3 is 0x400000).


Originally posted by Jeorge535
I quite like editing the headers. I hope we'll have a proper editor developed soon, though.

If you make a version with every header edited (well, maybe not for some boss rooms), can you release an IPS patch? It would be nice to play SMA3 with some variety-- I need to create a 6000-point file anyway for my testing.

Edit: Actually, I'm almost done with my 6000-point playthrough, so no need to rush or anything.


All that I need to begin making a working version of "Eggvine Advance" is a hex-edit to tell Eggvine that sprites are 4 bytes instead of 3-- the rest I can work around. I have no idea how to go about finding it, though...

Can anyone more familiar with the structure of .exe files (or whatever file structure Eggvine is, as I assume there are many types of .exe files) help me?

–=–=–=–=–=–=–
Alyssa's Unlikely Trap - Zeldara's Glitch City

I'll be honest here, even though I'm not that good with GUI programs, I still believe creating a program from scratch is easier than hacking Eggvine or finding its source code.


Last updated December 4, 2017. What, you expected something new?

My Website
@Zeldara:
It's not that easy. You also have to tell EggVine from where it must get its pointers to level data and how it has to read them. I guess no one here can do this by Hex-Editing EggVine, we need the source code to do this. I agree with Yakov: Making a completely new editor for it would be better than modificating EggVine. Oh, and EggVine is NOT only the .exe-file but also the depending files like the .ocx ones. It's not that easy that you edit one Offset and get a completely new editor.

Why don't you try to get someone from the Programming-forums or so, who can programme an editor for the game?

--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31

I'll gladly start the editor, but there's one problem: the offsets and instructions from both GBA and SNES version are all scrambled around. So if anyone would be willing to provide a document in one central location, I can look at it and start experimenting.

E: this is what I have in mind:

Bland.


Last updated December 4, 2017. What, you expected something new?

My Website
Pages: « 1 2 3 4 5 6 7 8 9 »
Forum Index - Non-SMW Hacking - Yoshi's Island Hacking - Super Mario Advance 3 hacking

The purpose of this site is not to distribute copyrighted material, but to honor one of our favourite games.

Copyright © 2005 - 2019 - SMW Central
Legal Information - Privacy Policy - Link To Us


Total queries: 9

Menu

Follow Us On

  • YouTube
  • Twitch
  • Twitter

Affiliates

  • Talkhaus
  • SMBX Community
  • GTx0
  • Super Luigi Bros
  • ROMhacking.net
  • MFGG
  • Gaming Reinvented