[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).
| |
sformatowana | niesformatowana |
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.