776

(53 odpowiedzi, napisanych Bałagan)

Loki::SmartPtr jest trochę zbyt przerośnięty (Alexandrescu przesadził ze strategiamie (policies); w Singletonie to jest przydatne, ale wskaźnik jest zbyt kompaktowy, żeby go aż tak konfigurować). Boostowe są bardzo dobre (zresztą boost to niezbędnik każdego C++sowca :)). Ich specyfikacja przeszła do std::tr1 i np visual C++ 10 ma już ich rewelacyjne implementacje (przesiedliśmy się ostatnio w pracy na nowego visuala, robiłem testy i wyszły nadspodziewanie dobrze).

777

(53 odpowiedzi, napisanych Bałagan)

D:
Nie odważyłbym rozpoczynać dużego projektu w tym języku. Jest zbyt młody i zbyt mało powszechny (tylko trzy implementacje). Póki co wśród niezarządzanych języków nie widzę alternatywy do C++.

GC:
To półśrodek. Zarządza tylko pamięcią ignorując inne zasoby, o które trzeba dbać innymi mniej lub bardziej prymitywnymi metodami. Biblioteka standardowa C++ udostępnia zaś cały arsenał sprytnych wskaźników, które wystarczy tylko stosować, aby zapomnieć o wyciekach wszelkich zasobów.

778

(53 odpowiedzi, napisanych Bałagan)

Pierwsze kompilatory C++ kompilowały się do C. Składnia Objective-C też jest tylko lukrem. Ale nie o to chodzi. Obiektowo możesz programować i w asemblerze co wielokrotnie udowadniano. Najistotniejszą cechą języków wspomagających obiektowość jest wbudowanie pojęcia obiektu w strukturę języka, co pozwala na wczesne wykrywanie błędów.
W sprawie GC osobiście uważam, że błędem jest zabranie programiście władzy nad żywotnością jego obiektów i wbudowanie szemranych, niedeterministycznych mechanizmów w sam język. Wg mnie wzorcem w tej mierze jest C++, w którym zasobami można zarządzać jak komu się żywnie podoba od ręcznego wołania delete, poprzez automatykę bazującą na RAII, aż po GC implementowane bibliotecznie.

779

(53 odpowiedzi, napisanych Bałagan)

No to i ja dorzucę swoje trzy grosze.

Programy pisze się dla ludzi. Maszynie jest wszystko jedno. To człowiek musi rozumieć program, aby móc go zmienić, gdy przestanie spełniać oczekiwania.

BASIC jakiego znamy z 8-bitowców jest językiem niestrukturalnym. Jest idealny do pierwszych kroków, ale nie wymusza, ani nawet  nie wspomaga struktury, przez co rozumienie programu jest bardzo trudne i modyfikowanie kosztowne. Nie mamy ani klarownego przypływu sterowania ani porządku w danych.

Języki strukturalne wspomagają strukturę wymuszając jasny przepływ sterowania, ale niestety o dane dbają tak samo, jak BASIC o sterowanie, czyli wcale. Większość energii zespołu jest pochłaniana na ręczne zarządzanie zasobami, ostrożną komunikację pomiędzy modułami i szukanie błędów kto komu nadepnął na stopę, a kto o czym zapomniał.

Języki obiektowe zaś chronią dane i w poprawnym projekcie to kompilator powie ci, że czegoś ci nie wolno (bo dobierasz się do cudzego obiektu i nie za bardzo wiesz jak, bo kolega nie napisał dokumentacji) i to kompilator automatycznie zwolni zasób, gdy nie jest ci już potrzebny. To nie moda. To odciążenie.

Języki deklaratywne są najbardziej wyrafinowane, bo w nich określamy tylko co mamy osiągnąć, a już sama maszyna dba o to, aby nam to dostarczyć, dlatego są najczęściej destynowane do specyficznych zastosowań (jak SQL czy HTML).

Inne paradygmaty jak języki funkcyjne czy logiczne (Prolog nie jest funkcyjny) mają wąskie zastosowania w rozwiązywaniu nietuzinkowych problemów wyuzdanymi algorytmami. Zastosowań mają mało, ale w tym, co robią, są diabelnie dobre.

Gdybyśmy wszyscy byli supermenami, to nie musiałoby powstać nic wyższego niż asembler. Człowiek jednak jest ułomny, a programy nieuchronnie błędne i musimy sobie pomagać, jak tylko potrafimy automatyzując co tylko się da, tak, aby jak najbardziej skupiać się na istocie problemu, a nie na technikaliach jego implementacji.

780

(220 odpowiedzi, napisanych Sprzęt - 8bit)

Nie wiem, czy PW działa, bo pisałem już do Konopa, ale nie odpisał, no to piszę tu.
Otóż mam wstępną emulację weroniki. Prymitywne testy napisane przeze mnie działają. Prosiłbym o jakieś inne.

781

(32 odpowiedzi, napisanych Bałagan)

Jacques: Ja nie ryzykowałem i nie podpinałem swojego głównego konta. Podpiąłem specjalnie założony do tego drugi rachunek, na którym jest tylko tyle kasy ile trzeba.

782

(220 odpowiedzi, napisanych Sprzęt - 8bit)

Ktoś zainteresowany emulacją Weroniki w Atari++ 1.51?
Jestem w stanie zaemulować 65c816 z prędkością 0 - około 32 MHz. Do 16 MB RAM.

783

(220 odpowiedzi, napisanych Sprzęt - 8bit)

Kilki rzeczy nie rozumiem...

Z tym przełączaniem banków jest tak jakie były pierwotne założenia? Przełączany obszar ($8000-$BFFF od strony atari) jest zdublowany i jeśli  RAMBANK_CFG == 0 to atari widzi wersję A, a kartridż wersję B, a w przeciwnym razie odwrotnie?
Jak działa te wstrzymanie procesora po włączeniu zasilania? Linia HALT? I po resecie jest zwalniana i już nigdy wstrzymywanie nie występuje aż do wyłączenia zasilania?
A jak działa RESET? Trzeba ustawić VER_CPU_RESET_PULSE_HIGH, po czym VER_CPU_RESET_PULSE_LOW i w tedy procesor startuje?

784

(26 odpowiedzi, napisanych Bałagan)

Kurna. Pomysł w dechę!

785

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

Ja też! Ja też!

786

(100 odpowiedzi, napisanych Fabryka - 8bit)

Ale trzeba zachować umiar. Co prawda można przeznaczyć całą pamięć na kombinacje kształtów, ale za wiele to jej jednak nie ma.

787

(100 odpowiedzi, napisanych Fabryka - 8bit)

Pecus ma dobrą myśl z tymi sprajtami. Asteroidy faktycznie się nie obracają, co bardzo upraszcza sprawę! Można pójść nawet odrobinę dalej: mieć zoptymalizowany kod na rysowanie każdego asteroida: sekwencja LDA # ORA (),y STA (),y + przesunięcia wskaźnika oraz zoptymalizowany kod na... mazanie danego asteroida. Statek można rysować klasycznie albo też mieć kilka zanimowanych klatek. To ma szanse na wyrobienie się w ramce-dwóch.

No i jak już mówimy o dopałkach, to wersja VBXE może mieć w swojej pamięć prerenderowane wszystkie elementy gry i w-OR-owywać je blitterem - wtedy na 100% zmieści się w jednej ramce. Mało tego - aby lepiej odwzorować oryginał o "nieskończenie wielkiej" rozdzielczości można użyć trybu 640x200 albo nawet 640x400 jak ktoś lubi migotanie :)

Można też pokusić się o wersję na 65c816, w której zoptymalizowana sekwencja rysująca może korzystać z fajnych szybkich trybów adresowania.

Potencjał jest całkiem spory.

788

(8 odpowiedzi, napisanych Bałagan)

Jak cart jest zafoliowany, to skąd wiesz, że to nie fałszywka? Przecież nie odpalisz ;)

789

(49 odpowiedzi, napisanych Programowanie - 8 bit)

A skąd akurat 15? ANTIC potrafi haltować CPU na o wieeele dłużej (np. w pierwszej linii wiersza tekstowego na całą jego szerokość).

790

(108 odpowiedzi, napisanych Programowanie - 8 bit)

Kodu nie puściłem, bo żeby w ogóle uruchomić FAILa pod Visual C++ musiałem go istotnie zmodyfikować - visual nie lubi dużych tablic na stosie (co imho nie jest dobrą praktyką), używanie dynamiczniej pamięci rozwiązałoby problem. W rezultacie po moich zmianach wyszedł kod nie nadający się do publikacji. Problem zresztą nie istnieje, bo plugina i tak pewnie nikt nie używa i nie miałem motywacji zrobienia tego ładniej  ;)

Problemy wydajnościowe w .NET mam przez pochopne decyzje projektowe - liczniki POKEYa emuluję zbyt dosłownie. Nie jest to coś, czego nie da się zoptymalizować, więc nie twierdzę, że nie da się zrobić szybkiego emulatora atari w .NET.

791

(108 odpowiedzi, napisanych Programowanie - 8 bit)

No to właśnie mam zaczętego w SilverLight (stopień zaawansowania jest taki, że uruchamia się na nim SELF TEST), tylko że jest strasznie wolny i wymaga przeprojektowania kilku rzeczy, bo byłem zbyt optymistyczny co do jego wydajności ;)

792

(108 odpowiedzi, napisanych Programowanie - 8 bit)

Straciłem zapał i zrobiłem sobie przerwę (oczywiście żeby wrócić z nowymi siłami ;) ). Zresztą Altirra jest za dobra, żeby robić inne emulatory. W kwestii VBXE też (dlatego nie bedę już rozwijał patcha Atari++). Jak coś będę kontynuował, to emulator w Silverlight, żeby mieć emulację w przeglądarce. Już coś nawet mi działa, mam tylko problemy z wydajnością (.NET).

793

(108 odpowiedzi, napisanych Programowanie - 8 bit)

No i tak to już jest. Napisałem VBXE. Zaimplementowałem interlace Rybagsa. I paczkę ściągnęło przez pół roku tylko 30 osób...

794

(219 odpowiedzi, napisanych Zloty)

A ja daleko, ale brzmi interesująco. Może przekonam połowicę na zlot pod pozorem zwiedzania Krakowa ;)

795

(49 odpowiedzi, napisanych Programowanie - 8 bit)

Ja niczego o takim dogadaniu nie wiem. Pasiu raczej nie ma czasu, bo nawet trudno się z nim skontaktować i pewnie ochota na inwestowanie w to energii też mu odeszła. Miast czekać proponuję szukać innego rozwiązania.

796

(49 odpowiedzi, napisanych Programowanie - 8 bit)

Dałem mu Amigę 1200 za to ;)

797

(49 odpowiedzi, napisanych Programowanie - 8 bit)

tebe napisał/a:

czyli kluczem do sprawy Warp7 jest Laoo, bo dokumentacja jest tylko do Warp4

A ja nie wiem  jakiego WARPa mam. Chyba formalnie WARP4 "ustawiony" na 7 MHz (ze zworką na 14). Kiedyś chodził na 4 MHz (stąd nazwa) ale Pasiu mi coś podrasował i teraz chodzi na 7/14 MHz.

798

(49 odpowiedzi, napisanych Programowanie - 8 bit)

Mam wersję WARP7 stabilnie działającą na 7 MHz (na 14 MHz uruchomić się da, ale np kod w wysokiej pamięci już nie pójdzie). Mogę komuś dać do reverse-engineeringu jakby ów ktoś był zainteresowany.

Wg mnie w stronę 65c816 z liniową pamięcią trzeba pójść. Najlepiej z możliwością wyboru, w którym banku ma być pamięć atari do odczytu i do zapisu osobno (domyślnie $00/$00). Ale ja tam się nie znam...

799

(3 odpowiedzi, napisanych Programowanie - 8 bit)

W atari odmierzać dokładny czas jest bardzo trudno, bo cykle procesora są bezustannie wywłaszczane przez pokaźną liczbę przeszkadzajek, więc liczenie cykli daje różne rezultaty w różnych warunkach. Proponowałbym dwa rozwiązania:
1) rejestr VCOUNT, który w systemie PAL co ramkę (1/50s) liczy od 0 do 155.
2) przerwania POKEYa. Jeśli się nie mylę, to jak to ma być opóźnienie, to nawet nie trzeba używać przerwań: można je wyłączyć przez SEI i pollować rejestr IRQST czekając na skasowanie bitu odpowiadającego danemu przerwaniu.

800

(6 odpowiedzi, napisanych Sprzęt - 8bit)

Kurde. Nie wiedziałem że XEP80 ma taki superowy czip w środku