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

0 users currently in ROM Hacking | 1 guest | 1 bot

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

DahrkDaiz
Posted on 12-03-09 08:25 PM (rev. 3 of 12-03-09 08:27 PM) Link | Quote | ID: 121406


Nipper Plant
Sandwich Artist
Level: 46

Posts: 319/417
EXP: 674706
Next: 37068

Since: 02-22-07

Last post: 3491 days
Last view: 3411 days
Just noticed this post and I gotta debunk a few things

Posted by Mineyl

- The angry sun and infinite goombas require a specific object in order to be displayed correctly in a level. This object must be set first or it will cause all objects placed before it to be erased, for some reason... This was actually the reason I stopped working on the hack before reviving it back in September: I couldn't figure out what the hell was going wrong and I assumed that these two sprites only worked when used on levels with specific pointers. I later found out that the object required is labeled "Nothing" in SMB3 Workshop and is object $0E in bank 2. Lack of information FTW.



What? I do not believe this is true. The object you speak up simply draws a background to the level, this is why it "erases" everything that appears after it. I used the Angry Sun and Goomba Generators without that object in Mario Adventure. I may be wrong on this, but I don't ever recall requiring that object.

Posted by Mineyl

- Boomerang brothers don't function correctly when placed near ? blocks and smashable bricks. The coins can cause sprite overload, making the bro delay his throws, and sometimes, hitting one of these blocks will kill the bro no matter where he is on screen.



Sure they do. The problem is that there are 2 kinds of sprites. There are enemy sprites and there are secondary sprites. Secondary sprites include thing such as hammers, canon balls, fireballs (enemy) and boomerangs. The coin animation you see that appears from ? blocks is a secondary sprite. You can only have either 5 or 6 secondary sprites on the screen at once.

Posted by Mineyl

- Fire snakes cause a lot of sprite overload. I can't get more than two to show up on screen at once.



Fire snakes don't take up any more sprite entries than other enemies. They will cause more slowdown if you have a lot because they use 6 sprite tiles and the NES can only display 8 sprites on any given line, causing the nice "blinking" effect the game will induce at times. But I've had 3 Fire Snakes at a time.

Posted by Mineyl

- When the player enters the second half of 2-5 (via pipe) in my hack, Mario assumes the "sliding" pose (think original 1-5) after coming out. I have no explanation for this.



This is due to the ram 375 being set to 1. I get this in the reuben rom as well, not sure what causes it but it will be fixed.

Have you by chance been putting in ASM hacks? The errors you get do not sound like normal engine limitations. I started to get similar errors in Luigi vs Mario with random enemy disappearances. I'm wondering if workshop might be accidentally changing a few bytes here and there that causes the glitches as I never got errors like that in Mario Adventure.

Mineyl
Posted on 12-04-09 01:34 AM Link | Quote | ID: 121454


Ninji
Level: 35

Posts: 107/243
EXP: 276991
Next: 2945

Since: 09-10-09
From: World 5

Last post: 4283 days
Last view: 468 days
Posted by DahrkDaiz

What? I do not believe this is true. The object you speak up simply draws a background to the level, this is why it "erases" everything that appears after it. I used the Angry Sun and Goomba Generators without that object in Mario Adventure. I may be wrong on this, but I don't ever recall requiring that object.


