; ����� ����� ������� �� ��� �����������
;_______________________________________________________________________________
;
-; 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
;* 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)
;_______________________________________________________________________________
; _/_/_____ __ _ _______ _ _ ______ _______
;--- 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 ---
#else
DispBuffer = $FC70
#endif
-lefttotalb = $AFFF
+linklevel = $AECC ;(<=134) @game+init
+lefttotalb = $BF91 ;(1) @game
drawctfpea1 = peaspos+4
drawctfpea2 = peaspos+6
.db %1010010
jr nz,$+47
dec l
- .db " 97% .15",0
+ .db " 97% .19",0
WormIcon:
.db 8,2
.db %00000000,%00111100
.db %00111100,%00111110
levelhead = 'w'
-levelhead2 = 95 ;wormy levels header = "95"
+levelhead2 = 97 ;wormy levels header = "97"
int_handler:
ex af,af'
inc bc
pop af
pop de ;counter
- dec d ;8x
+ dec d ;9x
jr nz,loadgametype
ret
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
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
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
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
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
#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
.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: