101

(114 odpowiedzi, napisanych Fabryka - 8bit)

O! Wielkie dzięki! Przetestuję sobie wieczorem jak zdążę, a jak nie, to jutro, bo dziś w rozjazdach jestem...

102

(114 odpowiedzi, napisanych Fabryka - 8bit)

Ok, czyli ja mam z wcześniejszej partii pewnie i jest jakaś różnica, tak? Niemniej jednak jak by się komuś chciało jakiegoś atr-a podrzucić, to był bym wdzięczny, bo teraz mnie to zaciekawiło i bym sobie odpalił, ale nie mam za bardzo z czym, a nie chce mi się ryć internetu w poszukiwaniach jak to zrobić na szybko:-)

103

(8 odpowiedzi, napisanych Sprzęt - 16/32bit)

Hehe:-) Właściwie to ja też dziękuję tOriemu, bo on robi tak dużo do ST, że czyny każdego przy nim bledną, a w zasadzie to nawet jak ktoś inny coś zrobi, to i tak zawsze jest w tym jakiś udział tOriego też:-) Tak że dzięki tOri!:-) W tym konkretnym przypadku powiem tylko tyle, że ja się głównie małym Atari bawię, ale tOri zasypuje tak ogromną ilością informacji i zabawek z dziedziny ST, że się wkręciłem i też się bawię:-) Tak że całkiem serio mówię o tych zasługach tOriego:-)

104

(114 odpowiedzi, napisanych Fabryka - 8bit)

Wrzućcie jakiegoś atr-a na którym można to na szybko przetestować, to sprawdzę i swój egzemplarz, bo mówiąc szczerze nie pamiętam nawet czy go kiedyś odpalałem, ale mam:-)

105

(114 odpowiedzi, napisanych Fabryka - 8bit)

Ile to jest amper "extra hiper mocny"? Może zestaw bierze prąd na granicy możliwości zasilacza, a ten przegrzewa się i włącza jakieś zabezpieczenie i odcina prąd, wtedy siada mu napięcie, bo podaje coś tam tylko szczątkowo, ale nie zasila tak na prawdę. Atarki jakoś mocno porozszerzane? Trzeba by prąd pomierzyć a nie napięcie.

106

(8 odpowiedzi, napisanych Sprzęt - 16/32bit)

Ta moja robota, to nie jest jakiś wielki geniusz, a raczej prowizorka - ale taka z cyklu, że raz zrobiona i służy na zawsze, bo nikt nie zrobi tego później już nigdy profesjonalnie skoro działa:-) Coś jak przytwierdzenie czegoś co luzem latało trytytką - i jest już na wieki:-) No a wcześniej nie działało, więc jest lepiej niż było, nie? :-)

Z przerabianiem na większy procek to nie taka pojedyncza sprawa. Tzn. oczywiście z tej samej rodziny procek jak by wziąć i po prostu przerobić, to by się dało w miarę jako-tako, ale wydaje mi się, że nie ma to sensu, bo obecna wersja jest na PIC16F876, który kosztuje z pięć dych, no to większy procek z tej rodziny był by jeszcze droższy, a cały czas jest to PIC, za którymi nie przepadam i nie umiem. Gdybym miał to przenosić na inny procek, to już wolał bym pójść w kierunku jakiejś Atmegi, które lubię i umiem programować, bo kiedyś dużo się nimi bawiłem. Jednak idąc jeszcze dalej, obecnie są inne rozwiązania emulujące IKBD np. na pi pico tutaj: https://github.com/fieldofcows/atari-st-rpikb
Dziś są te wszystkie pi zero, pico, esp32, to są procki znacznie mocniejsze, a kosztują kilkanaście zł a nie kilkadziesiąt. Taki projekt jak Eiffel jest na tyle duży, że łatwiej było by to zrobić na mocniejszym procku, gdzie można to wtedy zaprogramować sobie w języku wyższego poziomu, co uprościło by modyfikacje, łatwość i szybkość programowania. No po prostu czasy się zmieniły.

Inna sprawa, że do obecnych zastosowań interfejsu Eiffel, ten procek który tam jest, jest wystarczająco mocny, ale projekt jest już blisko sprzed 20 lat (ostatni firmware pochodzi z 2005 roku). Projekt z jakichś względów stanął wtedy w miejscu, a dziś z tego co wiem nie ma też żadnego kontaktu z autorem, bo są osoby, które próbowały coś tam do niego wysyłać i nie było odpowiedzi, więc ja nawet nie próbowałem. Na stronie Eiffla obecny firmware ma oznaczenie 1.10, przy czym jest informacja jeszcze że autor pracuje nad wersją firmware, którą oznaczał 2.0 i zapowiadał, że będzie wymagała zmian sprzętowych, bo chce zmienić taktowanie procka z 4MHz na 8MHz. Motywował to tym, że czasami gubią się ramki w transmisji danych, bo są jakieś specyficzne sytuacje gdzie się to nie wyrabia. Druga rzecz, że jest tam też podane, że są jeszcze funkcje IKBD, które nie są obsługiwane, więc możliwe, że też było by to jeszcze dopisane w kolejnych wersjach. W procku były wolne banki pamięci, więc autor miał tam pole do manewru jeszcze dość spore jak mi się wydaje.

Tak jak mówię: przepisanie tych 6tys linii kodu w assemblerze PIC-a na inny procesor było by na tyle trudne i czasochłonne, że chyba szybciej było by to napisać od nowa, tak jak zrobił to np. autor wspomnianego wyżej rozwiązania na pi pico.
Nie wiemy też jakie jeszcze ewentualnie poprawki były by konieczne w Eifflu, ja trafiłem na ten kłopot z fire, ale może są jeszcze inne problemy wymagające poprawek? Możliwe, że autor Eiffla planował jeszcze jakieś inne ulepszenia, no ale wiemy tylko tyle ile wiemy. Na tym etapie osobiście nie mam innych potrzeb dot. Eiffla ponad tą jedną poprawkę, którą tu zrobiłem.

107

(251 odpowiedzi, napisanych Fabryka - 16/32bit)

Poprawiłem interfejs Eiffel na potrzeby na potrzeby płyty ATX w kwestiach opisywanych we wcześniejszych postach.
Tu jest osobny wątek na ten temat: http://www.atari.org.pl/forum/viewtopic.php?id=19470

108

(8 odpowiedzi, napisanych Sprzęt - 16/32bit)

Oryginalne oprogramowanie mikrokontrolera PIC interfejsu Eiffel ma przypadłość taką, że niestety w niektórych grach nie działa fire joysticka podpiętego pod port 1 joysticka.
Problem jest dość szeroki, bo dotyczy wielu gier i to raczej dobrych i ważnych, np.:
- Gods
- Prehistorik
- Dizzy Yolkfolk
- Fred
Pewnie więcej jest takich gier, ale to przykłady pierwsze z brzegu.
Podobnie nie działa fire joysticka w programie testującym joystick i mysz od P.Putnika i jest tu ta sama sytuacja.

Zauważyłem, że we wszystkich tych przypadkach gdzie nie działa fire, działa jako fire prawy przycisk myszy.
W oryginalnym Atari prawy przycisk myszy (port 0) i przycisk fire joysticka (port 1) to fizycznie jest to samo, bo linie te są połączone.
W przypadku Eiffla nie mamy fizycznego połączenia tych dwóch rzeczy, bo mysz jest PS/2, a joystick ma swój własny port.

Problem wynika z tego, że w Atari odczyt danych joysticków, myszy i przycisków można robić na kilka sposobów. Odpowiada za to interfejs IKBD, który znajduje się w oryginalnej klawiaturze Atari i obsługuje zarówno klawiaturę, mysz i joysticki. Odczyt przycisku fire jak zauważyłem autorzy gier robią z wykorzystaniem różnych funkcji interfejsu IKBD i czasem odczytują się stany joyów razem z przyciskami, czasem osobno kierunki i osobno przyciski, czasem przycisk jako przycisk myszy itd., a tych procedur odczytu jest kilka różnych.

