| Разработка и ромхакинг > Ромхакинг и программирование |
| [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:
тогда лучше помогай ром разбирать ) |
| Марат:
Зачем, зачем, чтобы при прохождении игры можно было всегда продолжить игру. Каждый сам волен решать, что ему делать. Это мое личное мнение. И, думаю, пароли нужны будут, чтобы на железе проходить игру. |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |