At the time, I made both the boy and girl player sprites dance in time to the music. After adding this, I thought it might be a nice idea at a later date to make only the player you select (boy or girl) dance, while the unselected option stood still.
Today was that 'later date' and it's finally in! On the title title screen, pushing left on the joystick selects the boy to play in the game, while pushing right selects the girl. Further highlighting the selection is the text next to the boy or girl which is coloured white or dark grey depending on the choice made.
I'll be honest, at the moment pressing fire to enter the first level results in the boy sprite being displayed, even if the girl is selected. I still need to write the code to copy the right sprites into place. However, in the background, variables are being copied into place that changes the way the player behaves or is affected by other sprites. Currently, playing as the boy means that less energy is taken away on contact with a meanie than with the girl, but on the other hand, the girl can move a little quicker than the boy. These attributes will probably change as more progress is made on the game!
However, here is a screen dump of a small part of the title screen of the the boy/girl select in action:
And the code that switches between the two players...
; title screen player select subroutine ------------------------
boy_select
ldx #$d8
stx t_sprite_def+$01
stx t_sprite_anims+$01
ldx #$dc
stx t_sprite_anime+$01
ldx #$dc
stx t_sprite_def+$02
stx t_sprite_anims+$02
ldx #$dd
stx t_sprite_anime+$02
ldx #$00 ; zero x register
boy_sel_loop
lda #$01 ; load white
sta $db51,x ; write 'boy' in white
lda #$0b ; load dark grey
sta $db5d,x ; write 'girl' in dk grey
inx
cpx #$05 ; done 5 writes?
bne boy_sel_loop ; all written? no? loop back!
lda #$00 ; make player store 0
sta ply_type ; so boy is selected
rts
girl_select
ldx #$d8
stx t_sprite_def+$01
stx t_sprite_anims+$01
ldx #$d9
stx t_sprite_anime+$01
ldx #$dc
stx t_sprite_def+$02
stx t_sprite_anims+$02
ldx #$e0
stx t_sprite_anime+$02
ldx #$00 ; zero x register
girl_sel_loop
lda #$0b ; load white
sta $db51,x ; write 'boy' in white
lda #$01 ; load dark grey
sta $db5d,x ; write 'girl' in dk grey
inx
cpx #$05 ; done 5 writes?
bne girl_sel_loop ; all written? no? loop back!
lda #$01 ; make player store 1
sta ply_type ; so girl is selected
rts
Next diary entry...

No comments:
Post a Comment