Emulacja interfejsu IKBD stworzona w Eifflu odczytuje przycisk joysticka tylko w wypadku kiedy jest to faktycznie fizycznie przycisk joysticka, a myszy gdy mamy takie dane z PS/2.
Wymyśliłem więc najpierw, że skoro prawy przycisk myszy działa jako fire w grach, to trzeba po naciśnięciu fire dodać go do przycisku myszy.
Pierwsze próby zrobiłem tak, że wstrzyknąłem się w kod obsługi PS/2 i tam dodałem ten fire podczas wciśnięcia przycisku. To zadziałało, ale fire działał tylko jeśli w tym samym czasie szła jakaś faktyczna transmisja danych z myszy, żeby było do czego ten fire dodać. Takie rozwiązanie było o tyle dobre, że to były tylko dwie instrukcje, a dokładnie tyle wolnej pamięci na kod zostało w PIC-u. Jednak trudno wyobrazić sobie granie w gry i jednoczesne szuranie cały czas nogą myszką, żeby cały czas szła jakaś transmisja do której będziemy dodawać przycisk fire:-)

Dlatego wymyśliłem, że fire trzeba wysyłać bezpośrednio po stronie transmisji danych do Atari i po prostu wysłać fake-dane myszy.
Mój kod działa tak, że jest uruchamiany w miejscu gdzie wysyłane są dane joysticka do Atari, bezpośrednio przed tymi danymi. Jeśli przycisk fire jest wciskany lub puszczany, to mój kod wyśle transmisję danych od fejkowej myszy, w których to danych zapisane jest wciśnięcie (lub puszczenie) prawego przycisku myszy oraz brak ruchu myszy, czyli dwa zerowe bajty dla kompletności transmisji.

W kodzie źródłowym Eiffla w procedurze zaczynającej się od etykiety SendAtariJoysticks dodałem swój kod (są to linie w pliku źródłowym od 1867 do 1881).
Kod ten sprawdza czy włączona jest obsługa myszy (konieczne, bo jak Atari wyłączyło całkowicie mysz, to nie spodziewa się danych od myszy, więc jak się takie dane pojawiają, to występują błędy).
Jeżeli mysz wyłączono, to następuje przeskok mojego kodu i nie wykonuje się nic. Jeżeli natomiast mysz jest włączona, to można dokonać transmisji fejkowych danych.
Dane fejkowe to trzy bajty: pierwszy nagłówkowy zawiera informacje że to dane od myszy i tam też stan prawego przycisku myszy. Dwa kolejne bajty są zerowe i oznaczają ruch myszy w osi x i y.

Poniżej ten mój fragment kodu, który tu opisuję:

;-----------------------------------------------------------------------------
; BEGIN Fake mouse data (right mouse button) - added by Mq (2023-10-07)
        btfss Flags,MOUSE_ENABLE
            goto Not_Fake_Mouse_Data; no authorization from Atari
        movlw 0xF9; joy1 fire pressed
        btfss JOY1,4
            movlw 0xF8; joy1 fire released
        call SerialTransmit_Host
        movlw 0
        call SerialTransmit_Host
        movlw 0
        call SerialTransmit_Host
Not_Fake_Mouse_Data
; END Fake mouse data
;-----------------------------------------------------------------------------

I to załatwia temat. Przetestowałem na około 30 grach, wymienione wyżej gry zachowują się poprawnie, program testowy P.Putnika też działa poprawnie.

Jest tylko jeden jeszcze szkopuł. Otóż, żeby to dodać, musiałem wyłączyć obsługę wyświetlacza LCD, a więc wersja firmware, którą tu prezentuję nie będzie wyświetlała nic na wyświetlaczu LCD jeśli ktoś ma taką wersję interfejsu Eiffel. Zrobiłem tak dlatego, że w pamięci na kod Eiffla zostało miejsce tylko na dwie instrukcje. Eiffel ma na początku kodu w liniach od 130 do 140 kilka flag dotyczących kompilacji, które pozwalają wyłączyć część kodu odpowiedzialną za niektóre funkcjonalności Eiffla. Ponieważ mój Eiffel nie posiada wyświetlacza LCD i nie przewiduję go używać, więc najprościej było zmienić jedną wartość odpowiedzialną za LCD z 1 na 0, co wyłącza całkowicie obsługę wyświetlacza LCD, za to zwalnia miejsce w pamięci na dodatkowy kod, który dopisałem, żeby obejść problem niedziałającego fire.
Tak na prawdę w PIC-u jest jeszcze miejsce, z tym że pamięć tego układu jest bankowana i żeby użyć pamięci wolnej w innych bankach, trzeba by pozmieniać trochę więcej w kodzie, bo trzeba te banki przełączać, żeby np. wykonywać skoki do procedur zapisanych w innych bankach. Ja nigdy wcześniej nie programowałem na PIC-e niczego, więc i tak sporo trudu kosztowało mnie to co już zrobiłem. Dla siebie jak pisałem nie potrzebuję LCD, jeśli okaże się, że to jest potrzebne, to w przyszłości spróbuję jeszcze poprawić to tak, żeby jednak zmieścił się ten kod obsługi wyświetlacza. Można to zrobić na dwa sposoby: albo skorzystać z bankowanej pamięci dodatkowej, która jeszcze jest wolna, albo znaleźć miejsca w kodzie, które dało by się zoptymalizować i zyskać miejsce na kilka instrukcji, bo tego miejsca brakuje chyba na jakieś chyba 8 instrukcji tylko.

