I can't use this engine. So... the tool I'm using is the "Map Editor" that comes with the engine that allows you to convert meshes into byte array structures and images into proper TGA files. Which in itself is a little bit out of place, normally you want your meshes compressed on a separated file and load them accordingly later but whatever.

It says it supports wavefront and collada models but I can tell you collada models with textures are a no-no. Only wavefront sort of works with textures. But there is a catch and it's that... it convertes the textures also into smaller byte arrays and etches them into your byte array mesh. Which as you can imagine consumes A LOT of memory, so... when trying to load a 1.5MB mesh into a system with only 1MB of RAM, well... you can do the math.
Since I was using 128x128 sprites I thought... maybe that was a little bit too much? The models I saw in Sonic R were using 32x32 sprites so, I thought having smaller sprites would work better.

Not the case. If I use 32x32 sprites, it simply says "out of memory". And I'm talking about the tool, not the game on the emulator. It just refuses to do it.

Not just that but the engine divides them into weird odd, non-power of two sizes like 16x127. I really don't understand what is it doing.
It's no good that this engine saw it's last update like... 4 years ago.
I guess I'll have to use something else. It's a shame because this engine was easy to set up and everything. But it's only good at 2D.
Follow

@enigmatico Because the Saturn is only good at 2D. 3D was just a bonus feature.

· · Web · 2 · 0 · 0
@xianc78 @enigmatico dont the gpus of the era have fixed sizes for the sprites too
@icedquinn @xianc78 afaik all GPUs use square textures with power of two sizes, but most modern game engines and even modern GPUs handle NPOT textures using a "fake" square, nearest power of 2 texture by placing it on a bigger texture or scaling it if necessary. This of course comes with a performance and memory usage penalty.

Not the case for old consoles or GPUs.
@enigmatico @xianc78 the PC ones were powers of two but they had max sizes. for iphones that was around 1024x1024.

i was told the NES had fixed size sprites and you just called it to draw that sprite at some <x,y> and it could only draw a precious few unless you resorted to flickering between frames.

i dunno how SEGA managed
@enigmatico @xianc78 there really were not "textures" per say if we're talking about the 2D consoles. everything was bitblt and they kinda had bitblt accelerators but the triangle accelerator would have still been locked up in SGI workstations
@enigmatico @xianc78 a speccy *only* had 8x8 character memory because that's what could render words. so all the graphics were either loaded in to character memory and called to draw by index or had to be done much more slowly with pokes and manual line drawing.

i think up through the gameboy advance they were still reliant on bitblt with CPU transforms. it really wasn't until the N64 that we had the fixed function GPUs that even had texture memory that you could sample on to triangles :blobcatwaitwhat2:

anyway i'm sure console enthusiasts would know more i never had a SEGA :blobcatsmilehappy:
@icedquinn @xianc78 Those 8-16 bit consoles are different. Sprites and textures are also different concepts. 2D sprites use pixels. Textures use texels. 2D sprites normally use indexed color palettes (could also be 24-bit color bitmaps, it depends). 3D textures might use 24-32 bit color (depending on wether it's RGB or RGBA or the likes of, the order might change). Sprites might be rendered in 3D space, but that's a "trick" pulled out by the console. i.e: willboards do this.

Normally sprites and 3D objects are rendered in separated layers. Specially in the Saturn, since both 2D and 3D functionalities are separated. However, at least on the Saturn, textures are stored at the same place the sprites are, and handled by the VDP.

Sprites are also handled differently from textures since they are not meant to be drawn in 3D space. You can notice in games like Tomb Raider how sprites rendered in 3D space always 'look' at the camera, and all the hardware does is some trickery with the scaling to make it look like it's further or closer from the camera (plus the Z-buffer to determine the order of the elements being drawn).

Bit blitting is a thing used when drawing sprites with certain effects such as transparency or when copying portions of another bitmap into another. Normally you would use a mask (often called "transparent color") for the transparent parts and then blit the image using an OR for the mask and an AND for the sprite, which is faster than just copying bytes. Most game consoles handled this for you through hardware.
@xianc78 If you follow the thread you'll see what I'm talking about.

The Saturn was capable of this much. It's the game engine being shit at 3D.
Sign in to participate in the conversation
Game Liberty Mastodon

Mainly gaming/nerd instance for people who value free speech. Everyone is welcome.