Devlogs
UniPCemu build 2020/12/16 08:35 is now live!
UniPCemuA downloadable emulator for Windows and Android
Since it's a bit of a large update (over 490 commits), I've summarized the main changes and bugfixes for this release:
- Fixed i430fx device ID.
- Improved floppy sense interrupt and perpendicular mode.
- Don't send ACK for enabling the second PS/2 controller.
- Improved Pentium Pro and Pentium II emulation.
- Improved x86 CR register bits.
- Improved CPUID instruction.
- Improved BIOS text input cursor to be a block character instead.
- Added FS breakpoint support.
- Added i440fx motherboard emulation.
- Increased memory limit to 1GB.
- Improved CPU-depending memory limits during detection. 15MB for 80286, 16MB for Compaq, 128MB for i430fx, 1GB for i440fx.
- Improved PIT emulation.
- Implemented a basic Qemu-style logging method for software to use.
- Improved PCI BARs.
- Fixed POST code logging without (valid) translation file.
- Improved ATA and ATAPI device emulation.
- The i440fx uses a default speed of 10MIPS or 66MHz.
- Improved Pentium/Pro/II MSRs.
- Implemented extended CMOS data storage at port 72h/73h.
- Improved PIC interrupt tracking.
- Implemented Local APIC, IO APIC and SMP.
- Implemented Intel 28F001BXT/28F002BXT flash BIOS on i430fx/i440fx.
- Implemented IMCR register.
- Improved CPU INIT vs RESET.
- Made the CPU state per-CPU instead of global.
- Improved Android support for SDL2_net. It's now properly compiled in.
- Hard disk lists in the settings menu can now be viewed, but not un/remounted on a running machine.
- Implemented i430fx/i440fx BIOS flash write protection.
- Fixed first PS/2 port IRQ on the output port.
- Implemented SMP bus locking.
- Multiple processors(up to 2) can now be specified in the settings.
- Improved SMP CPU reset vs INIT.
- The debugger is only attached to the BSP.
- Improved SMRAM emulation.
- Improved CPU reset/init with data locking.
- Updated Android gradle to the latest version.
- Implemented CPUID limit options on the function number.
- Fixed IPS clocking mode bus deadlock.
- Bus locks use a random chance generator.
- Updated the common emulator framework to the latest commit.
- Fixed CMPXCHG affected flags.
- Improved CMPXCHG8B.
- Added missing debugger for the CMPXCHG instructions.
- Improved double fault during page fault.
- Improved 32-bit addressing handling of special register opcodes.
- Implemented all base Pentium Pro/II instructions(no FPU).
- Widened the memory bus to 64-bits.
- Optimized paging.
- Modified the remaining instructions to use the BIU for memory accesses.
- Improved CMOS timer update flag to be reported correctly.
- Flushing the paging TLB also flushes the PIQ.
- Fixed PS/2 keyboard typematic rate/delay command.
- Fixed the paging accessed bit to be always handled.
- Accessing paging structures in RAM now locks the bus.
- Don't fault on pseudo-interrupts checking CPL.
- Log paging pending events during advanced logging.
- Don't check paging for the destination during jumps and call instructions.
- Fixed 16-bit CMPXCHG.
- Fixed VGA scanline data updating during register writes.
- Made VGA byte panning an extension of the horizontal pixel panning register.
- Latch the VGA byte panning during vertical retrace.
- Latch the VGA horizontal pel panning during the end of vertical retrace.
- Improved VGA byte panning to be an extension of horizontal pel panning.
Common emulator framework:
- Implemented a command-line parameter to enable Qemu-style logging support.
- Safeguard log against threads.
- Safeguard file closing.
- Fixed big file close protection.
- Improved sound samplehandlers list.
- Fixed RandomShort not being inlined.
- Fixed random shorts to properly round to generate the full range of possibilities.
- Improved random short with equal chance.
- emu_misc.c: Improved border case of random short chance being out of range.
- Fixed signed/unsigned warning in the 64-bit file read line function.
Files
UniPCemu.apk 4.5 MB
UniPCemu_PSP.zip 975 kB
UniPCemu_win64.zip 1.2 MB
UniPCemu_win64server.zip 1.4 MB
UniPCemu_win32.zip 1.1 MB
UniPCemu_win32server.zip 1.3 MB