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


  • Content count

  • Joined

  • Last visited

Everything posted by SaladBadger

  1. SaladBadger

    idgames archive problem with google chrome

    web browsers aren't the only things capable of downloading from a FTP server. Specialized FTP clients like Filezilla are still a thing if you need to download from a FTP server. Browsers are just canning it because it's not a common use for them anymore. FTP itself is a bit of a dinosaur protocol, with the web increasingly pushing for "secure by default" and FTP offering no security features whatsoever. It's not really a huge deal for a little Doom archive, but with the overall support for it plummeting, that bridge will have to be crossed at some point.
  2. In theory it should be saved relative to whatever is mapped as the user's home folder, which I guess you overridden and placed on the F drive. Usually when someone says C:\Users\<username>\whatever they do mean the home folder, but use the C:\Users as a convenience because that's what the vast majority of users use.
  3. In certain cases, I can see that. From what I understand, Doom 64 under load tended not to be as "well defined" as PC doom is (where the game will always execute tics the same regardless of whether it's running at 10 FPS or 35 FPS or whatever). Things like this though really can't be simulated effectively without emulating the entire console, which would be a lot more work, so the source code won't provide much on that front.
  4. they wouldn't have to use this, because the official port achieves demo-sync level compatibility already. It's based off of Kaiser's own efforts to reverse engineer the game.
  5. SaladBadger

    Here's an idea: Doom Builder Online

    Apparently during Doom's development Romero was playing with some NeXT features in DoomED like shared objects, which allowed for DoomED to be networked. I can't remember the source on it, but there's a story of it where one person's laying down lines while someone else is busy placing things in the level. I assume in practice it didn't get too much use, but it did exist apparently.
  6. SaladBadger

    EXE hacking

    this is some good sleuthing, but it is frustrating there's very little documentation. My own searches turned up the potential phar lap connection, but also got caught up in a red herring in the form of an obscure gcc port that also used the "xm" prefix and had a dos extender named "xm" with similarly named modules like "xmdos", but the dates on all of the files I found are from 1990, so it's too early. Phar Lap does come up a lot seeing as it's one of the earliest DOS extenders, but I don't think I've ever seen any DOS binary use it or any actual documentation on using it, so that's annoying. ed: re: floating point usage: The only floating point use I have found so far is creating the sine LUT. I haven't turned up anything that occurs in the game logic.
  7. SaladBadger

    EXE hacking

    I dunno if anyone's too interested in hacking the 0.2 and 0.3 alphas, but I've found a brute-force way to generate a flat executable that can be loaded into a disassembler. I've tried Ghidra, but it should hopefully work with IDA Locate the start of the code section (I dunno, I think it's a code section). this has the signature EB 0E 64 62 67 6F 74 6F 20 3D 6D 61 69 6E (ë dbgoto =main in ansi) Nuke every byte in the binary before the EB Add more bytes at the end for the data. How much? I dunno, there's probably a field somewhere in the header that says. I padded my executable to one meg to be safe. Load that mess up in Ghidra as a flat binary. Can specify x86, 32 bit, GCC and it seems to work just fine. Stare at that mess in the code browser. This seems to work. Mostly (I've only tested it with 0.2 atm, since that has extensive debugging symbols). The compiler and linker used for Doom 0.2 and 0.3 is weird (does anyone know for certain which compiler was used to begin with?) and seems to group string and other literals by input file with its functions, and starting the flat binary at the start at the segment seems to align accesses to these literals properly. I wanted to figure out more about the executable format itself, which would probably be vital for any extensive hacks, but I honestly couldn't make heads and tails of the dos extender binary involved. It's pretty tiny, especially compared to DOS4GW, but still beyond my scope. There are some problems I've observed with this. Some functions don't seem to get called right, and the main function isn't properly detected so it needs to be added manually, but unless I could figure out what sort of relocation data is present, this is the only way I've been able to make anything work.
  8. SaladBadger

    Doom 0.5 reverse engineering project

    I'm somewhat familiar with xttl and Quasar's work, and I remember many years ago Quasar talking about architectural differences in the pre-beta release. It's all very neat, and I admire the things the two have managed to pull off. So far as I'm aware though there's never been much work done with any of the earlier alpha versions, which is a shame since they bury lots of interesting secrets and tell a tale of the game's evolution, especially on the rendering front.
  9. SaladBadger

    Doom Pictures Thread 2020

    I added emulation of the high color modes for demonstration purposes, and I honestly can't tell if things like browns and pinks (and to some degree reds) not losing color as much in the distance is worth basically being forced into low-detail mode
  10. SaladBadger

    Things about Doom you just found out

    Doom 0.5 has a nonlinear episode structure. I remember the release notes which came with the thing, which showed some usenet posts about it indicated a nonlinear episode structure, but I could never get that data to work. (the code I reverse engineered just progresses through the episode linearly, ignoring any NULLs) But in any case, the data is actually all there, including points where to draw the player on the map. Here's the actual data I pulled out of the executable. I'm not really sure what the negatives mean. struct { int x, y; int north, east, south, west; char* name; } mappts[16] = { /* X Y N E S W Map name ------------------------------------*/ {70, 160, -2, 0, 0, 0, "E1M1"}, //[1] Hangar 2 {90, 136, -3, 0, 1, 0, "E1M2"}, //[2] Supply Depot 2 {104, 124, 0, 5, 2, 4, NULL}, //[3] Fork {64, 100, 0, 3, 0, 0, "E1M7"}, //[4] Recreation and training center {154, 128, 0, 7, 6, 3, NULL}, //[5] Fork {168, 168, 5, 0, 0, 0, "E1M3"}, //[6] Waste processing facility {180, 124, -8, 0, 0, 6, "E1M4"}, //[7] Refinery {172, 110, -10, 9, 7, 0, "E1M5"}, //[8] Power plant {222, 96, 0, 0, 0, 8, "E1M6"}, //[9] Quarters {160, 86, -11, 0, 9, 0, "*E1M9"}, //[10] Control Center {148, 70, 13, 14, 10, 12, NULL}, //[11] Fork {104, 104, 11, 0, 0, 0, "E1M8"}, //[12] Communication Tower {104, 44, -15, 11, 11, -16, "S3E1M10"}, //[13] Lab {184, 56, -15, 0, 0, 11, "E1M11"}, //[14] Supply Depot 1 {142, 30, 0, 14, 0, 13, "E1M12"}, //[15] Anomaly {32, 16, 0, 13, 13, 0, "E1M13"} //[16] Observatory }; And here's the annotated points on the map:
  11. xqRPiHc.png

    my life is full of bugs and more bugs now

  12. SaladBadger

    What are you listening to?

    for the past week. please send help.
  13. SaladBadger

    Doom Pictures Thread 2020

    i'm making the world's worst source port in an attempt to document the inner workings of the doom renderer pre-bsp. Since this is my first time doing a RE project and my first time trying to reimplement reverse-engineered code, it's been a mess of bugs and mistakes, but it's finally getting to the point where I can pop into levels and draw them without excessive issues.
  14. Doom's renderer evolution is weird. If you're familiar with the final rendering code, with its use of polar coordinates for projection and clipping and the use of a BSP to determine rendering order, the 0.5 rendering code is completely different. Points are projected and clipped using relatively conventional algorithms (it's so by the book that the projected vertex structure uses x for position left/right on screen and z for depth, unlike the map format). Processed lines are shoved into subsectors, spans are generated and drawn (no visplanes here yet, but I haven't traced flat rendering just yet), then it flows into adjacent sectors by looking at 2s lines that made it into the subsector. This is depth-first rather than breadth-first. When the renderer is unable to draw further, it draws all the things in the current sector, and then backs up. This has the fun effect of making things standing on the line between sectors sometimes get cut off based on how the game walked the sectors.


    I'm still working on the code cleanup, I want to be able to show how this works alongside fully functioning code.

  15. SaladBadger

    Weakpoints aren't a problem, the visual hints are.

    gonna be honest, I can extrapolate from a single tutorial prompt "here's an arachnotron. he fucking sucks, but he sucks much less if you can blow up the bigass gun" that "if a demon has a bigass gun, you can shoot at it to break it" which is basically what all weak points are. The game is brutally honest that the "weak point" is basically always a bigass gun. The mecha-zombie's arm, on the other hand, isn't a bigass gun, it's a little blaster, so I wouldn't expect to be able to shoot it.
  16. Doom had no online servers. The concept of game servers as we know them was pretty much nonexistent. There were some services that let you play online, the most famous being DWANGO, which was a dial-up service. I recall an attempt to emulate the DWANGO protocol, but I don't think it was ever finished. Other common options included Kali, which would allow tunneling the IPX packets over a TCP network, allowing Internet play. If you're using DosBox, there's no reason to worry about any of these, as its IPX network emulation should be able to communicate over the internet, and you can set up your game as if you were just setting up for LAN play back in the day. The period options are simply unlikely to work under DosBox, since it doesn't provide adequate emulation (ie for Kali) or it would rely on a now-dead service (DWANGO)
  17. SaladBadger

    The Top 25 Sector Ships of All Time

    Well I'm gonna have to step up my game in Evil Unleashed if I want a chance to place here... All of these boats are so cute. Everyone says Doom shouldn't be done for these sorts of things, and to be fair that's usually true, but I love what mappers are able to pull off with both stock and custom resources to add just that extra familiar touch to their maps.
  18. I want to write an article discussing Doom rendering pre-BSP, and I have basically all the 0.5 rendering code mapped out at this point and a pretty good idea of how it works, but I'd like to get it reimplemented to actually demonstrate and verify functionality, but that's uh, going well...



    It's just rendering sector 0 (the map border in map 1) while spinning ATM, but there's some bugs causing weird clipping ATM. Ugh. Fixing decompiler artifacts is certainly a special kind of fun. No flats and recursion quite yet.

    1. SaladBadger


      update: the clipper is fixed. well, the clipper was correct, the projection of unclipped points wasn't though. Now I need to figure out why I'm getting circular references in the activeseg linked list causing a infinite loop...

  19. SaladBadger

    Classic consoles and ports and modern TVs

    I'd definitely believe it for good monitors these days, but I am morbidly curious, have you done any testing with modern TVs? Their game modes help a lot (playing Project Diva with game mode off by accident was almost magical in how horrible it was), but the impression I've gotten from others is that they still tend to fall short of good monitors.
  20. SaladBadger

    Rum and Raisin Doom - haha software render go BRRRRR

    I remember ling proposing the idea that it's a heat distortion effect (a la the original Predator), he had some screenshots of the game modified to only copy pixels without darkening and it looked like that. It's possible the darkness was added later with the intention of making it more visible, but they didn't account for the same pixel being copied multiple times. edit: I found the post in question
  21. random thoughts: I wonder how much Doom source code Apogee had gotten from id for Rise of the Triad. I noticed there's a lot of id's scripting library from the doom utilities in there, and what may be some alpha-era code (an an example, there's reference to mr_ variables and the MapRow function, the alpha's version of DrawSpan)

  22. SaladBadger


    I recall Kaiser mentioning he had a trick where he'd go into automap before the BFG ball comes out in order to try to avoid this issue.
  23. SaladBadger

    Shooting a Rocket to death

    Giving missiles enough health to take a shot and not die doesn't work because when something shoots them, their target gets set to whatever shot it. And the target field is used as the projectile owner, so in essence any projectile you shoot would become yours, explaining the revenant rocket problem. Some ports should offer means to work around this.
  24. SaladBadger

    DOS Doom Code Execution

    quake 2 is indeed limited strictly to native DLLs, as graf had mentioned earlier. id didn't reintroduce the idea of a scripting VM until Quake 3, though Quake 3 still supports dlls for debugging purposes or mods that need things like filesystem access. it's kinda a nightmare, I like that I can grab yamagi's x86 build and play any old mod just fine, but if I go for a x86-64 build, that breaks down immediately. Another game I kinda enjoy, descent 3, suffers even worse because they decided to use dlls for things like level scripting, so it came to pass that a new linux build was made that happens to be not as bad as the old one but then suddenly practically all old levels break because of this. The late 90's were kinda a dark time for game dev, weren't they?
  25. SaladBadger

    John McAfee Arrested for U.S. Tax Evasion

    my one experience with the software was that it could take upwards of 5-10 minutes to actually respond if something got blocked by either the antivirus or its included firewall. This was probably around a decade and a half ago, and it's left a sour impression on me so bad I would never touch it again. Like seriously, I'd hit "browse servers" in whatever version of Skulltag was out at that time, but I forgot to allow it in the firewall, so it held the computer hostage for 10 minutes before it finally showed the "The mcafee firewall has blocked this program" prompt allowing me to let it through.