Пишем тетрис на ассемблере под DOS (x86)

แชร์
ฝัง
  • เผยแพร่เมื่อ 14 พ.ค. 2021
  • Сегодня балуемся ассемблером под DOS.
    Гугл-документ, где я при необходимости буду размещать заметки и ссылки на полезные странички: docs.google.com/document/d/1_...
    Онлайн-доска, где я буду рисовать: scribbletogether.com/whiteboa...
    Поддержать канал: www.donationalerts.com/r/drun...
    Завел табличку по реквестам: docs.google.com/spreadsheets/...
    E-mail для связи: drunkflyteam@gmail.com
    Новости и паблик в Телеграме: t.me/drunkflyteam
    Вступайте в нашу группу ВКонтакте: drunkflyteam
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 222

  • @Sedoy048
    @Sedoy048 3 หลายเดือนก่อน +178

    Когда засыпал под ютуб, потом открываешь, а тут типы тетрис пишут

    • @user-sf6gy4kk9z
      @user-sf6gy4kk9z 2 หลายเดือนก่อน

      🤪🤣💯👍👍👍

    • @blade8620
      @blade8620 2 หลายเดือนก่อน +7

      ХАХАХАХА ТАК ЖЕ БЫЛО

    • @annonymous8220
      @annonymous8220 หลายเดือนก่อน +5

      такая же тема, просыпаюсь и уже изучаю ассемблер))) не могу сказать, что мне не понравилось :D

    • @Marty45456
      @Marty45456 หลายเดือนก่อน +4

      с языка снял, на этом же видосе!

    • @deChamfort
      @deChamfort หลายเดือนก่อน

      классика!

  • @alexeymatveev9031
    @alexeymatveev9031 ปีที่แล้ว +458

    Пришёл по рекомендации психотерапевта. Спасибо, сильно помогло.

    • @sobolevmath
      @sobolevmath 6 หลายเดือนก่อน +1

      Ахахахнвзх

    • @starpiv
      @starpiv 6 หลายเดือนก่อน +11

      А я пришел по рекомендации начальника, после того как я ему сказал, что у меня сложная работа

    • @Jun_e
      @Jun_e 6 หลายเดือนก่อน

      Пххахахахахп😂

    • @dmitrymedvedd
      @dmitrymedvedd 6 หลายเดือนก่อน +2

      Пхахахаха мухахаха

    • @alexeymatveev9031
      @alexeymatveev9031 6 หลายเดือนก่อน

      @@dmitrii491 Это где собаку кефиром напоили, а бомж снимал?

  • @bonafilmo
    @bonafilmo 11 หลายเดือนก่อน +71

    Когда-то в конце 90-х будучи студентом я самостоятельно изучал ассемблер.
    Я в основном развлекался программами работающими в разных текстовых режимах. Выводил текст с помощью прерываний DOS, прерываний BIOS и путём прямого обращения к видеопамяти. Писал свою реализацию работы с окнами в текстовом режиме.
    С того времени мне запомнилась одна интересная программа которую я скопировал в своём ВУЗе с местного IBM PC XT, а потом пытался дизассемблировать.
    Эта DOS программа была читалка теста в текстовом режиме 80x25 символов.
    Но особенность была в том, что при прокрутке текст скролился максимально плавно, а не перескакивая смещаясь на высоту целой строки.
    (Кстати, недавно я видел точно такой же эффект прокрутки в англоязычном видео про PDP11, где на аутентичном старом терминале, текст скролился так же плавно.)
    Я тогда пытался разобраться как авторы добились такого эффекта.
    Я только смог с помощью трассировки определить, что для скроллинга используются два разных вызова прерываний.
    Одно прерывание вызывается для скроллинга сразу на целую строку.
    А другое прерываение вызывается несколько раз в промежутке между смещением на целую строку и при каждом вызове сдвигает весь текстовой экран на один пиксель.
    При этом новая появляющаяся строка начинает отображаться не полностью, а символы постепенно попиксельно начинают прорисовываться. Т.е. на половине смещения видно половину символа. Аналогично и со строкой, которая уходит с экрана. Она пропадает постепенно по пиксельным строкам.
    Напомню, что речь идёт о текстовом режиме, а не о графическом. Выглядело это просто как какая-то магия. Нигде в книгах (которых я тогда читал много) я не встречал описания подобного функционала. По какой-то причине я так и не смог тогда разобраться и повторить такой функционал.
    К сожалению, сама эта программа у меня не сохранилась и я даже не знаю её названия. Вполне возможно, что это была просто чья-то самописная программка-читалка.
    Пользоваться ей было очень удобно, т.к. при однократном нажатии на соответствующую кнопку программа автоматически начинала медленно скроллить текст и можно было комфортно читать текст не нажимая на клавиши и не теряя строки взглядом.
    С того времени для меня этот эффект остался неразгаданной загадкой, который я не смог повторить.
    Как вообще возможно сдвинуть текстовой экран в текстовом режиме на пиксель вверх или вниз.
    Я предпологал, что таинственное прерывание как-то управляет отклонением луча на ЭЛТ монитора, что и приводит к отклонению всего текстового экрана на пиксельную строку вверх или вниз, а части символов сверху и снизу экрана просто не влезают в рамки видимой области экрана.
    А сейчас кроме главного вопроса о магии этого прерывания меня мучает ещё вопрос, смогла бы работать такая программа на жидкокристаллическом мониторе, и вообще, работало бы это всё в DOSBOX?

    • @DrunkFly
      @DrunkFly  11 หลายเดือนก่อน +29

      Для этого, скорее всего, использовались регистры видеоадаптера, позволяющие смещать экран. С точки зрения видеокарты, особой разницы между текстовым и графическим режимом нет, просто в текстовом режиме пиксели берутся не напрямую из видеопамяти, а через ПЗУ со шрифтом. Но все остальные схемы, собственно обеспечивающие вывод картинки на монитор, там все те же самые. Поэтому все настройки этих схем применимы и в текстовом режиме. DOSBOX вроде достаточно точно эмулирует видеоадаптер, поэтому, думаю, там тоже бы работало.
      Мне самому не приходилось программировать скроллинг, но задача звучит интересно. Может быть когда-нибудь попробую из любопытства запрограммить скролл в текстовом режиме.

    • @bonafilmo
      @bonafilmo 11 หลายเดือนก่อน +7

      @@DrunkFly Спасибо за ответ.
      Я давно мучился этим вопросом, не зная с кем можно его обсудить.
      Сейчас мало кто пишет на ассемблере, а те кто это делает обычно не балуются текстовыми режимами.
      Сейчас я уже очень давно ничего не писал на ассемблере, и многое подзабыл, но иногда смотрю тематические видосики.
      Я вспомнил, почему я не стал использовать такой скроллинг в своих программах.
      Кажется я тогда всё же отловил это прерывание и смог повторить смещение.
      Но я тогда думал о том, чтобы попробовать сделать игру в текстовом режиме со скроллингом.
      Для такой игры этот режим совершенно не подходил, т.к. он сдвигал весь экран полностью.
      И условный игровой персонаж будет так же плавно сдвигаться, а потом другой функцией резко перескакивать на целую строку.
      Также фишкой этой читалки было то, что текст занимал всё пространство экрана без окантовки символами псевдографики как окна Norton Commander.
      Если добавить контур или какие-то служебные строки то они так же будут "плавать" вместе со всем экраном.
      Было бы прикольно скроллить не весь экран, а только отдельное текстовое окно с заданными размерами, но у меня такого не получалось. И я не уверен, что это вообще возможно.
      И хотя у меня и получилось вызывать эту функцию смещения экрана через прерывание BIOS, использовав данные по аналогии с оттрасированной читалкой, но интрига оставалась в том, что я тогда нигде не смог найти описания этой функции, хотя у меня были даже довольно подробные книги по архитектуре IBM PC, по которым я тогда и изучал ассемблер самостоятельно.
      Кстати, что забавно, первое время, не имея компиляторов ассемблера я писал ассемблеровские програмки внутри программ на Turbo Pascal.
      И кстати, при работе в текстовом режиме, самый быстрый способ вывода это занесение данных напямую в видеопамять. Поэтому, я всегда воспринимал текстовой режим, как некоторый целостный способ отображения, который транслируется на экран на низком уровне, недоступном для программы.
      Более того, вывод символов напрямую в видеопамять, это кажется вообще единственный способ с помощью которого в Turbo Pascal можно вывести символ в правый нижний угол текстового окна без того, чтобы это окно проскролилось на строку вверх из-за перевода каретки.
      И кстати, о видео со скроллингом текста на древнем терминале от PDP11, про которое я писал.
      Насколько я могу судить, тот терминал заточен только под текстовой режим.
      В общем, я не уверен, что от плавного скроллинга можно получит много пользы. Кроме создания простой читалки или досовского скринсейвера.
      Хотя, если есть возможность скролить не только вверх-вниз, но и одновременно с этим, влево-вправо, то можно было бы попробовать сделать демку в текстовом режиме, в которой ASCII-арт плавно бы плавал в произвольном направлении.

    • @tuttifrutti6603
      @tuttifrutti6603 7 หลายเดือนก่อน +4

      Я плавный скроллинг сделал на Commodore 64. На ассемблере. На егошном видеоконтроллере все это делается через регистрацию видеоадаптера. В то время мне было интересно, как работают игрушки и всякое разное. Все дизассемблировал, смотрел, изучал. Делал одновременно на пол-экрана текстовый режим. На пол-экрана - графический. Делается это через прерывание irq. В обработчике через регистр видеоадаптера видно, с какой строчкой развёртки в данный момент работает адаптер. И если он меньше порога, включаем текстовый режим. Больше - графический. Вот так одновременно на одном экране светились два режима...

    • @bonafilmo
      @bonafilmo 7 หลายเดือนก่อน

      @@tuttifrutti6603 Кстати, мне недавно подсказали одно англоязычное видео где автор писал демо программку на Си под DOS в текстовом режиме.
      Там в качестве эффекта использовался плавный скроллинг.
      По упоминанию в этом видео я нашёл сайт с документацией режимов VGA на английском языке:
      Hardware Level VGA and SVGA Video Programming Information Page CRT Controller Registers
      А потом ещё погуглив нашёл даже русскоязычную книгу в онлайн формате:
      Программирование видеоадаптеров CGA, EGA и VGA © Александр Фролов, Григорий Фролов Том 3, М.: Диалог-МИФИ, 1992, 287 стр.
      Там есть описание режимов графических процессоров и как их использовать. Там вроде не только вертикальное смещение возможно, но и горизонтальное.
      В общем, очень интересно.
      Цитата от туда:
      -----
      Предварительная установка горизонтальной развертки
      (Preset Row Scan Register - PRSR) (индекс 8)
      Регистр позволяет производить плавную вертикальную прокрутку содержимого экрана дисплея в текстовых режимах (свертку). В графических режимах регистр должен содержать нулевое значение.
      D4-D0 Биты предварительной установки строчной развертки. Эти биты задают для самой верхней строки текста на экране номер линии в матрице символов, начиная с которой начинают отображаться символы (см. рисунок 8.1). Как видно из рисунка самая верхняя строка текста отображается не полностью. Плавную прокрутку экрана можно производить увеличивая или уменьшая
      значение этих битов.
      D6-D5 Биты управления побайтовым панорамированием. Используются только VGA. Они являются двумя дополнительными битами регистра горизонтального панорамирования контроллера атрибутов и позволяют сдвигать экран более, чем на 8 пикселов.
      D7 Не используется.
      -----

    • @bonafilmo
      @bonafilmo 7 หลายเดือนก่อน

      @user-nd5ux2vk1b Если вопрос ко мне, то я начинал изучать Ассемблер, по книге П. Нортон Р. Уилтон «IBM PC и PS/2 руководство по программированию». Долгое время, это была моя единственная книга. Эту книгу я просто штудировал. Но она была не о языке ассемблер, а об архитектуре компьютера с примерами на ассемблере. Поэтому я долгое время писал ассемблерный код внутри паскалевской программы.
      Вообще из этой книги я почерпнул очень много информации, о прерываниях, прямом доступе к видеопамяти, и даже о двоично-десятичной форме представления чисел. (это отдельный режим в котором, грубо говоря, в один байт влезает не 256 возможных значений, а 100 и арифметика с такими числами поддерживается на аппаратном уровне процессора). Хотя на практике, я никогда не работал с двоично-десятичными числами.
      Потом ещё П. Нортон, Д. Соухэ «Язык ассемблера для IBM PC», это очень классная книга, но кажется, до конца я её не дочитал. Там для написания программ нужен был компилятор, которого у меня не было. Хотя первые программы описанные в этой книге, писались вообще напрямую в кодах. И это было офигенно круто.
      Написать 8 байтный код в шестнадцатеричном редакторе, сохранить его в формате com файла и выполнить его как программу. Эта программа выводила в консоль 1 символ (в примере - *).
      Когда я уже начал изучать Ассемблер в ВУЗе d 1999 году я читал и активно пользовался книгой Зубков С.В. «Assembler Язык неограниченных возможностей».
      Это тоже крутая книга, в ней я узнал о том как можно программировать на ассемблере в Windows и в Linux. Это было особенно интересно, т.к. приблизительно в это время я начал разбираться с Linux и с FreeBSD. По сравнению DOS мне Linux нравился намного сильнее, но с программированием там мне было совершенно непонятно что делать. Т.к. прямой доступ к памяти и прерывания BIOS в многозадачной системе использовать было уже невозможно. Поэтому было интересно почитать, как на ассемблере можно писать программы под более развитые операционные системы чем DOS.
      Были ещё какие-то учебники типа «Макроассемблер MASM» и книги по архитектуре типа Михаил Гук «Процессоры intel от 8086 до Pentium II».
      Ещё я брал у одноклассника самиздатную книгу по ассемблеру для ZX-Spectrum когда мы проходили практику по программированию 8-битных процессоров intel 8085.
      Прикол в том, что процессор Z80 фирмы Zilog использовавшийся в ZX-Spectrum и много где ещё, был развитием процессора intel 8080 с расширенным набором команд. А позже intel сама выпустила следующее поколение своего процессора под названием 8085. Таким образом, Z80 и 8085 - были своего рода сводными братьями. Узнав об этом я взял книжку по спектрумовскому ассемблеру и прекрасно решал задачи на лабах быстрее всех, а потом писал собственные программки в эмуляторе 8085 процессора. Было очень занятно.

  • @user-mj1qw8ef2i
    @user-mj1qw8ef2i 6 หลายเดือนก่อน +24

    Иногда рекомендации ютуба радуют прям

  • @dimonidze
    @dimonidze 6 หลายเดือนก่อน +42

    Мужик, почему я не нашёл тебя раньше?... Сам факт существования такого канала мотивирует разобраться нормально с ассемблером даже если не для проектов под современные системы, то для развития мышления. Включил и мозг начал приятно болеть вспоминая то что последний раз слышал в шараге 16ом году...

  • @geoross
    @geoross 7 หลายเดือนก่อน +45

    Кмк для тетриса фигуры удобнее ( и компактнее) всего хранить как смещения, например: 1-лево, 2-вниз, 3-вправо, 4-вверх
    например, квадрат - 3,2,1,3 (лишняя 3 в конце - чтобы выровнять по длине данных каждую фигуру), шляпа - 3,4,2,3 и т.д
    Это для вращения от крайнего кубика, можно отрисовать из центр, описав фигуры на 2 числа длиннее, тогда вращаться будет от центра.
    Что удобно в таком способе хранения, это простота вращение против и по часовой - как +1 к числам или -1, 0>3,5>1 (ну или от 0 до 3, не суть)
    Проверять коллизию при повороте и падении - тупо обходя новые координаты аналогичным смещением.
    На zx такие финты позволяли впихнуть тетрис в 100 байт.

    • @nightcore_senpai
      @nightcore_senpai 6 หลายเดือนก่อน +1

      Только подумал об этом и уже хотел написать, но ты меня опередил, и да ты прав, я сам в недоумении, почему это так не реализовали 😮

    • @VeloVetal
      @VeloVetal 5 หลายเดือนก่อน +8

      скиньте ссылку на тетрис в 100 байт

    • @venapresent9304
      @venapresent9304 3 หลายเดือนก่อน

      ⁠прибыл

  • @fatalyst
    @fatalyst 2 ปีที่แล้ว +35

    Запись стрима ещё только начал смотреть, но уже возник вопрос -- неужели за весь стрим не запустили встроенный в DOS Navigator тетрис? :D

  • @alonefringe3345
    @alonefringe3345 หลายเดือนก่อน +1

    Уснул под игру, проснулся под программирование. Подписываюсь

  • @user-ku2dg4ml2i
    @user-ku2dg4ml2i 9 หลายเดือนก่อน +2

    Спасибо большое за трансляцию!

  • @tackesi
    @tackesi 5 หลายเดือนก่อน +5

    Вижу название и мой мозг вопит - " нет, нет, нет! Неет! Мы точно не будем смотреть это. Нет, даже немножко! Нет, к тому же это 3 часа!!! Зачем я посмотрел на время, если решил, что не буду смотреть? "
    И вот я уже тут и пишу комментарий ...

  • @Alek_sej
    @Alek_sej 6 หลายเดือนก่อน +12

    В детстве писал не на ассемблере а прямо в кодах. Но не на 8086 и не на з80 а на дековской архитектуре. Комп БК0010.

  • @DefleMask
    @DefleMask 6 หลายเดือนก่อน +3

    А мисье знает толк в извращениях

  • @MrMasterPMS
    @MrMasterPMS ปีที่แล้ว +6

    это самое лучшее объяснение регистров.

  • @zx_creature6823
    @zx_creature6823 ปีที่แล้ว +25

    А мне вот больше был интересен алгоритм. Хотя я тоже мыслю готовыми спрайтами изображений, но и такой подход очень даже ничего. Всегда полезно взглянуть с другой стороны. Ко всему, перерасчет положения фигур позволяет сэкономить немного места в программе. Что может быть весьма важным в условиях DOS (да, ресурсов у DOS больше чем у ZX-Spectrum, но и они не бесконечны, мало ли вдруг чего).

  • @Didar.Kussain
    @Didar.Kussain ปีที่แล้ว +17

    3:41:51 вес тетриса 950 байт. Меньше килобайта. Если кому интересно.

    • @Dan-ig2rl
      @Dan-ig2rl ปีที่แล้ว +6

      На самом деле намного меньше. Можно было не тащить с собой в COM файл лишние инициализированные данные, например тот же field, а юзать field db 20*10 dup (?) и переместить в конец. Да, пришлось бы руками заполнять при старте для верности, зато файл бы похудел сразу на 200 байт.

    • @a_man_from_nn
      @a_man_from_nn 6 หลายเดือนก่อน

      @@Dan-ig2rl и обнуление регистров нужно делать не через "mov ,0", а через "xor ,". И память экономится, и такты.

  • @Shishka228
    @Shishka228 2 หลายเดือนก่อน +2

    стрим который можно смотреть с родителями девушки

  • @recontemplator
    @recontemplator 5 หลายเดือนก่อน +6

    Очень круто! Спасибо. Будто, на 25 лет назад перенесся. В конце, правда, вместо поворота получилось транспонирование. Но это понятно, ведь ингредиенты для шаурмы сами себя не купят :-) 3:09:23

  • @johngalt8171
    @johngalt8171 6 หลายเดือนก่อน +3

    Я не знаю что тут происходит, но чувак просто цифровой Бог!

  • @By-nid
    @By-nid 3 หลายเดือนก่อน +2

    ХАААХАХАХ Я ПОД ЭТО ВИДЕО ЗАСНУЛ И Я КОГДА СПАЛ 3 ЧАСА ПОТРАТИЛ

  • @ProninART89
    @ProninART89 6 หลายเดือนก่อน +1

    Это очень круто 🔥🔥🔥

  • @andreypupkin8261
    @andreypupkin8261 หลายเดือนก่อน +1

    И только через 3 с половиной часа поняли, что фигуры надо хранить как точки и их количество.

  • @classictetrisrussia
    @classictetrisrussia 6 หลายเดือนก่อน +1

    Это офигенно!

  • @OPKECTPAHT
    @OPKECTPAHT 6 หลายเดือนก่อน +6

    3:24:36
    - Вайф это что, жена?
    - Нет. Это ширина.
    Чё-то я ржуууу )))

  • @illi1314
    @illi1314 4 หลายเดือนก่อน

    Вспомнил себя в молодости. Спасибо.

  • @dimalink4486
    @dimalink4486 5 หลายเดือนก่อน +2

    На ассебмлере..ты мега мозг...вернее ты мега муха...У мухи мегамозг! На ассемблере! Сила!

  • @daimat3437
    @daimat3437 5 หลายเดือนก่อน +1

    всегда думал, что больше 30 строк на ассемблере невозможно отладить ) а тут магия какая-то )))

  • @alexandershubin488
    @alexandershubin488 3 ปีที่แล้ว +9

    За стрим огромное спасибо! У меня вопрос. Как перегоняешь инсталяции на виртуалку? Через floppy образы *.img? Каким совтом это делаешь? Или есть другой способ?

    • @DrunkFly
      @DrunkFly  3 ปีที่แล้ว +1

      С компа на виртуалку дистрибутивы перегнал через iso (использовал триальную версию PowerISO, пробовал еще Free ISO Creator, но он исковеркал имена файлов). С виртуалки на комп перегонял через образ дискеты, да. Извлекал содержимое с помощью триальной версии WinImage :) К следующему разу хочу настроить сеть и Shared Folders, у Virtual Box на сайте есть мануал.

    • @alexandershubin488
      @alexandershubin488 3 ปีที่แล้ว +1

      @@DrunkFly Спасибо большое. Тоже поставлю триальную версию WinImage. Попробую.

  • @xgl3250
    @xgl3250 3 วันที่ผ่านมา

    Блин вот ты красавчик! это же надо в асме накодить тетрис под дос

  • @youfilin
    @youfilin 6 หลายเดือนก่อน +2

    Увидел в начале командер. Вспомнил, как это было важно иметь много логических дисков. Признак богатства и большого количества места!

  • @sad_god
    @sad_god 6 หลายเดือนก่อน +10

    что было бы если бы хованский занимался нормальной деятельностью, а не бухал) я кстати не знаком с ассемблером совсем, но что-то понял из видео, написать конечно сам с нуля наверно не смогу, но уже чуть чуть начинаю понимать что вообще эти символы означают, благодаря вашему видео, спасибо.

    • @artemmm095
      @artemmm095 6 หลายเดือนก่อน +5

      Если б Хованский не бухал, он бы точно не стал писать на ассемблере

    • @reaperburnout5694
      @reaperburnout5694 4 หลายเดือนก่อน

      @@artemmm095он писал бы на машинном коде:)

    • @sad_god
      @sad_god 4 หลายเดือนก่อน

      @@artemmm095 в какой то вселенной бы занимался

  • @prizrakpro9933
    @prizrakpro9933 5 หลายเดือนก่อน +1

    А что за музыка в начале стрима? Откуда она?

  • @Fox_Novak_
    @Fox_Novak_ 2 หลายเดือนก่อน +1

    Скажите пожалуйста, как называется музыка из начала стрима?

  • @alexeylesyuta9858
    @alexeylesyuta9858 6 หลายเดือนก่อน +2

    Хотел посмотреть комедию перед сном, а случайно натнулся на это.. залип на два часа и только усилием воли заставлю себя отложить допросмотр на завтра, т.к. рано надо вставать.
    Получится тетрис или нет не говорите.
    Интрига..

  • @lokomotivmoskva
    @lokomotivmoskva 7 หลายเดือนก่อน +5

    Зачем я это смотрю, я же слишком тупой для всего этого

    • @artemmm095
      @artemmm095 6 หลายเดือนก่อน +1

      Для чего? Для ассемблера? Так современным программистам и не надо постигать этот мозгодрочь. Нормальные языки программирования в разы проще

  • @nmg_prm
    @nmg_prm ปีที่แล้ว +3

    Крутяк!

  • @mikhaelrus
    @mikhaelrus 4 หลายเดือนก่อน

    супер! спасибо

  • @user-ne4bd3ry1n
    @user-ne4bd3ry1n 6 หลายเดือนก่อน +2

    ДОброго дня. Скажите, Вы МС ДОС на чем запускали? в виртуалке или на древнем компе?

    • @DrunkFly
      @DrunkFly  6 หลายเดือนก่อน +1

      На этом стриме, если я правильно помню, я запускал в виртуалке - так проще перекидывать файлы.
      У меня есть подходящее железо, надеюсь, когда-нибудь постримлю с него :)

  • @zhigalev_igor
    @zhigalev_igor 2 หลายเดือนก่อน

    ютуб моросит бесит уже, что за рекомендации я никогда не интересовался этим

  • @side2k
    @side2k 4 หลายเดือนก่อน

    Вот это ничего себе мне ютуб выдал.
    Автор - ты красаучег. Я с 90года так или иначе в программировании, но вот так вот я не умею.

  • @user-jh9zk8ts5y
    @user-jh9zk8ts5y 6 หลายเดือนก่อน +4

    впервые увидел как а асме пишут

  • @YEGKAMAL
    @YEGKAMAL 3 หลายเดือนก่อน +1

    Может сделайш програму под kolibrios

  • @Gartenzwerg
    @Gartenzwerg 6 หลายเดือนก่อน +1

    Блин, пацан из фильма Bad Santa!

  • @AlexanderBukh
    @AlexanderBukh 6 หลายเดือนก่อน +3

    ВОПРОС уважаемому олдовому сообществу: может кто знает такой тетрис досовской эпохи, где фигуры проваливались насквозь, если внизу есть подходящая дырка. текстовый режим, черный фон, если я всё правильно помню, возможно русский программист, но это неточно.
    уже несколько лет ищу.

  • @fatalyst
    @fatalyst 2 ปีที่แล้ว +12

    А не лучше ли было завести на каждую фигуру все четыре положения поворота, а не вращать? При этом фигуры хранятся в памяти сразу отцентрированными внутри поля 4 на 4.
    Таким образом можно определить при повороте наилучшее положение в пространстве для каждой фигуры. И это было бы быстрее и проще сделать, мне кажется.
    Плюс, в этом случае можно легко кидать фигуры в одном из повёрнутых положений.
    ЗЫ А, в конце Crazy Metal как раз сказал про хардкодить поворот...

    • @DrunkFly
      @DrunkFly  2 ปีที่แล้ว +15

      Да может и лучше. Хорошая мысля приходит опосля.

    • @OdinKG
      @OdinKG 8 หลายเดือนก่อน +2

      Если фигуры переворачиваются самостоятельно, то это позволяет легко модифицировать Тетрис, например, добавить фигуры из 5 блоков или фигуры с произвольным количеством блоков от 1 до 5. Да и сама фигура должна тоже генерироваться, а не описываться заранее. Вот так будет лучше всего.

    • @OdinKG
      @OdinKG 6 หลายเดือนก่อน

      @@c3po839 Так Тетрис - это же русская программа. Ответим НАТО новыми Тетрисам 🙂

    • @pi4990
      @pi4990 6 หลายเดือนก่อน

      ​@@c3po839никто не вас на нападал, всего лишь фантазия разыгралась

    • @DicCurHic
      @DicCurHic 2 หลายเดือนก่อน

      ​@@OdinKG ps. фигуры не могут двигать собой самостоятельно (это вам не схемотехника) - вам приедается их пинать научившись жонглировать каждой колизией (ТЗ в любом случае надо делать)
      моя думать однако проще сделать матрицы генерированные заранее (сначала на бумаге создаём логику работы игры (правила):
      игровое поле Y*X
      самая длинная фигура занимает 5 ячеек подряд
      фигура не может занимать больше 2 либо 3 рядов
      правила колизий
      интерфейс (игра стрелками или нумпадом)
      отсюда (8-верх, 4-лево, 6-право, 2-низ, остальные переходные колизии(промежуточные положения))
      789
      456
      123
      5 (двойная) = 456 и 852
      выделяем в памяти место согласно правил игры для хранения текущей фигуры:
      4## 456 6##
      100 010 001
      100 010 001
      100 010 001
      100 010 001
      100 010 001
      8## 852 2##
      11111 00000 00000
      00000 11111 00000
      00000 00000 11111
      выделяем ячейку памяти названия фигуры SSSSSSSSSS
      выделяем ячейки памяти текущего положения отрисовки в игровом поле Y5X (минус по ячейке по вокруг, при нажатии в крайнем положении происходит смена колизии на угловое положение, в правилах оговорить что перемещение в центре сначала переводит колизию в угловое положение, а затем уже производит смещение либо наоборот)
      выделяем ячейку памяти текущего положения отрисовки ZZZ
      смотрим литературу на время операций чтение/запись видеопамяти и чтение/запись озу(+вывод в видео память):
      используем в виде буфера прямой доступ в видео память либо матрицу озу для хранения занятых ячеек
      двигаем фигуру пока она не будет создавать колизии соударения снизу(разрешим провернуть влево, в право внизу на 2 такта) и обработаем примыкание фигуры (запишем ее положение в буфер игрового поля) проверяем влезет ли новая фигура
      реализуем игру по частям используя прыжки как переход между функций

  • @user-ti3bv9gg6s
    @user-ti3bv9gg6s 4 หลายเดือนก่อน +1

    Пьяная Муха -я столько невыпью🙃

  • @user-px5nk6wq2e
    @user-px5nk6wq2e 5 หลายเดือนก่อน

    я видел под дос игры которые без ос запускаются с дискеты. видимо как раз на ассемблере. ты так делал?

    • @DrunkFly
      @DrunkFly  5 หลายเดือนก่อน +2

      Из загрузочного сектора можно сделать, да. Но там либо ограничение 512 байт, либо писать свой код чтения дополнительных секторов с дискеты.

  • @Mikras64
    @Mikras64 หลายเดือนก่อน

    Я в 86 году тетриса написал в машинных кодах на Электронике С5-2200. На службе было нечего делать -))

  • @realmagdel
    @realmagdel 6 หลายเดือนก่อน

    Мдя, аналог notepad виндового писал на асм когда-то, все таки в flat модели асм уже не так больно делать

  • @alexanderurezchenko6446
    @alexanderurezchenko6446 6 หลายเดือนก่อน

    Кайф)

  • @zxcucbka
    @zxcucbka 19 วันที่ผ่านมา

    когда хочу посмтореть ютуб ПОСТОЯННО это видео автопроигрованием ставится, я УСТАЛ МНЕ НЕ ИНТЕРЕСНО ПРОПАДИ ТЫ!"!

  • @sebastianpereiro27
    @sebastianpereiro27 3 หลายเดือนก่อน

    никогда бы не подумал что чувак который даже нормально не может выстругать деревянный огурец не порезавшись для Санты способен написать игру на Ассемблере

  • @user-uo9nf3bq6c
    @user-uo9nf3bq6c 8 หลายเดือนก่อน

    Кто знает, как найти канал Валерия Лиса, о котором в самом начале говорилось?

  • @vadimkuznetsov4007
    @vadimkuznetsov4007 3 หลายเดือนก่อน +2

    Кто ты воин ? Где тебя учили ?

  • @h4rd1son
    @h4rd1son 6 หลายเดือนก่อน +2

    ну ты жесткий

  • @user-nw8ik2wx7x
    @user-nw8ik2wx7x 3 ปีที่แล้ว +5

    таакс, посмотрим, т.к. я сейчас пишу тетрис на LUA ))

    • @user-ne4bd3ry1n
      @user-ne4bd3ry1n 6 หลายเดือนก่อน

      написали? хотелось бы взглянуть на исходники ))

  • @victormog
    @victormog 6 หลายเดือนก่อน +2

    На ассемблере, на сколько я знаю, пишут не под ОС (DOS), а под конкретную архитектуру процессора...

    • @dimonidze
      @dimonidze 6 หลายเดือนก่อน +2

      архитектура x86, написано же😄
      а вообще попробуйте программу для x86 мака запустить под виндой и она скажет что не понимает как такое запускать, хотя программы скомпилированные из текстов на любом языке превращаются в одинаково понятный (процессору и непонятный человеку) байт-код

  • @Savage064
    @Savage064 2 ปีที่แล้ว

    1:12:45 Это на всю жизнь :) Тоже сразу вспомнил что альт+F5 - Dos Screen.

  • @eugenekarnygin
    @eugenekarnygin 3 ปีที่แล้ว +4

    Что за вайдф (width)? :)

    • @ruman3726
      @ruman3726 ปีที่แล้ว +1

      Ширина

  • @SerjCrimea
    @SerjCrimea ปีที่แล้ว +4

    Как то у наших программистов каша получается!
    Формат AT&T использовал синтаксис 0х10 а Intel использовал 10h , что более понятно.
    Я видел тексты на ассемблере, многих программистов. Нигде AT&T не использовался, везде Intel синтаксис.

    • @radio-86rk
      @radio-86rk 7 หลายเดือนก่อน

      не IBM, а Intel. вот где каша

    • @RedOverlord2017
      @RedOverlord2017 4 หลายเดือนก่อน

      AT&T использовался только в UNIX (и, соответственно, в Linux). Там крайне редко возникает потребность в ассемблере, для системного программирования обычно пишут на Си. Синтаксис Intel используется в FASM и NASM.

  • @alexkapobel
    @alexkapobel 2 ปีที่แล้ว +1

    пытаюсь повторить, но так так и не понял, что делает операция or al,al, мне кажется именно этот костыль портит мне картинку, еще заметил если сдвинуть верхний угол на нечетную позицию все аттрибуты портятся и выходит цветная рамка

    • @DrunkFly
      @DrunkFly  2 ปีที่แล้ว +1

      Скорее всего, речь об операции, после которой идет условный переход. Инструкция or al, al не меняет регистр al, но проставляет флаги. Это не костыль, а классический способ проверить регистр на равенство/не равенство нулю (проставить ZF) без изменения значения самого регистра.

    • @alexkapobel
      @alexkapobel 2 ปีที่แล้ว +1

      @@DrunkFly спасибо, с этим разобрался, стакан рисуется, но только если сдвиг от нуля четный

    • @alexkapobel
      @alexkapobel 2 ปีที่แล้ว +1

      @@DrunkFly скопировал исходник с гитхаба, ничего не меняю, на выходе имею стакан с цветным мусором внутри. Что яделаю не так? (Gui Turbo Assembler x64 v3.0.1, дефолтные значения линкера, на выходе exe-шник)

    • @DrunkFly
      @DrunkFly  2 ปีที่แล้ว

      @@alexkapobel Я проверю и отпишусь. Скорее всего завтра.

    • @DrunkFly
      @DrunkFly  2 ปีที่แล้ว +1

      @@alexkapobel Я посмотрел. По умолчанию эта среда генерирует EXE-файл. Ассемблерный исходник написан под COM-файл. Поэтому он не работает, когда из него делают EXE (не настроен сегмент стека, как минимум). Я попробовал поменять в настройках аргументы линкера на /x /t, чтобы генерировался COM-файл. Это сработало, но похоже среда разработки не умеет работать с COM-файлами. Однако, получившийся COM-файл заработал в DOSBox.

  • @blade8620
    @blade8620 2 หลายเดือนก่อน

    Пиздец просыпаюсь в 3 часа ночи и вижу на телеке вот это

  • @user-px5nk6wq2e
    @user-px5nk6wq2e 5 หลายเดือนก่อน +1

    ты псевдографикой будешь рисовать?

  • @W_0_W
    @W_0_W 4 หลายเดือนก่อน +2

    Нихрена не понятно но очень интересно

  • @sergeytomashko2683
    @sergeytomashko2683 4 หลายเดือนก่อน

    🤔ассемблер -основа для хакерства

  • @ekl_mn
    @ekl_mn 5 หลายเดือนก่อน

    что-то новое

  • @user-qk2nw6fz8r
    @user-qk2nw6fz8r 3 หลายเดือนก่อน

    Ребят, знаете, что интересно... Лет 10 назад был у меня телефон Siemens M65. Качал я для него игрушки, написанные (я так думаю) на Java. В числе прочего были шахматы. Они весили 80 килобайт! И ведь толковые были шахматы! На первом уровне можно обыграть, на втором трудно, на третьем - мне не удавалось. 80 килобайт!! Как такое возможно??... А ведь в эти 80 кб помимо кода самой игры, понятно, входит и оформление и ещё что-то...

    • @DicCurHic
      @DicCurHic 2 หลายเดือนก่อน

      1 килобайт это страница A4 художественного текста (500-600кБ стандартная художественная книга)
      java на себя берет реализацию взаимодействия с железом(готовые библиотеки кода в ос)
      применение БД дебютов (урезанной - по первой линии)
      фигурки это шрифт из коробки(скорее всего как в винде) на которые в лучшем случае натягивается градиент
      "правила игры" - не сами правила, а алгоритм по которому должен действовать человек перед совершением хода - ищите на ютубе порядок анализа доски у шахматистов

  • @VeloVetal
    @VeloVetal 5 หลายเดือนก่อน

    чтоб локальные метки работали надо процедуры правильно оформлять -- через proc/endp

  • @Hobbitangle
    @Hobbitangle 7 หลายเดือนก่อน +1

    "STOS трогает счётчик?"
    Нет конечно. Только DI.
    Счётчик "трогает" оператор LOOP и его префиксная форма REP

    • @DrunkFlyCloset
      @DrunkFlyCloset 7 หลายเดือนก่อน

      Спасибо за уточнение 😅 Я уже не помню, что дословно я говорил на том стриме. Думаю, я запутался из-за ассемблера Z80, где LDI (грубо говоря аналог MOVS) тоже меняет счетчик, как и LDIR (аналог REP MOVS).

    • @Hobbitangle
      @Hobbitangle 7 หลายเดือนก่อน

      @@DrunkFlyCloset
      Я не разбирался в ассемблере Z80, но ассемблер x86 представляю себе неплохо.
      А вообще спасибо за стрим - в олдскульных тонах. Этакая ностальгия пробирает и воспоминания о времени когда "деревья были большими".

  • @Animal_2444
    @Animal_2444 4 หลายเดือนก่อน

    🤯

  • @Ilnarildarovuch
    @Ilnarildarovuch 3 หลายเดือนก่อน

    Ура

  • @evgeniykorniloff9974
    @evgeniykorniloff9974 6 หลายเดือนก่อน +1

    Турбо С, и встроенный асм

  • @user-px5nk6wq2e
    @user-px5nk6wq2e 5 หลายเดือนก่อน

    а какой у тебя файловый менеджер тут?

    • @DrunkFly
      @DrunkFly  5 หลายเดือนก่อน

      DOS Navigator

  • @HundredKilo
    @HundredKilo หลายเดือนก่อน

    Маньяк.

  • @roman220220220
    @roman220220220 6 หลายเดือนก่อน

    Я перемотал, это доснавигатор Орлова?

    • @DrunkFly
      @DrunkFly  6 หลายเดือนก่อน

      Честно говоря, я первый раз слышу про "Дос Навигатор Орлова", поэтому скорее всего это что-то другое. Тот, про который я говорил - это DN от Ritlabs (они же еще впоследствии сделали известный почтовый клиент TheBat!)

    • @roman220220220
      @roman220220220 6 หลายเดือนก่อน

      @@DrunkFly если нажать f1 че говорят?)

  • @Za_pobedu_brat
    @Za_pobedu_brat 4 หลายเดือนก่อน

    На асме там кода если килобайт наберётся, хорошо.

  • @nukeMoscow
    @nukeMoscow 4 หลายเดือนก่อน

    долистал до ютуб премиума

  • @damian_madmansnest
    @damian_madmansnest 6 หลายเดือนก่อน

    Зачем под DOS? Есть видео I made an entire OS that only runs Tetris.

  • @anastasianikolaichik5351
    @anastasianikolaichik5351 7 หลายเดือนก่อน

    А где можно код взять, пожалуйста?

    • @DrunkFly
      @DrunkFly  7 หลายเดือนก่อน +1

      Код был тут: github.com/drunkfly/8086tetris

    • @anastasianikolaichik5351
      @anastasianikolaichik5351 7 หลายเดือนก่อน

      @@DrunkFly Ок, спасибо

  • @SerjCrimea
    @SerjCrimea ปีที่แล้ว

    А как называется канал Валерия Лис? Очень интересно ;)

    • @zapolnov
      @zapolnov ปีที่แล้ว +1

      К сожалению, Лис расстроился после начала известных событий, удалил все со своего канала и ушел из публичного пространства. Остался канал в телеге с последователями, вроде бы там кто-то даже сохранил копию его канала до удаления.

    • @SerjCrimea
      @SerjCrimea ปีที่แล้ว

      @@zapolnov Жаль. Ибо настальгия по ZX вернула меня в Z80. И с 1990х годов многое изменилось.
      У кого не спрашиваю как прочитать или записать на TR-DOS файл, нет рабочих примеров :)
      Не Бейсике есть а на ассемблере нет. :(

    • @Michael_Sh
      @Michael_Sh ปีที่แล้ว

      ​@@SerjCrimea не знаю, актуально ли. Из ассемблера можно же вызывать из rom процедуры. Бейсик их и использует.

  • @ULTRAWEN7
    @ULTRAWEN7 5 หลายเดือนก่อน

    А мне в своё время не хватило 640 килобайт ) игру писал свою.

  • @qwert5959
    @qwert5959 6 หลายเดือนก่อน

    1:06:01 урааа первый визуал!!!

  • @apelsinchekist
    @apelsinchekist 5 หลายเดือนก่อน

    Из программирования знаю лишь print("goodbye world") но всё равно было интересно

    • @xcrusedz
      @xcrusedz 5 หลายเดือนก่อน

      Если первый язык программирования ты изучишь ассемблер то ты мега титан

    • @RedOverlord2017
      @RedOverlord2017 4 หลายเดือนก่อน

      @@xcrusedz Ассемблер простой язык, я изучал его в школе после Бейсика. Вот выучить Лисп или Haskell это круто.

  • @user-tp7if7cg5e
    @user-tp7if7cg5e 2 หลายเดือนก่อน

    ахахаха)) "вайф - то же жена, да?" - "нет, это ширина"))) орррр))) with vs wife

    • @user-hc7dc6eb1k
      @user-hc7dc6eb1k หลายเดือนก่อน

      with это обозначает "с чем то", "с кем то". Width это ширина!

    • @aurashka
      @aurashka หลายเดือนก่อน

      @@user-hc7dc6eb1k ой да) одну букву пропустюнькала)

    • @user-hc7dc6eb1k
      @user-hc7dc6eb1k หลายเดือนก่อน

      @@aurashka бывает. Комментаторов бдительных развелось. Сегодня упражнялся с экселем в написании логических выражений. Мозг немного поскрипывал от длительного простоя! :-)

  • @AndrewPavlenkoXFate
    @AndrewPavlenkoXFate 6 หลายเดือนก่อน

    Коля, чёрт тебя побери :)
    Я сижу, смотрю запись твоего стрима, на которую попал чисто случайно, и не столько ностальгирую на asm, сколько думаю, где же я твою кудрявую башку видел-то в реале? И голос, голос знакомый.
    Ключевые слова - Life.Sreda, Семенчук, и т.д. Помнишь?

    • @DrunkFly
      @DrunkFly  6 หลายเดือนก่อน +1

      Привет. Помню :) Рад, что контент понравился :)

    • @AndrewPavlenkoXFate
      @AndrewPavlenkoXFate 6 หลายเดือนก่อน

      @@DrunkFly Контент отличный! Я никогда не писал на ассемблере x86, но когда-то писал на ассемблере БK-0010/0011 (DEC/PDP), очень приятный язык.

  • @pppkenken6610
    @pppkenken6610 6 หลายเดือนก่อน

    X-DOS

  • @IncDD
    @IncDD 5 หลายเดือนก่อน +1

    Кто ты воин?

  • @victorbrynev622
    @victorbrynev622 6 หลายเดือนก่อน +1

    привет. вы точно пишите на ассемблере? а, то фаил для вывода строки "привет мир" занимает больше 300 кб

    • @CarboardTrain
      @CarboardTrain 6 หลายเดือนก่อน +5

      привет. вы точно понимаете то о чём пишете? а, то, фаил, для, вывода, строки "привет мир", занимает, ровно, 28 байт (50:43) а, строчка "392,159,232 bytes free", показывает, сколько, свободного, места под фаилы осталось, на диске, с. И, хоть это, формально, действительно "больше 300кб", но, фактически это, чертовски, больше 300 кб

  • @lemone_goose
    @lemone_goose 4 หลายเดือนก่อน

    Друг сказал, что смотрел это ночью чтобы расслабиться
    Пи#дец

  • @karenda
    @karenda 2 ปีที่แล้ว +1

    А где рейтрейсинг?

    • @qkiee
      @qkiee 2 ปีที่แล้ว

      Чел ты...

    • @_Yes_.
      @_Yes_. ปีที่แล้ว

      ​@@qkiee лоллололололол

  • @user-ej4og1tw6n
    @user-ej4og1tw6n 6 หลายเดือนก่อน

    давай на МК -52 тетрис забацай!

  • @allsizby1039
    @allsizby1039 6 หลายเดือนก่อน +1

    30:40:07 зеленая палка не провалилась в самый низ

    • @yakovgusev
      @yakovgusev 3 หลายเดือนก่อน

      Ты в тетрис хоть раз играл? Или это рофл такой?

  • @user-mx4zt9zj7p
    @user-mx4zt9zj7p 3 หลายเดือนก่อน

    Тест

  • @user-rs1lw2gg8l
    @user-rs1lw2gg8l 6 หลายเดือนก่อน

  • @Vic7bd
    @Vic7bd 6 หลายเดือนก่อน

    Под DOS это не плохо, но 2021-й год был, надо бы уже было сразу под Windows 10 писать ;-)
    "quazatron3 ​Тетрис ждет судьба Змейки? Интрига..." - комментарий прям в точку :-)))

    • @RedOverlord2017
      @RedOverlord2017 4 หลายเดือนก่อน

      ZX Spectrum и приставки (NES, Sega Megadrive) будут поинтереснее DOS. А в Windows и Linux нет особого смысла использовать ассемблер, т.к. все возможности реализуются библиотеками (WinAPI и POSIX). Получится то же самое, что и на Си. А прямого доступа к оборудованию там добиться сложно, для этого надо знать глубоко архитектуру ОС.

  • @avechess
    @avechess 3 ปีที่แล้ว +1

    Давай "ZX 1K CHESS"

    • @avechess
      @avechess 3 ปีที่แล้ว +1

      Шахматы на Бейсике! ))
      Поиск в ютубе: "80's Chess Battle: ZX81 1K Chess vs Tim Hartnell's BASIC Chess on ZXSimulator"

  • @maksimmaksimovich4296
    @maksimmaksimovich4296 6 หลายเดือนก่อน

    Ничего не понятно. Но интересно.

  • @AMith-lv2cv
    @AMith-lv2cv ปีที่แล้ว

    🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥

  • @pl_ro
    @pl_ro 6 หลายเดือนก่อน

    Это хардкор! В 2021 году? кому нужен ASM. Хайп на змее.

    • @pi4990
      @pi4990 6 หลายเดือนก่อน +1

      Асм нужен тому, кто хочет много зарабатывать

    • @Vic7bd
      @Vic7bd 6 หลายเดือนก่อน

      Вот даже 2023-й год идёт, но ASM как был так и остаётся ;-)

    • @user-zp9og5gq3m
      @user-zp9og5gq3m 6 หลายเดือนก่อน

      Для взлома тоже асм

    • @RedOverlord2017
      @RedOverlord2017 4 หลายเดือนก่อน

      В основном пиратам и хакерам.

    • @DicCurHic
      @DicCurHic 2 หลายเดือนก่อน

      "не только лишь всем" - микроконтроллеры - асм на который налепили пародию на недо си, с++ и тп. через задницу
      асм как таковой не нужен, а нужна инъекция опкодов и нормальная подробная документация с примерами реализации

  • @user-uf8ye9wj5y
    @user-uf8ye9wj5y 6 หลายเดือนก่อน +3

    Вот чем должна заниматься элита программистов, а не созданием лагучей и тяжёлой виндоус 11. Я серьёзно. Я считаю, что софт должен быть максимально лёгким, без всякой никому не нужной мишуры, забивающей оперативную память. Чтобы даже на старом досе работало.

    • @FloatingGames
      @FloatingGames 5 หลายเดือนก่อน +2

      Ля, если мы тетрис будем делать 3 часа то винду 11, дай боже за 1000 лет сделать

    • @reaperburnout5694
      @reaperburnout5694 4 หลายเดือนก่อน

      От части согласен, но только об электроне
      Какой современный софт не возьму - сделан на лагучем куске тапочка под названием «electron»

    • @reaperburnout5694
      @reaperburnout5694 4 หลายเดือนก่อน

      @@FloatingGamesнанять индусов, и они тебе за дополнительную тарелку куриного карри сделаю windows 12 на машинном коде, в минималках у которой будет 286 Интел

    • @RedOverlord2017
      @RedOverlord2017 4 หลายเดือนก่อน

      Есть легковесная KolibriOS на ассемблере, присоединяйтесь.

    • @DicCurHic
      @DicCurHic 2 หลายเดือนก่อน

      прежде чем это делать нужно менять опкоды чтоб они реализовали интерпретатор высокоуровневых команд с возможностью побитового доступа к каждому регистру в железе
      "Чтобы даже на старом досе работало" - вы в прерывания биос по видео выводу залезьте - там такое г... наворочено
      + нет стандартизации для шин в открытом доступе

  • @incasinato
    @incasinato 6 หลายเดือนก่อน

    3:38:25 - Что в итоге получилось