• Please review our updated Terms and Rules here

NES/other console emulators on an 8086..?

Raven

Veteran Member
Joined
Mar 7, 2009
Messages
2,752
Location
DE, USA..
I'd like to emulate a NES on my 8086 desktop. It is a 9.somethingMhz 8086, and the nes is a 1.somethingMhz.. Z80 is it? Anywho, I think that a factor of 10 is enough so that an emulator could exist, does it? I couldn't locate one.
 

Fallo

Experienced Member
Joined
Jan 2, 2009
Messages
432
I'd like to emulate a NES on my 8086 desktop. It is a 9.somethingMhz 8086, and the nes is a 1.somethingMhz.. Z80 is it? Anywho, I think that a factor of 10 is enough so that an emulator could exist, does it? I couldn't locate one.

The NES uses a customized 6502 clone that runs at 1.79 Mhz.

The reason you couldn't find an emulator is because there is no way that an 8086 is powerful enough to emulate an NES. You'd need a 386 minimum.

General rule of thumb is that a given system must be at least 10 times more powerful than the system it's emulating. As I said, you'd need a 386 to emulate most 8-bit systems, and 16-bit systems like the Amiga would require at least a Pentium.
 

carlsson

Veteran Member
Joined
Jul 30, 2003
Messages
6,275
Location
Västerås, Sweden
Even a 80386 isn't enough if you want to emulate another system, at least not anywhere near full speed. Perhaps if you're satisfied with advanced higher-level simulation. Possibly you can get the core of a 6502 CPU emulator running cycle exact on a 33 MHz 80386DX.

Consider most of the precise NES emulators stutter on a 200 MHz PC, possibly even 500 MHz unless you reduce the frame rate and turn off some of the features.
 

barythrin

Veteran Member
Joined
Oct 5, 2005
Messages
6,256
Location
Texas
Ditto on the previous answers. Not 100% sure why but emulating another system (maybe because it has to emulate cpu, video and sound, etc not just cpu?) seems to take an exponential amount of computing power that I've never seen practical. Even the Playstation emulators (I only used them in their early years and both teams seemed to drop production and/or get sued by Sony (bleem)) but they were slow too even on new (at the time) hardware.

So the actual problem you'll probably find is I'm not sure anyone was trying emulating those systems during that era, so the programs written now are all compiled for newer processors and opcodes. If one was written in compatible assembly it might be tryable though. So despite it being slow, check a few programs out. Nesticle was written in pure asm I believe by Bloodlust Software, not sure who else was out there as I haven't been prevalent in the scene for a while. Perhaps someone made theirs open source or maybe some plugin for MAME, etc might have their code out there you could compile and try.

I'd be interested to see what happens :) *on a side note didn't someone here overclock the ever loving crap out of a z80? I remember folks asking how the test was done/rated but don't remember who or what the conclusion was.
 

per

Veteran Member
Joined
Jan 21, 2008
Messages
3,006
Location
Western Norway
Even a 80386 isn't enough if you want to emulate another system, at least not anywhere near full speed. Perhaps if you're satisfied with advanced higher-level simulation. Possibly you can get the core of a 6502 CPU emulator running cycle exact on a 33 MHz 80386DX.

Consider most of the precise NES emulators stutter on a 200 MHz PC, possibly even 500 MHz unless you reduce the frame rate and turn off some of the features.

I wrote an emulator for the Kenbak-1 once, however, it runs too slow on anything below 25MHz, and too fast on anything above 33MHz.

It's pretty slow compared to the original when run on an 8088.
 

carlsson

Veteran Member
Joined
Jul 30, 2003
Messages
6,275
Location
Västerås, Sweden
In the case of Kenbak, I have a feeling there is no custom hardware apart from the CPU to emulate? Well, perhaps a few switches and lights. :-D
 

per

Veteran Member
Joined
Jan 21, 2008
Messages
3,006
Location
Western Norway
In the case of Kenbak, I have a feeling there is no custom hardware apart from the CPU to emulate? Well, perhaps a few switches and lights. :-D

Yea. What it emulates is the memory, full instruction set (including the two-byte NOOP code), and front-panel (except the on/off switch) with the keyboard as input. I didn't try to emulate the spesiffic hardware or the serial data-steam architecture.

It was mostly a project I did to practice my skills in x86 assembler-programming. I actually added some additional features too. A "quicksave" feautre with 10 different save-slots, and a function to display the entire memory (pluss the address register) in octal data on the screen at any time durning runtime.

When running it on a 8088, the speed difference between displaying the memory and not displaying the memory is enormous!

In addition, I actually made contact with Mr. Blankenbaker himself to make sure the emulation of the front panel was as accurate as possible.
 
Last edited:

Mike Chambers

Veteran Member
Joined
Sep 2, 2006
Messages
2,621
if there is a DOS emulator compiled to run totally in 16-bit real mode, sure you can emulate the NES on an 8086. that's assuming that you don't mind 1 frame per minute.
 

swaaye

Member
Joined
Jun 4, 2009
Messages
26
I just got done trying to get SNES emulators running well on a Pentium II 233 notebook. Close but no cigar. It works but you are in for some chops and stutters.

NES emulation is obviously less demanding, but it'll never ever happen on something that old. I would imagine that a Pentium is probably needed to do it well.

You have to realize that emulation of a console is more than just about its CPU. You are trying to duplicate the functions of everything. RAM, instruction sets, quirks, hacks, audio, video, inputs, etc. There's nothing trivial about it.
 

Mike Chambers

Veteran Member
Joined
Sep 2, 2006
Messages
2,621
I just got done trying to get SNES emulators running well on a Pentium II 233 notebook. Close but no cigar. It works but you are in for some chops and stutters.

NES emulation is obviously less demanding, but it'll never ever happen on something that old. I would imagine that a Pentium is probably needed to do it well.

You have to realize that emulation of a console is more than just about its CPU. You are trying to duplicate the functions of everything. RAM, instruction sets, quirks, hacks, audio, video, inputs, etc. There's nothing trivial about it.

nesticle is able to emulate the NES in DOS with a high-end 486, but that's the limit.
 

Vlad

Moderator
Joined
Jul 3, 2005
Messages
2,241
Location
United States
The last time I used a NES emulator was on my old Thinkpad which was I THINK (no pun intended) a 133 MHz P1. It ran fine but I don't recall what software was used.
 

carlsson

Veteran Member
Joined
Jul 30, 2003
Messages
6,275
Location
Västerås, Sweden
It may also depend on which application (game) you run inside the emulator. Some are more basic than others, not really depending on perfect timing.
 

Raven

Veteran Member
Joined
Mar 7, 2009
Messages
2,752
Location
DE, USA..
Yeah that's a good point, I was only thinking about the CPU.

What's a DOS-compatible NES emulator then for my Pentium box? I tried a few I found and none worked for me.
 

barythrin

Veteran Member
Joined
Oct 5, 2005
Messages
6,256
Location
Texas
I haven't played with them in years but my friends and I settled on nesticle for nes. I don't recall any issues with it and it's fairly advanced feature wise including tcp/ip multiplayer abilities and some debugging tools to speed things up or edit whatever (turn frames on/off, turn off layers, etc).

http://www.emulator-zone.com/doc.php/nes/ has another one mentioned "fwnes".

I remember zsnes for super nintendo was our favorite although later on the windows compiled Win9xsnes or something was cool for TCP play.
 

Fallo

Experienced Member
Joined
Jan 2, 2009
Messages
432
I haven't played with them in years but my friends and I settled on nesticle for nes.

On most of the NES emulator screenshots I've seen, the colors are wrong. In particular, Nesticle is way off. The NES palette is difficult to get right because it's based on NTSC values rather than RGB.

I remember zsnes for super nintendo was our favorite although later on the windows compiled Win9xsnes or something was cool for TCP play.

I've never really used a console emulator, but I have used C64 emulators before. In particular, my 133 Mhz Pentium wasn't fast enough to handle anything above VICE 1.7.
 

creepingnet

Veteran Member
Joined
Feb 25, 2005
Messages
1,058
Location
Sparks, NV
Ah, Emulation, here's my experiences....

ANYTHING lower than a 486 DX2-66 with all but the most sparse and featureless of emulators tends to be choppy, slow, and lacking in performance. System Memory is ALSO important.

The lowest I've gone is NESticle on a 486 DX/2 66 running MS-DOS 6.22, with sound. That was years ago using NESticle x.xx. I had full frame rate, and full sound on an IBM PS/Valuepoint with a DX/2, on 8MB of RAM.

The best experience at the lowest for me is a 486 DX4-100 with a decent sound card, and NESticle x.xx and LoopyNES beta to choose from running on a good SVGA graphics card with a good amount of VRAM (at least 1MB). NESticle is better, but LoopyNES will run things NESticle won't for some reason in certain memory hungry situations, like Dragon Warrior III, or Dragon Warrior IV on a system with a lot of resources being hogged.

NES Emulation got good for me on the Pentium level, with NESter. I had NESter and NNESterJ, and NESter was the best though it lacked Game Genie support :/

For the past few years, I've been running FCEU and FCEUx on my 500+ MHz boxes, and that Emulator has been the best thus far, with the most accurate emulation, a proper Game Genie emulation, smooth scrolling (thanks to having NVIDIA GeForce cards in all my 500+ MHz boxes). Now I run FCEUx on my Pentium D with 4GB of RAM, I can literally RECORD my games at full frame rate using screen capture software.

Atari 2600 emulation is even worse. On a 486 DX4, expect at least a 10% slowdown, if not more, and for games like Pitfall II, forgettaboutit', it'll run like molasses in January.

SNES Emulation, I had it running in a "playable" state on a 486 using a very old command-line driven SNES emulator, but things did not get good till I finally started using a 500+ MHz Machine with a decent amount of RAM, and SNES9x.

However, I'd LOVE to see someone try and emulate an NES on a CGA 8088 computer, the graphics sprites are could very well be possible being as the NES uses only 4 "colors" for each sprite out of the total pallet. The problem lies more in graphics speed and the ability to process multiple streams of data at once that create the "virtual machine" so to speak. A NES Emulator does more than just run code, it converts the I/O to work with standard PC Peripherals, changes the video to look as accurate as possible, controls all NES-type memory operations, plays back sound, and all the other things. That's why an 8088 based emulator is at least next to impossible in practice.
 

Fallo

Experienced Member
Joined
Jan 2, 2009
Messages
432
However, I'd LOVE to see someone try and emulate an NES on a CGA 8088 computer, the graphics sprites are could very well be possible being as the NES uses only 4 "colors" for each sprite out of the total pallet.

I think it would be easier to port NES games to the PC rather than trying to emulate them. Imagine SMB or Zelda in CGA...

Of course, a lot of NES games (mainly arcade titles) were available on the PC, although the quality of them was often not very good (eg. Bad Dudes).
 

Trixter

Veteran Member
Joined
Aug 31, 2006
Messages
7,339
Location
Chicagoland, Illinois, USA
The only usable emulator I ever ran on an 8086 was the Apple II emulator "Applemu". It took almost a minute to boot, so you might think it is frozen, but if you wait long enough it loads and is surprisingly usable. I remember putting in 10-line basic programs that were half POKES (ie. little demo graphical things) and they ran just fine, about 2-3x slower than the real thing.

The first Williams Arcade Classics package was one of Jeff Vavasour's early works and half of the games (including Sinistar) run pretty well on a 386-25. One of the ways Jeff cut down on the emulation requirements was to write emulation for the sound hardware, use it to generate all of the sounds the game produced and storing the output as 8-bit samples, then only playing back the samples when a particular sound event was triggered. The end-user experience was the same, but was one less IC to emulate while the game was running.

There was another very early arcade emulator (I want to say 1996 or so) that ran pac man, galaxian, and a few others comfortably on a 386-25 as well. I don't recall the name, sorry.

I also recall running a full-frame Atari 2600 emulator ("PCAE") on a 486 without too much difficulty. (PCAE, btw, was the first emulator to add code that emulated some additional hardware found in carts, like Pitfall II. I don't know if other emulators have added that code yet, but it was a really big deal in the 1990s that only one emulator could run Pitfall II...)

Nesticle runs just fine on a 486-66, and runs acceptably on a 386-40 if you skip frames. The guy who wrote nesticle also wrote a sega genesis emulator that, while not perfect, also runs on that class of hardware.

For most people, 100% emulation is usually a requirement, and for that, the rule of 10X original system speed still holds. However, most emulators today are written for portability, so you need 20X for decent results.
 
Last edited:

Trixter

Veteran Member
Joined
Aug 31, 2006
Messages
7,339
Location
Chicagoland, Illinois, USA
Atari 2600 emulation is even worse. On a 486 DX4, expect at least a 10% slowdown, if not more, and for games like Pitfall II, forgettaboutit', it'll run like molasses in January.

Must not have been using PCAE. Try that sometime.

However, I'd LOVE to see someone try and emulate an NES on a CGA 8088 computer, the graphics sprites are could very well be possible being as the NES uses only 4 "colors" for each sprite out of the total pallet.

Well, the colors would look universally terrible, but aside from that, the 8088 needs 4 cycles per memory access and CGA video memory requires a wait state -- the end result would be unusably slow.
 
Top