mrbombermillzy wrote:I think the main thing would be how similar your block display and collision code is to mine. I try to keep my coding very modular and non hardware specific.
It will be very interesting to see the workarounds needed for the ST
Well there's a lot I could say on this topic (I won't go into the exact reasons why here) - but rather than explain it all, it might be better to play with the code on an ST and try to understand the way it operates.
BTW this system doesn't really draw blocks - it draws shards. This helps avoid spiking, which is important for 1-vbl games.
The simplest summary - and one that applies to most of my stuff - a bit of extra complexity and compute can buy you a lot less work.
It is divided into clear components with responsibilities and limited communication between them - so in that respect you could say it is 'modular' or has modular properties. It also implements many of the important bits without being platform specific (68k optimization aside) - not because the aim was to make it platform independent, but because the chosen methods perform better (for these use cases, at least) and are more adaptable. However it is very specifically targeted at STs. It doesn't pretend to be portable. It is made to rapidly put together high performance games for STs with no priority given to programming style, model or principles. All of those things are less important than how it performs (as a prototyping platform, and on the machine).
There are definitely a number of odd things about the source that seem inconsistent and for anyone used to cosy 3ghz PC development probably looks 'just wrong' - like the weird choice of using a C++ template to wrap the playfield/framebuffer engine, mixing object-orientated interfaces with C-like call sequences - or calling C functions from an assembly language algorithm. However, there are design choices behind all of that - not accidental. Much has to do with performance, configurability of code, compactness of setup code, accessibility of certain areas for quick prototyping and leaving important areas open to replace or modify.
I'll explain some of it in the wiki docs later.
Anyway, it'll be interesting to see if you can make use of it. An alpha release isn't far off. I'll post here about it soon.