Автор Тема: Crash Team Racing  (Прочитано 10059 раз)

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

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Crash Team Racing
« : 04 Январь 2010, 15:40:09 »
Пришла мне тут безумная идея, которую при текущих обстоятельствах осуществить вряд ли является возможным, ибо идея утопическая. Суть такова: переписать Crash Team Racing в виде преимущественно сетевой игры на PC. Вроде Trackmania, Teeworlds, etc. Будет очень весело поиграть, например, ввосьмером на одной карте. А в случае чего можно будет и новых фишек / возможностей добавить.
С этой целью стал я "реверсить" форматы, начал с формата карт. Раскопать пока удалось самую малость - уделяю этому делу не так много времени и внимания, но по-мелочи результаты есть. Пришлось усовершенствовать дебаггер на базе pcsx - добавил некоторые брякпоинты на обмен данными с GPU (а вообще - серьёзно подумывал, не переписать ли там систему брякпоинтов и вьюверов регистров / памяти с нуля, по-человечески, но это пока без особой надобности).
Повторюсь, что целью скорей является интерес, чем стремление к осуществлению идеи. Посему могу забросить всё это дело на любой стадии, просто потеряв этот самый интерес.

Тему, собственно, создал в основном с целью узнать общественное мнение по этому поводу, а заодно и вести своеобразный дневник раскопок, составляя спецификацию форматов и раскрывая особенности игры (эх, как интересно было слушать особенности технической реализации Battle City из уст АнС'а!).

Пока опишу что нарыл. Не технически грамотно, а просто, на словах, ибо пока особенно описывать нечего. В качестве подопытного экспоната взял карту Dingo Canyon, ибо идёт она первой в паке карт. Хранятся карты, как и многие другие данные, в файле BIGFILE.BIG. Формат его чертовски прост - нулевой инт в начале, затем количество файлов, а затем пары unsigned int номер сектора внутри файла / размер файла. Ни имён файлов, ни какой-либо ещё информации нет.
Карта состоит из двух, может более файлов. Один файл - текстуры, которые, я так понимаю, прямоком грузятся в видеопамять без особых преобразований (единственно что - грузятся областями, чтобы не затереть уже присутствующие там данные).
Следующий файл - сама карта, содержащая всю остальную информацию. Правда в память грузится ещё один файл такого же или очень схожего формата - возможно, это фоны и дальние пейзажи, ибо имена объектов преимущественно "big". Ясно станет позже.
Процесс загрузки карты происходит так: в начале файла присутствует размер непосредственно карты, по совместительству некий указатель на "хвост" файла. Ни размер, ни хвост к карте как таковой не принадлежат. Сама карта начинается со смещения 4 сразу после размера. А в хвосте хранится список смещений всех указателей внутри файла карты - сделано это для того, чтобы все относительные указатели (указатели внутри файла) превратить в абсолютные - указатели внутри оперативной памяти. После преобразований эти данные отбрасываются.
Первое, на что я обратил внимание в карте - присутствие именованных объектов. Сами имена не используются, ибо многие из них обрезаны. Но благодаря этому копать стало немного легче. Примерно в начале файла идёт список экземпляров объектов со своими параметрами и указателями на сами объекты, где уже хранятся модели, анимация и другие данные. При этом у некоторых объектов существует несколько моделей - low для отображения вдали (с самым низким качеством), med - для среднего расстояния и hi - для самой близкой дистанции. Сделано это для экономии вычислительных ресурсов.
В данный момент я пытаюсь узнать, в каком формате хранятся вертексы объектов и данные о текстурах. Сами потенциальные вертексы я нашёл, теперь эксперементирую.

Оффлайн Crash Nicker

  • Пользователь
  • Сообщений: 1507
  • Пол: Мужской
  • Пришли из ниоткуда чудовища рогатые
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #1 : 04 Январь 2010, 16:03:36 »
Вот что называется "There is no knowledge that is not power" :thumbup:

Сначала читаешь, думаешь, мол, действительно утопическая идея, но хорошая, а дочитываешь до конца - иной реакции нету, только "Крутааа..."

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #2 : 04 Январь 2010, 17:44:01 »
Сначала читаешь, думаешь, мол, действительно утопическая идея, но хорошая
Я думаю, что кроме вьювера карт я вряд ли что сделаю. Благо у PSX довольно интересная и не слишком сложная система 3D-рендеринга.

Оффлайн GtatoR

  • Пользователь
  • Сообщений: 1
  • Пол: Мужской
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #3 : 05 Январь 2010, 10:15:43 »
Было бы довольно круто переписать её  :)

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #4 : 08 Январь 2010, 03:01:16 »
Есть определённые успехи с исследованием моделек объектов:


Модель имеет четыре массива данных: данные о вертексах, координаты вертексов, текстурные данные/координаты и цвета.
Каждый вертекс хранится в четырёхбайтовом значении. Вертексы идут группами, где первые три создают первый полигон, остальные пририсовывают по одному полигону.
Битовая структура такого вертекса примерно такая: sl??kv?? iiiiiiii ccccccct tttttttt, где:
t - индекс текстурных координат/параметров в их массиве (0 - не текстурировать)
c - индекс цвета в массиве цветов
i - индекс записи в стек (на самом деле, если умножить на 8 - можно получить адрес в стеке).
v - не загружать новый вертекс (взять из стека по индексу i)
l - поменять первый вертекс текущего полигона на первый вертекс предыдущего
s - начало блока вертексов
k - говорит откуда грузить цвет - из Scratch Pad'а (куда они предварительно грузятся) или из памяти. В принципе, эта фишка нужна только на PSX для оптимальной производительности.
? - неизвестно

При чтении каждого вертекса, если не стоит флаг v - просто считывается тройка (X,Y,Z) координат из массива, затем координаты записываются в стек по индексу (i). Если же флаг стоит - координаты по этому самому индексу грузятся из стека, а не считываются из массива. Т.е. координат в массиве может быть меньше, чем вертексов.
Далее, если стоит флаг "l", то при прорисовке полигона он строится не из трёх последних считанных координат вертексов, как было ранее, а вместо координат первого вертекса берутся координаты вертекса, который был первым в предыдущей такой тройке.
При встрече флага s начинается новая серия полигонов, при встрече значения 0xFFFFFFFF прорисовка завершается.

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #5 : 16 Январь 2010, 19:11:35 »
Есть явный прогресс:


Кто хочет - может полюбоваться на модельки, но с текстурами я пока особо не мучался, так что на большинстве объектов они будут отображаться некорректно (T - отключить текстурирование).

Оффлайн Про Игрок

  • Пользователь
  • Сообщений: 1853
  • "А ты...знаешь что такое Red Sky Project!?"
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #6 : 16 Январь 2010, 19:31:09 »
Весьма занимательно.  :cool:

Оффлайн Vivi the Black Mage

  • Emu-Land Team
  • Сообщений: 6587
  • Пол: Мужской
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #7 : 17 Январь 2010, 08:30:29 »
Согласен, буду ждать с нетерпением! :wow:

Оффлайн КомандоRR

  • Пользователь
  • Сообщений: 33
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #8 : 29 Март 2010, 19:31:10 »
Есть успехи?  :wow:

Оффлайн nikita600

  • Пользователь
  • Сообщений: 319
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #9 : 31 Март 2010, 21:03:29 »
Есть вопрос. Если не ошибаюсь, то какой-то эмуль PS поддерживает сетевую игру. А не проще поиграть по сети на том чуде? :)
А по поводу идеи могу сказать только одно... АФИГЕННА!  :D

Оффлайн Про Игрок

  • Пользователь
  • Сообщений: 1853
  • "А ты...знаешь что такое Red Sky Project!?"
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #10 : 31 Март 2010, 21:22:42 »
Цитата
Есть вопрос. Если не ошибаюсь, то какой-то эмуль PS поддерживает сетевую игру. А не проще поиграть по сети на том чуде?
Где только не играл, но по сети 2ой игрок терял управление со старта. Наверное смысл темы был именно в портировании игры на ПК, чтобы поиграть по сети. :cool:

Оффлайн nikita600

  • Пользователь
  • Сообщений: 319
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #11 : 31 Март 2010, 22:22:23 »
Цитата
Где только не играл, но по сети 2ой игрок терял управление со старта. Наверное смысл темы был именно в портировании игры на ПК, чтобы поиграть по сети.
Тогда вопросов больше нет :)

Оффлайн Cyb3rM4n

  • Пользователь
  • Сообщений: 755
  • Пол: Мужской
  • Админ с /1cc/
    • ВКонтакте
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #12 : 27 Апрель 2010, 21:11:31 »
Идею поддерживаю. Есть ещё такая идея - может кто захочт сделать высококполигнальные модельки к игре?

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #13 : 27 Апрель 2010, 21:19:16 »
Круто, HoRRoR, хорошая идея, только сделать это всё одному сложно будет, но нет ничего невозможного, тем более такому ромхакеру и переводчику со стажем как ты .

Оффлайн limnique

  • Emu-Land Team
  • Сообщений: 466
  • Пол: Мужской
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #14 : 27 Апрель 2010, 22:51:40 »
Проект бы точно пользовался популярностью :)

Cyb3rM4n, при достойной реализации задумки я думаю желающих будет хоть отбавляй.
« Последнее редактирование: 27 Апрель 2010, 22:57:28 от limnique »

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #15 : 28 Апрель 2010, 01:42:30 »
Есть вопрос. Если не ошибаюсь, то какой-то эмуль PS поддерживает сетевую игру. А не проще поиграть по сети на том чуде? :)
Чуешь разницу между отправкой 60 раз в секунду (при очень хорошем соединении) состояния нажатых клавиш без какой-либо синхронизации (разве что отсылать с определённой периодичностью дамп оперативки 2МБ) и синхронизацию по ключевым моментам?

