Space Inviders в 512 байт
Игру Space Inviders запихнули в 512 байт на ПК. Кто повторит на калькуляторе? Места даже на слабых моделях достаточно.
- Serguei_Tarassov's blog
- Log in or register to post comments
- 1250 просмотров
Игру Space Inviders запихнули в 512 байт на ПК. Кто повторит на калькуляторе? Места даже на слабых моделях достаточно.
Комментарии
Место
Permalink
Места и скорости достаточно. Размер индикатора подкачал.
Скорость
Permalink
В DM42 достаточно всего, в том числе разрешения экрана, но писать на асме под него - не, не в этом тысячелетии :)
Устранение заблуждений
Permalink
Когда я основал школу хэкеров в 1996 году, на сцену выскочило много громких фриков со своими лже-теориями. Некоторые из этих воров лижут до блеска зады своим правительствам, получая финансирование из бюджета как за свой бред, так и за свои низкие моральные качества.
Одно из заблуждений, распространяемых скудоумными имитаторами computer hacking — то, что якобы ассемблер «устарел» и «не нужен». Удивительно, сколько умных людей попадают под влияние этих лживых негодяев, со своими низкими «пределами развития», на дореволюционном уровне розг и лучины.
На деле же ассемблер — язык, который необходим всегда. Люди, владеющие им, важны для человечества и своих народов. В этом тысячелетии также нужны, как и в прошлом. Уровень чуть выше оборудования никуда не делся и не денется.
Да, программисты на Питонах и плюсах — более многочисленная категория. Но если всех программистов на асме истреблять и подвергать общественному осуждению, к чему стремится в России продавшееся ламерьё в погонах, некому было бы писать, например, прошивки DM42 и МК-161, а также компиляторы под них.
Если брать тот же eForth 5.2 под Windows, то даже там есть 71 слово, написанное на ассемблере. Без знания ассемблера невозможно написать востребованный компилятор Си — или бэкэнд коллекции компиляторов. Задачки, вроде той, про которую рассказал Арбинада, помогают совершенствовать своё искусство хэкерам 5 уровня, которые нужны человеческой культуре не менее, чем более распространённые (и более дешёвые по з/п) ЯВУшники.
О чем это вообще?
Permalink
О чем это вообще? Я где-то сказал, что ассемблер устарел?
Не устарел.
Permalink
Такое читается в пассаже про «это тысячелетие». Если не имели этого в виду, прошу прощения.
В этом веке и, возможно, в последующих, ассемблер людям пригодится.
Тысячелетие
Permalink
"Тысячелетие" было только в контексте того, что я вряд ли найду время на такой челлендж с DM42. Против ASM-а не имею ничего, хотя за последние 20 лет зарабатывания на жизнь 99.9999% времени провел под ЯВУ.
Удобство
Permalink
Ну, 512 байт-то я бы написал, если "на борту" или на компе без хитрых операций заливки. Вопрос именно в удобстве использования ассемблера на устройстве. На ПК это удобно, например, на написание тестовой программки для "Счастливых билетов" ушло пару-тройку часов вместе с гуглением нужных функций.
Согласен
Permalink
Согласен - на ПК это удобно, на том же DM42 придется ставить на компьютер SDK (который только на Си) и разбираться с почти недокументированным железом.
SDK
Permalink
Если SDK основан на GCC, в этой коллекции компиляторов есть ассемблер. Разбираться с железом или функциями SDK, конечно, придётся.
SDK
Permalink
Да, SDK на базе ARM-GCC. На Гитхабе швейцарцев есть SDK, демо и Free42 фронтэнд для DM Calculator Platform (DMCP), которая есть ОС калькулятора.
Собственно, вся доступная документация о доступе к железу калькулятора - файл dmcp.h. Как именно использовать железо низкоуровнево - скрыто от пользователя.
Компилятор
Permalink
Хороший пример того, что современные компиляторы зачастую эффективнее "ассемблинга вручную"
Бесспорно
Permalink
Смотря кто программирует. Можно же за основу взять ассемблерный код, в который скомпилирован код на ЯВУ. Но задачки на 512 байт это не про скорость. Асм не предназначен для решения всех задач. Просто у него есть своя, важная ниша.
Ко второму комментарию — в этом тысячелетии ассемблерный код часто вызывает сишные системные функции, а не обращается к железу напрямую. Это оставляет за производителем свободу дорабатывать железо, поддерживая стандартное API.
Например, eForth 5.2 компилируется MASM’ом, который раскопали внутри Visual Studio 2015 Community Visual C++. Из консольного приложения C++ ассемблерный код вызывает API Windows, используя библиотеку третьей стороны для программирования на ассемблере под Windows.
512 байт
Permalink
Согласен - для задач типа "втиснуть что-то в 512 байт" только ASM
512 шагов
Permalink
Вполне возможно, что входного языка ПМК может хватить. Он часто выразительней ассемблера и достаточно быстр, если есть возможность не выводить спрайты по точкам.
Увы, на моих МК-161 индикатор 128×64 слишком мал для таких извращений.
Space Invaders in Proteus
Permalink
В примерах программы Proteus (симулятор электронных схем с микроконтроллерами) - он есть :)
https://ibb.co/Njt6xzR
P.S. https://www.youtube.com/watch?v=TOVJA7Op8Ac
6×3
Permalink
Да, так может получиться на монохроме 128×64. Три ряда по 6 врагов.
В таком случае можно даже спрайты в 11px из поста заимствовать. Разумеется, убрав цвет.
Схему МК-161 c родным контроллером в Proteus
Permalink
вероятно можно и просимулировать.
Можно
Permalink
Если это поможет написать свою прошивку — отличная идея! Тот же 161eForth очень легко должен лечь в ПЗУ контроллера. Для этого даже не придётся делать плавучку.
Можно применить и другой контроллер экспериментально
Permalink
в конструктиве совместимости электрически и конструктивно (PLCC44)
например Atmega162 (но они, сейчас посмотрел, в TQFP44)
P.S. Под данный контроллер у меня есть и собранный AmForth :)
а также под Atmega8515, но для ядра amForth это уже достаточно мало (Atmega64 уже наверное за глаза)
и, например, в рамках такого решения сделать поддержку команд ПМК.
Более Флэш ёмких контроллеров с поддержкой внешней памяти и в формате PLC44 вроде нет в номенклатуре Atmega (может через какой то переходник есть решение)
У меня в программаторе Mini-pro TL866 нет поддержки 51-х контроллеров от Nuvoton, но они должны программироваться Софтом по последовательному каналу (вроде ного P4.3 к земле), но ещё не проверил это.
В качестве 51-го можно посмотреть использование At89C51, но там памяти только 8Kб (имеющиеся в Чип и Дип)
А толку?
Permalink
Можно. Но пока никто не документировал, как происходит чтение нажатой клавиши и отображение информации на индикаторе МЭЛТ. Замена камня на другую архитектуру эту главную проблему не решит — к УВВ обращаться из нового камня придётся. И наоборот, документирование аппаратного уровня решит проблему с написанием прошивки для того камня, который есть.