From a31ef00105122f98a2eed64ecbb5c2c33a451508 Mon Sep 17 00:00:00 2001 From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com> Date: Tue, 21 Mar 2023 10:52:21 -0700 Subject: [PATCH] Add -lm to Makefile in 1998/banks Some systems need it to link in libm. Fedora comes to mind as an example; macOS has no problem with it though running this entry under macOS is another matter entirely. --- 1998/banks/Makefile | 2 +- 1998/banks/README.md | 212 +++++++++++++++++++++---------------------- 2 files changed, 107 insertions(+), 107 deletions(-) diff --git a/1998/banks/Makefile b/1998/banks/Makefile index ae0f3d6e1..26d82b7bb 100644 --- a/1998/banks/Makefile +++ b/1998/banks/Makefile @@ -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 diff --git a/1998/banks/README.md b/1998/banks/README.md index 04cfe519a..97dcc9af3 100644 --- a/1998/banks/README.md +++ b/1998/banks/README.md @@ -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 . This file is most likely a - cross-reference to another header, . +Values for the possible keys can be found in the X Windows +header file ``. This file is most likely a +cross-reference to another header, ``. - 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.