Автор Тема: [SMD] Хак Zero Tolerance  (Прочитано 316611 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн FireWing

  • Пользователь
  • Сообщений: 27
  • Пол: Мужской
    • Просмотр профиля
Пока следующего релиза нет, могу дать инфу по формату данных для эпизодов, в ZT (в BZT там еще кое-чего добавилось, но пока эти данные не систематизировал):
Episode map data format

1. 4 bytes: Signature ("ZMAP")

2. 4096 bytes: Textures definition:
  - A texture is 128x64, consists of 8 tiles (32x32), tile order is:
      1 3 5 7
      2 4 6 8
  - Has 256 records
  - A record consists of 8 tile numbers (2 bytes per tile number, big-endian):
      T1_Tile1 T1_Tile2 T1_Tile3 T1_Tile4 T1_Tile5 T1_Tile6 T1_Tile7 T1_Tile8
      T2_Tile1 T2_Tile2 T2_Tile3 T2_Tile4 T2_Tile5 T2_Tile6 T2_Tile7 T2_Tile8
      ..
      T256_Tile1 T256_Tile2 T256_Tile3 T256_Tile4 T256_Tile5 T256_Tile6 T256_Tile7 T256_Tile8

3. 2048 bytes: Texture orders:
     
  - Describes which texture to use on each side of each cell ID (#0 - #255) 

4. 256 bytes: Cell types definiton, one byte per cell, for types explanation, see [CellDefs] section of ztedit.ini.

5. 16 bytes: Level environment, one byte per one level, possible values are:
  - 00: Bright light
  - 01: Dim light
  - 02: Haze
  - 03: No ceiling
  - 04: Black ceiling

6. 16384 bytes: Map data:
  - Each episode has 16 levels
  - Each level is 32x32, one byte per cell, first byte is upper-left corner, last byte is lower-right corner.
  - Each byte defines the cell ID to be placed. E.g. byte 0Ah (10d) causes the game to render the cell according to 10th record of cell types definition set.

Оффлайн Nemesis_c

  • Пользователь
  • Сообщений: 1341
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
о.. полезная инфа.. а я все думал где потолок прописывается..

Оффлайн pedro

  • Emu-Land Team
  • Сообщений: 8798
  • Пол: Мужской
    • Просмотр профиля
На многострадальную Русь на сей раз ополчились не кто-нибудь, а космические пришельцы. Но на их пути встают бесстрашные агенты ФСБ!



Однажды над Москвой завис космический корабль. Люди верили, что они пришли с миром. В тоже время начинается целая серия исчезновений самолетов и вертолетов вместе с их экипажам, которые пытались приблизиться к кораблю. Наконец в руках спецслужб оказываются два свидетеля - люди, побывавшие на корабле и успевшие с него удрать, используя трофейные телепортеры, до того как их чуть не переработали на колбасу роботы.

Был подобран целый отряд сорви голов, посланных на корабль пришельцев.  :wow:

Оффлайн gorgor

  • Пользователь
  • Сообщений: 40
    • Просмотр профиля
pedro, :wow: ня!

Добавлено позже:
FireWing, а реально увеличить кол-во эпизодов, подробив имеющиеся на куски???

Оффлайн FireWing

  • Пользователь
  • Сообщений: 27
  • Пол: Мужской
    • Просмотр профиля
FireWing, а реально увеличить кол-во эпизодов, подробив имеющиеся на куски???
Реально-то оно реально, можно и не дробить - хоть 20 эпизодов сделать, можно ром увеличить до максимума в 4 мб и напихать туда чего угодно. Но для этого нужно ковырять уже сам код от m68k, кто-нибудь достаточно в нем разбирается?

Кстати, в BZT оригинальные уровни из ZT никуда не делись. Новые там находятся не вместо них, а в другом месте совершенно.

Оффлайн Smoke

  • Пользователь
  • Сообщений: 3430
  • Пол: Мужской
  • Get Serious!
    • Steam
    • Просмотр профиля
Я думаю, кол-во карт в эпизоде все-таки будет ограничено не сколько размером рома, а скорей размером оперативки. Т.к. в начале эпизода все карты сразу грузятся в RAM, а далее отдельные карты уже читаются не из рома, а из оперативы. Конечно можно переписать и грузить при каждом переходе карту из рома, но тогда наверно игра станет еще тормознутей

Оффлайн gorgor

  • Пользователь
  • Сообщений: 40
    • Просмотр профиля
Smoke, как тебе такая идея с разбиением эпизодов, чтобы были в них заставки с текстом?
Там можно будет прописать сюжет и текущую миссию с описанием врагов и способом прохождения, допустим.

Оффлайн FireWing

  • Пользователь
  • Сообщений: 27
  • Пол: Мужской
    • Просмотр профиля
Да нет, я не думаю. зачем им грузиться из оперативы-то? Скорость чтения из рома довольно высока, а оперативки мало. Весь эпизод займет почти половину всей оперативки, поэтому вряд ли. В любом случае, надо какой-то отладчик, дизассемблер и какие-нибудь средства разработки. Тут уже ковыряние байтов не особо поможет.

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Ну а если разделить на небольшие, чтобы по 5-6-7-8 уровней каждый эпизод, и так можно сюжет какой-нить придумать...  :?
стоит делить если боссов новых добавлять на каждый, и текстуры.

Оффлайн gorgor

  • Пользователь
  • Сообщений: 40
    • Просмотр профиля
Цитата: FireWing
m68k
у нас сегодня как раз шла речь о процессорах...
8080 - 8 бит (1974 г)
8086 - 16 бит (1978 г)
компания интел

Добавлено позже:
Цитата: Ti_
стоит делить если боссов новых добавлять на каждый, и текстуры.
по моему вы заблуждаетесь..

Оффлайн FireWing

  • Пользователь
  • Сообщений: 27
  • Пол: Мужской
    • Просмотр профиля
у нас сегодня как раз шла речь о процессорах...
8080 - 8 бит (1974 г)
8086 - 16 бит (1978 г)
компания интел
Там хоть ладно интел. А тут совершенно другая архитектура, Motorola 68000. Она еще использовалась изначально в маках и амигах. Но у меня не было ни того ни другого, поэтому дела я с ней не имел вообще.

Оффлайн Lin

  • Пользователь
  • Сообщений: 645
  • Пол: Мужской
    • Просмотр профиля
На рынке видел русскую версию бейонд зиро толеранс. Никто её не пробовал? Может там все исправлено?

Оффлайн Nemesis_c

  • Пользователь
  • Сообщений: 1341
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
pedro, молодэц  ;)

я думаю разрабы были не совсем тупыми и не зря сделали по 16 уровней на эпизод.. 16 я тестил - работает нормально.. притормаживает иногда но в пределах нормы и явно не от количества уровней  :) Зачем увеличивать вообще не понятно.. уменьшать тоже не логично.. кто боссов рисовать будет? это понятно, что можно в zt вставить огромного чувака из bzt, а в bzt вставить трех боссов из zt... а дальше?  :)
в принципе и одним эпизодом с 16 уровнями можно игрока ушатать.. 16 дробленый этажей и 60 лифтов - всего один верный путь.. но это не весело. Сейчас затестил пару карт - вот там весело )))

