; Homestar Runner Expansion L2 .include "zp.inc" .include "hardware.inc" .include "qload.inc" .include "lemm.inc" .include "lemming_status.inc" .byte 2 ; level 2 do_level2: ;====================== ; set up initial stuff ;====================== lda #0 sta CLIMBER_COUNT sta FLOATER_COUNT sta BUILDER_COUNT sta BASHER_COUNT sta MINER_COUNT sta DIGGER_COUNT lda #10 sta EXPLODER_COUNT sta STOPPER_COUNT lda #2 sta DOOR_X lda #9 sta DOOR_Y lda #5 sta INIT_X lda #19 sta INIT_Y ; flame locations lda #35 ; sta l_flame_x_smc+1 lda #82 sta l_flame_y_smc+1 sta r_flame_y_smc+1 lda #37 ; sta r_flame_x_smc+1 ; door exit location lda #33 ; sta exit_x1_smc+1 lda #36 sta exit_x2_smc+1 lda #72 sta exit_y1_smc+1 lda #110 sta exit_y2_smc+1 ;============== ; set up intro ;============== lda #hr_level2_preview_lzsa sta level_preview_h_smc+1 lda #level2_intro_text sta intro_text_smc_h+1 lda #$20 ; BCD sta PERCENT_NEEDED lda #$10 sta PERCENT_ADD ;============== ; set up music ;============== lda #0 sta CURRENT_CHUNK sta DONE_PLAYING sta BASE_FRAME_L sta BUTTON_LOCATION ; set up first song lda #music2_parts_l sta chunk_l_smc+2 lda #music2_parts_h sta chunk_h_smc+2 lda #$D0 sta CHUNK_NEXT_LOAD ; Load at $D0 jsr load_song_chunk lda #$D0 ; music starts at $d000 sta CHUNK_NEXT_PLAY sta BASE_FRAME_H lda #1 sta LOOP sta CURRENT_CHUNK ;======================= ; show title screen ;======================= jsr intro_level ;======================= ; Load Graphics ;======================= lda #$20 sta HGR_PAGE jsr hgr_make_tables bit SET_GR bit PAGE0 bit HIRES bit FULLGR lda #hr_level2_lzsa sta getsrc_smc+2 ; LZSA_SRC_HI lda #$20 jsr decompress_lzsa2_fast lda #hr_level2_lzsa sta getsrc_smc+2 ; LZSA_SRC_HI lda #$40 jsr decompress_lzsa2_fast ;======================= ; Setup cursor ;======================= lda #$FF sta OVER_LEMMING lda #10 sta CURSOR_X lda #100 sta CURSOR_Y ;======================= ; init vars ;======================= lda #10 sta LEMMINGS_TO_RELEASE ; set up time lda #$5 sta TIME_MINUTES lda #$00 sta TIME_SECONDS sta TIMER_COUNT ; 1/50 jsr init_level jsr update_remaining_all ;======================= ; Play "Let's Go" ;======================= jsr play_letsgo ;=================== ;=================== ; Main Loop ;=================== ;=================== l2_main_loop: ;========================= ; load next chunk of music ; if necessary ;========================= jsr load_music l2_no_load_chunk: lda DOOR_OPEN bne l2_door_is_open jsr draw_door l2_door_is_open: ;====================== ; release lemmings ;====================== jsr release_lemming ;===================== ; animate flames ;===================== jsr draw_flames ;===================== ; draw level animation ;===================== jsr flame_thrower ;==================== ; update timer ;==================== jsr update_timer ;==================== ; main drawing loop ;==================== jsr erase_lemming jsr erase_pointer jsr move_lemmings jsr draw_lemming jsr handle_keypress jsr draw_pointer lda #$ff jsr wait inc FRAMEL lda LEVEL_OVER bne l2_level_over jmp l2_main_loop l2_level_over: rts .include "update_timer.s" .include "hr_graphics/graphics_hr_level2.inc" music2_parts_h: .byte >lemm2_part1_lzsa,>lemm2_part2_lzsa,>lemm2_part3_lzsa .byte >lemm2_part4_lzsa,>lemm2_part5_lzsa,>lemm2_part6_lzsa .byte >lemm2_part7_lzsa,>lemm2_part8_lzsa,>lemm2_part9_lzsa .byte >lemm2_part10_lzsa,>lemm2_part11_lzsa,>lemm2_part12_lzsa .byte >lemm2_part13_lzsa,>lemm2_part14_lzsa,>lemm2_part15_lzsa ; .byte >lemm2_part16_lzsa,>lemm2_part17_lzsa,>lemm2_part18_lzsa .byte $00 music2_parts_l: .byte x, savey1->savey2 lda #65 sta SAVED_Y1 lda #81 sta SAVED_Y2 lda #24 ldx #33 jsr hgr_partial_restore ; draw new lda FRAMEL and #$7 tay lda flame_sprites_l,Y sta INL lda flame_sprites_h,Y sta INH lda flame_sprites_x,Y sta XPOS lda flame_sprites_y,Y sta YPOS jsr hgr_draw_sprite rts flame_sprites_l: .byte flame0_sprite,>flame1_sprite .byte >flame2_sprite,>flame3_sprite .byte >flame4_sprite,>flame5_sprite .byte >flame6_sprite,>flame7_sprite flame_sprites_x: .byte 28,26 .byte 25,25 .byte 24,24 .byte 22,24 ; .byte 38,36 ; .byte 35,35 ; .byte 34,34 ; .byte 32,34 flame_sprites_y: .byte 72,71 .byte 68,69 .byte 70,67 .byte 65,65