Merged revision 1335 to 1337

This commit is contained in:
yabause 2008-12-31 14:43:28 +00:00
parent c05ba29944
commit 783edb2e39
6 changed files with 487 additions and 835 deletions

View File

@ -15,8 +15,9 @@ Jeff Bland
Andres Delikat Andres Delikat
Riccardo Magliocchetti Riccardo Magliocchetti
Max Tabachenko (CrazyMax/mtabachenko) Max Tabachenko (CrazyMax/mtabachenko)
Zeromus zeromus
Luigi__ Luigi__
adelikat
Contributors Contributors
------------ ------------

170
ChangeLog
View File

@ -1,85 +1,95 @@
0.8 -> 0.9 0.8 -> 0.9
There have been so many changes that this list can hardly be considered complete. There have been so many changes that this list can hardly be considered complete.
The savestate system is totally changed and incompatible with old savestates. For this release, we have formatted the list into a high level overview of big changes and bad bugs relative to the previous release. Hopefully what you're interested in.
General/Core: This list does not include items which are solely performance boosts, for let us just say that virtually every system has been speeded up.
- Convert to c++!
- Added "high-level" check for DMAs and Timer for minor (really minor) speed up [shash] * The savestate system is totally changed and incompatible with old savestates.
- Changed instruction execution to 16 at a time blocks (tested and stable) [shash] * The 3d system should be considered rewritten.
- Really minor memory access speed up (mainly added for clarity) [shash]
- Fixes in IPC FIFO [CrazyMax] General/Core:
- Add Geometry FIFO simulation (New SMB and others games not freeze now) [CrazyMax] enh: Convert to c++
- Add cosine interpolation in the SPU (conditionally compiled) [zeromus,luigi__] enh: Add functions for a lid open/close. Holding key (default "Backspace" in Windows port) while game is freeze/non freeze. [CrazyMax]
- Experiment: always one silent SPU core at 44.1khz synched with emu for more precision. enh: Add secure area decryption from ndstool [zeromus]
The audible core runs with the host, causing music to slow down but not tear or pitch bend. [zeromus] enh: Change savestate code to support loosely bound chunks and more easily other parts of the emu (GE, GPU).
- Change savestate code to support loosely bound chunks and more easily other parts of the emu (GE, GPU). The savestate format is changed, but from now on it is in principle more resilient
The savestate format is changed, but from now on it is in principle more resilient (though it will continue to break as we tinker with the internals) [zeromus]
(though it will continue to break as we tinker with the internals) [zeromus] enh: Added SSE2 optimizations for matrices. Since we now make an SSE2 build, more optimizations can be made. [CrazyMax]
- Remove 16MB of WRAM at 0x01****** from arm9. Mapped to unused instead. What was this? [zeromus] enh: Add a preliminary GUI hud system [CrazyMax,zeromus]
- Add RTC implementations (not fully) [CrazyMax]
- Add a GUI hud system; start adding some HUD elements CPU/MMU:
- Add functions for a lid open/close. Holding key (default "Backspace" in Windows port) while game is freeze/non freeze. [CrazyMax] bug: Many fixes in IPC and GE FIFOs. Fixes freezes in NSMB, dsracing, and others. [CrazyMax,luigi__,shash]
- Added a bunch of crazy templates to the cpu and mmu for minor speed boosts [zeromus] bug: Fix ARM instructions SBC and RSC (likewise SBC in thumb) [normatt]
- Add secure area decryption from ndstool [zeromus] bug: Fixed Thumb LDMIA (fixes ingame Dead'n'Furious) [shash]
- change backupmem autodetection to catch more cases of unusual usage patterns [zeromus] bug: Fix repeating DMA (fixes NSMB parallax BG) [zeromus]
- Fixed Thumb LDMIA (fixes ingame Dead'n'Furious) [shash] bug: Proper handling for unaligned CPU accesses [luigi__]
- Fix repeating DMA (fixes NSMB parallax BG) [zeromus] bug: Proper handling for undefined instruction exceptions [Salva Peiró]
Graphics: enh: Remove 16MB of WRAM at 0x01****** from arm9. Mapped to unused instead. Nobody knows what this was. [zeromus]
- Added gfx3d module which emulates the whole GE as part of the core emu. [zeromus] enh: Changed instruction execution to 16 at a time blocks (tested and stable) [shash]
- Moved the windows/cocoa OGLRender to the emu core and replace ogl_collector.
Now every platform shares the same 3d code. [zeromus] Hardware:
- Reorganize 3d code to defer rendering to after 3d vblank. eliminates tearing, and texturing artifacts. [zeromus] bug: Newer and better sqrt and div emulation; makes SM64DS playable [luigi__,shash,zeromus]
- Add optional fragment shading pipeline for more precision [luigi__] bug: Add preliminary RTC implementations [CrazyMax]
- Many tweaks and improvements to 3d precision [zeromus, CrazyMax, luigi__] enh: Add cosine interpolation in the SPU (conditionally compiled) [zeromus,luigi__]
- Rewrite VRAM mapping control and rendering [CrazyMax, luigi__] enh: Experimental: always one silent non-mixing SPU core at 44.1khz synched with emu, for more precision.
- Improvements to 2d/3d compositing aiming at better NSMB rendering; still imperfect [zeromus] The audible core runs with the host, causing music to slow down but not tear or pitch bend. [zeromus]
- Fix in capture display (many games with both 3D screen not blinking now) [CrazyMax]
- Fix in master brightness (this is fix games with black screens) [CrazyMax] Graphics:
- Added SSE2 version for some matrix routines [CrazyMax] - Overhaul 3d:
- Make matrix 4x4 multiply routines use W-coordinate. [zeromus] . Move entire GE to core emu.
- Add many matrix and vector functions to matrix.cpp [zeromus] . Move OpenGL renderer to emu core for optional use by platforms, removing ogl_collector. Now every platform shares the same 3d code.
- Added transparency and fixed material alpha support and alpha testing on the 3D core [shash] . Reorganize 3d code to defer rendering to after 3d vblank. Eliminates tearing, and texturing artifacts. [zeromus]
- Changed how depth initial values are calculated (fixes SM64DS skybox) [shash] . Add optional fragment shading pipeline (more precision) [luigi__]
- Some fixes in 3D core OGL (fixed textures) [CrazyMax] . 3d compositing integrated into GPU engine (more precision and speed in cases where no compositing needed) [luigi__]
- Added texture caching (speedup 3D core) [CrazyMax] . Move lighting model to software instead of using opengl's fixed function model [zeromus]
- Render shadow volumes [zeromus, luigi__] . Render shadow volumes; toon shading and highlight table [zeromus, luigi__]
- Toon shading system [luigi__] . Added texture caching! big speed up. [CrazyMax]
- Carry w=1 from vertex() through pipeline (this will be necessary for software 3d rendering) [zeromus]
- Fix clear depth (ex. Castlevania now doesnt flip) [lugi__] bug: Many assorted tweaks and improvements to 3d and 2d precision [zeromus,CrazyMax,luigi__]
- Make GE matrix mult and load commands clear out unused rows and cols to identity correctly [zeromus] bug: Fixes to GE: command unpacking, projection and pos-vector mode matrix handling, mult and load commands [zeromus]
- Fix errors in matrix operations regarding projection mode and pos-vector mode [zeromus] bug: Fix a bug in texture transformation mode 1 [zeromus]
- Fix error in command unpacking which caused some display lists to totally blow up [zeromus] bug: Fixed GPU rendering bugs in sprites and BG [CrazyMax]
- Convert alpha and material values from [0,31], [0,7] etc ranges to opengl [0,maxint] ranges in a more precise way [zeromus] bug: Fixes to texture conversion [CrazyMax,zeromus]
- Add opengl state caching. This is of dubious performance assistance, but it is easy to take out so I am leaving it for now. [zeromus] bug: Fixes in capture display (no blinking in many games with dual 3D) [CrazyMax]
- Add MMU->GPU signal for when vram mappings change, which allows it to assume textures are unchanged unless vram has changed [zeromus] bug: Fixes in master brightness (this fixes some games with black screens) [CrazyMax]
- Move lighting model to software instead of using opengl for more precision [zeromus] bug: Fixes in screen, backdrop, and sprite blending [luigi__]
- Fix a bug in texture transformation mode 1 [zeromus] bug: Changed clear depths and how depth initial values are calculated (fixes SM64DS skybox, Castlevania) [shash,lugi__]
- Add 3d layer h-scrolling [zeromus] bug: Add 3d layer h-scrolling [zeromus]
- Removed some serious inefficiencies from sprite window code [zeromus] bug: Added transparency and fixed material alpha support and alpha testing on the 3D core [shash]
Mac OS X port: bug: Rewrite VRAM mapping control and rendering (more accurate) [CrazyMax,luigi__]
- Fixed: Filenames and paths with unicode characters now work. [Jeff] bug: Fix some errors in rendering 512 tall BG [zeromus]
- Fixed: Load state from file button works again. [Jeff] bug: convert colors to opengl better to prevent alpha=31 polys from being ever so slightly transparent [zeromus]
- Save State panel now pauses emulation while the file selection box is open. [Jeff] enh: Add MMU->GPU signal for when vram mappings change to function as a texture cache invalidate signal [zeromus]
- Fixed: Frozen video output (and/or messed 3d emulation) after loading a state. [Jeff] enh: Make matrix 4x4 multiply routines use W-coordinate; carry w coord through pipeline [zeromus]
- Added option to load the most recent file upon launching the program. [Jeff]
- Added French translation (thanks to Pierre Rudloff). [Jeff] Mac OS X port:
- Added basic key mapping configuration to application preferences (thanks to Julio GorgŽ). [Jeff] bug: Fixed: Filenames and paths with unicode characters now work. [Jeff]
- Added keyboard shortcuts for Execute, Pause and Reset command (thanks to Julio GorgŽ). [Jeff] bug: Fixed: Load state from file button works again. [Jeff]
- Default key mappings are no longer case sensitive. [Jeff] enh: Save State panel now pauses emulation while the file selection box is open. [Jeff]
- Added ability to limit speed. [Jeff] bug: Fixed: Frozen video output (and/or messed 3d emulation) after loading a state. [Jeff]
- Fixed: Video output should work on software-only 3D renderers. [Jeff] bug: Added option to load the most recent file upon launching the program. [Jeff]
Windows port: enh: Added French translation (thanks to Pierre Rudloff). [Jeff]
- Removed the bug report link with a define, to avoid reports from betas/external builds [shash] enh: Added basic key mapping configuration to application preferences (thanks to Julio GorgŽ). [Jeff]
- Added the version on window bar to recognize versions from screenshots [shash] enh: Added keyboard shortcuts for Execute, Pause and Reset command (thanks to Julio GorgŽ). [Jeff]
- Changed graphics render core to DirectDraw (work faster) [CrazyMax] enh: Default key mappings are no longer case sensitive. [Jeff]
- Fix a race condition in NDS_3D_Reset and NDS_glInit [zeromus] enh: Added ability to limit speed. [Jeff]
- Tweak optimization flags and change entire source code to use fastcall [zeromus] enh: Fixed: Video output should work on software-only 3D renderers. [Jeff]
- Add an arm9 cpu load average calculator similar to no$ [zeromus]
- Fix the buggy auto frameskip logic which made the emu slow to a crawl. Now it runs fast! [zeromus] Windows port:
- Fix resizing, rotate & aspect ration of main window. Add save window position and parameters [CrazyMax] bug: Fix a race condition in NDS_3D_Reset and NDS_glInit [zeromus]
- Rewrite all debug tools (autoupdate works now) [CrazyMax] bug: Fix the buggy auto frameskip logic which made the emu slow to a crawl. Now it runs fast! [zeromus]
- Add AVI output [zeromus] bug: Fix resizing, rotate & aspect ration of main window. [CrazyMax,_zeromus]
- Remove multithreading from user interface after finding several synchronization issues [zeromus] bug: Remove multithreading from user interface after finding several synchronization issues [zeromus]
- Rewrite input core & replace config input dialog [CrazyMax] enh: recent roms menu [luigi_]
enh: Changed graphics render core to DirectDraw (work faster) [CrazyMax]
enh: Add an arm9 cpu load average calculator similar to no$. but I dont think it works right. [zeromus]
enh: Rewrite all debug tools (autoupdate works now) [CrazyMax]
enh: Rewrite input core & replace config input dialog [CrazyMax]
enh: Add AVI output [zeromus]
enh: Add pause toggle and frame advance hotkeys [adelikat]
enh: Add frame counter display and hud messages framework [adelikat]
enh: Main window remembers position, size, and a few other emu preferences [adelikat]
enh: Removed directx sdk dependency for easier building. [zeromus]
enh: Savestate doesnt unpause emu if it is already paused [adelikat]
0.7.3 -> 0.8 0.7.3 -> 0.8
Cocoa: Cocoa:

View File

@ -22,11 +22,6 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
//zero 9/8/08 - fixed a bug
//SIGNED_UNDERFLOW(a, (!cpu->CPSR.bits.C), tmp)
//was being called. but SIGNED_UNDERFLOW expects values in bit31. replaced with
//SIGNED_UNDERFLOW(a, (cpu->CPSR.bits.C?0:0x80000000), tmp)
#include "cp15.h" #include "cp15.h"
#include "debug.h" #include "debug.h"
#include "MMU.h" #include "MMU.h"

View File

@ -24,11 +24,6 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
//zero 9/8/08 - fixed a bug
//SIGNED_UNDERFLOW(a, (!cpu->CPSR.bits.C), tmp)
//was being called. but SIGNED_UNDERFLOW expects values in bit31. replaced with
//SIGNED_UNDERFLOW(a, (cpu->CPSR.bits.C?0:0x80000000), tmp)
#include "bios.h" #include "bios.h"
#include "debug.h" #include "debug.h"
#include "MMU.h" #include "MMU.h"
@ -357,8 +352,11 @@ TEMPLATE static u32 FASTCALL OP_SBC_REG()
cpu->CPSR.bits.N = BIT31(res); cpu->CPSR.bits.N = BIT31(res);
cpu->CPSR.bits.Z = res == 0; cpu->CPSR.bits.Z = res == 0;
cpu->CPSR.bits.C = (!UNSIGNED_UNDERFLOW(a, (u32)(cpu->CPSR.bits.C?0:0x80000000), tmp)) & (!UNSIGNED_OVERFLOW(tmp, b, res)); //zero 31-dec-2008 - apply normatt's fixed logic from the arm SBC instruction
cpu->CPSR.bits.V = SIGNED_UNDERFLOW(a, (u32)(cpu->CPSR.bits.C?0:0x80000000), tmp) | SIGNED_OVERFLOW(tmp, b, res); //although it seemed a bit odd to me and to whomever wrote this for SBC not to work similar to ADC..
//but thats how it is.
cpu->CPSR.bits.C = !UNSIGNED_UNDERFLOW(a, b, res);
cpu->CPSR.bits.V = SIGNED_UNDERFLOW(a, b, res);
return 3; return 3;
} }

View File

@ -24,7 +24,7 @@
#include "AboutBox.h" #include "AboutBox.h"
#include "resource.h" #include "resource.h"
#define TEAM 31 #define TEAM 32
const char *team[TEAM] = { "Original author", const char *team[TEAM] = { "Original author",
"---------------", "---------------",
"yopyop", "yopyop",
@ -44,6 +44,7 @@ const char *team[TEAM] = { "Original author",
"Max Tabachenko (CrazyMax/mtabachenko)", "Max Tabachenko (CrazyMax/mtabachenko)",
"Zeromus", "Zeromus",
"Luigi__", "Luigi__",
"adelikat",
"", "",
"Contributors", "Contributors",
"------------", "------------",

File diff suppressed because it is too large Load Diff