Warrior of the Cross (Revision 1) Written by mjhayes@cs.buffalo.edu August 31, 1998 This program uses the graphics from "Tron Maze-a-Tron." You can substitute any cartridge that uses the "Intellivision Man" graphics, but you will have to find the starting and ending location of the sprite animation (the ones where the Intellivision Man is moving vertically) and substitute the values of N and M before the first "CALL GRAB" command. You are a time traveller, led by the Lord to become a missionary in a future time. All you are taking with you are a time machine, a supply of Holy Bibles, clothing, and rations. While you were travelling forward in time, a malfunction almost terminated your mission immediately. Thank God the time machine stopped moving forward in time before the malfunction. When you recovered from the time travel and started assessing damage, you noticed that the clock was still working, but reset itself during the accident. You were able to use the position of the sun to adjust the time, but had to leave the current day at 0. All other functions of the time machine have shut down, as if there were a power failure. The only thing that the time machine is good for now is shelter. You are trapped in an unknown time in the future in an unknown place. Once you had settled, you decided to learn a little bit about your new mission field. You are in a grassland that stretches as far as you can see. From morning until night, people are walking through the grassy fields like cars on an expressway. The Gospel of Jesus Christ has been forgotten several generations ago. You are in a new world; a world full of empty, lonely, unhappy people in desperate need of a Savior. Now you understand why you were brought here. You return to your shelter and go to sleep. When you wake up, you look at the clock. It reads, "Day; 1 Time; 6 0" which you interpret as 0600 hours. The clock sustained slight damage during the power failure, and doesn't always display all the digits. That doesn't matter to you now, because you have a greater mission before you. Have your morning devitions and start preaching the Gospel while there is still time. "Go ye therefore, and teach all nations, baptizing them in the name of the Father, and of the Son, and of the Holy Ghost: Teaching them to observe all things whatsoever I have commanded you; and lo, I am with you alway, even unto the end of the world. Amen." (Matthew 28:19,20) "When I say unto the wicked, Thou shalt surely die; and thou givest him not warning, nor speakest to warn the wicked from his wicked way, to save his life; the same wicked man shall die in his iniquity; but his blood will I require at thine hand." (Ezekiel 3:18) When you wake up, a readout will appear. The numbers indicate, from top to bottom, how many souls have been saved (including your own), your wisdom, your life force, and the day and time. Hit RTN after you have finished looking at the readout. Now decide whether you wish to have devotions to go to the mission field. Having devotions increases wisdom but requires time and effort from you. If you have devotions, the readout will reappear. This cycle will continue until you leave for the mission field. "How much better it is to get wisdom than gold! and to get understanding rather to be chosen than silver!" (Proverbs 16:16) On the mission field, use the disk to move, the bottom side buttons to talk to someone, and the top side buttons to return to the time machine and go to sleep. After you talk to someone or are told to return to the time machine, press RTN. As you try to talk to people, many will simply ignore you. Some will accept the Gospel, others won't. Remember that the object of the game is to win as many souls as possible. As time passes, more and more people will discriminate against you for who you are. Some will even attack you for your faith. "And ye shall be betrayed both by parents, and brethren, and kinsfolks, and friends; and some of you shall they cause to be put to death." (Luke 21:16) 10 FM(0)=0 ; Two numbers will be displayed on one line, in ; regular notation, with 0 places to the ; right of the decimal point. 20 FM(4)=3 ; The text will be displayed in tan. 30 SET A$="HIT RTN WHEN READY." 40 SET B$="1-READ CHAPTER FROM" 50 SET C$="WHEN YOU WAKE UP..." ; Pre-define the longer text to save memory. 60 D=2 ; The people are hi-res sprites. 70 E=14 ; The background "music" will play in a ; repeated fade in/fade out envelope. 80 N=59 ; All sprites are people. 90 M=5 ; There are six frames in the animation. 100 FOR O=0 TO 6 110 CALL GRAB ; Create the people. 120 XS(O)=1 130 YS(O)=1 ; Enlarge the sprites. 140 SQ(O)=40 ; Animate the people. 150 IF(O=0)GOTO 180 160 IF(O=7)GOTO 180 170 CALL LINK ; Sprites 1..6 are linked to sprite 0, making ; the first seven people sprites move in ; syncronicity. 180 NEXT O 190 CO(7)=15 ; Make person 7 purple. 200 XP(7)=76 210 YP(7)=44 ; Put person 7 into position. 220 M=6 230 N=7 ; Set values M and N for the CALL DIST routine. RUN 10 DATA 9,0,99,9,1,6,1 20 READ A,B,F,G,I,J,K ; Set the values of date and time, life force, ; wisdom, and souls won. 30 CALL HUSH ; Shut that noise off! 40 FOR O=0 TO 7 50 VS(0)=-1 ; Hide all the people 60 NEXT O 70 CLR 80 IF(I>65535)GOTO 970 ; In the unlikely event that one should play ; this game long enough, the game will end ; at the rapture. 90 A=B ; Adjust the date and time for display.{ 100 IF(A<60)GOTO 140 ; Calculate the hours elapsed. 110 A=A-60 120 J=J+1 130 GOTO 100 140 IF(J<24)GOTO 180 ; Calculate the days elapsed. 150 J=J-24 160 K=K+1 170 GOTO 140 ; } 180 PRIN "SOULS WON;",I 190 PRIN "WISDOM;",G 200 PRIN "LIFE;",F 210 PRIN "DAY;",K 220 PRIN "TIME;",J,A 230 PUT A$ ; Print readout. 240 INPU A 250 CLR 260 PUT B$ 270 PRIN "THE BIBLE, 2-GO TO" 280 PRIN "MISSION FIELD." 290 INPU A ; Print list of choices. 300 IF(A>1)GOTO 350 310 A=RN(0)/9 ; Have devotions.{ 320 B=B+A ; Randomly determine time spent. 330 G=G+A ; Adjust wisdom meter. 340 GOTO 70 ; } 350 CLR 360 B=(J*60)+A ; Set the time. 370 FOR O=1 TO 6 ; Generate people.{ 380 XV(O)=RN(0) 390 YV(O)=RN(0) ; Setting the velocities of linked sprites ; will set their offset distance from the ; sprite to which they are linked. 400 XV(0)=RN(0) 410 XV(0)=RN(0) ; Randomly set the velocity of the people. ; (Remember that sprites 1..6 are linked ; to sprite 0, so setting the velocity of ; sprite 0 makes sprites 0..6 all move ; together.) 420 VS(O)=1 ; Make the people appear. 430 C=O-1 440 L=RN(0)*661 450 P=RN(0)*9 460 CALL ENVT ; Generate background "music" (more of a ; Gregorian Chant!). 470 NEXT O ; } 480 VS(0)=1 490 VS(7)=1 ; Make the rest of the people appear. 500 B=B+1 ; Main game loop{ update elapsed time. 510 IF(B<1260)GOTO 570 ; At 9:00pm the player becomes tired and ; automatically returns to the shelter. 520 PRIN "GETTING TIRED. GO BACK." 530 INPU A 540 B=B*4/3 ; Calculate time spent sleeping. 550 PUT C$ 560 GOTO 30 ; Return to the shelter. 570 CALL HAND ; Poll the left hand controller. 580 H=0-H 590 IF(H=1)XV(0)=XV(0)-F ; Did the user move up? 600 IF(H=5)YV(0)=YV(0)+F ; Did the user move left? 610 IF(H=9)XV(0)=XV(0)+F ; Did the user move right? 620 IF(H=13)YV(0)=YV(0)-F ; Did the user move down? 630 IF(A=1)GOTO 540 ; Was a top side button pressed? 640 IF(A=0)GOTO 500 ; Was a bottom side button pressed? If so{ 650 CALL DIST ; Get distance between sprites 6 and 7. 660 IF(D>31)GOTO 500 ; If sprite 6 was too far away, then ; nothing happens. (The other six ; people are the ones who "simply ; ignore you." That is a feature.) 670 XV(0)=0 680 YV(0)=0 ; Stop all sprites. 690 PRIN "YOU; 'DO YOU ACCEPT" 700 PRIN "JESUS CHRIST AS" 710 PRIN "PERSONAL LORD AND" 720 PRIN "SAVIOR?'" 730 A=G/(RN(0)*I) ; Calculate the sinner's response, which is ; more likely to be positive with ; higher wisdom and more likely to be ; negative as the game progresses (as ; more souls are won). 740 IF(A<.1)GOTO 830 ; Does the sinner become hostile? 750 IF(A>1)GOTO 800 760 PRIN "SINNER; 'NO.'" 770 PUT A$ 780 INPU A 790 GOTO 350 800 PRIN "SINNER; 'YES.'" 810 I=I+RN(0) ; This line of code was changed from 1 to ; RN(0) for two reasons: the first was ; to shorten the game because it was ; too long; the second was that one ; saved person would witness to others, ; therefore winning one soul would ; automatically increase the believers' ; count by more than one. 820 GOTO 770 830 PRIN "SINNER; 'I REMEMBER" 840 PRIN "YOU. GIVE UP YOUR" 850 PRIN "STUPID RELIGION OR" 860 PRIN "I WILL KILL YOU.'" 870 PRIN "1-GIVE IN, 2-REFUSE" 880 INPU A 890 IF(A=2)GOTO 930 ; Denying the faith automatically ends the ; mission. 900 PRIN "DENIED FAITH. WON",I 910 PRIN "SOULS." 920 GOTO 10 930 F=F-RN(0) ; Lose life force for being attacked. 940 IF(F>0)GOTO 500 ; Did the player die? 950 PRIN "MARTYRED. WON",I 960 GOTO 910 ; } 970 PRIN "RAPTURE. WON",I 980 GOTO 910 ; }