-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathChangeLog.txt
587 lines (387 loc) · 23 KB
/
ChangeLog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
Gens/GS r7
Copyright (c) 1999-2002 by Stéphane Dallongeville
Copyright (c) 2003-2004 by Stéphane Akhoun
Copyright (c) 2008-2009 by David Korth
This version of Gens is maintained by David Korth.
E-mail: [email protected]
For news on Gens/GS, visit Sonic Retro:
http://www.sonicretro.org
================================================================
What is Gens/GS?
Gens/GS r7 is David Korth's fork of Gens, initially based on
Gens for Linux v2.15.2. The number after the "r" indicates the
Gens/GS release. Releases are usually made after a significant new
feature has been added, with minor releases if a major bug is found.
================================================================
This file contains information about previous versions of Gens/GS.
See NEWS.txt for information about the current version.
================================================================
What's new in Gens/GS v2.15.5/GS-m6?
Milestone 6 introduces the following new features:
- Mega Drive Plugins v0.1.0. The initial version of the plugin system
only supports render plugins and only if they're built into the
main executable. A later version will add support for external
plugins (.dll on Windows, .so on Linux), as well as more types of
plugins, such as netplay, debugging, and movie recording.
- doc/MDP.txt contains the MDP Interface Specifiction Version 0.1.0.
This document is licensed under the GNU Free Documentation License v1.3.
- All renderers now support 32-bit color.
- [Win32] hq2x has been fixed.
- Scale2x now has optimized C and x86 mmx implementations.
- New renderers: Scale3x, Scale4x, hq3x, hq4x.
- Added a 32-bit color asm version of the Fast Blur effect, with mmx
optimizations if available.
Milestone 6 fixes the following bugs:
- [SDL] Ctrl+Q did not work in fullscreen mode.
Milestone 6 has the following low-level code changes:
- Many x86 assembler files have been cleaned up. In particular, many of them
no longer depend on the "nasmhead.inc" macro file. This macro file provided
alignment macros (which nasm has built-in) and "DECL" macros, which provide
both underscored and non-underscored symbol declarations. Only one of these
is needed per symbol, and it depends on the executable format. Removing
"DECL" and manually redefining symbols reduced the total symbol count.
- Adjusted alignment values for many x86 asm functions.
- Added alpha transparency support to ImageUtil::writePNG().
- Major overhaul for the ImageUtil::writeBMP() code. Changes include using
a templated function for different color depths, using pointer arithmetic
instead of recalculating array indexes for every iteration, and fixing a
bug that caused bitmaps to be 54 bytes larger than they should have been.
- The "Render Fullscreen" and "Render Windowed" values in the gens.cfg file
now contain the renderer tag instead of an ID number. For example, instead
of saying "1" for the Normal renderer, the value would be "Normal".
================================================================
What's new in Gens/GS v2.15.5/GS-m5.3?
Milestone 5.3 fixes the following bugs:
- PIC compilation was broken due to the new CPU Flags code.
- nasm's -O3 optimization doesn't work properly on the Gens code with older
versions of nasm. Gens now uses the -O1 optimization instead.
Milestone 5.3 has the following miscellaneous changes:
- [GTK+] Removed some unnecessary GDK includes.
================================================================
What's new in Gens/GS v2.15.5/GS-m5.2?
Milestone 5.2 introduces the following new features:
- Updates to the most-used renderers:
- The C++ 1x, 2x, and 2x scanline renderers are now much faster.
- The asm and mmx 1x and 2x renderers have been updated to support
32-bit color.
- The scanline and interpolated scanline asm renderers now correctly
black out empty lines, which fixes a "leftover garbage" problem
caused by the new text drawing function.
- [Linux] The OpenGL renderer now supports border color emulation.
- The "Stretch" option now allows you to set Horizontal Stretch and
Vertical Stretch independently.
- New "General Options" window layout. The new layout takes up a lot less
space than the old layout, and allows for more options.
- The "General Options" window now allows you to enable or disable
border color emulation and the pause tint.
- [GTK+] The design of the "Controller Configuration" window has been
improved.
- The "Auto Pause" feature has been reimplemented.
Milestone 5.2 has the following miscellaneous changes:
- The "BIOS/Misc Files" entries for "GCOffline" and "Gens Manual" have been
removed. There are no functions in Gens/GS that make use of these, and both
documents haven't been updated in several years.
- The 16 kHz, 32 kHz, and 48 kHz sound rates have been removed. They never
worked properly and ended up causing lag.
- The built-in debugger now sleeps for 100 ms between frames. Previously, it
would attempt to redraw frames as fast as possible, which led to high CPU
usage if VSync wasn't turned on.
- [Win32] hq2x is broken, so it has been disabled for now.
Milestone 5.2 fixes the following bugs:
- Fixed compilation with --disable-cdrom.
- Fixed some PWM regressions introduced in m5.1.
- [Win32] Savestates were sometimes not saved to the correct directory.
Milestone 5.2 has the following low-level code changes:
- VDraw_DDraw: CORRECT_256_ASPECT_RATIO and ALT_X_RATIO_RES have been removed.
These were originally used in Gens Rerecording to specify if the horizontal
resolution should always be stretched, but is no longer necessary due to the
improved "Stretch" mode options.
- nasm now generates debugging symbols for all asm code.
- Many functions and variables that don't need global visibility have been
marked as static.
- New CPU flag system to determine all available instruction sets instead of
just MMX. This will allow for more optimizations later on.
- Fixed an issue where a segment override prefix was specified in Starscream,
which broke Valgrind. (Valgrind is still broken for SegaCD and 32X emulation,
unfortunately.)
================================================================
What's new in Gens/GS v2.15.5/GS-m5.1?
Milestone 5.1 introduces the following new features:
- RAR archives can now be used via an external RAR binary. You must have RAR
installed in order to use this feature. (Windows users can install WinRAR,
which includes the command-line rar.exe.)
- You can now drag a ROM file onto the Gens window to open it.
- [GTK+] Many of the bundled icons have been updated with KDE 4 Oxygen icons.
See http://www.oxygen-icons.org/ for more information.
Milestone 5.1 has the following miscellaneous changes:
- "PSG Improved" has been renamed to "PSG (Sine Wave)", which more accurately
describes its functionality.
Milestone 5.1 fixes the following bugs:
- [Win32] The lag issue seen on some computers should be fixed.
- [Win32] Fixed joystick POV support.
- [32X] PWM audio no longer "clicks" when it isn't in use.
- [Debugger] The VDP debugger now scrolls all the way to the last VRAM line,
0xFE00-0xFFFF. Previously, it would only scroll to line 0xFC00-0xFDFF. This
bug was reported by djohe in #retro.
- [Regression from m5] Gens no longer creates blank SRAM files for games that
don't use SRAM. This bug was reported by Delta on the Sonic Retro forums.
- Fixed compilation with --disable-cdrom.
Milestone 5.1 has the following low-level code changes:
- The menu system has been rewritten such that both the Win32 and GTK+
versions now share the same menu data. Not only does this reduce the
amount of duplicated code, it makes it easier to add menu items and
it reduces the amount of code needed to build and synchronize the menus.
- The PWM audio emulator has been rewritten in C. This rewrite was based on
pwm.c from Gens Rerecording.
- The build system has been updated so that it automatically detects MacOS X
and Cygwin, and adjusts compilation settings for those two platforms as
necessary. Thanks to Sonicblur on the Sonic Retro forums for the MacOS X
compatibility fixes.
- The About window has been converted to a C++ class.
Eventually, all of the windows will be converted to C++ classes.
- The configure script will now check what hash table implementations are
available at compile time. Previously, Gens/GS only used the relatively
new TR1 unordered_map, which is only available in gcc-4.x and later. Not
only did this cause problems for gcc-3.x users, it caused problems for
gcc-4.0 users, since unordered_map was broken in gcc-4.0. The configure
script will now check to make sure unordered_map is working, and if it
isn't, it will fall back to either __gnu_cxx::hash_map or std::map. If
it falls back to std::map, it will print a warning, since std::map is
not a hash table and is thus considerably slower than both unordered_map
and hash_map.
- The configure script will now check if the linker supports --as-needed.
Previously, the configure script always added --as-needed to LDFLAGS, which
caused a problem on systems that didn't support it.
================================================================
What's new in Gens/GS v2.15.5/GS-m5?
Milestone 5 introduces the following new features:
- The Windows UI and DirectX code has been integrated into the codebase.
The Gens/GS codebase can now be used to compile both the Linux versions
and the Windows versions.
- [Linux] The frame counter code has been updated to work a lot better.
In particular, it no longer uses the x86 instruction "rdtsc", so it
should be more accurate on multiprocessor and multicore systems.
- 7z: A warning dialog is now shown if the 7z binary cannot be run. This
usually occurs if 7-Zip isn't installed.
- [GTK+] The "General Options" dialog now has regular buttons instead of
radio buttons for selecting colors. It seems that most GTK+ themes don't
properly support changing the colors of radio buttons, so changing them
to regular buttons enables proper color support.
Milestone 5 fixes the following bugs:
- [32X] PWM audio volume has been increased by a factor of 4, making it audible.
- [SegaCD] The 8th PCM audio channel now works.
- [Linux] If Gens is started in a terminal window, Ctrl-C now correctly
shuts down the program. Earlier versions ignored Ctrl-C. Apparently,
SDL catches the Ctrl-C (SIGINT) and adds it to the SDL event queue as
an SDL_QUIT message.
- The "Save Config" and "Load Config As" functions incorrectly passed a
NULL value to the GensUI class when a C++ string was expected, resulting
in a crash.
- Clicking "OK" in the "Archive File Selection" dialog with no file selected
resulted in a crash.
- [32X] Some 32X ROMs were misdetected as Genesis ROMs. In particular, drx's
"Sonic 32X" does not say "SEGA 32X" in the header. However, the ROM does
have "MARS" at 0x040E. The detection function has been updated to take
this into account, so "Sonic 32X" is now properly detected as a 32X ROM.
- [GTK+] Fixed GTK+ 2.4 compatibility issues.
- [GTK+] Added accelerators for the "Cancel" and "Save" buttons in the
Game Genie window.
- Color Adjust: If both Contrast and Brightness are set to 0, then no color
adjustment calculations will take place. This prevents inaccuracies due to
rounding errors.
Milestone 5 has the following low-level code changes:
- -Wl,--as-needed has been added to LDFLAGS. This eliminates unnecessary
library dependencies.
- Internal copies of zlib and libpng have been added. These internal copies
are not used by default on the Linux build, since most Linux systems have
zlib and libpng already installed, but are used by default on the Windows
build. Use of these internal copies can be configured using the ./configure
script.
- MP3 playback support can now be disabled in the ./configure script.
- rom.cpp, save.cpp, and imageutil.cpp (formerly scrshot.c) have been
converted to static C++ classes.
- The INI parser now supports hexadecimal and octal numbers. These numbers
are identified by prefixes. (Hexadecimal: "0x" or "0X"; Octal: "0".)
- Controller mappings are now saved as hexadecimal numbers in gens.cfg.
Milestone 5 has the following known issues:
- [Win32] MP3 support is currently disabled due to problems with the MP3
library. ASPI support is available though, so you can use an ASPI library
with a CD-ROM emulator, such as Daemon Tools.
- [Win32] Stretched rendering may not work properly in fullscreen mode.
- [Linux] Monaural sound is broken.
================================================================
What's new in Gens for Linux v2.15.4/GS-m4.2?
Milestone 4.2 fixes the following bugs:
- Joystick input was still completely broken due to an accidental swapping
of "which" (device number) and "axis" (axis number). This bug was
reported by Techokami in #retro.
================================================================
What's new in Gens for Linux v2.15.4/GS-m4.1?
Milestone 4.1 introduces the following new features:
- The Fast Forward feature has been re-enabled. It is mapped to F1.
Note that Fast Forward doesn't work if VSync is enabled.
Milestone 4.1 fixes the following bugs:
- SDL's joystick handler wasn't being initialized properly. Joysticks
were properly detected in the Controller Configuration window, but
didn't work in-game. This bug was reported by Techokami in #retro.
- A missing #include <stdlib.h> line has been added to g_main_linux.hpp.
Lack of this line led to compilation failures on some machines.
This bug was reported by SOTI in #retro.
- zlib support can now be conditionally compiled. This only affects the
GZip and Zip functionality; PNG support implies zlib, but enabling PNG
support will not implicitly enable zlib support.
================================================================
What's new in Gens for Linux v2.15.4/GS-m4?
Milestone 4 introduces the following new features:
- The SegaCD GFX debugger now shows all 16 virtual palette lines. The
virtual palette lines include highlight and shadow. Previously, these
lines were selectable, and the patterns did reflect the palettes, but
the color lines didn't actually show up.
- MAME CHD and CCnet support have been removed. They weren't used for
anything and simply took up extra space.
- The scanline renderer is now available in 32-bit color. Note that the
x86 asm scanline renderers don't erase the scanlines on every frame,
so garbage is left behind by the new text drawing function.
- OpenGL linear filtering can now be enabled/disabled via a menu item.
- New generic input and audio layers, which are located in src/gens/input/
and src/gens/audio/. Like VDraw, which was implemented in Milestone 3,
this will make it easier to add support for DirectInput and DirectSound,
respectively. src/gens/sdllayer/ is now completely gone.
- New onscreen text drawing function. The new function draws text to the
display framebuffer rather than to the emulated framebuffer. Among other
things, this means that messages and the FPS counter no longer show up
in screenshots. The font currently used is the Commodore 64 font, but
more fonts may be added later on.
- 32-bit color support in the VDP debugger.
- Improved OpenGL renderer. The improved renderer takes some fixes from
Gens/Linux 2.15.4, as well as improving the VSync functionality. VSync
uses the GLX_SGI_swap_control extension, so it may not work on all
systems. Support for other VSync extensions will be added later on.
- The GTK+ window border is now set to 0. This allows a window manager to
remove the window border for pseudo-full-screen.
Milestone 4 fixes the following bugs:
- Shadow/Highlight colors were incorrect in 16-bit color.
- If the country code was set to US, Gens/GS would incorrectly attempt to
load the EU MegaCD BIOS if a SegaCD game was loaded, resulting in a
region code error. This has been fixed.
- Physical CD-ROM support via ASPI works again. I accidentally broke it
when CD-ROM support was made conditional.
Milestone 4 has the following low-level code changes:
- C99 mode is now used by default for C-language code.
- The new INI handler has been converted to a C++ class.
- Deprecated GTK+ functions have been disabled via the
-DGTK_DISABLE_DEPRECATED CFLAG.
- New GensUI C++ class, which replaces the old ui-common.c and
ui-common_gtk.c files.
- Minizip has been upgraded to the latest version (v1.01e) and is now in
a separate subdirectory in src/.
================================================================
What's new in Gens for Linux v2.15.2/GS-m3?
Milestone 3 introduces the following new features:
- Completely rewritten video rendering subsystem. The new video rendering
subsystem abstracts the differences between plain SDL and SDL+OpenGL
and presents a standard interface to the rest of Gens. This will make
it easier to add in DirectDraw support later on.
- The configuration file handler has been rewritten such that it no longer
fails to read or write certain configuration entries. Additionally,
section names and key names are now case-insensitive.
- The OpenGL renderer now supports 15-bit and 32-bit color modes.
- Improved Fast Blur function, written in C, that supports 15, 16, and 32-bit
color modes. The old Fast Blur function is still used for 15 and 16-bit color
if x86 asm is enabled via --enable-x86-asm in the ./configure script.
- 7z archives can now be used via an external 7z binary. You must have
p7zip installed in order to use this feature.
- SegaCD LED code has been updated to work correctly in all color modes.
Milestone 3 fixes the following bugs:
- The built-in debugger now properly updates the screen in 32-bit color.
- Horizontal positioning for 256x224 video modes in 32-bit color was off
by 32 pixels.
Milestone 3 has the following low-level code changes:
- Standard controller I/O functionality has been ported to C. Additionally,
controller button presses are now stored in bitfields rather than reserving
an entire 32-bit int per button. Unfortunately, I could not figure out how
to port over the TeamPlayer code correctly, so that remains in x86 asm for
now, with compatibility wrappers with regards to the button format.
- Compression handlers have been rewritten using C++ classes.
- C++ code has been introduced into the Gens/GS codebase. With this change,
all header files have been updated to include "#ifdef __cplusplus"
barriers, so older C-only code will link correctly.
================================================================
What's new in Gens for Linux v2.15.2/GS-m2.2?
Milestone 2.2 fixes the following bugs:
- Fixed several bugs with savestate support, including matching struct alignment
with Gens/Rerecording (Win32) and incorrectly reading x86 memory pointers
for the emulated Z80 CPU. Please note that savestates from previous versions
of Gens/GS will not work correctly on m2.2; however, you can load the
savestates in another emulator, such as the original Gens, and resave it in
the older format. The older format savestate will then work on Gens/GS.
- CD-ROM drive support is now conditional via the ./configure script.
- 32-bit color now works for 32X games.
================================================================
What's new in Gens for Linux v2.15.2/GS-m2.1?
Milestone 2.1 fixes the following bugs:
- 32X VDP rendering was accidentally broken completely in m2. It's fixed
now, at least for 15-bit and 16-bit color. 32-bit color mode still needs
to be fixed.
- The window title for 32X games was always set to "32X (PAL)", even if
the game is NTSC. This is fixed.
================================================================
What's new in Gens for Linux v2.15.2/GS-m2?
Milestone 2 introduces the following new features:
- PNG screenshot support via libpng. This was apparently a wishlist item
for Gens for the past several years, but no one bothered to add it.
- Screenshots now save the unfiltered image at the correct resolution.
For example, Sonic CD special stages now save as a 256x224 image.
- Rewrite of the way compressed files are handled. Compressed files are
now handled using a generic COMPRESS_Handler interface. Currently, only
GZip and Zip files are supported (the same as before), but it's now
much easier and simpler to add new formats.
- The new compression handler detects compressed files by checking the
file's header instead of relying on the file's extension. This may help
in cases where a file is misnamed.
- Multi-file Zip support. If a Zip file containing multiple files is
selected, Gens will prompt you to select which file to open. The UI
for selecting a file is currently not polished, but it will be improved
later on.
- Rewrite of the way renderers are handled. The new rendering system uses
the same rendering code, but has a much simpler calling interface.
- Initial 32-bit color support, ported from Gens Rerecording. Most of the
32-bit color renderers haven't been ported from Gens Rerecording yet,
so only three are available in 32-bit: Normal, Double, and Scale2x.
15-bit or 16-bit color is necessary for the others. To change color modes,
select Graphics, Bits Per Pixel, and the appropriate color mode.
- Conditional compilation support for OpenGL, PNG, and x86 asm renderers.
If PNG support is not enabled, screenshots will be taken in BMP format.
- Border color emulation. The border color is set to color 0 of palette 0
from the MD's VDP.
Milestone 2 fixes the following bugs:
- Fixed a bug where the 32X VDP overlay disappeared when Gens was paused via
the Escape key. The overlay reappeared when Gens was unpaused, though.
================================================================
What's new in Gens for Linux v2.15.2/GS-m1?
Milestone 1 introduces the following new features:
- Massive code cleanup throughout the entire Gens codebase. Many
functions with duplicated code have been consolidated so that
the duplicated code is now shared between the functions. Also,
several large files have been split into smaller files. For instance,
gens.c has been split into gens.c, g_md.c, g_mcd.c, g_32x.c,
and g_palette.c.
- Introduction of OS-independent functions, which will allow for the
integration of the Win32 version of Gens later on, so that one codebase
can be used to build a Gens executable for either operating system.
- Gens v7 savestate format, ported from Gens Rerecording. This adds,
among other things, proper Sega CD savestate support.
- Fixed the built-in debugger, which was broken due to changes in
the way text was written to the emulated screen.
- Added enhanced Sega CD GFX debugging from Gens Rerecording.
- VDP/GFX debugging now outlines the selected palette.
- Initial attempt to consoldidate global variables into structs.
This will make it easier to figure out where everything is located.
- Complete rewrite of the GTK+ UI. Among other things, the new UI
has much improved synchronization, so when a menu item is checked,
it actually means that item is enabled.
- Rewrite of the byteswapping functions so that they describe what is
being swapped (e.g. be16_to_cpu_array()).
- Extra spaces in game names in ROM headers are removed when the
game name is displayed on Gens' title bar.
- Fixed tons of compiler warnings.