1 -------------------------------------------------------------------------------
4 * French translation update
5 * Fixed HUD display of selected camera
6 * Rip out locale <-> UTF-8 filename conversions (and a direct iconv dep)
7 * Allow view rotation using second gamepad stick
8 * Remove static replay limit
9 * Fixed label corners in help screen
10 * Simplified Chinese translation
11 * Allow fall back to non-localised font path
12 * Make fast view rotation modifier configurable, and support joystick
13 * Squash embarrasing out-of-bounds access bug
14 * Redo video init when turning on reflections, to fix the
15 long-standing crazy reflections bug
16 * Middle mouse button toggles between chase/manual views
17 * ufo.map: Tiny texture fix
18 * accordian.map: increase time by 5 seconds
19 * Fix a buffer overflow when reading player name from replay, and
20 support stored names of arbitrary length
21 * Implement a Quake-like virtual file system with ZIP archive support
22 * Make sets.txt optional
23 * Write and look for replays in a Replays directory
24 * Move replays found at the top of the user dir into Replays
25 * Keep scores in a Scores directory (migrate old ones, too)
26 * Write all screen shots to a Screenshots directory
27 * Set GL read buffer to "front" once and for all when setting video mode
28 * Actually use the "joystick" config option
29 * mapc: report unknown materials
30 * Use separate score files in cheat mode
31 * Document font requirements
32 * Increase default view rotation rates
33 * Load entire font to memory at init
34 * Add a ball configuration screen
35 * Added brass-faceted texture to match chrome-faceted
36 * title.map: Aligned stray coin to the 32-unit grid
37 * Spanish translation update
38 * Add normal green texture
39 * Exclude vertical ball velocity from view computations (no more
40 spinning out of control while in air)
41 * Added non-reflective texture "blue-wave" for moving water
42 * Fix typo in French translation
43 * spacetime.map: Small fixes
44 * coneskeleton.map: Changed goal_hs times that were based on an
46 * Remove "--info" command line option
47 * Include initial view data in the first update (in replays)
48 * Allow camera switching during ready/set stage
49 * Add missing sounds in resolution screen
50 * Tweak selector layout in resolution screen
51 * Add some space between navigation and set/level selectors
52 * Make sure the last viewed set selection page actually exists
53 * Correctly register scores for levels with no time limit
54 * Remove static level set limit
55 * Show 6 sets per page
56 * Paint background first, then mirrors (fix for environments with
57 layers very close to origin)
58 * Add a Volcano environment (used in levels from Hard 09 to Hard III)
59 * Add new BGM track6.ogg for use in Volcano environment
60 * Time to the left, coins to the right in the score board
61 * Paint score buttons green on a high-score in that score type
62 * Preempt many buffer overflows related to strncpy usage
63 * Add label truncation, truncate long labels in several screens
64 * Clip shadowed geometry above the ball center
65 * Remove unused Bitstream Vera font
66 * Revert "Request SSE floating-point math from GCC for x86 systems"
67 * Updated DejaVu font to v2.29
68 * Remove archaic "levelname" attribute from maps
69 * Tweak replay compatibility warning message
70 * airways.map: split message across two lines
71 * Do not step state unless it has been painted at least once (avoids
72 "fast-forwards" after long screen loads)
73 * Change "joystick" default to 1
74 * Brazilian Portuguese translation
75 * Remove several uninteresting or problematic balls
76 * Decrease par to 4 on hole 18 of Tricky Golf
77 * Change Challenge info area in goal screen to fix breakage using
80 -------------------------------------------------------------------------------
83 * Prevent thread race that was occasionally crashing the game
84 * Rename Unlock Goal scores to Fast Unlock
85 * Make mouse buttons configurable (full view control)
86 * Add bindings to toggle between chase and manual views
87 * Actually load/save joystick dpad config
88 * Transform default game/locale data paths based on executable name
89 * Treat a single unrecognised argument as a replay name
90 * turn.map: full rebuild to prevent a bothering camera problem
92 * bigcone.map: rebuilt bottom part of the cone (invalidates replays)
93 * German, French, Catalan translation updates
94 * Init the default fast unlock coin values with the level's goal value
95 * Display warning on map version mismatch when watching replays.
96 * ufo.map: Change to reduce stress on the physics engine (invalidates
98 * Make ENABLE_WII=1 compile again
99 * adventure.map: Rearranged several coins (invalidates replays)
101 -------------------------------------------------------------------------------
104 * Added dictionary elements to SOL file in order to allow metadata storage.
105 * Reverted short usage in SOL to int. Was bumping up against the limit.
106 * Added new textures.
107 * Corrected various mapping problems in existing maps.
109 * Removed 5 set limit.
110 * Added internationalization.
111 * Added Catalan, Finnish, French, German, Latvian, Norwegian Nynorsk,
112 and Spanish translations.
113 * Countless interface tweaks across the board.
114 * Added three new Neverball sets.
115 * Reshuffled levels to smooth the difficulty curve.
116 * Fixed config not being saved sometimes.
117 * Fixed a misplaced Set Complete screen.
118 * Split off limited lives and set high-scores to a separate
119 "Challenge" game mode.
120 * Added bonus levels as a reward in Challenge mode.
121 * Added four new Neverputt courses.
122 * Fixed goal sound not being played in replays.
123 * Removed OSX mouse invert work-around.
124 * Reworked player name management.
125 * Added keyboard support for typing text.
126 * Added an option to launch replays from the command line.
127 * Added a dialog with replay info in replay selection screen.
128 * Added Unlock Goal high-scores.
129 * Made replays use the .nbr filename extension.
130 * Added invisible switches.
131 * Fixed layout falling apart due to long replay names.
132 * Added a new help system.
133 * Added a HUD toggle, bound to F6.
134 * Removed coin texture config option, it's now based on locale instead.
135 * Display current camera type when starting a level.
136 * Save screenshots as PNG instead of BMP.
137 * Implemented collectible grow/shrink items.
138 * Added ability to restart a level mid-game (normal mode only), bound to R.
140 * Fixed replays not being overwritten on Windows.
141 * Increased mapc limits.
142 * Fixed a repeated path inaccuracy.
143 * Fixed mute sounds after toggling the audio setting in config screen.
144 * Added multisample option.
145 * Fixed ball texture seem.
146 * Fixed GUI font texture coordinates sometimes being off by half a pixel.
147 * Made ball bounce more realistically with respect to moving objects.
148 * Replaced all TGA files with PNGs.
149 * Made several key bindings only available in development mode.
150 * Removed MSVC support, only MinGW is supported.
151 * Store user config in %APPDATA%\Neverball on Windows.
152 * Bound camera rotation keys to S and D by default.
153 * Added new pause screen.
154 * Changed lights to evenly illuminate entire maps.
155 * Fixed not being able to deactivate a timed switch on at start of level.
156 * Added platform acceleration toggle.
157 * Added Neverputt keyboard navigation.
158 * Added decal material flag in order to enable decals coincident with
160 * Added a tweak to place the GUI into "recently moved" mode upon level
161 end. This will force the player to recenter the joystick before the
162 GUI with work. Thus, the default button will not be accidentally
163 deselected if the joystick is not centered when play ends.
164 * Changed mover OBJ mechanism.
165 * Removed ball shadow in poser mode.
166 * Rewrote audio code without SDL_mixer dependency to eliminate
167 annoying crackle on various platforms.
168 * Removed audio_rate config variable.
169 * Rewrote image handling, eliminating SDL_image.
170 * Added mipmap and anisotropic options.
171 * Fixed level data not being freed by conf state. This allowed OpenGL
172 state to leak when the context is bounced on resolution change.
173 * Fixed image_white not saturating red channel on RGB and RGBA images.
174 * Modified material sorter to draw opaque decals AFTER opaque
175 textures, and transparent decals BEFORE transparent textures.
176 * Removed TGA search from mapc.
177 * Added lump smoothing to mapc.
178 * Added glassy effect to glass materials.
179 * Some OpenGL optimization and state-change reduction.
180 * Added foreground billboards.
181 * Fixed the zero-velocity test in the edge/vert collision detection.
182 Was producing different results with different compilers.
184 * Modified FPS calculation to be more correct.
185 * Added stats collection and output.
186 * Added application controlled vblank sync.
187 * Enhanced specular illumination.
188 * Added tilt sensor abstraction.
189 * Added Wiimote tilt sensor mode for Linux.
190 * Fixed empty buttons possibly being layed out so small that the
191 rounding rectangle overlaps itself.
192 * Added joystick digital pad button config symbols.
193 * Fixed failure to load ball texture breaks shadow texture.
194 * Added new ball rendering mechanism.
195 * Added several new balls using the new mechanism.
196 * Ignored mouse motion events generated on mouse grab, sometimes
197 causing sudden tilting to bottom right at level start.
199 * Added uniform sync option.
200 * Fixed Neverputt using hard-coded limits for score counts.
201 * Added curve tool to distribution.
202 * Implemented new shot name generation using a persistent index.
203 * Now saving screenshots in user data directory.
204 * Added support for decimal fractions in mapc.
205 * Rebuilt curves in maps to take advantage of decimal fractions.
206 * Allowed spaces in config values.
207 * Greatly optimized several mapc operations.
208 * Fixed texture rotation in mapc.
209 * Used OpenGL memory layout conventions for storing image data,
210 allowing proper texture coordinates to be used in OBJs and
212 * Moved goal detection factor from code to Neverputt maps.
213 * Set the EWMH _NET_WM_ICON window hint on X11 systems (WM icons with
214 8-bit alpha transparency).
215 * Delayed buffer swap in level_snap until after image_snap, following
216 OpenGL standard and fixing off-by-one type error in set shots on
218 * Eliminated performance penalty on mirror-less maps with reflections
220 * Made default replay name user-configurable.
221 * Fixed mapc to avoid overflows when operating on SSE hardware.
222 * Fixed logic of BSP back/front tests.
223 * Requested SSE floating-point math from GCC for x86 systems
224 * Redesigned teleporter visuals.
225 * Implemented a server/client-like game/replay architecture.
227 -------------------------------------------------------------------------------
230 * Fixed font renderer to never exceed maximum texture size.
232 -------------------------------------------------------------------------------
235 * Fixed broken Unix build.
236 * Added OSX SDL mouse invert workaround.
237 * A few texture tweaks.
238 * Fixed broken Ball HUD.
240 -------------------------------------------------------------------------------
244 * Added wireframe view to Putt.
245 * Fixed view toward hole when the hole is directly above or below the ball.
247 -------------------------------------------------------------------------------
250 * Made a few minor fixes to paxed's holes.
251 * Added score and par to HUD.
252 * Show score card only after a hole is finished.
253 * Added timeouts to all in-game states except Next Player.
254 * Fixed texture ID leak in conf state.
256 -------------------------------------------------------------------------------
259 * Modified joystick traversal of GUIs to wrap top/bottom and left/right.
260 * Converted Putt to use Ball's GUI API.
261 * Merged Putt's and Ball's audio managers into shared.
262 * Added "Paused" screen to Putt.
263 * Generalized Putt's scoring to allow courses of length other than 18.
264 * Enabled switches in Putt.
265 * Added paxed's Putt courses.
266 * Changed a few textures on paxed's courses.
267 * Capped per-hole scores at 12.
268 * Modified several Putt backgrounds.
269 * Applied a change to Mehdi 25.
270 * Added poser mode to Putt.
271 * "Fixed" mouse jump on pointer grab. SDL is unpredictable here.
272 * By popular demand, set initial ball view toward hole.
274 -------------------------------------------------------------------------------
277 * Fixed mapc normal optimization bug. Resolves the Putt 16 invisible wall.
279 -------------------------------------------------------------------------------
282 * Fixed mapc normal optimization bug. Resolves the "Level 6" crash.
284 -------------------------------------------------------------------------------
287 * Applied fixes to Mehdi's levels
288 * Fixed GUI keyboard caps lock bug.
289 * Fixed no default GUI state on Done screen (joystick didn't work).
290 * Added fast camera rotation bound to Shift keys.
291 * Added camera rotation rate to config file.
292 * Modified perspective matrix to match gluPerspective.
294 -------------------------------------------------------------------------------
297 * Removed unnecessary autopause when pointer is not grabbed.
298 * Fixed GUI not hilighting widget under cursor when mouse isn't moved.
299 * Fixed config file written only when changed.
301 -------------------------------------------------------------------------------
304 * Removed few remaining bits of GLU code.
305 * Whitened glyph textures manually rather than relying upon pixel bias.
306 * Fixed Neverputt shadow
308 -------------------------------------------------------------------------------
311 * Rewrote shadow code to use mulipass rather than multitexture.
312 * Removed all multitexture code.
313 * Added shadow option to config screen.
314 * Fixed music fade-in bug.
315 * Fixed badly named static variable "clock".
316 * Added level number to replay save screen.
318 -------------------------------------------------------------------------------
321 * Fixed Save Replay not allowing score count to complete.
322 * Fixed bad unlock score in Mehdi 25.
324 -------------------------------------------------------------------------------
327 * Fixed replay header nonportable.
329 -------------------------------------------------------------------------------
332 * Rewrote SOL reader/writer to remove byte-order dependance.
333 * Rewrote replay handler to remove byte-order dependance
334 * Modified replay selector to ignore partial replays.
335 * Added camera mode gamepad control.
336 * Applied Mehdi's updates to several levels.
337 * Generalized config string handling. Added coin and ball option strings.
338 * Added two new background music tracks.
339 * Fixed broken set scoring.
340 * Added Set Record screen.
342 -------------------------------------------------------------------------------
345 * Added caps lock key to keyboard.
346 * Worked around Neverputt overwriting Neverball's camera setting.
347 * Added clobber confirmation to replay save.
348 * Fixed an audio bug when fading to the currently playing song.
350 -------------------------------------------------------------------------------
353 * Merged set-complete state into goal state, fixing set-complete crash.
354 * Fixed a few game state init crashes.
355 * Fixed a few pointer grab issues.
356 * Added random replay during attract mode.
357 * Added scene fade in/out.
358 * Fixed a bug causing the texture quality setting to be ignored.
359 * Moved shadow handling in with other geometry, where it belongs.
360 * Moved particle and shadow init/free out of game init/free and into config.
362 -------------------------------------------------------------------------------
365 * Improved directory handling. No longer depends on CWD.
366 * Moved all config files to ~/.neverball/ directory.
367 * Screenshots now go to CWD, which is not changed.
368 * Reorganized replay handling.
369 * Added replay save / play / delete GUIs.
370 * Added auto disabling of stereo and reflection is mode set fails.
371 * Changed default pointer state to ungrabbed.
373 -------------------------------------------------------------------------------
376 * Changed policy: Goal opens after a set number of coins are collected.
377 * Changed policy: Extra balls are awarded only after a goal.
378 * Changed policy: Game is saved after every goal.
379 * Changed hud to reflect new scoring policies.
380 * Fixed volume set bug.
381 * Fixed shadow visible on reflective surfaces in level shots.
382 * Fixed music on config screen.
383 * Increased ball transparancy to accomodate new view.
384 * Added subtle view distance flexibility.
385 * Merged Goal and High Score states.
386 * Tweaked some levels and scores in line with new scoring policies.
387 * Added better fading to make music less repetitious and annoying.
389 -------------------------------------------------------------------------------
392 * Modularized state functions.
393 * Changed view to make horizon visible.
394 * Added view configuration options for people who whine about the new view.
395 * Changed background images to augment horizon.
396 * Fixed Neverputt far clip set closer than background.
397 * Fixed an audio init bug.
398 * Generalized config handling.
399 * Heavily modified GUI handling.
400 * Replaced all 2D menus with new GUI code.
401 * Changed image loading policy to support non-power-of-two images.
402 * Replaced Win32 makefile with VS.Net solution.
403 * Rewrote HUD to use new GUI handler.
404 * Added billboard objects to .SOL file.
405 * Policy change: .SOL files now go in same directory as .MAP files.
406 * Changed mapc to derive .SOL file name from .MAP file name.
407 * Changed pause screen to include the word "Paused".
408 * Changed internal clock to use integer deciseconds instead of float seconds.
409 (HIGH SCORE FILE CHANGED)
410 * Made some fixes to reflection handling.
411 * Added background .SOLs.
412 * Added wireframe mode.
413 * Added look-around mode.
414 * Added keyboard-to-joystick input mapping.
415 * Added mipmap generation.
416 * Added clamped material type.
418 -------------------------------------------------------------------------------
421 * Fixed refrected background rotation.
422 * Added OBJ loading to mapc.
423 * Finally fixed material hack in mapc.
424 * A few graphical optimizations.
425 * Added shadow config option.
426 * Added sphere-map material type.
427 * Modified many levels to use detail OBJs.
428 * Traded doubles/ints for floats/shorts in the .sol file. This cuts .sol
429 file size in half, but puts a limit on level complexity.
431 -------------------------------------------------------------------------------
434 * Added camera control key binding to config file.
435 * Fixed some braindead reflection handling code.
436 * Fixed broken config menu.
437 * Fixed sound volume adjustment crash when sound is disabled.
438 * Fixed very stupid game timing bug that had been around far too long.
440 -------------------------------------------------------------------------------
443 * Added reflection material.
444 * Modified several levels to use reflective material.
445 * Added option to disable reflection materials.
446 * Updated mapping documentation.
447 * Changed shadow CLAMP_TO_EDGE to CLAMP to work around some bad drivers.
448 * Added arrow key bindings for camera rotation.
450 -------------------------------------------------------------------------------
453 * Fixed a sneaky bug in menu memory that allowed unopened levels to be played.
454 * Fixed camera rotation joystick button init bug.
455 * Changed options menu to make unavailable modes unselectable.
456 * Implemented auto-pause when the game loses focus externally.
457 * Simplified ARB extension handling.
458 * Made another tweak to the level set screenshot loader.
459 * Applied Mehdi's tweak to level 5.
461 -------------------------------------------------------------------------------
464 * Fixed the scoring bug for real this time.
465 * Documented global set scoring.
466 * Added a ball "ghost" to ensure the ball remains visible when obscured.
468 -------------------------------------------------------------------------------
471 * Fixed the path timing bug for real this time.
473 -------------------------------------------------------------------------------
476 * Updated Mehdi's set to final.
477 * Fixed a path timing bug to correct a slight path pause discrepancy.
478 * Fixed scoring bug that was adding coins from failed level to global score.
479 * Fixed a bug corrupting level set screenshots.
481 -------------------------------------------------------------------------------
484 * Reorganized code, merged Neverputt code.
485 * Added friction physics.
486 * Fixed goal particle radius.
488 -------------------------------------------------------------------------------
491 * Set all menus to remember their last selection. Now the frustrated player
492 need only pound angrily on the mouse button to get back to his last save.
494 -------------------------------------------------------------------------------
497 * Fixed pipe.sol dependancy missing from Win32 makefile.
500 -------------------------------------------------------------------------------
503 * Mouse invert and joystick select patches.
504 * Minor level tweaks.
505 * Fixed no levels open after reading old high score file.
506 * Fixed activation of all switches at the same location.
507 * Added camera HUD indicator.
509 -------------------------------------------------------------------------------
512 * Added stereo viewing.
513 * Fixed Win32 makefile.
515 -------------------------------------------------------------------------------
518 * Minor tweaks and cleanup for an announced release.
520 -------------------------------------------------------------------------------
523 * Changed default scores file format, removing player names.
524 * Adjusted level order and default scores.
525 * Reimplemented physics lock punt.
527 -------------------------------------------------------------------------------
531 * Fixed texture positioning bug
532 * Darkened screen during pause
533 * Modified high scores to keep global highs. (HIGH SCORE FILE CHANGED)
534 * Added new automatic level shot grabber.
535 * Tweaked BSP optimizer.
537 -------------------------------------------------------------------------------
540 * Modified some textures.
541 * Modified some levels.
542 * Modified switches to switch entire path chains.
543 * Disallowed player from toggling timed switches off manually.
545 -------------------------------------------------------------------------------
548 * Added level set selector. (HIGH SCORE FILE CHANGED)
549 * Modified demo playback to handle level sets.
550 * Added BSP optimization to physics.
553 * Added Mehdi's level set.
554 * Modified switches to act on paths rather than bodies.
555 * Added timer option to switches.
557 -------------------------------------------------------------------------------
560 * Modified physics to better handle vertical movers.
561 * Added mover switch entity.
562 * Replaced level 13 with a level using vertical movers and switches.
564 -------------------------------------------------------------------------------
569 -------------------------------------------------------------------------------
575 -------------------------------------------------------------------------------
578 * Changed platforms to accelerate rather than change velocity instantly.
579 * Changed timer to display minutes. Increased max time from 99s to 9m59s.
580 * Changed teleport exit to be relative to teleport entry.
581 * Fixed time comparison ambiguity.
583 -------------------------------------------------------------------------------
586 * Fix broken load balancer starving the renderer on early level load.
587 * Disabled music playback entirely when music volume is zero.
589 -------------------------------------------------------------------------------
592 * Demo record and replay.
594 -------------------------------------------------------------------------------
597 * Padded .sol files to make them portable between Linux and Windows.
598 * Added pulsing HUD numbers.
599 * Changed Windows config file path.
600 * Changed pause mode to continue rendering.
602 -------------------------------------------------------------------------------
605 * Added background music.
606 * Changed several sounds.
607 * Added sound and music volume control to options screen and config file.
608 * Fixed discrepancy between reported time and recorded time.
609 * Fixed new coin record not triggering name input state.
610 * Fixed ESC during goal state.
612 -------------------------------------------------------------------------------
615 * Level score and high score list added to goal screen.
616 * Level score added to record screen.
617 * Goal screen requires click-through instead of time-out.
618 * Fixed level time bug. Clock was running during goal screen.
620 -------------------------------------------------------------------------------
623 * Player name stored in config.
624 * Keyboard camera selection.
627 -------------------------------------------------------------------------------
630 * Changed save game policy: it must be earned by collecting coins.
631 * Added camera tracking configuration option.
632 * Added coin sub-sort of time records.
633 * Added time sub-sort of coin records.
634 * Fixed exit-during-teleport bug.
635 * Fixed potential infinite loop when ball is crushed.
636 * Warn and continue on audio init failure.
638 -------------------------------------------------------------------------------
641 * Modified camera tracking, disabled direct camera control.
643 -------------------------------------------------------------------------------
646 * Added default records. Something to shoot for.
648 -------------------------------------------------------------------------------
651 * Added record keeping.
652 * Reorganized level selector to include records.
653 * Added record name input state.
654 * Changed shadow clamp back to CLAMP_TO_EDGE. Screw broken drivers.
655 * Changed timer to display hundredths of seconds.
656 * Got rid of clock tick until last 10 seconds (it conflicts with music).
657 * Returned original menu pointer motion. Reorganized point hide.
658 * Globalized pause state to generalize pointer grab handling.
660 -------------------------------------------------------------------------------
663 * Added teleportation.
664 * Changed menus to work with relative pointer motion.
665 * Changed pointer grab policy to lessen grab motion discontinuity impact.
666 * Fixed channel order for TGA textures.
667 * Fixed level selector link topology.
670 -------------------------------------------------------------------------------
673 * Display screen shots in level selector.
674 * Cut level selector to 25 to make room for level shot.
675 * Generalized flyby representation.
676 * Added poser state for capturing level shots.
679 -------------------------------------------------------------------------------
682 * Native Windows support returned.
683 * Fixed HUD not responding to texture quality setting.
684 * Hyper-paranoid ARB_multitexture usage.
686 -------------------------------------------------------------------------------
689 * Fixed input smoothing in game_step causing oscillation at low FPS.
690 * Worked around broken shadow CLAMP_TO_EDGE on i845G.
691 * Added high_level config and modified level select. Documented cheat.
694 -------------------------------------------------------------------------------
697 * New version numbering convention. Minor number is level count.
698 * Broke native Windows support.
699 * Reorganized source and Makefiles.
700 * Modified mapc to take a materials path.
701 * Fixed potential overflow in config_home.
703 -------------------------------------------------------------------------------
706 * Worked around broken color mask attribute pop in ball_draw on ATI.
708 -------------------------------------------------------------------------------
711 * Sent screenshots to $HOME rather than CWD, fixing segfault.
713 -------------------------------------------------------------------------------
716 * Removed some initial state assumptions that were wrong for some users.
717 * Fixed $HOME determination under Windows.
719 -------------------------------------------------------------------------------
722 * First release as "Neverball".
723 * Added joystick control.
724 * Added camera control.
726 * Added level intros.
727 * Added config file stored in $HOME.
728 * Removed text images and added TTF rendering.