UniPCemu build 2018/11/16 09:35 is now live!
UniPCemu » Devlog
The latest updates for UniPCemu are now available on itch.io! These include CPU improvements, various hardware improvements and emulator speed optimizations. Also 16-bit protected mode has been improved to be way more accurate! The 8086/8088 has also been improved with more cycle-accurate timings.
Common emulator framework updates:
- Improved CPU speed display to no longer display 1% when running between 0-1%.
- Improved GPU speed display to become red when truly 0%.
- Fixed static framerate item duplicate.
- Fixed framerate module comment.
- Improved hanging CPU detection when reading the CPU speed.
- Improved active/inactive CPU speed to be darker colors. - Optimized sign conversions to process faster.
UniPCemu updates:
- Updated the common emulator framework to the latest commit.
- Optimized modrm REG reading to be precalculated for an opcode.
- Removed modrm EA calculation for the base EA address(already implemented within the modr/m handling).
- Made relative and absolute EIP loads proper 32-bit when required casting.
- Fixed settings menu CPU selection initial item detection.
- Added support for oddly sized floppy disks, generating some default geometry information to use for it.
- Improved floppy geometry detection.
- Fixed floppy invalid geometry crash and no floppy geometry being available.
- Fixed BT* timings to not double it's own EU cycles executed.
- Improved ARPL timings to be more accurate with writeback.
- Improved protection on JMP to gates to be properly check the privilege level.
- Implemented cycle-accurate MUL.
- Fixed x86 MUL to act as documented.
- Fixed signed multiplication.
- Applied cycle-accurate multiplication to all 808X multiplication instructions.
- Implemented a more cycle-accurate version of the 8086 DIV instruction(still has errors).
- Slightly improved IDIV.
- Divide starts out with carry.
- Fixed 808X header.
- Improved (I)DIV divisor wrapping.
- Fixed negative quotient detection.
- Fixed signed division overflow.
- Made the Android compiler happy.
- Implemented AAD cycle accurate timing using MUL.
- Disabled old (doubled) div/mul cycles calculations.
- Modified 808X generic support function EU timings based on Reenigne's findings.
- Modified most basic 808X instruction timings based on Reenigne's findings.
- Modified the remaining 808X opcode timings based on Reenigne's findings.
- Added missing cycle.
- Added missing REP cycles.
- Added remainder of REP timings.
- Adjusted CMP cycles to be according to Reenigne's findings.
- Fixed JMP gated access to be simplified.
- Improved privilege level checking for data/system and (non-)conforming code segment descriptors.
- Fixed typo causing compiler errors.
- Fixed protection code.
- Fixed privilege level conditions.
- Don't activate the BUS and tick the BIU when faulting on prefetch: nothing can be transferred in that case.
- Removed duplicate privilege level check.
- Lowering CPL on RETF is already done in the segmentWritten function.
- Cleaned up the protection segment loading code.
- Moved the present check up: all other bits are invalid when not present.
- Fixed invalid descriptor check to throw the right error code.
- Improved VERR and VERW descriptor checking behaviour.
- Improved and fixed VERR and VERW.
- Fixed breakpoint triggering on Protected-mode hardware interrupts.
- Improved breakpoints to work as earlier, but improved conditions.
- Added missing definition of getLoadedTYPE.
- Updated the Android Studio project to the latest version.
- Fixed roof segment descriptor precalcs.
- Implemented Task breakpoints and CR3 breakpoints.
- Fixed new code errors.
- Fixed new settings menu labels.
- Added missing settings menu debugger case statements.
- Fixed unassigned new debugger options in the settings menu.
- Improved zero-extending limit and base precalcs.
- Fixed CR3 breakpoints.
- Fixed the CR3 breakpoint to use it's own breakpoint correctly, instead of overwriting the task breakpoint.
- Fixed CR3 breakpoint address loading.
- Removed unused variables and labels.
- Task switches are non-reentrant. Improved clearing old TSS descriptor's busy bit.
- IRET task switches must allow returning to busy tasks(required).
- Improved IRET TSS faults.
- Fixed 16-bit TSS loading.
- Fixed BIOS settings menu screen clearing to clear the entire screen properly.
- Fixed advanced log setting loading from the correct section.
- Improved volume doubling on OPL2/adlib.
- Improved OPL2 percussion.
- Fixed OPL2 missing key on for percussion instrument pairs.
- Completed basic CMOS register map.
- Added missing interrupt privilege level change timings.
- Removed various todo comments, as they're resolved.
- Removed unused variable.
- Adjusted 10-bit phase to be corrected.
- Removed unused operator calculation during Hi-hat sample generating.
- Fixed OPL2 RNG.
- Added support for a direct value as the source of the phase of a OPL2 signal.
- Improved OPL2 percussion phase calculation.
- Improved OPL2 channel volume.
- Improved DR0 player time display.
- Fixed Task register loading faulting when using the LDT instead of using a requester privilege level of 2 or 3.
- Optimized paging ages to only update when writing new entries and when accessing memory using the entry.
- Optimized Paging aging.
- Optimized Paging TLB reads.
- Optimized ModR/M decoding when not requiring debugger information.
- Optimized paging tag generation.
- Unlocked the 8042 output buffer.
- Optimized segment descriptor rights precalcs to be precalculated during the emulator being initialized only.
- Fixed segment descriptor precalcs to run correctly.
- Optimized paging using inlining and algorithmic privilege level detection.
- Improved modem quick dial to properly execute a dial command.
- Protected against infinitely recursive dials.
- Improved PIC.
- Updated required SDK version.
- Improved PIC shared interrupt handling.
- PIC IRR now also pends shared raised and lowered interrupts correctly.
- Fixed PIC compiler issues.
- Fixed Sound Blaster IRQ being parallel correctly.
- Optimized debugging instruction disassembly to only be set once.
- Fixed missing debugger variable.
- Improved initialization of CR0 on all processors.
- Improved CR0 on 80486 to keep bits 30/29 as documented.
- Improved writing of CR0 to only keep and set documented bits of CR0 as documented on 80386 and 80486 processors.
- Improved differentiating between INIT and RESET signals(INIT only during emulator startup).
- Fixed compiler warnings.
Various MS-DOS extenders are now running correctly(like Dos/4G and related variants). That means that many 286/386+ games that use them can now run.
Files
UniPCemu.apk 3.5 MB
Nov 16, 2018
UniPCemu_PSP.zip 828 kB
Nov 16, 2018
UniPCemu_win64.zip 1.1 MB
Nov 16, 2018
UniPCemu_win64server.zip 1.3 MB
Nov 16, 2018
UniPCemu_win32.zip 1,004 kB
Nov 16, 2018
UniPCemu_win32server.zip 1.1 MB
Nov 16, 2018
Get UniPCemu
UniPCemu
A cycle-accurate PC emulator
Status | In development |
Category | Tool |
Author | Superfury1 |
Tags | 16-bit, 32-bit, cycle-accurate, Emulator, i430fx, pc, x86 |
Languages | English |
Accessibility | Configurable controls |
More posts
- UniPCemu build 2023/04/11 18:33 is now live!Apr 11, 2023
- UniPCemu build 2023/01/03 14:55 is now live!Jan 03, 2023
- UniPCemu build 2022/10/19 22:02 is now live!Oct 19, 2022
- UniPCemu build 2022/10/16 14:49 is now live!Oct 16, 2022
- UniPCemu build 2022/10/01 14:51 is now live!Oct 01, 2022
- UniPCemu build 2022/09/10 12:42 is now live!Sep 14, 2022
- UniPCemu build 2022/06/24 12:22 Android bugfix!Jun 24, 2022
- UniPCemu build 2022/06/19 19:15 is now live!Jun 19, 2022
- UniPCemu build 2022/04/07 22:49 is now live!Apr 08, 2022
- UniPCemu Switch release and PSP/Vita bugfixesSep 26, 2021
Leave a comment
Log in with itch.io to leave a comment.