Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!

Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 
Показаны сообщения с ярлыком игры. Показать все сообщения
Показаны сообщения с ярлыком игры. Показать все сообщения

среда, 25 января 2023 г.

Моя версия эмулятора ЛИКа - или почему инженеры делают то, что делают

Мой герой - инженер. Именно ботаны двигают этот мир вперед. 88й год, бытовой самодельный компьютер "Специалист". Небыло не то что "войти в IT" небыло вообще никаких "интернетов" (разработка той самой Всемирной Паутины Веб, или сокращенно WWW, началось годом спустя в 89м). Небыло никакой какой-либо комерческой выгоды. Но у уважающего себя инженера дома был бытовой компьютер (БК), собранный собственноручно по схемам из журналов Радио. Потому что мог. Спасибо Папе, что привил мне любовь к этому делу. (на видео не мой Папа, но мой был таким же чудным).

Поделюсь своей историей, которую хочется продолжать. Если я уйду когда-нибудь из IT, то из кодинга оставлю себе мой ЛИК и все, что с ним связано. Сейчас я пишу эмулятор, делаю реверс инжиниринг реального компа, который совсем недавно попал мне в руки. Делаю это все со скоростью улитки, смакуя каждый момент. Как та вкусняшка, которую хочется есть самой маленькой ложечкой, растирая языком по небу каждый новый кусочек. Конечно на любой проект нужно время, а его как всегда мало. Но даже если бы его было в избытке, мой первый компьютер - штука особенная. Это то, что возвращает магию.

Первым компьютером у меня был Синклер. И конечно же Синклер этот использовался для игр. Их было очень много. Даже в эпоху Дэнди у меня (и всех до кого я мог дотянуться) небыло столько картриджей. Ко мне домой приходли мои одноклассники. Мы все первоклашки. Какая домашка? Мы играли каждый день после уроков. Я был крут. У меня дома было что-то, что ни у кого небыло. Напомню, это были 90е. 1992 год, кажется. И конечно же я успешно забил на учебу. Оценки упали. А Синклер был продан. Травмирующий опыт. Была игрушка и ее забрали. Не делайте так родители, никогда.

Вторым моим компьютером был ЛИК. Производства Черновицкого завода Электронмаш. Чернобелый. С маленьким пузатым экраном. Тоже с записью на магнитофон (чуть позже покажу как звучала эта музыка байтов). И конечно же первым делом этот бытовой (как его называли) компьютер использовался мной для игр. Папа по выходным осваивал встроенный Бейсик. Первая его программа - нарисованный герб Украины. А я игрался. Игрался, пока качество кассетной записи не худшилось настолько, что воспроизвести игры больше не получалось. Это было всеобщее горе.

Но ничего не поделать - компьютер есть, потребность ковырять его никуда не делась. Мы с Папой стали изучать Бейсик вместе. Очень скоро я превзошел Папу и пошел дальше. Началось все из того, что мне захотелось собрать коллекцию всех runtime-ошибок существующих в Бейсике. Но не все из них было понятно как достать. Только краткое описание в руководстве по эксплуатации давали хоть какие-то зацепки.


Как говорится: нифига не понятно, но очень интересно. Одни ошибки попадались чаще всего - 02, например. Другие все никак не поддавались. Так я изучил почти все функции языка и многие corner-кейзы их использования.

Оставалось всего несколько команд в бейсике, которые по моему были самые магические и непостижимые. Просматривая исходные коды игр на бейсике (а это был мой любимый квест, ведь столько всего можно узнать в чужом исходном коде работающей игры) я часто натыкался на эти команды и понимал, что за ними кроется все самое интересное - звук, красивая растровая графика, более удобный ввод/вывод. Они мне открылись не сразу. Все что я мог - менять циферки аргументов и смотреть как компу отшибает мозги, либо что-то происходит необычное. Использовать это повторно нельзя было. Magic одним словом. Но очень любопытно. 

