Page 1 of 2

Anything reasonably new in emulation ?

Posted: Sun Jun 14, 2009 12:34 pm
by Coldberg
is there anything reasonably new (research wise) happening in emulation ? i was kind of wondering that cause i'm planning what to do for my bachelors project and an emulator would be cool but i don't think it'd pass as something reasonably new cause it's been done to death already. What do you guys think ?

Posted: Sun Jun 14, 2009 7:04 pm
by Near
Nemesis is doing a lot of neat stuff with multi-threading emulators.

sinamas has mentioned some other novel approaches, but I don't know if anyone has actually tried them out. The idea is to keep a timestamped log of writes, so the other chip doesn't have to sync up, but it can still get the correct value.

There's tons of research going on in the virtual machine area, but that stuff is boring to me. Too limited :/

Posted: Sun Jun 14, 2009 10:46 pm
by Hangin10
I've yet to come across a good emulator for Linux. At the moment I'm reduced to using the free version of iNES. All the emulators for Linux (the ones that I've seen anyhow) use raw X for UI. Nobody likes GTK?

And before anyone says "well why don't you write one?", I am writing one, but I have severe doubts about my programming skill. At some point, perhaps I should give up and port Nintendulator. I haven't looked its source, but hopefully I can strip it down a lot so that I can have it use GTK and render to a Cairo surface.

All I need from an emulator is menus for Open, Close, Run, Pause, Stop, Reset, and key configuration. On windows Xbox 360 controller support would be nice, and on linux user-space drivers for the same controller makes it so specific support isn't even necessary to use them.

Hopefully I don't fail :oops: , and I'll have the same code portable to both x86 Windows and Linux. :)

Posted: Mon Jun 15, 2009 6:26 am
by tepples
Hangin10 wrote:I've yet to come across a good emulator for Linux. At the moment I'm reduced to using the free version of iNES. All the emulators for Linux (the ones that I've seen anyhow) use raw X for UI. Nobody likes GTK?
There's some FCE Ultra stuff in Ubuntu's repository, including what appears to be a Gtk+ based front-end. It's no Nintendulator, but it beats iNES. I use it for basic testing of algorithms when I'm coding on my laptop at someone else's house.

Posted: Mon Jun 15, 2009 8:45 am
by Hangin10
I think I have that. It let's you pick the rom using the file chooser, configure video and (which doesn't seem to function) controllers, and then hit Execute to get that same plain window with no functionality to it (besides the game itself with whatever controls it decided to use). I admit I have not RTFM'd yet, so I could be doing something wrong with the control configuration.

EDIT: I didn't even think to try the Windows version in Wine. It seems to run perfectly. Woohoo!

Posted: Mon Jun 15, 2009 2:12 pm
by Coldberg
but still i need some hooking point to make it a feasable bachelors project

Posted: Mon Jun 15, 2009 2:41 pm
by Memblers
If I wanted to write an NES emulator that would seem impressive, but be relatively easy to make, I'd make it for SNES. :)

But if I wanted to write one that would actually be impressive, I would do it on a small microcontroller, and also generate the video so it can hook right up to a TV.

Posted: Tue Jun 16, 2009 5:04 pm
by Near
A very limited, barely functional NES emulator @ 30fps via SNES with an SA-1 co-processor and a ton of BW-RAM may in fact be a possibility. Double-clock the SA-1 if needed. Even audio could be simulated to a small extent by using the S-SMP to simulate parts of it.

The absolutely major problem would be trying to re-map MMIO registers for the PPU. Best bet would probably be static recompilation of code, replacing MMIO writes with brk / cop #nn interrupts. Timing would be out, you'd have to hope you're running faster than the real thing and the game isn't timing sensitive.

I would say to over-ride DBR and then use the main CPU to monitor a section of BWRAM and execute any "MMIO writes" it observes, but detecting when the game writes the same value twice would not be possible.

Posted: Wed Jun 17, 2009 2:41 am
by mic_
Even audio could be simulated to a small extent by using the S-SMP to simulate parts of it.
Well, as you probably know, Memblers already wrote an NSF player for SNES years ago: http://www.youtube.com/watch?v=cHPgbuM3Yo8

Posted: Wed Jun 17, 2009 6:09 am
by cpow
mic_ wrote:
Even audio could be simulated to a small extent by using the S-SMP to simulate parts of it.
Well, as you probably know, Memblers already wrote an NSF player for SNES years ago: http://www.youtube.com/watch?v=cHPgbuM3Yo8
Ok that's pretty cool but can someone tell me what I'm looking at? What is the menu? How are the overlay gfx done? Neat stuff...

Posted: Wed Jun 17, 2009 7:14 am
by mic_
You can get the ROM and check it out for yourself.

Posted: Fri Jun 19, 2009 1:25 pm
by 17daysolderthannes
don't know if this would qualify, but I for one would really appreciate if someone made a decent P2P netplay chatroom like 2DF is for arcade ROMs (www.2dfighter.com). As it is now, all the netplay I'm aware of is direct connect to an IP address you already know, making it a chat room so you could just buddy up with someone across the world and charge through Contra or go all out in a head to head match of Mario Bros. would be awesome.

If that doesn't strike your fancy, how about ANYTHING for the Mac. There's a port of Fusion now, but it doesn't even support ISO Sega CD games yet. Saturn, PSX, and N64 are total garbage at the moment.

Posted: Fri Jun 19, 2009 2:15 pm
by Memblers
byuu wrote: The absolutely major problem would be trying to re-map MMIO registers for the PPU. Best bet would probably be static recompilation of code, replacing MMIO writes with brk / cop #nn interrupts.
Static recompilation, that's exactly it. I figure any non-native writes could be replaced with JSR to the appropriate bit of translation code (or BRK as well). Also timed code, sprite zero, etc. I believe would be doable pretty easily, by counting SNES scanlines and using that as an index into the buffer of the scroll settings for every scanline.

Since SNES isn't much faster than NES though, too many updates in one frame could pile up faster than can be handled.

Posted: Sun Jun 21, 2009 1:58 pm
by Coldberg
17daysolderthannes wrote:don't know if this would qualify, but I for one would really appreciate if someone made a decent P2P netplay chatroom like 2DF is for arcade ROMs (www.2dfighter.com). As it is now, all the netplay I'm aware of is direct connect to an IP address you already know, making it a chat room so you could just buddy up with someone across the world and charge through Contra or go all out in a head to head match of Mario Bros. would be awesome.

If that doesn't strike your fancy, how about ANYTHING for the Mac. There's a port of Fusion now, but it doesn't even support ISO Sega CD games yet. Saturn, PSX, and N64 are total garbage at the moment.
That's a pretty awesome project idea by itself but i need it to sound scientific research sort of

Posted: Sun Jun 21, 2009 8:07 pm
by Memblers
How about: A Scientific Study of the Effects of Cosmic Radiation on Videogame Consoles (AKA Why The Title Screen Music Changes on Excitebike).

Ah, I'm no help.

Actually another interesting thing (to me) in emulation has been recreating the old chips with FPGAs, and emulating the system that way.