Опубликованы исходники Prince of Persia для Apple II

    image

    Джордан Мекнер (Jordan Mechner), создатель игры Prince of Persia, как и обещал, опубликовал недавно найденные исходные коды для Apple II на GitHub.

    Ссылка на исходники

    UPD 1
    Также в своем блоге, он опубликовал интересное видео о процессе создания игры.
    Поделиться публикацией
    Комментарии 87
      –15
      Отлично! Будет чему поучиться)
        +111
        Ну да. Например, языку ассемблера 6502.
          –1
          Ну я этим в 11 классе занимался. Написал тогда небольшой эмулятор Денди, марио и танчики запускались.
            +3
            Тут следует поучиться подходу к созданию игры, не всякий станет так увлеченно этим заниматься, а степень увлеченности определяет популярность и признание. Признаться, увидев видео захотелось вновь взять в руки джойстик и услышать эту завораживающую музыку. Вместо этого смотрю с удовольствием этот ролик: habrahabr.ru/post/142232/#comment_4758975
              0
              … и понимаю насколько же был глуп, что бы не пройти 10 уровень :)
              +2
              Возможно, уважаемый Morozov_5F имел ввиду не столько синтаксис и специфические конструкции, сколько алгоритмы и логические ухищрения.
              Но в целом согласен, ассемблер — не самый читабельный язык
            +2
            Что за язык, ко подскажет? Похоже на ассемблер…
              +8
              Игра была написана на 6502 Assembly
                +1
                Теперь понятно, почему она так хорошо шла на NES (Денди), там ведь процессор основан на 6502.
                  +3
                  Ну собственно на другой архитектуре она бы вообще не пошла :)
                    +4
                    А порт на PC мимо Вас прошел?
                      0
                      А как из исходника под 6502 получить машинный код под х86? Неужели полностью его переработать?
                        0
                        Лезем в архивные папки, делаем замеры.

                        Prince of Persia MS-DOS: 502 Кб
                        Prince of Persia NES: 129 Кб
                        Prince of Persia 6502 Source: 497 Кб

                        Учитывая, что DOS-порт весит больше, чем оригинальные исходники(а отличается максимум звуком, запиленным под Sound Blaster), рискну предположить, что там в экзешнике эмулятор 6502. Видимо, Вы правы. Беглый просмотр экзешника при помощи IDA показал, что он еще и запакован.
                          +15
                          <irony>Хороший, видимо, эмулятор был, раз добавлял к Apple II игре VGA графику</irony>
              +5
              Сначала фехтование, потом наносим удар. Как сейчас помню. Так и не прошел до конца игрушку, до сих пор интересно, что в финале.
                +3
                «Картонная» принцесса, как в Принце Госплана?
                  +4
                  «Спасибо тебе Марио, но я не та которую ты ищеш...»
                    +9
                    Держите:
                    youtu.be/U8Kw2pA6hb8
                      +2
                      ох уж этот восьмой уровень. ни с одним так не намучился как с ним.
                        0
                        Его без фехтования убить было нереально. Надо было четко попадать на его атаку. Только, в отличии от автора ролика, всех солдат на пути я убивал.
                          +1
                          На 8 уровне были проблемы только с гигантским прыжком.
                            0
                            Для меня маленького прыжок не составлял проблем, а вотпервый боец не наступал, а когда сам подходил к нему, то он изворачивался и ударял. Это была проблема, как с толстяком на 6-ом
                            0
                            Да, это было выяснено после 15-30 попыток :) Знал бы я тогда, что их можно не убивать…
                          +1
                          спасибо, интересное видео
                            0
                            спасибо, вспомнил детство
                          +3
                          Странно, ожидал увидеть что-то вроде C, но там ASM — действительно, какой год уже игрушке!
                            +8
                            О! Знакомый ассемблер. Эх, кто-нибудь ещё помнит АГАТ-9?
                              0
                              Проще будет наверное эмулятор написать.
                            +6
                            Ждем новых модов этой игры.
                              0
                              Интересно, кто-нибудь его портнёт под современную архитектуру?
                                +44
                                Под DCPU-16, например
                                  0
                                  Это, наверное, будет одна из первых игрушек, которые напишут в 0x10c
                                    0
                                    Увы, уже не будет — только сегодня писали про сапёра. Следующим будет Doom, а потом можно и принца портануть.
                                      0
                                      Doom трудновато будет в 64k поместить.
                                        0
                                        Dwarf Fortress не хотите ли?
                                          0
                                          Хочу, заверните парочку)
                                    +4
                                    Без лицензии не совсем будет ясен правовой статус порта. Я не в курсе, какую часть прав Мехнер передал Ubisoft. Кто-нибудь разбирался в этом вопросе?
                                      +6
                                      Правовой статус порта, я думаю, в данном случае будет интересен только занудам.
                                        +2
                                        Тогда пожалуй юристы Ubisoft зануды, потому что им наверняка будет интересен обсуждаемый вопрос.
                                        –1
                                        Prince of Persia 1 и 2 официально abandonware. Так что ничего страшного; проблемы могут быть только с коммерческим распространением.
                                        0
                                        Под Arduino?
                                          0
                                          Только если Мегу. Памяти маловато.
                                          Хотя... умельцы пишут тетрисы и арканоиды под совместимую платку…
                                        0
                                        Да, Джордан сделал великолепный подарок всем ценителям классики! Есть на что посмотреть, правда скомпилировать похоже не получится, но будем надеяться на обновления
                                          +18
                                          Да ладно, давайте признаем — от ассемблерного кода ценности никакой, кроме исторической. Это вам не квейк3 на Си и не дум.
                                            0
                                            Написать эмулятор порой проще, чем написать игрушку с нуля.
                                              0
                                              Ну написали и дальше чего?
                                              Запустить — да вон бинари и так есть.
                                              Править — привет, неизвестный асм.
                                              Править в новом асме (чтобы эмулятор 2 поддерживал) — извращение.
                                                +2
                                                Почему неизвестный асм? Очень даже известный. Сейчас делают куча хаков игр под старые приставки. В том числе под денди, где асм 6502.
                                              0
                                              Ну вот например человек, который делал порт для С64 мог бы не тратить время на дизассемблирование и разбор игры
                                              popc64.blogspot.de/2011/10/prince-of-persia-for-commodore-64128.html
                                              0
                                              В конце игры «warrior within» или «two thrones» в качестве бонуса после прохождения игры показывался часовой фильм о создании игры. С Karateka до современных версий с комментариями Джордана
                                                +1
                                                Так вот откуда пошли мифы о том, что после прохождения «Ну, погоди!» покажут мультик и споют песню «Бабушки-старушки»??
                                                  0
                                                  Это не мифы. Так оно и есть. Я просто давно проходил все «новую» серию и не помню уже в какой части идут ролики.
                                                    0
                                                    В акелловском издании этого фильма точно не было. Даже если пройти альтернативную концовку во 2, или открыть все бонусы в 3, вам будут доступны только видео в галерее, а среди них самый длинный минут на 5-7 где то.
                                                +1
                                                Кстати, советую заглянуть в твиттер к Джордану, там есть несколько интересных фотографий twitter.com/jmechner
                                                  0
                                                  А он один делал или с кем-то?
                                                    +1
                                                    Судя по копирайтам — один.
                                                      0
                                                      В качестве актеров привлекал младшего брата, в качестве «инвесторов» — частично финансировали родители, если верить фильму.
                                                      –1
                                                      Кто-нибудь портанет под DCPU-16?:)
                                                        +3
                                                        AI в файле CTRL.S
                                                          +4
                                                          Я как-то в детстве методом тыка подобрал код на денди к какому-то «страшему» уровню. Это было очень странно — там нужно было подобрать цифр 10, наверное. Просто тыкал 4fun и, о чудо, мой Принц побежал в дверь.

                                                          Самое обидное, что этот уровень был как-то совершенно бездарно слит.

                                                          Виидмо, это был именно тот момент «удачи», который наступает у каждого человека в жизни )) Только вот жалко, что он наступил не в момент розыгрыша джек-пота лотереи, а в момент, когда малолетний шприц пытался считерить :)

                                                            +6
                                                            было 8 цифр. уровни «угадывал» следующим образом:
                                                            после прохождение уровня давался код, к примеру 12345678, менял местами части кода, половина на половину (56781234), первые две на последние две (78234512) или через одну (13572468) и всегда был новый уровень, с случайным временем. на 14 уровень помню попал с временем больше 3 часов.
                                                              +1
                                                              Мой гуманитарный мозг не был на это способен :)
                                                                0
                                                                А еще можно было в коде из одной цифры вычесть число, а к соседней это число прибавить. То же иногда прокатывало.
                                                                  0
                                                                  А в версии для Gameboy'я была своя система кодов.
                                                                  Когда у меня на 8-м уровне закончилось время — пришлось думать, что делать. После повторного прохождения первого уровня обнаружил, что часть цифр статическая, а часть — отвечает за время :)
                                                                0
                                                                Ну наконец-то. Теперь можно будет внедрить читы и в кои-то веки пройти игру.
                                                                  0
                                                                  Ээээээ. Я в нечитеренную и не играл даже. Разве по всей России в 90-е не крякнутая ходила? Как-то там еще хитро называлась — overloaded или что-то такое.

                                                                  Там по разным буквам давались разные бонусы (ну в плане здоровье поправить или на след. уровень перейти или все что угодно еще, что бывало по ходу игры)ю
                                                                    0
                                                                    Читы были под досовскую версию. Зажимаешь клавишу 5 на numlock и держишь, через пару секунд начинался следующий уровень.
                                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                                      +2
                                                                      Если вдруг у кого ностальгия зашкаливает, есть порт на JAVA — www.princeofpersiaonline.net/
                                                                      (скорее всего нужно будет плагин браузеру ставить)

                                                                      Начал первый уровень, взял меч и умер на первом охраннике, ностальгия сразу прошла )
                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                      +2
                                                                      Одна только вот эта запись
                                                                      TextLine asc «Prince of Persia 1.0 9/7/89»
                                                                      заставляет биться в экстазе…
                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                          0
                                                                          Какие же раньше делали игры! Первого принца переодически тянет погонять до сих пор. Второй (The shadow and the flame) тоже бесподобен. Музыка, геймплей, конь, на которого запрыгивает принц где-то ближе к концу… ммм…
                                                                            +2
                                                                            Вообще вся серия игр о Принце очаровательна. Принц — он такой разный. Начиная от спокойной первой и заканчивая безбашенной Warrior Within. WW я кстати считаю самой лучшей action-игрой. А Sands of Time — это же настоящая восточная сказка!
                                                                              +1
                                                                              Этот товарищ расковырял оригинальный образ принца под Apple II и портировал его на Commodore 64.
                                                                                +4
                                                                                Все-таки до конца не понятно, как эта игра работала на xt-шках (8086 — даже не 80286, а именно 8086) — я сам там ее запускал, она реально работала в cga-режиме, со звуком и не тормозила, памяти хватало и т.д. Непохоже это на эмулятор… Как?

                                                                                И еще я не понимаю, как можно было такую громадину написать на ассемблере.
                                                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                                                    +1
                                                                                    Это же банальное процедурное программирование, просто на ассемблере гораздо больше рутины, чем на C. На самом деле, когда месяц-другой покодишь на асме, начинаешь привыкать к его исключительной простоте и к компактному машинному коду на выходе. Некоторые на асме ОС с приложениями пишут (:
                                                                                      +2
                                                                                      Раньше почти все игрушки писались на асме, так как только на нем можно было использовать все возможности компа. Я в свое время написал пару игр на асме для спектрума, ничего сложного, нужно только попрактиковаться и набраться опыта. В те время у меня была большая тетрадка в которой от руки писал код, потом этот код заносил в редактор на Спектруме и потом отладчиком проверял правильность работы. Тогда все так писали, сначала в тетраде (бумаге), а потом уже в сам комп, не то что сейчас — сразу открыл редактор и пишешь все что тебе надо ). В то время все кто писал на асме знали наизусть весь машинный код, и легко могли вручную перенести инструкции асма в код и наоборот )
                                                                                        0
                                                                                        А зачем в начале в тетрадку нужно было писать?
                                                                                        Я тоже кодил довольно много для спектрума, правда это было для себя и игр я не писал, а в основном копировал разные эффекты которые видел в чужих демках. Код набирал сразу в TASM.
                                                                                        0
                                                                                        PC-версия не на ассемблере написана. Точно помню внутри exe-файла встречались текстовые строки из сишных библиотек.

                                                                                        Собственно был порт под 3 платформы (PC, Amiga, Atari ST), отличался несколько улучшенным разрешением (320x200, 320x240) и слегка улучшенной графикой.
                                                                                          0
                                                                                          Только-что проверил — так и есть:
                                                                                          R6000 — stack overflow, R6003 — integer divide by 0 — явные фрагменты рантайма MS C
                                                                                            +2
                                                                                            В общем, я спросил у него в блоге: jordanmechner.com/blog/2012/03/prince-of-persia-source-code-found/#comment-51533 — может, ответит. Мистика все это, вообще говоря. Принц на ассемблере, порт на PX с другой архитектурой, работа без тормозов на 8068… Не может в природе существовать таких вещей, не может! :-)
                                                                                              0
                                                                                              *PС и *8086, конечно же.
                                                                                                0
                                                                                                Забавно, в этом блоге есть ссылка на историю портирования Принца под «букашку» БК bk0010.narod.ru/pashigorov/files/Povest.html
                                                                                                  0
                                                                                                  Не портирования, а переписывания с нуля. Это совсем разные вещи.
                                                                                                  +1
                                                                                                  в твиттере он быстрее отвечает ;) twitter.com/#!/jmechner/status/192725813693652992

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

                                                                                          Самое читаемое