Gibt es ein Assembler Tutorial zur Spiele-Programmierung für den C16 und Plus/4 ?
Also bewegliche Objekte: Bobs ..? , Raster-IRQ, Softscrolling und solche Sachen ?
Sound habe ich schon selbst durch Reassembling herausgefunden. - Ich werde doch nicht alles andere auch so mühsam aus alten Programmen herauspopeln müssen ?
Das spielt die Melodie von Kikstart 1. Hat leider einen kleinen Fehler beim Wrap-around, also beim erneuten Abspielen, den ich nicht finden kann. Ein Piepser zu viel. Vielleicht kommt jemand drauf ... ?
Code
- !to"ksnd.prg",cbm
- TEDSND1 = $FF0E ; $FF0E: TED Sound Voice #1 L
- TEDSND2 = $FF0F ; $FF0F: TED Sound Voice #2 L
- TEDSND2H = $FF10 ; $FF10: TED Sound Voice #2 H
- TEDSND = $FF11 ; $FF11: TED Sound Volume,on/off,Wave,D/A
- TEDREG = $FF12 ; $FF12: TED Register (Voice #1 H)
- TEDBACK = $FF15 ; $FF15: Background-Color
- TEDFRAME = $FF19 ; $FF19: TED FRAME
- *= $1001
- !byte $0c,$10,$0a,$00,$9e,$34,$31,$30,$39,$00,$00,$00
- *=$100d
- sei
- lda #$93
- jsr $ffd2
- ldx #$0f
- - lda txt,x
- sta $0c00,x
- dex
- bpl -
- lda #$00
- sta $34
- sta $35
- loop:
- jsr player
- ldx #$00 ; waste time
- -- ldy #$00
- - dey
- bne -
- inx
- cpx #$10
- bne --
- jmp loop
- player:
- inc $34
- lda $34
- cmp #$06 ; 6 cycles
- bne +
- lda #$00
- sta $34
- inc $35
- lda $35
- cmp #$c0 ; 192 cycles
- bne +
- lda #$00
- sta $35
- + ldx $35
- lda offset,x ; get offset
- and #$F0 ; mask to msb
- lsr
- lsr
- lsr
- lsr
- tay
- lda voice1l,y ; get data for voice 1 L
- sta TEDSND1
- lda voice1h,y ; get data for voice 1 H
- and #$03
- ora TEDREG
- sta TEDREG ; set voice 1 H
- lda offset,x
- and #$0F ; mask to lsb
- tay
- lda voice2l,y ; get data for voice 2 L
- sta TEDSND2
- lda voice2h,y
- sta TEDSND2H ; get data for voice 2 H
- lda #$38
- sta TEDSND ; volume: 0
- rts
- txt:
- !scr "kikstart 1 sound"
- offset:
- !by $91,$91,$91,$94,$94,$94,$72,$72,$72,$74,$74,$74,$41,$41,$41,$44,$44,$44,$72,$72,$92,$d4,$d4,$94,$c4,$c4,$c4,$b8,$b8,$b8,$a6,$a6,$86,$88,$88,$88,$64,$64,$64,$68
- !by $68,$68,$66,$66,$66,$68,$68,$68,$84,$84,$84,$88,$88,$88,$66,$66,$66,$68,$68,$68,$44,$44,$44,$48,$48,$48,$66,$66,$86,$d8,$d8,$e8,$d3,$d3,$d3,$c7,$c7,$c7,$a5,$a5
- !by $95,$97,$97,$97,$c4,$c4,$c4,$a8,$a8,$a8,$96,$96,$86,$88,$88,$88,$91,$91,$91,$94,$94,$94,$72,$72,$72,$74,$74,$74,$41,$41,$41,$44,$44,$44,$72,$72,$92,$d4,$d4,$94
- !by $c4,$c4,$c4,$b8,$b8,$b8,$a6,$a6,$86,$88,$88,$88,$64,$64,$64,$68,$68,$68,$66,$66,$66,$68,$68,$68,$c4,$c4,$c4,$b8,$b8,$b8,$a6,$a6,$86,$88,$88,$88,$64,$64,$64,$68
- !by $68,$68,$46,$46,$46,$48,$48,$48,$71,$71,$71,$74,$74,$74,$72,$72,$72,$74,$74,$74,$71,$71,$e2,$74,$74,$74,$72,$72,$72,$74,$74,$74,$00
- voice1l:
- !by $00,$00,$00,$00,$04,$20,$38,$43,$58,$6a,$73,$7b,$82,$90,$9c,$00
- voice1h:
- !by $00,$00,$00,$00,$03,$03,$03,$03,$03,$03,$03,$03,$03,$03,$03,$00
- voice2l:
- !by $00,$0d,$a9,$ca,$08,$3f,$70,$87,$b0,$00,$00,$00,$00,$00,$00,$00
- voice2h:
- !by $00,$01,$01,$01,$02,$02,$02,$02,$02,$00,$00,$00,$00,$00,$00,$00