PasjaGSM.pl
  Jesteś w: PasjaGSM.pl > Artykuły > Nokia > Obsługa NokiXa

Obsługa NokiXa

Niniejszy tutorial napisany został dla osób, które dopiero zaczynają zabawę z modyfikowaniem softów na telefony DCT-3. Będę starał się pisać językiem przystępnym i zrozumiałym dla wszystkich. Oparty jest na Noki 1.25 i script snapshot z 17.05.2005 r. Niniejszym życzę miłej lektury.



Po pierwsze aby zacząć zabawę z edytowaniem softa musimy sczytać jego strukturę menu. Robimy to w zakładce Dumper. Klikając na kropki przy Flash wskazujemy flash, którego będziemy edytować. Następnie w polu Script dodajemy skrypt dump_menu.nrx odpowiedzialny właśnie za sczytywanie całego menu. W polu Parameters wpisujemy w jakim języku menu ma zostać zczytane.
Przykładowo:

„lang poli” lub „lang engl”

W zależności od języka. W tym miejscu polecam aby uruchomić sobie program PPM Maker.


Przez Load wczytujemy flash i w zakładce TEXT mamy wszystkie języki do wyboru do koloru. Jako że do modyfikowania softu potrzeba jest w miarę sporo miejsca, którego i tak jest zawsze za mało radze usunąć niepotrzebne języki klikając prawym przyciskiem myszy na dany język i Remove. Ja zawsze zostawiam sobie tylko COMM (którego proszę nie usuwać pod żadnym pozorem) oraz ENGL i POLI (czyli angielskie i polskie).
Dodam również, że klikając 2 razy na dany język możemy go sobie edytować. Jeżeli w COMM w linijce:

.,?!:;-+#*()'"_@&$x00xA3%/<>x00xBFx00xA1§=¤âx00xA5


Dodamy na końcu x01x0A to będziemy mieli „znak enter” oraz „migający sms” jako dodatkowe znaki w pisaniu sms’a. Efekt powinien być taki:

.,?!:;-+#*()'"_@&$x00xA3%/<>x00xBFx00xA1§=¤âx00xA5x01x0A

Znaki x01 (migający tekst) i x0A (przenosi linijkę niżej) możemy stosować również podczas edycji innych języków. x0A każdy będzie widział chyba jak stosować. Dajmy na to jeżeli w tekście:

Dzisiaj jest fajna pogoda.

chcemy żeby fajna pogoda było linijkę niżej to dajemy:

Dzisiaj jestx0Afajna pogoda.

Z x01 sytuacja jest bardzo podobna. Jeżeli w tym samym zdaniu chcemy żeby migał wyraz fajna to dajemy:

Dzisiaj jest x01fajnax01 pogoda.

Ot i cała filozofia. Wracając teraz do Nokix’a to po wpisaniu języka w polu Parameters klikamy na Execute script i następuje sczytywanie struktury, po czym program zapyta się nas gdzie ma ona zostać zapisana (dajmy na to jako plik menu.txt). Teraz omówię pokrótce tę właśnie strukturę na przykładzie softa (tylko rzeczy najważniejsze, reszta wyjaśnień dostępna jest w informacjach skryptu write_main_menu.nrx) do 8250 5.05.

# Menu structure file
# -------------------
# Firmware: NSM-3, V 5.04
#
# Dumped from address: 0x31FD08
# Items titles in language: CHNT
# Phone with menu descriptions function.

@menu dispmode=0x10 mask=0x13086E
@header action=0x10 flags=0x1


Ciągi znaków po # nie są czytane przez program także możemy je stosować na początku każdej linijki np. do swoich własnych zapisków (coś jak { i } w Pascalu). Idąc dalej @menu dispmode=0x10 daje informacje w jaki sposób ma być wyświetlane nasze menu.
Poniżej kilka przykładów:

0x01 – zaznaczenie lub odznaczenie menu (takie jak w Wiadomości -> serwis informacyjny -> język)
0x02 – ?
0x04 – bez scroller’a
0x08 – bez licznika w prawym górnym rogu ekranu
0x10 – menu standardowe (tak jak w każdym oryginalnym sofcie nokii)
0x20 – ?
0x40 – menu w postaci listy
0x80 – pozwala na powrót z podmenu to menu wyżej

