wormy 0.97.109
authorMischa Poslawsky <wormy@shiar.org>
Tue, 8 Jan 2002 23:33:12 +0000 (00:33 +0100)
committerMischa Poslawsky <wormy@shiar.org>
Mon, 2 Mar 2009 21:31:53 +0000 (22:31 +0100)
wormy.z80

index 22131ff968e97df3212c725349b5b56528e9a10a..ab13324f4804c966a5685ce9c2a34c73896495fd 100644 (file)
--- a/wormy.z80
+++ b/wormy.z80
@@ -16,8 +16,8 @@
 ;    �����     �����       �������     ��       ���              �����������
 ;_______________________________________________________________________________
 ;
-; Version                  :                                       97% (0.97.15)
-; Release Date             :                                     2002 January 15
+; Version                  :                                       97% (0.97.19)
+; Release Date             :                                      2002 January 9
 ; Author(s)                :                                               Shiar
 ; Email Address            :                                     wormy@shiar.org
 ; Web Page                 :                                       www.shiar.org
@@ -39,6 +39,7 @@
 ;* Although I've commented & labeled quite some stuff, I can't guarantee
 ;   everybody will understand it. This is probably not the best source
 ;    to learn z80 from. w00t the Shyer Way (tm).
+;* Also read wormy.txt please, thank you
 ;* Don't scroll down if you get scared easily.
 
 ;_______________________________________________________________________________
 ;_______________________________________________________________________________
 
 ; 97% = DONE
-
-;  2% * misc (bugs, &&&, pollish, &&, &)
-;     X score >9 dispay [15]
-;     * mem at worm #4 (still 12 bytes or so.. or more? or less?)
+;     X [15] lives >9 dispay
+;     X [15] sp modes not configurable
+;     X [16] LVL: episode #2: 10 sp levels
+;     X [17] lives stats for every liveslimited game (also !dm)
+;     X [18] LINK: fix transmit game/level data
+;     X [19] datalevels+nrlevels not in program if !intlevels
+;     X [19] mem at worm #4 (still 12 bytes or so.. or more? or less?)
+;     X [19] alter level editor to use new address and set level id #97
+;  1% * misc (bugs, &&&, pollish, &&, &)
+;     * menu s/limit/peas in multifm
+;     * autogrowth doesn't always work
 ;     * look at init-z in line routine again
-;     X sp modes not configurable [15]
-;     * team score
+;     * team score!
 ;     * random pixel still occurs
-;     * levels: Wormage | Jonah? | 2 | 3 | 4
-;   * LINK
-;  1% * fix transmit game/level data (?)
-;     * >Somehow do a lot of testing with 2 calcs< *sigh*
+;     * LINK: optimize transmit
+;  1% * LINK: >Somehow do a lot of testing with 2 calcs< *sigh*
+;     * LINK: called "Linkmatch" at g/o
+;     * LVL: episode #3: at least 5 lvls for each mp mode
+;     * LVL: episode #4: 10 sp levels, including multipeas
+;  1% * LVL: episode #5: ...
+;     * LVL: Wormage
+;     * LVL: Free Bird
+;     * LVL: Jonah?
 
 ;100% = bugs fixed + levels done
-
+;>    * switchable scoredecrease on death?
+;     * wall at pickup position fix
 ;     * arrow to offscreen peas
-;     * multiple peas in sp level
-;>110%:        sound, startpos (?)
-;>120%:        coop (DON'T COUNT ON IT)
+;110% * sound
+;     * startpos
+;120% * coop (DON'T COUNT ON IT)
 
 ;_______________________________________________________________________________
 ;  _/_/_____ __   _ _______        _     _ ______  _______
@@ -130,27 +143,32 @@ _GETB_AHL          = $46C3 ;a=(ahl) \ hl=ahl
 
 ;--- permanent ---
 
-ScrBuffer   = $8820 ;-A7FF (20*FF=1FE0)
+ScrBuffer   = $8420 ;-A3FF (20*FF=1FE0)
+worm4p      = $A400 ;-A5FF (200)      %101001O0
+;free       = $A600 ;-A7FF (200)
 worm2p      = $A800 ;-ABFF (400)      %10101O00
-worm1       = $AC00 ;-AC1D (31d)
-worm2       = $AC1F ;-AC3B (1F)
-worm3       = $AC3E ;-AC59 (1F)
-worm4       = $AC5D ;-AC77 (1F)
-balls       = $AC7C ;-ACFF (3x43d)
-SinCosTable = $AD00 ;-AE00 (4*40)
-turn10      = $AE01 ;-AE01 (1) (counter)
-peaspos     = $AE02 ;-AE05 (4+) (peas)
-;free       = $AE06 ;-AFFF (1FA)
+SinCosTable = $AC00 ;-AD00 (4*40)
+worm1       = $AD01 ;-AD1F (1F)
+worm2       = $AD20 ;-AD3E (1F)
+worm3       = $AD3F ;-AD5D (1F)
+worm4       = $AD5E ;-AD7C (1F)
+balls       = $AD7D ;-AE00 (<=3x44d)
+turn10      = $AE01 ;-AE01 (1)  (counter)
+peaspos     = $AE02 ;-AF05 (4-260) (peas)
+;free       = $AF06 ;-AFFF (F9)
 worm1p      = $B000 ;-B7FF (800)      %1011O000
 worm3p      = $B800 ;-BBFF (400)      %10111O00
+;buffer     = $BC00 ;-BF90 (390)
 ;free       = $BF91 ;-BFFF (6F)
 ;program    = $D748 ;-EFFF (186D+4A)           ;6327
-worm4p      = $F000 ;-F3FF (400)      %11110O00
-leveldata   = $F400 ;-FA70 (<=671)
-       ;can you believe i actually left $269 bytes of memory unused?!?
+leveldata   = $F080 ;-F9FF (<=97F)
+#ifndef intlevels
+datalevels  = $FA00 ;-FA11 (12) (>=$C000)
+nrlevels    = $FA12 ;-FA1B (A)   (<$FA70)
+#endif
 
 ;MEM|8---9---A---B---C---D---E---F---| ;there's something wrong
-;   |..[------]||[]|......[-----]|[].| ;if you still understand
+;   |..[------]||[]|......[-----]|[].| ;if you still understand    < OUTDATED <
 ;   |   SCREEN 2* 13      PRGM   4LV | ;after looking at this
 
 ;--- temporary ---
@@ -162,7 +180,8 @@ DispBuffer  = $BC00 ;(10x57d)    @game
 #else
 DispBuffer  = $FC70
 #endif
-lefttotalb  = $AFFF
+linklevel   = $AECC ;(<=134)     @game+init
+lefttotalb  = $BF91 ;(1)         @game
 drawctfpea1 = peaspos+4
 drawctfpea2 = peaspos+6
 
@@ -193,7 +212,7 @@ start:              ;turn back NOW!
  .db  %1010010
   jr  nz,$+47
   dec l
- .db  " 97% .15",0
+ .db  " 97% .19",0
 WormIcon:
  .db  8,2
  .db  %00000000,%00111100
@@ -206,7 +225,7 @@ WormIcon:
  .db  %00111100,%00111110
 
 levelhead  = 'w'
-levelhead2 = 95 ;wormy levels header = "95"
+levelhead2 = 97 ;wormy levels header = "97"
 
 int_handler:
   ex  af,af'
@@ -310,7 +329,7 @@ loadgametype:
   inc bc
   pop af
   pop de ;counter
-  dec d ;8x
+  dec d ;9x
   jr  nz,loadgametype
   ret
 
@@ -1284,13 +1303,10 @@ clroldsetsloop:
 hlatlevel: ;d must be 0
   psh hl ;loadgamecar
   ld  a,(Gametype) ;8bytes -> 7bytes
-  ld  e,a
-  add a,a ;nc
-  add a,e
-  add a,a ;8->2bytes
-  add a,28+1 ;go to datalevels
+  add a,a
   ld  e,a ;=de
-  sbc hl,de ;datalevels
+  ld  hl,datalevels
+  add hl,de
   cal _ldHLind ;ld hl,(hl)
   pop de ;de=loadgamecar
   inc de \ inc de
@@ -1542,8 +1558,8 @@ sethost:
   cal recvstuff
   pop hl ;loadgamecar
   pop de ;leveldata
-  ld  hl,templevels ;&&&&&&&
-  ld  de,datalink
+  ld  de,linklevel ;&&&&&&&
+  ld  hl,datalink
   psh de
   psh hl ;loadgamecar
   ld  b,8
@@ -1647,7 +1663,7 @@ setspeed:
   ld  de,peagrowth
   ldi
   ld  a,(hl)
-  ld  (worm1+grow),a
+  ld  (worm1+grow),a ;&&sh
   ld  (worm2+grow),a
   ld  (worm3+grow),a
   ld  (worm4+grow),a
@@ -3341,9 +3357,9 @@ nameshown:
   ret
 
 showstat: ;(multiplayer)
-  ld  a,(Gametype)
-  cp  gamedeathm
-  jr  z,showlives
+  ld  a,(wormbeglives)
+  or  a
+  jr  nz,showlives
 showscore:
   cal ldscoreinhl
   cal _D_HL_DECI
@@ -3978,7 +3994,7 @@ sendnewpeaoverlink:
   ld  a,(gameCar)
   rra ;and _datalink
   ret nc ;no link
-  ld  a,(ix+left)
+  ld  a,(worm1+left)
   or  a
   jr  z,receivenewpeaoverlink
   ld  c,l ;send pea's pos
@@ -4275,14 +4291,10 @@ txtGO:     .db 5,5,5,5,5," GAME OVER ",$CF,$CF,$CF,$CF,$CF,0
 #endif
 
 #ifdef intlevels
-datalevels: .dw LevelDef, LevelDefM
-            .dw LevelDefT,LevelDefM
-            .dw LevelDefM,LevelDefM,LevelDefM
+datalevels: .dw LevelDef, LevelDefM,LevelDefT
+            .dw LevelDefM,LevelDefM,LevelDefM,LevelDefM
             .dw LevelDefR,LevelDefC
 nrlevels:   .db 2,3,1,3,3,3,3,3,1,0     ;=defaults
-#else
-datalevels: .dw 0,0,0,0,0,0,0,0,0
-nrlevels:   .dw 0,0,0,0,0
 #endif
 
 _datalink      = %00000001 ;linkplay
@@ -4334,7 +4346,7 @@ worm3set:  .dw worm3p,worm3p
            .db %11111011,1,-01,K_COMMA,K_STO
 worm3name: .db "NIBBLER ",0
 worm4set:  .dw worm4p,worm4p
-           .db %11111011,0,-01,K_PLUS,K_ENTER
+           .db %11111101,0,-01,K_PLUS,K_ENTER
 worm4name: .db "JIM     ",0
 
 defhiscrpos: