Да сама табличка сверхпримитивная, основное — где она расположена, нужно выделить удобные адреса (из нескольких вариантов). Где и что у неё внутри, должно быть понятно из кода сразу. Смотри, вот так может выглядеть DOWN_HL для компактной неразвёрнутой процедуры:
djnz (на inc h)
ld b,c (или ld b,8)
add hl,sp
ld h,(hl)
inc h
Что средневзвешенно на полтора+ такта быстрее чем pop:add и не использует стек (только временно его указатель), а потому может применяться и при рисовании с двух концов (для UP_HL код аналогичный, но с альтернативной парой вместо sp и второй таблицей). Прерывания тоже не страшны, если над (sp) немного места зарезервировать. В сам sp грузим константу #XX20, где XX зависит от адресов таблиц и экрана. Например, в sp можно поместить #E020 если с #C000 рисуем на двух экранах. Код короткий, для таблиц на каждый сегмент экрана нужно 256*2 байт (на последний сегмент можно только 256, если закольцовывать не хотим).
Для развёрнутых процедур DOWN_HL будет соответственно «inc h» или «add sp:ld h,(hl)»
Средневзвешенно минус три такта на ступеньку.
Вот и всё, я даже засомневался, что никто еще до этого не допёр. :D
Ты придумал табличку? молодец. Я пока не придумал.
а вот теперь я, похоже, всё-таки молодец, и табличку тоже таки придумал :)
применять можно вместе с обсуждавшейся процедурой или отдельно
тогда примерно или +1кб и +10% скорости, или -6кб и -10% скорости
Извини, пропустил вопрос. На твой вопрос нет простого ответа. pt3 разрабатывался чтобы быть достаточно компактным сам по себе, но вряд ли кто-то специально думал о том, как он будет компрессироваться. С другой стороны, я не знаю других форматов с эквивалентными возможностями, чтобы можно бы было хотя бы сконвертировать пачку файлов в конкурирующий формат и посмотреть, будет ли он лучше жаться.
Ограничения на размер файлов есть почти у всех спектрумовских пакеров. Как ты собираешься распаковывать файлы больше 64К на машине с адресным пространством в 64К и реально доступной памятью в 48К?
нагло предлагаю свой мумулятор, он может работать с кадром 60гц, и синхра от видео, а не звука
также в нём есть для простых моргалок-двумя-экранами чересстрочная автогига (не блендинг!)
минус — нет полноэкранного режима (автоматически размер окна на максимальный кратный масштаб)
по крайней, мере, подойдёт хотя бы для оценки, как это могло бы выглядеть
а спецтулзу для показа в полный экран (или без оконных рамок на чёрном фоне), думаю, несложно будет накодить
ps. подлил в мультик 17 и 18.
Что средневзвешенно на полтора+ такта быстрее чем pop:add и не использует стек (только временно его указатель), а потому может применяться и при рисовании с двух концов (для UP_HL код аналогичный, но с альтернативной парой вместо sp и второй таблицей). Прерывания тоже не страшны, если над (sp) немного места зарезервировать. В сам sp грузим константу #XX20, где XX зависит от адресов таблиц и экрана. Например, в sp можно поместить #E020 если с #C000 рисуем на двух экранах. Код короткий, для таблиц на каждый сегмент экрана нужно 256*2 байт (на последний сегмент можно только 256, если закольцовывать не хотим).
Для развёрнутых процедур DOWN_HL будет соответственно «inc h» или «add sp:ld h,(hl)»
Средневзвешенно минус три такта на ступеньку.
Вот и всё, я даже засомневался, что никто еще до этого не допёр. :D
применять можно вместе с обсуждавшейся процедурой или отдельно
тогда примерно или +1кб и +10% скорости, или -6кб и -10% скорости
Ограничения на размер файлов есть почти у всех спектрумовских пакеров. Как ты собираешься распаковывать файлы больше 64К на машине с адресным пространством в 64К и реально доступной памятью в 48К?
Но статью всё равно хочется! :)
Что за эмулятор, как ты там раскрашиваешь игры, и где можно посмотреть, как они выглядят в 60гц!
также в нём есть для простых моргалок-двумя-экранами чересстрочная автогига (не блендинг!)
ссылки тут, если кто не в курсе — zx-pk.ru/entries/360-zx-ulax-download-links.html
минус — нет полноэкранного режима (автоматически размер окна на максимальный кратный масштаб)
по крайней, мере, подойдёт хотя бы для оценки, как это могло бы выглядеть
а спецтулзу для показа в полный экран (или без оконных рамок на чёрном фоне), думаю, несложно будет накодить