The video explained enough, looks like light is being stopped by each pixel in the map. Challenge worth trying. I have only done similar with polygons and opengl before, those principles don't work here.
Don't think you got my point... I was saying that the idea that implementing the lighting in OpenGL would be somehow more "hard to understand" doesn't make sense. As shown by your example code, doing it in software requires a whole lot of manual math that wouldn't be necessary if you did use OpenGL.
actually it would make things harder to learn for any one that has no idea what opengl does and how.
Still makes no sense. You're saying that you think implementing something from scratch using entirely custom math is easier than using a graphics API that has built-in functions specifically meant for those purposes.
That being said, for the sake of Handoko's original challenge, I made a reworked version of User137's example that uses TBGRABitmaps and a TBGRAVirtualScreeen (instead of TBitmaps and a TImage), and have attached a zip file that contains my modified project files as well as the PNG backgrounds to this post. You'll need the "BGRAControls" package installed, obviously.
This version actually runs at what I would call "full speed", although I would still strongly recommend that nobody ever attempt to actually write real games using software imaging techniques. Use OpenGL or a similiar hardware graphics API. There is nothing harder or "scarier" about them then any other aspect of programming you'd need to know to make games...