Разработка и ромхакинг > Ромхакинг
[SMD] Rock 'n' Roll Racing -= Ломаем игру=-
<< < (5/112) > >>
topos84:

--- Цитата ---Ну, значит, я его закрашиваю.
--- Конец цитаты ---
Но тогда вся карта летит коту под хвост. :-\  Ведь никто тогда не поедет по длинному пути, в обход. Разве что захочет пострелять врагов, оторвавшись от них чуть ли не на пол круга.

Добавлено позже:

--- Цитата: Ti_ ---а перп.-трамплин.
--- Конец цитаты ---
Дык не нужно это обозначение вообще!
SnowWorm:

--- Цитата: Ti_ от 13 Сентябрь 2009, 14:07:11 ---в хак кстати неправильно цвета добавляются. первый должен быть 0000, а потом 3цвета. (как и оригинале- там не проверял ток).
т.е. $10f010=0000,w.color1,w.color2,w.color3.

--- Конец цитаты ---
а как дальше?
0000,color1b, color1g, color1r, 0000,color2b, color2g, color2r, 0000,color3b, color3g, color3r... ?


--- Цитата: Ti_ от 13 Сентябрь 2009, 19:42:43 ---9 и 10 байт - это высота для трамплина. (уточнение к PDF'ке)

--- Конец цитаты ---
это для блоков 06 и 07 или как? можно подробнее?


--- Цитата: Марат от 13 Сентябрь 2009, 23:43:09 ---Хороший редактор карт не помешал бы.

--- Конец цитаты ---
это потихоньку делается... Сейчас он скорее ещё "недоредактор". уже разбирает файл разжатой трассы на блоки (и для каждого блока - тип, высоты, лужи), чекпоинты, вэйпоинты, кол-во кругов и.т.д, понимает вроде всё что есть в трассе, кроме некоторых странных непонятных мест.
Жаль только алгоритм распаковки-запаковки трассы неизвестен, в итоге вышло бы удобней. А так придётся потом самому трассу паковать специальной прогой и в ром пихать.
topos84:

--- Цитата: Ti_ ---ну можно волнистую паралленльно - бугры
--- Конец цитаты ---
Нехорошо, потому что и так стрелки параллельны, да и лужи много место на рисунке занимают (клетки не так уж и велики для таких обозначений).
topos84:

--- Цитата: Ti_ ---вспомни трассу #3.
--- Конец цитаты ---
Не вышло. Поясни, где она была.
Марат:

--- Цитата: SnowWorm от 14 Сентябрь 2009, 00:22:50 ---
Жаль только алгоритм распаковки-запаковки трассы неизвестен, в итоге вышло бы удобней. А так придётся потом самому трассу паковать специальной прогой и в ром пихать.

--- Конец цитаты ---
Дык, это не проблема, я тебе могу написать алгоритм распаковки и запаковки. Ты на каком языке пишешь?
Марат:

--- Цитата: Ti_ от 14 Сентябрь 2009, 00:44:28 ---если эт ОН:
http://datacompression.info/LZSS.shtml
http://www.mccme.ru/free-books/izdano/2004/it2004p1.pdf
http://compression-links.info/LZSS



--- Конец цитаты ---
Если я не ошибаюсь, то там смещение по другому вычисляется.
topos84:

--- Цитата: Ti_ ---не обязательно же дыра после них идет. вспомни трассу #3.
--- Конец цитаты ---

--- Цитата: Ti_ ---трасса #3 оригинальной игры(перекресток с трамплином)
--- Конец цитаты ---
Трамплин, присущий петле, есть дело обязательное. Без него петлю не сделаешь. Значит и тут не нужно обозначение трамплина.

Добавлено позже:

--- Цитата: Ti_ ---может когда удастся создать новые типы блоков и тут.
--- Конец цитаты ---
Я был бы безмерно рад, если бы удалось хотя бы увеличить размер трассы (до 10х10).

Добавлено позже:

--- Цитата: Ti_ ---сделать поворот раньше , а после T прямую с трамлпином.
--- Конец цитаты ---
Че-то не въезжаю, можешь нарисовать? (только красную линию).
SnowWorm:

--- Цитата: Ti_ от 14 Сентябрь 2009, 00:44:28 ---Добавлено позже:
если эт ОН:
http://datacompression.info/LZSS.shtml
http://www.mccme.ru/free-books/izdano/2004/it2004p1.pdf
http://compression-links.info/LZSS

--- Конец цитаты ---
вторая ссылка (пдф-ка) вроде довольно интересная сама по себе, спасибо, почитаю на досуге.

но практически это не совсем подходит. Я сам пробовал найти какие-нибудь уже готовые алгоритмы, например вот это явно что-то очень хорошее и подходящее:
http://www.programmersheaven.com/download/2260/4/ZipView.aspx
но там есть проблема. Для сжатия используется пара констант. Они напрямую влияют насколько сильно будет сжат файл, но ограничены вычислительной мощностью процессора. И для распаковки нужно использовать их-же. Иначе получается ерунда.
Но даже и в случае если константы будут что надо - возможно алгоритм в РРР использовался чуть не тот и правильно сжать-разжать вообще не получится.


--- Цитата: Марат от 14 Сентябрь 2009, 00:48:02 ---Дык, это не проблема, я тебе могу написать алгоритм распаковки и запаковки. Ты на каком языке пишешь?

--- Конец цитаты ---
о, было-бы великолепно! пишу я на c++, если напишешь подходящие процедуры, или хотя бы опишешь сам алгоритм словами - буду очень благодарен
Марат:

--- Цитата: SnowWorm от 14 Сентябрь 2009, 01:01:05 ---
о, было-бы великолепно! пишу я на c++, если напишешь подходящие процедуры, или хотя бы опишешь сам алгоритм словами - буду очень благодарен

--- Конец цитаты ---
Это хорошо, что на сях, а то я только паскаль знаю и си. Тогда завтра постараюсь написать. Заготовки у меня уже есть, нужно будет только внести кое-какие изменения.
topos84:
Ti_, лишний поворот на 0С усугубит положение того, кто не ищет легких путей (чем больше поворотов, тем больше понадобится времени на их преодоление).
topos84:
Ti_, знак вопроса на твоей второй картинке - да, конечно, там трамплин. Я имел его в виду, а иначе к чему тогда повышение и понижение уровня до и, соотв., после петли? Хотя конечно и с обычной петлей тоже можно это сделать. Короче, понял, теперь буду рисовать трамплин всегда в таких случаях (в случаях с пропастями и островками, рисовать трамплин не буду, потому что он там подразумевается всегда).

Добавлено позже:
Ti_, я забыл, а можно ли на одной клетке и стрелку и лужу поставить? Бугры и лужу? Стрелку и бугры?
topos84:

--- Цитата: Ti_ ---сам конец трамплина поднимает уровнеть на 00 02 04. , и обратно не заедет уже.
--- Конец цитаты ---
Но ведь все равно придется тогда повышать уровень дороги после трамплина, иначе не выйдет петли (эстакад же быть не может тут).

Добавлено позже:
Да, еще вопрос: стрелки в углах бывают? Т.е. на квадрате, который есть угол трассы: Г,L,J,7.

Добавлено позже:
Вот сделал несколько.














SnowWorm:

--- Цитата: Ti_ от 14 Сентябрь 2009, 13:31:45 ---и еще , там походу только 2трамплина!  (слева-направо , и сверху-вниз). , а не 4. !!

--- Конец цитаты ---

технически да, но практически - те трамплины слева-направо и сверху-вниз (тип 06 и 07) это обычные прямые участки дороги, к которым приделаны для красоты бордюрчики чтобы не портить вид оборванным концом. Они даже сами по себе не имеют подъёма вверх, надо самому делать там возвышение на конце.
А для того чтобы убрать оборванность трассы с другой стороны - можно использовать блоки 02 и 03 вместо 17 в том месте где должен быть промежуток (только там кажется высоты надо подгонять, я настолько глубоко с ними не разбирался. Но например на прямых участках, где на конце нету возвышений, этими штуками всё красиво сглаживается).

попробуй сделать что-то вроде последовательности блоков [06 02 04] вместо [04 17 04] в том месте что на скрине видно, вроде должно будет выглядеть получше
Марат:
Вот пока что сделал распаковщик с паковщиком на основе алгоритма Haruhiko Okumuro.
LZSS_RRR.c
Потом напишу другой с оптимизацией, если надо.
Косяков вроде нет, но если что, сообщи мне.
SnowWorm:
сжатые этим трассы можно вставлять в игру, и всё работает! Найс, спасибо!

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

Тут в приложении пара файлов, может поймёшь в чём дело:

original.track1.compressed.bin - это первая трасса в сжатом видел, выдранная из рома. Там ещё перед этим идёт заголовок D404, но он есть абсолютно перед каждой трассой в роме и на распаковку вроде не влияет. Так что в этом файле его нету.

original.track1.decompressed.bin - предидущий файл распакованный этой прогой - http://homepage.corbina.net/~lich/rrr/rrr_decompressor.zip (этот распаковщик вроде правильно всё разжимает, но для нормальной работы не подходит - нету хотя бы вызова из командной строки)

lzss_rrr.track1.compressed.bin - распакованный файл, далее сжатый твоим алгоритмом. Получается немного иначе чем в оригинале в роме, но во время игры никаких ошибок не возникает, так что всё ок.

lzss_rrr.track1.decompressed.bin - оригинальная сжатая выдранная из игры первая трасса, распакованная твоим алгоритмом. Вот тут выходит что-то не то, глянь если сможешь что тут не так.
Марат:

--- Цитата: SnowWorm от 14 Сентябрь 2009, 18:59:19 ---Там ещё перед этим идёт заголовок D404.

--- Конец цитаты ---
Полагаю, что это размер несжатых данных, в данном случае размер трассы в litle endian формате.
Вот, пофиксил. Теперь сжимает точно также, как оригинальный.
LZSS_RRR.C]LZSS_RRR_Fixed[/url]
Ссылку исправил
Марат:
А что это за адрес в документации SnowWorm'a указан $AA8C0?
Я по-началу думал, что это адрес первой трассы первого уровня, а оказалось нет.
--- Цитата: Ti_ от 14 Сентябрь 2009, 19:50:02 ---d404 это перед всеми архивами трасс. может это просто метка. как хочешь менять можно.
перед архивами палитр например 2000 или 8000
хм если d404 = 04d4 , тогда да.
может он просто только на СНЕСЕ нужен был?