Co do mask=0x13086E nie będę się rozpisywał. Powiem tylko, że jeżeli chcemy usunąć jakieś podmenu lub przestawić ich kolejność najlepiej usunąć mask lub ją wyzerować mask=0x000000 (osobiście polecam to zrobić).

Dalej mamy pierwsze podmenu:

# Wiadomości (Zawiera opcje usług przesyłania wiadomości.)
@item title=870 desc=1263 anim=0x3 action=0x3A msg=0x387
@menu dispmode=0x80
@header action=0x10 flags=0x1

# Wpisz wiadomości (Pozwala tworzyć i wysyłać wiadomości tekstowe. Zmiana liter duże-małe przez #, spacja - 0 (zero), widok znaków specjalnych - *. Wysyłanie wymaga uruchomienia tej usługi przez operatora sieci.)
@item title=947 desc=1219 flags=0x4 msg=0x5E0 arg=0x1F

# Skrzynka~odbiorcza (Zawiera odebrane wiadomości tekstowe.)
@item title=930 desc=1267 msg=0x5E0 arg=0x1C



# Wiadomości
@end


Należy zwrócić uwagę, że każde z podmenu kończy się @end. I proszę o tym nie zapominać bo program nie będzie widział kiedy kończy się, które menu.

title=870 jest niczym innym jak tylko odwołaniem do napisu jaki będzie wyświetlany w menu.
desc=1219 jest odwołaniem do opisu jaki pojawi się jeżeli „najedziemy” na menu i poczekamy chwile.
flags=0x4 są to „flagi” menu (wszystko będzie jasne po przeczytaniu ich opisu):


0x01 – opuszcza menu po wyborze
0x02 – pokazuje „Zrobione” po wyborze
0x04 – finisz further shortcut path processing
0x08 - pokazuje wartość (nie działa gdy dispmode=0x40)
0x10 – wraca do poprzedniego menu po wyborze
0x20 – pokazuje informacje odnośnie klawisza skrótu (0x389) po wyborze

Teraz spróbujemy stworzyć nowe menu Dodatki (8250).

# Dodatki
@item title=text/extras action=0x3A msg=0x387
@menu dispmode=0x80
@header action=0x10 flags=0x1



# Dodatki
@end

Uwagę należy zwrócić na to, iż przy tworzeniu menu do innych modeli nokii zmienia się tylko pole action=0x**.
Przy okazji umieszczę tutaj przykładowe menu do innych telefonów:

3210 # Dodatki
@item title=text/extras action=0x36 msg=0x387
@menu dispmode=0x80
@header action=0xC flags=0x1



# Dodatki
@end

3310 # Dodatki
@item title=text/extras action=0x52 msg=0x387
@menu dispmode=0x80
@header action=0xD flags=0x1



# Dodatki
@end

3330 # Dodatki
@item title=text/extras action=0x40 msg=0x387
@menu dispmode=0x80
@header action=0xF flags=0x1



# Dodatki
@end

5110 # Dodatki
@item title=text/extras action=0x32 msg=0x387
@menu dispmode=0x80
@header action=0x1 flags=0x1



# Dodatki
@end

5510 3.53 # Dodatki
@item title=text/extras action=0x40 msg=0x387
@menu dispmode=0x80
@header action=0xF flags=0x1



# Dodatki
@end

8210 # Dodatki
@item title=text/extras action=0x3D msg=0x387
@menu dispmode=0x80
@header action=0x13 flags=0x1


# Dodatki
@end

Opisania wymaga również title=text/extras. Jest to odwołanie do tekstu zapisanego w pliku new_ppm_strings.txt:

@text var=text/extras
ENGL:Extras
POLI:Dodatki

Mam nadzieję, że jest to dla wszystkich zrozumiałe. Do języku angielskiego dodany zostanie Extras a do polskiego Dodatki. title=text/extras wykorzystuje tylko ten wpis. W jaki sposób wykorzystujemy plik new_ppm_strings.txt już wyjaśniam przy okazji dodawania skryptów.
Skrypty dodajemy w zakładce Project przyciskiem Add. Ja osobiście polecam dodawać je w takiej kolejności:

