187 lines
3.3 KiB
NASM
187 lines
3.3 KiB
NASM
; Book of Secrets Journal Menu
|
|
; Journal States
|
|
JOURNAL_STATE_FIRST_PAGE = $0000
|
|
JOURNAL_STATE_MIDDLE_PAGE = $0001
|
|
JOURNAL_STATE_LAST_PAGE = $0002
|
|
|
|
Journal_Handler:
|
|
{
|
|
PHB : PHK : PLB
|
|
; Check for L button press
|
|
LDA.b $F6 : BIT.b #$20 : BEQ .check_right
|
|
REP #$30
|
|
JSR Journal_PrevPage
|
|
JSL Menu_DrawJournal
|
|
JSR Journal_DrawEntry
|
|
BRA .draw_page
|
|
|
|
.check_right
|
|
; Check for R button press
|
|
LDA.b $F6 : BIT.b #$10 : BEQ .draw_page
|
|
REP #$30
|
|
JSR Journal_NextPage
|
|
JSL Menu_DrawJournal
|
|
JSR Journal_DrawEntry
|
|
.draw_page
|
|
SEP #$30
|
|
PLB
|
|
RTL
|
|
}
|
|
|
|
Journal_PrevPage:
|
|
{
|
|
LDA.l JournalState
|
|
AND.w #$00FF : CMP.w #JOURNAL_STATE_FIRST_PAGE
|
|
BEQ .wrap_to_last
|
|
DEC A
|
|
STA.l JournalState
|
|
RTS
|
|
|
|
.wrap_to_last
|
|
LDA.w #JOURNAL_STATE_LAST_PAGE
|
|
STA.l JournalState
|
|
RTS
|
|
}
|
|
|
|
Journal_NextPage:
|
|
{
|
|
LDA.l JournalState
|
|
AND.w #$00FF : CMP.w #JOURNAL_STATE_LAST_PAGE
|
|
BEQ .wrap_to_first
|
|
INC A
|
|
STA.l JournalState
|
|
RTS
|
|
|
|
.wrap_to_first
|
|
LDA.w #JOURNAL_STATE_FIRST_PAGE
|
|
STA.l JournalState
|
|
RTS
|
|
}
|
|
|
|
Journal_DrawEntry:
|
|
{
|
|
REP #$30
|
|
LDX.w #$0000
|
|
LDY.w #$0000
|
|
.loop
|
|
LDA.w BookEntries, X : STA.w $1292, Y
|
|
INY #2 : INX #2
|
|
CPY.w #$001F : BCC .loop
|
|
SEP #$30
|
|
RTS
|
|
}
|
|
|
|
BookEntries:
|
|
dw "THIS_IS_A_TEST__"
|
|
dw "______________ "
|
|
dw "______________ "
|
|
|
|
Menu_DrawJournal:
|
|
{
|
|
PHB : PHK : PLB
|
|
LDA.l JournalState
|
|
ASL : TAX
|
|
JSR (.page_drawers, X)
|
|
SEP #$30
|
|
PLB
|
|
RTL
|
|
|
|
.page_drawers
|
|
dw Journal_DrawFirstPage
|
|
dw Journal_DrawMiddlePage
|
|
dw Journal_DrawLastPage
|
|
}
|
|
|
|
Journal_DrawFirstPage:
|
|
{
|
|
REP #$30
|
|
LDX.w #$FE
|
|
|
|
.loop
|
|
LDA.w .first_page_tilemap, X
|
|
STA.w $1000, X
|
|
LDA.w .first_page_tilemap+$100, X
|
|
STA.w $1100, X
|
|
LDA.w .first_page_tilemap+$200, X
|
|
STA.w $1200, X
|
|
LDA.w .first_page_tilemap+$300, X
|
|
STA.w $1300, X
|
|
LDA.w .first_page_tilemap+$400, X
|
|
STA.w $1400, X
|
|
LDA.w .first_page_tilemap+$500, X
|
|
STA.w $1500, X
|
|
LDA.w .first_page_tilemap+$600, X
|
|
STA.w $1600, X
|
|
LDA.w .first_page_tilemap+$700, X
|
|
STA.w $1700, X
|
|
DEX : DEX
|
|
BPL .loop
|
|
RTS
|
|
|
|
.first_page_tilemap
|
|
incbin "tilemaps/journal_begin.bin"
|
|
}
|
|
|
|
Journal_DrawMiddlePage:
|
|
{
|
|
REP #$30
|
|
LDX.w #$FE
|
|
|
|
.loop
|
|
LDA.w .middle_page_tilemap, X
|
|
STA.w $1000, X
|
|
LDA.w .middle_page_tilemap+$100, X
|
|
STA.w $1100, X
|
|
LDA.w .middle_page_tilemap+$200, X
|
|
STA.w $1200, X
|
|
LDA.w .middle_page_tilemap+$300, X
|
|
STA.w $1300, X
|
|
LDA.w .middle_page_tilemap+$400, X
|
|
STA.w $1400, X
|
|
LDA.w .middle_page_tilemap+$500, X
|
|
STA.w $1500, X
|
|
LDA.w .middle_page_tilemap+$600, X
|
|
STA.w $1600, X
|
|
LDA.w .middle_page_tilemap+$700, X
|
|
STA.w $1700, X
|
|
DEX : DEX
|
|
BPL .loop
|
|
|
|
RTS
|
|
|
|
.middle_page_tilemap
|
|
incbin "tilemaps/journal_mid.bin"
|
|
}
|
|
|
|
Journal_DrawLastPage:
|
|
{
|
|
REP #$30
|
|
LDX.w #$FE
|
|
|
|
.loop
|
|
LDA.w .last_page_tilemap, X
|
|
STA.w $1000, X
|
|
LDA.w .last_page_tilemap+$100, X
|
|
STA.w $1100, X
|
|
LDA.w .last_page_tilemap+$200, X
|
|
STA.w $1200, X
|
|
LDA.w .last_page_tilemap+$300, X
|
|
STA.w $1300, X
|
|
LDA.w .last_page_tilemap+$400, X
|
|
STA.w $1400, X
|
|
LDA.w .last_page_tilemap+$500, X
|
|
STA.w $1500, X
|
|
LDA.w .last_page_tilemap+$600, X
|
|
STA.w $1600, X
|
|
LDA.w .last_page_tilemap+$700, X
|
|
STA.w $1700, X
|
|
DEX : DEX
|
|
BPL .loop
|
|
|
|
RTS
|
|
|
|
.last_page_tilemap
|
|
incbin "tilemaps/journal_end.bin"
|
|
}
|
|
|