// SDL2 + C : bare-metal retro coding

Write cross-platform games with SDL2 and C. Full control, low latency, perfect for classic arcade or 16-bit style engines.

// minimal_sdl2_retro.c
#include <SDL2/SDL.h>
int main(int argc, char* argv[]) {
    SDL_Init(SDL_INIT_VIDEO);
    SDL_Window*   win = SDL_CreateWindow("Retro Green",
        SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, 0);
    SDL_Renderer* ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_SOFTWARE);
    int running = 1;
    SDL_Event ev;
    while (running) {
        while (SDL_PollEvent(&ev))
            if (ev.type == SDL_QUIT) running = 0;
        SDL_SetRenderDrawColor(ren, 0, 40, 0, 255);
        SDL_RenderClear(ren);
        SDL_SetRenderDrawColor(ren, 50, 255, 50, 255);
        SDL_RenderDrawRect(ren, NULL);
        SDL_RenderPresent(ren);
        SDL_Delay(16);
    }
    SDL_DestroyRenderer(ren); SDL_DestroyWindow(win); SDL_Quit();
    return 0;
}

$ gcc sdl2demo.c -lSDL2 -o retro.x
→ pixel control, sprite blitting, chiptune audio via SDL_mixer.


// GETTING STARTED

$ apt install libsdl2-dev  # Debian/Ubuntu
$ brew install sdl2         # macOS
$ pacman -S sdl2            # Arch Linux

Key SDL2 subsystems

# RENDERING

▸ SDL_CreateRenderer – hardware/software
▸ SDL_RenderCopy – blit textures
▸ SDL_SetRenderDrawColor – pixel drawing
▸ SDL_RenderPresent – flip buffer
# AUDIO / INPUT

▸ SDL_mixer – chiptune & WAV playback
▸ SDL_PollEvent – keyboard & gamepad
▸ SDL_GetKeyboardState – key mapping
▸ SDL_GameController – controller API