Make map environments more granular and make all map palettes except darkness depend on map environment (#7)

This commit is contained in:
xCrystal
2023-08-04 18:45:50 +02:00
parent 6e3c5fd008
commit 55a38ff2de
28 changed files with 157 additions and 531 deletions

View File

@@ -215,12 +215,8 @@ StartTrainerBattle_DetermineWhichAnimation:
set TRANS_STRONGER_F, e
.not_stronger
ld a, [wEnvironment]
cp CAVE
jr z, .cave
cp ENVIRONMENT_5
jr z, .cave
cp DUNGEON
jr z, .cave
cp INDOOR_ENVIRONMENT
jr nc, .cave
set TRANS_NO_CAVE_F, e
.cave
ld hl, .StartingPoints

View File

@@ -17,7 +17,6 @@ BlindingFlash:
farcall UpdateTimeOfDayPal
ld b, CGB_MAPPALS
call GetCGBLayout
farcall LoadOW_BGPal7
farcall FadeInPalettes
ret

View File

@@ -404,7 +404,7 @@ MagnetTrain_Jumptable_FirstRunThrough:
ld a, [wTimeOfDay]
maskbits NUM_DAYTIMES
ld [wTimeOfDayPal], a
ld a, TOWN
ld a, OUTDOOR_GRASSY
ld [wEnvironment], a
ld b, CGB_MAPPALS
call GetCGBLayout

View File

@@ -762,9 +762,9 @@ EscapeRopeOrDig:
.CheckCanDig:
call GetMapEnvironment
cp CAVE
cp INDOOR_CAVE
jr z, .incave
cp DUNGEON
cp INDOOR_ICE_CAVE
jr z, .incave
.fail
ld a, $2
@@ -1677,13 +1677,8 @@ BikeFunction:
.CheckEnvironment:
call GetMapEnvironment
call CheckOutdoorMap
jr z, .ok
cp CAVE
jr z, .ok
cp GATE
jr z, .ok
jr .nope
cp INDOOR_BUILDING
jr z, .nope
.ok
call GetPlayerTile

View File

@@ -30,7 +30,7 @@ SweetScentNothing:
end
SweetScentEncounter:
farcall CanUseSweetScent
farcall CanEncounterWildMonInThisTile
jr nc, .no_battle
ld hl, wStatusFlags2
bit STATUSFLAGS2_BUG_CONTEST_TIMER_F, [hl]

View File

@@ -628,12 +628,12 @@ INCLUDE "data/pokemon/palettes.asm"
INCLUDE "data/trainers/palettes.asm"
LoadMapPals:
farcall LoadSpecialMapPalette ; also handles darkness palettes
call LoadDarknessPaletteIfDark ; also handles darkness palettes
jr c, .got_pals
; Which palette group is based on whether we're outside or inside
ld a, [wEnvironment]
and 7
maskbits NUM_ENVIRONMENTS + 1
ld e, a
ld d, 0
ld hl, EnvironmentColorsPointers
@@ -713,9 +713,8 @@ LoadMapPals:
call FarCopyWRAM
ld a, [wEnvironment]
cp TOWN
jr z, .outside
cp ROUTE
cp INDOOR_ENVIRONMENT
jr c, .outside
ret nz
.outside
ld a, [wMapGroup]
@@ -740,6 +739,30 @@ endr
call FarCopyWRAM
ret
LoadDarknessPaletteIfDark:
call GetMapTimeOfDay
bit IN_DARKNESS_F, a
jr z, .do_nothing
ld a, [wStatusFlags]
bit STATUSFLAGS_FLASH_F, a
jr nz, .do_nothing
.darkness
call LoadDarknessPalette
scf
ret
.do_nothing
and a
ret
LoadDarknessPalette:
ld a, BANK(wBGPals1)
ld de, wBGPals1
ld hl, DarknessPalette
ld bc, 8 palettes
jp FarCopyWRAM
INCLUDE "data/maps/environment_colors.asm"
PartyMenuBGMobilePalette:
@@ -748,6 +771,9 @@ INCLUDE "gfx/stats/party_menu_bg_mobile.pal"
PartyMenuBGPalette:
INCLUDE "gfx/stats/party_menu_bg.pal"
DarknessPalette:
INCLUDE "gfx/tilesets/bg_tiles_darkness.pal"
TilesetBGPalette:
INCLUDE "gfx/tilesets/bg_tiles.pal"

View File

@@ -1,16 +1,3 @@
LoadOW_BGPal7::
ld hl, Palette_TextBG7
ld de, wBGPals1 palette PAL_BG_TEXT
ld bc, 1 palettes
ld a, BANK(wBGPals1)
call FarCopyWRAM
ret
Palette_TextBG7:
INCLUDE "gfx/font/bg_text.pal"
INCLUDE "engine/tilesets/tileset_palettes.asm"
_InitMG_Mobile_LinkTradePalMap:
hlcoord 0, 0, wAttrmap
lb bc, 16, 2

View File

@@ -1109,7 +1109,7 @@ RandomEncounter::
call CheckWildEncounterCooldown
jr c, .nope
call CanUseSweetScent
call CanEncounterWildMonInThisTile
jr nc, .nope
ld hl, wStatusFlags2
bit STATUSFLAGS2_BUG_CONTEST_TIMER_F, [hl]
@@ -1149,15 +1149,13 @@ WildBattleScript:
reloadmapafterbattle
end
CanUseSweetScent::
CanEncounterWildMonInThisTile::
ld hl, wStatusFlags
bit STATUSFLAGS_NO_WILD_ENCOUNTERS_F, [hl]
jr nz, .no
ld a, [wEnvironment]
cp CAVE
jr z, .ice_check
cp DUNGEON
jr z, .ice_check
cp INDOOR_ENVIRONMENT
jr nc, .ice_check
farcall CheckGrassCollision
jr nc, .no

View File

@@ -31,7 +31,6 @@ ReanchorBGMap_NoOAMUpdate::
ld a, HIGH(vBGMap1)
call .LoadBGMapAddrIntoHRAM
call _OpenAndCloseMenu_HDMATransferTilemapAndAttrmap
farcall LoadOW_BGPal7
farcall ApplyPals
ld a, TRUE
ldh [hCGBPalUpdate], a

View File

@@ -130,11 +130,7 @@ CheckUpdatePlayerSprite:
cp PLAYER_SURF_PIKA
jr z, .surfing
call GetMapEnvironment
cp INDOOR
jr z, .no_biking
cp ENVIRONMENT_5
jr z, .no_biking
cp DUNGEON
cp INDOOR_BUILDING
jr z, .no_biking
jr .nope
.no_biking

View File

@@ -236,6 +236,8 @@ ApplyCleanseTagEffectOnEncounterRate::
ld hl, wPartyMon1Item
ld de, PARTYMON_STRUCT_LENGTH
ld a, [wPartyCount]
and a
ret z
ld c, a
.loop
ld a, [hl]

View File

@@ -285,10 +285,8 @@ CheckSpecialPhoneCall::
SpecialCallOnlyWhenOutside:
ld a, [wEnvironment]
cp TOWN
jr z, .outside
cp ROUTE
jr z, .outside
cp INDOOR_ENVIRONMENT
jr c, .outside
xor a
ret

View File

@@ -1,160 +0,0 @@
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
cp TILESET_BATTLE_TOWER_INSIDE
jr z, .battle_tower_inside
cp TILESET_ICE_PATH
jr z, .ice_path
cp TILESET_HOUSE
jr z, .house
cp TILESET_RADIO_TOWER
jr z, .radio_tower
cp TILESET_MANSION
jr z, .mansion_mobile
jr .do_nothing
.darkness
call LoadDarknessPalette
scf
ret
.pokecom_2f
call LoadPokeComPalette
scf
ret
.battle_tower_inside
call LoadBattleTowerInsidePalette
scf
ret
.ice_path
ld a, [wEnvironment]
and $7
cp INDOOR ; Hall of Fame
jr z, .do_nothing
call LoadIcePathPalette
scf
ret
.house
call LoadHousePalette
scf
ret
.radio_tower
call LoadRadioTowerPalette
scf
ret
.mansion_mobile
call LoadMansionPalette
scf
ret
.do_nothing
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
ld hl, PokeComPalette
ld bc, 8 palettes
call FarCopyWRAM
ret
PokeComPalette:
INCLUDE "gfx/tilesets/pokecom_center.pal"
LoadBattleTowerInsidePalette:
ld a, BANK(wBGPals1)
ld de, wBGPals1
ld hl, BattleTowerInsidePalette
ld bc, 8 palettes
call FarCopyWRAM
ret
BattleTowerInsidePalette:
INCLUDE "gfx/tilesets/battle_tower_inside.pal"
LoadIcePathPalette:
ld a, BANK(wBGPals1)
ld de, wBGPals1
ld hl, IcePathPalette
ld bc, 8 palettes
call FarCopyWRAM
ret
IcePathPalette:
INCLUDE "gfx/tilesets/ice_path.pal"
LoadHousePalette:
ld a, BANK(wBGPals1)
ld de, wBGPals1
ld hl, HousePalette
ld bc, 8 palettes
call FarCopyWRAM
ret
HousePalette:
INCLUDE "gfx/tilesets/house.pal"
LoadRadioTowerPalette:
ld a, BANK(wBGPals1)
ld de, wBGPals1
ld hl, RadioTowerPalette
ld bc, 8 palettes
call FarCopyWRAM
ret
RadioTowerPalette:
INCLUDE "gfx/tilesets/radio_tower.pal"
MansionPalette1:
INCLUDE "gfx/tilesets/mansion_1.pal"
LoadMansionPalette:
ld a, BANK(wBGPals1)
ld de, wBGPals1
ld hl, MansionPalette1
ld bc, 8 palettes
call FarCopyWRAM
ld a, BANK(wBGPals1)
ld de, wBGPals1 palette PAL_BG_YELLOW
ld hl, MansionPalette2
ld bc, 1 palettes
call FarCopyWRAM
ld a, BANK(wBGPals1)
ld de, wBGPals1 palette PAL_BG_WATER
ld hl, MansionPalette1 palette 6
ld bc, 1 palettes
call FarCopyWRAM
ld a, BANK(wBGPals1)
ld de, wBGPals1 palette PAL_BG_ROOF
ld hl, MansionPalette1 palette 8
ld bc, 1 palettes
call FarCopyWRAM
ret
MansionPalette2:
INCLUDE "gfx/tilesets/mansion_2.pal"