Now that the main character can shoot, it should shoot something, so I need to create enemies.
When I was starting, my 7 year old daughter passed by my computer, asked me what I was doing and told me that she wanted to create the testing monster.
She called this "The Aqualate". I needed this to be on screen and needed to make it move on its own, so I needed to create some of this beautiful code.
First of all, I need 3 variables, one for the position in X, one for the position in Y and one for the stage of movement it is (we will go over it briefly).
ax: .res 1 ; Aqualate x position
ay: .res 1 ; Aqualate y position
al: .res 1 ; Aqualate in the loop
For now I put some initial values to place it somewhere
LDA #$50
STA ax
LDA #$80
STA ay
Now, I need a fixed pattern for the enemy, let's say an easy one, so let's make the Aqualate move in squares. Here comes the third variable into the game. The position status, the position has 4 status ($00, $01, $02 and $03), every status has a place and in every cicle the al variable increments in one and changes the place of ay and ax. If incrementing the variable results in $04, then it goes to $00 again.
aqualate:
LDA #$00 ;in the original position x+1, y-1
CMP al
BNE :+
LDA ax
CLC
ADC #05
STA ax
LDA ay
SEC
SBC #05
STA ay
:
LDA #$01 ;position 2 x+1, y+1
CMP al
BNE :+
LDA ax
CLC
ADC #05
STA ax
LDA ay
CLC
ADC #05
STA ay
:
LDA #$02 ;position 3 x-1, y+1
CMP al
BNE :+
LDA ax
SEC
SBC #05
STA ax
LDA ay
CLC
ADC #05
STA ay
:
LDA #$03 ; position 4 x-1, y-1
CMP al
BNE :+
LDA ax
SEC
SBC #05
STA ax
LDA ay
SEC
SBC #05
STA ay
:
;update
LDA al
CLC
ADC #01
STA al
LDA #05
CMP al
BNE :+
LDA #00
STA al
:
RTS
And now in the engine zone, in every cicle I need to call this function
JMP aqualate
The last part is placing it into the screen, for that I assigned the aqualate the addresses from $0214 to $0217. So I only need to put this into the updatesprites function
;Aqualate ($0214 to $0217)
LDA ay
STA $0214
LDA #$02
STA $0215
LDA #$00
STA $0216
LDA ax
STA $0217
And about Megaman 1, well, I could beat Cutman, but the rest is terribly hard. I have no skills :(
Top comments (0)