diff --git a/games/uqm/README b/games/uqm/README index 82c266609f..491e8dc2ae 100644 --- a/games/uqm/README +++ b/games/uqm/README @@ -3,5 +3,18 @@ uqm (port of the 3DO/PC game - Star Control II) The Ur-Quan Masters is a port of the 3DO version of the PC game "Star Control II". It runs on modern operating systems and is 100% free. -You may also want the optional uqm_voice and uqm_3domusic packages, for -a more festive gaming experience. +You may also want the optional uqm_voice, uqm_3domusic and/or +uqm_remixes packages, for a more festive gaming experience. + +Optional dependencies: + +SDL2 - Recommended. Although uqm still supports SDL-1.2, the +release packages for other OSes (Windows and Mac) are built using +SDL2. Autodetected, can be disabled with SDL2=no [*] in the environment. + +OpenAL - Not recommended. OpenAL support in uqm is still experimental. +Not autodetected: use OPENAL=yes in the environment, to enable. + +[*] In addition, for SDL-1.2 builds, OpenGL can be disabled by setting + OPENGL=no in the environment. If you don't know why you might do + this, you almost certainly don't need to! diff --git a/games/uqm/config.state.in b/games/uqm/config.state.in new file mode 100644 index 0000000000..f1775ca235 --- /dev/null +++ b/games/uqm/config.state.in @@ -0,0 +1,14 @@ +CHOICE_debug_VALUE='nodebug' +CHOICE_graphics_VALUE='@GFX@' +CHOICE_sound_VALUE='@SND@' +CHOICE_mikmod_VALUE='internal' +CHOICE_ovcodec_VALUE='standard' +CHOICE_netplay_VALUE='full' +CHOICE_joystick_VALUE='enabled' +CHOICE_ioformat_VALUE='stdio_zip' +CHOICE_accel_VALUE='asm' +CHOICE_threadlib_VALUE='sdl' +INPUT_install_prefix_VALUE='/usr' +INPUT_install_bindir_VALUE='$prefix/bin' +INPUT_install_libdir_VALUE='$prefix/libexec' +INPUT_install_sharedir_VALUE='$prefix/share' diff --git a/games/uqm/icons/128.png b/games/uqm/icons/128.png new file mode 100644 index 0000000000..27553420d0 Binary files /dev/null and b/games/uqm/icons/128.png differ diff --git a/games/uqm/icons/16.png b/games/uqm/icons/16.png new file mode 100644 index 0000000000..7e4fa3d323 Binary files /dev/null and b/games/uqm/icons/16.png differ diff --git a/games/uqm/icons/32.png b/games/uqm/icons/32.png new file mode 100644 index 0000000000..441a81f67b Binary files /dev/null and b/games/uqm/icons/32.png differ diff --git a/games/uqm/icons/48.png b/games/uqm/icons/48.png new file mode 100644 index 0000000000..4cd791e688 Binary files /dev/null and b/games/uqm/icons/48.png differ diff --git a/games/uqm/slack-desc b/games/uqm/slack-desc index 5a02526c97..b5cc6c9e55 100644 --- a/games/uqm/slack-desc +++ b/games/uqm/slack-desc @@ -10,10 +10,10 @@ uqm: uqm (port of the 3DO/PC game - Star Control II) uqm: uqm: The Ur-Quan Masters is a port of the 3DO version of the PC game "Star uqm: Control II". It runs on modern operating systems and is 100% free. -uqm: uqm: This package contains the game executable and documentation, as -uqm: well as the game content (graphics, sound, etc). You may also -uqm: want the optional uqm_voice and uqm_3domusic packages, for a more -uqm: festive gaming experience. +uqm: well as the game content (graphics, sound, etc). uqm: uqm: This package includes game content version @CONTVER@. +uqm: +uqm: Build options: Graphics=@RENDER@, Audio=@AUDIO@ +uqm: diff --git a/games/uqm/uqm.1 b/games/uqm/uqm.1 deleted file mode 100644 index 98412c254a..0000000000 --- a/games/uqm/uqm.1 +++ /dev/null @@ -1,771 +0,0 @@ -.TH "UQM" "1" "The Ur\-Quan Masters" "http://sc2.sourceforge.net" - -.SH NAME -\fBuqm\fR - \fIThe Ur\-Quan Masters\fR, a modern, free port of the -classic PC game \fIStar Control II\fR (aka \fIstarcon2\fR). -.SH SYNOPSIS -\fBuqm\fR \fI[options]\fR -.SH DESCRIPTION -Welcome to the sixth release of the Ur\-Quan Masters port. This -document will tell you everything you need to play, even if you've -never played the original. - -For those of you who have played the original, read the first section -(starting the game and bug reports) and the last sections (Super Melee -and control summary), and you'll be good to go. - -.SH "STARTING THE GAME" - -Simply invoke the \fBuqm\fR executable. -This will use the default settings. The defaults and how to -change them are listed under \fBCOMMAND LINE OPTIONS\fR, below. - -After a splash screen, you will see the main menu, which has five -options: - -.IP "\fINew Game\fR" -Begins a new Full Game. This is a galaxy\-spanning space -adventure full of diplomacy, exploration, combat, high treason, -and low cunning. The introductory cutscenes will set the scene; -the \fBTHE STORY SO FAR\fR section below provides more extensive -backstory for the curious. - -.IP "\fILoad Game\fR" -Restores a Full Game session that was saved earlier. - -.IP "\fISuper Melee!\fR" -Puts the game in Super Melee mode, where you may -hone your space combat skills or challenge your friends to fleet -battles. See the \fBSUPER MELEE\fR section below for details on this -section. - -.IP "\fISetup\fR" -Lets you configure many options to customize your play -experience. Most options will take effect once you exit the setup -menu; a few specially marked options require you to restart UQM. -Setup options are preserved across sessions. The options are -described under \fBCOMMAND LINE OPTIONS\fR, below. - -.IP "\fIQuit\fR" -Exits the program. - -.SH "COMMAND LINE OPTIONS" - -The default options for an UQM install are 3DO music, 640x480 windowed -mode, and pure SDL graphics drivers. You may pass various command line -options to customize your experience. Most of these options are -also accessible from the in\-game \fBSetup\fR menu. -.PP -\fINote:\fR Options set on the command line do not get saved permanently -in the config directory. To permanently change a setting, it must be -changed via the in\-game \fBSetup\fR menu. - -.IP "\fB\-r\fB \fIresolution\fR, \fB\-\-res\fB \fIresolution\fR" -Sets the screen resolution (default \fI640x480\fR). Unless OpenGL is -supported, the only valid values are \fI640x480\fR and \fI320x240\fR; -setting any other value will automatically enable \fB\-\-opengl\fR if -compiled in (otherwise, the \fB\-r\fR option will be ignored). -.PP -\fINote:\fR The in\-game \fBSetup\fR menu normally only allows -\fI320x240\fR, \fI640x480\fR, \fI800x600\fR, and \fI1024x768\fR. To -permanently set some other resolution in the config file, set it with -the \fB\-o\fR and \fB\-r\fR options, then enter and immediately exit -the \fBSetup\fR menu. From then on, starting \fBuqm\fR with no parameters -will enable OpenGL and set the resolution to your custom value. - -.IP "\fB\-f\fR, \fB\-\-fullscreen\fR" -Uses full screen mode. Pretty straightforward. Usually good to -combine with \fB\-r\fR \fI320x240\fR unless you're using a scaler. - -.IP "\fB\-o\fR, \fB\-\-opengl\fR" -Use OpenGL drivers. This produces higher\-quality graphics, and may be -faster as well \-\- but it also may not work on older cards. It also -permits use of any screen resolution. - -.IP "\fB\-c\fR \fImode\fR, \fB\-\-scale\fR \fImode\fR" -Graphics scaling mode (\fIbilinear\fR, \fIbiadapt\fR, \fIbiadv\fR, -\fItriscan\fR, \fIhq or \fInone\fR). -Default is \fInone\fR. Try these to get smoother graphics with cost on -performance. - -.IP "\fB\-b\fR \fImode\fR, \fB\-\-meleezoom\fR \fImode\fR" -Melee zooming mode (\fIpc\fR or \fI3do\fR); \fIstep\fR is an alias for \fIpc\fR and \fIsmooth\fR -is an alias for \fI3do\fR. Default is \fI3do\fR. Slower machine owners can set it -to \fIpc\fR to get better performance in melee. - -.IP "\fB\-s\fR, \fB\-\-scanlines\fR" -Simulates interlaced displays (by drawing every other line with darker colors). - -.IP "\fB\-g\fR \fIvalue\fR, \fB\-\-gamma\fR \fIvalue\fR" -Sets gamma correction (default: \fI1.0\fR). -1.0 causes no change (unless your graphics card -is originally set to a different value). Higher than 1.0 makes the -image brighter, lower than 1.0 makes it darker. - -.IP "\fB\-p\fR, \fB\-\-fps\fR" -Print fps (frames per second) information in the status window. - -.IP "\fB\-C\fR \fIdir\fR, \fB\-\-configdir\fR \fIdir\fR" -Set the directory where the game will store the config data. -Default: \fI~/.uqm\fR - -.IP "\fB\-n\fR \fIdir\fR, \fB\-\-contentdir\fR \fIdir\fR" -Set the directory where the game will seek its data. Default: -\fI/usr/share/uqm/content\fR - -.IP "\fB\-l\fR \fIfile\fR, \fB\-\-logfile\fR \fIfile\fR" -Set a file to receive the diagnostic information that would otherwise go -to the console. - -.IP "\fB\-h\fR, \fB\-\-help\fR" -Display a help message. - -.IP "\fB\-M\fR \fIlevel\fR, \fB\-\-musicvol\fR \fIlevel\fR" -Set music volume (0\-100). - -.IP "\fB\-S\fR \fIlevel\fR, \fB\-\-sfxvol\fR \fIlevel\fR" -Set sound effects volume (0\-100). - -.IP "\fB\-T\fR \fIlevel\fR, \fB\-\-speechvol\fR \fIlevel\fR" -Set speech volume (0\-100). If set to 0, the game runs in 'no speech' -mode and the oscilloscope reacts to the music. - -.IP "\fB\-m\fR \fItype\fR, \fB\-\-music\fR \fItype\fR" -Set the soundtrack type (default: \fI3do\fR). Valid values for \fItype\fR are -\fI3do\fR (use the 3DO remixed soundtrack for songs that were in fact remixed), -and \fIpc\fR (use the .MOD based PC soundtrack everywhere). - -.IP "\fB\-q\fR \fIquality\fR, \fB\-\-audioquality\fR \fIquality\fR" -Can be \fIhigh\fR, \fImedium\fR, or \fIlow\fR. Specifies how nice the audio -sounds. Slower machines should lower the audio quality. - -.IP "\fB\-\-addon\fR \fIname\fR" -Replace \fIname\fR with the name of an add\-on to enable in the game. See -the section \fBADD\-ONS\fB below for details. - -.IP "\fB\-\-sound\fR \fImixer\fR" -Can be \fIopenal\fR, \fImixsdl\fR or \fInone\fR. Specifies which driver/mixer -to use. \fIopenal\fR is only available when it has been compiled in. -It may produce higher\-quality sound and will probably be faster, -but it is not very stable on linux platforms, and may not work -well with some sound cards. -Use \fInone\fR as a last resort if you cannot get other drivers to work, -or if you have no soundcard. - -.IP "\fB\-\-stereosfx\fR" -Enables positional sound effects in melee. Currently works only when -using \fB\-\-sound openal\fR. - -.IP "\fB\-n\fR, \fB\-\-nosubtitles\fR" -Disables subtitles. - -.IP "\fB\-\-cscan\fR \fIpc\fR" -Use PC style planet information when scanning (text). Default. - -.IP "\fB\-\-cscan\fR \fI3do\fR" -Use 3DO style planet information when scanning (pictograms). - -.IP "\fB\-\-menu\fR \fIpc\fR" -Use PC style menus (text) and 'CREW'/'BATT' in melee instead of icons. -Default. - -.IP "\fB\-\-menu\fR \fI3do\fR" -Use 3DO style menus (pictograms). - -.IP "\fB\-\-font\fR \fIpc\fR" -Use PC style fonts and colors. -Default. - -.IP "\fB\-\-font\fR \fI3do\fR" -Use 3DO style fonts and colors. - -.IP "\fB\-\-scroll\fR \fIpc\fR" -Scroll voice\-over/subtitles 1 page at a time when using left/right arrow keys -Default. - -.IP "\fB\-\-scroll\fR \fI3do\fR" -Scroll voice\-over/subtitles smoothly while holding down left/right arrow keys - -.IP "\fB\-i\fR \fI3do\fR, \fB\-\-intro\fR \fI3do\fR" -Use the 3DO intro and ending movies (if you have them). -The default. - -.IP "\fB\-i\fR \fIpc\fR, \fB\-\-intro\fR \fIpc\fR" -Use the PC intro and ending sequences and slide shows. These will be also -played if you do not have 3DO movies, regardless of \fB\-i\fR option. - -.IP "\fB\-\-shield\fR \fIpc\fR" -Use PC style static slave shield graphic. -Default. - -.IP "\fB\-\-shield\fR \fI3do\fR" -Use 3DO style throbbing slave shield graphic. This somewhat increases the -load on CPU while in orbit. Do not use if your CPU cannot handle that. - - -.SH "NOT OFFICIALLY SUPPORTED OPTIONS" - -The following options may not exist in all builds and can change without -notice at any time. - -.IP "\fB\-\-accel\fR \fItype\fR" -Can be \fInone\fB, \fIdetect\fB, \fImmx\fB, \fI3dnow\fB, \fIsse\fB -(also \fIaltivec\fB if/when -added; or other platforms). Specifies which platform accelerations -to use for graphics and sound, if any. All specific platform code can -only be used when compiled in. - -.IP "\fB\-\-netport1\fR \fIport\fR" -.IP "\fB\-\-netport2\fR \fIport\fR" -Specifies the default port that the bottom or top player respectively -will connect to or accept incoming connections on. If this parameter -is not specified, \fI21837\fR will be used. This value can be changed later -in the SuperMelee Net menu. Your firewall needs to be set up to allow -TCP connections from/to the used port. - -.IP "\fB\-\-nethost1\fR \fIhost\fR" -.IP "\fB\-\-nethost2\fR \fIhost\fR" -Specifies the default name or ip number of the host to connect to for -the bottom or player. If this parameter is not specified, UQM will -not attempt an outgoing connection, but instead listen for an incoming -connection. - -.IP "\fB\-\-netdelay\fR \fIframes\fR" -Set the default input delay (in frames). See the \fBSUPER MELEE\fR section -for details. - -.SH "THE STORY SO FAR" -For the past decade, Earth and the rest of the Alliance of Free Stars -has fought the Ur\-Quan and their Hierarchy of Battle Thralls. In the -course of the War, the Earthlings discovered a factory world of the -\fBPrecursors\fR \- an impossibly advanced that disappeared tens of -thousands of years ago. This colony, Unzervalt (aka Vela I), lost all -contact with Earth shortly after landfall. - -You are Captain Zelnick, a human that was born on Unzervalt and who -possesses a remarkable knack for Precursor technology. You were the -one who worked out how to activate the Precursor installation. - -It was a factory for building starships. However, Unzervalt is -mineral\-poor, and there were not enough materials available to -construct a complete vessel. Your task is to command this craft, the -Vindicator, and return to Earth to tell them of the abandoned colony. -Also, if the War with the Ur\-Quan continues, you must fight for Earth -and the Alliance as best you can. - -There is a great deal more to this story. Asking Starbase Commander -Hayes for background information will give you most of it. - -.SH "INTERPLANETARY EXPLORATION" - -When in a Solar system, use the thrust and steering controls to move -about the system. Intersecting a planet will move you to the -planetary system; flying over a planet or moon will then put you into -orbit. From there you can talk to the inhabitants, or, if the planet -is uninhabited, send a lander down to gather minerals, investigate -energy readings, or capture life forms. - -.SH "PLANET LANDING" - -To land on a planet, you need to achieve orbit, then fill a planet -lander with crew and send them down. You will usually want to scan -the planet first. Mineral scans will indicate easily harvestable -mineral ores and other resources. Energy scans will indicate unusual -installations, which will effectively always be worth investigating. -Biological scans will show where life forms are on the surface. - -Minerals are necessary for building up and maintaining your flagship, -so harvest them wherever you can. There are nine varieties, each -color coded: - -\fBCOMMON ELEMENTS\fR (\fIcarbon\fR, \fInitrogen\fR) are cyan. Worth 1 resource unit -(RU) per unit. - -\fBCORROSIVES\fR (\fIchlorine\fR, \fIiodine\fR) are red. 2 RU per unit. - -\fBBASE METALS\fR (\fIiron\fR, \fItin\fR) are grey. These are common, and usually worth -harvesting, but not terribly valuable. 3 RU per unit. - -\fBNOBLE GASSES\fR (\fIargon\fR, \fIxenon\fR) are blue. 4 RU per unit. - -\fBRARE EARTHS\fR (\fIlanthanum\fR, \fIytterbium\fR) are green. 5 RU per unit. - -\fBPRECIOUS ELEMENTS\fR (\fIgold\fR, \fIsilver\fR) are yellow. 6 RU per unit. - -\fBRADIOACTIVES\fR (\fIuranium\fR, \fIastatine\fR) are orange. 8 RU per unit. - -\fBEXOTICS\fR (\fIantimatter\fR, \fImagnetic monopoles\fR) are purple, and a princely 25 -RU per cargo unit. - -Minerals may be unloaded at Earth Starbase by talking to Commander -Hayes, which will give you RU that you may spend to upgrade your -flagship. - -However, there are many hazards on planetary surfaces. Life forms are -often hostile, and need to be subdued with your stunner or evaded. -Earthquakes (expanding circles) can hurt your crew, lightning may -crisp them, or lava flows and hotspots can fry them. Be careful, -especially on hotter or more seismically and atmospherically active -worlds. If your crew level starts dropping dramatically, flee quickly -with the ESCAPE key! - -Stunned life forms may be captured and analyzed by your planet -landers. The information you gain from this may not be immediately -useful, but it will eventually come in handy. - -Landing on a planet costs fuel, and the heavier the planet, the more -fuel it requires. Make sure you don't spend so much fuel exploring -planets that you can't get back to Sol! - -.SH "INTERSTELLAR TRAVEL" - -When you leave a solar system, you will push up into HyperSpace. In -HyperSpace you can travel great distances quickly, but you must -continuously thrust to move. Otherwise, you will gradually slow to a -stop. - -While you can fly about in HyperSpace just like you do in a star -system, the Galaxy is LARGE, and you will usually want to use the -Auto\-Pilot. To use the Auto\-Pilot, select "Starmap" on the menu. -This will show you a map of the quadrant (the galactic Core is in the -upper right corner). To fly to a location, move the cursor there and -press Enter. Then press Space to engage the Auto\-Pilot. - -.SH DIPLOMACY - -When you encounter an alien starship, you will usually get a picture -of their task force and a chance to choose between conversation and -fighting. If you choose to fight, you will transition immediately to -space combat (below). Otherwise, you will talk first. If talks go -poorly, space combat will likely ensue. - -If the task force shows ships streaming off in all directions, you -have reached a fortified world, and there are an unlimited number of -starships facing you. You cannot win such a fight \- if combat ensues, -you will need to warp out. - -.SH "SPACE COMBAT" - -When combat begins, you are prompted to select a ship from your task -force. A one\-on\-one space combat then begins, and continues until -either the enemy fleet is destroyed (in which case you salvage the -wrecks and continue the game), your flagship is destroyed (ending the -game), or your flagship warps out of combat (consuming 5 fuel units -but ending the encounter). - -Each ship has two major stats: Crew and Combat Battery. Crew are -effectively hit points. Getting hit by weapons kills crew, and if all -crew are eliminated, the craft is destroyed. Firing weapons typically -requires energy from the combat batteries, which is replaced over -time. The precise speed of energy regeneration and cost of weapons -fire varies by ship. - -Space flight is \fImostly\fR inertial (you'll drift if you stop -thrusting), but each ship has a maximum velocity that can only be -exceeding by "gravity whipping" around the planet. Don't hit the -planet unless you want to take LOTS of damage. - -Each ship has a primary and secondary weapon mode, unique to that -race's craft. The descriptions of those follow. - -.SH "SHIP DESCRIPTIONS" - -.IP "Androsynth Guardian" -Primary weapon: Fires homing acid bubble clouds. -.br -Secondary weapon: Transforms into the 'Blazer', a comet that does -considerable damage by ramming its opponents. - -.IP "Ariloulaleelay Skiff" -Primary weapon: Auto\-aiming, short\-range laser -.br -Secondary weapon: Random teleport -.br -Note: The Skiff is inertia\-less, and stops instantly when thrust is -removed. - -.IP "Chenjesu Broodhome" -Primary weapon: Crystal Shard. Will travel until the fire button is -released, then shatters. -.br -Secondary weapon: De\-energizing Offensive Guided Interceptor. -Launches an autonomous DOGI that rams the opponent to drain their -combat batteries. - -.IP "Chmmr Avatar" -Primary weapon: Immensely powerful short\-range laser -.br -Secondary weapon: Tractor beam. -.br -Note: Has three orbiting "ZapSats" that attack anything that gets in -range. - -.IP "Druuge Mauler" -Primary weapon: Long range, high\-recoil cannon -.br -Secondary weapon: Sets one crew on fire to gain combat energy. - -.IP "Earthling Cruiser" -Primary weapon: Homing nuclear missile -.br -Secondary weapon: Point\-defense laser - -.IP "Ilwrath Avenger" -Primary weapon: Short\-range flamethrower -.br -Secondary weapon: Cloaking device - -.IP "Kohr\-Ah Marauder " -Primary weapon: Spinning blades that stop and home when the fire -button is released -.br -Secondary weapon: Fiery Ring of Inevitable and Eternal Destruction -(F.R.I.E.D.), a short\-range corona of energy that blocks shots and -inflicts lots of damage - -.IP "Melnorme Trader" -Primary weapon: Charged shot. The longer the fire button is held, the -stronger the shot. -.br -Secondary weapon: Confusion beam that scrambles enemy controls. - -.IP "Mmrnmhrm X\-Form" -Primary weapon: Lasers (X\-form) or homing missiles (Y\-form). -.br -Secondary weapon: Switch between X\-Form and Y\-Form. - -.IP "Mycon Podship" -Primary weapon: Homing Plasmoid. -.br -Secondary weapon: Regenerate 4 crew. - -.IP "Orz Nemesis" -Primary weapon: Howitzer cannon. -.br -Secondary weapon: Secondary with left and right arrows rotates the -primary cannon. Secondary with Primary launches space marines that -invade the enemy ship and kill their crew. - -.IP "Pkunk Fury" -Primary weapon: Three\-way cannon -.br -Secondary weapon: Fling insults at opponent. This is the only way the -Pkunk can regenerate combat energy. -.br -Note: On occasion, a destroyed Fury will be resurrected with full fuel -and power. - -.IP "Shofixti Scout" -Primary weapon: Energy Dart. -.br -Secondary weapon: Glory Device. When pressed three times, the ship -will self\-destruct, inflicting vast damage on nearby vessels. - -.IP "Slylandro Probe" -Primary weapon: Lighting weapon. -.br -Secondary weapon: Absorb a nearby asteroid and convert to combat -power. This is the only way the Probe can recharge. -.br -Note: The Probe is inertia\-less and always in motion. Pressing thrust -will reverse its direction. - -.IP "Spathi Eluder" -Primary weapon: Simple forward cannon. -.br -Secondary weapon: Backward Utilized Tracking Torpedo (B.U.T.T.), a -homing missile fired from the rear of the vessel. - -.IP "Supox Blade" -Primary weapon: Forward firing glob weapon -.br -Secondary weapon: Secondary + left or right will cause you to drift -laterally, while Secondary + thrust will make you fly backwards. This -cancels your current velocity, so be careful! - -.IP "Syreen Penetrator" -Primary weapon: Particle Beam Stiletto. -.br -Secondary weapon: "Syreen Call" \- psychic attack that induces enemy -crew to jump ship, where you (or your opponent) may capture them to -add to your complement - -.IP "Thraddash Torch" -Primary weapon: Straightforward blaster cannon. -.br -Secondary weapon: Afterburner. The afterburner exhaust does more -damage then the blaster, so use it as a weapon! - -.IP "Umgah Drone" -Primary weapon: Anti\-Matter cone. Does not require combat batteries to use. -.br -Secondary weapon: Fly backwards suddenly and at high speed. -.br -Note: The Drone only recharges batteries if you do not fire for a long -time, and then the energy all returns in one lump. - -.IP "Ur\-Quan Dreadnought" -Primary weapon: Fusion Blast. -.br -Secondary weapon: Launches autonomous fighters to harrass the enemy. -When they run low on fuel, they will fly back to the Dreadnought. -Catch them before they expire. Each fighter requires one crew to -pilot it, so take care not to weaken the core ship. - -.IP "Utwig Jugger" -Primary weapon: Six\-shot cannon. Requires no combat battery energy to fire. -.br -Secondary weapon: Force shield. Absorbing hits re\-energizes your -batteries. When the batteries are exhausted, the shield is -permanently disabled until combat ends. - -.IP "VUX Intruder" -Primary weapon: Gigawatt laser. -.br -Secondary weapon: Limpet mines that track enemy ships and slow them -down dramatically if they hit. - -.IP "Yehat Terminator" -Primary weapon: Twin autocannons. -.br -Secondary weapon: Force shield. - -.IP "Zoq\-Fot\-Pik Stinger" -Primary weapon: Anti\-matter spray gun. -.br -Secondary weapon: "Tongue attack", a point\-blank range attack that -does grievous damage. - -.SH "SUPER MELEE" - -Super Melee mode is pure combat. It's designed to let you hone your -skills for the full game, or to challenge your friends to fleet -matches. Selecting "Super Melee!" from the main menu will bring you -to the super melee main screen. - -This screen is dominated by the fleet design screen. Move the cursor -over a ship slot and press ENTER to change the ship assignment, or -press DELETE to remove the ship. You may select the fleet name and -press ENTER to edit the fleet name to something of your choice. The -number next to the fleet name lists the fleet strength; this is simply -the sum of the point values of all ships in the fleet. - -The right hand side of the screen has buttons for managing the battle. -Each side has four buttons associated with it: LOAD, SAVE, CONTROL, -and NET. The LOAD and SAVE buttons let you load and save fleets. A -variety of fleets of various strengths are pre\-defined, and you may -add your own by saving fleets you design. - -The CONTROL button has one of five settings. HUMAN CONTROL puts the -fleet under the control of a human player. (The precise controls for -that player are set in the Setup menu, but the bottom player's -controls are always the same as the full game's controls.) Then there -are three levels of computer control: - -\fBWEAK CYBORG\fR is not a particularly good shot, and will only use -special weapons if the ship absolutely requires the special weapon -to function at all (Pkunk, Slylandro). This difficulty level only -appears in the full game when fighting crippled ships. - -\fBGOOD CYBORG\fR will actually use its special weapon, but it's still -not much of a threat. The Good cyborg provides a gentle -introduction to Star Control combat if you are unfamiliar with the -gameplay. However, you will soon wish to switch to... - -\fBAWESOME CYBORG\fR. The AI will fully exploit each ship's abilities, -and is also a tolerably good shot, compensating for inertia and -choosing its shots. Enemies you meet in the full game are almost -always piloted at this level. If a battle is giving you trouble -in the full game, this is the setting you want. - -The last control option is \fBNETWORK CONTROL\fR, which will be set if that -side is controlled by a non\-local opponent. To set up a network game, -push the NET button on the side you wish to be under your opponent's -control. - -In order to connect, you must agree on a port (the default is \fB21837\fR, -which should not require any change) and set a net delay in frames. -To compensate for network lag, a keypress or keyrelease will only take -effect after this many frames. While higher values make your ship -seem to respond more sluggishly, they give the keypress information -more time to reach the remote party. If the game stutters, this is -because it is waiting for this keypress information to arrive, which -is an indication that the input delay is too low. Super Melee runs at -24 frames per second, each frame delayed will delay the input by about -42ms. The delay used is the maximum of the desired value for both -parties. The default is 2. Values lower than 4 are typically -acceptable in terms of responsiveness. Future versions may -automatically decide on the best value to use. - -Once the port and delay are set, one player must select the first -option (Wait for incoming connection), while the other enters his -opponent's hostname or IP address into the Host field and then pushes -"Connect." Once the connection is established, the control scheme for -the remote player will flip to NETWORK CONTROL to register the -connection. To disconnect, change it away back to one of the HUMAN or -CYBORG options. Once connected, you are both free to edit your fleets -to provide a properly balanced battle. - -Once all fleets are in readiness, press the BATTLE button in the -center right. (In a network game, both players must select it with no -intervening fleet edits. Moving away from BATTLE or having your -opponent change their fleet will cancel your readiness state, and you -will need to reselect the BATTLE button.) When all players are ready, -the battle begins. - -The ship selection screen is much as it would be in the full game, -with two notable exceptions: a question mark in the upper right allows -you to select a new ship randomly from those remaining, and a red X -allows you to exit the combat entirely. (It is also possible to exit -the melee at any time by pressing F10, just as one can exit anything.) -If nobody quits, the combat will continue until one side has been -completely destroyed. At this point, both fleets are shown so that -one may compare initial and remaining fleet strengths. Press a key to -return to the melee menu. - -To return to the main menu after finishing with Super Melee mode, push -the QUIT button in the lower right. - -.SH "GENERAL GAME CONTROLS SUMMARY" -.nf -F1 or PAUSE Pause game -F10 Exit game -.fi - -.SH "FULL GAME CONTROLS SUMMARY" - -.nf - Space flight - -UP Thrust -LEFT and RIGHT: Steer -SPACE or RIGHT SHIFT: Main menu - - Menus - -Arrow Keys: Scroll through selections -ENTER or RIGHT CTRL: Make selection -SPACE or RIGHT SHIFT: Up one level - - Conversations - -LEFT and RIGHT: Rewind/Forward -UP and DOWN: Scroll through selections -ENTER or RIGHT CTRL: Make selection -SPACE or RIGHT SHIFT: Skip, Show/Hide summary - - Star Map - -Arrow Keys: Move the crosshair -ENTER or RIGHT CTRL: Select destination -SPACE or RIGHT SHIFT: Main menu -Keypad +: Zoom in -Keypad \-: Zoom out -/ (not on the keypad): Begin search. - (Type star or constellation name to - find matches) -TAB: Jump to next match. - - Space Combat - -UP: Thrust -LEFT and RIGHT: Steer -RIGHT CTRL or ENTER: Fire Primary Weapon -RIGHT SHIFT: Fire Secondary Weapon -ESCAPE: Emergency Warp Escape - - - Planet Exploration - -UP: Forward -LEFT and RIGHT: Steer -RIGHT CTRL or ENTER: Fire stun bolt -RIGHT SHIFT or ESCAPE: Blast off -.fi - -.SH "MELEE CONTROLS SUMMARY" - -.nf - Top Player - -W: Thrust -A and D: Steer -V: Fire Primary Weapon -B: Fire Secondary Weapon - - Bottom Player - -UP or ENTER: Thrust -LEFT and RIGHT: Steer -RIGHT CTRL or ENTER: Fire Primary Weapon -RIGHT SHIFT: Fire Secondary Weapon -.fi - -These controls are configurable from the Setup Menu. You may define -up to six "Input Templates" and assign a template to either or both -players. Some commonly used key configurations are pre\-defined, as -well as popular variants. To change key bindings, select the binding -you wish to change and press ENTER. At the dialog box, press the key -(or joystick gesture) that you wish to assign to this action. - - -.SH "SAVED GAMES" - -The saved games are kept in your personal directory for uqm data. -This directory is automatically created the first time you start the -game. On Unix systems this personal uqm data is stored in \fB~/.uqm\fB. - -You will generally only need this if you intend to transfer savegames -to another computer. Note that currently games saved on an PowerPC Mac -will not work on a PC (or an Intel Mac), and vice versa. AMD64 and -Intel savegames may be safely transferred. - -.SH "ADD\-ONS" - -As of version 0.3, The Ur\-Quan Masters has basic support for add\-on -packages. Though it is not very elaborate yet, you can install some -content add\-ons. - -Inside the directory where the content is installed, in the content/packages/ -directory, there is a directory 'addons/'. In this directory, you can -create new directories with .zip files to be used in addition to the -standard content .zip files. -When you specify the command\-line option '\-\-addon ', the .zip files -inside the directory content/packages/addons/ will be included -in the game. '\-\-addon' may be specified more than once to enable multiple -add\-ons. - -.SH "BUG REPORTS" - -After several years of enthusiastic testing, UQM has dramatically -improved its stability, but it is still beta software, and bugs -certainly still lurk. Upon finding a problem, we'd like you to report -it, but before you do, please do the following: - -\- Try to isolate what causes it: "Crashes with a null dereference -about half the time when firing and taunting with a Pkunk" is better -than "Melee doesn't work." If the game crashes, notice what error -is produced; if the game hangs, check to see if the game\-exit key -(F12) works. - -\- Go to the bug database at http://bugs.uqm.stack.nl/ -and post a report of the problem there. Search the database first if -it has been already posted; if we get many duplicate reports, processing -them eats our time from actual development. If it's been reported, and -you have more information, feel free to confirm that you've reproduced it -by adding a comment to the report. If ten people have already confirmed it, -though, it's probably best to treat it as duly reported. - -\- Whenever possible, for bugs that only occur under certain conditions, -include a save game with your bug report that duplicates the bug. -In the case of a crash, a stack trace can be very helpful for us too. -If you don't know what a stack trace is, don't worry about it. - -\- If your issue is more like "support request" than bug report and you -want help from other users, then posting it to our forum might be -more appropriate: http://uqm.stack.nl/forum/ - -.SH "SEE ALSO" -The full documentation in \fB/usr/doc/uqm-0.6.3\fR -.br -The official Ur-Quan Masters web site at \fBhttp://sc2.sourceforge.net/\fR diff --git a/games/uqm/uqm.SlackBuild b/games/uqm/uqm.SlackBuild index 1e7ff55891..b59c0ab660 100644 --- a/games/uqm/uqm.SlackBuild +++ b/games/uqm/uqm.SlackBuild @@ -6,13 +6,18 @@ # Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details. +# 20210304 bkw: update for v0.8.0. script changed a good bit, can't +# build older versions. Note to self: don't mix engine and content +# versions without testing thoroughly! 0.7.0 engine seemed to work +# with 0.8.0 content, but crashed when trying to enter the setup menu! + # 20201025 bkw: update build for new content pack 0.8.0. This mostly # has fixes for typos in the in-game text strings. The game engine # hasn't changed, so VERSION now has both versions. Also, moved # the binary to /usr/games where it belongs. PRGNAM=uqm -VERSION=${VERSION:-0.7.0+0.8.0} +VERSION=${VERSION:-0.8.0} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} @@ -51,57 +56,81 @@ fi set -e +# Starting with 0.8.0, we have options to use SDL2 and +# OpenAL. Upstream made SDL2 the default, so we'll use it if +# available (autodetect). However, OpenAL is labelled 'experimental' +# and disabled by default, so we'll require OPENAL=yes to enable it +# (if present). + +if pkg-config --exists sdl2; then + SDL2DEF=yes +else + SDL2DEF=no +fi + +SDL2=${SDL2:-$SDL2DEF} +OPENGL=${OPENGL:-yes} + +case "$SDL2-$OPENGL" in + yes-*) GFX=sdl2 ;; # SDL2 builds always support OpenGL + no-no) GFX=pure ;; + no-yes) GFX=opengl ;; + *) echo "*** Invalid SDL2 and/or OPENGL values, use only 'yes' or 'no'" 1>&2 + exit 1 ;; +esac + +case "${OPENAL:-no}" in + yes) SND=openal ;; + no) SND=mixsdl ;; + *) echo "*** Invalid OPENAL value $OPENAL, use only 'yes' or 'no'" 1>&2 + exit 1 ;; +esac + rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP rm -rf $PRGNAM-$SRCVER -tar xvf $CWD/$PRGNAM-$SRCVER-source.tgz +tar xvf $CWD/$PRGNAM-$SRCVER-src.tgz cd $PRGNAM-$SRCVER chown -R root:root . find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+ -# uqm uses a custom build.sh to configure and build the source. -# It's not a bad system, but it's interactive only, meaning I have -# to script answers to the build.sh prompts, hence build_config(). - +# Previously this script ran the interactive config, piping responses to it. +# This is a cleaner way to do it. # WARNING: If you're updating this SlackBuild for a new version of -# uqm, check and make sure the build.sh options haven't changed! +# uqm, check and make sure the config.state options haven't changed! +sed -e "s,@GFX@,$GFX," \ + -e "s,@SND@,$SND," \ + $CWD/config.state.in \ + > config.state +# reprocess_config creates build.vars based on choices in config.state +sh build.sh uqm reprocess_config + +# For the other options in config.state, we take the defaults. # It'd be more efficient to require a system-wide libmikmod instead of # using the included (statically linked) one, but it's not that big # a library, and this way we don't have any external dependencies. -build_config() { - echo 1 # Top-level menu option 1: Build type... - echo 1 # type 1 = release - echo 2 # Top-level menu option 2: OpenGL support... - echo 2 # 1 = Don't include, 2 = Include OpenGL graphics support - echo 4 # Top-level menu option 4: Tracker music support - echo 1 # 1 = included libmikmod, 2 = system libmikmod - echo 11 # Top-level menu option 11: Installation paths... - # (N.B. option 11 was option 10 in uqm 0.6.2) - echo 1 # Option 1 = Installation prefix - echo /usr # New value: - echo 3 # Option 3 = Location for non-sharable data - # New value: - echo \$prefix/libexec - echo # ENTER; back to top-level menu - echo # ENTER at top-level menu = done -} +# Use our flags. +sed -i "s/-O3/$SLKCFLAGS/" build.vars -build_config | sh build.sh uqm config -sed -i -e "s/-O3/$SLKCFLAGS/" -e '/LDFLAGS/s,-lz,-lz -lm,' build.vars +# Actually compile the thing. sh build.sh uqm -strip $PRGNAM +# "sh build.sh uqm install" would install it, but it doesn't look like +# DESTDIR works (?). Manual install does. + +# Real game binary lives in libexec. mkdir -p $PKG/usr/libexec/$PRGNAM -cp -a $PRGNAM $PKG/usr/libexec/$PRGNAM +install -s -m0755 -oroot -groot $PRGNAM $PKG/usr/libexec/$PRGNAM +# Shell script wrapper tells the real binary where to find the content. mkdir -p $PKG/usr/games -cat $PRGNAM-wrapper > $PKG/usr/games/$PRGNAM -chmod 0755 $PKG/usr/games/$PRGNAM +install -oroot -groot -m0755 $PRGNAM-wrapper $PKG/usr/games/$PRGNAM +# Include (mostly) empty content and addons dirs in the package. mkdir -p $PKG/usr/share/$PRGNAM/content/{addons,packages} cp content/version $PKG/usr/share/$PRGNAM/content @@ -109,15 +138,42 @@ cp content/version $PKG/usr/share/$PRGNAM/content cat $CWD/$PRGNAM-$CONTVER-content.uqm > \ $PKG/usr/share/$PRGNAM/content/packages/$PRGNAM-$CONTVER-content.uqm -# Man page created for SBo (it's basically the README + roff markup) -mkdir -p $PKG/usr/man/man1 -gzip -9c $CWD/$PRGNAM.1 > $PKG/usr/man/man1/$PRGNAM.1.gz +# Use upstream's man page (used to ship our own). +mkdir -p $PKG/usr/man/man6 +gzip -9c doc/users/$PRGNAM.6 > $PKG/usr/man/man6/$PRGNAM.6.gz -# .desktop and icon borrowed from Debian +# .desktop borrowed from Debian mkdir -p $PKG/usr/share/applications cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop + +# icons converted from "src/res/darwin/The Ur-Quan Masters.icns", +# with icns2png. +for i in $CWD/icons/*.png; do + size="$( basename $i .png )" + dir="$PKG/usr/share/icons/hicolor/${size}x${size}/apps" + mkdir -p "$dir" + cat $i > $dir/$PRGNAM.png +done + +# old-style icon mkdir -p $PKG/usr/share/pixmaps -cat $CWD/$PRGNAM.xpm > $PKG/usr/share/pixmaps/$PRGNAM.xpm +ln -s ../icons/hicolor/48x48/apps/$PRGNAM.png $PKG/usr/share/pixmaps/$PRGNAM.png + +# dynamic slack-desc (for my own sanity!) +ldd $PKG/usr/libexec/$PRGNAM/$PRGNAM > ldd.out +if grep -q libSDL2 ldd.out; then + RENDER="SDL-2.0" +elif grep -q libGL ldd.out; then + RENDER="SDL-1.2 (OpenGL)" +else + RENDER="SDL-1.2 (software rendering)" +fi + +if grep -q "libopenal" ldd.out; then + AUDIO="OpenAL" +else + AUDIO="SDL" +fi mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION cp $PRGNAM.lsm AUTHORS BUGS COPYING ChangeLog Contributing README WhatsNew \ @@ -125,7 +181,10 @@ cp $PRGNAM.lsm AUTHORS BUGS COPYING ChangeLog Contributing README WhatsNew \ cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild mkdir -p $PKG/install -sed "s,@CONTVER@,$CONTVER," $CWD/slack-desc > $PKG/install/slack-desc +sed -e "s,@CONTVER@,$CONTVER," \ + -e "s,@RENDER@,$RENDER," \ + -e "s,@AUDIO@,$AUDIO," \ + $CWD/slack-desc > $PKG/install/slack-desc cat $CWD/doinst.sh > $PKG/install/doinst.sh cd $PKG diff --git a/games/uqm/uqm.info b/games/uqm/uqm.info index 1818213104..ea9e8be1f4 100644 --- a/games/uqm/uqm.info +++ b/games/uqm/uqm.info @@ -1,9 +1,9 @@ PRGNAM="uqm" -VERSION="0.7.0+0.8.0" +VERSION="0.8.0" HOMEPAGE="http://sc2.sourceforge.net/" -DOWNLOAD="http://downloads.sourceforge.net/sc2/uqm-0.7.0-source.tgz \ +DOWNLOAD="http://downloads.sourceforge.net/sc2/uqm-0.8.0-src.tgz \ http://downloads.sourceforge.net/sc2/uqm-0.8.0-content.uqm" -MD5SUM="f9018ea0493d7dac6a9e1006b00af7df \ +MD5SUM="63c4c300736aa3ac9b841e31b9a76389 \ 6cbc9d51fa63e07c0f4d1d061136d816" DOWNLOAD_x86_64="" MD5SUM_x86_64="" diff --git a/games/uqm/uqm.xpm b/games/uqm/uqm.xpm deleted file mode 100644 index fb472c6347..0000000000 --- a/games/uqm/uqm.xpm +++ /dev/null @@ -1,138 +0,0 @@ -/* XPM */ -static char *ur-quan-icon-std-3[] = { -/* columns rows colors chars-per-pixel */ -"32 32 100 2", -" c black", -". c #0D350C", -"X c #0B390B", -"o c #142F12", -"O c #1E2713", -"+ c #2F1D16", -"@ c #3E1B0F", -"# c #3D1A10", -"$ c #2B251D", -"% c #342111", -"& c #2C2D24", -"* c #2F3026", -"= c #32342B", -"- c #373732", -"; c #3B3D39", -": c #064A06", -"> c #044E04", -", c #084108", -"< c #035802", -"1 c #036202", -"2 c #036D02", -"3 c #027802", -"4 c #3D413C", -"5 c #3E433E", -"6 c #414540", -"7 c #434843", -"8 c #484D47", -"9 c #4F544E", -"0 c #595C55", -"q c #605C5A", -"w c #695A5E", -"e c #7F5567", -"r c #038303", -"t c #018A01", -"y c #029100", -"u c #019800", -"i c #009B00", -"p c #009E00", -"a c #00A200", -"s c #00A800", -"d c #00AE00", -"f c #01B200", -"g c #01B700", -"h c #01BB00", -"j c #00BE00", -"k c #33B70D", -"l c #00C300", -"z c #00C600", -"x c #01C701", -"c c #00CA00", -"v c #00D000", -"b c #00D400", -"n c #00D800", -"m c #00DE00", -"M c #1FCB10", -"N c #18D40F", -"B c #00E100", -"V c #00E500", -"C c #00EC00", -"Z c #0EE30B", -"A c #01F101", -"S c #03F102", -"D c #01F401", -"F c #29C010", -"G c #40B110", -"H c #4FB114", -"J c #5CAA0D", -"K c #5AAE13", -"L c #61A90D", -"P c #CB4002", -"I c #CE4102", -"U c #CC4902", -"Y c #DA4703", -"T c #DC4C03", -"R c #DC4F04", -"E c #DE5306", -"W c #DE6D02", -"Q c #E15C0A", -"! c #E47D01", -"~ c #E6793C", -"^ c #A5BA7F", -"/ c #B8E332", -"( c #BDE438", -") c #EC9101", -"_ c #EC9C01", -"` c #E7A601", -"' c #EBB601", -"] c #ECBC02", -"[ c #CFD41A", -"{ c #DFC809", -"} c #C7E742", -"| c #D4E84C", -" . c #D7E755", -".. c #D5E55B", -"X. c #9BAC93", -"o. c #99AB98", -"O. c #9EB589", -"+. c #D1D0D5", -"@. c #D3D1D7", -"#. c None", -/* pixels */ -"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.# + #.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.; * Q Y = #.#.o > < < < < < > < % = #.#.#.#.#.", -"#.#.#.#.#.#.#.#.6 = 9 ~ ' Y + X u a L L L L L d d U P 6 #.#.#.#.", -"#.#.#.#.#.#.#.5 . 2 q o.O.Q % , y p J ) ) ` { [ h a L P #.#.#.#.", -"#.#.#.#.#.#.& : 2 p M O.@.w = . 2 p a d d d K .} F x W @ 5 #.#.", -"#.#.#.#.#.o > 3 u c V l 5 4 #.o 1 u d v c c x ( ..| N j y o #.#.", -"#.#.#.#.* > 3 u l B h > - #.#.o 2 p s b n n n c ( ..| M p o #.#.", -"#.#.#.- , r p c n s : 5 #.#.5 : u p d b v c v b c / ./ u O #.#.", -"#.#.#.o 3 f n N 8 o 6 #.#.7 3 a p a j n v x x l c x K ( p O #.#.", -"#.#.5 < a n N w q ; & #.#.> a u a h b m c l x j c l H ( a O #.#.", -"#.#.& t v n t w w 9 & $ > u p s j v n x j j x l c x H ( a O #.#.", -"#.#.1 n n 3 O $ 5 0 5 y a p d c v c j h x b V C C C Z / p O #.#.", -"#.#.2 m y $ #.#.* 5 y k p d c b k M x l b V D D D D D D y $ #.#.", -"#.#.< r O #.#.#.= 3 a 9 0 k k H X.M c b C D V u y g j s , 8 #.#.", -"#.#.o = #.#.#.& t a a j J ) ) J x c n A D A > O $ O . $ #.#.#.#.", -"#.#.#.#.#.#.& < u a f x J _ _ ) x v C D C > 7 #.#.- @ % #.#.#.#.", -"#.#.#.X 1 > < < t f c x J ) ) J b C D V , 7 #.#.; # Y P $ #.#.#.", -"#.#.#.# J d s p y h m X.H k k H O.Z d o #.#.#.& & 0 e _ P # #.#.", -"#.#.#.# U G a h x y v M x v B D k N 4 $ #.#.= > 3 8 X.O.Y @ #.#.", -"#.#.#.O P ] F c c d t v m n D D Z q q 5 $ & X 3 p l O.+.; ; #.#.", -"#.#.#.#.@ Y ] L x c h y h Z D t O 8 w 8 ; o 3 s v m k 5 #.#.#.#.", -"#.#.#.#.#.@ ! ] L x b m t k r - #.- 8 0 7 2 a b B h > #.#.#.#.#.", -"#.#.#.#.#.7 @ ) ] Z B A b . 6 #.#.#.O 9 3 p c B f : #.#.#.#.#.#.", -"#.#.#.#.#.#.8 @ Y ` k Z N & #.#.#.& < r a c n u , #.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.+ P R K N * #.#.. < t h m m u O #.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.+ @ @ r = #.. 1 t f j d 2 o #.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.. : 1 : X * = #.#.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", -"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#." -};