In many places strings were initialised with strcpy(string, "") right
before the string was overwritten by another function. In the few cases
where this really might have been useful, just use a static initialiser.
Right after arriving at the destination planet, the code would do one more
check for a possible interception. The chance of this happening is small, but
if it happened, it would leave the game in an inconsistent state. This might
have caused the game to immediately start a real mission, which would loop
indefinitely.
Commit f51dbd0669 changed the way of generating
images of ships taking damage, and assumed that the SDL_Surfaces containing the
images were always 24 or 32 bpp. However, SDL will already have converted them
to the display format, so we need to properly handle 8 and 16 bpp as well.
This is one of the two sounds played when debris from a large object (like an
asteroid or boss) explodes. This one uses a random spline function instead of
filtered noise
This is the sound played when shots hit an enemy, but do not yet destroy it.
It's a small explosion sound combined with a metallic sound, simulating the
impact of the shot on the enemy's hull.
Two basic, unfinished songs, written in ABC notation are added. The Makefile
will convert the .abc files to MIDI files, which are rendered using Csound. At
the moment, Csound is set up to use the Fluidsynth engine to render sound using
soundfonts, and the reverbsc opcode is used to add a reverb effect.
ABC notation is much easier to write music in than using "raw" Csound score
notation. Also, the abcm2ps utility can create very nice sheet music from ABC
files.
This is the first sound effect which is generated from scratch
using Csound. The advantages of this are:
- Real source code for sound.
- Anyone with a text editor can tweak the sound effects.
- Source code is much more compact that the sound file itself.
- Sound files can be regenerated with arbitrary quality.
Before, all the ships were moving at exactly the same speed, making them appear
static on screen. Now, Chris is moving slowly to the right, but the WEAPCO
fighters are changing velocity now and then, both horizontally and vertically,
never quite reaching Chris but increasing their attempts.
When travelling between planets, while the progress bar was growing, it was
possible to click on planets, thereby changing the final destination planet.
The old technique was to overlay a semi-transparent red rectangle over an
existing ship image, and then make 50% red pixels transparent. For some reason,
the transparency is not working correctly. Instead, don't overlay anything,
but set the red component of all non-black pixels to the maximum value.
The code always tries to overwrite some data files when not using a .pak
file. This is only useful for upstream development. Put #ifdefs around
this code.
- We now have both minPlasma* and maxPlasma* variables.
- *PlasmaRate now goes from 1 to 5 just like Damage and Output.
- Internally, plasma now goes into the primary weapon, there is no
temporary weapon anymore.
- When upgrading the primary weapon, the new minimum amount of Damage,
Output and Rate immediately goes into effect when starting the next
msision.
- Super Charge now works exactly the same again as in the original.
- But shows blinkenlights in the bottom status bar when it is in use.
- Explicitly mention all the authors and licenses used for the new graphics
and sounds.
- Remove credits for the old music.
- Mention Valgrind and cppcheck under the Quality Assurance section.
- Add myself as additional programmer, Astrid as replacement graphics and sound
finder.
There were three flags, WF_STRAIGHT, WF_THIN_SPREAD and WF_WIDE_SPREAD,
when only one flag, WF_SPREAD suffices. This makes the code simpler and
gets rid of some duplication.