TIS-100 — игра для тех, кто знает как программировать на ассемблере
Засел вот в Стиме в одну игру диковинную. Которая, боюсь, не подходит абсолютному множеству геймеров, которые существуют на планете. Если другие игры от Zachtronics ещё хоть более-менее расслабленные в смысле логики, то в TIS-100 всё жёстко, детерминированно, и требует поверхностного знакомства с ассемблером.
Именно так всё и выглядит. Нам дают инструкцию в PDF-файле, которая выглядит как отсканированная книжка в нарочито старом оформлении, под 80-е годы, в которой обведены строки, а на первой странице находится записка от якобы родственницы бывшего владельца загадочной системы TIS-100 — Tesselated Intelligence System.
Предполагается что игрок напишет пару десятков программ в нетривиальном, необычном блочно-вычислительном интерфейсе, и в конце разгадает некую тайну. Наверняка дальше в игре есть какое-то раскрытие сюжета, иначе игра была бы чисто паззлом. Но до этого мне ещё проходить и проходить...
Хотел бы рекомендовать эту игру, но… не знаю, кому! Здесь скорее всего нет людей, которым попрёт кодить на ассемблере (причём хорошо так урезанном относительного современного Intel x86 набора инструкций) компараторы, мультиплексоры, и подобные штуки.
А мне вот понравилось. И механика, и звуки электрических разрядов старых компьютеров. И сложная, блин.
Кстати на Хабре некоторые считают что ничего страшного в ней нет, и можно с ассемблером и не работать.
- 26 декабря 2015, 05:28
Инструкция, это клёво! Я тоже хотел такую штуку сделать под советские доки к приборам.
А к играм для программистов прохладно отношусь, на работе хватает. :)
Мне было бы интересно не прогать на ассемблере, а составлять процессоры. Есть такая штука - схемотехника. Вот она по сравнению с ассемблером дико интересная.
Возможно не совсем то, что нужно, но у того же разработчика есть ещё Ruckingenur и KOHCTPYKTOP.
KOHCTPYKTOP да, очень хорош, я в него залипал года два назад.
Да, схемотехника гораздо интереснее ассемблера. Мы в универе программировали бинарным кодом на смоделированных нами же АЛУ. Это было интереснее, чем делать какие-то штуки на ассемблере.
Я в восторге от этой игры. Наиграл почти 30 часов. Знакомства с ассемблером у меня до этого не было и проблем это не создало. Правда я программирую уже давно)
Задачки классные, особенно на графику. А я еще гордый извращенец и использую всегда минимальное кол-во отсеков для написания, это иногда усложняет задачи так сильно, что каждая строка кода становится на счету и запихивать это все приходится часами =D Еще ачивки там есть очень веселые, которые усложняют некоторые задачи в несколько раз.
Респект!
Написал дешифратор знака без условных переходов?
SIGNAL COMPARATOR? На ачивку чтобы?
Ну да. Это не совсем компаратор по смыслу, ведь компаратор должен сравнивать с другим аргументом, а не с нулём.
Написал) Долго с ним промучился, т.к или я сошел с ума и что-то сперва не так понял, или они изменили переполнение ячейки памяти относительно того, как было в раннем доступе.
А зачем там переполнение? Там вроде от -999 до 999 хранит, и всё. Я решил эту задачу с помощью
NEXT: MOV LEFT,ACC
ADD 3
ADD ACC
JRO ACC
MOV 1,DOWN
JMP NEXT
MOV 0,DOWN
JMP NEXT
MOV 0,DOWN
Аххахаха. Я индус =D Я не додумался до того, что можно ACC в JRO запихнуть... Или я думал, что их JRO с JMP тоже юзать нельзя, но я обошелся без них)
MOV LEFT,ACC
ADD 999
SUB 999
ADD 1
NEG
ADD 999
SUB 999
ADD 1
MOV ACC,DOWN
MOV ACC,LEFT
Не, это я индус. Моё решение подходит только для тестовой выборки, которая там подаётся на вход - от -2 до +2. Если туда подать число меньше чем -2, блок будет вести себя некорректно, и возможно зависнет, хотя не факт.
Отлично придумано.
У меня на уме было какое-то ещё решение, что-то там про вычитание из числа его самого, минус единица, но я потерял эту мысль, когда уцепился за JRO. Это безусловный переход, но переход на смещение. Хотя, думаю, и так уже понятно.
Ну да, мой должен, при любых числах, работать, но тупил я с ним долго) Еще было крайне весело SEQUENCE REVERSER без стэка писать)
Мне кажется, есть ещё какой-то способ. Но придумать его так и не получается.
Как говорит наш лектор по дифференциальной геометрии, у каждой задачи есть еще одно решение)
Советую поиграть в Untrusted, где надо изменять js-код для прохождения уровня. Хорошо знать js необязательно. Многие уровни можно пройти хитростью, хотя некоторые использовали даже алгоритмы поиска пути. Если застрянете или будет интересно как другие прошли, то есть решения.
Мне её уже успел порекомендовать тот же человек, что и TIS-100 мне показал.
Классно, но во втором уровне не допер вчера и лег спать) Потом обязательно попробую продвинуться дальше.
Сделал перевод инструкции к игре.
Скачать можно здесь https://drive.google.com/open?id=0B-VMjg5esldbM09paHdVYTF2bTA
Поддержите меня в моих переводах. Заранее спасибо.