# 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. instructionCPU/Interpreter: Fixed a bug in PSQ_STX and PSQ_LDX instruction (GQR index parsed incorrectly from opcode)CPU/Interpreter: Fixed invalid endianness in instruction STHBRXcoreinit: Added 'errno' exportcoreinit: 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 accesscoreinit: Fixed a bug where shared-write file access prevented simultaneous read access from the same fileGX2: 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 RECTSGX2: MULADD shader instruction will now use correct rules in regards to 0*anythingGX2: Fixed OpenGL error caused by games requesting more mip levels than possible for a textureGX2: 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 parameterSWKBD: 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 implementationnsysnet: Added nsysnet (socket) library