Jump to content
IGNORED

The completely underappreciated possibilities of Mode 0 on SNES. . . .


Recommended Posts

20 minutes ago, Kirk_Johnston said:

Here's some footage of the demo:

 

And here's some footage of the SNES doing the row/line scrolling plus column scrolling on a single layer along with just row/line scrolling on the other layer in an actual game too (unfinished and unreleased, unfortunately):

 

Also worth noting, the SNES can actually do higher fidelity column scrolling than Genesis, down to every 8 pixels rather than just every 16, so the effect of tilting the screen using row scrolling plus row/line scrolling can in fact look smoother on SNES. I know a direct comparison for this but can't remember the name of the game just now, so give me a sec and I'll post a clip of each. . . .

 

Edit: Yeah, it's the tilting helicopter in Time Trax:

 

SNES:

 

Genesis:

Thanks for that vid! Hmmmm.... So, believe it or not, the demo is still inconclusive, unfortunately. As the part of the text waving faster on layer 2 is probably correlating to the empty half of layer 1 (and vice versa, the slow wavy OPT section of layer 2 could simply be void of gfx).

 

Yeah, the 8 pixel precision column scroll is pretty smooth looking. Genesis would want to be in h40 mode to not have such a stark visual difference when comparing. Not bad, Snes dudes, not bad 😎

Link to comment
Share on other sites

35 minutes ago, JurassicDope said:

Thanks for that vid! Hmmmm.... So, believe it or not, the demo is still inconclusive, unfortunately. As the part of the text waving faster on layer 2 is probably correlating to the empty half of layer 1 (and vice versa, the slow wavy OPT section of layer 2 could simply be void of gfx).

 

Yeah, the 8 pixel precision column scroll is pretty smooth looking. Genesis would want to be in h40 mode to not have such a stark visual difference when comparing. Not bad, Snes dudes, not bad 😎

Well, what I am seeing in terms of the parts with column scrolling plus row/line scrolling is Mode 2 with two different overlapping background layers scrolling in two different horizontal directions and the column scrolling on each layer moving at a different rate and at different vertical positions on the screen, followed by Mode 4 with two different overlapping background layers scrolling in two different horizontal directions and the column scrolling on each layer moving at a different rate and at different vertical positions on the screen, followed by Mode 6 with one horizontally scrolling background with some column scrolling applied to it. And there's obviously all the other bits with the other modes as well.

 

So, if that couldn't be converted into say two full-screen backgrounds that both have different column scrolling and row/line scrolling applied to them or two different backgrounds where one is split part way down the screen using HDMA and has different column scrolling and row/line scrolling applied to the top half from the bottom half, I don't know what else it would require to be honest. :-o

 

This is one of those things where all it would take is a SNES programmer an afternoon to actually try it and let everyone know once and for all (maybe even demonstrate it clearly in a nice example with say some clouds in one layer and a helicopter in another, or some column-scrolled skyscrapers in one layer and then part of a flying vehicle at the top of the other layer and a floating platform on the bottom half--as two totally random examples I clearly just plucked out of thin air). 😛

 

The H40 mode will only make the column scrolling a little less wide on Genesis as compared to SNES when specifically playing games on both systems in a 4:3 display aspect ratio. If these games are played in the native display ratios for the consoles, the one that displays the art as it was actually originally created in most cases and that isn't the 4:3 slightly squashed version on Genesis or the 4:3 slightly stretched version on SNES, the columns will still be twice as small/fine on SNES.

 

Dunno about Genesis, but right now you can choose to play SNES games in an 8:7 display aspect ratio [or perfect pixel mode as its officially termed by Nintendo] on 3DS, Switch, SNES Classic Mini, every modern clone console and every SNES emulator, so you don't really have to play with the visuals stretched there as if you were stuck on an old 4:3 CRT TV if you don't want to. Again, not sure what the options are there for Genesis and avoiding the slight squashing of the visuals that happen when played at a 4:3 display aspect ratio.

Edited by Kirk_Johnston
Link to comment
Share on other sites

The interesting thing for me with the whole column scrolling is that it means that SNES can only work with two layers max just like on Genesis in this mode (or only one if its in Mode 6). It's kind of in "Genesis" mode at that point when it comes to the backgrounds (assuming it's in either Mode 2 or Mode 4). But at least it still has four times as many colours it can display on-screen total chosen from a palette 64x bigger, finer quality column scrolling, colour math, window/shape masks, the likes of HDMA for smooth gradients, background mode switching part-way down the screen via HDMA (multiple times), and so on too.

Edited by Kirk_Johnston
Link to comment
Share on other sites

6 hours ago, JurassicDope said:

Shoot! I feel like this is 101 stuff I should've known... 😅 Thanks for this clarification 😁

Yeah what I think is happening in that situation is that the DMA controller inside the CPU is placing bytes on the 8-bit CPU data bus at 2.68 megs/second, but PPU1 is ignoring that bus because it's too busy drawing the screen.

  • Thanks 1
Link to comment
Share on other sites

12 hours ago, Kirk_Johnston said:

