dla programu w CC65 trzeba dopisać jednak jeszcze po wywołaniu wait()
    asm(" lda #0");
    asm(" sta $13");
    asm(" sta $14");teraz wynik jest lepszy, 2455 FPS
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
ABBUC SWC 2025: wszystkie linki do gier Zebraliśmy wszystkie dostępne linki do gier z konkursu ABBUC Software Contest 2025! Zagraj i oceń.
RastaConverter Beta 20 RastaConverter, popularny konwerter grafiki dla Atari, otrzymał aktualizację Beta 20 z nowymi opcjami linii komend i poprawkami.
Test7800 0.7.2 Nowa wersja eksperymentalnego emulatora Atari 7800, Test7800, wprowadza poprawki w emulacji procesora 6502.
Rogul dla Atari STE, kolejne wieści Twórcy gry Rogul na Atari ST/STE udostępnili pierwszy film prezentujący działający gameplay na nowej platformie!
Wyniki konkursów ABBUC 2025 Znamy zwycięzców ABBUC Software i Hardware Contest 2025. Sprawdź, kto zgarnął nagrody i punkty!
atari.area forum » Posty przez tebe
dla programu w CC65 trzeba dopisać jednak jeszcze po wywołaniu wait()
    asm(" lda #0");
    asm(" sta $13");
    asm(" sta $14");teraz wynik jest lepszy, 2455 FPS
jest OK, okazuje sie że podałem wynik FPS odczytując bajty odwrotnie
przepisuje bajt $13 pod $600, bajt $14 pod $601 i podałem go w kolejnosci $14$13 zamiast $13$14, przez co wynik FPS "podskoczył"
prawidłowo odczytany wynik dla MADS-a to 1036 FPS, czyli ACTION tez jest wiarygodny :) wybaczcie pomyłkę
a na miejscu będzie przewodnik ? :)
ILR a ile masz PRIMES, bo nie mam jak sprawdzic ACTION
pozatym XXL otrzymal podobny wynik dla ASM, tak ze w asm zostało napisane toto podobnie
ja też staram się ułatwiać sobie życie, dlatego wprowadziłem do mads-a (jeszcze nie udostępniony) automatyczne generowanie kodu dla pętli WHILE, kod wynikowy ma długość 375b, fps 1036
/* Eratosthenes Sieve benchmark */
true    = 1
false    = 0
size    = 8190
sizepl    = 8191
flags    = $8000
    org $2000
;void wait(void)
;{
; unsigned char a=PEEK(tick);
; while (PEEK(tick)==a) { ; }
;}
.proc wait
    lda:cmp:req 20
    rts
.endp
main
;int main()
;{
;    unsigned int i, prime, k, count, iter;
    .var i, prime, k, count, iter .word
    
;    wait();
    wait
    mwa #0 $13
;    printf("10 iterations\n");
;    iter = 1;
    mwa #1 iter
;    while (iter <= 10) {
p0    .while .word iter <= #10    ;0
;        count = 0;
        mwa #0 count
;        i = 0;
        mwa #0 i
;        while (i <= size) {
p1        .while .word i <= #size        ;1
;            flags[i] = true;
            lda <flags
            clc
            adc i
            sta adr
            lda >flags
            adc i+1
            sta adr+1
            lda #true
            sta $ffff
        adr:    equ *-2
        
;            i++;
            inw i
;        }
        .endw
;        i = 0;
        mwa #0 i
        
;        while (i <= size) {
p2        .while .word i <= #size        ;2
;            if (flags[i]) {
            lda <flags
            clc
            adc i
            sta adr2
            lda >flags
            adc i+1
            sta adr2+1
            lda $ffff
        adr2:    equ *-2
            beq skip
;                prime = i + i + 3;
                lda i
                clc
                adc i
                sta prime
                lda i+1
                adc i+1
                sta prime+1
                lda prime
                clc
                adc #3
                sta prime
                scc
                inc prime+1                
                
;                k = i + prime;
                lda i
                clc
                adc prime
                sta k
                lda i+1
                adc prime+1
                sta k+1
;                while (k <= size) {
p3                .while .word k <= #size        ;3
;                    flags[k] = false;
                    lda <flags
                    clc
                    adc k
                    sta adr3
                    lda >flags
                    adc k+1
                    sta adr3+1
                    lda #false
                    sta $ffff
                adr3:    equ *-2
;                    k = k + prime;
                    lda k
                    clc
                    adc prime
                    sta k
                    lda k+1
                    adc prime+1
                    sta k+1
;                }
                .endw
;                count++;
                inw count
;            }
        skip:
;            i++;
            inw i
;        }
        .endw
;        iter++;
        inw iter
;    }
    .endw
    
;    printf("\n%d primes\n", count);
    
;    i=PEEK(tick)+PEEK(tack)*256;
;    printf("\n%d fps\n", i);
    
;    return 0;
;}
    mwa $13 $600
    mwa count $602
    mva #$80 712
    jmp *
    run mainadmini sprawdzają naszą spostrzegawczość, pewnie szykują coś większego ;)
