1.0.4-pre backport: fixed a possible out-of-bounds access
[rofl0r-gnuboy.git] / docs / WHATSNEW
blob75e964ef58fdf8a6d57363bcd5c5e2bfa07b016c
2 * WHAT'S NEW *
4   Here you will find a summary of the changes made in each released
5   version of gnuboy, organized from an end-user perspective.
6   Webmasters, please use this file as a basis for announcing new
7   versions; the CHANGES file is too technical and unorganized.
11 RELEASE 1.0.3
13 All ANSI C incompatibilities should be fixed. Please report any that
14 remain.
16 Various bugs encountered when building gnuboy on strange compilers
17 have been fixed.
19 Internal support for decompressing gzipped roms now exists in a
20 minimal form. The inflate code used is taken from a quine
21 (self-reproducing program) written by David Madore and placed in the
22 public domain. This code is very portable but is rather slow and may
23 crash when given invalid data; however, there should be no impact on
24 security. Currently only gzip files (not pkzip files) are supported.
26 HuC3 emultaion has been fixed to some extent. Robopon Sun and Star are
27 both playable now, but many features of the HuC3 are still not
28 implemented.
30 Color filtering to make gnuboy look much more like a real CGB is now
31 included, thanks to the work of Jonathan Gevaryahu.
33 A new rcvar "gbamode" has been added to unlock the GBA-only features
34 present in some newer CGB games. (This has nothing to do with GBA
35 emulation, which gnuboy does not do and will not do in the future.)
37 Sprite sorting in DMG mode has been fixed. This should improve things
38 in various DMG games where sprites previously overlapped in the wrong
39 order.
43 RELEASE 1.0.2
45 A minor problem in the frequency sweep function on sound channel 1 was
46 fixed, correcting the sound of the ice beam and metroid encounter
47 sound in Metroid 2.
49 Sound channel 3 waveform data is now trashed when the sound is
50 played. This makes it more difficult for games and demos to detect
51 that they are running on an emulator.
53 The channel 3 waveform is now properly initialized in both DMG and CGB
54 modes. Before it was incorrectly initialized to have frequency 16
55 times too high, and the initial "random noise" pattern exhibited by
56 DMG wasn't emulated. R-Type now sounds much better.
58 The sound length register for channel 3 now works properly, fixing the
59 title screen music in MegaMan 2. No thanks to gbspec.txt for having
60 blatently wrong info about this matter.
62 Major problems with sound quality on channel 4 (noise) have been
63 fixed, and the pseudorandom sequence has been replaced to very closely
64 resemble that of a real Gameboy, thanks to the hard work of Lord
65 Nightmare. All these changes make a significant improvement in many
66 games, notably Metroid 2, Final Fantasy Legend II and III, Camp
67 Deadly, and Wario Land.
69 Stereo channels are no longer backwards.
71 The DMG STAT register write bug, which causes an interrupt if the STAT
72 register is written while in HBLANK or VBLANK, is now emulated. This
73 fixes Legend of Zerd and probably any other DMG game that will not run
74 on a real Gameboy Color.
76 A hack/potential fix for a problem that kept Konami Collection Vol 1
77 from working has been put in place.
79 A major interrupt bug that prevented Amazing Penguin from running has
80 been fixed.
82 Several bugs that could have resulted in crashes under strange
83 circumstances have been fixed.
85 Other minor sound issues have been tweaked or fixed.
89 RELEASE 1.0.1
91   BUGS FIXED
93 Keys that didn't work in the SDL-based ports have now been fixed.
94 The --bindir= option to the configure script now works properly.
95 Running "make install" no longer fails when the destination directory
96 doesn't already exist.
97 Various minor cleanups.
101 RELEASE 1.0.0
103   NEW FEATURES
105 Auto-loading rc files on a per-rom basis.
106 Less intense yellow in the default mono palette.
107 Default keybindings no longer use modifier keys.
108 Lots of new documentation.
109 Hardware scaling on matroxfb now looks better.
111   BUGS FIXED
113 Disabled some useless optimizations to work around a bug in gcc 2.96, which
114 despite being a broken compiler has become rather popular since Redhat
115 decided to package it without sufficient testing. This will fix the problems
116 lots of people have reported when compiling.
117 Added --disable-arch option to configure to prevent the binaries built from
118 being dependent on the exact host cpu they're built on. This will allow
119 distro maintainers to build packages that work even on older cpus.
123 RELEASE 0.9.13
125   NEW FEATURES
127 Hardware scaling support on fbcon with matroxfb.
129   PERFORMANCE
131 Now all software scaling code has assembly implementations.
133   COMPATIBILITY
135 Invalid opcode crash in Montezuma's Return has been fixed.
136 Visual glitches in Pokemon Yellow are now fixed.
138   BUGS FIXED
140 Line refresh was taking place too late, causing visual glitch in Alleyway.
141 Flags behavior on the RL, RR, RLC, and RRC opcodes was completely bogus in the
142 asm cpu core. Miracle it didn't break more things. Should be correct now.
143 The SWAP (HL) instruction in the asm cpu core was nonfunctional.
147 RELEASE 0.9.12
149   NEW FEATURES
151 Hardware YUV scaling with full interpolation on systems that support it,
152 using SDL -- thanks goes to Magnus Damm.
154   COMPATIBILITY
156 Binary Chaos no longer has graphical glitches, and is fully playable.
157 Wacky Races now displays correctly again (broken since 0.9.7).
159   BUGS FIXED
161 Some test code was left in cpu.s, breaking DOS/Windows builds and
162 slowing things down across the board.
163 SDL joystick code was generating bogus release events.
164 Unused bits of VBK register were 0's; they should be 1's.
165 DMG palette was not being restored correctly after loading savestates.
169 RELEASE 0.9.11
171   NEW FEATURES
173 Most ports can auto-choose screen size appropriate to scale given.
174 Scaling to 2x, 3x, and 4x is now possible at all color depths.
176   PERFORMANCE
178 SDL port should run considerably faster than before at hires modes.
179 New X11 rcvar "x_shmsync" can be turned off for performance boost,
180 but it can result in heavy shearing and skipped frames.
181 The new scaling code is slightly faster than before.
183   COMPATIBILITY
185 Konami Collection (GBC) series now works in color mode.
186 Worms Armageddon is now playable, might still have some glitches though.
187 Turok 3 no longer hangs at startup and seems fully playable.
188 Sound samples that played too slow in many games now sound correct.
190   BUGS FIXED
192 Video mode setting was not working with svgalib.
193 Undocumented behavior - STOP instruction causes PC to skip forward.
194 SDL hardware surface mode is now always on and should always work fine.
195 More undocumented behavior - HDMA can occur while LCDC is off...?
196 HDMA5 register was not being initialized correctly on reset.
197 Timer was running at half the speed it should when in high-speed mode.
201 RELEASE 0.9.10
203   NEW FEATURES
205 Primitive but fast and fully functional scale-by-two support.
206 New rcvar "vmode" sets video mode in all the targets that support it.
207 Now up to 16 joystick buttons can be used, as opposed to 8 before.
208 Static palette mode (rcvar "rgb332"), which can make highcolor games
209 look better when run at 8bpp by faking a 3/3/2 color channel mode.
211   COMPATIBILITY
213 Added a quick hack to fake serial I/O so that Super RC Pro-Am works.
214 Spiderman's web is now visible in Spiderman GBC.
216   PERFORMANCE
218 New refresh code blits lines slightly faster.
219 Added sdl_hwsurface rcvar to turn hardware surface on for speed boost,
220 disabled by default because it crashes on Windows.
222   BUGS FIXED
224 Hopefully fixed issue with X header locations affecting some users.
225 DMG sprite sorting isn't working right. It's now disabled by default.
226 VBLANK timings have been changed slightly to fix Daedalian Opus.
227 Fixed various minor bugs found by enabling compiler warnings.
228 Spacebar was not working with SDL. Fixed.
229 Fixed bug that made OAM unreadable.
233 RELEASE 0.9.9
235   NEW FEATURES
237 DOS port is now entirely thinlib-based. Should be more robust, featureful.
238 For example, custom video modes such as 256x224 are available.
240   PERFORMANCE
242 New asm routines for displaying the background layer on color games.
243 This results in a significant performance boost low-end machines (~P75).
244 SDL code no longer fakes 16bpp but uses the native color depth.
246   BUGS FIXED
248 SDL gnuboy no longer produces random pops in sound at startup.
249 Mono/stereo should now be handled correctly in the SDL code.
250 Eliminated compiletime error about SDL_DISABLE on SDL ver < 1.1.8.
251 Serious bug -- loading savestates was not updating the memory bank map --
252 resulted in bogus behavior after loading in certain situations.
253 Scrapped SDL_HWSURFACE to make fullscreen work on Windows.
257 RELEASE 0.9.8
259   NEW FEATURES
261 Native SDL sound support. This means sound will work on BeOS and Windows.
262 Sprites are priority sorted on DMG games by default now.
263 ROMs can be loaded from stdin using "-" as the filename.
264 SDL port now runs fullscreen by default. Set sdl_fullscreen to 0 to disable.
265 SDL port now supports alt+enter fullscreen toggle.
266 Integrated Windows port by mewse (using SDL and mingw32).
268   COMPATIBILITY
270 Added support for undocumented ram size 05 (presumably 256 kbit).
271 This fixes the crash with Pokemon Crystal.
272 Removed hacks for Altered Space and W&W because they break other games.
273 Added new VBLANK code that should fix them again without breaking other stuff.
275   BUGS FIXED
277 SDL keyboard handler was not accepting the numeral keys.
278 SDL video was messed up bad when it couldn't get a true 160x144 display.
279 Loading a ROM with bogus ROM/RAM size headers used to crash the program.
283 RELEASE 0.9.7
285   NEW FEATURES
287 DOS sound support!
288 VESA video modes on DOS!
289 Mono sound for cards that don't support stereo.
291   COMPATIBILITY
293 Altered Space and Wizards & Warriors now run.
294 Change was made to VBLANK behavior; hopefully it doesn't break other games.
296   BUGS FIXED
298 Envelope length was being computed wrong.
299 HDMA was incorrectly taking place all at once.
300 Command line parsing incorrectly changed - to _ in places it shouldn't.
301 SDL joystick support was not building correctly on non-Linux systems.
305 RELEASE 0.9.5
307   NEW FEATURES
309 Showing the name from the ROM header in X11 and SDL titlebars.
310 The various targets can be disabled at compiletime with --without-* options.
311 OSS sound support might work on FreeBSD and OpenBSD but is untested.
312 SDL joystick support.
313 GNU make no longer required to compile.
315   OPTIMIZATIONS
317 Flags handling in the C and asm cpu cores should be faster.
318 Word-at-a-time memory I/O is now done more efficiently.
320   BUGS FIXED
322 Highcolor screens no longer flicker.
323 Misplaced high-pitched beeps in sound have been removed, again.
324 C graphics code was misaligning the screen by one pixel. Fixed.
328 RELEASE 0.9.4
330   NEW FEATURES
332 Linux fbcon display support.
333 Linux joystick device support.
335   COMPATIBILITY
337 HDMA now works in DKC and Lemmings Color.
338 Default wave pattern is now supported.
342 RELEASE 0.9.2
344   NEW FEATURES
346 SDL port!
347 Sound channel 4.
348 MBC3 RTC support.
350   COMPATIBILITY
352 Sound is now properly handled in savestates.
353 Pokemon Silver and Gold should now be playable.
355   BUGS FIXED
357 Another bug in sweep.
358 Nasty aliasing from extremely high sound frequencies.
362 RELEASE 0.9.1
364   NEW FEATURES
366 Experimental sound support!
367 Better command line parsing.
368 Added --showvars command line option.
369 Various optimizations.
371   BUGS FIXED
373 HDMA bug.
374 LCDC STAT interrupt bug.
378 NOTE: Earlier releases have not yet been documented in this file.
379 Hopefully they'll be added eventually, at least for the sake of
380 completing the records.