Bookmark and Share

As I've said on many occasions RetroCopy was designed from the start to be multicore/multiCPU friendly. Designing complex multithreaded applications like RetroCopy is quite difficult though.

Whilst adding all the new filtering code I had issues with sound generation in RetroCopy, there were hisses and pops when I was enabling some of the more CPU heavy filters. This shouldn't happen in RetroCopy because the VIDEO and AUDIO are run in their own threads, and they have almost no interaction.

I have been neglecting some of the core work in RetroCopy because it's quite complicated and time consuming working on multithreaded code. But I decided enough was enough, I went into the trenches and reorganized and recoded a big part of it. I've moved nearly all of the windows specific code into their own neat little sections and moved all the non platform specific code into the emulator core. This will help me out later when I make the MAC/LINUX/etc ports.

The issue I was having with sound generation is one that happens when the framerate drops below the refresh rate. The video thread was tying up the audio thread on something it shouldn't be waiting on, so I had to work out a new way of spitting out video updates. I never really saw this behaviour because my CPU is quite fast, however I'm sure this would have caused audio issues for some people in the 3D room. Now I've streamlined the core to make it more snappy, and even if you have a graphics filter which is making you run at 10FPS, the audio should be perfect.

There is one more thing I need to change with the core and that is how input is done. I want input to be in its own thread too instead of tied to the video refresh. This is a little more complicated but I hope to have it completed by tonight. I basically want the input thread to be updated at a ridiculous rate (roughly 250 times a second) so that regardless of the video refresh rate you have a nice input feeling.

Finally here is the new options window that pops up when you press ESCAPE whilst running a game (still being worked on). It allows you to adjust some graphics options and do various other things. I must say with all the changes I've done RetroCopy is starting to resembling a pretty polished application/game/emulator. ;)


Bookmark and Share

8 responses to Multi Core - Multi Thread - Multi Problem

Sasha wrote:

7/30/2010 4:46:10 AM

Great, i ready for testing and researching sound engine. ;)

DiDaDo wrote:

7/30/2010 8:04:25 AM

Wow, how can you keep this on going, respect!!

Waxonator wrote:

7/30/2010 2:29:12 PM

Wow, this emulator certainly has the most filters. That's for sure.

Very professional! :D

maux wrote:

7/31/2010 2:47:22 AM

my first prio everyday when starting my computer is to check RC´s progress...and everytime there´s a new repport in the blog i´t gives an extra kickoff start to the day...RC even made me buy separate usb controllers for every system and hook my computer to my old 29CRT tv (looks awsome i can tell)
/proud retrofreak :)

RetroRalph wrote:

7/31/2010 3:15:14 AM

Thanks for the support guys.

@maux - I'll be adding joystick control of the interface one of these days so you can sit-down on couch and use all of the features without needing keyboard or mouse.

maux wrote:

7/31/2010 5:31:32 AM

three cheers for big R!!! :)

DiDaDo wrote:

8/2/2010 7:40:49 AM

What's the difference between "HQ" and "HQ fast"??

RetroRalph wrote:

8/2/2010 10:02:49 AM

A bit less smoothing than the non fast version that isn't really noticeable, with the benefit being it's quite a bit faster.

Add Comment
RetroCopy : Modern and accurate emulator for Sega Megadrive,SMS,NES,GG,Arcade and more!
  |   Copyright RetroCopy © 2010   |   Privacy Policy   |   End User License Agreement