Heretic II: <released>, 68k still todo Sin: <in works> Quake 2: Finished the last bug today, but some works in installers todo (will come with installer from PC CD, Steam Data and Gog Data each) Secret Projects: Back in business (commercial projects). Supposed to be for PPC and 68k. A1222 included. Vampire and PiStorm included. Classic Amigas - maybe.
I am not against the A1222. Just in case of H2/Sin I do not think it is viable (see below).
As I said I want to support the A1222 in future projects.
As to H2/Sin:
The functions used in H2 do loads and loads of stuff with float-parameter passing. You basically would need to take the game completely apart.
This is also the reason why all idtech games run slow on A1222. They all do it that way.
And it is not only about the games itselves. The games extensively use GL functions using floats. By parameter passing. Meaning most likely you would need to port gl4es over to SPE first, before you can even start doing the game. Is Warp3DNova BTW SPE-capable ? I have no idea (But I have to admit I never looked into the internals of Nova, below gl4es level).
Imagine I would do all that work and then find it still slow, due to float parameter passing to gl4es or inside it. Huge risk that all the work is in vain.
There ARE 3D Games which can run on A1222.
First of all non-3D-Games.
Second 3D Games doing int math (these are usually very old 3D Games, 1995 or earlier).
Third would be I guess games which use Shading instead of classical GL (then all the float-calculation is inside the shaders). The bad news is if you go for games using shaders you close the door for 68k support which limits your sales. But on A1222 this might work (with some adaption).
One example successfully (AFAIK) adapted is Wipeout. Does all the polygon maths in integer, and the float stuff for the renderer is (I only had a quick look at the PC-source-code) appearently in one file. One file. Where Heretic 2 has a renderer of around 300 kb, with float passing all over the place. And it is not limited to the renderer...
It makes more sense to port another game than doing a A1222 adaption of an idtech game. The effort of both options is probably comparable.
It is of course something not only the A1222. The Vampire also is better with integer math than with float - though appearently on that one the message arrived that float is important and they do some work in the area. QEmu - also runs best with Integer Math. But in modern games it is INTEGER MATH which is irrelevant. All which matters is float maths (and that needs float parameter passing of course).
Sadly with latest SDK + GCC 6 (compiling with right switches for A1222 PowerPC "P1022" cpu) float/double variables are completely wrong. Once it will be fixed (if ever), and other libs involved will be ported to new cpu P1022, you could just recompile your projects and build new binary.
If someone knows other solution to this issue please let me know.
@TheMagicSN Even if there is no OS4 compiler (yet?) with P1022 CPU support automatically using the SPE as FPU replacement any software built with -msoft-float should work fine on the A1222+, but of course that would require rebuilding all libraries used by the game, incl. GL4ES, MiniGL, Warp3D(Nova), etc., and even the C library, with -msoft-float as well...
Agree but with GCC -msoft-float switch you don't use SPE unit but INTEGER unit with a huge slowdown. You kn ow for a game like H2 or Sin heavily based on floats it's not a good solution.
..Any chance to get a working SDK/GCC compiler for A1222 released in next days?
@flash Of course integer math is much slower than FPU and SPE, but since the AmigaOS 4.1 port of Heretic 2 seems to be playable even on the slowest AmigaOne according to the benchmarks, a Micro-A1 with onboard Radeon 7000, an integer version should work without any problems on the A1222+, probably even much faster than the FPU version on the Micro-A1.
I was up to now under the impression (and directly from someone who definitely knows and is an expert on SPE) that you have to adapt every single float-passing with special code.
If it is enough to do -msoft-float to do it with integer - well, might be possible to do, after all no float happening then.
From 68k version I know though this gives around 3-4x slowdown (my first version of H2 on 68k was softfloat due to compiler issues which then could be fixed by a later version of the compiler). Might still be enough to be playable (100 fps divided by 4 still is 25 fps). Note though these test numbers on 68k with soft-float were only the software renderer. No idea how the GL renderer will behave, it might be more "vulnerable" to this.
Also I am definitely not working on modifying clib. But if someone else can provide me with a compiler (preferred one which works under the cygwin environment) I could give it a try. I could actually handle a soft-float version of gl4es myselves, I am compiling my own gl4es anyways. Other libs I would need would be SDL (but I only use it for sound, for a prove-of-concept I could go without it), libstdc++ and libdl (but that one won't use floats, so I guess the normal one could be used with no problems).
As to "Warp3DNova would need conversion", is that so ? Would Shared Libraries also need to be recompiled for this approach ? (But of course GL4ES *will* call ogles2.library and through it Warp3DNova and probably do float parameter passing inside).
As I said, assuming the Warp3DNova stuff does not defeat the idea, what I would need would be a compiler fitting for it with libstdc++ and libc having been adapted accordingly (assuming the claim that you just have to modify the makefile of gl4es to softfloat and same on the game would be really enough).
Myselves I am extremely sceptic here (especially as I assume GL renderer will take a worse performance hit going to integer than software renderer will, and that one already got around 3-4x performance hit) but willing to try. But definitely would not be involved in creating a changed clib and stuff. That someone else would need to provide. I assume existing development tools for the platforms I support.
@TheMagicSN An integer version (-msoft-float) can only help on the A1222 if your games don't work for some reason with the LTE FPU emulation but only with the much slower, trap based FPU emulation.
Trying to find out why it doesn't work with LTE and fixing the problems would make more sense, and is probably less work that rebuilding the game as well all libraries used by it with -msoft-float.
Of course a SPE version for the A1222 would be even better, but I'm not sure that additional work is really required. A more than 25 years old game like H2 should run without any problems with the LTE FPU emulation on an A1222 with a Radeon HD or RX gfx card. Unless you want to play it in FHD or 4k resolutions maybe.
EDIT: my tester did not mention anything on blacklisting H2 for LTE so i assume it was with lte, they got 1 fps with software renderer, 3d hw did not render characters in menu (this only happens on A1222, probably some issue with float maths?) and on starting a level “blind” game aborted with reporting bad datafiles (But datafiles were not bad in software renderer it started despite slow). Note this only worked so far with disabled sound i did not investigate the a1222 Sound issue as the game was not playable anyways. I asked now for a retest of released version and to ensure Lte was used but i suspect same results will come.
What i can tell you is the game runs extremely slow on A1222 (unplayable slow). And it is not only H2 but any kind of Q2/Q3 engine game. Q2, Q3 and the two Jedi games have been exactly the same issue (some also have an issue with the sound and crash but if you start them with sound disabled this unplayable slowness happens).
I am told this is due to using float parameter passing which due to the differences in ABI (due to SPE) calls emulation.
And despite being 20 years old all Q2/Q3 engine games use massive amount of float maths ams especially float parameter passing (also in dynamic libraries, but statically linked games based on Q2/Q3 engine seem to have the same problem).
Games from around 2000+ already use a lot of float maths better suited for A1222 would be games from around 1995 or older which usually use integer maths.
@TheMagicSN I'm surprised it's that slow since with the WOS versions on AmigaOS 4.x there is a lot of emulation involved as well, but the WOS H2, and several other WOS games, still was very playable on an AmigaOne XE, and that was with much slower gfx cards (Voodoo3, Radeon 7000, etc.) than the Radeon HD/RX ones used now. - powerpc.library has to emulate all unaligned float/double memory accesses with an alignment exception handler (very slow) using integer instructions. - For all function calls from WOS software to AmigaOS functions the arguments have to be changed from the PowerOpen API used by WOS to the SysV one used by AmigaOS 4.x, and the other way round. - Special bug workarounds included in powerpc.library for individual games can make some parts much slower as well. - The mix of (partially emulated) WOS/PowerOpen PPC and emulated m68k code used in WOS software can cause additional problems and slowdowns on AmigaOS 4.x.
No idea on the reasons. But i also asked a betatester to repeat the test with the final version on A1222 which will be done somewhen during easter days probably.
But it is not isolated to H2. All games using Q2/Q3 engine have on A1222 but his MASSIVE unplayable slowdown (Several also crash on soundcode but if sound is disabled they run with massive slowdown). And those slowdowns are definitely much worse than Warpos context switches appearently.
I cannot test myselves as i do not have a A1222 but i have several people accessible who can try it for me.
Next one finished - Quake 2. Release is imminent. Till some tiny stuff to do.
There will be additionally to the new Q2 port 7 "Mod Packs" which will be released on Aminet in game/actio. Also there will be a port of the Mission CD "Zaero" which will be released on os4depot. The Mission CDs "The Reckoning" and "Ground Zero" will be already included with the port (assuming you install your datafiles from either Steam or Gog Classic version, the installers provided with the new port can install from either Steam Version, Gog version or PC CD ROM. In case you have neither but only an existing installation you can "fake" a gog install version by this directory structure:
Note when buying the datafiles from GOG it definitely should be GOG Classic.
Recommended version is Steam as it has additionally the introfiles in high resolution while GOG Classic only has them in cin format like the PC CD version (Steam version has them in both formats). Also Steam version has some more ogv music files.
Ok, the new Quake 2 Version is out. ->Alinea Shop for Download
Mods are on Aminet (exact location linked on the Page at Alinea). Also there is a third (pretty unknown) Mission CD ported, named Zaero (first two mission CDs will be already installed if you install from Steam or Gog datafiles - PC CD as source of the datafiles is also supported, but then you need to use separate installers for the Mission CDs which are also provided). Zaero Port is found on os4depot.