The Daybo Logic RTTB Project

Last update: 28th February 2006

DPCRTLMM library 0.0.3
Author: David Duncan Ross Palmer
License: BSD
Other libraries like this: Ken Silverman's kgroup and kextract

Description: RTTB means Run-Time TarBall. It is inspired by Ken Silverman's kgroup kextract code which he used to build archives which were then distributed with the games which the Build project was used by. Such games were 3D Realms' Duke Nukem 3D and Monolith's Blood.

It is also inspired by the UNIX tar utility, which is a tape archiver. The utilities supplied will allow you to build, extract or verify an .rttb. archive and the library supplied (which is used by the tools) will allow you to read the contents of the archive as if they were local, loose files. This means that you can distribute a file for some software and the library will read the loose file in preference to the archived file, thus allowing optional upgrades without supplying a totally new archive. Unfortunately, compression is not supported. .zip files would be a better option for this. tar is, nor RTTB aren't viable for this because the headers are kept at the top of the file, with fixed offsets and lengths of the contained data. So if you need to distribute a lot of small files with a program, RTTB is your man!

The library incorporates these features:

  • Ability to separate out blocks of memory into arrays, one array per module is nice
  • Ability to recover the size of a block so one doesn't have to store it in the program
  • Lockable blocks so that releasing them later will cause traps
  • Common pointer mistakes such as releasing unowned memory are eliminated
  • Memory leak reports
  • Complete log of all usage
  • Hooking of almost all operations so the program may preview activity
  • Ability to determine if a pointer is invalid BEFORE it is used
  • Unlimited number of hooks per event default=32 (requires rebuild)
  • An unlimited (in theory) number of blocks can be allocated
  • Unlimited block arrays (modules) per program, default=512 (requires rebuild)
  • Information about every block allocated and it's owner
  • Fine/line tracing (C only)
  • Garbage collection if library has traps disabled.
  • Thread safety
Name Module Status Maintainer
rttb_Swap16( ) rttb_endian.c Working, complete DDRP
rttb_Swap32( ) rttb_endian.c Working, complete DDRP
rttb_MakeMachWord16( ) rttb_endian.c Working, complete DDRP
rttb_MakeMachWord32( ) rttb_endian.c Working, complete DDRP
rttb_GetWord8( ) rttb_endian.c Working, complete DDRP
rttb_GetWord16( ) rttb_endian.c Working, complete DDRP
rttb_IsBigEndian( ) rttb_endian.c Working, complete DDRP
rttb_Setup( ) rttb.c Working DDRP
rttb_Cleanup( ) rttb.c Working DDRP
rttb_StartedCheck( ) rttb.c Working, complete DDRP
rttb_fopen( ) rttb_fopen.c Working DDRP
rttb_fclose( ) rttb_fclose.c Working DDRP
rttb_fseek( ) rttb_fseek.c Unknown DDRP
rttb_feof( ) rttb_feof.c Working DDRP
rttb_ftell( ) rttb_ftell.c Unknown DDRP
rttb_filelength( ) rttb_filelengh.c Working DDRP
rttb_GetErrorMessage( ) rttb.c Working, complete DDRP
rttb_GetLibVer( ) rttb.c Working, complete DDRP
rttb_OpenInMemory( ) [none] Not present Nobody
rttb_CloseInMemory( ) [none] Not present Nobody
makerttb makerttb.c Working DDRP
vrttb vrttb.c Working DDRP
[core] rttb_core.c Development/Working DDRP
rttb_fread( ) rttb_fread.c Working DDRP
rttb_fgetc( ) rttb_fget.c Not present Nobody
rttb_fgets( ) rttb_fget.c Not present Nobody
rttb_fgetpos( ) rttb_fpos.c Not present Nobody
rttb_fsetpos( ) rttb_fpos.c Not present Nobody
rttb_LocalToGlobalOffset( ) rttb.c Working DDRP
rttb_rewind( ) rttb_fseek.c Working DDRP
DOWNLOAD   <-- Grab source here.
Bitbucket repository

Known problems with this release. Unknown beta state.