Załączam całkowity kod źródłowy z moją poprawką oraz skompilowany wsad do PIC-a.

O, nie wiedziałem, że w emulatorach jest. Przy wolnej chwili sprawdzę sobie jak działa. (serio)
Ale moje pytanie raczej dotyczyło real sprzętu. (też serio)

Ile osób na świecie ma MapRAM?

111

(115 odpowiedzi, napisanych Software, Gry - 8bit)

Tych nazw nie kojarzę, więc to nie to. Mi się wydaje że to się nazywało jakoś chyba turbo copy/turbo copier czy coś takiego, ale to tak tylko przez mgłę pamiętam. Nieistotne jeśli tego nie znajdę, a jeśli znajdę, to będzie wiadomo:-)

112

(115 odpowiedzi, napisanych Software, Gry - 8bit)

Ten kopier, którego ja miałem pamiętam że pozwalał na wybór 600/900/1200 bodów. Pamiętam to dlatego że 900 bodów działało mi bez problemu zawsze, a 1200 bodów jak zapisałem taśmę, to był problem z odczytem tego później. Niestety nie pamiętam nic więcej na temat tego kopiera, którego miałem, ale tak jak mówię, może znajdę go na jakiejś kasecie, choć najpierw muszę same kasety w ogóle znaleźć:-)

113

(115 odpowiedzi, napisanych Software, Gry - 8bit)

Nie, inaczej się nazywał, ale nie pamiętam jak... Jak znajdę kasety, to może na którejś będzie ten kopier też, to sobie przypomnę i napiszę.

114

(115 odpowiedzi, napisanych Software, Gry - 8bit)

No to przy wolnej chwili poszukam starych kaset i zobaczę co tam na nich zostało. Ten Crumbles Crisis pamiętam dość dobrze, bo bawiłem się wtedy w przyspieszanie transmisji i jakiś kopier miałem, który pozwalał kopiować z prędkościami zapisu innymi niż 600 bodów. Robiłem wtedy testy na moim XC12 i bez problemu wszystko mi się wczytywało w 900 bodów, więc tak nagrywałem później sobie kasety i na pewno tak też nagrałem ten Crumbles Crisis. Poszukam.

115

(115 odpowiedzi, napisanych Software, Gry - 8bit)

Crumbles Crisis miałem kiedyś na kasecie w takiej wersji, że doczytywało się z kasety kolejne poziomy i chyba była to pełna wersja tej gry. Czy to jest jakiś ewenement na skalę światową posiadać taką wersję kasetową, czy nie jest to nic szczególnego? Pytam, bo jak by to było coś wielkiego, to może był bym w stanie odszukać jeszcze tą kasetę. Ale jeśli nie jest to nic szczególnego, to wolał bym nie, bo mi się nie chce:-)
Aha, kaseta była przegrywana, nie żaden oryginał.

O, to mnie zaskoczyłeś tym znaleziskiem Cyprian:-) Na oko wygląda, że tam wszystko jest, ciekawe czy kompletne i czy działa:-) No tylko tak... ja nie umiem tego zebrać do kupy i skompilować na jakiś konkretny scalak, ani też nie umiem tego testować:-) Podejrzewam więc, że przysłowiowy Kowalski z lutownicą, też z tego sobie nie wybuduje kontrolera do FDD... Trochę bawiłem się xilinx ise, ale mój szczyt tego co wyprodukowałem obejmował kartridż do małego Atari, po czym skończył mi się wolny czas na tą zabawę:-) Ten projekt kontrolera WD jest znacznie większy niż drobiazgi które sobie dłubałem...

@tOri: No właśnie mnie to zastanawia dodatkowo, że ktoś robi robotę z zaimplementowaniem całego Atari w jeden scalak, a nie ma nikogo, kto by zrobił np. WD1772 w fpga z otwartym źródłem na jakiś tani fpga, albo cpld i w sposób taki, żeby jak najmniej trzeba było lutować i każdy mógł sobie to w domu poskładać?

@Cyprian: żeby nie było, ja doceniam, że ktoś to trenuje i umie, tylko mi chodzi o praktyczne wykorzystanie oraz o to, że tak jak też tOri napisał, brakuje układów oryginalnych od Atari, albo są drogie, no to jest tu pole do tego żeby zapewnić maszynkom długowieczność, bo te scalaki oryginalne kiedyś w końcu wymrą całkowicie. Ja nie umiem takich rzeczy robić, ale jak ktoś umie, i ma czas na to żeby implementować całego kompa w fpga, to uważam, że jego patriotycznym obowiązkiem jest implementowanie zamienników poszczególnych układów:-)

Podzielam opinię tOriego. Akurat na dniach poskładałem sobie ST ATX na płycie od x_angela, tam mam "prawdziwe" scalaki, kupę pinów do wszystkiego, scalaki w podstawkach i teraz taką górę pomysłów na rozbudowywanie tego, że aż nie wiem co robić najpierw. Ja oczywiście rozumiem, że fpga to bardziej "prawdziwy" sprzęt niż emulatory, ale w takiej formie to dla mnie bez różnicy czy to ST jest w fpga, czy bym sobie jakiś emulator odpalił. Kiedyś się tymi wszystkimi nowymi projektami tego typu zachwycałem, ale dziś kompletnie nie wiem do czego mogło by to służyć. Nie daje ani ducha zabawy w retro, bo to nie retro, ani nowoczesnego sprzętu do współczesnych zastosowań, bo przecież nikt na takim Atari nie będzie robił niczego poważnego i współczesnego. Ot ciekawostka i może frajda dla kogoś kto to implementował, ale dla użytkownika to moim skromnym zdaniem projekt do niczego nie potrzebny i nieprzydatny.

119

(251 odpowiedzi, napisanych Fabryka - 16/32bit)

No ok, ale nie zmienia to faktu, że kontaktu z autorem Eiffla nie ma, więc nie ma kto tego zrobić:-)
Na stronie Eiffla jest jeszcze wpis taki, że niby wersja 2.0 firmware miała powstać, ale nie jest już zgodna sprzętowo z dotychczasowym Eifflem, bo miał być szybszy zegar do mikrokontrolera, to i być może inne zmiany sprzętowe były planowane.
http://didier.mequignon.free.fr/eiffel-e.htm

Na powyższej stronie jest tylko opis wersji 2.0, ale nigdzie w necie nie znalazłem już informacji ani o nowszym sprzętowo Eifflu, ani o dostępności firmware nowszego. Ostatnia dostępna wersja firmware to 1.10 i takiej tu używamy.

Dla wersji 2.0 napisano, że miały być takie zmiany: Taktowanie urządzenia 8MHz zamiast 4MHz. Tam napisano, że się nie wyrabia szybkością transmisja i gubi niektóre kody przesyłane. Miała być też poprawka repetycji wciśnięć klawiszy. Te rzeczy tłumaczyły by to co się czasami dzieje, że klawisze się blokują czasem, np. jakiś klawisz sam się wciska. x_angel pisał mi o zasilaniu, ale ja znalazłem, że to są problemy powtarzalne, można znaleźć na naszym forum informacje o tym, pisane przez Krolla i kogoś tam jeszcze, nie pamiętam, bo w sumie nikt nie dyskutował o tym Eifflu u nas za dużo. Opisy tych problemów znalazłem też w wątkach na atari-forum i atariage, ale nigdzie nie było też rozwiązań, za to wszędzie było info, że nie ma kontaktu z autorem Eiffla.

