+menupos:
+ ld a,b
+ add a,4
+ ld h,0
+ ld l,a
+ ld (_curRow),hl
+ ret
+menuclr:
+ cal menupos
+ ld a,' '
+ jp _putc
+menudown:
+ cal menuclr
+ inc b
+ jr menuupdown
+menuup:
+ cal menuclr
+ dec b
+menuupdown:
+ ld a,b
+ and %11 ;4=0;-1=3
+menudraw:
+ ld b,a
+ cal menupos
+ ld a,'*'
+ jp _putc ;a=K_STO
+
+changeworms:
+ cal _clrWindow
+ ld a,(Gametype)
+ cp 2
+ ld a,1
+ jr c,wormnrname
+ ld a,(nrworms)
+wormnrname:
+ add a,a ;2x
+ ld e,a
+ add a,a ;4x
+ add a,a ;8x
+ add a,a ;16x
+ add a,e ;18x
+ ld e,a
+ ld d,0
+ ld ix,worm1name-18
+ add ix,de
+ ld a,maxnamelength
+ cal entername
+ ld (ix),0
+ jp DisplayMenu
+
+entername:
+ ld (namelength),a
+enternameloop:
+ ld a,'_'
+ cal _putc
+ ld hl,_curCol
+ dec (hl)
+nokeypressed:
+ halt
+ cal GET_KEY
+ or a
+ jr z,nokeypressed
+
+ cp K_DEL
+ jr nz,continue
+backspace:
+ ld hl,namelength
+ ld a,(hl)
+ cp maxnamelength
+ jr nc,nokeypressed
+ inc (hl)
+
+ dec ix
+ ld a,' '
+ ld (ix),a
+ cal _putc
+ ld hl,_curCol
+ dec (hl)
+ dec (hl)
+ jr enternameloop
+continue:
+ cp K_ENTER
+ ret z
+ cp K_EXIT
+ ret z
+
+ ld hl,namelength
+ dec (hl)
+ ret z
+
+ ld hl,chartable
+ ld e,a
+ ld d,0
+ add hl,de
+ ld a,(hl)
+ or a
+ jr z,nokeypressed
+
+ ld (ix),a
+ cal _putc
+ inc ix
+ cal waitnokeypressed
+ jr enternameloop
+
+waitnokeypressed:
+ halt
+ cal GET_KEY
+ or a
+ jr nz,waitnokeypressed
+ ret
+
+namelength:
+ .db 0
+chartable:
+ .db 0,"!<>^",0,0,0,0
+ .db 0,"xtoje0",0 ;enter..clear
+ .db " wsnid9",0 ;(-)..custom
+ .db "zvrmhc8",0 ;dot..del
+ .db "yuqlgb7*" ;0..xvar
+ .db 0,"-pkfa6'" ;on..alpha
+ .db "54321.",0,0 ;F5..more
+
+;--proc
+
+skiplevel: ;@hl - destr:ab - alter:hl
+ inc hl
+ inc hl
+ inc hl
+ inc hl ;skip 4
+ ld b,(hl) ;spritesize
+ inc b
+skipsprite:
+ inc hl
+ dnz skipsprite
+ ld b,(hl) ;balls
+ inc b
+ inc b ;skip 6
+ ld a,c
+ and _datasingl
+ jr nz,skipworms
+ 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
+ cal skiplines ;lines
+skiplines: ;boxes
+ ld a,(hl) ;lines/boxes
+ add a,a
+ add a,a
+ inc a
+ ld b,a ;4x(hl)+1
+skiplb
+ inc hl
+ dnz skiplb
+ ret
+