git.shiar.nl
/
wormy.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
worm 0.91.0516: send game data over link (wip)
[wormy.git]
/
worm.z80
diff --git
a/worm.z80
b/worm.z80
index a5cdab9cc89d01c070bcff60253b5b13f104794e..030690327b65b68a5ff414f3233ad6c333732ff9 100644
(file)
--- a/
worm.z80
+++ b/
worm.z80
@@
-78,6
+78,7
@@
_PTEMP_END = $D29A ;end of VAT
_load_ram_ahl = $462F ;ahl->page+hl
_writeb_inc_ahl = $5567 ;ld (ahl),c
_jforce = $409C ;TI-OS stack restored
_load_ram_ahl = $462F ;ahl->page+hl
_writeb_inc_ahl = $5567 ;ld (ahl),c
_jforce = $409C ;TI-OS stack restored
+_EXLP = $4493 ;swap (hl),(de) b times
;-----------------------------
;------- data storage -------
;-----------------------------
;------- data storage -------
@@
-780,12
+781,43
@@
host:
jp nz,linkiniterror
cal send
jp nz,linkiniterror
cal send
- jr multiplayer
+; cal sendname
+; cal receivename
+
+ ld a,$18
+ jr nc,multiplayer
linkiniterror:
pop hl
jp DisplayMenu
linkiniterror:
pop hl
jp DisplayMenu
+sendname:
+ ld hl,worm1+name
+ ld b,maxnamelength
+sendnameloop:
+ ld a,(hl)
+ inc hl
+ psh bc
+ psh hl
+ cal send
+ pop hl
+ pop bc
+ dnz sendnameloop
+ ret
+receivename:
+ ld hl,worm2+name
+ ld b,maxnamelength
+recvnameloop:
+ psh bc
+ psh hl
+ cal receive
+ pop hl
+ pop bc
+ ld (hl),a
+ inc hl
+ dnz recvnameloop
+ ret
+
client:
ld hl,txtReceive
cal _puts
client:
ld hl,txtReceive
cal _puts
@@
-794,9
+826,12
@@
client:
cp WormVersion
jp nz,linkiniterror
cp WormVersion
jp nz,linkiniterror
- ld hl,SwapPos
- ld (hl),$f6
+; cal receivename
+; cal sendname
+
+ ld a,$f6
multiplayer:
multiplayer:
+ ld (SwapPos),a
ld a,2
ld (nrworms),a
ld a,2
ld (nrworms),a
@@
-806,29
+841,25
@@
multiplayer:
GameOver:
cal _clrLCD
GameOver:
cal _clrLCD
- ld hl,0
- ld (worm1+died),hl
-;+died=0 \ +score1=0
- ld (worm2+died),hl
- ld (worm3+died),hl
- ld (worm4+died),hl
- inc h
- ld (worm1+score+1),hl
-;+score2=0 \ +delay=1
- ld (worm2+score+1),hl
- ld (worm3+score+1),hl
- ld (worm4+score+1),hl
ld hl,worm1set
ld hl,worm1set
- ld de,worm1
+head
+ ld de,worm1
ld a,4 ;4x (all worms)
createwormsloop:
ld a,4 ;4x (all worms)
createwormsloop:
- ld bc,19
- ldir ;copy 19 bytes
ex de,hl
ex de,hl
- ld bc,
hea
d
+ ld bc,
die
d
add hl,bc
add hl,bc
- ex de,hl ;de=wormX+head
- dec a ;loop
+ ld (hl),0 ;died=0
+ inc hl
+ ld (hl),0 ;score=0
+ inc hl
+ ld (hl),0 ;score+1=0
+ inc hl
+ ld (hl),2 ;delay=2
+ inc hl
+ ex de,hl ;de=wormX+head
+ ld bc,19
+ ldir ;copy 19 bytes
+ dec a ;loop
jr nz,createwormsloop
ld a,(Gametype)
jr nz,createwormsloop
ld a,(Gametype)
@@
-845,10
+876,7
@@
StartLevel:
jp nz,nextlevel
psh hl
jp nz,nextlevel
psh hl
- ld b,150
-waitsomemore:
- halt
- dnz waitsomemore
+ cal releasekeys
cal _clrWindow
pop hl
;show end msg or smtn
cal _clrWindow
pop hl
;show end msg or smtn
@@
-1112,26
+1140,26
@@
maskline:
ld a,0
gameCar =$-1
and _datalink
ld a,0
gameCar =$-1
and _datalink
- jr z,SwapPos ;no link
+ jr z,initfinished ;no link
+
xor a
xor a
- ld (worm2+input),a
+ ld (worm2+input),a
;worm 2 via link
ld (worm2+left),a
ld (worm2+left),a
- ld (Speed),a
-
+ ld (Speed),a ;max.speed
SwapPos: ;$18 xx -> $F6 xx
SwapPos: ;$18 xx -> $F6 xx
+ ; jr xx -> or xx
jr initfinished
inc a
jr initfinished
inc a
- ld (worm2+left),a
- ld hl,(worm1+pos)
- ld de,(worm2+pos)
- ld (worm2+pos),hl
- ld (worm1+pos),de
- ld a,(worm1+heading)
- ld b,a
- ld a,(worm2+heading)
- ld (worm1+heading),a
- ld a,b
- ld (worm2+heading),a
+ ld (worm2+left),a ;1
+ ld hl,worm1
+ ld de,worm2
+ ld b,4 ;+heading +pos
+ cal _EXLP ;swap positions
+;&&& over link
+ ld hl,worm1+name
+ ld de,worm2+name
+ ld b,maxnamelength
+ cal _EXLP ;swap positions
initfinished:
ld b,startdelay
initfinished:
ld b,startdelay
@@
-1278,11
+1306,11
@@
displayWormStats:
xor a
cp (hl) ;input=0 = link
jr nz,NoLinkIndic
xor a
cp (hl) ;input=0 = link
jr nz,NoLinkIndic
- ld b,7
+ ld b,7
;{DOWN}
inc hl ;+left
cp (hl)
jr z,hostLinkIndic
inc hl ;+left
cp (hl)
jr z,hostLinkIndic
- dec b
+ dec b
;{UP}
hostLinkIndic:
ld a,8
ld (_curCol),a
hostLinkIndic:
ld a,8
ld (_curCol),a
@@
-1469,7
+1497,6
@@
safewormsizedone:
;de=ix+head
ld (ix+tail+1),d
ld (ix+tail),e ;head=tail/size=0
;de=ix+head
ld (ix+tail+1),d
ld (ix+tail),e ;head=tail/size=0
- jr norespawn
ret
unnamedlabel:
ret
unnamedlabel:
@@
-1479,16
+1506,19
@@
unnamedlabel:
respawndue:
ld l,a
cal inputcall
respawndue:
ld l,a
cal inputcall
+ ld (sendbyte),a
ld a,h ;previous
cp l ;changed?
ret z
ld a,h ;previous
cp l ;changed?
ret z
+ ld (ix+delay),a ;=0
+ ret
saverespawncounter:
ld (ix+delay),a
saverespawncounter:
ld (ix+delay),a
-norespawn:
-
ld a,(gameCar
)
- and _datalink
-
jr n
z,inlink
- ret
+ jr inputcall
+
; ld a,(ix+input
)
+; or a
+
; jr
z,inlink
+
;
ret
inkeys: ;use jp not call!
out (1),a ;nop\nop
inkeys: ;use jp not call!
out (1),a ;nop\nop
@@
-1519,13
+1549,17
@@
sendbyte =$-1
ld b,(ix+left)
dec b
jr z,receivefirst
ld b,(ix+left)
dec b
jr z,receivefirst
+ psh hl
cal send
cal receive
cal send
cal receive
+ pop hl
ld l,a
ret
receivefirst:
psh af
ld l,a
ret
receivefirst:
psh af
+ psh hl
cal receive
cal receive
+ pop hl
ld l,a
pop af
psh hl
ld l,a
pop af
psh hl
@@
-1671,6
+1705,7
@@
peagrowth =$-1
pop hl ; << call
pop hl ; << call
pop hl ; << levelp new
pop hl ; << call
pop hl ; << call
pop hl ; << levelp new
+ ld (ix+delay),2
jp StartLevel
chkpeahit: ;hl=peapos
jp StartLevel
chkpeahit: ;hl=peapos
@@
-2662,23
+2697,13
@@
boxloop:
TIMEOUT = $1000
TIMEOUT = $1000
-LinkBreak:
- pop hl
- ld a,D0HD1H
- out (7),a
- jp Exit
-
-
receive:
cal GET_KEY
cp K_EXIT
jp z,LinkBreak
in a,(7)
and %11
receive:
cal GET_KEY
cp K_EXIT
jp z,LinkBreak
in a,(7)
and %11
- cp %11
- jr z,receive
- in a,(7)
- and %11
+; jr z,LinkBreak
cp %11
jr z,receive
ld b,8
cp %11
jr z,receive
ld b,8
@@
-2698,10
+2723,10
@@
WaitRecBit:
ReceiveCont:
sub %10
ld a,%10
ReceiveCont:
sub %10
ld a,%10
- ld d,D0LD1H
+ ld d,D0LD1H
;01
jr c,ReceiveLow
jr c,ReceiveLow
- rra
- ld d,D0HD1L
+ rra
;ld a,%01
+ ld d,D0HD1L
;10
ReceiveLow:
rr c
ld (AckBit),a
ReceiveLow:
rr c
ld (AckBit),a
@@
-2713,7
+2738,7
@@
WaitAckRec:
cp 0
AckBit =$-1
jr nz,WaitAckRec
cp 0
AckBit =$-1
jr nz,WaitAckRec
- ld a,D0HD1H
+ ld a,D0HD1H
;11
out (7),a
ld d,4
WaitReadyRec:
out (7),a
ld d,4
WaitReadyRec:
@@
-2727,16
+2752,20
@@
ReadyRec:
ld a,c
ret
ld a,c
ret
+LinkBreak:
+ ld a,D0HD1L
+ out (7),a
+ jp Exit
+
send:
ld c,a
ld b,8+1
jr SendAcked
send:
ld c,a
ld b,8+1
jr SendAcked
-
sendloop:
rr c
sendloop:
rr c
- ld a,D0LD1H
+ ld a,D0LD1H
;%01
jr nc,SendLow
jr nc,SendLow
- ld a,D0HD1L
+ ld a,D0HD1L
;%10
SendLow:
out (7),a
ld de,TIMEOUT
SendLow:
out (7),a
ld de,TIMEOUT
@@
-2744,7
+2773,7
@@
WaitAckSend:
cal CheckLink
jr nz,WaitAckSend
SendAcked:
cal CheckLink
jr nz,WaitAckSend
SendAcked:
- ld a,D0HD1H
+ ld a,D0HD1H
;%11
out (7),a
ld de,TIMEOUT
WaitReadySend:
out (7),a
ld de,TIMEOUT
WaitReadySend:
@@
-2752,6
+2781,9
@@
WaitReadySend:
cp %11
jr nz,WaitReadySend
dnz sendloop
cp %11
jr nz,WaitReadySend
dnz sendloop
+ ld a,c
+ ret
+
LinkSuccess:
.db $F6 ;or NN (skip scf)
LinkFailed:
LinkSuccess:
.db $F6 ;or NN (skip scf)
LinkFailed:
@@
-2762,9
+2794,9
@@
LinkFailed:
CheckLink:
pop hl
dec de
CheckLink:
pop hl
dec de
- ld a,d
- or e
- jr z,LinkFailed
+ ld
a,d
+ or
e
+ jr
z,LinkFailed
ld a,$BF
out (1),a
ld a,$BF
out (1),a
@@
-2775,7
+2807,7
@@
CheckLink:
out (1),a
pop af
bit 6,a
out (1),a
pop af
bit 6,a
- jr z,Link
Failed
+ jr z,Link
Break
in a,(7)
and %11
in a,(7)
and %11