Import existing source tree; original VCS history is no longer available. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1313 lines
52 KiB
Plaintext
1313 lines
52 KiB
Plaintext
Kobo Deluxe v0.5.1
|
|
* Fixed segfault with weird audio buffer sizes.
|
|
* *Maybe* clears the screen a bit sooner... (One
|
|
could see a magnified desktop or garbage display
|
|
for a moment on some systems.)
|
|
* When there is no profile, the automatic New Player
|
|
dialog sends you on to the main menu, rather than
|
|
back to the intro.
|
|
* Added a bunch of AGW explosion sounds.
|
|
* Added new "big ship" launch and escape sound.
|
|
* Fixed infinite loop bug in filemapper_t::get_next().
|
|
(Thanks Joey Hess!)
|
|
* New "core destroyed" sound.
|
|
* When compiled with PROFILE_AUDIO, the 'R' key
|
|
reloads all sound effects.
|
|
* Integer atan2() approximation for sprite rotation.
|
|
* "Fixed" cubic resampler. (There will be a jump of one
|
|
sample when switching to/from cubic interpolation.)
|
|
* New player fire sounds, including overheat warning.
|
|
* Tweaked various sounds and related logic.
|
|
* 10% health award for core destroyed, and another 25%
|
|
for stage cleared. (No more 100% for stage cleared!)
|
|
* Health can now be up to 200%, but will decrease
|
|
quickly towards 100%.
|
|
* Destupified the bargraph_t value() interface...
|
|
* Waveform info after loading with logverbosity >= 2.
|
|
* Added pause sound.
|
|
* Added "Safe video settings" message when "escape
|
|
hammering" is detected.
|
|
* Explosions can now actually show the first frame.
|
|
* Explosion "random start frame" removed.
|
|
* Initial white flash for explosions.
|
|
* Fewer bonus lives! (We have the health bonus now...)
|
|
* Default and rock explos assume half speed of objects.
|
|
* Added player bolt impact fx.
|
|
* Improved player explosion.
|
|
* Bomb detonation fx directed at the player.
|
|
* Fixed a positional audio wrap bug.
|
|
* Configurable "Cannon Sound Suppression."
|
|
* Configurable overheat warning buzzer.
|
|
* Doubled rock health for Newbie skill.
|
|
|
|
Kobo Deluxe v0.5.0
|
|
* Added 'autoshot' command line switch for grabbing
|
|
ingame screenshot series.
|
|
* Added animated rocks.
|
|
* Added 88.2, 96, 176.4 and 192 kHz sample rates.
|
|
* Default video mode changed to 640x480.
|
|
* Option 'internalres' considered obsolete. (Was
|
|
never implemented.)
|
|
* s_filter_scale() fallback from Scale2x and
|
|
Diamond2x for non 2x factor changed to bilinear.
|
|
* Newbie mode changes:
|
|
* Three alternating nose/wing guns.
|
|
* Two alternating rearward wing guns.
|
|
* Fixed nonsense values for the SDL_GL_DOUBLEBUFFER
|
|
attribute. (Thanks, Sam Palmer!)
|
|
* Fixed Y/N buttons in the requester dialogs.
|
|
* Some new explosions, enemy bullets and other gfx.
|
|
* Fixed segfault in myship.cpp in (the extremely
|
|
unlikely) case of running out of sprite objects.
|
|
* 'pushmove' now counts as a cheat. (No highscores.)
|
|
* Added simple parallax starfield, along with none/
|
|
old/parallax starfield style switch.
|
|
* Intro mode now sets it's own fixed logic rate.
|
|
* Enemy definitions now have "death handlers".
|
|
* Invisible enemies no longer allocate sprites.
|
|
* Background color fade in damage noise flash and
|
|
noise-out effects.
|
|
* Map now marks cores as needed to select orientation
|
|
specific core tiles.
|
|
* Broken base branches are left as is.
|
|
* No dithering for the logo mask! (Thanks again,
|
|
Sam Palmer! :-)
|
|
* Separated map tile index from map state bits.
|
|
* Added alternate straight sections in bases.
|
|
* OpenGL vsync is now optional.
|
|
* Added 'S' key for screenshot. (PrintScreen is
|
|
stolen by some desktop environments.)
|
|
* Larger fps counter, for 1000+ rates...
|
|
* Corrected cs_engine_t.time type. Animation should
|
|
be smooth and reliable now!
|
|
* Tweaked screen.png a little. (Contrast, AA, ...)
|
|
* "Audio Options" renamed "Sound Options".
|
|
* Rocks are now destructible again (255 hits in
|
|
Classic mode; other values in new skill levels).
|
|
They also have an explosion all of their own.
|
|
* Special detonation animation for bombs.
|
|
* Bullets, player, enemies etc in separate layers.
|
|
* More firepower in the "Gamer" skill level.
|
|
* Benchmark based progress bar.
|
|
* Framework overlay now rendered as small tiles in
|
|
the corners of the playfield window, to avoid full
|
|
window impact on slow video cards in OpenGL mode.
|
|
* glSDL:
|
|
* Now compiles with OpenGL disabled. (Thanks,
|
|
Michael Sterrett!)
|
|
* Gamer mode changes:
|
|
* Higher firing rate.
|
|
* Added "videopages" option to make smart refresh work
|
|
with triple buffered displays, and for disabling
|
|
smart refresh if all else fails.
|
|
* Fixed weird audio fragment sizes.
|
|
* Fixed cubic interpolation -1 sample index bug in
|
|
a_mixers.h.
|
|
* Graphics loader refactored; gets parameters from a
|
|
table, and provides more verbose error messages.
|
|
* New "Boomerang" fighters with 16 rotations.
|
|
* New fighter ship. (Replaces the teal missile.)
|
|
* New gray, red and blue missiles.
|
|
* Disabled colorkey filter in gfxengine.
|
|
* New "loading" logo.
|
|
* Slightly slower (more readable) scroll text.
|
|
* Added window_t::textwidth_fxp(), to fix the unsmooth
|
|
text scrolling.
|
|
* Added "How to play" screen.
|
|
* Added "Highscores only for Classic mode!" notice.
|
|
* Added optional mouse capture when playing. Pause or
|
|
abort game to release!
|
|
* Added joystick selection. (Thanks, Erik Auerswald!)
|
|
* Decided the substantial change in appearance calls
|
|
for a minor version bump, so: 0.5.0.
|
|
* The -help switch is now handled as a proper command,
|
|
avoiding the stupid "unknown argument" error.
|
|
* Added -options_man command to output option docs in
|
|
Un*x man format.
|
|
* Updated the Un*x man file, and replaced the README
|
|
with a rendition of the man file.
|
|
* Made a new README from the man file.
|
|
* New counter font.
|
|
* Fixed some minor compiler warnings.
|
|
* Updated the TODO.
|
|
|
|
Kobo Deluxe v0.4.1
|
|
* Got fed up with these "pre" version codes that
|
|
don't fit into package versioning systems and
|
|
look generally silly.
|
|
* Implemented logic/audio timeline sync for
|
|
constant sound effect latency. Events are no
|
|
longer quantized to buffers.
|
|
* Improved the latency selector a bit.
|
|
* Latency calculations now assume 2 fragments for
|
|
SDL. (We use 3 fragments for OSS.)
|
|
* Latency calculation now picks the *closest*
|
|
buffer size; not the biggest one with lower or
|
|
equal latency.
|
|
* Removed "games" from the install paths on Un*x
|
|
systems, and moved the score files to the more
|
|
correct $(sharedstatedir). The install target
|
|
now works as expected for an autoconf build.
|
|
* Reverb and limiter controls replaced with the
|
|
simplified "Ambience" and "Volume Boost"
|
|
controls.
|
|
* Mega stoopid bug fixed: If video initialization
|
|
failed after changing video settings from the
|
|
options menu, the game would start back up
|
|
anyway - without a display!
|
|
* kobo.cpp now keeps a copy of the preferences,
|
|
so safe settings can be restored should reinit
|
|
inside the run/reinit loop fail.
|
|
* LoadRAW_S8() became LoadRAW(), and can now load
|
|
"raw" files with an 8 byte header containing "RAW"
|
|
followed by the audio_formats_t format code, and
|
|
a 32 bit sample rate in big endian format. The
|
|
MSB of the format code byte is set if the
|
|
waveform is looped.
|
|
* Implemented SaveRAW(). (Always saves in the above
|
|
format.)
|
|
* Implemented quick hack sound caching by providing
|
|
a script that saves all sounds to disk, and
|
|
alternative loader scripts that use those instead
|
|
of the AGW sounds. This currently generates 2 MB
|
|
of raw audio data.
|
|
* Added window_t::refresh() to enable the engine
|
|
to correctly handle windows that aren't repainted
|
|
every frame.
|
|
* Added endian swapping code for 16 and 32 bit raw
|
|
audio files. Files are in big endian, so this
|
|
code is only compiled on little endian archs.
|
|
* The mixers in a_tools.h now test for the zero
|
|
samples in debug builds.
|
|
* Removed in-game music pausing/restarting.
|
|
* Game Over no longer stops the game logic.
|
|
* Player profiles cannot be symlinks. (Security.)
|
|
* When loading a "raw" file, audio_wave_load()
|
|
takes looped/one-shot from the file.
|
|
* AGW w_load() and w_save() now tells EEL about
|
|
errors! (Kinda' handy... :-)
|
|
* Replaced "fine.raw" with "breakdown1.agw".
|
|
(The "fortress destroyed" sound.)
|
|
* Replaced "shot.raw" with "missile1.agw".
|
|
(The player fire sound.)
|
|
* Fixed sound FX bug: _enemy::hit() used x and y
|
|
fields of _enemy objects after release().
|
|
* Another sleeping bug: _myship::explode()
|
|
generated lots of huge, nasty coordinates.
|
|
* Removed "expl3.raw" completely, and removed
|
|
"bomb.raw" from "core destroyed."
|
|
* Added a logger with redirection capabilities.
|
|
* Fixed mouse control bug; the crosshair hot-spot
|
|
offset was wrong in some resolutions, because
|
|
of the border that's put around the screen in
|
|
certain resolutions and in windowed modes.
|
|
* display_t refactored to use refresh().
|
|
* Added dashboard.(cpp|h) and refactored the health
|
|
bar to use refresh().
|
|
* The framework is now rendered through refresh().
|
|
* Removed the pixel_* cruft in the _screen class.
|
|
* The _radar class becomes radar_window_t, which
|
|
is a window_t with callback driven rendering.
|
|
* window_t gets offscreen window/surface support.
|
|
* gfxengine now whines a little if it has to change
|
|
the buffering mode from the requested one.
|
|
* The health bar is only visible if there's more
|
|
than one health point maximum. (So, it's no longer
|
|
visible in Classic Mode.)
|
|
* gfxengine_t should now initialize the dirtyrect
|
|
management for page flipping properly.
|
|
* Removed the odd "OpenGL" resolutions in the video
|
|
options.
|
|
* No buffering mode for OpenGL in video options.
|
|
* Removed AC_FUNC_MALLOC. Who needs malloc(0)...?
|
|
* Added logfile and logformat options.
|
|
* Removed all extern "C" clauses around C includes.
|
|
* Fixed the "selector tube" heights; the surfaces
|
|
were much taller than the images.
|
|
* Tweaked the cleanalpha filter parameters.
|
|
* Optimized the dither filter; it doesn't *have*
|
|
to touch all the data to just do nothing... :-)
|
|
* Optimized the image processing filters.
|
|
* Added "No Alpha Blending" feature.
|
|
* Moved the sprite filters into filters.h.
|
|
* loadrect() renamed copyrect() and is now
|
|
applying scaling to coordinates like all other
|
|
calls.
|
|
* SemiTriple removed from buffering modes. You get
|
|
the same setup with doublebuffer(1); shadow(1).
|
|
* Old retrace sync cruft removed.
|
|
* ESC from any "normal" state now gives you some
|
|
version of the main menu.
|
|
* Added brightness/contrast filter.
|
|
* Moved less h/w related stuff from "Video Options"
|
|
into a new "Graphics Options" section.
|
|
* Added generic 'flags' field to filter arguments,
|
|
and threw in a global s_filter_flags as well.
|
|
* Removed window dependency from gamestate.(cpp|h)
|
|
and changed the license to LGPL.
|
|
* Upgraded to glSDL 0.7, w/ dynamic OpenGL loading.
|
|
* Added "Random" and "4x4 Filter" dithering methods.
|
|
* All graphics converted to PNG format.
|
|
* Added support for scaling to (almost) arbitrary
|
|
resolutions, including lower than the native
|
|
resolution of the graphics.
|
|
* The command line usage message now generates the
|
|
list of recognized options from the prefs object.
|
|
* Buffer overflow bug in new_player_t fixed. (?)
|
|
(Thanks to Donny Viszneki for reporting it!)
|
|
* Fixed a free()/delete bug in filemapper_t.
|
|
* Rewrote most of the radar display code.
|
|
* Removed unused scrolling cruft in window_t.
|
|
* Changed version to 0.4.1. Too many 0.4something.
|
|
* Made the player ship cursor flash slightly.
|
|
* Fixed missing slash before the config file name.
|
|
(Never noticed this before, as it apparently
|
|
affects only Mac OS X.)
|
|
* Fixed the title screen cheat mode indicator.
|
|
* Thanks to Antonio Messina, who managed to break
|
|
the game logic desipte a broken arm:
|
|
* Fixed difficulty wrap at stage 1601.
|
|
* Added option always_fire.
|
|
* Fixed missing gamecontrol_t constructor.
|
|
* Bilinear scaling without oversampling is now
|
|
actually *without* oversampling.
|
|
* Optimization: Scaling checks for clipping or
|
|
clamping only near the edges of surfaces.
|
|
* The SDL audio callback now deals with "evil"
|
|
buffer sizes. (Thanks to Hans de Goede!)
|
|
* Losing window focus now pauses the game. (Thanks,
|
|
Marianne Ibbotson!)
|
|
* Upgraded to glSDL 0.8.
|
|
* gfxengine no longer shuts down the SDL video
|
|
subsystem when hiding, as this causes problems
|
|
with glSDL for no gain.
|
|
* Implemented selectable Newbie, Oldie and Elite
|
|
skill levels.
|
|
* kobo_form_t:xoffs now also works for button().
|
|
* Added kobo_form_t:medium().
|
|
* Added "spread" fire for Newbie mode.
|
|
* Lower rear fire rate for Elite mode.
|
|
* Max number of saved scores per profile increased
|
|
to 100.
|
|
* Added cannon heat/cooling simulation.
|
|
* Added Video Mode Manager vidmodes.[ch]
|
|
* Some ships flying around in intro mode.
|
|
* New screen layout.
|
|
* Optimized and improved the video noise effect.
|
|
* Menu highlight bar:
|
|
* Faster movement.
|
|
* Parallax "slime" effect.
|
|
* Zoom-to-size effect.
|
|
* Made more room for extreme scores in Hall of Fame.
|
|
* Red noise to indicate damage.
|
|
* Snappier health bar.
|
|
* Added gun temperature bars.
|
|
* Upgraded to glSDL 0.9. (Colorkey fix.)
|
|
* Sound control cleanup; added sound.(h|cpp).
|
|
* Changed to Classic mode + four "New Mode" skill
|
|
levels; Newbie, Gamer, Elite and God.
|
|
* maxfps default changed from disabled to 100.
|
|
* Added CharOffset table to SoFont, to avoid mixing
|
|
actual character positions up with source blitting
|
|
extents.
|
|
* Fixed rectangle size calculations and rounding in
|
|
the graphics engine. (Improves rendering accuracy
|
|
in "odd" resolutions.)
|
|
* Fixed screen border refresh.
|
|
* Added hotspot logic to the sprite engine.
|
|
* New player "plasma bolts" and two new explosions.
|
|
* Incomplete base destruction bug fixed (?)
|
|
* Fractional frame times use double instead of float.
|
|
* Added configurable time filter.
|
|
* Default scale mode changed to Bilinear.
|
|
* Bilinear+Oversampling removed from config menu.
|
|
* Added "Strictly Regulated" frame rate limiter.
|
|
* Options moved to "System Options":
|
|
* Maximum Frame Rate
|
|
* Strictly Regulated Frame Rate
|
|
* Time Filter
|
|
* Motion Interpolation
|
|
* Removed some unimplemented video driver enums.
|
|
* Current score and stage is now checked when
|
|
quitting from within a game.
|
|
* Image filters are now removed properly.
|
|
* Added window centering for "some platforms".
|
|
* Hammering on Escape is trapped and aborts the
|
|
game when loading, or switches to a safe video mode
|
|
when running.
|
|
* Some refactoring to hunt down memory leaks and other
|
|
issues. Most statically allocated objects gone.
|
|
* Sped up the slow, annoying nibble effects.
|
|
* "Weird characters" in New Player name editor fixed.
|
|
* Proper Yes/No dialog for exit and abort game.
|
|
* Unused song ballad1 + instruments removed.
|
|
* "Dummy" score file (for WinZIP) is now minimal, no
|
|
scores, no stages finished.
|
|
|
|
Kobo Deluxe v0.4pre10 (Unofficial Debian/PPC fix release)
|
|
* #include "config.h" was missing in e_getargs.c...
|
|
* Applied security fix for saving the user config.
|
|
* Added default case in glSDL's _print_glerror(),
|
|
since I get flooded with warnings otherwise.
|
|
(All GL_* are in an enum in my new GL.h.)
|
|
* Added max_FPS feature, to restrict the frame
|
|
rate. Useful on video drivers without retrace
|
|
sync and/or when you want to reduce CPU load.
|
|
(Thanks to Martijn van Oosterhout for the
|
|
original patch!)
|
|
* Added man page, contributed by Joey Hess.
|
|
* Fixed some minor typos in the man page.
|
|
* Added resolutions 1600x1200 and 1920x1440 and
|
|
2048x1536, for extreme/insane users. ;-)
|
|
* Removed 57 unused AGW scripts. (These belong to
|
|
Audiality, which is now a separate project.)
|
|
* Updated and shortened the scroll text.
|
|
* Added monitor noise effect with sound effect.
|
|
* Fixed two related bugs in s_filter_scale() that
|
|
would 1) cause NEAREST to be one pixel off
|
|
vertically and 2) linear interpolation modes to
|
|
be off by half a pixel horizontally.
|
|
* Tweaked the death explosion, so it expands,
|
|
decays and ends, instead of just rolling for as
|
|
long as the player is dead, as it used to be.
|
|
* Added Game Over sound effect.
|
|
* Dead player no longer takes hits. (This avoids
|
|
the hysterical thumping of bullets hitting the
|
|
non-existent ship during the death sequence.)
|
|
* Added README.osx, which points out that you may
|
|
have to create the score-dir to make Kobo DL
|
|
work. This applies to other archs as well, so
|
|
perhaps I should put it in an FAQ or something?
|
|
(Thanks to Adam Marks the the Mac OS X binary!)
|
|
* Tweaked launch.agw. (More turbine; less noise.)
|
|
* Added Get Ready sound effect.
|
|
* Exiting pause mode now throws you right back
|
|
in the game. (No "get ready" state.)
|
|
* Added configurable "get ready" countdown.
|
|
* "Get ready" countdown now ends by starting the
|
|
game, rather than entering pause mode.
|
|
* Controls are reset whenever you get a new ship.
|
|
* Improved the loading status screen a bit.
|
|
* Added shrinking and green->red fading bar
|
|
during the last second of the "Get Ready"
|
|
countdown. (0.7 s in "Quick Start" mode.)
|
|
* Added a critical error state with a red
|
|
flashing box and stuff. This shows up if a
|
|
player profile cannot be created, or if
|
|
starting a game fails for some reason.
|
|
* The game now remembers the last map played
|
|
until you quit, instead of resetting to the
|
|
last completed map all the time. (Thanks to
|
|
David Andersson for the idea!)
|
|
* Fixes backported from Audiality:
|
|
* midi_process() was called even if MIDI
|
|
input was not enabled, resulting in the
|
|
engine waiting for data on stdin once
|
|
per buffer... *heh* Fixed.
|
|
* OSS MIDI input fixed. (When soft through
|
|
was disabled, the device would be opened
|
|
write only! The drivers I used before
|
|
obviously always opened RDWR...)
|
|
* Poly and mono Patch Plugins now
|
|
initialize the primary output and send
|
|
busses for voices. (So *that's* why my
|
|
mixes broke... Oops!)
|
|
* New, properly working envelope generator
|
|
backported from Audiality.
|
|
* VE_ISET event eliminated - only IRAMP
|
|
is used for ramped voice controls.
|
|
* glSDL changes for glSDL-0.4:
|
|
* "no TexInfo" changed from 0xffffffff to
|
|
0, since SDL 1.2.5 and up inits the
|
|
unused1 field to that, specifically for
|
|
glSDL.
|
|
* Added compile time and runtime warnings
|
|
for SDL versions prior to 1.2.5.
|
|
|
|
Kobo Deluxe v0.4pre9 (Debian/PPC fix release; first try)
|
|
* EEL changes:
|
|
* Stole eel_get_argsv() from the not yet
|
|
released Audiality 0.1.0. (Fixed some
|
|
more va_list issues.)
|
|
* glSDL changes for glSDL-0.4:
|
|
* Added (gl)SDL_SaveBMP().
|
|
* "Fixed" OpenGL pixel format for
|
|
glReadPixels. (Maybe I got the glSDL pixel
|
|
format wrong? Dunno, and I'm on an ATI card
|
|
and driver so I don't trust anything...)
|
|
* Fixed _glSDL_BlitFromGL() (I think...)
|
|
* Removed the "Intelligent Display Abstraction
|
|
Layer" for now, as it's not yet usable.
|
|
* Added screen() property to gfxengine_t, to have
|
|
a standard way of rendering to the full screen
|
|
area.
|
|
* Added gfxengine_t::clear() method.
|
|
* Added coarse clipping to SoFont. (The scroller
|
|
made the coords wrap in 1280x1024. *heh*)
|
|
|
|
Kobo Deluxe v0.4pre9 (unreleased)
|
|
* Started hacking the "Intelligent Display Abstraction
|
|
Layer".
|
|
* glSDL changes for glSDL-0.4:
|
|
* Fixed C++ issue with IMG_Load().
|
|
* Fixed stupid M$isms: Textures are now
|
|
*uploaded* to the card.
|
|
* SDL_OPENGLBLIT removed. (Used only to
|
|
prevent certain unimplemented stuff from
|
|
causing *really* Bad Things to happen.)
|
|
* Depth buffer silliness fixed. (We don't
|
|
use the depth buffer...)
|
|
* "fake_screen" is now a real surface.
|
|
* Implemented blitting from the screen.
|
|
* Implemented blitting within the screen.
|
|
* Implemented screen locking/unlocking.
|
|
* Fixed prototype for glSDL_GetVideoSurface().
|
|
* EEL changes:
|
|
* Added eel_load_from_mem(). (Thanks to
|
|
Florian Schulze!)
|
|
* Cleaned up the EEL script management
|
|
code a little.
|
|
* Using va_copy() in e_getargs.c, since
|
|
assignments are not legal on all
|
|
platforms. (Thanks, Andreas Heck!)
|
|
|
|
Kobo Deluxe v0.4pre8
|
|
* Added Extreme Pickyness Mode (--enable-epm).
|
|
(Unfortunately, this is not enough to ensure that
|
|
stuff compiles on gcc 3.x. Guess I'll just have to
|
|
install gcc3, or rely on gcc3 users reporting all
|
|
warnings and errors.)
|
|
* Some const string issues fixed. (Returning a const
|
|
string as "char *" and the like.)
|
|
* Removed all AdLib stuff and support for non-
|
|
standard MIDI file variants. However cool it might
|
|
be to play those files, I have no use for it and
|
|
can't maintain it in this project.
|
|
* Removed old bogus stuff from the comments in
|
|
filemap.h.
|
|
* Minor cleanups in filemap.cpp.
|
|
* Some GCC3 fixes in score.cpp. (String copying...)
|
|
* Scroll text updated.
|
|
* Improved scroller "speed throttling".
|
|
* Returning to the intro now restores the "demo" map.
|
|
* Added Electric Fence to the Extreme Pickyness Mode.
|
|
* Started cleaning up the C code using Splint. (Can
|
|
someone please donate a FlexLint license...? :-)
|
|
* load_sounds() in kobo.cpp fixed; it wouldn't load
|
|
the music if the sound effects were loaded with
|
|
a previous call.
|
|
* Somewhere along the way, I managed to get the
|
|
intro to generate a new demo map on every intro
|
|
screen switch. Fixed.
|
|
* Audio engine changes:
|
|
* Added OSS 'pollaudio' for debugging.
|
|
* Fixed index outside array in
|
|
audio_wave_free()!
|
|
* Tightened up the API - signs only where
|
|
needed and things like that.
|
|
* 0 dB peak amplitude for 32 bit waveforms
|
|
changed to [-1.0, +1.0].
|
|
* ptab_init() now takes an integer argument.
|
|
(No implicit float->fixp16:16 conversion.)
|
|
* Ports and "clients" are now named for
|
|
debugging/tracing, although client names
|
|
exist only if AEV_TRACING is compiled in.
|
|
* Cleaned up audio event system names.
|
|
Everything is now aev_<something>, and most
|
|
names have been significantly shortened.
|
|
* Added aev_init() macro for ports! (Aargh!)
|
|
* Open/close of subsystems cleaned up. All
|
|
subsystems now have audio_*_open/close()
|
|
calls, and should (hopefully) clean up
|
|
properly when closed.
|
|
* Audio engine open/close API changed;
|
|
the full sequence is now:
|
|
audio_open() (optional)
|
|
audio_start()
|
|
audio_stop() (optional)
|
|
audio_close()
|
|
Note that the waveform and scripting
|
|
subsystems will still initialize
|
|
themselves automatically if used before
|
|
calling audio_open().
|
|
! The last two seem to have fixed the
|
|
issues with restarting the engine on
|
|
Linux! Remains to see if that was the
|
|
whole problem...
|
|
BENCHMARK: speed1.agw renders in 27.2 s.
|
|
speed2.agw renders in 21.5 s.
|
|
Total: 48.7 s.
|
|
* Added block based processing framework.
|
|
* Implemented block read, write and add.
|
|
* Added block based envelope processing.
|
|
* Using the new envelope interface - but
|
|
still processing one sample at a time.
|
|
(BENCHMARK: speed.agw renders in 34.2 s!)
|
|
* Using 32 frame blocks in wca_filter()
|
|
and wca_gain().
|
|
(BENCHMARK: speed.agw renders in 33.6 s.
|
|
wca_filter() disabled: 31 s.)
|
|
* Converted wca_osc() to block based
|
|
processing, and made some minor
|
|
optimizations.
|
|
* WCA_SYNC for WCA_NOISE fixed. Each sync
|
|
pulse now shifts in a new value through
|
|
the S&H as well.
|
|
* Fixed bug in spectrum oscillators: They
|
|
would produce no output with a mod1 input
|
|
of less than 1.0. They now produce pure
|
|
sine, as originally intended.
|
|
* HSPECTRUM and PHSPECTRUM fixed: They
|
|
actually didn't separate roll-off control
|
|
for odd and even harmonics at all! (Thus,
|
|
they were basically just broken versions
|
|
of SPECTRUM...)
|
|
* SPECTRUM modulation mapping unified; MOD1
|
|
now always controls the overtone stepping.
|
|
* The new AHSPECTRUM replaces PHSPECTRUM.
|
|
* HSPECTRUM becomes a AHSPECTRUM with
|
|
multiplicative overtone stepping control.
|
|
BENCHMARK: speed1.agw: 10.2 s. 167% faster.
|
|
speed2.agw: 17.7 s. 21% faster.
|
|
Total: 27.9 s. 75% faster.
|
|
Obviously, the optimizations worked out
|
|
rather well. Next, we'll try to do something
|
|
about those spectrum oscillators...
|
|
|
|
Kobo Deluxe v0.4pre7
|
|
* Old samples boosted by 70%, to compensate for the
|
|
lack of an illogical amplification factor in the
|
|
new engine. :-)
|
|
* The screwed up scroll position during the "Game
|
|
Over" state fixed.
|
|
* "Early bullets", flickering and other crap fixed.
|
|
* gfxengine_t and sprite.[ch]: Added clampcolor() and
|
|
s_clampcolor (for specifying what color and alpha
|
|
to assume for areas outside images), and changed
|
|
the color format to Uint8 in the range [0,255], to
|
|
be consistent with the change in window_t.
|
|
* manage: Selecting a starting stage before staring
|
|
a game now preserves the actual map that is
|
|
generated. You don't get a new version of the
|
|
same level, but the exact map you're looking at
|
|
before starting the game.
|
|
* radar: Fixed potential color allocation bug when
|
|
changing video mode; it used to initialize only
|
|
once during the game life time...
|
|
* radar: Tweaked colors, and made the the blue
|
|
launcher nodes visible on the radar.
|
|
* Options 'cheat' and 'indicator' are now commands
|
|
rather than switches, so they cannot be saved in
|
|
the configuration by accident.
|
|
* Split the "push move" mode off from 'indicator'
|
|
into a feature of it's own, activated with
|
|
the 'pushmove' command.
|
|
* Game and Control options moved to the top of the
|
|
options main menu.
|
|
* Scrolling radar implemented. Can be disabled in
|
|
Game Options, to work like the old version.
|
|
* gfxengine_t make slightly more robust WRT calls
|
|
being made while the screen is closed.
|
|
* Switching between fullscreen and windowed modes
|
|
can now be done at any time with the usual ALT+ENTER
|
|
shortcut. :-) Special case activates pause mode if
|
|
it's done in the middle of a game.
|
|
* Random number generator split in two; pubrand and
|
|
gamerand, and get_seed() member added, as a
|
|
preparation for demo recording and playback.
|
|
* 'P' and the mighty strange Pause Key parsed and
|
|
routed to the pause function. (This is also used
|
|
internally, as a neat way of telling whatever state
|
|
might be active to pause.)
|
|
* Touched up the screen framework artwork a little.
|
|
* Optimized background rendering some. (Occasional
|
|
clipped extra row and column of tiles eliminated.)
|
|
* Stupid bug in window_t::invalidate() found and
|
|
killed: gfxengine_t clips invalidated rects, so we
|
|
need to make sure our window is selected!
|
|
* window_t now supports background images. clear()
|
|
takes an optional SDL_Rect, and blits from the
|
|
image, if there is one, or fills with the
|
|
background color as in previous versions.)
|
|
* Background graphics in the displays and the radar
|
|
screen! :-)
|
|
* Added dither plugin with hard-coded 2x2 filter.
|
|
* Added options to turn dithering off.
|
|
* Added kludge for OpenGL cards that can't handle
|
|
RGBA8, but turns it into RGBA4, and a switch to
|
|
enable it if required.
|
|
* sprite: S_BLITMODE_NORMAL renamed S_BLITMODE_AUTO.
|
|
(Makes more sense!)
|
|
* Option broken_numdia (Broken NumPad Diagonals)
|
|
added - I want to use the page up/down keys for
|
|
other stuff, even if *some* systems can't decode
|
|
the numpad correctly! :-/
|
|
* Added the algorithmically constructed sound
|
|
effect "SOUND_LAUNCH".
|
|
* Separated the AGW scripting engine core from the
|
|
audio engine and made it the "Extensible Embeddable
|
|
Language". (a_agw.[ch] now contain only the AGW
|
|
extension to EEL.)
|
|
* Added the algorithmically constructed sound
|
|
effect "SOUND_LAUNCH2", for the "blue balls".
|
|
* Fixed some bugs in filemapper_t.
|
|
* Any jerking, flickering etc when entering a new
|
|
stage should now be *completely* eliminated. I
|
|
think... ;-)
|
|
* Intro doesn't conflict with stage 100 any more.
|
|
* Implemented 2D positional sound effects. :-)
|
|
* Added screenshot feature. (OpenGL not implemented,
|
|
as the current glSDL cannot read the screen surface.)
|
|
Saves BMP only, and is connected to PrintScreen and
|
|
SysReq.
|
|
* EEL now uses the same callback prototype for all
|
|
extensions, whether they are commands, operators
|
|
or functions.
|
|
* Ported Jeremy Sheeley's player profiles patch
|
|
from 0.3, and tweaked the user interface a little.
|
|
* Fixed double initialization of the manage object.
|
|
* Extended the score file format into a more powerful,
|
|
versionned "profile file format".
|
|
* file.(h|cpp) and parts of score.(h|cpp) replaced
|
|
with pfile.(h|cpp), which implements a generic,
|
|
portable "toolkit" for platform independent binary
|
|
data file access.
|
|
* Added game.(h|cpp), which collects all configurable
|
|
game parameters in one place.
|
|
* The "speed" parameter is now considered a cheat,
|
|
and is no more available from within the game.
|
|
* Last player profile is remembered in the config.
|
|
* Added optional "Diagonals Emphasis Filter". (I'd
|
|
say it only makes control feel sluggish most of the
|
|
time, but it might work for someone... I'm open to
|
|
suggestions if anyone has an idea for a smarter
|
|
filter.)
|
|
* Eliminated extra calls to score_manager_t::record().
|
|
* Start level selection in intro mode removed.
|
|
* Implemented collision/health system. When two
|
|
"collidable" objects collide, the damage of each
|
|
object is subtracted from the health of the other.
|
|
(Object properties set so that the game will
|
|
play exactly like the original with the single
|
|
player default settings for the player ship.)
|
|
* Turned the "shield = -1" feature into 'shootable'.
|
|
* Added health bar.
|
|
* Threw in detection and fix to read broken 73 byte
|
|
scorefiles from older Win32 versions. (Seems like
|
|
the new code works right on Win32 as well, BTW.)
|
|
* Various fixes and additions to filemapper_t.
|
|
(Scanning multiple directories, most importantly.)
|
|
* Removed "./scores" from the SCORES path for now,
|
|
as it's actually the same place as the default
|
|
score dir on Win32. (You'd get all profiles and
|
|
scores twice, that is.)
|
|
* Removed "bgm.raw" as it's not used anymore.
|
|
* No hyphen before the "pre" from now on!
|
|
* glSDL changes:
|
|
* Applications can now set the colorkey of
|
|
of surface *after* SDL_DisplayFormat() -
|
|
although it will just discard the TexInfo,
|
|
resulting in the surface being converted
|
|
before the first blit, and after every
|
|
change in the surface.
|
|
* Silly intermediate buffer eliminated in
|
|
_DownloadTexture().
|
|
* glSDL automatically stretches resolutions
|
|
below 640x480 using an integer factor.
|
|
* Audio engine changes:
|
|
* Benchmarking tries to use gettimeofday() if
|
|
not compiled for x86 CPUs.
|
|
* a_tools.h got some cleaning up, some new
|
|
macros, and mixing functions optimized with
|
|
a Duff's Device variant.
|
|
* __mastervol() is obsoleted by the groups,
|
|
and was killed to save some cycles. (It ate
|
|
almost 1% of my P-III 933!)
|
|
* Ditched the "Smart Stereo" Limiter - it's
|
|
not loud enough, and should be replaced with
|
|
something that drives the signal non-linear
|
|
to squeeze more power in when the signal
|
|
isn't panned center.
|
|
* Dropped the saturating 32->16 bit converter,
|
|
and fixed the limiter so that it reliably
|
|
*limits* the signal the way it should.
|
|
* Limiter does no longer invert the signal.
|
|
* Added ACC_PRIORITY.
|
|
* Added controls for Channel Inserts.
|
|
* Channel default controls (used in DETACH
|
|
mode) removed. Just expect channel controls
|
|
to stay where you leave them, and
|
|
everything should be fine - and faster!
|
|
* Implemented dynamic voice allocation.
|
|
* ACC_DETACH now effectively means
|
|
"polyphonic mode". "Detached" voices are
|
|
still owned by the channel that launched
|
|
them - but just as before, channel
|
|
controls don't affect voices directly after
|
|
they're launched. (Even that may change
|
|
eventually...)
|
|
* Ripped mid.cpp and mid.h from the AdLib FM
|
|
player AdPlug 1.1. Started stripping off
|
|
the FM stuff and converting it to C and the
|
|
"midisock" interface.
|
|
* Added primitive VU-meter to the voice mixer.
|
|
* Implemented audio_wave_convert(), using the
|
|
voice mixer in interpolated 16x oversampled
|
|
mode.
|
|
* Added simple enhancer and noise gate
|
|
functions to the init time wave API.
|
|
* Hacked basic polyphony support into a_midicon.
|
|
* ACC_RANDTRIG is now *really* a 16:16 fixp
|
|
value, to allow finer control of the
|
|
randomize depth. (Next, I'll make the section
|
|
end marker fixed point, to allow sub sample
|
|
accurate loop timing - as well as finer
|
|
RETRIG and RANDTRIG control. :-)
|
|
* Fabricated a nice 3'rd degree LUT for
|
|
various MIDI -> Linear Control mapping.
|
|
* Introduced a more solid scheme for keeping
|
|
track of allocated voices.
|
|
* audio_channel_play() now takes 16:16 linear
|
|
pitch and 16:16 volume, instead of the bogus
|
|
MIDI format arguments.
|
|
* Added audio_wave_filter().
|
|
* DETACH mode split into ADM_POLY and
|
|
ADM_FULL, to natively support the slightly
|
|
different ways DETACH mode is used by
|
|
midicon and for sound effects.
|
|
* Added cubic (4-point) interpolation, based
|
|
on a formula by Olli Niemitalo. Low freq
|
|
sines sound *perfect* - no audible distortion
|
|
whatsoever. It sounds great up to 1:1, but
|
|
runs into trouble in the upper half of the
|
|
octave above 1:1 - linear 2X+ sounds better
|
|
from there and up. The best part is that the
|
|
CPU usage is somewhere in between linear 2X
|
|
and linear 4X on a P-III.
|
|
* Volume ramping bug fixed: The "boot strap"
|
|
values calculated when starting new voices
|
|
were wrong, and resulted in an undesired
|
|
fade in over one buffer.
|
|
* "Playing" indicator below the per-voice VUs.
|
|
* Waveform size restrictions eliminated! (Well,
|
|
you'd probably have trouble with 2+ GB on 32
|
|
bit systems... ;-)
|
|
* Dynamic voice allocation now always starts
|
|
with voice 0 in the first pass, when looking
|
|
for unused voices. (The other passes are still
|
|
starting at the voice after the last voice
|
|
allocated, to favor the "oldest" voice when
|
|
there are multiple equivalent choices.)
|
|
* Implemented MIDI CCs 120, 121, 123, 126 & 127.
|
|
* Added SILENT and RESTING states to the plugin
|
|
API, to deal with silent output efficiently.
|
|
* Optimized bus handling; now, bus send buffer
|
|
clearing and other stuff isn't even considered
|
|
unless a bus actually is in use.
|
|
* Implemented the Bus Control MIDI CCs. (39...55
|
|
on the first AUDIO_MAX_BUSSES channels.)
|
|
* Reverb SNR improved. The internal precision is
|
|
now 8 bits higher than that of the I/O, which
|
|
produces "perfect" results down to the LSB in
|
|
the final output.
|
|
* Implemented CCs 88, 89 and 91; "primary bus",
|
|
"send bus" and "send level".
|
|
* Added SINEMORPH, SPECTRUM, and LSPECTRUM
|
|
oscillators.
|
|
* Changed ACC_PITCH to fixed point linear freq,
|
|
where the integer bits correspond to MIDI
|
|
pitch. That is, 60.0 now does what 1.0 used
|
|
to do, and to step up one octave, add 12.0
|
|
instead of multiplying by 2.0.
|
|
* Various oscillators and stuff added to the
|
|
Waveform Construction API.
|
|
* Added bandlimiting or oversampling to all
|
|
Waveform Construction API oscillators.
|
|
* Modulation API cleaned up.
|
|
* Voice mixer code cleaned up a bit.
|
|
* Voices now use timestamped events for control.
|
|
* "Plugin style" API for patches separates the
|
|
channel->voice bindings from the engine core.
|
|
BENCHMARKING NOTE: Right now it takes 60 seconds to
|
|
load and render the 72 AGW sounds I've created
|
|
so far. Although most of the code is currently
|
|
*very* inefficient, only the SPECTRUM oscillators
|
|
are really so slow that it matters.
|
|
* Audio Voice Mixer benchmark results, 20020111:
|
|
(P-III 933, 48 kHz, 20 ms latency, playing
|
|
an 8 kHz 8 bit stereo sample in 32 voices,
|
|
compiler optimizations disabled. Unit is percent
|
|
of total CPU time.)
|
|
-----------------------------------------------
|
|
Very Low: 6.9%
|
|
Low: 14.5%
|
|
Normal: 10.1%
|
|
High: 17.9%
|
|
Very High: 136% (overload!)
|
|
|
|
(Same, but with gcc/g++ -O3 optimization.)
|
|
-----------------------------------------------
|
|
Very Low: 3.5%
|
|
Low: 6.5%
|
|
Normal: 4.6%
|
|
High: 7.9%
|
|
Very High: 78% (causes underruns)
|
|
|
|
Obviously, on this machine, the "Normal" mode,
|
|
which is using plain linear interpolation, is
|
|
almost as fast as the "Very Low" mode, whereas
|
|
the "Low" mode is more expensive. This is to be
|
|
expected from CPUs with fast multiplications.
|
|
* Audio Voice Mixer benchmark results, 20020503:
|
|
(Same machine, same settings, same test, but with
|
|
the new cubic interpolating mixer, internal
|
|
fragment size limit, timestamped events etc. With
|
|
-O3 optimizations.)
|
|
-----------------------------------------------
|
|
Very Low: 4.5%
|
|
Low: 6.8%
|
|
Normal: 5.5%
|
|
High: 8.2%
|
|
Very High: 9.5%
|
|
|
|
Higher loads occur only when pushing the pitch more
|
|
than ~1.5 octaves above fs in "Very High" quality.
|
|
(That results in linear interpolation w/ 4x+
|
|
oversampling, which is pretty slow.)
|
|
|
|
|
|
*** The Audio Engine: Why the GPLed files?
|
|
|
|
The sound code used in Kobo Deluxe was originally written
|
|
by Masanao Izumo <mo@goice.co.jp>, for XKobo 1.11+.
|
|
Masanao also added the sound effect samples that are still
|
|
being used.
|
|
|
|
You may have noticed that, while most, if not all of the
|
|
current audio engine is new code, which is LGPLed, a few
|
|
files (a_globals.[ch] and audio.[ch]) are GPLed, and
|
|
contain a copyright notice mentioning Masanao Izumo.
|
|
|
|
This effectively means that the whole audio engine has
|
|
to be used under the terms of the GPL; not the LGPL.
|
|
|
|
As this will probably be too restrective for many of the
|
|
users the engine is targetting, I've contacted Masanao
|
|
for a resolution, but have yet to receive a response.
|
|
|
|
David Olofson
|
|
|
|
Kobo Deluxe v0.4-pre6
|
|
* I've compiled with -Wall and nearly all of the
|
|
additional warning switches (not activated by -Wall)
|
|
to verify all code. Many things that non-gcc
|
|
compilers could complain about should be fixed in
|
|
this version.
|
|
* "Video Driver" option not shown if there's only one
|
|
choice. (Which is the case if you build w/o OpenGL.)
|
|
* Exit with ESCAPE from config menues fixed - now
|
|
cancels any changes and plays the appropriate sfx.
|
|
* Solaris package building script 'buildpkg.sh' and
|
|
required configure.in fix by Andreas Sp�ngberg added.
|
|
* String copy bug in cfgparse.cpp fixed. (Andreas
|
|
Sp�ngberg.)
|
|
* Switching between windowed and fullscreen modes no
|
|
more results the screen being offset.
|
|
* Screen centering fixed.
|
|
* Border in windowed mode fixed.
|
|
* Cleaned up audio config menu, and added volume
|
|
controls for sfx, (future) intro music and in-game
|
|
music. (Note that the "Master Volume" is still
|
|
there, and it's still digital...)
|
|
* Icreased the number of volume levels available in
|
|
the audio config menu. (Used to be 25% increments.)
|
|
* Added redefined() and accept() to config_parser_t.
|
|
* Non-interactive widgets handled correctly in menues.
|
|
* Added headers to configuration menues.
|
|
* Added 'unit' string to ct_spin_t.
|
|
* window_t::select() now comes in a private flavor
|
|
without checks.
|
|
* Config menues now make use of OS_UPDATE_* flags in
|
|
addition to the OS_CANCEL tag, to allow instant
|
|
effect controls to cancel/undo properly.
|
|
* config_form_t now�has a virtual member undo_hook()
|
|
that's called by undo(). (Used to make ESC exit work.)
|
|
* Audio engine changes:
|
|
* Channels are separated into voices (mixing)
|
|
and channels (control abstraction) levels.
|
|
* Groups added for easy channel management.
|
|
* The API provides access to channels and
|
|
groups, but not direct access to voices.
|
|
* All fixed point values are now 16:16.
|
|
* API variants with float arguments added.
|
|
* AC_DETACH added. (Easy SFX control.)
|
|
* Panning/balance control added.
|
|
* Added "waves" to get rid of sample pointers.
|
|
* AC_SPEED removed. (Obsoleted by the internal
|
|
conversion to original wave sample rates.)
|
|
* Fixed bug in reverb: Right input missing!
|
|
* Another reverb bug: The delay buffer was too
|
|
short for >=32000 kHz with the current taps.
|
|
* Implemented AC_RETRIG and AC_RANDTRIG.
|
|
* Improved resampling frequency accuracy.
|
|
* Improved looping accuracy and quality.
|
|
* Added MIDI input implementation for OSS and
|
|
ALSA raw MIDI interfaces.
|
|
* Fixed potential crash bug; mixing buffer
|
|
size variable would be wrong if the desired
|
|
buffer size couldn't be set!
|
|
* Added higher quality voice resamplers.
|
|
* sound.[ch] replaced by a_wave.[ch].
|
|
* Auto trig w/ timeout on the oscilloscope.
|
|
* 8 & 16 bit mono + 16 bit stereo added.
|
|
* Engine code restructured and modularized.
|
|
* "Waveform Construction API" added.
|
|
* Channel->bus->master mixing architecture.
|
|
* FX plugin API added. (Internal, for now.)
|
|
* Reverb LPF cutoff made configurable and
|
|
independent of the sample rate.
|
|
* Added generic "browsing" API to config_parser_t.
|
|
* Added a copy of LGPL 2.1, and started sorting out
|
|
which licence applies where. (Basically, the old code
|
|
is GPL, while most of the new code I've written from
|
|
scratch is LGPL.)
|
|
* Added window_t::center_token[_fxp]() for nice columns.
|
|
* Started documenting a little...
|
|
* Added "Audio CPU Load" screen for gcc/x86. (Needs
|
|
high resolution timestamping, and I'm using RDTSC for
|
|
now.)
|
|
* Added text alignment system for the ct_* widgets, to
|
|
make use of the new center_token() methods.
|
|
* Various tweaks and adjustments.
|
|
* Credits updated.
|
|
|
|
Kobo Deluxe v0.4-pre5
|
|
* New versioning rules introduced;
|
|
* Any -preX suffix should *always* be included
|
|
in AM_INIT_AUTOMAKE().
|
|
* No more development snapshots - every package
|
|
released has a version number of it's own,
|
|
with a -preX suffix if appropriate.
|
|
* Surface leak when reloading graphics fixed.
|
|
* gfxengine_t::unload() now takes -1 (default) for
|
|
unloading all banks.
|
|
* gfxengine_t::unload() also destroys SoFont objects!
|
|
* Void pointer arithmetics and some bogus braces fixed.
|
|
(Thanks, Riki!)
|
|
* Moved sound effects out into files. (Raw format for
|
|
now, as WAV doesn't support signed 8 bit data...)
|
|
* Minor sound code cleanups.
|
|
* bgmfile.[ch] removed. (Used to be Linux only anyway...)
|
|
* config_parser_t created. (prefs_t is now derived from
|
|
that class, and contains no parsing code whatsoever.)
|
|
Also eliminates duplication of "command" decoding for
|
|
non-config stuff like -showcfg, -debug and -fps.
|
|
* SDL_VIDEOEXPOSE is *finally* at least handled! :-)
|
|
* Removed gcc-only compiler flags and fixed other stuff
|
|
that caused trouble with some compilers. (Thanks to
|
|
Andreas Sp�ngberg for the Solaris patch!)
|
|
* Menu and state code cleaned up a little.
|
|
* Configuration menu split up into Video, Audio,
|
|
Controls and Game.
|
|
* ct_list_t now interprets change(0) (ie button press
|
|
or similar) as change(1), rather than just ignoring
|
|
it.
|
|
|
|
Kobo Deluxe v0.4-pre4
|
|
* Replaced corrupted README.jp.
|
|
* Delayed fps printout to program exit, as some setups
|
|
have serious trouble with output to the console while
|
|
running the game.
|
|
* Fixed a sleeping bug in the gl_blendfunc() wrapper.
|
|
* It's now possible to quit gracefully while loading
|
|
data. (Check when updating the progress bar.)
|
|
* Old style mouse control is back. (Not that I
|
|
understand how anyone could play with that... :-)
|
|
* Bigger and more visible mouse crosshair.
|
|
* Added 'mouse' switch and 'mousemode' variable to
|
|
config. (MMD_RELATIVE not yet implemented!)
|
|
* Video config cleaned up - unsupported OpenGL
|
|
settings removed.
|
|
* Radar window code cleaned up and simplified.
|
|
* window_t::alloc_color renamed to map_rgb, which is
|
|
more appropriate. The new version takes either three
|
|
Uint8 components (rather than X style Uint16), or an
|
|
Uint32 for "HTML style" hex codes.
|
|
* Diagonal rocket sprites lined up with diagonal Kobo
|
|
(the player's ship! :-) sprites. (The ship has an
|
|
offset of +1 pixel in y in the gfx)
|
|
* Added missing (8'th) frame to explosion animation.
|
|
* glSDL:
|
|
* Some tiling bugs fixed.
|
|
* Single tile case optimized.
|
|
* Vertical tiling implemented.
|
|
* Horizontal and vertical tiling across multiple
|
|
textures implemented! (Not both h & v, though.)
|
|
* Off-screen blits are culled.
|
|
* Benchmark results:
|
|
P-III 933, Matrox G400, XFree86 4.1.0-17mdk:
|
|
Resolution SDL 2D glSDL ratio
|
|
-----------------------------------------------
|
|
1280x1024 16 60 3.8
|
|
960x720 28 102 3.6
|
|
640x480 62 202 3.3
|
|
320x240 227 205 0.9
|
|
|
|
Note that OpenGL is pumping quite a bit more pixels
|
|
than SDL's RLE blitter in this game, due to the alpha
|
|
blended window frame. Here are the results with no
|
|
frame:
|
|
P-III 933, Matrox G400, XFree86 4.1.0-17mdk:
|
|
Resolution SDL 2D glSDL ratio
|
|
-----------------------------------------------
|
|
1280x1024 18 93 5.2
|
|
960x720 32 163 5.1
|
|
640x480 70 205 2.9
|
|
320x240 256 205 0.8
|
|
Notice how glSDL appears to win even more in higher
|
|
resolutions, while it loses a little to SDL 2D in the
|
|
low end, where fill rate becomes next to insignificant
|
|
to OpenGL.
|
|
|
|
Kobo Deluxe v0.4-pre3
|
|
* Hitting the window close button now causes a "brutal"
|
|
quit, just like hitting ctrl-C in the console.
|
|
* Mac OS X OpenGL build script fix.
|
|
* Now uses SDL_opengl.h if present. (Dunno if the check
|
|
is totally portable, though - but if it fail, at least
|
|
things shouldn't be worse than with the old way.)
|
|
* Implemented tiling of wide surfaces.
|
|
* Does *not* support multiple textures, so it
|
|
won't help with wide *and* tall surfaces, that
|
|
simply won't fit in one texture. (Sorry,
|
|
256x256 people! ;-)
|
|
* The rendering loop for tall surface tiling is
|
|
missing... (Mostly a matter of cut'n'paste +
|
|
search'n'replace.)
|
|
* Anyway, this means that Kobo Deluxe now
|
|
RENDERS PERFECTLY ON OPENGL! :-)
|
|
|
|
Kobo Deluxe v0.4-pre2
|
|
* The glSDL layer:
|
|
* Now uses handles instead of pointers!
|
|
* Various bugs and stability issues fixed.
|
|
--> Still misses vital features.
|
|
--> Leaks textures - or at least TexInfos.
|
|
* Some double buffer compatibility issues fixed.
|
|
* "Stall" when rebuilding menues fixed.
|
|
|
|
Kobo Deluxe v0.4-pre1
|
|
* Build with OpenGL on X fixed - without breaking Win32
|
|
and Mac OS X!
|
|
* Added dummy score file to keep stupid WinZip from
|
|
removing 'scoredir'...
|
|
* Added README.jp translated by Tsuyoshi Iguchi (?).
|
|
|
|
Kobo Deluxe v0.3
|
|
* Name officially changed to 'Kobo Deluxe'
|
|
* Upgraded to sfifo-1.2.
|
|
* Various configure script fixes.
|
|
* Added README file.
|
|
* Updated logo.
|
|
* Added filemapper_t, to handle paths on all platforms.
|
|
* Rearranged main loop to handle re-initialization.
|
|
* Fixed garbage after name in score files.
|
|
* Rearranged score management code slightly.
|
|
* Added prefs_t, which can parse, read and write options
|
|
from/to command line args and files.
|
|
* Kobo now tries to save a backup of the user score file
|
|
in the user's home dir.
|
|
* Cleaned up the game state system a bit, and added
|
|
confirmation dialogs before aborting game or quitting
|
|
Kobo.
|
|
* Added various eye candy.
|
|
* Added "Options" page.
|
|
* Class myship now releases the player ship object as well
|
|
when turned off. (myship, and a bunch of other objects,
|
|
won't be destroyed and re-created when reinitializing.)
|
|
* Moved graphics/ and audio/ from source to include path.
|
|
* Added sound effects to the user interface.
|
|
* Added Mac OS X fixes by Max Horn <max@quendi.de>
|
|
* Quits on window close event (Max Horn <max@quendi.de>)
|
|
* Paths for Mac OS X bundles added.
|
|
* Fixed +/- keys for selecting level. (Thanks Max!)
|
|
* Automatic timed logo/highscore switch added.
|
|
* Credits screen added.
|
|
* Simple scroll text added.
|
|
* Win32 and Mac OS X bundle install styles added.
|
|
* Added feedback delay based reverb with LP filters.
|
|
* Added limiter/AGC with threshold and release params.
|
|
* Joystick support; Samuel Hart <criswell@geekcomix.com>.
|
|
* Filter plugin support added to "sprite".
|
|
* Plugins added: rgb8, rgba8, cleanalpha, key2alpha, scale
|
|
and displayformat.
|
|
* Implemented the "size" feature with three different
|
|
scaling filter modes.
|
|
* Sprite and tile "palettes" separated for correct scaling.
|
|
* Added various "fade out" effects.
|
|
* Added "LOADING" screen.
|
|
* Added "Screen Buffer Mode" setting with single, double,
|
|
semi triple and half buffering modes. (Note that the game
|
|
doesn't yet support all of them properly.)
|
|
* Added FPS counter. (-fps switch)
|
|
* Progress bar while loading and converting data.
|
|
* gamestatemanager_t instead of those switch() statements...
|
|
* Added "Get Ready" and "Game Over" states.
|
|
* Improved filemapper_t and score_t portability. (I think...)
|
|
* Removed annoying key state clearing.
|
|
* SoFont:
|
|
* CleanSurface() now only cleans the top row.
|
|
* Fixed rounding when spacer width is odd.
|
|
* No testing of '|' (for cursor) if the font
|
|
doesn't have it.
|
|
* CS engine:
|
|
* Freeing free objects won't crash the engine.
|
|
* Safer and (probably) faster wrapping code.
|
|
* "width" and "height" replace "size" option.
|
|
* Cleaned up config_form_t and added a "rebuild" action for
|
|
dynamic configuration panels.
|
|
* Added config options and gfxengine_t::driver(). (No OpenGL
|
|
code yet. OpenGL options hidden in "options".)
|
|
* Added a thin black border in windowed mode.
|
|
* Proper clipping done by window_t::invalidate() and
|
|
gfxengine_t::invalidate().
|
|
* Sprite and text calls for fixed point coordinates added.
|
|
* Fixed gfxengine_t::loadrect() - it dropped the RLE!
|
|
* Added contrast and offset parameters to cleanalpha plugin.
|
|
* Audio engine:
|
|
* Added "nearest sample" resampling support.
|
|
* Improved sample looping accuracy.
|
|
* Added "samplerate" option.
|
|
* Random pitch effect on some sound effects.
|
|
* Improved pause mode. (Switches to "get ready".)
|
|
* BTN_FIRE can now be used to start game from intro.
|
|
* Cleanup + fix: SHIPS display is now updated correctly.
|
|
* Added quick hack OpenGL rendering layer. (64 bit broken!)
|
|
* "Escape" in pause mode now sends you to "Abort Game?".
|
|
* Added AdvanceMAME "Scale2x" scaling filter.
|
|
* Gave up on Scale2x + fuzziness factor - it just won't work
|
|
for 256+ color graphics. (It's still there, though.)
|
|
* Added Diamond2x scaling filter - The Best so far! Also
|
|
very fast, even without serious optimizations.
|
|
* Various scaling filter bug fixes and cleanups.
|
|
* C++ extension changed from '.C' to '.cpp'.
|
|
* Linux/i586/VGA vidsync hack removed.
|
|
* Added main menu with "Start Game!", "Options" etc.
|
|
* sprite.c: Size check for loading sprite palettes.
|
|
* Added rotating tube effect for menu highlighting.
|
|
|
|
*** Name changed to "Kobo Deluxe".
|
|
|
|
SKobo v0.2
|
|
* "sprite.c" now uses SDL_DisplayFormatAlpha().
|
|
* Various autoconf checks added and implemented.
|
|
* Audio ported to SDL. (OSS support remains.)
|
|
* "-latency XXX" argument to set maximum desired audio
|
|
latency in milliseconds. Default is 50 ms.
|
|
* Added control API to audio engine. (Moved looping there.)
|
|
* Initial Win32 support:
|
|
* Hacked temporary kludge in score.C
|
|
* Added _snprintf define for snprintf()
|
|
|
|
SKobo v0.1 update (forgot to mention this...)
|
|
* GIMPed new "Kobo Next Generation" logo.
|
|
* Added the display_t class, which inherits from window_t,
|
|
and forms a display with a caption and text field.
|
|
* Added GIMPed framework for the whole screen.
|
|
* Re-implemented the "starfield" by grabbing 64 starry
|
|
tiles from an XKobo screenshot.
|
|
* Centered radar screen vertically, moving "stage" and
|
|
"ships" down below the radar screen.
|
|
* Added "HIGHSCORE" display.
|
|
|
|
SKobo v0.1
|
|
* Removed all X specific code.
|
|
* Added graphics and control system code from Project Spitfire.
|
|
* Wrote gfxengine_t class. (Control system + video wrapper.)
|
|
* Rearranged source tree and switched to autoconf/automake.
|
|
* Wrote window_t class. (Clipping, scrolling etc.)
|
|
* Fixed some bugs in sprite.c and cs.c. (*heh*)
|
|
* Added text using the C++ version of SFont; SoFont.
|
|
* Changed audiodev_t to open in nonblocking mode, to avoid the
|
|
game going to sleep if the device is busy. SKobo disables
|
|
sound FX if the audio device cannot be opened.
|
|
* Pixeled new font and GIMPed a temorary logo.
|
|
* Added alpha blended frame with rounded corners.
|
|
* Added scrolling background (level 20) in intro mode.
|
|
* Selecting starting level now shows the selected level in
|
|
the radar display and intro screen background.
|
|
* Enlarged the core diameter by two pixels.
|
|
|
|
*** David Olofson <do@reologica.se> forks from 'V1.11+-do3', and
|
|
calls the new branch SKobo, with version numbers starting over
|
|
at 0.1.
|
|
|
|
V1.11+-do3
|
|
* Cleaned up audio code and API.
|
|
* Added sample looping feature.
|
|
* Changed mixed fp/integer mixer into integer-only.
|
|
* Increased internal mixer level to avoid dropping bits.
|
|
* Fixed silly bug from -do2: The original sound was indeed
|
|
in stereo! <:*)
|
|
|
|
V1.11+-do2
|
|
* Adjusted sound effects reference level. (Louder sfx.)
|
|
|
|
V1.11+-do1
|
|
* Ported sound to OSS
|
|
* Sound is enabled by default (use -nosound to disable)
|
|
* Made audio run asynchronously with lock-free command FIFO
|
|
|
|
*** David Olofson <do@reologica.se> picks up XKobo 1.11+ from Izumo,
|
|
adding '-doX' to the version code.
|
|
|
|
V1.11+
|
|
* SGI sound added.
|
|
* Triple size mode added.
|
|
|
|
*** Masanao Izumo <mo@goice.co.jp> picks up XKobo 1.11, appending
|
|
'+' to the version code.
|
|
|
|
V1.11
|
|
* ??
|
|
|
|
V1.10
|
|
* fixed an endianness problem of score files
|
|
* secure score files
|
|
|
|
V1.9
|
|
* take measure against system calls interrupted by SIGALRM
|
|
* '-hiscores' option
|
|
* bonus ships
|
|
|
|
V1.8
|
|
* add close() in file.C
|
|
|
|
V1.7
|
|
* enabled to move on diagonals using the numeric keypad
|
|
|
|
V1.6
|
|
* support for Solaris 2
|
|
|
|
V1.5
|
|
* ceased to use semaphores
|
|
* fixed a strange usage of setitimer
|
|
* '-wait' option
|
|
|
|
V1.4
|
|
* '-cheat' option
|
|
* enabled to play using a mouse
|
|
* enabled to compile with gcc-2.7.0
|
|
|
|
V1.3
|
|
* fixed a bug about '-fit' option
|
|
* enabled to select a stage to play
|
|
|
|
V1.2
|
|
* support for TrueColor X server
|
|
* '-fit' option
|
|
* '-doublesize' option
|
|
|
|
V1.1
|
|
* first uploaded to tsx-11.mit.edu
|