Shiru, отличные статьи. Если бы я делал под NES или SEGA, то подход был бы совсем другой лишь из-за того, что есть система картриджей. Спасибо за отличные статьи.
Я всегда с таким удовольствием читаю про NES, как будто захватывающий сюрреалистический роман — я совершенно ничего не понимаю, но мне всё это ТАК нравится.
Да. Но к сожалению, этот способ не универсален — у NTSC и PAL версий видеоконтроллера перепутаны красный и зелёный каналы, а у RGB-версии (редкость, но всё же) вместо усиления компонент устанавливается максимальный уровень.
При большом желании текущую палитру можно изменить на лету и нормальным образом, но нужно несколько пустых строк на экране. За одну строку можно поменять около двух цветов, на смену всей палитры фона нужно 5-6 строк. И много проблем с таймингами. Для эффектов в демо подойдёт, а для обычных картинок или игр не очень.
Фуцк Mihip-у за не правильную (не подсчитанную) контрольную сумму ;)
Как её считать? Очень просто! Вот, процедурка для i8080
// процедура подсчёта контрольной суммы Радио-86РК/Апогей/Партнёр/Специалист (версия для i8080/Z80)
// вх: HL - указатель на начало буфера
// DE - указатель на конец буфера
// вых: BC - контрольная сумма
AB AA AA // очищаем BC (здесь будет КС)
HP IB EO // обновляем с мл.байт КС
OF // сохранение флагов
MN CC AA // 1я проверка на конец блока
MK BN AA // да, конец
OB // восстановление флагов
HI IP EH // обновляем с ст.байт КС
MN BH AA // 2я проверка на конец блока и инкремент указателя
MD AD AA // на начало цикла
// сравнение HL и DE,
// если равны, то выход из процедура вызвавшей эту,
// иначе инкремент HL
MN CC AA
MC CA AA
DD DD MJ
CD MJ
// сравнение HL и DE
HM LK MA
HN LL MJ
Неужели не понятно?!
Хм… oк, тогда для i8086
// процедура подсчёта контрольной суммы Радио-86РК/Апогей/Партнёр/Специалист (версия для i8086)
// вх: di - указатель на начало буфера
// cx - количество байт
// вых: bx - контрольная сумма
LL AA AA // очищаем bx (здесь будет КС)
EJ HE AJ // это случай, когда cx=1
IK AF // байт из буфера
EH // инкремент указателя
IK PA // копируем в старший
AD NI // складываем
PC OH // если не последний байт, на начало цикла
IK AF // последний байт
AC NI // складываем
MD // выход из процедуры
— — — Если серьёзно, то присоединюсь к introspec-у и заминусую пост потому_что_он_про_Wct
Когда загружается страница с какой-либо информацией, можно сине-жёлтые полоски на бордюре рисовать (гифом или как там сейчас принято в вебе? канвасом?), как-будто идёт загрузка с кассеты (только без звука!!!). Не более чем грузится страница и не менее 500(мс), чтобы заметить эффект.
Но это совсем уже от нечего делать. Может и не очень будет выглядеть, не знаю. Надо проверять.
При большом желании текущую палитру можно изменить на лету и нормальным образом, но нужно несколько пустых строк на экране. За одну строку можно поменять около двух цветов, на смену всей палитры фона нужно 5-6 строк. И много проблем с таймингами. Для эффектов в демо подойдёт, а для обычных картинок или игр не очень.
Как её считать? Очень просто! Вот, процедурка для i8080
Неужели не понятно?!
Хм… oк, тогда для i8086
— — — Если серьёзно, то присоединюсь к introspec-у и заминусую пост потому_что_он_про_Wct
Но это совсем уже от нечего делать. Может и не очень будет выглядеть, не знаю. Надо проверять.