Duke Nukem?
Rick Murray (539) 13806 posts |
Has anybody played EDuke (Duke Nukem), from https://riscosports.co.uk/games.html ? I have tried with the shareware GRP file (11MB) and the full GRP file (42MB, taken from the Windows release of EDuke32), with and without alignment exceptions, and also bumping up the memory slot from 23456K to 123456K. It seems to hang the moment it loads. No disc activity, nothing. I can Alt-Break out of it, there’s nothing written to the stderr or stdout files. Going the command line route with The system in use is a Pi 3B+ connected (via adaptor) to a 1280×1024 LCD sceen. Oh, and obviously I left it for “a while” (between 30 and 60 seconds) each time in case it was busy getting internal stuff in order. But, you know, oughta have seen something by then…? |
Paul Sprangers (346) 523 posts |
Same here, on a 4té2. Running it under Aemulor reveals an error: Internal error: undefined instruction at &0168898C (Error number &80000000). No idea what it means, but I wasn’t seriously wanting to play it in the first place. |
David Pitt (9872) 362 posts |
I did not get very far either but as far as I can see the riscosports download may need to be de-SWP’d and a DUKE.RTS file is also required. |
Rick Murray (539) 13806 posts |
Yes, I saw Paul’s post (odd address, way outside the executable!), and it rang a bell, and… yup. There are some SWPs in there. Slightly more success after patching them out, and, yup, needed to fetch that .rts file too. EDuke32 2.0.0devel r2647 Compiled May 8 2012 15:16:31 Using /<EDuke32$Dir>/ for game data Using /SDFS::RISCOSPi.$/bloodyeduke/!EDuke32/ for game data Initializing SDL system interface (compiled against SDL version 1.2.15, found version 1.2.15) Using "riscos" video driver Searching for game data... Using "duke3d.grp" as main game data file. Compiling: GAME.CON (99639 bytes) Including: DEFS.CON (28893 bytes) Including: USER.CON (36960 bytes) GAME.CON: In state `blimphitstate': GAME.CON:157: warning: expected action, found define. GAME.CON: In actor `ORGANTIC': GAME.CON:1923: warning: found `else' with no `if'. GAME.CON: In state `pigshootenemystate': GAME.CON:2817: warning: found `else' with no `if'. Found 3 warning(s), 0 error(s). Resizing code buffer to 11991*4 bytes Script compiled in 50ms, 11983*4b, version 1.3D 1548/11264 labels, 322/2048 variables 122 quotes, 119 actors *** You have run Duke Nukem 3D 0 times. *** Initialized 24.0M cache Using RTS file "DUKE.RTS". Initializing OSD... Just going to guess that it’s looking for some particular display resolution at this point 1 and instead of reporting on what it couldn’t find, it just bombs out. Then, it hung up rather than report an unknown instruction on the SWPs, so the error reporting in there is perhaps not all it ought to be? It is licenced GPL v2. Does anybody know where the source can be found? I don’t see it on riscos.info. I doubt I’ll be able to fix it as I don’t have GCC or any experience with it, but if it’s obviously looking for, say, 720×576 2 then I’ll know how to bash my ModeFile to fit (plus tracing through the init if anything else makes it explode). 1 I have 640×480, 720×480, 720×576, 800×600, 1024×600, 1024×768, 1280×800, 1280×1024 (default), 1360×768, 1440×900, 1600×900, 1600×1200, 1920×1080 which ought to cover whatever something written for contemporary machines should be looking for… I mean, it’s not trying to start up in 320×256 or something is it?!? 2 SD PAL, I’m transcoding (on my phone) something recorded off Talking Pictures TV as I write this, which is why that number popped into my mind. |
Rick Murray (539) 13806 posts |
I added 320×200 1 to the ModeFile and… no luck. It’s not that. Pinboard2, on the other hand, really messed up redrawing the iconbar text at that resolution. I won’t bother mentioning it as a bug as there’s not a lot of point in using a mode where the iconbar is a third of the screen height! 1 This seems to be the initial default DOS resolution of the original Duke Nukem. |
Rick Murray (539) 13806 posts |
I did discover that switching from 16M to 256 colours crashes it – lots of fiddling and resets later, it appears to be an interaction between iconbar transparency and image caching. I’ve reported it. |
David Pitt (9872) 362 posts |
Got a bit further with RPCemu EDuke32 2.0.0devel r2647 Compiled May 8 2012 15:16:31 Using /<EDuke32$Dir>/ for game data Using /HostFS::HostFS.$/ for game data Using /HostFS::HostFS.$/SymLinks/uHD4/Boot/Resources/ToBeBoots/!UnixHome/home/.eduke32/ for game data Initializing SDL system interface (compiled against SDL version 1.2.15, found version 1.2.15) Using "riscos" video driver Searching for game data... Using "duke3d.grp" as main game data file. Compiling: GAME.CON (151190 bytes) Including: DEFS.CON (35992 bytes) Including: USER.CON (45482 bytes) GAME.CON: In actor `ORGANTIC': GAME.CON:3967: warning: found `else' with no `if'. GAME.CON: In state `pigshootenemystate': GAME.CON:5890: warning: found `else' with no `if'. Found 2 warning(s), 0 error(s). Resizing code buffer to 16189*4 bytes Script compiled in 190ms, 16181*4b, version 1.4+ 1918/11264 labels, 322/2048 variables 125 quotes, 207 actors Initialized 24.0M cache Using RTS file "DUKE.RTS". Initializing OSD... 0 joystick(s) found Setting video mode 1024x768 (8-bpp windowed) Initializing music... Error: couldn't open any of the following files: /etc/timidity/freepats.cfg /etc/timidity/timidity.cfg /etc/timidity.cfg Error: couldn't open any of the following files: /etc/timidity/freepats.cfg /etc/timidity/timidity.cfg /etc/timidity.cfg S_MusicStartup(): failed initializing Initializing sound... I now have a 1024×768 black window within a 1920×1080 desktop titled Duke Nukem 3D: Atomic Edition – EDuke32, and silence. |
Andrew Rawnsley (492) 1443 posts |
My recollection is that I did get this to work back in the Beagleboard era (ie. circa 2011). Haven’t tried since. Maybe try on a Pi 1? And I may be confusing it with another port someone did, that didn’t ever quite get finished. |
David Pitt (9872) 362 posts |
Indeed, it does run on the RPi1 in ARMv5 and ARMv7 fast modes. It also runs on the RPi4 in ARMv7 fast mode! I had, in an excess of architectural correctness, paranoia that is, evicted the CPUSetup configuration plugin from my machines to ensure ARMv7 strictness was always applied. Flexibility has now been restored. Thanks. |
Rick Murray (539) 13806 posts |
That’s interesting. I disabled alignment faults on my 3B+, but it still wouldn’t work. But it works on the Pi1 and Pi4…? 🤷🏻♀️ |
Andrew Rawnsley (492) 1443 posts |
The wording in that CPUsetup probably has a lot to answer for! |
Rick Murray (539) 13806 posts |
Result! Turning off exceptions and switching to that mode before starting EDuke and… It’s a little dark, but I think it’s supposed to be like that “for atmosphere”. Plays with sounds and all. I’ve just wasted an hour with the appropriate cheats (DNKROZ and DNSTUFF) wasting the baddies and admiring the view… Thanks for the help in getting this running. |