ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ исходный ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹?

ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

Π’ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… прилоТСниях Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· DotPeek, Π½ΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΈΠ³Ρ€ Π½Π΅Ρ‚.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ нСльзя ΡƒΠ·Π½Π°Ρ‚ΡŒ исходный ΠΊΠΎΠ΄, ΠΊΠ°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŒ тСкстуры ΠΈΠ· ΠΈΠ³Ρ€Ρ‹?
ΠŸΠΎΡ‡Π΅ΠΌΡƒ послС компиляции всё?
Если это всё ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΡˆΠΈΡ„Ρ€ΡƒΡŽΡ‚, Ρ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ эта ΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ°?

Π― понимаю вопросы Π³Π»ΡƒΠΏΡ‹Π΅, Π½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ ΠΌΠ½Π΅ поТалуйста ΠΊΠ°ΠΊ Π΄ΡƒΡ€Π°Ρ‡ΠΊΡƒ. Π― просто Π½Π΅ ΠΌΠΎΠ³Ρƒ этого ΠΏΠΎΠ½ΡΡ‚ΡŒ. =(

(ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста Π½Π° простых словах, Π±Π΅Π· Π²ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ, я Π½Π΅ понимаю Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ написано)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. 5e34b2cccf6be898763470. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-5e34b2cccf6be898763470. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 5e34b2cccf6be898763470. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. 9a296065d69846c09d50d501eb101c6b. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-9a296065d69846c09d50d501eb101c6b. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 9a296065d69846c09d50d501eb101c6b. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

Π’ΠΎΡ‚ ΠΈ ΠΊΠ°ΠΊ Π³ΠΎΠ»ΠΎΠ΄Π½ΠΎΠΌΡƒ студСнту ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ€Π΅Ρ†Π΅ΠΏΡ‚? Π”Π°, ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌ. Π”Π°, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΠΊΠΎΠ²Ρ‹Ρ€ΡΡ‚ΡŒ свою ΠΏΠΎΡ€Ρ†ΠΈΡŽ, ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡƒΠΊΡƒΡ€ΡƒΠ·ΠΊΠΈ ΠΈ Π½Π°Ρ€Π΅Π·ΠΊΡƒ, ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΠ΅ ΠΊΡƒΠ±ΠΈΠΊΠΎΠ² ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠΌ Π½ΠΎΠΆΠΎΠΌ Ρ€Π΅Π·Π°Π»ΠΈ, ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² Π³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ½Π³Ρ€ΠΈΠ΄ΠΈΠ΅Π½Ρ‚, Ρ„ΠΈΠ³Π°ΠΊΠ½ΡƒΡ‚ΡŒ соус Π½Π° Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ„ΡƒΠ³Π΅, ΠΏΡ€ΠΎΡΠ²Π΅Ρ‚ΠΈΡ‚ΡŒ спСктроанализатором Π½Π° химичСскиС элСмСнты, ΠΏΡ€ΠΈΠΊΠΈΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΈΠ· Ρ‡Π΅Π³ΠΎ ΠΎΠ½ΠΎ ΠΌΠΎΠ³Π»ΠΎ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ. Но Π½Π° это ΡƒΠΉΠ΄Π΅Ρ‚ ΡƒΠΉΠΌΠ° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ срСдств.

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. 5e09db84edf13557072665. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-5e09db84edf13557072665. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 5e09db84edf13557072665. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. f45024bcc7d7567f4c4296de5d36c0b3. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-f45024bcc7d7567f4c4296de5d36c0b3. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° f45024bcc7d7567f4c4296de5d36c0b3. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. 5fc6bcae02e83394447533. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-5fc6bcae02e83394447533. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 5fc6bcae02e83394447533. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

ΠŸΠΎΡ‚ΠΎΠΌΡƒ ΠΊΡƒΠ΄Π° Π²Π°ΠΆΠ½Π΅Π΅ Π΄Π°Ρ‚ΡŒ пояснСниС Ρ‡Π΅ΠΌ просто ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‡ΡƒΠΆΠΎΠΉ ΠΊΠΎΠ΄

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ЗаглянСм Π·Π° кулисы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ: ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠ° исходных ΠΊΠΎΠ΄ΠΎΠ² классичСских ΠΈΠ³Ρ€

ОбоТаю Π·Π°Π³Π»ΡΠ΄Ρ‹Π²Π°Ρ‚ΡŒ Π·Π° кулисы. МнС интСрСсно, ΠΊΠ°ΠΊ Π΄Π΅Π»Π°ΡŽΡ‚ΡΡ Π²Π΅Ρ‰ΠΈ. МнС каТСтся, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Ρƒ людСй это Ρ‚ΠΎΠΆΠ΅ интСрСсно.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ Ρ‚Π°ΠΊ слоТилось, Ρ‡Ρ‚ΠΎ Π²ΠΈΠ΄Π΅ΠΎΠΈΠ³Ρ€Ρ‹ Π½Π΅ дСлятся исходниками. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΎΠ½ΠΈ вСдь ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для ΠΈΠ³Ρ€ΠΎΠΊΠΎΠ². Но для программистов Ρ‚Π°ΠΌ всСгда Π΅ΡΡ‚ΡŒ, Π½Π° Ρ‡Ρ‚ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ. И Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ³Ρ€Ρ‹ всё-Ρ‚Π°ΠΊΠΈ выпускали свои исходники. А я Π΄Π°Π²Π½ΠΎ намСрСвался ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ.

К соТалСнию, ΠΏΠΎΡ‡Ρ‚ΠΈ всС ΠΈΠ³Ρ€Ρ‹ – для PC. Найти исходники для консолСй ΠΈΠ»ΠΈ Π°Ρ€ΠΊΠ°Π΄ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ, ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ программистов Π½Π΅ Π² курсС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΡ‚ PC.

МногиС ΠΈΠ³Ρ€Ρ‹ послС выпуска исходников Π±Ρ‹Π»ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Ρ‹ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Ρ‹ сообщСством – я Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ даю ссылки Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ исходники. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ, Ссли вас Π²Π΄Ρ€ΡƒΠ³ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ Π°ΠΏΠ³Ρ€Π΅ΠΉΠ΄Ρ‹ – ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ.

МногиС ΠΈΠ³Ρ€Ρ‹ Π±Ρ‹Π»ΠΈ рассмотрСны Π½Π° сайтС Fabien Sanglard. Если Π²Π°ΠΌ интСрСсны подробности ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹, Ρ‚ΠΎ ΠΏΠΎΠΆΠ°Π»ΡƒΠΉΡ‚Π΅ ΠΊ Π½Π΅ΠΌΡƒ.

МоТно Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ³Ρ€Ρ‹ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ id Software/Apogee. Π‘ΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅? НС Π΄ΡƒΠΌΠ°ΡŽ. id славится ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡ΠΊΠΎΠΉ Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ исходники. Π‘Ρ‚Π°Ρ€Ρ‹Π΅ коммСрчСскиС ΠΈΠ³Ρ€Ρ‹ ΡƒΠΆΠ΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ цСнности ΠΈ Π±Ρ‹Π»ΠΈ Π±Ρ‹ потСряны – Π½Π΅ Π»ΡƒΡ‡ΡˆΠ΅ Π»ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ учился Ρ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΌΡƒ Π½Π° ΠΈΡ… основС?

Π˜Ρ‚Π°ΠΊ, приступим (Π² хронологичСском порядкС):

Colossal Cave Adventure (1976)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. image loader. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ: William Crowther and Don Woods
Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒ: Π Π°Π·Π½Ρ‹Π΅.
ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°: PDP-10 ΠΈ Π΄Ρ€ΡƒΠ·ΡŒΡ.

β€œYou are in a maze of twisty little passages, all alike.” (Β«Π’Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² Π»Π°Π±ΠΈΡ€ΠΈΠ½Ρ‚Π΅ ΠΈΠ· Π½Π΅ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΌΡ‹Ρ… Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… извилистых ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΎΠ²Β»).

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, это Π½Π΅ Π½Π° 100% коммСрчСская ΠΈΠ³Ρ€Π°. Но Π΅Ρ‘ ΠΏΡ€ΠΎΠ΄Π°Π²Π°Π»ΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ. И, кстати, ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ ΠΌΠΎΡ‚ΠΈΠ²Π°ΠΌ названия этой ΠΈΠ³Ρ€Ρ‹ всС ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‡Π΅ΡΠΊΠΈΠ΅ ΠΈΠ³Ρ€Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ adventure.

ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π» Π±Ρ‹Π» написан Π½Π° Fortran, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ соврСмСнным программистам Π±ΡƒΠ΄Π΅Ρ‚ слоТновато Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ. Но послСдниС вСрсии Π±Ρ‹Π»ΠΈ Π½Π° C.

Catacomb (1989)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. image loader. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ: John Carmack
Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒ: Softdisk
ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°: Apple II / DOS

НС ΠΏΡƒΡ‚Π°ΠΉΡ‚Π΅ с Catacomb 3D. Π­Ρ‚ΠΎ ранняя двумСрная вСрсия ΠΈΠ³Ρ€Ρ‹. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° ΠšΠ°Ρ€ΠΌΠ°ΠΊΠΎΠΌ Π΄ΠΎ создания id ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ написана Π½Π° Turbo Pascal.

Prince Of Persia (1989)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. image loader. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ: Jordan Mechner
Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒ: BrΓΈderbund
ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°: Apple II / DOS / many more
ΠžΠ±Π·ΠΎΡ€ ΠΊΠΎΠ΄Π°: fabiensanglard.net

Prince Of Persia ΠΏΡ€ΠΎΠΈΠ·Π²Ρ‘Π» Ρ„ΡƒΡ€ΠΎΡ€ благодаря ΠΏΠ»Π°Π²Π½ΠΎΠΉ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, голливудскому ΡΡ‚ΠΈΠ»ΡŽ ΠΏΠΎΠ΄Π°Ρ‡ΠΈ истории ΠΈ интСрСсному гСймплСю.

Написана ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π½Π° ассСмблСрС, Ρ‡Ρ‚ΠΎ затрудняСт Π·Π°Π΄Π°Ρ‡Ρƒ ΠΎΠ±Π·ΠΎΡ€Π° ΠΊΠΎΠ΄Π°. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ с Π”ΠΆΠΎΡ€Π΄Π°Π½ΠΎΠΌ ΠœΠ΅Ρ…Π½Π΅Ρ€ΠΎΠΌ, Π³Π΄Π΅ ΠΎΠ½ дСлится дСталями ΠΎ создании ΠΈΠ³Ρ€Ρ‹.

SimCity (1989)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. image loader. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ: Maxis
Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒ: Maxis / BrΓΈderbund
ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°: All

Π˜Π³Ρ€Π° Π½Π°Ρ‡Π°Π»Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΆΠ°Π½Ρ€. Π’ основС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° – симуляция Π³ΠΎΡ€ΠΎΠ΄Π° посрСдством ΠΊΠ»Π΅Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ стоит ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ для понимания ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π˜ΡΡ…ΠΎΠ΄Π½ΠΈΠΊΠΈ для unix-ΠΏΠΎΡ€Ρ‚Π° 1990 Π³ΠΎΠ΄Π° Π±Ρ‹Π»ΠΈ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Ρ‹ Π² 2008 Π³ΠΎΠ΄Ρƒ.

Hovertank 3D / Catacomb 3D (1991)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. image loader. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ: id Software
Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒ: Softdisk
ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°: DOS

ΠŸΠ΅Ρ€Π²Π°Ρ Π²Π΅Ρ…Π° Π² истории Ρ‚Ρ€Ρ‘Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Ρ… ΡˆΡƒΡ‚Π΅Ρ€ΠΎΠ² id Software. Π­Ρ‚ΠΈ ΠΈΠ³Ρ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ raycasting, которая Π±Ρ‹Π»Π° ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π° Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ…ΠΈΡ‚Π΅, Wolfenstein, Π³Π΄Π΅ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ тСкстуры.

Star Control II (1992)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. image loader. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ: Toys for Bob
Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒ: Accolade
ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°: DOS / 3D0

Уникальная ΠΈΠ³Ρ€Π°, Π½Π΅ Π²ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π°ΡΡΡ Π½ΠΈ Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ· строгих ΠΆΠ°Π½Ρ€ΠΎΠ². Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ Ρ‡Ρ‘Ρ‚ΠΊΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π½Π°ΠΌ ΠΎ 90-Ρ… Π³ΠΎΠ΄Π°Ρ… ΠΈ систСмС VGA, Π³Π΄Π΅ Ρ†Π²Π΅Ρ‚Π° Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Π½Ρ‹ Π½Π΅ для красоты, Π° ΠΈΠ· стандартной ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹ DPaint.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ±Π·ΠΎΡ€ ΠΊΠΎΠ΄Π° ΠΎΡ‚ The Escapist.

Π˜ΡΡ…ΠΎΠ΄Π½ΠΈΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ с ΠΏΠΎΡ€Ρ‚Π° Π½Π° 3D0, ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΆΠ΅ Π±Ρ‹Π» утСрян. Π­Ρ‚ΠΎ часто случаСтся со старыми ΠΈΠ³Ρ€Π°ΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ уходят ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ.

Wolfenstein 3D / Blake Stone (1992/3)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. image loader. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

На основС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° Catacomb Π±Ρ‹Π» сдСлан ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹ΠΉ Π°ΠΏΠ³Ρ€Π΅ΠΉΠ΄ Π½Π° VGA-Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ. И ΠΈΠ³Ρ€Π°Ρ‚ΡŒ стало интСрСснСС. Как Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв с ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ id, исходники ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, хотя ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ части написаны Π½Π° 16-Π±ΠΈΡ‚Π½ΠΎΠΌ ассСмблСрС (Π² Doom ΡƒΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π½Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡˆΡŒ).

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ для рисования Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ ΠΎΠ½ΠΈ динамичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… высот стСн.

Π£ Fabien ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΏΠΎ компиляции исходников Π½Π° соврСмСнных инструмСнтах.

Blake Stone, ΠΎΡ‚Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚ Apogee Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ Π΄Π²ΠΈΠΆΠΊΠ΅, Π²Ρ‹ΡˆΠ»ΠΎ Π² 1993 Π³ΠΎΠ΄Ρƒ, Π·Π° нСдСлю Π΄ΠΎ Doom. МоТно ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΎ ΠΊΠ°Π½ΡƒΠ»ΠΎ Π² Π»Π΅Ρ‚Ρƒ.

Doom (1993)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. image loader. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

Π’ ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ смыслС это самый Π²Π°ΠΆΠ½Ρ‹ΠΉ для изучСния Π΄Π²ΠΈΠΆΠΎΠΊ. Π’ своё врСмя это Π±Ρ‹Π»Π° Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΡ – ΠΌΠΈΡ€ ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π»ΠΈΡ†Π°, Π½Π΅ плоский, ΠΊΠ°ΠΊ Wolf3D. ΠžΡΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅, тСкстуры ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½ΠΈΠ΅ DeathMatch.

Одной ΠΈΠ· самых Π·Π½Π°ΠΊΠΎΠ²Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ стало ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅ΠΈ Β«Π΄Π²ΠΈΠΆΠΊΠ°Β». Π”ΠΎ этого ΠΈΠ³Ρ€Ρ‹ Π±Ρ‹Π»ΠΈ сильно связаны с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Doom ΠΏΡ€ΠΎΠΏΠ°Π³Π°Π½Π΄ΠΈΡ€ΠΎΠ²Π°Π» отвязку Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ³Ρ€Ρ‹ ΠΎΡ‚ Π΄Π²ΠΈΠΆΠΊΠ°. Π­Ρ‚ΠΎ ΠΏΠΎΡ€ΠΎΠ΄ΠΈΠ»ΠΎ Ρ†Π΅Π»Ρ‹Π΅ сообщСства, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π²ΡˆΠΈΠ΅ ΠΈΠ³Ρ€Ρ‹ (Aliens TC, Fistful Of Doom).

Descent (1994)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. 932903db66f65ea4273638dd8fa9d9a6. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-932903db66f65ea4273638dd8fa9d9a6. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 932903db66f65ea4273638dd8fa9d9a6. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

МногиС ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΊΠΈΠ½ΡƒΠ»ΠΈΡΡŒ Π΄ΠΎΠ³ΠΎΠ½ΡΡ‚ΡŒ Doom, запустив Π²ΠΎΠ»Π½Ρƒ «Клонов DoomΒ». Parallax ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅Ρ‡Ρ‚ΠΎ совсСм Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

Π’ ΠΈΠ³Ρ€Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Ρ‚Π°Ρ‚ΡŒ Π½Π° ΠΊΠΎΡ€Π°Π±Π»Π΅ ΠΏΠΎ Ρ‚Ρ€Ρ‘Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΌΡƒ Π»Π°Π±ΠΈΡ€ΠΈΠ½Ρ‚Ρƒ ΠΈΠ· ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΎΠ², Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ 2.5D ΠΊΠΎΡ€ΠΈΠ΄ΠΎΡ€ΠΎΠ² Doom (Ρƒ id полная Ρ‚Ρ€Ρ‘Ρ…ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ появилась лишь Π² Quake Π³ΠΎΠ΄ спустя).

Gravity Force 2 (1994)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. image loader. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ: Jens Andersson and Jan Kronqvist
Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒ: Shareware
ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°: Amiga

МногиС соврСмСнники вспомнят эту ΠΈΠ³Ρ€Ρƒ. Amiga Power ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ Π½Π°Π·Π²Π°Π»Π° Π΅Ρ‘ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π»ΡƒΡ‡ΡˆΠ΅ΠΉ ΠΈΠ³Ρ€ΠΎΠΉ всСх Π²Ρ€Π΅ΠΌΡ‘Π½.

Π­Ρ‚ΠΎ Π½Π΅ совсСм коммСрчСская ΠΈΠ³Ρ€Π°, ΠΎΠ½Π° Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ ΠΏΠ»Π°Ρ‚Π½ΠΎΠ³ΠΎ shareware, Π° Π·Π°Ρ‚Π΅ΠΌ Π΅Ρ‘ Ρ€Π°Π·Π΄Π°Π²Π°Π»ΠΈ бСсплатно Π½Π° дискС Amiga Power. Π’ΠΊΠ»ΡŽΡ‡ΠΈΠ» Π΅Ρ‘ Π² список ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π² Ρ‚Ρƒ ΠΏΠΎΡ€Ρƒ Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ€Π΅Π΄ΠΊΠΈΠ΅ ΠΈΠ³Ρ€Ρ‹ Π²Ρ‹Π΄Π°Π²Π°Π»ΠΈ свои исходники. Если Π²Π°ΠΌ интСрСсно, ΠΊΠ°ΠΊ дСлались 16-Π±ΠΈΡ‚Π½Ρ‹Π΅ ΠΈΠ³Ρ€Ρ‹, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.

Heretic / Hexen (1994/5)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. c86ac0c8d02efe8f315bae821af2510c. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-c86ac0c8d02efe8f315bae821af2510c. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° c86ac0c8d02efe8f315bae821af2510c. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

Π­Ρ‚ΠΎ Π±Ρ‹Π» ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΠΎΠ½ Doom ΠΏΠΎ Π΄Π²ΡƒΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ: 1) Π»ΠΈΡ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ Doom ΠΈ 2) Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Π³Π΅ΠΉΠΌΠΏΠ»Π΅ΠΉ

Π—Π°ΠΌΠ΅Ρ‚Π½Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ: Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²Π²Π΅Ρ€Ρ… ΠΈ Π²Π½ΠΈΠ·, скриптовой Π΄Π²ΠΈΠΆΠΎΠΊ для Π²Π½ΡƒΡ‚Ρ€ΠΈΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… событий (новая идСя Π½Π° Ρ‚ΠΎ врСмя).

Rise Of The Triad: Dark War (1995)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. image loader. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

ROTT это Π±Ρ‹Π»Π° странная ΠΈΠ³Ρ€Π°. Она Π±Ρ‹Π»Π° ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π° Π΄Π²ΠΈΠΆΠΊΠΎΠΌ Wolfenstein 3D, ΠΏΡ€ΠΈ этом создатСли ΡƒΠΌΡƒΠ΄Ρ€ΠΈΠ»ΠΈΡΡŒ ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ощущСния Ρ€Π°Π·Π½Ρ‹Ρ… высот. Но всё Ρ€Π°Π²Π½ΠΎ ΠΈΠ³Ρ€Π° Π½Π΅ смогла ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с Doom ΠΎΡ‚ 1993 Π³ΠΎΠ΄Π°.

Marathon 2: Durandal (1995)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. image loader. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ: Bungie Software
Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒ: Bungie Software
ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°: Apple Macintosh / Windows 95

БСрия ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ»Π°ΡΡŒ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² своё врСмя ΠΏΠΎΠΏΠ°Π»Π° Π² ΠΊΡ€Π°ΠΉΠ½Π΅ малСнький список ΠΈΠ³Ρ€, доступных Π½Π° Apple Macintosh. И, Π² ΠΎΠ±Ρ‰Π΅ΠΌ-Ρ‚ΠΎ, это ΠΊΠ»ΠΎΠ½ Doom. А Ρ‡Π΅Ρ€Π΅Π· 3 мСсяца послС Π΅Ρ‘ Π²Ρ‹Ρ…ΠΎΠ΄Π° id Software выпустила Π·Π½Π°ΠΌΠ΅Π½ΠΈΡ‚Ρ‹ΠΉ β€œqtest”, позволявший Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° Π΄Π²ΠΈΠΆΠΎΠΊ Quake.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Маки Ρ‚ΠΎΠ³Π΄Π° использовали лишь писатСли с Ρ…ΡƒΠ΄ΠΎΠΆΠ½ΠΈΠΊΠ°ΠΌΠΈ, нСсмотря Π½Π° всС усилия, сСрия ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ»Π°ΡΡŒ. НСбольшая компания Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈΠΌΠ΅Π»Π° Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎΠΉ успСх Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ….

Duke Nukem 3D / Shadow Warrior (1996)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. 9d9df67d5eaa47d89501a3d35bc92ed3. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-9d9df67d5eaa47d89501a3d35bc92ed3. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 9d9df67d5eaa47d89501a3d35bc92ed3. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ: 3D Realms
Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒ: GT Interactive Software
ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°: DOS
Code review: fabiensanglard.net

Из мноТСства ΠΊΠ»ΠΎΠ½ΠΎΠ², ΠΈΠ³Ρ€Ρ‹ 3D Realms ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ»ΠΈΡΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°ΠΌΠΈ привнСсти Π½Π΅Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅ Π² ΠΈΠ³Ρ€Ρƒ. Π”Π²ΠΈΠΆΠΎΠΊ КСна Π‘ΠΈΠ»ΡŒΠ²Π΅Ρ€ΠΌΠ°Π½Π° Build Engine Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΌΠ½ΠΎΠ³ΠΎ интСрСсных Ρ„ΠΈΡ‡ Π²Ρ€ΠΎΠ΄Π΅ Π½Π°ΠΊΠ»ΠΎΠ½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΠΎΠ², ΠΊΠΎΠΌΠ½Π°Ρ‚, располоТСнных Π΄Ρ€ΡƒΠ³ Π½Π°Π΄ Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΈ Π·Π΅Ρ€ΠΊΠ°Π».

К соТалСнию, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ самой ΠΈΠ³Ρ€Ρ‹, исходники просто уТасны. Π― рылся Π² Π½ΠΈΡ… нСсколько Ρ€Π°Π· ΠΈ Π΄ΠΎ сих ΠΏΠΎΡ€ Π½Π΅ ΠΌΠΎΠ³Ρƒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ Π³Π΄Π΅. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, ΠΎΠ±Π·ΠΎΡ€ ΠΎΡ‚ Fabien ΠΏΡ€ΠΎΠ»ΠΈΠ²Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ свСт Π½Π° происходящСС Π² ΠΊΠΎΠ΄Π΅.

Π—Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° страницу Π°Π²Ρ‚ΠΎΡ€Π°.

Quake 1/2/3 (1996-1999)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. image loader. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ: id Software
Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒ: GT Interactive / Activision
ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°: DOS / Windows / others
Code review: fabiensanglard.net (Quake 1)
Code review: fabiensanglard.net (Quake 3)

Π’ΡƒΡ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ особо Π½Π΅Ρ‡Π΅Π³ΠΎ, Π²Ρ‹ ΠΈ сами всё Π·Π½Π°Π΅Ρ‚Π΅. Знатная Π²Π΅Ρ…Π° Π² создании ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ‚Ρ€Ρ‘Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Ρ… Π΄Π²ΠΈΠΆΠΊΠΎΠ², Π±Π΅Π· всяких Ρ…Π°ΠΊΠΎΠ² Π²Ρ€ΠΎΠ΄Π΅ 2.5D

Упомяну нСсколько интСрСсных подробностСй. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, это пСрвая коммСрчСская ΠΈΠ³Ρ€Π°, скомпилированная компилятором с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ (DJGPP for DOS, Ρ€Π°Π½Π½ΠΈΠΉ ΠΏΠΎΡ€Ρ‚ gcc).

Π’ ΠΈΠ³Ρ€Π΅ Π±Ρ‹Π» свой скриптовой язык β€œQuake C” (ΠΏΠΎΠ·ΠΆΠ΅ lcc Ρƒ Quake 3). Он Π±Ρ‹Π» встроСн ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ³Ρ€ΠΎΠΊΠΈ ΠΌΠΎΠ³Π»ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ, Π²ΠΊΡƒΠΏΠ΅ с систСмой рСсурсов PWAD, ΠΏΠΎΡ€ΠΎΠ΄ΠΈΠ»ΠΎ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ сообщСство ΠΌΠΎΠ΄Π΄Π΅Ρ€ΠΎΠ².

Π’ Quake 1 Π±Ρ‹Π» ΠΈΠ½Π½ΠΎΠ²Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² шСйдинга. Но послС распространСния 3D-ускоритСлСй это потСряло смысл. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΈΠ³Ρ€Π° ΠΎΡ‚ id, Rage, использовала эту ΠΆΠ΅ идСю.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Quake Π±Ρ‹Π» ΠΎΡ‡Π΅Π½ΡŒ Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹ΠΌ Π΄Π²ΠΈΠΆΠΊΠΎΠΌ. Никаких глюков растра ΠΈΠ»ΠΈ обсчёта столкновСний.

Abuse (1996)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. image loader. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ: Crack dot Com
Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒ: Electronic Arts / Origin Systems
ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°: DOS / Linux / Mac

Π’ ΠΈΠ³Ρ€Π΅ Π±Ρ‹Π»ΠΎ использовано нСсколько ΠΈΠ½Π½ΠΎΠ²Π°Ρ†ΠΈΠΉ. ΠšΡ€ΡƒΡ‚Π°Ρ систСма управлСния ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с ΠΌΡ‹ΡˆΠΈ ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. ДинамичСскоС освСщСниС (нСслыханная Π²Π΅Ρ‰ΡŒ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Ρ€ΠΎΠ²).

Но большС всСго, ΠΊΠ°ΠΊ программисту, ΠΌΠ½Π΅ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ систСма Β«Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ LispΒ». Вся ΠΈΠ³Ρ€Π° заскриптована Π½Π° языкС, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰Π΅ΠΌ Lisp. ПовСдСниС Π²Ρ€Π°Π³ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π²ΠΎ врСмя выполнСния ΠΈΠ³Ρ€Ρ‹, Π° Π½Π΅ просто Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ΄.

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΈΠΌ интСрСсным ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠΌ стал способ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ события ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π²ΠΎ встроСнном Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΊΠ°Ρ€Ρ‚ – Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Ρ‚ΡŒ Π»ΠΈΠ½ΠΈΠΈ ΠΎΡ‚ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ ΠΊ Π΄Π²Π΅Ρ€ΠΈ, ΠΈΠ»ΠΈ ΠΎΡ‚ Π»ΠΎΠ²ΡƒΡˆΠΊΠΈ ΠΊ мСсту, Π³Π΄Π΅ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Ρ€Π°Π³ΠΈ. ΠŸΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ И/Π˜Π›Π˜ Π² Π²ΠΈΠ΄Π΅ скрытых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅. Π’Π°ΠΊΠΎΠ³ΠΎ я Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°Ρ… Π½Π΅ встрСчал.

ΠšΠΎΠΌΠΌΠ΅Ρ€Ρ‡Π΅ΡΠΊΠΎΠ³ΠΎ успСха ΠΈΠ³Ρ€Π° Π½Π΅ снискала ΠΈ Ρ‡Π΅Ρ€Π΅Π· Π΄Π²Π° Π³ΠΎΠ΄Π° исходники Π±Ρ‹Π»ΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΈΠ³Ρ€Π° ΠΎΡ‚ Crack Dot Com, Golgotha, Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ open-source, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ всю Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ.

Aliens versus Predator (1999)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. fe9602a46f2f15e68d301c9a2c1435fe. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-fe9602a46f2f15e68d301c9a2c1435fe. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° fe9602a46f2f15e68d301c9a2c1435fe. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

КакоС ΠΎΠ±Π»Π΅Π³Ρ‡Π΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ здСсь ΡˆΡƒΡ‚Π΅Ρ€ Π½Π΅ Π·Π° авторством id. И хотя тСхничСских ΠΈΠ½Π½ΠΎΠ²Π°Ρ†ΠΈΠΉ Π² ΠΈΠ³Ρ€Π΅ особо Π½Π΅ Π±Ρ‹Π»ΠΎ, сингл-кампания Ρƒ Π½Π΅Ρ‘ Π²Ρ‹ΡˆΠ»Π° просто ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰Π΅ΠΉ. И ΠΈΠ³Ρ€Π° остаётся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Π΄Π²ΠΈΠΆΠΊΠ° Π½Π΅ ΠΎΡ‚ id.

Freespace 2 (1999)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. 895f27d7a6477355a83f37c69c411210. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-895f27d7a6477355a83f37c69c411210. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 895f27d7a6477355a83f37c69c411210. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

Как Π±Ρ‹ наслСдник Ρ„Ρ€Π°Π½ΡˆΠΈΠ·Ρ‹ Descent, Π½ΠΎ Π½Π΅ совсСм. Кампания ΠΈ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅Π΅Ρ€ проходят ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π² космичСском пространствС.

ΠŸΡ€Π΅ΠΊΡ€Π°ΡΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ публикация исходников продляСт Тизнь ΠΈΠ³Ρ€ Π½Π° Π³ΠΎΠ΄Ρ‹. К ΠΈΠ³Ρ€Π΅ Π²Ρ‹ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ всячСскиС Π½Π°Π±ΠΎΡ€Ρ‹ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° ΠΈ Π°ΠΏΠ³Ρ€Π΅ΠΉΠ΄Ρ‹.

The Operative: No One Lives Forever (2000)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. 8e7d4c4d28d59723e4b5ebe95e72a3e2. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-8e7d4c4d28d59723e4b5ebe95e72a3e2. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 8e7d4c4d28d59723e4b5ebe95e72a3e2. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

Π£ Π΄Π²ΠΈΠΆΠΊΠ° LithTech история долгая, хотя ΠΎΠ½ ΠΈ находится Π² Ρ‚Π΅Π½ΠΈ Π±ΠΎΠ»Π΅Π΅ извСстных Quake ΠΈ Unreal engine. Π― особСнно Π½Π΅ рылся Π² исходника NOLF, Π½ΠΎ я ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°ΡŽ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ лишь исходники самой ΠΈΠ³Ρ€Ρ‹, Π½ΠΎ Π½Π΅ графичСского Π΄Π²ΠΈΠΆΠΊΠ°. И ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ Ρ‚Π°ΠΌ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ частСй, связанных с Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ Π½Π° PlayStation 2.

А Таль – Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° для PS2 Π² наши Π΄Π½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ для программистов ΠΈΠ½ΠΎΠΏΠ»Π°Π½Π΅Ρ‚Π½Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° Π³ΠΎΡ€Π°Π·Π΄ΠΎ сильнСС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΠ»Π° Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅, Ρ‡Π΅ΠΌ это Π΄Π΅Π»Π°ΡŽΡ‚ соврСмСнныС API.

MechCommander 2 (2001)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. c088d3ebda463dbcf2c3f9df25758edd. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-c088d3ebda463dbcf2c3f9df25758edd. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° c088d3ebda463dbcf2c3f9df25758edd. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ: FASA Interactive
Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒ: Microsoft
ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°: Windows

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ Microsoft ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ исходныС ΠΊΠΎΠ΄Ρ‹ вмСстС Π½Π΅ ΡƒΠΆΠΈΠ²Π°Π»ΠΈΡΡŒ. Но Π½Π° склонС Π»Π΅Ρ‚ ситуация Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΡΠΌΡΠ³Ρ‡Π°Ρ‚ΡŒΡΡ. Всё-Ρ‚Π°ΠΊΠΈ приятно Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ большиС ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ приходят ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ взглядам Π½Π° Π²Π΅Ρ‰ΠΈ – всС эти Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΡƒΠ»Π΅Π²ΡƒΡŽ ΠΊΠΎΠΌΠΌΠ΅Ρ€Ρ‡Π΅ΡΠΊΡƒΡŽ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ, ΠΎΠ½ΠΈ Ρ†Π΅Π½Π½Ρ‹ лишь историчСски.

Π’ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ Π³ΠΎΠ΄Ρƒ Π΄Π°ΠΆΠ΅ Π±Ρ‹Π»ΠΈ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Ρ‹ исходники Ρ€Π°Π½Π½ΠΈΡ… вСрсий MS-DOS ΠΈ Word, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ нСслыханным Π΄Π΅Π»ΠΎΠΌ Π»Π΅Ρ‚ 30 Π½Π°Π·Π°Π΄.

Doom 3 (2004)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. 0e5df8e035493950310fb8b768b322f2. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-0e5df8e035493950310fb8b768b322f2. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 0e5df8e035493950310fb8b768b322f2. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ: id Software
Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒ: Activision
ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°: Windows / Mac / Linux / Xbox / PS3
Code review: fabiensanglard.net

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π²ΠΈΠΆΠΊΠΈ соврСмСнных ΠΈΠ³Ρ€ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ класса, Ρ‚ΠΎ Doom 3 – это ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ². На врСмя Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΎΠ½ Π±Ρ‹Π» ΠΈΠ½Π½ΠΎΠ²Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… областях. ΠœΠ΅Ρ‚ΠΎΠ΄ использования ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ высокого Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° элСмСнтах Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π² ΠΈΠ³Ρ€Π΅ сСйчас являСтся стандартом для коммСрчСских ΠΈΠ³Ρ€. Π’ исходникС Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ всСго интСрСсного – ΠΎΠ΄Π½Π° лишь систСма ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ„ΠΈΠ·ΠΈΠΊΠΈ достойна изучСния, Π² частности, отслСТиваниС столкновСний.

Π­Ρ‚ΠΎ пСрвая ΠΈΠ³Ρ€Π° ΠΎΡ‚ id, написанная Π½Π° Π‘++. ΠŸΡ€ΠΎΡˆΠ»Ρ‹Π΅ ΠΈΠ³Ρ€Ρ‹ ΠΈΠ·-Π·Π° использования Π‘ нСсли Π² сСбС простоту. Doom 3 Ρ‚ΠΎΠΆΠ΅ довольно простой, Π½ΠΎ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΡƒΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° двиТСния.

Π’Π°ΠΊΠΆΠ΅ ΠΈΠ³Ρ€Π° (ΠΏΠ΅Ρ‡Π°Π»ΡŒΠ½ΠΎ) извСстна использованиСм Ρ‚Ρ€Π°Ρ„Π°Ρ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ‚Π΅Π½Π΅ΠΉ ΠΏΡ€ΠΈ расчётС освСщСния. МоТно ΡΠΏΠΎΡ€ΠΈΡ‚ΡŒ, Π±Ρ‹Π» это интСрСсный экспСримСнт ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π΅ для дальнСйшСй Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π½ΠΎ сСгодняшниС ΠΈΠ³Ρ€Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚Ρ‹ Ρ‚Π΅Π½Π΅ΠΉ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, эта Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΅Ρ‰Ρ‘ пригодится.

Gish (2004)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. 243906f7ca5719321c93ceb0fcaf8d96. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-243906f7ca5719321c93ceb0fcaf8d96. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 243906f7ca5719321c93ceb0fcaf8d96. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ: Cryptic Sea
Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒ: Chronic Logic / Stardock
ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°: Windows / Linux

Gish Π±Ρ‹Π» ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»Π΅Π½ Ρ„ΠΈΠ·ΠΈΠΊΠΎΠΉ «мягкого Ρ‚Π΅Π»Π°Β» ΠΈ интСрСсным ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ ΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² Π΅Π³ΠΎ исходниках ΠΈ Π²Ρ‹ΡΡΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Никаких сторонних физичСских Π΄Π²ΠΈΠΆΠΊΠΎΠ² Ρ‚ΡƒΡ‚ Π½Π΅Ρ‚.

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠ³Ρ€Π° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ написана Π½Π° Π‘ – сСйчас это Ρ€Π΅Π΄ΠΊΠΎ встрСчаСтся. Π­Ρ‚ΠΎ Π½Π΅ самый Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΈΠ· всСх Π²ΠΈΠ΄Π΅Π½Π½Ρ‹Ρ… мною исходников, Π½ΠΎ это Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΠ³Ρ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π² Π³ΠΈΠ³Π°Π½Ρ‚ΡΠΊΡƒΡŽ Ρ€Π°ΡΠΏΠΎΠ»Π·ΡˆΡƒΡŽΡΡ Π±Π°Π·Ρƒ ΠΊΠΎΠ΄Π° с сотнями Π²Π½Π΅ΡˆΠ½ΠΈΡ… зависимостСй.

Canabalt (2009)

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. 97aa5158beeff6caebd1d3ba38ed28ff. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-97aa5158beeff6caebd1d3ba38ed28ff. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 97aa5158beeff6caebd1d3ba38ed28ff. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ: Adam Saltsman
Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒ: Semi-Secret / Beatshapers / Kittehface
ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°: Flash / iOS / PSP / Android / Ouya

НС самая слоТная ΠΈΠ³Ρ€Π°, Π½Ρƒ ΠΈ Ρ‡Ρ‚ΠΎ? Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹, Π½Π°Ρ‡ΠΈΠ½Π°ΠΉΡ‚Π΅ с простого – Π²ΠΎΡ‚ с этого.

ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ заняло 5 Π΄Π½Π΅ΠΉ, ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° iOS – 10. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ прСвращСния простой ΠΈΠ΄Π΅ΠΈ Π² достойноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ Π±Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ 8-Π±ΠΈΡ‚Π½ΠΎΠΉ эпохи, ΠΊΠΎΠ³Π΄Π° СТСнСдСльно ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Π½ΠΎΠ²Ρ‹Π΅ ΠΆΠ°Π½Ρ€Ρ‹. Π–Π°Π»ΡŒ, Ρ‡Ρ‚ΠΎ с Ρ‚Π΅Ρ… ΠΏΠΎΡ€ люди ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ΄Π΅ΠΈ, Π° Π½Π΅ Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

Canabalt ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, насколько Π²Π΅Ρ‰ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ просто, Ссли Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ.

Π§Ρ‚ΠΎ я упустил

НуТно ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ Π΅Ρ‰Ρ‘ нСсколько ΠΈΠ³Ρ€. Они Π½Π΅ выпускали исходников, Π½ΠΎ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π»ΠΈΡΡŒ фанатскому ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌΡƒ ΠΈΠ½ΠΆΠΈΠ½ΠΈΡ€ΠΈΠ½Π³Ρƒ. Π­Ρ‚ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ настоящиС исходники, Π½ΠΎ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ интСрСсным:

НС ΠΏΠΎΠΏΠ°Π»ΠΈ Π² Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³

Π‘ΠΎΡ€Ρ†Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠ³Ρ€ ΡƒΡ‚Π΅ΠΊΠ»ΠΈ Π² ΡΠ΅Ρ‚ΡŒ нСлСгально, поэтому ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠΎΠΏΠ°Π»ΠΈ Π² Π·Π°Π» славы:

Half Life 2
Falcon 4.0
ReVolt
Turrican III
Mr. Nutz: Hoppin’ Mad
Trespasser (Π»Π°Π΄Π½ΠΎ ΡƒΠΆ, Π²ΠΎΡ‚ Π²Π°ΠΌ ΠΎΠ±Π·ΠΎΡ€ ΠΊΠΎΠ΄Π°)

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Как я ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π» DOS ΠΈΠ³Ρ€Ρƒ

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. image loader. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π₯ΠΎΡ‡Ρƒ сразу ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈΡ‚ΡŒ Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π΅Ρ‚: «Π‘Сйчас ΠΊΡƒΡ‡Ρƒ ΠΈΠ³Ρ€ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽ, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² эту ΡΡ‚Π°Ρ‚ΡŒΡŽ». Как говорится, Π½Π΅ Π²Π΅Ρ€ΡŒ всСму, Ρ‡Ρ‚ΠΎ ΠΏΠΈΡˆΡƒΡ‚ Π½Π° Π₯Π°Π±Ρ€Π΅. ΠŸΡ€ΠΎΡ†Π΅ΡΡ рСвСрса β€” это ΠΊΠ°ΠΊ процСсс программирования, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Π½Π° ΠΌΠΎΠΉ взгляд, ΠΌΡƒΡ‚ΠΎΡ€Π½Π΅Π΅ ΠΈ дольшС.

ΠŸΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ³Ρ€ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… спСцифичСских Π·Π½Π°Π½ΠΈΠΉ. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ ассСмблСр, устройство .exe Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π±ΠΎΠ»Π΅Π΅ высокоуровнСвый язык программирования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ C ΠΈΠ»ΠΈ C++ (ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ) хотя Π±Ρ‹ Π½Π° срСднСм ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с IDA. Π­Ρ‚ΠΈΡ… вопросов я ΠΊΠ°ΡΠ°Ρ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Ρƒ.

Если Π²Ρ‹ всё-Ρ‚Π°ΠΊΠΈ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΡΡ‚Π°Ρ€ΡƒΡŽ ΠΈΠ³Ρ€ΡƒΡˆΠΊΡƒ, ΠΈΠ»ΠΈ просто ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Ρ‘ исходники, ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΡΠ°ΠΌΡƒΡŽ-ΡΠ°ΠΌΡƒΡŽ Π½ΠΎΡΡ‚Π°Π»ΡŒΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½ΡƒΡŽ.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΠΎΠ΄ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ Windows.

План дСйствия

Π£ мСня Π±Ρ‹Π» ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΠ»Π°Π½ ΠΈ я Π΅Π³ΠΎ придСрТивался:

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈΠΌ экзСшник

Π Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°ΡŽΡ‚ всС нСизвСстныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Ρƒ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ большС ΠΈΡ…

ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ Π΄Π°Ρ‚ΡŒ всСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΡƒΠ΄ΠΎΠ±ΠΎΠ²Π°Ρ€ΠΈΠΌΡ‹Π΅ названия

ΠΠ°Π±Ρ€Π°Ρ‚ΡŒΡΡ тСрпСния. ΠŸΡ€ΠΎΡ†Π΅ΡΡ Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΈΠΉ

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ассСмблСрный Ρ„Π°ΠΉΠ» с исходным ΠΊΠΎΠ΄ΠΎΠΌ

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² %your_favorite_ide%, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ассСмблСрный Ρ„Π°ΠΉΠ» ΠΈ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ скомпилировался

Π”ΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ассСмблСрныС инструкции Π½Π° ваш вкус, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ссли исходники ΠΎΡ‚ Windows вСрсии

ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° %your_favourite_language%, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠΌΠΈ ассСмблСрныС DOS ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° экран, ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΡ Π·Π²ΡƒΠΊΠ°, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠΊΠ½Π° ΠΈ Ρ‚.ΠΏ.

Π’ ΠΈΠ΄Π΅Π°Π»Π΅ всС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ассСмблСрный Ρ„Π°ΠΉΠ»

НавСрноС это самый быстрый ΠΏΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠΎΠ΄, Π½Π΅ пСрСписывая Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ. ΠŸΡƒΡΡ‚ΡŒ ΠΈ Π½Π° ассСмблСрС.

ΠšΡΡ‚Π°Ρ‚ΠΈ, я ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. ПослС Ρ€Π°Π·Π±ΠΎΡ€Π° всСх ассСмблСрных ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, пытался ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° языкС высокого уровня, Π° Ρ‚Π°ΠΊΠΆΠ΅ пытался Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ саму ΠΈΠ³Ρ€Ρƒ с нуля, Π½ΠΎ быстро понял, Ρ‡Ρ‚ΠΎ это Π·Π°ΠΉΠΌΡ‘Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ нСсколько Π»Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… я ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π΅ ΠΌΠΎΠ³Ρƒ.

Π’Π°ΠΊΠΆΠ΅ этот ΠΏΠ»Π°Π½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ исходники Windows прилоТСния (начиная ΠΎΡ‚ вСрсии Windows 95 ΠΈ заканчивая Windows 10), хотя это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ‚ΡŒ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ Π½Π° использованиС этого прилоТСния, слСдуСт ΠΈΠΌΠ΅Ρ‚ΡŒ это Π² Π²ΠΈΠ΄Ρƒ.

НСмного ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΏΡƒΠ½ΠΊΡ‚Ρƒ ΠΏΠ»Π°Π½Π° я Π½Π°ΠΏΠΈΡˆΡƒ Π½ΠΈΠΆΠ΅.

1. Π”ΠΎΠ±Ρ‹Ρ‚ΡŒ дизассСмблСр

Π’ нашС врСмя Π΅ΡΡ‚ΡŒ нСсколько мастодонтов дизассСмблирования, это IDA ΠΈ Ghidra ΠΈ Π΅Ρ‰Ρ‘ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ. На ΠΌΠΎΠΉ взгляд, IDA ΠΏΠΎΠΊΠ° Π²Ρ‹Π΄Π°Ρ‘Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅Π΅ качСство дизассСмблированного ΠΊΠΎΠ΄Π°, Ρƒ Π½Π΅Ρ‘ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ассСмблСрного ΠΊΠΎΠ΄Π° Π² псСвдокод, ΠΎΠ½Π° Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ старыС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ DOS Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

БущСствуСт бСсплатная вСрсия IDA free, Π½ΠΎ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ совсСм ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ. Π£ мСня ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΏΡ€ΠΎΠΏΠ°Π»Π° многочасовая Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ рСвСрсу, вСрсия free Π·Π°Π³ΡƒΠ±ΠΈΠ»Π° свой Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Pro ΠΎΡ‡Π΅Π½ΡŒ дорогая, Π½ΠΎ для Ρ€Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠ°ΠΊ этот, я гонял IDA Ρƒ Π΄Ρ€ΡƒΠ³Π°, Ρ‡Π΅Π³ΠΎ ΠΈ Π²Π°ΠΌ ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽ.

2. ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ экзСшник

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, экзСшники Π²Π½ΡƒΡ‚Ρ€ΠΈ упорядочСны ΠΏΠΎ своСй структурС, с самого Π½Π°Ρ‡Π°Π»Π° ΠΈΠ΄Ρ‘Ρ‚ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ(ΠΈ), Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ разная: ΠΊΠΎΠ΄, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈ Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΠΎΠ΄ Windows). Нам понадобятся ΠΊΠΎΠ΄ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅. Π’Π°Π±Π»ΠΈΡ†Ρƒ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° придётся всю Π²Ρ‹Ρ€Π΅Π·Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Ρ‘ include-ΠΌΠΈ.

