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

Author Topic: Super mario bros 3 SMB3 workshop, how do I add different enemies ??  (Read 5470 times)

EnigmaGameZ

  • Jr. Member
  • **
  • Posts: 7
    • View Profile
The title says it all but how do I add different enemies in smb3 workshop I also want to add different tiles to place. any help ? I am new to this :p

henke37

  • Hero Member
  • *****
  • Posts: 643
    • View Profile
Re: Super mario bros 3 SMB3 workshop, how do I add different enemies ??
« Reply #1 on: June 08, 2016, 06:07:54 am »
Have you checked out the annotated disassembly of the game?

Quick Curly

  • Full Member
  • ***
  • Posts: 119
    • View Profile
Re: Super mario bros 3 SMB3 workshop, how do I add different enemies ??
« Reply #2 on: June 08, 2016, 12:48:49 pm »
Not trying to come across as forceful or anything, but just to suggest, in the interest of making the best use of forum space, could you please keep any future questions for the same game to the same thread? Saves the trouble of having 5+ SMB3-related threads within the few most recent pages of threads. Again, I'm not trying to moderate in place of actual staff, but for the sake of users who try to help you, it'll be more organized and less hectic with other members still posting in unrelated threads. Perhaps a Romhacking.net version of a "General SMB3 Hacking Thread" would work out well over here now, too. Maybe.

Anyway, on to your new question. When you open the editor and load your ROM, the default 1-1 should display. There are icons at the top of the window underneath the menus. You should notice a group with a coin, a ground corner, a Goomba, and a blue dash. If you hover over an icon, text tips will display for you what it does.

If you left-click the coin icon, and then click within the level display space, a 3-byte object will be placed.
If you left-click the ground icon, and then click within the level display space, a 4-byte object will be placed.
If you left-click the Goomba icon, and then click within the level display space, a new enemy will be placed.

You can select a 3-byte or 4-byte object by left-clicking on it. Move it by dragging it with your left clicker.
You can select an enemy by right-clicking on it. Move it by dragging it with your right clicker.

You can change the selected object or enemy in the bottom-right corner of the editor by changing Bank for objects, Length for 4-byte objects, and Type for both objects and enemies. Avoid crash objects and enemies (something that isn't specifically coded to function properly if placed in the game/level).

Considering that you established that you're newer to SMB3 hacking as a whole, I feel the need to stress to you the following point:
You do NOT have unlimited level space.
If you add more objects and/or enemies than the original number(s) in a level of the original game, then you'll be overwriting level data in at least one other level. All of the data sets are ordered side-by-side within the Object Set and enemy banks in the ROM.

For example, 1-1 has 81 3-byte objects, 5 4-byte objects, and 15 enemies. The level data is made up of 263 bytes in decimal (107 in hex) excluding the 9-byte level header that each area has to define specific level properties.
3-byte objects and 4-byte objects both attribute to the level's (object) data, and they are interchangeable in terms of total bytes used and available.
Enemies are separate from object data.

(81 x 3) + (5 x 4) = 263
243 + 20 = 263

This means that your modified 1-1 must be 263 bytes in size (or less). Otherwise, you'll be cutting into the next object data set.
Similarly, your level must have a maximum of 15 enemies, or you'll be cutting into the next enemy data set.

You must account for these original limits for every level that you edit.

Another factor to consider is to avoid making your level designs similar to the levels in the original game. Don't only move objects and enemies around and keep the rest of the level the same. Be sure to clear everything out first.
Under the Object menu, hover over Delete All, and select 3-Byte Objects. Repeat for 4-Byte Objects and Enemies.

The workaround for original level size limits is the "Custom Offsets" method, which involves clearing everything out directly in the ROM through a hex editor, and building everything from scratch. However, this is much more involved, and for a new hacker, you should take your time to become more familiar with the basics first.

However, I'm more than willing to help you through the learning process step-by-step, and doing my best to help answer any other questions that you may have as you begin and continue to learn. Like I mentioned earlier, I feel that it would be best to just continue to use the same single thread to save forum space, so please feel free to ask any additional questions here. I might not always be immediately available to try to answer them for you, but I'll do my best to be get back to you when I can, and help with what I possibly can.

Best of luck with your project. You can do it! Keep at it!

EnigmaGameZ

  • Jr. Member
  • **
  • Posts: 7
    • View Profile
Re: Super mario bros 3 SMB3 workshop, how do I add different enemies ??
« Reply #3 on: June 11, 2016, 12:14:03 am »
Thank you very much ! And I am so sorry about making new threads.. I thought that's what I would have to do.. sorry again. But yeah I can change enemies now :) and the max number of objects in every level can go up to 263 you said ?

also with enemies I can only put 15 or less per level ?

I don't think I will get into hex editing yet, like you said I think I am better off to learn the basics first xD But I am sure I will have more questions so if I get stuck I will reply on this thread !

Again thanks for the help !

June 11, 2016, 12:30:59 am - (Auto Merged - Double Posts are not allowed before 7 days.)
Sorry not sure if double posting is a good idea.. But I can change the enemies in 1-1 but I keep getting the same 7 ground tiles.. and only like two of them are ground.. the rest is like water or quicksand

June 11, 2016, 12:33:38 am - (Auto Merged - Double Posts are not allowed before 7 days.)
Also is music hard to do on a rom hack ? like custom music ?
« Last Edit: June 11, 2016, 12:33:38 am by EnigmaGameZ »

Quick Curly

  • Full Member
  • ***
  • Posts: 119
    • View Profile
Re: Super mario bros 3 SMB3 workshop, how do I add different enemies ??
« Reply #4 on: June 11, 2016, 12:03:24 pm »
You're very welcome. No worries. It's understandable. Nice to meet you. :)

