Re: Исследование механизма работы ПО MMCS
Подготовил небольшой отчет по переводу формата времени на R03 с 12h на 24h:
1) AVUnit.exe
Влияет на:
- MODE
- AUDIO
- SET
-- SET -> Настройки
-- SET -> Время
• Время -> 24h GMT+
a. am pm
Ищем по :
Ищем по: 25 73 20 25 32 64 3A 25 30 32 64 25 -> прибавляем + 8h ->
Off (pm)= Adr (25 73 20 25 32 64 3A 25 30 32 64 25)+ 14h
.data:001A53CC 70 6D 00 aPm: .sdata "pm" Заменил 00
Off (am)= Off (pm)+ 12h
.data:001A53D0 61 6D 00 aAm: .sdata "am" Заменил 00
забить начала нулём, то приписываться am/pm не будет
b. 24h
Ищем по:
0B 43 C3 64 0C E3 A3 33 01 89 07 A0 F4 7A
Заменяем на:
0B 43 C3 64 0C E3 A3 33 09 00 07 A0 09 00
.text:00138C2C F4 7A add #-h'C, r10 - это они вычитают 12
далее они сравнивают на 0 и 12, чтоб выяснить AM/PM
потому что полдень у саксов это 12PM, а полночь 12AM или 0AM
если забить - одно место
.text:00138C2C F4 7A add #-h'C, r10 - это они вычитают 12
09 00
вычитания не будет
• Остальные в AVUnit
Ищем по:
28 D3 0B 43 EC 34 4B 93 83 60 3C 03 3C 63 38 23 12 8B E8 85 0C E1 03 63 3D 63 32 31 06 8D 33 62 F4 E3
- F4 E3 mov #-h'C, r3 ; поменять на 00 E3 – это вычитают 12
Ищем по:
3D 63 3C 32 2D 63 33 60 E8 81 3D 63 38 23 02 8B 0C E3
text:001088BA 0C E3 mov #h'C, r3 ; поменять на 00 E3 - это полночь
2) can.exe
can.exe section00
Влияет на:
- Info ->Система -> календарь
->Система ->Единицы измерения (система отображения зависит от ETACS)
По умолчанию:
- км – мил
Вариант американский:
- ….. С -F
Ищем по:
16 D3 0B 43 FC 34 FC 85 0C E1 03 63 3D 63 32 31 06 8D 33 62 F4 E3
.text:00041E9E F4 E3 mov #-h'C, r3 ; -> поменять на 00 E3 это вычитают 12
Ищем:
3D 63 3C 32 2D 63 33 60 FC 81 3D 62 28 22 02 8B 0C E3
.text:00041EB0 0C E3 mov #h'C, r3 ; -> поменять на 00 E3 это полночь
3) HMIManager.exe
Влияет на:
- Информация
-- общий
-- Помощь
-- Положение авто
-- календарь
--- Ввод даты: годовщина, календар
--- Событие в календаре
- Навигация
- SET
--система
HMIManager - вот единственное место, где ищется остаток от деления на 12 (функцией __modls)
text:0003A7BC 14 D3 mov.l @(h'50,pc), r3 ; [0003A810] = __modls ; Move Immediate Long Data
.text:0003A7BE 0B 43 jsr @r3 ; __modls ; Jump to Subroutine
.text:0003A7C0 0C E5 mov #h'C, r5 - деление на остаток 12 сюда меняем 18 E5 (0Ch/12d меняем на 18h/24d)
.text:0003A7C2 0C 62 extu.b r0, r2 ; Extend as Unsigned (Byte)
.text:0003A7C4 28 22 tst r2, r2 ; Test Logical
.text:0003A7C6 00 8B bf loc_3A7CA ; Branch if False
.text:0003A7C8 0C E2 mov #h'C, r2 - а это - полночь => 00 E2
Ищем по:
14 D3 0B 43 0C E5 0C 62 28 22 00 8B 0C E2
Меняем на
14 D3 0B 43 18 E5 0C 62 28 22 00 8B 00 E2
Добавлено через 1 час 53 минуты
Все эти наработки (поиск в коде через ассемблер) сделаны YDean
Я только их внедрил
К сожалению он на форуме только смотрит.
Клики СПАСИБО по этому сообщению - заслужено будут адресованы ему
Добавлено через 2 часа 56 минут
!!!!
Прошу откликнуться тех, у кого в Service menu на экране есть такое:
"Hands Free Module"
На руссифицированой американке этого нет
|