Advertisement
Guest User

Fire effect (frame-rate independent) (BB4W only)

a guest
Dec 27th, 2017
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.27 KB | None | 0 0
  1. REM Fire effect (frame-rate independent)
  2. REM For 'BBC BASIC for Windows'
  3. REM Not compatible with BBCSDL
  4. REM 27-Dec-2017
  5.  
  6. *ESC OFF
  7.  
  8. ON ERROR OSCLI "REFRESH ON" : CLS : ON : VDU 7 : PRINT REPORT$ + " at line " + STR$ERL; : REPEAT UNTIL INKEY(1)=0
  9.  
  10. N% = 1000 : REM number of fire blobs
  11.  
  12. PROCFixWindowSize
  13.  
  14. WinW% = 256
  15. WinH% = 480
  16. VDU 23, 22, WinW%; WinH%; 8, 16, 16, 0 : OFF
  17.  
  18. SYS "timeBeginPeriod", 1
  19. SYS "QueryPerformanceFrequency", ^Freq%%
  20. Freq = 1000.0 / Freq%%
  21.  
  22. QueryPerformanceCounter% = FNSYS_NameToAddress( "QueryPerformanceCounter" )
  23. Sleep% = FNSYS_NameToAddress( "Sleep" )
  24. InvalidateRect% = FNSYS_NameToAddress( "InvalidateRect" )
  25.  
  26. DIM gfx{ bmBuffAddr%, bmBuffW%, bmBuffH%, \
  27. \ flags{paint&, flipY&}}
  28.  
  29. PROCassemble
  30.  
  31. DIM BITMAPINFOHEADER{Size%, Width%, Height%, Planes{l&,h&}, BitCount{l&,h&}, \
  32. \ Compression%, SizeImage%, XPelsPerMeter%, YPelsPerMeter%, \
  33. \ ClrUsed%, ClrImportant%}
  34. DIM bmi{Header{} = BITMAPINFOHEADER{}, Palette%(255)}
  35. bmi.Header.Size% = DIM(BITMAPINFOHEADER{})
  36. bmi.Header.Width% = @vdu%!208
  37. bmi.Header.Height% = @vdu%!212
  38. bmi.Header.Planes.l& = 1
  39. bmi.Header.BitCount.l& = 8
  40.  
  41. FOR I% = 0 TO 255
  42. READ rgb%
  43. r& = rgb% >> 16
  44. g& = rgb% >> 8
  45. b& = rgb%
  46. bmi.Palette%(I%) = b& + (g&<<8) + (r&<<16)
  47. NEXT I%
  48.  
  49. SYS "CreateDIBSection", @memhdc%, bmi{}, 0, ^bits%, 0, 0 TO hbitmap%
  50. IF hbitmap% = 0 ERROR 100, "Couldn't create DIBSection"
  51. SYS "SelectObject", @memhdc%, hbitmap% TO oldhbm%
  52. SYS "DeleteObject", oldhbm%
  53.  
  54. CLS : OFF
  55.  
  56. gfx.bmBuffAddr% = bits%
  57. gfx.bmBuffW% = @vdu%!208
  58. gfx.bmBuffH% = @vdu%!212
  59. gfx.flags.paint& = 1
  60. gfx.flags.flipY& = 0
  61.  
  62. REM create the fire blob/particle sprite:
  63. sprSz% = 49 : REM 49x49 at 8 bits-per-pixel
  64. DIM spr% sprSz%^2
  65. FOR Y% = 0 TO sprSz%-1
  66. FOR X% = 0 TO sprSz%-1
  67. d = SQR( (sprSz%/2 - X%)^2 + (sprSz%/2 - Y%)^2 )
  68. IF d < sprSz%/2 THEN
  69. spr%?(sprSz%*Y% + X%) = 255
  70. ENDIF
  71. NEXT
  72. NEXT
  73.  
  74. DIM x%(N%-1), Y%(N%-1), y(N%-1), yv(N%-1), ya(N%-1)
  75.  
  76. REM x%() is particle X co-ordinate
  77. REM y() is the current Y co-ordinate of the particle
  78. REM Y%() is maximum allowed Y co-ordinate before particle is reset
  79. REM yv() is Y velocity
  80. REM ya() is Y acceleration
  81.  
  82. REM Initialize all the fire blobs:
  83. FOR I% = 0 TO N%-1
  84. PROCnew
  85. NEXT
  86.  
  87. REM Copy some variables into static integers for (v. slight) performance boost:
  88. B% = spr%
  89. D% = gfx{}
  90. P% = GFXLIB_PlotShape%
  91. K% = sprSz%/2
  92. S% = sprSz%
  93.  
  94. *REFRESH OFF
  95.  
  96. SYS QueryPerformanceCounter%, ^time0%%
  97.  
  98. REPEAT
  99.  
  100. SYS QueryPerformanceCounter%, ^time1%%
  101. dt = Freq * (time1%% - time0%%)
  102. time0%% = time1%%
  103.  
  104. CLS
  105. FOR I% = 0 TO N%-1
  106. SYS P%, D%, B%, S%, S%, x%(I%)-K%, y(I%)-K%
  107. IF y(I%) > Y%(I%) THEN
  108. PROCnew
  109. ENDIF
  110. y(I%) += yv(I%) * dt
  111. yv(I%) += ya(I%) * dt
  112. NEXT
  113. SYS InvalidateRect%, @hwnd%, 0, 0
  114.  
  115. *REFRESH
  116.  
  117. SYS Sleep%, 2
  118.  
  119. UNTIL FALSE
  120. END
  121. :
  122. :
  123. :
  124. :
  125. DEF PROCnew
  126. a = 2*PI*RND(1)
  127. r = 48*RND(1)
  128. x%(I%) = WinW%/2 + r*SINa
  129. y(I%) = 32+r*COSa
  130. Y%(I%) = 64+RND(WinH%-64)
  131. ya(I%) = 0.0001 + 0.00075*RND(1)
  132. yv(I%) = ya(I%)*RND(100)
  133. ENDPROC
  134. :
  135. :
  136. :
  137. :
  138. DEF FNSYS_NameToAddress( f$ )
  139. LOCAL P%
  140. DIM P% LOCAL 5
  141. [OPT 0 : call f$ : ]
  142. =P%!-4+P%
  143. :
  144. :
  145. :
  146. :
  147. DEF PROCassemble
  148. LOCAL I%, P%, code%, varsblk%
  149. _gBMBUFFADDR = ^gfx.bmBuffAddr% - gfx{}
  150. _gBMBUFFW = ^gfx.bmBuffW% - gfx{}
  151. _gBMBUFFH = ^gfx.bmBuffH% - gfx{}
  152. _gPAINTF = ^gfx.flags.paint& - gfx{}
  153. _gFLIPYF = ^gfx.flags.flipY& - gfx{}
  154. DIM GFXLIB_clip{ skip1%, skip2%, skip3%, skip4%, check_y%, set_plotflag%, exit% }
  155. DIM GFXLIB_Plot{ cont%, xloop%, yloop%, next_pxl%, exit% }
  156. DIM GFXLIB_PlotShape{ cont%, xloop%, yloop%, next_pxl%, exit% }
  157. DIM code% 32767, varsblk% 4096
  158. FOR I% = 0 TO 2 STEP 2
  159. P% = code%
  160. [OPT I%
  161.  
  162. .GFXLIB_PlotShape%
  163.  
  164. ;
  165. ; SYS GFXLIB_PlotShape%, gfx{}, bmAddr, bmW, bmH, x, y
  166. ;
  167.  
  168. ;----*----*----*----*----*----*----*----|
  169.  
  170. pushad
  171.  
  172. ;REM. ESP +36 = gfx
  173. ;REM. ESP +40 = bmAddr
  174. ;REM. ESP +44 = bmW
  175. ;REM. ESP +48 = bmH
  176. ;REM. ESP +52 = x
  177. ;REM. ESP +56 = y
  178.  
  179. ;REM. ------------------------------------------------------
  180. ;REM. Setup the entry params for the bitmap clipping routine
  181. ;REM. ------------------------------------------------------
  182.  
  183. mov eax, [esp + 36] ; EAX = ptr to gfx{} struct
  184.  
  185. test BYTE [eax + _gPAINTF], &FF
  186. jz near GFXLIB_PlotShape.exit%
  187.  
  188. test BYTE [eax + _gFLIPYF], &FF
  189. jz GFXLIB_PlotShape.cont%
  190.  
  191. ;REM. Flip Y-coord
  192. mov ebx, [eax + 8] ; EBX = gfx.bmBuffH%
  193. sub ebx, [esp + 56] ; = gfx.bmBuffH% - y
  194. sub ebx, [esp + 48] ; = gfx.bmBuffH% - y - bmH
  195. mov [esp + 56], ebx ; store new Y
  196.  
  197. .GFXLIB_PlotShape.cont%
  198.  
  199. ;REM. copy GFXLIB_PlotShape's entry vars from the stack to varsblk% (this makes life easier)
  200.  
  201. mov ebx,[esp+40] : mov [varsblk%+64],ebx ; varsblk%+64 = bmAddr
  202. mov ebx,[esp+44] : mov [varsblk%+68],ebx ; varsblk%+68 = bmW
  203. mov ebx,[esp+48] : mov [varsblk%+72],ebx ; varsblk%+72 = bmH
  204. mov ebx,[esp+52] : mov [varsblk%+76],ebx ; varsblk%+76 = x
  205. mov ebx,[esp+56] : mov [varsblk%+80],ebx ; varsblk%+80 = y
  206.  
  207. ;REM. Call the clipping routine (GFXLIB_clip) after PUSHing the required vars onto the stack
  208.  
  209. ;REM. SYS GFXLIB_clip, gfx, bmW, bmH, bmX, bmY, clipValsBlk
  210.  
  211. push (varsblk%+128) ; ptr to clipValsBlk
  212. push dword [varsblk%+80] ; y
  213. push dword [varsblk%+76] ; x
  214. push dword [varsblk%+72] ; bmH
  215. push dword [varsblk%+68] ; bmW
  216. push eax ; ptr to params blk
  217. call GFXLIB_clip%
  218.  
  219. ;REM.
  220. ;REM. clipValsBlk
  221. ;REM.
  222. ;REM. +128 PlotShapeFlag (TRUE or FALSE) - if FALSE, do not attempt to PlotShape/display bitmap
  223. ;REM. +132 clipFlag (TRUE or FALSE) - if TRUE then clipping is required
  224. ;REM. +136 startX
  225. ;REM. +140 startY
  226. ;REM. +144 numRows
  227. ;REM. +148 rowLen
  228. ;REM. +152 skipRows
  229. ;REM. +156 skipPxls
  230. ;REM.
  231.  
  232. cmp [varsblk%+128], dword TRUE ; check PlotShapeFlag
  233. jne GFXLIB_PlotShape.exit% ; exit if PlotShapeFlag=FALSE
  234.  
  235. ;----*----*----*----*----*----*----*----|
  236.  
  237. ; EAX = ptr to params blk
  238.  
  239. mov ebx, [eax + 0] ; load base addr of 'bmp buffer' (bmpBuffAddr)
  240. mov ecx, [varsblk% + 140] ; startY
  241. imul ecx, [eax + 4] ; = startY*bmpBuffW
  242. add ecx, [varsblk% + 136] ; = startY*bmpBuffW + startX
  243. ;REM shl ecx, 2 ; = 4*(startY*bmpBuffW + startX)
  244. add ecx, ebx ; = bmpBuffAddr + 4*(startY*bmpBuffW + startX)
  245.  
  246. mov edi, [varsblk% + 64] ; bmAddr
  247.  
  248. mov ebx, [varsblk% + 152] ; skipRows
  249. add ebx, [varsblk% + 156] ; skipRows+skipPxls
  250. ;REM shl ebx, 2 ; 4*(skipRows + skipPxls)
  251. add edi, ebx ; bmAddr += 4*(skipRows + skipPxls)
  252.  
  253. mov ebp, [varsblk% + 68] ; bmW
  254. ;REM shl ebp, 2 ; = 4*bmW
  255.  
  256. mov eax, [eax + 4] ; bmBuffW
  257. ;REM shl eax, 2 ; = 4*bmBuffW
  258.  
  259. mov esi, [varsblk% + 144] ; numRows (Y-loop counter)
  260. dec esi ; numRows -= 1
  261.  
  262. .GFXLIB_PlotShape.yloop%
  263.  
  264. push esi ; preserve ESI (Y-loop counter)
  265.  
  266. mov esi, [varsblk% + 148] ; rowLen (X-loop counter)
  267. dec esi ; rowLen -= 1
  268.  
  269. .GFXLIB_PlotShape.xloop%
  270. movzx edx, BYTE [edi + esi] ; load byte from source bitmap
  271. test dl, &FF ; is it 0 ?
  272. jz GFXLIB_PlotShape.next_pxl% ; skip (i.e. don't PlotShape) if so
  273.  
  274. cmp BYTE [ecx + esi], &FF ; test dest byte
  275. je GFXLIB_PlotShape.next_pxl% ; skip if = 255
  276.  
  277. inc BYTE [ecx + esi] ; inc dest byte
  278.  
  279. .GFXLIB_PlotShape.next_pxl%
  280. dec esi ; X -= 1
  281. jge GFXLIB_PlotShape.xloop% ; loop if X >= 0
  282.  
  283. add edi, ebp ; bmAddr += 4*bmW
  284. add ecx, eax ; bmBuffAddr += 4*bmBuffW
  285.  
  286. pop esi ; recover numRows (Y-loop)
  287. dec esi ; Y -= 1
  288. jge GFXLIB_PlotShape.yloop% ; loop if Y >= 0
  289.  
  290. .GFXLIB_PlotShape.exit%
  291. popad
  292. ret (6*4)
  293.  
  294.  
  295.  
  296.  
  297.  
  298. .GFXLIB_clip% ; for internal use only
  299.  
  300. ; SYS GFXLIB_clip, gfx, bmW, bmH, bmX, bmY, clipValsBlk
  301.  
  302. ;
  303. ; On exit:
  304. ;
  305. ; clipValsBlk
  306. ;
  307. ; +0 plotFlag (TRUE or FALSE) - if FALSE, do not attempt to plot/display bitmap
  308. ; +4 clipFlag (TRUE or FALSE) - if TRUE, bitmap needs to be clipped
  309. ; +8 startX
  310. ; +12 startY
  311. ; +16 numRows
  312. ; +20 rowLen
  313. ; +24 skipRows
  314. ; +28 skipPxls
  315. ;
  316.  
  317. pushad
  318.  
  319. ; ESP+36 = gfx
  320. ; ESP+40 = bmW
  321. ; ESP+44 = bmH
  322. ; ESP+48 = x
  323. ; ESP+52 = y
  324. ; ESP+56 = clipValsBlk
  325.  
  326. ;----*----*----*----*----*----*----*----|
  327.  
  328. mov ebp, [esp + 56] ; EBP = ptr to clipvarsblk%
  329.  
  330. ; init. clipVarlBlk
  331.  
  332. mov [ebp + 0], dword FALSE ; plotFlag
  333. mov [ebp + 4], dword FALSE ; clipFlag
  334. mov eax,[esp+48] : mov [ebp + 8],eax ; startX = bmX
  335. mov eax,[esp+52] : mov [ebp +12],eax ; startY = bmY
  336. mov eax,[esp+44] : mov [ebp +16],eax ; numRows = bmH
  337. mov eax,[esp+40] : mov [ebp +20],eax ; rowLen = bmW
  338. mov [ebp +24], dword 0 ; skipRows
  339. mov [ebp +28], dword 0 ; skipPxls
  340.  
  341. cmp [esp+40], dword 0 ; is bmW <= 0 ?
  342. jle near GFXLIB_clip.exit%
  343.  
  344. cmp [esp+44], dword 0 ; is bmH <= 0 ?
  345. jle near GFXLIB_clip.exit%
  346.  
  347. mov esi, [esp + 36] ; load ptr to params blk
  348.  
  349. mov eax, [esp + 48] ; load bmX
  350. mov ebx, [esp + 52] ; load bmY
  351.  
  352. cmp eax, [esi + 4] ; is bmX >= bmpBuffW ?
  353. jge near GFXLIB_clip.exit%
  354.  
  355. mov ecx, [esp+40] ; bmW
  356. neg ecx ; -bmW
  357. cmp eax, ecx ; is bmX <= -bmW
  358. jle near GFXLIB_clip.exit%
  359.  
  360. cmp ebx, [esi + 8] ; is bmY >= bmpBuffH ?
  361. jge near GFXLIB_clip.exit%
  362.  
  363. mov ecx, [esp+44] ; bmH
  364. neg ecx ; -bmH
  365. cmp ebx, ecx ; is bmY <= -bmH
  366. jle near GFXLIB_clip.exit%
  367.  
  368. ;REM IF bmX% < 0 AND (bmX% + bmW%) < bmBuffW% THEN
  369. ;REM clip% = TRUE
  370. ;REM rowlen% += bmX%
  371. ;REM skippxls% = -bmX%
  372. ;REM x`% = 0
  373. ;REM ENDIF
  374.  
  375. cmp eax, 0 ; bmX < 0 ?
  376. jge near GFXLIB_clip.skip1%
  377. mov ecx, [esp+40] ; ecx = bmW
  378. add ecx, eax ; = bmX + bmW
  379. cmp ecx, [esi+4] ; (bmX + bmW) < bmpBuffW ?
  380. jge near GFXLIB_clip.skip1%
  381. mov [ebp+4], dword TRUE ; clipFlag = TRUE
  382. add [ebp+20], eax ; rowLen += bmX (note bmX is -ve)
  383. mov [ebp+28], eax ; skipPxls = -bmX
  384. neg dword [ebp+28] ;
  385. mov [ebp+8], dword 0 ; startX = 0
  386.  
  387. .GFXLIB_clip.skip1%
  388.  
  389. ;REM IF bmX% > bmBuffW%-bmW% THEN
  390. ;REM clip% = TRUE
  391. ;REM rowlen% = bmBuffW% - bmX%
  392. ;REM ENDIF
  393.  
  394. mov ecx, [esi+4] ; ecx = bmpBuffW
  395. mov edx, ecx ; copy ecx
  396. sub ecx, [esp+40] ; ecx -= bmW
  397. cmp eax, ecx ; is bmX > bmpBuffW-bmW ?
  398. jle near GFXLIB_clip.skip2%
  399. mov [ebp+4], dword TRUE ; clipFlag = TRUE
  400. sub edx, eax ; bmpBuffW - bmX
  401. mov [ebp+20], edx ; rowLen = bmpBuffW - bmX
  402.  
  403. .GFXLIB_clip.skip2%
  404.  
  405. ;REM IF bmX% < 0 AND (bmX% + bmW%) >= bmBuffW% THEN
  406. ;REM clip% = TRUE
  407. ;REM rowlen% = bmBuffW%
  408. ;REM skippxls% = -bmX%
  409. ;REM x`% = 0
  410. ;REM ENDIF
  411.  
  412. cmp eax, 0
  413. jge near GFXLIB_clip.check_y%
  414. mov ecx, [esp+40] ; ecx = bmW
  415. add ecx, eax ; = bmX + bmW
  416. cmp ecx, [esi+4] ; is (bmX+bmW) >= bmpBuffW ?
  417. jl near GFXLIB_clip.check_y%
  418. mov [ebp+4], dword TRUE ; clipFlag = TRUE
  419. mov ecx, [esi+4] ; bmpBuffW
  420. mov [ebp+20], ecx ; rowLen = bmpBuffW
  421. mov ecx, eax ; ecx = bmX
  422. neg ecx ; = -bmX
  423. mov [ebp+28], ecx ; skipPxls = -bmX
  424. mov [ebp+8], dword 0 ; startX = 0
  425.  
  426. .GFXLIB_clip.check_y%
  427.  
  428. ;REM IF bmY% < 0 AND (bmY% + bmH%) < bmBuffH% THEN
  429. ;REM clip% = TRUE
  430. ;REM numrows% += bmY%+bmH%
  431. ;REM skiprows% -= bmW%*bmY%
  432. ;REM y`% = 0
  433. ;REM ENDIF
  434.  
  435. cmp ebx, 0 ; bmY < 0 ?
  436. jge near GFXLIB_clip.skip3%
  437. mov ecx, [esp+44] ; ecx = bmH
  438. mov edx, ecx ; copy ecx (bmH)
  439. add ecx, ebx ; bmY + bmH
  440. cmp ecx, [esi+8] ; is (bmY+bmH) < bmpBuffH ?
  441. jge near GFXLIB_clip.skip3%
  442. mov [ebp+4], dword TRUE ; clipFlag = TRUE
  443. mov [ebp+16], ebx ; numRows = bmY
  444. add [ebp+16], edx ; = bmY+bmH
  445. mov ecx, ebx ; ecx = bmY
  446. imul ecx, [esp+40] ; = bmY*bmW
  447. sub [ebp+24], ecx ; skipRows -= bmY*bmW
  448. mov [ebp+12], dword 0 ; startY = 0
  449.  
  450. .GFXLIB_clip.skip3%
  451.  
  452. ;REM IF bmY% > bmBuffH%-bmH% THEN
  453. ;REM clip% = TRUE
  454. ;REM numrows% = bmBuffH% - bmY%
  455. ;REM ENDIF
  456.  
  457. mov ecx, [esi+8] ; ecx = bmpBuffH
  458. sub ecx, [esp+44] ; = bmpBuffH - bmH
  459. cmp ebx, ecx ; is bmY > (bmpBuffH-bmH) ?
  460. jle near GFXLIB_clip.skip4%
  461. mov [ebp+4], dword TRUE ; clipFlag = TRUE
  462. mov ecx, [esi+8] ; ecx = bmpBuffH
  463. sub ecx, ebx ; bmpBuffH-bmY
  464. mov [ebp+16], ecx ; numRows = bmpBuffH-bmY
  465.  
  466. .GFXLIB_clip.skip4%
  467.  
  468. ;REM IF bmY% < 0 AND (bmY% + bmH%) >= bmBuffH% THEN
  469. ;REM clip% = TRUE
  470. ;REM numrows% = bmBuffH%
  471. ;REM skiprows% -= bmW%*bmY%
  472. ;REM y`% = 0
  473. ;REM ENDIF
  474.  
  475. cmp ebx, 0 ; is bmY < 0 ?
  476. jge GFXLIB_clip.set_plotflag%
  477. mov ecx, [esp+44] ; ecx = bmH
  478. add ecx, ebx ; ecx = bmY+bmH
  479. cmp ecx, [esi+8] ; is (bmY+bmH) >= bmpBuffH ?
  480. jl GFXLIB_clip.set_plotflag%
  481. mov [ebp+4], dword TRUE ; clipFlag = TRUE
  482. mov ecx, [esi+8] ; ecx = bmpBuffH
  483. mov [ebp+16], ecx ; numRows = bmpBuffH
  484. mov ecx, [esp+40]
  485. imul ecx, ebx ; bmW*bmY
  486. sub [ebp+24], ecx ; skipRows -= bmW*bmY
  487. mov [ebp+12], dword 0 ; startY = 0
  488.  
  489. .GFXLIB_clip.set_plotflag%
  490. mov [ebp+0], dword TRUE ; plot flag = TRUE
  491.  
  492. .GFXLIB_clip.exit%
  493. popad
  494. ret (6*4)
  495.  
  496. ]
  497. NEXT I%
  498. ENDPROC
  499.  
  500. DEF PROCFixWindowSize
  501. REM GWL_STYLE = -16
  502. REM WS_THICKFRAME = &40000
  503. REM WS_MAXIMIZEBOX = &10000
  504. REM SYS "GetWindowLong", @hwnd%, GWL_STYLE TO ws%
  505. REM SYS "SetWindowLong", @hwnd%, GWL_STYLE, ws% AND NOT WS_THICKFRAME \
  506. REM \ AND NOT WS_MAXIMIZEBOX
  507. LOCAL W%
  508. SYS "GetWindowLong", @hwnd%, -16 TO W%
  509. SYS "SetWindowLong", @hwnd%, -16, W% AND NOT &40000 AND NOT &10000
  510. ENDPROC
  511.  
  512. DATA &60000
  513. DATA &E0000
  514. DATA &170000
  515. DATA &210000
  516. DATA &2C0000
  517. DATA &380000
  518. DATA &440000
  519. DATA &510000
  520. DATA &5F0000
  521. DATA &6D0000
  522. DATA &7B0000
  523. DATA &880000
  524. DATA &940000
  525. DATA &A00000
  526. DATA &AD0000
  527. DATA &B80000
  528. DATA &C40000
  529. DATA &CF0000
  530. DATA &D90000
  531. DATA &E20000
  532. DATA &EA0000
  533. DATA &F20000
  534. DATA &F90000
  535. DATA &FF0000
  536. DATA &FF0500
  537. DATA &FF0A00
  538. DATA &FF1100
  539. DATA &FF1800
  540. DATA &FF1F00
  541. DATA &FF2800
  542. DATA &FF3100
  543. DATA &FF3A00
  544. DATA &FF4400
  545. DATA &FF4E00
  546. DATA &FF5900
  547. DATA &FF6300
  548. DATA &FF6E00
  549. DATA &FF7900
  550. DATA &FF8200
  551. DATA &FF8800
  552. DATA &FF8E00
  553. DATA &FF9400
  554. DATA &FF9900
  555. DATA &FF9F00
  556. DATA &FFA500
  557. DATA &FFAA00
  558. DATA &FFB000
  559. DATA &FFB600
  560. DATA &FFBB00
  561. DATA &FFC000
  562. DATA &FFC600
  563. DATA &FFCB00
  564. DATA &FFD000
  565. DATA &FFD400
  566. DATA &FFD900
  567. DATA &FFDE00
  568. DATA &FFE200
  569. DATA &FFE600
  570. DATA &FFEA00
  571. DATA &FFEE00
  572. DATA &FFF200
  573. DATA &FFF500
  574. DATA &FFF800
  575. DATA &FFFB00
  576. DATA &FFFE00
  577. DATA &FFFF02
  578. DATA &FFFF05
  579. DATA &FFFF0A
  580. DATA &FFFF0E
  581. DATA &FFFF13
  582. DATA &FFFF19
  583. DATA &FFFF1F
  584. DATA &FFFF25
  585. DATA &FFFF2C
  586. DATA &FFFF33
  587. DATA &FFFF3A
  588. DATA &FFFF41
  589. DATA &FFFF48
  590. DATA &FFFF50
  591. DATA &FFFF58
  592. DATA &FFFF60
  593. DATA &FFFF69
  594. DATA &FFFF71
  595. DATA &FFFF79
  596. DATA &FFFF82
  597. DATA &FFFF8C
  598. DATA &FFFF97
  599. DATA &FFFFA1
  600. DATA &FFFFAB
  601. DATA &FFFFB6
  602. DATA &FFFFBF
  603. DATA &FFFFC9
  604. DATA &FFFFD1
  605. DATA &FFFFDA
  606. DATA &FFFFE2
  607. DATA &FFFFE9
  608. DATA &FFFFF0
  609. DATA &FFFFF6
  610. DATA &FFFFFB
  611. DATA &FFFFFF
  612. DATA &FFFFFF
  613. DATA &FFFFFF
  614. DATA &FFFFFF
  615. DATA &FFFFFF
  616. DATA &FFFFFF
  617. DATA &FFFFFF
  618. DATA &FFFFFF
  619. DATA &FFFFFF
  620. DATA &FFFFFF
  621. DATA &FFFFFF
  622. DATA &FFFFFF
  623. DATA &FFFFFF
  624. DATA &FFFFFF
  625. DATA &FFFFFF
  626. DATA &FFFFFF
  627. DATA &FFFFFF
  628. DATA &FFFFFF
  629. DATA &FFFFFF
  630. DATA &FFFFFF
  631. DATA &FFFFFF
  632. DATA &FFFFFF
  633. DATA &FFFFFF
  634. DATA &FFFFFF
  635. DATA &FFFFFF
  636. DATA &FFFFFF
  637. DATA &FFFFFF
  638. DATA &FFFFFF
  639. DATA &FFFFFF
  640. DATA &FFFFFF
  641. DATA &FFFFFF
  642. DATA &FFFFFF
  643. DATA &FFFFFF
  644. DATA &FFFFFF
  645. DATA &FFFFFF
  646. DATA &FFFFFF
  647. DATA &FFFFFF
  648. DATA &FFFFFF
  649. DATA &FFFFFF
  650. DATA &FFFFFF
  651. DATA &FFFFFF
  652. DATA &FFFFFF
  653. DATA &FFFFFF
  654. DATA &FFFFFF
  655. DATA &FFFFFF
  656. DATA &FFFFFF
  657. DATA &FFFFFF
  658. DATA &FFFFFF
  659. DATA &FFFFFF
  660. DATA &FFFFFF
  661. DATA &FFFFFF
  662. DATA &FFFFFF
  663. DATA &FFFFFF
  664. DATA &FFFFFF
  665. DATA &FFFFFF
  666. DATA &FFFFFF
  667. DATA &FFFFFF
  668. DATA &FFFFFF
  669. DATA &FFFFFF
  670. DATA &FFFFFF
  671. DATA &FFFFFF
  672. DATA &FFFFFF
  673. DATA &FFFFFF
  674. DATA &FFFFFF
  675. DATA &FFFFFF
  676. DATA &FFFFFF
  677. DATA &FFFFFF
  678. DATA &FFFFFF
  679. DATA &FFFFFF
  680. DATA &FFFFFF
  681. DATA &FFFFFF
  682. DATA &FFFFFF
  683. DATA &FFFFFF
  684. DATA &FFFFFF
  685. DATA &FFFFFF
  686. DATA &FFFFFF
  687. DATA &FFFFFF
  688. DATA &FFFFFF
  689. DATA &FFFFFF
  690. DATA &FFFFFF
  691. DATA &FFFFFF
  692. DATA &FFFFFF
  693. DATA &FFFFFF
  694. DATA &FFFFFF
  695. DATA &FFFFFF
  696. DATA &FFFFFF
  697. DATA &FFFFFF
  698. DATA &FFFFFF
  699. DATA &FFFFFF
  700. DATA &FFFFFF
  701. DATA &FFFFFF
  702. DATA &FFFFFF
  703. DATA &FFFFFF
  704. DATA &FFFFFF
  705. DATA &FFFFFF
  706. DATA &FFFFFF
  707. DATA &FFFFFF
  708. DATA &FFFFFF
  709. DATA &FFFFFF
  710. DATA &FFFFFF
  711. DATA &FFFFFF
  712. DATA &FFFFFF
  713. DATA &FFFFFF
  714. DATA &FFFFFF
  715. DATA &FFFFFF
  716. DATA &FFFFFF
  717. DATA &FFFFFF
  718. DATA &FFFFFF
  719. DATA &FFFFFF
  720. DATA &FFFFFF
  721. DATA &FFFFFF
  722. DATA &FFFFFF
  723. DATA &FFFFFF
  724. DATA &FFFFFF
  725. DATA &FFFFFF
  726. DATA &FFFFFF
  727. DATA &FFFFFF
  728. DATA &FFFFFF
  729. DATA &FFFFFF
  730. DATA &FFFFFF
  731. DATA &FFFFFF
  732. DATA &FFFFFF
  733. DATA &FFFFFF
  734. DATA &FFFFFF
  735. DATA &FFFFFF
  736. DATA &FFFFFF
  737. DATA &FFFFFF
  738. DATA &FFFFFF
  739. DATA &FFFFFF
  740. DATA &FFFFFF
  741. DATA &FFFFFF
  742. DATA &FFFFFF
  743. DATA &FFFFFF
  744. DATA &FFFFFF
  745. DATA &FFFFFF
  746. DATA &FFFFFF
  747. DATA &FFFFFF
  748. DATA &FFFFFF
  749. DATA &FFFFFF
  750. DATA &FFFFFF
  751. DATA &FFFFFF
  752. DATA &FFFFFF
  753. DATA &FFFFFF
  754. DATA &FFFFFF
  755. DATA &FFFFFF
  756. DATA &FFFFFF
  757. DATA &FFFFFF
  758. DATA &FFFFFF
  759. DATA &FFFFFF
  760. DATA &FFFFFF
  761. DATA &FFFFFF
  762. DATA &FFFFFF
  763. DATA &FFFFFF
  764. DATA &FFFFFF
  765. DATA &FFFFFF
  766. DATA &FFFFFF
  767. DATA &FFFFFF
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement