# CEMU detailed changelog for 1.4.1 # Patreon release date: 2016-04-07 CPU: Added new instructions to recompiler: LWARX, STWCX, STWBRX, LHAUX, LHZUX, type 5, 6 & 7 for PSQ_L and type 5, 6 & 7 for PSQ_ST, DCBZ, ADDC, MFCR, FDIV, FADD, PS_SUB, PS_NEG. CPU: Improved handling of XMM registers in recompiler. Drastically reducing the number of load/store operations when not enough registers are available. CPU: Added SUBFME to interpreter. coreinit: New API __ghs_mtx_init(), __ghs_mtx_dst(), __ghs_mtx_lock(), __ghs_mtx_unlock(), OSSleepThread() coreinit: Added weak-symbol 'environ' RPL: Added support for SDA and SDA2 fsa: Asynchronous file operations now support sending the result via message queue (instead of callback) GX2: Added vertex data cache (cache vertex data in GPU memory instead of re-uploading it for every drawcall) GX2: Fixed texture decoding for compressed textures with a size smaller than 16x16 GX2: Fixed AMD issue that occurred when glDrawBuffers() enables unused color attachment GX2: Fixed AMD issue that occurred when glPrimitiveRestartIndexNV is used instead of glPrimitiveRestartIndex GX2: Fixed AMD driver crash that could happen after shader compilation. GX2: Fixed a multitude of issues when using Intel GPUs. Graphics are still horribly broken due to Intel's lacking OpenGL driver, but at least we can say we tried our best :) GX2: Invalidate destination texture in cache after GX2SurfaceCopy() vpad: Clamp left and right stick to length 1.0