
.include "vcs-ca65.inc"

.global _set_horiz_pos
.export _reset_gfx
.export _reset_sprites
.export Return

;;;

; SetHorizPos routine
; A = X coordinate
; X = player number (0 or 1)
; must be in rodata segment because of alignment
.rodata
.align $10
.proc _set_horiz_pos
    sec                 ; set carry flag
    sta WSYNC           ; start a new line
:
    sbc #15             ; subtract 15
    bcs :-              ; branch until negative
    eor #7              ; calculate fine offset
    asl
    asl
    asl
    asl
    sta HMP0,x  ; set fine offset
    sta RESP0,x ; fix coarse position
    sta WSYNC   ; won't overrun if X < 150
    rts
.endproc
.code

;;;

_reset_gfx:
  lda #0
  sta PF0
  sta PF1
  sta PF2
_reset_sprites:
  lda #0
  sta GRP0
  sta GRP1
  sta GRP0
  sta GRP1
Return:
  rts

