Commit Graph

2361 Commits

Author SHA1 Message Date
be60c68aeb more weirdness 2024-06-09 07:25:42 -04:00
b846c6f100 remove out of date comments 2024-06-08 22:17:07 -04:00
849d4e51ac imma be real, i have no idea what is going on here 2024-06-08 22:12:44 -04:00
659763f903 clarification 2024-06-08 16:15:02 -04:00
3699768ac9 most cpsr bits can't actually be updated (or at least can't be read?) 2024-06-08 14:01:54 -04:00
5f97dfc1ab fix bits fixed to 0 for pu region sizing being set 2024-06-08 10:53:22 -04:00
8191f92bb6 mcr is also affected 2024-06-08 10:42:19 -04:00
0c887202e7 fix some more instructions? 2024-06-08 10:40:23 -04:00
73507621f5 idk why it took me two tries to get these instructions to work properly 2024-06-07 23:50:31 -04:00
2b0ed459e1 fully implement r15 stores being +12 of addr 2024-06-07 23:46:49 -04:00
bd3611b51d unaligned registers with strd/ldrd raise an exception 2024-06-07 20:43:02 -04:00
8bc7e4591c thumb ldmia/pop data aborts 2024-06-06 19:05:28 -04:00
d6cd189455 rework data abort handling for ldm/stm; implement thumb stmia+push 2024-06-06 18:58:43 -04:00
13ae96b4e3 simple thumb instructions (untested but probably right) 2024-06-05 14:32:12 -04:00
7c3108e20f handle swp instruction aborts 2024-06-05 14:31:44 -04:00
1871c48849 fix double data aborts with strd 2024-06-05 10:28:51 -04:00
317a8c61e5 data abort handling for (almost) all (arm) instructions
full list: strb, ldrb, strh, ldrd, strd, ldrh, ldrsb, ldrsh
2024-06-05 00:14:14 -04:00
1e8194e367 fix ldr and str 2024-06-04 19:06:54 -04:00
c2a57b79a0 fix stmd(a/b) writeback 2024-06-02 22:41:01 -04:00
5e760a1536 slightly cleaner code 2024-06-02 19:34:29 -04:00
b5c1ee33fb implement stm 2024-06-02 10:33:29 -04:00
63d4b78733 improve implementation 2024-06-02 10:13:50 -04:00
960f063eaa improve data aborts for ldm 2024-06-02 00:11:01 -04:00
065573f316 fix writebacks overwriting registers swapped with spsr
fixes gbarunner3
2024-05-31 18:09:45 -04:00
a72b79a55a that needs to be public actually 2024-05-15 19:43:34 +02:00
cfc49eb286 Revert slirp dynamic/static check, and make it not use dllimport/export
when building statically
2024-05-15 19:37:14 +02:00
d21bc64cb3 MinGW build portability fixes
AKA you can build melonDS for Windows on Fedora now
2024-05-15 18:57:49 +02:00
a2406e3c0e Vendored libslirp (#2045)
Add vendored libslirp into the repo with a shim to remove its dependency on glib.
2024-05-15 18:00:55 +02:00
747f50de98 Refactor how CCache is set up
* Use RULE_LAUNCH_COMPILE property as you're apparently supposed to
* Detect if compiler is already ccache to prevent build failure
2024-05-15 10:55:10 +02:00
5ab8161a21 Prevent turning on compute renderer on macOS 2024-05-14 11:39:06 +02:00
442661747e add assert to make sure all shaders were compiled 2024-05-14 04:09:20 +02:00
5df83c97c7 bump up compute shader renderer tile amount factor to 16
also why did I think DS could render 4096 polygons? Use that extra bit for larger work offset
2024-05-13 19:15:48 +02:00
347f4a79fd Fix division by zero 2024-05-13 17:23:05 +02:00
043244a56d Compute shader renderer (#2041)
* nothing works yet

* don't double buffer 3D framebuffers for the GL Renderer
looks like leftovers from when 3D+2D composition was done in the frontend

* oops

* it works!

* implement display capture for compute renderer
it's actually just all stolen from the regular OpenGL renderer

* fix bad indirect call

* handle cleanup properly

* add hires rendering to the compute shader renderer

* fix UB
also misc changes to use more unsigned multiplication
also fix framebuffer resize

* correct edge filling behaviour when AA is disabled

* fix full color textures

* fix edge marking (polygon id is 6-bit not 5)
also make the code a bit nicer

* take all edge cases into account for XMin/XMax calculation

* use hires coordinate again

* stop using fixed size buffers based on scale factor in shaders
this makes shader compile times tolerable on Wintel
- beginning of the shader cache
- increase size of tile idx in workdesc to 20 bits

* apparently & is not defined on bvec4
why does this even compile on Intel and Nvidia?

* put the texture cache into it's own file

* add compute shader renderer properly to the GUI
also add option to toggle using high resolution vertex coordinates

* unbind sampler object in compute shader renderer

* fix GetRangedBitMask for 64 bit aligned 64 bits
pretty embarassing

* convert NonStupidBitfield.h back to LF only new lines

* actually adapt to latest changes

* fix stupid merge

* actually make compute shader renderer work with newest changes

* show progress on shader compilation

* remove merge leftover
2024-05-13 17:17:39 +02:00
c85a2103bb Allow adding a suffix to the displayed melonDS version 2024-05-11 22:40:45 +02:00
10798c3464 fix README build badges finally 2024-05-05 08:40:37 +02:00
ee2c6cc7c2 actually add the cmake script too 2024-05-05 08:14:00 +02:00
474bf6e784 Set default optimization flags less intrusively 2024-05-05 08:10:21 +02:00
35cea5e1d7 Fix zstd ROM loading issues
* fix use-after-free of inContent
* don't try to free the DStream twice
2024-05-04 18:16:24 +02:00
6112aa120a Pu region sizing/bounds fix (#2024)
* fix the pu region's end point overflowing

According to gericom it cannot overflow at all

* set a minimum and a better maximum for the pu region size

* fix pu logging

* PU regions with a size of 31 always take up the entire address space

also tweak some logging a little more

* start is actually force aligned by size, oops

* small tweaks

* hopefully more clear code

* math is for nerds
2024-05-02 17:44:59 +02:00
ba8d547dfa Windows: Work around CMake not finding libarchive's include directory because MSYS2 CMake doesn't like UNIX paths. 2024-04-18 12:25:41 +02:00
84474105e2 ssize_t is not defined in stddef.h (#1999)
i had to add sys/types.h and patch my gentoo ebuilds for a successful compilation.
2024-04-18 13:40:38 +02:00
5a852cb00d ROMManager: optimise ROMIcon function
Precompute all 16 5-bit RGB palette colours into 8-bit RGBA to avoid
repeated and superfluous calculation within the nested loop at the
point of index lookup.

A speedup was observed, from ~7ms, to a consistent 1ms
(i.e. now practically instantaneous) through timing with
std::chrono::high_resolution_clock.

Also improve comprehensibility, by using meaningful names, where
appropriate, for loop counter variables.
2024-04-16 23:39:22 +01:00
95adc87f6d wifi: try ignoring MP frames if not engaging in MP comm 2024-04-13 12:17:16 +02:00
8feeee6103 Input: only check joystick input if a joystick actually exists 2024-04-12 20:02:16 +02:00
d99c571f94 FATStorage: make sure to always properly unmount the volume (fixes evil bug) 2024-04-12 19:43:02 +02:00
111dc7a563 wifi improvements:
* implement channels
* rework power-down support, fixing bugs
* fix bug when W_BeaconInterval is zero
* fix potential missing IRQs when writing to W_IE
2024-04-12 17:28:51 +02:00
0b87dd5fa6 fix touchscreen bug on Wayland 2024-04-09 12:54:31 +02:00
968bd26d85 fix generation of instance-unique MAC address when using an external firmware 2024-04-09 11:38:38 +02:00
6e26559cd2 ci: fix macOS build
GitHub Actions' macOS runners have Python from homebrew installed and it's used by default instead of the Python that ships with macOS. Apparently Homebrew decided you shouldn't be able to install stuff with `pip3` anymore so our build broke since `setuptools` is no longer included by default and `glib` from vcpkg needs it to build.

Additionally,, the whole liblzma mess ended up breaking our builds too because libarchive (and its dependency libxml2) depends on it and the download is no longer available. The build option changes here should be reverted once this is sorted out because this is probably partially breaking archive support.

PS: Fuck you Jia Tan.
2024-04-03 14:49:27 +02:00