Up until now, when I moved left or right, the character was just changing the positions, but the character itself didn't change at all, when it was going left it just felt like "moonwalking". At least I need the character to be able to look to another direction when waking left.
One problem with that is that creating new sprites for that can be kind of a "waste" because space is very limited, so, what I need to do is reuse the same sprites and flip them.
First in ZEROPAGE segment I need a new variable which is for the direction, so 0 is right, 1 is left.
pdir: .res 1 ;player direction 00 right, 01 left
The second thing that I need is to update the value every time **moveLeft **or **moveRight **is called
moveLeft:
LDA p1x
SEC
SBC #01
STA p1x
LDA p2x
SEC
SBC #01
STA p2x
LDA #$01
STA pdir
RTS
moveRight:
LDA p1x
CLC
ADC #01
STA p1x
LDA p2x
CLC
ADC #01
STA p2x
LDA #$00
STA pdir
RTS
And finally, this will affect the update of the sprites, so I needed to do some changes here for the character part:
LDA #$00
CMP pdir
BEQ rightCharTiles
LDA #$01
STA $0201
LDA #$00
STA $0205
LDA #$11
STA $0209
LDA #$10
STA $020D
LDA #$40
STA $0202
STA $0206
STA $020A
STA $020E
JMP charTilesDone
rightCharTiles:
LDA #$00
STA $0201
LDA #$01
STA $0205
LDA #$10
STA $0209
LDA #$11
STA $020D
LDA #$00
STA $0202
STA $0206
STA $020A
STA $020E
charTilesDone:
LDA p1y
STA $0200
STA $0204
LDA p2y
STA $0208
STA $020C
LDA p1x
STA $0203
STA $020B
LDA p2x
STA $0207
STA $020F
Now I can turn the character around:
As always, the code can be found at my github repo.
Top comments (0)