I'm interested in trying old hardware the way they were, I'm currently doing old 3d rendering like wolfenstein or doom, though not at a low level yet
Sweet. I used to maintain a Doom/Doom2/Heretic/Hexxen "sourceport" (fork) until our small mod part of the modding community went to hell. Not one for politics and internal bickering, I dissolved into the larger doom mod community which is still thriving today.
Let me know if you want to know optimization tricks or esoterics of 2.5D software rasterizers. Duke3D's Build engine was far superior technology... But I have a softspot for Doom. I figured out how to emulate many of the idTech1 software rasterizer "glitches" in hardware acceleration because so many .WADs utilize odd rendering artifacts of the software engine to create actual features in the maps.
For example: Invisible Floors. An area within a room can have an invisible floor that is higher than the visible floor; Useful to make invisible stairs, a "Leap of Faith" false cliff, or a "wavy" anti-grav room, etc. To do this you manually change the "outside" of a linedef to a sector number having the same height as the floating floor. E.g., a room with a floor at 0 you place a sector (area) and give it a floor of 64 (~approx 1 doomguy height). Then create another sector in a typically unreachable area of the map with floor of height 64, and change the "outsides" of the walls which would normally point to the sector/room with floor height 0 to point to point at the other sector with the same 64 floor height. Doom's renderer will detect the difference of the "outside" as zero and not render the "step" faces nor floor texture of that area, thus creating an invisible structure not anticipated (or used) by the original idSoftware maps.
This is easy to emulate in any D3D or OGL etc. hardware texture and lighting pipelines, but what's difficult is the "visplane bleeding" effect used in conjunction with this effect to create "deep water" in many user created Doom maps (no official maps). A bug in the renderer is exploited to get the engine to render the floor (or ceiling) texture in a straight vertical line above or below one or more horizontal lines. Since the actual floor can be lower than this, it can seem like the player is standing in "deep water", not just on a floor with a water texture. Emulating that is incredibly difficult as the engine code has to know about the bugs and detect the map maker's intent to recreate their effects since the 3D accelerated code does not work very much at all like the pixel column based software rasterizer. It would be easier today with shaders, but at the time pixel shaders were not commonly supported yet (my code was fixed function pipeline only), i.e., spaghetti code everywhere, but it magically worked.
The glitches have been so embraced by mappers that you MUST support them or few modders / players will use your idTech1 (Doom/Doom2/Heretic/Hexen/Strife/ChexQuest/etc) compatible rendering engine. E.g.,
2017 Cacowards 1st place winner created a map set with gameplay made out of engine glitches. It's a strange thing, to attempt to recreate glitch-complete hardware accelerated engine for a game that runs fine in software. Initial reason being to add things like scripting support to Doom, and then the modders get excited and request all these old glitches & bugs as "engine features". It's fun though, akin to the joy one gets from
creating amazing things in limited mediums; Echoes of demoscene vibes.
On the topic of old hardware: While cleaning up some more old hardware we're finally getting rid of at the office I found a machine running a not too ancient Debian + XFCE. I came back from lunch and to my surprise the machine looked like some kind Atari computer/console running an attract-mode. It was XScreenSaver's m6502:
(
source repo)
The screensaver doesn't just (kind of) emulate an old video mode, it contains a 6502 virtual machine and can load custom programs from assembly files.
Javascript version of the 6520 emulator (not emulating an actual console though).
I've also got a few old projects on the backburner such as updating old software rasterized games like
"Terminal Velocity" (which had a hybrid voxel-data->polygon & sprite engine, and supported up to 8 player vs /w voice messages, impressive for 1995). Kind of interested in making some PC Engine / Turbografx 16 homebrew. So many projects, so little time (or so I once assumed).
TL;DR: Sounds like you're capable, but hit me up if you need any pointers about low level guts of old rendering engines not just idSoftware's.