atarionline.pl Łaczenie dwóch plików xex - 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: CommentAuthorMatthewNS
      • CommentTime21 Jun 2024 22:06 zmieniony
       
      Zrobiłem sobie intro w ASCII (jest taki programik na A8 Larry's Title maker") i chciałbym go "dołączyć" do innego wykonywalnego xex (w tym przypadku FRED) tak, żeby wczytywał mi się przez samą grą. Czy da się to jakoś zrobić z poziomu Atari ewentualnie PC (chociaż wolałbym z poiomu Atari bo mam Mac-a i muszę podbierać PC synowi, jeżeli coś chodzi pod Win).
      • 2: CommentAuthormarok
      • CommentTime21 Jun 2024 23:06
       
      "tak, żeby wczytywał mi się (z intro) przed samą grą"

      to powinno być łatwe zadanie

      xex z intro trzeba by delikatnie zmodyfikować (podmienić nagłówek na nieco inny) i dokleić (append) fizycznie jako drugi xex z grą

      nagłówek bloku danych (wartości w hex) do podmiany to E002E102 na E202E302 (z "RUN" na "INIT") w pliku intra

      ten powinien się znajdować (tj. wartości do podmiany) pod adresem końcowym-5 (to ostatnie 6 wartości z czego pierwsze 4 modyfikowane pliku intra)

      wybór programu do edycji zawartości pliku jest szeroki
      (do łączenia plików może trochę mniejszy)

      chyba nawet z poziomu dos'a (nie każdego) da się to od a do z zrobić
      • 3: CommentAuthorVidol
      • CommentTime22 Jun 2024 07:06
       
      Polecam Super packer ma duże możliwości łączenia plików, przy okazji poszczególne bloki można spakować. ->link<-
      • 4: CommentAuthorMatthewNS
      • CommentTime22 Jun 2024 08:06
       
      Super Packer działa :) dzięki Panowie.
      A czy ktoś z Was by mi powiedział jak po intro zatrzymać ładowanie następnej części (czyli w tym przypadku gry) do czasu naciśnięcia jakiegokolwiek klawisza?
      • 5: CommentAuthorVidol
      • CommentTime22 Jun 2024 09:06 zmieniony
       
      w intrze musisz czekać na wciśniecie klawisza i dopiero je zakończyć.

      key lda #$ff
      sta $02fc

      l2 cmp $02fc
      beq l2
      rts
      • 6: CommentAuthorMatthewNS
      • CommentTime22 Jun 2024 11:06
       
      @Vidol dziękuje ale potrzebowałbym trochę więcej pomocy. Nie mam aż takich umięjetności. Powiesz jakiego softu użyć żeby to zrobić?
      • 7: CommentAuthormarok
      • CommentTime22 Jun 2024 11:06
       
      Mogło się zdadzyć, że łaczenie plików nie wymagało podmiany danych w intrze. ;)

      Super Packer to ze słyszenia wiem, legendarny program, gdybym tylko go kiedyś używał (mierny ze mnie praktyk) na pewno też bym o nim pamiętał wspomnieć.

      Rozumiem jednak że mamy do czynienia z gotowym plikiem intra i nie możemy wygenerować sobie dodatkowego kodu do nowej wersji 'z asemblacji', jak z przykładu Vidola.

      Więc to co jest zapisane jako 'źródło' (do asemblacji w asm 6502) tego dodatkowego kodu możemy ewentualnie scalić z intrem poprzez dopisanie ekwiwalentnych "hexów" (to właśnie robi asemblacja).

      Potrzebujemy wiedzieć dokładnie co i gdzie dopisać, oraz czy dysponujemy możliwościami edycji pliku.

      Możesz swobodnie edytować i wyszukiwać zadany ciąg danych w pliku? (czy masz takie wypróbowane narzędzie w swojej dyspozycji)
      • 8: CommentAuthorMatthewNS
      • CommentTime22 Jun 2024 13:06 zmieniony
       
      Nie mam źródłowego pliku. Intro w ASCII zrobiłem w programiku na Atari - Larry's Title Maker. Ten program od razu zapisuje projekt w pliku wykonywalnym.

      Mógłbym próbować edytować ten plik pod Omnivore, ale chyba to ponad moje siły :)

      Zrobiłem sobie też intro w Basicu (@mono mi pomógł) i dzięki programowi Fandala - BAS2COM otrzymuję plik wykonywalny. W moim intrze napisanym w BASIC-u mam w kodzie linie która zatrzymuje mi wykonywanie programu.

      Połączyłem moje intro z Basica z Fredem przez Super Packer. I tu @marok musiałem zmienić RUN na INIT.

      Scalony plik się odpala. Najpierw wchodzi intro ale po naciśnięciu klawisza nie zaczyna wczytywać Freda ale wychodzi do Basica - napis READY i koniec.

      Moj kawałek kodu w BASIC na końcu:

      10 DIM L$(120):OPEN #1,4,0,"K:":TRAP 30
      20 ? CHR$(125);:FOR I=1 TO 23:READ L$:? L$:NEXT I:GET #1,K:GOTO 20
      30 END
      101 DATA
      102 DATA ------------------------------------
      103 DATA TEST. 1234567
      104 DATA ------------------------------------
      105 DATA
      .
      .
      121 DATA ------------------------------------
      122 DATA
      123 DATA PRESS ANY BUTTON TO CONTINUE .......


      W przypadku intra stworzonego w Larry's Title Maker - Super Packer scala oba pliki - najpierw dodaje FRED poźniej INTRO (tu nie muszę zmieniać RUN na INIT) i scalony plik najpierw ładuje INTRO a póżniej zaraz FREDA.... No właśnie dosłownie ZARAZ. Za szybko... dlatego potrzebuję to zatrzymanie INTRA i uruchomienie dalszego ładowania po naciśnięciu klawisza
      • 9: CommentAuthormarok
      • CommentTime22 Jun 2024 15:06
       
      "scalony plik najpierw ładuje INTRO a póżniej zaraz FREDA.... No właśnie dosłownie ZARAZ. Za szybko... dlatego potrzebuję to zatrzymanie INTRA i uruchomienie dalszego ładowania po naciśnięciu klawisza"

      czyli chodzi o wstrzymanie ładowania

      to jak najbardziej słuszny postulat

      w takim jednak przypadku nie jestem niestety pewien jak to powinno być zrobione (może ktoś podpowie?), choć zakładam że rozwiązanie musi być najzwyczajniej proste


      zapewne można spróbować zrobić to także z poziomu tego programu w basic - wtedy rozwiązaniem jest modyfikacja linii 30 (ale tak może się zwyczajniej nie dać, o czym rozpisuję się niżej)


      problemem wtedy staje się jeszcze konieczność odłączenia banku pamięci ROM basica (to w tej zmienionej linii 30), bo pamięć tego obszaru adresowego w grze FRED jest na pewno wykorzystywana (do zapisu - to "RAM pod ROM'em") - żadna duża gra nie pozostawia tego obszaru niezagospodarowanego

      tylko że jak się odłączy basic, to jak ma się wykonać ew. reszta kodu z linii 30? - to chyba niewykonalne

      może to znaczyć, że doczytanie samej gry raczej musiałoby się odbyć z poziomu basica (w tej linii 30 i ew. kolejnych), ale chyba gra wczytuje się od razu pod adres obszaru ROM - więc i takie rozwiązanie wówczas odpada

      w takim wypadku (a można to łatwo sprawdzić z pliku gry) nie ma już możliwości (chyba) rozwiązania tego z poziomu programu w basicu
      • 10: CommentAuthorMatthewNS
      • CommentTime22 Jun 2024 22:06
       
      A takie pytanie: zamiast łączenia dwóch xex czy nie dałoby się to rozwiązać przez BAT? np START.BAT zawierający LOAD: D1:INTRO.XEX QUIT, LOAD D1:GRA.XEX. Nie wiem jak się pisze komendy w plikach BAT pod ATARI.
      • 11: CommentAuthorVidol
      • CommentTime22 Jun 2024 23:06
       
      MatthewNS możesz zapodać zrzut z okna SP i jaka to jest wersja Freda?
      Podejrzewam, że problem może być z kolejnością bloków w pliku wynikowym. Powinno być tak:
      blok INTRO
      INIT
      blok/i FRED
      RUN
      • 12: CommentAuthorMatthewNS
      • CommentTime23 Jun 2024 00:06 zmieniony
       
      Vidol, dałem radę tak jak napisałeś:

      blok INTRO
      INIT
      blok/i FRED
      RUN

      W załączeniu zrzut z SP i wersja FRED. RUN potraktowany żółtym markerem został zmieniony z INIT... i działa ale......: ja bym wolał ZATRZYMAĆ intro i po nacisnięciu klawisza kontynuować wczytywanie. Czy to się da zrobić przy pomocy SP.
      • 13: CommentAuthorVidol
      • CommentTime23 Jun 2024 06:06 zmieniony
       
      tak na szybko, ale powinno działać. Usuń ini $4966 i wklej w to miejsce wait.xex.
      • 14: CommentAuthorMatthewNS
      • CommentTime23 Jun 2024 08:06
       
      No i o to mi chodziło. Wszystko działa. Dzięki wielkie Vidol :)