duke: more separation of levels
This commit is contained in:
parent
22c7937a21
commit
83895b6d6d
|
@ -27,7 +27,7 @@ HELLO: hello.bas
|
|||
LOADER: loader.o
|
||||
ld65 -o LOADER loader.o -C ../linker_scripts/apple2_1000.inc
|
||||
|
||||
loader.o: loader.s init_vars.s
|
||||
loader.o: loader.s
|
||||
ca65 -o loader.o loader.s -l loader.lst
|
||||
|
||||
####
|
||||
|
@ -35,7 +35,7 @@ loader.o: loader.s init_vars.s
|
|||
DUKE_TITLE: duke_title.o
|
||||
ld65 -o DUKE_TITLE duke_title.o -C ../linker_scripts/apple2_4000.inc
|
||||
|
||||
duke_title.o: duke_title.s zp.inc hardware.inc
|
||||
duke_title.o: duke_title.s zp.inc hardware.inc init_vars.s
|
||||
ca65 -o duke_title.o duke_title.s -l duke_title.lst
|
||||
|
||||
####
|
||||
|
@ -45,8 +45,8 @@ DUKE_LEVEL1: duke_level1.o
|
|||
|
||||
duke_level1.o: duke_level1.s zp.inc hardware.inc \
|
||||
print_help.s gr_fast_clear.s quit_yn.s text_drawbox.s level_end.s \
|
||||
enemies.s actions.s \
|
||||
graphics/duke_graphics.inc \
|
||||
enemies_level1.s actions_level1.s \
|
||||
graphics/duke_graphics.inc duke_sprites.inc \
|
||||
maps/level1_map.lzsa \
|
||||
status_bar.s draw_duke.s move_duke.s gr_putsprite_crop.s \
|
||||
draw_tilemap.s \
|
||||
|
@ -61,8 +61,8 @@ DUKE_LEVEL2: duke_level2.o
|
|||
|
||||
duke_level2.o: duke_level2.s zp.inc hardware.inc \
|
||||
print_help.s gr_fast_clear.s quit_yn.s text_drawbox.s level_end.s \
|
||||
enemies.s actions.s \
|
||||
graphics/duke_graphics.inc \
|
||||
enemies_level2.s actions_level2.s \
|
||||
graphics/duke_graphics.inc duke_sprites.inc \
|
||||
maps/level2_map.lzsa \
|
||||
status_bar.s draw_duke.s move_duke.s gr_putsprite_crop.s \
|
||||
draw_tilemap.s \
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
before release:
|
||||
~~~~~~~~~~~~~~~
|
||||
+ laser collision detection
|
||||
+ enemies can be killed
|
||||
+ pick up red key
|
||||
+ fix collision when walking into things
|
||||
|
||||
|
|
|
@ -0,0 +1,204 @@
|
|||
|
||||
; someone pressed UP
|
||||
|
||||
up_action:
|
||||
|
||||
|
||||
; set X and Y value
|
||||
; convert tile values to X,Y
|
||||
; X=((DUKE_X/2)-1)+TILEX
|
||||
|
||||
lda DUKE_X
|
||||
lsr
|
||||
sec
|
||||
sbc #1
|
||||
clc
|
||||
adc TILEMAP_X
|
||||
sta XPOS
|
||||
|
||||
; Y = (DUKEY/4)+TILEY
|
||||
lda DUKE_Y
|
||||
lsr
|
||||
lsr
|
||||
clc
|
||||
adc TILEMAP_Y
|
||||
sta YPOS
|
||||
|
||||
; $39,$22 = 57,34
|
||||
|
||||
; check if it's a key slot
|
||||
check_red_keyhole:
|
||||
|
||||
|
||||
; key slot is 280,148
|
||||
; 280,148 (-80,-12) -> 200,136 -> (/4,/4) -> 50,34
|
||||
|
||||
lda XPOS
|
||||
cmp #50
|
||||
beq redkey_x
|
||||
cmp #51
|
||||
bne check_if_exit
|
||||
|
||||
redkey_x:
|
||||
|
||||
lda YPOS
|
||||
cmp #34
|
||||
bne check_if_exit
|
||||
|
||||
; check that we have the key
|
||||
lda INVENTORY
|
||||
and #INV_RED_KEY
|
||||
bne open_the_wall
|
||||
|
||||
no_red_key:
|
||||
jsr buzzer_noise
|
||||
jmp done_up_action
|
||||
|
||||
; open the red wall
|
||||
; there has to be a more efficient way of doing this
|
||||
open_the_wall:
|
||||
; reset smc
|
||||
lda #>BIG_TILEMAP
|
||||
sta rwr_smc1+2
|
||||
sta rwr_smc2+2
|
||||
|
||||
remove_red_wall_outer:
|
||||
ldx #0
|
||||
remove_red_wall_loop:
|
||||
rwr_smc1:
|
||||
lda BIG_TILEMAP,X
|
||||
cmp #49 ; red key tile
|
||||
bne not_red_tile
|
||||
lda #2 ; lblue bg tile
|
||||
rwr_smc2:
|
||||
sta BIG_TILEMAP,X
|
||||
not_red_tile:
|
||||
inx
|
||||
bne remove_red_wall_loop
|
||||
|
||||
inc rwr_smc1+2
|
||||
inc rwr_smc2+2
|
||||
|
||||
lda rwr_smc1+2
|
||||
cmp #(>BIG_TILEMAP)+40
|
||||
bne remove_red_wall_outer
|
||||
|
||||
; refresh local tilemap
|
||||
|
||||
jsr copy_tilemap_subset
|
||||
|
||||
jsr rumble_noise
|
||||
|
||||
jmp done_up_action
|
||||
|
||||
|
||||
; check if it's the exit
|
||||
check_if_exit:
|
||||
|
||||
; exit is 296,148
|
||||
; 296,148 (-80,-12) -> 216,136 -> (/4,/4) -> 54,34
|
||||
|
||||
lda XPOS
|
||||
cmp #54
|
||||
beq exit_x
|
||||
|
||||
cmp #55
|
||||
bne done_up_action
|
||||
|
||||
exit_x:
|
||||
lda YPOS
|
||||
cmp #34
|
||||
bne done_up_action
|
||||
|
||||
; check that we have the key
|
||||
lda INVENTORY
|
||||
and #INV_RED_KEY
|
||||
beq done_up_action
|
||||
|
||||
lda #1
|
||||
sta DOOR_ACTIVATED
|
||||
|
||||
sta FRAMEL ; restart timer
|
||||
|
||||
done_up_action:
|
||||
|
||||
rts
|
||||
|
||||
|
||||
;==========================
|
||||
; open the door, end level
|
||||
;==========================
|
||||
check_open_door:
|
||||
lda DOOR_ACTIVATED
|
||||
beq done_open_door
|
||||
|
||||
asl
|
||||
tay
|
||||
lda door_opening,Y
|
||||
sta INL
|
||||
lda door_opening+1,Y
|
||||
sta INH
|
||||
|
||||
; need to find actual door location
|
||||
; it's at 54,34
|
||||
; Y is going to be at 20 unless something weird is going on
|
||||
; X is going to be ((54-TILE_X)+2)*2
|
||||
|
||||
lda #56
|
||||
sec
|
||||
sbc TILEMAP_X
|
||||
asl
|
||||
sta XPOS
|
||||
|
||||
lda #20
|
||||
sta YPOS
|
||||
|
||||
jsr put_sprite_crop
|
||||
|
||||
lda FRAMEL
|
||||
and #$7
|
||||
bne done_open_door
|
||||
|
||||
; increment
|
||||
|
||||
inc DOOR_ACTIVATED
|
||||
lda DOOR_ACTIVATED
|
||||
cmp #6
|
||||
bne done_open_door
|
||||
|
||||
jsr level_end
|
||||
|
||||
done_open_door:
|
||||
rts
|
||||
|
||||
|
||||
|
||||
door_opening:
|
||||
.word door_sprite0
|
||||
.word door_sprite0
|
||||
.word door_sprite1
|
||||
.word door_sprite2
|
||||
.word door_sprite1
|
||||
.word door_sprite0
|
||||
|
||||
door_sprite0:
|
||||
.byte 4,4
|
||||
.byte $15,$55,$55,$f5
|
||||
.byte $55,$f5,$5f,$55
|
||||
.byte $25,$25,$25,$25
|
||||
.byte $55,$55,$55,$55
|
||||
|
||||
door_sprite1:
|
||||
.byte 4,4
|
||||
.byte $51,$f5,$f5,$5f
|
||||
.byte $55,$05,$05,$50
|
||||
.byte $05,$50,$50,$55
|
||||
.byte $52,$55,$55,$52
|
||||
|
||||
door_sprite2:
|
||||
.byte 4,4
|
||||
.byte $f5,$05,$05,$f0
|
||||
.byte $55,$00,$00,$55
|
||||
.byte $55,$00,$00,$55
|
||||
.byte $05,$50,$50,$25
|
||||
|
|
@ -117,73 +117,4 @@ actually_draw_duke:
|
|||
|
||||
rts
|
||||
|
||||
duke_sprite_stand_right:
|
||||
.byte 4,4
|
||||
.byte $AA,$dd,$bd,$AA
|
||||
.byte $AA,$3d,$Ab,$AA
|
||||
.byte $AA,$6b,$b7,$A7
|
||||
.byte $AA,$56,$56,$AA
|
||||
|
||||
duke_sprite_stand_left:
|
||||
.byte 4,4
|
||||
.byte $AA,$bd,$dd,$AA
|
||||
.byte $AA,$Ab,$3d,$AA
|
||||
.byte $A7,$b7,$6b,$AA
|
||||
.byte $AA,$56,$56,$AA
|
||||
|
||||
duke_sprite_walking_right:
|
||||
.byte 4,4
|
||||
.byte $AA,$dd,$bd,$AA
|
||||
.byte $AA,$3d,$Ab,$AA
|
||||
.byte $AA,$6b,$b7,$A7
|
||||
.byte $56,$A6,$A6,$5A
|
||||
|
||||
duke_sprite_walking_left:
|
||||
.byte 4,4
|
||||
.byte $AA,$bd,$dd,$AA
|
||||
.byte $AA,$Ab,$3d,$AA
|
||||
.byte $A7,$b7,$6b,$AA
|
||||
.byte $5A,$A6,$A6,$56
|
||||
|
||||
duke_sprite_jumping_right:
|
||||
.byte 4,4
|
||||
.byte $AA,$dd,$bd,$AA
|
||||
.byte $AA,$3d,$Ab,$AA
|
||||
.byte $AA,$6b,$b7,$A7
|
||||
.byte $55,$A6,$AA,$AA
|
||||
|
||||
duke_sprite_jumping_left:
|
||||
.byte 4,4
|
||||
.byte $AA,$bd,$dd,$AA
|
||||
.byte $AA,$Ab,$3d,$AA
|
||||
.byte $A7,$b7,$6b,$AA
|
||||
.byte $AA,$AA,$A6,$55
|
||||
|
||||
duke_sprite_falling_right:
|
||||
.byte 4,4
|
||||
.byte $AA,$dd,$bd,$AA
|
||||
.byte $AA,$3d,$Ab,$AA
|
||||
.byte $AA,$6b,$67,$A7
|
||||
.byte $5A,$A6,$56,$AA
|
||||
|
||||
duke_sprite_falling_left:
|
||||
.byte 4,4
|
||||
.byte $AA,$bd,$dd,$AA
|
||||
.byte $AA,$Ab,$3d,$AA
|
||||
.byte $A7,$67,$6b,$AA
|
||||
.byte $AA,$56,$A6,$5A
|
||||
|
||||
duke_sprite_shooting_right:
|
||||
.byte 4,4
|
||||
.byte $AA,$dd,$bd,$AA
|
||||
.byte $AA,$3d,$Ab,$AA
|
||||
.byte $AA,$b7,$A7,$AA
|
||||
.byte $AA,$56,$56,$AA
|
||||
|
||||
duke_sprite_shooting_left:
|
||||
.byte 4,4
|
||||
.byte $AA,$bd,$dd,$AA
|
||||
.byte $AA,$Ab,$3d,$AA
|
||||
.byte $AA,$A7,$b7,$AA
|
||||
.byte $AA,$56,$56,$AA
|
||||
|
||||
|
|
|
@ -220,11 +220,12 @@ done_with_duke:
|
|||
.include "level_end.s"
|
||||
|
||||
.include "draw_duke.s"
|
||||
.include "duke_sprites.inc"
|
||||
.include "move_duke.s"
|
||||
.include "handle_laser.s"
|
||||
.include "draw_tilemap.s"
|
||||
.include "enemies.s"
|
||||
.include "actions.s"
|
||||
.include "enemies_level1.s"
|
||||
.include "actions_level1.s"
|
||||
|
||||
.include "sound_effects.s"
|
||||
.include "speaker_tone.s"
|
||||
|
|
|
@ -73,7 +73,7 @@ duke_start:
|
|||
jsr decompress_lzsa2_fast
|
||||
|
||||
;====================================
|
||||
; load level1 tilemap
|
||||
; load level2 tilemap
|
||||
;====================================
|
||||
|
||||
lda #<level2_data_lzsa
|
||||
|
@ -88,7 +88,7 @@ duke_start:
|
|||
;====================================
|
||||
lda #10
|
||||
sta TILEMAP_X
|
||||
lda #18
|
||||
lda #8
|
||||
sta TILEMAP_Y
|
||||
|
||||
jsr copy_tilemap_subset
|
||||
|
@ -201,11 +201,12 @@ done_with_duke:
|
|||
.include "level_end.s"
|
||||
|
||||
.include "draw_duke.s"
|
||||
.include "duke_sprites.inc"
|
||||
.include "move_duke.s"
|
||||
.include "handle_laser.s"
|
||||
.include "draw_tilemap.s"
|
||||
.include "enemies.s"
|
||||
.include "actions.s"
|
||||
.include "enemies_level2.s"
|
||||
.include "actions_level2.s"
|
||||
|
||||
.include "sound_effects.s"
|
||||
.include "speaker_tone.s"
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
duke_sprite_stand_right:
|
||||
.byte 4,4
|
||||
.byte $AA,$dd,$bd,$AA
|
||||
.byte $AA,$3d,$Ab,$AA
|
||||
.byte $AA,$6b,$b7,$A7
|
||||
.byte $AA,$56,$56,$AA
|
||||
|
||||
duke_sprite_stand_left:
|
||||
.byte 4,4
|
||||
.byte $AA,$bd,$dd,$AA
|
||||
.byte $AA,$Ab,$3d,$AA
|
||||
.byte $A7,$b7,$6b,$AA
|
||||
.byte $AA,$56,$56,$AA
|
||||
|
||||
duke_sprite_walking_right:
|
||||
.byte 4,4
|
||||
.byte $AA,$dd,$bd,$AA
|
||||
.byte $AA,$3d,$Ab,$AA
|
||||
.byte $AA,$6b,$b7,$A7
|
||||
.byte $56,$A6,$A6,$5A
|
||||
|
||||
duke_sprite_walking_left:
|
||||
.byte 4,4
|
||||
.byte $AA,$bd,$dd,$AA
|
||||
.byte $AA,$Ab,$3d,$AA
|
||||
.byte $A7,$b7,$6b,$AA
|
||||
.byte $5A,$A6,$A6,$56
|
||||
|
||||
duke_sprite_jumping_right:
|
||||
.byte 4,4
|
||||
.byte $AA,$dd,$bd,$AA
|
||||
.byte $AA,$3d,$Ab,$AA
|
||||
.byte $AA,$6b,$b7,$A7
|
||||
.byte $55,$A6,$AA,$AA
|
||||
|
||||
duke_sprite_jumping_left:
|
||||
.byte 4,4
|
||||
.byte $AA,$bd,$dd,$AA
|
||||
.byte $AA,$Ab,$3d,$AA
|
||||
.byte $A7,$b7,$6b,$AA
|
||||
.byte $AA,$AA,$A6,$55
|
||||
|
||||
duke_sprite_falling_right:
|
||||
.byte 4,4
|
||||
.byte $AA,$dd,$bd,$AA
|
||||
.byte $AA,$3d,$Ab,$AA
|
||||
.byte $AA,$6b,$67,$A7
|
||||
.byte $5A,$A6,$56,$AA
|
||||
|
||||
duke_sprite_falling_left:
|
||||
.byte 4,4
|
||||
.byte $AA,$bd,$dd,$AA
|
||||
.byte $AA,$Ab,$3d,$AA
|
||||
.byte $A7,$67,$6b,$AA
|
||||
.byte $AA,$56,$A6,$5A
|
||||
|
||||
duke_sprite_shooting_right:
|
||||
.byte 4,4
|
||||
.byte $AA,$dd,$bd,$AA
|
||||
.byte $AA,$3d,$Ab,$AA
|
||||
.byte $AA,$b7,$A7,$AA
|
||||
.byte $AA,$56,$56,$AA
|
||||
|
||||
duke_sprite_shooting_left:
|
||||
.byte 4,4
|
||||
.byte $AA,$bd,$dd,$AA
|
||||
.byte $AA,$Ab,$3d,$AA
|
||||
.byte $AA,$A7,$b7,$AA
|
||||
.byte $AA,$56,$56,$AA
|
||||
|
|
@ -179,12 +179,14 @@ done_intro:
|
|||
;============================
|
||||
; init vars
|
||||
|
||||
; jsr init_state
|
||||
jsr init_vars
|
||||
|
||||
|
||||
|
||||
;============================
|
||||
; set up initial location
|
||||
|
||||
lda #LOAD_DUKE1
|
||||
lda #LOAD_DUKE2
|
||||
sta WHICH_LOAD ; start at first level
|
||||
|
||||
rts
|
||||
|
@ -204,7 +206,7 @@ done_intro:
|
|||
.include "gr_fast_clear.s"
|
||||
.include "text_print.s"
|
||||
|
||||
; .include "init_state.s"
|
||||
.include "init_vars.s"
|
||||
; .include "graphics_title/title_graphics.inc"
|
||||
; .include "lc_detect.s"
|
||||
|
||||
|
|
|
@ -0,0 +1,339 @@
|
|||
NUM_ENEMIES = 4
|
||||
|
||||
;=======================
|
||||
; laser enemies
|
||||
;=======================
|
||||
; see if laser hits any enemies
|
||||
laser_enemies:
|
||||
|
||||
ldy #0
|
||||
laser_enemies_loop:
|
||||
|
||||
; see if out
|
||||
|
||||
lda enemy_data+ENEMY_DATA_OUT,Y
|
||||
beq done_laser_enemy
|
||||
|
||||
; get local tilemap co-ord
|
||||
sec
|
||||
lda enemy_data+ENEMY_DATA_TILEX,Y
|
||||
sbc TILEMAP_X
|
||||
|
||||
sta TILE_TEMP
|
||||
|
||||
sec
|
||||
lda enemy_data+ENEMY_DATA_TILEY,Y
|
||||
sbc TILEMAP_Y
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
clc
|
||||
adc TILE_TEMP
|
||||
|
||||
cmp LASER_TILE
|
||||
bne done_laser_enemy
|
||||
|
||||
; hit something
|
||||
hit_something:
|
||||
lda #0
|
||||
sta LASER_OUT
|
||||
sta FRAMEL
|
||||
; sta enemy_data+ENEMY_DATA_OUT,Y
|
||||
lda #1
|
||||
sta enemy_data+ENEMY_DATA_EXPLODING,Y
|
||||
|
||||
jsr enemy_noise
|
||||
|
||||
jsr inc_score_by_10
|
||||
|
||||
jmp exit_laser_enemy
|
||||
|
||||
done_laser_enemy:
|
||||
|
||||
tya
|
||||
clc
|
||||
adc #8
|
||||
tay
|
||||
cpy #(NUM_ENEMIES*8)
|
||||
bne laser_enemies_loop
|
||||
exit_laser_enemy:
|
||||
rts
|
||||
|
||||
|
||||
|
||||
;=======================
|
||||
; move enemy
|
||||
;=======================
|
||||
; which one is in Y
|
||||
move_enemy:
|
||||
|
||||
lda enemy_data+ENEMY_DATA_TYPE,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 DUKE_X
|
||||
lsr
|
||||
clc
|
||||
adc TILEMAP_X
|
||||
|
||||
cmp enemy_data+ENEMY_DATA_TILEX,Y
|
||||
bcc aim_camera_left
|
||||
|
||||
aim_camera_right:
|
||||
lda #2
|
||||
sta enemy_data+ENEMY_DATA_TYPE,Y
|
||||
jmp done_move_enemy
|
||||
aim_camera_left:
|
||||
lda #0
|
||||
sta enemy_data+ENEMY_DATA_TYPE,Y
|
||||
|
||||
done_move_enemy:
|
||||
rts
|
||||
|
||||
|
||||
|
||||
;=======================
|
||||
; draw and move enemies
|
||||
;=======================
|
||||
draw_enemies:
|
||||
|
||||
ldy #0
|
||||
draw_enemies_loop:
|
||||
|
||||
; see if out
|
||||
|
||||
lda enemy_data+ENEMY_DATA_OUT,Y
|
||||
beq done_draw_enemy
|
||||
|
||||
; check if on screen
|
||||
|
||||
lda TILEMAP_X
|
||||
cmp enemy_data+ENEMY_DATA_TILEX,Y
|
||||
bcs done_draw_enemy
|
||||
|
||||
clc
|
||||
adc #14
|
||||
cmp enemy_data+ENEMY_DATA_TILEX,Y
|
||||
bcc done_draw_enemy
|
||||
|
||||
lda TILEMAP_Y
|
||||
cmp enemy_data+ENEMY_DATA_TILEY,Y
|
||||
bcs done_draw_enemy
|
||||
|
||||
clc
|
||||
adc #10
|
||||
cmp enemy_data+ENEMY_DATA_TILEY,Y
|
||||
bcc done_draw_enemy
|
||||
|
||||
; set X and Y value
|
||||
; convert tile values to X,Y
|
||||
; X = (ENEMY_TILE_X-TILEX)*2 + 6
|
||||
lda enemy_data+ENEMY_DATA_TILEX,Y
|
||||
sec
|
||||
sbc TILEMAP_X
|
||||
asl
|
||||
clc
|
||||
adc #4
|
||||
sta XPOS
|
||||
|
||||
; Y = (ENEMY_TILE_Y-TILEY)*4
|
||||
lda enemy_data+ENEMY_DATA_TILEY,Y
|
||||
sec
|
||||
sbc TILEMAP_Y
|
||||
asl
|
||||
asl
|
||||
sta YPOS
|
||||
|
||||
; see if exploding
|
||||
lda enemy_data+ENEMY_DATA_EXPLODING,Y
|
||||
beq draw_proper_enemy
|
||||
draw_exploding_enemy:
|
||||
asl
|
||||
tax
|
||||
lda enemy_explosion_sprites,X
|
||||
sta INL
|
||||
lda enemy_explosion_sprites+1,X
|
||||
sta INH
|
||||
|
||||
lda FRAMEL
|
||||
and #$3
|
||||
bne done_exploding
|
||||
|
||||
; move to next frame
|
||||
lda enemy_data+ENEMY_DATA_EXPLODING,Y
|
||||
clc
|
||||
adc #1
|
||||
sta enemy_data+ENEMY_DATA_EXPLODING,Y
|
||||
|
||||
cmp #4
|
||||
bne done_exploding
|
||||
lda #0
|
||||
sta enemy_data+ENEMY_DATA_OUT,Y
|
||||
|
||||
done_exploding:
|
||||
jmp draw_enemy
|
||||
|
||||
; otherwise draw proper sprite
|
||||
draw_proper_enemy:
|
||||
lda enemy_data+ENEMY_DATA_TYPE,Y
|
||||
tax
|
||||
lda enemy_sprites,X
|
||||
sta INL
|
||||
lda enemy_sprites+1,X
|
||||
sta INH
|
||||
|
||||
draw_enemy:
|
||||
tya
|
||||
pha
|
||||
|
||||
jsr put_sprite_crop
|
||||
|
||||
pla
|
||||
tay
|
||||
|
||||
jsr move_enemy
|
||||
|
||||
done_draw_enemy:
|
||||
|
||||
tya
|
||||
clc
|
||||
adc #8
|
||||
tay
|
||||
cpy #(NUM_ENEMIES*8)
|
||||
beq exit_draw_enemy
|
||||
jmp draw_enemies_loop
|
||||
|
||||
exit_draw_enemy:
|
||||
rts
|
||||
|
||||
enemy_sprites:
|
||||
.word enemy_camera_sprite1
|
||||
.word enemy_camera_sprite2
|
||||
.word enemy_crawler_sprite1
|
||||
.word enemy_crawler_sprite2
|
||||
.word enemy_bot_sprite1
|
||||
.word enemy_bot_sprite2
|
||||
|
||||
|
||||
|
||||
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:
|
||||
.word enemy_explosion_sprite1
|
||||
.word enemy_explosion_sprite1
|
||||
.word enemy_explosion_sprite2
|
||||
.word enemy_explosion_sprite3
|
||||
|
||||
enemy_explosion_sprite1:
|
||||
.byte 2,2
|
||||
.byte $d9,$d9
|
||||
.byte $9d,$9d
|
||||
|
||||
enemy_explosion_sprite2:
|
||||
.byte 2,2
|
||||
.byte $9A,$9A
|
||||
.byte $A9,$A9
|
||||
|
||||
enemy_explosion_sprite3:
|
||||
.byte 2,2
|
||||
.byte $7A,$5A
|
||||
.byte $A5,$A7
|
||||
|
||||
ENEMY_CAMERA = 0
|
||||
ENEMY_CRAWLER = 4
|
||||
ENEMY_BOT = 8
|
||||
|
||||
ENEMY_DATA_OUT = 0
|
||||
ENEMY_DATA_EXPLODING = 1
|
||||
ENEMY_DATA_TYPE = 2
|
||||
ENEMY_DATA_DIRECTION = 3
|
||||
ENEMY_DATA_TILEX = 4
|
||||
ENEMY_DATA_TILEY = 5
|
||||
ENEMY_DATA_X = 6
|
||||
ENEMY_DATA_Y = 7
|
||||
|
||||
|
||||
enemy_data:
|
||||
|
||||
enemy0:
|
||||
; 156,92 (-80,-12) -> 76,80 -> (/4,/4) -> 19,20
|
||||
.byte 1 ; out
|
||||
.byte 0 ; exploding
|
||||
.byte ENEMY_CAMERA ; type
|
||||
.byte $ff ; direction
|
||||
.byte 19,20 ; tilex,tiley
|
||||
.byte 0,0 ; x,y
|
||||
|
||||
enemy1:
|
||||
; 272,92 (-80,-12) -> 192,80 -> (/4,/4) -> 48,20
|
||||
.byte 1 ; out
|
||||
.byte 0 ; exploding
|
||||
.byte ENEMY_CAMERA ; type
|
||||
.byte $ff ; direction
|
||||
.byte 48,20 ; tilex,tiley
|
||||
.byte 0,0 ; x,y
|
||||
|
||||
enemy2:
|
||||
; 156,112 (-80,-12) -> 76,100 -> (/4,/4) -> 19,25
|
||||
.byte 1 ; out
|
||||
.byte 0 ; exploding
|
||||
.byte ENEMY_CRAWLER ; type
|
||||
.byte $ff ; direction
|
||||
.byte 19,25 ; tilex,tiley
|
||||
.byte 0,0 ; x,y
|
||||
|
||||
enemy3:
|
||||
; 184,116 (-80,-12) -> 104,104 -> (/4,/4) -> 26,26
|
||||
.byte 1 ; out
|
||||
.byte 0 ; exploding
|
||||
.byte ENEMY_BOT ; type
|
||||
.byte $ff ; direction
|
||||
.byte 26,26 ; tilex,tiley
|
||||
.byte 0,0 ; x,y
|
||||
|
||||
|
|
@ -54,8 +54,6 @@ loader_start:
|
|||
jsr init ; unhook DOS, init nibble table
|
||||
|
||||
|
||||
jsr init_vars
|
||||
|
||||
;===================================================
|
||||
;===================================================
|
||||
; SETUP THE FILENAME
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.7 KiB |
Loading…
Reference in New Issue