Author Topic: Cave cv1000 shmups emulation, full speed on Android  (Read 15223 times)

Offline el_rika

  • Member
  • ***
  • Posts: 101
  • Karma: +11/-0
Cave cv1000 shmups emulation, full speed on Android
« on: July 30, 2019, 08:41:27 AM »
Hello there,

So, i recently bought a Oneplus 7 android smartphone, which has the newest Snapdragon 855 soc and, as it turns out, possibly the most optimised CPU throttling implementation on the market.

Of course the first thing i did (and non-stop since then :biggrin:) was to test the Cave cv1000 shmups in Retroarch with the Mame2015 core.

https://m.youtube.com/watch?v=rd5eMmosrf0

As you can see; full speed, with an estimated input lag of ~ 4 frames and overall an amazingly fun experience. To achieve similar to arcade slowdown in very busy (an understatement as we all know) scenes, the emulated mame CPU clock must be set sonewhere around 35 %. If video threading is enabled in Retroarch, the game is a bit faster in heavy moments, but has some small (realistically unoticeable ) infrequent stutters in scrolling.

Daiffukatsu is a very very heavy on effects and overal objects on screen (i think it's the game that pushes the hardware the most?), and with a bit of tweaking and a cooled down smartphone, it is full speed as well  :p

If the project of bringing cv1000 emulation to fba becomes reality, a CPU underclock option is mandatory as i think it helps even more than the blitter delay.
It's amazing to finally play these gems on the go  :biggrin:

Offline el_rika

  • Member
  • ***
  • Posts: 101
  • Karma: +11/-0
Re: Cave cv1000 shmups emulation, full speed on Android
« Reply #1 on: August 05, 2019, 05:35:08 PM »
So, after extensive tests i can now come with a guide, numbers and tips for anyone that wants to play the cv1000 shmups on android smartphones.

I am talking full speed, with smooth slowdown in those tense bullet hell moments, overall a very enjoyable way to experience these gems, anywhere, anytime   :p

First you need a smartphone with Snapdragon 855 (Snapdragon 845 -might- also work with some more tweaking). There are many smartphones with this Soc, but the best would be one with minimal CPU throttling (OnePlus 7 is a good choice). Other latest gen CPUs might work as well, i don't know.

This is a guide for non-rooted phones.

Now you have to install Retroarch and manually sideload the Mame2014 core. This is a little tricky as it is no longer available for download and so the Core Info doesn't exist on the libretro server anymore. We can bypass this though, by tricking Retroarch. You can simply rename the Mame2014 core, to any of the existing Mame cores name (i chose Mame2000). After that, you put it in the folder Retroarch - Downloads, and then in Retroarch you go to Load Core - Install Core. Browse for the core, after the Core is installed, exit Retroarch and enter it again and you should have the Mame2000 core (which is our Mame2014). You will -maybe- need to refresh the Core Info files via Online Updater menu, for the core to work properly. Also in Retroarch video settings disable Threaded Video (disabling it makes the experience smoother though the requirements go up a bit)

Ok, onto the games now.

I tested almost all working Cv1000 games, played multiple times comparing with youtube PCB runs, and i tried to finetune the CPU clock in Mame so that the experience is enjoyable and close to originals. I also have extensively played the X ports. I personally prefer just a little bit more slowdown as it really sells the near miss felling   :cool:

There is a little issue here. The Mame2014 core does not show the % of the CPU, only the bar. I visually compared the underclocking bar with the Mame2015 core and i have numbers, but i personally use screens with points of reference, like certain letters or numbers on the starting screens, in relation to the CPU underclocking bar.

Espgaluda 2 - underclock the CPU to 52%. This game needs the most CPU to remain smooth and not produce unwanted stutter/slowdown. The Awakening and Ultra Awakening scenarios are very manageable, with tons of smooth slowdown with this setting. In very VERY extreme moments (Ultra Awakening) the game drops 1 or two frames for a split second. This can be solved 2 ways: 1. enabling Threaded Video & Disabling Vsync (the scrolling is a bit choppy at times, but barely noticeable)
2. Underclocking the CPU to 48 - 50% (may result in some slight, very rare stutter)

Dodonpachi Daiffukatsu - underclock to 37%. A bit less slowdown (maybe) than PCB, but more underclocking results in slight stutter in rare cases.

Mushihimesama - underclock to 39%. Tested mainly in maniac and ultra. Very close to originals.

Futari (all) - underclock to 36%. Smooth slowdown. BlackLabel seems to have more, even on PCB.

Ibara - underclock to 43% . PCB seems to have very little slowdown, but i like how it plays with just a little more slowdown. It's gorgeous.

Deathsmiles - underclock to 42%. Forest level is a good one to test and compare to PCB. This % value provides pretty close slowdown.

I will test the remaining games as well, though the values will probably be similar.
Daifukkatsu BL and Akai Katana are only playable in more recent Mame versions, which are more demanding and my tests show that full speed is not achievable.

When the phone gets hot, i recommend taking a break , as performance can be affected by CPU Throttling.

If anyone is interested in playing/testing and sharing impressions, i can provide all that is needed.

These are, arguably, the best shmups ever made, and to have them in your pocket and just go through a couple of levels while coming from work is just...uniquely satisfying   ;p

Edit: i forgot an important aspect. To access the Mame menu, where the CPU slider is, you need to use a virtual keyboard. TAB key accesses the menu and there you use 'arrows and enter' to navigate/modify. This is done after you load the game.
« Last Edit: August 08, 2019, 11:20:26 PM by el_rika »