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)