aneb když si automat pamatuje víc, než by měl
U soutěžního hraní ve WolfMAME občas narazíme na jednu zákeřnou věc, která se nejmenuje lag, špatná ROMka ani „já to doma přísahám dohrál dál“.
Jmenuje se NVRAM.
A protože to zní jako něco, co by se dalo namontovat do vesmírné sondy nebo staré tiskárny, pojďme si lidsky říct, co to vlastně je, proč to v MAME existuje — a proč nám to při soutěžním hraní umí nadělat pěkný nepořádek.
Co je NVRAM?
NVRAM je zjednodušeně řečeno paměť automatu.
Skutečné arkádové automaty si totiž často potřebovaly něco pamatovat i po vypnutí. Například nastavení hry, obtížnost, počet životů, jazyk, servisní volby, interní počítadla, někdy i žebříčky nebo další drobnosti.
Když tedy MAME emuluje arkádový automat, snaží se chovat jako skutečný stroj. A skutečný stroj si některé věci pamatuje. Proto MAME normálně používá složku nvram, kam si tyto uložené údaje zapisuje.
Pro běžné hraní je to vlastně fajn. Spustíte hru, něco se uloží, příště to tam pořád je. Automat si připadá jako doma, hráč je spokojený a nikdo netuší, že ve stínu čeká malý soutěžní démon.
Proč je NVRAM problém u soutěžního hraní?
Protože soutěžní záznam ve WolfMAME není video.
Když nahrajete .inp soubor, nenahrává se obrazovka jako film. Nahrává se hlavně sled vašich vstupů — kdy jste zmáčkli páčku doleva, kdy jste vystřelili, kdy jste panikařili, kdy jste zmáčkli všechno najednou a doufali v zázrak.
Při přehrávání pak WolfMAME znovu spustí hru a tyto vstupy do ní „pustí“ znovu.
Aby to fungovalo, musí hra začít ze stejného výchozího stavu jako při nahrávání. Jenže pokud má MAME uloženou NVRAM, hra může při startu načíst něco z minulosti.
Třeba trochu jiné nastavení. Jiný servisní stav. Jinou inicializaci. Jiný vnitřní údaj, který hráč vůbec nevidí.
A najednou se stane klasika:
„Mně to doma šlo přehrát.“
„Nám to nejde.“
„Ale já nic neudělal.“
„Právě.“
Input se pak může rozjet
Jakmile hra začne jen trochu jinak, záznam se může při přehrávání rozsynchronizovat.
Vaše inputy se sice přehrávají správně, ale hra už není přesně ve stejném stavu. Takže tam, kde jste původně přeskočili nepřítele, se při přehrání třeba o pixel jinak pohne obraz, nepřítel je jinde, vy skočíte do zdi, loď vybouchne, žába umře, ninja dostane po hlavě a score je v háji.
A kontrolor pak nesedí nad vaším mistrovským výkonem, ale nad záznamem, kde po deseti sekundách dobrovolně spácháte arkádovou sebevraždu.
Ale proč to tedy WolfMAME nevypne automaticky?
Protože WolfMAME je pořád MAME.
MAME se snaží co nejvěrněji emulovat skutečné automaty. A skutečné automaty NVRAM často používaly. Pro běžného hráče je zapnutá NVRAM normální a užitečná věc.
Jenže soutěžní hraní je trochu jiný svět. Tam nejde o pohodlí automatu, ale o to, aby měl každý hráč co nejčistší a co nejlépe ověřitelné podmínky.
Jinými slovy:
Pro běžné hraní je NVRAM kamarád.
Pro soutěžní záznam je to kamarád, který si něco pamatuje, ale neřekne vám co.
A takového kamaráda u ověřování score raději nechceme.
Dobrá zpráva: není to žádná věda
Vypnutí NVRAM není nic složitého. V praxi jde jen o jednoduchou úpravu v nastavení WolfMAME, kterou stačí udělat jednou a pak už na ni nemusíte myslet při každém hraní.
Konkrétně se jedná o změnu jednoho řádku v souboru mame.ini:
nvram_save 0
Podrobný návod, jak NVRAM vypnout a připravit WolfMAME pro soutěžní nahrávání, najdete u nás na webu na stránce ARKÁDISTI. Doporučujeme ho projít hlavně při první instalaci nové verze WolfMAME — ušetří to nervy hráčům i těm, kteří pak vaše výkony kontrolují.
Protože zahrát dobré score je těžké samo o sobě. Byla by škoda, kdyby ho nakonec porazila složka, která si pamatuje víc, než má 🙂