atarionline.pl Relokacja MD1 pomyślna, ale player crashuje - 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: CommentAuthortonual
      • CommentTime29 Oct 2025 21:05 (2 godzin temu) zmieniony
       
      Na podstawie makra, które relokuje dane .md1 w czasie kompilacji:
      ->link<-

      piszę wersję w MP, które robi to w czasie działania programu, ładując dane z dysku:
      ->link<-
      LoadAndRelocateMD1(Const filename: String; new_address: word);

      Dobra wiadomość jest taka, że dla tego samego pliki .md1 relokacja dokonuje się identycznie w obu przypadkach. Aby to sprawdzić, zrzuciłem do plików pamięć a8 (od adrs $5000) i porównałem zawartości w hexDiff.

      Jest identyczna, również dla sampli.

      Do tego celu zestawiłem zrzut pamięci z działania relokacji w przykładzie md1_play.pas (repozytorium Mad Pascala).
      ->link<-


      Ale rozpacz bierze bo player .md1 crashuje a8 przy próbie zagrania.
      (Oczywiście wersja md1_play.pas odgrywa ten sam modułek poprawnie)

      Proszę o wskazówkę, co mogło pójść nie tak, skoro dalej jest już ta sama litania:
      msx.player := pointer(md1_player);
      msx.modul := pointer(module_addr);
      msx.sample := pointer(sample_addr);
      msx.init;

      P.S załączam obraz dysku z którego korzystam