Na powyższej stronie widnieje też informacja taka:
Near all IKBD supported (only IKBD_SET_MOUSE_THRESHOLD, IKBD_SET_FIRE_BUTTON_MONITOR, and IKBD_CONTROLLER_EXECUTE are not supported).

Nie znam się na tych procedurach systemowych, bo jak pisałem wcześniej nigdy nie programowałem nic na ST. Ale patrząc na nazwę procedury, może IKBD_SET_FIRE_BUTTON_MONITOR to jest właśnie to co nie działa i dlatego fire w grach nie chodzi? Ja nie umiem, ale gdyby ktoś potrafił jakoś zdebugować czy te niedziałające gry wykorzystują może właśnie tą procedurę, albo ktoś umiał by sprawdzić co ta procedura właściwe robi i czy to może mieć związek?

Przykładowe gry, w których na Eiiflu nie działa fire, a działa zamiast niego prawy przycisk myszy:
Prehistorik
Gods
Fred
Dizzy Prince of the Yolkfolk

Ilość gier rośnie, a ja sprawdziłem tylko coś koło 30-40 tytułów, przy czym nie są to jakieś tam byle gry, tylko czołówka hiciorów...

120

(251 odpowiedzi, napisanych Fabryka - 16/32bit)

Cyprian, ale z tymi przyciskami myszy, to nie jest że gry nie ogarniają, tylko Eiffel nie ogarnia. Standardowo sprzętowo w Atari połączony jest na sztywno prawy przycisk myszy i fire w drugim porcie joya. W oryginalnym Atari bez względu na to czy wciśniesz prawy przycisk myszy czy fire w joy w drugim porcie, to dla Atari nie robi różnicy, bo to jest ten sam przycisk fizycznie. W Eifflu natomiast zostało to rozdzielone, a nie do końca obsłużone i dlatego są kłopoty.

A taki "tryb zgodności" jak piszesz, to dało by się zrobić jako jakiś program rezydentny, który by w grach ten fire dodatkowo z prawego przycisku myszy czerpał? Jeśli tak, to by też rozwiązało problem dla wszystkich gier od razu.

Z obrazem właśnie nie jest tak jak piszesz, bo przerwania generowane są odrębnym zegarem. Jak zmieniamy podstawowy zegar, to ilość linii się nie zmienia, ilość ramek na sekundę też nie, natomiast zmienia się ilość cykli procesora w linii. I z tego robią się problemy z tzw. docyklowanymi demami, gdzie programiści przewidzieli, że mają określoną ilość cykli, a jak dajemy minimalnie wolniejszy zegar, to tam się robią jakieś pojedyńcze cykle w linii mniej, zaczyna ich brakować i program się sypie.

No chyba, że coś źle zrozumiałem, ale z moich obserwacji wynika, że tak właśnie jest.
Jak budowałem teraz generator z kwarcem z płyty oryginalnym, to potwierdziło się to co mówię. Kwarc przez przypadek wzbudzał mi się na niższej częstotliwości (3x niższej, bo to kwarc tzw. overtonowy i trzeba go odfiltrować, żeby wzbudzał się na 3x wyższej częstotliwości, co już naprawiłem nawiasem mówiąc). No i jak się kwarc wzbudzał na 3x mniejszej częstotliwości, to obraz wyglądał jak na załączonym zdjęciu. Ilość linii obrazu, częstotliwości przerwań synchronizacji poziomych i pionowych się zgadzają, bo inaczej obrazu by w ogóle nie było na monitorze. Natomiast zawartość leci trzy razy wolniej, przez co jest wszystko trzy razy większe i oczywiście jest dodatkowo bajzel. Startujące na tym zdjęciu Atari nie uruchamia żadnych procedur synchronicznie do przerwań, więc nic się nie wysypuje, a komputer normalnie wstaje, tylko wyświetla to co wyświetla. Jednak jak w demach jakieś procedury mają się odpalać zgodnie z przerwaniami, to zaczyna się to sypać, bo procedura nie zdąży wykonać się w całości przed wystąpieniem następnego przerwania.

http://www.atari.org.pl/forum/misc.php?action=pun_attachment&item=10840

121

(251 odpowiedzi, napisanych Fabryka - 16/32bit)

Chodzi o to z tego co zauważyłem, że w Atari system ma gotowe procedury odczytu joya, myszy. Programiści pewnie to wiedzą lepiej, bo ja nigdy nic jeszcze na ST nie programowałem, ale wiem że są inne procedury do odczytu myszy, a inne do odczytu joya, pomimo że fizycznie dzieje się to na jednym i tym samym porcie. W Atari fizycznie to się dzieje na tych samych portach, więc wybór procedur odczytu zależy od programisty i tych metod na odczyt danych z portów joya i myszy jest kilka. To że procedura nazywa się "odczyt przycisku myszy", to nie znaczy że nie można jej użyć do odczytu przycisku joya i w grach najwyraźniej nieraz tak jest.

W Eifflu oprogramowanie PIC emuluje tego chipa, co on siedzi w oryginalnej klawiaturze. A więc naśladuje uruchamianie procedur systemowych w ST.
Początkowo Eiffel nie miał w ogóle portów joyów, na początku była tylko obsługa myszy i klawiatury PS/2. Obsługa procedur komunikacji z myszą i klawiaturą została dość dobrze dopracowana. Dopiero w późniejszych wersjach Eiffla dołożono te dwa porty joya i zrobiono im odrębną obsługę, ale te porty są związane tylko z obsługą procedur związanych z joyem. Z tego powodu nie da się np. podłączyć normalnej myszy od Atari, bo procedury komunikacji z myszą, z automatu rozmawiają tylko z myszą PS/2. I odwrotnie, procedury joya działają tylko z portem joya. No i tak jest ok, dobrze ktoś to wymyślił, bo w większości przypadków działa to poprawnie, ale właśnie ten nieszczęsny fire/przycisk myszy nie został wzięty pod uwagę.

Z punktu widzenia projektanta podobnych urządzeń, a także programisty mikrokontrolerów i mikrokomputerów, jestem na 100% pewny, że zmiana w firmware żeby połączyć prawy przycisk myszy z fire joya, jest bardzo prosta i da się ją łatwo "na kolanie" zrobić. Dla mnie problem jest w tym, że nigdy nie programowałem na PIC-a, więc musiał bym poszukać sobie środowiska jakiegoś, softu do kompilacji, doczytać jak się to wszystko kompiluje, doczytać datasheety PIC-ów itd. Rzecz mnie na tyle intryguje, że pewnie się tym w końcu będę chciał zająć, ale przewiduję tutaj walki z moją własną niewiedzą i zużycie dużej ilości zasobu jakim jest czas, a tego obecnie nie posiadam w nadmiarze:-)

A z innej beczki: wsadziłem brakujący układ HC11 i sprawdziłem przełączanie TOS-ów - działa dobrze, startuje 1.04 i 2.06.

122

(19 odpowiedzi, napisanych Bałagan)

Jakąś podobną wtyczkę miałem w jednym z pierwszych aparatów Kodak. Też taka mała i też 4-pin. Mój brat miał inny model Kodak, jakiś następny, ale w tym samym roku i miał tam też taką małą wtyczkę z 4-pin, ale miała inny kształt i już nie pasowały nawzajem do siebie te kable do tych aparatów. Z pewnością to jest od jakiegoś aparatu, kamerki, mp3, albo jakiegoś starego telefonu.

123

(251 odpowiedzi, napisanych Fabryka - 16/32bit)

Przepisywać na inny mikrokontroler, czy tam pisać od nowa to nieee...

Ja pomyślałem, że jak są źródła, to można by je spróbować skompilować na ten sam mikrokontroler i sprawdzić czy się uda osiągnąć taką sytuację, że się uzyska identyczny wsad jak ten gotowy.

Jak to by się udało, to wtedy dziabnąć tam tylko "oszustwo" w kodzie, żeby fire joysticka zapisywał się jako przycisk prawy myszy jednocześnie (żeby się fire joya i prawy przycisk myszy sumowały logicznie). To by wystarczyło prawdopodobnie, żeby działały wszystkie gry poprawnie.

124

(251 odpowiedzi, napisanych Fabryka - 16/32bit)

Dziś testów ciąg dalszy nastąpił.

