Author
|
Topic: Anyone Interested in Doing "SMB Special" for NES? (Read 17 times)
|
Karatorian
Guest
|
|
« Reply #180 on: March 22, 2008, 01:57:54 pm » |
|
Hey frantik, nice work on the inverted pipe ASM. It's nice to have a version that's properly labled and commented, unlike mine, which has arbitrary lables and no comments.
I've just gotten started on getting all the levels so far into the existing ROM. I've put in worlds 1-4 and am about to start looking at the changes needed to get world 5 in as well. On that note, I was wondering, how many rooms do you think you're going to need? SMB is set up for 34, but I'm sure I can change that if needed. I'd just like an estimate for now. Once you've got all the levels done, I can tweak it to the exact number needed so as to save space.
|
|
|
|
frantik
Guest
|
|
« Reply #181 on: March 22, 2008, 06:41:25 pm » |
|
I'd estimate about 50 rooms will be needed Currently 27 rooms in 1-4.. i think i can consolidate room 42 and 43 though. water 01 - 2-2 03 - 3-1
ground 20 - 3-3 21 - 4-2 22 - 4-1 24 - end 3-1 25 - 1-1 26 - 1-3 27 - 2-1 28 - pipe intro 1-2, 2-2 / end 1-2, 2-2 / bonus 2-4 2b - 4-3 2f - end 3-2 30 - 2-3 31 - pipe intro 3-1 32 - sky bonus 2-1, 4-1 33 - 3-2
underground 40 - 1-2 41 - underground midsection 4-2 42 - underground bonus 1-1, 1-4 43 - underground bonus 2-2 / end 2-3 44 - bonus 3-3 45 - bonus 4-3
castle 60 - 1-4 61 - 4-4 62 - 2-4 63 - 3-4
and 12 so far in worlds 5 and 6. estimate another 10 rooms for the next 2 worlds water 00 - bonus 5-2, 6-2
ground 23 - 6-2 26 - 5-3 2a - 5-1 2d - 6-3 2e - 6-1 31 - 5-2 34 - bonus 6-2
underground 40 - bonus 6-3 42 - bonus 5-3, 6-2
castle 60 - 6-4 62 - 5-4
unfortunately we're going to have room numbering conflicts.. not a big deal except for the pipe connection commands will have to be modified once the final room layout is determined. oh also i removed a bug in the optimized code I posted on the last page in the Upsidedownpipe2 block of code.. if you've already inserted that code please be sure to update it
|
|
« Last Edit: March 22, 2008, 06:51:43 pm by frantik »
|
|
|
|
Karatorian
Guest
|
|
« Reply #182 on: March 23, 2008, 03:39:53 am » |
|
Actually, once I got to work on the level insertion program, I realized that an estimate of the number of rooms wasn't neccessary. The game engine doesn't have the number of rooms hardcoded, it simply follows the pointers. Therefore, my code simply produces as many rooms as needed and will set up the pointers as required. But, thanks for the information.
As for room numbering conflicts, I'm aware of the problem and have a solution. My current code renumbers the rooms. This is to avoid conflicts and also make the segregation by type simple. Currently, I'm almost done with a stripped down proof of concept version.
It doesn't currently handle pipe connections, but I have a pretty good idea how I'll handle that as well. Basically, it'll go through the area data and record the pipe connections. Then, after the renumbering, it'll go through the list of pipe connections and patch them up.
A bigger issue is the fact that we can only have a max of 32 rooms of a given type as room numbers are stored as five bits (plus two bits for type). If we need more than that, we'll have to come up with an ASM hack of some sort. As one bit of the room numering bytes is unused, I could expand the max to 64 per type. However, as pipe pointers only have 7 bits for room, that won't work for them. The solution in that case would be to ensure that all rooms pointed at by pipe pointers are numbered less than 32.
Anyway, I'm going back to coding.
Edit:
Well, I've got the proof of concept level inserter working. At least it seems to be working. You can't do a whole lot of testing without pipes, but level 1-1, the pipe intro, and the first room of level 1-2 seem to be working anyway. Now I guess I'll have to start work on the pipe pointer functions.
|
|
« Last Edit: March 23, 2008, 06:42:02 am by Karatorian »
|
|
|
|
rbudrick
Guest
|
|
« Reply #183 on: March 23, 2008, 06:40:16 pm » |
|
|
|
|
|
Karatorian
Guest
|
|
« Reply #184 on: March 23, 2008, 07:09:07 pm » |
|
I've posted version 5 of the level renders at my website. Unless unknown bugs in the level renderer are discovered, this will be the final version. The only change is that the individual chunks are numbered for ease of use of the related level info files.
|
|
« Last Edit: March 24, 2008, 02:58:09 am by Karatorian »
|
|
|
|
frantik
Guest
|
|
« Reply #185 on: March 24, 2008, 02:52:50 am » |
|
cheers i just need to double check world 6 and i'll post it
|
|
|
|
Karatorian
Guest
|
|
« Reply #186 on: March 24, 2008, 02:58:24 am » |
|
Playtesters WantedI've implimented the pipe pointer handling code in the level inserter and produced an expanded ROM containing worlds one through five. You can download the patch here. I've done some basic testing, but I suck at platformers. After dying about six times on level 1-3, I called it quits. Please report any bugs you find. Thanks in advance. frantikThere seems to be something strange going on with room 0x43 in the world 1-4 ROM. It appears to have a pipe pointer to map 0x02, which isn't in the list you posted above. Map 0x2 has a bunch of pipe pointers to bogus maps (with pointer indexes of 34 or above. I suspect 0x02's pointer now points at garbage, which wouldn't be an issue, except that 0x43 points at it. Additionally, the bogus pipe-pointer and another one are only active on world 1, while 2 other pipe pointers are active on world 4, neither of which lines up with your numbers. At least, that's what my code tells me. Of course, it could be a bug on my end. I wish SMB Utility ran under Wine so I could check it out myself. I guess I'll have to break out the hexeditor and look at the bits. Anyway, could you take a look at 0x43's pipe pointers and see if I'm correct?
|
|
|
|
frantik
Guest
|
|
« Reply #187 on: March 24, 2008, 03:50:56 am » |
|
There's a bunch of junk left at the end of room 43 which i should have cleared out but didn't.. the only relevant pointer is the one which points to room 01 page 7 in world 2. hex bytes: 9e 01 27
I checked the rest of the pointers and they all point to room 43 in world 8 (the room used to be the world 8-4 castle which is why it has to many pointers to itself). oh wait i do see one which points to room 02. it is set for world 8 though so it's not a big deal and it's way past anywhere the player could get to so no big deal. I suppose I should clean up all the levels though for the final version haha
Room 02 has no enemy data at all so i'm not sure why you're seeing pipe pointers in it
|
|
|
|
Karatorian
Guest
|
|
« Reply #188 on: March 24, 2008, 04:25:27 am » |
|
Well, I guess that explains it, for the most part. As for the pipe pointers in 02, I'm not sure what's going on there. My code simply follows the pointer and reads until it finds 0xFF, then it stops. If there's really no enemy data in room 02, I may have a bug, I'll have to check it out.
As for the room 43 pipe pointers active in world 8, I do have a bug there. As I only read two bits for the world active number (I'm not sure why, it seems pretty dumb), the world 8 pointers where being reported as the wrong world. Luckily, the code doesn't actually do anything with the pipe pointer world numbers other than display them as information, so the code produced shouldn't be effected.
As for cleaning up the extra junk in the levels, that would be a good idea for two reasons. Firstly, while I've added a lot of space to the ROM, it'd be nice if we could save as much as possible. I'm hoping that I can avoid any bank switching other than the sound code relocation, to keep things fairly simple. If I have to relocate more of the ROM, it'll get a lot more complicated. Secondly, my level insertion program is fairly simplistic. It simply loads the rooms for each world. Then it scans each of them for pipe pointers to get the rest of the rooms, which it also scans for pipes, etc. This means that any spurious pipe pointers will cause it to load extra data.
|
|
|
|
generalleoff
Guest
|
|
« Reply #189 on: March 24, 2008, 07:36:01 am » |
|
Exactly what do you want tested and what types of bugs do you want reported? I can point out several issues with worlds 1-5 ranging from simple graphics issues and nitpicks caused from improper use of background graphics, improper enemy placement causing erratic or incorrect enemy movement patterns, graphics issues caused by hacks, disappearing objects, glitching color issues, places where the original map was poorly designed and could be corrected or improved, and sometimes broken levels. I don't want to report stuff yer already well aware of or personal opinions and minor nitpicks you might not care about Also me and a friend have been thinking of converting the game off and on for some time now but we really don't have the hacking skills required for many of the things needed by the conversion. So it's good to see other people had the same idea. We started some maps but never got far. We wanted to be a little less true to the original then you guys are being though. Like we wanted to replace the lame Hudson added enemy's from MB and DK with more traditional SMB enemy's. I also wanted to add new enemy's to SMB in general (for use in other hacks) but again do to lack of hacking skills never could. For example blue and yellow Koopas that would change their direction of travel depending on the side Mario was on. Like if he was on the left side and the Koopa was walking left then you jumped to it's right side it would turn in place and walk right. Blues would be like greens and will walk of a ledge or into a pit and die if led to do so but yellows would stop at the edge of the ledge/pit and wait for Mario. We also wanted to add piranha plants that could shoot fire balls. They would come out of the pipe fire a few fireballs (in a straight line or in an ark to the left and right side) then go back down. They would be blue and yellow as well and blue would be the same as green and yellow the same as red as far as when they do and do not come out of the pipe. We also wanted support for piranhas that could come out of horizontal pipes. A Fire Brother is another enemy we wanted to add. They would use the same basic fireball pattern as Mario uses to attack. We also wanted to add Mario a flying power up like from Special and a new Hammer Brother power up. Also the ability to play as Toad and the Princess with their SMB2 (US) like play mechanics. Luigi would be the same as he is in SMB2 (Japan). Would also love to see the game hacked to allow left scrolling. That kinda stuff might be asking to much of the games engine and proly takes mad hacking skills to implement if it's even possible. Anyway just wanted to take this opportunity to share some of my ideas for SMB hacks but I don't want to ramble to much.
|
|
|
|
rbudrick
Guest
|
|
« Reply #190 on: March 24, 2008, 12:24:21 pm » |
|
By the way, since the PC8801 version is 1 block taller vertically, was this cut out in the NES version from the top or the bottom? Depending on the level, wouldn't it usually be best to remove the bottom layer of blocks since Marion walks on a ground that is two blocks high?
I'm sure some levels would call for top and some bottom, but to remain true, does what I say make sense?
-Rob
|
|
|
|
frantik
Guest
|
|
« Reply #191 on: March 24, 2008, 04:22:47 pm » |
|
I can point out several issues with worlds 1-5 ranging from simple graphics issues and nitpicks caused from improper use of background graphics, improper enemy placement causing erratic or incorrect enemy movement patterns, graphics issues caused by hacks, disappearing objects, glitching color issues, places where the original map was poorly designed and could be corrected or improved, and sometimes broken levels. I don't want to report stuff yer already well aware of or personal opinions and minor nitpicks you might not care about well you certainly describe a lot of problems.. I would be interested to know about "graphics issues caused by hacks" and "glitching color issues". as for the map design i'm only interested in knowing if there was an error in copying the level over. broken levels of course I would like to know about. I suspect Karatorian was primarily asking for someone to test his expanded ROM to ensure it plays like the unexpanded rom the PC8801 version is 1 block taller vertically, was this cut out in the NES version from the top or the bottom? the PC8801 version is one block shorter. this has been incorporated into the hack as much as possible
|
|
|
|
rbudrick
Guest
|
|
« Reply #192 on: March 24, 2008, 04:30:50 pm » |
|
Oh, the PC8801 is *shorter* than the NES SMB. Ok, I misunderstood and had it backwards. That's a lot easier to handle than if it were taller. Sorry. Carry on.
-Rob
|
|
|
|
frantik
Guest
|
|
« Reply #193 on: March 24, 2008, 04:53:30 pm » |
|
:thumbsup:
Hey Karatorian i noticed sometimes enemies aren't rendered exactly in the right place.. look at map 6-2 chunk 3 it looks like two enemies (buzzy beetle and last plant) are misplaced
|
|
|
|
Karatorian
Guest
|
|
« Reply #194 on: March 24, 2008, 06:56:13 pm » |
|
In regards to the misplaced enemies, I'm aware of them, but as far as I can tell, they're like that in the original game. For instance, look at level 5-4. The two firebars next to the elevator are not in the center of thier blocks. I did my testing on world 5-4 because the misplaced sprites are near the begining of the level, unlike most of the others, which are near the end of their levels. Using my level relocator and a lot of patience, I managed to get the following screenshot. As you can see, the firebar is off by one column. I'm assuming the other offset sprites are actually wrong in the game as well. I could do more testing, but I doubt I'd be able to reach the effected areas given my lack of skill. I really should package up my level relocator and release it so that others can test stuff like this. (It's on my to do list.) As for bug testing, I guess I should have been more specific. I'm interested in any bugs in my expanded ROM that don't appear in the non-expanded ROMs produced by frantik. Of course, bugs in the other ROMs (or common to both) are good to know about as well. I wouldn't consider (supposed) poor level design inherited from the original game a bug. As for various ideas about improving SMBS above and beyond a straight forward port, I think it's an idea with merit, but I feel that such a project should come later. (I've personally thought about producing a mega SMB with SMBJ2's Luigi and other physics changes and SMB, SMBS, and SMB2J's levels all in one. Of course, producing a patch for such a project would be problematic, to say the least.)
|
|
|
|
|