mist: can pick up pages in the octagon
@ -89,7 +89,7 @@ OCTAGON: octagon.o
|
|||||||
octagon.o: octagon.s zp.inc hardware.inc common_defines.inc \
|
octagon.o: octagon.s zp.inc hardware.inc common_defines.inc \
|
||||||
graphics_octagon/octagon_graphics.inc \
|
graphics_octagon/octagon_graphics.inc \
|
||||||
books/octagon_books.inc \
|
books/octagon_books.inc \
|
||||||
common_sprites.inc \
|
common_sprites.inc page_sprites.inc \
|
||||||
leveldata_octagon.inc \
|
leveldata_octagon.inc \
|
||||||
letter_cat.s \
|
letter_cat.s \
|
||||||
marker_switch.s \
|
marker_switch.s \
|
||||||
|
@ -3,6 +3,22 @@
|
|||||||
;===========================
|
;===========================
|
||||||
touch_red_book:
|
touch_red_book:
|
||||||
|
|
||||||
|
; first see if picking up the page
|
||||||
|
lda CURSOR_X
|
||||||
|
cmp #24
|
||||||
|
bcc yes_touching_red_book ; blt
|
||||||
|
|
||||||
|
lda RED_PAGES_TAKEN
|
||||||
|
and #OCTAGON_PAGE
|
||||||
|
bne no_touch_red_page
|
||||||
|
|
||||||
|
lda #OCTAGON_PAGE
|
||||||
|
jsr take_red_page
|
||||||
|
no_touch_red_page:
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
yes_touching_red_book:
|
||||||
; if have a red page, take it and increment count
|
; if have a red page, take it and increment count
|
||||||
|
|
||||||
lda HOLDING_PAGE
|
lda HOLDING_PAGE
|
||||||
@ -32,6 +48,22 @@ not_red_page:
|
|||||||
;===========================
|
;===========================
|
||||||
touch_blue_book:
|
touch_blue_book:
|
||||||
|
|
||||||
|
; first see if picking up the page
|
||||||
|
lda CURSOR_X
|
||||||
|
cmp #24
|
||||||
|
bcc yes_touching_blue_book ; blt
|
||||||
|
|
||||||
|
lda BLUE_PAGES_TAKEN
|
||||||
|
and #OCTAGON_PAGE
|
||||||
|
bne no_touch_blue_page
|
||||||
|
|
||||||
|
lda #OCTAGON_PAGE
|
||||||
|
jsr take_blue_page
|
||||||
|
no_touch_blue_page:
|
||||||
|
rts
|
||||||
|
|
||||||
|
yes_touching_blue_book:
|
||||||
|
|
||||||
; if have a blue page, take it and increment count
|
; if have a blue page, take it and increment count
|
||||||
|
|
||||||
lda HOLDING_PAGE
|
lda HOLDING_PAGE
|
||||||
|
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 5.4 KiB |
BIN
mist/graphics_octagon/red_book_face.png
Normal file
After Width: | Height: | Size: 7.4 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 6.0 KiB |
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 979 B After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 11 KiB |
@ -72,7 +72,7 @@ location2:
|
|||||||
.word red_book_shelf_lzsa ; west bg
|
.word red_book_shelf_lzsa ; west bg
|
||||||
.byte BG_WEST ; west
|
.byte BG_WEST ; west
|
||||||
.byte DIRECTION_W ; special exit
|
.byte DIRECTION_W ; special exit
|
||||||
.byte 16,25 ; special x
|
.byte 16,28 ; special x
|
||||||
.byte 16,32 ; special y
|
.byte 16,32 ; special y
|
||||||
.word touch_red_book-1 ; special function
|
.word touch_red_book-1 ; special function
|
||||||
|
|
||||||
@ -219,7 +219,7 @@ location10:
|
|||||||
.word $0000 ; west bg
|
.word $0000 ; west bg
|
||||||
.byte BG_EAST
|
.byte BG_EAST
|
||||||
.byte DIRECTION_E ; special exit
|
.byte DIRECTION_E ; special exit
|
||||||
.byte 16,25 ; special x
|
.byte 16,28 ; special x
|
||||||
.byte 16,32 ; special y
|
.byte 16,32 ; special y
|
||||||
.word touch_blue_book-1 ; special function
|
.word touch_blue_book-1 ; special function
|
||||||
|
|
||||||
|
122
mist/octagon.s
@ -65,6 +65,26 @@ game_loop:
|
|||||||
cmp #OCTAGON_TOWER_ROTATION
|
cmp #OCTAGON_TOWER_ROTATION
|
||||||
beq animate_tower_rotation
|
beq animate_tower_rotation
|
||||||
|
|
||||||
|
cmp #OCTAGON_TEMPLE_CENTER
|
||||||
|
bne check_page_close_red
|
||||||
|
jsr draw_octagon_page_far
|
||||||
|
jmp done_foreground
|
||||||
|
|
||||||
|
check_page_close_red:
|
||||||
|
cmp #OCTAGON_RED_BOOKSHELF
|
||||||
|
bne check_page_close_blue
|
||||||
|
jsr draw_octagon_page_close_red
|
||||||
|
jmp done_foreground
|
||||||
|
|
||||||
|
check_page_close_blue:
|
||||||
|
cmp #OCTAGON_BLUE_BOOKSHELF
|
||||||
|
jsr draw_octagon_page_close_blue
|
||||||
|
|
||||||
|
done_foreground:
|
||||||
|
;====================================
|
||||||
|
; handle animations
|
||||||
|
;====================================
|
||||||
|
|
||||||
; things only happening when animating
|
; things only happening when animating
|
||||||
|
|
||||||
lda ANIMATE_FRAME
|
lda ANIMATE_FRAME
|
||||||
@ -208,7 +228,7 @@ goto_map:
|
|||||||
|
|
||||||
goto_red_book:
|
goto_red_book:
|
||||||
ldy #OCTAGON_RED_BOOKSHELF
|
ldy #OCTAGON_RED_BOOKSHELF
|
||||||
lda #DIRECTION_W
|
lda #DIRECTION_W|DIRECTION_ONLY_POINT
|
||||||
jmp done_goto
|
jmp done_goto
|
||||||
|
|
||||||
goto_shelf_frame:
|
goto_shelf_frame:
|
||||||
@ -228,7 +248,7 @@ goto_door_frame:
|
|||||||
|
|
||||||
goto_blue_book:
|
goto_blue_book:
|
||||||
ldy #OCTAGON_BLUE_BOOKSHELF
|
ldy #OCTAGON_BLUE_BOOKSHELF
|
||||||
lda #DIRECTION_E
|
lda #DIRECTION_E|DIRECTION_ONLY_POINT
|
||||||
jmp done_goto
|
jmp done_goto
|
||||||
|
|
||||||
goto_fireplace:
|
goto_fireplace:
|
||||||
@ -247,6 +267,102 @@ done_goto:
|
|||||||
jmp change_location
|
jmp change_location
|
||||||
|
|
||||||
|
|
||||||
|
;======================================
|
||||||
|
; draw pages if in octagon center (far)
|
||||||
|
draw_octagon_page_far:
|
||||||
|
lda DIRECTION
|
||||||
|
and #$f
|
||||||
|
|
||||||
|
cmp #DIRECTION_W
|
||||||
|
beq draw_octagon_red
|
||||||
|
cmp #DIRECTION_E
|
||||||
|
beq draw_octagon_blue
|
||||||
|
no_draw_page_far:
|
||||||
|
rts
|
||||||
|
|
||||||
|
draw_octagon_red:
|
||||||
|
lda RED_PAGES_TAKEN
|
||||||
|
and #OCTAGON_PAGE
|
||||||
|
bne no_draw_page_far
|
||||||
|
|
||||||
|
lda #<red_page_small_sprite
|
||||||
|
sta INL
|
||||||
|
lda #>red_page_small_sprite
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
jmp draw_small_page
|
||||||
|
|
||||||
|
draw_octagon_blue:
|
||||||
|
lda BLUE_PAGES_TAKEN
|
||||||
|
and #OCTAGON_PAGE
|
||||||
|
bne no_draw_page_far
|
||||||
|
|
||||||
|
lda #<blue_page_small_sprite
|
||||||
|
sta INL
|
||||||
|
lda #>blue_page_small_sprite
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
draw_small_page:
|
||||||
|
lda #21
|
||||||
|
sta XPOS
|
||||||
|
lda #24
|
||||||
|
sta YPOS
|
||||||
|
|
||||||
|
jmp put_sprite_crop ; tail call
|
||||||
|
|
||||||
|
;======================================
|
||||||
|
; draw pages if in octagon center (close)
|
||||||
|
draw_octagon_page_close_red:
|
||||||
|
lda DIRECTION
|
||||||
|
and #$f
|
||||||
|
|
||||||
|
cmp #DIRECTION_W
|
||||||
|
beq draw_octagon_close_red
|
||||||
|
|
||||||
|
no_draw_page_close:
|
||||||
|
rts
|
||||||
|
|
||||||
|
draw_octagon_close_red:
|
||||||
|
lda RED_PAGES_TAKEN
|
||||||
|
and #OCTAGON_PAGE
|
||||||
|
bne no_draw_page_close
|
||||||
|
|
||||||
|
lda #<red_page_sprite
|
||||||
|
sta INL
|
||||||
|
lda #>red_page_sprite
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
jmp draw_page_close
|
||||||
|
|
||||||
|
draw_octagon_page_close_blue:
|
||||||
|
lda DIRECTION
|
||||||
|
and #$f
|
||||||
|
|
||||||
|
cmp #DIRECTION_E
|
||||||
|
beq draw_octagon_close_blue
|
||||||
|
rts
|
||||||
|
|
||||||
|
draw_octagon_close_blue:
|
||||||
|
|
||||||
|
lda BLUE_PAGES_TAKEN
|
||||||
|
and #OCTAGON_PAGE
|
||||||
|
bne no_draw_page_close
|
||||||
|
|
||||||
|
lda #<blue_page_sprite
|
||||||
|
sta INL
|
||||||
|
lda #>blue_page_sprite
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
draw_page_close:
|
||||||
|
lda #24
|
||||||
|
sta XPOS
|
||||||
|
lda #24
|
||||||
|
sta YPOS
|
||||||
|
|
||||||
|
jmp put_sprite_crop ; tail call
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;==========================
|
;==========================
|
||||||
@ -278,12 +394,14 @@ done_goto:
|
|||||||
.include "octagon_rotation.s"
|
.include "octagon_rotation.s"
|
||||||
|
|
||||||
; linking books
|
; linking books
|
||||||
|
.include "handle_pages.s"
|
||||||
|
|
||||||
; books
|
; books
|
||||||
|
|
||||||
.include "books/octagon_books.inc"
|
.include "books/octagon_books.inc"
|
||||||
|
|
||||||
.include "common_sprites.inc"
|
.include "common_sprites.inc"
|
||||||
|
.include "page_sprites.inc"
|
||||||
|
|
||||||
.include "leveldata_octagon.inc"
|
.include "leveldata_octagon.inc"
|
||||||
|
|
||||||
|
@ -19,4 +19,15 @@ white_page_sprite:
|
|||||||
.byte $aa,$ff,$ff,$ff,$ff
|
.byte $aa,$ff,$ff,$ff,$ff
|
||||||
.byte $aa,$ff,$ff,$ff,$ff
|
.byte $aa,$ff,$ff,$ff,$ff
|
||||||
|
|
||||||
|
blue_page_small_sprite:
|
||||||
|
.byte 2,3
|
||||||
|
.byte $6A,$6A
|
||||||
|
.byte $66,$66
|
||||||
|
.byte $66,$66
|
||||||
|
|
||||||
|
red_page_small_sprite:
|
||||||
|
.byte 2,3
|
||||||
|
.byte $3A,$3A
|
||||||
|
.byte $33,$33
|
||||||
|
.byte $33,$33
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ BTC_H = $6F
|
|||||||
; the following values
|
; the following values
|
||||||
|
|
||||||
RED_PAGES_TAKEN = $80
|
RED_PAGES_TAKEN = $80
|
||||||
OCTOGON_PAGE = 1
|
OCTAGON_PAGE = 1
|
||||||
MECHE_PAGE = 2
|
MECHE_PAGE = 2
|
||||||
SELENA_PAGE = 4
|
SELENA_PAGE = 4
|
||||||
STONEY_PAGE = 8
|
STONEY_PAGE = 8
|
||||||
|