Jump to content
IGNORED

OPERATION SEA WOLF - BY MARK HANKINS


oddemann

Recommended Posts

The game "OPERATION SEA WOLF" looks to be missing lines. The games comes from "Computer & Video Games - Yearbook 1985" Did a search here and it dos not look to be present. The scan was really bad, I know there are a few lines that are bad. As it is now, it is missing data for some sounds.

Dos anyone have a good copy/scan of it or a complete listing of the game?

 

Spoiler
100 REM <--OPERATION SEA WOLF-->
110 REM <--BY MSOFT-->
120 REM <--(C) 1983 MSOFT-->
130 RESTORE
140 CALL CLEAR
150 CALL CHAR(128,"00B2FEE0C0C0C000")
160 PRINT TAB(6):"OPERATION SEA WOLF"::TAB(7):"BY MARK HANKINS"::TAB(9):"FOR C & VG"::::::::::
170 FOR A=3 TO 32 STEP 2
180 CALL HCHAR(1,A,128)
190 CALL HCHAR(24,A,128)
200 NEXT A
210 CALL VCHAR(1,3,128,24)
220 CALL VCHAR(1,31,128,24)
230 FOR A=1 TO 6
240 READ NOT,DUR
250 CALL SOUND(DUR,NOT,2)
260 NEXT A
270 V$="PRESS ANY KEY TO BEGIN!"
280 RO=20
290 CO=5
300 GOSUB 1170
310 CALL KEY(0,K,S)
320 CALL KEY(1,K,S1)
330 IF (S=0)*(S1=0) THEN 310
340 CALL CLEAR
350 PRINT "WOULD YOU LIKE INSTRUCTIONS(Y/N)?"
360 CALL KEY(0,K,S)
370 IF K=89 THEN 1230
380 IF K=78 THEN 390 ELSE 400
390 PRINT "PLEASE ENDER YOUR SKILL LEVEL - 0=EASY - 9=HARD"
400 CALL KEY(0,K,S)
410 IF S=0 THEN 400
420 IF (K<48)+(K>57) THEN 400
430 NSHIP=(K-48)*6+16
440 REM  DEFINE CHARACTERS
441 CALL CHAR(128,"FFFFFFFFFFFFFFFF"
450 CALL CHAR(136,"00030203FF7F3F1F"
460 CALL CHAR(137,"00B19E9CFEFEFEFE"
470 CALL CHAR(144,"000003031F3F1F00"
480 CALL CHAR(145,"00309090FBFCFB00"
490 CALL CHAR(146,"00007EFFFF7E0000"
500 CALL CHAR(152,"00"
510 REM SET UP SCREEN
520 CALL CLEAR
530 CALL SCREEN(5)
540 CALL COLOR(12,16,1)
541 CALL COLOR(13,15,1)
550 CALL COLOR(14,15,6)
560 CALL COLOR(15,12,1)
570 CALL COLOR(16,1,6)
580 CALL HCHAR(1,1,152,32*12)
581 CALL HCHAR(2,15,128)
582 CALL HCHAR(3,13,128,5)
583 CALL HCHAR(4,11,128,8)
584 CALL HCHAR(5,11,128,8)
585 CALL HCHAR(6,13,128,5)
590 CALL HCHAR(12,16,136)
600 CALL HCHAR(12,17,137)
610 V$="SCORE=:  0"
620 RO=1
630 CO=1
640 GOSUB 1170
650 REM SET UP GAME
660 SC=0
670 ROS=INT(8*RND)+13
680 PO=13
690 SH=0
700 Z=0
710 C=16
720 REM 
730 FOR Q=31 TO 3 STEP -2
740 CALL KEY()
750 IF K=13 THEN 990
760 RA=C+(K=83)-(K=68)
770 IF (RA<3)+(RA>30) THEN 890
780 IF RA<>C THEN 840
790 CALL JOYST(1,DX,DY)
800 RA=C+DX/4
810 RA=INT(32*((RA-1)/32-INT((RA-1)/32)))+1
820 CALL KEY(1,K,S)
830 IF K=18 THEN 990
840 CALL HCHAR(12,C,152,2)
850 CALL HCHAR(12,RA,136)
860 CALL HCHAR(12,RA+1,137)
870 C=RA
880 IF Z=1 THEN 1010
890 CALL HCHAR(ROS,5,32,28)
900 CALL HCHAR(ROS,Q,144)
910 CALL HCHAR(ROS,Q+1,145)
920 CALL SOUND(150,-1,0)
930 NEXT Q
940 SH=SH+1
950 IF SH=NSHIP THEN 1330
960 ROS=INT(8*RND)
970 GOTO 730
980 REM FIRE
990 Y=C
1000 IF Z=1 THEN 760
1010 FOR A=PO TO PO+3
1020 CALL GCHAR(A,Y,GET)
1030 CALL HCHAR(A,Y,146)
1040 IF GET=144 THEN 1430
1050 IF GET=145 THEN 1430
1060 CALL HCHAR(A,Y,32)
1070 NEXT A
1080 CALL SOUND(150,-3,0)
1090 PO=PO+3
1100 IF PO>=22 THEN 1140
1110 Z=1
1120 IF Q<3 THEN 940
1130 GOTO 890
1140 Z=0
1150 PO=13
1160 GOTO 890
1170 FOR A=1 TO LEN(V$)
1180 CH=ASC(SEG$(V$,A,1))
1190 CALL HCHAR(RO,CO+A,CH)
1200 NEXT A
1210 RETURN
1220 REM INSTRUCTIONS:
1230 CALL CLEAR
1240 PRINT "YOUR JOB IS TO STOP THE":"ENEMY SUBS FROM REACHING":"THE HARBOUR IN THE LEFT HAND":"CORNER."::
1250 PRINT :::"NOTE::":" THE FIRE KEY IS THE ENTER":" KEY":"S & D MOVE THE SHIP":::
1260 PRINT ::"IF USING THE JOYSTICKS USE":"JOYSTICK NO.:"
1270 PRINT "ANY KEY TO BEGIN"::
1280 CALL KEY(
1290 CALL KEY(
1300 IF (S=0)*(S1=0) THEN 1280
1310 CALL CLEAR
1320 GOTO 390
1330 CALL CLEAR
1340 PRINT "YOU HIT":SC/100:"SHIPS":"OUT OF MAXIMUM OF":NSHIP:"YOU SCORED":SC:"POINTS"

 


https://archive.org/details/ComputerAndVideoGamesYearbook1985/page/n127/mode/2up

Edited by oddemann
  • Like 2
Link to comment
Share on other sites

I am trying to make it go as fare as it can with the lines there is in this program and to also maybe understand what is missing.

So I added data for the sound, so it dos not stop on that. I adjusted the text a little and I am now stuck at "Would you like instructions(Y/N)?" Everything looks OK, but it dos not respond to Y or N. Also around 300 and in the looking for a "key push" it jumps past asking for what lvl you want... I think. Also I tried trace and it helped me understand some more of the program, but not why it dos not respond to CALL KEY. Anyone?

 

Spoiler
100 REM <--OPERATION SEA WOLF-->
110 REM <--BY MSOFT-->
120 REM <--(C) 1983 MSOFT-->
130 RESTORE
140 CALL CLEAR
150 CALL CHAR(128,"0082FEE0C0C0C000")
160 PRINT TAB(6):"  OPERATION SEA WOLF"::TAB(7):"  BY MARK HANKINS"::TAB(9):"  FOR C & VG"::::::::::
170 FOR A=3 TO 32 STEP 2
180 CALL HCHAR(1,A,128)
190 CALL HCHAR(24,A,128)
200 NEXT A
210 CALL VCHAR(1,3,128,24)
220 CALL VCHAR(1,31,128,24)
230 FOR A=1 TO 6
240 READ NOT,DUR
250 CALL SOUND(DUR,NOT,2)
260 NEXT A
270 V$="PRESS ANY KEY TO BEGIN!"
280 RO=20
290 CO=5
300 GOSUB 1170
310 CALL KEY(0,K,S)
320 CALL KEY(1,K,S1)
330 IF (S=0)*(S1=0) THEN 310
340 CALL CLEAR
350 PRINT "WOULD YOU LIKE INSTRUCTIONS (Y/N)?"
360 CALL KEY(0,K,S)
370 IF K=89 THEN 1230
380 IF K=78 THEN 390 ELSE 400
390 PRINT "PLEASE ENDER YOUR SKILL LEVEL - 0=EASY - 9=HARD"
400 CALL KEY(0,K,S)
410 IF S=0 THEN 400
420 IF (K<48)+(K>57) THEN 400
430 NSHIP=(K-48)*6+16
440 REM  DEFINE CHARACTERS
441 CALL CHAR(128,"FFFFFFFFFFFFFFFF"
450 CALL CHAR(136,"00030203FF7F3F1F"
460 CALL CHAR(137,"00B19E9CFEFEFEFE"
470 CALL CHAR(144,"000003031F3F1F00"
480 CALL CHAR(145,"00309090FBFCFB00"
490 CALL CHAR(146,"00007EFFFF7E0000"
500 CALL CHAR(152,"00"
510 REM SET UP SCREEN
520 CALL CLEAR
530 CALL SCREEN(5)
540 CALL COLOR(12,16,1)
541 CALL COLOR(13,15,1)
550 CALL COLOR(14,15,6)
560 CALL COLOR(15,12,1)
570 CALL COLOR(16,1,6)
580 CALL HCHAR(1,1,152,32*12)
581 CALL HCHAR(2,15,128)
582 CALL HCHAR(3,13,128,5)
583 CALL HCHAR(4,11,128,8)
584 CALL HCHAR(5,11,128,8)
585 CALL HCHAR(6,13,128,5)
590 CALL HCHAR(12,16,136)
600 CALL HCHAR(12,17,137)
610 V$="SCORE=:  0"
620 RO=1
630 CO=1
640 GOSUB 1170
650 REM SET UP GAME
660 SC=0
670 ROS=INT(8*RND)+13
680 PO=13
690 SH=0
700 Z=0
710 C=16
720 REM 
730 FOR Q=31 TO 3 STEP -2
740 CALL KEY()
750 IF K=13 THEN 990
760 RA=C+(K=83)-(K=68)
770 IF (RA<3)+(RA>30) THEN 890
780 IF RA<>C THEN 840
790 CALL JOYST(1,DX,DY)
800 RA=C+DX/4
810 RA=INT(32*((RA-1)/32-INT((RA-1)/32)))+1
820 CALL KEY(1,K,S)
830 IF K=18 THEN 990
840 CALL HCHAR(12,C,152,2)
850 CALL HCHAR(12,RA,136)
860 CALL HCHAR(12,RA+1,137)
870 C=RA
880 IF Z=1 THEN 1010
890 CALL HCHAR(ROS,5,32,28)
900 CALL HCHAR(ROS,Q,144)
910 CALL HCHAR(ROS,Q+1,145)
920 CALL SOUND(150,-1,0)
930 NEXT Q
940 SH=SH+1
950 IF SH=NSHIP THEN 1330
960 ROS=INT(8*RND)
970 GOTO 730
980 REM FIRE
990 Y=C
1000 IF Z=1 THEN 760
1010 FOR A=PO TO PO+3
1020 CALL GCHAR(A,Y,GET)
1030 CALL HCHAR(A,Y,146)
1040 IF GET=144 THEN 1430
1050 IF GET=145 THEN 1430
1060 CALL HCHAR(A,Y,32)
1070 NEXT A
1080 CALL SOUND(150,-3,0)
1090 PO=PO+3
1100 IF PO>=22 THEN 1140
1110 Z=1
1120 IF Q<3 THEN 940
1130 GOTO 890
1140 Z=0
1150 PO=13
1160 GOTO 890
1170 FOR A=1 TO LEN(V$)
1180 CH=ASC(SEG$(V$,A,1))
1190 CALL HCHAR(RO,CO+A,CH)
1200 NEXT A
1210 RETURN
1220 REM INSTRUCTIONS:
1230 CALL CLEAR
1240 PRINT "YOUR JOB IS TO STOP THE":"ENEMY SUBS FROM REACHING":"THE HARBOUR IN THE LEFT HAND":"CORNER."::
1250 PRINT :::"NOTE::":" THE FIRE KEY IS THE ENTER":" KEY":"S & D MOVE THE SHIP":::
1260 PRINT ::"IF USING THE JOYSTICKS USE":"JOYSTICK NO.:"
1270 PRINT "ANY KEY TO BEGIN"::
1280 CALL KEY(
1290 CALL KEY(
1300 IF (S=0)*(S1=0) THEN 1280
1310 CALL CLEAR
1320 GOTO 390
1330 CALL CLEAR
1340 PRINT "YOU HIT":SC/100:"SHIPS":"OUT OF MAXIMUM OF":NSHIP:"YOU SCORED":SC:"POINTS"

1500 DATA 110,10,120,10,130,10,140,10,150,10,160,10

 

 

Link to comment
Share on other sites

This is a version I had saved and it haven't the music DATA too and still had some problems but it works a bit more compared to your one:

 

Spoiler
100 REM  <--OPERATION SEA WOLF--> 
110 REM  <--BY MSOFT--> 
120 REM  <--(C) 1983 MSOFT-->     
130 RESTORE
140 CALL CLEAR
150 CALL CHAR(128,"0082FEE0C0C0C000")
160 PRINT TAB(6);"OPERATION SEA WOLF": :TAB(7);"BY MARK HANKINS": :TAB(9);"FOR C & VG": : : : : : : : : :
170 FOR A=3 TO 32 STEP 2
180 CALL HCHAR(1,A,128)
190 CALL HCHAR(24,A,128)
200 NEXT A
210 CALL VCHAR(1,3,128,24)
220 CALL VCHAR(1,31,128,24)
230 FOR A=1 TO 6
240 REM  READ NOT,DUR 
250 REM  CALL SOUND(DUR,NOT,2) 
260 NEXT A
270 V$="PRESS ANY KEY TO BEGIN"
280 RO=20
290 CO=5
300 GOSUB 1170
310 CALL KEY(0,K,S)
320 CALL KEY(1,K,S1)
330 IF(S=0)*(S1=0)THEN 310
340 CALL CLEAR
350 PRINT "WOULD YOU LIKE INSTRUCTIONS (Y/N)?"
360 CALL KEY(0,K,S)
370 IF K=89 THEN 1230
380 IF K=78 THEN 390 ELSE 360
390 PRINT "PLEASE ENTER YOUR SKILL LEVEL 0(EASY)-9(HARD)"
400 CALL KEY(0,K,S)
410 IF S=0 THEN 400
420 IF(K<48)+(K>57)THEN 400
430 NSHIP=(K-48)*6+16
440 REM   DEFINE CHARACTERS 
441 CALL CHAR(128,"FFFFFFFFFFFFFFFF")
450 CALL CHAR(136,"00030203FF7F3F1F")
460 CALL CHAR(137,"00819E9CFEFEFEFE")
470 CALL CHAR(144,"000003031F3F1F00")
480 CALL CHAR(145,"00309090F8FCF800")
490 CALL CHAR(146,"00007EFFFF7E0000")
500 CALL CHAR(152,"00")
510 REM  SET UP SCREEN 
520 CALL CLEAR
530 CALL SCREEN(5)
540 CALL COLOR(12,16,1)
541 CALL COLOR(13,15,1)
550 CALL COLOR(14,15,6)
560 CALL COLOR(15,12,1)
570 CALL COLOR(16,1,6)
580 CALL HCHAR(1,1,152,32*12)
581 CALL HCHAR(2,15,128)
582 CALL HCHAR(3,13,128,5)
583 CALL HCHAR(4,11,128,8)
584 CALL HCHAR(5,11,128,8)
585 CALL HCHAR(6,13,128,5)
590 CALL HCHAR(12,16,136)
600 CALL HCHAR(12,17,137)
610 V$="SCORE=:  0"
620 RO=1
630 CO=1
640 GOSUB 1170
650 REM   SET UP GAME 
660 SC=0
670 ROS=INT(8*RND)+13
680 PO=13
690 SH=0
700 Z=0
710 C=16
720 REM   SUB MOVEMENT 
730 FOR Q=31 TO 3 STEP-2
740 CALL KEY(3,K,S)
750 IF K=13 THEN 990
760 RA=C+(K=83)-(K=68)
770 IF(RA<3)+(RA>30)THEN 890
780 IF RA<>C THEN 840
790 CALL JOYST(1,DX,DY)
800 RA=C+DX/4
810 RA=INT(32*((RA-1)/32-INT((RA-1)/32)))+1
820 CALL KEY(1,K,S)
830 IF K=18 THEN 990
840 CALL HCHAR(12,C,152,2)
850 CALL HCHAR(12,RA,136)
860 CALL HCHAR(12,RA+1,137)
870 C=RA
880 IF Z=1 THEN 1010
890 CALL HCHAR(ROS,5,32,28)
900 CALL HCHAR(ROS,Q,144)
910 CALL HCHAR(ROS,Q+1,145)
920 CALL SOUND(150,-1,0)
930 NEXT Q
940 SH=SH+1
950 IF SH=NSHIP THEN 1330
960 ROS=INT(8*RND)+13
970 GOTO 730
980 REM  FIRE 
990 Y=C
1000 IF Z=1 THEN 760
1010 FOR A=PO TO PO+3
1020 CALL GCHAR(A,Y,GET)
1030 CALL HCHAR(A,Y,146)
1040 IF GET=144 THEN 1430
1050 IF GET=145 THEN 1430
1060 CALL HCHAR(A,Y,32)
1070 NEXT A
1080 CALL SOUND(150,-3,0)
1090 PO=PO+3
1100 IF PO>=22 THEN 1140
1110 Z=1
1120 IF Q<3 THEN 940
1130 GOTO 890
1140 Z=0
1150 PO=13
1160 GOTO 890
1170 FOR A=1 TO LEN(V$)
1180 CH=ASC(SEG$(V$,A,1))
1190 CALL HCHAR(RO,CO+A,CH)
1200 NEXT A
1210 RETURN
1220 REM  INSTRUCTIONS: 
1230 CALL CLEAR
1240 PRINT "YOUR JOB IS TO STOP THE":"ENEMY SUBS FROM REACHING":"THE HARBOUR IN THE LEFT HAND":"CORNER.": :
1250 PRINT : : :"NOTE:": :" THE FIRE KEY IS THE ENTER":" KEY.": :"'S'&'D' MOVE THE SHIP": : :
1260 PRINT : :"IF USING THE JOYSTICKS USE":"JOYSTICK NO.1"
1270 PRINT "ANY KEY TO BEGIN": :
1280 CALL KEY(0,K,S)
1290 CALL KEY(1,K,S1)
1300 IF(S=0)*(S1=0)THEN 1280
1310 CALL CLEAR
1320 GOTO 390
1330 CALL CLEAR
1340 PRINT "YOU HIT":SC/100;"SHIPS":"OUT OF MAXIMUM OF";NSHIP:"YOU SCORED":SC;"POINTS"

 


image.thumb.png.5fa8ee60a87741f9e59cbfa51f90cacd.png

Edited by ti99iuc
  • Like 1
Link to comment
Share on other sites

I found SEAWOLF from Virgin... To me it looks like this is something of the same thing. I see that this i programmed smarter. BUT... I am not all that good, to me it looks like a copy of what I started with. I found some of the same stuff. But I think that SEAWOLF might be a better version.

What dos the experts say?

 

Spoiler
80 GOSUB 5000
90 DIM TORP(3)
100 RANDOMIZE
105 CALL CLEAR
106 SH=0
107 DIVE=0
110 CALL CHAR(112,"0")
120 CALL SCREEN(2)
125 CALL CHAR(88,"0")
130 CALL CHAR(120,"0000000000003C3C")
140 CALL CHAR(121,"0000003C3C")
150 CALL CHAR(122,"3C3C")
152 CALL CHAR(123,"0000000000001818")
154 CALL CHAR(124,"0000001818")
156 CALL CHAR(125,"1818")
158 CALL CHAR(126,"0")
160 CALL CHAR(128,"0")
170 CALL CHAR(136,"183C183C183C183C")
180 CALL CHAR(137,"0000AAFFFFAA")
190 CALL CHAR(138,"183C99FFFF993C18")
200 CALL CHAR(144,"000032498431CA04")
210 CALL CHAR(152,"00000000FFFEFCF8")
220 CALL CHAR(153,"00000000FFFFFFFF")
230 CALL CHAR(154,"00041C3EFFFF7F7F")
240 CALL CHAR(155,"00000080E0FF5EFC")
250 CALL CHAR(156,"006363FFFFFF55FF")
260 CALL CHAR(157,"000000010FFFF57F")
270 CALL CHAR(158,"20303C3C3C3C3C3C")
280 CALL CHAR(96,"00203CFF7F")
290 CALL CHAR(104,"24995A3C995A3CFF")
300 GOTO 600
350 TORP(1)=20
360 TORP(2)=0
362 TORP(3)=0
365 DIVE=0
370 PR$="TOR"
380 Z=3
385 ZC=26
390 GOSUB 440
400 PR$="SUNK"
410 Z=6
420 GOSUB 440
422 PR$="SCORE"
424 Z=9
426 GOSUB 440
428 GOSUB 500
430 GOTO 710
440 FOR I=1 TO LEN(PR$)
450 CALL HCHAR(Z,ZC+I,ASC(SEG$(PR$,I,1)))
455 CALL SOUND(-100,-5,20)
460 NEXT I
470 RETURN
500 Z=4
505 FOR I=1 TO 3
510 PR$=" "&STR$(TORP(I))
520 Q=LEN(PR$)
530 FOR J=1 TO Q
540 CALL HCHAR(Z,(28-Q)+J,ASC(SEG$(PR$,J,1)))
550 CALL SOUND(-100,-3,20)
560 NEXT J
570 Z=Z+3
580 NEXT I
590 RETURN
600 FOR I=3 TO 8
610 CALL COLOR(I,11,2)
620 NEXT I
621 CALL COLOR(8,6,6)
622 CALL COLOR(9,5,4)
625 CALL COLOR(10,7,11)
630 CALL COLOR(11,4,4)
640 CALL COLOR(12,6,5)
650 CALL COLOR(13,2,2)
660 CALL COLOR(14,2,4)
670 CALL COLOR(15,13,5)
675 CALL COLOR(16,2,6)
676 CALL COLOR(1,2,2)
680 CALL SCREEN(6)
690 CALL HCHAR(1,1,128,768)
700 GOTO 350
710 FOR I=15 TO 23
720 CALL HCHAR(I,8,112,9)
730 NEXT I
740 CALL HCHAR(19,8,137,9)
750 CALL VCHAR(15,12,136,9)
760 CALL HCHAR(19,12,138)
770 GOTO 4000
1000 REM    dive 
1010 FOR I=13 TO 4 STEP-1
1020 CALL HCHAR(I,4,128,17)
1030 FOR DELAY=1 TO 100
1040 NEXT DELAY
1050 NEXT I
1060 SH=0
1070 DIVE=0
1080 RETURN
1100 REM    surface 
1110 FOR I=4 TO 8
1120 CALL HCHAR(I,4,88,17)
1130 FOR DELAY=1 TO 100
1140 NEXT DELAY
1145 NEXT I
1150 FOR I=9 TO 13
1160 CALL HCHAR(I,4,144,17)
1170 FOR DELAY=1 TO 100
1180 NEXT DELAY
1190 NEXT I
1200 MOVE=1
1210 DIVE=1
1220 RETURN
1300 REM    ship 
1310 IF DIVE=1 THEN 1330
1315 SH=0
1320 RETURN
1330 A=INT(RND*10)
1340 IF A>7 THEN 1370
1350 SH=152
1360 GOTO 1380
1370 SH=155
1380 CALL HCHAR(8,4,SH)
1390 FOR DELAY=1 TO 50
1400 NEXT DELAY
1410 CALL HCHAR(8,5,SH)
1420 CALL HCHAR(8,4,SH+1)
1430 FOR DELAY=1 TO 50
1440 NEXT DELAY
1450 CALL HCHAR(8,6,SH)
1460 CALL HCHAR(8,5,SH+1)
1470 CALL HCHAR(8,4,SH+2)
1480 SC=6
1520 A=INT(RND*2)+1
1530 SC=SC+A
1535 IF SC>20 THEN 1600
1540 CALL HCHAR(8,SC,SH)
1550 CALL HCHAR(8,SC-1,SH+1)
1555 CALL HCHAR(8,SC-2,SH+2)
1560 CALL HCHAR(8,(SC-2)-A,88,A)
1570 RETURN
1600 CALL HCHAR(8,20,SH+1)
1610 CALL HCHAR(8,19,SH+2)
1620 CALL HCHAR(8,12,88,7)
1630 FOR DELAY=1 TO 50
1640 NEXT DELAY
1650 CALL HCHAR(8,20,SH+2)
1660 CALL HCHAR(8,19,88)
1670 FOR DELAY=1 TO 50
1680 NEXT DELAY
1690 CALL HCHAR(8,20,88)
1700 SH=0
1710 RETURN
1800 REM    fire torpedo 
1810 IF TORP(1)>0 THEN 1815
1812 RETURN
1815 TORP(1)=TORP(1)-1
1820 CALL SOUND(1000,-5,20)
1830 TOR=1
1840 II=13
1850 IF II<11 THEN 1884
1851 IF II=13 THEN 1855
1852 CALL HCHAR(II+1,12,126)
1855 FOR J=1 TO 3
1860 CALL HCHAR(II,12,119+J)
1865 FOR DELAY=1 TO 50
1870 NEXT DELAY
1875 NEXT J
1880 GOTO 1910
1884 CALL HCHAR(II+1,12,126)
1885 FOR J=1 TO 3
1890 CALL HCHAR(II,12,122+J)
1895 FOR DELAY=1 TO 50
1900 NEXT DELAY
1905 NEXT J
1910 II=II-1
1915 IF II=8 THEN 1940
1920 RETURN
1940 CALL GCHAR(8,12,XXX)
1950 IF XXX<89 THEN 1970
1960 GOSUB 2000
1970 GOSUB 500
1975 TOR=0
1980 CALL VCHAR(9,12,144,5)
1990 RETURN
2000 REM     hit ship 
2010 CALL SOUND(2000,-5,20,110,25)
2020 CALL HCHAR(8,12,104)
2025 GOSUB 2192
2030 CALL COLOR(10,11,7)
2040 CALL COLOR(10,7,11)
2045 GOSUB 2192
2050 CALL SCREEN(7)
2060 CALL SCREEN(12)
2070 CALL SCREEN(10)
2080 CALL SCREEN(6)
2090 CALL HCHAR(8,10,88,5)
2100 CALL HCHAR(8,12,158)
2110 FOR DELAY=1 TO 500
2120 NEXT DELAY
2130 CALL HCHAR(8,12,88)
2140 TORP(2)=TORP(2)+1
2150 SH=0
2160 TORP(3)=TORP(3)+(XXX-151)*10
2190 RETURN
2192 FOR DELAY=1 TO 200
2194 NEXT DELAY
2196 RETURN
2200 REM    radar 
2210 EMRA=INT(RND*50)+1
2220 RADAR=1
2230 EMR=17
2240 EMC=15
2250 RS=112
2260 EMR1=17
2270 EMC1=15
2280 RS1=112
2290 CALL HCHAR(EMR,EMC,96)
2300 CALL SOUND(1000,110,20)
2310 RETURN
2350 EMRA=EMRA-1
2355 IF EMRA>0 THEN 2360
2356 CALL HCHAR(EMR,EMC,RS)
2357 RADAR=0
2358 RETURN
2360 M=INT(RND*2)
2370 N=INT(RND*2)
2380 Q=INT(RND*3)+1
2390 ON Q GOTO 2410,2440,2470,2500
2400 GOTO 2380
2410 EMR=EMR+M
2420 EMC=EMC+N
2430 GOTO 2520
2440 EMR=EMR+M
2450 EMC=EMC-(N+1)
2460 GOTO 2520
2470 EMR=EMR-M
2480 EMC=EMC+N
2490 GOTO 2520
2500 EMR=EMR-M
2510 EMC=EMC-(N+1)
2520 CALL GCHAR(EMR,EMC,RS)
2525 IF RS=96 THEN 2550
2530 IF RS=138 THEN 3000
2540 IF RS<>128 THEN 2580
2550 EMR=EMR1
2560 EMC=EMC1
2565 RS=RS1
2570 RETURN
2580 CALL HCHAR(EMR,EMC,96)
2590 CALL HCHAR(EMR1,EMC1,RS1)
2600 EMR1=EMR
2610 EMC1=EMC
2620 RS1=RS
2630 RETURN
2700 REM    move 
2710 FOR I=1 TO 2
2720 CALL KEY(0,K,S)
2730 IF S=0 THEN 2750
2740 GOSUB 2800
2750 NEXT I
2760 RETURN
2800 IF RADAR=0 THEN 2760
2805 IF K<>88 THEN 2830
2810 EMR=EMR-1
2820 GOTO 2910
2830 IF K<>69 THEN 2860
2840 EMR=EMR+1
2850 GOTO 2910
2860 IF K<>83 THEN 2890
2870 EMC=EMC+1
2880 GOTO 2910
2890 IF K<>68 THEN 2920
2900 EMC=EMC-1
2910 GOSUB 2520
2920 RETURN
3000 REM   hit by enemy 
3005 CALL HCHAR(EMR,EMC,96)
3007 CALL HCHAR(EMR1,EMC1,RS1)
3010 CALL SOUND(2000,-5,20,110,25)
3015 IF DIVE=1 THEN 3210
3020 CALL COLOR(13,12,12)
3030 CALL COLOR(13,11,11)
3040 CALL COLOR(13,9,9)
3050 CALL COLOR(13,7,7)
3055 CALL COLOR(8,11,2)
3060 PR$="HARD LINES YOU VE BEEN HIT BY"
3070 Z=2
3080 ZC=2
3090 GOSUB 440
3100 PR$="A DEPTH CHARGE"
3110 Z=3
3120 GOSUB 440
3130 PR$="PRESS Y TO PLAY AGAIN"
3140 Z=14
3150 GOSUB 440
3160 CALL KEY(0,K,S)
3170 IF S=0 THEN 3160
3180 IF K<>89 THEN 3200
3190 GOTO 100
3200 END
3210 DC=INT(RND*20)
3212 GOTO 3449
3215 DI=13
3220 CALL KEY(0,K,S)
3230 IF S=0 THEN 3260
3240 IF K<>74 THEN 3260
3250 GOTO 3300
3260 DC=DC-1
3270 IF DC>0 THEN 3280
3275 DIVE=0
3277 GOTO 3005
3280 CALL SOUND(-100,110,20)
3290 IF DIVE=1 THEN 3220
3300 CALL HCHAR(DI,4,128,17)
3310 FOR DELAY=1 TO 100
3320 NEXT DELAY
3330 DIVE=0
3335 SH=0
3340 DI=DI-1
3350 IF DI=3 THEN 3400
3360 GOTO 3260
3400 FOR DELAY=1 TO 1000
3410 NEXT DELAY
3420 CALL HCHAR(EMR,EMC,138)
3430 RADAR=0
3445 GOTO 4000
3449 FOR XX=1 TO 3
3450 FOR YY=200 TO 900 STEP 100
3460 CALL SOUND(-100,YY,5)
3470 NEXT YY
3475 NEXT XX
3480 GOTO 3215
4000 REM     main program 
4003 CALL SOUND(-100,1000,15,2000,20)
4005 CALL SOUND(-100,3000,10)
4010 CALL KEY(0,K,S)
4020 IF S=0 THEN 4090
4030 IF K<>85 THEN 4060
4040 IF DIVE=1 THEN 4090
4050 GOSUB 1100
4060 IF K<>74 THEN 4090
4070 IF DIVE=0 THEN 4090
4080 GOSUB 1000
4090 IF SH>0 THEN 4140
4100 QQ=INT(RND*50)
4110 IF QQ>5 THEN 4130
4120 GOSUB 1300
4130 GOTO 4150
4140 GOSUB 1520
4150 IF DIVE=1 THEN 4160
4155 TOR=0
4156 GOTO 4200
4160 IF TOR=1 THEN 4210
4170 CALL KEY(0,K,S)
4175 IF S=0 THEN 4200
4180 IF K<>32 THEN 4200
4190 GOSUB 1800
4200 GOTO 4220
4210 GOSUB 1850
4220 IF RADAR=1 THEN 4270
4230 QQ=INT(RND*100)
4240 IF QQ>5 THEN 4275
4250 GOSUB 2200
4260 GOTO 4275
4270 GOSUB 2350
4275 IF DIVE=1 THEN 4290
4280 GOSUB 2700
4290 IF TOR=1 THEN 4000
4300 IF TORP(1)<1 THEN 4315
4310 GOTO 4000
4315 CALL COLOR(8,11,2)
4320 PR$="YOU VE NO MORE TORPEDOES"
4330 Z=3
4340 ZC=2
4350 GOSUB 440
4360 GOTO 3130
5000 CALL CLEAR
5005 PRINT TAB(8);"COPYRIGHT 1984"
5006 PRINT "    VIRGIN GAMES LIMITED": : : :
5010 PRINT TAB(8);"**************"
5020 PRINT TAB(8);"*            *"
5030 PRINT TAB(8);"*  SEA WOLF  *"
5040 PRINT TAB(8);"*            *"
5060 PRINT TAB(8);"*    by      *"
5070 PRINT TAB(8);"*            *"
5080 PRINT TAB(8);"*P J FINKILL *"
5090 PRINT TAB(8);"*            *"
5100 PRINT TAB(8);"**************": : : : : : : : :
5110 PRINT "hit any key to continue."
5120 CALL KEY(3,K,S)
5130 IF S=0 THEN 5120
5140 CALL CLEAR
5150 PRINT "      INSTRUCTIONS"
5160 PRINT "      ************": : :
5170 PRINT "you are the commander of a  submarine and your task is  to sink as many of the enemy"
5180 PRINT "ships as possible with your supply of twenty torpedoes.": :
5190 PRINT "there are two different     types of ships to sink :-"
5200 PRINT "    1.tankers "
5210 PRINT "    2.supply ships": :
5220 PRINT "of the two the supply ships score the most points."
5230 PRINT "the number of points scored depends on where you hit theship.": :
5232 PRINT:
5234 PRINT "hit any key to continue."
5236 CALL KEY(3,K,S)
5237 IF S=0 THEN 5236
5238 CALL CLEAR
5240 PRINT "watch your radar as there   are submarine destroyers    searching for you."
5250 PRINT "they have found you when    they are in the centre of   your radar.": :
5255 PRINT "if you have the periscope upwhen the warship finds you  then you will hear an alarm "
5256 PRINT "if you are quick to dive    then you may escape !": : : : :
5260 PRINT "HIT ANY KEY TO CONTINUE."
5270 CALL KEY(3,K,S)
5280 IF S=0 THEN 5270
5290 CALL CLEAR
5300 PRINT "     directions"
5310 PRINT "     ----------"
5320 PRINT: : :
5330 PRINT " U = up periscope."
5340 PRINT " J = down periscope.": :
5350 PRINT " SPACE BAR = fire torpedo.": :
5360 PRINT " E = up"
5370 PRINT " X = down"
5380 PRINT " S = left"
5390 PRINT " D = right": : : :
5400 PRINT "hit any key to continue."
5410 CALL KEY(3,K,S)
5420 IF S=0 THEN 5410
5430 RETURN

 

 

Link to comment
Share on other sites

 There are two lines that points to lines NOT in the listing...

1040 and 1050 points to 1430... and I think it is the "explosion" of the submarine. It is looking for if any part of the Submarine is hit. (Char 144 or 145)
Also a counter of hits.

This is "fixed", but some new problems... Will let my brain rest now 😛

Also got a new issue with line 1070, guess it has something to do with for-next loop. But... later...


 

Spoiler
100 REM <--OPERATION SEA WOLF-->
110 REM <--BY MSOFT-->
120 REM <--(C) 1983 MSOFT-->
130 RESTORE
140 CALL CLEAR
150 CALL CHAR(128,"0082FEE0C0C0C000")
160 PRINT TAB(6);"OPERATION SEA WOLF"::TAB(7);"BY MARK HANKINS"::TAB(9);"FOR C & VG"::::::::::
170 FOR A=3 TO 32 STEP 2
180 CALL HCHAR(1,A,128)
190 CALL HCHAR(24,A,128)
200 NEXT A
210 CALL VCHAR(1,3,128,24)
220 CALL VCHAR(1,31,128,24)
230 FOR A=1 TO 6
240 READ NOT,DUR
250 CALL SOUND(DUR,NOT,2)
260 NEXT A
270 V$="PRESS ANY KEY TO BEGIN!"
280 RO=20
290 CO=5
300 GOSUB 1170
310 CALL KEY(0,K,S)
320 CALL KEY(1,K,S1)
330 IF (S=0)*(S1=0) THEN 310
340 CALL CLEAR
350 PRINT "WOULD YOU LIKE INSTRUCTIONS (Y/N)?"
360 CALL KEY(0,K,S)
370 IF K=89 THEN 1230
380 IF K=78 THEN 390 ELSE 360
390 PRINT "PLEASE ENTER YOUR SKILL LEVEL 0(EASY)-9(HARD)"
400 CALL KEY(0,K,S)
410 IF S=0 THEN 400
420 IF (K<48)+(K>57) THEN 400
430 NSHIP=(K-48)*6+16
440 REM  DEFINE CHARACTERS
441 CALL CHAR(128,"FFFFFFFFFFFFFFFF")
450 CALL CHAR(136,"00030203FF7F3F1F")
460 CALL CHAR(137,"00B19E9CFEFEFEFE")
470 CALL CHAR(144,"000003031F3F1F00")
480 CALL CHAR(145,"00309090FBFCFB00")
490 CALL CHAR(146,"00007EFFFF7E0000")
491 CALL CHAR(147,"91482559A22A5584")
492 CALL CHAR(148,"0044092628080648")
493 CALL CHAR(149,"0004210028025000")
494 CALL CHAR(150,"0000100220080000")
500 CALL CHAR(152,"00")
510 REM SET UP SCREEN
520 CALL CLEAR
530 CALL SCREEN(5)
540 CALL COLOR(12,16,1)
541 CALL COLOR(13,15,1)
550 CALL COLOR(14,15,6)
560 CALL COLOR(15,12,1)
570 CALL COLOR(16,1,6)
580 CALL HCHAR(1,1,152,32*12)
581 CALL HCHAR(2,15,128)
582 CALL HCHAR(3,13,128,5)
583 CALL HCHAR(4,11,128,8)
584 CALL HCHAR(5,11,128,8)
585 CALL HCHAR(6,13,128,5)
590 CALL HCHAR(12,16,136)
600 CALL HCHAR(12,17,137)
610 V$="SCORE=:  0"
620 RO=1
630 CO=1
640 GOSUB 1170
650 REM SET UP GAME
660 SC=0
670 ROS=INT(8*RND)+13
680 PO=13
690 SH=0
700 Z=0
710 C=16
720 REM SUB MOVEMENT
730 FOR Q=31 TO 3 STEP-2
740 CALL KEY(3,K,S)
750 IF K=13 THEN 990
760 RA=C+(K=83)-(K=68)
770 IF (RA<3)+(RA>30) THEN 890
780 IF RA<>C THEN 840
790 CALL JOYST(1,DX,DY)
800 RA=C+DX/4
810 RA=INT(32*((RA-1)/32-INT((RA-1)/32)))+1
820 CALL KEY(1,K,S)
830 IF K=18 THEN 990
840 CALL HCHAR(12,C,152,2)
850 CALL HCHAR(12,RA,136)
860 CALL HCHAR(12,RA+1,137)
870 C=RA
880 IF Z=1 THEN 1010
890 CALL HCHAR(ROS,5,32,28)
900 CALL HCHAR(ROS,Q,144)
910 CALL HCHAR(ROS,Q+1,145)
920 CALL SOUND(150,-1,0)
930 NEXT Q
940 SH=SH+1
950 IF SH=NSHIP THEN 1330
960 ROS=INT(8*RND)+13
970 GOTO 730
980 REM FIRE
990 Y=C
1000 IF Z=1 THEN 760
1010 FOR A=PO TO PO+3
1020 CALL GCHAR(A,Y,GET)
1030 CALL HCHAR(A,Y,146)
1040 IF GET=144 THEN 1430
1050 IF GET=145 THEN 1430
1060 CALL HCHAR(A,Y,32)
1070 NEXT A
1080 CALL SOUND(150,-3,0)
1090 PO=PO+3
1100 IF PO>=22 THEN 1140
1110 Z=1
1120 IF Q<3 THEN 940
1130 GOTO 890
1140 Z=0
1150 PO=13
1160 GOTO 890
1170 FOR A=1 TO LEN(V$)
1180 CH=ASC(SEG$(V$,A,1))
1190 CALL HCHAR(RO,CO+A,CH)
1200 NEXT A
1210 RETURN
1220 REM INSTRUCTIONS:
1230 CALL CLEAR
1240 PRINT "YOUR JOB IS TO STOP THE":"ENEMY SUBS FROM REACHING":"THE HARBOUR IN THE LEFT HAND":"CORNER."::
1250 PRINT :::"NOTE::":" THE FIRE KEY IS THE ENTER":" KEY":"S & D MOVE THE SHIP":::
1260 PRINT ::"IF USING THE JOYSTICKS USE":"JOYSTICK NO.:"
1270 PRINT "ANY KEY TO BEGIN"::
1280 CALL KEY(0,K,S)
1290 CALL KEY(1,K,S1)
1300 IF (S=0)*(S1=0) THEN 1280
1310 CALL CLEAR
1320 GOTO 390
1330 CALL CLEAR
1340 PRINT "YOU HIT":SC/100:"SHIPS":"OUT OF MAXIMUM OF":NSHIP:"YOU SCORED":SC:"POINTS"

1430 REM BANG
1431 REM NEED TO STOP THE SUBMARINE AFTER HIT!
1432 REM ADD EXPLOTION, AS NOW IT DOS NOT WORK
1433 REM GET A BETTER EXPLOTION SOUND
1434 REM

1440 FOR BANG= 147 to 150
1445 CALL SOUND(1000,110,2,-3,3,440,4)
1450 CALL HCHAR(A,Y,I)
1460 CALL HCHAR(A,Y-1,I)
1470 NEXT BANG
1480 SC=SC+100
1485 REM V$="SCORE=:  0" – ADD SCORE ON SCREEN???
1490 GOTO 1060


1500 DATA 110,10,120,10,130,10,140,10,150,10,160,10

 

 

Edited by oddemann
Found bugs in my ver.
Link to comment
Share on other sites

41 minutes ago, oddemann said:

Also got a new issue with line 1070, guess it has something to do with for-next loop.

 

You can branch out of a FOR...NEXT loop, but you cannot branch into one, which is what is happening in 1490. You should use GOSUB instead of GOTO:

   .
   .
   .
1010 FOR A=PO TO PO+3
1020 CALL GCHAR(A,Y,GET)
1030 CALL HCHAR(A,Y,146)
1040 IF (GET<>144)*(GET<>145) THEN 1060
1050 GOSUB 1430
1060 CALL HCHAR(A,Y,32)
1070 NEXT A
   .
   .
   .
1430 REM BANG SUBROUTINE
1431 REM NEED TO STOP THE SUBMARINE AFTER HIT!
1432 REM ADD EXPLOTION, AS NOW IT DOS NOT WORK
1433 REM GET A BETTER EXPLOTION SOUND
1434 REM

1440 FOR BANG= 147 to 150
1445 CALL SOUND(1000,110,2,-3,3,440,4)
1450 CALL HCHAR(A,Y,I)
1460 CALL HCHAR(A,Y-1,I)
1470 NEXT BANG
1480 SC=SC+100
1485 REM V$="SCORE=:  0" – ADD SCORE ON SCREEN???
1490 RETURN

Also, note changes I made in 1040 and 1050.

 

...lee

  • Like 2
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...