Dies sind die einzelnen Assembler-Code-Dateien des Spiels Electro Maniac!.
##############################################################################
Um das EMANIAC.OBJ zu kompilieren, muss die folgende Datei MV.M65 (Makro-Verwaltung)
geladen und kompiliert werden.
##############################################################################
0100 .OPT NO LIST 0110 ; ****************************** 0120 ; * Electro Maniac! * 0130 ; ****************************** 0140 ; * Include-Dateien Verwaltung * 0150 ; * Letzte Revision: 28-03-88 * 0160 ; * by Stefan C. Mueller * 0170 ; * (C) MCMLXXXVII S.C.M.Soft! * 0180 ; ****************************** 0190 ; 0200 ; SAVE #D:MV.M65 0210 ; ASM,,#D:EMANIAC.OBJ 0220 ; 0230 .INCLUDE #D:SOUNDM.M65 0240 ; 0244 BASE = $B800 ;Startadr.PM/FNT 0245 BASE2 = $9C00 ;Startadr.Prg. 0250 LESTARTADR = $5000 0260 PMS = BASE/256 0270 FONTP = BASE/256 0280 FONTPT = BASE 0290 OFFRAM = 512 0300 SCREEN = BASE-1024 ;($B400) 0310 SCREEN2 = SCREEN+40 0320 MANIACSRAM = BASE+1024 0330 MANIACDLRAM = BASE+1024+400 0340 ; 0350 .INCLUDE #D:LABEL.M65 0360 ; ------------------------------ 0370 *= BASE2 0375 JMP BASE21 ;INIT-Einsprung 0380 HEADER 0520 JSR INITMANIACDL2 0530 LDA # <DLLOAD2 0540 STA MANIACDLRAM+121 0550 LDA # >DLLOAD2 0560 STA MANIACDLRAM+122 0570 LDA # <DLLOAD 0580 STA 560 0590 STA $D402 0600 LDA # >DLLOAD 0610 STA 561 0620 STA $D403 0630 LDA #64 0640 STA 623 0650 STA $D01B 0660 LDA #0 ;SCORE LOESCHEN 0670 LDY #3 0680 GG1 STA SCOREM,Y 0690 STA SCOREHI,Y 0700 DEY 0710 BPL GG1 0720 INC SCOREHI+1 :HI=00010000 0730 JMP MAKECOLORUP 0750 DLLOAD .BYTE 112,112,112,112,112,112,112,112,112,112,96,1 0760 .WORD MANIACDLRAM 0770 DLLOAD2 .BYTE 65 0780 .WORD DLLOAD 0790 .INCLUDE #D:VORLOAD.M65 0795 BASE21 0810 *= 738 0820 .WORD HEADER 0830 ;------------------------------- 0840 *= BASE21 0850 PLA ;CLR STACK 0860 PLA 0870 PLA ; WAT NU? 0880 CMP #99 0890 BNE A9A 0900 LDA #0 ; LOESCHE PAGE 6 0910 TAY 0920 ZZZ STA $0600,Y 0930 INY 0940 BNE ZZZ 0950 RTS 0960 A9A STA PLAY? 0970 CMP #2 0980 BNE A2A 0990 JMP A0A ; SCOMP=> 1000 A2A CMP #3 1010 BNE A4A 1020 JMP A1A ; DECOMP=> 1030 A4A CMP #$FF 1040 BNE A3A 1060 LDY #39 1070 A8A LDA VSPT2,Y 1080 STA SCREEN,Y 1090 DEY 1100 BPL A8A 1110 JSR VORSPANN 1120 RTS 1200 VSPT2 .SBYTE " Electro Maniac! Level-Editor 2.0 " 1220 ; 1230 ; ------------------------------ 1240 ; ORGINAL-PLAY EINSPRUNG ADRESSE 1250 ; MIT PLAY? = 4 ALS PARAMETER! 1260 ; ------------------------------ 1270 ORGGAME 1280 LDA #4 1290 STA PLAY? 1300 A3A 1310 .INCLUDE #D:MAIN.M65 1320 ; ------------------------------ 1330 ACFO .INCLUDE #D:ACTIONFO.M65 1340 .INCLUDE #D:DLI.M65 1350 .INCLUDE #D:SCORE.M65 1360 .INCLUDE #D:DATABOB.M65 1370 .INCLUDE #D:SUBS.M65 1380 .INCLUDE #D:MMOVE.M65 1390 .INCLUDE #D:INITMDAT.M65 1400 .INCLUDE #D:CHARSET.M65 1410 .INCLUDE #D:DLIST.M65 1420 LAND .INCLUDE #D:LUFT.M65 1430 ; ------------------------------ 1440 VBI CLD 1450 LDA #0 1460 STA DLIC 1470 LDA VBIANAUS 1480 BNE VBIAN 1490 JMP EOVBI 1500 VBIAN .INCLUDE #D:BEKILLED.M65 1510 .INCLUDE #D:KILLER.M65 1520 .INCLUDE #D:STEINE.M65 1530 ; ------------------------------ 1540 LDA JMPHIM? 1550 BEQ RL ;JOYSTICK-ABFR. 1560 ; 1570 LLL5 DEC JMPTIME 1580 ; 1590 BNE LLL9 ; JMPTIME<>0 1600 LDA RUNTER ; JMPTIME=0 1610 BEQ LLL1 ; RUNTER=0 1620 ; RUNTER=1 1630 LDA #KILLTIME ; ZU TIEF... 1640 STA BOBTOT ;...GEFALLEN! 1650 SOUNDI7 1660 JMP LLL4 1670 ; 1680 LLL9 LDA RUNTER ; 1690 BEQ LLL2 ; RUNTER=1 1700 ; RUNTER=0 1710 LDA #1 ;=POS. 1720 STA DELTAY 1730 JSR LAND ;FESTER BODEN? 1740 BCC LLL4 ;NO, DO'NT LAND 1750 ;*** FESTER BODEN UNTER BOB! 1760 SOUNDI6 1770 LDA #0 1780 STA JMPHIM? ;NICHT SPRINGEN 1790 STA JMPTIME ;JMPTIME=0!!** 1800 STA DELTAY 1810 LDA STATUS 1820 AND #4 1830 STA STATUS ;JETZT STEHEN! 1840 ; LDA #2 1850 ; STA DARFTRIG ;NOCH NICHT TR. 1860 LLL4 JMP ZP 1870 ; 1880 LLL2 LDA #-1 1890 STA DELTAY 1900 JMP LLL4 1910 ; 1920 LLL1 LDA #0 1930 STA DELTAY 1940 LDA #1 ;NUN RUNTER! 1950 STA RUNTER 1960 LDA #MAXRUNTER 1970 STA JMPTIME 1980 JMP LLL4 1990 ;*** RECHTS ODER LINKS ABFRAGE*** 2000 RL 2010 JSR AUSWERTUNG 2020 LDA STICK0 2030 EOR #15 2040 STA STICK 2050 ; 2060 AND #8 2070 BNE MHR ;MOVE HIM RECHTS 2080 LDA STICK 2090 AND #4 2100 BNE MHL ;MOVE HIM LINKS 2110 LDA #0 ;NO MOVE 2120 STA DELTAX 2130 LDA STATUS 2140 AND #4 2150 STA STATUS 2160 JMP LLL6 2170 ; 2180 MHR 2190 LDA #1 2200 STA DELTAX 2210 LDA #2 2220 STA STATUS 2230 SOUNDI4 2240 JMP LLL60 2250 ; 2260 MHL LDA #-1 2270 STA DELTAX 2280 LDA #2+4 2290 STA STATUS 2300 SOUNDI4 2310 LLL60 2320 LDA 20 2330 LSR A 2340 AND #1 2350 ORA STATUS 2360 STA STATUS 2370 LLL6 2380 LDA DARFTRIG 2390 BEQ LLL7 2400 ; 2410 DEC DARFTRIG 2420 JMP LLL8 2430 ; 2440 LLL7 2450 LDA 644 ;TRIGGER0 2460 BNE LLL8 2470 SOUNDI3 2480 LDA #1 2490 STA JMPHIM? 2500 LDA STATUS 2510 AND #4 2520 ORA #1 2530 STA STATUS 2540 LDA #LINESHOCH 2550 STA JMPTIME 2560 LDA #0 ;HOCHSPRINGEN! 2570 STA RUNTER 2580 LDA #2 2590 STA DARFTRIG 2600 ; 2610 LLL8 JSR MAKEACTION 2620 .INCLUDE #D:ACTIONF2.M65 2630 EOVBI 2640 ZP .INCLUDE #D:ZEICHNEP.M65 2650 ; 2660 JSR ACFO 2670 SOUNDA0 2680 SOUNDA1 2690 SOUNDA2 2700 SOUNDA3 2710 SOUNDA4 2720 SOUNDA5 2730 SOUNDA6 2740 SOUNDA7 2750 SOUNDA9 2760 SOUND3A1 2770 SOUND3A2 2780 ; 2790 LDA RANDOM ;glaenzend! 2800 AND #$F0 2810 ORA #$0A 2820 STA 709 2830 ; 2840 JMP $E462 2850 ; 2860 *** AUSWERTUNG DER STEINE **** 2870 ; 2880 AUSWERTUNG 2890 JSR LAND 2900 BCS ALLRIGHT 2910 ; 2920 LDA #1 ;FALLEN! 2930 STA JMPHIM? 2940 STA DELTAY 2950 STA RUNTER 2960 LDA #MAXRUNTER 2970 STA JMPTIME ;...FALLEN 2980 LDA STATUS 2990 AND #4 3000 STA STATUS 3010 LDA #0 3020 STA DELTAX 3030 PLA ;JSR RET.ADR. 3040 PLA ;VON STACK CL. 3050 JMP LLL5 3060 ALLRIGHT 3070 RTS 3080 ; 3090 .INCLUDE #D:STACTION.M65 3100 .INCLUDE #D:VSPANN.M65 3105 .INCLUDE #D:COMDECOM.M65 3110 ENDOFPRG
##############################################################################
In der Datei ACTIONF2.M65 wird die Reaktion von Bobby auf unterschiedliche Steine behandelt.
##############################################################################
0100 ; ****************************** 0110 ; * Reaktionen auf Steine II * 0120 ; * Letzte Revision: 08-11-87 * 0130 ; * by Stefan C. Mueller * 0140 ; * (C) MCMLXXXVII S.C.M.Soft! * 0150 ; ****************************** 0160 ; 0170 ; SAVE #D:ACTIONF2.M65 0180 ; 0190 LDY #0 0200 LDA STONE2 0210 AND #15 0220 CMP #6 ;BONUS? 0230 BEQ BNS ;JA 0240 CMP #3 ;SICHERUNGSKAST? 0250 BNE EOM3 ;NEIN 0260 ; 0270 LDA #2 ;JA (2=KASTEN) 0280 STA (PAGE02),Y 0290 SOUNDI2 0300 LDA #1 0310 JSR SCOREADD 0320 ; SICHERUNGSKASTENZAEHLER-1 0330 DEC NOKASTEN 0350 ; 0360 ;--- FRESSITINIT -------------- 0370 ; LDA NOKASTEN 0380 BNE SM871 0390 LDA #1 0400 STA AMADIP 0410 LDA # <FRESSTIMESW 0420 STA FRESSTIME 0430 LDA # >FRESSTIMESW 0440 STA FRESSTIME+1 0450 JMP SM870 0460 SM871 0470 LDA #0 0480 STA AMADIP 0490 SM870 0500 ;------------------------------ 0510 ; 0520 ZXZ JMP EOM3 0530 BNS 0540 LDA #0 0550 STA (PAGE02),Y 0560 LDA #0 0570 JSR SCOREADD 0580 JSR LIVEDAZU ;EXTRA-LIVE!!! 0590 EOM3
##############################################################################
In der Datei ACTIONFO.M65 wird die Bewegung im Zeichensatz erzeugt, aus dem die Level zusammengesetzt sind.
##############################################################################
0100 ; ****************************** 0110 ; * Bewegungen im Zeichensatz * 0120 ; * Letzte Revision: 06-09-87 * 0130 ; * by Stefan C. Mueller * 0140 ; * (C) MCMLXXXVII S.C.M.Soft! * 0150 ; ****************************** 0160 ; 0170 ; SAVE #D:ACTIONFO.M65 0190 ; 0200 ;ZAEHLER VON 0...3 0220 FNTO = FONTP*256+8*8+OFFRAM 0230 FNTO2 = FONTP*256+15*8+OFFRAM 0240 LDA 20 0250 AND #64 0260 BNE LASER1 0270 ; 0280 LDA RANDOM 0290 STA FNTO2 0300 LDA RANDOM 0310 STA FNTO2+1 0320 LDA #1 0330 STA LASER? 0340 JMP LASERE 0350 LASER1 LDA #0 0360 STA FNTO2 0370 STA FNTO2+1 0380 STA LASER? 0390 LASERE 0400 LDA 20 0410 AND #1 0420 BEQ NFM 0430 LDY #0 0440 INC FNTZ 0450 LDA FNTZ 0460 AND #3 0470 STA FNTZ 0480 BEQ COPY0 0490 CMP #1 0500 BEQ COPY1 0510 CMP #2 0520 BEQ COPY2 0530 COPY3 0540 LDA POS4,Y 0550 STA FNTO,Y 0560 INY 0570 CPY #7*8 0580 BNE COPY3 0590 NFM RTS 0600 COPY2 0610 LDA POS3,Y 0620 STA FNTO,Y 0630 INY 0640 CPY #7*8 0650 BNE COPY2 0660 RTS 0670 COPY1 0680 LDA POS2,Y 0690 STA FNTO,Y 0700 INY 0710 CPY #7*8 0720 BNE COPY1 0730 RTS 0740 COPY0 0750 LDA POS1,Y 0760 STA FNTO,Y 0770 INY 0780 CPY #7*8 0790 BNE COPY0 0800 RTS
##############################################################################
In der Datei BEKILLED.M65 realisiert die Animation von Bobby, wenn er ein Leben verliert.
##############################################################################
0100 ; ****************************** 0110 ; * Bobby's Sterbeabgang * 0120 ; * Letzte Revision: 08-08-87 * 0130 ; * by Stefan C. Mueller * 0140 ; * (C) MCMLXXXVII S.C.M.Soft! * 0150 ; ****************************** 0160 ; 0170 ; SAVE #D:BEKILLED.M65 0180 ; 0190 LDA BOBTOT ;BOB TOT? 0200 BEQ EOMB ;NEIN 0210 ; 0220 LDX #0 0230 STX DELTAX 0240 INX 0250 STX DELTAY 0260 ; 0270 LDX #16 0280 BTL2 LDA RANDOM 0290 CMP BOBTOT 0300 BCC BTL0 0310 AND RANDOM 0320 EOR #255 0330 AND LOECHER,X 0340 STA LOECHER,X 0350 BTL0 DEX 0360 BPL BTL2 0370 BTL1 DEC BOBTOT 0380 BEQ GOVER 0390 JMP ZP 0400 ; 0410 ; Schluss mit sterben !!! 0420 ; 0430 GOVER LDA #1 ; Bob ist tot! 0440 STA WASNUN 0450 BTL3 LDA #0 0455 STA VBIANAUS ;07-10-87 0460 STA CRASHBIT 0465 STA XPOS 0470 STA DELTAX 0480 STA DELTAY 0490 STA JMPHIM? 0500 STA DARFTRIG 0510 STA SOUNDN2 0520 STA SOUNDN3 0530 ; 0540 LDX #16 0550 LDA #255 0560 BTL4 STA LOECHER,X 0570 DEX 0580 BPL BTL4 0590 JMP ZP 0600 EOMB 0610 LDA 53279 0620 CMP #3 0630 BNE EOMB33 0640 STA WASNUN 0650 EOMB33
##############################################################################
In der Datei CHARSET.M65 sind alle Character codiert (8 Bytes á 8 bit), aus denen die Zeichen bestehen.
##############################################################################
0100 ; SAVE #D:CHARSET.M65 0105 ; vom 05-09-87 0110 POS2 .BYTE 187,221,238,119,255,255,0,0 0120 .BYTE 221,187,119,238,255,255,0,0 0130 .BYTE 255,156,54,99,201,255,0,0 0140 .BYTE 0,255,255,102,102,255,102,255 0150 .BYTE 187,255,24,52,60,24,0,0 0160 .BYTE 221,255,24,60,52,24,0,0 0170 .BYTE 0,255,255,102,102,255,0,0 0180 POS3 .BYTE 221,238,119,187,255,255,0,0 0190 .BYTE 187,119,238,221,255,255,0,0 0200 .BYTE 255,201,99,54,156,255,0,0 0210 .BYTE 240,240,111,111,102,255,102,255 0220 .BYTE 221,255,24,60,52,24,0,0 0230 .BYTE 187,255,24,52,60,24,0,0 0240 .BYTE 0,0,255,255,102,255,102,0 0250 POS4 .BYTE 238,119,187,221,255,255,0,0 0260 .BYTE 119,238,221,187,255,255,0,0 0270 .BYTE 255,201,99,54,156,255,0,0 0280 .BYTE 0,255,255,102,102,255,102,255 0290 .BYTE 238,255,24,60,44,24,0,0 0300 .BYTE 119,255,24,44,60,24,0,0 0310 .BYTE 0,255,255,102,102,255,0,0 0320 ; ------------------------------ 0330 LINE1 0340 .BYTE 0,0,0,0,0,0,0,0 0350 .BYTE 0,12,30,30,12,0,12,0 0360 .BYTE 0,124,198,186,162,186,198,124 0370 ; .BYTE 0,0,0,0,0,0,0,0 ;LEER 0380 ; .BYTE 0,0,0,0,0,0,0,0 ;LEER 0390 .BYTE 124,238,198,130,238,238,238,124 0400 .BYTE 124,238,238,238,130,198,238,124 0410 .BYTE 124,238,230,130,130,230,238,124 0420 .BYTE 124,238,206,130,130,206,238,124 0421 .BYTE 0,0,0,0,0,0,0,0 ;leer 0422 .BYTE 0,12,24,48,48,48,24,12 ;¨ 0423 .BYTE 0,96,48,24,24,24,48,96 ;© 0430 .BYTE 127,255,195,201,195,201,255,127 ;Ò 0440 .BYTE 254,255,3,207,207,207,255,254 ;Ô 0450 ; .BYTE 127,255,225,207,207,225,255,127 ;Ã 0460 .BYTE 0,0,0,0,0,24,24,48 0470 .BYTE 0,0,0,252,0,0,0,0 0480 .BYTE 0,0,0,0,0,48,48,0 0490 .BYTE 0,51,0,51,51,51,31,0 ;ue fuer "Mueller" 0500 .BYTE 0,124,198,198,68,198,198,124 0510 .BYTE 0,4,6,6,4,6,6,4 0520 .BYTE 0,124,6,6,124,192,192,124 0530 .BYTE 0,124,6,6,124,6,6,124 0540 .BYTE 0,68,198,198,124,6,6,4 0550 .BYTE 0,124,192,192,124,6,6,124 0560 .BYTE 0,64,192,192,124,198,198,124 0570 .BYTE 0,124,6,6,4,6,6,4 0580 .BYTE 0,124,198,198,124,198,198,124 0590 .BYTE 0,124,198,198,124,6,6,124 0600 .BYTE 0,0,24,24,0,24,24,0 0610 .BYTE 0,102,0,60,102,102,60,0 0620 .BYTE 0,102,0,102,102,102,62,0 ;ue fuer "fuer" 0630 .BYTE 0,102,0,62,102,102,62,0 0640 .BYTE 0,60,102,124,102,102,124,96 0650 .BYTE 0,60,102,12,24,0,24,0 0660 ; ------------------------------ 0670 LINE3 0680 .BYTE 0,0,0,0,0,0,0,0 0690 .BYTE 0,0,29,255,136,8,8,12 0700 .BYTE 24,8,61,255,188,24,24,126 0710 .BYTE 24,8,61,231,188,60,24,126 0720 .BYTE 24,8,8,8,8,8,8,12 0730 .BYTE 0,0,17,255,136,0,0,0 0740 .BYTE 8,42,28,119,28,42,8,0 0750 .BYTE 255,255,85,170,85,255,0,0 0760 POS1 .BYTE 119,187,221,238,255,255,0,0 0770 .BYTE 238,221,187,119,255,255,0,0 0780 .BYTE 255,156,54,99,201,255,0,0 0790 .BYTE 15,15,246,246,102,255,102,255 0800 .BYTE 119,255,24,44,60,24,0,0 0810 .BYTE 238,255,24,60,44,24,0,0 0820 .BYTE 255,255,102,102,102,255,0,0 0830 .BYTE 0,0,0,0,0,0,0,0 0840 .BYTE 255,255,255,255,255,255,255,255
##############################################################################
In der Datei COMDECOM.M65 komprimiert Level im Level-Editor und dekomprimiert Level im Spiel.
Ein Level hat somit max. 256 Byte. Dies wird durch Lauflängencodierung erreicht.
##############################################################################
0100 ;******************************* 0110 ;* Screen CompactorDecompactor * 0120 ;* Letzte Revision: 11-04-88 * 0130 ;* by Stefan C. Mueller * 0140 ;* (C) MCMLXXXVII S.C.M.Soft! * 0150 ;******************************* 0160 ; 0170 ; SAVE #D:COMDECOM.M65 0180 ; 0190 ;******************************* 0200 ;* der Compactor ... * 0210 ;******************************* 0220 ; 0230 SCPVR = $CB 0240 SCPNR = $D0 0250 SCPCOUNT = 212 0260 SCPMAX = 214 0270 SCPCC = 216 0280 SCPCZ = 217 0290 SCPNC = 218 0300 SCPMM = 22*20+1 0310 SCPNOS = $0653 ;!!! 0320 UEBERLAUF = 170 0330 ; 0340 A0A 0350 SCOMP 0360 LDA # >SCREEN2 0370 STA SCPVR+1 0380 LDA # <SCREEN2 0390 STA SCPVR 0400 PLA 0410 STA SCPNR+1 0420 PLA 0430 STA SCPNR 0440 LDA #0 0450 STA SCPCOUNT 0460 STA SCPCOUNT+1 0470 STA SCPNOS 0480 LDA SCPVR 0490 CLC 0500 ADC # <SCPMM 0510 STA SCPMAX 0520 LDA SCPVR+1 0530 ADC # >SCPMM 0540 STA SCPMAX+1 0550 JMP SCPLL1 ;START COMP. 0560 ; ------------------------------ 0570 SCPVRAM 0580 LDY #0 0590 LDA (SCPVR),Y 0600 CMP #67 ; LEERE SICHERUNG 0610 BNE SCPOLC1 0620 INC SCPNOS 0630 SCPOLC1 0640 INC SCPVR 0650 BNE SCPCC1 0660 INC SCPVR+1 0670 SCPCC1 0680 LDX SCPMAX 0690 CPX SCPVR 0700 BNE SCPML1 0710 LDX SCPMAX+1 0720 CPX SCPVR+1 0730 BNE SCPML1 0740 JSR SCPNRAM 0750 PLA 0760 PLA 0770 RTS 0780 SCPML1 RTS 0790 ; ------------------------------ 0800 SCPNRAM 0810 LDA SCPCOUNT+1 0820 CMP # >UEBERLAUF 0830 BEQ AA ;A=M 0840 BCS SCPML3 ;A>=M 0850 BCC AA1 ;A<M 0860 AA LDA # <UEBERLAUF 0870 CMP SCPCOUNT 0880 BCC SCPML3 ;A<M 0890 AA1 LDA SCPCC 0900 ASL A 0910 ASL A 0920 ASL A 0930 ASL A 0940 ORA SCPCZ 0950 LDY #0 0960 STA (SCPNR),Y 0970 INC SCPNR 0980 BNE SCPML3 0990 INC SCPNR+1 1000 SCPML3 1010 INC SCPCOUNT 1020 BNE SCPML2 1030 INC SCPCOUNT+1 1040 SCPML2 RTS 1050 ; ------------------------------ 1060 ; Start des Screen-Compactors 1070 ; ------------------------------ 1080 SCPLL1 1090 JSR SCPVRAM 1100 STA SCPCC 1110 LDA #0 1120 STA SCPCZ 1130 ; 1140 SCPLL2 1150 JSR SCPVRAM 1160 STA SCPNC 1170 ; 1180 LDA SCPNC 1190 CMP SCPCC 1200 BNE SCPLL3 1210 BEQ W1 1220 SCPLL10 BCC SCPLL1 1230 SCPLL20 BCC SCPLL2 1240 W1 1250 INC SCPCZ 1260 LDA SCPCZ 1270 CMP #15 1280 BNE SCPLL2 1290 JSR SCPNRAM 1300 CLC 1310 BCC SCPLL10 1320 SCPLL3 1330 JSR SCPNRAM 1340 LDA #0 1350 STA SCPCZ 1360 LDA SCPNC 1370 STA SCPCC 1380 JMP SCPLL20 1390 ; 1400 ;******************************* 1410 ;* der Decompactor ... * 1420 ;******************************* 1430 DCPVR = $CB 1440 DCPNR = $D0 1450 DCPCOUNTER = 212 1460 DCPMAX = 214 1470 DCPCC = 216 1480 DCPCZ = 217 1490 DCPNC = 218 1500 DCPMM = 22*20 1510 ; 1520 A1A 1530 DCOMP 1540 LDA #0 ;nach jedem 1550 STA SCOREFRASS ;neuen Bild! 1560 ; 1570 PLA 1580 STA DCPVR+1 1590 PLA 1600 STA DCPVR 1610 LDA # >SCREEN2 1620 STA DCPNR+1 1630 LDA # <SCREEN2 1640 STA DCPNR 1650 LDA #0 1660 STA DCPCOUNTER 1670 STA DCPCOUNTER+1 1680 CLC 1690 LDA DCPNR 1700 ADC # <DCPMM 1710 STA DCPMAX 1720 LDA DCPNR+1 1730 ADC # >DCPMM 1740 STA DCPMAX+1 1750 JMP DCPLL1 1760 ; ------------------------------ 1770 DCPVRAM 1780 LDY #0 1790 LDA (DCPVR),Y 1800 AND #15 1810 STA DCPCZ 1820 LDA (DCPVR),Y 1830 LSR A 1840 LSR A 1850 LSR A 1860 LSR A 1870 STA DCPCC 1880 INC DCPVR 1890 BNE DCPCC1 1900 INC DCPVR+1 1910 DCPCC1 INC DCPCOUNTER 1920 BNE DCPCC2 1930 INC DCPCOUNTER+1 1940 DCPCC2 RTS 1950 ; ------------------------------ 1960 DCPNRAM 1970 LDY DCPCC 1980 LDA DCPTABLE,Y 1990 LDY #0 2000 STA (DCPNR),Y 2010 INC DCPNR 2020 BNE DCPOO1 2030 INC DCPNR+1 2040 DCPOO1 2050 LDA DCPMAX 2060 CMP DCPNR 2070 BNE DCPSS1 2080 LDA DCPMAX+1 2090 CMP DCPNR+1 2100 BNE DCPSS1 2110 PLA 2120 PLA 2130 RTS 2140 DCPSS1 RTS 2150 ; ------------------------------ 2160 ; START DES HAUPTPROGRAMMS 2170 ; ------------------------------ 2180 DCPLL1 2190 JSR DCPVRAM 2200 DCPLL2 2210 JSR DCPNRAM 2220 LDA DCPCZ 2230 BEQ DCPLL1 2240 DEC DCPCZ 2250 CLC 2260 BCC DCPLL2 2270 DCPTABLE .BYTE 0,1,2,3+64,4,5,6+64 2280 .BYTE 7+128,8+192,9+192 2290 .BYTE 10+64,11+192,12+192 2300 .BYTE 13+192,14+192,15+64
##############################################################################
In der Datei DATABOB.M65 verwaltet die Bytes, aus denen die Player von Bob, der Monster und der Plattformen
zusammengesetzt werden.
##############################################################################
0100 ; ****************************** 0110 ; * Daten von Bob * 0120 ; * Letzte Revision: 08-08-87 * 0130 ; * by Stefan C. Mueller * 0140 ; * (C) MCMLXXXVII S.C.M.Soft! * 0150 ; ****************************** 0160 ; 0170 ; SAVE #D:DATABOB.M65 0180 ; 0190 ;*** OFFSET VON DATEN *** 0200 ; 0210 OFFSET .BYTE 0,17,34,51,68,85,102,119 0220 DATENP2 0230 ; 0240 ;*** RECHTSDATEN PLAYER 2 *** 0250 ; 0260 ;STEHEN 0270 .BYTE 24,60,60,255,52,62,60,24,0,16,32,32,16,60,24,24,28 0280 ;SPRINGEN 0290 .BYTE 24,60,60,255,52,62,60,24,0,16,16,12,0,60,254,231,128 0300 ;LAUFEN1 0310 .BYTE 24,60,60,255,52,62,60,24,0,16,32,32,16,60,252,236,142 0320 ;LAUFEN2 0330 .BYTE 24,60,60,255,52,62,60,24,0,16,16,12,0,60,62,55,56 0340 ; 0350 ;*** LINKSDATEN PLAYER 2 *** 0360 ; 0370 ;STEHEN 0380 .BYTE 24,60,60,255,44,124,60,24,0,8,4,4,8,60,24,24,56 0390 ;SPRINGEN 0400 .BYTE 24,60,60,255,44,124,60,24,0,8,8,48,0,60,127,231,1 0410 ;LAUFEN1 0420 .BYTE 24,60,60,255,44,124,60,24,0,8,4,4,8,60,63,55,113 0430 ;LAUFEN2 0440 .BYTE 24,60,60,255,44,124,60,24,0,8,8,48,0,60,124,236,28 0450 ; 0460 ;*** RECHTSDATEN PLAYER 3 *** 0470 ; 0480 DATENP3 0490 ;STEHEN 0500 .BYTE 52,62,60,24,60,126,126,126,126 0510 ; 0520 ;*** LINKSDATEN PLAYER 3 *** 0530 .BYTE 44,124,60,24,60,126,126,126,126 0540 ; 0550 ; 0560 ;*** DATEN VON MONTSER RECHTS *** 0570 ; 0580 DLINKS 0590 .BYTE 142,232,60,54,63,124,254,124 0600 ; 0610 ;*** DATEN VON MONSTER LINKS *** 0620 ; 0630 DRECHTS 0640 .BYTE 113,23,60,108,252,62,127,62 0650 ; 0660 ; DATEN DER PLATTFORM 1/2 0670 ; 0680 PLATTDAT1 .BYTE 255,255,170,85,170,255 0690 PLATTDAT2 .BYTE 255,255,85,170,85,255
##############################################################################
In der Datei DLI.M65 werden die Bytes, aus denen die Player von Bobby, der Monster und der Plattformen
zusammengesetzt werden, verwaltet.
##############################################################################
0100 ; ****************************** 0110 ; * Display List Interuppt * 0120 ; * Letzte Revision: 08-08-87 * 0130 ; * by Stefan C. Mueller * 0140 ; * (C) MCMLXXXVII S.C.M.Soft! * 0150 ; ****************************** 0160 ; 0170 ; SAVE #D:DLI.M65 0180 ; 0190 DLI PHA 0200 TYA 0210 PHA 0220 ; 0230 LDY DLIC 0240 LDA XHI,Y 0250 STA WAITHS 0260 STA 53248 0270 LDA XHI+[BYTES/2],Y 0280 STA 53249 0290 LDA COLOR,Y 0300 STA $D012 0310 LDA COLOR+[BYTES/2],Y 0320 STA $D013 0330 ; 0340 LDA $D00F ;P3PL 0350 AND #3 0360 BEQ NOCOL 0370 STY CRASHLINE 0380 STA CRASHBIT 0390 STA $D01E ;HITCLR 0400 NOCOL 0410 INC DLIC 0420 PLA 0430 TAY 0440 PLA 0450 RTI
##############################################################################
In der Datei DLIST.M65 werden die Bytes verwaltet, die die Displaylist für den ANTIC-Chip repräsentieren.
##############################################################################
0100 ; ****************************** 0110 ; * Displaylist Daten * 0120 ; * Letzte Revision: 08-08-87 * 0130 ; * by Stefan C. Mueller * 0140 ; * (C) MCMLXXXVII S.C.M.Soft! * 0150 ; ****************************** 0160 ; 0170 ; SAVE #D:DLIST.M65 0180 ; 0190 DL .BYTE 112,112,$60,64+2 0200 .WORD SCREEN 0210 .BYTE 0,$86 0220 .BYTE 6,$86,6,$86,6 0230 .BYTE $86,6,$86,6,$86,6 0240 .BYTE $86,6,$86,6,$86,6 0250 .BYTE $86,6,6,6,0,2,65 0260 .WORD DL
##############################################################################
In der Datei INITMDAT.M65 werden die Monster für einen Level initialisiert. Z.B. wird die Monstergrundfarbe
jedes Monsters per Zufall ermittelt.
##############################################################################
0100 ; ****************************** 0110 ; * Initialisiere Monsterdaten * 0120 ; * Letzte Revision: 08-08-87 * 0130 ; * by Stefan C. Mueller * 0140 ; * (C) MCMLXXXVII S.C.M.Soft! * 0150 ; ****************************** 0160 ; 0170 ; SAVE #D:INITMDAT.M65 0180 ; 0190 INITMDAT 0200 ; 0210 LDX #0 0220 IL1 0230 TTT1 LDA STATUSM,X 0240 AND #2 0250 BEQ ALCO1 0260 LDA #$F4 0270 STA COLOR,X 0280 BNE ALCO2 0290 ALCO1 LDA RANDOM 0300 STA COLOR,X 0310 ALCO2 INX 0320 CPX #BYTES 0330 BNE TTT1 0340 RTS
##############################################################################
In der Datei KILLER.M65 wird geprüft, ob Bobby ein Monster berührt hat. Sind alle Sicherungskästen
repariert worden, kann er die töten, sonst muss er selber sterben.
##############################################################################
0100 ; ****************************** 0110 ; * Rammt Bob ein Monster? * 0120 ; * Letzte Revision: 08-08-87 * 0130 ; * by Stefan C. Mueller * 0140 ; * (C) MCMLXXXVII S.C.M.Soft! * 0150 ; ****************************** 0160 ; 0170 ; SAVE #D:KILLER.M65 0180 ; 0190 LDA CRASHBIT 0200 BEQ CRA1 ; KEIN CRASH 0210 LDX CRASHLINE 0220 DEX 0230 BPL CRA2 0240 LDX #9 0250 CRA2 0260 LDA CRASHBIT 0270 AND #1 0280 BEQ CRA3 0290 LDA STATUSM,X 0300 AND #2 0310 BEQ CRA5 0320 CRA3 TXA 0330 CLC 0340 ADC #[BYTES/2] 0350 TAX 0360 LDA CRASHBIT 0370 AND #2 0380 BEQ CRA1 0390 LDA STATUSM,X 0400 AND #2 0410 BNE CRA1 0420 CRA5 0430 LDA NOKASTEN ;KAESTEN=0? 0440 BNE CRA51 ;NEIN 0450 SOUNDI9 0460 LDA #0 0470 STA STATUSM,X 0480 STA XHI,X 0490 STA XLO,X 0500 STA $D01E HITCLR 0510 STA CRASHBIT 0520 LDA #2 0530 JSR SCOREADD 0540 DEC NOMONSTER 0550 BNE CRA1 0560 ; 0630 LDA #2 ;alle Monst.tot! 0640 STA WASNUN 0650 JMP BTL3 ;(BTL3 = GOVER2) 0655 ; in BEKILLED 0660 CRA51 LDA #KILLTIME 0670 STA BOBTOT 0680 SOUNDI7 ;Bob rammt Monst 0690 JMP ZP 0700 CRA1
##############################################################################
In der Datei LABEL.M65 werden die wichtigsten Konstanten des Spiels definiert.
##############################################################################
0100 ; ****************************** 0110 ; * Label Definition * 0120 ; * Letzte Revision: 10-04-88 * 0130 ; * by Stefan C. Mueller * 0140 ; * (C) MCMLXXXVII S.C.M.Soft! * 0150 ; ****************************** 0160 ; 0170 ; SAVE #D:LABEL.M65 0180 ; 0190 .OPT NO OBJ 0200 ; 0210 ;Konstanten-Definitionen 0220 ; 0230 BYTES = 20 ;20 Monster 0240 LINESHOCH = 18 ;17! max.Sprunghoehe 0250 MAXRUNTER = 27 ;max.Sturz-Hoehe 0260 KILLTIME = 5*50 ;Sterbe-Zeit 0270 BOFF = 54 ;Offset Monster 0280 WRECHTS = 200 ;[Rechter Rand] 0290 WLINKS = 48 ;[Linker Rand] 0300 SCOFF1 = 15 ;Score-Pos. 0310 SCOFF2 = 38 Top-Score-Pos. 0320 SUCHSTMIN = SCREEN2 0330 SUCHSTMAX = SCREEN2+[20*22] 0340 FRESSTIMESW = 10*50 ;10 Sek.fress 0350 ; 0360 ; System-Adr. & Page 0-Adr. 0370 ; 0380 STICK0 = 632 ;Joystick 0 0390 WAITHS = $D40A ;Wait hz.Syncr. 0400 RANDOM = 53770 ;Zufallsgenerat. 0410 AUDF1 = $D200 ;Frequenz 1 0420 AUDC1 = $D201 ;Verzerrung 1 0430 AUDF2 = $D202 ;Frequenz 2 0440 AUDC2 = $D203 ;Verzerrung 2 0450 AUDF3 = $D204 ;Frequenz 3 0460 AUDC3 = $D205 ;Verzerrung 3 0470 AUDF4 = $D206 ;Frequenz 4 0480 AUDC4 = $D207 ;Verzerrung 4 0490 DLIC = $CF ;DLI-Counter 0500 PAGE01 = $CB ;Page 0 Adr.1 0510 PAGE0 = $CD ;Page 0 Adr.2 0520 PAGE02 = $D0 ;Page 0 Adr.3 0530 LEPOINTER = $DA ;Page 0 Adr.4 0540 SUCHSTADR = $EE 0550 ; 0560 ;Speicher-Reservierungen PAGE 6 0570 ; 0580 *= $0600 0590 ; 0600 XPOS .BYTE 0 ;X-Pos.Bob 0610 YPOS .BYTE 0 ;Y-Pos.Bob 0620 STATUS .BYTE 0 ;Bob Status 0630 STATUSM *= *+BYTES ;Status Mons. 0640 XHI *= *+BYTES ;X-Pos.Monster 0650 XRECHTS *= *+BYTES ;Wende Marke1 0660 XLINKS *= *+BYTES ;Wende Marke2 0670 NOKASTEN .BYTE 0 ;#der Kaesten 0680 NOMONSTER .BYTE 0 ;#der Monster 0690 ; 0700 XLO *= *+BYTES ;X-Lo Bob 0710 COLOR *= *+BYTES ;Monsterfarbe 0720 LOECHER *= *+17 ;Bob-Loecher 0730 ; 0740 DELTAX .BYTE 0 ;Bob X-Speed 0750 DELTAY .BYTE 0 ;Bob Y-Speed 0760 STICK .BYTE 0 ;New Stick Data 0770 RAM0 .BYTE 0,0 ;zum Rechnen 0780 JMPTIME .BYTE 0 ;Todes-Countdown 0790 JMPHIM? .BYTE 0 ;Springen (Y/N) 0800 STONE1 .BYTE 0 ;Stein unter Bob 0810 STONE2 .BYTE 0 ;Stein 'in' Bob 0820 STONE3 .BYTE 0 ;Plattform u.Bob 0830 VBIS .BYTE 0 ;VBI-Speicher 0840 DARFTRIG .BYTE 0 ;darf Bob jmp.? 0850 RUNTER .BYTE 0 ;hoch o.runter? 0860 BOBTOT .BYTE 0 ;1= er ist tot 0870 FNTZ .BYTE 0 ;Font-Zaehler 0880 LASER? .BYTE 0 ;Laser an? 0890 CRASHLINE .BYTE 0 ;Zeile d.Koll. 0900 CRASHBIT .BYTE 0 ;p2 to Pl.Col 0910 WASNUN .BYTE 0 ;Level-Kontrolle 0920 PLAY? .BYTE 0 ;Control of Game 0930 VBIANAUS .BYTE 0 ;ganzer VBI off 0940 YPOSRESCUE .BYTE 0 0950 SOUNDP11 .BYTE 0 ;Channel 0 0960 SOUNDP12 .BYTE 0 0970 SOUNDP13 .BYTE 0 0980 SOUNDN1 .BYTE 0 0990 SOUNDP21 .BYTE 0 ;Channel 1 1000 SOUNDP22 .BYTE 0 1010 SOUNDP23 .BYTE 0 1020 SOUNDN2 .BYTE 0 1030 SOUNDN3 .BYTE 0 ;Channel 2 1040 SOUNDN4 .BYTE 0 1050 SOUNDP41 .BYTE 0 1060 SOUNDP42 .BYTE 0 1070 SOUNDP43 .BYTE 0 1080 SCOREM .BYTE 0,0,0,0 ;Score 1090 ;SCOREHI .BYTE 0,0,0,0 1100 NOLIVES .BYTE 0 ;# Bob's Leben 1110 LENODEC .BYTE 0,0 ;Level# 1120 LENODIG .BYTE 0 1130 EXTRAP .BYTE 0 ;EXTRA-Zeiger 1140 SCOREFRASS .BYTE 0 ;Score down? 1150 FRESSTIME .BYTE 0,0 1160 KASTENRESET .BYTE 0 1170 AMADIP .BYTE 0 1180 ; 1190 .OPT OBJ
##############################################################################
In der Datei LUFT.M65 wird geprüft, ob ein springender oder fallender Bobby landen kann.
##############################################################################
0100 ; ****************************** 0110 ; * Teste, ob Bob landen kann. * 0120 ; * Letzte Revision: 08-08-87 * 0130 ; * by Stefan C. Mueller * 0140 ; * (C) MCMLXXXVII S.C.M.Soft! * 0150 ; ****************************** 0160 ; 0170 ; SAVE #D:LUFT.M65 0180 ; 0190 ;wenn Luft:=> LLL4, nicht:weiter 0200 LDA STONE3 ;PLATTFORM 0210 BNE DLD ;JA 0220 LDA STONE1 ; 0230 AND #15 ; 0240 CMP #15 ;LASER? 0250 BEQ ZUSCH ;JA 0260 CMP #7 ;<7 0270 BCC DNL ;JA. NICHT LAND. 0280 DLD SEC ;LANDEN! 0290 RTS 0300 ZUSCH LDA LASER? 0310 BNE DLD 0320 DNL CLC ;NICHT LANDEN 0330 RTS
##############################################################################
In der Datei MAIN.M65 läuft die Hauptroutine ab.
##############################################################################
0100 ; ****************************** 0110 ; * Hauptprogramm * 0120 ; * Letzte Revision: 05-07-88 * 0130 ; * by Stefan C. Mueller * 0140 ; * (C) MCMLXXXVII S.C.M.Soft! * 0150 ; ****************************** 0160 ; 0170 ; SAVE #D:MAIN.M65 0180 ; 0190 MAIN 0200 ;---- ALLES VOR EINEM SPIEL ---- 0210 LDA #0 0220 STA EXTRAP 0230 LDA # <SUCHSTMIN 0240 STA SUCHSTADR 0250 LDA # >SUCHSTMIN 0260 STA SUCHSTADR+1 0270 ;------------------------------- 0280 LDA PLAY? 0290 BNE MAINNL1 0300 JMP MAINL1 0310 MAINNL1 0320 CMP #1 0330 BNE MAINNL4 0340 JMP MAINL4 0350 MAINNL4 0360 CMP #4 0370 BNE MAINNL5 0380 JMP MAINL5 0390 MAINNL5 0400 JMP $E477 ; ERROR ERROR ERROR 0410 ;******************************* 0420 MAINL1 ; PLAY?=0 0430 JSR INITGAME 0440 JSR MPMBO 0450 RTS 0460 ; 0470 MAINL4 ; PLAY?=1 0480 JSR INITMDAT 0490 JSR LETEST 0500 RTS 0510 ; 0520 MAINL5 ; PLAY?=4 0530 ;******************************* 0540 ;* Hauptprogrammschleife 10-10 * 0550 ;******************************* 0560 ; 0570 GG2 0580 JSR PRINTDT 0590 JSR VORSPANN 0600 GG3 0610 LDA 53279 ;CONSOL 0620 EOR 53264 ;TRIG0 pressed? 0622 AND #1 ;'START'pressed? 0630 BEQ GG3 ; no&no 0640 ; 0650 LDY #0 0660 LDA #0 0670 GG4 STA $0600,Y 0680 INY 0690 BNE GG4 0700 ; 0710 LDA #5 0720 STA NOLIVES 0730 LDA #1 0740 STA LENODEC 0750 ; STA LENODIG 0760 LDA # <LESTARTADR 0770 STA LEPOINTER 0780 LDA # >LESTARTADR 0790 STA LEPOINTER+1 0800 JSR SCOREOUT 0810 GG5 JSR INITGAME 0820 JSR PRINTLIVES 0830 ; 0840 JSR VORBILD ;GG5 OLD 0850 JSR LEVELINIT 0860 JSR PLAYPICTURE 0870 LDA WASNUN 0880 CMP #3 ;OPTION PRESSED? 0890 BEQ GG8 ;'GAME OVER' 0900 CMP #2 0910 BNE GG7 ;BOB TOT! 0920 ;LEVEL GESCHAFFT! 0930 ; 0940 JSR LEVELNEXT 0950 GG6 0960 JMP GG5 0970 ; 0980 ;BOB TOT 0990 ; 1000 GG7 JSR LIVEWEG 1010 LDA NOLIVES ;=0? 1020 BNE GG6 1023 GG8 LDA #0 1025 STA NOLIVES ;BEI OPTION 1030 JSR HISCORE 1040 JSR VORBILD ;=>"GAME OVER" 1050 JMP GG2
##############################################################################
In der Datei MMOVE.M65 werden die Monster bewegt, also ihre neue X-Position berechnet.
##############################################################################
0100 ; ****************************** 0110 ; * Bewege und zeichne Monster * 0120 ; * Letzte Revision: 08-08-87 * 0130 ; * by Stefan C. Mueller * 0140 ; * (C) MCMLXXXVII S.C.M.Soft! * 0150 ; ****************************** 0160 ; 0170 ; SAVE #D:MMOVE.M65 0180 ; 0190 MONSTERMOVE 0200 ; 0210 LDA #PMS+4 0220 STA PAGE01+1 0230 LDA #BOFF 0240 STA PAGE01 0250 LDX #0 0260 YYY4 LDA STATUSM,X 0270 AND #2 ;MON/PLTFRM 0280 BEQ MO 0290 JSR MMOVE 0300 JSR PLATTFORM 0310 JMP RVP 0320 ; 0330 MO JSR NEWCOLOR 0340 JSR MMOVE 0350 JSR ACTION 0360 ; 0370 ; 0380 RVP INX 0390 CPX #BYTES/2 0400 BNE YYY8 0410 INC PAGE01+1 0420 LDA #BOFF 0430 STA PAGE01 0440 YYY8 CPX #BYTES 0450 BNE YYY4 0460 RTS 0470 ; 0480 NEWCOLOR 0490 LDA STATUSM,X 0500 AND #4 0510 BEQ ZH 0520 ZR DEC COLOR,X 0530 LDA COLOR,X 0540 AND #15 0550 BNE NNN ;SCHON 0? 0560 NN1 LDA STATUSM,X 0570 EOR #4 ;DANN COUNT UP 0580 STA STATUSM,X 0590 NNN RTS 0600 ZH INC COLOR,X 0610 LDA COLOR,X ;SCHON 12? 0620 AND #15 0630 CMP #12 ;DANN COUNT DOWN 0640 BNE NNN 0650 BEQ NN1 0660 JMP $E477 0670 ; 0680 MMOVE 0690 ; 0700 LDA STATUSM,X 0710 AND #1 0720 BEQ MRECHTS 0730 MLINKS 0740 LDA STATUSM,X 0750 AND #255-7 0760 EOR #255 0770 SEC 0780 ADC XLO,X 0790 STA XLO,X 0800 BCS CS1 0810 DEC XHI,X 0820 ; 0830 CS1 LDA XLINKS,X 0840 CMP XHI,X 0850 BNE OK1 0860 BEQ TOGGLE 0870 MRECHTS 0880 LDA STATUSM,X 0890 AND #255-7 0900 CLC 0910 ADC XLO,X 0920 STA XLO,X 0930 BCC CC1 0940 INC XHI,X 0950 CC1 LDA XRECHTS,X 0960 CMP XHI,X 0970 BNE OK1 0980 TOGGLE LDA STATUSM,X 0990 EOR #1 1000 STA STATUSM,X 1010 OK1 RTS 1020 ; 1030 ;MONSTER UMDREHEN UND TIPPELN 1040 ; 1050 ACTION LDY #0 1060 LDA STATUSM,X 1070 AND #1 1080 BNE M2 1090 ;LINKS! 1100 M1 LDA DLINKS,Y 1110 STA (PAGE01),Y 1120 INY 1130 CPY #8 1140 BNE M1 1150 BEQ PFOTEN 1160 M2 LDA DRECHTS,Y 1170 STA (PAGE01),Y 1180 INY 1190 CPY #8 1200 BNE M2 1210 ; 1220 PFOTEN 1230 ; 1240 LDA XHI,X 1250 AND #2 1260 BEQ YYY3 1270 YYY2 LDA #108 1280 STA (PAGE01),Y 1290 INY 1300 LDA #204 1310 STA (PAGE01),Y 1320 BNE YYY1 1330 YYY3 LDA #54 1340 STA (PAGE01),Y 1350 INY 1360 LDA #51 1370 STA (PAGE01),Y 1380 YYY1 LDA PAGE01 1390 CLC 1400 ADC #16 1410 STA PAGE01 1420 RTS 1430 ; 1440 PLATTFORM 1450 LDY #2 1460 LDA XHI,X 1470 AND #1 1480 BEQ PLF1 1490 PLF2 1500 LDA PLATTDAT1-2,Y 1510 STA (PAGE01),Y 1520 INY 1530 CPY #8 1540 BNE PLF2 1550 JMP YYY1 1560 PLF1 1570 LDA PLATTDAT2-2,Y 1580 STA (PAGE01),Y 1590 INY 1600 CPY #8 1610 BNE PLF1 1620 JMP YYY1
##############################################################################
In der Datei SCORE.M65 werden die Punktestände berechnet und ausgegeben.
##############################################################################
0100 ; ****************************** 0110 ; * Punkteanzeige * 0120 ; * Letzte Revision: 08-08-87 * 0130 ; * Verbesserung am: 12-11-87 * 0140 ; * by Stefan C. Mueller * 0150 ; * (C) MCMLXXXVII S.C.M.Soft! * 0160 ; ****************************** 0170 ; 0180 ; SAVE #D:SCORE.M65 0190 ; 0200 SCOREADD 0210 ASL A 0220 ASL A ;*8 0230 CLC 0240 ADC #3 0250 TAX 0260 SED 0270 CLC 0280 LDY #3 0290 IJ LDA SCOREM,Y 0300 ADC SCDT,X 0310 STA SCOREM,Y 0320 DEX 0330 DEY 0340 BPL IJ 0350 CLD 0360 ;erst Scorefrass, wenn gepunktet 0370 LDA #1 0380 STA SCOREFRASS ;ab jetzt! 0390 ; ------------------------------ 0400 SCOREOUT 0410 LDY #SCOFF1 0420 SCOUT2 LDX #3 0430 IK LDA SCOREM,X 0440 AND #15 0450 ORA #16 0460 STA SCREEN,Y 0470 DEY 0480 LDA SCOREM,X 0490 LSR A 0500 LSR A 0510 LSR A 0520 LSR A 0530 ORA #16 0540 STA SCREEN,Y 0550 DEY 0560 DEX 0570 BPL IK 0580 RTS 0590 SCDT .BYTE $00,$00,$25,$00 ;G 0600 .BYTE $00,$00,$05,$00 ;D 0610 .BYTE $00,$00,$10,$00 ;M 0620 ; ------------------------------ 0630 HISCORE 0640 LDY #0 0650 HIS1 LDA SCOREM,Y 0660 CMP SCOREHI,Y 0670 BCC HIS2 ; NO NEW HISC. 0680 BNE HIS3 ; NEUER HISCORE 0690 INY 0700 CPY #4 ; TEST ENDE? 0710 BNE HIS1 ; WEITER TESTEN 0720 HIS2 RTS ; KEIN NEUER HISC. 0730 HIS3 LDY #3 ; COPY TO HISC. 0740 HIS4 LDA SCOREM,Y 0750 STA SCOREHI,Y 0760 DEY 0770 BPL HIS4 0780 ; HISCORE AUSGEBEN 0790 SCOUT3 LDY #SCOFF2 ;HIS.OFFSET 0800 JSR SCOUT2 0810 RTS 0820 ; 0830 ; SUBTRAHIERE 1 WENN SCOREM>0 0840 ; 0850 SCORESUB1 0860 JSR SCORESUB2 0870 LDA AMADIP 0880 BEQ ZXZZ 0890 JSR SCORESUB2 0900 ZXZZ RTS 0910 ; 0920 SCORESUB2 0930 LDA SCOREFRASS 0940 BEQ SC2 ;KEIN FRASS ERL. 0950 LDY #3 0960 SC1 LDA SCOREM,Y 0970 BNE SC4 ;<>0! =>S=S-1 0980 DEY 0990 BPL SC1 1000 BMI SC2 1010 SC4 SED 1020 LDY #3 1030 CLC ;MINUS 1 1040 SC3 LDA SCOREM,Y 1050 SBC #0 1060 STA SCOREM,Y 1070 DEY 1080 BPL SC3 1090 CLD 1100 JSR SCOREOUT 1110 SC2 RTS 1120 ; 1130 SCOREHI .BYTE $00,$01,$00,$00
##############################################################################
In der Datei SOUNDM.M65 (Sound Makros) wird der Sound erzeugt.
##############################################################################
0100 ; ****************************** 0110 ; * Macros fuer Sound * 0120 ; * Letzte Revision: 08-08-87 * 0130 ; * by Stefan C. Mueller * 0140 ; * (C) MCMLXXXVII S.C.M.Soft! * 0150 ; ****************************** 0160 ; 0170 ; SAVE #D:SOUNDM.M65 0180 ; 0190 .MACRO SOUNDI1 0200 ;******************************* 0210 ;* Bonus Fanfare * 0220 ;******************************* 0230 LDA #14 0240 STA SOUNDP11 0250 STA SOUNDP12 0260 LDA #1 0270 STA SOUNDN1 0280 .ENDM 0290 ; 0300 .MACRO SOUNDA1 0310 LDA SOUNDN1 0320 CMP #1 0330 BNE SOL1 0340 LDA SOUNDP12 0350 STA AUDF1 0360 LDA SOUNDP11 0370 ORA #16*10 0380 STA AUDC1 0390 ; 0400 DEC SOUNDP12 0410 BNE SOL1 0420 DEC SOUNDP11 0430 LDA SOUNDP11 0440 STA SOUNDP12 0450 BPL SOL1 0460 LDA #0 0470 STA SOUNDN1 0480 BPL SOL1 0490 LDA #0 0500 STA SOUNDN1 0510 SOL1 0520 .ENDM 0530 ; 0540 .MACRO SOUNDI2 0550 ;******************************* 0560 ;* Sicherungkasten rep. * 0570 ;******************************* 0580 LDA #15 0590 STA SOUNDP11 0600 STA SOUNDP12 0610 LDA #4 0620 STA SOUNDP13 0630 LDA #2 0640 STA SOUNDN1 0650 .ENDM 0660 ; 0670 .MACRO SOUNDA2 0680 LDA SOUNDN1 0690 CMP #2 0700 BNE SOL2 ; 0710 LDA SOUNDP11 0720 STA AUDC1 0730 LDA #0 0740 STA AUDF1 0750 DEC SOUNDP11 0760 BNE SOL3 0770 INC SOUNDN1 0780 SOL2 0790 LDA SOUNDN1 ;SOUNDN1=3? 0800 CMP #3 0810 BNE SOL3 ;NO 0820 DEC SOUNDP13 0830 BNE SOL20 0840 LDA #4 0850 STA SOUNDP13 0860 DEC SOUNDP12 0870 BNE SOL20 0880 LDA #0 0890 STA SOUNDN1 0900 SOL20 LDA 20 0910 AND #1 0920 BEQ SOL22 0930 LDA #50 0940 STA AUDF1 0950 BNE SOL30 0960 SOL22 LDA #40 0970 STA AUDF1 0980 SOL30 LDA SOUNDP12 0990 ORA #16*10 1000 STA AUDC1 1010 SOL3 1020 .ENDM 1030 ; 1040 .MACRO SOUNDI9 ;MONSTERSTERBEN 1050 ;******************************* 1060 ;* Monstersterben * 1070 ;******************************* 1080 LDA #9 1090 STA SOUNDN1 1100 LDA #30 1110 STA SOUNDP11 1120 .ENDM 1130 ; 1140 .MACRO SOUNDA9 1150 LDA SOUNDN1 1160 CMP #9 1170 BNE EOS9 1180 ; 1190 LDA 20 1200 AND #1 1210 BEQ S9L1 1220 DEC SOUNDP11 1230 BNE S9L1 1240 LDA #0 1250 STA SOUNDN1 1260 S9L1 1270 LDA SOUNDP11 1280 LSR A 1290 STA AUDC1 1300 LDA RANDOM 1310 AND #127 1320 ORA #64 1330 STA AUDF1 1340 EOS9 1350 .ENDM 1360 ; 1370 .MACRO SOUNDI3 1380 ; ****************************** 1390 ; * Bob springt * 1400 ; ****************************** 1410 LDA #20 1420 STA SOUNDP21 ;TONHOEHE 1430 LDA #14 1440 STA SOUNDP22 ;LAUTSTAERKE 1450 LDA #1 1460 STA SOUNDP23 ;DELTA-TON 1470 LDA #3 1480 STA SOUNDN2 ;SOUND-NR 1490 .ENDM 1500 ; 1510 .MACRO SOUNDA3 ;SPRUNG 1520 LDA SOUNDN2 1530 CMP #3 1540 BNE EOS3 1550 ; 1560 LDA SOUNDP21 1570 CLC 1580 ADC SOUNDP23 1590 STA SOUNDP21 1600 STA AUDF2 1610 CMP #20 ;UNTERE GRENZE 1620 BNE SM3OK1 1630 LDA #1 1640 STA SOUNDP23 1650 JMP SM3LST 1660 SM3OK1 CMP #22 ;OBERE GR. 1670 BNE SM3OK2 1680 LDA #-1 1690 STA SOUNDP23 1700 SM3LST 1710 DEC SOUNDP22 1720 BNE SM3OK2 1730 LDA #0 1740 STA SOUNDN2 1750 SM3OK2 LDA SOUNDP22 1760 ORA #10*16 1770 STA AUDC2 1780 EOS3 1790 .ENDM 1800 ; 1810 .MACRO SOUNDI4 ;FUESSE 1820 ; ****************************** 1830 ; * Bob rennt * 1840 ; ****************************** 1850 LDA #4 1860 STA SOUNDN2 1870 .ENDM 1880 ; 1890 .MACRO SOUNDA4 1900 LDA SOUNDN2 1910 CMP #4 1920 BNE EOS4 1930 ; 1940 LDA SOUNDP21 1950 CMP #5 1960 BCC SM4L0 1970 LDA #4 1980 STA SOUNDP21 1990 SM4L0 2000 LDA SOUNDP21 2010 STA AUDF2 2020 STA AUDC2 2030 DEC SOUNDP21 2040 LDA JMPHIM? 2050 BNE SM4L1 2060 LDA STICK 2070 AND #12 2080 BEQ SM4L1 2090 BNE EOS4 2100 SM4L1 LDA #0 2110 STA SOUNDN2 2120 EOS4 2130 .ENDM 2140 ; ------------------------------ 2150 .MACRO SOUNDA0 2160 LDA SOUNDN2 2170 BNE EOS0 2180 LDA #0 2190 STA AUDF2 2200 STA AUDC2 2210 EOS0 2220 .ENDM 2230 ; ------------------------------ 2240 ; freezing stones 2250 .MACRO SOUNDA5 2260 LDA SOUNDN2 2270 CMP #5 2280 BNE EOS5 2290 LDA RANDOM 2300 AND #15 2310 STA AUDF2 2320 LDA #10*16+6 2330 STA AUDC2 2340 EOS5 2350 .ENDM 2360 ; ------------------------------ 2370 .MACRO SOUNDI5 2380 ; ****************************** 2390 ; * Freezing Stones * 2400 ; ****************************** 2410 LDA #5 2420 STA SOUNDN2 2430 .ENDM 2440 ; ------------------------------ 2450 .MACRO SOUNDI6 2460 ; ****************************** 2470 ; * Nach Sprung aufkommen * 2480 ; ****************************** 2490 LDA #10 2500 STA SOUNDP21 2510 LDA #6 2520 STA SOUNDN2 2530 .ENDM 2540 ; ------------------------------ 2550 .MACRO SOUNDA6 2560 LDA SOUNDN2 2570 CMP #6 2580 BNE EOS6 2590 LDA SOUNDP21 2600 STA AUDC2 2610 STA AUDF2 2620 DEC SOUNDP21 2630 BNE EOS6 2640 LDA #0 2650 STA SOUNDN2 2660 EOS6 2670 .ENDM 2680 ; ------------------------------ 2690 .MACRO SOUNDI7 STERBEN 2700 ; ****************************** 2710 ; * Bob's Sterbeabgang * 2720 ; ****************************** 2730 LDA #7 2740 STA SOUNDN2 2750 LDA #50 2760 STA SOUNDP21 2770 .ENDM 2780 ; ------------------------------ 2790 .MACRO SOUNDA7 2800 LDA SOUNDN2 2810 CMP #7 2820 BNE EOS7 2830 LDA 20 2840 AND #1 2850 BEQ SM7L1 2860 LDA #16*4+8 2870 STA AUDC2 2880 LDA SOUNDP21 2890 STA AUDF2 2900 JMP EOS7 2910 SM7L1 2920 LDA #0 2930 STA AUDF2 2940 STA AUDC2 2950 DEC SOUNDP21 2960 BNE EOS7 2970 STA SOUNDN2 2980 EOS7 2990 .ENDM 3000 ; 3010 .MACRO SOUND3A1 3020 ; LDA SOUNDN3 3030 ; BNE Z2 3040 LDA NOMONSTER 3050 BEQ Z0 3060 LDA AMADIP 3070 BNE Z1 3080 Z0 LDA #0 3090 STA AUDF3 3100 STA AUDC3 3110 BEQ Z2 3120 Z1 3130 LDA RANDOM ;COLOR 3140 AND #255-4 ; " 3150 ORA #8 ; " 3160 STA $D016 ;COLOR! 3170 LDA RANDOM 3180 STA AUDF3 3190 LDA RANDOM 3200 AND #2 3210 STA AUDC3 3220 LDA AMADIP ;AntiMonst.Anl. 3230 BNE Z2 ;ist ON 3240 LDA #0 ;ist OFF 3250 STA SOUNDN3 3260 STA AUDC3 3270 Z2 3280 .ENDM 3290 ; 3300 ; 3310 .MACRO SOUND3I2 3320 LDA #1 3330 STA SOUNDN4 3340 LDA #0 3350 STA SOUNDP41 3360 STA SOUNDP43 3370 .ENDM 3380 ; 3390 ; 3400 .MACRO SOUND3A2 3410 LDA SOUNDN4 3420 CMP #1 ;BIN ICH'S? 3430 BNE Z20 ;NO! 3440 LDA SOUNDP43 ;Neue Note? 3450 BNE Z10 ;Nein 3460 LDY SOUNDP41 ;Ja 3470 CPY #22 ;Letzte Note 3480 BNE Z12 ;Nein 3490 LDA #0 ;Ja 3500 STA SOUNDN4 ;Sound aus! 3510 LDA EXTRAP ;soll EXTRA 3520 CMP #5 ;resetet w.? 3530 BNE Z11 ;nein 3540 LDY #4 ;Ja! 3550 Z17 LDA TXTB+18,Y ;let's 3560 STA SCREEN+498,Y ;clear 3570 DEY ;our 3580 BPL Z17 ;EXTRA! 3590 BMI Z11 ;JMP ende 3600 Z12 LDA NOTEN,Y ;Note 3610 STA AUDF4 3620 LDA #$A8 ;Lautstaerke 3630 STA AUDC4 3640 LDA LAENGEN,Y ;Tonlaenge 3650 STA SOUNDP42 3660 LDA #2 ;SCM-Sound! 3670 STA SOUNDP43 3680 INC SOUNDP41 ;next Ton 3690 Z10 LDA SOUNDP43 3700 CMP #1 ;Ding o. Dong? 3710 BNE Z13 3720 Z15 LDA SOUNDP42 3730 ORA #160 ;pure Tone! 3740 STA AUDC4 3750 DEC SOUNDP42 3760 BPL Z11 3770 LDA #0 3780 STA SOUNDP43 3790 BEQ Z11 3800 Z20 BNE Z11 3810 Z13 DEC SOUNDP42 3820 BPL Z11 3830 DEC SOUNDP43 3840 LDA #7 3850 STA SOUNDP42 3860 BNE Z15 3870 NOTEN .BYTE 60,60,45,60,45,35,45,45,45,35,45 3880 .BYTE 35,29,35,45,35,29,35,45,60,60,45 3890 LAENGEN .BYTE 0,0,0,0,0,0,8,0,0,0,0,0,0,8,0,0,8,0,0,8,8,24 3900 Z11 3910 .ENDM
##############################################################################
In der Datei STACTION.M65 (Stone Actions) werden die Reaktionen von Bobby auf verschiedene
Bodenbeschaffenheiten umgesetzt.
##############################################################################
0100 ; ****************************** 0110 ; * Bob's Reaktionen/Steine * 0120 ; * Letzte Revision: 08-08-87 * 0130 ; * by Stefan C. Mueller * 0140 ; * (C) MCMLXXXVII S.C.M.Soft! * 0150 ; ****************************** 0160 ; 0170 ; SAVE #D:STACTION.M65 0180 ; 0190 ;Ueberprueft Steine und macht 0200 ;die entsprechenden Aktionen 0210 MAKEACTION 0220 LDA STONE1 0230 AND #15 0240 ASL A 0250 TAY 0260 LDA JMPTAB+1,Y 0270 PHA 0280 LDA JMPTAB,Y 0290 PHA 0300 RTS 0310 JMPTAB .WORD SS0-1,SS1-1,SS2-1,SS3-1,SS4-1 0320 .WORD SS5-1,SS6-1,SS7-1,SS8-1,SS9-1 0330 .WORD SS10-1,SS11-1,SS12-1,SS13-1 0340 .WORD SS14-1,SS15-1 0350 ; 0360 SS0 ; LUFT 0370 SS1 ; ZIERMAUER 0380 SS2 ; VERT.+SICHERG. 0390 SS4 ; LEITUNG VERT. 0400 SS5 ; LEITUNG HORIZ. 0410 SS7 ; NORM.STEHMAUER 0420 SS3 ; VERT.O.SICHERG. 0430 SS6 ; BONUS 0440 RTS 0450 ; *** JMP Rechts Hoch *** 0460 SS8 LDA #1 0470 STA JMPHIM? 0480 LDA #0 0490 STA RUNTER 0500 LDA #LINESHOCH 0510 STA JMPTIME 0520 LDA #1 0530 STA STATUS 0540 STA DELTAX 0550 SOUNDI3 0560 RTS 0570 ; *** JMP links hoch *** 0580 SS9 LDA #1 0590 STA JMPHIM? 0600 LDA #0 0610 STA RUNTER 0620 LDA #LINESHOCH 0630 STA JMPTIME 0640 LDA #1+4 0650 STA STATUS 0660 LDA #-1 0670 STA DELTAX 0680 SOUNDI3 0690 RTS 0700 ; *** Freezings Stones *** 0710 SS10 LDA 20 0720 AND #255-31 ;NO-FREEZE-TIME 0730 BEQ NFREEZE 0740 LDA #0 0750 STA DELTAX 0760 STA DELTAY 0770 LDA #1 0780 STA DARFTRIG 0790 LDA RANDOM 0800 ORA #8 0810 STA $D014 0820 ADC RANDOM 0830 ORA #8 0840 STA $D015 0850 LDA STATUS 0860 AND #4 0870 STA STATUS 0880 SOUNDI5 0890 NFREEZE RTS 0900 ; *** Presslufthammersteine *** 0910 SS11 0920 LDA #1 0930 STA JMPHIM? 0940 LDA #0 0950 STA RUNTER 0960 LDA RANDOM 0970 AND #1 0980 BNE BNE 0990 STA DELTAX 1000 BNE LDA #3 ;NUR 3LINES HOCH 1010 STA JMPTIME 1020 LDA STATUS 1030 AND #4 1040 ORA #1 1050 STA STATUS 1060 SOUNDI3 1070 RTS 1080 ; *** Beschl. nach rechts *** 1090 SS12 INC DELTAX ;GESCHW.KEIT. 1100 JMP SS88 1110 ; *** Beschl. nach links *** 1120 SS13 DEC DELTAX ;GESCHW.KEIT 1130 SS88 LDA #0 1140 STA JMPHIM? 1150 LDA #2 1160 STA DARFTRIG 1170 RTS 1180 ; *** Beschl.nach oben **** 1190 SS14 LDA #1 1200 STA JMPHIM? 1210 LDA #0 1220 STA RUNTER 1230 LDA #8*10+2 ;10 STUFEN HOCH! 1240 STA JMPTIME 1250 LDA STATUS 1260 AND #4 1270 ORA #1 1280 STA STATUS 1290 SOUNDI3 1300 RTS 1310 ; *** fallen durch Blinkstone?*** 1320 SS15 1330 RTS
##############################################################################
In der Datei STEINE.M65 wird erkannt, welche Steine unter Bobby (PM-Grafik) vorhanden sind.
Dann kann erst entsprechend darauf reagiert werden.
##############################################################################
0100 ; ****************************** 0110 ; * Erkenne Steine unter Bob * 0120 ; * Letzte Revision: 08-08-87 * 0130 ; * by Stefan C. Mueller * 0140 ; * (C) MCMLXXXVII S.C.M.Soft! * 0150 ; ****************************** 0160 ; 0170 ; SAVE #D:STEINE.M65 0180 ; 0190 LDA YPOS 0200 CLC 0210 ADC #17 ;MHOEHE 0220 AND #7 0230 BEQ AOK 0240 LDA #0 0250 STA STONE1 0260 STA STONE2 0270 STA STONE3 0280 JMP EOM 0290 ; 0300 AOK 0310 LDA YPOS 0320 SEC 0330 SBC #32-17 ;MHOEHE 0340 LSR A 0350 LSR A 0360 LSR A 0370 CLC 0380 ADC #1 0390 STA RAM0 0400 STA PAGE0 0410 LDA #0 0420 STA RAM0+1 0430 STA PAGE0+1 0440 ; 0450 ASL PAGE0 ;*16 0460 ROL PAGE0+1 0470 ASL PAGE0 0480 ROL PAGE0+1 0490 ASL PAGE0 0500 ROL PAGE0+1 0510 ASL PAGE0 0520 ROL PAGE0+1 0530 ; 0540 ASL RAM0 0550 ROL RAM0+1 0560 ASL RAM0 0570 ROL RAM0+1 0580 ; 0590 LDA STATUS 0600 AND #4 0610 SEC 0620 BEQ UUU 0630 CLC 0640 UUU 0650 LDA XPOS 0660 SBC #44 0670 ; 0680 LSR A 0690 LSR A 0700 LSR A 0710 ; 0720 CLC 0730 ADC PAGE0 0740 STA PAGE0 0750 LDA PAGE0+1 0760 ADC #0 0770 STA PAGE0+1 0780 LDA PAGE0 0790 CLC 0800 ADC RAM0 0810 STA PAGE0 0820 LDA PAGE0+1 0830 ADC RAM0+1 0840 STA PAGE0+1 0850 LDA 88 0860 CLC 0870 ADC PAGE0 0880 STA PAGE0 0890 LDA PAGE0+1 0900 ADC 89 0910 STA PAGE0+1 0920 ; 0930 LDY #0 0940 LDA (PAGE0),Y 0950 STA STONE1 0960 ; 0970 LDA PAGE0 0980 SEC 0990 SBC #20 1000 STA PAGE02 1010 LDA PAGE0+1 1020 SBC #0 1030 STA PAGE02+1 1040 LDA (PAGE02),Y 1050 STA STONE2 1060 ;------- MOVING STONES ------- 1070 LDA YPOS 1080 CLC 1090 ADC #17 1100 AND #8 1110 BEQ EOM 1120 ; 1130 LDA YPOS 1140 SEC 1150 SBC #39 1160 LSR A 1170 LSR A 1180 LSR A 1190 LSR A 1200 TAX 1210 CMP #10 1220 BCS EOM 1230 ; 1240 LDA STATUS 1250 AND #4 1260 CLC 1270 BNE UEG 1280 SEC 1290 UEG LDA XPOS 1300 ADC #3 1310 STA VBIS 1320 ; 1330 LDA STATUSM,X 1340 AND #2 1350 BEQ TT2 1360 LDA VBIS 1370 CMP XHI,X 1380 BCC TT2 1390 SBC #8 1400 CMP XHI,X 1410 BCC STORE1 ;04.03.86 01:50! 1420 ; 1430 TT2 LDA STATUSM+[BYTES/2],X 1440 AND #2 1450 BEQ STORE0 1460 LDA VBIS 1470 CMP XHI+[BYTES/2],X 1480 BCC STORE0 1490 SBC #8 1500 CMP XHI+[BYTES/2],X 1510 BCC STORE1 1520 STORE0 1530 LDA #0 1540 STA STONE3 1550 JMP EOM 1560 STORE1 1570 LDA #1 1580 STA STONE3 1590 EOM
##############################################################################
In der Datei SUBS.M65 sind viele wichtige Unterroutinen gesammelt worden. Sie sind das wichtigste Kernstück
des Spiels.
##############################################################################
0100 ; ****************************** 0110 ; * Diverse Unterroutinen * 0120 ; * Letzte Revision: 05-07-88 * 0130 ; * by Stefan C. Mueller * 0140 ; * (C) MCMLXXXVII S.C.M.Soft! * 0150 ; ****************************** 0160 ; 0170 ; SAVE #D:SUBS.M65 0180 ; 0190 ; ------------------------------ 0200 ; Text Line 1,2,Score =>print 0210 ; ------------------------------ 0220 PRINTDT 0230 LDY #39 0240 PRINTDTL1 LDA TXTA,Y 0250 STA SCREEN,Y 0260 LDA TXTB,Y 0270 STA SCREEN+480,Y 0280 DEY 0290 BPL PRINTDTL1 0300 JSR SCOREOUT 0310 LDY #3 0320 SCCPY LDA SCOREHI,Y 0330 STA SCOREM,Y 0340 DEY 0350 BPL SCCPY 0360 JSR SCOUT3 0370 JSR PRINTLIVES 0380 RTS 0390 ; ------------------------------ 0400 ; Decrement number of lives BCD 0410 ; ------------------------------ 0420 LIVEWEG 0430 SED 0440 LDA NOLIVES 0450 SEC 0460 SBC #1 0470 STA NOLIVES 0480 CLD 0500 RTS 0510 ; ------------------------------ 0520 ; Inc number of lives, up to 99 0530 ; ------------------------------ 0540 LIVEDAZU 0550 LDA EXTRAP 0560 CMP #5 0570 BNE EXP1 0580 LDY #4 0590 EXP2 LDA TXTB+18,Y ;'EXTRA' 0600 STA SCREEN+498,Y 0610 DEY 0620 BPL EXP2 0630 INY ;LDY #0 0640 STY EXTRAP 0650 EXP1 LDY EXTRAP 0660 LDA SCREEN+498,Y 0670 ORA #128 0680 STA SCREEN+498,Y 0690 INY 0700 STY EXTRAP 0710 CPY #5 0720 BEQ EXP4 0730 SOUNDI1 0740 RTS 0750 EXP4 SOUND3I2 ;EXTRA-FANFARE 0760 SED 0770 LDA NOLIVES 0780 CLC 0790 ADC #1 0800 BCS LIVEL9 ;NOT >99! 0810 STA NOLIVES 0820 LIVEL9 CLD 0830 JSR PRINTLIVES 0840 EXP3 RTS 0850 ; ------------------------------ 0860 ; Print # of lives in line 2 0870 ; ------------------------------ 0880 PRINTLIVES 0890 LDA NOLIVES 0900 AND #15 0910 ORA #16 0920 STA SCREEN+518 0930 LDA NOLIVES 0940 LSR A 0950 LSR A 0960 LSR A 0970 LSR A 0980 ORA #16 0990 STA SCREEN+517 1000 RTS 1010 ; ------------------------------ 1020 ; Monst/Plattf -Init BASIC only 1030 ; ------------------------------ 1040 MPMBO 1050 LDA #PMS+4 1060 STA PAGE01+1 1070 LDA #BOFF 1080 STA PAGE01 1090 LDX #0 1100 XK1 LDA STATUSM,X 1110 AND #2 1120 BEQ XK2 1130 JSR PLATTFORM 1140 JMP XK9 1150 XK2 JSR ACTION 1160 XK9 INX 1170 CPX #BYTES/2 1180 BNE XK4 1190 INC PAGE01+1 1200 LDA #BOFF 1210 STA PAGE01 1220 XK4 CPX #BYTES 1230 BNE XK1 1240 RTS 1250 ; ------------------------------ 1260 ; Naechsten Level bestimmen 1270 ; ------------------------------ 1280 LEVELNEXT 1290 LDY #0 1300 LDA (LEPOINTER),Y 1310 CLC 1320 ADC LEPOINTER 1330 STA LEPOINTER 1340 LDA LEPOINTER+1 1350 ADC #0 1360 STA LEPOINTER+1 1370 ; 1380 SED 1390 CLC 1400 LDA LENODEC 1410 ADC #1 1420 STA LENODEC 1430 LDA LENODEC+1 1440 ADC #0 1450 STA LENODEC+1 1460 CLD 1470 ; 1480 LDA (LEPOINTER),Y 1490 BNE LENOL1 ;0=LE ALLE 1500 STY LENODEC+1 1510 INY 1520 STY LENODEC 1530 LDA # >LESTARTADR 1540 STA LEPOINTER+1 1550 LDA # <LESTARTADR 1560 STA LEPOINTER 1570 LENOL1 RTS 1580 ; ------------------------------ 1590 ; Initialisiere aktuellen Level 1600 ; ------------------------------ 1610 LEVELINIT 1620 LDY #1 1630 MBD LDA (LEPOINTER),Y 1640 STA 1535,Y 1650 INY 1660 CPY #86 1670 BNE MBD 1680 LDA #0 1690 STA KASTENRESET 1700 STA FRESSTIME 1710 STA FRESSTIME+1 1720 JSR CLEARPM 1730 JSR INITMDAT 1740 LDA LEPOINTER 1750 CLC 1760 ADC #86 1770 PHA 1780 LDA LEPOINTER+1 1790 ADC #0 1800 PHA 1810 JSR LEVELPRINT 1820 JMP DCOMP 1830 ; RTS 1840 ; ------------------------------ 1850 ; Print Level number in line 2 1860 ; ------------------------------ 1870 LEVELPRINT 1880 LDA LENODEC 1890 AND #15 1900 ORA #16 1910 STA SCREEN+490 1920 STA SRVB+14 1930 LDA LENODEC 1940 LSR A 1950 LSR A 1960 LSR A 1970 LSR A 1980 ORA #16 1990 STA SCREEN+489 2000 STA SRVB+13 2010 LDA LENODEC+1 2020 ORA #16 2030 STA SCREEN+488 2040 STA SRVB+12 2050 RTS 2060 ; ------------------------------ 2070 ; ****************************** 2080 ; * Initialisiere P/M-Grafik * 2090 ; * Letzte Revision: 08-08-87 * 2100 ; * by Stefan C. Mueller * 2110 ; * (C) MCMLXXXVII S.C.M.Soft! * 2120 ; ****************************** 2130 ; 2140 ; Frueher: INITPM.M65 2150 ; 2160 INITGAME 2170 JSR CLEARPM 2180 LDA #255 2190 LDX #16 2200 FLOB STA LOECHER,X 2210 DEX 2220 BPL FLOB 2230 ; 2240 LDA YPOS 2250 STA YPOSRESCUE 2260 ; 2270 LDA #62 ;1line resol. 2280 STA 559 ;tell shadow 2290 ; 2300 LDA #PMS ;Base bei pms 2310 STA 54279 ;tell ANTIC 2320 ; 2330 LDA #2 ;Player only 2340 STA 53277 ;tell GTIA 2350 ; 2360 LDA #$78 ;Blau 2370 STA 706 ;player 2 2380 LDA #$C4 ;Gruen 2390 STA 707 ;Player 3 2400 ; 2410 LDA #0 ;normale Groesse 2420 STA 53256 ;sizep0 2430 STA 53257 ;sizep1 2440 STA 53258 ;sizep2 2450 STA 53259 ;sizep3 2460 STA CRASHBIT 2470 LDA #33 2480 STA 623 2490 ; 2500 ; ****************************** 2510 ; * Initialisiere DLI/VBI * 2520 ; ****************************** 2530 ; 2540 ; frueher: INITINT.M65 2550 ; 2560 LDA # <DLI 2570 STA 512 2580 LDA # >DLI 2590 STA 513 2600 ; 2610 LDA #7 2620 LDX # >VBI 2630 LDY # <VBI 2640 JSR $E45C 2650 LDA #192 2660 STA 54286 2670 ; ****************************** 2680 ; * Initialisiere Color/DL/Snd * 2690 ; * Letzte Revision: 20-08-87 * 2700 ; * by Stefan C. Mueller * 2710 ; * (C) MCMLXXXVII S.C.M.Soft! * 2720 ; ****************************** 2730 LDA # <DL 2740 STA 560 ;DLIST 2750 LDA # >DL 2760 STA 561 2770 ; 2780 LDA #$46 ;COLORS 2790 STA 708 2800 LDA #$F4 2810 STA 710 2820 LDA #$98 2830 STA 711 2840 LDA #0 2850 STA 712 2860 ; 2870 LDA # <SCREEN 2880 STA 88 2890 LDA # >SCREEN 2900 STA 89 2910 LDA #32 ;SOUND 2920 STA $D208 ; " 2930 LDA #3 ; " 2940 STA $D20F ; " 2950 ; JSR INITFONT 2960 ; RTS 2970 ; ------------------------------- 2980 ; ****************************** 2990 ; * Initialisiere Zeichensatz * 3000 ; ****************************** 3010 ; 3020 ; frueher: INITFONT.M65 3030 ; 3040 INITFONT LDY #0 3050 FNT1 LDA LINE1,Y 3060 STA FONTPT,Y 3070 LDA $E100,Y ; Grossbuchst. 3080 STA FONTPT+$0100,Y 3090 LDA LINE3,Y 3100 STA FONTPT+$0200,Y 3110 LDA $E300,Y ; Kleinbuchst. 3120 STA FONTPT+$0300,Y 3130 INY 3140 BNE FNT1 3150 LDA #PMS+[OFFRAM/256] 3160 STA 756 3170 RTS 3180 ; ****************************** 3190 ; * spiele komplett ein Bild * 3200 ; ****************************** 3210 PLAYPICTURE 3220 LDA #0 3230 STA WASNUN 3240 LDA #1 3250 STA VBIANAUS 3260 ; 3270 LDY #0 3280 WWW3 LDX #0 3290 WWW1 INY 3300 BNE WWW1 3310 INX 3320 CPX #24 ;VerzoegerungsZeit 3330 BNE WWW1 3340 STY 77 3350 JSR FRESSITDYN 3360 JSR SCORESUB1 3370 JSR MONSTERMOVE 3380 LDA WASNUN 3390 BEQ WWW3 3400 WWW2 LDA #0 3410 STA VBIANAUS 3420 STA KASTENRESET 3430 STA FRESSTIME 3440 STA FRESSTIME+1 3450 STA AMADIP 3460 ; STA SOUNDNUMMERS!!!!! 3470 RTS ;WASNUN enthaelt Abbruchcode 3480 ; 3490 ; ****************************** 3500 ; * Teste aus Level-Editor Mode* 3510 ; ****************************** 3520 LETEST 3530 LDY #1 3540 STY NOLIVES 3550 DEY 3560 STY EXTRAP 3570 JSR INITGAME 3580 JSR PRINTDT 3590 JSR PRINTLIVES 3600 ; print 'TEST' 3610 LDY #3 3620 PRIDDD LDA TESTTEXT,Y 3630 STA SCREEN+488,Y 3635 LDA #0 3637 STA SCOREM,Y 3640 DEY 3650 BPL PRIDDD 3655 JSR SCOREOUT 3660 ; 3670 JSR PLAYPICTURE 3680 LDA #0 3685 STA SOUNDN2 ;05-07-88 3690 STA SOUNDN3 3700 STA DELTAX 3710 STA DELTAY 3720 STA JMPTIME 3730 STA JMPHIM? 3740 STA BOBTOT 3750 STA CRASHBIT 3760 STA STATUS 3770 STA AMADIP 3780 RTS 3790 TESTTEXT .SBYTE "Test" 3800 ;------------------------------- 3810 TXTA .SBYTE " Score: 00000000 Top-Score: 00000000 " 3820 TXTB .SBYTE " Level: 000 EXTRA Lives: 00 " 3830 ; 3840 PMOFF 3850 LDA #0 3860 STA $D01D 3870 STA $D00D 3880 STA $D00E 3890 STA $D00F 3900 STA $D010 3910 RTS 3920 ; 3930 ;------------------------------- 3940 ; 3950 VORBILD 3960 JSR PMOFF 3970 JSR LEVELPRINT 3980 LDA #PMS 3990 STA 756 4000 LDA # >SRVB ;LEVEL:001 4010 STA SRVBV+1 4020 LDA # <SRVB 4030 STA SRVBV 4040 LDA NOLIVES ;NOLIVES=0? 4050 BNE GG200 4060 LDA # >SRVB2 ;GAME OVER 4070 STA SRVBV+1 4080 LDA # <SRVB2 4090 STA SRVBV 4100 GG200 LDA # <DLVB 4110 STA 560 4120 LDA # >DLVB 4130 STA 561 4140 LDA 20 4150 ADC #100 ;2.0 SEK. 4160 ; 4170 GG100 4180 CMP 20 4190 BNE GG100 ;WENN KLEINER 4200 LDA # <DL 4210 STA 560 4220 LDA # >DL 4230 STA 561 4240 LDA #3 4250 STA $D01D ; PM AN 4260 LDA #PMS+2 4270 STA 756 4280 RTS ;SONST RTS! 4290 DLVB .BYTE 112,112,112,112,112,112,112,112,112,112,112,112,112,112 4300 .BYTE 64+7 4310 SRVBV .BYTE 0,0 4320 .BYTE 65 4330 .WORD DLVB 4340 ; 4350 SRVB .SBYTE " LEVEL: 001 " 4360 SRVB2 .SBYTE " GAME OVER " 4370 ; 4380 ; ****************************** 4390 ; * FRESS IT DYNamisch * 4400 ; * Letzte Revision: 28-10-87 * 4410 ; ****************************** 4420 ; 4430 FRESSITDYN 4440 LDA FRESSTIME 4450 ORA FRESSTIME+1 4460 BEQ SM874 4470 LDA FRESSTIME 4480 SEC 4490 SBC #1 4500 STA FRESSTIME 4510 LDA FRESSTIME+1 4520 SBC #0 4530 STA FRESSTIME+1 4540 ORA FRESSTIME 4550 BNE SM874 4560 LDA #1 4570 STA KASTENRESET 4580 ; 4590 SM874 4600 LDA KASTENRESET 4610 BEQ SM875 4620 LDY #0 4630 LDA (SUCHSTADR),Y 4640 CMP #2 ;LEERER KASTEN 4650 BNE SM875 4660 LDA #3+64 ;VOLLER KASTEN 4670 STA (SUCHSTADR),Y 4680 DEC KASTENRESET 4690 SOUNDI2 4700 INC NOKASTEN 4710 LDA #0 4720 STA AMADIP 4730 ; 4740 SM875 4750 ;SUCHSTADR+1 ==> MAX =>MIN! 4760 ; 4770 LDA SUCHSTADR 4780 CLC 4790 ADC #13 ;INTERLEAVE 4800 STA SUCHSTADR 4810 LDA SUCHSTADR+1 4820 ADC #0 4830 STA SUCHSTADR+1 4840 CMP # >SUCHSTMAX 4850 BCC SM876 4860 LDA SUCHSTADR 4870 CMP # <SUCHSTMAX 4880 BCC SM876 4890 SEC 4900 LDA SUCHSTADR 4910 SBC # <440 4920 STA SUCHSTADR 4930 LDA SUCHSTADR+1 4940 SBC # >440 4950 STA SUCHSTADR+1 4960 SM876 RTS 4970 ; ***************************** 4980 ; * LOESCHE PM-SPEICHER * 4990 ; ***************************** 5000 CLEARPM 5010 LDA #0 5020 TAY 5030 OOO1 STA BASE+$0400,Y 5040 STA BASE+$0500,Y 5050 STA BASE+$0600,Y 5060 STA BASE+$0700,Y 5070 INY 5080 BNE OOO1 5090 RTS
##############################################################################
In der Datei VORLOAD.M65 sind die Daten zur Darstellung des Vorspanns abgelegt. Außerdem wird
die Farbanimation des VorspannS aufwändig berechnet!
##############################################################################
0100 ;******************************* 0110 ;* Vorspann fuer Laden & Titel * 0120 ;* (c) MCMLXXXVIII S.C.Mueller * 0130 ;* Version 27.03.88 * 0140 ;******************************* 0150 ; 0160 ;SAVE#D:VORLOAD.M65 0170 ; 0180 HLPCOLOR = $DA 0190 HLPBITCOUNT = $DB 0200 HLPASL = $DC 0210 ?SMZP = $DD 0220 ; 0230 INITMANIACDL2 0240 LDY #0 0250 LDA # <MANIACSRAM 0260 STA ?SMZP 0270 LDA # >MANIACSRAM 0280 STA ?SMZP+1 0290 ?SML1 LDX #3 0300 ?SML2 LDA #64+15 0310 STA MANIACDLRAM,Y 0320 INY 0330 LDA ?SMZP 0340 STA MANIACDLRAM,Y 0350 INY 0360 LDA ?SMZP+1 0370 STA MANIACDLRAM,Y 0380 INY 0390 DEX 0400 BPL ?SML2 0410 LDA ?SMZP 0420 CLC 0430 ADC #40 ;NORMAL PLAYF. 0440 STA ?SMZP 0450 LDA ?SMZP+1 0460 ADC #0 0470 STA ?SMZP+1 0480 CPY #30*4 0490 BNE ?SML1 0500 ; 0510 LDA #1 0520 STA MANIACDLRAM,Y 0530 INY 0540 LDA # <MANIACDL2 0550 STA MANIACDLRAM,Y 0560 INY 0570 LDA # >MANIACDL2 0580 STA MANIACDLRAM,Y 0590 RTS 0600 ;--------------------------- 0610 DCOMPMANIAC 0620 LDA # <MANIACSRAM 0630 STA ?SMZP 0640 LDA # >MANIACSRAM 0650 STA ?SMZP+1 0660 LDX #0 0670 LDY #0 0680 ?SML3 LDA #3 0690 STA HLPBITCOUNT 0700 LDA MANIACPICTURE,X 0710 INX 0720 STA HLPASL 0730 ; 0740 ?SML4 LDA HLPCOLOR 0750 ASL HLPASL 0760 BCS ?SML5 0770 AND #$0F 0780 ?SML5 ASL HLPASL 0790 BCS ?SML6 0800 AND #$F0 0810 ?SML6 STA (?SMZP),Y 0820 INY 0830 CPY #40 0840 BEQ ?SML9 0850 DEC HLPBITCOUNT 0860 BPL ?SML4 0870 BMI ?SML3 0880 ?SML9 LDA ?SMZP 0890 CLC 0900 ADC #40 0910 STA ?SMZP 0920 LDA ?SMZP+1 0930 ADC #0 0940 STA ?SMZP+1 0950 LDY #0 0960 LDA HLPCOLOR 0970 CLC 0980 ADC #$01 0990 AND #$0F 1000 PHA 1010 LDA HLPCOLOR 1020 CLC 1030 ADC #$10 1040 AND #$F0 1050 STA HLPCOLOR 1060 PLA 1070 ORA HLPCOLOR 1080 STA HLPCOLOR 1090 CPX #100 1100 BNE ?SML3 1110 RTS 1120 ;******************************* 1130 MAKECOLORUP 1140 LDY #0 1150 ?S100 TYA 1160 PHA 1170 AND #$0F 1180 TAX 1190 LDA HLPCT,X 1200 STA HLPCOLOR 1210 JSR DCOMPMANIAC 1220 PLA 1230 TAY 1240 LDX 20 1250 INX 1260 INX 1270 ?S101 CPX 20 1280 BNE ?S101 1290 INY 1300 CPY #$33 1310 BNE ?S100 1320 RTS 1330 HLPCT .BYTE $00,$11,$22,$33,$44,$55,$66,$77,$88,$99,$AA,$BB,$CC,$DD,$EE,$FF 1340 ; SAVE#D:MANIAC2.M65 1350 MANIACPICTURE 1360 .BYTE 125,192,1,192,0,254,0,7,0,7,69,64,1,64,0,130,0,5,0,5 1370 .BYTE 93,64,1,64,0,170,0,7,0,5,209,95,127,125,249,171,125,240,125,245 1380 .BYTE 145,81,68,5,9,41,69,23,69,21,177,85,95,117,89,125,85,85,85,119 1390 .BYTE 161,81,81,85,81,69,85,85,85,64,191,119,223,87,81,69,215,93,215,119 1400 .BYTE 128,0,0,80,17,68,0,64,0,21,255,255,255,223,241,199,255,255,255,247
##############################################################################
In der Datei VSPANN.M65 wird die Textzeile des Vorspanns dargestellt und berechnet.
##############################################################################
0100 ; SAVE #D:VSPANN.M65 0110 ; VORSPANN FUER Electro Maniac! 0120 ; VERSION 06-09-87 (C) S.C.M.SOFT 0130 VXCOLOR = $D016 0140 VXRANDOM = 53770 0150 VXWAIT = $D40A 0160 VXDLIC = $D0 0170 VXVBIT = $D1 0180 VXVBIGS = $CB 0190 VXVBIFS = $CC 0200 VXFSCROL = 54277 0210 VORSPANN 0220 ; 0230 JSR PMOFF 0240 JSR INITFONT 0250 LDA #7 0260 STA VXFSCROL 0270 LDA #80 0280 STA VXVBIT 0290 LDA # <VXTEXT+40 0300 STA VXLMS 0310 LDA # >VXTEXT+40 0320 STA VXLMS+1 0330 LDX #0 0340 STX 710 0350 STX $D01D ;GRACTL 0360 STX VXFSCROL 0370 STX VXVBIFS 0380 STX VXVBIT 0390 INX 0400 STX VXVBIGS 0410 LDA #10 0420 STA 709 0430 LDA # >VXDL 0440 STA 561 0450 LDA # <VXDL 0460 STA 560 0470 ; 0480 LDA # <VXDLI 0490 STA 512 0500 LDA # >VXDLI 0510 STA 513 0520 ; 0530 LDX # >VXVBI 0540 LDY # <VXVBI 0550 LDA #7 0560 JSR $E45C 0570 LDA #192 0580 STA $D40E 0590 JSR INITMANIACDL2 0600 JSR MAKECOLORUP 0610 RTS 0620 ; 0630 ; 0640 VXMAXANZ = 4 ;# Textzeilen 0650 VXVBI 0660 LDA #0 0670 STA VXDLIC 0680 LDA 20 0690 AND #1 0700 BEQ VXML1 0710 LDA #100 0720 CMP VXVBIT 0730 BNE VXML0 ;=> 0740 INC VXVBIFS 0750 LDA #8 0760 CMP VXVBIFS 0770 BNE VXML2 0780 LDA #0 0790 STA VXVBIFS 0800 LDA #0 0810 STA VXVBIT 0820 CLC 0830 LDA VXLMS 0840 ADC #40 0850 STA VXLMS 0860 LDA VXLMS+1 0870 ADC #0 0880 STA VXLMS+1 0890 INC VXVBIGS 0900 LDA VXVBIGS 0910 CMP #VXMAXANZ 0920 BNE VXML2 0930 LDA #0 0940 STA VXVBIGS 0950 LDA # <VXTEXT 0960 STA VXLMS 0970 LDA # >VXTEXT 0980 STA VXLMS+1 0990 VXML2 ; 1000 LDA VXVBIFS 1010 STA VXFSCROL 1020 VXML1 ; 1030 JMP $E462 1040 VXML0 ; 1050 INC VXVBIT 1060 JMP $E462 1070 ; 1080 ; 1090 VXDLI 1100 PHA 1110 TXA 1120 PHA 1130 ; 1140 LDX VXDLIC 1150 INC VXDLIC 1160 ; 1170 VXSM3 LDA VXCT4,X 1180 STA VXWAIT 1190 STA VXCOLOR+4 1200 STA VXCOLOR+2 1210 LDA VXCT5,X 1220 STA 53275 ;PRIOR 1230 ; 1240 PLA 1250 TAX 1260 PLA 1270 RTI 1280 ; 1290 VXCT4 .BYTE 10,$B2,10,0,10,$B2,10,0 1300 VXCT5 .BYTE 34,34,34,64,34,34,34,34 1320 VXTEXT .SBYTE " www.ElectroManiac.de " 1325 .SBYTE " ABBUC Software-Wettbewerb 2009 " 1340 .SBYTE " Dr<cken Sie Fire, um zu beginnen! " 1350 .SBYTE " Copyright ",34," 2009 by Stefan C. M/ller " 1360 .SBYTE " www.ElectroManiac.de " 1370 VXDL .BYTE 112,112,112,128,128,112,64+2 1380 .WORD SCREEN 1390 .BYTE 112,128,128,112,112,112,48,112-16,1 1400 .WORD MANIACDLRAM 1410 MANIACDL2 1420 .BYTE 112,112,112,112,128,128,112,64+32+2 1430 VXLMS .WORD VXTEXT 1440 .BYTE 2,112,128,128,65 1450 .WORD VXDL
##############################################################################
In der Datei ZEICHNEP.M65 (zeichne Player) wird die Player-Missle-Grafik erzeugt und animiert.
Die Missles werden bis dato nicht verwendet.
##############################################################################
0100 ; ****************************** 0110 ; * Zeichne Player * 0120 ; * Letzte Revision: 08-08-87 * 0130 ; * by Stefan C. Mueller * 0140 ; * (C) MCMLXXXVII S.C.M.Soft! * 0150 ; ****************************** 0160 ; 0170 ; SAVE #D:ZEICHNEP.M65 0180 ; 0190 ; -------- ZEICHNE P2 ---------- 0200 ; 0210 LDA YPOSRESCUE ;LOESCHE PM 0220 STA PAGE0 0230 LDA #PMS+6 0240 STA PAGE0+1 0250 LDA #0 0260 LDY #0 0270 CL STA (PAGE0),Y 0280 INC PAGE0+1 0290 STA (PAGE0),Y 0300 BEQ NNYP 0310 DEC PAGE0+1 0320 INY 0330 CPY #17 0340 BNE CL ; LOESCH ENDE 0350 ; 0360 LDA YPOS ;UPDATE YPOS 0370 CLC 0380 ADC DELTAY 0390 CMP #24 0400 BEQ NNYP 0410 CMP #198 0420 BEQ NNYP 0430 STA YPOS 0440 STA YPOSRESCUE 0450 STA PAGE0 0460 ; 0470 NNYP LDY STATUS 0480 LDX OFFSET,Y 0490 ; 0500 ; ******* ZEICHNE PL2 ***** 0510 LDY #0 0520 PL1 LDA DATENP2,X 0530 AND LOECHER,Y 0540 STA (PAGE0),Y 0550 INX 0560 INY 0570 CPY #17 0580 BNE PL1 0590 ; 0600 ; ******* ZEICHNE P3 ********* 0610 ; 0620 LDX #0 0630 LDA STATUS 0640 AND #4 0650 BEQ III 0660 LDX #9 ;OFFSET VON 9 0670 III LDY #4 0680 INC PAGE0+1 0690 L1 LDA DATENP3,X 0700 AND LOECHER,Y 0710 STA (PAGE0),Y 0720 INX 0730 INY 0740 CPY #13 0750 BNE L1 0760 ;** NEW X-POSITION *** 0770 LDA 20 ;25TIMES PER SEC 0780 AND #1 0790 BEQ G1 0800 LDA XPOS ;JA. NEW X 0810 CLC 0820 ADC DELTAX 0830 CMP #201 0840 BCS G1 0850 CMP #47 0860 BCC G1 0870 STA XPOS 0880 G1 LDA XPOS 0890 STA 53250 0900 STA 53251
##############################################################################
So, dass war alles! Wer möchte mithelfen, Electro Maniac! weiter zu entwickeln? Bitte melden! Siehe Impressum!
##############################################################################
|