Author
|
Topic: Anyone Interested in Doing "SMB Special" for NES? (Read 16 times)
|
Karatorian
Guest
|
|
« Reply #405 on: May 13, 2008, 06:25:00 am » |
|
I fixed the hidden blocks issue. There where actually two places they where hard coded. One was for enemies and one was for players, I've fixed them both. I haven't gotten to the lifts yet, because I'm working on some other stuff, expect a release later today. (Speaking of which, it'd be nice to get the latest levels for it.) With the hidden coins moved over one, can you still hop over the flagpole (much to your chagrin)? Edit: Hmm, I seem to be crankin' out the releases. You can get the latest expanded patch here. There are some significant changes in this version. Finally, after much promising, procrastinating, etc. I've fixed the graphics on the ends of the upsidedown pipes. To make room in the CHR-ROM for the new tiles, I moved the title screen into PRG-ROM. (It was actually a lot easier than I expected.) As mentioned above, the new hidden blocks can no longer be stood apon. The whirlpools (water pits with downward suction) have been disabled. (Do you think they should be turned back on in hard mode?) The castle in the middle of 8-2 no longer generates spurious solid blocks. (I made a new object which is simply the castle object, but it never generates solid blocks. I figured that was the easiest way.) I restored the endless ropes for elevators which where removed as part of the original upsidedown pipe patch (but they'll have to be added to the levels where they belong, so there's no noticable change yet). I still haven't made all the lifts six tiles wide. The code that handles that is spread out all over the place and after my first attempt messed them up, I backed it all out. Hack and enjoy.
|
|
« Last Edit: May 13, 2008, 09:36:24 am by Karatorian »
|
|
|
|
frantik
Guest
|
|
« Reply #406 on: May 13, 2008, 02:12:57 pm » |
|
(Speaking of which, it'd be nice to get the latest levels for it.) i have worlds 1-4 modified but im still play testing it With the hidden coins moved over one, can you still hop over the flagpole (much to your chagrin)? you can still hop over the pole The whirlpools (water pits with downward suction) have been disabled. (Do you think they should be turned back on in hard mode?) sure turn them on in hard mode i like that idea The castle in the middle of 8-2 no longer generates spurious solid blocks. (I made a new object which is simply the castle object, but it never generates solid blocks. I figured that was the easiest way.) how do I include this new element in the level? what is the hex for it? I restored the endless ropes for elevators which where removed as part of the original upsidedown pipe patch (but they'll have to be added to the levels where they belong, so there's no noticable change yet). the way the ropes are, they can't be centered correctly with the normal lifts. you'll notice in SMB that only the short lifts use the ropes. the short lifts are shifted over slightly so they can be centered on the rope I still haven't made all the lifts six tiles wide. The code that handles that is spread out all over the place and after my first attempt messed them up, I backed it all out. i think i have it implemented in my world 5-8 patches....
|
|
|
|
rbudrick
Guest
|
|
« Reply #407 on: May 13, 2008, 03:15:00 pm » |
|
sure turn them on in hard mode i like that idea Does SMBS have a hard mode? I know SMB has one when you beat it, but should a hard mode even be included if SMBS didn't have one? I just worry about keeping it true to the original and all. Also, is the speed of the whirlpools the same (the rate at which they suck you down)? -Rob
|
|
|
|
frantik
Guest
|
|
« Reply #408 on: May 13, 2008, 03:18:27 pm » |
|
there is no hard mode in original SMBS i don't think, but it's a cool addition to the port imo. it doesn't reduce the accuracy imo because you can still play the game all the way thru on the normal way.
|
|
|
|
rbudrick
Guest
|
|
« Reply #409 on: May 14, 2008, 08:02:11 am » |
|
there is no hard mode in original SMBS i don't think, but it's a cool addition to the port imo. it doesn't reduce the accuracy imo because you can still play the game all the way thru on the normal way.
Oh, so the normal run through the first quest is basically identical to SMBS? The hard mode is just additional stuff being added? BTW, Starscream sent me a link to the X1 version. Didn't know if posting a link here was OK. I can forward to whoever wants it. I mentioned he should post it, but I don't see that he did. I haven't gotten a chance to look at it yet, but I'm excited at the possibility of seeing the differences! -Rob
|
|
« Last Edit: May 14, 2008, 08:13:58 am by rbudrick »
|
|
|
|
Karatorian
Guest
|
|
« Reply #410 on: May 14, 2008, 10:38:27 am » |
|
In normal SMB, there are actually two hard modes. The first, called Secondary Hard Mode in Dopplganger's disassembly is activated at level 5-3 and beyond. The second, called Primary Hard Mode is activated when you beat the game and play through it for a second (or more) time and applies to all levels. Secondary Hard Mode Features- Bullet Bill Cannons fire at a faster rate.
- Additional enemies appear (if specified in levels).
- Hammer Bros. are more agressive.
- More flying Cheep Cheeps are allowed on screen during a frenzy.
- Bowser flames are fired at a faster rate.
- Platforms are smaller. (Also applies in all Castle levels.)
- Bloopers are more agressive.
- Bowser is more agressive.
Primary Hard Mode Features- All secondary hard mode features.
- Goombas are replaced with Buzzy Beetles.
- Nomal enemies move faster.
- Enemies that are knocked into thier shells recover faster.
As far as anyone knows, SMBS doesn't have a hard mode, so the proper way to handle all of this is open to interpretation. Frantik has already implimented a hack to make it so that all platforms are large, rather than becoming small late in the game and in castles. I intend to impliment the same hack in the extended codebase, but I haven't gotten around to it yet. As for the whirlpools, SMBS doesn't feature them. Rather, underwater holes don't suck you down. I recently implimented a hack to fix this. I asked (as it seemed like a good idea) if hard mode should include them, and the response was positive, so I've implimented that. (Although itt's currently unreleased.) I've been doing some thinking about hard mode related stuff. In particular, I noticed that the hard mode enemies appear in secondary hard mode. This makes me think the feature was included because of all the level reuse in SMB. As we don't reuse levels, perhaps that should be changed to primary hard mode. (As far as I know, the only use of the hard mode flag in the current levels is for Podoboos who're standing in for Icicles. Frantik didn't include a Podoboo for each Icicle when they appeared in groups, but did in hard mode. This was because Icicles are a transient threat, but Podoboos are a persistant threat. On any level past 5-3, this won't quite work as intended.) The other thought I had was about platform sizes. What if, rather than simply make them all large, they where instead only small in primary hard mode. This would make normal mode closer to the original SMBS, but still make use of the existing feature to shrink them. (SMBS actually includes three sizes of platforms, while SMB only has like two and a half. SMBS has large, medium, and small platforms, most of which are large. SMB has large and small. The large ones are shrunk to medium (?) in castles and in secondary hard mode.) FrantikThe special castle object for level 8-2 is a special row 15 object, just like the normal castle, but rather than object ID 0x2n, it uses 0x6n. The endless rope was re-added to SR 15 with the ID 0x7n. (As far as I can tell, the size does nothing. Perhaps I should put it on SR 13 instead as that row has no size and signifigantly more free space. On the other tentacle, it was originally on SR 15.) Why don't endless ropes work with large platforms?
|
|
|
|
SMB2J-2Q
Guest
|
|
« Reply #411 on: May 14, 2008, 10:54:43 am » |
|
I noticed that Bowser only throws hammers at Mario in Worlds 6-4 (repeat of World 1-4), 7-4 and 8-4. Why didn't they program Bowser to throw hammers at you starting in World 5-4 (which is a repeat of World 2-4)?
Also, when you play the Primary hard mode (after beating World 8 for the first time), Bowser's hammer-throwing is still relegated to Worlds 6-4, 7-4 and 8-4.
~Ben
|
|
|
|
frantik
Guest
|
|
« Reply #412 on: May 14, 2008, 12:37:32 pm » |
|
Frantik
The special castle object for level 8-2 is a special row 15 object, just like the normal castle, but rather than object ID 0x2n, it uses 0x6n. The endless rope was re-added to SR 15 with the ID 0x7n. (As far as I can tell, the size does nothing. Perhaps I should put it on SR 13 instead as that row has no size and signifigantly more free space. On the other tentacle, it was originally on SR 15.)
Why don't endless ropes work with large platforms?
it doesn't center correctly. the platforms which are aligned with the endless ropes in SMB are 3 tiles wide and are shifted slightly to center on the rope. big platforms are not shifted and do not center correctly.. though i suppose if the platforms were 6 tiles wide it would center correctly... and as far as adding the rope into the level data.. why not make a special case with the balance rope when it gets to a certain length then it turns into an endless rope?
|
|
|
|
Karatorian
Guest
|
|
« Reply #413 on: May 15, 2008, 01:35:40 am » |
|
Ok, thanks for the info. The reason I asked was that it seemed to me that they could work. So it's a matter of the platforms being aligned to the metatile grid, such that a plaform four tiles wide doesn't line up correctly. It occures to me that the engine could be altered to "correct" this (by moving the platforms 8 pixels), but should it?
I suppose the proper answer depends on SMBS and it's usual practices. Of course, a completely faithful reproduction of SMBSs behavior depends on a number of features not present in SMB or our alterations to date of it's engine. Firstly, there is the matter, mentioned above of SMBS having three independant sizes of lift. Secondly, and perhaps more importantly is that SMBS allows for higher precision in the alignment of inital sprite positions than SMB. SMBS can allign sprites to 8 pixel precision, while SMB only has 16 pixel precision.
If SMBS favors aligning four tile wide platforms such that they end up on even rows, the current behavior is more accurate in most cases. On the other tentacle, if SMBS favors aligning such lifts on odd rows, the idea I proposed above would be more accurate. However, I suppose the entire question is rendered moot if all platforms are to be six tiles wide anyway.
Which brings up another interesting proposal. While the addition of new sprites in general is a fairly complex proccess due to two factors, the lack of CHR-ROM space and the lack of frame table space, neither apply in the case of lifts. The lifts are all handled by special renderers and don't use the frame table and would require no additional tiles. A fuller investigation of the requirements to add the mid-sized platforms as first class objects would be needed, but it would probably entail much less work than other enemy additions. (In fact, I belive it'd be signifigantly less work than adding the Red Piranha Plants was.)
Furthermore, even if the mid-sized platforms are not added (at this juncture), if my proposal to shrink the large platforms down to mid-sized ones in primary hard mode (as opposed to secondary hard mode, as standard SMB does, or not at all, as Frantk's patches do) is implimented, the question of alignment is still present. Specifically, if large platforms are given endless ropes and align correctly centered on them, such alignment would be needed for the smaller case to look correct.
To better provide recommendations for these questions, I'm going to look at the SMBS level renders and see what sort of information I can glean about the usual positioning of platforms in SMBS and the usage (or not) of endless ropes. Some more concrete information (as opposed to my hazy recollections from months ago) will give some better guidance as to how to proceed.
As for the endless rope itself, it's much easier to give it it's own object, rather than special case the balance platform rope. The endless rope has it's own init handler which was not overwritten by the pipes patch, only it's entry in the level decoding jump table was overwritten. To re-enable them, all I had to do was add the init routine to the table. To add them as a special case of the balance platform rope would require alterning it's routine, which seems to be unneeded work to me.
To provide more detail on the space issue I mentioned earlier, it's a matter of level format ID space. The various types of SMB level objects have differing ranges of IDs based on thier usage of the seven bit space allocated to them. The following table provides the full details.
Object Type ID Range SMB Usage SMBS Usage (current)
Small Objects 16 12 15 Large Objects 7 7 7 Special Row 12 8 8 8 Special Row 13 64 12 13 Special Row 14 n/a n/a n/a Special Row 15 8 6 8
As you can see, SR 13 has the most free space. (In fact, it's possible that the ID range of the row could be expanded to 128 as one bit is specifically set to one. However, the full signifigance of that bit is currently unknown to me, so that may not be the case.)
In light of that, putting the endless rope on SR 15 may be somewhat wastefull. If at any point in the future we wish to add an object with a size feild, the use of the last SR 15 slot for an unsized object (the endless rope) may be imprudent.
Oh dear, sometimes I think I have entirely too much knowledge of SMB's internals crammed in my head. I wonder what got displaced to make room for it all. Proabably bits of my sanity =_=
|
|
|
|
frantik
Guest
|
|
« Reply #414 on: May 15, 2008, 02:43:54 am » |
|
if your level renders are correct I think I only saw 6 tile wide platforms. 6 tile wide platforms will center correctly with 3 on each side, so no need to shift anything and re line object: I agree in some ways it's easier but it's also not particularly hard to add the compare and jump commands also from a level editing perspective it would be less prone to error since it would already display a rope in smbutil. it's entirely up to you but if you're pressed for object space it's a good candidate. looks like row 13 has plenty of room though
|
|
« Last Edit: May 15, 2008, 05:39:18 pm by frantik »
|
|
|
|
rbudrick
Guest
|
|
« Reply #415 on: May 15, 2008, 03:14:23 pm » |
|
So, does no one want the X1 version?
-Rob
|
|
|
|
frantik
Guest
|
|
« Reply #416 on: May 15, 2008, 03:45:23 pm » |
|
just post the link i suppose...
|
|
|
|
SMB2J-2Q
Guest
|
|
« Reply #417 on: May 15, 2008, 04:23:36 pm » |
|
So, does no one want the X1 version?
-Rob
Rob, I would like screenshots of the X1 version, just to see if it's any better than the PC8801 version. ~Ben
|
|
|
|
Hamtaro126
Guest
|
|
« Reply #418 on: May 15, 2008, 10:21:16 pm » |
|
So, does no one want the X1 version?
-Rob
I think I want it, Email or post the X1 ROM of SMBS if possible @Katatorian: Can you please update the source code if possible? @Frantik: Can you give me the (Python-extracted) SMB levels with code for use in the source?
|
|
« Last Edit: May 15, 2008, 10:30:25 pm by Hamtaro126 »
|
|
|
|
Karatorian
Guest
|
|
« Reply #419 on: May 16, 2008, 02:27:39 am » |
|
So, does no one want the X1 version? I definetly want the Xl version. (Or any other version for that matter. I'm still hoping to get a clean dump of the disk image. If anyone has a PC88 version which has an MD5 signature of something other than 94a92e15ad909b7510dccca26128b54c, please let me know.) Hopefully the level format is similar and I can reuse the level renderer codebase to generate a comparison set of images. I appologize for not responding to your offer earlier. I was preoccupied with other stuff. I can't recall off-hand the RHDN rules on linking to ROMs. (Unlike many forum users (not anyone specifc, or even at this site, just in general) I read the rules when I joined, but the details escape me.) I know that requesting links to ROMs in the ROM hacking forii is frowned apon. (Thus my request for a clean disk image may be taboo, but I think there's some leeway.) However, (unlike many sites), ROM sources is an allowable topic in the General forum. (There's even a dedicated thread, so I hear.) What I suggest you do is re-read the forum rules. If if's absolutely forboden (that is a word) to post the link here, go to the thread I mentioned above and post the link there. If posting ROM links (as opposed to requesting them) is allowable in the hacking forums, post the link here. I'm not the only one interested. Early in the thread, there was some interest in the Sharp version as well. One member in particular (I can't recall who and am too lazy to look) seemed to be a serious X1 fan and was disappointed to find that the image wasn't in his extensive collection. In either case, PM me the link. It may be a distraction from the work at hand, but I'd really like to point my hexeditor at the port. BTW, (OT) can anyone recommend a good un*x or cross platform Sharp X1 emulator? @Katatorian: Can you please update the source code if possible? Sure, I can do that. I haven't really been keeping up on the source releases. This is because the intial one seemed to generate a lukewarm reception at best. Other than an aside concerning the custom level extractor, it didn't seem to garner any enthusiasm. Furthermore, there haven't been any requests for a second release until yours. (However, as I get my web hosting from my ISP, I have no download statistics, so I have no idea how many people actually grabbed the intial source release.) Please be aware that the build enviroment is somewhat involved (especially for a Win32 user; un*x users, including those running OSX should have an easier time). The build process is automated using make. (GNU make specifically, but it should be reasonably portable across make variants, AFAIK.) Honestly, as a un*x freak, I (personally) can't imagine building a complex software project (and SMBS for NES has become moderately complex) without make (or an equivilant, like autotools, or Python's distutils), so I've got no sympathy for those without a proper dev enviroment. "Thems tha breaks", as they say =_= In addition to make, there a number of other dependancies for a fully automated build. The primary ones are as65 and ld65, which are part of the cc65 suite of 6502 (and relatives) development tools. While not the most popular NES assembler, as65 is (in all likelyhood) the single most powerful freely availible and portable 6502 asm ever; Thus, it is my tool of choice. (As a side note, I was turned onto it by the famed (at least locally) Disch, who used it for his re-buildable dis-asm of Final Fantasy, my other (on hold) ROM hacking pursuit (at the moment).) Beside the assembler and linker, you'll also need some standard file manipulation tools (cp, rm, dd). However, copy and delete on a MS system should work fine; Provided you edit the Makefile. dd is a bit trickier; I don't know off hand a Win32 equivilant, but I imagine any serious ROM hacker has something that's roughly equivilant. Additionally, you'll need a command line IPS patcher and (optionally) an NES emulator (for testing). Finally, as you're already aware, the level extraction tool requires Python. While a final source release will likely include a Win32 stand-along executeable (created using py2exe), probably as a seperate package, I haven't gotten a proper cross-compilation eviroment set up at the moment (I don't run Windows and won't). That's a pretty heavy list of deps, but there are two cavetes that lessen the burden to the technically skilled. (Which one ought to be if one's interested in the source code.) Firstly, all that stuff is only needed tor an automated build. For most of it, a manual build could be accomplished with whatever ROM hacking tools one has on hand. Secondly, all the tools are open source and have been ported to all major (and many minor) plafforms, so they are readilly accessable. The build processe has changed slitghtly since tha last release (streamlined mostly) and, as such, I should update the README, which hasn't been touched in weeks (or longer). Additionally, I've decided on a license for my personal source code contirbutions (i.e. the legal parts) and so should update that aspect of the documentation as well. While I'm at it, I may as well add a mini-HOWTO for building the package manually. All together, that entails a fair (but not major) ammount of documentation to be written. As you've requested a source release, I will provide one, but don't be surprized if it takes me a day or to to clean things up. @Frantik: Can you give me the (Python-extracted) SMB levels with code for use in the source?
While I, clearly, can't speak for Frantik, I'm not sure he's got Py and is capable of generating level packages. That said, given the demand, I will release a level package coincident with the source package. (As I did shortly following the first one.) Currenlty, there are (though it's not readily apparent) three "current" versions of the levels. The first (and primary) is those contained in the latest patches released by Frantik. Second is my own (very very minor) adjustments to those levels (well, one level, actually), which are present in the latest expanded build. Finally, there are any changes Frantik has implimented since the last release. (Although, those can be ignored as I doubt anyone will see them until they're released.) When I do the source release, I'll include mine; Unless a new version shows up first. Well, that was pretty random, and (I'm sorry) really long (and, probably boring as well). G'night!
|
|
|
|
|