Autor Wątek: Bawimy się Bajtami - czyli ingerencja w pamięć RAM gier  (Przeczytany 1807 razy)

siudym

  • Gość
Nie jest to wprawdzie odkrycie ameryki, ale temat bardzo ciekawy. Sporo osob pewnie nigdy nie bawila sie w ingerowanie w RAM w czasie trwania gry.

Cala operacja bywa zabawna i warto nawet dla odrobiny smiechu sprobowac;)

O co chodzi: Odpalamy jakis EMU, ktory posiada mozliwosc podgladu pamieci RAM NES'a w trakcie dzialania gry oraz mozliwosc ingerowania w jej wartosci. FCEU posiada mozliwosc "zamrozenia" danej komorki w pamieci aby gra nie miala mozliwosci jej zmiany.

Przykladowo odpalam Hudson Hawk. Patrzymy na pamiec i wynajdujemy ofiary czyli bajty, ktore juz na oko zdradzaja do czego sa uzyte - trzeba zerkac na to co sie dzieje w grze i na zmiany w pamieci. Np. mamy bajty zmieniajace kierunek ruchy przeciwnikow (00/01). Zamrozenie bajtu spowoduje, ze przeciwnik nie zawroci i bedzie lazł slepo przed siebie  :) To tylko jeden taki przyklad, mozliwosci sa przeogromne np. zablokowanie ataku przeciwnika itd. Ogolnie nawet jakas mocno przewalkowana gra moze stac sie ciekawsza gdy cos w niej pozmieniamy.

http://www.youtube.com/watch?v=GXvfzYABmfI

SMB1 - zastopowanie przeciwnikow
http://www.youtube.com/watch?v=696VMO3_UXE

Gimmick! - to samo, przeciwnicy stoja w miejscu.
http://www.youtube.com/watch?v=KyswAByW364

I mix kilka gier:
http://www.youtube.com/watch?v=DPtmOnHd1BE

« Ostatnia zmiana: 24.01.2016, 18:21:12 wysłana przez siudym »

VertekS

  • Aktywny użytkownik
  • ***
  • Wiadomości: 225
    • Zobacz profil
Odp: Bawimy się Bajtami - czyli ingerencja w pamięć RAM gier
« Odpowiedź #1 dnia: 24.01.2016, 19:54:15 »
Sam się bawiłem zamrażaniem RAM w paru grach - ten eksperyment pokazuję, jakim wyzwaniem było spięcie gry do wydania komercyjnego - wystarczy zmienić jedną komórkę pamięci / źle wykonać obliczenia i gry się sypią całkowicie w nieprzewidziany sposób. Pozdrawiam tych, którzy musieli odpluskwiać takie błędy, jak ten w Flintstones 2, który zaprezentowałeś - co takiego tam zrobiłeś w RAM?

siudym

  • Gość
Odp: Bawimy się Bajtami - czyli ingerencja w pamięć RAM gier
« Odpowiedź #2 dnia: 24.01.2016, 20:54:26 »
Wiesz jak sie programuje w asemblerze nieco, to latwiej wygrzebac bajt odpowiedzialny za dana funkcje :)
Robimy cos w grze i zerkamy gdzie zmienia sie dany bajt.
Przykladowo w Flintstonach gdy wykonujemy skok, musi byc zapisana gdzies w pamieci roznica na osi Y miedzy miejscem wykonania skoku, a jego powrotem. Jesli zablokujemy taki bajt, skok sie wykona ale gra nie wie kiedy zakonczyc powrot skoku, wiec konczy go nie majac informacji o powrocie. Tak bym to ogolnie wytlumaczyl na szybko.

To raczej nie sa bledy, ale pokazanie jak wazny jest kazdy uzyty bajt pamieci.

matizc

  • Stały bywalec PG
  • *****
  • Wiadomości: 503
    • Zobacz profil
Odp: Bawimy się Bajtami - czyli ingerencja w pamięć RAM gier
« Odpowiedź #3 dnia: 24.01.2016, 22:26:16 »
@UP ciekawy ten eksperyment. Mam pytanie, a co dzieje się z grzybkami, które powiększają Mario ? ruszają się jak zbijesz murek ?

siudym

  • Gość
Odp: Bawimy się Bajtami - czyli ingerencja w pamięć RAM gier
« Odpowiedź #4 dnia: 24.01.2016, 23:03:00 »
Ruszaja sie - ja zablokowalem jedynie enemies.

Kolejna gra sprawdzilem - RAF WORLD
Przeciwnicy stoja w miejscu (poza tymi latajacymi, bo nie szukalem ich bajtow)

http://www.youtube.com/watch?v=VO_YAnI7Ufc

Jak ktos chce sam sie pobawic, to na screenie niech zamrozi te bajty na czarno - mozna juz po odpaleniu gry na ekranie tyt, nie trzeba w czasie gry:

zakladka DEBUG->HEX EDITOR->zanaczamy bajty->prawy myszy->Freeze/UnFreeze Address-> FREEZE
(po takicj zabawach trzeba pamietac o wyczyszczeniu zmian, bo FCEU nawet po zamknieciu emulatora/programu zapamieta zmiany dla danej gry!)  


Zamrozic tylko ten lewy bajt, prawy NIE :) Ciekawszy efekt

EDIT: Znalazlem ciekawy bajt! Zauwazylem, ze zmniejszal swoja wartosc gdy strzelano do postaci - wiec to licznik energii :)
Zamrozic go i mamy niesmiertelnosc na strzelanie i kolizje z przeciwnikiem - ten na czarno zaznaczony "B0" ;)


A tutaj Gonitwa za TURBO SLIMAKIEM w Wacky Races :)
http://www.youtube.com/watch?v=LFe3il3nAjU

Werewolf - brak przeciwnikow.
http://www.youtube.com/watch?v=PfxEIcP-iHg

Krion Conquest + Ballon Fight
http://www.youtube.com/watch?v=_ASigrkMP_4
« Ostatnia zmiana: 25.01.2016, 20:49:44 wysłana przez siudym »