keen: working on yorp support
This commit is contained in:
parent
9637633996
commit
662437c5cd
|
@ -55,3 +55,22 @@ Level1:
|
||||||
|
|
||||||
tilemap copies
|
tilemap copies
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
TILEMAP_X
|
||||||
|
TILEMAP_Y
|
||||||
|
KEEN_X / KEEN_XL
|
||||||
|
KEEN_Y
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Enemy logic:
|
||||||
|
when update tilemap
|
||||||
|
detect if enemy on screen
|
||||||
|
if so mark active
|
||||||
|
give it current x/y value
|
||||||
|
|
||||||
|
when move
|
||||||
|
same as keen move
|
||||||
|
if move off left/right side of screen mark inactive
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,15 @@
|
||||||
|
|
||||||
hi-res version
|
|
||||||
|
|
||||||
+ enemy movement
|
+ enemy movement
|
||||||
|
+ animate enemies?
|
||||||
+ check raygun count before shooting
|
+ check raygun count before shooting
|
||||||
+ fix background tile when get item
|
+ fix background tile when get item
|
||||||
+ fix keybindings
|
+ fix keybindings
|
||||||
+ play jingle entering/leaving level
|
+ play jingle entering/leaving level
|
||||||
+ implement leaving level
|
+ implement leaving level
|
||||||
+ animate enemies?
|
|
||||||
+ animate death
|
+ animate death
|
||||||
|
|
||||||
|
hi-res version
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
+
|
||||||
|
|
|
@ -66,44 +66,25 @@ exit_laser_enemy:
|
||||||
; move enemy
|
; move enemy
|
||||||
;=======================
|
;=======================
|
||||||
; which one is in Y
|
; which one is in Y
|
||||||
|
|
||||||
|
|
||||||
|
; assume yorp for now
|
||||||
move_enemy:
|
move_enemy:
|
||||||
|
|
||||||
lda enemy_data+ENEMY_DATA_TYPE,Y
|
lda enemy_data+ENEMY_DATA_X,Y
|
||||||
and #$fc
|
|
||||||
|
|
||||||
cmp #ENEMY_CAMERA
|
|
||||||
beq aim_camera
|
|
||||||
|
|
||||||
; FIXME: actually move them
|
|
||||||
move_bot:
|
|
||||||
move_crawler:
|
|
||||||
lda FRAMEL
|
|
||||||
and #$f
|
|
||||||
bne done_move_enemy
|
|
||||||
|
|
||||||
lda enemy_data+ENEMY_DATA_TYPE,Y
|
|
||||||
eor #$2
|
|
||||||
sta enemy_data+ENEMY_DATA_TYPE,Y
|
|
||||||
jmp done_move_enemy
|
|
||||||
|
|
||||||
aim_camera:
|
|
||||||
lda KEEN_X
|
|
||||||
lsr
|
|
||||||
clc
|
clc
|
||||||
adc TILEMAP_X
|
adc #1
|
||||||
|
sta enemy_data+ENEMY_DATA_X,Y
|
||||||
|
|
||||||
cmp enemy_data+ENEMY_DATA_TILEX,Y
|
cmp #36
|
||||||
bcc aim_camera_left
|
bcc move_enemy_good
|
||||||
|
|
||||||
aim_camera_right:
|
|
||||||
lda #2
|
|
||||||
sta enemy_data+ENEMY_DATA_TYPE,Y
|
|
||||||
jmp done_move_enemy
|
|
||||||
aim_camera_left:
|
|
||||||
lda #0
|
lda #0
|
||||||
sta enemy_data+ENEMY_DATA_TYPE,Y
|
sta enemy_data+ENEMY_DATA_OUT,Y
|
||||||
|
|
||||||
|
|
||||||
|
move_enemy_good:
|
||||||
|
|
||||||
done_move_enemy:
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
@ -123,81 +104,94 @@ draw_enemies_loop:
|
||||||
|
|
||||||
; check if on screen
|
; check if on screen
|
||||||
|
|
||||||
lda TILEMAP_X
|
; lda TILEMAP_X
|
||||||
cmp enemy_data+ENEMY_DATA_TILEX,Y
|
; cmp enemy_data+ENEMY_DATA_TILEX,Y
|
||||||
bcs done_draw_enemy
|
; bcs done_draw_enemy
|
||||||
|
|
||||||
clc
|
; clc
|
||||||
adc #14
|
; adc #14
|
||||||
cmp enemy_data+ENEMY_DATA_TILEX,Y
|
; cmp enemy_data+ENEMY_DATA_TILEX,Y
|
||||||
bcc done_draw_enemy
|
; bcc done_draw_enemy
|
||||||
|
|
||||||
lda TILEMAP_Y
|
; lda TILEMAP_Y
|
||||||
cmp enemy_data+ENEMY_DATA_TILEY,Y
|
; cmp enemy_data+ENEMY_DATA_TILEY,Y
|
||||||
bcs done_draw_enemy
|
; bcs done_draw_enemy
|
||||||
|
|
||||||
clc
|
; clc
|
||||||
adc #10
|
; adc #10
|
||||||
cmp enemy_data+ENEMY_DATA_TILEY,Y
|
; cmp enemy_data+ENEMY_DATA_TILEY,Y
|
||||||
bcc done_draw_enemy
|
; bcc done_draw_enemy
|
||||||
|
|
||||||
; set X and Y value
|
; set X and Y value
|
||||||
; convert tile values to X,Y
|
; convert tile values to X,Y
|
||||||
; X = (ENEMY_TILE_X-TILEX)*2 + 6
|
; X = (ENEMY_TILE_X-TILEX)*2 + 6
|
||||||
lda enemy_data+ENEMY_DATA_TILEX,Y
|
; lda enemy_data+ENEMY_DATA_TILEX,Y
|
||||||
sec
|
; sec
|
||||||
sbc TILEMAP_X
|
; sbc TILEMAP_X
|
||||||
asl
|
; asl
|
||||||
clc
|
; clc
|
||||||
adc #4
|
; adc #4
|
||||||
sta XPOS
|
; sta XPOS
|
||||||
|
|
||||||
; Y = (ENEMY_TILE_Y-TILEY)*4
|
; Y = (ENEMY_TILE_Y-TILEY)*4
|
||||||
lda enemy_data+ENEMY_DATA_TILEY,Y
|
; lda enemy_data+ENEMY_DATA_TILEY,Y
|
||||||
sec
|
; sec
|
||||||
sbc TILEMAP_Y
|
; sbc TILEMAP_Y
|
||||||
asl
|
; asl
|
||||||
asl
|
; asl
|
||||||
sta YPOS
|
; sta YPOS
|
||||||
|
|
||||||
; see if exploding
|
; see if exploding
|
||||||
lda enemy_data+ENEMY_DATA_EXPLODING,Y
|
; lda enemy_data+ENEMY_DATA_EXPLODING,Y
|
||||||
beq draw_proper_enemy
|
; beq draw_proper_enemy
|
||||||
draw_exploding_enemy:
|
;draw_exploding_enemy:
|
||||||
asl
|
; asl
|
||||||
tax
|
; tax
|
||||||
lda enemy_explosion_sprites,X
|
; lda enemy_explosion_sprites,X
|
||||||
sta INL
|
; sta INL
|
||||||
lda enemy_explosion_sprites+1,X
|
; lda enemy_explosion_sprites+1,X
|
||||||
sta INH
|
; sta INH
|
||||||
|
|
||||||
lda FRAMEL
|
; lda FRAMEL
|
||||||
and #$3
|
; and #$3
|
||||||
bne done_exploding
|
; bne done_exploding
|
||||||
|
|
||||||
; move to next frame
|
; move to next frame
|
||||||
lda enemy_data+ENEMY_DATA_EXPLODING,Y
|
; lda enemy_data+ENEMY_DATA_EXPLODING,Y
|
||||||
clc
|
; clc
|
||||||
adc #1
|
; adc #1
|
||||||
sta enemy_data+ENEMY_DATA_EXPLODING,Y
|
; sta enemy_data+ENEMY_DATA_EXPLODING,Y
|
||||||
|
|
||||||
cmp #4
|
; cmp #4
|
||||||
bne done_exploding
|
; bne done_exploding
|
||||||
lda #0
|
; lda #0
|
||||||
sta enemy_data+ENEMY_DATA_OUT,Y
|
; sta enemy_data+ENEMY_DATA_OUT,Y
|
||||||
|
|
||||||
done_exploding:
|
;done_exploding:
|
||||||
jmp draw_enemy
|
; jmp draw_enemy
|
||||||
|
|
||||||
; otherwise draw proper sprite
|
; otherwise draw proper sprite
|
||||||
draw_proper_enemy:
|
draw_proper_enemy:
|
||||||
lda enemy_data+ENEMY_DATA_TYPE,Y
|
; lda enemy_data+ENEMY_DATA_TYPE,Y
|
||||||
tax
|
; tax
|
||||||
lda enemy_sprites,X
|
; lda enemy_sprites,X
|
||||||
|
; sta INL
|
||||||
|
; lda enemy_sprites+1,X
|
||||||
|
; sta INH
|
||||||
|
|
||||||
|
lda #<yorp_sprite_walking_right
|
||||||
sta INL
|
sta INL
|
||||||
lda enemy_sprites+1,X
|
|
||||||
|
lda #>yorp_sprite_walking_right
|
||||||
sta INH
|
sta INH
|
||||||
|
|
||||||
|
lda enemy_data+ENEMY_DATA_X,Y
|
||||||
|
sta XPOS
|
||||||
|
lda enemy_data+ENEMY_DATA_Y,Y
|
||||||
|
sta YPOS
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
draw_enemy:
|
draw_enemy:
|
||||||
tya
|
tya
|
||||||
pha
|
pha
|
||||||
|
@ -207,6 +201,8 @@ draw_enemy:
|
||||||
pla
|
pla
|
||||||
tay
|
tay
|
||||||
|
|
||||||
|
; also move enemy
|
||||||
|
|
||||||
jsr move_enemy
|
jsr move_enemy
|
||||||
|
|
||||||
done_draw_enemy:
|
done_draw_enemy:
|
||||||
|
@ -222,6 +218,7 @@ done_draw_enemy:
|
||||||
exit_draw_enemy:
|
exit_draw_enemy:
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
.if 0
|
||||||
enemy_sprites:
|
enemy_sprites:
|
||||||
.word enemy_camera_sprite1
|
.word enemy_camera_sprite1
|
||||||
.word enemy_camera_sprite2
|
.word enemy_camera_sprite2
|
||||||
|
@ -229,39 +226,7 @@ enemy_sprites:
|
||||||
.word enemy_crawler_sprite2
|
.word enemy_crawler_sprite2
|
||||||
.word enemy_bot_sprite1
|
.word enemy_bot_sprite1
|
||||||
.word enemy_bot_sprite2
|
.word enemy_bot_sprite2
|
||||||
|
.endif
|
||||||
|
|
||||||
|
|
||||||
enemy_bot_sprite1:
|
|
||||||
.byte 2,2
|
|
||||||
.byte $Ae,$e3
|
|
||||||
.byte $6e,$0e
|
|
||||||
|
|
||||||
enemy_bot_sprite2:
|
|
||||||
.byte 2,2
|
|
||||||
.byte $e3,$Ae
|
|
||||||
.byte $0e,$6e
|
|
||||||
|
|
||||||
enemy_crawler_sprite1:
|
|
||||||
.byte 2,2
|
|
||||||
.byte $f5,$cA
|
|
||||||
.byte $f5,$Ac
|
|
||||||
|
|
||||||
enemy_crawler_sprite2:
|
|
||||||
.byte 2,2
|
|
||||||
.byte $5f,$cA
|
|
||||||
.byte $5f,$Ac
|
|
||||||
|
|
||||||
|
|
||||||
enemy_camera_sprite1:
|
|
||||||
.byte 2,2
|
|
||||||
.byte $AA,$76
|
|
||||||
.byte $f7,$A5
|
|
||||||
|
|
||||||
enemy_camera_sprite2:
|
|
||||||
.byte 2,2
|
|
||||||
.byte $76,$AA
|
|
||||||
.byte $A5,$f7
|
|
||||||
|
|
||||||
enemy_explosion_sprites:
|
enemy_explosion_sprites:
|
||||||
.word enemy_explosion_sprite1
|
.word enemy_explosion_sprite1
|
||||||
|
@ -284,9 +249,11 @@ enemy_explosion_sprite3:
|
||||||
.byte $7A,$5A
|
.byte $7A,$5A
|
||||||
.byte $A5,$A7
|
.byte $A5,$A7
|
||||||
|
|
||||||
ENEMY_CAMERA = 0
|
;ENEMY_CAMERA = 0
|
||||||
ENEMY_CRAWLER = 4
|
;ENEMY_CRAWLER = 4
|
||||||
ENEMY_BOT = 8
|
;ENEMY_BOT = 8
|
||||||
|
|
||||||
|
ENEMY_YORP = 0
|
||||||
|
|
||||||
ENEMY_DATA_OUT = 0
|
ENEMY_DATA_OUT = 0
|
||||||
ENEMY_DATA_EXPLODING = 1
|
ENEMY_DATA_EXPLODING = 1
|
||||||
|
@ -304,36 +271,34 @@ enemy0:
|
||||||
; 156,92 (-80,-12) -> 76,80 -> (/4,/4) -> 19,20
|
; 156,92 (-80,-12) -> 76,80 -> (/4,/4) -> 19,20
|
||||||
.byte 1 ; out
|
.byte 1 ; out
|
||||||
.byte 0 ; exploding
|
.byte 0 ; exploding
|
||||||
.byte ENEMY_CAMERA ; type
|
.byte ENEMY_YORP ; type
|
||||||
.byte $ff ; direction
|
.byte $ff ; direction
|
||||||
.byte 19,20 ; tilex,tiley
|
.byte 19,20 ; tilex,tiley
|
||||||
.byte 0,0 ; x,y
|
.byte 10,10 ; x,y
|
||||||
|
|
||||||
enemy1:
|
enemy1:
|
||||||
; 272,92 (-80,-12) -> 192,80 -> (/4,/4) -> 48,20
|
; 272,92 (-80,-12) -> 192,80 -> (/4,/4) -> 48,20
|
||||||
.byte 1 ; out
|
.byte 0 ; out
|
||||||
.byte 0 ; exploding
|
.byte 0 ; exploding
|
||||||
.byte ENEMY_CAMERA ; type
|
.byte ENEMY_YORP ; type
|
||||||
.byte $ff ; direction
|
.byte $ff ; direction
|
||||||
.byte 48,20 ; tilex,tiley
|
.byte 48,20 ; tilex,tiley
|
||||||
.byte 0,0 ; x,y
|
.byte 0,0 ; x,y
|
||||||
|
|
||||||
enemy2:
|
enemy2:
|
||||||
; 156,112 (-80,-12) -> 76,100 -> (/4,/4) -> 19,25
|
; 156,112 (-80,-12) -> 76,100 -> (/4,/4) -> 19,25
|
||||||
.byte 1 ; out
|
.byte 0 ; out
|
||||||
.byte 0 ; exploding
|
.byte 0 ; exploding
|
||||||
.byte ENEMY_CRAWLER ; type
|
.byte ENEMY_YORP ; type
|
||||||
.byte $ff ; direction
|
.byte $ff ; direction
|
||||||
.byte 19,25 ; tilex,tiley
|
.byte 19,25 ; tilex,tiley
|
||||||
.byte 0,0 ; x,y
|
.byte 0,0 ; x,y
|
||||||
|
|
||||||
enemy3:
|
enemy3:
|
||||||
; 184,116 (-80,-12) -> 104,104 -> (/4,/4) -> 26,26
|
; 184,116 (-80,-12) -> 104,104 -> (/4,/4) -> 26,26
|
||||||
.byte 1 ; out
|
.byte 0 ; out
|
||||||
.byte 0 ; exploding
|
.byte 0 ; exploding
|
||||||
.byte ENEMY_BOT ; type
|
.byte ENEMY_YORP ; type
|
||||||
.byte $ff ; direction
|
.byte $ff ; direction
|
||||||
.byte 26,26 ; tilex,tiley
|
.byte 26,26 ; tilex,tiley
|
||||||
.byte 0,0 ; x,y
|
.byte 0,0 ; x,y
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -53,10 +53,6 @@ keen_start:
|
||||||
; ora #INV_RED_KEY
|
; ora #INV_RED_KEY
|
||||||
; sta INVENTORY
|
; sta INVENTORY
|
||||||
|
|
||||||
; lda #$10
|
|
||||||
; sta SCORE0
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
lda #4
|
lda #4
|
||||||
sta DRAW_PAGE
|
sta DRAW_PAGE
|
||||||
|
|
|
@ -25,6 +25,9 @@ keen_sprites.inc: keen_sprites.png
|
||||||
$(PNG2SPRITES) keen_sprites.png keen_sprite_falling_left 6 32 4 8 >> keen_sprites.inc
|
$(PNG2SPRITES) keen_sprites.png keen_sprite_falling_left 6 32 4 8 >> keen_sprites.inc
|
||||||
$(PNG2SPRITES) keen_sprites.png keen_sprite_shooting_right 11 2 4 8 >> keen_sprites.inc
|
$(PNG2SPRITES) keen_sprites.png keen_sprite_shooting_right 11 2 4 8 >> keen_sprites.inc
|
||||||
$(PNG2SPRITES) keen_sprites.png keen_sprite_shooting_left 16 2 4 8 >> keen_sprites.inc
|
$(PNG2SPRITES) keen_sprites.png keen_sprite_shooting_left 16 2 4 8 >> keen_sprites.inc
|
||||||
|
$(PNG2SPRITES) keen_sprites.png yorp_sprite_walking_left 16 22 4 8 >> keen_sprites.inc
|
||||||
|
$(PNG2SPRITES) keen_sprites.png yorp_sprite_walking_right 11 22 4 8 >> keen_sprites.inc
|
||||||
|
$(PNG2SPRITES) keen_sprites.png yorp_sprite_standing 11 32 4 8 >> keen_sprites.inc
|
||||||
|
|
||||||
|
|
||||||
####
|
####
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 4.7 KiB |
Loading…
Reference in New Issue