Jaklyy
a0d71135a1
very minor optimization attempt
2024-09-13 07:33:18 -04:00
Jaklyy
c5ac682f04
improve data abort handling further
2024-09-12 18:25:54 -04:00
RSDuck
74f479ce6d
gdb stub config setup fixes
2024-09-11 14:41:22 +02:00
Jakly
f719438a6e
Improve calculation of light colors ( #1967 )
...
* maintain precision until all lights are calculated
fixes lugia on the soul silver title screen
* small optimization
* small note
* small cleanup/notes
shouldn't need to check that every time, since the variable shouldn't be able to overflow
* hw doesn't cap difflevel at 255
Should it cap at all?
Can vtx colors overflow...?
* diffuse level appears to be shifted right by 9
fixes some minor inaccuracies
* improve specular lighting a little
* small improvement to diffuse lighting
fixes a few off by ones
- finding by azusa
* small tweaks
* handle overflows of diffuse lighting properly
-credits to azusa once more
* attempt at improving specular lighting calcs
still far from correct, but its a start.
fixes: https://github.com/melonDS-emu/melonDS/issues/1545
* meh
* improve specular lighting further
* add notes
* theory: add half vec instead of subt 1
* implement azusa's specular lighting algorithm
* fix minor edge case with spec lighting
* give proper credit in comments
* fix some bugs/misc tweaks
* more quirky overflow/underflow handling
* fix a spec lighting edgecase
remove some redundant parentheses
* fix an edge case with light vector calcs
* spec recip uses a different calc for light dir?
also remove a check that shouldn't be mathematically possible to trigger
* nvm that thing i thought couldn't trigger was required
also move reciprocal calc into the light vector calc function since i might as well now ig
* replace a bunch of stuff with much *much* simpler algorithms
* misc cleanup
PARENTHESES WOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
* leave a note abt shininess table's default value being incorrect
2024-09-10 16:13:51 +02:00
Nadia Holmquist Pedersen
268c4f14c1
vcpkg: support building on Linux
2024-09-06 22:50:12 +02:00
Jaklyy
f0bd2b9051
Merge remote-tracking branch 'upstream/master' into interpreter-fixes
2024-08-30 19:33:16 -04:00
Jaklyy
0003821738
apparently i never tested this
2024-08-28 22:04:22 -04:00
Jaklyy
685c4828a2
try not forgetting about stores lol
2024-08-28 13:45:46 -04:00
Jaklyy
be290da23c
de-duplicate swp(b)
2024-08-27 17:23:18 -04:00
Jaklyy
a9aad74539
implement user mode load/stores
2024-08-26 20:43:27 -04:00
Jaklyy
f692e7391a
the docs lied to me (again)
2024-08-26 19:48:42 -04:00
Jaklyy
40e8e8e7bd
rework single load/stores to use a shared instruction
2024-08-24 11:46:23 -04:00
Alex
4f6498c99c
Fix "Ejected GBA cart" not adding a newline ( #2140 )
2024-08-21 13:39:34 +02:00
Jesse Talavera
824eb370e4
Fix the build when the JIT is disabled ( #2139 )
2024-08-19 15:21:34 +02:00
Arisotura
0e6235a7c4
LAN: remember player name and max players setting
2024-08-15 13:34:27 +02:00
Arisotura
5b986d3111
wifi: add hack to facilitate multiplayer connections (extend post-beacon interval when connection is being initiated)
2024-08-14 16:47:08 +02:00
Nadia Holmquist Pedersen
c6cab9ed41
mac-libs.rb: Make bundling a bit smarter
...
* Resolve symlinks to avoid including the same thing twice (like
version-numered dylib symlinks)
* Look in all Qt prefix paths for plugins - the package may not
necessarily have the same path
* reduce install_name_tool invocations to make it a bit faster
* change dylib IDs to remove original source path
2024-08-13 07:53:09 +02:00
Nadia Holmquist Pedersen
5598065985
Netplay.cpp should not include main.h, also fix a format warning
2024-08-11 03:14:14 +02:00
Arisotura
8d31875902
Backport LAN ( #2131 )
...
backport the old LAN feature to the modern melonDS codebase.
2024-08-10 23:20:50 +02:00
Nadia Holmquist Pedersen
ec71b15505
Add a Nix flake ( #2097 )
...
Adds a Nix flake, allowing easy building and running of melonDS using the Nix package manager, as well as potentially very stable and reproducible CI in the future.
2024-08-08 05:36:06 +02:00
Nadia Holmquist Pedersen
53c58bd777
fix potential issue with glib shim min/max defines
2024-08-07 17:49:29 +02:00
Nadia Holmquist Pedersen
4359bccfcb
fix the slirp shit some more
2024-08-07 17:45:56 +02:00
Nadia Holmquist Pedersen
b47563e888
Apply FixInterfaceIncludes to the slirp package again to work around
...
package inconsistencies
2024-08-07 17:28:25 +02:00
Nadia Holmquist Pedersen
a174901412
fix building with system libslirp
2024-08-07 17:24:07 +02:00
Nadia Holmquist Pedersen
8423dae6ff
Add "Open melonDS directory" menu option
2024-08-07 15:53:58 +02:00
Jaklyy
332a39dbaf
fix JIT being borked
2024-08-05 16:14:17 -04:00
Jaklyy
a85b2bfb56
tweak when irqs are triggered and fix prefetch aborts
...
also ig add some comments next to the svc funcs so that someone searching for "swi" can find them easier
2024-08-05 14:57:17 -04:00
Jaklyy
eedd2806f9
Reapply "Improve accuracy of prefetch aborts"
...
This reverts commit 0dc619d615
.
2024-08-05 12:37:42 -04:00
Jaklyy
0dc619d615
Revert "Improve accuracy of prefetch aborts"
...
This reverts commit 587958e678
.
2024-08-05 11:41:25 -04:00
Jaklyy
587958e678
Improve accuracy of prefetch aborts
...
comes with a small-ish performance hit
2024-08-04 23:31:20 -04:00
Jaklyy
fe69cfac7d
Merge remote-tracking branch 'upstream/master' into interpreter-fixes
2024-08-04 21:28:32 -04:00
RSDuck
dd386d12a9
use templates to only execute GDB stub related code if enabled
2024-08-05 03:23:49 +02:00
Jaklyy
346ac1380f
forgot to remove a thingy when removing timing reworks
2024-08-04 15:21:23 -04:00
Jaklyy
ab2a8f128f
revert timing tweaks, finish thumb interwork code
2024-08-04 14:54:36 -04:00
Jaklyy
4b703d24b5
improve msr timings for arm9
2024-08-03 16:22:14 -04:00
Jaklyy
2e421e29e3
cache should be disabled when pu is disabled
2024-08-03 16:21:17 -04:00
Jaklyy
3c936d84b3
improve mrs, mrc timings
2024-08-03 16:20:50 -04:00
pants64DS
76c2723f5c
Fix console output on Windows ( #2122 )
...
Co-authored-by: pants64DS <pants64DS@users.noreply.github.com>
2024-08-02 02:21:37 +02:00
CasualPokePlayer
757a608b6e
Fix a few compiler warnings ( #2063 )
2024-08-01 23:26:46 +02:00
Jakly
54e87c915f
fix a couple polygons ( #1920 )
...
hw prioritizes the earlier vertex instead of leftmost
2024-08-01 22:55:00 +02:00
Jakly
12be06beb6
fix gdb stub causing the emulator to hang on undefined instructions ( #2054 )
...
* dont hang on undefined instruction
* Add spaces
---------
Co-authored-by: Kemal Afzal <RSDuck@users.noreply.github.com>
2024-08-01 22:48:52 +02:00
Jakly
161bd9d3d2
Default zero dot display register to the 24 bit integer limit ( #1968 )
...
* 0 dot disp defaults to the 24 bit integer limit
* useless correction
it goes through the reset function to set the variable on boot anyway but why not have the initialized state be correct too
2024-08-01 22:46:05 +02:00
Jakly
d0a7239f15
fix some bugs with compressed texture look up ( #2051 )
2024-08-01 22:44:04 +02:00
Jakly
29c67f2140
implement 16 bit r/w IF and DISPCAPCNT ( #2061 )
2024-08-01 22:41:21 +02:00
Jesse Talavera
327ce45124
Refactor network implementations to be more reusable and less buggy ( #2107 )
...
encapsulate network interfaces
2024-08-01 22:02:45 +02:00
Jesse Talavera
c6bf5d5181
Allow `AREngine` to be used independently of `ARCodeFile` ( #2108 )
...
* Make `EmuInstance::cheatFile` use a `unique_ptr`
- Fixes a memory leak, as the cheat file wasn't cleaned up in the destructor
* Split `AREngine` and `ARCodeFile` apart
- Suitable for frontends that have their own way of storing cheats
- Store the cheats in `AREngine` in a `std::vector`
- Apparently cheats are _supposed_ to be executed each frame; I didn't understand this until recently
2024-08-01 22:01:00 +02:00
Nadia Holmquist Pedersen
f3f6a6a194
Fix building on i686 Linux
...
I doubt anyone actually cares about support for it but hey may as well?
2024-08-01 21:57:32 +02:00
pants64DS
37c0320cbe
Fix an inaccuracy with the No$gba debug registers 04fffa14 and 04fffa18 ( #2119 )
...
Writing to either of the two registers would print one newline too many
Co-authored-by: pants64DS <pants64DS@users.noreply.github.com>
2024-07-31 01:13:06 +02:00
RSDuck
b778fbaad1
attempt at correct utf8 decoding for toml config file path
2024-07-30 17:48:41 +02:00
Nadia Holmquist Pedersen
01c2d65f07
Explicitly include QModernWindowsStylePlugin in static builds
...
I hope this'll make it look right.
2024-07-30 03:10:01 +02:00
RSDuck
12563fb636
use platform file functions for savestates and NAND importing file check
...
should fix character encoding issues on Windows
2024-07-29 00:15:19 +02:00
Nadia Holmquist Pedersen
d31eabb6fa
Don't disable firmware settings controls when override external firmware
...
settings is disabled
2024-07-27 16:56:29 +02:00
Jesse Talavera
837a582087
Expose some fields of `DSi_BPTWL` needed to support direct boot ( #2103 )
...
expose boot flag
2024-07-21 17:23:19 +02:00
Jesse Talavera
821f5f5f29
Allow frontends to use different headers for OpenGL declarations ( #2102 )
2024-07-21 17:02:31 +02:00
BueniaDev
9b828c2cde
Implement Rumble Pak support. ( #2101 )
2024-07-21 17:01:30 +02:00
Jaklyy
7cd50e7b56
fix some multiply timings
2024-07-19 17:56:43 -04:00
Jaklyy
13578a3cc9
Revert "improve timings for S variants of multiply instructions on arm9"
...
This reverts commit 789ef21c70
.
2024-07-19 17:52:28 -04:00
Jaklyy
36f4f2c5d3
Revert "improve timings further"
...
This reverts commit 764ee9ea1a
.
2024-07-19 17:52:26 -04:00
Jaklyy
4f6db5a173
Merge remote-tracking branch 'upstream/master' into jump-after-writeback
2024-07-17 21:42:21 -04:00
Nadia Holmquist Pedersen
5eadd67df6
EmuInstance: Use GetLocalFilePath to get the wfcsettings path
...
Fixes the file being created in the current working directory.
2024-07-17 15:44:47 +02:00
Nadia Holmquist Pedersen
4b17de7e8c
Fix annoying Qt touch event deprecations for real this time
2024-07-15 14:37:37 +02:00
Nadia Holmquist Pedersen
71f4d7b222
deviceType doesn't exist in Qt5 apparently
2024-07-15 14:04:40 +02:00
Nadia Holmquist Pedersen
6d2ad2a3f0
Ignore touch events originating from trackpads
...
Fixes multi-finger gestures causing spurious touch screen presses
Also fix some deprecations when we're at it anyway
2024-07-15 13:57:21 +02:00
Arisotura
2031f491f0
fix some Qt6 bugs (buttonClicked -> idClicked)
2024-07-15 13:00:40 +02:00
Arisotura
d92c9fcd90
do not immediately create a core when creating an EmuInstance. fixes some nasty potential bugs. watch out for bugs this may introduce though...
2024-07-15 12:57:18 +02:00
Jesse Talavera
94ba7c1594
Split networking code into its own target ( #2091 )
2024-07-14 17:03:21 +02:00
Jaklyy
764ee9ea1a
improve timings further
2024-07-13 09:35:12 -04:00
Jaklyy
789ef21c70
improve timings for S variants of multiply instructions on arm9
...
behavior seems to be a quirk of the way they made the interlock cycle mandatory
2024-07-12 23:11:46 -04:00
Jaklyy
4fcd52ed16
someday i will learn to test things before pushing them
2024-07-11 20:19:25 -04:00
Jaklyy
038ffa3a35
revert the *entire* interlock implemention
...
too slow, not accurate enough.
we need to do a *lot* more research into the specifics of how this works with all the various aspects of the cpu's timings before we can make a good implementation
2024-07-11 20:08:35 -04:00
Jaklyy
1fdac1d489
...why am i checking for dtcm?
2024-07-11 16:18:55 -04:00
CasualPokePlayer
a812a43bda
Fix various issues with firmware generation ( #2058 )
2024-07-11 15:55:06 +02:00
OverdueWeevil2
a82b5758bc
Update EmuInstance.cpp ( #2090 )
2024-07-11 13:48:27 +02:00
Jaklyy
e2be0b4f93
actually no it was not more correct
...
undo previous commit because actually code cycles *do* matter
2024-07-07 15:42:10 -04:00
Nadia Holmquist Pedersen
b55eb431bd
ensure that we actually link the OpenGL library on macOS
2024-07-07 13:45:45 +02:00
Nadia Holmquist Pedersen
1302cbdd64
frontend: Restore linear interpolation for audio output resampling
...
Also, do it smarter this time. This seems to have gone missing with the
doublemelon merge.
2024-07-07 08:19:49 +02:00
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