diff options
author | libjet <libj3t@gmail.com> | 2020-05-30 17:10:33 +0100 |
---|---|---|
committer | libjet <libj3t@gmail.com> | 2020-05-30 17:10:33 +0100 |
commit | 2d45f5d1726ba1b6022f8404c3c14de90f5321bc (patch) | |
tree | 041a967de1d7d83a0996e6876ff9f29351edc265 | |
parent | d4d4f779750868f70a9b4d696d4a4ce7677d917f (diff) |
Add engine/tilesets/timeofday_pals.asm
-rwxr-xr-x | engine/tilesets/timeofday_pals.asm | 317 | ||||
-rw-r--r-- | main.asm | 21 | ||||
-rw-r--r-- | wram.asm | 16 |
3 files changed, 325 insertions, 29 deletions
diff --git a/engine/tilesets/timeofday_pals.asm b/engine/tilesets/timeofday_pals.asm new file mode 100755 index 00000000..8a92484a --- /dev/null +++ b/engine/tilesets/timeofday_pals.asm @@ -0,0 +1,317 @@ +DummyPredef35: +DummyPredef36: + ret + +UpdateTimeOfDayPal:: + call UpdateTime + ld a, [wTimeOfDay] + ld [wCurTimeOfDay], a + call GetTimePalette + ld [wTimeOfDayPal], a + ret + +_TimeOfDayPals:: +; return carry if pals are changed + +; forced pals? + ld hl, wTimeOfDayPalFlags + bit 7, [hl] + jr nz, .dontchange + +; do we need to bother updating? + ld a, [wTimeOfDay] + ld hl, wCurTimeOfDay + cp [hl] + jr z, .dontchange + +; if so, the time of day has changed + ld a, [wTimeOfDay] + ld [wCurTimeOfDay], a + +; get palette id + call GetTimePalette + +; same palette as before? + ld hl, wTimeOfDayPal + cp [hl] + jr z, .dontchange + +; update palette id + ld [wTimeOfDayPal], a + +; update sgb pals + ld b, SCGB_MAPPALS + call GetSGBLayout + +; update palettes + call _UpdateTimePals + call DelayFrame + +; successful change + scf + ret + +.dontchange +; no change occurred + and a + ret + +_UpdateTimePals:: + ld c, 9 ; normal + call GetTimePalFade + call DmgToCgbTimePals + ret + +FadeInPalettes:: + ld c, 18 + call GetTimePalFade + ld b, 4 + call ConvertTimePalsDecHL + ret + +FadeOutPalettes:: + call FillWhiteBGColor + ld c, 9 + call GetTimePalFade + ld b, 4 + call ConvertTimePalsIncHL + ret + +FadeInQuickly: + ld c, 0 + call GetTimePalFade + ld b, 4 + call ConvertTimePalsIncHL + ret + +FadeBlackQuickly: + ld c, 9 + call GetTimePalFade + ld b, 4 + call ConvertTimePalsDecHL + ret + +FillWhiteBGColor: + ld hl, wBGPals1 + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld hl, wBGPals1 + 1 palettes + ld c, 6 +.loop + ld a, e + ld [hli], a + ld a, d + ld [hli], a +rept 6 + inc hl +endr + dec c + jr nz, .loop + ret + +ReplaceTimeOfDayPals:: + ld hl, .BrightnessLevels + ld a, [wMapTimeOfDay] + cp 4 ; Dark cave, needs Flash + jr z, .DarkCave + and 7 + add l + ld l, a + ld a, 0 + adc h + ld h, a + ld a, [hl] + ld [wTimeOfDayPalset], a + ret + +.DarkCave: + ld a, [wStatusFlags] + bit STATUSFLAGS_FLASH_F, a + jr nz, .UsedFlash + ld a, %11111111 ; 3, 3, 3, 3 + ld [wTimeOfDayPalset], a + ret + +.UsedFlash: + ld a, %10101010 ; 2, 2, 2, 2 + ld [wTimeOfDayPalset], a + ret + +.BrightnessLevels: + dc 3, 2, 1, 0 + dc 1, 1, 1, 1 + dc 2, 2, 2, 2 + dc 0, 0, 0, 0 + dc 3, 3, 3, 3 + dc 3, 2, 1, 0 + dc 3, 2, 1, 0 + dc 3, 2, 1, 0 + +GetTimePalette: + ld a, [wTimeOfDay] + ld e, a + ld d, 0 + ld hl, .TimePalettes + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp hl + +.TimePalettes: + dw .MorningPalette + dw .DayPalette + dw .NitePalette + dw .DarknessPalette + +.MorningPalette: + ld a, [wTimeOfDayPalset] + and %00000011 ; 0 + ret + +.DayPalette: + ld a, [wTimeOfDayPalset] + and %00001100 ; 1 + srl a + srl a + ret + +.NitePalette: + ld a, [wTimeOfDayPalset] + and %00110000 ; 2 + swap a + ret + +.DarknessPalette: + ld a, [wTimeOfDayPalset] + and %11000000 ; 3 + rlca + rlca + ret + +DmgToCgbTimePals: + push hl + push de + ld a, [hli] + call DmgToCgbBGPals + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + call DmgToCgbObjPals + pop de + pop hl + ret + +ConvertTimePalsIncHL: +.loop + call DmgToCgbTimePals + inc hl + inc hl + inc hl + ld c, 2 + call DelayFrames + dec b + jr nz, .loop + ret + +ConvertTimePalsDecHL: +.loop + call DmgToCgbTimePals + dec hl + dec hl + dec hl + ld c, 2 + call DelayFrames + dec b + jr nz, .loop + ret + +GetTimePalFade: +; check cgb + ldh a, [hCGB] + and a + jr nz, .cgb + +; else: dmg + +; index + ld a, [wTimeOfDayPal] + and %11 + +; get fade table + push bc + ld c, a + ld b, 0 + ld hl, .dmgfades + add hl, bc + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + pop bc + +; get place in fade table + ld b, 0 + add hl, bc + ret + +.cgb + ld hl, .cgbfade + ld b, 0 + add hl, bc + ret + +.dmgfades + dw .morn + dw .day + dw .nite + dw .darkness + +.morn + dc 3,3,3,3, 3,3,3,3, 3,3,3,3 + dc 3,3,3,2, 3,3,3,2, 3,3,3,2 + dc 3,3,2,1, 3,2,1,0, 3,2,1,0 + dc 3,2,1,0, 3,1,0,0, 3,1,0,0 + dc 2,1,0,0, 2,0,0,0, 2,0,0,0 + dc 1,0,0,0, 1,0,0,0, 1,0,0,0 + dc 0,0,0,0, 0,0,0,0, 0,0,0,0 + +.day + dc 3,3,3,3, 3,3,3,3, 3,3,3,3 + dc 3,3,3,2, 3,3,3,2, 3,3,3,2 + dc 3,3,2,1, 3,2,1,0, 3,2,1,0 + dc 3,2,1,0, 3,1,0,0, 3,1,0,0 + dc 2,1,0,0, 2,0,0,0, 2,0,0,0 + dc 1,0,0,0, 1,0,0,0, 1,0,0,0 + dc 0,0,0,0, 0,0,0,0, 0,0,0,0 + +.nite + dc 3,3,3,3, 3,3,3,3, 3,3,3,3 + dc 3,3,3,2, 3,3,3,2, 3,3,3,2 + dc 3,3,2,1, 3,2,1,0, 3,2,1,0 + dc 3,2,2,1, 3,1,0,0, 3,1,0,0 + dc 2,1,0,0, 2,0,0,0, 2,0,0,0 + dc 1,0,0,0, 1,0,0,0, 1,0,0,0 + dc 0,0,0,0, 0,0,0,0, 0,0,0,0 + +.darkness + dc 3,3,3,3, 3,3,3,3, 3,3,3,3 + dc 3,3,3,2, 3,3,3,2, 3,3,3,3 + dc 3,3,3,2, 3,2,1,0, 3,3,3,3 + dc 3,3,3,1, 3,1,0,0, 3,3,3,3 + dc 3,3,3,1, 2,0,0,0, 3,3,3,3 + dc 0,0,0,0, 1,0,0,0, 0,0,0,0 + dc 0,0,0,0, 0,0,0,0, 0,0,0,0 + +.cgbfade + dc 3,3,3,3, 3,3,3,3, 3,3,3,3 + dc 3,3,3,2, 3,3,3,2, 3,3,3,2 + dc 3,3,2,1, 3,3,2,1, 3,3,2,1 + dc 3,2,1,0, 3,2,1,0, 3,2,1,0 + dc 2,1,0,0, 2,1,0,0, 2,1,0,0 + dc 1,0,0,0, 1,0,0,0, 1,0,0,0 + dc 0,0,0,0, 0,0,0,0, 0,0,0,0 @@ -233,27 +233,8 @@ INCLUDE "engine/menus/savemenu_copytilemapatonce.asm" INCLUDE "engine/phone/phonering_copytilemapatonce.asm" INCLUDE "engine/rtc/reset_password.asm" INCLUDE "engine/menus/delete_save.asm" +INCLUDE "engine/tilesets/timeofday_pals.asm" -DummyPredef35:: -DummyPredef36:: - ret - -UpdateTimeOfDayPal:: - dr $8c356, $8c366 -_TimeOfDayPals:: - dr $8c366, $8c397 -_UpdateTimePals:: - dr $8c397, $8c3a0 -FadeInPalettes:: - dr $8c3a0, $8c3ab -FadeOutPalettes:: - dr $8c3ab, $8c3b9 -FadeInQuickly:: - dr $8c3b9, $8c3c4 -FadeBlackQuickly:: - dr $8c3c4, $8c3e9 -ReplaceTimeOfDayPals:: - dr $8c3e9, $8c513 DoBattleTransition:: dr $8c513, $8ca5e PlayWhirlpoolSound:: @@ -2100,17 +2100,15 @@ wObjectMasks:: ds NUM_OBJECTS ; d545 wVariableSprites:: ds $100 - SPRITE_VARS ; d555 wEnteredMapFromContinue:: db ; d565 -wd566:: ds 1 ; d566 -wd567:: ds 1 ; d567 + ds 2 wTimeOfDayPal:: db -wd569:: ds 1 ; d569 -wd56a:: ds 1 ; d56a -wd56b:: ds 1 ; d56b -wd56c:: ds 1 ; d56c -wd56d:: ds 1 ; d56d + ds 4 +wTimeOfDayPalFlags:: db ; d56d wTimeOfDayPalset:: db ; d56e -wd56f:: ds 1 ; d56f -wd570:: ds 1 ; d570 +wCurTimeOfDay:: db ; d56f + + ds 1 + wPlayerData2End:: wPlayerData3:: wStatusFlags:: |