'* ----------------- DAMNED ---------------- * '* Copyright ©1992 / 2002 by Testaware * '* * '* Damned V1.10 * '* By Volker Stepprath ®30-11-92 / ®16-05-02 * '* * '* Extra Extensions for AMOSPro Source * '* AMOSPro_Explode.Lib V2.00 * '* AMOSPro_AMCAF.Lib V1.50ß4 * '* ----------------------------------------- * Dim XHIGHP(19),XHIGH$(19),XHIGHL(19) Global XTME,XCW$,XLEV,XPNT,XCNT,XWUP,XAUT,XHPS Global XDMO,XHLP,XHIGHP(),XHIGHL(),XHIGH$(),XTOP If Prg State0JD;P;JE;" A$=A$+"D:IR0&16JC;IR0&1JA;IR0&2JB;JE;" A$=A$+"A:IR1=0JE;LR1=R1-1;M0,-20,12;JE;" A$=A$+"B:IR1=5JE;LR1=R1+1;M0,20,12;JE;" B$=A$ A$=A$+"C:FR0=1T22;LX=X+4;NR0" B$=B$+"C:FR0=1T22;LX=X-4;NR0" Amal 1,A$ Amal 2,B$ Amal On 1 Amal On 2 If XDMO=False Then Mvolume 63 : Music 1 Fade 2 To 1 : Wait 10 Flash 15,"(800,2)(900,2)(A00,2)(B00,2)(C00,2)(D00,2)(E00,2)(F00,2)(E00,2)(D00,2)(C00,2)(B00,2)(A00,2)(900,2)" XCNT=3 : XHLP=9 : XLEV=False : XPNT=False : XDMO=False : XCW$="" : CX=False : CY=False CY=False : B=False : Rem * Automatic demo Repeat If Key State(69) XTOP=False CY=5 Exit End If A=Amreg(1,1) If A<>CY Ink 1 : _T[8,96+CY*20,A$(CY)] Ink 15 : _T[8,96+A*20,A$(A)] CY=A B=False End If Inc B If B>400 A=300 Add XAUT,1,2 To 5 If XAUT=5 CY=6 Else CY=XAUT End If Exit End If Wait 2 Until Amreg(1,False)>15 If Amreg(1,False)>15 Then A=False Gr Writing 1 Wait 25 Flash Off If CY=False : Rem * Start Fade 2 For I=63 To False Step -1 : Mvolume I : Wait Vbl : Next Music Off Pop Proc Else If CY=1 Fade 2 For I=63 To False Step -1 : Mvolume I : Wait Vbl : Next Music Off _ENTERCODE Pop Proc Else If CY=2 : Fade 2 : Wait 40 : XDMO=True : _TOPSCORE[A] Else If CY=3 : Fade 2 : Wait 40 : XDMO=True : Pop Proc : Rem * Demo Else If CY=4 : Fade 2 : Wait 40 : XDMO=True : _ABOUT[A] Else If CY=5 Fade 2 For I=63 To False Step -1 : Mvolume I : Wait Vbl : Next Music Off If XTOP Trap Open Out 1,"Damned.Top" If Errtrap=False For I=False To 19 A$=XHIGH$(I) A$=A$+String$(Chr$(0),16-Len(A$)) Print #1,A$+Long$(XHIGHP(I))+Long$(XHIGHL(I)); Next End If Close End If Amal Off Bob Off Erase 1 Erase 2 Screen Close 0 Screen Close 1 Request On Wait 100 End Else If CY=6 : Fade 2 : Wait 40 : XDMO=True : _INTRO End If Loop Data "START" Data "PASSWORD" Data "TOPSCORE" Data "DEMOMODE" Data "ABOUT" Data "GOOD BYE" End Proc Procedure _PLAYFIELD Do If XCNT"" A=Hunt(Start(6) To Finish(6),XCW$) If A XLEV=(A-Start(6))/16+1 End If End If XCW$=Peek$(Start(6)+(XLEV-1)*16,16,Chr$(0)) XWUP=False XTME=100+XLEV-1 Randomize Timer If XDMO : XLEV=Rnd(98)+1 : End If A=False Repeat N=Rnd(99) If Peek(Start(100)+N) Then Poke Start(100)+N,False : Inc A Until A=XLEV For Y=False To 9 For X=False To 9 If Peek(Start(100)+Y*10+X) Then Paste Bob 82+X*16,47+Y*16,30 Next Next If XDMO=False Channel 3 To Bob 5 Bob 5,253,177,5 Text 250,205,Str$(XTME)-" " A$="A0,(5,6)(6,6)(7,6)(8,6)(9,6)(10,6)(11,6)(12,8)" A$=A$+"(13,4)(14,4)(15,4)(16,4)(17,6)(18,4)(19,4)(20,4)(21,4);" Amal 3,A$ End If Fade 2 To 1 : Wait 40 If XDMO Wait 80 Else Amal On 3 Every 88 Proc _TIME : Every On While Fire(1)+Asc(Inkey$)=False If XTME<=False : _TIMEOUT : Pop Proc : End If Wend Every Off Amal Off 3 End If Fade 2 : Wait 40 For X=False To 9 For Y=False To 9 Paste Bob 82+X*16,47+Y*16,30 Next Next Channel 1 To Bob 1 Channel 2 To Bob 1 Bob 1,82,47,1 Gr Writing False If XDMO=False Bob 5,253,177,5 Amal 3,A$ Text 3,6,'POINTS '+Format$("%06ld",Varptr(XPNT)) Text 119,6,"LEVEL "+Format$("%03ld",Varptr(XLEV)) Text 203,6,'HELP'+Str$(XHLP) Text 265,6,'CONT'+Str$(XCNT) A$="LRA=0;LRX=0;LRY=0;" A$=A$+"A0,(1,3)(2,3)(3,3)(4,3);" A$=A$+"L:IJ1&8JA;IJ1&4JB;IJ1&2JC;IJ1&1JD;JL;" A$=A$+"A:IRX>8JE;LRX=RX+1;M16,0,5; JL;" A$=A$+"B:IRX<1JE;LRX=RX-1;M-16,0,5;JL;" A$=A$+"C:IRY>8JE;LRY=RY+1;M0,16,5; JL;" A$=A$+"D:IRY<1JE;LRY=RY-1;M0,-16,5;JL;" A$=A$+"E:P;JL;" Amal 1,A$ Else A$="DEMO" : _ET[160-Len(A$)*15,0,A$] Amal 1,"A0,(1,3)(2,3)(3,3)(4,3);" End If Amal On 1 XWUP=False Paste Icon 69,212,101 : Rem * Free WAKEUP Text 0,255,'DAMNED COPYRIGHT ©1992/2002 BY TESTAWARE' Fade 2 To 1 : Wait 40 If XDMO=False : _DAMNEDGAME Else _DEMOGAME : End If Loop End Proc Procedure _DAMNEDGAME Ink 1,False : Gr Writing 1 Amal On 3 Every 88 Proc _TIME : Every On Clear Key Do Repeat J=Joy(1) If Inkey$<>"" N=Scancode Clear Key If N=69 XTME=False Else If N=25 Every Off Amal Freeze Paste Icon 69,212,101 A$="PAUSED" : _ET[162-(Len(A$)*31)/2,212,A$] Proc _WT[False] XWUP=False Paste Icon 69,212,101 Every 88 Proc _TIME : Every On Amal On Else If N=84 Paste Icon 69,212,101 A$="BUUUUH" : _ET[162-(Len(A$)*31)/2,212,A$] : _LEVELDONE : Pop Proc Else If N=85 XHLP=9 : Text 235,6,Str$(XHLP) Else If N=95 Gosub _HELP End If End If If XTME<=False : _TIMEOUT : Pop Proc : End If Until J>15 If J=16 CX=Amreg(23) CY=Amreg(24) N=CY*10+CX A=Peek(Start(101)+N) Bob Clear If A Paste Icon CX*16+82,CY*16+47,1+N Else Paste Bob CX*16+82,CY*16+47,30 End If Bob Draw Sam Play 2 Bchg 0,A Poke Start(101)+N,A For A=False To 99 If Peek(Start(100)+A)<>Peek(Start(101)+A) A=True Exit End If Next If A<>True : _LEVELDONE : Pop Proc : End If Repeat : Until Joy(1)=False : Wait 5 End If Loop _HELP: If XHLP=False Then Return Repeat I=Rnd(99) A=Peek(Start(100)+I) B=Peek(Start(101)+I) Until A<>B CX=I mod 10 CY=I/10 A=CX-Amreg(23) B=CY-Amreg(24) Amreg(23)=CX Amreg(24)=CY A$="M"+Str$(A*16)+",0,"+Str$(Abs(A*4)) Amal 2,A$ : Amal On 2 : While Chanmv(2) : Wend : Amal Off 2 A$="M0,"+Str$(B*16)+","+Str$(Abs(B*4)) Amal 2,A$ : Amal On 2 : While Chanmv(2) : Wend : Amal Off 2 Dec XHLP : Text 235,6,Str$(XHLP) Return End Proc Procedure _DEMOGAME Repeat N=Rnd(99) If Peek(Start(100)+N)=False CX=N mod 10 CY=N/10 A=(CX-CXALT)*16 B=(CY-CYALT)*16 C=(Abs(A)/16)*4 A$="M "+Str$(A)+",0,"+Str$(C) Amal 2,A$ : Amal On 2 While Chanmv(2) : Wend C=(Abs(B)/16)*4 A$="M 0,"+Str$(B)+","+Str$(C) Amal 2,A$ : Amal On 2 While Chanmv(2) : Wend Poke Start(100)+N,1 Bob Clear Paste Icon CX*16+82,CY*16+47,1+N Bob Draw CXALT=CX : CYALT=CY Wait 10 Dec XLEV End If Until Asc(Inkey$)+Joy(1) or XLEV=False Wait 80 Clear Key Fade 2 : Wait 40 Anim Off XCNT=True End Proc Procedure _TIME Dec XTME Text 250,205,Format$("%03ld",Varptr(XTME)) If XTME<41 If XWUP=False XWUP=True A$="WAKEUP" : _ET[162-(Len(A$)*31)/2,212,A$] Sam Play 15,3,18000 End If End If Every On End Proc Procedure _TIMEOUT Every Off Amal Off 3 Sam Play 3 : Wait 50 Fade 2 : Wait 40 Amal Off Bob Off : Wait Vbl : Cls False If XCNT>0 Gr Writing 1 _T[7,92,'TIME OUT'] _T[8,136,'5'] _T[7,168,'PRESS FIRE TO CONTINUE'] XTME=5 Fade 2 To 1 : Wait 40 Every 60 Gosub _XTME Every On Repeat : Until Fire(1) or XTME=False Dec XLEV If XTME>False Dec XCNT Else XCNT=True End If Every Off Fade 2 : Wait 40 If XCNTXHIGHP(19) XTOP=True Cls False _T[8,82,'WELL DONE'] _T[7,97,'YOU ARE ONE OF THE DAMNED TOP 20'] _T[7,106,'NOW TYPE IN YOUR NAME'] Fade 2 To 1 : Proc _ENTER XHIGHL(19)=XLEV : XHIGHP(19)=XPNT : XHIGH$(19)=Param$ For I=False To 18 For I2=I+1 To 19 If XHIGHP(I2)>XHIGHP(I) Swap XHIGHP(I),XHIGHP(I2) : Swap XHIGH$(I),XHIGH$(I2) : Swap XHIGHL(I),XHIGHL(I2) End If Next Next For I=0 To 19 If XHIGHP(I)=XPNT and XHIGHL(I)=XLEV and(XHIGH$(I)=Param$) XHPS=I : Exit End If Next Fade 2 : Wait 40 End If End Proc Procedure _LEVELDONE Every Off Amal Off 3 Wait 10 : Sam Play 1 : Wait 300 Fade 2 : Wait 40 Amal Off : Bob Off : Wait Vbl Cls False XTME=Max(1,XTME) Change Bank Font 8 : Gr Writing 1 : Ink 1,False Text 160-Len(XCW$)*8,112,XCW$ Change Bank Font 7 Text 86,52,Format$("LEVEL %03ld COMPLETED",Varptr(XLEV)) Text 130,82,"PASSWORD" Text 55,151,"TIME x LEVEL = POINTS" Text 135,162,Format$("%03ld",Varptr(XLEV)) Text 60,162,Format$("%03ld",Varptr(XTME)) Text 207,162,Format$("%06ld",Varptr(XPNT)) Fade 2 To 1 : Wait 40 For I=XTME To 1 Step -1 Dec XTME : Add XPNT,XLEV Text 60,162,Format$("%03ld",Varptr(XTME)) Text 207,162,Format$("%06ld",Varptr(XPNT)) Wait Vbl Next Text 70,227,"PRESS FIRE TO CONTINUE" XCW$="" Proc _WT[False] Fade 2 : Wait 40 End Proc Procedure _INCREDIBILE _ET[4,20,'INCREDIBLE'] Ink 1,False : Gr Writing False Do Read A$ Exit If A$='*' _T[7,76+A,A$] Add A,10 Loop _T[8,204,Peek$(Start(6)+99*16,16,Chr$(0))] _T[7,236,Peek$(Start(6)+1600,37,Chr$(0))] _FADEIN[False] _GAMEOVER Data 'I NEVER THOUGHT THAT ANYONE IS ABLE' Data 'TO COMPLETE ALL 99 DAMNED LEVELS' Data 'ARE YOU IN RELATIONS WITH MR. EINSTEIN' Data 'OR ARE YOU AN ALIEN?' Data '' Data '...NEVERTHELESS...' Data 'CONGRATULATION FOR YOUR HARD WORK' Data '' Data '' Data 'AND NOW THE KEYCODE FOR ALL PASSWORDS' Data '*' End Proc Procedure _TOPSCORE[A] Iff Bank 10 To False : Screen Hide False For I=False To 31 : Colour I,False : Next : Screen Show False _ET[39,False,"TOPSCORE"] Change Bank Font 7 : Ink ,False : Gr Writing False For I=1 To 20 Ink 1 Text 39,30+I*11,Format$("%02ld. ",Varptr(I)) Text 199,30+I*11,Format$(" %06ld",Varptr(XHIGHP(I-1))) Text 271,30+I*11,Format$("%02ld",Varptr(XHIGHL(I-1))) If I-1=XHPS Then Ink 15 A$=XHIGH$(I-1) : Text 133-Len(A$)*4,30+I*11,A$ Next Fade 2 To 1 : Wait 10 Flash 15,"(800,2)(900,2)(A00,2)(B00,2)(C00,2)(D00,2)(E00,2)(F00,2)(E00,2)(D00,2)(C00,2)(B00,2)(A00,2)(900,2)" _WT[A] Flash Off Fade 2 : Wait 40 End Proc Procedure _ABOUT[A] Iff Bank 10 To False : Screen Hide False For I=False To 31 : Colour I,False : Next Screen Show False A$="DAMNED" : _ET[160-(Len(A$)*31)/2,20,A$] Paste Bob False,False,68 Paste Bob 256,False,Hrev(68) Ink 1,False : Gr Writing False Do Read A$ Exit If A$='*' _T[7,74+B*11,A$] Inc B Loop Gr Writing 1 _FADEIN[A] Data "PROGRAMMED IN AMOS PROFESSIONAL" Data "CODER VOLKER STEPPRATH ®1992/2002" Data "" Data "CONTACT ME" Data "" Data "VOLKER STEPPRATH" Data "TEGELER STR.7" Data "40789 MONHEIM" Data "GERMANY" Data "" Data "E-MAIL: PEACEFLOETE"+Chr$(64)+"AOL.COM" Data "" Data "" Data "" Data "" Data "DAMNED V1.10 ©1992/2002 BY TESTAWARE" Data "*" End Proc Procedure _ENTERCODE Anim Off : Bob Off : Wait Vbl Cls False : Ink 1,False : Gr Writing 1 _T[7,112,'PLEASE ENTER PASSWORD'] Fade 2 To 1 : Proc _ENTER XCW$=Param$ A$=Peek$(Start(6)+99*16,16,Chr$(0)) If Param$=A$ Fade 2 : Wait 40 Cls False _T[7,102,'KEYCODE ACTIVATED'] _T[7,112,'ENTER LEVELNUMBER'] XCW$="" Fade 2 To 1 : Proc _ENTER XLEV=Val(Param$) XLEV=Abs(XLEV) XLEV=Min(99,XLEV) XLEV=Max(False,XLEV-1) End If Fade 2 : Wait 40 End Proc Procedure _INTRO If XDMO=False Hide On Trap Bank Load "Damned.Top" To 9 If Errtrap For I=False To 19 XHIGH$(I)="TESTAWARE" Next Else A=Start(9) For I=False To 19 A=Start(9)+I*24 XHIGH$(I)=Peek$(A,16,Chr$(0)) XHIGHP(I)=Leek(A+16) XHIGHL(I)=Leek(A+20) Next End If Iff Bank 12 To False Screen Hide : Wait Vbl A=Bank Free(1) : Bank Swap A,1 : Get Bob 1,False,False To 1,1 For I=False To 31 : Colour I,False : Next Screen Show False : Wait Vbl Amos To Front : Wait 80 Fade 2 To -1 : Wait 130 Lpk Unpack 6 Fade 2 : Wait 40 Erase 1 : Bank Swap 1,A If Prg StateFalse : Wend If A=False Do C=Asc(Inkey$) : Exit If C C=Joy(1) : Exit If C Loop Else For B=False To A C=Asc(Inkey$) : Exit If C C=Joy(1) : Exit If C Wait Vbl Next End If End Proc[C] Procedure _ENTER Change Bank Font 8 : Text 35,172,String$(".",16) Repeat N$="" : Clear Key While N$="" : N$=Upper$(Inkey$) : Wend N=Asc(N$) If N>31 and Len(A$)<16 A$=A$+N$ Sam Play 15,4,20000 Else If N=8 and Len(A$)>False A$=Left$(A$,Len(A$)-1) Sam Play 15,4,20000 End If Text 35,172,A$+String$(".",16-Len(A$)) Until N=13 Sam Play 15,4,20000 End Proc[A$]