Anyone Interested in Doing "SMB Special" for NES?

Started by SMB2J-2Q, February 06, 2008, 11:26:50 AM

Previous topic - Next topic

frantik

we could ditch one of the vine tiles

and mario's tiles could probably be reduced smore as well let me look

Karatorian

We only need one more. I thought about ditching one vine tile, but I fear that exactly symetrical vines would look bad. As the graphics guy, I'll let you decide what we can most afford to lose.

I've added CHR-ROM switching to my mapper codebase and have built the ROM with 16k of CHR-ROM. Everything seems to be working so far.

I've started mapping out where I'll insert the new tiles. Once we figure out where we're pulling the one tile from, I can get the modified sprite ROM banks done and start hacking the graphics tables as needed.
Current ProjectsFinal Fantasy EngineSMB Special for NESStudio Karatorian
@loop: lda (src),y — sta (dst),y — iny — bne @loop — inc src+1 — inc dst+1 — dex — bne @loop

rbudrick

Are there any letters in the tile set for the alphabet that are unused in the game?

-Rob

Karatorian

Rob, I don't know if any of the letters are unused, but it doesn't matter, because they're in tile ROM, not sprite ROM.

I've just discovered the strangest thing. The sprite tile I thought was unused, 0xFF, is used for something. But it's really weird. If you blank out that tile, the game locks up on boot while inside the sprite zero collision detection routine. If you modify the tile, the bottom of the status area at the top of the screen scrolls with the level as you move. It's really strange.

I looked in NESTech to see if I could figure out what exactly was going on, but it didn't shed any light on the issue. It must be some sort of Voodoo in part of the code I haven't looked at.

Anyway, this means we need to free up two tiles. I swear, if I find any more, I'll cry.
Current ProjectsFinal Fantasy EngineSMB Special for NESStudio Karatorian
@loop: lda (src),y — sta (dst),y — iny — bne @loop — inc src+1 — inc dst+1 — dex — bne @loop

frantik

#344
tile 0xff is used for scrolling..  it's the bottom half of the coin icon in the status bar.

tiles 0x70 and 0x71 are just mirror images of each other, so goomba = 4 tiles now :)

and EB and EE are identical..

Karatorian

Nice work. I can't belive I didn't find either of those when I was looking at the CHR-ROM earlier. Now that everything will fit I can finally get to doing the real work.
Current ProjectsFinal Fantasy EngineSMB Special for NESStudio Karatorian
@loop: lda (src),y — sta (dst),y — iny — bne @loop — inc src+1 — inc dst+1 — dex — bne @loop

Disch

Right -- tile FF is sprite 0.  If you blank it, sprite 0 is blank, so it can never hit.

frantik

#347
fixed the problems with missing items and also did worlds 5 - 8

- Worlds 1-4 with new blocks not suitable for standalone play
- Worlds 5-8 with new blocks not suitable for standalone play


oh hey K-man i was just looking at EnemyGraphicsTable and it doesnt look like there's really any room to add more enemy frames.. do you have a plan to avoid this problem?

Karatorian

As I was hacking around last night, I discovered the same thing. My current thinking on the matter is to alter the enemy sprite handling routines to use a second table if the enemy ID is above a given number. As the new enemies are all likely to have IDs higher than the existing ones, it should work nicely.

I know why the Gooba sprite tile that's simply a mirror image was done that way, rather than by reusing the other tile. The game has a horizontal flip routine that doesn't play nice with mirrored tiles. Mostly it's used for enemies (and Mario) when they are moving or facing to the right. However, it's also used by the special cased Goomba animation routine, even though the Goomba keeps moving left.

The horizontal flip routine works by swapping the left and right tiles and then enabling the horizontal flip attribute on them. This means that if you've set the horizontal flip attribute of an individual tile, if the sprite is modified by the routine, the results do not turn out correctly.

The only enemy in the game that has mirrored tiles and faces both directions is Lakitu and they avoided the issue in his case by not using the horizontal flip routine, but instead by handling it with a special case in the general enemy mirroring code.

It'd be tempting to just restore the Goomba tile and find another one to use, but it's not the best solution. For starters, the barrel is going to need to be treated similarly due to it's mirrored tile. Plus, the Fighter Fly, with one animation frame mirrored and the other not, is going to need to be handled.

The solution I'm pursing is to turn the Goomba from a single frame into two frames and handle the mirroring in a special case like they did with Lakitu. However, I've yet to figure out how to determin which frame the enemy is on when the mirroring routine is called. The Lakitu code isn't any help here as it does it's frame and direction determination based on stuff that has to do with enemy frenzy and the Spiny throwing.

I'm confident that it can be done, but I've yet to figure out exactly how yet. Until I do, I can't really fully impliment the graphics additions. However, it's nice to see that you've got the levels edited and ready for when I get the power-up graphics inserted.

Do you think I should release an expanded ROM with the placeholder graphics like I did with the 1-4 patch? Or should I wait until the power-ups have graphics of thier own?
Current ProjectsFinal Fantasy EngineSMB Special for NESStudio Karatorian
@loop: lda (src),y — sta (dst),y — iny — bne @loop — inc src+1 — inc dst+1 — dex — bne @loop

frantik

QuoteDo you think I should release an expanded ROM with the placeholder graphics like I did with the 1-4 patch? Or should I wait until the power-ups have graphics of thier own?

I think you should release it with the placeholders so people can test it and whatnot :)  plus we're kind of at the end of a "phase" here in a way imo.. all of the things i feel were valuable for a decent port have been accomplished.  If we dropped the extra power ups and left them as hidden 1ups it could totally be a valid port :)

Karatorian

#350
All righty then, I should have the latest patch released within the hour.

Edit 1: Hey frantik, your first link is broken. I managed to figure it out (you forgot the dot), but I thought I'd let you know.

Edit 2: You can get the latest and greatest expanded ROM patch here.
Current ProjectsFinal Fantasy EngineSMB Special for NESStudio Karatorian
@loop: lda (src),y — sta (dst),y — iny — bne @loop — inc src+1 — inc dst+1 — dex — bne @loop

frantik

oopsie fixed the link thanks :)

oh hey does the latest version include the bloober changers i sent u via PM?

SMB2J-2Q

There are some flaws I've discovered in the latest IPS patches of this hack. Among them:
1. Some of the ? blocks are replaced by L-pipes (remember when some of the accessible pipes were replaced by ? blocks before in earlier versions of this hack?).
2. Lakitu's palette is now color keyed by area type.
3. Some ? blocks are also replaced by flagpoles (I discovered one in the first castle level, and in World 8-3).

Also, some other things you still didn't fix:
*Still no points for shooting Piranha Plants with fireballs (as Fiery Mario). In the original SMB1, Piranhas were 200 points.

Have you got anymore ways to work around these problems?

Thank you,



Ben

frantik

#353
Quote from: SMB2J-2Q on May 01, 2008, 07:31:12 AM
There are some flaws I've discovered in the latest IPS patches of this hack. Among them:
1. Some of the ? blocks are replaced by L-pipes (remember when some of the accessible pipes were replaced by ? blocks before in earlier versions of this hack?).
3. Some ? blocks are also replaced by flagpoles (I discovered one in the first castle level, and in World 8-3).


if you're seeing these things you're playing the patches which say  "not suitable for stand alone play".  you need to use karatorian's patch not my two patches. 

i don't recall you mentioning the piranha plant problem before but Karatorian will have to look into that since he's been working on the plant code.

regarding lakitu, his pallette looks correct on 4-1 and 6-1 (both overworld levels).. what other levels does he even appear?  btw all palettes change depending on area type...


i noticed a starman block which should be a hidden power up block.. that was my fault.  fixed and will release a new patch once i test more.  Hey Karatorian I also noticed the demo isn't right any more though.. did the data get changed?

Karatorian

Currently the demo data is being extracted from whatever world 4 patch is being used to build the release. If your current patches have a proper demo, it should work, but if it doesn't I may have done something wrong in the extraction (proably a typo of some sort.) I'll look into it.

In regards the points for killing Piranha Plants, I don't think this has been mentioned before. I'm not aware of any changes I made to that sort of thing, but there are still a small number of changes that where copied wholesale from the patch frantik originally used to add the Red Piranha Plants. (Although, not very many any more.) It may be related to one of those or an unintertional (and unbeknownst to me) side effect of some other change. Does this affect all Piranha Plants, or just the Red ones?

No, the Blooper swim height change hasn't been added. I've yet to get around to it. BTW, I don't recall making any changes related to water height (although I may have forgotten). Besides the Blooper one, have you made any that aren't in the expanded ROM? Also, are there any that still need to be made? (I seem to recall Mario being able to swim right out of the water in some testing I did a while back.)
Current ProjectsFinal Fantasy EngineSMB Special for NESStudio Karatorian
@loop: lda (src),y — sta (dst),y — iny — bne @loop — inc src+1 — inc dst+1 — dex — bne @loop

frantik

re swimming:  i thought i made a post about the mario swim height changes.. not sure though.  the mario and bloober swim height changes have been implemented in the 1-4 rom if you want to take a look.  Mario needs two different values changed.  bloobers just one.  doesnt look like cheep cheeps have a height checking routine..

re: the demo.. the demo in world 1-4 patch is definitely different so perhaps it's not being copied correctly?


and it does look like green plants aren't giving points.  probably has to do with the patch i used for the red plants :\

Karatorian

You can get the latest expanded SMBS patch here. Changes in this patch are mostly bug fixes.

I've implimented the proper swim height checks for Mario and the Bloobers, so that they can no longer swim above the water line. These changes where in the unexpanded ROM, but hadn't been incorporated into the expanded codebase until now.

Piranha plants give points when killed like they're supposed to. This includes both Red and Green varieties. This bug was inherited from the Japanese inverted pipe patch Frantik originally used or my incoporation of it's changes into the code. (I'm not sure which.)

The demo importation code has been fixed so that the demo now does what it's supposed to do. This was the result of an off-by-one addressing error that caused the timing data to include the last byte of the action data as it's first value.

Finally, there has been a change to the special power ups. For the time being, they've been replaced with flags that give a 1 Up. This is to make them actually useful and look decent until such time as they can be implimented completely.

Hack and Enjoy.
Current ProjectsFinal Fantasy EngineSMB Special for NESStudio Karatorian
@loop: lda (src),y — sta (dst),y — iny — bne @loop — inc src+1 — inc dst+1 — dex — bne @loop

Googie



That's the only bug I coulda find, other than that, everything went smooth on my end.  :thumbsup:

edit: Hadda fix a typo

SMB2J-2Q

Quote from: Googie on May 03, 2008, 11:28:41 PM


That's the only bug I coulda find, other than that, everything went smooth on my end.  :thumbsup:

edit: Hadda fix a typo

There's another one left unchanged in the second part of World 3-2, in which the ? Block is supposed to be the accessible pipe which brings you to the second part of the first map screen of the level.

~Ben

Googie



Oh man, I forgot to go there last night lol! XD