X-Git-Url: http://git.shiar.nl/wormy.git/blobdiff_plain/460b8f4f4ead334c14068a3a917337576f00d8a8..6a7fc57780120026e51e07c7c3e63ff55fc6f244:/wormy.z80 diff --git a/wormy.z80 b/wormy.z80 index 45b6986..5bf22f7 100644 --- a/wormy.z80 +++ b/wormy.z80 @@ -96,6 +96,14 @@ ; X [36] LVL: end messages fixed in affected episodes ;100% = CURRENT ; * scorebar last digit (at 128-3) not displayed by _vputs :( +; * save last played level (in levelfile prolly) +; * automatically start players in multiplayer games after certain time +; * muliplayer bonuses/powerups (shrink, lives, stun, inverse, etc.) +; * levels with random pixels appearing during game +; * no borders (move players from one side to another) +; * hiding levels crashes?? (ishell 2.01 rom 1.6) +; * use selected player on main menu as first player in singleplayer games + ;--- future features ----------------------------------------------------------- @@ -229,15 +237,15 @@ pos2 = 4 ;level grow = 6 ;level died = 8 ;game: score = 9 -delay = 11 +wdelay = 11 lives = 12 head = 13 ; Ú15B (wormNset) tail = 15 ; |also@next level storepos = 17 ; | reserv = 18 ; |loop (race:lap|ctf:pea) -left = 19 ; | -right = 20 ; | +wleft = 19 ; | +wright = 20 ; | name = 21 ; |_ wormsize = 30 ;^mark^ @@ -252,7 +260,7 @@ wormsize = 30 ;^mark^ start: ;turn back NOW! nop ;and so it begins... - jp Start + jp codestart #ifndef id2 ld bc,$5242 rst 10h @@ -280,15 +288,15 @@ start: ;turn back NOW! dec l .db " v1.00.36",0 WormIcon: - .db 8,2 - .db %00000000,%00111100 - .db %00000000,%01010010 - .db %00000000,%01100001 - .db %01100011,%10011001 - .db %10010100,%01101001 - .db %10011001,%00011001 - .db %01000010,%11000001 - .db %00111100,%00111110 + .db 8,2 ;Rkaydees' icon: + .db %00000000,%00111100 ; XX + .db %00000000,%01010010 ; XXX + .db %00000000,%01100001 ; XX + .db %01100011,%10011001 ; XX + .db %10010100,%01101001 ; XX + .db %10011001,%00011001 ; XX + .db %01000010,%11000001 ; X XX + .db %00111100,%00111110 ; XXXX #ifdef id2 WormData: .db 1 @@ -316,7 +324,7 @@ yasdetect: cal _AHL_PLUS_2_PG3 ;skip past length bytes cal _Get_Word_ahl ld hl,levelhead+(levelhead2*256) - call _cphlde + cal _cphlde ret z scf ret @@ -351,7 +359,7 @@ int_end: ;--- search levels ------------------------------------------------------------- -Start: +codestart: cal _runindicoff cal _flushallmenus @@ -1012,7 +1020,7 @@ notselect cp K_EXIT jp z,ExitNoStats cp K_MORE - jp z,Start + jp z,codestart psh af cal menupos cal loadgamecar @@ -1535,7 +1543,7 @@ createwormsloop: ld (hl),b ;+score+1=0 inc hl ld c,2 - ld (hl),c ;+delay=2 + ld (hl),c ;+wdelay=2 inc hl ld (hl),3 ;+lives=x wormbeglives =$-1 @@ -1585,11 +1593,11 @@ client: ; 2 = link = 0 + link (name1) ; 3 = worm #2 = #2 + local(name2) ; 4 = link = 0 + link (name2) - ld e,worm3+left&255 + ld e,worm3+wleft&255 cal moveworm2 ;3=2 ld l,worm1+name&255 cal sendworm - ld l,worm2+left&255 + ld l,worm2+wleft&255 cal linkworm ;worm2+4 over link pop hl ;loadgamecar pop de ;leveldata @@ -1618,21 +1626,21 @@ linkerror: ;--- set/send worms ------------------------------------------------------------ moveworm2: - ld hl,worm2+left -moveworm: ;hl=wormN+left + ld hl,worm2+wleft +moveworm: ;hl=wormN+wleft ld d,worm1/256 ld bc,11 ldir ;keys+name worm(de) = worm(hl) ret -linkworm: ;hl=wormN+left - ld (hl),0 ;worm1|2+left +linkworm: ;hl=wormN+wleft + ld (hl),0 ;worm1|2+wleft inc hl inc hl ;+name ld b,9 cal recvstuff ld bc,worm3-worm1-11 ;+2 add hl,bc ;b=0 - ld (hl),b ;worm3|4+left + ld (hl),b ;worm3|4+wleft inc hl inc hl ;+name ld b,9 @@ -1657,12 +1665,12 @@ host: ; 2 = worm #1 = #1 + local(name1) ; 3 = link = 0 + link (name2) ; 4 = worm #2 = #2 + local(name2) - ld e,worm4+left&255 + ld e,worm4+wleft&255 cal moveworm2 ;4=2 - ld e,worm2+left&255 - ld hl,worm1+left + ld e,worm2+wleft&255 + ld hl,worm1+wleft cal moveworm ;2=1 - ld l,worm1+left&255 + ld l,worm1+wleft&255 cal linkworm ;worm1+3 over link ld l,worm2+name&255 cal sendworm @@ -2013,7 +2021,7 @@ ReadyDelay: GameLoop: ld bc,(worm1+pos) ;camera worm #1 - ld a,(worm1+left) + ld a,(worm1+wleft) or a ;if #1 not over link jr nz,showfield ld bc,(worm2+pos) ;otherwise view from #2 @@ -2311,10 +2319,10 @@ displayWormStats: psh bc psh hl - ld bc,left-died - add hl,bc ;+left + ld bc,wleft-died + add hl,bc ;+wleft xor a - cp (hl) ;left=0 = link + cp (hl) ;wleft=0 = link jr nz,NoLinkIndic ld a,9 ld (_curCol),a @@ -2557,10 +2565,10 @@ respawndue: ld a,h ;previous cp l ;changed? ret z - ld (ix+delay),a ;=0 + ld (ix+wdelay),a ;=0 ret saverespawncounter: - ld (ix+delay),a + ld (ix+wdelay),a jr inputcall chkkey: ;key=a @@ -2595,7 +2603,7 @@ inkeys: ;use jp not call! turnright =$-1 ld l,a notright: - ld a,(ix+right) + ld a,(ix+wright) cal chkkey ret nc ld a,l @@ -2604,7 +2612,7 @@ turnleft =$-1 ld l,a ret inputcall: - ld a,(ix+left) + ld a,(ix+wleft) or a jr z,inlink ;input by link cal inkeys ;input by keys @@ -2632,7 +2640,7 @@ HandleWorm: or a ret nz ;live limit alive: - ld a,(ix+delay) + ld a,(ix+wdelay) dec a jp nz,respawncheck @@ -3031,7 +3039,7 @@ wormset2grow: pop hl ;<