case-insensitive z80 label usage
[wormy.git] / wormy.z80
index 45b69867ad5f783b7d99d4b16aab19efafc8e659..5bf22f79f92cf289ea5f6db04e10291ab8a664d7 100644 (file)
--- a/wormy.z80
+++ b/wormy.z80
 ;     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 ;<<call hitworm
   pop hl ;<<call HandleWorm
   pop hl ;<<$some other call
-  ld  (ix+delay),2
+  ld  (ix+wdelay),2
   jp  Nextlevel
 
 chkpeahit: ;bc=ownpos;hl=peapos (destr:ad)
@@ -3125,7 +3133,6 @@ mmldir5:
 
 wormdead:
   pop hl ;<<call
-WormDead:
   ld  a,2
   ld  (flashtime),a
 #ifdef w00t
@@ -3134,7 +3141,7 @@ WormDead:
   nop
  .org $+1
 #endif
-  ld  (ix+delay),rspawndelay
+  ld  (ix+wdelay),rspawndelay
 
 thislevel =$+1
   ld  hl,0
@@ -4150,7 +4157,7 @@ sendnewpeaoverlink:
   ld  a,(gamecar)
   rra ;and _datalink
   ret nc ;no link
-  ld  a,(worm1+left)
+  ld  a,(worm1+wleft)
   or  a
   jr  z,receivenewpeaoverlink
   ld  c,l ;send pea's pos