kill_faid_check.nrx
kill_mcu_check.nrx
add_ppm_strings.nrx
true_7_bars.nrx
adjust_nokia_screen_savers.nrx (opcjonalnie, tylko 3310)
adjust_templates.nrx (opcjonalnie, tylko 3310)
advanced_calculator.nrx
anonymous_access.nrx
better_counter.nrx (tylko telefony, które mogą wysyłać jednorazowo więcej niż jednego sms’a)
calendar.nrx
call_duration.nrx
fade_leds.nrx
guard.nrx
hour_beep.nrx
invert_lcd.nrx
keylock_guard.nrx
light_settings.nrx
memory_editor.nrx
minute_beep.nrx
mobile_unlocker.nrx
plotter.nrx
rhythmic_leds.nrx
screen_saver.nrx
smooth_sms_scroll.nrx
stones.nrx
stop_ringing.nrx
vibra_controls.nrx
vibra_power.nrx
watch.nrx
welcome_anim.nrx
write_main_menu.nrx
shortkeys.nrx

Teraz gdy mamy już dodane wszystkie skrypty do projektu postaram się wyjaśnić w jaki sposób dodać odwołania do nich w strukturze menu. Obecnie wszystkie skrypty obsługiwane są przez definicje. Ułatwia to bardzo sprawę, ponieważ odwołanie do na przykład calendar.nrx wygląda następująco:

# Dodatki
@item title=text/extras action=0x3A msg=0x387
@menu dispmode=0x80
@header action=0x10 flags=0x1

@item def=calendar

# Dodatki
@end

Tylko tyle, nie musimy nawet wpisywać title=text/calendar ponieważ skrypty korzystają z plików tekstowych z katalogu ze skryptami (w przypadku kalendarza calendar_ppm.txt). Tak więc, jeżeli ktoś chce zmienić jakieś napisy w skryptach proszę zajrzeć do tego katalogu (pliki te mają nazwy tworzone analogicznie jak w przypadku calendar_ppm.txt).

Teraz pokrótce postaram się opisać każdy ze skryptów oraz, jeżeli to konieczne, wyjaśnić co trzeba wpisać w polu Parameters. Przy opisie podam również definicje umożliwiające dostęp do poszczególnych skryptów:

