*Properly trigger DP interrupt, some games are very sensitive when we ignore it. Blast Corps no longer hangs after the Rare logo. Also ensure to trigger the interrupt when frameskip its enabled to avoid stalls
*Added bound checks for DLinMem and DLCount
*Disabled invalid address bound checks for the PSP. With the recent changes, now its safer to disable it
*Fixed mempack support when savetype is not unknown, for simplicity we always assume the presence of the mempack. Ill add proper support to disable it later
*Removed force flag for Save_Flush, this was a legacy flag mainly used to manually allow users to force saving
*Moved hle cache directory inside the SaveGames folder and removed all the duplicate code added when it was moved to its own directory
*Fixed accurate TMEM for the PSP (still disabled on the PSP)
*Added more bound checks
*Removed compiler workaround in MatrixFromN64FixedPoint and GBI1_DL, I checked and latest PSP toolchain optimizes this correctly now
*Removed GBI0_Tri4 (F3D microcode doesn't support it)
*Moved GBI0_Tri4 implementation to Ucode_GE.h since this is actually part of the custom microcode used by GE and PD.
*Removed CLIP_TEST_FLAGS usage, I tested several games and I did not find any issue when all the clipping flags were set
*Refactored set ClipFlags to avoid duplicate code and make it easier to debug
*Fixed culling for Aydin Chronicles (first and last param its reversed)
*Avoid doing a bound check twice for testverts, the display list would get culled regardless
*Return early when Dlist its visible
PS: CLIP_TEST_FLAGS its meaningless right now since all clipping flags are checked, we can remove it after testing further if that's ok or if we need to relax the clipping flags for No Near Plane microcodes
*Implemented CullDL for F3D microcode, small speed up for games that use this, ex Wave Race 64
*Fixed max light constant for F3D/EX/2
*Continue WIP to optimize the vertex indices at compile time (F3D its done now)
*Refactored RDP_MoveMemLight to prevent duplicate code and simplified it for adding custom lighting impls. Also added bound checks for invalid light index and addresses
*Added hash for Rogue Squadron (this a custom GBI1 ucode), currently unimplemented
*Do not hardcode GBI commands when patching custom ucode tables
*Fixed DKR's index mtx address, thanks Rinnegatamante for pointing out this error
*Remove SOTE ucode implementation, this was wrong. Now both SOTE and WRUS will use the Beta ucode
*Fix typo from previous commit that caused that changed ucode hash.
*Added WIP to set the vertex stride at compile time to allow the compiler to do further optimizations when the stride its a power of two. Currently its only done for the new F3DBETA ucode as a test.
* Auto defect and cache ucode functions and vertex stride
* Speed up custom ucode detection, avoid string detection and return as soon as there's a match
* Do not attempt to auto defect ucodes that lack a version string
*Alot of code clean up, now custom ucodes should be easier to add (everything related its now in Microcode.cpp)
*Bound checking for InitMicrocode and make sure to set a default ucode version if there's a failure
*Hardcode code_size to avoid issues when hashing ucodes when games set an invalid size, ex Conker
*Simpler way to clear the ucode cache
*Always include gNormalInstructionName even on release builds, the memory we saved wasn't worth the hassle to keep it out of release builds..
*Implemented IsVertexInfoValid to add proper bound checking our vertextinfo
*Implemented IsAddressValid to add proper bound checking when referencing an N64 ram address, currently its only used for DMA_Tri_DKR
*Fixed bug bugged addresses in DKR ucode
*Removed now redundant bound checks, some of these were either wrong pr inconsistent
*Avoid division by zero in the viewport code and properly handle PAL scaling // taken from bazel and Vita port
*Restored bound checks for AddTri , TestVerts and ModifyVertexInfo
*Refactored CPU and VFPU vtx pipelines to make it easier to maintain
*Combined UpdateWorldProject and PokeWorldProject
*Added proper null check to LoadTextureDirectly
[*] Fixed memcpy usage for aligned path for the memcpy swizzle and also enabled it for Linux/OSX
[*] Refactored unaligned path for memcpy swizzle and also fixed memcpy_test
[*] Set correctly sp mem region for DMA_SP
[*] Removed redundant check for flashram read/write, actually this was incorrect for flashram read..
[*] Added return for failed DMA flashram transfers
[*] Set correct save type for Derby Stallion
[*] Set flashram type correctly, fixes saving for Derby Stallion
[*] Added check to prevent reading rom from out of range
* Added check for odd PI DMA length, fixes Doraemon 3
* Fixed incorrect mask for spmem_address, thanks Rinnegatamante for pointing out this
* Moved rdram overflow check outside the count loop
* Added FAST_DMA_SP define and enforce 8 byte alignment for correctness. This is still only enabled for the PSP but should be safe to enable for other platforms where speed its important
* Small clean ups
*Correct bad pointer casting for optimized copy in Yoshi_Memrect and fixed non optimized copy
*Store n64 ram offset rather than the system memory for Fast TMEM (thanks strmnnrmn!). Fixes random crashes when using the non accurate path for TMEM emulation
*Make sure to reset tmem block for fast TMEM even when accurate TMEM its used since we fall back to the non accurate path when games set line to 0
*Ignore load tile for accurate TMEM when line its 0, this was causing a crash in Paper Mario which sets line = 0
Fixes bug in Paper Mario where a save slot will get duplicated also fixes a bug in Majora's Mask where link did not have a shield and sword during the first movie
*Fixed debug build when DAEDALUS_DEBUG_DISPLAYLIST its defined, also I enabled it for debug builds
*Fixed ptr->u32 cast in DLParser_DumpVtxInfoDKR, it was causing a compilation error for me)
*Removed unsused zlib from third_party, also added webby
*Fixed possible overflow of ucode entries, also spread entries to avoid always overriding the last entry
*Fixed out of bounds assert for microcode data
*Properly check both microcode data and code base for ucode cache
*Removed gLastUcodeBase, potentially caused ucodes not to be loaded correctly. This was legacy code before we had the ucode cache
*Fixed 32bit pointer assumption on DLParser_SetCustom