Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- REM Fire effect (frame-rate independent)
- REM Works with BB4W and BBCSDL
- ON ERROR PROCerror
- N% = 1000 : REM number of fire particles
- Wait% = FALSE
- REM -------------------------------------
- BB4W% = (INKEY(-256) == &57)
- IF BB4W% THEN
- *ESC OFF
- GetTicks$ = "GetTickCount"
- SetWindowText$ = "SetWindowText"
- ELSE
- GetTicks$ = "SDL_GetTicks"
- SetWindowText$ = "SDL_SetWindowTitle"
- ENDIF
- REM -------------------------------------
- REM This code segment is the work of RTR:
- p = PI
- CASE !^p OF
- WHEN &2168C235: cpu$ = "x86"
- WHEN &54442D18: cpu$ = "arm"
- OTHERWISE: QUIT
- ENDCASE
- REM -------------------------------------
- WinW% = 360
- WinH% = 640
- VDU 23, 22, WinW%; WinH%; 8, 16, 16, 0 : OFF
- ClipBitmap% = FNread_data( "clipbitmap_" + cpu$ )
- Clr% = FNread_data( "clr8_360x640_" + cpu$ )
- Plot% = FNread_data( "plot8_incbgpixels_" + cpu$ )
- bmpSz% = 54 + 4*256 + WinW%*WinH% + 2
- DIM bmp% bmpSz%+6
- bmp% = ((bmp% + 3) AND -4) + 2
- bmp%?0 = ASC"B"
- bmp%?1 = ASC"M"
- bmp%!2 = bmpSz%
- bmp%!10 = 1078
- bmp%!14 = 40
- bmp%!18 = WinW%
- bmp%!22 = WinH%
- bmp%?26 = 1
- bmp%?28 = 8
- bmp%!30 = 0
- bmp%!34 = WinW%*WinH%
- bmp$ = STR$~bmp%
- RESTORE
- FOR I% = 0 TO 255
- READ rgb%
- r& = rgb% >> 16
- g& = rgb% >> 8
- b& = rgb%
- bmp%!(54 + 4*I%) = b& + (g&<<8) + (r&<<16)
- NEXT I%
- REM create the fire blob/particle sprite:
- sprSz% = 49 : REM 49x49 at 8 bits-per-pixel
- DIM spr% sprSz%^2
- FOR Y% = 0 TO sprSz%-1
- FOR X% = 0 TO sprSz%-1
- d = SQR( (sprSz%/2 - X%)^2 + (sprSz%/2 - Y%)^2 )
- IF d < sprSz%/2 THEN
- spr%?(sprSz%*Y% + X%) = 255
- ENDIF
- NEXT
- NEXT
- DIM x%(N%-1), Y%(N%-1), y(N%-1), yv(N%-1), ya(N%-1)
- REM x%() is particle X co-ordinate
- REM y() is the current Y co-ordinate of the particle
- REM Y%() is maximum allowed Y co-ordinate before particle is reset
- REM yv() is Y velocity
- REM ya() is Y acceleration
- REM Initialize all the fire blobs:
- FOR I% = 0 TO N%-1
- PROCnew
- NEXT
- clipVars% = FNmalloc( 64 )
- bfVars% = FNmalloc( 16 )
- bmVars% = FNmalloc( 32 )
- clipVars%!0 = ClipBitmap%
- bfVars%!0 = bmp% + bmp%!10
- bfVars%!4 = WinW%
- bfVars%!8 = WinH%
- bmVars%!0 = spr%
- bmVars%!4 = sprSz%
- bmVars%!8 = sprSz%
- X% = bmVars% + 12
- Y% = bmVars% + 16
- K% = sprSz% / 2
- P% = Plot%
- SYS GetTicks$ TO time0%
- REPEAT
- SYS GetTicks$ TO time1%
- dt = time1% - time0%
- time0% = time1%
- A% = !bfVars% : B% = 0 : CALL Clr%
- A% = clipVars%
- B% = bfVars%
- C% = bmVars%
- FOR I% = 0 TO N%-1
- !X% = x%(I%)-K%
- !Y% = y(I%)-K%
- CALL P%
- IF y(I%) > Y%(I%) THEN
- PROCnew
- ENDIF
- y(I%) += yv(I%) * dt
- yv(I%) += ya(I%) * dt
- NEXT
- OSCLI "MDISPLAY " + bmp$
- IF Wait% THEN WAIT 1
- UNTIL FALSE
- END
- DEF PROCnew
- a = 2*PI*RND(1)
- r = 48*RND(1)
- x%(I%) = WinW%/2 + r*SINa
- y(I%) = 32+r*COSa
- Y%(I%) = 64+RND(WinH%-64)
- ya(I%) = 0.0001 + 0.00075*RND(1)
- yv(I%) = ya(I%)*RND(100)
- ENDPROC
- DEF FNmalloc( N% )
- LOCAL A%
- DIM A% N%+15
- A% = (A% + 7) AND -8
- = A%
- DEF FNread_data( r$ )
- LOCAL I%, data%, byte%, s$
- data% = FNmalloc( 1024 )
- RESTORE
- REPEAT : READ s$ : UNTIL s$ = r$
- I% = 0
- REPEAT
- READ byte%
- IF byte% <> -1 THEN
- data%?I% = byte%
- I% += 1
- ENDIF
- UNTIL byte% = -1
- = data%
- DEF PROCerror
- BB4W% += 0
- IF ERR=17 AND BB4W%=FALSE THEN CHAIN @lib$+"../examples/tools/touchide"
- OSCLI "REFRESH ON" : CLS : ON : SOUND 1, -15, 200, 3
- COLOUR 15, 255, 255, 255 : COLOUR 15
- PRINT '" " + REPORT$ + " at line " + STR$ERL
- COLOUR 15, 200, 200, 200
- PRINT ''" Closing in 3 seconds...";
- WAIT 300
- QUIT
- ENDPROC
- DATA &60000
- DATA &E0000
- DATA &170000
- DATA &210000
- DATA &2C0000
- DATA &380000
- DATA &440000
- DATA &510000
- DATA &5F0000
- DATA &6D0000
- DATA &7B0000
- DATA &880000
- DATA &940000
- DATA &A00000
- DATA &AD0000
- DATA &B80000
- DATA &C40000
- DATA &CF0000
- DATA &D90000
- DATA &E20000
- DATA &EA0000
- DATA &F20000
- DATA &F90000
- DATA &FF0000
- DATA &FF0500
- DATA &FF0A00
- DATA &FF1100
- DATA &FF1800
- DATA &FF1F00
- DATA &FF2800
- DATA &FF3100
- DATA &FF3A00
- DATA &FF4400
- DATA &FF4E00
- DATA &FF5900
- DATA &FF6300
- DATA &FF6E00
- DATA &FF7900
- DATA &FF8200
- DATA &FF8800
- DATA &FF8E00
- DATA &FF9400
- DATA &FF9900
- DATA &FF9F00
- DATA &FFA500
- DATA &FFAA00
- DATA &FFB000
- DATA &FFB600
- DATA &FFBB00
- DATA &FFC000
- DATA &FFC600
- DATA &FFCB00
- DATA &FFD000
- DATA &FFD400
- DATA &FFD900
- DATA &FFDE00
- DATA &FFE200
- DATA &FFE600
- DATA &FFEA00
- DATA &FFEE00
- DATA &FFF200
- DATA &FFF500
- DATA &FFF800
- DATA &FFFB00
- DATA &FFFE00
- DATA &FFFF02
- DATA &FFFF05
- DATA &FFFF0A
- DATA &FFFF0E
- DATA &FFFF13
- DATA &FFFF19
- DATA &FFFF1F
- DATA &FFFF25
- DATA &FFFF2C
- DATA &FFFF33
- DATA &FFFF3A
- DATA &FFFF41
- DATA &FFFF48
- DATA &FFFF50
- DATA &FFFF58
- DATA &FFFF60
- DATA &FFFF69
- DATA &FFFF71
- DATA &FFFF79
- DATA &FFFF82
- DATA &FFFF8C
- DATA &FFFF97
- DATA &FFFFA1
- DATA &FFFFAB
- DATA &FFFFB6
- DATA &FFFFBF
- DATA &FFFFC9
- DATA &FFFFD1
- DATA &FFFFDA
- DATA &FFFFE2
- DATA &FFFFE9
- DATA &FFFFF0
- DATA &FFFFF6
- DATA &FFFFFB
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA &FFFFFF
- DATA "clipbitmap_x86"
- DATA 96,199,64,28,255,255,255,255,139,120,20,59,120,4,15,141,192,0,0,0,139,112,24,59,112,8,15,141,180,0,0,0,139,72,12,139,80,16,131,249,0,125,3,247,217,144,131,250
- DATA 0,125,3,247,218,144,247,217,59,249,15,142,148,0,0,0,247,218,59,242,15,142,138,0,0,0,247,217,247,218,199,64,28,0,0,0,0,199,64,32,0,0,0,0,199,64,36,0
- DATA 0,0,0,199,64,40,0,0,0,0,137,72,44,137,80,48,137,120,52,137,112,56,139,239,3,233,59,104,4,126,13,43,104,4,41,104,44,199,64,32,255,255,255,255,131,255,0,125
- DATA 20,41,120,40,1,120,44,199,64,52,0,0,0,0,199,64,32,255,255,255,255,139,238,3,234,59,104,8,126,13,43,104,8,41,104,48,199,64,32,255,255,255,255,131,254,0,125,20
- DATA 41,112,36,1,112,48,199,64,56,0,0,0,0,199,64,32,255,255,255,255,97,195
- DATA -1
- DATA "clr8_360x640_x86"
- DATA 96,139,248,139,195,37,255,0,0,0,139,208,193,226,8,11,194,139,208,193,226,16,11,194,185,0,225,0,0,252,243,171,97,195
- DATA -1
- DATA "plot8_incbgpixels_x86"
- DATA 96,131,236,32,139,83,4,139,123,8,137,80,4,137,120,8,139,81,4,139,121,8,137,80,12,137,120,16,139,81,12,139,121,16,137,80,20,137,120,24,255,16,247,64,28,255,255,255
- DATA 255,15,133,73,0,0,0,139,27,139,9,139,120,4,137,60,36,15,175,120,56,3,120,52,3,251,139,112,12,137,116,36,4,15,175,112,36,3,112,40,3,241,139,80,44,139,104,48
- DATA 51,201,246,4,14,255,116,9,128,60,15,255,116,3,254,4,15,65,59,202,124,236,3,60,36,3,116,36,4,77,117,224,131,196,32,97,195
- DATA -1
- DATA "clipbitmap_arm"
- DATA 255,95,45,233,0,192,224,227,28,192,128,229,4,176,128,226,126,0,155,232,1,0,85,225,255,159,189,168,2,0,86,225,255,159,189,168,3,0,117,225,255,159,189,216,4,0,118,225
- DATA 255,159,189,216,148,208,143,229,148,224,143,229,0,208,160,227,0,224,224,227,28,208,128,229,32,208,128,229,0,112,160,227,0,128,160,227,3,144,160,225,4,160,160,225,3,176,133,224
- DATA 1,0,91,225,1,176,75,192,11,144,73,192,32,224,128,197,0,0,85,227,5,128,72,176,5,144,137,176,0,80,160,179,32,224,128,181,4,176,134,224,2,0,91,225,2,176,75,192
- DATA 11,160,74,192,32,224,128,197,0,0,86,227,6,112,71,176,6,160,138,176,0,96,160,179,32,224,128,181,36,112,128,229,40,128,128,229,44,144,128,229,48,160,128,229,52,80,128,229
- DATA 56,96,128,229,4,208,159,229,4,224,159,229,255,159,189,232,0,0,0,0,0,0,0,0
- DATA -1
- DATA "clr8_360x640_arm"
- DATA 255,95,45,233,116,208,143,229,116,224,143,229,255,16,1,226,1,20,129,225,1,24,129,225,1,32,160,225,2,48,160,225,2,64,160,225,2,80,160,225,2,96,160,225,2,112,160,225
- DATA 2,128,160,225,2,144,160,225,2,160,160,225,2,176,160,225,2,192,160,225,2,208,160,225,2,224,160,225,10,29,160,227,252,127,160,232,252,127,160,232,252,127,160,232,252,127,160,232
- DATA 252,127,160,232,252,127,160,232,252,63,160,232,1,16,81,226,246,255,255,26,4,208,159,229,4,224,159,229,255,159,189,232,0,0,0,0,0,0,0,0
- DATA -1
- DATA "plot8_incbgpixels_arm"
- DATA 255,95,45,233,4,64,145,229,8,80,145,229,4,96,146,229,8,112,146,229,12,128,146,229,16,144,146,229,4,64,128,229,8,80,128,229,12,96,128,229,16,112,128,229,20,128,128,229
- DATA 24,144,128,229,0,192,144,229,60,255,47,225,28,192,144,229,0,0,92,227,255,159,189,24,0,16,145,229,0,32,146,229,36,80,144,229,40,112,144,229,44,128,144,229,48,144,144,229
- DATA 52,160,144,229,56,176,144,229,88,208,143,229,88,224,143,229,155,164,42,224,10,16,129,224,149,118,39,224,7,32,130,224,0,48,160,227,3,80,210,231,255,0,21,227,3,0,0,10
- DATA 3,80,209,231,255,0,85,227,1,80,133,18,3,80,193,23,1,48,131,226,8,0,83,225,245,255,255,186,6,32,130,224,4,16,129,224,1,144,89,226,240,255,255,26,4,208,159,229
- DATA 4,224,159,229,255,159,189,232,0,0,0,0,0,0,0,0
- DATA -1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement