CommentTime29 Oct 2025 21:05 (3 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;