Rev 796 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
╬яшёрэшх ЇюЁьрЄр FDI-Їрщыр┬хЁёш 1.1 (╙уыхъют ╩.)┬хЁёш 2 (deathsoft)╧ЁшьхЁ ЁхрышчрЎшш ўЄхэш /чряшёш fdi тхЁёшщ 1 ш 2 ьюцэю яюёьюЄЁхЄ№ тwldr_fdi.cpp ¤ьєы ЄюЁр UnrealSpeccy v0.38.3╬с∙є■ ёЄЁєъЄєЁє fdi Їрщыр ьюцэю яЁхфёЄртшЄ№ т ёыхфє■∙хь тшфх:TFdiHdr - яЁшёєЄёЄтєхЄ тёхуфрTFdiAddInfo - яЁшёєЄёЄтєхЄ т ЇюЁьрЄх 2 ш т√°х (т ЇюЁьрЄх 1 юЄёєЄёЄтєхЄ)TTrkHdr[c*h] - ьрёёшт чруюыютъют фюЁюцхъ...FdiTrkData[] - ьрёёшт яхЁхьхээющ фышэ√ ё фрээ√ьш фюЁюцхъ...(ЇюЁьрЄ 2 Єшя 1 (шэЇюЁьрЎш ю ёсющэ√ї срщЄрї))TFdiTrkAddInfo[] - ьрёёшт яхЁхьхээющ фышэ√ ё фюяюыэшЄхы№эющ шэЇюЁьрЎшхщ ю фюЁюцърї...FdiTrkAddData[] - ьрёёшт яхЁхьхээющ фышэ√ ё фрээ√ьш ёсющэ√ї срщЄют фы Єхї фюЁюцхъ уфх юэш хёЄ№╘юЁьрЄ чруюыютър Їрщыр╤ЄЁєъЄєЁр TFdiHdr:------------------------------------------------------------------------------╤ьх∙хэшх ─ышэр яюы ╬яшёрэшх------------------------------------------------------------------------------0 3 ╩ы■ўхтр ьхЄър 'FDI'3 1 ╘ыру чр∙шЄ√ чряшёш (0 - write enabled, 1 - write disabled)4 2 ╫шёыю ЎшышэфЁют6 2 ╫шёыю яютхЁїэюёЄхщ8 2 ╤ьх∙хэшх ЄхъёЄр (ъюЁюЄъшщ ъюььхэЄрЁшщ ъ фшёъє)A 2 ╤ьх∙хэшх фрээ√ї╤ 2 ─ышэр фюяюыэшЄхы№эющ шэЇюЁьрЎшш т чруюыютъх.┬ тхЁёшш 1.0 - 0x0000┬ тхЁёшш 2 - ЁрчьхЁ ёЄЁєъЄєЁ√ TFdiAddInfo (ёь. "╘юЁьрЄ фюяюыэшЄхы№эющ шэЇюЁьрЎшш")E "─ышэр фюяюыэшЄхы№эющ шэЇюЁьрЎшш" (хёыш 0, Єю фюяюыэшЄхы№эющ шэЇюЁьрЎшш эхЄ)ёь. "╘юЁьрЄ фюяюыэшЄхы№эющ шэЇюЁьрЎшш"E+"фышэр фюяюыэшЄхы№эющ шэЇюЁьрЎшш"???╬сырёЄ№ чруюыютъют ЄЁхъют. ╟фхё№ ёюсЁрэр тё шэЇюЁьрЎш юЇюЁьрЄх фшёъхЄ√. ▌Єр юсырёЄ№ фюыцэр ёюфхЁцрЄ№ эх ьхэ№°х"╫шёыю ЎшышэфЁют"*"╫шёыю яютхЁїэюёЄхщ" чруюыютъют. ╟руюыютъшшфєЄ т яюЁ фъх Cyl 0 Head 0, Cyl 0 Head 1, Cyl 1 Head 0 ш Є.ф.╘юЁьрЄ чруюыютър юяшёрэ эшцх."╤ьх∙хэшх ЄхъёЄр"???╩юььхэЄрЁшщ ъ фшёъє.╩юэхЎ ъюььхэЄрЁш - эєыхтющ ёшьтюы.MAKEFDI яЁш ёючфрэшш эютюую Їрщыр яючтюы хЄ ттюфшЄ№ ъюььхэЄрЁшщэх сюыхх 64 ёшьтюыют ё чртхЁ°р■∙шь эєыхь,эю яЁш ЁрсюЄх ё Їрщыюьфышэр ¤Єюую яюы сєфхЄ юяЁхфхы Є№ё яю яюыюцхэш■ чртхЁ°р■∙хуюэєыхтюую ёшьтюыр"╤ьх∙хэшх фрээ√ї"???╟фхё№ ыхцрЄ ёюсёЄтхээю фрээ√х шч ёхъЄюЁют. ╤ъюы№ъю чфхё№ сєфхЄёхъЄюЁют, шї фышэр ш яюЁ фюъ ёыхфютрэш - чртшёшЄ юЄ ЇюЁьрЄр.-------------------------------------------------------------------------------╘юЁьрЄ FDI-Їрщыр фюяєёърхЄ яЁюяєёъш ьхцфє юсырёЄ ьш чруюыютъют ЄЁхъют,ЄхъёЄют√ьъюььхэЄрЁшхь ш юсырёЄ№■ фрээ√ї.╘юЁьрЄ чруюыютър ЄЁхър╤ЄЁєъЄєЁр TTrkHdr:------------------------------------------------------------------------------╤ьх∙хэшх ─ышэр яюы ╬яшёрэшх------------------------------------------------------------------------------0 4 ╤ьх∙хэшх ЄЁхър - эрўрыю юсырёЄш фрээ√ї ¤Єюую ЄЁхърюЄэюёшЄхы№эю "╤ьх∙хэш фрээ√ї"4 2 ┬ёхуфр ёюфхЁцшЄ 0 (ЁхчхЁт фы ьюфхЁэшчрЎшш)6 1 ╫шёыю ёхъЄюЁют эр ЄЁхъх7 (╫шёыю ёхъЄюЁют)*7╚эЇюЁьрЎш ю ёхъЄюЁрї эр ЄЁхъх. ╩рцф√щ ёхъЄюЁ юяшё√трхЄё 7срщЄрьш. ╧хЁт√х 4 срщЄр - ёЄрэфрЁэ√х ярЁрьхЄЁ√ C,H,R,N шчрфЁхёэюую ьрЁъхЁр. ╤ыхфє■∙шщ срщЄ - Їыруш:bit 7=0 - ьрЁъхЁ эюЁьры№э√ї фрээ√ї, 1 - єфрыхээ√ї фрээ√ї;bit 0-5: Їыруш CRC. ┼фшэшЎр т юфэюь шч ЁрчЁ фют ючэрўрхЄ, ўЄюяЁш ёўшЄ√трэшш ¤Єюую ёхъЄюЁр эр фышэє 128,256,1024,2048 шыш4096 срщЄ яюыєўрхЄё яЁртшы№эр ъюэЄЁюы№эр ёєььр. ┼ёыш тю тёхїЁрчЁ фрї 0 - ёхъЄюЁ чряшёрэ ё ю°шсъющ ъюэЄЁюы№эющ ёєьь√.bit 6: ┬ фрээющ тхЁёшш тёхуфр 0. ┬ючьюцэю, 1 т фрээюь ЁрчЁ фхсєфхЄ юсючэрўрЄ№ рфЁхёэ√щ ьрЁъхЁ схч юсырёЄш фрээ√ї.╧юёыхфэшх 2 срщЄр - ёьх∙хэшх фрээ√ї ¤Єюую ёхъЄюЁр юЄэюёшЄхы№эюэрўрыр юсырёЄш фрээ√ї ЄЁхър. ╫Єюс√ яюыєўшЄ№ рсёюы■Єэ√щ рфЁхёт Їрщых, ъ ¤Єюьє ўшёыє эрфю фюсртшЄ№ "╤ьх∙хэшх фрээ√ї" ш"╤ьх∙хэшх ЄЁхър"------------------------------------------------------------------------------7*(╫шёыю ёхъЄюЁют+1) фышэр чруюыютър ЄЁхър╟рьхЄшь, ўЄю срщЄ Їыруют т юяшёрэшш ёхъЄюЁр яюър эшъръ эх шёяюы№чєхЄё¤ьєы ЄюЁюь.╘юЁьрЄ фюяюыэшЄхы№эющ шэЇюЁьрЎшш (FDI 2 ш т√°х)╥шя√ фрээ√ї:u8 - схччэръют√щ 8сшЄ (1 срщЄ)u16 - схччэръют√щ 16сшЄ (2 срщЄр)u32 - схччэръют√щ 32сшЄ (4 срщЄр)╬яшёрэшх ёЄЁєъЄєЁ√ TFdiAddInfo:struct TFdiAddInfo{// ╟руюыютюъ, юфшэръют√щ фы тёхї ЇюЁьрЄютu16 Ver; // 2 - FDI 2u16 AddInfoType; // ╥шя фюяюыэшЄхы№эющ шэЇюЁьрЎшш:// 1 - bad bytes info (шэЇюЁьрЎш ю ёсющэ√ї сыюърї)// ─ы AddInfoType == 1 (фы фЁєушї ЇюЁьрЄют шэЇюЁьрЎш эшцх сєфхЄ фЁєующ)u32 TrkAddInfoOffset; // ╤ьх∙хэшх ьрёёштр ёЄЁєъЄєЁ TFdiTrkAddInfo т срщЄрї юЄ эрўрыр Їрщыр// ўшёыю ёЄЁєъЄєЁ Ёртэю "╫шёыю ЎшышэфЁют" * "╫шёыю яютхЁїэюёЄхщ" шч FDI// чруюыютър (┬эшьрэшх! ёЄЁєъЄєЁ√ шьх■Є яхЁххээ√щ ЁрчьхЁ)u32 DataOffset; // ╤ьх∙хэшх фрээ√ї ё фюяюыэшЄхы№эющ шэЇюЁьрЎшхщ (юЄ эрўрыр Їрщыр)};╬яшёрэшх ёЄЁєъЄєЁ√ TFdiTrkAddInfo:struct TFdiTrkAddInfo(int n) // n - ╫шёыю ёхъЄюЁют эр фюЁюцъх, фюЁюцъш шьх■Є ёътючэє■ эєьхЁрЎш■// юЄ 0 фю "╫шёыю ЎшышэфЁют" * "╫шёыю яютхЁїэюёЄхщ"-1{u32 TrkOffset; // ╤ьх∙хэшх т срщЄрї фюяюыэшЄхы№эющ шэЇюЁьрЎшш фы фрээющ фюЁюцъш// юЄэюёшЄхы№эю FdiAddInfo.DataOffset// 0xFFFFFFFF - фюяюыэшЄхы№эр шэЇюЁьрЎш фы фрээющ фюЁюцъш юЄёєЄёЄтєхЄif(n && (TrkOffset != 0xFFFFFFFF)){TFdiSecAddInfo Sec[n]; // ╬яшёрЄхыш фюяюыэшЄхы№эющ шэЇюЁьрЎшш ю ёхъЄюЁрї (хёыш n==0, Єю юЄёєЄёЄтєхЄ)}};╬яшёрэшх ёЄЁєъЄєЁ√ TFdiSecAddInfo:struct TFdiSecAddInfo{u8 Flags; // 1 - ╠рёёшт ёсющэ√ї срщЄют яЁшёєЄёЄтєхЄ// ╤ьх∙хэшх сшЄютюую ьрёёштр ёсющэ√ї срщЄют тэєЄЁш фюЁюцъш юЄэюёшЄхы№эю TFdiTrkAddInfo[i].TrkOffset;// ╫шёыю сшЄют юяЁхфхы хЄё ЁрчьхЁюь ёхъЄюЁр// ╬фшэ сшЄ ёююЄтхЄёЄтєхЄ юфэюьє ёсющэюьє срщЄє// ─ы т√ўшёыхэш ёьх∙хэш ъюэъЁхЄэюую сшЄр эєцэю ёыюцшЄ№// u32 offs = FdiAddInfo.DataOffset + FdiAddInfo[i].TrkOffset + (FdiAddInfo[i].Sec[s].Flags & 1) ? (128 << FdiHdr.Trk[i].Sec[s].n) : 0;// (уфх i - Єхъє∙р фюЁюцър, s - Єхъє∙шщ ёхъЄюЁ, Sec[s].n - ъюф ЁрчьхЁр ёхъЄюЁр 0-128срщЄ, 1-256срщЄ,2-512срщЄ,3-1024срщЄ ш Є.ф.)// эюьхЁ срщЄр юяЁхфхы хЄё ъръ offs>>3, р эюьхЁ сшЄр т срщЄх ъръ offs&7u16 DataOffset;};╧Ёш чряшёш т срщЄ√ яюьхўхээ√х ъръ ёсющэ√х ¤ьєы ЄюЁ фюыцхэ шёърцрЄ№ чряшё√трхь√х фрээ√х(эряЁшхЁ фхырЄ№ xor ё яёхтфюёыєўрщэю яюёыхфютрЄхы№эюёЄ№■).╧Ёш ўЄхэшш шч срщЄ√ яюьхўхээ√ї ъръ ёсющэ√х ¤ьєы ЄюЁ фюыцхэ шёърцрЄ№ фрээ√х(эряЁшхЁ фхырЄ№ xor ё яёхтфюёыєўрщэю яюёыхфютрЄхы№эюёЄ№■) ш т√фртрЄ№ ю°шсъє CRC ёхъЄюЁр.