Добавлено позже:
На рынке видел русскую версию бейонд зиро толеранс. Никто её не пробовал? Может там все исправлено?
пробовали  - то же самое, только с "пириводом" - надо ж с деток денег поиметь...

Оффлайн pedro

  • Emu-Land Team
  • Сообщений: 8798
  • Пол: Мужской
    • Просмотр профиля
Nemesis_c,сколько спрайтов и в каком разрешении нужны для боссов?

Оффлайн Nemesis_c

  • Пользователь
  • Сообщений: 1341
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
в zt если ниче не путаю высота босса как у стены 64 то есть две текстурки в высоту и в ширину вроде так же.. не помню.
кадров дофига, но не больше чем в bzt  :lol: нормально обьяснил - самому понравилось.. пролистай на две странички назад, там ti_ выкладывал рип со всей графикой - там хорошо видно

Оффлайн FireWing

  • Пользователь
  • Сообщений: 27
  • Пол: Мужской
    • Просмотр профиля
Поковырял немного подобием отладчика в Gens KMod. Да, и правда весь эпизод грузится в оперативку  :(
Заодно нашел оффсет в роме ZT, где указаны адреса начала данных для каждого эпизода. Например, в 0x10BE указан адрес начала данных первого эпизода. Попробуйте там поменять что-нибудь - первый эпизод превратится в набор мусора  с кривой палитрой :)

