Commit Graph

1892 Commits

Author SHA1 Message Date
Arisotura ae489d9e03 zarg 2021-10-28 18:55:22 +02:00
Arisotura ff3f661bb5
DLDI/SD folder-sync apparatus (#1251)
guess we can finally have DLDI that isn't obtuse
2021-10-28 18:47:13 +02:00
scurest a8613af2bd
InputConfigDialog: more DRY (#1238) 2021-10-10 22:51:08 +02:00
Nadia Holmquist Pedersen a9fc0adf96
Move resources to res/ directory (#1204)
* Move resources to res/ directory and update CMake scripts accordingly

Co-authored-by: Rayyan Ansari <68647953+RayyanAnsari@users.noreply.github.com>
2021-10-03 09:37:33 +00:00
Adrian Siekierka d378b0252f
Generate a simple non-bootable firmware when not provided. (v2) (#1175)
* Generate a simple non-bootable firmware when not provided.

* Expose Username and Language into settings dialog.

* Add firmware overrides for more settings. Also make override optionals when a firmware is provided.

* Refactor firmware settings into separate dialog.

* use usernameLength instead of u16Username.length() (#3)

* Fix curly braces code-style.

* LoadUserSettingsFromConfig: convert from UTF-8 to UTF-16 via wstring_convert

* Fix firmware username capitalization.

* cleanup firmware backup logic

* Put brace where it should be

Co-authored-by: Rayyan Ansari <68647953+RayyanAnsari@users.noreply.github.com>

Co-authored-by: Filippo Scognamiglio <flscogna@gmail.com>
Co-authored-by: kyandora <71771686+kyandora@users.noreply.github.com>
Co-authored-by: Filippo Scognamiglio <filippo.scognamiglio@felgo.com>
Co-authored-by: RSDuck <RSDuck@users.noreply.github.com>
Co-authored-by: Rayyan Ansari <68647953+RayyanAnsari@users.noreply.github.com>
2021-10-02 20:16:27 +02:00
Nadia Holmquist Pedersen b92622b765 Revert "Misc fixes for dsiwifi BMI stage (#1216)"
This reverts commit a54b076b06.
2021-10-02 13:57:52 +02:00
Adrian Siekierka b7992cc084
Fallback to FreeBIOS when BIOS files are not found. (v2) (#1174)
* Fallback to FreeBIOS when BIOS files are not found.

* Add sources of drastic bios files.

* Move FreeBIOS/external BIOS choice to configuration option/checkbox.

* Fix indentation

Co-authored-by: Filippo Scognamiglio <flscogna@gmail.com>
Co-authored-by: Filippo Scognamiglio <filippo.scognamiglio@felgo.com>
2021-10-02 12:06:22 +02:00
Rayyan Ansari 796d603332
Redesign the Input dialog (#1226) 2021-09-30 17:23:25 +00:00
RSDuck 737171c906 implement margins for scheduler
hopefully this does not break anything
2021-09-27 03:30:15 +02:00
Nadia Holmquist Pedersen 1471c73ea6 buttonClicked workaround for old Qt 2021-09-17 18:36:07 +02:00
Arisotura 66a58f7478 misc. DSP fixoring
(still doesn't work)
2021-09-11 23:59:23 +02:00
Max Thomas a54b076b06
Misc fixes for dsiwifi BMI stage (#1216) 2021-09-06 12:52:33 +02:00
Arisotura 9514efe4a0 BAHAHAHAHAHAHAAAAA-+*~+ 2021-09-02 00:16:36 +02:00
RSDuck 55ec724fee more fixes for literal invalidation 2021-08-31 08:13:22 +02:00
RSDuck 8d2746e517 fix #1187
how could this go on unnoticed for so long?
2021-08-31 04:53:25 +02:00
Arisotura d20543c119
DMA timing renovation (#1207)
* make timers usable for measurement shito without being assfuckingly unreliable

* bürp

* Arisotura can you ever clean up your goddamn code

also regroup the timer code instead of having it split weirdly

* make the set-timing functions a tad less hacky

* congrats Arisotura you made an ass-enum

* add timing region tables, and separate timings for ARM9 DMA (exempt of 3c penalty)

* temp work on DMA timings, not finished

also, did you know? 'increment/reload' is also a thing for the source address

* begin work

* add some of the GBA slot/wifi timings

* complete it, I guess

* make some progress

* getting somewhere

* sdsdfs

* see, Arisotura, was it that hard? blarg.
2021-08-31 02:28:34 +02:00
Arisotura e1f3fc75ea * add TSC shito
* fix possible modcrypt shittiness
2021-08-30 21:42:35 +02:00
Arisotura e7f0923623 maybe don't leave in debug code, you derp 2021-08-30 20:28:51 +02:00
Arisotura 523552a92d actually make DSi-mode direct boot work to some extent 2021-08-30 20:26:49 +02:00
Arisotura b84155e891 I'm a derp 2021-08-27 16:45:26 +02:00
WaluigiWare64 34af921322 ROM Info dialog - Only read 128 characters from each title
Titles should be zero-terminated, but this is for additional safety
2021-08-27 13:54:55 +01:00
Arisotura 36672a4089 use NDSHeader struct, and expand it with the DSi shit 2021-08-26 18:59:07 +02:00
Nadia Holmquist Pedersen 7395d6a6c0 Allow picking .dmg files as SD image 2021-08-26 18:55:49 +02:00
Arisotura b40ff12a60 fix capitalization of DSiWare. heh 2021-08-25 12:31:20 +02:00
Arisotura 235da420c8
having fun with fatfs (#1189)
* patch TSC coords in DSi mode
* DSiware importer and shit
2021-08-24 17:46:20 +02:00
2jun0 346e8c0b87
Fix a touchless issue in hybrid layout (#1182)
In the previous commit, there was a touchless error on the hybrid screen.
This commit fix a touchless issue in hybrid layout.
2021-08-24 17:40:35 +02:00
Nadia Holmquist Pedersen 0d37a0a5fc Call emuPause before loading a ROM so we don't crash if one is already loaded 2021-08-23 10:45:18 +02:00
Nadia Holmquist Pedersen 6ad0e8d61a macOS: Allow opening ROMs with melonDS from Finder. 2021-08-23 10:27:03 +02:00
RSDuck 883fceb6ce use std::swap 🔃 2021-08-21 01:54:45 +02:00
Nadia Holmquist Pedersen 415ab22f3a fark 2021-08-17 01:01:15 +02:00
Nadia Holmquist Pedersen 2aeb452dfb SPU: Do clamping after applying SOUNDBIAS 2021-08-17 01:01:15 +02:00
Nadia Holmquist Pedersen 418b351986 SPU: Emulate SOUNDBIAS and 10-bit degrade 2021-08-17 01:01:15 +02:00
Arisotura d5a20ad3c8 tidbits 2021-08-08 15:45:44 +02:00
Arisotura c7325469c2 factor duplicate code in micLoadWav(). also add support for all sorts of WAV formats SDL can support. 2021-08-08 15:32:29 +02:00
Arisotura bba14b2bb0 fix pissfucking touchscreen (again) 2021-08-08 14:45:16 +02:00
Arisotura 2df6b4fdc3
Audio interpolation (#1176)
add audio interpolation (emulation improvement)
2021-08-08 14:27:57 +02:00
RSDuck b28a9e4d24 JIT: don't lengthen blocks on a skipped SVC
SVC would need special handling because of the bank switching
2021-08-04 14:58:41 +02:00
RSDuck f900792dc0 addition to last commit 2021-08-04 14:35:54 +02:00
RSDuck f792d3e6a1 handle changed VCount+threaded rasteriser more gracefully 2021-08-04 14:21:45 +02:00
Nadia Holmquist Pedersen 996bfe8436 Make limit framerate default instead of audio sync 2021-08-04 00:53:47 +02:00
DesperateProgrammer 85c2a76774
Fix for https://github.com/Arisotura/melonDS/issues/1169 (#1171)
* Fix for https://github.com/Arisotura/melonDS/issues/1169
LoadNAND was storing the stage 2 bootloader, while NWRAM access was disabled by Bit25 of SCFG_EXT putting the stage 2 into old shared WRAM, while executing it later with the bit enabled and fetching from an empty NWRAM.

* Fixed bug, where access to the NWRAM Bank A used the wrong page mask for write access

* Remove spaces before comma

Co-authored-by: Tim Seidel <t.seidel@kts-systeme.de>
Co-authored-by: RSDuck <RSDuck@users.noreply.github.com>
2021-08-02 22:15:33 +02:00
RSDuck 946eb7a834 fix pause when inactive 2021-08-02 20:41:43 +02:00
gal20 1bda85383f Fix for #1119 'Add "frame step" hotkey' 2021-07-30 18:16:26 +02:00
Arisotura aaa97c9242 only open microphone when actually needed. fixes #1165 2021-07-29 01:19:03 +02:00
RSDuck 9ee2017443 don't add constant cycles if they're 0 2021-07-24 17:07:08 +02:00
RSDuck 6944fdbe78 add support for JIT profiling with VTune 2021-07-24 16:20:03 +02:00
RSDuck c9b918d305 fix last commit for aarch64 2021-07-24 04:45:33 +02:00
RSDuck c2152c8f74 JIT: fix ldm with writeback loading rn 2021-07-24 04:35:45 +02:00
WaluigiWare64 8513900892 ARM64 macOS JIT - fix warnings + some cleanup 2021-07-23 14:07:23 +01:00
DesperateProgrammer b1c2665c39
NWRAM & Direct Boot (#1149)
* SCFG_BIOS now selects between NDS and DSi BIOS
Allowing experimental direct boot.

* - making NWRAM Priorities work as in the HW
- fixed loading DSi stage2 Bootloader when in direct boot (should not be loaded) and might interfere with the image loaded into the (N)WRAM previously

* NWRAM and SCFG Registers are now write-guarded by the corresponding SCFG_EXT7/9 Bits

* removed debugging remainder

* Moved NDSHeader dependent SCFG initialization into the new DSi::SetupDirectBoot function called from NDS::SetupDirectBoot when ConsoleType is DSi

* removed redundant SCFG_BIOS bit checks

* Set of changes from RSDuck's review

* removed a forgotten comment

* - removed the guarded debug outputs for NWRAM
- NWRAM writes to bank and window registers now apply their write masks.
- added comment on an existing TODO within the code describing, why this is OK
- fixed initial NWRAM bank reset just accessing set A

* NWRAM not mapped to 03... range if bit25 in SCFG_EXT is cleared

* removed NWRAM write block on cleared bit25 in SCFG_EXT

* changed type of iterator for MapNWRAM_x functions from s8 to int

* - reduced calculations/comparisons on NWRAM write operations
- changed u8 to unsigned int for an iterator MapNWRAM_x

Co-authored-by: Tim Seidel <t.seidel@kts-systeme.de>
2021-07-23 12:21:54 +02:00
Arisotura cd4ef575ee NDSCart: correctly restrict reading the DSi region on DSi carts 2021-07-22 21:37:34 +02:00
Arisotura ab48461dc5 Merge branch 'master' of https://github.com/Arisotura/melonDS 2021-07-20 19:30:47 +02:00
Arisotura 740071e427 oopsies 2021-07-20 19:30:29 +02:00
RSDuck fdb6d226fd enable undo savestate load in the gui 2021-07-17 23:30:57 +02:00
Arisotura 98072d82bf shut up DSi-IO warnings 2021-07-17 18:26:56 +02:00
DesperateProgrammer 3a9e07c0b1
Fallback to backup DSi Footer in NAND Image (#1154)
* - added fallback to DSi footer copy at 000FF800h if reading footer at end of file failed. See https://problemkaputt.de/gbatek.htm#dsisdmmcimages
- changed output of ConsoleID to use PRIx64 to be consistent with all other tools working with the consoleID (readability/cosmetic improvement)

* Remove extra space

Co-authored-by: Tim Seidel <t.seidel@kts-systeme.de>
Co-authored-by: RSDuck <RSDuck@users.noreply.github.com>
2021-07-13 15:01:42 +02:00
WaluigiWare64 e5240a688c
Add ROM Header struct and ROM info dialog (#1095) 2021-07-02 16:42:54 +00:00
RSDuck 5a071c4c29 some tiny A64 optimisations 2021-06-30 00:41:04 +02:00
RSDuck aa430608e7 support allocating more registers for aarch64 JIT
also some minor fixes for the x64 JIT as well
2021-06-29 22:25:43 +02:00
RSDuck dd53b01f76 only recalculate GBA slot timing if necessary 2021-06-27 00:45:21 +02:00
Arisotura dd2b86d026 add missing default return value. fixes #1105 2021-06-20 02:23:45 +02:00
Arisotura 5b9f972625 UI: detect and save when window is maximized, and restore it as such. fixes #1135 2021-06-20 02:21:48 +02:00
WaluigiWare64 f94b784c4d Use printf format macro here 2021-06-07 20:51:51 +01:00
RSDuck 1793abcfb4 don't printf from exception handler
it was handy for debugging, but it's dangerous
2021-06-07 19:02:09 +02:00
purringChaos e3b4350f44
Add PoroCYon's DSP code. (#1123)
* Add PoroCYon's DSP code.

* Remove some teakra iles that we dont need.

* make some requested changes.

* move DataMemoryOffset into namespace.

* use deault param.

* ad the switch change

* <Generic> forget about the default parameter
2021-06-06 18:27:26 +02:00
cat 2494058a71
Add "frame step" hotkey and function (#1119) 2021-06-05 21:10:37 +02:00
Nadia Holmquist Pedersen af36d10023 Explicitly set NoRole on the setup cheats option so Qt on mac will stop stealing it 2021-06-05 14:47:51 +02:00
RSDuck 21f5477450 PRIu64 requires inttypes.h to be included 2021-06-05 03:34:39 +02:00
Pedro f74387a8c1
Implement NO$GBA debug registers. (#1110)
* Implement NO$GBA debug registers.

NO$GBA comes with 4 debug registers that allow a ROM to print text to
the emulator terminal and 2 other status registers, one with the name of the
emulator and the other with the clock cycles count. This commit
implements them for the ARMv5 processor.

Some small things to note:
 - `NocashPrint` was changed and now it takes an address to _the string_ instead of the flags before it (those
don't do anything anyways).
 - The "Emulation ID" register contains the string "melonDS " followed by version, _not_ "NO$GBA"

* Fix styling issue and improve comment regarding NO$GBA message flags
2021-05-27 12:15:16 +02:00
RSDuck e48e45db76 frontend: handle tablet and touch events
fixes #654 and #548
2021-05-24 20:23:06 +02:00
RSDuck 9181ab19c7 GPU3D soft: prevent out of bounds read 2021-05-24 19:41:24 +02:00
RSDuck f271bdf325 fix #906 2021-05-24 18:29:12 +02:00
WaluigiWare64 e02bbcb3ac Use printf macro for u64 2021-05-16 17:17:57 +01:00
Raphaël Zumer 4a39a84216
Propagate common ImportSRAM return value from NAND cartridge function (#1104) 2021-05-16 18:15:34 +02:00
Raphaël Zumer eb7bedfc79
Remove outdated frontend solar sensor code (#1102) 2021-05-16 17:18:24 +02:00
RSDuck 509107fb59 set instead of or stencil buffer for left edges 2021-05-08 00:12:48 +02:00
Arisotura 6f91bcc39f use shitfucking stupid linebreaks so that our text files don't like stupid compact blobs in Notepad
(really, fuck Notepad)
2021-05-06 00:40:11 +02:00
Arisotura d3c298bbe4 ASSFUCKING STUPID SHITPILE.
fixes #1044

(also add separator for cleaner menu)
2021-05-06 00:33:50 +02:00
Arisotura 50721719d2 GBACart: simulate open-bus decay roughly. fixes #1093 2021-05-04 12:58:59 +02:00
Arisotura b7d5a7db75 don't attempt to parse lines that failed to fetch 2021-05-03 17:02:38 +02:00
Arisotura 41cd092a15 NDSCart: enforce WR bit.
Bad Apple demo will break, because its NitroFS driver is broken. it needs a DLDI argv structure to exist in order to use its DLDI driver instead.
2021-05-03 14:58:45 +02:00
WaluigiWare64 2ff065e5ea Fix some compiler warnings 2021-05-03 13:40:44 +01:00
Arisotura cc36f55b8c Merge branch 'master' of https://github.com/Arisotura/melonDS 2021-05-02 21:19:12 +02:00
Arisotura e2e7f65f9f revised DLDI driver that uses the hardware somewhat more correctly 2021-05-02 21:18:52 +02:00
Nadia Holmquist Pedersen 464897ea87 Explicitly include ${SDL2_PREFIX}/include
this only accidentally worked before
2021-05-02 16:42:04 +02:00
Nadia Holmquist Pedersen d6036f9225 macOS-related CMake cleanups
* Remove useless explicitly specified link/include directories
* Don't pass -s or -pie to the linker as they aren't needed
2021-05-02 16:32:27 +02:00
Nadia Holmquist Pedersen b0e97b229e Fix minimum Darwin version for targeting 10.15 2021-05-02 14:34:44 +02:00
Arisotura 03bfbd2be7 fix touchscreen code in non-hybrid layout mode, fixes #1087
(also what the fuck is that code)
2021-05-01 19:09:01 +02:00
Arisotura 33a1bd3ac3 er, oops 2021-05-01 15:06:08 +02:00
Arisotura f219318292 Over the Hedge uses a tiny EEPROM, too.
fixes #899
2021-05-01 12:12:28 +02:00
Arisotura 18b1f79b44 Spider-Man 3 uses a tiny EEPROM, not a regular one 2021-04-30 22:59:50 +02:00
Arisotura 25ab02c650 fix another bad entry 2021-04-30 21:06:03 +02:00
Arisotura 414c608678 add ROMlist entry for Power Rangers Go-Busters (Korea) 2021-04-30 20:40:57 +02:00
Arisotura da9024e2b7 er, all cart types might want to have teh B8 command 2021-04-30 17:34:41 +02:00
Arisotura c2f37d44ce cart: ensure each set of commands can only be run in the correct command mode.
fixes #1083 (there was a chance an encrypted KEY1 command could be interpreted as something else and fuck things up)
2021-04-30 17:29:04 +02:00
Arisotura 5e648a8db3 fill most gaps in ROM list 2021-04-30 03:01:52 +02:00
Arisotura 8a5078abe3 support savemem for Face Training (NAND, atleast 32MB, likely 64MB) 2021-04-30 01:13:35 +02:00
Nadia Holmquist Pedersen 0a718adc77 Fix macOS right modifier detection.
Turns out my system was affected by a bug with modifier remapping in
macOS causing some of my left/right modifiers to be swapped. This commit
fixes them to be the correct values.
2021-04-29 19:45:41 +02:00
RSDuck 0a3a2ad009 fix aarch64 build with gcc 11 2021-04-29 15:15:16 +02:00
RSDuck eae42fb9f8 request repaint instead of update after each frame 2021-04-29 15:13:53 +02:00
Nadia Holmquist Pedersen cffffa887e macOS: Assign "Preferences..." to emu settings without also removing it from the config menu 2021-04-27 15:11:15 +02:00
Tatsh 5a9063089c
Savestate: use Platform::OpenLocalFile (#1026) 2021-04-26 23:21:58 +02:00
Arisotura 6691c6903b asfdasdas you'd better not give me shit now 2021-04-26 16:43:25 +02:00
Arisotura a2c12f7e66 fix some more case sensitive shito 2021-04-26 15:50:02 +02:00
Arisotura 1afb8bfa46 that game is actually a tiny EEPROM 2021-04-26 15:30:00 +02:00
Arisotura bf4052bc3d more of the same (actually fix the bug I was having) 2021-04-26 15:25:45 +02:00
Arisotura 4a5d5116a1 make extension checks case-insensitive 2021-04-26 15:20:28 +02:00
Arisotura 7ab19f157d add ROM entry for Clueless Fashion (#1050) 2021-04-26 13:23:29 +02:00
Arisotura 55a129e1a2 make sure to axe the GBA slot in DSi mode. (EXMEMCNT bit7 still applies to it, tho) 2021-04-25 13:13:16 +02:00
Arisotura f8bb1aa98d 'aight 2021-04-25 11:54:08 +02:00
Arisotura 18497d396d add more Mac crap. hoping the weird characters made it through. 2021-04-25 11:53:29 +02:00
Arisotura 185c97f4ef try to cover right-mod keys under MacOS I guess 2021-04-25 11:34:56 +02:00
Arisotura 9d9865d256 hopefully remove shitty hack 2021-04-25 11:09:16 +02:00
Nadia Holmquist Pedersen a860c5fbd3 Actually use the new script... 2021-04-25 03:55:01 +02:00
Nadia Holmquist Pedersen bc4a156a4d More 10.14 fixes also make the version check in cmakelists actually work 2021-04-25 03:51:04 +02:00
Arisotura 1846a71265
Cart refactor (#1073)
complete cart-interface refactor, will make this code a lot easier to deal with
2021-04-25 00:48:02 +02:00
Nadia Holmquist Pedersen 0834fc1533
Add support for building with Qt6 (#865)
Co-authored-by: WaluigiWare64 <68647953+WaluigiWare64@users.noreply.github.com>
2021-04-24 13:30:10 +00:00
Nadia Holmquist Pedersen 796ef95862
Improve macOS bundling (#1067)
* Improve macOS bundling
* Bundle libs for macOS CI
* Add MACOS_BUILD_DMG CMake option and make the CI upload the DMG so we don't lose executable permissions.
* Manually copy plugins if macdeployqt doesn't
* Ad-hoc codesign the app
2021-04-21 23:50:32 +02:00
Nadia Holmquist Pedersen 06e2193c04 Fix up menu roles a bit 2021-04-19 09:18:50 +02:00
Arisotura d5dbef2c22 make path inputs support drag/dropping files onto them to add the path quickly. fixes #1033 2021-03-29 01:08:22 +02:00
Arisotura 284a9b73b0 keep recent filenames from being absurdly long in the menu 2021-03-27 01:54:55 +01:00
WaluigiWare64 2c2e868de0 Disable JIT write-protect when de-initialising on ARM64 macOS 2021-03-22 20:14:21 +00:00
WaluigiWare64 ac49d8e25c Update copyright year and add missing GPL headers part 2
Looks like a lot of files were missed...
Closes #1036
2021-03-21 21:32:26 +00:00
WaluigiWare64 6b431a6664
Allow bundling libraries on macOS (#1013) 2021-03-21 15:32:23 +00:00
RSDuck f060162dac attempt at fixing #1037 2021-03-17 16:44:54 +01:00
RSDuck fbe691a673 fix read from unassigned variable for large BGs 2021-03-16 20:57:30 +01:00
RSDuck 436b3c4c1d update copyright year and add missing GPL headers 2021-03-12 20:07:40 +01:00
RSDuck bc63531e00 avoid leaking threads in NDSCart_SRAMManager
also atomics
2021-03-11 16:54:43 +01:00
RSDuck 6a3aa551da remove direct reference to Switch frontend header 2021-03-03 00:43:56 +01:00
RSDuck 41dd448e28 call Renderer2D::VBlankEnd at vblank end
instead of vblank start
2021-03-01 04:06:11 +01:00
RSDuck a046eb5038 separate GPU2D registers and renderer 2021-02-27 22:25:42 +01:00
WaluigiWare64 89051f63d4
Define CONTEXT_PC and use instead for much cleaner code (#1017)
* Define CONTEXT_PC and use instead for much cleaner code

Also include ways to get the Program Counter on ARM64 FreeBSD and NetBSD
2021-02-25 21:17:11 +00:00
WaluigiWare64 68da2ace58 Include winsock2.h before windows.h 2021-02-23 18:15:02 +00:00
SuuperW 94dcc9523e
SRAM things (#970)
* Allow SRAMManager to save to/load from a buffer.

* Don't delete what doesn't exist. Don't create a thread that will do absolutely nothing.

* Update SRAMManager's SecondaryBuffer when loading a savestate.
2021-02-23 02:46:02 +01:00
RSDuck 58dd1ec580 directly set VRAMDirty for VRAM BG/OAM writes 2021-02-23 02:09:18 +01:00
Nadia Holmquist Pedersen 97643586fa
Fix OpenGL display scaling on high DPI (#1011)
* Fix OpenGL display scaling on high DPI

* Scale the OSD too

* Fix indent
2021-02-22 18:17:48 +01:00
WaluigiWare64 532dc57025
Fix the JIT Code Memory on ARM64 Macs (#916) 2021-02-22 15:13:39 +00:00
RSDuck 0aa0ae6c69 fix #1010 2021-02-22 02:38:21 +01:00
wheremyfoodat 03b465c5e2
Fix edge case in the division engine, fix edge case in the CPU (#1003)
* Fixed division edge case: Div64/32 and Div64/64 set the remainder to 0 if dividend == INT64_MIN && divisor == -1

* Fixed CPU edge case where ARM9 ALU ops would switch to Thumb even when they shouldn't

* Only clear the lowest bit of the jump address in ALU ops with rd==15 (on recommendation of RSDuck)
2021-02-19 23:58:41 +01:00
WaluigiWare64 712919ec41
Remove unneeded OpenGL loading function code (#1006) 2021-02-17 20:53:07 +00:00
RSDuck 64c6654d94 use syncs instead of glFinish 2021-02-16 15:00:23 +01:00
RSDuck 295d60e4cb try to fix build when the compiler is stricter 2021-02-11 19:11:18 +01:00
RSDuck f1e0816c1a detach and delete shaders directly after linking 2021-02-11 18:38:52 +01:00
RSDuck f05bc50d40 use std::function in Thread_Create so we can revert back to using it 2021-02-11 16:00:36 +01:00
gal20 d63f7977f8
Remove code duplication in `onChangeScreenSize` (#968) 2021-02-09 23:42:31 +01:00
Wunk a7029aebae
Allow for a more modular renderer backends (#990)
* Draft GPU3D renderer modularization

* Update sources C++ standard to C++17

The top-level `CMakeLists.txt` is already using the C++17 standard.

* Move GLCompositor into class type

Some other misc fixes to push towards better modularity

* Make renderer-implementation types move-only

These types are going to be holding onto handles
of GPU-side resources and shouldn't ever be copied around.

* Fix OSX: Remove 'register' storage class specifier

`register` has been removed in C++17...
But this keyword hasn't done anything in years anyways.

OSX builds consider this "warning" an error and it
stops the whole build.

* Add RestartFrame to Renderer3D interface

* Move Accelerated property to Renderer3D interface

There are points in the code base where we do:
`renderer != 0` to know if we are feeding
an openGL renderer. Rather than that we can instead just have this be
a property of the renderer itself.
With this pattern a renderer can just say how it wants its data to come
in rather than have everyone know that they're talking to an OpenGL
renderer.

* Remove Accelerated flag from GPU

* Move 2D_Soft interface in separate header

Also make the current 2D engine an "owned" unique_ptr.

* Update alignment attribute to standard alignas

Uses standardized `alignas` rather than compiler-specific
attributes.

https://en.cppreference.com/w/cpp/language/alignas

* Fix Clang: alignas specifier

Alignment must be specified before the array to align the entire array.

https://en.cppreference.com/w/cpp/language/alignas

* Converted Renderer3D Accelerated to variable

This flag is checked a lot during scanline rasterization. So rather
than having an expensive vtable-lookup call during mainline rendering
code, it is now a public constant bool type that is written to only once
during Renderer3D initialization.
2021-02-09 23:38:51 +01:00
RSDuck 891427c75c fix #994 2021-02-09 23:36:46 +01:00
RSDuck e7ee3b7bc8 wild shot into the dark 2021-02-09 22:19:44 +01:00
RSDuck 6256a42e00 improve and fix NonStupidBitfield also get rid of some UB
fixes optimised lto clang build
2021-02-09 19:24:57 +01:00
WaluigiWare64 2502c8d212
Add NetBSD support (#985)
Note - This will require PaX MPROTECT to be disabled for melonDS by running:
paxctl +m melonDS
2021-02-03 16:14:53 +00:00
RSDuck 7b9b8418cb fix #978 2021-02-02 20:37:28 +01:00
RSDuck 2e999ae1b8 attempt at fixing #972 2021-02-02 16:29:23 +01:00
RSDuck 40aae154cf prevent race condition around framebuffers 2021-02-02 15:33:45 +01:00
WaluigiWare64 f9e701a719
Initialise cursor hiding timer before potential deletion of ScreenPanelGL 2021-01-29 16:05:51 +00:00
RSDuck a3f4aaf503 call glFlush only once
that seems to atleast get rid of the flicker
the weird issue that clears don't work is still there
2021-01-29 12:38:31 +01:00
Nadia Holmquist Pedersen b75b3f69b7
Don't save the window size to the config if in full screen (#933) 2021-01-27 00:14:24 +01:00
RSDuck 4a28068295 the rasteriser doesn't have to be done on line 144
thanks to the VRAM cache
2021-01-26 19:05:21 +01:00
RSDuck aceabe92e6 fix recent regression in screen layout calculation 2021-01-26 18:19:25 +01:00
RSDuck b78bc4cb66 fixes to the threadedness of the sw rasteriser
also fix #639 and fix #880
2021-01-26 16:42:27 +01:00
WaluigiWare64 ab222ab135
Use libepoxy to load in OpenGL functions (#960)
* Use libepoxy to load in OpenGL functions

Prevents having to load them in manually

* Install libepoxy in the CI

* Do not link OpenGL libraries, libepoxy opens them itself

* Add libepoxy to build instructions
2021-01-26 13:19:32 +00:00
gal20 54b1a752d4
Add hybrid layout (#772) 2021-01-25 19:47:54 +01:00
WaluigiWare64 43348210f9 Fix some compiler warnings 2021-01-25 14:12:13 +00:00
RSDuck b9a56bc4e4 more screen modes
- add support for different aspect ratios
- add support for displaying only one screen at once
2021-01-24 22:32:13 +01:00
WaluigiWare64 536902d610 Fix crash if OpenGL version is lower than requirements 2021-01-24 15:44:05 +00:00
WaluigiWare64 9994d3a644
Add FreeBSD support (#939)
* Add FreeBSD support

* Fix indentation

* Fix Linux not finding OpenGL

* Link POSIX Realtime Extensions library

* Link POSIX Realtime Extensions when OpenGL is enabled too

* Fail if shm_open memory exists and also check for errors

* fix the last commit

* (try to) Setup FreeBSD CI

* Fix some issues with FreeBSD CI

* Make with all cores

* Remove FreeBSD CI 

It doesn't want to work for some reason
2021-01-22 19:20:32 +01:00
SuuperW 34da7f5cc3
minor code refactoring, to simplify BizHawk support (#958) 2021-01-22 19:05:07 +01:00
WaluigiWare64 f259fd9755 fix again 2021-01-22 17:40:56 +00:00
WaluigiWare64 5dd94f5ec1 fix last commit 2021-01-22 17:38:30 +00:00
WaluigiWare64 faf7cf752d Add option to pause emulation when focus is lost
Fixes #875
2021-01-22 17:35:13 +00:00
RSDuck 8a3a8b7c68 include polygon attr opaqueness for translucent polygons in render key 2021-01-22 12:19:51 +01:00
Madhav Kanbur 1e4c0c9d72
Polish up archive support (#930)
* Fix directory path when extracting from archive

* Don't create new dir in execution dir of melonds
* Create it beside the archive instead

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>

* ArchiveUtil : Use QT functions for I/O

* Make it more platform independent, cleaner

* Fixes permission related crash on linux

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>

* NDSCart : Abstract out common code in LoadROM()

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>

* Extract nds roms to memory

* Some stuff is still broken in the frontend

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>

* GBACart : Abstract out common code in LoadROM()

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>

* Extract gba roms to memory

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>

* Integrate archive support with recent files

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>

* onClickRecentFile : Pause emu thread conditionally

* Don't pause at start of the function
* If user opens an archive and hits cancel, it won't pause

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>

* Handle Resets when loading from archives

* Ask user to pick the rom(s) again (i.e. GBA & NDS)
when there are multiple files in the archive(s)

* Directly load if only 1 file

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>

* Archive support for drag-n-drop

* Also recent files support for drag-n-drop

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>

* main : Allocate rombuffer objects on stack

* Less messy, decreases chances of memory leaks

* Underlying implementation of qbytearray uses heap (hopefully?)

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>

* GetSavestateName : Archive support

* Construct ssname from srampath (since rompath has archive name)

NOTE: In general, archive name != rom file name !!!!!!!!!!

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>

* Add srl and dsi as "direct-load" formats

* Direct-load = anything not in an archive

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>

* Don't use static functions

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>

* Remove QT stuff from Util_ROM

* Also, during reset, directly load file from archive (no rom picker)

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>

* Remove QT includes from FrontendUtil.h

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>

* Util_ROM/LoadROM() : Use SetupDSiNAND()

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>

* Util_ROM/Reset() : Use strrchr()

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>

* Util_ROM : Put Archive stuff behind ifdefs

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>

* main: Set parent widget for archive dialog boxes

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>

* Revert "Util_ROM/Reset() : Use strrchr()"

This reverts commit c8af6f066f.
2021-01-22 11:22:32 +01:00
SuuperW d42ca1ec4b
Implement "lag frame" flag and counter (#949)
* Implement "lag frame" flag and counter, and expose flag and both frame counters. BizHawk wants these.

* Track frame count and lag frames while the system isn't running.
2021-01-21 21:26:27 +01:00
Arisotura 8a068c2294 GL: ensure to set depthmask to TRUE before rendering opaque shit 2021-01-21 21:10:43 +01:00
WaluigiWare64 bf0ea26596
Add option to hide mouse on inactivity (#955)
Also allow user to specify how long to wait before hiding
2021-01-21 19:48:25 +01:00
RSDuck 1494d7aa24 fix ARM64 again 2021-01-21 15:32:02 +01:00
RSDuck 3b994fe892 fix last commit for ARM64 2021-01-20 18:01:21 +01:00
RSDuck 771dfaca2e JIT: handle STR post with rd == rn
fixes Zelda Four Swords
2021-01-19 23:50:08 +01:00
WaluigiWare64 e8f06b8ac1 Define melonDS version in CMake
Prevents having to update multiple files (melon.rc, melon.plist, version.h) when a new version is released.
2021-01-19 11:39:25 +00:00
gal20 cd6859ef6f
Add hotkey to swap screens (#953) 2021-01-18 22:51:39 +01:00
RSDuck d529b650c0 implement swapping the position of both screens
closes #855
2021-01-17 22:16:32 +01:00
RSDuck 1d6cc3c6ef keep only one handle of the NAND file around 2021-01-17 19:56:02 +01:00
RSDuck 53d5def919 pad ShaderConfig to a multiple of 16 2021-01-17 17:15:03 +01:00
WaluigiWare64 c109235d01
Also include Homebrew on ARM64 Mac location in CMake (#938) 2021-01-11 23:01:23 +01:00
Ben Morris b402cb19b2
quit on sigint (#934)
* quit on sigint

* formatting
2021-01-10 03:48:40 +01:00
Kimmy Andersson bf97387f26
Improved SRAM performance (#925)
* Offload NDS SRAM writing to separate thread, debounce writes to two seconds after last flush or DeInit.

* Fixed printf messages.

* Fixes after CR.

* Fixed potential portability issue with time_t
2021-01-09 22:18:57 +01:00
RSDuck 6b306e18a5 handle edge cases properly 2021-01-09 22:06:15 +01:00
RSDuck c475372372 mask off upper bits when incrementing RX addr
fixes #931
2021-01-09 18:31:12 +01:00
RSDuck 7081c2de65 readd vram invalidation through display capture
also remove stray printf
2021-01-07 22:39:36 +01:00
RSDuck e311eea1c5 fix out of bounds read 2021-01-07 18:36:49 +01:00
Arisotura 1d8e302c13
Merge pull request #926 from WaluigiWare64/fix/freebsd-include-aflink
Fix FreeBSD undefined identifier issues in Lan_PCap.cpp
2021-01-07 18:32:02 +01:00
Arisotura 641ddf8137
Merge pull request #678 from WaluigiWare64/feature/zip-support
Add support for loading ROMs from a variety of compressed files
2021-01-07 18:30:12 +01:00
WaluigiWare64 e485ce3e13 Add Open ROM inside Archive function
instead of using file extensions
2021-01-07 17:26:55 +00:00
RSDuck 5865b4438e fix JIT block hash after a merged thumb BL
fixes #928
2021-01-05 22:38:29 +01:00
WaluigiWare64 8a1f3d8ce2
Properly fix macOS finding libarchive
(i hope)
2021-01-05 16:22:07 +00:00
WaluigiWare64 00e9a5e0c7 Allow melonDS to write the file
The directory wasn't created, so the file was not being written
2021-01-05 15:34:28 +00:00
RSDuck ef75e3cdd1 JIT A64: fixes
also update Switch code for latest libnx
2021-01-05 14:36:50 +01:00
WaluigiWare64 dbb12b48ec Fix FreeBSD undefined identifier issues in Lan_PCap.cpp
FreeBSD requires net/if.h to be included as well.
2021-01-05 12:06:17 +00:00
Madhav Kanbur 25455cb7aa
Set menubar height to 0 in fullscreen (#924)
* Set menubar height to 0 in fullscreen

* Avoid using hide() on the mainwindow's menubar as it breaks menubar
actions.

* Fixes save/load state shortcuts not working in fullscreen (#922)

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>

* Don't modify menubar width when exiting fullscreen

* Fixes weird looking menubar on Windows

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>
2021-01-05 11:37:27 +01:00
RSDuck 6e3207f9dc GX: fix vector test
after I broke it in d2c04c5c51
fixes Mario & Luigi Partners in Time
2021-01-04 16:36:51 +01:00
WaluigiWare64 6c91157495
Fix libarchive being found on macOS
properly this time
2021-01-04 10:31:57 +00:00
WaluigiWare64 9e15488e95
Fix mistake in merge commit 2021-01-03 16:00:50 +00:00
WaluigiWare64 83648f2d31
Merge branch 'master' into feature/zip-support 2021-01-03 15:53:23 +00:00
WaluigiWare64 f070eafce4
Fix return value of Archive::ExtractFileFromArchive 2021-01-03 15:29:03 +00:00
RSDuck cb58a422ac fix mac/clang build again 2021-01-02 19:58:49 +01:00
RSDuck 7d448d911d use C++ style structs everywhere 2021-01-02 11:38:06 +01:00
RSDuck e2c61b28e0 fix mac/clang build 2021-01-02 11:28:46 +01:00
RSDuck 18fe5c6759 prevent bleeding in screen texture
fixes #920
2021-01-02 08:55:48 +01:00
RSDuck fa4363ede6 make FIFO size static whene possible 2020-12-30 23:37:46 +01:00
Madhav Kanbur 6adf1731c1 Add option to open recent files
* Remember last 10 roms in config
* Clear button for clearing list

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>
2020-12-30 18:57:43 +05:30
RSDuck d2c04c5c51 GX: add fastpath for single parameter cmds 2020-12-30 02:29:43 +01:00
RSDuck 1649c0e089 don't calculate the CRC checksum of ROMs on load
the value isn't used anywhere anyway
2020-12-30 01:59:35 +01:00
WaluigiWare64 b24e855fb8 Fix the ARM64 Code Emitter on macOS 2020-12-28 18:18:33 +05:00
Arisotura e2de622d57 heh 2020-12-25 14:42:23 +01:00
Arisotura 08416329aa welp 2020-12-25 12:42:49 +01:00
Arisotura 5025e9a989 clean up some things 2020-12-24 13:08:46 +01:00
RSDuck d6b0ff1eda fix last commit, account for little endian 2020-12-24 12:34:40 +01:00
RSDuck 0e304441e4 add eCDP to romlist
closes #885
2020-12-24 12:22:38 +01:00
WaluigiWare64 82af9de9b6
Fix JIT linkage on ARM64 Macs (#890) 2020-12-24 11:23:29 +01:00
Arisotura b00cd8bdee remove the hardcoded F11 debug key before I forget about it again 2020-12-24 01:46:13 +01:00
RSDuck 0f353e0d5f add palette and OAM dirty flag
currently not used anywhere
2020-12-23 09:23:46 +01:00
WaluigiWare64 78419dbce1
Allow pkg-config to find libarchive on macOS
macOS already provides the libarchive libraries, so Homebrew doesn't link it.
However, macOS does not provide the headers.
2020-12-19 18:17:06 +00:00
WaluigiWare64 0be3f449a7
fix for the last commit 2020-12-19 17:46:09 +00:00
WaluigiWare64 df190b0400
Merge branch 'master' into feature/zip-support 2020-12-19 17:43:53 +00:00
WaluigiWare64 d6cade25f4
Extract ROM to new folder next to archive
For example if DS_ROMS.zip had game.nds, the directory structure would be:
├── DS_ROMS
│   └── game.nds
└── DS_ROMS.zip
2020-12-19 17:41:51 +00:00
RSDuck 659dc58d4d fix segfault for build with OpenGL disabled 2020-12-14 17:21:55 +01:00
Arisotura c106bec1a0 correct save type for Jelly Belly - Ballistic Beans (USA)
fixes #852
2020-12-14 11:34:40 +01:00
Arisotura 49317e9165 don't axe error bits when writing to IPCFIFOCNT. fixes #801 2020-12-11 18:06:26 +01:00
Arisotura aac843c7de GL: don't break rendering order when translucent polygons contain opaque pixels.
fixes #831

(also disable edgemarking for now. it sucked anyway)
2020-12-11 04:38:11 +01:00
Arisotura a47a3fa692 GL: align uniform-buffer size to 16-byte boundary. atleast makes RenderDoc happy. 2020-12-11 03:29:37 +01:00
WaluigiWare64 a9223d6c0a
Fix fastmem building on ARM64 Macs (#841) 2020-12-11 01:41:53 +01:00
Arisotura 8530c099bc GPU: make sure to always pass BG0HOFS to the 3D engine, even if the 2D engine is disabled. 2020-12-10 19:34:31 +01:00
Arisotura 66cec85a9a GPU: forward BG0HOFS to internal rendering engine register for 3D layer scroll (only when the rendering engine is enabled).
fixes #840

thank you RSDuck and Hydr8gon for your insight into this.
2020-12-10 19:12:08 +01:00
Arisotura 1dbe69c6be remove some debug crap 2020-12-10 18:09:11 +01:00
RSDuck e34ce013df only start display capture on first line
fixes Spearpillar in Pokemon D/P/Pt
also fixes #782 and #474
2020-12-09 22:45:16 +01:00
RSDuck b6de3cc638 VRAM dirty tracking fix reset/savestate load 2020-12-09 20:10:44 +01:00
RSDuck 51b2671aa9 add cur vertex and light information to savestate 2020-12-09 19:18:42 +01:00
RSDuck 49b5860f0f aligned_alloc instead of memalign
also carry over new Switch changes
2020-12-09 18:58:51 +01:00
RSDuck d2cfd71c32 rename the class as well
this is getting emberassing
2020-12-07 18:45:50 +01:00
RSDuck 23b1a231cb change cmake file as well 2020-12-07 18:36:14 +01:00
RSDuck 77996879a8 rename GPU2DSoft.cpp to GPU2D_Soft.cpp 2020-12-07 18:34:42 +01:00
RSDuck 9673659db4 fix toggle FPS hotkey 2020-12-07 17:00:53 +01:00
RSDuck b80d5a04f3 lay base for multiple GPU2D backends 2020-12-06 17:40:16 +01:00
RSDuck 40899940b5 fix #838 2020-12-05 12:25:49 +01:00
Arisotura 129018a662 Merge remote-tracking branch 'remotes/origin/master' into dsi_camera 2020-12-04 18:28:15 +01:00
Arisotura 6aad429383 misc. shito 2020-12-04 18:26:48 +01:00
RSDuck 42e083960e always cap FPS to 1000 2020-12-04 00:00:35 +01:00
RSDuck 906521e7e9 fix 4-bit affine sprites 2020-12-03 14:52:36 +01:00
WaluigiWare64 07423492c4
Use AF_LINK and net/if_dl.h on all non-Linux systems (#835) 2020-12-01 23:01:57 +01:00
webgeek1234 298b958e2a
Rename jit linkage asm files (#836)
An extension of lower case s indicates to not run the
preprocessor while upper case S does. These files have defines.
2020-12-01 19:48:46 +01:00
RSDuck 6e8bac3909 Merge vram dirty tracking
Squashed commit of the following:

commit b463a05d4b909372f0cd1ad91caa0c77a25e5901
Author: RSDuck <rsduck@users.noreply.github.com>
Date:   Mon Nov 30 01:55:35 2020 +0100

    minor fix

commit ce73cebbdf5da243d7ebade82d8799ded9cd6b28
Author: RSDuck <rsduck@users.noreply.github.com>
Date:   Mon Nov 30 00:43:08 2020 +0100

    fix dirty flags of BG/OBJ mappings not being reset

commit fc5d73a6178e3adc444398bdd23de8314b5ca8f8
Author: RSDuck <rsduck@users.noreply.github.com>
Date:   Mon Nov 30 00:11:13 2020 +0100

    use flat vram for gpu2d everywhere

commit 34ee9fe2bf04fcfa2a5a1c8d78d70007e606f1a2
Author: RSDuck <rsduck@users.noreply.github.com>
Date:   Sat Nov 28 19:10:34 2020 +0100

    mark VRAM dirty for display capture

commit e8778fa2f429c6df0eece19d6a5ee83ae23a0cf4
Author: RSDuck <rsduck@users.noreply.github.com>
Date:   Sat Nov 28 18:59:31 2020 +0100

    use flat VRAM for textures and texpals
    also skip rendering if nothing changed and a bunch of fixes

commit 53f2041e2e1a28b35702a2ed51de885c36689f71
Author: RSDuck <rsduck@users.noreply.github.com>
Date:   Fri Nov 27 18:29:56 2020 +0100

    use vram dirty tracking for extpals
    also preparations to take this further

commit 4cdfa329e95aed26d3b21319c8fd86a04abf20f7
Author: RSDuck <rsduck@users.noreply.github.com>
Date:   Mon Nov 16 23:32:22 2020 +0100

    VRAM dirty tracking
2020-11-30 19:49:18 +01:00
Filippo Scognamiglio acb272ed78
Use ashmem instead of memfd_create on Android. (#816)
* Use ashmem instead of memfd_create on Android.

* Fix code styling issues.

* fix small mistake in merge commit

Co-authored-by: RSDuck <RSDuck@users.noreply.github.com>
2020-11-30 15:33:43 +01:00
WaluigiWare64 7da4550eea
Add support for macOS (#771)
* use shm_open() instead of memfd_create() on macOS

malloc.h isn't a header on macOS

* Change OpenGL headers + create ifdef for DO_PROCLIST

macOS seems to already have the OpenGL functions defined, without the ifdef, it gives "ambiguous references" errors.

* macOS doesn't have ->gregs in uc_mcontext

and it doesn't have REG_RIP either
https://github.com/gperftools/gperftools/blob/master/m4/pc_from_ucontext.m4

* use getpid() to make memory file name unique

* #ifndef __APPLE__ for AF_PACKET and linux/if_packet.h

* Add include and link directories for macOS and link the OpenGL framework

* Add macOS CI

* Use newly added libslirp package from Homebrew

https://github.com/Homebrew/homebrew-core/pull/63412

* Use Apple's Clang instead of GNU GCC on macOS

* Add macOS build instructions to README

* Try to fix macOS undefined symbol

* snprintf doesn't take null terminator into account

* Map new memory on macOS for JIT

* Only use gcc-ar if using GNU Compiler

* re-add fastmem code - whoops!

* Fix style issue - use camelCase not snake_case

* Set Minimum macOS version

* Switch Minimum OS X version to 10.9

* Add macOS libpcap library name

* fix memory leak

* Fix binding keys in macOS

* Allow getting MAC address on macOS

melonDS on Linux uses AF_PACKET, which doesn't exist on macOS. Instead, this commit uses AF_LINK on macOS to get the MAC address.

* Remove unneeded macOS CI dependencies

* Build melonDS app bundle on macOS

Now it is no longer required to install the libraries on macOS, they come with the app bundle.

* fix macOS CI not being able to find macdeployqt

* copy melonDS.app with recursive because it's a folder

* Disable fastmem checkbox on macOS

* Disable fastmem by default in config

* forgot a semicolon

* Don't bundle libraries, causes issues on macOS <10.15

* Update README + allow finding version in Finder on macOS

* Make sure fastmem checkbox stays uncheckable
2020-11-29 17:11:33 +01:00
RSDuck 1ff4a1564f fix DSi mode with interpreter
I'm so stupid
2020-11-26 00:04:19 +01:00
WaluigiWare64 f11d53c69c
Add radio buttons to switch between Direct and Indirect Mode (#822) 2020-11-22 15:31:29 +01:00
WaluigiWare64 a1cf1967ac
Fix fullscreen toggle with joysticks (#821) 2020-11-22 13:00:18 +01:00
RSDuck 50cdfd0137 fix edge indices count 2020-11-19 17:46:21 +01:00
RSDuck 690eed9e26 GPU2D: don't an indirect call in tight loops 2020-11-16 18:33:58 +01:00
RSDuck 842379c410 harmless DMA micro optimisation 2020-11-16 17:22:34 +01:00
RSDuck 1085cc14a4 prevent use after free 2020-11-16 17:03:24 +01:00
RSDuck 21dbca9543 use proper index buffers 2020-11-16 15:58:23 +01:00
Raphaël Zumer 550241dbad
Fix GBA file drag-and-drop when the system is off (#817) 2020-11-15 16:15:09 +01:00
RSDuck 05b94eff66 make audio output thread safe(r?) 2020-11-15 15:29:38 +01:00
RSDuck d697f9e0d2 make fastmem work again 2020-11-13 15:20:53 +01:00
RSDuck 62e3f41f20 delay savefile flush to the end of the frame 2020-11-11 13:38:05 +01:00
RSDuck 2720df9650 make platform objects typesafer and add mutex 2020-11-09 21:52:35 +01:00
RSDuck 052079afeb fix Windows 2020-11-09 20:56:31 +01:00
RSDuck 78839f862e JIT fixes
- fix fastmem problems on linux
- small fix memory leak
- SlowWrite functions always take in a 32-bit variable so that the C compiler knows that the values aren't necessary zero extended
- a few other stylistic things
- handle SIGBUS as well (for macos)
2020-11-09 20:43:31 +01:00
RSDuck ad7791f726 better framelimiter for reference: https://github.com/citra-emu/citra/blob/master/src/core/perf_stats.cpp#L129 2020-11-02 20:13:22 +01:00
Filippo Scognamiglio fbca47381b
Fix a couple of wrong cpp function pointers. (#785) 2020-10-31 17:53:01 +01:00
Filippo Scognamiglio 45ea1fa990
Fix compilation issues on pedantic cpp compilers. (#783)
* Fix compilation issues on pedantic cpp compilers.

* Avoid using fullblown static function.
2020-10-31 17:40:05 +01:00
RSDuck 9ac60a840a SPU: work with scalars instead of arrays 2020-10-31 13:48:02 +01:00
Hypnotron 05e274a1f6 Added 8/16-bit IPCFIFOSEND writes 2020-10-29 16:09:25 -04:00
RSDuck c03d83b7be remove qt_sdl dependency from frontend util 2020-10-28 19:45:50 +01:00
Arisotura d2cd3eadbe fix to timers (ZXDS no longer runs slow as shit) 2020-10-27 05:03:17 +01:00
Arisotura 81964a0f89 make things function atleast somewhat
no pciture is being actually sent yet
2020-10-26 21:54:08 +01:00
Arisotura c0c1c2e1c2 camera: remember PLL config 2020-10-26 21:16:20 +01:00
Arisotura fc922ffb14 Merge branch 'master' into dsi_camera
# Conflicts:
#	src/DSi_I2C.cpp
2020-10-26 20:47:30 +01:00
Arisotura 49a96f41da I2C: silence logging for devices A0/E0 (mysterious alternate cameras) 2020-10-26 20:34:54 +01:00
Arisotura 2f15bcf93b betterer battery level 2020-10-26 17:55:25 +01:00
Arisotura af0a9e92c4 make unlaunch'd NANDs work 2020-10-25 18:25:09 +01:00
Arisotura 9fdc1de6fe add a few missing 32bit I/O accesses (IPC, SPI) 2020-10-25 18:14:40 +01:00
WaluigiWare64 8d70d0926c
Merge branch 'master' into feature/zip-support 2020-10-23 00:39:29 +01:00
WaluigiWare64 a8851a51f1 Switch to libarchive 2020-10-22 23:41:26 +01:00
RSDuck 65be1840f0 change JIT branch optimisations default to 1
branch linking is dead
2020-10-15 05:59:45 +02:00
Madhav Kanbur dc46da0e24 Input : Treat numpad keys as keypresses
Typically, modifiers are masked out of keypresses to distinguish
between hotkeys and keypresses. This patch prevents the numpad
modifier from getting masked out in KeyPress() and KeyRelease().

Signed-off-by: Madhav Kanbur <abcdjdj@gmail.com>
2020-10-13 11:02:58 +05:30
kyandora f8c4bf6db1
save microphone hotkeys (#781) 2020-10-07 01:33:11 +02:00
RSDuck ef4215e172 flush to file after importing SRAM 2020-10-06 00:49:16 +02:00
Valeri 0d845c9e69
Random minor fixes (#757)
* Fix incorrect/questionable assert() usage

Originally reported by https://lgtm.com/projects/g/Arisotura/melonDS/?mode=tree&ruleFocus=2159000700,
but also includes a bunch of other fixes.

* Fix some `printf` warnings

Rule https://lgtm.com/projects/g/Arisotura/melonDS/?mode=tree&ruleFocus=2160310550

* Remove useless check

It is never passed thanks to `if (num_in < 1) {...; return}` before
Rule https://lgtm.com/projects/g/Arisotura/melonDS/?mode=tree&ruleFocus=2154840804

* Add missing header guard, rename other to avoid conflicts

Rule https://lgtm.com/projects/g/Arisotura/melonDS/?mode=tree&ruleFocus=2163210746

* Make DSi_SDDevice destructor virtual

Rule https://lgtm.com/projects/g/Arisotura/melonDS/?mode=tree&ruleFocus=2158670642

* Use thread-safe localtime_r, assign `time` result directly

Rule https://lgtm.com/projects/g/Arisotura/melonDS/?mode=tree&ruleFocus=2154840805

* Fix MinGW build

It needs _POSIX_THREAD_SAFE_FUNCTIONS to export `localtime_r`
2020-10-01 13:44:09 +02:00
RSDuck 9d5791f8e5 use fixed sized integers from stdint.h 2020-10-01 13:32:06 +02:00
RSDuck 6977302403 make OpenGL renderer a build option
mostly meant for the Switch port
2020-10-01 00:01:05 +02:00
Arisotura a88df19708 avoid out-of-bounds read in GPU2D. fixes #763 2020-09-18 00:29:08 +02:00
RSDuck edf4c66724 fix build on Switch 2020-09-11 19:29:06 +02:00
RSDuck f2fa52f26c add functionality to import savefiles 2020-09-11 03:08:06 +02:00
Arisotura 8d42b1c7d7 messin' around 2020-09-08 20:19:37 +02:00
PoroCYon 00e2ec3faf
fix 8-bit ConsoleID address decoding typo (#749) 2020-09-07 04:09:03 +02:00
WaluigiWare64 ea640398f9
Add support for fullscreen hotkey (#748) 2020-09-06 22:59:35 +02:00
RSDuck 9772201345 remove some UB
- savestates used to read a four bytes from a single byte value
- a few unassigned variables
- some other things
- also make the ROR macro an inline function
2020-09-04 20:37:14 +02:00
Arisotura 94d12c68b3 heh 2020-09-04 13:41:51 +02:00
Arisotura 3739e4dd67 muhhahahahahh 2020-09-04 10:36:50 +02:00
Arisotura 5431c469c3 actually add DLDI. bahahahhh 2020-09-03 20:28:07 +02:00
Arisotura 81eda0f19c bahahahhh 2020-09-03 19:05:13 +02:00
Arisotura 0ee5bb7a3b
Merge pull request #734 from v1993/master
Fix "Improved polygon splitting" option in GUI
2020-09-03 13:12:38 +02:00
Arisotura 1f634ed157 Merge branch 'master' of https://github.com/Arisotura/melonDS 2020-09-03 11:52:41 +02:00
Arisotura aa94cbaeb0 DSi: add support for 8-bit VRAM writes when enabled in SCFG_EXT. fixes #733 2020-09-03 11:51:50 +02:00
qeeg 9bfaf8682d Fix a typo 2020-08-31 16:37:42 -05:00
v1993 aed7a32243
Fix "Improved polygon splitting" option in GUI 2020-08-31 18:56:20 +03:00
RSDuck b12e1a1b6e JIT fastmem: fix out of bounds read
seems to fix #727
2020-08-25 18:13:17 +02:00
Arisotura 4be68aafe0 make SD support actually be a thing 2020-08-25 00:34:57 +02:00
Arisotura e5dd692d32 AES: fix bug where CCM-encrypt MAC could be obliterated, by attempting to write it while the output FIFO was full 2020-08-25 00:17:22 +02:00
Arisotura b36b3feb7f support .dsi extension for dragdrop/cmdline launching 2020-08-24 21:25:10 +02:00
Arisotura 31e83b2bf3 fix config file lookup. fixes #717 2020-08-24 21:14:46 +02:00
RSDuck 30fc6bbc09 JIT: fix QDSUB/QSUB for interpreter run 2020-08-24 21:07:20 +02:00
Arisotura f4427a89d0 disable savestate menu items in DSi mode 2020-08-24 20:13:58 +02:00
Arisotura 3685edeef2 make GL display also not default 2020-08-24 20:03:24 +02:00
Arisotura 39af95e869 make the AR engine use the correct bus funcs based on DS/DSi mode 2020-08-24 19:55:20 +02:00
Arisotura 13521211d2 make software renderer the default 2020-08-24 19:32:44 +02:00
Arisotura e7025abcdc * fix build error
* make betterer polygon splitting an option
* add GL_LEQUAL depth test for 'equal' mode, might help
2020-08-24 19:32:07 +02:00
Arisotura abccc44eec make MAC randomization optional 2020-08-24 19:19:41 +02:00
Arisotura c29e630314 oops.
fixes #725
2020-08-24 12:00:13 +02:00
Arisotura b5f9278b3a GL: hopefully finally fix the checkerboard issue 2020-08-20 03:01:05 +02:00
Arisotura 0688a15e47 blarg 2020-08-20 01:37:33 +02:00
Arisotura 959e7f568d GL: be more careful with framebuffer mappings. might fix issues. 2020-08-20 01:19:09 +02:00
Arisotura 660792d64b wifi:
* don't receive packets if the RX buffer is zero-sized
* avoid potential out-of-bound writes
2020-08-19 19:16:09 +02:00
Arisotura c9447935ff NWifi: correctly determine ROM/chip/etc IDs based on hardware version (as specified in firmware).
fixes #700
2020-08-19 17:53:31 +02:00
Arisotura e1add6f3d7 3D: add a bunch of missing variables to savestates. oops.
fixes #716
2020-08-19 16:25:40 +02:00
Arisotura 00f33343e4 3D/GL: experimental attempt at reducing warping on quads, pentagons, etc... 2020-08-19 14:53:42 +02:00
Arisotura de19ce6250 3D/GL: make polygon generation code cleaner, add quicker codepath for triangles (also laying ground for some evil experiment)
also fix stupid bug with line polygons
2020-08-19 13:02:54 +02:00
Arisotura a32d997e1c SPU: don't process channels with len<4 2020-08-19 04:18:17 +02:00
Arisotura 6f4e7c60b2 GPU2D: allow writes to DISPCNT, master brightness, capture, dispFIFO regardless of POWCNT.
fixes #665
2020-08-19 00:46:16 +02:00
Arisotura ba373ca72a DSi: make ARM9-clock-selector actually work 2020-08-17 19:15:45 +02:00
Arisotura e27d55505f blarg 2020-08-15 01:11:18 +02:00
Arisotura f8d1d08e9c (finally) build the goddamn cheat interface 2020-08-15 00:14:05 +02:00
RSDuck 4299ef5f06 use unordered map for JIT RestoreCandidates
also fix WifiRead32?
2020-08-14 23:38:47 +02:00
Arisotura 4cefff2528 add AR code file parser and shit 2020-08-13 00:20:34 +02:00
Arisotura 28b8f614ee heh 2020-08-11 18:03:44 +02:00
Arisotura 0bd53a34ef lay base for the actual dialog
also make EmuSettingsDialog properly modal
2020-08-11 17:38:29 +02:00
Arisotura f23e782966 hey look. Arisotura the lazy derp finally made a dialog. 2020-08-11 15:58:41 +02:00
RSDuck 36bdb591be fix JIT for code in VRAM
apparantely Pokemon B/W needs this
fixes #708
2020-08-09 13:29:04 +02:00
WaluigiWare64 240175f274
Update CMakeLists.txt 2020-08-06 14:39:42 +01:00
WaluigiWare64 6d71f9c832
Merge branch 'master' into feature/zip-support 2020-08-05 15:06:15 +01:00
U-RAYYAN-PC\Rayyan 7e5eafe345 Statically link libzip 2020-08-05 14:50:18 +01:00
RSDuck e4b1526b47 reset JIT fastmem on JIT block cache reset as well 2020-07-31 23:05:11 +02:00
RSDuck 2a3147db46 reset fastmem on DSi soft reset 2020-07-31 22:39:27 +02:00
Arisotura c5ecef7410 fix similar bug with emu settings dialog
also make the reset-warning dialog a bit betterer
2020-07-31 20:51:16 +02:00
Arisotura d21cd20290 fix some pause bugs 2020-07-31 20:45:30 +02:00
RSDuck a89741c628 fix unterminated string + remove some JIT logging 2020-07-29 01:31:57 +02:00
RSDuck f56aa60eb6 check IRQ first then Idle loop
apparently I put it this way for a reason
2020-07-28 00:44:58 +02:00
RSDuck ea734084ca check DSi interrupts for halted processor wakeup 2020-07-27 23:18:33 +02:00
RSDuck 5903b11bda subtract cycles after checking IRQ and Halt
also switch back to adding to ARM::Cycles instead of subtracting from them
2020-07-27 23:14:39 +02:00
Arisotura dff14ca80a
Merge pull request #682 from nadiaholmquist/slirp-merge
Merge slirp branch into master
2020-07-27 16:01:55 +02:00
RSDuck 17ce4d2a73 x64 JIT: remove unecessary MOV 2020-07-27 13:49:13 +02:00
Nadia Holmquist Pedersen 6a682a8ef0 Link iconv instead of ${Iconv_LIBRARIES} because idk Windows 2020-07-26 22:26:50 +02:00
Nadia Holmquist Pedersen a1f939e0cb use FindIconv and link it on all platforms when not built in 2020-07-26 22:16:53 +02:00
Nadia Holmquist Pedersen 173e3b037c Link iconv for Windows static builds 2020-07-26 22:08:57 +02:00
Nadia Holmquist Pedersen b4ad35948d Merge remote-tracking branch 'upstream/slirp' into slirp-merge 2020-07-26 21:41:09 +02:00
RSDuck 0e7df468c7 x64 JIT: generate patch trunk for RSCRATCH4
I thought I already fixed this?
2020-07-25 22:21:26 +02:00
RSDuck 887ad27ed8 implement carry setting ALU op with imm 2020-07-25 22:08:43 +02:00
RSDuck af31d25086 fix #672 2020-07-25 21:16:23 +02:00
RSDuck 8a96dfce18 fix build with JIT disabled
fixes #675 and #674
2020-07-25 20:59:53 +02:00
WaluigiWare64 c351e777b4
part 2 of fix Linux invalid encoding 2020-07-24 18:25:07 +01:00
WaluigiWare64 a5d9f69127
Fix Linux "invalid encoding" filename 2020-07-24 18:19:02 +01:00
RSDuck 116d831cfd Fix 16-bit DSi ARM9 read 2020-07-23 20:06:44 +00:00
RSDuck f5130f82eb Arisotura isn't the only derp 2020-07-23 19:56:09 +00:00
Arisotura ac8f44125b I'm a derp 2020-07-23 21:27:45 +02:00
RSDuck e85d2e2cf3 Use the correct slow path for block read/write 2020-07-23 19:12:25 +00:00
RSDuck 961b4252e2 Make it buildable on aarch64 2020-07-23 19:07:33 +00:00
RSDuck e63bd7e38c for some reason tabs and spaces were mixed 2020-07-23 17:43:25 +02:00
Arisotura 2f9a6b7c03 SPU: delay channel start until whenever it can actually start. fixes maxmod interpolated mode. 2020-07-23 12:59:19 +02:00
WaluigiWare64 7937406af6
Change binary stream to u8 and cast to char* 2020-07-22 16:39:24 +01:00
WaluigiWare64 7fb67570e9
fix 2020-07-22 16:17:32 +01:00
WaluigiWare64 c8e934ce97
Fix indentation + delete contents 2020-07-22 16:01:18 +01:00
U-RAYYAN-PC\Rayyan 96e0e37156 Link it up to onOpenFile() 2020-07-22 15:15:56 +01:00
U-RAYYAN-PC\Rayyan 0009a3ffd1 Add the extractROM function 2020-07-22 15:13:14 +01:00
U-RAYYAN-PC\Rayyan 523ff9ff1c Add libzip dependency in the workflow files and to CMakeLists.txt 2020-07-22 14:22:23 +01:00
RSDuck 3827fa562f another try 2020-07-09 00:11:47 +02:00
RSDuck 1519b3d5fa attempt at fixing aarch64 linux yet again 2020-07-08 23:57:43 +02:00
RSDuck 8f5d8d1e12 fix for fastmem when pc is used as immediate
and (hopefully) make SIGSEGV handler work for aarch64 linux
2020-07-08 23:47:24 +02:00
RSDuck 3786660099 misc JIT changes 2020-07-08 23:08:25 +02:00
RSDuck 778623a8b7 make linux work and fix a few bugs 2020-07-04 18:58:00 +02:00
RSDuck c5381d2911 reconcile DSi and JIT, fastmem for x64 and Windows 2020-06-30 23:50:41 +02:00
Arisotura d9e1bf737c blarg 2020-06-21 18:34:53 +02:00
Arisotura c32da212f1 make it possible to static-link libslirp 2020-06-21 15:44:56 +02:00
Arisotura ff69df2a15 add AES-CCM encrypt
makes the eShop work
2020-06-21 12:20:02 +02:00
Arisotura e43a216ab5 take care of some minor details 2020-06-21 11:02:42 +02:00
Arisotura 7132e11bd4 make it work without a hack 2020-06-21 10:29:08 +02:00
Arisotura b31e049b30 wifi fixes and shit. getting there, somewhat. 2020-06-21 01:43:32 +02:00
Arisotura 91ff63a194 fix slirp crash when exiting without having inited slirp
also fix misc bugs
2020-06-16 14:09:54 +02:00
RSDuck ea6d03581b make literal optimisation work again
enable single register block load/store optimisations for x64 aswell
2020-06-16 12:11:20 +02:00
RSDuck e335a8ca76 first steps in bringing over the JIT refactor/fastmem 2020-06-16 12:11:19 +02:00
RSDuck fea9f95bba fix inlined IO register access 2020-06-16 12:06:43 +02:00
RSDuck e7d076403d Merge branch 'generic_jit' of https://github.com/Arisotura/melonDS into generic_jit 2020-06-16 12:06:42 +02:00
RSDuck c17f7b100e allow allocating caller saved regs on windows 2020-06-16 12:01:10 +02:00
RSDuck efb796640b use instr hash as key for restore candidates
makes Golden Sun burn a little slower through the JIT memory
2020-06-16 12:01:10 +02:00
RSDuck 80b88dbd05 allow allocating caller saved registers
currently system-v only
2020-06-16 12:01:09 +02:00
RSDuck 052ff73672 rewrite JIT memory emulation 2020-06-16 12:01:08 +02:00
RSDuck b902cd1b8e fix regression from last commit
also a small mistake with msr
2020-06-16 11:59:10 +02:00
RSDuck 5a3607bc68 don't use param registers for ReadBanked/WriteBanked
should fix linux build
2020-06-16 11:59:09 +02:00
RSDuck 6d217e1010 fix build with JIT disabled and set default JIT maxblock size to 32 2020-06-16 11:59:09 +02:00
RSDuck dc86bac83d hopefully fix stack handling for linux 2020-06-16 11:59:08 +02:00
RSDuck c2dd6a186d implement msr and mrs for the x64 JIT 2020-06-16 11:59:07 +02:00