kill_faid_check.nrx – zabija sumy (dzięki niemu nie musimy za każdym razem po modyfikacjach sprawdzać sum programem Chk fixer.

kill_mcu_check.nrx – zabija sumy MCU dzięki czemu za każdym razem po wgraniu softa do telefonu nie musimy naprawiać sum żeby zasięg działał jak trzeba (musimy zrobić to tylko raz dla zabitych sum).

add_ppm_strings.nrx – to właśnie ten skrypt dodaje nam ciągi znaków do softa (do tego skryptu jako parametr dajemy plik new_ppm_strings.txt).

true_7_bars.nrx – dodaje 7 kresek zasięgu zamiast 4 standardowych (parametr nie jest konieczny ale jest możliwe jego dodanie, przykładowy plik z parametrem dostępny jest w archiwum z programem Nokix).

adjust_nokia_screen_savers.nrx – umożliwia zmianę ilości oryginalnych wygaszaczy w nokii 3310 (każdy zajmuje 512 bitów w EEPROM).

adjust_templates.nrx – umożliwia zmianę ilości przykładowych sms’ów w nokii 3310 (każdy zajmuje 144 bity)

advanced_calculator.nrx – dodaje nam do standardowego kalkulatora dodatkowe funkcje (dostępne pod strzałką w dół).

anonymous_access.nrx – pozwala na wejście do menu bez użycia karty sim. Wystarczy kliknąć „C” lub „czerwoną słuchawkę” (def=init_sim_card).

better_counter.nrx – zmienia sposób liczenia znaków w pisanym sms’ie.

calendar.nrx – dodaje opcję kalendarza do menu (def=calendar).

call_duration.nrx – podczas dzwonienia włącza się stoper pokazujący jak długo rozmawiamy, możliwe jest podanie parametru:

[LEFT (x)] [TOP (y)] [FONT (font)]
gdzie:

LEFT – koordynat wyświetlania czasu na osi X (domyślnie 14)
TOP – koordynat wyświetlania czasu na osi Y (domyślnie 35)
FONT – czcionka jaka będzie użyta przy wyświetlaniu czasu (domyślnie large/bold)

fade_leds.nrx – umożliwia ustawienie czasu w jakim wyświetlacz ma się wygaszać i rozjaśniać (7 poziomów) (def= fade_leds/in) (def= fade_leds/out).

guard.nrx – zabezpiecza nam dowolne menu. Przykładowo żeby zabezpieczyć skrzynkę odbiorczą musimy jako parametr dać (na przykładzie 8250):

inbox_guard 0x1C

W strukturze menu wstawiamy wtedy (żeby mieć możliwość włączenia lub wyłączenia):

def=inbox_guard

Zamiast inbox_guard możemy wpisać co tylko chcemy, na przykład:

skrzynka 0x1C

Ale wtedy definicja będzie następująca:

def=skrzynka

Zamiast wartości 5E0 możemy również podać jakiś inny skrypt (jego definicję):

cal_sec calendar

I w tym wypadku definicja będzie następująca:

def=cal_sec

Jeżeli natomiast nie chcemy mieć możliwości włączania i wyłączania zabezpieczenia musimy jako parametr przed definicja lub 5E0 wpisać always, przykładowo:

always calendar

hour_beep.nrx – daje sygnał dźwiękowy lub wibrację (lub jedno i drugie) gdy wybija pełna godzina (def=hour_beep).

invert_lcd.nrx – negatyw kolorów wyświetlacza (def=invert_lcd).

keylock_guard.nrx – zabezpieczenie blokady klawiatury na hasło (def=keylock_guard).

light_settings.nrx – dodaje opcje sterowania światłem (możliwość wyłączenia, włączenia oraz standardowe) (def=light_settings).

memory_editor.nrx – edytor pamięci telefonu (def=memory_editor).

minute_beep.nrx – telefon daje sygnał dźwiękowy jeżeli minie jedna minuta, 55 bądź 50 sekund (def=minute_beep).

mobile_unlocker.nrx – edytor kodów do zdejmowania sim-lock’ów z telefonów Nokia DCT-3, Nokia DCT-4, Sony CMD-C1 oraz Vitel TSM3/4/5 (def= mobile_unlocker)

plotter.nrx – ploter (def=plotter).

rhythmic_leds.nrx – diody mrugają w rytm dzwonka (def= rhythmic_leds).

screen_saver.nrx – dodaje pełnoekranowy wygaszaczy ekranu, za chwilę opiszę dokładnie w jaki sposób (def=screen_saver).

smooth_sms_scroll.nrx – umożliwia odczyt sms’a linia po linii.

stones.nrx – dodaje nową grę (coś jak kółko i krzyżyk tylko że na większej planszy). W tym wypadku nie musimy dawać odwołania w menu o gra dodaje się automatycznie, no chyba, że ktoś bardzo chce (def=stones).

stop_ringing.nrx – gdy ktoś do nas dzwoni możemy wcisnąć klawisz, który uprzednio dajemy jako parametr do tego skryptu, aby wyłączyć wibracje i dzwonek (a telefon nadal dzwoni). Jako parametr możemy dać jeden ze znaków:

1234567890*#

vibra_controls.nrx – możemy protestować sobie moc naszego wibratora (9 poziomów) (def=vibra_controls).

vibra_power.nrx – ustawiamy moc wibratora podczas odgrywania dzwonków (def=vibra_power).

watch.nrx – zwykły zegarek, który pokazuje która jest godzina i datę (radzę nie dodawać go do menu a jedynie jako skrót w shortkeys.nrx o czym za chwilę) (def=watch).

welcome_anim.nrx – dodaje animację przy włączaniu telefonu (ale o tym też za chwilę) (def=welcome_anim).

write_main_menu.nrx – wczytuje całą strukturę menu z powrotem do telefonu, jako parametr dajemy plik z wyeksportowaną strukturą menu.txt.

shortkeys.nrx – umożliwia dodawanie skrótów klawiszowych, żeby użyć skrótu należy przytrzymać * a następnie jakiś inny klawisz, definiujemy go w pliku, który dajemy jako parametr:

# shortkeys definitions for shortkeys.nrx
#
# hold '*', then press key:

# inbox
@key1 msg=0x5e0 arg=0x1c

# write
@key2 msg=0x5e0 arg=0x1f

# outbox
@key3 msg=0x5e0 arg=0x1b

#
@key4 def=invert_lcd

#
@key5 def=memory_editor

#
@key6 def=mobile_unlocker

#
@key7 def=welcome_anim

#
@key8 def=plotter

#
@key9 def=screen_saver

#
@key0 def=light_settings

#
@key* def=watch always

#
@key# def=calendar


Teraz pokrótce opiszę w jaki sposób tworzyć i dodawać animacje powitalne.
Jako parametr do welcome_anim.nrx musimy dać plik tekstowy (przykładowo animacja_anim.txt), w którym zapisane będą informacje o klatkach:

#
# przykładowa animacja
#

@global time=0

@frame bmp="01.bmp"
@frame bmp="02.bmp"
@frame bmp="03.bmp"
@frame bmp="04.bmp" time=400

01.bmp wpisujemy jeżeli bitmapy znajdują się w tym samym katalogu co ten plik tekstowy ale jeżeli chcemy możemy tez podać ścieżkę do nich jeżeli leżą gdzieś indziej na dysku:

#
# przykładowa animacja
#

@global time=0

@frame bmp="C:\klatki\01.bmp"
@frame bmp="C:\klatki\02.bmp"
@frame bmp="C:\klatki\03.bmp"
@frame bmp="C:\klatki\04.bmp" time=400

Pamiętać musimy aby poszczególne klatki były bitmapami monochromatycznymi i miały ten sam rozmiar (nie większy niż 84x48).

@global time=0 jest to nic innego jak prędkość animacji (0 – najszybsza) a time=400 to zwykła pauza.

Jako parametr do welcome_anim.nrx dać możemy również zwykły plik *.gif.

Tworząc parametr do screen_saver.nrx mamy też dwie możliwości (a właściwie 3). Po pierwsze też możemy dać plik *.gif. Po drugie możemy utworzyć plik tekstowy (przykładowo screen_svr.txt), w którym wykorzystujemy plik animacja_anim.txt (informacje o klatkach):

@background anim="animcja_anim.txt"

Jeżeli natomiast chcemy żeby razem z wygaszaczem wyświetlany był zegar plik powinien wyglądać następująco:

@background anim="animacja_anim.gif"
@digital font="large/bold" left=38 top=43 align="right"
@date font="small/plain" left=84 top=43 align="right" short

@background anim=”animacja_anim.txt” to właśnie animacja jaka będzie wyświetlana jako wygaszacz (możemy dać tu zarówno plik tektowy z informacjami o klatkach jak i plik *.gif).

@digital font to informacje o czcionce zegara a @date font to informacje o czcionce daty.

Animacje jak i zwykłe bitmapy możemy dodawać również w każdym menu, a robi się to następująco:

# Dodatki
@item title=text/extras bmp=”jakas_bitmapa.bmp” action=0x3A msg=0x387
@menu dispmode=0x80
@header action=0x10 flags=0x1

@item def=calendar

# Dodatki
@end


Oczywiście tutaj też zamiast jakas_bitmapa.bmp możemy dać plik tekstowy z informacjami o klatkach lub plik *.gif (przypominam jeszcze raz, że bitmapy muszą być monochromatyczne oraz muszą mieć ten sam rozmiar).

No i to już prawie koniec. Przechodzimy na zakładkę Project i podajemy Input flash oraz Output flash, dodajemy wszystkie skrypty razem z parametrami i klikamy Start processing (czyli żółty trójkącik) i obserwujemy jak wszystko ładnie, pięknie i ślicznie się dodaje w zakładce Output.
Efekt powinien być następujący:



Dodam jeszcze tylko parę ważnych rzeczy. Po pierwsze jest możliwość symulowania całego projektu lub każdego skryptu z osobna przez przycisk Simulate processing (ten drugi żółty trójkącik). Po drugie możemy klonować skrypty dzięki przyciskowi Clone (opcja bardzo przydatna jeżeli na przykład dodajemy 20 lub 30 wygaszaczy) i po trzecie każdy skrypt ma zapisane w sobie info, które uzyskamy klikając na Help.

I to by było na tyle. Chyba nie pominąłem żadnej ważnej sprawy a te które opisałem są zrozumiałe. Po przeczytaniu tego poradnika na pewno macie jakieś wątpliwości ale na rozwiązanie ich jest tylko jeden sposób: próbować, próbować i jeszcze raz próbować. Metodą prób i błędów najszybciej nauczycie się wszystkiego.

Ostatnie opinie internautów

Brak komentarzy

Pisz komentarze i wygrywaj nagrody

Nick
Email   (adres będzie widoczny tylko dla redakcji)
Opinia
pozostało znaków   1000
Różnica liczb 14 i 9 wynosi: