znowu odgrzewam temat, znowu absolutnie banalną dla wtajemniczonych prośbą o pomoc. potrzebuję przekompilować playerek dla 4 kanałowych plików monofonicznych przygotowany przez maroka do wykorzystania w tbxl. Zależy mi na tym aby adres USR zaczynał się od $a400, a adres playera odpowiednio za usr ($a500?)
pomożecie? lamersko nie wiem nawet jak do tego się zabrać dzięki
Pamiętam że procedura USR ma zawsze jednakową postać po kompilacji - niezalażnie od wybranego adresu (oryginalnie $600 ale skompiluje tak samo jakby miało to być $a400).
Ta procedura USR nie jest playerem a rodzajem nakładki która pozwala na działanie oryginalnego playera RMT w środowisku basica. Konkretnie to chodzi o dzielenie się dostępem do tych samych obszarów strony zerowej z których korzysta zarówno player RMT (na czas przerwania) jak i basic.
Jeśli przenieść ją do zmiennej to można nie znając nawet konkretnego adresu (tak mi się wydaje) z niej korzystać poprzez wywołanie funkcji USR.
Można ją przenieść do programu jako zmienną poprzez procedurę w basicu którą podawałem, ale chyba są i inne sposoby (to już inni muszą pomóc).
Oryginalny player RMT trzeba za to skompilować już pod konkretny adres. Zakładając że chcesz go powyżej adresu $a400, to etykieta PLAYER musi być równa adresowi $a800 (zawsze musi to być granica strony i trzeba pozostawić miejsce na dane które kompilują się przed nominalnym adresem playera, dla muzyczek w mono pierwszy wolny bajt przed playerem jest mniejszy o $320 bajty od adresu wyznaczonego dla etykiety PLAYER; w Twoim wypadku pierwszy bajt playera rozpoczynałby się od adresu $a4e0).
Na teraz tyle. Z pewnością może to być niewystarczające co napisałem.
W komentarzu #20. jest jak mi się wydaje właściwe źródło procedury USR (trzeba tylko poprawić "tis equ 205" na "tis equ 206".
Co do playera RMT to jest w pakiecie z tym że należy odnaleźć i poprawić zapis: " org 206 ;bylo 203 p_tis"
Player RMT powinien mieć skonfigurowany pod konkretną muzyczkę plik pomocniczy rmt_feat.a65 (File/Export As...). Trzeba skopiować zawartość tekstową z okienka i zapisać pod tą właśnie nazwę. Później już można kompilować właściwy plyer RMT.
procedura jest odpowidzialna za wyświetlanie grafiki graczy i pocisków i ma sygnaturę: A = USR(PMMOVE,PLAYER#,SHAPE,SIZE,X,Y) PMMOVE - adres procki - sama procka jest załadowana do tablicy znaków, player - numer gracza, shape - adres kształtu (u mnie adres tabliy znaków), size (wysokośc w pionie), x i y wiadomo
problem polega na tym, że sama procka gryzie się z playerem opisanym w tym wątku i zupełnie nie wiem dlaczego z tego co widzę procka bardzo szybko kopiuje kształt ducha do obszaru pamięci na duchy i tego ducha wyświetla. po uruchomieniu muzyczki - jest git, ale wywołanie procki kaszani wszystko (np kształt duchów). jestem przekonany (albo zwariowałem), że procedura USR maroka, player i muza jest w obszarze pamięci innym niż stuff dotyczący PMG. sprawa jest o tyle dziwna, że wywołanie procki PMG i muzy działa (taka kolejność). Nie działa wywołanie muzy (wiadomo ładuję na początku) a potem samej procki. Jaka może być przyczyna takiego zachowania? z góry dziękuję za pomoc.
z tego co mono pisał, na stronie zerowej można wykorzystać jakieś różne adresy (np bufor drukarki) itp - komentarz#19. Czy przepisanie procki z komentarza #20 jest realne i możliwe tak, aby korzystała z nieco innych adresów na stronie zerowej. Co trzeba ewentualnie tam zmienić? (jestem noga z asma). A zależy mi na wykorzystaniu pmtoolkita i playera razem pod tbxl.
znowu z góry dziękuję za pomoc, nawet jeśli to co powyżej napisałem nie ma za bardzo sensu:) marok wspomniał o współdzieleniu adresów na czas przerwania, boję się że pmtoolkit robi coś podobnego i mamy trzech graczy do jednego zasobu, przez co od strony samej procki maroka jakiekolwiek ruchy niewiele pomogą. czy dobrze to rozumiem?
"sprawa jest o tyle dziwna, że wywołanie procki PMG i muzy działa (taka kolejność). Nie działa wywołanie muzy (wiadomo ładuję na początku) a potem samej procki."
Najprawdopobniej więc procka PMG ładuje pod wektor 2. fazy przerwania vblank ($224-$225) czyli ten sam z którego korzysta procka do obsługi playera RMT, swój adres a dotychczasową zawartość ignoruje (zakładając że jest tam oryginalna zawartość do procedury w romie).
Żeby to zmienić należałoby zaingerować w prockę do PMG.
Albo raczej to inny problem, bo chyba jednak procka PMG nie musi korzystać z przerwań.
czy istnieje jakiś skrypcik do zamiany kodu w postaci linii data (liczby, w sensie) do mnemoników asma? ta procka nie jest taka wielka, mieści się w zmiennej o długości 202 bajty, a procka pomocnicza to zaledwie 48 bajtów. po wywołaniu procki pomocniczej (bardzo szybko wypełnia zerami daną ilość stron pamięci od określonego adresu) muza też nie trybi. może źle szukam....