Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Long Time Coming! How About We Fix Killer Instinct to run better!:) Here is How We Can Do It!:) #1100

Closed
KMFDManic opened this issue Jul 12, 2021 · 57 comments

Comments

@KMFDManic
Copy link
Contributor

KMFDManic commented Jul 12, 2021

EDIT: Grant2258 and Mahoneyt944 clarified we can do this another way:)

@ghost
Copy link

ghost commented Jul 12, 2021

@KMFDManic use the osd menu supports cp scaling find out the value that works for you then simply call this (

void cpunum_set_clockscale(int cpunum, double clockscale)
{
VERIFY_CPUNUM_VOID(cpunum_set_clockscale);
cpu[cpunum].clockscale = clockscale;
sec_to_cycles[cpunum] = cpu[cpunum].clockscale * Machine->drv->cpu[cpunum].cpu_clock;
cycles_to_sec[cpunum] = 1.0 / sec_to_cycles[cpunum];
/* re-compute the perfect interleave factor */
compute_perfect_interleave();
}
) in core option you add.

press crt do do +1 increments in the menu pressing

@KMFDManic
Copy link
Contributor Author

@grant2258 I am familiar with the OSD method. Problem is, doing it that way, (at least in my tests) it didn't help much with overall performance/speed. And, sound remains "stuttery" and broken (no matter which value I tried). I also attempted value changes of the cpunum, with mixed results (Kinst would sometimes boot, other times not, depending on value). The way I did it above, changing the clock via the driver file, it not only helped performance/speed. But, the sound was no longer stuttery, and nice and smooth. And, the game always booted, no matter what value I had it at, within the realms of the normal ones. Not sure which platform you are currently running on, again? And, thanks, as always...for helping look into this matter!:)

@mahoneyt944
Copy link
Collaborator

mahoneyt944 commented Jul 12, 2021

Looking at this I'm reminded of our unimplemented core option to change clock speeds. Maybe this would be a solution that could be used more dynamically throughout any game or platform?

/* TODO: Add overclock option. Below is the code from the old MAME osd to help process the core option.*/
/*
double overclock;
int cpu, doallcpus = 0, oc;
if (code_pressed(KEYCODE_LSHIFT) || code_pressed(KEYCODE_RSHIFT))
doallcpus = 1;
if (!code_pressed(KEYCODE_LCONTROL) && !code_pressed(KEYCODE_RCONTROL))
increment *= 5;
if( increment :
overclock = timer_get_overclock(arg);
overclock += 0.01 * increment;
if (overclock < 0.01) overclock = 0.01;
if (overclock > 2.0) overclock = 2.0;
if( doallcpus )
for( cpu = 0; cpu < cpu_gettotalcpu(); cpu++ )
timer_set_overclock(cpu, overclock);
else
timer_set_overclock(arg, overclock);
}
oc = 100 * timer_get_overclock(arg) + 0.5;
if( doallcpus )
sprintf(buf,"%s %s %3d%%", ui_getstring (UI_allcpus), ui_getstring (UI_overclock), oc);
else
sprintf(buf,"%s %s%d %3d%%", ui_getstring (UI_overclock), ui_getstring (UI_cpu), arg, oc);
displayosd(bitmap,buf,oc/2,100/2);
*/

@KMFDManic
Copy link
Contributor Author

KMFDManic commented Jul 13, 2021

@grant2258 @mahoneyt944 I did a test with "overclock" earlier, and was able to have S.T.U.N Runner, which normally runs about 40 FPS for us on the lower spec, run at 60 FPS steady (0 Frame Skip)! So, yeah, this may work out as a potential solution for global overclock. How do you best feel this should be added? I can do some preliminary tests on games I know, for sure, need the additional boost! I still need to determine how effective this can be for Killer Instinct, with the above method code. I had nice results with the driver change. Who knows, maybe both, used in conjunction can fine tune things to a very nice degree. But, hell, I even was able to play Hard Drivin' with overclock bumped up, earlier. That game had zero chance of working for us before, in the current state.

@ghost
Copy link

ghost commented Jul 13, 2021

Overclock and underclock can cause issues yoru millage will vary. The concernt of the cpu being the wrong speed can in the driver can cause issues as well with sound ect I think its a tinker till you get something working. I dont thing the driver change can be changed on the fly unfortunately would require a restart.

@mahoneyt944 the unimplemented code is just code that was moved from the osd if you want to enable it make sure the emulation is running when doing it.

@kmdfmanic could get the user interface to save the last value that way you can include the cfg file might not be ideal for you though but would be transparent to the user. Plus would need to figure out a way through the frontend though since the osd code was ripped out.

@mahoneyt944
Copy link
Collaborator

@grant2258 do you think the overclock code would be worth adding to core options? I suspect someone thought so at some point to leave that in there commented out. Not sure any miracles would come of it but experimental gain can be fun.

@ghost
Copy link

ghost commented Jul 13, 2021

@mahoneyt944 I think mark left it there after removing it from the gui he is probably teh best person to ask. It certainly can be done.

@mahoneyt944
Copy link
Collaborator

@markwkidd ^^^^^ thoughts?

@KMFDManic
Copy link
Contributor Author

I have had fun testing this over the last few days. And, while experimental, it can certainly benefit fix-ups of some games that previously were inaccessible. I never thought I would be able to run Hard Drivin/Race Drivin, at all on the Mini Classics! And, even Off Road Challenge was more playable! Having "variable" control without recompiling will be the clincher to truly make this a winner addition.

@mahoneyt944
Copy link
Collaborator

mahoneyt944 commented Jul 15, 2021

Looks like this was issued before #109 as far as the cpu clock adjustment.

And more killer instinct issues related #458, #531

@KMFDManic
Copy link
Contributor Author

KMFDManic commented Jul 15, 2021

@mahoneyt944 @markwkidd I see that mark actually pinged my name around the time he made that original issue:) In any case, I thank you both, as well as @grant2258, @arcadez2003, for your input into this. Now then, despite there being multiple values for CPU, such as CPU0, CPU1, CPU2, CPU3, CPU4, CPU5, ONLY worry about CPU0! The other perimeters are useless for most intents and purposes. SO, I would strongly suggest at least implementing CPU0 as a Core Option. I've been working with overclock for nearly 20 years, as far as emulation. It is mostly a misnomer. To truly overclock, you tend to usually kill performance/speed. It works in reverse, where you have to underclock to fix a majority of problem games.

Case in point, Taito F3 games. ALL of them run awful on lower spec platforms, such as the Mini Classics, Retropie (earlier number models). BUT, through some bash script magic and timing changes, I have them running near flawlessly for our platforms. They had awful, stuttery sound, choppy game play. But, now, smooth and seamless (for the next Update I post!). So, for starters, Taito F3 games will immensely benefit from the CPU0 perimeter changes! Another game that will be helped along further would be Virtua Fighter, which I also got running better. Any of you reading this "issue", be sure to try the Taito F3 game, Dungeon Magic AKA Light Bringer. This is a great test candidate for this entire implementation, as it stands...it runs like crap on a ton of platforms! (But, Mini Classics, now running great!)

BUT, like when we had the "audio issues - non boot) with Midway Games/Robocop (incorrect speed), etc, a few years back! I initially "temp duct tape fixed" these with overrides, til Grant2258 and the rest of the team at that time joined in and we all tested, and got things aligned...And, Grant2258 hard coded it in, and then helped me get it into MAME 2003 Xtreme...SO Much Nicer Now!

I played with the CPU0-5 via MAME, as long as the OSD menu has existed. And, no matter what computer I was on, I was able to gain momentum in poorly running games. But, CPU0, again, is the ONLY value we should be concerned with. It can slide between 0-200. BUT, if you go at value 5 or lower, it will just freeze the game, til you change it to a higher value. So, essentially, the primary values that will help will be between 25-125. But, to cover the whole gamut, might as well allow all values between 0-200 to be allowed. Increments of 5 at a time works out fine.

