|★ CODING ★ SOURCES ★ YAGOL4CPC ★|
This is the first version that includes the basic functionality and interactivity every Game of Life should have. There is still a lot of room for improvement, it is not intended to be a final release, but I can't assure whether I will continue working on it or not.
ABOUT THE PROGRAM
This version only works in CPC6128 (sorry), as it makes use of extended memory banks. The core algorithm can run in just 64KB's, but I wanted to show an information panel while the evolution was running, and for that I needed at least another bank for the panel video memory. A stripped down version without the panel could be adapted to the 464 and 664, but this is not in my priority list right now.
This information panel lies in a different RAM bank than the Game area thanks to the vertical rupture technique. When the panel is being shown, it overlaps with the Game area hiding 2 chars. But thanks to the vertical rupture technique you can scroll line by line (pixel perfect) the game area. Also at any moment, you can hide the information panel (deactivating the rupture), and see the whole Game area, it is also possible to scroll the Game area in this case (it uses a toroidal topology so the top and bottom borders are "connected"), but only 8 lines at a time.
There is another particularity in the video system of this program, it reduces the frame size vertically one scanline (from 312 to 311), thereby incrementing the framerate (from about 50.08Hz to about 50.20Hz). If you have your CPC connected to a monitor or a television it might not accept this slightly increased frecuency. If it's your case I would like to know here. This frequency change is intentional because it simplifies the rupture, but it could be avoided.
HOW IT WORKS
When the program starts it asks for a file to load that should contain the initial pattern. There are a few in the disk (files with .PAT extension), but in case you want to create your own, these are just CPC screens with the following "specs":
This format is far from optimal and not definitive, each pattern takes 17KB's regardless of its actual size. But there is enough room in a disk for some of them.