Оффлайн Nemesis_c

  • Пользователь
  • Сообщений: 1341
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
FireWing, этот эмуль попробуй - в нем удобнее.

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
В любом случае, надо какой-то отладчик, дизассемблер и какие-нибудь средства разработки.
IDA Pro GEN/BIN loader (5.2)
да и других тем по хакингу тут хватает.


Добавлено позже:
FireWing, этот эмуль попробуй - в нем удобнее.
удобнее , ток в нем глюк с ram.dmp в файл.

вот тут манулы можешь глянуть:
БИБЛИОТЕКА РОМ ХАКИНГА

лично я использую:
68khtml.rar
и  SM68K.rar
« Последнее редактирование: 04 Март 2011, 23:18:25 от Ti_ »

Оффлайн Smoke

  • Пользователь
  • Сообщений: 3430
  • Пол: Мужской
  • Get Serious!
    • Steam
    • Просмотр профиля
Цитата: FireWing
Да нет, я не думаю. зачем им грузиться из оперативы-то? Скорость чтения из рома довольно высока, а оперативки мало. Весь эпизод займет почти половину всей оперативки, поэтому вряд ли. В любом случае, надо какой-то отладчик, дизассемблер и какие-нибудь средства разработки. Тут уже ковыряние байтов не особо поможет.
Из оперативы 100%. Я на этом принципе свой способ подсчета врагов на уровне замутил. В начале идет подсчет врагов на нетронутых картах, а далее при убийстве/появлении врагов, уменьшается пока не дойдет до нуля. А в оригинале -- обычный пересчет байтов карты через определенные интервалы времени и при различных ситуациях.

Оффлайн Nemesis_c

  • Пользователь
  • Сообщений: 1341
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
удобнее , ток в нем глюк с ram.dmp в файл.
ну это не повод отказываться от простоты и удобства..
апельсина попросить исправить глюк и все.
тот что я выложил - это кажется новейшая версия, то есть не та что тут в соседней теме и не та что у нас на сайте.

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Из оперативы 100%.
Я тоже не думаю, что разрабы придумавшие уникальный кабель, бездарно использовали озу, - значит надо было.
Да кстати в zt вся адресации сделана от-но a6  (ROM:0000069C                 lea     (unk_0_FF8000).l,a6) ;
так же как в RRR.

Добавлено позже:
апельсина попросить исправить глюк и все.
я писал в баг репорт, от отмазался :(  ; я не отказываюсь(знаю про баг), а кто новичек просто не поймет.    Для примера мой первый ассемблер попался  с багом(я это не сразу понял).

Оффлайн Smoke

  • Пользователь
  • Сообщений: 3430
  • Пол: Мужской
  • Get Serious!
    • Steam
    • Просмотр профиля
Цитата: Ti_
Да кстати в zt вся адресации сделана от-но a6
И в BZT тоже. Ужасно надоедает подсчитывать эти относительные адресации :ohmy:

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
И в BZT тоже. Ужасно надоедает подсчитывать эти относительные адресации :ohmy:
а не надо подсчитывать, надо жать CTRL+R  и в base adress вписывать  0xFF8000;
получишь - ROM:0000BFC6                 cmp.w   word_0_FF0E38-unk_0_FF8000(a6),d4;
(я даж в мануле своем писал)
Правда чтобы все сразу так сделать надо скрипт изобрести, сумеешь если)

А для первоначального дизасма надо использовать мап-файл, как раз в этом эмуле 'shella он есть, только как там объяснять не буду, не спрашивайте. Тема тут есть об этом эмуле. Дабы не разводить оффтопы

Добавлено позже:
И в BZT тоже. Ужасно надоедает подсчитывать эти относительные адресации :ohmy:
Еще хочу добавить, если дизасмить с лодыром, IDA выдает такое:
ROM:0000BD24                 cmpa.l  dword_0_FFFF8E78(a6),a0
ROM:0000BD28                 beq.s   locret_0_BD68
ROM:0000BD2A                 move.l  a0,dword_0_FFFF8E78(a6)

На самом деле, должно быть:
Цитата
ROM:0000BD24                 cmpa.l  -$7188(a6),a0
ROM:0000BD28                 beq.s   locret_0_BD68
ROM:0000BD2A                 move.l  a0,-$7188(a6)

Это для firewing'а чтобы не сбился с толку.
Как выход - попрбовать сегмент FFFFxxxx-FFFFFFFF удалить тогда вроде пофиксятся.


Добавлено позже:
тот что я выложил - это кажется новейшая версия, то есть не та что тут в соседней теме и не та что у нас на сайте.
А вот проверил, в этой 'новейшей' исправлено. Почему тогда не выкладывали?  :?

Оффлайн Nemesis_c

  • Пользователь
  • Сообщений: 1341
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
А вот проверил, в этой 'новейшей' исправлено. Почему тогда не выкладывали?  :?
ну как.. на сайте у нас ты бы стал искать? наверное нет. тут тему забросили - значит никому не интересно. ему некогда и лень, а мне просто лень - тем более у меня есть а больше никому не интересно   :) (это моя версия)

Добавлено позже:
Пока следующего релиза нет, могу дать инфу по формату данных для эпизодов, в ZT (в BZT там еще кое-чего добавилось, но пока эти данные не систематизировал):
Episode map data format

1. 4 bytes: Signature ("ZMAP")

2. 4096 bytes: Textures definition:
  - A texture is 128x64, consists of 8 tiles (32x32), tile order is:
      1 3 5 7
      2 4 6 8
  - Has 256 records
  - A record consists of 8 tile numbers (2 bytes per tile number, big-endian):
      T1_Tile1 T1_Tile2 T1_Tile3 T1_Tile4 T1_Tile5 T1_Tile6 T1_Tile7 T1_Tile8
      T2_Tile1 T2_Tile2 T2_Tile3 T2_Tile4 T2_Tile5 T2_Tile6 T2_Tile7 T2_Tile8
      ..
      T256_Tile1 T256_Tile2 T256_Tile3 T256_Tile4 T256_Tile5 T256_Tile6 T256_Tile7 T256_Tile8

3. 2048 bytes: Texture orders:
     
  - Describes which texture to use on each side of each cell ID (#0 - #255) 

4. 256 bytes: Cell types definiton, one byte per cell, for types explanation, see [CellDefs] section of ztedit.ini.

5. 16 bytes: Level environment, one byte per one level, possible values are:
  - 00: Bright light
  - 01: Dim light
  - 02: Haze
  - 03: No ceiling
  - 04: Black ceiling

6. 16384 bytes: Map data:
  - Each episode has 16 levels
  - Each level is 32x32, one byte per cell, first byte is upper-left corner, last byte is lower-right corner.
  - Each byte defines the cell ID to be placed. E.g. byte 0Ah (10d) causes the game to render the cell according to 10th record of cell types definition set.
пятый и шестой пункты наоборот...

Оффлайн FireWing

  • Пользователь
  • Сообщений: 27
  • Пол: Мужской
    • Просмотр профиля
Да, точно наоборот  :)

Оффлайн r57shell

  • Пользователь
  • Сообщений: 1402
    • Просмотр профиля
А вот проверил, в этой 'новейшей' исправлено. Почему тогда не выкладывали?  :?
На сайте новейший. Новее него только у меня, там я начал добавлять просмотр графики но забросил.

Оффлайн Nemesis_c

  • Пользователь
  • Сообщений: 1341
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
попробовал в bzt для первого эпизода палитру подобрать..
как-то там все мутно очень.. ошибка похоже не в палитрах а в текстурах.. а скорее всего и там и там..
например пол - есть полоска отображаемая одним цветом - а акс видит в ней два, думал мож в другой палитре берется цвет повторный - нифига...

Добавлено позже:
и с оружием путаница - нарисовано то грамотно, а палитру используют черти как. разные цвета в оружии используют одну ячейку в палитре. то есть как ни меняй - будет косяк.. надо перерисовывать нужными цветами

Оффлайн FireWing

  • Пользователь
  • Сообщений: 27
  • Пол: Мужской
    • Просмотр профиля
Палитру можно достать прямо из рома. Эмуляторами и прочими утилитами отображаемые цвета не всегда идентичны оригинальным. А оффсет палитры попозже выложу, у меня это всё дома лежит.

Оффлайн Nemesis_c

  • Пользователь
  • Сообщений: 1341
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
на первый эпизод bzt палитра тут B9CBE..

Оффлайн Smoke

  • Пользователь
  • Сообщений: 3430
  • Пол: Мужской
  • Get Serious!
    • Steam
    • Просмотр профиля
Цитата: Nemesis_c
пятый и шестой пункты наоборот...
В смысле наоборот? 16 bytes: Level environment получается в самом конце лежат?