Points of Required Attention™
Please chime in on a proposed restructuring of the ROM hacking sections.
Views: 88,503,582
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search 04-30-24 09:10 AM
Guest: Register | Login

0 users currently in ROM Hacking | 1 guest

Main - ROM Hacking - General SMB3 Hacking Thread New thread | New reply

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

NutheadBros
Posted on 07-26-09 12:04 AM Link | Quote | ID: 111194


Koopa
Level: 26

Posts: 65/117
EXP: 93950
Next: 8325

Since: 03-29-09
From: Spiral Mountain

Last post: 5379 days
Last view: 4501 days
Actually the spot I tried were Level 4 Ending & Level 5 Ending. That is the trouble Spot because when I play up to either level there is no goal card preventing me from finishing the level. I think that Level 4 Ending & Level 5 Ending are the Sub-Stages that you are talking about

KP9000
Posted on 07-26-09 06:15 PM (rev. 2 of 07-26-09 06:15 PM) Link | Quote | ID: 111239


Boomboom

Level: 90

Posts: 878/1975
EXP: 6955526
Next: 233083

Since: 02-19-07

Last post: 3584 days
Last view: 3208 days


It sounds like you overwrote some enemy data there. Did you change levels 1-4 or 1-5 endings at all?

Usually these levels use the same enemy data and might overwrite into something else if you add more than it's designed to carry. Anything you change in one level with change in the other levels that use the same enemy data.

____________________

NutheadBros
Posted on 07-26-09 11:00 PM (rev. 2 of 07-26-09 11:37 PM) Link | Quote | ID: 111265


Koopa
Level: 26

Posts: 66/117
EXP: 93950
Next: 8325

Since: 03-29-09
From: Spiral Mountain

Last post: 5379 days
Last view: 4501 days
Edit: Never Mind it turns out you can't go over enemy limits either.

I haven't touched 1-4's ending but I was trying to fix 1-5's by adding a goal card. Could it possibly be from another level that's causing it?


Quick Curly
Posted on 07-27-09 09:36 PM Link | Quote | ID: 111381


Giant Red Paratroopa
Level: 77

Posts: 494/1443
EXP: 4173767
Next: 17362

Since: 06-15-08
From: Earth

Last post: 25 days
Last view: 25 days
Posted by Trelior
Posted by zbyte
Posted by Trelior
Posted by zbyte
Now I'm working in a Water level, where it is supposed to be like a tide. Now it's not. I also checked an original ROM and there were 13 enemies. I looked at all of them and only saw 12. Then I deleted all objects, then I deleted the enemies one by one, and I still couldn't find that one enemy.
It's possible that that particular enemy was a "Nothing" entry, or maybe even the auto-scrolling pointer, it's either one or the other. What level are you talking about, 3-3 or 3-8? I'll check it out, two sets of eyes is better than one.
I'm working on 3-3, it's not an auto-scrolling enemy, if so, you couldn't go back. I still can't find it.
That's weird... Maybe the enemy slot wasn't used, is pushed off the scrollable area of the screen, or something dumb like that, because I checked 3-3 myself and never found that elusive 13th enemy.

I thought it was the auto-scroll object because I thought I saw it in the 1-Dungeon spike room, possibly set as a up/down motion to make the ceiling fall... I dunno though.
That's exactly what it is. In levels like the World 1 Dungeon Spike Room, 3-3, 3-8, etc. where the screen moves up and down, it is in fact the Autoscrolling enemy located below Y: 026. Just like when it is above Y: 026, the Y-position determines its behaviour. If you want to set its position, you can do so in the FCEUXD hex editor.
Posted by NutheadBros
Never Mind it turns out you can't go over enemy limits either.
That's sort of half-true. As long as you're organized and you keep track of enemy data that you overwrite so that you can change any areas that originally used the overwritten data accordingly, you're more than free to use more enemies (or more objects, for that matter) in other areas. Of course, there still are limits. I think you're limited to 216 actual objects per area or something like that. You have to experiment and test things yourself to find out what works best for your hack specifically.

Trax
Posted on 07-27-09 10:34 PM Link | Quote | ID: 111389


Yellow Stalfos
Level: 71

