PDA

Просмотр полной версии : Апогей-БК01Ц: Игра Zeliard



vinxru
28.12.2011, 15:20
Я тут набросал несколько экспериментальных программок для Апогея. Апогей может дать полноценный вертикальный и горизонтальный скролл в разрешении 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 - отличная мысль

breeze
28.12.2011, 15:32
Если порезать графику с 16 до 2 цветов, то это в теории нам даст 250 Кб. К тому же, треть из них приходится на интро, финал и прочие заставки. А еще треть на города и анимацию NPC, что не особо жалко порезать.

Вы меня конечно извините, делать вы можете что угодно :) Но мне не даёт покоя один вопрос: «Зачем заведомо делать хуже оригинала?». Разве ace210 когда переносил на ZX Spectrum «Preliminary Monty» и «Sea Dragon» сделал их хуже оригиналов на ATARI?

Если вы так переживаете за объём, сделайте игру на два диска, да хоть на десять. Но только не стоит коцать самое ценное графику и анимацию. Я уж не говорю про то, что с 16 до 2х цветов не так-то просто сконвертировать.

vinxru
28.12.2011, 15:37
Код игры 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 Кб (объем диска).

omaxlab
28.12.2011, 15:40
vinxru, идея отличная! а графику можно так сильно не урезать?

vinxru
28.12.2011, 16:22
А главный ответ на вопрос «Зачем заведомо делать хуже оригинала?»

На компьютере Апогей НЕТ ГРАФИЧЕСКИХ ИГР

Да и возможности Апогея немного скромнее 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-диск то работает?

omaxlab
28.12.2011, 18:15
P.S. ROM-диск то работает?
да! все ок...только глючит немного апогей))

vinxru
31.12.2011, 19:23
http://i082.radikal.ru/1112/eb/b945e25f56fe.png

Шустренько так дизассемблируется. Сначала перепишу на Си, а потом с Си на ассемблер 8080 для Апогея. Потихоньку за год думаю справлюсь.

NovaStorm
31.12.2011, 22:43
Безумству храбрых...
Очень масштабный проект, остаётся только пожелать успехов, и чтобы дизассемблированный исходник сразу завёлся =)

jerri
02.01.2012, 14:14
Может есть смысл поискать более раннюю версию? :)
Zeliard (http://en.wikipedia.org/wiki/Zeliard)

а тут вроде карты zeliardgame (http://zeliardgame.tripod.com/download/)

jerri
02.01.2012, 20:43
вот это оригинал на японском языке
в аттаче эмуль и игра

редакор d88 файлов (http://www.freewarefiles.com/downloads_counter.php?programid=71213)

vinxru
03.01.2012, 20:13
Приколько, голос есть. Но дальше интро игра не идет. После интро пишет какую то фразу иероглифами и всё. Смена дисков через меню не помогает. Там 5 дисков в одном файле.

В этой версии код написан для процессора Z80, это с одной стороны удобнее. А с другой стороны, графику всю переписывать/перерисовывать надо. Возможно её даже придется масштабировать. И вообще непонятно, как этот компьютер работает. Сколько у него ОЗУ и как работает звук.

И в общем от игры мне нужен только код подземелий без функций вывода графики.

jerri
03.01.2012, 23:37
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)

jerri
04.01.2012, 00:15
http://zx.pk.ru/attachment.php?attachmentid=31981&stc=1&d=1325621718

448*400
вот от этого и танцуй

vinxru
04.01.2012, 01:03
448*400
вот от этого и танцуй

448*200. Точно такие же спрайты/тайлы зашиты и в DOS-версию. Только у меня разрешение 192x128 и скролл и адресное пространство кратное 3-м пикселям. Т.е. адрес пикселя на экране: addr = x/3 + y/2*94. А в игре тайлы и скролл кратны 8 пикселям.

Это значит, что цветовое разрешение (атрибуты) не будут кратны тайлам! а это недопустимо. Надо резать все тайлы с 8x8 до 6x6. Причем, цветное разрешение понизится с 8x8 до 1x6, как на MSX.

jerri
04.01.2012, 01:13
vinxru, рекомендую всетаки NECовскую версию

---------- Post added at 01:13 ---------- Previous post was at 01:06 ----------

Кстати ее без проблем можно в 2 раза уменьшить

vinxru
04.01.2012, 01:26
vinxru, рекомендую всетаки NECовскую версию

Она еще и с японскими иероглифами. И скорее всего она заточена под специализированную музыкальную чипину.

---------- Post added at 00:26 ---------- Previous post was at 00:15 ----------

Требуется 28 тайлов в ширину. При разрешении тайла в 8 пикселей на экран шириной 192 пикселя поместится только 24 тайла, а этого мало. При разрешении тайла в 6 пикселей, поместится 32 тайла. То есть, игровое поле целиком влезет и на рамку хватит.

jerri
04.01.2012, 01:27
разделил я пачку дисков

3 диска весит игра

1 диск для отгрузок я так понял

№5 это с неуязвимостью №1

jerri
04.01.2012, 01:28
я бы ее творчески переработал ;)

vinxru
04.01.2012, 01:49
я бы ее творчески переработал

Что например?

Я вот 100500% добавлю еще один дополнительный уровень в конце игры.

jerri
04.01.2012, 01:53
зачем уровень?

---------- Post added at 01:53 ---------- Previous post was at 01:52 ----------

убрал лишнюю графику
оптимизировал пульт и меню паузы

vinxru
04.01.2012, 02:32
А какая графика лишняя?
Что значит "оптимизировал пульт и меню паузы" ?

Да там и в коде масса повторов, например сейчас под рукой кусок:



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. Типа продолжение.

GriV
04.01.2012, 22:28
Модеры перенесите тему в игры, программирование или разное. Ну точно не в флейме ей место.

jerri
05.01.2012, 14:12
vinxru, как продвигается работа?

vinxru
05.01.2012, 19:03
vinxru, как продвигается работа?

Новый год, я пьянствую. :)

jerri
06.01.2012, 15:20
там по ходу до 400 по вертикали графика растягивается искусственно просто удваивая строки

кстати разобрался с форматом д88
если что могу всю поверхность вытащить в один файл

---------- Post added at 15:20 ---------- Previous post was at 15:17 ----------

порезать на файлы пока не смогу :)

vinxru
06.01.2012, 21:25
Спасибо, не надо. Я все таки буду работать с 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. Если туда записать число, то драйвер воспроизведет соответствующий числу звуковой эффект.

Mick
06.01.2012, 21:49
Тема внезапно перенеслась из Флейма и раз такое дело, я начну скидывать сюда факты.

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

vinxru
06.01.2012, 22:09
Инициализация игры и карта памяти

После запуска 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 - Спрайты

Потом я буду код подземелий переписывать. А потом музыку, звуковые эффекты и интро.

vinxru
07.01.2012, 02:42
Карты подземелий

По этой ссылке можно посмотреть 18 карт подземелий.

http://www.gamefaqs.com/pc/575849-zeliard/faqs

Но в ресурсах игры находится 31 карта (файлы MP*.MDT). Возможно часть из этих карт - это уровни с боссами. Плюс еще 9 карт городов (*MP.MDT) и 1 карта - это локация с дворцом (CMAP.MDT).

jerri
10.01.2012, 15:37
vinxru, я тут програмку набросал
выцарапывает из диска чистые данные
там вначале какой-то код
и user disk туда по ходу данные свопятся

vinxru
11.01.2012, 12:49
Я сначала дособеру колонки (http://s009.radikal.ru/i308/1201/e5/b1865bc65e98.jpg) и усилитель (http://s005.radikal.ru/i209/1201/3a/4ee3e3dbdd99.jpg) к ним, а потом примусь за игру.

Atari
15.01.2012, 15:09
господа а это чьё? http://rutracker.org/forum/viewtopic.php?t=3902442

vinxru
15.01.2012, 19:53
господа а это чьё? 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? Очень нужно получить доступ к графике (спрайтам) и прочим ресурсам игры, но к сожалению ни один распаковщик игровых ресурсов с этой задачей не справляется. Буду благодарен за помощь :)

Ewgeny7
03.01.2016, 17:07
vinxru, добрый вечер!
Увы, но vinxru ушел отсюда.
Теперь его можно найти во вконтактике, http://vk.com/vinxru

strikestar
03.01.2016, 17:39
Ewgeny7, благодарю за ответ, попробую с ним связаться!

Может кто-нибудь еще знает ответ на мой вопрос)