FOX_GED Телефонист Откуда: Россия, Ростов-на-Дону С нами с: 09.12.2003 Плодовитость: 191
Рейтинг
Подано 18 (17/1) голосов
|
Для админов. Есть программа для смены стандартных мелодий в Сименс С55.
|
Начну из далека, чтобы было понятно.
Исследовав флеш окончательно убедился, что полифония лежит там в том же формате si3. Так же пришёл к выводу, что необходимыми условиями звучания является наличие в первом байте 00(видимо, возрастание звука идёт с тишины, и, чтоб первая нота не глоталась, поставленна пауза) и в последних двух 81x1, x-параметр не обязательный (проверенно опытным путём), а вот три других пресущи как всем оригинальным мелодиям, так и любым si3. Основываясь на предположении, что в RIT забиты адреса начала и конца мелодии и, опять же, предположив, что идёт сверка по данным байтам, сделал вывод, что программа не корректно формирует патч.
1) Глюк программы - на некоторые мелодии, типа Азии, Ticler и ещё нескольких, программа записывает новую почему-то с 11-го байта, естественно не соблюдая первое условие. результат - ошибка в начале и мелодия неиграет. С этим, МихМих, ты сам разбирайся.
2) Ошибка написания окончания патча - не соблюдается второе условие(81x1), в конец дописываются нули и нет точки окончания. Результат - ошибка в конце проигрыша.
3) то что и так известно. Несоответствие найденных адресов. Результат - после секундного звучания ориг. мелодии вылетает ошибка.
А теперь, как лечить это.
Хорошим подспорьем послужит последний update V_KLay_v2.5.19 с новой возможностью создания патча отката, если в патче не присутствуют старые данные. Генерится тот же патч, но с данными для отката, прочитанными из флеша. Нужно только удалить в первичном файле строку #pragma disable warn_no_old_on_apply, она является аргументом игнорирования отсутствия старых данных во флеше. Не происходит сверки старых значений.
Но даже не то хорошо, что в случае неудачи можно в секунду откатиться назад, не заливая целый блок., а то, что благодаря этому патчу видно какие данные присутствовали во флеше.
Вот тут, откатив неудачный патч и можно эксперементировать.
Создать циклический звук(вместо того, что проигрывался один раз с ошибкой в конце) элементарно. Нужно, посмотрев на исходные данные конца мелодии прописать на те же байты значение (81x1), его можно скопировать из исходных данных, а можно поставить то, что было в si3, значения не имеет. Мелодия обретает завершенность.
По поводу неправильной записи со смещением байтов - пусть автор разбирается. Кстати, нули(00) ошибочно приписываются концам мелодиия, а не к началу (получается небольшой нахлёст) и если мелодия больше оригинала, то затираются, и следующая мелодия может не заиграть. Так что патчи лучше ставить последоватнльно сверху вниз, чтобы восстанавливались нулевые значения.
А теперь, альтернативный способ нахождения правильных адресов мелодий.
Как я уже писал, если проигрывается несколько нот от старой мелодии,то значит, адреса смещены вниз. чтобы найти нужные, мы должны прикинуть на сколько нам нужно поднятся вверх. Открываем в Hex-редакторе наш FF, находим нужный адрес и, постепенно перемещаясь вверх, ищем нужный нам пораметр 81 х1 00, он конечно попадается и левый, но на том небольшом диапозоне нужном нам, вряд ли он встретится больше пяти-шести раз. Переписывая каждый раз файл table.adr и делая тестовые патчи мы не более чем за час найдём нужный нам адрес. То же самое можно делать непосредственно из патча отката, дописывая наверх офсеты заполненные нулями и смотря потом патч отката.
Чтобы не клепался откат на каждый последующий изменённый патч нужно поставить в настройках галку на "продолжать операцию без сохранения файла Восстановления" и при следующем запросе на создание патча нажать ДА, а в окошке сохранения патча на Отменить, и патч установится без отката.
ЗЫ Кстати, как-то умудрился добиться того, что одна установленная мелодия перешла в другую. Причём, по случайности, это были две разные версии одной песни, и я даже не сразу понял, что по чём, а когда понял, волосы на себе рвал - патч этот, за глючность, я к тому моменту уже удалил. Так что, есть шанс, что вместо двех мелодий можно засунуть одну большую.
Ну вот, собственно, и всё. Эксперементируйте.
Удачи. |
____________________________
Люди - рабы своих вещей...; самосовершенствование - это ***..[cut by Stempl];
destruction - essence...; society must die...
Let heros enjoy the minute of the glory, which will is forgotten in hour... |
|