# Cemu detailed changelog for 1.8.1b # Patreon release date: 2017-06-23 # Public release date: 2017-06-30 # New in 1.8.1b: general: Fixed a bug causing permanent full CPU load on one thread # New in 1.8.1: CPU/JIT: Fixed a bug in ADDME. instruction CPU/Interpreter: Fixed a bug in PSQ_STX and PSQ_LDX instruction (GQR index parsed incorrectly from opcode) CPU/Interpreter: Fixed invalid endianness in instruction STHBRX coreinit: Added 'errno' export coreinit: Added API OSCalendarTimeToTicks(), OSCancelThread(), IM_GetHomeButtonParams(), OSCalendarTimeToTicks(), FSAppendFile(), FSRemove(), SAVEChangeDir() coreinit: Fixed GHS flock handling. Added __ghs_flock_file() and __ghs_funlock_file() coreinit: Added support for milliseconds and microseconds in OSTicksToCalendarTime() coreinit: Fixed bug where FSOpenFile() with mode 'r+' would not allow read access coreinit: Fixed a bug where shared-write file access prevented simultaneous read access from the same file GX2: Added API GX2GetScissorReg(), GX2GetTargetChannelMasksReg(), GX2SetDefaultState() GX2: Better handling for invalid/uncompilable shaders (avoid drawcalls that will lead to errors) GX2: Added support for vertex format 32_32_32_32_FLOAT for primitive RECTS GX2: MULADD shader instruction will now use correct rules in regards to 0*anything GX2: Fixed OpenGL error caused by games requesting more mip levels than possible for a texture GX2: Fixed source mip level parameter for GX2CopySurface() GX2: Avoid shadow samplers on AMD GPUs. This workaround can be forced on other GPUs via -amdshadows command line parameter SWKBD: Fixed handling of active state (previously it was tied to the keyboard being visible whereas it should be separate) SWKBD: Fixed input handling (should no longer clash with wxWidgets, leading to input sometimes being ignored) RPL: Fixed bug where imports/exports were mapped incorrectly if the internal module name included '.rpl' zlib: Overhauled Cafe OS zLib implementation nsysnet: Added nsysnet (socket) library