When the object does not exist, the angry sun is invisible until the screen in which it becomes active and begins moving about. When the object does not exist, the goombas will not be out-prioritized by the pipe tiles (or whatever else you want them to look like they're coming out of) and will not look as if they're coming out of or from behind the tiles. I've seen this problem in other hacks (Mario 2k3 specifically, but there are probably more), as well. I can take a video of this for visual proof, if you like.

Posted by DahrkDaiz

Sure they do. The problem is that there are 2 kinds of sprites. There are enemy sprites and there are secondary sprites. Secondary sprites include thing such as hammers, canon balls, fireballs (enemy) and boomerangs. The coin animation you see that appears from ? blocks is a secondary sprite. You can only have either 5 or 6 secondary sprites on the screen at once.

Duly noted, and that's something that I figured out on my own, but that doesn't debunk the bigger problem: why does hitting coin/question blocks sometimes kill these sprites regardless of where they are on the screen?

Posted by DahrkDaiz

Fire snakes don't take up any more sprite entries than other enemies. They will cause more slowdown if you have a lot because they use 6 sprite tiles and the NES can only display 8 sprites on any given line, causing the nice "blinking" effect the game will induce at times. But I've had 3 Fire Snakes at a time.

I didn't test it extensively, but I couldn't get more than two at once. I might try it out on a single screen stage, though...

Posted by DahrkDaiz

This is due to the ram 375 being set to 1. I get this in the reuben rom as well, not sure what causes it but it will be fixed.

So that's why...

Posted by DahrkDaiz

Have you by chance been putting in ASM hacks? The errors you get do not sound like normal engine limitations. I started to get similar errors in Luigi vs Mario with random enemy disappearances. I'm wondering if workshop might be accidentally changing a few bytes here and there that causes the glitches as I never got errors like that in Mario Adventure.



Here's what I've done to my ROM so far:

- edited levels.
- edited graphics.
- edited world maps.
- edited palettes.
- edited the title screen's tile placements.
- edited the TSA of several object sets (mostly the underground set to get it to look right with my graphical changes).
- used my own pointers for each stage so that I don't ever have to worry about the level size limit that 99% of Mario 3 hackers complain about all the time.
- by recommendation of Datacrystal, I changed several hex values to keep the status bar from doing that god-awful blinking that it does in the top-left corner. This is probably the most ASM-ish thing I've done, but my ASM knowledge is next to nil. The exact text is here:


In the original game, part of the status bar in the bottom left part of the screen had a tendency to flicker. This glitch can be corrected by rewriting the bytes at ($) 3F7B2, 3F8E0, 3F8E1, 3F8E2, and 3F8E3 to 16, EA, EA, EA, and EA, respectively. (Original respective values are 0D, 68, 8D, 10, 40.)


____________________
Back from the beyond.

cobraman
Posted on 12-26-09 02:48 PM Link | Quote | ID: 124157

Newcomer
Level: 6

Posts: 2/4
EXP: 579
Next: 328

Since: 12-26-09

Last post: 5237 days
Last view: 5237 days
hi

i have a smb3 rom nes and working ok

when i edit an level with workshop program the pointers go wrong somtimes with the enterin of the pipe goase to some where and mario didem,nd some time the exit goas to some where and he died,

what to do?

Quick Curly
Posted on 12-26-09 07:46 PM Link | Quote | ID: 124184


Giant Red Paratroopa
Level: 77

Posts: 798/1443
EXP: 4174060
Next: 17069

Since: 06-15-08
From: Earth

Last post: 26 days
Last view: 26 days
Posted by cobraman
hi

i have a smb3 rom nes and working ok

when i edit an level with workshop program the pointers go wrong somtimes with the enterin of the pipe goase to some where and mario didem,nd some time the exit goas to some where and he died,

what to do?
Hi cobraman. I hope that I can help you out with this.

The SMB3 Level and Pointer Data document has a short explanation on how to get the pointers to work. If you're not deleting all of the objects and enemies in the levels before you start editing your own, I'd recommend you do that as well. It's easier to manage pointers if you don't edit existing ones, and plus it's better so that your levels are more your own and different from the original SMB3 levels.

What I always do when I want to put in pipes and/or doors that can be entered in my level is I place the pipe/door 3-byte object first and then the next object is just a "dummy" 3-byte object (I'll place it as a coin or something simple like that so that it doesn't take up too much room that I could still be working in) so that I can edit it to be a pointer (3-byte, Bank 7) later. This helps me keep the pipes/doors that can be entered and their respective pointers easily organized, and gives me the freedom to edit them at a later and more fitting time if I'm not ready to set it just yet when I'm designing the level itself (I like to add my objects - and enemies as well, for that matter - going from left to right to keep them in order).

Also, be sure to use the 90-9F 3-byte downward pipe objects and not the B0-BF 3-byte downward pipe objects that ignore pointers. Also keep in mind that it's probably best to keep only one pipe/door that can be entered and pointer within each range (00-0F, 10-1F, ..., D0-DF, and E0-EF). Having more than one can cause some messed up stuff.

And... there's not really anything else that I can think of right now. If you can think of anymore questions you need answered, post them in this thread and hopefully I or someone else who beats me to the punch will be able to help you. I also recommend going through the entire General SMB3 Hacking Thread to see if there's any additional information that you can pick up, especially this post to make sure that you don't overwrite other object and/or enemy data (or how to easily manage it if that's actually what you want to do because you know your hack might be only 3 worlds or something and you want the levels that will be in it to be object- and enemy-packed). Best of luck!

