Create a fourth time of day (#2)

This commit is contained in:
xCrystal
2023-07-31 12:27:53 +02:00
parent 05448d7a7e
commit 9df4cf6946
30 changed files with 270 additions and 123 deletions

View File

@@ -637,9 +637,8 @@ StartTrainerBattle_LoadPokeBallGraphics:
jr nz, .tile_loop
ld hl, .pals
ld a, [wTimeOfDayPal]
maskbits NUM_DAYTIMES
cp DARKNESS_F
ld a, [wTimeOfDayPalset]
cp DARKNESS_PALSET
jr nz, .not_dark
ld hl, .darkpals
.not_dark

View File

@@ -73,7 +73,7 @@ PlayBattleMusic:
ld de, MUSIC_JOHTO_WILD_BATTLE
ld a, [wTimeOfDay]
cp NITE_F
jr nz, .done
jr c, .done ; not NITE_F or EVE_F
ld de, MUSIC_JOHTO_WILD_BATTLE_NIGHT
jr .done

View File

@@ -15,5 +15,5 @@ CheckTime::
db MORN_F, MORN
db DAY_F, DAY
db NITE_F, NITE
db NITE_F, NITE
db EVE_F, EVE
db -1

View File

@@ -181,11 +181,10 @@ GetCaughtLevel:
GetCaughtTime:
ld a, [wSeerCaughtData]
and CAUGHT_TIME_MASK
jr z, .none
rlca
rlca
dec a
maskbits NUM_DAYTIMES
ld hl, .times
call GetNthString
ld d, h
@@ -195,15 +194,11 @@ GetCaughtTime:
and a
ret
.none
ld de, wSeerTimeOfDay
call UnknownCaughtData
ret
.times
db "Morning@"
db "Day@"
db "Night@"
db "Evening@"
UnknownCaughtData:
ld hl, .unknown

View File

@@ -63,6 +63,8 @@ PokecenterNurseScript:
iftrue .morn
checktime DAY
iftrue .day
checktime EVE
iftrue .eve
checktime NITE
iftrue .nite
sjump .ok
@@ -77,6 +79,11 @@ PokecenterNurseScript:
promptbutton
sjump .ok
.eve
farwritetext NurseEveText
promptbutton
sjump .ok
.nite
farwritetext NurseNiteText
promptbutton

View File

@@ -628,7 +628,7 @@ INCLUDE "data/pokemon/palettes.asm"
INCLUDE "data/trainers/palettes.asm"
LoadMapPals:
farcall LoadSpecialMapPalette
farcall LoadSpecialMapPalette ; also handles darkness palettes
jr c, .got_pals
; Which palette group is based on whether we're outside or inside
@@ -688,6 +688,20 @@ LoadMapPals:
ldh [rSVBK], a
.got_pals
; BG pals done. Now do OBJ pals.
call GetMapTimeOfDay
bit IN_DARKNESS_F, a
jr z, .not_darkness
ld a, [wStatusFlags]
bit STATUSFLAGS_FLASH_F, a
jr nz, .not_darkness
ld a, BANK(wOBPals1)
ld de, wOBPals1
ld hl, NPCDarknessPalette
ld bc, 8 palettes
jp FarCopyWRAM
.not_darkness
ld a, [wTimeOfDayPal]
maskbits NUM_DAYTIMES
ld bc, 8 palettes
@@ -705,21 +719,21 @@ LoadMapPals:
ret nz
.outside
ld a, [wMapGroup]
ld l, a
ld h, 0
add hl, hl
add hl, hl
add hl, hl
ld de, RoofPals
add a
add a
ld e, a
ld d, 0
ld hl, RoofPals
rept NUM_DAYTIMES
add hl, de
endr
ld a, [wTimeOfDayPal]
maskbits NUM_DAYTIMES
cp NITE_F
jr c, .morn_day
rept 4
inc hl
endr
.morn_day
add a
add a
ld e, a
ld d, 0
add hl, de
ld de, wBGPals1 palette PAL_BG_ROOF color 1
ld bc, 4
ld a, BANK(wBGPals1)
@@ -737,11 +751,14 @@ INCLUDE "gfx/stats/party_menu_bg.pal"
TilesetBGPalette:
INCLUDE "gfx/tilesets/bg_tiles.pal"
NPCDarknessPalette:
INCLUDE "gfx/overworld/npc_sprites_darkness.pal"
MapObjectPals::
INCLUDE "gfx/overworld/npc_sprites.pal"
RoofPals:
table_width PAL_COLOR_SIZE * 2 * 2, RoofPals
table_width PAL_COLOR_SIZE * 4 * 2, RoofPals
INCLUDE "gfx/tilesets/roofs.pal"
assert_table_length NUM_MAP_GROUPS + 1

View File

@@ -204,7 +204,7 @@ MainMenu_PrintCurrentTimeAndDay:
db "MORN@"
db "DAY@"
db "NITE@"
db "NITE@"
db "EVE@"
ClearTilemapEtc:
xor a

View File

@@ -5,6 +5,7 @@ LoadWildMonData:
xor a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hl], a
jr .done_copy
@@ -12,7 +13,7 @@ LoadWildMonData:
inc hl
inc hl
ld de, wMornEncounterRate
ld bc, 3
ld bc, NUM_DAYTIMES
call CopyBytes
.done_copy
call _WaterWildmonLookup

View File

