Add CheckForDailyQuests for magic bean day cycles

This commit is contained in:
scawful
2024-12-15 17:56:11 -05:00
parent febb2adef8
commit a428d736f5

View File

@@ -168,8 +168,10 @@ RunClock:
.reset_hours
LDA #$00 : STA $7EE000
JSR CheckForDailyQuests
LDA #$00 : STA $7EE000
.update_palette
; check indoors/outdoors
LDA $1B : BEQ .outdoors1
RTS
@@ -213,6 +215,23 @@ CheckForSongOfTime:
RTS
}
CheckForDailyQuests:
{
LDA.l MagicBeanProg : AND.b #$7F : BEQ .bean_done
AND.b #$08 : BNE .not_first
LDA.b #$08 : JMP +
.not_first
AND.b #$10 : BNE .not_second
LDA.b #$10 : JMP +
.not_second
AND.b #$20 : BNE .bean_done
LDA.b #$20
+
ORA.l MagicBeanProg : STA.l MagicBeanProg
.bean_done
RTS
}
pushpc
; =========================================================
@@ -258,39 +277,36 @@ org $1BEF3D : JSL LoadDayNightPaletteEffect
org $1BEF61 : JSL LoadDayNightPaletteEffect
; Palettes_LoadMultiple_Arbitrary.next_color
org $1BEF84
JSL LoadDayNightPaletteEffect
org $1BEF84 : JSL LoadDayNightPaletteEffect
pullpc
LoadDayNightPaletteEffect:
{
STA.l !pal_color
CPX #$0041 : BPL .title_check
STA PaletteBuffer_HUD,X
STA.l !pal_color : CPX #$0041 : BPL .title_check
STA.l PaletteBuffer_HUD, X
RTL
.title_check
; title or file select screen ?
LDA $10 : AND #$00FF : CMP #$0002 : BCS .outin_check
LDA.l !pal_color : STA PaletteBuffer_HUD,X
LDA.l !pal_color
STA.l PaletteBuffer_HUD, X
RTL
.outin_check
LDA.b $10 : AND #$00FF
CMP.w #$0005 : BCC .restorecode
LDA.b $10 : AND #$00FF : CMP.w #$0005 : BCC .restorecode
CMP.w #$0012 : BCS .restorecode
BRA .overworld
.restorecode
LDA.l !pal_color : STA.l PaletteBuffer_HUD, X
LDA.l !pal_color
STA.l PaletteBuffer_HUD, X
RTL
.overworld
.overworld
LDA $1B : AND #$00FF : BEQ .outdoors2
LDA.l !pal_color
STA PaletteBuffer_HUD,X
STA.l PaletteBuffer_HUD,X
RTL
.outdoors2
PHX
@@ -309,7 +325,7 @@ ColorSubEffect:
; Subtract amount to blue field based on a table
LDA.l !pal_color : AND #$7C00 : STA !blue_value
SEC : SBC.l blue_table, X : STA !temp_value
SEC : SBC.l .blue, X : STA !temp_value
; mask out everything except the blue bits
AND #$7C00 : CMP !temp_value : BEQ .no_blue_sign_change ; overflow ?
@@ -319,7 +335,7 @@ ColorSubEffect:
; Subtract amount to blue field based on a table
LDA !pal_color : AND #$03E0 : STA !green_value
SEC : SBC.l green_table, X : STA.l !temp_value
SEC : SBC.l .green, X : STA.l !temp_value
; Mask out everything except the green bits
AND #$03E0 : CMP !temp_value : BEQ .no_green_sign_change ; overflow ?
@@ -329,7 +345,7 @@ ColorSubEffect:
; substract amount to red field based on a table
LDA.l !pal_color : AND #$001F : STA.l !red_value
SEC : SBC.l red_table, X : STA.l !temp_value
SEC : SBC.l .red, X : STA.l !temp_value
; mask out everything except the red bits
AND #$001F : CMP !temp_value : BEQ .no_red_sign_change ; overflow ?
@@ -339,14 +355,11 @@ ColorSubEffect:
LDA.l !blue_value : ORA.l !green_value : ORA.l !red_value
RTL
}
; =========================================================
; color_sub_tables : 24 * 2 bytes each = 48 bytes
; (2 bytes = 1 color sub for each hour)
blue_table:
.blue:
dw $1000, $1000, $1000, $1000
dw $1000, $1000, $1000, $0800
dw $0000, $0000, $0000, $0000
@@ -354,7 +367,7 @@ blue_table:
dw $0000, $0400, $0800, $0800
dw $0800, $1000, $1000, $1000
green_table:
.green:
dw $0100, $0100, $0100, $0100
dw $0100, $00C0, $0080, $0040
dw $0000, $0000, $0000, $0000
@@ -362,19 +375,19 @@ green_table:
dw $0000, $0020, $0040, $0080
dw $00C0, $0100, $0100, $0100
red_table:
.red:
dw $0008, $0008, $0008, $0008
dw $0008, $0006, $0004, $0002
dw $0000, $0000, $0000, $0000
dw $0000, $0000, $0000, $0000
dw $0000, $0000, $0000, $0002
dw $0004, $0006, $0008, $0008
}
BackgroundFix:
{
BEQ .no_effect ;BRAnch if A=#$0000 (transparent bg)
JSL ColorSubEffect
.no_effect:
STA.l PaletteCgram_HUD
STA.l PaletteBuffer_HUD
@@ -612,14 +625,11 @@ org $1BEE2D
; org $0ABA5A
; TODO: Handle overworld map palette for flashing icons
org $0ED956
JSL FixDungeonMapColors
org $0ED956 : JSL FixDungeonMapColors
org $0AEFA6
JSL RestoreTimeForDungeonMap
org $0AEFA6 : JSL RestoreTimeForDungeonMap
org $0ED745
JSL FixShockPalette
org $0ED745 : JSL FixShockPalette
org $09F604
GameOver_SaveAndQuit: