ATS Forum - Advanced Tram Simulator

Pełna wersja: Przerobienie dekodera
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Obecnie dekoder rozróżnia linie parzyste i nieparzyste. Moim pomysłem na usprawnienie było użycie flag bitowych. Czyli dla każdej linii można by określić, czy ma jechać prosto, czy na bok.

Udało mi się wczoraj wrzucić ATS na disassembler. Jednak nie jest to takie proste, jakby się wydawało, żeby znaleźć potrzebny fragment. Dlatego pytanie mam, czy zachował się jakikolwiek kod obsługi rozjazdów, który można by porównać z kodem assemblerowym? Ewentualnie w ostateczności wystarczyłby mi opis (np. chodzi o to, czy parzystość była określona przez &1 czy jako %2; czy rozpoznanie typu rozjazdu było robione przez case, czy inaczej).

Rozjazd ma 4? typy od 0 do 3 (tyle na pewno), dekoder jest dla 3. Jest to zapisane na +24 (+96) od początku rozjazdu, dodatkowe dane są w +25 (+100), ale informacja o sprężynie jest na +22 (+88). Na podstawie tych informacji brana jest wartość z tablicy przełączeń +6 (+24).
Dobra, chyba sobie znalazłem.

Kod:
0x4112FD: 83786003               CMP         DWORD PTR [EAX+0x60],0x3
0x411301: 7575                   JNE         0x411378           ; (*+0x77)

Kod:
0x411358: 8B4510                 MOV         EAX,DWORD PTR [EBP+0x10]; <==0x0041130A(*-0x4E)
0x41135B: 83E001                 AND         EAX,0x1
0x41135E: 85C0                   TEST        EAX,EAX
0x411360: 740C                   JZ          0x41136E           ; (*+0xE)
0x411362: 8B4508                 MOV         EAX,DWORD PTR [EBP+0x8]
0x411365: C7405800000000         MOV         DWORD PTR [EAX+0x58],0x0
0x41136C: EB0A                   JMP         0x411378           ; (*+0xC)
0x41136E: 8B4508                 MOV         EAX,DWORD PTR [EBP+0x8]; <==0x00411360(*-0xE)
0x411371: C7405801000000         MOV         DWORD PTR [EAX+0x58],0x1

Przerabiać?
znając siebie to if(nr%2)

>Rozjazd ma 4? typy
pewnie tak, ale już nie pamiętam

Nie wiem czy jest sens skupiać się na ATS1. Jeśli wszyto pójdzie dobrze to na wakacje będzie ATS2. Poza tym można by popracować nad przebudowa interfejsu Rainsted'a, żeby był bardziej na czasie i np. wszytko by się dało zrobić myszą.
Edward może podaj orientacyjną datę przy najgorszym możliwym scenariuszu (Zakładając takowy któremu dasz radę i go kiedyś przebrniesz), to będzie się wtedy fajniej czekało bo jak dostaniemy wcześniej ATS to będziemy bardziej szczęśliwi Tongue
A ja tam czekam cały czas na ukł. tekstur na N-kę od Kafara coby na nią tex zrobić Tongue
Skupiać się nie chcę, ale jeśli komuś by się chciało poprogramować dekodery na sceneriach celem uruchomienia wielu linii jednocześnie (w tym np. zjazdu z dowolnego miejsca do zajezdni), to dałbym radę przygotować te kilkanaście bajtów kodu maszynowego, które byłyby potrzebne do obsłużenia tego. Flagi dekodera można by trzymać w kilku miejscach, w tym również w typie (np. można założyć że każda wartość różna od 0, 1 i 2 to jest dekoder), ale jest też również dużo miejsca w innych bajtach (np. nieużywany chyba stan drugiej zwrotnicy).

W Rainsted jestem nadal na etapie określania jakie obiekty będą potrzebne oraz geometrii i powiązań (np. do dopracowania są ściany lasów z przyklejaniem do terenu, a do zrobienia prawie od zera łuki koszowe). Interfejs jest kwestią drugorzędną. Na razie poprawiam scenerię — muszę posiedzieć nad profilami pionowymi i optymalizacją łączenia z trójkątami terenu, a potem chciałbym zrobić słupy z regulowanym miejscem zawieszenia drutu.
Przekierowanie