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!
 
##############################################################################
 
Stefan C. Müller
www.ElectroManiac.de