; Mist Title ; loads a HGR version of the title ; also handles the initial link to mist ; by deater (Vince Weaver) ; Zero Page .include "zp.inc" .include "hardware.inc" .include "common_defines.inc" .include "common_routines.inc" mist_start: ;=================== ; init screen ;=================== jsr TEXT jsr HOME bit KEYRESET bit SET_GR bit PAGE0 bit HIRES bit FULLGR ;=================== ; setup location ;=================== lda #locations sta LOCATIONS_H ;=================== ; Load graphics ;=================== reload_everything: lda #file sta getsrc_smc+2 ; LZSA_SRC_HI lda #$20 jsr decompress_lzsa2_fast ;=================================== ; detect if we have a language card ; and load sound into it if possible ;=================================== lda #0 sta SOUND_STATUS ; clear out, sound enabled jsr detect_language_card bcs no_language_card ; update sound status lda SOUND_STATUS ora #SOUND_IN_LC sta SOUND_STATUS ; load sounds into LC ; read ram, write ram, use $d000 bank1 bit $C08B bit $C08B lda #linking_noise_compressed sta getsrc_smc+2 lda #$D0 ; decompress to $D000 jsr decompress_lzsa2_fast blah: ; read rom, nowrite, use $d000 bank1 bit $C08A no_language_card: ;==================================== ; wait for keypress or a few seconds bit KEYRESET lda #0 sta FRAMEL keyloop: lda #64 ; delay a bit jsr WAIT inc FRAMEL lda FRAMEL ; time out eventually beq done_keyloop lda KEYPRESS bpl keyloop done_keyloop: bit KEYRESET ;=================== ; init screen jsr TEXT jsr HOME bit KEYRESET bit SET_GR bit PAGE0 bit LORES bit FULLGR lda #0 sta DRAW_PAGE ; init cursor lda #20 sta CURSOR_X sta CURSOR_Y lda #0 sta LEVEL_OVER ;============================ ; init vars jsr init_state ;============================ ; set up initial location lda #TITLE_MIST_LINKING_DOCK sta LOCATION ; start at first room lda #DIRECTION_N sta DIRECTION lda #LOAD_MIST ; load mist sta WHICH_LOAD jsr change_location lda #1 sta CURSOR_VISIBLE ; visible at first game_loop: ;================= ; reset things ;================= lda #0 sta IN_SPECIAL sta IN_RIGHT sta IN_LEFT ;==================================== ; copy background to current page ;==================================== jsr gr_copy_to_current ;==================================== ; handle special-case forground logic ;==================================== ; handle animated linking book ; note: the linking book to the dock doesn't have much action nothing_special: ;==================================== ; draw pointer ;==================================== jsr draw_pointer ;==================================== ; page flip ;==================================== jsr page_flip ;==================================== ; handle keypress/joystick ;==================================== jsr handle_keypress ;==================================== ; inc frame count ;==================================== inc FRAMEL bne room_frame_no_oflo inc FRAMEH room_frame_no_oflo: ;==================================== ; check level over ;==================================== lda LEVEL_OVER bne really_exit jmp game_loop really_exit: jmp end_level ;========================== ; includes ;========================== .include "init_state.s" .include "graphics_title/title_graphics.inc" .include "lc_detect.s" ; puzzles ; linking books .include "link_book_mist_dock.s" .include "common_sprites.inc" .include "leveldata_title.inc" file: .incbin "graphics_title/mist_title.lzsa" linking_noise_compressed: .incbin "audio/link_noise.btc.lzsa"