Commit Graph

5883 Commits

Author SHA1 Message Date
zeromus 7c9abef399 rename game hacks 2017-03-04 01:12:28 -06:00
zeromus 859d47e7ff make CPU freezing flags more flexible, then don't use that. shrink overclocking interval. 2017-03-04 01:09:02 -06:00
zeromus adf682eb23 gpu: remove LCDC check in capture reset 2017-03-04 01:07:09 -06:00
zeromus 9909f34a35 fix hacks not getting enabled properly 2017-03-04 00:37:15 -06:00
zeromus b5a4cf3bac swrast: tiny speedup to backface tests 2017-03-03 21:53:48 -06:00
rogerman 1e96e738d2 Cocoa Port: Correct the touch display location transformation for Retina displays. (Regression from commit ce494a2. Fixes #42.) 2017-03-01 23:09:52 -08:00
rogerman 5e06fbc547 GPU: Change how DISPCAPCNT's CaptureEnable flag is handled, fixing a graphical issue when starting a battle in Pokemon Black/White. (Regression from r5259.)
- To note: This fix to Pokemon Black/White does not require
CommonSettings.pokehax to be enabled.
- The CaptureEnable flag is now only read at the start of line 0,
instead of being read directly from the DISPCAPCNT register per line.
In addition, this same state is held all the way through line 192.
- The CaptureEnable flag is now reset at the start of line 192, instead
of near the end of line 191 H-blank. (This is the proper behavior
according to GBATEK.)
- The CaptureEnable flag is now only reset when the VRAM configuration
is LCDC, instead of always being reset. This makes it possible for this
flag to remain set on line 192 if the VRAM configuration is changed to
a non-LCDC configuration.
- CommonSettings.pokehax is now initialized to false.
- Fix a small bug when setting CommonSettings.pokehax via the command
line.
2017-03-01 18:02:20 -08:00
zeromus 8e18531784 add win32 ui for game-specific workarounds toggling 2017-03-01 00:34:31 -06:00
zeromus cfae9c7674 add logic and CLI for game-specific workarounds 2017-03-01 00:34:09 -06:00
zeromus 99f68c8a51 fix errors in rigorous-timing and advanced-timing and spu-advanced commandline options 2017-03-01 00:31:38 -06:00
rogerman be8530bc3d GPU: Fix graphical issue in Billiards Action when running at custom framebuffer sizes.
- Fixes custom VRAM reads for OBJ bitmap reads when the read location
doesn’t start at line 0. This behavior is now consistent with how BG
extended layers do it.
2017-02-28 22:04:36 -08:00
rogerman 65c5cdd712 GFX3D: Also treat wireframe polygons using A3I5/A5I3 textures as opaque if the polygon is a Decal or Shadow polygon.
- Also do a few readability improvements in the OpenGL renderer.
2017-02-28 14:48:42 -08:00
zeromus 4fb55bddb9 fix: trying to use a dldi-function without --load-type=1 would end up in desmume crashing 2017-02-28 16:31:51 -06:00
zeromus 8c8ba5e355 does github want me to add this? 2017-02-28 15:11:58 -06:00
zeromus 1f5ece6eeb Update README.md 2017-02-28 15:10:57 -06:00
zeromus 2cb8ce2c4f Create README.md 2017-02-28 15:10:29 -06:00
rogerman 68958a7a08 GFX3D: Opaque polygons using A3I5/A5I3 textures are no longer considered transparent if the polygon is a Decal or Shadow polygon.
- Fixes the edge marking of blocks in Picross 3D when running
SoftRasterizer.
2017-02-27 15:20:58 -08:00
rogerman 3b74861fc2 OpenGL Renderer: Edge marking now blends properly to zero-alpha pixels. 2017-02-27 13:13:37 -08:00
rogerman 0f70654dab SoftRasterizer: Fix bug where edge marking can accidentally cause pixels to become fully transparent.
- Fixes the edge marking rendering issue for the girls in the title
screen of Love Plus.
2017-02-24 12:48:21 -08:00
rogerman a2273b5eac OpenGL Renderer: Prevent applying edge marking on wireframe polygons. 2017-02-23 19:38:41 -08:00
rogerman c71da856f5 Render3D: Another rework on viewport transformations in SoftRasterizer and OpenGL. Completes fixes on #27.
- Also fixes major rendering regressions with SoftRasterizer in Metroid
Prime Hunters and Princess Debut. (Regressions from e02d134.)
2017-02-23 15:40:23 -08:00
zeromus 5335312704 fix little bug in prior (re #27) 2017-02-23 01:55:17 -06:00
zeromus e277fb2aed fix prior commit for HD 3d (re #27) 2017-02-23 01:08:08 -06:00
zeromus e02d134482 fix handling of invalid viewports. solves homie rollerz character select. only implemented in softrasterizer. re #27 2017-02-23 00:55:33 -06:00
rogerman 8dd7c9b924 GPU: No more need for clients to specify whether to apply the master brightness on a per-scanline basis or on a per-framebuffer basis; GPUSubsystem can now automatically switch between applying per-scanline or applying per-framebuffer. 2017-02-22 17:07:11 -08:00
zeromus 7031bd9c0c matrix stacks: fix new asserts in nanostray2 weapon shooting and dual strike combat anims (re #39) 2017-02-22 17:42:37 -06:00
rogerman 093ce4b05d Cocoa Port: The Metal blitter now performs its own display postprocessing instead of letting the GPUSubsystem do it.
- Display views now take the Deposterize filter into account when
determining the direct-to-CPU-filtering state.
- GPUSubsystem now combines the RGB666-to-RGB888 conversions and master
brightness steps into a single postprocessing step.
- Do some minor code cleanup.
2017-02-22 14:14:22 -08:00
zeromus b553ff917b fix matrix stacks better (re: #39). fixes broken mario 64 head 2017-02-22 00:26:03 -06:00
zeromus 1cc22ae2aa fix matrix stack error conditions and handling (fixes #39) (savestates are broken) 2017-02-20 23:26:51 -06:00
rogerman fb2cfc4e9c GPU: Better handle the NDSDisplayInfo flags for applying the master brightness. 2017-02-16 00:31:02 -08:00
rogerman 60ae4c8de3 matrix.h: Fix compiling on certain 32-bit systems. (Regression from commit fc3570a. Fixes issue #40.) 2017-02-14 14:52:42 -08:00
zeromus 6cd42cbfe4 stop printing garbage to osd due to bad stdarg forwarding (bug from osd refactoring) 2017-02-11 08:14:27 -06:00
rogerman 72fa455ca0 Cocoa Port: Display views now run using Apple Metal, if available.
- An Apple Metal display view requires macOS 10.11 El Capitan or later,
in addition to a Metal-compatible GPU.
- Apple Metal display views have significantly lower CPU usage then
OpenGL display views.
2017-02-10 12:33:34 -08:00
rogerman 3799af3a01 Cocoa Port: ClientDisplayView::FinishFrameAtIndex() is no longer abstract. 2017-02-10 12:28:11 -08:00
rogerman ff2e6cb220 Cocoa Port: Increment/decrement the number of display views in need of CPU filtering, instead of looping through all outputs to determine it. Prevents a possible deadlock when changing CPU-based pixel scalers.
- Also do some additional code cleanup.
2017-02-10 11:28:35 -08:00
rogerman 241f50ee7a Cocoa Port: Don't load framebuffers from the fetch object if the Deposterize filter is enabled. 2017-02-09 09:26:30 -08:00
rogerman 00b5ff70d0 Cocoa Port: Move the CPU pixel scaler object from OGLVideoOutput to ClientDisplayView. 2017-02-08 13:35:42 -08:00
rogerman fc9b4831a0 Cocoa Port: Do some code cleanup. 2017-02-07 18:50:13 -08:00
rogerman a09763f8c3 Video Filters: Reorganize the VideoFilter class and simplify RenderDeposterize(). 2017-02-07 15:19:32 -08:00
zeromus d9a0c0ef00 newer win32 scond stuff for bug smoking out 2017-02-04 16:33:55 -06:00
rogerman 6564827199 Cocoa Port: Move InitHQnxLUTs() out of OGLDisplayOutput.cpp into ClientDisplayView.cpp so that the code can be shared with other ClientDisplayView subclasses.
- Also make the HQnx LUT textures 32-bit instead of 24-bit.
2017-02-03 18:30:20 -08:00
rogerman 64d58b9b09 Cocoa Port: Oops! Forgot to take out a reference to the not-yet-released Apple Metal renderer.
- Fixes building of the Xcode project. (Regression from commit aff2d07.)
2017-02-01 16:09:12 -08:00
rogerman aff2d07146 Cocoa Port: Huge refactor to ClientDisplayView, now supporting the use of shared fetch objects and shared client objects in order to lower memory usage and CPU/GPU usage when many display views are running at the same time.
- OpenGL display views now use a shared fetch object to fetch the emulated GPU framebuffers and store them in shared textures within a shared context. In conjunction with the new double-buffering support from the last commit, this eliminates the copying between the framebuffers and each display view.
- OpenGL display views now use shared HQnx LUT textures, rather than having to initialize and maintain a copy of the LUT textures for each display view.
- OpenGL display views no longer perform any rendering while their associated NSView is hidden, improving the performance of creating new display views.
- OpenGL display views can now DMA directly from pinned-memory both custom-sized framebuffers and CPU-pixel-scaled native-sized framebuffers at the same time.
2017-02-01 15:56:54 -08:00
rogerman 08b8a1a62c GPU: The output framebuffers are now double-buffered and page-aligned.
- Framebuffers are now page-aligned on 4KB boundaries. This is to
improve performance when using the framebuffers directly as pinned AGP
memory.
- Framebuffers are now double-buffered. The target buffer index is now
tracked using the bufferIndex field of NDSDisplayInfo.
- Clients may no longer supply their own buffers to
SetCustomFramebufferSize(). Clients must use the pointers supplied by
NDSDisplayInfo.
- The frameskip flag is now set only on line 0 and remains consistent
for all 192 lines of rendering.
- GPUSubsystem no longer needs a special allocater/deallocator for
itself, so it has been reverted back to a standard C++ new/delete.
- Add a GPUClientFetchObject helper class as an aid to clients that
need to read out the framebuffers. (Should probably move to its own
file at some later date.)
2017-02-01 09:34:21 -08:00
rogerman fc3570a18a Revert "Fix buffer overrun issues with custom memset functions."
This reverts commit 53c4a27aef.

I forgot that these functions are based on element count, not based on
byte count. Rename “length” to “elementCount” for better clarification.
2017-01-26 01:23:42 -08:00
rogerman 62f230ef44 common.cpp: Add the convenience function malloc_alignedPage(), which returns a 4KB page-aligned (for most systems) block of memory. 2017-01-25 20:03:22 -08:00
rogerman 53c4a27aef Fix buffer overrun issues with custom memset functions. 2017-01-25 20:01:28 -08:00
rogerman b9a9b8e7b2 Cocoa Port: Another round of refactoring for ClientDisplayView.
- Fetching and loading of GPU frame data is now performed as two
separate operations.
- Display windows no longer draw concurrently on backgrounds threads;
instead they are updated synchronously.
- Associate the CALayer after the .xib completely loads the NSView for
better compatibility.
- MacOGLDisplayView now creates an NSOpenGLContext instead of a
CGLContextObj, bringing back compatibility with macOS 10.5 Leopard.
- Fix building with the Xcode 3 project.
2017-01-24 19:08:44 -08:00
rogerman 3b0920d7f0 Video Filters: Rework the Scanline and Nearest2X filters to modern standards, and also add an SSE2 version of the Scanline filter. 2017-01-23 12:31:52 -08:00
zeromus 48bef75fd9 sync with retroarch again -- new work to make scond_signal slightly more pthreads compliant (and other tidies) 2017-01-21 22:43:34 -06:00