News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Author Topic: Super Mario Bros 3 (New inventory item help?)  (Read 10525 times)

ahakomi

  • Jr. Member
  • **
  • Posts: 20
  • I'm just channeling my creativity
    • View Profile
Super Mario Bros 3 (New inventory item help?)
« on: March 27, 2015, 01:34:23 am »
Hello fellow gamers, I have a question if anyone can help me, I've been reimaging super mario bros 3 for some time now. This will be my second game I've done and I wanna go a little further and try to create my own inventory item, of course there's a lot of play that goes into this but i have absolutely no idea where or how to get started. To be truthful, I wanted to incorporate Kuribo's shoe (or whatever the hell it's called) into an item and take the anchor out in it's place, if i had to choose an item to take out in it's place I'd get rid of the leaf (as i would keep the tanooki suit if possible). If anyone could give me pointers or tips. I have FCEU to go into the rom file and modify things if need be and im okay with understanding rom addresses. thank you so much.

henke37

  • Hero Member
  • *****
  • Posts: 643
    • View Profile
Re: Super Mario Bros 3 (New inventory item help?)
« Reply #1 on: March 27, 2015, 01:58:29 am »
There is a complete annotated disassembly of the game. Start there.

ahakomi

  • Jr. Member
  • **
  • Posts: 20
  • I'm just channeling my creativity
    • View Profile
Re: Super Mario Bros 3 (New inventory item help?)
« Reply #2 on: March 27, 2015, 02:18:00 am »
I'm not quite sure I understand what you mean.

henke37

  • Hero Member
  • *****
  • Posts: 643
    • View Profile
Re: Super Mario Bros 3 (New inventory item help?)
« Reply #3 on: March 27, 2015, 02:31:59 am »
I am not going to insult your intelligence by quoting the dictionary. I am going to insult your intelligence by linking to google.
« Last Edit: March 27, 2015, 12:13:13 pm by henke37 »

ahakomi

  • Jr. Member
  • **
  • Posts: 20
  • I'm just channeling my creativity
    • View Profile
Re: Super Mario Bros 3 (New inventory item help?)
« Reply #4 on: March 27, 2015, 03:05:57 am »
Thank you :)

Dr. Floppy

  • Restricted Access
  • Hero Member
  • *
  • Posts: 970
  • Make America GREAT Again!
    • View Profile
    • BaddestHacks.net
Re: Super Mario Bros 3 (New inventory item help?)
« Reply #5 on: March 27, 2015, 03:34:54 am »
Why remove the Anchor if it isn't necessary?

I'm interested in how Kuribo's Shoe will fare underwater! Although, it might cause problems for levels where Mario has to be little or crouch to proceed (7-7 comes to mind).

ahakomi

  • Jr. Member
  • **
  • Posts: 20
  • I'm just channeling my creativity
    • View Profile
Re: Super Mario Bros 3 (New inventory item help?)
« Reply #6 on: March 27, 2015, 10:07:58 pm »
I'm creating my own levels lol. Kuribo's shoe would be interesting underwater. There's still so many things I need to learn and I have no starting point. I'm not sad about it truthfully, I've only been doing this for a short time. I want to take out the anchor because I don't use the airships in my games, I find them annoying in general.  I'm still learning how the hexadecimal in the rom file works (I use FCEU and i only have a windows computer). If I could make another power up instead reworking the kuribo's shoe, I'd take the leaf out, (keep the tanookie) and make it so you could step on plants, thwomps and pirhanna plants. I've seen some impressive super mario brothers 3 games. I'm only 24 and i've made my own so far even though it was just a warm up game lol. I like learning how this game works in general and how it operates so i'm going around reading rom files and explanations of the things lol. but if you have anything you'd like to contribute that could help me PLEASE LET ME KNOW.

omega_rugal

  • Jr. Member
  • **
  • Posts: 69
    • View Profile
Re: Super Mario Bros 3 (New inventory item help?)
« Reply #7 on: March 27, 2015, 10:53:14 pm »
Is even posible to activate the Kuribo`s shoe from the overmap menu?
Done your packing?, your life journey is over...

ahakomi

  • Jr. Member
  • **
  • Posts: 20
  • I'm just channeling my creativity
    • View Profile
Re: Super Mario Bros 3 (New inventory item help?)
« Reply #8 on: March 28, 2015, 01:44:11 am »
No but you sure can activate the leaf and the frog suit, two of which i wouldn't mind changing.

Jorpho

  • Hero Member
  • *****
  • Posts: 4617
  • The cat screams with the voice of a man.
    • View Profile
Re: Super Mario Bros 3 (New inventory item help?)
« Reply #9 on: March 28, 2015, 10:32:22 am »
Mario Adventure already used Kuribo's Boot as an inventory item, replacing the Frog Suit.  (But I'm sure it required extensive, intricate coding to make it possible.)
This signature is an illusion and is a trap devised by Satan. Go ahead dauntlessly! Make rapid progres!

Dr. Floppy

  • Restricted Access
  • Hero Member
  • *
  • Posts: 970
  • Make America GREAT Again!
    • View Profile
    • BaddestHacks.net
Re: Super Mario Bros 3 (New inventory item help?)
« Reply #10 on: March 29, 2015, 01:33:02 am »
It shouldn't be too big of a deal to replace the Anchor with Kuribo's Shoe. (Although, my personal replacement candidate would be the GAY BAG Music Box yielded by the Hammer Bros.)

Quote
I'm only 24 and i've made my own so far even though it was just a warm up game lol.

So? I was barely 22 when I started. (18 if you count that other project...) You're more than ready to make a big name for yourself!!!

ahakomi

  • Jr. Member
  • **
  • Posts: 20
  • I'm just channeling my creativity
    • View Profile
Re: Super Mario Bros 3 (New inventory item help?)
« Reply #11 on: April 01, 2015, 01:46:30 pm »
Thank you all so much for your encouragement.  The music note is such a better candidate actually! I'll figure out a way to pull this off. After reimaging my first super mario bros 3 game, i promised myself i'd take my time with this game and get a bit more creative. It might not be as extensive as hacks like MA or SMB3mix but it's enough to make me happy and proud to make this dream i've had a reality since age 3.

Dr. Floppy

  • Restricted Access
  • Hero Member
  • *
  • Posts: 970
  • Make America GREAT Again!
    • View Profile
    • BaddestHacks.net
Re: Super Mario Bros 3 (New inventory item help?)
« Reply #12 on: April 02, 2015, 04:45:35 am »
It might not be as extensive as hacks like MA or SMB3mix but it's enough to make me happy and proud to make this dream i've had a reality since age 3.
WOW!!!

Just, how young *is* you?!?

ahakomi

  • Jr. Member
  • **
  • Posts: 20
  • I'm just channeling my creativity
    • View Profile
Re: Super Mario Bros 3 (New inventory item help?)
« Reply #13 on: April 03, 2015, 08:12:16 am »
lol I'm 24. I finished my first hack when I was 22 after my near death experience. It wasn't until that happened to me that i was better able to under the hexidecimal in the rom files and how it works. :)

Grimlock

  • Sr. Member
  • ****
  • Posts: 366
  • Graphics Artist, Level Designer
    • View Profile
Re: Super Mario Bros 3 (New inventory item help?)
« Reply #14 on: April 09, 2015, 01:28:21 am »
You should consider uploading your completed hack to the romhacking.net database.  If it is uploaded it doesn't show the hack in your profile.

ahakomi

  • Jr. Member
  • **
  • Posts: 20
  • I'm just channeling my creativity
    • View Profile
Re: Super Mario Bros 3 (New inventory item help?)
« Reply #15 on: April 11, 2015, 03:34:48 am »
I will! Hey actually! I have another question! It's not pertaining to this however it does pertain to me using super mario bros 3 workshop and then using FCEU to go into the rom file. My question is this: Let's say I'm upset about the shortage of Giant Level, or pirhanna plant graphic set levels, is there any way I can go into a level's rom information and change that data so the level can register as a different graphic set.

Example:

If I opened 1-1 and I wanted to make 1-1 go from being a plains level to  a giant level is there any way i could modify the rom file to do that without causing any other part of the rom file to corrupt.

I've seen some people create their own levels entirely and I've always been jealous of that concept instead of working within byte perimeters.  If there's no straight forward answer to this i answer, thank you though for answering :)

Quick Curly

  • Full Member
  • ***
  • Posts: 110
    • View Profile
Re: Super Mario Bros 3 (New inventory item help?)
« Reply #16 on: April 11, 2015, 07:45:16 pm »
I will! Hey actually! I have another question! It's not pertaining to this however it does pertain to me using super mario bros 3 workshop and then using FCEU to go into the rom file. My question is this: Let's say I'm upset about the shortage of Giant Level, or pirhanna plant graphic set levels, is there any way I can go into a level's rom information and change that data so the level can register as a different graphic set.

Example:

If I opened 1-1 and I wanted to make 1-1 go from being a plains level to  a giant level is there any way i could modify the rom file to do that without causing any other part of the rom file to corrupt.

I've seen some people create their own levels entirely and I've always been jealous of that concept instead of working within byte perimeters.  If there's no straight forward answer to this i answer, thank you though for answering :)
Well, short answer, no.
However, really, you shouldn't have to.

Basically, it's because all of the levels of each unique Object Set are stored within the same ROM bank. However, a few Object Sets are grouped together, and yes, those are interchangeable.

Code: [Select]
Interchangeable:
 - Sky & Ice
 - Piranha Plant, Giant & Cloudy
 - Water & Pipe

       1 - Plains: 0x1E509 - 0x2000F
     2 - Fortress: 0x2A7F7 - 0x2C00F
            *NOTE: 0x2A7F7 - 0x2A866 = 7 End Castles
        3 - Hilly: 0x20587 - 0x2200F
          4 - Sky: 0x227E0 - 0x2400F -----------------+
5 - Piranha Plant: 0x26A6F - 0x2800F -----+           |
        6 - Water: 0x24BA7 - 0x2600F -----+-----+     |
         8 - Pipe: 0x24BA7 - 0x2600F -----+-----+     |
       9 - Desert: 0x28F3F - 0x2A00F      |           |
         A - Ship: 0x2EC07 - 0x3000F      |           |
        B - Giant: 0x26A6F - 0x2800F -----+           |
          C - Ice: 0x227E0 - 0x2400F -----+-----------+
       D - Cloudy: 0x26A6F - 0x2800F -----+
  E - Underground: 0x1A587 - 0x1C00F

See those ranges? Each one is a ROM bank. Each Object Set ROM bank has data and code for each respective Object Set so that the game knows how the objects and levels themselves are constructed, and then the actual object data for each level/area. The xx00F range endings are the ends of those ROM banks. The next byte that follows is the beginning of a new ROM bank, and they can't mix, because the game is running one level at a time, and it needs to load the correct Object Set ROM bank for it to work correctly.

Now, you could always set a different Graphic Set for any given level in its level header, and the game will use it when the level loads, but since objects in each Object Set typically differ - which tiles they use to draw the object, the different kinds of objects that vary in size, etc. - things in general won't necessarily display correctly or visually friendly unless the graphics were designed with that Object Set in mind.

Also to note, there is unused space in a few of the ROM banks of the original SMB3 for the possible addition of more levels; some have more free space than others.

Code: [Select]
           Enemies:  0xDA75 -  0xE00F (0x59B)
            Plains: 0x1FFD2 - 0x2000F  (0x3E)
             Hilly: 0x219FD - 0x2200F (0x613)
           Sky/Ice: 0x23FAA - 0x2400F  (0x66)
        Water/Pipe: 0x257A6 - 0x2600F (0x86A)
Plant/Giant/Cloudy: 0x27FEC - 0x2800F  (0x24)
            Desert: 0x29F54 - 0x2A00F  (0xBC)
          Fortress: 0x2BFF6 - 0x2C00F  (0x1A)
              Ship: 0x2FDE1 - 0x3000F (0x22F)

As for working within the original number of bytes for both objects and enemies in each original SMB3 level, you could always avoid that completely by clearing out all of the original levels by writing "FF" bytes over them in each ROM bank through a hex editor, like in FCEUX or FCEUXD.

However, if you do this, there are some original game elements that you should keep in tact to avoid having to work them back in at different offsets. For example, Mushroom Houses, End Castles, and Anchors Away areas.

Code: [Select]
(To view the Mushroom Houses in SMB3 Workshop, select 6 - Water as the Object Set.)

Mushroom House: 0x24D70, 0xC043, 7 - Mushroom
0x24D70 - 0x24DD3 (0x64)

Bonus Mushroom House: 0x2522B, 0xC043, 7 - Mushroom
0x2522B - 0x25288 (0x5E)

Code: [Select]
Original SMB3 End Castle Pointers for Object Data Sets:
0x19260 - World 1 End Castle: 37 A8 (0x2A847)
0x19262 - World 2 End Castle: E7 A7 (0x2A7F7)
0x19264 - World 3 End Castle: F7 A7 (0x2A807)
0x19266 - World 4 End Castle: 07 A8 (0x2A817)
0x19268 - World 5 End Castle: 17 A8 (0x2A827)
0x1926A - World 6 End Castle: 27 A8 (0x2A837)
0x1926C - World 7 End Castle: 47 A8 (0x2A857)
0x1926E - 37 A8 - Unused

End Castle Enemies: 0xD2BF - 0xD2C3 (0x5): 00 D5 0A 16 FF

Code: [Select]
Anchors Away World 1: 0x2EC39, 0xD6AC
Anchors Away World 2: 0x2EC07, 0xD6AC
Anchors Away World 3: 0x2EC20, 0xD6AC
Anchors Away World 4: 0x2F435, 0xD6AC
Anchors Away World 5: 0x2F44E, 0xD6AC
Anchors Away World 6: 0x2F467, 0xD6AC
Anchors Away World 7: 0x2F480, 0xD6AC

Anchors Away Enemies: 0xD6AC - 0xD6B0 (0x5): 00 09 16 14 FF

You could potentially leave in the "Pipe # End #" Underground areas as well, if you know that you'll want pipes for any of your World Maps, but you could always easily make those from scratch, even by referring to the pipe placements in the original SMB3 areas, but redesigning the layouts so that they're different and your own.

Once you have the rest of the original levels cleared out, you can build levels completely from scratch, building object and enemy data sets larger than what working with the original level sizes (without overwriting other levels, anyway) would grant you.
You'll just have to keep track of your custom offsets in a text file, or even on paper, so that you know the information to put in SMB3 Workshop when you're opening your levels to view and/or edit them, and when you're setting the level pointers on your World Maps in the SMB3 Map Editor.
For example, here's the text file that I had from when I worked on "SMB3 Krunk Edition":

Code: [Select]
Custom Offsets
-----------------------------------------------------------------
{NO ENEMIES: 0xC010}

 1. 1E509, C012, 1-Plains

 2. 20587, C032, 3-Hilly ->
    28F36, C064, 9-Desert

 3. 1E607, C09C, 1-Plains <->
    1A587, C0AD, E-Underground

 4. 227E0, C0D6, 4-Sky <->
    26A6F, C010, D-Cloudy

 5. 228DC, C0FC, 4-Sky [Points to itself]

 6. 20727, C11F, 3-Hilly ->
    22A34, C14B, C-Ice <->
    22B0A, C186, C-Ice

    {WORLD 1 UNDERGROUND BONUS PIPE}
    1E6A0, C18B, 1-Plains

 7. 2A867, C196, 2-Dungeon <->
    2A996, C1C2, 2-Dungeon

    {TOAD'S HOUSE}
    24D70-24DD3, 7-Mushroom [Enemy Data Set Used: C1F1]
    [Originally C043]
    0x3C967 changed from 33 to E1.
    0x3C96E changed from C0 to C1.

    {BONUS TOAD'S HOUSE}
    2522B-25288, 7-Mushroom {Same Enemy Data Set}

 8. 1E7E2, C239, 1-Plains ->
    1E6E4, C1F6, 1-Plains ->
    1E78E, C22E, 1-Plains

    {BOWSER'S CASTLE}
 9. 2AA85, C273, 2-Dungeon ->
    2AAE2, C28D, 2-Dungeon <->
    2ABC7, C2B3, 2-Dungeon

    {WORLD 1 COIN SHIP}
10. 2EC07, C2D6, A-Ship ($ABF7, $C2C6) ->
    2EE9C, C31A, A-Ship ($AE8C, $C30A) ->
    2F1C0, C355, A-Ship ($B1B0, $C345)

My current setup is even more detailed, as I've added in some other variables to help me keep track of how I'm building up my worlds overall, and as reminders of which palettes I haven't used yet so that they're free to change and use for new levels, and if an area in a level has a bonus item so that I can control how many are available.

Code: [Select]
  4. 1E80A, C0F1, 1-Plains ->          Pal: Obj 1, Ene 0  (Big ?: Frog Suit)
     1E835, C0F6, 1-Plains ->          Pal: Obj 1, Ene 0
     1E94B, C125, 1-Plains             Pal: Obj 1, Ene 0
          (WORLD 1-3)

The following links provide further reading:

Object Sets, and Free Space in Original SMB3

That Time/Music ASM Hack, Editing Pipe/Door Pointers, "Custom Offsets"/Your Own Level Sizes, etc., SMB3 Krunk Edition

ahakomi

  • Jr. Member
  • **
  • Posts: 20
  • I'm just channeling my creativity
    • View Profile
Re: Super Mario Bros 3 (New inventory item help?)
« Reply #17 on: April 12, 2015, 07:48:49 am »
Okay so most of this stuff Quick Curly that you typed, I read whilst at work tonight! I'm going to review it again and other thread you posted now...

 I have one final question. My last question is I'm using a windows vista computer and I have no idea how the hell you disassemble this game. Do you open it in a program? Either way making a feasible game without even hacking/using the asm (although i'd like to give it a try if it's an attainable goal) is something i can do seeing as I did it before. If I truly don't need an ~assembly tool~ because I'm using a hex editor, so be it then.

Speaking of my hack from before... The Super Mario Bros 3 hack I made wouldn't have been made possible if Quick Curly hadn't helped me with the rom addresses and what not so thank you so much. I was able to create a game I wanted at the time and you'll never know just how grateful I am. Even if it my first hack ever (please don't judge it's level designs lol some of them are noticable as to what levels i used, others of them are damn near impossible to beat simply because I'm also a massotherapist and I really need to keep up with my eye hand coordination)

Either way, thank you all so much for your help. I took two years of standard html and hex/javascript (although i failed out of java because my brain had a hard time understanding it) at the beginning of high school so i dont understand every single thing about this rom and how it works but i do appreciate everyone's diligence to understand what trying to say and trying to help me as best as possible. Being able to create my own version of this game has always been my dream since i was a toddler (and why i enjoyed video games so much in general). Reading other forums and thread and helps me to understand that when i wanna give up sometimes because things are really complicated, that's okay but I'm getting so much better at this! I'll try to have my first hack up sometime before Wednesday night (when I go back to work)

Dr. Floppy

  • Restricted Access
  • Hero Member
  • *
  • Posts: 970
  • Make America GREAT Again!
    • View Profile
    • BaddestHacks.net
Re: Super Mario Bros 3 (New inventory item help?)
« Reply #18 on: April 12, 2015, 10:03:10 pm »
Quote
My last question is I'm using a windows vista computer and I have no idea how the hell you disassemble this game.
...If I truly don't need an ~assembly tool~ because I'm using a hex editor, so be it then.

Hex editors *are* assembly tools, when coupled with an engaged mind. Track down the routines that need alteration and alter them!

henke37

  • Hero Member
  • *****
  • Posts: 643
    • View Profile
Re: Super Mario Bros 3 (New inventory item help?)
« Reply #19 on: April 13, 2015, 01:42:45 am »
Yeah... No. Assembly is much easier to work with than the hex representation of the same data. Let the assembler deal with variable length instructions and how to pack bits correctly.