Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

UniPCemu Vita: Difference between revisions

From GameBrew
No edit summary
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 2: Line 2:
|title=Vita Homebrew Emulators (Computer) - GameBrew
|title=Vita Homebrew Emulators (Computer) - GameBrew
|title_mode=append
|title_mode=append
|image=unipcemuvita.jpg
|image=unipcemuvita2.png
|image_alt=UniPCemu
|image_alt=UniPCemu
}}
}}
{{Infobox Vita Homebrews
{{Infobox Vita Homebrews
|title=UniPCemu
|title=UniPCemu
|image=unipcemuvita.jpg
|image=unipcemuvita2.png
|description=The UniPCemu (Universal PC emulator) emulator.
|description=The UniPCemu (Universal PC emulator) emulator.
|author=Superfury1
|author=Superfury1
|lastupdated=2022/10/19
|lastupdated=2023/04/11
|type=Computer
|type=Computer
|version=2022.10.19
|version=2023
|license=Mixed
|license=Mixed
|download=https://dlhb.gamebrew.org/vitahomebrews/unipcemuvita.7z
|download=https://dlhb.gamebrew.org/vitahomebrews/unipcemuvita.7z
Line 42: Line 42:


==Screenshots==
==Screenshots==
unipcemuvita3.png
https://dlhb.gamebrew.org/vitahomebrews/unipcemuvita3.png
unipcemuvita4.png
https://dlhb.gamebrew.org/vitahomebrews/unipcemuvita4.png


unipcemuvita5.png
https://dlhb.gamebrew.org/vitahomebrews/unipcemuvita5.png
unipcemuvita6.png
https://dlhb.gamebrew.org/vitahomebrews/unipcemuvita6.png


==Media==
==Media==
Line 56: Line 56:


==Changelog==
==Changelog==
'''2022.10.19'''
'''2023/04/11'''
* Improved ATAPI SRST to detect aborting a command.
* Improved ATAPI DEVICE RESET to properly clear register status bits as documented by ATA/ATAPI-4.
* Fixed ATAPI function call by resetting a drive using a valid method to properly detect the status to determine what to do.
* Improved handling of ATAPI unit attention.
* Improved ATAPI Unit Attention to persist and error out commands except INQUIRY and REQUEST SENSE.
* Updated the common emulator framework to the latest commit.
* Fixed modem checksum compiler warning.
* Updated the Android gradle to the latest version.


Quick post-update bugfix (22:02):
UniPCemu:
* ATAPI Inquiry: report no Unit Attention until another command is received, since it can report the data requested.
*Fixed second COM port detection.
*Implemented a special COM0COM detection override flag.
*Added support for overriding the used COM port to force COM0COM driver support on it.
*Implemented a ::COM0COM:: suffix on the direct serial ports to enforce COM0COM driver to be detected if it isn't.
*Improved packets to the subnet zero broadcast to be counted accordingly.
*Added support for filtering multicast addresses on the client.
*Filter multicast addresses on the packet server host.
*Implemented some basic multicast local routing.
*Just broadcast all network multicast packets.
*Fixed Inboard PS/2 data port conflict on AT machines.
*Implemented Inboard reserved RAM.
*Implemented Inboard reserved RAM/ROM memory mapping and memory area.
*Fixed Inboard reserved RAM area mapping.
*Implemented support for unmapping video and BIOS ROMs on the Inboard chipset.
*Improved Inboard speed setting to be more as documented.
*Improved Inboard AT waitstates.
*Fixed memory dumping.
*Improved Inboard RAM/ROM mapping according to observed behaviour.
*Added memory size limits depending on the Inboard XT/AT model emulated to reflect known configurations better.
*Improved Inboard XT ROM shadowing.
*Fixed the Inboard to properly update the RAM layout for remapping RAM and configuration values when changed.
*Inboard memory remapping isn't always in a memory hole area.
*Fixed mapping of non-reserved memory on the Inboard.
*Always map the RAM acting as ROM on Inboard high as RAM.
*Fixed Inboard reserved memory to not count as a memory hole.
*Improved BIOS ROM shadowing to have only a bit for main motherboard BIOS ROM shadowing.
*Fixed Inboard memory cache/speed configuration register to be registering bit 0 correctly.
*Implemented Inboard 386/AT speed register affecting speed properly as observed behaviour.
*Improved default Inboard 386/AT speed.
*Fixed internal video ROM to register correctly.
*Fixed internal video ROM to start out unhooked.
*Internal video ROM now properly creates INT 10h handler code itself.
*Lock internal video handlers to always be properly available.
*Fixed Inboard 386/AT default speed code.
*Fixed 80(1)86 linear/physical memory access to not wrap to 16-bit physical memory addresses.
*Fixed emulated interrupts direct memory addressing.
*Fixed 80(1)86 addressing memory directly without segment descriptors.
*Restored internal BIOS real memory access using segmentation.
*Implemented proper segmented addresses on CPU memory address translation.
*Fixed memory addressing without segment descriptor.
*Fixed generic segment addressing without segment descriptor.
*Apply proper mandatory CPU depending on the motherboard emulated.
*Extended the BIU to allow requesting 64-bits data as well.
*Extended the BIU addresses to 64-bits.Extended more CPU functions to support 64-bit address width.
*Added functions to request 64-bit memory reads/writes to the CPU execution module.
*Extended the BIU result buffer to include more information about the request using the same basic structure as the request to the BIU.
*Made PAE CR3-based loads properly lock the bus like other paging operations.
*Fixed MOV DRn/TRn to work properly again.
*i440fx requires a Pentium Pro processor to run.
*Modified TSS task switches to support CR3 reloading performing checks and PDPT loads.
*Fixed #TS fault on CR3 loads to properly fault when task switching.
*Fixed VGA from never overflowing the GPU render buffer.
*Cleaned up BIU code.
*Fixed Inboard missing headers.
*Fixed compiler warnings about unused variables without serial support added to the app.
*Made most memory addresses cachable, for any size.
*APIC and VGA memory mapped data is uncachable.
*Optimized RAM layout updates to perform less work.
*Optimized reading from RAM and ROM.
*Fixed EMS memory writes to properly also invalidate other memory windows containing the same written data.
*Use the improved common emulator framework data file paths and definitions.
*Improved Android preprocessor defines.
*Fixed default input settings to be loaded correctly.
*Merged Paging TLB entries and their pointers.
*Optimized moving allocated TLB entries to the MRU.
*Made used TLB checks faster.
*Optimized Paging TLB entries to take less memory.
*Optimized Paging TLB entries to be using caches to run faster.
*Cleaned up unused header.
*Cleaned up COM0COM override when not supported.
*Fixed CHS file size read from the file to be supporting all lengths properly.
*Fixed joystick setting reading typecast.
*Updated the common emulator framework to the latest commit.
*Updated SDL2 to the latest available version on all platforms.


Common emulator framework:
Common emulator framework:
* Added missing copyright notice for the MD5 functionality.
*Improved mouse and gaming mode face buttons to be all available at the same time, instead of just one depending on a order.
* Added missing copyright notice for the Switch header.
*Modified the keyboard mode to be able to handle all face buttons at the same time, except when performing single-key inputs.
* Added missing copyright notice for the Vita header.
*Fixed display of inputted pressed buttons on the danzeff-style keyboard.
* Fixed a PSP compiler warning on the TCP validation function call.
*Improved caps lock and shift status registration to no longer spam press/release actions when not changing.
*Moved many common emulator path support to the common emulator framework.
*Implemented improved Android path detection using a directory on the root of the found storage.
*Fixed some path module compiler warnings.
*Fixed Android root directory detection.
*Made Android become a proper common define like all other platforms.
*Fixed Android root directory redirect file path.
*Improved file deleting using wildcards to no longer affect the source filename input.
*Prevent double redirection using redirect.txt being nested.
*Added support for the redirect file to support relative paths as well.
*Fixed default settings to be loaded correctly.
*Improved support for Windows abosolute paths.
*Protected redirect.txt path overflow to be counted as invalid.
*Fixed root directory file path.
*Properly convert the relative path into an absolute path in redirect.txt
*Improved redirect.txt invalid path ending.
*Improved reditect.txt unwritable path abort.
*Fixed Windows absolute drive path detection.
*Fixed Windows absolute drive path detection.
*Improved invalid path detection.
*Improved PSP path type detection for internal storage devices.
*Improved PSP/Windows invalid path detection.
*Fixed Windows only drive path detection.
*Automatically try to create a directory structure when testing a path for writability.
*Only create the app root directory when all redirects are finished.
*Fixed paths Switch missing header.
*Fixed some string size compiler warnings.
*Fixed redirect size detected from the read file.
*Fixed SDL2 runtime version check compiler warning.
 
[https://superfury.itch.io/unipcemu/devlog Release notes.]


== External links ==
== External links ==

Latest revision as of 14:03, 26 Mayıs 2023

UniPCemu
Unipcemuvita2.png
General
AuthorSuperfury1
TypeComputer
Version2023
LicenseMixed
Last Updated2023/04/11
Links
Download
Website
Source

UniPCemu (Universal PC emulator) is a cycle-accurate x86 emulator (previously called x86EMU before the rename, This isn't based on the other cpu-emulator called x86emu (lower case)).

It's a 8086(IBM PC) up to Pentium II (Compaq Deskpro 386, Compaq Deskpro 386 with PS/2 mouse (adds PS/2 mouse to the Compaq Deskpro 386 chipset, optional BIOS ROM replacement (loading it instead, or alternatively a i430fx Pentium or i440fx Pentium Pro/Pentium II chipset with PS/2 mouse) and seperate CMOS settings like the other architectures) emulator(with various, configurable hardware), with up to 80386 timings (80486SX and Pentium using 80386 timings or 1 cycle for newer/unknown timings/instructions, both having no floating point unit)).

In basic CPU's, all generations in between are supported (8086/8088, 80186/80188, 80286, 80386sx/dx, 80486, Pentium, Pentium Pro and Pentium II. All without FPU emulated, other than software FPU emulation support using drivers).

It can run many IBM PC XT games, and also various 286(*) up to Pentium II games. Support for ATAPI CD-ROM (using VIDE-CDD.SYS, OAKCDROM.SYS or compatible ATAPI drivers) also works. Many graphics cards and sound cards can be used (MIDI using a Soundfont renderer inside UniPCemu (recordable by UniPCemu's sound recording functionality) or passthrough(passthrough on Windows only, which is not recordable by the emulator's own recording functionality)), from PC speaker up to Sound Blaster 2.0 and from IBM Monochrome Display Adapter up to ET4000/W32 SVGA(up to 16M colors (in True Color mode) using it's SC15025 DAC).

EMS is available using the Lo-tech 2MB EMS board on the XT and various EMM emulation software(e.g. JEMM386, EMM386) on IBM AT and up.

(*)Note on emulated systems: Due to cycle-accuracy being too inaccurate on the 80286 AT system, currently the BIOS for the default 6MHz 80286 (2nd revision motherboard) won't allow the BIOS to continue due to the clock not being accurate enough. The Compaq Deskpro 386 architecture can be used to run the games on a 80386 or newer instead. Or adjusting the speed of the emulated system to a compatible speed(although not cycle-accurate for games requiring it).

Installation

Install normally using the VPK file. Then add any files for it to the ux0:/data/Superfury/UniPCemu folder.

There's a quick start guide on the manual (full manual, Quick start guide and this post). The quick start guide also has a video version, although it's explained on a Windows build (the same basics apply to other platforms).

A basic XT BIOS that can be used is the Generic Super PC/Turbo XT BIOS. Copyrighted ROMs for AT and up need to be supplied by the user itself (80386 and up might run the SeaBIOS and it's VGA ROMs. CGA graphics and below usually don't require a seperate ROM (with IBM BIOSes and the Generic Super PC/Turbo XT BIOS) and run out-of-the-box.

Empty, unbootable(except for floppy disks, which contain a simple message after which it reboots when pressing a key) disk images can be created from the Settings menu. Other disk images will need to be supplied by the user.

Configuration can be done using either the Settings menu or the configuration textfile(.ini textfile). The application folder on Android can be redirected to another path using a simple redirect.txt containing the path to use(one-line file contents is the path to redirect the files directory to), as long as it's on the same (android internal) memory card.

Screenshots

unipcemuvita3.png unipcemuvita4.png

unipcemuvita5.png unipcemuvita6.png

Media

UniPCemu getting started tutorial (superfury)

UniPCemu build 2018/09/08 14:39 running Pinball Illusions (superfury)

Changelog

2023/04/11

UniPCemu:

  • Fixed second COM port detection.
  • Implemented a special COM0COM detection override flag.
  • Added support for overriding the used COM port to force COM0COM driver support on it.
  • Implemented a ::COM0COM:: suffix on the direct serial ports to enforce COM0COM driver to be detected if it isn't.
  • Improved packets to the subnet zero broadcast to be counted accordingly.
  • Added support for filtering multicast addresses on the client.
  • Filter multicast addresses on the packet server host.
  • Implemented some basic multicast local routing.
  • Just broadcast all network multicast packets.
  • Fixed Inboard PS/2 data port conflict on AT machines.
  • Implemented Inboard reserved RAM.
  • Implemented Inboard reserved RAM/ROM memory mapping and memory area.
  • Fixed Inboard reserved RAM area mapping.
  • Implemented support for unmapping video and BIOS ROMs on the Inboard chipset.
  • Improved Inboard speed setting to be more as documented.
  • Improved Inboard AT waitstates.
  • Fixed memory dumping.
  • Improved Inboard RAM/ROM mapping according to observed behaviour.
  • Added memory size limits depending on the Inboard XT/AT model emulated to reflect known configurations better.
  • Improved Inboard XT ROM shadowing.
  • Fixed the Inboard to properly update the RAM layout for remapping RAM and configuration values when changed.
  • Inboard memory remapping isn't always in a memory hole area.
  • Fixed mapping of non-reserved memory on the Inboard.
  • Always map the RAM acting as ROM on Inboard high as RAM.
  • Fixed Inboard reserved memory to not count as a memory hole.
  • Improved BIOS ROM shadowing to have only a bit for main motherboard BIOS ROM shadowing.
  • Fixed Inboard memory cache/speed configuration register to be registering bit 0 correctly.
  • Implemented Inboard 386/AT speed register affecting speed properly as observed behaviour.
  • Improved default Inboard 386/AT speed.
  • Fixed internal video ROM to register correctly.
  • Fixed internal video ROM to start out unhooked.
  • Internal video ROM now properly creates INT 10h handler code itself.
  • Lock internal video handlers to always be properly available.
  • Fixed Inboard 386/AT default speed code.
  • Fixed 80(1)86 linear/physical memory access to not wrap to 16-bit physical memory addresses.
  • Fixed emulated interrupts direct memory addressing.
  • Fixed 80(1)86 addressing memory directly without segment descriptors.
  • Restored internal BIOS real memory access using segmentation.
  • Implemented proper segmented addresses on CPU memory address translation.
  • Fixed memory addressing without segment descriptor.
  • Fixed generic segment addressing without segment descriptor.
  • Apply proper mandatory CPU depending on the motherboard emulated.
  • Extended the BIU to allow requesting 64-bits data as well.
  • Extended the BIU addresses to 64-bits.Extended more CPU functions to support 64-bit address width.
  • Added functions to request 64-bit memory reads/writes to the CPU execution module.
  • Extended the BIU result buffer to include more information about the request using the same basic structure as the request to the BIU.
  • Made PAE CR3-based loads properly lock the bus like other paging operations.
  • Fixed MOV DRn/TRn to work properly again.
  • i440fx requires a Pentium Pro processor to run.
  • Modified TSS task switches to support CR3 reloading performing checks and PDPT loads.
  • Fixed #TS fault on CR3 loads to properly fault when task switching.
  • Fixed VGA from never overflowing the GPU render buffer.
  • Cleaned up BIU code.
  • Fixed Inboard missing headers.
  • Fixed compiler warnings about unused variables without serial support added to the app.
  • Made most memory addresses cachable, for any size.
  • APIC and VGA memory mapped data is uncachable.
  • Optimized RAM layout updates to perform less work.
  • Optimized reading from RAM and ROM.
  • Fixed EMS memory writes to properly also invalidate other memory windows containing the same written data.
  • Use the improved common emulator framework data file paths and definitions.
  • Improved Android preprocessor defines.
  • Fixed default input settings to be loaded correctly.
  • Merged Paging TLB entries and their pointers.
  • Optimized moving allocated TLB entries to the MRU.
  • Made used TLB checks faster.
  • Optimized Paging TLB entries to take less memory.
  • Optimized Paging TLB entries to be using caches to run faster.
  • Cleaned up unused header.
  • Cleaned up COM0COM override when not supported.
  • Fixed CHS file size read from the file to be supporting all lengths properly.
  • Fixed joystick setting reading typecast.
  • Updated the common emulator framework to the latest commit.
  • Updated SDL2 to the latest available version on all platforms.

Common emulator framework:

  • Improved mouse and gaming mode face buttons to be all available at the same time, instead of just one depending on a order.
  • Modified the keyboard mode to be able to handle all face buttons at the same time, except when performing single-key inputs.
  • Fixed display of inputted pressed buttons on the danzeff-style keyboard.
  • Improved caps lock and shift status registration to no longer spam press/release actions when not changing.
  • Moved many common emulator path support to the common emulator framework.
  • Implemented improved Android path detection using a directory on the root of the found storage.
  • Fixed some path module compiler warnings.
  • Fixed Android root directory detection.
  • Made Android become a proper common define like all other platforms.
  • Fixed Android root directory redirect file path.
  • Improved file deleting using wildcards to no longer affect the source filename input.
  • Prevent double redirection using redirect.txt being nested.
  • Added support for the redirect file to support relative paths as well.
  • Fixed default settings to be loaded correctly.
  • Improved support for Windows abosolute paths.
  • Protected redirect.txt path overflow to be counted as invalid.
  • Fixed root directory file path.
  • Properly convert the relative path into an absolute path in redirect.txt
  • Improved redirect.txt invalid path ending.
  • Improved reditect.txt unwritable path abort.
  • Fixed Windows absolute drive path detection.
  • Fixed Windows absolute drive path detection.
  • Improved invalid path detection.
  • Improved PSP path type detection for internal storage devices.
  • Improved PSP/Windows invalid path detection.
  • Fixed Windows only drive path detection.
  • Automatically try to create a directory structure when testing a path for writability.
  • Only create the app root directory when all redirects are finished.
  • Fixed paths Switch missing header.
  • Fixed some string size compiler warnings.
  • Fixed redirect size detected from the read file.
  • Fixed SDL2 runtime version check compiler warning.

Release notes.

External links

Advertising: