We really do need a new, native port of Duke3D that can run in low resolutions. I wonder if, and hope there's a way to use the MMU to redraw the areas of the screen that have changed in the C2P, the way Shapeshifter does it. Playing games in Shapeshifter with the MuEVD driver is so fast, even in 640x400/480 I get full speed from games like Indiana Jones & The Fate of Atlantis, with speach and full 256 colours. I'll bet that Atari source code has some good optimisations in it, but the C2P routine would totally need to be rewritten for the Amiga I guess, which is why I hope a MMU will help since the game will only run on faster machines which generally have MMUs anyway.
Using the MMU (040/060) during C2P is not a problem but it's not actually meant to be a very good way of doing it from what I've read in developer forums. I'm surprised that you get such good performance from using Shapeshifter as it is emulating a Mac and running in 640x480 8 bit using AGA. In my C2P tests AGA runs like a dead-dog in 640x480 8 bit so I'm not sure how Shapeshifter does it, maybe using the MMU to redraw only part of the screen is the answer for doing fast 640x480. I'll have to do some tests and see what kind of performance I can get out of C2P in AGA using the MMU to do partial updates.
@Cammy
I think the problem with both Wolf3D and Duke Nukem was not c2p at all, it was slower than Mac version even if you used RTG.
The c2p+MMU*code can be taken from ADoom although IIRC that MMU code only worked with 040/060 (I may be wrong). I think Duke Nukem required FPU but I can't remember, perhaps it's possible to use integers in some parts to speed it up.
A proper AGA port would use demoscene techniques like killing the OS, transfering data to chipram between copper interruption of screen drawn and vblank and it would perform number crunching while c2p is being done :-)
Hiya,
It looks like Duke Nukem does use the FPU which would explain why it it would be slow slow on anything but an 060. Swapping to fixed-point maths would obviously help but I guess it would still be way too much for an 030 (the original requirements are for a 486DX2/66!).
Yes the Doom MMU routines are for 040/060 only.
I like developing WB friendly games, bypassing the OS is not the way it's done these days
