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

Main - Posts by Quick Curly

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47

Quick Curly
Posted on 03-08-15 01:41 PM, in Super Mario All-Stars NES (v3-24-20) Emulator & NES/Famicom patches Link | Quote | ID: 159650


Giant Red Paratroopa
Level: 77

Posts: 1136/1443
EXP: 4176195
Next: 14934

Since: 06-15-08
From: Earth

Last post: 32 days
Last view: 32 days
This is super special awesome!
I noticed this a couple nights ago. I haven't been able to try v2 yet, but I definitely will!

I grew up with quite a few NES multi-carts without even knowing what they really were. I always considered them to be cool, and was able to play a whole bunch of games that I probably wouldn't have known about, let alone would have been able to find at all, given that there were rarely ever any NES games to find where I lived.

I always wondered how difficult it would be to put these games together. I've really enjoyed following the recent multiple projects of such varieties that amazing hackers like infidelity and RetroRain have been creating as of late. I hope that everyone's motivations remain strong so that the potential projects that we all want and hope to create can be enjoyed by all, including ourselves!

Thank you for this!

Quick Curly
Posted on 03-08-15 01:52 PM, in Server move Link | Quote | ID: 159651


Giant Red Paratroopa
Level: 77

Posts: 1137/1443
EXP: 4176195
Next: 14934

Since: 06-15-08
From: Earth

Last post: 32 days
Last view: 32 days
You're super special awesome! Thank you very much, blackhole89!

When I noticed following the server move that no one had avatars, I wondered if there was a slight possibility that their storage was lost, and I wasn't entirely sure if I had all of mine saved. (Wow, typing it out loud just basically says I'm the one definitely wasting precious storage space with a bunch of random, unimportant images. )

Though I do understand how you established the server move as a fresh start of sorts for coding and configuration overall, so I figured that wasn't necessarily the case, but again, I didn't mean to rush or direct you at all. I'm happy that it was helpful in a way, even though I evidently didn't help directly. It's all you.

I'll stop wasting post space now too. Ha ha. Thank you again, and best of luck with the ongoing process of the server move overall. (In addition, the registration person/being too, though hopefully he/she/it will eventually come to realize that they are just taking up potentially precious moments in their/its life/batteries that could be better spent creating something, or maybe signing up to be an organ/parts donor.)

Quick Curly
Posted on 04-07-15 09:25 PM, in A Little SMB2 Help, Please? Link | Quote | ID: 159809


Giant Red Paratroopa
Level: 77

Posts: 1138/1443
EXP: 4176195
Next: 14934

Since: 06-15-08
From: Earth

Last post: 32 days
Last view: 32 days
I haven't touched SMB2 in years, and I never really got far with it compared to you and others who have actually successfully hacked it in the past, so I'm not sure if this is exactly what you're looking for, but I found this data on Data Crystal.

0x004FC3 - Birdo's spitting time
0x0055A3 - Snifit's spitting time

Looking in the ROM, the original value for 0x04FC3 is 1C.
The original value for 0x055A3 is 30.

The lowest that I could decrease 0x04FC3 to was 08. Any lower, and no egg would even spit out of Birdo. A higher value made the time before Birdo shot an egg out after opening its mouth longer, as high as 87. At 88, again, no egg would shoot out.

I tested out changing 0x055A3 in 1-2 and at the beginning of 1-3. The gray Snifit (which simply jumps up and down in place) in 1-2 was unaffected by any changes.
The pink Snifits in 1-3 were affected. A value of 00 prevented them from spitting out any bullets.
A value of 01 seemed to be a faster spitting speed.
A value of FF caused the Snifits to shake for a long time before spitting out bullets, seemingly only while the player was standing in front of them, and not behind them.
A value of 80 seemed to be a little slower spitting speed.

Now, I see that these offsets are for the timing, and not necessarily how fast the eggs or bullets travel across the screen. I couldn't really tell from testing if these offsets have any such effect (though I assume they don't), or if there are other offsets elsewhere that you could change to affect the speed that the eggs and bullets move after getting spit out.

You could try using the Code/Data Logger in FCEUX or FCEUXD to see if any other bytes/offsets nearby light up while Birdo and Snifit are on the screen spitting, or like mrrichard999 suggested, comparing the files with Hex Workshop or WindHex32 will show differences between two files, and you could search around the above offsets to see any other bytes that differ, and test them out to find out if any do what you're looking for, or even post screenshots and the results here for anyone else to possibly take a look.

Quick Curly
Posted on 04-08-15 09:24 PM, in Any Mario 3 rom experts here? (rev. 2 of 04-08-15 11:02 PM) Link | Quote | ID: 159826


Giant Red Paratroopa
Level: 77

Posts: 1139/1443
EXP: 4176195
Next: 14934

Since: 06-15-08
From: Earth

Last post: 32 days
Last view: 32 days
I don't know if you still need any information since you've made progress with your SRAM support, or if this is even what you were looking for, but perhaps there's a little chance that someone else can make use of this data and these visuals as well.

http://i216.photobucket.com/albums/cc277/QuickCurly/20150407-SMB3-Sprites-Map-RAM-YoYoYo-A1A.png
http://i216.photobucket.com/albums/cc277/QuickCurly/20150407-SMB3-Sprites-Map-RAM-YoYoYo-B2B.png
http://i216.photobucket.com/albums/cc277/QuickCurly/20150407-SMB3-Sprites-Map-RAM-YoYoYo-C3C.png
http://i216.photobucket.com/albums/cc277/QuickCurly/20150407-SMB3-Sprites-Map-RAM-YoYoYo-D4D.png

(Due to images being large in size, I decided to remove the embedded images and just link to them.)

$7F15 - $7F1D (0x9) - Sprites

00 - Nothing--Sprite #2 For Airship
01 - Help!
02 - Airship
03 - Hammer Brother
04 - Boomerang Brother
05 - SledgeHammer Brother
06 - Fire Brother
07 - Pirhana Plant
08 - Messed Up N-Spade
09 - N-Spade
0A - White Mushroom House
0B - Takara! Kawaii
0C - White Little Ship
0D - Battleship
0E - Tank
0F - Little Ship
10 - Boat

RAM Addresses

$7956-$795E (0x9) - Item
$7EEB-$7EF3 (0x9) - Y Position
$7EF9-$7F01 (0x9) - X Position
$7F07-$7F0F (0x9) - Screen Number
$7F15-$7F1D (0x9) - Type

Source: http://romhack.wikia.com/wiki/Super_Mario_Bros._3

Sprites

Unlike with pointers, in which each world has its own table, there is one big table for sprites; each world is
represented in each group. There are 9 sprites per world; the first world represented as the first 9 bytes of
the first group, the second world as the second 9 bytes, and so on.
Here's where the variety of types start at (in hex):

Y Position: 16070
Screen Number: 160B8
X Position: 16100
Type: 16148
Item: 16190

Data in the ROM:

World 1
Y Position (16070-16078): 70 80 20 00 00 00 00 00 00
Screen # (160B8-160C0): 00 00 00 00 00 00 00 00 00
X Position (16100-16108): D0 C0 60 00 00 00 00 00 00
Type (16148-16150): 01 00 03 00 00 00 00 00 00
Item (16190-16198): 00 00 09 00 00 00 00 00 00
-----------------------------------------------------------------
New World 1 (In this example and the images)
Y Position (16070-16078): 70 80 20 20 80 80 00 00 00
Screen # (160B8-160C0): 00 00 00 00 00 00 00 00 00
X Position (16100-16108): D0 C0 60 C0 80 A0 00 00 00
Type (16148-16150): 01 00 03 03 07 0E 00 00 00
Item (16190-16198): 00 00 09 07 08 00 00 00 00





For White Mushroom House

$7971 - If 00, then a White Mushroom House can appear.
If 01, then there was already a White Mushroom House
in the current world.

0x16D01 ($ACF1)

$ACF1:AD 71 79 LDA $7971 = #$00 <-- Check here.
$ACF4:D0 3A BNE $AD30
$ACF6:AD 65 79 LDA $7965 = #$01
$ACF9:C9 01 CMP #$01
$ACFB:D0 33 BNE $AD30
$ACFD:AD 67 79 LDA $7967 = #$2D
$AD00:CD 66 79 CMP $7966 = #$2C
$AD03:90 2B BCC $AD30
$AD05:20 9D AD JSR $AD9D
$AD08:A9 0A LDA #$0A <-- White Mushroom House.
$AD0A:99 15 7F STA $7F15,Y @ $7F1B = #$00
$AD0D:AD 6B 79 LDA $796B = #$20
$AD10:99 EB 7E STA $7EEB,Y @ $7EF1 = #$00
$AD13:99 00 05 STA $0500,Y @ $0506 = #$00
$AD16:AD 6C 79 LDA $796C = #$00
$AD19:99 07 7F STA $7F07,Y @ $7F0D = #$00
$AD1C:99 1E 05 STA $051E,Y @ $0524 = #$00
$AD1F:AD 6D 79 LDA $796D = #$40
$AD22:99 F9 7E STA $7EF9,Y @ $7EFF = #$00
$AD25:99 0F 05 STA $050F,Y @ $0515 = #$00
$AD28:EE 71 79 INC $7971 = #$00 <-- Increase here.
$AD2B:A9 10 LDA #$10
$AD2D:8D F6 04 STA $04F6 = #$00
$AD30:60 RTS

For Coin Ship (Takara! Kawaii)

$7972 - If 00, then a Hammer Brother can become a Coin Ship
(Takara! Kawaii).
If 01, then there was already a Coin Ship in the current
world.

0x16D41 ($AD31)

$AD31:AD 72 79 LDA $7972 = #$00 <-- Check here.
$AD34:D0 29 BNE $AD5F
$AD36:AD 46 7F LDA $7F46 = #$F8
$AD39:CD 47 7F CMP $7F47 = #$F8
$AD3C:D0 21 BNE $AD5F
$AD3E:CD 4F 7F CMP $7F4F = #$F8
$AD41:D0 1C BNE $AD5F
$AD43:A0 00 LDY #$00
$AD45:B9 15 7F LDA $7F15,Y @ $7F17 = #$03
$AD48:C9 03 CMP #$03
$AD4A:F0 06 BEQ $AD52
$AD4C:C8 INY
$AD4D:C0 0E CPY #$0E
$AD4F:D0 F4 BNE $AD45
$AD51:60 RTS
$AD52:A9 0B LDA #$0B <-- Takara! Kawaii.
$AD54:99 15 7F STA $7F15,Y @ $7F17 = #$03
$AD57:EE 72 79 INC $7972 = #$00 <-- Increase here.
$AD5A:A9 10 LDA #$10
$AD5C:8D F6 04 STA $04F6 = #$00
$AD5F:60 RTS

