From: Mischa Poslawsky Date: Wed, 16 Jan 2002 22:02:34 +0000 (+0100) Subject: wormy 0.97.116 X-Git-Url: http://git.shiar.nl/wormy.git/commitdiff_plain/8804e9541b51585f5f9bb062568e34965a0a52e8 wormy 0.97.116 --- diff --git a/wormy.z80 b/wormy.z80 index e3150cd..18efe0c 100644 --- a/wormy.z80 +++ b/wormy.z80 @@ -16,8 +16,8 @@ ; ßÛÛÛß ßÛÛßß ßÛÛÛÛÛß ÛÛ ÛÛÝ ßÛÛÛÛÛÛÛÛÛß ;_______________________________________________________________________________ ; -; Version : 97% (0.97.115A) -; Release Date : 2002 January 15 +; Version : 97% (0.97.116) +; Release Date : 2002 January 16 ; Author(s) : Shiar ; Email Address : wormy@shiar.org ; Web Page : www.shiar.org @@ -79,13 +79,18 @@ ; X [115A] exit at g/o goes back to menu ; X [115A] more in menu lets you reselect the levelfile ; X [115A] LINK: fixed waiting mode (minor display problem) +; X [116] incs at skiplevels effectively replaced by add (-4 bytes) +; X [116] another 2 bytes shaved off +; X [116] LINK: received gamemode now displayed correctly at g/o +; X [116] gamecar right after gametype saves about 20 bytes +; X [116] LINK: minimize sent data +; X [116] remove +input in worm storage +; X [116] head position init uses same data as tail (-4 bytes) ; * word-value display storage in chartable hole?? ; 1% * misc (bugs, &&&, pollish, &&, &) ; * look at init-z in line routine again ; * rare pea|wall overwrite <- apply stopworm fix? ; 1% * LINK: >Somehow do a lot of testing with 2 calcs< *sigh* -; * LINK: called "Linkmatch" at g/o -; * LINK: minimize sent data (Gametype for example) ; * LVL: episode #3: at least 5 lvls for each mp mode ; * LVL: episode #4: 10 sp levels, including multipeas ; 1% * LVL: episode #5: ... @@ -168,13 +173,13 @@ worm4p = $A400 ;-A5FF (200) %101001O0 ;free = $A600 ;-A7FF (200) worm2p = $A800 ;-ABFF (400) %10101O00 SinCosTable = $AC00 ;-AD00 (4*40) -worm1 = $AD01 ;-AD1F (1F) -worm2 = $AD20 ;-AD3E (1F) -worm3 = $AD3F ;-AD5D (1F) -worm4 = $AD5E ;-AD7C (1F) -balls = $AD7D ;-AE00 (<=3x44d) -turn10 = $AE01 ;-AE01 (1) (counter) -peaspos = $AE02 ;-AF05 (4-260) (peas) +worm1 = $AD01 ;-AD1E (1E) +worm2 = $AD1F ;-AD3C (1E) +worm3 = $AD3D ;-AD5A (1E) +worm4 = $AD5B ;-AD78 (1E) +balls = $AD79 ;-AE00 (<=3x2D) (bb<=45) +turn10 = $AE01 ;-AE01 (1) (counter) +peaspos = $AE02 ;-AF05 (4-260) (peas) ;free = $AF06 ;-AFFF (F9) worm1p = $B000 ;-B7FF (800) %1011O000 worm3p = $B800 ;-BBFF (400) %10111O00 @@ -186,7 +191,6 @@ leveldata = $F080 ;-F9FF (<=97F) datalevels = $FA00 ;-FA11 (12) (>=$C000) nrlevels = $FA12 ;-FA1B (A) (<$FA70) defspr = $F078 ;-F07F (8) -defsprsz = 0 #endif ;MEM|8---9---A---B---C---D---E---F---| ;there's something wrong @@ -207,6 +211,28 @@ lefttotalb = $BF91 ;(1) @game drawctfpea1 = peaspos+4 drawctfpea2 = peaspos+6 +;--- layout --- + +;(wormN) set: +heading = 0 ;level* +pos = 2 ;level* +pos2 = 4 ;level +grow = 6 ;level +died = 8 ;game: +score = 9 +delay = 11 +lives = 12 +head = 13 + ; Ú15B (wormNset) +tail = 15 ; |also@next level +storepos = 17 ; | +reserv = 18 ; |loop (race:lap|ctf:pea) +left = 19 ; | +right = 20 ; | +name = 21 ; |_ + +wormsize = 30 ;^mark^ + ;_______________________________________________________________________________ ; _____ ______ _____ ______ _______ _______ _______ ______ _______ ; |_____] |_____/ | | | ____ |______ | |_____| |_____/ | @@ -234,7 +260,7 @@ start: ;turn back NOW! .db %1010010 jr nz,$+47 dec l - .db " 97% .115A",0 + .db " 97% .116",0 WormIcon: .db 8,2 .db %00000000,%00111100 @@ -300,11 +326,8 @@ searchloop: jr z,stringfound searchnext: pop hl - dec hl ;5x - dec hl - dec hl - dec hl - dec hl + ld de,-5 + add hl,de ld b,(hl) ;name size inc b skipname: @@ -617,7 +640,7 @@ DisplayMenu: ld hl,$FC00+$3E0 ;(*,62) cal hr dispmainmenu: - ld a,(Gametype) + ld a,(gametype) dec a ;will be inced @changegame cal changedgame ld hl,changegame ;dispmenusets ;mainMenu @@ -674,7 +697,7 @@ dispoptionmenu: dispomenusets: #ifdef spprotect - ld a,(gameCar) + ld a,(gamecar) and _datasingl jp nz,LetsGetThisPartyOn #endif @@ -735,7 +758,7 @@ dispturndone: cal cshowA ;limit pop af ;a==0? jr z,optionMenu ;do not display 0 behind 'None' - ld a,c ;(gameCar) + ld a,c ;(gamecar) rla ;and _dataPmult jr nz,optionMenu ;in multifood limit == #peas ld a,'0' @@ -981,7 +1004,7 @@ bchangenrworms: jr _mainMenu change4spOnly: - ld a,(Gametype) + ld a,(gametype) cp 3 ret nc pop hl ;cal @@ -991,7 +1014,7 @@ changelink: bchangelink: cal change4spOnly dec hl ;inced earlier - dec hl ;gameCar + dec hl ;gamecar ld a,1 ;change LS-bit (=link) xor (hl) ;0=1; 1=0 ld (hl),a @@ -999,7 +1022,7 @@ _dispmenusets: jr dispmenusets ;mainMenu changegame: - ld a,(Gametype) + ld a,(gametype) inc a cal changedgame jr z,changegame @@ -1011,13 +1034,13 @@ changedgame: jr nc,changedgameok xor a ;9 -> 0 changedgameok: - ld (Gametype),a + ld (gametype),a cal getnrlevels xor a cp (hl) ret bchangegame: - ld a,(Gametype) + ld a,(gametype) dec a cal changedgame jr z,bchangegame @@ -1043,7 +1066,7 @@ bchangelevel: jr _mainMenu getnrlevels: ;for current gametype at hl - ld hl,Gametype + ld hl,gametype ld d,0 ld e,(hl) ld hl,nrlevels @@ -1076,20 +1099,11 @@ changekeys: ;--- display current settings --- dispmenusets: - cal clrold ld de,$183E ld (_penCol),de - ld d,0 - ld a,(Gametype) - ld e,a - ld hl,posGame - add hl,de ;hl=posGame+(Gametype) - ld a,(hl) ;str.offset - ld e,a ;^d=0^ - ld hl,txtGame - add hl,de ;txtGameX - ld (CURtxtGame),hl ;save for g/o - cal _vputs ;Singleplayer + cal clrold + cal loadtxtgame + cal _vputs ;Singleplayer or smtn ld hl,$2A3E ;worms ld (_penCol),hl @@ -1109,7 +1123,7 @@ dispmenusets: ld hl,$243E ld (_penCol),hl - rr c ;(gameCar) + rr c ;(gamecar) ld hl,txtNo jr nc,displink ld hl,txtYes @@ -1122,7 +1136,7 @@ displink: psh bc ld d,0 cal hlatlevel - ld a,(Gametype) + ld a,(gametype) or a ;gamesingle jr nz,displvlname ld a,(Level) @@ -1217,16 +1231,16 @@ menunewok: getwormname: ;of (curworm) ld a,(curworm) - add a,a ;2x ld e,a + add a,a ;2x add a,a ;4x add a,a ;8x add a,a ;16x - add a,e ;18x + sub e ;15x ld e,a ld d,0 ;de=a - ld ix,worm1name-18 + ld ix,worm1name-15 add ix,de ret @@ -1317,7 +1331,7 @@ ubergetkey: halt ;save them batteries! yeah! jp GET_KEY -clrold: +clrold: ;destr:acdehl (acd=0) ld hl,$FD97 ;begin pos ld a,35 ;nr of lines clroldcustom: @@ -1336,19 +1350,21 @@ clroldsetsloop: hlatlevel: ;d must be 0 psh hl ;loadgamecar - ld a,(Gametype) ;8bytes -> 7bytes + ld a,(gametype) add a,a ld e,a ;=de ld hl,datalevels - add hl,de + add hl,de ;+2*mode cal _ldHLind ;ld hl,(hl) - pop de ;de=loadgamecar - inc de \ inc de - ld a,(de) ;(curlevel) + ex (sp),hl ;hl=loadgamecar + ld e,2 ;=de + add hl,de + ld a,(hl) ;(curlevel) ld (Level),a - ld d,a ;begin level + ld c,a ;begin level + pop hl ;@level1 skiplevelloop: - dec d ;levels to skip + dec c ;levels to skip ret z cal skiplevel jr skiplevelloop @@ -1361,15 +1377,13 @@ skiplvltitle: ;zf=singleplayer jr nz,skiplvltitle ret -skiplevel: ;@hl - destr:ab - alter:hl - ld a,(Gametype) +skiplevel: ;@hl; de=2 - destr:ab - alter:hl + ld a,(gametype) or a ;gamesingle psh af cal nz,skiplvltitle - inc hl - inc hl - inc hl - inc hl ;skip 4 + add hl,de + add hl,de ;skip 4 ld b,(hl) ;spritesize inc b skipsprite: @@ -1378,52 +1392,39 @@ skipsprite: ld b,(hl) ;balls inc b inc b ;skip 6 - pop af ;cp (Gametype),0 - jr z,skipworms + pop af ;cp (gametype),0 + jr z,skipstuff inc b ;multiplayer lvl inc b inc b ;skip other 3 worms (9 bytes) -skipworms: - ld a,b - add a,a - add a,b - ld b,a ;3x(balls+2) -skipballs: - inc hl - dnz skipballs - -skipflags: - ld a,(Gametype) - cp gamerace +skipstuff: + add hl,de + inc hl ;3x(balls+2) + dnz skipstuff + sub gamerace ;a=(gametype) jr z,skiplaps - cp gamectf - jr nz,noflagstoskip - inc hl - inc hl + dec a ;gamectf + jr nz,skipobjects + add hl,de skiplaps: - inc hl - inc hl -noflagstoskip: - + add hl,de skipobjects: xor a or (hl) inc hl ;nf ret z ;0=end - inc hl - inc hl - inc hl - inc hl + add hl,de + add hl,de jr skipobjects loadgamecar: -;in: (Gametype) +;in: (gametype) ;out: hl=dataTYPE -;build: c=(gameCar)=(hl-1) +;build: c=(gamecar)=(hl-1) ; a=(wormbeglives)=(hl) ;destr: acdehl ld hl,datasingle - ld a,(Gametype) + ld a,(gametype) add a,a add a,a add a,a ;8 bytes per mode @@ -1431,7 +1432,7 @@ loadgamecar: ld d,0 add hl,de ld a,(hl) - ld (gameCar),a + ld (gamecar),a ld c,a inc hl ld a,(hl) @@ -1457,31 +1458,34 @@ createwormsloop: ld bc,died ;0008 add hl,bc ; ld b,0 - ld (hl),b ;died=0 + ld (hl),b ;+died=0 inc hl - ld (hl),b ;score=0 + ld (hl),b ;+score=0 inc hl - ld (hl),b ;score+1=0 + ld (hl),b ;+score+1=0 inc hl - ld (hl),2 ;delay=2 + ld c,2 + ld (hl),c ;+delay=2 inc hl - ld (hl),3 ;lives=x + ld (hl),3 ;+lives=x wormbeglives =$-1 inc hl ex de,hl ;de=wormX+head - ld bc,18 - ldir ;copy 18 bytes + ldir ;+head=+tail (2) + dec hl + dec hl + ld c,wormsize-tail ;=bc + ldir ;copy 15 bytes dec a ;loop jr nz,createwormsloop -OhMyGodItsALabel: ;pj34r my coding skillz +OhMyGodItsALabel: ;pj34r my coding skillz cal loadgamecar psh hl ;datatype cal hlatlevel ex (sp),hl ;pop \ psh leveldata psh hl ;psh loadgamecar - ld a,0 -gameCar =$-1 + ld a,(gamecar) rra ;and _datalink jr nc,_StartLevel @@ -1523,17 +1527,16 @@ client: ld hl,datalink psh de psh hl ;loadgamecar - ld b,8 ;&&&&&&& - cal recvstuff - ld hl,gameCar - ld b,1 - cal recvstuff - ld hl,Gametype - ld b,1 - cal recvstuff + ld b,8 + cal recvstuff ;game setup + ld hl,gametype ;+gamecar + ld b,2 + cal recvstuff ;transmit game ex de,hl ld b,168 - cal recvstuff + cal recvstuff ;level + ld d,b + cal loadtxtgame ;set CURtxtGame _StartLevel: jr StartLevel @@ -1598,16 +1601,13 @@ host: psh de psh hl ;loadgamecar ld b,8 - cal sendstuff - ld hl,gameCar - ld b,1 - cal sendstuff - ld hl,Gametype - ld b,1 - cal sendstuff + cal sendstuff ;setup + ld hl,gametype ;+gamecar + ld b,2 + cal sendstuff ;game ex de,hl ld b,168 - cal sendstuff + cal sendstuff ;level ;--- load level --- @@ -1641,7 +1641,7 @@ teamset: inc hl ld l,(hl) ld h,0 - ld a,(gameCar) + ld a,(gamecar) rla ld a,h ;(Left)=256 jr nc,setscorelimit @@ -1670,7 +1670,8 @@ Nextlevel: inc hl ;location of ending-code jp (hl) ;go there ("call") donextlevel: - ld a,(Gametype) + ld bc,gametype + ld a,(bc) or a ;gamesingle psh af cal nz,skiplvltitle @@ -1685,7 +1686,7 @@ setleft: ld (lefttotal),a dec a xor (hl) ;bit (hl),7 - ld bc,gameCar + inc bc ;gamecar ld a,(bc) jr z,leftloaded or 128+32 @@ -1725,7 +1726,11 @@ setspeed: add hl,bc ;hl=behind sprite jr setsprite defaultsprite: +#ifndef intlevels + ld a,42 ;always overwritten +#else ld a,defsprsz +#endif defsprsize =$-1 defsprite =$+1 ld de,defspr @@ -1753,7 +1758,7 @@ toobad_noballs: #endif ld hl,worm1 - pop af ;cp (Gametype),0 + pop af ;cp (gametype),0 ld b,1 jr z,worminit ld b,4 @@ -1867,7 +1872,7 @@ NoVertShift: pop hl ; << levelp - ld a,(Gametype) + ld a,(gametype) cp gamerace ;or gamectf jr c,levelhasbeensetup ld de,peaspos @@ -1921,7 +1926,7 @@ maskline: res 3,(iy+5) #endif - ld a,(gameCar) + ld a,(gamecar) rla ;bit __bitPmult,a cal c,multnewpea ;a=0 rla ;bit __bitfood,a @@ -1990,7 +1995,7 @@ growspeed =$+1 ld (hl),$FF ;reset nextturnok: - ld a,(gameCar) + ld a,(gamecar) and _datatime jr z,nodispupdate ld hl,turn10 @@ -2000,7 +2005,7 @@ nextturnok: cal forceshowstats ;update score nodispupdate: - ld a,(Gametype) + ld a,(gametype) cp gamectf jr nz,noctfpeas2draw ld de,drawctfpea1 @@ -2271,7 +2276,7 @@ NoLinkIndic: pop hl psh hl - ld a,(Gametype) + ld a,(gametype) cp gamedeathm jr nz,nodmwinner ;deathmatch? ld a,0 ;winner's deaths @@ -2303,7 +2308,8 @@ notwinner: pop bc dnz displayWormStats - ld a,(Gametype) + ld de,gametype + ld a,(de) or a ;singleplayer (0) only jr nz,hilevelcheckdone checkhilevel: @@ -2320,7 +2326,8 @@ hilvlposhl =$-2 ;save external cal _writeb_inc_ahl ;ld (ahl),c hilevelcheckdone: - ld a,(gameCar) + inc de + ld a,(de) ;gamecar and _datasingl jr z,hiscorecheckdone ;no SP checkhiscore: @@ -2385,7 +2392,7 @@ waitkeyloop: loadhiscoreposinahl: ld hl,0 ;for peaworm and singleplayer - ld a,(Gametype) + ld a,(gametype) or a ;Singleplayer? jr z,hi__ dec a ;peaworm? @@ -2473,7 +2480,7 @@ DoesWormTailEqualsWormHead: cal _cphlde jr nz,removewormloop - ld a,(gameCar) + ld a,(gamecar) and _datasingl jr nz,safewormsizedone ld a,0 @@ -2548,7 +2555,7 @@ inputcall: or a jr z,inlink ;input by link cal inkeys ;input by keys - ld a,(gameCar) + ld a,(gamecar) rra ;and _datalink ret nc ;no link ld c,l ;send our keys @@ -2583,7 +2590,7 @@ turn =$-1 inc (ix+grow) nogrow: - ld a,(gameCar) + ld a,(gamecar) and _datatime jr z,notimescore ld e,1 @@ -2674,7 +2681,7 @@ Drawworm: ld c,(ix+pos) ld b,(ix+pos+1) - ld a,(Gametype) + ld a,(gametype) cp gamerace cal z,checkhitlapline @@ -2840,13 +2847,11 @@ checkballhit: ;_______________________________________________________________________________ hitworm: - ld a,(gameCar) #ifdef optdie ; if race - originally - ld h,a cal checkhitotherworm - ld a,h #endif + ld a,(gamecar) bit __bitPctf,a jr nz,chkctfpeas rla ;and _dataPmult @@ -2877,7 +2882,7 @@ wormset2grow: cal IncScore pop af jp nz,Drawworm ;continue - ld a,(Gametype) + ld a,(gametype) or a jp nz,Exit ;stack restored @@ -3106,7 +3111,7 @@ handledworm =$-2 inc (ix+died) dec (ix+lives) psh af - ld a,(Gametype) + ld a,(gametype) cp gamectf ;ctf no death penalty cal nz,DecScore10 pop af @@ -3114,7 +3119,7 @@ handledworm =$-2 ld a,(wormbeglives) or a ;0=no live limit ret z ;don't end game - ld a,(gameCar) + ld a,(gamecar) and _datatime jr z,anyworm ;quit at any worm's death ld a,(nrworms) ;timematch: all worms must've died @@ -3132,6 +3137,18 @@ anyworm: ld (CheckExit),a ;set exit state ret ;finish turn +loadtxtgame: ;in:d=0; out:hl=txtGame+(gametype); destr:ade + ld a,(gametype) + ld e,a + ld hl,posGame + add hl,de ;hl=posGame+(gametype) + ld a,(hl) ;str.offset + ld e,a ;^d=0^ + ld hl,txtGame + add hl,de ;txtGameX + ld (CURtxtGame),hl ;save for g/o + ret + #ifdef optdie checkhitotherworm: .db $dd,$7d ;ld a,lx @@ -3362,7 +3379,7 @@ IncScore: ;inc score by e ld d,0 _IncScore ; inc by de cal ldscoreinhl - ld a,(Gametype) + ld a,(gametype) or a ;if singleplayer... jr z,extralives add hl,de ;score+=de @@ -3380,7 +3397,7 @@ scorelimit =$-2 jp nc,Exit showstats: - ld a,(gameCar) + ld a,(gamecar) and _datatime jr nz,timematchscore ;no disp for timematches ld hl,$FC00 ;&&&only necessary in deathmatch @@ -3398,7 +3415,7 @@ forceshowstats: ld a,(nrworms) ld b,a ld ix,worm1 - ld a,(gameCar) + ld a,(gamecar) and _datasingl jr nz,showstatsS showstatloop: @@ -3487,7 +3504,7 @@ Level =$-1 ld (_penCol),a ld a,(ix+lives) cal cshowA0 ;showlives - ld a,(gameCar) + ld a,(gamecar) and _datafoodl pop ix ret z @@ -4103,7 +4120,7 @@ receivenewpeaoverlink: ld h,c ret sendnewpeaoverlink: - ld a,(gameCar) + ld a,(gamecar) rra ;and _datalink ret nc ;no link ld a,(worm1+left) @@ -4320,95 +4337,93 @@ txtGO: .db 5,5,5,5,5," GAME OVER ",$CF,$CF,$CF,$CF,$CF,0 ;--- menus --- -txtMenu: .db "Mode",0 ;1st menu item - .db "Level",0 ;2nd - .db "Link",0 ;... - .db "Worms",0 - .db "worm #",0 -posMenu: .db 5 +txtMenu: .db "Mode",0 ;1st menu item + .db "Level",0 ;2nd + .db "Link",0 ;... + .db "Worms",0 + .db "worm #",0 +posMenu: .db 5 .dw $2418,$231E,$2824,$1F2A,$1730 -txtteamed: .db " vs 2",0 -txtMenuR: .db "controls",0 -txtoMenu: .db "Back",0 ;1st menu item - .db "Lives",0 ;2nd - .db "Limit",0 ;... - .db "Speed",0 - .db "Rotation",0 - .db "Growth",0 -posoMenu: .db 6 +txtteamed: .db " vs 2",0 ;4th tail +txtMenuR: .db "controls",0 ;6th + +txtoMenu: .db "Back",0 ;1st menu item + .db "Lives",0 ;2nd + .db "Limit",0 ;... + .db "Speed",0 + .db "Rotation",0 + .db "Growth",0 +posoMenu: .db 6 .dw $2618,$251E,$2524,$222A,$1A30,$1C36 -txtpMenu: .db "Resume",0 ;1st menu item - .db "Turn Off",0 ;2nd - .db "Contrast",$CF,5,0 ;... - .db "Exit",0 -pospMenu: .db 4 + +txtpMenu: .db "Resume",0 ;1st menu item + .db "Turn Off",0 ;2nd + .db "Contrast",$CF,5,0 ;... + .db "Exit",0 +pospMenu: .db 4 .dw $3418,$331E,$2F24,$3A2A ;--- text --- -txtGame: .db "Singleplayer",0 -txtGame1: .db "Peaworm",0 -txtGame2: .db "Tron",0 -txtGame3: .db "Deathmatch",0 -txtGame4: .db "Foodmatch",0 -txtGame5: .db "Multifoodmatch",0 -txtGame6: .db "Timematch",0 -txtGame7: .db "Race",0 -txtGame8: .db "CTF" ;,0 -posGame: .db 0 - .db txtGame1-txtGame - .db txtGame2-txtGame - .db txtGame3-txtGame - .db txtGame4-txtGame - .db txtGame5-txtGame - .db txtGame6-txtGame - .db txtGame7-txtGame - .db txtGame8-txtGame - -txtNone: .db "None",0 -txtDef: .db "Default",0 -txtYes: .db "Yes",0 -txtNo: .db "No",0 -txtKleft: .db ":left",0 -txtKright: .db "/right",0 +txtGame: .db "Singleplayer",0 +txtGame1: .db "Peaworm",0 +txtGame2: .db "Tron",0 +txtGame3: .db "Deathmatch",0 +txtGame4: .db "Foodmatch",0 +txtGame5: .db "Multifoodmatch",0 +txtGame6: .db "Timematch",0 +txtGame7: .db "Race",0 +txtGame8: .db "CTF";,0 +posGame: .db 0 + .db txtGame1-txtGame + .db txtGame2-txtGame + .db txtGame3-txtGame + .db txtGame4-txtGame + .db txtGame5-txtGame + .db txtGame6-txtGame + .db txtGame7-txtGame + .db txtGame8-txtGame + +txtNone: .db "None",0 +txtDef: .db "Default",0 +txtYes: .db "Yes",0 +txtNo: .db "No",0 +txtKleft: .db ":left",0 +txtKright: .db "/right",0 posLevsel = $0320 txtLevsel: .db $CF," SELECT LEVELS ",5,0 -txtWaitn: .db "Waiting" ;"...",0 -txtReceiv: .db "...",0 +txtWaitn: .db "Waiting";"...",0 +txtReceiv: .db "...",0 #ifdef readytext -txtReady: .db "Prepare!",0 -txtposReady = 7 +txtReady: .db "Prepare!",0 +txtposReady = 7 #endif -txtLevel: .db "Level ",0 -txtWorms: .db "Worms: 0",0 ;follows txtLevel -txtName: .db "Name",0 -txtWinner: .db "Wins",$D8 ;follows txtName -txtDied: .db "Died",$D8 ;follows txtWinner -txtScore: .db "Score",0 ;follows txtDied -txtLeft: .db " left",0 ;follows txtScore -txthiscore:.db "HiScore:" ;,0 +txtLevel: .db "Level ",0 +txtWorms: .db "Worms: 0",0 ;follows txtLevel +txtName: .db "Name",0 +txtWinner: .db "Wins",$D8 ;follows txtName +txtDied: .db "Died",$D8 ;follows txtWinner +txtScore: .db "Score",0 ;follows txtDied +txtLeft: .db " left",0 ;follows txtScore +txthiscore:.db "HiScore:";,0 ;--- foo --- -trigtable: .db 0, 3, 6, 9, 12, 15, 18, 21 - .db 24, 27, 30, 33, 36, 39, 42, 45 - .db 48, 51, 54, 57, 59, 62, 65, 67 - .db 70, 73, 75, 78, 80, 82, 85, 87 - .db 89, 91, 94, 96, 98,100,102,103 - .db 105,107,108,110,112,113,114,116 - .db 117,118,119,120,121,122,123,123 - .db 124,125,125,126,126,126,126,126,127 +trigtable: .db 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45 + .db 48, 51, 54, 57, 59, 62, 65, 67, 70, 73, 75, 78, 80, 82, 85, 87 + .db 89, 91, 94, 96, 98,100,102,103,105,107,108,110,112,113,114,116 + .db 117,118,119,120,121,122,123,123,124,125,125,126,126,126,126,126 + .db 127 #ifdef intlevels -datalevels:.dw LevelDef, LevelDefM,LevelDefT - .dw LevelDefM,LevelDefM,LevelDefM,LevelDefM - .dw LevelDefR,LevelDefC -nrlevels: .db 2,3,1,3,3,3,3,3,1,0 ;=defaults +datalevels:.dw LevelDef,LevelDefM,LevelDefT,LevelDefM,LevelDefM + .dw LevelDefM,LevelDefM,LevelDefR,LevelDefC +nrlevels: .db 2,3,1,3,3,3,3,3,1,0 ;=defaults defhiscrpos: .db 0,0,"SHI", 0,0,"SHI", 0,0,"SHI", 0,0,"SHI", 0,0,"SHI" #else -defhiscrpos = 0 +defhiscrpos = 0 #endif ;--- game settings --- @@ -4417,89 +4432,73 @@ _datalink = %00000001 ;linkplay (1!) _datafoodl = %00000010 ;left=0 limit _datasingl = %00000100 ;singleplayer=1 (=hiscore+keep_length+nextlevel) &&1? _dataPctf = %00001000 ;ctf peas=1 -__bitPctf = 3 +__bitPctf = 3 _datatime = %00010000 ;time incs score (timematch) ;reserved %00100000 ;for future use _datafood = %01000000 ;food present=0 (6!) _dataPmult = %10000000 ;multiple peas=1 (no _datafood) (7!) -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 %00000110,3,1,1,-1,-1, 8, 0 ;Singleplayer (SP; 3 lives) +savestart:;--- + +worm1set: .dw worm1p + .db %11110111,1,K_RIGHT,K_LEFT +worm1name: .db "WORMY ",0 ;15 bytes +worm2set: .dw worm2p + .db %11111011,0,K_F2,K_F1 +worm2name: .db "VIPER ",0 +worm3set: .dw worm3p + .db %11111011,1,K_COMMA,K_STO +worm3name: .db "NIBBLER ",0 +worm4set: .dw worm4p + .db %11111101,0,K_PLUS,K_ENTER +worm4name: .db "JIM ",0 + + ; Ú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 %00000110,3,1,1,-1,-1, 8, 0 ;Singleplayer (SP; 3 lives) gamepeas = 1 -datapeas: .db %00000100,1,1,1,-1,126,8, 0 ;Peaworm (SP; 1 live, 127 growth) +datapeas: .db %00000100,1,1,1,-1,126,8, 0 ;Peaworm (SP; 1 live, 127 growth) gametron = 2 -datatron: .db %01010100,1,1,1,-1, 0, 8, 0 ;Tron (SP; 1 live, cont.growth) +datatron: .db %01010100,1,1,1,-1, 0, 8, 0 ;Tron (SP; 1 live, cont.growth) gamedeathm = 3 -datadeathm:.db %01000000,3,2,1,-1,49, 8, 0 ;Deathmatch (3 lives, 50 growth) +datadeathm:.db %01000000,3,2,1,-1,49, 8, 0 ;Deathmatch (3 lives, 50 growth) gamefoodm = 4 -datafoodm: .db %00000000,0,2,1,-1,-1, 8,10 ;Foodmatch (100 score) +datafoodm: .db %00000000,0,2,1,-1,-1, 8,10 ;Foodmatch (100 score) gamemfoodm = 5 -datamfoodm:.db %11000010,0,2,1,-1,-1, 8,10 ;MuchFoodmatch (10 peas) +datamfoodm:.db %11000010,0,2,1,-1,-1, 8,10 ;MuchFoodmatch (10 peas) gametimem = 6 -datatimem: .db %01010000,1,2,1,-1, 0, 8, 0 ;Timematch (1 live, cont.growth) +datatimem: .db %01010000,1,2,1,-1, 0, 8, 0 ;Timematch (1 live, cont.growth) gamerace = 7 -datarace: .db %01000000,0,2,1,-1,-1, 8,10 ;Race (100 score) +datarace: .db %01000000,0,2,1,-1,-1, 8,10 ;Race (100 score) gamectf = 8 -datactf: .db %01001000,0,6,1,-1,-1, 8,10 ;CTF (100 score) - -worm1set: .dw worm1p,worm1p - .db %11110111,1,-01,K_RIGHT,K_LEFT -worm1name: .db "WORMY ",0 -worm2set: .dw worm2p,worm2p - .db %11111011,0,-01,K_F2,K_F1 -worm2name: .db "VIPER ",0 -worm3set: .dw worm3p,worm3p - .db %11111011,1,-01,K_COMMA,K_STO -worm3name: .db "NIBBLER ",0 -worm4set: .dw worm4p,worm4p - .db %11111101,0,-01,K_PLUS,K_ENTER -worm4name: .db "JIM ",0 - -Gametype: .db 0 ;last gamemode - -saveend: - - ;set: -heading = 0 ;level* -pos = 2 ;level* -pos2 = 4 ;level -grow = 6 ;level -died = 8 ;game -score = 9 ;game -delay = 11 ;game - ;19B @game -lives = 12 -head = 13 ;4B (head=tail) -tail = 15 ;also@next level -storepos = 17 -reserv = 18 ;loop (race:lap|ctf:pea) -input = 19 ;---currently unused afaik--- -left = 20 -right = 21 -name = 22 -wormsize = 31 - -startdelay = 30 -rspawndelay = 30 -maxnamesize = 8+1 +datactf: .db %01001000,0,6,1,-1,-1, 8,10 ;CTF (100 score) + +gametype: .db 0 ;last gamemode +gamecar: ;made before needed (not saved) + +saveend:;--- + +startdelay = 17 +rspawndelay = 31 +maxnamesize = 8+1 #ifdef intlevels -defsprsz = 4 + .db $42 ;gamecar +defsprsz = 4 defspr: .db %01100000 .db %11110000 .db %11110000 .db %01100000 deflevels: .db "Internal Levels",0 - .db "by Shiar" ;,0 + .db "by Shiar";,0 .db 0,deflevels/256,deflevels&255 #endif