Merge pull request #111 from xexyl/1998-banks

Add -lm to Makefile in 1998/banks
This commit is contained in:
Landon Curt Noll authored and GitHub committed 2023-03-21 15:43:51 -07:00
commit 2036c8afc8
2 files changed
+107 -107

No files matched your search

+1 -1
View File
@@ -128,7 +128,7 @@ CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT}
#
#LIBS=
#LIBS= -lm
LIBS= -L ${X11_LIBDIR} -lX11
LIBS= -L ${X11_LIBDIR} -lX11 -lm
#LIBS= -L ${HOMEBREW_PREFIX}/lib -lSDL
# C compiler to use
+106 -106
View File
@@ -16,85 +16,81 @@
cat horizon.sc pittsburgh.sc | ./banks
## Judges' comments
## Judges' comments:
What can we say? It's a flight sim done in 1536 bytes of real code.
This one is a real marvel. When people say the size limits are too
tight, well, we can just point them at this one. This program really
pushes the envelope!
What can we say? It's a flight sim done in 1536 bytes of real code.
This one is a real marvel. When people say the size limits are too
tight, well, we can just point them at this one. This program really
pushes the envelope!
The provided Makefile should work; you will need an X-ish system, and
a select() system call. More on building in the author comments.
The provided Makefile should work; you will need an X-ish system, and
a select() system call. More on building in the author comments.
## Author's comments
## Author's comments:
You have just stepped out of the real world and into the
virtual. You are now sitting in the cockpit of a Piper Cherokee
airplane, heading north, flying 1000 feet above ground level.
You have just stepped out of the real world and into the
virtual. You are now sitting in the cockpit of a Piper Cherokee
airplane, heading north, flying 1000 feet above ground level.
Use the keyboard to fly the airplane. The arrow keys represent
the control stick. Press the Up Arrow key to push the stick
forward. Press the left arrow key to move the stick left, and
so on. Press Enter to re-center the stick. Use Page Up and Page
Down increase and decrease the throttle, respectively. (The
rudder is automatically coordinated with the turn rate, so
rudder pedals are not represented.)
Use the keyboard to fly the airplane. The arrow keys represent
the control stick. Press the Up Arrow key to push the stick
forward. Press the left arrow key to move the stick left, and
so on. Press Enter to re-center the stick. Use Page Up and Page
Down increase and decrease the throttle, respectively. (The
rudder is automatically coordinated with the turn rate, so
rudder pedals are not represented.)
On your display, you will see on the bottom left corner three
instruments. The first is the airspeed indicator; it tells you
how fast you're going in knots. The second is the heading
indicator, or compass. 0 is north, 90 is east, 180 is south,
270 is west. The third instrument is the altimeter, which
measures your height above ground level in feet.
On your display, you will see on the bottom left corner three
instruments. The first is the airspeed indicator; it tells you
how fast you're going in knots. The second is the heading
indicator, or compass. 0 is north, 90 is east, 180 is south,
270 is west. The third instrument is the altimeter, which
measures your height above ground level in feet.
--------
Features
--------
--------
Features
--------
* Simulator models a Piper Cherokee, which is a light,
single-engine propeller driven airplane.
* Simulator models a Piper Cherokee, which is a light, single-engine propeller
driven airplane.
* The airplane is modeled as a six degree-of-freedom rigid
body, accurately reflecting its dynamics (for normal flight
conditions, at least).
* The airplane is modeled as a six degree-of-freedom rigid body, accurately
reflecting its dynamics (for normal flight conditions, at least).
* Fly through a virtual 3-D world, while sitting at your X
console.
* Fly through a virtual 3-D world, while sitting at your X console.
* Loadable scenery files.
* Loadable scenery files.
* Head-up display contains three instruments: a true airspeed
indicator, a heading indicator (compass), and an altimeter.
* Head-up display contains three instruments: a true airspeed indicator, a
heading indicator (compass), and an altimeter.
* Flight controls may be mapped to any keys at compile time
by redefining the macros in the build file. Nice if your
keyboard doesn't have arrow keys. (Or if you still use
vi. :-)
* Flight controls may be mapped to any keys at compile time by redefining the
macros in the build file. Nice if your keyboard doesn't have arrow keys. (Or
if you still use vi. :-)
* Time step size can be set at compile time. This is useful to
reduce flicker on network X connections. (But be careful:
step sizes longer than about 0.03 seconds tend to have
numerical stability problems.)
* Time step size can be set at compile time. This is useful to reduce flicker
on network X connections. (But be careful: step sizes longer than about 0.03
seconds tend to have numerical stability problems.)
* Airplane never stalls!
* Airplane never stalls!
* Airplane never runs out of fuel!
* Airplane never runs out of fuel!
* Fly underground!
* Fly underground!
* Fly through buildings!
* Fly through buildings!
-------
Scenery
-------
-------
Scenery
-------
Each of the *.sc files is a scenery file. The simulator
program reads in the scenery from standard input on startup.
You may input more than one scenery file, as long as there are
less than 1000 total lines of input.
Each of the `*.sc` files is a scenery file. The simulator
program reads in the scenery from standard input on startup.
You may input more than one scenery file, as long as there are
less than 1000 total lines of input.
Here is a brief description of the scenery files:
Here is a brief description of the scenery files:
horizon.sc -- A horizon, nothing more. You will probably
always want to input this piece of scenery.
@@ -113,75 +109,79 @@
river.sc -- Follow a flowing river from the sky.
A few examples of how to input scenery:
A few examples of how to input scenery:
cat horizon.sc pittsburgh.sc | ./banks
cat mountains.sc bb.sc | ./banks
cat mountains.sc river.sc pyramids.sc | ./banks
You can simulate flying through a cloud bank as well:
You can simulate flying through a cloud bank as well:
./banks < /dev/null
You will usually want at least a horizon, though.
The format of scenery files is simple, by the way. They're just
a list of 3-D coordinates, and the simulator simply draws line
segments from point to point as listed in the scenery file. 0 0
0 is used to end a series of consecutive line segments. Note
that in the coordinate system used, the third coordinate
represents altitude in a negative sense: negative numbers are
positive altitudes.
You will usually want at least a horizon, though.
I'm sure you'll be making your own scenery files very soon!!!
The format of scenery files is simple, by the way. They're just
a list of 3-D coordinates, and the simulator simply draws line
segments from point to point as listed in the scenery file. 0 0
0 is used to end a series of consecutive line segments. Note
that in the coordinate system used, the third coordinate
represents altitude in a negative sense: negative numbers are
positive altitudes.
----------------------------
Alternate Build Instructions
----------------------------
I'm sure you'll be making your own scenery files very soon!!!
Several options must be passed to the compiler to make the build
work. The provided build file has the appropriate options set
to default values. Use this section if you want to compile with
different options.
----------------------------
Alternate Build Instructions
----------------------------
To map a key to a control, you must pass an option to the
compiler in the format ``-Dcontrol=key''. The possible controls
you can map are described in the table below:
Several options must be passed to the compiler to make the build
work. The provided build file has the appropriate options set
to default values. Use this section if you want to compile with
different options.
To map a key to a control, you must pass an option to the
compiler in the format `-Dcontrol=key`. The possible controls
you can map are described in the table below:
Control Description Default Key
------- ------------------------- -----------
IT Increase throttle XK_Page_Up
DT Decrease throttle XK_Page_Down
FD Move stick forward XK_Up
BK Move stick back XK_Down
LT Move stick left XK_Left
RT Move stick right XK_Right
CS Center stick XK_Enter
Control Description Default Key
------- ------------------------- -----------
IT Increase throttle XK_Page_Up
DT Decrease throttle XK_Page_Down
FD Move stick forward XK_Up
BK Move stick back XK_Down
LT Move stick left XK_Left
RT Move stick right XK_Right
CS Center stick XK_Enter
Values for the possible keys can be found in the X Windows
header file <X11/keysym.h>. This file is most likely a
cross-reference to another header, <X11/keysymdef.h>.
Values for the possible keys can be found in the X Windows
header file `<X11/keysym.h>`. This file is most likely a
cross-reference to another header, `<X11/keysymdef.h>`.
You must map all seven controls to keys at compile time, or the
compilation will fail.
You must map all seven controls to keys at compile time, or the
compilation will fail.
For example, to map Center Stick to the space-bar, the compile
option would be ``-DCS=XK_space''.
For example, to map Center Stick to the space-bar, the compile
option would be `-DCS=XK_space`.
To set the time step size, you must pass the following option to
the compiler: ``-Ddt=duration'', where dt is literal, and where
duration is the time in seconds you want the time step to be.
To set the time step size, you must pass the following option to
the compiler: `-Ddt=duration`, where `dt` is literal, and where
duration is the time in seconds you want the time step to be.
Two things to keep in mind when selecting a time step. Time
steps that are too large (more than about 0.03) will cause
numerical stability problems and should be avoided. Setting the
time step to be smaller than your clock resolution will slow
down the simulator, because the system pauses for more time than
the simulator expects.
Two things to keep in mind when selecting a time step. Time
steps that are too large (more than about 0.03) will cause
numerical stability problems and should be avoided. Setting the
time step to be smaller than your clock resolution will slow
down the simulator, because the system pauses for more time than
the simulator expects.
The best advice is to set time step size to your system timer
resolution. Try a longer period if you're getting too much
flicker.
The best advice is to set time step size to your system timer
resolution. Try a longer period if you're getting too much
flicker.