426

(2 odpowiedzi, napisanych Sprawy atari.area)

Dzieki, mialem zaznaczona korekte czasu letniego;)

427

(2 odpowiedzi, napisanych Sprawy atari.area)

Wydaje mi sie, ze godzina publikacji postu jest przesunieta o godzine.
Tzn gdy faktycznie post byl dodawany o 11:00 to wypisane zostanie 12:00.

Tez tak macie? Czy moja maszyna czasu wreszcie zaczela dzialac? ;)

428

(132 odpowiedzi, napisanych Software, Gry - 16/32bit)

Jacques napisał/a:

Sam design A1000 także nie uprawnia szalonej tezy o konsoli ;)

Patrz na http://en.wikipedia.org/wiki/Jay_Miner
"There, they started to create a new Motorola 68000-based games console, codenamed Lorraine, that could be upgraded to a computer"

Taki byl zamysl Miner'a, ktory dopiero pozniej wyewoluowal w kierunku A1000. A1000 to tak na prawde Lorraine w obudowie desktop z dolaczona klawiatura.


Edit: Cyprian chyba pisalismy posty jednoczesnie;)

429

(3 odpowiedzi, napisanych Programowanie - 8 bit)

Dzieki Fox,
Faktycznie zapomnialem o starszym bajcie... a gdy kod byl krotki to wszystko dzialalo w sumie przypadkiem;) Sprawdze Twoje patch'e wieczorem.
One question: gdybys mial updatowac HSCROL w takim przypadku jak moj to gdzie to lepiej robic? tzn czekajac na ramke tak jak teraz czy lepiej probowac jest podpiac w DLI w jakiejs linii nizej?

430

(3 odpowiedzi, napisanych Programowanie - 8 bit)

Napisalem sobie prostego scrolla. Polaczenie coarse i fine scrollingu... Dziala, ale nie do konca plynnie wiec chcialem wrzucic aktualizacje HSCROL do DLI w jakas dolna linie albo przynajmniej czekac na ramke przed aktualizacje tej wartosci. Jest plynniej, ale jest jakas sciema ze smieciami ktore mi sie w pewnym momencie pokazuja na ekranie... Efekt wystepuje wtedy gdy w kodzie odkomentuje procedure czekania na ramke - nawet bez jej wywolania.

Kod:

        org $4000   

        lda #0
        sta 559
    
        ldx <antic     
        ldy >antic     
        stx 560        
        sty 561   

        lda #%00100010
        sta 559      
      
        ; color setup
        ; text
        lda #$38
        sta COLOR1_SH
        lda #$38
        sta COLOR2_SH

COLOR1_SH equ $02C4
COLOR2_SH equ $02C5
INIT_LINE_PTR equ $00
HSCROL equ $D404
FS_COUNT equ $A000
CS_COUNT equ $A001

        lda LINE_PTR
        sta INIT_LINE_PTR
        
        lda #8
        sta FS_COUNT
        ;jsr frameWait
        sta HSCROL
        
scrollInit
        lda #100
        sta CS_COUNT

scrollCoarse
        jmp scrollFine
scrollFineRet
        
        ldy LINE_PTR
        iny
        sty LINE_PTR

        ldx CS_COUNT
        dex
        stx CS_COUNT

        beq endOfText
        jmp scrollCoarse

endOfText
        lda INIT_LINE_PTR
        sta LINE_PTR
        jmp scrollInit
    
scrollFine
    
        ldx FS_COUNT
        dex
        stx FS_COUNT
        ;jsr frameWait
        stx HSCROL

        jsr delay

        cpx #0
        bne scrollFine

        ldx #8
        stx FS_COUNT    
        ;jsr frameWait
        stx HSCROL
    
        jmp scrollFineRet
    
delay
        pha
        txa
        pha
        tya
        pha
        
        ldx #$0F
        ldy #$FF

xLoop        
yLoop        
        dey
        beq yOut 
        jmp yLoop
        
yOut    dex
        beq xOut
        jmp xLoop
    
xOut    
        pla
        tay
        pla
        tax
        pla

        rts

;frameWait
;      lda 20   
;      cmp 20
;      beq *-2
;      rts
        
antic dta b($70,$70,$70)
      dta b($00)
      dta b($06,$06,$06)
      LINE_PTR equ *+1  
      dta b($56),a(scrollText)
      dta b($46),a(emptyText)
      dta b($06,$06,$06)
      dta b($41),a(antic)  

scrollText dta d'                                          OTO MOJ SUPER SCROLL TEST 123 HALLO ATARI 123456789 !!!!!!'
emptyText dta d'                                                                                          '

Odomentujcie sobie procedurke frameWait. (wszystkie jej wywolania sa zakomentowane). Wtedy po jednym kolku linii scrolla na ekran wpadna smieci.
Any idea? Pewnie to jakis banal, ale jakos nie moge na to wpasc...

No to teraz juz chyba wiem wszystko. Dzieki bardzo za obszerne odpowiedzi. Dokoncze ta plazme uzywajac dwubuforowania tak czy inaczej w tej rozdzielczosci by zobaczyc jak to dziala. I sie czegos nauczyc przy okazji.
PrObe, bede potrzebowal chwili by przetrawic Twoje kody. Jesli czegos w nich nie skumam, albo znowu na czyms utkne to bede Was tu dalej meczyc;)

Robilem podejscie do efektu plasmy i o ile udalo mi sie uzyskac statyczny (bez animacji od funkcji czasu) efekt "plasmopodobny" to zorientowalem sie ze sama moja procedura rysowania punktow na ekranie jest bardzo niewydajna.
Jakie byly moje zalozenia:
- uzylem trybu z 16 odcieniami jednego koloru
- sinus etc mam ztablicowane
- mam wskaznik 16bitowy na aktualnie przetwarzany bajt pamieci ekranu
- zwiekszam kolejno wskaznik i dla odpowieniego X,Y obliczam sobie odcien i aktualizuje pamiec

Tak jak napisalem statyczny obraz mam cool, ale proba animowania tego konczy sie starsznym mruganiem ekranu w roznych jego czesciach. Wyrzucilem wiec dla testow samo obliczanie odcienia (zmieniam 2 kolory naprzemiennie) by przetestowac predkosc samego rysowania. No i dla 80pixeli w 80 liniach obraz strasznie mruga (no ale nie caly obraz na raz, tylko w srodku w rozsynchronizowany sposob). Moje pierwsze podejrzenie padlo na to ze w srodku rysowania sceny (pelne 80linii jednym z dwu naprzemiennie zmienianych kolorow) konczy sie ramka i musze to jakos synchronizowac.
Dla testow dodalem tez w ostatniej linii przewanie DLI z petla nieskonczona by sprawdzic ile jestem w stanie wyrenderwac w jednej ramce - no i okazuje sie to jest na oko nie wiecej niz kilkanascie linii obrazu w tej rozdzielczosci.

No i zastanawiam sie co moge zrobicby usyskac plynnosc.
- czy macie pomysl jak samo rysowanie takiej ilosci pixeli zrobic duzo wydajniej?
- jak zadbac o plynnosc gdy procedura rysowania nie miesci sie w jedej ramce? tzn niech zmiany "animacyjne" beda wolniejsze ale obraz nie mrugal etc

Wrzucam moj przykladowy kod testowy:

      org $8000   

      lda #0
      sta 559
    
      ldx <antic     
      ldy >antic     
      stx 560        
      sty 561   
      
      ;gtia
      lda #%01000000
      sta 623
 
      lda <dli
      sta $200
      lda >dli
      sta $201
      
      ; dli config
      lda #$c0      
      ; ODKOMENTUJ BY SPRAWDZIC ILE WYRYSUJEMY W JEDNEJ RAMCE      
      ;sta $d40e 
  
      ;antic
      lda #%00100010
      sta 559      

; poczatek pamieci ekranu      
GFX_MEM=$9000
; adres gdzie trzymam 16bit pointer na aktualnie rysowany punkt ekranu
GFX_PTR=$32
; pozycje X,Y uzywane docelowo do obliczenia koloru etc
POS_X=$8000 ; pozycja x
POS_Y=$8001 ; pozycja y
COLOR=$8002 ; odcien 2 pixeli (4bit+4bit)
      
init 
      ; powiedzmy ze najpierw rysujemy na bialo
      lda #%11111111
      sta COLOR

rysObrazuLoop

      ; ustawiamy pointer na poczatek pamieci obrazu
      ldx <GFX_MEM     
      ldy >GFX_MEM     
      stx GFX_PTR        
      sty GFX_PTR+1
      ; zerujemy zapamietane pozycje x/y
      ldy #0
      ldx #0
      stx POS_X
      stx POS_Y
  
      ;czekamy na ramke
      lda 20   
      cmp 20
      beq *-2 
  
rysPixeliLoop  
     lda COLOR

     ; y=0 - po prostu 16bit pointer, ktory jest przesuwany, i tylko dlatego ten tryb aderesowania
     ; trace na tym pewnie 1 czy 2 cykli, ale to chyba nie powinno byc kluczowe
     sta (GFX_PTR),y
         
     ; przesuwamy pointer na aktualnie wypelniany bajt pamieci obrazu
     lda GFX_PTR
     clc
     adc #1
     sta GFX_PTR     
     bcc noCC
     ; jesli mniej znaczacy bajt sie "przekrecil" to zmiekszamy bardziej znaczacy
     lda GFX_PTR+1
     clc
     adc #1
     sta GFX_PTR+1
noCC
     ; aktualizyjemy zapisana pozycje X (2 razy bo aktualizujemy 2 pixele na raz)
     ldx POS_X
     inx
     inx
     stx POS_X
     
     ; 80 pkt w linii
     cpx #80
     bcc rysPixeliLoop
     
     ; to byl koniec linii wiec zerujemy pozycje X
     ldx #0
     stx POS_X
     
     ;ilosc linii
     ldx POS_Y
     inx
     stx POS_Y     
     cpx #80
     bcc rysPixeliLoop     
     
     ; ostatnia linia czyli zmieniamy kolor obu pixeli w bajcie
     ; odcien zmieniamy naprzemiennie by bylo widac, jak wolno generuje sie obraz
     lda COLOR
     cmp #%00110011
     beq cl1
     lda #%00110011
     jmp stCl
cl1     lda #%11111111
stCl sta COLOR

     ; rysujemy od nowa z nowym kolorem
     jmp rysObrazuLoop     
    
; DLI IMPL - inf loop aby zobaczyc ile jestem w stanie narysowac w jednej ramce
dli    
        jmp dli
    
antic dta b($70,$70,$70)
      dta b($00),b($4f),a($9000),b($f,$f,$f,$f,$f,$f,$f,$f,$f)
      dta b($f,$f,$f,$f,$f,$f,$f,$f,$f,$f)
      dta b($f,$f,$f,$f,$f,$f,$f,$f,$f,$f)
      dta b($f,$f,$f,$f,$f,$f,$f,$f,$f,$f)
      dta b($f,$f,$f,$f,$f,$f,$f,$f,$f,$f)
      
      dta b($f,$f,$f,$f,$f,$f,$f,$f,$f,$f)
      dta b($f,$f,$f,$f,$f,$f,$f,$f,$f,$f)    
      dta b($f,$f,$f,$f,$f,$f,$f,$f,$f,$f) 
      dta b($f,$f,$f,$f,$f,$f,$f,$f,$f,$f+$80)     
      
      dta b($41),a(antic)  

Macie jakies hint'y ??? W sumie to interesuja mnie 2 problemy niezaleznie czyli kwestia szybkiego rysowania i synchornizacji i niemrugania podczas rysowania czegos co zajmuje kilka ramek. Oraz druga sprawa dotyczaca samej plazmy czy taki sposob ma szanse powodzenia czy zabieram sie za to od .... strony;)

433

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

Moja lista to (kolejnosc przypadkowa):

- Boulder Bash
- Mr Robot
- Montezuma's Revenge
- Ninja
- International Karate
- Pitfall II
- Zorro
- Bruce Lee
- River Raid
- Draconus

Super jest to ze widze pozycje na Waszych listach, w ktore nigdy nie gralem. Chyba musze nadrobic zaleglosci;)

434

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

No wreszcie mialem troche czasu aby wrocic do tematu... no i:
- podlaczylem prowizorycznie do TV uzywajac wyjscia monitorowego (uzylem sygnalu CV i podpiolem pod wejscie AV)... i jest OK. Obraz nie skacze, dzwiek nie ma tych dziwnych efektow o ktorych pisalem. Czyli pewnie walniety jest modulator. Ale spoko... kupie tylko wtyk 5pin do wyjscia monitorowego i taki sposob podlaczenia mnie satysfakcjonuje.
- rozebralem klawiature i faktycznie okolice klawiszy funkcyjnych wymagaly przeczyszczenia. teraz juz dzialaja. moglem sprawdzic dzieki temu self-test, ktory przeszedl pomyslnie.
- pozostaje jeszcze efekt "zwisow" klawiatury co jakis czas... na razie nie znalazlem na to rozwiazania. pewnie jakis niekontakt gdzies. ostatnio pojawia sie rzadziej wiec (odpukac) nie jest zle.

Dzieki wiec za pomoc. Wyglada na to ze 65XE powoli wraca do zycia;)

435

(13 odpowiedzi, napisanych Programowanie - 8 bit)

Spoko, pseudolosowosc czy nawet przewidywalnosc zupelnie mi wystarczy;) Chce tylko wylosowac punkty na ekranie...

@mono: faktycznie tak to dziala

436

(13 odpowiedzi, napisanych Programowanie - 8 bit)

xan napisał/a:

Peeknij sobie 53770

dzieki:)

437

(13 odpowiedzi, napisanych Programowanie - 8 bit)

maciekm napisał/a:

Hej,
W jaki sposob moge w asm wygenerowac powiedzmy 100 losowych koordynat punktow na ekranie?
Google twierdzi ze POKEY umie generowac liczby losowe, ale nigdzie nie znalazlem jakiegos konkretniejszego opisu.
Czy moglbym prosic o jakies hint'y, linki etc?

Ups nie ta kategoria, spie jeszcze. Poprosze o przeniesienie do "Programowanie 8-bit"

438

(13 odpowiedzi, napisanych Programowanie - 8 bit)

Hej,
W jaki sposob moge w asm wygenerowac powiedzmy 100 losowych koordynat punktow na ekranie?
Google twierdzi ze POKEY umie generowac liczby losowe, ale nigdzie nie znalazlem jakiegos konkretniejszego opisu.
Czy moglbym prosic o jakies hint'y, linki etc?

439

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

jer napisał/a:

Najpierw sprawdź zasilacz, czy daje odpowiednie napięcie. Powinien dawać 5V.

W basicu w jednej linii komend można wpisać max 3 linijki tekstu. Pod koniec trzeciej linijki słychać dzwonek i trzeba nacisnąć RETURN, aby linię zaakceptować.

Ponieważ są kłopoty z uruchomieniem testów - podejrzana jest folia klawiatury lub GTIA. Spróbuj wpisać taki programik w Basicu:

10 POKE 53279,8
20 PRINT PEEK(53279)
30 GOTO 20
RUN

Po wpisaniu każdej linijki naciskaj klawisz RETURN. Komenda w ostatniej linijce uruchomi program wyświetlający  kolumnę liczb 7. Naciskanie klawiszy START, SELECT i OPTION będzie zmieniać wartości tej liczby. Naciskaj klawisze pojedynczo, parami w różnych kombinacjach, a w końcu wszystkie razem. Dla każdego naciśnięcia powinna się pojawić inna wartość liczby odpowiadająca tej kombinacji: OPTION=3, SELECT=5, START=6, OPTION + SELECT=1, OPTION+START=2, SELECT+START=4, OPTION+SELECT+START=0 . Jeśli nie - podejrzana jest folia klawiatury, a dokładnie ścieżka masy, która się utleniła w ciągu tych 20 lat. MOże też być uszkodzona/brudna końcówka folii włożona w złącze klawiatury.

Czesc,
Dzieki Jer za odpowiedz oraz pomoc. A wiec tak:
- napiecie ktore daje zasilacz jest 5V czyli OK

- miales nosa co do tego programiku testowego, gdyz faktycznie wg niego START nie dziala. OPTION i SELECT jest OK. Sproboje moze dzisiaj rozebrac komputer i zobaczyc czy moze nic mi sie nie rzuci w oczy odnoscnie tego przycisku. Moze uda mi sie znalezc niekontakt czy cos takiego...

- co do tych zwiech podczas ktorych klawiatura nie dziala to trwaly nawet kilkanacie sekund... ale wczoraj sie to nie pojawilo wiec moze to bylo chwilowe. zobaczymy

- pozostaje jeszcze problem obrazu i dzwieku... czyli tych cyklicznych blysniec na ekranie i pukniec w dzwieku... wyglada to tak jakby TV nie dostrojony - ale bardziej juz go dostroic nie moge. Jakis hint? (podlaczam do plasmy przez gniazdo antenowe)

Dzieki raz jeszcze. Powalcze dzisiaj w tym temacie.
Maciek

440

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

Witam,
Po okolo 20latch przerwy;) wszedlem w posiadanie 65xe. Niestety mam obawy, ze nie jest do konca sprawe. Mozliwe jednak ze robie cos nie tak... i chcialem sie skonsultowac.

1) Po wlaczeniu mam piekne READY i moge pisac (BASIC dziala) jednak co jakis czas komputerek jakby zwisal i wpisywanie jakichkolwiek znakow nie powoduje pojawiania sie ich na ekranie. Podczas takiej zwiechy dziala tylko backspace. Po jakims czasie (czasem samoczynnie, czasem ponowne wlaczenie) wpisywanie znakow ponownie jest mozliwe.

2) Podlaczylem Atari do telewizora, ale mam pewne problemy z obrazem i dzwiekiem. Tzn oba sa ale srednie z 2 razy na sekunde na ekranie pojawie sie w jakims miejscu jakby blysniecie (przez cala szerokosc obrazu i czesc jego wysokoci) i zachwnianie. W tym samych czasie slychac taki dzwiek stukuniecia (dzwieki pisania w basicu sa oprocz tego poprawne)

3) self-test - wchodze trzymajac option przy wlaczeniu. moze zmieniac test select'em, ale nie moge juz ich uruchomic. nacisniecie start nie daje efektu (moze po prostu brak styku w klawiaturze, a moze cos padlo?)

Macie moze pomysl co moze byc powodem i czy da sie to latwo naprawic? Jesli uszkodzenie jest powazne to bede zmuszony reklamowac moja nowa atarynke:/ No chyba ze po prostu czegos nie pamietam po 20 latach i robie nie tak;)

pzdr,
Maciek

PS. Nie mam jeszcze mozliwosc zaladowania softu by sprawdzic inne rzeczy