PIC (Paint 256): Różnice pomiędzy wersjami

Z Atariki
Przejdź do nawigacji Przejdź do wyszukiwania
Seban (dyskusja | edycje)
+prosty "viewer" w TBXL dla tegoż formatu plików.
Seban (dyskusja | edycje)
+ viewver w Action!
Linia 31: Linia 31:
  34 RETURN  
  34 RETURN  
  35 DATA A90FCD0BD4D0FBA2C2AD6F028D0AD48D1BD049808D6F02CAD0EFAD0FD22904D0DF68606860
  35 DATA A90FCD0BD4D0FBA2C2AD6F028D0AD48D1BD049808D6F02CAD0EFAD0FD22904D0DF68606860
Wykorzystując inny język programowania, np. [[Action!]] wcale nie trzeba się uciekać od używania wstawek w kodzie maszynowym czy tez zewnętrznych procedur napisanych w [[Asembler|asemblerze]], poniższy program odczytuje z dyskietki plik "EXAMPLE.PIC" i pokazuje go ekranie:
INCLUDE "D:IO.ACT"
; Procedura wczytuje dany "pół-obraz" (dane o chrominancji lub luminancji) pod wskazany adres w pamięci
PROC READ(CARD ADR)
BYTE Y
FOR Y=0 TO 95
DO
  BGET(1,ADR,40)
  ADR==+80
OD
RETURN
; kod startuje od tego miejsca
PROC MAIN()
CARD SCR
BYTE WSYNC=$D40A,VCOUNT=$D40B,PRIOR=$D01B
CLOSE(1) OPEN(1,"D:EXAMPLE.PIC",4,0)
GRAPHICS(9)
SCR=PEEKC(88)    READ(SCR)
SCR=PEEKC(88)+40 READ(SCR)
CLOSE(1)
; poniższa procedura realizuje przełączanie co linię trybów GTIA (9/11)
DO       
  WHILE VCOUNT#$0F DO OD
  WHILE VCOUNT#112
  DO
    WSYNC=0
    PRIOR=$40 
    WSYNC=0
    PRIOR=$C0
  OD
OD


[[Kategoria:Atari 8-bit]]
[[Kategoria:Atari 8-bit]]
[[Kategoria:Formaty plików]]
[[Kategoria:Formaty plików]]

Wersja z 4 sie 2022, 15:57

Format pliku programu Paint 256 zawierającego obraz o rozdzielczości 80x96 bez interlace wykorzystujący efekt "PAL Blending".

Obraz zawiera surowe dane dwóch obrazów 80x96 pikseli w trybie Graphics 9 i Graphics 11 umieszczonych kolejno po sobie. Każdy obraz stanowi 96 linii po 40 bajtów, czyli 3840 bajtów ($0F00), a więc łącznie 7680 bajtów ($1E00).

Format pliku jest na tyle prosty że można go bez problemu obsłużyć z poziomu chociażby Turbo BASIC XL, posiłkując się jedynie prostą wstawką (w kodzie maszynowym) służącą do przełączania pomiędzy trybami Graphics 9/Graphics 11. Przykładowy program ładujący i pokazujący obrazek w tym formacie może wyglądać tak:

10 DIM F$(32):GOSUB 30
11 GRAPHICS 0:? 
12 INPUT "ENTER FILENAME ";F$
13 TRAP 25:OPEN #1,4,0,F$
14 GRAPHICS 9
15 SCR=DPEEK(88):GOSUB 20
16 SCR=DPEEK(88)+40:GOSUB 20
17 CLOSE #1
18 X=USR(1536):POKE 764,255
19 GOTO 11
20 ------------------------------
21 FOR I=0 TO 95
22   BGET #1,SCR,40:SCR=SCR+80
23 NEXT I
24 RETURN 
25 ------------------------------
26 GRAPHICS 0:? 
27 ? "Error #";ERR;" at line #";ERL
28 END 
29 ------------------------------
30 DIM A$(128):RESTORE 35:READ A$
31 FOR I=0 TO $24
32   POKE $0600+I,DEC(A$(I*2+1,I*2+2))
33 NEXT I
34 RETURN 
35 DATA A90FCD0BD4D0FBA2C2AD6F028D0AD48D1BD049808D6F02CAD0EFAD0FD22904D0DF68606860

Wykorzystując inny język programowania, np. Action! wcale nie trzeba się uciekać od używania wstawek w kodzie maszynowym czy tez zewnętrznych procedur napisanych w asemblerze, poniższy program odczytuje z dyskietki plik "EXAMPLE.PIC" i pokazuje go ekranie:

INCLUDE "D:IO.ACT"

; Procedura wczytuje dany "pół-obraz" (dane o chrominancji lub luminancji) pod wskazany adres w pamięci

PROC READ(CARD ADR)
BYTE Y

FOR Y=0 TO 95
DO
 BGET(1,ADR,40)
 ADR==+80
OD 

RETURN

; kod startuje od tego miejsca

PROC MAIN()
CARD SCR
BYTE WSYNC=$D40A,VCOUNT=$D40B,PRIOR=$D01B

CLOSE(1) OPEN(1,"D:EXAMPLE.PIC",4,0)

GRAPHICS(9)

SCR=PEEKC(88)    READ(SCR)
SCR=PEEKC(88)+40 READ(SCR)

CLOSE(1)

; poniższa procedura realizuje przełączanie co linię trybów GTIA (9/11)
DO         
 WHILE VCOUNT#$0F DO OD

 WHILE VCOUNT#112
 DO
   WSYNC=0
   PRIOR=$40   
   WSYNC=0 
   PRIOR=$C0
 OD
OD