CAR

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 12:36, 16 gru 2023
Jhusak (Dyskusja | wkład)

← Previous diff
Wersja z dnia 12:42, 16 gru 2023
Jhusak (Dyskusja | wkład)

Next diff →
Linia 13: Linia 13:
Zaraz po nagłówku umieszczone są dane kartridża: 4, 8, 16, 32, 40, 64, 128, 256, 512 lub 1024 kilobajtów, jednak mogą zdarzać się kartridże o innej pojemności. Sposób przełączania pomiędzy bankami (o ile kartridż ma mechanizm przełączania banków) definiowany jest w logice obsługi kartridża w emulatorze. Ostatnie 4 bajty nagłówka są nieużywane (wypełnione zerami). Są pomysły, aby je wykorzystać przy kartridżach typu eeprom, flash lub ram. Zaraz po nagłówku umieszczone są dane kartridża: 4, 8, 16, 32, 40, 64, 128, 256, 512 lub 1024 kilobajtów, jednak mogą zdarzać się kartridże o innej pojemności. Sposób przełączania pomiędzy bankami (o ile kartridż ma mechanizm przełączania banków) definiowany jest w logice obsługi kartridża w emulatorze. Ostatnie 4 bajty nagłówka są nieużywane (wypełnione zerami). Są pomysły, aby je wykorzystać przy kartridżach typu eeprom, flash lub ram.
 +
 +Suma kontrolna obliczana jest jako suma wszystkich bajtów licząc od 0.
 +
 +Funkcja obliczająca sumę kontrolną wzięta z kodu Atari800:
 +
 + int CARTRIDGE_Checksum(const UBYTE *image, int nbytes)
 + {
 + int checksum = 0;
 + while (nbytes > 0) {
 + checksum += *image++;
 + nbytes--;
 + }
 + return checksum;
 + }

Wersja z dnia 12:42, 16 gru 2023

Format pliku definiujący dane i rodzaj kartridża Atari 8-bit. Składa się z 16-bajtowego nagłówka i surowych danych kartridża.

Struktura nagłówka:

OffsetWielkośćZnaczenie
04 bajtyznaki 'C', 'A', 'R', 'T'
44 bajtyTyp kartridża MSB format
84 bajtySuma kontrolna MSB format (tylko romy)
124 bajtyNieużywane

Zaraz po nagłówku umieszczone są dane kartridża: 4, 8, 16, 32, 40, 64, 128, 256, 512 lub 1024 kilobajtów, jednak mogą zdarzać się kartridże o innej pojemności. Sposób przełączania pomiędzy bankami (o ile kartridż ma mechanizm przełączania banków) definiowany jest w logice obsługi kartridża w emulatorze. Ostatnie 4 bajty nagłówka są nieużywane (wypełnione zerami). Są pomysły, aby je wykorzystać przy kartridżach typu eeprom, flash lub ram.

Suma kontrolna obliczana jest jako suma wszystkich bajtów licząc od 0.

Funkcja obliczająca sumę kontrolną wzięta z kodu Atari800:

int CARTRIDGE_Checksum(const UBYTE *image, int nbytes)
{
       int checksum = 0;
       while (nbytes > 0) {
               checksum += *image++;
               nbytes--;
       }
       return checksum;
}
Personal tools