Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Graf Zahl

Members
  • Content count

    11999
  • Joined

  • Last visited

Everything posted by Graf Zahl

  1. Graf Zahl

    MBF21 Specification v1.2 Release

    Got it. Although it was a lot of work to get this supported in GZDoom I think it's complete now. Just have fun looking at that mass of code once I commit the last part later today - the flag stuff is more than 300 lines of code, not to mention the changes elsewhere... :D
  2. Graf Zahl

    MBF21 Specification v1.2 Release

    Ah, ok, I missed the part where the flags are being translated. It was a bit off the path where I was looking. This already clears things up a lot. Seeing how your checker works, I don't think you can simply go 32 bit, as you want to check the higher bits as well. That just leaves some of the flags in the first word No idea how you want to handle it. Currently the args array is 'long', which means the size is not consistently defined - it's 32 bit on Windows but 64 bit on Linux. If it's supposed to be 64 bit it needs to be 'long long'. Considering how your code performs the checks you definitely need 64 bit words here to do it right. But the flag functions truncate the value to 32 bit, losing all the upper flags, even if the args were 64 bit so this definitely needs to be fixed. Plus handling MF_NOBLOCKMAP and MF_NOSECTOR properly. AFAIK this can cause crashes if you clear these without unlinking the actor in the process.
  3. Graf Zahl

    MBF21 Specification v1.2 Release

    As I am currently implementing the standard in GZDoom I'd like to give some feedback. The vast majority of features was no problem, but there's one thing in here that I have to consider a major portability hassle for an open standard and that's the 3 functions for setting and checking the flags (A_JumpIfFlagsSet, A_AddFlags and A_ClearFlags.) Here's a list of problems with this, some are only relevant for ports that changed things under the hood, others are general issues, applying to all ports: * the set and clear functions make no checks for special flags like NOBLOCKMAP and NOSECTOR. Just flipping these will most definitely cause problems with actors not being unlinked/relinked into the proper chains. * No checks are being done to mask out undefined/non-universal flags. It just performs a binary comparison of the flag words, requiring each port which wants to implement this feature to replicate these words bit by bit. As an example I'd use MF_SLIDE. ZDoom, for example, removed MF_SLIDE long ago as it was not used for anything useful. Another one would be MF_TRANSLUCENT or MF_TRANSLATION. Again, this is not how more advanced ports would handle translucency - it's very limiting and if a port handles this differently, having these flags among the checkable ones may be a major issue for robustness, resulting in undefined behavior of the A_Jump... function. * The args are only 32 bit so this covers all the Heretic flags in the second flag word but only half of the MBF21 flags that would be of actual interest. It also misses several important high flags in the first flag word. With this in mind, is there still a chance to revise these 3 functions so that they work in a truly portable fashion by only allowing to check a well-defined set of flags that other ports can easily implement without having to compromise their implementation of the underlying features - and by making sure that they can actually access all relevant flags and not miss a significant portion by not allowing to check the higher bits?
  4. Graf Zahl

    PrBoom+ 2.6um (Feb 9, 2021)

    Here's the latest release of my PrBoom fork with UMAPINFO support: https://github.com/coelckers/prboom-plus/releases/tag/v2.5.1.7um The changelog can be found in the above link So far there's only a Windows 32 bit version because I am unable to create release packages for macOS and Linux, so any help here is welcome. This has been built with Visual Studio 2019 so there's no Windows XP support. Please report issues at the Github issue tracker.
  5. Graf Zahl

    DOS Doom Code Execution

    I doubt it. The last time this happened for me was Caverns of Darkness. I thankfully declined when faced to play this with the semi-broken DOS EXE it came with. Fortunately I was able to come up with an alternative solution. Now what would a techically less knowledgeable user do if faced with a setup they do not like? Not even the best mod in the world would help if the obstacles are too high - and that's totally a subjective assessment.
  6. Graf Zahl

    DOS Doom Code Execution

    No. My guess is that most regular people who want to play Doom on a modern system will Google for "Play Doom on Windows/Mac/Linux" and be guided to some tutorial to set up a source port - or use the Unity version right away if they do not own the game yet. DosBox is arcane for those who grew up on modern computers and have no interest in technical solutions. They may unknowingly use it if they get a predefined setup, but they most likely won't be able to create one themselves. But even if you gave one to them, the first question you are likely to get is "How can I set this to a higher resolution?" and they either stop right there or look for a better solution (read: Look for a source port that best matches their interest.) since the answer is "You can't".
  7. Graf Zahl

    DOS Doom Code Execution

    I don't think that this kind of user will ever use DosBox and Doom.exe to begin with - they'd probably settle on something easier to handle...
  8. Graf Zahl

    The GZDoom 64-Bit Error

    I need the file you get when clicking on "Save Report to Disk..."
  9. Graf Zahl

    The GZDoom 64-Bit Error

    Please post the crash log. Without that we can only guess at what went wrong.
  10. Graf Zahl

    What's your favourite DOOM source port?

    Sorry, Lila Feuer, but that's classic armchair advice you were giving here. Where I work there's one guy whose sole responsibility is to think up new test cases and run our software through all sorts of ludicrous scenarios. But he's doing nothing else the entire day, 5 days a week, 52 weeks a year minus vacation. But for something that's ultimately a hobby project on a limited time budget with too few people working on it that's totally impossible, even on a smaller scale. We inevitably have to depend on users to report when they see something wrong.
  11. Graf Zahl

    What's your favourite DOOM source port?

    What can you do if nobody reports it for all the time...? I never noticed because I don't like playing the Cleric.
  12. Graf Zahl

    What's your favourite DOOM source port?

    RNG tables were also changed in PrBoom. Funny that it is constantly overlooked that this change dates back to Boom.
  13. Graf Zahl

    Should there be a new Quake Port?

    What I'd like to see more than a Q1 port would be a Q2 port that takes an active effort to convert the game DLLs into a scripted language so that the game can live on without being inconvenienced by a binary extension interface.
  14. Graf Zahl

    DOS Doom Code Execution

    Binary patches of executables always come with a risk, though, and that's not limited to exploits. Just have a look at Quake 2. Thanks to its DLL interface, any port switching to a different architecture other than 32 bit Windows is left in the cold with many of those old user mods which shipped their own game DLL but didn't bother including the source.
  15. Graf Zahl

    DOS Doom Code Execution

    If it didn't "change any of Doom's internals" it would not work. The entire purpose is to do that! And in this regard it is completely irrelevant whether you apply it statically to the .EXE file or through an exploit at run time. Seriously, the only new thing here is the delivery method. Patching an executable to do thiings it was never made for is an ancient concept - remember Entryway's limit epanding modified EXE?
  16. Graf Zahl

    DOS Doom Code Execution

    It's more a question of feasibility. The way this thing works you need to create machine code that's hardwired to the DOS EXEs intricacies. Trying to execute that code in a different context will be a gargantuan effort that'd only be worth it if there was a genuine gain. And a handful of projects isn't really it. My guess is that the scope of these changes will be on a scale where it is easier to reverse engineer them to source code (unless provided directly, of course) and integrate that code directly into the port or script it in a port capable of instead of trying to run the actual machine code.
  17. Graf Zahl

    DOS Doom Code Execution

    Obvoiusly any port trying to support things like this would have to check for the overflow condition and deal with it on its own terms instead of letting it run amok on the system. But the real problem lies elsewhere. It would only work on x86 32 bit, but that's not really a future proof platform. So to support it on other architectures you need an emulator - but you not only need an emulator but a code checker that blocks malicious attempts to access functions and system calls that can cause real damage. It also needs total knowledge of where functions start, especially in cases where some jumps into the middle of a function are performed. The amount of work needed can quickly exceed any reasonable effort. So sorry for anyone dreaming of getting this to work with more modern ports: It won't happen.
  18. Graf Zahl

    What's your favourite DOOM source port?

    No, the firestorm also was fixed recently, its parameters for radius damage were not correct.
  19. Graf Zahl

    What's your favourite DOOM source port?

    I'm sorry to tell you, but you must really be imagining things here. I've run some tests on both GZDoom and Boom's RNG - same as in its child ports - in the past and while the actual sequences are not the same, the resulting distribution is very similar. It's both a lot more random than Doom's original one. I think what you really feel here is that GZDoom does not use a single RNG but hundreds - a lot more than even Boom and as a result you get poor sequences for some events. If you really want I can do a test build for you switching back to Boom's RNG, which ZDoom had been using in the beginning, and mapping all calls to a single one for SP games. It might be interesting to hear your impressions.
  20. Graf Zahl

    What's your favourite DOOM source port?

    Here's the right place for making requests on those "lacking" aspects: https://forum.zdoom.org/viewforum.php?f=15 ;)
  21. Graf Zahl

    weird RAZE shit

    Although, truth be told, this had nothing to do with Build, but with a developer team that obviously - judging from a famous message - had problems getting along with the provider of their engine.
  22. Graf Zahl

    weird RAZE shit

    If you look at the entire Blood source you will see this attitude everywhere - the map format is different (hopelessly convoluted with bit fields for properties, also encrypted), the palette management does not use the standard features, it overrode several engine functions with their own, courtesy of the linker prioritizing their own content, etc. Although with the file system the actual reason was that GRP was added to the engine relatively late and since the Blood team had already set themselves up to use their stupid resource indices (another thing that makes it very hard to replace stuff) they just circumvented the GRP code, which admittedly was a piece of shit all of its own.
  23. Graf Zahl

    What is your most favourite Heretic episode?

    E1. The rest strongly suffers from the limited set of textures the game has.
  24. Graf Zahl

    Amazon announces cloud gaming service

    The Microsoft model depends on local play, it's not just an interactive video stream. As such, it's a business model I'd find more interesting than buying renting DRM-crippled games but pay full price. At least it is honest about its intentions. Too bad then that the speeds that need increasing can't be. The problem is not a question of bandwidth - it's a question of how long a single bit from your system takes to reach the server, and like I pointed out, that's subject to physical limitations - the further away your server farm is from your customers, the longer the bits take to travel back and forth between your system and the server and the more lag the customer will experience.
  25. Graf Zahl

    Amazon announces cloud gaming service

    Those people who, according to the industy, "have no need for a real computer". The story probably goes like "Hey, in order to play new games you constantly have to buy upgrades to your home computer. Why not come to us? - all you need is some cheap hardware that's capable of decoding a video stream." "If there is no market, we will create one." Sometimes there's a genuine Cloud-Cuckoo-Land mentality around there, it's very clear that these IT guys often have no idea how real people tick. I think a big part of the master plan is to take control of as much as possible before our dear politicians finally wake up and try to combat the monster the had allowed to grow. But seriously, there's definitely a market for gaming subscriptions. The problem is that streaming is not the solution for it because it simply cannot work due to the technical limitations.
×