Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Rekomendowane odpowiedzi

Opublikowano

Witam!!!

Mam taki problem. Gram w grę Fishing Simulator 2. Najnowszy update powoduje, że czujnik zwany digitherm (pokazuje parametry -temperaturę, tlen itp.) pokazuje teraz odczyty w zaokrągleniu (w postaci zamiast 18.45 teraz 18.0). Poprzednie wersje pokazywały odczyty dokładne. Postanowiłem pdjąć próbę sckrackowania odczytów i tu pojawiły się problemy. Znalazłem miejsce w programie gdzie pojawia się dokładny odczyt. Znalazłem procedurę, która go stamtąd pobiera i teraz:

ASM:

fld word ptr[tu jest adres] - czyli czyta float właśnie z tego adresu

fst word ptr[esp+10] - i tu jest ostatni kontakt z wartością float. Nie wiem czy dobrze rozumiem, że umieszcza ją na stosie?

 

-Dodam, że odczyty nie są wyświetlane jako "zwykły tekst" tylko graficznie - podczas modyfikacji procedur udało mi się obciąć np. połowę znaków.

-Znalazłem procedurę, która wyświetla tekst na ekranie, ale jest ona używana do wyświetlania wszystkich napisów - czyli pobiera dane poprzez rejestry.

-znalazłem miejsce, w którym wywoływane jest wyświetlenie na ekran, ale wszystkich odczytów na raz - nie mogę wyłączyć np. tlenu, a pozostałe pokazać.

-Nie mogę znależć miesca konwersji float na integer, ani innej funkcji, która obcina część ułamkową odczytów.

-Nie znalazłem miejsca w pamieci gdzie odczt byłby przechowany w postaci łańcucha znaków (np. przed wyświetleniem przecież trzeba dodać jakoś ".0" na końcu)

 

Prośba do osób doświadczonych:

- jakieś sposoby zaokrąglania w assemblerze, może na coś nie wpadłem?

- może jest jakiś sposób, żeby sprawdzić czy jakaś procedura "po drodze" nie modyfikuje odczytu na stosie (dodam, że debuger nie namierza liczby całkowitej)

PS zaczynam debugować poprzednią wersję (zejdzi mi do Wielkiejnocy :( )

Ma ktoś jakieś pomysły?

Pozdrawiam:

Andrew

×
×
  • Dodaj nową pozycję...