рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдФрд░ 3 рдбреАрдУ-рдПрдореБрд▓реЗрдЯрд░

рдЪрд┐рддреНрд░ 2
рдореИрдВрдиреЗ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛ рдХрд┐ рдЕрдм рдореИрдВ 3DO рдХрдВрд╕реЛрд▓ рдЗрдореНрдпреВрд▓реЗрд╢рди рдХреЛ рдирд╣реАрдВ рдЫреВрдКрдВрдЧрд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореБрдЭреЗ рдПрдХ рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ, рдЬреИрд╕реЗ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╡рд┐рджреЗрд╢реА рдЪреАрдЬрд╝ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рд╛ред рдкрд╣рд▓реА рдмрд╛рдд рдореИрдВрдиреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдерд╛, рдмреЗрд╢рдХ рдореЗрд░рд╛ 3DO рдХрдВрд╕реЛрд▓ рдПрдореБрд▓реЗрдЯрд░ (рдлреАрдирд┐рдХреНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ) рдерд╛ред 90 рдХреЗ рджрд╢рдХ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдЙрдкрд╕рд░реНрдЧ рдерд╛, рд╕реАрдбреА рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд╕рд╛рде рдкрд╣рд▓рд╛ 32-рдмрд┐рдЯ рдХрдВрд╕реЛрд▓, рдореБрдЭреЗ рдЕрдкрдиреЗ рднрд╛рдИ рдХреА рдпрд╛рдж рд╣реИ рдФрд░ рдореИрдВ рдЙрд╕реЗ рдореЙрд╕реНрдХреЛ рд╕реЗ рд▓рд╛рдпрд╛ рдерд╛, рддрдм рд╕реЗ рдореИрдВ рдЦреБрдж рдХреЛ рдлрд╛рдбрд╝ рдирд╣реАрдВ рд╕рдХрддрд╛ред рдЦреИрд░, рдЬрдм рд╕реЗ рдпрд╣ рдорд╛рдорд▓рд╛ рдЪрд╛рд▓реВ рд╣реБрдЖ, рддрдм 3DO рдПрдореБрд▓реЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╕рднреА рдореБрдЦреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣рдо рдЬрд╛рдБрдЪ рдХрд░реЗрдВрдЧреЗред рддреЛ рдЪрд▓рд┐рдП рдЬрд╛рдиреЗ ...

FreeDOCore - GoogleCode рдореЗрдВ рднрдВрдбрд╛рд░ рд╕реЗ рдореВрд▓ рдХреЛрд░ред


Picture 3

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡реЗрдмрд╕рд╛рдЗрдЯ : http://www.freedo.org/

рд╕рдВрд╢реЛрдзрди ::ред

рдорджрдж : рдкрд╣рд▓рд╛ рдФрд░ рдЖрдк рдЗрд╕ рдХрдВрд╕реЛрд▓ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдПрдореБрд▓реЗрдЯрд░ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд╛рдХреА рд╕рднреА рдХрд┐рд╕реА рди рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕ рдХреЛрдб рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВред

рд▓рд┐рдЦрдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ред

V523: 'рддрддреНрдХрд╛рд▓реАрди' рдХрдерди 'рдФрд░' рдХрдерди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред

рд▓рд╛рдЗрди 673 - clio.cpp

Picture 12

рдирд┐рдпрдорд┐рдд рд╕рдВрдХрд▓рдХ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд▓рд┐рдП рднреА рдЗрд╕ рддрд░рд╣ рдХреЗ рдЖрдХрд░реНрд╖рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:
if((cregs[0x404])&0x200) { ptr=0; while(len>=0) { b3=_xbus_GetDataFIFO(); ... } cregs[0x400]|=0x80; } else { ptr=0; while(len>=0) { b3=_xbus_GetDataFIFO(); ... } cregs[0x400]|=0x80; } 

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рди рдХреЗрд╡рд▓ рдирд┐рд░рд░реНрдердХ рдХреЛрдб, рдмрд▓реНрдХрд┐ рдПрдХ рдЗрдореНрдпреВрд▓реЗрд╢рди рддреНрд░реБрдЯрд┐ рднреА рд╣реИ, XBUS рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рджреНрд╡рд┐-рджрд┐рд╢рд╛рддреНрдордХ рд╣реИ, рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╣рдореЗрд╢рд╛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕реАрдбреА рдбреНрд░рд╛рдЗрд╡ рдХреЗ рдЕрдиреБрдХрд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдЕрдиреБрдХрд░рдгреАрдп рдЦреЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдХрд▓ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдЦрддрд░рдирд╛рдХ рддреНрд░реБрдЯрд┐ рд╣реИред - рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдпрд╣ рд╕рдм рдПрдХ рдЦрд╛рд▓реА рдЬрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддрд╛ рд╣реИ? рд▓реЗрдХрд┐рди рдЧрдВрднреАрд░рддрд╛ рд╕реЗ, рдЕрдиреБрдХрд░рдгреАрдп рдПрдХреНрд╕рдмрд╕ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдбреАрдПрдордП рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдореЗрдореЛрд░реА рджреВрд╖рд┐рдд рд╣реЛ рдЬрд╛рдПрдЧреА, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдПрдлрдЬреЗрдб-рдИрдПрдо 253 рдбреА 3 рдбреА рдореЗрдореЛрд░реА рдпреВрдирд┐рдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рджреБрд░реНрд▓рднрддрд╛ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рддреНрд░реБрдЯрд┐ рдкрдврд╝реЗрдВред

V614: рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЕрд╕рдВрдЧрдард┐рдд рдЪрд░ 'рд╡реИрд▓' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд▓рд╛рдЗрди 803 - clio.cpp

Picture 13

рдкрд╣рд▓реЗ рддреЛ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рдмрдХрд╡рд╛рд╕ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЪрд╛рдирдХ рдореБрдЭреЗ FIFO рдореЗрдВ рднреВрдд рдпрд╛рдж рдЖрдП ...
 unsigned short __fastcall _clio_EIFIFO(unsigned short channel) { unsigned int val,base,mask; ... if(FIFOI[channel].StartAdr!=0)//channel enabled { ... } return val; } 

рдпрд╣рд╛рдВ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдорд╛рдиреЛрдВ рдХреЛ рдкрдврд╝рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реИрд░рд┐рдПрдмрд▓ рд╡реИрд▓ рдХреЛ рдХреЗрд╡рд▓ рддрдм рд╣реА рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╢рд░реНрдд рдкреВрд░реА рд╣реЛ рдЬрд╛рддреА рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЦрд╛рд▓реА рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж FIFO рдбреАрдПрд╕рдкреА рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдЗрд╕реЗ рд╕реЗ рдкрдврд╝рд╛ рдЧрдпрд╛ рдЕрдВрддрд┐рдо рдореВрд▓реНрдп, рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рднреВрдд рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдПрдХ рдЦрд╛рд▓реА рдлреАрдлреЛ рд╕реЗ рд░реАрдбрд┐рдВрдЧ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ, рдЕрдЪрд╛рдирдХ рд╕реБрдзрд╛рд░ рдХреЗ рдмрд╛рдж рдПрдХ рдФрд░ рдЧреЗрдо рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ?

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рджреЛ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдЧрд▓рддрд┐рдпрд╛рдБ, рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдХреБрдЫ рдФрд░ рд╣реЛрдЧрд╛ред

FourDO - SourceForge рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рдХреЛрд░


Picture 17

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡реЗрдмрд╕рд╛рдЗрдЯ : http://www.fourdo.com/

рд╕рдВрд╢реЛрдзрди : рей7vision

рд╕рдВрджрд░реНрдн : рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рджреЛ рдЬреАрд╡рди рдЬреАрддреА рдереА, рдкрд╣рд▓реА - рдЬрдм рд▓реЗрдЦрдХреЛрдВ рдиреЗ рдЦрд░реЛрдВрдЪ рд╕реЗ рдЕрдкрдиреЗ рдЖрдк рд╣реА рдПрдореБрд▓реЗрдЯрд░ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдлрд╕реЛрд╕, рд░реЛрдЧреА рдХреЛрдорд╛ рдореЗрдВ рдЖ рдЧрдпрд╛, рдФрд░ рдлреНрд░реАрдбреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдЦреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рдирдпрд╛ рдЬреАрд╡рди рд╢реБрд░реВ рд╣реБрдЖ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирдП рдЕрдВрдЧреЛрдВ рдХреЗ рд╕рд╛рдеред рддреЛ, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдкреНрд░рддреНрдпрд╛рд░реЛрдкрдг рдХреИрд╕реЗ рдЬрдбрд╝ рд▓реЗрддреЗ рд╣реИрдВ ...

рдлрд┐рдХреНрд╕реНрдб, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдмрдЧред

Picture 4

рддреБрд░рдВрдд рдореИрдВ рдореВрд▓ рдХрд░реНрдиреЗрд▓ (V614: рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЕрд╕рд┐рдВрдЪрд┐рдд рдЪрд░ 'рд╡реИрд▓' рд▓рд╛рдЗрди 803 - clio.cpp) рдореЗрдВ рдЕрдВрддрд┐рдо рддреНрд░реБрдЯрд┐ рдХреЛ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рднреВрддреЛрдВ рдХреЛ рдмрд┐рдирд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ (рдпрд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА) рдХреЗ рд╕рд╛рде рдирд┐рдкрдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рдмрд╛рддрдЪреАрдд?
 unsigned short __fastcall _clio_EIFIFO(unsigned short channel) { unsigned int val,base,mask; base=0x400+(channel*16); mask=1<<channel; if(FIFOI[channel].StartAdr!=0) { ... } else { val=0; // JMK SEZ: What is this? // It was commented out along with this whole "else" block, // but I had to bring this else block back from the dead // in order to initialize val appropriately. } return val; } 

рд▓реЗрдХрд┐рди рд╡реНрдпрд░реНрде рдореЗрдВ рд╡реЗ рдирд┐рдкрдЯрд╛! рдЕрд╕рд▓реА рд╕рдорд╕реНрдпрд╛ рдЕрдирд╕реБрд▓рдЭреА рд░рд╣реА, рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рдмрд╛рд╣рд░ рд╕реЗ рд╕реБрдВрджрд░ рдерд╛, рдФрд░ рдХреЛрдИ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╛рдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рд╕рдмрд╕реЗ рд╕реБрдВрджрд░ рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рд╡реИрд░рд┐рдПрдмрд▓ рд╡реИрд▓реЗ рдХреЛ рд╕реНрдерд┐рд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЗрд╕реЗ рд╢реВрдиреНрдп рд╕реЗ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рдЗрд╕реЗ рдлрдВрдХреНрд╢рди рдХреЗ рдмрд╛рд╣рд░ рд░рдЦрдирд╛ рдФрд░ рдЗрд╕реЗ рддреНрд╡рд░рд┐рдд рд╕реЗрд╡ рдХреЗ рд▓рд┐рдП рд╡реИрд░рд┐рдПрдмрд▓ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдмреНрд▓реЙрдХ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рддрд╛рдХрд┐ рдпрд╣ рднреНрд░рдорд┐рдд рди рд╣реЛред

рдЙрдкрд╕рд░реНрдЧ рддреНрд░реБрдЯрд┐ред

V523: 'рддрддреНрдХрд╛рд▓реАрди' рдХрдерди 'рдФрд░' рдХрдерди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред

рд▓рд╛рдЗрди 673 - clio.cpp

Picture 19

рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдкреИрд░ рдиреЗ рдпрд╣рд╛рдВ рдкреИрд░ рдирд╣реАрдВ рд░рдЦрд╛ - рд╕рдм рдХреБрдЫ рдореВрд▓ рд░реВрдк рдореЗрдВ рд╣реИред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╡рд┐рд╖рдп рдкрд░ рдирд╣реАрдВ рд╣реИрдВ, "рдирд┐рд░реНрдорд╛рддрд╛" рдлреЛрд░рдбреАрдУ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ - рд╡рд┐рдХреНрдЯрд░ (рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЙрд╕рдХрд╛ рдирд╛рдо рд╣реИ рдпрд╛ рдирд╣реАрдВ, рд╡рд╣ рд╕реНрдЯрд░реНрд▓рд┐рдВрдЧрд┐рдЯреНрдЬ рднреА рд╣реИ), рд╡рд╣ 3DOPlay рдХреЗ рд▓реЗрдЦрдХ рд╣реИрдВ, FreeDO рдХрд╛ рдПрдХ рдФрд░ рдХрд╛рдВрдЯрд╛ рд╣реИ, рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╕рдорд╛рди рд╣реИрдВ рдЬреИрд╕рд╛ рдореВрд▓ рдореЗрдВ рд╣реИред 3DOPlay рдХреЗ рд╕рд╛рде рдПрдХ рдордЬреЗрджрд╛рд░ рдХрд╣рд╛рдиреА рдереА: рд╡рд┐рдХреНрдЯрд░ рдиреЗ рдЯреНрд░реЛрд▓ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдХрд╣рд╛ рдХрд┐ рд╡рд╣ 3DO рдПрдореНрдпреВрд▓реЗрдЯрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рддрд╛ рдерд╛, рдФрд░ рдлреНрд░реАрдбреАрдУ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдХрдерд┐рдд рддреМрд░ рдкрд░ рдЙрд╕рд╕реЗ рдХреЛрдб рдЪреБрд░рд╛ рд▓рд┐рдпрд╛ рдерд╛ред рдореЗрд░реА рдмрд╣реБрдд рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИ, рдореИрдВ, FreeDO рдХреЗ рд╕рд╣-рд▓реЗрдЦрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдЕрдкрдиреЗ 3DOPlay рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╢рддреНрд░реБрддрд╛ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рднрд╛рдЧ рдирд╣реАрдВ рд▓реЗ рдкрд╛рдпрд╛ рдФрд░ рдХрд╣рд╛ - рдореБрдЭреЗ рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдирд╛рдо рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдиреЗ рд╡рд┐рд╕реНрдлреЛрдЯ рдХрд░ рджрд┐рдпрд╛ - рддреАрди рдЦреЛрдЦрд▓реЗ рдФрд░ рдпрд╣ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ ... рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╡рд┐рдХреНрдЯрд░, FourDO рдЯреАрдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЧрдпрд╛ред рдФрд░ рд╣рдореЗрдВ рд╢реНрд░рджреНрдзрд╛рдВрдЬрд▓рд┐ рдЕрд░реНрдкрд┐рдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рд╡рд╣ рдПрдХрдорд╛рддреНрд░ рдРрд╕рд╛ рд╡реНрдпрдХреНрддрд┐ рд╣реИ рдЬрд┐рд╕рдиреЗ рдореВрд▓ рд╕реНрд░реЛрдд рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ 3DO рдПрдореБрд▓реЗрд╢рди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХреБрдЫ рднреА рдХрд┐рдпрд╛ рд╣реИред

рдЕрднреА рддрдХ рдЧрд▓рддреА рдирд╣реАрдВ рд╣реБрдИред

V550: рдПрдХ рд╡рд┐рд╖рдо рд╕рдЯреАрдХ рддреБрд▓рдирд╛: Rez2T! = 0. рдпрд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рдЯреАрдХрддрд╛ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ: рдлрд╝реИрдмреНрд╕ (рдП - рдмреА)> рдПрдкреНрд╕рд┐рд▓реЙрдиред

рд▓рд╛рдЗрди 778 - madam.cpp

Picture 20

рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИ, рд▓реЗрдХрд┐рди рдЧрдВрднреАрд░ рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред
 static double Rez0T,Rez1T,Rez2T,Rez3T; ... Rez2T=(signed int)((M20*V0+M21*V1+M22*V2)/65536.0); if(Rez2T!=0) M=Nfrac16/(double)Rez2T; else M=Nfrac16; 

рдореВрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, Rez2T рдЯрд╛рдЗрдк рдЗрдВрдЯ рдХрд╛ рдерд╛ , рд╢рд╛рдпрдж рд▓реЗрдЦрдХреЛрдВ рдиреЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЯрд╛рдЗрдк рд░реВрдкрд╛рдВрддрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд▓рд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХрд┐рд╕реА рдиреЗ рдЕрдЪрд╛рдирдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЗрдВрдЯ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЬрдмрд░рди рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рддреЛ Rez2T рджреНрд╡рд╛рд░рд╛ Nfrac16 рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╕рдордп рдПрдХ рдХреЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рд╣реЛрдЧрд╛ред

рдФрд░ рдХреЛрдб рдХрд╛ рдПрдХ рдФрд░ рдЯреБрдХрдбрд╝рд╛ рдореБрдЭреЗ рдЗрд╕ рдмрд╛рд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧрдВрднреАрд░ рдЪрд┐рдВрддрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред
 void __fastcall _qrz_PushARMCycles(unsigned int clks) { uint32 arm,cnt; int timers=21000000; //default int sp=0; if(sdf>0) sdf--; if(sf>0) sf--; if(unknownflag11>0)unknownflag11--; if(ARM_CLOCK<0x5F5E10)ARM_CLOCK=0x5F5E10; if(ARM_CLOCK>0x2FAF080)ARM_CLOCK=0x2FAF080; if(speedfixes>0&&speedfixes<0x186A1) {/*sp=0x2DC6C0;*/ speedfixes--;} else if(speedfixes>0x186A1&&speedfixes<0x30D41) {/*if(sdf==0)sp=0x4C4B40; */speedfixes--;} else if(speedfixes<0) {sp=0x3D0900; speedfixes++;} else if(speedfixes>0x30D41) {/*sp=0x249F00;*/ speedfixes--;} else if(speedfixes==0x30D41||speedfixes==0x186A1) speedfixes=0; if((fixmode&FIX_BIT_TIMING_2)&&sf<=2500000) {sp=0; timers=21000000; if(sf==0)sp=-(0x1C9C380-ARM_CLOCK);} if((fixmode&FIX_BIT_TIMING_1)/*&&jw>0*/&&sf<=1500000) {/*jw--;*/timers=1000000;sp=-1000000;} if((fixmode&FIX_BIT_TIMING_4)/*&&jw>0*/) {/*jw--;*/timers=1000000;sp=-1000000;} if((fixmode&FIX_BIT_TIMING_3)&&(sf>0&&sf<=100000)/*&&jw>0*/) {/*jw--;*/timers=900000;} if((fixmode&FIX_BIT_TIMING_5)&&sf==0/*&&jw>0*/) {/*jw--;*/timers=1000000;} if((fixmode&FIX_BIT_TIMING_6)/*&&jw>0*/) {/*jw--;*/timers=1000000; if(sf<=80000)sp=-23000000;} if(fixmode&FIX_BIT_TIMING_7){sp=-3000000; timers=21000000;} if((sf>0x186A0&&!(fixmode&FIX_BIT_TIMING_2))|| ((fixmode&FIX_BIT_TIMING_2)&&sf>2500000)) sp=-(12200000-ARM_CLOCK); if((ARM_CLOCK-sp)<0x2DC6C0)sp=-(0x2DC6C0-ARM_CLOCK); if((ARM_CLOCK-sp)!=THE_ARM_CLOCK) { THE_ARM_CLOCK=(ARM_CLOCK-sp); io_interface(EXT_ARM_SYNC,(void*)THE_ARM_CLOCK); //fix for working with 4do } arm=(clks<<24)/(ARM_CLOCK-sp); qrz_AccARM+=arm*(ARM_CLOCK-sp); if( (qrz_AccARM>>24) != clks ) { arm++; qrz_AccARM+=ARM_CLOCK; qrz_AccARM&=0xffffff; } qrz_AccDSP+=arm*SND_CLOCK; qrz_AccVDL+=arm*(VDL_CLOCK); if(_clio_GetTimerDelay())qrz_TCount+=arm*((timers)/ (_clio_GetTimerDelay())); } 

рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рд╕рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдХрд┐ рдореИрдВ рдХреЗрд╡рд▓ "рдЗрд╕" рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реВрдВ) рдЬрдм рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рдШрдбрд╝реА рдЪрдХреНрд░ рдПрдХ рдирд┐рд░рд╛рдХрд╛рд░ рд╡рд┐рдШрдЯрди рд╣реИ, рдиреАрдЪреЗ рдореВрд▓ рд╕реЗ рдХреЛрдб рд╣реИ:
 void __fastcall _qrz_PushARMCycles(unsigned int clks) { uint32 arm; arm=(clks<<24)/ARM_CLOCK; qrz_AccARM+=arm*ARM_CLOCK; if( (qrz_AccARM>>24) != clks ) { arm++; qrz_AccARM+=ARM_CLOCK; qrz_AccARM&=0xffffff; } qrz_AccDSP+=arm*SND_CLOCK; qrz_AccVDL+=arm*(VDL_CLOCK); if(_clio_GetTimerDelay()) qrz_TCount+=arm*((__temporalfixes?12500000:25000000)/ (_clio_GetTimerDelay())); } 

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд░реЛрдЧреА рди рддреЛ рдЬреАрд╡рд┐рдд рд╣реИ рдФрд░ рди рд╣реА рдореГрдд рд╣реИ, рдПрдореБрд▓реЗрдЯрд░ рдХреЛрд░ рдореЗрдВ рдХреБрдЫ рдмрджрд▓рд╛рд╡ рд╣реИрдВ, рд╕рднреА рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реБрдП, рдПрдХ рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдирд╣реАрдВ рд╣реИред

рдлреАрдирд┐рдХреНрд╕ рдПрдореБ-рдкреНрд░реЛрдЬреЗрдХреНрдЯ - рдирдпрд╛ рдХрд░реНрдиреЗрд▓ - рдирдП рдмрдЧред


Picture 5

рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрдерд▓ : http://www.arts-union.ru

рд╕рдВрд╕реНрдХрд░рдг : 1.7

рд╕рд╣рд╛рдпрддрд╛ : 3DO рдПрдореБрд▓реЗрдЯрд░ рдХреЛ рдкреВрд░реНрдгрддрд╛ рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рдЙрдиреНрдорддреНрдд рд▓рдХреНрд╖реНрдп рдХреЗ рд╕рд╛рде 3DO рдПрдореБрд▓реЗрдЯрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЙрдЪрд┐рдд рдХреЛрдб рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рд╕рд╛рде рдорд▓реНрдЯреАрд╕рд┐рд╕реНрдЯрдо рдПрдореБрд▓реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдХреЗрд╡рд▓ 3DOред

рддреНрд░реБрдЯрд┐ - рдмрдирд╛рд╡рдЯ рдЫреАрд▓рдиреЗ!

V501: рдмрд╛рдИрдВ рдУрд░ рдФрд░ '! =' рдСрдкрд░реЗрдЯрд░ рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╕рдорд╛рди рдЙрдк-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ: val.flags! = Val.flagsред

рд▓рд╛рдЗрди 207 - gfx_celengine.h

Picture 7
 struct gfxCelTexturePDECAttrib { uint32 pre0; uint32 flags; int plutcount; uint16 plut[32]; bool operator==(const gfxCelTexturePDECAttrib &val) const { if(val.pre0!=pre0)return false; if(val.flags!=val.flags)return false; if(val.plutcount!=plutcount)return false; for(int i=0;i<val.plutcount;i++) { if(val.plut[i]!=plut[i])return false; } return true; } }; 

рдЦреЗрд▓ рдХреЗ рджреМрд░рд╛рди рд▓рд╛рдкрд░рд╡рд╛рд╣реА рдФрд░ рдмрдирд╛рд╡рдЯ рджреЛрд╖ рдХреЗ рдХрд╛рд░рдг рд╣реБрдИ рдПрдХ рдЧрд▓рддреА, рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд░ рдХреИрд╢ рдореЗрдВ рдмрдирд╛рд╡рдЯ рдХреЗ рд╕реАрдИрдПрд▓ рдЭрдВрдбреЗ рдЕрд▓рдЧ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕реА рдХрд╛ рдзреНрдпрд╛рди рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдиреНрдпрдерд╛ рд╡реЗ рд╕рдорд╛рди рд╣реИрдВ, рдмрдирд╛рд╡рдЯ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрд▓рдд рд╢реЗрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдиреАрдЪреЗ рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк рд╣реИ:
 if(val.flags!=flags)return false; 

рддреНрд░реБрдЯрд┐ - рд╕реНрдХреНрд░реАрди рдкрд░ рдХрдЪрд░рд╛!

V579: рдореЗрдорд╕реЗрдЯ рдлрдВрдХреНрд╢рди рд╕реВрдЪрдХ рдФрд░ рдЗрд╕рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рдВрднрд╡рддрдГ рдПрдХ рдЧрд▓рддреА рд╣реИред рддреАрд╕рд░реЗ рддрд░реНрдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВред

рд▓рд╛рдЗрди 36 - vdlp_3do.cpp
Picture 22
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ - PAL рдкреНрд░рд╛рд░реВрдк рдЧреЗрдо рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╕рдордп VDLP рд▓рд╛рдкрд░рд╡рд╛рд╣реА рдХрд╛ рд╢рд┐рдХрд╛рд░ рд╣реБрдЖред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдПрдореБрд▓реЗрдЯрд░ рдиреЗ рдХреЗрд╡рд▓ NTSC рдЧреЗрдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдерд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╡рд┐рд╢рд╛рд▓ рдмрд╣реБрдордд, рдФрд░ рдлреНрд░реЗрдо рдмрдлрд░ рдореЗрдВ 320 рдХрд╛ 240 рдкрд┐рдХреНрд╕реЗрд▓ рдХрд╛ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрди рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧ рдХреЗ рдЕрдВрджрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
 screen=new uint8[384*288*3*4]; memset(screen,0,sizeof(screen)); 

рдФрд░ рддрд╛рдХрд┐ рддреНрд░реБрдЯрд┐ рджреГрд╖реНрдЯрд┐ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рдП (рд╢рд╛рдмреНрджрд┐рдХ, рдХреНрдпреЛрдВрдХрд┐ рдЦреЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рдмреЛрдзрдЧрдореНрдп рдлреНрд░реЗрдо рдХрдЪрд░рд╛ рд╕реЗ рднрд░рд╛ рд╣реЛрддрд╛ рд╣реИ), рдЖрдк рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
 memset(screen,0,sizeof(uint8)*384*288*3*4); 

рддреНрд░реБрдЯрд┐ - рд▓реЗрдХрд┐рди рдХреЛрдИ рдбрд┐рд╕реНрдХ рдирд╣реАрдВ рд╣реИ!

V595: nullptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'рдЕрдиреБрдХреВрд▓рди' рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 375, 376ред

рдкрдВрдХреНрддрд┐ 375 - dumplibrary.cpp
Picture 21
рдФрд░ рдлрд┐рд░, рд▓рд╛рдкрд░рд╡рд╛рд╣реА ... рд╡рд╕реНрддреБ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЕрдВрддрд┐рдо рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдиреНрдпрдерд╛, рдЖрд╡рд╢реНрдпрдХ рдЫрд╡рд┐рдпреЛрдВ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЧрдП рдЧреЗрдо рдХреЗ рд▓реЛрдб рдХреЗ рджреМрд░рд╛рди рдПрдХ рдЕрдкрд╡рд╛рдж рдорд┐рд▓реЗрдЧрд╛ред
 dumpAdapter *adapt=createDumpAdapter(j, inf->Parent()->Attribute("attach").toString()); adapt->SetSign(signs[names[i]]); if(!adapt)break; 

рдореИрдВ рдХреНрдпрд╛ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ? рдореБрдЭреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдПрдореБрд▓реЗрдЯрд░ рдХреЗ рдмрдЬрд╛рдп рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдиреЗ рдпрд╛ рд╢рд╛рдо рдХреЛ рдЖрд░рд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рдЗрд╕рд▓рд┐рдП, рдореЗрд░реЗ рдкрд╣рд▓реЗ рдЕрдиреБрднрд╡ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдирд┐рд╕реНрд╕рдВрджреЗрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ рдФрд░ рдпрд╣ рдмрд╣реБрдд рд╕рдордп рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдирд╕реЛрдВ рдХреЛ рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдореБ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╢реНрди рдХреА рдХреАрдордд рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдЖрд░рдПрдо рдХреЗ рд▓рд┐рдП рд╣реЗрдХреНрд╕-рд░реЗ рдбрд┐рдХрдореНрдкреЙрдЗрд▓рд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬреЛ 3 рдбреАрдУ рдПрдореБрд▓реЗрд╢рди рдХреЛ рдХрдИ рдХрджрдо рдЖрдЧреЗ рд▓реЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Source: https://habr.com/ru/post/In218613/


All Articles