Идею поддерживаю. Есть ещё такая идея - может кто захочт сделать высококполигнальные модельки к игре?
Есть Crash Nitro Cap на PS2, по сути ремейк, но с изменённым геймплеем. Естественно, модельки там более лучшего качества.

На самом деле данным проектом сейчас не занимаюсь, т.к. есть куча более важных дел, в т.ч. по учёбе, так что не факт, что к нему вернусь...

Оффлайн nikita600

  • Пользователь
  • Сообщений: 319
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #16 : 28 Апрель 2010, 07:44:42 »
Чуешь разницу между отправкой 60 раз в секунду (при очень хорошем соединении) состояния нажатых клавиш без какой-либо синхронизации (разве что отсылать с определённой периодичностью дамп оперативки 2МБ) и синхронизацию по ключевым моментам?
Чую-чую ;)

Оффлайн NiKiTos

  • Пользователь
  • Сообщений: 3
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #17 : 20 Июнь 2010, 18:43:05 »
HoRRoR, крутая идея, слушай, а можешь мне объяснить, пожалуйста поподробней, как ты модели извлек, я просто тоже хотел подобный проект сделать, мне модели только нужны, я хотел мод сделать на гта, с картами из ктр, давно уже мучаюсь, гуглю-гуглю, и наткнулся сюда... Поможешь, может???..

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #18 : 20 Июнь 2010, 20:50:22 »
Цитата
можешь мне объяснить, пожалуйста поподробней, как ты модели извлек
Установил интимную связь с дебаггером (экзотическую, включая сборку собственного билда), достиг эффекта красных глаз и получил результат.
Формат моделек описан выше, если тебе он о чём-нибудь скажет. Что ещё объяснить - я не знаю, без опыта программирования ты с этими знаниями ничего сделать не сможешь.

Оффлайн NiKiTos

  • Пользователь
  • Сообщений: 3
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #19 : 20 Июнь 2010, 21:16:03 »
HoRRoR, ну опыт программирования у меня небольшой есть, ты только объясни, чем ты bigfile.big-то открыл, дальше я сам разберусь...
« Последнее редактирование: 20 Июнь 2010, 21:24:14 от NiKiTos »

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #20 : 21 Июнь 2010, 00:54:25 »
Распаковщик писал сам. А может и вручную файлы вынимал, не помню уже точно.

Оффлайн NiKiTos

  • Пользователь
  • Сообщений: 3
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #21 : 22 Июнь 2010, 18:59:22 »
HoRRoR, а какой распаковщик??? o_0

Оффлайн AKuHAK

  • Пользователь
  • Сообщений: 135
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #22 : 05 Сентябрь 2010, 23:13:24 »
Можно вопрос - а как можно найти и заменить официальные чит-коды в образе? Например Display Turbo Counter: Hold L1 + R1 and press Triangle, Down, Down, Circle, Up - каким образом можно найти данную последовательность в гекс формате?

Оффлайн deeppurple1968

  • Пользователь
  • Сообщений: 7
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #23 : 28 Июнь 2013, 21:39:24 »
Как обстоит ситуация сейчас? Видать всё заглохло?

Оффлайн TiberiyLTim

  • Пользователь
  • Сообщений: 340
  • Пол: Мужской
  • -=TLT=-
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #24 : 30 Июнь 2013, 15:16:03 »
На PC же есть ряд таких игр, некоторые из которых открыты - проще взять их код.

Оффлайн UltraFatalSlash

  • Пользователь
  • Сообщений: 274
  • Пол: Мужской
  • Уывбин дискаверед!!!! О____О
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #25 : 08 Июль 2013, 20:23:46 »
Требую воскрешения проекта! Даешь наконец Станцию Оксида на двух игроков.

Оффлайн AKuHAK

  • Пользователь
  • Сообщений: 135
    • Просмотр профиля
Re: Crash Team Racing
« Ответ #26 : 09 Июль 2013, 14:25:25 »
Требую воскрешения проекта! Даешь наконец Станцию Оксида на двух игроков.
GameShark коды отлично работает. Тестировал как-то сколько оксидов могут выдерживать разные уровни )) В японке вообще почти ни один уровень не держит даже двух оксидов, а вот в остальных версиях можно даже 4 в некоторые запихать.

Оффлайн timanike

  • Пользователь
  • Сообщений: 2
    • Просмотр профиля
Crash Team Racing
« Ответ #27 : 16 Декабрь 2016, 15:53:05 »
HoRRoR, доброго времени суток, а на crash team racing карты новые есть возможность создать

Оффлайн v0xy

  • Пользователь
  • Сообщений: 1130
  • Пол: Мужской
    • Просмотр профиля
Crash Team Racing
« Ответ #28 : 16 Декабрь 2016, 16:54:29 »
timanike, хоррор сюда уже года два не заходил. Ищи его на форуме consolgames.ru