Если Ρƒ вас экзСшник ΠΎΡ‚ Windows вСрсии (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ»ΠΎΡ…ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π½Π° соврСмСнных систСмах экзСшник ΠΎΡ‚ Windows 95), Ρ‚ΠΎ Π²Π°ΠΌ считайтС ΠΏΠΎΠ²Π΅Π·Π»ΠΎ. Π‘ΡƒΠ΄Π΅Ρ‚ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ запускаСмый исходный ΠΊΠΎΠ΄, Π° Ρ‡Ρ‚ΠΎ самоС Π³Π»Π°Π²Π½ΠΎΠ΅, Π΅Ρ‰Ρ‘ ΠΈ быстро. Если ΠΎΡ‚ DOS с использованиСм 32 Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚Π΅Π»Ρ, Ρ‚.Π΅. с dos4g, dos4gw Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚Π΅Π»ΡΠΌΠΈ, Ρ‚ΠΎ Π²Π°ΠΌ ΠΏΠΎΠ»ΡƒΠΏΠΎΠ²Π΅Π·Π»ΠΎ. Если ΠΎΡ‚ 16 Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ DOS прилоТСния, Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΎ IDA Π·Π°Π±Ρ‹Ρ‚ΡŒ ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ всё с нуля, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ рСсурсы Π² ΠΊΠΎΠ΄Π΅.

Π― взял экзСшник ΠΎΡ‚ DOS ΠΈΠ³Ρ€Ρ‹ Bedlam 2: Absolute Bedlam. Π­Ρ‚Π° ΠΈΠ³Ρ€Π° нСобоснованно Π·Π°Π±Ρ‹Ρ‚Π°, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠ·Π΄Π°Ρ‚Π΅Π»Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выпустил Π² своё врСмя DOOM ΠΈ Duke Nukem 3D ΠΈ Π±Ρ‹Π»Π° ΠΎΡ‡Π΅Π½ΡŒ качСствСнной. Но, Π² ΠΈΡ‚ΠΎΠ³Π΅, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ ΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π»ΠΈΠ·Π° Π½Π΅ Π±Ρ‹Π»ΠΎ. Π˜Π³Ρ€Π° Π±Ρ‹Π»Π° слита Π½Π΅Π΄ΠΎΠ΄Π΅Π»Π°Π½Π½ΠΎΠΉ с ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ уровнями, ΠΊΡ€ΠΈΠ²Ρ‹ΠΌ балансом, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π±Π°Π³Π°ΠΌΠΈ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ для Π»Π΅Π²Π΅Π»-Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€ΠΎΠ². Π’Π°ΠΊΠΆΠ΅, Π½Π΅ случился Ρ€Π΅Π»ΠΈΠ· вСрсии для Windows 95, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ Π±Ρ‹Π» Π³ΠΎΠ΄ΠΎΠΌ Ρ€Π°Π½Π΅Π΅ для ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ, ΠΏΠ΅Ρ€Π²ΠΎΠΉ части Bedlam.

К соТалСнию, Π½Π΅ вСсь софт ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ этичСским ΠΈ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ. БСйчас Bedlam 2 относится ΠΊ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΌΡƒ ПО abandonware, Π·Π°Π±Ρ‹Ρ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ поддСрТиваСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сСйчас ΡƒΠΆΠ΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈ Π½Π΅Ρ‚ Π² ΠΆΠΈΠ²Ρ‹Ρ…. Π€ΠΈΡ€ΠΌΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Mirage Technologies ΠΈ ΠΈΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ GT Interactive ΡƒΠΆΠ΅ Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚, Π° ΠΈΠ³Ρ€Ρƒ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΊΡƒΠΏΠΈΡ‚ΡŒ. ЛицСнзия Π½Π° ΡΠ΅Ρ€ΠΈΡŽ Bedlam, скорСС всСго Π΅Ρ‰Ρ‘ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚, я Π΄Π°ΠΆΠ΅ Π΄ΠΎΠ³Π°Π΄Ρ‹Π²Π°ΡŽΡΡŒ ΠΊΠΎΠΌΡƒ, Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Ρƒ ΠΈΡ… сюда ΠΏΡ€ΠΈΠ·Ρ‹Π²Π°Ρ‚ΡŒ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ соглашСния ΠΈΠ³Ρ€Ρ‹ Bedlam 2 я Π½Π΅ нашСл, Π° Π½Π° заставкС ΠΈΠ³Ρ€Ρ‹ Π½Π΅ запрСщаСтся ΠΈΠ³Ρ€Ρƒ Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚ΠΎ ΠΏΠΎΠ³Π½Π°Π»ΠΈ. ЭкзСшник собран 29.10.1997Π³., Ρ‡ΡƒΡ‚ΡŒ ΠΌΠ΅Π½Π΅Π΅ 25 Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄. Π’ΠΎΠ³Π΄Π° ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅Π΄ΠΊΠΎ ΠΊΡ‚ΠΎ заморачивался ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ ΠΈ обфускациСй ΠΊΠΎΠ΄Π° для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ дизассСмблинга. Но ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ.

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. image loader. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

DiE ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ это MSDOS LE экзСшник, собранный компилятором Watcom C. Никаких ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‰ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ.

БобствСнно, ΠΌΠ½Π΅ ΠΏΠΎΠ²Π΅Π·Π»ΠΎ, это оказалось 32 Π±ΠΈΡ‚Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ 32 Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚Π΅Π»Ρ dos4gw. Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° это, это Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ dos4gw.exe Π² ΠΏΠ°ΠΏΠΊΠ΅ с ΠΈΠ³Ρ€ΠΎΠΉ.

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. image loader. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

IDA Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π΄Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚ΠΈΠΏΠ° Ρ‚ΠΎΠ³ΠΎ. Она сама ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»Π° main Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»Π° всС извСстныС Π΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π²Ρ‹Π΄Π΅Π»ΠΈΠ»Π° ΠΈΡ… синим Ρ†Π²Π΅Ρ‚ΠΎΠΌ. ПсСвдокод Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ (клавиша F5).

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. image loader. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

Если Ρƒ вас Π½Π΅ Ρ‚Π°ΠΊ ΠΈ Π½Π΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ВСроятно стоит ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ настройками, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠ°ΠΊ MS-DOS executable ΠΈΠ»ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ процСссора, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 486ΠΉ. Π‘Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅Ρ‚, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ DOS ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Π½Π° основС ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ β€” своих встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π‘Π»Π°Π³ΠΎ IDA ΡƒΠΌΠ΅Π΅Ρ‚ ΠΈΡ… ΠΏΠΎΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ.

Если Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ псСвдокод. К соТалСнию, ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² 32 Π±ΠΈΡ‚Π½Ρ‹Ρ… прилоТСниях, Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΈ Π»Π°ΠΉΡ„Ρ…Π°ΠΊ. ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΊΠ°ΠΊ 16 Π±ΠΈΡ‚Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ MS-DOS executable, Π° Π·Π°Ρ‚Π΅ΠΌ Π² сСгмСнтах (Shift-F7) Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСгмСнт ΠΊΠΎΠ΄Π° ΠΊΠ°ΠΊ 32 Π±ΠΈΡ‚Π½Ρ‹ΠΉ. Π£ΠΆ Π½Π΅ знаю ΠΊΠ°ΠΊΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ качСство псСвдокода, Π½Π΅ провСрял. Но это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ссли ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΎΡ‡Π½ΠΎ написано с 32 Π±ΠΈΡ‚Π½Ρ‹ΠΌ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚Π΅Π»Π΅ΠΌ, Π½ΠΎ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ помСчаСтся ΠΊΠ°ΠΊ 16 Π±ΠΈΡ‚Π½ΠΎΠ΅.

3. Π Π°Π·Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Π’ спискС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π² IDA, ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ нСпонятных ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ SUB_xxxxxx, Π³Π΄Π΅ xxxxxx β€” просто смСщСниС. НСобходимо Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΈ Π΄Π°Ρ‚ΡŒ ΠΈΠΌ ΡƒΠ΄ΠΎΠ±ΠΎΠ²Π°Ρ€ΠΈΠΌΡ‹Π΅ названия. Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ это ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ с ΠΏΡ€Π°Π²ΠΊΠΎΠΉ исходников.

Π‘ΠΎΠ²Π΅Ρ‚ΡƒΡŽ вСсь Ρ€Π°Π·Π±ΠΎΡ€ вСсти Π² псСвдокодС. Π’Π°ΠΊ ΠΏΡ€ΠΎΡ‰Π΅. Если ΠΈΠ· Π½Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π° Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΈΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚ΠΎ ΠΎΠ½ΠΈ автоматичСски измСнятся ΠΈ Π² ассСмблСрном листингС. ПсСвдокод Ρ…ΠΎΡ‚ΡŒ ΠΈ ΡƒΠ΄ΠΎΠ±Π΅Π½, Π½ΠΎ это лишь инструмСнт, поэтому Π² ассСмблСрный листинг придётся Ρ‡Π°ΡΡ‚Π΅Π½ΡŒΠΊΠΎ Π·Π°Π³Π»ΡΠ΄Ρ‹Π²Π°Ρ‚ΡŒ.

Π•ΡΡ‚ΡŒ нСсколько Ρ‚Π΅Ρ…Π½ΠΈΠΊ, ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° (Π½Ρƒ ΠΈΠ»ΠΈ функция, ΠΊΠΎΠΌΡƒ ΠΊΠ°ΠΊ нравится). МоТно Π½Π°ΠΉΡ‚ΠΈ всС строковыС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΎΠ½ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈ Ρ‡Ρ‚ΠΎ с Π½ΠΈΠΌΠΈ дСлаСтся. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎΠ½ΠΈ располоТСны Π² сСгмСнтС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, придСтся ΠΈΡ… просто ΠΏΠΎΠΈΡΠΊΠ°Ρ‚ΡŒ.

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. image loader. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

НапримСр, Π½Π° рисункС Π²Ρ‹ΡˆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ описания ошибок ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΈ ΠΌΡ‹ΡˆΠΈ. Π‘Ρ‚ΠΎΠΈΡ‚ просто лишь Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ строковой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΎ Ρ„ΠΈΠΎΠ»Π΅Ρ‚ΠΎΠ²Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ Π½Π° рисункС, IDA ΠΈΡ… автоматичСски создаёт) ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ X, IDA Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ всС ссылки, Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ эта строковая пСрСмСнная.

Π’Π°ΠΊΠΆΠ΅, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ способ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°, это Π½Π°ΠΉΡ‚ΠΈ извСстныС Π²Π°ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ printf, sprintf, fopen, fread, ΠΈ Ρ‚.ΠΏ. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΎΠ½ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈ Ρ‚Π°ΠΌ ΡƒΠΆΠ΅ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ выводится Π½Π° экран ΠΈΠ»ΠΈ открываСтся ΠΈ считываСтся, Π² зависимости ΠΎΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π’ псСвдокодС ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π΅ΡΡ‚ΡŒ Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, сколько ΠΈΡ… ΠΈ ΠΊΠ°ΠΊΠΎΠΉ ΠΈΡ… Ρ‚ΠΈΠΏ. Надо лишь Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ Y. Π€ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ это Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ скаТСтся Π² дальнСйшСм Π½Π° ассСмблСрном листингС, Π½ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ псСвдокод.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, сколько Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π½Π° ассСмблСрС, Π½Π°Π΄ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ соглашСнию ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°Ρ…. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ с ΠΊΠ°ΠΊΠΈΠΌ соглашСниСм Π±Ρ‹Π»Π° скомпилирована ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‚Ρ€ΡƒΠ΄Π° Π½Π΅ составит, Π½Π°Π΄ΠΎ просто ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Π²Ρ‹Π·ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€. НапримСр, Π² ΠΌΠΎΠ΅ΠΌ случаС, это ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° fastcall, хотя Watcom Π΅Π³ΠΎ Π² Ρ‚ΠΎ врСмя Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π». НавСрняка использовалась ваткомовская Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #pragma aux для использования всСх доступных рСгистров, Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ EAX, EDX, EBX, ECX, ESI, EDI, EBP. А Ссли ΠΈΡ… Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ Π² стСк справа Π½Π°Π»Π΅Π²ΠΎ. НапримСр, Π²Ρ‹Π·ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° numbers.bin Π½Π° экран выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π’ΠΎΡ‡ΠΊΠΎΠΉ с запятой Π²Ρ‹Π΄Π΅Π»Π΅Π½Ρ‹ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ.

Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ IDA Π½Π΅Π²Π΅Ρ€Π½ΠΎ опрСдСляСт количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΉΡ‚ΠΈ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ Π² ассСмблСрном листингС ΠΈ Π³Π»ΡΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ располоТСно Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹.

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, рСгистры EBX, ECX, ESI, EDI, EBP Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΊ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ своё состояниС ΠΈΠ· стСка Π² ΠΊΠΎΠ½Ρ†Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΠ· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ (Π² псСвдокодС клавиша Y, Π²Ρ‹Π΄Π΅Π»ΠΈΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈ просто ΡΡ‚Π΅Ρ€Π΅Ρ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹). А EAX ΠΈ EDX содСрТат Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.

НС всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ соглашСниС ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°Ρ…. НапримСр, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ свои соглашСния, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΡ‚ всСго ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. НапримСр, функция printf ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ cdecl ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ свои ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‡Π΅Ρ€Π΅Π· стСк.

Иногда Π²Π°ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ nullsub_X, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ состоят всСго лишь ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ retn. Π­Ρ‚ΠΎ слСдствиС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π΅ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, которая ΠΏΡ€Ρ‹Π³Π½Π΅Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ jmp Π½Π° адрСс nullsub_X. Если ΠΆΠ΅ это Π±ΡƒΠ΄Π΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ call nullsub_X, Ρ‚ΠΎ Π½Π° это ΠΌΠΎΠΆΠ½ΠΎ просто Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.

Иногда IDA Π½Π΅Π²Π΅Ρ€Π½ΠΎ опрСдСлят Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ·-Π·Π° Π΅Ρ‘ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚ΠΎΡ‡Π½Π΅Π΅ Π½Π΅Π²Π΅Ρ€Π½ΠΎ опрСдСляСтся ΠΊΠΎΠ½Π΅Ρ† Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Из-Π·Π° этого ломаСтся вСсь псСвдокод, поэтому придётся Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π² листингС. Π’Π΅Ρ€Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ IDA Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ это пустой Π²Ρ‹Π²ΠΎΠ΄ Π² псСвдокодС. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, это Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚ для дальнСйшСй сборки ΠΈ Π½Π° этапС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ запуска ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ это выявляСтся.

Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ рСвСрсёра Π΅ΡΡ‚ΡŒ свои Π»ΡŽΠ±ΠΈΠΌΡ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ, Π½ΠΎ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‚ΡΡ всС ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

4. Π Π°Π±ΠΎΡ‚Π° с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ Ρ€Π°Π·Π±ΠΎΡ€Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² Π½Π΅ΠΉ.

Если Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ byte_xxxxxx, word_xxxxxx, dword_xxxxxx ΠΈ Ρ‚.ΠΏ. β€” это названия ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π² области памяти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Они ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΈ Π½Π΅Ρ‚. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ объявлСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π½ΠΈΠΆΠ΅.

ЕстСствСнно, всСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π½Π°Π΄ΠΎ Π΄Π°Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±ΠΎΠ²Π°Ρ€ΠΈΠΌΡ‹Π΅ названия. И Π½Π΅ просто x, y, Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, player_pos_x, player_pos_y ΠΈ Ρ‚.ΠΏ. Если Π² Ρ‡Ρ‘ΠΌ-Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ сомнСниС, ΠΌΠΎΠΆΠ½ΠΎ ΠΊ названию ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ _maybe. К названиям Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ это Ρ‚ΠΎΠΆΠ΅ относится.

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· листинга ΠΊΠΎΠ΄Π° Π²Ρ‹ΡˆΠ΅, Π½Π΅ всСгда понятно, массив это, ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΈΠ»ΠΈ пСрСмСнная ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. Π‘ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ массивов Ρ‚ΠΎΠΆΠ΅ Π½Π΅ всё спСрва ясно. Иногда Π² ΠΊΠΎΠ΄Π΅ встрСчаСтся Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚ΠΈΠΏΠ°:

И Ρ‚ΠΎΠ³Π΄Π° понятно, Ρ‡Ρ‚ΠΎ dword_4E7ED6 + 2 β€” это Π½Π°Ρ‡Π°Π»ΠΎ массива Π½Π° 1184 Π±Π°ΠΉΡ‚Π°. Π’Π½ΡƒΡ‚Ρ€ΠΈ clear_buffer, кстати, ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ memset(*, 0, );, это я ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π», для понимания.

Но ΠΈΠ½ΠΎΠ³Π΄Π° встрСчаСтся ΠΈ Ρ‚Π°ΠΊΠΎΠ΅:

IDA Π½Π΅Π²Π΅Ρ€Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»Π° константу 0x57800 ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ loc_577FE + 2. К соТалСнию, всС Ρ‚Π°ΠΊΠΈΠ΅ мСста придётся Π½Π°ΠΉΡ‚ΠΈ ΠΈ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ, ΠΈΠ½Π°Ρ‡Π΅ пСрСсобранная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΡ€Π°ΡˆΠΈΡ‚ΡŒΡΡ Π² этом мСстС, ΠΈΠ»ΠΈ Π³Π΄Π΅-Ρ‚ΠΎ рядом.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, довольно Π»Π΅Π³ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, константа это ΠΈΠ»ΠΈ пСрСмСнная. ΠŸΡ€ΠΎΡΡ‚ΠΎ 2 Ρ€Π°Π·Π° ΠΊΠ»ΠΈΠΊΠ½ΡƒΠ² Π½Π° Π½Π΅Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² сСгмСнт Π΄Π°Π½Π½Ρ‹Ρ… (Π΅ΡΡ‚ΡŒ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ это константа, Ρ‚ΠΎΠ³Π΄Π° Ρ‚Π°ΠΊΠΈΠ΅ мСста Π½Π°Π΄ΠΎ ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π΄ΠΎ дальнСйшСй ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹) ΠΈΠ»ΠΈ Π² сСгмСнт ΠΊΠΎΠ΄Π°, Ρ‚ΠΎΠ³Π΄Π° это Ρ‚ΠΎΡ‡Π½ΠΎ константа ΠΈ, Π²Ρ‹Π΄Π΅Π»ΠΈΠ² Π΅Ρ‘, ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Π² ассСмблСрном листингС, Π½Π°Π΄ΠΎ это ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ (ΠΈΠ»ΠΈ клавиша Q).

Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² псСвдокодС:

int3 здСсь β€” Ρ‚ΠΎΡ‡Π½ΠΎ константа, просто IDA ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»Π° константу 0x10000 ΠΊΠ°ΠΊ адрСс прСрывания int 3, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ располоТСно ΠΏΠΎ этому адрСсу.

ΠšΡΡ‚Π°Ρ‚ΠΈ, псСвдокод пСстрит ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ v0, v1, v2. ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π² ассСмблСрном листингС. Π’Π°ΠΊ IDA ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅Ρ‚ рСгистры ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Π˜Ρ… Ρ‚ΠΎΠΆΠ΅ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ для упрощСния Ρ€Π°Π±ΠΎΡ‚Ρ‹.

И Π΄Π° Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ слСдуСт Π΄Π°Π²Π°Ρ‚ΡŒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°. ΠŸΠΎΡ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΊ с компиляциСй Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

5. ΠΠ°Π±Π΅Ρ€ΠΈΡ‚Π΅ΡΡŒ тСрпСния

Π‘Π΅Ρ€ΡŒΠ΅Π·Π½ΠΎ. ΠŸΡ€ΠΎΡ†Π΅ΡΡ Ρ€Π°Π·Π±ΠΎΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΈΠΉ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ понадобится ΠΏΠΎΠ»Π³ΠΎΠ΄Π°-Π³ΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ. ΠŸΡ€ΠΈ этом, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ всё ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ Ρ…Π²Π°Ρ‚ΠΈΡ‚ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΎΠ² сСмидСсяти.

6. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ассСмблСрного Ρ„Π°ΠΉΠ»Π°

Π‘Π½Π°Ρ‡Π°Π»Π° Π½Π°Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ, Π³Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΊΠΎΠ΄ΠΈΡ‚ΡŒ. Π― Π²Ρ‹Π±Ρ€Π°Π» Visual Studio, с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ MASM ассСмблСра. ΠšΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… слоТностСй для Linux ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ‚ΠΎΠΆΠ΅ Π½Π΅Ρ‚. Π•ΡΡ‚ΡŒ ΠΈ MASM компиляторы для Linux, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ JWasm.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ASM Ρ„Π°ΠΉΠ» Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ нСсколько шагов. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°.

IDA ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ синтаксис TASM ΠΈ Π½Π΅ΠΊΠΈΠΉ Generic for Intel (IDA β€” Options β€” General β€” Analysis). Π‘ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ всё Ρ‚Π°ΠΊ Π³Π»Π°Π΄ΠΊΠΎ, ΠΊΠ°ΠΊ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹, поэтому оставляСм ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Generic for Intel.

IDA β€” Options β€” Assembler Directives. Π£Π±Ρ€Π°Ρ‚ΡŒ Π³Π°Π»ΠΎΡ‡ΠΊΡƒ ASSUME.

Π Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ всС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, IDA сворачиваСт ΠΈΡ… Π² ΠΎΠ΄Π½Ρƒ строку. И Ссли ΠΎΠ½ΠΈ свёрнуты, Ρ‚ΠΎ Ρ‚Π°ΠΊ ΠΈ ΠΏΠΎΠΏΠ°Π΄ΡƒΡ‚ Π² ASM Ρ„Π°ΠΉΠ» свёрнутыми. View β€” Unhide all.

НСобходимо Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ со структурами. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ соврСмСнный MASM Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ идовскоС объявлСниС структур. Надо Π»ΠΈΠ±ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΡ… всС ΠΈΠ· списка структур, Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ MASM компилятора «/Zm» для совмСстимости. Если Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ структуры, Ссли, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΎΠ½ΠΈ Ρƒ вас Π΅ΡΡ‚ΡŒ, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡ… Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ‚ΠΎΠΆΠ΅ ΡΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² ΠΎΠ΄Π½Ρƒ строку. View β€” Unhide all Π² структурах.

Π£Π±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ Π΄Π°Π²Π°Π»ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ. К соТалСнию, ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ совСта, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅Ρ‚. ΠŸΡ€ΠΈ компиляции Π²Ρ‹Π»Π΅Π·Π΅Ρ‚.

Π£Π±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ спСцифичного Π½Π΅ MASM синтаксиса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ прямо Π² IDA. НапримСр, Ρƒ мСня Π±Ρ‹Π»ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π² сСкции Π΄Π°Π½Π½Ρ‹Ρ…:

MASM Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΡƒΡŽ запись unicode тСкста, поэтому ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚Π°ΠΊΠΎΠΉ записи ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ β€” Undefine.

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° создания ассСмблСрного листинга β€” это Π΄Π°Π½Π½Ρ‹Π΅, принятыС Π·Π° ΠΊΠΎΠ΄. И ΠΊΠΎΠ΄ Π·Π° Π΄Π°Π½Π½Ρ‹Π΅. Π£ мСня Π±Ρ‹Π»Π° такая памятная строка Π² сСкции ΠΊΠΎΠ΄Π°, выглядящая ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ нСпонятных инструкций. Если Π΅ΡΡ‚ΡŒ сомнСния, Π½ΡƒΠΆΠ½ΠΎ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΄Π°ΠΌΠΏ памяти, Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ прСдставлСниС Π² ASCII символах.

ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, всё. МоТно Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ASM Ρ„Π°ΠΉΠ». ДСлаСтся это довольно просто, File β€” Produce File β€” Create ASM file. ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚ΠΈΠΏΠ° filename.exe.asm. Π’ΠΎΠ³Π΄Π° ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ ΠΈΠ· названия .exe. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΡƒΠ΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ копию сгСнСрированного Ρ„Π°ΠΉΠ»Π° ΠΈ Π½Π΅ Ρ‚Ρ€ΠΎΠ³Π°ΠΉΡ‚Π΅ Π΅Ρ‘ Π² дальнСйшСм, Ρ…ΠΎΡ‚ΡŒ Π² Π³ΠΈΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π±Ρ€Π°Π½Ρ‡Π΅ΠΌ, ΠΏΠΎΡ‚ΠΎΠΌ пригодится для вспоминания, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π² ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ мСстС.

7. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ компиляция Ρ„Π°ΠΉΠ»Π°

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ всС ошибки Π² Ρ„Π°ΠΉΠ»Π΅ ΠΈ просто Π΅Π³ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. НичСго ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ³ΠΎ, Ссли исходный Ρ„Π°ΠΉΠ» ΠΎΡ‚ DOS ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΌΡ‹ Π΅Π³ΠΎ Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ, ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ. Если Ρ„Π°ΠΉΠ» ΠΎΡ‚ Windows, Ρ‚ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ.

Π’ VS Π½ΡƒΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ MASM Π² зависимостях сборки (ΠŸΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΏΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ β€” зависимости сборки). Π‘ΠΌ. рисунок.

ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. image loader. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалуйста, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ·Π½Π°ΡŽ исходный ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ сами Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠ°Ρ‚ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ ΠΈΠ»ΠΈ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ»ΡŒΡŽΡ‚?

ПослС этого всё Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Или ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΌΠ΅Ρ€Π΅ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ. ПослС 100 ошибок MASM компилятор выдаст, Ρ‡Ρ‚ΠΎ Π½Π° этом Π΅Π³ΠΎ полномочия всё ΠΈ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ вСсь синтаксис, Π½Π΅ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹ΠΉ для MASM. АссСмблСрный Ρ„Π°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ структуру

ΠŸΡ€ΠΈ этом Π½Π°Π΄ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС объявлСния сСкций, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρƒ нас Π±Ρ‹Π»ΠΈ созданы ΠΈΠ΄ΠΎΠΉ. Π’ MASM сСкции ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°ΠΌΠΈ .CODE, .DATA ΠΈ .DATA?. ΠŸΡ€ΠΈ этом, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сСкций значСния Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚. Π’.Π΅. вмСсто

Π’Π°ΠΊΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ строчки public start ΠΈ end start, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π»ΠΈ Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ† ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ВмСсто этого Π² MASM ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΊΠΈ start:, end start. Π˜Ρ… ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ссли Π²Ρ‹ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π’ΠΎΡ‡Π½Π΅Π΅, эти ΠΌΠ΅Ρ‚ΠΊΠΈ start ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π±Ρ‹ΡΡ‚Ρ€Π΅Π½ΡŒΠΊΠΎ пробСТимся Π½Π°Π΄ ошибками, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π΄Π°Π΅Ρ‚ компилятор. Π˜Ρ… всС придётся ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ.

instruction prefix not allowed

invalid combination with segment alignment : %num_bytes%

undefined symbol : loc_xxxxxx

ΠžΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠΊ loc_xxxxxx ΠΈ def_xxxxxx, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ MASM Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ, хотя ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² Ρ„Π°ΠΉΠ»Π΅. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊΠΎΠ΅ происходит, это Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΊΠΈ для MASM ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΈΡ… поиска ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ proc, end proc. Π’Π°ΠΊΠΈΠ΅ ошибки Ρ‡Π°Ρ‰Π΅ всСго Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚, Ссли:

IDA Π½Π΅Π²Π΅Ρ€Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹. РСшСниС: просто ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ ΠΊΠΎΠ½Π΅Ρ† ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ end proc Π½Π° Π²Π΅Ρ€Π½ΠΎΠ΅ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹. Начало ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ Π½Π΅ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒ, Ссли Π²Ρ‹ 100% Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ вашСго Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ соптимизировал Ρ‡Π°ΡΡ‚ΡŒ дизассСмблированной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ участки ΠΊΠΎΠ΄Π° Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ…. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ подвСргаСтся ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ с Π²Π΅Ρ€Π΅Π½ΠΈΡ†Π΅ΠΉ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… pop-ΠΎΠ². Π•ΡΡ‚ΡŒ Π΄Π²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π›ΠΈΠ±ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΊΡƒ глобальной, просто Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π²Ρ‚ΠΎΡ€ΠΎΠ΅ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅, Π²Ρ€ΠΎΠ΄Π΅ loc_xxxxxx. Π»ΠΈΠ±ΠΎ Ρ€Π°ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вСсь ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠΎ мСстам, Π³Π΄Π΅ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ‚ΠΎΡΡ‚ΡŒ. БыстрСС ΠΈ Π±Π΅Π·ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Π΅Π΅ Π½Π° этом этапС, ΠΌΠ½Π΅ каТСтся, ΠΌΠ΅Ρ‚ΠΎΠ΄ с двумя двоСточиями.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ дизассСмблируСмой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ помСстил ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° switch (Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎ для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° языках C, C++) Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹. Если Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠΊ def_xxxxxx ΠΈΠ»ΠΈ loc_xxxxxx, Π° Π² коммСнтария ΠΎΡ‚ IDA написано Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ ;jumptable XXXXXX case X, Ρ‚ΠΎ это Ρ‚ΠΎΡ‚ случай. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΌΠ΅Ρ‚ΠΊΠΈ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ рядом с ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ Ρ†Π΅Π»Ρ‹ΠΌ списком, Π²Ρ€ΠΎΠ΄Π΅:

НуТно ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ эти ΠΌΠ΅Ρ‚ΠΊΠΈ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Π»ΠΈΡΡŒ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅:

ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅ константы, принятыС Π·Π° ΠΌΠ΅Ρ‚ΠΊΠΈ, ΠΏΡ€ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Ρ€Π°Π½Π΅Π΅ писал. НапримСр, ΠΌΠ΅Ρ‚ΠΊΠ° loc_186A0, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС, β€” это константа 100000. На константу Π½Π°ΠΌΠ΅ΠΊΠ°Π΅Ρ‚ ΠΊΡ€ΡƒΠ³Π»ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ адрСсу 0x186A0 находится ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ участок ΠΊΠΎΠ΄Π°, Π° Π½Π΅ Π΄Π°Ρ‚Π°.

На ΠΌΠ΅Ρ‚ΠΊΡƒ ΠΆΠ΅ Π½Π°ΠΌΠ΅ΠΊΠ°ΡŽΡ‚ всС Ρ‚ΠΈΠΏΡ‹ ΠΏΡ€Ρ‹ΠΆΠΊΠΎΠ². Π§Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ jmp loc_16860 всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ.

undefined symbol : %segment_name%

undefined symbol : %some_name%

missing operator in expression

НаТимая Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΏΠΎΠΏΠ°Π΄Π°Π΅ΠΌ Π½Π° строчку

НуТно ΡΡ‚Π΅Ρ€Π΅Ρ‚ΡŒ всС large. MASM ΠΈΡ… Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚. Бмысл остаётся Ρ‚ΠΎΡ‚ ΠΆΠ΅.

use of register assumed to ERROR

НаТимая Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΏΠΎΠΏΠ°Π΄Π°Π΅ΠΌ Π² мСсто Π²Ρ€ΠΎΠ΄Π΅:

РСгистр GS Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ ΠΈΠ»ΠΈ компилятор Π΄ΡƒΠΌΠ°Π΅Ρ‚ ΠΎΠ± этом, поэтому Π½Π°Π΄ΠΎ Π½Π΅Π·Π°Π΄ΠΎΠ»Π³ΠΎ Π΄ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Π° Π»ΡƒΡ‡ΡˆΠ΅ Π³Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π²Π½Π°Ρ‡Π°Π»Π΅ сСгмСнта с ΠΊΠΎΠ΄ΠΎΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ:

initializer magnitude too large for specified size

ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ это MAX_DOUBLE, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π΅ΡΡ, для Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ форматирования (s)printf. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π½Π°:

На этом всё. Ошибки Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈΡΡŒ, Ρ„Π°ΠΉΠ» компилируСтся. Π›ΠΈΠ½ΠΊΠ΅Ρ€ ругаСтся Π½Π° отсутствиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main, ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΌΡ‹ вСдь Π½Π΅ добавляли start:, end start ΠΌΠ΅Ρ‚ΠΊΠΈ.

8. Π Π°Π·Π½Ρ‹Π΅ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² asm (компиляция Windows ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹)

РасскаТу Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Для ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… всё Π±ΡƒΠ΄Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ. НапримСр, Π³Π΄Π΅-Ρ‚ΠΎ Π² ΠΊΠΎΠ΄Π΅ вызываСтся библиотСчная функция создания ΠΎΠΊΠ½Π°.

НуТно Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ proc CreateWindowExA, которая пСрСнаправляСт Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠ΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΅Ρ‘. НуТно Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС оффсСты ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, содСрТащиС CreateWindowExA Π² сСгмСнтС Π΄Π°Π½Π½Ρ‹Ρ…. НуТно ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ ΠΈΠΌΠ΅Π½Π° Π²Ρ€ΠΎΠ΄Π΅ __imp_CreateWindowExA. НуТно Π²ΠΎΠΎΠ±Ρ‰Π΅ всё ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, с ΠΈΠΌΠ΅Π½Π΅ΠΌ CreateWindowExA, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΡ€ΠΎΠΌΠ΅ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ большС Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ.

НуТно ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ masm32 SDK. Π’ ΠΏΠ°ΠΏΠΊΠ΅ masm32\include ΠΈ masm32\lib содСрТится всё, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ. НуТно ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ user32.lib ΠΈ user32.inc Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΠΈ Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ инклюдов Π² свойствах ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π­Ρ‚ΠΎ дСлаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Π’ самом Π½Π°Ρ‡Π°Π»Π΅ ассСмблСрного исходника, ΠΏΠ΅Ρ€Π΅Π΄ сСкциСй ΠΊΠΎΠ΄Π°, Π΄ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ:

Если всё сдСлано ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ρ‚ΠΎ Π»ΠΈΠ½ΠΊΠ΅Ρ€ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€ΡƒΠ³Π°Ρ‚ΡŒΡΡ Π½Π° отсутствиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Всё скомпилируСтся, Ссли Π²Ρ‹, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ шаги для всСх ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

ΠšΠ°ΡΡ‚ΠΎΠΌΠ½Ρ‹ΠΉ инклюд ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ просто. ВсС ΠΈΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· exports.txt Π½Π°Π΄ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅. Π­Ρ‚ΠΎ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ наш инклюд.

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΠΈΠ³Ρ€Ρ‹ Bedlam, Windows вСрсии.

9. Π—Π°ΠΌΠ΅Π½Π° DOS ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ Π½Π° Π°Π½Π°Π»ΠΎΠ³ΠΈ

Π‘Π°ΠΌΠΎΠ΅ врСмя Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π½Π° C++. НСобходимо Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ DOS Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ прСрывания Π½Π° кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΈ. Π‘ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹ΠΌΠΈ функциями понятно, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅, этот Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Π½Π΅ мСнялся с Ρ‚ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΡ ΠΆΠ΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой встроСнныС DOS Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ, прСрывая собой ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

БущСствуСт Π²Π΅Π»ΠΈΠΊΠΎΠ΅ мноТСство ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ. НапримСр, считываниС/запись Ρ„Π°ΠΉΠ»Π°, Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти, Π²Ρ‹Π²ΠΎΠ΄ Π½Π° экран, Π²Ρ‹Π²ΠΎΠ΄ Π·Π²ΡƒΠΊΠ° ΠΈ Ρ‚.ΠΏ.

Π’Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ прСрывания довольно просто. АссСмблСрный ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΡ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠ· рСгистров, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСрывания, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π±ΡƒΡ„Π΅Ρ€, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ Ρ‚.ΠΏ.

Π—Π°ΠΌΠ΅Π½Π΅ подвСргнутся ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π²Ρ‹Π²ΠΎΠ΄Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π½Π° экран, Π²Ρ‹Π²ΠΎΠ΄Π° Π·Π²ΡƒΠΊΠ°, инициализация ΠΌΡ‹ΡˆΠΈ ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, прСрывания ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ. Π˜Ρ… придётся Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ высокоуровнСвом языкС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ C++. Π₯отя ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ любой язык, способный Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· сторонних Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ: нСобходимая инициализация Π½Π° C++, Π·Π°Ρ‚Π΅ΠΌ запуск main Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· ассСмблСрного Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Ρ€Π³Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, написанныС Π½Π° Π‘++.

