|
ForumsSega Master System / Mark III / Game GearSG-1000 / SC-3000 / SF-7000 / OMV |
Home - Forums - Games - Scans - Maps - Cheats - Credits Music - Videos - Development - Hacks - Translations - Homebrew |
Author | Message |
---|---|
|
Zoomed sprites on SMS1
Posted: Tue Jun 28, 2022 9:47 pm
|
I'm trying to use zoomed sprites in a project (mostly to make more work for myself), but I'm noticing that on the SMS1, my sprites always seem to show up in the double-height version.
It looks like you actually need to have a full eight sprites on the scanline to have the first four actually zoom properly, otherwise you get the sprites stretched vertically but not horizontally. Has anyone else noticed this with the SMS1? |
|
|
Posted: Wed Jun 29, 2022 3:09 am |
Yeah, on the original SMS the sprite doubling only works for the first four sprites in a line. The last four will not be doubled. This was corrected in the SMS II hardware. It's also worth noting that sprite doubling is removed entirely from the MegaDrive backwards compatibility with SMS carts.
From https://www.smspower.org/uploads/Development/msvdp-20021112.txt :
|
|
|
Posted: Wed Jun 29, 2022 3:18 am |
Is there any games that you could not play on an SMS1 ? Interested in testing them | |
|
Posted: Wed Jun 29, 2022 3:36 am |
Yeah I have read that document-- I was just noticing that on my SMS1 the behavior differs from that, in that screenshot I have no other sprites on the scanline except for those that make up the character, but the sprites are still stretched. Adding blank sprites so that there are a full eight sprites on the scanlines where I want double-sized sprites makes the four good ones work. And yes double-sized sprite mode is pretty much useless due to all its limitations, here I could pre-double-size them myself and work on all SMS models without issue (except for wasting a bit more VRAM)... |
|
|
Posted: Wed Jun 29, 2022 9:41 am |
This problem could be solved with a mapper ou would be a eternal condemnation? | |
|
Posted: Wed Jun 29, 2022 1:28 pm |
This is pretty weird! I suspect when it doesn't work properly you have offscreen/invisible sprites on the same scanlines and coming first in the SAT order, but then if you place more sprites you move those around in the SAT order and you get the first 4 working properly... |
|
|
Posted: Wed Jun 29, 2022 1:29 pm |
no mapper can solve this, the zoom feature is bugged on the first revision VDP so you either don't use it or you have to be creative and workaround the limitations... |
|
|
Posted: Wed Jun 29, 2022 7:44 pm |
Thanks for you dont be harsh with my very noob question. Im ever learning with Maxim´s, Calindro, your and other posts about hardware. I was wondering if in some way, for example a mapper, could turn 'horizontal zoom' flags left active/on in SMS1 . But if not, thanks for your clarification. |
|
|
Posted: Wed Jun 29, 2022 10:17 pm |
This is a bug inside the VDP itself unfortunately, so external accesses can't fix it. Not that it matters that much since the feature doesn't even work on the Power Base Converter. I wonder what systems are most used by people playing the Master System these days... |
|
|
Posted: Thu Jun 30, 2022 2:24 am |
I also notice that in my previous project (https://www.smspower.org/forums/18983-MixingVideoModesMostlyOnMegaDrive#120575). I used the collision flag on zoomed sprites to determine witch revision of the VDP I was running (SMS1, SMS2 or Genesis).Turns out, in my experience the behaviour of zommed sprites on SMS1 is diferent.If I remember correctly, it's not the first four on a scanline that are propertly zoomed. t's the first sprites after four that are: If there are 5 sprites on a scanline, the first one will be zoomed correclty, If there are 6, the first two, and so on. There is also a bug on my rom in that project, I was forcing the test to Genesis in some situations. |
|
|
Posted: Thu Jun 30, 2022 7:02 am Last edited by sverx on Thu Jun 30, 2022 7:10 am; edited 2 times in total |
As far as I can tell, this doesn't match with what I observed, even if it seems to match with what Nicole observed. In SMS Test Suite I'm testing the collision flag with zoomed sprites to determine the VDP version too. [What's not well known is that there's a bug on the collision flag too which I stumbled upon while coding the test suite which makes the zoomed sprites NOT collide even when overlapped vertically] What I do is to place 6 sprites on the same scanline. The first 5 are horizontally evenly spaced at 16 pixels and the 6th sprite is only 15 pixels to the right of the 5th. Since the bug affects the 5th sprite (and the 6th too, but that's not interesting) horizontally, you don't get the 5th sprite collide with the 6th on a first revision VDP. You can check my detection routine here. Let me know if you find a bug! :) edit: oh, wait, I just realized it would work even with your description. So bad I don't have a first revision SMS to test myself! |
|
|
Posted: Thu Jun 30, 2022 7:07 am |
I didn't mean to be harsh at all, sorry if it sounded so, I'm not a native speaker and I just try to do my best. |
|
|
Posted: Thu Jun 30, 2022 9:45 am |
No. On the contrary, your words were friendly, even my question being noob. Thanks for not have been harsh with my question. BTW i have other question. I was playing your homebrew, Waimanu, in my original SMS1. When i complete the stage sucessfully the penguin celebrate at end and it seems zoomed in emulator - Fusion - but not in my SMS1. We are treating typically of VDP bug in zoomed sprites in SMS1´s VDP? |
|
|
Posted: Thu Jun 30, 2022 10:05 am |
LOL I was thinking about asking someone to perform that exact test for me! Thank you so much for that!
Waimanu is supposed to zoom (I detect if it's a MegaDrive to avoid that) in the second half of the celebration animation. As I never had a first revision SMS I couldn't try that on that specific hardware, so I supposed that since I was using only a few sprites I would not incur in the famous bug. TIL - years later! |
|
|
Posted: Fri Jul 01, 2022 2:25 am Last edited by gvx32 on Fri Jul 01, 2022 12:23 pm; edited 1 time in total |
Just a confirmation of what I said previously.
I modified my rom to show the sprites of the VDP revision test, and by the way they appear, there is no doubt that the behaviour I described is correct. You can skip the test by pressing any button (Also, ryu's animation is not working, I don't no why, but I can assure that you still can send data to the VDP as fast as you like while in text mode). |
|
|
Posted: Fri Jul 01, 2022 6:41 am |
can you share a picture too? |
|
|
Posted: Fri Jul 01, 2022 11:47 am |
Sure. The test runs in two steps. In the first step, sprite zero have a Y's coordinate of 32. If the sprite collision flag is detected here, than we already know that the VDP is a SMS2. In the second step, sprite zero is put at a Y's coordinate of zero. The sprite collision flag than will decide if the vdp is of a Genesis or a SMS1. edit: just saw my previous post. When I said "there's doubt", I meant "there's no doubt". Already corrected there. |
|
|
Posted: Sat Jul 02, 2022 9:36 am |
To check if the VDP has no sprite zoom capability at all, I just put two 8×8 zoomed sprites one above (Y) the other offset by 15 pixels so that they should collide both on SMS and SMSII but not on Genesis/MD (any offset 9 to 15 pixels would work btw)
Then, to further check if it's a first or a second revision VDP, you need more sprites of course. |
|
|
Posted: Wed Jul 06, 2022 2:01 pm |
I just realized that even that could be done just by checking two zoomed sprites only, as they would overlap if 8 pixels apart horizontally only on an SMSII | |