|
|
|
|
|
CODE { DC MKSTR $05B7D DC ECRAN $8068D DEFINE SMAX #15 DEFINE LMAX #4 DCCP 4 FLAG01 DCCP 3 VIE DCCP 2 MCLIPH DCCP 2 MCLIPB DCCP 5 MX DCCP 5 MY DCCP 3 COIN DCCP 1 SCROL.COUNTER DCCP 5 LEVEL.SURFACE DCCP 5 LEVEL.DATA DCCP 2 TICK DCCP 2 TICK.COUNTER DCCP 2 M.ANIM DCCP 2 T.ANIM DCCP 5 @LIFT DCCP 3 POSX DCCP 3 STAGE DCCP 5 LEVEL DCCP 5 CUBES DCCP 2 MJUMP DCCP 5 STACK DCCP 5 START DCCP 5 STABLE DCCP 2 STYPE DCCP 3 SDATA DCCP 5 SX DCCP 5 SY DCCP 5 AX DCCP 5 AY SAVE INTOFF LA(3)#1 D0=(5)STAGE DAT0=A.X AD1EX D0=(5)STACK DAT0=A.A *NEXTUP D0=(5)STACK A=DAT0.A D1=A A=DAT1.A ?A=0.A GOYES BAD D0=A A=DAT0 A LC(5)$02A2C ?C=>A.A GOYES BAD SKIP { *BAD { GOSUBL KEYS UPC } GOLONG QUIT } A=DAT1.A A+16.A D0=(5)LEVEL DAT0=A.A LC(5)#4800*#2 GOSBVL =MKSTR AD0EX D0=A R0=A.W LC(5)#4800-#1/#16 A=0.W { DAT0=A.W D0+16 C-1.A UPNC } A=R0.A A+1.A ABIT=0.0 D0=(5)@LIFT DAT0=A.A LC(5)#200 A+C.A D0=(5)STABLE DAT0=A.A LC(5)#200 A+C.A R0=A.W LC(5)$880 A+C.A R1=A.W LC(5)$880 A+C.A D0=(5)LEVEL.SURFACE DAT0=A A LC(5)$880 A+C.A D0=(5)LEVEL.DATA DAT0=A.A SKUBL { INCLUDE GFX } C=RSTK C+20.A R2=C.W SKUBL { INCLUDE DATAS } C=RSTK C+20.A D0=(5)CUBES DAT0=C.A D1=00128 LC 3F DAT1=C B D1=0010C A=DAT1.P ABIT=0.3 DAT1=A.P A=R0.A D0=00120 DAT0=A.A GOSUBL RESET.CONTER GOTOL PRESENTATION *REPLAY D1=(5)LEVEL A=DAT1.A D1=A D0=(5)LEVEL.DATA A=DAT0.A D0=A LC 500 B=C.X LC 30 { A=DAT1 B ?C#A.B { A=0.B } DAT0=A B D0+2 D1+2 B-1.X UPNC } GOSUBL CL_LIFT GOSUBL CLEAR.STABLE CLRST A=0.A D0=(5)FLAG01 DAT0=A 4 D0=(5)SCROL.COUNTER DAT0=A.P % VARIABLE ANIM D0=(5)M.ANIM DAT0=A.B D0=(5)T.ANIM DAT0=A.B % VARIABLE CLIP MARIO D0=(5)MCLIPH DAT0=A.B D0=(5)MCLIPB DAT0=A.B % FPS LA(2)#04 D0=(5)TICK DAT0=A.B D0=(5)TICK.COUNTER DAT0=A.B %INITIALIZE DISPLAY GOSUBL DISP.COL.D GOSUBL DISP.LEVEL GOSUBL DISP.PANEL GOSUBL VIES GOSUBL COINS GOSUBL STAGES GOSUBL FLIP %MAIN GAME LOOP { GOSUBL FLAGS GOSUBL LIFTS GOSUBL MARIO GOSUBL SPRITES GOSUBL FLIP % LC 04000 { C-1.A UPNC } LC 010 OUT=C=IN ?CBIT=1.0 EXIT UP } *STOP { GOSUBL KEYS UPC } GOSUBL RESET.CONTER GOLONG PRESENTATION *QUIT P=0 SETHEX %END GAME BACK RPL { GOSUBL KEYS UPC } LC 37 D0=00128 DAT0=C.P %LES INDICATEURS D1=0010C A=DAT1.P ABIT=1.3 DAT1=A.P %LA MEMOIRE VIDEO D0=(5)ECRAN A=DAT0.A D0=00120 DAT0=A.A INTON2 LOADRPL *MARIO %DECALAGE DES OBJETS ST=0.7 % MARIO=>BACK-BUFFER D0=(5)MCLIPB C=DAT0.B D=C.B % READ SPRITE A=R2.A C=0.A D1=(5)M.ANIM C=DAT1.B C+C.A C+C.A A+C.A % SET CLIP UP C=0.A D1=(5) MCLIPH C=DAT1.B B=C.A CSL.A C+B.A C+C.A A+C.A R4=A.W LC 09 ?B<C.B { GOTO BIG_CLIP } C-B.B B=C.B % SET CLIP DOWN C=D.B ?C=>B.B GOYES BIG_CLIP B-C.B A=0.A C=0.A D0=(5)MX A=DAT0.B D0=(5)MY C=DAT0.B GOSUBL DISP.A.C.R4.B *BIG_CLIP %MOVEMENTS FROM KEYS GOSUBL TESTD GOSUBL TESTG %NO MOVE=>STAND-BY GOSUBL KEYS SKIPC { A=0.B D0=(5)M.ANIM DAT0=A.B } % JUMPING LC 040 OUT=C=IN ?CBIT=0.4 { %DEJA PRESSED ?ST=1.2 EXIT ST=1.2 %DEJA ON AIR ?ST=1.0 EXIT ?ST=1.3 EXIT ST=1.0 %SAUT OU CHUTE ST=1.1 A=0.B D0=(5)MJUMP DAT0=A.B } SKELSE { ST=0.2 } %ON GERE LE SAUT/CHUTE ?ST=1.0 { ?ST=1.3 GOYES AC GOSUBL SOL SKIPC { *AC ST=1.0 %SAUT OU CHUTE ST=0.1 LA 08 D0=(5)MJUMP DAT0=A.B } } SKELSE { GOSUBL JUMPING } % TEST LOST %%%%%%%%%% { D0=(5)MCLIPB A=DAT0.B LC 09 ?A<C.B EXIT GOLONG MLOST } RTN *FLIP %BACK-BUFFY=>FRONT-BUFY A=R1.A D0=00120 DAT0=A.A %WAIT VBL A=0.W D0=00128 { A=DAT0.6 ?A=>0.W UP } %CLEAR NEW BACK-BUFFY D0=(5)LEVEL.SURFACE A=DAT0.A D1=A A=R0.A D0=A LC 3F { A=DAT1.W DAT0=A.W D0+16 D1+16 A=DAT1.10 DAT0=A.10 D0+18 D1+18 C-1.B UPNC } %FLIP VIDEO POINTERS A=R0.A AR1EX.A R0=A.W RTN *JUMPING %MARIO SE POSE? ?ST=1.1 { ?ST=1.3 EXIT GOSUBL SOL EXITNC ST=0.0 % REAJUSTE MY GOSUBL FIXSOL RTN } SKELSE { %MARIO SE COGNE? ?ST=1.3 EXIT GOSUBL CIEL EXITNC ST=0.0 % REAJUSTE MY GOSUBL FIXCIEL RTN } % EQS VALUES SKUB { $/05 $/05 $/04 $/03 $/03 $/02 $/01 $/01 $/01 $/00 $/00 $/00 } C=RSTK A=0.A D0=(5)MJUMP A=DAT0.B A+A.A C+A.A D0=C C=0.A C=DAT0.B %MOVE SPRITE D0=(5)MY A=DAT0.B ?ST=1.1 { D=C.B D1=(5)MCLIPH C=DAT1.B ?C=0.B { ?C>D.B { C=0.B DAT1=C.B D-C.B C=D.B A+C.B DAT0=A.B } SKELSE { C-D.B DAT1=C.B } } SKELSE { C=D.B A+C.B } } SKELSE { ?C>A.B { A-C.B } SKELSE { D1=(5)MCLIPH A=DAT1.B A+C.B DAT1=A.B A=0.B } } %CLIPPING UP&DOWN LC 40 ?A=>C.B { A=C.B } LC 36 ?A=>C.B { B=C.B C=A.B C-B.B D1=(5)MCLIPB DAT1=C.B } DAT0=A.B %UPDATE JUMP D0=(5)MJUMP A=DAT0.B %SAUT OU CHUTE ?ST=0.1 { LC(2)#11 ?A=>C.B { ST=0.0 } SKELSE { A+1.B DAT0=A.B } } SKELSE { ?A=0.B => { %PAS DE SOL => CHUTE ?ST=1.3 EXIT GOSUBL SOL EXITNC ST=0.0 % REAJUSTE MY GOSUBL FIXSOL } SKELSE { A-1.B DAT0=A.B } } RTN *MLOST C=RSTK C=RSTK GOSUBL FLIP %ON SE REMET AU DEBUT A=0.A C=0.A D1=(5)LEVEL.DATA D0=(5)POSX A=DAT0.X LC(3)$40 ?A<C.X { A=0.A D1=(5)LEVEL.DATA D0=(5)POSX A=DAT0.X A+A.A C=DAT1.A C-A.A DAT1=C.A GOSUBL RESET.1 } SKELSE { A=0.A D1=(5)LEVEL.DATA D0=(5)POSX A=DAT0.X A+A.A C=DAT1.A C-A.A DAT1=C.A GOSUBL RESET.1 } D0=(5)VIE A=DAT0.B ?A=>0.B => { A-1.B DAT0=A.B } SKELSE { %GAME-OVER GOLONG STOP } GOLONG REPLAY *DISP.LEVEL D0=(5)LEVEL.SURFACE A=DAT0.A R3=A.W LC(2)#13 D=C.B % X LC(2)#08 B=C.B % Y D0=(5)LEVEL.DATA A=DAT0.A D0=A CD0EX RSTK=C D0=C *BCL A=0.A A=DAT0.B %SI CEST MARIO LC(2)#25 ?A=>C.B { LA(2)#13 C=D.B A-C.B ASL.A ASRB.A D0=(5)MX DAT0=A.B LA(2)#08 C=B.B A-C.B ASL.A ASRB.A A-2.B D0=(5)MY DAT0=A.B A=0.A GOTO NODISP } %SI CEST UNE TORTUE LC(2)#26 ?A=>C.B { LA(2)#1 LC(3)$264 GOSUBL ADDOBJET A=0.A GOTO NODISP } %SI CEST UN KOOPA LC(2)#44 ?A=>C.B { LA(2)#2 LC(3)$270 GOSUBL ADDOBJET A=0.A GOTO NODISP } %SI CEST UN LIFT LC(2)#35 ?A=>C.B { GOSUBL ADD_LIFT A=0.A GOTO NODISP } *NODISP D1=(5)CUBES C=DAT1.A ASL.A A+A.A C+A.A D1=C |
A=R3.A D0=A LC 7 { A=DAT1.B DAT0=A.B D0+34 D1+4 C-1.P UPNC } *NDISP A=R3.A A+2.A R3=A.W C=RSTK C+2.A RSTK=C D0=C D-1.B ?D=>0.B => { GOTO BCL } LC(2)#13 D=C.B C=RSTK LA 00140 C+A.A C-16.A C-10.A RSTK=C D0=C A=R3.A A-16.A A-10.A LC 00110 A+C.A R3=A.W B-1.B ?B=>0.B => { GOTO BCL } C=RSTK RTN *DISP.COL.D D0=(5)LEVEL.SURFACE C=DAT0.A C+26.A D=C.A LC(2)#8 B=C.B % Y D0=(5)LEVEL.DATA A=DAT0.A A+26.A R4=A.W { C=R4.A D0=C A=0.A A=DAT0.B %TORTUE ? LC(2)#26 ?A=>C.B { LA(2)#1 LC(3)$264 GOSUBL ADDOBJET2 A=0.A GOTO NODISP2 } %KOOPA ? LC(2)#44 ?A=>C.B { LA(2)#2 LC(3)$270 GOSUBL ADDOBJET2 A=0.A GOTO NODISP2 } %SI CEST UN LIFT LC(2)#35 ?A=>C.B { GOSUBL ADD2_LIFT A=0.A GOTO NODISP2 } *NODISP2 D1=(5)CUBES C=DAT1.A ASL.A A+A.A C+A.A D1=C C=D.A D0=C LC 7 { A=DAT1.B DAT0=A.B D0+34 D1+4 C-1.P UPNC } LC 00110 D+C.A C=R4.A LA 00140 C+A.A R4=C.W B-1.B ?B=0.B { UP2 } } RTN *SCROLG % POUR LES OBJETS ST=1.7 %UN POINTER SUR COLONE D0=(5)LEVEL.SURFACE A=DAT0.A D0=A LC 3F { A=DAT0.W ASRB.W DAT0=A.15 D0+15 A=DAT0.14 ASRB.W DAT0=A.13 D0+19 C-1.B UPNC } %ON COMPTE LES SCROLS D0=(5)SCROL.COUNTER A=DAT0.P LC 7 ?A=C.P { A+1.P DAT0=A.P } SKELSE { %UNE NOUVELLE COLONNE A=0.P DAT0=A.P D0=(5)POSX A=DAT0.X LC(3)$92 ?A<C.X { ST=1.4 D0=(5)SCROL.COUNTER LC 8 DAT0=C.P } SKELSE { A+1.X DAT0=A.X D0=(5)LEVEL.DATA A=DAT0.A A+2.A DAT0=A.A } GOSUBL DISP.COL.D } RTN *DISP.PANEL C=R2.A C+26.A D1=C D=C.A A=R0.A A+26.A D0=A LC 3F { A=DAT1.8 DAT0=A.8 D0+34 D1+34 C-1.B UPNC } C=D.A D1=C A=R1.A A+16.A A+10.A D0=A LC 3F { A=DAT1.8 DAT0=A.8 D0+34 D1+34 C-1.B UPNC } RTN *NUMBER.AC ?C=0.P RTNYES % A/B=NUMBER C/D=SIZE % R4.A = POS B=A.W D=C.P C=0.A C=D.P C-1.A A=R4.A A+C.A R4=A.W %FONT DS TABLE SPRITES A=R2.A LC 00176 A+C.A R3=A.W { ?D=0.P EXIT C=R3.A A=0.A A=B.P C+A.A D1=C A=R4.A D0=A LC 5 { A=DAT1.P DAT0=A.P D1+34 D0+34 C-1.P UPNC } C=R4.A C-1.A R4=C.W BSR.W D-1.P UP } RTN *SPRITES C=0.A R3=C.W LC(1)#15 { RSTK=C C=R3.A GOSUBL SP.LOAD SKIPC { GOSUBL DISP.SPRITE C=R3.A GOSUBL SP.SAVE } C=R3.A C+11.A R3=C.W C=RSTK ?C=0.P EXIT C-1.P UP } RTN *LIFTS C=0.A R3=C.W LC(1)LMAX { RSTK=C C=R3.A GOSUBL LOAD_L SKIPC { GOSUBL LIFT C=R3.A GOSUBL SAVE_L } C=R3.A C+6.A R3=C.W C=RSTK ?C=0.P EXIT C-1.P UP } RTN *DISP.A.C.R4.B D=C.A C=B.B RSTK=C B=A.A C=D.A % D0 POINTER ON SCREEN A=C.A CSL.A C+A.A C+C.A A=R1.A A+C.A C=B.A D=C.A CSRB.A CSRB.A A+C.A D0=A % D1 POINTER ON SPRITE A=R4.A D1=A % AFFICHAGE SPRITE C=RSTK B=C.B { D1+2 A=0.X A=DAT1.B C=D.P ?CBIT=1.0 => { A+A.X } ?CBIT=1.1 => { A+A.X A+A.X } A=-A-1.X C=DAT0.X C&A.X RSTK=C D1-2 A=0.X A=DAT1.B C=D.P ?CBIT=1.0 => { A+A.X } ?CBIT=1.1 => { A+A.X A+A.X } C=RSTK A!C.X DAT0=A.X D0+34 D1+34 B-1.P UPNC } RTN *CLEARED C=RSTK C=RSTK C=RSTK D0=(5)STAGE A=DAT0.X A+1.X DAT0=A.X D0=(5)STACK A=DAT0.A A+5.A DAT0=A.A GOLONG NEXTUP *ADD_LIFT %FIND PLACE D0=(5)@LIFT A=DAT0.A D0=A C=0.P { LA(1)LMAX ?C=A.P RTNYES A=DAT0.P ?A=0.P EXIT D0+6 C+1.P UP } LC 1 DAT0=C.P D0+1 %CALCUL POSITION LA(2)#13 C=D.B A-C.B ASL.A ASRB.A DAT0=A.B D0+2 LA(2)#08 C=B.B A-C.B ASL.A ASRB.A DAT0=A.B RTN *ADD2_LIFT %FIND PLACE D0=(5)@LIFT A=DAT0.A D0=A C=0.P { LA(1)LMAX ?C=A.P RTNYES A=DAT0.P ?A=0.P EXIT D0+6 C+1.P UP } LC 1 DAT0=C.P D0+1 %CALCUL POSITION LA(2)#13 ASL.A ASRB.A DAT0=A.B D0+2 LA(2)#8 C=B.B A-C.B ASL.A ASRB.A DAT0=A.B RTN *DISP.SPRITE ?ST=0.7 GOYES NDT.2 %ON SCROL LE SPRITE D0=(5)SX A=DAT0.B ?A=>0.B { ST=0.5 % DEAD SPRITE } SKELSE { A-1.B DAT0=A.B } *NDT.2 C=R3.A D0=(5)STABLE A=DAT0.A A+C.A D0=A D0+1 A=0.A A=DAT0.B A-1.A C=A.A A+A.A A+C.A A+A.A SKUBL { GOLONG OBJ.TORTLE GOLONG OBJ.KOOPA GOLONG OBJ.CHAMP.UP GOLONG OBJ.STAR.UP GOLONG OBJ.HEART.UP } C=RSTK C+A.A PC=C *FIN RTN *SP.LOAD D0=(5)STABLE A=DAT0.A A+C.A D0=A A=DAT0.P ?A=>0.P { ST=0.5 RTNSC } ST=1.5 ST=0.9 ST=0.10 { LC 1 ?A=>C.P { ST=0.6 EXIT2 } LC 2 ?A=>C.P { ST=1.6 EXIT2 } LC 3 ?A=>C.P { ST=1.9 EXIT2 } LC 4 ?A=>C.P { ST=0.6 ST=1.9 ST=1.10 EXIT2 } LC 5 ?A=>C.P { ST=1.6 ST=1.9 ST=1.10 EXIT2 } } D0+1 %TYPE D0+2 %DATA A=0.A A=DAT0.X R4=A.W D0+3 A=DAT0.B D0+2 D1=(5)SX DAT1=A.B A=DAT0.B D0+2 D1=(5)SY DAT1=A.B A=DAT0.P ?ABIT=0.2 { ST=0.8 } SKELSE { ST=1.8 } RTNCC *SP.SAVE D0=(5)STABLE A=DAT0.A A+C.A D0=A ?ST=1.5 { %SPRITE DEATH C=0.P } SKELSE { ?ST=1.6 { LC 1 } SKELSE { LC 2 } %MODE CARAPACE ?ST=1.10 => { C+3.P EXIT2 } ?ST=1.9 => { LC 3 } } DAT0=C.P D0+1 D0+2 D0+3 D1=(5)SX A=DAT1.B DAT0=A.B D0+2 D1=(5)SY A=DAT1.B DAT0=A.B D0+2 A=DAT0.P ?ST=0.8 => { ABIT=0.2 } SKELSE { ABIT=1.2 } DAT0=A.P RTN *CL_LIFT D0=(5)@LIFT A=DAT0.A D0=A C=0.W LA(1)LMAX { ?A=0.P EXIT A-1.P DAT0=C.6 D0+6 UP } RTN *TORTLE_HIT ?ST=1.9 { %APPLATIE ST=1.9 } SKELSE { ST=1.10 %POUSSEE: SENS ? D0=(5)SX A=DAT0.B D0=(5)MX C=DAT0.B ?A>C.B { ST=0.6 } SKELSE { ST=1.6 } } %MARIO REBONDIT ?ST=1.3 RTNYES ST=1.0 ST=1.1 LA 02 D0=(5)MJUMP DAT0=A.B RTN *LOST_LIFE ?ST=1.3 RTNYES LC 08000 { C-1.A UPNC } ST=1.3 ST=1.0 ST=1.1 A=0.B D0=(5)MJUMP DAT0=A.B RTN *KEYS LC 1FF OUT=C=IN ?C=0.B { RTNSC } RTNCC *SOL A=0.A C=0.A D0=(5)MCLIPH C=DAT0.B ?C=0.B { % LA(2)#8 ?C=>A.B % { A=0.B EXIT2 } % A-C.B A=0.B } SKELSE { D0=(5)MY A=DAT0.B } A+2.B C=A.B ASRB.A ASRB.A ASRB.A ASL.A ASRB.A C-A.A LA(2)#5 ?C>A.B => { RTNCC } |
ST=1.12 ST=0.11 D0=(5)MY A=DAT0.B LC(2)#54 ?A=>C.B => { RTNCC } %D0=(5)MCLIPB A=DAT0.B %?A=0.B { RTNCC } A=0.A D0=(5)MCLIPH A=DAT0.B LC 0A ?A=>C.B { RTNCC } LC(5)#10 C-A.A A=0.A D0=(5)SCROL.COUNTER A=DAT0.P A+5.A B=A.A D=C.A % (Y/8)*320+(X/8)*2 C=0.A D0=(5)MY C=DAT0.B C+D.A CSRB.A CSRB.A CSRB.A CSL.A A=C.A CSL.A A+A.A A+A.A C+A.A A=0.A D0=(5)MX A=DAT0.B A+B.A ASRB.A ASRB.A ASRB.A A+A.A C+A.A % ON LIT LE CUBE D0=(5)LEVEL.DATA A=DAT0.A A+C.A D0=A A=0.A A=DAT0.B %SUR UN PIC ? LC(2)#04 ?A=>C.B { GOSUBL LOST_LIFE RTNCC } LC(2)#03 ?A=>C.B { %MARIO REBONDIT ?ST=1.3 RTNYES ST=1.0 ST=1.1 A=0.B %LA 04 D0=(5)MJUMP DAT0=A.B RTNSC } %PIECE LC(2)#07 ?A=>C.B { GOLONG COINUP } D1=(5)CUBES C=DAT1.A ASL.A A+A.A C+A.A D1=C D1+2 A=DAT1.B ?ABIT=1.1 => { RTNSC } RTNCC *FIXSOL D0=(5)MY A=DAT0.B % A+3.B %% ... A+2.B ASRB.B ASRB.B ASRB.B ASL.A ASRB.A LC(2)#02 ?A<C.B { A-2.B } SKELSE { D1=(5)MCLIPH DAT1=C.B A=0.B } DAT0=A.B RTN *FIXCIEL D0=(5)MY A=DAT0.B A+8.B ASRB.B ASRB.B ASRB.B ASL.A ASRB.A A-2.B DAT0=A.B RTN *MURD ST=1.12 ST=0.11 A=0.A D0=(5)SCROL.COUNTER A=DAT0.P A+8.A LC(5)#03 B=A.A D=C.A % (Y/8)*320+(X/8)*2 C=0.A D0=(5)MY C=DAT0.B C+D.A CSRB.A CSRB.A CSRB.A CSL.A A=C.A CSL.A A+A.A A+A.A C+A.A A=0.A D0=(5)MX A=DAT0.B A+B.A %A+4.A ASRB.A ASRB.A ASRB.A A+A.A C+A.A % ON LIT LE CUBE D0=(5)LEVEL.DATA A=DAT0.A A+C.A D0=A A=0.A A=DAT0.B LC(2)#07 ?A=>C.B { GOLONG COINUP } D1=(5)CUBES C=DAT1.A ASL.A A+A.A C+A.A D1=C D1+2 A=DAT1.B ?ABIT=1.3 => { RTNSC } RTNCC %GOLONG TESTING_UP *MURG ST=1.12 ST=1.11 D0=(5)MX A=DAT0.B LC 01 ?A<C.B => { RTNCC } A=0.A D0=(5)SCROL.COUNTER A=DAT0.P LC(5)#03 B=A.A D=C.A % (Y/8)*320+(X/8)*2 C=0.A D0=(5)MY C=DAT0.B C+D.A CSRB.A CSRB.A CSRB.A CSL.A A=C.A CSL.A A+A.A A+A.A C+A.A A=0.A D0=(5)MX A=DAT0.B A+B.A A-1.A ASRB.A ASRB.A ASRB.A A+A.A C+A.A % ON LIT LE CUBE D0=(5)LEVEL.DATA A=DAT0.A A+C.A D0=A A=0.A A=DAT0.B LC(2)#07 ?A=>C.B { GOLONG COINUP } D1=(5)CUBES C=DAT1.A ASL.A A+A.A C+A.A D1=C D1+2 A=DAT1.B LC(2)#07 ?A=>C.B { GOLONG COINUP } ?ABIT=1.2 => { RTNSC } RTNCC %GOLONG TESTING_UP *SOL_T ST=0.12 ST=0.11 LC(5)#08 A=0.A D0=(5)SCROL.COUNTER A=DAT0.P A+4.A B=A.A D=C.A % (Y/8)*320+(X/8)*2 C=0.A D0=(5)SY C=DAT0.B C+D.A CSRB.A CSRB.A CSRB.A CSL.A A=C.A CSL.A A+A.A A+A.A C+A.A A=0.A D0=(5)SX A=DAT0.B A+B.A %A+4.A ASRB.A ASRB.A ASRB.A A+A.A C+A.A % ON LIT LE CUBE D0=(5)LEVEL.DATA A=DAT0.A A+C.A D0=A A=0.A A=DAT0.B D1=(5)CUBES C=DAT1.A ASL.A A+A.A C+A.A D1=C D1+2 A=DAT1.B ?ABIT=1.1 => { RTNSC } RTNCC %GOLONG TESTING_DW *MURD_T ST=0.12 ST=0.11 A=0.A D0=(5)SCROL.COUNTER A=DAT0.P A+8.A LC(5)#00 B=A.A D=C.A % (Y/8)*320+(X/8)*2 C=0.A D0=(5)SY C=DAT0.B C+D.A CSRB.A CSRB.A CSRB.A CSL.A A=C.A CSL.A A+A.A A+A.A C+A.A A=0.A D0=(5)SX A=DAT0.B A+B.A %A+4.A ASRB.A ASRB.A ASRB.A A+A.A C+A.A % ON LIT LE CUBE D0=(5)LEVEL.DATA A=DAT0.A A+C.A D0=A A=0.A A=DAT0.B D1=(5)CUBES C=DAT1.A ASL.A A+A.A C+A.A D1=C D1+2 A=DAT1.B ?ABIT=1.3 => { RTNSC } RTNCC %GOLONG TESTING_UP *MURG_T ST=0.12 ST=0.11 D0=(5)SX A=DAT0.B LC 01 ?A<C.B => { RTNCC } A=0.A D0=(5)SCROL.COUNTER A=DAT0.P LC(5)#00 B=A.A D=C.A % (Y/8)*320+(X/8)*2 C=0.A D0=(5)SY C=DAT0.B C+D.A CSRB.A CSRB.A CSRB.A CSL.A A=C.A CSL.A A+A.A A+A.A C+A.A A=0.A D0=(5)SX A=DAT0.B A+B.A A-1.A ASRB.A ASRB.A ASRB.A A+A.A C+A.A % ON LIT LE CUBE D0=(5)LEVEL.DATA A=DAT0.A A+C.A D0=A A=0.A A=DAT0.B D1=(5)CUBES C=DAT1.A ASL.A A+A.A C+A.A D1=C D1+2 A=DAT1.B ?ABIT=1.2 => { RTNSC } RTNCC %GOLONG TESTING_UP *CIEL ST=1.12 ST=0.11 D0=(5)MCLIPH A=DAT0.B ?A=0.B { RTNCC } A=0.A D0=(5)SCROL.COUNTER A=DAT0.P A+4.A C=0.A B=A.A D=C.A % (Y/8)*320+(X/8)*2 C=0.A D0=(5)MY C=DAT0.B C+D.A CSRB.A CSRB.A CSRB.A CSL.A A=C.A CSL.A A+A.A A+A.A C+A.A A=0.A D0=(5)MX A=DAT0.B A+B.A ASRB.A ASRB.A ASRB.A A+A.A C+A.A % ON LIT LE CUBE D0=(5)LEVEL.DATA A=DAT0.A A+C.A D0=A A=0.A A=DAT0.B LC(2)#02 ?A=>C.B { %on met un bloc banal LC(2)#5 DAT0=C.B GOLONG ADD.CHAMP } LC(2)#07 ?A=>C.B { GOLONG COINUP } D1=(5)CUBES C=DAT1.A ASL.A A+A.A C+A.A D1=C D1+2 A=DAT1.B ?ABIT=1.0 => { RTNSC } RTNCC %GOLONG TESTING_UP *VIES A=R0.A LC 00193 A+C.A R4=A.W D0=(5)VIE A=DAT0.B LC 2 GOSUBL NUMBER.AC A=R1.A LC 00193 A+C.A R4=A.W D0=(5)VIE A=DAT0.B LC 2 GOLONG NUMBER.AC *COINS A=R0.A LC 0045C A+C.A R4=A.W D0=(5)COIN A=DAT0.X LC 3 GOSUBL NUMBER.AC A=R1.A LC 0045C A+C.A R4=A.W D0=(5)COIN A=DAT0.X LC 3 GOLONG NUMBER.AC *STAGES A=R0.A LC 00726 A+C.A R4=A.W D0=(5)STAGE A=DAT0.X LC 3 GOSUBL NUMBER.AC A=R1.A LC 00726 A+C.A R4=A.W D0=(5)STAGE A=DAT0.X LC 3 GOLONG NUMBER.AC *COINUP %SORTUE ? ?ST=1.12 { RTNCC } %CLS IN STRING A=0.B DAT0=A.B %CLEAR COIN C=0.A D0=(5)MY C=DAT0.B C+D.A CSRB.A CSRB.A CSRB.A CSL.A CSRB.A A=C.A CSL.A C+A.A C+C.A D0=(5)LEVEL.SURFACE A=DAT0.A A+C.A C=0.A D0=(5)MX C=DAT0.B C+B.A ?ST=0.11 { C-1.A ST=0.11 } CSRB.A CSRB.A CSRB.A CSL.A CSRB.A B=A.A D0=(5)SCROL.COUNTER A=0.A A=DAT0.P C-A.A D=C.P A=B.A CSRB.A CSRB.A A+C.A D0=A SKUB { } C=RSTK D1=C LC 7 B=C.P { A=DAT1.X C=D.P ?CBIT=0.0 { A+A.X } ?CBIT=0.1 { A+A.X A+A.X } A=-A-1.X C=DAT0.X A&C.X DAT0=A.X D0+34 B-1.P UPNC } D0=(5)COIN A=DAT0.X LC 99 ?A<C.B { A=0.X DAT0=A.X D0=(5)VIE A=DAT0.B SETDEC A+1.B SETHEX DAT0=A.B GOSUBL COINS GOSUBL VIES RTNCC } SETDEC A+1.X SETHEX DAT0=A.X GOSUBL COINS RTNCC *RESET.CONTER %VIE LA 04 D0=(5)VIE DAT0=A.B %COIN A=0.X D0=(5)COIN DAT0=A.X *RESET.1 %SCROLL X A=0.X D0=(5)POSX DAT0=A.X RTN *PRESENTATION A=0.A D0=(5)START DAT0=A.A SKUBL { INCLUDE PRE } C=RSTK C+20.A R4=C.W *PRES A=0.W D0=(5) $00128 { A=DAT0 6 ?A#0.W UP } A=R4.A D1=A GOSUBL AF A=0.W D0=(5) $00128 { A=DAT0 6 ?A#0 W UP } A=R4.A LC 00880 A+C.A D1=A GOSUBL AF |
A=0.W D0=(5) $00128 { A=DAT0 6 ?A#0 W UP } A=R4.A LC 00880 A+C.A D1=A GOSUBL AF D0=(5)START A=DAT0.A A+1.A DAT0=A.A LC(5)#8000 ?A=>C.A { A=R0.A LC(5)$72C A+C.A D0=A LC 8 A=0.W { DAT0=A.W D0+16 DAT0=A.W D0+16 DAT0=A.B C-1.P UPNC } } %TEST LA TOUCHE ENTER LC 010 OUT=C=IN ?CBIT=0.4 { GOLONG REPLAY } %TEST LA TOUCHE DROP LC 010 OUT=C=IN ?CBIT=0.0 { GOLONG QUIT } GOTO PRES *AF A=R0.A D0=A LC 87 { A=DAT1.W DAT0=A.W D0+16 D1+16 C-1.B UPNC } RTN *LOAD_L D0=(5)@LIFT A=DAT0.A A+C.A D0=A A=DAT0.P ?A=>0.P { ST=0.5 RTNSC } ST=1.5 LC 1 ?A=>C.P { ST=0.6 } LC 2 ?A=>C.P { ST=1.6 } D0+1 D1=(5)SX A=DAT0.B DAT1=A.B D0+2 D1=(5)SY A=DAT0.B DAT1=A.B D0+2 A=DAT0.P ?A=0.P { ST=0.8 } SKELSE { ST=1.8 } RTNCC *SAVE_L D0=(5)@LIFT A=DAT0.A A+C.A D0=A ?ST=1.5 { C=0.P } SKELSE { ?ST=1.6 { LC 1 } SKELSE { LC 2 } } DAT0=C.P D0+1 D1=(5)SX A=DAT1.B DAT0=A.B D0+2 D1=(5)SY A=DAT1.B DAT0=A.B D0+2 ?ST=0.8 => { A=0.P } SKELSE { LA 1 } DAT0=A.P RTN *LIFT ?ST=1.7 => { %ON SCROL LE LIFT D0=(5)SX A=DAT0.B ?A=>0.B { ST=0.5 % DEAD LIFT } SKELSE { A-1.B DAT0=A.B } } % READ SPRITE A=R2.A LC(5)$00374 A+C.A R4=A.W LC 03 B=C.B A=0.A C=0.A D0=(5)SX A=DAT0.B LC 60 ?A>C.B { D0=(5)SY C=DAT0.B GOSUBL DISP.A.C.R4.B } % LOOK AROUND LIFT ST=0.13 D0=(5)SX A=DAT0.B D0=(5)MX C=DAT0.B { C+6.B ?C<A.B EXIT A+11.B ?C>A.B EXIT D0=(5)SY A=DAT0.B D0=(5)MY C=DAT0.B C+10.B ?C<A.B EXIT C-4.B ?C>A.B EXIT { ?ST=1.1 EXIT ?ST=0.0 EXIT ?ST=1.3 EXIT ST=0.0 GOSUBL FIXSOL } ST=1.13 } % MOVE LIFT %%%%%%%%%% ?ST=0.8 RTNYES ?ST=0.6 { %VERS LA DROITE GOSUBL MURD_T SKIPNC { ST=0.6 EXIT2 } D0=(5)SX A=DAT0.B LC(2) ?A=>C.B { ST=0.6 EXIT2 } A+1.B DAT0=A.B ?ST=0.13 => { EXIT2 } C=ST RSTK=C %R4=C.X ST=0.7 GOSUBL YD ?ST=0.7 { GOSUBL LIFT.LEFT D0=(5)SX A=DAT0.B A-1.B DAT0=A.B } C=RSTK %C=R4.X ?ST=1.4 => { CBIT=1.4 } ST=C } SKELSE { %VERS LA GAUCHE GOSUBL MURG_T SKIPNC { ST=1.6 EXIT2 } D0=(5)SX A=DAT0.B ?A=>0.B { ST=1.6 EXIT2 } A-1.B DAT0=A.B ?ST=0.13 EXIT GOSUBL YG } RTN *TESTD %SI ON A PERDU 1 VIE ?ST=1.3 GOYES YD LC 040 OUT=C=IN ?CBIT=1.0 { GOTO ND } *YD ?ST=1.3 GOYES AH GOSUBL MURD SKIPNC { GOTO ND } *AH D0=(5)MX A=DAT0.B LC 40 ?A<C.B { %ON EST ARRIVE ! ?ST=1.4 GOYES E GOSUBL SCROLG } SKELSE { *E LC 5F ?A<C.B { GOLONG CLEARED } A+1.B DAT0=A.B } % ANIMATION DROITE D0=(5)TICK.COUNTER A=DAT0.B ?A=0.B { A-1.B DAT0=A.B } SKELSE { D1=(5)TICK A=DAT1.B DAT0=A.B % FRAME D0=(5)M.ANIM A=DAT0.B LC 04 ?A=>C.B { A+1.B } SKELSE { LA 01 } DAT0=A.B } *ND RTN *TESTG LC 040 OUT=C=IN ?CBIT=1.2 { GOTO NG } *YG ?ST=1.3 GOYES AI GOSUBL MURG SKIPNC { GOTO NG } *AI D0=(5)MX A=DAT0.B ?A=>0.B { GOTO NG } A-1.B DAT0=A.B % ANIMATION GAUCHE D0=(5)TICK.COUNTER A=DAT0.B ?A=0.B { A-1.B DAT0=A.B } SKELSE { D1=(5)TICK A=DAT1.B DAT0=A.B % FRAME D0=(5)M.ANIM A=DAT0.B LC 01 ?A=>C.B { A-1.B } SKELSE { LA 04 } DAT0=A.B } *NG RTN *LIFT.LEFT D0=(5)@LIFT A=DAT0.A D0=A C=0.P { LA(1)LMAX ?C=A.P EXIT A=DAT0.P ?A=0.P { D0+1 A=DAT0.B ?A=>0.B { A=0.P D0-1 DAT0=A.P EXIT2 } A-1.B DAT0=A.B D0-1 } D0+6 C+1.P UP } D0=(5)STABLE A=DAT0.A D0=A C=0.B { LA(2)SMAX ?C=A.B EXIT A=DAT0.P ?A=0.P { D0+1 D0+2 D0+3 A=DAT0.B ?A=>0.B { A=0.P D0-1 D0-2 D0-3 DAT0=A.P EXIT2 } A-1.B DAT0=A.B D0-1 D0-2 D0-3 } D0+11 C+1.B UP } RTN *ADD.CHAMP %met bloc banal C=R1.A RSTK=C D0=(5)LEVEL.SURFACE A=DAT0.A R1=A.W A=R2.A LC(5)$18A A+C.A R4=A.W A=0.A C=0.A D0=(5)MX A=DAT0.B ASRB.A ASRB.A ASRB.A ASL.A ASRB.A B=A.A A=0.A C=0.A D0=(5)SCROL.COUNTER C=DAT0.P D0=(5)MX A=DAT0.B C+A.A LA(5)#8 C+4.A %%%%% C modulo A %%%%% { ?C<A.A EXIT C-A.A UP } LA(5)#4 ?C=>A.A { A=0.A D0=(5)MX A=DAT0.B C-4.A A-C.A B=A.A } SKELSE { A=0.A D0=(5)MX A=DAT0.B C-4.A A-C.A B=A.A } A=B.A R3=A.W LC(2)#7 B=C.B C=0.A D0=(5)MY C=DAT0.B CSRB.A CSRB.A CSRB.A CSL.A CSRB.A GOSUBL DISP.A.C.R4.B C=RSTK R1=C.W LC(5)$41E R4=C.W D0=00104 A=DAT0.A D0=A A=0.B A=DAT0.P ASRB.P ASRB.P ?A=0.P RTNYES A+2.P B=A.B %LC(2)#3 B=C.B A=R3.A C=0.A D0=(5)MY C=DAT0.B C-8.A RTNC CSRB.A CSRB.A CSRB.A CSL.A CSRB.A GOLONG ADDOBJ.A.C.B.R4 RTN *CLEAR.STABLE D0=(5)STABLE A=DAT0.A D0=A LC(2)#15 A=0.W { DAT0=A.11 D0+11 C-1.B UPNC } RTN *OBJ.TORTLE % READ SPRITE A=R2.A C=R4.A A+C.A %MODE CARAPACE ?ST=1.9 => { A+8.A } SKELSE { %GAUCHE OU DROITE ?ST=0.6 { A+4.A } } %C=0.A %D1=(5)T.ANIM C=DAT1.B %C+C.A C+C.A A+C.A R4=A.W LC 07 B=C.B A=0.A C=0.A D0=(5)SX A=DAT0.B LC 60 ?A>C.B { D0=(5)SY C=DAT0.B GOSUBL DISP.A.C.R4.B } % LOOK AROUND MARIO D0=(5)SX A=DAT0.B D0=(5)MX C=DAT0.B { C+4.B ?C<A.B EXIT A+8.B ?C>A.B EXIT D0=(5)SY A=DAT0.B D0=(5)MCLIPH C=DAT0.B A+C.B D0=(5)MY C=DAT0.B C+8.B ?C<A.B EXIT C-8.B ?C>A.B EXIT C+6.B ?C<A.B { ?ST=1.0 GOYES AA2 ?ST=1.9 => { ?ST=0.10 GOYES AA2 } %MARIO MORDU GOSUBL LOST_LIFE EXIT2 } SKELSE { %TORTUE FRAPPEE *AA2 GOSUBL TORTLE_HIT } } { ?ST=0.9 EXIT ?ST=1.10 EXIT RTN } ?ST=1.10 { ?ST=0.8 RTNYES } ?ST=0.6 { %VERS LA DROITE GOSUBL MURD_T SKIPNC { ST=0.6 EXIT2 } D0=(5)SX A=DAT0.B % LC 5F ?A<C.B % { % ST=0.6 EXIT2 % } A+1.B DAT0=A.B } SKELSE { %VERS LA GAUCHE GOSUBL MURG_T SKIPNC { ST=1.6 EXIT2 } D0=(5)SX A=DAT0.B ?A=>0.B { ST=1.6 EXIT2 } A-1.B DAT0=A.B } |
?ST=0.10 { GOSUBL SOL_T SKIPC { D0=(5)SY A=DAT0.B LC 37 ?A=>C.B => { ST=0.5 %DEATH } SKELSE { A+1.B DAT0=A.B } } GOTO CHUTE2 } %PAS DE CHUTE ?ST=0.6 { GOSUBL SOL_T SKIPC { ST=0.6 } } SKELSE { GOSUBL SOL_T SKIPC { ST=1.6 } } *CHUTE2 GOLONG FIN *OBJ.KOOPA % READ SPRITE A=R2.A C=R4.A A+C.A R4=A.W LC 07 B=C.B A=0.A C=0.A D0=(5)SX A=DAT0.B LC 60 ?A>C.B { D0=(5)SY C=DAT0.B GOSUBL DISP.A.C.R4.B } ?ST=0.8 RTNYES ?ST=0.6 { %VERS LA DROITE GOSUBL MURD_T SKIPNC { ST=0.6 EXIT2 } D0=(5)SX A=DAT0.B A+1.B DAT0=A.B } SKELSE { %VERS LA GAUCHE GOSUBL MURG_T SKIPNC { ST=1.6 EXIT2 } D0=(5)SX A=DAT0.B ?A=>0.B { ST=1.6 EXIT2 } A-1.B DAT0=A.B } % LOOK AROUND MARIO D0=(5)SX A=DAT0.B D0=(5)MX C=DAT0.B { C+4.B ?C<A.B EXIT A+8.B ?C>A.B EXIT D0=(5)SY A=DAT0.B D0=(5)MCLIPH C=DAT0.B A+C.B D0=(5)MY C=DAT0.B C+8.B ?C<A.B EXIT C-8.B ?C>A.B EXIT C+8.B %C+6.B ?C<A.B { ?ST=1.0 GOYES AA3 %MARIO MORDU GOSUBL LOST_LIFE EXIT2 } SKELSE { %KOOPA FRAPPEE *AA3 % GOSUBL TORTLE_HIT ST=0.5 } } GOSUBL SOL_T SKIPC { D0=(5)SY A=DAT0.B LC 37 ?A=>C.B => { ST=0.5 %DEATH } SKELSE { A+1.B DAT0=A.B } } GOLONG FIN GOLONG FIN *ADDOBJ.A.C.B.R4 D=C.A C=B.B RSTK=C B=A.A C=D.A %FIND PLACE D0=(5)STABLE A=DAT0.A D0=A C=0.B { LA(2)SMAX ?C=>A.B { C=RSTK RTN } A=DAT0.P ?A=0.P EXIT D0+11 C+1.P UP } %get this free field LC 1 DAT0=C.P D0+1 %type=1 (tortle) C=RSTK DAT0=C.B D0+2 %set data position C=R4.A DAT0=C.X D0+3 %compute X position A=B.B DAT0=A.B D0+2 %compute Y position C=D.B DAT0=C.B D0+2 %set X&Y move P=0 C=0.P DAT0=C.P RTN *ADDOBJET2 D0=(5)STYPE DAT0=A.B D0=(5)SDATA DAT0=C.X %compute X position LA(2)#13 ASL.A ASRB.A D0=(5)AX DAT0=A.B GOTO NEXT.ADDOBJET *ADDOBJET D0=(5)STYPE DAT0=A.B D0=(5)SDATA DAT0=C.X %compute X position LA(2)#13 C=D.B A-C.B ASL.A ASRB.A D0=(5)AX DAT0=A.B *NEXT.ADDOBJET %compute Y position LA(2)#08 C=B.B A-C.B ASL.A ASRB.A D0=(5)AY DAT0=A.B %FIND PLACE D0=(5)STABLE A=DAT0.A D0=A C=0.B { LA(2)SMAX ?C=A.B RTNYES A=DAT0.P ?A=0.P EXIT D0+11 C+1.B UP } %get this free field LC 1 DAT0=C.P D0+1 %type= D1=(5)STYPE C=DAT1.B DAT0=C.B D0+2 %set data position D1=(5)SDATA C=DAT1.X DAT0=C.X D0+3 %compute X position D1=(5)AX C=DAT1.B DAT0=C.B D0+2 %compute Y position D1=(5)AY C=DAT1.B DAT0=C.B D0+2 %set X&Y move P=0 C=0.P DAT0=C.P RTN *OBJ.HEART.UP % READ SPRITE A=R2.A C=R4.A A+C.A R4=A.W LC 07 B=C.B A=0.A C=0.A D0=(5)SX A=DAT0.B LC 60 ?A>C.B { D0=(5)SY C=DAT0.B GOSUBL DISP.A.C.R4.B } ?ST=0.8 RTNYES ?ST=0.6 { %VERS LA DROITE GOSUBL MURD_T SKIPNC { ST=0.6 EXIT2 } D0=(5)SX A=DAT0.B % LC 5F ?A<C.B % { % ST=0.6 EXIT2 % } A+1.B DAT0=A.B } SKELSE { %VERS LA GAUCHE GOSUBL MURG_T SKIPNC { ST=1.6 EXIT2 } D0=(5)SX A=DAT0.B ?A=>0.B { ST=1.6 EXIT2 } A-1.B DAT0=A.B } %LOOK AROUND CHAMP D0=(5)SX A=DAT0.B D0=(5)MX C=DAT0.B { C+4.B ?C<A.B EXIT A+8.B ?C>A.B EXIT D0=(5)SY A=DAT0.B D0=(5)MCLIPH C=DAT0.B A+C.B D0=(5)MY C=DAT0.B C+4.B ?C<A.B EXIT A+8.B ?C>A.B EXIT %CHAMP UP D0=(5)VIE A=DAT0.B SETDEC A+1.B SETHEX DAT0=A.B %PLUS DE CHAMPIGNON ST=0.5 %UN PANEL A AFFICHER D0=(5)FLAG01 A=DAT0.4 ABIT=1.0 DAT0=A.4 } GOSUBL SOL_T SKIPC { D0=(5)SY A=DAT0.B LC 37 ?A=>C.B => { ST=0.5 %DEATH } SKELSE { A+1.B DAT0=A.B } } GOLONG FIN *OBJ.CHAMP.UP % READ SPRITE A=R2.A C=R4.A A+4.A A+C.A R4=A.W LC 07 B=C.B A=0.A C=0.A D0=(5)SX A=DAT0.B LC 60 ?A>C.B { D0=(5)SY C=DAT0.B GOSUBL DISP.A.C.R4.B } ?ST=0.8 RTNYES ?ST=0.6 { %VERS LA DROITE GOSUBL MURD_T SKIPNC { ST=0.6 EXIT2 } D0=(5)SX A=DAT0.B % LC 5F ?A<C.B % { % ST=0.6 EXIT2 % } A+1.B DAT0=A.B } SKELSE { %VERS LA GAUCHE GOSUBL MURG_T SKIPNC { ST=1.6 EXIT2 } D0=(5)SX A=DAT0.B ?A=>0.B { ST=1.6 EXIT2 } A-1.B DAT0=A.B } %LOOK AROUND CHAMP D0=(5)SX A=DAT0.B D0=(5)MX C=DAT0.B { C+4.B ?C<A.B EXIT A+8.B ?C>A.B EXIT D0=(5)SY A=DAT0.B D0=(5)MCLIPH C=DAT0.B A+C.B D0=(5)MY C=DAT0.B C+4.B ?C<A.B EXIT A+8.B ?C>A.B EXIT GOTO CCC } SKIP { *CCC %+20 COINS D0=(5)COIN A=DAT0.X LC 90 ?A<C.B { A=0.X DAT0=A.X D0=(5)VIE A=DAT0.B SETDEC A+1.B SETHEX DAT0=A.B %UN PANEL A AFFICHER D0=(5)FLAG01 A=DAT0.4 ABIT=1.0 ABIT=1.1 DAT0=A.4 } SKELSE { SETDEC A+16.X SETHEX DAT0=A.X %UN PANEL A AFFICHER D0=(5)FLAG01 A=DAT0.4 ABIT=1.1 DAT0=A.4 } %PLUS DE CHAMPIGNON ST=0.5 } GOSUBL SOL_T SKIPC { D0=(5)SY A=DAT0.B LC 37 ?A=>C.B => { ST=0.5 %DEATH } SKELSE { A+1.B DAT0=A.B } } GOLONG FIN *OBJ.STAR.UP % READ SPRITE A=R2.A C=R4.A A+8.A A+C.A R4=A.W LC 07 B=C.B A=0.A C=0.A D0=(5)SX A=DAT0.B LC 60 ?A>C.B { D0=(5)SY C=DAT0.B GOSUBL DISP.A.C.R4.B } ?ST=0.8 RTNYES ?ST=0.6 { %VERS LA DROITE GOSUBL MURD_T SKIPNC { ST=0.6 EXIT2 } D0=(5)SX A=DAT0.B % LC 5F ?A<C.B % { % ST=0.6 EXIT2 % } A+1.B DAT0=A.B } SKELSE { %VERS LA GAUCHE GOSUBL MURG_T SKIPNC { ST=1.6 EXIT2 } D0=(5)SX A=DAT0.B ?A=>0.B { ST=1.6 EXIT2 } A-1.B DAT0=A.B } %LOOK AROUND CHAMP D0=(5)SX A=DAT0.B D0=(5)MX C=DAT0.B { C+4.B ?C<A.B EXIT A+8.B ?C>A.B EXIT D0=(5)SY A=DAT0.B D0=(5)MCLIPH C=DAT0.B A+C.B D0=(5)MY C=DAT0.B C+4.B ?C<A.B EXIT A+8.B ?C>A.B EXIT SKIP { %CHAMP UP D0=(5)VIE A=DAT0.B SETDEC A+1.B SETHEX DAT0=A.B } %PLUS DE CHAMPIGNON ST=0.5 %UN PANEL A AFFICHER D0=(5)FLAG01 A=DAT0.4 ABIT=1.0 DAT0=A.4 } GOSUBL SOL_T SKIPC { D0=(5)SY A=DAT0.B LC 37 ?A=>C.B => { ST=0.5 %DEATH } SKELSE { A+1.B DAT0=A.B } } GOLONG FIN *DIVISION %A/C=D+B D=0.A { ?A=>C.A => { A-C.A D+1.A UP2 } SKELSE { B=A.A } } RTN *FLAGS D0=(5)FLAG01 A=DAT0.4 ?ABIT=0.0 { ABIT=0.0 DAT0=A.4 GOSUBL VIES } D0=(5)FLAG01 A=DAT0.4 ?ABIT=0.1 { ABIT=0.1 DAT0=A.4 GOSUBL COINS } RTN } |