And, the shocking thing is I actually was able to run Cruis'n USA/World, Off Road Challenge, Hard Drivin', Race Drivin', all of which games were previously pretty much impossible to play. So, yeah, we need this option:)

Minor bug report related to OSD. I have been through dozens of RetroArchs over the last half decade on the Mini Classics. I have noticed that depending on which RetroArch you use, OSD may not behave properly. So, some may have "attempted" to use OSD before, and instead of it actually working, as it should...it inserts coins instead, on certain functions! Again, this was just something I noticed in testing multiple RetroArchs. Could just be on "our" end. But, I suspect that some "retroarch" builds affected other platforms, too. And, those who begrudgingly do not want to update, may be on one of the "broken OSD" versions. Note, I see others HAVE had this issue...So, confirmed:) Thanks for pulling up the previous, related issues, Mahoneyt944! #458 So, then, as a Core Option, this should theoretically solve the broken "service" button for those who cannot use it, on whichever RetroArchs! Might be worth analyzing any other "useful" perimeter "service" mode changes, in the future, too.

I will be doing a few videos showcasing improvements. But, I would certainly love a hard code method of doing this, rather than relying on "duct tape" overrides!

Thanks!!! And, upon testing of the code, I can help with some notes, to go along with the commit/s, so others who do view them will have a rough idea of what to expect!

@KMFDManic
Copy link
Contributor Author

Just to give an example of what I mean...this particular game, Dungeon Magic AKA Light Bringer, runs abysmally, under normal circumstances. I run it with 0 FrameSkip, on the crappiest Mini Classic of them all, with default specs 1.008 Ghz. This is far worse than a RetroPie. But, you can see the game is running smooth and seamless. I am almost afraid to watch my older videos, where the game was slow, choppy, crappy music, and mostly a gimmick, not really playable. Taito F3 games, in general, are fun ones to play...when they work well!

https://www.youtube.com/watch?v=_yVZcINOnDk

@ghost
Copy link

ghost commented Jul 16, 2021

@KMFDManic there are two thinks going on that are interchangeable in conversation. Changing it at driver level and the osd menu not sure which one referring too. Im doing nigh shift at the moment. This fix might have desirable effects for lower end hardware it will not necessarily be good on higher end but that isint the target audience anyway.

@mahoneyt944
Copy link
Collaborator

@grant2258 I think we should focus on the core option overclock imo. This would allow us adjustability while also not being too invasive to the core. Also easier to update in the future if it's external to the game drivers. Not sure how effective it would be or not without testing such a core option lol.

@mahoneyt944
Copy link
Collaborator

mahoneyt944 commented Jul 16, 2021

side note, we never ported the fixup for frame skip in this core. Not sure how well it works or not now since I've never used it.

@ghost
Copy link

ghost commented Jul 16, 2021

Osd and frameskip is done on my port already user the wip branch

@mahoneyt944
Copy link
Collaborator

Osd and frameskip are areas I have no experience with. Osd was gone before I ever worked in the core and never used frameskip. Though as far as the osd goes for now, I think we are just concerned with the overclock portions and translating that into a core option.

I've looked at your repo and xtreme's and there are many commits for frameskip and later touch up commits that I'm getting myself mixed up following it.

@KMFDManic
Copy link
Contributor Author

KMFDManic commented Jul 16, 2021

@mahoneyt944 The frameskip that @grant2258 helped get into Xtreme and his fork, are the result of 2 things. One, "newer" retroarch has ability to "smart frame skip", as in only frame skip when latency drops below the notated threshold. Two, current frameskip implementation, as it stands...for both MAME 2003 AND Plus, is broken. If you change values, you will find some of them "black screen" games, with out of bounds perimeters. But, on Xtreme and Barcade Builds, you can use values from 0-10 fine, as well as the "smart frame skip" values for auto, aggressive, etc.

