> I'm wondering if it's just not save-state friendly, or if F3 resets break the > protection state.
Both, probably. m_protection_result doesn't appear to be saved anywhere in either the driver nor any derived classes. Plus m_protection_state only seems to be saved by zac_scorpion_state::init_scorpion, which isn't (and can't be) called by galaxian_state::init_theend. Neither member is initialized in any constructor or derived constructor.
So for theend at least, DOR seems to just be getting lucky that both pieces of data are being initialized to a "good" state, loading a savestate will certainly not restore whatever values they had when saving, and in either case, resetting using F3 will probably not result in either value being valid for power-on.
What's particualrly baffling is that all of the drivers in galaxian.cpp seem to be marked with MACHINE_SUPPORTS_SAVE, when they pretty clearly haven't been vetted for all used driver members being registered for saving. Either that or any members that have been added since they were marked as such haven't been added to the registration list.
|