diff --git a/README.md b/README.md index cb37acd..16cbf42 100644 --- a/README.md +++ b/README.md @@ -43,9 +43,14 @@ AT+CIPSNTPTIME? — получить текущее врем **Убрано мигание вертикальных полос при воспроизведении музыки.** (Ну почти убрана =))) Индикатор громкости AY-каналов (`music_analizator`) раньше рисовался прямо внутри прерывания, которое отвечает за точное по строкам переключение видеорежима текст/графика — и делал это вместе с DMA-очисткой экрана и переключением страниц памяти. На динамичных треках (больше эффектов — дольше выполняется код) это сбивало тайминг прерывания и давало заметные мигающие полосы на экране. Отрисовку индикатора вынесли из прерывания в обычный код главного цикла (раз в кадр, синхронно с `wait_frame`, но уже не в раст-критичной цепочке) — сам плеер и его тайминг (темп, высота нот) не тронуты. +**Поправлена позиция нижней панели управления.** Она была смещена на пару пикселей вниз относительно верхней панели с самого начала (не наша регрессия) — поправлено смещение `GYOFFSL` в `int_text_off`. + **Мелкие исправления:** - обращение к порту `#EFF7` (общий системный регистр — управляет не только доступом к часам, но и видеорежимом/turbo/кэшем) переведено на read-modify-write вместо прямой перезаписи всего байта, чтобы не сбивать остальные настройки; - исправлен баг в разборе двузначного GMT-смещения из `zifi.ini` (например `+10`) — были перепутаны местами разряды; -- DMA-очистка под индикатор громкости теперь дожидается завершения перед тем, как CPU начинает рисовать поверх той же области (была гонка записи). +- DMA-очистка под индикатор громкости теперь дожидается завершения перед тем, как CPU начинает рисовать поверх той же области (была гонка записи); +- в текстовом режиме (`int_text_on`) включён бит `TSU_SEN` (аппаратные спрайты TSU), который раньше был закомментирован — на всякий случай, чтобы курсор мыши мог отображаться и поверх текстовой области тоже. + +**Известная нерешённая мелочь:** курсор мыши (аппаратный спрайт TSU) обрывается по фиксированной строке экрана прямо над нижней панелью управления — похоже на границу, завязанную на тайминг переключения видеорежима или на аппаратный бордюр, а не на что-то, что двигается вместе с содержимым панели. Не нашли способ поправить это без риска сломать что-то ещё, оставили как есть. diff --git a/_spg/ZIFI/zifi.spg b/_spg/ZIFI/zifi.spg index aaccb75..bd53871 100644 Binary files a/_spg/ZIFI/zifi.spg and b/_spg/ZIFI/zifi.spg differ diff --git a/zifi.asm b/zifi.asm index 7b73463..8a78ec1 100644 --- a/zifi.asm +++ b/zifi.asm @@ -2203,9 +2203,9 @@ txt_border ld a,#f0 ld b,high VCONFIG ld a,VID_TEXT+VID_320X240 out (c),a -; ld b,high TSCONFIG -; ld a,TSU_SEN -; out (c),a + ld b,high TSCONFIG + ld a,TSU_SEN + out (c),a ld b,high VPAGE ld a,Text_page out (c),a @@ -2249,7 +2249,7 @@ int_text_off push af,hl,de,bc,ix,iy push af exa call set_256c_mode - ld hl,47+240-1 + ld hl,47+240 ; was 47+240-1 - bottom panel sat a couple pixels too low ld b,high GYOFFSL out (c),l inc b @@ -3479,7 +3479,7 @@ status_icon_copy cancel_icon_copy db #1a,low cancel_icon db #1b,high cancel_icon - db #1c,2 + db #1c,2 db #1d,4+4+128 db #1e,#3e-2 db #1f,Vid_page+8