From 9c15dcbc79a8671b0e7cae2db0761afba1ea9ce5 Mon Sep 17 00:00:00 2001 From: Mischa Poslawsky Date: Sun, 9 Sep 2001 12:25:14 +0200 Subject: [PATCH] wormy 0.95.1909 --- wormy.z80 | 174 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 103 insertions(+), 71 deletions(-) diff --git a/wormy.z80 b/wormy.z80 index e0bb2b2..34e5d0b 100644 --- a/wormy.z80 +++ b/wormy.z80 @@ -281,67 +281,109 @@ levelselectmenu: cal hr ld hl,$FC00+(56*16) cal hr - ld hl,$0C01 ;x=1 + ld hl,$0601 ;x=1 ld (_penCol),hl dispnextlevel: - ld de,3 - add ix,de - ld a,(ix) + ld a,(ix+3) + ld b,a inc a ;cp 255 jr z,__levselect - dec a displevel: - ld h,(ix+1) - ld l,(ix+2) ;ahl=(ix) - cal _load_ram_ahl ;hl=ahl - ld b,(hl) ;b=title size - cal _vputs ld hl,_penCol ld (hl),$01 ;x=1 inc hl ld a,(hl) add a,6 ld (hl),a ;y+6 - ld hl,availevels - inc (hl) cp 49 ;bottom of screen jr nc,_levselect + ld de,3 + add ix,de + ld hl,availevels + inc (hl) + ld a,b ;(ix+0) + ld h,(ix+1) + ld l,(ix+2) ;ahl=(ix) + cal _load_ram_ahl ;hl=ahl + cal _vputs jr dispnextlevel +readylevelfile: ;selected level at ahl +; ld hl,templevels-3 + ld a,b + add a,3 ;sellev+3 (#0==-3) + ld e,a + add a,a ;*2 + add a,e ;*3 + ld e,a + ld d,0 ;de=sellev*3 + add hl,de + ld a,(hl) ;ade=(hl) + inc hl + ld d,(hl) + inc hl + ld e,(hl) + ex de,hl ;ahl=ade +skiptitle: + ld d,a ;psh ahl + psh hl + cal _GETB_AHL ;ld a,(ahl) + pop hl + or a + ld a,d ;pop ahl + psh af + cal _INC_PTR_AHL ;ahl++ + pop af ;cp 0 + jr nz,skiptitle ;goto #0-terminator + ret + levup: cal menupos dec b ;up ld a,b cp -3 - jr nz,levselected + jr nz,levselect inc b ;undo - jr levselected + jr levselect levdown: cal menupos inc b ;down ld a,b cp -2 availevels =$-1 - jr nz,levselected + jr nz,levselect dec b ;back up -levselected: - jp menupos - +levselect: + cal menupos + ld hl,$3900 + ld (_penCol),hl + pop hl + psh hl + cal readylevelfile + cal _load_ram_ahl ;hl=ahl + ld de,$FFA0 ;desc.text + xor a +levdescclearloop: + ld (de),a ;empty + inc de + cp d ;de>$FFFF (offscreen) + jr nz,levdescclearloop + cal _vputs + jr levselectmenu+1 __levselect: ld ix,templevels-6 ;reset 2 1st page _levselect: ld b,-2 ;level selected - cal menupos - pop hl -levselect: + jr levselect +levselectmenu: psh hl psh bc cal ubergetkey pop bc ;GET_KEY destr. b cp K_UP - cal z,levup + jr z,levup dec a ;K_DOWN - cal z,levdown + jr z,levdown cp K_SECOND-1 jr z,loadlevel pop hl @@ -350,39 +392,14 @@ levselect: cp K_EXIT-1 jp z,ExitNoStats cp K_ENTER-1 - jr nz,levselect + jr nz,levselectmenu ; jr z,loadlevel loadlevel: -; ld hl,templevels-3 - ld a,b - add a,3 ;sellev+3 (#0==-3) - ld e,a - add a,a ;*2 - add a,e ;*3 - ld e,a - ld d,0 ;de=sellev*3 - add hl,de - ld a,(hl) ;ade=(hl) + cal readylevelfile or a ;levelfile on page 0 (=internal) jr z,levelloaded - - inc hl - ld d,(hl) - inc hl - ld e,(hl) - ex de,hl ;ahl=ade -skiptitle: - ld b,a ;psh ahl - psh hl - cal _GETB_AHL ;ld a,(ahl) - pop hl - or a - ld a,b ;pop ahl - psh af - cal _INC_PTR_AHL ;ahl++ - pop af ;cp 0 - jr nz,skiptitle ;goto #0-terminator + cal skiptitle ;skip description cal _Get_Word_ahl ld (leveldataSize),de @@ -1326,12 +1343,9 @@ client: cal _puts ld a,$E6 multiplayer: -; cal linkok -; ld a,D0LD1L -; out (7),a ld (SwapPos),a - ld a,2 - ld (nrworms),a +; ld a,2 +; ld (nrworms),a ;----------------------------- ;--------- game over --------- @@ -1577,13 +1591,6 @@ levelhasbeensetup: psh hl ; >> levelp new cal forceshowstats - ld a,(gameCar) - and _datafood - jr z,nofood - cal NewPea -nofood: - ld bc,(worm1+pos) - cal DisplayField #ifdef readymask ld hl,$FC70 @@ -1657,8 +1664,6 @@ recvstuff: dnz recvstuff ret sethost: - halt - dnz sethost ld (worm2+left),a ;worm 2+4.. ld (worm4+left),a ;..over link ld hl,worm1+name @@ -1668,6 +1673,14 @@ sethost: ld b,9 cal recvstuff initfinished: + ld a,(gameCar) + and _datafood + jr z,nofood + ld ix,worm1 + cal NewPea +nofood: + ld bc,(worm1+pos) + cal DisplayField ld b,startdelay ReadyDelay: @@ -2779,6 +2792,24 @@ tryDrawPea: ;hl=peapos;bc=dopea jr z,DrawPea ret +sendnewpeaoverlink: + ld a,(gameCar) + rra ;and _datalink + ret nc ;no link + ld a,(ix+left) + or a + jr z,receivenewpeaoverlink + ld c,l ;send pea's pos + cal Qsend + ld c,h + jp Qsend ;&&&possible jr +receivenewpeaoverlink: + cal Qrecv ;Crecv + ld l,c + cal Qrecv ;Crecv + ld h,c + ret + NewPea: ld a,(FieldWidth) add a,127-4 @@ -2788,9 +2819,10 @@ NewPea: add a,56-4 cal randompos ld l,a - ld (PeaY),hl cal CheckPea jr nz,NewPea + cal sendnewpeaoverlink + ld (PeaY),hl DrawPea: ;hl=(PeaY) ld b,h ld c,l @@ -3649,8 +3681,7 @@ sendbit: sendwaitack: cal checklink ;other calc must lower other wire jr nz,sendwaitack - ld a,D0HD1H ;raise one, ok to raise other - out (7),a + cal linkok ;raise one, ok to raise other (out (7),D0HD1H) sendfinish: cal checklink cp %11 ;both raised (by other calc) @@ -3689,8 +3720,7 @@ received: recvwaitack: cal checklink jr z,recvwaitack ;same wire will be raised again by other calc - ld a,D0HD1H - out (7),a ;raise both + cal linkok ;raise both recvfinish: dnz recvloop ;repeat for all bits xor a ;nc=no error @@ -3988,7 +4018,9 @@ defspriteimg: .db %01100000 .db %01100000 deflevels: - .db "Internal Levels" ;,0 + .db "Internal Levels",0 + .db "by SHIAR -- still t" + .db "o be added...." ;,0 .db 0,deflevels/256,deflevels&255 templevels: -- 2.30.0