+  RHDN Forum Archive
|-+  Romhacking
| |-+  ROM Hacking Discussion
| | |-+  Anyone Interested in Doing "SMB Special" for NES?
Pages: 1 ... 8 9 [10] 11 12 ... 39
Author Topic: Anyone Interested in Doing "SMB Special" for NES?  (Read 15 times)
deespence2929
Guest
« Reply #135 on: March 14, 2008, 08:21:26 am »

Ok, I got another idea. IF, you have extra space left after doubling the size of the rom, perhaps you could dedicated that to unnique graphics, and code, and you could have those swapped in and out on a stage by stage basis. Like say, a stage requires a certain sprite, well, have the sprites not being used in vram, swapped out for the new sprite used in the extra space. So that way you won't have to replace enemies.

Another idea, at least for the hammer powerup. If you don't have space to draw it in, use the hammer bros hammer graphics, in it's pace, and try to make it replicate the SMBS hammer behavior.
SMB2J-2Q
Guest
« Reply #136 on: March 14, 2008, 11:15:40 am »

I don't want the timer in my SMB hack to tick any faster, please.
insectduel
Guest
« Reply #137 on: March 14, 2008, 12:05:08 pm »

That was a great project so far. I wish I could be in this project. But unfortunely, I have no sound card to play SMB Special with PC-88.

World 4-4 is kind of interesting too. May struck the idea for my next plus series project. Plus the level rips aren't that easy to design if I had to be in the project.
SonofMog
Guest
« Reply #138 on: March 14, 2008, 05:17:35 pm »

Quote from: SMB2J-2Q on March 14, 2008, 11:15:40 am
I don't want the timer in my SMB hack to tick any faster, please.
Sorry to say, but I don't think it's your hack anymore... With frantik and Karatorian doing all the work if they want to make it as close a port as they can, it's their say.
Karatorian
Guest
« Reply #139 on: March 14, 2008, 06:55:14 pm »

After looking at the layout and code structure of the ROM, I've found a nice way to gain a lot of space (about 3k) for additional code and data in the "hardwired" bank. This is by relocating the sound engine and data into another bank. The sound engine code is cleanly contained and there is only one entry point into it from the rest of the code. By relocating the sound portion of the code into another bank, and replacing the only entry into the code with a far call rather than a standard function call, a big chunk of space can be freed up.

Additionally, as ROM sizes have to be powers of two anyway, this also gives us a whole 16k bank of PRG-ROM to do whatever we need to with. Furthermore, the sound code would only use about 3k of it's bank, so there'd be another 13k or so there to work with as well. All in all, I think there'll be more than enough space.

While this may seem like a drastic fairly drastic change, it's pretty much neccessary to do something of the sort. Based on doppleganger's ROM map, there's only about 42 bytes of unused space in the SMB PRG-ROM. While I could proabably manage to squeeze the mapper handling code into such a small space, it wouldn't leave much room for anything else. This way, I free up a large area in the high bank, which is often the most useful area.

I should have a working demo of the expanded ROM some time soon. Once I get that done I'll start integrating the changes frantik has already made.

frantik: How much additional space for levels do you think you'll need? I know, as the saying goes, it's hard tellin' not knowin', but what would your estimate be? If we could manage to fit all the levels, other changes, and game engine (sans sound) into 32k, it would definetly simplify things.
frantik
Guest
« Reply #140 on: March 14, 2008, 08:04:51 pm »

Well I was able to fit only 4 worlds into the original space allotted for 8.  I do have left over enemies but I doubt I could even construct an entire world 5 with them.  I would estimate about twice as much room for level data is required.

It doesn't look like SMBS uses the castle looping technique.  this means a fair amount of code can be cleared up

Code:
; $c047-$c06a ( 0x4057 - 0x407a ) enemies and loop commands core routine
; $c06b-$c075 ( 0x407b - 0x4085 ) loop command world number data
; $c076-$c080 ( 0x4086 - 0x4090 ) loop command page number data
; $c081-$c08b ( 0x4091 - 0x409b ) loop command Y position data
; $c08c-$c0cb ( 0x409c - 0x40db ) game level loopback handler (this makes the looping happen)
; $c0cc-$c12e ( 0x40dc - 0x413e ) loop command processing core

i think some of that area is used by the upside down pipes and/or piranha plant routines though so you might want to double check.
deespence2929
Guest
« Reply #141 on: March 15, 2008, 08:04:20 am »

If you still have some space left in the original rom then I would suggest trying to make another level or two with it if u got enough space. Beacause you never know how much space the next 4 worlds are gonna take. If they got even more blocks laying around then the first four levels your gonna need whatever space you can get.
Karatorian
Guest
« Reply #142 on: March 15, 2008, 12:24:42 pm »