Zacząłem od zbudowania sobie generatora kwarcowego, żeby odpalić płytę na tym kwarcu oryginalnym z ST (32.084988 MHz) zamiast standardowych 32MHz, który to miałem do pierwszych testów.
Od razu napiszę, że różnica jest taka, że ów demo co mi się zawieszało, to się przestało zawieszać. Poza tym jakichś wielkich różnic nie zaobserwowałem, obraz nie przesunął się i na oko ma takie same rozmiary na obu generatorach. Gry, które testowałem działały na obu kwarcach w zasadzie tak samo. Krótko mówiąc generator 32MHz z grubsza spełnia swoją rolę i można tak Atari odpalić. Pewnie z czasem powychodziły by jeszcze jakieś niuanse i ograniczenia, ale do zastosowań ogólnych 32MHz daje z grubsza radę. Niemniej jednak skoro już mi się udało zbudować i uruchomić generator na oryginalnym kwarcu Atari, to taki zostaje w mojej płycie.

Obejrzałem 10 długich dem z czołówki najlepszych i wszystko działa chyba dobrze.

W kwestii Eiffla podszedłem do tematu dzisiaj raz jeszcze z chłodną głową i postanowiłem precyzyjnie określić co działa, a co nie.
Na spokojnie przetestowałem to i owo, i generalnie urządzenie jest fajne, ma jakieś tam drobne niedogodności, ale ogólnie jeśli chodzi o mysz i klawiaturę, to działa bardzo dobrze.
Problem jest tylko z joystickiem, ale w gruncie rzeczy kierunki też działają bardzo dobrze, więc jedynym poważnym problemem jest fire.

Dziś przetestowałem łącznie 30 gier i oprócz Prehistoryka trafiłem jeszcze na drugi hit, w którym też jest ten sam problem z przyciskiem fire. Chodzi o grę Gods.
W zasadzie to jest jedyny problem z Eifflem i jest powtarzalny w różnych grach. Nie działa w niektórych grach fire, ale jednocześnie działa on pod prawym przyciskiem myszy.
Firmware od Eiffla ma już blisko 20 lat, a na stronie jest info o planach kolejnej wersji. Co się stało, czy ktoś wie coś na temat autorów, albo dlaczego nie był ten projekt już dalej rozwijany?

W sumie kody źródłowe są upublicznione, a skoro fire działa pod przyciskiem myszy, to może dało by się jakoś łatwo zdublować fire, żeby działał razem z tym przyciskiem?
W sumie wystarczyło by po stronie odczytu joya zrobić tak, że jak się wciska przycisk fire, to on oprócz swojej obecnej akcji, powinien równolegle zapisać się tam gdzie zapisuje się prawy przycisk myszy, że niby wciśnięto przycisk w myszy. Podejrzewam, że jest to na jakiejś takiej zasadzie, że jest jakiś rejestr osobny dla myszy, gdzie zapisuje się stan przycisku, a osobny dla joya gdzie się zapisuje stan fire. Kiedy system odpytuje klawiaturę o stan myszy, to eiffel zwraca rejestr przycisku myszy, ale kiedy odpytuje o fire, to zwraca rejestr fire. Tymczasem oba te rejestry powinny przyjmować wartość zarówno prawego przycisku myszy, jak i fire z joya, bo oryginalnie w Atari te linie są fizycznie połączone ze sobą. Gdyby tak to zmienić to już było by dobrze wszystko.
Nie mam na to czasu, ale jeśli nikt nie zajmie się tym, to sam spróbuję pewnie kiedyś to zrobić, ale lata lecą coraz szybciej i istnieje ryzyko, że mogę nie dożyć tego momentu:-)

125

(19 odpowiedzi, napisanych Bałagan)

Ja nie pamiętam dokładnie i odpowiedź będzie z pewnością nieprecyzyjna, ale był taki kiedyś czas, że zanim się standardy ustandaryzowały, to na rynku krążyła cała masa takich dziwnych wtyczek różnych. Pamiętam, że w pierwszych aparatach cyfrowych były takie różne wynalazki na przykład. Jak się zmieniało aparat, albo jak ktoś miał jakiś tam inny model, to do każdego trzeba było mieć inny kabel i nic nie pasowało do siebie nawzajem. Masakra była z tymi kablami.