Разработка и ромхакинг > Ромхакинг и программирование
[SMD] Rock 'n' Roll Racing -= Ломаем игру=-
<< < (17/111) > >>
Марат:
Ничего мне надо рассказывать. Ты сказал "бит и байт разные вещи." Как будто я и сам не знаю. А мои слова нужно понимать как "ты меня еще учить будешь". Разве не ясно. На счет регистров: Тебе 15 регистров мало что ли?

Добавлено позже:
Да чо теперь удалять пускай уже остается.
r57shell:
я про биты - байты про то что ты в 1 бит ну никак 5 значений не затолкаешь, если только бит не будет у тебя из 5-ти состояний (например комп 5-ричный какойто непонятный). А регистров: a4 в RRR постоянно забит, а насчёт остальных, да, забыл что их так-то 15. а мне потребуется 7 вроде.
Марат:
Один байт нужен для того, чтобы из него брать по одному биту и добавлять его к другим 5 битам. Итого 6 бит, что дает нам вдвое больше значений. Один бит на персонажей, один бит для машин и т.д. Все это берется из одного байта. Этот байт будет 13, как ты и говорил.
r57shell:
а! вот ты про что, ты рассматривал только последний символ который я хотел добавить - он всего 32 варьянта тоесть 5 битов, итого можно расширить 5 полей пароля в два раза, об этом я уже писал, это не айс! Я уже писал что я решил переписать генерацию и запись пароля с более жёстким сжатием, для которого текущие максимальные значения влезут!
Марат:
Регистры всегда можно в стек поместить. И 15 регистров у тебя становятся свободными.
r57shell:
это понятно, у мя тут возник такой вопрос, как в стеке выделить 4 word и потом на них брать указатель?
Марат:
Данные в стек заносятся командой movem. Это если надо много регистров в стек сохранить. А так командой move.x,ea где x - байт, слово или двойное слово. еа - адресный регистр стека. Обычно а7. Стек находится в Озу. Конкретнее можно? Можешь код показать, что тебе нужно.
r57shell:
Да я просто сделал lea(sp) и стэк поинтер не меняю так как сказано что адреса стека возрастают при вталкивании, тоесть я как бы не выделял а юзаю а на (sp,#0) пусто (в мане написано) а я по sp гоняю как по указателю на массив, тоесть за тем что уже выделено и должно быть всё гуд, мне просто надо было массив выделить. терь осталось обратную функцию написать - она легче, но не на много. ладно, уж это то точно зафтра. Получилось на 92 строчки включая 5 строчек коментариев.

Добавлено позже:
Тестировать полюбому запарюсь потом. Такое лучше сразу без багов писать ). Мнебы дебагер получше.
Марат:

--- Цитата: r57shell от 15 Декабрь 2009, 21:48:45 ---__int64 xz=((__int64)12)*24*19*10*4*2*4*4*4*4*8*8*8*10*10*10; снять тревогу! это всего лишь 0x0000342f60000000 ы! скока места ещё остаётся ня! (просто пересчитал)
и чексумма злющая, руками непереберёшь.


--- Конец цитаты ---
Где ты будешь такую чексумму хранить? 48 бит. 60 - 48 = 12 бит. И в этих 12 битах ты планируешь хранить статы? Да и если в конце будет 1 и 10, а в другой раз 10 и 1 чексумма та же самая получится.
Марат:
В оригинале, как я понимаю, под чексумму выделено 16 бит + 1 бит, который одновременно выполняет роль чексуммы и стата. Итого 17 бит. Под статы 43 + все тот же бит, играющий две роли. Итого 44 бита. Я предлагаю взять 5 дополнительных бит из чексуммы. А чексумма будет из 12 бит состоять. В Роад Раш 2, например, под чексумму вообще всего 5 бит выделено.

Добавлено позже:
Ну, там, конечно, и статов меньше.
r57shell:
Ну ладно, по просьбам трудящихся опишу как в оригинале, но не опишу как я сделаю! (т.к. это долго обьяснять а главное доказывать).

Короче в оригинале так:
Символьное представление это всеголишь представление бинарного пароля в системе исчесления по основанию 32. В его бинарном представлении значения пароля - это подстроки, то есть определенные подряд идущие биты отвечают за значение поля. Кроме этого есть подстрока, которую я полем не считаю - чексумма, проверка на шуллеров. Если у чексумма по полям не равна чексумме, которая записана в самом пароле - то пароль считается фальшивым.

ПолеДиапазонБитыDifficulty(cложность)0-32Money(деньги) 10-94Money(деньги) 20-94Money(деньги) 30-94Character(персонаж)0-63Division(дивизион)0-11Planet(планета)0-53Car Color(цвет машины)0-43Сar(машина)0-43Сar Armor(броня)0-32Сar Suspension(подвески)0-32Сar Tires(колёса)0-32Сar Engine(движок)0-32Weapon1(количество пуль)0-73Weapon2(количество мин)0-73Nitro(количество прыжков/нитро)0-73Total(Итого) 44
Алгоритм генерации пароля и алгоритм разбора пароля выходит за рамки вопроса, да и в каком порядке и какие именно подстроки отвечают за значения в пароле.

60-44=16 битов на чексумму (word=65536). Хотите всё занять?) Ы я пас. пример я в предыдущем патче занял 3 бита то есть чексумма=2^13=8192 я подумал это нормально) конечно можно ещё парочку занять, но дальше я хз как вы собираетесь. С моим методом который я опятьже не буду рассказывать, было видно (мне) что останется под чексумму 2+4*4-4=16-2=14 битов. (с теми диапазонами которые Ti_ выкладывал). Метод могу в аське рассказать. Ито, только тем кто комбинарторику хоть чуток знает ))).

