worm 0.91.0507: improve key handling, mask game field before start
[wormy.git] / wormlvl.z80
index 41bf14dbde72c1637087a2ca11909611befbe133..7ad6a49bd8e7c3ffb97c5baa0ba943fba679d073 100644 (file)
@@ -1,86 +1,36 @@
-;128x57 FIELD:
-;       +-----------------+
-;(0,0)> |####(BORDER)#####|
-;       |#*(2,2)         #|
-;       |#               #|
-;       |#(63,28)*(64,28)#|
-;       |#               #|
-;       |#      (125,54)*#|
-;       |#################| <(127,56)
-;       +-----------------+
 ;Drawable screen is (2,2)-(125,54); center is (63.5,28)
 
-
 #include "asm86.h"
 #include "ti86asm.inc"
 
 
 ;---------- HEADER ----------
 
-  .org $F3E3-16                ;$F3E3-[name size]
-            ;^^ <-MUST EQUAL NAME SIZE BELOW!!! If not, Worm will crash!
+  .org $F3E3-16
 
-  .db 'w',90                   ;wormLevel header (version .90)
-  .db 16,"Worm LevelPack I"    ;name size (UPDATE .ORG!!!); level name
-  .dw hiscore-single           ;leveldata size
+  .db 'w',91
+  .db 16,"Worm LevelPack I"
+  .dw hiscore-single
 
 
 levelsdata:
 
-  .dw single          ;points to singleplayer levels below
-  .dw peaworm         ;...peaworm level
-  .dw deathmatch      ;...deathmatch
-  .dw foodmatch       ;...foodmatch
-  .dw linkmatch       ;...linkmatch
-  .dw race            ;...race
-  .dw ctf             ;...capture the flag
-  .dw domination      ;...domination
-
-;note: use <.dw 0> if no levels present (empty level will be used).
-
-  .db 2,3,3,2         ;max. choosable level+1 for each gametype
-  .db 2,2,2,2         ;so: 2 = level 1 only; 4 = level 1 to 3 available
+  .dw single
+  .dw peaworm
+  .dw deathmatch
+  .dw foodmatch
+  .dw linkmatch
+  .dw race
+  .dw ctf
+  .dw domination
 
-;again .db 0 indicates no levels present.
+  .db 1,2,3,1
+  .db 1,1,2,1
 
 
 ;---------- LEVELS ----------
 
-;LEVEL-FORMAT:
-;------------
-; .db 5               ;nr. of peas in level
-; .db 4               ;delay (0=fastest, 4=normal)
-; .db 15              ;growth per pea
-; .db 15              ;begin size
-; .db 4               ;sprite size (1-8; 0=use default sprite)
-; .db %01100000       ;the sprite
-; .db %11110000
-; .db %11110000
-; .db %01100000
-; .db 2               ;bouncing balls (0-40)
-; .db 2               ;BALL #1: begin y-position
-; .db 4               ;         begin-x
-; .db %00             ;         direction (%00=right+down, %11=left+up)
-; .db 2,7,%00         ;BALL #2: y,x,direction
-; .db 0               ;your start direction (0=down,$40=right,$80=up,$C0=left)
-; .db 2               ;your y-position (2=at top)
-; .db 63              ;your x-position (63=center)
-;                     ;IN MULTIPLAYER LEVELS also set positions for worm 2-4:
-;(.db $C0,28,125 )    ;player 2 moves left
-;(.db $00, 2, 63 )    ;player 3 moves down
-;(.db $80,54, 63 )    ;player 4 moves up
-;
-; .db 128,57          ;field size: width (128-255), height (57-255)
-;                     ; screen will SCROLL if size is more than 128,57
-; .db 2               ;number of lines:
-; .db 28,14,100,41    ;LINE #1 coordinates: (x1,y1)-(x2,y2)
-; .db 28,41,100,14    ;LINE #2: the same
-; .db 1               ;number of boxes:
-; .db 16,12,48,12     ;BOX #1: x1,y1,x2,ysize(y2-y1)
-;------------         ;THAT'S ALL; repeat for all levels
-
-
-single:               ;singleplayer levels start here
+single:
 
   .db 5,4,15          ;peas/delay/growth
   .db 15,5            ;size/spritesize
@@ -188,17 +138,12 @@ single:               ;singleplayer levels start here
   .db 91,106,115,106
   .db 0
 
-  .db 255             ;end marker: no more levels
-
-;Code to run when all levels are done:
-;Worm waits a second, then screen is cleared and this code will be run.
-;End with <ret> (stats-screen will then be displayed.)
-;If you don't want an ending, simply put <ret>.
+  .db 255
 
    ld   hl,endtext
    call _puts         ;display text
    jp   _getkey       ;wait for a key
-                      ;jp ? = call ? + ret
+
 endtext:
   .db "  Congratulations!!",0
 
@@ -237,13 +182,18 @@ deathmatch:
   .db 80,34,112,12
 
   .db 8,4,18,15,0,0
-  .db $40,30,2,$C0,30,125, $00,2,64,$80,54,64
+  .db $20,2,2,$A0,54,125, $E0,2,125,$60,54,2
   .db 128,57
-  .db 0,0
+  .db 1
+  .db 35,28,92,28
+  .db 4
+  .db 2,20,18,17
+  .db 109,20,125,17
+  .db 48,2,79,10
+  .db 48,47,79,55
 
 
 foodmatch:
-ctf:
 domination:
   .db 8,5,18,15,0,0
   .db $40,30,2,$C0,30,125, $00,2,64,$80,54,64
@@ -268,9 +218,24 @@ race:
   .db 52,10,74,37
 
 
+ctf:
+  .db 8,5,18,15,0,0
+  .db $20,2,2,$A0,54,125, $20,2,7,$A0,54,120
+  .db 128,57
+  .db 9,117,46,10
+  .db 0,0
+
+  .db 8,5,18,15,0,0
+  .db $60,54,2,$E0,2,125, $60,49,2,$E0,7,125
+  .db 128,57
+  .db 9,10,46,117
+  .db 0,1
+  .db 20,14,107,31
+
+
 hiscore:
-  .dw 0               ;singleplayer hiscore will be saved here
-  .dw 1,2             ;peaworm hiscore for each peaworm-level
+  .dw 0
+  .dw 0,0
 
 
   .end