+  RHDN Forum Archive
|-+  Romhacking
| |-+  ROM Hacking Discussion
| | |-+  Help me change Super Mario Bros. 2 proto into Doki Doki Panic cart version
Pages: 1 [2] 3
Author Topic: Help me change Super Mario Bros. 2 proto into Doki Doki Panic cart version  (Read 2 times)
Disch
Guest
« Reply #15 on: September 08, 2007, 01:24:47 pm »

Quote from: Hamtaro126 on September 08, 2007, 12:48:03 pm
I also am porting DDP and know more 6502 ASM, But since he switched from Prototype to Final, then switched to the prototype again. I can now do a port of DDP to a structure like the ''Final'' SMB2's ROM (As in using FFs (In Hex) for unused space) to MMC5

I don't understand what you just said.  Your sentences almost seemed to taper off without completing your thought.

If you're really porting DDP, what does the prototype (or anything marioxb is doing) have to do with your attempt?  I'm confused.
marioxb
Guest
« Reply #16 on: September 08, 2007, 02:30:20 pm »

I'm confused too. But maybe he can help me with some more detailed hacks in mine. Such as not allowing the characters to shrink/ and or grow (don't need to remove the run anymore :-) ) and maybe creating something like SMB2 discombobulator that works with the proto (the current version does not).

I now have the proto hacked to the point that all items are now changed, just need to fix up some of the mechanics.
« Last Edit: September 19, 2007, 05:29:35 am by marioxb »
Disch
Guest
« Reply #17 on: September 08, 2007, 03:41:27 pm »

Due to the DDP files being loaded into very strange addresses in RAM (not aligning at all with typical bank lines), I decided to go with the MMC5 approach and just try to emulate the FDS BIOS in an MMC5 cart.  I have written a file loading routine to load the "files" from ROM into the appropriate area in RAM.  However FCEUXD is giving me problems.

It looks like FCEXUD is really starting to show its age.  Its MMC5 support is a little off.  It doesn't seem to be handling PRG-RAM swapping properly.  I have tried the ROM in my own emu, NEStopia, and Nintendulator, and they all get the expected sky-blue screen, whereas FCEU seems to be crashing shortly after I jump to the game's code.

I'll keep this up just because I'm having fun.  But I'm not going to bend over backwards to support FCEU.  So odds are if/when I finish this, you won't be able to play this hack/port in FCEU or any other emu with lacking MMC5 support.
Hamtaro126
Guest
« Reply #18 on: September 08, 2007, 05:24:12 pm »

Quote from: marioxb on September 08, 2007, 02:30:20 pm
I'm confused too. But maybe he can help me with some more detailed hacks in mine. Such as not allowing the characters to shrink/ and or grow (don't need to remove the run anymore :-) ) and maybe creating something like SMB2 discombobulator that works with the proto (the current version does not).

I now have the proto hacked to the point that all items are now changed, just need to do the playable characters and the above.

MarioXB: What I meant is you were hacking, then switching from the Prototype ROM to the Final ROM, and then you switched from the Prototype ROM. (In other words, Please stay in one project.)

As for Disch: I am intrested in your concept, If you use the email address (JAJJMM@MSN.COM) to send the files if you have it. I know you are working on it, just wanted to see it and how it looks like.

And I should be still working on the DDP hack.

NOTE for DDP: I can also try to change ''PLEASE SET TO DISK B'' to ''PLEASE PUSH B BUTTION''
and replace the ''Switch Disk'' ASM function to a ''B Button'' function. It is possible, too.

NOTE2: I might also ask JaSp of ''SMB3: Some Usual Day'' Fame to help create DDP Music Format Docs, since I found his SMB1 and SMB3 docs on ACMLM's

Disch
Guest
« Reply #19 on: September 08, 2007, 05:47:37 pm »

I'm not big on private E-mails for this kind of thing.  So I just uploaded it:

http://dischmeister.googlepages.com/nesddp_crap.zip

I just sloppily zipped everything in my work folder and uploaded it.  All the bin files with the long names are the individual files off the game disk (with their headers stripped).  Naming convension is "[diskside]-[filenumber]_[filesize] at [address to load to]__[file name].bin

I then merged all those together into 1 file, and padded it to 120K ("files.bin").  This 120K plus my 8K fake BIOS will produce an even 128K ROM.

"header.bin" is the iNES header

"newbios.asm" is the code I'm putting in to make a sort of FDS emu with MMC5 (ie:  this is the actual hack).

running build.bat will produce "ddp.nes"

