Witam,
Ale się miło kłócicie, aż fajnie popatrzeć :)
No to teraz kilka słów wyjaśnień ode mnie:
Atari800 jest emulatorem tworzonym od wielu lat przez wielu ludzi. Może wygląda on na zaśmiecony, ale z całą pewnością jest mniej zaśmiecony niż jakieś 6 lat temu. Obecnie ma on czystą strukturę: główny emulator + funkcje specyficzne dla platformy. Problem w tym, że struktura Atari800Win to: funkcje specyficzne dla platformy (interfejs Atari800Win) + główny emulator. Ta zamiana ról powoduje, że nie da się od tak po prostu użyć funkcji z atari800, potrzebne są zmiany, ale do tego wątku jeszcze wrócę.
Mam ogromny podziw do Phaerona, który startując od zera uzyskał w kilka lat porównywalny poziom emulacji atari jak wielu twórców atari800 przez znacznie większy okres czasu. Tyle, że nie widzę związku dlaczego rozwój Altirry miał mieć jakiś wpływ na Atari800Win. Sugestia, że jeśli przestałbym pracować nad Atari800Win to pracowałbym nad Altirrą jest śmieszna. Przede wszystkim nie sądzę aby Phaeron potrzebował mojego wtrącania się do jego kodu. Co ciekawe (jak ktoś czytał wątek na atariage ten wie), to właśnie Phaeron zdebugował i znalazł błąd w jednej z beta wersji Atari800Win. Czyli również on nie uważa, że powinien być tylko jeden jedyny zatwierdzony emulator Atari pod Windows.
Ustalmy sobie jedno. Emulatorami atari są takie emulatory jak: Altirra, atari800, Atari++ i inne. Atari800Win jest czymś w rodzaju spin-offa atari800. Realizacją pomysłu stworzenia emulatora atari800 z interfejsem znanym z Windows. Specyficznego projektu, ponieważ prawie zawsze rozwijanego przez 1-2 osoby (pomimo bycia GPL). Obecnie również ma on 2 developerów. (I pomimo iż drugi jest prawie niewidoczny, to bez jego rad nie dałbym rady zbudować wersji 4.1.)
Atari800Win polega mocno na kodzie atari800. Swego czasu mocno pracowałem z Foxem aby to połączenie uczynić silniejszym. Dzięki jego staraniom udało się doprowadzić do tego, że Atari800Win kompilował się bez przeszkód z dowolną wersją atari800. Skutki jego działań są widoczne obecnie. Po 6 latach jedyne zmiany jakie musiałem dokonać w Atari800Win aby się kompilowało z atari800 to:
-zmiana nazw zmiennych
-zmiana kilku #ifdefów
-zmiana obsługi generowania palety kolorów
niewielkie zmiany jak na 6 lat pracy trzeba przyznać.
Obecne widoki na przyszłość można opisać tak:
-Altirra, Atari++ i inne będą wydawane jak ich autorom się zechce pracować,
-atari800 wciąż będzie rozwijane przez grupę jego twórców.
A co zrobić z Atari800Win? Nie mam ochoty wtrącać się w pracę innych developerów. Phaeron pewnie niechętnie widziałby wtrącanie się do jego kodu. Nie mam również ochoty tworzyć atari800 bo nie znam się na emulacji Atari.
Mogę więc robić 3 rzeczy:
-Stworzyć międzyplatformowy interfejs dla arari800 oparty o wxWidgets. Oznacza to jednak pisanie właściwie wszystkiego od nowa.
-Zintegrować Atari800Win z atari800 na takiej samej zasadzie jak inne porty (jak np. SDL). To też jednak oznacza przepisanie większości Atari800Win od nowa.
-W dalszym ciągu rozwijać Atari800Win w jego obecnej postaci.
Ta ostatnia opcja oznacza, że przy każdej nowej wersji atari800 trzeba będzie dopasowywać Atari800Win do atari800. Jak jednak pokazałem wcześniej nie jest to aż takie straszne. Byłoby oczywiście miło, gdyby autorzy atari800 zaakceptowali moje patche do atari800. Nie psują one nic w ich kodzie a mi ułatwiają pracę na przyszłość. Ale jak nie, to nie. Nie ma problemu. Czas potrzebny na utrzymywanie nowych wersji Atari800Win jest i tak wciąż mniejszy niż tworzenie nowych wersji emulatora (WX czy innego). A ponieważ czasu mam mało, to nie mam wyjścia. Albo będę raz na jakiś czas wypuszczał nową wersję Atari800Win opartą nowy kernel atari800 (mam nadzieję tylko, że częściej niż do tej pory), albo nie będę robił nic. (No w sumie to mi jeszcze pozostaje zrobienie ostatniego dema.)
Nie oczekuję, że twórcy atari800 będą utrzymywali kod Atari800Win. Chociażby z powodu nieposiadania kompilatora VC. Sam jednak fakt, że części Atari800Win znajdują się w atari800 wielce pomaga w pracy. Z reguły bowiem programiści nie usuwają bez potrzeby #ifdefów nawet jak ich istoty nie rozumieją. Mogę co każdą wersję podsyłać zmiany jakie musiałem dokonać w atari800 aby Atari800Win się budowało (tak wyglądała moja współpraca z Foxem). Przynajmniej nie będę musiał drugi raz nakładać tych samych zmian. (A patch nie zawsze działa, zależy ile w oryginalnym kodzie jest zmian.)
Nie wiem jakie super funkcje ma Atari800Win, które powinny niby się znaleźć w atari800. Co do odtwarzania dźwięku to zaprzeczam, nie ma w nim nic, co by zmieniało emulację dźwięku. Zresztą przecież wszystko jest opensource. Można kopiować co się chce. Swoją drogą dziwię się, że nikt przez 6 lat nie zrobił własnego buildu. Widać nie było to aż takie niezbędne do życia. Przeceniacie rolę Atari800Win.
I na razie tyle. Idę spać.
P.S. Coś się chrzani w emulacji w NTSC przy DirectSound (i chyba nie przy WaveOut, ale nie mam jak sprawdzić bo mój domowy komputer nie odtwarza WaveOut, tylko DirectSound, dziwne nie?), ale już mi się nie chce tej nocy debugować.
P.S.2 Pierwsze przykazanie: piłeś, nie pisz.
P.S.3 Umieściłem już beta 5 na githubie.
Tym razem dodałem też pełny instalator. Można sprawdzić czy działa.
Zmiany w tej wersji:
-Przypomniałem sobie, że trzeba dokompilować patch dla drukarki.
-Drobne poprawki w monitorze.
-Zwiększony bufor DirectSound, dzięki czemu w trybie NTSC działa płynnie nawet przy latency 2.