LINUX.ORG.RU

Ретропрограммирование

 ,


0

4

Наверное без @lenin386 никак

Вот был (есть, жив) Спектрум, 3.5 Мгц. И надо на нём вывести 50 кадров в секунду. 3500000/50 - 70000 циклов. В каждом кадре нужно залить 6кб. На каждый байт получается по 11 циклов. Это две-три инструкции. Даже если допустить что некоторые байты можно пропускать как неизменённые, не 3 третей рисовать а 1-2, не 50 кадров а 25 - всё равно не густо. Что делать? Висит все

что ты мне клоунов ставишь-то? ты сам клоун со своим спектрумом и непосильными для него задачами.

купи вон платку на али на stm32 и программируй ее до опупения. хоть толк будет. а от этого некрокодинга толку примерно ноль с минусом.

alysnix ★★★
()
Ответ на: комментарий от alysnix

толку примерно ноль с минусом

а самолюбование уже не считается? Представь, потеребонькал ты перед сном и за минуту до отхода к Морфею, тебя посетила шальная мысль, а не напрогать ли чего-нибудь для спектрума? Круто же, ты такой спец - куда деваться, таких больше не делают, уникальное явление. С утра ты идешь на форум и заявляешь намерение - хочу напрогать для спектрума. Вот представь, ты еще ничего не сделал, даже мануал не открывал, виртуальную машину не запускал, а уже приобщился. Пол дела сделано буквально. Уже наполовину можно себя хакером считать. Ну и хер с ним, что дальше темы на лоре дело не пойдет, это неважно, дофамин уже выделился.

FishHook
()

На каждый байт получается по 11 циклов. Это две-три инструкции.

Это _одна инструкция, и то не самая сложная. В Z80 4 такта - минимальное число циклов на инструкцию, и надо понимать, что столько исполняется очень небольшое количество инструкций, работающие только с регистром А и более ни с чем. Любое обращение к памяти _человеческим образом - _минимум, 13 циклов на команду, 16 циклов при 16-м битном обращении. При этом надо понимать, что сначала надо загрузить из памяти в регистр, потом, из регистра в память. Поэтому, при человеческом подходе, ничего не выйдет.

Однако, есть некоторые хитрости. Пойми правильно, эти приёмы - дерьмо. Но в среде т.н. хэкеров - ценятся. Если предварительно сформировать специальным образом последовательность кадров (точнее, последовательность команд) где-то в памяти, то вывести 50 Hz full screen - реально. Есть такая замечательная команда - push. Она исполняется как раз 11 циклов, на два байта - не плохо. Ставишь стек на конец экрана, формируешь в памяти последовательности LD HL, NN (10 тактов); PUSH HL (11 тактов), запускаешь на исполнение. Вот, и уложишься. Даже остаётся чуть-чуть на переключение банков. Только это дерьмо. Ничего, кроме «я смог», это не представляет. Практической пользы - нуль.

Сейчас даже демомейкерам говорят - не делайте 50HZ, оно только оперативу выжирает, и кого вы сейчас этим удивите? Нет, делают.

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 10)
Ответ на: комментарий от anonymous

16 FPS считалось очень хорошей скоростью для игор.

Скорее даже 4-8, вот цитата из книги Сида Мейера:

Мы решили отследить частоту кадров в наших играх, и она оказалась не очень-то высокой. Даже первоначальная версия моей игры по вселенной «Звездный путь» на серверах General Instruments работала с той же скоростью, хотя по сложности перемещение текста было, конечно же, несравнимо с поворотом склона горы. Другие игры, сделанные нами в MicroProse, шли с большей частотой, но минимально допустимой оказалась частота 4 кадра в секунду. С более низкой частотой игры становились неиграбельными.

В Gunman у нас была частота 3 кадра в секунду.

masa ★★
()
Ответ на: комментарий от alysnix

А разве можно помочь человеку сошедшему с ума (ни в коем случае не считаю, что такая помощь нужна открывшему эту тему) как-то кроме как вызвать скорую и положить в больничку?

unDEFER ★★★★★
()
Ответ на: комментарий от alysnix

Есть такая штука, как ностальгия.

Если использование компьютера некоей эпохи в твоей жизни связано с приятными воспоминаниями, то у тебя будет желание вновь обзавестись подобной железкой, потому что ты знаешь, что с ней делать, потому что посиделки с ней и чаем будут вызывать в памяти воспоминания и ассоциации с тем периодом жизни, и на душе будет хорошо, и олдскулы сведёт.

А если не обзаводиться такой железкой, то будет чувство неудовлетворенности, будто что-то очень важное упустил в своей жизни.

anonymous
()
Ответ на: комментарий от Irma

Больше 7 Mhz реального железа нет, за исключением любительского творчества в единственном экземпляре и известно, какой стабильностью и воспроизводимостью. FPGA не считается, это - эмулятор. Что такое 7Mhz? 7 Mhz уже хватает, чтобы прочитать Floppy на 1.44. 7 Mhz хватит, чтобы перенести предварительно собранный экран за 1/50с c помощью LDIR. Однако, и в этом практического смысла очень мало. Всё это настолько слабая техника, что сейчас даже осознать тяжело.

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 2)

Меня больше интересует как ты собрался формировать то, что будешь выводить. Заранее всё подготовить для 1 секунды будет весить 300к. Т.е. нужно генерировать на лету. Это явно не 2-3 инструкции на байт.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Никак. Поэтому, как сказано выше, бессмысленные упражнения. В реальности, в реальных приложениях, приёмы будут совсем другие. Там уже в зависимости от приложения будут и приёмы, однако, элементы могут быть использованы. Например, цепочки push-ей могут использоваться для заливки, цепочки LDI для быстрого перемещения. Алгоритмы получаются сложными и громоздкими, без хорошего макроассемблера сложно. Это для дем, для эффектов. Для приложений - сложно придумать применение - выжырают память и данные надо готовить.

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 1)
Ответ на: комментарий от lenin386

вон даже товарищ Ленин против меньшевистской авантюры топик стартера.

мы пойдем другим путем! - как бы говорит он, и предлагает просто купить у Партии платку с копеечным микроконтроллером и не позорить борьбу пролетариата.

alysnix ★★★
()

(есть, жив) Спектрум, 3.5 Мгц. И надо на нём вывести 50 кадров в секунду.

А зачем «надо»? Спектрум управляет телевизором, если надо управлять телевизором, берём Репку Пи и управляем.

Shushundr ★★★★
()

Ну, Ленин уже расписал чуток... Данные нужно сначала в регистры откуда-то загрузить, потом в экран положить. Загружать быстрее всего либо POP, либо LD r/rr,XX. Ну и выгружать так же LD, push.
Сможешь в такие ограничения втиснуться, получишь максимально возможную скорость. Но честно 50 фпс фулскрин с нормальной графикой получить нереально.
Я делал, но читил )
Другие тоже делают, и тоже читят - не весь экран, паттерны...

GAMer ★★★★★
()
Ответ на: комментарий от luke

А как же кружки по интересам? Я тут был на форуме демосценеров они там 10 страниц обсуждали как спираль рисовать. Вроде бы, бери да рисуй, но там как и тут случай когда что-то в лоб сделать нельзя, и нужно делать художественные хак кульбиты, когда выглядит как надо, а внутри происходит вообще не очевидное вроде рисование спирали как 2D проенкцией, 3D объекта, который является проекцией 4D объекта :D

Так и тут, делать заливку 6кб данных в каждый кадр может быть и не нужно, если в кадрах много похожего, то кадры можно для начала превратить в diff друг друга, как минимум это сожрёт фоновую заливку если она есть. Если есть какие-то фигуры статичные, то их может быть будет быстрее рисовать вычисляя, например квадратик, чем заливать готовые данные и так далее и так далее, а потом набором вот таких приёмов выжать шестьдесят пер секонд и у всех челюсть отвиснет со словами «КАК!», а как внутри, где много интересных приёмов.

Это типа как решать головоломки, потратишь лишние такты/байты на одно, не хватит на другое. Мне кажется в ретропрограммировании это вся суть, простых путей просто нет. Всё должно быть согласованно и притёрто и идеальный монолит.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от anonymous

Всё это одна большая куча, будешь где то на заводе где стиральные машинки делают современные и тебе задут ТЗ, вот мол экранчик, а вот чип слабее спектрума в 2 раза, зато дешёвый и надёжный, на нём надо будет выводить данные и ещё анимировать. И будешь заниматься тем же самым в продакшоне. Любая дичь в любой момент может стать современной и актуальной в любой момент и где угодно, а алгоритмы порой машинно независимы, в них идея, а реализацию можно и на другие вещи переложить.

А есть ещё человеческое удовольствие, просто нравится и всё. И контр аргументов у тебя на это не будет, а лишь, «херня»,«пердолинг» и «стюардесса»

Вот окажешься в порганичных условиях когда у тебя ресурсов мало и надо внихнуть невпихуемое, или когда у тебя ресурсов море и экономия на спичках даёт многомиллионную экономию, вот тогда по другому заговоришь.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от luke

Ну, может выложит мол, «Я вот так пытаюсь сделать, но невлазит» :) Но как я понял пока всё ограничивается расчётами на калькуляторе, что в принципе имеет смысл, так как начни делать он сейчас в лоб, то и получит свои 3 фепеса и надо будет переделывать причём всё.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от GAMer

Ну, пусть пытается, возможно миссия изначально обречена на провал.
Я так, поддержать. Вдруг сможет. А потом будет хвалиться, смотрите я сделал, я молодец и радоваться. И мы радоваться будем :) Каждый по своему конечно, кто клоунами припудрит, кто-как, зато всем будет весело. Ну и хорошо.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от FishHook

Регистрант, ты правда считаешь, что написав издевательский комментарий по отношению к вопросу ТСа, ты первым откликом получишь что-то более внятное, чем издевательски заданный вопрос непонятно кому?

hobbit ★★★★★
()
Ответ на: комментарий от Zhbert

А по-моему в этом совете есть здравое зерно. Просто оно не развёрнуто.

Обычно подобными вещами начинают заниматься из интереса, от скуки — ради новых челленджей, которых ты не получишь с программированием под обычное современное железо. В преодолении таких проблем и состоит весь кайф — в нахождении решения самостоятельно и получении соответствующей дозы нейромедиаторов, в том чтобы почувствовать, что ты смог, не тупой, сообразил что-то хитрое, превзошёл ограничения.

Но если первая же возникшая проблема вместо раздумий над тем, как её решить, или хотя бы, если идём путём познания пройденного, вместо изучения, как это преодолели другие, по чужому коду и прочему, ведёт на ЛОР задавать вопрос «чо делать», то наверное изначально не стоило начинать страдать этой хернёй.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 2)
Ответ на: комментарий от hobbit

Да он же местный душнила. Вроде поэтесс еще не просит, но юмора нормального не понимает и мамой клянется что он цветочек завянет от токсиков в чате

anonymous
()
Ответ на: комментарий от CrX

«Не согласная я». Новые челленджи совсем не означают, что надо бросаться в крайности и совсем всё делать в одну харю. Линус тоже, как и Ньютон, стоял на плечах гигантов, о чём прямо написал в JFF.

А

на ЛОР задавать вопросы

это и есть одна из форм

изучения, как это преодолели другие

Вполне практичная. Чем собирать информацию по крупицам, можно спросить на форуме, особенно на том форуме, где присутствует автор Глюкалки. :)

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

Линус тоже, как и Ньютон, стоял на плечах гигантов, о чём прямо написал в JFF.

Вот тут уже я не соглашусь, что это хорошее сравнение. Линус делал хоть и JFF, но что-то новое, практически полезное и на актуальном железе. Ретропрограммирование — это про другое, от него практической пользы нет, это челлендж ради челленджа.

Новые челленджи совсем не означают, что надо бросаться в крайности и совсем всё делать в одну харю.

В одну не обязательно, конечно. Но фиг знает… Тут кому как, наверное. Просто это ведь совсем начального уровня проблема, а не как сделать вместе что-то, чего до этого никто не делал. Ну и тут, наверное, кому как, конечно. Я вот ромхаккингом иногда занимаюсь для NES и SMD, и делаю всё именно в одну харю, потому что иначе неинтересно: непонятно, зачем вообще этим заниматься — это как решать судоку, кроссворд или шахматную задачку, сразу заглядывая в ответы. Для меня именно такие занятия как-то так воспринимаются (в отличие от того, что делал Линус, или даже от того, когда я пишу очередную утилитку на питоне, например).

CrX ★★★★★
()