Author
|
Topic: New to romhacking, couple of "newbie" questions about SMB (Read 2 times)
|
GenoBlast
Guest
|
|
« Reply #15 on: January 20, 2009, 12:41:49 pm » |
|
I _know_ that there has to be a ROM out there that works 100% with this hack. There sure is.I've got a crazy idea that maybe we're supposed to be patching the Japanese rom. Edit: This is the part where I remember what "(JU)" means. Edit II: Here's the solution: it only works in VirtuaNES
|
|
« Last Edit: January 20, 2009, 01:30:47 pm by Killa B »
|
|
|
|
Nightcrawler
Guest
|
|
« Reply #16 on: January 20, 2009, 01:44:41 pm » |
|
What ROM did it end up working with? This information is a prime candidate for adding to the entry's description to help the next poor soul who tries to play.
|
|
|
|
RetroHacker
Guest
|
|
« Reply #17 on: January 20, 2009, 01:45:54 pm » |
|
Edit II: Here's the solution: it only works in VirtuaNES Really? With the proper music and everything? Now that's weird. Now, here's the big question - is this because the other emulators are flawed, or is this because VirtuaNES is flawed? And what will happen when this runs on the real hardware? I ran it through readnes and it reports that it's MMC3, and I don't have an MMC3 test cart made up yet - I've been having a hard time locating donor games. I have like three or four carts that would be perfect - except the plating on the edge connectors are so worn down that they barely work as it is. What is it with MMC3 games that leads them to be improperly cleaned with abraisives?!? Thinking about the problem, it's almost as if the data in memory (pointer for the location of the music data) wasn't getting properly initialized before it's read by the program. Once a section of code forces it to update (mario has died, etc,) it'll work. I'll have to try it again, but ISTR that if you play until a Game Over, then the next game starts with the correct music. The plot thickens. -Ian
|
|
|
|
GenoBlast
Guest
|
|
« Reply #18 on: January 20, 2009, 02:02:11 pm » |
|
Now, here's the big question - is this because the other emulators are flawed, or is this because VirtuaNES is flawed? And what will happen when this runs on the real hardware?
VirtuaNES is probably flawed. FCEUX and Nestopia are supposed to be the most accurate emulators (especially FCEUX), so I'm sure they're both running it correctly. It will probably glitch the same way on real hardware.
|
|
|
|
Disch
Guest
|
|
« Reply #19 on: January 20, 2009, 03:19:29 pm » |
|
FCEUX and Nestopia are supposed to be the most accurate emulators (especially FCEUX) Ehhhh... I'd put NEStopia and Nintendulator well above FCEUX in terms of accuracy.
|
|
|
|
GenoBlast
Guest
|
|
« Reply #20 on: January 20, 2009, 04:32:58 pm » |
|
Ehhhh... I'd put NEStopia and Nintendulator well above FCEUX in terms of accuracy.
I used the magic words "supposed to be," so I'm not responsible for any inaccuracies in that post. I learned that little trick from Wikipedia. Honestly, I thought that was what I read, but time passes and memory fades... It runs fine in Nintendulator. So, either Nestopia (and FCEUX) is wrong, or Nintendulator (and VirtuaNES) is wrong. We need someone with an NES flash cart, now. \
|
|
|
|
Disch
Guest
|
|
« Reply #21 on: January 20, 2009, 04:53:42 pm » |
|
I finally got around to actually trying the patch provided by KillaB earlier in the thread. Not on a flash cart, though, but I don't think I need that for confirmation. I'm pretty sure I know what's going on here (very common problem with old SMB hacks).
This is the same old, same old -1 world caused by the hack being made with a bad ROM as a base. The reason you start on world 0-1 instead of 1-1 is because the game uses unprepped RAM for the level marker and assume it's zero'd, when in fact it isn't (it's actually usually $FF, hence why you start on level "-1" instead of level 0).
Nintendulator does seem to play it properly -- but it may zero RAM on startup for compatibility reasons?
In any event -- this is a problem with the ROM/patch. NEStopia and FCEUX are doing it right.
|
|
|
|
GenoBlast
Guest
|
|
« Reply #22 on: January 20, 2009, 05:57:00 pm » |
|
I've managed to create a working Strange Mario Bros patch. http://killa-b.freehostia.com/_retarded_stuff/strange-mario-bros.ips (same location, new patch) Made against the following file: 811b027eaf99c2def7b933c5208636de Super Mario Bros. (JU) (PRG0) [!].nesIf anyone is interested, this is what I did: 1. Using Lunar IPS, I made a patch that converts Super Mario Bros. (JU) [p1].nes (4e4129535f4c25fbab4f2d33aa003e42) (pirate) to Super Mario Bros. (JU) [!].nes (811b027eaf99c2def7b933c5208636de) (clean). 2. Using IPSelect, and the process of elimination, I figured out which bytes were causing the game to start at level 0-1. When it was starting at level 1-1, I saved the rom. 3. Using Lunar IPS, I made a patch that fixes those bytes in the pirate rom. 4. Using Lunar IPS, I applied that patch to Strange Mario Bros. 5. 6. PROFIT Here's a separate patch that just fixes those eight bytes, in case a different hack needs it: http://killa-b.freehostia.com/_retarded_stuff/smb_fix.ips
|
|
« Last Edit: September 30, 2009, 09:25:49 pm by Killa B »
|
|
|
|
RetroHacker
Guest
|
|
« Reply #23 on: January 21, 2009, 08:58:08 am » |
|
I've managed to create a working Strange Mario Bros patch. Awesome! This is great. And I'm glad you were able to figure out what causes these problems. I'm at work right now, but when I get home, I'll apply the patches and burn it into EPROMS and try it in my test cart. But it makes perfect sense what's going on. Is this the same sort of thing that's affecting the beginning music of Extra Mario Bros. as well? Uninitialized memory being read as a variable? Thanks for your help Killa B! I can't wait to try this out tonight! -Ian
|
|
|
|
Spinner 8
Guest
|
|
« Reply #24 on: January 24, 2009, 06:35:32 pm » |
|
This is the same old, same old -1 world caused by the hack being made with a bad ROM as a base. The reason you start on world 0-1 instead of 1-1 is because the game uses unprepped RAM for the level marker and assume it's zero'd, when in fact it isn't (it's actually usually $FF, hence why you start on level "-1" instead of level 0).
You know the trick where if you die in SMB, you can press A+Start to continue from the same world? If you've got a ROM hack that shows World 0-1 when you first start it up, you can press A+Start and you'll go to World 1-1 with no problems.
|
|
|
|
Ragemanchoo
Guest
|
|
« Reply #25 on: February 02, 2009, 05:36:49 am » |
|
by "messed up title screen" do you mean this for strange mario bros? that bit in the middle?: http://img166.imageshack....trangemariobros001ga3.png because i think that's how it's supposed to be. i've never seen a version without that. On the Derok site it plays fine for me. Was this the game you were talking about? http://www.derok.net/nes-roms/super-mario-bros/strange
|
|
|
|
vx
Guest
|
|
« Reply #26 on: February 08, 2009, 07:29:47 pm » |
|
It runs fine in Nintendulator. So, either Nestopia (and FCEUX) is wrong, or Nintendulator (and VirtuaNES) is wrong. We need someone with an NES flash cart, now. \ I have the RetroUSB flash cart, what do you want tested? It's confusing as there's a lot of patches and links on here...can you give me a link to the patched ROM? I'll load it up and see ASAP, be happy to help.
|
|
|
|
GenoBlast
Guest
|
|
« Reply #27 on: February 10, 2009, 09:07:11 pm » |
|
I had a discussion with vx and he's confirmed that Extra Mario Bros. plays the glitched death sound at the beginning, the way it does in Nestopia and FCEUX. So Nintendulator is emulating it incorrectly (perhaps intentionally, for compatability reasons, like Disch said?). I'll probably see what I can find about whether it's a known bug (feature?) tomorrow, and file a report if necessary. As long as I remember to do it. Edit: Remembered just now to check this. ...I can't find a bug tracker anywhere. Guess I'm not filing a report.
|
|
« Last Edit: February 17, 2009, 06:13:24 pm by Killa B »
|
|
|
|
Karatorian
Guest
|
|
« Reply #28 on: February 17, 2009, 05:34:08 pm » |
|
Similarly odd, if you hit two boxes containing "stuff", a mushroom, 1up, whatever, in succession, the previous item disappears. Only handling one power-up at a time is a (know?) limitation of the SMB engine. It only has set aside memory for one power-up and if you get another one, the intialization routine simply overwrites the old one's data.
|
|
|
|
|