Subject: [stella] Ho ho ho #1 (Boing) From: Rob <kudla@xxxxxxxxx> Date: Wed, 22 Dec 1999 23:47:15 -0500 |
Kind of seems passe now with people starting to do 7800 stuff, but a few folks on rgvc suggested I submit my Boing demo which is kind of based on Eckhard Stolberg's bigmove demo. Here it is, hope I'm posting it right. Make sure you press reset before Christmas. Rob
; boing! Demo for Atari 2600 ; (No, not Boing the Q-bert ripoff) ; Started 29 November 1999 ; by Rob Kudla ; First release, 1 December 1999 ; Second release, 2 December 1999 (made color cycling slightly less lame) ; Third release, 3 December 1999 (doubled the anim frames to make it smoother) ; Fourth release, 4 December 1999 (added hilarious "4 voice sound" routine) ; ; The important parts of this (the big sprite routines, ; the init, etc) are from bigmove.a65 by Eckhard Stolberg. ; Then I guess he adapted the funky 6-digit score routines from somewhere else. ; I basically made the object bigger and animated it, added a little ; sound, ripped out the joystick functions, and stroked my own ego. processor 6502 ; TIA (Stella) write-only registers ; Vsync equ $00 Vblank equ $01 Wsync equ $02 Rsync equ $03 Nusiz0 equ $04 Nusiz1 equ $05 ColuP0 equ $06 ColuP1 equ $07 Colupf equ $08 ColuBK equ $09 Ctrlpf equ $0A Refp0 equ $0B Refp1 equ $0C Pf0 equ $0D Pf1 equ $0E Pf2 equ $0F RESP0 equ $10 RESP1 equ $11 Resm0 equ $12 Resm1 equ $13 Resbl equ $14 Audc0 equ $15 Audc1 equ $16 Audf0 equ $17 Audf1 equ $18 Audv0 equ $19 Audv1 equ $1A GRP0 equ $1B GRP1 equ $1C Enam0 equ $1D Enam1 equ $1E Enabl equ $1F HMP0 equ $20 HMP1 equ $21 Hmm0 equ $22 Hmm1 equ $23 Hmbl equ $24 VdelP0 equ $25 VdelP1 equ $26 Vdelbl equ $27 Resmp0 equ $28 Resmp1 equ $29 HMOVE equ $2A Hmclr equ $2B Cxclr equ $2C ; ; TIA (Stella) read-only registers ; Cxm0p equ $00 Cxm1p equ $01 Cxp0fb equ $02 Cxp1fb equ $03 Cxm0fb equ $04 Cxm1fb equ $05 Cxblpf equ $06 Cxppmm equ $07 Inpt0 equ $08 Inpt1 equ $09 Inpt2 equ $0A Inpt3 equ $0B Inpt4 equ $0C Inpt5 equ $0D ; ; RAM definitions ; Note: The system RAM maps in at 0080-00FF and also at 0180-01FF. It is ; used for variables and the system stack. The programmer must make sure ; the stack never grows so deep as to overwrite the variables. ; RamStart equ $0080 RamEnd equ $00FF StackBottom equ $00FF StackTop equ $0080 ; ; 6532 (RIOT) registers ; SWCHA equ $0280 Swacnt equ $0281 SWCHB equ $0282 Swbcnt equ $0283 Intim equ $0284 Tim1t equ $0294 Tim8t equ $0295 Tim64t equ $0296 T1024t equ $0297 ; ; ROM definitions ; RomStart equ $F000 RomEnd equ $FFFF IntVectors equ $FFFA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; s1 EQU $80 s2 EQU $82 s3 EQU $84 s4 EQU $86 s5 EQU $88 s6 EQU $8A DelayPTR EQU $8C LoopCount EQU $8E TopDelay EQU $8F BottomDelay EQU $90 MoveCount EQU $91 Temp EQU $92 RotateDir EQU $93 SkipFrame EQU $94 VerticalDir EQU $95 HorizontalDir EQU $96 VerticalPos EQU $97 HorizontalPos EQU $98 SoundQ EQU $99 SkipMove EQU $9a EggMode EQU $9b FrameCycle EQU $9c EggMusic EQU $9d ORG $F000 Cart_Init: SEI ; Disable interrupts.: CLD ; Clear "decimal" mode. LDX #$FF TXS ; Clear the stack Common_Init: LDX #$28 ; Clear the TIA registers ($04-$2C) LDA #$00 TIAClear: STA $04,X DEX BPL TIAClear ; loop exits with X=$FF LDX #$FF RAMClear: STA $00,X ; Clear the RAM ($FF-$80) DEX BMI RAMClear ; loop exits with X=$7F LDX #$FF TXS ; Reset the stack IOClear: STA Swbcnt ; console I/O always set to INPUT STA Swacnt ; set controller I/O to INPUT DemoInit: LDA #$01 STA VdelP0 STA VdelP1 LDA #$03 STA Nusiz0 STA Nusiz1 LDA #$36 ; a nice shade of red STA ColuP0 STA ColuP1 LDA #$ff ; page to get gfx from initially STA s1+1 STA s2+1 STA s3+1 STA s4+1 STA s5+1 STA s6+1 LDA #0 ; offset in the gfx data STA s1 LDA #50 ; offset in the gfx data STA s2 LDA #100 ; offset in the gfx data STA s3 LDA #150 ; offset in the gfx data STA s4 LDA #200 ; offset in the gfx data STA s5 LDA #0 ; vestigial! STA s6 LDA #$01 ; +1 or -1, rotating the ball STA RotateDir LDA #$01 ; Vertical direction, +1 or -1 STA VerticalDir LDA #$01 ; Same for horizontal STA HorizontalDir STA SoundQ ; Start out by making a noise LDA #1 STA SkipFrame STA SkipMove LDA #0 STA TopDelay STA MoveCount LDA #120 STA BottomDelay LDA #$f2 STA DelayPTR+1 LDA #$1d+36 ;????? STA DelayPTR STA Wsync NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP STA RESP0 STA RESP1 LDA #$50 ;????? STA HMP1 LDA #$40 ;????? STA HMP0 STA Wsync STA HMOVE STA Wsync LDA #$0f STA ColuBK NewScreen: LDA #$02 STA Wsync ; Wait for horizontal sync STA Vblank ; Turn on Vblank STA Vsync ; Turn on Vsync STA Wsync ; Leave Vsync on for 3 lines STA Wsync STA Wsync LDA #$00 STA Vsync ; Turn Vsync off LDA #43 ; Vblank for 37 lines ; changed from 43 to 53 for 45 lines PAL STA Tim64t ; 43*64intvls=2752=8256colclks=36.2lines JSR DoSound ; was too big to leave inline :P INC FrameCycle ; we'll use this for color cycling and ; possibly for sound DEC SkipFrame BNE Movement ; skip the animation most of the time LDA #3 ; number of frames to skip STA SkipFrame ; if it's zero, reset it SkipSkip: LDA EggMode ; check for easter egg :) CMP #0 ; no? how sad. BNE Movement LDA RotateDir ; which direction to rotate it in? CLC ADC s1+1 ; add that to the gfx page ORA #$F8 ; there are only 8 so mask the rest STA s1+1 STA s2+1 STA s3+1 STA s4+1 STA s5+1 Movement: LDA #$1 BIT SWCHB ; is someone pushing reset? BNE NoReset ; no? how sad. STA EggMode ; set egg mode JMP MoveDelay NoReset: LDA #0 STA EggMode ; no select = no easter egg. ; yes, I could have made it harder to find. ; gimme a break, I'm feeling good ;) MoveDelay: JSR CheckEgg ; override animation if necessary LDA SkipMove INC SkipMove AND #1 ; basically i lamed out and said BNE MoveHorizontal ; "skip every other frame" JMP VblankLoop MoveHorizontal: LDA HorizontalPos ; i couldn't figure out how to use HMOVE CLC ; without blowing up yet, so let's glom ADC HorizontalDir ; onto the joystick routines STA HorizontalPos LDA HorizontalDir CMP #0 BMI GoLeft GoRight: JSR Right LDA HorizontalPos CMP #112 ; i also haven't figured out how to make the BNE MoveVertical ; sprite go all the way to the right edge! LDA HorizontalDir ; since we're not using the 6th copy LDA #$FF STA HorizontalDir LDA #1 ; if we're reversing direction, we've hit a wall STA SoundQ ; so make a sound LDA RotateDir EOR #$FE STA RotateDir ; and change 1 into -1 (255) JMP MoveVertical GoLeft: JSR Left LDA HorizontalPos CMP #1 BNE MoveVertical LDA #$01 STA HorizontalDir STA SoundQ LDA RotateDir EOR #$FE STA RotateDir MoveVertical: LDA VerticalPos CLC ADC VerticalDir STA VerticalPos LDA VerticalDir CMP #0 BMI GoUp GoDown: JSR Down LDA VerticalPos CMP #120 ; kind of a rough approximation, yeah BNE EndMove LDA #$FF STA VerticalDir LDA #1 STA SoundQ LDA RotateDir EOR #$FE STA RotateDir JMP EndMove GoUp: JSR UP LDA VerticalPos CMP #1 BNE EndMove LDA #$01 STA VerticalDir STA SoundQ LDA RotateDir EOR #$FE STA RotateDir EndMove: JMP VblankLoop UP: LDA TopDelay BEQ U1 DEC TopDelay INC BottomDelay U1: RTS ; was JMP VblankLoop Down: LDA BottomDelay BEQ D1 INC TopDelay DEC BottomDelay D1: RTS; was JMP VblankLoop Right: LDX MoveCount INX STX MoveCount CPX #3 BNE R2 LDX DelayPTR DEX STX DelayPTR CPX #$1c ;????? BNE R1 LDA #$1d ;????? STA DelayPTR LDA #2 STA MoveCount RTS; was JMP VblankLoop R1: LDA #0 STA MoveCount R2: LDA #$f0 STA HMP0 STA HMP1 STA Wsync STA HMOVE RTS; was JMP VblankLoop Left: LDX MoveCount DEX STX MoveCount CPX #$ff BNE L2 LDX DelayPTR INX STX DelayPTR CPX #$1d+37 ; indexing into a code segment with a literal - naughty BNE L1 LDA #$1d+36 ; indexing into a code segment with a literal - naughty STA DelayPTR LDA #0 STA MoveCount RTS; was JMP VblankLoop L1: LDA #2 STA MoveCount L2: LDA #$10 STA HMP0 STA HMP1 STA Wsync STA HMOVE RTS; was JMP VblankLoop ORG $F200 VblankLoop: LDA Intim BNE VblankLoop ; wait for vblank timer STA Wsync ; finish waiting for the current line STA Vblank ; Turn off Vblank ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ScreenStart: LDY TopDelay INY ;????? X1: STA Wsync DEY BNE X1 LDY #4 ;????? X2: DEY BPL X2 LDA #49 ; 50 pixels high STA LoopCount JMP (DelayPTR) JNDelay: .byte $c9,$c9,$c9,$c9,$c9,$c9,$c9,$c9,$c9 .byte $c9,$c9,$c9,$c9,$c9,$c9,$c9,$c9,$c9 .byte $c9,$c9,$c9,$c9,$c9,$c9,$c9,$c9,$c9 .byte $c9,$c9,$c9,$c9,$c9,$c9,$c9,$c9,$c9,$c9,$c5 NOP X3: NOP NOP NOP LDY LoopCount LDA (s1),Y STA GRP0 LDA (s2),Y STA GRP1 LDA (s3),Y STA GRP0 ; LDA (s6),Y lda $00 LDA #$00 STA Temp LDA (s5),Y TAX LDA (s4),Y LDY Temp STA GRP1 STX GRP0 STY GRP1 STA GRP0 DEC LoopCount BPL X3 LDA #0 STA GRP0 STA GRP1 STA GRP0 STA GRP1 NOP NOP NOP NOP NOP NOP NOP LDY BottomDelay INY ;????? X4: STA Wsync DEY BNE X4 LDA #$02 STA Vblank STA Wsync ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; OverscanStart: LDA #34 ;skip 30 lines (overscan) STA Tim64t OverscanLoop: LDA Intim BNE OverscanLoop ; wait for Overscan timer OverscanDone: STA Wsync ; finish waiting for the current line JMP NewScreen ; sound routine ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DoSound: LDA EggMode ; if egg mode is set, we do it differently CMP #0 BEQ StartSound LDA EggMusic AND #$7F ; we're doing 16 bars of 8th notes TAY LDA FrameCycle AND #1 BEQ UseSet2 UseSet1: LDA EggMusic1,Y ; channel 1 notes CMP #0 BEQ SetVol1 STA Audf0 LDA #5 ; I guess we'll try this for now STA Audc0 LDA #3 SetVol1: STA Audv0 LDA EggMusic2,Y ; channel 2 notes CMP #0 BEQ SetVol2 STA Audf1 LDA #8 ; I guess we'll try this for now STA Audc1 LDA #5 ; left hand s/b quieter SetVol2: STA Audv1 JMP ChangeNote UseSet2: LDA EggMusic3,Y ; channel 1 notes CMP #0 BEQ SetVol1a STA Audf0 LDA #5 ; I guess we'll try this for now STA Audc0 LDA #15 SetVol1a: STA Audv0 LDA EggMusic4,Y ; channel 2 notes CMP #0 BEQ SetVol2a STA Audf1 LDA #1 ; I guess we'll try this for now STA Audc1 LDA #12 ; left hand s/b quieter SetVol2a: STA Audv1 ChangeNote: LDA FrameCycle ; so we can skip every 3, 7 or 15 frames AND #$07 ; let's try 15 BNE EndSound INY STY EggMusic BNE EndSound StartSound: LDA FrameCycle ; so we can skip every 3, 7 or 15 frames AND #$03 ; let's try 15 BNE EndSound LDA SoundQ ; is there sound to be played? CMP #0 BEQ EndSound ; no? how sad. TAY CPY #1 ; if it's note #1 we can't do the cheezy echo. BEQ DoVoice1 DEY DoVoice2: LDA SoundFData,Y ; basically you just set SoundQ to an STA Audf1 ; offset and put frequency, control and LDA SoundCData,Y ; volume data in the data segment below STA Audc1 ; with zero termination. I was gonna do LDA SoundVData,Y ; a channel multiplexing music thing ; but I'm too lame. LSR ; Divide volume in half for the cheezy echo STA Audv1 INY DoVoice1: LDA SoundFData,Y ; see above STA Audf0 LDA SoundCData,Y STA Audc0 LDA SoundVData,Y STA Audv0 CMP #0 BNE NextNote ; if it's not zero there's more STA Audf0 STA Audc0 STA Audv1 STA SoundQ ; otherwise we turn off the sound and empty the Q JMP EndSound NextNote: INC SoundQ EndSound: RTS CheckEgg: LDA EggMode CMP #0 BEQ NoEgg ; no egg? how sad! LDA FrameCycle ; hey, it works in adventure STA ColuP0 STA ColuP1 LDA #$F6 STA s1+1 STA s2+1 STA s3+1 STA s4+1 STA s5+1 LDA #1 STA SoundQ RTS NoEgg: LDA #$36 ; otherwise set the color back to the STA ColuP0 ; lovely shade of red. this egg works much STA ColuP1 ; more smoothly than I expected. LDA #0 STA EggMusic RTS ; egg sound data ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ORG $F400 EggMusic3: .byte 23,0,23,0,23,23,0,0 .byte 23,0,23,0,23,23,0,0 .byte 23,0,19,0,29,0,26,0 .byte 23,23,23,23,0,0,0,0 .byte 22,0,22,0,22,0,22,0 .byte 22,0,23,0,23,0,23,0 .byte 23,0,26,0,26,0,23,0 .byte 26,26,26,26,19,19,19,19 .byte 23,0,23,0,23,23,0,0 .byte 23,0,23,0,23,23,0,0 .byte 23,0,19,0,29,0,26,0 .byte 23,23,23,23,0,0,0,0 .byte 22,0,22,0,22,0,22,0 .byte 22,0,23,0,23,0,23,0 .byte 19,0,19,0,22,0,28,0 .byte 29,29,29,29,14,14,14,14 EggMusic4: .byte 15,15,$00,$00,21,21,$00,$00 .byte 15,15,$00,$00,21,21,$00,$00 .byte 15,15,$00,$00,21,21,$00,$00 .byte 15,15,$00,$00,21,21,$00,$00 .byte 11,11,$00,$00,15,15,$00,$00 .byte 15,15,$00,$00,21,21,$00,$00 .byte 21,21,$00,$00,13,13,$00,$00 .byte 21,21,$00,$00,18,18,16,16 .byte 15,15,$00,$00,21,21,$00,$00 .byte 15,15,$00,$00,21,21,$00,$00 .byte 15,15,$00,$00,21,21,$00,$00 .byte 15,15,$00,$00,21,21,$00,$00 .byte 11,11,$00,$00,15,15,$00,$00 .byte 15,15,$00,$00,21,21,$00,$00 .byte 21,21,$00,$00,13,13,$00,$00 .byte 15,15,21,21,18,18,16,16 ORG $F500 EggMusic1: .byte 19,0,19,0,19,19,0,0 .byte 19,0,19,0,19,19,0,0 .byte 19,0,14,0,23,0,22,0 .byte 19,19,19,19,0,0,0,0 .byte 17,0,17,0,17,0,17,0 .byte 17,0,19,0,19,0,19,0 .byte 19,0,20,0,20,0,17,0 .byte 19,19,19,19,15,15,15,15 .byte 19,0,19,0,19,19,0,0 .byte 19,0,19,0,19,19,0,0 .byte 19,0,14,0,23,0,22,0 .byte 19,19,19,19,0,0,0,0 .byte 17,0,17,0,17,0,17,0 .byte 17,0,19,0,19,0,19,0 .byte 15,0,15,0,17,0,22,0 .byte 23,23,23,23,23,23,23,23 EggMusic2: .byte 28,0,1,$00,28,0,1,$00 .byte 28,0,1,$00,28,0,1,$00 .byte 28,0,1,$00,28,0,1,$00 .byte 28,0,1,$00,28,0,1,$00 .byte 28,0,1,$00,28,0,1,$00 .byte 28,0,1,$00,28,0,1,$00 .byte 28,0,1,$00,28,0,1,$00 .byte 28,0,1,$00,28,0,1,$00 .byte 28,0,1,$00,28,0,1,$00 .byte 28,0,1,$00,28,0,1,$00 .byte 28,0,1,$00,28,0,1,$00 .byte 28,0,1,$00,28,0,1,$00 .byte 28,0,1,$00,28,0,1,$00 .byte 28,0,1,$00,28,0,1,$00 .byte 28,0,1,$00,28,0,1,$00 .byte 28,0,1,$00,28,0,1,$00 ; graphics data (boing ball) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ORG $F600 ; first column .byte $33,$37,$3e,$3c,$36,$33,$31,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $03,$03,$03,$03,$03,$03,$03,$00 .byte $3f,$00,$1f,$06,$06,$06,$06,$0e .byte $06,$00,$03,$03,$01,$00,$01,$03 .byte $03,$00,$31,$31,$31,$3f,$31,$31 .byte $31,$00 ; second column .byte $9f,$31,$31,$31,$31,$31,$b1,$00 .byte $33,$37,$3e,$33,$31,$31,$3f,$00 .byte $03,$03,$03,$f3,$03,$03,$fb,$00 .byte $ff,$00,$9e,$03,$01,$1f,$31,$31 .byte $1f,$00,$1b,$bb,$f3,$e3,$f3,$bb .byte $1b,$00,$b1,$b1,$bf,$b1,$b1,$9b .byte $8e,$00 ; third column .byte $3e,$b3,$b1,$b1,$b1,$b3,$be,$00 .byte $9f,$31,$31,$b1,$b1,$b1,$1f,$00 .byte $39,$73,$e3,$3b,$1b,$1b,$f1,$00 .byte $ff,$00,$1e,$03,$81,$9f,$b1,$b1 .byte $1f,$00,$1b,$1b,$5b,$fb,$fb,$b9 .byte $18,$00,$b0,$b0,$bf,$b1,$b1,$31 .byte $3f,$00 ; fourth column .byte $3f,$30,$b0,$b0,$b0,$30,$30,$00 .byte $3f,$b1,$b1,$bf,$b1,$b1,$3f,$00 .byte $f3,$1b,$1b,$1b,$1b,$1b,$f3,$00 .byte $ff,$00,$1e,$03,$81,$9f,$b1,$b1 .byte $1f,$00,$19,$1b,$f8,$19,$1b,$b3 .byte $e1,$00,$30,$30,$3f,$b1,$b1,$b1 .byte $3f,$00 ; fifth column .byte $63,$63,$7f,$63,$63,$36,$1c,$00 .byte $00,$80,$80,$00,$80,$80,$00,$00 .byte $18,$18,$58,$f8,$f8,$b8,$18,$00 .byte $ff,$00,$20,$00,$90,$98,$9c,$8e .byte $0e,$00,$f0,$18,$18,$f0,$00,$30 .byte $e0,$00,$0c,$0c,$0c,$9e,$b3,$b3 .byte $33,$00 ; sound data (bounce noise) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ORG $F700 SoundFData: .byte $1f,$19,$1a,$1b,$1c,$1d,$1e,$1f ORG $F750 SoundCData: .byte $07,$06,$06,$06,$06,$06,$06,$06 ORG $F7A0 SoundVData: .byte $0f,$0b,$0a,$08,$06,$04,$02,$00 ORG $F800 ; first column .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $01,$01,$03,$06,$06,$0d,$03,$23 .byte $23,$23,$23,$27,$47,$46,$48,$f8 .byte $38,$38,$38,$3c,$3c,$3c,$3c,$3d .byte $19,$01,$21,$20,$10,$10,$18,$08 .byte $0c,$0d,$01,$00,$00,$00,$00,$00 .byte $00,$00 ; second column .byte $00,$00,$03,$03,$0e,$0e,$8e,$8e .byte $9f,$1f,$18,$00,$60,$e0,$e0,$e0 .byte $e0,$e0,$e3,$ef,$9f,$1f,$1f,$1f .byte $1f,$0f,$0f,$0f,$0e,$10,$38,$f8 .byte $f8,$fc,$fc,$fc,$fe,$fe,$79,$60 .byte $40,$e0,$e0,$f0,$78,$3c,$1d,$08 .byte $00,$00 ; third column .byte $00,$40,$78,$3e,$1f,$0f,$06,$08 .byte $3c,$fc,$fc,$fe,$fe,$7f,$7e,$78 .byte $60,$40,$c0,$c0,$c0,$e0,$e0,$e0 .byte $e1,$e7,$ff,$0f,$0f,$0f,$0f,$07 .byte $07,$07,$02,$04,$3c,$fc,$fe,$fe .byte $fe,$7e,$7f,$38,$00,$70,$f8,$78 .byte $1c,$0e ; fourth column .byte $00,$00,$00,$00,$98,$fc,$1e,$1f .byte $0f,$07,$03,$00,$0e,$7e,$fe,$7f .byte $7f,$7f,$3f,$3f,$3f,$3c,$00,$60 .byte $e0,$e0,$e0,$e0,$f0,$f0,$f0,$f1 .byte $ff,$cf,$0f,$0f,$07,$07,$07,$06 .byte $08,$38,$f0,$f1,$72,$70,$60,$60 .byte $40,$00 ; fifth column .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $80,$d0,$b8,$18,$18,$0c,$0c,$06 .byte $06,$06,$84,$9c,$7c,$7c,$7c,$3c .byte $3c,$3c,$3e,$3e,$3c,$22,$42,$c2 .byte $c2,$c4,$c4,$c4,$c0,$88,$f0,$60 .byte $c0,$c0,$80,$80,$00,$00,$00,$00 .byte $00,$00 ORG $F900 ; first column .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $01,$01,$02,$06,$04,$0b,$17,$27 .byte $27,$27,$07,$0f,$4f,$4e,$40,$b0 .byte $70,$70,$30,$30,$30,$30,$38,$39 .byte $3f,$27,$07,$23,$01,$11,$11,$00 .byte $08,$09,$03,$01,$00,$00,$00,$00 .byte $00,$00 ; second column .byte $00,$00,$01,$01,$18,$1c,$dc,$9c .byte $3c,$3c,$3b,$61,$01,$81,$81,$81 .byte $81,$81,$83,$8f,$ff,$7f,$7f,$7f .byte $3f,$3f,$3f,$3f,$3e,$20,$00,$e0 .byte $e0,$e0,$f0,$f0,$f8,$f8,$ff,$e3 .byte $81,$81,$c0,$e0,$f0,$78,$3f,$10 .byte $00,$00 ; third column .byte $00,$01,$c0,$fc,$7e,$3f,$1e,$00 .byte $30,$f0,$f8,$f8,$f8,$fc,$fd,$fb .byte $e3,$81,$01,$01,$00,$00,$00,$00 .byte $81,$87,$9f,$7f,$7f,$3f,$3f,$3f .byte $1f,$1f,$1e,$08,$30,$f0,$f0,$f8 .byte $f8,$f8,$fc,$fb,$61,$41,$f0,$f8 .byte $1c,$00 ; fourth column .byte $00,$80,$60,$18,$00,$7c,$7c,$3e .byte $3f,$1f,$1f,$0c,$08,$78,$fc,$fc .byte $fc,$fe,$fe,$fe,$ff,$fc,$60,$00 .byte $80,$80,$80,$c0,$c0,$c0,$c0,$c1 .byte $ef,$df,$1f,$1f,$1f,$1f,$1f,$1e .byte $10,$21,$e1,$e1,$e3,$e4,$e0,$c0 .byte $80,$00 ; fifth column .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$90,$b8,$38,$38,$1c,$1c,$0e .byte $0e,$0e,$00,$19,$f8,$f8,$f8,$f8 .byte $f8,$f8,$f8,$fc,$ff,$66,$06,$86 .byte $86,$84,$8c,$0c,$0c,$00,$60,$c0 .byte $c0,$80,$80,$00,$00,$00,$00,$00 .byte $00,$00 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ORG $FA00 ; first column .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $01,$02,$06,$04,$08,$0b,$17,$2f .byte $2f,$0f,$0f,$0e,$5e,$5f,$10,$a0 .byte $60,$60,$60,$60,$60,$60,$60,$31 .byte $37,$2f,$0f,$07,$07,$03,$13,$01 .byte $01,$09,$03,$01,$00,$00,$00,$00 .byte $00,$00 ; second column .byte $00,$00,$00,$03,$18,$38,$38,$38 .byte $38,$78,$7f,$e7,$87,$07,$07,$07 .byte $07,$03,$00,$0c,$7c,$fc,$fc,$fe .byte $fe,$fe,$fe,$fe,$ff,$60,$40,$80 .byte $80,$c0,$c0,$c0,$e0,$e0,$e7,$ef .byte $87,$03,$83,$81,$c1,$60,$33,$0b .byte $00,$00 ; third column .byte $00,$06,$c1,$f0,$f8,$7c,$7f,$30 .byte $20,$c0,$e0,$e0,$e0,$f0,$f1,$f7 .byte $e7,$87,$07,$07,$03,$03,$03,$03 .byte $00,$06,$1e,$fe,$fe,$ff,$ff,$ff .byte $7f,$7f,$7e,$78,$00,$c0,$e0,$e0 .byte $f0,$f0,$f0,$ff,$e7,$83,$c1,$e1 .byte $f1,$10 ; fourth column .byte $00,$00,$80,$60,$10,$70,$f8,$fc .byte $fc,$7e,$3f,$3c,$10,$60,$e0,$f0 .byte $f0,$f0,$f8,$f8,$fc,$ff,$e3,$83 .byte $03,$01,$01,$01,$01,$01,$01,$00 .byte $0e,$be,$7e,$7e,$7e,$7e,$7e,$3f .byte $31,$03,$c3,$c3,$c2,$e4,$e0,$e0 .byte $c0,$00 ; fifth column .byte $00,$00,$00,$00,$00,$00,$80,$40 .byte $30,$00,$70,$f0,$78,$78,$38,$3c .byte $3c,$1e,$18,$11,$f1,$f1,$f1,$f1 .byte $f1,$f0,$f0,$f8,$fa,$e6,$8e,$0e .byte $0c,$0c,$0c,$0c,$18,$10,$40,$c0 .byte $80,$80,$00,$00,$00,$00,$00,$00 .byte $00,$00 ORG $FB00 ; first column .byte $00,$00,$00,$00,$00,$00,$00,$01 .byte $01,$02,$06,$04,$09,$12,$1e,$0e .byte $1e,$1c,$1c,$1c,$1c,$3d,$33,$03 .byte $c3,$c3,$c3,$41,$41,$61,$61,$60 .byte $66,$7f,$0f,$0f,$0f,$07,$07,$03 .byte $03,$00,$07,$03,$01,$00,$00,$00 .byte $00,$00 ; second column .byte $00,$00,$01,$03,$01,$11,$70,$70 .byte $70,$70,$e7,$ff,$9f,$1f,$1f,$1f .byte $1f,$1f,$1c,$10,$70,$f0,$f0,$f0 .byte $f8,$f8,$f8,$f8,$f9,$e7,$c3,$03 .byte $03,$01,$01,$01,$80,$80,$87,$df .byte $bf,$1f,$0f,$87,$c3,$61,$33,$13 .byte $00,$00 ; third column .byte $00,$02,$e3,$e1,$f0,$f0,$f9,$f3 .byte $c3,$01,$81,$80,$80,$80,$c1,$c7 .byte $df,$9f,$1f,$1f,$1f,$0f,$0f,$0f .byte $0e,$00,$18,$f8,$f8,$f8,$fc,$fc .byte $fc,$fc,$ff,$f9,$c1,$01,$00,$80 .byte $80,$c0,$e0,$e7,$ef,$87,$07,$c3 .byte $f3,$32 ; fourth column .byte $00,$00,$c0,$f0,$62,$41,$e0,$f0 .byte $f8,$fc,$fe,$fd,$70,$00,$80,$c0 .byte $c0,$c0,$e0,$e0,$e0,$f3,$ef,$8f .byte $0f,$0f,$0f,$07,$07,$07,$07,$02 .byte $0c,$3c,$fc,$fc,$fc,$fc,$fc,$fd .byte $f3,$47,$87,$87,$86,$8e,$c8,$d0 .byte $80,$00 ; fifth column .byte $00,$00,$00,$00,$00,$00,$80,$c0 .byte $70,$20,$60,$e0,$f0,$f0,$f8,$78 .byte $78,$7c,$3a,$23,$c3,$c3,$c3,$c1 .byte $e1,$e1,$e1,$e1,$e2,$fe,$9c,$1c .byte $1c,$1c,$3c,$38,$38,$30,$48,$90 .byte $90,$a0,$40,$00,$00,$00,$00,$00 .byte $00,$00 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ORG $FC00 ; first column .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $02,$00,$01,$01,$0b,$12,$0c,$18 .byte $18,$18,$38,$38,$38,$31,$3f,$4f .byte $87,$c7,$c7,$47,$47,$47,$47,$46 .byte $44,$5c,$1e,$1e,$0e,$0f,$0f,$07 .byte $07,$02,$06,$03,$01,$00,$00,$00 .byte $00,$00 ; second column .byte $00,$00,$01,$03,$07,$23,$61,$61 .byte $e1,$e1,$c6,$de,$be,$3f,$3f,$3f .byte $3f,$3f,$3c,$30,$40,$c0,$c0,$c0 .byte $c0,$c0,$e0,$e0,$e1,$ff,$df,$0f .byte $0f,$07,$07,$07,$03,$03,$04,$9e .byte $fe,$3f,$1f,$1f,$8f,$47,$24,$0f .byte $01,$00 ; third column .byte $00,$08,$07,$83,$c0,$e0,$f1,$ff .byte $c7,$07,$07,$03,$03,$01,$00,$06 .byte $1f,$7f,$7f,$7f,$7f,$7f,$7f,$3f .byte $3e,$38,$20,$e0,$e0,$e0,$e0,$f0 .byte $f0,$f0,$f1,$ff,$c7,$07,$03,$03 .byte $03,$01,$01,$86,$9f,$9f,$0f,$87 .byte $e3,$3c ; fourth column .byte $00,$00,$80,$f0,$e6,$43,$c1,$c0 .byte $e0,$e0,$f0,$fb,$f3,$83,$03,$01 .byte $01,$01,$00,$80,$80,$83,$df,$bf .byte $3f,$3f,$3f,$3f,$1f,$1f,$1f,$1e .byte $10,$20,$e0,$f0,$f0,$f0,$f0,$f1 .byte $ff,$cf,$0e,$0e,$0e,$0e,$88,$80 .byte $40,$00 ; fifth column .byte $00,$00,$00,$00,$00,$00,$80,$c0 .byte $f0,$60,$40,$c0,$e0,$e0,$f0,$f0 .byte $f8,$f8,$fe,$e6,$07,$03,$83,$83 .byte $83,$83,$83,$83,$82,$dc,$bc,$38 .byte $78,$78,$78,$78,$70,$78,$08,$90 .byte $30,$20,$40,$00,$00,$00,$00,$00 .byte $00,$00 ORG $FD00 ; first column .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$01,$01,$03,$14,$08,$18 .byte $18,$10,$30,$30,$30,$31,$6f,$5f .byte $8f,$8f,$8f,$0f,$0f,$0f,$0f,$4e .byte $48,$58,$38,$38,$1c,$1c,$0e,$0e .byte $0e,$06,$04,$02,$01,$00,$00,$00 .byte $00,$00 ; second column .byte $00,$00,$00,$03,$07,$23,$23,$43 .byte $c3,$c3,$84,$9c,$fc,$7c,$7c,$7c .byte $7c,$fc,$ff,$f1,$81,$01,$81,$81 .byte $80,$80,$80,$80,$81,$9f,$bf,$3f .byte $3f,$3f,$1f,$1f,$1f,$0f,$08,$18 .byte $7c,$fc,$7e,$3e,$1f,$1f,$04,$0e .byte $01,$00 ; third column .byte $00,$0c,$0f,$07,$83,$81,$c1,$ef .byte $df,$1f,$0f,$0f,$0f,$07,$06,$00 .byte $1c,$7c,$fc,$fc,$fe,$fe,$fe,$ff .byte $fe,$f8,$e0,$00,$00,$80,$80,$80 .byte $c0,$c0,$e1,$e7,$df,$1f,$0f,$0f .byte $0f,$07,$07,$00,$1c,$fe,$3e,$0f .byte $85,$7c ; fourth column .byte $00,$00,$00,$c0,$fe,$8f,$07,$83 .byte $81,$c0,$e0,$e3,$ff,$8f,$0f,$07 .byte $07,$03,$03,$03,$01,$02,$1e,$7e .byte $fe,$fe,$fe,$7f,$7f,$7f,$7f,$7e .byte $70,$00,$c0,$c0,$c0,$c0,$c0,$c1 .byte $ee,$de,$1e,$1c,$1c,$1e,$1c,$10 .byte $20,$00 ; fifth column .byte $00,$00,$00,$00,$00,$00,$80,$c0 .byte $e0,$e0,$08,$80,$80,$c4,$c0,$e2 .byte $e0,$f0,$f6,$ee,$0e,$06,$06,$06 .byte $06,$07,$07,$07,$05,$19,$78,$f8 .byte $f0,$f2,$f0,$f0,$f0,$f8,$90,$30 .byte $20,$40,$40,$80,$00,$00,$00,$00 .byte $00,$00 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ORG $FE00 ; first column .byte $00,$00,$00,$00,$00,$00,$00,$01 .byte $01,$03,$03,$07,$07,$04,$08,$10 .byte $10,$30,$30,$31,$21,$20,$6f,$5f .byte $9f,$9f,$9f,$1f,$1f,$1f,$1f,$4e .byte $48,$50,$30,$38,$18,$1c,$0c,$0e .byte $0e,$07,$04,$00,$00,$00,$00,$00 .byte $00,$00 ; second column .byte $00,$00,$01,$03,$07,$07,$47,$cf .byte $cf,$8f,$88,$18,$78,$f8,$f8,$f8 .byte $f8,$fc,$ff,$f3,$83,$03,$03,$01 .byte $01,$01,$01,$01,$00,$9f,$bf,$7f .byte $7f,$3f,$3f,$3f,$1f,$1f,$18,$10 .byte $78,$fc,$fc,$7e,$3e,$1f,$0c,$00 .byte $00,$00 ; third column .byte $00,$3c,$9e,$8f,$07,$83,$80,$8f .byte $ff,$3f,$1f,$1f,$1f,$0f,$0e,$08 .byte $18,$78,$f8,$f8,$fc,$fc,$fc,$fc .byte $ff,$f9,$e1,$01,$01,$00,$00,$00 .byte $80,$80,$81,$87,$ff,$3f,$1f,$1f .byte $0f,$0f,$0f,$00,$18,$7c,$3e,$1e .byte $0f,$06 ; fourth column .byte $00,$00,$00,$80,$fe,$8f,$07,$03 .byte $03,$81,$c0,$c3,$ef,$9f,$1f,$0f .byte $0f,$0f,$07,$07,$03,$00,$1c,$7c .byte $fc,$fe,$fe,$fe,$fe,$fe,$fe,$ff .byte $f1,$41,$81,$81,$81,$81,$81,$c0 .byte $ce,$fc,$3c,$3c,$3c,$38,$38,$30 .byte $20,$00 ; fifth column .byte $00,$00,$00,$00,$00,$00,$00,$80 .byte $c0,$f0,$88,$08,$80,$84,$c4,$c2 .byte $c2,$e0,$e6,$ee,$0e,$0e,$0e,$0e .byte $0e,$0f,$0f,$07,$05,$19,$70,$f0 .byte $f0,$f0,$f0,$f0,$e4,$e8,$b0,$30 .byte $60,$40,$c0,$80,$00,$00,$00,$00 .byte $00,$00 ORG $FF00 ; first column .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$01,$01,$03,$07,$04,$01,$31 .byte $31,$31,$21,$21,$61,$60,$4e,$fe .byte $3e,$1e,$1e,$1e,$1f,$1f,$1f,$1e .byte $18,$10,$30,$30,$18,$18,$1c,$0c .byte $0e,$0f,$00,$00,$00,$00,$00,$00 .byte $00,$00 ; second column .byte $00,$00,$03,$03,$07,$07,$87,$cf .byte $8f,$8f,$88,$10,$70,$f0,$f0,$f8 .byte $f8,$f8,$fb,$f7,$87,$07,$07,$07 .byte $03,$03,$03,$03,$02,$1e,$3e,$fe .byte $fe,$7f,$7f,$7f,$3f,$3f,$38,$00 .byte $60,$f0,$f8,$7c,$3c,$1e,$0c,$0c .byte $00,$00 ; third column .byte $00,$20,$fe,$8f,$07,$07,$02,$8e .byte $be,$7f,$3f,$3f,$3f,$1f,$1e,$18 .byte $00,$70,$f0,$f0,$f0,$f8,$f8,$f8 .byte $fd,$fb,$e3,$03,$03,$03,$01,$01 .byte $01,$01,$00,$07,$bf,$7f,$7f,$3f .byte $3f,$1f,$1f,$08,$10,$78,$7c,$1e .byte $0f,$00 ; fourth column .byte $00,$00,$00,$00,$dc,$be,$0f,$07 .byte $03,$01,$81,$83,$cf,$bf,$3f,$1f .byte $1f,$1f,$0f,$0f,$0f,$04,$18,$78 .byte $f8,$fc,$fc,$fc,$fc,$fc,$fc,$fd .byte $f3,$c3,$03,$03,$03,$03,$83,$82 .byte $8c,$bc,$7c,$38,$39,$38,$38,$60 .byte $40,$00 ; fifth column .byte $00,$00,$00,$00,$00,$00,$00,$80 .byte $c0,$f0,$98,$08,$08,$84,$84,$86 .byte $c2,$c2,$c4,$fe,$1e,$1e,$1e,$1e .byte $0e,$0e,$0e,$0e,$0d,$11,$70,$f2 .byte $e2,$e2,$e0,$e0,$e0,$c8,$b0,$30 .byte $60,$40,$c0,$80,$00,$00,$00,$00 .byte $00,$00 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Set up the 6502 interrupt vector table ; ORG IntVectors NMI .word Cart_Init Reset .word Cart_Init IRQ .word Cart_Init ; END
Attachment:
boing26.bin
Description: Binary data
kudla@xxxxxxxxx ... http://kudla.org/raindog ... Rob
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [stella] Ho ho ho #2 (horizonta, Thomas Jentzsch | Thread | Re: [stella] Ho ho ho #1 (Boing), Glenn Saunders |
[stella] Ho ho ho #2 (horizontal sc, Rob | Date | [stella] Year end roundup, Glenn Saunders |
Month |