The original and maximum numbers differ for each level/area. They're not originally all the same size. Similar to when you see the numbers of 3-byte objects, 4-byte objects, enemies, and total bytes used for 1-1, when you select another level, you'll see what all of the numbers originally are for the currently loaded, unmodified level.

I put together the SMB3 Level and Pointer Data document to show the original numbers of 3-byte objects, 4-byte objects, and enemies in each level so that the hacker has a reference in case they've already cleared everything out and don't remember the numbers that they shouldn't exceed.

Similarly, the SMB3 Object Data & Enemy Data Orders document organizes the data sets for all of the levels to show which levels are side-by-side, in case a hacker intends to exceed the original number of bytes used for objects and/or enemies, so that they can see the other specific level(s) that they'll be cutting into. This way, they'll know that they shouldn't open those levels from their original starting points anymore, or else they'll be cutting into their extended levels.

You're very welcome again. :)

The board will merge your posts together if you double post before 7 days have passed, but you can also edit your original post to add on anything else that you think of after you initially submit it.

The enemies available will always be the same between Object Sets. However, you should also keep in mind that not all enemies share the same graphical banks, and if you try to combine incompatible enemies, they'll function as they should, but they won't appear as they should, because they can't be displayed together. There is an enemies document/HTML file included with SMB3 Workshop that should help you learn which enemies can appear with others.

For 3-byte and 4-byte objects, they will differ depending on the Object Set. For example, for "1 - Plains" levels, the only real 4-byte objects are:

- Flat Ground (Bank 0, Type 192-207 (C0-CF); C0 is 1 block high and C1 is 2 blocks high; if you want to make larger ground appear, place one C1 Flat Ground object down, and then place the bottom row of another C1 Flat Ground object over the top row of the bottom one, and repeat for as high up as you would like the ground to display, making sure that all of the grounds are the same length, so they all appear as one large ground object.)
- Underwater Flat Ground (Bank 0, Type 208-223 (D0-DF); same as above concerning height, although this object is usually reserved for ground within water boundaries.)
- Waterfall (Bank 2, Type 96-111 (60-6F))
- Water (moves to left) (Bank 2, Type 112-127 (70-7F))
- Water (still) (Bank 2, Type 128-143 (80-8F); this is almost always, if not always, the water object that is used in levels in the original SMB3, except for "6 - Water" levels, as there's actually a 3-byte object (Bank 0, Type 13 (0D) in Water levels only) that sets the water level throughout the whole area.)
- Water (moves to right) (Bank 2, Type 144-159 (90-9F))
- Background used in Bowser's Castle (Bank 2, Type 160-175 (A0-AF); this acts like water in Object Sets other than "2 - Dungeon", and unless it's part of a gimmick that you plan to use, it's probably best not to bother using it.)
- Blue X-Blocks (Bank 2, Type 176-191 (B0-BF); you might discover yourself using these a lot!)
- Weird Quicksand (doesn't act like it) (Bank 2, Type 192-207 (C0-CF); quicksand only functions as it should in "3 - Hilly" and "E - Underground" levels; in other Object Sets, the "weird" quicksand behaves more like regular ground or "Blue X-Blocks"; so if you have a gimmick in mind, you can probably get away with using it; otherwise, maybe avoid it instead.)
- Weird Orange Background (Bank 2, Type 208-223 (D0-DF); honestly, I didn't even remember that this was accessible through "1-Plains" levels, if it is even anything functional, that is; "weird" is probably a good enough reason to avoid using it.)

For "3 - Hilly" and "E - Underground" levels, there are many objects available to draw the large areas of grass/ground (4-byte objects), including all the little details like corners and walls (3-byte objects). Over time and with practice, you will eventually begin to more easily remember where each specific object is in every Object Set, and then it'll be second nature as you instinctively build your levels on the spot.

When it comes to music...

Long answer:

Generally, yes, it's not a straight forward task. Having musical knowledge and awareness definitely helps. However, the difficulty comes into play since most games all use a different musical format, so you can't simply copy and paste music data from one game to another and expect it to play and sound the same.

Back in the past, I was in the process of changing the music by referring to piano sheet music for the song that I wanted to implement, and having the hex representations for the music notes in SMB3 on hand. However, I ended up not bothering in the end, since I usually grow tired of doing everything by myself, and it's never that great anyways.

There is an available SMB3 Music Editor program by JaSp at the following download link:
http://klikechange.free.fr/romhack/smb3asm/smb3me.exe

Here are the SMB3 notes, obtained through the utility:

Code: [Select]
7E: Rest
7C: D-7
7A: C#7
78: B-6
76: A#6
74: A-6
72: G#6
70: G-6
6E: F#6
6C: F-6
6A: E-6
68: D#6
66: D-6
64: C#6
62: C-6
60: B-5
5E: A#5
5C: A-5
5A: G#5
58: G-5
56: F#5
54: F-5
52: E-5
50: D#5
4E: D-5
4C: C#5
4A: C-5
48: B-4
46: A#4
44: A-4
42: G#4
40: G-4
3E: F#4
3C: F-4
3A: E-4
38: D#4
36: D-4
34: C#4
32: C-4
30: B-3
2E: A#3
2C: A-3
2A: G#3
28: G-3
26: F#3
24: F-3
22: E-3
20: D#3
1E: D-3
1C: C#3
1A: C-3
18: B-2
16: A#2
14: A-2
12: G#2
10: G-2
0E: F#2
0C: F-2
0A: E-2
08: D#2
06: D-2
04: C#2
02: C-2
00: End Channel

*100% accuracy not guaranteed.

This is a quote from a post I made back in 2009, probably while consuming something past the best before date:

<=7E are notes, as seen in JaSp's awesome and extremely helpful document.
80 - 8F, as well as 90 - 9F, determine the type of notes that follow. (You might see 8C and 9C, but not necessarily 8F and 9F. I'm just using the full range as an example.) The range you use depends on the specific music data that you're editing. As you'll see with some music like the Dungeon (I think), you'll see ranges used like B0 - BF.

81 and 91 = 0.25
82 and 92 = 0.5
83 and 93 = 0.75
84 and 94 = 1
85 and 95 = 1.25?
86 and 96 = 1.5?
87 and 97 = 1.75?
88 and 98 = 2
89 and 99 = 3
8A and 9A = 4
8B and 9B = Undefined / >4
8C and 9C = 8 (Although 1.6 is implied for some reason)

*100% healthiness and sanitation not guaranteed.

Short answer:

The music is easy to "change". Just type random numbers and prepare your ears for awesomeness! :D

EnigmaGameZ

  • Jr. Member
  • **
  • Posts: 7
    • View Profile
Re: Super mario bros 3 SMB3 workshop, how do I add different enemies ??
« Reply #5 on: June 12, 2016, 02:19:55 am »
Hi again! and thanks a lot I was messing around with the music on the overworld and I broke it the overworld went black haha. Might leave the music the way it is :p

Prob won't mess with pipes on overworld or in levels either they look confusing.. But how do I edit the mushroom homes ? that gives u items .

also the ground tiles are bugging me.. I can't change them.. it's always a blue box with a X on it..

http://imgur.com/RayHADo

Heres a link to the block I keep getting and can't change..

Quick Curly

  • Full Member
  • ***
  • Posts: 119
    • View Profile
Re: Super mario bros 3 SMB3 workshop, how do I add different enemies ??
« Reply #6 on: June 16, 2016, 09:36:08 am »
Well, music can always potentially come later, especially for your first hack. Work on the easier stuff first, and hopefully accomplishing smaller tasks builds the motivation and experience to pursue bigger avenues later on.

If you don't try new things, then you can't learn. Some things just take some getting used to. I've actually made tutorials with visual images to cover editing both pipe/door pointers in levels and adding a pipe system to the world 1 map in the past. You can check out these tutorials at the following links.

Editing Pipe/Door Pointers (second section in post):
http://acmlm.kafuka.org/board/thread.php?pid=139130#139130

Map Pipe Pointers:
https://jul.rustedlogic.net/thread.php?pid=197193#197193

Similarly, to edit the Mushroom Houses, you have to edit the pointers using the SMB3 Map Editor.
In Pointers mode, left-click to select the pointer for the Mushroom House that you want to change. Press Enter. A "Select Stage" window will pop up.
In the left "Worlds:" section, select the last option, "Toad House: Item".
In the right "Levels:" area, you can select the items combination that you want for that specific Mushroom House.
If you want different item combinations, you would have to modify the item values directly in a hex editor at the appropriate ROM offsets. There is a "hacking_notes.txt" document included with SMB3 Workshop which provides the following information:

Code: [Select]
0x3B14B = Table of items used to create Mushroom House treasure chests.               
    Some bytes affect the "all same items" mushroom houses. Meaning, if all the chest have               
    the same items, then only 1 byte is needed to define the chests, rather than 3. The first           
    5 bytes affect these type of mushroom houses. The 3rd is for all Frogs, 4th is all 
    Tanooki, 5th is all Hammer. 1st is All Whistles (never seen in the game), 2nd is all                 
    P-Wings (also never seen in the game).I believe these two are used for White Mushroom               
    houses. The rest are 3 item houses. One type is 0A 0A 0A, all three anchors. This is the             
    ONLY exception to the same-type house rule. And remember, the definitions come in groups             
    of three. Example: The second set (bytes 9, 10, and 11) is 01, 02, 03, a set of three               
    defining the Mushroom, Flower, and Leaf type houses. For item values, see global item table.         

Here are the values at the listed ROM offsets, as well as the labels defined in the SMB3 Map Editor (not necessarily representative of the specific order of the values as they appear in the ROM).

0x3B14B: 0C - Warp Whistle Only
0x3B14C: 08 - P-Wing Only
0x3B14D: 04 - Frog Suit Only
0x3B14E: 05 - Tanooki Suit Only
0x3B14F: 06 - Hammer Suit Only

0x3B150-0x3B152: 04 05 06 - Frog, Tanooki, Hammer Suit
0x3B153-0x3B155: 01 02 03 - Mushroom, Leaf, Flower
0x3B156-0x3B158: 04 02 03 - Leaf, Flower, Frog Suit
0x3B159-0x3B15B: 05 02 03 - Leaf, Flower, Tanooki Suit
0x3B15C-0x3B15E: 0A 0A 0A - Anchor Only

The other combinations, as far as I can tell, are actually unintended, as they restart from the beginning of the table. Don't necessarily count on them for reliability or working as intended, especially if you modify the values for any of the other legitimate combinations.

0x3B14B-0x3B14D: 0C 08 04 - Warp Whistle, P-Wing, Frog Suit
0x3B14C-0x3B14E: 08 04 05 - Frog Suit, P-Wing, Tanooki Suit
0x3B14D-0x3B14F: 04 05 06 - Frog Suit, Tanooki Suit, Hammer Suit
0x3B14B-0x3B14D: 0C 08 04 - Warp Whistle, P-Wing, Frog Suit
0x3B14C-0x3B14E: 08 04 05 - Frog Suit, P-Wing, Tanooki Suit

As for your image, to be honest, I can't tell exactly what's going on. Can you please provide more specific details as to what exactly you did to get to that point? I believe it's safe to determine that you deleted all of the 3-byte objects, 4-byte objects, and enemies. Did you make sure the object was selected before you tried to modify it? I've found that sometimes, SMB3 Workshop won't allow you to select the object from clicking more on the right side of it. If this is ever the case, try clicking more towards the top-left corner of the object to successfully select it. With it selected, did you try modifying the Bank and Type values of the object to cycle through different kinds of possible objects?
Also, under the Edit menu, do you have "Freeform Mode" checked and "Limit Size" unchecked?

As an unrelated point, I couldn't help but notice that you don't have grid-lines displayed within the editor. It might benefit you visually to see the full area within which you can place your objects. If an object extends below the Y: 026 line, it will overextend and appear coming down from the Y: 000 line (the top of the screen) while in the game. To enable or disable the grid-lines, under the View menu, select "Gridlines".

As always, best of luck.

EnigmaGameZ

  • Jr. Member
  • **
  • Posts: 7
    • View Profile
Re: Super mario bros 3 SMB3 workshop, how do I add different enemies ??
« Reply #7 on: June 18, 2016, 07:55:31 am »
You have been so much help thanks a bunch ! I figures out the tile issue and I have finally finished my first level :)

Thanks in advance for the pipe and door info, I was going to ask about them for overworld and in levels :p

Here's my level, let me know what you think :)

http://imgur.com/kPzShhC