X-Git-Url: http://git.shiar.nl/wormy.git/blobdiff_plain/f9173ce4c203c5f2cdeeccdb7e76864fa286122c..14699b6ef3e5d2192b16c8c5c9995d186e63f6d3:/wormlvl.z80 diff --git a/wormlvl.z80 b/wormlvl.z80 index 00c4268..41bf14d 100644 --- a/wormlvl.z80 +++ b/wormlvl.z80 @@ -1,30 +1,108 @@ -.org $EA00-16 +;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) -.dw single,peaworm,deathmatch,foodmatch -.dw linkmatch,hunting,race,ctf -;----------------------------- -;---------- levels ----------- -;----------------------------- +#include "asm86.h" +#include "ti86asm.inc" -NUM_LEVELS = 10 -single: -peaworm: +;---------- HEADER ---------- + + .org $F3E3-16 ;$F3E3-[name size] + ;^^ <-MUST EQUAL NAME SIZE BELOW!!! If not, Worm will crash! + + .db 'w',90 ;wormLevel header (version .90) + .db 16,"Worm LevelPack I" ;name size (UPDATE .ORG!!!); level name + .dw hiscore-single ;leveldata size + + +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 + +;again .db 0 indicates no levels present. + + +;---------- 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 - .db 5,4,15,0 ;peas,speed,begin_size,balls - .db 0,2,63 ;start d, y, x - .db 128,57 ;field width (128-255), height (57-255) - .db 0,0 ;no additional lines, boxes - .db 8,4,15,0 +single: ;singleplayer levels start here + + .db 5,4,15 ;peas/delay/growth + .db 15,5 ;size/spritesize + .db %01110000 ;sprite + .db %10001000 + .db %10001000 + .db %10001000 + .db %01110000 + .db 0 ;balls + .db 0,2,63 ;d/y/x + .db 128,57 ;field size + .db 0,0 ;no lines/boxes + + .db 8,4,15,15,0 + .db 0 ;no sprite .db $40,14,2 .db 128,57 .db 1 - .db 28,28,100,28 ;line coords: x1,y1,x2,y2 + .db 28,28,100,28 .db 0 - .db 9,4,15,0 + .db 9,4,15,15,0,0 .db $40,8,2 .db 128,57 .db 2 @@ -32,7 +110,16 @@ peaworm: .db 28,41,100,41 .db 0 - .db 9,3,15,0 + .db 4,3,15,10,0,1 + .db 2,4,0 ;ball + .db 0,2,124 + .db 128,57 + .db 2 ;lines + .db 28,14,100,41 + .db 28,41,100,14 + .db 0 + + .db 9,3,15,15,0,0 .db $40,8,2 .db 128,80 .db 2 @@ -40,24 +127,16 @@ peaworm: .db 20,40,108,40 .db 0 - .db 10,3,15,0 + .db 10,3,15,15,0,0 .db 2,8,$40 .db 128,90 - .db 3 + .db 3 ;lines .db 18,20,18,70 .db 110,20,110,70 .db 18,45,110,45 .db 0 - .db 4,3,10,1 \ .dw $20F - .db 0,2,63 - .db 128,57 - .db 2 - .db 28,14,100,41 - .db 28,41,100,14 - .db 0 - - .db 7,3,15,0 + .db 7,3,15,15,0,0 .db 64,4,0 .db 128,86 .db 6 @@ -69,17 +148,17 @@ peaworm: .db 110,20,110,64 .db 0 - .db 9,3,15,0 + .db 9,3,15,15,0,0 .db $40,4,10 .db 128,82 - .db 3 + .db 3 ;lines .db 0,20,74,20 .db 54,40,128,40 .db 0,60,74,60 .db 0 - .db 12,3,15,0 - .db $40,4,0 + .db 12,3,15,15,0,0 + .db $40,2,2 .db 128,90 .db 6 .db 20,16,54,16 @@ -90,10 +169,10 @@ peaworm: .db 74,72,110,72 .db 0 - .db 8,2,15,0 - .db $C0,72,48 + .db 8,2,15,15,0,0 + .db $C0,67,48 .db 128,128 - .db 13 + .db 13 ;lines .db 34,56,56,34 .db 34,72,56,94 .db 72,34,94,56 @@ -109,51 +188,90 @@ peaworm: .db 91,106,115,106 .db 0 -deathmatch: - .db 8,5,31,0 - .db $40,28,2,$C0,28,125, $00,2,63,$80,54,63 + .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 (stats-screen will then be displayed.) +;If you don't want an ending, simply put . + + ld hl,endtext + call _puts ;display text + jp _getkey ;wait for a key + ;jp ? = call ? + ret +endtext: + .db " Congratulations!!",0 + + +peaworm: + .db 5,4,15 + .db 15,5 + .db %01110000 + .db %10001000 + .db %10001000 + .db %10001000 + .db %01110000 + .db 0 + .db 0,2,63 + .db 128,57 + .db 0,0 + + .db 5,4,15,15,0,0 + .db 0,2,63 .db 128,57 + .db 0,0 + + +deathmatch: + .db 8,5,15,31,0,0 + .db $40,28,2 ;begin stats for each player + .db $C0,28,125 + .db $00,2,63 + .db $80,54,63 + .db 128,57 ;field size .db 0 - .db 4 ;4 boxes - .db 4,19,16,14 ;xsize,ysize,xpos,ypos - .db 4,19,80,14 - .db 4,19,16,34 - .db 4,19,80,34 + .db 4 ;4 boxes + .db 16,12,48,12 + .db 80,12,112,12 + .db 16,34,48,12 + .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 128,57 + .db 0,0 + foodmatch: ctf: - .db 8,5,15,0 +domination: + .db 8,5,18,15,0,0 .db $40,30,2,$C0,30,125, $00,2,64,$80,54,64 .db 128,57 .db 0,0 + linkmatch: - .db 8,0,15,0 + .db 8,0,15,15,0,0 .db $40,30,2,$C0,30,125, $00,2,64,$80,54,64 .db 228,157 .db 0,0 -hunting: - .db 8,7,17,0 -#ifdef 0 -huntersize = 31 -#endif - .db $40,28,2,$C0,28,125, $00,2,63,$80,54,63 - .db 128,57 - .db 0 - .db 4 - .db 4,19,16,14 - .db 4,19,80,14 - .db 4,19,16,34 - .db 4,19,80,34 race: - .db 8,2,10,0 + .db 8,4,15,10,0,0 .db $40,3,2,$40,6,2, $40,9,2,$40,12,2 .db 128,57 .db 0 - .db 1 - .db 8,29,32,20 + .db 2 + .db 22,21,104,15 + .db 52,10,74,37 + + +hiscore: + .dw 0 ;singleplayer hiscore will be saved here + .dw 1,2 ;peaworm hiscore for each peaworm-level + .end .end \ No newline at end of file