Pliki zasobów
Składnia plików RC
Pliki RC
są zwykłymi plikami tekstowymi. Zawierają listę zasobów, które należy włączyć do kompilowanego pliku.
Podstawowy element składni wygląda następująco:
NazwaZasobu TypZasobu NazwaPliku [0 0 0 0 0 0 0 0]
RCLABEL RCTYPE RCFILE [PAR0, PAR1, PAR2, PAR3, PAR4, PAR5, PAR6, PAR7]
W treści pliku RC
mogą znaleźć się komentarze, poprzedzone znakiem ;
lub #
. Przykład pliku RC
:
; to jest player MPT
mpt_player MPTPLAY
# to jest modul
mpt_modul MPT 'porazka.mpt'
dane RCDATA 'dane.xex' 6
Typ zasobu określa format włączanego pliku.
Typ zasobu | Opis |
---|---|
RCDATA | Dowolny typ danych, np.: |
label RCDATA 'filename' | |
label RCDATA 'filename' OFFSET | |
EXTMEM | Dowolny typ danych ładowany do pamięci dodatkowej PORTB , adres ładowania ustalany jest na podstawie RCLABEL |
RCASM | Plik w assemblerze, który zostanie dołączony i zasemblowany (makra nie są dozwolone). |
DOSFILE | Plik z nagłówkiem Atari DOS, adres ładowania takiego pliku powinien być identyczny jak RCLABEL |
RELOC | Plik relokowalny w formacie Mad Assemblera, plik zostanie poddany relokacji pod wskazany adres RCLABEL |
RMT | Plik modułu Raster Music Tracker-a, plik zostanie poddany relokacji pod wskazany adres RCLABEL |
MPT | Plik modułu Music ProTracker-a, plik zostanie poddany relokacji pod wskazany adres RCLABEL |
CMC | Plik modułu Chaos Music Composer-a, plik zostanie poddany relokacji pod wskazany adres RCLABEL |
SAPR | Plik z danymi SAP-R, plik zostanie załadowany pod wskazany adres RCLABEL |
RMTPLAY | Player dla modułu RMT, jako RCFILE podajemy plik .FEAT oraz PAR0 , tryb playera 0..3: |
0 => compile RMTplayer for 4 tracks mono | |
1 => compile RMTplayer for 8 tracks stereo | |
2 => compile RMTplayer for 4 tracks stereo L1 R2 R3 L4 | |
3 => compile RMTplayer for 4 tracks stereo L1 L2 R3 R4 | |
oraz opcjonalnie PAR1 jako adres dla zmiennych na stronie zerowej (domyślnie $E0 ) |
|
SAPRPLAY | Player SAP-R LZSS, nie wymaga podawania nazwy pliku RCFILE , adres RCLABEL tylko od początku strony |
MPTPLAY | Player dla modułu MPT, nie wymaga podawania nazwy pliku RCFILE |
CMCPLAY | Player dla modułu CMC, nie wymaga podawania nazwy pliku RCFILE |
XBMP | Plik Windows Bitmap (8 BitsPerPixel) ładowany do pamięci VBXE pod wskazany adres RCLABEL od indeksu koloru PAR0 w palecie kolorów VBXE nr 1 |
Możliwość ładowania zasobów pod ROM
CMC RAM / ROM
CMCPLAY RAM / ROM
DOSFILE RAM / ROM
EXTMEM
MPT RAM / ROM
MPTPLAY RAM / ROM
RCASM RAM / ROM
RCDATA RAM / ROM
RELOC RAM
RMT RAM / ROM
RMTPLAY RAM
XBMP
SAPR RAM / ROM
SAPRPLAY RAM / ROM
Włączenie do aplikacji pliku RC
W kodzie źródłowym programu należy wpisać dyrektywę kompilatora (np. na początku sekcji implementacji):
{$R mojezasoby.rc}
Dodatkowo należy podać w kodzie programu wartość dla etykiet RCLABEL
odpowiednich zasobów, np.:
const
mpt_player = $8000;
mpt_modul = $9000;
Włączenie pliku RC
następuje w momencie kompilacji programu.
Jeśli adres zasobu wskazuje adres pod ROM
($C000..$FFFF
) wówczas wyłączany jest ANTIC
. Przy uruchomieniu programu należy wpisać odpowiednią wartość do rejestru DMACTL
aby włączyć obraz z powrotem.
Dostęp do zasobów.
Zasoby umieszczane są pod wskazanymi RCLABEL
adresami w pamięci. Jedynym wyjątkiem jest typ zasobu RCDATA
i SAPR
dla których możliwe jest pominięcie definicji RCLABEL
w kodzie programu.
W przypadku braku definicji RCLABEL
zasób zostaje dołączony do kompilowanego programu, dostęp możliwy jest poprzez procedurę GetResourceHandle
.
GetResourceHandle(pointer, 'rclabel');
Procedura GetResourceHandle
ustala wartość wskaźnika POINTER dla zasobu RCLABEL
.
SizeOfResource(variable, 'rclabel');
Procedura SizeOfResource
zwraca długość zasobu RCLABEL
w zmiennej VARIABLE.
RCASM
W zasobach
ASM
nie ma możliwości używania makr.
SAPRPLAY
Player SAP-R LZSS wymaga podania adresu od początku strony pamięci. Główny kod playera zajmuje $0300 bajtów, bufory $0900, w sumie $0C00 bajtów.
SAP-R jest to plik z kolejnymi wartościami rejestrów POKEY-a ($D200..$D208
). Zapis pliku SAP-R umożliwia emulator Altirra, lub program RMT2LZSS.