gnuboy-for-dfi/docs/WHATSNEW

413 lines
12 KiB
Plaintext

* WHAT'S NEW *
Here you will find a summary of the changes made in each released
version of gnuboy, organized from an end-user perspective.
Webmasters, please use this file as a basis for announcing new
versions; the CHANGES file is too technical and unorganized.
CVS 1.0.4
Fixed a possible out-of-bounds access which could allow a hacked savestate to
crash gnuboy and possibly run arbitrary code on the host machine. Challenge:
try to find a way to exploit it
Removed an incorrect restriction on when LY=LYC interrupts can occur (from
0.9.13, possibly to fix montezuma's return or pokemon yellow, though both games
work fine now without it) which broke at least one commercial game and several
PD roms. (extra special thanks to beware for helping us track this down!)
Fixed an SDL keymap issue which prevented the keypad '5' key from working when
num-lock was off
Replaced the channel 4 PRNG tables with a shifter-generated PRNG output table,
as opposed to the old approximations based on wavefiles
Fixed the HDMA timing behavior (properly?), several pinball games developed by
'Left Field Productions' now work correctly (thanks to beware for pointing us
in the right direction)
Fixed the GDMA behavior so it consumes cpu cycles as it should. This fixes the
intro scene animation in 'Magical Drop'
RELEASE 1.0.3
All ANSI C incompatibilities should be fixed. Please report any that
remain.
Various bugs encountered when building gnuboy on strange compilers
have been fixed.
Internal support for decompressing gzipped roms now exists in a
minimal form. The inflate code used is taken from a quine
(self-reproducing program) written by David Madore and placed in the
public domain. This code is very portable but is rather slow and may
crash when given invalid data; however, there should be no impact on
security. Currently only gzip files (not pkzip files) are supported.
HuC3 emultaion has been fixed to some extent. Robopon Sun and Star are
both playable now, but many features of the HuC3 are still not
implemented.
Color filtering to make gnuboy look much more like a real CGB is now
included, thanks to the work of Jonathan Gevaryahu.
A new rcvar "gbamode" has been added to unlock the GBA-only features
present in some newer CGB games. (This has nothing to do with GBA
emulation, which gnuboy does not do and will not do in the future.)
Sprite sorting in DMG mode has been fixed. This should improve things
in various DMG games where sprites previously overlapped in the wrong
order.
RELEASE 1.0.2
A minor problem in the frequency sweep function on sound channel 1 was
fixed, correcting the sound of the ice beam and metroid encounter
sound in Metroid 2.
Sound channel 3 waveform data is now trashed when the sound is
played. This makes it more difficult for games and demos to detect
that they are running on an emulator.
The channel 3 waveform is now properly initialized in both DMG and CGB
modes. Before it was incorrectly initialized to have frequency 16
times too high, and the initial "random noise" pattern exhibited by
DMG wasn't emulated. R-Type now sounds much better.
The sound length register for channel 3 now works properly, fixing the
title screen music in MegaMan 2. No thanks to gbspec.txt for having
blatently wrong info about this matter.
Major problems with sound quality on channel 4 (noise) have been
fixed, and the pseudorandom sequence has been replaced to very closely
resemble that of a real Gameboy, thanks to the hard work of Lord
Nightmare. All these changes make a significant improvement in many
games, notably Metroid 2, Final Fantasy Legend II and III, Camp
Deadly, and Wario Land.
Stereo channels are no longer backwards.
The DMG STAT register write bug, which causes an interrupt if the STAT
register is written while in HBLANK or VBLANK, is now emulated. This
fixes Legend of Zerd and probably any other DMG game that will not run
on a real Gameboy Color.
A hack/potential fix for a problem that kept Konami Collection Vol 1
from working has been put in place.
A major interrupt bug that prevented Amazing Penguin from running has
been fixed.
Several bugs that could have resulted in crashes under strange
circumstances have been fixed.
Other minor sound issues have been tweaked or fixed.
RELEASE 1.0.1
BUGS FIXED
Keys that didn't work in the SDL-based ports have now been fixed.
The --bindir= option to the configure script now works properly.
Running "make install" no longer fails when the destination directory
doesn't already exist.
Various minor cleanups.
RELEASE 1.0.0
NEW FEATURES
Auto-loading rc files on a per-rom basis.
Less intense yellow in the default mono palette.
Default keybindings no longer use modifier keys.
Lots of new documentation.
Hardware scaling on matroxfb now looks better.
BUGS FIXED
Disabled some useless optimizations to work around a bug in gcc 2.96, which
despite being a broken compiler has become rather popular since Redhat
decided to package it without sufficient testing. This will fix the problems
lots of people have reported when compiling.
Added --disable-arch option to configure to prevent the binaries built from
being dependent on the exact host cpu they're built on. This will allow
distro maintainers to build packages that work even on older cpus.
RELEASE 0.9.13
NEW FEATURES
Hardware scaling support on fbcon with matroxfb.
PERFORMANCE
Now all software scaling code has assembly implementations.
COMPATIBILITY
Invalid opcode crash in Montezuma's Return has been fixed.
Visual glitches in Pokemon Yellow are now fixed.
BUGS FIXED
Line refresh was taking place too late, causing visual glitch in Alleyway.
Flags behavior on the RL, RR, RLC, and RRC opcodes was completely bogus in the
asm cpu core. Miracle it didn't break more things. Should be correct now.
The SWAP (HL) instruction in the asm cpu core was nonfunctional.
RELEASE 0.9.12
NEW FEATURES
Hardware YUV scaling with full interpolation on systems that support it,
using SDL -- thanks goes to Magnus Damm.
COMPATIBILITY
Binary Chaos no longer has graphical glitches, and is fully playable.
Wacky Races now displays correctly again (broken since 0.9.7).
BUGS FIXED
Some test code was left in cpu.s, breaking DOS/Windows builds and
slowing things down across the board.
SDL joystick code was generating bogus release events.
Unused bits of VBK register were 0's; they should be 1's.
DMG palette was not being restored correctly after loading savestates.
RELEASE 0.9.11
NEW FEATURES
Most ports can auto-choose screen size appropriate to scale given.
Scaling to 2x, 3x, and 4x is now possible at all color depths.
PERFORMANCE
SDL port should run considerably faster than before at hires modes.
New X11 rcvar "x_shmsync" can be turned off for performance boost,
but it can result in heavy shearing and skipped frames.
The new scaling code is slightly faster than before.
COMPATIBILITY
Konami Collection (GBC) series now works in color mode.
Worms Armageddon is now playable, might still have some glitches though.
Turok 3 no longer hangs at startup and seems fully playable.
Sound samples that played too slow in many games now sound correct.
BUGS FIXED
Video mode setting was not working with svgalib.
Undocumented behavior - STOP instruction causes PC to skip forward.
SDL hardware surface mode is now always on and should always work fine.
More undocumented behavior - HDMA can occur while LCDC is off...?
HDMA5 register was not being initialized correctly on reset.
Timer was running at half the speed it should when in high-speed mode.
RELEASE 0.9.10
NEW FEATURES
Primitive but fast and fully functional scale-by-two support.
New rcvar "vmode" sets video mode in all the targets that support it.
Now up to 16 joystick buttons can be used, as opposed to 8 before.
Static palette mode (rcvar "rgb332"), which can make highcolor games
look better when run at 8bpp by faking a 3/3/2 color channel mode.
COMPATIBILITY
Added a quick hack to fake serial I/O so that Super RC Pro-Am works.
Spiderman's web is now visible in Spiderman GBC.
PERFORMANCE
New refresh code blits lines slightly faster.
Added sdl_hwsurface rcvar to turn hardware surface on for speed boost,
disabled by default because it crashes on Windows.
BUGS FIXED
Hopefully fixed issue with X header locations affecting some users.
DMG sprite sorting isn't working right. It's now disabled by default.
VBLANK timings have been changed slightly to fix Daedalian Opus.
Fixed various minor bugs found by enabling compiler warnings.
Spacebar was not working with SDL. Fixed.
Fixed bug that made OAM unreadable.
RELEASE 0.9.9
NEW FEATURES
DOS port is now entirely thinlib-based. Should be more robust, featureful.
For example, custom video modes such as 256x224 are available.
PERFORMANCE
New asm routines for displaying the background layer on color games.
This results in a significant performance boost low-end machines (~P75).
SDL code no longer fakes 16bpp but uses the native color depth.
BUGS FIXED
SDL gnuboy no longer produces random pops in sound at startup.
Mono/stereo should now be handled correctly in the SDL code.
Eliminated compiletime error about SDL_DISABLE on SDL ver < 1.1.8.
Serious bug -- loading savestates was not updating the memory bank map --
resulted in bogus behavior after loading in certain situations.
Scrapped SDL_HWSURFACE to make fullscreen work on Windows.
RELEASE 0.9.8
NEW FEATURES
Native SDL sound support. This means sound will work on BeOS and Windows.
Sprites are priority sorted on DMG games by default now.
ROMs can be loaded from stdin using "-" as the filename.
SDL port now runs fullscreen by default. Set sdl_fullscreen to 0 to disable.
SDL port now supports alt+enter fullscreen toggle.
Integrated Windows port by mewse (using SDL and mingw32).
COMPATIBILITY
Added support for undocumented ram size 05 (presumably 256 kbit).
This fixes the crash with Pokemon Crystal.
Removed hacks for Altered Space and W&W because they break other games.
Added new VBLANK code that should fix them again without breaking other stuff.
BUGS FIXED
SDL keyboard handler was not accepting the numeral keys.
SDL video was messed up bad when it couldn't get a true 160x144 display.
Loading a ROM with bogus ROM/RAM size headers used to crash the program.
RELEASE 0.9.7
NEW FEATURES
DOS sound support!
VESA video modes on DOS!
Mono sound for cards that don't support stereo.
COMPATIBILITY
Altered Space and Wizards & Warriors now run.
Change was made to VBLANK behavior; hopefully it doesn't break other games.
BUGS FIXED
Envelope length was being computed wrong.
HDMA was incorrectly taking place all at once.
Command line parsing incorrectly changed - to _ in places it shouldn't.
SDL joystick support was not building correctly on non-Linux systems.
RELEASE 0.9.5
NEW FEATURES
Showing the name from the ROM header in X11 and SDL titlebars.
The various targets can be disabled at compiletime with --without-* options.
OSS sound support might work on FreeBSD and OpenBSD but is untested.
SDL joystick support.
GNU make no longer required to compile.
OPTIMIZATIONS
Flags handling in the C and asm cpu cores should be faster.
Word-at-a-time memory I/O is now done more efficiently.
BUGS FIXED
Highcolor screens no longer flicker.
Misplaced high-pitched beeps in sound have been removed, again.
C graphics code was misaligning the screen by one pixel. Fixed.
RELEASE 0.9.4
NEW FEATURES
Linux fbcon display support.
Linux joystick device support.
COMPATIBILITY
HDMA now works in DKC and Lemmings Color.
Default wave pattern is now supported.
RELEASE 0.9.2
NEW FEATURES
SDL port!
Sound channel 4.
MBC3 RTC support.
COMPATIBILITY
Sound is now properly handled in savestates.
Pokemon Silver and Gold should now be playable.
BUGS FIXED
Another bug in sweep.
Nasty aliasing from extremely high sound frequencies.
RELEASE 0.9.1
NEW FEATURES
Experimental sound support!
Better command line parsing.
Added --showvars command line option.
Various optimizations.
BUGS FIXED
HDMA bug.
LCDC STAT interrupt bug.
NOTE: Earlier releases have not yet been documented in this file.
Hopefully they'll be added eventually, at least for the sake of
completing the records.