UniPCemu build 2020/09/06 01:22 is now live!



This time it's a smaller update, with mostly bugfixes, MIDI rendering improvements and one new feature (CD-ROM caddy being implemented better).

UniPCemu itself:

  • Improved and implemented proper i8259 PIC master/slave configuration.
  • Improved PS/2 keyboard and mouse emulation.
  • Improved MIDI synth with lots of new dynamic settings(reverb, chorus, various CC effects, attenuation, multiple voices for a note being supported, reset behaviour, running notes, concave/convex, CC7 modulator fix, RPNs now supported, optimization of the rendering engine, fixed missing modulator envelope to pitch factor during dry channel generation of chorus voices, proper modulator calculation with variable inputs and outputs instead of them having unchangable sources and destinations).
  • Improved DRO and MID player shutting down response.
  • Fixed parallel port updating more than 1 tick at once.
  • Added missing copyright clauses to various headers and source code files.
  • Performed a year 2020 update on the license.
  • Updated the common emulator framework to the latest commit.
  • Improved MID player display of voices(when shown during playing during the sound test mode playing MID files).
  • Fixed IRET(D) in protected mode to a protected mode stack to properly update SP instead of always ESP(with upper bits cleared).
  • Fixed PS/2 mouse movement capping.
  • Fixed PS/2 mouse wrap mode.
  • Improved PS/2 mouse and serial mouse movement to be properly applied(in proper absolute measurements, as is required).
  • Fixed i8259 cascade mode to behave properly when in single mode.
  • Fixed PS/2 mouse sample rate requirements.
  • ATA set multiple mode completing successfully raises an irq.
  • ATA set multiple mode failing disables multiple mode.
  • Improved handling of the ATA drive seek complete status flag.
  • Fixed ATA reset.
  • CPU: Added registration of next CS:EIP address.
  • Improved debugger skipping over interrupted instructions.
  • Improved opcode skipping to take CS into account as well.
  • Made the Settings file use the new ini library.
  • More PSP memory left free for ini files.
  • Have full 128MB memory possibility on Android.
  • Improved settings menu to display KB if less than 1MB is installed and B if less than 1KB is installed.
  • When unable to load the settings file, load the defaults.
  • Improved memory allocation when not enough memory is available. It will now simply not give any available memory and continue to start.
  • Fixed missing BIOS ROM deallocation when restarting the emulation core.
  • Improved adlib variable initialization.
  • Improved the log file to properly close when restarting emulation.
  • Removed unrequired PSP function call.
  • Improved i430fx warning.
  • Add an unconnected serial mouse port to prevent other devices on the serial port from shifting to lower port numbers.
  • Improved memorylimit.txt to ignore any line breaks, reading any line as valid.
  • Improved memory limit to default to bytes if no specifier is specified.
  • Always keep the CD-ROM drive on the secondary channel.
  • Simplified ATA/ATAPI resetting the error register and error bits.
  • Improved hard disk not being present behaviour.
  • Improved ATA SRST to only have limited effect on CD-ROM drives.
  • Improved ATAPI caddy with ejecting and loading the caddy.
  • Added settings menu options to eject and load the caddy when required (allowing to load an unchanged disk or ejecting an used one with OS support).
  • Improved ATA removable media get media status command to report as documented.
  • Fixed ATAPI removable media status notification protocol detection.
  • Improved ATAPI SRST and DEVICE RESET to be more conforming to the official specs.
  • Improved ATAPI not ready special status.
  • i430fx hard reset performs the hard reset only, allowing the hard reset functionality to reset what is needed.
  • Fixed i430fx hard reset to properly update the last PAM register.
  • Fixed CPU reset address line issues.
  • Fixed i430fx CPU reset to properly reset the address lines to their power-on defaults.
  • Improved ATAPI not ready to just clear the status register bits read, not the actual status register once ready(previous state), becoming a mask instead.
  • Leave the drive ready when a ATAPI receives SRST.
  • Seperated and improved ATAPI DRDY clear masking.
  • Allow BSY to be set for SRST when an ATAPI drive isn't ready.
  • Improved default PS/2 mouse sample rate to not be unset anymore.
  • Improved the ATAPI Start/Stop Unit loading the disc to behave like a normal insertion of a disc.
  • Don't retrigger a CD-ROM caddy inserting when it's already triggered once.
  • Improved ATAPI spin up and spin down when requested.
  • Improved ATAPI differentiating loading a disk fast (automatic) and slow (user) into the tray.
  • Improved ATAPI spin response when the caddy is ejected.
  • Don't take older timeouts into consideration when performing ATAPI timing for disk changing and loading/spinning.
  • Implemented partial caddy ejecting.
  • Implemented BIOS CD-ROM auto-eject when possible selecting the drive to mount a different disc.
  • Make the XT keyboard toggle the num lock key LED in hardware.
  • Improved ATA result of unconnected slave drives.
  • Fixed ATA reset properly setting the DSC bit in it's status register.
  • Improved the ATAPI removable media feature set.
  • Fixed ATAPI get media status command missing IRQ and BSY.
  • Implemented ATAPI media status notification word 86 bit.
  • Fixed ATAPI get media status missing set transfer mode command.
  • Implemented Set Features command missing busy and IRQ.
  • Added Set Multiple Mode missing IRQ.
  • Added CD-ROM missing PACKET command feature enable.
  • Improved i430fx memory mapping.
  • Improved I/O read and write handling to take all factors into account.
  • The DAC pixel rendering latching also affects the overscan and blanking active display.
  • Implemented horizontal blanking start and end clock timings.
  • End horizontal blanking start and end clocks after the start clocks.
  • Fixed Tseng Horizontal blanking start register extension to apply properly.
  • Improved ET3000 double width character clocks timing.
  • Implemented missing horizontal retrace skew.
  • Properly implemented horizontal blanking and retrace start and end as documented.
  • Added missing ATAPI bit in the drive identification parameters.
  • Improved ATAPI identify packet device parameters.
  • Improved CD-ROM ASCQ code to indicate tray open or tray closed when reporting no medium is present to read.
  • Improved default ASCQ for ATAPI devices to be properly 0.
  • Improved ATAPI start/stop unit command to perform delays and finish once it's finished it's request(if not aborted).
  • Implemented the ATAPI start/stop unit waiting for command completion only when it's Immed flag is cleared. Otherwise, return results immediately.