@markwkidd @grant2258 As a reaffirming note, after more testing, the exact CPU option we need to be a Core Option is the drivers that use CPU0. Just ignore 1-5. No matter what you change 1-5 to, it is non-negligible. But, CPU0, has immediate impactful results, without needing to "restart" Core/Game. Here is where things get tricky. The math changes, depending on which stage you are in, on Killer Instinct..."low spec wise". So, Sabrewulf stage may work fine with one adjustment, Thunder Stage with another, Orchid or Cinder with yet another. This is quite common with a lot of fighting games, where the dynamics of overall calculations push necessary additional permutations. But, the Core Option for CPU0 (however we name the Core Option, in the end. maybe just (OSD CPU Clock). I definitely determined that some platforms/retroarch builds are unable to use OSD menu properly. So, Service, Test buttons may "insert coins" instead of functioning, as they should. SO, that pretty much makes this a more crucial addition.

As a final note, for now. @grant2258, I was mostly talking about the OSD method. I tried a few other ones, such as KI driver clock, etc. Yes, it would be beautiful to have variable control to the actual "case by case scenario drivers", such as KI (which are the absolute worst games to run on low spec), but also the OSD control. But, only if feasible! So, something like a Core Option for OSD CPU Clock (doesn't require restart) and possibly KI CPU Clock (likely requires restart). If we can get BOTH of these as Core Options, Killer Instinct will be far more accessible to many more people. And, it actually might benefit to have a third option, CPU Core Clock...from cpuexec (likely restart, too). So, to reiterate, OSD CPU Clock (with JUST CPU0, as 1-5 are pretty useless), KI CPU Clock, and CPU Core Clock. Using 1 or all 3 of these in conjunction, you can really make a drastic impact with a ton of games! I did several hours of testing, and got even Hard Drivin', STUN Runner working well, messing with these! Thanks in advance for any response, input, developments:) I will get some more KI videos up over the weekend. But, as it stands, I have a majority of the stages running decent to good to well to pretty fast, now:) I hit 50+ FPS at times! This is in contrast to my earlier 4-11 FPS in earlier tests and demonstrations!

I feel this addition will be a game changer, in its overall effectiveness. It would be the equivalent of an equalizer on a stereo and being able to "finetune" cars in your various Racing Games, rather than be stuck at crap spec defaults. One friend of mine was a master at finetuning the gear shifting in one of the Need for Speed Games, and damned, if he didn't do it so well that any Automatic Transmission Car had zero chance of outshifting him. He destroyed in races! So, crossing my fingers, this all works out:) Thanks again!

@ghost
Copy link

ghost commented Jul 16, 2021

Well cpu0 is usually the main cpu and the other is
sound. Im Pretty neutral to these options it is easy enough to implement just send the command vith the value set in mame frame and wrap it round a check so it doest send it over and over when it's set.

@KMFDManic
Copy link
Contributor Author

KMFDManic commented Jul 16, 2021

@grant2258 think we could do both cpu0 as well as cpuexec? I'm willing to test things out once we have solid code for core options. And, I can get some test videos posted. I'm already having great success on my end. I know this will work out. Not sure how easily u could call on the master ki clock, either. I'm happy with whichever variants we can code in. Low spec:)

I also noticed you did some changes with daphne. I never got badlands to work, and will see if your build changes help with that, possibly. Attract mode runs, but wasnt able to insert coins!

@ghost
Copy link

ghost commented Jul 17, 2021

@KMFDManic sorry i just started nightshift have only been browsing this if you mean make the mame osd overclock feature work in ra menus as cpu0 that probably easily doable. Im not sure when you mean by cpuexec though.

Also unrelated done a few mame2000 fixes if you guys are using that core needed some lovin. Will need to grab the pull request yourself though. libretro/mame2000-libretro#90

@KMFDManic
Copy link
Contributor Author

KMFDManic commented Jul 17, 2021

@grant2258 thanks for the heads up on MAME 2000. I will work that stuff in, too. And, congrats on not being cooped up in the house like during the Covid BS. I also work night shift, mostly, with early ams at my other job.

To keep things simple, and on point...let's just worry about the core option for cpu0, for now. That should be sufficient for a powerful start to get things moving forward. Just give me a heads up when u do get a chance to look at it. And, thanks, as always for continuing to rock on! This change will definitely help keep things more optimal. And, thanks again for the fixes to 2000, as well:)

And, feel free to suggest any movies/tv you've watched recently. I personally caught up on Loki, which was pretty fun, if into Marvel stuff.

Again, thanks:) I look forward to testing this stuff out further.

@ghost
Copy link

ghost commented Jul 19, 2021

@KMFDManic pull request for you core is in KMFDManic/mame2003-xtreme@8446235 . @mahoneyt944 you and @markwkidd can decide what to do with it on this core

@mahoneyt944
Copy link
Collaborator

@grant2258 did a quick swap in, how's this look https://github.com/libretro/mame2003-plus-libretro/compare/Overclock

@ghost
Copy link

ghost commented Jul 19, 2021

@mahoneyt944 is up to you guys what you want to do with it to be honest @KMFDManic was specific he wanted cpu0 only obviously nothings set in stone you just need to be sure the emulation is up and running when you change it or expand it.

@mahoneyt944
Copy link
Collaborator

mahoneyt944 commented Jul 19, 2021

Oh and your default values were goofed up after 80. I noticed when I copied over.

@ghost
Copy link

ghost commented Jul 19, 2021

fixed tah. Its pretty soul destroying having to add all them values in the first place would be nice to have a slider.

@KMFDManic
Copy link
Contributor Author

KMFDManic commented Jul 19, 2021

@grant2258 @mahoneyt944 Awesome, grant2258:) I did MORE testing with the other CPUs, as far as 1, etc. So, we established 0 is main cpu. 1 and on are sound. I was able to do an equalizer combination of 0 AND 1 to get War Gods to run better. These values are completely negligible on most games. But, a game that is really finicky, such as War Gods, you can notice differentials a great deal faster! I will test the code tomorrow am when I wake up! Let me know if I need to change anything! Based on the 1 (finally showing me a difference), would the other values be problematic to add, or pretty much already structured and easily called upon with the pattern of 0 to 1?

And, thanks again for this awesomeness:) I was surprised at how well I was able to get War Gods going...It's nice seeing the actual Arcade Version, rather than what are considered terrible N64/PS1 Ports!

@mahoneyt944
Copy link
Collaborator

Was thinking the same thing, not sure Ra has anything like that or not. But would be much easier.

@KMFDManic
Copy link
Contributor Author

@grant2258 , "soul destroying", haha:) It felt that way when working in the LudicrousN64 stuff! I was doing the entire N64 game library on an individual basis! "overclock this game, underclock this game, you get the idea:)" Now you know why "data entry" is not the most fun job in the world!

Hey, I wanna make video games..."ok, data entry these 4000 pages of code:)..."

@ghost
Copy link

ghost commented Jul 19, 2021

@KMFDManic you can add as many decimal values as you like we just divide the vale by 100 to a double. 100 is the default

@mahoneyt944
Copy link
Collaborator

What's the full range .1 to 2?

@ghost
Copy link

ghost commented Jul 19, 2021

mame limits it to 200% nothing stoping you going beyond that dont see any reason too 0.01 - whatever your want

@KMFDManic
Copy link
Contributor Author

@grant2258 I meant if we extended beyond cpu0, to also add cpu1 (War Gods confirmed that cpu1 DOES come in handy, as it was fixed using cpu0 in conjunction with cpu1. Not sure how effective 2 and on are. But, with War Gods, definitely was a game changer with 0+1.

@mahoneyt944 anything under .05 will pretty much lock the game frame rate to nothing, til you change to higher value. It won't crash the game. It will just lock the ability for FPS to occur. But, still nice to cover all values. As I do more tests, I will suggest a few "base point games" to best see results with. So far, Killer Instinct and War Gods are the higher tier ones to try. But, Dungeon Magic or Elevator Action Returns are great testers, too, especially if on retropie equivalent specs.

@ghost
Copy link

ghost commented Jul 19, 2021

@KMFDManic well its easy enough to add other cpu options. In your case once you have the values you could to a romname compare and set the add auto option that injects your values from a data structure you create. Feel free to implements it anyway you like though you have the bare bones to work with

@KMFDManic
Copy link
Contributor Author

@grant2258 Since some of the things I plan or hope on implementing (non-OSD) will lead to system freezes/crashes, I won't recommend them for the Plus/Main 2003. But, with Xtreme, I wouldn't mind having them there, with "warnings". I will notate these on the Xtreme Fork, when I next ping you, so you have an idea of what I am going for. I will play around with the latest pull request when I wake up in the am, and go from there. Thanks, again!!!

@mahoneyt944
Copy link
Collaborator

@KMFDManic so .05 works, less than that does not? So we should include values 5 - 200 divisible by 100

@ghost
Copy link

ghost commented Jul 19, 2021

No problems at all I do agree this is very specific to low end hardware your targeting. You will see different results on more capable hardware

@KMFDManic
Copy link
Contributor Author

KMFDManic commented Jul 19, 2021

@mahoneyt944 25-125 are most optimal values. Anything below 25 will be problematic, as will anything over 125 (rare exceptions will work with slightly higher values, thus far). And, some games will obviously behave differently, because of their varied original hardwares. As I further cement things on the Xtreme end, I will touch base with you guys, test result wise, for the Plus end.

@KMFDManic
Copy link
Contributor Author

KMFDManic commented Jul 19, 2021

@grant2258 @mahoneyt944

In conjunction with the stuff I already added Mini Classic side, to better handle KI, the latest CPU addition helped "boost" KI to be quite optimal. Note, with the CPU Core Option, that is the ONLY way you can change the values...The OSD Menu will be unchangeable for THAT particular "pulled from" value. Not a big deal, as I much prefer the Core Option Method! It is beautiful:)

So, here we go, finally...better KI with great (well, much better!) performance/speed/sound:) Thanks, both of you:) I will close this issue, for now. But, we can continue to communicate on it, to better finetune things in the future!

https://www.youtube.com/watch?v=fPOTZyhJrkg

@mahoneyt944
Copy link
Collaborator

@mahoneyt944
Copy link
Collaborator

And tests done with overclock vs scale?

 timer_set_overclock(cpu, overclock); 

@KMFDManic
Copy link
Contributor Author

@mahoneyt944 it's just the cpu0 from the OSD menu. I believe that would be overclock. You can change value in Core options, then open OSD with the normal shortcut you map. You will see the value is identical to the core option. Any specific games you've been testing so far?

@mahoneyt944
Copy link
Collaborator

With the new core option. I've tested kinst and blitz. Both of which I can squeeze another 15fps out of by lowering the CPU clock scale between 40 - 60. Blitz seems a bit more demanding though than kinst. I also tested umk3+ which already plays great and I can reduce the scale in the 40s and still yield a playable game. There's probably many games that could be tweaked with this when need be. I wouldn't call it a solution, but I great way to squeeze the lemon a bit harder. Definitely an interesting option to experiment with.

@ghost
Copy link

ghost commented Jul 20, 2021

And tests done with overclock vs scale?

 timer_set_overclock(cpu, overclock); 

src/cpuexec.h:182:#define timer_set_overclock(cpunum, overclock) cpunum_set_clockscale(cpunum, overclock)

@mahoneyt944
Copy link
Collaborator

Lol that makes more sense. Was wondering why there seemed to be 2 calls but didn't look into it

@ghost
Copy link

ghost commented Jul 20, 2021

I did my homework before jumping in the fire lol

@mahoneyt944
Copy link
Collaborator

mahoneyt944 commented Jul 20, 2021

It's definitely a neat option to tinker with I was able to play kinst almost at normal speed. Blitz was playable but still slow. With "default" set I get 20 to 30 fps if I'm lucky and with "40" set I was getting 30 to 40 something fps. Not quite there but improvement none the less.

@ghost
Copy link

ghost commented Jul 20, 2021

Well to be honest this is an option that always has been in mame via the osd. It simple less workload for the emulated cpu means less processing power needed. It helps the bottle neck

@mahoneyt944
Copy link
Collaborator

I'm really use to the mame menu at this point so I'm biased for liking it, but I can see why the layers of menus are not desirable in the grand scheme of retroarch. Any features like this that could be swapped to a core option is probably a good thing.

