Mazan: Flash of the Blade (Naomi)
-
@chaoseffect Interesting. I wasn't aware of lr-flycast-new - it's been a while since I last looked at the code.
Correct, the main differences are for the sword position not to be stabbing all the time. I think that "button 1" in the lightgun would set it to parry position, and "button 2" would set it to stabbing position.
It's been a while, but I think that those were the main changes. It's all remappable in RetroArch, correct.
What I don't know is if it expects you to have mapped the sword first in "normal" mode (as it is right now), or if you can map it afterwards - perhaps the "stabbing" angle can make it work in that regard. The thing is that the calibration screen will detect the two sensors, so I'm imagining that if you re-calibrate it with the changed sword, you'll go back to having it stabbing by default, which was not what we wanted.
I'll be honest, I did think that it made the sword control more "realistic", so do give it a shot. I think that what made it "less fun" than what I thought it would is that waving the sword very quickly left and right would easily damage the enemies - something that's easier to pull off with a lightgun but that would probably have been hard with the original sword controller. I think that was what made me think "huh, the concept is great, but playing it with a lightgun/mouse isn't quite the same".
Let me know if you need help in compiling it but I imagine that, worst case scenario, you can adjust the lr-flycast.sh script on RetroPie-Setup to reference my repository and branch.
-
@chaoseffect Ah, I now re-read what you wrote.
Correct, then you know how to make this happen :D Yes, I have this one installed as lr-flycast-mazan or lr-flycast-pjft .
-
@pjft The upstream lr-flycast is built from here:
https://github.com/flyinghead/flycast
The RetroPie setup script went to this version briefly before a handful of issues were found. You can still find the installation script for the newer version on the RetroPie-setup GitHub page. It's not just a simple swap of URL for this particular installation.
Notable changes include the ability to play 2 players with 2 lightguns in Ninja Assault, better control mapping for Gun Survivor 2, and the addition of WinCE support on Raspberry Pi. I experience some performance issues on a Pi 4B with the newer version, so I only currently use it for Ninja Assault (no issues) and WinCE games.
Speaking of that, if you happen to try the newer version of lr-flycast and try out Virtua Cop 2, there's a bizarre glitch where lightgun controls cause the game to pause briefly every time the trigger is pulled. The regular controller mode does not experience the same issue. This is by far the best way to play any Virtua Cop game on a Raspberry Pi, but no one has been able to isolate the exact issue yet. It only happens in the libretro Flycast (seemingly all platforms) and not the standalone Flycast. If you experience the issue and can provide any insight, you'll be a hero! 😄
-
@chaoseffect Hah, interesting.
What was the issue with two guns Ninja Assault? I'm fairly confident I had it working on my end back in the day. What was the issue?
That being said, Virtua Cop 2 is definitely an interesting development. Is it for 32-bit or 64-bit only?
I am tempted, after I finish what I'm working on lr-fbneo now and have some free time to look into it. That being said, it might be RetroArch related, but I'll see. Is it only on WinCE games?
-
@pjft Ninja Assault doesn't have the second player's lightgun controls hooked up to any RetroArch controls in the latest version of the older lr-flycast (the one currently used by RetroPie). In addition to that, that particular game used some non-standard Naomi controls which made mapping player 1 confusing. The upstream lr-flycast resolved both of those issues.
I use a 32-bit RetroPie setup on a Pi 4B and am able to launch WinCE games with the upstream lr-flycast. I assume it also works with 64-bit systems.
Virtua Cop 2 has two versions on Dreamcast. One was a standalone release in Japan, and the other was part of the Sega Smash Pack in the USA. In order to launch the USA version, you may have to set the "Force WinCE mode" to ON. They both have that lightgun/freeze problem outlined in that issue I opened on GitHub. Unfortunately, Virtua Cop 2 is the only lightgun WinCE game 😅. The issue does appear to be RetroArch related because it is not present in the standalone Flycast emulator. The issue is also not isolated to Raspberry Pi.
-
I just tested your branch of lr-flycast. That works great! Yes, the sword is in a more natural position by default and goes into the horizontal "block" position if you move towards the top of the screen. You hold down "Gun Aux A" (which doubles as the start button) in order to enter the "stabbing" position. I did not have to re-calibrate. Thanks!
-
@chaoseffect Ah, nice to hear.
So, if I understand correctly, using Aux A would allow the player to calibrate the gun correctly in order to then play the game like this.
Do have a play with it and report back. If you (or more folks) do feel that it does help the game, I'll happily submit the changes to lr-flycast. The reason I hadn't done so is because they technically felt like kind of a "hack" that was helping me, but without anyone testing and also confirming that it helped, I didn't feel confident enough in sending it upstream.
Thank you for the time. @Drdave79 and others, do join in. The more folks testing this (and making sure it doesn't break anything), the more I can have some data to suggest that this might be a worthy addition to the emulator.
-
@ChaosEffect by the way, would you test Ninja Assault 2 guns in my version of the emulator? I don't quite know the state of it in regards to Ninja Assault - I recall raising an issue with Ninja Assault at the time to flyinghead as we were missing a dynarec32 instruction that caused the game to crash partway through the first level, but I never seem to recall the second player not working. I want to believe I would have tested that, but maybe I was wrong.
-
@pjft I don't think that that older version of lr-flycast is maintained anymore. The code base was moved to the upstream GitHub repository I linked earlier, and the older version was left unchanged (I think because some lower-powered platforms like Raspberry Pi benefit from it). However, Mazan behaves the same way in upstream lr-flycast, so any changes could probably be submitted there.
I calibrated in both the vanilla old lr-flycast and your branch, and I think the experience was better after using the calibration from the vanilla version.
Is it possible to separate the "Start" function from the "chop/stab" action? Currently, in your branch, they are both mapped to "Gun Aux A." If it's possible to separate the two, I think the Start function should be mapped to "Gun Start," while the chop should remain at "Gun Aux A."
Ninja Assault behaves the same way in your branch as it does in the current version of the old lr-flycast. The mappings are:
P1 Trigger = Gun Aux A
P1 Start = Gun Aux BUpstream lr-flycast moves those functions to "Gun Trigger" and "Gun Start" for both players. The P1 Coin function is mapped to "Gun Select" in all versions, and there appears to be no P2 Coin function in any version of the emulator.
There is no P2 Start button at all in vanilla old lr-flycast or your branch.
-
@chaoseffect I see.
I don't really know much about the button mapping - the changes I made were based on the button mapping that the game had in the emulator, I did not change anything there. Thanks for the feedback on the calibration not yielding the same results - that's too bad.
As I said, I really stopped looking into this back in late 2020, so I don't really envision going back to this anytime soon - especially with the codebase being different. I could consider submitting the current code for approval - adapting it to the new codebase, of course - but if it would still benefit from some changes I'd probably hold off on that until I get some time and focus on this again and make some of those adjustments.
Still, I hope this at least helps you and others enjoy the game a bit better for now!
-
@pjft Your branch definitely makes the experience better. Thanks so much! Sinden users can block attacks in your branch 😃
Among "old" lr-flycast, your branch, and "new/upstream" lr-flycast, it seems that all lightgun and lightgun-like games are supported now, one way or another. Extreme Hunting 2 fails to load due to a network-board issue, but that can be circumvented by using the conversion to Dreamcast that someone recently made. That Virtua Cop 2 issue seems to be the only thing hindering the playability of any true lightgun game.
-
@chaoseffect Sounds good. I may have a look at the Virtua Cop 2 issue, just out of curiosity at some point. I wouldn't consider myself more knowledgeable about this than flyinghead or any of the RetroArch folks, though, so... :)
To confirm:
- It happens on lr-flycast with a lightgun (actual device, or even when using a mouse and selecting "Lightgun" as RetroArch input?);
- it doesn't happen on vanilla flycast (can we install it on the Pi? Is it installable via RetroPie-Setup?)
Just so I can hone in on the specifics when I look into it.
Thanks!
-
@pjft said in Mazan: Flash of the Blade (Naomi):
it doesn't happen on vanilla flycast (can we install it on the Pi? Is it installable via RetroPie-Setup?)
It can be installed, but it's not part of RetroPie-Setup yet.
-
@pjft First, you will need to install lr-flycast (upstream) separately from the old lr-flycast by using this script.
On my system, I changed all references of "lr-flycast" to "lr-flycast-new" in the linked script so that the two versions can co-exist.
Here are the things I have confirmed with Virtua Cop 2 in "lr-flycast-new" on a Raspberry Pi 4B:
- The game will freeze briefly on any trigger pull by a player whose control type is set to "Lightgun."
- The freeze occurs regardless of whether it's a Sinden gun or a regular mouse, so it does not appear to be a hardware problem
- When the control type is set to "Controller," the freeze does not occur for that player's trigger pulls. I tested with one player using a lightgun and the other using a controller. Only the lightgun player's trigger pulls cause the freeze
And here are some things that I have heard but have not confirmed myself:
- The issue does NOT occur in the current version of the standalone (non-libretro) Flycast
- The issue DOES occur in "lr-flycast-new" on non-pi platforms
-
@chaoseffect ok, so yeah. I can replicate it - as expected. It was not what my original hypothesis was going to suggest. Since the behavior reminded me of a similar stuttering caused by the vibration effects on lr-pcsx-rearmed back in the day, I kind of hoped it could be something simple as that. Alas, disabling vibration in the options, and in the core options, made no difference whatsoever.
Did you try changing some of the weirder core options to see if they're making a difference on this?
I suppose I'll have to spend more time here, but don't hold your hopes. I suppose what makes it even more painful to go through because the codebase is moderately different and, if fixed, won't make it to the lr-flycast we use.
@mitu could you share context on these changes, just for me to try to understand the difference between the two repos?
Thanks all.
-
@pjft said in Mazan: Flash of the Blade (Naomi):
@mitu could you share context on these changes, just for me to try to understand the difference between the two repos?
The libretro/flycast repository used to be the original libretro fork of
reicast
, but at some point development moved to the main contributor's repository at flyinghead/flycast. The libretro repository is not receiving any updates at the moment and any new development has been done at flyinghead/flycast. -
@mitu Thank you.
But it is my understanding that we reverted that change back to libretro?
https://github.com/RetroPie/RetroPie-Setup/blob/master/scriptmodules/libretrocores/lr-flycast.sh
Was the upstream one breaking something on our end, I suppose?
-
@pjft said in Mazan: Flash of the Blade (Naomi):
But it is my understanding that we reverted that change back to libretro?
Yes, there were a couple of issues with the upstream repo, which have been solved now, and we reverted the repository change.
-
@chaoseffect Ok, so as much as I'd want to help here, this clearly seems to be above my knowledge of the code and emulator.
I added some profiling elements to the emulator, and we can observe a slight increase in time for the audio handling and emu.render() calls in the main retro_run() function.
That being said, I don't know how to dig into it.
I think the only difference between playing with a controller and the gun is that the screen will flash white for a single frame (for the old CRT guns to pick up the position). I don't know if that helps in any way.
Would love to see this making some progress indeed, but I'm kind of at a loss - unsure if it's on the libretro code or on RetroArch. :|
-
@pjft No worries. Thanks for taking a look!
Someone else had a sort of similar issue with Ninja Assault due to the Vulkan video driver. The behavior sounds similar, but the cause of the issue seems different. In that particular issue, the game rewinds when the white flash is supposed to hit.
I tried different video drivers, but choosing anything other than "GL" just gives me "GL core," and the issue is still there. I also don't have access to Vulkan on my current setup.
I did try changing a few core options here and there, but I figured that's just taking shots in the dark and stopped. I can take another look.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.