ishadow wrote:I played Descent 1 briefly back then on 486DX2 66 MHz and it was running very good. On the other hand PSX had only 4 MB of RAM in total and very slow CD drive compared to PC HDD from early 90s.
We are comparing game with full 3D environment with polygonal robots with 2D game made in 16-colors faithful to NES limitation.
There's a lot of games I've played "briefly" on underpowered hardware without immediate issues. MechWarrior 2 is a game which requires 8 MB of RAM minimum, but I got the demo version when I had access to a 4 MB system. I tried it anyways and for the first couple minutes the framerate was OK and everything worked. However, before too long, everything started glitching out and the framerate died and error messages started popping up, though the game kept going despite all of that. Yup, it ran out of RAM and was somehow managing to keep going in an extremely broken state. :P
The initial levels in Descent are small and don't have a lot of wide open areas, and the ones which do have wide open areas aren't very complex. Once you get past level 7 (the end of the shareware version) the levels start to get a LOT bigger, a lot more complex, with MASSIVE open areas... trust me, a 486 with only 4 MB of RAM is going to chug in those sections. :P
And comparing with the PlayStation, you have to keep in mind that it has hardware accelerated graphics, so a lot of the 3D things which happen in games on the PS1 are handled off of the CPU on the GPU, leaving the CPU free to do a lot more. This is also a part of the reason why the smaller amount of RAM is able to do more, though the other part is that there's optimizations in place for storing more textures in less memory at the cost of graphical fidelity which normally wouldn't be noticeable on a TV screen of the time.
ishadow wrote:And these games had full 256 color graphics not 2bit tiles. Keep in mind, that screen tiles don't change all at once, but are changed when scrolling it allow to copy sprites from main ram to vram over slow ISA and retain playable speeds. Why not simply load tiles on the fly from HDD? It was simply way easier to made this game working on 486 + 4 MB of RAM instead of pushing it to 286 1 MB.
*facepalm*
OK, so firstly, if memory serves, HD access in the days of DOS was roughly TEN TIMES slower than RAM access. As a programmer, you wanted to avoid disk caching as much as humanly possible mid-gameplay.
Secondly, you never constantly streamed from RAM to VRAM because yeah, that wasn't a very practical thing to do. Instead, you would either store all active graphics in VRAM when loading, or, use main RAM for graphics and use VRAM to do advanced tricks like page flipping to not only speed things up (since page flipping is faster than double buffering) or to prep things for drawing from the main RAM.
However, VRAM is very limited. As a programmer, you could only rely on a VGA card having 256 KB of RAM, so often that extra space was merely used for page flipping because of how little you could store in there.
Thirdly, it doesn't matter how much you compress your graphics, when you go to render, you have to unpack them into the format that the screen is running in. With VGA, this is likely going to be 320x200 8-bit. Hardware accelerated GPUs often have command sets for doing texture decompression on the fly so that much more stuff can be stored in VRAM, but that doesn't apply to VGA. :P
ishadow wrote:Why load random vehicles, pedestrians etc. game code could check for available tile memory, load new when necessary, or reuse those already loaded when low on RAM. Open world games use this all the times.
Part of the reason open world games nowadays are able to get away with it is because of multi-threading. You can stream content in a secondary thread as you expect to need that content and unload things the game doesn't expect to get back to. However, this process is code-heavy since it needs to be able to anticipate and do things in an intelligent way. If the player does something the game isn't expecting, this streaming needs to play catch-up and will either do so by causing so much loading that the framerate drops momentarily, or will allow elements to show up without their assets being loaded, thus placeholder stuff is shown instead, if anything.
The other more important part of the reason though is that DOS is a very different beast from a modern system and disk access in DOS is simply not fast and can't be done concurrently to game code in a multi-threaded way, not to mention can't be done in a buffered way like with every operating system from Windows 95 onwards. Combined with the slower CPUs of the time compared to nowadays and any attempt to stream content from the HD is likely going to hurt your framerate significantly. If you're streaming content constantly, your framerate is going to be jittery and players just won't tolerate it. :P
ishadow wrote:RAM aside. Why this game requires a 486? No parallax scrolling, no software MOD music. There's hardly any reason for it to require something faster that average 286, even with 7-10 sprites on screen. However It looks like that this game is drawing every frame with the CPU instead of using VGA hardware scrolling. That would explain a lot.
Already talked about VGA limitations, but the only reason the game actually needs a 486 is because it's doing some floating point stuff. If that stuff was re-optimized for fixed point math the game would probably work on a 386, (and indeed, this game WILL run on a 386 if a 387 co-processor is present), but the 386 CPU is seriously underpowered compared to a 486 and the framerate would just be plain old BAD. A 286 would be so bad it would be virtually unplayable.
I should also remind you that virtually nothing made for a 286 ran at 60 FPS. (Exceptions: Anything where only tiny amounts of movement happened per frame with like, a couple or three sprites at most, plus the scene itself is stationary.)
ishadow wrote:It's a great thing that DOS gets that much of attention, but people prefer other vintage computers to work with.
I know... that's a part of the reason why I focus on DOS stuff with my show. Since so few people do anymore, SOMEONE has to! ;D
ishadow wrote:For me RCR is like another demoscene entry and in this terms it's just don't shine. It lacks a few weeks of polish, adding Adlib or TANDY support, and optimize game to work on 286. It would be actually awesome if this game could be playable on 286 even with 4 MB of RAM. On 486 you could even emulate NES with full or nearly full speed, since 486 ranged from 25MHz to 120 MHz.
And again, if this was something meant to sell back in the 90s, the author would've definitely done that. :P
People only have so much time on their hands. Brian likely set himself specific goals for his DOS port so that he wouldn't spend forever working on it so he could continue with other projects and that's the healthy thing to do. Trying to make the DOS port of RCR "perfect" would simply be completely impractical in terms of time and money. Oh sure, it's very possible, but it would just take longer and the end result financially would be the same so... why bother? :P
(Admittedly, the money mentality is why we've had so many rushed/broken games released over the stretch of time, but for something not intended to be sold on its own (even the boxed copy of RCR486 comes with a Steam Key for the full game), there's no reason whatsoever to need to make this thing perfect.)