mirror of
https://github.com/thornAvery/jep-hack.git
synced 2025-09-17 02:30:50 +12:00

Some maps are broken up or edited to allow for seamless transitions instead of needing several warps. (Area 1 is split vertically, Area 2 needs a horizontal split. The connection between area 1 and 2 also will have to be shifted up from where it is in RBY to prevent border blocks showing up where they shouldn't.)
597 lines
10 KiB
NASM
597 lines
10 KiB
NASM
LoadSGBLayout:
|
|
call CheckCGB
|
|
jp nz, LoadSGBLayoutCGB
|
|
|
|
ld a, b
|
|
cp SCGB_DEFAULT
|
|
jr nz, .not_default
|
|
ld a, [wDefaultSGBLayout]
|
|
.not_default
|
|
cp SCGB_PARTY_MENU_HP_BARS
|
|
jp z, SGB_ApplyPartyMenuHPPals
|
|
ld l, a
|
|
ld h, 0
|
|
add hl, hl
|
|
ld de, SGBLayoutJumptable
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld de, _LoadSGBLayout_ReturnFromJumptable
|
|
push de
|
|
jp hl
|
|
|
|
SGBLayoutJumptable:
|
|
table_width 2, SGBLayoutJumptable
|
|
dw .SGB_BattleGrayscale
|
|
dw .SGB_BattleColors
|
|
dw .SGB_PokegearPals
|
|
dw .SGB_StatsScreenHPPals
|
|
dw .SGB_Pokedex
|
|
dw .SGB_SlotMachine
|
|
dw .SGB_BetaTitleScreen
|
|
dw .SGB_GSIntro
|
|
dw .SGB_Diploma
|
|
dw .SGB_MapPals
|
|
dw .SGB_PartyMenu
|
|
dw .SGB_Evolution
|
|
dw .SGB_GSTitleScreen
|
|
dw .SGB_Unused0D
|
|
dw .SGB_MoveList
|
|
dw .SGB_BetaPikachuMinigame
|
|
dw .SGB_PokedexSearchOption
|
|
dw .SGB_BetaPoker
|
|
dw .SGB_Pokepic
|
|
dw .SGB_MagnetTrain
|
|
dw .SGB_PackPals
|
|
dw .SGB_TrainerCard
|
|
dw .SGB_PokedexUnownMode
|
|
dw .SGB_BillsPC
|
|
dw .SGB_UnownPuzzle
|
|
dw .SGB_GamefreakLogo
|
|
dw .SGB_PlayerOrMonFrontpicPals
|
|
dw .SGB_TradeTube
|
|
dw .SGB_TrainerOrMonFrontpicPals
|
|
dw .SGB_MysteryGift
|
|
dw .SGB_Unused1E
|
|
assert_table_length NUM_SCGB_LAYOUTS
|
|
|
|
.SGB_BattleGrayscale:
|
|
ld hl, PalPacket_BattleGrayscale
|
|
ld de, BlkPacket_Battle
|
|
ret
|
|
|
|
.SGB_BattleColors:
|
|
ld hl, BlkPacket_Battle
|
|
call PushSGBPals
|
|
|
|
ld hl, PalPacket_Pal01
|
|
ld de, wSGBPals
|
|
ld bc, PALPACKET_LENGTH
|
|
call CopyBytes
|
|
|
|
ld a, [wPlayerHPPal]
|
|
ld l, a
|
|
ld h, 0
|
|
add hl, hl
|
|
add hl, hl
|
|
ld de, HPBarPals
|
|
add hl, de
|
|
|
|
ld a, [hli]
|
|
ld [wSGBPals + 3], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 4], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 5], a
|
|
ld a, [hl]
|
|
ld [wSGBPals + 6], a
|
|
|
|
ld a, [wEnemyHPPal]
|
|
ld l, a
|
|
ld h, 0
|
|
add hl, hl
|
|
add hl, hl
|
|
|
|
ld de, HPBarPals
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld [wSGBPals + 9], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 10], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 11], a
|
|
ld a, [hl]
|
|
ld [wSGBPals + 12], a
|
|
|
|
ld hl, PalPacket_Pal23
|
|
ld de, wSGBPals + PALPACKET_LENGTH
|
|
ld bc, PALPACKET_LENGTH
|
|
call CopyBytes
|
|
|
|
call GetBattlemonBackpicPalettePointer
|
|
|
|
ld a, [hli]
|
|
ld [wSGBPals + 19], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 20], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 21], a
|
|
ld a, [hl]
|
|
ld [wSGBPals + 22], a
|
|
call GetEnemyFrontpicPalettePointer
|
|
ld a, [hli]
|
|
ld [wSGBPals + 25], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 26], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 27], a
|
|
ld a, [hl]
|
|
ld [wSGBPals + 28], a
|
|
|
|
ld hl, wSGBPals
|
|
ld de, wSGBPals + PALPACKET_LENGTH
|
|
ld a, SCGB_BATTLE_COLORS
|
|
ld [wDefaultSGBLayout], a
|
|
ret
|
|
|
|
.SGB_MoveList:
|
|
ld hl, PalPacket_AllPal0
|
|
ld de, wSGBPals
|
|
ld bc, PALPACKET_LENGTH
|
|
call CopyBytes
|
|
|
|
ld hl, wSGBPals + 1
|
|
ld [hl], $10
|
|
inc hl
|
|
inc hl
|
|
|
|
ld a, [wPlayerHPPal]
|
|
add PREDEFPAL_HP_GREEN
|
|
ld [hl], a
|
|
ld hl, wSGBPals
|
|
ld de, BlkPacket_MoveList
|
|
ret
|
|
|
|
.SGB_PokegearPals:
|
|
ld hl, PalPacket_Pokegear
|
|
ld de, BlkPacket_AllPal0
|
|
ret
|
|
|
|
.SGB_StatsScreenHPPals:
|
|
ld hl, PalPacket_Pal01
|
|
ld de, wSGBPals
|
|
ld bc, PALPACKET_LENGTH
|
|
call CopyBytes
|
|
ld a, [wCurHPPal]
|
|
ld l, a
|
|
ld h, 0
|
|
add hl, hl
|
|
add hl, hl
|
|
ld de, HPBarPals
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld [wSGBPals + 3], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 4], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 5], a
|
|
ld a, [hl]
|
|
ld [wSGBPals + 6], a
|
|
ld a, [wCurPartySpecies]
|
|
ld bc, wTempMonDVs
|
|
call GetPlayerOrMonPalettePointer
|
|
ld a, [hli]
|
|
ld [wSGBPals + 9], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 10], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 11], a
|
|
ld a, [hl]
|
|
ld [wSGBPals + 12], a
|
|
ld hl, wSGBPals
|
|
ld de, BlkPacket_StatsScreen
|
|
ret
|
|
|
|
.SGB_PartyMenu:
|
|
ld hl, PalPacket_PartyMenu
|
|
ld de, wSGBPals + 1
|
|
ret
|
|
|
|
.SGB_Pokedex:
|
|
ld hl, PalPacket_Pal01
|
|
ld de, wSGBPals
|
|
ld bc, PALPACKET_LENGTH
|
|
call CopyBytes
|
|
ld hl, wSGBPals + 3
|
|
ld [hl], LOW(palred 31 + palgreen 20 + palblue 10)
|
|
inc hl
|
|
ld [hl], HIGH(palred 31 + palgreen 20 + palblue 10)
|
|
inc hl
|
|
ld [hl], LOW(palred 26 + palgreen 10 + palblue 6)
|
|
inc hl
|
|
ld [hl], HIGH(palred 26 + palgreen 10 + palblue 6)
|
|
ld a, [wCurPartySpecies]
|
|
call GetMonPalettePointer
|
|
ld a, [hli]
|
|
ld [wSGBPals + 9], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 10], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 11], a
|
|
ld a, [hl]
|
|
ld [wSGBPals + 12], a
|
|
ld hl, wSGBPals
|
|
ld de, BlkPacket_Pokedex_PC
|
|
ret
|
|
|
|
.SGB_BillsPC:
|
|
ld hl, PalPacket_Pal01
|
|
ld de, wSGBPals
|
|
ld bc, PALPACKET_LENGTH
|
|
call CopyBytes
|
|
ld hl, wSGBPals + 3
|
|
ld [hl], LOW(palred 31 + palgreen 20 + palblue 10)
|
|
inc hl
|
|
ld [hl], HIGH(palred 31 + palgreen 20 + palblue 10)
|
|
inc hl
|
|
ld [hl], LOW(palred 26 + palgreen 10 + palblue 6)
|
|
inc hl
|
|
ld [hl], HIGH(palred 26 + palgreen 10 + palblue 6)
|
|
ld a, [wCurPartySpecies]
|
|
ld bc, wTempMonDVs
|
|
call GetPlayerOrMonPalettePointer
|
|
ld a, [hli]
|
|
ld [wSGBPals + 9], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 10], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 11], a
|
|
ld a, [hl]
|
|
ld [wSGBPals + 12], a
|
|
ld hl, wSGBPals
|
|
ld de, BlkPacket_Pokedex_PC
|
|
ret
|
|
|
|
.SGB_PokedexUnownMode:
|
|
call .SGB_Pokedex
|
|
ld de, BlkPacket_PokedexUnownMode
|
|
ret
|
|
|
|
.SGB_PokedexSearchOption:
|
|
ld hl, PalPacket_Pal01
|
|
ld de, wSGBPals
|
|
ld bc, PALPACKET_LENGTH
|
|
call CopyBytes
|
|
ld hl, wSGBPals + 3
|
|
ld [hl], LOW(palred 31 + palgreen 20 + palblue 10)
|
|
inc hl
|
|
ld [hl], HIGH(palred 31 + palgreen 20 + palblue 10)
|
|
inc hl
|
|
ld [hl], LOW(palred 26 + palgreen 10 + palblue 6)
|
|
inc hl
|
|
ld [hl], HIGH(palred 26 + palgreen 10 + palblue 6)
|
|
ld hl, wSGBPals
|
|
ld de, BlkPacket_AllPal0
|
|
ret
|
|
|
|
.SGB_PackPals:
|
|
ld hl, PalPacket_Pack
|
|
ld de, BlkPacket_AllPal0
|
|
ret
|
|
|
|
.SGB_SlotMachine:
|
|
ld hl, PalPacket_SlotMachine
|
|
ld de, BlkPacket_SlotMachine
|
|
ret
|
|
|
|
.SGB_BetaTitleScreen:
|
|
ld hl, PalPacket_BetaTitleScreen
|
|
ld de, BlkPacket_BetaTitleScreen
|
|
ret
|
|
|
|
.SGB_Diploma:
|
|
.SGB_MysteryGift:
|
|
ld hl, PalPacket_Diploma
|
|
ld de, BlkPacket_AllPal0
|
|
ret
|
|
|
|
.SGB_GSIntro:
|
|
ld b, 0
|
|
ld hl, .BlkPacketTable_GSIntro
|
|
rept 4
|
|
add hl, bc
|
|
endr
|
|
ld e, [hl]
|
|
inc hl
|
|
ld d, [hl]
|
|
inc hl
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ret
|
|
|
|
.BlkPacketTable_GSIntro:
|
|
dw BlkPacket_AllPal0, PalPacket_GSIntroShellderLapras
|
|
dw BlkPacket_GSIntroJigglypuffPikachu, PalPacket_GSIntroJigglypuffPikachu
|
|
dw BlkPacket_AllPal0, PalPacket_GSIntroStartersTransition
|
|
|
|
.SGB_GSTitleScreen:
|
|
ld hl, PalPacket_GSTitleScreen
|
|
ld de, BlkPacket_GSTitleScreen
|
|
ld a, SCGB_DIPLOMA
|
|
ld [wDefaultSGBLayout], a
|
|
ret
|
|
|
|
.SGB_MagnetTrain:
|
|
ld hl, PalPacket_MagnetTrain
|
|
ld de, BlkPacket_MagnetTrain
|
|
ret
|
|
|
|
.SGB_BetaPikachuMinigame:
|
|
ld hl, PalPacket_BetaPikachuMinigame
|
|
ld de, BlkPacket_AllPal0
|
|
ret
|
|
|
|
.SGB_BetaPoker:
|
|
ld hl, BlkPacket_AllPal0
|
|
ld de, wBetaPokerSGBPals
|
|
ld bc, PALPACKET_LENGTH
|
|
call CopyBytes
|
|
ld hl, PalPacket_BetaPoker
|
|
ld de, BlkPacket_AllPal0
|
|
ret
|
|
|
|
.SGB_MapPals:
|
|
ld hl, PalPacket_AllPal0
|
|
ld de, wSGBPals
|
|
ld bc, PALPACKET_LENGTH
|
|
call CopyBytes
|
|
call .GetMapPalsIndex
|
|
ld hl, wSGBPals + 1
|
|
ld [hld], a
|
|
ld de, BlkPacket_AllPal0
|
|
ld a, SCGB_MAPPALS
|
|
ld [wDefaultSGBLayout], a
|
|
ret
|
|
|
|
.SGB_Evolution:
|
|
push bc
|
|
ld hl, PalPacket_Pal01
|
|
ld de, wSGBPals
|
|
ld bc, PALPACKET_LENGTH
|
|
call CopyBytes
|
|
pop bc
|
|
ld a, c
|
|
and a
|
|
jr z, .partymon
|
|
; Egg
|
|
ld hl, wSGBPals + 3
|
|
ld [hl], LOW(palred 7 + palgreen 7 + palblue 7)
|
|
inc hl
|
|
ld [hl], HIGH(palred 7 + palgreen 7 + palblue 7)
|
|
inc hl
|
|
ld [hl], LOW(palred 2 + palgreen 3 + palblue 3)
|
|
inc hl
|
|
ld [hl], HIGH(palred 2 + palgreen 3 + palblue 3)
|
|
jr .done
|
|
|
|
.partymon
|
|
ld hl, wPartyMon1DVs
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
ld a, [wCurPartyMon]
|
|
call AddNTimes
|
|
ld c, l
|
|
ld b, h
|
|
ld a, [wPlayerHPPal]
|
|
call GetPlayerOrMonPalettePointer
|
|
ld a, [hli]
|
|
ld [wSGBPals + 3], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 4], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 5], a
|
|
ld a, [hl]
|
|
ld [wSGBPals + 6], a
|
|
|
|
.done
|
|
ld hl, wSGBPals
|
|
ld de, BlkPacket_AllPal0
|
|
ret
|
|
|
|
.SGB_Unused0D:
|
|
.SGB_TrainerCard:
|
|
ld hl, PalPacket_Diploma
|
|
ld de, BlkPacket_AllPal0
|
|
ret
|
|
|
|
.SGB_UnownPuzzle:
|
|
ld hl, PalPacket_UnownPuzzle
|
|
ld de, BlkPacket_AllPal0
|
|
ret
|
|
|
|
.SGB_Pokepic:
|
|
ld hl, PalPacket_AllPal0
|
|
ld de, wSGBPals
|
|
ld bc, PALPACKET_LENGTH
|
|
call CopyBytes
|
|
ld hl, BlkPacket_AllPal0
|
|
ld de, wSGBPals + PALPACKET_LENGTH
|
|
ld bc, PALPACKET_LENGTH
|
|
call CopyBytes
|
|
call .GetMapPalsIndex
|
|
ld hl, wSGBPals + 1
|
|
ld [hl], a
|
|
ld hl, wSGBPals + 3
|
|
ld [hl], $2e
|
|
ld hl, wSGBPals + $13
|
|
ld a, 5
|
|
ld [hli], a
|
|
ld a, [wMenuBorderLeftCoord]
|
|
ld [hli], a
|
|
ld a, [wMenuBorderTopCoord]
|
|
ld [hli], a
|
|
ld a, [wMenuBorderRightCoord]
|
|
ld [hli], a
|
|
ld a, [wMenuBorderBottomCoord]
|
|
ld [hl], a
|
|
ld hl, wSGBPals
|
|
ld de, wSGBPals + PALPACKET_LENGTH
|
|
ret
|
|
|
|
.SGB_Unused1E:
|
|
ld hl, PalPacket_Pal01
|
|
ld de, wSGBPals
|
|
ld bc, PALPACKET_LENGTH
|
|
call CopyBytes
|
|
ld a, [wCurPartySpecies]
|
|
call GetPokemonIndexFromID
|
|
add hl, hl
|
|
add hl, hl
|
|
add hl, hl
|
|
ld de, PokemonPalettes
|
|
add hl, de
|
|
ld a, [wUnusedSGB1eColorOffset]
|
|
and 3
|
|
sla a
|
|
sla a
|
|
ld c, a
|
|
ld b, 0
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld [wSGBPals + 3], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 4], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 5], a
|
|
ld a, [hl]
|
|
ld [wSGBPals + 6], a
|
|
ld hl, wSGBPals
|
|
ld de, BlkPacket_AllPal0
|
|
ret
|
|
|
|
.SGB_GamefreakLogo:
|
|
ld hl, PalPacket_GamefreakLogo
|
|
ld de, BlkPacket_AllPal0
|
|
ret
|
|
|
|
.SGB_PlayerOrMonFrontpicPals:
|
|
ld hl, PalPacket_Pal01
|
|
ld de, wSGBPals
|
|
ld bc, PALPACKET_LENGTH
|
|
call CopyBytes
|
|
ld a, [wCurPartySpecies]
|
|
ld bc, wTempMonDVs
|
|
call GetPlayerOrMonPalettePointer
|
|
ld a, [hli]
|
|
ld [wSGBPals + 3], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 4], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 5], a
|
|
ld a, [hl]
|
|
ld [wSGBPals + 6], a
|
|
ld hl, wSGBPals
|
|
ld de, BlkPacket_AllPal0
|
|
ret
|
|
|
|
.SGB_TradeTube:
|
|
ld hl, PalPacket_TradeTube
|
|
ld de, BlkPacket_AllPal0
|
|
ret
|
|
|
|
.SGB_TrainerOrMonFrontpicPals:
|
|
ld hl, PalPacket_Pal01
|
|
ld de, wSGBPals
|
|
ld bc, PALPACKET_LENGTH
|
|
call CopyBytes
|
|
ld a, [wCurPartySpecies]
|
|
ld bc, wTempMonDVs
|
|
call GetFrontpicPalettePointer
|
|
ld a, [hli]
|
|
ld [wSGBPals + 3], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 4], a
|
|
ld a, [hli]
|
|
ld [wSGBPals + 5], a
|
|
ld a, [hl]
|
|
ld [wSGBPals + 6], a
|
|
ld hl, wSGBPals
|
|
ld de, BlkPacket_AllPal0
|
|
ret
|
|
|
|
.GetMapPalsIndex:
|
|
ld a, [wTimeOfDayPal]
|
|
cp NITE_F
|
|
jr c, .morn_day
|
|
ld a, PREDEFPAL_NITE
|
|
ret
|
|
|
|
.morn_day
|
|
ld a, [wEnvironment]
|
|
cp ROUTE
|
|
jr z, .route
|
|
cp CAVE
|
|
jr z, .cave
|
|
cp DUNGEON
|
|
jr z, .cave
|
|
cp ENVIRONMENT_5
|
|
jr z, .env5
|
|
cp GATE
|
|
jr z, .gate
|
|
;cp FOREST
|
|
;jr z, .route
|
|
ld a, [wMapGroup]
|
|
ld e, a
|
|
ld d, 0
|
|
ld hl, MapGroupRoofSGBPalInds
|
|
add hl, de
|
|
ld a, [hl]
|
|
ret
|
|
|
|
.route
|
|
ld a, [wMapGroup]
|
|
ld b, a
|
|
ld a, [wMapNumber]
|
|
ld c, a
|
|
call GetWorldMapLocation
|
|
cp NIHON_LANDMARK
|
|
ld a, PREDEFPAL_ROUTES
|
|
jr nc, .routenihon
|
|
ret
|
|
|
|
.routenihon
|
|
ld a, PREDEFPAL_ROUTES_NIHON
|
|
ret
|
|
|
|
.cave
|
|
ld a, PREDEFPAL_DUNGEONS
|
|
ret
|
|
|
|
.env5
|
|
ld a, PREDEFPAL_VERMILION
|
|
ret
|
|
|
|
.gate
|
|
ld a, [wMapGroup]
|
|
ld b, a
|
|
ld a, [wMapNumber]
|
|
ld c, a
|
|
call GetWorldMapLocation
|
|
cp NIHON_LANDMARK
|
|
ld a, PREDEFPAL_PEWTER
|
|
jr nc, .gatenihon
|
|
ret
|
|
|
|
.gatenihon
|
|
ld a, PREDEFPAL_GATES_NIHON
|
|
ret
|
|
|
|
INCLUDE "data/maps/sgb_roof_pal_inds.asm"
|
|
|
|
_LoadSGBLayout_ReturnFromJumptable:
|
|
push de
|
|
call PushSGBPals
|
|
pop hl
|
|
jp PushSGBPals
|