wormy 0.98.227
authorMischa Poslawsky <wormy@shiar.org>
Wed, 27 Feb 2002 20:49:50 +0000 (21:49 +0100)
committerMischa Poslawsky <wormy@shiar.org>
Mon, 2 Mar 2009 21:39:17 +0000 (22:39 +0100)
wormy.txt
wormy.z80

index 35f502982449b8806219ff5474232003fa962c89..1a2364094c5dd0eacf2fc736abaf9bd58b5d6539 100644 (file)
--- a/wormy.txt
+++ b/wormy.txt
@@ -1,65 +1,73 @@
-   ����                                                        ����
+ __����________________________________________________________����___________
   ����                                                         �����
  ���                                                            ����     ����
   ����                                                         �����
  ���                                                            ����     ����
-���      �����          ��������       �����     ����  ����      ���     �����
-���     �������       �����������     �������   �������������     ��    ��� ���
-��     ���   ���     �����    ����   ����  ��� ���  ����  ���     ���  ���� ���
-��     ��     ��     ��  �      ��� ����      ���  ������  ���    ���  ���   ��
-��     ��     ��     �� ��      ��� ���       ��� ���� ��� ���    ��� ����   ��
-��     ���   ���     �� ��       �� ���       �������   ��� ��     �������   ��
-��     ���   ���    ��� ��       �� ��        �� ���    ��� ���     �����   ���
-���     ��� ���     ��� ��       �� ���       �� ����  ���� ���             ���
-���      �����     ���  ���     ��� ���       ��  ��������  ���            ���
- ���      ���      ���  ���     ��� ���       ���  ������   ���            ���
-  ����  �������  ����    ���   ���  ����      ���            �����       ����
-   �������� ��������     ���������   ���      ���             ���������������
-    �����     �����       �������     ��       ���              �����������
-
-Version:                 0.96.C24 (released end 2001)
Author:                  SHIAR (wormy@shiar.org - www.shiar.org)
-  File(s):                 wormy.86p (main program, 6kB)
-                            wormy001.86s (levels, 1kB)
+���      �����          ��������       �����    ����  ����      ���     �����
+���     �������       �����������     �������  �������������     ��    ��� ���
+��     ���   ���     �����    ����   ����  ������  ����  ���     ���  ���� ���
+��     ��     ��     ��  �      ��� ����     ���  ������  ���    ���  ���   ��
+��     ��     ��     �� ��      ��� ���      ��� ���� ��� ���    ��� ����   ��
+��     ���   ���     �� ��       �� ���      �������   ��� ��     �������   ��
+��     ���   ���    ��� ��       �� ��       �� ���    ��� ���     �����   ���
+���     ��� ���     ��� ��       �� ���      �� ����  ���� ���             ���
+���      �����     ���  ���     ��� ���      ��  ��������  ���            ���
+ ���      ���      ���  ���     ��� ���      ���  ������   ���            ���
+  ����  �������  ����    ���   ���  ����     ���            �����       ����
+   �������� ��������     ���������   ���     ���             ���������������
+    �����     �����       �������     ��      ���              �����������
+ _____________________________________________________________________________
+
Version:                 0.98.226 (released february 2002)
+  Author:                  SHIAR (wormy@shiar.org - www.shiar.org)
+   File(s):                 wormy.86g (main program 6kB, levels 4x1kB)
                              wormy.txt (readme); wormedit.exe (level editor)
                              wormy.txt (readme); wormedit.exe (level editor)
-     Description:             Free-movement Nibbles game, 1-4 players.
-      Where to get this game:  shiar.org, the official home of Wormy
-       Additional Credits to:   Matthew Shepcar and Jonah Cohen
-
-          -= [THE BEGINNING] =-
-
-            First you'll want to upload wormy.86p to your calculator (or emu),
-              together with a levelfile like wormy001.86s. Then you simply run
-                Wormy by typing Asm(wormy or using a shell (except for AShell.)
-                   When multiple levelfiles are present, you have to choose one
-                      first. You'll get in the main menu. Here you can alter
-                       game settings with the arrow keys (game mode, level,
-                       linkplay, and players (+names and controls).
-                      Select (enter/2nd) the level to customize
-                    multiplayer games (lives, score-
-                limit, game speed, rotation
-             speed and auto-growth).
-        When you're ready, press
-   enter/2nd to start the game.
-
--= [DON'T DIE] =-
-
- Playing wormy is quite simple actually. Just avoid
-  your worm from crashing (into walls or yourself)
-    by turning it left/right. Default controls are:
-     [1] left/right  [2] F1/F2  [3] sto/,  [4] enter/+
-         but they can be altered to anything except EXIT
-            (which always exits to the stats-screen)     and MORE
-                 (which pauses and allows you to change contrast.)
-
-                      -= [WELL DONE] =-
-
-                        At the end of each game, the stats-screen will
-                          be displayed. It shows the score and deaths for
-                            each worm, and hiscore for singleplayer games.
-                             The winner(s) of multiplayer games will
-                              be denoted with an *.  Hit enter
-                               to return to the main menu.
-
-                               -= [GAME MODES] =-
+                              bla
+      Description:             perfect Nibbles game with free movement, 9 game
+                                modes, for 1-4 players, many levels and editor
+       Where to get this game:   shiar.org, the official home of Wormy
+        Additional Credits to:    Matthew Shepcar and Jonah Cohen
+
+ ___ _  _ ___    ______ ______  ______ _____ __   _ __   _ _____ __   _ ______
+  |  |__| |__    |_____]|_____ |  ____   |   | \  | | \  |   |   | \  ||  ____
+  |  |  | |__    |_____]|______|_____| __|__ |  \_| |  \_| __|__ |  \_||_____|
+
+ To get started, simply upload the file wormy.86g to your calculator/emu.
+    This file contains Wormy as well as a few levels. Then you simply run
+       Wormy by typing asm(wormy   or by using some shell (just no AShell.)
+         When multiple levelfiles are present, you have to choose one first.
+           Next, you'll get in the main menu. Use up and down to choose an
+             option, left and right to alter it, and 2nd or enter to select.
+
+       - Mode - change gamemode (further details below). Select it to start.
+        - Level - select the (starting) level. Selecting it allows you to
+                   customize some stuff for multiplayer levels.
+          - Link  - toggle linkplay. Remember to activate it on _both_ calcs.
+           - Worms  - set the number of players (upto 4) and teams (1 or 2).
+            - worm    - select it to alter the selected player's name.
+             - controls - select and press your buttons for left and right.
+
+ ______   _____  __   _ . _______      ______  _____ _______
+ |     \ |     | | \  | '    |         |     \   |   |______
+ |_____/ |_____| |  \_|      |         |_____/ __|__ |______
+
+ That's really all you have to do. Avoid your worm from crashing into anything
+   (walls, bouncies, and worms; including yourself) by turning it left/right.
+     Default controls are:  [1] left/right  [2] F1/F2  [3] sto/,  [4] enter/+
+       but they can be altered to anything except these two keys:
+         [EXIT] - this will always exit to the game-over screen.
+           [MORE] - will pause and allow you to change contrast 'n stuff.
+
+ _  _  _ _______                    ______   _____  __   _ _______
+ |  |  | |______ |      |           |     \ |     | | \  | |______
+ |__|__| |______ |_____ |_____      |_____/ |_____| |  \_| |______
+
+ At the end of each game, the stats-screen will be displayed. It shows the
+       score and deaths for each worm, and hiscore for singleplayer games.
+               The winner(s) of multiplayer games will be denoted with an *.
+                      Hit enter to return to the main menu.
+
+  ______ _______ _______ _______      _______  _____  ______  _______ _______
+ |  ____ |_____| |  |  | |______      |  |  | |     | |     \ |______ |______
+ |_____| |     | |  |  | |______      |  |  | |_____| |_____/ |______ ______|
 
                                SINGLEPLAYER
                                  Get all the food
 
                                SINGLEPLAYER
                                  Get all the food
@@ -69,14 +77,14 @@ Version:                 0.96.C24 (released end 2001)
                     TRON    original Peaworm;
             DEATH-    Your      just get as many
  FOODMATCH   MATCH      tail           peas as you can
                     TRON    original Peaworm;
             DEATH-    Your      just get as many
  FOODMATCH   MATCH      tail           peas as you can
- Deathmatch   Multiplay-  doesn't           in a single level.
+ Deathmatch   Multiplay-  doesn           in a single level.
   with food.   er game in    go away.
   with food.   er game in    go away.
-  The one who   which u try      Try to sur-
-  reaches the     to kill the          vive as long
+  The one who   which u try     Try to sur-
+  reaches the     to kill the         vive as long
    score-limit      other worm(s)              as possible.
    first, wins.        before they kill
                           you. There's no food,
    score-limit      other worm(s)              as possible.
    first, wins.        before they kill
                           you. There's no food,
-    TIMEMATCH                 but by defauly worms slowly
+    TIMEMATCH                 but by default worms slowly
      Try to stay                     get larger over time.
      alive longer      RACE
       than the other      All worms
      Try to stay                     get larger over time.
      alive longer      RACE
       than the other      All worms
@@ -94,43 +102,49 @@ Version:                 0.96.C24 (released end 2001)
              dieing, but earn                   and 2+4 are teamed together.
               10 for eating a pea.
 
              dieing, but earn                   and 2+4 are teamed together.
               10 for eating a pea.
 
-               -=[LEVELS]=-
+        _______ _    _ _______        _______
+ |      |______  \  /  |______ |      |______
+ |_____ |______   \/   |______ |_____ ______|
 
 
-               Wormy comes together with WORMEDIT,
-               the Wormy level editor for DOS I wrote.
-               Start wormedit.exe and make some kick-ass
-              levels! (Please do.) Also send me your levels
-             so I can put them on my page. More info at shiar.org.
+          Wormy comes together with WORMEDIT, the Wormy level editor for DOS
+      I wrote. Start wormedit.exe and make some kick-ass levels! (Please do!!)
+ Also send me your levels so I can put them on my page. More info at shiar.org.
 
 
-            -=[OF COURSE]=-
+  _____  _______      _______  _____  _     _  ______ _______ _______
+ |     | |______      |       |     | |     | |_____/ |______ |______
+ |_____| |            |_____  |_____| |_____| |    \_ ______| |______
 
 
          Argh, a disclaimer :( Just note Wormy was a non-profit project
-           which took a lot of my (spare) time, so please don't go demand
-          stuff (fixes, features..) or sue me (f)or anything. By default
-          I am not responsible for any damage Wormy causes. Furthermore,
-         you may not: release an altered version of Wormy (the source
-         has been included for learning practises ONLY), distribute
-         it w/o this readme file included (plz leave the zipfile
-         intact), nor may you charge money for it. Thanks.
+ Argh, a disclaimer :( Just note Wormy was a non-profit project
+                 which took a lot of my (spare) time, so please don't go demand
+  stuff (fixes, features..) or sue me (f)or anything. By default
+                 I am not responsible for any damage Wormy causes. Furthermore,
+   you may not: release an altered version of Wormy (the source
+                    has been included for learning practises ONLY), distribute
+    it w/o this readme file included (plz leave the zipfile
+                             intact). Any questions and stuff, just _ask_ me!
 
 
-        -=[HISTORY]=-
+ _     _ _____ _______ _______  _____   ______ __   __
+ |_____|   |   |______    |    |     | |_____/   \_/
+ |     | __|__ ______|    |    |_____| |    \_    |
 
         This is a short historical overview of Worm(y):
                                          (facts may not match reality)
 
         This is a short historical overview of Worm(y):
                                          (facts may not match reality)
-      * End 1998: Matthew Shepcar releases Peaworm, worm in it's simplest form
-     * Scabby didnt release another version with levels and vertical scrolling
-    * End 1999: I (Shiar) got his permission to entirely screw up his Worm >:)
-   * Jonah Cohen helped me for a while, but soon he either died or got bored
-  * June 2000: Worm just didn't want to work correctly (linkplay problems
-                mostly), so I decided to take a break to continue later..
- * Feb 2001: After a huge break I figured it's time to complete WormY
-* End 2001: Completed at last, and everyone lived happily ever after
-
--=[CREDITS]=-
-
- EMAiL wormy@shiar.org      Please send me comments, fanmail and your levels!
-  WWWW http://shiar.org        Be sure to visit :) Lotsa stuff for your ticalc
-   iRC shiar @ #ti [efnet]      Idling here.
+      - End 1998 - Matthew Shepcar releases Peaworm, worm in its simplest form
+     - Scabby didnt release another version with levels and vertical scrolling
+    - End 1999 - I (Shiar) got his permission to entirely screw up his Worm >:)
+   - Jonah Cohen helped me for a while, but soon he either died or got bored
+  - June 2000 - Worm just didn't want to work correctly (linkplay problems
+                 mostly), so I decided to take a break to continue later..
+ - Feb 2001 - After a huge break I figured it's time to complete Worm(y)
+- March 2002 - Completed at last, and everyone lived happily ever after
+
+ _______  ______ _______ ______  _____ _______ _______
+ |       |_____/ |______ |     \   |      |    |______
+ |_____  |    \_ |______ |_____/ __|__    |    ______|
+
+ EMAiL wormy@shiar.org       Please send me comments, fanmail and your levels!
+  WWWW http://shiar.org       Be sure to visit :) Lotsa stuff for your ticalc
+   iRC shiar @ #ti [efnet]     Idling here.
 
     Matthew Shepcar - for writing the original Peaworm and Wonderworm
      Jonah Cohen     - wrote some parts of Worm (like scrolling)
 
     Matthew Shepcar - for writing the original Peaworm and Wonderworm
      Jonah Cohen     - wrote some parts of Worm (like scrolling)
