A modification of Graphics Programming Black Book by Michael Abrash, chapter 49.
Written using Borland C++ 3.1 under FreeDOS inside 86Box
I used WinImage to get files in and out of the emulated DOS machine's hard disk image.
This one animates the smoke, makes the kites fly across the top of the screen and adds a little duck that swims across the water.
Maybe not the most well structured code, but I was messing around and having some fun.
Install all the stuff above, clone this repo, get it into your emulated DOS machine and then type
BC L49-5
It should open the project, you can then compile and run it from the menu.