home *** CD-ROM | disk | FTP | other *** search
/ RISC DISC 1 / RISC_DISC_1.iso / _armovie / player (.txt) < prev    next >
RISC OS BBC BASIC V Source  |  1994-07-25  |  75KB  |  3,693 lines

  1.  > Player
  2. /*set ARMovie$Version 0.34 (28th April 1994)
  3. " (";
  4. ;")":
  5.  Moving Lines Video Replay application
  6.  Copyright 1992 Acorn Computers Ltd
  7. P+65535
  8. <65535 
  9.  code% 65535-
  10. -codesize%=3000:Mex%=0:
  11.  code% codesize%-1
  12. "OS_GetEnv" 
  13. 6I%=code%+512:
  14. ?L%>31:?I%=?L%:I%+=1:L%+=1:
  15. :?I%=13
  16. arg%=code%+512
  17. skiptospace:
  18. skipspace
  19. Head(5))="-QUIT" 
  20. #arg%+=6:
  21. skiptospace:
  22. skipspace
  23. $arg%="video.film93 -big"
  24. *L%=arg%:
  25. skiptospace:Z%=?arg%:?arg%=13
  26.  fil$=$L%:?arg%=Z%:
  27. skipspace
  28. "XOS_ReadVarVal","ARMovie$Suffix",code%,255 
  29. code%?I%=13:sf$=$code%
  30. 3file%=
  31. (fil$+sf$):
  32. file% fil$+=sf$ 
  33. file%=
  34. file%=0 
  35. lookup1("E00",fil$)
  36. #file%<>"ARMovie" 
  37. #file%:
  38. lookup1("E01",fil$)
  39. #file%
  40. #file%
  41. #file%
  42. video=
  43. #file%
  44. video>1 
  45. -decomp$="<ARMovie$Dir>.Decomp"+
  46. video+"."
  47. (decomp$+"!RunImage"):
  48. #file%:
  49. "Run "+decomp$+"!RunImage "+fil$+" "+$arg%:
  50. cant(
  51. lookup("R00"))
  52. (decomp$+"Decompress")
  53. A%=0 
  54. #file%:
  55. lookup1("E02",
  56. video)
  57. $'decomp$="<ARMovie$Dir>.MovingLine."
  58. &,sector=1023:
  59. fil$,4)="CDFS" sector=2047
  60. access=0
  61. "<ARMovie$Dir>.Access"
  62. *>a$=
  63. #A%:I%=
  64. a$," "):
  65. a$,I%-1)=
  66. fil$,I%-1) access=
  67. a$,I%)
  68. #file%
  69. #file%
  70. #file%:inputbpp=
  71. inputbpp<>16 
  72. inputbpp<>8 
  73. cant(
  74. lookup("R01"))
  75. uc(f$),"YUV") 
  76. f$="yuv"
  77. f$="rgb"
  78. atx%=-1:aty%=-1
  79. "XOS_ReadVarVal","ARMovie$Place",code%,255 
  80. 8ccode%?I%=13:ip$=$code%:trajec%=
  81. :trajshapes%=0:slow%=
  82. :forcemode%=-42:paintuser%=
  83. :mouseuser%=
  84. ip$<>"" atx%=
  85. ip$:aty%=
  86. ip$," ")+1)
  87. :Tbig%=
  88. :small%=
  89. :loop%=
  90. :clear%=
  91. :quiet%=
  92. :noerror%=
  93. :explode%=
  94. :hour%=
  95. :paused=
  96. ;dplayfor%=-1:startat%=0:muted%=
  97. :butmenu%=
  98. :butadj%=
  99. :speed=1:track%=1:shape%=0:shap%=0:interp%=
  100. px=0:py=0:pw=32767:ph=32767
  101. ex=0:ey=0:ew=0:eh=0
  102. cx=0:cy=0:cw=0:ch=0
  103. sx=0:sy=0:sw=0:sh=0
  104. fx=0:fy=0:fw=0:fh=0
  105. hx=0:hy=0:hw=0:hh=0
  106. qx=0:qy=0:qw=0:qh=0
  107. lx=0:ly=0:lw=0:lh=0
  108. mx=0:my=0:mw=0:mh=0
  109. B%=code%+256
  110. scanargs
  111. GRarg%=code%+512:
  112. "XOS_ReadVarVal","ARMovie$ExtraArgs",arg%,codesize%-512 
  113. H:arg%?I%=13:
  114. scanargs:
  115. "Set ARMovie$ExtraArgs """""
  116. hour% 
  117. "Hourglass_On"
  118. playfor%>0 
  119. playfor%+=startat%
  120. playfor%=0 quiet%=
  121. noerror% 
  122. "Hourglass_Smash":
  123. #file%:
  124. "Set ARMovie$ReturnCode "+
  125. "Hourglass_Smash":
  126. #file%:
  127. $ " (";
  128. ;")":
  129. shape% shapex%=shapex%>>2:shapey%=shapey%>>2:testy%=shapey% 
  130. shapex%=sx%:shapey%=sy%:testy%=shapey%*.8
  131. "XOS_ReadVarVal","ARMovie$ColourMethod",code%,255 
  132. S9code%?I%=13:
  133. $code%>0 colcheck%=
  134. $code% 
  135. colcheck%=9
  136. big% 
  137. "XOS_ReadVarVal","ARMovie$PrefBigMode",code%,255 
  138. ,,I%:code%?I%=13:$code%=
  139. uc($code%)
  140. $code%=0 $code%="13;49;28"
  141. "XOS_ReadVarVal","ARMovie$PrefMode",code%,255 
  142. YHcode%?I%=13:$code%=
  143. uc($code%):
  144. $code%>0 forcemode%=
  145. modeblk(code%)
  146. video 
  147. \*defeatscrnblank%=
  148. &63100,4 
  149.  ,A%;I%
  150. 1)=0 
  151. A%<>0 defeatscrnblank%=
  152. explode% big%=
  153. big% 
  154. I%=code%
  155. seppos%=0 
  156. d0seppos%=
  157. $I%,";"):
  158. seppos% I%?(seppos%-1)=13
  159. $I%>0 forcemode%=
  160. modeblk(I%):I%+=seppos%
  161. &20035,forcemode%,4 
  162. ,,nx:
  163. &20035,forcemode%,5 
  164. ,,ny:
  165. &20035,forcemode%,3 
  166. ,,ncol
  167. &20035,forcemode%,11 
  168. ,,x%:x%+=1:
  169. &20035,forcemode%,12 
  170. ,,y%:y%+=1:okbig%=
  171. ncol<256 
  172. &20035,forcemode%,colcheck% 
  173.  ,,A%:
  174. A%>3 ncol=(1<<(1<<A%))-1
  175. iKmagx%=2:magy%=2:
  176. nx=ny 
  177. ncol>=63
  178. ncol=-1 okbig%=
  179. nx=0 magx%=1:magy%=1
  180. nx=2 
  181. ny=1 
  182. ncol>=63
  183. ncol=-1 okbig%=
  184. :magx%=2:magy%=4
  185. nx=1 
  186. ny=0 
  187. ncol>=63
  188. ncol=-1 okbig%=
  189. :magx%=1:magy%=2
  190. okbig% 
  191. shapex%*magx%<=x% 
  192. testy%*magy%<y% 
  193.  seppos%=0
  194. butmenu%=
  195. forcemode%:
  196. explode%=
  197. forcemode%<>-42 
  198. <>forcemode% 
  199. forcemode%:
  200. :butmenu%=
  201. =&1000000
  202. -32768
  203. w<origfps=
  204. #file%:fps=origfps*speed:pixpersec=fps*sx%*sy%
  205. x&snd$=
  206. #file%,track%):snd%=
  207. quiet% snd%=
  208. sndrep=
  209. #file%,track%)
  210. lin$=
  211. #file%,track%)
  212. |0reversed%=
  213. uc(lin$),"REVER") reversed%=
  214. channels%=
  215. lin$=
  216. #file%,track%)
  217. sndbits%=
  218. snd%=1 
  219.  snd%=2 
  220. sndmul%=8
  221. snd%=1 
  222. sndbits%=16 
  223. uc(lin$),"LIN") 
  224. uc(lin$),"UNSIGN") lin$="U" 
  225. lin$="S"
  226. sndbits%=16 sndmul%=16
  227. sndbits%=4 
  228. uc(lin$),"ADPCM") 
  229. lin$="A":sndmul%=16
  230. lin$="E"
  231. lin$+=
  232. sndbits%
  233. lin$="Sound"+lin$
  234. lin$=
  235. snd$,3)
  236. lin$=
  237. lin$,
  238. lin$," ")-1)
  239. <f2info%=
  240. ("<ARMovie$SoundDir>."+lin$+".Info"):
  241. f2info% 
  242. snd$=
  243. #f2info%
  244. snd$=
  245. #f2info%
  246. snd$=
  247. #f2info%
  248. sndmul%=
  249. #f2info%
  250. #f2info%
  251. lin$+=".Play"
  252. channels%>1 lin$+="x"+
  253. channels%
  254. explode% 
  255. "OS_File",17,"<ARMovie$SoundDir>."+lin$ 
  256.  r0%,,,,r4%
  257. r0%<>1 
  258. "Hourglass_Smash":
  259. lookup1("E03",lin$)
  260.  sndcode% r4%-1,mute% 63
  261. "OS_File",16,"<ARMovie$SoundDir>."+lin$,sndcode%
  262. ,!mute%=0:sfr=sndrep:
  263. sfr<256 sfr=1E6/sfr
  264. sfr=sfr*speed
  265. mute%!8=
  266. "mute%!12=(1<<24)*(sfr-mute%!8)
  267. mute%?16=0
  268. mute%?17=reversed%
  269. I%=18
  270. 63:mute%?I%=0:
  271. =sndplay%=sndcode%:sndstop%=sndplay%+4:snddata%=sndstop%+4
  272. 3sndcounter%=snddata%+4:sndbuffer%=sndcounter%+4
  273. 1A%=1:B%=mute%:sndtime%=
  274. sndplay%:sndtime%=
  275. noerror% 
  276. "Hourglass_Smash":
  277. #file%:
  278. sndstop%:
  279. "Set ARMovie$ReturnCode "+
  280. "Hourglass_Smash":
  281. #file%:
  282. sndstop%:
  283. " (";
  284. ;")":
  285. video 
  286. playfor%<>0 
  287. 10000:
  288. T%>25 slow%=
  289. &35,-1,4 
  290. ,,nx:
  291. &35,-1,5 
  292. ,,ny:
  293. &35,-1,3 
  294. ,,ncol
  295. ncol<256 
  296. &35,-1,colcheck% 
  297.  ,,A%:
  298. A%>3 ncol=(1<<(1<<A%))-1
  299. szmul%=2:pixshift=2
  300. big% 
  301. magx%=2:
  302. nx=2 magx%=1
  303. magy%=2:
  304. ny=0 magy%=4
  305. ny=2 magy%=1
  306. small% 
  307. magx%=2
  308. magy%=2 magx%=1:magy%=1
  309. magx%=2
  310. magy%=4 magx%=1:magy%=2
  311. explode% 
  312.  shift=-1:p%=-1:bpp%=1:ncol=1
  313. video>0 
  314. "XOS_ReadVarVal","ARMovie$Interpolate",code%,255 
  315. ,,I%:code%?I%=13
  316. $code%=1 $code%="1024000,2048000":
  317. ncol=63
  318. ncol=255 $code%="256000,512000"
  319. $code%=0 $code%="128000,512000"
  320. $code%>=pixpersec 
  321. interp%=2
  322. $code%,","):
  323. $(code%+I%)>=pixpersec interp%=1
  324. )tblsize=32768:
  325. inputbpp=8 tblsize=256
  326. shape% interp%=
  327.  ncol 
  328. magx%=2
  329. shift=0:
  330.  p% tblsize-1
  331.  a%(5),r%(31)
  332. "ColourTrans_ReturnGCOL",&FFFFFF00 
  333.  w:b=w 
  334. magx%<>magy% 
  335. dither2(0,b,w,1)
  336. a%(2)=w 
  337.  w<<1
  338. a%(3)=a%(2):num%=3
  339. dither4(0,b,w,1)
  340.  a%(4)=w 
  341.  w<<1 
  342.  w<<2 
  343.  w<<3
  344. a%(5)=a%(4):num%=5
  345. maketable(1)
  346. !bpp%=magx%:pixshift=5:round=8
  347. /shift=0:
  348.  p% tblsize-1,a%(13),r%(31):num%=0
  349. "ColourTrans_ReturnGCOL",&FFFFFF00 
  350. "ColourTrans_ReturnGCOL",&aaaaaa00 
  351. "ColourTrans_ReturnGCOL",&55555500 
  352. "ColourTrans_ReturnGCOL",&00000000 
  353. magx%=magy% 
  354. magx%=1 
  355. 8a%(0)=b:a%(1)=dg:a%(2)=lg:a%(3)=w:a%(4)=a%(3):num%=4
  356. dither4(0,b,dg,2)
  357. dither4(4,dg,lg,2)
  358. dither4(8,lg,w,2)
  359. !a%(12)=w 
  360.  w<<2 
  361.  w<<4 
  362.  w<<6
  363. a%(13)=a%(12):num%=13
  364. dither2(0,b,dg,2)
  365. dither2(2,dg,lg,2)
  366. dither2(4,lg,w,2)
  367. a%(6)=w 
  368.  w<<2
  369. a%(7)=a%(6):num%=7:magx%=2
  370. maketable(1)
  371. $pixshift=4:round=16:bpp%=2*magx%
  372.  gs%(15):numgs%=0
  373. 15:R%=Z%*17:
  374. "ColourTrans_ReturnGCOL",R%<<24 
  375.  R%<<16 
  376.  R%<<8 
  377. "OS_ReadPalette",R%,16 
  378.  ,,G%
  379. (G%>>>28)=((G%>>20)
  380. (G%>>>28)=((G%>>12)
  381. numgs%>0 
  382. R%<>gs%(numgs%-1) gs%(numgs%)=R%:numgs%+=1
  383. gs%(0)=R%:numgs%+=1
  384. numgs%<2 
  385. "ColourTrans_ReturnGCOL" 
  386.  gs%(0)
  387. "ColourTrans_ReturnGCOL",&FFFFFF00 
  388.  gs%(1)
  389. numgs%=2
  390. magx%=magy% 
  391.  p% tblsize*2-1:
  392. "XOS_ReadVarVal","ARMovie$4Colour",0,-1 
  393. inputbpp=16 
  394. "OS_ReadPalette",R%,16 
  395.  ,,G%:p%!(R%*3)=G%>>>8:
  396. "<ARMovie$Dir>.MovingLine.4ColPal"
  397. "Load <ARMovie$Dir>.MovingLine.4ColPal "+
  398. ~(p%+256)
  399. #I%:I%=J%
  400. Z%=p%+256:Y%=0
  401.  Y%+=1:F%=
  402. p%!J%<>Z%!J% F%=
  403. "Load <ARMovie$Dir>.MovingLine.4"+f$+"11c"+
  404. Y%,2)+" "+
  405. Z%+=48
  406.  Y%*48=I%
  407. F% I%=0
  408. I%=0 
  409.  a%(61),r%(31)
  410. numgs%-2
  411. dither4(Z%*4,gs%(Z%),gs%(Z%+1),4)
  412. )'num%=(numgs%-1)*4+1:w=gs%(numgs%-1)
  413. *Ha%(num%-1)=w 
  414.  w<<4 
  415.  w<<8 
  416.  w<<12:a%(num%)=a%(num%-1):
  417. maketable(2)
  418. shift=1
  419. shift=0:
  420.  p% tblsize-1
  421.  a%(31),r%(31)
  422. numgs%-2
  423. dither2(Z%*2,gs%(Z%),gs%(Z%+1),4)
  424. 3'num%=(numgs%-1)*2+1:w=gs%(numgs%-1)
  425. 4Aa%(num%-1)=w 
  426.  w<<4:a%(num%)=a%(num%-1):
  427. maketable(1):magx%=2
  428. 6#bpp%=4*magx%:pixshift=3:round=8
  429. magx%=magy% 
  430. magx%=2
  431. magy%=4 
  432. magx%=2 
  433. shift=2:
  434.  p% tblsize*4-1
  435. inputbpp=16 
  436. "Load <ARMovie$Dir>.MovingLine.8"+f$+"11 "+
  437. gs%(15):numgs%=16
  438. 15:R%=Z%*17:
  439. "ColourTrans_ReturnColourNumber",R%<<24 
  440.  R%<<16 
  441.  R%<<8 
  442.  gs%(Z%):
  443.  a%(61)
  444. numgs%-2
  445. dither4(Z%*4,gs%(Z%),gs%(Z%+1),8)
  446. D'num%=(numgs%-1)*4+1:w=gs%(numgs%-1)
  447. EIa%(num%-1)=w 
  448.  w<<8 
  449.  w<<16 
  450.  w<<24:a%(num%)=a%(num%-1):
  451. maketable(4)
  452. G+bpp%=16:
  453. interp%<>2
  454. f$<>"yuv" interp%=
  455. magy%=4 interp%=
  456. J$shift=0:interp%=0:
  457.  p% tblsize-1
  458. inputbpp=16 
  459. "Load <ARMovie$Dir>.MovingLine.8"+f$+"22 "+
  460.  a%(15):num%=15
  461. 15:R%=Z%*17:
  462. "ColourTrans_ReturnColourNumber",R%<<24 
  463.  R%<<16 
  464.  R%<<8 
  465.  a%(Z%):
  466. maketable(1)
  467. T&shift=2:interp%=0:
  468.  p% tblsize*4-1
  469. inputbpp=16 
  470. "Load <ARMovie$Dir>.MovingLine.8"+f$+"11 "+
  471. magx%=1 
  472. magx%=2
  473. magy%=1 
  474. zerohalftable:szmul%=1
  475. gs%(15):numgs%=16
  476. 15:R%=Z%*17:
  477. "ColourTrans_ReturnColourNumber",R%<<24 
  478.  R%<<16 
  479.  R%<<8 
  480.  gs%(Z%):
  481.  a%(31)
  482. numgs%-2
  483. dither2(Z%*2,gs%(Z%),gs%(Z%+1),8)
  484. _'num%=(numgs%-1)*2+1:w=gs%(numgs%-1)
  485. `9a%(num%-1)=w 
  486.  w<<8:a%(num%)=a%(num%-1):
  487. maketable(4)
  488. :bpp%=8*magx%:round=4
  489. d/doneload%=
  490. magx%=magy% 
  491. magx%=2
  492. magy%=4 
  493. magx%=2 
  494. shift=2:
  495.  p% tblsize*4-1
  496. inputbpp=16 
  497. checkandload
  498. inputbpp=8 
  499.  doneload%=
  500. gs%(15):numgs%=16
  501. 15:R%=Z%*17:
  502. "ColourTrans_ReturnColourNumber",R%<<24 
  503.  R%<<16 
  504.  R%<<8 
  505.  gs%(Z%):
  506.  a%(61),r%(31)
  507. numgs%-2
  508. dither4(Z%*4,gs%(Z%),gs%(Z%+1),8)
  509. o'num%=(numgs%-1)*4+1:w=gs%(numgs%-1)
  510. pIa%(num%-1)=w 
  511.  w<<8 
  512.  w<<16 
  513.  w<<24:a%(num%)=a%(num%-1):
  514. maketable(4)
  515. interp%=2
  516. f$="yuv" 
  517. interp%=
  518. magy%=4 interp%=
  519. u$shift=0:interp%=0:
  520.  p% tblsize-1
  521. inputbpp=16 
  522. "Load <ARMovie$Dir>.MovingLine.8"+f$+"22 "+
  523.  a%(15),r%(31):num%=15
  524. 15:R%=Z%*17:
  525. "ColourTrans_ReturnColourNumber",R%<<24 
  526.  R%<<16 
  527.  R%<<8 
  528.  a%(Z%):
  529. maketable(1)
  530. &shift=2:interp%=0:
  531.  p% tblsize*4-1
  532. inputbpp=16 
  533. checkandload
  534. doneload% 
  535. magx%=1 
  536. zerohalftable:szmul%=1
  537. inputbpp=8 
  538.  doneload%=
  539. gs%(15):numgs%=16
  540. 15:R%=Z%*17:
  541. "ColourTrans_ReturnColourNumber",R%<<24 
  542.  R%<<16 
  543.  R%<<8 
  544.  gs%(Z%):
  545.  a%(31),r%(31)
  546. numgs%-2
  547. dither2(Z%*2,gs%(Z%),gs%(Z%+1),8)
  548. 'num%=(numgs%-1)*2+1:w=gs%(numgs%-1)
  549. 9a%(num%-1)=w 
  550.  w<<8:a%(num%)=a%(num%-1):
  551. maketable(4)
  552. :ncol=63:bpp%=8*magx%:round=4
  553.  65535
  554. 1round=2:bpp%=16*magx%:shift=-2:
  555. magx%=magy% 
  556. magx%=1 shift=-1:szmul%=1:interp%=0
  557. magx%=1 interp%=0
  558. magy%=1 
  559. interp%=2 interp%=1
  560. pixshift=1
  561. inputbpp=16 
  562. p%=-1:
  563. f$="yuv" 
  564.  p% tblsize*4-1:
  565. "Load <ARMovie$Dir>.MovingLine.16yuv "+
  566. shift=-1 
  567. zerohalftable
  568. shift=2
  569. interp% 
  570.  p% tblsize*4-1
  571. NP%=code%:[OPT0:STR r1,[r0,r1,LSL #2]:SUBS r1,r1,#1:BPL code%:MOVS pc,r14:]
  572. A%=p%:B%=32767:
  573. code%
  574. shift=2
  575.  gs%(31):
  576. 31:gs%(I%)=I% 
  577. I%<<5 
  578. I%<<10:
  579.  p% tblsize*4-1:
  580. shift=-1 
  581. 255:p%!(Y%<<2)=gs%(Y%/255*31+.5):
  582.  a%(63):numgs%=32
  583. numgs%-2
  584. dither2(Z%*2,gs%(Z%),gs%(Z%+1),16)
  585. 'num%=(numgs%-1)*2+1:w=gs%(numgs%-1)
  586. :a%(num%-1)=w 
  587.  w<<16:a%(num%)=a%(num%-1):
  588. maketable(4)
  589. shift=2
  590. interp% 
  591. PP%=code%:[OPT0:LDR r2,[r0,r1,LSL #2]:BIC r2,r2,#&ff0000:BIC r2,r2,#&ff000000
  592.  r3,r2,#31<<5:BIC r2,r2,#31<<5:
  593. R r2,r2,r3,LSL #16
  594. ?STR r2,[r0,r1,LSL #2]:SUBS r1,r1,#1:BPL code%:MOVS pc,r14:]
  595. A%=p%:B%=tblsize-1:
  596. code%
  597. 0round=0:bpp%=32*magx%:shift=2:
  598. magx%=magy% 
  599. magx%=1 interp%=0
  600. magx%=1 interp%=0
  601. magy%=1 
  602. interp%=2 interp%=1
  603. pixshift=0
  604. inputbpp=16 
  605.  p% tblsize*4-1:
  606. f$="yuv" 
  607. "Load <ARMovie$Dir>.MovingLine.32yuv "+
  608. BP%=code%:[OPT0:
  609.  r2,r1,#31:MOV r2,r2,LSL #3:
  610. R r2,r2,r2,LSR #5
  611.  r3,r1,#31<<5:MOV r3,r3,LSR #2:
  612. R r3,r3,r3,LSR #5:
  613. R r2,r2,r3,LSL #8
  614.  r3,r1,#31<<10:MOV r3,r3,LSR #7:
  615. R r3,r3,r3,LSR #5:
  616. R r2,r2,r3,LSL #16
  617. ?STR r2,[r0,r1,LSL #2]:SUBS r1,r1,#1:BPL code%:MOVS pc,r14:]
  618. A%=p%:B%=32767:
  619. code%
  620.  p% tblsize*4-1
  621. 255:p%!(Y%<<2)=Y% 
  622.  Y%<<8 
  623.  Y%<<16:
  624. interp% 
  625. HP%=code%:[OPT0:LDR r2,[r0,r1,LSL #2]:BIC r2,r2,#256:BIC r2,r2,#65536
  626. ?STR r2,[r0,r1,LSL #2]:SUBS r1,r1,#1:BPL code%:MOVS pc,r14:]
  627. A%=p%:B%=32767:
  628. code%
  629. ncol,magx%,magy%
  630. bpp%=1:shift=1:p%=-1
  631. shape% szmul%=2
  632. %decompr$="Decompress":
  633. szmul%=1 
  634. (decomp$+"DecompresH"):
  635. A%=0 szmul%=2 
  636. #A%:decompr$="DecompresH"
  637. video 
  638. atx%<>-1 atx%+=round
  639. #file%
  640. maxfile=
  641. #file%
  642. evenmax=
  643. #file%
  644. oddmax=
  645. #file%
  646. #file%
  647. #file%
  648. #file%
  649. #file%
  650. #file%=CC
  651.  cat% (maxfile+2)*12
  652. Z%=cat%
  653. cat%+maxfile*12
  654. #file%
  655. !Z%!4=
  656. a$:!Z%=
  657. a$,",")+1)
  658. Z%!8=
  659. a$,";")+1)
  660. track%>1 
  661. track%
  662. track%>I%-1 !Z%+=Z%!8:Z%!8=
  663. a$,"|"+
  664. I%)+1+
  665. (!Z%=0:Z%!4=Z%!-8+Z%!-12+Z%!-4:Z%!8=0
  666. &sz%=sx%*sy%*szmul%:ipsz%=sx%*sy%*2
  667. video 
  668. interp%=2 sz%+=sx%*szmul%
  669. Gfchunk%=startat%
  670. (fpf/origfps*100):
  671. fchunk%>maxfile fchunk%=maxfile
  672. C%=fchunk%:
  673. loop% C%=0
  674. bigevenmax=0:bigoddmax=0
  675. Z%=cat%+C%*12
  676. cat%+maxfile*12
  677. :Q%=Z%!16-Z%!4+Z%!20+Z%!12:
  678. Q%>bigevenmax bigevenmax=Q%
  679. C%+2<=maxfile 
  680. Z%=cat%+C%*12+24
  681. cat%+maxfile*12
  682. 8Q%=Z%!16-Z%!4+Z%!20+Z%!12:
  683. Q%>bigoddmax bigoddmax=Q%
  684. )bigevenmax=bigevenmax+sector 
  685. sector
  686. 'bigoddmax=bigoddmax+sector 
  687. sector
  688. !oddmax=oddmax+sector 
  689. sector
  690. #evenmax=evenmax+sector 
  691. sector
  692.  evenmax,oddmax
  693. bigevenmax<evenmax bigevenmax=evenmax
  694. bigoddmax<oddmax bigoddmax=oddmax
  695. loop%<>0
  696. maxfile>0 
  697. oddmax<evenmax oddmax=evenmax 
  698. evenmax=oddmax
  699. loop%<>0
  700. maxfile>1 
  701. bigoddmax<bigevenmax bigoddmax=bigevenmax 
  702. bigevenmax=bigoddmax
  703. snd%=1 
  704.  snd%=2 
  705. explode% 
  706.  sndbuffer% -1,snddata% -1
  707. sndrep<256 
  708. FZ%=(fpf/origfps*(1E6/sndrep)*channels%*1.01*sndmul%+7)
  709. 8+12+4+3
  710. @Z%=(fpf/origfps*sndrep*channels%*1.01*sndmul%+7)
  711. 8+12+4+3
  712.  A% Z%-1,B% Z%-1
  713. A%!4=1:B%!4=1
  714. "!sndbuffer%=A%:sndbuffer%!4=B%
  715. (decomp$+decompr$):
  716. A%=0 
  717. lookup("E04")
  718.  decompblk 
  719. #A%+15
  720. decompblk=decompblk+15
  721. 12,3,A%,decompblk,
  722. !-twobuf%=
  723. +bigoddmax+bigevenmax+16384
  724. -B%)/(sz%*2+16)
  725. C%<4 
  726. explode%
  727. evenmax+oddmax>2000000
  728. playfor%=0
  729. access>0 
  730. explode% 
  731. oddmax>evenmax evenmax=oddmax
  732. oddmax=0
  733. ('twobuf%=
  734. +oddmax+evenmax+16384
  735. -B%)/(sz%*2+16)
  736. video 
  737. C%<3 
  738. lookup("E05")
  739. +'bigevenmax=evenmax:bigoddmax=oddmax
  740. C%>=fpf C%=fpf-1
  741. bf=C%:
  742. video=0 sz%=0:bf=0
  743. "Set ARMovie$Buffs "+
  744. twobuf%+" "+
  745. bf+" "+
  746. (bigevenmax+bigoddmax)+" "+
  747. access+" "+
  748. interp%
  749.  bb% sz%*bf*2+bf*16+15
  750. bigoddmax 
  751.  op0% bigevenmax+15,op1% bigoddmax+15 
  752.  op0% bigevenmax+15:op1%=op0%
  753. 2%op0%=op0%+15
  754. 15:op1%=op1%+15
  755. 3'!bb%=148:bb%!4=6:bb%!8=12:bb%!12=-1
  756. "OS_ReadVduVariables",bb%,op0%
  757. 5'screenstart%=!op0%:rowbytes%=op0%!4
  758. screenrows=op0%!8+1
  759. 7*plx%=(rowbytes%-shapex%*bpp%/8)
  760. 8%ply%=(screenrows-shapey%*magy%)
  761. big%=-1
  762. big%=-2 atx%=-1:aty%=-1
  763. atx%<>-1 
  764. aty%<>-1 
  765. ;-plx%=(atx%>>nx)*4>>pixshift:ply%=aty%>>ny
  766. plx%+shapex%*bpp%/8>rowbytes% plx%=rowbytes%-shapex%*bpp%/8
  767. ply%+shapey%*magy%>screenrows ply%=screenrows-shapey%*magy%
  768. atx%=(plx%<<nx+pixshift)
  769. aty%=ply%<<ny
  770. ply%<0 ply%=0
  771. plx%<0 plx%=0
  772. D;C%=(screenrows-ply%-shapey%*magy%)*rowbytes%:
  773. C%<0 C%=0
  774. dd%=screenstart%+plx%+C%
  775. trajec% 
  776. I%=traj%
  777. traj%+8*trajsteps%-1
  778. HGplx%=(((!I%<<16)>>16)+atx%>>nx)*4>>pixshift:ply%=(!I%>>16)+aty%>>ny
  779. plx%+shapex%*bpp%/8>rowbytes% plx%=rowbytes%-shapex%*bpp%/8
  780. ply%+shapey%*magy%>screenrows ply%=screenrows-shapey%*magy%
  781. ply%<0 ply%=0
  782. plx%<0 plx%=0
  783. MC!I%=screenstart%+plx%+(screenrows-ply%-shapey%*magy%)*rowbytes%
  784. dd%=!traj%
  785. shape% 
  786. J%=1:
  787. magx%=1 J%=2
  788. K%=1:
  789. magy%=1 K%=2
  790. magy%=4 K%=0
  791. 2:P%=code%
  792. [OPTZ%
  793. .flatten LDR r0,[r9]
  794. LDR r0,[r0]
  795. LDR r1,[r0,#8] 
  796. MOV r1,r1,LSR #2
  797. SUB r1,r1,#1 
  798.  magy% 
  799. [OPT Z%
  800. MOV r1,r1,LSL #1
  801. [OPT Z%
  802. MOV r1,r1,LSL #2
  803. [OPT Z%
  804. ADD r0,r0,#12 
  805. MOV r2,#&ff
  806. R r2,r2,#&ff00 
  807. MOV r3,r0 
  808. MOV r12,#0
  809. addmacro(12,12,rowbytes%)
  810. MOV r11,#sx%
  811. LDMIA r0!,{r4} 
  812. .flatouter
  813. MOV r5,r4,LSR #24 
  814. SUB r5,r5,#1
  815. BIC r4,r4,#&ff000000
  816.  r6,r4,r2,LSR #4 
  817. MOV r6,r6,LSR #J% 
  818. MOV r6,r6,LSL #2 
  819. pixshift 
  820. [OPT Z%
  821. MOV r6,r6,LSR #pixshift 
  822. [OPT Z%
  823. SUB r7,r1,r4,LSR #K%+12 
  824. MLA r4,r7,r12,r6 
  825. R r4,r4,r5,LSL #24 
  826. STMIA r3!,{r4}
  827. .flatinner
  828. LDMIA r0!,{r4} 
  829.  r7,r4,r2 
  830. CMP r7,#sx% 
  831. MOV r8,r4,LSR #16 
  832. CMPCC r8,#sy% 
  833. MLA r7,r8,r11,r7 
  834. MVNCS r7,#0 
  835. CMN r4,#2
  836. MVNEQ r7,#1 
  837. MOV r7,r7,LSL #2 
  838. STMIA r3!,{r7}
  839. SUBS r5,r5,#1
  840. BPL flatinner
  841. LDMIA r0!,{r4} 
  842. CMN r4,#1
  843. BNE flatouter
  844. STMIA r3!,{r4} 
  845. MOVS pc,r14
  846. trajshapes% 
  847. 4*trajshapes%-1
  848. 4:J%=trajshap%!I%:
  849. flatten,J%:
  850. shap%=!trajshap%
  851. flatten,shap%
  852. maxfile=0 op1%=op0%
  853. bb%=bb%+15
  854. incore%=
  855. loop% 
  856. maxfile=0 incore%=
  857. maxfile=1 
  858.  twobuf% incore%=
  859. (decomp$+"Info")
  860. #sourceisquick%=
  861. :fsz%=sx%*sy%*2
  862. A$ fsz%=sx%*sy%*
  863. uc(A$),"TEMP")=0 sourceisquick%=
  864. interp%<>0
  865. ncol=63 
  866. &patchtab=decompblk+!decompblk:Z%=0
  867. !patchtab<>-1
  868. #P%=decompblk+(!patchtab 
  869. &FFFF)
  870. plook(!patchtab>>24 
  871. 15,!patchtab>>20 
  872. 15,!patchtab>>16 
  873. patchtab+=4
  874. A%=sx%:B%=sy%:
  875. decompblk+4
  876. decl=decompblk+8
  877. ass:osf%=8
  878. +40960
  879. video A%=bb%:B%=bb%+bf*sz%*2+bf*16:
  880. fchunk%<>0
  881. video<>0
  882. KF+(fchunk%-1)*ipsz%<
  883. #file% 
  884. 12,3,file%,op0%,ipsz%,KF+(fchunk%-1)*ipsz%:Z%=0
  885.     [OPT0
  886. .keyer
  887.  LDR r0,decfrom:ADD r0,r0,#16
  888. LDR r1,adb1 
  889. LDR r5,adrp
  890. LDR r4,adnumpix
  891. MOV r6,#&ff
  892. R r6,r6,#&ff00
  893. .keyerlp
  894. LDR r3,[r1],#4
  895.  r2,r3,r6
  896. MOV r3,r3,LSR #16
  897. interp%<>0
  898. ncol=63 
  899.     [OPT0
  900. plook(2,2,5)
  901. plook(3,3,5)
  902. szmul%=1 
  903. [OPT 0
  904. R r2,r2,r3,LSL #16
  905. STR r2,[r0],#4
  906. [OPT 0
  907. STMIA r0!,{r2,r3}
  908. [OPT 0
  909. SUBS r4,r4,#4
  910. BNE keyerlp
  911. MOVS pc,r14
  912.  keyer
  913. startat%<>0
  914. video 
  915. >!inviscount=(startat%-fchunk%*100*fpf/origfps)*origfps/100
  916. playfor%<>0 !mute=32+2
  917. muted%=
  918. catstart%=fchunk%*12+cat%
  919. twobuf% 
  920. fchunk%<>maxfile 
  921. 12,3,file%,op0%,catstart%!12+catstart%!20+(catstart%!16-catstart%!4),catstart%!4
  922. (adb1!4=catstart%!16-catstart%!4+op0%
  923. 12,3,file%,op0%,!catstart%+catstart%!8,catstart%!4
  924. 12,3,file%,op0%,!catstart%+catstart%!8,catstart%!4
  925. Nef%=(maxfile+1)*fpf:
  926. sourceisquick% ef%=maxfile*fpf+cat%!(maxfile*12)
  927. playfor%>0 ef%=playfor%*origfps 
  928. playfor%=0 ef%=startat%*origfps 
  929. 100+1
  930. explode% 
  931. ZNUM(A)=
  932. (A),2)
  933. [opt 0
  934. .compress
  935. LDR r0,decfrom
  936. MOV r1,#0
  937. STR r1,[r0],#16
  938. LDR r1,[r9]
  939. LDR r1,[r1]
  940. LDR r4,adnumpix
  941. .complp
  942. LDMIA r0!,{r2,r3}
  943. R r2,r2,r3,LSL #16
  944. STR r2,[r1],#4
  945. SUBS r4,r4,#4
  946. BNE complp
  947. MOVS pc,r14
  948. expdir$<>"" 
  949. expdir$,1)<>"." expdir$+="."
  950. #file%=0:S%=
  951. (expdir$+"1Header")
  952. #file%:
  953. !inviscount>0 
  954. !inviscount:
  955. dec%:
  956. :ef%-=!inviscount
  957. snd% 
  958. sndbits%=8 
  959. (expdir$+"Sound"):
  960. sndrep<256 
  961. #S%,sndrep 
  962. #S%,1E6/sndrep
  963. (expdir$+"Samples")
  964. 12,2,S%,op0%+!catstart%,catstart%!8
  965. "Hourglass_Smash":
  966. #file%:
  967. frame%=0
  968. ef%-1
  969. hour% 
  970. "Hourglass_Percentage",frame%*100/ef%
  971. adb1!8 
  972. Fcatstart%+=12:
  973. 12,3,file%,op0%,!catstart%+catstart%!8,catstart%!4
  974. snd% 
  975. 12,2,S%,op0%+!catstart%,catstart%!8
  976.  adb1!8=0:adb2!8=1:!adbu=adb1
  977. frame%
  978. 75=0 
  979. "Cdir "+expdir$+
  980. ZNUM(frame%
  981. "Cdir "+expdir$+
  982. ZNUM(frame%
  983. 77)+"."+
  984. ZNUM(frame%
  985. X%=!decto+16:
  986. f$="yuv" 
  987. &*a$="P13 5 Y 5 U 5 V"+
  988. sx%+" "+
  989. 3)," ")
  990. a$+="   "+
  991. a$="P15"+
  992. sx%+" "+
  993. 3)," ")
  994. 10+"31"+
  995. $X%=a$:X%+=
  996. compress,X%
  997. 8,10,expdir$+
  998. ZNUM(frame%
  999. 77)+"."+
  1000. ZNUM(frame%
  1001. 77)+"."+
  1002. ZNUM(frame%
  1003. 75),&FFD,,!decto+16,X%+ipsz%
  1004. snd% 
  1005. sndbits%=8 
  1006. "Settype "+expdir$+"Sound D3C"
  1007. hour% 
  1008. "Hourglass_Off"
  1009. #file%
  1010. video 
  1011. playfor%=0 
  1012. !inviscount:
  1013. dec%:
  1014. !dbu=!decfrom
  1015. !tobuf=adb2
  1016. C%=bf:
  1017. C%>fpf C%=fpf
  1018. C%>fps C%=fps
  1019. ?!T%=
  1020. dec%:
  1021. T%/100<C%/fps !skiploc=-1:skiploc!4=-1:skiploc!8=-1
  1022. CB!fpstime=100000/fps:
  1023. trajec% !trajtime=100000/(trajrate*speed)
  1024. !timetodisp=!fpstime
  1025. E%!ef=ef%:!entend=cat%+maxfile*12+1
  1026. snd%=1 
  1027.  snd%=2 
  1028. -sndtime%>99
  1029. sndstop%:
  1030. 4:mute!I%=mute%!I%:
  1031. :!sndpause=
  1032. mute?16=4:
  1033. slow% mute?16=2
  1034. J/A%=op0%+!catstart%:B%=catstart%!8:
  1035. snddata%
  1036. twobuf% A%=adb1!4+catstart%!12:B%=catstart%!20:
  1037. snddata%
  1038. hour% 
  1039. "Hourglass_Off"
  1040. "OS_Claim",16,play,scs
  1041. *fx 14,2
  1042. *fx 14,4
  1043. *fx 14,10
  1044. Stop(
  1045. " (";
  1046. ;")":
  1047. !rn%=fchunk%*fpf
  1048. paused !mute=!mute 
  1049. muted% !mute=!mute 
  1050. startat% 
  1051. video 
  1052. playfor% !mute=!mute 
  1053.  32+2
  1054. tickinit
  1055. snd%=1 
  1056.  snd%=2 
  1057. A%=2:B%=mute:
  1058. sndplay%
  1059. maxfile>fchunk%+
  1060. twobuf% !ent=catstart%+12+12*
  1061. twobuf%:
  1062.  readf%
  1063. loop% 
  1064. loop%-=1
  1065.  loop%
  1066. loop%-=1
  1067. !ent=cat%:
  1068.  readf%
  1069. ?mute=?mute 
  1070. ?mute 
  1071.  ?mute 
  1072. Stop("")
  1073. Stop(a$)
  1074. *fx 13,2
  1075. *fx 13,4
  1076. *fx 13,10
  1077. *fx 21
  1078. *fx 21,9
  1079. "OS_Release",16,play,scs
  1080. "OS_ReleaseDeviceVector",6,tick,100
  1081. #file%
  1082. snd%=1 
  1083.  snd%=2 
  1084. t$!sndcopy=0:sndcopy!8=0:
  1085. sndstop%
  1086. "Set ARMovie$Sound "+
  1087. (((!mute 
  1088. 2)>>1)
  1089. video 
  1090. x7x1%=(((plx%
  1091. mask%)<<pixshift) 
  1092. 4)<<nx:y1%=ply%<<ny
  1093. y;x2%=x1%+(shapex%*magx%<<nx):y2%=y1%+(shapey%*magy%<<ny)
  1094. "Set ARMovie$Return "+
  1095. x1%+" "+
  1096. y1%+" "+
  1097. x2%+" "+
  1098. Capture
  1099. "Unset ARMovie$Return"
  1100. !mute 
  1101. 16 clear%=0
  1102. clear%
  1103. video>0 
  1104. "XWimp_Initialise",200,&4b534154,"Tidying..." 
  1105. "XWimp_ForceRedraw",-1,x1%,y1%,x2%,y2%
  1106. "XWimp_CloseDown",r0,!bb%
  1107. "Set ARMovie$Time "+
  1108. (!rn%/origfps*100)
  1109. "Set ARMovie$Pause "+
  1110. (!mute 
  1111. a$<>"" 
  1112. "Set ARMovie$ReturnCode "+a$ 
  1113. "Unset ARMovie$ReturnCode"
  1114. checkandload
  1115. "ColourTrans_ReadPalette",-1,-1,p%,256*4
  1116. 255*4
  1117. 4:p%!I%=(p%!I%>>>8)
  1118. &F8F8F8:
  1119. "Load <ARMovie$Dir>.MovingLine.8DefCol "+
  1120. ~(p%+&400)
  1121. 4J%=p%+&400:F%=
  1122. 255*4
  1123. p%!I%<>J%!I% F%=
  1124. "Load <ARMovie$Dir>.MovingLine.8"+f$+"11 "+
  1125. ~p%:doneload%=
  1126. "<ARMovie$Dir>.MovingLine.8ColPal"
  1127. "Load <ARMovie$Dir>.MovingLine.8ColPal "+
  1128. ~(p%+&400)
  1129. J%=p%+&400
  1130. p%+&400+R%-1
  1131. 255*4
  1132. p%!I%<>J%!I% F%=
  1133. "Load <ARMovie$Dir>.MovingLine.8"+f$+"11c"+
  1134. ((J%-p%)
  1135. &400),2)+" "+
  1136. ~p%:doneload%=
  1137. zerohalftable
  1138. UP%=code%:[OPT0:LDR R2,[R0]:BIC r2,r2,#&ff0000:BIC r2,r2,#&ff000000:STR r2,[r0],#4
  1139. )SUBS r1,r1,#1:BNE code%:MOVS pc,r14:]
  1140. A%=p%:B%=32768:
  1141. code%
  1142. modeblk(S%)
  1143. $S%,"X") 
  1144. !B%=1:B%!4=
  1145. $(S%+
  1146. $S%,"X"))
  1147. B%!8=
  1148. $(S%+
  1149. $S%,"Y"))
  1150. B%!12=4:
  1151. $S%,"C2") B%!12=0
  1152. $S%,"C4") B%!12=1
  1153. $S%,"C16") B%!12=2
  1154. $S%,"C256") B%!12=3
  1155. $S%,"C32T") 
  1156. $S%,"C32K") B%!12=4
  1157. $S%,"C16M") B%!12=5
  1158. .B%!16=-1:
  1159. $S%,"F") B%!16=
  1160. $(S%+
  1161. $S%,"F"))
  1162. =I%=20:
  1163. $S%,"EX") B%!20=4:B%!24=
  1164. $(S%+
  1165. $S%,"EX")+1):I%=28
  1166. $S%,"EY") B%!I%=5:B%!(I%+4)=
  1167. $(S%+
  1168. $S%,"EY")+1):I%+=8
  1169. B%!I%=-1
  1170. loadshape(A$,
  1171.  shap%)
  1172. shape%=
  1173. shape%=0 
  1174. A$,1)="""" shape%=
  1175. ("""<ARMovie$Dir>.Shapes."+
  1176. A$,2)) 
  1177. shape%=
  1178. ("<ARMovie$Dir>.Shapes."+A$)
  1179. shape% 
  1180. #shape%)="ARMOVIE SHAPE 1" 
  1181. #shape% 
  1182. :lin$=
  1183. #shape%:shapex%=
  1184. lin$:shapey%=
  1185. lin$,
  1186. lin$," "))
  1187. Eshapeno%=
  1188. #shape%-
  1189. #shape%:
  1190. +shapeno%+16384>
  1191. +shapeno%+16384
  1192.  shap% shapeno%+3+3*4
  1193. 12,4,shape%,shap%+12,shapeno%
  1194. #shape%
  1195. shap%!(shapeno%+12)=-1
  1196. 3!shap%=shapeno%:shap%!4=shapex%:shap%!8=shapey%
  1197. #shape%:shape%=0
  1198. scanargs
  1199.  ?arg%<>13
  1200. ?arg%=
  1201. ?arg%=
  1202. readbutton(px,py,pw,ph)
  1203. ?arg%=
  1204. ?arg%=
  1205. readbutton(ex,ey,ew,eh)
  1206. ?arg%=
  1207. ?arg%=
  1208. readbutton(cx,cy,cw,ch)
  1209. ?arg%=
  1210. ?arg%=
  1211. readbutton(sx,sy,sw,sh)
  1212. ?arg%=
  1213. ?arg%=
  1214. readbutton(fx,fy,fw,fh)
  1215. ?arg%=
  1216. ?arg%=
  1217. readbutton(hx,hy,hw,hh)
  1218. ?arg%=
  1219. ?arg%=
  1220. readbutton(qx,qy,qw,qh)
  1221. ?arg%=
  1222. ?arg%=
  1223. readbutton(lx,ly,lw,lh)
  1224. ?arg%=
  1225. ?arg%=
  1226. readbutton(mx,my,mw,mh)
  1227. Head(9))="-NOADJUST":butadj%=
  1228. :arg%+=9:
  1229. skipspace
  1230. Head(8))="-EXPLODE":explode%=
  1231. :arg%+=8:
  1232. skipspace:L%=arg%:
  1233. skiptospace
  1234. 5Z%=?arg%:?arg%=13:expdir$=$L%:?arg%=Z%:
  1235. skipspace
  1236. Head(8))="-NOERROR":noerror%=
  1237. :arg%+=8:
  1238. skipspace
  1239. Head(8))="-PLAYFOR":arg%+=8:
  1240. skipspace:playfor%=
  1241. Head(20):
  1242. skippast
  1243. Head(8))="-STARTAT":arg%+=8:
  1244. skipspace:startat%=
  1245. Head(20):
  1246. skippast
  1247. Head(7))="-FOLLOW":arg%+=7:
  1248. skipspace:L%=arg%:
  1249. skiptospace
  1250. IZ%=?arg%:?arg%=13:A$=$L%:?arg%=Z%:
  1251. skipspace:trajec%=
  1252. trajec%=0 
  1253. A$,1)="""" trajec%=
  1254. ("""<ARMovie$Dir>.Trajectory."+
  1255. A$,2)) 
  1256. trajec%=
  1257. ("<ARMovie$Dir>.Trajectory."+A$)
  1258. trajec% 
  1259. #trajec%)="ARMOVIE TRAJECTORY 1" 
  1260. #trajec% 
  1261. @trajrate=
  1262. #trajec%:
  1263. A$,""",") 
  1264. trajrate=
  1265. A$,""",")+2)
  1266. trajshapes%=
  1267. #trajec%
  1268. trajshapes% 
  1269.  trajshap% 4*trajshapes%-1
  1270. 4*trajshapes%-1
  1271. loadshape(
  1272. #trajec%,trajshap%!I%):
  1273. shape%=0 trajshapes%=0
  1274. trajshapes%=0 shape%=0
  1275. trajsteps%=
  1276. #trajec%
  1277. +trajsteps%*8+16384>
  1278. +trajsteps%*8+16384
  1279.  traj% trajsteps%*8-1
  1280. I%=traj%
  1281. traj%+8*trajsteps%-1
  1282. 6lin$=
  1283. #trajec%:!I%=
  1284. lin$:I%!2=
  1285. lin$,
  1286. lin$,",")+1)
  1287. lin$,":"):
  1288. C% C%=
  1289. lin$,C%+1)
  1290. lin$,";"):
  1291. D% D%=
  1292. lin$,D%+1) 
  1293. I%!4=C% 
  1294.  D%<<8
  1295. #trajec%
  1296. #trajec%:trajec%=0
  1297. Head(7))="-NOHOUR":hour%=
  1298. :arg%+=7:
  1299. skipspace
  1300. Head(7))="-NOMENU":butmenu%=
  1301. :arg%+=7:
  1302. skipspace
  1303. Head(7))="-PAUSED":paused=
  1304. :arg%+=7:
  1305. skipspace
  1306. Head(6))="-LEAVE":clear%=
  1307. :arg%+=6:
  1308. skipspace
  1309. Head(6))="-MOUSE":arg%+=6:
  1310. skipspace:L%=arg%:
  1311. skiptospace
  1312. 5Z%=?arg%:?arg%=13:mouseuser%=
  1313. mouseuser%=0 
  1314. #I%+16384>
  1315. #I%+16384
  1316.  mouseuser% 
  1317. #I%+15:mouseuser%=mouseuser%+15
  1318. 12,4,I%,mouseuser%,
  1319. ?arg%=Z%:
  1320. skipspace
  1321. Head(6))="-QUIET":quiet%=
  1322. :arg%+=6:
  1323. skipspace
  1324. Head(6))="-PAINT":arg%+=6:
  1325. skipspace:L%=arg%:
  1326. skiptospace
  1327. 5Z%=?arg%:?arg%=13:paintuser%=
  1328. paintuser%=0 
  1329. #I%+16384>
  1330. #I%+16384
  1331.  paintuser% 
  1332. #I%+15:paintuser%=paintuser%+15
  1333. 12,4,I%,paintuser%,
  1334. ?arg%=Z%:
  1335. skipspace
  1336. Head(6))="-SMALL":small%=
  1337. :arg%+=6:
  1338. skipspace
  1339. Head(6))="-SPEED":arg%+=6:
  1340. skipspace:speed=
  1341. Head(20):
  1342. skippast
  1343. Head(6))="-SHAPE":arg%+=6:
  1344. skipspace:L%=arg%:
  1345. skiptospace
  1346. EZ%=?arg%:?arg%=13:A$=$L%:?arg%=Z%:
  1347. skipspace:
  1348. loadshape(A$,shap%)
  1349. Head(6))="-TRACK":arg%+=6:
  1350. skipspace:track%=
  1351. Head(20):
  1352. skippast
  1353. Head(5))="-LOOP":loop%=
  1354. :arg%+=5:
  1355. skipspace:
  1356. Head(20) loop%=
  1357. Head(20):
  1358. skippast
  1359. Head(5))="-MODE":arg%+=5:
  1360. skipspace:L%=arg%:
  1361. skiptospace
  1362. TZ%=?arg%:?arg%=13:$code%=
  1363. uc($L%):?arg%=Z%:
  1364. skipspace:forcemode%=
  1365. modeblk(code%)
  1366. Head(5))="-MUTE":muted%=
  1367. :arg%+=5:
  1368. skipspace
  1369. Head(4))="-BIG":big%=
  1370. :arg%+=4:
  1371. skipspace
  1372. Head(3))="-AT":arg%+=3:
  1373. skipspace:atx%=
  1374. Head(20):
  1375. skiptocomma:aty%=
  1376. Head(20):
  1377. skippast
  1378. skippast
  1379. skiptospace 
  1380. ?arg%<>32
  1381. ?arg%<>13:arg%+=1:
  1382. skipspace 
  1383. ?arg%=32 arg%+=1:
  1384. skippast 
  1385. skiptospace:
  1386. skipspace:
  1387. skiptocomma
  1388. ?arg%<>
  1389. ?arg%<>13:arg%+=1:
  1390. ?arg%=
  1391. "," arg%+=1
  1392. Head(N%)
  1393. a$,Z%
  1394. #-Z%=arg%?N%:arg%?N%=13:a$=$arg%:arg%?N%=Z%
  1395. Capture 
  1396. !mute 
  1397. =" C" 
  1398. readbutton(
  1399. '=arg%+=1:
  1400. skipspace:x=
  1401. Head(20):
  1402. skiptocomma:y=
  1403. Head(20)
  1404. (Bw=32:h=32:Z%=
  1405. Head(20),","):
  1406. Z%<>0 
  1407. Head(40)+" "," ") 
  1408. arg%+=Z%:w=
  1409. Head(20):h=w
  1410. *CZ%=
  1411. Head(20),","):
  1412. Z%<>0 
  1413. Head(40)+" "," ") h=
  1414. Head(20)
  1415. skiptospace:
  1416. skipspace
  1417.  px=0 
  1418. py=0 
  1419. pw=32767 
  1420. ph=32767 pw=0:ph=0
  1421. a(j$,I%)
  1422. I%>1 j$=
  1423. j$,"|"+
  1424. I%+2)
  1425. j$,"|") j$=
  1426. j$,"|")-1)
  1427. maketable(size%)
  1428. P%=code%:F=1<<16
  1429. [OPT 0
  1430. .inner
  1431. ldr r0,[r9]
  1432. ldr r0,[r0] ;z%
  1433. ldr r1,[r9,#8] ;r%()
  1434. ldr r2,[r9,#16] ;a%()
  1435. ldr r3,[r9,#24]
  1436. ldr r3,[r3] ;Z%
  1437. mov r4,#0
  1438. >    .loop
  1439. ldr r5,[r1,r4,lsl #2]
  1440. add r5,r5,r0
  1441. mov r5,r5,lsr #16
  1442. ldr r5,[r2,r5,lsl #2]
  1443.  size% 
  1444.  1:[OPT 0
  1445. strb r5,[r3],#1
  1446.  2:[OPT 0
  1447. strb r5,[r3],#1
  1448. mov r5,r5,lsr #8
  1449. strb r5,[r3],#1
  1450.  4:[OPT 0
  1451. str r5,[r3],#4
  1452. [OPT 0
  1453. add r4,r4,#1
  1454. cmp r4,#32
  1455. bcc loop
  1456. movs pc,r14
  1457.  inputbpp 
  1458. f$="yuv" 
  1459. 31:r%(Y%)=Y%/31*num%*F:
  1460. :z%=0
  1461. 31:u%=p%+(V%<<10)*size%:
  1462. 31:Z%=u%+(U%<<5)*size%
  1463. inner,Z%,a%(0),r%(0),z%
  1464. _0rwt%=.299/31*F:gwt%=.587/31*F:bwt%=.114/31*F
  1465. 31:r%(R%)=R%*num%*rwt%:
  1466. 31:u%=p%+(B%<<10)*size%:y%=B%*num%*bwt%:
  1467. 31:Z%=u%+(G%<<5)*size%:z%=y%+G%*gwt%*num%
  1468. inner,Z%,a%(0),r%(0),z%
  1469.  size% 
  1470. 255:p%?Y%=a%(Y%/255*num%+.5):
  1471. 255:V%=a%(Y%/255*num%+.5):p%?(Y%<<1)=V%:p%?(Y%*2+1)=V%>>8:
  1472. 255:p%!(Y%<<2)=a%(Y%/255*num%+.5):
  1473. dither2(n%,a,b,sh)
  1474. a%(n%)=a 
  1475.  a<<sh
  1476. a%(n%+1)=a 
  1477.  b<<sh
  1478. dither4(n%,a,b,sh)
  1479. u,a%(n%)=a 
  1480.  a<<sh 
  1481.  a<<(sh*2) 
  1482.  a<<(sh*3)
  1483. v.a%(n%+1)=b 
  1484.  a<<sh 
  1485.  a<<(sh*2) 
  1486.  a<<(sh*3)
  1487. w.a%(n%+2)=b 
  1488.  a<<sh 
  1489.  a<<(sh*2) 
  1490.  b<<(sh*3)
  1491. x.a%(n%+3)=b 
  1492.  b<<sh 
  1493.  b<<(sh*2) 
  1494.  a<<(sh*3)
  1495. uc(a$)
  1496. Z%,z$,b$
  1497. a$,Z%,1)
  1498. z$>="a"
  1499. z$<="z" z$=
  1500. z$-32)
  1501. b$+=z$:
  1502. [OPTZ%
  1503. MOV R0,R0
  1504. plook(rdest,rsource,rbase)
  1505. shift=-1 
  1506. [OPT Z%
  1507. MOV rdest,rsource
  1508. shift=-2 
  1509. [OPT Z%
  1510. R rdest,rsource,rsource,LSL #16
  1511. shift 
  1512. [OPTZ%
  1513. (LDR rdest,[rbase,rsource,LSL #shift]
  1514. [OPTZ%
  1515. LDRB rdest,[rbase,rsource]
  1516. addmacro(dest%,src%,value%)
  1517.  count%,val1%
  1518. immediate(value%) 
  1519. [OPTZ%
  1520. ADD dest%,src%,#value%
  1521. count%=0
  1522.  ((value%>>>count%) 
  1523.  3)=0
  1524. count%+=2
  1525.  val1%=value% 
  1526.  (&FF<<count%)
  1527. [OPTZ%
  1528. ADD dest%,src%,#val1%
  1529. 2value%=
  1530. addmacro(dest%,dest%,value% 
  1531.  val1%)
  1532. immediate(A%)
  1533.  count%
  1534. count%=0
  1535.  count%<=30
  1536.  (((A%<<count%)+(A%>>>(32-count%))) 
  1537.  &FF)=0 
  1538. count%+=2
  1539. cant(r$)
  1540. lookup2("E06",A$,r$)
  1541. d12x2y
  1542. [OPTZ%
  1543. LDMIA r0 !,{r7,r8,r9,r10}
  1544.  r1,r7,#3:
  1545.  r4,r7,#&c:MOV r4,r4,LSR #2
  1546.  r7,r8,#3:
  1547. R r1,r1,r7,LSL #2:
  1548.  r7,r8,#&c:
  1549. R r4,r4,r7
  1550.  r7,r9,#3:
  1551. R r1,r1,r7,LSL #4:
  1552.  r7,r9,#&c:
  1553. R r4,r4,r7,LSL #2
  1554.  r7,r10,#3:
  1555. R r1,r1,r7,LSL #6:
  1556.  r7,r10,#&c:
  1557. R r4,r4,r7,LSL #4
  1558. STRB r1,[r2],#1
  1559. STRB r4,[r11],#1
  1560. LDMIA r0 !,{r7,r8,r9,r10}
  1561.  r1,r7,#3:
  1562.  r4,r7,#&c:MOV r4,r4,LSR #2
  1563.  r7,r8,#3:
  1564. R r1,r1,r7,LSL #2:
  1565.  r7,r8,#&c:
  1566. R r4,r4,r7
  1567.  r7,r9,#3:
  1568. R r1,r1,r7,LSL #4:
  1569.  r7,r9,#&c:
  1570. R r4,r4,r7,LSL #2
  1571.  r7,r10,#3:
  1572. R r1,r1,r7,LSL #6:
  1573.  r7,r10,#&c:
  1574. R r4,r4,r7,LSL #4
  1575. STRB r1,[r2],#1
  1576. STRB r4,[r11],#1
  1577. d12x1y
  1578. [OPTZ%
  1579. )LDMIA r0 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  1580. R r1,r1,r4,LSL #2:
  1581. R r1,r1,r5,LSL #4:
  1582. R r1,r1,r6,LSL #6
  1583. STRB r1,[r11],#1
  1584. R r7,r7,r8,LSL #2:
  1585. R r7,r7,r9,LSL #4:
  1586. R r7,r7,r10,LSL #6
  1587. STRB r7,[r11],#1
  1588. d22x2y
  1589. [OPTZ%
  1590. LDMIA r0 !,{r7,r8,r9,r10}
  1591.  r1,r7,#15:
  1592.  r4,r7,#&f0:MOV r4,r4,LSR #4
  1593.  r7,r8,#15:
  1594. R r1,r1,r7,LSL #4:
  1595.  r7,r8,#&f0:
  1596. R r4,r4,r7
  1597.  r7,r9,#15:
  1598. R r1,r1,r7,LSL #8:
  1599.  r7,r9,#&f0:
  1600. R r4,r4,r7,LSL #4
  1601.  r7,r10,#15:
  1602. R r1,r1,r7,LSL #12:
  1603.  r7,r10,#&f0:
  1604. R r4,r4,r7,LSL #8
  1605. LDMIA r0 !,{r7,r8,r9,r10}
  1606.  r5,r7,#15:
  1607. R r1,r1,r5,LSL #16:
  1608.  r5,r7,#&f0:
  1609. R r4,r4,r5,LSL #12
  1610.  r7,r8,#15:
  1611. R r1,r1,r7,LSL #20:
  1612.  r7,r8,#&f0:
  1613. R r4,r4,r7,LSL #16
  1614.  r7,r9,#15:
  1615. R r1,r1,r7,LSL #24:
  1616.  r7,r9,#&f0:
  1617. R r4,r4,r7,LSL #20
  1618.  r7,r10,#15:
  1619. R r1,r1,r7,LSL #28:
  1620.  r7,r10,#&f0:
  1621. R r4,r4,r7,LSL #24
  1622. STMIA r2 !,{r1}
  1623. STMIA r11 !,{r4}
  1624. d22x1y
  1625. [OPTZ%
  1626. )LDMIA r0 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  1627. R r1,r1,r4,LSL #4
  1628. R r1,r1,r5,LSL #8
  1629. R r1,r1,r6,LSL #12
  1630. R r1,r1,r7,LSL #16
  1631. R r1,r1,r8,LSL #20
  1632. R r1,r1,r9,LSL #24
  1633. R r1,r1,r10,LSL #28
  1634. STMIA r11 !,{r1}
  1635. d21x1y
  1636. [OPTZ%
  1637. )LDMIA r0 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  1638. R r1,r1,r4,LSL #2:
  1639. R r1,r1,r5,LSL #4:
  1640. R r1,r1,r6,LSL #6
  1641. STRB r1,[r11],#1
  1642. R r7,r7,r8,LSL #2:
  1643. R r7,r7,r9,LSL #4:
  1644. R r7,r7,r10,LSL #6
  1645. STRB r7,[r11],#1
  1646. d42x2y
  1647. [OPTZ%
  1648. LDMIA r0 !,{r7,r8,r9,r10}
  1649.  r1,r7,#255:
  1650.  r4,r7,#&ff00:MOV r4,r4,LSR #8
  1651.  r7,r8,#255:
  1652. R r1,r1,r7,LSL #8:
  1653.  r7,r8,#&ff00:
  1654. R r4,r4,r7
  1655.  r7,r9,#255:
  1656. R r1,r1,r7,LSL #16:
  1657.  r7,r9,#&ff00:
  1658. R r4,r4,r7,LSL #8
  1659.  r7,r10,#255:
  1660. R r1,r1,r7,LSL #24:
  1661.  r7,r10,#&ff00:
  1662. R r4,r4,r7,LSL #16
  1663. LDMIA r0 !,{r7,r8,r9,r10}
  1664.  r5,r7,#255:
  1665.  r6,r7,#&ff00:MOV r6,r6,LSR #8
  1666.  r7,r8,#255:
  1667. R r5,r5,r7,LSL #8:
  1668.  r7,r8,#&ff00:
  1669. R r6,r6,r7
  1670.  r7,r9,#255:
  1671. R r5,r5,r7,LSL #16:
  1672.  r7,r9,#&ff00:
  1673. R r6,r6,r7,LSL #8
  1674.  r7,r10,#255:
  1675. R r5,r5,r7,LSL #24:
  1676.  r7,r10,#&ff00:
  1677. R r6,r6,r7,LSL #16
  1678. STMIA r2 !,{r1,r5}
  1679. STMIA r11 !,{r4,r6}
  1680. d42x1y
  1681. [OPTZ%
  1682. )LDMIA r0 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  1683. R r1,r1,r4,LSL #8:
  1684. R r1,r1,r5,LSL #16:
  1685. R r1,r1,r6,LSL #24
  1686. R r7,r7,r8,LSL #8:
  1687. R r7,r7,r9,LSL #16:
  1688. R r7,r7,r10,LSL #24
  1689. STMIA r11 !,{r1,r7}
  1690. d82x2yintxinty
  1691. [OPTZ%
  1692. ADD r1,r0,#sx%*4
  1693. LDMIA r0 !,{r8,r9,r10} 
  1694. LDMIA r1,{r5,r6,r7} 
  1695.  r5,r5,#31 
  1696.  r6,r6,#31 
  1697.  r2,r8,#31 
  1698. ADD r5,r5,r2 
  1699. LDRB r1,[r12,r8,LSL #2] 
  1700. BIC r8,r8,#31 
  1701.  r4,r9,#31 
  1702. ADD r2,r2,r4 
  1703. R r2,r8,r2,LSR #1
  1704. LDR r2,[r12,r2,LSL #2] 
  1705.  r2,r2,#&ff00 
  1706. R r1,r1,r2 
  1707. ADD r6,r6,r4 
  1708. ADD r2,r6,r5 
  1709. R r5,r8,r5,LSR #1
  1710. R r2,r8,r2,LSR #2 
  1711. LDR r5,[r12,r5,LSL #2] 
  1712. LDR r2,[r12,r2,LSL #2] 
  1713. MOV r5,r5,LSR #24
  1714.  r2,r2,#&ff0000
  1715. R r5,r5,r2,LSR #8 
  1716.  r2,r10,#31 
  1717. ADD r4,r4,r2 
  1718. LDRB r8,[r12,r9,LSL #2] 
  1719. R r1,r1,r8,LSL #16 
  1720. BIC r9,r9,#31 
  1721. R r4,r9,r4,LSR #1
  1722. LDR r4,[r12,r4,LSL #2] 
  1723.  r4,r4,#&ff00
  1724. R r1,r1,r4,LSL #16 
  1725.  r7,r7,#31 
  1726. ADD r8,r7,r2 
  1727. ADD r8,r8,r6 
  1728. R r6,r9,r6,LSR #1
  1729. R r8,r9,r8,LSR #2
  1730. LDR r6,[r12,r6,LSL #2] 
  1731. LDR r8,[r12,r8,LSL #2] 
  1732. MOV r6,r6,LSR #24 
  1733.  r8,r8,#&ff0000
  1734. R r5,r5,r6,LSL #16
  1735. R r5,r5,r8,LSL #8
  1736. addmacro(8,11,rowbytes%)
  1737. STMIA r11 !,{r1} 
  1738. STMIA r8 !,{r5} 
  1739. BIC r8,r10,#31 
  1740. LDRB r1,[r12,r10,LSL #2] 
  1741. ADD r5,r2,r7 
  1742. ADD r6,r0,#sx%*4
  1743. LDMIA r0,{r9,r10} 
  1744. LDMIA r6,{r6,r7} 
  1745. ADD r0,r0,#4
  1746.  r6,r6,#31 
  1747.  r4,r9,#31 
  1748. ADD r2,r2,r4 
  1749. R r2,r8,r2,LSR #1
  1750. LDR r2,[r12,r2,LSL #2] 
  1751.  r2,r2,#&ff00
  1752. R r1,r1,r2 
  1753. ADD r6,r6,r4 
  1754. ADD r2,r6,r5 
  1755. R r5,r8,r5,LSR #1
  1756. R r2,r8,r2,LSR #2 
  1757. LDR r5,[r12,r5,LSL #2] 
  1758. LDR r2,[r12,r2,LSL #2] 
  1759. MOV r5,r5,LSR #24 
  1760.  r2,r2,#&ff0000
  1761. R r5,r5,r2,LSR #8 
  1762.  r2,r10,#31 
  1763. ADD r4,r4,r2 
  1764. LDRB r8,[r12,r9,LSL #2] 
  1765. R r1,r1,r8,LSL #16 
  1766. BIC r9,r9,#31 
  1767. R r4,r9,r4,LSR #1
  1768. LDR r4,[r12,r4,LSL #2] 
  1769.  r4,r4,#&ff00
  1770. R r1,r1,r4,LSL #16 
  1771.  r7,r7,#31 
  1772. ADD r2,r7,r2 
  1773. ADD r2,r2,r6 
  1774. R r6,r9,r6,LSR #1
  1775. R r2,r9,r2,LSR #2
  1776. LDR r6,[r12,r6,LSL #2] 
  1777. LDR r2,[r12,r2,LSL #2] 
  1778. MOV r6,r6,LSR #24 
  1779.  r2,r2,#&ff0000
  1780. R r5,r5,r6,LSL #16
  1781. R r5,r5,r2,LSL #8
  1782. addmacro(2,11,rowbytes%)
  1783. STMIA r11 !,{r1} 
  1784. STMIA r2 !,{r5} 
  1785. incno%=4
  1786. d82x2y
  1787. [OPTZ%
  1788. y)LDMIA r0 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  1789.  r1,r1,r4,LSL #16:
  1790.  r4,r4,r1,LSR #16:
  1791.  r1,r1,r4,LSL #16
  1792.  r5,r5,r6,LSL #16:
  1793.  r6,r6,r5,LSR #16:
  1794.  r5,r5,r6,LSL #16
  1795.  r7,r7,r8,LSL #16:
  1796.  r8,r8,r7,LSR #16:
  1797.  r7,r7,r8,LSL #16
  1798.  r9,r9,r10,LSL #16:
  1799.  r10,r10,r9,LSR #16:
  1800.  r9,r9,r10,LSL #16
  1801. STMIA r2 !,{r1,r5,r7,r9}
  1802. STMIA r11 !,{r4,r6,r8,r10}
  1803. d82x4y
  1804. [OPT Z%
  1805. )LDMIA r0 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  1806.  r1,r1,r4,LSL #16:
  1807.  r4,r4,r1,LSR #16:
  1808.  r1,r1,r4,LSL #16
  1809.  r5,r5,r6,LSL #16:
  1810.  r6,r6,r5,LSR #16:
  1811.  r5,r5,r6,LSL #16
  1812.  r7,r7,r8,LSL #16:
  1813.  r8,r8,r7,LSR #16:
  1814.  r7,r7,r8,LSL #16
  1815.  r9,r9,r10,LSL #16:
  1816.  r10,r10,r9,LSR #16:
  1817.  r9,r9,r10,LSL #16
  1818. slow% 
  1819. [OPTZ%
  1820. addmacro(2,11,rowbytes%*2)
  1821. STMIA r2,{r4,r6,r8,r10}
  1822. STMIA r11 !,{r1,r5,r7,r9}
  1823. [OPTZ%
  1824. addmacro(2,11,rowbytes%*2)
  1825. STMIA r2,{r4,r6,r8,r10}
  1826. addmacro(2,2,rowbytes%)
  1827. STMIA r2,{r4,r6,r8,r10}
  1828. addmacro(2,11,rowbytes%)
  1829. STMIA r2,{r1,r5,r7,r9}
  1830. STMIA r11 !,{r1,r5,r7,r9}
  1831. d81x2y
  1832. szmul%=1 
  1833. [OPT Z%
  1834. LDMIA r0 !,{r1,r4,r5,r6}
  1835.  r7,r1,r4,LSL #16:
  1836.  r8,r4,r7,LSR #16:
  1837.  r7,r7,r8,LSL #16
  1838. $MOV r10,#&ff:
  1839. R r10,r10,#&ff0000
  1840.  r1,r7,r10:
  1841.  r4,r8,r10:
  1842. R r1,r1,r4,LSL #8
  1843.  r4,r7,r10,LSL #8:
  1844.  r8,r8,r10,LSL #8:
  1845. R r4,r8,r4,LSR #8
  1846.  r7,r5,r6,LSL #16:
  1847.  r8,r6,r7,LSR #16:
  1848.  r7,r7,r8,LSL #16
  1849.  r5,r7,r10:
  1850.  r6,r8,r10:
  1851. R r5,r5,r6,LSL #8
  1852.  r6,r7,r10,LSL #8:
  1853.  r8,r8,r10,LSL #8:
  1854. R r6,r8,r6,LSR #8
  1855. STMIA r2 !,{r4,r6}
  1856. STMIA r11 !,{r1,r5}
  1857. [OPT Z%
  1858. )LDMIA r0 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  1859. R r1,r1,r5,LSL #16:
  1860. R r4,r4,r6,LSL #16
  1861.  r5,r4,r1,LSR #8:BIC r5,r5,#&ff00:
  1862.  r1,r1,r5,LSL #8:BIC r5,r5,#&ff000000:
  1863.  r4,r4,r5
  1864. R r7,r7,r9,LSL #16:
  1865. R r8,r8,r10,LSL #16
  1866.  r5,r8,r7,LSR #8:BIC r5,r5,#&ff00:
  1867.  r7,r7,r5,LSL #8:BIC r5,r5,#&ff000000:
  1868.  r8,r8,r5
  1869. STMIA r2 !,{r4,r8}
  1870. STMIA r11 !,{r1,r7}
  1871. d82x1y
  1872. [OPTZ%
  1873. )LDMIA r0 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  1874. R r1,r1,r4,LSL #16
  1875. R r5,r5,r6,LSL #16
  1876. R r7,r7,r8,LSL #16
  1877. R r9,r9,r10,LSL #16
  1878. STMIA r11 !,{r1,r5,r7,r9}
  1879. d81x1y
  1880. [OPTZ%
  1881. )LDMIA r0 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  1882. R r1,r1,r4,LSL #8:
  1883. R r1,r1,r5,LSL #16:
  1884. R r1,r1,r6,LSL #24
  1885. R r7,r7,r8,LSL #8:
  1886. R r7,r7,r9,LSL #16:
  1887. R r7,r7,r10,LSL #24
  1888. STMIA r11 !,{r1,r7}
  1889. d162x2yintxinty
  1890. [OPTZ%
  1891. LDMIA r0,{r1,r4,r5,r9,r12}
  1892. ADD r6,r1,r4 
  1893. R r6,r10,r6,LSR #1 
  1894.  r6,r6,r6,LSL #16
  1895. R r7,r1,r1,LSL #16
  1896. R r7,r6,r7,LSR #16 
  1897. ADD r6,r4,r5 
  1898. R r6,r10,r6,LSR #1
  1899.  r6,r6,r6,LSL #16
  1900. R r8,r4,r4,LSL #16
  1901. R r8,r6,r8,LSR #16
  1902. STMIA r11!,{r7,r8} 
  1903. ADD r6,r5,r9 
  1904. R r6,r10,r6,LSR #1 
  1905.  r6,r6,r6,LSL #16
  1906. R r7,r5,r5,LSL #16
  1907. R r7,r6,r7,LSR #16 
  1908. ADD r6,r9,r12 
  1909. R r6,r10,r6,LSR #1
  1910.  r6,r6,r6,LSL #16
  1911. R r8,r9,r9,LSL #16
  1912. R r8,r6,r8,LSR #16
  1913. STMIA r11!,{r7,r8} 
  1914. ADD r6,r0,#sx%*4
  1915. LDMIA r6!,{r7,r8}
  1916. ADD r1,r1,r7 
  1917. ADD r4,r4,r8 
  1918. LDMIA r6,{r6,r7,r8}
  1919. ADD r5,r5,r6 
  1920. ADD r9,r9,r7 
  1921. ADD r12,r12,r8 
  1922. ADD r6,r1,r4 
  1923. R r1,r10,r1,LSR #1 
  1924. R r6,r10,r6,LSR #2 
  1925.  r1,r1,r1,LSL #16
  1926.  r6,r6,r6,LSL #16
  1927. R r1,r6,r1,LSR #16 
  1928. ADD r6,r4,r5 
  1929. R r4,r10,r4,LSR #1 
  1930. R r6,r10,r6,LSR #2 
  1931.  r4,r4,r4,LSL #16
  1932.  r6,r6,r6,LSL #16
  1933. R r4,r6,r4,LSR #16 
  1934. ADD r6,r5,r9 
  1935. R r5,r10,r5,LSR #1 
  1936. R r6,r10,r6,LSR #2 
  1937.  r5,r5,r5,LSL #16
  1938.  r6,r6,r6,LSL #16
  1939. R r5,r6,r5,LSR #16 
  1940. ADD r6,r9,r12 
  1941. R r9,r10,r9,LSR #1 
  1942. R r6,r10,r6,LSR #2 
  1943.  r9,r9,r9,LSL #16
  1944.  r6,r6,r6,LSL #16
  1945. R r9,r6,r9,LSR #16 
  1946. STMIA r2!,{r1,r4,r5,r9}
  1947. ADD r0,r0,#4*4
  1948. incno%=4
  1949. d162x2yintx
  1950. [OPTZ%
  1951. !LDMIA r0!,{r1,r4,r5,r6,r7,r8}
  1952. ADD r9,r1,r4
  1953. R r9,r10,r9,LSR #1
  1954.  r9,r9,r9,LSL #16
  1955. R r1,r1,r1,LSL #16
  1956. R r1,r9,r1,LSR #16
  1957. ADD r9,r4,r5
  1958. R r9,r10,r9,LSR #1
  1959.  r9,r9,r9,LSL #16
  1960. R r4,r4,r4,LSL #16
  1961. R r4,r9,r4,LSR #16
  1962. ADD r9,r5,r6
  1963. R r9,r10,r9,LSR #1
  1964.  r9,r9,r9,LSL #16
  1965. R r5,r5,r5,LSL #16
  1966. R r5,r9,r5,LSR #16
  1967. ADD r9,r6,r7
  1968. R r9,r10,r9,LSR #1
  1969.  r9,r9,r9,LSL #16
  1970. R r6,r6,r6,LSL #16
  1971. R r6,r9,r6,LSR #16
  1972. STMIA r11 !,{r1,r4,r5,r6}
  1973. STMIA r2 !,{r1,r4,r5,r6}
  1974. ADD r9,r7,r8
  1975. R r9,r10,r9,LSR #1
  1976.  r9,r9,r9,LSL #16
  1977. R r7,r7,r7,LSL #16
  1978. R r1,r9,r7,LSR #16
  1979. LDMIA r0,{r5,r6,r7}
  1980. ADD r9,r8,r5
  1981. R r9,r10,r9,LSR #1
  1982.  r9,r9,r9,LSL #16
  1983. R r8,r8,r8,LSL #16
  1984. R r4,r9,r8,LSR #16
  1985. ADD r9,r5,r6
  1986. R r9,r10,r9,LSR #1
  1987.  r9,r9,r9,LSL #16
  1988. R r5,r5,r5,LSL #16
  1989. R r5,r9,r5,LSR #16
  1990. ADD r9,r6,r7
  1991. R r9,r10,r9,LSR #1
  1992.  r9,r9,r9,LSL #16
  1993. R r6,r6,r6,LSL #16
  1994. R r6,r9,r6,LSR #16
  1995. STMIA r11 !,{r1,r4,r5,r6}
  1996. STMIA r2 !,{r1,r4,r5,r6}
  1997. ADD r0,r0,#2*4
  1998. d162x2y
  1999. [OPTZ%
  2000. ;)LDMIA r0 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2001. <)STMIA r2 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2002. MOV r1,r1,ROR #16
  2003. MOV r4,r4,ROR #16
  2004. MOV r5,r5,ROR #16
  2005. MOV r6,r6,ROR #16
  2006. MOV r7,r7,ROR #16
  2007. MOV r8,r8,ROR #16
  2008. MOV r9,r9,ROR #16
  2009. MOV r10,r10,ROR #16
  2010. E*STMIA r11 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2011. d162x4yintxinty
  2012. [OPTZ%
  2013. LDMIA r0,{r1,r4,r5,r9,r12}
  2014. ADD r6,r1,r4 
  2015. R r6,r10,r6,LSR #1 
  2016.  r6,r6,r6,LSL #16
  2017. R r7,r1,r1,LSL #16
  2018. R r7,r6,r7,LSR #16 
  2019. ADD r6,r4,r5 
  2020. R r6,r10,r6,LSR #1
  2021.  r6,r6,r6,LSL #16
  2022. R r8,r4,r4,LSL #16
  2023. R r8,r6,r8,LSR #16
  2024. addmacro(2,11,rowbytes%)
  2025. STMIA r11!,{r7,r8} 
  2026. STMIA r2!,{r7,r8}
  2027. ADD r6,r5,r9 
  2028. R r6,r10,r6,LSR #1 
  2029.  r6,r6,r6,LSL #16
  2030. R r7,r5,r5,LSL #16
  2031. R r7,r6,r7,LSR #16 
  2032. ADD r6,r9,r12 
  2033. R r6,r10,r6,LSR #1
  2034.  r6,r6,r6,LSL #16
  2035. R r8,r9,r9,LSL #16
  2036. R r8,r6,r8,LSR #16
  2037. STMIA r11!,{r7,r8} 
  2038. STMIA r2!,{r7,r8}
  2039. SUB r2,r11,#4*4
  2040. ADD r6,r0,#sx%*4
  2041. LDMIA r6!,{r7,r8}
  2042. ADD r1,r1,r7 
  2043. ADD r4,r4,r8 
  2044. LDMIA r6,{r6,r7,r8}
  2045. ADD r5,r5,r6 
  2046. ADD r9,r9,r7 
  2047. ADD r12,r12,r8 
  2048. ADD r6,r1,r4 
  2049. R r1,r10,r1,LSR #1 
  2050. R r6,r10,r6,LSR #2 
  2051.  r1,r1,r1,LSL #16
  2052.  r6,r6,r6,LSL #16
  2053. R r1,r6,r1,LSR #16 
  2054. ADD r6,r4,r5 
  2055. R r4,r10,r4,LSR #1 
  2056. R r6,r10,r6,LSR #2 
  2057.  r4,r4,r4,LSL #16
  2058.  r6,r6,r6,LSL #16
  2059. R r4,r6,r4,LSR #16 
  2060. ADD r6,r5,r9 
  2061. R r5,r10,r5,LSR #1 
  2062. R r6,r10,r6,LSR #2 
  2063.  r5,r5,r5,LSL #16
  2064.  r6,r6,r6,LSL #16
  2065. R r5,r6,r5,LSR #16 
  2066. ADD r6,r9,r12 
  2067. R r9,r10,r9,LSR #1 
  2068. R r6,r10,r6,LSR #2 
  2069.  r9,r9,r9,LSL #16
  2070.  r6,r6,r6,LSL #16
  2071. R r9,r6,r9,LSR #16 
  2072. addmacro(2,2,rowbytes%*2)
  2073. STMIA r2,{r1,r4,r5,r9}
  2074. addmacro(2,2,rowbytes%)
  2075. STMIA r2,{r1,r4,r5,r9}
  2076. ADD r0,r0,#4*4
  2077. incno%=4
  2078. d162x4yintx
  2079. [OPTZ%
  2080. !LDMIA r0!,{r1,r4,r5,r6,r7,r8}
  2081. ADD r9,r1,r4
  2082. R r9,r10,r9,LSR #1
  2083.  r9,r9,r9,LSL #16
  2084. R r1,r1,r1,LSL #16
  2085. R r1,r9,r1,LSR #16
  2086. ADD r9,r4,r5
  2087. R r9,r10,r9,LSR #1
  2088.  r9,r9,r9,LSL #16
  2089. R r4,r4,r4,LSL #16
  2090. R r4,r9,r4,LSR #16
  2091. ADD r9,r5,r6
  2092. R r9,r10,r9,LSR #1
  2093.  r9,r9,r9,LSL #16
  2094. R r5,r5,r5,LSL #16
  2095. R r5,r9,r5,LSR #16
  2096. ADD r9,r6,r7
  2097. R r9,r10,r9,LSR #1
  2098.  r9,r9,r9,LSL #16
  2099. R r6,r6,r6,LSL #16
  2100. R r6,r9,r6,LSR #16
  2101. addmacro(2,11,rowbytes%)
  2102. STMIA r2,{r1,r4,r5,r6}
  2103. addmacro(2,2,rowbytes%)
  2104. STMIA r2,{r1,r4,r5,r6}
  2105. addmacro(2,2,rowbytes%)
  2106. STMIA r2,{r1,r4,r5,r6}
  2107. STMIA r11 !,{r1,r4,r5,r6}
  2108. ADD r9,r7,r8
  2109. R r9,r10,r9,LSR #1
  2110.  r9,r9,r9,LSL #16
  2111. R r7,r7,r7,LSL #16
  2112. R r1,r9,r7,LSR #16
  2113. LDMIA r0,{r5,r6,r7}
  2114. ADD r9,r8,r5
  2115. R r9,r10,r9,LSR #1
  2116.  r9,r9,r9,LSL #16
  2117. R r8,r8,r8,LSL #16
  2118. R r4,r9,r8,LSR #16
  2119. ADD r9,r5,r6
  2120. R r9,r10,r9,LSR #1
  2121.  r9,r9,r9,LSL #16
  2122. R r5,r5,r5,LSL #16
  2123. R r5,r9,r5,LSR #16
  2124. ADD r9,r6,r7
  2125. R r9,r10,r9,LSR #1
  2126.  r9,r9,r9,LSL #16
  2127. R r6,r6,r6,LSL #16
  2128. R r6,r9,r6,LSR #16
  2129. addmacro(2,11,rowbytes%)
  2130. STMIA r2,{r1,r4,r5,r6}
  2131. addmacro(2,2,rowbytes%)
  2132. STMIA r2,{r1,r4,r5,r6}
  2133. addmacro(2,2,rowbytes%)
  2134. STMIA r2,{r1,r4,r5,r6}
  2135. STMIA r11 !,{r1,r4,r5,r6}
  2136. ADD r0,r0,#2*4
  2137. d162x4y
  2138. [OPTZ%
  2139. )LDMIA r0 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2140. addmacro(2,11,rowbytes%*2)
  2141. 'STMIA r2,{r1,r4,r5,r6,r7,r8,r9,r10}
  2142. addmacro(2,2,rowbytes%)
  2143. 'STMIA r2,{r1,r4,r5,r6,r7,r8,r9,r10}
  2144. MOV r1,r1,ROR #16
  2145. MOV r4,r4,ROR #16
  2146. MOV r5,r5,ROR #16
  2147. MOV r6,r6,ROR #16
  2148. MOV r7,r7,ROR #16
  2149. MOV r8,r8,ROR #16
  2150. MOV r9,r9,ROR #16
  2151. MOV r10,r10,ROR #16
  2152. addmacro(2,11,rowbytes%)
  2153. 'STMIA r2,{r1,r4,r5,r6,r7,r8,r9,r10}
  2154. *STMIA r11 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2155. d161x2y
  2156. [OPTZ%
  2157. )LDMIA r0 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2158.  r1,r1,r4,LSL #16:
  2159.  r4,r4,r1,LSR #16:
  2160.  r1,r1,r4,LSL #16
  2161.  r5,r5,r6,LSL #16:
  2162.  r6,r6,r5,LSR #16:
  2163.  r5,r5,r6,LSL #16
  2164.  r7,r7,r8,LSL #16:
  2165.  r8,r8,r7,LSR #16:
  2166.  r7,r7,r8,LSL #16
  2167.  r9,r9,r10,LSL #16:
  2168.  r10,r10,r9,LSR #16:
  2169.  r9,r9,r10,LSL #16
  2170. STMIA r2 !,{r1,r5,r7,r9}
  2171. STMIA r11 !,{r4,r6,r8,r10}
  2172. d162x1yintx
  2173. [OPTZ%
  2174. !LDMIA r0!,{r1,r4,r5,r6,r7,r8}
  2175. ADD r9,r1,r4
  2176. R r9,r10,r9,LSR #1
  2177.  r9,r9,r9,LSL #16
  2178. R r1,r1,r1,LSL #16
  2179. R r1,r9,r1,LSR #16
  2180. ADD r9,r4,r5
  2181. R r9,r10,r9,LSR #1
  2182.  r9,r9,r9,LSL #16
  2183. R r4,r4,r4,LSL #16
  2184. R r4,r9,r4,LSR #16
  2185. ADD r9,r5,r6
  2186. R r9,r10,r9,LSR #1
  2187.  r9,r9,r9,LSL #16
  2188. R r5,r5,r5,LSL #16
  2189. R r5,r9,r5,LSR #16
  2190. ADD r9,r6,r7
  2191. R r9,r10,r9,LSR #1
  2192.  r9,r9,r9,LSL #16
  2193. R r6,r6,r6,LSL #16
  2194. R r6,r9,r6,LSR #16
  2195. STMIA r11 !,{r1,r4,r5,r6}
  2196. ADD r9,r7,r8
  2197. R r9,r10,r9,LSR #1
  2198.  r9,r9,r9,LSL #16
  2199. R r7,r7,r7,LSL #16
  2200. R r1,r9,r7,LSR #16
  2201. LDMIA r0,{r5,r6,r7}
  2202. ADD r9,r8,r5
  2203. R r9,r10,r9,LSR #1
  2204.  r9,r9,r9,LSL #16
  2205. R r8,r8,r8,LSL #16
  2206. R r4,r9,r8,LSR #16
  2207. ADD r9,r5,r6
  2208. R r9,r10,r9,LSR #1
  2209.  r9,r9,r9,LSL #16
  2210. R r5,r5,r5,LSL #16
  2211. R r5,r9,r5,LSR #16
  2212. ADD r9,r6,r7
  2213. R r9,r10,r9,LSR #1
  2214.  r9,r9,r9,LSL #16
  2215. R r6,r6,r6,LSL #16
  2216. R r6,r9,r6,LSR #16
  2217. STMIA r11 !,{r1,r4,r5,r6}
  2218. ADD r0,r0,#2*4
  2219. d162x1y
  2220. [OPTZ%
  2221. )LDMIA r0 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2222. *STMIA r11 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2223. d161x1y
  2224. szmul%=1 
  2225. [OPTZ%
  2226. LDMIA r0 !,{r1,r5,r7,r9}
  2227. STMIA r11 !,{r1,r5,r7,r9}
  2228. [OPTZ%
  2229. ()LDMIA r0 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2230. R r1,r1,r4,LSL #16
  2231. R r5,r5,r6,LSL #16
  2232. R r7,r7,r8,LSL #16
  2233. R r9,r9,r10,LSL #16
  2234. STMIA r11 !,{r1,r5,r7,r9}
  2235. d322x2yintxinty
  2236. [OPT Z%
  2237. ADD r9,r0,#sx%*4 
  2238. LDMIA r0!,{r1,r5,r7} 
  2239. ADD r4,r1,r5
  2240. MOV r4,r4,LSR #1 
  2241. ADD r6,r5,r7
  2242. MOV r6,r6,LSR #1 
  2243. 9!STMIA r11 !,{r1,r4,r5,r6,r7} 
  2244. LDMIA r9,{r4,r6,r8} 
  2245. ADD r8,r8,r7
  2246. MOV r8,r8,LSR #1 
  2247. ADD r1,r1,r4
  2248. MOV r1,r1,LSR #1 
  2249. ADD r5,r5,r6
  2250. MOV r5,r5,LSR #1 
  2251. BIC r4,r1,r10 
  2252. BIC r6,r5,r10 
  2253. ADD r4,r4,r6
  2254. MOV r4,r4,LSR #1 
  2255. BIC r9,r8,r10 
  2256. ADD r6,r6,r9
  2257. MOV r6,r6,LSR #1 
  2258. STMIA r2 !,{r1,r4,r5,r6,r8}
  2259. BIC r4,r8,r10 
  2260. ADD r8,r0,#sx%*4 
  2261. LDMIA r0,{r5,r9} 
  2262. ADD r1,r7,r5 
  2263. MOV r1,r1,LSR #1 
  2264. ADD r6,r5,r9
  2265. MOV r6,r6,LSR #1 
  2266. STMIA r11 !,{r1,r5,r6} 
  2267. ADD r0,r0,#4
  2268. LDMIA r8,{r6,r8} 
  2269. ADD r9,r8,r9
  2270. MOV r9,r9,LSR #1 
  2271. ADD r5,r5,r6
  2272. MOV r5,r5,LSR #1 
  2273. BIC r6,r5,r10 
  2274. ADD r4,r4,r6
  2275. MOV r4,r4,LSR #1 
  2276. BIC r9,r9,r10 
  2277. ADD r6,r6,r9
  2278. MOV r6,r6,LSR #1 
  2279. STMIA r2 !,{r4,r5,r6}
  2280. incno%=4
  2281. d322x2yintx
  2282. [OPT Z%
  2283. LDMIA r0,{r1,r5,r7,r9,r10}
  2284. ADD r4,r1,r5
  2285. MOV r4,r4,LSR #1
  2286. ADD r6,r5,r7
  2287. MOV r6,r6,LSR #1
  2288. ADD r8,r7,r9
  2289. MOV r8,r8,LSR #1
  2290. ADD r10,r10,r9
  2291. MOV r10,r10,LSR #1
  2292. l)STMIA r2 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2293. m*STMIA r11 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2294. ADD r0,r0,#4*4
  2295. LDMIA r0,{r1,r5,r7,r9,r10}
  2296. ADD r4,r1,r5
  2297. MOV r4,r4,LSR #1
  2298. ADD r6,r5,r7
  2299. MOV r6,r6,LSR #1
  2300. ADD r8,r7,r9
  2301. MOV r8,r8,LSR #1
  2302. ADD r10,r10,r9
  2303. MOV r10,r10,LSR #1
  2304. x)STMIA r2 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2305. y*STMIA r11 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2306. ADD r0,r0,#4*4
  2307. d322x2y
  2308. [OPT Z%
  2309. LDMIA r0 !,{r1,r5,r7,r9}
  2310. MOV r4,r1
  2311. MOV r6,r5
  2312. MOV r8,r7
  2313. MOV r10,r9
  2314. )STMIA r2 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2315. *STMIA r11 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2316. LDMIA r0 !,{r1,r5,r7,r9}
  2317. MOV r4,r1
  2318. MOV r6,r5
  2319. MOV r8,r7
  2320. MOV r10,r9
  2321. )STMIA r2 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2322. *STMIA r11 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2323. d322x4yintxinty
  2324. [OPT Z%
  2325. ADD r9,r0,#sx%*4 
  2326. LDMIA r0!,{r1,r5,r7} 
  2327. ADD r4,r1,r5
  2328. MOV r4,r4,LSR #1 
  2329. ADD r6,r5,r7
  2330. MOV r6,r6,LSR #1 
  2331. addmacro(2,11,rowbytes%)
  2332. STMIA r2,{r1,r4,r5,r6,r7}
  2333. !STMIA r11 !,{r1,r4,r5,r6,r7} 
  2334. LDMIA r9,{r4,r6,r8} 
  2335. ADD r8,r8,r7
  2336. MOV r8,r8,LSR #1 
  2337. ADD r1,r1,r4
  2338. MOV r1,r1,LSR #1 
  2339. ADD r5,r5,r6
  2340. MOV r5,r5,LSR #1 
  2341. BIC r4,r1,r10 
  2342. BIC r6,r5,r10 
  2343. ADD r4,r4,r6
  2344. MOV r4,r4,LSR #1 
  2345. BIC r9,r8,r10 
  2346. ADD r6,r6,r9
  2347. MOV r6,r6,LSR #1 
  2348. addmacro(2,2,rowbytes%)
  2349. STMIA r2,{r1,r4,r5,r6,r8}
  2350. addmacro(2,2,rowbytes%)
  2351. STMIA r2,{r1,r4,r5,r6,r8}
  2352. BIC r4,r8,r10 
  2353. ADD r8,r0,#sx%*4 
  2354. LDMIA r0,{r5,r9} 
  2355. ADD r1,r7,r5 
  2356. MOV r1,r1,LSR #1 
  2357. ADD r6,r5,r9
  2358. MOV r6,r6,LSR #1 
  2359. addmacro(2,11,rowbytes%)
  2360. STMIA r2,{r1,r5,r6}
  2361. STMIA r11 !,{r1,r5,r6} 
  2362. ADD r0,r0,#4
  2363. LDMIA r8,{r6,r8} 
  2364. ADD r9,r8,r9
  2365. MOV r9,r9,LSR #1 
  2366. ADD r5,r5,r6
  2367. MOV r5,r5,LSR #1 
  2368. BIC r6,r5,r10 
  2369. ADD r4,r4,r6
  2370. MOV r4,r4,LSR #1 
  2371. BIC r9,r9,r10 
  2372. ADD r6,r6,r9
  2373. MOV r6,r6,LSR #1 
  2374. addmacro(2,2,rowbytes%)
  2375. STMIA r2,{r4,r5,r6}
  2376. addmacro(2,2,rowbytes%)
  2377. STMIA r2,{r4,r5,r6}
  2378. incno%=4
  2379. d322x4yintx
  2380. [OPTZ%
  2381. LDMIA r0,{r1,r5,r7,r9,r10}
  2382. ADD r4,r1,r5
  2383. MOV r4,r4,LSR #1
  2384. ADD r6,r5,r7
  2385. MOV r6,r6,LSR #1
  2386. ADD r8,r7,r9
  2387. MOV r8,r8,LSR #1
  2388. ADD r10,r10,r9
  2389. MOV r10,r10,LSR #1
  2390. addmacro(2,11,rowbytes%)
  2391. 'STMIA r2,{r1,r4,r5,r6,r7,r8,r9,r10}
  2392. addmacro(2,2,rowbytes%)
  2393. 'STMIA r2,{r1,r4,r5,r6,r7,r8,r9,r10}
  2394. addmacro(2,2,rowbytes%)
  2395. 'STMIA r2,{r1,r4,r5,r6,r7,r8,r9,r10}
  2396. ADD r0,r0,#4*4
  2397. *STMIA r11 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2398. LDMIA r0,{r1,r5,r7,r9,r10}
  2399. ADD r4,r1,r5
  2400. MOV r4,r4,LSR #1
  2401. ADD r6,r5,r7
  2402. MOV r6,r6,LSR #1
  2403. ADD r8,r7,r9
  2404. MOV r8,r8,LSR #1
  2405. ADD r10,r10,r9
  2406. MOV r10,r10,LSR #1
  2407. addmacro(2,11,rowbytes%)
  2408. 'STMIA r2,{r1,r4,r5,r6,r7,r8,r9,r10}
  2409. addmacro(2,2,rowbytes%)
  2410. 'STMIA r2,{r1,r4,r5,r6,r7,r8,r9,r10}
  2411. addmacro(2,2,rowbytes%)
  2412. 'STMIA r2,{r1,r4,r5,r6,r7,r8,r9,r10}
  2413. *STMIA r11 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2414. ADD r0,r0,#4*4
  2415. d322x4y
  2416. [OPTZ%
  2417. LDMIA r0 !,{r1,r5,r7,r9}
  2418. MOV r4,r1
  2419. MOV r6,r5
  2420. MOV r8,r7
  2421. MOV r10,r9
  2422. addmacro(2,11,rowbytes%)
  2423. 'STMIA r2,{r1,r4,r5,r6,r7,r8,r9,r10}
  2424. addmacro(2,2,rowbytes%)
  2425. 'STMIA r2,{r1,r4,r5,r6,r7,r8,r9,r10}
  2426. addmacro(2,2,rowbytes%)
  2427. 'STMIA r2,{r1,r4,r5,r6,r7,r8,r9,r10}
  2428. *STMIA r11 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2429. LDMIA r0 !,{r1,r5,r7,r9}
  2430. MOV r4,r1
  2431. MOV r6,r5
  2432. MOV r8,r7
  2433. MOV r10,r9
  2434. addmacro(2,11,rowbytes%)
  2435. 'STMIA r2,{r1,r4,r5,r6,r7,r8,r9,r10}
  2436. addmacro(2,2,rowbytes%)
  2437. 'STMIA r2,{r1,r4,r5,r6,r7,r8,r9,r10}
  2438. addmacro(2,2,rowbytes%)
  2439. 'STMIA r2,{r1,r4,r5,r6,r7,r8,r9,r10}
  2440. *STMIA r11 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2441. d321x2y
  2442. [OPTZ%
  2443. )LDMIA r0 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2444. )STMIA r2 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2445. *STMIA r11 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2446. d322x1yintx
  2447. [OPTZ%
  2448. LDMIA r0,{r1,r5,r7,r9,r10}
  2449. ADD r4,r1,r5
  2450. MOV r4,r4,LSR #1
  2451. ADD r6,r5,r7
  2452. MOV r6,r6,LSR #1
  2453. ADD r8,r7,r9
  2454. MOV r8,r8,LSR #1
  2455. ADD r10,r10,r9
  2456. MOV r10,r10,LSR #1
  2457. *STMIA r11 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2458. ADD r0,r0,#4*4
  2459. LDMIA r0,{r1,r5,r7,r9,r10}
  2460. ADD r4,r1,r5
  2461. MOV r4,r4,LSR #1
  2462. ADD r6,r5,r7
  2463. MOV r6,r6,LSR #1
  2464. ADD r8,r7,r9
  2465. MOV r8,r8,LSR #1
  2466. ADD r10,r10,r9
  2467. MOV r10,r10,LSR #1
  2468. (*STMIA r11 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2469. ADD r0,r0,#4*4
  2470. d322x1y
  2471. [OPTZ%
  2472. LDMIA r0 !,{r1,r5,r7,r9}
  2473. MOV r4,r1
  2474. MOV r6,r5
  2475. MOV r8,r7
  2476. MOV r10,r9
  2477. 3*STMIA r11 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2478. LDMIA r0 !,{r1,r5,r7,r9}
  2479. MOV r4,r1
  2480. MOV r6,r5
  2481. MOV r8,r7
  2482. MOV r10,r9
  2483. 9*STMIA r11 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2484. d321x1y
  2485. [OPTZ%
  2486. >)LDMIA r0 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2487. ?*STMIA r11 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  2488. D!tick1%=500:
  2489. slow% tick1%=1000
  2490. P%=code%
  2491. [OPTZ%
  2492. .tickinit MOV r0,#6
  2493. ADR r1,tick
  2494. MOV r2,#100
  2495. SWI "OS_ClaimDeviceVector"
  2496. SWI "OS_EnterOS"
  2497. MOV r0,#&3200000
  2498. MOV r1,#tick1%*20 
  2499. STRB r1,[r0,#&50]
  2500. MOV r1,#tick1%*20 
  2501. STRB r1,[r0,#&54]
  2502. LDRB r1,[r0,#&18]
  2503. R r1,r1,#&40
  2504. STRB r1,[r0,#&18]
  2505. STRB r1,[r0,#&58]
  2506. TEQP pc,#0
  2507. MOV r0,r0
  2508. MOVS pc,r14
  2509. P%=P%+15
  2510. [OPT Z%
  2511. .tick LDR r0,mute
  2512. TST r0,#1
  2513. LDR r0,timenow
  2514. ADD r0,r0,#tick1%
  2515. STREQ r0,timenow 
  2516. MOV r0,#&40 
  2517. STRB r0,[r3,#&14]
  2518. MOV pc,r14
  2519. .zero MOV r2,#0
  2520. MOV r3,#0
  2521. MOV r4,#0
  2522. MOV r5,#0
  2523. g#.zerolp STMIA r0!,{r2,r3,r4,r5}
  2524. CMP r0,r1
  2525. BCC zerolp
  2526. MOVS pc,r14
  2527. .readf%
  2528. ldr r6,tobuf
  2529. ldr r10,[r14,#&28] 
  2530. .readfwt
  2531. ldr r0,[r8,r10]
  2532. cmp r0,#0
  2533. movnes pc,r14
  2534. ldr r0,mute
  2535. tst r0,#4
  2536. movne r0,#&80
  2537. strneb r0,[r8,r10]
  2538. movnes pc,r14
  2539. playfor%=0 
  2540. [OPT Z%
  2541. B readfwt
  2542. video 
  2543. [OPTZ%
  2544. ldr r5,[r6,#8]
  2545. cmp r5,#1
  2546. bne readfwt 
  2547. twobuf% 
  2548. [OPTZ%
  2549. ldr r3,ent
  2550. "ldmia r3,{r3,r4,r5,r7,r9,r11} 
  2551. sub r5,r9,r4 
  2552. adds r7,r7,r11 
  2553. add r3,r5,r7 
  2554. mov r2,#sector+1
  2555. sub r2,r2,#1
  2556. add r3,r3,r2
  2557. bic r3,r3,r2
  2558. ldr r2,[r6] 
  2559. addne r5,r5,r2
  2560. moveq r5,#0
  2561. str r5,[r6,#4] 
  2562. STMFD r13!,{r2,r5}
  2563. mov r1,#file%
  2564. mov r0,#3
  2565. incore% 
  2566. [OPT Z%
  2567. SWI "OS_GBPB"
  2568. [OPTZ%
  2569. mov r3,#0
  2570. str r3,[r6,#8] 
  2571. eor r6,r6,#16
  2572. str r6,tobuf
  2573. LDMFD r13!,{r2,r7}
  2574. snd%=1 
  2575.  snd%=2 
  2576. video 
  2577. [OPTZ%
  2578. ldr r3,ent
  2579. ldmia r3,{r3,r4,r5}
  2580. ADD r0,r2,r3
  2581. .sndwait ldr r1,[r8,r10]
  2582. cmp r1,#0
  2583. movnes pc,r14
  2584. ldr r1,mute
  2585. tst r1,#4
  2586. movne r1,#&80
  2587. strneb r1,[r8,r10]
  2588. movnes pc,r14
  2589. LDR r1,sndcopy+8
  2590. LDR r2,sndcopy
  2591. R r1,r1,r2
  2592. CMP r1,#0
  2593. BNE sndwait
  2594. STR r0,sndcopy
  2595. STR r5,sndcopy+4
  2596. ldr r3,ent
  2597. add r3,r3,#12
  2598. ldmia r3,{r3,r4,r5}
  2599. add r0,r7,r3
  2600. STR r0,sndcopy+8
  2601. STR r5,sndcopy+12
  2602. [OPTZ%
  2603. STMFD r13!,{r14}
  2604. ldr r3,ent
  2605. ldmia r3,{r3,r4,r5}
  2606. ADD r0,r2,r3
  2607. MOV r1,r5
  2608. BL snddata%
  2609. ldr r3,ent
  2610. add r3,r3,#12
  2611. ldmia r3,{r3,r4,r5}
  2612. add r0,r7,r3
  2613. MOV r1,r5
  2614. BL snddata%
  2615. LDMFD r13!,{r14}
  2616. [OPTZ%
  2617. ldr r3,ent
  2618. ldmia r3,{r3,r4,r5} 
  2619. add r3,r3,r5
  2620. mov r2,#sector+1
  2621. sub r2,r2,#1
  2622. add r3,r3,r2
  2623. bic r3,r3,r2
  2624. ldr r2,[r6]
  2625. STMFD r13!,{r2}
  2626. mov r1,#file%
  2627. mov r0,#3
  2628. incore% 
  2629. access<2 
  2630. [OPT Z%
  2631. SWI "OS_GBPB"
  2632. access>256 access=access+1 
  2633. access>512 access=access+3 
  2634. access>1024 access=access+7 
  2635. [OPT Z%
  2636. .blockaccessloop
  2637. stmfd r13!,{r3}
  2638. cmp r3,#access*1024
  2639. movcs r3,#access*1024
  2640. SWI "OS_GBPB"
  2641. ldmfd r13!,{r3}
  2642. subs r3,r3,#access*1024
  2643. bgt blockaccessloop
  2644. [OPTZ%
  2645. mov r3,#0
  2646. str r3,[r6,#8] 
  2647. eor r6,r6,#16
  2648. str r6,tobuf
  2649. LDMFD r13!,{r2}
  2650. snd%=1 
  2651.  snd%=2 
  2652. video 
  2653. [OPTZ%
  2654. ldr r3,ent
  2655. ldmia r3,{r3,r4,r5}
  2656. ADD r0,r2,r3
  2657. .sndwait
  2658. ldr r1,[r8,r10]
  2659. cmp r1,#0
  2660. movnes pc,r14
  2661. ldr r1,mute
  2662. tst r1,#4
  2663. movne r1,#&80
  2664. strneb r1,[r8,r10]
  2665. movnes pc,r14
  2666. LDR r1,sndcopy
  2667. CMP r1,#0
  2668. BNE sndwait
  2669. STR r0,sndcopy
  2670. STR r5,sndcopy+4
  2671. [OPTZ%
  2672. STMFD r13!,{r14}
  2673. ldr r3,ent
  2674. ldmia r3,{r3,r4,r5}
  2675. ADD r0,r2,r3
  2676. MOV r1,r5
  2677. BL snddata%
  2678. LDMFD r13!,{r14}
  2679. video 
  2680. defeatscrnblank% 
  2681. [OPT Z%
  2682. MOV r0,#1
  2683. SWI "ScreenBlanker_Control"
  2684. [OPTZ%
  2685. LDR r3,ent
  2686. ADD r3,r3,#12+12*
  2687. twobuf%
  2688. STR r3,ent
  2689. LDR r4,entend
  2690. CMP r3,r4
  2691. BCC readf%
  2692. MOVS pc,r14
  2693.     -%.sndcopy DCD 0:DCD 0:DCD 0:DCD 0 
  2694. .ent DCD 0 
  2695. .entend DCD 0 
  2696. .tobuf DCD adb2 
  2697.     1/.butpause DCD px:DCD py:DCD px+pw:DCD py+ph
  2698.     2..butexit DCD ex:DCD ey:DCD ex+ew:DCD ey+eh
  2699.     31.butcapture DCD cx:DCD cy:DCD cx+cw:DCD cy+ch
  2700.     4/.butsfadv DCD sx:DCD sy:DCD sx+sw:DCD sy+sh
  2701.     5..butffwd DCD fx:DCD fy:DCD fx+fw:DCD fy+fh
  2702.     60.buthspeed DCD hx:DCD hy:DCD hx+hw:DCD hy+hh
  2703.     7/.butquiet DCD qx:DCD qy:DCD qx+qw:DCD qy+qh
  2704.     8..butloud DCD lx:DCD ly:DCD lx+lw:DCD ly+lh
  2705.     9..butmute DCD mx:DCD my:DCD mx+mw:DCD my+mh
  2706. .notvsyncevent
  2707. CMP r0,#10
  2708. MOVNES pc,r14
  2709. LDR r0,mousestate
  2710.  r4,r0,r3 
  2711. STR r3,mousestate
  2712. LDR r0,mute
  2713. butadj% 
  2714. [OPTZ%
  2715. TST r4,#1
  2716. BEQ noadjust
  2717. TST r3,#1
  2718. BICEQ r0,r0,#1
  2719. RNE r0,r0,#1 
  2720. B changedmute
  2721. .noadjust
  2722. [OPTZ%
  2723. TST r4,#2
  2724. BEQ doselect
  2725. butmenu% 
  2726. [OPTZ%
  2727. TST r3,#2
  2728. RNE r0,r0,#4 
  2729. [OPTZ%
  2730. B changedmute
  2731. .doselect
  2732. TST r3,#4
  2733. BEQ donemouse 
  2734. STMFD r13!,{r5,r6,r14}
  2735. ADR r6,butpause
  2736. BL checkbut
  2737. GE r0,r0,#1 
  2738. BGE popandchangedmute
  2739. ADR r6,butsfadv
  2740. BL checkbut
  2741. RGE r0,r0,#8 
  2742. BICGE r0,r0,#1 
  2743. BGE popandchangedmute
  2744. ADR r6,butmute
  2745. BL checkbut
  2746. GE r0,r0,#2 
  2747. BGE popandchangedmute
  2748. ADR r6,butloud
  2749. BL checkbut
  2750. BICGE r0,r0,#2 
  2751. BGE popandchangedmute
  2752. ADR r6,butquiet
  2753. BL checkbut
  2754. RGE r0,r0,#2 
  2755. BGE popandchangedmute
  2756. ADR r6,butexit
  2757. BL checkbut
  2758. RGE r0,r0,#4 
  2759. BGE popandchangedmute
  2760. ADR r6,butcapture
  2761. BL checkbut
  2762. RGE r0,r0,#4+16 
  2763. BGE popandchangedmute
  2764. LDMFD r13!,{r5,r6,r14}
  2765. B donemouse
  2766.     |$.checkbut LDMIA r6,{r3,r4,r5,r6}
  2767. CMP r1,r3
  2768. CMPGE r5,r1
  2769. CMPGE r2,r4
  2770. CMPGE r6,r2
  2771. MOV pc,r14
  2772. .popandchangedmute
  2773. LDMFD r13!,{r5,r6,r14}
  2774. .changedmute
  2775. STR r0,mute
  2776. mouseuser% 
  2777. [OPT Z%
  2778. STMFD r13!,{r0-r12,r14}
  2779. ADR r0,mute
  2780. LDR r5,mousepaintuser
  2781. ADR r6,butpause
  2782. BL mouseuser%
  2783. LDMFD r13!,{r0-r12,r14}
  2784. [OPTZ%
  2785. .donemouse
  2786. MOV r0,#0
  2787. MOVS pc,r14
  2788.  .donesingleframe LDR r0,mute
  2789. BIC r0,r0,#8 
  2790. R r0,r0,#1 
  2791. B changedmute
  2792.  .invisible LDR r2,inviscount
  2793. CMP r2,#0
  2794. BICMI r1,r1,#32+3
  2795. RMI r1,r1,#muted%
  2796.  paused 
  2797. STRMI r1,mute
  2798. BMI dopaint2 
  2799. SUBS r2,r2,#1 
  2800. STR r2,inviscount
  2801. BGE skippaint 
  2802. BIC r1,r1,#32+3 
  2803. R r1,r1,#muted%
  2804.  paused 
  2805. STR r1,mute
  2806. B dopaint2
  2807. .mousestate DCD 0 
  2808. .mute DCD 0 
  2809. .sndpause DCD 
  2810. P%=mute+64
  2811. [OPTZ%
  2812. .timenow DCD 0
  2813. .timetodisp DCD 0 
  2814. .timetotraj DCD 0 
  2815. .trajtime DCD 0 
  2816. .scs DCD dd%
  2817. .rn% DCD -1 
  2818. .ef  DCD 0
  2819. .dbu DCD bb%
  2820. .paint DCD 0 
  2821. .displayframe DCD 0 
  2822. .fpstime DCD 0 
  2823. .inviscount DCD -1 
  2824. mouseuser% 
  2825. [OPTZ%
  2826. %.mousepaintuser DCD paintuserdata
  2827. trajec% 
  2828. trajsteps% 
  2829. [OPTZ%
  2830. .trajrpt DCD 1
  2831. .trajnow DCD traj%
  2832. .trajstart DCD traj%
  2833. #.trajend DCD traj%+trajsteps%*8
  2834. trajshapes% 
  2835. [OPT Z%
  2836. .trajshap DCD trajshap%-4
  2837. loop% 
  2838. [OPTZ%
  2839. .finishedit
  2840. MOV r1,#0
  2841. STR r1,rn%
  2842. LDR r1,mute
  2843. R r1,r1,#64
  2844. [OPT Z%
  2845. .finishedit
  2846. LDR r1,mute
  2847. R r1,r1,#4
  2848. [OPT Z%
  2849. STR r1,mute
  2850. MOVS pc,r14
  2851. P%=P%+15
  2852. [OPTZ%
  2853.     .play
  2854. CMP r0,#4
  2855. BNE notvsyncevent 
  2856. .recycleplay
  2857. ADR r1,timenow
  2858. LDMIA r1,{r1,r2,r3} 
  2859. trajec% 
  2860. trajsteps% 
  2861. [OPTZ%
  2862. CMP r3,r1
  2863. BCS checkframetime 
  2864. LDR r2,trajnow
  2865. .multinctraj
  2866. LDR r0,trajtime
  2867. ADD r3,r3,r0
  2868. LDR r0,trajrpt
  2869. SUBS r0,r0,#1
  2870. STR r0,trajrpt
  2871. BNE multinctraj2
  2872. ADD r2,r2,#8
  2873. LDR r0,trajend
  2874. CMP r2,r0
  2875. LDRCS r2,trajstart
  2876. .multinctraj2
  2877. CMP r3,r1
  2878. BCC multinctraj
  2879. STR r3,timetotraj 
  2880. LDR r0,trajnow
  2881. CMP r0,r2
  2882. BEQ leavetrajalone
  2883. LDR r3,mute
  2884. TST r3,#32
  2885. STREQ r2,trajnow
  2886. LDR r3,[r2]
  2887. STR r3,scs
  2888. LDR r3,[r2,#4]
  2889. MOV r0,r3,LSR #8
  2890. STR r0,trajrpt
  2891. trajshapes% 
  2892. [OPTZ%
  2893. S r3,r3,#255
  2894. LDRNE r2,trajshap
  2895. LDRNE r3,[r2,r3,LSL #2]
  2896. ADDNE r3,r3,#12
  2897. STR r3,shap
  2898. [OPTZ%
  2899. .leavetrajalone
  2900. MOV r0,#4
  2901. LDR r2,timetodisp
  2902. playfor%=0 
  2903. [OPT Z%
  2904. .checkframetime
  2905. LDR r1,rn% 
  2906. CMN r1,#1
  2907. QS pc,r14 
  2908. LDR r2,ef
  2909. CMP r1,r2
  2910. BCS finishedit 
  2911. STR r2,rn% 
  2912. LDR r0,dbu
  2913. LDR r1,[r0] 
  2914. SUB r3,r1,#1 
  2915. STR r3,[r0],#16 
  2916. LDR r3,adsz
  2917. ADD r2,r0,r3,LSL #1 
  2918. LDR r3,ippe
  2919. CMP r2,r3
  2920. LDRCS r2,ipp 
  2921. STR r2,dbu 
  2922. .0STMFD r13 !,{r4,r5,r6,r7,r8,r9,r10,r11,r14} 
  2923. [OPT Z%
  2924. .checkframetime
  2925. CMP r2,r1
  2926. MOVCSS pc,r14 
  2927. LDR r1,fpstime
  2928. ADD r2,r1,r2
  2929. STR r2,timetodisp
  2930. LDR r1,mute
  2931. TST r1,#4
  2932. MOVNES pc,r14 
  2933. TST r1,#1 
  2934. <2STMNEFD r13 !,{r4,r5,r6,r7,r8,r9,r10,r11,r14} 
  2935. BNE gofordecomp 
  2936. LDR r1,rn% 
  2937. CMN r1,#1
  2938. QS pc,r14 
  2939. LDR r2,ef
  2940. CMP r1,r2
  2941. BCS finishedit 
  2942. ADD r1,r1,#1
  2943. STR r1,rn% 
  2944. LDR r2,rund 
  2945. SUB r2,r2,#1 
  2946. STR r2,rund
  2947. LDR r0,dbu
  2948. LDR r1,[r0] 
  2949. SUB r3,r1,#1 
  2950. STR r3,[r0],#16 
  2951. LDR r3,adsz
  2952. ADD r2,r0,r3,LSL #1 
  2953. LDR r3,ippe
  2954. CMP r2,r3
  2955. LDRCS r2,ipp 
  2956. STR r2,dbu 
  2957. LDR r2,paint
  2958. CMP r2,#0
  2959. BNE rapidexit 
  2960. .skiploc
  2961. LDR r2,rn%
  2962. TST r2,#1
  2963. BNE rapidexit 
  2964. Z0STMFD r13 !,{r4,r5,r6,r7,r8,r9,r10,r11,r14} 
  2965. CMP r1,#1 
  2966. BEQ dopaint 
  2967. LDR r4,displayframe 
  2968. LDR r5,[r0,#-12] 
  2969. CMP r4,r5 
  2970. BCS skippaint
  2971. LDR r6,rn%
  2972. RSB r4,r1,#1 
  2973. CMP r4,#5
  2974. MOVCS r4,#5 
  2975. MOV r7,#1
  2976. MOV r7,r7,LSL r4
  2977. SUB r7,r7,#1 
  2978. TST r6,r7 
  2979. BNE skippaint
  2980. [OPT Z%
  2981. .dopaint 
  2982. LDR r1,mute
  2983. TST r1,#32
  2984. BNE invisible
  2985. .dopaint2
  2986. MOV r1,#1
  2987. STR r1,paint 
  2988. LDR r1,[r0,#-12] 
  2989. STR r1,displayframe 
  2990. MOV r4,PC
  2991. BIC r4,r4,#1<<27
  2992. TEQP r4,#0
  2993. LDR r11,scs 
  2994. BIC r11,r11,#3
  2995. video 
  2996. mask%=3
  2997. shape% 
  2998. [OPT Z%
  2999. LDR r12,shap 
  3000. trajshapes% 
  3001. [OPT Z%
  3002. CMP r12,#0
  3003. BEQ defaultrect
  3004. [OPT Z%
  3005. LDMIA r12!,{r1} 
  3006. MOV r8,#&ff
  3007. R r8,r8,#&ff00
  3008. .shapdisl
  3009. MOVS r3,r1,LSR #24 
  3010. BIC r1,r1,#&ff000000 
  3011. ADD r1,r1,r11 
  3012. magy%>1 
  3013. [OPTZ%
  3014. addmacro(4,1,rowbytes%*magy%
  3015. [OPTZ%
  3016. BEQ shaponeonly 
  3017. TST r1,#3
  3018. BNE shapdispnotword
  3019. .shapdisp
  3020. LDMIA r12!,{r5,r6} 
  3021. LDR r5,[r0,r5] 
  3022. LDR r6,[r0,r6] 
  3023.  ncol 
  3024. [OPT Z%
  3025.  r7,r5,#15
  3026. R r7,r7,r6,LSL #4
  3027. STRB r7,[r1],#1
  3028. magy%>1 
  3029. [OPT Z%
  3030. BIC r7,r6,#15
  3031. R r7,r7,r5,LSR #4
  3032. STRB r7,[r4],#1
  3033. [OPT Z%
  3034. STRB r5,[r1],#1
  3035. STRB r6,[r1],#1
  3036. magy%>1 
  3037. [OPTZ%
  3038. MOV r5,r5,LSR #8
  3039. STRB r5,[r4],#1
  3040. MOV r6,r6,LSR #8
  3041. STRB r6,[r4],#1
  3042. magx%=2
  3043. magy%>1 
  3044. [OPT Z%
  3045.  r5,r5,r6,LSL #16:
  3046.  r6,r6,r5,LSR #16:
  3047.  r5,r5,r6,LSL #16
  3048. STMIA r1!,{r5}
  3049. STMIA r4!,{r6}
  3050. magx%=1
  3051. magy%>1 
  3052. [OPT Z%
  3053. STRB r5,[r1],#1
  3054. MOV r5,r5,LSR #8
  3055. STRB r5,[r4],#1
  3056. STRB r6,[r1],#1
  3057. MOV r6,r6,LSR #8
  3058. STRB r6,[r4],#1
  3059. magx%=2
  3060. magy%=1 
  3061. [OPT Z%
  3062. R r7,r5,r6,LSL #16
  3063. STR r7,[r1],#4
  3064. magx%=1
  3065. magy%=1 
  3066. [OPT Z%
  3067. STRB r5,[r1],#1
  3068. STRB r6,[r1],#1
  3069.  65535
  3070. magx%=2 
  3071. [OPT Z%
  3072. STMIA r1!,{r5,r6}
  3073. magy%>1 
  3074. [OPT Z%
  3075. STMIA r4!,{r5,r6}
  3076. magy%=1 
  3077. [OPT Z%
  3078. R r5,r5,r6,LSL #16
  3079. STMIA r1!,{r5}
  3080. [OPT Z%
  3081.  r5,r5,r6,LSL #16:
  3082.  r6,r6,r5,LSR #16:
  3083.  r5,r5,r6,LSL #16
  3084. STMIA r1!,{r5}
  3085. STMIA r4!,{r6}
  3086. magx%=2 
  3087. [OPT Z%
  3088. MOV r8,r6
  3089. MOV r7,r6
  3090. MOV r6,r5
  3091. STMIA r1!,{r5,r6,r7,r8}
  3092. magy%>1 
  3093. [OPT Z%
  3094. STMIA r4!,{r5,r6,r7,r8}
  3095. [OPT Z%
  3096. STMIA r1!,{r5,r6}
  3097. magy%>1 
  3098. [OPT Z%
  3099. STMIA r4!,{r5,r6}
  3100. [OPT Z%
  3101. SUBS r3,r3,#2
  3102. BGT shapdisp
  3103. BMI shapevenshape
  3104. B shaponeonly
  3105. .shapdispnotword
  3106. LDMIA r12!,{r5,r6} 
  3107. LDR r5,[r0,r5] 
  3108. LDR r6,[r0,r6] 
  3109.  ncol 
  3110. [OPT Z%
  3111.  r7,r5,#15
  3112. R r7,r7,r6,LSL #4
  3113. STRB r7,[r1],#1
  3114. magy%>1 
  3115. [OPT Z%
  3116. BIC r7,r6,#15
  3117. R r7,r7,r5,LSR #4
  3118. STRB r7,[r4],#1
  3119. [OPT Z%
  3120. STRB r5,[r1],#1
  3121. STRB r6,[r1],#1
  3122. magy%>1 
  3123. [OPTZ%
  3124. MOV r5,r5,LSR #8
  3125. STRB r5,[r4],#1
  3126. MOV r6,r6,LSR #8
  3127. STRB r6,[r4],#1
  3128. magx%=2
  3129. magy%>1 
  3130. [OPT Z%
  3131. STRB r5,[r1],#1
  3132. MOV r5,r5,LSR #8
  3133. STRB r5,[r1],#1
  3134. STRB r6,[r1],#1
  3135. MOV r6,r6,LSR #8
  3136. STRB r6,[r1],#1
  3137. MOV r5,r5,LSR #8
  3138. MOV r6,r6,LSR #8
  3139. STRB r5,[r4],#1
  3140. MOV r5,r5,LSR #8
  3141. STRB r5,[r4],#1
  3142. STRB r6,[r4],#1
  3143. MOV r6,r6,LSR #8
  3144. STRB r6,[r4],#1
  3145. magx%=1
  3146. magy%>1 
  3147. [OPT Z%
  3148. STRB r5,[r1],#1
  3149. MOV r5,r5,LSR #8
  3150. STRB r5,[r4],#1
  3151. STRB r6,[r1],#1
  3152. MOV r6,r6,LSR #8
  3153. STRB r6,[r4],#1
  3154. magx%=2
  3155. magy%=1 
  3156. [OPT Z%
  3157. STRB r5,[r1],#1
  3158. MOV r5,r5,LSR #8
  3159. STRB r5,[r1],#1
  3160. STRB r6,[r1],#1
  3161. MOV r6,r6,LSR #8
  3162. STRB r6,[r1],#1
  3163. magx%=1
  3164. magy%=1 
  3165. [OPT Z%
  3166. STRB r5,[r1],#1
  3167. STRB r6,[r1],#1
  3168.  65535
  3169. magx%=2 
  3170. [OPT Z%
  3171. LDMIA r1,{r7,r9,r10}
  3172. BIC r7,r7,r8,LSL #16
  3173. R r7,r7,r5,LSL #16
  3174. MOV r9,r5,LSR #16
  3175. R r9,r9,r6,LSL #16
  3176. BIC r10,r10,r8
  3177. R r10,r10,r6,LSR #16
  3178. STMIA r1,{r7,r9,r10}
  3179. ADD r1,r1,#8
  3180. magy%>1 
  3181. [OPT Z%
  3182. LDMIA r4,{r7,r9,r10}
  3183. BIC r7,r7,r8,LSL #16
  3184. R r7,r7,r5,LSL #16
  3185. MOV r9,r5,LSR #16
  3186. R r9,r9,r6,LSL #16
  3187. BIC r10,r10,r8
  3188. R r10,r10,r6,LSR #16
  3189. STMIA r4,{r7,r9,r10}
  3190. ADD r4,r4,#8
  3191. magy%=1 
  3192. [OPT Z%
  3193. R r7,r5,r6,LSL #16
  3194. LDMIA r1,{r7,r9}
  3195. BIC r7,r7,r8,LSL #16
  3196. R r7,r7,r5,LSL #16
  3197. BIC r9,r9,r8
  3198. R r9,r9,r6
  3199. STMIA r1,{r7,r9}
  3200. ADD r1,r1,#4
  3201. [OPT Z%
  3202.  r5,r5,r6,LSL #16:
  3203.  r6,r6,r5,LSR #16:
  3204.  r5,r5,r6,LSL #16
  3205. LDMIA r1,{r7,r9}
  3206. BIC r7,r7,r8,LSL #16
  3207. R r7,r7,r5,LSL #16
  3208. BIC r9,r9,r8
  3209. R r9,r9,r5,LSR #16
  3210. STMIA r1,{r7,r9}
  3211. LDMIA r4,{r7,r9}
  3212. BIC r7,r7,r8,LSL #16
  3213. R r7,r7,r6,LSL #16
  3214. BIC r9,r9,r8
  3215. R r9,r9,r6,LSR #16
  3216. STMIA r4,{r7,r9}
  3217. ADD r1,r1,#4
  3218. ADD r4,r4,#4
  3219. [OPT Z%
  3220. SUBS r3,r3,#2
  3221. BGT shapdispnotword
  3222. BMI shapevenshape
  3223. [OPTZ%
  3224. .shaponeonly
  3225. LDMIA r12!,{r5} 
  3226. LDR r5,[r0,r5] 
  3227.  ncol 
  3228. [OPT Z%
  3229. STRB r5,[r1],#1
  3230. magy%>1 
  3231. [OPTZ%
  3232. MOV r5,r5,LSR #8
  3233. STRB r5,[r4],#1
  3234. magx%=2
  3235. magy%>1 
  3236. [OPT Z%
  3237. STRB r5,[r1],#1
  3238. MOV r5,r5,LSR #8
  3239. STRB r5,[r1],#1
  3240. MOV r5,r5,LSR #8
  3241. STRB r5,[r4],#1
  3242. MOV r5,r5,LSR #8
  3243. STRB r5,[r4],#1
  3244. magx%=1
  3245. magy%>1 
  3246. [OPT Z%
  3247. STRB r5,[r1],#1
  3248. MOV r5,r5,LSR #8
  3249. STRB r5,[r4],#1
  3250. magx%=2
  3251. magy%=1 
  3252. [OPT Z%
  3253. STRB r5,[r1],#1
  3254. MOV r5,r5,LSR #8
  3255. STRB r5,[r1],#1
  3256. magx%=1
  3257. magy%=1 
  3258. [OPT Z%
  3259. STRB r5,[r1],#1
  3260.  65535
  3261. magx%=2 
  3262. [OPT Z%
  3263. TST r1,#3
  3264. STREQ r5,[r1]
  3265. LDMNEIA r1,{r6,r7}
  3266. BIC r6,r6,r8,LSL #16
  3267. R r6,r6,r5,LSL #16
  3268. BIC r7,r7,r8
  3269. R r7,r7,r5,LSR #16
  3270. STMNEIA r1,{r6,r7}
  3271. ADD r1,r1,#4
  3272. magy%>1 
  3273. [OPT Z%
  3274. STREQ r5,[r4]
  3275. LDMNEIA r4,{r6,r7}
  3276. BIC r6,r6,r8,LSL #16
  3277. R r6,r6,r5,LSL #16
  3278. BIC r7,r7,r8
  3279. R r7,r7,r5,LSR #16
  3280. STMNEIA r4,{r6,r7}
  3281. ADD r4,r4,#4
  3282. [OPT Z%
  3283. STRB r5,[r1],#1
  3284. MOV r5,r5,LSR #8
  3285. STRB r5,[r1],#1
  3286. magy%>1 
  3287. [OPT Z%
  3288. MOV r5,r5,LSR #8
  3289. STRB r5,[r4],#1
  3290. MOV r5,r5,LSR #8
  3291. STRB r5,[r4],#1
  3292. magx%=2 
  3293. [OPT Z%
  3294. MOV r6,r5
  3295. STMIA r1!,{r5,r6}
  3296. magy%>1 
  3297. [OPT Z%
  3298. STMIA r4!,{r5,r6}
  3299. [OPT Z%
  3300. STMIA r1!,{r5}
  3301. magy%>1 
  3302. [OPT Z%
  3303. STMIA r4!,{r5}
  3304. [OPT Z%
  3305. .shapevenshape
  3306. LDMIA r12!,{r1} 
  3307. CMN r1,#1 
  3308. BNE shapdisl
  3309. trajshapes% 
  3310. [OPT Z%
  3311. B shapepainted
  3312. 5C%=sy%:
  3313. sy%*magy%>screenrows C%=screenrows 
  3314. magy%
  3315. 7D%=sx%:
  3316. sx%*bpp%/8>rowbytes% D%=rowbytes% 
  3317. (bpp%/8)
  3318. shape%=
  3319.  trajshapes%<>
  3320. defaultrect=P%
  3321. interp%<>0
  3322. ncol=63 
  3323. [OPT Z%
  3324. LDR r2,adrr
  3325. MOV r1,#C%
  3326. LDR r12,adrp
  3327. .disl MOV r3,#D%
  3328. STR r1,interpcount
  3329. [OPT Z%
  3330. LDR r2,adrr
  3331. MOV r12,#C%
  3332. .disl MOV r3,#D%
  3333. magy%>1 
  3334. [OPTZ%
  3335. addmacro(2,11,rowbytes%*magy%
  3336. interp%=2
  3337. ncol=-1 
  3338. [OPT Z%
  3339. MOV r10,#256
  3340. R r10,r10,#65536
  3341. ncol=65535
  3342. interp%=1 
  3343. [OPT Z%
  3344. MOV r10,#31<<5
  3345. R r10,r10,#63<<15
  3346. R r10,r10,#31<<10+16
  3347. ncol=65535
  3348. interp%=2 
  3349. [OPT Z%
  3350. STR r12,interpcount
  3351. MOV r10,#31<<5
  3352. R r10,r10,#63<<15
  3353. R r10,r10,#31<<10+16
  3354. pad:incno%=8:[OPT Z%:.disp:]
  3355.  ncol 
  3356. G%mask%=0:
  3357. magy%>1 
  3358. d12x2y 
  3359. d12x1y
  3360. magy%>1 
  3361. d22x2y
  3362. magx%=1 
  3363. d21x1y 
  3364. d22x1y
  3365. magy%>1 
  3366. d42x2y 
  3367. d42x1y
  3368. magx%=2 
  3369. magy%=2 
  3370. interp% 
  3371. d82x2yintxinty
  3372. d82x2y:
  3373. 15)=0 incno%=16:
  3374. d82x2y
  3375. magy%=4 
  3376. d82x4y
  3377. szmul%=1 
  3378. 15)=0 
  3379. incno%=16
  3380. [OPT Z%
  3381. `)LDMIA r0 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  3382. a*STMIA r11 !,{r1,r4,r5,r6,r7,r8,r9,r10}
  3383. [OPT Z%
  3384. LDMIA r0 !,{r1,r4,r5,r6}
  3385. STMIA r11 !,{r1,r4,r5,r6}
  3386. d82x1y:
  3387. 15)=0 incno%=16:
  3388. d82x1y
  3389. magy%=1 
  3390. d81x1y
  3391. d81x2y
  3392.  65535
  3393. magx%=2 
  3394. magy%=2 
  3395. interp% 
  3396. d162x2yintxinty
  3397. d162x2yintx
  3398. d162x2y
  3399. magy%=4 
  3400.  interp% 
  3401. d162x4yintxinty
  3402. d162x4yintx
  3403. d162x4y
  3404. interp% 
  3405. d162x1yintx
  3406. d162x1y:
  3407. 15)=0 incno%=16:
  3408. d162x1y
  3409. magy%=1 
  3410. d161x1y
  3411. d161x2y
  3412. magx%=2 
  3413. magy%=2 
  3414.  interp% 
  3415. d322x2yintxinty
  3416. d322x2yintx
  3417. d322x2y
  3418. magy%=4 
  3419.  interp% 
  3420. d322x4yintxinty
  3421. d322x4yintx
  3422. d322x4y
  3423. interp% 
  3424. d322x1yintx
  3425. d322x1y
  3426. magy%=1 
  3427. d321x1y
  3428. d321x2y
  3429. [OPTZ%
  3430. SUBS r3,r3,#incno%
  3431. BNE disp
  3432. D%<>sx% 
  3433. [OPTZ%
  3434. ADD r0,r0,#4*(sx%-D%)
  3435. magy%>1 
  3436. [OPTZ%
  3437. LDR r2,adrr
  3438. interp%<>0
  3439. ncol=63 
  3440. [OPTZ%
  3441. ADD r11,r11,r2
  3442. LDR r1,interpcount
  3443. SUBS r1,r1,#1
  3444. BNE disl
  3445. ncol=65535
  3446. interp%=2 
  3447. [OPTZ%
  3448. ADD r11,r11,r2
  3449. LDR r12,interpcount
  3450. SUBS r12,r12,#1
  3451. BNE disl
  3452. [OPTZ%
  3453. ADD r11,r11,r2
  3454. SUBS r12,r12,#1
  3455. BNE disl
  3456. [OPT Z%
  3457. .shapepainted
  3458. MOV r4,PC
  3459. R r4,r4,#1<<27
  3460. TEQP r4,#0
  3461. paintuser% 
  3462. [OPT Z%
  3463. ADR r0,paintuserdata
  3464. LDR r1,scs
  3465. BIC r1,r1,#3
  3466. LDR r2,rn%
  3467. BL paintuser%
  3468. [OPT Z%
  3469. MOV r3,#0
  3470. STR r3,paint
  3471. .skippaint
  3472. LDR r1,mute
  3473. TST r1,#8
  3474. BLNE donesingleframe
  3475. LDR r3,rund 
  3476. CMP r3,#bf 
  3477. BGE nodecompress 
  3478. .gofordecomp
  3479. video 
  3480. [OPTZ%
  3481. LDR r2,inde
  3482. CMP r2,#0
  3483. BNE nodecompress 
  3484. MOV r3,#1
  3485. STR r3,inde 
  3486. C%=bf 
  3487. C%>6 C%=6
  3488. [OPTZ%
  3489. BL dec%
  3490. [OPTZ%
  3491. /LDMFD r13 !,{r4,r5,r6,r7,r8,r9,r10,r11,r14}
  3492. MOV r3,#0
  3493. STR r3,inde
  3494. .rapidexit
  3495. MOV r0,#4
  3496. B recycleplay
  3497. .nodecompress
  3498. snd% 
  3499. [OPTZ%
  3500. LDR r0,sndcopy
  3501. LDR r1,sndcopy+8
  3502. R r1,r0,r1
  3503. CMP r1,#0
  3504. BEQ nodecomp2 
  3505. LDR r1,sndba
  3506. LDR r2,[r1,#4]
  3507. LDR r1,sndbb
  3508. LDR r1,[r1,#4]
  3509. RS r1,r1,r2
  3510. BEQ nodecomp2 
  3511. LDR r1,mute
  3512. TST r1,#4
  3513. BNE nodecomp2 
  3514. LDR r4,ugly
  3515. CMP r4,#0
  3516. BNE nodecomp2
  3517. MOV r4,#99
  3518. STR r4,ugly
  3519. MOV r4,pc
  3520. R r4,r4,#3
  3521. TEQP r4,#0 
  3522. MOV r0,r0
  3523. STR r14,uglylink 
  3524. BIC r4,r4,#1<<27
  3525. TEQP r4,#0 
  3526. CMP r0,#0
  3527. BEQ mustbe2 
  3528. LDR r1,sndcopy+4
  3529. BL snddata%
  3530. MOV r0,#0
  3531. STR r0,sndcopy
  3532. B nodecomp3
  3533. .mustbe2 LDR r0,sndcopy+8
  3534. LDR r1,sndcopy+12
  3535. BL snddata%
  3536. MOV r0,#0
  3537. STR r0,sndcopy+8
  3538. .nodecomp3
  3539. MOV r4,pc
  3540. R r4,r4,#1<<27
  3541. TEQP r4,#0 
  3542. LDR r14,uglylink 
  3543. BIC r4,r4,#3
  3544. R r4,r4,#2
  3545. TEQP r4,#0 
  3546. MOV r4,#0
  3547. STR r4,ugly
  3548. B nodecomp2
  3549. .sndba DCD !sndbuffer%
  3550. .sndbb DCD sndbuffer%!4
  3551. .ugly DCD 0
  3552. .uglylink DCD 0
  3553. [OPTZ%
  3554. R:.nodecomp2 LDMFD r13 !,{r4,r5,r6,r7,r8,r9,r10,r11,r14}
  3555. MOV r0,#4
  3556. B recycleplay
  3557. .ipp DCD bb% 
  3558. V!.ippe DCD bb%+bf*sz%*2+bf*16 
  3559. .inde DCD 0 
  3560. .rund DCD 0 
  3561. .dec% 
  3562. STMFD r13 !,{r14}
  3563. LDR r1,decto
  3564. LDR r2,[r1],#16 
  3565. CMP r2,#1
  3566. playfor%<>0 
  3567. [OPT Z%
  3568. CMP r2,#1
  3569. LDMEQFD r13!,{pc}^ 
  3570. [OPT Z%
  3571. LDR r2,decfrom
  3572. ADD r2,r2,#16 
  3573. LDR r5,adbu 
  3574. LDR r4,[r5,#8] 
  3575. CMP r4,#0
  3576. LDMNEFD r13!,{PC}^ 
  3577. LDR r0,addb 
  3578. LDR r3,adrp 
  3579. MOV r4,#0
  3580. plook(4,4,3)
  3581. STR r4,[r1,#-4] 
  3582. MOV r4,#&ff
  3583. R r4,r4,#&7f00
  3584. plook(4,4,3)
  3585. STR r4,[r1,#-8] 
  3586. MOV r4,PC
  3587. BIC r4,r4,#1<<27
  3588. TEQP r4,#0
  3589. ADR r4,decx 
  3590. B decl 
  3591. z+.decfrom DCD bb%+(bf-1)*sz%*2+(bf-1)*16
  3592. .decto DCD bb%
  3593. .decframe DCD 0 
  3594. .adbu DCD adb1
  3595. .adsz DCD sz%
  3596. .adnumpix DCD ipsz%
  3597. .adrp DCD p%
  3598. '.adrr DCD rowbytes%*magy%-D%*bpp%/8
  3599. .addb DCD op0% 
  3600. .run  DCD fpf
  3601. .shap DCD shap%+12
  3602. .interpcount DCD 0
  3603. paintuser% 
  3604. mouseuser% 
  3605. [OPT Z%
  3606. .paintuserdata
  3607. DCD nx
  3608. DCD ny
  3609. DCD ncol
  3610. DCD screenstart%
  3611. DCD rowbytes%
  3612. DCD screenrows
  3613. DCD magy%
  3614. DCD sx%
  3615. DCD sy%
  3616. DCD fps*100
  3617. P%=P%+31
  3618. [OPTZ%
  3619. .adb1 DCD op0%
  3620. DCD 0 
  3621. DCD 0 
  3622. DCD 0 
  3623. .adb2 DCD op1%
  3624.     DCD 0
  3625. DCD 1 
  3626.     DCD 0
  3627.     .decx
  3628. MOV r4,PC
  3629. R r4,r4,#1<<27
  3630. TEQP r4,#0
  3631. STR r0,addb
  3632. LDR r0,run 
  3633. SUBS r0,r0,#1
  3634. BNE notbend
  3635. LDR r1,adbu
  3636. twobuf% 
  3637. [OPTZ%
  3638. LDR r2,[r1,#4] 
  3639. TEQ r2,#0
  3640. MOVNE r0,#0 
  3641. STRNE r0,[r1,#4] 
  3642. BNE halfbend
  3643. [OPTZ%
  3644. MOV r0,#1
  3645. STR r0,[r1,#8] 
  3646.  r1,r1,#16
  3647. STR r1,adbu
  3648. LDR r2,[r1]
  3649. .halfbend
  3650. STR r2,addb 
  3651. MOV r0,#fpf
  3652. .notbend
  3653. STR r0,run
  3654. LDR r0,decto
  3655. STR r0,decfrom
  3656. LDR r1,decframe 
  3657. ADD r1,r1,#1 
  3658. STR r1,decframe 
  3659. STR r1,[r0,#4] 
  3660. LDR r1,[r0] 
  3661. ADD r1,r1,#1 
  3662. STR r1,[r0],#16 
  3663. LDR r6,adsz
  3664. ADD r6,r0,r6,LSL #1
  3665. LDR r4,ippe
  3666. CMP r6,r4
  3667. LDRCS r6,ipp
  3668. STR r6,decto
  3669. LDR r1,rund
  3670. ADD r1,r1,#1
  3671. STR r1,rund 
  3672. LDMFD r13 !,{r14}
  3673. MOVS PC,R14
  3674. P%-code%>codesize% Panic
  3675. string(a%)
  3676. %a$="":
  3677.  ?a%>=32:a$+=
  3678. ?a%:a%+=1:
  3679. lookup2(t$,p1$,p2$)
  3680.  s%,f%,b%
  3681.  "MessageTrans_FileInfo",,"<ArMovie$Dir>.Messages" 
  3682.  ,,s%
  3683.  f% s%,b% 256
  3684.  "MessageTrans_OpenFile",b%,"<ARMovie$Dir>.Messages",f%
  3685.  "MessageTrans_Lookup",b%,t$,b%+16,240,p1$,p2$ 
  3686.  ,,s%
  3687.  "MessageTrans_CloseFile",b%
  3688. string(s%)
  3689. lookup1(t$,p1$)=
  3690. lookup2(t$,p1$,"")
  3691. lookup(t$)=
  3692. lookup2(t$,"","")
  3693.