| |||
Views: 88,316,268 |
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search | 03-29-24 07:38 AM |
|
Guest: Register | Login |
0 users currently in ROM Hacking | 4 guests |
Main - ROM Hacking - SMB2j skid sound into SMB1 | New thread | New reply |
CKY-9K |
| ||
Pokey Level: 57 Posts: 384/693 EXP: 1427197 Next: 58731 Since: 06-27-07 From: cKy Last post: 182 days Last view: 90 days |
I've already accomplished doing this. However the skid sound is located in the worst place to compromise for compression. It's coding is located around level 1-2 and 1-4's level layout.
I'm not really good with ASM, but couldn't I expand the ROM and move the code to an empty spot? ____________________ |
ianmario |
| ||
Newcomer Level: 6 Posts: 3/4 EXP: 566 Next: 341 Since: 07-09-10 From: hmm what happened here Last post: 5011 days Last view: 5010 days |
Hello I AM AWSOME!Probably, you would have to find the spot where Mario Skids and see how to add a sound to that. I've never thought of that! ____________________ WHO EVER KEEPS MESSING WITH MY PROFILE, STOP!! |
Insectduel |
| ||
Hammer Brother Level: 68 Posts: 555/1069 EXP: 2681376 Next: 47424 Since: 02-16-08 From: Insectduel's office Last post: 1229 days Last view: 1228 days |
SMB1 did use a 512 byte trainer header. If your ROM is 41,488 bytes, then you should learn ASM and especially JMP or JSR. |
Trax |
| ||
Yellow Stalfos Level: 71 Posts: 981/1145 EXP: 3028842 Next: 138272 Since: 07-06-07 From: Québec Last post: 3599 days Last view: 2851 days |
Hmmm, I'm perplex. Super Mario Bros. (JU) [!].nes has no trailer, a length of A010 bytes, and virtually no free space at all... |
Hamtaro126 |
| ||
Cheep-cheep Level: 33 Posts: 143/194 EXP: 212355 Next: 16824 Since: 05-02-07 From: Shelton, WA Last post: 2444 days Last view: 2287 days |
Posted by Trax We all can get by with using doppleganger's SMB disassembly (SMBDis) via Romhacking.net. http://www.romhacking.net/docs/344/ Mske sure you have a prebuilt header, and 8k CHR from the SMB ROM And even though it breaks compatibility with current SMB tools (AND normal IPS patch format), you can still make a new hack out of it, via UPS, Binary Diff, or better yet, Xdelta. Just make sure to know what you are doing and possibly learn bankswitching too, For that, get Disch's Mapper Documentation collection: http://www.romhacking.net/docs/157/ http://www.romhacking.net/docs/353/ http://www.romhacking.net/docs/362/ Beware of the Sprite 0 detection near the end of Non Maskable Interrupt (NMI) code, I could not even hack it without corrupting the whole game, making it glitch! Trainers are a outdated and stupid feature that is mainly for compatiblity reasons, Do not even use it unless you want to get criticized by Romhacking.Net and such! ____________________ Mah boi, romhacking is what all true warriors strive for! I wonder what's for dinner? |
ShaneM |
|
ShaneM |
| |||||||
Snifit Compromised account. Please contact an admin to restore access. Level: 36 Posts: 178/285 EXP: 292366 Next: 15744 Since: 02-17-14 Last post: 3109 days Last view: 2624 days |
Since SMB1 is NROM, it is limited to 8000 bytes of binary. Here are some ways to attain over 200 free bytes to add the code (more than enough). Use doppleganger's SMB1 disassembly and assemble with a make.bat file:
Remove residual code. Here are some places that code can be removed, also some other ways to save space; if you follow my advice, you'll get roughly 200 free bytes (note that not everything labeled in the disassembly as 'residual' are really residual; the ones I listed I've proven residual):
Optimize the following routine to get another 32 bytes:
There are many more ways to clear up free space. This next method will get you about 150 free bytes: SMB1 was very wasteful with level data. For example look at this: ^The above leftmost brick can be made to a horizontal brick length 4 and the rightmost brick can be removed (see below). This can be done with various objects in ALL levels/rooms to save space while functioning the same. The above trick can also be done with enemies while function the same, too. See below. Before: After: Notice that I changed it from a 'Little Goomba' to a '2 Little Goomba (V=10). With the above, counting every possible level, you get around 150 free bytes this way. I hope this was helpful instead of having to convert this from NROM to MMC3 and extra routines. 200 or so free bytes is a lot of free space to make many routines. EDIT: Here is another code that can be optimized.
Also, remove anything labeled as "free space" etc. They will always be bytes of $FF. They are scattered throughout the file and will add up to another 20 or so free bytes. Make sure that the assembled binary file is no GREATER or LESS than 32,768 bytes. Whenever you add or minus code, you need to pad it or else there will be trouble. I can tell you are new to this. My advice is use something like Notepad++ that tells you the line numbers for when the assembler shoots out a "value out of range" or a line with an error or what not. Here's one more that's easy to miss. The underwater level has a room pointer to World 3 that's never used. (Room pointers always take 3 bytes). So removing it will give you three more. I just mentioned this because this one was hard to find. But the other wasteful ones are easy. In total, another 33 bytes right here (I took advantage of these in my SMB1 hacks to load the beta tiles I found):
Here's another way to get 55 more free bytes:
In total, if you did everything I told you to do, you've saved near 300 bytes! More than enough to add skid sound. To add the skid sound, rip the code from the SMB2J disassembly by doppleganger. If you can't find it, let me know and I'll assist you. --ShaneM EDIT: Here is the skid code in SMB2J:
____________________ 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? |
Main - ROM Hacking - SMB2j skid sound into SMB1 | New thread | New reply |
© 2005-2023 Acmlm, blackhole89, Xkeeper et al. |
MySQL - queries: 63, rows: 89/90, time: 0.016 seconds. |