;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! .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 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 .db 0 .db 9,4,15,15,0,0 .db $40,8,2 .db 128,57 .db 2 .db 28,14,100,14 .db 28,41,100,41 .db 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 .db 64,14,64,66 .db 20,40,108,40 .db 0 .db 10,3,15,15,0,0 .db 2,8,$40 .db 128,90 .db 3 ;lines .db 18,20,18,70 .db 110,20,110,70 .db 18,45,110,45 .db 0 .db 7,3,15,15,0,0 .db 64,4,0 .db 128,86 .db 6 .db 34,13,56,35 .db 34,71,56,49 .db 72,35,94,13 .db 72,49,94,71 .db 16,20,16,64 .db 110,20,110,64 .db 0 .db 9,3,15,15,0,0 .db $40,4,10 .db 128,82 .db 3 ;lines .db 0,20,74,20 .db 54,40,128,40 .db 0,60,74,60 .db 0 .db 12,3,15,15,0,0 .db $40,2,2 .db 128,90 .db 6 .db 20,16,54,16 .db 74,16,110,16 .db 20,16,20,72 .db 110,16,110,72 .db 20,72,54,72 .db 74,72,110,72 .db 0 .db 8,2,15,15,0,0 .db $C0,67,48 .db 128,128 .db 13 ;lines .db 34,56,56,34 .db 34,72,56,94 .db 72,34,94,56 .db 72,94,94,72 .db 46,64,80,64 .db 22,11,22,33 .db 11,22,33,22 .db 22,95,22,117 .db 11,106,33,106 .db 103,11,103,33 .db 91,22,115,22 .db 103,95,103,117 .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 (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 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: 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,15,0,0 .db $40,30,2,$C0,30,125, $00,2,64,$80,54,64 .db 228,157 .db 0,0 race: .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 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