(Link to AcmlmWiki) Offline: thank ||bass
Register | Login
Views: 13,040,846
Main | Memberlist | Active users | Calendar | Chat | Online users
Ranks | FAQ | ACS | Stats | Color Chart | Search | Photo album
04-29-24 04:53 PM
0 users currently in ROM Hacking.
Acmlm's Board - I3 Archive - ROM Hacking - Okay, WTF is it with these hilly levels in SMB3!? New poll | |
Add to favorites | Next newer thread | Next older thread
User Post
KP9001

180
I'm going Weasel in 3 months! Where will I end up going?








Since: 01-30-06
From: Show Low, AZ

Last post: 6280 days
Last view: 6279 days
Posted on 11-27-06 06:09 PM Link | Quote
I fixed my last problem with hilly levels and fully recovered that level.

So, I started fresh. I deleted all sprites, and 3 and 4 byte objects and started anew. Same thing I did with my other non Hilly/Underground levels. But upon entering, it just hangs at the last note of the "level entrance" melody and a black screen. I noticed the original level had a "Nothing" in the top left corner, so I put one of those in there. Same object number. That didn't change anything though. I followed all of the causes of a level crash in the help file in SMB3W and I still get the error. I can't for the life of me figure out what the fuck is wrong here.
Ninetales
banned by request


 





Since: 11-17-05
From: Gone.

Last post: 6280 days
Last view: 6279 days
Skype
Posted on 11-28-06 01:17 AM Link | Quote
Well, you know that SMB3 has fixed level sizes that you cannot exceed without corrupting another level in the ROM. I'll let an old post of DahrkDaiz's explain in more detail, since he did a better job of it than I would:
Originally posted by DahrkDaiz
Here's a little lesson on "adding" things to SMB3...

This is your ROM

[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]

Those are memory "blocks" in the rom. You have a set amount of memory blocks, it cannot increase (well it can but that's far beyond the scope of this lesson). Here is a representation of level data in the SMB3 ROM

[L][e][v][e][l][1][X][L][v][l][2][x][L][e][v][e][l][t][h][r][e][e][x][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]

As you can see what I've done is shown that each level takes up a set amount of level space. Level 1 takes up more than level 2. Level three takes up more than level 1. The X's represent the "end" of that block of data. It tells the game where to stop reading data and putting it in the current level. Let's say you add two enemies to level one. This is what it will look like when you save your rom.

[L][e][v][e][l][1][e1][e2][X][l][2][x][L][e][v][e][l][t][h][r][e][e][x][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]

e1 and e2 represent the new enemies you just added. But notice, the X and the L are now gone, they were over written. There's now a new X that's where the old "v" for level 2 was. What does that mean? When the game loads level 2, it'll start where the old "L" was and as we can see, it reads e2 instead and then an X, making the level shorter than it really should be. The game only knows where to load levels that the original programmers set, it cannot magically figure out where the next one is if you increased the size of another. So as you can see, adding enemies or level data is not possible without advance techniques. (keeping track of pointers yourself, moving data around, it can be very messy for a beginner). However, you can delete data still. Lets see what happens when you delete a few objects in level one.

[L][e][v][X][ ][ ][ ][L][v][l][2][x][L][e][v][e][l][t][h][r][e][e][x][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]

As you can see, the level is smaller and the X is closer to the beginning. What this means that as long as the size of the original level is the same or lower, you can delete objects and then add them somewhere else IN THE SAME LEVEL. I hope all this makes sense.

What this means is that you may have gone over the level size limit; check and make sure that the total number of bytes that your objects and enemies each use is less than or equal to the number of bytes that the objects and enemies originally used. If this doesn't fix the problem, make sure that the pointer to the level (on the map screen) points to the correct level, and that there aren't any hidden "crash" objects in your level (sometimes M3I and SMB3W put them in random places when you're editing a level, especially when you're adding and deleting objects).
Add to favorites | Next newer thread | Next older thread
Acmlm's Board - I3 Archive - ROM Hacking - Okay, WTF is it with these hilly levels in SMB3!? |


ABII

Acmlmboard 1.92.999, 9/17/2006
©2000-2006 Acmlm, Emuz, Blades, Xkeeper

Page rendered in 0.010 seconds; used 357.37 kB (max 430.10 kB)