Comments 20
Ведь за это никто не заплатит
Это не обязательно деньги.
Если кто-то считает что-то полезным, он готов за это платить.
Так что большинство людей могут работать только над тем, что полезно другим людям.
Это сейчас об этом не надо думать. Раньше информацию приходилось читать в книжках, FIDO, покупать компакт-диски со всякой всячиной.
Например, у меня всё ещё на полочке пылится диск с кучей исходников самопальных компонентов и недоделанных игр. Есть там и недоделанный клон Warcraft 2, и различные варианты реализации библиотек для работы с графикой, звуком, чьи-то 3D и квестовые движки на коленке и прочий увлекательный хлам. Разбирать это всё, компилировать, использовать интересные наработки было невероятно увлекательно в конце 90-х — начале 2000-х годах.
Спасибо за ностальгию)
Видимо, у вас REP MOVSW не работает из-за того, что грязные прямоугольники нечетного размера. А если их выравнивать по ширине 4 (у вас все равно 4 плоскости), по высоте кратно 4, и использовать db 66h; rep movsw; получится команда rep movsd и обретете счастье. Но не будет работать на 286м тогда, потому как у него нет команд с 32-битной шириной.
С помощью выравнивания по горизонтали можно добиться того, что код всегда будет записывать пиксели на все 4 плоскости, начиная с нулевой, что в теории сэкономит несколько тактов ЦП на вычисление плоскости, которой соответствует левый верхний угол грязного региона, а также позволит развернуть цикл прорисовки, сэкономив ещё немного времени. Выравнивание по вертикали не столь обязательно, но желательно, чтобы можно было не парясь сдвигать CX на два вправо и не терять количество прорисованных точек. Выравнивание начала региона до кратной 4 позволит не париться о границе экрана.
Как увидел мой любимый td.exe аж руки зачесались. Только непривычно видеть только одно окно кода в отладчике.
Как (и зачем) мы портировали Shenzhen Solitaire под MS-DOS