מהו קובץ CSO?
קובץ עם סיומת .cso הוא קובץ תמונת ISO דחוס. ה-CSO הוא חלופה לשיטת הדחיסה של DAX; ידוע גם בשם CISO; הייתה השיטה הראשונה לדחיסת קבצי ISO והיא בדרך כלל שיטה מועדפת לארכיון דברים של PlayStation Portable. פורמט זה משתמש בדחיסה Deflate, שיכולה לכלול עד תשע שכבות דחיסה. תוכנות כגון Prometheus ו-YACC משמשות ליצירת התמונות.
פורמט קובץ CSO
פורמט הקובץ CSO היה שיטת הדחיסה הראשונה עבור ISO לחיסכון נוסף בשטח זיכרון. השיפורים נעשו מעת לעת לדחיסה טובה יותר. ה-CSO משתמש בדחיסה של Deflate עם תשע רמות של קביעות מוגדרות מראש, בדרך כלל, כל רמה יכולה להתמודד עם 2 בלוקים של KiB בנפרד. בעוד שרמות הדחיסה הגבוהות ביותר יכולות להאט וזמני טעינה ארוכים בתוכנה שתלויה במידה רבה בהזרמת דיסקים, גם הרמות הנמוכות יכולות לבצע דחיסה משמעותית.
מבנה קובץ CSO
פורמט הקובץ CSO מכיל כותרת של 24 בתים, בלוקי נתונים וטבלת אינדקס. ההנחה היא ליטל-אנדיאן עבור שדות הגדולים מבייט. עוצמת הארכיטקטורה של PlayStation Portable מובאת להלן.
כותרת
היסט (בתים) | שם | גודל (בתים) | מטרה |
---|---|---|---|
0x0 | קסם | 4 | תמיד CISO, או 0x4F534943 כאשר קוראים אותו כמספר שלם של 32 סיביות. שדה זה משמש לזיהוי קובץ CSO. שימו לב ששדה זה יכול להיות שונה עבור הנגזרות האחרות של CSO, למשל, ZSO השתמש בקוד הקסם ZISO. |
0x4 | גודל כותרת | 4 | עבור פורמט הקובץ המקורי של CSO “v1”, מתעלמים משדה זה ולכן לא נדרש להיות מדויק. עם זאת, פורמט “v2” ו-ZSO דורשים ששדה זה יהיה תמיד 0x18 (24 בתים). |
0x8 | גודל לא דחוס | 8 | גודל ה-ISO המקורי הלא דחוס בבתים. |
0x10 | גודל בלוק | 4 | הגודל של כל בלוק נתונים בבתים לפני הדחיסה. בדרך כלל 2048 בתים, זהה לגודל של כל מגזר ISO 9660. |
0x14 | גרסה | 1 | הגרסה של פורמט הקובץ בשימוש. עבור פורמט “v1”, הערך יכול להיות 0 או 1. עבור פורמט “v2”, זה חייב להיות 2. בנוסף, פורמט ZSO מחייב שזה יהיה 1. |
0x15 | יישור אינדקס | 1 | היישור של כל ערך אינדקס, המצוין בסיביות. |
0x16 | שמור | 2 | שדה זה אינו בשימוש. בפורמט “v1”, מתעלמים משדה זה והוא עשוי להכיל ערכים שרירותיים. בפורמט “v2”, שדה זה חייב להיות אפס. |
טבלת אינדקס
טבלת האינדקס מכילה מספר ערכים של 4 בתים, המציינים את מיקומו של כל בלוק נתונים, וערך אחרון נוסף המצביע על סוף הקובץ. התוכן של כל ערך הוא כדלקמן:
קצת | אורך | מסכה | שם | מטרה |
---|---|---|---|---|
0 | 31 | 0x7FFFFFFF | עמדה | שדה זה, כאשר הוא מוזז שמאלה על ידי יישור האינדקס המופיע בכותרת, נותן את המיקום שבו בלוק הנתונים מתחיל. |
31 | 1 | 0x80000000 | סוג דחיסה | לפורמט ZSO יש סמנטיקה דומה, רק ש-0 מייצג LZ4 במקום Deflate. בפורמט “v2”. הבלוק נחשב באופן מרומז כלא דחוס אם גודל הבלוק שווה או גדול מגודל הבלוק שצוין בכותרת הקובץ. |
חסימות נתונים
בלוקי הנתונים מורכבים מהנתונים הלא דחוסים או הדחוסים. גודלו של בלוק מחושב על ידי קבלת מיקומו, ולאחר מכן הפחתה מהמיקום של הבלוק הבא. אם יישור האינדקס גדול מאפס, סביר להניח שגודל הבלוק גדול מהנתונים שהוא מחזיק.
הפניות
- N/A