diff --git a/mist/Makefile b/mist/Makefile index bce97fdb..0a175f0f 100644 --- a/mist/Makefile +++ b/mist/Makefile @@ -40,10 +40,12 @@ mist_side2.dsk: HELLO_DISK2 MECHE SELENA CHANNEL VIEWER LOADER: loader.o ld65 -o LOADER loader.o -C ../linker_scripts/apple2_1000.inc -loader.o: loader.s +loader.o: loader.s \ + gr_copy.s gr_offsets.s gr_pageflip.s gr_putsprite_crop.s \ + text_print.s gr_fast_clear.s decompress_fast_v2.s \ + keyboard.s draw_pointer.s end_level.s audio.s ca65 -o loader.o loader.s -l loader.lst - ### HELLO: hello.bas @@ -52,6 +54,17 @@ HELLO: hello.bas HELLO_DISK2: hello_disk2.bas ../asoft_basic-utils/tokenize_asoft < hello_disk2.bas > HELLO_DISK2 +#### + +generate_common: generate_common.o + $(CC) $(LFLAGS) -o generate_common generate_common.o + +generate_common.o: generate_common.c + $(CC) $(CFLAGS) -c generate_common.c + +#### +common_routines.inc: loader.lst generate_common + ./generate_common > common_routines.inc #### diff --git a/mist/cabin.s b/mist/cabin.s index 358d9f13..da2d757f 100644 --- a/mist/cabin.s +++ b/mist/cabin.s @@ -192,7 +192,7 @@ enter_tree_path: lda #DIRECTION_E sta DIRECTION - lda #CHANNEL_TREE_PATH + lda #CABIN_TREE_PATH sta LOCATION jmp change_location @@ -201,7 +201,7 @@ enter_tree_path: enter_cabin: lda #DIRECTION_E sta DIRECTION - lda #CHANNEL_CABIN_OPEN + lda #CABIN_OPEN sta LOCATION jmp change_location diff --git a/mist/channel.s b/mist/channel.s index 94e8d7ee..518c80ef 100644 --- a/mist/channel.s +++ b/mist/channel.s @@ -83,36 +83,11 @@ game_loop: ;==================================== lda LOCATION - cmp #CHANNEL_TREE_BOOK_OPEN - beq animate_channel_book cmp #CHANNEL_BOOK_OPEN beq animate_mist_book jmp nothing_special -animate_channel_book: - - lda ANIMATE_FRAME - cmp #11 - bcc channel_book_good - lda #0 - sta ANIMATE_FRAME - -channel_book_good: - ; handle animated linking book - - lda ANIMATE_FRAME - asl - tay - lda channel_movie,Y - sta INL - lda channel_movie+1,Y - sta INH - - lda #22 - - jmp draw_book - animate_mist_book: lda DIRECTION cmp #DIRECTION_S @@ -135,7 +110,6 @@ mist_book_good: sta INH lda #24 -draw_book: sta XPOS lda #12 @@ -212,79 +186,6 @@ toggle_faucet: rts -back_to_mist: - - lda #DIRECTION_N - sta DIRECTION - - lda #MIST_ARRIVAL_DOCK ; the dock - - jmp exit_to_mist - - - -enter_clock: - - lda #DIRECTION_S - sta DIRECTION - - lda #MIST_CLOCK - - jmp exit_to_mist - - - -handle_clearing: - - lda DIRECTION - cmp #DIRECTION_W - beq enter_path - - ; else going east - - lda CURSOR_X - cmp #23 - bcc enter_cabin - -enter_tree_path: - lda #DIRECTION_E - sta DIRECTION - - lda #CHANNEL_TREE_PATH - sta LOCATION - - jmp change_location - - -enter_cabin: - lda #DIRECTION_E - sta DIRECTION - lda #CHANNEL_CABIN_OPEN - sta LOCATION - jmp change_location - - -enter_path: - - lda #DIRECTION_N - sta DIRECTION - - lda #MIST_TREE_CORRIDOR_5 - - jmp exit_to_mist - - -exit_to_mist: - - sta LOCATION - lda #$ff - sta LEVEL_OVER - - lda #LOAD_MIST - sta WHICH_LOAD - - rts - ;========================== ; includes ;========================== diff --git a/mist/channel_switches.s b/mist/channel_switches.s index 3cf55670..008b2335 100644 --- a/mist/channel_switches.s +++ b/mist/channel_switches.s @@ -35,14 +35,14 @@ book_elevator_floor1: ldy #LOCATION_SOUTH_BG lda #book_elevator_inside_gnd_closed_lzsa - sta location44+1,Y ; CHANNEL_BOOK_E_IN_CLOSED + sta location31+1,Y ; CHANNEL_BOOK_E_IN_CLOSED ; change exit ldy #LOCATION_SOUTH_EXIT lda #CHANNEL_BOOK_E_INSIDE_GND - sta location44,Y ; CHANNEL_BOOK_E_IN_CLOSED + sta location31,Y ; CHANNEL_BOOK_E_IN_CLOSED jmp book_elevator_handle_done book_elevator_floor2: @@ -51,14 +51,14 @@ book_elevator_floor2: ldy #LOCATION_SOUTH_BG lda #book_elevator_inside_top_closed_lzsa - sta location44+1,Y ; CHANNEL_BOOK_E_IN_CLOSED + sta location31+1,Y ; CHANNEL_BOOK_E_IN_CLOSED ; change exit ldy #LOCATION_SOUTH_EXIT lda #CHANNEL_BOOK_E_INSIDE_TOP - sta location44,Y ; CHANNEL_BOOK_E_IN_CLOSED + sta location31,Y ; CHANNEL_BOOK_E_IN_CLOSED book_elevator_handle_done: @@ -156,14 +156,14 @@ bridge_is_up: ldy #LOCATION_EAST_BG lda #bridge_up_e_lzsa - sta location16+1,Y ; CHANNEL_BRIDGE + sta location3+1,Y ; CHANNEL_BRIDGE ; change to allow crossing bridge ldy #LOCATION_EAST_EXIT lda #CHANNEL_AFTER_BRIDGE1 - sta location16,Y ; CHANNEL_BRIDGE + sta location3,Y ; CHANNEL_BRIDGE jmp adjust_pipe bridge_is_down: @@ -172,14 +172,14 @@ bridge_is_down: ldy #LOCATION_EAST_BG lda #bridge_down_e_lzsa - sta location16+1,Y ; CHANNEL_BRIDGE + sta location3+1,Y ; CHANNEL_BRIDGE ; change to allow crossing bridge ldy #LOCATION_EAST_EXIT lda #$ff - sta location16,Y ; CHANNEL_BRIDGE + sta location3,Y ; CHANNEL_BRIDGE adjust_pipe: @@ -195,18 +195,18 @@ pipe_extended: ldy #LOCATION_SOUTH_BG lda #pipe_extend_up_s_lzsa - sta location40+1,Y ; CHANNEL_PIPE_EXTEND + sta location27+1,Y ; CHANNEL_PIPE_EXTEND ; also change for other side of bridge ldy #LOCATION_WEST_BG lda #pipe_bridge2_up_w_lzsa - sta location23+1,Y ; CHANNEL_PIPE_BRIDGE2 + sta location10+1,Y ; CHANNEL_PIPE_BRIDGE2 jmp done_adjust_changes @@ -216,18 +216,18 @@ pipe_stowed: ldy #LOCATION_SOUTH_BG lda #pipe_extend_down_s_lzsa - sta location40+1,Y ; CHANNEL_PIPE_EXTEND + sta location27+1,Y ; CHANNEL_PIPE_EXTEND ; also change for other side of bridge ldy #LOCATION_WEST_BG lda #pipe_bridge2_w_lzsa - sta location23+1,Y ; CHANNEL_PIPE_BRIDGE2 + sta location10+1,Y ; CHANNEL_PIPE_BRIDGE2 done_adjust_changes: diff --git a/mist/common_defines.inc b/mist/common_defines.inc index 18a32b93..4d24ea21 100644 --- a/mist/common_defines.inc +++ b/mist/common_defines.inc @@ -303,55 +303,42 @@ STONEY_BLUE_HALFMESSAGE = 50 STONEY_CRAWLWAY_RIGHT = 51 ; Channely Wood -CHANNEL_OUTSIDE_CABIN = 0 -CHANNEL_CABIN_OPEN = 1 -CHANNEL_CABIN_ENTRANCE = 2 -CHANNEL_INSIDE_CABIN = 3 -CHANNEL_SAFE = 4 -CHANNEL_CLOCK_PATH = 5 -CHANNEL_TREE_PATH = 6 -CHANNEL_BIG_TREE = 7 -CHANNEL_TREE_ELEVATOR = 8 -CHANNEL_TREE_BASEMENT = 9 -CHANNEL_TREE_BOOK = 10 -CHANNEL_TREE_BOOK_CLOSED= 11 -CHANNEL_TREE_BOOK_OPEN = 12 -CHANNEL_ARRIVAL = 13 -CHANNEL_PATH2 = 14 -CHANNEL_PATH3 = 15 -CHANNEL_BRIDGE = 16 -CHANNEL_PATH4 = 17 -CHANNEL_PATH5 = 18 -CHANNEL_PATH6 = 19 -CHANNEL_FORK = 20 -CHANNEL_BEFORE_ELEV1 = 21 -CHANNEL_IN_ELEVATOR1 = 22 -CHANNEL_PIPE_BRIDGE2 = 23 -CHANNEL_STEPS_FORK = 24 -CHANNEL_STEPS_PATH = 25 -CHANNEL_STEPS_DOOR = 26 -CHANNEL_WIND_PATH = 27 -CHANNEL_WIND_PATH2 = 28 -CHANNEL_ISLAND1 = 29 -CHANNEL_ISLAND2 = 30 -CHANNEL_ISLAND3 = 31 -CHANNEL_SHACK = 32 -CHANNEL_TANK = 33 -CHANNEL_TANK_CLOSE = 34 -CHANNEL_WINDMILL = 35 -CHANNEL_OUT_BACK = 36 -CHANNEL_AFTER_BRIDGE1 = 37 -CHANNEL_AFTER_BRIDGE2 = 38 -CHANNEL_BOOK_FORK = 39 -CHANNEL_PIPE_EXTEND = 40 -CHANNEL_BOOK_ELEVATOR = 41 -CHANNEL_BOOK_E_OPEN = 42 -CHANNEL_BOOK_E_INSIDE_GND= 43 -CHANNEL_BOOK_E_IN_CLOSED= 44 -CHANNEL_BOOK_E_INSIDE_TOP= 45 -CHANNEL_BOOK_ROOM = 46 -CHANNEL_BOOK_CLOSED = 47 -CHANNEL_BOOK_OPEN = 48 +CHANNEL_ARRIVAL = 0 +CHANNEL_PATH2 = 1 +CHANNEL_PATH3 = 2 +CHANNEL_BRIDGE = 3 +CHANNEL_PATH4 = 4 +CHANNEL_PATH5 = 5 +CHANNEL_PATH6 = 6 +CHANNEL_FORK = 7 +CHANNEL_BEFORE_ELEV1 = 8 +CHANNEL_IN_ELEVATOR1 = 9 +CHANNEL_PIPE_BRIDGE2 = 10 +CHANNEL_STEPS_FORK = 11 +CHANNEL_STEPS_PATH = 12 +CHANNEL_STEPS_DOOR = 13 +CHANNEL_WIND_PATH = 14 +CHANNEL_WIND_PATH2 = 15 +CHANNEL_ISLAND1 = 16 +CHANNEL_ISLAND2 = 17 +CHANNEL_ISLAND3 = 18 +CHANNEL_SHACK = 19 +CHANNEL_TANK = 20 +CHANNEL_TANK_CLOSE = 21 +CHANNEL_WINDMILL = 22 +CHANNEL_OUT_BACK = 23 +CHANNEL_AFTER_BRIDGE1 = 24 +CHANNEL_AFTER_BRIDGE2 = 25 +CHANNEL_BOOK_FORK = 26 +CHANNEL_PIPE_EXTEND = 27 +CHANNEL_BOOK_ELEVATOR = 28 +CHANNEL_BOOK_E_OPEN = 29 +CHANNEL_BOOK_E_INSIDE_GND= 30 +CHANNEL_BOOK_E_IN_CLOSED= 31 +CHANNEL_BOOK_E_INSIDE_TOP= 32 +CHANNEL_BOOK_ROOM = 33 +CHANNEL_BOOK_CLOSED = 34 +CHANNEL_BOOK_OPEN = 35 ; Cabin lost in woods CABIN_OUTSIDE = 0 diff --git a/mist/common_routines.inc b/mist/common_routines.inc index 7d1713e9..8997921f 100644 --- a/mist/common_routines.inc +++ b/mist/common_routines.inc @@ -2,54 +2,51 @@ ; external routines ; loader.s -opendir_filename = $1039 +opendir_filename =$1039 ; audio.c -play_audio = $131b +play_audio =$133e ; decompress_fast_v2.s -decompress_lzsa2_fast = $142c -getsrc_smc = $1522 +decompress_lzsa2_fast =$144f +getsrc_smc =$1545 ; draw_pointer.s -draw_pointer = $152f +draw_pointer =$1552 ; end_level.s -end_level = $1672 +end_level =$1695 ; gr_copy.s -gr_copy_to_current = $1694 +gr_copy_to_current =$16b7 ; gr_fast_clear.s -clear_all = $17f8 -clear_all_color = $181d +clear_all =$181b +clear_all_color =$1840 ; gr_offsets.s -gr_offsets = $183b +gr_offsets =$185e ; gr_page_flip.s -page_flip = $186b +page_flip =$188e ; gr_putsprite_crop.s -put_sprite_crop = $1885 +put_sprite_crop =$18a8 ; keyboard.s -handle_keypress = $19c1 -change_location = $1a8e +handle_keypress =$19e4 +change_location =$1ab1 ; text_print.s -move_and_print = $1b26 - -; common_sprites.inc +move_and_print =$1b49 ; page_sprites.inc -blue_page_sprite = $1c57 -red_page_sprite = $1c6d -white_page_sprite = $1c83 -blue_page_small_sprite = $1c99 -red_page_small_sprite = $1ca1 +blue_page_sprite =$1c44 +red_page_sprite =$1c90 +white_page_sprite =$1ca6 +blue_page_small_sprite =$1cbc +red_page_small_sprite =$1cc4 ; audio files - linking_noise = $9000 LINKING_NOISE_LENGTH = 43 diff --git a/mist/decompress_fast_v2.s b/mist/decompress_fast_v2.s index 97f3eb33..5cefddcb 100644 --- a/mist/decompress_fast_v2.s +++ b/mist/decompress_fast_v2.s @@ -313,7 +313,6 @@ getlargesrc: ; fall through grab high 8 bits getsrc: -getsrc_smc: LZSA_SRC_LO = *+1 LZSA_SRC_HI = *+2 lda $AAAA diff --git a/mist/generate_common.c b/mist/generate_common.c new file mode 100644 index 00000000..9c4b04aa --- /dev/null +++ b/mist/generate_common.c @@ -0,0 +1,111 @@ +#include +#include + + +static FILE *fff; + + +static void find_address(char *symbol_name) { + + unsigned int addr=0; + char string[BUFSIZ],*result; + char temp_name[BUFSIZ]; + + sprintf(temp_name,"%s:",symbol_name); + + while(1) { + + result=fgets(string,BUFSIZ,fff); + if (result==NULL) break; + + result=strstr(string,temp_name); + if (result!=NULL) { + string[6]=0; + sscanf(string,"%x",&addr); + break; + } + } + + + printf("%s\t=$%04x\n",symbol_name,addr+0x1000); +} + +int main(int argc, char **argv) { + + fff=fopen("loader.lst","r"); + if (fff==NULL) { + fprintf(stderr,"ERROR! could not open loader.lst\n"); + return -1; + } + + printf(";=============================\n"); + printf("; external routines\n"); + printf("\n"); + + printf("; loader.s\n"); + find_address("opendir_filename"); + printf("\n"); + + printf("; audio.c\n"); + find_address("play_audio"); + printf("\n"); + + printf("; decompress_fast_v2.s\n"); + find_address("decompress_lzsa2_fast"); + find_address("getsrc_smc"); + printf("\n"); + + printf("; draw_pointer.s\n"); + find_address("draw_pointer"); + printf("\n"); + + printf("; end_level.s\n"); + find_address("end_level"); + printf("\n"); + + printf("; gr_copy.s\n"); + find_address("gr_copy_to_current"); + printf("\n"); + + printf("; gr_fast_clear.s\n"); + find_address("clear_all"); + find_address("clear_all_color"); + printf("\n"); + + printf("; gr_offsets.s\n"); + find_address("gr_offsets"); + printf("\n"); + + printf("; gr_page_flip.s\n"); + find_address("page_flip"); + printf("\n"); + + printf("; gr_putsprite_crop.s\n"); + find_address("put_sprite_crop"); + printf("\n"); + + printf("; keyboard.s\n"); + find_address("handle_keypress"); + find_address("change_location"); + printf("\n"); + + printf("; text_print.s\n"); + find_address("move_and_print"); + printf("\n"); + + printf("; page_sprites.inc\n"); + find_address("blue_page_sprite"); + find_address("red_page_sprite"); + find_address("white_page_sprite"); + find_address("blue_page_small_sprite"); + find_address("red_page_small_sprite"); + printf("\n"); + + printf("; audio files\n"); + printf("linking_noise = $9000\n"); + printf("LINKING_NOISE_LENGTH = 43\n"); + + fclose(fff); + + return 0; +} diff --git a/mist/graphics_channel/Makefile b/mist/graphics_channel/Makefile index 83846efd..f4b74ca6 100644 --- a/mist/graphics_channel/Makefile +++ b/mist/graphics_channel/Makefile @@ -10,19 +10,6 @@ all: channel_graphics.inc channel_graphics.inc: \ arrival_n.lzsa arrival_s.lzsa \ - clearing_e.lzsa clearing_s.lzsa clearing_w.lzsa \ - clearing_e_open.lzsa \ - boiler_room_e.lzsa \ - boiler_e.lzsa boiler_w.lzsa \ - safe_w.lzsa safe_open_w.lzsa \ - clock_path_n.lzsa clock_path_s.lzsa \ - tree_path_e.lzsa tree_path_w.lzsa \ - tree_base_n.lzsa tree_base_s.lzsa \ - tree_basement_n.lzsa tree_basement_s.lzsa \ - tree_basement_book_s.lzsa \ - tree_basement_book_open_s.lzsa \ - tree_basement_book_closed_s.lzsa \ - tree_elevator_basement_s.lzsa \ bridge_w.lzsa bridge_down_e.lzsa bridge_up_e.lzsa \ path2_e.lzsa path2_s.lzsa path2_n.lzsa \ path3_w.lzsa path3_e.lzsa path3_n.lzsa \ @@ -57,27 +44,6 @@ channel_graphics.inc: \ book_mist_closed_s.lzsa book_mist_open_s.lzsa echo "arrival_n_lzsa: .incbin \"arrival_n.lzsa\"" > channel_graphics.inc echo "arrival_s_lzsa: .incbin \"arrival_s.lzsa\"" >> channel_graphics.inc - echo "clearing_e_lzsa: .incbin \"clearing_e.lzsa\"" >> channel_graphics.inc - echo "clearing_s_lzsa: .incbin \"clearing_s.lzsa\"" >> channel_graphics.inc - echo "clearing_w_lzsa: .incbin \"clearing_w.lzsa\"" >> channel_graphics.inc - echo "clearing_e_open_lzsa: .incbin \"clearing_e_open.lzsa\"" >> channel_graphics.inc - echo "boiler_room_e_lzsa: .incbin \"boiler_room_e.lzsa\"" >> channel_graphics.inc - echo "boiler_e_lzsa: .incbin \"boiler_e.lzsa\"" >> channel_graphics.inc - echo "boiler_w_lzsa: .incbin \"boiler_w.lzsa\"" >> channel_graphics.inc - echo "safe_w_lzsa: .incbin \"safe_w.lzsa\"" >> channel_graphics.inc - echo "safe_open_w_lzsa: .incbin \"safe_open_w.lzsa\"" >> channel_graphics.inc - echo "clock_path_n_lzsa: .incbin \"clock_path_n.lzsa\"" >> channel_graphics.inc - echo "clock_path_s_lzsa: .incbin \"clock_path_s.lzsa\"" >> channel_graphics.inc - echo "tree_path_e_lzsa: .incbin \"tree_path_e.lzsa\"" >> channel_graphics.inc - echo "tree_path_w_lzsa: .incbin \"tree_path_w.lzsa\"" >> channel_graphics.inc - echo "tree_base_n_lzsa: .incbin \"tree_base_n.lzsa\"" >> channel_graphics.inc - echo "tree_base_s_lzsa: .incbin \"tree_base_s.lzsa\"" >> channel_graphics.inc - echo "tree_basement_s_lzsa: .incbin \"tree_basement_s.lzsa\"" >> channel_graphics.inc - echo "tree_basement_n_lzsa: .incbin \"tree_basement_n.lzsa\"" >> channel_graphics.inc - echo "tree_basement_book_s_lzsa: .incbin \"tree_basement_book_s.lzsa\"" >> channel_graphics.inc - echo "tree_basement_book_open_s_lzsa: .incbin \"tree_basement_book_open_s.lzsa\"" >> channel_graphics.inc - echo "tree_basement_book_closed_s_lzsa: .incbin \"tree_basement_book_closed_s.lzsa\"" >> channel_graphics.inc - echo "tree_elevator_basement_s_lzsa: .incbin \"tree_elevator_basement_s.lzsa\"" >> channel_graphics.inc echo "bridge_w_lzsa: .incbin \"bridge_w.lzsa\"" >> channel_graphics.inc echo "bridge_down_e_lzsa: .incbin \"bridge_down_e.lzsa\"" >> channel_graphics.inc echo "bridge_up_e_lzsa: .incbin \"bridge_up_e.lzsa\"" >> channel_graphics.inc diff --git a/mist/keyboard.s b/mist/keyboard.s index d00e2c68..7715cdd3 100644 --- a/mist/keyboard.s +++ b/mist/keyboard.s @@ -194,7 +194,7 @@ change_location: lda (LOCATIONS_L),Y sta LOCATION_STRUCT_L iny - lda (LOCATIONS_H),Y + lda (LOCATIONS_L),Y sta LOCATION_STRUCT_H jsr change_direction diff --git a/mist/leveldata_channel.inc b/mist/leveldata_channel.inc index f0c020f5..2ac178cc 100644 --- a/mist/leveldata_channel.inc +++ b/mist/leveldata_channel.inc @@ -12,249 +12,10 @@ locations: .word location24,location25,location26,location27 .word location28,location29,location30,location31 .word location32,location33,location34,location35 - .word location36,location37,location38,location39 - .word location40,location41,location42,location43 - .word location44,location45,location46,location47 - .word location48 - -; CHANNEL_OUTSIDE_CABIN -- outside in clearing -location0: - .byte $ff ; north exit - .byte CHANNEL_CLOCK_PATH ; south exit - .byte CHANNEL_CABIN_OPEN ; east exit - .byte $ff ; west exit - .byte $ff ; north exit_dir - .byte DIRECTION_S ; south exit_dir - .byte DIRECTION_E ; east exit_dir - .byte $ff ; west exit_dir - .word $0000 ; north bg - .word clearing_s_lzsa ; south bg - .word clearing_e_lzsa ; east bg - .word clearing_w_lzsa ; west bg - .byte BG_SOUTH|BG_EAST|BG_WEST - .byte DIRECTION_E|DIRECTION_W ; special exit - .byte 7,33 ; special x - .byte 2,46 ; special y - .word handle_clearing-1 ; special function - -; CHANNEL_CABIN_OPEN -- outside, door open -location1: - .byte $ff ; north exit - .byte $ff ; south exit - .byte CHANNEL_CABIN_ENTRANCE ; 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 clearing_s_lzsa ; south bg - .word clearing_e_open_lzsa ; east bg - .word clearing_w_lzsa ; west bg - .byte BG_SOUTH|BG_EAST|BG_WEST - .byte DIRECTION_E|DIRECTION_W ; special exit - .byte 7,33 ; special x - .byte 2,46 ; special y - .word handle_clearing-1 ; special function - -; CHANNEL_CABIN_ENTRANCE -- entering the cabin -location2: - .byte $ff ; north exit - .byte $ff ; south exit - .byte CHANNEL_INSIDE_CABIN ; 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 boiler_room_e_lzsa ; east bg - .word $0000 ; west bg - .byte BG_EAST - .byte $ff - - -; CHANNEL_INSIDE_CABIN -- inside the cabin -location3: - .byte $ff ; north exit - .byte $ff ; south exit - .byte $ff ; east exit - .byte CHANNEL_OUTSIDE_CABIN ; 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 boiler_e_lzsa ; east bg - .word boiler_w_lzsa ; west bg - .byte BG_EAST|BG_WEST - .byte $ff - -; CHANNEL_SAFE -- looking at safe -location4: - .byte $ff ; north exit - .byte $ff ; south exit - .byte $ff ; east exit - .byte CHANNEL_INSIDE_CABIN ; 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 $000 ; east bg - .word safe_w_lzsa ; west bg - .byte BG_WEST - .byte $ff - -; CHANNEL_CLOCK_PATH -- path to clock -location5: - .byte CHANNEL_OUTSIDE_CABIN ; north exit - .byte $ff ; south exit - .byte $ff ; east exit - .byte $ff ; west exit - .byte DIRECTION_E ; north exit_dir - .byte $ff ; south exit_dir - .byte $ff ; east exit_dir - .byte $ff ; west exit_dir - .word clock_path_n_lzsa ; north bg - .word clock_path_s_lzsa ; south bg - .word $0000 ; east bg - .word $0000 ; west bg - .byte BG_NORTH|BG_SOUTH - .byte DIRECTION_S ; special exit - .byte 9,29 ; special x - .byte 2,46 ; special y - .word enter_clock-1 ; special function - - -; CHANNEL_TREE_PATH -- path to tree -location6: - .byte $ff ; north exit - .byte $ff ; south exit - .byte CHANNEL_BIG_TREE ; east exit - .byte CHANNEL_OUTSIDE_CABIN ; west exit - .byte $ff ; north exit_dir - .byte $ff ; south exit_dir - .byte DIRECTION_N ; east exit_dir - .byte DIRECTION_W ; west exit_dir - .word $0000 ; north bg - .word $0000 ; south bg - .word tree_path_e_lzsa ; east bg - .word tree_path_w_lzsa ; west bg - .byte BG_EAST|BG_WEST - .byte $ff - -; CHANNEL_BIG_TREE -- at the big tree -location7: - .byte CHANNEL_TREE_ELEVATOR ; north exit - .byte CHANNEL_TREE_PATH ; south exit - .byte $ff ; east exit - .byte $ff ; west exit - .byte DIRECTION_S ; north exit_dir - .byte DIRECTION_W ; south exit_dir - .byte $ff ; east exit_dir - .byte $ff ; west exit_dir - .word tree_base_n_lzsa ; north bg - .word tree_base_s_lzsa ; south bg - .word $0000 ; east bg - .word $0000 ; west bg - .byte BG_NORTH|BG_SOUTH - .byte $ff - -; CHANNEL_TREE_ELEVATOR -- in the tree elevator -location8: - .byte $ff ; north exit - .byte CHANNEL_TREE_BASEMENT ; south exit - .byte $ff ; east exit - .byte $ff ; west exit - .byte $ff ; north exit_dir - .byte DIRECTION_S ; south exit_dir - .byte $ff ; east exit_dir - .byte $ff ; west exit_dir - .word $0000 ; north bg - .word tree_elevator_basement_s_lzsa ; south bg - .word $0000 ; east bg - .word $0000 ; west bg - .byte BG_SOUTH - .byte $ff - -; CHANNEL_TREE_BASEMENT -- in the tree basement -location9: - .byte CHANNEL_BIG_TREE ; north exit - .byte CHANNEL_TREE_BOOK ; south exit - .byte $ff ; east exit - .byte $ff ; west exit - .byte DIRECTION_S ; north exit_dir - .byte DIRECTION_S ; south exit_dir - .byte $ff ; east exit_dir - .byte $ff ; west exit_dir - .word tree_basement_n_lzsa ; north bg - .word tree_basement_s_lzsa ; south bg - .word $0000 ; east bg - .word $0000 ; west bg - .byte BG_SOUTH|BG_NORTH - .byte $ff - -; CHANNEL_TREE_BOOK -- tree basement book -location10: - .byte $ff ; north exit - .byte CHANNEL_TREE_BOOK_CLOSED; south exit - .byte $ff ; east exit - .byte $ff ; west exit - .byte $ff ; north exit_dir - .byte DIRECTION_S ; south exit_dir - .byte $ff ; east exit_dir - .byte $ff ; west exit_dir - .word $0000 ; north bg - .word tree_basement_book_s_lzsa ; south bg - .word $0000 ; east bg - .word $0000 ; west bg - .byte BG_SOUTH - .byte $ff - -; CHANNEL_TREE_BOOK_CLOSED -- tree basement book closed -location11: - .byte $ff ; north exit - .byte CHANNEL_TREE_BOOK_OPEN ; south exit - .byte $ff ; east exit - .byte $ff ; west exit - .byte $ff ; north exit_dir - .byte DIRECTION_S ; south exit_dir - .byte $ff ; east exit_dir - .byte $ff ; west exit_dir - .word $0000 ; north bg - .word tree_basement_book_closed_s_lzsa ; south bg - .word $0000 ; east bg - .word $0000 ; west bg - .byte BG_SOUTH - .byte $ff - -; CHANNEL_TREE_BOOK_OPEN -- tree basement book open -location12: - .byte $ff ; north exit - .byte CHANNEL_TREE_BASEMENT ; south exit - .byte $ff ; east exit - .byte $ff ; west exit - .byte $ff ; north exit_dir - .byte DIRECTION_S ; south exit_dir - .byte $ff ; east exit_dir - .byte $ff ; west exit_dir - .word $0000 ; north bg - .word tree_basement_book_open_s_lzsa ; south bg - .word $0000 ; east bg - .word $0000 ; west bg - .byte BG_SOUTH - .byte DIRECTION_S ; special exit - .byte 21,31 ; special x - .byte 10,24 ; special y - .word channel_link_book-1 ; CHANNEL_ARRIVAL -- arrival in channelwood -location13: +location0: .byte CHANNEL_PATH2 ; north exit .byte $ff ; south exit .byte $ff ; east exit @@ -271,7 +32,7 @@ location13: .byte $ff ; CHANNEL_PATH2 -- twisty maze of passages all alike -location14: +location1: .byte CHANNEL_PATH6 ; north exit .byte CHANNEL_ARRIVAL ; south exit .byte CHANNEL_PATH3 ; east exit @@ -288,7 +49,7 @@ location14: .byte $ff ; CHANNEL_PATH3 -- twisty maze of passages all alike -location15: +location2: .byte CHANNEL_PATH4 ; north exit .byte $ff ; south exit .byte CHANNEL_BRIDGE ; east exit @@ -305,7 +66,7 @@ location15: .byte $ff ; CHANNEL_BRIDGE -- raisable bridge -location16: +location3: .byte $ff ; north exit .byte $ff ; south exit .byte $ff ; east exit @@ -325,7 +86,7 @@ location16: .word raise_bridge-1 ; CHANNEL_PATH4 -- twisty maze of passages all alike -location17: +location4: .byte $ff ; north exit .byte CHANNEL_PATH3 ; south exit .byte $ff ; east exit @@ -342,7 +103,7 @@ location17: .byte $ff ; CHANNEL_PATH5 -- twisty maze of passages all alike -location18: +location5: .byte CHANNEL_STEPS_FORK ; north exit .byte CHANNEL_PATH6 ; south exit .byte CHANNEL_PATH4 ; east exit @@ -359,7 +120,7 @@ location18: .byte $ff ; CHANNEL_PATH6 -- twisty maze of passages all alike -location19: +location6: .byte CHANNEL_PATH5 ; north exit .byte CHANNEL_PATH2 ; south exit .byte $ff ; east exit @@ -376,7 +137,7 @@ location19: .byte $ff ; CHANNEL_FORK -- forked path -location20: +location7: .byte CHANNEL_PATH6 ; north exit .byte CHANNEL_PIPE_BRIDGE2 ; south exit .byte $ff ; east exit @@ -393,7 +154,7 @@ location20: .byte $ff ; CHANNEL_BEFORE_ELEV1 -- just befor elevator 1 -location21: +location8: .byte $ff ; north exit .byte $ff ; south exit .byte CHANNEL_FORK ; east exit @@ -410,7 +171,7 @@ location21: .byte $ff ; CHANNEL_IN_ELEVATOR1 -- inside elevator1 -location22: +location9: .byte $ff ; north exit .byte $ff ; south exit .byte CHANNEL_BEFORE_ELEV1 ; east exit @@ -427,7 +188,7 @@ location22: .byte $ff ; CHANNEL_PIPE_BRIDGE2 -- east side of pipe bridge -location23: +location10: .byte $ff ; north exit .byte $ff ; south exit .byte CHANNEL_FORK ; east exit @@ -444,7 +205,7 @@ location23: .byte $ff ; CHANNEL_STEPS_FORK -- fork going to steps -location24: +location11: .byte CHANNEL_WIND_PATH ; north exit .byte CHANNEL_PATH5 ; south exit .byte $ff ; east exit @@ -461,7 +222,7 @@ location24: .byte $ff ; CHANNEL_STEPS_PATH -- path going to steps -location25: +location12: .byte $ff ; north exit .byte $ff ; south exit .byte CHANNEL_STEPS_FORK ; east exit @@ -478,7 +239,7 @@ location25: .byte $ff ; CHANNEL_STEPS_DOOR -- door to the steps -location26: +location13: .byte $ff ; north exit .byte $ff ; south exit .byte CHANNEL_STEPS_PATH ; east exit @@ -495,7 +256,7 @@ location26: .byte $ff ; CHANNEL_WIND_PATH -- path to windmill -location27: +location14: .byte CHANNEL_WIND_PATH2 ; north exit .byte CHANNEL_STEPS_FORK ; south exit .byte $ff ; east exit @@ -512,7 +273,7 @@ location27: .byte $ff ; CHANNEL_WIND_PATH2 -- path to windmill too -location28: +location15: .byte CHANNEL_ISLAND1 ; north exit .byte CHANNEL_WIND_PATH ; south exit .byte $ff ; east exit @@ -529,7 +290,7 @@ location28: .byte $ff ; CHANNEL_ISLAND1 -- island part1 -location29: +location16: .byte CHANNEL_ISLAND2 ; north exit .byte CHANNEL_WIND_PATH2 ; south exit .byte $ff ; east exit @@ -546,7 +307,7 @@ location29: .byte $ff ; CHANNEL_ISLAND2 -- island part2 -location30: +location17: .byte CHANNEL_ISLAND3 ; north exit .byte CHANNEL_ISLAND1 ; south exit .byte $ff ; east exit @@ -563,7 +324,7 @@ location30: .byte $ff ; CHANNEL_ISLAND3 -- island part3 -location31: +location18: .byte CHANNEL_SHACK ; north exit .byte CHANNEL_ISLAND2 ; south exit .byte $ff ; east exit @@ -580,7 +341,7 @@ location31: .byte $ff ; CHANNEL_SHACK -- island shack -location32: +location19: .byte CHANNEL_TANK ; north exit .byte CHANNEL_ISLAND3 ; south exit .byte $ff ; east exit @@ -597,7 +358,7 @@ location32: .byte $ff ; CHANNEL_TANK -- inside shack -location33: +location20: .byte CHANNEL_WINDMILL ; north exit .byte CHANNEL_SHACK ; south exit .byte $ff ; east exit @@ -617,7 +378,7 @@ location33: .word look_at_faucet-1 ; special function ; CHANNEL_TANK_CLOSE -- the faucet -location34: +location21: .byte CHANNEL_TANK ; north exit .byte $ff ; south exit .byte $ff ; east exit @@ -637,7 +398,7 @@ location34: .word toggle_faucet-1 ; special function ; CHANNEL_WINDMILL -- windmill machinery -location35: +location22: .byte CHANNEL_OUT_BACK ; north exit .byte CHANNEL_TANK ; south exit .byte $ff ; east exit @@ -657,7 +418,7 @@ location35: .word toggle_windmill-1 ; special function ; CHANNEL_OUT_BACK -- back door of windmill -location36: +location23: .byte $ff ; north exit .byte CHANNEL_WINDMILL ; south exit .byte $ff ; east exit @@ -674,7 +435,7 @@ location36: .byte $ff ; CHANNEL_AFTER_BRIDGE1 -- after lift bridge -location37: +location24: .byte $ff ; north exit .byte $ff ; south exit .byte CHANNEL_AFTER_BRIDGE2 ; east exit @@ -691,7 +452,7 @@ location37: .byte $ff ; CHANNEL_AFTER_BRIDGE2 -- next after lift bridge -location38: +location25: .byte $ff ; north exit .byte $ff ; south exit .byte CHANNEL_BOOK_FORK ; east exit @@ -708,7 +469,7 @@ location38: .byte $ff ; CHANNEL_BOOK_FORK -- fork to book elevator -location39: +location26: .byte CHANNEL_BOOK_ELEVATOR ; north exit .byte CHANNEL_PIPE_EXTEND ; south exit .byte $ff ; east exit @@ -725,7 +486,7 @@ location39: .byte $ff ; CHANNEL_PIPE_EXTEND -- pipe extender -location40: +location27: .byte CHANNEL_BOOK_FORK ; north exit .byte $ff ; south exit .byte $ff ; east exit @@ -745,7 +506,7 @@ location40: .word extend_pipe-1 ; special function ; CHANNEL_BOOK_ELEVATOR -- outside book elevator, door closed -location41: +location28: .byte CHANNEL_BOOK_E_OPEN ; north exit .byte CHANNEL_BOOK_FORK ; south exit .byte $ff ; east exit @@ -762,7 +523,7 @@ location41: .byte $ff ; special exit ; CHANNEL_E_OPEN -- outside book elevator, door open -location42: +location29: .byte CHANNEL_BOOK_E_INSIDE_GND ; north exit .byte CHANNEL_BOOK_FORK ; south exit .byte $ff ; east exit @@ -779,7 +540,7 @@ location42: .byte $ff ; special exit ; CHANNEL_BOOK_E_INSIDE_GND -- inside book elevator, gnd, door open -location43: +location30: .byte $ff ; north exit .byte CHANNEL_BOOK_ELEVATOR ; south exit .byte $ff ; east exit @@ -799,7 +560,7 @@ location43: .word book_elevator_close_door-1 ; special function ; CHANNEL_BOOK_E_IN_CLOSED -- inside book elevator, door closed -location44: +location31: .byte $ff ; north exit .byte CHANNEL_BOOK_E_INSIDE_GND ; south exit .byte $ff ; east exit @@ -819,7 +580,7 @@ location44: .word book_elevator_handle-1 ; special function ; CHANNEL_BOOK_E_INSIDE_TOP -- inside book elevator, top, door open -location45: +location32: .byte $ff ; north exit .byte CHANNEL_BOOK_ROOM ; south exit .byte $ff ; east exit @@ -839,7 +600,7 @@ location45: .word book_elevator_close_door-1 ; special function ; CHANNEL_BOOK_ROOM -- the room with the myst book -location46: +location33: .byte CHANNEL_BOOK_E_INSIDE_TOP ; north exit .byte $ff ; south exit .byte $ff ; east exit @@ -859,7 +620,7 @@ location46: .word book_room_grab_book-1 ; special function ; CHANNEL_BOOK_CLOSED -- myst book closed -location47: +location34: .byte CHANNEL_BOOK_E_INSIDE_TOP ; north exit .byte CHANNEL_BOOK_OPEN ; south exit .byte $ff ; east exit @@ -876,7 +637,7 @@ location47: .byte $ff ; special function ; CHANNEL_BOOK_OPEN -- myst book open -location48: +location35: .byte CHANNEL_BOOK_E_INSIDE_TOP ; north exit .byte CHANNEL_BOOK_ROOM ; south exit .byte $ff ; east exit diff --git a/mist/loader.s b/mist/loader.s index 055a107b..52a17b75 100644 --- a/mist/loader.s +++ b/mist/loader.s @@ -53,18 +53,6 @@ filbuf = $3D6 ; filbuf: .res 4 ; = bit2tbl+86 ;=================================================== ;=================================================== -.if 0 -LOAD_TITLE = $0 -LOAD_MIST = $1 -LOAD_MECHE = $2 -LOAD_SELENA = $3 -LOAD_OCTAGON = $4 -LOAD_VIEWER = $5 -LOAD_STONEDSHIP = $6 -LOAD_CHANNEL = $7 -LOAD_ENDING = $8 -.endif - loader_start: lda #LOAD_TITLE sta WHICH_LOAD @@ -160,7 +148,8 @@ copy_filename_done: filenames: .word intro_filename .word mist_filename,meche_filename,selena_filename,octagon_filename - .word viewer_filename,stoney_filename,channel_filename,ending_filename + .word viewer_filename,stoney_filename,channel_filename,cabin_filename + .word dentist_filename,arbor_filename,shipup_filename,ending_filename intro_filename: .byte "MIST_TITLE",0 @@ -178,6 +167,14 @@ stoney_filename: .byte "STONEY",0 channel_filename: .byte "CHANNEL",0 +cabin_filename: + .byte "CABIN",0 +dentist_filename: + .byte "DENTIST",0 +arbor_filename: + .byte "ARBOR",0 +shipup_filename: + .byte "SHIPUP",0 ending_filename: .byte "ENDING",0 diff --git a/mist/mist.s b/mist/mist.s index 802412de..7ae98c0b 100644 --- a/mist/mist.s +++ b/mist/mist.s @@ -235,10 +235,10 @@ enter_viewer: enter_channel_main: - lda #CHANNEL_OUTSIDE_CABIN + lda #CABIN_OUTSIDE sta LOCATION - lda #LOAD_CHANNEL + lda #LOAD_CABIN sta WHICH_LOAD lda #DIRECTION_E @@ -248,10 +248,10 @@ enter_channel_main: enter_channel_clock: - lda #CHANNEL_CLOCK_PATH + lda #CABIN_CLOCK_PATH sta LOCATION - lda #LOAD_CHANNEL + lda #LOAD_CABIN sta WHICH_LOAD lda #DIRECTION_N diff --git a/mist/mist_title.s b/mist/mist_title.s index 85e70380..10cdf556 100644 --- a/mist/mist_title.s +++ b/mist/mist_title.s @@ -95,6 +95,15 @@ done_keyloop: bit LORES bit FULLGR + ;================= + ; set up location + ;================= + + lda #locations + sta LOCATIONS_H + lda #0 sta DRAW_PAGE