bsnes/snesreader/unrar/whatsnew.txt
byuu 989648c21c Update to bsnes v062 release.
Major accuracy improvements have happened over the past few days. They easily warrant a new beta release.
First, it turns out that every emulator to date; not only for the SNES, but for the Apple II GS as well, incorrectly computed ADC (add) and SBC (subtract) flags in BCD (binary-coded decimal) mode. At least fifteen years of emulating the 65816 processor, at least five known investigations into their behavior, and we all still had it wrong.
So I wrote some tests that dumped every possible combination of adc and sbc with every possible input and every possible flag, and recorded both the accumulator result and status flag register. From here, blargg figured out the underlying trick: the CPU was computing overflow before the top-nibble's BCD correction pass. With the routines rewritten, bsnes perfectly matches real hardware now.
Next, some background. The whole reason I got into SNES emulation was because I was tired of writing code that ran perfectly fine on emulators, but failed miserably on real hardware. The number one problem was emulators allowing video RAM to be written while the screen was being rendered. This single bug has broken dozens of fan translations and ROM hacks. Some have been updated to work around this bug, and many others are left in a permanently broken state (such as the translations of Dragon Quest I & II and Sailor Moon: Another Story, to name just two.) After asking emulator authors to fix this since 1997, I finally had enough in 2004 and started on bsnes. For this particular bug, I'm very happy to report that all but one SNES emulator now properly blocks these invalid accesses. Although sadly one still offers a configuration setting for backwards compatibility with these translations. What an ironic shame ... emulating an emulator. And in the process, sapping the motivation to ever go back and fix these 
titles to ever run on real hardware. But I digress ...
The second biggest problem that causes software created under emulation to break on real hardware has, without a doubt, been the hardware delays as the S-CPU computes MUL (multiplication) and DIV (division) results. To date, whenever you used this hardware functionality, emulators have immmediately furnished the correct results. But on real hardware, multiplication requires eight CPU cycles, and division requires sixteen. Each step computes one bit of the source operand and updates the results. Reading the output registers early thus provides the partially computed results.
This is obscure. It isn't well known, and many people writing software for the SNES probably aren't even aware of this limitation. Because of the partial computation results, outright delaying the computation would break many commercial software titles. But by not emulating the delay at all, we were causing a great disservice to anyone wishing to use an emulator for development purposes.
Now, once again, thanks to blargg's algorithm help, he has determined the underlying multiplication and division algorithms. Combined with my expertise of SNES analysis and hardware testing, I was able to determine when and how the ALU (arithmetic logic unit) stepped through each work cycle. Our work combined, bsnes now also perfectly emulates the hardware MUL and DIV delays.
Again, this isn't going to fix commercial software titles. They would have realized that they were reading back invalid MUL and DIV values, and fixed their code. This is for all of the software developed using emulators. This is an extension of my commitment to create a hardware emulator, and not a video game emulator.
We also verified that the S-PPU multiplication interface does indeed return instant results with no delay. So emulation of that interface was already correct.
I'm only labelling this release a beta because it hasn't been tested. But I'm fairly confident that it is stable, and I seriously recommend upgrading from v060 or prior releases. This is easily one of the last major pieces missing from emulation.
The last notable elements are: S-CPU auto joypad poll timing, S-CPUr1 HDMA crash detection, S-CPU<>S-SMP port ORing, S-SMP timer glitching, S-DSP mute pulse, and full cycle-level emulation of the S-PPU. With all of the aforementioned items, I will consider a v1.0 release of bsnes ;)
Lastly, I'll post this screenshot just for fun. When d4s translated Breath of Fire II to German, he added some code that relies on the incorrect emulation of the DIV register to detect emulators. With this emulated properly, you now see the following screen:
./sshots/bs_349.png
Sorry to spoil that, but the secret's already out, as the MESS team reported on it publicly already.
I intend to add pseudo-randomness support shortly, which should eliminate one of the last vectors possible to distinguish bsnes from real hardware :)
A million thanks to blargg for making this release possible.
2010-03-13 23:48:54 +00:00

267 lines
11 KiB
Text

WinRAR - What's new in the latest version
Version 3.80
1. Added support for ZIP archives containing Unicode file names
in UTF-8 format. When creating ZIP archive, WinRAR stores
names in Unicode only if they cannot be stored correctly using
the current single byte character set.
2. Added decompression support for WinZip AES encrypted ZIP archives.
3. Improved Unicode support for RAR and ZIP archive names.
4. "Ask before overwrite" and "Skip existing files" update modes
are now available in archiving dialog. They allow to specify
WinRAR behavior when updating already existing files in archive.
Unlike already available "Fresh existing files only" and
"Add and update files", these new modes ignore file date
and compare only file names.
Command line equivalents of these modes are:
a) switch -o enables "Ask before overwrite" archiving mode;
b) switch -o- enables "Skip existing files" archiving mode;
c) switch -o+ enables "Overwrite all" mode (default for archiving).
5. New "Add to context menu" option in "Profile parameters" dialog.
If this option is on, the profile name will be displayed in Explorer
context menus allowing to activate a profile from context menu.
6. New -cp<profile name> switch allows to select a compression profile
in command line mode. It is supported only by GUI WinRAR.exe,
not by rar.exe.
7. New "Options" page of archiving dialog contains the group of
settings modifying the behavior of "Delete files after archiving"
option from "General" page:
a) Delete files. Delete files normally like in previous WinRAR
versions.
b) Move files to Recycle Bin. Deleted files are placed to
Recycle Bin.
Command line equivalent of this option is -dr switch.
c) Wipe files. Before deleting file data are overwritten by
zero bytes to prevent recovery of deleted files.
Command line equivalent of this option is -dw switch.
All these options have an effect only if "Delete files
after archiving" is on. You can enable any of these options
in the default compression profile to change the default
behavior of "Delete files after archiving".
8. WinRAR "Extraction path and options" dialog is now resizable.
You can use the mouse to drag its border to the desired size
and provide more space for folder tree pane. WinRAR will store
new dimensions of this dialog.
9. New "Update" SFX script command and "Update mode" group
of options in "Update" page of "Advanced SFX options" dialog.
These command and options allow to check time and implement
file time based updating;
10. SFX script "Shortcut" command and "Add shortcut..." command
in "Advanced SFX options" dialog now allow to specify
an icon file containing an icon associated with shortcut.
11. New "Wipe temporary files" option in "Settings/Security" dialog
provides more secure, though slower, way to delete temporary
WinRAR files.
12. WinRAR and RAR display the total progress bar when unpacking
a multivolume RAR archive if all volumes are present
in the same folder.
13. WinRAR and RAR automatically expand names of environment
variables in list files. For example, a list file can contain
lines like:
%windir%\*.exe
%USERPROFILE%\Desktop
This feature is available only in Windows RAR version.
14. Added support of TAR archives with non-zero "extra field" data.
15. Added support of TAR archives, which does not contain
the end of archive entry consisting of 512 zero bytes.
16. Improved Unicode support when dragging files from WinRAR window.
17. Shift+Tab key combination can be used in main WinRAR window to
switch the input focus between interface elements (files, comment,
tree, address) in reverse order. In previous versions Shift+Tab
used the same order as Tab.
18. Corrected a possible WinRAR crash when opening truncated
UDF ISO files.
Version 3.71
1. Archive names in rar.log error log file always include
the full path.
2. WinRAR tray icon is compatible with high DPI display modes.
3. If you modified a file in archive with encrypted names using
an external editor, WinRAR will not ask for archive password again
when prompting to update a file. It will use a password which
you entered when opening an archive,
4. Bugs fixed:
a) switch -tl and "Set archive time to latest file time" option
could fail in previous version. Sometimes they set archive time
to current system time instead of latest file time;
b) if -ag switch mask contained archive number, month and minute
characters, WinRAR placed 'I' character instead of minute value
into generated archive name for archive numbers exceeding 1;
c) high ASCII names in ISO files using ISO 9660 format without
Joliet format extension were displayed incorrectly;
d) WinRAR could crash when decompressing some of corrupt RAR archives;
e) if "Turn PC off when done" option was set in "Convert archives"
command, WinRAR turned PC off after converting the first archive
in selected group instead of after converting the entire group;
f) if user specified a non-existent destination path in SFX archive
in Vista, SFX could enter into infinite "create new SFX window"
loop;
g) WinRAR could fail to unpack an individual file from subfolder
of ACE archive using the drag and drop.
Version 3.70
1. Numerous Windows Vista compatibility changes:
a) help format changed from old HLP to newer HTML based CHM;
b) GUI self-extracting modules attempt to request for
administrator permissions if they cannot create destination
folder under current user account;
c) Log file rar.log and WinRAR theme files are stored
in %APPDATA%\WinRAR folder instead of WinRAR program files folder.
Exported settings file settings.reg is also stored
in %APPDATA%\WinRAR folder by default, but it is possible to
select another folder in "Save WinRAR settings" and "Load WinRAR
settings" dialogs.
WinRAR searches for registration key and settings.reg
both in its program files folder and in %APPDATA%\WinRAR;
It is possible to set the string value "AppData" in Registry key
HKEY_CURRENT_USER\Software\WinRAR\Paths to override the default
%appdata%\WinRAR path for WinRAR settings.
For example, if you wish to store theme files in WinRAR folder,
set this value to "c:\Program Files\WinRAR".
d) Vista compatibility changes in WinRAR shell integration;
e) New "Request administrative access" option in "Advanced" page
of "Advanced SFX options" allows to create SFX archive,
which will request the administrative access when started
in Windows Vista.
Command line equivalent of this option is -iadm switch.
2. Added support for ISO 13346 (UDF) file format. This format
is frequently used in ISO images of DVD disks.
3. Added Unicode support for ISO 9660 files, so WinRAR should
handle non-English file names in .iso files better.
4. Design changes in window displaying archiving and extraction
progress:
a) it provides more space for file names, allowing lengthy names;
b) it displays the current archive name in separate line,
allowing much longer archive names than before;
c) when archiving, it displays the current compression ratio
in separate line;
d) it can use both standard Windows and classic WinRAR progress bars.
Turn on "Windows progress bars" option in WinRAR "Settings/General"
dialog to use standard progress bars. By default this option is
on if some Windows visual style is active and off if Windows Classic
theme is selected.
Windows progress bars are two color only, so they do not indicate
the current compression ratio. But now the ratio is displayed
in separate line;
e) "Mode..." button moved to bottom of window.
5. GUI self-extracting modules support following command line
switches:
-d<path> set the destination path
-p<pwd> specify a password
-s silent mode, hide all
-s1 same as -s
-s2 silent mode, hide start dialog
-sp<par> specify parameters for setup program
6. GUI self-extracting modules do not pass the entire command line
to setup program like they did in previous versions.
If you need to get access to entire command line of SFX archive,
parse sfxcmd environment variable which contains this command line.
7. New switch -sc<charset>[objects] allowing to select character
sets for archive comments and list files. It replaces -fcu switch
introduced in RAR 3.60, which was removed from list of supported
switches. Now you need to specify -scuc instead of -fcu to use
Unicode comments. Unlike -fcu, -sc also supports OEM and ANSI charset.
8. New "Save archive copy as..." command in "File" menu.
This command may be useful if you opened an archive from Internet
directly in WinRAR and then decided to save it on local disk.
9. "Word wrap" command added to "View" menu of WinRAR internal viewer,
so you can change the wrapping mode of already opened viewer window.
State of this option is not stored between viewing sessions.
If you need to change the default word wrap mode, use WinRAR
"Settings/Viewer" dialog.
10. Buttons "Up" and "Down" added to "Organize profiles" dialog.
Using these buttons you can change position of selected profile
in the list.
11. Operation progress is displayed when adding the recovery record.
12. If WinRAR is minimized to tray and mouse is over its icon,
WinRAR diplays a message about the current operation progress.
In previous versions it included only percent done, now it also
contains the time left information.
13. Console RAR displays "Calculating the control sum" message
when calculating CRC32 control sum for newly created RAR volume.
Previous versions also calculated the volume control sum,
but did it silently.
14. Archives history list in "File" menu allows Unicode names,
providing more reliable support for non-English archive names.
15. Stack overflow vulnerability has been corrected in password
processing module of console RAR and UnRAR. GUI WinRAR is not
affected. We are thankful to the iDEFENSE LABS for reporting this bug.