diff --git a/mist/meche.s b/mist/meche.s new file mode 100644 index 00000000..be9fcf1a --- /dev/null +++ b/mist/meche.s @@ -0,0 +1,150 @@ +; Mechanical Engineer (meche) island + +; by deater (Vince Weaver) + +; Zero Page + .include "zp.inc" + .include "hardware.inc" + + +meche_start: + ;=================== + ; 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 + + ;================= + ; init vars + ; FIXME: we could be re-called from other books + ; so don't set location here + + lda #0 + sta LOCATION + lda #DIRECTION_E + sta DIRECTION + + + lda LOCATION + bne not_first_time + +not_first_time: + + + ; set up initial location + + 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 + ;==================================== + + +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: + + jmp game_loop + + + ;========================== + ; includes + ;========================== + + .include "gr_copy.s" + .include "gr_offsets.s" + .include "gr_pageflip.s" + .include "gr_putsprite_crop.s" + .include "text_print.s" + .include "gr_fast_clear.s" + .include "decompress_fast_v2.s" + .include "keyboard.s" + .include "draw_pointer.s" + + .include "audio.s" + + .include "graphics_meche/meche_graphics.inc" + + + ; puzzles + + ; linking books + +; .include "link_book_mist.s" + + .include "common_sprites.inc" + + .include "leveldata_meche.inc" + + + + + +;.align $100 +audio_red_page: +.incbin "audio/red_page.btc" +audio_link_noise: +.incbin "audio/link_noise.btc" + + diff --git a/mist/zp.inc b/mist/zp.inc index d5f2a4e0..aa0a5907 100644 --- a/mist/zp.inc +++ b/mist/zp.inc @@ -2,6 +2,7 @@ ;; LZSA addresses NIBCOUNT = $00 +WHICH_LOAD = $05 ;; Zero page monitor routines addresses