; ����� ����� ������� �� ��� �����������
;_______________________________________________________________________________
;
-; 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
; 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: ...
;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
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
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^
+
;_______________________________________________________________________________
; _____ ______ _____ ______ _______ _______ _______ ______ _______
; |_____] |_____/ | | | ____ |______ | |_____| |_____/ |
.db %1010010
jr nz,$+47
dec l
- .db " 97% .115A",0
+ .db " 97% .116",0
WormIcon:
.db 8,2
.db %00000000,%00111100
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:
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
dispomenusets:
#ifdef spprotect
- ld a,(gameCar)
+ ld a,(gamecar)
and _datasingl
jp nz,LetsGetThisPartyOn
#endif
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'
jr _mainMenu
change4spOnly:
- ld a,(Gametype)
+ ld a,(gametype)
cp 3
ret nc
pop hl ;cal
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
jr dispmenusets ;mainMenu
changegame:
- ld a,(Gametype)
+ ld a,(gametype)
inc a
cal changedgame
jr z,changegame
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
jr _mainMenu
getnrlevels: ;for current gametype at hl
- ld hl,Gametype
+ ld hl,gametype
ld d,0
ld e,(hl)
ld hl,nrlevels
;--- 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
ld hl,$243E
ld (_penCol),hl
- rr c ;(gameCar)
+ rr c ;(gamecar)
ld hl,txtNo
jr nc,displink
ld hl,txtYes
psh bc
ld d,0
cal hlatlevel
- ld a,(Gametype)
+ ld a,(gametype)
or a ;gamesingle
jr nz,displvlname
ld a,(Level)
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
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:
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
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:
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
ld d,0
add hl,de
ld a,(hl)
- ld (gameCar),a
+ ld (gamecar),a
ld c,a
inc hl
ld a,(hl)
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
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
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 ---
inc hl
ld l,(hl)
ld h,0
- ld a,(gameCar)
+ ld a,(gamecar)
rla
ld a,h ;(Left)=256
jr nc,setscorelimit
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
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
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
#endif
ld hl,worm1
- pop af ;cp (Gametype),0
+ pop af ;cp (gametype),0
ld b,1
jr z,worminit
ld b,4
pop hl ; << levelp
- ld a,(Gametype)
+ ld a,(gametype)
cp gamerace ;or gamectf
jr c,levelhasbeensetup
ld de,peaspos
res 3,(iy+5)
#endif
- ld a,(gameCar)
+ ld a,(gamecar)
rla ;bit __bitPmult,a
cal c,multnewpea ;a=0
rla ;bit __bitfood,a
ld (hl),$FF ;reset
nextturnok:
- ld a,(gameCar)
+ ld a,(gamecar)
and _datatime
jr z,nodispupdate
ld hl,turn10
cal forceshowstats ;update score
nodispupdate:
- ld a,(Gametype)
+ ld a,(gametype)
cp gamectf
jr nz,noctfpeas2draw
ld de,drawctfpea1
pop hl
psh hl
- ld a,(Gametype)
+ ld a,(gametype)
cp gamedeathm
jr nz,nodmwinner ;deathmatch?
ld a,0 ;winner's deaths
pop bc
dnz displayWormStats
- ld a,(Gametype)
+ ld de,gametype
+ ld a,(de)
or a ;singleplayer (0) only
jr nz,hilevelcheckdone
checkhilevel:
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:
loadhiscoreposinahl:
ld hl,0 ;for peaworm and singleplayer
- ld a,(Gametype)
+ ld a,(gametype)
or a ;Singleplayer?
jr z,hi__
dec a ;peaworm?
cal _cphlde
jr nz,removewormloop
- ld a,(gameCar)
+ ld a,(gamecar)
and _datasingl
jr nz,safewormsizedone
ld a,0
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
inc (ix+grow)
nogrow:
- ld a,(gameCar)
+ ld a,(gamecar)
and _datatime
jr z,notimescore
ld e,1
ld c,(ix+pos)
ld b,(ix+pos+1)
- ld a,(Gametype)
+ ld a,(gametype)
cp gamerace
cal z,checkhitlapline
;_______________________________________________________________________________
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
cal IncScore
pop af
jp nz,Drawworm ;continue
- ld a,(Gametype)
+ ld a,(gametype)
or a
jp nz,Exit ;stack restored
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
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
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
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
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
ld a,(nrworms)
ld b,a
ld ix,worm1
- ld a,(gameCar)
+ ld a,(gamecar)
and _datasingl
jr nz,showstatsS
showstatloop:
ld (_penCol),a
ld a,(ix+lives)
cal cshowA0 ;showlives
- ld a,(gameCar)
+ ld a,(gamecar)
and _datafoodl
pop ix
ret z
ld h,c
ret
sendnewpeaoverlink:
- ld a,(gameCar)
+ ld a,(gamecar)
rra ;and _datalink
ret nc ;no link
ld a,(worm1+left)
;--- 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 ---
_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