неважно вообщем , щас дебаг запустил не считывается это даже.

--- Конец цитаты ---
Видимо это у разработчиков пакер такой был, который перед сжатыми данными пишет информацию о размере сжимаемых данных.
$2000 - видимо для палитры размером 32 байта, т.е. для одной из набора палитр.
$8000 - для палитры размером 128 байт, т.е. для всего набора.
В принципе тебе должно быть виднее, так как ты можешь посмотреть так ли это.
SnowWorm:

--- Цитата: Марат от 14 Сентябрь 2009, 19:34:22 ---Полагаю, что это размер несжатых данных, в данном случае размер трассы в litle endian формате.
Вот, пофиксил. Теперь сжимает точно также, как оригинальный.
LZSS_RRR_Fixed

--- Конец цитаты ---
ссылка та-же что и в первый раз :/
Марат:

--- Цитата: SnowWorm от 14 Сентябрь 2009, 21:08:45 ---ссылка та-же что и в первый раз :/

--- Конец цитаты ---
Не знаю, как так получилось, видимо, не оттуда скопировал.
Вот LZSS_RRR.C

--- Цитата: Ti_ от 14 Сентябрь 2009, 20:32:53 ---$AA8BE - D404
$AA8C0 - track 1

(в оригинальном роме офц)


--- Конец цитаты ---

Хм-м, у меня эта трасса находится по адресу $AAAD8. Ром - Rock n' Roll Racing (U) [!].
SnowWorm:

--- Цитата: Марат от 14 Сентябрь 2009, 21:23:02 ---Вот LZSS_RRR.C

--- Конец цитаты ---

ура, всё ок! Держи виртуальный торт!

насчёт адресов трасс там так (во всяком случае у меня, тоже U! версия):
по офсету $6B1AC находится некий указатель ($0003F8BE). К нему надо прибавить $6B000, получится $AA8BE
По этому оффсету пишется D404 и далее код сжатой первой трассы.
От офсета после последнего байта сжатой трассы отнимается $6B000, полученное число пишется по адресу $6B1B0
Ну и после последнего байта первой сжатой трассы опять пишется D404, и далее код второй трассы. Вроде так, если не ошибаюсь
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

Перейти к полной версии