Thanks for the reply -
I *have* just joined and figured adding scroll/zoom to the baseview would be a simple gameplay feature to wet my feet with rather than diving into something big. I can't easily do that using a blit on an 8-bit surface.
The next option is CLUT-to-RGBA, draw the basescape, and then RGBA-to-CLUT to output to the existing SDL_Surface. I figured that sort of thing is worth posting up because somebody might have already thought about it, already done it, or have another future use for it.
This looks like the minimum effort to get extended bases and base scrolling working. FWIW I did consider generating smaller zoom level versions of every tile in the base view, and using those with the indexed SDL blitter. This is exactly how we would have done it in the 90s and still an option, but it's a crappy option considering the asset cost vs having the colour transform code written and available for other things.
I don't much fancy reimplementing *everything* into 32-bit, and while I jumped the gun saying there isn't a good reason not to [especially so soon after joining], it would solve a lot of problems and provide a lot of flexibility. The point of posting it here was to get feedback and awareness. I'd rather have replies than silence. Bottom line, I can't think of a technical reason not to change. You could start with pixel-for-pixel the same game, but would have options for improving the Base, Geo or Battle screens.
The GL_EXT_paletted_texture isn't worth it, and it solves a different problem really. And by the look of it isn't widely supported anyway. The process I described needs an RGB surface of any precision, and an 8-bit unsigned buffer for output - I'm literally performing the CLUT/RGBA conversions in GPU hardware using the same technique you'd do on the CPU ... just a lot faster.
I'd need programmable shaders, so I guess thats hardware from 2003 onwards. While this doesn't add a significant increase to the minimum spec, it does raise the bar into hardware rendering and will count out some devices.
Mobiles before OpenGL ES1.2 probably won't work, but that's all the way back to gingerbread on android support earlier than that was sketchy but the pre-gingerbread market penetration is tiny. If iOS is targeted it'd be fine on a 3G or higher. PCs from the Geforce FX/5 series onwards.
The system spec argument is a strong reason not to support new hardware, but it becomes a decision on *where* to draw the line since there is a line somewhere. It's also the sort of thing I'd be happier to discuss after the fact - get the feature working and then evaluate what the minimum spec is and if it's worth the tradeoff.
If hardware support was an issue for machines from the late-90's era, we could add a forward renderer using the OpenGL fixed function pipeline and/or software implementation. It's more work, and probably means cooking the assets into a file format for that platform... I'd rather just stick a minimum spec on the modpack but there are compromises we could make I'm sure. This would get us back to early Geforce 3, maybe earlier - TNTs even.
And even then, you could write a separate software renderer using shrunk assets for the bottom end platform(s), if it really came to the crunch and extended bases was deemed important enough to need to work on every platform.
I'm a gameplay guy, but I've had a little render/GPU experience and this looks easy enough and is on the critical path for the gameplay feature I'm focusing on (extending the baseview/basescape) that it was worth approaching as one feature.
My last concern is deviation from the source material. I enjoyed UFO a lot and too much change - even a different look and feel would probably put me off. It'd have to be a definite upgrade/improvement to really justify changing what is there in the core game. I think Mods and TCs might get more use out of extended bases.
Cheers, it's a lot to think about. I'll be able to hit the keyboard over the weekend with any luck.