cobraman
Posted on 12-28-09 07:31 PM Link | Quote | ID: 124375

Newcomer
Level: 6

Posts: 4/4
EXP: 579
Next: 328

Since: 12-26-09

Last post: 5237 days
Last view: 5237 days
u mean if the data up 263 that will change doors/pips location?

Quick Curly
Posted on 12-29-09 12:26 AM Link | Quote | ID: 124397


Giant Red Paratroopa
Level: 77

Posts: 805/1443
EXP: 4174060
Next: 17069

Since: 06-15-08
From: Earth

Last post: 26 days
Last view: 26 days
Posted by cobraman
u mean if the data up 263 that will change doors/pips location?
The 263 refers to the original number of bytes used for objects in 1-1. (There are 81 3-byte objects and 5 4-byte objects: (81 x 3) + (5 x 4) = 243 + 20 = 263 bytes.) The idea I was trying to get across with that post was that you don't exactly have unlimited space to work with in each level. If you add more than what was originally used, the extra room you're using has to come from somewhere - specifically from another level (that you'll end up overwriting). The number of bytes used for objects and enemies does not have any direct influence on doors and pipes that can be entered and their pointers aside from the amount of room you have to actually add them. Hopefully that makes sense.

binarycuberoots
Posted on 12-29-09 12:44 AM Link | Quote | ID: 124398


Goomba
Level: 15

Posts: 26/34
EXP: 14495
Next: 1889

Since: 09-10-09

Last post: 5096 days
Last view: 5096 days
Quick brings up a point. That reminds me. I know it's possible to have fewer bytes than in the original. The only thing is that the unused bytes have to have some value to preserve the order for other level. That has always bothered me. Hopefully it takes the value of a non reserved byte value. I would assume that 00 fills up the remaining bytes, but I thought 00 was reserved for certain objects in certain level types. If you know about that, I'll be glad to hear what you folks have to say about that.

____________________
I'm back

Mineyl
Posted on 12-29-09 12:54 AM Link | Quote | ID: 124401


Ninji
Level: 35

Posts: 137/243
EXP: 276991
Next: 2945

Since: 09-10-09
From: World 5

Last post: 4283 days
Last view: 468 days
It really shouldn't matter, as the terminal byte $FF that is automatically added by SMB3 Workshop will keep SMB3 from adding those 00 00 00 objects (though I believe that the editor won't actually replace the "unused" bytes with 00, they'll just be an unheadered bunch of objects floating in limbo between pointers).

____________________
Back from the beyond.

binarycuberoots
Posted on 12-29-09 01:46 AM Link | Quote | ID: 124405


Goomba
Level: 15

Posts: 28/34
EXP: 14495
Next: 1889

Since: 09-10-09

Last post: 5096 days
Last view: 5096 days
I knew FF was involved in there somewhere. The only thing is that some objects like one of the oriented xblocks 16 units in width in the fortress based levels and one of the horizontal 16 unit pipes (universal level type) and maybe other objects use the byte FF though. Not sure what that's about.

____________________
I'm back

Quick Curly
Posted on 12-29-09 02:17 AM Link | Quote | ID: 124407


Giant Red Paratroopa
Level: 77

Posts: 806/1443
EXP: 4174060
Next: 17069

Since: 06-15-08
From: Earth

Last post: 26 days
Last view: 26 days
As you might recall me mentioning before, with Luigi's Chronicles 2 when I was fixing up World 1 to save space, I ended up adding even more levels with the unused space that I saved from cleaned up edited levels such as the new 1-1, 1-2, etc. It's all possible with a quick and easy peek in a hex editor (and as expected, my 100th+ plug for FCEUXD). In SMB3 Workshop, click on the last object placed (whether 3-byte or 4-byte) and find it in the hex editor to see where your edited level actually ends. Count the number of bytes you have left over (remember that you need 9 for the level header) and write that down. Really any amount will work to give you at least one additional area; a little extra room can be made into a midpoint area for a pointer-heavy level or even an ending area with a goal card. You can enter custom object and enemy offsets for opening levels you want to edit in the program; all you have to do is find the offsets where the object data and enemy data you want to use begin, write them down for quick reference (optional but sometimes helpful step) and then enter them into the Level/Offset Selector in SMB3 Workshop (and remember to enter the proper Object Set as well, of course).

But anyway, the point in all of that was to basically say that using fewer bytes does not hurt at all, no matter how many unused bytes are actually leftover. If you look in a hex editor, you'll see that all that is added is an "FF" to end the level; SMB3 Workshop doesn't actually replace any of the old level data. It's still there, but as long as you don't have anything pointing to it, it won't hurt anything. That's why if you don't get too in-depth and use custom offsets like I tend to (more specifically, you use more than the original SMB3 level offsets) then there's no way you'll be affected by broken level data because you won't be using it. Hopefully that helps clear that up, Binary.

Obviously Reuben will make most of the methods and other things we've been discussing obsolete, but I still believe that anything learned from SMB3 Workshop and working with the original SMB3 can be carried over to Reuben and any experience from the soon-to-be-old stuff can/will still help.

zbyte
Posted on 12-29-09 06:57 PM Link | Quote | ID: 124477


Boomerang Brother
Z is Superior!
Level: 66

Posts: 776/1016
EXP: 2388190
Next: 73661

Since: 06-10-09

Last post: 4436 days
Last view: 2915 days
Posted by Quick Curly
Count the number of bytes you have left over (remember that you need 9 for the level header) and write that down. Really any amount will work to give you at least one additional area; a little extra room can be made into a midpoint area for a pointer-heavy level or even an ending area with a goal card. You can enter custom object and enemy offsets for opening levels you want to edit in the program; all you have to do is find the offsets where the object data and enemy data you want to use begin, write them down for quick reference (optional but sometimes helpful step) and then enter them into the Level/Offset Selector in SMB3 Workshop (and remember to enter the proper Object Set as well, of course).


I will be doing that, since one of my levels had tons of object space left over.

You said over at this other place that you're were editing a lost level for your hack. Well, I made mine, and no matter what I did, it crashed. I didn't do much to it.

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








Quick Curly
Posted on 12-29-09 06:59 PM Link | Quote | ID: 124479


Giant Red Paratroopa
Level: 77

Posts: 822/1443
EXP: 4174060
Next: 17069

Since: 06-15-08
From: Earth

Last post: 26 days
Last view: 26 days
Posted by zbyte
I will be doing that, since one of my levels had tons of object space left over.

You said over at this other place that you're were editing a lost level for your hack. Well, I made mine, and no matter what I did, it crashed. I didn't do much to it.
Which one specifically? I got all of them to work.

zbyte
Posted on 12-29-09 07:06 PM Link | Quote | ID: 124482


Boomerang Brother
Z is Superior!
Level: 66

Posts: 778/1016
EXP: 2388190
Next: 73661

Since: 06-10-09

Last post: 4436 days
Last view: 2915 days
Posted by Quick Curly
Posted by zbyte
I will be doing that, since one of my levels had tons of object space left over.

You said over at this other place that you're were editing a lost level for your hack. Well, I made mine, and no matter what I did, it crashed. I didn't do much to it.
Which one specifically? I got all of them to work.
Lost level 3, 4, 5, and 8. The rest I haven't tried yet.

Wait. I just set the pointers to try some out. I had a lost level on one tile and another above it. I tried the one below and it crashed. But when I went to the one above it, it played the one below successfully. This is weird...

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








Quick Curly
Posted on 12-29-09 07:16 PM Link | Quote | ID: 124486


Giant Red Paratroopa
Level: 77

Posts: 825/1443
EXP: 4174060
Next: 17069

Since: 06-15-08
From: Earth

Last post: 26 days
Last view: 26 days
Posted by zbyte
Lost level 3, 4, 5, and 8. The rest I haven't tried yet.

Wait. I just set the pointers to try some out. I had a lost level on one tile and another above it. I tried the one below and it crashed. But when I went to the one above it, it played the one below successfully. This is weird...
Well, remember that "Lost 4 - Underground" is actually a Hilly level. This is an error in both SMB3 Workshop and the SMB3 Map Editor, so if you're not changing the Object Set to Hilly when you're editing the pointer, that will screw things up. If you try to set it so you can just enter the original "Lost 4" without changing things, having "Underground" as the Object Set causes Mario to fall right in a pit. However, changing it to "Hilly" makes all the difference and Mario starts out fine. See how critical setting the proper Object Set really is?

As for your other levels working, who knows? Plus if the above doesn't solve your problem, then again... who knows? A problem always has the potential of being caused by a number of possible issues, some that we would never think could cause them (I've encountered my share of those). I can only make assumptions without any screenshots, so sorry if this post isn't much help.

binarycuberoots
Posted on 12-29-09 08:31 PM Link | Quote | ID: 124502


Goomba
Level: 15

Posts: 29/34
EXP: 14495
Next: 1889

Since: 09-10-09

Last post: 5096 days
Last view: 5096 days
I didn't know it was possible to fall through hilly and underground level solid stuff, at least in a horizontal setting. I knew it happened in a vertical setting with a hilly/underground type via workshop of course.

Either way, I just thought of something. I know that those pipes that ignore pointers can lead to another area. How does that work? I've been worried to use these, but somehow they lead to a specific area in the original. I know it's a specific area because there are different ones. Any ideas on that one?

____________________
I'm back

ShoFIZZLE
Posted on 12-30-09 05:04 AM Link | Quote | ID: 124532


Shyguy
Level: 22

Posts: 22/80
EXP: 51980
Next: 6370

Since: 11-18-09
From: Atlanta, GA

Last post: 4307 days
Last view: 4307 days
I was thinking the same thing.

zbyte
Posted on 01-10-10 04:21 AM (rev. 2 of 01-10-10 04:28 AM) Link | Quote | ID: 125346


Boomerang Brother
Z is Superior!
Level: 66

Posts: 816/1016
EXP: 2388190
Next: 73661

Since: 06-10-09

