Page 1 of 2

SVN470 Download & Infos

Posted: Fri Mar 28, 2008 6:28 pm
by spacy51

Download Link:

http://visualboyadvance-m.googlecode.com/files/VisualBoyAdvance470.7z

 

DLL package:

http://visualboyadvance-m.googlecode.com/files/dll.7z

 

 

Changes:

  • Direct3D + Pixel Filter now profits from multi-core CPUs

 

 

The number of threads to create is detected automatically on first run or when the option is not present or invalid in the ini.

To manually change the number of threads to create, change the value after "maxCpuCores" in the ini file.

 

Big thanks go out to chrono for making the asm filters thread safe.

 

 

It would be great if someone with a quad-core or octa-core PC could post some benchmarks for different thread numbers. HQ2x/3x/4x filters are most interesting.


SVN470 Download & Infos

Posted: Fri Mar 28, 2008 9:58 pm
by Squall Leonhart

Spacy, an integer divide by zero crash occurs when trying to load a rom using D3D + Filtering.


SVN470 Download & Infos

Posted: Sat Mar 29, 2008 9:53 am
by LazerTag

I have a Q6600 CPU I'd be happy to post some benchmarks, but not sure how to perform it or what game works best at whcih part, etc.. etc.. ?

 

 

If you can let me know I'll report back for you. Nice job with VBA btw. I had not even realized until this morning that work continued on it by anyone. nice surprise.


SVN470 Download & Infos

Posted: Sat Mar 29, 2008 12:51 pm
by spacy51

Use Direct3D & enable speed info message. Disable VSync, Throttle, Frame Skip, Triple Buffering & Audio Sync.

I recommend a static image in any game, for example a title screen or an ingame scene, sothat the emu core does the same amount of work all the time.

 

Select for example the HQ4x filter and write down the average fps.

Then close the emu, open the ini and decrement the value behind maxCpuCores.

Start VBA again and write down the average fps you get now.

 

It would also be interesting to see the total amount of CPU power VBA uses (look in the Task-Manager). The higher the percentage, the more does VBA make use of all your cores. 100% is ideal, 100%/NCORES is worst case (app only uses one core).


SVN470 Download & Infos

Posted: Sat Mar 29, 2008 7:00 pm
by LazerTag

It's kind of hard to gauge an average as it simply jumped to much. I'm just giving the lowest I would see and the highest in each test.

 

HQ2x, HQ3x, and HQ4x all seemed no different in numbers. And not once did it use more than 25% of the CPU no matter what number of cores I used.

 

Advance Wars 2 on the first battle scene of training

 

1 core - 355% to 375%

2 core - 370% to 375%

3 core - 375% to 400%

4 core - 375% to 400%

 

 

Completely impossible to play like this, lol.


SVN470 Download & Infos

Posted: Sun Mar 30, 2008 12:06 am
by Squall Leonhart

yes, well, while it works on multicores, its going to bork on single and hyperthreaded cores.


SVN470 Download & Infos

Posted: Sun Mar 30, 2008 9:27 am
by spacy51

I just uploaded a patch for it. It can only be caused if your CPU returns 0 as the number of CPU cores. Probably a behaviour of single core CPUs? I also restricted the maximum number of core to use to 16, since image Quality might get worse if more cores are used.

 

 

@Squall:

Until the next binary is released, you should manually set the value in the ini file.


SVN470 Download & Infos

Posted: Sun Mar 30, 2008 10:20 am
by Squall Leonhart

indeed, on all systems the first core is 0, second is 1, and so on.

 

if you look at CPU Affinity it confirms this [img]<fileStore.core_Emoticons>/emoticons/tongue.png[/img]/emoticons/tongue@2x.png 2x" width="20" height="20" />

 

argh, since this sites playing up a tad,

 

a use multithreading tick box in the filters section would go down well, its strange, since multicore cpu's also return the first core as Core 0. most apps just read it wrongly as core 1, theres only a few apps which actually do report it right, windows task manager being one of them.


SVN470 Download & Infos

Posted: Sun Mar 30, 2008 10:28 am
by chrono

Code: Select all

int VBA::detectCpuCores()
{
       int CPUInfo[4];

   __cpuid( CPUInfo, 1 );

   int processor_count = ( CPUInfo[1] & 0x00FF0000 ) >> 16;

   // some CPUs probably do not support this instruction properly
   if( processor_count < 1 ) processor_count = 1;

   return processor_count;
}

is probably Intel-specific code

 

 

try

Code: Select all

int VBA::detectCpuCores()
{
       SYSTEM_INFO info;

   GetSystemInfo(&info);
   return info.dwNumberOfProcessors;
}

SVN470 Download & Infos

Posted: Sun Mar 30, 2008 10:31 am
by Squall Leonhart

is there a reason you haven't been given developer access on source forge? lol.