Posts: 867/1145
EXP: 3036767
Next: 130347

Since: 07-06-07
From: Québec

Last post: 3631 days
Last view: 2883 days
What exactly is the enemy limit per level in SMB3?

KP9000
Posted on 07-28-09 12:09 AM Link | Quote | ID: 111397


Boomboom

Level: 90

Posts: 882/1975
EXP: 6955526
Next: 233083

Since: 02-19-07

Last post: 3584 days
Last view: 3208 days


It's predetermined. When the developers made the game, they defined what it was per level. You can change it, but you have to be able to find some free space in that bank to point to, which IIRC, was very little.

____________________

beneficii
Posted on 07-28-09 10:28 AM (rev. 6 of 08-03-09 09:58 AM) Link | Quote | ID: 111466


Shyguy
Level: 23

Posts: 78/85
EXP: 62102
Next: 5621

Since: 02-19-07

Last post: 3139 days
Last view: 3116 days
Regarding the sizes of levels, you are limited by the amount of space in the ROM, ultimately. You can make a level as long as you have a continuous block for its object data and a continuous block for its enemy data, and it will work as long as you point correctly to the start of the object data and enemy data from the world map and for entrances coming from other levels. The problem is organizing modifications to the existing structure--How would such modifications be kept track of? The ROM has a bank for enemy code and in that bank there is a block of all the game's enemy data, and has multiple banks for the code of each object set and in each bank there is a block of all the object data used by all the levels of that object set. If a hacker deletes or adds objects/enemies in a level and to save space the editing program brings the start of the next stage's data to just past the end of the level just modified, and then the stage after that and the stage after that, making sure they were all aligned in a continuous block (while making sure that the block of stages doesn't grow past the space available in the ROM bank), then the editing program must also make sure that all references to the object/enemy data after the stage modified are all updated to reflect the new starting addresses.

Such is FC/NES hacking, due to the limited space available and the fact you would have to add clone banks for more space. In SFC/SNES hacking, there is much more ROM space that is available and in most games not nearly all of it is used, so it is easier to program extensions there, without having to clone banks.

EDIT: Corrected grammar.

EDIT2: To clarify, in SMB3 Workshop you may delete objects/enemies, so that they are fewer than what they were in original level, but you won't get any of that space to use in other levels, because the editor is strict about keeping the starting addresses of all the levels' object/enemy data the same.

EDIT3: The way around that is to enter and keep track of those starting addresses yourself, manually.

____________________
「しっかり統制された民兵は自由な国の安全保証にとって必要なので、国民が武器を所有し携帯する権利は侵されてはならない」アメリカ合衆国憲法修正第2条

kunio1031
Posted on 07-30-09 03:35 AM Link | Quote | ID: 111636


Red Goomba
Level: 17

Posts: 2/44
EXP: 21432
Next: 3311

Since: 07-25-09

Last post: 413 days
Last view: 2334 days
Hey guys, when you do pipes in a stage. Say multiple pipes, do you have to make pointers for each pipe? Also some things I wanted to say about my hack, which I'll be making once I get my laptop made from someone. Which won't be for awhile. Some questions/comments for you's guys.

1-My hack is gonna be making itself as much like the names given to the worlds, as described in the mario 3 player's guide. For instance.

-World 1-Grass Land-nothing but green hilly stages, nothing else. Except for the fortresses.
-World 2-Koopahari Desert-Simple enough.
-World 3-Island World-combo of islands and swimming, no "just only swimming stages" if you know what I mean.
-World 4-Land of the Giants-All block structures and enemies are giant, this may sound limited. But I'll figure it out.
World 5-Sky World-Easy enough, but I'm only gonna use enemies who fly, or have wings that sort of thing.
World 6-Winter Wonderland-Lots of frozen coins, and ice blocks.
World 7-Pipe Maze-Every single level will be a different maze, so there will be plenty of mazes to go about. Oh and only plant enemies as well.
World 8-Castle of Koopa-This one's a little trickier, but basically I'm gonna do nothing but make fortress levels.

2-If I change a level, say 1-1 so that way it would be a hilly stage. But I kept the same amount of 3 bytes and 4 bytes. Is that gonna be a problem? Would it screw the game up or not?

Quick Curly
Posted on 08-06-09 09:24 AM Link | Quote | ID: 112350


Giant Red Paratroopa
Level: 77

Posts: 502/1443
EXP: 4173767
Next: 17362

Since: 06-15-08
From: Earth

Last post: 25 days
Last view: 25 days
Posted by kunio1031
Hey guys, when you do pipes in a stage. Say multiple pipes, do you have to make pointers for each pipe?
Yes. Also, make sure you only have one pointer maximum for each range (00-0F, 10-1F, 20-2F, ..., E0-EF). Having more than one per range could cause problems. There's the scenario like the 7-4 Outside Area though where you have two pipes that can be entered that are both in the 00-0F range. However, there is still only one pointer for the range, so both pipes use the same pointer (and lead to the same exact place/exit).
Posted by kunio1031
Also some things I wanted to say about my hack, which I'll be making once I get my laptop made from someone. Which won't be for awhile.
Hopefully it's soon!
Posted by kunio1031
If I change a level, say 1-1 so that way it would be a hilly stage. But I kept the same amount of 3 bytes and 4 bytes. Is that gonna be a problem? Would it screw the game up or not?
Do not change the object set for 1-1. It'll only work as a Plains level anyway. Instead, what you want to do is use beneficii's SMB3 Map Editor and change the pointer for your first level to an actual Hilly level. As for the amount of objects and enemies in each level, it's probably best to not go over the limits unless you are capable of keeping track of anything you overwrite so that you don't try to edit it again later thinking that you can still use data for its original level when it has become part of another level that has been expanded. You can use 3-byte and 4-byte objects interchangeably though (in a way). For example:

1-1:
81 3-byte objects, 5 4-byte objects
(81 x 3) + (5 x 4) = 243 + 20 = 263 bytes

So the object data for 1-1 (excluding the 9-byte level header) is a total of 263 bytes; so you can use any combination of 3-byte and 4-byte objects as long as the total number of bytes that you use doesn't exceed 263 bytes. When I'm designing levels, I always keep this in mind so that I can use the same exact number of bytes as the maximum: 3 x 4 = 12. Obviously different additions of 3-byte and 4-byte objects might not equal the original total number of bytes used. However, if you use 4 3-byte objects for every 3 4-byte objects that you take out and/or vice versa, you can keep the same total. I know it likely sounds confusing because it's harder for me to explain than to show, so here's a visual of what I mean.

Say I want to add more 4-byte objects since you originally only have 5 to work with. Since 4-byte objects are made up of 4 bytes (obviously ) you would need to take out 2 3-byte objects so that you free up at least 4 bytes to work with. However, then you have 2 bytes left over that cannot be used. To put 2 4-byte objects in, you would need to remove 3 3-byte objects so that you free up at least 8 bytes to work with. However, in that case you'd have 1 byte left over that cannot be used. As you can probably guess that I was building towards, you could take out 4 3-byte objects to free up 12 bytes which would allow you to insert 3 4-byte objects. The same goes with giving up 3 4-byte objects so that you can use 4 more 3-byte objects. So in the case of 1-1, the following combinations would allow you to use all 263 bytes:

(85 x 3) + (2 x 4) = 255 + 8 = 263 bytes
(81 x 3) + (5 x 4) = 243 + 20 = 263 bytes
(77 x 3) + (8 x 4) = 231 + 32 = 263 bytes
(73 x 3) + (11 x 4) = 219 + 44 = 263 bytes
(69 x 3) + (14 x 4) = 207 + 56 = 263 bytes
etc.

Of course, you don't have to worry about the original number of bytes if you just decide to expand some levels by sacrificing whole or parts of other levels. In that case though, just remember to keep a log of everything so that you minimize the probability of things messing up.

Sorry for the long explanation. Hopefully it helps you out. And of course, please keep us up to date on the progress of your hack!

zbyte
Posted on 08-09-09 03:11 AM Link | Quote | ID: 112887


Boomerang Brother
Z is Superior!
Level: 66

Posts: 205/1016
EXP: 2388011
Next: 73840

Since: 06-10-09

Last post: 4436 days
Last view: 2915 days
Posted by Quick Curly
Posted by zbyte
Posted by Trelior
Posted by zbyte
Now I'm working in a Water level, where it is supposed to be like a tide. Now it's not. I also checked an original ROM and there were 13 enemies. I looked at all of them and only saw 12. Then I deleted all objects, then I deleted the enemies one by one, and I still couldn't find that one enemy.
It's possible that that particular enemy was a "Nothing" entry, or maybe even the auto-scrolling pointer, it's either one or the other. What level are you talking about, 3-3 or 3-8? I'll check it out, two sets of eyes is better than one.
I'm working on 3-3, it's not an auto-scrolling enemy, if so, you couldn't go back. I still can't find it.
That's weird... Maybe the enemy slot wasn't used, is pushed off the scrollable area of the screen, or something dumb like that, because I checked 3-3 myself and never found that elusive 13th enemy.

I thought it was the auto-scroll object because I thought I saw it in the 1-Dungeon spike room, possibly set as a up/down motion to make the ceiling fall... I dunno though.
That's exactly what it is. In levels like the World 1 Dungeon Spike Room, 3-3, 3-8, etc. where the screen moves up and down, it is in fact the Autoscrolling enemy located below Y: 026. Just like when it is above Y: 026, the Y-position determines its behaviour. If you want to set its position, you can do so in the FCEUXD hex editor.
I re-sized SMB3 Workshop and still didn't see it, however, I set it below Y: 26 and it moved up an down, but really weird, not the way it's supposed to.

____________________
No quotes found; we apologize for the inconvenience. Commas, question marks, and semicolons are available, though.








Quick Curly
Posted on 08-09-09 12:05 PM Link | Quote | ID: 112923


Giant Red Paratroopa
Level: 77

Posts: 523/1443
EXP: 4173767
Next: 17362

Since: 06-15-08
From: Earth

Last post: 25 days
Last view: 25 days
Some of them are really far down, so I find that it's just easier to use a hex editor.

silas
Posted on 08-10-09 11:02 PM Link | Quote | ID: 113118


Level: 13

Posts: 16/24
EXP: 8940
Next: 1327

Since: 06-30-08

Last post: 5077 days
Last view: 3377 days
Posted by Quick Curly
Some of them are really far down, so I find that it's just easier to use a hex editor.


Or you can mix the enemy data with one of big vertical levels (such w5-lv2 pipe room). Then you can find the autoscroll object (and even the pipe pointer object easily)

zbyte
Posted on 08-12-09 12:34 AM Link | Quote | ID: 113199


Boomerang Brother
Z is Superior!
Level: 66

Posts: 212/1016
EXP: 2388011
Next: 73840

Since: 06-10-09

Last post: 4436 days
Last view: 2915 days
Posted by Quick Curly
Some of them are really far down, so I find that it's just easier to use a hex editor.
How am I supposed to do that?

____________________
No quotes found; we apologize for the inconvenience. Commas, question marks, and semicolons are available, though.








Trelior
Posted on 08-12-09 12:36 AM (rev. 2 of 08-12-09 12:37 AM) Link | Quote | ID: 113200


Level: 99

Posts: 346/2602
EXP: 9759080
Next: 240920

Since: 07-12-09

Last post: 4501 days
Last view: 4488 days
Posted by zbyte
Posted by Quick Curly
Some of them are really far down, so I find that it's just easier to use a hex editor.
How am I supposed to do that?

Find the object's pointer data and alter it.

KP9000
Posted on 08-19-09 09:21 AM Link | Quote | ID: 113788


Boomboom

Level: 90

Posts: 922/1975
EXP: 6955526
Next: 233083

Since: 02-19-07

Last post: 3584 days
Last view: 3208 days


Alright, I've got a castle and a treasure chest in it. What do I have to do to make it not give me another image of the treasure chest as an item and get me out of the level? Also, how do I get the castle to unlock a lock when you collect an item in the level and exit this way?

____________________

zbyte
Posted on 08-19-09 11:27 PM (rev. 2 of 08-19-09 11:37 PM) Link | Quote | ID: 113851


Boomerang Brother
Z is Superior!
Level: 66

Posts: 230/1016
EXP: 2388011
Next: 73840

Since: 06-10-09

Last post: 4436 days
Last view: 2915 days
Posted by KP9000
Alright, I've got a castle and a treasure chest in it. What do I have to do to make it not give me another image of the treasure chest as an item and get me out of the level?
Try reading the SMB3 Workshop readme.
Posted by KP900
Also, how do I get the castle to unlock a lock when you collect an item in the level and exit this way?
Read the Super Mario Bros. 3 Map Editor ReadMe.
Posted by Trellior
Find the object's pointer data and alter it.
This will not work out as planned... this will be harder than my 15-paragraph essay...

____________________
No quotes found; we apologize for the inconvenience. Commas, question marks, and semicolons are available, though.








KP9000
Posted on 08-20-09 08:10 AM Link | Quote | ID: 113876


Boomboom

Level: 90

Posts: 923/1975
EXP: 6955526
Next: 233083

Since: 02-19-07

Last post: 3584 days
Last view: 3208 days


zbyte? Um, did you actually look inside the readme for SMB3 workshop? If you did, why didn't you post any relevant data in here if you went through all that trouble to check?

SMB3 Workshop quick help

-----------------------------------------------------------------------------
Controls in level editing mode
-----------------------------------------------------------------------------
Left click ............... select/unselect 3 and 4 byte object
Right click .............. select/unselect enemy
Drag w/ left button ...... move object
Drag w/ right button ..... move enemy
Mouse wheel .............. scroll vertically
Mouse wheel w/ Shift ..... scroll horizontally
Mouse wheel w/ Ctrl ...... modify object/enemy type
Tilt wheel left/right .... scroll horizontally
Mouse nav. back/forward .. scroll view one page

F4 ....................... select level
Arrows ................... scroll view
Numpad +/- ............... modify object type
Delete ................... remove object/enemy


-----------------------------------------------------------------------------
Controls in map editing mode
-----------------------------------------------------------------------------
Left click ............... select pointer
Double click ............. edit pointer

Enter .................... edit level under pointer


-----------------------------------------------------------------------------
Object definition edit mode help
-----------------------------------------------------------------------------
(Normal users may ignore this section.)
In order to properly display level graphics using the actual
graphics contained in the ROM itself, it is necessary to know
which graphics tiles are used to draw different objects. This
is what the Object definition editor is for.
The area titled "ROM gfx tiles" displays the graphic tiles
from the ROM and two additional rows of special tiles at the
bottom of this area. These special tiles are used to:
1) Control how the graphic tile under the special tile is drawn
2) Show additional information about the tile/object that
would not be visible with the original graphics. This kind
of use includes showing which pipes can be used and which
ones cannot, and is also used to display the bonuses that
appear from question mark blocks, bricks, and other such
tiles.
The special tiles are drawn in front of the normal ROM graphic
tile. Here is the listing of the special tiles. The ones that
affect the drawing of the tile underneath are marked with a *.

