git.shiar.nl
/
wormy.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
fb53f98
)
worm 0.84pre.0325: common includes, code cleanup
author
Mischa Poslawsky
<wormy@shiar.org>
Sat, 25 Mar 2000 10:58:14 +0000
(11:58 +0100)
committer
Mischa Poslawsky
<wormy@shiar.org>
Sun, 22 Feb 2009 15:13:37 +0000
(16:13 +0100)
worm.z80
patch
|
blob
|
history
diff --git
a/worm.z80
b/worm.z80
index d8f61e0b88a5b453177a0cf28cd44eca856a9483..45088ab988fd76eb7c3f7056afcbcc6fff1e8e8a 100644
(file)
--- a/
worm.z80
+++ b/
worm.z80
@@
-31,7
+31,22
@@
;1) Working on a new pickup-system allowing more than one "food" and different pickup-handling
;1) Working on a new pickup-system allowing more than one "food" and different pickup-handling
-#include "TI86.inc"
+#include "asm86.h"
+#include "ti86asm.inc"
+#include "ti86abs.inc"
+
+_SHRACC = $4383
+_SHLACC = $438B
+_divHLby10 = $4044
+_divAby10 = $4DAF
+_cphlde = $403C
+_clrWindow = $4A86
+_asapvar = $D6FC
+_MOV4B = $429B ;4x ld (de),(hl)
+_MOV5B = $4297 ;5x ld (de),(hl)
+_mov9b = $4283 ;9x ld (de),(hl)
+_ldHLind = $4010 ;ld hl,(hl)
+_swapt_ = $45F3 ;ex_ahl_bde
;-----------------------------
;------- program start -------
;-----------------------------
;------- program start -------
@@
-59,8
+74,8
@@
WormIcon:
Start:
ld (SpSave),sp
Start:
ld (SpSave),sp
- call _run
IndicO
ff
- call _flush
AllM
enus
+ call _run
indico
ff
+ call _flush
allm
enus
call _clrLCD
res 2,(iy+13) ;appAutoScroll
call _clrLCD
res 2,(iy+13) ;appAutoScroll
@@
-210,7
+225,7
@@
menucall:
ld b,a
menukeys:
halt \ halt
ld b,a
menukeys:
halt \ halt
- call
_getcsc
+ call
GET_KEY
or a
jr z,menukeys
cp K_UP
or a
jr z,menukeys
cp K_UP
@@
-244,13
+259,18
@@
LetsGetThisPartyOn:
add hl,de
ld a,(hl)
add hl,de
ld a,(hl)
- push af
+
ld d,a ;
push af
and _datasingl
jr z,notsingle
ld a,1
ld (nrworms),a
and _datasingl
jr z,notsingle
ld a,1
ld (nrworms),a
+ ld a,d
+ and _datafoodl
+ jr nz,notsingle
+ ld a,1
+ ld (worm1+lives),a
notsingle:
notsingle:
- pop af
+ ld a,d
ld (gameCar),a
push af
ld (gameCar),a
push af
@@
-270,33
+290,28
@@
setscorelimit:
linkmatch:
call _clrWindow
linkmatch:
call _clrWindow
-
-
-; in a,(7)
-; and %11
-; cp %11
ld a,WormVersion
ld a,WormVersion
-; jr nz,host
call send
call send
- jr c,host
-
-client:
- ld hl,txtReceive
- call _puts
- call receive
- cp WormVersion
- ret nz
- jr multiplayer
+ jr c,client ;2nd
host:
ld hl,txtWaiting
call _puts
call receive
cp WormVersion
host:
ld hl,txtWaiting
call _puts
call receive
cp WormVersion
- ret nz
+ jp nz,LinkBreak
call send
call send
+
ld hl,SwapPos
ld (hl),$f6
ld hl,SwapPos
ld (hl),$f6
+ jr multiplayer
+
+client:
+ ld hl,txtReceive
+ call _puts
+ call receive
+ cp WormVersion
+ jp nz,LinkBreak
multiplayer:
ld a,2
multiplayer:
ld a,2
@@
-399,22
+414,14
@@
nohunter:
ld b,4
worminit:
push bc ; >> 1
ld b,4
worminit:
push bc ; >> 1
- ld a,(de)
- ld (hl),a ;d
- inc de
- inc hl
+ ex de,hl
+ ldi ;d
ld a,SinCosTable/256
ld a,SinCosTable/256
- ld (hl),a
- inc hl
-
- ld a,(de)
- ld (hl),a ;y
- inc de
- inc hl
- ld a,(de)
- ld (hl),a ;x
+ ld (de),a
inc de
inc de
- inc hl
+ ldi ;y
+ ldi ;x
+ ex de,hl
xor a
ld (hl),a ;y2
xor a
ld (hl),a ;y2
@@
-805,26
+812,28
@@
checkhiscore:
ld de,(worm1+score)
HiScore =$+1
ld hl,0
ld de,(worm1+score)
HiScore =$+1
ld hl,0
- ld a,e
- cp l
- jr c,NotNewHigh
ld a,d
cp h
jr c,NotNewHigh
ld a,d
cp h
jr c,NotNewHigh
+ ld a,e
+ cp l
+ jr c,NotNewHigh
ld (HiScore),de
ex de,hl ;disp.new hiscore
NotNewHigh:
ld (HiScore),de
ex de,hl ;disp.new hiscore
NotNewHigh:
- ex de,hl
+ ex de,hl ;push
+ ld hl,$0807
+ ld (_curRow),hl
ld hl,txthiscore
call _puts
ld hl,txthiscore
call _puts
- ex de,hl
+ ex de,hl
;pop
call showHL
hiscorecheckdone:
waitkey:
halt
halt
call showHL
hiscorecheckdone:
waitkey:
halt
halt
- call
_getcsc
+ call
GET_KEY
cp K_ENTER
jp z,DisplayMenu
; cp K_EXIT
cp K_ENTER
jp z,DisplayMenu
; cp K_EXIT
@@
-855,7
+864,7
@@
ExitNoStats:
call _SET_ABS_SRC_ADDR
ld hl,end-start
call _SET_MM_NUM_BYTES
call _SET_ABS_SRC_ADDR
ld hl,end-start
call _SET_MM_NUM_BYTES
- call _
MM_LDIR
+ call _
mm_ldir
; xor a
; ld (_asapvar+1),a
; xor a
; ld (_asapvar+1),a
@@
-1298,21
+1307,20
@@
CheckPixel: ;at bc in d
dec d
ret
dec d
ret
-;CLEM's FIND_PIXEL (131
cycles; 28
bytes)
-; (b,c) to hl:a; destroyes: -)
+;CLEM's FIND_PIXEL (131
+? cycles; 28+4
bytes)
+;
(b,c) to hl:a; destroyes: -)
FindPixel:
FindPixel:
- ld h,ScrBuffer/$800
- ld a,c
- add a,a
- add a,a
- ld l,a ;hl=4*y + offset/8
- ld a,b
+ ld h,0
+ ld l,c ;hl=y
+ add hl,hl
+ add hl,hl
+ ld a,b ;a=x
rra
add hl,hl
rra
add hl,hl
rra
add hl,hl
rra
add hl,hl
- add hl,hl ;hl=32*y
+ offset
+ add hl,hl ;hl=32*y
rra ;a=x/8
or l
ld l,a
rra ;a=x/8
or l
ld l,a
@@
-1326,6
+1334,11
@@
FindPixel:
xor a
FP_Bit =$+1
set 0,a
xor a
FP_Bit =$+1
set 0,a
+
+ push de
+ ld de,ScrBuffer
+ add hl,de
+ pop de
ret
;----------- score -----------
ret
;----------- score -----------
@@
-1850,235
+1863,120
@@
boxloopx:
;-----------------------------
;----------- link ------------
;-----------------------------
;-----------------------------
;----------- link ------------
;-----------------------------
-#ifdef 0
-TIMEOUT = $1200
-send:
- push af ;ld b,a
- call _getcsc
- cp K_EXIT
- jp z,Exit
- pop af ;ld a,b
- call SendByte
-; jr c,send
- ret
-
-linkfail:
- jp Exit
-
-LinkPrep:
- ex (sp),hl
- push bc
- push de
- set 2,(iy+$12) ;cursorblink
- ld b,8
- jp (hl)
+TIMEOUT = $1000
receive:
receive:
- call checklink
- jr z,linkfail
+ call GET_KEY
+ cp K_EXIT
+ jp z,LinkBreak
+ in a,(7)
+ and %11
cp %11
jr z,receive
cp %11
jr z,receive
-ReceiveByteCont:
- call LinkPrep
+ call Qreceive
+ jr c,receive
+ ret
+
+Qreceive:
+ ld b,8
jr ReceiveCont
jr ReceiveCont
-ReceiveByte:
- call LinkPrep
-ReceiveBits:
- ld de,TIMEOUT
+receiveloop:
+ ld de,TIMEOUT
WaitRecBit:
WaitRecBit:
- call
checkl
ink
+ call
CheckL
ink
jr z,LinkFailed
cp %11
jr z,WaitRecBit
ReceiveCont:
jr z,LinkFailed
cp %11
jr z,WaitRecBit
ReceiveCont:
- sub %10
- ld a,%10
- ld d,D0lD1h
- jr c,ReceiveLow
- rra
- ld d,D0hD1l
+ sub 2
+ ld a,2
+ ld d,D0LD1H
+
jr c,ReceiveLow
+
rra
+ ld d,D0HD1L
ReceiveLow:
ReceiveLow:
-
rr
c
-
ld
(AckBit),a
-
ld
a,d
- out (7),a
-
ld
de,TIMEOUT
+
rr
c
+
ld
(AckBit),a
+
ld
a,d
+
out (7),a
+
ld
de,TIMEOUT
WaitAckRec:
WaitAckRec:
-
call checkl
ink
- cp 0
+
call CheckL
ink
+
cp 0
AckBit =$-1
AckBit =$-1
- jr nz,WaitAckRec
- ld a,D0hD1h
- out (7),a
- ld d,4
+
jr nz,WaitAckRec
+ ld a,D0HD1H
+
out (7),a
+
ld d,4
WaitReadyRec:
WaitReadyRec:
- dec d
- jr z,ReadyRec
- in a,(7)
- cp %11
- jr nz,WaitReadyRec
+
dec d
+
jr z,ReadyRec
+
in a,(7)
+
cp %11
+
jr nz,WaitReadyRec
ReadyRec:
ReadyRec:
- djnz ReceiveBits
- jr LinkSuccess
+ djnz receiveloop
+
jr LinkSuccess
-
SendByte
:
- call LinkPrep
+
send
:
+ ld b,9
ld c,a
ld c,a
- inc b
jr SendAcked
SendBits:
rr c
jr SendAcked
SendBits:
rr c
-
-sendbit:
- ld a,D0lD1h
- jr nc,sendselected
- ld a,D0hD1l
-sendselected:
+ ld a,D0LD1H
+ jr nc,SendLow
+ ld a,D0HD1L
+SendLow:
out (7),a
out (7),a
-
ld
de,TIMEOUT
-
waitacknowledge
:
- call
checkl
ink
- jr nz,
waitacknowledge
+
ld
de,TIMEOUT
+
WaitAckSend
:
+ call
CheckL
ink
+ jr nz,
WaitAckSend
SendAcked:
SendAcked:
- ld a,D0
hD1h
+ ld a,D0
HD1H
out (7),a
out (7),a
-
ld
de,TIMEOUT
-
waitsendready
:
- call
checkl
ink
+
ld
de,TIMEOUT
+
WaitReadySend
:
+ call
CheckL
ink
cp %11
cp %11
- jr nz,waitsendready
-
+ jr nz,WaitReadySend
djnz SendBits
djnz SendBits
-LinkSuccess: ;nc
- .db $f6 ;first byte of "or n"
-LinkFailed: ;c
- scf
- ld a,c
- res 2,(iy+$12) ;noblink
- pop de
- pop bc
- pop hl
+LinkSuccess:
+ ld a,c ;pop a
ret
ret
-linkerror:
+LinkFailed:
+ scf
+ ld a,c
+ ret
+LinkBreak:
+ ld a,D0HD1H
+ out (7),a
jp Exit
jp Exit
-checklink:
- pop hl
- dec de
- ld a,d
- or e
- jr z,LinkFailed
- ld a,$BF ;key
- call _readkeypad
- bit 6,a
- jr z,linkerror
-
- in a,(7)
- and %11
- jp (hl)
- ret
+CheckLink:
+ pop hl
+ dec de
+ ld a,d
+ or e
+ jr z,LinkFailed
-_readkeypad:
+ ld a,$BF
out (1),a
out (1),a
+ nop \ nop
in a,(1)
push af
ld a,%11111111
out (1),a
pop af
in a,(1)
push af
ld a,%11111111
out (1),a
pop af
- ret
-#endif
-
-send:
-SendByte:
- in a,(7)
- and %11
- jr z,nolink
- ld b,8
-sendloop:
- ld de,$8000
- rl c
- ld a,%11010100
- jr nc,sendbit
- ld a,%11101000
-sendbit:
- out (7),a
-sendwait1:
- call checklink
- in a,(7)
- and %11
- jr nz,sendwait1
- ld a,%11000000
- out (7),a
-sendwait2:
- call checklink
- in a,(7)
- and %11
- cp %11
- jr nz,sendwait2
- djnz sendloop
- xor a
- ret
-timeout:
- scf
- ret
-
+ bit 6,a
-receive:
- in a,(7)
- and %11
- jr z,nolink
- cp %11
- jr z,receive
- ld b,8
-receiveloop:
- ld de,$8000
-receivewait1:
- call checklink
- in a,(7)
- and %11
- cp %11
- jr z,receivewait1
- rra
- rl c
- rra
- ld a,%11010100
- jr nc,receivebit
- ld a,%11101000
-receivebit:
- out (7),a
-receivewait2:
- call checklink
in a,(7)
and %11
in a,(7)
and %11
- jr z,receivewait2
- ld a,%11000000
- out (7),a
- djnz receiveloop
- xor a
- ret
+ jp (hl)
-checklink:
- dec de
- ld a,d
- or e
- jr z,timeout
- ld a,$BF ;key
- call _readkeypad
- bit 6,a
- jr z,timeout
- ret
-_readkeypad:
- out (1),a
- in a,(1)
- push af
- ld a,%11111111
- out (1),a
- pop af
- ret
-nolink:
- jp Exit
;-----------------------------
;---------- levels -----------
;-----------------------------
;---------- levels -----------
@@
-2101,8
+1999,14
@@
LevelsDM2:
.db 4,19,16,34
.db 4,19,80,34
.db 4,19,16,34
.db 4,19,80,34
+LevelsL:
+ .db 8,0,15,0
+ .db $40,30,2,$C0,30,125, $00,2,64,$80,54,64
+ .db 228,157
+ .db 0,0
+
LevelsR:
LevelsR:
- .db 8,
5,24
,0
+ .db 8,
2,10
,0
.db $40,3,2,$40,6,2, $40,9,2,$40,12,2
.db 128,57
.db 0
.db $40,3,2,$40,6,2, $40,9,2,$40,12,2
.db 128,57
.db 0
@@
-2127,19
+2031,10
@@
NUM_LEVELS = 10
LevelsS:
LevelsS:
- .db 4,5,10,1 \ .dw $20F
- .db 0,2,63
- .db 128,57
- .db 2
- .db 28,14,100,41
- .db 28,41,100,14
- .db 0
-
.db 5,4,15,0 ;peas,speed,begin_size,balls
.db 5,4,15,0 ;peas,speed,begin_size,balls
- .db 0,2,63 ;d,y,x
- .db 128,57 ;field width, height
- .db 0 ;no additional lines
- .db 0 ;no boxes
+ .db 0,2,63 ;start d, y, x
+ .db 128,57 ;field width (128-255), height (57-255)
+ .db 0,0 ;no additional lines, boxes
.db 8,4,15,0
.db $40,14,2
.db 8,4,15,0
.db $40,14,2
@@
-2173,6
+2068,14
@@
LevelsS:
.db 18,45,110,45
.db 0
.db 18,45,110,45
.db 0
+ .db 4,3,10,1 \ .dw $20F
+ .db 0,2,63
+ .db 128,57
+ .db 2
+ .db 28,14,100,41
+ .db 28,41,100,14
+ .db 0
+
.db 7,3,15,0
.db 64,4,0
.db 128,86
.db 7,3,15,0
.db 64,4,0
.db 128,86
@@
-2185,8
+2088,8
@@
LevelsS:
.db 110,20,110,64
.db 0
.db 110,20,110,64
.db 0
- .db 9,
2
,15,0
- .db
4,10,$4
0
+ .db 9,
3
,15,0
+ .db
$40,4,1
0
.db 128,82
.db 3
.db 0,20,74,20
.db 128,82
.db 3
.db 0,20,74,20
@@
-2194,8
+2097,8
@@
LevelsS:
.db 0,60,74,60
.db 0
.db 0,60,74,60
.db 0
- .db 12,
2
,15,0
- .db
64
,4,0
+ .db 12,
3
,15,0
+ .db
$40
,4,0
.db 128,90
.db 6
.db 20,16,54,16
.db 128,90
.db 6
.db 20,16,54,16
@@
-2207,7
+2110,7
@@
LevelsS:
.db 0
.db 8,2,15,0
.db 0
.db 8,2,15,0
- .db
72,52,$c0
+ .db
$C0,72,48
.db 128,128
.db 13
.db 34,56,56,34
.db 128,128
.db 13
.db 34,56,56,34
@@
-2271,10
+2174,10
@@
txtGO: .db "----- GAME OVER -----",0
gamesdata:
_datalink = %00000001
gamesdata:
_datalink = %00000001
-_datasingl = %00001000 ;singleplayer=1
_datalivel = %00000010 ;ix+lives=0 limit
_datafoodl = %00000100 ;left=0 limit
_datanextl = %00001000 ;next level if left=0
_datalivel = %00000010 ;ix+lives=0 limit
_datafoodl = %00000100 ;left=0 limit
_datanextl = %00001000 ;next level if left=0
+_datasingl = %00001000 ;singleplayer=1
_datafood = %00010000 ;food present
_datahunt = %00100000
_datalaps = %01000000 ;give lap score
_datafood = %00010000 ;food present
_datahunt = %00100000
_datalaps = %01000000 ;give lap score
@@
-2289,7
+2192,7
@@
datadeathm: .db %00000010
datafoodm: .db %10010000
.dw LevelsDM
datalinkm: .db %00000011
datafoodm: .db %10010000
.dw LevelsDM
datalinkm: .db %00000011
- .dw Levels
DM
+ .dw Levels
L
datahuntin: .db %10100000
.dw LevelsH
datarace: .db %11000000
datahuntin: .db %10100000
.dw LevelsH
datarace: .db %11000000
@@
-2300,7
+2203,6
@@
datadomin: .db %00000000
.dw LevelsDM
.dw LevelsDM
-setdata = 18
resbit = 2 ;and%11111011
worm1set: .dw $B000,$B000 ;%10110000
.db 3,0,%01111110,%10,%100 ;< >
resbit = 2 ;and%11111011
worm1set: .dw $B000,$B000 ;%10110000
.db 3,0,%01111110,%10,%100 ;< >
@@
-2308,16
+2210,16
@@
worm1set: .dw $B000,$B000 ;%10110000
worm2set: .dw $B800,$B800 ;%10111000
.db 3,0,%00111111,%10000,%1000 ;f1 f2
.db "Worm #2",0
worm2set: .dw $B800,$B800 ;%10111000
.db 3,0,%00111111,%10000,%1000 ;f1 f2
.db "Worm #2",0
-worm3set: .dw $
E800,$E800 ;
%11101000 ;$D748+$1000+
+worm3set: .dw $
F000,$F000 ;$E800=
%11101000 ;$D748+$1000+
.db 3,0,%01011111,%10,%100 ;sto ,
.db "Worm #3",0
.db 3,0,%01011111,%10,%100 ;sto ,
.db "Worm #3",0
-worm4set: .dw $
F000,$F000 ;
%11110000
+worm4set: .dw $
A800,$A800 ;$F000=
%11110000
.db 3,0,%01111101,%10,%1 ;enter +
.db "Worm #4",0
worm1 = $B400
.db 3,0,%01111101,%10,%1 ;enter +
.db "Worm #4",0
worm1 = $B400
-worm2 = $B4
30
-worm3 = $B4
60
-worm4 = $B4
90
+worm2 = $B4
2A
+worm3 = $B4
54
+worm4 = $B4
7E ;-A8
end:
;set:
heading = 0 ;level*
end:
;set:
heading = 0 ;level*
@@
-2342,11
+2244,13
@@
name = 21 ;game
Level =$+1
DispBuffer =$+2 ;912 bytes
Level =$+1
DispBuffer =$+2 ;912 bytes
-ScrBuffer = $8
000 ;-$A1FF (32x256)
-SinCosTable = $
A200 ;-$A3
00 (4x64)
+ScrBuffer = $8
100 ;-$A2FF (32x256) mod$800=0
+SinCosTable = $
B500 ;size=$1
00 (4x64)
;-----------------------------
;----------- end -------------
;-----------------------------
;-----------------------------
;----------- end -------------
;-----------------------------
+ .end
+
.end
\ No newline at end of file
.end
\ No newline at end of file