finalburnneo / FBNeo

FinalBurn Neo - We are Team FBNeo.
http://neo-source.com
Other
882 stars 355 forks source link

Dual-stick controls for Forgotten Worlds #1707

Closed pjft closed 3 months ago

pjft commented 4 months ago

Hi all.

A few years ago we implemented dual-stick controls for a few arcade games, but one notable omission was Forgotten Worlds, as the CPS driver was partially off-limits, and not up to the same controls structure as most others - particularly having a "Aim" button, that all the other logic was based on.

At the time, @dinkc64 and myself chatted and suggested that maybe further down the line we could look into this together. I recalled that this weekend and thought I'd check, but it seems that the Forgotten Worlds controls are still the same.

There's no urgency whatsoever, I'm just adding this here as a placeholder, both to show my availability in exploring adding them there at some point, and asking if there'd be interest or availability in updating the CPS drivers to at least conform with the Rotation/Aim logic from the other drivers.

Hope this is not taken as rude, as that's not my intention, and I hope everyone is doing great!

pjft commented 4 months ago

Thanks. I'll get back to you here later then as well! Have a great day! :)

pjft commented 4 months ago

This plays great, both with and without the satellite, and with and without firing - thank you! :)

I believe this is what you're looking for!

    // rotated counterclockwise
    if (joy[3] && joy[1]) return 5; //7;    // up left
    if (joy[3] && joy[0]) return 7; //1;    // up right

    if (joy[2] && joy[1]) return 3; //5;    // down left
    if (joy[2] && joy[0]) return 1; //3;    // down right

    if (joy[3]) return 6; //0;    // up
    if (joy[2]) return 2; //4;    // down
    if (joy[1]) return 4; //6;    // left
    if (joy[0]) return 0; //2;    // right

rotated.zip

Thank you :)

dinkc64 commented 4 months ago

Thanks buddy, this is really great! I'm going to make the fire button act as a non-fire button when using the second stick, and, if I have time, add back in an analog spinner, for people who own spinners that want to use them with this game. (but do it properly this time, with the spinner device (subset of BurnTrackball device))

best regards,

dinkc64 commented 4 months ago

I'll have to admit, I never liked playing this game because the controls were so horrid on emulation, now with this enhancement we've worked very hard on - the game is simply awesome! :)

I impl'd the "press fire to deactivate fireing w/second stick movement", but, controlling the satellite this way seems un-intuitive to me, will try to impl something else tomorrow, maybe a fire-inhibit button - maybe even make it toggle the mode? well, just brainstorming, if you have any good ideas, do tell!

best regards,

pjft commented 4 months ago

By all means, thank you so much for all the investment and effort here - you did all the hard work! :) I had this game when growing up on my ZX Spectrum, and later on on the Capcom collections on my PSP. I always found the idea of the game quite cool for the time, but the controls were really never there. Unfortunately, I never saw a live cabinet of the game myself, so I was happy that we put this together to do the game justice. It is really fun as a twin-stick shooter! :)

Regarding the controls, I agree with the feeling of the satellite controls.

To be honest, after realizing that the satellite didn't move when you were shooting, this will be game that the default will be the joystick just to move the player, without auto-fire, and the fire button is in one of the top buttons (R1 or L1 in my case, on a PS3 controller). I find it to be the easiest way to control. I imagine that the other firing options will be there just if anyone wanted different controls.

A control option, if we were designing the game from scratch would be, by default, the satellite would rotate with you even when firing, and if you held down a button, you'd hold the satellite in place, but always with auto-fire, as there's no reason for you not to be firing when holding the joystick since you have unlimited ammo.

My 2 cents. I know you said that "we control the machine", but this one is probably a hard tradeoff to make.

Best regards, and thank you for looking into this :) Have a great Sunday!

dinkc64 commented 3 months ago

Thanks buddy, and thanks for the input! :)

I remember playing this one on C64, but it didn't really jive with me back in the day, who knows, it could have been a bad port or had crummy music. Funny thing about the C64: a game could be complete garbage, but as long as it had good music - it was a good game :) (kinda joking, but kinda not!)

I found some cases where the satellite wouldn't stay still while fireing w/"moves & shoots" mode. I have a feeling it's going to require having to hold fire for about 2-3 frames after a rotation/movement stops to keep it from glitch-moving. Hopefully :)

best regards,

dinkc64 commented 3 months ago

almost_pie.zip

So, how about this one? :)

notes to self: The "button 3 (rotate)" needs to be written differently need test the spinner input with a real spinner

Those fireball things with the long arms which kinda remind me of something from Gradius really got me. yikes!

pjft commented 3 months ago

Yes, I agree with the "good music made for a good game back then" statement 😅

I see you have also added code for QSound for a few other games, nice!

This version works ok, in that if you are holding fire the satellite does seem to stay still, and if you let it go it does move. Also, the button to rotate the satellite does work, but it's still not as intuitive as just playing without "Moves and Shoots".

A few small comments: 1) if you use the Rotate button (and, I think, the "move satellite" button), if you are moving when you press it the movement will keep happening. You probably want to keep moving in the direction the player is pressing, even if the rotate button is pressed. That's probably what your "note to self" meant? :) 2) for some weird reason, I could not get the "Move Satellite" button to show up on by development machine RetroArch setup. Granted, it's on 1.9.14, which is old, but thought I'd bring up in case something is wrong there. To test I just switched the variable the Rotate button was using - in effect, the "move satellite" is a rotate button, but it doesn't trigger the auto fire mechanism when the Dip switch is on. 3) There's a typo in "Move satelite" - it should have two "l"s. The reason I mention it is because RetroArch will search for the string, and it'll avoid two changes :)

I think this is getting really good - thank you! Have a great week :)

dinkc64 commented 3 months ago

The rotate button issue is leftover code from Midnight Resistance, there's situations where you need to crawl and shoot in different directions at the same time, thanks for reminding me of that! Not sure if I should remove it or leave it?

It was taoenwen yesterday, who added the Qsound stuff: https://github.com/finalburnneo/FBNeo/commit/ef5135380be502d2f2e3a1bebc2f2d2804a2c4c4 - I just merged the new code to make things easier down the road.

I can't really comment on libretro, because I don't use it - but that's weird!

best regards,

pjft commented 3 months ago

Got it. Yes, removing the MidRes code does fix that - I'd remove it. Honestly, there's no real use case in this game to keep it around - if you keep moving unintentionally you'll quickly crash into an enemy or bullet.

I did, however, find that - at least on my end - if you have the Dip Switch set to "Shoot and Move", but are using the rotate button, that it will not shoot when you're holding it.

About libretro, no worries - I'm sure it's 99% an issue on my end :)

Thanks!

dinkc64 commented 3 months ago

Thanks for the suggestions! I write a lot of stuff right before I go to sleep, sometimes I don't even know what I meant :P I changed the "move satellite" button to "no Attack" Though, not sure if this was any better than previosly... hrm.. What do you think? So, when using the rotate button and dpad, it shoots when dip is set to "Shoot and Move" here, can you try again with the latest source? I'll post it later tonight, I just found another issue with the satellite glitching when using the "moves" mode

best regards,

dinkc64 commented 3 months ago

pjft, since we've spent so much time on this code, let's spend a little more time to share tips and get awesome with this game! :)

Ok, It's time we learn how to get the satellite exactly where we want it! I had so much trouble with this because I wanted to use it as a shield in certain parts of the game, and I could never get it where I wanted it. On top of that, you have to stop shooting, so it leaves one vulnerable while one stumbles to get that satellite exactly where it needs to be :P

This is how I did it:

Set up a savestate on the start of level 1 for practice and pick a random spot where you want the satellite to end up Wait for a line of baddies to come at you and shoot them Hold the no-fire button and do a full circle** with the rotational movement joy until it ends up exactly where you want it Let off the no-fire button, and continue to kick ass :)

**It's important to don't give this much thought, just do a mindless circle or 2 until it ends up where you want it. If you have to think about it too much, you'll fail, and the next wave of enemies will kick your ass instead :) After a few minutes of practice, it will be asskicking time!! yea! \o/

Why's it so important to get the satellite in the right place? It will shield you from any sorts of light weaponry, especially those arrows that the egyptians shoot at you, and small enemies. Heavy weaponry, such as the laser blasts from the disembodied heads are like a Javelin to a T-90 Russian tank, so look out!!

There's my tip of the day, good luck!

Code update:
almost_pie_plus1.zip

pjft commented 3 months ago

Oh, nice - I like this idea, though I don't think I'll have a lot to contribute 😅 That's a great tip and exercise - I tried it a bit and it made a lot of difference. In fact, I even tried to just rotate the satellite to catch the enemy's bullets, instead of shooting them, and that was fun!

Let me share a few tips then that I found so far:

I feel yours are better tips, but I'll get more I'm sure :D

dinkc64 commented 3 months ago

Wow, that's a cool tip in its own, rotating to catch the enemies bullets :) I shall give it a try! Thanks for the tips, I'm going to have a game and see how well it goes. One problem though, I get completely wrecked by those fireball-with-arm things, not sure how to pass them... :/

I'm going to commit the current code, if there's anything you'd recommend changing after a few good games, do let me know :)

best regards,

dinkc64 commented 3 months ago

I started a game yesterday, after killing that huge "egyptian gondola-thing"-boss, the difficulty of the game reminds me of stage 5 of Battle Garegga with maximum rank. It's a constant influx of hippie psychedelic elvis impersonators and roman soldiers with spread-fireball weapons. absolute insanity! I think its almost a requirement to have 2 players going at this point. :)

I give up at this point... the whole screen fills with bullets a few seconds after this:

foo

Maybe you have some tips for this part?

On the other hand, I think the code is about as perfect as it can get :) Tossed it on git: https://github.com/finalburnneo/FBNeo/commit/c19b11f8d19411dfc20689cb5f097c1971622c55

best regards,

pjft commented 3 months ago

Oh my - I do not, unfortunately. I also found that part slightly overwheling, but I was reading in a FAQ that there are some satellite types that are recommended for when you get so far. Still, awesome job! 😮

Thanks for making this happen - I hope I have some time during the weekend to play it in 2 players with my kids. I don't think this game ever had such a good way of being played, so well done, this will hopefully be the way people will now start to experience and enjoy this game for years to come! :)

Awesome work!

pjft commented 3 months ago

Right, it was here: https://gamefaqs.gamespot.com/genesis/586191-forgotten-worlds/faqs/10724

These guys claim that if you buy the Napalm satellite you're set for the game. It's an interesting tactic, but I clearly didn't have the experience to pull it off so effectively as they claim yet :)

dinkc64 commented 3 months ago

Yea, we really came up with something great here! I'd love to know how your weekend game with the kids turns out!

Thanks for the tip, I'll have to try it again with this satellite, but, I noticed that I lost satellite upgrades before, though, not sure what triggers it..maybe death?

best regards,

pjft commented 3 months ago

I suspect it is multiple deaths, I don't know. I mentioned several posts back that my son was playing it, and he lost the satellite during/after the first horizontal egyptian-themed level, after losing and starting several times. Maybe after you use X credits? Though that seems harsh - lots of later games actually gave you a power up if you used up another credit! The game is nigh on impossible in later levels without the satellite - kind of like when you lose a life in R-Type in the later levels.

pjft commented 3 months ago

Just saying that while we didn't end up taking the game to the end - he wanted to play Bubble Bubble 2: Bubble Symphony after a while - we did have a lot of fun with it, and I'm sure we'll come back at a later point in time to continue where we left off :D

Hope you're doing well! I think we can close this one for now. but thanks once again, and do reach out if there's anything I can help with :)

dinkc64 commented 3 months ago

Hi pjft, I think I figured it out: right when you just about lose all of your energy, you'll lose the satellite, then die shortly after

It was really nice working on this project, thanks for all your valuable help, comments and code! :) Regarding the game-time with your kids, it sounds like a great time :) I don't think I could pass Forgotten W. either, even when using unlimited rewinds. It just gets too insane! It's not like Capcom games to get like that, though, so I wonder if there's something we're doing wrong.. hmm.

thanks and best regards,

pjft commented 3 months ago

Ah, good observation on what happens when you lose all your energy. That was probably it then!

Likewise, it was a pleasure having your guidance and enthusiasm throughout it all. I'm sure we'll do something together again someday :)

Thanks, and have a great week!