Currently it loads and plays the intro just fine (although the FDS sounds are missing of course), but it crashes on soft reset (I'm looking into that now).  Once I figure that out, I'll probably replace the "wait for side B" code with some "wait for start to be pressed" code -- then I'll have more BIOS work to do.

I'm thinking of using one of the MMC5's square channels to fill in for the FDS channel in the intro (and anywhere else it's used for melody).  I plan on putting in the DMC samples from SMB2 for the FDS sound effects (like when you lift stuff, get hurt, etc).  But sound is the very last thing on the list



EDIT

Fixed the soft reset problem.  Apparently DDP was using some RAM area that the normal BIOS prepped that I wasn't prepping.  Anyway -- fixed.  Tried the hack again in Nintendulator and it runs, but CHR doesn't display.  I'm guessing Nintendulator just doesn't like MMC5 with CHR-RAM (since all commercial games use CHR-ROM).  So scratch that one off the list as well.

Still works great in my emu and NEStopia.  I'll have to try some other popular emus.  Next... to look at the "wait for side B" thing.
« Last Edit: September 08, 2007, 06:30:26 pm by Disch »
Kitsune Sniper
Guest
« Reply #20 on: September 08, 2007, 11:11:49 pm »

FDS to cart conversions ARE very possible. There's a couple of FDS to NES bootleg carts around, one of which is a pirate dump of Ai Senshi Nicole in the GoodNES set - and that game only came out on the FDS as far as I know. And Super Mario Bros. 2 (Lost Levels) was probably ported at one point, too.

If pirates could do it, why can't Disch do it? :p
MathOnNapkins
Guest
« Reply #21 on: September 09, 2007, 05:32:49 am »

That implies the equation

Disch >= Pirates

but wherein lie the Ninjas?
marioxb
Guest
« Reply #22 on: September 09, 2007, 08:32:55 am »

Here is what I have done to the ending so far. Still need to fix the rest of the cage. Also, not sure if the DDP characters wave or anything as the Mario characters do. From the screen shots I've seen, I don't think they do. I think the only animation is of course carrying Wart across the screen and throwing the key into the lock in the cage. In my version right now, they don't move. Also, Lina in DDP's ending had her right arm raised. It's impossible to have her that way in this hack and still be in the same spot, due to the way Toad (who she replaced in the ending sequence)'s sprites are. They only have half of him. To make the full Toad ending pic, the half is then reversed and placed next to the first half to make the full version. Hard to explain, but end result is that Lina would either have both arms raised or both down. I thought she looked better with both down.

Here is the original endings from all three versions from The Mushroom Kingdom.net:

Super Mario Bros. 2 final:


Super Mario Bros. 2 prototype:


Doki Doki Panic:


And finally, my version (hacked SMB2 proto):

Still need to fix the "cage" and numbers. Possibly Imajin's green skin. (He shares the color palette of Wart.)
« Last Edit: September 19, 2007, 05:28:51 am by marioxb »
creaothceann
Guest
« Reply #23 on: September 09, 2007, 10:20:59 am »

Quote from: MathOnNapkins on September 09, 2007, 05:32:49 am
That implies the equation

Disch >= Pirates

but wherein lie the Ninjas?

ninja = those who practice ninjutsu
ninjutsu = "the art of stealth"
Disch = mix of "dash" and "invincibility"

Ladies and gentlemen, I think the connection is clear.
KingMike
Guest
« Reply #24 on: September 09, 2007, 10:39:54 am »

Quote from: Kitsune Sniper on September 08, 2007, 11:11:49 pm
And Super Mario Bros. 2 (Lost Levels) was probably ported at one point, too.

I think at least two iNES mappers have been devoted to pirate carts of SMB2j.
southark2
Guest
« Reply #25 on: September 09, 2007, 10:59:21 am »

I knew to use the plus and minus in yychr thats why I suggested that it would be a better tool then tlp. But I looked at this prototype and yielded no result with it. The normal SMB2 rom is twice the size of the prototype. So I assumed that it was compressed. Not knowing the specifics of it. I'll look over it again still tho I don't like the prototype myself. Hacking the normal rom is much easier. But Marioxb has done a good job with it already. So I would stick with the prototype even tho it's a pain that can keep you going. It's not like I have something else to do right now I am bored. Also I would suggest getting the tlp fix from here maybe one could see more with it.

Hamtaro126
Guest
« Reply #26 on: September 09, 2007, 11:32:19 am »

BMF, At one point, Also did create a SMB2-to-DDP hack. So I should EMAIL him to give me the patch!

Look at his Website (In the Hacks or Goodies section) at BMF's Rusted Magick!

There you can see proof of an early attempt!
marioxb
Guest
« Reply #27 on: September 09, 2007, 11:50:26 am »

I'm pretty sure BMF never got finished his hack.

You can see that it still says "IN PROGRESS" on his page. I will happily share my patch(es) when I'm done.

The reason why the SMB2 prototype is a smaller rom is because of the additional frames of animation in the final version and the ending with the sleeping Mario that is absent from the proto.
southark2
Guest
« Reply #28 on: September 09, 2007, 11:55:46 am »

Well its definitely not compressed. I just changed the Pow to say Bom not that someone else couldn't have done it I was just bored. Here is the Patch it will only work on the prototype tho. Use it if you want I don't care.
Disch
Guest
« Reply #29 on: September 09, 2007, 07:48:02 pm »

Well I got the game playable

http://dischmeister.googlepages.com/ddp.zip

I noticed graphical problems in NEStopia -- like the CHR wasn't being loaded properly.  I suspect this is due to MMC5+CHRRAM weirdness.  I have an idea for what might fix it -- but I'm thinking of making another effort to use MMC3.  This first attempt actually got me a lot more familiar with the FDS from the game's point of view.  Now that I'm more familar with what the game needs to do and when -- I think I'll be able to do it.

Try out this MMC5 version if you like.  Note it probably doesn't work in several emulators for the reasons previously mentioned.  Pressing start when the intro story with the kids reading the book doesn't work (but pressing start during the title screen with the blimp does).  It will make a .sav file, but won't actually save your game.  And I didn't test it much past Chapter 1.

The game sounds hollow without the FDS sound channel kicking in.  I'll definately have to put in the DMC replacements for the MMC3 version.



UPDATE:

I want to punch the DDP developers.  They load the files like so:

Code:
  6000-DFFF = MAIN-PRO   (main program loaded here)
  6000-65FF = EN-SND   (FDS sound wave stuff???)
  6000-65FE = TEMP-PRG  (additional code needed for main game -- loaded after you switch to side B)

  6600-6605 = DUMMY    (copy/pirate protection?  Possibly can remove)
  6600-6605 = SAVE-DAT  (saved game -- will have to rework)

  B800-D0FF = ENDING-2   (Ending sequence stuff, on side A)
  BF00-D0FF = GAME DATA  (Level data and other stuff.  Different files loaded here for each chapter)
  C100-C6FF = ENDING-1  (Ending sequence stuff, on side B)
  D679-D88C = SOUND-DT  (???  More FDS sound wave stuff???)

What sucks is the Game Data block.  $BF00-$D0FF.  What the hell.  If they would've just shifted that over to $C000 I'd have a nice clean spot to split the pages.  That would allow me to just have a single 8K page swapped in for the chapter with minimal PRG duplication.

So I figured that would be the best approach to this situation.  So I looked at the $BF00-BFFF and $D100-D1FF sections in the appropriate files and started to tally up what I would need to flip them.  Seemed managable at first -- until I started getting into jump tables and other crap.  Long story short, it ended up being a nightmare.  So I've decided to scrap this plan.

Plan B is to swap out both 8K pages (at $A000-BFFF and $C000-DFFF) for each chapter.  This means that I'll have 16K PRG (2 full pages) assigned to each chapter, but only 4.5K of that is actual chapter data.  That means that the other 11.5K will be the engine (from the MAIN-PRO file) duplicated for each chapter!  Talk about a major waste of space.

I haven't worked out whether or not this will push the filesize up to 256K.  I suspect it will.  It will also make hacking this ROM (if someone were inclined to do so) a real bitch, because if they want to change something at $A000-BEFF or $D100-DFFF they'll have to make the change at eight different places in the ROM!

The good news is... aside from that chapter nonsense... the rest of the files seem to be loaded into $6000... which is very easy to do (don't have to mess with PRG swapping, can just copy the files to RAM and be done with it).  The end game stuff I can probably just put on its own 16K like I do with the chapters.  I'll have some duplicated code there but I don't expect that to be much of an issue.  Only file that will be sketchy, I think, is that SOUND-DT file.  I have no idea when it is loaded (haven't seen/noticed it loaded yet in my test runs) or what function it serves.  Judging from the file title it's something I'll probably remove anyway because of the absense of the FDS channel.  Also, judging from where it's loaded, it might be used for the ending sequence... and if that's the case, I'll easily be able to fit it in the same 16K I put the other ending files.

Fortuantely, though... nothing but the MAIN-PRO file ever gets put at $8000-9FFF.  This means MMC3 is possible without major code adjustments!  I can have $8000 fixed, and have $A000 and $C000 swappable.  $E000 can be all my own code to make the hack work (after I carry over a few FDS BIOS routines the game uses) and can be free space if I need to tweak some things in the game.  I can also put DMC samples there when I need them!  8K is huge and there's no way I'll run out of space!

Last big hurdle will be to isolate all the places the game writes to $8000-DFFF.  That area is RAM on an FDS and the game can manipulate it at will.  On MMC3, however, writes to those addresses will change mapper registers which will royally fuck up the works.  Though at first glance there doesn't appear to be many areas in the game where it writes to it (at least none that aren't easily removable).

Once I resolve the issue with $8000-FFFF writes -- slapping together a functioning MMC3 ROM will be a relatively easy task!  Hooray!
« Last Edit: September 10, 2007, 10:02:36 pm by Disch »
Pages: 1 [2] 3  


Powered by SMF 1.1.4 | SMF © 2006-2007, Simple Machines LLC