Common emulator framework:

  • Performed a year 2020 update on the license.
  • Only connect a joystick using dynamic connections when the app is focused.
  • Made the new behaviour of connecting joysticks requiring focus only when "joystickconnectrequiresfocus" is in the program parameters.
    - Improved joysticks to ignore the requirement of having focus when using the joystickconnectrequiresfocus parameter, allowing multiplayer with multiple instances using the connected joysticks.
  • Renamed the parameter for joysticks without focus and only detecting insertion when having focus to "multiplayerjoysticks".
  • Improved initial joystick connection with the multiplayerjoysticks parameter. It now won't automatically connect to any connected joystick when starting up.
  • Simplified DPI precalcs for the screen.
  • Made a seperate precalc for converting pixels to mickeys.
  • Improved the mouse speed controlled by the analog stick to move at a speed of 1 inch/second.
  • Changed mouse movement to be fully handled by the hardware itself.
  • Improved mouse mode movement in mm and mickeys.
  • Doubled mouse mode speed.
  • Rewrote ini file reading and writing to work from memory buffers. They now read the ini file from memory (after reading it in full) or write it from memory (when closing it).
  • Fixed INI invalid section detection.
  • Fixed INI parser section adding to existing sections.
  • Fixed missing current section for ini file adding a section.
  • Fixed INI parser creation of a file to error out when not being able to create a new section to store the data in.
  • Fixed closing bug of ini files.
  • Properly deallocate the unused INI file container.
  • Fixed ini creation line endings.
  • Further improved line endings missing in the ini file creation.
  • Fixed INI comment final newline.
  • Fixed writing keys and values to ini files.
  • Fixed INI file writing.
  • Lowered INI memory requirements (maximum line length of 256 characters).
  • Seperated INI line and maximum value length.
  • Cleaned up INI variables.
  • Updated tools to the latest commit.
  • Improved zalloc pointer log to not log itself.
  • Fixed UniPCemu allowing to run without emulated memory.
  • Improved GPU text precalcs to properly deallocate when resetting emulation.
  • Fixed SDL_net TCP helper.
  • Don't wait on terminated threads when cleaning up entries for them.
  • Cleaned up thread code.
  • Fixed 64-bit fseek on Windows to be able to handle large files better.
  • Added generic file support for text file line reading.
  • Made the getc64 become more generic with EOF and errors.
  • Don't error out on reaching EOF on text file line reading.
  • Made the INI parser use the new read_line64 function.
  • Fail reading text from a file when at EOF.
  • Improved PS/2 keyboard fake shift scancodes.
  • Improved handling of special modifier keys with the emulated keyboard.
  • Improved logging file closing when finishing up.
  • Fixed the apps key to be detected correctly on SDL2.

In other words, Windows 95 OSR 2.0 and up will now boot, as does Windows 98 First Edition (as far as has been tested)!

The i430fx Pentium motherboard will also now properly reboot when the settings are saved or discarded! It's memory holes setting will also work with better accuracy. Although it still requires the hard disks to be properly setup to not hang when performing the hard disk initialization(in other words, don't have a hard disk installed while the BIOS is setup for the hard disk to be installed causes it to hang on said hard disk's initialization, due to not being able to detect that the hard disk doesn't exist by itself without manual settings being setup in the i430fx BIOS menu's CMOS settings).

Files

UniPCemu.apk 4 MB
Sep 06, 2020
UniPCemu_PSP.zip 944 kB
Sep 06, 2020
UniPCemu_win64.zip 1 MB
Sep 06, 2020
UniPCemu_win64server.zip 1 MB
Sep 06, 2020
UniPCemu_win32.zip 1 MB
Sep 06, 2020
UniPCemu_win32server.zip 1 MB
Sep 06, 2020

Get UniPCemu

Leave a comment

Log in with itch.io to leave a comment.