Bin noch am rumprobieren mit der Kollosion, aber mir will das einfach mit der x-Psotion nicht gelingen.
Sobald das Sprite die X-Position >255 hat bekomme ich das nicht mer hin.
Hier der Quellcode :
Code
- !to "chartest.prg",cbm
- ZP_HELP1 = $fb ;
- ZP_HELP2 = $fd ;
- RASTERLINE = $d012
- SPRITEONOFF = $d015
- SPRITE0_COLOR = $d027
- SPRITE0_POS_X = $d000
- SPRITE0_POS_Y = $d001
- INPUT_JOY2 = $dc00 ;oder 2
- JOY_UP = %00000001 ;Joystick rauf
- JOY_DOWN = %00000010 ;Joystick runter
- JOY_LEFT = %00000100 ;Joystick links
- JOY_RIGHT = %00001000 ;Joystick rechts
- JOY_FIRE = %00010000 ;Joystick FEUER!
- *=$0801
- !word main-2
- !word 2018
- !text $9e," 2062",$00,$00,$00
- main
- ldx #0 ;Wert für Spalte (0-39)
- ldy #0 ;Wert für Zeile (0-24)
- lda #61 ;Wert für Zeichen
- sty zeile
- sta zeichen
- lda #1
- sta SPRITEONOFF
- lda #128
- sta 2040
- lda #100
- sta SPRITE0_POS_X
- sta SPRITE0_POS_Y
- lda zeichen
- sta 1050+5*40
- sta 1050+6*40
- sta 1050+7*40
- !zone main
- loop
- jsr waitraster
- jsr draw_char
- jsr joystik
- jsr nextcolor
- jmp loop
- !zone nextcolor
- nextcolor
- lda Hintergrund
- dec Hintergrund
- bne .loop
- lda #50
- sta Hintergrund
- inc $d020
- .loop
- rts
- !zone joystik
- joystik
- lda #JOY_UP
- bit INPUT_JOY2
- bne .not_press_up
- dec SPRITE0_POS_Y
- .not_press_up
- lda #JOY_DOWN
- bit INPUT_JOY2
- bne .not_press_down
- inc SPRITE0_POS_Y
- .not_press_down
- lda #JOY_LEFT
- bit INPUT_JOY2
- bne .not_press_left
- dec SPRITE0_POS_X
- .not_press_left
- lda #JOY_RIGHT
- bit INPUT_JOY2
- bne .not_press_right
- inc SPRITE0_POS_X
- .not_press_right
- rts
- !zone draw_char
- draw_char
- lda SPRITE0_POS_Y
- sec
- sbc #50
- lsr
- lsr
- lsr
- tay
- ;ldy zeile
- lda bildschirm_low,y
- sta ZP_HELP1
- lda bildschirm_hi,y
- sta ZP_HELP1+1
- ;txa
- lda SPRITE0_POS_X
- sec
- sbc #12
- lsr
- lsr
- lsr
- tay
- ;dey
- ;lda zeichen
- ;sta (ZP_HELP1),y
- lda (ZP_HELP1),y
- ;cmp #61
- ;beq .loop
- ;inc $d020
- ;jmp .loop
- lda zeichen
- sta (ZP_HELP1),y
- .loop
- rts
- !zone waitraster
- waitraster
- lda RASTERLINE
- cmp #255
- beq waitraster
- .loop1 lda RASTERLINE
- cmp #255
- bne .loop1
- rts
- *= $2000
- !bin "sprites.spr"
- Hintergrund
- !byte 49
- zeichen
- !byte 0
- zeile
- !byte 0
- x_1
- !byte 0
- x_2
- !byte 0
- ;---------------------------;
- ; Lookup Tabelle für Zeile ;
- ;---------------------------;
- bildschirm_low:
- !byte <($0400 + 0 * 40)
- !byte <($0400 + 1 * 40)
- !byte <($0400 + 2 * 40)
- !byte <($0400 + 3 * 40)
- !byte <($0400 + 4 * 40)
- !byte <($0400 + 5 * 40)
- !byte <($0400 + 6 * 40)
- !byte <($0400 + 7 * 40)
- !byte <($0400 + 8 * 40)
- !byte <($0400 + 9 * 40)
- !byte <($0400 + 10 * 40)
- !byte <($0400 + 11 * 40)
- !byte <($0400 + 12 * 40)
- !byte <($0400 + 13 * 40)
- !byte <($0400 + 14 * 40)
- !byte <($0400 + 15 * 40)
- !byte <($0400 + 16 * 40)
- !byte <($0400 + 17 * 40)
- !byte <($0400 + 18 * 40)
- !byte <($0400 + 19 * 40)
- !byte <($0400 + 20 * 40)
- !byte <($0400 + 21 * 40)
- !byte <($0400 + 22 * 40)
- !byte <($0400 + 23 * 40)
- !byte <($0400 + 24 * 40)
- bildschirm_hi
- !byte >($0400 + 0 * 40)
- !byte >($0400 + 1 * 40)
- !byte >($0400 + 2 * 40)
- !byte >($0400 + 3 * 40)
- !byte >($0400 + 4 * 40)
- !byte >($0400 + 5 * 40)
- !byte >($0400 + 6 * 40)
- !byte >($0400 + 7 * 40)
- !byte >($0400 + 8 * 40)
- !byte >($0400 + 9 * 40)
- !byte >($0400 + 10 * 40)
- !byte >($0400 + 11 * 40)
- !byte >($0400 + 12 * 40)
- !byte >($0400 + 13 * 40)
- !byte >($0400 + 14 * 40)
- !byte >($0400 + 15 * 40)
- !byte >($0400 + 16 * 40)
- !byte >($0400 + 17 * 40)
- !byte >($0400 + 18 * 40)
- !byte >($0400 + 19 * 40)
- !byte >($0400 + 20 * 40)
- !byte >($0400 + 21 * 40)
- !byte >($0400 + 22 * 40)
- !byte >($0400 + 23 * 40)
- !byte >($0400 + 24 * 40)
Könnt ihr mir bitte helfen?wenn möglich auch mit einer kleinen Erkkärung warumm das dann so ist?
Ich danke euch schon im voraus!