Kod źródłowy efektu "shade bobs" pochodzącego z dema Amber Cow. Komentarze dotyczące działania poszczególnych procedur zostaną dodane wkrótce.
 
 
;----------------------------- 
;SHADE BOBS BY SIR ART/CHARGED 
;----------------------------- 
 
         *= $1000 
 
LICZNIK  = $28 
LINIA    = $29 
TYP      = $2A 
TYP2     = $2B 
WARSTWA  = $2C 
WORK1L   = $30 
WORK1H   = $31 
WORK2L   = $32 
WORK2H   = $33 
FAZAX    = $34 
FAZAY    = $35 
CZAS     = $36 
POMOC1   = $37 
POMOC2   = $38 
 
SINX     = $1E00 
SINY     = $1F00 
 
FONTS    = $2C00 
SHADOW   = $4000 
BOBS     = $6280 
TABSINYH = $3000 
TABSINYL = $3200 
TABSINX  = $3400 
LOTAB    = $3700 
HITAB    = $3780 
 
TABKOL   = $3600 
CZYSZ    = $3800 
 
         SEI 
         LDA #$00 
         LDX #$00 
L1       STA $D800,X 
         STA $D900,X 
         STA $DA00,X 
         STA $DB00,X 
         INX 
         BNE L1 
         LDA #$00 
         STA $D020 
         STA $D021 
         LDA #$7F 
         STA $DC0D 
         LDX #$00 
         STX $DC0E 
         INX 
         STX $D01A 
         LDA #$08 
         STA $D012 
         LDA #$97 
         STA $DD00 
         LDA #$18 
         STA $D018 
         LDA #$5B 
         STA $D011 
         LDA #$C8 
         STA $D016 
         LDA #$00 
         STA $D022 
         LDA #$35 
         STA $01 
         LDA #<IRQ1 
         STA $FFFE 
         LDA #>IRQ1 
         STA $FFFF 
 
         JSR CHESS 
         JSR ZNAKI 
         JSR SPRINI 
         JSR ATR 
         JSR PISZ 
         JSR BOBWRITE 
         JSR WRITETAB 
         JSR WRICZYSC 
 
         CLI 
 
         JSR POJAW 
         LDA #$06 
         STA $D022 
         LDA #$0E 
         STA $D023 
         LDA #$03 
         STA $D024 
         LDA #$00 
         STA FAZAX 
         STA FAZAY 
         STA CZAS 
         STA POMOC1 
         STA POMOC2 
 
J1       LDA #$E0 
JK2      CMP $D012 
         BNE JK2 
         LDA POMOC1 
         AND #$01 
         BNE JK3 
         JSR BOBS 
JK3      LDA POMOC1 
         AND #$02 
         BNE JK4 
         SEC 
         JSR SHADOW 
JK4      LDA #$FF 
         LDX #$0B 
         JSR CZYSZ 
         LDX FAZAX 
         INX 
         CPX #252 
         BNE DE1 
         LDX #$00 
DE1      STX FAZAX 
         LDX FAZAY 
         INX 
         CPX #204 
         BNE DE2 
         LDX #$00 
DE2      STX FAZAY 
         INC POMOC2 
         LDA POMOC2 
         AND #$03 
         BNE DE7 
         INC CZAS 
         LDA CZAS 
         CMP #$80 
         BNE DE5 
         LDA POMOC1 
         ORA #$01 
         STA POMOC1 
DE5      LDA CZAS 
         CMP #$90 
         BNE DE6 
         LDA POMOC1 
         ORA #$02 
         STA POMOC1 
DE6      LDA CZAS 
         CMP #$92 
         BEQ J8 
DE7      JMP J1 
 
J8       JMP J8 
 
POJAW    LDA #$F8 
         STA $20 
         LDA #$2D 
         STA $21 
         LDX #$00 
POJ2     LDY #$00 
         JSR LINEWAIT 
         LDY #$07 
POJ1     LDA ($20),Y 
         STA $21F0,Y 
         DEY 
         BPL POJ1 
         LDA $20 
         SEC 
         SBC #$10 
         STA $20 
         LDA $21 
         SBC #$00 
         STA $21 
         INX 
         CPX #$21 
         BNE POJ2 
 
         LDA #$F8 
         STA $20 
         LDA #$2D 
         STA $21 
         LDX #$00 
POJ22    LDY #$00 
         JSR LINEWAIT 
         LDY #$07 
POJ12    LDA ($20),Y 
         STA $21E8,Y 
         DEY 
         BPL POJ12 
         LDA $20 
         SEC 
         SBC #$10 
         STA $20 
         LDA $21 
         SBC #$00 
         STA $21 
         INX 
         CPX #$21 
         BNE POJ22 
         LDY #$00 
         JSR LINEWAIT 
         LDA #$00 
         STA $D01B 
         JSR NEWATR 
 
         LDX #$00 
JUY      LDA FONTS,X 
         STA $2000,X 
         LDA FONTS+$0100,X 
         STA $2100,X 
         INX 
         BNE JUY 
         RTS 
 
IRQ1     STA REG1+1 
         STX REG1+3 
         STY REG1+5 
         LDA #$00 
         STA $D020 
FLASH    LDA #$0B 
         STA $D021 
 
         LDA SPR3+1 
         EOR #$14 
         STA SPR3+1 
 
         LDA $D000 
         EOR #$01 
         STA $D000 
         STA $D008 
         LDA $D002 
         EOR #$01 
         STA $D002 
         STA $D00A 
         LDA $D004 
         EOR #$01 
         STA $D004 
         STA $D00C 
         LDA $D006 
         EOR #$01 
         STA $D006 
         STA $D00E 
 
         LDA #$00 
         STA LICZNIK 
         STA TYP 
         STA TYP2 
         LDA #$88 
         CLC 
SPR3     ADC #$00 
         STA WARSTWA 
 
         LDA #$74 
         STA LINIA 
         STA $D012 
         LDA #<IRQ2 
         STA $FFFE 
         LDA #>IRQ2 
         STA $FFFF 
 
IRQ27    INC $D019 
REG1     LDA #$00 
         LDX #$00 
         LDY #$00 
         RTI 
 
IRQ2     STA REG2+1 
         STX REG2+3 
         STY REG2+5 
 
         LDA LINIA 
         CLC 
         ADC #$15 
         STA LINIA 
         STA $D012 
         CLC 
         ADC #$01 
         LDX TYP 
         STA $D001,X 
         STA $D003,X 
         STA $D005,X 
         STA $D007,X 
         LDX TYP2 
         LDA WARSTWA 
         STA $07F8,X 
         CLC 
         ADC #$01 
         STA $07F9,X 
         CLC 
         ADC #$01 
         STA $07FA,X 
         CLC 
         ADC #$01 
         STA $07FB,X 
 
         LDA TYP 
         EOR #$08 
         STA TYP 
         LDA TYP2 
         EOR #$04 
         STA TYP2 
         LDA WARSTWA 
         CLC 
         ADC #$04 
         STA WARSTWA 
 
         INC LICZNIK 
         LDA LICZNIK 
         CMP #$05 
         BNE IRQ21 
 
         LDA #<IRQ1 
         STA $FFFE 
         LDA #>IRQ1 
         STA $FFFF 
         LDA #$08 
         STA $D012 
 
IRQ21    INC $D019 
REG2     LDA #$00 
         LDX #$00 
         LDY #$00 
         RTI 
 
POCZ1    = 11*$28+$D803 
POCZ2    = 11*$28+$0403 
POCZ3    = 2*$28+$0404 
POCZ4    = 2*$28+$D804 
 
ATR      LDA #$00 
         LDX #$00 
ATR4     STA $2000,X 
         STA $2100,X 
         INX 
         BNE ATR4 
         LDA #$FF 
         LDX #$17 
ATR5     STA $21E8,X 
         DEX 
         BPL ATR5 
 
         LDA #<POCZ1 
         STA $20 
         LDA #>POCZ1 
         STA $21 
         LDA #<POCZ2 
         STA $22 
         LDA #>POCZ2 
         STA $23 
 
         LDX #$0B 
ATR3     LDY #$0B 
ATR2     LDA #$00 
         STA ($20),Y 
         LDA #$3E 
         STA ($22),Y 
         DEY 
         BPL ATR2 
         LDA $20 
         CLC 
         ADC #$28 
         STA $20 
         STA $22 
         LDA $21 
         ADC #$00 
         STA $21 
         SEC 
         SBC #$D4 
         STA $23 
         DEX 
         BPL ATR3 
 
         LDA #<POCZ3 
         STA $20 
         LDA #>POCZ3 
         STA $21 
 
         LDX #$13 
ATR31    LDY #$1F 
ATR21    LDA ($20),Y 
         CMP #$FF 
         BNE ATR41 
         LDA #$7D 
         STA ($20),Y 
ATR41    DEY 
         BPL ATR21 
         LDA $20 
         CLC 
         ADC #$28 
         STA $20 
         LDA $21 
         ADC #$00 
         STA $21 
         DEX 
         BPL ATR31 
         RTS 
 
NEWATR   LDA #<POCZ1 
         STA $20 
         LDA #>POCZ1 
         STA $21 
         LDA #<POCZ2 
         STA $22 
         LDA #>POCZ2 
         STA $23 
 
         LDX #$0B 
NATR3    LDY #$0B 
NATR2    LDA #$0B 
         STA ($20),Y 
         LDA #$FF 
         STA ($22),Y 
         DEY 
         BPL NATR2 
         LDA $20 
         CLC 
         ADC #$28 
         STA $20 
         STA $22 
         LDA $21 
         ADC #$00 
         STA $21 
         SEC 
         SBC #$D4 
         STA $23 
         DEX 
         BPL NATR3 
 
         LDA #<POCZ3 
         STA $20 
         LDA #>POCZ3 
         STA $21 
         LDA #<POCZ4 
         STA $22 
         LDA #>POCZ4 
         STA $23 
 
         LDA #$00 
         STA FLASH+1 
 
         LDX #$13 
NATR31   LDY #$1F 
NATR21   LDA ($20),Y 
         CMP #$7D 
         BNE NATR41 
         LDA #$00 
         STA ($20),Y 
         STA ($22),Y 
NATR41   DEY 
         BPL NATR21 
         LDA $20 
         CLC 
         ADC #$28 
         STA $20 
         STA $22 
         LDA $21 
         ADC #$00 
         STA $21 
         CLC 
         ADC #$D4 
         STA $23 
         DEX 
         BPL NATR31 
         RTS 
 
SPRINI   LDA #$30 
         STA $D000 
         STA $D008 
         LDA #$48 
         STA $D002 
         STA $D00A 
         LDA #$60 
         STA $D004 
         STA $D00C 
         LDA #$78 
         STA $D006 
         STA $D00E 
         LDX #$07 
SPRINI2  LDA #$01 
         STA $D027,X 
         TXA 
         CLC 
         ADC #$80 
         STA $07F8,X 
         DEX 
         BPL SPRINI2 
         LDA #$00 
         STA $D010 
         LDA #$00 
         STA $D017 
         STA $D01D 
         LDA #$FF 
         STA $D01B 
         LDA #$0C 
         STA $D025 
         LDA #$0F 
         STA $D026 
         LDA #$FF 
         STA $D01C 
         LDA #$FF 
         STA $D015 
         RTS 
 
PROC1    LDA $0800 
         BEQ PJ1 
         SBC #$04 
PROC2    STA $0800 
         TAX 
         LDA TABKOL,X 
PROC3    STA $0800 
PJ1      NOP 
 
PISZ     LDA #<POCZ3 
         STA $20 
         LDA #>POCZ3 
         STA $21 
         LDA #<SHADOW 
         STA $24 
         LDA #>SHADOW 
         STA $25 
         LDA #$00 
         STA $22 
 
PI3      LDX #$00 
         LDA $22 
         CMP #$09 
         BCC PI2 
         LDX #$0B 
PI2      TXA 
         CLC 
         ADC $20 
         STA PROC1+1 
         STA PROC2+1 
         STA PROC3+1 
         LDA $21 
         ADC #$00 
         STA PROC1+2 
         STA PROC2+2 
         CLC 
         ADC #$D4 
         STA PROC3+2 
 
         LDY #$00 
PI1      LDA PROC1,Y 
         STA ($24),Y 
         INY 
         CPY #$11 
         BNE PI1 
         LDA $24 
         CLC 
         ADC #$11 
         STA $24 
         LDA $25 
         ADC #$00 
         STA $25 
         INX 
         CPX #$20 
         BNE PI2 
         LDA $20 
         CLC 
         ADC #$28 
         STA $20 
         LDA $21 
         ADC #$00 
         STA $21 
         INC $22 
         LDA $22 
         CMP #$14 
         BNE PI3 
 
         LDA #$60 
         LDY #$00 
         STA ($24),Y 
         RTS 
 
BOB      LDX FAZAY 
BOB1     LDA TABSINYH,X 
         BEQ BJ1 
         STA WORK1H 
         CLC 
         ADC #$D4 
         STA WORK2H 
BOB2     LDA TABSINYL,X 
         STA WORK1L 
         STA WORK2L 
         LDX FAZAX 
BOB3     LDY TABSINX,X 
         LDA (WORK1L),Y 
         CLC 
         ADC #$40 
         BCC BJ2 
         LDA #$F8 
BJ2      STA (WORK1L),Y 
         TAX 
         LDA TABKOL,X 
         STA (WORK2L),Y 
BJ1      NOP 
 
BOBWRITE LDA #<BOBS 
         STA $20 
         LDA #>BOBS 
         STA $21 
         LDA #$00 
         STA $22 
 
