Разработка и ромхакинг > Ромхакинг и программирование
The Ooze (SMD) - Хакинг и секреты
<< < (3/4) > >>
Чинджер:
Segaman, спасибо. Я уже прошел всю игру собрав 50 днк и прохождение записал. В благодарность могу тебе сказать что в игре 51 молекула днк. Только 51-ю не могу взять. Она находится в уровне 4-1 (то есть, их там 6).
Что ты можешь про неё рассказать? Знаешь как её взять?
p.S. Уже понял что некак.
Roket:
Чинджер, это скорее всего молекула с второго подуровня этого же уровня. Её никак не взять. Только если ты не смоешься в унитаз с третьего босса в тот подуровень. От подуровней короче зависит.

Первый унитаз -верхний подуровень, второй унитаз -нижний подуровень.

Запиши всё прохождение со всеми развилками и молекулами. :)
Чинджер:

--- Цитата: Roket от 01 Июнь 2014, 02:19:06 ---Чинджер, это скорее всего молекула с второго подуровня этого же уровня. Её никак не взять. Только если ты не смоешься в унитаз с третьего босса в тот подуровень. От подуровней короче зависит.

Первый унитаз -верхний подуровень, второй унитаз -нижний подуровень.


--- Конец цитаты ---
Точно, большое спасибо. Сразу вспомнил что на третьем боссе два унитаза.
Metamorfer:

--- Цитата: Segaman от 28 Май 2014, 00:12:21 ---Roket, косяков в игре нет.

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

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

PS: Подскажите что делать с файлом "Ooze, The (JU) [CreditsFix].ips" который выложил Segamen. Я понимаю что это патч для рома "Ooze, The (JU)" который поправляет какие-то проблемы с "кредитцами", но как именно патчатся ромы файлами ips, пока не в курсе (не сталкивался). Спасибо.
Segaman:

--- Цитата: Metamorfer от 18 Декабрь 2014, 05:11:38 ---Здравствуйте. Все же один косячек есть - это стрельба по умолчанию вниз. Очень хотелось бы, если есть такая возможность (ну и конечно же желание), сделать небольшое исправление этой замечательной игры. Только все остальное оставить как есть, что бы так сказать оригинал, но без этого досадного косячка.  Заранее премного благодарен. 

--- Конец цитаты ---
бессмысленно. зачем исправлять это вообще не ясно. и куда же ему стрелять? вправо? или может по диагонали или вовсе вверх?

--- Цитата: Metamorfer от 18 Декабрь 2014, 05:11:38 ---PS: Подскажите что делать с файлом "Ooze, The (JU) [CreditsFix].ips" который выложил Segamen. Я понимаю что это патч для рома "Ooze, The (JU)" который поправляет какие-то проблемы с "кредитцами", но как именно патчатся ромы файлами ips, пока не в курсе (не сталкивался). Спасибо.

--- Конец цитаты ---
добро пожаловать
krocki:

--- Цитата: Metamorfer от 18 Декабрь 2014, 05:11:38 ---Здравствуйте. Все же один косячек есть - это стрельба по умолчанию вниз. Очень хотелось бы, если есть такая возможность (ну и конечно же желание), сделать небольшое исправление этой замечательной игры. Только все остальное оставить как есть, что бы так сказать оригинал, но без этого досадного косячка.  Заранее премного благодарен.
--- Конец цитаты ---
Он наверное имел ввиду.....куда навёл туда и плюнул, при этом не надо держать стрелку нажатой. :?

Кстати надо будет её взломать!
А то чё-то кодов почти нет на неё.
Metamorfer:
Да-да, именно это и имел ввиду )) куда последний раз направлялся, туда и плевать по умолчанию. Это вроде и не чит- не испортит правил игры, но играть будет приятнее. Это скорее всего просто недочет программистов (имхо).
PS: Спасибо за ссылочку на Lunar IPS.
SeregaZ:
ковырял звуки Comix Zone, тут смотрю Ooze тоже из той оперы и действительно распаковывается тем-же методом что и Comix Zone. Ааааааднака! есть там некоторые сэмплы, с хитрыми флагами:
FLAGS =$C6

что с ними делать? в каком формате это? это не DPCM, как в МК3 или WWF Arcade, это не просто 4 бита PCM, ну и это не стандартные 8 бит сэмплы как ежели бы флаг был FLAGS =$46

а то я для своей онлайн базы предварительно конвертирую все непонятное в 8бит PCM. иначе при сборке ничего не получится. так МКашные сэмплы теперь доступны для использования в обычном, немодифицированном GEMS. хотя с этим WWF тоже не все так однозначно... видимо там два банка для GEMS... хотелось бы знать точно что там за формат. в Ooze таких сэмплов всего штуки 3 наверное. в Comix Zone побольше, но я думаю это тот-же формат. посему хотелось бы знать, чтоб конвертануть.

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

--- Цитата ---2017-07-09 00:49:42 ValleyBell ... no, really? Comix Zone has even another custom compression for 4-bit samples
2017-07-09 00:50:31 SeregaZ and where to get key for decompress?
2017-07-09 00:50:51 ValleyBell There is a huge (0x100 bytes) look-up table at offset 0x01F8 in the driver.
2017-07-09 00:51:23 ValleyBell (just btw, I have no clue how to use that table)
2017-07-09 00:52:11 ValleyBell or maybe it's just 0xF0 bytes and begins at 0x200
2017-07-09 00:52:53 ValleyBell Since the table is pretty large, it's probably some sort of ADPCM.
--- Конец цитаты ---
писец... и чо делать?
Segaman:
SeregaZ, дебажить
SeregaZ:
так не умею :) я ж не ромхакер... асмы, брейки, джампы - китайская грамота. с DPCM все было понятно что делать с таблицей, а вот что делать с ADPCM - черт его знает. там таблица куда больше, чем 16 значений таблицы DPCM. мне бы формулу... как в DPCM - берем 4 младших бита, это номер ячейки в таблице из 16 значений. прибавляем к $80, стало $83 скажем, берем старшые 4, опять номер ячейки и прибавляем к $83 - и так до конца сэмпла. получается замечательный 8 битный сэмпл :)

а тут черт знает. предположительная таблица:

--- Код: ---Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

00000200   00 F9 FA FB FC FD FE FF  00 01 02 03 04 05 06 07    щъыьэюя       
00000210   00 F6 F8 FA FB FD FE FF  00 01 02 03 05 06 08 0A    цшъыэюя       
00000220   00 F0 F3 F6 F8 FA FC FE  00 02 04 06 08 0A 0D 10    руцшъью       
00000230   00 E9 ED F1 F5 F8 FB FE  00 02 05 08 0B 0F 13 17    йнсхшыю       
00000240   00 E2 E8 ED F1 F6 F9 FD  00 03 07 0A 0F 13 18 1E    винсцщэ       
00000250   00 DA E1 E8 EE F3 F8 FC  00 04 08 0D 12 18 1F 26    Ъбиоушь       &
00000260   00 D2 DB E3 EA F0 F6 FB  00 05 0A 10 16 1D 25 2E    ТЫгкрцы      %.
00000270   00 CA D4 DD E6 ED F4 FA  00 06 0C 13 1A 23 2C 36    КФЭжнфъ     #,6
00000280   00 C1 CD D8 E1 EA F2 F9  00 07 0E 16 1F 28 33 3F    БНШбктщ     (3?
00000290   00 B7 C5 D1 DD E7 F0 F8  00 07 10 19 23 2E 3A 48    ·ЕСЭзрш    #.:H
000002A0   00 AD BD CB D8 E3 EE F7  00 09 12 1C 28 35 43 52    ­ЅЛШгоч    (5CR
000002B0   00 A3 B5 C4 D3 E0 EC F6  00 0A 14 20 2D 3B 4B 5C    ЈµДУамц    -;K\
000002C0   00 98 AC BD CD DC E9 F5  00 0B 17 24 32 42 54 67    ˜¬ЅНЬйх   $2BTg
000002D0   00 8C A2 B6 C8 D8 E7 F4  00 0C 19 28 38 4A 5D 73    Њў¶ИШзф   (8J]s
000002E0   00 80 98 AE C2 D4 E4 F3  00 0D 1C 2C 3E 51 67 7F    Ђ˜®ВФду  ,>Qg
--- Конец кода ---
Segaman:

--- Цитата: SeregaZ от 04 Октябрь 2017, 18:18:09 ---так не умею :) я ж не ромхакер... асмы, брейки, джампы - китайская грамота. с DPCM все было понятно что делать с таблицей, а вот что делать с ADPCM - черт его знает. там таблица куда больше, чем 16 значений таблицы DPCM. мне бы формулу... как в DPCM - берем 4 младших бита, это номер ячейки в таблице из 16 значений. прибавляем к $80, стало $83 скажем, берем старшые 4, опять номер ячейки и прибавляем к $83 - и так до конца сэмпла. получается замечательный 8 битный сэмпл :)

