nobody said assembly was easy
nobody said assembly was easy 
Assembly is easy!
Just for your information... do you know what you will found if you disassemble the startup routine of any Konami game?
Something like this:
...(some initialization)...
di
ld a,#c3
ld (#fd9f),a
ld hl,int_routine
ld (#fda0),hl
ei
X: jr X
So... EVERYTHING is in the interrupt. There is no "main loop". Isn't that funny?
EVERYTHING is in the interrupt. There is no "main loop". Isn't that funny? 
Yeah, I knew about that already ...
It is indeed strange, but it makes sense when you think about it. In effect, the game loop is re-initialized at each frame, which gives you the opportunity to divide each action into fragments processed in the main game loop, within each frame at the same moment.
However, when you're out of the game loop (ie. an level intro ...) it makes much less sense to manage that thru the ISR.
Just for your information... do you know what you will found if you disassemble the startup routine of any Konami game?
Something like this:
...(some initialization)...
di
ld a,#c3
ld (#fd9f),a
ld hl,int_routine
ld (#fda0),hl
ei
X: jr X
So... EVERYTHING is in the interrupt. There is no "main loop". Isn't that funny? 
Very clever trick,however i think it would be better and have more power management for our poor z80 (make them last a little longer in that cruel world) by having something like
X:Halt
Jr X
Now everything happens in the interrupts and z80 consumes less electricity ?
X:Halt
Jr X
Now everything happens in the interrupts and z80 consumes less electricity ?
Not exactly. Z80 does not "shut down" itself, nor enters any type of power saving mode, when HALT is executed; instead, it enters a loop in which it continously exectues NOP instructions. I read somewhere that this is necesssary for the memory refresh mechanism to continue working.
Just for your information... do you know what you will found if you disassemble the startup routine of any Konami game?
Something like this:
...(some initialization)...
di
ld a,#c3
ld (#fd9f),a
ld hl,int_routine
ld (#fda0),hl
ei
X: jr X
So... EVERYTHING is in the interrupt. There is no "main loop". Isn't that funny? 
I've seen that often but disadvantage is that all work is done inside an interrupt routine. This may have some disadvantages that don't apply to regular code. Of course the point is timing of game events, I'd rather use something like:
... (some initialization) ... main: (process keys/joystick etc) (process sound) (process video) halt jp main
As long as you take care that everything between "main" and "halt" executes in less than 1 interrupt timeslice, you have proper timing but your code runs outside interrupt routine. Less tricky that way... 
Or do only repetitive, time-sensitive tasks like movement & background music in interrupt routine, and [things that may take very long to execute] in main program.