Потом поломался и Бейсик. Он был записан в ПЗУ. И что-то там видимо перетерлось, т.к. контрольные суммы стали выдавать другое значение - что говорило мне о том, что ПЗУ накрылась. Где накрылась не понятно. Что с этим делать так же не понятно. Больно.

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

В  понимании мне помогла директива дизассемблирования. Она магическое шестнадцатеричное число приводила в чуть более осмысленный код. Но по прежнему этот код ни о чем не говорящий. Создать их каталог была моя задача. С этого начинается любое исследование. Там же я заметил первые закономерности. Старший байт, младший байт. Регистры. Запись/чтение в память. Руководство давало не очень подробное, но все же какое-то объяснение.
Если ты когда-то смотрел/а фильм Прибытие. Все было именно так. Встреча с пришельцами инопланетянами говорящими на непонятном языке. Они пришли что-то мне дать. Что именно - я должен разгадать. Каждый день я просыпался и все, что хотел - еще немного поговорить с ними. Я делал это весь день и пол ночи. Отвлекаясь только на еду и сон. Это был 5й класс школы на секунду.

Фильм кстати очень рекомендую для многократного пересмотра. 

Разбирая команду за командой, вскоре не осталось ни одной команды, которую я бы не понимал. Ассемблер оказался куда проще и грандиознее, чем бейсик. Я писал свои программы. Отлаживал их. Писал инструменты для написания программ и их отлаживания. Отлаживал эти инструменты. Обрастал кодом. Как положено.

А потом случился инсайт. Я заметил, что иногда, подкручивая магнитную головку кассетного магнитофона звук становился чуточку лучше и некоторые программы все же удавалось считать с кассеты. А что если взять этот звук с магнитофона и не подавать его на вход компьютера как обычно, а пропустить через усилитель (я на нем слушал музыку) там повысить уровень (максимально зашкалив его) и снять с линейного выхода уже усилителя сигнал, направив его к компу. Пяльник к тому времени я уже освоил хорошо. Спаял еще один провод и запустил опытную установку. 

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

Так как у меня появились новые-старые игры. Я начал их изучать. Это было не просто. Но постепенно они открывали свои шестнадцатеричные секреты. Подпрограммы Загрузчика. Подпрограммы Монитора. Разные полезные штуки вычлененные из игр. Самая моя большая гордость - это додебажиться до той процедуры, которая отвечает за звучание кринжового голоса говорящего "BUDY" во время заставки одноименной игры. Удаление всего лишнего, так что остается всего 25-30 байт кода. И реализация на основе этого кода диктофона. Мой комп превратился в диктофон, где секунд 5-7 звука записывалось из микрофона в 48 килобайт оперативной памяти. А потом это все RAW воспроизводилось на динамик. И затем снова перезаписывалось с микрофона. Качество конечно было неахти, но все было слышно. После этого я понял - что могу все. Вот прям все.

Затем мой комп поломался вовсе. И я остался с паяльником. Погрузился в мир логических элементов и строил разные примитивные схемки. Читал про моделирование компьютера подобного моему в книге. Паял много. Запах канифоли в носу как сейчас. Светил светодиодами. Обжигал пальцы. Пока не увлекся Химией в 9м классе. 

Конечно я хотел вернуться в эти воспоминания. Я долго искал возможности приобрести компьютер ЛИК. А тем временем я пытался по фоткам плат, доступным схемам сделать свою реплику. Об этом кстати писал в блоге тоже.

Только в позапрошлом году мне удалось на форуме таких же инженеров ценителей ретро компов как и я купить один. 7 лет я за ним охотился. И наконец-то он у меня. Я смотрю на него, он смотрит на меня. Паяльник я уже купил. Скоро он откроет мне все свои тайны. Осцилограф только надо освоить. И купить перед тем.

Был период погружения в уже существуюшие эмуляторы один из которых позволил поиграть в мою любимую игру Клад.

