1 -------------------------------------------------------------------------------
4 * Prevent thread race that was occasionally crashing the game
5 * Rename Unlock Goal scores to Fast Unlock
6 * Make mouse buttons configurable (full view control)
7 * Add bindings to toggle between chase and manual views
8 * Actually load/save joystick dpad config added in r1380
9 * Transform default game/locale data paths based on executable name
10 * Treat a single unrecognised argument as a replay name
11 * turn.map: full rebuild to prevent a bothering camera problem (may
13 * bigcone.map: rebuilt bottom part of the cone
14 * German translation update
16 -------------------------------------------------------------------------------
19 * Added dictionary elements to SOL file in order to allow metadata storage.
20 * Reverted short usage in SOL to int. Was bumping up against the limit.
22 * Corrected various mapping problems in existing maps.
24 * Removed 5 set limit.
25 * Added internationalization.
26 * Added Catalan, Finnish, French, German, Latvian, Norwegian Nynorsk,
27 and Spanish translations.
28 * Countless interface tweaks across the board.
29 * Added three new Neverball sets.
30 * Reshuffled levels to smooth the difficulty curve.
31 * Fixed config not being saved sometimes.
32 * Fixed a misplaced Set Complete screen.
33 * Split off limited lives and set high-scores to a separate
34 "Challenge" game mode.
35 * Added bonus levels as a reward in Challenge mode.
36 * Added four new Neverputt courses.
37 * Fixed goal sound not being played in replays.
38 * Removed OSX mouse invert work-around.
39 * Reworked player name management.
40 * Added keyboard support for typing text.
41 * Added an option to launch replays from the command line.
42 * Added a dialog with replay info in replay selection screen.
43 * Added Unlock Goal high-scores.
44 * Made replays use the .nbr filename extension.
45 * Added invisible switches.
46 * Fixed layout falling apart due to long replay names.
47 * Added a new help system.
48 * Added a HUD toggle, bound to F6.
49 * Removed coin texture config option, it's now based on locale instead.
50 * Display current camera type when starting a level.
51 * Save screenshots as PNG instead of BMP.
52 * Implemented collectible grow/shrink items.
53 * Added ability to restart a level mid-game (normal mode only), bound to R.
55 * Fixed replays not being overwritten on Windows.
56 * Increased mapc limits.
57 * Fixed a repeated path inaccuracy.
58 * Fixed mute sounds after toggling the audio setting in config screen.
59 * Added multisample option.
60 * Fixed ball texture seem.
61 * Fixed GUI font texture coordinates sometimes being off by half a pixel.
62 * Made ball bounce more realistically with respect to moving objects.
63 * Replaced all TGA files with PNGs.
64 * Made several key bindings only available in development mode.
65 * Removed MSVC support, only MinGW is supported.
66 * Store user config in %APPDATA%\Neverball on Windows.
67 * Bound camera rotation keys to S and D by default.
68 * Added new pause screen.
69 * Changed lights to evenly illuminate entire maps.
70 * Fixed not being able to deactivate a timed switch on at start of level.
71 * Added platform acceleration toggle.
72 * Added Neverputt keyboard navigation.
73 * Added decal material flag in order to enable decals coincident with
75 * Added a tweak to place the GUI into "recently moved" mode upon level
76 end. This will force the player to recenter the joystick before the
77 GUI with work. Thus, the default button will not be accidentally
78 deselected if the joystick is not centered when play ends.
79 * Changed mover OBJ mechanism.
80 * Removed ball shadow in poser mode.
81 * Rewrote audio code without SDL_mixer dependency to eliminate
82 annoying crackle on various platforms.
83 * Removed audio_rate config variable.
84 * Rewrote image handling, eliminating SDL_image.
85 * Added mipmap and anisotropic options.
86 * Fixed level data not being freed by conf state. This allowed OpenGL
87 state to leak when the context is bounced on resolution change.
88 * Fixed image_white not saturating red channel on RGB and RGBA images.
89 * Modified material sorter to draw opaque decals AFTER opaque
90 textures, and transparent decals BEFORE transparent textures.
91 * Removed TGA search from mapc.
92 * Added lump smoothing to mapc.
93 * Added glassy effect to glass materials.
94 * Some OpenGL optimization and state-change reduction.
95 * Added foreground billboards.
96 * Fixed the zero-velocity test in the edge/vert collision detection.
97 Was producing different results with different compilers.
99 * Modified FPS calculation to be more correct.
100 * Added stats collection and output.
101 * Added application controlled vblank sync.
102 * Enhanced specular illumination.
103 * Added tilt sensor abstraction.
104 * Added Wiimote tilt sensor mode for Linux.
105 * Fixed empty buttons possibly being layed out so small that the
106 rounding rectangle overlaps itself.
107 * Added joystick digital pad button config symbols.
108 * Fixed failure to load ball texture breaks shadow texture.
109 * Added new ball rendering mechanism.
110 * Added several new balls using the new mechanism.
111 * Ignored mouse motion events generated on mouse grab, sometimes
112 causing sudden tilting to bottom right at level start.
114 * Added uniform sync option.
115 * Fixed Neverputt using hard-coded limits for score counts.
116 * Added curve tool to distribution.
117 * Implemented new shot name generation using a persistent index.
118 * Now saving screenshots in user data directory.
119 * Added support for decimal fractions in mapc.
120 * Rebuilt curves in maps to take advantage of decimal fractions.
121 * Allowed spaces in config values.
122 * Greatly optimized several mapc operations.
123 * Fixed texture rotation in mapc.
124 * Used OpenGL memory layout conventions for storing image data,
125 allowing proper texture coordinates to be used in OBJs and
127 * Moved goal detection factor from code to Neverputt maps.
128 * Set the EWMH _NET_WM_ICON window hint on X11 systems (WM icons with
129 8-bit alpha transparency).
130 * Delayed buffer swap in level_snap until after image_snap, following
131 OpenGL standard and fixing off-by-one type error in set shots on
133 * Eliminated performance penalty on mirror-less maps with reflections
135 * Made default replay name user-configurable.
136 * Fixed mapc to avoid overflows when operating on SSE hardware.
137 * Fixed logic of BSP back/front tests.
138 * Requested SSE floating-point math from GCC for x86 systems
139 * Redesigned teleporter visuals.
140 * Implemented a server/client-like game/replay architecture.
142 -------------------------------------------------------------------------------
145 * Fixed font renderer to never exceed maximum texture size.
147 -------------------------------------------------------------------------------
150 * Fixed broken Unix build.
151 * Added OSX SDL mouse invert workaround.
152 * A few texture tweaks.
153 * Fixed broken Ball HUD.
155 -------------------------------------------------------------------------------
159 * Added wireframe view to Putt.
160 * Fixed view toward hole when the hole is directly above or below the ball.
162 -------------------------------------------------------------------------------
165 * Made a few minor fixes to paxed's holes.
166 * Added score and par to HUD.
167 * Show score card only after a hole is finished.
168 * Added timeouts to all in-game states except Next Player.
169 * Fixed texture ID leak in conf state.
171 -------------------------------------------------------------------------------
174 * Modified joystick traversal of GUIs to wrap top/bottom and left/right.
175 * Converted Putt to use Ball's GUI API.
176 * Merged Putt's and Ball's audio managers into shared.
177 * Added "Paused" screen to Putt.
178 * Generalized Putt's scoring to allow courses of length other than 18.
179 * Enabled switches in Putt.
180 * Added paxed's Putt courses.
181 * Changed a few textures on paxed's courses.
182 * Capped per-hole scores at 12.
183 * Modified several Putt backgrounds.
184 * Applied a change to Mehdi 25.
185 * Added poser mode to Putt.
186 * "Fixed" mouse jump on pointer grab. SDL is unpredictable here.
187 * By popular demand, set initial ball view toward hole.
189 -------------------------------------------------------------------------------
192 * Fixed mapc normal optimization bug. Resolves the Putt 16 invisible wall.
194 -------------------------------------------------------------------------------
197 * Fixed mapc normal optimization bug. Resolves the "Level 6" crash.
199 -------------------------------------------------------------------------------
202 * Applied fixes to Mehdi's levels
203 * Fixed GUI keyboard caps lock bug.
204 * Fixed no default GUI state on Done screen (joystick didn't work).
205 * Added fast camera rotation bound to Shift keys.
206 * Added camera rotation rate to config file.
207 * Modified perspective matrix to match gluPerspective.
209 -------------------------------------------------------------------------------
212 * Removed unnecessary autopause when pointer is not grabbed.
213 * Fixed GUI not hilighting widget under cursor when mouse isn't moved.
214 * Fixed config file written only when changed.
216 -------------------------------------------------------------------------------
219 * Removed few remaining bits of GLU code.
220 * Whitened glyph textures manually rather than relying upon pixel bias.
221 * Fixed Neverputt shadow
223 -------------------------------------------------------------------------------
226 * Rewrote shadow code to use mulipass rather than multitexture.
227 * Removed all multitexture code.
228 * Added shadow option to config screen.
229 * Fixed music fade-in bug.
230 * Fixed badly named static variable "clock".
231 * Added level number to replay save screen.
233 -------------------------------------------------------------------------------
236 * Fixed Save Replay not allowing score count to complete.
237 * Fixed bad unlock score in Mehdi 25.
239 -------------------------------------------------------------------------------
242 * Fixed replay header nonportable.
244 -------------------------------------------------------------------------------
247 * Rewrote SOL reader/writer to remove byte-order dependance.
248 * Rewrote replay handler to remove byte-order dependance
249 * Modified replay selector to ignore partial replays.
250 * Added camera mode gamepad control.
251 * Applied Mehdi's updates to several levels.
252 * Generalized config string handling. Added coin and ball option strings.
253 * Added two new background music tracks.
254 * Fixed broken set scoring.
255 * Added Set Record screen.
257 -------------------------------------------------------------------------------
260 * Added caps lock key to keyboard.
261 * Worked around Neverputt overwriting Neverball's camera setting.
262 * Added clobber confirmation to replay save.
263 * Fixed an audio bug when fading to the currently playing song.
265 -------------------------------------------------------------------------------
268 * Merged set-complete state into goal state, fixing set-complete crash.
269 * Fixed a few game state init crashes.
270 * Fixed a few pointer grab issues.
271 * Added random replay during attract mode.
272 * Added scene fade in/out.
273 * Fixed a bug causing the texture quality setting to be ignored.
274 * Moved shadow handling in with other geometry, where it belongs.
275 * Moved particle and shadow init/free out of game init/free and into config.
277 -------------------------------------------------------------------------------
280 * Improved directory handling. No longer depends on CWD.
281 * Moved all config files to ~/.neverball/ directory.
282 * Screenshots now go to CWD, which is not changed.
283 * Reorganized replay handling.
284 * Added replay save / play / delete GUIs.
285 * Added auto disabling of stereo and reflection is mode set fails.
286 * Changed default pointer state to ungrabbed.
288 -------------------------------------------------------------------------------
291 * Changed policy: Goal opens after a set number of coins are collected.
292 * Changed policy: Extra balls are awarded only after a goal.
293 * Changed policy: Game is saved after every goal.
294 * Changed hud to reflect new scoring policies.
295 * Fixed volume set bug.
296 * Fixed shadow visible on reflective surfaces in level shots.
297 * Fixed music on config screen.
298 * Increased ball transparancy to accomodate new view.
299 * Added subtle view distance flexibility.
300 * Merged Goal and High Score states.
301 * Tweaked some levels and scores in line with new scoring policies.
302 * Added better fading to make music less repetitious and annoying.
304 -------------------------------------------------------------------------------
307 * Modularized state functions.
308 * Changed view to make horizon visible.
309 * Added view configuration options for people who whine about the new view.
310 * Changed background images to augment horizon.
311 * Fixed Neverputt far clip set closer than background.
312 * Fixed an audio init bug.
313 * Generalized config handling.
314 * Heavily modified GUI handling.
315 * Replaced all 2D menus with new GUI code.
316 * Changed image loading policy to support non-power-of-two images.
317 * Replaced Win32 makefile with VS.Net solution.
318 * Rewrote HUD to use new GUI handler.
319 * Added billboard objects to .SOL file.
320 * Policy change: .SOL files now go in same directory as .MAP files.
321 * Changed mapc to derive .SOL file name from .MAP file name.
322 * Changed pause screen to include the word "Paused".
323 * Changed internal clock to use integer deciseconds instead of float seconds.
324 (HIGH SCORE FILE CHANGED)
325 * Made some fixes to reflection handling.
326 * Added background .SOLs.
327 * Added wireframe mode.
328 * Added look-around mode.
329 * Added keyboard-to-joystick input mapping.
330 * Added mipmap generation.
331 * Added clamped material type.
333 -------------------------------------------------------------------------------
336 * Fixed refrected background rotation.
337 * Added OBJ loading to mapc.
338 * Finally fixed material hack in mapc.
339 * A few graphical optimizations.
340 * Added shadow config option.
341 * Added sphere-map material type.
342 * Modified many levels to use detail OBJs.
343 * Traded doubles/ints for floats/shorts in the .sol file. This cuts .sol
344 file size in half, but puts a limit on level complexity.
346 -------------------------------------------------------------------------------
349 * Added camera control key binding to config file.
350 * Fixed some braindead reflection handling code.
351 * Fixed broken config menu.
352 * Fixed sound volume adjustment crash when sound is disabled.
353 * Fixed very stupid game timing bug that had been around far too long.
355 -------------------------------------------------------------------------------
358 * Added reflection material.
359 * Modified several levels to use reflective material.
360 * Added option to disable reflection materials.
361 * Updated mapping documentation.
362 * Changed shadow CLAMP_TO_EDGE to CLAMP to work around some bad drivers.
363 * Added arrow key bindings for camera rotation.
365 -------------------------------------------------------------------------------
368 * Fixed a sneaky bug in menu memory that allowed unopened levels to be played.
369 * Fixed camera rotation joystick button init bug.
370 * Changed options menu to make unavailable modes unselectable.
371 * Implemented auto-pause when the game loses focus externally.
372 * Simplified ARB extension handling.
373 * Made another tweak to the level set screenshot loader.
374 * Applied Mehdi's tweak to level 5.
376 -------------------------------------------------------------------------------
379 * Fixed the scoring bug for real this time.
380 * Documented global set scoring.
381 * Added a ball "ghost" to ensure the ball remains visible when obscured.
383 -------------------------------------------------------------------------------
386 * Fixed the path timing bug for real this time.
388 -------------------------------------------------------------------------------
391 * Updated Mehdi's set to final.
392 * Fixed a path timing bug to correct a slight path pause discrepancy.
393 * Fixed scoring bug that was adding coins from failed level to global score.
394 * Fixed a bug corrupting level set screenshots.
396 -------------------------------------------------------------------------------
399 * Reorganized code, merged Neverputt code.
400 * Added friction physics.
401 * Fixed goal particle radius.
403 -------------------------------------------------------------------------------
406 * Set all menus to remember their last selection. Now the frustrated player
407 need only pound angrily on the mouse button to get back to his last save.
409 -------------------------------------------------------------------------------
412 * Fixed pipe.sol dependancy missing from Win32 makefile.
415 -------------------------------------------------------------------------------
418 * Mouse invert and joystick select patches.
419 * Minor level tweaks.
420 * Fixed no levels open after reading old high score file.
421 * Fixed activation of all switches at the same location.
422 * Added camera HUD indicator.
424 -------------------------------------------------------------------------------
427 * Added stereo viewing.
428 * Fixed Win32 makefile.
430 -------------------------------------------------------------------------------
433 * Minor tweaks and cleanup for an announced release.
435 -------------------------------------------------------------------------------
438 * Changed default scores file format, removing player names.
439 * Adjusted level order and default scores.
440 * Reimplemented physics lock punt.
442 -------------------------------------------------------------------------------
446 * Fixed texture positioning bug
447 * Darkened screen during pause
448 * Modified high scores to keep global highs. (HIGH SCORE FILE CHANGED)
449 * Added new automatic level shot grabber.
450 * Tweaked BSP optimizer.
452 -------------------------------------------------------------------------------
455 * Modified some textures.
456 * Modified some levels.
457 * Modified switches to switch entire path chains.
458 * Disallowed player from toggling timed switches off manually.
460 -------------------------------------------------------------------------------
463 * Added level set selector. (HIGH SCORE FILE CHANGED)
464 * Modified demo playback to handle level sets.
465 * Added BSP optimization to physics.
468 * Added Mehdi's level set.
469 * Modified switches to act on paths rather than bodies.
470 * Added timer option to switches.
472 -------------------------------------------------------------------------------
475 * Modified physics to better handle vertical movers.
476 * Added mover switch entity.
477 * Replaced level 13 with a level using vertical movers and switches.
479 -------------------------------------------------------------------------------
484 -------------------------------------------------------------------------------
490 -------------------------------------------------------------------------------
493 * Changed platforms to accelerate rather than change velocity instantly.
494 * Changed timer to display minutes. Increased max time from 99s to 9m59s.
495 * Changed teleport exit to be relative to teleport entry.
496 * Fixed time comparison ambiguity.
498 -------------------------------------------------------------------------------
501 * Fix broken load balancer starving the renderer on early level load.
502 * Disabled music playback entirely when music volume is zero.
504 -------------------------------------------------------------------------------
507 * Demo record and replay.
509 -------------------------------------------------------------------------------
512 * Padded .sol files to make them portable between Linux and Windows.
513 * Added pulsing HUD numbers.
514 * Changed Windows config file path.
515 * Changed pause mode to continue rendering.
517 -------------------------------------------------------------------------------
520 * Added background music.
521 * Changed several sounds.
522 * Added sound and music volume control to options screen and config file.
523 * Fixed discrepancy between reported time and recorded time.
524 * Fixed new coin record not triggering name input state.
525 * Fixed ESC during goal state.
527 -------------------------------------------------------------------------------
530 * Level score and high score list added to goal screen.
531 * Level score added to record screen.
532 * Goal screen requires click-through instead of time-out.
533 * Fixed level time bug. Clock was running during goal screen.
535 -------------------------------------------------------------------------------
538 * Player name stored in config.
539 * Keyboard camera selection.
542 -------------------------------------------------------------------------------
545 * Changed save game policy: it must be earned by collecting coins.
546 * Added camera tracking configuration option.
547 * Added coin sub-sort of time records.
548 * Added time sub-sort of coin records.
549 * Fixed exit-during-teleport bug.
550 * Fixed potential infinite loop when ball is crushed.
551 * Warn and continue on audio init failure.
553 -------------------------------------------------------------------------------
556 * Modified camera tracking, disabled direct camera control.
558 -------------------------------------------------------------------------------
561 * Added default records. Something to shoot for.
563 -------------------------------------------------------------------------------
566 * Added record keeping.
567 * Reorganized level selector to include records.
568 * Added record name input state.
569 * Changed shadow clamp back to CLAMP_TO_EDGE. Screw broken drivers.
570 * Changed timer to display hundredths of seconds.
571 * Got rid of clock tick until last 10 seconds (it conflicts with music).
572 * Returned original menu pointer motion. Reorganized point hide.
573 * Globalized pause state to generalize pointer grab handling.
575 -------------------------------------------------------------------------------
578 * Added teleportation.
579 * Changed menus to work with relative pointer motion.
580 * Changed pointer grab policy to lessen grab motion discontinuity impact.
581 * Fixed channel order for TGA textures.
582 * Fixed level selector link topology.
585 -------------------------------------------------------------------------------
588 * Display screen shots in level selector.
589 * Cut level selector to 25 to make room for level shot.
590 * Generalized flyby representation.
591 * Added poser state for capturing level shots.
594 -------------------------------------------------------------------------------
597 * Native Windows support returned.
598 * Fixed HUD not responding to texture quality setting.
599 * Hyper-paranoid ARB_multitexture usage.
601 -------------------------------------------------------------------------------
604 * Fixed input smoothing in game_step causing oscillation at low FPS.
605 * Worked around broken shadow CLAMP_TO_EDGE on i845G.
606 * Added high_level config and modified level select. Documented cheat.
609 -------------------------------------------------------------------------------
612 * New version numbering convention. Minor number is level count.
613 * Broke native Windows support.
614 * Reorganized source and Makefiles.
615 * Modified mapc to take a materials path.
616 * Fixed potential overflow in config_home.
618 -------------------------------------------------------------------------------
621 * Worked around broken color mask attribute pop in ball_draw on ATI.
623 -------------------------------------------------------------------------------
626 * Sent screenshots to $HOME rather than CWD, fixing segfault.
628 -------------------------------------------------------------------------------
631 * Removed some initial state assumptions that were wrong for some users.
632 * Fixed $HOME determination under Windows.
634 -------------------------------------------------------------------------------
637 * First release as "Neverball".
638 * Added joystick control.
639 * Added camera control.
641 * Added level intros.
642 * Added config file stored in $HOME.
643 * Removed text images and added TTF rendering.