VOGONS


First post, by eugeneeugene123

User metadata
Rank Newbie
Rank
Newbie

Hello!
I would like to introduce my x86 emulator “Espejo”. I am focused on mobile platforms with ARM processors like Android and IOS, but desktop (Windows, x86) version also exists. The reason why I started this project is that current emulators for mobile platforms are slow (resource-demanding games like MDK or Quake are almost unplayable), require lots of configuration and do not have customizable on-screen controls. Right now my emulator has following features:

  • Cycle-precise 8086 core with 8087 FPU
  • Precise 80286 core (interpreter). Fully written in ARM assembly. On ARM processors speed is almost equal (5-10% difference) to DOSBOX recompiler (measured by speedtst.com program recommended by DOSBOX developers).
  • Much faster 80286 core (recompiler). On ARM processors only (Android). On my Android device runs 3-5 times faster than Dosbox dynamic core, 8-15 times faster than bochs.
  • Adlib, PC speaker, MPU 401, Disney Sound Source emulation
  • Joystick support
  • Customizable on-screen controls

I am finishing 80386 emulation and fixing bugs in VGA emulation, hope that in a short time will post version which will potentially support almost every DOS game (bug fixes can take lots of time). Sound Blaster emulation is also planned as it is not done yet (Adlib is supported).

I am attaching "Moonbugs" game image disk with my emulator. This game is rather interesting because it runs in 160x100 16-color undocumented text mode, so it has 16 colors on CGA adaptors. I had no luck running it in bochs (no sound, lags), qemu, pcem(freedos does not boot) or fake86(shows only top quarter of screen). DOSBOX runs it after selecting machine=cga and setting proper cycle count. But it is not ideal, as requires configuration and still emulation is not cycle-exact.

Attachments

  • Filename
    moonbugs (predefined boot.img).zip
    File size
    1.29 MiB
    Downloads
    30 downloads
    File comment
    Moonbugs game, demo version (single file apk)
    File license
    Fair use/fair dealing exception
  • Filename
    recompiler (Android).7z
    File size
    3.27 MiB
    Downloads
    67 downloads
    File comment
    Dynamic recompiler (cga)
    File license
    Fair use/fair dealing exception
  • Filename
    moonbugs_demo.7z
    File size
    4.07 MiB
    Downloads
    74 downloads
    File comment
    32-bit trial Windows version
    File license
    Fair use/fair dealing exception
  • Filename
    moonbugs.zip
    File size
    3.83 MiB
    Downloads
    76 downloads
    File comment
    Android (armv7) trial apk
    File license
    Fair use/fair dealing exception
Last edited by eugeneeugene123 on 2023-09-03, 06:35. Edited 4 times in total.

Reply 1 of 5, by UselessSoftware

User metadata
Rank Newbie
Rank
Newbie

Is it possible for us to compile from source?

This sounds like a promising emulator.

After you said Moon Bugs doesn't work in all those other emulators, it made me curious about my new emulator too. It works if I start it with the CGA adapter module instead of VGA. Does it fail on real VGA cards?

Reply 2 of 5, by LightStruk

User metadata
Rank Member
Rank
Member

Speaking as someone who has written an emulator, kudos on making an emulator of a complicated machine that actually runs some real software.

Are you using Nuked OPL3 for your Adlib emulation? Nuked is the gold standard for accuracy.

Does your MPU-401 implementation just pass the MIDI along to the host's MIDI synth?

There were plenty of games that required a 486, but that might just be a speed thing. You already have the FPU / 8087. The 486 only adds a few instructions, same with Pentium 1, so if you find software that uses those instructions then it's easy to add. I don't think any DOS games actually required MMX, right?

Once you have CGA, EGA, and VGA fully emulated, then you'll need at least a couple of the high-res SVGA / VBE modes, like 640x400 and 640x480. For example, Warcraft II uses 640x480x8bpp IIRC.

Finally, supporting EVERY DOS game means supporting the vendor-specific 3D APIs like 3dfx Glide and Rendition Speedy 3D. Honestly, if I were you, I wouldn't bother, because nearly every game that did use those APIs has a better port on Windows that uses OpenGL or Direct3D.

Reply 3 of 5, by eugeneeugene123

User metadata
Rank Newbie
Rank
Newbie

I had some problems little related to the emulator itself, so after a long delay I am posting here a new version. Also I succesfully uploaded my first application to Samsung App Store (I have not got Google Developer account to post it on Google Play). It is Digger game, 100% compatible with original DOS version, unlike all other Android versions. It is free to download, launches instantly.

Reply 4 of 5, by eugeneeugene123

User metadata
Rank Newbie
Rank
Newbie

Recompiler version attached(3-5 times faster than dosbox dynamic core, 8-15 times faster than bochs on my Android phone). Both versions can be downloaded from http://151.106.113.13 (will be updated)

Reply 5 of 5, by VileR

User metadata
Rank l33t
Rank
l33t
UselessSoftware wrote on 2020-07-15, 17:03:

After you said Moon Bugs doesn't work in all those other emulators, it made me curious about my new emulator too. It works if I start it with the CGA adapter module instead of VGA. Does it fail on real VGA cards?

Yes it does. VGA isn't register-compatible with CGA, so modes/functions that aren't supported in BIOS won't work correctly, and this game is one example.
BTW, it does run correctly in PCem/86box, as long as you don't try to boot an arbitrary OS that lacks proper 8086 support in the first place. 😉

LightStruk wrote on 2020-07-15, 19:01:

The 486 only adds a few instructions, same with Pentium 1, so if you find software that uses those instructions then it's easy to add.

Worth keeping in mind that even if the instruction set didn't expand very much, the 386/486/Pentium 1 are quite different internally in terms of cycle counts etc. (not to mention caching), so making those cores precise is a different story.

[ WEB ] - [ BLOG ] - [ TUBE ] - [ CODE ]