Π—Π΄Π΅ΡΡŒ спСцификатор __cdecl ΠΎΠΏΡƒΡ‰Π΅Π½, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это платформозависимая запись, Π° Π² настройках ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ __cdecl. Π›ΠΈΡ‚Π΅Ρ€Π° «C» ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ компилятору ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² C стилС.

Для Π²Ρ‹Π·ΠΎΠ²Π° C++ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· ассСмблСрного листинга Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ компилятору, Ρ‡Ρ‚ΠΎ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² C-стилС, ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ соглашСниС ΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅. БоглашСниС платформозависимо, написано Π² windows стилС. НапримСр, Π΅ΡΡ‚ΡŒ нСкая функция слоТСния:

Π’ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΌ export_to_asm.h:

Π’Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½Π° ассСмблСрС ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ (Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎ лишь для соглашСния __cdecl ΠΈ 32 Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°):

Какого-Ρ‚ΠΎ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ совСта, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, Π·Π²ΡƒΠΊΠ°, опрос ΠΌΡ‹ΡˆΠΈ, ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹ ΠΈ Ρ‚.ΠΏ. Π½Π΅ сущСствуСт.

Π‘ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ Π² DOS всё довольно слоТно. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π½Π½ΠΈΠΉ ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΈΠΉ DOS сущСствСнно ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π² ΠΏΠ»Π°Π½Π΅ Π²Ρ‹Π²ΠΎΠ΄Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. НСобходимо Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚ΠΈΠΏΠ° указатСля Π½Π° экранный Π±ΡƒΡ„Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ линкуСтся Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Ρ‹. ΠšΡΡ‚Π°Ρ‚ΠΈ, Ρ‚Π°ΠΊΠΈΡ… Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько. Пока ΠΎΠ΄ΠΈΠ½ наполняСтся, Π²Ρ‚ΠΎΡ€ΠΎΠΉ отобраТаСтся Π½Π° экранС. Π’Π°ΠΊΠΆΠ΅ Π±ΡƒΡ„Π΅Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π±ΠΈΡ‚Ρ‹ Π½Π° страницы, Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΡ€Π°Ρ‚Π½ΠΎΠΉ стСпСни Π΄Π²ΠΎΠΉΠΊΠΈ Π±Π°ΠΉΡ‚.

Π’ ΠΈΠ³Ρ€Π΅ Bedlam 2, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ экранный Π±ΡƒΡ„Π΅Ρ€, Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ 640*480 Π±Π°ΠΉΡ‚, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π°Π²Π½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ экрана. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π±Π°ΠΉΡ‚ этого Π±ΡƒΡ„Π΅Ρ€Π° β€” это пиксСль с индСксом Ρ†Π²Π΅Ρ‚Π° 256-Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹. ΠŸΠ°Π»ΠΈΡ‚Ρ€Π° прСдставляСт собой ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ массив Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Ρ… элСмСнтов Red, Green, Blue. КаТдоС число Π² ΠΏΠ°Π»ΠΈΡ‚Ρ€Π΅ ΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΎ Π½Π° 4, ΠΊΠ°ΠΊ я понял, для создания Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… простой сдвиг ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹. Π‘Π°ΠΌΠΈ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹ хранятся Π² Ρ„Π°ΠΉΠ»Π°Ρ… с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .pal.

Π’ΠΎ врСмя ΠΈΠ³Ρ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±ΡƒΡ„Π΅Ρ€, большС экранного, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€ΠΈΡΡƒΡŽΡ‚ΡΡ всС спрайты, Π·Π°Ρ‚Π΅ΠΌ этот Π±ΡƒΡ„Π΅Ρ€ копируСтся с ΠΎΠ±Ρ€Π΅Π·ΠΊΠΎΠΉ Π² экранный Π±ΡƒΡ„Π΅Ρ€. Π­Ρ‚ΠΎ сдСлано для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ спрайты Π½Π° Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ… экрана.

ΠœΡ‹ΡˆΡŒ ΠΈ ΠΊΠ»Π°Π²Π° β€” это каТСтся самоС простоС, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ. Π’ процСссС Ρ€Π°Π·Π±ΠΎΡ€Π° asm-исходников Π±Ρ‹Π»ΠΈ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅: ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΌΡ‹ΡˆΠΈ, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π»Π΅Π²ΠΎΠ³ΠΎ/ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠΊΠ°, состояниС ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΌΡ‹ΡˆΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ массив bool-ΠΎΠ², содСрТащий наТатия ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, Π³Π΄Π΅ индСкс массива Ρ€Π°Π²Π΅Π½ ordinary keyboard scancode (Π½Π° Π²ΠΈΠΊΠΈ Π½Π΅Ρ‚ описания, Ссли Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅, ΠΎΠ΄Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ° прСдставляСт ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚ β€” ordinary scancode). ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ просто Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² эти ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ свои значСния ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΈΠ³Ρ€Ρ‹.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ интСрСсности

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ писался Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π°, ΠΊΠΎΠ³Π΄Π° 486ΠΉ процСссор считался ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π±ΠΎΡ€ΠΎΠ»ΠΈΡΡŒ Π·Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚Π°ΠΊΡ‚. Π‘ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ всё ΠΈ вся. Из-Π·Π° быстродСйствия, использовался язык C, хотя C++ Π² Ρ‚ΠΎ врСмя ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ Π»Π΅Ρ‚ 10-15.

Π’ ΠΊΠΎΠ΄Π΅ ΠΈΠ³Ρ€Ρ‹ Π½Π΅ использовалось Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ float ΠΈ double Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π»ΠΈΠ±ΠΎ ΠΈΠ½ΠΎΠ³ΠΎ значСния с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой.

Π’Π°ΠΌ, Π³Π΄Π΅ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ стСпСни Π΄Π²ΠΎΠΉΠΊΠΈ ΠΈ сдвиги. Π’Π°ΠΌ, Π³Π΄Π΅ этого нСдостаточно, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ соптимизированно Π² Π°Π΄ΡΠΊΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сдвигов ΠΈ слоТСний.

ВзятиС синуса β€” довольно затратная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π² Ρ‚ΠΎ врСмя. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ синус бСрётся ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Брадиса Ρ„Π°ΠΉΠ»Π° sintable.bin ΠΏΠΎ индСксу-Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ.

Для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠΈ точности этого Ρ…Π°ΠΊΠ°, ΠΈΠ½ΠΎΠ³Π΄Π° Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π½Π° 8 Π±ΠΈΡ‚ Π²Π»Π΅Π²ΠΎ. А Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ β€” Π²ΠΏΡ€Π°Π²ΠΎ.

ΠšΡΡ‚Π°Ρ‚ΠΈ, ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ сдвигов. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π²Π΅Π·Π΄Π΅. ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ³Ρ€ΠΎΠΊΠ°, сдвинутыС Π½Π° 8 Π±ΠΈΡ‚ Π²ΠΏΡ€Π°Π²ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΏΠ»ΠΈΡ‚ΠΊΠΈ Ρ‚Π°ΠΉΠ»Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится ΠΈΠ³Ρ€ΠΎΠΊ.

НомСр, ΠΈΠ·Π²Π»Π΅Ρ‡Ρ‘Π½Π½Ρ‹ΠΉ ΠΈΠ· missionX.tot Π±ΡƒΡ„Π΅Ρ€Π° ΠΏΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌ ΠΏΠ»ΠΈΡ‚ΠΊΠΈ Ρ‚Π°ΠΉΠ»Π°, Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΡΡ‚ΡŒΡΡ Π½ΠΎΠΌΠ΅Ρ€Ρƒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Ρ‚Π°ΠΉΠ»Π° ΠΏΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌ x, y ΠΈΠ· графичСского Ρ„Π°ΠΉΠ»Π°-ΠΏΠ°ΠΊΠ° missionX.bin.

НСкоторыС Ρ€Π°Π½Π΄ΠΎΠΌΠ½Ρ‹Π΅ значСния Ρ‚ΠΎΠΆΠ΅ Π·Π°Ρ€Π°Π½Π΅Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΈ заносятся Π² массив. НапримСр, ΡˆΡƒΠΌ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΡŽΠ½ΠΈΡ‚Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ поврСТдСния.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ β€” ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ история. НСлСгко ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ, ΠΊΠΎΠ³Π΄Π° Ρƒ тСбя ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π² восСмь ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ ΠΈ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈ Π΄Π²Π° с ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ΠΎΠΉ Π½Π° Π·Π²ΡƒΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ.

ΠšΡΡ‚Π°Ρ‚ΠΈ, Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ созданы ΠΈ для Π²Ρ€Π°Π³ΠΎΠ², снарядов, Π²Π·Ρ€Ρ‹Π²ΠΎΠ², ΠΎΠ±Π»ΠΎΠΌΠΊΠΎΠ², останков, бонусов, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Ρ‘. МаксимальноС количСство ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ случаС константноС.

Всё ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅, Ρ‚.Π΅. ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ ΠΈ постройки Π½Π° Π½Ρ‘ΠΌ β€” Π½Π°Π±ΠΎΡ€ Ρ€ΠΎΠΌΠ±ΠΎΠ²ΠΈΠ΄Π½Ρ‹Ρ… Ρ‚Π°ΠΉΠ»ΠΎΠ². Как я писал, Π½ΠΎΠΌΠ΅Ρ€Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ Ρ‚Π°ΠΉΠ»ΠΎΠ² уровня, ΠΏΡ€ΠΎΡ‰Π΅ говоря ΠΊΠ°Ρ€Ρ‚Π°, находится Π² Π±ΡƒΡ„Π΅Ρ€Π΅ missionX.tot. Π₯ΠΎΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ огня Π½Π° ΠΊΠ°Ρ€Ρ‚Ρƒ, просто Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ огня Π² этот Π±ΡƒΡ„Π΅Ρ€. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, это происходит Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. Π₯ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚ΡŒ постройку, занСситС ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½Π½ΠΎΠΉ постройки Ρ‚ΡƒΠ΄Π° ΠΆΠ΅. Π˜Π³Ρ€Π° Ρ‚Π°ΠΊ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

ПослСсловиС

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π²Ρ‚ΠΎΡ€ΠΎΠΉ части, ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ ΠΌΠ½ΠΎΠΉ ΠΏΠΎΠ΄ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ, Π² этом случаС, 1080p.

Git Bedlam 1 (довольно ΠΌΠ°Π»ΠΎ Π΅ΠΉ занимался, поэтому просто сырыС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ сорцы). МоТно ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ сдСлан ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Git Bedlam Tools (инструмСнт для просмотра BIN Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΡ RAW, MRW Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ³Ρ€Ρ‹).

Бсылка Π½Π° рСвСрс Ρ‚ΡƒΡ‚ (Ρ„Π°ΠΉΠ»Ρ‹ IDA).

К соТалСнию, эти ΠΈΠ³Ρ€Ρ‹ сСйчас ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ ΠΊΡƒΠΏΠΈΡ‚ΡŒ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΠΈΠ³Π΄Π΅, поэтому ссылки для ознакомлСния с Windows вСрсиями Π²Ρ‹ Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ здСсь: 2 Ρ‡Π°ΡΡ‚ΡŒ (для запуска понадобится ΠΏΠ°ΠΊΠ΅Ρ‚ «Microsoft Visual C++ 2015 Redistributable x86»).

К соТалСнию, Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Linux вСрсий Π½Π΅Ρ‚. Π’Ρ‚ΠΎΡ€ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ я собрал ΠΏΠΎΠ΄ Linux, Π½ΠΎ дальшС Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ мСню ΠΈΠ³Ρ€Π° ΠΊΡ€Π°ΡˆΠΈΡ‚ΡΡ. Π£ мСня Π½Π΅Ρ‚ инфраструктуры, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, навСрняка Ρ‚Π°ΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ слоТного Π½Π΅Ρ‚. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с путями Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ.

PS. Π₯ΠΎΡ‡Ρƒ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ стСк Π½Π° C++. Π”ΠΆΡƒΠ½ Π½ΡƒΠΆΠ΅Π½ ΠΊΠΎΠΌΡƒ? ΠŸΡ€ΠΎΡΡŒΠ±Π° Π² Π»ΠΈΡ‡ΠΊΡƒ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *