Кстати, насчёт гейминга... советский ответ NES был таким, - http://www.emuverse.ru/wiki/ТИА-МЦ-1 , тоже на i8080 (не как NES, а как многие другие советские ПК), но только в компоновке аркадного игрового автомата. В формфакторе консоли оно наверное космических денег стоило бы и размером с чемодан.
0iStalker
физика в совковом бильярде просто зашкаливает)
=A=L=X=
> того что можно было и как выдавить из спикера компьютеров IBM-PC:
Драйвер на РС спикер под винду был раньше, любой звук ШИМом выводился, можно было даже мр3 слушать)
Tonal
> Драйвер на РС спикер под винду был раньше,
Винду?
Винда появилась только через 20 лет от обозначаемых событий. О каком "раньше" идёт речь?
P.S.
Если сместить ударение со слова "раньше" на "вообще", то тода да, соглашусь.
Каково это — создавать игру для Game Boy в 2017 году (Перевод)
Один и тот же процессор (видоизменённый Z80 или 8080) у GameBoy и в GameBoy Color (4, 8Мгц) а также как сопроцессор для GameBoy Advance.
KPG
> Один и тот же процессор (видоизменённый Z80 или 8080)
Я его подробно рассматривал тут: https://gamedev.ru/flame/forum/?id=226622&page=21#m302
Забавный зверь.
Просто повторю еще раз, ибо, имхо, незаслуженно оно попало на предыдущую страницу:
На PC с его аппаратным программируемым таймером это было шутя,... на других платформах приходилось считать такты вручную
ZX Spectrum
PC
Наткнулся тут на упоминание компьютера BBC Micro 1981 года выпуска и удивила одна его мощная черта.
Первые версии его были реализованы на MOS 6502 работавшем на 2 МГц. ОЗУ от 16 до 32 Кб (версии A и B соответственно). ПЗУ - 32 Кб, причём они лежали в верхней части адресного пространства и нижние 16 Кб из них могли быть перемаплены, например, на картриджи расширения, которые можно было вставлять.
И вот верхние 16 Кб ПЗУ содержали ОС "Acorn MOS", где было много полезных базовых функций, а встроенные 16 Кб нижнего ПЗУ содержали по привычной для того времени схеме интерпретатор BASIC - собственно "BBC Micro Basic".
И вот он был весьма забавным зверем для своего времени и платформы.
Большинство других популярных 8-биток либо имели один из многочисленных, но очень похожих вариантов Microsoft Basic (как, например, Apple II или Commodore 64), либо что-то кастомное, но в сильной степени заимствующее основные черты Microsoft Basic (как в ZX Spectrum).
Это были всё классические бейсики 1.x, как я еще их называю "неструктурированные бейсики".
Программирование на них во многом напоминало программирование на ассемблере процессоров как раз типа MOS 6502.
По сравнению с современностью ярко выраженные черты такого программирования это:
а) отсутствие локальных переменных
б) подпрограммы можно вызывать оператором GOSUB и можно из них возвращаться оператором RETURN, но нет (а), поэтому параметры передаются в глобальных переменных и ими же возвращаются (кроме того, в отличие от ассемблера, они даже не поименованы, а просто указывается номер строки программы куда происходит переход)
в) из инструкций передачи управления только IF/THEN (чаще всего без ELSE), FOR/NEXT и GOTO. Важно заметить, что многострочность поддерживалась только в FOR. Оператор IF же обрывался на конце строки, поэтому чтобы не плодить сверхдлинную лапшу из операторов в одной строке разделенных двоеточием GOTO множились без конца.
г) определение функций оператором DEF FN по сути было только способом сокращать использование часто используемых формул в выражениях, ибо могли задавать только одно выражение с параметрами и опять таки в одну строку, без операторов.
Все эти особенности очень сильно подрывали удобство программирования и поэтому Бейсик в BBC Micro был поистине передовым для своего времени и платформы.
Во первых - он поддерживал создание полноценных процедур с параметрами оператором DEF PROC. Причём у процедур были и имена (всегда должны начинаться на 'PROC') и параметры и они могли быть многострочными (завершались оператором ENDPROC). То же самое касалось и функций определяемых привычными DEF FN.
Однако с этим была связана одна забавная особенность, видимо экономия на спичках - если однострочные процедуры или функции можно было размещать в любом месте программы, то многострочные страдали немного от одного упрощения - встретив DEF PROC в начале или середине программы интерпретатор бейсика автоматически отбрасывал только эту самую строку с DEF FN и ни разу не пытался пропускать следующие строки до встречи ENDPROC - то есть просто начинал выполнять следующие строки многострочных процедур или функций как основную программу. Это скорее всего означало сбой. Поэтому многострочные процедуры следовало всегда размещать в последних строках программы. В процедурах можно было даже делать локальные переменные оператором LOCAL! При этом для совместимости с MS-like диалектами поддерживались конечно и GOSUB со всей их неприглядностью.
Во вторых - он поддерживал самый настоящий встроенный ассемблер! Это уже почти за гранью, но написав символ [ интерпретатор переходил в режим компиляции ассемблера 6502 (что заканчивалось при встрече символа ] ) и начинал компилить код, который потом можно было вызывать или функцией совместимой с USR или оператором CALL.
Забавно то куда происходила компиляция и как происходила интеграция с таким асмокодом.
Во первых - помимо произвольного количества вещественных или строковых переменных бейсик BBC Micro содержал жёстко прошитые целочисленные переменные с однобуквенными именами от A% до Z% (знак % в конце как раз означал целочисленность). Во первых - они были заметно быстрее по сравнению с вещественными переменными без префиксов. Лежали по фиксированным адресам и даже не стирались при запуске программы начисто оператором RUN. Во вторых - часть из них в некоторых ситуациях начинала играть особую роль.
Так при встрече [ из переменной P% брался адрес в который сейчас надо компилить последующий асмокод (аналог инструкции ORG в асмах вообще).
Кроме того при вызове асмокода через CALL в 8-битные регистры A, X и Y процессора MOS 6502 записывались нижние байты из переменных A%, X% и Y%.
Забавно как именно выбирался адрес для P% куда компилить код.
У оператора аллокации массивов DIM A(size) была особая форма - DIM A size (без круглых скобок).
Она приводила к тому, что в свободной памяти резервировалось size байт, а в переменную A записывался адрес начала этого куска байт. То есть самый настоящий malloc!
Нужно было еще вычислять минимально необходимый размер этой области для куска асмокода, увы вручную, но сама аллокация и запись нужного значения в P% перед асмокодом было уже вещью тривиальной.
Хотя можно было и просто писать по фиксированному адресу, ограничив область бейсика, как это тоже было принято в тех компьютерах.
В общем, довольно забавные и весьма себе расширенные возможности для 8-битного васика.
Из обсуждения текста выше в мессенджере:
=A=L=X=
> Крутой обзор и практика (!) того что можно было и как выдавить из спикера
> компьютеров IBM-PC
Меня в свое время поразила эта игра:
Может чисто технологически это проще чем у чувака, т.е. трекерный звук против видимо оцифрованной готовой записи, но результат - несравненный. Когда я первый раз услышал настоящий голос из PC спикера, моя челюсть пробила пол.
ЗЫ: А, про нее уже у Сталкера в видосе есть, не заметил..
jaguard
> Когда я первый раз услышал настоящий голос из PC спикера, моя челюсть пробила пол.
Я слышал однобитовые самплы и на спектруме и на денди, поэтому на PC уже было как данность.
Очень важна еще инерция спикера или колонки - за счёт неё однобитовый звук можно сильно обогащать, чем там пользуются тоже.
В очередной раз копал инфу по чиптюнам, нарыл вот это. Оказывается клоностроение спектрумов, с расширениями, это не только в странах (бывшего)СССР практиковалось http://speccy.info/Sam_Coupé; тут звуковой чип изначально 6 канальный и стерео.
А вот тут можно скачать эмуляторы/послушать - https://velesoft.speccy.cz/saa1099-cz.htm https://zxart.ee/eng/music/top-100/sam-coupe/
зы.
А вот формат файлов-модулей чёт нигде нагуглить не могу, печалька. Проигрывается ZXTunes'ом, который доступен в исходниках, правда на С++, не на Си
ззы.
Вот ещё руководство по программированию для этого "Семёна Купэ" http://www.podboy.demon.co.uk/coupe/pdfs/coupe.pdf
зззы.
А самое забавное, что на отечественный клон ATM-Turbo2+, походу, портировали софт именно с этого "Семёна", ибо наличие там и там вот этой игры, с упоминанием EGA графики, намекает - https://www.worldofsam.org/products/prince-persia