OK. But, just to be clear, with that specific background using one layer (although it wouldn't look very good in Mode 0), you could literally have three more full background screens worth of coins falling at one of three speeds depending on what background they are on, plus around 128 coins (or even groups of coins in some of the object/sprite tiles) minus however many objects/sprites are required for the player. So there's gonna be a dang lot of coins falling (and the SNES should absolutely be able process that amount at 60fps based on this demo https://youtu.be/Xf1SreRlbZQ)!

 

With that specific background image though (and you might want to adjust it so the text isn't visually too distracting when the coins start falling), it might be better to just use the normal Mode 1 and do it using one of the high colour backgrounds and then have two more backgrounds of coins plus all the sprites. Or, to really get the image looking good (and much better than on the competition), it would be best to use Mode 3 and have that background in 8bpp 256-colour, and then use the other background for a layer of coins and have all the additional sprite coins on top of that. So, it can be probably kinda meh looking background [although I can test this] and LOADS of coins or great looking background and still loads of coins. Do you have a preference?

Kirk, you really know your stuff. How about you explain how I can make backgrounds that look good in mode 0 and we start with some coins and increasingly more until the screen gets absolutly flooded with coins, for the 'wow how is this possible on snes'-effect. What is your preferance?

Link to comment
Share on other sites

3 hours ago, Creamhoven said:

Kirk, you really know your stuff. How about you explain how I can make backgrounds that look good in mode 0 and we start with some coins and increasingly more until the screen gets absolutly flooded with coins, for the 'wow how is this possible on snes'-effect. What is your preferance?

How about I just post this:

 

Now, just want to make it clear that I'm aware there's often more than the max 14 16x16 coins plus Alucard per scanline, especially when the coins bounce, but I can't really code that in GameMaker 8.1 at the level of programming I'm at (especially any maths calculations, collision checks, arrays, etc, that might be required and such), so we can just imagine it's a bit more controlled in a hypothetical real SNES version and maybe also that we allow for some sprite flicker too anyway. But the point is, that's 120 16x16 coins on-screen minus the 8 16x16 objects/sprites required to make Alucard (it's actually likely quite a bit less than the full 120 on-screen at any given time because of the way I position them all off-screen initially covering a full screen's area above the view and then drop them into view at varying speeds, but it's clearly a lot either way), and then an additional three background layers of coins. And, obviously we could make it look like even more by filling in more background tiles, maybe animating some of those tiles, etc.

 

I also want to make clear that I'm aware this may be too intense and either needs some miracle code and optimization to run without slowdown (despite the actual SNES demo below doing something relatively similar), or possibly just need to be dialed back a little until running perfectly, but that's what programmers are for, eh. I, however, just did this quick mockup version for a bit of "fun" and to demonstrate the general idea! 😛

 

PS. The code for the coins is basically move down the screen getting a little faster, when it reaches a position near the bottom of the screen reverse direction (first time only) and get a little slower until 0, then reverse direction and get a little faster again and fall off screen. If off screen return to start position, which is above the screen, and reset the fact it reverses direction when it reaches the bottom of the screen again (first time only). The player has code that says if he collides with a coin, return it to its start position and set speed to zero then start moving down getting a little faster again, and reset the fact it reverses direction when it reaches the bottom of the screen again (first time only).

 

It's basically just this again in principle:

 

And that's about it, other than moving the player left and right. The animations are also setup in a way specific to GameMaker 8.1 that's mostly handled under the hood when I add the images other than a few things I set in code like the animation speed and such, and this would be done very differently on SNES obviously.

Edited by Kirk_Johnston
Link to comment
Share on other sites

To make backgrounds that look good in Mode 0, you can simply save out the images at 256x224 and then use this tool to convert them to fit within all the limits of Mode 0 for SNES:

 

https://rilden.github.io/tiledpalettequant/

 

And, easily enough, it's basically already got all the settings ready for Mode 0 output (you can also do 4bpp and 8bpp output using this tool too). You can learn a little more about the settings here:

 

https://forums.nesdev.org/viewtopic.php?p=286020#p286020

Edited by Kirk_Johnston
  • Like 1
Link to comment
Share on other sites

A slightly better version where it looks like more coins because the colours on the background coins are closer:

 

And, again, I could fill in many more of the background tiles on each layer plus animate a bunch of them too, maybe tweak the layer speeds a little also, and vastly increase the amount of coins it looks there are on-screen. :)

Edited by Kirk_Johnston
  • Like 1
Link to comment
Share on other sites

16 hours ago, Kirk_Johnston said:

A slightly better version where it looks like more coins because the colours on the background coins are closer:

 

And, again, I could fill in many more of the background tiles on each layer plus animate a bunch of them too, maybe tweak the layer speeds a little also, and vastly increase the amount of coins it looks there are on-screen. :)

That is insane Kirk. Is there no danger of the SNES getting on fire? This is mode 3 I asume?

 

17 hours ago, Kirk_Johnston said:

To make backgrounds that look good in Mode 0, you can simply save out the images at 256x224 and then use this tool to convert them to fit within all the limits of Mode 0 for SNES:

 

https://rilden.github.io/tiledpalettequant/

 

And, easily enough, it's basically already got all the settings ready for Mode 0 output (you can also do 4bpp and 8bpp output using this tool too). You can learn a little more about the settings here:

 

https://forums.nesdev.org/viewtopic.php?p=286020#p286020

That's great, I will make mode 0 so we can go in technical overdrive.

Link to comment
Share on other sites

1 hour ago, Creamhoven said:

That is insane Kirk. Is there no danger of the SNES getting on fire? This is mode 3 I asume?

 

That's great, I will make mode 0 so we can go in technical overdrive.

That's Mode 0 again. Mode 3 would have two less layers of coins but a much nicer looking background image.

Edited by Kirk_Johnston
Link to comment
Share on other sites

7 minutes ago, Kirk_Johnston said:

That's Mode 0 again. Mode 3 would have two less layers of coins but a much nicer looking background image.

Wow, it looks pretty good still!

 

The github tool youve linked crashes on all my browsers when I try to download the picture.

Link to comment
Share on other sites

Interestingly, a 4bpp image still looks good enough that I could get away with using with Mode 1 here and still have a whole background totally spare with the version above that only uses one of the backgrounds for coins.

 

Here's the 8bpp 256-colour image (sprites share the palette):

Toad.png.b2037319a28cc448648cd2a3b7cd290d.png

 

And here's the 4bpp 128-colour image (the other 128 colours are dedicated to the sprites):

4bpp.png.8cf419e1877aeae7dc2701454e41c403.png

 

This is the benefit of the SNES having that 32,768 master palette to work with.

 

So, guess what, I could also add one of those huge bosses into this coin screen by going with Mode 1 instead. . . .

Edited by Kirk_Johnston
  • Like 1
Link to comment
Share on other sites

5 minutes ago, Kirk_Johnston said:

Interestingly, the 4bpp image still looks good enough that I could get away with using that and still have the two other backgrounds totally spare with the version above that only uses one of the backgrounds for coins.

 

Here's the 8bpp 256-colour image (sprites share the palette):

Toad.png.b2037319a28cc448648cd2a3b7cd290d.png

 

And here's the 4bpp 128-colour image (the other 128 colours are dedicated to the sprites):

4bpp.png.8cf419e1877aeae7dc2701454e41c403.png

 

This is the benefit of the SNES having that 32,768 master palette to work with.

I see. Mode 3 is pretty powerful as well.

5 minutes ago, Kirk_Johnston said:

So, Guess what, I could add a couple of those huge bosses into this coin screen. . . .

I will think of something.

  • Like 1
Link to comment
Share on other sites

14 minutes ago, Creamhoven said:

That is impressive as well. Less coins but more detail. How fast can you change backgrounds?

Fast enough that it could look like some kind of Star Wars wipe or maybe some interesting transition where you see however many tiles changing every frame until the next image is revealed.

Edited by Kirk_Johnston
  • Like 1
Link to comment
Share on other sites

2 minutes ago, Creamhoven said:

How can I create a boss sprite?

You could quickly do it the same way you basically do with the background using the quantisation tool: Draw your boss as you would like it to look then convert it using the tool so it's not breaking the colours per tile limits for the background you want it put it on (8bpp, 4bpp or 2bpp).

  • Like 1
Link to comment
Share on other sites

7 hours ago, Kirk_Johnston said:

You could quickly do it the same way you basically do with the background using the quantisation tool: Draw your boss as you would like it to look then convert it using the tool so it's not breaking the colours per tile limits for the background you want it put it on (8bpp, 4bpp or 2bpp).

What resolution though...

Link to comment
Share on other sites

4 hours ago, Creamhoven said:

What resolution though...

Well, if it's a boss using a background layer it can be as tiny as 8x8 or as big as the screen and even more (I think up to two screens wide or two screens high). If it's an actual sprite made up of objects, it can't take up more than the 512 8x8 unique sprite tiles total that are available for sprites in its visual design (and you'd need to use some of them for the player, enemies and projectiles and stuff too) but can again be as big as the screen depending on the size of sprites used (although, the bigger it is, the more likely you'll be using repeating tiles in its design). There's probably more to be explained than that, but that's the gist of it or thereabouts.

Edited by Kirk_Johnston
  • Like 1
Link to comment
Share on other sites

24 minutes ago, Kirk_Johnston said:

Well, if it's a boss using a background layer it can be as tiny as 8x8 or as big as the screen and even more (I think up to two screens wide or two screens high). If it's an actual sprite made up of objects, it can't take up more than the 512 8x8 unique sprite tiles total that are available for sprites in its visual design (and you'd need to use some of them for the player, enemies and projectiles and stuff too) but can again be as big as the screen depending on the size of sprites used (although, the bigger it is, the more likely you'll be using repeating tiles in its design). There's probably more to be explained than that, but that's the gist of it or thereabouts.

Yeah, this page has a picture showing the different screen repetition settings:

 

https://archive.org/details/SNESDevManual/book1/page/n117

Edited by jeffythedragonslayer
  • Like 1
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...