Jaklyy
383750692e
doesn't really matter but idk it's more correct?
2024-07-06 12:38:39 -04:00
Jaklyy
0f02c0bbba
disable interlock emulation again again
...
our understanding of how it works is just too incomplete to be worth implementing yet
2024-07-06 12:14:35 -04:00
Jaklyy
ea429a1b8d
improve interlock emulation
...
add cycles to the instruction execution time rather than the timestamp directly.
2024-07-04 12:58:58 -04:00
Jaklyy
bd1665c1d3
minor timing tweaks
2024-07-04 12:41:09 -04:00
Jaklyy
a549977eb0
fix clz for realsies
2024-07-04 11:04:38 -04:00
Antonio Niño Díaz
25b5ac91bd
Fix horizontal mosaic on sprites ( #2084 )
...
The code itself is correct, but the variable being read is the Y mosaic
coordinate, not the X coordinate.
2024-07-04 00:24:29 +02:00
Jaklyy
0060958fed
Merge remote-tracking branch 'upstream/master' into jump-after-writeback
2024-07-03 15:26:58 -04:00
RSDuck
613569a2ab
append newline to nocash logging
...
makes behaviour consistent with no$gba
2024-07-02 19:09:32 +02:00
Nadia Holmquist Pedersen
4e3592f2d4
Fix loading GBA carts
...
UpdateConsole forgot to reinsert it when messing with the NDS.
2024-07-02 08:18:44 +02:00
Nadia Holmquist Pedersen
f2611680ca
EmuInstance: check consoleType from NDS rather than the instance's when
...
updating console, fixes crash on console type switch
EmuInstance::consoleType is already updated, so the check for whether we
should recreate the NDS to switch console type never succeeds.
2024-07-02 06:23:21 +02:00
Jaklyy
88e5584b5f
fix clz r15
2024-06-27 15:33:24 -04:00
Jaklyy
c5b035a973
SWP and SWPB use the same behavior as STR on the ARM9
2024-06-25 11:20:01 -04:00
Jaklyy
541e1e6388
proper timings for ldr/str
2024-06-25 09:08:11 -04:00
Jaklyy
dbe00e72dd
improve stm timings
...
need to verify if they apply to all store instructions
2024-06-24 22:50:04 -04:00
Jaklyy
109bbed3d0
improve ldm timings
...
I believe this also applies to other loads as well, but currently untested.
2024-06-24 20:22:38 -04:00
Jaklyy
3583d8222f
disable interlock emulation, needs more research
2024-06-24 16:17:04 -04:00
Jaklyy
f1b71fe5a9
implement configurable vram bus width
...
not implemented for direct boot
2024-06-24 16:15:04 -04:00
Nadia Holmquist Pedersen
db20771ef3
slirp: Add -fvisibility=hidden to glib stub
...
On Linux, our stubbed glib functions were conflicting with the ones from
real glib, which gets used by Qt when we're running on a GTK-based
desktop. Avoid a crash by not exposing them.
2024-06-24 05:25:00 +02:00
Jaklyy
e6ba4075b9
correct interlocked reg for umlal
2024-06-18 11:12:05 -04:00
Nadia Holmquist Pedersen
cbb0f4b872
Tell the compiler that we want wrapping signed arithmetic
...
The core relies on this and without -fwrapv there will be rendering
issues on some targets. Thanks CasualPokePlayer for noticing this.
2024-06-18 15:51:08 +02:00
Arisotura
e234385c20
OpenGL: add support for changing BG0HOFS midframe. fixes #2072
2024-06-18 13:11:42 +02:00
Jaklyy
c5258d6377
verify interlocks for alu and load/store
...
remove some checks for interlock that im pretty sure can't trigger
2024-06-17 18:07:53 -04:00
Arisotura
626d2379bc
* fix default for audio volume
...
* add default bools for battery settings
2024-06-17 14:51:32 +02:00
Jaklyy
a9e2c7e047
implement two regs i missed
2024-06-16 23:24:20 -04:00
Jaklyy
f00f1f6ca4
im smart
2024-06-16 20:50:42 -04:00
Jaklyy
5b37ca70d1
implement correct/guess interlocks for remaining instructions
2024-06-16 20:47:01 -04:00
Jaklyy
debaaa0425
fix performance regression for disabling interlock emulation path
2024-06-15 21:16:12 -04:00
Jaklyy
449557624d
don't do interlocks for the arm7
2024-06-15 18:37:31 -04:00
Jaklyy
a973c0bf5b
initial implementation of interlock cycles
2024-06-15 16:07:36 -04:00
Nadia Holmquist Pedersen
eb2bd73c7d
ensure teakra is always static linked even in dynamically linked builds
2024-06-15 21:31:23 +02:00
Arisotura
ae44ba2475
blarg
2024-06-15 21:01:27 +02:00
Arisotura
649462ff5c
fix more bugs and crap
2024-06-15 20:57:26 +02:00
Arisotura
890dc4f228
fix other bugs with these regexes
2024-06-15 19:23:18 +02:00
Arisotura
d449888405
fix up the regexes in Config.cpp
2024-06-15 19:10:28 +02:00
Arisotura
ccc5c955e9
fix one potential crash bug
2024-06-15 17:42:26 +02:00
Arisotura
8fc403cdad
update copyright headers
2024-06-15 17:01:19 +02:00
Arisotura
25a7b1ca1d
merge doublemelon ( #2067 )
...
non-exhaustive (but exhausting) list of changes:
* base laid for multiple window support, but will likely require more work to work correctly
* encapsulation of frontend state for proper multi-instance support
* (JIT still needs a fix for the NDS::Current workaround but we can get there later)
* new, more flexible configuration system
2024-06-15 13:52:47 +02:00
Jaklyy
aa1217af0a
track interlock cycles for the ALU
2024-06-14 11:47:42 -04:00
Jaklyy
5a174a2ce3
track interlock cycles for load instructions
2024-06-14 00:51:55 -04:00
Jaklyy
42218106b0
verify writable msr bits
2024-06-11 10:30:30 -04:00
Jaklyy
048b0b8878
swp/swpb jumps work on the arm 7?
2024-06-10 18:03:56 -04:00
Jaklyy
3ddccde5b9
verified
...
also remove no longer needed variable
2024-06-10 13:23:18 -04:00
Jaklyy
ca04710deb
ldrd is just ldm
2024-06-09 22:31:10 -04:00
Jaklyy
ae0824fdd3
it all makes sense now...
2024-06-09 19:10:43 -04:00
Jaklyy
b90d5c2320
what the actual F*** is going on
2024-06-09 12:18:31 -04:00
Jaklyy
be60c68aeb
more weirdness
2024-06-09 07:25:42 -04:00
Jaklyy
b846c6f100
remove out of date comments
2024-06-08 22:17:07 -04:00
Jaklyy
849d4e51ac
imma be real, i have no idea what is going on here
2024-06-08 22:12:44 -04:00
Jaklyy
659763f903
clarification
2024-06-08 16:15:02 -04:00
CasualPokePlayer
8e9b88d01d
Actually generate DownscaleFramebuffer ( #2059 )
2024-06-08 20:48:42 +02:00
Jaklyy
3699768ac9
most cpsr bits can't actually be updated (or at least can't be read?)
2024-06-08 14:01:54 -04:00
Jaklyy
5f97dfc1ab
fix bits fixed to 0 for pu region sizing being set
2024-06-08 10:53:22 -04:00
Jaklyy
8191f92bb6
mcr is also affected
2024-06-08 10:42:19 -04:00
Jaklyy
0c887202e7
fix some more instructions?
2024-06-08 10:40:23 -04:00
Jaklyy
73507621f5
idk why it took me two tries to get these instructions to work properly
2024-06-07 23:50:31 -04:00
Jaklyy
2b0ed459e1
fully implement r15 stores being +12 of addr
2024-06-07 23:46:49 -04:00
Jaklyy
bd3611b51d
unaligned registers with strd/ldrd raise an exception
2024-06-07 20:43:02 -04:00
Jaklyy
8bc7e4591c
thumb ldmia/pop data aborts
2024-06-06 19:05:28 -04:00
Jaklyy
d6cd189455
rework data abort handling for ldm/stm; implement thumb stmia+push
2024-06-06 18:58:43 -04:00
Jaklyy
13ae96b4e3
simple thumb instructions (untested but probably right)
2024-06-05 14:32:12 -04:00
Jaklyy
7c3108e20f
handle swp instruction aborts
2024-06-05 14:31:44 -04:00
Jaklyy
1871c48849
fix double data aborts with strd
2024-06-05 10:28:51 -04:00
Jaklyy
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
Jaklyy
1e8194e367
fix ldr and str
2024-06-04 19:06:54 -04:00
Jaklyy
c2a57b79a0
fix stmd(a/b) writeback
2024-06-02 22:41:01 -04:00
Jaklyy
5e760a1536
slightly cleaner code
2024-06-02 19:34:29 -04:00
Jaklyy
b5c1ee33fb
implement stm
2024-06-02 10:33:29 -04:00
Jaklyy
63d4b78733
improve implementation
2024-06-02 10:13:50 -04:00
Jaklyy
960f063eaa
improve data aborts for ldm
2024-06-02 00:11:01 -04:00
Jaklyy
065573f316
fix writebacks overwriting registers swapped with spsr
...
fixes gbarunner3
2024-05-31 18:09:45 -04:00
Nadia Holmquist Pedersen
a72b79a55a
that needs to be public actually
2024-05-15 19:43:34 +02:00
Nadia Holmquist Pedersen
cfc49eb286
Revert slirp dynamic/static check, and make it not use dllimport/export
...
when building statically
2024-05-15 19:37:14 +02:00
Nadia Holmquist Pedersen
d21bc64cb3
MinGW build portability fixes
...
AKA you can build melonDS for Windows on Fedora now
2024-05-15 18:57:49 +02:00
Nadia Holmquist Pedersen
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
Nadia Holmquist Pedersen
5ab8161a21
Prevent turning on compute renderer on macOS
2024-05-14 11:39:06 +02:00
RSDuck
442661747e
add assert to make sure all shaders were compiled
2024-05-14 04:09:20 +02:00
RSDuck
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
RSDuck
347f4a79fd
Fix division by zero
2024-05-13 17:23:05 +02:00
RSDuck
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
Nadia Holmquist Pedersen
c85a2103bb
Allow adding a suffix to the displayed melonDS version
2024-05-11 22:40:45 +02:00
Nadia Holmquist Pedersen
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
Jakly
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
RealAstolfo
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
Rayyan Ansari
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
Arisotura
95adc87f6d
wifi: try ignoring MP frames if not engaging in MP comm
2024-04-13 12:17:16 +02:00
Arisotura
8feeee6103
Input: only check joystick input if a joystick actually exists
2024-04-12 20:02:16 +02:00
Arisotura
d99c571f94
FATStorage: make sure to always properly unmount the volume (fixes evil bug)
2024-04-12 19:43:02 +02:00
Arisotura
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
Arisotura
0b87dd5fa6
fix touchscreen bug on Wayland
2024-04-09 12:54:31 +02:00
Arisotura
968bd26d85
fix generation of instance-unique MAC address when using an external firmware
2024-04-09 11:38:38 +02:00
Jesse Talavera
31a7f53282
Fix a crash when using DSi mode in debug builds on macOS ( #1976 )
...
Store the BIOS images in `NDSArgs`/`DSiArgs` through pointers, not directly
- This will make it easier to keep such objects on the stack
2024-03-13 14:55:20 +01:00
RSDuck
ea1755bed0
call Start again NDS object after Reset
...
fixes issue where game doesn't properly start after changing settings
2024-03-12 09:23:20 +01:00
RSDuck
5fdd285c9a
fix aarch64 build
2024-03-12 08:41:42 +01:00
RSDuck
18d1df606f
fix #1959
...
Use QT again for opening file so that we don't depend on locale
2024-03-12 08:35:56 +01:00
Nadia Holmquist Pedersen
b117bb8f58
that should be 0x8000
2024-03-08 16:59:31 +01:00
Nadia Holmquist Pedersen
faf3c0f2e0
Add Gaussian (SNES) audio interpolation
...
Probably not a good choice for most DS games unless you really want a
very soft sound, but it could be fun if you wanted to run lolSnes in
melonDS :p
2024-03-08 16:36:00 +01:00
Nadia Holmquist Pedersen
e227902cec
Util_Audio: use basic linear interpolation
...
Should remove the artifacts caused by the previous nearest
resampling. May be worth replacing with something better in the
future, but this is an improvement for now.
2024-03-03 16:58:59 +01:00
Nadia Holmquist Pedersen
67ca4997e2
Release all keyboard keys on focus loss ( fixes #1987 )
2024-02-25 14:25:50 +01:00
Nadia Holmquist Pedersen
21e2a876ec
build teakra's test_generator.cpp only if building its unit tests is
...
enabled
speeds up builds a bit
2024-02-24 01:47:04 +01:00
λP.(P izzy)
9430502b16
fix malloc on OpenBSD targets ( #1979 )
2024-02-20 03:33:39 +01:00