Commit Graph

1714 Commits

Author SHA1 Message Date
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 1112162e99
Add build status badges 2021-02-04 10:10:49 +00: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 b5e601bb88
Try to fix Ubuntu AArch64 CI (#979)
Also remove previous fixes, they were fixed upstream
2021-02-02 13:29:51 +00:00
WaluigiWare64 0d301c2434 Remove flatpak from main repo
melonDS is on flathub and the flatpak package is maintained on a seperate repository.
2021-02-01 17:49:37 +00: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
WaluigiWare64 7e3d1058a6
Fix blank melonDS app icon on macOS 2021-01-22 10:38:37 +00: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
Arisotura 31c9d116bd
Merge pull request #954 from WaluigiWare64/cmake-melonds-ver
Define melonDS version in CMake
2021-01-19 13:28:55 +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 8829b0511c
Change all mentions of qt5 to qt@5 on macOS (#937)
* Change all mentions of qt5 to qt@5 on macOS

* Use temporary workaround to get macOS brew updating

https://github.com/actions/virtual-environments/issues/2322#issuecomment-749211076

* Don't install CMake, it is already installed in the macOS runner
2021-01-13 14:56:06 +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
WaluigiWare64 30a0569c87
Update melonDS version in melonDS.plist (used on macOS) (#932) 2021-01-09 23:35: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