Last post: 4436 days
Last view: 2915 days
Something very weird is happening. I'm working on Area 8's Dungeon, and once I enter a door, I end up at very weird locations, way off from the place Mario is supposed to exit. My exit horizontal is set to 0D, and when I enter the door, I end up at 15 and touch some lava. I dealt with that, and went through a return door that would take me back to the first room. I would fall at 0D. My exit horizontal was 15. I then changed the second room's exit horizontal to 1B and still left at the same locations both times and fell in a pit back in the first room. Odd...

Also, how would you set up pillars like in World 5's Tower?

EDIT: Very weird! I just went to the original 8-Dungeon and there were no pointers at all!

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








binarycuberoots
Posted on 01-10-10 04:54 AM Link | Quote | ID: 125352


Goomba
Level: 15

Posts: 31/34
EXP: 14495
Next: 1889

Since: 09-10-09

Last post: 5096 days
Last view: 5096 days
Good point about the no pointers thing. I myself was wondering how it was even possible to have that many doors in that fortress. Luckily I strayed from using pointers in my first 2 hacks. I have no idea how pointers would work in that level, but something tells me there is some hidden or hardcoded data that would allow a special pointer system for that fortress itself. Anyone that knows what's going on, since I'm puzzled about that?

____________________
I'm back

zbyte
Posted on 01-10-10 06:11 PM Link | Quote | ID: 125384


Boomerang Brother
Z is Superior!
Level: 66

Posts: 818/1016
EXP: 2388190
Next: 73661

Since: 06-10-09

Last post: 4436 days
Last view: 2915 days
Eureka! The Entering pipe ends level is checked by default. So if you decide to check this box on any level, when you enter a door, Mario will be at the exact location he was before, but in the next room. Sweet.

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








binarycuberoots
Posted on 01-10-10 08:37 PM Link | Quote | ID: 125394


Goomba
Level: 15

Posts: 32/34
EXP: 14495
Next: 1889

Since: 09-10-09

Last post: 5096 days
Last view: 5096 days
That is an amazing discovery! I gotta try it out to see what happens! Thanks for that info!

____________________
I'm back
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.035 seconds. (341KB of memory used)
MySQL - queries: 138, rows: 178/184, time: 0.024 seconds.