00 No special tile
*01 Fill tile with background color
02 Nothing
03 Warning
04 Nothing
05 Garbled
06 Unknown
07 Pointer
08 Cross
09 Yellow square
10 Cross
11 Up arrow
12 Down arrow
13 Left arrow
14 Right arrow
15 Flower
16 Leaf
17 Star
18 Green star
19 Movable/multi
20 1-up
21 Coin
22 Vine
23 P-switch
24 Invisible coin
25 Invisible 1-up
26 Invisible
27 Special
*28 Draw this tile using level bg color as transparency
*29 Do not draw this tile
30 Level end (1)
31 Level end (2)

Controls
--------
Left click in "ROM Gfx tiles" area .... choose tile or special tile
Left click in "ROM" area ............ put tile/special tile
Right click in "ROM" area ............ pick tile
Middle click in "ROM" area ............ pick special tile
Mouse wheel ........................... browse objects
Up, Down arrow keys ................... browse objects
Left, Right arrow keys ................ browse ROM gfx tiles


-----------------------------------------------------------------------------
Missing features
-----------------------------------------------------------------------------
Planned to be implemented:

* Decrease amount of glitches
* Display enemies using ROM graphics (once I find out how)
* Enemy graphics editing

POSSIBLY to be implemented:

* Improve display and editing of some objects (huge PITA to implement)
* More extensive overworld editing (for now use Beneficii's map editor)
* Better SMAS support (I want to support it eventually, but we'll see)

Not planned:

* ?


-----------------------------------------------------------------------------
Known bugs or glitches
-----------------------------------------------------------------------------
Confirmed:

* Some objects, such as triangular ones, are rendered incorrectly.
* Enemies and certain objects are not drawn using actual ROM graphics.

Unconfirmed:

* Crash on startup upon opening ROM
* "Save ROM" does not always actually save?

-----------------------------------------------------------------------------
Last modified 2007-11-14, hukka (hukkax@gmail.com, http://hukka.furtopia.org)
I don't see anything in there telling me how to change what's inside a treasure chest or have it trigger a level end.

What I'm asking is how to make it so when you get the treasure chest item, it unlocks the lock on the world map instead of just doing it when you beat boom-boom. I believe I figured out a way past this anyway, so it's fine if i don't get an answer...

____________________

beneficii
Posted on 08-20-09 10:17 AM (rev. 3 of 08-20-09 10:40 AM) Link | Quote | ID: 113883


Shyguy
Level: 23

Posts: 79/85
EXP: 62102
Next: 5621

Since: 02-19-07

Last post: 3139 days
Last view: 3116 days
KP9000,

I think that to break the lock when you get an item at the end of the level, you will need to do ASM hacking. Locks are tied specifically to the Boom Booms. The upper nybble of Boom Boom's y position determines which of the world's locks to break (if it's 0, then index 0; if it's 1, then index 1; if I remember correctly)--when Boom Boom is actually drawn to the screen, the upper nybble of his y position will always be 1, which restricts where he can appear.

To do that for an item, I think you will have to find a way to tie the lock to it.


____________________
「しっかり統制された民兵は自由な国の安全保証にとって必要なので、国民が武器を所有し携帯する権利は侵されてはならない」アメリカ合衆国憲法修正第2条

KP9000
Posted on 08-20-09 10:43 AM Link | Quote | ID: 113885


Boomboom

Level: 90

Posts: 925/1975
EXP: 6955526
Next: 233083

Since: 02-19-07

Last post: 3584 days
Last view: 3208 days


Well, the final level design I'd like to shoot for is to have a treasure chest with an item attainable without ending the level. Instead, Mario will continue on to defeat boom-boom and unlock the lock.

Is this doable? Also, I still haven't figured out how to change/add what item is given by treasure chests. Any insight on that?

____________________

beneficii
Posted on 08-20-09 10:54 AM (rev. 2 of 08-20-09 10:55 AM) Link | Quote | ID: 113887


Shyguy
Level: 23

Posts: 80/85
EXP: 62102
Next: 5621

Since: 02-19-07

Last post: 3139 days
Last view: 3116 days
KP9000,

That would seem to be somewhat difficult. Not having a Windows computer right now that I can reliably access, I cannot check for myself. Still, I have looked at the treasure chests before, and I think it is that there are 2 objects or sprites (I don't remember which ones) where the chest appears. I think that in addition to the treasure chest itself, there is a special sprite or object in the level titled something like "Put item in treasure chest." That was too long ago and my experience with it is too shallow. Try reverse-engineering the original ROM by looking at the levels where they appear in the offical game.

If it isn't a second object/sprite (and my memory was bad), it might be hardcoded in the ASM. In which case, you might want to try using a debugger or a tracer to find it. I hope it doesn't have to come to that though.

The other issue you have to resolve is changing the code of the treasure chests themselves, so that you don't exit the level when you get the item. That would seem to call for none other than good old-fashioned ASM hacking.


____________________
「しっかり統制された民兵は自由な国の安全保証にとって必要なので、国民が武器を所有し携帯する権利は侵されてはならない」アメリカ合衆国憲法修正第2条
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23


Main - ROM Hacking - General SMB3 Hacking Thread New thread | New reply

Acmlmboard 2.1+4δ (2023-01-15)
© 2005-2023 Acmlm, blackhole89, Xkeeper et al.

Page rendered in 0.043 seconds. (351KB of memory used)
MySQL - queries: 123, rows: 162/164, time: 0.027 seconds.