Giter Site home page Giter Site logo

ivan-tat / at2 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ijsf/at2

1.0 0.0 0.0 7.78 MB

[GITHUB MIRROR] Adlib Tracker II is, dare we say, the most userfriendly tracker aimed for the OPL3 FM-chip, and is full of advanced features to simplify your task of making the most of your Adlib-tunes.

Home Page: http://www.adlibtracker.net/

License: GNU General Public License v3.0

Shell 0.15% Pascal 82.22% SourcePawn 0.58% Makefile 1.04% Batchfile 0.01% sed 1.51% C 14.49% C++ 0.01%

at2's Introduction

Adlib Tracker 2

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 for adt2play):
    • 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.

References

Operating systems

Virtual machines (platform emulators)

  • 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

Compilers

Libraries

  • 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

Tools

  • 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

Fonts

Hardware

Documentation

Recommendations

at2's People

Contributors

ivan-tat avatar windfisch avatar subz3ro-altair avatar ijsf avatar

Stargazers

Tobias Seiler avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.