About the ram bus, i always thought it was full 32bit... I still think it is, else, why would the cartridge access be 3-4 times slower?
I believe access to the cartridge is split evenly betweenthe 68K and the 32X with the 32X getting one access per 68K bus cycle. The SH-2s run at 3 times the clock of the 68K, but a 68K bus operation takes 4 cycles for a total of 12 SH-2 cycles for every 68K bus operation. If the SH-2 is only allowed one bus operation per 68K bus operation, it will take the SH-2 up to 12 cycles or so to access the cartridge bus. I believe it was said that DRAM access takes ~3 cycles. 12/3 = 4
That said, even with a 16-bit bus, longword moves will still be more efficient than word or byte moves.
5000 tiles total ? O_o wow, that's great, almost twice the megadrive display power
I can't imagine the possibilities displaying big background & huge sprites
By using 16*16pixels tiles instead of 8*8, you should be able to get more speed
Tiles will be stored in RAM.
For now, I just call one tile, so 5000 tiles total is pretty much theorical. But choosing the right algorithm is all the rage.
Scrolling remains my main concern, since I really have no clue of how to handle it (except the screen-scroll you'll find at the beginning of this post).
Starting at 16x16 pixels, I guess I'll choose DMA instead of mov.l
I'll try to post the demo tonight (no FTP access from work).
If i remember, the 32x have the possibility to push bytes(pixels) of a single line left or right by hardware or maybe it is what you already said by "screen scrolling"
Fonzie wrote:If i remember, the 32x have the possibility to push bytes(pixels) of a single line left or right by hardware or maybe it is what you already said by "screen scrolling"
As far i remember, you can do easy scrolling with frame buffer address variation but as the address is word boundary, you have to use a special VDP register for the byte wide scrolling
Yes, I see what you mean,
and no, this is not what I meant.
But no, it's not exactly what I intend to do.
What I want to do is scroll a plane, not the whole screen. And that's the big deal !!!
ob1 wrote:Yes, I see what you mean,
and no, this is not what I meant.
But no, it's not exactly what I intend to do.
What I want to do is scroll a plane, not the whole screen. And that's the big deal !!!
Doing plan scrolling will be a bit more complexe, in fact you'll need to do byte wide transfert :-/
Sure, actualy, you have a minimal horizontal scrolling precision of two pixels (if writting with words) or even four pixels (if using long)...
It isn't so bad if you want to make a fast scrolling, but to make a slow and smooth scrolling, its not perfect...
If its two pixel precision (write with words), i think its okay for slow scrolling (can scroll smooth-perfect 320 pixels in 2.5 seconds minimum, not so bad).
Unfortunately, I completed the SuperVDP project.
Unfortunately, it can handle horizontal mirror, vertical mirror and 90° rotation.
Unfortunately, I learned a lot of things, especially about SH2 pipeline and subroutine.
And unfortunately, displaying two frames does last more than 1/60 sec.
I can reach a bigger speed if I give up tile handling (mirror and rotation). But, it won't be a VDP (P stands for Processor) anymore, but rather a DMAC. Since 1) it was not what SuperVDP was intend for and 2) there's no challenge in it, I won't turn to this extend. Feel free to go for it.
So, there's no point in continuing this project. The source will be available on my site.
nd unfortunately, displaying two frames does last more than 1/60 sec.
Two layers?
It is good performance to me
Did you know that the bus bandwidth (to framebuffer) do not allow much more anyway?
Maybe you can use 16*16tiles to increase a bit the performance.
Adding ultrabasic scrolling (long alignement) will not slowdown anyway
I can't reach two layers. 2 planes does take more than 1/60 sec, so I can't reach 30fps :(
But actually, I can reach much higher speed.
But I must not process tiles. Just copying tiles, straight tiles, and using longwords, allows me to draw, let's say 4 planes !!!
By the way, no mirror, no scrolling or transparency.
So ?
So it's not what I want. In this case, I don't need a tile engine. In the end, I just get a still image, composed of 4 tile layers, yes, but just a still image. I'm not sure a still image does need two 23MHz 32-bit RISC CPU. The mere 68k would be more than enough for this. And being clever, you'd use the RLE mode.
There's no point in writing such a Super(loosy)VDP.