Немного про случайные числа.
Как известно, компьютеры по большей части не генерируют истинно случайные числа. Для генерации обычно пишут специальную функцию, которая берет за основу либо текущее время, либо какие-то другие непредсказуемые для пользователя значения из регистров памяти.
Вот и я столкнулся с такой проблемой. В Commodore Basic есть встроенная функция, которая генерирует случайные значения. Но проблема в том, что бейсик я отключил, чтобы осталось больше памяти для программы на ассемблере.
Поэтому на помощь, как ни странно, пришел звуковой чип 🎚
Как известно, компьютеры по большей части не генерируют истинно случайные числа. Для генерации обычно пишут специальную функцию, которая берет за основу либо текущее время, либо какие-то другие непредсказуемые для пользователя значения из регистров памяти.
Вот и я столкнулся с такой проблемой. В Commodore Basic есть встроенная функция, которая генерирует случайные значения. Но проблема в том, что бейсик я отключил, чтобы осталось больше памяти для программы на ассемблере.
Поэтому на помощь, как ни странно, пришел звуковой чип 🎚
Я не очень разбираюсь в звуке и музыке, поэтому напишу своими словами )
В звуковом чипе есть 3 дорожки, в каждую из которых можно записать последовательность нот. При этом можно изменить форму сигнала. Одна из форм сигнала - шум, и SID его генерирует случайным образом.
В общем, суть ясна. Мы включаем третью дорожку, дабы две другие остались для звуков и музыки. Накидываем на дорожку шум с максимальной частотой. А потом из специального регистра считываем случайное значение от 0 до 255.
В звуковом чипе есть 3 дорожки, в каждую из которых можно записать последовательность нот. При этом можно изменить форму сигнала. Одна из форм сигнала - шум, и SID его генерирует случайным образом.
В общем, суть ясна. Мы включаем третью дорожку, дабы две другие остались для звуков и музыки. Накидываем на дорожку шум с максимальной частотой. А потом из специального регистра считываем случайное значение от 0 до 255.
Потом полученное число можно модифицировать (например, если надо получить число от 0 до 31, то просто отсекаем 6-8 биты случайного числа побитовым И).
This media is not supported in your browser
VIEW IN TELEGRAM
И главный экран игры готов. На два вида машин ушло 8 изображений, так как они состоят из двух спрайтов (всего 64*8=512 байт), и разнонаправленные машины - это тоже разные изображения, а не отражения. При появлении новой машины меняется ее цвет на случайный (всего 7 цветов). Ну и направление движения тоже выбирается случайным образом.
👍2
Подошел только что ко мне коллега, которому уже лет под 70 наверное. Но он очень активный, активнее меня в 29. Тоже программист.
Говорит: нашел твою статью на DTF, классно пишешь)
Речь про это: https://dtf.ru/u/34713-aleksandr-logachev/1917240-commodore-64-issledovanie-dolin-pamyati.
Я, конечно, немного офигел от такого поворота событий, но было приятно☺️
Возникает вопрос: стоит ли поменять имя канала, прежде, чем на работе узнают, как он называется?)
Говорит: нашел твою статью на DTF, классно пишешь)
Речь про это: https://dtf.ru/u/34713-aleksandr-logachev/1917240-commodore-64-issledovanie-dolin-pamyati.
Я, конечно, немного офигел от такого поворота событий, но было приятно☺️
Возникает вопрос: стоит ли поменять имя канала, прежде, чем на работе узнают, как он называется?)
DTF
Commodore 64, или как я перестал бояться и полюбил оперативную память — Александр Логачев на DTF
Не так давно я приобрел Commodore 64. Он довольно долго стоял и пылился, ждал своего часа. И вот наконец-то я подключил к нему старенький ламповый монитор и купил аудиокассеты.
👍1
Ладно, что-то я совсем отошел от названия. Вторая половина уже давно перевесила первую. Так что тут два варианта:
- менять название;
- выпить наконец-то пивка и написать про него.
Так что на выходных будет обзор на какое-нибудь пиво 🍺
- менять название;
- выпить наконец-то пивка и написать про него.
Так что на выходных будет обзор на какое-нибудь пиво 🍺
❤2
А вот блин и без пива =(
Но зато сделал уже довольно много для игры.
Теперь можно остановить машину и проверить права, которые могут быть фальшивыми (всего доступно 32 легальных документа. Можно и больше, но пока берегу память).
Для проверки документов надо зайти в базу данных, в которой уже можно пролистать все 32 документа и сравнить поля.
Но, документов для проверки будет два: права и регистрация. Пока что готовы только права.
Ну и пока что не готовы основные функции: отпустить, выписать штраф и попросить взятку.
Но зато сделал уже довольно много для игры.
Теперь можно остановить машину и проверить права, которые могут быть фальшивыми (всего доступно 32 легальных документа. Можно и больше, но пока берегу память).
Для проверки документов надо зайти в базу данных, в которой уже можно пролистать все 32 документа и сравнить поля.
Но, документов для проверки будет два: права и регистрация. Пока что готовы только права.
Ну и пока что не готовы основные функции: отпустить, выписать штраф и попросить взятку.
👍2
И на все это ушло больше 1500 строк кода (а в ассемблере такие длинные программы - это норма) и 4,36 Кб памяти. Основной объём памяти занимают текст и код программы. Графика же в сравнении практически ничего не весит.
🤯1
С тех пор, как я приобрел себе Commodore 64, на моем телефоне внезапно начали появляться эмуляторы разного старого железа.
Конечно, это вообще нельзя сравнивать с реальным компьютером, и даже эмулятор под Windows будет более удобным.
Но если нужно что-то быстро проверить, то мобильный эмулятор справляется очень неплохо
Конечно, это вообще нельзя сравнивать с реальным компьютером, и даже эмулятор под Windows будет более удобным.
Но если нужно что-то быстро проверить, то мобильный эмулятор справляется очень неплохо