Ммм. У меня в голове это укладывается следующим образом: текущая длина ссылки является «состоянием». Поэтому если ты вставляешь команду изменения длины ссылки, ты бы должен по идее как-то сохранять смену состояния декомпрессора. Типа, при парсинге вперёд, ты бы должен по идее фиксировать, для каждой позиции в данных, не просто текущий оптимальный результат сжатия до этой позиции, а 8 результатов сжатия — по одному для каждого текущего состояния длины ссылки. Понятно что если такой контекст и влияет на результат, то довольно слабо, но хочется понять, как ты избегаешь учёта контекста совсем.
как именно там выбираются моменты для вставки кодов расширения ссылок в Hrust 1
Это просто: на каждом шаге компрессор пробует вставить от нуля до семи команд расширения.
укорачивать коды вроде тоже декомпрессор позволяет.
Действительно, благодаря тому, что в декомпрессоре используется циклический сдвиг (RRC D), регистр D можно сбросить до начального состояния. oh1c это учитывает. Это улучшает сжатие в среднем на 0.02% ;)
Важно! Похоже, что для корректной работы Nesicide нужно сперва установить на компьютер Mingw32 и прописать путь до его папки BIN в переменной среды PATH! Похоже, что Nesicide который изначально разрабатывается и тестируется в Linux нужны некоторые утилиты командной строки такие как make и которые есть в Mingw32. Я этот момент проворонил потому что у меня он всегда стоит и прописан в пути.
Артём, спасибо, действительно душевно. Посетить пати у меня возможности не было, но атмосферу почувствовал, это главное. И, как настоящий софасценер, не могу не поблагодарить за отличные ссылки по касательной, особенно на книжку по real-time rendering и на MSDF. Реально вот этого в старых отчётах по-моему никогда не было, а я прямо с удовольствием потыкал и внёс в букмарки.
Какой же это потрясающий и невероятный репорт! Артёмка, спасибо тебе, что на какое-то мгновение вернул меня в те последние выходные уходящего лета :)
Таких мощных и атмосферных репортов не было последние лет 20, со времён бума спектрумовской прессы. На некоторых местах аж сердце зашлось, натурально… Надеюсь, люди прочитают это и поймут, что на пати на ездить. Всегда, и во что бы то ни стало.
В общем, я там был, Наки Томпсон пил, и подтверждаю, что именно так всё и было, по фактам!
Можно бесконечно спорить на частных примерах где получается больше, а где меньше. Но это не самоцель же на самом деле. Я просто показал в статье, что меня позабавило, что несмотря на очевидное разбазаривание плотности команд (у того же дедушки PDP-11 с наследниками в виде БК-шек она гораздо выше) весьма базовые действия такие как сложение слов с занесением сразу же результата в целевую ячейку памяти получаются заметно короче нежели на классических 8-битках. Многое конечно будет наоборот заметно больше — например нет ничего похожего даже на LDIR или инкремент регистра всегда осуществляется за слово, а не за байт (хотя инкремент может быть любым числом в диапазоне -8..+7 и может записать результат не в тот регистр из которого бралось первое слагаемое. собственно в архитектуре нет выделенной операции MOV потому что это инкремент на 0 какого-то регистра или ячейки памяти с занесением в другой регистр/ячейку памяти). Ну и тому подобное и так далее.
В 80-х такая архитектура не могла бы появится, потому что там более бережно отнеслись бы к расходу памяти и сделали бы что-нибудь типа PDP-11 или MSP-430. С их довольно ветвистыми системами команд и режимами адресаций.
Я же преследовал простоту всего — отказ от байта это в эту же копилку. Я прекрасно понимаю, что у Simpleton поэтому немало слабых сторон.
Но практикум программирования в эмуляторе показал лично для меня, что да, программировать просто — очень небольшой, буквально с час, период привыкания и всё, ты просто пишешь код состоящий из очень простых операций вида R = X op Y и многое о чём болела постоянно голова в Z80 или 6502 вообще отсутствует как класс.
Действительно, благодаря тому, что в декомпрессоре используется циклический сдвиг (RRC D), регистр D можно сбросить до начального состояния. oh1c это учитывает. Это улучшает сжатие в среднем на 0.02% ;)
в какой он появился с сохранением статус бара?
и как архив без телеграма скачать?
Удивился, что так вообще можно :) Офигенная штука.
Таких мощных и атмосферных репортов не было последние лет 20, со времён бума спектрумовской прессы. На некоторых местах аж сердце зашлось, натурально… Надеюсь, люди прочитают это и поймут, что на пати на ездить. Всегда, и во что бы то ни стало.
В общем, я там был, Наки Томпсон пил, и подтверждаю, что именно так всё и было, по фактам!
А Артёмка красавчик! :)
Тёма, спасибо за столь обширную историю!
В 80-х такая архитектура не могла бы появится, потому что там более бережно отнеслись бы к расходу памяти и сделали бы что-нибудь типа PDP-11 или MSP-430. С их довольно ветвистыми системами команд и режимами адресаций.
Я же преследовал простоту всего — отказ от байта это в эту же копилку. Я прекрасно понимаю, что у Simpleton поэтому немало слабых сторон.
Но практикум программирования в эмуляторе показал лично для меня, что да, программировать просто — очень небольшой, буквально с час, период привыкания и всё, ты просто пишешь код состоящий из очень простых операций вида R = X op Y и многое о чём болела постоянно голова в Z80 или 6502 вообще отсутствует как класс.