Image noise: Difference between revisions
Content added Content deleted
Puppydrum64 (talk | contribs) m (→{{header|Z80 Assembly}}: typo fix and clarification) |
(Added solution for Action!) |
||
Line 41: | Line 41: | ||
inx ;next X |
inx ;next X |
||
jmp Snow ;loop forever</lang> |
jmp Snow ;loop forever</lang> |
||
=={{header|Action!}}== |
|||
{{libheader|Action! Tool Kit}} |
|||
<lang Action!>INCLUDE "D2:REAL.ACT" ;from the Action! Tool Kit |
|||
DEFINE TEXT_SIZE="40" |
|||
BYTE ARRAY text(TEXT_SIZE) |
|||
CARD FUNC GetFrame() |
|||
BYTE RTCLOK1=$13,RTCLOK2=$14 |
|||
CARD res |
|||
BYTE lsb=res,msb=res+1 |
|||
lsb=RTCLOK2 |
|||
msb=RTCLOK1 |
|||
RETURN (res) |
|||
PROC CalcFPS(CARD frames REAL POINTER fps) |
|||
BYTE PALNTSC=$D014 |
|||
REAL ms,r1000 |
|||
IF PALNTSC=15 THEN |
|||
frames==*60 |
|||
ELSE |
|||
frames==*50 |
|||
FI |
|||
IntToReal(1000,r1000) |
|||
IntToReal(frames,ms) |
|||
RealDiv(r1000,ms,fps) |
|||
RETURN |
|||
PROC FillNoise() |
|||
BYTE POINTER ptr |
|||
BYTE x,y,rnd=$D20A |
|||
ptr=PeekC(88) |
|||
FOR y=0 TO 191 |
|||
DO |
|||
FOR x=0 TO 39 |
|||
DO |
|||
ptr^=rnd |
|||
ptr==+1 |
|||
OD |
|||
OD |
|||
RETURN |
|||
PROC PrepareScreen() |
|||
BYTE COLOR1=$02C5,COLOR2=$02C6 |
|||
CARD SDLSTL=$0230,ptr |
|||
BYTE i,v |
|||
BYTE ARRAY dlist(205) |
|||
Graphics(8+16) |
|||
COLOR1=$0F |
|||
COLOR2=$00 |
|||
;prepare text |
|||
FOR i=0 TO TEXT_SIZE-1 |
|||
DO |
|||
text(i)=0 |
|||
OD |
|||
text(6)='F-32 |
|||
text(7)='P-32 |
|||
text(8)='S-32 |
|||
;modify display list to add one row with text on the top |
|||
dlist(0)=$70 |
|||
dlist(1)=$70 |
|||
dlist(2)=$42 |
|||
PokeC(dlist+3,text) |
|||
ptr=SDLSTL |
|||
ptr==+3 |
|||
FOR i=5 TO 202 |
|||
DO |
|||
dlist(i)=Peek(ptr) |
|||
ptr==+1 |
|||
OD |
|||
PokeC(dlist+203,dlist) |
|||
SDLSTL=dlist |
|||
RETURN |
|||
PROC PrintFPS(REAL POINTER fps) |
|||
CHAR ARRAY tmp(20) |
|||
BYTE i |
|||
StrR(fps,tmp) |
|||
FOR i=1 TO 5 |
|||
DO |
|||
text(i-1)=tmp(i)-32 |
|||
OD |
|||
RETURN |
|||
PROC Main() |
|||
BYTE CH=$02FC |
|||
CARD beg,end |
|||
REAL fps |
|||
PrepareScreen() |
|||
beg=GetFrame() |
|||
DO |
|||
FillNoise() |
|||
end=GetFrame() |
|||
CalcFPS(end-beg,fps) |
|||
PrintFPS(fps) |
|||
beg=end |
|||
UNTIL CH#$FF |
|||
OD |
|||
CH=$FF |
|||
RETURN</lang> |
|||
{{out}} |
|||
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Image_noise.png Screenshot from Atari 8-bit computer] |
|||
=={{header|Ada}}== |
=={{header|Ada}}== |