As soon as you die in the End Castle once, the "Help!" sprite (#$01) at $7F15 will become "Nothing" (#$00), and the "Nothing" at $7F16 will become the Airship (#$02), as seen in the fourth screenshot above.

As soon as you die in the Coin Ship (Takara! Kawaii) once, the sprite (#$0B) will turn back into a Hammer Brother (#$03).

Sorry that such a post was late and is likely useless at this point, but it's awesome that you've been able to do what you have with your project, and that you've dedicated all of the time and effort for such a feature as SRAM support to make your success that much more unique and advanced. Kudos!

Quick Curly
Posted on 04-10-15 02:06 AM, in Super mario bros 3 advanced 4 hacking Link | Quote | ID: 159833


Giant Red Paratroopa
Level: 77

Posts: 1140/1443
EXP: 4176195
Next: 14934

Since: 06-15-08
From: Earth

Last post: 32 days
Last view: 32 days
There's a topic on this board that was started in 2009 about hacking the game and efforts for creating an editor. I never really followed it much, so I really don't know anything about it. It might be the editor that Superjustinbros is referring to that edits the E-Reader levels.

SUPER MARIO ADVANCE 4 - Hacking & Editor Efforts

On page 3, there is a post with the following links to files in the Board 2 Uploader, added by Bond697:

SMA4 Editor
http://acmlm.kafuka.org/uploader/get.php?id=1993

SMA4 E-Reader Stuff
http://acmlm.kafuka.org/uploader/get.php?id=1994

VBA 1.7.2 Modified to Work With E-Reader Card Dumps/.raw Files
http://acmlm.kafuka.org/uploader/get.php?id=1995

Reading on though, it was said that it didn't seem to be able to edit levels or something. I reckon the files are still cool to have, though.

Looking through the Uploader for "SMA4", there were other files as well, including the following:

Super Mario Advance 4: Super Mario Bros. 3 Notes (Added by KP9000)
http://acmlm.kafuka.org/uploader/get.php?id=1939

SMA4 Save Data Tools v0.03 (Source Code Included) (Added by purplebridge001)
http://acmlm.kafuka.org/uploader/get.php?id=2115

Custom SMA4 e-Reader Levels (Bug Fixes and New Levels) (Added by Upaluppa)
http://acmlm.kafuka.org/uploader/get.php?id=2705

SMA4 Spritelist (Unfinished) (Added by Upaluppa)
http://acmlm.kafuka.org/uploader/get.php?id=2793

A save file of SMA4 FR with e-level Better Translation (Added by eddine67)
http://acmlm.kafuka.org/uploader/get.php?id=3256

e-Reader+ with SMA4 JP Loader (Added by Kiiro)
http://acmlm.kafuka.org/uploader/get.php?id=3905

If you continue reading through the topic (if you hadn't found it already), maybe there might be more information and other stuff to find. Good luck!

Quick Curly
Posted on 04-10-15 02:59 AM, in Super Mario All-Stars NES (v3-24-20) Emulator & NES/Famicom patches Link | Quote | ID: 159834


Giant Red Paratroopa
Level: 77

Posts: 1141/1443
EXP: 4176195
Next: 14934

Since: 06-15-08
From: Earth

Last post: 32 days
Last view: 32 days
For the SMB3 full P-Wing inventory after beating the game:

Item Slots to Fill:
$7D80-$7D9B (0x1C) (Mario)
$7DA3-$7DBE (0x1C) (Luigi)

0x31CF3 ($BCE3)

$BCE3:A2 01 LDX #$01
$BCE5:A0 1B LDY #$1B <-- 1B in Hex = 27 in Decimal;
$BCE7:A9 1B LDA #$1B <-- there are 28 item slots.
$BCE9:85 00 STA $00 = #$00
$BCEB:A9 08 LDA #$08 <-- P-Wing.
$BCED:99 80 7D STA $7D80,Y @ $7D80 = #$00
$BCF0:88 DEY
$BCF1:C6 00 DEC $00 = #$00
$BCF3:10 F8 BPL $BCED
$BCF5:CA DEX
$BCF6:30 09 BMI $BD01
$BCF8:A9 1B LDA #$1B
$BCFA:18 CLC
$BCFB:69 23 ADC #$23
$BCFD:A8 TAY
$BCFE:4C E7 BC JMP $BCE7
$BD01:A0 07 LDY #$07
$BD03:20 CE 96 JSR $96CE
$BD06:A9 5A LDA #$5A
$BD08:8D 64 79 STA $7964 = #$00
$BD0B:A9 1F LDA #$1F
$BD0D:8D 69 79 STA $7969 = #$00
$BD10:A9 40 LDA #$40
$BD12:8D 6A 79 STA $796A = #$00
$BD15:4C 5A 84 JMP $845A
$BD18:60 RTS

I don't see any game completed counter. I read the following on The Cutting Room Floor:

In the international versions of the game, pressing a button after the ending sequence will return you to the title screen, whereupon starting a new game will give you a full inventory of P-Wings (and Hammer Suits if the game's beaten again afterwards). In the original Japanese release, this feature was not included, and the game will remain on the final screen until the Famicom is turned off.
However, much like some GameFAQs folks, I've never had the inventory fill up with Hammer Suits after completing the game multiple times in a row.
If that was the case though, then the game would definitely need to have some sort of game completed counter in RAM somewhere. If the Hammer Suits bit was true, it would have made finding such a variable easier, if it existed.

Quick Curly
Posted on 04-21-15 01:07 AM, in Project QC (Current: Kickle Cubicle) Link | Quote | ID: 159963


Giant Red Paratroopa
Level: 77

Posts: 1142/1443
EXP: 4176195
Next: 14934

Since: 06-15-08
From: Earth

Last post: 32 days
Last view: 32 days
Hello all. I tried multiple searches to see if I could find a topic dedicated specifically to just dumping random collections of RAM/ROM addresses for any games, similar to those topics that have collections of hacks for games, collections of editors for games, and the like. I couldn't find anything after going as far back as mid-2010, and I didn't necessarily want to revive a really old topic if I did end up finding one, so I decided to just start a new topic for it.

The main intention of starting this topic was to serve as a place to initially dump my findings for the Action 52 ROM. A fellow named KirkyMonster is currently working on an Action 52 hack that intends to freshen up the graphics and attempt to make the collection of games more playable overall wherever possible.
He shared with me that he wanted to increase lives and hit points for some of the games to make them more fair. Through some searching, I found that even for games in which the player dies from the first hit they take, hit points can still potentially be granted and increased!

I wanted to share my documented data for archiving purposes and in case that anyone else who would like to potentially play this game with more of a chance could make use of the findings (and since Romhacking.net has a 15,000 character limit, my post actually wouldn't fit on there).

My apologies if it seems silly to start such a topic, and if there are any inaccuracies with the following findings that are posted. Any additional help and corrections is/are always appreciated! Thank you.

I hope that this topic can serve as an overall place for any data dumps, no matter how large or small.
It would probably be ideal to include check-sums and any other information about the specific ROM that is being used for the game that you are documenting. The free hex editor, HxD, allows analysis of your ROM file and provides a large range of different kinds of check-sums, if anyone requires such a utility. It's a safe program.

Action 52 (NES)
Action 52 (U) [!].nes
CRC-16: 5E9E
CRC-32: 224B90FF
SHA-1: A3EAF3EC222C0DF2034778D6FAA3DA216064AD07
MD-5: D71EDBE0E936DFD26534B6C3E03FBDFC

Counters for Lives and Hit Points, Including RAM Addresses and Code

(26861 bytes collapsed: )

Only Counters for Lives and Hit Points (No Code)

(7167 bytes collapsed: )

Quick Curly
Posted on 06-17-15 06:09 PM, in Introduce yourself here! Link | Quote | ID: 160320


Giant Red Paratroopa
Level: 77

Posts: 1143/1443
EXP: 4176195
Next: 14934

Since: 06-15-08
From: Earth

Last post: 32 days
Last view: 32 days
It's a bit late, but welcome! Hope you enjoy your stay!

Quick Curly
Posted on 06-17-15 06:17 PM, in Mario Forever - Minus Worlds Link | Quote | ID: 160321


Giant Red Paratroopa
Level: 77

Posts: 1144/1443
EXP: 4176195
Next: 14934

Since: 06-15-08
From: Earth

Last post: 32 days
Last view: 32 days
Since there aren't any other posts, I'll chime in! I think it looks pretty sweet! I really like the minus sign beside the world number for that extra touch! Awesome work!

Quick Curly
Posted on 06-17-15 06:22 PM, in Mario's 100s challenge Link | Quote | ID: 160322


Giant Red Paratroopa
Level: 77

Posts: 1145/1443
EXP: 4176195
Next: 14934

Since: 06-15-08
From: Earth

Last post: 32 days
Last view: 32 days
Your progress still looks great, as always! Nice colours, engaging graphics, and fun platforming adventures! Best of luck!

Quick Curly
Posted on 06-17-15 06:52 PM, in Googie Toons - The SMB2 Hack... Link | Quote | ID: 160323


Giant Red Paratroopa
Level: 77

Posts: 1146/1443
EXP: 4176195
Next: 14934

Since: 06-15-08
From: Earth

Last post: 32 days
Last view: 32 days
This looks so super special awesome so far! The title screen and graphic changes are amazing to me! I'm excited for a new SMB2 hack to play, especially one based on your cartoons, which I've enjoyed keeping up with ever since you helped me as I came into the ROM hacking scene all those years ago. I truly wish you and pacnsacdave the best of luck with completing this project to succeed your vision. By all means, don't feel rushed, either. Take your time, and hopefully your motivation continues to flourish!

Quick Curly
Posted on 06-17-15 07:17 PM, in Quick Bros. 2 Hack Pack (SMB3 Hacks) v1.00 Released! Link | Quote | ID: 160324


Giant Red Paratroopa
Level: 77

Posts: 1147/1443
EXP: 4176195
Next: 14934

Since: 06-15-08
From: Earth

Last post: 32 days
Last view: 32 days
6 years, 7 months, and 9 days later (or 2,412 days)... and a big bump!

The first post has been updated to finally announce the official release of Quick Bros. 2! Yes, it took a very long time, and there was even uncertainty for the longest time when I even announced its cancellation on a YouTube video back in 2009.

Since then, this project as a whole has grown and become a collection of hacks. More information can be found in the first post, as well as in the readme included in the download, available on Romhacking.net.

You can download all of the IPS patches and readme file in this hack pack from Romhacking.net!
Link: http://www.romhacking.net/hacks/2448/

Quick Curly
Posted on 06-17-15 08:45 PM, in General SMB3 Hacking Thread Link | Quote | ID: 160326


Giant Red Paratroopa
Level: 77

Posts: 1148/1443
EXP: 4176195
Next: 14934

Since: 06-15-08
From: Earth

Last post: 32 days
Last view: 32 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-22-15 03:49 AM, in Dark Mario - SMB3 Project Progress Thread Link | Quote | ID: 160454


Giant Red Paratroopa
Level: 77

Posts: 1149/1443
EXP: 4176195
Next: 14934

Since: 06-15-08
From: Earth

Last post: 32 days
Last view: 32 days
Oh my gosh! I remember this from back when I first joined Board 2! I'm surprised that you found it and decided to plan on fixing it. Believe it or not, I've always had it in mind and wish that RetroRain was able to finish it. I remember at least one video preview for the hack, and I really enjoyed the look of it.

If you found a copy of the hack on your hard drive, does that mean that RetroRain released a demo patch of it at some point? I don't remember ever seeing a public link, but I guess looking back at one of the old topics for Dark Mario, there was a site set up for it (it's gone now, though) and it's likely that I just missed it, unfortunately.

I love the look of the title screen! There's a Halloween feel to it with the graphics and colours. If the hills and clouds were changed as well to something else to fit the rest of your layout, it could potentially enhance the overall appearance even more.
Though that's completely up to you! Again, I love it already!

As for the pointers, what specifically do you need help with? If I understand correctly, so your Dungeon/Fortress level will point to an area with the Koopa Kid, instead of a Ship level? That should be simple enough. With your level open in SMB3 Workshop, open the Level Header Editor, click the "Next area/Start" tab, make sure that you set the Object Set appropriately ("2 - Fortress" if the Koopa Kid will be in a Dungeon area much like the rest of your Dungeon, or "A - Ship" if it will be in the end ship area that the Koopa Kid is normally in), and the Object Data is of an area in the correct Object Set.

Best of luck with your new project! Hopefully you'll have the time and energy to work on everything that you're putting together!

Quick Curly
Posted on 07-23-15 07:52 PM, in Dark Mario - SMB3 Project Progress Thread (rev. 2 of 07-23-15 11:48 PM) Link | Quote | ID: 160465


Giant Red Paratroopa
Level: 77

Posts: 1150/1443
EXP: 4176195
Next: 14934

Since: 06-15-08
From: Earth

Last post: 32 days
Last view: 32 days
RetroRain: That's cool. I understand. I meant no harm by anything that I said. Despite some other people's opinions, I always enjoyed what I was seeing with any of your work. It's definitely difficult at many points during the hacking process, for free time, efforts, motivation, and the like.
I've always been of the mindset that I do my best to focus more on the positive than any negative. To me, there isn't any negative. I see a project for what it already is, and what it is becoming, and not on what it could be from outside influences, mainly forceful ones. I remember back when I was still only wishing that I could produce a Super Mario Bros. 3 hack built from my own vision, and I saw you doing it, and in my opinion, always succeeding. We all have our own perspectives, and we shouldn't depend on someone else to build our own vision. I've just always really enjoyed Super Mario Bros. 3, and your take on Mario's lead role being questioned in the one video that I do remember from all those years ago, in a dark landscape with a lot of chilling blue visuals, taking out all of those little Goombas who are potentially viewed as just trying to live their innocent lives, and here comes Dark Mario out to ruin everyone's day just like how he feels his own day is already going; I really found that to be very creative and a new approach to an SMB3-themed game.
I've always had Dark Mario in mind, but I've always understood your preference to pursue your other ROM hacking projects instead. No problem at all. Just always know, you've always got one fan still hanging around after all these long years, and it's always nice to see you still come around too, bro.

Googie: You're very welcome. Anything else that you may need help with, please always feel free to ask.
For example, in case you plan to change anything else with your title screen, and want to make use of more unique tiles on there, you can modify the bytes/tiles directly through a hex editor like through FCEUXD, or there's SMB3TE to specifically edit the SMB3 title screen. However, do know that the method this program uses is it changes the location for where the tiles are loaded from, and then modifies the data at a new location. I remember seeing this through the hex editor when I was checking out Chelsea's Super Mario Bros. 3 hack, which used the SMB3TE program back in 2010. I've since been able to modify everything directly myself through FCEUXD by using a combination of the PPU Viewer (to get the tile ID values), the Name Table Viewer (to see the PPU addresses to start drawing your tiles from), and the hex editor (to make the changes directly).

What I mean when I say "make use of more unique tiles", I'm referring to how any of the tiles that you blanked out that originally made up the "SUPER MARIO BROS. 3" tiles are still in the places that they were, but you could replace the tiles used at those PPU addresses with the main blank tile, and then make use of those free tiles for more graphics elsewhere. Specifically, tile #$5C is used for the main blank background on the title screen wherever there aren't actual graphics, and if you have blank tiles used by any other values, you could replace them with #$5C to free them up to be used for something else. KP9000 made a thread about SMB3 Title Screen Palette Definitions and made a document about the SMB3 Title Screen Definitions. What could be further covered are the pointers, which can be changed to direct to free space near the end of the ROM bank so that you have more room to draw more unique tiles to the title screen display, but again, SMB3TE can do this for you and is much more user-friendly to work with than managing all of it yourself.

Though again, I'm not trying to influence your decisions or ideas in any way, and you don't have to change anything with the title screen! I realize that all this information is likely already becoming very overwhelming. I should stop here.

As for the pointers again, if there are any specific questions you have in the future, please feel free to post them, and hopefully I, or even someone else, will be able to help.
Actually, I recently made a post in the General SMB3 Hacking Thread saying that I was planning to hopefully put together a post documenting a couple ASM hacks that I used in my most recent SMB3 hacks.
One lets you have a different colour status bar while on the world map, both on the outside and inside the inventory. If you may recall, even if someone changes the palettes for the world maps, using the inventory loads the original blue and pink colours from different locations. However, this is limited to one value used by all the world maps, so if someone wanted to use a different colour status bar, it would have to be the same for all of the worlds, or the colours would be different after using the inventory, which might be visually displeasing. However, the rewritten code that I did fixed all that.
The other adjusted code was for collecting 3 matching End Cards to draw black to the part of the palette that is used to display the flashing object in the sky, which might be different than black depending on the hacker's in-level palette changes.
If you think that either of these code adjustments might be interesting or useful to you, let me know, and I'll try to focus on putting a post together sooner rather than later.
As for the time and music ASM hack that lets you have more possible time and in-level music values, there is already a post in the thread covering that, which also includes a more visual tutorial on the SMB3 pipe pointers, if that could be useful for you as well.
Time/Music ASM Hack, and Editing Pipe/Door Pointers

A more recent, thorough version of the Time/Music ASM hack tutorial is available in this post on Romhacking.net.

Okay! Now I'll stop with all of that!

Just so that you know, since it's been a couple months already, back when I was trying to get a hold of you through email after so long, and you said that you weren't receiving them through "Yahoo!", I sent you an email and tried to add you through Gmail afterwards, but have never heard back through there, either. I've never had an issue with my emails being sent out from my end, so do you perhaps have an email setting active to block incoming emails from people you don't have added or verified? I recall that you've had multiple email addresses over the years, probably to keep avoiding those nasty spambots, so it would be understandable if you had some sort of block in place, if possible.

Completely unrelated to anything: This post leveled me up from a Fire Brother to a Fire Snake! I feel so sneaky!

I wasn't intending to take over your project topic or anything, Googie. I was just trying to help out with the most recent opportunity presented after not being in contact for a while. Plus, I'm excited about yet another ROM hacking project that you're working on, and that it's bringing some activity and posts!

Quick Curly
Posted on 07-24-15 01:06 AM, in Dark Mario - SMB3 Project Progress Thread (rev. 2 of 07-24-15 02:57 AM) Link | Quote | ID: 160470


Giant Red Paratroopa
Level: 77

Posts: 1151/1443
EXP: 4176195
Next: 14934

Since: 06-15-08
From: Earth

Last post: 32 days
Last view: 32 days
You're very welcome again. I know that it's likely overwhelming, but anything that I can help clear up, please feel free to ask what questions you would like to have answered and further explained.
We've worked on projects together in the past, though it's definitely a rewarding and awesome feeling when we're able to achieve such advancements with our own two hands.
Anything that we can do to help each other. I always credit you as being the main person who helped me out with the common SMB3 1-4/1-6 level space editing issue with overwriting original data back when I only just started with ROM hacking, and as a result, the knowledge and skills that I've built since then are thanks to your assistance in that case which helped me keep going.

I recall that the coins invincibility hack was used in Super Loco Spoof! 2 as well. I would probably just look at that to find the custom code used. $0553 in RAM is the timer for the star power. In FCEUXD, with the Debugger, you would set a write breakpoint to $0553, and then once you collect 100 coins, the debugger should freeze to the code that activates the star power. It probably replaced a write to $0736 and $0737 for Mario's/Luigi's lives in the case that they would be increased for earning an extra life from collecting 100 coins.

Testing this theory out myself, I found this custom code at $B520 in RAM, or 0x35530 in the ROM:

$B520:AD F5 04  LDA $04F5 = #$0A
$B523:09 0A ORA #$0A
$B525:8D F5 04 STA $04F5 = #$0A
$B528:A9 E0 LDA #$E0
$B52A:8D 53 05 STA $0553 = #$00
$B52D:60 RTS

Looking at the stack, we see: 99, B0 ($B099). Navigating to $B097, which is 0x350A7 in the ROM, I found this code:

$B097:20 20 B5  JSR $B520
$B09A:EA NOP
$B09B:EA NOP
$B09C:EA NOP
$B09D:EA NOP
$B09E:EA NOP

Here is the code in the original SMB3 ROM at 0x350A7, giving Mario an extra life from collecting 100 coins:

$B097:FE 36 07  INC $0736,X @ $0736 = #$05
$B09A:A9 40 LDA #$40
$B09C:8D F2 04 STA $04F2 = #$01

So, RetroRain's code disables that, and jumps to a location where there's more free space for his custom code that gives a star power boost instead.

However, this only disables a life increase in the case of collecting 100 coins. Depending on how you plan to handle lives in this hack overall, there will be other bits of code that will need to be considered, if you have to disable code and/or change it in order to do something different. For example, when you collect a 1-UP mushroom, the debugger freezes at $AAFF, or 0x0EB0F in the ROM:

$AAFF:FE 36 07  INC $0736,X @ $0736 = #$06

If you want to disable life decreases as a result of dying in a level to effectively result in infinite lives, much like what Super Loco Spoof! 2 does, then this code at $9123, or 0x3D133 in ROM, would need to be replaced with "EA EA EA":

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

Here is a handy resource to refer to for 6502 opcodes:
6502.org: Tutorials and Aids

As for the Boom-Boom ASM hack that is used in Mario in: Some Usual Day, I remember that you had a text file with the code to change included in your notes. Those files are stored externally somewhere, so I don't really have the text file on me right now, unfortunately. Maybe you still have it somewhere more easily accessible than for me, though I will try to look if I get an opportunity.

As for the palette ASM hacks that I implemented, I'm working on a post to document them right now in the General SMB3 Hacking Thread.

Quick Curly
Posted on 07-24-15 02:23 AM, in General SMB3 Hacking Thread Link | Quote | ID: 160472


Giant Red Paratroopa
Level: 77

Posts: 1152/1443
EXP: 4176195
Next: 14934

Since: 06-15-08
From: Earth

Last post: 32 days
Last view: 32 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.

Quick Curly
Posted on 07-24-15 02:41 AM, in Dark Mario - SMB3 Project Progress Thread Link | Quote | ID: 160473


Giant Red Paratroopa
Level: 77

Posts: 1153/1443
EXP: 4176195
Next: 14934

Since: 06-15-08
From: Earth

Last post: 32 days
Last view: 32 days
No worries, RetroRain. I didn't take your post negatively. I feared that there was a risk of my post coming across as expecting work out of you, when I by no means was trying to force continuation of a project that you didn't feel motivated to continue. But we understand each other. Hee hee.

I've always been thankful for your work. I even made reference to your old "Suicidal Mario" ASM hack from back in 2008 in the General SMB3 Hacking Thread, as I've referred back to your topic over the years, and since the topic is long buried now, I feel that newer users unfamiliar of its existence from way back when wouldn't be able to know about it and potentially learn from it otherwise, as well as appreciate what it achieves.

Googie: I finished a new post in the General SMB3 Hacking Thread covering how to use a unique colour for inside the inventory and when returning to the outside display of the status bar for each world, as opposed to how in the original game, there is only one common colour for both outside (3C, a blue-like colour) and inside (36, a pink-like colour).
You by no means have to even use it, but since I already made it, I was planning to share the source code publicly once I was able to put a post together anyway.
If you would like any additional help and direction with being able to implement the ASM hack, or with anything else, again, please always feel free to ask; and as always, best of luck with your continuous progress!

Quick Curly
Posted on 07-29-15 04:46 PM, in Dark Mario - SMB3 Project Progress Thread Link | Quote | ID: 160514


Giant Red Paratroopa
Level: 77

Posts: 1154/1443
EXP: 4176195
Next: 14934

Since: 06-15-08
From: Earth

Last post: 32 days
Last view: 32 days
Copied from a message for informative purposes:

Looks awesome! Things are coming together! What I always say is this: "Every little bit that you do, is progress." In a sense, every byte in the ROM that you change is one byte closer to completing your project!

Of course I'll look into it (spawning the Fire Flower after beating Boom-Boom). I recall in the original game, Boom-Boom's ball is one of the sprite values, as seen in SMB3 Workshop, and I believe I saw it in the ROM before, and for Mario in: Some Usual Day, the sprite value for the Fire Flower was in its place.

Sorry if there is any confusion. Hopefully I can help clear anything up.

So, looking in SMB3 Workshop, the value for the Magic Ball is 4A in hex.
The value for the Stray Flower is 19 in hex.
Boom-Boom is 4B in hex.
After beating the Boom-Boom in the World 1 Dungeon, $0675 in RAM, with a value of 4B, is overwritten with 4A.
The code is at $AE98, or 0x6EA8 in the ROM.

$AE98:A9 4A     LDA #$4A
$AE9A:9D 71 06 STA $0671,X @ $0675 = #$4B

So, you'll want to change 0x6EA9 from 4A to 19. Now, Boom-Boom will spawn the Fire Flower when defeated.

For invincibility from collecting 100 coins, make these changes:

0x350A7: 20 20 B5
0x35530: AD F5 04 09 0A 8D F5 04 A9 E0 8D 53 05 60

However, I just noticed that my inventory bar worldly palette ASM hack uses the same starting offset, 0x35530, so if you plan to use both the invincibility from 100 coins ASM and the inventory bar worldly palette ASM, these are all the changes that are required to implement both, fitting both sets of code in together:

0x34139:
20 32 B5 EA EA AD F2 05 F0 03 20 3D B5 20 45 B5
8D C4 07 8D E1 7D AD 00 03 18 69 07 8D 00 03 EE
E6 03 60

0x34532:
AE 0A 07 E0 07 F0 10 AA BD 14 A5 8D DF 07 20 4A
B5 EA EA A9 06 85 5E 60

0x350A7:
20 54 B5

0x35530:
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

0x35564:
AD F5 04 09 0A 8D F5 04 A9 E0 8D 53 05 60

As for the inventory bar worldly palette ASM hack, is there anything that I can clear up with that, too? Like, even its purpose?
If you've ever changed the palettes for the world maps, and you changed the status bar colour, you may have noticed that once you open it to view your items, and then after you close it again, it goes back to being blue. This is because the colour values for using the inventory bar are loaded from those ROM offsets at the beginning of that post, and there is one value for each different status bar usage that's used for the status bar of every world map.
The purpose of my revised code is to make tables to load those values from, depending on the current world, meaning that whatever you edit the world map palettes to, for your new status bar colours, you also change the values in the table of "3C" values to match the status bar colours in the main palettes, so that they match to appear correct.

This old post has a couple visuals, including the NES palette for the colour values, and switching a couple map palettes around in the FCEUXD hex editor:

http://acmlm.kafuka.org/board/thread.php?pid=110215#110215

So, at 0x35530, see the 9 "3C" bytes, and the 9 "36" bytes that follow?
Change those values to match the values in the NES palette that you want for the status bar, inside and outside, for each world. Make sure that your world map palettes have the matching colour values set as well.

World 1: 0x35530 for outside, 0x35539 for inside
World 2: 0x35531 for outside, 0x3553A for inside
World 3: 0x35532 for outside, 0x3553B for inside
World 4: 0x35533 for outside, 0x3553C for inside
World 5: 0x35534 for outside, 0x3553D for inside
World 6: 0x35535 for outside, 0x3553E for inside
World 7: 0x35536 for outside, 0x3553F for inside
World 8: 0x35537 for outside, 0x35540 for inside
World 9: 0x35538 for outside, 0x35541 for inside







0x1842D-0x18435 (0x9) - World Map object palettes.
0x18436-0x1843E (0x9) - World Map sprite palettes.

Focusing on the object palettes with respect to the inventory status bar:

World 1: 0x1842D: 00 - World 1 uses palette 00.
World 2: 0x1842E: 01 - World 2 uses palette 01.
World 3: 0x1842F: 00 - World 3 uses palette 00.
World 4: 0x18430: 03 - World 4 uses palette 03.
World 5: 0x18431: 04 - World 5 uses palette 04.
World 6: 0x18432: 05 - World 6 uses palette 05.
World 7: 0x18433: 06 - World 7 uses palette 06.
World 8: 0x18434: 07 - World 8 uses palette 07.
World 9: 0x18435: 02 - World 9 uses palette 02.

In the images, see the "3C" values in the 6th column in the hex editor? Those are the initial colours for the outside of the status bar. If they are changed without the ASM hack, the colour of the outside of the status bar will always be "3C" when it is closed from the inside. As you can understand, as soon as you have at least two different colours for different world maps, there will be an inconsistency in at least one instance.
The intention of the inventory bar worldly palette ASM hack is to help fix/lift that restriction.

As always, if you need anymore clarification, please let me know. Best of luck!

Quick Curly
Posted on 07-29-15 04:53 PM, in Puzzledude's seminar on romhacking Link | Quote | ID: 160515


Giant Red Paratroopa
Level: 77

Posts: 1155/1443
EXP: 4176195
Next: 14934

Since: 06-15-08
From: Earth

Last post: 32 days
Last view: 32 days
Copied from my post in the Romhacking.net version of this thread:

It is understandable why the double standards explored in this topic are upsetting and discouraging.

Whether or not one works on and creates ROM hacking projects for themselves first, which is personally how I've always felt it should be, because ROM hacking grants us the opportunity to bring new life to our favourite childhood games and create even more great memories, it's still discouraging to put in all our time and effort - usually multiple years worth - to create a new experience, only for someone who likely wouldn't even know how to make a ROM hack to come along and only focus on what they didn't like about it, and make it seem like we didn't put any time and effort into it at all, to make the game that "they wanted".

True, you can't please everyone, but I do personally feel that people could generally be less judgmental.

Newbies are generally treated like they don't belong anymore, which probably discourages most from even posting at all after registering new accounts which will likely never even be used. Although, it goes both ways, because generally, new people hope for the simplest and swiftest solution, won't bother to attempt to do enough research on their own first, and will either ask for too much, not know how to make a "smart" post to elicit a positive and progressive response from more experienced users, and/or will not be as appreciative as they should be once they receive any potentially helpful information. It can be difficult to understand many of the processes involved, but effort is necessary and required in order to make any sort of progress. Most of us who have actually been around long enough to complete some projects are of a breed and mindset where we have the passion to bring our own visions to life that we are driven by what we believe we can achieve through dedication over time. Anymore, people seem to only show up because it's something to distract them for an afternoon until their attention redirects them to someone else, which means they will never put in the time themselves to become familiar with our passion, to fully understand and appreciate what we go through, and realize for themselves that their opinions are perhaps a bit too harsh or misguided in some situations (read, some).

It seemed like there were more newer users who made attempts to create ROM hacks years ago, at least, specifically at Board 2 in 2009, when it seemed like a pack of people interested in hacking SMB3 were considerably active. Even though they were new, and mistakes were made left and right, generally the positive was the main focus in being able to hopefully progress to more completed states for those projects. Anymore, if people see fewer actual releases, and from those releases, "reviews" that focus more on personal tastes in directing projects seemingly beyond the intended vision of the actual author(s), likely what seems to already be happening compared to years ago when it seemed like all the more familiar names in the ROM hacking community were still around, as opposed to now, will continue to happen even more so with fewer new people bothering to even try because it'll seem like an impossible task to please the continuously growing expectations of the vast, diverse opinions of the overall public.

However, for those truly passionate about their craft, they shouldn't be compromised by any potential negativity that comes their way, and while there will generally always be someone who will seemingly, absolutely refuse to be pleased no matter what, there should generally always be the folks out there who recognize and appreciate one's hard work and efforts, and those are the people who deserve to enjoy the fruits of our labour, in addition to first and foremost, ourselves.
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47


Main - Posts by Quick Curly

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

Page rendered in 3.962 seconds. (366KB of memory used)
MySQL - queries: 159, rows: 191/211, time: 3.919 seconds.