From: Mischa Poslawsky Date: Sun, 25 Feb 2001 00:39:12 +0000 (+0100) Subject: wormy 0.925.1225: new menu X-Git-Url: http://git.shiar.nl/wormy.git/commitdiff_plain/9ab1a608dddf3b6161db1cade9284c4ffe8bc0a2 wormy 0.925.1225: new menu - menu completely redone, so it is much easier to use and more pretty - current selection is inverted instead of marked with * --- diff --git a/title.bmp b/title.bmp deleted file mode 100644 index 62fd899..0000000 Binary files a/title.bmp and /dev/null differ diff --git a/title.gif b/title.gif new file mode 100644 index 0000000..b07abb2 Binary files /dev/null and b/title.gif differ diff --git a/wormy.z80 b/wormy.z80 index 386a5bc..22711b9 100644 --- a/wormy.z80 +++ b/wormy.z80 @@ -1,6 +1,6 @@ ; Title : Wormy -; Version : 92% -; Release Date : june 2000 +; Version : 92.5% +; Release Date : february 2001 ; Filename : wormy.86p (5kb) ; Author(s) : Shiar ; Email Address : shiar0@hotmail.com @@ -18,12 +18,13 @@ ; 92% = DONE -; * customizable keys +; * implement circle-routine! +; 1% * customizable keys ; * internal levels ; * check levels/gametype ; * enough hiscore saves! ; * complete readme -; 2% * misc (pollish, bugs, &&&) +; 1% * misc (pollish, bugs, &&&) ; * LINK ; 2% * fix deaths linkplay and transmit game/level data ; 2% * make linkplay available for all gametypes (not just deathmatch) @@ -131,11 +132,11 @@ start: nop jp Start .dw 1 - .dw WormMsg + .dw WormTxt .dw WormIcon -WormMsg: - .db "WORMY by SHIAR -- alpha 92%",0 +WormTxt: + .db "WORMY by SHIAR -- alpha 92.5%",0 WormIcon: .db 9,2 .db %10010110,%01101111 @@ -398,12 +399,7 @@ NegativeSineWave: ;---------- menu ------------- ;----------------------------- - ld a,1 - ld (curlevel),a - -;--- draw menu --- - -DisplayMenu: +DisplayMenu: ;---draw menu--- cal _clrWindow ld de,$FC42 ;(10,2) ld hl,wtPicture @@ -417,42 +413,39 @@ disptitleloop: ex de,hl dec a jr nz,disptitleloop + ld hl,txtMenu - ld de,$0D5A + ld ix,posMenu + ld b,5 +dispmenuloop: + ld d,(ix) + inc ix + ld e,(ix) + inc ix ld (_penCol),de - cal _vputs ;by Shiar + cal _vputs ;by Shiar \ Mode \ Level \ Limit \ Worms + dnz dispmenuloop - ld de,$0207 - ld (_curRow),de - cal _puts ;Level <00> - dec e ;$0206 - ld (_curRow),de - cal _puts ;Limit <00> - dec e ;$0205 - ld (_curRow),de - cal _puts ;Worms <2> - dec e ;$0204 - ld (_curRow),de - ld hl,(CURtxtGame) - cal _puts ;Singleplayer - - xor a - cal menudraw - jr howmanyworms + ld b,0 ;b=menu# + jr setgame ;> dispmenusets > mainMenu ;--- menu loop --- mainMenu: + cal menupos cal menucall jr nz,notselect select: ;2nd/enter ld a,b - dec a ;2nd item + dec a ;2nd item? jp z,changeworms jp LetsGetThisPartyOn ;1/3/4 notselect cp K_EXIT jp z,ExitNoStats + psh af + cal menupos + pop af cp K_LEFT jr z,selleft cp K_RIGHT @@ -463,141 +456,168 @@ selright: or a jr z,changegame dec a - jr z,changenrworms + jr z,changelevel dec a - jp z,changelives + jr z,changelives +; dec a +; jr z,changenrworms -changelevel: - ld hl,Gametype - ld d,0 - ld e,(hl) - ld hl,nrlevels - add hl,de - ld d,(hl) ;max level for sel.game -curlevel =$+1 - ld a,1 +changenrworms: + ld a,(Gametype) + cp 2 + jr c,mainMenu ;type 0/1 + ld hl,nrworms + ld a,(hl) inc a - cp d - jr c,changedlevel - ld a,d -changedlevel: - ld (curlevel),a -_dispcurlevel: - ld hl,$0807 - ld (_curRow),hl - cal showA - jp displives ;mainMenu + cp 5 + jr nc,mainMenu ;may not be >4 +changednrworms: + ld (hl),a + jr dispmenusets ;mainMenu + selleft: ld a,b + or a + jr z,bchangegame dec a - jr z,bchangenrworms - dec a - jp z,bchangelives + jr z,bchangelevel dec a - jr nz,mainMenu + jr z,bchangelives +; dec a +; jr z,bchangenrworms -bchangelevel: - ld a,(curlevel) - dec a - jr nz,changedlevel +bchangenrworms: + ld hl,nrworms + ld a,(hl) + dec a ;0-3 + jr nz,changednrworms ;save >0 _mainMenu: jr mainMenu changegame: - ld a,1 - ld (curlevel),a ld a,0 Gametype =$-1 - ld hl,txtGame2 -NEXTtxtGame =$-2 inc a +changedgame: and 7 ;mod 8 - jr nz,okilydokily - ld hl,txtGame -okilydokily: ld (Gametype),a - ld de,$0204 - ld (_curRow),de - ld (CURtxtGame),hl - cal _puts - ld (NEXTtxtGame),hl -howmanyworms: - ld hl,nrworms +setgame: + ld a,1 + ld (curlevel),a ;reset level# + ld hl,nrworms ;reset #worms ld a,(Gametype) cp 2 ld (hl),1 - jr c,dispnrworms + jr c,dispmenusets ;<2=singleplayer inc (hl) ;2 - jr dispnrworms ;mainMenu - -changenrworms: + jr dispmenusets ;mainMenu +bchangegame: ld a,(Gametype) - cp 2 ;&& - jr c,_mainMenu ;type 0/1 - - ld hl,nrworms - ld a,(hl) - inc a - cp 5 - jr nc,dispcurlevel -changednrworms: - ld (hl),a -dispnrworms: - ld a,(hl) ;hl=nrworms - ld hl,$0805 - ld (_curRow),hl - add a,'0' - cal _putc -dispcurlevel: - ld a,(curlevel) - jr _dispcurlevel ;mainMenu - -bchangenrworms: - ld hl,nrworms - ld a,(hl) - dec a ;1-3 - jr nz,changednrworms - jr dispcurlevel - + dec a + jr changedgame changelives: cal changelivesInit inc a cp 100 - jr nc,displives + jr nc,mainMenu changedlives: ld (hl),a -displives: - cal loadgamecar - ld hl,$0806 - ld (_curRow),hl - cal showA ;liveslimit - sub '0' ;original A - ld l,a - ld a,c - and _datascore - ld a,' ' - jr z,limitok - ld a,'0' -limitok: - cal _putc ;x10 - jp mainMenu + jr dispmenusets ;mainMenu bchangelives: cal changelivesInit dec a - jr z,displives + jr z,_mainMenu jr changedlives - changelivesInit: - cal loadgamecar ;c=(gameCar) + cal loadgamecar ;c=(gameCar) ;a=(hl)=(Gametype+1)=(wormbeglives) ld a,(Gametype) ;&&& cp 3 ld a,(hl) - ret nc ;change lives - pop hl ;restore stack - jr displives + ret nc ;change lives + pop hl ;restore stack + jr _mainMenu ;singleplayer (no limit) + +changelevel: + ld hl,Gametype + ld d,0 + ld e,(hl) + ld hl,nrlevels + add hl,de + ld d,(hl) ;max level for sel.game +curlevel =$+1 + ld a,1 + cp d + jr z,_mainMenu + inc a +changedlevel: + ld (curlevel),a + jr dispmenusets ;mainMenu +bchangelevel: + ld a,(curlevel) + dec a + jr nz,changedlevel +__mainMenu: + jr _mainMenu + +;---display current settings--- + +dispmenusets: + ld hl,$FD95 + ld de,5 + ld a,23 +clroldsettings: + ld c,11 +clroldsetsloop: + ld (hl),d ;=0 + inc hl + dec c + jr nz,clroldsetsloop + add hl,de + dec a + jr nz,clroldsettings + + ld de,$182E + 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 + + ld hl,$1E2E ;level + ld (_penCol),hl + ld a,(curlevel) + cal cshowA + + ld hl,$2A2E ;worms + ld (_penCol),hl + ld a,(nrworms) + add a,'0' + cal _vputmap + + cal loadgamecar + ld hl,$242E + ld (_penCol),hl + cal cshowA ;liveslimit + sub '0' ;original A + ld l,a + ld a,c + and _datascore + ld a,' ' + jr z,limitok + ld a,'0' +limitok: + cal _vputmap ;x10 + jr __mainMenu ;--- handle menukeys --- @@ -608,7 +628,7 @@ menuwaitkey: cal GET_KEY or a jr z,menuwaitkey - pop bc ;pop a as b + pop bc ;GET_KEY destr. b cp K_UP cal z,menuup cp K_DOWN @@ -617,32 +637,42 @@ menuwaitkey: ret z cp K_SECOND ret ;z=select -menupos: + +menupos: ;highlight #b + ld c,b ;psh b ld a,b - add a,4 - ld h,0 + add a,3 + add a,a + add a,a + sub b + add a,a + add a,a + add a,a ;*24 + ld h,$FC/4 ld l,a - ld (_curRow),hl - ret -menuclr: - cal menupos - ld a,' ' - jp _putc + add hl,hl + add hl,hl ;$FD20+item*96 + ld b,16*7 +menuinvloop: + ld a,(hl) + cpl + ld (hl),a + inc hl + dnz menuinvloop + ld b,c ;pop b + ret ;a=-1 menudown: - cal menuclr + cal menupos inc b jr menuupdown menuup: - cal menuclr + cal menupos 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 + jr menupos ;--- change name --- ; of worm#(nrworms) @@ -2254,16 +2284,7 @@ showleft: ld (_penCol),a ld a,0 Left =$-1 - ld l,a - ld h,0 - cal _divHLby10 - psh af - ld a,l - add a,'0' - cal __vputmap - pop af - add a,'0' - cal __vputmap + cal cshowA ld hl,txtLeft __vputs: @@ -2288,6 +2309,18 @@ showA: add a,'0' jp _putc +cshowA: + ld l,a + ld h,0 + cal _divHLby10 + psh af + ld a,l + add a,'0' + cal __vputmap + pop af + add a,'0' + jp __vputmap + showHL: cal _D_HL_DECI jp _puts @@ -2899,10 +2932,10 @@ recvfinish: ;----------------------------- LevelDef: - .db 5,4,15,15,0,0 ;peas,speed,growth,begin_size,sprite,balls - .db 0,2,63 ;start d, y, x - .db 128,57 ;field width (128-255), height (57-255) - .db 0 ;no additional lines, boxes + .db 5,4,15,15,0,0 ;peas,speed,growth,begin_size,sprite,balls + .db 0,2,63 ;start d, y, x + .db 128,57 ;field width (128-255), height (57-255) + .db 0 ;no additional lines, boxes .db 255 ret @@ -2949,18 +2982,28 @@ wtPicture: .db %00001111,%10000011,%11100000,%00011111,%00000011,%00000001,%10000000,%00011000 txtMenu: .db "by Shiar",0 - .db "Level 00",0 ;4th menu item - .db "Limit 00 ",0 ;3rd - .db "Worms 0",0 ;2nd -txtGame: .db "Singleplayer",0 ;0 (1st) -txtGame2: .db "Peaworm ",0 ;1 (next 1st) - .db "Tron ",0 ;2 - .db "Deathmatch",0 ;3 - .db "Foodmatch ",0 ;4 - .db "LinkMatch",0 ;5 - .db "Race ",0 ;6 - .db "CTF ",0 ;7 + .db "Mode",0 + .db "Level",0 ;4th menu item + .db "Limit",0 ;3rd + .db "Worms",0 ;2nd +posMenu: .dw $0D5A,$1418,$131E,$1524,$0F2A +txtGame: .db "Singleplayer",0 ;0 (1st) +txtGame1: .db "Peaworm",0 ;1 (next 1st) +txtGame2: .db "Tron",0 ;2 +txtGame3: .db "Deathmatch",0 ;3 +txtGame4: .db "Foodmatch",0 ;4 +txtGame5: .db "LinkMatch",0 ;5 +txtGame6: .db "Race",0 ;6 +txtGame7: .db "CTF",0 ;7 ; .db "Domination",0 ;8 +posGame: .db 0,txtGame1-txtGame + .db txtGame2-txtGame + .db txtGame3-txtGame + .db txtGame4-txtGame + .db txtGame5-txtGame + .db txtGame6-txtGame + .db txtGame7-txtGame + txtLevsel: .db $CF," Select levels: ",5,0 txtName: .db "Enter name player ",0 txtWaiting: .db "Waiting...",0 @@ -3099,4 +3142,4 @@ templevels: .end -.end +.end \ No newline at end of file