Heres one way. Requires Easymenu's ptrmen_rext. Convert the screens to sprites (using Bob Spelten's SQRview, for example) and then:vanpeebles wrote:I think we should have a forum Christmas animation competition based on Cristians program. Does anyone else agree?
Code: Select all
10 name$ = '*** D R I N K ***'
11 REMark ~~~~~~~~~~~~~~~~~~~
12 REMark by pjw, November 23rd 2016
13 REMark Requires Easyptr's ptrmen_rext toolkit
14 :
15 REMark Init
16 p = 5
17 nf% = 9
19 dev$ = 'ram1_'
20 DIM addr(nf%)
21 :
22 ch = JobHeader(512, 256, name$)
23 :
24 :
25 REMark Load frames
26 FOR i% = 1 TO nf%
27 er = LoadSpr(i%, dev$ & 'scr_0' & i% & '_spr')
28 IF er < 0: CLCHP: EXIT i%
29 END FOR i%
30 ERT er
31 :
32 :
33 REMark Display
34 REPeat main
35 FOR i% = 1 TO nf%
36 SPRW#ch; 0, 0, addr(i%)
37 k% = CODE(INKEY$(#ch; p))
38 SELect ON k%
39 = 10, 32: IF CODE(INKEY$(#ch; -1)) = 27: QUIT
40 = 27: QUIT
41 = 26, 90, 122: EXEP 'button_sleep': REMark CTR+z, Z, z
42 = 77, 109, 245: WMOV#ch: REMark CTR+F4, M, m
43 END SELect
44 END FOR i%
45 END REPeat main
46 CLCHP
47 :
48 :
49 DEFine FuNction LoadSpr(n%, fnm$)
50 LOCal er
51 REMark GLOBal nf%, po%, addr
52 er = FTEST(fnm$): IF er < 0: RETurn er
53 IF n% > nf%: RETurn -5: REMark Err BF
54 addr(n%) = FLEN(\ fnm$)
55 addr(n%) = ALCHP(addr(n%))
56 IF addr(n%) <= 0: RETurn -4: REMark Err OM
57 LBYTES fnm$, addr(n%)
58 RETurn 0
59 END DEFine LoadSpr
60 :
61 :
62 DEFine FuNction JobHeader(xsz%, ysz%, nm$)
63 LOCal ch, x%, y%, xs%, ys%, wd
64 JOB_NAME nm$
65 xs% = xsz% + 4: ys% = ysz% + 2
66 x% = -1: y% = -1
67 ch = FOPEN("con_")
68 OUTLN#ch; xs%, ys% + 14, 0, 0, 10, 10
69 RDPT#ch; 48, x%, y%, 0: WMOV#ch; x%, y%: REMark EXEP needs WMOV
70 wd = MWDEF(#ch)
71 BORDER#ch; 1, 2
72 WM_PAPER#ch; 516: REMark Title background
73 WM_STRIP#ch; 517: REMark Title text background
74 WM_INK#ch; 518: REMark Title foreground
75 CSIZE#ch; 1, 0: CLS#ch
76 CURSOR#ch; (xs% - LEN(nm$) * 8) DIV 2, 2
77 PRINT#ch; nm$
78 x% = PEEK_W(wd + 36): y% = PEEK_W(wd + 38)
79 WINDOW#ch; xs%, ys%, x%, y% + 14
80 PAPER#ch; 0: CLS#ch: CSIZE#ch; 0, 0: BORDER#ch; 1, 2
81 RETurn ch
82 END DEFine JobHeader
83 :
84 :
Per