Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Исходники Форум Информер Страны мира
   Demo Making    >>    otfire
   
 
 Outlaw Triad Demo Series, Part 1 - FIRE ROUTINES  Vulture/OT 24.01.96

Демо серия группы Outlaw Triad, Выпуск №1. Алгоритм пламени. Язык -Assembler, легко переводится на Pascal.
In this very first release I will cover a wellknown effect... FIRE! This is actually a simple routine, in theory. The only math is takes are some simple calculations to avarage certain values. Here we go:



6k 
 

- THE OUTLAW TRIAD DEMO-SERIES - -------------------------- PART I ---------------------------------- Written by : Vulture/OT Code in : Pascal/Asm Topic : Fire effect ----------------------- Introduction ------------------------------- Welcome to the Outlaw Triad demo-series! In these series we will be talking about programming demo-effects in either pascal or assembler. Theory behind the effects shall be discussed while a full sourcecode is also provided. These series are the sequals to the VGA-VUL# releases in which a few demo effects were handled and are meant for the beginner and intermediate coder. From now on all demo tutorials from Outlaw Triad will be released in these series. We from Outlaw Triad know there are already large amounts of demo trainers available (best of which seem to be the ones by Denthor/Asphyxia) but we experienced that it can be helpfull to read more than one document on the same subject. Enjoy these series! -------------------------- Theory ---------------------------------- In this very first release I will cover a wellknown effect... FIRE! This is actually a simple routine, in theory. The only math is takes are some simple calculations to avarage certain values. Here we go: We will be using an unchained vgascreen with resolution 320*200*256. This will speed up our routine by a factor of 4 because we can plot 4 pixels at a time due to vga-hardware. Now you need to setup a nice palette for use in our fire. E.g from dark red to bright yellow. Ok, we will also be using a 100 scanlines for our fire. This way, you will have another 100 scanlines left to do other things with. Create an array large enough to hold this data. We then flip the data to the vga. Why use an array? Because vga-memory is a lot slower than normal memory! In this case it is faster to update data in pc-memory and then flip it to the vga. This can also avoid flickering. Now, on the last row, put random values between 0 and 255 (or whatever colorrange you want. I used 0..85). Then create a fire effect like this: Start with the first pixel (actually 4 pixels) on the second row. Then take the 3 pixels above, the 3 pixels below and the 2 pixels besides that pixel. Divide by 3+3+2=8 to avarage these values. If the found value is not zero, decrease it by 1 to fade the fire to black. The fire on the bottom will then be brighter than the fire at the top which will make a good fire routine. Store the found value in the pixel ABOVE the current pixel. This will make the flames go up. Then point to the next pixel on the line and do the same. Do this for all lines. When finished, wait for a vertical retrace, flip the data to the vga screen and start over. That's it! In steps: - set bottom line with random values - start avaraging from second line - do all lines - wait for vertical retrace - flip to vga One thing left to say... As the bottom line is rather ugly with it's random values scattered on it, we hide the last few lines on the second page in display memory. Offscreen memory can be handy indeed! ;-) So you see, it's not that hard to understand. What can be hard is to realy code it. Take a look at the source to see how it can be done. The code here is in assembler because that is the real democode language to use, IMHO. There are many fire trainers available, so if you don't understand it, go study some more of them. Btw, thanks must go to all who have release fire code before I did (I learned from tutors too, you know ;-) ). Ok, this is all for now. Happy coding! - Vulture / Outlaw Triad ------------------------ Distro Sites ------------------------------ Call our distros to get all our releases. BlueNose World HQ +31 (0)345-619401 FireHouse Distrosite +31 (0)528-274176 More distros wanted! The Force Distrosite +31 (0)36-5346967 MagicWare Italian HQ +39 6-52355532 --------------------------- Contact -------------------------------- Want to contact Outlaw Triad for some reason? You can reach us at our distrosites in Holland. Or if you have e-mail access, mail us: Vulture (coder/pr) comma400@tem.nhl.nl Our internet homepage: httm://www.tem.nhl.nl/~comma400/vulture.html These internet adresses should be valid at least till june 1996. ----------------------------------------------------------------------