Hey again, arg!
I've just finished adding OLED and life/ammo display support to the OpenFIRE project, so I've been having a play with DS again lately trying out the Ammo and Life outputs.
While it's generally worked well, I did notice a bit of strange behavior at least with Let's Go Island (3D): the reported life bar keeps switching to 0% when cutscenes play, and only switches back to the correct value when control is gained.
I did this testing mostly with my own QMamehook program's verbose output just to see what exactly it's sending; aside from some bugs on my end that I recently resolved, this seems to be a consistent and intentional(?) behavior on DS's end. But for a user who has this active display of player stats enabled, it'll look really confusing seeing the player "dead" according to DS's output but the lifebar (which remains onscreen in most cases) still showing the real value.
Is this intentional? Was the idea to be that when a cutscene is playing that the life display is supposed to be "hidden"? There doesn't seem to be much of a distinction between "hiding" or simply "dead". This doesn't seem to happen in other games like House of the Dead 1 or Virtua Cop, which never change life display outside of damage/bonuses.
I haven't tested much so far, since I'm still barrelling towards public release of OF, but just thought I'd ask to make sure.
Well, it's not really "intentionnal"....not fully :
Finding output values is not the hardest part on those SEGA games, the hardest part is the fact that at that time, when the game was running the attract demo gameplay, it was using some kind of "scripted gameplay sequence" making the life, ammo (and other character related data) values to change in exactly like in real player gameplay.
(Newer games usually don't have that issue as they are using a gameplay recorded video to play like a movie)
So, to limit the buttefly effect of having recoil, dammaged and other custom events to fire during the attract mode, I need to find a way to "filter" the good/bad moments to use those values.
So, concerning LGI3D : I'm filtering thanks to some value in the player data structure......but it ended beeing a wrong choice :
- It goes 1/0 during gameplay (0 in the cutscenes) so when it goes to 0, life data is filtered out by DS
- It goes 1/0 in the same way in attract mode so you should see the life changing in the attract mode (if the demo is loosing life)
I lurked a little more in the binary and may have found a beter way to find if the game is playing or displaying attract, I'll have to try to play with it to make things better.
On a side note, displaying that kind of values (that were not meant to be visible at all to the physical player) sometimes has some side effects. You will surely be able to see some amo going to 0 in cutscenes, or changing values in game over screen or other weird things in some games.
A recent example was someone pointing out the fact that, in HOD2 (flycast or Demul) the ammo account is decreasing and can be reloaded during cutscenes, where no GUI is displayed on screen
It's fun to see sometimes the "BEhind The Scenes" of the game and have clues on how the devs are handlings things in reality