Commit Graph

6117 Commits

Author SHA1 Message Date
rogerman 60c01bd63a GPU: Do a few more minor optimizations to rendering complete OBJ layer lines. Most notably, all complete OBJ layer lines, not just ones reading directly from custom VRAM, now benefit from the SSE2-accelerated code. 2018-11-30 20:12:58 -08:00
rogerman 9a53e8be69 GPU: Fix bug in GPUEngineBase::_PixelUnknownEffectWithMask16_SSE2() where blending effects for OBJ layers were being handled incorrectly. This bugfix only affects SSE2-enabled systems. (Regression from commit 8e9e7c4. Fixes #232.) 2018-11-30 17:10:56 -08:00
rogerman 2c5c2f6186 GPU: Use the same technique in the commit 6bcd19b GPUEngineBase::_CompositeVRAMLineDeferred() bug fix in order to do a tiny optimization to GPUEngineBase::_CompositeLineDeferred(). Also makes the code more consistent as well. 2018-11-29 22:25:37 -08:00
rogerman d0330fc96e Cocoa Port: Upgrade Interface Builder .xib files to 3.2 format with minimum deployment target of macOS 10.6. This change effectively drops support for building DeSmuME directly from a PowerPC Mac. Fixes #231.
- It is still possible to create a PowerPC binary, but this now requires some extra steps. From now on, you must use an Intel Mac running Mavericks or earlier to re-save the .xib files with a deployment target of macOS 10.5 in Interface Builder 3.2, and then use Xcode 3 to build a PowerPC binary using the Xcode 3 project file.
2018-11-29 22:02:07 -08:00
zeromus 3e37352bee winport - menu option to control CLI console visibility
fixes #230
2018-11-29 16:25:59 -06:00
rogerman 6bcd19b3cb GPU: Fix a bug in GPUEngineBase::_CompositeVRAMLineDeferred() where compInfo.target.xCustom was overstepping its bounds in X-dimension only custom buffers. This had the effect of causing undefined coloring when running at custom resolutions. (Regression from commit 8e9e7c4. Fixes #228 and fixes #229.) 2018-11-29 13:12:56 -08:00
zeromus f6938dc80a
Merge pull request #217 from SuuperW/paths
Paths
2018-11-29 15:04:31 -06:00
rogerman 8e9e7c4a2a GPU: Enable SSE2-accelerated custom-sized VRAM reads through the OBJ layer. This significantly improves the performance of many games, such as those that make use of dual-screen 3D, when running at the higher resolutions. 2018-11-29 02:00:21 -08:00
rogerman 6fc6ceb294 SoftRasterizer: For SSE2-enabled systems only, fix a rare graphical glitch that can sometimes occur in some games. (Regression from commit 21f04c9.) 2018-11-28 17:31:49 -08:00
rogerman 4f543aa8ca Cocoa Port: Yet another attempt at eliminating microstuttering in Metal display views. While it hasn't been completely eliminated yet, it shouldn't be as bad now. 2018-11-28 13:36:02 -08:00
rogerman 1f9b9e02a4 SoftRasterizer: Fix build issues on Windows. (Regression from commit 21f04c9.) 2018-11-23 15:30:11 -08:00
rogerman 21f04c9ef2 SoftRasterizer: Do some minor improvements to both performance and code size. 2018-11-23 14:59:13 -08:00
Roger Manuel b1abf50a01
Merge pull request #224 from Jules-A/WinOglCompatUI
WIP WinFrontend UI for the new OpenGL compatabilty tradeoffs.
2018-11-23 14:17:00 -08:00
Jules.A a51a6d4b6d Revert pointless changes that only saved a few lines. 2018-11-23 17:18:16 +08:00
Jules.A 20547d38a2 Remove unneeded bool initialisation and now that ini values are sanatized comboboxes can be initialised and set in a loop to save a few lines. 2018-11-23 17:05:40 +08:00
Jules.A 7e4a270644 Ughh... get rid of the extra semicolon... 2018-11-23 14:19:56 +08:00
Jules.A db1ca70f59 Fix label variable naming, spacing and finally get ini value checking working without requiring to check for the value that is getting changed, 2018-11-23 14:12:52 +08:00
Jules.A 156c590ca4 Check if user inputted values are correct on initiation. 2018-11-23 01:47:14 +08:00
Jules.A 54c6205e95 Fix up the UI and delete the unusused function (it's really not worth it until more settings can be checked). 2018-11-22 22:16:36 +08:00
rogerman d410b5c195 SoftRasterizer: Fix Z-depth calculations when compiling on MSVC. Fixes the overworld map in Dragon Quest IV. (Regression from commit d81a75c.)
- Apparently, MSVC has a more strict implementation of IEEE-754 single-precision floats (with 23-bit significands) than Clang and GCC, and so we going to drop 2 LSBs during the calculation so that we're multiplying z by a 22-bit significand. Coincidentally, this now matches what we're doing with the OpenGL renderer, so this tends to better code consistency.
2018-11-21 19:52:30 -08:00
Jules.A 30e9fb9c46 WIP WinFrontend UI for the new OpenGL compatabilty tradeoffs. Should be fully functional except for CheckValid3DSettingInt where I messed up so I left it commented out, honestly it's probably not needed anyways as there's already checks in place, it just doesn't update ini until you save settings. UI is still a mess, will have to work on that later. 2018-11-21 21:48:30 +08:00
intact 2f93fedbf8 Gtk+ Port: Use Desktop or Home as fallback directory for screenshots 2018-11-21 14:44:35 +01:00
rogerman f03a880ef9 WiFi: In Compatibility mode, reset the current RX packet's latency counter for every halfword write like its supposed to be. 2018-11-20 23:14:09 -08:00
rogerman adbbd406b1 Cocoa Port: Add tooltips for each of the OpenGL rendering accuracy options. 2018-11-20 17:56:18 -08:00
rogerman 6f8c060db6 OpenGL Renderer: It is now possible to toggle certain accuracy-related features on and off so that users can choose where to make their accuracy-performance tradeoffs. These four emulation accuracy features are: 'Shadow polygons', 'Special zero alpha blending', 'Depth-Equals test tolerance', and 'Depth-LEqual polygon facing'.
- New Behavior: Due to the rarity of needing to emulate 'Depth-LEqual polygon facing' and its guaranteed reduction in performance in all games, this accuracy feature is now OFF by default.
- Expose these new settings in the Cocoa port UI.
2018-11-20 11:44:30 -08:00
rogerman 1e18c3fb9f Windows Port: When running OpenGL display method, properly initialize V-sync to match wantVsync rather than assuming that the default setting for wantVsync will match the default setting of the video driver. 2018-11-19 02:49:31 -08:00
rogerman d81a75c867 SoftRasterizer / OpenGL Renderer: Drop less bits in the depth calculation, making for smoother depth transitions. For certain games, this may allow for better distance rendering, especially at the higher resolutions. (Related to commit c9025e8.)
- SoftRasterizer may now drop at most one LSB, down from dropping 9 LSBs.
- OpenGL will now drop only 2 LSBs, down from 9 LSBs. In this case, dropping 2 LSBs was specifically chosen to ensure that the Dragon Quest IV overworld map continues to work.
- If this change makes the depth inaccuracy too much worse than before, then we may have to make these particular depth calculations optional in the future. This will need additional testing.
2018-11-17 23:20:59 -08:00
rogerman be8d08ae87 WiFi: Make WifiHandler::_CopyFromRXQueue() more efficient by doing less copying and less locking. 2018-11-17 19:50:45 -08:00
rogerman 91526e6324 WiFi: Significantly reduce the host-to-emulator latency of libpcap-sourced packets in Infrastructure mode by running RX packet receives on a separate thread, just like how socket-sourced packets in Ad-hoc mode do it.
- Also, Infrastructure mode can no longer "partially function." Now, it either works completely or not at all, just like how Ad-hoc mode does it.
2018-11-17 16:02:04 -08:00
rogerman 71df3f4f28 NDSSystem.cpp: Fix interactions between external firmware loading and BIOS loading. Always ensure that loading external firmware is dependent on loading both ARM9 and ARM7 BIOS files. 2018-11-15 01:04:06 -08:00
rogerman e27cc87bdf Firmware: Standardize how the firmware configuration is set.
- Now, the only two methods for changing any firmware setting is by modifying CommonSettings.fwConfig or by loading an external NDS firmware binary file.
- All methods for changing the firmware MAC address through the WifiHandler class have been removed.
- The FirmwareConfig struct can now handle the WFC User ID.
- Clients can now retrieve the current MAC address and WFC User ID using NDS_GetCurrentWFCUserID(). It is also possible to retrieve the WFC User ID from CommonSettings.fwConfig.
- Setting up the firmware in NDS_Reset() should now be more consistent. However, this does change some of the loading/unpacking order previously set by NDS_FakeBoot(). This will need additional testing.
- Do a whole bunch of code refactoring and cleanup.
2018-11-15 00:18:22 -08:00
rogerman 5d85ac2e23 WiFi: Reduce the number of packets read by pcap_dispatch() from 16 to 1, significantly reducing the host-to-emulator latency of Infrastructure packet reads. This seems to be the best choice for maintaining a stable online connection, albeit at a significantly increased CPU cost for the host machine.
- Also do some minor code refactoring and cleanup.
2018-11-08 01:49:36 -08:00
rogerman 6eb1a79a71 WiFi: Significantly reduce the host-to-emulator latency of socket-sourced packets and make the emulated copy-to-WRAM latency more consistent when running Compatibility mode.
- Also slightly reduce the host-to-emulator latency of libpcap-sourced packets.
2018-11-07 13:20:10 -08:00
Roger Manuel 7ae2d764b0
Merge pull request #216 from Jules-A/winWifi
Win Port: Wifi cleanups following 9d05935
2018-11-04 15:32:05 -08:00
SuuperW 4affd3ca8a Allow user to change new path settings in the path config dialog. 2018-11-04 07:08:59 -06:00
SuuperW c8d534299f Add SRAM_IMPORT_EXPORT path setting to separate from the auto-save battery location. 2018-11-04 06:08:08 -06:00
rogerman c8306de8d2 arm_jit.cpp: OP_LDRD_REG() and OP_STRD_REG() now treat even-numbered registers as double-word load/stores, while odd-numbered registers are treated as single-word load/stores. (Fixes #215.)
- This change shouldn't actually change any functionality in practice... probably. This change is there to silence a compiler warning more than anything else... hopefully.
2018-11-02 13:06:15 -07:00
Jules.A aecf153016 Fix wrong bool type, attempt to make warnings more clear. 2018-11-02 10:18:27 +08:00
Jules.A ef53eccb0e I guess they aren't the same message. 2018-11-02 09:26:08 +08:00
Jules.A b6c69b031f Nit: GetBridgeDeviceList already has proper return codes so just initialize variable locally. 2018-11-02 09:19:55 +08:00
Jules.A 36040e90a3 Let the user know when WinPcap isn't loaded. 2018-11-02 07:35:15 +08:00
Jules.A 4705c3e59a Whoops, fix deviceCount. 2018-11-01 21:47:15 +08:00
Jules.A c640e5c480 Winport wifi cleanups after 9d05935. Removes interface for setting wifi mode along with removing redundant code. 2018-11-01 21:40:14 +08:00
rogerman 620048c43c Firmware: Add the NDS_ReadFirmwareDataFromFile() function, which allows ports to either retrieve the entirety of a firmware file's data or to quickly read just a specific piece of it.
- The Cocoa port uses this new function for UI purposes.
2018-11-01 03:44:05 -07:00
rogerman 9d05935696 WiFi: The user no longer has to manually choose between using Ad-Hoc or Infrastructure modes. The code now automatically sends/receives packets to and from their proper places.
- This change obsoletes "CommonSettings.wifi.mode", which now does nothing. Ports that make use of this setting should remove it.
- Also do a bunch of code refactoring and cleanup.
2018-11-01 00:23:41 -07:00
rogerman 1e9aa08f54 Cocoa Port: Do some minor code cleanup. 2018-11-01 00:02:05 -07:00
rogerman 84e5228274 matrix.cpp: Use the __restrict keyword for MatrixCopy(), MatrixCompare(), and MatrixGetMultipliedIndex() to further clarify that the passed in matrices must be separate and non-overlapping. 2018-10-31 23:45:49 -07:00
zeromus d8c0ca6f5b notify the lua script of an updated projection, in more cases (re: #130) 2018-10-31 23:30:40 -04:00
zeromus ad7b80ec87 add lua functions emu.gamecode and emu.smallgamecode for game-specific hacks in scripts
re #130
2018-10-31 21:29:25 -04:00
rogerman 56895a11aa Cocoa Port: Delete the now defunct preferredResourceStorageMode property that was obsoleted by commit da3970d. 2018-10-31 15:54:46 -07:00