а тут черт знает. предположительная таблица:

--- Код: ---Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

00000200   00 F9 FA FB FC FD FE FF  00 01 02 03 04 05 06 07    щъыьэюя       
00000210   00 F6 F8 FA FB FD FE FF  00 01 02 03 05 06 08 0A    цшъыэюя       
00000220   00 F0 F3 F6 F8 FA FC FE  00 02 04 06 08 0A 0D 10    руцшъью       
00000230   00 E9 ED F1 F5 F8 FB FE  00 02 05 08 0B 0F 13 17    йнсхшыю       
00000240   00 E2 E8 ED F1 F6 F9 FD  00 03 07 0A 0F 13 18 1E    винсцщэ       
00000250   00 DA E1 E8 EE F3 F8 FC  00 04 08 0D 12 18 1F 26    Ъбиоушь       &
00000260   00 D2 DB E3 EA F0 F6 FB  00 05 0A 10 16 1D 25 2E    ТЫгкрцы      %.
00000270   00 CA D4 DD E6 ED F4 FA  00 06 0C 13 1A 23 2C 36    КФЭжнфъ     #,6
00000280   00 C1 CD D8 E1 EA F2 F9  00 07 0E 16 1F 28 33 3F    БНШбктщ     (3?
00000290   00 B7 C5 D1 DD E7 F0 F8  00 07 10 19 23 2E 3A 48    ·ЕСЭзрш    #.:H
000002A0   00 AD BD CB D8 E3 EE F7  00 09 12 1C 28 35 43 52    ­ЅЛШгоч    (5CR
000002B0   00 A3 B5 C4 D3 E0 EC F6  00 0A 14 20 2D 3B 4B 5C    ЈµДУамц    -;K\
000002C0   00 98 AC BD CD DC E9 F5  00 0B 17 24 32 42 54 67    ˜¬ЅНЬйх   $2BTg
000002D0   00 8C A2 B6 C8 D8 E7 F4  00 0C 19 28 38 4A 5D 73    Њў¶ИШзф   (8J]s
000002E0   00 80 98 AE C2 D4 E4 F3  00 0D 1C 2C 3E 51 67 7F    Ђ˜®ВФду  ,>Qg
--- Конец кода ---

--- Конец цитаты ---
выглядит круто. а что если эта таблица работает от нагнетания?
скажем если сейчас положение динамика 80 (тишина), то используется первые 16 байт,
если 90, то уже вторые и т.д.

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

ставишь бряк на чтение из рома в этой таблице, и как-то лько будет чтение, эмуль остановится и покажет код игры, по которому можно будет понять, что именно он делает со значениями из этой таблицы
SeregaZ:
 :'( вот вот... пошла китайская грамота. сам файл драйвера не поможет? мортал комбатовский драйвер мне дали в виде asm файла, в котором была таблица. я правда все равно не понял чего они от меня хотят, и потом на пальцах формулу с DPCM объясняли... нельзя ли в данном случае как-то задизасемблеть этот самый драйвер? некоторые корявые сэмплы и файл драйвера приложил:
https://www.dropbox.com/s/aqqwzp3c91uojv6/ComixZone.zip?dl=1
формулу бы :(
Skay:

--- Цитата: Segaman от 06 Декабрь 2010, 06:24:11 --- Брал карик соника 2, набирал читы, не выкл-ая консоль, вынимал карик и вставлял Ooze. Результат - меню выбора уровня при нажатии A+Start.
--- Конец цитаты ---
хах, прямо в тему статью сегодня встретил, почему такое происходит https://geektimes.ru/post/293737/
Segaman:
SeregaZ, попробуй корруптить эту таблицу и смотреть чот изменится.
я полагаю что я близок к истине, говоря как работает таблица :)
SeregaZ:
так проблема в том, что в комикс зон есть в опциях проигрывание мелодий, а вот проигрывание сэмплов, как например в том-же МК3 - там не предусмотрено. то есть я даже не знаю что там должно быть, какие звуки чтоб хоть как-то ориентироваться :) если бы были бы там опции проигрывания всех sfx - можно было бы тупо взять и записать аудио, а после переконвертировать вавку в 8 бит без головы. никто бы и не заметил разницы... но я без понятия что именно там должно быть.
SeregaZ:
и что-то я как-то протупил... смотрел в Comix Zone, где не было проигрывателя спецэффектов. сегодня дотумкал посмотрел и в Ooze тоже - и там проигрыватель есть! :) правда допереть еще надо как им пользоваться... так вот первый сэмпл - как оказалось звук смывания унитаза. в смысле тот заковыристый ADPCM. номер 052.

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

