diff --git a/mist/generator_puzzle.s b/mist/generator_puzzle.s index 957278ed..d57fa718 100644 --- a/mist/generator_puzzle.s +++ b/mist/generator_puzzle.s @@ -8,7 +8,7 @@ open_gen_door: sta location35,Y ldy #LOCATION_NORTH_EXIT_DIR - lda #DIRECTION_N + lda #(DIRECTION_N | DIRECTION_SPLIT) sta location35,Y ldy #LOCATION_NORTH_BG diff --git a/mist/graphics_island/generator_n.png b/mist/graphics_island/generator_n.png index 85fb9394..d77c7cf7 100644 Binary files a/mist/graphics_island/generator_n.png and b/mist/graphics_island/generator_n.png differ diff --git a/mist/keyboard.s b/mist/keyboard.s index 0671d08f..8b48e263 100644 --- a/mist/keyboard.s +++ b/mist/keyboard.s @@ -120,6 +120,13 @@ change_direction: ; load background lda DIRECTION + bpl no_split + bit TEXTGR + jmp done_split +no_split: + bit FULLGR +done_split: + and #$f ; mask off special flags asl clc adc #LOCATION_NORTH_BG @@ -169,6 +176,7 @@ go_forward: ; update new location lda DIRECTION + and #$f clc adc #LOCATION_NORTH_EXIT tay @@ -182,6 +190,7 @@ go_forward: ; update new direction lda DIRECTION + and #$f clc adc #LOCATION_NORTH_EXIT_DIR tay diff --git a/mist/leveldata_island.inc b/mist/leveldata_island.inc index 7e3a110a..c28d7e0c 100644 --- a/mist/leveldata_island.inc +++ b/mist/leveldata_island.inc @@ -710,7 +710,7 @@ location36: .word $0000 ; east bg .word $0000 ; west bg .byte BG_NORTH | BG_SOUTH - .byte $ff + .byte $ff ; DIRECTION_N|DIRECTION_SPLIT|DIRECTION_ONLY_POINT diff --git a/mist/zp.inc b/mist/zp.inc index 2e0e0211..241bca3d 100644 --- a/mist/zp.inc +++ b/mist/zp.inc @@ -40,6 +40,8 @@ DIRECTION = $66 DIRECTION_S = $1 DIRECTION_E = $2 DIRECTION_W = $3 + DIRECTION_ONLY_POINT = $40 ; do not change pointer to grab + DIRECTION_SPLIT = $80 ; split text/graphics LOCATION = $67 LOCATION_STRUCT_L = $68 LOCATION_STRUCT_H = $69