Jump to content

Question

Dear CX16 team ...

Don't know how to say this but ...

The team should consider to add 256K on the vera, in 4 memory banks!

 

Don't make the mistake to add too less memory.

The VERA should be able to show 640x480x8BPP bitmaps in 256 colors!

I know it will make the machine more expensive, but come on! How much does RAM cost these days!

Pls consider.

Sven

  • Confused 1

Share this post


Link to post
Share on other sites

Recommended Posts

  • 0
18 minutes ago, svenvandevelde said:

An interactive arcade game would easily have 6 to 8 different enemy types on the screen requiring animations, damage states, bullets, shields, glowing etc.

Not sure that's what 8 bit hardware could do. Of the top of my head I'm pretty sure the best NES games like Mario Bros 3 had maybe 4 on screen? All of the above really came to the fore when machines moved to 16 bits.

That said, there are all sorts of optimisations you can do to achieve some of your goals. You just have to figure out how to do it. Clever use of the sprite flipping and the colour pallette index will get you a long way there.

What makes developing on systems like the X16 fun is overcoming the hardware limitations, memory being one!

  • Like 1

Share this post


Link to post
Share on other sites
  • 0

You don't necessarily have to store all of your sprites in VRAM at once. If you only have one sprite on-screen that uses those 17 frames of animation in the screenshot you posted, just keep one of those animation frames in VRAM at a time and copy the next one from RAM to VRAM when needed. However, this will impact performance.

Share this post


Link to post
Share on other sites
  • 0
7 minutes ago, StinkerB06 said:

You don't necessarily have to store all of your sprites in VRAM at once. If you only have one sprite on-screen that uses those 17 frames of animation in the screenshot you posted, just keep one of those animation frames in VRAM at a time and copy the next one from RAM to VRAM when needed. However, this will impact performance.

This method crossed my mind too. But indeed, that impacts performance and it will require to continuously copy sections of memory into VRAM ... It will have CPU overhead ...

Share this post


Link to post
Share on other sites
  • 0
59 minutes ago, Yazwho said:

Not sure that's what 8 bit hardware could do. Of the top of my head I'm pretty sure the best NES games like Mario Bros 3 had maybe 4 on screen? All of the above really came to the fore when machines moved to 16 bits.

I would like to mention that the SNES only had 64K of VRAM (and the NES, if I read the documentation correctly, only had about 10K of video memory), whereas the X16 will have almost 128K. With a bit of clever programming, the X16 will likely be able to provide similar graphics capabilities to a 16-bit machine.

Share this post


Link to post
Share on other sites
  • 0

Or use 2bpp assets where possible, such as explosions/bullets/power up icons, your HUD font, etc.

Even the mighty SNES used 2bpp on most of its layer modes. Your scrolling demo has 64x64 tiles. They look awesome but that’s an expensive route to take vs a versatile 16x16 tile set that you have to draw your bg’s with.

  • Like 1

Share this post


Link to post
Share on other sites
  • 0
Posted (edited)

I too wanted more video RAM to make things easier. It was a no. You can find the reasons somewhere in this forum.

So I made a spreadsheet to do some calculations and comparisons between some different combinations of screen modes, layer sizes and bit depths to see what the X16 could do and what I have to work with.

One example:

Resolution: 320x240

Layer 1: 128x32

Layer 2: 64x32

Colour depth: 8bpp

If my calculations are correct there is enough memory to have over 1700 8x8 or equivalent images, for either tiles or sprite animations.

Using the 4 orientations (normal, H-flip, V-flip, H+V-flip) that’s a lot of images to build a screen and for animations.

Using 4bpp with a custom palette and palette offsets could massively increase that number.

Edited by Fenner Machine
Missed an 's'
  • Like 1

Share this post


Link to post
Share on other sites
  • 0

As much as I want to support ambitious projects that aim to push the limits of the hardware, it's only with the understanding that the hardware is what it is, and living on the edge means always being a half-step away from teetering over it entirely.

It might be worth planning out what you want to do in your shooter, and figure out whether you have the VRAM to do so at 640x480... or else to drop to 320x240, or make cuts somewhere in order to fit your game into VRAM.

Share this post


Link to post
Share on other sites
  • 0
15 hours ago, svenvandevelde said:

What I don't like is the lack of sufficient VRAM in the VERA. Even in 4bpp, memory runs out fast. Especially if you want to embed spritee animations. With the hardware capabilities of the VERA, memory is underscaled when using the high resolution 640x480 in tiled mode.

An example ... 12 sprites of 32x32 pixels in 4bpp requires $1800 bytes. But in high resolution 32x32 px is very little. 64x64 px quadruples the memory requirement... then you talk about $6000 bytes. And that is for just one "healthy" sprite animation ... beside that, you need explosions, damaged states, shadows, overlays like glowing effects, bullet types. So per enemy type you can easily consume $8000 to $A000 bytes (when in 64x64). And note that all this is in 4bpp. When using 8bpp that requires a multiple by 2. So 12 sprites in 8bpp 32x32 consumes about $3000 bytes. In 64x64 mode that would be $C000. That's 1/3 of the VERA VRAM, for one healthy enemy.

An interactive arcade game would easily have 6 to 8 different enemy types on the screen requiring animations, damage states, bullets, shields, glowing etc.

Noting that the VERA has 128 different sprites that can be shown simultaneously I really am afraid that memory upscaling is a requirement to use the full potential of the machine.

Are you using all 255 banks of RAM?  Data can be copied into and out of VERA memory.

Share this post


Link to post
Share on other sites
  • 0
16 hours ago, x16tial said:

Are you using all 255 banks of RAM?  Data can be copied into and out of VERA memory.

It still takes resources to copy this data. SHMUPs by nature often have lots of objects to tend to on the screen at any given time, and CPU time can be precious if you want to keep the frame rate nailed up at 60fps.

Although, one other thing about SHMUPs can be taken advantage of here - the fact that you know what's coming up. OP mentions a dynamic VRAM management system being in place. If so, he could potentially make a dynamic loading process which operates in the background over multiple frames, only performing loads as time permits.. say during the busy loop at the end of a frame's game logic. The logic could look ahead and know that it's about to need to load resources for a new enemy type and start loading that in advance, and possibly keeping track of least recently used data as a place to put it - so if some enemy type is no longer on screen, its resources could be overwritten by an upcoming enemy.

  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

Please review our Terms of Use