Author
|
Topic: Anyone Interested in Doing "SMB Special" for NES? (Read 16 times)
|
frantik
Guest
|
|
« Reply #150 on: March 15, 2008, 05:59:33 pm » |
|
Sounds good so far Karatorian regarding the level editor, it will not be able to edit the expanded rom because it expects the CHR-ROM to be at 0x8010. It rejects roms without the proper iNES header, though if you modify the header it will read any file, but it will not render the level correctly without the CHR-ROM in the correct place. if a rom can be made using mapper 0 the level editor will support it. the best thing to do would be to make a mapper 0 rom with expanded level data and no sound engine, edit that rom in the editor, then insert the level data into the mmc-1 rom just to check your rom mapping.. is this correct? 0x0010 - 0x400F - original 1st half of rom 0x4010 - 0x800F - empty bank 0x8010 - 0xC00F - sound engine 0xC010 - 0x1000F - original 2nd half of rom (not including sound engine) 0x10010 - EOF - CHR-ROM
|
|
« Last Edit: March 15, 2008, 06:05:08 pm by frantik »
|
|
|
|
deespence2929
Guest
|
|
« Reply #151 on: March 15, 2008, 09:01:55 pm » |
|
I think frantik is saying what I was gonna say. You could edit another rom first with the final 4 worlds first. And then stick that rom to the back of the newly expanded rom.
|
|
|
|
frantik
Guest
|
|
« Reply #152 on: March 15, 2008, 09:24:33 pm » |
|
... except i'm almost done with world 5 now too really what needs to be done that no one is working on is the code for new enemies. if someone wants to develop the code for any of the enemies, even replacing existing enemies, that code could be incorporated into expanded rom
|
|
|
|
SMB2J-2Q
Guest
|
|
« Reply #153 on: March 15, 2008, 11:09:34 pm » |
|
... except i'm almost done with world 5 now too really what needs to be done that no one is working on is the code for new enemies. if someone wants to develop the code for any of the enemies, even replacing existing enemies, that code could be incorporated into expanded rom You could get the Crabs and Fighter Flies from the Mario Bros. ROM and the Hammer and Barrels from Donkey Kong, both NES versions. ~Ben (SMB2J-2Q)
|
|
|
|
frantik
Guest
|
|
« Reply #154 on: March 16, 2008, 01:15:11 am » |
|
Ok here's world 5: Download Worlds 1-4 updatedDownload World 5Patch world 5 onto a new rom since it only contains world 5 and not worlds 1-4. I also modified the height of the balance ropes. In SMBS they have two heights. I choose the one which is more commonly used. I updated worlds 1-4 with this info Download Worlds 1-4 updatedDownload World 5oh and the long firebar in 5-4 spins the wrong way.. if there arent any more long fire bars or any swinging the other way then hopefully it will trivial to switch its direction edit: yep theres long firebars going both ways. hopefully it won't be too hard to add. one of the fast spinning bars can be replaced with the long bar or something edit2: well i added a 2nd long firebar... but it only spins for one quarter turn and then it stops lol. making the one long firebar spin the opposite way isn't hard at all though just change one bit. perhaps we could just add something where it spins a certain way depending on the level or something since we're adding custom code
|
|
« Last Edit: March 16, 2008, 06:59:50 pm by frantik »
|
|
|
|
Karatorian
Guest
|
|
« Reply #155 on: March 16, 2008, 04:24:03 am » |
|
frantik, your understanding of the expanded ROM's layout is correct. I didn't even think about the location of the CHR-ROM having changed, but now that you mention it, I can see how it would matter. The method you've proposed should be workable and fairly easy to impliment with the setup I currently have.
What I was actually wondering about was whether the editor would be able to make use of additional space for levels if such space was provided. Specifically, I was wondering what sort of control it allows over where in the ROM the levels are located and whether it has any limit on how much space it'll let you use up. It seems like there might be such restrictions to prevent you from overwriting other parts of the ROM and corrupting it.
I've also realized that my current code leads to the creation of a woefully inefficant IPS patch. Due to my simply having added a call to my mapper setup routine in the main intialization, the entire contents of the rest of the ROM where shifted down three bytes. At the time I didn't think this'd be an issue, but the IPS format has no provisions for insertions or deletions and only handles overwrites, leading to a (relatively) huge patch.
However, given the nature of ROM expansions, even if I corrected this particular issue, all of the ROM's contents past the first 16k will still be affected by the limitations of the IPS format. This basically leads to the patch containing a large portion of the ROM's contents. The only reason the patch isn't even larger is that large chunks of the expanded ROM are (currently) empty (containing zeros) and so can be compressed by IPS's RLE compression.
Perhaps it's nothing and I shouldn't worry about it, but it seems a little bit distressing. In particular, with over half of the original ROM's contents contained in the patch, it seems that the (supposed) legal distinction between ROMs and patches is considerably blurred (in cases like this). Not that I'm worried about legal action or anything, but it is an issue hackers who use ROM expansion should be aware of and consider the implications of.
|
|
|
|
frantik
Guest
|
|
« Reply #156 on: March 16, 2008, 05:08:12 am » |
|
What I was actually wondering about was whether the editor would be able to make use of additional space for levels if such space was provided. Specifically, I was wondering what sort of control it allows over where in the ROM the levels are located and whether it has any limit on how much space it'll let you use up. It seems like there might be such restrictions to prevent you from overwriting other parts of the ROM and corrupting it. I am unsure exactly what limitations the editor has on the data. It seems pretty flexible however and I wouldn't be surprised if it didn't have any limitations and simply looks at the region defined by the various pointers. can you whip up a rom for me with expanded level data? add say 100 bytes onto the last room's data or something and see if smb util will still edit it properly Regarding IPS issues: yeah thats something I was going to have to deal with with SMU.. i was actually going include with the patch a program which would take the original SMB rom and create a new ROM with the correct structure. then the patch would be applied to the newly created rom. of course in SMU all i'm planning on doing is having two copies of the original rom with different level data and just swap from one to the other at world 5 so it would be a lot easier to format the rom since all i would need to do is strip the header off one, strip the CHR-ROM off another and tack the two together. since you're rearranging the code the program would also have to know where to offset the code by X amount of byte which would be pretty tedious if you had lots of changes
|
|
|
|
deespence2929
Guest
|
|
« Reply #157 on: March 16, 2008, 09:38:09 am » |
|
I thought i t was gonna be more people, but it looks like it came down to just you two working on the hack. At least we'll get the level edits, if not the enemies, or other features. That's probably as much as we can hope for.
Anyhow yeah, I hope u guys figure out how to properly make a patch out of this. Cause I can imagine this site having a problem with hosting a patch that contains the original code and we don't want this patch getting lost on some geocities site or something. It should be hosted here. And good work on world 5.
|
|
|
|
Karatorian
Guest
|
|
« Reply #158 on: March 16, 2008, 07:27:26 pm » |
|
As for IPS related issues, if we run into difficulties with getting it hosted on RHDN, we'll come up with a solution of one sort or another. Possible solutions include using a more advanced patch format that can handle relocations, using a custom patching program, or as frantik plans for SMBU, using a custom tool to rearange the ROM prior to patching. On the other tentacle, it may not matter. Surely, in amoungst all the patches hosted here, there's bound to be at least a few ROM expansions, which are all quite likely to contain a signifigant portion of the original ROM if in IPS format. (Besides, RHDN hosts complete disassemblies, such as the one I'm using, which contain (in a modified form), ROM contents as well.)
I should be able to produce a patch that adds space to the level area for level editing testing without too much difficulty. I should be able to get something worked up sometime tonight.
As for the ASM hacking required to get the additional enemies and power-ups implimented, I wouldn't give up hope just yet. I've only just begun my work on the ASM, but as my work on the level dumping utils is pretty much complete, ASM hacking has now become my focus area for this project.
Furthermore, perhasps some more people would get involved if prompted to do so. If it looks as though I won't be able to handle the ASM hacks on my own, we could always post a help wanted ad.
|
|
|
|
frantik
Guest
|
|
« Reply #159 on: March 16, 2008, 09:06:54 pm » |
|
Once I finish the level entry I will be able to contribute to the asm hacking more.. though it wouldn't hurt to have a dedicated asm hacker on board i suppose, especially someone who's actually added new enemies to SMB, if there is anybody around like that
|
|
« Last Edit: March 16, 2008, 10:26:02 pm by frantik »
|
|
|
|
Karatorian
Guest
|
|
« Reply #160 on: March 17, 2008, 01:15:36 am » |
|
I've made a build of my expanded SMB that has an additional 512 bytes of zeros added the the last area (called L_WaterArea3 in doppleganger's code). Additionally, it's a mapper zero ROM without the sound engine, so it should be able to be edited. However, as far as I can tell, the game doesn't store the length of the level areas, it mearly has pointers to the start of each area. It appears that the end of an area is marked with 0xFD. So I can't figure out how the editor would know where it runs out of space, except by it being hardcoded somewhere. You can find the patch at my website. I've also tweaked my code slightly, so that the plain expansion makes for smaller patch. More importantly, it avoids (I belive) disrupting the location of the level code, so that it's where an editing program would look for it. (The mapper 0 editable version and the mapper 1 expanded version are built from the same sources.) The new patch is also at my website. I'm in the process of tracking down the locations of all the changes made to the code so far. With any luck, sometime soon, I should have a version of the source code that impliments all the hacks implimented up to this point. frantik, could you give me a pointer to the vertical pipe patch you used?
|
|
|
|
frantik
Guest
|
|
« Reply #161 on: March 17, 2008, 03:06:24 am » |
|
frantik, could you give me a pointer to the vertical pipe patch you used?
sure, it's one of the patches in this zip, though i forget which patch. I think it's the one which changes the first level around a bit as well. http://betaworld.hp.infoseek.co.jp/ips/R_plants.zipI tried out the expanded ROM and unfortunately it does look like the memory addresses are hardwired or something because only one more item was added to the level (after I moved the 'FD' terminator byte to the end of the added bytes that is). thats kind of a bummer :\\
|
|
|
|
Karatorian
Guest
|
|
« Reply #162 on: March 17, 2008, 04:37:12 pm » |
|
Thanks for the link to the patch.
As for the levels, we can work around it somehow. Just keep building worlds 5 through 8 in a sencond ROM and I'll come up with a method to insert them into the expanded ROM. It shouldn't be that big of a deal.
|
|
|
|
frantik
Guest
|
|
« Reply #163 on: March 17, 2008, 09:28:50 pm » |
|
As for the levels, we can work around it somehow. Just keep building worlds 5 through 8 in a sencond ROM and I'll come up with a method to insert them into the expanded ROM. It shouldn't be that big of a deal.
I agree it shouldn't be a big deal.. though one thing that might be an issue is the total number of levels.. the SMB engine allows for 34 levels total, which only leaves two levels which can be bonus rooms or whatever. right now my lay outs have some bonus rooms which are on their own levels. these will have to be consolidated i suspect, or we'll have to add in more rooms which hopefully won't be too hard.
|
|
|
|
SMB2J-2Q
Guest
|
|
« Reply #164 on: March 17, 2008, 11:05:04 pm » |
|
For Karatorian and Frantik,
Besides the two-in-one cartridge (in the NES Action Set) with Duck Hunt as a second game, Super Mario Bros. also was available on a three-in-one cartridge that also included Duck Hunt as well as World Class Track Meet (referring to the cartridge in the NES Power Set bundle released in 1989). Perhaps the extra space reserved for the other two games may be used.
You may also want to take a look at the ROM for the Famicom Disk System version of SMB, as the Minus World in it is different.
~Ben (SMB2J-2Q)
|
|
|
|
|