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<53>ngberg added.
|
||
* String copy bug in cfgparse.cpp fixed. (Andreas
|
||
Sp<53>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<6F>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<53>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
|