After analyzing the source-code of games like Doom, Abuse and Wolf3D, and inspecting their ports to SDL and other platforms, i'm curious about the architecture and techniques used for rendering. They don't use SDL or any other platform-specific code for rendering sprites or text to the screen, neither they use it for sound. So, porting the graphics part is quite easy.
Is this the job of a software renderer? Where i can find more information about 2D software renderers? 3D might be good use too, but i'm curious about implementing a 2D game entirely in software, relaying in SDL only for the platform-specificity.