"Not retro for nostalgia. Retro for power."
A handcrafted game framework for Turbo Pascal 7.0. Inspired by the raw speed, minimalism and creativity of pre-2000 tools.
The name comes from Positron and 1992 (the year in which TP7 was released), combined to resemble an isotope like Uranium-235 because it sounds cool :D
My goal is to create something like a fantasy computer such as PICO-8 and TIC-80 but uses TP7 because I believe it's fast enough & easier than C.
I'm also inspired by LoveDOS (also, the working fork with the audio working: https://github.com/SuperIlu/lovedos), and TempleOS
Rainfall demo (YouTube):
More demos are inside DEMOS folder
Games that I've made are available on my itch.io page: https://hevanafa.itch.io/
cdto boilerplate,- Call
copy_units.ps1, - Copy all the files inside the
boilerplatedirectory (except forcopy_units.ps1) to your DOS drive
Then, you can use GAME.PAS as the primary file
If you're using DOSBox or DOSBox-X, you can change the cycles setting to 32090 (emulating Pentium 60MHz), that's the setting that I usually use to develop
When releasing a game made with this framework, I recommend you to change the cycles setting to max, and the machine to vgaonly
GAME.PAS: Program starting point
All the demonstrations are placed in DEMOS
ADLIB.PAS: AdLib utilityBITMAP.PAS: Utility for BMP filesBMFONT.PAS: BMFont support utilityBMPROT.PAS: Procedural bitmap rotation & scalingCONV.PAS: Common conversion featuresFPS.PAS: FPS counter utilityGRAPHICS.PAS: Primitives drawing utilityKEYBOARD.PAS: Keyboard utilityLOGGER.PAS: Debug logger utilityMATHS.PAS: Math-related utility functionsMEMORY.PAS: Memory debugging utilityMONOBMP.PAS: 1-bit bitmap support utilityMOUSE.PAS: Mouse utilityMSFNT.PAS: Microsoft bitmap font (FNT) utilityPANIC.PAS: Panic halt utilityPCS.PAS: PC speaker utilitySTRINGS.PAS: String operation utilityTIMING.PAS: Time-related utilityVGA.PAS: Utility for VGA access
If you want the scancodes for the keyboard, you can refer to these lists:
- https://www.freepascal.org/docs-html/rtl/keyboard/kbdscancode.html
- https://www.freebasic.net/wiki/GfxScancodes
All Mode X units are prefixed by an X to differentiate from Mode Y (mode 13h) operations
MODEX.PAS: Base Mode X unitXBITMAP.PASXMOUSE.PAS
Some units have Mode X implementation, which can be activated with the {$DEFINE MODEX} directive, such as FPS.PAS


