diff --git a/games/keen/Makefile b/games/keen/Makefile index b4b80074..4cde7354 100644 --- a/games/keen/Makefile +++ b/games/keen/Makefile @@ -69,7 +69,7 @@ level1.o: level1.s zp.inc hardware.inc \ maps/level1_map.zx02 \ status_bar.s draw_keen.s move_keen.s gr_putsprite_crop.s \ draw_tilemap.s tilemap_lookup.s \ - level1_sfx.s longer_sound.s \ + level1_sfx.s longer_sound.s level1_data.inc \ keyboard.s handle_laser.s ca65 -o level1.o level1.s -l level1.lst @@ -85,7 +85,7 @@ level2.o: level2.s zp.inc hardware.inc \ maps/level2_map.zx02 \ status_bar.s draw_keen.s move_keen.s gr_putsprite_crop.s \ draw_tilemap.s tilemap_lookup.s \ - level1_sfx.s longer_sound.s \ + level1_sfx.s longer_sound.s level2_data.inc \ keyboard.s handle_laser.s ca65 -o level2.o level2.s -l level2.lst diff --git a/games/keen/TODO b/games/keen/TODO index 660641e3..74bb3e10 100644 --- a/games/keen/TODO +++ b/games/keen/TODO @@ -14,13 +14,13 @@ mars map + mark completed levels at start, over-write finished levels with blue tiles check completed levels when action and not let you re-enter -level1 -~~~~~~ - + fix so works again +level engine +~~~~~~~~~~~~~ + + make generic sound effects ~~~~~~~~~~~~~ - + effect for transporter + movement: ~~~~~~~~~ @@ -33,7 +33,7 @@ enemies shooting ~~~~~~~~ - + collision with enemies + + FIX collision with enemies + shoot enemies pogo diff --git a/games/keen/handle_laser.s b/games/keen/handle_laser.s index 3c32018c..56cbf802 100644 --- a/games/keen/handle_laser.s +++ b/games/keen/handle_laser.s @@ -22,11 +22,21 @@ laser_check_tiles: clc lda LASER_TILEY - adc #>big_tilemap - sta INH - lda LASER_TILEX + tay + + lda tilemap_lookup_high,Y + sta INH + lda tilemap_lookup_low,Y + clc + adc LASTER_TILEX sta INL + +; adc #>big_tilemap + ; sta INH +; lda LASER_TILEX +; sta INL + ldy #0 lda (INL),Y cmp #ALLHARD_TILES @@ -105,9 +115,12 @@ laser_sideways_sprite: ; laser enemies ;======================= ; see if laser hits any enemies + + ; FIXME: this is broken + laser_enemies: - ldy #0 + ldy #0 ; which enemy laser_enemies_loop: ; see if out @@ -118,7 +131,7 @@ laser_enemies_loop: ; get local tilemap co-ord sec lda enemy_data_tilex,Y - sbc TILEMAP_X + sbc TILEMAP_X ; compare enemy size? sta TILE_TEMP @@ -151,13 +164,10 @@ hit_something: jmp exit_laser_enemy done_laser_enemy: - - tya - clc - adc #8 - tay - cpy #(NUM_ENEMIES*8) + iny + cpy #NUM_ENEMIES bne laser_enemies_loop + exit_laser_enemy: rts diff --git a/games/keen/level1.s b/games/keen/level1.s index bfa74fff..5edb74f9 100644 --- a/games/keen/level1.s +++ b/games/keen/level1.s @@ -7,11 +7,9 @@ .include "hardware.inc" .include "common_defines.inc" + .include "level1_data.inc" -MAX_TILE_X = 96 ; 116 - 20 -MAX_TILE_Y = 5 ; (34 - 24)/2 (maybe?) - -keen_start: +level1_start: ;=================== ; init screen @@ -49,14 +47,11 @@ keen_start: lda #4 sta DRAW_PAGE - ; Level 1 - ; start at 2,24 (remember tiles 2 bytes high even though 4 pixels) - ; but with reference to starting tilemap (0,5) should be - ; 2,8? + ; set starting location - lda #1 + lda #START_KEEN_TILEX sta KEEN_TILEX - lda #13 + lda #START_KEEN_TILEY sta KEEN_TILEY lda #0 ; offset from tile location @@ -84,9 +79,9 @@ keen_start: ; we copy in full screen, 40x48 = 20x12 tiles ; we start out assuming position is 0,5 - lda #0 + lda #START_TILEMAP_X sta TILEMAP_X - lda #5 + lda #START_TILEMAP_Y sta TILEMAP_Y jsr copy_tilemap_subset diff --git a/games/keen/level1_data.inc b/games/keen/level1_data.inc new file mode 100644 index 00000000..bb118b43 --- /dev/null +++ b/games/keen/level1_data.inc @@ -0,0 +1,12 @@ +; Level 1 (Border Town) + +MAX_TILE_X = 96 ; 116 - 20 +MAX_TILE_Y = 5 ; (34 - 24)/2 (maybe?) + +START_KEEN_TILEX = 1 +START_KEEN_TILEY = 13 + +START_TILEMAP_X = 0 +START_TILEMAP_Y = 5 + +NUM_ENEMIES = 8 diff --git a/games/keen/level1_enemies.s b/games/keen/level1_enemies.s index 2d1cdd77..aab087ac 100644 --- a/games/keen/level1_enemies.s +++ b/games/keen/level1_enemies.s @@ -1,5 +1,3 @@ -NUM_ENEMIES = 8 - ;======================= ; move enemies diff --git a/games/keen/level2.s b/games/keen/level2.s index cd72cfb6..791c0b93 100644 --- a/games/keen/level2.s +++ b/games/keen/level2.s @@ -7,11 +7,10 @@ .include "hardware.inc" .include "common_defines.inc" + .include "level2_data.inc" -MAX_TILE_X = 96 ; 116 - 20 -MAX_TILE_Y = 5 ; (34 - 24)/2 (maybe?) -keen_start: +level2_start: ;=================== ; init screen @@ -49,14 +48,11 @@ keen_start: lda #4 sta DRAW_PAGE - ; Level 1 - ; start at 2,24 (remember tiles 2 bytes high even though 4 pixels) - ; but with reference to starting tilemap (0,5) should be - ; 2,8? + ; set starting location - lda #1 + lda #START_KEEN_TILEX sta KEEN_TILEX - lda #13 + lda #START_KEEN_TILEY sta KEEN_TILEY lda #0 ; offset from tile location @@ -84,9 +80,9 @@ keen_start: ; we copy in full screen, 40x48 = 20x12 tiles ; we start out assuming position is 0,5 - lda #0 + lda #START_TILEMAP_X sta TILEMAP_X - lda #5 + lda #START_TILEMAP_Y sta TILEMAP_Y jsr copy_tilemap_subset @@ -232,10 +228,7 @@ skip_end_sound: level1_gameover: - ; mars plays this - -; ldy #SFX_GAMEOVERSND -; jsr play_sfx + ; mars plays the sound lda #GAME_OVER sta LEVEL_OVER @@ -252,10 +245,6 @@ level1_levelover: ; includes ;========================== - ; level graphics -;level1_bg_zx02: -; .incbin "graphics/level1_bg.gr.zx02" - .include "text_print.s" .include "gr_offsets.s" .include "gr_fast_clear.s" diff --git a/games/keen/level2_data.inc b/games/keen/level2_data.inc new file mode 100644 index 00000000..75819a7e --- /dev/null +++ b/games/keen/level2_data.inc @@ -0,0 +1,12 @@ +; Level 2 (First Shrine) + +MAX_TILE_X = 96 ; 116 - 20 +MAX_TILE_Y = 26 ; 26 (maybe?) + +START_KEEN_TILEX = 1 +START_KEEN_TILEY = 13 + +START_TILEMAP_X = 0 +START_TILEMAP_Y = 5 + +NUM_ENEMIES = 8