aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
...
* Fix compilation with the GDB stub disabled (#1863)Jesse Talavera-Greenberg2023-11-01
|
* minor cleanupArisotura2023-11-01
|
* use a grid layout in the date/time dialog so Qt will behaveNadia Holmquist Pedersen2023-10-30
|
* fdsfdArisotura2023-10-30
|
* RTC revamp (#1867)Arisotura2023-10-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * get this started * implement DSi RTC commands * set up RTC clock timer. lay down basic idea of a clock. * make the date/time registers writable * move RTC state to its own structure, to make it easier to deal with * more RTC work lay base for date/time dialog * get the bulk of the RTC functionality going * much simpler design for RTC stuff * aha, that is what it is * start working on the RTC IRQ * implement all types of RTC IRQ * start refining sleep mode. code still kinda sucks. * implement keypad IRQ * refine it some more * shut the fuck uuuuuupppppppppppppp
* Miscellaneous DSi NAND fixes (#1852)Jesse Talavera-Greenberg2023-10-24
| | | | | | | | | | | | | | | | | | | | | | | | | | * Replace some standard I/O calls with Platform equivalents - I missed a spot when I submitted that PR a few months ago * Include <memory> in DSi_NAND.h - Because it uses unique_ptr * Split DSi_NAND::ReadHardwareInfo into ReadSerialData and ReadHardwareInfoN * Add a RegionMask enum * Move DSi NAND patching to the frontend * Add DSiSupportedLanguageMask - Not currently used by the frontend, but I use it in melonDS DS * Remove some Platform::ConfigEntry values - The core no longer needs to know about them - The corresponding Config values are unchanged * Mark NANDMount's destructor as noexcept
* Slight polish to DMA (#1856)Jesse Talavera-Greenberg2023-10-24
| | | | | | | | | | | | | | | | | | | | | | | | * Slight polish to DMA - Default-initialize members explicitly - Mark some methods as const noexcept - Initialize DMA::MRAMBurstTable to DMATiming::MRAMDummy - Use the default destructor * Move DMA_Timings definitions to a source file - To ensure constant and unique addresses * Include some extra DMA members in the savestate * Simplify serializing the DMA table - Extend the dummy table to 256 bytes (same length as the real ones) * Revert the type change to DMA::DoSavestate * Keep the MRAMBurstTable inside the DMA class, instead of using a pointer - If we use a pointer to an external table, then we can't use it in savestates (else that external table gets overwritten)
* Generalize a path in .gitignore (#1862)Jesse Talavera-Greenberg2023-10-24
| | | - Covers all of CLion's default CMake build paths
* GDB stub (#1583)PoroCYon2023-10-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * gdbstub beginnings * gdbstub: finish gdb impl things, next up is integration with melonDS * holy fuck the gdbstub works * gdb breakpoints work, but there's a mysterious crash on continue * fix memory corruption that sometimes happened, and make resetting the console thru gdb work * remove some gdb debug printing * fix things in gdbstub * separate option for enabling gdbstub * add mode-dependent CPU registers * C++ize the GDBstub code * add gdbstub config in emu settings dialog * make sure gdb is disabled when jit is enabled * Remove unnecessary compiler flags, mark ARMJIT assembly code as no-execute-stack This hardens the binary a little bit against common exploitation methods * add option to wait for debugger attach on startup * only insert GNU stack notes on linux * disable gdbstub enable checkbox when jit is enabled * fix non-linux incompatibilities * enable gdbstub by default * fix issues with gdbstub settings disable stuff * format stuff * update gdb test code * Fix segfault when calling StubCallbacks->GetCPU() C++ overrides are hard. Please I'm just a lowly C programmer. * fix packet size not being sent correctly Thanks to @GlowingUmbreon on Github for troubleshooting this * fix select(2) calls (i should read docs more properly) * fix GDB command sequencing/parsing issue (hopefully) * [GDB] implement no-ack mode * fix sending ack on handshake * get lldb to work
* store pc+12 when storing r15RSDuck2023-10-22
|
* Refactor DSi_NAND (#1844)Jesse Talavera-Greenberg2023-10-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Refactor diskio's contents - Change ff_disk_read_cb/write_cb into a std::function instead of a raw pointer - Add const specifiers as needed * Refactor DSi_NAND to manage the file system's mounted lifetime with RAII * Split NANDMount into NANDMount and NANDImage - NANDImage is used for information about the NAND that doesn't require decryption or filesystem access - NANDMount is used to actually access the file system - Both classes manage their respective resources (the NAND file handle and the NAND's mount) with RAII - Also split the file loading into another function that I will remove in a later PR * Make NANDMount immovable * Remove NAND-loading code that I had sectioned off into a function - Incomplete copypasta - I must have gotten distracted * Tidy up NANDImage's initialization - Don't unmount the disk image if the constructor fails (that's NANDMount's job now) - Only assign CurFile if the constructor succeeds * Add some const-correctness * Move DSi NAND initialization to the frontend - The NANDImage is now installed via a unique_ptr in DSi * Remove Platform::DSi_NANDPath - Not Config::DSiNANDPath; that can still be configured as usual - The core no longer needs to care
* Add some structs for files that DSi_NAND reads (#1842)Jesse Talavera-Greenberg2023-10-02
| | | | | | | | | | | | | | | | | | | * Add DSiFirmwareSystemSettings * Replace DSiFirmwareSystemSettings::TouchCalibration fields with std::arrays - So assignment can be done in one line * Make DSiFirmwareSystemSettings a union - So its bytes can be accessed * Add a comment * Use DSiFirmwareSystemSettings instead of raw byte offsets * Add definitions for DSiSerialData and DSiHardwareInfoN * Move DSiFirmwareSystemSettings's hash update logic into its own method
* Replace DSi_NAND's uses of sprintf with snprintf (#1841)Jesse Talavera-Greenberg2023-10-01
| | | - Now clang oughta stop complaining
* Wrap CurGLCompositor cleanup in an #ifdef (#1837)Jesse Talavera-Greenberg2023-09-24
|
* Clean up some rendering-related resources in DeInit (#1836)Jesse Talavera-Greenberg2023-09-24
| | | - The unique_ptr destructors will take care of the cleanup
* Ensure that the new firmware is installed when resetting (#1834)Jesse Talavera-Greenberg2023-09-21
| | | - It might have been changed in the settings
* only recalculate extended access point checksum when firmware is a DSi oneRSDuck2023-09-20
|
* Refactor the core's handling of firmware and BIOS images to rely less on the ↵Jesse Talavera-Greenberg2023-09-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | file system (#1826) * Introduce firmware-related structs * Fix some indents * Move the generated firmware identifier to a constant * Document the WifiAccessPoint constructors * Add some constants * Remove a stray comment * Implement Firmware::UserData * Add Firmware::Mask * Document Firmware::Buffer * Add a Firmware constructor that uses a FileHandle * Set the default username in UserData * Update the UserData checksum * Forgot to include Platform.h * Remove some redundant assignments in the default Firmware constructor * const-ify CRC16 * Replace the plain Firmware buffer with a Firmware object - Remove some functions that were reimplemented in the Firmware constructors * Fix some crashes due to undefined behavior * Fix the user data initialization - Initialize both user data objects to default - Set both user data objects to the same touch screen calibration * Follow the DS logic in determining which user data section is current * Remove an unneeded include * Remove another unneeded include * Initialize FirmwareMask in Firmware::Firmware * Use the DEFAULT_SSID constant * Add SPI_Firmware::InstallFirmware and SPI_Firmware::RemoveFirmware * Move a logging call to after the file is written * Add a SaveManager for the firmware * Touch up the SPI_Firmware::Firmware declaration * Move all firmware loading and customization to the frontend * Call Platform::WriteFirmware when it's time to write the firmware back to disk * Fix some missing stuff * Remove the Get* functions from SPI_Firmware in favor of GetFirmware() * Implement SPI_Firmware::DeInit in terms of RemoveFirmware * Add Firmware::UpdateChecksums * Fix an incorrect length * Update all checksums in the firmware after setting touch screen calibration data * Use the Firmware object's Position methods * Remove register fields from the Firmware object * Install the firmware before seeing if direct boot is necessary * Install the firmware before calling NDS::Reset in LoadROM * Slight cleanup in ROMManager * Fix the default access point name * Shorten the various getters in Firmware * Add qualifiers for certain uses of firmware types - GCC can get picky if -fpermissive isn't defined * Add an InstallFirmware overload that takes a unique_ptr * Log when firmware is added or removed * Don't clear the firmware in SPI_Firmware::Init - The original code didn't, it just set the pointer to nullptr * Fix a typo * Write back the full firmware if it's not generated * Move the FreeBIOS to an external file * Load wfcsettings.bin into the correct part of the generated firmware blob * Load BIOS files in the frontend, not in the core * Fix logging the firmware ID * Add some utility functions * Mark Firmware's constructors as explicit * Remove obsolete ConfigEntry values * Include <locale> explicitly in ROMManager * Fix up some includes * Add Firmware::IsBootable() * Add a newline to a log entry - Whoops * Log the number of bytes written out in SaveManager * Mark FirmwareHeader's constructor as explicit * Clean up GenerateDefaultFirmware and LoadFirmwareFromFile - Now they return a pair instead of two by-ref values * Refactor SaveManager a little bit - Manage its buffers as unique_ptrs to mitigate leaks - Reallocate the internal buffer if SetPath is asked to reload the file (and the new length is different) * Remove some stray parens * Fix some firmware-related bugs I introduced - Firmware settings are now properly saved to disk (beforehand I misunderstood when the firmware blob was written) - Firmware is no longer overwritten by contents of wfcsettings.bin * Slight cleanup
* Make the NDS teardown more robust (#1798)Jesse Talavera-Greenberg2023-09-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Make cleanup a little more robust to mitigate undefined behavior - Add some null checks before cleaning up the GPU3D renderer - Make sure that all deleted objects are null - Move cleanup logic out of an assert call - Note that deleting a null pointer is a no-op, so there's no need to check for null beforehand - Use RAII for GLCompositor instead of Init/DeInit methods * Replace a DeInit call that I missed * Make ARMJIT_Memory less likely to generate errors - Set FastMem7/9Start to nullptr at the end - Only close and unmap the file if it's initialized * Make Renderer3D manage its resources with RAII * Don't try to deallocate frontend resources that aren't loaded * Make ARMJIT_Memory::DeInit more robust on the Switch * Reset MemoryFile on Windows to INVALID_HANDLE_VALUE, not nullptr - There is a difference * Don't explicitly store a Valid state in GLCompositor or the 3D renderers - Instead, create them with static methods while making the actual constructors private * Make initialization of OpenGL resources fail if OpenGL isn't loaded * assert that OpenGL is loaded instead of returning failure
* fix last commitRSDuck2023-09-02
|
* Reduce code stink (#1818)jdp_2023-08-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CRC32.cpp: Make table initialization compile time DSi_NAND.cpp: Fix file close / unmount / disk close on error ~L427: Remove redundant calls, as they are immediately rendered useless by `rem` being overwritten NDS.cpp / FreeBIOS.h: Remove unneeded size values in header Remove unneeded memset's as they are initialized anyway sha1.c / sha1.h: Fix useless warning Wifi.cpp: Remove unneeded includes DSi.cpp: Reduce ugly casts Deduplicate code qt_sdl/main.cpp: silence clang switch statement warning qt_sdl/main.h: fix override warnings dolphin/BitSet.h: use msvc extensions only when appropriate, fix broken bit set count under _WIN32
* Updated README.md (#1681)Tuffy2023-08-27
| | | inserted missing dependency in dynamic build instructions (qt5-tools)
* Update macOS icon (#1609)xenticore2023-08-27
| | | | | | | * Add SVG icon * Update macOS icon * Don't force change the application icon at runtime on macOS
* remove AR code size limit (#1802)StraDaMa2023-08-27
| | | Co-authored-by: Arisotura <thetotalworm@gmail.com>
* Edge fill rules for swapped polygons + a few minor fixes to edge cases (#1815)Jaklyy2023-08-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * fix edge fill rules for swapped polygons also fixes translucent polygons not being always edge filled. * fix right edge fill rule * fix right edge fill rule for realsies * fix a few more glitchy polygons specifically quads similar to: (-67,40) (64, 160) (192, 160), (8, 111) * fix one edge case pixel i hate this so much * fix "flat bottom" edge fill * fix regression + apply changes to shadow masks fix a regression with certain line polygons not rendering; there seems to be an exception made by the ds' gpu in order for these polygons to render properly. also apply these changes to shadow masks because i forgot to * forgot to remove a line --------- Co-authored-by: Arisotura <thetotalworm@gmail.com>
* Make sprite mosaic (more) accurate (#1687)Mireille2023-08-27
| | | | | | | | | * Make horizontal sprite mosaic (more) accurate * Vertical sprite mosaic should not extend the sprite's bounding area * Vertical sprite mosaic should not extend the sprite's bounding area (2) * OBJIndex is no longer needed
* Fix Incorrect Polygon Swapping Behavior and Implement Correct Rules for ↵Jaklyy2023-08-27
| | | | | | | | | | | | | | Shifting Right Edges Left (#1816) * fix polygons being swapped incorrectly "borrowed" this from noods needs verification that the >= and <= signs aren't actually supposed to be > and < * proper rules for moving vertical right slopes left * nvm most of that was actually pointless that's on me for not checking
* Fix aa being upside down on swapped y-major slopes (#1803)Jaklyy2023-08-27
| | | | | | | | | | | | | * fix aa being upside down on swapped y-major slopes * further improvements to swapped aa in addition to fixing swapped y-major slope aa, now fixes: swapped x-major slope aa swapped vertical slope aa * use templates instead + style/comment tweaks should force the compiler to precompile if statements like i want it to do, instead of just hoping it does so on its own
* Small Fix to Anti-Aliasing + Edge Marking Behavior (#1680)Jaklyy2023-08-27
| | | | | | | | | | | * Anti-Alias All Edges Changing a bunch of 0x3s to 0xF since I figure if they're checking the left and right edge they wanna be checking the top and bottom too now that they're gonna be aa'd. also copy that if statement over since otherwise there won't be anything to blend with. * small optimization its probably a tiny bit faster? idk id need actual benchmarking tools. doesn't break anything at least.
* fix aa calc for 1px tall 0px wide slopes (#1795)Jaklyy2023-08-27
|
* Assorted portability enhancements (#1800)Jesse Talavera-Greenberg2023-08-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Introduce some Platform calls for managing dynamic libraries * Add Platform::WriteFATSectors * Introduce some Platform calls for managing dynamic libraries * Add Platform::WriteFATSectors * Change includes of "../types.h" to "types.h" - Makes it easier to directly include these headers in downstream projects * Change an include of "../Wifi.h" to "Wifi.h" * Allow CommonFuncs.cpp to compile on Android * Tidy up some logging calls - Use Platform::Log in LAN_Socket.cpp - Soften some warnings to Debug logs (since they don't necessarily represent problems) * Add Platform::EnterGBAMode - Gracefully stop the emulator if trying to enter GBA mode * Soften some logs that most players won't care about * Soften some more logs * Introduce Platform wrappers for file operations * Fix pointer spacing * Fix more style nits * Log the errno when ftruncate fails * Fix FileSeek offset argument - With an s32 offset, we couldn't access files larger than 2GB * Revise Platform::StopEmu to address feedback - Remove Platform::EnterGBAMode in favor of adding a reason to Platform::StopEmu - Also rename Platform::StopEmu to Platform::SignalStop - Add an optional argument to NDS::Stop - Use the new argument everywhere that the console stops itself * Rename FileGetString to FileReadLine - It conveys the meaning better * Rename FileSeekOrigin::Set to Start - It conveys the meaning better * Change definition of FileGetString to FileReadLine - Oops, almost forgot it * Rename FlushFile to FileFlush - To remain consistent with the other File functions * Add a FileType usage * Fix line break in FileSeekOrigin * Document Platform::DeInit * Clarify that StopReason::Unknown doesn't always mean an error * Move and document FileType::HostFile * Remove Platform::OpenDataFile - Nothing currently uses it * Refactor Platform::OpenFile and Platform::OpenLocalFile to accept a FileMode enum instead of a string - The enum is converted to fopen flags under the hood - The file type is used to decide whether to add the "b" flag - Some helper functions are exposed for the benefit of consistent behavior among frontends - Equivalent behavior is maintained * Fix a tab that should be spaces * Use Windows' 64-bit implementations of fseek/ftell * Move Platform::IsBinaryFile to Platform.cpp - It could vary by frontend * Remove an unused FileType * Rename an enum constant * Document various Platform items * Use Platform::DynamicLibrary to load libandroid - And clean it up at the end * Fix a typo * Pass the correct filetype to FATStorage - Since it can be used for DSI NAND images or for SD cards * Remove Platform::FileType
* check lower pixel when top pixel ignores fog (#1808)Jaklyy2023-08-13
|
* Improve Interpolation Accuracy (#1686)Jaklyy2023-08-10
| | | | | | | | | | | | * Fix Up Y Interp Inputs * Change Linear Interp Formula Fixes a handful of pixels. Still not perfect. * Cleanup remove some unnecessary code and parentheses
* fix some UBRSDuck2023-08-01
|
* a bit of frontend refactoringRSDuck2023-07-29
|
* wifi: attempt two at optimizing the sync mechanism. this time it should be ↵Arisotura2023-07-28
| | | | far less prone to problems.
* wifi: implement CMD retriesArisotura2023-07-27
|
* wifi:Arisotura2023-07-27
| | | | | * rework and clean up frame transfer code * disable melonAP during local multiplayer comm
* cancel CMD transfer if there isn't enough time leftArisotura2023-07-25
|
* wifi: mystery ack value is CMD_COUNTArisotura2023-07-25
|
* keep that one extra line in, thoArisotura2023-07-25
| | | | (remind me to rename these with the proper reg names)
* Revert "attempt at making local multiplayer faster"Arisotura2023-07-25
| | | | This reverts commit 8772258fe70a4b587a2db045bfcf1926bb8ac5fc.
* codesign the final universal macOS app bundleNadia Holmquist Pedersen2023-07-24
| | | | | otherwise the code signature in it will be invalid, and macOS won't run it witohout manually removing xattrs
* Work around a strange bug in Qt5 that causes melonDS to crash on launchNadia Holmquist Pedersen2023-07-16
| | | | | | | ...but only with LTO enabled ...but only on some UNIX systems ...but only with some additional build options except when it breaks without any as well
* DSi: add option to boot the full boot ROMs (#1581)PoroCYon2023-07-16
| | | | | | | | | * DSi: add option to boot the full boot ROMs added a config option for this so that this can be enabled or disabled also added IO regs for DSi GPIO, but those don't do anything yet. * reset GPIO regs on reset
* Merge branch 'master' of github.com:Arisotura/melonDSArisotura2023-07-15
|\
| * Add AppImage Builds (#1670)TGP172023-07-14
| | | | | | | | | | | | | | * Create build-appimage.yml * Update build-appimage.yml This Adds the new Dependencies for MelonDS
* | attempt at making local multiplayer fasterArisotura2023-07-15
|/
* fix bad seqno bug with MP replies (oops)Arisotura2023-07-14
|
* wifi: only allow setting TXSLOT_CMD bit15 if CMDCOUNT is nonzero, as per GBAtekArisotura2023-07-14
|