gnuboy-for-dfi/docs/CHANGES

339 lines
15 KiB
Plaintext

GNUBOY CHANGES FILE -- detailed list of all changes made
Each release is labelled with the date it appeared; unreleased
versions are listed without a date stamp for purely historical
reasons. When checking what's changed since the last release, be
sure to look over intermediate unreleased versions as well.
For an easy-to-read user-oriented list of major changes in each
release, please refer to the file WHATSNEW.
1.0.4-cvs
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, which
broke at least one 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 computer-generated PRNG output table,
as opposed to an approximation based on wavefiles
fixed the HDMA behavior (properly?), several pinball games developed by 'Left
Field Productions' now work correctly (thanks to beware for pointing us in the
right direction)
fixed GDMA so it consumes cpu cycles properly, now the intro to Magical Drop
works correctly
1.0.3
fixed a typo in the SDL keymap file that kept . from working
added support for binding keys to the ' key
fixed bug related in nix.c's sys_checkdir that made it always demand writable
fixed loader.c since it depended on this bug
removed the literal newlines inside the copyright string in main.c
removed some parentheses in save.c's macros
(these were perfectly valid but caused problems with a broken compiler, lcc)
added return-type prototypes for strdup since it's not always in string.h
(many of the above were old bugfixes sent in by Damian M Gryski)
added slow, primitive support for gzipped rom files
(thanks to David Madore for the portable inflate code taken from his quine)
various minor source cleanups
more preliminary work on the fast register/himem io routines (not used yet)
fixed HuC3 emulation, according to TGB's sources
added hacks to work around HuC3's IR port not being implemented
(Robopon Sun and Star now seem to run fine)
fixed a few sound inconsistencies after loading a savestate
various fixes to keybinding system and X11 keymap
integrated Jonathan Gevaryahu's color filter
added "gbamode" rcvar to unlock gba-only features in some cgb games
(this has NOTHING to do with gba emulation!)
fixed DMG sprite sorting code! it's now enabled by default
reverted mistaken CGB wave pattern "fix" in 1.0.2
don't always reset sound positions on sound init (is this correct?)
1.0.2 (2001-09-18)
fixed bugs in rc_setvar calls in sys_initpath
fixed multiple definition of cpu struct in cpu.h
corrected behavior of ch1 sweep function when freq is written during sweep
emulated wave pattern corruption to fool "emulator-detectors"
updated savestate code to handle these changes, incremented minor version
(this should not affect compatibility with old savestates)
fixed major bugs in sound channel 4
perfected channel 4 output sequence to sound like a real Gameboy
(much thanks goes out to Lord Nightmare for all his hard work on this!)
default channel 3 square wave is no longer 4 octaves too high
make DI cancel pending HALT...is this correct? (fixes Konami Collection #1)
fixed reversed stereo channels
tweaked frequency cutoff points that prevent aliasing
corrected default wave pattern (noise) when running in dmg mode
fixed sound reset bug that messed up pitch after pausing in Bubble Ghost
added new sample palettes
fixed major interrupt/HALT bug that kept Amazing Penguin from running
fixed sound channel 3 length regiser (info in gbspec.txt is bogus)
tweaked volume of channel 4
removed FFL3 tile glitch from the known bugs in the README
(it was caused by a bad dump and/or hacked rom, not a bug in gnuboy)
added emulation of DMG STAT register write bug (causes interrupt)
(this fixes Legend of Zerd and perhaps one or two other games)
1.0.1 (2001-07-09)
fixed problem in "make install" if dest dir doesn't exist
cleaned up some compiler warnings
fixed a problem with --bindir= not working in the autoconf process
renamed several things from mingw32 to just plain windows
fixed lots of keys that were still missing on the SDL port
1.0.0 (2001-06-29)
renamed Makefile.mingw32 to Makefile.win to be 8.3 filename friendly
finally fixed up configure to work around broken gcc 2.96 on Redhat 7, et al
added lots of new documentation
added autoconf option to disable cpu-specific code generation
minor improvements to matroxfb hardware scaling code
cleaned up some old deprecated variables
0.9.15
various preparations for 1.0 release
cleaned up nix.c to remove old code and prevent errors on some systems
fixed Makefile.nix to be usable but minimal
0.9.14
changed default dmg palette to be less yellow
changed default keybindings not to use modifier keys
moved vid_begin to after doevents in emu.c
(this should fix alt+enter fullscreen toggle not working on windows)
changed --help, etc to use stdout rather than stderr
auto-loading config files on a per-rom basis
0.9.13 (2001-04-09)
added matroxfb YUV scaling support
moved lcd_refreshline from the 3->0 stat change to the 2->3 one
(this fixes a slight visual glitch in Alleyway)
experimental: no LYC=LY interrupt during VBLANK...?
fixed emulation bug (RL/RR) in asm cpu core that broke Montezuma's Return
fixed some minor bugs in the matrox scaler register settings
fixed SWAP (HL) instruction in the asm core (fixes Pokemon Yellow)
added more assembly language scalers for performance
0.9.12 (2001-04-02)
started adding HuC3 MBC support
removed some code that was accidentally left in that broke dos/win builds
fixed a bug in SDL joystick support -- thanks Ralf Hoffmann
unused bits in VBK register should be 1, not 0 -- this broke Binary Chaos
fixed bug that kept dmg palette from restoring properly after loading savestate
integrated hardware YUV scaling w/SDL thanks to Magnus Damm
SDL code now turns off fb.enabled when window is iconified
HDMA timing correction back in 0.9.6 broke Wacky Races; it's disabled for now
0.9.11 (2001-04-01)
fixed bug that kept video mode setting from working with svgalib
implemented program counter skip after STOP instruction (konami collections)
fixed SDL hardware surface support -- thanks Dave Kiddell
also fixed another bug in gnuboy graphics code related to that problem
removed sdl_hwsurface rcvar (no longer needed)
changed SDL code to use SDL_Flip rather than SDL_UpdateRect - much faster
most ports now can auto-choose screen size for given scale if no vmode is given
optional shm sync skipping for x11 -- boost performance but looses frames
lots of new scaling stuff
allow HDMA while LCDC is off -- fixes Worms Armageddon
correct initial values for HDMA regs -- fixes first hang in Turok 3
major timer fixes!! fixes second hang in Turok 3
0.9.10 (2001-03-26)
hopefully fixed issue with X header locations affecting some users
rewrote refresh_* functions to be faster and more flexible
added scale-by-two versions of the above, including super-fast asm versions
implemented primitive but fully functional scale-by-two mode
added vmode rcvar to set the video mode
disabled dmg sprite sorting by default because it doesn't seem to work right
removed deprecated rcvars from various display modules
heavily updated README
changed VBLANK timings slightly - seems to fix Daedalian Opus
enlarged OSS dma output buffer slightly; this may reduce occurance of underruns
cleaned up all warnings
fixed bug that prevented reading from OAM
fixed all compiler warnings except implicit functions
found and fixed a few minor bugs in the process
added spacebar to SDL keymap
up to 16 joystick buttons are now supported w/linux and SDL
added sdl_hwsurface rcvar to turn hardware surface back on
added static palette mode
quick and dirty hack to make super rc pro-am work
fixed bug that made OAM unreadable
0.9.9 (2001-03-23)
removed some unused code from mingw32.c, fixed some bugs there too
fixed a bad sound bug in sdl.c
eliminated sound pops at startup with SDL
eliminaed compiletime error about SDL_DISABLE on SDL ver < 1.1.8
integrated new fully-thinlib-based DOS code from Matthew Conte
added surface locking to SDL code; maybe this will fix windows+fullscreen?
fixed serious bug in savestate loading (call mem_updatemap on load)
new asm -- significant speed boosts for color games on older machines
removed SDL_HWSURFACE from SDL code - this should fix fullscreen on windows
disabled surface locking calls for now
properly initialize default path on DOS
added SDL_ANYFORMAT to SDL flags so we can natively support all color depths
0.9.8 (2001-03-07)
enabled support for dmg sprite sorting; not sure it works yet
added "sprsort" rcvar to toggle this since it's usually not needed
fixed a potential crash that could happen if sound init failed on dos
added native SDL sound support
fixed lots of bugs in the SDL port
removed stupid sys_realtime() function in favor of the simple ANSI C time()
roms can now be loaded from stdin by specifying - as the rom name
removed lots of useless bloat from system interface modules
take advantage of ANSI atexit() to simplify termination logic
hide mouse cursor with SDL
SDL fullscreen mode
optional alt+enter fullscreen toggle for SDL
SDL rcvars sdl_fullscreen and sdl_altenter to control these features
changed bswapl to bswap in asm to make it work on mingw32
added ram size code 05 for 4 banks, this seems to make Pokemon Crystal work
backed out hack for Altered Space and W&W because it broke other games
new code to make them work, hopefully this time it's right
now we give an error on unknown rom/ram size to prevent crashing
integrated Windows port by mewse
0.9.7 (2001-02-27)
added support for mono sound
initial work on implementing sound blaster output on dos
fixed envelope bug that made notes trail off (or amplify) too fast
integrated dos sound support contributed by Matthew Conte using his thinlib
added Matthew Conte to CREDITS
tried to fix strange occasional keyboard misbehavior on dos
build stripped binaries by default if debugging and profiling are off
0.9.6
updated the INSTALL file
fixed something stupid that broke building SDL joystick support on non-Linux
added Mattias Wadman to the CREDITS
fixed VBLANK timing slightly; now altered space and wizards & warriors work
reverted change; it breaks other games
new trick that might fix things...
fixed bug in command line parsing that kept --savename=- from working
fixed warning in oss.c
fixed an old bug in HDMA/HBLANK that only recently became apparent
vesa support on dos is now working!
0.9.5 (2001-02-22)
added Ralf to the CREDITS, apologies for the prior omission
show name from rom header in window title on X11 and SDL
fixed bug that made highcolor screen flicker
(this used to glitch sfalpha, but for some reason its ok now)
updated README
fixed cap on sound 3 frequency to eliminate bogus beeps
began work on optimizing memory io in the C code
updated HACKING slightly
got new fast memory io functions integrated!
moved all of high memory (registers, wave pattern, stack) to one array
(eventually this will make memory io faster)
changed savestate format, but old saves should still load fine
(hopefully new format makes more sense)
began implementing fast access to high memory
discovered that low bits of the flags register don't exist
optimized instruction emulation accordingly
a few optimizations to the outer asm cpu loop
fixed off-by-one error in C graphics code that made far right column blank
added slow, experimental 24bpp (packed, unaligned) video support
improved the configure script, now --without-* works
use sdl-config instead of explicit -lpthread to support more systems
removed stupid section directives from the asm
got the asm cores working on dos!
oss sound support *might* work on freebsd and openbsd now
SDL joystick code has been integrated, but I haven't tested it
fixed bug in new savestate code
added David Lau to the CREDITS (SDL joystick support)
GNU make should no longer be required to compile
0.9.4 (2001-02-18)
various changes to lots of the system interface organization
separation of linux fb and keyboard handling code into two modules
integrated linux joystick support contributed by Ralf Hoffmann
dummy joystick code for systems without real support yet
fixed HDMA; now DKC runs perfectly
0.9.3
explicit link of SDL target with -lpthread, tell me if this causes problems
better cpu detection in configure script
more big fixes in sweep, and now it's actually tested, so it SHOULD work (!)
implemented default wave ram pattern
added linux fbcon display support - very functional
fix to allow new custom palette to take effect after loading dmg savestates
0.9.2 (2001-02-12)
mbc3 rtc support, including save and resync across sessions
updated README
implemented sound channel 4
fixed yet another bug in sweep (!!)
fixed nasty aliasing when sound frequency was higher than sample rate permits
finally, all sound registers can be adjusted while sound is being produced
made it so the proper shutdown functions actually get called on exit
added SDL port by Damian M Gryski, should be auto-detected by configure
added Damian to the CREDITS file
cleaned up sound code to minimize the amount of state data kept
added sound and rtc status to savestates; this won't break old saves
changed lots of lookup tables to const
0.9.1 (2001-02-11)
fixed yet another critical bug in sweep
fixed STAT interrupt bug
added support for changing more sound params while sound is active
fixed yet another major bug in envelope for channel 2
fixed bug in HDMA, but DKC still fails
updated README, HACKING
made samplerate and sound (on/off) configurable rcvars
changed command line parsing to make setting bools more intuitive
added --showvars to list all available rcvars
0.9.0
fixed bugs in sweep and envelope functions
added sound channel 3
0.8.5
various minor optimizations in the C code
same in the i386 asm cpu core
initial work on sound framework
oss sound output for use on *nix
dummy sound output for use on systems without sound
sound channels 1 and 2
0.8.4 (2001-02-06)
updated README to cover new features
fixed off-by-one-line visual error introduced in 0.8.2
gbspec.txt is wrong, ram size code 0 != no ram, big suprise... (!)
workaround for undocumented 512 byte ram size, won't necessarily work
changes in saved state format
slight improvements to asm cpu core
cleaned up HDMA code
removed outdated comments
more changes to lcdc/cpu timing interaction, fixing harmless bugs
this may slightly impact performance, i'll compensate later
hopefully fixed bug in svgalib interface that corrupted console on exit
updated HACKING to reflect new code, detail more internals
workaround for a bug that would never happen but could lock the emulator
fixed another visual glitch introduced in 0.8.2
optimized i386 cpu.s to keep PC in a register at all times
0.8.3
changed install dir from $prefix/games to $prefix/bin
fixed major bug in ramsize lookup table (!)
updated HACKING to note that it's outdated
implemented saved states!
0.8.2 (2001-02-03)
rewrote lcdc state behavior completely, fixed lots of compat issues
implemented serial io failure for roms that need it, fixed more compat
now, mk1, sml2, and alleyway are all fixed!
additions to input.h and keytable.c to allow future joystick support
0.8.1
fixed stupid timer interrupt bug in asm cpu core
renamed screen to fb so as not to conflict with allegro symbol names
0.8.0 (2001-02-01)
initial release