What is the castle looping technique? I've never heard of it. An additional bit of code that perhaps could be removed is the warp zone specific stuff. SMBS doesn;t have any warp zones, so unless we add them, the warp zone code would be unused.
Hamtaro126
Guest
« Reply #143 on: March 15, 2008, 01:33:02 pm »

You can either use mapper 69 (Sunsoft's FME7 mapper) or mapper 5 (MMC5) to help expand levels in new expansion at $6000-7FFF, or use MMC1 or MMC3 to put levels in WRAM/SRAM @ 6000-7FFF. Although I'd use the MMC5/FME7 space more than the usual WRAM/SRAM.

By The Way: I might try to create a SMB-SPECIAL style one-screen level changer. (one with and without expansion levels) But if I have the nessicary time to do it. (I am currently using SMB1 Disassembly by Doppleganger to do my hacks)
frantik
Guest
« Reply #144 on: March 15, 2008, 02:50:15 pm »

Quote from: Karatorian on March 15, 2008, 12:24:42 pm
What is the castle looping technique? I've never heard of it.

well not really a technique i guess but in some of the castles you have to follow the correct path, otherwise the castle loops back and you have to do it again.  SMBS does not have this in it i dont think
SMB2J-2Q
Guest
« Reply #145 on: March 15, 2008, 03:03:18 pm »

Quote from: SonofMog on March 14, 2008, 05:17:35 pm
Quote from: SMB2J-2Q on March 14, 2008, 11:15:40 am
I don't want the timer in my SMB hack to tick any faster, please.
Sorry to say, but I don't think it's your hack anymore... With frantik and Karatorian doing all the work if they want to make it as close a port as they can, it's their say.

I came up with the idea in the first place.

Also, I do not want to lose the scrolling for this hack. It was my idea to have a version of SMBS in which the screen scrolls. Combine SMBS with NES engineering...
frantik
Guest
« Reply #146 on: March 15, 2008, 03:14:54 pm »

Quote
I came up with the idea in the first place.

no offense but i sincerely doubt you're the 1st person to want to play SMBS on the NES Wink

but anyways everyone is welcome to contribute to this project.  the more you contribute, the more the other people who have contributed (namely me and Karatorian so far) will value your opinion regarding the direction of the hack. Wink
SMB2J-2Q
Guest
« Reply #147 on: March 15, 2008, 03:21:46 pm »

Quote from: frantik on March 15, 2008, 02:50:15 pm
Quote from: Karatorian on March 15, 2008, 12:24:42 pm
What is the castle looping technique? I've never heard of it.

well not really a technique i guess but in some of the castles you have to follow the correct path, otherwise the castle loops back and you have to do it again.  SMBS does not have this in it i dont think

Actually, in SMBS there is looping in parts of World 7-4 (you have to use pipes to advance to other parts of the stage, a la World 8-4 in SMB for NES):
http://www.youtube.com/watch?v=b9KvjAQIW_o

Like the NES version, World 8-4 in SMBS also makes use of pipes to advance from one part of the stage to the next:
http://www.youtube.com/watch?v=azPuClxuMUI

~Ben (SMB2J-2Q)

frantik
Guest
« Reply #148 on: March 15, 2008, 03:50:29 pm »

i mean like in 4-4, 7-4 and 8-4 of SMB where you have to walk on the right bricks other wise the level loops without using any pipes.  that doesn't look like it occurs in SMBS, so that part of the code can be used for other things
Karatorian
Guest
« Reply #149 on: March 15, 2008, 04:06:40 pm »

Well, I've finished my SMB MMC1 expansion proof of concept hack. It doesn't currently do anything noticable, but things have changed "under the hood". As mentioned above, I've moved the sound engine into a bank of it's own. The call from the main loop into the sound engine has been replaced with a call to a custom function that switches banks, calls the real sound engine entry point, and then switches banks back. The only other change was the addition of a call to a mapper setup function in the startup routine.

So far, in my limited testing, everything appears to work perfectly. As I've said, it doesn't do anything noticable, put I've posted it to my website, just in case anyone wants to check it out or do some more testing, etc.

My next step is going to be working on intergrating the changes frantik has made so far. It shouldn't be too difficult, but we may run into complications down the line. I'm not sure how flexible the level editor frantik is using is and whether or not it'll be able to edit the expanded rom directly. If not, I'll have to come up with some sort of exportation and importation tools.

In regards to the looping, in SMBS, if you walk past the end of chunk 16, you end up back at chunk 1. It's not the same effect, and it isn't actually used in any of the levels, so I think we could safely reclaim that bit of code, but given the amount of space I've gained, I don't think it'd be neccessary.

As I'm building from ASM sources, I can simply expand the area used to store the levels. The following code will simply be pushed down into the area that was previously occupied by the sound engine. As doppleganger's source is completely cleaned up, with labels and defines for everything, relocation of code is completely transparent. (After relocating the sound engine, I didn't have to edit it at all.)
Pages: 1 ... 8 9 [10] 11 12 ... 39  


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