docs: справочники по железу Sprinter + правка gfx_scroll_h
- docs/new/ — сводные справочники (архитектура, BIOS, DSS, память, графика, акселератор, IRQ, порты, ввод, звук, известные баги); - docs/Original/ — первоисточники, из которых они собраны (BIOS, Estex DSS, мануалы, описание акселератора), + Форум.doc/.docx в reference; - libbgi/common/gfx_scroll_h.c — обход бага скролла при ширине >256 (правка автора: шаг банды 255 и продвижение указателей на cw; старый вариант с 256 оставлен закомментированным с TODO); - удалён applications/PoP/roomtest/hang_variants.png — рабочая раскладка из разбора позы виса, в репозитории ей не место. Большие архивы (docs/extra ~568 МБ, docs/sources с вложенными git-репо ~68 МБ) в коммит НЕ включены — см. обсуждение. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -46,10 +46,16 @@ void gfx_scroll_h(const gfx_rect_t *area, int16_t dx, gfx_rect_t *dirty) {
|
||||
* DI/EI-банды по 16 строк leaf делает сам (h: 0=256). Между бандами по
|
||||
* ширине CPU-адрес двигаем на 256 (Port_Y выбирает строку). */
|
||||
while (w) {
|
||||
uint8_t cw = (w > 256) ? 256 : (uint8_t)w; /* 0 => 256 */
|
||||
// Закомментированный блок должен работать правильно но не работает
|
||||
// почему-то при w > 256 второй проход мусорит
|
||||
// TODO: разобраться
|
||||
// uint8_t cw = (w > 256) ? 256 : (uint8_t)w; /* 0 => 256 */
|
||||
// _bgi_scroll_rows_raw(src, dst, cw, h, (uint8_t)area->y);
|
||||
// src += 256; dst += 256;
|
||||
// w -= (w > 256) ? 256 : w;
|
||||
uint8_t cw = (w > 255) ? 255 : (uint8_t)w; /* 0 => 256 */
|
||||
_bgi_scroll_rows_raw(src, dst, cw, h, (uint8_t)area->y);
|
||||
src += 256; dst += 256;
|
||||
w -= (w > 256) ? 256 : w;
|
||||
src += cw; dst += cw; w -= cw;
|
||||
}
|
||||
|
||||
_bgi_end();
|
||||
|
||||
Reference in New Issue
Block a user