Translate
EnglishFrenchGermanItalianPortugueseRussianSpanish

The XL Engine is and will remain free, donations are purely optional but greatly appreciated.

Recent Comments

I’ve said in previous posts that I planned on completing the gameplay for the Beta – making DaggerXL a full DosBox replacement for Daggerfall. I also said that with the most authentic settings – extended features disabled – that DaggerXL would behave almost identically to Daggerfall, with the exception of fixing game breaking bugs like crashes and allowing the game to run at a fluid framerate without the gameplay elements messing up (no fighting with cycles or dealing with low framerate so NPCs can walk). What I haven’t said is how I am accomplishing these goals.

In the past I’ve done some reverse engineering of certain contained elements (like reading some table data from the executable) and spent a fair amount of time puzzling through file formats, testing stats and their reactions and so forth. But I’ve been working on something else without telling a lot of people that will help me make DaggerXL as accurate an emulation of the original as I want it to be, literally. To put it simply I’ve been decoding the original executable and reconstructing it in my own C code – completely (not just bits and pieces). Then I take that C code and modify or write the systems properly in DaggerXL, fixing game breaking bugs and refactoring to fit the rest of the game/engine. What this allows me to do is make DaggerXL just as faithful and authentic as a pure source port would be even without having access to the original source code.

During this process, I’ve been putting together a temporary executable (“DaggerfallDOS”) which I can run and verify that I’ve interpreted the code correctly. This uses just the original Daggerfall code – decompiled and rewritten in C – with the exception of OS calls and Windows boilerplate. I don’t plan on releasing this but all the code that goes into this is being used to make DaggerXL as authentic as a source port.

If you want an example, look at this page: Decompile-Example. It shows just one function, much much more of this process has been completed. And this code (and the functions that it needs that aren’t shown) were used to render this:

DaggerfallDOS

 

 

 

 

 

 

 

 

 

 

 

 

 

This is being rendered directly from the decompiled Daggerfall code, in addition the mouse and keyboard input works, you can select the appropriate option from the keyboard shortcuts or mouse. I’m currently working through from beginning to end, making sure that each part works properly by using the new executable. This means that with the Beta, DaggerXL will be 100% vanilla Daggerfall gameplay complete – and will be nearly 100% authentic with the appropriate settings. Of course the extended features I’ve already shown will still be available – higher resolutions, color depth, texture filtering, higher quality lighting, bloom, large scale terrain rendering, improved terrain heights and visuals and much more. :D This process is going extremely well and should be complete in a few weeks, after which I can release the Beta – after a short period of closed testing to get rid of any remaining unknown issues.

So what does this mean for the other games? Its quite simple – every supported game will be as good as a source port when they reach Beta, DarkXL and BloodXL included.

45 Responses to “DaggerXL Gameplay”

  • Dagganticipation:

    All I can say is :O

  • Michel Renier:

    Just the same as the previous one – :0

    Lucius, you are great

  • munitio:

    Wow… digging in pure assembler code…
    What tools are you using for dos executables ? IDA??

    • luciusDXL:

      I actually didn’t have much luck using IDA on Daggerfall’s executable unfortunately. But even if it did it would still not be my preferred method anyway. I actually use a debugger to step through the game flow and extract functions and data. This way I can not only get the assembly code but also see how it is used, which helps me figure out things in a way that static analysis couldn’t.

      • munitio:

        Interesting! What ist the name of the debugger? Turbo debug? Ist there a chance to port the xlengine to android? It would be amazing ! Thumbs up for your dedicated work! And i like these technical blog posts!

      • Can you explain a bit more about how you debug the exe? I’m very interested because I eventually want to re-create Master of Orion, but as a mod, for my game, Beyond Beyaan. So I’d need to see how it generates the galaxy, calculates damage, and all other things. Decompiling it will allow me to accurately create an updated version of MoO.

        Do you just use visual studio to attach to the exe, then step through the disassembly?

  • John:

    Any chance you could post a video of daggerfall with all the bells and whistles you’ve added? Can it play at 1920×1200?

    • luciusDXL:

      I will but not until later. The next video will show the pure mode (running at a higher resolution though) with all the gameplay complete. After that though, for the Beta release, I’ll release a trailer of sorts – showing all the enhanced features as well as the pure mode and gameplay.

      As for resolution, it can run in whatever resolution your video card supports – including 1920×1200 (and 320×200 using a hardware scaler too).

  • Wow. This must require a mind-boggling amount of guess work and jumping back and forth between hundreds if not thousands of function address pointers. That’s an amazing piece of reverse engineering, and re-engineering :salute:

  • Kyosho:

    So excited.

  • Anon:

    I am still impressed at how faithful and rock-solid this project is. Tamrielites will be forever in your debt!

  • Vengeance:

    Excited can’t even fathom, simply amazing!!!

  • Blue Footed Booby:

    If I tried to do this (and had the skills to do so*) I’d inevitably end up accidentally re-implementing known bugs. You kind of scare me, dude. Are you a wizard?

    * I’m a C# dev, just for the record, and not a great one.

  • anonymous:

    Impressive is a too mild word to describe what you did!
    And to think that you will repeat the feat with Dark Forces and Blood is just mind blowing.

    Anyone want to take bets on whether Bethesda site will be able to handle all the new downloads of Daggerfall archive once the beta is out? :)

  • LordHaHa:

    I know in the forums that you said you would be posting a video showing DaggerXL gameplay, but would it be possible at some point to post a video or blog entry documenting any (if there where any) unusual discoveries that were made investigating the code of Daggerfall (or otherwise significant but here-to-fore unknown/obscure bugs)? If not in detail, then a general overview if any can be provided?

    • luciusDXL:

      That sounds reasonable. I don’t know when I would post something like that, maybe right after the Beta release? or while I’m getting things ready during closed testing. But yeah, I’ll talk about some unusual discoveries and maybe an overview of how Daggerfall is constructed at some point. There are certainly plenty of interesting things in the code (even some, though simple, self-modifying code). Good idea, thanks. :)

  • Adda:

    Lucius you don’t have to play a wizard you ARE one already.
    I’m very excited, been playing quite a bit of Daggerfall lately, to find out what custom class I’ll use for DXL.
    I have been hoping spell absorption will work the same in DXL as in vanilla, but it seems it will.

  • Damanslaya:

    Awesome work and I have a jar of cookies with your name on them! :D

  • Dyrver Eriksson:

    All this sounds fantastic, no beyond fantastic. The prospect of simply playing Daggerfall from start to finish after this many years where the dos version would just not allow me, due to either random crashes, save corruptions or out right bugs. And that it’s coming to so many platforms is simply outrageos! If this also means the engine can be refit in the future to play some Terminator – Future Shock/Skynet (not sure about the image format for the HD weapons tho’), even crazier! :D

  • Krizzen:

    That’s supremely impressive!

  • Simon Buchan:

    Ah yes. I’ve done a little hand-decompilation for interop-debugging (nothing like this scale), so I’ve a good idea just how much of a time sink this is :). I’m not sure what problem you had with IDA – the free 5.0 version loaded up the Steam release fine for me? (Though I haven’t figured out how to fool it into figuring out method types like for PE32 code – probably just some fooling with options)

    • luciusDXL:

      Oh it works fine and I can use it on other programs. But it doesn’t work very well with Daggerfall itself – at least not without a lot more effort put into manual analysis. But even if it worked perfectly I find the debugging process better anyway, at least for me.

      • Jorick:

        IDA is not really designed for MS-DOS executables.

        One of the problems that might arise is the fact that most MS-DOS executables are compressed and tend to uncompress themselves while they are being executed (remember that we are talking about a day and age where disk space was really limited). Thanks to that little space saving gimmick, IDA does a poor job analysing the code and most of the analysis must be done manually. Besides, as Lucius said, it is static.

        I tend to user Turbo Debugger, which came bundled with Turbo ASM, and DosBOX for debugging old MS-DOS executables, as it works almost mint. And yeah, you need a lot of documentation and it is time consuming (I still remember that I spent a day trying to understand how EGA graphics worked…).

        • luciusDXL:

          In my case it helps that I spent a lot of time programming in DOS with a fair amount of assembly and such. So I understand how things like interrupts or “mode 13h”, etc. work already. :)

        • Nemo:

          I thnik this is not that case. Almost all dos games from mid 90 use Dos4GW extender for protect mode. And all exe files was compiled by Watcom C/C++ compiler which use LE format for binary exec files. So they are not compressed or whatever but if you use classic Turbo Debbuger you probably ended debugging real time mode loader (Pharlap,dos4gw etc.) not game it self. It also exist some other extenders, replacement for dos4gw, which has some compresseion abilities but has some other drawback. For LE exist Pmode/w, which was nice, small and fast (mostly used in demoscene) but as i can remember correctly it doesn’t support every function as dos4gw, and DOS32A extender. I looked in my version of some fixed fall.exe and that version used DOS32A so this is probably full featured replacement for dos4gw. LuciusDXL, did you tested Watcom Debbuger/Or now is OpenWatcom ? Is not that fancy as VS but i think still better than DosBox Debuuger (which i din’t tested).

  • Robin W:

    This is incredible. I stopped following this project a while ago in the belief that you (Lucius) wouldn’t be able to find the spare time to complete it. How wrong I was! I checked it again today on a whim and it looks like you’re well on your way to a playable and feature-heavy beta release. Amazing work. I am an avid elder scrolls gamer, but have never played Daggerfall (being, as it is, a little decrepit). Your project gives me a reason to play it and should give the game a new lease of life. I look forward to the release of the beta.

  • Siph:

    Holy crap!

  • Robert:

    Will DaggerXL have support for The Elder Scrolls: Arena? The games practically use the same engine, but daggerfall uses full non linear 3D.

    • luciusDXL:

      The engines are actually quite different. Arena uses a grid-based, 2.5D engine while Daggerfall uses a full 3D engine. There are other, non-graphical, differences as well that complicate things. XL Engine support for Arena may come in the future but not as part of this Beta release.

  • Jake Fleming:

    I just wanted to thank you for all of the hard work you have put into this project, and I am extremely looking forward to playing DaggerXL!!

  • TeaMan:

    This is some great work! I’m happy to hear things are progressing well, and I can’t wait to see what the Beta looks like. Reading about the process you’re going through to make this engine has made me want to get back into programming.

  • Al-Khwarizmi:

    Man, this is impressive beyond words. You’re single-handedly rebuilding from scratch code that probably took a team of people several years to piece together, and doing so from a decompiled version without documentation. What you are doing with this project deserves no other word but EPIC.

  • Jito463:

    How have I not heard about this? Daggerfall was my introduction to The Elder Scrolls, and still holds a special place in my memories. I remember being amazed that I could actually WALK all the way from one town to another. I’ll definitely be keeping an eye on this project.

    One bit of advice, if I may, you may want to consider updating your ModDB page. The last update was 2011, and I was worried that the project was no longer in development. It’s only because I clicked the download link, that I found this site.

  • Ike:

    Ridiculously amazing. I hope you get swarms of press when this finally releases and all of your dreams come true. In the meantime, I’ll be donating. You’re a champion.

  • ryballs:

    Wow this is the most advanced remake I have ever seen..

  • Prime:

    I’m just blown away by what you’ve already managed with Dark Forces, one of my all-time favourite games, but to promise Daggerfall as well, a game I’ve never managed to play beyond a few tantalising minutes…I can’t WAIT for the Beta!

  • Damanslaya:

    Not on the topic, but is it me or more people looking into the engine?

  • Atulipe:

    OMG, we waiting so long ! DaggerfallXL fully playable in next weeks, i played with the alpha release it’s so beautiful but dialogues and quests are not in-game, so i wait, wait and wait fot the beta release. I hope we can dl it soon. If it’s good, so i’ll donate you many euros by paypal lol, because i wait since a long time for that. excuse me for my bad english because i’m french.

    Good work !

  • Valek:

    Holy crap, Lucius! I said this a while back, but I’m amazed you can do this stuff! It would be easier to make a new game yourself, than to dig through all this stuff and figure it out! Very impressive!

    I’m really looking forward to playing! Thanks a lot for all the hard work you’ve put into this!

  • Underking:

    My birthday is by the end of April. My 29 years old body is ready for DaggerXL!

  • Sinael:

    Ive said it a long time ago, but now ill say it again. Lucius, you are a GOD of source porters. Daggerfall fans (me included) should make you a monument or something :D.

  • Sonic:

    “To put it simply I’ve been decoding the original executable and reconstructing it in my own C code – completely (not just bits and pieces).”

    Genius! You remind me of the guy who converted the entire code of the original Atari ST Dungeon Master into C. I know only basics of C, but it must be a huge undertaking. I can’t wait for the beta.

Leave a Reply

The XL Engine is and will remain free, donations are purely optional but greatly appreciated.