Добавлено позже:
в Fusion есть функция записи VGM. записал, потом распарсил, потом собрал по байтно все $2A. согласно флагу частоты из файла сэмпла распакованного GEMS взял частоту 8700. звучит похоже. все равно я не уверен, что там правильные данные. в итоге пожатый ADPCM весит 6.56кб, а этот выдернутый из VGM и получается 8 битный - 11кб. сдается мне это не правильно. смысл тогда было использовать ADPCM, со сложной схемой и таблицей, если тут можно было обойтись обычным 4 битным сэмплом, где без таблицы тупо каждое значение умножать на 15? выигрыш использования ADPCM составил
6.56 * 2 = 13.12 - 11 = 2.12 килобайта? чо серьезно? и столько мороки было?

пойду теперь смотреть на эти данные и думать как оно получается. но это дикая дичь явно :) копаю не в том месте однозначно.
SeregaZ:
смотрел смотрел... ничего не насмотрел :) алгоритм пока так и не понятен. решил перепроверить - а в правильной ли я громкости получаю данные. нашел в списке обычный 8 битный сэмпл. 048 номер. проиграл его в эмуляторе и записал VGM. после отпарсил и собрал в кучу каждый байт. открываю в хексе - и да :) 1 в 1 данные верны. правда в VGM'ке сэмпл получился на пару десятков байт меньше. фиг знает почему. но это все равно хорошо что данные правильные эмулятор показывает - плохо что я имею подлежащее и сказуемое и даже причастие с частицами - но предложение у меня не получается. ну не вижу я эту формулу. а хотелось бы...

но! с другой стороны - ведь данные я получаю верные, следовательно можно просто взять и записать через VGM сэмплы, которые заковыристые - то есть сразу в нормальных 8 битах и положить в архив, конечно подправив где что надо флаги. то есть формула мне как бы и не нужна - я итак получу все что надо. но это только Ooze имеет проигрыватель всех звуков и песен в опциях - в Comix Zone то этого нет - там только музыка... однако! я ведь имею распакованные эти сэмплы и таблица расшифровки одинаковая. значит мне просто нужно взять и подсунуть Oozу сэмплы Comixа, а потом запустить Ooze, проиграть эти подмененные сэмплы, записать VGM и получить эти сэмплы в нормальном 8 битном виде :)

пойду пробывать.