Добавлено позже:
Ti_ вот идея слить деньги в одно поле - выйгрываем 2 бита, и 5 бит надо на расширение полей от оригинала по твоей системе, тоесть получится столько же места сколько я занимал в своём патче ). (13 бит на чексумму у меня было) Но я всёравно круче! я могу сжать так что останется 14 битов под чексумму :P  :wow:

Добавлено позже:
Поправочка, обсчитался тебе надо 6 бит из ческуммы схавать. тоесть у тебя 12 бит останется.

Добавлено позже:
Ti_ прогить умеешь? замутил бы редактор, которым легко статсы можно было бы менять, и загружать выгружать карты, и ещё чонить бы наворотил. По себе знаю, в ручную всегда дольше.

Добавлено позже:
Ну дак чо, кто назовёт все фишки моего пассгена?)
Марат:

--- Цитата: Марат от 16 Декабрь 2009, 00:24:10 ---Где ты будешь такую чексумму хранить? 48 бит. 60 - 48 = 12 бит. И в этих 12 битах ты планируешь хранить статы? Да и если в конце будет 1 и 10, а в другой раз 10 и 1 чексумма та же самая получится.

--- Конец цитаты ---
Это я ошибся, конечно.

Добавлено позже:
Могу назвать недостатки. Во-первых, нельзя будет добавить новые машины,цвета и т.д., во-вторых, пароль более уязвим, т.к. меньше бит используется для чексуммы, хотя все зависит от метода вычисления чексуммы.
r57shell:
на чексумму я какраз пытаюсь максимум освободить, а недостаток ограничений всегда будет, рано или поздно вылезет за рамки, зато мой метод позваляет выставить ЧЁТКО рамки тоесть чётко от 0 до 9 например - не больше. А недостаток того что пароль из одной версии непроканает в другой - можно сказать что балланс очень сильно изменился, и считай что ты несмог пройти досюда ))).
r57shell:
Я не предлагал редактор выставлять на всеобщее обозрение - тупо для себя, или для тех кому РЕАЛЬНО надо будет.

Вот для следуйщей версии паролей, точно не ждите пассгена ^^ только максимум Ti_ :D ну или кто выпросит ^^.

Я кстати уже отдебажил одну из функций, терь надо написать вторую, и всё будет просто ЖЕсТь.

Если умеешь прогать - многое время можешь сократить, вот например когда я код толкаю в ром, его же надо скомпилить (код который толкаю) а компилю я чужой какойто прогой(asw.exe какой-то)
macro assembler 1.42 Beta [Bld 55]
(i386-unknown-win32)
(C) 1992,2007 Alfred Arnold
68RS08-Generator (C) 2006 Andreas Bolsch
Mitsubishi M16C-Generator also (C) 1999 RMS
XILINX KCPSM(Picoblaze)-Generator (C) 2003 Andreas Wassatsch
TMS320C2x-Generator (C) 1994/96 Thomas Sailer
TMS320C5x-Generator (C) 1995/96 Thomas Sailer

дак вот она генерит лог из которого в хекс виде можно выдрать код, но это тяжко, кроме этого она создаёт бинарник - его можно хекс открыть и впринципе выделить нужное и скопирывать, только вот например в иде в хекс виде он ещё цепляет оффсет.... потом редактора нормального хекс у мя под рукой нет, зато есть давно написанная прога опять же на перле hexdump.pl (несколько строк кода) которая выводит хексдамп в стандартном виде для всех, дак вот если ей в cmd.exe скормить фаил который ты хочешь дампонуть, она выведет дамп, а в cmd.exe можно выделить и скопировать определённый прямоугольник символов - дак вот я только середину копирую, вставляю, удаляю лишниее, и переводы строк, и готово ). занимает это дело меньше 30 секунд, если ещё нечё не открыто, а если всё открыто то несколько секунд. Все последовательности одинаковых действий можно закодить, но только надо учитывать сколько ты кодить будешь, и сколько ты потом юзать будешь прогу.
BARAKA:

--- Цитата ---Вот для следуйщей версии паролей, точно не ждите пассгена ^^ только максимум Ti_  ну или кто выпросит ^^.
--- Конец цитаты ---
!!!!Я тоже хочу!!!!
r57shell:
А тебе зачем?)

Добавлено позже:
мне тут осталось чексумму правильно воткнуть, а всё остальное вроде работает.
Марат:
Вот еще делать нечего - выпрашивать. Ты, если делаешь добро, то делай по-человечески. А не дразни людей. Мне-то, в принципе, по фигу. Я здесь только ради интереса к ромхакингу. Да и потом, для себя, если мне захочется, я и сам сделаю. Но насчет остальных ты хорошо подумай.
BARAKA:

--- Цитата ---А тебе зачем?)
--- Конец цитаты ---
Хочеться тоже владеть великим знанием,и передавать его из поколения в поколение,от отца к сыну...
r57shell:
тогда лучше помогай ром разбирать )
Марат:
Зачем, зачем, чтобы при прохождении игры можно было всегда продолжить игру. Каждый сам волен решать, что ему делать. Это мое личное мнение. И, думаю, пароли нужны будут, чтобы на железе проходить игру.
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

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