atarionline.pl Zmiana wartości komórek w pliku xex (lub innym). - Forum Atarum

Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

  • :
  • :

Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

    • 1:
       
      CommentAuthorstring
    • CommentTime30 Dec 2020 zmieniony
     
    Czy jest jakiś prosty sposób (dla laików) na podmianę komórek pamięci w plikach xex, atr itd? Chodzi np. o zmianę ilości żyć, koloru postaci itp. i zapisanie takiego zmienionego pliku.
    Kombinuję w Altirra (opcja cheat) i udało mi się np. zmienić brzydkie zielone kolory postaci w grze Incydent, ale nie ma opcji zapisania takiego xex'a.
    • 2:
       
      CommentAuthorpirx
    • CommentTime30 Dec 2020
     
    to nie takie trywialne, bo xexy albo dane na atr'ach mogą się dekompresować, być przenoszone, itp.
    ale jak masz prosty plik bez żadnego kombinowania to możesz w hexedytorze jakimś odnaleźć odp. sekwencję i podmienić.
    • 3: CommentAuthorAdam
    • CommentTime30 Dec 2020
     
    Tak jak napisał Pirx, to może być nietrywialne, ale dla standardowych przypadków może lepiej niż zwykłego hex editora użyć jakiegoś pecetowego narzędzia do kodu 6502 z wbudowanym edytorem heksadecymalnym, np. Omnivore: ->link<-
    • 4:
       
      CommentAuthorjhusak
    • CommentTime30 Dec 2020 zmieniony
     
    Chyba najprostszy sposób na podmiankę xex to doklejenie jeszcze jednego bloku z podmienianymi bajtami. Jeśli wiesz, że pod adresem $2345 musisz podmienić $3 na $30, to dolepiasz na końcu pliku xex bajty:
    45,23,45,23,30

    A robi się to pod linuxem/osx tak:
    echo 4523452330 | xxd -r -ps >>gra.xex

    Wówczas RUN wykona się po wszystkim, inity tam, gdzie są, więc w skompresowanych xexach też powinno działać.

    Druga metoda - jest na Win/OSX taki xex edytor OMNIVORE, który wczytuje oddzielnie poszczególne bloki i pozwala na ich edycję.

    ->link<-

    Z ATR jest gorzej/lepiej, trzeba w atr szukać sekwencji pamięci znalezionej w emulatorze i ją podmienić jakimś hexeditorem.
    Jeśli atr jest dosowy, do może się zdarzyć, że taka sekwencja wystąpi na granicy sektorów. Wówczas należy wyekstrachować pliki, znaleźć w nich sekwencję, zapisać i podmienić zmieniony plik na oryginalnym ATR. Z tym "lepiej" jest tak: atr-y nie są kompresowane.

    O, Adam, uprzedziłeś mnie z tym Omnivore :)
    • 5:
       
      CommentAuthorstring
    • CommentTime30 Dec 2020
     
    Ok, dzięki za sugestie, spróbuję się pobawić.
    • 6:
       
      CommentAuthorstring
    • CommentTime31 Dec 2020
     
    Coś nie idzie mi z tym OMNIVORE. W altirze podmieniam w komórce $02C0-$02C3 wartości kolorów sprite i działa, ale już w pliku xex tej samej gry (w oknie deasemblacji) nie mogę znaleźć odwołań do tychże komórek. Jak to ew. odnaleźć? Sprawdzałem też obecność $D012-$D015, ale bez powodzenia.
    • 7: CommentAuthorbob_er
    • CommentTime31 Dec 2020
     
    Najlepiej by było jakąś pułapkę zastawić na zapis do tych komórek. Wtedy Altira do Ci cynk kto tam kombinuje.
    Bo sam zapis nie musi być robiony przez 'STA $02c0' (najłatwiejszy do znalezienia), może być zrobiony przez 'STA $02bf,x' - i tutaj będzie trochę trudniej. A może być też kod samomodyfikujący - i wtedy to już całkiem niebanalne, bo na etapie szukania takiego rozkazu faktycznie może go jeszcze nie być.
    • 8:
       
      CommentAuthorshanti77
    • CommentTime31 Dec 2020 zmieniony
     
    W oknie "history" (trzeba włączyć przy CPU "Record instruction history") wpisujesz w "search" adres szesnastkowo i altirra znajdzie ci odwołania do niego w kilku ostatnich ramkach.
    Można też dodać pułapkę:

    ba w $2c0 L4

    Powinno zadziałać przy próbie zapisu do komórek $2c0-$2c3