Target hardware and vidmem requirements

BlitzMax Forums/BlitzMax Programming/Target hardware and vidmem requirements

Robert Cummings(Posted 2005) [#1]
Hi there,

I will be loading in these graphics:

2x 800x600 images (are these resized to 1024x1024) ?
8x 256x256 tilemaps

Plus various little images here and there - they will all be visible at once. Thing is, as I'm targetting mac and pc, do you think these requirements are too high? I am worried about the large number of 8 meg cards on macs.

Also, it is targetted at the casual audiance, not the AAA audiance so they may well have really poor hardware.

I want to avoid texture paging. Do you have any advice on minimising vid mem usage, as the above is on-screen all the time each frame? My game runs at 800x600.

Many thanks!


Ross C(Posted 2005) [#2]
Well, you could use a lower bit depth for the buffer. Sorry, but i don't know if blitzmax works the same way, but 16 bit mode uses alot less memory to set up the buffers, than 24/32 bit mode.

I assume doing this would load the images into vid memory at that bit depth, and thus use less memory for your images too.


Robert Cummings(Posted 2005) [#3]
Thats a good point. I'll check the card on startup and if possible go into 16 bit.

Another thing to do would be to chop things up so the 800x600 images (which are 1024x1024 in memory? can someone verify this) into strips n stuff. Bet thats a lot of bother though.

Does anyone know the inner workings of Blitzmax?


fredborg(Posted 2005) [#4]
Yep, an 800x600 image is resized to 1024x1024, which consumes around 4Mb ram if in 32bit. So the smart way of doing it is, either cutting it into pieces or run in 16-bit if there isn't a great big deal of video memory available.

You can probably load the image only as 16-bit, with some loadimage flag thingy... not enitrely sure about that though.

The easy way out, if it's not incredibly important that the image is super sharp, is to do it as a 512x512 image, and then scale it to 800x600 in BlitzMax.


Robert Cummings(Posted 2005) [#5]
Hi Fredborg, thanks for your input.

I think I will be targetting 8 meg cards - I think they are very common on the mac and in casual pcs.

Unfortunately it's really important to have sharp graphics. Whats that about loading a 16-bit image?


Hotcakes(Posted 2005) [#6]
I'm pretty sure that images are converted to 32bit internally. Since two 1024x1024x32 images will take up 8 meg and then you need 800x600x16bitx2dualbuffer = 2meg for the actual screen, with of course actual game graphics on top of that as well, I don't think <16meg vid cards are an option. Perhaps you could settle for 640x480 with 512x512 textures? Strectched on the X axis but it may not look so terrible?


Nelvin(Posted 2005) [#7]
One really important option for textures would be the optional usage of compressed textures. It isn't lossless but it makes a *HUGE* difference in vidmem requirements. But I don't know if the older 8MB cards support these formats using their hardware.
The compression typically uses 4 or 8bits per texel and so shrinks textures to 1/4 or even 1/8 of their original 32bit size. Compression quality depends on the image but can be tweaked/optimized offline using visual tools.


wildboar(Posted 2005) [#8]
For Blitzmax to work properly on a Mac, it needs at least a 16MB card because OSX doesn't have OpenGL drivers for anything older than that.


Robert Cummings(Posted 2005) [#9]
I am not sure that is entirely true because AFAIK Blitzmax is running on cruddy rage 8 (or 4?) meg cards... Just something I read in general discussion. Perhaps someone can clarify?


wildboar(Posted 2005) [#10]
On Windows maybe, but I haven't been able to find a way to get it to use OpenGL on my old 8MB Mac. It will run (in software render mode), but it's unusably slow. It's an OS thing, not a hardware thing. If Blitzmax ran in OS9, it might work.


Robert Cummings(Posted 2005) [#11]
I see! Thank you for clarifying it. I think I'll shoot for 8 meg cards anyway - you never know how bad some 16 meg ones are, and the lighter it is, the smoother it's likely to run :)

I did some chopping last night. If you load in 640x480 or 800x600, thats 4 meg video memory used up right there. If I chop it into smaller chunks, it's around 1.9 megs for 800x600.

That will be the key, I think, to keeping things sane.