@@ -140,5 +154,5 @@ Version:                 0.96.C24 (released end 2001)
          Many More       - betatesters
           too much..      - to list
           Aaron Curtis    - doesn't fit in layout yet :(
          Many More       - betatesters
           too much..      - to list
           Aaron Curtis    - doesn't fit in layout yet :(
-______________________________________________________________________________
-=----------------------------------------------------------------------------=
\ No newline at end of file
+
+ _____________________________________________________________________________
\ No newline at end of file
index 7e1367304d19046ea3b6e1c6cfa0d6fe05ccb008..0aba3e5c163e710a33901241408092ec0724e774 100644 (file)
--- a/wormy.z80
+++ b/wormy.z80
@@ -16,8 +16,8 @@
 ;    �����     �����       �������     ��       ���              �����������
 ;_______________________________________________________________________________
 ;
 ;    �����     �����       �������     ��       ���              �����������
 ;_______________________________________________________________________________
 ;
-; Version                  :                                      98% (0.98.226)
-; Release Date             :                                    2002 February 26
+; Version                  :                                      98% (0.98.227)
+; Release Date             :                                    2002 February 27
 ; Author(s)                :                                               Shiar
 ; Email Address            :                                     wormy@shiar.org
 ; Web Page                 :                                       www.shiar.org
 ; Author(s)                :                                               Shiar
 ; Email Address            :                                     wormy@shiar.org
 ; Web Page                 :                                       www.shiar.org
 ;     X [225] ED: ctf/race level copy/move fix
 ;     X [225] LVL: episode #1: 5 ctf+5 race; episode #3 removed (all in #1 now)
 ;     X [225] add v2 id (yas2)
 ;     X [225] ED: ctf/race level copy/move fix
 ;     X [225] LVL: episode #1: 5 ctf+5 race; episode #3 removed (all in #1 now)
 ;     X [225] add v2 id (yas2)
+;     X [227] redundant calls removed or moved
+;     X [227] fixed: ctf score increased by taking _any_ pea
+;     X [227] no more points in race for dieing on the second half
+;     X [227] no score decrease for dieing in race (no longer needed, see above)
 ;  1% * LINK: >Somehow do a lot of testing with 2 calcs< *sigh*
 ;     * LVL: episode #5: 10 easy sp levels (do i _have_ to?)
 ;     * LVL: Eric's Yumworms (ep#5?)
 ;  1% * LINK: >Somehow do a lot of testing with 2 calcs< *sigh*
 ;     * LVL: episode #5: 10 easy sp levels (do i _have_ to?)
 ;     * LVL: Eric's Yumworms (ep#5?)
 ;
 ; * correct team winners
 ;  * level compression
 ;
 ; * correct team winners
 ;  * level compression
-;   * arrow to offscreen peas
-;    * sound
-;     * startpos
-;      * pause in linkplay
-;       * coop (DON'T COUNT ON IT)
+;   * ubersized bouncies ;)
+;    * arrow to offscreen peas
+;     * w00t AI
+;      * sound
+;       * startpos
+;        * pause in linkplay
+;         * coop (DON'T COUNT ON IT)
 
 ;_______________________________________________________________________________
 ;  _/_/_____ __   _ _______        _     _ ______  _______
 
 ;_______________________________________________________________________________
 ;  _/_/_____ __   _ _______        _     _ ______  _______
@@ -207,17 +213,17 @@ _EXLP              = $4493 ;swap (hl),(de) b times
 _GETB_AHL          = $46C3 ;a=(ahl) \ hl=ahl
 _OP1TOOP6          = $4263
 
 _GETB_AHL          = $46C3 ;a=(ahl) \ hl=ahl
 _OP1TOOP6          = $4263
 
- #define buffer     ;use display buffer (otherwise write directly to screen)
- #define readymask  ;"greys" out the field before starting a level
- #define coolzgfx   ;nice graphics for game over screen
+ #define id2        ;yas2 level identifier - this'll add (65) bytes
+ #define buffer     ;use display buffer, otherwise write directly to screen (11)
+ #define readymask  ;"greys" out the field before starting a level (20)
+;#define readytext  ;-displays "prepare" before level starts (42)
+ #define coolzgfx   ;nice graphics for game over screen (98)
  #define spprotect  ;options not changable for singleplayer modes
 ;#define intlevels  ;-internal levels
  #define spprotect  ;options not changable for singleplayer modes
 ;#define intlevels  ;-internal levels
-;#define readytext  ;-displays "prepare" before level starts
- #define id2        ;yas2 level identifier (adds 65 bytes)
                     ;-to become invincible, define the magic word :D
 
                     ;-to become invincible, define the magic word :D
 
-levelhead  = 'w'
-levelhead2 = 97 ;wormy levels header = "0"
+levelhead   = 'w'
+levelhead2  = 97 ;wormy levels header = "0"
 
 ;_______________________________________________________________________________
 ; _______ _______  _____   ______ _______  ______ _______
 
 ;_______________________________________________________________________________
 ; _______ _______  _____   ______ _______  ______ _______
@@ -272,7 +278,7 @@ drawctfpea2 = peaspos+6
 
 ;--- layout --------------------------------------------------------------------
 
 
 ;--- layout --------------------------------------------------------------------
 
-;(wormN)             set:
+;(wormN)      offs:  set:
 heading     =   0   ;level*
 pos         =   2   ;level*
 pos2        =   4   ;level
 heading     =   0   ;level*
 pos         =   2   ;level*
 pos2        =   4   ;level
@@ -303,17 +309,17 @@ wormsize    =   30 ;^mark^
 start:         ;turn back NOW!
   nop      ;and so it begins...
   jp  Start
 start:         ;turn back NOW!
   nop      ;and so it begins...
   jp  Start
-#ifdef id2
+#ifndef id2
+  ld  bc,$5242
+  rst 10h
+ .dw  WormIcon
+#else
   ld  (bc),a
   nop
   ld  d,h
   rst 10h
  .dw  WormIcon
  .dw  WormData
   ld  (bc),a
   nop
   ld  d,h
   rst 10h
  .dw  WormIcon
  .dw  WormData
-#else
-  ld  bc,$5242
-  rst 10h
- .dw  WormIcon
 #endif
   ld  d,a
   ld  c,a
 #endif
   ld  d,a
   ld  c,a
@@ -328,7 +334,7 @@ start:              ;turn back NOW!
  .db  %1010010
   jr  nz,$+47
   dec l
  .db  %1010010
   jr  nz,$+47
   dec l
- .db  " 98% .225",0
+ .db  " 98% .227",0
 WormIcon:
  .db  8,2
  .db  %00000000,%00111100
 WormIcon:
  .db  8,2
  .db  %00000000,%00111100
@@ -2159,7 +2165,7 @@ CheckExit:
   rla  ;=$17 (c=EXIT-key)
       ;or$A7 (c=0)
   jp  c,GameLoop
   rla  ;=$17 (c=EXIT-key)
       ;or$A7 (c=0)
   jp  c,GameLoop
-  jp  Exit ;jr?
+  jr  Exit
 
 ;--- pause menu ----------------------------------------------------------------
 
 
 ;--- pause menu ----------------------------------------------------------------
 
@@ -2781,7 +2787,10 @@ drawworm:
   inc hl
   ld  (hl),b
   inc hl
   inc hl
   ld  (hl),b
   inc hl
-  cal resbit
+  ;(resbit)
+  ld  a,h
+  and (ix+storepos)
+  ld  h,a
   ld  (ix+head),l
   ld  (ix+head+1),h
 
   ld  (ix+head),l
   ld  (ix+head+1),h
 
@@ -2810,7 +2819,10 @@ removetailbit:
   inc hl
   ld  b,(hl)
   inc hl
   inc hl
   ld  b,(hl)
   inc hl
-  cal resbit
+  ;(resbit)
+  ld  a,h
+  and (ix+storepos)
+  ld  h,a
   psh hl
   cal res4pixels ;rm last bit
   pop hl
   psh hl
   cal res4pixels ;rm last bit
   pop hl
@@ -2976,12 +2988,11 @@ sel_otherpea:
   jr  c,hitflag
 ;no peas hit:
   ld  a,e ;peek a (that's x86asm for pop\push ;)
   jr  c,hitflag
 ;no peas hit:
   ld  a,e ;peek a (that's x86asm for pop\push ;)
-  bit 1,a ;%10 = carrying flag?
+  bit 1,a ;%1O = carrying flag?
   jr  z,_wormdead ;if not just die
   jr  z,_wormdead ;if not just die
-  xor %11 ;drop flag
-  ld  (ix+reserv),a
+  and %1 ;which flag?
   ld  hl,drawctfpea1 ;restore #1
   ld  hl,drawctfpea1 ;restore #1
-  jr  z,nottheotherflag ;which flag? (=and %1)
+  jr  nz,nottheotherflag
   inc hl ;ld hl,drawctfpea2
   inc hl ;restore #2
 nottheotherflag:
   inc hl ;ld hl,drawctfpea2
   inc hl ;restore #2
 nottheotherflag:
@@ -2994,14 +3005,16 @@ hitflag: ;correct pea hit
   xor %11 ;invert flag taken + ownflag
   ld  (ix+reserv),a
   and %10 ;just returned?
   xor %11 ;invert flag taken + ownflag
   ld  (ix+reserv),a
   and %10 ;just returned?
-  psh af ;safe z-flag
   psh bc ;safe position
   psh bc ;safe position
+  psh af ;safe z-flag
   cal DrawPea ;remove
   cal DrawPea ;remove
-  ld  e,20 ;flag captured+returned
-  cal z,IncScore
-  pop bc
   pop af
   pop af
+  pop bc
   ret nz ;flag taken: continue game ;drawworm
   ret nz ;flag taken: continue game ;drawworm
+  ld  e,20 ;flag captured+returned
+  psh bc
+  cal IncScore
+  pop bc
   ld  a,3 ;draw delay
   ld  (drawctfpea1),a ;redraw..
   ld  (drawctfpea2),a ;..both flags
   ld  a,3 ;draw delay
   ld  (drawctfpea1),a ;redraw..
   ld  (drawctfpea2),a ;..both flags
@@ -3024,7 +3037,7 @@ hitworm:
 PeaY =$-2
 PeaX =$-1
   cal chkpeahit
 PeaY =$-2
 PeaX =$-1
   cal chkpeahit
-  jr  nc,_wormdead
+  jp  nc,wormdead
 
 ;--- take pea ------------------------------------------------------------------
 
 
 ;--- take pea ------------------------------------------------------------------
 
@@ -3088,12 +3101,12 @@ chkpeahit: ;bc=ownpos;hl=peapos (destr:ad)
 ;--- misc ----------------------------------------------------------------------
 
 checkhitlapline:
 ;--- misc ----------------------------------------------------------------------
 
 checkhitlapline:
-  ld  a,(peaspos) ;63
+  ld  a,(peaspos) ;63 usually
   sub b ;x==63
   jr  z,nextlaphalf
   sub b ;x==63
   jr  z,nextlaphalf
-  inc a
-  ret nz
-nextlaphalf:
+  inc a ;(more checkin' since wormies just have those _huge_ heads ;)
+  ret nz ;x!=62
+nextlaphalf: ;x==62|63; a=0
   ld  a,(peaspos+1) ;yline
   cp  c ;ypos
   ld  a,1
   ld  a,(peaspos+1) ;yline
   cp  c ;ypos
   ld  a,1
@@ -3120,21 +3133,15 @@ checklap:
 ; |       |    \_ |_____| |_____  ______|
 ;_______________________________________________________________________________
 
 ; |       |    \_ |_____| |_____  ______|
 ;_______________________________________________________________________________
 
-releasekeys:
-  halt
+releasekeys: ;---------->promise me you'll never let go...
+  halt ;-------------------->i won't let go....
   ld  a,%10000000    ;all key-masks
   out (1),a
   ld  a,%10000000    ;all key-masks
   out (1),a
-  in  a,(1)
+  in  a,(1) ;--------------->i'll never let go.....
   inc a              ;cp %11111111 (no keys pressed)
   jr  nz,releasekeys ;keep waitin
   cal GET_KEY        ;clear buffer
   inc a              ;cp %11111111 (no keys pressed)
   jr  nz,releasekeys ;keep waitin
   cal GET_KEY        ;clear buffer
-  ret
-
-resbit:
-  ld  a,h
-  and (ix+storepos)
-  ld  h,a
-  ret
+  ret ;--------------------->*die* (we are VICTORIOUS! muha)
 
 randompos:
   ld  b,a
 
 randompos:
   ld  b,a
@@ -3195,11 +3202,16 @@ handledworm =$-2
   ld  (ix+pos2),a ;y2
   ld  (ix+pos2+1),a ;x2
 
   ld  (ix+pos2),a ;y2
   ld  (ix+pos2+1),a ;x2
 
+  ld  a,(handledworm) ;who are we? (1-4)
+  cpl ;invert (just bit 0 actually)
+  and 1 ;group 1 (1,3) or 0 (2,4)
+  ld  (ix+reserv),a ;reset halflap|flags to starting settings
+
   inc (ix+died)
   dec (ix+lives)
   psh af
   inc (ix+died)
   dec (ix+lives)
   psh af
-  ld  a,(gametype)
-  cp  gamectf ;ctf no death penalty
+  ld  a,(gamecar)
+  and _datadecs ;ctf and race no death penalty
   cal nz,DecScore10
   pop af
   ret nz ;HandleWorm done
   cal nz,DecScore10
   pop af
   ret nz ;HandleWorm done
@@ -4375,6 +4387,7 @@ wtPicture: ;title
 .db %00011111,%11101111,%11110000,%00111111,%10000111,%00000001,%10000000,%00000011,%11111111,%11110000,%00111110,%00011110,%00010111,%01011101,%10010101,%01100101
 .db %00001111,%10000011,%11100000,%00011111,%00000011,%00000001,%10000000,%00000000,%11111111,%11100000,%00000000,%00000000,%11100101,%01010101,%01000110,%01010011
 
 .db %00011111,%11101111,%11110000,%00111111,%10000111,%00000001,%10000000,%00000011,%11111111,%11110000,%00111110,%00011110,%00010111,%01011101,%10010101,%01100101
 .db %00001111,%10000011,%11100000,%00011111,%00000011,%00000001,%10000000,%00000000,%11111111,%11100000,%00000000,%00000000,%11100101,%01010101,%01000110,%01010011
 
+#ifdef coolzgfx
 wtWormy: ;g/o
 .db %00000110,%00111000,%00000000,%00111100,%00001111,%10001110,%00111100,%01111000,%00001100,%11011000,%11100011,%10000000,%00000000,%11111100,%00111000,%00000000
 .db %00011001,%01000110,%11100000,%11000010,%00011100,%11011111,%01111110,%11111000,%00011110,%11011101,%11110111,%11000000,%00111111,%00000011,%01000110,%11100000
 wtWormy: ;g/o
 .db %00000110,%00111000,%00000000,%00111100,%00001111,%10001110,%00111100,%01111000,%00001100,%11011000,%11100011,%10000000,%00000000,%11111100,%00111000,%00000000
 .db %00011001,%01000110,%11100000,%11000010,%00011100,%11011111,%01111110,%11111000,%00011110,%11011101,%11110111,%11000000,%00111111,%00000011,%01000110,%11100000
@@ -4383,10 +4396,8 @@ wtWormy: ;g/o
 .db %01001100,%00011000,%00000000,%00000100,%00011000,%11011111,%01100010,%11001100,%00110011,%01101101,%10000111,%11000001,%00011100,%00111000,%00011000,%10000010
 .db %01010010,%00100100,%01100000,%00011000,%00011111,%11011011,%11101110,%11111100,%00011111,%01111000,%11110110,%11100000,%11000000,%11000110,%00101001,%10000010
 .db %01100001,%11000011,%10011111,%11100000,%00001111,%10001001,%11001100,%01111000,%00001110,%00110000,%01100110,%01100000,%00111111,%00000001,%11000110,%01111100
 .db %01001100,%00011000,%00000000,%00000100,%00011000,%11011111,%01100010,%11001100,%00110011,%01101101,%10000111,%11000001,%00011100,%00111000,%00011000,%10000010
 .db %01010010,%00100100,%01100000,%00011000,%00011111,%11011011,%11101110,%11111100,%00011111,%01111000,%11110110,%11100000,%11000000,%11000110,%00101001,%10000010
 .db %01100001,%11000011,%10011111,%11100000,%00001111,%10001001,%11001100,%01111000,%00001110,%00110000,%01100110,%01100000,%00111111,%00000001,%11000110,%01111100
-
 ;.db %00000000,%00000001,%10000000,%00000000,%00001111,%10000000
 ;.db %00000000,%00000001,%10000000,%00000000,%00001111,%10000000
-
-#ifndef coolzgfx
+#else
 txtGO:     .db 5,5,5,5,5," GAME OVER ",$CF,$CF,$CF,$CF,$CF,0
 #endif
 
 txtGO:     .db 5,5,5,5,5," GAME OVER ",$CF,$CF,$CF,$CF,$CF,0
 #endif
 
@@ -4504,7 +4515,7 @@ _datasingl  =  %00000100 ;singleplayer=1 (=hiscore+keep_length+nextlevel)
 _dataPctf   =  %00001000 ;ctf peas=1
 __bitPctf   =  3
 _datatime   =  %00010000 ;time incs score (timematch)
 _dataPctf   =  %00001000 ;ctf peas=1
 __bitPctf   =  3
 _datatime   =  %00010000 ;time incs score (timematch)
-;reserved      %00100000 ;for future use
+_datadecs   =  %00100000 ;decrease score on death=1
 _datafood   =  %01000000 ;food present=0 (6!)
 _dataPmult  =  %10000000 ;multiple peas=1 (no _datafood) (7!)
 
 _datafood   =  %01000000 ;food present=0 (6!)
 _dataPmult  =  %10000000 ;multiple peas=1 (no _datafood) (7!)
 
@@ -4517,19 +4528,19 @@ _dataPmult  =  %10000000 ;multiple peas=1 (no _datafood) (7!)
                ;      | | | |  |  |  �turn speed (8=def)
                 ;     | | | |  |  |  |  �score limit (0=none)
 gamesingle  =  0 ;    | | | |  |  |  |  |
                ;      | | | |  |  |  �turn speed (8=def)
                 ;     | | | |  |  |  |  �score limit (0=none)
 gamesingle  =  0 ;    | | | |  |  |  |  |
-datasingle:.db %00000110,3,1,1,-1,-1, 8, 0 ;Singleplayer (SP; 3 lives)
+datasingle:.db %00100110,3,1,1,-1,-1, 8, 0 ;Singleplayer (SP; 3 lives)
 gamepeas    =  1
 gamepeas    =  1
-datapeas:  .db %00000100,1,1,1,-1,126,8, 0 ;Peaworm (SP; 1 live, 127 growth)
+datapeas:  .db %00100100,1,1,1,-1,126,8, 0 ;Peaworm (SP; 1 live, 127 growth)
 gametron    =  2
 gametron    =  2
-datatron:  .db %01010100,1,1,1,-1, 0, 8, 0 ;Tron (SP; 1 live, cont.growth)
+datatron:  .db %01110100,1,1,1,-1, 0, 8, 0 ;Tron (SP; 1 live, cont.growth)
 gamedeathm  =  3
 gamedeathm  =  3
-datadeathm:.db %01000000,3,2,1,-1,42, 8, 0 ;Deathmatch (3 lives, 50 growth)
+datadeathm:.db %01100000,3,2,1,-1,42, 8, 0 ;Deathmatch (3 lives, 50 growth)
 gamefoodm   =  4
 gamefoodm   =  4
-datafoodm: .db %00000000,0,2,1,-1,-1, 8,10 ;Foodmatch (100 score)
+datafoodm: .db %00100000,0,2,1,-1,-1, 8,10 ;Foodmatch (100 score)
 gamemfoodm  =  5
 gamemfoodm  =  5
-datamfoodm:.db %11000010,0,2,1,-1,-1, 8,10 ;MuchFoodmatch (10 peas)
+datamfoodm:.db %11100010,0,2,1,-1,-1, 8,10 ;MuchFoodmatch (10 peas)
 gametimem   =  6
 gametimem   =  6
-datatimem: .db %01010000,1,2,1,-1, 0, 8, 0 ;Timematch (1 live, cont.growth)
+datatimem: .db %01110000,1,2,1,-1, 0, 8, 0 ;Timematch (1 live, cont.growth)
 gamerace    =  7
 datarace:  .db %01000000,0,2,1,-1,-1, 8,10 ;Race (100 score)
 gamectf     =  8
 gamerace    =  7
 datarace:  .db %01000000,0,2,1,-1,-1, 8,10 ;Race (100 score)
 gamectf     =  8