aboutsummaryrefslogtreecommitdiff
path: root/src/CMakeLists.txt
Commit message (Collapse)AuthorAge
* Make linking librt conditional on it containing shm_openJesse Talavera-Greenberg2023-07-08
| | | | | Fixes building on UNIX platforms with no librt. Co-authored-by: Nadia Holmquist Pedersen <nadia@nhp.sh>
* Split the cart parsing and loading steps (#1707)Jesse Talavera-Greenberg2023-06-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Split ROMList into a .cpp file - Its definition in ROMList.h was causing multiple-definition linker errors - Introduce ROMListSize, since you can't take a sizeof() of an extern declaration - Mark ROMList and ROMListSize as const * Update ReadROMParams to accommodate ROMList changes * Split parsing and loading of NDS ROMs - Introduce an NDSCartData class for parsing a ROM file - Introduce InsertROM for loading a NDS cart - Refactor LoadROM to use NDSCartData and InsertROM under the hood * Reset cart state and initialize save memory in the NDSCartData constructor - Otherwise there's no way to know about SRAM-specific attributes before inserting the game * Add a comment to NDSCartData * First crack at splitting parsing and loading for GBACart * Add some logging calls for encrypting the secure area * Log the XXH64 hash of the inserted NDS ROM * Log the XXH64 hash of the secure area after decryption * Add some logging to Key1_LoadKeyBuf * Re-encrypt the secure area when inserting the cart, not when parsing it - This way, constructing a NDSCart doesn't imply a read from the filesystem (as is done in Key1_KeyBuf) * Load Key1_KeyBuf from memory, not from the file system - Now that the cart's secure area isn't re-encrypted until insertion, we can expect that the BIOS will be ready at this point * Add some helper query methods to NDSHeader * Query the DSi region directly from the header instead of checking the ROM again * Introduce a CartType enum - So CartCommon::Type doesn't have to return magic numbers * Reset the cart in NDSCart::InsertROM instead of the NDSCartData constructor - That way the constructor doesn't rely on the config or on file I/O when loading homebrew - This keeps the use of global state closer to one place * Add non-const getters for the carts * Add InsertROM overloads that accept unique_ptrs * Fix a comment * Rename member functions on NDSCartData and GBACartData to adhere to the convention * Rename members on NDSCartData and GBACartData to adhere to the convention * Fix build errors on some platforms * Add NDSHeader::IsDSiWare * Add a ROMListEntry parameter to the cart constructors - To allow for looking up details of SRAM or expected ROM size * Add some new getters to CartCommon * Use the Header/Banner members instead of globals * Make CartCommon abstract - It's not supposed to be instantiated anyway * Change the signature of CartCommon::Checksum - It's neither overridden nor mutating * Add some clarifying comments to NDSHeader * Delete CartCommon::ROM in its destructor - ParseROM copies its input and gives that copy to the cart object, so it's okay * Add some getters to CartCommon * Refactor NDSCart - Get rid of NDSCartData - Get rid of cart-specific global state within NDSCart (so registers are untouched) - Refactor uses of removed global variables to use the Cart pointer instead - Refactor ROMInfoDialog's icon functions to accept const arguments * Return the cart pointer - So *that's* why it was crashing. Whoops - Why is this even allowed? * Refactor GBACart - Delete CartGame::ROM in the destructor - Get rid of GBACartData - Remove some global state * Mark NDSCart::CartCommon::Type as const * Slightly refactor GBACart::CartCommon - Mark Type as const - Use enum constants - Make CartCommon itself abstract * Mark CRC32's data parameter as const * Mark GBACart::CartCommon::Checksum as const * Use assert.h instead of cassert - As demanded by the style guide * Fix some includes to adhere to the style guide * Get the ARM9 entry address directly from the header object * Use more Header fields directly * Rename some parameters to match the style guide * Remove some unused includes * Slightly change NDS_Header::IsHomebrew for clarity
* fix JIT profiling with VTuneRSDuck2023-04-13
|
* No more context mess (#1531)RSDuck2022-10-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * WIP: use Duckstation's context code to directly render into QT Widget from separate thread without two OpenGL contexts currently only works on Windows * reenable gay OSD * add back vsync * make it atleast a little more thread safe * linux support * don't segfault on closing * reorganise and cleanup build system it's still not good, but better than before * macos? * try to get it working on Ubuntu CI also update instructions * let's try this * ok how about this * try creating an OGL 4.3 context first (https://i.kym-cdn.com/photos/images/original/001/264/842/220.png) * fix Ubuntu * hm * try again for Windows * let's try this * make the OpenGL renderer work again that was stupid * do OGL surface resizing from the mainthread * Fix small mistake in GL context creation on macOS causing version 3.2 to be considered invalid * C stupidness * cleanup * don't let the emuthread deinit OGL if there's no OGL * reset lastScreenWidth/Height when deiniting OpenGL * disable stencil test while drawing framebuffers * macOS: Link Cocoa framework explicitly when not building with Qt6 Seems to be needed for the classes used by DuckStation's GL context code. * Set ScreenPanelGL's minimum size immediately Fixes GL context creation for OpenGL display on macOS using the wrong size as the underlying window was not resized to the correct size by Qt yet. * don't emit window updates when OGL display is used * stuff Arisotura said Co-authored-by: Nadia Holmquist Pedersen <nadia@nhp.sh>
* Work around a really strange issue when building teakra with -O0 on WindowsNadia Holmquist Pedersen2022-10-12
|
* Modernize CMake build system (#1434)Nadia Holmquist Pedersen2022-05-21
| | | | | | | | | | | These changes modernize the CMake build system to (hopefully) match newer best practices * Library linking is simpler and more automatic because of using imported targets * Multi-configuration builds should be supported (Ninja Multi-Config, Visual Studio, etc. generators) * Clean up build options using cmake_dependent_option * Let CMake do its job in more cases, like finding the math/dl libraries and detecting and enabling LTO support * Remove platform-specific kludges like the Fedora/flatpak LTO workaround and a bunch of Windows stuff * Simplify Windows static builds * Consistent formatting
* Custom path support (#1333)Arisotura2022-01-07
| | | | | | | also including: * getting rid of shitty strings * all new, cleaner ROM handling code * base for DSi savestates * GBA slot addons (for now, memory cart)
* don't link rt when oglrenderer disabled on appleCharlene Campbell2021-12-29
|
* finally decouple Config from the core. baahhahahahahArisotura2021-11-18
|
* DLDI/SD folder-sync apparatus (#1251)Arisotura2021-10-28
| | | guess we can finally have DLDI that isn't obtuse
* Fallback to FreeBIOS when BIOS files are not found. (v2) (#1174)Adrian Siekierka2021-10-02
| | | | | | | | | | | | * 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>
* DMA timing renovation (#1207)Arisotura2021-08-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.
* having fun with fatfs (#1189)Arisotura2021-08-24
| | | | * patch TSC coords in DSi mode * DSiware importer and shit
* add support for JIT profiling with VTuneRSDuck2021-07-24
|
* Add PoroCYon's DSP code. (#1123)purringChaos2021-06-06
| | | | | | | | | | | | | | | * 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
* macOS-related CMake cleanupsNadia Holmquist Pedersen2021-05-02
| | | | | * Remove useless explicitly specified link/include directories * Don't pass -s or -pie to the linker as they aren't needed
* Allow for a more modular renderer backends (#990)Wunk2021-02-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.
* Use libepoxy to load in OpenGL functions (#960)WaluigiWare642021-01-26
| | | | | | | | | | | * 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
* Add FreeBSD support (#939)WaluigiWare642021-01-22
| | | | | | | | | | | | | | | | | | | | | | | | | * 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
* Also include Homebrew on ARM64 Mac location in CMake (#938)WaluigiWare642021-01-11
|
* Improved SRAM performance (#925)Kimmy Andersson2021-01-09
| | | | | | | | | * 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
* change cmake file as wellRSDuck2020-12-07
|
* lay base for multiple GPU2D backendsRSDuck2020-12-06
|
* Rename jit linkage asm files (#836)webgeek12342020-12-01
| | | | An extension of lower case s indicates to not run the preprocessor while upper case S does. These files have defines.
* Add support for macOS (#771)WaluigiWare642020-11-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* make OpenGL renderer a build optionRSDuck2020-10-01
| | | | mostly meant for the Switch port
* actually add DLDI. bahahahhhArisotura2020-09-03
|
* add AR code file parser and shitArisotura2020-08-13
|
* Make it buildable on aarch64RSDuck2020-07-23
|
* first steps in bringing over the JIT refactor/fastmemRSDuck2020-06-16
|
* Merge branch 'generic_jit' of https://github.com/Arisotura/melonDS into ↵RSDuck2020-06-16
|\ | | | | | | generic_jit
| * fix build with JIT disabled and set default JIT maxblock size to 32RSDuck2020-06-16
| |
| * implement block linking + some refactoringRSDuck2020-06-16
| | | | | | | | currently only supported for x64
| * this mistake was phenomally stupidRSDuck2020-06-16
| |
| * move ARM64 JIT backend hereRSDuck2020-06-16
| |
| * jit: add compile optionRSDuck2020-06-16
| |
| * jit: branch instructionsRSDuck2020-06-16
| |
| * JIT: compilation of word load and storeRSDuck2020-06-16
| |
| * JIT: implemented most ALU instructionsRSDuck2020-06-16
| |
| * JIT: baseRSDuck2020-06-16
| | | | | | | | all instructions are interpreted
| * Merge remote-tracking branch 'remotes/origin/master' into melonDSiArisotura2020-05-30
| |\
| | * embed romlist.binArisotura2020-05-30
| | |
| | * get the OpenGL renderer going.Arisotura2020-05-25
| | | | | | | | | | | | | | | | | | sorta. (also make the blackmagic_II branch obsolete in the process)
| | * add audio output. HARK HARK HARKArisotura2020-05-02
| | |
| | * add a bunch of codeArisotura2020-04-27
| | |
| | * get some of the shit going, I guessArisotura2020-04-27
| | | | | | | | | | | | | | | | | | atleast the emuthread is going and we have its control system down and other fun shit, too
| * | Merge commit '4b57416552ec2fa95216e2b044559f215723bf70' into melonDSiArisotura2020-05-30
| |\|
| * | add DSi shit to cmakelistsStapleButter2019-10-16
| | |
* | | fix build with JIT disabled and set default JIT maxblock size to 32RSDuck2020-04-26
| | |
* | | implement block linking + some refactoringRSDuck2020-04-26
| | | | | | | | | | | | currently only supported for x64