atarionline.pl Zlecenie dla programisty - Forum Atarum

    Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

    • :
    • :

    Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

      • 1: CommentAuthorValdghir
      • CommentTime9 Jul 2014 00:07 zmieniony
       
      Zlecę odpłatnie opracowanie wstępnego sterownika myszki.
      Po krótce:
      1. sterownik instaluje w systemie urządzenie, np. M:, obsługujące myszkę Atari ST
      2. wersja pierwsza niech obsługuje tryb tekstowy (nie potrzebuję duchów), suwając po ekranie dowolnym znakiem
      3. sterownik maksymalnie prosto zwraca położenie kursora po kliknięciu lewym klawiszem - dalej niech to będzie GR.0

      Tylko zainteresowanych proszę o kontakt i wypowiedzi w tym poście.
      Temat będzie rozwojowy - oczekuję sterownika spełniającego wiele potrzeb: integracja ze znanym systemem okien, praca w trybie GR8, rozpoznawanie typu myszy, wiele parametrów przekazywanych z i do programów.
      Wszelkie parametry systemu opiszę w odpowiedzi na zapytania. Docelowo: SPARTA, Turbo Basic XL
      • 2:
         
        CommentAuthorjhusak
      • CommentTime9 Jul 2014 01:07 zmieniony
       
      Obawiam się, że (kiedyś będąc zainteresowany) sterownik myszki ST/Amigi musi dość często sprawdzać jej stan.
      Czyli:
      - odpytywać regularnie co najmniej ca 30 razy na ramkę, to jest niezbędne minimum, jednak tutaj skipy będą przy większych prędkościach i max przesuwu to tyle punktów na ramkę, co testów.
      - lub odpytywać przez jakiś czas, rzędu 10-20% ramki, robiąc tylko to - tu nie będzie skipów, ale mysz będzie się poruszała zdecydowanie wolniej (przy 10% zajętości czasu będzie się przesuwała ca 10 razy wolniej, niż nominalnie), natomiast będzie działać zgodnie z oczekiwaniami.

      Generalnie nie ma dobrej metody na mysz w stylu ST/Amigi bezpośrednio podłączoną; znaczne spowolnienie pracy systemu nieuniknione.

      Może to coś pomoże...

      Generalnie, jeśli już, to drugi sposób jest tak naprawdę jedyny sensowny...
      • 3: CommentAuthorValdghir
      • CommentTime9 Jul 2014 08:07
       
      Testowałem źródła i niektóre działają rewelacyjnie - szczególnie algorytm z przyśpieszeniem, dzięki któremu ruch myszy jest tak samo naturalny jak w systemach PC. Procedur obsługi myszy znalazłem kilkanaście. Niestety nie mam ani czasu na naukę asemblera ani ochoty wyważać otwartych drzwi, dlatego najwygodniej dla mnie będzie zapłacić za to czego oczekuję.
      • 4: CommentAuthorxxl
      • CommentTime9 Jul 2014 08:07
       
      jak wspomnial JH, procedura moze mocno obciazac system.
      masz konkretne wymagania ale mam nadzieje czytales o interfejs myszy CMI08 do podlaczenia pc-myszek, przy okazji kompatybilne z atari tabletem?
      • 5: CommentAuthorValdghir
      • CommentTime9 Jul 2014 19:07
       
      @xxl - może obciążać, ale mimo wszystko jest dużo gier i programów obsługujących tą myszkę. Ja potrzebuję sterownika tylko na potrzeby TBXL.
    1.  
      Well,

      how many mouse-divers do you need, just one ? Here are more than a dozen mouse drivers, maybe one of them is useful for you. Afaik, a member of the HTT created a mouse-driver that works with the VBI...
      • 7: CommentAuthorValdghir
      • CommentTime9 Jul 2014 21:07
       
      @CharlieChaplin Thank you, i read
      • 8:
         
        CommentAuthorpirx
      • CommentTime10 Jul 2014 11:07
       
      In Operation Blood and Special Forces mouse register values are loaded during DLI several times a frame and then movement is calculated during VBI.

      This sucks, though.

      pirx
      • 9:
         
        CommentAuthorwilly
      • CommentTime10 Jul 2014 16:07
       
      @Valdghir

      Jeżeli rozwiązanie mieszane HW/SW Ci odpowiada to zerknij tutaj: ->link<-

      Rozważałem coś podobnego co opisujesz. Mogę wrócić do pomysłu.
      • 10:
         
        CommentAuthorjhusak
      • CommentTime26 Jul 2014 17:07
       
      Czy ktoś to już napisał?
      • 11:
         
        CommentAuthorlarek
      • CommentTime7 Aug 2014 20:08 zmieniony
       
      Valdghir, mogę Ci udostępnić za darmo* procedurę obsługi kursora (strzałki) w trybie GR8, którą napisałem do gry Klony 2010. Program zajmuje chyba coś około 2KB i można go używać w TBXL. Ściągnij grę, sprawdź jak chodzi na Atari (emulator nie do końca oddaje rzeczywistość) i zdecyduj, czy to Ci odpowiada.
      Działa z myszką ST i Amigi (rodzaj myszki w grze ustawiasz klawiszem Select). Działa dobrze z oryginalnymi myszkami, ale swoje pazury pokazuje we współpracy z takim interfejsem ->link<- - kursor lata po ekranie z prędkością światła ;)

      Mogę przesłać gotową prockę z informacją jak ją wykorzystać we własnym programie w TBXL. Na chwilę obecną pliku źródłowego nie chcę udostępniać.

      Jest to bardzo proste rozwiązanie, więc nie ma co spodziewać się cudów, ale działa :)



      *) darmo = dwa piwa ;)
    2.  
      larek - zakłądając, że Ty je wypijesz - Ty pijoku :)

      Sorry za OT.
      • 13:
         
        CommentAuthorlarek
      • CommentTime7 Aug 2014 20:08
       
      Ale dlaczego zakładasz, że ja je wypiję? :P
    3.  
      Sorki, już wyedytowałem poprzedni post ;->
      • 15:
         
        CommentAuthorlarek
      • CommentTime7 Aug 2014 20:08
       
      :D
      • 16: CommentAuthorValdghir
      • CommentTime7 Aug 2014 20:08
       
      @larek:11 Na emulatorze biega gdzie chce, jutro sprawdzę na Atarce. Niestety nie mam po ręką sprzętu, bo jak się wygadałem gdzieś tutaj, przygotowuję mini muzeum, dostępne dla każdego i z tej racji cały zasób niestesty jest tam.
    4.  

      Valdghir:

      przygotowuję mini muzeum
      A można zapytać gdzie?
      • 18: CommentAuthorValdghir
      • CommentTime7 Aug 2014 21:08
       
      Można.
      • 19:
         
        CommentAuthorlarek
      • CommentTime7 Aug 2014 21:08 zmieniony
       
      Można? Nie ma takiej miejscowości... ale jest np. Moszna ;)
      • 20: CommentAuthorValdghir
      • CommentTime7 Aug 2014 21:08
       
      Przewróciłem się z krzesełkiem ze śmiechu @larku :-)

      W kontrapunkcie: nie ma takiej miejscowości Londyn.

      Jest Londek-Zdrój...
      • 21:
         
        CommentAuthorlarek
      • CommentTime8 Aug 2014 12:08 zmieniony
       
      Kontynuując rozważania o sterowniku z wątku ->link<- :

      Dlaczego chcesz, żeby sterowanie myszką było oparte na nowym urządzeniu M:? Do czego takie rozwiązanie jest potrzebne?


      W Klony 2010 (gra napisana w TBXL) jest to rozwiązane mniej więcej tak:

      GRAPHICS 24 ' musi być tryb hi-res
      Q=USR(ADRES_PROCEDURY) ' uruchomienie procedury obsługi myszy
      REPEAT : UNTIL PEEK(ADRES) ' oczekiwanie na informację o wciśnięciu klawisza myszki
      X=DPEEK(ADRES_WSP_X)
      Y=PEEK(ADRES_WSP_Y) ' odczytanie współrzędnych myszki


      Nie pamiętam dokładnie, ale mniej więcej tak to wygląda.
      • 22: CommentAuthormono
      • CommentTime8 Aug 2014 12:08
       
      Możliwe, że Valdghirowi chodzi o rozwiązanie względnie uniwersalne. Masz sterownik ładowany w MEMLO przed odpaleniem czegokolwiek czy to będzie Atari BASIC, ACTION! czy TBXL.
      Taki sterownik można rozwiązać na różne sposoby zależnie od tego do czego ma być mysz użyta w programie.
      1. Procedury obsługi mogą działać w tle (liczniki POKEYa, przerwania DLI, przerwania VBLK lub timerów VBLK angażujących jakiś czas na ramkę potrzebny na próbkowanie informacji od myszy).
      2. Procedury obsługi mogą zajmować czas procesora i próbkować mysz oraz przesuwać wskaźnik po ekranie a zwracać informację o pozycji i stanie przycisków myszy dopiero kiedy cokolwiek się stanie np. naciśnięto któryś z przycisków, lub wskaźnik najechał na jakiś predefiniowany obszar.
      3. Odczyt stanu z CIO może zwracać aktualną bezwzględną pozycję myszy i stan przycisków w danej chwili.
      3. Odczyt stanu z CIO może zwracać relatywne przesunięcie od ostatniego odczytu i stan przycisków w danej chwili.
      Wszystko zależy od tego, czego sobie życzysz i jak planujesz zbudować grę.
      • 23:
         
        CommentAuthorlarek
      • CommentTime8 Aug 2014 12:08
       
      I właśnie dochodzimy do tego, że bez szczegółów nie bardzo wiadomo, co trzeba zrobić. Taka uniwersalność może kosztować dużą objętością procedury, co może być wadą, która spowoduje, że będzie bezużyteczna. Pamięć Atari nie jest z gumy i warto chyba, w moim przekonaniu, procedurę obsługi myszy pisać pod dany program, w którym chcemy ją wykorzystać.
      • 24:
         
        CommentAuthorjhusak
      • CommentTime8 Aug 2014 13:08 zmieniony
       
      Eee, tam Panowie. Mam prockę obsługi myszki gdzieś w mac65, przestarzała strasznie, ale zajmuje ok. 128 bajtów z przerwaniami pokeya. Dodanie "M:" to narzut rzędu kilkudziesięciu bajtów.
      • 25:
         
        CommentAuthorlarek
      • CommentTime8 Aug 2014 13:08
       
      I działa w GR8?
      • 26: CommentAuthormono
      • CommentTime8 Aug 2014 13:08
       
      To jeden z wariantów. Może potrzebny mu dźwięk?

      @Valghir: Usiądź i napisz konkretny dokument specyfikujący wymagania (co dokładnie potrzebujesz ze względu na funkcjonalność gry) i może wtedy ktoś Ci pomoże.

      To nie jest problem z napisaniem takiego kodu zapewniam Cię. Problem raczej leży w tym, że programiści mają swoje projekty nad którymi pracują :) Jak będzie wiadomo co potrzeba, to może ktoś dla złapania oddechu od swoich rzeczy zrobi Ci to, czego potrzebujesz.
      • 27: CommentAuthorValdghir
      • CommentTime8 Aug 2014 15:08 zmieniony
       
      Na początek wystarczy mi prosty sterownik instalujący w HATABS urządzenia np. M

      Numer skanowanego portu przekazujemy w nazwie urządzenia:
      OPEN #1,12,0,"M1:PARAM1, PARAM2

      Brak PARAM1, PARAM2 ustawia wartości domyśle - kod spacji w negatywie (standardowy kursor Atari), zmiana na negatyw przy najechaniu na znak nie będący spacją.

      PARAM1 - kod znaku kursora
      PARAM2 - 0-1 zachowanie kursora po najechaniu na inny znak

      Po otwarciu sterownik jest nieaktywny.

      Po wybraniu GET procedura skanuje port myszy i zmienia aktualną pozycję kursora w trybie GR.0, rysuje kursor znakiem o kodzie PARAM1, jeśli kursor jeździ po pustym ekranie wyświetla się kursor, jeśli najedziemy na znak kursor wyświetlany jest normalnie albo w negatywie - PARAM2.

      Nie potrzeba mi żadnych duchów, mysz suwa po ekranie tekstowym kursorem.

      Po naciśnięciu FIRE lub ESC lub ENTER wraca. Get nie musi nic zwracać, położenie kursora odczytam z rejestrów kursora.

      Na start tyle mi wystarczy.

      W tajemnicach Atari jest asemblerowa procedura napisana w połowie, ale ja się nawet nie chcę za to brać, bo się na tym nie znam.
      • 28:
         
        CommentAuthorjhusak
      • CommentTime8 Aug 2014 16:08 zmieniony
       
      Jakiś konkret jest; niezabardzo jeszcze rozumiem z tą pozycją kursora (położenie odczytasz z rejestrów kursora).
      Wydaje mi się, że może to wprowadzić niezły bałagan do działającej aplikacji (komenda print będzie wypisywała w miejscu, gdzie był kursor myszy); lepiej jest mieć osobne rejestry do odczytu pozycji kursora myszy.
      • 29: CommentAuthorValdghir
      • CommentTime8 Aug 2014 16:08
       
      Tak napisałem bo wszystko ustawiam na ekranie przez POSITION. Ale dla unifikacji oczywiście lepiej nie przeszkadzać kursorowi ekranowemu.
      • 30: CommentAuthorValdghir
      • CommentTime8 Aug 2014 19:08 zmieniony
       
      Oto basicowy odpowiednik dla dżoja, port 1, bez obsługi guzika fire i "grzecznego wyjścia z programu" - czysta idea.
      0 GRAPHICS 0:POKE 752,1:X=0:Y=0:LIST
      2 LOCATE X,Y,Z
      4 POSITION X,Y:PUT Z+128
      6 S=STICK(0):IF S=15 THEN 6
      8 POSITION X,Y:PUT Z
      10 IF S=14 THEN Y=Y-1:IF Y<0 THEN Y=0
      12 IF S=13 THEN Y=Y+1:IF Y>23 THEN Y=23
      14 IF S=11 THEN X=X-1:IF X<0 THEN X=0
      16 IF S=7 THEN X=X+1:IF X>39 THEN X=39
      17 GOTO 2


      Mniej więcej tak to ma działać.
      Jeżeli podam PARAM1 to zamiast kursora ma stawiać znak o podanym kodzie zwracając to co było pod nim wcześniej, rzecz jasna.

      Dla umilenia chętnemu napisania mi powyższego dla myszy:

      " Piłem w Spale, spałem w Pile
      I to jak na razie tyle, hej, okey " :

      • 31:
         
        CommentAuthorjhusak
      • CommentTime9 Aug 2014 00:08
       
      Znak szczególny na mym ciele
      wytatuowany jeleń, hey, okey.

      On ma rogi gdzie ja mięśnie
      Jak ja schudnę to on wklęśnie, hey, okey

      Piłem w Spale, spałem w Pile
      I to jak na razie tyle, hey, okey.

      Klasyka.
      • 32: CommentAuthorValdghir
      • CommentTime9 Aug 2014 18:08
       
      @larek Prześlij mi proszę tą procedurkę. Bardzo chętnie sprawdzę. Profit już schładzam :-)

      @jhusak Poszukasz w wolnej chwili procedurki o której pisałeś? Możesz mi ją udostępnić? Nieśmiało poproszę - z oczekiwanym narzutem? :-)
      • 33:
         
        CommentAuthorlarek
      • CommentTime9 Aug 2014 22:08
       
      Podaj maila.
      • 34: CommentAuthorpin
      • CommentTime9 Aug 2014 23:08
       
      Jest też coś, co napisał Epi a zostało użyte w TRS Desktop. Procka próbkuje mysz (st/amiga) chyba z częstotliwością około 2khz, dodatkowo umożliwia rysowanie okienek na podstawie przekazanych parametrów, umożliwia też szybkie pisanie tekstu na foncie 4x8, 80 znaków w linii.

      całość w działaniu wygląda tak:

      ->link<-

      ;)
    5.  

      larek:

      Można? Nie ma takiej miejscowości... ale jest np. Moszna ;)
      Jest też taka oto miejscowość i to całkiem blisko mnie, co mogłoby tłumaczyć pewne rzeczy :)
      ->link<-

      Sorry, to już ostatni offtop :)
      • 36: CommentAuthorValdghir
      • CommentTime12 Aug 2014 18:08
       
      @larku Na priv się nie da?
      • 37:
         
        CommentAuthorlarek
      • CommentTime12 Aug 2014 22:08
       
      OK
      • 38: CommentAuthorValdghir
      • CommentTime17 Aug 2014 20:08
       
      @larku podejrzałem na szybko ten programik, ale nie mam teraz możliwości przetestowania, stąd pytanie: czy procedura działa w trybie GR.0 i zwróci prawidłowe dla niego położenie kursora?
      • 39:
         
        CommentAuthorlarek
      • CommentTime18 Aug 2014 01:08
       
      Tak jak napisałem w poście #11 procedura działa w trybie 8.
      • 40: CommentAuthormono
      • CommentTime18 Aug 2014 11:08
       
      Współrzędne wystaarczy sobie podzielić przez 8:
      lsr x+1
      ror x
      lsr x
      lsr x

      lsr y
      lsr y
      lsr y
      • 41: CommentAuthorValdghir
      • CommentTime18 Aug 2014 21:08 zmieniony
       
      @larek Bardzo fajne, bardzo podoba mi się kursor myszy, ale niestety tylko GR.8. Ale skoro już piszę, pozwolisz na ewentualne wykorzystanie w jakimś programiku użytkowym? Oczywiście z odpowiednią notką na starcie.

      Edit: zauważyłem też, że nie zdejmę położenia końca ekranu, więc widzę tylko zastosowanie dla programu w GR.8 ale z organizacją tekstową.

      @pin Skąd mogę pobrać TRS?
      • 42:
         
        CommentAuthorlarek
      • CommentTime18 Aug 2014 22:08
       
      Z wykorzystaniem nie ma problemu. Jeśli potrzebujesz procedurę w innym miejscu pamięci to daj znać - zmienię.

      Strzałka jest zawsze cała na ekranie i nie wychodzi poza jego granicę, więc kilka punktów z prawej strony ekranu i na dole są poza zasięgiem wskaźnika.
      • 43: CommentAuthorValdghir
      • CommentTime18 Aug 2014 22:08
       
      Z obszarem pamięci to jeszcze nie wiem, pewnie wyjdzie w "praniu" - na testowym środowisku działa bez zarzutu. Pisałeś o adapterze myszy USB do ST, rozumiem, że podpięta do niego myszka z punktu widzenia ATARI8 zachowuje się jak standardowa myszka ATARI ST wpięta do XL/XE? Jest jakaś namiastka akceleracji? Bo pisałeś, że śmiga. Testowałeś? Polecasz?
      • 44:
         
        CommentAuthorlarek
      • CommentTime18 Aug 2014 22:08
       
      Dokładnie tak, myszka od PC działa jak mysz ST lub Amigi (zależnie od interfejsu, bo są dwa rodzaje). Testowałem i polecam, ale wersję interfejsu z gniazdem PS2. Ta z USB (mam obie) potrafi się czasami zawiesić. Nie wiem w czym jest problem i dlaczego tak się dzieje. Może ten mój egzemplarz jest jakiś wadliwy. Wersja PS2 działa idealnie.
      Oryginalne myszki ST/Amiga działają z mniejszą szybkością (mniej DPI?) niż te od peceta, a procedura czyta port myszki z maksymalną prędkością, więc jak dostaje więcej informacji to szybciej zmienia położenie kursora na ekranie.
      • 45: CommentAuthorValdghir
      • CommentTime18 Aug 2014 22:08 zmieniony
       
      To jeszcze dopytam. Widziałem gdzieś ( u jhusaka? ) taki interfejs, są też na aledrogo. To jest to samo urządzenie? Czy klon jakiś? Co lepsze, co kupić?

      Testowałeś może CMI08?
      • 46:
         
        CommentAuthorlarek
      • CommentTime18 Aug 2014 23:08 zmieniony
       
      Tu kiedyś Mono opisywał taki interfejs: ->link<-

      Coś jeszcze można przeczytać tu: ->link<-

      Wygląda na to, że są dostępne np. tu: ->link<-
      Wersji PS2 już dawno nie widziałem.

      edit:
      Nie, nie mam CMI08.
      • 47:
         
        CommentAuthorjhusak
      • CommentTime19 Aug 2014 07:08 zmieniony
       
      Interfejs jhusaka pozwala podłączyć joysticki Atari/C64/Amiga/ST/A2600 do PC, gdzie są widziane jako joysticki HID (bez żadnych sterowników).

      Działa pod linux, OsX, Windows.
      • 48: CommentAuthorValdghir
      • CommentTime19 Aug 2014 09:08 zmieniony
       
      No to zdecydowanie nie w tę stronę :-)

      EDIT: sprawdziłem przed chwilą na żywym sprzęcie procedurę Larka - bardzo fajnie działa.