This is a fork of the Adlib Tracker 2 project (GNU GPL 3+) based on the latest sources from the official website (released on 2019-09-10, DOS version is 2.3.57, SDL version is 2.4.24). Original project is abandoned by it's authors since 2019.
Examples of compatible tracked music files (modules) and instruments can be found on the official website.
3rd-party software used:
-
DOS version:
- CWSDPMI r5 DOS extender by CW Sandmann (GNU GPL 2).
-
Unix, Linux, Windows version:
- SDL library version 1.2 (GNU LGPL 2.1).
My interests in this project:
- Just for fun.
- Clean code: eliminate and separate platform-specific code.
- Remove all unneeded assembler optimizations and obfuscations.
- Make it portable: completely rewrite in C.
- Keep it simple for portability.
- Practice Git.
- Practice good programming technics.
- Translate into Russian.
- Make this program available on the territory of Ukraine.
- Add support for 4K displays.
- Speed-up screen drawing routines and sound rendering.
- Play audio streams.
- Don't forget about media centers.
On the first seeing:
- There are many extra media-files in the project tree (instruments and music modules).
- DOS, Windows and Unix/Linux sources are merged together but have different versioning.
- All sources use a 437 code page (CP437) and have DOS line endings (CR+LF).
- There is no Unicode support.
- It is written in Object Pascal (Turbo Pascal compatible mode) with Intel 386-specific assembler code.
- There are 4 separate ways to compile the project (a batch file for DOS, a batch file for Windows, two separate Makefiles for Linux - one for native build and a template for cross-compilation).
- Precompiled DOS and Windows only helper executables (located in the
utils/
directory) without source code are used during compilation. - DOS port uses GO32 Free Pascal's library to deal with DPMI.
- It uses SDL library (version 1.2) with bindings for 32-bits CPUs only.
- Compiled object files were placed inside source code tree making a mess and it's not possible to cross-compile without cleaning first.
- It won't compile for actual OSes using actual Free Pascal compiler.
- To compile the project you will need retro-compilers (Free Pascal compiler version 2.6.4 will be fine) and a proper environment (appropriate tools for cross-compilation or: Debian GNU/Linux "Wheezy" i386 OS, DOS environment for a DOS version, QEMU or similar software).
Now:
- Fixed binding with SDL library on 64-bit platforms.
- To build
adtrack2
under DOS (also true foradt2play
):- Install DJGPP environment and Free Pascal compiler in DOSBox-X with LFN support or on a real hardware.
- Run
./Make-DOS.sh
.
- To build
adtrack2
under Windows (works for i386 target for now):- Install Cygwin/MSYS2/MinGW, Free Pascal compiler.
- Run
./Make-Windows-i386.sh
or./Make-Windows-x86_64.sh
.
- To build
adtrack2
under GNU/Linux (works for i386 target for now):- Install Free Pascal compiler and SDL library.
- Run
./Make-Linux-i386.sh
or./Make-Linux-x86_64.sh
.
- These scripts can also be run in any supported OS for cross-compilation. See docs/build.md for details.
- The compiled object files have been moved to the target directory and are no longer annoying lying around everywhere.
- Many extra and unneeded files were removed.
- Compilation is no longer dependent on unknown binary executables.
See docs/pascal-to-c.md for information about porting Pascal code to C.
- Adlib Tracker 2 - official website
- GNU Operating System
- Debian GNU/Linux - a complete Free Operating System
- FreeDOS - an open source DOS-compatible operating system
- QEMU (package) - a generic and open source machine emulator and virtualizer
- DOSBox (package) - a /free and open source DOS-emulator that uses the SDL library
- DOSBox-X (package) - an open-source DOS emulator names that supports long file names for running DOS applications and games
- DOSBox Staging - a modern continuation of DOSBox with advanced features and current development practices
- GNU Binutils (package, package for DOS target) - a collection of binary tools (linker, assembler and others)
- GNU Compiler Collection (package)
- Free Pascal (package) - an open source Object Pascal compiler supporting both Delphi and Turbo Pascal 7.0 dialects, as well as Mac Pascal dialects
- DJGPP - DOS ports of many GNU development utilities
- GCC Cross-Compiler - creating a GCC cross-compiler for your own operating system
- Cross compiling
- Simple DirectMedia Layer (SDL) - a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D
- SDL4Freepascal - a set of FreePascal modules (units) with bindings to the SDL library
- GNU GnuDOS - a library designed to help new users of the GNU system, who are coming from a DOS background
- CWSDPMI - provides DPMI services for V2 of DJGPP
- aPLib - a compression library based on the algorithm used in aPACK
- Nuked-OPL3 - highly accurate Yamaha OPL3 (YMF262, CT1747) emulator
- Linux utilities (package, Debian package) - miscellaneous system utilities
- GNU Core Utilities (package)
- GNU Bash (package) - GNU Bourne Again SHell
- GNU Grep (package) - a non-interactive command-line utility to search for text in files
- GNU sed (package) - a non-interactive command-line text editor
- GNU Make (package) - utility for directing compilation
- GNU Tar (package) - a utility to create tar archives, as well as various other kinds of manipulation
- GNU Gzip (package) - a popular data compression program originally written for the GNU project
- Zip (package) - a compression and file packaging/archive utility
- dos2unix (package) - convert text file line endings between CRLF and LF
- Netpbm - utilities for primitive manipulation of graphic images
- GraphicsMagick (package) - collection of image processing tools
- Cygwin - a large collection of GNU and Open Source tools which provide functionality similar to a Linux distribution on Windows
- MSYS2 - a collection of tools and libraries providing you with an easy-to-use environment for building, installing and running native Windows software
- MinGW - Minimalist GNU for Windows
- MinGW-w64 (package) - an advancement of the original mingw.org project, created to support the GCC compiler on Windows systems
- cmd - command interpreter in Microsoft Windows
- Windows commands
- GNU Midnight Commander (package) - a text-mode full-screen file manager for Unix/Linux
- Far Manager - a free console file manager (NC clone) for Microsoft Windows
- far2l (package) - Linux fork of FAR Manager v2
- The Doszip Commander - a LFN-aware TUI file manager (NC clone) with built-in Zip and UnZip for DOS and Windows
- UPX (package) - efficient live-compressor for executables
- Programmable interrupt controller
- x86 Assembly/Programmable Interval Timer
- Programmable Interval Timer
- VGA Hardware
- VGA Signal Timing
- Hardware Level VGA and SVGA Video Programming Information
- Keyboard scancodes
- TECH Help! - The Electronic Technical Reference Manual
- BIOS Data Area (BDA) - x86 PC memory map
- DOS Protected Mode Interface
- DPMI version 0.9 specification (text format)
- DPMI version 0.9 specification (HTML format)
- VESA BIOS Extensions
- VESA Super VGA BIOS Extension 1.0 - Standard # VS891001, 1 October 1989
- VESA BIOS Extension 1.2 (text)
- VESA BIOS Extension 2.0 (text)
- VESA BIOS Extension 3.0 (PDF)
- Semantic Versioning
- GNU Standards (package) - GNU coding and package maintenance standards
- REUSE SOFTWARE - a set of recommendations to make licensing your projects easier
- The Software Package Data Exchange (SPDX) - an open standard for communicating software bill of material information, including components, licenses, copyrights, and security references