niech zgadne, musisz wejsc do swojego profilu i zmienic jezyk na polski
zacznij składać swoją maszyne czasu mac...
nowa wersja cc65 generuje dłuższy kod i wolniejszy, aktualna długość kodu 3914b (wersja 2.11), poprzednio 3887b (wersja 2.10) , może biblioteki się rozrosły czy coś
w/w benchmark przyspieszy (dla 6502 wyjdzie wynik 2950 fps) jesli zadeklarujemy nasze zmienne jako "unsigned int" w w/w wersji jest bardziej obciążający CPU
Pasiu był tak miły i zapuścił ten benchmark na swojej dopałce, jak pisze ciut powyżej 14Mhz
6502:   554 fps
65816: 533 fps
magicznym zakleciem Laoo ;)
cc65 -O --cpu 65816 -t atari %1 -o %1.s
ca65 --cpu 65816 -t atari %1.s -o %1.o
ld65 -t atari -o %1.xex atari.o %1.o atari.lib
Fox jak zwykle masz racje
oto test który udowadnia że emulator jest szybszy od emulowanej maszyny
/* Eratosthenes Sieve benchmark */
#include <peekpoke.h>
#define true 1
#define false 0
#define size 8190
#define sizepl 8191
#define tick 0x14
#define tack 0x13
char flags[sizepl];
void wait(void)
{
 unsigned char a=PEEK(tick);
 while (PEEK(tick)==a) { ; }
}
int main()
{
    int i, prime, k, count, iter;    
    wait();
    POKE(tick,0x00);
    POKE(tack,0x00);
    printf("10 iterations\n");
    iter = 1;
    while (iter <= 10) {
        count = 0;
        i = 0;
        while (i <= size) {
            flags[i] = true;
            i++;
        }
        i = 0;
        while (i <= size) {
            if (flags[i]) {
                prime = i + i + 3;
                k = i + prime;
                while (k <= size) {
                    flags[k] = false;
                    k = k + prime;
                }
                count++;
            }
            i++;
        }
        iter++;
    }
    printf("\n%d primes\n", count);
    
    i=PEEK(tick)+PEEK(tack)*256;
    printf("\n%d fps\n", i);
    
    exit(0);
}wyniki w ramkach FPS
atari800win: 4012 fps
prawdziwe Atari z procesorem 65816
tryb 6502:  4015 fps
tryb 65816: 3857 fps
dopałka Pasia F7:
tryb 6502:   554 fps
tryb 65816: 533 fps
p.s.
przeprowadze jeszcze z ciekawości test z programem w asm bez optymalizowania szybkosci kodu z duza iloscia procedur itp. na razie się pisze
"Dobrze rozwinięta baza noclegowa (4,5 tys. Miejsc noclegowych), gęsta sieć różnych szlaków turystycznych sprawiają, że w okolicy Głuchołaz można naprawdę dobrze i aktywnie wypocząć. Ponadto lokalizacja pięciu przejść granicznych sprawia, że gmina jest ważnym, przygranicznym węzłem komunikacyjnym."
i jakże tam nie pojechać :)
nie musicie odpalać Unity Demo, w przykładach załączonych do G2F jest plik z tą grafiką Our5oft-3GfxMode_Atari_TeBe&Dracon.g2f (katalog Dracon)
to może miłośnicy dawnej elektroniki odtworzą sobie jeszcze Odre by móc wklepywać do niej programiki na papieprze perforowanym
Lampart ludzie lubią wygodę i starają ułatwiać sobie życie, od najwcześniejszych lat, tak jak kiedyś srałeś w gacie tak ktoś Ci pokazał kibel i papier toaletowy, polubiłeś to i korzystasz z tego, nie chciałbyś powrócić do czasów kiedy tego nie robiłeś ? :P
Vidol zauważył że na stronie Madteamu była wystawiona stara wersja Getris'a, nie wiem jak to sie stało, jakieś niedopatrzenie, ostatnia - poprawna wersja ma "żywe" a nie statyczne HighScore i poprawione błędy zauważone przez graczy
jeśli ściągaliście ze strony http://madteam.atari8.info to powinniście zrobić to jeszcze raz
na stronie Kaz-a i Vasca były właśnie podane linki do strony Madteamu, więc ktokolwiek ich użył nie zassał wersji finalnej, a u takiego Fandala jest OK, on to najwidoczniej ściągnąl z Atariage na swój serwer
aktualnie na madteam-ie leży prawidłowy plik GETRIS_OK.ZIP + bonus w postaci źródeł w formacie Mads-a, sorki za zamieszanie
na atariage juz jeden gość przeszedł całą grę jeśli wierzyć załączonemu przez niego screenowi
ok, a na jakie party jedziecie wogóle ludki ?
na 65816 mozna zrobic to szybciej jesli uzyjesz 16-bit rejestrow, tyle ze dotyczy to specyficznej kolejnosci wypelniania rejestrow kolorów
a może przełożycie to na nastepny rok, będzie więcej czasu aby przygotować cos od strony softwarowej jak i organizacyjnej, teraz sklecacie party jakby to była jakaś paląca sprawa, pewnie Was mocno suszy :)
bo nie po to Bill implementował multitasking w "okienkach" :)
ok Fox, ale po co Ci to, przecież Ty lubisz tylko dema pisać
to moze teraz ktos przetlumaczy na język polski oba wywiady, he ?
ja oddałem do Pewexu i naprawili :)
atari.area forum » Posty przez tebe
Wygenerowano w 0.088 sekund, wykonano 21 zapytań