A two-player aerial combat game. Fly biplanes, drop bombs, fire cannons, and dogfight against an opponent or an AI over a scrolling landscape — first player to 5 points wins.
Program is distributed as ZIP package: download to temporary directory and unpack to destination folder. See below for download link(s).
Following ones are the download links for manual installation:
| AirStrike v. 1.0 (31/7/2026, Martin Iturbide) | Readme/What's new |
Airstrike test 6
Note that the game is not finished. You can fly around and shoot
things, try out the physics engine etc, but the game is very
repetitive. For installation instructions see INSTALL, for (a little)
code documentation see doc/code.txt and doc/how-it-works.txt
When in the game press ESC for a menu. The game should never crash. If
it does then please send a gdb backtrace to ulfek@ifm.liu.se. You can
check the debug output on stdout and stderr to see if there is a
problem with the data files, or maybe some other error.
There are a few user-configurable options in the file 'airstrikerc',
see that file for more information. At the moment you must edit this
file to turn on sound or to select graphics 'quality'.
See NOTES for more release related info. For things that need to be
done, see doc/TODO.
You can help! If you are good at Povray, have some nice sound effects
to contribute, like to write some (networking?) code or just have some
ideas, please email ulfek@ifm.liu.se.
--Ulf
------------------------------------------------------
Airstrike - ArcaOS / OS/2 Port Notes
======================================
This document covers building and running Airstrike on ArcaOS (and compatible
OS/2 environments) using SDL2 and GCC 9.2 / kLIBC.
The original game was written for Linux with SDL1. This port migrates the
rendering and audio layers to SDL2 and adds the OS/2-specific build support
needed to produce a native PM executable.
Requirements
------------
- ArcaOS 5.x (tested on ArcaOS 5.1 / OS/2 eCS 2.45)
- GCC 9.2 with kLIBC (available via the ArcaOS package manager / RPM)
- SDL2 (SDL2_dll.a + headers under C:/usr/include/SDL2)
- SDL2_image (SDL2_image_dll.a + headers)
- SDL2_mixer (SDL2_mixer_dll.a + headers)
- WLINK (Open Watcom linker, used via EMXOMFLD)
- GNU make
- REXX (standard OS/2 component)
Directory layout
----------------
airstrike.exe Compiled binary
air_os2.txt This file
README.md General readme
compile-air.cmd REXX build script
src/ C source files
src/Makefile.os2 OS/2-specific makefile
src/air.def Module definition file (WLINK)
data/ Game graphics and sound files
Building
--------
Open an OS/2 command prompt (CMD.EXE) in the Airstrike directory and run:
compile-air.cmd
This sets the required environment variables, enters the src/ directory, runs
make with Makefile.os2, and writes the build log to compile-air.log.
The environment variables set by the script are:
EMXOMFLD_TYPE=WLINK
EMXOMFLD_LINKER=wl.exe
EMXOMFLD_PRELINK=0
These are required so that the GCC driver calls WLINK (Open Watcom) rather
than EMXOMFLD for linking, producing a proper OS/2 LX executable.
Compiler flags used:
-O2 -Zomf -Zmt -Wall
-DINLINE=inline -DUSE_SOUND
-Zstack 512 (linker)
The linker requires air.def (included in src/) for the module definition and
BLDLEVEL information.
Running
-------
Run from the Airstrike directory:
airstrike.exe
Configuration is read from airstrikerc in the current directory. Create or
edit this file to set options (see README.md for the full option list).
Example airstrikerc:
sound 1
nr_players 1
screen.width 800
screen.height 600
Controls
--------
Right player (default):
Arrow keys Steer / accelerate
Enter Fire
Left player (default):
W A S D keys Steer / accelerate
Space Fire
Common:
Esc Open in-game menu / pause
S Save screenshot (screenshot.bmp)
Key bindings can be remapped from the Players Setup menu (press Esc in-game).
Port changes from the original SDL1 source
------------------------------------------
The following changes were made to port from SDL1 to SDL2 on OS/2:
1. SDL2 window and surface model
SDL_SetVideoMode() replaced with SDL_CreateWindow() + SDL_GetWindowSurface().
The game continues to use software surfaces (SDL_Surface) for all rendering.
No SDL_Renderer or GPU textures are used.
2. SDL2 API replacements
- SDL_SetVideoMode -> SDL_CreateWindow / SDL_GetWindowSurface
- SDL_UpdateRect -> SDL_UpdateWindowSurface
- SDL_UpdateRects -> SDL_UpdateWindowSurfaceRects
- SDL_DisplayFormat -> SDL_ConvertSurface (matching display format)
- SDL_DisplayFormatAlpha -> SDL_ConvertSurfaceFormat (ARGB8888)
- SDL_SetAlpha -> SDL_SetSurfaceAlphaMod / SDL_SetSurfaceBlendMode
- SDL_SetColorKey -> SDL_SetColorKey (SDL2 signature differs)
- SDL_GetKeyState -> SDL_GetKeyboardState (indexed by scancode)
- SDL_FULLSCREEN -> SDL_WINDOW_FULLSCREEN
- SDL_WM_SetCaption -> window title passed to SDL_CreateWindow
- SDLKey -> SDL_Keycode
3. Dirty-rectangle system
The sprite engine's dirty-rectangle update functions (dirty.c) needed the
SDL_Window* handle to call SDL_UpdateWindowSurface(). A window pointer was
added to the sprite_global struct in sprite.h and populated at startup.
dirty_setup() is re-called after any fullscreen toggle so the system
reflects the new surface dimensions.
4. Keyboard handling
SDL2's SDL_GetKeyboardState() returns an array indexed by SDL_Scancode,
not by SDL_Keycode. The keyboard controller now converts each stored keycode
to a scancode via SDL_GetScancodeFromKey() before indexing the state array.
5. Include paths
All SDL headers updated from <SDL.h> / <SDL_image.h> / <SDL_mixer.h>
to <SDL2/SDL.h> / <SDL2/SDL_image.h> / <SDL2/SDL_mixer.h>.
6. Build system
src/Makefile.os2 added for GCC/kLIBC. Produces .obj (OMF) objects and
links with WLINK via the EMXOMFLD wrapper. compile-air.cmd is a REXX
script with CRLF line endings (required by OS/2 REXX) that automates
the build.
Known issues / limitations
--------------------------
- Fullscreen support depends on the ArcaOS display driver. If toggling
fullscreen from the in-game menu has no effect, your DIVE driver may not
support the requested video mode.
- The game is hard-coded to an 800x600 playing field. Running at a different
screen resolution is not tested on OS/2.
- Sound requires SDL2_MIXER.DLL on the LIBPATH. If sound does not play,
verify SDL2_MIXER.DLL is accessible.
- This is based on Airstrike 1.0 pre6, which is a development snapshot.
Some gameplay features described in the original documentation may be
incomplete.
Contact
-------
Original game: Ulf Ekstrom http://icculus.org/airstrike
ArcaOS port: Martin Iturbide
|
hobbes.os-2.in/download/os2/games-6/action-5/AirStrike_1-0p6_r1.zip |

This work is licensed under a Creative Commons Attribution 4.0 International License.
Add new comment