@@ -231,12 +231,10 @@ OaksPKMNTalk4:
rept 4
inc hl
endr
; Generate a number, either 0, 1, or 2, to choose a time of day.
; Generate a number, either 0, 1, 2, or 3 to choose a time of day.
.loop2
call Random
maskbits NUM_DAYTIMES
cp DARKNESS_F
jr z, .loop2
ld bc, 2 * NUM_GRASSMON
call AddNTimes

View File

@@ -166,6 +166,7 @@ SetBoxmonOrEggmonCaughtData:
inc a
rrca
rrca
and CAUGHT_TIME_MASK ; caught in eve becomes $0
ld b, a
ld a, [wCurPartyLevel]
or b

View File

@@ -129,16 +129,16 @@ EvolveAfterBattle_MasterLoop:
cp TR_MORNDAY
jr z, .happiness_daylight
; TR_NITE
; TR_EVENITE
ld a, [wTimeOfDay]
cp NITE_F
jp nz, .dont_evolve_3
jp c, .dont_evolve_3 ; MORN_F or DAY_F
jr .proceed
.happiness_daylight
ld a, [wTimeOfDay]
cp NITE_F
jp z, .dont_evolve_3
jp nc, .dont_evolve_3 ; NITE_F or EVE_F
jr .proceed
.trade

View File

@@ -1,4 +1,12 @@
LoadSpecialMapPalette:
call GetMapTimeOfDay
bit IN_DARKNESS_F, a
jr z, .not_dark
ld a, [wStatusFlags]
bit STATUSFLAGS_FLASH_F, a
jr z, .darkness
.not_dark
ld a, [wMapTileset]
cp TILESET_POKECOM_CENTER
jr z, .pokecom_2f
@@ -14,6 +22,11 @@ LoadSpecialMapPalette:
jr z, .mansion_mobile
jr .do_nothing
.darkness
call LoadDarknessPalette
scf
ret
.pokecom_2f
call LoadPokeComPalette
scf
@@ -52,6 +65,16 @@ LoadSpecialMapPalette:
and a
ret
LoadDarknessPalette:
ld a, BANK(wBGPals1)
ld de, wBGPals1
ld hl, DarknessPalette
ld bc, 8 palettes
jp FarCopyWRAM
DarknessPalette:
INCLUDE "gfx/tilesets/bg_tiles_darkness.pal"
LoadPokeComPalette:
ld a, BANK(wBGPals1)
ld de, wBGPals1

View File

@@ -185,10 +185,18 @@ endr
ret
ReplaceTimeOfDayPals:
ld a, [wMapTimeOfDay]
bit IN_DARKNESS_F, a
jr z, .not_dark
ld a, [wStatusFlags]
bit STATUSFLAGS_FLASH_F, a
jr nz, .not_dark
ld a, DARKNESS_PALSET
jr .done
.not_dark:
ld hl, .BrightnessLevels
ld a, [wMapTimeOfDay]
cp PALETTE_DARK
jr z, .NeedsFlash
maskbits NUM_MAP_PALETTES
add l
ld l, a
@@ -196,33 +204,21 @@ ReplaceTimeOfDayPals:
adc h
ld h, a
ld a, [hl]
ld [wTimeOfDayPalset], a
ret
.NeedsFlash:
ld a, [wStatusFlags]
bit STATUSFLAGS_FLASH_F, a
jr nz, .UsedFlash
ld a, DARKNESS_PALSET
ld [wTimeOfDayPalset], a
ret
.UsedFlash:
ld a, (NITE_F << 6) | (NITE_F << 4) | (NITE_F << 2) | NITE_F
.done
ld [wTimeOfDayPalset], a
ret
.BrightnessLevels:
; actual palettes used when time is
; DARKNESS_F, NITE_F, DAY_F, MORN_F
dc DARKNESS_F, NITE_F, DAY_F, MORN_F ; PALETTE_AUTO
; EVE_F, NITE_F, DAY_F, MORN_F
dc EVE_F, NITE_F, DAY_F, MORN_F ; PALETTE_AUTO
dc DAY_F, DAY_F, DAY_F, DAY_F ; PALETTE_DAY
dc NITE_F, NITE_F, NITE_F, NITE_F ; PALETTE_NITE
dc MORN_F, MORN_F, MORN_F, MORN_F ; PALETTE_MORN
dc DARKNESS_F, DARKNESS_F, DARKNESS_F, DARKNESS_F ; PALETTE_DARK
dc DARKNESS_F, NITE_F, DAY_F, MORN_F
dc DARKNESS_F, NITE_F, DAY_F, MORN_F
dc DARKNESS_F, NITE_F, DAY_F, MORN_F
dc EVE_F, EVE_F, EVE_F, EVE_F ; PALETTE_EVE
dc EVE_F, NITE_F, DAY_F, MORN_F
dc EVE_F, NITE_F, DAY_F, MORN_F
dc EVE_F, NITE_F, DAY_F, MORN_F
GetTimePalette:
jumptable .TimePalettes, wTimeOfDay
@@ -231,7 +227,7 @@ GetTimePalette:
dw .MorningPalette ; MORN_F
dw .DayPalette ; DAY_F
dw .NitePalette ; NITE_F
dw .DarknessPalette ; DARKNESS_F
dw .EveningPalette ; EVE_F
.MorningPalette:
ld a, [wTimeOfDayPalset]
@@ -251,7 +247,7 @@ GetTimePalette:
swap a
ret
.DarknessPalette:
.EveningPalette:
ld a, [wTimeOfDayPalset]
and %11000000
rlca