nsdl1

High level SDL 1.2 shared library wrapper

Wrapper score 15/100 · tests present · no docs generated

Wraps a native library — check OS Compatibility below for platform-specific linking notes.

Summary

Latest Version 0.9.6
License NCSA
CI Status Failing
Downloads 0
Last Indexed 2026-07-21 05:26

Authors

  • Amun

Installation

nimble install nsdl1
choosenim install nsdl1
git clone https://github.com/amnr/nsdl1

OS Compatibility

Platform Linux macOS Windows FreeBSD OpenBSD NetBSD Android iOS WASM Embedded
nsdl1 - - - - - - -

Dependencies

Package Version Optional
dlutils - No

Source

Repository https://github.com/amnr/nsdl1
Homepage https://github.com/amnr/nsdl1
Registry Source nimble_official

README

High level SDL 1.2 shared library wrapper for Nim

nsdl1 is a high level SDL 1.2 shared library wrapper for Nim.

Features

  • Tries to hide as many C types from the user as possible.
  • Replaces generic C types with Nim distinct ones.
  • Does not require SDL 1.2 library headers during build process.
  • The executable is not linked again a specific SDL 1.2 library version.
  • Loads SDL 1.2 library only when you need it (via dynlib module).
  • Single external dependency: dlutils.

NOTE: Not everything is implemented yet.

NOTE: This is a mirror of my local git repository.

API

Original C SDL_ prefix is dropped:

  • SDL_INIT_VIDEO becomes INIT_VIDEO
  • SDL_GetTicks becomes GetTicks
  • etc.

Refer to the documentation for the complete list of changes.

Installation

git clone https://github.com/amnr/nsdl1/
cd nsdl1
nimble install

Configuration

You can disable functions you don't use. All function groups are enabled by default.

Group Define Functions Defined In
Audio sdl1.audio=0 <SDL/SDL_audio.h>
Clipboard sdl1.clipboard=0 <SDL/SDL_clipboard.h>
Joystick sdl1.joystick=0 <SDL/SDL_joystick.h>
Keyboard sdl1.keyboard=0 <SDL/SDL_keyboard.h>
Mouse sdl1.mouse=0 <SDL/SDL_mouse.h>

For example if you don't need audio functions compile with:

nim c -d=sdl1.audio=0 file(s)

Basic Usage

import nsdl1

proc main() =
  # Load all symbols from SDL 1.2 shared library.
  # This must be the first proc called.
  if not open_sdl1_library():
    echo "Failed to load SDL 1.2 library: ", last_sdl1_error()
    quit QuitFailure
  defer:
    close_sdl1_library()

  # Initialize the library.
  if not Init INIT_VIDEO or INIT_NOPARACHUTE:
    echo "Error initializing SDL: ", GetError()
    quit QuitFailure
  defer:
    Quit()

  # Create the window.
  let window = SetVideoMode(640, 480, 32)
  if window == nil:
    echo "Error creating window: ", GetError()
    quit QuitFailure
  defer:
    FreeSurface window

  # Set window title.
  WM_SetCaption "Sample Window", "Sample Window"

  # Basic event loop.
  var event: Event
  while true:
    while PollEvent event:
      case event.typ
      of EVENT_QUIT:
        return
      else:
       discard
    Delay 100

when isMainModule:
  main()

You can find more examples here.

Author

License

nsdl1 is released under:

  • LGPL-2.1 — SDL 1.2 license
  • MIT — Nim license
  • NCSA — author's license of choice

Pick the one you prefer (or all).