А еще год назад я нашел вот тут эмулятор Специалиста (старший брат ЛИКа) написанного на джаве. Он был переделан из эмулятора Синклера, о чем и как Автор интересно пишет на страничках форума. И пару недель рефакторингов (о которых обязательно расскажу позже, т.к. есть и тут чем похвастать) и я пришел к своему очередному pet-проекту эмулятору ЛИКа

Первый запуск старого кода. Запуск на этом коде ПЗУшек ЛИКа. Исправление команд, т.к. изначально использовался Z80 (синклер) вместо i8080 (ЛИК). Успешный запуск Бейсика. Отладка команд на Экзорцисте. Запуск игры Клад. Оптимизация видео. Адаптация клавиатуры. И много много юнит и интеграционных тестов.

А вот всего неделю назад я достал тот самый бит информации из недр моего эмулятора ЛИКа и услышал звучание нескольких моих любимых игр. Я до сих пор помню эти мелодии. Я их столько раз слышал в детстве на магнитофоне. Каждый раз, когда ты хотел поиграть в любимую игру - надо было прослушать ее на магнитофоне. Иногда несколько раз, пока не загрузится без ошибок. Все помню. До мурашек. Послушай как звучит моя любимая игра Клад.

В туду еще много всего. Кому это нужно? Да никому. Может быть кто-то еще через 10 лет наткнется на мои наскальные рисунки и порадуется им так же как и я. 

Я точно знаю, что сделаю реплику. Я точно знаю, что дизассемблирую и разберусь в том, как устроена игра Клад. И напишу пару своих уровней. Я точно знаю, что разберусь со звуком (над ним сейчас работаю) и он не будет звучать кринжово. И много всего, что еще придет в голову в процессе.  Ведь самураю не нужна цель. Только путь.

Почему? Потому что могу.

воскресенье, 30 сентября 2018 г.

Мой первый опыт игры в VR - игра Beat Saber

Люблю удивляться. Открыл для себя сегодня игровой мир VR вместе с ребятами из CUBE

Начал с игрушки Beat Saber, что предложили со старту


Не я на ролике, но было тоже неплохо. За чуть больше чем за час прошел все 10 уровней, что там были на hard. Теперь все болит. Мозгу эта вся движуха очень понравилась.

Тебе надевают на голову шлем VR, туда же наушники. В руки дают "курки". Шлем ловит кручения твоей головы, а два окуляра показывают объемную картинку того виртуального места, куда ты сейчас смотришь. Игра же определяет, что именно тебе там увидится. Стереозвучание обманывает мозг еще сильнее. Курки в руках определяют местоположение твоих рук и того девайса, что в руках твоих находится по задумке игры.

В Beat Saber у тебя два световых меча (как в Звездных Войнах) по одному в каждой руке: один синий, другой красный - ими ты будешь работать. На тебя летят кубы так же окрашенные двух цветов. Их как раз и надо разрубать мечами. Но не все так просто, на кубах нарисованы указатели поясняющие как именно их стоит разрубать. Разрубил правильно - зачет. Если не так или не разрубил вовсе - не зачет. Много промахов - Game over.

Когда кубов не много - это не сложно. Но когда их много, и рубать их надо то там то сям - вот тут и начинается веселье. И это все еще под ритмичную музыку. И когда уровень проходишь в 10й раз, то невольно начинаешь подтанцовывать. И понимаешь что кубы не рендомно расположены, их специально так разместили чтобы ты двигался под музыку.

Круть в общем! Калорий за два часа сжег наверное непривычно много.

Потом отстреливал орков из лука, от чего левая рука болит сильнее :) Очень рекомендую, кто еще не пробовал.

понедельник, 22 декабря 2014 г.

TED Jane McGonigal: Gaming can make a better world

Блин, я каждый день убеждаюсь в том, что есть Вселенский Админ, который видит наши мысли и посылает нам то, что больше всего сейчас надо. Недавно я только писал про то, как в варкрафт играл в психотерапевтических целях, а тут такое. Доклад TED Jane McGonigal: Gaming can make a better world. Смотрим и удивляемся. 


Конспект:

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

Почему мы успешнее в играх, чем в реальной жизни? В чем отличия игры World of Warcraft от реальной жизни, что там возможны эпические победы?

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

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

Всегда есть вдохновляющая история, зачем это все.

Мы получаем позитивную обратную связь в виде опыта, артефактов, левелапов и т.д.

Все  игроки Мира Варкрафта уже потратили 5,93 миллиона лет на решение виртуальных проблем Азерота. А это соизмеримо с переходом человека из каменного века.

К 21 году, молодой человек в развитой стране проводит за играми 10 000 часов, это столько же сколько он отсидит в школе с 5го по 12й класс и столько же, сколько надо времени, чтобы стать виртуозом в любом деле. Учится он там тому, как стать хорошим геймером.

Так в чем геймеры становятся виртуозами?

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

Геймеры - виртуозы плетения плотной социальной структуры. После игры люди нравятся больше, даже если они нас обыграли.

Радость творения - процесс игры как упорный труд приносит нам больше удовлетворения, чем просто расслабление или общение.

Эпическая значимость - геймеры любят причастность к впечатляющим миссиям, к историям масштаба человечества и планеты. Википедия - самая большая онлайн энциклопедия в мире. Вторая по величине онлайн энциклопедия, насчитывающая 80 000 статей - это википедия по Миру Вркрафта.

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

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

Когда-то давно игры были придуманы для того, чтобы избежать голода. Еды не хватало и правитель придумал играть в кости. 1 день люди ели, а другой играли в кости, отвклекаясь от чувства голода. И так они прожили 18 лет. Сейчас мы так же используем игру, чтобы убежать от реальности - мы используем игры, чтобы отвлечься от всего, что не так. Но то что случилось дальше врет все шаблоны - по Геродоту после 18 лет голода страна разделилась на два лагеря, и решили, что тот, кто выиграет на этот раз в кости - пойдет искать себе новую землю для жизни. Половина населения снялась и пошла искать новый мир. Сейчас то же делает варкрафт - ему уже 16 лет...

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

Что думаешь? Поделись

ПриЁм

среда, 28 марта 2012 г.

Мотивировать себя на миниподвиг сегодня

Сегодня утром, я услышав будильник в 6:25 проснулся. Я знал что не выспался, хотя еще не почувствовал этого - вчера вечером я поставил будильник в 2 часа ночи и спал чуть больше 4 часа. Мне нужно подготовиться к митингу, который будет в 9 утра - обещал. А вчера просто увлекся и не посмотрел на часы.

Говорят, главное, услышав будильник, встать и не ложиться обратно. Ага. Фиг там. Я прятал будильник и на шкаф, чтобы встать на табуретку и достать его. Позже, я просто его игнорил. Я ставил будильник в другую комнату, чтобы моя жена его точно не проигнорила, а я получил по шапке за то, что она проснулась в 5:30 утра есл ия вдруг проигнорю. Я мировые показывал рекорды! Но раз, спросонья, зацепился об табуретку. Другой раз наступил на воздушный шарик и он лопнул. Осторожно в доме игрался ребенок! :) Понял, что так недалеко до травм.

Лучше всего сработала такая штука: я, ложась спать, глянул на часы выставляю будильник на 9,5 часов +, а потом ложусь спать. Я знаю, что обычно просыпаюсь спустя 8,5 часов сна (если с открытой форточкой то 7,5). Будильник я ставлю для того, чтобы не дай бог не спать больше чем положено (тогда я хожу разбитый до обеда). Будильником не разу не воспользовался, всегда сам вставал бодрячком. Но если лег в три, то подъем соответственно ~11. А если надо в 7 - правило не работает. Ложись раньше! А если увлекся, как вчера?

Придумался другой инструмент как микс нескольких. Уже давно практикую такую штуку: вставать стоит тогда, когда в голове появится идея, мотивирующая тебя так сильно, чтобы буквально поднять тебя и усадить за ее реализацию. Это работает, но не так часто, как хотелось бы. Дело в том, что сознание по утрам играет со мной в игры, если его удалось обмануть пару раз, то на третий оно придумывает железный аргумент "а почему бы и нет". И вот в ходе очередной такой игры в уламывание, я сегодня нашел еще хак.

Мотивировать себя что либо сделать намного легче, если спросить лежа утром на диване "а как мне сделать Сегодня +1?". Не думать при этом, что "завтра тоже надо будет +1, а за месяц надо будет +30 и вообще я это делаю потому что бла бла бла", нет. Только сегодня и только +1. А завтра? А завтра будет завтра.

Сразу как-то так легко стало. Я представил четко сегодняшний день, что я делаю такие-то и такие-то таски. Остальные таски я физически не успею - не супермен же. Ну и ладно! Останутся в моем бесконечном туду до следующего раза. Я приблизительно прикинул какой-то драфтовый план, понимая, что уже в следующую минуту он перестанет отражать действительность. Но все же я понял, что план вполне реальный. И легонько встал.

Следуя другому совету я сразу же взялся за дело - решил написать этот пост. Не фейсбуки, почты или еще что-то там (может это из за того, что они пустые с вчерашнего вечера, не знаю), а именно пост. И вот я уже проснулся и готов брать следующий таск из ТУДУ.

А спать захочу ближе к обеду. И я не буду себя в этом ограничивать. Захочу - значит так надо. Организм не обманешь - свои 8 часов в сутки он заберет, сегодня же, завтра или через неделю предложив сходить на больничный :) Кстати, если будет больничный, я с удовольствием схожу на него, потому как сам тому стал причиной и должен отслужить перед телом эту работу - работу по выздоравливанию. Но в том году я был здоров всю осень зиму и весну, хоть часто выходил на улицу раздетым и сидел в офисе рядом с кашляющими соседями.... Такс, чото мысль пошла в сторону :) Как увязать? А наверное так. Если болен или чувствуешь, что заболеваешь, не мотивируй себя ни на какие подвиги - даже сегодня, даже на крохотные. Просто отдыхай. Так выздоравливание быстрее закончится. Болезнь - это работа по выздоравливанию, и ее стоит проделать так, как ты делаешь свое любимое хобби. Болезнь - это процесс который имеет начало и конец. Очередная таска в туду.

Но лучше будь здоров!

И я вместе с тобой! :)

суббота, 10 января 2009 г.

Как поднять настроение

Вот тут нашел статейку. Для себя взял:

"Истинно мудрый человек всегда весел" Ведмедик Бо

"Попробуйте натянуть улыбку на лицо и удержать её в течение 3 минут. Меня научил этому приёму старый приятель. Сначала я не верила, но такой простой трюк гарантированно избавляет от дурного настроения! И все мутные мысли сразу куда-то исчезают" Ведмедик Бо

"Вообразите себе, что прошло уже целых 10 лет и взгляните на свою проблему с высоты этого времени. И она покажется вам такой незначительной, что невольно вызовет улыбку. Так зачем же расстраиваться сейчас?" Ведмедик Бо

"Мы получаем ровно столько, сколько отдаём!" Ведмедик Бо

"Даже когда Вам грустно, кто-то может влюбиться в Вашу улыбку." Ведмедик Бо

"Распахните окно, посмотрите по сторонам. Это всё ваше! Небо, солнце, каждый порыв ветра! Разве у Вас есть поводы для грусти??" Ведмедик Бо

"Поиграйте сами с собой в забавную игру-головоломку: постарайтесь найти как можно больше положительного в окружающей Вас обстановке. Ведь все жизненные ситуации изначально нейтральны, и обретают смысл лишь тогда, когда мы даём им свою оценку" Ведмедик Бо