@ghost
Copy link

ghost commented Jul 20, 2021

Well cant agree i prefer the ra way but it is what it is. If they had a basic menu system you could implement within a core i could live with that. Again I dont use this core per say so i dont really mind what you do. If you stick to this way its what everything will be. No real back and forth input from core to the menu its one way only isint ideal.

@mahoneyt944
Copy link
Collaborator

It seems like the core option menu just needs more features then it probably wouldn't be so bad. But I'm not looking to go that route. So consider this all hypothetical lol.

For example is there away to have a sub category? Such as this. For say vector settings or artwork etc

  • Option 1 on/off
  • Option 2 on/off
  • Option 3 on/off
  • Option 4 settings
    -- setting 1
    -- setting 2
    -- setting 3
  • Option 5 on/off

@ghost
Copy link

ghost commented Jul 20, 2021

Havent looked into the menu menu system you would need to ask in discord.

@mahoneyt944
Copy link
Collaborator

Just did. That would be pretty useful though because we could organize vector settings, artwork, or even include a proper dip switch menu with some work without it cluttering everything. I'm guessing they don't want to have sub categories in this instance though but we'll see.

@arcadez2003
Copy link
Collaborator

arcadez2003 commented Jul 20, 2021

@KMFDManic i missed the boat here just catching up now, so from what i understand you guys have added
core options so users can tweak the cpu over/under clocking plus frameskipping to improve the performance
with certain games on lower end hardware.??

Can this be done for games on the fly or is it one size fits all settings that can be flipped on and off rather be
targeted at any specific games per say.??

I could sure do with a boost up for the Taito F3 games on the xbox they're playable at around 20-25 depending on
the game with some sound skipping so any improvements in that dept would be welcome, but im not interested
in porting this across as it would be a fair bit of work to hook this in with user toggle options into our MAME GUI.

Unless i've picked you up wrong you mentioned you'd previously improved the Taito-F3 games before @grant2258
recent additions so i was just wondering what settings you were using be it frameskipping or say cpunum_set_clockscale
and how much of a boost you got for say Bubble Bobble II etc etc

@KMFDManic
Copy link
Contributor Author

@arcadez2003 For the Taito F3 games, on YOUR end, using the latest coding commits, you can go into the Core Options, and drop down the CPU Scale Clock Option just added, try it downward in increments of 5, til you find a nice ratio of performance. But, in conjunction with that, you can ALSO use the newer, fixed frame skip, and try it on 2 or "auto", if on "latest RetroArch". 2 will work fine on any RetroArch. The top most perimeters will only function on newer RetroArch. You can also "desynch" games to gain more FPS. Not really ideal to do it that way. But, in some circumstances, if your platform is not that great, it may be helpful. RetroArch Video Synch/Audio Synch Toggled Off, temporarily, JUST for that particular game.

When I was updating N64, I worked in the changes so that games could run Synched, as well as Desynched. Initially, games like Fighting Force were "choppy frame rates" when Synched. SO, I had to change the timing til the frame rates were smooth Synched...And, it still allowed the additional push while Desynched, for those who wanted to do it. That is what helped me do this: (keep in mind, THIS game ran at 4-8 FPS, previous to the changes; And, flickers in on foot stages:)

https://www.youtube.com/watch?v=8pt4NrMi5Y4&t=153s

Anyways, @grant2258 @mahoneyt944 I did more testing. There is something else I would like to add to Xtreme. But, unfortunately, it does cause really bad emulation issues, if you mess with the values in a bad way. I am gonna open an issue on Xtreme Fork, and clarify what I refer to! I would consider this a "very unsafe addition". But, me, I would like to add it, personally.

@mahoneyt944
Copy link
Collaborator

@arcadez2003 frameskip can now be set to skip a number of frames or automatically when frames drop. The new core option "CPU clock scale" set on default will use the native clock speed or else you can over or under clock from there without restarting. If you find a setting that improves a particular game, save it as game opt file. Most games should be set at default.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants