Войти
ФлеймФорумЖелезо

Блеск и нищета 8/16-битных консолей и ПК (66 стр)

Страницы: 162 63 64 65 66 67 Следующая »
#975
(Правка: 12:37) 12:36, 12 мая 2020

В рамках проекта Gigatron делается Бейсик с довольно интересными уже реализованными примерами.
https://www.youtube.com/channel/UCIDqjKJel_RkopewAtLbfwQ

Тема на форуме проекта Gigatron компьютера https://forum.gigatron.io/viewtopic.php?f=4&t=232


#976
17:22, 16 мая 2020

Забавно, - сначала был ZX-81 (самый дешёвый бытовой ПК), потом появился ZX-82 ZX-Spectrum, про который тут много что было написано. Менее известно, что разработчики ZX-81 делали ещё одно ответвление архитектуры, - компьютер Jupiter Ace, внутри всё тот же Z-80 и архитектура ногами из ZX-81, но вместо интерпретатора бейсика, в операционную систему встроен компилятор FORTH, что позволило ускориться в 10 раз, по сравнению с бейсиком. Интересно, так же то, что текст программ не хранился в памяти, при необходимости просмотра - программа декомпилировалась.  Всего  было выпущено около 5000 экземпляров и широкой популярности машина не набрала (да и ZX Spectrum таки был лучше в плане графики и звука).

https://ru.wikipedia.org/wiki/Jupiter_ACE

#977
18:17, 16 мая 2020

0iStalker
> в операционную систему встроен компилятор FORTH, что позволило ускориться в 10
> раз, по сравнению с бейсиком. Интересно, так же то, что текст программ не
> хранился в памяти, при необходимости просмотра - программа декомпилировалась

А ведь действительно для форта программа и текст вроде бы даже в концепции шитого кода должны легко одно в другое переводится если есть некая дополнительная таблица имён идентификаторов. С комментариями только надо еще как то заморочиться.
Действительно забавно.

#978
(Правка: 18 мая 2020, 14:04) 20:14, 17 мая 2020

Canon Cat (1987г) тоже имел Форт и встроенное ПО в объёме 256Кб :)
https://ru.wikipedia.org/wiki/Canon_Cat

P.S. Жаль, что на массовый рынок не выводили и аппаратно Форт-контроллеры (хоть у нас, хоть на западе), но в каких то специальных применениях были такие микросхемы типа RTX2010.
У Atmel в портфеле был четырёхбитный Форт-контроллер (Marc4 после приобретения Temic) с радиоканалом для применения типа для датчиков давления в шинах автомобиля.
Здесь на страничке есть статьи  про стековые процессоры из 2003 г. опубликованные в журнале "Компоненты и технологии" (TF-16 он же К1894 сделан в кремнии, но тоже не доступен)
МИЭТ Дизайн-центр «Проектирование интегральных микроэлектронных систем» (ДЦ ПМС)

А так, Форт встречается в промышленности в разных ипостасях
https://github.com/openbios/openbios
https://www.pololu.com/docs/0J40/6 The Maestro Scripting Language
www.byvac.com/forthlib
http://www.mosaic-industries.com/Products/Software/QED-forth-embe… software.html
http://strobotics.com/roboforth.htm
https://es.ua/forthlogic
http://grobots.sourceforge.net/
http://www.nncron.ru/index_ru.shtml
...  :)

#979
17:09, 29 мая 2020

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры
#980
(Правка: 12:43) 12:41, 30 мая 2020

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры
ZX SPECTRUM 1982-2016: 5½ hours with 600+ top quality colorful games!
#981
(Правка: 11:57) 11:51, 1 июня 2020

Commodore C64
там типа супер-звуковая карта,реально типа ноу-хао патенты в микросхемах,  и кто композитор сочиняет музыку они типа и сегодня используют ее как синтезатор звука.
еще он имел входы-порты и для магнитофона магнитная лента и для картриджей, и значит вероятно на картриджах существовали интерпретаторы-компиляторы  си/си++.
https://www.youtube.com/watch?v=HiQrUDIah4E
слушайте музыку Robocop3 на CommodoreC64
Jeroen Tel википедия = автор многих музыкальных треков на многих хитах от dendy  sega snes gameboy, Alien3 dendy=тоже он автор музыки

#982
(Правка: 21:16) 21:16, 3 июня 2020

Наткнулся тут (хотя вещь, судя по всему давно известная в узких кругах), как можно загружать софт в Spectrum через TAPE IN, в 10 раз быстрее, чем традиционно. Но нужно сделать снапшот оперативки в эмуляторе.

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

под спойлером длинное, нудное описание на русском (проверил, работает)

+ Показать

ссылка на бинарники и исходники https://code.google.com/archive/p/otla/downloads

#983
14:11, 4 июня 2020

Yandex Retro Games Battle 2020: новый конкурс и полезные ресурсы для разработчиков

#984
(Правка: 9:07) 9:06, 12 июня 2020

У популярного 8-битного процессора MOS 6502 не было специализированных портов ввода-вывода, поэтому всякие внешние девайсы обычно садились на шины RAM и отслеживали запись/чтение на шине адреса в определенные ячейки памяти перехватывая их проводя нужные операции с шиной данных. Т.е. порты ввода-вывода маппились в ОЗУ и это на всяких денди, эпплах и тому подобное было делом привычным.

Однако немного позже MOS выпускает апгрейженную версию MOS 6502 - MOS 6510 и именно этот процессор трудится в популярном в северных америках Commodore 64.
Если я ничего не упустил, то отличие в нём всего одно: "аппаратный" порт ввода-вывода. Причём всего один.
Работало это так, что запись в ячейку памяти с адресом 0 байта выставляло побитово для 8 специальных ножек на микропроцессоре направление ввода-вывода: на чтение (0) или на запись (1). А чтение/запись в ячейку с адресом 1 собственно производило чтение или запись в соответствующие ножки.
При этом существовали разновидности MOS 6510 с разным количеством ножек порта ввода-вывода и в Commodore 64 применялся самый популярный - 6-битовый вариант:

+ в распиновке это ножки P0-P5

Знакомые с архитектурой MOS 6502 тут заметят, что такой подход отнимает два из ценных 256 байт zero-page - страницы памяти которую этот процессор мог быстро адресовать однобайтными схемами адресации. Однако видимо инженеры и хотели скорости с одной стороны, а с другой возможно преследовали еще цель сделать MOS 6502 совместимым с MOS 6510 переделкой где такое же поведение навешивалось бы внешними схемами управления по классической схеме.
Понятно что 6 ножек прямого порта ввода-вывода были удачной вещью для микроконтроллерных применений.
В Commodore 64 же этими ножками распорядились так:
0 - LORAM: выбирает RAM или ROM находится в странице $A000-$BFFF
1 - HIRAM: выбирает RAM или ROM находится в странице $E000-$FFFF
2 - CHAREN: выбирает порты ввода-вывода или ROM находятся в странице $D000-$DFFF
3 - вывод на кассетный накопитель (Datasette)
4 - сенсор кассетного накопителя (1 = закрыто)
5 - управление мотором кассетного накопителя (0 = вкл, 1 = выкл)
Весь остальной (и достаточно широкий) спектр портов ввода-вывода внешних устройств в Commodore 64 уже маппился как понятно на память $D000-$DFFF.

#985
(Правка: 14 июня 2020, 4:49) 10:16, 13 июня 2020

ZX Spectrum Next практически весь реализован на FPGA включая процессор, поэтому в нём Z80 не только смогли повторить, но и улучшить внедрив несколько новых инструкций.
Полностью весь набор инструкций можно посмотреть тут: https://wiki.specnext.dev/Extended_Z80_instruction_set
Новые там отмечены литерой E в колонке "Status".
Все они реализованы на неиспользованных слотах расширенных команд Z80 с префиксом $ED.

PUSH imm16 - затолкать в стек непосредственное данное зашитое в инструкцию. Раньше можно было только регистровую пару.

LDWS - интересный вариант блочной инструкции, перебрасывает байт из адреса (HL) в (DE) при этом инкрементирует регистры L и... D. Т.е. только нижний байт HL и верхний байт DE. Написано что сиё полезно для заполнения графикой Layer 2.

LDIX, LDIRX, LDDX, LDDRX - аналоги старых блочных инструкций без префикса X. Все они перебрасывают байт из (HL) в (DE) и декрементируют BC. Старые инструкции без префикса X при этом - если третья буква I - то инкрементируют HL и DE, а если D - декрементируют их. Если есть префикс R, то инструкция автоматически повторяется пока BC не станет равен 0.
Новые варианты с X главным отличием имеют то, что если перебрасываемый байт равен аккумулятору A, то запись в (DE) не производится. Ну, очевидно, это у нас прозрачность при проброске битмапов можно так реализовать. Еще важное отличие, что новые команды не меняют флаги и декрементирующие с третьей литерой D увеличивают DE, а не уменьшают.

LDPIRX - еще одна новая блочная инструкция больше всего по поведению похожая на LDIRX, но не изменяет значения HL, а адрес откуда байт читается берет не просто HL, а подменяет ему нижние 3 бита нижними тремя битами DE. Т.е. HL указывает на выровненный по 8 байтам 8-байтный блок-паттерн, а DE идёт по памяти линейно и переливает этот паттерн циклически в неё. Как и написано - полезно для заливок трафаретом может быть.

ADD HL/DE/BC, A - интереснейшая экзотика - сложение 16-битных регистровых пар с 8-битным аккумулятором (беззнаково). Очень на самом деле полезная вещь, т.к. в Z80 приёмником 16-битных сложений мог быть только HL, а увеличить регистровую пару больше чем на 1 инкремент хочется нередко без длинных пробросок.

ADD HL/DE/BC, imm16 - опять таки сложение 16-битных регистровых пар с 16-битной константой из инструкции - по вышеописанным же причинам очень полезная штука.

MIRROR A - переставляет биты аккумулятора полностью задом-наперёд (0-7 в 7-0).

TEST imm8 - "тестирует" аккумулятор с непосредственным данным - выполняет AND imm16 изменяя флаги, но не меняя аккумулятор.

BSLA/BSRA/BSRL/BSRF/BRLC DE,B - сдвиги и прокрутки 16-битной регистровой пары DE на B бит. Тоже очень полезные инструкции, т.к. все сдвиги и прокрутки в Z80 сдвигали и прокручивали только на 1 бит за инструкцию, здесь же можно сразу на любое осмысленное и программируемое в рантайме число бит. Забавно что прокрутка (rotate) выражена только командой "прокрутка влево": BRLC, а чтобы вращать вправо надо выполнить её же с B=16-параметр. Еще необычным тут показался сдвиг вправо BSRF - он в отличие от сдвига со знаком всегда вдвигает в верхние разряды 1 (т.е. принудительно делает число отрицательным даже если оно было положительным). Не припомню такого где-то еще.

SETAE - очищает аккумулятор A и выставляет в нём единичный бит с номером 7-(E&7). Написано, что это полезно как маска для пиксельных режимов ULA когда в E находится координата X.

SWAPNIB - обменивает местами нижнюю и верхнюю квадры бит в аккумуляторе.

JP (C) - выполняет чтение из порта ввода с номером в регистре C и обновляет нижние 14 бит счётчика инструкций PC следующим образом: PC[13:0] = (IN (C) << 6). Вот тут я растерялся зачем оно может быть полезно и пояснение "can be used to execute code block read from a disk stream" ничем не помогло.

OUTINB - действует как OUTI, но НЕ декрементирует B, т.е. out(BC,(HL)); HL++

NEXTREG nn1, nn2 - часть новых портов ввода-вывода ZX Spectrum Next действует опосредованно через порт $243B. Сперва в него пишется номер суб-порта с которым мы работаем, а потом записывается данное которое мы в него пишем. Эта инструкция делает запись в этот порт непосредственных данных порт быстро минуя эту сложную развязку. А так это эквивалентно out($243B,nn1); out($253B,nn2).

NEXTREG nn, A - то же самое что выше в варианте out($243B,nn); out($253B,a).

PIXELDN - берёт адрес в HL как адрес в видеопамяти и обновляет его так чтобы он указывал на одну строку пикселей ниже. Тоже полезная штука, т.к. нелинейность видеопамяти спектрума и эту задачу делает нетривиальной, см. https://gamedev.ru/flame/forum/?id=226622&page=28#m410

PIXELAD - помещает в HL адрес байта в видеопамяти ULA в котором содержится точка с координатами (E,D). Ох! Это штука конечно берёт приз моих зрительских симпатий. xD

#986
11:14, 13 июня 2020

Commodore C64
https://www.mocagh.org/softguide/c64user.pdf
здесь смотрите graphics=пояснение
там морду художник от руки рисовал а потом накладывают сетку клеток засекают позиции ху пиксел на экране

типа
строка1 00111000
строка2 01100110
строка3 01100110
строка4 01111110
строка5 01111110
строка6 01100011
строка7 01100011
строка8 01100011
типа рисуется типа буква А
потом пишет типа там положить адрес1 значение 00111000

типа
move(001, 00111000)
move(010, 01100110)
move(011, 01100110)

положить в ячейку1 значение_00111000
и тд восемь раз

и таким методом типа 8х8 спрайт.

и типа снимали актеров на камеру мортал комбат и на фото укладывали такую же сетку засекать координаты. ну типа морда=от руки рисованое, а можно там прозрачная калька наложить на фото и также закрасить пикселы

ComodoreC64 использовал такой же процессор как dendy

и таким методом художник от руки карандашом рисовал на листах всю гейму персонажей уровни объекты и тд..
потом накладывали кальку прозрачную чертёжную бумагу с клетками засекали позиции точек строка-столбец , получали типа строка номер 5 + точка есть(единица) и это двоичное 5=101 и единица 01
и потом писали типа move(101, 01)
положить на строку номер5 значение единица
и так весь экран 200х300 руками программировать чуть ни каждый пиксел

и вот вы видели скажем Terminator на sega 16bit и удивлялись как блин круто в натуре там лицо арнольда шварценеггера, а это они на фотографию лица ложили прозрачную кальку и отмеряли клетками строки и точки видимые/невидимые = по сути засекали позицию ху пиксела на экране.

это сейчас товарищ =ALX= там фотку скопировал фотошоп, залепил файл photoshop, и на с++ пишет программу типа картинка поставить на позицию ху и так делает contra force возрождение на gameboy.

а в те времена каждую морду заделать=это был ручной труд. 

#987
11:28, 13 июня 2020

Rikk
> а в те времена каждую морду заделать=это был ручной труд.
https://gamedev.ru/flame/forum/?id=249672

#988
11:40, 13 июня 2020

Изображение

Однако = а почему обязательно надо руками рисовать от руки?=это совсем необязательно.
Давайте оденем человека в костюм и сфотографируем и таким методом переведем на экран.
Эти вопросы=зачем они там на камеру снимали актеров Mortal Kombat=а для этого и снимали наверно.

и подростки думали что оно супер-магия типа там чего то руками паяльник паять сам руками лепить картридж и типа гейм= всё это ошибка. никакой супер магии не было а было обычное дело типа написать программу,сделать код программы и там на экране всё бежит и прыгает.
и вы гоняли Mortal Kombat и не понимали = во блин, мужик в натуре на экране натуральный.
Ну и таким методом всё делали.

Еще наверно надо иметь такое понимание.
Экран был типа 300х200=60тысяч точек=60кило.
Одна точка =один бит  видимо невидимо(или 0 или 1).
Скажем 16цветов а это 4бита (два в степени четыре=16)
Одна точка=один пиксел=пять битов=5 битов(один бит это включать и выключать точку видеть или не видеть на экране. +4бита цвет=1+4=5битов)
Значит экран=60К*5битов=300 кило битов
Делим на 8=получаем байтов=300/8=40 кило байтов один экран
Это сейчас супер экран 2к*2к прожирает гигабайты памяти

Итак, 1экран=40Кб
Геймы тогда были небольшие типа один уровень=5 экранов=200Кб один уровень
И типа 4 уровня на всю гейм=4х200Кб =800Кб=1 Мега байт.
И то это сокращали размер. Скажем один экран это дорога и три дома улица=это экран 40Кб. Повторить это 4раза=улица длиною 4экрана=это те же самые 40Кб повторять =один уровень.

Ну и тогда говорили=во блина,крутая штука , и всего 0.5...1 Мега байт.
А сейчас говорят=фууу, гавно Unity напихали 40Гигабайтов а оно гавно лажа полная отстой, и гейм-девелопинг отстой гавно.Зато сейчас не надо лицо персонажа типа 30х30 каждый из девятьсот пикселов делать ручной труд.

#989
(Правка: 11:59) 11:56, 13 июня 2020

Ну и консоли эти dendy, gameboy и тд...
Логически получается так=кто автор создатель =он по любому подавал компьютер для разработки=тот же самый процессор,нужный ассемблер,наборы нужных библиотек программ и тд..
То есть для dendy/game boy= по любому должен существовать некий компьютер от Nintendo пакет разработчика SDK с тем же процессором,подобною схемою работы и тд..Или некие инструкции спецификации позволяющие делать на другом компьютере нужные эмуляторы системы, после чего этот файл программаторами заливали на заводах в микросхемы картриджей.
Почему про эти dendy/gameboy мало информации?- ну это все таки бизнес и деньги ,а своё дело надо сберегать и охранять, мало ли какие условия договоров там молчать,хранить секрет производства, не болтать. А то расскажет как производил гейм на dendy/gameboy и пожизненно сядет.
=A=L=X=
> https://gamedev.ru/flame/forum/?id=249672
ну судя по скрытным собщениям = дело было реально жесть. +конкуренция чтобы не выбили из рынка.только представьте какие непосильные труды прикладывал человек.
А сегодня — фуу,юнити не понимаю,гавно,отстой.
ну и в общем эта поговорка=ты человек , век живи и век учись.

Страницы: 162 63 64 65 66 67 Следующая »
ФлеймФорумЖелезо