Вообще, существует мнение, что GB изначально делался под 6502. Остальное железо очень сильно похоже на NES. Кто-то из железячников где-то говорил, что внешняя шина у процессора GB по устройству близка или совпадает с 6502, а не 8080/Z80. Но в какой-то момент разработки процессор предположительно был заменён, по неизвестным соображениям. Возможно, у Sharp для была лицензия на 8080/Z80, но не было на 6502, или они решили применить свой уже существующий промышленный контроллер, который проще интегрировался с драйвером LCD.
Не знаю, исходя из опыта написания кода для 8080/Z80 и 6502/65816/SPC700, я ничего особенно интересного в системе команд не заметил, никакой особенной парадигмы. Может она и есть, но мне кажется, что итоговый дизайн скорее следствие спешки, чем продуманных решений.
Лично мне показалось это спорным, но весьма занимательным решением (было столько аналогичных фантазий, а тут реально сделано), поэтому и запостил сюда. Судя по активной реакции на пост в самом непопулярном разделе сайта, не зря.
Z80 всё же всегда работает как Z80 соответствующей версии, а не по-другому.
Есть расхожее заблуждение, что процессор GB — урезанная версия Z80 или полноценный Z80; также местной аудитории легче ориентироваться относительно Z80; в формате новости лишний абзац с пояснением, что же там за процессор, не очень уместен. Поэтому вот так.
Да нечего там особо переосмысливать — это немного расширенный 8080 с аппаратными глюками. Там даже банальный инкремент регистровых пар надо использовать с осторожностью, т.к. он может приводить к порче списка спрайтов при определённых условиях. А 8080 по любому менее гибкий, чем Z80 — мало регистров, нет индексных.
Это относительно известный хак. Проблема одновременного доступа к тайлам решается в лоб — использованием двухпортовой памяти, т.е. памяти, которая даёт два полноценных канала для доступа к её содержимому, не мешающих друг другу. В староглиняные времена это было непозволительной роскошью, а сейчас вполне доступно.
Всего один набор тайлов, он никогда не переключается. Чанки в нём 4x8, т.е. верхняя и нижняя половины всегда одинаковы. Две nametable, в одной номера тайлов для чётных чанковых строк, в другой для нечётных. Каждые 4 строки пикселей переключаем отображаемую nametable. Да, по сути получаем тайлы 8x4. Это не может, это точно сработает, подобное уже делали.
Недопояснил, сплит в данном варианте должен переключать не банки графики, а текущую тайловую карту. Штатно их всего две, в одной можно хранить нечётные строки чанков, в другой чётные. Каждую половину тайла по вертикали переключать отображаемую карту тайлов. Таким образом будет отображено 60 полутайлов в высоту, вместо 30 целых тайлов.
Касательно NES, да вроде не надо аж 10000 комбинаций. Хотя и это в принципе возможно, если взять MMC5, он поддерживает 16384 тайла на экране одновременно. А в стандартной конфигурации — даже без выкидывания повторов все комбинации двух соседних по горизонтали чанков 4x4 с 10 штриховками дают 100 тайлов, меньше половины одного набора. Раз уж речь шла о двух банках, значит предполагался сплит, но принципиально ничто не мешает делать этот сплит каждые 4 строки пикселей. Т.е. не нужны комбинации всех четырёх чанков в тайле, только двух — левого и правого.
Я использовал этот компилятор и писал под GB. Не знал, что в нём есть прямая поддержка Z80. Коммент выше к тому, что если компилятор заточен чисто под процессор GB, он не подойдёт. Несмотря на все упоминания о схожести с Z80, там нет почти ничего общего, кроме мнемоник и команд с префиксом #CB — ни альтернативных регистров, ни IX/IX, ни даже любых IN/OUT.
На GB не Z80, нет смысла смотреть на компиляторы для него. z88dk и SDCC работают более-менее нормально. z88dk теоретически менее эффективный, но на практике в SDCC куча проблем от иногда нерабочего кода до совершенного неприличного времени компиляции.
Очень интересная система, весьма своеобразная, с довольно оригинальными играми, включая весьма прикольный эксклюзив Killer Bees. Пожалуй, мой личный фаворит среди консолей второго поколения, не за выдающиеся технические возможности, но за самобытность.
Напомню, что у 6809 команды по тактам вдвое короче, чем у Z80. И можно нередко слышать мнение, что в принципе его архитектура лучшая среди 8-битных процессоров того времени. Так что в общем случае он в этой системе не (сильно) медленнее, чем Z80 на ZX Spectrum.
Хочу заметить, что заслуга Texas Instruments не только и не столько в разработке этого довольно чудного, редкого и экзотического компьютера, сколько в разработке и последующей свободной продаже графического и звукового чипов для него (только процессор более нигде не прижился) — то, что вскользь упомянуто в словах 'также используемый в'. Дело в том, что тогда эти чипы стали одним из немногих доступных готовых решений на рынке для разработки 8-битных платформ, и их, в связке с вместе с относительно недорогим Z80, стали использовать многие производители компьютеров и приставок того периода.
За словами 'в MSX1', если кто не в курсе, кроется не один компьютер, а целый стандарт, которому следовала сотня производителей в разных странах, были выпущены сотни моделей компьютеров. Некоторые даже поставлялись в СССР, и вдохновляли уже наших разработчиков. Например, ПК8000 ещё в 1987 году пытался повторять MSX1 на советской элементной базе, и в том числе имеет сходные с TMS9918 видеорежимы (но без спрайтов), а на основе этого компьютера был сделан игровой автомат Питон, в который многие из нас играли в детстве.
Помимо MSX1, была ещё кучка других одиночных компьютеров, применявших видео, звук, или то и другое от TI-99/4, а помимо Colecovision — которая в своё время стала next gen'ом в сравнении с Atari 2600, обеспечив домашним игрокам близкое к аркадному качество тогдашних видеоигр — было ещё несколько приставок. В частности, самая первая приставка компании Sega, SG-1000. Следы совместимости с ней, а значит и разработок TI, распространились на все их последующие приставки, вплоть до Mega Drive, в котором есть полноценный аналог всё того же звукового чипа из TI-99/4. Собственно, упомянутый трекер MOD2PSG2, был разработан именно для одной из 8-битных приставок Sega (Game Gear), он просто подходит для TI/99a и других систем по причине этой наследственности.
Также существует неизвестно откуда пошедшее, но довольно расхожее мнение (может быть и миф), что разработчики видеосистемы Famicom/NES (Денди) вдохновлялись TMS9918 (и Colecovision) в качестве образца удачного решения. И если совсем уж притягивать за уши, графическое разрешение 256x192 с двумя цветами на блок 8x8 или 8x1, с внутренней разбивкой экрана на трети, появилось в TMS9918 за несколько лет до ZX Spectrum.
Не знаю, исходя из опыта написания кода для 8080/Z80 и 6502/65816/SPC700, я ничего особенно интересного в системе команд не заметил, никакой особенной парадигмы. Может она и есть, но мне кажется, что итоговый дизайн скорее следствие спешки, чем продуманных решений.
Есть расхожее заблуждение, что процессор GB — урезанная версия Z80 или полноценный Z80; также местной аудитории легче ориентироваться относительно Z80; в формате новости лишний абзац с пояснением, что же там за процессор, не очень уместен. Поэтому вот так.
Очень интересная система, весьма своеобразная, с довольно оригинальными играми, включая весьма прикольный эксклюзив Killer Bees. Пожалуй, мой личный фаворит среди консолей второго поколения, не за выдающиеся технические возможности, но за самобытность.
Хочу заметить, что заслуга Texas Instruments не только и не столько в разработке этого довольно чудного, редкого и экзотического компьютера, сколько в разработке и последующей свободной продаже графического и звукового чипов для него (только процессор более нигде не прижился) — то, что вскользь упомянуто в словах 'также используемый в'. Дело в том, что тогда эти чипы стали одним из немногих доступных готовых решений на рынке для разработки 8-битных платформ, и их, в связке с вместе с относительно недорогим Z80, стали использовать многие производители компьютеров и приставок того периода.
За словами 'в MSX1', если кто не в курсе, кроется не один компьютер, а целый стандарт, которому следовала сотня производителей в разных странах, были выпущены сотни моделей компьютеров. Некоторые даже поставлялись в СССР, и вдохновляли уже наших разработчиков. Например, ПК8000 ещё в 1987 году пытался повторять MSX1 на советской элементной базе, и в том числе имеет сходные с TMS9918 видеорежимы (но без спрайтов), а на основе этого компьютера был сделан игровой автомат Питон, в который многие из нас играли в детстве.
Помимо MSX1, была ещё кучка других одиночных компьютеров, применявших видео, звук, или то и другое от TI-99/4, а помимо Colecovision — которая в своё время стала next gen'ом в сравнении с Atari 2600, обеспечив домашним игрокам близкое к аркадному качество тогдашних видеоигр — было ещё несколько приставок. В частности, самая первая приставка компании Sega, SG-1000. Следы совместимости с ней, а значит и разработок TI, распространились на все их последующие приставки, вплоть до Mega Drive, в котором есть полноценный аналог всё того же звукового чипа из TI-99/4. Собственно, упомянутый трекер MOD2PSG2, был разработан именно для одной из 8-битных приставок Sega (Game Gear), он просто подходит для TI/99a и других систем по причине этой наследственности.
Также существует неизвестно откуда пошедшее, но довольно расхожее мнение (может быть и миф), что разработчики видеосистемы Famicom/NES (Денди) вдохновлялись TMS9918 (и Colecovision) в качестве образца удачного решения. И если совсем уж притягивать за уши, графическое разрешение 256x192 с двумя цветами на блок 8x8 или 8x1, с внутренней разбивкой экрана на трети, появилось в TMS9918 за несколько лет до ZX Spectrum.