' ****** START INCLUDE Rgba Core:::RgbaBox(x1%, y1%, x2%, y2%, c&, a~%%) ******
DIM r0%, g0%, b0%, a0%, r1%, g1%, b1%, a1%
DIM RgbaAreaBorder& = &h1

SUB SetRgb0(x#,y#)
    DIM c& = (POINT(x#,y#))
    r0% = _RED(c&)
    g0% = _GREEN(c&)
    b0% = _BLUE(c&)
END SUB

SUB SetRgb1(c&,a~%%)
    r1% = _RED(c&)
    g1% = _GREEN(c&)
    b1% = _BLUE(c&)
    a0% = 255 - a~%%
    a1% = a~%%
END SUB

SUB RgbaCorePset(x#,y#)
    PSET(x#,y#), _RGB( [{ (r0%*a0%)+(r1%*a1%) }/255], [{ (g0%*a0%)+(g1%*a1%) }/255], [{ (b0%*a0%)+(b1%*a1%) }/255] )
END SUB



SUB RgbaBox(x1#, y1#, x2#, y2#, c&, a~%%)
    DIM x#, y# : SetRgb1(c&, a~%%)
    FOR x# = FIX(MAX(MIN(x1#,x2#),0)) TO FIX(MIN(MAX(x1#,x2#), xMAX))
      FOR y#  = FIX(MAX(MIN(y1#,y2#),0)) TO FIX(MIN(MAX(y1#,y2#), yMAX))
        SetRgb0(x#,y#) : RgbaCorePset(x#,y#)
    NEXT y# : NEXT x#
END SUB
'  ****** END INCLUDE Rgba Core:::RgbaBox(x1%, y1%, x2%, y2%, c&, a~%%) ******' This program exported from BASIC Anywhere Machine (Version [5.2.3].[2024.09.09.00.00]) on 2025.07.05 at 03:12 (Coordinated Universal Time)
' This program is a port and mod, by Charlie Veniot, of the Apple II "Fireworks" program by Lee Fastenau
' fournd on the "APPLE II PROGRAMS" website (https://www.apple2programs.com/programs/2019/01/13/fireworks.html)



SCREEN _NEWIMAGE( 380, 270, 32 )
_INITAUDIO
DIM crgb%(1 TO 3)
DEF FNC = INT(RND*76+170)

🎇_launch_a_firework:
  X = INT( RND * ( XMAX - 80 ) + 40 )
  crgb%(1) = INT( RND * 2 )
  crgb%(2) = INT( RND * 2 )
  crgb%(3) = INT( RND * 2 )
  IF crgb%(1) + crgb%(2) + crgb%(3) = 0 THEN crgb%( INT(RND*3+1) ) = 1
  crgb%(1) *= FNC() ' INT(RND*56+200)
  crgb%(2) *= FNC() ' INT(RND*56+200)
  crgb%(3) *= FNC() ' INT(RND*56+200)
  
  this_c = _RGB( crgb%(1), crgb%(2), crgb%(3) )
  min_y = INT( RND * ( YMAX - 80 ) + 40 ) 'INT( RND * 100 ) + 60
  max_y = min_y + 70 ' 261
  
  FOR Y = max_y TO min_y STEP - 1 
      COLOR ABS( _RGB(105,105,105 ) * ( Y > min_y + 29 ) )
      PLOT ( X , Y )
      COLOR 0
      PLOT ( X, Y + 30 )
      PLOT ( X, Y + INT( RND * 15 + 10 ) )
      SLEEP 0.001
  NEXT
  
  RgbaBox(0,0,xmax, ymax, 0, 22 ) : SCROLL (0,0) TO (XMAX, YMAX), 0, 1  

  SOUND 25, 1/5
  max_r = INT( RND * 60 + 10)
  r_adj = RND * 2
  FOR R = 0 TO max_r  STEP 0.6
      A = SIN(R+r_adj) * R
      B = COS(R+r_adj) * R
      PLOT ( X + A, min_y - 20 + B ), this_c
      SLEEP 0.001
  NEXT

GOTO 🎇_launch_a_firework