X-Git-Url: http://git.shiar.nl/wormy.git/blobdiff_plain/9ed28d246aef107b01273e08b6594598a4e12fcb..3a9cd04477853eb1a7c1ca34002b93d7696e3234:/wormy.z80 diff --git a/wormy.z80 b/wormy.z80 index 0ff73a0..26d374f 100644 --- a/wormy.z80 +++ b/wormy.z80 @@ -1,32 +1,51 @@ -; Title : Wormy -; Version : 96% (0.96.C21) -; Release Date : UUHHhhh... soon?!? -; Filename : wormy.86p (5kb) -; Author(s) : Shiar -; Email Address : wormy@shiar.org -; Web Page : www.shiar.org -; Description : ruling Nibbles-like game 1-4 players -; Where to get this game : www.shiar.org (home of Wormy) -; Other games by author(s) : Nemesis beta -; Additional Credits to : Matthew Shepcar (wrote original Peaworm, end'98) -; Jonah Cohen (helped writing worm) +; ÜÛÛÝ ÜÜÜÜ +; ÛÛÛß ÛÛÛÛÝ +; ÛÛÛ ßÛÛÛ ÞÛÛÜ +;ÞÛÛ ÜÛÛÛÜ ÜÜÛÛÛÛÜÜ ÜÛÛÛÛ ÜÛÛÜ ÜÛÛÜ ÞÛÛ ÛÛÛÛÛ +;ÛÛÝ ÛÛÛÛÛÛÛ ÜÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÜ ÛÛ ÛÛÛ ÛÛÛ +;ÛÛ ÛÛß ßÛÛ ÞÛÛßß ßÛÛÛ ÛÛÛß ÛÛÝ ÛÛß ÛÛÛÛ ßÛÛ ÛÛÝ ÞÛÛÝ ÞÛÛ +;ÛÛ ÛÛ ÛÛ ÛÛ Ü ÛÛÝ ÞÛÛÝ ÞÛÛ ÛÛÛÛÛÛ ÛÛÝ ÛÛÛ ÛÛÛ ÛÛ +;ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÞÛÛ ÛÛÛ ÛÛÝ ÛÛÛß ÞÛÛ ßÛÛ ÛÛÛ ÞÛÛÛ ÛÛ +;ÛÛ ÛÛÝ ÞÛÛ ÛÛ ÛÛ ÛÛ ÛÛÝ ÛÛÝÞÛÛÝ ÛÛÝ ÛÛ ÛÛÛÛÛÛß ÛÛ +;ÛÛ ÞÛÛ ÛÛÝ ÞÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÞÛÛ ÛÛÝ ÛÛÝ ßÛÛÛß ÞÛÛ +;ÛÛÝ ÛÛÜ ÜÛÛ ÛÛÝ ÛÛ ÛÛ ÛÛÝ ÛÛ ÞÛÛÝ ÞÛÛÝ ÛÛÝ ÛÛÝ +;ÞÛÛ ÛÛÛÛÛ ÞÛÛ ÛÛÝ ÞÛÛ ÛÛÝ ÛÛ ßÛÛÜÜÛÛß ÛÛÛ ÞÛÛ +; ÛÛÛ ÛÛÛ ÛÛÝ ÞÛÛ ÛÛÝ ÛÛÛ ÛÛÝ ßÛÛÛÛß ÞÛÛ ÛÛÛ +; ÛÛÛÜ ÜÛÛÛÛÛÜ ÜÛÛÛ ÛÛÝ ÛÛÛ ÞÛÛÝ ÛÛÝ ÛÛÛÜÜ ÜÛÛÛ +; ÛÛÛÛÛÛÛß ßÛÛÛÛÛÛÛ ÞÛÛÜÜÛÛÛÝ ÛÛÛ ÞÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÝ +; ßÛÛÛß ÛÛÛÛÝ ßÛÛÛÛÛß ÛÛ ÛÛÝ ßÛÛÛÛÛÛÛÛÛß +; +; Version : 97% (0.97.13) +; Release Date : UUHHhhh... soon?!? +; Author(s) : Shiar +; Email Address : wormy@shiar.org +; Web Page : www.shiar.org +; Description : ruling Nibbles-like game 1-4 players +; Where to get this game : www.shiar.org (home of Wormy) +; Other games by author(s) : Nemesis beta +; Additional Credits to : Matthew Shepcar (wrote original Peaworm, end'98) +; Jonah Cohen (helped writing worm) +; Files : wormy.z80 (80898 bytes) 1234 ;----------------------------- ;----------- TO-DO ----------- ;----------------------------- -; 96% = DONE +; 97% = DONE -; * complete readme -; 1% * misc (pollish, bugs, &&&) -; * mem at worm #4 (still 12 bytes or so.....) -; * fix line proc (+large circles) +; 1% * misc (bugs, &&&, pollish, &&, &) +; * score >9 dispay +; * mem at worm #4 (still 12 bytes or so.. or more? or less?) +; * look at init-z in line routine again ; * LINK -; 1% * fix transmit game/level data +; 1% * fix transmit game/level data (?) +; * >Somehow do a lot of testing with 2 calcs< *sigh* ;100% = bugs fixed + levels done -;>110%: sound, startpos +; arrow to offscreen peas +; multiple peas in sp level +;>110%: sound, startpos (?) ;>120%: coop (DON'T COUNT ON IT) ;----------------------------- @@ -35,9 +54,21 @@ ;----------------------------- ;----------------------------- +;NOTES: +;* Use for LEARNING practises ONLY! +; Don't ever release altered code w/o permission! +;* Code was originally by Scabby (Matthew Shepcar), +; a few lines by Jonah Cohen, +; and everything else by me - Shiar (Mischa Poslawsky). +;* Although I've commented quite some stuff, I can't guarantee +; everybody will understand it. This is probably not the best source +; to learn z80 from. w00t the Shyer Way (tm). +;* Don't scroll down if you get scared easily. + #define buffer ;use display buffer (otherwise write directly to screen) #define readymask ;"greys" out the field before starting a level #define coolzgfx ;nice graphics for game over screen +multpeas ;#define intlevels ;internal levels ;#define readytext ;displays "prepare" before level starts @@ -97,19 +128,19 @@ worm4 = $AC5D ;-AC77 (1F) balls = $AC7C ;-ACFF (3x43d) SinCosTable = $AD00 ;-AE00 (4*40) turn10 = $AE01 ;-AE01 (1) (counter) -peaspos = $AE02 ;-AE05 (4) (peas) +peaspos = $AE02 ;-AE05 (4+) (peas) ;free = $AE06 ;-AFFF (1FA) worm1p = $B000 ;-B7FF (800) %1011O000 worm3p = $B800 ;-BBFF (400) %10111O00 ;free = $BF91 ;-BFFF (6F) -;program = $D748 ;-EFFF (186D+4A) +;program = $D748 ;-EFFF (186D+4A) ;6327 worm4p = $F000 ;-F3FF (400) %11110O00 leveldata = $F400 ;-FA70 (<=671) ;can you believe i actually left $269 bytes of memory unused?!? -;MEM|8---9---A---B---C---D---E---F---| -; |..[------]||[]|......[-----]|[].| -; | SCREEN 2* 13 PRGM 4LV | +;MEM|8---9---A---B---C---D---E---F---| ;there's something wrong +; |..[------]||[]|......[-----]|[].| ;if you still understand +; | SCREEN 2* 13 PRGM 4LV | ;after looking at this ;--- temporary @@ -120,6 +151,7 @@ DispBuffer = $BC00 ;(10x57d) @game #else DispBuffer = $FC70 #endif +lefttotalb = $AFFF ;----------------------------- ;------- program start ------- @@ -127,14 +159,12 @@ DispBuffer = $FC70 .org %1101011101001000 -start: - nop +start: ;turn back NOW! + nop ;and so it begins... jp Start - ld bc,42 - .org $-1 ;3y3 M 1337! - .dw WormTxt - .dw WormIcon -WormTxt: + ld bc,$5242 + rst 10h + .dw WormIcon ld d,a ld c,a ld d,d @@ -144,21 +174,21 @@ WormTxt: ld a,c jr nz,$+$55 ld c,b - .dw 16713 - .db %1010010 + .dw 16713 + .db %1010010 jr nz,$+47 dec l - .db " 96% C21",0 + .db " 97% .13",0 WormIcon: - .db 8,2 - .db %00000000,%00111100 - .db %00000000,%01010010 - .db %00000000,%01100001 - .db %01100011,%10011001 - .db %10010100,%01101001 - .db %10011001,%00011001 - .db %01000010,%11000001 - .db %00111100,%00111110 + .db 8,2 + .db %00000000,%00111100 + .db %00000000,%01010010 + .db %00000000,%01100001 + .db %01100011,%10011001 + .db %10010100,%01101001 + .db %10011001,%00011001 + .db %01000010,%11000001 + .db %00111100,%00111110 levelhead = 'w' levelhead2 = 95 ;wormy levels header = "95" @@ -251,7 +281,7 @@ stringfound: inc ix _searchnext: cal _RAM_PAGE_7 - jr searchnext + jr searchnext loadgametype: psh de @@ -278,7 +308,11 @@ searchcomplete: #else ld ix,templevels-3 #endif -levelselectmenu: + cp (ix+3) ;1st=255 + jp z,ExitNoStats ;->no lvls + cp (ix+6) ;2nd=255 + jr z,loadlevel1 ;->1 lvl +levelselectmenu: ;load next page psh ix ;offset ld a,-2 ld (availevels),a @@ -295,7 +329,9 @@ levelselectmenu: ld hl,$0601 ;x=1 ld (_penCol),hl dispnextlevel: - ld a,(ix+3) + ld de,3 + add ix,de + ld a,(ix) ld b,a inc a ;cp 255 jr z,__levselect @@ -308,8 +344,6 @@ displevel: ld (hl),a ;y+6 cp 49 ;bottom of screen jr nc,_levselect - ld de,3 - add ix,de ld hl,availevels inc (hl) ld a,b ;(ix+0) @@ -319,6 +353,12 @@ displevel: cal _vputs jr dispnextlevel +loadlevel1: + psh ix + pop hl + ld b,-2 + jr loadlevel + readylevelfile: ;selected level at ahl ; ld hl,templevels-3/0 ld a,b @@ -419,12 +459,12 @@ loadlevel: cal _Get_Word_ahl ld (leveldataSize),de - ld d,8 ;counter + ld d,9 ;counter ld bc,datalevels cal loadgametype ld (hilvlposa),a ;singleplayer levels ld (hilvlposhl),hl - ld d,4 + ld d,5 cal loadgametype cal _SET_ABS_SRC_ADDR ;levelsstart @@ -463,11 +503,11 @@ setdeflevels: ;----- build trig tables ----- ;----------------------------- - ld hl,TrigPrecalc - ld de,SinCosTable - psh de - ld bc,65 - ldir + ld hl,TrigPrecalc ;I believe this + ld de,SinCosTable ;is one of the few + psh de ;pieces of original + ld bc,65 ;Peaworm code still + ldir ;left intact.. dec hl ld b,63 MirrorSineWave: @@ -504,11 +544,9 @@ DisplayMenu: ;---draw menu--- ld hl,$FC00+$3E0 ;(*,62) cal hr dispmainmenu: - ld hl,Gametype - ld a,(hl) + ld a,(Gametype) dec a ;will be inced @changegame - and 7 - ld (hl),a + cal changedgame ld hl,changegame ;dispmenusets ;mainMenu psh hl ;jump here after ret ld hl,txtMenu @@ -784,6 +822,17 @@ select: ;2nd/enter dec a ;6th: controls jp z,changekeys jp LetsGetThisPartyOn ;otherwise + +changenrworms: + cal change4spOnly + ld a,(hl) ;hl=nrworms + inc a + cp 5 + jr nc,mainMenu ;may not be >4 +changednrworms: + ld (hl),a + jr _dispmenusets ;mainMenu + notselect cp K_EXIT jp z,ExitNoStats @@ -839,15 +888,6 @@ bchangecurworm: jr nz,changedcurworm ;save >0 jr mainMenu -changenrworms: - cal change4spOnly - ld a,(hl) ;hl=nrworms - inc a - cp 5 - jr nc,mainMenu ;may not be >4 -changednrworms: - ld (hl),a - jr _dispmenusets ;mainMenu changenrwormsInit: ld a,(Gametype) cp 3 @@ -887,7 +927,12 @@ changegame: jr z,changegame jr dispmenusets ;mainMenu changedgame: - and 7 ;mod 8 + cp 9 + jr c,changedgameok + sub 255-8 ;-1 -> 8 + jr nc,changedgameok + xor a ;9 -> 0 +changedgameok: ld (Gametype),a cal getnrlevels xor a @@ -1207,7 +1252,7 @@ hlatlevel: ;d must be 0 add a,a ;nc add a,e add a,a ;8->2bytes - add a,24+1 ;go to datalevels + add a,28+1 ;go to datalevels ld e,a ;=de sbc hl,de ;datalevels cal _ldHLind ;ld hl,(hl) @@ -1350,7 +1395,7 @@ OhMyGodItsALabel: ;pj34r my coding skillz ld a,0 gameCar =$-1 rra ;and _datalink - jp nc,StartLevel ;&&&jr + jr nc,_StartLevel ;--------- link ------------ @@ -1415,6 +1460,7 @@ setclient: ex de,hl ld b,168 cal sendstuff +_StartLevel: jr StartLevel sendstuff: psh de @@ -1497,6 +1543,14 @@ StartLevel: inc hl ld l,(hl) ld h,0 + ld a,(gameCar) + rla + ld a,0 ;(Left)=256 + jr nc,setscorelimit + ld a,l + ld l,h +setscorelimit: + ld (customleft),a cal _HLTIMES10 ;hl=10*(hl) ld (scorelimit),hl @@ -1522,8 +1576,25 @@ donextlevel: or a ;gamesingle psh af cal nz,skiplvltitle - ld de,Left - ldi + ld a,(hl) + and 127 + jr nz,setleft +customleft =$+1 + ld a,0 +setleft: + ld (Left),a + inc a + ld (lefttotal),a + dec a + xor (hl) ;bit (hl),7 + ld bc,gameCar + ld a,(bc) + jr z,leftloaded + or 128+32 +leftloaded: + ld (bc),a + inc de + inc hl ld de,Speed ld a,0 customspeed =$-1 @@ -1753,11 +1824,14 @@ maskline: #endif ld a,(gameCar) - and _datafood - jr z,nofood - ld ix,worm1 + bit _bitfood,a + jr nz,nofood +; ld ix,worm1 cal NewPea + xor a nofood: + rla ;bit _bitmultpeas,a + cal c,multnewpea ld bc,(worm1+pos) cal DisplayField @@ -2481,22 +2555,28 @@ Hitworm: ld a,(gameCar) ld h,a #ifdef optdie - and _datadie - cal z,checkhitotherworm +; if race - originally + cal checkhitotherworm ld a,h #endif - and _datamultpeas ;&&bit + and _datactfpeas ;&&bit jr nz,chkctfpeas ld a,h + and _datamultpeas ;&&bit + jp nz,chkmultpeas + ld a,h and _datafood - jp z,WormDead ;no food + jp nz,WormDead ;no food ld hl,0 PeaY =$-2 PeaX =$-1 cal chkpeahit jp nc,WormDead +pickpea: cal DrawPea ;remove pea + cal NewPea +pickpea_: ld a,(ix+grow) add a,15 peagrowth =$-1 @@ -2504,17 +2584,16 @@ peagrowth =$-1 jr nc,wormset2grow inc (ix+grow+1) wormset2grow: - cal NewPea ld hl,Left - dec (hl) + dec (hl) ;dec left before display psh af ld e,10 cal IncScore pop af jp nz,Drawworm ;continue - ld a,(gameCar) - and _datafoodl - jp z,Drawworm +; ld a,(gameCar) ;(Left)>256 +; and _datafoodl +; jp z,Drawworm ld a,(Gametype) or a jp nz,Exit ;stack restored @@ -2597,6 +2676,34 @@ hitflag: ;correct pea hit ld (drawctfpea2),a ;..both flags jr Drawworm +chkmultpeas: + ld de,peaspos-1 + ld hl,lefttotalb +lefttotal =$+1 + ld (hl),0 +chkmultpealoop: + ex de,hl + inc hl + ld e,(hl) + inc hl + ld d,(hl) + ex de,hl + psh de + cal chkpeahit + pop de + jr c,pickmultpea + ld hl,lefttotalb + dec (hl) + jr nz,chkmultpealoop + jp WormDead +pickmultpea: + ld a,247 + ld (de),a + dec de + ld (de),a + cal DrawPea + jp pickpea_ + ;----------------------------- nextotherwormbit: @@ -2967,6 +3074,22 @@ tryDrawPea: ;hl=peapos;bc=dopea jr z,DrawPea ret +multnewpea: + ld de,peaspos + ld a,(Left) + ld b,a +multpealoop: + psh bc + psh de + cal NewPea + pop de + ld hl,PeaY + ldi + ldi + pop bc + dnz multpealoop + ret + NewPea: ld a,(FieldWidth) add a,127-4 @@ -3280,9 +3403,9 @@ savestr: ;----------------------------- -DisplayField: - ld a,c - sub 29 +DisplayField: ;all done by Jonah Cohen iirc. (-scrolling is scary-) + ld a,c ;not the fastest routine outthere, but it does get the job done. + sub 29 ;if something doesn't work, I probably _did_ alter it ;) jr nc,NotMinYScroll xor a NotMinYScroll: @@ -3551,7 +3674,7 @@ FindPixel: ;(b,c) to hl:a FP_Bit =$+1 set 0,a - psh de ;&&& + psh de ;&&& C`MON! THIS IS UGLY! *hit myself* ld de,ScrBuffer add hl,de pop de @@ -3589,6 +3712,12 @@ drawsmtn: ; dec a ;4 = circle ; jp z,drawcircle +;IMHO, one weery nice routine. Oh lemme be proud just *once*. +;Not perfect since it uses a screwy lineroutine to draw stuff +;but, just _look_ at it. Ain't it grand? Z80 at its best. +;Nice comments, also. So here we go: Shiar's Circle Routine: +;(using the Bresenham method) + drawcircle: ;(d,e),h ;de=x,y; h=z ld c,h ;c=yy=z ld a,h @@ -3652,7 +3781,7 @@ circledraw: ;destr:de ld b,c ld c,a ;ex b,c pop hl - ret + ret ;thats it drawbox: ;(d,e)-(h,l) ld b,l ;Delta-y @@ -3676,8 +3805,10 @@ drawfatline: dec h ; jp drawline -;LINE (d,e)-(h,l) -;destroyes a +;A lot like Scabby's line routine in Wonderworm (dunno whether he wrote it +;himself tho.) I did make a few optimizations and commented the thing. +;A nice routine (also Bresenham), but for Wormy not perfect since really +;large lines (>128 pixels in length or something) won't be flawless. drawline: ;(d,e)-(h,l) psh bc ;destr: a @@ -3918,13 +4049,13 @@ LevelDef: LevelDefM: .db "Empty Arena",0 - .db 8,4,15,15,0,0 + .db 5,4,15,15,0,0 .db $40,30,2,$C0,30,125, $00,2,64,$80,54,64 .db 128,57 .db 0 .db "Fast Fun :))",0 - .db 8,0,18,12,5 + .db 8+128,0,18,12,5 .db %1110000,%10001000,%10001000,%10001000,%1110000,0 .db $40,30,2,$C0,30,125, $00,2,64,$80,54,64 .db 128,57 @@ -4025,9 +4156,10 @@ txtGame1: .db "Peaworm",0 txtGame2: .db "Tron",0 txtGame3: .db "Deathmatch",0 txtGame4: .db "Foodmatch",0 -txtGame5: .db "Timematch",0 -txtGame6: .db "Race",0 -txtGame7: .db "CTF" ;,0 +txtGame5: .db "Multifoodmatch",0 +txtGame6: .db "Timematch",0 +txtGame7: .db "Race",0 +txtGame8: .db "CTF" ;,0 posGame: .db 0 .db txtGame1-txtGame @@ -4037,6 +4169,7 @@ posGame: .db 0 .db txtGame5-txtGame .db txtGame6-txtGame .db txtGame7-txtGame + .db txtGame8-txtGame txtNone: .db "None",0 txtDef: .db "Default",0 @@ -4079,47 +4212,51 @@ txtGO: .db 5,5,5,5,5," GAME OVER ",$CF,$CF,$CF,$CF,$CF,0 #ifdef intlevels datalevels: .dw LevelDef, LevelDefM .dw LevelDefT,LevelDefM - .dw LevelDefM,LevelDefM + .dw LevelDefM,LevelDefM,LevelDefM .dw LevelDefR,LevelDefC -nrlevels: .db 0,3,1,3,3,3,3,1 ;=defaults +nrlevels: .db 2,3,1,3,3,3,3,3,1,0 ;=defaults #else -datalevels: .dw 0,0,0,0,0,0,0,0 -nrlevels: .dw 0,0,0,0 +datalevels: .dw 0,0,0,0,0,0,0,0,0 +nrlevels: .dw 0,0,0,0,0 #endif -_datalink = %0000001 ;linkplay -_datafoodl = %0000010 ;left=0 limit -_datasingl = %0000100 ;singleplayer=1 (=hiscore+keep_length+nextlevel) -_datamultpeas = %0001000 ;multiple peas=1 -_datatime = %0010000 ;time incs score (timematch) -_datafood = %0100000 ;food present -_datadie = %1000000 ;worm dies on impact -;reserved %10000000 ;for future use - -savestart: ; Úgame info (see above) - ; | Úlives (0=unlimited) - ; | | Únrworms (can be altered by user) - ; | | | Úlevel (reset to 1 at startup) - ; | | | | Úspeed/delay (-1=def) - ; | | | | | Úgrow speed (-1=none; 0=continuous) - ; | | | | | | Úturn speed (8=def) - ; | | | | | | | Úscore limit (0=none) -gamesingle = 0 ;used | | | | | | | | -datasingle: .db %1100110,3,1,1,-1,-1, 8, 0 ;Singleplayer (SP; 3 lives) +_datalink = %00000001 ;linkplay +_datafoodl = %00000010 ;left=0 limit +_datasingl = %00000100 ;singleplayer=1 (=hiscore+keep_length+nextlevel) +_datactfpeas = %00001000 ;ctf peas=1 +_datatime = %00010000 ;time incs score (timematch) +_datafood = %00100000 ;food present=0 +_bitfood = 5 +_datamultpeas = %10000000 ;multiple peas=1 (no _datafood) +_bitmultpeas = 7 +;reserved %01000000 ;for future use + +savestart: ; Úgame info (see above) + ; | Úlives (0=unlimited) + ; | | Únrworms (can be altered by user) + ; | | | Úlevel (reset to 1 at startup) + ; | | | | Úspeed/delay (-1=def) + ; | | | | | Úgrow speed (-1=none; 0=continuous) + ; | | | | | | Úturn speed (8=def) + ; | | | | | | | Úscore limit (0=none) +gamesingle = 0 ; | | | | | | | | +datasingle: .db %01000110,3,1,1,-1,-1, 8, 0 ;Singleplayer (SP; 3 lives) gamepeas = 1 -datapeas: .db %1100100,1,1,1,-1,-1, 8, 0 ;Peaworm (SP; 1 live) +datapeas: .db %01000100,1,1,1,-1,-1, 8, 0 ;Peaworm (SP; 1 live) gametron = 2 -datatron: .db %1010100,1,1,1,-1, 0, 8, 0 ;Tron (SP; 1 live, cont.growth) -gamedeathm = 3 ;used -datadeathm: .db %1000000,3,2,1,-1,49, 8, 0 ;Deathmatch (3 lives, 50 growth) +datatron: .db %01110100,1,1,1,-1, 0, 8, 0 ;Tron (SP; 1 live, cont.growth) +gamedeathm = 3 +datadeathm: .db %01100000,3,2,1,-1,49, 8, 0 ;Deathmatch (3 lives, 50 growth) gamefoodm = 4 -datafoodm: .db %1100000,0,2,1,-1,-1, 8,10 ;Foodmatch (100 score) -gametimem = 5 -datatimem: .db %1010000,1,2,1,-1, 0, 8, 0 ;Timematch (tron, 100 score) -gamerace = 6 ;used -datarace: .db %0000000,0,2,1,-1,-1, 8,10 ;Race (100 score, no collision) -gamectf = 7 ;used -datactf: .db %1001000,0,4,1,-1,-1, 8,10 ;CTF (100 score) +datafoodm: .db %01000000,0,2,1,-1,-1, 8,10 ;Foodmatch (100 score) +gamemfoodm = 5 +datamfoodm: .db %11100010,0,2,1,-1,-1, 8,10 ;MuchFoodmatch (10 peas)) +gametimem = 6 +datatimem: .db %01110000,1,2,1,-1, 0, 8, 0 ;Timematch (tron, 100 score) +gamerace = 7 +datarace: .db %01100000,0,2,1,-1,-1, 8,10 ;Race (100 score) +gamectf = 8 +datactf: .db %01001000,0,4,1,-1,-1, 8,10 ;CTF (100 score) worm1set: .dw worm1p,worm1p .db %11110111,1,-01,K_RIGHT,K_LEFT