Я не согласен и всё потому, что мне интересно думать в терминах демокодинга.
Демокодинг на Z80 приучает к некотором стандартным общим образам мысли: «стеком быстрее», «перекладывать байты эффективнее, если задействовать ldi» — базовые эвристики выглядят примерно в этом духе. А на GBC команды чтения и записи байтов с автоинкрементом настолько эффективны, что всякие решения, обычно отметаемые на Z80 становятся снова актуальными. Нужно заново продумывать на уровне эвристик, даже базовые операции.
А вот интересно — у Амстрада z80 работает по-другому. Это недо-z80?
у Mattel Aquarius нет прерываний IM2 — это недо-z80?
у 8080 похожий набор команд — что недо- тогда?
КР580ВМ80, копия 8080 — это недо 8080?
кстати, порча спрайтов при инкременте пар неясно чей глюк — процессора или конструкции?
Да нечего там особо переосмысливать — это немного расширенный 8080 с аппаратными глюками. Там даже банальный инкремент регистровых пар надо использовать с осторожностью, т.к. он может приводить к порче списка спрайтов при определённых условиях. А 8080 по любому менее гибкий, чем Z80 — мало регистров, нет индексных.
Это относительно известный хак. Проблема одновременного доступа к тайлам решается в лоб — использованием двухпортовой памяти, т.е. памяти, которая даёт два полноценных канала для доступа к её содержимому, не мешающих друг другу. В староглиняные времена это было непозволительной роскошью, а сейчас вполне доступно.
Игра работает на 32-битном микроконтроллере производства NXP с ядром ARM Cortex-M0 на частоте 48 МГц, 16КБ ОЗУ и 128КБ ПЗУ.
Вот поэтому и читерство. Почему процессор в GBC назван «недо-Z80» — неужели тоже объяснять нужно? Потому что может меньше чем #Z80 (хотя в плане оптимизации для него нужно так много переосмысливать, что лично я даже не вполне уверен, какой набор команд окажется более производительным).
<blockquoteGame Boy Color, с его недо-Z80 на частоте 8.3 МГц с сочетании с маленьким разрешением экрана>
не понял, где тут «читерство» и почему «недо-z80»
Автор находящегося в процессе разработки нового порта Wolfenstein 3D для GBC решил пойти нетрадиционным путём — получить полноценную графику и высокую частоту кадров за счёт применения сопроцессора в картридже.
Ну, это читерство уже :-) Один «камень» ARM Cortex-M0 мощнее, чем весь GBC. Зато на GBA, например, Wolf портирован официально. И Doom тоже. Это так, к слову.
Я в курсе про тайлы, мне интересно была инфа о перегенерации. Про GBC ничего не знаю, вот на NES, насколько я помню, такое провернуть нельзя — нет доступа к редактированию набора тайлов во время выполнения.
На спекки подобное делал Alone Coder, используя General Sound для дополнительных вычислений. Там правда, для обмена данными нет шареной памяти, только порты.
Плавно так работает, круто. А где можно почитать про «GBC забирает готовые тайлы для отображения»? Это какой-то известный хак или человек сам придумал решение? Звучит очень круто
поэтому используется DMA. А если копнуть в демо, то найдутся и трюки со стеком и прочие.
Демокодинг на Z80 приучает к некотором стандартным общим образам мысли: «стеком быстрее», «перекладывать байты эффективнее, если задействовать ldi» — базовые эвристики выглядят примерно в этом духе. А на GBC команды чтения и записи байтов с автоинкрементом настолько эффективны, что всякие решения, обычно отметаемые на Z80 становятся снова актуальными. Нужно заново продумывать на уровне эвристик, даже базовые операции.
Разумеется, багов процессора это всё не касается…
у Mattel Aquarius нет прерываний IM2 — это недо-z80?
у 8080 похожий набор команд — что недо- тогда?
КР580ВМ80, копия 8080 — это недо 8080?
кстати, порча спрайтов при инкременте пар неясно чей глюк — процессора или конструкции?
как то это… неправильно
А по сути это недо-GBC.
не понял, где тут «читерство» и почему «недо-z80»
www.happydaze.se/wp-content/uploads/2016/10/frame-overview.png
На спекки подобное делал Alone Coder, используя General Sound для дополнительных вычислений. Там правда, для обмена данными нет шареной памяти, только порты.
wolf3d уже портировали на Enterprise, вроде на движке алонештейна.