BlockSystem
-----------

Kartan byggs upp medhjlp av ett sequenser system (editeras 
dock som en karta). Det skall g att animera blocket (dock ej 
Ping-Pong) och det skall finnas block som kan skjuta p en. 
Vissa block skall ven kunna skjutas ned (alltid endast en 
trff!) med speciela vapen som "sjunker" mot ytan. Alla block r 
uppdelade i tre olika format, dessa r "fastblock" (en rad, 1 
rad 14 ggr och en rad till =16 fast bara 3 (=4) i minne), 
"normal block" och "spriteblock".

Eftersom tiden nu r knapp s fr man anvnda MapEditorn fr 
editering. Sedan sparas den rena "kartfilen" ner och anvnds 
till spelet. Men s enkelt som det lter r det dock inte, fr 
i spelet's initiserings rutiner kommer hela kartan att 
konveteras till ett sequenser format med direkta addresser till 
alla block och inlagda vrden fr animeringa m.m. Fr att spara 
minne skall ven icke anvnda block tas bort frn minnet, men 
tnk d p att block i ani-tab och destruct-tab faktiskt kommer 
att existera ssmningom...


Frst finns det ett antal olika kommandon
0 =Normal
1 =Destructable
2 =Animated
3 =Animated Destructable
4 =Can Shoot
5 =Can Shoot, Destructable
6 =Can Shoot, Animated
7 =Can Shoot, Animated, Destructable

-1 =EndOfLine, next value on next line.
-2 =EndOfMap, dags att gra en wrap
-3 =Nothing

dc.b  0     ; 0   Normal
ds.b  1     ; 1   BlockType
ds.w  1     ; 2   Offset in X on screen (0-152 step 8)
ds.w  1     ; 4   Offset to block (from that blocktype)

dc.b  1     ; 0   Destructable
ds.w  1     ; 1   BlockType
ds.w  1     ; 2   Offset in X on Screen
ds.w  1     ; 4   Offset to block
ds.w  1     ; 6   X pos on screen (coordinates)
ds.w  1     ; 8   Offset on DestructTab

dc.b  2     ; 0   Animated
ds.b  1     ; 1   ** Reserved **
ds.w  1     ; 2   Offset in X on Screen
ds.w  1     ; 4   AniSeq Offset
ds.w  1     ; 6   AniPos*2

dc.b  3     ; 0   Destructable & Animated
ds.b  1     ; 1   ** Reserved **
ds.w  1     ; 2   Offset in X on Screen
ds.w  1     ; 4   X pos on screen (coordinates)
ds.w  1     ; 6   Offset on DestructTab
ds.w  1     ; 8   AniSeq Offset
ds.w  1     ; 10  AniPos*2

dc.b  4     ; 0   Can Shoot
ds.b  1     ; 1   BlockType
ds.w  1     ; 2   Offset in X in Screen
ds.w  1     ; 4   Offset to block
ds.w  1     ; 6   Offset on ShootTab

dc.b  5     ; 0   Can Shoot, Destructable
ds.b  1     ; 1   BlockType
ds.w  1     ; 2   Offset in X on Screen
ds.w  1     ; 4   Offset to block
ds.w  1     ; 6   X pos on screen
ds.w  1     ; 8   Offset on DestructTab
ds.w  1     ; 10  Offset on ShootTab

dc.b  6     ; 0   Can Shoot, Animated
ds.b  1     ; 1   ** Reserved **
ds.w  1     ; 2   Offset in X on Screen
ds.w  1     ; 4   AniSeq Offset
ds.w  1     ; 6   AniPos*2
ds.w  1     ; 8   Offset on ShootTab

dc.b  7     ; 0   Can Shoot, Animated, Destructable
ds.b  1     ; 1   ** Reserved **
ds.w  1     ; 2   Offset in X on Screen
ds.w  1     ; 4   Xpos on Screen
ds.w  1     ; 6   AnisSeq offset
ds.w  1     ; 8   AniPos*2
ds.w  1     ; 10  Offset on DestructTab
ds.w  1     ; 12  Offset on ShootTab

dc.b  -1    ; 0   End Of Line
ds.b  1     ; 1   ** Reserved **

dc.b  -2    ; 0   End of map
ds.b  1     ; 1   ** Reserved **
ds.l  2     ; 2   Or on Status

dc.b  -3    ; 0   FillUp
ds.b  1     ; 1   ** Reserved **



pust... Och nu dom tabeller som kommandona hnvisar till:


DestructTab:
------------
ds.l  1     ; 0   And if not shootdown
ds.l  1     ; 4   Or if shootdown
dc.w  1     ; 8   BlockType after shootdown (-1=animated)
dc.w  1     ; 10  BlockOffset / AniSeq Offset after shootdown
ds.b  7     ; 12  Score if shootdown
ds.b  1     ; 19  ** Reserved **

ShootTab:
---------
ds.w  1     ; 0   Shooting Rate
ds.w  1     ; 2   Bullet Type
ds.w  1     ; 4   Add X start pos
ds.w  1     ; 6   Add Y start pos

AniTab:
-------
 repeat
ds.w  1     ; 0   BlockType
ds.w  1     ; 2   Offset to block
nr of  anisteps
 dc.w  -1    ; x  Wrap Mark



Block skott gr under samma regler som skott fr sprite fiender.





Det var det som gller under spelets gng, men alla dessa 
tabeller mste en gng ha skapats och hur gr det nu till??? 
Kartan editers normalt och konveteras sedan har vi kommit fram 
till. Ifrn kartan fr vi reda p vilken blocktyp det r 
(Normal, Fast eller Sprite) och ven sdana vrdet som X offset 
p skrmen och X pos repektive nr ny rad intrffar, men vi fr 
inte veta vilka block som r destructable, can shoot eller 
animated eller en kombination av allihop. Fr detta ndaml 
finns en speciel tabell som hr till kartan.

MapCreateTab:

ds.w  1     0  Offset frn start av tab till Kartan
ds.w  1     2  Offset till creation datan frn start
ds.w  1   > 4  Kartan's hjd (first thing calculated)
ds.l  1   > 6  Address to Fast Blocks
ds.l  1   > 10 Address to Normal Blocks
ds.l  1   > 14 Address to Sprite Blocks
ds.l  1   > 18 Address to Destruct Tab
ds.l  1   > 22 Address to Ani Tab
ds.l  1   > 26 Address to CanShoot Tab
ds.l  1   > 28 Address to MapSequens
ds.b  32    32 ** Reserved **
ds.b  14    64 Filnamn fr FAST BLOCK file (eller nollor)
ds.b  14    78 Filnamn fr NORMAL BLOCK file (eller nollor)
ds.b  14    92 Filnamn fr SPRITE BLOCK file (eller nollor)

KartanData:
ds.w  1     -4 Width of map
ds.w  1     -2 Higth of map (directly copied to +4)
Repeat
ds.b  1     n*2+0 Type of block
ds.b  2     n*2+1 Block number
EveryLine*20

CreationDatan:
 repeat
dc.w  [blocktyp, blocknr]... -1,-1
dc.w  typ (0=Destructable,1=Animated, 2=Can Shoot)
 ....
 until blocktyp=-1 direkt

om Destructable:
----------------
ds.l  1  Or if shootdown
ds.l  1  And if escapes
dc.w  1  BlockType after shootdown (-1=Animated)
dc.w  1  BlockNr/offset to anitan when shootdown
ds.b  7  Score
ds.b  1  ** Reserved **

om Animated:
------------
 repeat
ds.w  1     BlockType
ds.w  1     Block Nr
 nr of ani steps
dc.w  -1    EndMark

observera att man hr mste leta reda p AniPos (om ej funnen 
s tas den frsta)

om Can Shoot:
-------------
ds.w  1     Shooting Rate
ds.w  1     Bullet Type
ds.w  1     Add X Start Pos
ds.w  1     Add Y Start Pos


