Author Topic: Yagol4CPC alpha release  (Read 5327 times)

0 Members and 1 Guest are viewing this topic.

Offline TFM

  • Visit the mysteries of the CPC at
  • Supporter
  • 6128 Plus
  • *
  • Posts: 9.899
  • Country: aq
  • Space Chicken for FutureOS is free!
    • index.php?action=treasury
    • FutureOS - The revolution on CPC!
  • Liked: 1981
  • Likes Given: 4650
Re: Yagol4CPC alpha release
« Reply #25 on: 21:28, 02 November 14 »
Well, it always depends which is your aim.  :)  You both have made very well programs, but I see a different way of approaching it - and both are valid and ok. While one program keeps the focus on availability for multiple systems and using quasi-standard file types; the other one has the focus on one particular computer using the systems strength and advantages.  :)  So I would say it's just hard to compare and maybe not needed since both solutions have their rights of existance and bring fun for all users.  :)
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

Offline opqa

  • CPC664
  • ***
  • Posts: 73
  • Country: es
  • Liked: 89
  • Likes Given: 7
Re: Yagol4CPC alpha release
« Reply #26 on: 23:18, 02 November 14 »
I have a question.  My knowledge of Amstrad CPC hardware is not too good.  :( So it is very curious for me about double screen buffer at Yagol.  As I know CPC always uses C000-FFFF from the 1st 64KB as video RAM.  So is it possible to have the several video RAM pages? Thanks in advance.What is your point about the current state of Yagol?

It's much more flexible than that, you describe the default firmware configuration, but by reprogramming the CRTC you can:

Using only 16KB:

-Set the Video RAM start address to any even memory adress from the first 64KB's. I doesn't need to be the beginning of a 16KB page, but when it reaches the end of the page it will wrap around to its beginning, this can be used to perform (limited) vertical and horizontal scroll.

-Set any resolution that fits in 16KB or less, but due to the weird screen layout the "free" space will be distributed in 8 equally spaced parts along the 16KB page, if you don't use the previous feature to scroll you can use those spaces to store data or even code. Yagol uses the free spaces in the panel video RAM to store both data and code that needs access to the lower ROM.

Using 32KB's:

-You can do double buffering by reprogramming the CRTC every frame to a different Video RAM page.
Yagol does this in the monochrome double-buffered mode. The cell data memory bank (&8000-&BFFF) follows the same screen layout as the Video memory bank (&C000-&FFFF) and only the colour information is different, the cell data bank holds neighbour counts information instead of colours, but both of them hold the live/dead state of each cell pair. So by using a degenerate monochrome palette it's possible to alternate between them and show one while the other is being updated.

-You can even configure the CRTC to use a whole 32KB screen (two contiguous 16KBs pages), thereby doubling the maximum resolution available. It is possible to show overscan/fullscreen images this way, with no borders.
While developing this version of Yagol I had the crazy idea of using this feature to double the grid size, using 32KB for cell Video Memory and another 32KB for cell counts. But it would be substantially slower as it would require lots of RAM paging changes in the core algorithm. And there are better approaches to increase the grid size even more.

-You can even go further and reprogram the CRTC while in the middle of a frame, changing the Video RAM address on the (electron beam) fly. This is what Yagol does when it's showing the panel, that lies in the (&4000-&7FFF) range. Note that most of the time it is the ACP list what is paged on this address range, but as long as the video system always accesses the fist 64KB's no matter which paging config is being used, I only need to bring the panel video RAM to front when I need to update it.

And much more, demos use all sorts of even more strange and complicated effects...
« Last Edit: 15:23, 03 November 14 by opqa »