И наконец-то пивная тематика.
В Туле мы посетили ресторан Петр Петрович, и это похоже самый вкусный и пивной ресторан в городе. И при этом не очень дорогой.
Мало того, что порции приносят гигантских размеров, так и пиво варят тут же. На первом этаже расположена собственная пивоварня.
Пиво я попробовал нескольких сортов: венский эль, темный лагер, светлый лагер, пшеничное.
Мне очень понравился темный лагер с кофейным послевкусием, в меру густой и сладкий. Неплохой и венский эль: первая ассоциация - Хамовники Венское, но с более насыщенным вкусом.
Ну а лагер - это лагер, а пшеничное - это пшеничное. Но за счет того, что все пиво свежее, пьется оно очень легко и приятно.
Ну и за первое, второе, закуски и 10 бокалов пива мы отдали чуть больше 5-ти тысяч рублей, что по московским меркам очень демократично.
А общем, советую)
В Туле мы посетили ресторан Петр Петрович, и это похоже самый вкусный и пивной ресторан в городе. И при этом не очень дорогой.
Мало того, что порции приносят гигантских размеров, так и пиво варят тут же. На первом этаже расположена собственная пивоварня.
Пиво я попробовал нескольких сортов: венский эль, темный лагер, светлый лагер, пшеничное.
Мне очень понравился темный лагер с кофейным послевкусием, в меру густой и сладкий. Неплохой и венский эль: первая ассоциация - Хамовники Венское, но с более насыщенным вкусом.
Ну а лагер - это лагер, а пшеничное - это пшеничное. Но за счет того, что все пиво свежее, пьется оно очень легко и приятно.
Ну и за первое, второе, закуски и 10 бокалов пива мы отдали чуть больше 5-ти тысяч рублей, что по московским меркам очень демократично.
А общем, советую)
❤🔥2👍2
Решил я тут проверить, как там поживает моя игра для Commodore 64.
Ну та самая, про которую я и забыл почти.
На itch.io все спокойно, иногда играют. Но меня привлекло, что кто-то перешёл по ссылке с YouTube.
И я пошел разбираться...
Ну та самая, про которую я и забыл почти.
На itch.io все спокойно, иногда играют. Но меня привлекло, что кто-то перешёл по ссылке с YouTube.
И я пошел разбираться...
На Ютубе я наткнулся на это видео. https://youtu.be/XikP1bIK-rs?si=JsFgy4Ydy1VrXjKE
Оказалось, мою игру даже взломали и добавили чит на бесконечные попытки взяток.
Более того, взломанную версию выложили вот здесь:
https://csdb.dk/release/?id=234422
Оказалось, мою игру даже взломали и добавили чит на бесконечные попытки взяток.
Более того, взломанную версию выложили вот здесь:
https://csdb.dk/release/?id=234422
YouTube
C64 Crack: The Last Effort Preview +1D by Excess! 12 August 2023!
C64 Crack: The Last Effort Preview +1D by Excess! 12 August 2023!
https://csdb.dk/release/?id=234422
f:Commodore 64 (C64)
f:Commodore 64 (C64) Demos
f:Commodore 64 (C64) Crack/Intros
Airwolf/F4CG
https://csdb.dk/release/?id=234422
f:Commodore 64 (C64)
f:Commodore 64 (C64) Demos
f:Commodore 64 (C64) Crack/Intros
Airwolf/F4CG
🔥5
И мне стало интересно, насколько это у команды Excess вообще стоит на потоке.
Их логотип я часто вижу, потому что они взламывают большинство коммодоровских игр.
Но я не ожидал, что та же участь постигнет мою не слишком то уж и интересную поделку.
Их логотип я часто вижу, потому что они взламывают большинство коммодоровских игр.
Но я не ожидал, что та же участь постигнет мою не слишком то уж и интересную поделку.
👍5
Взял это пиво только из-за этикетки. Ну Doom же, как я мог пройти мимо.
Тыквенный стаут от пивоварни Selfmade из Солнечногорска, о которой я ни разу не слышал до этого.
Само пиво довольно густое, с ярко выраженным запахом и вкусом, как ни странно, имбирного печенья. Такое мы любим. Единственное, что я не понял - где здесь тыква? Но это ничего, пиво все равно очень вкусное, хоть и крепковатое.
Тыквенный стаут от пивоварни Selfmade из Солнечногорска, о которой я ни разу не слышал до этого.
Само пиво довольно густое, с ярко выраженным запахом и вкусом, как ни странно, имбирного печенья. Такое мы любим. Единственное, что я не понял - где здесь тыква? Но это ничего, пиво все равно очень вкусное, хоть и крепковатое.
👀3
Нашел тут один проект на Commodore 64 (похоже отмененный), в котором используется классический Вольфенштайновский рейкастер.
https://youtu.be/RLy3v7WHqs0?si=iDBEHpLRx8PH68sT
Но меня заинтересовало даже не то, как это сделано, а то, как в свое время делали движки для Dungeon Crawler. И я не нашел почти никакой информации.
https://youtu.be/RLy3v7WHqs0?si=iDBEHpLRx8PH68sT
Но меня заинтересовало даже не то, как это сделано, а то, как в свое время делали движки для Dungeon Crawler. И я не нашел почти никакой информации.
YouTube
MOOD (Commodore 64) - cancelled Wolfenstein clone
MOOD was an extremely promising and technically impressive Wolfenstein/Doom clone for the C64 from 1996-1998 , running on stock hardware without any enhancements. Still hopeful it will be finished some day.
https://www.gamesthatwerent.com/gtw64/mood/
https://www.gamesthatwerent.com/gtw64/mood/
❤1
Например, вот в этих играх: Might&Magic и Eye of the Beholder.
Первая, и возможно правильная мысль, которая меня посетила - это то, что экран как бы разделен на определенные зоны для отображения стен. И каждая зона закрашивается (или не закрашивается) текстурой в зависимости от того, что видит игрок
Первая, и возможно правильная мысль, которая меня посетила - это то, что экран как бы разделен на определенные зоны для отображения стен. И каждая зона закрашивается (или не закрашивается) текстурой в зависимости от того, что видит игрок
👍2
Поэтому я решил опробовать этот способ, но с определёнными ограничениями.
Во-первых, никаких сложных вычислений. Думаю, надо обойтись только базовой арифметикой. Все сложные вещи вычислять заранее.
Во-вторых, текстуры должны храниться в памяти в стандартном виде (например, размером 16*16 пикселей).
В-третьих, никаких чисел с плавающей точкой.
Размер экрана будет 128*128 пикселей. Думаю, этого будет достаточно для быстрой отрисовки, но это я узнаю по ходу)
Во-первых, никаких сложных вычислений. Думаю, надо обойтись только базовой арифметикой. Все сложные вещи вычислять заранее.
Во-вторых, текстуры должны храниться в памяти в стандартном виде (например, размером 16*16 пикселей).
В-третьих, никаких чисел с плавающей точкой.
Размер экрана будет 128*128 пикселей. Думаю, этого будет достаточно для быстрой отрисовки, но это я узнаю по ходу)
👍1🔥1
Экспериментировал вчера с растягиванием текстур.
То, что вышло - это левые два блока кирпичной текстуры, растянутые в 2 и 8 раз по высоте.
Получилось не очень презентабельно, да и довольно бесполезно, но зато быстро, так как я растягивал сразу строки, а не отдельные пиксели.
Экранная память Commodore в режиме hi-rez устроена таким образом, что каждые 8 последовательных байт отвечают за отрисовку одного знакоместа 8*8 пикселей, а следующие 8 байт – за отрисовку следующего знакоместа, поэтому расширять текстуру построчно оказалось довольно дешевым с точки зрения процессора занятием.
Но что, если я хочу расширить текстуру не только по высоте, но и по ширине? Тогда придется работать с каждым пикселем, что, думаю, будет довольно затратно, потому что придется обращаться уже не к байтам, а к каждому биту (или паре бит в случае четырехцветного режима).
Буду пробовать
То, что вышло - это левые два блока кирпичной текстуры, растянутые в 2 и 8 раз по высоте.
Получилось не очень презентабельно, да и довольно бесполезно, но зато быстро, так как я растягивал сразу строки, а не отдельные пиксели.
Экранная память Commodore в режиме hi-rez устроена таким образом, что каждые 8 последовательных байт отвечают за отрисовку одного знакоместа 8*8 пикселей, а следующие 8 байт – за отрисовку следующего знакоместа, поэтому расширять текстуру построчно оказалось довольно дешевым с точки зрения процессора занятием.
Но что, если я хочу расширить текстуру не только по высоте, но и по ширине? Тогда придется работать с каждым пикселем, что, думаю, будет довольно затратно, потому что придется обращаться уже не к байтам, а к каждому биту (или паре бит в случае четырехцветного режима).
Буду пробовать
🤯1
Допустим, есть текстура 16*16. И я хочу ее расширить до 34 в высоту, но каждый последующий столбец меньше на два пикселя (для перспективы). Делается это по столбцам.
Для каждого столбца надо пройтись по индексам новой высоты (от 0 до 33), умножить на 16 (старая высота) и поделить на 34 (новая высота).
Получается что-то вроде y = i*16/34
Умножение на 16 не проблема. Надо использовать 4 битовых сдвига влево (1 сдвиг - умножение на 2). А вот деление - довольно тяжелая операция, а с учетом, что делать это придется практически для каждого пикселя в зоне 128*128 - то, думаю, неподъемная.
Для каждого столбца надо пройтись по индексам новой высоты (от 0 до 33), умножить на 16 (старая высота) и поделить на 34 (новая высота).
Получается что-то вроде y = i*16/34
Умножение на 16 не проблема. Надо использовать 4 битовых сдвига влево (1 сдвиг - умножение на 2). А вот деление - довольно тяжелая операция, а с учетом, что делать это придется практически для каждого пикселя в зоне 128*128 - то, думаю, неподъемная.
Поэтому можно заняться сравнениями.
Если i*16 < 34, то берем 0 индекс исходной текстуры.
Если i*16 < 34*2, то берем 1 индекс, и так далее.
Я посчитал, и понял, что мне для этого надо умножить все возможные высоты текстур (четные числа от 32 до 128) на числа от 1 до 16. Все это можно поместить в таблицу, которая займет где-то полтора килобайта. Но можно и меньше, если умножения на 2,4,8,16 производить налету с помощью тех же битовых сдвигов.
В одном случае нагружается процессор, в другом заполняется память, а оптимальное решение я так и не нашел=(
Если i*16 < 34, то берем 0 индекс исходной текстуры.
Если i*16 < 34*2, то берем 1 индекс, и так далее.
Я посчитал, и понял, что мне для этого надо умножить все возможные высоты текстур (четные числа от 32 до 128) на числа от 1 до 16. Все это можно поместить в таблицу, которая займет где-то полтора килобайта. Но можно и меньше, если умножения на 2,4,8,16 производить налету с помощью тех же битовых сдвигов.
В одном случае нагружается процессор, в другом заполняется память, а оптимальное решение я так и не нашел=(
Обожаю разработку под Commodore.
Два дня пытался понять, в чем проблема. Я пытался написать функцию, которая растягивает столбец текстуры до нужной высоты. И вроде бы все хорошо, но видите эту прерывистую линию внизу столбца?
Оказалось, что в одном месте я использовал не ту команду.
Мне надо было 4 раза сдвинуть биты в одном байте вправо. Для этого есть две команды: ROR и LSR.
Два дня пытался понять, в чем проблема. Я пытался написать функцию, которая растягивает столбец текстуры до нужной высоты. И вроде бы все хорошо, но видите эту прерывистую линию внизу столбца?
Оказалось, что в одном месте я использовал не ту команду.
Мне надо было 4 раза сдвинуть биты в одном байте вправо. Для этого есть две команды: ROR и LSR.
Но они отличаются.
ROR в седьмой бит помещает значение из Carry.
Carry - это флаг переноса в старший разряд. Допустим, если прибавить 1 к 255, то 1 отправится в Carry. Так, например, работает сложение чисел, если результат больше 255.
А LSR в седьмой бит помещает 0.
И я использовал конечно же ROR, и в определенные моменты у меня число, которое должно выглядеть как 00001111 (15), превращалось в 00011111 (31) и ломало мне всю функцию. Когда я поменял ROR на LSR, то все стало нормально
ROR в седьмой бит помещает значение из Carry.
Carry - это флаг переноса в старший разряд. Допустим, если прибавить 1 к 255, то 1 отправится в Carry. Так, например, работает сложение чисел, если результат больше 255.
А LSR в седьмой бит помещает 0.
И я использовал конечно же ROR, и в определенные моменты у меня число, которое должно выглядеть как 00001111 (15), превращалось в 00011111 (31) и ломало мне всю функцию. Когда я поменял ROR на LSR, то все стало нормально
👍1
Но настоящая новость в том, что я наконец-то спустя миллион лет прошел Prince of Persia: Warrior Within.
Первый раз я поиграл в нее на PSP лет в 12 наверное. И она показалась мне такой сложной, но в то же время такой крутой (чего только Godsmack стоят, когда убегаешь от Дахаки). И для двенадцатилетнего меня все это "кровь-кишки-распидорасило" смотрелось ну очень впечатляюще.
И вот наконец, спустя столько лет, я наконец-то её осилил.
Даже статью захотелось написать про историю серии
Первый раз я поиграл в нее на PSP лет в 12 наверное. И она показалась мне такой сложной, но в то же время такой крутой (чего только Godsmack стоят, когда убегаешь от Дахаки). И для двенадцатилетнего меня все это "кровь-кишки-распидорасило" смотрелось ну очень впечатляюще.
И вот наконец, спустя столько лет, я наконец-то её осилил.
Даже статью захотелось написать про историю серии
👍4🔥1
Наконец-то дело сдвинулось с мертвой точки.
Написал основную функцию для увеличения столбцов текстуры и еще одну функцию, которая уменьшает следующие столбы для перспективы.
Конечно, это все еще оптимизировать и оптимизировать, потому что пока что работает оно довольно неторопливо, но по крайней мере, работает=)
Что до памяти, то тут все неплохо. Таблицы деления я ужал с 6Кб аж до двух (но за счет лишних операций, которые с ними надо производить), а сам код программы занимает пока что всего 373 байта.
Теперь надо написать две функции:
— первая увеличивает следующие столбцы (для стен в правой части экрана)
— вторая рисует текстуру прямо (для стен перед глазами)
Написал основную функцию для увеличения столбцов текстуры и еще одну функцию, которая уменьшает следующие столбы для перспективы.
Конечно, это все еще оптимизировать и оптимизировать, потому что пока что работает оно довольно неторопливо, но по крайней мере, работает=)
Что до памяти, то тут все неплохо. Таблицы деления я ужал с 6Кб аж до двух (но за счет лишних операций, которые с ними надо производить), а сам код программы занимает пока что всего 373 байта.
Теперь надо написать две функции:
— первая увеличивает следующие столбцы (для стен в правой части экрана)
— вторая рисует текстуру прямо (для стен перед глазами)