Ir ao conteúdo
  • Cadastre-se

Outro Problemas com código em assembly (6502)


Posts recomendados

Ola, tudo bem? Sou acadêmico de Sistemas para Internet e estou com problemas no meu código que está sendo feito no Easy 6502 (https://skilldrick.github.io/easy6502). O objetivo é fazer um ponto na tela se mexer nas direções conforme os comandos w,a,s,d; como se fosse um joystick. Entretanto, não consegui fazer funcionar e não sei o que pode estar faltando. Desde já agradeço a atenção e espero que possam me dar uma orientação.

 

define pontoL     $10 
define pontoH     $11 
define pontoStart $12 
define PontoDirecao $02 
define pontoLeitura    $03 

; Direcao 
define cima      1
define direita   2
define baixo    4
define esquerda    8

; Movimentação
define ASCII_w      $77
define ASCII_a      $61
define ASCII_s      $73
define ASCII_d      $64

; Variaveis
define sysRandom    $fe
define sysLastKey   $ff


  jsr inicia
  jsr loop

inicia:
  jsr iniciaPonto
  jsr generateApplePosition
  rts


iniciaPonto:
  lda #direita  
  sta pontoDirecao


  lda #$11
  sta pontoL
  
  lda #$10
  sta pontoStart
  
  lda #$0f
  sta $14 
  
  lda #$04
  sta pontoH
  sta $13 
  sta $15 
  rts


loop:
  jsr readKeys
  jsr pintaPonto
  jsr spinWheels
  jmp loop


readKeys:
  lda sysLastKey
  cmp #ASCII_w
  beq upKey
  cmp #ASCII_d
  beq rightKey
  cmp #ASCII_s
  beq downKey
  cmp #ASCII_a
  beq leftKey
  rts
upKey:

  lda #cima
  sta pontoDirecao
  rts
rightKey:

  lda #direita
  sta pontoDirecao
  rts
downKey:

  lda #baixo
  sta pontoDirecao
  rts
leftKey:

  lda #esquerda
  sta pontoDireccao
  rts


updateloop:
  lda pontoL,x
  sta pontoStart,x
  dex
  bpl updateloop

  lda pontoDirecao
  lsr
  bcs paracima
  lsr
  bcs paradireita
  lsr
  bcs parabaixo
  lsr
  bcs paraesquerda
paracima:
  lda pontoL
  sec
  sbc #$20
  sta pontoL
  bcc cimacima
  rts
cimacima:
  dec pontoH
  lda #$1
  cmp pontoH
  beq bate
  rts
paradireita:
  inc pontoL
  lda #$1f
  bit pontoL
  beq bate
  rts
parabaixo:
  lda pontoL
  clc
  adc #$20
  sta pontoL
  bcs baixobaixo
  rts
baixobaixo:
  inc pontoH
  lda #$6
  cmp pontoH
  beq bate
  rts
paraesquerda:
  dec pontoL
  lda pontoL
  and #$1f
  cmp #$1f
  beq bate
  rts
bate:
  jmp fim


pintaPonto:
  ldx pontoLeitura
  lda #0
  sta (pontoL,x) 

  ldx #0
  lda #1
  sta (pontoL,x) 
  rts


spinWheels:
  ldx #0
spinloop:
  nop
  nop
  dex
  bne spinloop
  rts


fim:

 

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois...

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...