DaggerXL is officially dead

Off topic discussion. Talk about gaming and life in general. Be awesome to each other.
luciusDXL
Posts: 4
Joined: Tue May 05, 2020 7:48 am

Re: DaggerXL is officially dead

Post by luciusDXL »

MrFlibble wrote: Mon May 18, 2020 1:49 pm
luciusDXL wrote: Tue May 05, 2020 8:01 am Fast forward to today - things are going well and for a variety of reasons, I have a lot more time available again. So I have "returned" in a sense and have been working on a new project, though I have yet to publically announce it. However, I have decided to make the main GitHub repository for the project public so it will be discovered soon enough (yes its Dark Forces/Outlaws related as already guessed).
Hello luciusDXL, glad to hear you're well and continue your work. I'm a fan of Dark Forces and I hope all the cool stuff envisioned back in 2016 (like playing the DOS version with hi-res Mac interface and HUD) will come to be.

Just out of curiosity, if you don't mind: how far had you progressed with reverse-engineering Daggerfall for DaggerXL? Was it in any way ready to be made at least into a rough "source port-accurate" engine reconstruction before you had to pause development?

As for progress there, I had something called "Daggerfall DOS" which was based purely on the reverse-engineered code (and some Windows glue code to make it work on my OS) that was to be refactored into the main engine; basically so you get functionally equivalent code that is different enough to avoid potential legal issues - similar to what I am currently doing for the Force Engine.

"Daggerfall DOS" basically had working menus and some of the 3D rendering complete. Unfortunately, it was far from playable. I had high hopes that progress would accelerate as I learned more about the structure of the code and that I was reasonably close to getting gameplay in. But after stepping away for a while that momentum was lost and I was probably being overly optimistic in my timeframes anyway. Lessons learned for current and future projects, such as the Force Engine (which has been announced on Doomworld).

Each of these engines has there own quirks that add "spice" to the reverse-engineering process. For Daggerfall, it was self-modifying code to accelerate scanline drawing (i.e. drawing code modified in memory). For the Jedi Engine (Dark Forces), there are giant unrolled column loops where the jump is dynamically calculated based on the length of your column (imagine manually unrolling a 198 iteration loop).

User avatar
MrFlibble
Posts: 410
Joined: Sat Jan 27, 2018 10:43 am

Re: DaggerXL is officially dead

Post by MrFlibble »

Thanks for the detailed reply luciusDXL! Good luck with the Force Engine!

User avatar
Ferital
Posts: 282
Joined: Thu Apr 05, 2018 8:01 am

Re: DaggerXL is officially dead

Post by Ferital »

luciusDXL wrote: Mon May 18, 2020 4:46 pm Each of these engines has there own quirks that add "spice" to the reverse-engineering process. For Daggerfall, it was self-modifying code to accelerate scanline drawing (i.e. drawing code modified in memory).
Julian Jensen (LeFay) talked about this 2 years ago on Reddit: https://www.reddit.com/r/Daggerfall/com ... dium=web2x

Here is the interesting part:
Also, FPU, i.e. floating point, was not something that we could use. It was just too time-consuming. Everything was done with integers or fixed-point (integers). There was also a lot of self-modifying code, basically assembly functions that would write other assembly functions to do the actual rendering. It was spectacularly complicated to squeeze every last cycle out of the CPU. We had dual-pipelines, branch-prediction, and prefetch issues to worry about back then, we still didn't have hyperthreading, out-of-order execution, translation lookaside buffers, or any of that yet. The XEngine was made the way engines were made back then. No system code usages, straight to the metal, assembly code.
I'm quite impressed, Lucius, that you managed to get this working on Windows in some way :)

Post Reply