Просмотр полной версии : Апогей-БК01Ц: Игра Zeliard
Я тут набросал несколько экспериментальных программок для Апогея. Апогей может дать полноценный вертикальный и горизонтальный скролл в разрешении 192x128 8 цветов. (Правда придется пожертвовать 12 Кб ОЗУ).
Может быть мне в следующем году перенести Zeliard на Апогей?
Zeliard занимает 1 Мб места на диске. И это все графика. Если порезать графику с 16 до 2 цветов, то это в теории нам даст 250 Кб. К тому же, треть из них приходится на интро, финал и прочие заставки. А еще треть на города и анимацию NPC, что не особо жалко порезать.
http://s46.radikal.ru/i113/0912/69/6c96f14ab5e5.png http://www.mobygames.com/images/shots/s/309006-zeliard-dos-screenshot-bank-mcga-s.jpg
Еще крайне приятно, это двух-трехголосая спикерная музыка в игре. Она идеально перенесется на 580ВИ53.
Итого, вполне реально скомпоновать всю игру в три программы по 40 Кб. И вообще можно на ROM-диск закинуть всю игру не урезая графики вообще (ну кроме потери цветов).
Игровой экран у Zeliard-а так же почти соответствует Апогею.
А геймплей у этой игры шикарен и потребуется 100 часов, что бы её пройти.
http://www.gameclassification.com/files/games/Zeliard.gif http://agdb.net.ru/images/zeliard_2.jpg http://toppcgames.ru/uploads/posts/2011-07/1309760446_zeliard23.jpg
http://www.youtube.com/watch?v=O8UoXzpSgyg&feature=player_embedded
SpecialistMK87
28.12.2011, 15:30
Это было бы подвигом
ROM disk - отличная мысль
Если порезать графику с 16 до 2 цветов, то это в теории нам даст 250 Кб. К тому же, треть из них приходится на интро, финал и прочие заставки. А еще треть на города и анимацию NPC, что не особо жалко порезать.
Вы меня конечно извините, делать вы можете что угодно :) Но мне не даёт покоя один вопрос: «Зачем заведомо делать хуже оригинала?». Разве ace210 когда переносил на ZX Spectrum «Preliminary Monty» и «Sea Dragon» сделал их хуже оригиналов на ATARI?
Если вы так переживаете за объём, сделайте игру на два диска, да хоть на десять. Но только не стоит коцать самое ценное графику и анимацию. Я уж не говорю про то, что с 16 до 2х цветов не так-то просто сконвертировать.
Код игры Zeliard занимает 10 Кб и отлично дизассемблируется. На первый взгляд игра написана на ассемблере и очень понятна. Так что надо лишь переписать с 8086 на 8080 логику игры и написать новую программу формирования экрана.
---------- Post added at 14:37 ---------- Previous post was at 14:34 ----------
Вы меня конечно извините, делать вы можете что угодно Но мне не даёт покоя один вопрос: «Зачем заведомо делать хуже оригинала?». Разве ace210 когда переносил на ZX Spectrum «Preliminary Monty» и «Sea Dragon» сделал их хуже оригиналов на ATARI?
Если вы так переживаете за объём, сделайте игру на два диска, да хоть на десять. Но только не стоит коцать самое ценное графику и анимацию. Я уж не говорю про то, что с 16 до 2х цветов не так-то просто сконвертировать.
Это что бы собрать магнитофонную версию игры. А если использовать ROM-диск, то места даже с избытком. Сжатая игра для PC занимает 512 Кб (объем диска).
vinxru, идея отличная! а графику можно так сильно не урезать?
А главный ответ на вопрос «Зачем заведомо делать хуже оригинала?»
На компьютере Апогей НЕТ ГРАФИЧЕСКИХ ИГР
Да и возможности Апогея немного скромнее XT с EGA адаптером
---------- Post added at 15:11 ---------- Previous post was at 14:44 ----------
vinxru, идея отличная! а графику можно так сильно не урезать?
http://s45.radikal.ru/i110/1112/cc/ee0740e8f908.png
Уровни отлично выглядят при потере цветов. А вот враги потребуют работы ZX-художника. В отличии от ZX Spectrum тут атрибуты будут 12x2, а не 8x8.
Можно конечно сделать и 3x2, но мне страшно представить программу, которая будет работать с нелинейной видеопамятью.
P.S. Эту картинку я ну очень сильно покоцал. В Дерево можно было бы добавить желтых и синих пикселей. Напомню, в блоке 3x2 (или 12x2) всегда два цвета, один из которых будет черным.
---------- Post added at 15:22 ---------- Previous post was at 15:11 ----------
vinxru, идея отличная! а графику можно так сильно не урезать?
P.S. ROM-диск то работает?
P.S. ROM-диск то работает?
да! все ок...только глючит немного апогей))
http://i082.radikal.ru/1112/eb/b945e25f56fe.png
Шустренько так дизассемблируется. Сначала перепишу на Си, а потом с Си на ассемблер 8080 для Апогея. Потихоньку за год думаю справлюсь.
NovaStorm
31.12.2011, 22:43
Безумству храбрых...
Очень масштабный проект, остаётся только пожелать успехов, и чтобы дизассемблированный исходник сразу завёлся =)
Может есть смысл поискать более раннюю версию? :)
Zeliard (http://en.wikipedia.org/wiki/Zeliard)
а тут вроде карты zeliardgame (http://zeliardgame.tripod.com/download/)
вот это оригинал на японском языке
в аттаче эмуль и игра
редакор d88 файлов (http://www.freewarefiles.com/downloads_counter.php?programid=71213)
Приколько, голос есть. Но дальше интро игра не идет. После интро пишет какую то фразу иероглифами и всё. Смена дисков через меню не помогает. Там 5 дисков в одном файле.
В этой версии код написан для процессора Z80, это с одной стороны удобнее. А с другой стороны, графику всю переписывать/перерисовывать надо. Возможно её даже придется масштабировать. И вообще непонятно, как этот компьютер работает. Сколько у него ОЗУ и как работает звук.
И в общем от игры мне нужен только код подземелий без функций вывода графики.
vinxru, вставь диск 1 в дисковод 1 и пользовательский диск в дисковод 2
он там кажется 4
исчерпывающее описание (http://en.wikipedia.org/wiki/NEC_PC-8801)
---------- Post added at 23:37 ---------- Previous post was at 23:20 ----------
ролик на youtube (http://www.youtube.com/watch?v=vApFuOImNbE)
http://zx.pk.ru/attachment.php?attachmentid=31981&stc=1&d=1325621718
448*400
вот от этого и танцуй
448*400
вот от этого и танцуй
448*200. Точно такие же спрайты/тайлы зашиты и в DOS-версию. Только у меня разрешение 192x128 и скролл и адресное пространство кратное 3-м пикселям. Т.е. адрес пикселя на экране: addr = x/3 + y/2*94. А в игре тайлы и скролл кратны 8 пикселям.
Это значит, что цветовое разрешение (атрибуты) не будут кратны тайлам! а это недопустимо. Надо резать все тайлы с 8x8 до 6x6. Причем, цветное разрешение понизится с 8x8 до 1x6, как на MSX.
vinxru, рекомендую всетаки NECовскую версию
---------- Post added at 01:13 ---------- Previous post was at 01:06 ----------
Кстати ее без проблем можно в 2 раза уменьшить
vinxru, рекомендую всетаки NECовскую версию
Она еще и с японскими иероглифами. И скорее всего она заточена под специализированную музыкальную чипину.
---------- Post added at 00:26 ---------- Previous post was at 00:15 ----------
Требуется 28 тайлов в ширину. При разрешении тайла в 8 пикселей на экран шириной 192 пикселя поместится только 24 тайла, а этого мало. При разрешении тайла в 6 пикселей, поместится 32 тайла. То есть, игровое поле целиком влезет и на рамку хватит.
разделил я пачку дисков
3 диска весит игра
1 диск для отгрузок я так понял
№5 это с неуязвимостью №1
я бы ее творчески переработал ;)
я бы ее творчески переработал
Что например?
Я вот 100500% добавлю еще один дополнительный уровень в конце игры.
зачем уровень?
---------- Post added at 01:53 ---------- Previous post was at 01:52 ----------
убрал лишнюю графику
оптимизировал пульт и меню паузы
А какая графика лишняя?
Что значит "оптимизировал пульт и меню паузы" ?
Да там и в коде масса повторов, например сейчас под рукой кусок:
seg000:7469 houseCursorShow proc near
seg000:7469 mov al, 0Ah ; bx = bl*10+0x100+vFF54
seg000:746B mul bl
seg000:746D add ax, ds:0FF54h
seg000:7471 add ax, 100h
seg000:7474 mov bx, ax
seg000:7476 jmp word ptr cs:3018h ; draw cursor
seg000:7476 houseCursorShow endp
seg000:7476
seg000:747B houseCursorUp proc near
seg000:747B mov al, 0Ah ; bx=bl*10+0x100+vFF54
seg000:747D mul bl
seg000:747F add ax, ds:0FF54h
seg000:7483 add ax, 100h
seg000:7486 mov bx, ax
seg000:7488 mov cx, 0Ah ; Height
seg000:748B loc_748B:
seg000:748B push cx
seg000:748C mov byte ptr ds:0FF1Ah, 0
seg000:7491 dec bx
seg000:7492 push bx
seg000:7493 call word ptr cs:3018h
seg000:7498
seg000:7498 loc_7498:
seg000:7498 call npcAnimation
seg000:749B cmp byte ptr ds:0FF1Ah, 4 ; delay
seg000:74A0 jb short loc_7498
seg000:74A2 pop bx
seg000:74A3 pop cx
seg000:74A4 loop loc_748B
seg000:74A6 retn
seg000:74A6 houseCursorUp endp
seg000:74A6
seg000:74A7 houseCursorDown proc near
seg000:74A7 mov al, 0Ah ; bx=bl*10+0x100+vFF54
seg000:74A9 mul bl
seg000:74AB add ax, ds:0FF54h
seg000:74AF add ax, 100h
seg000:74B2 mov bx, ax
seg000:74B4 mov cx, 0Ah
seg000:74B7 loc_74B7:
seg000:74B7 push cx
seg000:74B8 mov byte ptr ds:0FF1Ah, 0
seg000:74BD inc bx
seg000:74BE push bx
seg000:74BF call word ptr cs:3018h
seg000:74C4
seg000:74C4 loc_74C4:
seg000:74C4 call npcAnimation
seg000:74C7 cmp byte ptr ds:0FF1Ah, 4 ; delay
seg000:74CC jb short loc_74C4
seg000:74CE pop bx
seg000:74CF pop cx
seg000:74D0 loop loc_74B7
seg000:74D2 retn
seg000:74D2 houseCursorDown endp
---------- Post added at 01:32 ---------- Previous post was at 01:30 ----------
зачем уровень?
Что бы привлечь игроков Zeliard. Типа продолжение.
Модеры перенесите тему в игры, программирование или разное. Ну точно не в флейме ей место.
vinxru, как продвигается работа?
vinxru, как продвигается работа?
Новый год, я пьянствую. :)
там по ходу до 400 по вертикали графика растягивается искусственно просто удваивая строки
кстати разобрался с форматом д88
если что могу всю поверхность вытащить в один файл
---------- Post added at 15:20 ---------- Previous post was at 15:17 ----------
порезать на файлы пока не смогу :)
Спасибо, не надо. Я все таки буду работать с 8086 версией. Её все равно надо серьезно переписывать под новый видео-адаптер, поэтому я перепишу её полностью.
Я японскую версию дальше интро не смотрел, но уже есть полезные наблюдения. В 8086-версии вместо половины слайдов интро показывается послание от горе хакеров. Надо будет поискать полноценную английскую версию или найти переводчика с японского, что бы восставновить полноценное интро.
8086 версия сделана с возможностью подключать драйвера различных видеоплат: CGA, TGA, Hercules, EGA, VGA. И это очень удобно. Код непосредственно работающий с видеоплатой вынесен в файлы: gmmcga.bin, gtmcga.bin, gfmcga.bin (для других видеоадаптеров используются другие файлы). Эти файлы надо переписывать на 100%, но и остальные файлы игры так же надо править. Я буду уменьшать графику на 75%. (Тайл с 8 до 6 пикселей). И добавлять аппартный скролл вместо постоянной перерисовки карты. Апогей со своим процессором 8080 просто не успеет перерисовывать весь экран 50 раз в секунду.
---------- Post added at 20:25 ---------- Previous post was at 19:39 ----------
Тема внезапно перенеслась из Флейма и раз такое дело, я начну скидывать сюда факты.
Игра Zeliard разбита на множество файлов. Большинство файлов хранятся в сжатом виде в ресурсных файлах. Три ресурсных файла ZELRES1.SAR, ZELRES2.SAR, ZELRES3.SAR. Каждый по 360 Кб, под размер дискеты. В эти файлы упаковано около 200 файлов игры.
И несколько файлов хранятся в виде отдельных файлов:
Файл ZELIARD.EXE выполняет парсинг файла RESOURCE.CFG (в котором указаны используемые драйвера), загружает драйвера в память, выполняет инициализацию видео (да, именно zeliard.exe, а не файл драйвера), устанавливает видео-палитру, устанавливает обработчики прерываний, загружает файлы stick.bin, game.bin, stdply.bin и запускает загруженный файл game.bin. Обращу внимание, что ни один файл игры не обращается к файлу Zeliard.exe, т.е. кроме инициализации он ничего не делает. И нам он совсем не нужен.
Еще есть файлы с кодом игры STICK.BIN и GAME.BIN. Файл STICK.BIN загружается по адресу 0:100. Он содержит много всяких функций, но главное, это функции загрузки файлов упакованных в ресурсные файлы. Этот файл всегда находится в памяти. Файл GAME.BIN загружаются по адресу 0:A000 и содержит функции инициализации игры. Объем файла всего 1 Кб. Во время работы игры этот файл будет замещен другими файлами.
Файл начального состояния игры STDPLY.BIN. Загружается по адресу 0:0. Это файл идентичен файлу сохранения.
Драйверы видео: GMCGA.BIN, GMEGA.BIN, GMHGC.BIN, GMMCGA.BIN, GMTGA.BIN. Один из этих файлов загружается по адресу 0:2000. Эти файлы содержат функции рисования общие для всей игры.
Драйверы музыки: MSCADLIB.DRV, MSCJR.DRV, MSCMT.DRV, MSCSTD.DRV. Один из них загружаются по адресу 1:100. Драйвер проигрывает музыкальный файл загруженный по адресу 1:3000. Скорее всего запуск и остановка воспроизведения повешена на 60h и 61h прерывание.
Драйверы звуковых эффектов: SNDADLIB.DRV, SNDJR.DRV, SNDSTD.DRV. Загружаются по адресу 1:1100. Драйвер висит на прерывании таймера и реагирует на несколько переменных. Главная из них по адресу 1:75. Если туда записать число, то драйвер воспроизведет соответствующий числу звуковой эффект.
Тема внезапно перенеслась из Флейма и раз такое дело, я начну скидывать сюда факты.
Ну я думаю факты из чего она состоит на PC здесь будет неуместна. Да и мало кому понятна. Для Апогея факты расположения игровых ресурсов - это пожалуйста.
Инициализация игры и карта памяти
После запуска GAME.BIN, в память загружаются из ресурсных файлов: шрифт font.grp по адресу 0:F500 и код "интро" opdemo.bin по адресу 0:6000. Интро по ходу выполнения подгружает изображения (файлы nec.grp, ame.grp...) по адресу 0:A000.
После интро выполняется загрузка файлов:
0:3000 gtmcga.bin - Функции рисования и логики города.
2:3000 gfmcga.bin - Функции рисования и логики подземелья.
2:C000 fight.bin
1:E200 itemp.grp - Всякие спрайты
2:0 magic.grp - Всякие спрайты
2:1800 sworp.grp - Всякие спрайты
0:C000 cmap.mdt - Карта первого города
1:3000 mgt1.msd - Мелодия первого города
1:6000 tman.grp - Анимация главного героя для города
2:3300 ympd.bin
Если войти в пещеру, то происходит загрузка новых файлов. В том числе карты пещеры mrmp.mdt по адресу 0:C000 (вместо карты города), а так же происходит перемещение областей памяти. Например, 0:3000 gtmcga.bin и 2:3000 gfmcga.bin меняются местами.
---------- Post added at 20:58 ---------- Previous post was at 20:54 ----------
Ну я думаю факты из чего она состоит на PC здесь будет неуместна. Да и мало кому понятна. Для Апогея факты расположения игровых ресурсов - это пожалуйста.
На Апогее поменяются только адреса, состав модулей останется таким же. Причем, меняться они будут каждую версию, так как я компилирую без промежутков. На PC все модули выровнены. Из адресного пространства в 192 Кбайт пропадет часть модулей, часть изменит адреса, что бы получилось 40..48 Кб.
---------- Post added at 21:09 ---------- Previous post was at 20:58 ----------
Итого, моя первая цель
Сделать сборку сборку игры без интро и пещер. Мне надо переписать:
gmmcga.bin - Общие функции рисования
gtmcga.bin - Код города
Далее файлы изорбражений, которые необходимо сначала расшифровать, потом их надо масштабировать на 75% и уменьшить кол-во цветов. На это я привлеку народ, так как сам я рисую весьма посредственно.
font.grp - Это шрифт. Только английский. А нам необходимы еще и русские буквы
cmap.mdt - Карта первого города.
tman.grp - Спрайты игрока
itemp.grp - Спрайты
Потом я буду код подземелий переписывать. А потом музыку, звуковые эффекты и интро.
Карты подземелий
По этой ссылке можно посмотреть 18 карт подземелий.
http://www.gamefaqs.com/pc/575849-zeliard/faqs
Но в ресурсах игры находится 31 карта (файлы MP*.MDT). Возможно часть из этих карт - это уровни с боссами. Плюс еще 9 карт городов (*MP.MDT) и 1 карта - это локация с дворцом (CMAP.MDT).
vinxru, я тут програмку набросал
выцарапывает из диска чистые данные
там вначале какой-то код
и user disk туда по ходу данные свопятся
Я сначала дособеру колонки (http://s009.radikal.ru/i308/1201/e5/b1865bc65e98.jpg) и усилитель (http://s005.radikal.ru/i209/1201/3a/4ee3e3dbdd99.jpg) к ним, а потом примусь за игру.
господа а это чьё? http://rutracker.org/forum/viewtopic.php?t=3902442
господа а это чьё? http://rutracker.org/forum/viewtopic.php?t=3902442
Оно и есть
strikestar
03.01.2016, 16:27
Игра Zeliard разбита на множество файлов. Большинство файлов хранятся в сжатом виде в ресурсных файлах. Три ресурсных файла ZELRES1.SAR, ZELRES2.SAR, ZELRES3.SAR. Каждый по 360 Кб, под размер дискеты. В эти файлы упаковано около 200 файлов игры.
vinxru, добрый вечер! Скажите, пожалуйста, как Вы извлекали содержимое файлов .sar? Очень нужно получить доступ к графике (спрайтам) и прочим ресурсам игры, но к сожалению ни один распаковщик игровых ресурсов с этой задачей не справляется. Буду благодарен за помощь :)
vinxru, добрый вечер!
Увы, но vinxru ушел отсюда.
Теперь его можно найти во вконтактике, http://vk.com/vinxru
strikestar
03.01.2016, 17:39
Ewgeny7, благодарю за ответ, попробую с ним связаться!
Может кто-нибудь еще знает ответ на мой вопрос)
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot