drac030 napisał/a:ja napisałem w asemblerze silnik 6502 sześć razy szybszy od analogicznego kodu generowanego przez gcc
Głupie pytanie, ale muszę je zadać: czy zastosowałeś opcję "-O2" w gcc? W przypadku nowoczesnych procesorów i kompilatorów, dobrze napisany kod w C jest zwykle max. kilkadziesiąt procent wolniejszy od genialnego kodu w asemblerze. Więc zupełnie nie ma sensu pisanie w asemblerze, tym bardziej, że trzeba by optymalizować pod konkretny model (w C wystarczy zmienić opcję kompilatora). Własnoręcznie wyciąłem ostatnie resztki asma x86 z emulacji GTIA, bo na oko było widać, że gcc 2.95 generuje wydajniejszy kod.
Emulację POKEYa w Atari800 można pewnie przyspieszyć z 50 razy, a resztę emulacji (czyli głównie Antic/GTIA oraz 6502) może dwukrotnie. Oczywiście wszystko cały czas w C. Wszystko jest opisane w pliku TODO ze źródłami Atari800.
Na marginesie: optymalizator cc65 wcale nie jest taki zły. Kiedyś przyglądałem mu się i zgłosiłem trochę poprawek.
nosty napisał/a:emulator C64 smiga mi >100% a Atari ST ~80-90% oryginalu
Jest niemal pewne, że oba te emulatory automatycznie gubią klatki
(czyli zmniejszają refresh). Jest to w TODO Atari800. :)
W przypadku mniej wydajnych urządzeń (szczególnie pocketów) problemem jest woolny dostęp do ekranu i żadne sztuczki z asemblerem nic tu nie pomogą.
https://www.youtube.com/watch?v=jofNR_WkoCE