Konsole

Strona g��wna

 

Spis treści



[PS2] Zapisywanie save-ów na pendrive lub dysku twardym

Obrazy kart pamięci



Obrazy kart pamięci

Emulator zapisuje save'y nie bezpośrednio na Mass czy HDD tylko do obrazu karty pamięci, który znajduje się na jednym z wymienionych medium. Wymaga to więc przygotowania takiego obrazu.

Wraz z GUI dołączone są dwa obrazy sformatowanych memorek 8MB:
  • memorycard0.bin - karta pamięci w pierwszym emulowanym slocie
  • memorycard1.bin - karta pamięci w drugim emulowanym slocie
To właśnie tych plików będzie poszukiwał emulator (ich lokalizację można określić, ale tym zajmiemy się w dalszej części tutorialu) i to właśnie na nich będą zapisywane save'y. Jako, że system plików na PS2MC zbliżony jest do FAT32, można używać obrazów nawet wielkości 3.99GB!

Obraz karty niesformatowanej to po prostu plik z ciągiem wartości 00h lub FFh - zależnie od ustawionej w *.mci flagi (np. dla 8MB będzie to 8388608 bajtów samych 00h lub FFh).

sformatowananiesformatowana

Zalecam stosować dla każdej gry oddzielne karty, ponieważ przy nieumiejętnym obchodzeniu się z emulatorem może dojść do uszkodzenia obrazów (a konkretnie ich tablic).



Pliki *.mci

Do każdej karty dołączony jest memorycardx.mci (gdzie "x" to numer slotu z memorką), który definiuje jej budowę (bez takiego pliku karta zawsze będzie widziana jako niesformatowana i za każdym razem gra zapyta czy ją sformatować!).

Podglądając jego zawartość, ujrzymy ciąg bliżej nieokreślonych wartości ;]

4D43 4932 0002 0200 0040 0000 2B00 0000h

  • 4D43 4932h - "MCI2", czyli oznaczenie formatu (nagłówek).
  • 0002h - wielkość strony (w tym przypadku 512B, może być też 1024B).
  • 0200h - wielkość bloku w stronach, a więc w tym przypadku 2x512B (może być też 1x1024B).
  • 0040 0000h - całkowita ilość stron na karcie, a więc niejako jej pojemność (16384 strony czyli 8MB).
  • 2B00 0000h - flagi - pole bitowe (na jednym bajcie):

    • 0x01 - Karta obsługuje ECC.
    • 0x08 - Karta może posiadać bad blocki (jeśli będzie jakiś bad block to bez tej flagi się nie włączy).
    • 0x10 - Wyczyszczone bloki mają wszystkie bity ustawione na zero (w przeciwnym wypadku na 1) - czyli czyszczenie albo 0x00 albo 0xFF. Większość kart czyści na 0xFF.

      Pozostałe nie są znane (ale z pewnością mają jakiś wpływ)
Cała magia polega na sumie logicznej poszczególnych flag. Aby to przedstawić obrazowo, przyjrzyjmy się jak wygląda 0x2B w postaci binarnej:

00101011 - a więc jest to suma liczb 1, 10, 1000 i 100000.

Spójrzmy teraz na te same liczby w postaci hexadecymalnej: 0x01, 0x02, 0x08 i 0x20. Dodając je do siebie otrzymamy właśnie 0000002Bh. Pozostaje już tylko odwrócić całość, aby otrzymać upragnione 2B000000h. A skoro już przy tym jesteśmy: w pliku *.mci wszystkie liczby zapisane są właśnie w Little Endian.

Oczywiście wszystkie te wartości możemy dostosować do naszych potrzeb, zalecam jednak pozostawić to tak jak jest. Karta jest zdecydowanie szybsza (odczyt/zapis).


Powyższe hieroglify zainteresują pewnie tylko nielicznych. Przeciętnemu czytelnikowi oszczędziłem już takiej zabawy, dodając do emulatora gotowe obrazy kart i ich pliki konfiguracyjne (choć w razie braku takowych, emulator sam je wygeneruje).

Ten artykuł komentowano 108 razy. Zobacz komentarze.