VOGONS


x86EMU emulator releases

Topic actions

First post, by superfury

User metadata
Rank l33t++
Rank
l33t++

I've finished a basic build of my x86 emulator, x86EMU. I've implemented mouse emulation and keyboard emulation as well.

Press the middle mouse button, or both mouse buttons at once, to capture the mouse and keyboard to use in the emulator (You'll see direct input mode being enabled (D in the right-bottom corner of the screen). M=Mouse mode, empty=Keyboard mode(OSK visible), G=Gaming mode (mount the keys to the PSP buttons in the BIOS, opened by SELECT(PSP)/Backspace(PC) while not in Direct Input mode. Quit Direct Input mode by pressing both mouse buttons or pressing the middle mouse button.

All that's left to do is testing it. It seems to work in my case. Anyone notices anything going wrong?

Filename
x86EMU_20150820_1228.zip
File size
341.4 KiB
Downloads
226 downloads
File comment
My latest x86EMU build (build 2015/08/20 12:28)
File license
Fair use/fair dealing exception

(This is the emulator build only. You'll need to add the ROMs yourself:
Place BIOS ROM in ROM\BIOSROM.bin
Place VGA ROM in ROM\OPTROM.1
(place any other option ROMs in ROM\OPTROM.2, ROM\OPTROM.3 etc.)

Press START(PSP)/Backspace(PC) when not in Direct Input mode or Gaming mode to open the BIOS settings. Here you can change settings (mounted disks, Gaming mode assignments, emulated CPU etc.).

Warning: To use the ROMs, don't forget to set the Execution mode (in the BIOS Advanced menu) to "Load BIOS from ROM directory as BIOSROM.u* and OPTROM.*". If this is set to "Normal operations", it will run emulation without external BIOS (instead use routines in the same way Dosbox loads it's BIOS functionality) and try to emulate a BIOS itself. Unfortunately there still are some errors in this BIOS emulation, so it cannot be used to boot DOS.

The emulated system:
- Intel 8086/80186 (80286 is incomplete, real mode only. Effectively a 80186 with flags like a 80286, used for checking the CPU for errors atm).
- IBM VGA graphics card.
- MPU-401 (Requires soundfont loaded using the BIOS).
- PS/2 keyboard (and mouse when using the 286+ CPU).
- Adlib sound card.
- IDE ATA emulation (incomplete).
- Dual DMA controller.
- Floppy disk controller.
- PCI emulation (unused by hardware).
- PIT timer (with PC Speaker).
- Dual Programmable Interrupt Controller (i8259).
- Serial mouse (When using a 8086 or 80186 processor only).
- Software debugger (Port E9 hack, also port EA extensions for my emulator (see included debugger.txt)).
- UART serial port (with Serial mouse at COM1, when using a 8086/80186 CPU).

Last edited by superfury on 2016-07-26, 12:54. Edited 4 times in total.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 1 of 119, by superfury

User metadata
Rank l33t++
Rank
l33t++

A little update:

Filename
x86EMU_20150820_2009.zip
File size
343 KiB
Downloads
110 downloads
File comment
My latest x86EMU build (build 2015/08/20 20:09)
File license
Fair use/fair dealing exception

Optimized the CPU, VGA and MMU. It runs at 2-2.5MIPS at a 4GHz CPU. Windows 3.0 is booting pretty smoothly (from a 2.88MB floppy disk, made by installing it into Dosbox, stripping lots of unneeded files and making a bootable floppy and copy the files to the floppy image (and editing the config.sys&autoexec.bat to load only what's needed).).

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 2 of 119, by superfury

User metadata
Rank l33t++
Rank
l33t++

My latest build:

Filename
x86EMU_20150821_2029.zip
File size
366.23 KiB
Downloads
92 downloads
File comment
My latest x86EMU build (build 2015/08/21 20:29)
File license
Fair use/fair dealing exception

- Fixed emulator reset (from the BIOS opened with select during startup or runtime).
- Fixed emulator closing crash/hang. It will now close as soon as possible instead of crashing or hanging.
- Locked 8086 and 80186 clock speed to ~330KIPS ('80286' has no clock limit and runs at full speed).
- Fixed a bug in releasing the option ROMs (which caused the latest loaded ROM to remain in memory, instead of releasing it when resetting).

I forgot to mention this, but in all versions of x86EMU, you can also use the IBM chip ROMS and place them in the ROM directory (BIOSROM.u<INSERT CHIP PART NUMBER HERE>). The used ROMs for 8086/80186 are numbers 18&19. The used ROMs for 286+ are numbers 27&47.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 3 of 119, by superfury

User metadata
Rank l33t++
Rank
l33t++

My latest build:

Filename
x86EMU_20150824_2044.zip
File size
370.01 KiB
Downloads
89 downloads
File comment
x86EMU emulator (build 2015/08/24 20:44)
File license
Fair use/fair dealing exception

- Fixed various CPU-related bugs (timing, adlib detection, IN/OUT/INS/OUTS instructions with 16/32-bit access.
- Implemented basic IDE ATA-1 controller for emulated harddisks and CDROMs (you'll need a XT BIOS with PCI support to use it, the XT-IDE BIOS will hang when executing some commands not implemented ('manufacturer specific' according to the ATA-1 documentation)). Addressing using LBA (28-bit) or CHS (16-bit cylinder, 4 bit head, 8-bit sector number).
- Fixed Adlib overflow by clipping the values before sending it to the mixer. Adlib sounds correct now, instead of giving lots of noise.
- The BIOS now has an option to lock the CPU clock to 333MIPS. This is to allow some old games, like Castlevania, to run correctly (it will give a divide by 0 error when unlimited CPU speed is enabled). This setting can be applied before running the BIOS or booting(when not using a BIOS) only.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 4 of 119, by superfury

User metadata
Rank l33t++
Rank
l33t++

My latest build:

Filename
x86EMU_20150826_2051.zip
File size
386.63 KiB
Downloads
94 downloads
File comment
x86EMU build 2015/08/26 20:51
File license
Fair use/fair dealing exception

- ATA device further build (still incomplete, so hard disks won't work yet, unless with a strictly ATA-1 commands only BIOS/driver(without Vendor Specific commands)).
- Fixed BIOS external ROMs (u18/19 etc.) detection. These will now run, instead of causing a reset of the emulator (the internal emulator BIOS restarting itself).
- Fixed adlib emulation and optimized it.
- Optimized VGA planar shift mode.
- Optimized entire emulator and removed unneeded code.
- Made the IPS counter accurate.

It's apparently running at about 1MIPS, not 2+MIPS as it was saying until now. The Secret of Monkey Island will run (with Adlib or PC speaker, untested with MIDI), but it will run slowly (from a 2.88MB floppy using only disks 1&2. You might be able to use the full game by making another 2.88MB floppy with the other disks on it, should the game allow it.).

Please report if the emulator is working fine with floppy disk games or not. If it has errors, I want to fix them.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 5 of 119, by Stiletto

User metadata
Rank l33t++
Rank
l33t++

From the many support requests you've posted here, you should be calling this VOGONSEmu or something 🤣 (I kid, I kid...)

"I see a little silhouette-o of a man, Scaramouche, Scaramouche, will you
do the Fandango!" - Queen

Stiletto

Reply 6 of 119, by superfury

User metadata
Rank l33t++
Rank
l33t++

It's simply because I don't know if the emulator is working or not (nobody replies if it's working with any games, software etc.), so I keep asking for replies.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 8 of 119, by calvin

User metadata
Rank Member
Rank
Member

Nobody is going to do debugging for you unless your emulator is significantly interesting. (maybe it's first, maybe it's the fastest, maybe it supports a feature other emulators don't, etc.)

I guess you'll also want us to write the rest.

2xP2 450, 512 MB SDR, GeForce DDR, Asus P2B-D, Windows 2000
P3 866, 512 MB RDRAM, Radeon X1650, Dell Dimension XPS B866, Windows 7
M2 @ 250 MHz, 64 MB SDE, SiS5598, Compaq Presario 2286, Windows 98

Reply 9 of 119, by superfury

User metadata
Rank l33t++
Rank
l33t++

Well one thing that it supports (although the PSP version is currently broken (It's hanging when initialising the video support)), is a good Danzeff-inspired OSK and gaming mode(direct mapping of the PSP buttons (about 12 buttons) with full menu-based setup on the PSP (setting are changed while running the emulator). Also the keyboard is optimized for people when you know the position on the keyboard (Danzeff's is just alphabetically). So atm it's perfect for playing pure DOS games (up to 80186 with 1MB memory) on the PSP (286+ still in the making).

I'm working on making it faster and more accurate.

- The VGA emulation is also using the VGA settings for generating CRT output (Blanking, Active display, Retracing, Totals), so the output will be exactly as a normal screen should be (if it's within 1024x1024 constraints). Dosbox only gives you the active display.
- With Dosbox you'll need external tools/OS to use the MPU (it only passes through the MIDI commands). My emulator actually generates the output itself, using a soundfont (selectable in the BIOS before booting/starting the BIOS).
- It also supports a Dosbox-like BIOS (BIOS interrupts emulated, but not the DOS ones). You can also use normal BIOS files to boot (The u18&19 chips of a PC (XT), also the BIOSROM.BIN is supported (64k BIOS ROM)), which you can't do with Dosbox.
- The adlib emulation doesn't use lookup tables (like in the Adlib and Dosbox) to give output, but directly creates it itself during runtime (using formulas for the different signals, combining them together for the result. Also the adlib PCM generating mode is supported (freezing the signal and modifying output level to generate PCM samples). The percussion is still not done yet, but I'm planning to make it once I get the ATA-1 HDDs working with the XT-IDE Universal BIOS, so I can test bigger games (that can't fit on a floppy disk)).
- It can also create and convert to/from(&defragment (simply cleaning up unused sectors) in the case of my sfdimg files) both normal img disk images and my own SFDIMG(Which stands for Superfury Dynamic disk Image file. It's a format that is essentially a sparse disk image with a 2TB limit(Using 32-bit sector addressing). It has no compression supported (yet)).
- It also has a software debugger port (like port E9 hack from Bochs), with some extensions to detect(reading from port E9) and enable port EA(writing the string back to E9), which then has functions to do various things with the emulator. Atm only the quit debugger command is implemented. I'm planning to implement various functions to control the emulator (Specify port E9 hack output filename, List disk mounts, Get/Set disk mount, List soundfonts, Get/Set active soundfont, Terminate/Reboot application, Get/Set master volume. Any suggestions on this?).

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 10 of 119, by superfury

User metadata
Rank l33t++
Rank
l33t++

My latest version:

Filename
x86EMU_20150827_2256.zip
File size
342.71 KiB
Downloads
92 downloads
File comment
x86EMU build 2015/08/27 22:56
File license
Fair use/fair dealing exception

- Fixed IDE LBA updating and IRQs.
- Simplified locks for faster lookup.
- Fixed BIOS settings loading and added security to the loading process.
- Optimized CPU ModR/M retrieval.
- Optimized adlib.
- Optimized memory mapped I/O.
- Implemented output filename commands into the software debugger (for details, see the included softdebugger.txt).
- Optimized the entire emulator (including the VGA Sequencer).
- Disabled adlib feedback: This is giving problems with the sound atm.
- Enabled compiler optimizations once again to speed things up (previously would hang when compiled with optimizations).
- Fixed PIT timing and added accuracy to all PIT channels. Now games will run at the correct speed, instead of going very slow (tested with The Secret of Monkey Island using the Adlib emulation).

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 11 of 119, by Harekiet

User metadata
Rank DOSBox Author
Rank
DOSBox Author

should make static binaries, damn runtime requirements.

oh well vs 2015 runtime installed

It needs a nosound mode since I don't have a soundcard when running from remote desktop 😀

Reply 12 of 119, by superfury

User metadata
Rank l33t++
Rank
l33t++

My latest build:

Filename
x86EMU_20150828_1628.zip
File size
691.23 KiB
Downloads
95 downloads
File comment
x86EMU build 2015/08/28 16:28
File license
Fair use/fair dealing exception

- Disabled invalid port logging.
- Made x86EMU standalone.
- Simplified adlib emulation and disabled the feedback that's still not working, to get decent sound (tested with The Secret of Monkey Island).

Can someone please verify if it's running without the Visual C++ 2015 runtime? I only have computers that have it installed (together with Visual Studio Community).

Does a no sound mode really have a purpose? It will only disable the rendering thread, which does practically nothing most of the time (it takes only a maximum of 5% of the CPU time on a 4GHz CPU as far as I can see).

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 14 of 119, by superfury

User metadata
Rank l33t++
Rank
l33t++

Hmm. Anyone knows why this happens? I've switched the build from Multi-threaded DLL to Multi-threaded and enabled MFC static linking. It works fine here. Anyone knows if SDL has problems with this setup? I've used this on the SDL, SDL_main, SDL_gfx and my emulator itself(rebuilding all of them in that order from source (SDL 1.x)).

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 15 of 119, by superfury

User metadata
Rank l33t++
Rank
l33t++

This is my latest version:

Filename
x86EMU_20150831_1023.zip
File size
547.95 KiB
Downloads
90 downloads
File comment
x86EMU build 2015/08/31 10:23
File license
Fair use/fair dealing exception

- The audio device problem should have been fixed (reverted changes to dynamic linking with Visual Studio 2015 redistributables.
- You'll need to install the Visual Studio 2015 redistributable to use the application.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 16 of 119, by superfury

User metadata
Rank l33t++
Rank
l33t++

My latest build:

Filename
x86EMU_20150905_1605.zip
File size
342.97 KiB
Downloads
87 downloads
File comment
x86EMU build 2015/09/05 16:05
File license
Fair use/fair dealing exception

- Fixed bugs in quitting the application.
- Changed BIOS ROM and VGA to listen to the full memory address space (allowing all memory to be responded to).
- Fixed timer divide by 0 errors. It can now handle high frequencies on the timers, instead of crashing when timing becomes faster than 1us intervals.
- Enabled and fixed adlib feedback algorithm. Optimized adlib rendering.
- Changed the Direct Input mode so that only the middle mouse button can release the Direct Input mode when it's enabled with the middle mouse button. When enabled using both mouse buttons, the direct input mode can be released by pressing both mouse buttons and by pressing the middle mouse button.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 17 of 119, by superfury

User metadata
Rank l33t++
Rank
l33t++

My latest build:

Filename
x86EMU_20150906_2043.zip
File size
342.97 KiB
Downloads
113 downloads
File comment
x86EMU build 2015/09/06 20:43
File license
Fair use/fair dealing exception

- Added OPTROM flashing option (as a Atmel AT28C54B EEPROM chip) for using with the XT-IDE Universal BIOS.
- Added working harddisk support (tested with the above BIOS). When configuring the BIOS (and flashing it), simply use the automatic configuration and set the default boot drive to 0(Floppy disk), then flash it to use it.
- Improved Adlib emulation. It's now more accurate with working feedback.
- Improved PIT timer.
- Fixed shutdown problem when trying to enter text (when generating static/dynamic disk images).

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 18 of 119, by Jepael

User metadata
Rank Oldbie
Rank
Oldbie

I managed to compile and run it under 64-bit Linux! (And only got 384 warnings after making the compiler not to complain about everything. It was something like 539 warnings before..)

I noticed the makefile is useless on Linux, and I was lazy so I imported the files into a new Code::Blocks project file.
I had to change some include file names because they were in uppercase in source code but lowercase files on disk.
Also some includes to get SDL libraries imported from correct place (system global, not local project).
SDL_rotozoomer was not in my SDL library so I just downloaded the source code and added to project and it was OK.
Final issue was some fopen64 problem, you have a library that implements a custom version of fopen64, but Linux has it natively in standard libraries. But I could not omit the file library, as it has some fseek64 kind of functions which are used by the code, but these do not exist in the standard libraries, as files opened with fopen64 are just normally used with fseek like normal files. (What good is 64-bit file access in an emulator that barely supports a 32-bit CPU 😀.
Anyway, let me know if you are interested in the changes, but they might break windows/psp compilation as I just assumed that all non-standard weirdness is coming from Windows and so left them out with #ifdef _WIN32.

Now, I need a manual how to use this. (And all my boot floppy images exist on my previous PC..) How do I boot this thing? I got a beep already..

Reply 19 of 119, by superfury

User metadata
Rank l33t++
Rank
l33t++

Edit: moved the content to the wiki.

Last edited by superfury on 2015-09-09, 23:02. Edited 2 times in total.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io