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

0 users currently in ROM Hacking | 4 guests

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

ShaneM
Posted on 02-26-15 05:53 PM Link | Quote | ID: 159540


Snifit
Compromised account.
Please contact an admin to restore access.
Level: 36

Posts: 270/285
EXP: 293435
Next: 14675

Since: 02-17-14

Last post: 3136 days
Last view: 2652 days
Posted by Insectduel
The 8th Koopa Kid is ready for download and to be used in your own project. You can also add the Koopa Kid Level Header Counter code in your project if you want the 8th Koopa Kid to the faced in World 1, World 5, etc which is available on my homepage.

It's only 98% completed but I cannot fix the 8th Koopa Kid's wand swing which is too complicated even with SMB3 Disassembly but I can't fix it.

Enjoy!


Ah. Looks promising. Keep up the good work.

____________________
At the end, when the day is over, the only one left to face is yourself. Have you been true to yourself and made the most of your day?

Quick Curly
Posted on 06-17-15 08:45 PM Link | Quote | ID: 160326


Giant Red Paratroopa
Level: 77

Posts: 1148/1443
EXP: 4171974
Next: 19155

Since: 06-15-08
From: Earth

Last post: 20 days
Last view: 20 days
I discovered the following quirk with the SMB3 pipe system back in March 2015 while trying to finish up Quick Bros. 2, and now that the project is completed and released at long last, I wanted to share my findings here.

Underground Pipe Death Oversight

In SMB3, pipes on the map screen can move you back and forth between different locations. Each pipe set has an entrance and exit for a left pipe and a right pipe on the map.
In the actual underground area once you enter a pipe, there are 2 pipes that you can enter - a left pipe and a right pipe. How the game determines which pipe location you appear at on the map is determined by which half of the screen you're on when you enter a pipe. Consider the screen split in half. As seen in the first 4 images, there is a left pipe and a right pipe for the pipe set that we are working with (#1). Mario enters the left pipe in the set (#2), and in the underground area, enters the right upward pipe, which is located on the right half of the screen (#3), to appear at the right pipe in the set on the map (#4).

However, the way this system works is also the cause of a potential, unintentional oversight. Even though it doesn't appear to have any harmful effect on the game as a whole, it can catch one off guard, and cause momentary confusion. Now, remember that when the player dies in a level, Mario or Luigi will fly across the map screen, starting from the location of the level they entered, and return to the last level they completed, the last Hammer Brother they defeated, or the last pipe they had exited from.
In the next 4 screens, Mario enters the left pipe in the set (#5), is standing on the left half of the screen in the underground area (#6), and dies by letting the time run out (#7). As a result, Mario flies from the left pipe because it was the last level that he entered before dying, and since it was the last pipe that he exited, he also returns there (#8).

However, in the scenario illustrated by the last 3 images, Mario has still entered the underground area using the left pipe in the set, but is now standing on the right half of the screen instead of the left half (#9), when he dies from running out of time (#10). As a result, even though the last level he entered was from the left pipe in the set on the map, Mario starts flying from the right pipe in the set instead! The game considered that Mario was on the right half of the screen in the underground area, and because the sprite that changes the exiting map location allows for 2 different potential exits, the game was using the right exit as the starting point, though it wrongfully thought that Mario had just entered the right pipe, while it was just a case of him standing on the right side of the screen when he died! This oversight, while not truly game-breaking, but logic-breaking to some degree, might not have been discovered and fixed due to the unlikely possibility that the player would actually die in an underground area of a pipe set; or, if it was actually known, it probably wasn't changed because it really wasn't that big of a deal, and the system that allows for 2 exits works despite this, and didn't need to be fixed otherwise.



Could this be worth noting as an official/established SMB3 bug/glitch? While nothing funky truly goes on, like nothing is manipulated or anything, such an oversight couldn't have been intentional, in my opinion. It's only an assumption that it was considered not worth fixing, if it was even known. Nonetheless, it's just simply something that I found from a combination of pipe level enemies and accidental deaths. For all I know, other wild SMB3 hackers have made the same unexpected discovery, but as much as I searched after finding it, I couldn't find it reported or documented anywhere.

In an attempt to further revive this thread, I might work on a new tutorial or two to cover a couple ASM hacks that I did for the main hacks in my recently released Quick Bros. 2 Hack Pack.

In the meantime, I'll copy over a little tutorial I did covering how to implement an infinite lives hack for SMB3, and provide a bit of insight into how to find RAM addresses for the functions that one could be looking for, specifically directed towards newer hackers who could use some helpful additional direction.

Infinite Lives ASM Hack

First, here is a handy link for 6502 Opcodes. I would recommend saving this page as an offline HTML file for easy access. Much like any information that you find online that is helpful and handy, you never know when it might randomly disappear.

6502.org: Tutorials and Aids

If the RAM address isn't known, then you have to find it first by trial and error methods. However, thanks to the SMB3 RAM Map on Data Crystal, we can discover that the RAM address for Mario's lives is $0736, and the RAM address for Luigi's lives is $0737.

In the case that we didn't, however, we could find those addresses by clicking in the Tools menu and selecting Cheats. Click Reset, and the values in RAM are displayed. Since Mario and Luigi start with 04 lives, try a Known Value of 04. The possibilities are reduced and narrowed down. Next, play through the game, lose a life, and then open the Cheats window again. The values on the left side are the original values of 04 from before, and the values on the right side are the updated/changed values. Only one value decreased to 03 - $0736 - and in most cases, we can conclude that it's the correct RAM address that we're looking for. In some cases, further testing to confirm this might be necessary. You would have to repeat the process for Luigi to find where his lives are stored. However, some games store common variables closely together in RAM, so you can sometimes find one and make an educated guess as to where the second player's lives are, like in this case for SMB3.

So, for testing purposes, we'll need a 2-player game to make sure that the infinite lives work for both players.

Set write breakpoints to the RAM addresses for both players' lives. In this case, set write breakpoints to both $0736 and $0737. Play through the game as Mario and lose a life. The debugger freezes at $9123, or 0x3D133 in the ROM:

$9123:DE 36 07  DEC $0736,X @ $0736 = #$04

See the X in "DEC $0736,X"? That means that, depending on what the value of the X register is, an address following $0736 has the potential to be decreased too, i.e. $0737, Luigi's lives.

By clicking Run, the debugger doesn't freeze again. Only one write to $0736.

Play through the game as Luigi and lose a life. The debugger freezes at $9123 again.

$9123:DE 36 07  DEC $0736,X @ $0737 = #$04

X is 01 this time. So, this one line of code - these 3 bytes - decrease the lives counters for both players whenever they lose lives.

Remember the NOP Opcode that the tutorial from earlier referred to? It's EA. Basically, it does nothing. So, go to 0x3D133 in the ROM, and replace "DE 36 07" with "EA EA EA". With the write breakpoints still active, click Run and play through the game with this change implemented. The debugger won't freeze again because the code that wrote to it is gone now, and the lives counters can't decrease, meaning that Mario and Luigi have infinite lives!

Now, the lives counters can still potentially increase by collecting 1-UPs, collecting coins, collecting 3 cards at the ends of levels, playing the spade games, etc. unless you decide to find all of the cases of code that will increase these counters and NOP them out too, but regardless of that, they can never reach 0!

Hopefully this helps somewhat in getting a little more insight to Assembly, Opcodes, and the debugger and other tools of the FCEUX/FCEUXD emulator(s) series.
And remember - you can do it!

In addition, before I finish up with this post, I'd like to bring attention to an ASM hack that the awesome RetroRain came up with back in May 2008, simply referred to as "Suicidal Mario", which makes use of the Select button while playing levels in the game.

RetroRain's "Suicidal Mario" ASM Hack

I do not take any form of credit for his code or anything of the sort. I am simply bringing it to the attention of any future readers of this pinned SMB3 hacking thread so that more people can discover and learn from it, as I've always come back to his "Suicidal Mario" topic over the years, and I personally feel that his ASM hack is under-appreciated, especially considering that the thread is long buried now, making it much more difficult for newcomers who weren't around back when it was originally posted to find out about it.

0x10C40
$AC30:20 13 E9 JSR $E913
$AC33:EA NOP
$AC34:EA NOP
$AC35:EA NOP

0x3E923

$E913:A5 18 LDA $18
$E915:29 20 AND #$20
$E917:C9 20 CMP #$20
$E919:D0 03 BNE $E91E
$E91B:4C 7C DA JMP $DA7C
$E91E:A5 18 LDA $18
$E920:29 80 AND #$80
$E922:85 00 STA $00
$E924:60 RTS

That's all for now! Thank you for reading!

Quick Curly
Posted on 07-24-15 02:23 AM Link | Quote | ID: 160472


Giant Red Paratroopa
Level: 77

Posts: 1152/1443
EXP: 4171974
Next: 19155

Since: 06-15-08
From: Earth

Last post: 20 days
Last view: 20 days
Inventory Bar Worldly Palette ASM Hack

Here are the offsets for the palette changes that the game loads when the player opens the inventory, flips through the pages in the inventory, and then closes the inventory:

0x3413A (0x1) - Colour of map status bar when returned from inventory (3C).
0x34144 (0x1) - Colour of map status bar when in inventory (36).
0x34541 (0x1) - Colour of map status bar when switching item slots (36).

Here is the original code in the SMB3 ROM, located at 0x34139 ($A129 in RAM) and 0x34532 ($A522 in RAM) in the ROM file:

$A129:A0 3C     LDY #$3C       ; Colour for returning from inventory
$A12B:AE 00 03 LDX $0300
$A12E:AD F2 05 LDA $05F2
$A131:F0 02 BEQ $A135
$A133:A0 36 LDY #$36 ; Colour for inside inventory
$A135:98 TYA
$A136:9D 07 03 STA $0307,X
$A139:8D C4 07 STA $07C4 ; 4th slot in first quarter of palette in RAM
$A13C:8D E1 7D STA $7DE1 ; Another copy of palette, but no effect
$A13F:AD 00 03 LDA $0300
$A142:18 CLC
$A143:69 07 ADC #$07
$A145:8D 00 03 STA $0300
$A148:EE E6 03 INC $03E6
$A14B:60 RTS

$A522:AE 0A 07 LDX $070A
$A525:E0 07 CPX #$07
$A527:F0 10 BEQ $A539
$A529:AA TAX
$A52A:BD 14 A5 LDA $A514,X
$A52D:8D DF 07 STA $07DF
$A530:A9 36 LDA #$36 ; Colour for switching item slots inside inventory
$A532:8D C4 07 STA $07C4 ; 4th slot in first quarter of palette in RAM
$A535:A9 06 LDA #$06
$A537:85 5E STA $5E
$A539:60 RTS

Add this at 0x35530 in the ROM:

0x35530-0x35563 (0x34)
3C 3C 3C 3C 3C 3C 3C 3C 3C 36 36 36 36 36 36 36
36 36 AC 27 07 B9 20 B5 A8 AE 00 03 60 AC 27 07
B9 29 B5 A8 60 98 9D 07 03 60 AC 27 07 B9 29 B5
8D C4 07 60

Essentially, we're creating two new tables of data, each 9 bytes in length, with each byte representing 1 of the 9 worlds.
The table with the "3C" bytes will represent the outside colour of the status bar when it's closed.
The table with the "36" bytes will represent the inside colour of the status bar when it's opened. Since the colour is the same in the status bar when inside it, and while switching item slots inside it, there was only need for one table to load from for both cases. However, the code can be adjusted to account for a third table if you really want the colours to be different when you first open it and when you're switching item slots, although that might not be as visually pleasing as one might hope with the thought of the idea.
The custom code for handling the colour tables directly follows them, and the code is displayed following the adjusted code which directs to this free space in ROM.

Compared to the original code seen above, here is the modified code which jumps to the custom code following the new data tables:

$A129:20 32 B5  JSR $B532      ; For returning from inside inventory to outside
$A12C:EA NOP ; Disabled byte
$A12D:EA NOP ; Disabled byte
$A12E:AD F2 05 LDA $05F2
$A131:F0 03 BEQ $A136
$A133:20 3D B5 JSR $B53D ; For inside inventory
$A136:20 45 B5 JSR $B545 ; Moved code
$A139:8D C4 07 STA $07C4
$A13C:8D E1 7D STA $7DE1
$A13F:AD 00 03 LDA $0300
$A142:18 CLC
$A143:69 07 ADC #$07
$A145:8D 00 03 STA $0300
$A148:EE E6 03 INC $03E6
$A14B:60 RTS

$A522:AE 0A 07 LDX $070A
$A525:E0 07 CPX #$07
$A527:F0 10 BEQ $A539
$A529:AA TAX
$A52A:BD 14 A5 LDA $A514,X
$A52D:8D DF 07 STA $07DF
$A530:20 4A B5 JSR $B54A ; For switching item slots inside inventory
$A533:EA NOP ; Disabled byte
$A534:EA NOP ; Disabled byte
$A535:A9 06 LDA #$06
$A537:85 5E STA $5E
$A539:60 RTS

This is the adjusted/custom code, located at 0x35542 in the ROM where we added it as seen above, which checks for the current world, and then loads from the tables that we created to obtain a unique colour to store in the palette:

$B532:AC 27 07  LDY $0727      ; Current World
$B535:B9 20 B5 LDA $B520,Y ; Colour for returning from inside inventory to outside
$B538:A8 TAY
$B539:AE 00 03 LDX $0300
$B53C:60 RTS
$B53D:AC 27 07 LDY $0727 ; Current World
$B540:B9 29 B5 LDA $B529,Y ; Colour for inside inventory
$B543:A8 TAY
$B544:60 RTS
$B545:98 TYA
$B546:9D 07 03 STA $0307,X
$B549:60 RTS
$B54A:AC 27 07 LDY $0727 ; Current World
$B54D:B9 29 B5 LDA $B529,Y ; Colour for switching item slots inside inventory
$B550:8D C4 07 STA $07C4
$B553:60 RTS

I realize that this isn't much of a tutorial, but hopefully providing the code is enough direction to successfully implement this. If anything else can be further explained, please let me know, and I'll see what I can do.

3 Matching Cards Black Palette ASM Hack

This is not really the best potential workaround for this, but it works well enough for me.

You remember how collecting 3 matching End Cards draws a large Mushroom, Flower, or Star in the sky, depending on the cards that you matched? Well, if the second slot in the second quarter of the objects palette is anything other than #$0F black, the background colour of the animated circular tiles used to draw the large Mushroom, Flower, or Star will be that colour, which conflicts with the rest of the black background.

Basically, I found a point in the original code that happens at the point of detecting 3 matching End Cards, and added code to replace the second slot in the second quarter of the objects palette with black, whether or not it already is.

Here is the original code in the game, at 0x5F92 in ROM, which checks to see if all 3 End Cards match:

$BF82:B9 9E 7D  LDA $7D9E,Y @ $7D9E = #$03
$BF85:F0 18 BEQ $BF9F
$BF87:D9 9C 7D CMP $7D9C,Y @ $7D9C = #$03
$BF8A:D0 13 BNE $BF9F
$BF8C:D9 9D 7D CMP $7D9D,Y @ $7D9D = #$03
$BF8F:D0 0E BNE $BF9F
$BF91:95 9A STA $9A,X @ $00A0 = #$03
$BF93:A9 01 LDA #$01
$BF95:95 D9 STA $D9,X @ $00DF = #$04
$BF97:4E F3 05 LSR $05F3 = #$81
$BF9A:A9 04 LDA #$04
$BF9C:8D F4 04 STA $04F4 = #$20
$BF9F:60 RTS

So, at $BF93 in RAM, or 0x5FA3 in the ROM, I inserted a jump to $FF2A in RAM, or 0x3FF3A in the ROM, to set the palette slot to black.

$BF93:20 2A FF  JSR $FF2A      ; Jump to custom code
$BF96:EA NOP

This code is added at 0x3FF3A in the ROM:

$FF2A:A9 0F     LDA #$0F       ; Black
$FF2C:8D C6 07 STA $07C6 ; 2nd slot in second quarter of palette in RAM
$FF2F:8D E3 7D STA $7DE3 ; Other palette storage in RAM, just for the heck of it
$FF32:A9 01 LDA #$01
$FF34:95 D9 STA $D9,X
$FF36:60 RTS

Now, the effect of this, visible if the colour is anything other than black when the black is set, takes effect as soon as the third matching End Card is grabbed, so the colour change is seen in the ground before the sequence finishes up in the sky.

When I implemented this for my newer hacks, I didn't bother to look any further to see if there was a way to account for the time it takes to lift the screen up away from the ground to the sky before applying the black colour change, or if there was a better insertion point to apply the black colour change after the screen had already been lifted up. However, the possibility of such an adjustment to this code is something to consider. Nonetheless, it's worth just posting about the idea and providing an example that does work, minor details ignored.

Termingamer2-JD
Posted on 08-27-15 04:37 PM Link | Quote | ID: 160938


Ropa
Banned: repeat sockpuppeting
Level: 53

Posts: 110/739
EXP: 1133684
Next: 23435

Since: 08-06-15
From: England

Last post: 2674 days
Last view: 680 days
Since I might start doing level design for smb3:

What's the best SMB3 Hacking Tool you can find? I mean for level design of course.

____________________
Jamie Dignam

MiniCompute
Posted on 08-27-15 10:04 PM Link | Quote | ID: 160939


Bubble
Level: 66

Posts: 760/981
EXP: 2421256
Next: 40595

Since: 04-25-07

Last post: 488 days
Last view: 697 days
Posted by Termingamer2-JD
Since I might start doing level design for smb3:

What's the best SMB3 Hacking Tool you can find? I mean for level design of course.



http://datacrystal.romhacking.net/wiki/Super_Mario_Bros._3

Termingamer2-JD
Posted on 08-28-15 12:27 PM Link | Quote | ID: 160943


Ropa
Banned: repeat sockpuppeting
Level: 53

Posts: 111/739
EXP: 1133684
Next: 23435

Since: 08-06-15
From: England

Last post: 2674 days
Last view: 680 days
Posted by Mike-Tech
Posted by Termingamer2-JD
Since I might start doing level design for smb3:

What's the best SMB3 Hacking Tool you can find? I mean for level design of course.



http://datacrystal.romhacking.net/wiki/Super_Mario_Bros._3

I was hoping you wouldn't refer me again, but tell me exactly what level editor.

____________________
Jamie Dignam

MiniCompute
Posted on 08-28-15 01:55 PM Link | Quote | ID: 160944


Bubble
Level: 66

Posts: 762/981
EXP: 2421256
Next: 40595

Since: 04-25-07

Last post: 488 days
Last view: 697 days
Posted by Termingamer2-JD
tell me exactly what level editor.


I already did if you are unable to read what is in the hyperlink why bother asking for help at all ?
Make sure to click the link and read the whole page carefully you can't miss it.

Termingamer2-JD
Posted on 08-28-15 07:46 PM (rev. 2 of 08-28-15 07:49 PM) Link | Quote | ID: 160945


Ropa
Banned: repeat sockpuppeting
Level: 53

Posts: 112/739
EXP: 1133684
Next: 23435

Since: 08-06-15
From: England

Last post: 2674 days
Last view: 680 days
All you replied was a hyperlink. I read it, as is clear by me saying 'WHICH level editor?'.

There were a few there, obviously one is going to be better than the others, isn't that right?

I needed your opinion and the board's opinion.

Stop going around here if you just seem to moan about things all the bloody time.

____________________
Jamie Dignam

Googie
Posted on 08-28-15 08:05 PM Link | Quote | ID: 160946


Giant Red Paratroopa
Level: 77

Posts: 1126/1407
EXP: 4180746
Next: 10383

Since: 02-19-07
From: Brooklyn, NY

Last post: 8 days
Last view: 8 days
Posted by Termingamer2-JD
Since I might start doing level design for smb3:

What's the best SMB3 Hacking Tool you can find? I mean for level design of course.


Use SMB3 Workshop, that's the best one for level designing...

____________________
My Linktree

MiniCompute
Posted on 08-28-15 08:35 PM Link | Quote | ID: 160948


Bubble
Level: 66

Posts: 763/981
EXP: 2421256
Next: 40595

Since: 04-25-07

Last post: 488 days
Last view: 697 days
Posted by Termingamer2-JD
All you replied was a hyperlink. I read it, as is clear by me saying 'WHICH level editor?'.

There were a few there, obviously one is going to be better than the others, isn't that right?

I needed your opinion and the board's opinion.




If you would stop going off the deep end for a minute or hour and click on that link. :/
You would have realized the level editor you needed was in it and that is what I've used.
It even had the necessary info for beginner smb hackers like you.

If you don't like this answer, contact ninja blooper and have him review the link and these posts. :|

Termingamer2-JD
Posted on 08-29-15 11:49 AM Link | Quote | ID: 160956


Ropa
Banned: repeat sockpuppeting
Level: 53

Posts: 113/739
EXP: 1133684
Next: 23435

Since: 08-06-15
From: England

Last post: 2674 days
Last view: 680 days
I can trust the bloody link, can't I? Mike-Tech, you need to realise that I prefer to know what this community thinks and to see it on the site.

Why would I need to contact ninjablooper just because I don't agree with a post? That's stupid, indeed.

@Googie thanks. I'll download that later, try to figure it out and perhaps make a custom level. At least you said something instead of just referring me off the board.

____________________
Jamie Dignam

MiniCompute
Posted on 08-29-15 01:25 PM Link | Quote | ID: 160962


Bubble
Level: 66

Posts: 766/981
EXP: 2421256
Next: 40595

Since: 04-25-07

Last post: 488 days
Last view: 697 days
Posted by Termingamer2-JD
I can trust the bloody link, can't I?




For a 13 year old named jamie who won't read sure you can bro.
Like I mentioned the level editor was in there smb3 workshop.

Now please stop, it won't be long before your back in school on september 3rd.

gridatttack
Posted on 10-04-15 06:19 AM Link | Quote | ID: 161341


Red Cheep-cheep
Level: 32

Posts: 190/202
EXP: 203757
Next: 2685

Since: 07-11-10

Last post: 1427 days
Last view: 253 days
Been tinkering around with SMB3 and I have to wonder something I never found answer too.

How can I change the destination area of the Red noteblock that takes you to the coin heaven? Does it works like entrances with pointers?

____________________

Quick Curly
Posted on 10-05-15 03:09 AM Link | Quote | ID: 161354


Giant Red Paratroopa
Level: 77

Posts: 1220/1443
EXP: 4171974
Next: 19155

Since: 06-15-08
From: Earth

Last post: 20 days
Last view: 20 days
Set the next area in the level header and the pointer properties as you would for any other pipe and door. For the exit action, select "7 - ?".

Termingamer2-JD
Posted on 10-28-15 07:23 PM Link | Quote | ID: 161636


Ropa
Banned: repeat sockpuppeting
Level: 53

Posts: 228/739
EXP: 1133684
Next: 23435

Since: 08-06-15
From: England

Last post: 2674 days
Last view: 680 days
I'm not contributing anything by posting this but Googie uploaded v1.6 of the SMB3 text editor, which no one else seems to have:

http://acmlm.kafuka.org/uploader/get.php?id=4943

____________________
Jamie Dignam

Mari42
Posted on 02-05-16 05:11 PM (rev. 2 of 02-05-16 05:23 PM) Link | Quote | ID: 162726


Red Paragoomba
Level: 17

Posts: 1/54
EXP: 21930
Next: 2813

Since: 12-15-15

Last post: 2186 days
Last view: 1636 days
Hey, I was doing an idea of making the SMB3 tileset for "Anchor Away" such as the "ground" for the tank/ship graphics. This is what I was doing as you can see the image below. But, the issue is the status bar palette is what im concern about changing for the plain tileset to be orange which is difficult, because it sticks to light blue for the ground tileset. So, the tileset was replaced by the black tiles which I've change the black palette to plain tileset which you see this image of what I was doing.










This tileset is where it was replaced for black palette for each Ship/Tank levels. So, x22D8 and x22D9 is where it was found when I looked at Name Table Viewer through FCEUX. The hex for the PPU Offset was "FC" is where it was placed for set as I viewed the in Hex editor. So, the way it needs to be fix is "FE" where the black tiles (that I may put that there through yy-chr) can fit into that graphical set for the Big cannon, and the BG for Koopa Boss Room.





The issue is that when I reset, the PPU doesn't change the way how it suppose to be as I saved in Rom file. How does that work? Is it worth of ASM that is regard to what it has to be to change the PPU numbers in hex editor?

Quick Curly
Posted on 02-05-16 07:23 PM Link | Quote | ID: 162728


Giant Red Paratroopa
Level: 77

Posts: 1337/1443
EXP: 4171974
Next: 19155

Since: 06-15-08
From: Earth

Last post: 20 days
Last view: 20 days
Greetings, Mari42. It's awesome that you're working on an SMB3 hack!

It seems that you were trying to modify the PPU Memory directly. However, changes to the NES Memory and PPU Memory aren't permanent. What you want to modify is the ROM file itself.

The beginning of each Object Set ROM bank has tile definitions to determine which graphics are used to draw out the objects.

The Ship Object Set ROM bank is from 0x2E010-0x3000F (0x2000 bytes in hex). The tile definitions for Ship levels are at the beginning of the ROM bank.

0x2E010-0x2E10F (0x100) - Top-left corner tiles
0x2E110-0x2E20F (0x100) - Bottom-left corner tiles
0x2E210-0x2E30F (0x100) - Top-right corner tiles
0x2E310-0x2E40F (0x100) - Bottom-right corner tiles

Let's look at the tile values that are used for the big pipes that you've been trying to change.

Left Pipe         Right Pipe

68 69 64 65 64 65 68 69
78 79 74 75 74 75 78 79
FC FC 66 67 66 67 FC FC
6A 6B 76 77 76 77 6A 6B

In the ROM file, these are the values that are used to display the pipe object.

Left Pipe

[0x2E039] [0x2E239] [0x2E038] [0x2E238]
[0x2E139] [0x2E339] [0x2E138] [0x2E338]
[0x2E03B] [0x2E23B] [0x2E03A] [0x2E23A]
[0x2E13B] [0x2E33B] [0x2E13A] [0x2E33A]

So, by modifying these values, the changes that you want to make will be permanent. Best of luck!

Mari42
Posted on 02-05-16 08:34 PM (rev. 8 of 02-07-16 08:15 PM) Link | Quote | ID: 162730


Red Paragoomba
Level: 17

Posts: 2/54
EXP: 21930
Next: 2813

Since: 12-15-15

Last post: 2186 days
Last view: 1636 days
Posted by Quick Curly
Greetings, Mari42. It's awesome that you're working on an SMB3 hack!

It seems that you were trying to modify the PPU Memory directly. However, changes to the NES Memory and PPU Memory aren't permanent. What you want to modify is the ROM file itself.

The beginning of each Object Set ROM bank has tile definitions to determine which graphics are used to draw out the objects.

The Ship Object Set ROM bank is from 0x2E010-0x3000F (0x2000 bytes in hex). The tile definitions for Ship levels are at the beginning of the ROM bank.

0x2E010-0x2E10F (0x100) - Top-left corner tiles
0x2E110-0x2E20F (0x100) - Bottom-left corner tiles
0x2E210-0x2E30F (0x100) - Top-right corner tiles
0x2E310-0x2E40F (0x100) - Bottom-right corner tiles

Let's look at the tile values that are used for the big pipes that you've been trying to change.

Left Pipe         Right Pipe

68 69 64 65 64 65 68 69
78 79 74 75 74 75 78 79
FC FC 66 67 66 67 FC FC
6A 6B 76 77 76 77 6A 6B

In the ROM file, these are the values that are used to display the pipe object.

Left Pipe

[0x2E039] [0x2E239] [0x2E038] [0x2E238]
[0x2E139] [0x2E339] [0x2E138] [0x2E338]
[0x2E03B] [0x2E23B] [0x2E03A] [0x2E23A]
[0x2E13B] [0x2E33B] [0x2E13A] [0x2E33A]

So, by modifying these values, the changes that you want to make will be permanent. Best of luck!


Never mind. Finally fixed. Thanks Quickqurly.


Mari42
Posted on 02-09-16 06:02 PM Link | Quote | ID: 162745


Red Paragoomba
Level: 17

Posts: 3/54
EXP: 21930
Next: 2813

Since: 12-15-15

Last post: 2186 days
Last view: 1636 days
My New Progress:



Changes a few with the palettes and my name. :\



New Level 1-1



New Level 1-1 bonus



Level 3 into water level!





Level 1-4 into desert level. (Short Level, really)









With a boomerang on the way. LOL. XD



New ending for level 1-4





Thats all for now. I'll post more when I get a chance to put more custom levels for each world. ;D Not sure what my hack will be named yet, but I'll think about it sooner.

Termingamer2-JD
Posted on 02-09-16 07:13 PM Link | Quote | ID: 162747


Ropa
Banned: repeat sockpuppeting
Level: 53

Posts: 359/739
EXP: 1133684
Next: 23435

Since: 08-06-15
From: England

Last post: 2674 days
Last view: 680 days
I'm just wondering, why does the screen flicker like mad in this game?

____________________
Jamie Dignam
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.040 seconds. (351KB of memory used)
MySQL - queries: 138, rows: 177/182, time: 0.027 seconds.