B2       LDY #$00 
B1       LDA BOB,Y 
         STA ($20),Y 
         INY 
         CPY #$2B 
         BNE B1 
         LDA $20 
         CLC 
         ADC #$2B 
         STA $20 
         LDA $21 
         ADC #$00 
         STA $21 
         LDA BOB1+1 
         CLC 
         ADC #$02 
         STA BOB1+1 
         STA BOB2+1 
         LDA BOB3+1 
         CLC 
         ADC #$01 
         STA BOB3+1 
         INC $22 
         LDA $22 
         CMP #$30 
         BNE B2 
 
         LDY #$00 
         LDA #$60 
         STA ($20),Y 
         RTS 
 
WRITETAB LDX #$00 
WR1      LDA SINX,X 
         STA TABSINX,X 
         STA TABSINX+252,X 
         INX 
         CPX #252 
         BNE WR1 
         LDA #$54 
         STA $20 
         LDA #$04 
         STA $21 
         LDX #$00 
WR3      LDA $20 
         STA LOTAB,X 
         LDA $21 
         STA HITAB,X 
         LDA $20 
         CLC 
         ADC #$28 
         STA $20 
         LDA $21 
         ADC #$00 
         STA $21 
         INX 
         CPX #$40 
         BNE WR3 
         LDX #$00 
WR2      LDY SINY,X 
         LDA LOTAB,Y 
         STA TABSINYL,X 
         STA TABSINYL+204,X 
         LDA HITAB,Y 
         STA TABSINYH,X 
         STA TABSINYH+204,X 
         INX 
         CPX #204 
         BNE WR2 
         LDX #$00 
         LDA #$06 
KOL1     STA TABKOL,X 
         INX 
         CPX #$40 
         BNE KOL1 
         LDA #$0E 
KOL2     STA TABKOL,X 
         INX 
         CPX #$80 
         BNE KOL2 
         LDA #$03 
KOL3     STA TABKOL,X 
         INX 
         CPX #$C0 
         BNE KOL3 
         LDA #$01 
KOL4     STA TABKOL,X 
         INX 
         BNE KOL4 
         RTS 
 
CZY      STA $0400 
CZY2     STX $0400 
 
WRICZYSC LDA #<POCZ2 
         STA $20 
         LDA #>POCZ2 
         STA $21 
         LDA #<CZYSZ 
         STA $22 
         LDA #>CZYSZ 
         STA $23 
         LDA #$0A 
         STA $24 
 
WRCZY4   LDX #$0B 
WRCZY2   LDY #$00 
         TXA 
         CLC 
         ADC $20 
         STA CZY+1 
         STA CZY2+1 
         LDA $21 
         ADC #$00 
         STA CZY+2 
         CLC 
         ADC #$D4 
         STA CZY2+2 
WRCZY    LDA CZY,Y 
         STA ($22),Y 
         INY 
         CPY #$06 
         BNE WRCZY 
         LDA $22 
         CLC 
         ADC #$06 
         STA $22 
         LDA $23 
         ADC #$00 
         STA $23 
         DEX 
         BPL WRCZY2 
         LDA $20 
         CLC 
         ADC #$28 
         STA $20 
         LDA $21 
         ADC #$00 
         STA $21 
         DEC $24 
         BPL WRCZY4 
         LDA #$60 
         LDY #$00 
         STA ($22),Y 
         RTS 
 
CHESS    LDA #$00 
         STA $20 
         LDA #$D8 
         STA $21 
         LDA #$BC 
         STA $22 
         LDA #$CB 
         STA $23 
         LDA #$0A 
         STA CH3+1 
         LDX #$00 
CH2      LDA $22 
         LDY #$00 
         STA ($20),Y 
         INY 
         STA ($20),Y 
         LDA $23 
         INY 
         STA ($20),Y 
         INY 
         STA ($20),Y 
         INX 
CH3      CPX #$14 
         BNE CH1 
         LDA #$14 
         STA CH3+1 
         LDA $22 
         TAX 
         LDA $23 
         STA $22 
         STX $23 
         LDX #$00 
CH1      LDA $20 
         CLC 
         ADC #$04 
         STA $20 
         LDA $21 
         ADC #$00 
         STA $21 
         LDA $20 
         CMP #$C0 
         BNE CH2 
         LDA $21 
         CMP #$DB 
         BNE CH2 
         RTS 
 
ZNAKI    LDX #$00 
         LDA #$FF 
ZNAKI1   STA $0400,X 
         STA $0500,X 
         STA $0600,X 
         STA $06F8,X 
         INX 
         BNE ZNAKI1 
         RTS 
 
LINEWAIT LDA #$FF 
LINWAIT2 CMP $D012 
         BNE LINWAIT2 
         LDA $D012 
LINWAIT3 CMP $D012 
         BEQ LINWAIT3 
         DEY 
         BPL LINEWAIT 
         RTS 
 
powrót