Advertisement
Guest User

Animated fire effect (BB4W)

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