Важная информация

User Tag List

Показано с 1 по 6 из 6

Тема: Исходный код на ассемблере Z80 игры The Legend of Zelda: Link's Awakening

  1. #1
    Administrator Аватар для CityAceE
    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    4,537
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    380
    Спасибо Благодарностей получено 
    1,161
    Поблагодарили
    380 сообщений
    Mentioned
    48 Post(s)
    Tagged
    0 Thread(s)

    Post Исходный код на ассемблере Z80 игры The Legend of Zelda: Link's Awakening

    Данная тема является попыткой заинтересовать и привлечь к проекту программистов, чтобы совместными усилиями получить исходный код The Legend of Zelda: Link's Awakening путём дизассемблирования образа картриджа для игровой консоли Nintendo Game Boy.

    Почему именно Game Boy, почему именно Zelda и для чего вообще всё это?

    В основе Nintendo Game Boy лежит разновидность процессора Z80. Код, написанный для процессора Game Boy с незначительными доработками можно скомпилировать для обычного Z80. Game Boy и ZX Spectrum 128 по мощности, графике и звуку вполне сопоставимы. Таким образом вполне реально перенести игру с Game Boy на ZX Spectrum без ощутимого ущерба в качестве. Из исходных текстов в чистом виде можно взять игровую логику, текстовые сообщения, карту. Однако придётся адаптировать графику и звук, а также все процедуры, отвечающие за их вывод. Zelda была выбрана потому, что это общепризнанный шедевр. Это довольно интересная и объёмная игра, а игровой процесс не использует постоянный полноэкранный скролллинг, как, например, в Super Mario Bros., который является проблемой для ZX Spectrum.

    Уже предпринимались попытки перенести данную игру на ZX Spectrum и выглядело это весьма достойно:

    Сравнение оригинальной версии с портом для ZX









    [свернуть]

    Что в итоге?

    На основе исходных текстов можно будет:
    1. Сделать 100%-ный порт для ZX Spectrum и для более продвинутых клонов. Для клонов с расширенными графическим режимами можно будет использовать цветную графику с Game Boy Advanced.
    2. Сделать свою собственную Зельду по собственному сценарию, как это произошло с Castlevania: Spectral Interlude, в которую можно будет поиграть только на ZX Spectrum.

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

    Что потребуется для работы:

    1. Образ игры The Legend of Zelda: Link's Awakening
    2. Эмулятор консоли GameBoy - BGB
    3. Интерактивный дизассемблер IDA Pro v6.8
    4. Загрузчик игры в IDA Pro - nintendo_gb_zelda.7z

    Как пользоваться загрузчиком


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

    Чтобы воспользоваться скриптом, необходимо скопировать его в папку loaders, которая расположена в папке с установленной программой, например c:\Program Files (x86)\IDA 6.8\loaders\. После этого, при попытке загрузить игровой ROM вы получите запрос на использование данного загрузчика:



    При этом произойдёт автоматический выбор типа процессора, распределение памяти на сегменты и их загрузка.
    [свернуть]

    5. Плагин collabREate для IDA Pro, который позволяет коллективно работать над одним проектом. Данный плагин подразумевает работу через сервер. Сервер у меня запущен и как только будут окончательно решены все проблемы с загрузчиком, наберутся желающие для участия в данном проекте, я заведу и раздам учетные записи.

    Архитектура Game Boy:

    Архитектура игровой консоли Nintendo Game Boy несложная. Вы легко и быстро сможете разобраться с ней, даже если вам никогда ранее не доводилось сталкиваться ни с чем, кроме ZX Spectrum. Практически всю исчерпывающую информацию вы сможете найти в этих трёх источниках:
    1. Игровые Приставки - Ремонт и Обслуживание №21 - в данной книге на русском языке даются все основные сведения необходимые для понимания работы Game Boy. Вполне вероятно, что кроме этой книги вам больше ничего не понадобится.
    2. Game Boy Programming Manual - официальная документация от Nintendo на английском языке.
    3. Game Boy CPU Manual - неофициальная документация на английском языке по архитектуре и программированию Game Boy.

    Об игре The Legend of Zelda: Link's Awakening:

    Дата релиза - август 2003 года
    Совокупный рейтинг игры по данным Gamerankings - 89.82%
    Среднее время прохождения игры по данным GameFAQs - 27.6 часов
    Язык игры - английской (существует качественный неофициальный русский перевод)

    Карта игрового мира:


    Технические характеристики ROM'a:

    Название - Legend of Zelda, The - Link's Awakening (USA, Europe)
    MD5 - c4360f89e2b09a21307fe864258ecab7
    Размер страницы - 16 Кб
    Количество страницы - 32

    Примерное распределение ресурсов по банкам памяти


    Провел беглый анализ The Legend of Zelda: Link's Awakening. Всего в игре 32 банка по 16 Кб:

    01 - код
    02 - код, несколько спрайтов
    04
    05
    06
    07
    08
    09 - похоже на карту
    10 - текст
    11
    12
    13 - графика 100%
    14 - графика 100%
    15 - графика 100%
    16 - графика 100% (логотип, фонт)

    Скрытый текст



    [свернуть]

    17 - графика 100% (ещё один фонт)
    18 - графика 100%
    19 - графика 100%
    20 - графика 100%
    21 - текст
    22
    23 - текст
    24 - титры
    25
    26
    27 - половина свободна
    28
    29 - текст
    30 - текст 100%

    Скрытый текст


    Make-up! Jewels!Dresses! I wantit all! Sigh...And some new accessories would be nice...яMake-up! Jewels!Dresses! I wantit all! Sigh...And some new accessories would be nice...Oh! That Ribbon!I need it! Willyou trade for mydog food? Yes No!юYou exchanged б for в! It^s fullof juicy beef!яLucky! Thanks! Well, here^s your в!яEh?! I can^t believe it! Youare the worst!!яI am Manbo, child of the SunFish! Have you got an Ocarina? Yes NoюVery well... Glub Blub Bloop!яAhaha! Then I can teach you mysong! Bloop!яYou^ve learned Manbo^s Mambo! When you get outof the water, play it!яI am Manbo, child of the SunFish! When you play my Mambo, you can warp to Manbo Pond! Trythis tune in thedungeons, too! Cha-cha-cha!яAha... You don^thave an Ocarina,so...Glub glub!яChickens these days don^t have the fighting spirit they usedto! In the old days, they couldfly, flap flap! But now, see? Cluck cluck!яWow! Amazing! That rooster is actually flying!It^s just like Isaid, eh? Have you tried to hold him over your head? CluckCluck!яWooo! Finally! This flying rooster is the greatest!я Here Sleeps The Flying RoosterяEnnh? Who^s this suspicious-looking runt?! Okay boys, let^sget ridda him!яYou must be an assassin sent byMadam MeowMeow to rescue the mutt! You came here to get me, but it is I who will get you!!
    [свернуть]

    31
    32

    Итого в игре 128 кб графики и приблизительно 48 кб текста. Сколько именно в игре кода пока выяснить не удалось.
    [свернуть]

    Полезные ссылки:

    GameBoy ROM disassembly - обсуждение проблем дизассемблирования ROM'ов приставки Game Boy.
    Перенос игр с Game Boy на ZX Spectrum - обсуждение переноса The Legend of Zelda: Link's Awakening на ZX Spectrum.
    С уважением, Станислав.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Activist
    Регистрация
    06.04.2015
    Адрес
    г. Приозерск, Ленинградская обл.
    Сообщений
    299
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    на иде 6.1 лоадер работает.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	idaGB.jpg 
Просмотров:	245 
Размер:	51.0 Кб 
ID:	59595  
    Scorpion ZS-256turbo_Проф ПЗУ27040_Smuc_HDD_PCkeyMause(Scorp)_GS_512+XTR Модем(X-Trade)
    ZX-Evolution rev.С+VDAC+OldGS_512+OpenSMUC+TSFM+TS-conf
    Amiga500 1m+512k
    Schneider EuroPC
    ReVerSE-U16

  4. #3
    Guru Аватар для NEO SPECTRUMAN
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,832
    Спасибо Благодарностей отдано 
    479
    Спасибо Благодарностей получено 
    656
    Поблагодарили
    511 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А как в иде пометить что этот масив данных набор 16битных слов?
    и как пометить что это набор адрессов (там оверчемдохера таблиц)

    в иде вообще есть отмена? если я ткнул не туда а оно надизасемблировало кучу херни...

    щас нет никакого желания выискивать просто...

    - - - Добавлено - - -

    какие есть(есть ли) компиляторы которые из коробки скомпилируют то что нефиговала ида?

  5. #4
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,121
    Записей в дневнике
    36
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    10 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    А как в иде пометить что этот масив данных набор 16битных слов?
    наверное щелкнуть правой кнопкой мыши и выбрать Word?

  6. #5
    Activist
    Регистрация
    06.04.2015
    Адрес
    г. Приозерск, Ленинградская обл.
    Сообщений
    299
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    в иде вообще есть отмена?
    кнопка U (undefine) отменит отмеченное.
    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    и как пометить что это набор адрессов
    по одному unc ,а как блоками тоже интересно.
    Последний раз редактировалось AndyD; 01.02.2017 в 23:31.
    Scorpion ZS-256turbo_Проф ПЗУ27040_Smuc_HDD_PCkeyMause(Scorp)_GS_512+XTR Модем(X-Trade)
    ZX-Evolution rev.С+VDAC+OldGS_512+OpenSMUC+TSFM+TS-conf
    Amiga500 1m+512k
    Schneider EuroPC
    ReVerSE-U16

  7. #6
    Administrator Аватар для CityAceE
    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    4,537
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    380
    Спасибо Благодарностей получено 
    1,161
    Поблагодарили
    380 сообщений
    Mentioned
    48 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    А как в иде пометить что этот масив данных набор 16битных слов?
    Про dw не скажу, но в db выделенный диапазон конвертируется путём нажатия на звёздочку на цифровой клавиатуре.

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    какие есть(есть ли) компиляторы которые из коробки скомпилируют то что нефиговала ида?
    ; Target assembler: RGBAsm (part of ASMotor)
    С уважением, Станислав.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Исходный код трекерov для General Sound?
    от hood в разделе Музыка
    Ответов: 0
    Последнее: 06.11.2016, 11:40
  2. try-catch на ассемблере z80
    от siril в разделе Программирование
    Ответов: 22
    Последнее: 30.10.2012, 21:17
  3. Ответов: 4
    Последнее: 21.01.2012, 18:27
  4. Как сократить код эмулятора Z80 на PC
    от Vladimir Kladov в разделе Эмуляторы
    Ответов: 27
    Последнее: 01.02.2006, 21:18
  5. ZX <-> PC link
    от breeze в разделе Несортированное железо
    Ответов: 17
    Последнее: 12.03.2005, 00:45

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •