Наконец-то настало время заняться игрой=)
Ну и я сделал две очень важные вещи.
Во-первых, прописал код для death state в случае смерти игрока.
Пришлось немного помучиться, потому что код изначально не предполагал сброс всех характеристик до изначального уровня. Теперь все мигает красно-красным и уходит в реинициализацию игры.
Во-вторых, наконец-то дорисовал все оружие и переделал гвоздомёт (хотя и это не окончательный вариант). И решил, что неплохо было бы добавить больше деталей на окантовку игрового экрана. Ничего лучше трещин, потертостей и сколов я не придумал. Но выглядит, вроде, неплохо
Теперь всю эту графику надо перенести в игру, а потом уже заняться созданием уровней.
Ну и код для побега из битвы все еще не написан...
Ну и я сделал две очень важные вещи.
Во-первых, прописал код для death state в случае смерти игрока.
Пришлось немного помучиться, потому что код изначально не предполагал сброс всех характеристик до изначального уровня. Теперь все мигает красно-красным и уходит в реинициализацию игры.
Во-вторых, наконец-то дорисовал все оружие и переделал гвоздомёт (хотя и это не окончательный вариант). И решил, что неплохо было бы добавить больше деталей на окантовку игрового экрана. Ничего лучше трещин, потертостей и сколов я не придумал. Но выглядит, вроде, неплохо
Теперь всю эту графику надо перенести в игру, а потом уже заняться созданием уровней.
Ну и код для побега из битвы все еще не написан...
🔥5❤3💘2
И только что понял, что, во-первых, надо менять цвет рамки после мерцания экрана при смерти.
А во-вторых, у меня не обновляется показатель здоровья игрока, если он уходит в минус. На видео, например, здоровье игрока при смерти равно двум, хотя оно скорее всего ушло в меньше, чем 255.
Ну первое прописать не сложно. А со вторым я наверное тоже не буду мучиться, и просто напишу код, который выводит на экран нулевое здоровье, даже если оно ушло в минус
А во-вторых, у меня не обновляется показатель здоровья игрока, если он уходит в минус. На видео, например, здоровье игрока при смерти равно двум, хотя оно скорее всего ушло в меньше, чем 255.
Ну первое прописать не сложно. А со вторым я наверное тоже не буду мучиться, и просто напишу код, который выводит на экран нулевое здоровье, даже если оно ушло в минус
🔥4❤2❤🔥1
Прошел я Dread Delusion и у меня есть что сказать.
Разобью все на плюсы и минусы.
И, к сожалению, минусов будет больше.
Плюсы:
1. Очень атмосферная и глубокая в плане сюжета игра с необычным лором и окружением. Чего только стоят фентези-деревушки, феодальный город и стимпанк-СССР.
2. Олдскульная графика. Обожаю такое еще со времен PS1.
3. Интересные квесты с неоднозначными выборами. На многих квестах я реально много думал: "А как бы поступил я?"
4. Апгрейд оружия и брони. У каждого из этих предметов несколько уровней апгрейда, и для каждого уровня надо искать по всему миру нужные материалы. Это интересный подход.
5. Интересное строение мира, где каждый остров это отдельный архипелаг со своей архитектурой.
Минусы:
1. Скучная боевая система. Ударить и Ударить сильно — это все. Враги тоже не отличаются разнообразием: либо это просто melee враги, либо они из чего-либо стреляют, либо имеют при себе щит, который очень легко обойти.
2. Скучная ролевая система. Всего 4 параметра, которые отвечают за 8 навыков. Опыт повышается либо после прохождения квестов, либо при нахождении специальных черепов. И, как я уже говорил, при выборе любого класса в начале игры можно сделать универсального солдата под конец. Одежда с абилками в помощь.
3. Бесполезная магия, зелья и метательное оружие. Под конец игры у меня скопилось 150 флаконов здоровья, 300 метательных ножей и чуть меньше остальных видов зелий и предметов. Ими просто не надо пользоваться. На моей памяти это первая RPG, в которой похер на это все, какой бы класс ты ни выбрал.
4. Мало оружия. За всю игру я нашел всего 4 оружия: кинжал, меч, двуручный меч и лук. И это все! Да, их можно улучшать, но дайте чуть больше выбора, пожалуйста.
5. Бесполезная собственность. В игре есть возможность купить несколько домов и целое поместье. Но зачем? Это не дает ничего, кроме траты ресурсов (за каждое улучшение надо отдавать деньги, руду и разные растения).
6. В определенный момент игроку дают целый летающий корабль... Который портит все. Изучать эти острова было очень интересно. Я никогда не мог понять, что ждет меня за следующим углом. А на этом катере можно облететь всю карту за несколько секунд.
Разобью все на плюсы и минусы.
И, к сожалению, минусов будет больше.
Плюсы:
1. Очень атмосферная и глубокая в плане сюжета игра с необычным лором и окружением. Чего только стоят фентези-деревушки, феодальный город и стимпанк-СССР.
2. Олдскульная графика. Обожаю такое еще со времен PS1.
3. Интересные квесты с неоднозначными выборами. На многих квестах я реально много думал: "А как бы поступил я?"
4. Апгрейд оружия и брони. У каждого из этих предметов несколько уровней апгрейда, и для каждого уровня надо искать по всему миру нужные материалы. Это интересный подход.
5. Интересное строение мира, где каждый остров это отдельный архипелаг со своей архитектурой.
Минусы:
1. Скучная боевая система. Ударить и Ударить сильно — это все. Враги тоже не отличаются разнообразием: либо это просто melee враги, либо они из чего-либо стреляют, либо имеют при себе щит, который очень легко обойти.
2. Скучная ролевая система. Всего 4 параметра, которые отвечают за 8 навыков. Опыт повышается либо после прохождения квестов, либо при нахождении специальных черепов. И, как я уже говорил, при выборе любого класса в начале игры можно сделать универсального солдата под конец. Одежда с абилками в помощь.
3. Бесполезная магия, зелья и метательное оружие. Под конец игры у меня скопилось 150 флаконов здоровья, 300 метательных ножей и чуть меньше остальных видов зелий и предметов. Ими просто не надо пользоваться. На моей памяти это первая RPG, в которой похер на это все, какой бы класс ты ни выбрал.
4. Мало оружия. За всю игру я нашел всего 4 оружия: кинжал, меч, двуручный меч и лук. И это все! Да, их можно улучшать, но дайте чуть больше выбора, пожалуйста.
5. Бесполезная собственность. В игре есть возможность купить несколько домов и целое поместье. Но зачем? Это не дает ничего, кроме траты ресурсов (за каждое улучшение надо отдавать деньги, руду и разные растения).
6. В определенный момент игроку дают целый летающий корабль... Который портит все. Изучать эти острова было очень интересно. Я никогда не мог понять, что ждет меня за следующим углом. А на этом катере можно облететь всю карту за несколько секунд.
🔥2❤🔥1
В общем, игра невероятная с точки зрения атмосферы и лора, но с механиками точно надо поработать. В нее попросту очень легко и не так интересно играть, как бы хотелось.
Ну и конечно надо делать скидку на то, что ее делали 3.5 человека. Это офигенный результат для маленькой команды.
А скриншоты вообще все решают=)
Ну и конечно надо делать скидку на то, что ее делали 3.5 человека. Это офигенный результат для маленькой команды.
А скриншоты вообще все решают=)
👍3❤🔥1
В общем, можете меня поздравить с пополнением в семье=)
Вот такую ПЭВМ "Микроша" 90-го года сегодня приобрел.
Сразу могу сказать, что клавиатура ужасна=) Клавиши не нажимаются и проваливаются, но я так понимаю, что это стандартная проблема всех Микрош.
В комплекте мне достались:
— блок питания, которым можно убить;
— картридж-новодел с кучей игр, улучшенным бейсиком и дополнительными 16Кб ОЗУ.
— две кассеты (но вот кассетник от коммодора сюда не подойдет).
— Инструкции по применению для самого компьютера и для картриджа.
Но радость моя была не долгой🥲
Как водится, компьютер подключается к телевизору через антенный вход (хотя у него 5-pin видеовыход, то есть в будущем можно будет намутить какой-нибудь переходник).
И когда я радостный начал подключать компьютер, оказалось, что антенный провод от Atari (который дает нормальную картинку), не подходит.
Я нашел подходящий, но он оказался не очень хорошим. Из-за него все фонит, а картинка на экране слишком тусклая (не видно вообще нихрена).
При этом я вижу, что компьютер работает нормально. Короче, придется заказывать нормальный провод, а пока что играться в эмуляторе...
Вот такую ПЭВМ "Микроша" 90-го года сегодня приобрел.
Сразу могу сказать, что клавиатура ужасна=) Клавиши не нажимаются и проваливаются, но я так понимаю, что это стандартная проблема всех Микрош.
В комплекте мне достались:
— блок питания, которым можно убить;
— картридж-новодел с кучей игр, улучшенным бейсиком и дополнительными 16Кб ОЗУ.
— две кассеты (но вот кассетник от коммодора сюда не подойдет).
— Инструкции по применению для самого компьютера и для картриджа.
Но радость моя была не долгой🥲
Как водится, компьютер подключается к телевизору через антенный вход (хотя у него 5-pin видеовыход, то есть в будущем можно будет намутить какой-нибудь переходник).
И когда я радостный начал подключать компьютер, оказалось, что антенный провод от Atari (который дает нормальную картинку), не подходит.
Я нашел подходящий, но он оказался не очень хорошим. Из-за него все фонит, а картинка на экране слишком тусклая (не видно вообще нихрена).
При этом я вижу, что компьютер работает нормально. Короче, придется заказывать нормальный провод, а пока что играться в эмуляторе...
👍5❤3🔥2
А пока могу рассказать, что я вообще выяснил про этот компьютер.
1. В нем стоит советский аналог 8-ми битного процессора Intel 8080. Команды этого процессора уж ооочень сильно отличаются от команд 6502, на котором я пишу игру для Commodore. И у меня сложилось впечатление, что MOS в свое время пошли по пути облегчения и удешевления, тогда как Zilog и Intel по пути большего удобства.
Здесь тебе и 16-ти битные регистровые пары, и нормальная косвенная адресация, и сложение/вычитание как с флагом переноса, так и без него (6502, например, позволяет складывать только с флагом). С 16-ти битными парами даже можно арифметику проводить.
Но есть и не очень удобные после 6502 вещи. Например, здесь нет branch-переходов, а только jump-ы. Такие команды занимают 3 байта в памяти, вместо двух. А еще я заметил, что хотя все команды занимают от 1 до 3 байт (причем большинство 1 байт), время их исполнения гораздо больше, чем на 6502.
На 8080 количество тактов варьируется от 4 до 17, тогда как на 6502 от 2 до 7.
2. Графический режим. А тут его нет. Экран всего-то размером 64*25 знакомест. При этом, во всей документации упоминается т.н. псевдографика с разрешением 128*50. Я думал, что это два отдельных режима и они переключаются контроллером видеопамяти. Но все оказалось куда прозаичнее. В составе символов присутствуют по разному расположенные пиксели (как на картинке), и из них уже можно выстраивать изображение. А так как они в половину знакоместа, вот и выходит разрешение в 2 раза больше=) Да, еще и цвета нет. Поэтому все игры выглядят соответствующе.
P.S. Как выяснилось, разрешение на самом деле 78*30 из-за рамок. На них тоже можно что-либо писать, но с осторожностью.
3. Памяти 32 Кб, из которых чуть больше 2Кб занимает экран. Для компьютера с такой графикой этого как будто бы достаточно.
4. Звук - одноканальный бипер=)
5. Эмулятор, который я нашел, называется Emu80. Причем он поддерживает кучу разных советских компов. И отладчик довольно удобный.
А еще я установил на VSCode расширение Retro Assembler ну и скачал его. И он оказался хорошим. Удобнее, чем эта чертова CBM prj Studio, пусть она горит в аду=)
1. В нем стоит советский аналог 8-ми битного процессора Intel 8080. Команды этого процессора уж ооочень сильно отличаются от команд 6502, на котором я пишу игру для Commodore. И у меня сложилось впечатление, что MOS в свое время пошли по пути облегчения и удешевления, тогда как Zilog и Intel по пути большего удобства.
Здесь тебе и 16-ти битные регистровые пары, и нормальная косвенная адресация, и сложение/вычитание как с флагом переноса, так и без него (6502, например, позволяет складывать только с флагом). С 16-ти битными парами даже можно арифметику проводить.
Но есть и не очень удобные после 6502 вещи. Например, здесь нет branch-переходов, а только jump-ы. Такие команды занимают 3 байта в памяти, вместо двух. А еще я заметил, что хотя все команды занимают от 1 до 3 байт (причем большинство 1 байт), время их исполнения гораздо больше, чем на 6502.
На 8080 количество тактов варьируется от 4 до 17, тогда как на 6502 от 2 до 7.
2. Графический режим. А тут его нет. Экран всего-то размером 64*25 знакомест. При этом, во всей документации упоминается т.н. псевдографика с разрешением 128*50. Я думал, что это два отдельных режима и они переключаются контроллером видеопамяти. Но все оказалось куда прозаичнее. В составе символов присутствуют по разному расположенные пиксели (как на картинке), и из них уже можно выстраивать изображение. А так как они в половину знакоместа, вот и выходит разрешение в 2 раза больше=) Да, еще и цвета нет. Поэтому все игры выглядят соответствующе.
P.S. Как выяснилось, разрешение на самом деле 78*30 из-за рамок. На них тоже можно что-либо писать, но с осторожностью.
3. Памяти 32 Кб, из которых чуть больше 2Кб занимает экран. Для компьютера с такой графикой этого как будто бы достаточно.
4. Звук - одноканальный бипер=)
5. Эмулятор, который я нашел, называется Emu80. Причем он поддерживает кучу разных советских компов. И отладчик довольно удобный.
А еще я установил на VSCode расширение Retro Assembler ну и скачал его. И он оказался хорошим. Удобнее, чем эта чертова CBM prj Studio, пусть она горит в аду=)
🔥4❤🔥1👍1
И есть еще о чем рассказать.
Например, о файлах с программами. Они имеют расширение .rkm и, помимо программы, содержат дополнительную информацию.
— Первые два байта — стартовый адрес программы;
— Вторые два байта — последний адрес программы;
— Последние два байта — контрольная сумма.
И вот все дело в контрольной сумме. Хорошо, что на просторах рунета есть информация, как она считается, но только в виде кода на C++. Так как я с C++ никогда не работал, то решил написать свой скрипт на питоне (и, о господи, как же он не интуитивно работает с двоичными данными).
А суть в чем. Если остаток от деления счетчика байта на 2 равен 0, то задействуем исключающее ИЛИ между нижним байтом контрольной суммы и текущим байтом программы.
Если остаток равен 1, то между верхним байтом контрольной суммы и текущим байтом программы.
В конце записываем эти два байта в формате high/low.
Получается что-то такое:
И после этого такой файл уже можно грузить в Микрошу. Хотя я еще не пробовал это сделать на реальной машине(
Например, о файлах с программами. Они имеют расширение .rkm и, помимо программы, содержат дополнительную информацию.
— Первые два байта — стартовый адрес программы;
— Вторые два байта — последний адрес программы;
— Последние два байта — контрольная сумма.
И вот все дело в контрольной сумме. Хорошо, что на просторах рунета есть информация, как она считается, но только в виде кода на C++. Так как я с C++ никогда не работал, то решил написать свой скрипт на питоне (и, о господи, как же он не интуитивно работает с двоичными данными).
А суть в чем. Если остаток от деления счетчика байта на 2 равен 0, то задействуем исключающее ИЛИ между нижним байтом контрольной суммы и текущим байтом программы.
Если остаток равен 1, то между верхним байтом контрольной суммы и текущим байтом программы.
В конце записываем эти два байта в формате high/low.
Получается что-то такое:
for i in range(0, len(bin_file)):
if i%2 == 0:
csl ^= bin_file[i]
else:
csh ^= bin_file[i]
rkm_file.write(csh&0xff)
rkm_file.write(csl&0xff)
И после этого такой файл уже можно грузить в Микрошу. Хотя я еще не пробовал это сделать на реальной машине(
🔥3❤🔥1
Media is too big
VIEW IN TELEGRAM
И я запустил Микрошу !!!
Но надо что-то делать с видео-выводом. Потому что так невозможно :(
Но надо что-то делать с видео-выводом. Потому что так невозможно :(
❤6❤🔥1
Media is too big
VIEW IN TELEGRAM
Ну и проверил, что там на картридже :)
Мне конечно очень интересно еще, что такого можно сделать с клавиатурой. Как я понимаю, это проблема повсеместная, может люди что-нибудь придумали
Мне конечно очень интересно еще, что такого можно сделать с клавиатурой. Как я понимаю, это проблема повсеместная, может люди что-нибудь придумали
❤4❤🔥2
Ну а теперь quirks and features местного видео-контроллера.
Вообще видеопамять начинается с адреса $76d0 и занимает 2340 байт.
Это 78*30 знакомест, но есть особенность. На границах экрана всегда должна быть пустота. Слева и справа по 7 знакомест, сверху три строки, снизу две. Итого, разрешение уменьшается до 64*25 знакомест.
В интернете я нашел дамп chargen ROM-а, и вытащил все скриптом. И вот, что я заметил.
Каждый символ занимает 8 байт, где каждый бит - это пиксель. Но все символы в Микроше шириной в шесть пикселей. Кроме последнего, который почему-то 7 пикселей в ширину.
Поэтому я переписал скрипт, и он мне выдал вот такую картинку(картинка 1).
Теперь можно использовать Tiled для создания, собственно, тайлов.
Но оказалось, что не все эти символы можно использовать, а только первые 128. Здесь, как в Commodore, два набора символов, только в Commodore их по 256 в каждом наборе.
Если посмотреть на вторую картинку, то можно заметить, что между строками в Микроше пробелы. Оказалось, что каждая строка занимает 10 пикселей в высоту при высоте знакоместа в 8 пикселей.
И я пошел разбираться, как эту проблему решить.
Тут в дело вступает контроллер КР580ВГ75, который отвечает за отрисовку графики. У него есть специальные регистры $D000 и $D001. И в эти регистры можно передавать команды с параметрами. В том числе высоту одной строки.
Я конечно с этим помучился, но сделал то, что надо(картинка 3). Теперь можно без проблем писать игры.
А потом выяснилось вот что. Этот чип позволяет увеличить количество строк до 64. Но без рассинхронизации сигнала можно увеличить только до 60 (в два раза). Таким образом, разрешение экрана увеличивается до 64*55 символов (картинка 4).
К сожалению, это не рабочий вариант. Потому что герцовка при этом падает до 31 Hz, и символы выходят за границы знакомест. К тому же приходится изменять адресацию видеопамяти, а также ее размер в два раза (за это отвечает уже другой чип КР580ВТ57).
В общем, эксперимент был интересный, но видимо придется остановиться на стандартном разрешении...
Вообще видеопамять начинается с адреса $76d0 и занимает 2340 байт.
Это 78*30 знакомест, но есть особенность. На границах экрана всегда должна быть пустота. Слева и справа по 7 знакомест, сверху три строки, снизу две. Итого, разрешение уменьшается до 64*25 знакомест.
В интернете я нашел дамп chargen ROM-а, и вытащил все скриптом. И вот, что я заметил.
Каждый символ занимает 8 байт, где каждый бит - это пиксель. Но все символы в Микроше шириной в шесть пикселей. Кроме последнего, который почему-то 7 пикселей в ширину.
Поэтому я переписал скрипт, и он мне выдал вот такую картинку(картинка 1).
Теперь можно использовать Tiled для создания, собственно, тайлов.
Но оказалось, что не все эти символы можно использовать, а только первые 128. Здесь, как в Commodore, два набора символов, только в Commodore их по 256 в каждом наборе.
Если посмотреть на вторую картинку, то можно заметить, что между строками в Микроше пробелы. Оказалось, что каждая строка занимает 10 пикселей в высоту при высоте знакоместа в 8 пикселей.
И я пошел разбираться, как эту проблему решить.
Тут в дело вступает контроллер КР580ВГ75, который отвечает за отрисовку графики. У него есть специальные регистры $D000 и $D001. И в эти регистры можно передавать команды с параметрами. В том числе высоту одной строки.
Я конечно с этим помучился, но сделал то, что надо(картинка 3). Теперь можно без проблем писать игры.
А потом выяснилось вот что. Этот чип позволяет увеличить количество строк до 64. Но без рассинхронизации сигнала можно увеличить только до 60 (в два раза). Таким образом, разрешение экрана увеличивается до 64*55 символов (картинка 4).
К сожалению, это не рабочий вариант. Потому что герцовка при этом падает до 31 Hz, и символы выходят за границы знакомест. К тому же приходится изменять адресацию видеопамяти, а также ее размер в два раза (за это отвечает уже другой чип КР580ВТ57).
В общем, эксперимент был интересный, но видимо придется остановиться на стандартном разрешении...
🔥5❤🔥1