diff --git a/mist/Makefile b/mist/Makefile index d1525b01..fbf3ff65 100644 --- a/mist/Makefile +++ b/mist/Makefile @@ -8,14 +8,13 @@ B2D = ../bmp2dhr/b2d all: mist.dsk -mist.dsk: HELLO LOADER MIST MIST_TITLE +mist.dsk: HELLO LOADER MIST_TITLE MIST MECHE cp empty.dsk mist.dsk $(DOS33) -y mist.dsk SAVE A HELLO $(DOS33) -y mist.dsk BSAVE -a 0x800 LOADER - $(DOS33) -y mist.dsk BSAVE -a 0x1000 MIST $(DOS33) -y mist.dsk BSAVE -a 0x4000 MIST_TITLE -# $(DOS33) -y mist.dsk BSAVE -a 0xa000 MIST_TITLE.LZ4 -# $(DOS33) -y mist.dsk BSAVE -a 0x4000 STEPS_HGRC.BIN + $(DOS33) -y mist.dsk BSAVE -a 0x1000 MIST + $(DOS33) -y mist.dsk BSAVE -a 0x1000 MECHE ### @@ -61,6 +60,21 @@ mist.o: mist.s zp.inc hardware.inc \ #### +MECHE: meche.o + ld65 -o MECHE meche.o -C ../linker_scripts/apple2_1000.inc + +meche.o: meche.s zp.inc hardware.inc \ + graphics_meche/meche_graphics.inc \ + common_sprites.inc \ + leveldata_meche.inc \ + keyboard.s \ + draw_pointer.s \ + gr_copy.s audio.s text_print.s decompress_fast_v2.s + ca65 -o meche.o meche.s -l meche.lst + + +#### + graphics_island/mist_graphics.inc: cd graphics_island && make @@ -68,4 +82,4 @@ graphics_island/mist_graphics.inc: #### clean: - rm -f *~ *.o *.lst HELLO LOADER MIST MIST_TITLE + rm -f *~ *.o *.lst HELLO LOADER MIST_TITLE MIST MECHE diff --git a/mist/leveldata_meche.inc b/mist/leveldata_meche.inc new file mode 100644 index 00000000..9f71d281 --- /dev/null +++ b/mist/leveldata_meche.inc @@ -0,0 +1,127 @@ + +;=============================================== +; level data for Meche level +;=============================================== +; 24 bytes each location +; we put special at end as it's ignored if not set + +LOCATION_NORTH_EXIT=0 ; new room when heading north +LOCATION_SOUTH_EXIT=1 ; new room when heading south +LOCATION_EAST_EXIT=2 ; new room when heading east +LOCATION_WEST_EXIT=3 ; new room when heading west +LOCATION_NORTH_EXIT_DIR=4 ; direction faced in new room when N +LOCATION_SOUTH_EXIT_DIR=5 ; direction faced in new room when S +LOCATION_EAST_EXIT_DIR=6 ; direction faced in new room when E +LOCATION_WEST_EXIT_DIR=7 ; direction faced in new room when W +LOCATION_NORTH_BG=8 ; pointer to north background image +LOCATION_SOUTH_BG=10 ; pointer to south background image +LOCATION_EAST_BG=12 ; pointer to east background image +LOCATION_WEST_BG=14 ; pointer to west background image +LOCATION_BGS = 16 ; bitmap saying which backgrounds valid + BG_NORTH = 1 + BG_SOUTH = 2 + BG_EAST = 4 + BG_WEST = 8 +LOCATION_SPECIAL_EXIT=17 ; if we have something clickable + ; $FF if not, direction if so +LOCATION_SPECIAL_X1=18 ; collision box for the thing to click +LOCATION_SPECIAL_X2=19 +LOCATION_SPECIAL_Y1=20 +LOCATION_SPECIAL_Y2=21 +LOCATION_SPECIAL_FUNC=22 ; pointer-1 of function to call on click + + + +locations: + .word location0, location1, location2, location3 + .word location4 + +; Inside gear on Mist +location0: + .byte $ff ; north exit + .byte $ff ; south exit + .byte 1 ; east exit + .byte $ff ; west exit + .byte $ff ; north exit_dir + .byte $ff ; south exit_dir + .byte DIRECTION_E ; east exit_dir + .byte $ff ; west exit_dir + .word $0000 ; north bg + .word $0000 ; south bg + .word departure_e_lzsa ; east bg + .word $0000 ; west bg + .byte BG_EAST + .byte $ff ; special exit +; .byte 21,31 ; special x +; .byte 10,24 ; special y +; .word mist_link_book-1 ; special function + + +; closed book +location1: + .byte $ff ; north exit + .byte $ff ; south exit + .byte 2 ; east exit + .byte $ff ; west exit + .byte $ff ; north exit_dir + .byte $ff ; south exit_dir + .byte DIRECTION_E ; east exit_dir + .byte $ff ; west exit_dir + .word $0000 ; north bg + .word $0000 ; south bg + .word meche_book_closed_lzsa ; east bg + .word $0000 ; west bg + .byte BG_EAST + .byte $ff ; special exit + +; open book +location2: + .byte $ff ; north exit + .byte $ff ; south exit + .byte $3 ; east exit + .byte $ff ; west exit + .byte $ff ; north exit_dir + .byte $ff ; south exit_dir + .byte DIRECTION_W ; east exit_dir + .byte $ff ; west exit_dir + .word $0000 ; north bg + .word $0000 ; south bg + .word meche_book_open_lzsa ; east bg + .word $0000 ; west bg + .byte BG_EAST + .byte $ff ; special exit + +; arrival +location3: + .byte $ff ; north exit + .byte $ff ; south exit + .byte $ff ; east exit + .byte 4 ; west exit + .byte $ff ; north exit_dir + .byte $ff ; south exit_dir + .byte $ff ; east exit_dir + .byte DIRECTION_W ; west exit_dir + .word $0000 ; north bg + .word $0000 ; south bg + .word $0000 ; east bg + .word arrival_w_lzsa ; west bg + .byte BG_WEST + .byte $ff ; special exit + +; entrance +location4: + .byte $ff ; north exit + .byte $ff ; south exit + .byte $ff ; east exit + .byte 3 ; west exit + .byte $ff ; north exit_dir + .byte $ff ; south exit_dir + .byte $ff ; east exit_dir + .byte DIRECTION_W ; west exit_dir + .word entrance_n_lzsa ; north bg + .word entrance_s_lzsa ; south bg + .word entrance_e_lzsa ; east bg + .word entrance_w_lzsa ; west bg + .byte BG_NORTH|BG_SOUTH|BG_EAST|BG_WEST + .byte $ff ; special exit +