Добавлено позже:
я прям ромхакером себя почувствовал :) идея была хорошая. даже я бы сказал замечательная... но... не сработало :(((
то есть у меня фиксированный размер сэмпла 6 килобайт. и ежели какой-то из сэмплов больше него - то уже не поместится. ну это не главная проблема. главная проблема если сэмпл меньше. если в обычном 8 битном ваве пиши на весь сэмпл значение $80 - это будет проигрывание тишины, то здесь такого нет :) писал 0 на весь сэмпл - там какой-то скрежет получается и зависает. написал $FF - уже лучше, некий повторяющийся звук тоже скрипение пердение, но не зависает. $80 писал - ваще какой-то бесконечный звук. но это все звуки. а мне то надо чтоб заказанный сэмпл проиграл и дальше тишина проигрывалась до конца сэмпла - я потом отрежу эти значения $80 и готово. то есть в итоге проиграть то я сэмпл короткий может и смогу, но проигрываться он будет с этим искажением в конце сэмпла. и причем каждый раз это искажение будет разным на звук. то есть там как бы следующее значение зависит от предыдущего.

вот жеж блин, а я думал наконец-то это незаконченное дело сдвинется с места, сидел весь такой на позитиве и на тебе :)

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

 :'(
Yoti:
Если в 8 битном сэмпле $80, то для 4 битного $40 не пробовал?)
SeregaZ:
не... не $40. а $88.

$40 это %01000000 - то есть первый тик 4 байтный еще что-то содержит, а вот второй уже нет.

$88 - %10001000 - то есть оба "тика" содержат информацию.

и все равно это не должно было сработать :) ибо сжатие. то есть я полагаю что следующее значение зависит от предыдущего. но однако помогло. весь сэмпл, что я забил в пожатом виде $88 в итоге оказался $80 - тишиной как и требовалось.

ага. оно и несработало :) как я и думал $88 означает что нет изменений по отношению к предыдущему байту, а вовсе не тишину.
в сжатом вбил 88 88 88 11
в расжатом вышло 80 80 80 80 80 80 80 79 72 72 .......... и так 72 будет долбить до конца сэмпла. но все равно начало момента, когда все байты начинают иметь одно и то-же значение - это маркер, что сэмпл закончился :) то есть уже можно его вычленить. то есть с размером сэмпла, менее чем оригинальный 7 или скок там килобайт - утрясли :)

Добавлено позже:
тьфу... опять двадцать пять... обычные сэмплы имеют флаг скажем $45 - 4  что обычный 8 битный и 5 номер частоты из таблицы. 5 это значит 10.4k. в этих Оозах и Комиксах встречаются $25 и $64. черт знает что это точно, но вроде как стандартный GEMS их играет. я их не трогал. шипение и пердение было на сэмплах с флагом $C6 - видимо C означало как раз использование этого ADPCM. и 6 что частота 8.7k. начал перезаписывать комиксные в ром Ооза по плану, что выложил выше и тут мне попадается значение $E6. вот жеж твою заногу... и что эта E означает? по накатанном методу вписал в Ооз, но там то был $C6 и вроде проигрывает. это не шипение, а какой-то крик "кийя!". запишу так, но меня терзают смутные сомнения что это не правильно :)

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

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

Добавлено позже:
ну так оно и оказалось - в начале файла весь заголовок, что шелл так любезно вывесил в файл sfx при распаковке комбайном :)



первый байт - флаг частоты
потом 3 (а может 2... это не точно :)) - адрес, с которого начинается сэмпл, то есть $180 от начала файла.
потом 2 байта некий SKIP - черт знает что делает.
потом 2 байта - размер самого сэмпла.
потом еще 2 раза по 2 байта - тоже черт знает что значит некие LOOP и END.
потом пошло тоже самое, но для второго сэмпла и тд и тп.

и начиная с $180 пошел файл сэмпла.


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

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

Добавлено позже:
что-то я залепился велосипедов... упростил - все тот-же 052 трек, $15 сэмпл - ему просто размер увеличил и вписывал в него длинные сэмплы. все. пойду в своей теме архив выкладывать :) два недобитка из оставшегося списка недобитых игр добиты и доступны в онлайн базе GEMS :)

хотя это не совсем правильно - правильней было бы все-таки понять какая там формула для распаковки пожатых сэмплов. и чем C отличается от E.
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

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