From 94722aa8f08ceaef8233d73a87f534b6c3f0475f Mon Sep 17 00:00:00 2001 From: Remy Oukaour Date: Fri, 15 Dec 2017 12:31:18 -0500 Subject: Move predef/ files into engine/ Get rid of single-file engine/ subdirectories Move tilesets/ palettes unrelated to individual tilesets into data/palettes/ (more from engine/colors.asm can be moved here too) --- constants/cgb_constants.asm | 2 +- constants/gfx_constants.asm | 3 + data/palettes/bg.pal | 227 +++++ data/palettes/ob.pal | 39 + data/palettes/roof.pal | 161 ++++ engine/breeding.asm | 993 ++++++++++++++++++++++ engine/breeding/egg.asm | 993 ---------------------- engine/cgb_layouts.asm | 1127 +++++++++++++++++++++++++ engine/color.asm | 11 +- engine/crystal_colors.asm | 614 ++++++++++++++ engine/link.asm | 2 +- engine/printer.asm | 2 +- engine/printer/serial.asm | 645 -------------- engine/printer_serial.asm | 645 ++++++++++++++ engine/sgb_layouts.asm | 636 ++++++++++++++ engine/time_capsule.asm | 277 ++++++ engine/time_capsule/conversion.asm | 277 ------ engine/trade/animation.asm | 1628 ------------------------------------ engine/trade_animation.asm | 1628 ++++++++++++++++++++++++++++++++++++ macros.asm | 4 +- main.asm | 6 +- predef/cgb.asm | 1127 ------------------------- predef/crystal.asm | 614 -------------- predef/sgb.asm | 636 -------------- tilesets/bg.pal | 227 ----- tilesets/house.pal | 40 - tilesets/house_1.pal | 40 + tilesets/ob.pal | 39 - tilesets/pokecom.pal | 40 - tilesets/pokecom_center.pal | 40 + tilesets/roof.pal | 161 ---- 31 files changed, 6443 insertions(+), 6441 deletions(-) create mode 100644 data/palettes/bg.pal create mode 100644 data/palettes/ob.pal create mode 100644 data/palettes/roof.pal create mode 100755 engine/breeding.asm delete mode 100755 engine/breeding/egg.asm create mode 100644 engine/cgb_layouts.asm create mode 100755 engine/crystal_colors.asm delete mode 100755 engine/printer/serial.asm create mode 100755 engine/printer_serial.asm create mode 100644 engine/sgb_layouts.asm create mode 100755 engine/time_capsule.asm delete mode 100755 engine/time_capsule/conversion.asm delete mode 100755 engine/trade/animation.asm create mode 100755 engine/trade_animation.asm delete mode 100644 predef/cgb.asm delete mode 100755 predef/crystal.asm delete mode 100644 predef/sgb.asm delete mode 100644 tilesets/bg.pal delete mode 100644 tilesets/house.pal create mode 100644 tilesets/house_1.pal delete mode 100644 tilesets/ob.pal delete mode 100644 tilesets/pokecom.pal create mode 100644 tilesets/pokecom_center.pal delete mode 100644 tilesets/roof.pal diff --git a/constants/cgb_constants.asm b/constants/cgb_constants.asm index c5aef7750..c419cd465 100755 --- a/constants/cgb_constants.asm +++ b/constants/cgb_constants.asm @@ -1,4 +1,4 @@ -; GetSGBLayout arguments (see predef/cgb.asm and predef/sgb.asm) +; GetSGBLayout arguments (see engine/cgb_layouts.asm and engine/sgb_layouts.asm) const_def const SCGB_BATTLE_GRAYSCALE const SCGB_BATTLE_COLORS diff --git a/constants/gfx_constants.asm b/constants/gfx_constants.asm index 445f0d815..4c3b23fc9 100644 --- a/constants/gfx_constants.asm +++ b/constants/gfx_constants.asm @@ -19,3 +19,6 @@ HP_BAR_LENGTH EQU 6 ; tiles HP_BAR_LENGTH_PX EQU HP_BAR_LENGTH * TILE_WIDTH ; pixels EXP_BAR_LENGTH EQU 8 ; tiles EXP_BAR_LENGTH_PX EQU EXP_BAR_LENGTH * TILE_WIDTH ; pixels + + +PALPACKET_LENGTH EQU $10 diff --git a/data/palettes/bg.pal b/data/palettes/bg.pal new file mode 100644 index 000000000..3cd14d142 --- /dev/null +++ b/data/palettes/bg.pal @@ -0,0 +1,227 @@ +; morn + +; gray + RGB 28, 31, 16 + RGB 21, 21, 21 + RGB 13, 13, 13 + RGB 07, 07, 07 +; red + RGB 28, 31, 16 + RGB 31, 19, 24 + RGB 30, 10, 06 + RGB 07, 07, 07 +; green + RGB 22, 31, 10 + RGB 12, 25, 01 + RGB 05, 14, 00 + RGB 07, 07, 07 +; water + RGB 31, 31, 31 + RGB 08, 12, 31 + RGB 01, 04, 31 + RGB 07, 07, 07 +; yellow + RGB 28, 31, 16 + RGB 31, 31, 07 + RGB 31, 16, 01 + RGB 07, 07, 07 +; brown + RGB 28, 31, 16 + RGB 24, 18, 07 + RGB 20, 15, 03 + RGB 07, 07, 07 +; roof + RGB 28, 31, 16 + RGB 15, 31, 31 + RGB 05, 17, 31 + RGB 07, 07, 07 +; text + RGB 31, 31, 16 + RGB 31, 31, 16 + RGB 14, 09, 00 + RGB 00, 00, 00 + +; day + +; gray + RGB 27, 31, 27 + RGB 21, 21, 21 + RGB 13, 13, 13 + RGB 07, 07, 07 +; red + RGB 27, 31, 27 + RGB 31, 19, 24 + RGB 30, 10, 06 + RGB 07, 07, 07 +; green + RGB 22, 31, 10 + RGB 12, 25, 01 + RGB 05, 14, 00 + RGB 07, 07, 07 +; water + RGB 31, 31, 31 + RGB 08, 12, 31 + RGB 01, 04, 31 + RGB 07, 07, 07 +; yellow + RGB 27, 31, 27 + RGB 31, 31, 07 + RGB 31, 16, 01 + RGB 07, 07, 07 +; brown + RGB 27, 31, 27 + RGB 24, 18, 07 + RGB 20, 15, 03 + RGB 07, 07, 07 +; roof + RGB 27, 31, 27 + RGB 15, 31, 31 + RGB 05, 17, 31 + RGB 07, 07, 07 +; text + RGB 31, 31, 16 + RGB 31, 31, 16 + RGB 14, 09, 00 + RGB 00, 00, 00 + +; nite + +; gray + RGB 15, 14, 24 + RGB 11, 11, 19 + RGB 07, 07, 12 + RGB 00, 00, 00 +; red + RGB 15, 14, 24 + RGB 14, 07, 17 + RGB 13, 00, 08 + RGB 00, 00, 00 +; green + RGB 15, 14, 24 + RGB 08, 13, 19 + RGB 00, 11, 13 + RGB 00, 00, 00 +; water + RGB 15, 14, 24 + RGB 05, 05, 17 + RGB 03, 03, 10 + RGB 00, 00, 00 +; yellow + RGB 30, 30, 11 + RGB 16, 14, 18 + RGB 16, 14, 10 + RGB 00, 00, 00 +; brown + RGB 15, 14, 24 + RGB 12, 09, 15 + RGB 08, 04, 05 + RGB 00, 00, 00 +; roof + RGB 15, 14, 24 + RGB 13, 12, 23 + RGB 11, 09, 20 + RGB 00, 00, 00 +; text + RGB 31, 31, 16 + RGB 31, 31, 16 + RGB 14, 09, 00 + RGB 00, 00, 00 + +; dark + +; gray + RGB 01, 01, 02 + RGB 00, 00, 00 + RGB 00, 00, 00 + RGB 00, 00, 00 +; red + RGB 01, 01, 02 + RGB 00, 00, 00 + RGB 00, 00, 00 + RGB 00, 00, 00 +; green + RGB 01, 01, 02 + RGB 00, 00, 00 + RGB 00, 00, 00 + RGB 00, 00, 00 +; water + RGB 01, 01, 02 + RGB 00, 00, 00 + RGB 00, 00, 00 + RGB 00, 00, 00 +; yellow + RGB 30, 30, 11 + RGB 00, 00, 00 + RGB 00, 00, 00 + RGB 00, 00, 00 +; brown + RGB 01, 01, 02 + RGB 00, 00, 00 + RGB 00, 00, 00 + RGB 00, 00, 00 +; roof + RGB 01, 01, 02 + RGB 00, 00, 00 + RGB 00, 00, 00 + RGB 00, 00, 00 +; text + RGB 31, 31, 16 + RGB 31, 31, 16 + RGB 14, 09, 00 + RGB 00, 00, 00 + +; indoor + +; gray + RGB 30, 28, 26 + RGB 19, 19, 19 + RGB 13, 13, 13 + RGB 07, 07, 07 +; red + RGB 30, 28, 26 + RGB 31, 19, 24 + RGB 30, 10, 06 + RGB 07, 07, 07 +; green + RGB 18, 24, 09 + RGB 15, 20, 01 + RGB 09, 13, 00 + RGB 07, 07, 07 +; water + RGB 30, 28, 26 + RGB 15, 16, 31 + RGB 09, 09, 31 + RGB 07, 07, 07 +; yellow + RGB 30, 28, 26 + RGB 31, 31, 07 + RGB 31, 16, 01 + RGB 07, 07, 07 +; brown + RGB 26, 24, 17 + RGB 21, 17, 07 + RGB 16, 13, 03 + RGB 07, 07, 07 +; roof + RGB 30, 28, 26 + RGB 17, 19, 31 + RGB 14, 16, 31 + RGB 07, 07, 07 +; text + RGB 31, 31, 16 + RGB 31, 31, 16 + RGB 14, 09, 00 + RGB 00, 00, 00 + +; overworld water + +; morn/day + RGB 23, 23, 31 + RGB 18, 19, 31 + RGB 13, 12, 31 + RGB 07, 07, 07 +; nite + RGB 15, 13, 27 + RGB 10, 09, 20 + RGB 04, 03, 18 + RGB 00, 00, 00 diff --git a/data/palettes/ob.pal b/data/palettes/ob.pal new file mode 100644 index 000000000..a6e20d7f0 --- /dev/null +++ b/data/palettes/ob.pal @@ -0,0 +1,39 @@ + ; morn + RGB 28,31,16, 31,19,10, 31,07,01, 00,00,00 ; red + RGB 28,31,16, 31,19,10, 10,09,31, 00,00,00 ; blue + RGB 28,31,16, 31,19,10, 07,23,03, 00,00,00 ; green + RGB 28,31,16, 31,19,10, 15,10,03, 00,00,00 ; brown + RGB 28,31,16, 31,19,10, 30,10,06, 00,00,00 ; pink + RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver + RGB 22,31,10, 12,25,01, 05,14,00, 07,07,07 ; tree + RGB 28,31,16, 24,18,07, 20,15,03, 07,07,07 ; rock + + ; day + RGB 27,31,27, 31,19,10, 31,07,01, 00,00,00 ; red + RGB 27,31,27, 31,19,10, 10,09,31, 00,00,00 ; blue + RGB 27,31,27, 31,19,10, 07,23,03, 00,00,00 ; green + RGB 27,31,27, 31,19,10, 15,10,03, 00,00,00 ; brown + RGB 27,31,27, 31,19,10, 30,10,06, 00,00,00 ; pink + RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver + RGB 22,31,10, 12,25,01, 05,14,00, 07,07,07 ; tree + RGB 27,31,27, 24,18,07, 20,15,03, 07,07,07 ; rock + + ; nite + RGB 15,14,24, 31,19,10, 31,07,01, 00,00,00 ; red + RGB 15,14,24, 31,19,10, 10,09,31, 00,00,00 ; blue + RGB 15,14,24, 31,19,10, 07,23,03, 00,00,00 ; green + RGB 15,14,24, 31,19,10, 15,10,03, 00,00,00 ; brown + RGB 15,14,24, 31,19,10, 30,10,06, 00,00,00 ; pink + RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver + RGB 15,14,24, 08,13,19, 00,11,13, 00,00,00 ; tree + RGB 15,14,24, 12,09,15, 08,04,05, 00,00,00 ; rock + + ; dark + RGB 01,01,02, 31,19,10, 31,07,01, 00,00,00 ; red + RGB 01,01,02, 31,19,10, 10,09,31, 00,00,00 ; blue + RGB 01,01,02, 31,19,10, 07,23,03, 00,00,00 ; green + RGB 01,01,02, 31,19,10, 15,10,03, 00,00,00 ; brown + RGB 01,01,02, 31,19,10, 30,10,06, 00,00,00 ; pink + RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver + RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; tree + RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; rock diff --git a/data/palettes/roof.pal b/data/palettes/roof.pal new file mode 100644 index 000000000..ba65fc7d2 --- /dev/null +++ b/data/palettes/roof.pal @@ -0,0 +1,161 @@ +; group 0 (unused) + RGB 21, 21, 21 + RGB 11, 11, 11 + RGB 21, 21, 21 + RGB 11, 11, 11 + +; group 1 (Olivine) + RGB 14, 17, 31 + RGB 07, 11, 15 + RGB 09, 09, 17 + RGB 05, 07, 13 + +; group 2 (Mahogany) + RGB 12, 19, 00 + RGB 06, 10, 00 + RGB 06, 09, 07 + RGB 04, 05, 06 + +; group 3 + RGB 21, 21, 21 + RGB 11, 11, 11 + RGB 21, 21, 21 + RGB 17, 08, 07 + +; group 4 (Ecruteak) + RGB 31, 19, 00 + RGB 27, 10, 05 + RGB 15, 07, 02 + RGB 11, 04, 02 + +; group 5 (Blackthorn) + RGB 11, 10, 16 + RGB 05, 06, 07 + RGB 03, 04, 08 + RGB 00, 00, 00 + +; group 6 (Cinnabar) + RGB 31, 10, 00 + RGB 18, 06, 00 + RGB 18, 05, 09 + RGB 17, 08, 07 + +; group 7 (Cerulean) + RGB 17, 27, 31 + RGB 05, 15, 31 + RGB 07, 08, 22 + RGB 07, 07, 16 + +; group 8 (Azalea) + RGB 22, 20, 10 + RGB 17, 14, 03 + RGB 11, 11, 05 + RGB 10, 09, 07 + +; group 9 (Lake of Rage) + RGB 31, 08, 04 + RGB 09, 09, 08 + RGB 18, 05, 09 + RGB 09, 09, 08 + +; group 10 (Violet) + RGB 24, 14, 31 + RGB 13, 07, 21 + RGB 12, 03, 18 + RGB 09, 03, 15 + +; group 11 (Goldenrod) + RGB 25, 25, 00 + RGB 20, 17, 08 + RGB 12, 12, 00 + RGB 10, 09, 05 + +; group 12 (Vermilion) + RGB 27, 23, 01 + RGB 23, 11, 00 + RGB 15, 11, 01 + RGB 11, 10, 01 + +; group 13 (Pallet) + RGB 27, 28, 31 + RGB 17, 19, 22 + RGB 14, 14, 18 + RGB 10, 09, 13 + +; group 14 (Pewter) + RGB 19, 19, 16 + RGB 10, 12, 15 + RGB 09, 09, 11 + RGB 04, 05, 07 + +; group 15 (Mount Moon Square) + RGB 14, 17, 31 + RGB 07, 11, 15 + RGB 09, 13, 19 + RGB 07, 07, 16 + +; group 16 (Route 23) + RGB 21, 21, 21 + RGB 13, 13, 13 + RGB 11, 11, 19 + RGB 07, 07, 12 + +; group 17 (Fuchsia) + RGB 31, 18, 29 + RGB 17, 13, 20 + RGB 14, 06, 12 + RGB 11, 03, 10 + +; group 18 (Lavender) + RGB 23, 15, 31 + RGB 16, 05, 31 + RGB 12, 07, 17 + RGB 08, 06, 10 + +; group 19 (Route 28) + RGB 21, 21, 25 + RGB 16, 16, 16 + RGB 13, 13, 13 + RGB 07, 07, 07 + +; group 20 + RGB 21, 21, 21 + RGB 11, 11, 11 + RGB 21, 21, 21 + RGB 11, 11, 11 + +; group 21 (Celadon) + RGB 19, 31, 15 + RGB 31, 22, 02 + RGB 12, 13, 09 + RGB 09, 12, 03 + +; group 22 (Cianwood) + RGB 15, 10, 31 + RGB 07, 05, 15 + RGB 06, 05, 17 + RGB 02, 02, 08 + +; group 23 (Viridian) + RGB 21, 31, 07 + RGB 13, 25, 04 + RGB 09, 14, 08 + RGB 06, 10, 04 + +; group 24 (New Bark) + RGB 20, 31, 14 + RGB 11, 23, 05 + RGB 09, 13, 08 + RGB 06, 09, 04 + +; group 25 (Saffron) + RGB 31, 26, 00 + RGB 31, 15, 00 + RGB 13, 13, 01 + RGB 08, 08, 01 + +; group 26 (Cherrygrove) + RGB 31, 14, 28 + RGB 31, 05, 21 + RGB 14, 07, 17 + RGB 13, 00, 08 diff --git a/engine/breeding.asm b/engine/breeding.asm new file mode 100755 index 000000000..b402f99f1 --- /dev/null +++ b/engine/breeding.asm @@ -0,0 +1,993 @@ +CheckBreedmonCompatibility: ; 16e1d + call .CheckBreedingGroupCompatibility + ld c, $0 + jp nc, .done + ld a, [wBreedMon1Species] + ld [CurPartySpecies], a + ld a, [wBreedMon1DVs] + ld [TempMonDVs], a + ld a, [wBreedMon1DVs + 1] + ld [TempMonDVs + 1], a + ld a, TEMPMON + ld [MonType], a + predef GetGender + jr c, .genderless + ld b, $1 + jr nz, .breedmon2 + inc b + +.breedmon2 + push bc + ld a, [wBreedMon2Species] + ld [CurPartySpecies], a + ld a, [wBreedMon2DVs] + ld [TempMonDVs], a + ld a, [wBreedMon2DVs + 1] + ld [TempMonDVs + 1], a + ld a, $3 + ld [MonType], a + predef GetGender + pop bc + jr c, .genderless + ld a, $1 + jr nz, .compare_gender + inc a + +.compare_gender + cp b + jr nz, .compute + +.genderless + ld c, $0 + ld a, [wBreedMon1Species] + cp DITTO + jr z, .ditto1 + ld a, [wBreedMon2Species] + cp DITTO + jr nz, .done + jr .compute + +.ditto1 + ld a, [wBreedMon2Species] + cp DITTO + jr z, .done + +.compute + call .CheckDVs + ld c, 255 + jp z, .done + ld a, [wBreedMon2Species] + ld b, a + ld a, [wBreedMon1Species] + cp b + ld c, 254 + jr z, .compare_ids + ld c, 128 +.compare_ids + ; Speed up + ld a, [wBreedMon1ID] + ld b, a + ld a, [wBreedMon2ID] + cp b + jr nz, .done + ld a, [wBreedMon1ID + 1] + ld b, a + ld a, [wBreedMon2ID + 1] + cp b + jr nz, .done + ld a, c + sub 77 + ld c, a + +.done + ld a, c + ld [wd265], a + ret +; 16ebc + + +.CheckDVs: ; 16ebc (5:6ebc) +; If Defense DVs match and the lower 3 bits of the Special DVs match, +; avoid breeding + ld a, [wBreedMon1DVs] + and %1111 + ld b, a + ld a, [wBreedMon2DVs] + and %1111 + cp b + ret nz + ld a, [wBreedMon1DVs + 1] + and %111 + ld b, a + ld a, [wBreedMon2DVs + 1] + and %111 + cp b + ret +; 16ed6 + +.CheckBreedingGroupCompatibility: ; 16ed6 +; If either mon is in the No Eggs group, +; they are not compatible. + ld a, [wBreedMon2Species] + ld [CurSpecies], a + call GetBaseData + ld a, [BaseEggGroups] + cp NO_EGGS * $11 + jr z, .Incompatible + + ld a, [wBreedMon1Species] + ld [CurSpecies], a + call GetBaseData + ld a, [BaseEggGroups] + cp NO_EGGS * $11 + jr z, .Incompatible + +; Ditto is automatically compatible with everything. +; If not Ditto, load the breeding groups into b/c and d/e. + ld a, [wBreedMon2Species] + cp DITTO + jr z, .Compatible + ld [CurSpecies], a + call GetBaseData + ld a, [BaseEggGroups] + push af + and $f + ld b, a + pop af + and $f0 + swap a + ld c, a + + ld a, [wBreedMon1Species] + cp DITTO + jr z, .Compatible + ld [CurSpecies], a + push bc + call GetBaseData + pop bc + ld a, [BaseEggGroups] + push af + and $f + ld d, a + pop af + and $f0 + swap a + ld e, a + + ld a, d + cp b + jr z, .Compatible + cp c + jr z, .Compatible + + ld a, e + cp b + jr z, .Compatible + cp c + jr z, .Compatible + +.Incompatible: + and a + ret + +.Compatible: + scf + ret +; 16f3e + +DoEggStep:: ; 16f3e + ld de, PartySpecies + ld hl, PartyMon1Happiness + ld c, 0 +.loop + ld a, [de] + inc de + cp -1 + ret z + cp EGG + jr nz, .next + dec [hl] + jr nz, .next + ld a, 1 + and a + ret + +.next + push de + ld de, PARTYMON_STRUCT_LENGTH + add hl, de + pop de + jr .loop +; 16f5e + +OverworldHatchEgg:: ; 16f5e + call RefreshScreen + call LoadStandardMenuDataHeader + call HatchEggs + call ExitAllMenus + call RestartMapMusic + jp CloseText +; 16f70 + +HatchEggs: ; 16f70 (5:6f70) + ld de, PartySpecies + ld hl, PartyMon1Happiness + xor a + ld [CurPartyMon], a + +.loop ; 16f7a (5:6f7a) + ld a, [de] + inc de + cp -1 + jp z, .done + push de + push hl + cp EGG + jp nz, .next + ld a, [hl] + and a + jp nz, .next + ld [hl], $78 + + push de + + callba SetEggMonCaughtData + callba TrainerRankings_EggsHatched + ld a, [CurPartyMon] + ld hl, PartyMon1Species + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + ld a, [hl] + ld [CurPartySpecies], a + dec a + call SetSeenAndCaughtMon + + ld a, [CurPartySpecies] + cp TOGEPI + jr nz, .nottogepi + ; set the event flag for hatching togepi + ld de, EVENT_TOGEPI_HATCHED + ld b, SET_FLAG + call EventFlagAction +.nottogepi + + pop de + + ld a, [CurPartySpecies] + dec de + ld [de], a + ld [wd265], a + ld [CurSpecies], a + call GetPokemonName + xor a + ld [wd26b], a + call GetBaseData + ld a, [CurPartyMon] + ld hl, PartyMon1 + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + push hl + ld bc, MON_MAXHP + add hl, bc + ld d, h + ld e, l + pop hl + push hl + ld bc, MON_LEVEL + add hl, bc + ld a, [hl] + ld [CurPartyLevel], a + pop hl + push hl + ld bc, MON_STATUS + add hl, bc + xor a + ld [hli], a + ld [hl], a + pop hl + push hl + ld bc, MON_STAT_EXP - 1 + add hl, bc + ld b, $0 + predef CalcPkmnStats + pop bc + ld hl, MON_MAXHP + add hl, bc + ld d, h + ld e, l + ld hl, MON_HP + add hl, bc + ld a, [de] + inc de + ld [hli], a + ld a, [de] + ld [hl], a + ld hl, MON_ID + add hl, bc + ld a, [PlayerID] + ld [hli], a + ld a, [PlayerID + 1] + ld [hl], a + ld a, [CurPartyMon] + ld hl, PartyMonOT + ld bc, NAME_LENGTH + call AddNTimes + ld d, h + ld e, l + ld hl, PlayerName + call CopyBytes + ld hl, .Text_HatchEgg + call PrintText + ld a, [CurPartyMon] + ld hl, PartyMonNicknames + ld bc, PKMN_NAME_LENGTH + call AddNTimes + ld d, h + ld e, l + push de + ld hl, .Text_NicknameHatchling + call PrintText + call YesNoBox + pop de + jr c, .nonickname + + ld a, $1 + ld [wd26b], a + xor a + ld [MonType], a + push de + ld b, $0 + callba NamingScreen + pop hl + ld de, StringBuffer1 + call InitName + jr .next + +.nonickname + ld hl, StringBuffer1 + ld bc, PKMN_NAME_LENGTH + call CopyBytes + +.next ; 1707d (5:707d) + ld hl, CurPartyMon + inc [hl] + pop hl + ld de, PARTYMON_STRUCT_LENGTH + add hl, de + pop de + jp .loop + +.done ; 1708a (5:708a) + ret +; 1708b (5:708b) + +.Text_HatchEgg: ; 0x1708b + ; Huh? @ @ + text_jump UnknownText_0x1c0db0 + start_asm + ld hl, VramState + res 0, [hl] + push hl + push de + push bc + ld a, [CurPartySpecies] + push af + call EggHatch_AnimationSequence + ld hl, .ClearTextbox + call PrintText + pop af + ld [CurPartySpecies], a + pop bc + pop de + pop hl + ld hl, .CameOutOfItsEgg + ret +; 170b0 (5:70b0) + +.ClearTextbox: ; 0x170b0 + ; + text_jump UnknownText_0x1c0db8 + db "@" +; 0x170b5 + +.CameOutOfItsEgg: ; 0x170b5 + ; came out of its EGG!@ @ + text_jump UnknownText_0x1c0dba + db "@" +; 0x170ba + +.Text_NicknameHatchling: ; 0x170ba + ; Give a nickname to @ ? + text_jump UnknownText_0x1c0dd8 + db "@" +; 0x170bf + +InitEggMoves: ; 170bf + call GetHeritableMoves + ld d, h + ld e, l + ld b, NUM_MOVES +.loop + ld a, [de] + and a + jr z, .done + ld hl, wEggMonMoves + ld c, NUM_MOVES +.next + ld a, [de] + cp [hl] + jr z, .skip + inc hl + dec c + jr nz, .next + call GetEggMove + jr nc, .skip + call LoadEggMove + +.skip + inc de + dec b + jr nz, .loop + +.done + ret +; 170e4 + +GetEggMove: ; 170e4 +GLOBAL EggMoves + + push bc + ld a, [wEggMonSpecies] + dec a + ld c, a + ld b, 0 + ld hl, EggMovePointers + add hl, bc + add hl, bc + ld a, BANK(EggMovePointers) + call GetFarHalfword +.loop + ld a, BANK(EggMoves) + call GetFarByte + cp -1 + jr z, .reached_end + ld b, a + ld a, [de] + cp b + jr z, .done_carry + inc hl + jr .loop + +.reached_end + call GetBreedmonMovePointer + ld b, NUM_MOVES +.loop2 + ld a, [de] + cp [hl] + jr z, .found_eggmove + inc hl + dec b + jr z, .inherit_tmhm + jr .loop2 + +.found_eggmove + ld a, [wEggMonSpecies] + dec a + ld c, a + ld b, 0 + ld hl, EvosAttacksPointers + add hl, bc + add hl, bc + ld a, BANK(EvosAttacksPointers) + call GetFarHalfword +.loop3 + ld a, BANK(EvosAttacks) + call GetFarByte + inc hl + and a + jr nz, .loop3 +.loop4 + ld a, BANK(EvosAttacks) + call GetFarByte + and a + jr z, .inherit_tmhm + inc hl + ld a, BANK(EvosAttacks) + call GetFarByte + ld b, a + ld a, [de] + cp b + jr z, .done_carry + inc hl + jr .loop4 + +.inherit_tmhm + ld hl, TMHMMoves +.loop5 + ld a, BANK(TMHMMoves) + call GetFarByte + inc hl + and a + jr z, .done + ld b, a + ld a, [de] + cp b + jr nz, .loop5 + ld [wPutativeTMHMMove], a + predef CanLearnTMHMMove + ld a, c + and a + jr z, .done + +.done_carry + pop bc + scf + ret + +.done + pop bc + and a + ret +; 17169 + +LoadEggMove: ; 17169 + push de + push bc + ld a, [de] + ld b, a + ld hl, wEggMonMoves + ld c, NUM_MOVES +.loop + ld a, [hli] + and a + jr z, .done + dec c + jr nz, .loop + ld de, wEggMonMoves + ld hl, wEggMonMoves + 1 + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + +.done + dec hl + ld [hl], b + ld hl, wEggMonMoves + ld de, wEggMonPP + predef FillPP + pop bc + pop de + ret +; 17197 + +GetHeritableMoves: ; 17197 + ld hl, wBreedMon2Moves + ld a, [wBreedMon1Species] + cp DITTO + jr z, .ditto1 + ld a, [wBreedMon2Species] + cp DITTO + jr z, .ditto2 + ld a, [wBreedMotherOrNonDitto] + and a + ret z + ld hl, wBreedMon1Moves + ret + +.ditto1 + ld a, [CurPartySpecies] + push af + ld a, [wBreedMon2Species] + ld [CurPartySpecies], a + ld a, [wBreedMon2DVs] + ld [TempMonDVs], a + ld a, [wBreedMon2DVs + 1] + ld [TempMonDVs + 1], a + ld a, TEMPMON + ld [MonType], a + predef GetGender + jr c, .inherit_mon2_moves + jr nz, .inherit_mon2_moves + jr .inherit_mon1_moves + +.ditto2 + ld a, [CurPartySpecies] + push af + ld a, [wBreedMon1Species] + ld [CurPartySpecies], a + ld a, [wBreedMon1DVs] + ld [TempMonDVs], a + ld a, [wBreedMon1DVs + 1] + ld [TempMonDVs + 1], a + ld a, TEMPMON + ld [MonType], a + predef GetGender + jr c, .inherit_mon1_moves + jr nz, .inherit_mon1_moves + +.inherit_mon2_moves + ld hl, wBreedMon2Moves + pop af + ld [CurPartySpecies], a + ret + +.inherit_mon1_moves + ld hl, wBreedMon1Moves + pop af + ld [CurPartySpecies], a + ret +; 1720b + +GetBreedmonMovePointer: ; 1720b + ld hl, wBreedMon1Moves + ld a, [wBreedMon1Species] + cp DITTO + ret z + ld a, [wBreedMon2Species] + cp DITTO + jr z, .ditto + ld a, [wBreedMotherOrNonDitto] + and a + ret z + +.ditto + ld hl, wBreedMon2Moves + ret +; 17224 + + +GetEggFrontpic: ; 17224 (5:7224) + push de + ld [CurPartySpecies], a + ld [CurSpecies], a + call GetBaseData + ld hl, BattleMonDVs + predef GetUnownLetter + pop de + predef_jump GetFrontpic + +GetHatchlingFrontpic: ; 1723c (5:723c) + push de + ld [CurPartySpecies], a + ld [CurSpecies], a + call GetBaseData + ld hl, BattleMonDVs + predef GetUnownLetter + pop de + predef_jump FrontpicPredef + +Hatch_UpdateFrontpicBGMapCenter: ; 17254 (5:7254) + push af + call WaitTop + push hl + push bc + hlcoord 0, 0 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + ld a, " " + call ByteFill + pop bc + pop hl + ld a, b + ld [hBGMapAddress + 1], a + ld a, c + ld [hGraphicStartTile], a + lb bc, 7, 7 + predef PlaceGraphic + pop af + call Hatch_LoadFrontpicPal + call SetPalettes + jp WaitBGMap + +EggHatch_DoAnimFrame: ; 1727f (5:727f) + push hl + push de + push bc + callab PlaySpriteAnimations + call DelayFrame + pop bc + pop de + pop hl + ret + +EggHatch_AnimationSequence: ; 1728f (5:728f) + ld a, [wd265] + ld [wJumptableIndex], a + ld a, [CurSpecies] + push af + ld de, MUSIC_NONE + call PlayMusic + callba BlankScreen + call DisableLCD + ld hl, EggHatchGFX + ld de, VTiles0 tile $00 + ld bc, $20 + ld a, BANK(EggHatchGFX) + call FarCopyBytes + callba ClearSpriteAnims + ld de, VTiles2 tile $00 + ld a, [wJumptableIndex] + call GetHatchlingFrontpic + ld de, VTiles2 tile $31 + ld a, EGG + call GetEggFrontpic + ld de, MUSIC_EVOLUTION + call PlayMusic + call EnableLCD + hlcoord 7, 4 + ld b, VBGMap0 / $100 + ld c, $31 ; Egg tiles start here + ld a, EGG + call Hatch_UpdateFrontpicBGMapCenter + ld c, 80 + call DelayFrames + xor a + ld [wcf64], a + ld a, [hSCX] + ld b, a +.outerloop + ld hl, wcf64 + ld a, [hl] + inc [hl] + cp 8 + jr nc, .done + ld e, [hl] +.loop +; wobble e times + ld a, 2 + ld [hSCX], a + ld a, -2 + ld [wGlobalAnimXOffset], a + call EggHatch_DoAnimFrame + ld c, 2 + call DelayFrames + ld a, -2 + ld [hSCX], a + ld a, 2 + ld [wGlobalAnimXOffset], a + call EggHatch_DoAnimFrame + ld c, 2 + call DelayFrames + dec e + jr nz, .loop + ld c, 16 + call DelayFrames + call EggHatch_CrackShell + jr .outerloop + +.done + ld de, SFX_EGG_HATCH + call PlaySFX + xor a + ld [hSCX], a + ld [wGlobalAnimXOffset], a + call ClearSprites + call Hatch_InitShellFragments + hlcoord 6, 3 + ld b, VBGMap0 / $100 + ld c, $00 ; Hatchling tiles start here + ld a, [wJumptableIndex] + call Hatch_UpdateFrontpicBGMapCenter + call Hatch_ShellFragmentLoop + call WaitSFX + ld a, [wJumptableIndex] + ld [CurPartySpecies], a + hlcoord 6, 3 + ld d, $0 + ld e, ANIM_MON_HATCH + predef AnimateFrontpic + pop af + ld [CurSpecies], a + ret + +Hatch_LoadFrontpicPal: ; 17363 (5:7363) + ld [PlayerHPPal], a + ld b, SCGB_EVOLUTION + ld c, $0 + jp GetSGBLayout + +EggHatch_CrackShell: ; 1736d (5:736d) + ld a, [wcf64] + dec a + and $7 + cp $7 + ret z + srl a + ret nc + swap a + srl a + add 9 * 8 + 4 + ld d, a + ld e, 11 * 8 + ld a, SPRITE_ANIM_INDEX_EGG_CRACK + call _InitSpriteAnimStruct + ld hl, SPRITEANIMSTRUCT_TILE_ID + add hl, bc + ld [hl], $0 + ld de, SFX_EGG_CRACK + jp PlaySFX +; 17393 (5:7393) + +EggHatchGFX: ; 17393 +INCBIN "gfx/evo/egg_hatch.2bpp" +; 173b3 + +Hatch_InitShellFragments: ; 173b3 (5:73b3) + callba ClearSpriteAnims + ld hl, .SpriteData +.loop + ld a, [hli] + cp -1 + jr z, .done + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + push hl + push bc + + ld a, SPRITE_ANIM_INDEX_EGG_HATCH + call _InitSpriteAnimStruct + + ld hl, SPRITEANIMSTRUCT_TILE_ID + add hl, bc + ld [hl], $0 + + pop de + ld a, e + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID + add hl, bc + add [hl] + ld [hl], a + + ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX + add hl, bc + ld [hl], d + + pop hl + jr .loop +.done + ld de, SFX_EGG_HATCH + call PlaySFX + call EggHatch_DoAnimFrame + ret +; 173ef (5:73ef) + +.SpriteData: ; 173ef +; Probably OAM. + dsprite 10, 4, 9, 0, $00, $3c + dsprite 11, 4, 9, 0, $01, $04 + dsprite 10, 4, 10, 0, $00, $30 + dsprite 11, 4, 10, 0, $01, $10 + dsprite 10, 4, 11, 0, $02, $24 + dsprite 11, 4, 11, 0, $03, $1c + dsprite 10, 0, 9, 4, $00, $36 + dsprite 12, 0, 9, 4, $01, $0a + dsprite 10, 0, 10, 4, $02, $2a + dsprite 12, 0, 10, 4, $03, $16 + db -1 +; 17418 + +Hatch_ShellFragmentLoop: ; 17418 (5:7418) + ld c, 129 +.loop + call EggHatch_DoAnimFrame + dec c + jr nz, .loop + ret + +Special_DayCareMon1: ; 17421 + ld hl, DayCareMon1Text + call PrintText + ld a, [wBreedMon1Species] + call PlayCry + ld a, [wDayCareLady] + bit 0, a + jr z, DayCareMonCursor + call ButtonSound + ld hl, wBreedMon2Nick + call DayCareMonCompatibilityText + jp PrintText + +Special_DayCareMon2: ; 17440 + ld hl, DayCareMon2Text + call PrintText + ld a, [wBreedMon2Species] + call PlayCry + ld a, [wDayCareMan] + bit 0, a + jr z, DayCareMonCursor + call ButtonSound + ld hl, wBreedMon1Nick + call DayCareMonCompatibilityText + jp PrintText + +DayCareMonCursor: ; 1745f + jp WaitPressAorB_BlinkCursor +; 17462 + +DayCareMon2Text: ; 0x17462 + ; It's @ that was left with the DAY-CARE LADY. + text_jump UnknownText_0x1c0df3 + db "@" +; 0x17467 + +DayCareMon1Text: ; 0x17467 + ; It's @ that was left with the DAY-CARE MAN. + text_jump UnknownText_0x1c0e24 + db "@" +; 0x1746c + +DayCareMonCompatibilityText: ; 1746c + push bc + ld de, StringBuffer1 + ld bc, NAME_LENGTH + call CopyBytes + call CheckBreedmonCompatibility + pop bc + ld a, [wd265] + ld hl, .AllAlone + cp -1 + jr z, .done + ld hl, .Incompatible + and a + jr z, .done + ld hl, .HighCompatibility + cp 230 + jr nc, .done + cp 70 + ld hl, .ModerateCompatibility + jr nc, .done + ld hl, .SlightCompatibility + +.done + ret +; 1749c + +.AllAlone: ; 0x1749c + ; It's brimming with energy. + text_jump UnknownText_0x1c0e54 + db "@" +; 0x174a1 + +.Incompatible: ; 0x174a1 + ; It has no interest in @ . + text_jump UnknownText_0x1c0e6f + db "@" +; 0x174a6 + +.HighCompatibility: ; 0x174a6 + ; It appears to care for @ . + text_jump UnknownText_0x1c0e8d + db "@" +; 0x174ab + +.ModerateCompatibility: ; 0x174ab + ; It's friendly with @ . + text_jump UnknownText_0x1c0eac + db "@" +; 0x174b0 + +.SlightCompatibility: ; 0x174b0 + ; It shows interest in @ . + text_jump UnknownText_0x1c0ec6 + db "@" +; 0x174b5 + +DayCareMonPrintEmptyString: ; 174b5 +; unreferenced + ld hl, .string + ret +; 174b9 + +.string ; 174b9 + db "@" +; 174ba + diff --git a/engine/breeding/egg.asm b/engine/breeding/egg.asm deleted file mode 100755 index b402f99f1..000000000 --- a/engine/breeding/egg.asm +++ /dev/null @@ -1,993 +0,0 @@ -CheckBreedmonCompatibility: ; 16e1d - call .CheckBreedingGroupCompatibility - ld c, $0 - jp nc, .done - ld a, [wBreedMon1Species] - ld [CurPartySpecies], a - ld a, [wBreedMon1DVs] - ld [TempMonDVs], a - ld a, [wBreedMon1DVs + 1] - ld [TempMonDVs + 1], a - ld a, TEMPMON - ld [MonType], a - predef GetGender - jr c, .genderless - ld b, $1 - jr nz, .breedmon2 - inc b - -.breedmon2 - push bc - ld a, [wBreedMon2Species] - ld [CurPartySpecies], a - ld a, [wBreedMon2DVs] - ld [TempMonDVs], a - ld a, [wBreedMon2DVs + 1] - ld [TempMonDVs + 1], a - ld a, $3 - ld [MonType], a - predef GetGender - pop bc - jr c, .genderless - ld a, $1 - jr nz, .compare_gender - inc a - -.compare_gender - cp b - jr nz, .compute - -.genderless - ld c, $0 - ld a, [wBreedMon1Species] - cp DITTO - jr z, .ditto1 - ld a, [wBreedMon2Species] - cp DITTO - jr nz, .done - jr .compute - -.ditto1 - ld a, [wBreedMon2Species] - cp DITTO - jr z, .done - -.compute - call .CheckDVs - ld c, 255 - jp z, .done - ld a, [wBreedMon2Species] - ld b, a - ld a, [wBreedMon1Species] - cp b - ld c, 254 - jr z, .compare_ids - ld c, 128 -.compare_ids - ; Speed up - ld a, [wBreedMon1ID] - ld b, a - ld a, [wBreedMon2ID] - cp b - jr nz, .done - ld a, [wBreedMon1ID + 1] - ld b, a - ld a, [wBreedMon2ID + 1] - cp b - jr nz, .done - ld a, c - sub 77 - ld c, a - -.done - ld a, c - ld [wd265], a - ret -; 16ebc - - -.CheckDVs: ; 16ebc (5:6ebc) -; If Defense DVs match and the lower 3 bits of the Special DVs match, -; avoid breeding - ld a, [wBreedMon1DVs] - and %1111 - ld b, a - ld a, [wBreedMon2DVs] - and %1111 - cp b - ret nz - ld a, [wBreedMon1DVs + 1] - and %111 - ld b, a - ld a, [wBreedMon2DVs + 1] - and %111 - cp b - ret -; 16ed6 - -.CheckBreedingGroupCompatibility: ; 16ed6 -; If either mon is in the No Eggs group, -; they are not compatible. - ld a, [wBreedMon2Species] - ld [CurSpecies], a - call GetBaseData - ld a, [BaseEggGroups] - cp NO_EGGS * $11 - jr z, .Incompatible - - ld a, [wBreedMon1Species] - ld [CurSpecies], a - call GetBaseData - ld a, [BaseEggGroups] - cp NO_EGGS * $11 - jr z, .Incompatible - -; Ditto is automatically compatible with everything. -; If not Ditto, load the breeding groups into b/c and d/e. - ld a, [wBreedMon2Species] - cp DITTO - jr z, .Compatible - ld [CurSpecies], a - call GetBaseData - ld a, [BaseEggGroups] - push af - and $f - ld b, a - pop af - and $f0 - swap a - ld c, a - - ld a, [wBreedMon1Species] - cp DITTO - jr z, .Compatible - ld [CurSpecies], a - push bc - call GetBaseData - pop bc - ld a, [BaseEggGroups] - push af - and $f - ld d, a - pop af - and $f0 - swap a - ld e, a - - ld a, d - cp b - jr z, .Compatible - cp c - jr z, .Compatible - - ld a, e - cp b - jr z, .Compatible - cp c - jr z, .Compatible - -.Incompatible: - and a - ret - -.Compatible: - scf - ret -; 16f3e - -DoEggStep:: ; 16f3e - ld de, PartySpecies - ld hl, PartyMon1Happiness - ld c, 0 -.loop - ld a, [de] - inc de - cp -1 - ret z - cp EGG - jr nz, .next - dec [hl] - jr nz, .next - ld a, 1 - and a - ret - -.next - push de - ld de, PARTYMON_STRUCT_LENGTH - add hl, de - pop de - jr .loop -; 16f5e - -OverworldHatchEgg:: ; 16f5e - call RefreshScreen - call LoadStandardMenuDataHeader - call HatchEggs - call ExitAllMenus - call RestartMapMusic - jp CloseText -; 16f70 - -HatchEggs: ; 16f70 (5:6f70) - ld de, PartySpecies - ld hl, PartyMon1Happiness - xor a - ld [CurPartyMon], a - -.loop ; 16f7a (5:6f7a) - ld a, [de] - inc de - cp -1 - jp z, .done - push de - push hl - cp EGG - jp nz, .next - ld a, [hl] - and a - jp nz, .next - ld [hl], $78 - - push de - - callba SetEggMonCaughtData - callba TrainerRankings_EggsHatched - ld a, [CurPartyMon] - ld hl, PartyMon1Species - ld bc, PARTYMON_STRUCT_LENGTH - call AddNTimes - ld a, [hl] - ld [CurPartySpecies], a - dec a - call SetSeenAndCaughtMon - - ld a, [CurPartySpecies] - cp TOGEPI - jr nz, .nottogepi - ; set the event flag for hatching togepi - ld de, EVENT_TOGEPI_HATCHED - ld b, SET_FLAG - call EventFlagAction -.nottogepi - - pop de - - ld a, [CurPartySpecies] - dec de - ld [de], a - ld [wd265], a - ld [CurSpecies], a - call GetPokemonName - xor a - ld [wd26b], a - call GetBaseData - ld a, [CurPartyMon] - ld hl, PartyMon1 - ld bc, PARTYMON_STRUCT_LENGTH - call AddNTimes - push hl - ld bc, MON_MAXHP - add hl, bc - ld d, h - ld e, l - pop hl - push hl - ld bc, MON_LEVEL - add hl, bc - ld a, [hl] - ld [CurPartyLevel], a - pop hl - push hl - ld bc, MON_STATUS - add hl, bc - xor a - ld [hli], a - ld [hl], a - pop hl - push hl - ld bc, MON_STAT_EXP - 1 - add hl, bc - ld b, $0 - predef CalcPkmnStats - pop bc - ld hl, MON_MAXHP - add hl, bc - ld d, h - ld e, l - ld hl, MON_HP - add hl, bc - ld a, [de] - inc de - ld [hli], a - ld a, [de] - ld [hl], a - ld hl, MON_ID - add hl, bc - ld a, [PlayerID] - ld [hli], a - ld a, [PlayerID + 1] - ld [hl], a - ld a, [CurPartyMon] - ld hl, PartyMonOT - ld bc, NAME_LENGTH - call AddNTimes - ld d, h - ld e, l - ld hl, PlayerName - call CopyBytes - ld hl, .Text_HatchEgg - call PrintText - ld a, [CurPartyMon] - ld hl, PartyMonNicknames - ld bc, PKMN_NAME_LENGTH - call AddNTimes - ld d, h - ld e, l - push de - ld hl, .Text_NicknameHatchling - call PrintText - call YesNoBox - pop de - jr c, .nonickname - - ld a, $1 - ld [wd26b], a - xor a - ld [MonType], a - push de - ld b, $0 - callba NamingScreen - pop hl - ld de, StringBuffer1 - call InitName - jr .next - -.nonickname - ld hl, StringBuffer1 - ld bc, PKMN_NAME_LENGTH - call CopyBytes - -.next ; 1707d (5:707d) - ld hl, CurPartyMon - inc [hl] - pop hl - ld de, PARTYMON_STRUCT_LENGTH - add hl, de - pop de - jp .loop - -.done ; 1708a (5:708a) - ret -; 1708b (5:708b) - -.Text_HatchEgg: ; 0x1708b - ; Huh? @ @ - text_jump UnknownText_0x1c0db0 - start_asm - ld hl, VramState - res 0, [hl] - push hl - push de - push bc - ld a, [CurPartySpecies] - push af - call EggHatch_AnimationSequence - ld hl, .ClearTextbox - call PrintText - pop af - ld [CurPartySpecies], a - pop bc - pop de - pop hl - ld hl, .CameOutOfItsEgg - ret -; 170b0 (5:70b0) - -.ClearTextbox: ; 0x170b0 - ; - text_jump UnknownText_0x1c0db8 - db "@" -; 0x170b5 - -.CameOutOfItsEgg: ; 0x170b5 - ; came out of its EGG!@ @ - text_jump UnknownText_0x1c0dba - db "@" -; 0x170ba - -.Text_NicknameHatchling: ; 0x170ba - ; Give a nickname to @ ? - text_jump UnknownText_0x1c0dd8 - db "@" -; 0x170bf - -InitEggMoves: ; 170bf - call GetHeritableMoves - ld d, h - ld e, l - ld b, NUM_MOVES -.loop - ld a, [de] - and a - jr z, .done - ld hl, wEggMonMoves - ld c, NUM_MOVES -.next - ld a, [de] - cp [hl] - jr z, .skip - inc hl - dec c - jr nz, .next - call GetEggMove - jr nc, .skip - call LoadEggMove - -.skip - inc de - dec b - jr nz, .loop - -.done - ret -; 170e4 - -GetEggMove: ; 170e4 -GLOBAL EggMoves - - push bc - ld a, [wEggMonSpecies] - dec a - ld c, a - ld b, 0 - ld hl, EggMovePointers - add hl, bc - add hl, bc - ld a, BANK(EggMovePointers) - call GetFarHalfword -.loop - ld a, BANK(EggMoves) - call GetFarByte - cp -1 - jr z, .reached_end - ld b, a - ld a, [de] - cp b - jr z, .done_carry - inc hl - jr .loop - -.reached_end - call GetBreedmonMovePointer - ld b, NUM_MOVES -.loop2 - ld a, [de] - cp [hl] - jr z, .found_eggmove - inc hl - dec b - jr z, .inherit_tmhm - jr .loop2 - -.found_eggmove - ld a, [wEggMonSpecies] - dec a - ld c, a - ld b, 0 - ld hl, EvosAttacksPointers - add hl, bc - add hl, bc - ld a, BANK(EvosAttacksPointers) - call GetFarHalfword -.loop3 - ld a, BANK(EvosAttacks) - call GetFarByte - inc hl - and a - jr nz, .loop3 -.loop4 - ld a, BANK(EvosAttacks) - call GetFarByte - and a - jr z, .inherit_tmhm - inc hl - ld a, BANK(EvosAttacks) - call GetFarByte - ld b, a - ld a, [de] - cp b - jr z, .done_carry - inc hl - jr .loop4 - -.inherit_tmhm - ld hl, TMHMMoves -.loop5 - ld a, BANK(TMHMMoves) - call GetFarByte - inc hl - and a - jr z, .done - ld b, a - ld a, [de] - cp b - jr nz, .loop5 - ld [wPutativeTMHMMove], a - predef CanLearnTMHMMove - ld a, c - and a - jr z, .done - -.done_carry - pop bc - scf - ret - -.done - pop bc - and a - ret -; 17169 - -LoadEggMove: ; 17169 - push de - push bc - ld a, [de] - ld b, a - ld hl, wEggMonMoves - ld c, NUM_MOVES -.loop - ld a, [hli] - and a - jr z, .done - dec c - jr nz, .loop - ld de, wEggMonMoves - ld hl, wEggMonMoves + 1 - ld a, [hli] - ld [de], a - inc de - ld a, [hli] - ld [de], a - inc de - ld a, [hli] - ld [de], a - -.done - dec hl - ld [hl], b - ld hl, wEggMonMoves - ld de, wEggMonPP - predef FillPP - pop bc - pop de - ret -; 17197 - -GetHeritableMoves: ; 17197 - ld hl, wBreedMon2Moves - ld a, [wBreedMon1Species] - cp DITTO - jr z, .ditto1 - ld a, [wBreedMon2Species] - cp DITTO - jr z, .ditto2 - ld a, [wBreedMotherOrNonDitto] - and a - ret z - ld hl, wBreedMon1Moves - ret - -.ditto1 - ld a, [CurPartySpecies] - push af - ld a, [wBreedMon2Species] - ld [CurPartySpecies], a - ld a, [wBreedMon2DVs] - ld [TempMonDVs], a - ld a, [wBreedMon2DVs + 1] - ld [TempMonDVs + 1], a - ld a, TEMPMON - ld [MonType], a - predef GetGender - jr c, .inherit_mon2_moves - jr nz, .inherit_mon2_moves - jr .inherit_mon1_moves - -.ditto2 - ld a, [CurPartySpecies] - push af - ld a, [wBreedMon1Species] - ld [CurPartySpecies], a - ld a, [wBreedMon1DVs] - ld [TempMonDVs], a - ld a, [wBreedMon1DVs + 1] - ld [TempMonDVs + 1], a - ld a, TEMPMON - ld [MonType], a - predef GetGender - jr c, .inherit_mon1_moves - jr nz, .inherit_mon1_moves - -.inherit_mon2_moves - ld hl, wBreedMon2Moves - pop af - ld [CurPartySpecies], a - ret - -.inherit_mon1_moves - ld hl, wBreedMon1Moves - pop af - ld [CurPartySpecies], a - ret -; 1720b - -GetBreedmonMovePointer: ; 1720b - ld hl, wBreedMon1Moves - ld a, [wBreedMon1Species] - cp DITTO - ret z - ld a, [wBreedMon2Species] - cp DITTO - jr z, .ditto - ld a, [wBreedMotherOrNonDitto] - and a - ret z - -.ditto - ld hl, wBreedMon2Moves - ret -; 17224 - - -GetEggFrontpic: ; 17224 (5:7224) - push de - ld [CurPartySpecies], a - ld [CurSpecies], a - call GetBaseData - ld hl, BattleMonDVs - predef GetUnownLetter - pop de - predef_jump GetFrontpic - -GetHatchlingFrontpic: ; 1723c (5:723c) - push de - ld [CurPartySpecies], a - ld [CurSpecies], a - call GetBaseData - ld hl, BattleMonDVs - predef GetUnownLetter - pop de - predef_jump FrontpicPredef - -Hatch_UpdateFrontpicBGMapCenter: ; 17254 (5:7254) - push af - call WaitTop - push hl - push bc - hlcoord 0, 0 - ld bc, SCREEN_HEIGHT * SCREEN_WIDTH - ld a, " " - call ByteFill - pop bc - pop hl - ld a, b - ld [hBGMapAddress + 1], a - ld a, c - ld [hGraphicStartTile], a - lb bc, 7, 7 - predef PlaceGraphic - pop af - call Hatch_LoadFrontpicPal - call SetPalettes - jp WaitBGMap - -EggHatch_DoAnimFrame: ; 1727f (5:727f) - push hl - push de - push bc - callab PlaySpriteAnimations - call DelayFrame - pop bc - pop de - pop hl - ret - -EggHatch_AnimationSequence: ; 1728f (5:728f) - ld a, [wd265] - ld [wJumptableIndex], a - ld a, [CurSpecies] - push af - ld de, MUSIC_NONE - call PlayMusic - callba BlankScreen - call DisableLCD - ld hl, EggHatchGFX - ld de, VTiles0 tile $00 - ld bc, $20 - ld a, BANK(EggHatchGFX) - call FarCopyBytes - callba ClearSpriteAnims - ld de, VTiles2 tile $00 - ld a, [wJumptableIndex] - call GetHatchlingFrontpic - ld de, VTiles2 tile $31 - ld a, EGG - call GetEggFrontpic - ld de, MUSIC_EVOLUTION - call PlayMusic - call EnableLCD - hlcoord 7, 4 - ld b, VBGMap0 / $100 - ld c, $31 ; Egg tiles start here - ld a, EGG - call Hatch_UpdateFrontpicBGMapCenter - ld c, 80 - call DelayFrames - xor a - ld [wcf64], a - ld a, [hSCX] - ld b, a -.outerloop - ld hl, wcf64 - ld a, [hl] - inc [hl] - cp 8 - jr nc, .done - ld e, [hl] -.loop -; wobble e times - ld a, 2 - ld [hSCX], a - ld a, -2 - ld [wGlobalAnimXOffset], a - call EggHatch_DoAnimFrame - ld c, 2 - call DelayFrames - ld a, -2 - ld [hSCX], a - ld a, 2 - ld [wGlobalAnimXOffset], a - call EggHatch_DoAnimFrame - ld c, 2 - call DelayFrames - dec e - jr nz, .loop - ld c, 16 - call DelayFrames - call EggHatch_CrackShell - jr .outerloop - -.done - ld de, SFX_EGG_HATCH - call PlaySFX - xor a - ld [hSCX], a - ld [wGlobalAnimXOffset], a - call ClearSprites - call Hatch_InitShellFragments - hlcoord 6, 3 - ld b, VBGMap0 / $100 - ld c, $00 ; Hatchling tiles start here - ld a, [wJumptableIndex] - call Hatch_UpdateFrontpicBGMapCenter - call Hatch_ShellFragmentLoop - call WaitSFX - ld a, [wJumptableIndex] - ld [CurPartySpecies], a - hlcoord 6, 3 - ld d, $0 - ld e, ANIM_MON_HATCH - predef AnimateFrontpic - pop af - ld [CurSpecies], a - ret - -Hatch_LoadFrontpicPal: ; 17363 (5:7363) - ld [PlayerHPPal], a - ld b, SCGB_EVOLUTION - ld c, $0 - jp GetSGBLayout - -EggHatch_CrackShell: ; 1736d (5:736d) - ld a, [wcf64] - dec a - and $7 - cp $7 - ret z - srl a - ret nc - swap a - srl a - add 9 * 8 + 4 - ld d, a - ld e, 11 * 8 - ld a, SPRITE_ANIM_INDEX_EGG_CRACK - call _InitSpriteAnimStruct - ld hl, SPRITEANIMSTRUCT_TILE_ID - add hl, bc - ld [hl], $0 - ld de, SFX_EGG_CRACK - jp PlaySFX -; 17393 (5:7393) - -EggHatchGFX: ; 17393 -INCBIN "gfx/evo/egg_hatch.2bpp" -; 173b3 - -Hatch_InitShellFragments: ; 173b3 (5:73b3) - callba ClearSpriteAnims - ld hl, .SpriteData -.loop - ld a, [hli] - cp -1 - jr z, .done - ld e, a - ld a, [hli] - ld d, a - ld a, [hli] - ld c, a - ld a, [hli] - ld b, a - push hl - push bc - - ld a, SPRITE_ANIM_INDEX_EGG_HATCH - call _InitSpriteAnimStruct - - ld hl, SPRITEANIMSTRUCT_TILE_ID - add hl, bc - ld [hl], $0 - - pop de - ld a, e - ld hl, SPRITEANIMSTRUCT_FRAMESET_ID - add hl, bc - add [hl] - ld [hl], a - - ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX - add hl, bc - ld [hl], d - - pop hl - jr .loop -.done - ld de, SFX_EGG_HATCH - call PlaySFX - call EggHatch_DoAnimFrame - ret -; 173ef (5:73ef) - -.SpriteData: ; 173ef -; Probably OAM. - dsprite 10, 4, 9, 0, $00, $3c - dsprite 11, 4, 9, 0, $01, $04 - dsprite 10, 4, 10, 0, $00, $30 - dsprite 11, 4, 10, 0, $01, $10 - dsprite 10, 4, 11, 0, $02, $24 - dsprite 11, 4, 11, 0, $03, $1c - dsprite 10, 0, 9, 4, $00, $36 - dsprite 12, 0, 9, 4, $01, $0a - dsprite 10, 0, 10, 4, $02, $2a - dsprite 12, 0, 10, 4, $03, $16 - db -1 -; 17418 - -Hatch_ShellFragmentLoop: ; 17418 (5:7418) - ld c, 129 -.loop - call EggHatch_DoAnimFrame - dec c - jr nz, .loop - ret - -Special_DayCareMon1: ; 17421 - ld hl, DayCareMon1Text - call PrintText - ld a, [wBreedMon1Species] - call PlayCry - ld a, [wDayCareLady] - bit 0, a - jr z, DayCareMonCursor - call ButtonSound - ld hl, wBreedMon2Nick - call DayCareMonCompatibilityText - jp PrintText - -Special_DayCareMon2: ; 17440 - ld hl, DayCareMon2Text - call PrintText - ld a, [wBreedMon2Species] - call PlayCry - ld a, [wDayCareMan] - bit 0, a - jr z, DayCareMonCursor - call ButtonSound - ld hl, wBreedMon1Nick - call DayCareMonCompatibilityText - jp PrintText - -DayCareMonCursor: ; 1745f - jp WaitPressAorB_BlinkCursor -; 17462 - -DayCareMon2Text: ; 0x17462 - ; It's @ that was left with the DAY-CARE LADY. - text_jump UnknownText_0x1c0df3 - db "@" -; 0x17467 - -DayCareMon1Text: ; 0x17467 - ; It's @ that was left with the DAY-CARE MAN. - text_jump UnknownText_0x1c0e24 - db "@" -; 0x1746c - -DayCareMonCompatibilityText: ; 1746c - push bc - ld de, StringBuffer1 - ld bc, NAME_LENGTH - call CopyBytes - call CheckBreedmonCompatibility - pop bc - ld a, [wd265] - ld hl, .AllAlone - cp -1 - jr z, .done - ld hl, .Incompatible - and a - jr z, .done - ld hl, .HighCompatibility - cp 230 - jr nc, .done - cp 70 - ld hl, .ModerateCompatibility - jr nc, .done - ld hl, .SlightCompatibility - -.done - ret -; 1749c - -.AllAlone: ; 0x1749c - ; It's brimming with energy. - text_jump UnknownText_0x1c0e54 - db "@" -; 0x174a1 - -.Incompatible: ; 0x174a1 - ; It has no interest in @ . - text_jump UnknownText_0x1c0e6f - db "@" -; 0x174a6 - -.HighCompatibility: ; 0x174a6 - ; It appears to care for @ . - text_jump UnknownText_0x1c0e8d - db "@" -; 0x174ab - -.ModerateCompatibility: ; 0x174ab - ; It's friendly with @ . - text_jump UnknownText_0x1c0eac - db "@" -; 0x174b0 - -.SlightCompatibility: ; 0x174b0 - ; It shows interest in @ . - text_jump UnknownText_0x1c0ec6 - db "@" -; 0x174b5 - -DayCareMonPrintEmptyString: ; 174b5 -; unreferenced - ld hl, .string - ret -; 174b9 - -.string ; 174b9 - db "@" -; 174ba - diff --git a/engine/cgb_layouts.asm b/engine/cgb_layouts.asm new file mode 100644 index 000000000..7ede2768f --- /dev/null +++ b/engine/cgb_layouts.asm @@ -0,0 +1,1127 @@ +; Replaces the functionality of sgb.asm to work with CGB hardware. + +CheckCGB: ; 8d55 + ld a, [hCGB] + and a + ret +; 8d59 + +Predef_LoadSGBLayoutCGB: ; 8d59 + ld a, b + cp SCGB_RAM + jr nz, .not_ram + ld a, [SGBPredef] +.not_ram + cp SCGB_PARTY_MENU_HP_PALS + jp z, CGB_ApplyPartyMenuHPPals + call ResetBGPals + ld l, a + ld h, 0 + add hl, hl + ld de, .dw + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ld de, .ReturnFromJumpTable + push de + jp hl +; 8d79 + +.ReturnFromJumpTable: ; 8d79 + ret +; 8d7a + +.dw ; 8d7a + dw _CGB_BattleGrayscale + dw _CGB_BattleColors + dw _CGB_PokegearPals + dw _CGB_StatsScreenHPPals + dw _CGB_Pokedex + dw _CGB_SlotMachine + dw _CGB06 + dw _CGB07 + dw _CGB_Diploma + dw _CGB_MapPals + dw _CGB_PartyMenu + dw _CGB_Evolution + dw _CGB0c + dw _CGB0d + dw _CGB_MoveList + dw _CGB0f + dw _CGB_PokedexSearchOption + dw _CGB11 + dw _CGB_Pokepic + dw _CGB13 + dw _CGB_PackPals + dw _CGB_TrainerCard + dw _CGB_PokedexUnownMode + dw _CGB_BillsPC + dw _CGB_UnownPuzzle + dw _CGB_GamefreakLogo ; called before copyright + dw _CGB_PlayerOrMonFrontpicPals + dw _CGB_TradeTube + dw _CGB_TrainerOrMonFrontpicPals + dw _CGB_MysteryGift + dw _CGB1e +; 8db8 + +_CGB_BattleGrayscale: ; 8db8 + ld hl, PalPacket_9c66 + 1 + ld de, UnknBGPals + ld c, 4 + call CopyPalettes + ld hl, PalPacket_9c66 + 1 + ld de, UnknBGPals palette PAL_BATTLE_BG_EXP + ld c, 4 + call CopyPalettes + ld hl, PalPacket_9c66 + 1 + ld de, UnknOBPals + ld c, 2 + call CopyPalettes + jr _CGB_FinishBattleScreenLayout + +_CGB_BattleColors: ; 8ddb + ld de, UnknBGPals + call GetBattlemonBackpicPalettePointer + push hl + call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_BG_PLAYER + call GetEnemyFrontpicPalettePointer + push hl + call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_BG_ENEMY + ld a, [EnemyHPPal] + ld l, a + ld h, $0 + add hl, hl + add hl, hl + ld bc, Palettes_a8be + add hl, bc + call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_BG_ENEMY_HP + ld a, [PlayerHPPal] + ld l, a + ld h, $0 + add hl, hl + add hl, hl + ld bc, Palettes_a8be + add hl, bc + call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_BG_PLAYER_HP + ld hl, Palettes_a8ca + call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_BG_EXP + ld de, UnknOBPals + pop hl + call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_OB_ENEMY + pop hl + call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_OB_PLAYER + ld a, SCGB_BATTLE_COLORS + ld [SGBPredef], a + call ApplyPals +_CGB_FinishBattleScreenLayout: ; 8e23 + call InitPartyMenuBGPal7 + hlcoord 0, 0, AttrMap + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, PAL_BATTLE_BG_ENEMY_HP + call ByteFill + hlcoord 0, 4, AttrMap + lb bc, 8, 10 + ld a, PAL_BATTLE_BG_PLAYER + call FillBoxCGB + hlcoord 10, 0, AttrMap + lb bc, 7, 10 + ld a, PAL_BATTLE_BG_ENEMY + call FillBoxCGB + hlcoord 0, 0, AttrMap + lb bc, 4, 10 + ld a, PAL_BATTLE_BG_ENEMY_HP + call FillBoxCGB + hlcoord 10, 7, AttrMap + lb bc, 5, 10 + ld a, PAL_BATTLE_BG_PLAYER_HP + call FillBoxCGB + hlcoord 10, 11, AttrMap + lb bc, 1, 9 + ld a, PAL_BATTLE_BG_EXP + call FillBoxCGB + hlcoord 0, 12, AttrMap + ld bc, 6 * SCREEN_WIDTH + ld a, PAL_BATTLE_BG_TEXT + call ByteFill + ld hl, Palettes_979c + ld de, UnknOBPals palette PAL_BATTLE_OB_GRAY + ld bc, 6 palettes + ld a, $5 + call FarCopyWRAM + call ApplyAttrMap + ret +; 8e85 + + +InitPartyMenuBGPal7: ; 8e85 + callba Function100dc0 +Mobile_InitPartyMenuBGPal7: ; 8e8b + ld hl, Palette_b311 + jr nc, .not_mobile + ld hl, Palette_b309 +.not_mobile + ld de, UnknBGPals palette 7 + ld bc, 1 palettes + ld a, $5 + call FarCopyWRAM + ret +; 8e9f + +InitPartyMenuBGPal0: ; 8e9f + callba Function100dc0 + ld hl, Palette_b311 + jr nc, .not_mobile + ld hl, Palette_b309 +.not_mobile + ld de, UnknBGPals palette 0 + ld bc, 1 palettes + ld a, $5 + call FarCopyWRAM + ret +; 8eb9 + +_CGB_PokegearPals: ; 8eb9 + ld a, [PlayerGender] + bit 0, a + jr z, .male + ld hl, FemalePokegearPals + jr .got_pals + +.male + ld hl, MalePokegearPals +.got_pals + ld de, UnknBGPals + ld bc, 6 palettes + ld a, $5 + call FarCopyWRAM + call ApplyPals + ld a, $1 + ld [hCGBPalUpdate], a + ret +; 8edb + +_CGB_StatsScreenHPPals: ; 8edb + ld de, UnknBGPals + ld a, [wCurHPPal] + ld l, a + ld h, $0 + add hl, hl + add hl, hl + ld bc, Palettes_a8be + add hl, bc + call LoadPalette_White_Col1_Col2_Black ; hp palette + ld a, [CurPartySpecies] + ld bc, TempMonDVs + call GetPlayerOrMonPalettePointer + call LoadPalette_White_Col1_Col2_Black ; mon palette + ld hl, Palettes_a8ca + call LoadPalette_White_Col1_Col2_Black ; exp palette + ld hl, StatsScreenPagePals + ld de, UnknBGPals palette 3 + ld bc, 3 palettes ; pink, green, and blue page palettes + ld a, $5 + call FarCopyWRAM + call WipeAttrMap + + hlcoord 0, 0, AttrMap + lb bc, 8, SCREEN_WIDTH + ld a, $1 ; mon palette + call FillBoxCGB + + hlcoord 10, 16, AttrMap + ld bc, 10 + ld a, $2 ; exp palette + call ByteFill + + hlcoord 13, 5, AttrMap + lb bc, 2, 2 + ld a, $3 ; pink page palette + call FillBoxCGB + + hlcoord 15, 5, AttrMap + lb bc, 2, 2 + ld a, $4 ; green page palette + call FillBoxCGB + + hlcoord 17, 5, AttrMap + lb bc, 2, 2 + ld a, $5 ; blue page palette + call FillBoxCGB + + call ApplyAttrMap + call ApplyPals + ld a, $1 + ld [hCGBPalUpdate], a + ret +; 8f52 + +StatsScreenPagePals: ; 8f52 +; pink + RGB 31, 31, 31 + RGB 31, 19, 31 + RGB 31, 15, 31 + RGB 00, 00, 00 +; green + RGB 31, 31, 31 + RGB 21, 31, 14 + RGB 17, 31, 00 + RGB 00, 00, 00 +; blue + RGB 31, 31, 31 + RGB 17, 31, 31 + RGB 17, 31, 31 + RGB 00, 00, 00 +; 8f6a + +StatsScreenPals: ; 8f6a +; pink + RGB 31, 19, 31 +; green + RGB 21, 31, 14 +; blue + RGB 17, 31, 31 +; 8f70 + +_CGB_Pokedex: ; 8f70 + ld de, UnknBGPals + ld a, $1d + call GetPredefPal + call LoadHLPaletteIntoDE ; dex interface palette + ld a, [CurPartySpecies] + cp $ff + jr nz, .is_pokemon + ld hl, .PokedexQuestionMarkPalette + call LoadHLPaletteIntoDE ; green question mark palette + jr .got_palette + +.is_pokemon + call GetMonPalettePointer_ + call LoadPalette_White_Col1_Col2_Black ; mon palette +.got_palette + call WipeAttrMap + hlcoord 1, 1, AttrMap + lb bc, 7, 7 + ld a, $1 ; green question mark palette + call FillBoxCGB + call InitPartyMenuOBPals + ld hl, .PokedexCursorPalette + ld de, UnknOBPals palette 7 ; green cursor palette + ld bc, 1 palettes + ld a, $5 + call FarCopyWRAM + call ApplyAttrMap + call ApplyPals + ld a, $1 + ld [hCGBPalUpdate], a + ret +; 8fba + +.PokedexQuestionMarkPalette: ; 8fba + RGB 11, 23, 00 + RGB 07, 17, 00 + RGB 06, 16, 03 + RGB 05, 12, 01 + +.PokedexCursorPalette: ; 8fc2 + RGB 00, 00, 00 + RGB 11, 23, 00 + RGB 07, 17, 00 + RGB 00, 00, 00 +; 8fca + +_CGB_BillsPC: ; 8fca + ld de, UnknBGPals + ld a, $1d + call GetPredefPal + call LoadHLPaletteIntoDE + ld a, [CurPartySpecies] + cp $ff + jr nz, .GetMonPalette + ld hl, .BillsPCOrangePalette + call LoadHLPaletteIntoDE + jr .Resume + +.GetMonPalette: + ld bc, TempMonDVs + call GetPlayerOrMonPalettePointer + call LoadPalette_White_Col1_Col2_Black +.Resume: + call WipeAttrMap + hlcoord 1, 4, AttrMap + lb bc, 7, 7 + ld a, $1 + call FillBoxCGB + call InitPartyMenuOBPals + call ApplyAttrMap + call ApplyPals + ld a, $1 + ld [hCGBPalUpdate], a + ret +; 9009 + +.Function9009: ; 9009 + ld hl, .BillsPCOrangePalette + call LoadHLPaletteIntoDE + jr .asm_901a + +.unused + ld bc, TempMonDVs + call GetPlayerOrMonPalettePointer + call LoadPalette_White_Col1_Col2_Black +.asm_901a + call WipeAttrMap + hlcoord 1, 1, AttrMap + lb bc, 7, 7 + ld a, $1 + call FillBoxCGB + call InitPartyMenuOBPals + call ApplyAttrMap + call ApplyPals + ld a, $1 + ld [hCGBPalUpdate], a + ret +; 9036 + +.BillsPCOrangePalette: ; 9036 + RGB 31, 15, 00 + RGB 23, 12, 00 + RGB 15, 07, 00 + RGB 00, 00, 00 +; 903e + +_CGB_PokedexUnownMode: ; 903e + ld de, UnknBGPals + ld a, $1d + call GetPredefPal + call LoadHLPaletteIntoDE + ld a, [CurPartySpecies] + call GetMonPalettePointer_ + call LoadPalette_White_Col1_Col2_Black + call WipeAttrMap + hlcoord 7, 5, AttrMap + lb bc, 7, 7 + ld a, $1 + call FillBoxCGB + call InitPartyMenuOBPals + call ApplyAttrMap + call ApplyPals + ld a, $1 + ld [hCGBPalUpdate], a + ret +; 906e + +_CGB_SlotMachine: ; 906e + ld hl, SlotMachinePals + ld de, UnknBGPals + ld bc, 16 palettes + ld a, $5 + call FarCopyWRAM + call WipeAttrMap + hlcoord 0, 2, AttrMap + lb bc, 10, 3 + ld a, $2 + call FillBoxCGB + hlcoord 17, 2, AttrMap + lb bc, 10, 3 + ld a, $2 + call FillBoxCGB + hlcoord 0, 4, AttrMap + lb bc, 6, 3 + ld a, $3 + call FillBoxCGB + hlcoord 17, 4, AttrMap + lb bc, 6, 3 + ld a, $3 + call FillBoxCGB + hlcoord 0, 6, AttrMap + lb bc, 2, 3 + ld a, $4 + call FillBoxCGB + hlcoord 17, 6, AttrMap + lb bc, 2, 3 + ld a, $4 + call FillBoxCGB + hlcoord 4, 2, AttrMap + lb bc, 2, 12 + ld a, $1 + call FillBoxCGB + hlcoord 3, 2, AttrMap + lb bc, 10, 1 + ld a, $1 + call FillBoxCGB + hlcoord 16, 2, AttrMap + lb bc, 10, 1 + ld a, $1 + call FillBoxCGB + hlcoord 0, 12, AttrMap + ld bc, $78 + ld a, $7 + call ByteFill + call ApplyAttrMap + call ApplyPals + ld a, $1 + ld [hCGBPalUpdate], a + ret +; 90f8 + +_CGB06: ; 90f8 + ld hl, PalPacket_9ca6 + 1 + call CopyFourPalettes + call WipeAttrMap + ld de, UnknOBPals + ld a, $3c + call GetPredefPal + call LoadHLPaletteIntoDE + hlcoord 0, 6, AttrMap + lb bc, 12, SCREEN_WIDTH + ld a, $1 + call FillBoxCGB + call ApplyAttrMap + call ApplyPals + ld a, $1 + ld [hCGBPalUpdate], a + ret +; 9122 + +_CGB07: ; 9122 + ld b, 0 + ld hl, .Jumptable + add hl, bc + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + jp hl +; 912d + +.Jumptable: ; 912d + dw .Function9133 + dw .Function9166 + dw .Function9180 +; 9133 + +.Function9133: ; 9133 + ld hl, .Palette_914e + ld de, UnknBGPals + call LoadHLPaletteIntoDE + ld hl, .Palette_9156 + ld de, UnknOBPals + ld bc, 2 palettes + ld a, $5 + call FarCopyWRAM + call WipeAttrMap + ret +; 914e + +.Palette_914e: ; 914e + RGB 19, 31, 19 + RGB 18, 23, 31 + RGB 11, 21, 28 + RGB 04, 16, 24 + +.Palette_9156: ; 9156 + RGB 29, 29, 29 + RGB 20, 19, 20 + RGB 19, 06, 04 + RGB 03, 04, 06 + + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 00, 00 + RGB 03, 04, 06 +; 9166 + +.Function9166: ; 9166 + ld de, UnknBGPals + ld a, $38 + call GetPredefPal + call LoadHLPaletteIntoDE + + ld de, UnknOBPals + ld a, $39 + call GetPredefPal + call LoadHLPaletteIntoDE + call WipeAttrMap + ret +; 9180 + +.Function9180: ; 9180 + ld hl, PalPacket_9c36 + 1 + call CopyFourPalettes + ld de, UnknOBPals + ld a, $3a + call GetPredefPal + call LoadHLPaletteIntoDE + call WipeAttrMap + ret +; 9195 + +_CGB11: ; 9195 + ld hl, Palettes_b789 + ld de, UnknBGPals + ld bc, 5 palettes + ld a, $5 + call FarCopyWRAM + call ApplyPals + call WipeAttrMap + call ApplyAttrMap + ret +; 91ad + +_CGB_Diploma: ; 91ad + ld hl, DiplomaPalettes + ld de, UnknBGPals + ld bc, 16 palettes + ld a, $5 + call FarCopyWRAM + + ld hl, PalPacket_9cb6 + 1 + call CopyFourPalettes + call WipeAttrMap + call ApplyAttrMap + ret +; 91c8 + +_CGB_MapPals: ; 91c8 + call LoadMapPals + ld a, SCGB_MAPPALS + ld [SGBPredef], a + ret +; 91d1 + +_CGB_PartyMenu: ; 91d1 + ld hl, PalPacket_9c56 + 1 + call CopyFourPalettes + call InitPartyMenuBGPal0 + call InitPartyMenuBGPal7 + call InitPartyMenuOBPals + call ApplyAttrMap + ret +; 91e4 + +_CGB_Evolution: ; 91e4 + ld de, UnknBGPals + ld a, c + and a + jr z, .pokemon + ld a, $1a + call GetPredefPal + call LoadHLPaletteIntoDE + jr .got_palette + +.pokemon + ld hl, PartyMon1DVs + ld bc, PARTYMON_STRUCT_LENGTH + ld a, [CurPartyMon] + call AddNTimes + ld c, l + ld b, h + ld a, [PlayerHPPal] + call GetPlayerOrMonPalettePointer + call LoadPalette_White_Col1_Col2_Black + ld hl, Palettes_979c + ld de, UnknOBPals palette 2 + ld bc, 6 palettes + ld a, $5 + call FarCopyWRAM + +.got_palette + call WipeAttrMap + call ApplyAttrMap + call ApplyPals + ld a, $1 + ld [hCGBPalUpdate], a + ret +; 9228 + +_CGB0c: ; 9228 + ld hl, Palettes_b6f1 + ld de, UnknBGPals + ld bc, 5 palettes + ld a, $5 + call FarCopyWRAM + ld hl, Palettes_b719 + ld de, UnknOBPals + ld bc, 2 palettes + ld a, $5 + call FarCopyWRAM + ld a, SCGB_DIPLOMA + ld [SGBPredef], a + call ApplyPals + ld a, $1 + ld [hCGBPalUpdate], a + ret +; 9251 + +_CGB0d: ; 9251 + ld hl, PalPacket_9cb6 + 1 + call CopyFourPalettes + call WipeAttrMap + call ApplyAttrMap + ret +; 925e + +_CGB_UnownPuzzle: ; 925e + ld hl, PalPacket_9bc6 + 1 + call CopyFourPalettes + ld de, UnknOBPals + ld a, $4c + call GetPredefPal + call LoadHLPaletteIntoDE + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, UnknOBPals + ld a, $1f + ld [hli], a + ld a, $0 + ld [hl], a + pop af + ld [rSVBK], a + call WipeAttrMap + call ApplyAttrMap + ret +; 9289 + +_CGB_TrainerCard: ; 9289 + ld de, UnknBGPals + xor a ; CHRIS + call GetTrainerPalettePointer + call LoadPalette_White_Col1_Col2_Black + ld a, FALKNER ; KRIS + call GetTrainerPalettePointer + call LoadPalette_White_Col1_Col2_Black + ld a, BUGSY + call GetTrainerPalettePointer + call LoadPalette_White_Col1_Col2_Black + ld a, WHITNEY + call GetTrainerPalettePointer + call LoadPalette_White_Col1_Col2_Black + ld a, MORTY + call GetTrainerPalettePointer + call LoadPalette_White_Col1_Col2_Black + ld a, CHUCK + call GetTrainerPalettePointer + call LoadPalette_White_Col1_Col2_Black + ld a, JASMINE + call GetTrainerPalettePointer + call LoadPalette_White_Col1_Col2_Black + ld a, PRYCE + call GetTrainerPalettePointer + call LoadPalette_White_Col1_Col2_Black + ld a, $24 + call GetPredefPal + call LoadHLPaletteIntoDE + + ; fill screen with opposite-gender palette for the card border + hlcoord 0, 0, AttrMap + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, [PlayerGender] + and a + ld a, $1 ; kris + jr z, .got_gender + ld a, $0 ; chris +.got_gender + call ByteFill + ; fill trainer sprite area with same-gender palette + hlcoord 14, 1, AttrMap + lb bc, 7, 5 + ld a, [PlayerGender] + and a + ld a, $0 ; chris + jr z, .got_gender2 + ld a, $1 ; kris +.got_gender2 + call FillBoxCGB + ; top-right corner still uses the border's palette + hlcoord 18, 1, AttrMap + ld [hl], $1 + hlcoord 2, 11, AttrMap + lb bc, 2, 4 + ld a, $1 ; falkner + call FillBoxCGB + hlcoord 6, 11, AttrMap + lb bc, 2, 4 + ld a, $2 ; bugsy + call FillBoxCGB + hlcoord 10, 11, AttrMap + lb bc, 2, 4 + ld a, $3 ; whitney + call FillBoxCGB + hlcoord 14, 11, AttrMap + lb bc, 2, 4 + ld a, $4 ; morty + call FillBoxCGB + hlcoord 2, 14, AttrMap + lb bc, 2, 4 + ld a, $5 ; chuck + call FillBoxCGB + hlcoord 6, 14, AttrMap + lb bc, 2, 4 + ld a, $6 ; jasmine + call FillBoxCGB + hlcoord 10, 14, AttrMap + lb bc, 2, 4 + ld a, $7 ; pryce + call FillBoxCGB + ; clair uses kris's palette + ld a, [PlayerGender] + and a + push af + jr z, .got_gender3 + hlcoord 14, 14, AttrMap + lb bc, 2, 4 + ld a, $1 + call FillBoxCGB +.got_gender3 + pop af + ld c, $0 + jr nz, .got_gender4 + inc c +.got_gender4 + ld a, c + hlcoord 18, 1, AttrMap + ld [hl], a + call ApplyAttrMap + call ApplyPals + ld a, $1 + ld [hCGBPalUpdate], a + ret +; 9373 + +_CGB_MoveList: ; 9373 + ld de, UnknBGPals + ld a, $10 + call GetPredefPal + call LoadHLPaletteIntoDE + ld a, [PlayerHPPal] + ld l, a + ld h, 0 + add hl, hl + add hl, hl + ld bc, Palettes_a8be + add hl, bc + call LoadPalette_White_Col1_Col2_Black + call WipeAttrMap + hlcoord 11, 1, AttrMap + lb bc, 2, 9 + ld a, $1 + call FillBoxCGB + call ApplyAttrMap + call ApplyPals + ld a, $1 + ld [hCGBPalUpdate], a + ret +; 93a6 + +_CGB0f: ; 93a6 + ld hl, PalPacket_9c46 + 1 + call CopyFourPalettes + call WipeAttrMap + call ApplyAttrMap + call ApplyPals + ld a, $1 + ld [hCGBPalUpdate], a + ret +; 93ba + +_CGB_PokedexSearchOption: ; 93ba + ld de, UnknBGPals + ld a, $1d + call GetPredefPal + call LoadHLPaletteIntoDE + call WipeAttrMap + call ApplyAttrMap + call ApplyPals + ld a, $1 + ld [hCGBPalUpdate], a + ret +; 93d3 + +_CGB_PackPals: ; 93d3 +; pack pals + ld a, [BattleType] + cp BATTLETYPE_TUTORIAL + jr z, .tutorial_male + + ld a, [PlayerGender] + bit 0, a + jr z, .tutorial_male + + ld hl, .KrisPackPals + jr .got_gender + +.tutorial_male + ld hl, .ChrisPackPals + +.got_gender + ld de, UnknBGPals + ld bc, 8 palettes ; 6 palettes? + ld a, $5 + call FarCopyWRAM + call WipeAttrMap + hlcoord 0, 0, AttrMap + lb bc, 1, 10 + ld a, $1 + call FillBoxCGB + hlcoord 10, 0, AttrMap + lb bc, 1, 10 + ld a, $2 + call FillBoxCGB + hlcoord 7, 2, AttrMap + lb bc, 9, 1 + ld a, $3 + call FillBoxCGB + hlcoord 0, 7, AttrMap + lb bc, 3, 5 + ld a, $4 + call FillBoxCGB + hlcoord 0, 3, AttrMap + lb bc, 3, 5 + ld a, $5 + call FillBoxCGB + call ApplyAttrMap + call ApplyPals + ld a, $1 + ld [hCGBPalUpdate], a + ret +; 9439 + +.ChrisPackPals: ; 9439 + RGB 31, 31, 31 + RGB 15, 15, 31 + RGB 00, 00, 31 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 15, 15, 31 + RGB 00, 00, 31 + RGB 00, 00, 00 + + RGB 31, 11, 31 + RGB 15, 15, 31 + RGB 00, 00, 31 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 15, 15, 31 + RGB 00, 00, 31 + RGB 31, 00, 00 + + RGB 31, 31, 31 + RGB 15, 15, 31 + RGB 31, 00, 00 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 07, 19, 07 + RGB 07, 19, 07 + RGB 00, 00, 00 +; 9469 + +.KrisPackPals: ; 9469 + RGB 31, 31, 31 + RGB 31, 14, 31 + RGB 31, 07, 31 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 31, 14, 31 + RGB 31, 07, 31 + RGB 00, 00, 00 + + RGB 15, 15, 31 + RGB 31, 14, 31 + RGB 31, 07, 31 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 31, 14, 31 + RGB 31, 07, 31 + RGB 31, 00, 00 + + RGB 31, 31, 31 + RGB 31, 14, 31 + RGB 31, 00, 00 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 07, 19, 07 + RGB 07, 19, 07 + RGB 00, 00, 00 +; 9499 + +_CGB_Pokepic: ; 9499 + call _CGB_MapPals + ld de, SCREEN_WIDTH + hlcoord 0, 0, AttrMap + ld a, [wMenuBorderTopCoord] +.loop + and a + jr z, .found_top + dec a + add hl, de + jr .loop + +.found_top + ld a, [wMenuBorderLeftCoord] + ld e, a + ld d, $0 + add hl, de + ld a, [wMenuBorderTopCoord] + ld b, a + ld a, [wMenuBorderBottomCoord] + inc a + sub b + ld b, a + ld a, [wMenuBorderLeftCoord] + ld c, a + ld a, [wMenuBorderRightCoord] + sub c + inc a + ld c, a + ld a, $0 + call FillBoxCGB + call ApplyAttrMap + ret +; 94d0 + +_CGB13: ; 94d0 + ld hl, PalPacket_9ba6 + 1 + call CopyFourPalettes + call WipeAttrMap + hlcoord 0, 4, AttrMap + lb bc, 10, SCREEN_WIDTH + ld a, $2 + call FillBoxCGB + hlcoord 0, 6, AttrMap + lb bc, 6, SCREEN_WIDTH + ld a, $1 + call FillBoxCGB + call ApplyAttrMap + call ApplyPals + ld a, $1 + ld [hCGBPalUpdate], a + ret +; 94fa + +_CGB_GamefreakLogo: ; 94fa + ld de, UnknBGPals + ld a, $4e + call GetPredefPal + call LoadHLPaletteIntoDE + ld hl, .Palette + ld de, UnknOBPals + call LoadHLPaletteIntoDE + ld hl, .Palette + ld de, UnknOBPals palette 1 + call LoadHLPaletteIntoDE + call WipeAttrMap + call ApplyAttrMap + call ApplyPals + ret +; 9521 + +.Palette: ; 9521 + RGB 31, 31, 31 + RGB 13, 11, 00 + RGB 23, 12, 28 + RGB 00, 00, 00 +; 9529 + +_CGB_PlayerOrMonFrontpicPals: ; 9529 + ld de, UnknBGPals + ld a, [CurPartySpecies] + ld bc, TempMonDVs + call GetPlayerOrMonPalettePointer + call LoadPalette_White_Col1_Col2_Black + call WipeAttrMap + call ApplyAttrMap + call ApplyPals + ret +; 9542 + +_CGB1e: ; 9542 + ld de, UnknBGPals + ld a, [CurPartySpecies] + call GetMonPalettePointer_ + call LoadPalette_White_Col1_Col2_Black + call WipeAttrMap + call ApplyAttrMap + ret +; 9555 + +_CGB_TradeTube: ; 9555 + ld hl, PalPacket_9cc6 + 1 + call CopyFourPalettes + ld hl, Palettes_b681 + ld de, UnknOBPals + ld bc, 1 palettes + ld a, $5 + call FarCopyWRAM + ld de, UnknOBPals palette 7 + ld a, $1c + call GetPredefPal + call LoadHLPaletteIntoDE + call WipeAttrMap + ret +; 9578 + +_CGB_TrainerOrMonFrontpicPals: ; 9578 + ld de, UnknBGPals + ld a, [CurPartySpecies] + ld bc, TempMonDVs + call GetFrontpicPalettePointer + call LoadPalette_White_Col1_Col2_Black + call WipeAttrMap + call ApplyAttrMap + call ApplyPals + ret +; 9591 + +_CGB_MysteryGift: ; 9591 + ld hl, .Palettes + ld de, UnknBGPals + ld bc, 2 palettes + ld a, $5 + call FarCopyWRAM + call ApplyPals + call WipeAttrMap + hlcoord 3, 7, AttrMap + lb bc, 8, 14 + ld a, $1 + call FillBoxCGB + hlcoord 1, 5, AttrMap + lb bc, 1, 18 + ld a, $1 + call FillBoxCGB + hlcoord 1, 16, AttrMap + lb bc, 1, 18 + ld a, $1 + call FillBoxCGB + hlcoord 0, 0, AttrMap + lb bc, 17, 2 + ld a, $1 + call FillBoxCGB + hlcoord 18, 5, AttrMap + lb bc, 12, 1 + ld a, $1 + call FillBoxCGB + call ApplyAttrMap + ret +; 95e0 + +.Palettes: ; 95e0 + RGB 31, 31, 31 + RGB 16, 31, 14 + RGB 05, 14, 21 + RGB 05, 13, 10 + + RGB 31, 31, 31 + RGB 11, 21, 25 + RGB 05, 14, 21 + RGB 00, 03, 19 +; 95f0 diff --git a/engine/color.asm b/engine/color.asm index add8c24ac..e339b30be 100644 --- a/engine/color.asm +++ b/engine/color.asm @@ -1,5 +1,4 @@ -PALPACKET_LENGTH EQU $10 -INCLUDE "predef/sgb.asm" +INCLUDE "engine/sgb_layouts.asm" SHINY_ATK_BIT EQU 5 SHINY_DEF_VAL EQU 10 @@ -500,7 +499,7 @@ LoadMailPalettes: RGB 00, 21, 00 RGB 00, 00, 00 -INCLUDE "predef/cgb.asm" +INCLUDE "engine/cgb_layouts.asm" Function95f0: ; XXX @@ -2027,13 +2026,13 @@ Palette_b311: ; b311 not mobile RGB 00, 00, 00 TilesetBGPalette: -INCLUDE "tilesets/bg.pal" +INCLUDE "data/palettes/bg.pal" MapObjectPals:: -INCLUDE "tilesets/ob.pal" +INCLUDE "data/palettes/ob.pal" RoofPals: -INCLUDE "tilesets/roof.pal" +INCLUDE "data/palettes/roof.pal" DiplomaPalettes: RGB 27, 31, 27 diff --git a/engine/crystal_colors.asm b/engine/crystal_colors.asm new file mode 100755 index 000000000..125fee8bc --- /dev/null +++ b/engine/crystal_colors.asm @@ -0,0 +1,614 @@ +GetMysteryGift_MobileAdapterLayout: ; 4930f (mobile) + ld a, b + cp SCGB_RAM + jr nz, .not_ram + ld a, [SGBPredef] +.not_ram + push af + callba ResetBGPals + pop af + ld l, a + ld h, 0 + add hl, hl + ld de, .dw + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ld de, .done + push de + jp hl +.done + ret +; 49330 (12:5330) + +.dw ; 49330 + + dw MG_Mobile_Layout00 + dw MG_Mobile_Layout01 + dw MG_Mobile_Layout02 +; 49336 + +MG_Mobile_Layout_FillBox: ; 49336 +.row + push bc + push hl +.col + ld [hli], a + dec c + jr nz, .col + pop hl + ld bc, SCREEN_WIDTH + add hl, bc + pop bc + dec b + jr nz, .row + ret +; 49346 + +MG_Mobile_Layout_WipeAttrMap: ; 49346 (12:5346) + hlcoord 0, 0, AttrMap + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + xor a + call ByteFill + ret + +MG_Mobile_Layout_LoadPals: ; 49351 (12:5351) + ld de, UnknBGPals + ld hl, Palette_493e1 + ld bc, 5 palettes + ld a, $5 ; BANK(UnknBGPals) + call FarCopyWRAM + ld de, UnknBGPals + 7 palettes + ld hl, Palette_TextBG7 + ld bc, 1 palettes + ld a, $5 ; BANK(UnknBGPals) + call FarCopyWRAM + ret + +MG_Mobile_Layout00: ; 4936e (12:536e) + call MG_Mobile_Layout_LoadPals + call MG_Mobile_Layout_WipeAttrMap + call MG_Mobile_Layout_CreatePalBoxes + callba ApplyAttrMap + callba ApplyPals + ret + +MG_Mobile_Layout_CreatePalBoxes: ; 49384 (12:5384) + hlcoord 0, 0, AttrMap + lb bc, 4, 1 + ld a, $1 + call MG_Mobile_Layout_FillBox + lb bc, 2, 1 + ld a, $2 + call MG_Mobile_Layout_FillBox + lb bc, 6, 1 + ld a, $3 + call MG_Mobile_Layout_FillBox + hlcoord 1, 0, AttrMap + ld a, $1 + lb bc, 3, 18 + call MG_Mobile_Layout_FillBox + lb bc, 2, 18 + ld a, $2 + call MG_Mobile_Layout_FillBox + lb bc, 12, 18 + ld a, $3 + call MG_Mobile_Layout_FillBox + hlcoord 19, 0, AttrMap + lb bc, 4, 1 + ld a, $1 + call MG_Mobile_Layout_FillBox + lb bc, 2, 1 + ld a, $2 + call MG_Mobile_Layout_FillBox + lb bc, 6, 1 + ld a, $3 + call MG_Mobile_Layout_FillBox + hlcoord 0, 12, AttrMap + ld bc, 6 * SCREEN_WIDTH + ld a, $7 + call ByteFill + ret +; 493e1 (12:53e1) + +Palette_493e1: ; 493e1 + RGB 03, 07, 09 + RGB 26, 31, 00 + RGB 20, 16, 03 + RGB 31, 31, 31 + + RGB 13, 24, 29 + RGB 11, 16, 30 + RGB 07, 11, 22 + RGB 05, 06, 18 + + RGB 31, 31, 31 + RGB 20, 26, 31 + RGB 13, 24, 29 + RGB 11, 16, 30 + + RGB 31, 31, 31 + RGB 20, 26, 31 + RGB 00, 00, 00 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 20, 16, 08 + RGB 31, 00, 00 + RGB 00, 00, 00 +; 49409 + +LoadOW_BGPal7:: ; 49409 + ld hl, Palette_TextBG7 + ld de, UnknBGPals + 8 * 7 + ld bc, 8 + ld a, $5 + call FarCopyWRAM + ret +; 49418 + +Palette_TextBG7: ; 49418 + RGB 31, 31, 31 + RGB 08, 19, 28 + RGB 05, 05, 16 + RGB 00, 00, 00 +; 49420 + +Function49420:: ; 49420 (12:5420) + ld hl, MansionPalette4 + ld de, UnknBGPals + $30 + ld bc, $8 + ld a, $5 ; BANK(UnknBGPals) + call FarCopyWRAM + ret +; 4942f (12:542f) + +MG_Mobile_Layout01: ; 4942f + call MG_Mobile_Layout_LoadPals + ld de, UnknBGPals + $38 + ld hl, Palette_49478 + ld bc, $8 + ld a, $5 ; BANK(UnknBGPals) + call FarCopyWRAM + call MG_Mobile_Layout_WipeAttrMap + hlcoord 0, 0, AttrMap + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + xor a + call ByteFill + hlcoord 0, 14, AttrMap + ld bc, 4 * SCREEN_WIDTH + ld a, $7 + call ByteFill + ld a, [wd002] + bit 6, a + jr z, .asm_49464 + call Function49480 + jr .asm_49467 + +.asm_49464 + call Function49496 + +.asm_49467 + callba ApplyAttrMap + callba ApplyPals + ld a, $1 + ld [hCGBPalUpdate], a + ret +; 49478 + +Palette_49478: ; 49478 + RGB 31, 31, 31 + RGB 26, 31, 00 + RGB 20, 16, 03 + RGB 00, 00, 00 +; 49480 + +Function49480: ; 49480 + hlcoord 0, 0, AttrMap + lb bc, 4, SCREEN_WIDTH + ld a, $7 + call MG_Mobile_Layout_FillBox + hlcoord 0, 2, AttrMap + ld a, $4 + ld [hl], a + hlcoord 19, 2, AttrMap + ld [hl], a + ret +; 49496 + +Function49496: ; 49496 + hlcoord 0, 0, AttrMap + lb bc, 2, SCREEN_WIDTH + ld a, $7 + call MG_Mobile_Layout_FillBox + hlcoord 0, 1, AttrMap + ld a, $4 + ld [hl], a + hlcoord 19, 1, AttrMap + ld [hl], a + ret +; 494ac + +LoadSpecialMapPalette: ; 494ac + ld a, [wTileset] + cp TILESET_POKECOM_CENTER + jr z, .pokecom_2f + cp TILESET_BATTLE_TOWER + jr z, .battle_tower + cp TILESET_ICE_PATH + jr z, .ice_path + cp TILESET_HOUSE_1 + jr z, .house + cp TILESET_RADIO_TOWER + jr z, .radio_tower + cp TILESET_CELADON_MANSION + jr z, .mansion_mobile + jr .do_nothing + +.pokecom_2f + call LoadPokeComPalette + scf + ret + +.battle_tower + call LoadBattleTowerPalette + scf + ret + +.ice_path + ld a, [wPermission] ; permission + and 7 + cp 3 ; 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 +; 494f2 + +LoadPokeComPalette: ; 494f2 + ld a, $5 + ld de, UnknBGPals + ld hl, PokeComPalette + ld bc, 8 palettes + call FarCopyWRAM + ret +; 49501 + +PokeComPalette: ; 49501 +INCLUDE "tilesets/pokecom_center.pal" +; 49541 + +LoadBattleTowerPalette: ; 49541 + ld a, $5 + ld de, UnknBGPals + ld hl, BattleTowerPalette + ld bc, 8 palettes + call FarCopyWRAM + ret +; 49550 + +BattleTowerPalette: ; 49550 +INCLUDE "tilesets/battle_tower.pal" +; 49590 + +LoadIcePathPalette: ; 49590 + ld a, $5 + ld de, UnknBGPals + ld hl, IcePathPalette + ld bc, 8 palettes + call FarCopyWRAM + ret +; 4959f + +IcePathPalette: ; 4959f +INCLUDE "tilesets/ice_path.pal" +; 495df + +LoadHousePalette: ; 495df + ld a, $5 + ld de, UnknBGPals + ld hl, HousePalette + ld bc, 8 palettes + call FarCopyWRAM + ret +; 495ee + +HousePalette: ; 495ee +INCLUDE "tilesets/house_1.pal" +; 4962e + +LoadRadioTowerPalette: ; 4962e + ld a, $5 + ld de, UnknBGPals + ld hl, RadioTowerPalette + ld bc, 8 palettes + call FarCopyWRAM + ret +; 4963d + +RadioTowerPalette: ; 4963d +INCLUDE "tilesets/radio_tower.pal" +; 4967d + +MansionPalette1: ; 4967d + RGB 30, 28, 26 + RGB 19, 19, 19 + RGB 13, 13, 13 + RGB 07, 07, 07 + + RGB 30, 28, 26 + RGB 31, 19, 24 + RGB 30, 10, 06 + RGB 07, 07, 07 + + RGB 18, 24, 09 + RGB 15, 20, 01 + RGB 09, 13, 00 + RGB 07, 07, 07 + + RGB 30, 28, 26 + RGB 15, 16, 31 + RGB 09, 09, 31 + RGB 07, 07, 07 + + RGB 30, 28, 26 + RGB 31, 31, 07 + RGB 31, 16, 01 + RGB 07, 07, 07 + + RGB 26, 24, 17 + RGB 21, 17, 07 + RGB 16, 13, 03 + RGB 07, 07, 07 + +MansionPalette3: ; 496ad + RGB 30, 28, 26 + RGB 17, 19, 31 + RGB 14, 16, 31 + RGB 07, 07, 07 + + RGB 31, 31, 16 + RGB 31, 31, 16 + RGB 14, 09, 00 + RGB 00, 00, 00 +; 496bd + +MansionPalette4: ; 496bd + RGB 05, 05, 16 + RGB 08, 19, 28 + RGB 00, 00, 00 + RGB 31, 31, 31 +; 496c5 + +LoadMansionPalette: ; 496c5 + ld a, $5 + ld de, UnknBGPals + ld hl, MansionPalette1 + ld bc, 8 palettes + call FarCopyWRAM + ld a, $5 + ld de, UnknBGPals + 4 palettes + ld hl, MansionPalette2 + ld bc, 1 palettes + call FarCopyWRAM + ld a, $5 + ld de, UnknBGPals + 3 palettes + ld hl, MansionPalette3 + ld bc, 1 palettes + call FarCopyWRAM + ld a, $5 + ld de, UnknBGPals + 6 palettes + ld hl, MansionPalette4 + ld bc, 1 palettes + call FarCopyWRAM + ret +; 496fe + +MansionPalette2: ; 496fe + RGB 25, 24, 23 + RGB 20, 19, 19 + RGB 14, 16, 31 + RGB 07, 07, 07 +; 49706 + +MG_Mobile_Layout02: ; 49706 + ld hl, Palette_49732 + ld de, UnknBGPals + ld bc, 1 palettes + ld a, $5 + call FarCopyWRAM + callba ApplyPals + call MG_Mobile_Layout_WipeAttrMap + callba ApplyAttrMap + ld hl, Palette_4973a + ld de, UnknOBPals + ld bc, 1 palettes + ld a, $5 + call FarCopyWRAM + ret +; 49732 + +Palette_49732: ; 49732 + RGB 31, 31, 31 + RGB 23, 16, 07 + RGB 23, 07, 07 + RGB 03, 07, 20 +; 4973a + +Palette_4973a: ; 4973a + RGB 00, 00, 00 + RGB 07, 05, 31 + RGB 14, 18, 31 + RGB 31, 31, 31 +; 49742 + +Function49742: ; 49742 + ld hl, Palette_49757 + ld de, UnknBGPals + ld bc, $40 + ld a, $5 + call FarCopyWRAM + callba ApplyPals + ret +; 49757 + +Palette_49757: ; 49757 + RGB 31, 31, 63 + RGB 00, 00, 00 + RGB 00, 00, 00 + RGB 00, 00, 00 + + RGB 31, 31, 63 + RGB 00, 00, 00 + RGB 00, 00, 00 + RGB 00, 00, 00 + + RGB 04, 02, 15 + RGB 21, 00, 21 + RGB 31, 00, 00 + RGB 31, 31, 31 + + RGB 04, 02, 15 + RGB 21, 00, 21 + RGB 30, 16, 26 + RGB 31, 31, 31 + + RGB 04, 02, 15 + RGB 21, 00, 21 + RGB 16, 16, 16 + RGB 31, 31, 31 + + RGB 04, 02, 15 + RGB 21, 00, 21 + RGB 31, 12, 12 + RGB 31, 31, 31 + + RGB 04, 02, 15 + RGB 21, 00, 21 + RGB 07, 08, 31 + RGB 31, 31, 31 + + RGB 04, 02, 15 + RGB 21, 00, 21 + RGB 29, 28, 09 + RGB 31, 31, 31 +; 49797 + +_InitMG_Mobile_LinkTradePalMap: ; 49797 + hlcoord 0, 0, AttrMap + lb bc, 16, 2 + ld a, $4 + call MG_Mobile_Layout_FillBox + ld a, $3 + ldcoord_a 0, 1, AttrMap + ldcoord_a 0, 14, AttrMap + hlcoord 2, 0, AttrMap + lb bc, 8, 18 + ld a, $5 + call MG_Mobile_Layout_FillBox + hlcoord 2, 8, AttrMap + lb bc, 8, 18 + ld a, $6 + call MG_Mobile_Layout_FillBox + hlcoord 0, 16, AttrMap + lb bc, 2, SCREEN_WIDTH + ld a, $4 + call MG_Mobile_Layout_FillBox + ld a, $3 + lb bc, 6, 1 + hlcoord 6, 1, AttrMap + call MG_Mobile_Layout_FillBox + ld a, $3 + lb bc, 6, 1 + hlcoord 17, 1, AttrMap + call MG_Mobile_Layout_FillBox + ld a, $3 + lb bc, 6, 1 + hlcoord 6, 9, AttrMap + call MG_Mobile_Layout_FillBox + ld a, $3 + lb bc, 6, 1 + hlcoord 17, 9, AttrMap + call MG_Mobile_Layout_FillBox + ld a, $2 + hlcoord 2, 16, AttrMap + ld [hli], a + ld a, $7 + ld [hli], a + ld [hli], a + ld [hli], a + ld a, $2 + ld [hl], a + hlcoord 2, 17, AttrMap + ld a, $3 + ld bc, 6 + call ByteFill + ret +; 49811 + +LoadTradeRoomBGPals: ; 49811 + ld hl, Palette_49826 + ld de, UnknBGPals + $10 + ld bc, $30 + ld a, $5 + call FarCopyWRAM + callba ApplyPals + ret +; 49826 + +Palette_49826: ; 49826 + RGB 04, 02, 15 + RGB 07, 09, 31 + RGB 31, 00, 00 + RGB 31, 31, 31 + + RGB 04, 02, 15 + RGB 07, 09, 31 + RGB 15, 23, 30 + RGB 31, 31, 31 + + RGB 04, 02, 15 + RGB 07, 09, 31 + RGB 16, 16, 16 + RGB 31, 31, 31 + + RGB 04, 02, 15 + RGB 07, 09, 31 + RGB 25, 07, 04 + RGB 31, 31, 31 + + RGB 04, 02, 15 + RGB 07, 09, 31 + RGB 03, 22, 08 + RGB 31, 31, 31 + + RGB 04, 02, 15 + RGB 07, 09, 31 + RGB 29, 28, 09 + RGB 31, 31, 31 +; 49856 + +InitMG_Mobile_LinkTradePalMap: ; 49856 + call _InitMG_Mobile_LinkTradePalMap + ret +; 4985a diff --git a/engine/link.asm b/engine/link.asm index 7bca8b891..5be841394 100755 --- a/engine/link.asm +++ b/engine/link.asm @@ -2034,7 +2034,7 @@ Function28f09: ; 28f09 ret ; 28f24 -INCLUDE "engine/trade/animation.asm" +INCLUDE "engine/trade_animation.asm" Special_CheckTimeCapsuleCompatibility: ; 29bfb ; Checks to see if your Party is compatible with the generation 1 games. Returns the following in ScriptVar: diff --git a/engine/printer.asm b/engine/printer.asm index 7dd2d4f4a..777ea9269 100755 --- a/engine/printer.asm +++ b/engine/printer.asm @@ -1,4 +1,4 @@ -INCLUDE "engine/printer/serial.asm" +INCLUDE "engine/printer_serial.asm" SendScreenToPrinter: ; 843f0 .loop diff --git a/engine/printer/serial.asm b/engine/printer/serial.asm deleted file mode 100755 index 6909a38b2..000000000 --- a/engine/printer/serial.asm +++ /dev/null @@ -1,645 +0,0 @@ -Printer_StartTransmission: ; 84000 - ld hl, wGameboyPrinterRAM - ld bc, wGameboyPrinterRAMEnd - wGameboyPrinterRAM - xor a - call Printer_ByteFill - xor a - ld [rSB], a - ld [rSC], a - ld [wPrinterOpcode], a - ld hl, wPrinterConnectionOpen - set 0, [hl] - ld a, [GBPrinter] - ld [wGBPrinterSettings], a - xor a - ld [wJumptableIndex], a - ret -; 84022 - -PrinterJumptableIteration: ; 84022 - ld a, [wJumptableIndex] - ld e, a - ld d, 0 - ld hl, .Jumptable - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp hl -; 84031 - - -.Jumptable: ; 84031 (21:4031) - - dw Print_InitPrinterHandshake ; 00 - dw Printer_CheckConnectionStatus ; 01 - dw Printer_WaitSerial ; 02 - dw Printer_StartTransmittingTilemap ; 03 - dw Printer_TransmissionLoop ; 04 - dw Printer_WaitSerialAndLoopBack2 ; 05 - - dw Printer_EndTilemapTransmission ; 06 - dw Printer_TransmissionLoop ; 07 - dw Printer_WaitSerial ; 08 - dw Printer_SignalSendHeader ; 09 - dw Printer_TransmissionLoop ; 0a - dw Printer_WaitSerial ; 0b - dw Printer_WaitUntilFinished ; 0c - dw Printer_Quit ; 0d - - dw Printer_NextSection_ ; 0e - dw Printer_WaitSerial ; 0f - dw Printer_SignalLoopBack ; 10 - dw Printer_SectionOne ; 11 - dw Printer_WaitLoopBack ; 12 - dw Printer_WaitLoopBack_ ; 13 - - -Printer_NextSection: ; 84059 (21:4059) - ld hl, wJumptableIndex - inc [hl] - ret - -Printer_PrevSection: ; 8405e (21:405e) - ld hl, wJumptableIndex - dec [hl] - ret - -Printer_Quit: ; 84063 (21:4063) - xor a - ld [wPrinterStatusFlags], a - ld hl, wJumptableIndex - set 7, [hl] - ret - -Printer_NextSection_: ; 8406d (21:406d) - call Printer_NextSection - ret - -Printer_SectionOne: ; 84071 (21:4071) - ld a, $1 - ld [wJumptableIndex], a - ret - -Print_InitPrinterHandshake: ; 84077 (21:4077) - call Printer_ResetData - ld hl, PrinterDataPacket1 - call Printer_CopyPacket - xor a - ld [wPrinterSendByteCounter], a - ld [wPrinterSendByteCounter + 1], a - ld a, [wPrinterQueueLength] - ld [wPrinterRowIndex], a - call Printer_NextSection - call Printer_WaitHandshake - ld a, PRINTER_STATUS_CHECKING - ld [wPrinterStatus], a - ret - -Printer_StartTransmittingTilemap: ; 84099 (21:4099) - call Printer_ResetData - ; check ??? - ld hl, wPrinterRowIndex - ld a, [hl] - and a - jr z, Printer_EndTilemapTransmission - ; send packet 3 - ld hl, PrinterDataPacket3 ; signal start of transmission - call Printer_CopyPacket - ; prepare to send 40 tiles - call Printer_Convert2RowsTo2bpp - ld a, (40 tiles) % $100 - ld [wPrinterSendByteCounter], a - ld a, (40 tiles) / $100 - ld [wPrinterSendByteCounter + 1], a - ; compute the checksum - call Printer_ComputeChecksum - call Printer_NextSection - call Printer_WaitHandshake - ld a, PRINTER_STATUS_TRANSMITTING - ld [wPrinterStatus], a - ret - -Printer_EndTilemapTransmission: ; 840c5 (21:40c5) - ; ensure that we go from here to routine 7 - ld a, $6 - ld [wJumptableIndex], a - ; send packet 4 - ld hl, PrinterDataPacket4 ; signal no transmission - call Printer_CopyPacket - ; send no tile data - xor a - ld [wPrinterSendByteCounter], a - ld [wPrinterSendByteCounter + 1], a - call Printer_NextSection - call Printer_WaitHandshake - ret - -Printer_SignalSendHeader: ; 840de (21:40de) - call Printer_ResetData - ld hl, PrinterDataPacket2 ; signal request print - call Printer_CopyPacket - ; prepare to send 1 tile - call Printer_StageHeaderForSend - ld a, 4 % $100 - ld [wPrinterSendByteCounter], a - ld a, 4 / $100 - ld [wPrinterSendByteCounter + 1], a - ; compute the checksum - call Printer_ComputeChecksum - call Printer_NextSection - call Printer_WaitHandshake - ld a, PRINTER_STATUS_PRINTING - ld [wPrinterStatus], a - ret - -Printer_SignalLoopBack: ; 84103 (21:4103) - call Printer_ResetData - ; send packet 1 - ld hl, PrinterDataPacket1 ; signal no transmission - call Printer_CopyPacket - ; send no tile data - xor a - ld [wPrinterSendByteCounter], a - ld [wPrinterSendByteCounter + 1], a - ld a, [wPrinterQueueLength] - ld [wPrinterRowIndex], a - call Printer_NextSection - call Printer_WaitHandshake - ret - -Printer_WaitSerial: ; 84120 (21:4120) - ld hl, wPrinterSerialFrameDelay - inc [hl] - ld a, [hl] - cp $6 - ret c - xor a - ld [hl], a - call Printer_NextSection - ret - -Printer_WaitSerialAndLoopBack2: ; 8412e (21:412e) - ld hl, wPrinterSerialFrameDelay - inc [hl] - ld a, [hl] - cp $6 - ret c - xor a - ld [hl], a - ld hl, wPrinterRowIndex - dec [hl] - call Printer_PrevSection - call Printer_PrevSection - ret - -Printer_CheckConnectionStatus: ; 84143 (21:4143) - ld a, [wPrinterOpcode] - and a - ret nz - ld a, [wPrinterHandshake] - cp $ff - jr nz, .printer_connected - ld a, [wPrinterStatusFlags] - cp $ff - jr z, .printer_error - -.printer_connected - ld a, [wPrinterHandshake] - cp $81 - jr nz, .printer_error - ld a, [wPrinterStatusFlags] - cp $0 - jr nz, .printer_error - ld hl, wPrinterConnectionOpen - set 1, [hl] - ld a, $5 - ld [wHandshakeFrameDelay], a - call Printer_NextSection - ret - -.printer_error - ld a, $ff - ld [wPrinterHandshake], a - ld [wPrinterStatusFlags], a - ld a, $e - ld [wJumptableIndex], a - ret - -Printer_TransmissionLoop: ; 84180 (21:4180) - ld a, [wPrinterOpcode] - and a - ret nz - ld a, [wPrinterStatusFlags] - and $f0 - jr nz, .enter_wait_loop - ld a, [wPrinterStatusFlags] - and $1 - jr nz, .cycle_back - call Printer_NextSection - ret - -.cycle_back - call Printer_PrevSection - ret - -.enter_wait_loop - ld a, $12 ; Printer_WaitLoopBack - ld [wJumptableIndex], a - ret - -Printer_WaitUntilFinished: ; 841a1 (21:41a1) - ld a, [wPrinterOpcode] - and a - ret nz - ld a, [wPrinterStatusFlags] - and $f3 - ret nz - call Printer_NextSection - ret - -Printer_WaitLoopBack: ; 841b0 (21:41b0) - call Printer_NextSection -Printer_WaitLoopBack_: ; 841b3 (21:41b3) - ld a, [wPrinterOpcode] - and a - ret nz - ld a, [wPrinterStatusFlags] - and $f0 - ret nz - xor a - ld [wJumptableIndex], a - ret - -Printer_WaitHandshake: ; 841c3 (21:41c3) -.loop - ld a, [wPrinterOpcode] - and a - jr nz, .loop - xor a - ld [wPrinterSendByteOffset], a - ld [wPrinterSendByteOffset + 1], a - ld a, $1 - ld [wPrinterOpcode], a - ld a, $88 - ld [rSB], a - ld a, $1 - ld [rSC], a - ld a, $81 - ld [rSC], a - ret - -Printer_CopyPacket: ; 841e2 (21:41e2) - ld a, [hli] - ld [wPrinterData], a - ld a, [hli] - ld [wPrinterData + 1], a - ld a, [hli] - ld [wPrinterData + 2], a - ld a, [hli] - ld [wPrinterData + 3], a - ld a, [hli] - ld [wPrinterChecksum], a - ld a, [hl] - ld [wPrinterChecksum + 1], a - ret - -Printer_ResetData: ; 841fb (21:41fb) - xor a - ld hl, wPrinterData - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a - ld hl, wPrinterChecksum - ld [hli], a - ld [hl], a - xor a - ld [wPrinterSendByteCounter], a - ld [wPrinterSendByteCounter + 1], a - ld hl, wGameboyPrinterRAM - ld bc, wGameboyPrinter2bppSourceEnd - wGameboyPrinter2bppSource - call Printer_ByteFill - ret - -Printer_ComputeChecksum: ; 84219 (21:4219) - ld hl, 0 - ld bc, 4 - ld de, wPrinterData - call .ComputeChecksum - ld a, [wPrinterSendByteCounter] - ld c, a - ld a, [wPrinterSendByteCounter + 1] - ld b, a - ld de, wGameboyPrinterRAM - call .ComputeChecksum - ld a, l - ld [wPrinterChecksum], a - ld a, h - ld [wPrinterChecksum + 1], a - ret - -.ComputeChecksum: ; 8423c (21:423c) -.loop - ld a, [de] - inc de - add l - jr nc, .no_overflow - inc h -.no_overflow - ld l, a - dec bc - ld a, c - or b - jr nz, .loop - ret - -Printer_StageHeaderForSend: ; 84249 (21:4249) - ld a, $1 - ld [wGameboyPrinter2bppSource + 0], a - ld a, [wcbfa] - ld [wGameboyPrinter2bppSource + 1], a - ld a, %11100100 - ld [wGameboyPrinter2bppSource + 2], a - ld a, [wGBPrinterSettings] - ld [wGameboyPrinter2bppSource + 3], a - ret - -Printer_Convert2RowsTo2bpp: ; 84260 (21:4260) - ; de = wPrinterTileMapBuffer + 2 * SCREEN_WIDTH * ([wPrinterQueueLength] - [wPrinterRowIndex]) - ld a, [wPrinterRowIndex] - xor $ff - ld d, a - ld a, [wPrinterQueueLength] - inc a - add d - ld hl, wPrinterTileMapBuffer - ld de, 2 * SCREEN_WIDTH -.loop1 - and a - jr z, .okay1 - add hl, de - dec a - jr .loop1 -.okay1 - ld e, l - ld d, h - ld hl, wGameboyPrinter2bppSource - ld c, 2 * SCREEN_WIDTH -.loop2 - ld a, [de] - inc de - push bc - push de - push hl - ; convert tile index to vram address - swap a - ld d, a - and $f0 - ld e, a - ld a, d - and $f - ld d, a - and $8 - ld a, d - jr nz, .vtiles_8xxx - or $90 - jr .got_vtile_addr - -.vtiles_8xxx - or $80 -.got_vtile_addr - ld d, a - ; copy 1 vtile to hl - lb bc, BANK(Printer_Convert2RowsTo2bpp), 1 - call Request2bpp - pop hl - ld de, 1 tiles - add hl, de - pop de - pop bc - dec c - jr nz, .loop2 - ret - -Printer_ByteFill: ; 842ab - push de - ld e, a -.loop - ld [hl], e - inc hl - dec bc - ld a, c - or b - jr nz, .loop - ld a, e - pop de - ret -; 842b7 - -PrinterDataPacket1: - db 1, 0, $00, 0 - dw 1 -PrinterDataPacket2: - db 2, 0, $04, 0 - dw 0 -PrinterDataPacket3: - db 4, 0, $80, 2 - dw 0 -PrinterDataPacket4: - db 4, 0, $00, 0 - dw 4 -PrinterDataPacket5: ; unused - db 8, 0, $00, 0 - dw 8 -PrinterDataPacket6: ; unused - db 15, 0, $00, 0 - dw 15 -; 842db - -_PrinterReceive:: ; 842db - ld a, [wPrinterOpcode] - add a - ld e, a - ld d, 0 - ld hl, .Jumptable - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp hl -; 842ea - - -.Jumptable: ; 842ea (21:42ea) - dw Printer_DoNothing ; 00 - - dw Printer_Send0x33 ; 01 - dw Printer_SendPrinterData1 ; 02 - dw Printer_SendPrinterData2 ; 03 - dw Printer_SendPrinterData3 ; 04 - dw Printer_SendPrinterData4 ; 05 - dw Printer_SendNextByte ; 06 - dw Printer_SendwPrinterChecksumLo ; 07 - dw Printer_SendwPrinterChecksumHi ; 08 - dw Printer_Send0x00 ; 09 - dw Printer_ReceiveTowPrinterHandshakeAndSend0x00 ; 0a - dw Printer_ReceiveTowPrinterStatusFlagsAndExitSendLoop ; 0b - - dw Printer_Send0x33 ; 0c triggered by AskSerial - dw Printer_Send0x0f ; 0d - dw Printer_Send0x00_ ; 0e - dw Printer_Send0x00_ ; 0f - dw Printer_Send0x00_ ; 10 - dw Printer_Send0x0f ; 11 - dw Printer_Send0x00_ ; 12 - dw Printer_Send0x00 ; 13 - dw Printer_ReceiveTowPrinterHandshakeAndSend0x00 ; 14 - dw Printer_ReceiveTowPrinterStatusFlagsAndExitSendLoop_ ; 15 - - dw Printer_Send0x33 ; 16 triggered by pressing B - dw Printer_Send0x08 ; 17 - dw Printer_Send0x00_ ; 18 - dw Printer_Send0x00_ ; 19 - dw Printer_Send0x00_ ; 1a - dw Printer_Send0x08 ; 1b - dw Printer_Send0x00_ ; 1c - dw Printer_Send0x00 ; 1d - dw Printer_ReceiveTowPrinterHandshakeAndSend0x00 ; 1e - dw Printer_ReceiveTowPrinterStatusFlagsAndExitSendLoop ; 1f - - -Printer_NextInstruction: ; 8432a (21:432a) - ld hl, wPrinterOpcode - inc [hl] - ret - -Printer_DoNothing: ; 8432f (21:432f) - ret - -Printer_Send0x33: ; 84330 (21:4330) - ld a, $33 - call Printer_SerialSend - call Printer_NextInstruction - ret - -Printer_SendPrinterData1: ; 84339 (21:4339) - ld a, [wPrinterData] - call Printer_SerialSend - call Printer_NextInstruction - ret - -Printer_SendPrinterData2: ; 84343 (21:4343) - ld a, [wPrinterData + 1] - call Printer_SerialSend - call Printer_NextInstruction - ret - -Printer_SendPrinterData3: ; 8434d (21:434d) - ld a, [wPrinterData + 2] - call Printer_SerialSend - call Printer_NextInstruction - ret - -Printer_SendPrinterData4: ; 84357 (21:4357) - ld a, [wPrinterData + 3] - call Printer_SerialSend - call Printer_NextInstruction - ret - -Printer_SendNextByte: ; 84361 (21:4361) - ; decrement 16-bit counter - ld hl, wPrinterSendByteCounter - ld a, [hli] - ld d, [hl] - ld e, a - or d - jr z, .done - dec de - ld [hl], d - dec hl - ld [hl], e - - ld a, [wPrinterSendByteOffset] - ld e, a - ld a, [wPrinterSendByteOffset + 1] - ld d, a - ld hl, wGameboyPrinterRAM - add hl, de - inc de - ld a, e - ld [wPrinterSendByteOffset], a - ld a, d - ld [wPrinterSendByteOffset + 1], a - ld a, [hl] - call Printer_SerialSend - ret - -.done - call Printer_NextInstruction -Printer_SendwPrinterChecksumLo: ; 8438b (21:438b) - ld a, [wPrinterChecksum] - call Printer_SerialSend - call Printer_NextInstruction - ret - -Printer_SendwPrinterChecksumHi: ; 84395 (21:4395) - ld a, [wPrinterChecksum + 1] - call Printer_SerialSend - call Printer_NextInstruction - ret - -Printer_Send0x00: ; 8439f (21:439f) - ld a, $0 - call Printer_SerialSend - call Printer_NextInstruction - ret - -Printer_ReceiveTowPrinterHandshakeAndSend0x00: ; 843a8 (21:43a8) - ld a, [rSB] - ld [wPrinterHandshake], a - ld a, $0 - call Printer_SerialSend - call Printer_NextInstruction - ret - -Printer_ReceiveTowPrinterStatusFlagsAndExitSendLoop: ; 843b6 (21:43b6) - ld a, [rSB] - ld [wPrinterStatusFlags], a - xor a - ld [wPrinterOpcode], a - ret - -Printer_Send0x0f: ; 843c0 (21:43c0) - ld a, $f - call Printer_SerialSend - call Printer_NextInstruction - ret - -Printer_Send0x00_: ; 843c9 (21:43c9) - ld a, $0 - call Printer_SerialSend - call Printer_NextInstruction - ret - -Printer_Send0x08: ; 843d2 (21:43d2) - ld a, $8 - call Printer_SerialSend - call Printer_NextInstruction - ret - -Printer_SerialSend: ; 843db (21:43db) - ld [rSB], a - ld a, $1 ; switch to internal clock - ld [rSC], a - ld a, $81 ; start transfer - ld [rSC], a - ret - -Printer_ReceiveTowPrinterStatusFlagsAndExitSendLoop_: ; 843e6 (21:43e6) - ld a, [rSB] - ld [wPrinterStatusFlags], a - xor a - ld [wPrinterOpcode], a - ret diff --git a/engine/printer_serial.asm b/engine/printer_serial.asm new file mode 100755 index 000000000..6909a38b2 --- /dev/null +++ b/engine/printer_serial.asm @@ -0,0 +1,645 @@ +Printer_StartTransmission: ; 84000 + ld hl, wGameboyPrinterRAM + ld bc, wGameboyPrinterRAMEnd - wGameboyPrinterRAM + xor a + call Printer_ByteFill + xor a + ld [rSB], a + ld [rSC], a + ld [wPrinterOpcode], a + ld hl, wPrinterConnectionOpen + set 0, [hl] + ld a, [GBPrinter] + ld [wGBPrinterSettings], a + xor a + ld [wJumptableIndex], a + ret +; 84022 + +PrinterJumptableIteration: ; 84022 + ld a, [wJumptableIndex] + ld e, a + ld d, 0 + ld hl, .Jumptable + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp hl +; 84031 + + +.Jumptable: ; 84031 (21:4031) + + dw Print_InitPrinterHandshake ; 00 + dw Printer_CheckConnectionStatus ; 01 + dw Printer_WaitSerial ; 02 + dw Printer_StartTransmittingTilemap ; 03 + dw Printer_TransmissionLoop ; 04 + dw Printer_WaitSerialAndLoopBack2 ; 05 + + dw Printer_EndTilemapTransmission ; 06 + dw Printer_TransmissionLoop ; 07 + dw Printer_WaitSerial ; 08 + dw Printer_SignalSendHeader ; 09 + dw Printer_TransmissionLoop ; 0a + dw Printer_WaitSerial ; 0b + dw Printer_WaitUntilFinished ; 0c + dw Printer_Quit ; 0d + + dw Printer_NextSection_ ; 0e + dw Printer_WaitSerial ; 0f + dw Printer_SignalLoopBack ; 10 + dw Printer_SectionOne ; 11 + dw Printer_WaitLoopBack ; 12 + dw Printer_WaitLoopBack_ ; 13 + + +Printer_NextSection: ; 84059 (21:4059) + ld hl, wJumptableIndex + inc [hl] + ret + +Printer_PrevSection: ; 8405e (21:405e) + ld hl, wJumptableIndex + dec [hl] + ret + +Printer_Quit: ; 84063 (21:4063) + xor a + ld [wPrinterStatusFlags], a + ld hl, wJumptableIndex + set 7, [hl] + ret + +Printer_NextSection_: ; 8406d (21:406d) + call Printer_NextSection + ret + +Printer_SectionOne: ; 84071 (21:4071) + ld a, $1 + ld [wJumptableIndex], a + ret + +Print_InitPrinterHandshake: ; 84077 (21:4077) + call Printer_ResetData + ld hl, PrinterDataPacket1 + call Printer_CopyPacket + xor a + ld [wPrinterSendByteCounter], a + ld [wPrinterSendByteCounter + 1], a + ld a, [wPrinterQueueLength] + ld [wPrinterRowIndex], a + call Printer_NextSection + call Printer_WaitHandshake + ld a, PRINTER_STATUS_CHECKING + ld [wPrinterStatus], a + ret + +Printer_StartTransmittingTilemap: ; 84099 (21:4099) + call Printer_ResetData + ; check ??? + ld hl, wPrinterRowIndex + ld a, [hl] + and a + jr z, Printer_EndTilemapTransmission + ; send packet 3 + ld hl, PrinterDataPacket3 ; signal start of transmission + call Printer_CopyPacket + ; prepare to send 40 tiles + call Printer_Convert2RowsTo2bpp + ld a, (40 tiles) % $100 + ld [wPrinterSendByteCounter], a + ld a, (40 tiles) / $100 + ld [wPrinterSendByteCounter + 1], a + ; compute the checksum + call Printer_ComputeChecksum + call Printer_NextSection + call Printer_WaitHandshake + ld a, PRINTER_STATUS_TRANSMITTING + ld [wPrinterStatus], a + ret + +Printer_EndTilemapTransmission: ; 840c5 (21:40c5) + ; ensure that we go from here to routine 7 + ld a, $6 + ld [wJumptableIndex], a + ; send packet 4 + ld hl, PrinterDataPacket4 ; signal no transmission + call Printer_CopyPacket + ; send no tile data + xor a + ld [wPrinterSendByteCounter], a + ld [wPrinterSendByteCounter + 1], a + call Printer_NextSection + call Printer_WaitHandshake + ret + +Printer_SignalSendHeader: ; 840de (21:40de) + call Printer_ResetData + ld hl, PrinterDataPacket2 ; signal request print + call Printer_CopyPacket + ; prepare to send 1 tile + call Printer_StageHeaderForSend + ld a, 4 % $100 + ld [wPrinterSendByteCounter], a + ld a, 4 / $100 + ld [wPrinterSendByteCounter + 1], a + ; compute the checksum + call Printer_ComputeChecksum + call Printer_NextSection + call Printer_WaitHandshake + ld a, PRINTER_STATUS_PRINTING + ld [wPrinterStatus], a + ret + +Printer_SignalLoopBack: ; 84103 (21:4103) + call Printer_ResetData + ; send packet 1 + ld hl, PrinterDataPacket1 ; signal no transmission + call Printer_CopyPacket + ; send no tile data + xor a + ld [wPrinterSendByteCounter], a + ld [wPrinterSendByteCounter + 1], a + ld a, [wPrinterQueueLength] + ld [wPrinterRowIndex], a + call Printer_NextSection + call Printer_WaitHandshake + ret + +Printer_WaitSerial: ; 84120 (21:4120) + ld hl, wPrinterSerialFrameDelay + inc [hl] + ld a, [hl] + cp $6 + ret c + xor a + ld [hl], a + call Printer_NextSection + ret + +Printer_WaitSerialAndLoopBack2: ; 8412e (21:412e) + ld hl, wPrinterSerialFrameDelay + inc [hl] + ld a, [hl] + cp $6 + ret c + xor a + ld [hl], a + ld hl, wPrinterRowIndex + dec [hl] + call Printer_PrevSection + call Printer_PrevSection + ret + +Printer_CheckConnectionStatus: ; 84143 (21:4143) + ld a, [wPrinterOpcode] + and a + ret nz + ld a, [wPrinterHandshake] + cp $ff + jr nz, .printer_connected + ld a, [wPrinterStatusFlags] + cp $ff + jr z, .printer_error + +.printer_connected + ld a, [wPrinterHandshake] + cp $81 + jr nz, .printer_error + ld a, [wPrinterStatusFlags] + cp $0 + jr nz, .printer_error + ld hl, wPrinterConnectionOpen + set 1, [hl] + ld a, $5 + ld [wHandshakeFrameDelay], a + call Printer_NextSection + ret + +.printer_error + ld a, $ff + ld [wPrinterHandshake], a + ld [wPrinterStatusFlags], a + ld a, $e + ld [wJumptableIndex], a + ret + +Printer_TransmissionLoop: ; 84180 (21:4180) + ld a, [wPrinterOpcode] + and a + ret nz + ld a, [wPrinterStatusFlags] + and $f0 + jr nz, .enter_wait_loop + ld a, [wPrinterStatusFlags] + and $1 + jr nz, .cycle_back + call Printer_NextSection + ret + +.cycle_back + call Printer_PrevSection + ret + +.enter_wait_loop + ld a, $12 ; Printer_WaitLoopBack + ld [wJumptableIndex], a + ret + +Printer_WaitUntilFinished: ; 841a1 (21:41a1) + ld a, [wPrinterOpcode] + and a + ret nz + ld a, [wPrinterStatusFlags] + and $f3 + ret nz + call Printer_NextSection + ret + +Printer_WaitLoopBack: ; 841b0 (21:41b0) + call Printer_NextSection +Printer_WaitLoopBack_: ; 841b3 (21:41b3) + ld a, [wPrinterOpcode] + and a + ret nz + ld a, [wPrinterStatusFlags] + and $f0 + ret nz + xor a + ld [wJumptableIndex], a + ret + +Printer_WaitHandshake: ; 841c3 (21:41c3) +.loop + ld a, [wPrinterOpcode] + and a + jr nz, .loop + xor a + ld [wPrinterSendByteOffset], a + ld [wPrinterSendByteOffset + 1], a + ld a, $1 + ld [wPrinterOpcode], a + ld a, $88 + ld [rSB], a + ld a, $1 + ld [rSC], a + ld a, $81 + ld [rSC], a + ret + +Printer_CopyPacket: ; 841e2 (21:41e2) + ld a, [hli] + ld [wPrinterData], a + ld a, [hli] + ld [wPrinterData + 1], a + ld a, [hli] + ld [wPrinterData + 2], a + ld a, [hli] + ld [wPrinterData + 3], a + ld a, [hli] + ld [wPrinterChecksum], a + ld a, [hl] + ld [wPrinterChecksum + 1], a + ret + +Printer_ResetData: ; 841fb (21:41fb) + xor a + ld hl, wPrinterData + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld hl, wPrinterChecksum + ld [hli], a + ld [hl], a + xor a + ld [wPrinterSendByteCounter], a + ld [wPrinterSendByteCounter + 1], a + ld hl, wGameboyPrinterRAM + ld bc, wGameboyPrinter2bppSourceEnd - wGameboyPrinter2bppSource + call Printer_ByteFill + ret + +Printer_ComputeChecksum: ; 84219 (21:4219) + ld hl, 0 + ld bc, 4 + ld de, wPrinterData + call .ComputeChecksum + ld a, [wPrinterSendByteCounter] + ld c, a + ld a, [wPrinterSendByteCounter + 1] + ld b, a + ld de, wGameboyPrinterRAM + call .ComputeChecksum + ld a, l + ld [wPrinterChecksum], a + ld a, h + ld [wPrinterChecksum + 1], a + ret + +.ComputeChecksum: ; 8423c (21:423c) +.loop + ld a, [de] + inc de + add l + jr nc, .no_overflow + inc h +.no_overflow + ld l, a + dec bc + ld a, c + or b + jr nz, .loop + ret + +Printer_StageHeaderForSend: ; 84249 (21:4249) + ld a, $1 + ld [wGameboyPrinter2bppSource + 0], a + ld a, [wcbfa] + ld [wGameboyPrinter2bppSource + 1], a + ld a, %11100100 + ld [wGameboyPrinter2bppSource + 2], a + ld a, [wGBPrinterSettings] + ld [wGameboyPrinter2bppSource + 3], a + ret + +Printer_Convert2RowsTo2bpp: ; 84260 (21:4260) + ; de = wPrinterTileMapBuffer + 2 * SCREEN_WIDTH * ([wPrinterQueueLength] - [wPrinterRowIndex]) + ld a, [wPrinterRowIndex] + xor $ff + ld d, a + ld a, [wPrinterQueueLength] + inc a + add d + ld hl, wPrinterTileMapBuffer + ld de, 2 * SCREEN_WIDTH +.loop1 + and a + jr z, .okay1 + add hl, de + dec a + jr .loop1 +.okay1 + ld e, l + ld d, h + ld hl, wGameboyPrinter2bppSource + ld c, 2 * SCREEN_WIDTH +.loop2 + ld a, [de] + inc de + push bc + push de + push hl + ; convert tile index to vram address + swap a + ld d, a + and $f0 + ld e, a + ld a, d + and $f + ld d, a + and $8 + ld a, d + jr nz, .vtiles_8xxx + or $90 + jr .got_vtile_addr + +.vtiles_8xxx + or $80 +.got_vtile_addr + ld d, a + ; copy 1 vtile to hl + lb bc, BANK(Printer_Convert2RowsTo2bpp), 1 + call Request2bpp + pop hl + ld de, 1 tiles + add hl, de + pop de + pop bc + dec c + jr nz, .loop2 + ret + +Printer_ByteFill: ; 842ab + push de + ld e, a +.loop + ld [hl], e + inc hl + dec bc + ld a, c + or b + jr nz, .loop + ld a, e + pop de + ret +; 842b7 + +PrinterDataPacket1: + db 1, 0, $00, 0 + dw 1 +PrinterDataPacket2: + db 2, 0, $04, 0 + dw 0 +PrinterDataPacket3: + db 4, 0, $80, 2 + dw 0 +PrinterDataPacket4: + db 4, 0, $00, 0 + dw 4 +PrinterDataPacket5: ; unused + db 8, 0, $00, 0 + dw 8 +PrinterDataPacket6: ; unused + db 15, 0, $00, 0 + dw 15 +; 842db + +_PrinterReceive:: ; 842db + ld a, [wPrinterOpcode] + add a + ld e, a + ld d, 0 + ld hl, .Jumptable + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp hl +; 842ea + + +.Jumptable: ; 842ea (21:42ea) + dw Printer_DoNothing ; 00 + + dw Printer_Send0x33 ; 01 + dw Printer_SendPrinterData1 ; 02 + dw Printer_SendPrinterData2 ; 03 + dw Printer_SendPrinterData3 ; 04 + dw Printer_SendPrinterData4 ; 05 + dw Printer_SendNextByte ; 06 + dw Printer_SendwPrinterChecksumLo ; 07 + dw Printer_SendwPrinterChecksumHi ; 08 + dw Printer_Send0x00 ; 09 + dw Printer_ReceiveTowPrinterHandshakeAndSend0x00 ; 0a + dw Printer_ReceiveTowPrinterStatusFlagsAndExitSendLoop ; 0b + + dw Printer_Send0x33 ; 0c triggered by AskSerial + dw Printer_Send0x0f ; 0d + dw Printer_Send0x00_ ; 0e + dw Printer_Send0x00_ ; 0f + dw Printer_Send0x00_ ; 10 + dw Printer_Send0x0f ; 11 + dw Printer_Send0x00_ ; 12 + dw Printer_Send0x00 ; 13 + dw Printer_ReceiveTowPrinterHandshakeAndSend0x00 ; 14 + dw Printer_ReceiveTowPrinterStatusFlagsAndExitSendLoop_ ; 15 + + dw Printer_Send0x33 ; 16 triggered by pressing B + dw Printer_Send0x08 ; 17 + dw Printer_Send0x00_ ; 18 + dw Printer_Send0x00_ ; 19 + dw Printer_Send0x00_ ; 1a + dw Printer_Send0x08 ; 1b + dw Printer_Send0x00_ ; 1c + dw Printer_Send0x00 ; 1d + dw Printer_ReceiveTowPrinterHandshakeAndSend0x00 ; 1e + dw Printer_ReceiveTowPrinterStatusFlagsAndExitSendLoop ; 1f + + +Printer_NextInstruction: ; 8432a (21:432a) + ld hl, wPrinterOpcode + inc [hl] + ret + +Printer_DoNothing: ; 8432f (21:432f) + ret + +Printer_Send0x33: ; 84330 (21:4330) + ld a, $33 + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_SendPrinterData1: ; 84339 (21:4339) + ld a, [wPrinterData] + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_SendPrinterData2: ; 84343 (21:4343) + ld a, [wPrinterData + 1] + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_SendPrinterData3: ; 8434d (21:434d) + ld a, [wPrinterData + 2] + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_SendPrinterData4: ; 84357 (21:4357) + ld a, [wPrinterData + 3] + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_SendNextByte: ; 84361 (21:4361) + ; decrement 16-bit counter + ld hl, wPrinterSendByteCounter + ld a, [hli] + ld d, [hl] + ld e, a + or d + jr z, .done + dec de + ld [hl], d + dec hl + ld [hl], e + + ld a, [wPrinterSendByteOffset] + ld e, a + ld a, [wPrinterSendByteOffset + 1] + ld d, a + ld hl, wGameboyPrinterRAM + add hl, de + inc de + ld a, e + ld [wPrinterSendByteOffset], a + ld a, d + ld [wPrinterSendByteOffset + 1], a + ld a, [hl] + call Printer_SerialSend + ret + +.done + call Printer_NextInstruction +Printer_SendwPrinterChecksumLo: ; 8438b (21:438b) + ld a, [wPrinterChecksum] + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_SendwPrinterChecksumHi: ; 84395 (21:4395) + ld a, [wPrinterChecksum + 1] + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_Send0x00: ; 8439f (21:439f) + ld a, $0 + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_ReceiveTowPrinterHandshakeAndSend0x00: ; 843a8 (21:43a8) + ld a, [rSB] + ld [wPrinterHandshake], a + ld a, $0 + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_ReceiveTowPrinterStatusFlagsAndExitSendLoop: ; 843b6 (21:43b6) + ld a, [rSB] + ld [wPrinterStatusFlags], a + xor a + ld [wPrinterOpcode], a + ret + +Printer_Send0x0f: ; 843c0 (21:43c0) + ld a, $f + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_Send0x00_: ; 843c9 (21:43c9) + ld a, $0 + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_Send0x08: ; 843d2 (21:43d2) + ld a, $8 + call Printer_SerialSend + call Printer_NextInstruction + ret + +Printer_SerialSend: ; 843db (21:43db) + ld [rSB], a + ld a, $1 ; switch to internal clock + ld [rSC], a + ld a, $81 ; start transfer + ld [rSC], a + ret + +Printer_ReceiveTowPrinterStatusFlagsAndExitSendLoop_: ; 843e6 (21:43e6) + ld a, [rSB] + ld [wPrinterStatusFlags], a + xor a + ld [wPrinterOpcode], a + ret diff --git a/engine/sgb_layouts.asm b/engine/sgb_layouts.asm new file mode 100644 index 000000000..dc174e86f --- /dev/null +++ b/engine/sgb_layouts.asm @@ -0,0 +1,636 @@ +Predef_LoadSGBLayout: ; 864c +; LoadSGBLayout + call CheckCGB + jp nz, Predef_LoadSGBLayoutCGB + + ld a, b + cp SCGB_RAM + jr nz, .not_ram + ld a, [SGBPredef] +.not_ram + cp SCGB_PARTY_MENU_HP_PALS + jp z, SGB_ApplyPartyMenuHPPals + ld l, a + ld h, 0 + add hl, hl + ld de, .Jumptable + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ld de, .Finish + push de + jp hl +; 866f + +.Jumptable: ; 866f + dw .SGB_BattleGrayscale + dw .SGB_BattleColors + dw .SGB_PokegearPals + dw .SGB_StatsScreenHPPals + dw .SGB_Pokedex + dw .SGB_SlotMachine + dw .SGB06 + dw .SGB07 + dw .SGB_Diploma + dw .SGB_MapPals + dw .SGB_PartyMenu + dw .SGB_Evolution + dw .SGB0c + dw .SGB0d + dw .SGB_MoveList + dw .SGB0f + dw .SGB_PokedexSearchOption + dw .SGB11 + dw .SGB12 + dw .SGB13 + dw .SGB_PackPals + dw .SGB_TrainerCard + dw .SGB_PokedexUnownMode + dw .SGB_BillsPC + dw .SGB_UnownPuzzle + dw .SGB19 + dw .SGB_PlayerOrMonFrontpicPals + dw .SGB_TradeTube + dw .SGB_TrainerOrMonFrontpicPals + dw .SGB_MysteryGift + dw .SGB1e +; 86ad + +.SGB_BattleGrayscale: ; 86ad + ld hl, PalPacket_9c66 + ld de, BlkPacket_9aa6 + ret +; 86b4 + +.SGB_BattleColors: ; 86b4 + ld hl, BlkPacket_9aa6 + call PushSGBPals_ + + ld hl, PalPacket_9ce6 + ld de, wSGBPals + ld bc, $10 + call CopyBytes + + ld a, [PlayerHPPal] + ld l, a + ld h, 0 + add hl, hl + add hl, hl + ld de, Palettes_a8be + 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, [EnemyHPPal] + ld l, a + ld h, 0 + add hl, hl + add hl, hl + + ld de, Palettes_a8be + 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_9cf6 + ld de, wSGBPals + $10 + ld bc, $10 + call CopyBytes + + call GetBattlemonBackpicPalettePointer + + ld a, [hli] + ld [wSGBPals + $13], a + ld a, [hli] + ld [wSGBPals + $14], a + ld a, [hli] + ld [wSGBPals + $15], a + ld a, [hl] + ld [wSGBPals + $16], a + call GetEnemyFrontpicPalettePointer + ld a, [hli] + ld [wSGBPals + $19], a + ld a, [hli] + ld [wSGBPals + $1a], a + ld a, [hli] + ld [wSGBPals + $1b], a + ld a, [hl] + ld [wSGBPals + $1c], a + + ld hl, wSGBPals + ld de, wSGBPals + $10 + ld a, SCGB_BATTLE_COLORS + ld [SGBPredef], a + ret +; 873c + +.SGB_MoveList: ; 873c + ld hl, PalPacket_9bd6 + ld de, wSGBPals + ld bc, $10 + call CopyBytes + + ld hl, wSGBPals + 1 + ld [hl], $10 + inc hl + inc hl + + ld a, [PlayerHPPal] + add $2f + ld [hl], a + ld hl, wSGBPals + ld de, BlkPacket_9ad6 + ret +; 875c + +.SGB_PokegearPals: ; 875c + ld hl, PalPacket_9c76 + ld de, BlkPacket_9a86 + ret +; 8763 + +.SGB_StatsScreenHPPals: ; 8763 + ld hl, PalPacket_9ce6 + ld de, wSGBPals + ld bc, $10 + call CopyBytes + ld a, [wCurHPPal] + ld l, a + ld h, 0 + add hl, hl + add hl, hl + ld de, Palettes_a8be + 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, [CurPartySpecies] + ld bc, TempMonDVs + 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_9ac6 + ret +; 87ab + +.SGB_PartyMenu: ; 87ab + ld hl, PalPacket_9c56 + ld de, wSGBPals + 1 + ret +; 87b2 + +.SGB_Pokedex: ; 87b2 + ld hl, PalPacket_9ce6 + ld de, wSGBPals + ld bc, $10 + call CopyBytes + ld hl, wSGBPals + 3 + ld [hl], $9f + inc hl + ld [hl], $2a + inc hl + ld [hl], $5a + inc hl + ld [hl], $19 + ld a, [CurPartySpecies] + 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_9ae6 + ret +; 87e9 + +.SGB_BillsPC: ; 87e9 + ld hl, PalPacket_9ce6 + ld de, wSGBPals + ld bc, $10 + call CopyBytes + ld hl, wSGBPals + 3 + ld [hl], $9f + inc hl + ld [hl], $2a + inc hl + ld [hl], $5a + inc hl + ld [hl], $19 + ld a, [CurPartySpecies] + ld bc, TempMonDVs + 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_9ae6 + ret +; 8823 + +.SGB_PokedexUnownMode: ; 8823 + call .SGB_Pokedex + ld de, BlkPacket_9af6 + ret +; 882a + +.SGB_PokedexSearchOption: ; 882a + ld hl, PalPacket_9ce6 + ld de, wSGBPals + ld bc, $10 + call CopyBytes + ld hl, wSGBPals + 3 + ld [hl], $9f + inc hl + ld [hl], $2a + inc hl + ld [hl], $5a + inc hl + ld [hl], $19 + ld hl, wSGBPals + ld de, BlkPacket_9a86 + ret +; 884b + +.SGB_PackPals: ; 884b + ld hl, PalPacket_9c36 + ld de, BlkPacket_9a86 + ret +; 8852 + +.SGB_SlotMachine: ; 8852 + ld hl, PalPacket_9c96 + ld de, BlkPacket_9b06 + ret +; 8859 + +.SGB06: ; 8859 + ld hl, PalPacket_9ca6 + ld de, BlkPacket_9b76 + ret +; 8860 + +.SGB_Diploma: +.SGB_MysteryGift: ; 8860 + ld hl, PalPacket_9cb6 + ld de, BlkPacket_9a86 + ret +; 8867 + +.SGB07: ; 8867 + ld b, 0 + ld hl, .BlkPacketTable_SGB07 +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 +; 8878 + +.BlkPacketTable_SGB07: ; 8878 + dw BlkPacket_9a86, PalPacket_9be6 + dw BlkPacket_9a96, PalPacket_9c06 + dw BlkPacket_9a86, PalPacket_9c16 +; 8884 + +.SGB0c: ; 8884 + ld hl, PalPacket_9b96 + ld de, BlkPacket_9b56 + ld a, SCGB_DIPLOMA + ld [SGBPredef], a + ret +; 8890 + +.SGB13: ; 8890 + ld hl, PalPacket_9ba6 + ld de, BlkPacket_9b86 + ret +; 8897 + +.SGB0f: ; 8897 + ld hl, PalPacket_9c46 + ld de, BlkPacket_9a86 + ret +; 889e + +.SGB11: ; 889e + ld hl, BlkPacket_9a86 + ld de, PlayerLightScreenCount + ld bc, $10 + call CopyBytes + ld hl, PalPacket_9bb6 + ld de, BlkPacket_9a86 + ret +; 88b1 + +.SGB_MapPals: ; 88b1 + ld hl, PalPacket_9bd6 + ld de, wSGBPals + ld bc, $10 + call CopyBytes + call .GetMapPalsIndex + ld hl, wSGBPals + 1 + ld [hld], a + ld de, BlkPacket_9a86 + ld a, SCGB_MAPPALS + ld [SGBPredef], a + ret +; 88cd + +.SGB_Evolution: ; 88cd + push bc + ld hl, PalPacket_9ce6 + ld de, wSGBPals + ld bc, $10 + call CopyBytes + pop bc + ld a, c + and a + jr z, .partymon + ; Egg + ld hl, wSGBPals + 3 + ; RGB 7, 7, 7 + ld [hl], $e7 + inc hl + ld [hl], $1c + inc hl + ; RGB 2, 3, 3 + ld [hl], $62 + inc hl + ld [hl], $c + jr .done + +.partymon + ld hl, PartyMon1DVs + ld bc, PARTYMON_STRUCT_LENGTH + ld a, [CurPartyMon] + call AddNTimes + ld c, l + ld b, h + ld a, [PlayerHPPal] + 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_9a86 + ret +; 891a + +.SGB0d: +.SGB_TrainerCard: ; 891a + ld hl, PalPacket_9cb6 + ld de, BlkPacket_9a86 + ret +; 8921 + +.SGB_UnownPuzzle: ; 8921 + ld hl, PalPacket_9bc6 + ld de, BlkPacket_9a86 + ret +; 8928 + +.SGB12: ; 8928 + ld hl, PalPacket_9bd6 + ld de, wSGBPals + ld bc, $10 + call CopyBytes + ld hl, BlkPacket_9a86 + ld de, wSGBPals + $10 + ld bc, $10 + 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 + $10 + ret +; 8969 + +.SGB1e: ; 8969 + ld hl, PalPacket_9ce6 + ld de, wSGBPals + ld bc, $10 + call CopyBytes + ld a, [CurPartySpecies] + ld l, a + ld h, 0 + add hl, hl + add hl, hl + add hl, hl + ld de, PokemonPalettes + add hl, de + ld a, [wcf65] + 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_9a86 + ret +; 89a6 + +.SGB19: ; 89a6 + ld hl, PalPacket_9cd6 + ld de, BlkPacket_9a86 + ret +; 89ad + +.SGB_PlayerOrMonFrontpicPals: ; 89ad + ld hl, PalPacket_9ce6 + ld de, wSGBPals + ld bc, $10 + call CopyBytes + ld a, [CurPartySpecies] + ld bc, TempMonDVs + 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_9a86 + ret +; 89d9 + +.SGB_TradeTube: ; 89d9 + ld hl, PalPacket_9cc6 + ld de, BlkPacket_9a86 + ret +; 89e0 + +.SGB_TrainerOrMonFrontpicPals: ; 89e0 + ld hl, PalPacket_9ce6 + ld de, wSGBPals + ld bc, $10 + call CopyBytes + ld a, [CurPartySpecies] + ld bc, TempMonDVs + 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_9a86 + ret +; 8a0c + +.GetMapPalsIndex: ; 8a0c + ld a, [TimeOfDayPal] + cp NITE_F + jr c, .morn_day + ld a, $19 + ret + +.morn_day + ld a, [wPermission] + cp ROUTE + jr z, .route + cp CAVE + jr z, .cave + cp DUNGEON + jr z, .cave + cp PERM_5 + jr z, .perm5 + cp GATE + jr z, .gate + ld a, [MapGroup] + ld e, a + ld d, 0 + ld hl, .SGBRoofPalInds + add hl, de + ld a, [hl] + ret + +.route + ld a, $00 + ret + +.cave + ld a, $18 + ret + +.perm5 + ld a, $06 + ret + +.gate + ld a, $03 + ret +; 8a45 + +.SGBRoofPalInds: ; 8a45 + db $00 ; Unused + db $12 ; Olivine + db $14 ; Mahogany + db $18 ; Various Dungeons + db $11 ; Ecruteak + db $15 ; Blackthorn + db $09 ; Cinnabar + db $04 ; Cerulean + db $0f ; Azalea + db $16 ; Lake Of Rage + db $0e ; Violet + db $10 ; Goldenrod + db $06 ; Vermilion + db $01 ; Palette + db $03 ; Pewter + db $06 ; Fast Ship + db $0b ; Indigo Plateau + db $08 ; Fuchsia + db $05 ; Lavender + db $17 ; Silver Cave Outside + db $08 ; Pokemon Center 2F + db $07 ; Celadon + db $13 ; Cianwood + db $02 ; Viridian + db $0c ; New Bark + db $0a ; Saffron + db $0d ; Cherrygrove +; 8a60 + +.Finish: ; 8a60 + push de + call PushSGBPals_ + pop hl + jp PushSGBPals_ +; 8a68 diff --git a/engine/time_capsule.asm b/engine/time_capsule.asm new file mode 100755 index 000000000..eb8896355 --- /dev/null +++ b/engine/time_capsule.asm @@ -0,0 +1,277 @@ +; These functions seem to be related to backwards compatibility + +ValidateOTTrademon: ; fb57e + ld a, [wd003] + ld hl, OTPartyMon1Species + call GetPartyLocation + push hl + ld a, [wd003] + inc a + ld c, a + ld b, 0 + ld hl, OTPartyCount + add hl, bc + ld a, [hl] + pop hl + cp EGG + jr z, .matching_or_egg + cp [hl] + jr nz, .abnormal + +.matching_or_egg + ld b, h + ld c, l + ld hl, MON_LEVEL + add hl, bc + ld a, [hl] + cp MAX_LEVEL + 1 + jr nc, .abnormal + ld a, [wLinkMode] + cp LINK_TIMECAPSULE + jr nz, .normal + ld hl, OTPartySpecies + ld a, [wd003] + ld c, a + ld b, 0 + add hl, bc + ld a, [hl] + + ; Magnemite and Magneton's types changed + ; from Electric to Electric/Steel. + cp MAGNEMITE + jr z, .normal + cp MAGNETON + jr z, .normal + + ld [CurSpecies], a + call GetBaseData + ld hl, wLinkOTPartyMonTypes + add hl, bc + add hl, bc + ld a, [BaseType1] + cp [hl] + jr nz, .abnormal + inc hl + ld a, [BaseType2] + cp [hl] + jr nz, .abnormal + +.normal + and a + ret + +.abnormal + scf + ret +; fb5dd + +Functionfb5dd: ; fb5dd + ld a, [wd002] + ld d, a + ld a, [PartyCount] + ld b, a + ld c, $0 +.loop + ld a, c + cp d + jr z, .next + push bc + ld a, c + ld hl, PartyMon1HP + call GetPartyLocation + pop bc + ld a, [hli] + or [hl] + jr nz, .done + +.next + inc c + dec b + jr nz, .loop + ld a, [wd003] + ld hl, OTPartyMon1HP + call GetPartyLocation + ld a, [hli] + or [hl] + jr nz, .done + scf + ret + +.done + and a + ret +; fb60d + +PlaceTradePartnerNamesAndParty: ; fb60d + hlcoord 4, 0 + ld de, PlayerName + call PlaceString + ld a, $14 + ld [bc], a + hlcoord 4, 8 + ld de, OTPlayerName + call PlaceString + ld a, $14 + ld [bc], a + hlcoord 7, 1 + ld de, PartySpecies + call .PlaceSpeciesNames + hlcoord 7, 9 + ld de, OTPartySpecies +.PlaceSpeciesNames: ; fb634 + ld c, $0 +.loop + ld a, [de] + cp -1 + ret z + ld [wd265], a + push bc + push hl + push de + push hl + ld a, c + ld [hProduct], a + call GetPokemonName + pop hl + call PlaceString + pop de + inc de + pop hl + ld bc, SCREEN_WIDTH + add hl, bc + pop bc + inc c + jr .loop +; fb656 + + +INCLUDE "data/time_capsule/special_stats.asm" + + +INCLUDE "event/name_rater.asm" + + +PlaySlowCry: ; fb841 + ld a, [ScriptVar] + call LoadCryHeader + jr c, .done + + ld hl, CryPitch + ld a, [hli] + ld h, [hl] + ld l, a + ld bc, -$140 + add hl, bc + ld a, l + ld [CryPitch], a + ld a, h + ld [CryPitch + 1], a + ld hl, CryLength + ld a, [hli] + ld h, [hl] + ld l, a + ld bc, $60 + add hl, bc + ld a, l + ld [CryLength], a + ld a, h + ld [CryLength + 1], a + callba _PlayCryHeader + call WaitSFX + +.done + ret +; fb877 + +NewPokedexEntry: ; fb877 + ld a, [hMapAnims] + push af + xor a + ld [hMapAnims], a + call LowVolume + call ClearBGPalettes + call ClearTileMap + call UpdateSprites + call ClearSprites + ld a, [wPokedexStatus] + push af + ld a, [hSCX] + add $5 + ld [hSCX], a + xor a + ld [wPokedexStatus], a + callba _NewPokedexEntry + call WaitPressAorB_BlinkCursor + ld a, $1 + ld [wPokedexStatus], a + callba DisplayDexEntry + call WaitPressAorB_BlinkCursor + pop af + ld [wPokedexStatus], a + call MaxVolume + call RotateThreePalettesRight + ld a, [hSCX] + add -5 ; 251 ; NUM_POKEMON + ld [hSCX], a + call .ReturnFromDexRegistration + pop af + ld [hMapAnims], a + ret +; fb8c8 + +.ReturnFromDexRegistration: ; fb8c8 + call ClearTileMap + call LoadFontsExtra + call LoadStandardFont + callba Pokedex_PlaceFrontpicTopLeftCorner + call WaitBGMap2 + callba GetEnemyMonDVs + ld a, [hli] + ld [TempMonDVs], a + ld a, [hl] + ld [TempMonDVs + 1], a + ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS + call GetSGBLayout + call SetPalettes + ret +; fb8f1 + +ConvertMon_2to1: ; fb8f1 +; Takes the Gen-2 Pokemon number stored in wd265, finds it in the Pokered_MonIndices table, and returns its index in wd265. + push bc + push hl + ld a, [wd265] + ld b, a + ld c, 0 + ld hl, Pokered_MonIndices +.loop + inc c + ld a, [hli] + cp b + jr nz, .loop + ld a, c + ld [wd265], a + pop hl + pop bc + ret +; fb908 + +ConvertMon_1to2: ; fb908 +; Takes the Gen-1 Pokemon number stored in wd265 and returns the corresponding value from Pokered_MonIndices in wd265. + push bc + push hl + ld a, [wd265] + dec a + ld hl, Pokered_MonIndices + ld b, 0 + ld c, a + add hl, bc + ld a, [hl] + ld [wd265], a + pop hl + pop bc + ret +; fb91c + + +INCLUDE "data/time_capsule/mon_order.asm" diff --git a/engine/time_capsule/conversion.asm b/engine/time_capsule/conversion.asm deleted file mode 100755 index eb8896355..000000000 --- a/engine/time_capsule/conversion.asm +++ /dev/null @@ -1,277 +0,0 @@ -; These functions seem to be related to backwards compatibility - -ValidateOTTrademon: ; fb57e - ld a, [wd003] - ld hl, OTPartyMon1Species - call GetPartyLocation - push hl - ld a, [wd003] - inc a - ld c, a - ld b, 0 - ld hl, OTPartyCount - add hl, bc - ld a, [hl] - pop hl - cp EGG - jr z, .matching_or_egg - cp [hl] - jr nz, .abnormal - -.matching_or_egg - ld b, h - ld c, l - ld hl, MON_LEVEL - add hl, bc - ld a, [hl] - cp MAX_LEVEL + 1 - jr nc, .abnormal - ld a, [wLinkMode] - cp LINK_TIMECAPSULE - jr nz, .normal - ld hl, OTPartySpecies - ld a, [wd003] - ld c, a - ld b, 0 - add hl, bc - ld a, [hl] - - ; Magnemite and Magneton's types changed - ; from Electric to Electric/Steel. - cp MAGNEMITE - jr z, .normal - cp MAGNETON - jr z, .normal - - ld [CurSpecies], a - call GetBaseData - ld hl, wLinkOTPartyMonTypes - add hl, bc - add hl, bc - ld a, [BaseType1] - cp [hl] - jr nz, .abnormal - inc hl - ld a, [BaseType2] - cp [hl] - jr nz, .abnormal - -.normal - and a - ret - -.abnormal - scf - ret -; fb5dd - -Functionfb5dd: ; fb5dd - ld a, [wd002] - ld d, a - ld a, [PartyCount] - ld b, a - ld c, $0 -.loop - ld a, c - cp d - jr z, .next - push bc - ld a, c - ld hl, PartyMon1HP - call GetPartyLocation - pop bc - ld a, [hli] - or [hl] - jr nz, .done - -.next - inc c - dec b - jr nz, .loop - ld a, [wd003] - ld hl, OTPartyMon1HP - call GetPartyLocation - ld a, [hli] - or [hl] - jr nz, .done - scf - ret - -.done - and a - ret -; fb60d - -PlaceTradePartnerNamesAndParty: ; fb60d - hlcoord 4, 0 - ld de, PlayerName - call PlaceString - ld a, $14 - ld [bc], a - hlcoord 4, 8 - ld de, OTPlayerName - call PlaceString - ld a, $14 - ld [bc], a - hlcoord 7, 1 - ld de, PartySpecies - call .PlaceSpeciesNames - hlcoord 7, 9 - ld de, OTPartySpecies -.PlaceSpeciesNames: ; fb634 - ld c, $0 -.loop - ld a, [de] - cp -1 - ret z - ld [wd265], a - push bc - push hl - push de - push hl - ld a, c - ld [hProduct], a - call GetPokemonName - pop hl - call PlaceString - pop de - inc de - pop hl - ld bc, SCREEN_WIDTH - add hl, bc - pop bc - inc c - jr .loop -; fb656 - - -INCLUDE "data/time_capsule/special_stats.asm" - - -INCLUDE "event/name_rater.asm" - - -PlaySlowCry: ; fb841 - ld a, [ScriptVar] - call LoadCryHeader - jr c, .done - - ld hl, CryPitch - ld a, [hli] - ld h, [hl] - ld l, a - ld bc, -$140 - add hl, bc - ld a, l - ld [CryPitch], a - ld a, h - ld [CryPitch + 1], a - ld hl, CryLength - ld a, [hli] - ld h, [hl] - ld l, a - ld bc, $60 - add hl, bc - ld a, l - ld [CryLength], a - ld a, h - ld [CryLength + 1], a - callba _PlayCryHeader - call WaitSFX - -.done - ret -; fb877 - -NewPokedexEntry: ; fb877 - ld a, [hMapAnims] - push af - xor a - ld [hMapAnims], a - call LowVolume - call ClearBGPalettes - call ClearTileMap - call UpdateSprites - call ClearSprites - ld a, [wPokedexStatus] - push af - ld a, [hSCX] - add $5 - ld [hSCX], a - xor a - ld [wPokedexStatus], a - callba _NewPokedexEntry - call WaitPressAorB_BlinkCursor - ld a, $1 - ld [wPokedexStatus], a - callba DisplayDexEntry - call WaitPressAorB_BlinkCursor - pop af - ld [wPokedexStatus], a - call MaxVolume - call RotateThreePalettesRight - ld a, [hSCX] - add -5 ; 251 ; NUM_POKEMON - ld [hSCX], a - call .ReturnFromDexRegistration - pop af - ld [hMapAnims], a - ret -; fb8c8 - -.ReturnFromDexRegistration: ; fb8c8 - call ClearTileMap - call LoadFontsExtra - call LoadStandardFont - callba Pokedex_PlaceFrontpicTopLeftCorner - call WaitBGMap2 - callba GetEnemyMonDVs - ld a, [hli] - ld [TempMonDVs], a - ld a, [hl] - ld [TempMonDVs + 1], a - ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS - call GetSGBLayout - call SetPalettes - ret -; fb8f1 - -ConvertMon_2to1: ; fb8f1 -; Takes the Gen-2 Pokemon number stored in wd265, finds it in the Pokered_MonIndices table, and returns its index in wd265. - push bc - push hl - ld a, [wd265] - ld b, a - ld c, 0 - ld hl, Pokered_MonIndices -.loop - inc c - ld a, [hli] - cp b - jr nz, .loop - ld a, c - ld [wd265], a - pop hl - pop bc - ret -; fb908 - -ConvertMon_1to2: ; fb908 -; Takes the Gen-1 Pokemon number stored in wd265 and returns the corresponding value from Pokered_MonIndices in wd265. - push bc - push hl - ld a, [wd265] - dec a - ld hl, Pokered_MonIndices - ld b, 0 - ld c, a - add hl, bc - ld a, [hl] - ld [wd265], a - pop hl - pop bc - ret -; fb91c - - -INCLUDE "data/time_capsule/mon_order.asm" diff --git a/engine/trade/animation.asm b/engine/trade/animation.asm deleted file mode 100755 index 7100bd558..000000000 --- a/engine/trade/animation.asm +++ /dev/null @@ -1,1628 +0,0 @@ -TradeAnimation: ; 28f24 - xor a - ld [wcf66], a - ld hl, wPlayerTrademonSenderName - ld de, wOTTrademonSenderName - call LinkTradeAnim_LoadTradePlayerNames - ld hl, wPlayerTrademonSpecies - ld de, wOTTrademonSpecies - call LinkTradeAnim_LoadTradeMonSpecies - ld de, .script - jr RunTradeAnimScript - -.script - tradeanim_setup_givemon_scroll - tradeanim_show_givemon_data - tradeanim_do_givemon_scroll - tradeanim_wait_80 - tradeanim_wait_96 - tradeanim_poof - tradeanim_rocking_ball - tradeanim_enter_link_tube - tradeanim_wait_anim - tradeanim_bulge_through_tube - tradeanim_wait_anim - tradeanim_textbox_scroll - tradeanim_give_trademon_sfx - tradeanim_tube_to_ot - tradeanim_sent_to_ot_text - tradeanim_scroll_out_right - - tradeanim_ot_sends_text_1 - tradeanim_ot_bids_farewell - tradeanim_wait_40 - tradeanim_scroll_out_right - tradeanim_get_trademon_sfx - tradeanim_tube_to_player - tradeanim_enter_link_tube - tradeanim_drop_ball - tradeanim_exit_link_tube - tradeanim_wait_anim - tradeanim_show_getmon_data - tradeanim_poof - tradeanim_wait_anim - tradeanim_frontpic_scroll - tradeanim_animate_frontpic - tradeanim_wait_80_if_ot_egg - tradeanim_textbox_scroll - tradeanim_take_care_of_text - tradeanim_scroll_out_right - tradeanim_end - -TradeAnimationPlayer2: ; 28f63 - xor a - ld [wcf66], a - ld hl, wOTTrademonSenderName - ld de, wPlayerTrademonSenderName - call LinkTradeAnim_LoadTradePlayerNames - ld hl, wOTTrademonSpecies - ld de, wPlayerTrademonSpecies - call LinkTradeAnim_LoadTradeMonSpecies - ld de, .script - jr RunTradeAnimScript - -.script - tradeanim_ot_sends_text_2 - tradeanim_ot_bids_farewell - tradeanim_wait_40 - tradeanim_scroll_out_right - tradeanim_get_trademon_sfx - tradeanim_tube_to_ot - tradeanim_enter_link_tube - tradeanim_drop_ball - tradeanim_exit_link_tube - tradeanim_wait_anim - tradeanim_show_getmon_data - tradeanim_poof - tradeanim_wait_anim - tradeanim_frontpic_scroll - tradeanim_animate_frontpic - tradeanim_wait_180_if_ot_egg - tradeanim_textbox_scroll - tradeanim_take_care_of_text - tradeanim_scroll_out_right - - tradeanim_setup_givemon_scroll - tradeanim_show_givemon_data - tradeanim_do_givemon_scroll - tradeanim_wait_40 - tradeanim_poof - tradeanim_rocking_ball - tradeanim_enter_link_tube - tradeanim_wait_anim - tradeanim_bulge_through_tube - tradeanim_wait_anim - tradeanim_textbox_scroll - tradeanim_give_trademon_sfx - tradeanim_tube_to_player - tradeanim_sent_to_ot_text - tradeanim_scroll_out_right - tradeanim_end - -RunTradeAnimScript: ; 28fa1 - ld hl, wTradeAnimAddress - ld [hl], e - inc hl - ld [hl], d - ld a, [hMapAnims] - push af - xor a - ld [hMapAnims], a - ld hl, VramState - ld a, [hl] - push af - res 0, [hl] - ld hl, Options - ld a, [hl] - push af - set 4, [hl] - call .TradeAnimLayout - ld a, [wcf66] - and a - jr nz, .anim_loop - ld de, MUSIC_EVOLUTION - call PlayMusic2 -.anim_loop - call DoTradeAnimation - jr nc, .anim_loop - pop af - ld [Options], a - pop af - ld [VramState], a - pop af - ld [hMapAnims], a - ret - -; 28fdb - -.TradeAnimLayout: ; 28fdb - xor a - ld [wJumptableIndex], a - call ClearBGPalettes - call ClearSprites - call ClearTileMap - call DisableLCD - call LoadFontsBattleExtra - callab ClearSpriteAnims - ld a, [hCGB] - and a - jr z, .NotCGB - ld a, $1 - ld [rVBK], a - ld hl, VTiles0 - ld bc, sScratch - VTiles0 - xor a - call ByteFill - ld a, $0 - ld [rVBK], a - -.NotCGB: - hlbgcoord 0, 0 - ld bc, sScratch - VBGMap0 - ld a, " " - call ByteFill - ld hl, TradeGameBoyLZ - ld de, VTiles2 tile $31 - call Decompress - ld hl, TradeArrowGFX - ld de, VTiles1 tile $6d - ld bc, $10 - ld a, BANK(TradeArrowGFX) - call FarCopyBytes - ld hl, TradeArrowGFX + $10 - ld de, VTiles1 tile $6e - ld bc, $10 - ld a, BANK(TradeArrowGFX) - call FarCopyBytes - xor a - ld [hSCX], a - ld [hSCY], a - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - callba GetTrademonFrontpic - call EnableLCD - call LoadTradeBallAndCableGFX - ld a, [wPlayerTrademonSpecies] - ld hl, wPlayerTrademonDVs - ld de, VTiles0 - call TradeAnim_GetFrontpic - ld a, [wOTTrademonSpecies] - ld hl, wOTTrademonDVs - ld de, VTiles0 tile $31 - call TradeAnim_GetFrontpic - ld a, [wPlayerTrademonSpecies] - ld de, wPlayerTrademonSpeciesName - call TradeAnim_GetNickname - ld a, [wOTTrademonSpecies] - ld de, wOTTrademonSpeciesName - call TradeAnim_GetNickname - call TradeAnim_NormalPals - ret - -; 29082 - -DoTradeAnimation: ; 29082 - ld a, [wJumptableIndex] - bit 7, a - jr nz, .finished - call .DoTradeAnimCommand - callab PlaySpriteAnimations - ld hl, wcf65 - inc [hl] - call DelayFrame - and a - ret - -.finished - call LoadStandardFont - scf - ret - -; 290a0 - -.DoTradeAnimCommand: ; 290a0 - ld a, [wJumptableIndex] - ld e, a - ld d, 0 - ld hl, .JumpTable - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp hl -; 290af - -.JumpTable: ; 290af -; entries correspond to macros/trade_anim.asm enumeration - dw TradeAnim_AdvanceScriptPointer ; 00 - dw TradeAnim_ShowGivemonData ; 01 - dw TradeAnim_ShowGetmonData ; 02 - dw TradeAnim_EnterLinkTube1 ; 03 - dw TradeAnim_EnterLinkTube2 ; 04 - dw TradeAnim_ExitLinkTube ; 05 - dw TradeAnim_TubeToOT1 ; 06 - dw TradeAnim_TubeToOT2 ; 07 - dw TradeAnim_TubeToOT3 ; 08 - dw TradeAnim_TubeToOT4 ; 09 - dw TradeAnim_TubeToOT5 ; 0a - dw TradeAnim_TubeToOT6 ; 0b - dw TradeAnim_TubeToOT7 ; 0c - dw TradeAnim_TubeToOT8 ; 0d - dw TradeAnim_TubeToPlayer1 ; 0e - dw TradeAnim_TubeToPlayer2 ; 0f - dw TradeAnim_TubeToPlayer3 ; 10 - dw TradeAnim_TubeToPlayer4 ; 11 - dw TradeAnim_TubeToPlayer5 ; 12 - dw TradeAnim_TubeToPlayer6 ; 13 - dw TradeAnim_TubeToPlayer7 ; 14 - dw TradeAnim_TubeToPlayer8 ; 15 - dw TradeAnim_SentToOTText ; 16 - dw TradeAnim_OTBidsFarewell ; 17 - dw TradeAnim_TakeCareOfText ; 18 - dw TradeAnim_OTSendsText1 ; 19 - dw TradeAnim_OTSendsText2 ; 1a - dw TradeAnim_SetupGivemonScroll ; 1b - dw TradeAnim_DoGivemonScroll ; 1c - dw TradeAnim_FrontpicScrollStart ; 1d - dw TradeAnim_TextboxScrollStart ; 1e - dw TradeAnim_ScrollOutRight ; 1f - dw TradeAnim_ScrollOutRight2 ; 20 - dw TraideAnim_Wait80 ; 21 - dw TraideAnim_Wait40 ; 22 - dw TradeAnim_RockingBall ; 23 - dw TradeAnim_DropBall ; 24 - dw TradeAnim_WaitAnim ; 25 - dw TradeAnim_WaitAnim2 ; 26 - dw TradeAnim_Poof ; 27 - dw TradeAnim_BulgeThroughTube ; 28 - dw TradeAnim_GiveTrademonSFX ; 29 - dw TradeAnim_GetTrademonSFX ; 2a - dw TradeAnim_End ; 2b - dw TradeAnim_AnimateFrontpic ; 2c - dw TraideAnim_Wait96 ; 2d - dw TraideAnim_Wait80IfOTEgg ; 2e - dw TraideAnim_Wait180IfOTEgg ; 2f -; 2910f - -TradeAnim_IncrementJumptableIndex: ; 2910f - ld hl, wJumptableIndex - inc [hl] - ret - -; 29114 - -TradeAnim_AdvanceScriptPointer: ; 29114 - ld hl, wTradeAnimAddress - ld e, [hl] - inc hl - ld d, [hl] - ld a, [de] - ld [wJumptableIndex], a - inc de - ld [hl], d - dec hl - ld [hl], e - ret - -; 29123 - -TradeAnim_End: ; 29123 - ld hl, wJumptableIndex - set 7, [hl] - ret - -; 29129 - -TradeAnim_TubeToOT1: ; 29129 - ld a, $ed ; >>>>>>>> - call TradeAnim_PlaceTrademonStatsOnTubeAnim - ld a, [wLinkTradeSendmonSpecies] - ld [wd265], a - xor a - depixel 5, 11, 4, 0 - ld b, $0 - jr TradeAnim_InitTubeAnim - -TradeAnim_TubeToPlayer1: ; 2913c - ld a, $ee ; <<<<<<<< - call TradeAnim_PlaceTrademonStatsOnTubeAnim - ld a, [wLinkTradeGetmonSpecies] - ld [wd265], a - ld a, $2 - depixel 9, 18, 4, 4 - ld b, $4 -TradeAnim_InitTubeAnim: ; 2914e - push bc - push de - push bc - push de - - push af - call DisableLCD - callab ClearSpriteAnims - hlbgcoord 20, 3 - ld bc, 12 - ld a, $60 - call ByteFill - pop af - - call TradeAnim_TubeAnimJumptable - - xor a - ld [hSCX], a - ld a, $7 - ld [hWX], a - ld a, $70 - ld [hWY], a - call EnableLCD - call LoadTradeBubbleGFX - - pop de - ld a, SPRITE_ANIM_INDEX_TRADEMON_ICON - call _InitSpriteAnimStruct - - ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX - add hl, bc - pop bc - ld [hl], b - - pop de - ld a, SPRITE_ANIM_INDEX_TRADEMON_BUBBLE - call _InitSpriteAnimStruct - - ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX - add hl, bc - pop bc - ld [hl], b - - call WaitBGMap - ld b, SCGB_TRADE_TUBE - call GetSGBLayout - ld a, %11100100 ; 3,2,1,0 - call DmgToCgbBGPals - ld a, %11010000 - call DmgToCgbObjPal0 - - call TradeAnim_IncrementJumptableIndex - ld a, $5c - ld [wcf64], a - ret - -; 291af - -TradeAnim_TubeToOT2: ; 291af - call TradeAnim_FlashBGPals - ld a, [hSCX] - add $2 - ld [hSCX], a - cp $50 - ret nz - ld a, $1 - call TradeAnim_TubeAnimJumptable - call TradeAnim_IncrementJumptableIndex - ret - -; 291c4 - -TradeAnim_TubeToOT3: ; 291c4 - call TradeAnim_FlashBGPals - ld a, [hSCX] - add $2 - ld [hSCX], a - cp $a0 - ret nz - ld a, $2 - call TradeAnim_TubeAnimJumptable - call TradeAnim_IncrementJumptableIndex - ret - -; 291d9 - -TradeAnim_TubeToOT4: ; 291d9 - call TradeAnim_FlashBGPals - ld a, [hSCX] - add $2 - ld [hSCX], a - and a - ret nz - call TradeAnim_IncrementJumptableIndex - ret - -; 291e8 - -TradeAnim_TubeToPlayer3: ; 291e8 - call TradeAnim_FlashBGPals - ld a, [hSCX] - sub $2 - ld [hSCX], a - cp $b0 - ret nz - ld a, $1 - call TradeAnim_TubeAnimJumptable - call TradeAnim_IncrementJumptableIndex - ret - -; 291fd - -TradeAnim_TubeToPlayer4: ; 291fd - call TradeAnim_FlashBGPals - ld a, [hSCX] - sub $2 - ld [hSCX], a - cp $60 - ret nz - xor a - call TradeAnim_TubeAnimJumptable - call TradeAnim_IncrementJumptableIndex - ret - -; 29211 - -TradeAnim_TubeToPlayer5: ; 29211 - call TradeAnim_FlashBGPals - ld a, [hSCX] - sub $2 - ld [hSCX], a - and a - ret nz - call TradeAnim_IncrementJumptableIndex - ret - -; 29220 - -TradeAnim_TubeToOT6: -TradeAnim_TubeToPlayer6: ; 29220 - ld a, $80 - ld [wcf64], a - call TradeAnim_IncrementJumptableIndex - ret - -; 29229 - -TradeAnim_TubeToOT8: -TradeAnim_TubeToPlayer8: ; 29229 - call ClearBGPalettes - call ClearTileMap - call ClearSprites - call DisableLCD - callab ClearSpriteAnims - hlbgcoord 0, 0 - ld bc, sScratch - VBGMap0 - ld a, " " - call ByteFill - xor a - ld [hSCX], a - ld a, $90 - ld [hWY], a - call EnableLCD - call LoadTradeBallAndCableGFX - call WaitBGMap - call TradeAnim_NormalPals - call TradeAnim_AdvanceScriptPointer - ret - -; 2925d - -TradeAnim_TubeToOT5: -TradeAnim_TubeToOT7: -TradeAnim_TubeToPlayer2: -TradeAnim_TubeToPlayer7: ; 2925d - call TradeAnim_FlashBGPals - ld hl, wcf64 - ld a, [hl] - and a - jr z, .done - dec [hl] - ret - -.done - call TradeAnim_IncrementJumptableIndex - ret - -; 2926d - -TradeAnim_GiveTrademonSFX: ; 2926d - call TradeAnim_AdvanceScriptPointer - ld de, SFX_GIVE_TRADEMON - call PlaySFX - ret - -; 29277 - -TradeAnim_GetTrademonSFX: ; 29277 - call TradeAnim_AdvanceScriptPointer - ld de, SFX_GET_TRADEMON - call PlaySFX - ret - -; 29281 - -TradeAnim_TubeAnimJumptable: ; 29281 - and 3 - ld e, a - ld d, 0 - ld hl, .Jumptable - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp hl -; 2928f - -.Jumptable: ; 2928f - dw .Zero - dw .One - dw .Two - dw .Three -; 29297 - -.Zero: ; 29297 -.Three: ; 29297 - call TradeAnim_BlankTileMap - hlcoord 9, 3 - ld [hl], $5b - inc hl - ld bc, 10 - ld a, $60 - call ByteFill - hlcoord 3, 2 - call TradeAnim_CopyTradeGameBoyTilemap - ret - -; 292af - -.One: ; 292af - call TradeAnim_BlankTileMap - hlcoord 0, 3 - ld bc, SCREEN_WIDTH - ld a, $60 - call ByteFill - ret - -; 292be - -.Two: ; 292be - call TradeAnim_BlankTileMap - hlcoord 0, 3 - ld bc, $11 - ld a, $60 - call ByteFill - hlcoord 17, 3 - ld a, $5d - ld [hl], a - - ld a, $61 - ld de, SCREEN_WIDTH - ld c, $3 -.loop - add hl, de - ld [hl], a - dec c - jr nz, .loop - - add hl, de - ld a, $5f - ld [hld], a - ld a, $5b - ld [hl], a - hlcoord 10, 6 - call TradeAnim_CopyTradeGameBoyTilemap - ret - -; 292ec - -TradeAnim_CopyTradeGameBoyTilemap: ; 292ec - ld de, TradeGameBoyTilemap - lb bc, 8, 6 - call TradeAnim_CopyBoxFromDEtoHL - ret - -; 292f6 - -TradeAnim_PlaceTrademonStatsOnTubeAnim: ; 292f6 - push af - call ClearBGPalettes - call WaitTop - ld a, VBGMap1 / $100 - ld [hBGMapAddress + 1], a - call ClearTileMap - hlcoord 0, 0 - ld bc, SCREEN_WIDTH - ld a, "─" - call ByteFill - hlcoord 0, 1 - ld de, wLinkPlayer1Name - call PlaceString - ld hl, wLinkPlayer2Name - ld de, 0 -.find_name_end_loop - ld a, [hli] - cp "@" - jr z, .done - dec de - jr .find_name_end_loop - -.done - hlcoord 0, 4 - add hl, de - ld de, wLinkPlayer2Name - call PlaceString - hlcoord 7, 2 - ld bc, 6 - pop af - call ByteFill - call WaitBGMap - call WaitTop - ld a, VBGMap0 / $100 - ld [hBGMapAddress + 1], a - call ClearTileMap - ret - -; 29348 - -TradeAnim_EnterLinkTube1: ; 29348 - call ClearTileMap - call WaitTop - ld a, $a0 - ld [hSCX], a - call DelayFrame - hlcoord 8, 2 - ld de, TradeLinkTubeTilemap - lb bc, 3, 12 - call TradeAnim_CopyBoxFromDEtoHL - call WaitBGMap - ld b, SCGB_TRADE_TUBE - call GetSGBLayout - ld a, %11100100 ; 3,2,1,0 - call DmgToCgbBGPals - lb de, %11100100, %11100100 ; 3,2,1,0, 3,2,1,0 - call DmgToCgbObjPals - ld de, SFX_POTION - call PlaySFX - call TradeAnim_IncrementJumptableIndex - ret - -; 2937e - -TradeAnim_EnterLinkTube2: ; 2937e - ld a, [hSCX] - and a - jr z, .done - add $4 - ld [hSCX], a - ret - -.done - ld c, 80 - call DelayFrames - call TradeAnim_AdvanceScriptPointer - ret - -; 29391 - -TradeAnim_ExitLinkTube: ; 29391 - ld a, [hSCX] - cp $a0 - jr z, .done - sub $4 - ld [hSCX], a - ret - -.done - call ClearTileMap - xor a - ld [hSCX], a - call TradeAnim_AdvanceScriptPointer - ret - -; 293a6 - -TradeAnim_SetupGivemonScroll: ; 293a6 - ld a, $8f - ld [hWX], a - ld a, $88 - ld [hSCX], a - ld a, $50 - ld [hWY], a - call TradeAnim_AdvanceScriptPointer - ret - -; 293b6 - -TradeAnim_DoGivemonScroll: ; 293b6 - ld a, [hWX] - cp $7 - jr z, .done - sub $4 - ld [hWX], a - ld a, [hSCX] - sub $4 - ld [hSCX], a - ret - -.done - ld a, $7 - ld [hWX], a - xor a - ld [hSCX], a - call TradeAnim_AdvanceScriptPointer - ret - -; 293d2 - -TradeAnim_FrontpicScrollStart: ; 293d2 - ld a, $7 - ld [hWX], a - ld a, $50 - ld [hWY], a - call TradeAnim_AdvanceScriptPointer - ret - -; 293de - -TradeAnim_TextboxScrollStart: ; 293de - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - call TradeAnim_AdvanceScriptPointer - ret - -; 293ea - -TradeAnim_ScrollOutRight: ; 293ea - call WaitTop - ld a, VBGMap1 / $100 - ld [hBGMapAddress + 1], a - call WaitBGMap - ld a, $7 - ld [hWX], a - xor a - ld [hWY], a - call DelayFrame - call WaitTop - ld a, VBGMap0 / $100 - ld [hBGMapAddress + 1], a - call ClearTileMap - call TradeAnim_IncrementJumptableIndex - ret - -; 2940c - -TradeAnim_ScrollOutRight2: ; 2940c - ld a, [hWX] - cp $a1 - jr nc, .done - add $4 - ld [hWX], a - ret - -.done - ld a, VBGMap1 / $100 - ld [hBGMapAddress + 1], a - call WaitBGMap - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - ld a, VBGMap0 / $100 - ld [hBGMapAddress + 1], a - call TradeAnim_AdvanceScriptPointer - ret - -; 2942e - -TradeAnim_ShowGivemonData: ; 2942e - call ShowPlayerTrademonStats - ld a, [wPlayerTrademonSpecies] - ld [CurPartySpecies], a - ld a, [wPlayerTrademonDVs] - ld [TempMonDVs], a - ld a, [wPlayerTrademonDVs + 1] - ld [TempMonDVs + 1], a - ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS - call GetSGBLayout - ld a, %11100100 ; 3,2,1,0 - call DmgToCgbBGPals - call TradeAnim_ShowGivemonFrontpic - - ld a, [wPlayerTrademonSpecies] - call GetCryIndex - jr c, .skip_cry - ld e, c - ld d, b - call PlayCryHeader -.skip_cry - - call TradeAnim_AdvanceScriptPointer - ret - -; 29461 - -TradeAnim_ShowGetmonData: ; 29461 - call ShowOTTrademonStats - ld a, [wOTTrademonSpecies] - ld [CurPartySpecies], a - ld a, [wOTTrademonDVs] - ld [TempMonDVs], a - ld a, [wOTTrademonDVs + 1] - ld [TempMonDVs + 1], a - ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS - call GetSGBLayout - ld a, %11100100 ; 3,2,1,0 - call DmgToCgbBGPals - call TradeAnim_ShowGetmonFrontpic - call TradeAnim_AdvanceScriptPointer - ret - -; 29487 - -TradeAnim_AnimateFrontpic: ; 29487 - callba AnimateTrademonFrontpic - call TradeAnim_AdvanceScriptPointer - ret - -; 29491 - -TradeAnim_GetFrontpic: ; 29491 - push de - push af - predef GetUnownLetter - pop af - ld [CurPartySpecies], a - ld [CurSpecies], a - call GetBaseData - pop de - predef GetFrontpic - ret - -; 294a9 - -TradeAnim_GetNickname: ; 294a9 - push de - ld [wd265], a - call GetPokemonName - ld hl, StringBuffer1 - pop de - ld bc, NAME_LENGTH - call CopyBytes - ret - -; 294bb - -TradeAnim_ShowGivemonFrontpic: ; 294bb - ld de, VTiles0 - jr TradeAnim_ShowFrontpic - -TradeAnim_ShowGetmonFrontpic: ; 294c0 - ld de, VTiles0 tile $31 -TradeAnim_ShowFrontpic: ; 294c3 - call DelayFrame - ld hl, VTiles2 - lb bc, 10, $31 - call Request2bpp - call WaitTop - call TradeAnim_BlankTileMap - hlcoord 7, 2 - xor a - ld [hGraphicStartTile], a - lb bc, 7, 7 - predef PlaceGraphic - call WaitBGMap - ret - -; 294e7 - -TraideAnim_Wait80: ; 294e7 - ld c, 80 - call DelayFrames - call TradeAnim_AdvanceScriptPointer - ret - -; 294f0 - -TraideAnim_Wait40: ; 294f0 - ld c, 40 - call DelayFrames - call TradeAnim_AdvanceScriptPointer - ret - -; 294f9 - -TraideAnim_Wait96: ; 294f9 - ld c, 96 - call DelayFrames - call TradeAnim_AdvanceScriptPointer - ret - -; 29502 - -TraideAnim_Wait80IfOTEgg: ; 29502 - call IsOTTrademonEgg - ret nz - ld c, 80 - call DelayFrames - ret - -; 2950c - -TraideAnim_Wait180IfOTEgg: ; 2950c - call IsOTTrademonEgg - ret nz - ld c, 180 - call DelayFrames - ret - -; 29516 - -IsOTTrademonEgg: ; 29516 - call TradeAnim_AdvanceScriptPointer - ld a, [wOTTrademonSpecies] - cp EGG - ret - -; 2951f -ShowPlayerTrademonStats: ; 2951f - ld de, wPlayerTrademonSpecies - ld a, [de] - cp EGG - jr z, TrademonStats_Egg - call TrademonStats_MonTemplate - ld de, wPlayerTrademonSpecies - call TrademonStats_PrintSpeciesNumber - ld de, wPlayerTrademonSpeciesName - call TrademonStats_PrintSpeciesName - ld a, [wPlayerTrademonCaughtData] - ld de, wPlayerTrademonOTName - call TrademonStats_PrintOTName - ld de, wPlayerTrademonID - call TrademonStats_PrintTrademonID - call TrademonStats_WaitBGMap - ret - -; 29549 - -ShowOTTrademonStats: ; 29549 - ld de, wOTTrademonSpecies - ld a, [de] - cp EGG - jr z, TrademonStats_Egg - call TrademonStats_MonTemplate - ld de, wOTTrademonSpecies - call TrademonStats_PrintSpeciesNumber - ld de, wOTTrademonSpeciesName - call TrademonStats_PrintSpeciesName - ld a, [wOTTrademonCaughtData] - ld de, wOTTrademonOTName - call TrademonStats_PrintOTName - ld de, wOTTrademonID - call TrademonStats_PrintTrademonID - call TrademonStats_WaitBGMap - ret - -; 29573 - -TrademonStats_MonTemplate: ; 29573 - call WaitTop - call TradeAnim_BlankTileMap - ld a, VBGMap1 / $100 - ld [hBGMapAddress + 1], a - hlcoord 3, 0 - ld b, $6 - ld c, $d - call TextBox - hlcoord 4, 0 - ld de, .OTMonData - call PlaceString - ret - -; 29591 - -.OTMonData: ; 29591 - db "─── №." - next "" - next "OT/" - next "№.@" -; 295a1 - -TrademonStats_Egg: ; 295a1 - call WaitTop - call TradeAnim_BlankTileMap - ld a, VBGMap1 / $100 - ld [hBGMapAddress + 1], a - hlcoord 3, 0 - ld b, 6 - ld c, 13 - call TextBox - hlcoord 4, 2 - ld de, .EggData - call PlaceString - call TrademonStats_WaitBGMap - ret - -; 295c2 - -.EggData: ; 295c2 - db "EGG" - next "OT/?????" - next "№.?????@" -; 295d8 - -TrademonStats_WaitBGMap: ; 295d8 - call WaitBGMap - call WaitTop - ld a, VBGMap0 / $100 - ld [hBGMapAddress + 1], a - ret - -; 295e3 - -TrademonStats_PrintSpeciesNumber: ; 295e3 - hlcoord 10, 0 - lb bc, PRINTNUM_LEADINGZEROS | 1, 3 - call PrintNum - ld [hl], " " - ret - -; 295ef - -TrademonStats_PrintSpeciesName: ; 295ef - hlcoord 4, 2 - call PlaceString - ret - -; 295f6 - -TrademonStats_PrintOTName: ; 295f6 - cp 3 - jr c, .caught_gender_okay - xor a -.caught_gender_okay - push af - hlcoord 7, 4 - call PlaceString - inc bc - pop af - ld hl, .Gender - ld d, 0 - ld e, a - add hl, de - ld a, [hl] - ld [bc], a - ret - -; 2960e - -.Gender: ; 2960e - db " ", "♂", "♀" -; 29611 - -TrademonStats_PrintTrademonID: ; 29611 - hlcoord 7, 6 - lb bc, PRINTNUM_LEADINGZEROS | 2, 5 - call PrintNum - ret - -; 2961b - -TradeAnim_RockingBall: ; 2961b - depixel 10, 11, 4, 0 - ld a, SPRITE_ANIM_INDEX_TRADE_POKE_BALL - call _InitSpriteAnimStruct - call TradeAnim_AdvanceScriptPointer - ld a, $20 - ld [wcf64], a - ret - -; 2962c - -TradeAnim_DropBall: ; 2962c - depixel 10, 11, 4, 0 - ld a, SPRITE_ANIM_INDEX_TRADE_POKE_BALL - call _InitSpriteAnimStruct - ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX - add hl, bc - ld [hl], $1 - ld hl, SPRITEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], $dc - call TradeAnim_AdvanceScriptPointer - ld a, $38 - ld [wcf64], a - ret - -; 29649 - -TradeAnim_Poof: ; 29649 - depixel 10, 11, 4, 0 - ld a, SPRITE_ANIM_INDEX_TRADE_POOF - call _InitSpriteAnimStruct - call TradeAnim_AdvanceScriptPointer - ld a, $10 - ld [wcf64], a - ld de, SFX_BALL_POOF - call PlaySFX - ret - -; 29660 - -TradeAnim_BulgeThroughTube: ; 29660 - ld a, %11100100 ; 3,2,1,0 - call DmgToCgbObjPal0 - depixel 5, 11 - ld a, SPRITE_ANIM_INDEX_TRADE_TUBE_BULGE - call _InitSpriteAnimStruct - call TradeAnim_AdvanceScriptPointer - ld a, $40 - ld [wcf64], a - ret - -; 29676 - -TradeAnim_AnimateTrademonInTube: ; 29676 (a:5676) - ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX - add hl, bc - ld e, [hl] - ld d, 0 - ld hl, .Jumptable - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp hl -; 29686 - -.Jumptable: ; 29686 (a:5686) - dw .InitTimer - dw .WaitTimer1 - dw .MoveRight - dw .MoveDown - dw .MoveUp - dw .MoveLeft - dw .WaitTimer2 -; 2969a - -.JumptableNext: ; 29694 (a:5694) - ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX - add hl, bc - inc [hl] - ret - -.InitTimer: ; 2969a (a:569a) - call .JumptableNext - ld hl, SPRITEANIMSTRUCT_0C - add hl, bc - ld [hl], $80 - ret - -.WaitTimer1: ; 296a4 (a:56a4) - ld hl, SPRITEANIMSTRUCT_0C - add hl, bc - ld a, [hl] - dec [hl] - and a - ret nz - call .JumptableNext - -.MoveRight: ; 296af (a:56af) - ld hl, SPRITEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $94 - jr nc, .done_move_right - inc [hl] - ret - -.done_move_right - call .JumptableNext - -.MoveDown: ; 296bd (a:56bd) - ld hl, SPRITEANIMSTRUCT_YCOORD - add hl, bc - ld a, [hl] - cp $4c - jr nc, .done_move_down - inc [hl] - ret - -.done_move_down - ld hl, SPRITEANIMSTRUCT_INDEX - add hl, bc - ld [hl], $0 - ret - -.MoveUp: ; 296cf (a:56cf) - ld hl, SPRITEANIMSTRUCT_YCOORD - add hl, bc - ld a, [hl] - cp $2c - jr z, .done_move_up - dec [hl] - ret - -.done_move_up - call .JumptableNext - -.MoveLeft: ; 296dd (a:56dd) - ld hl, SPRITEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $58 - jr z, .done_move_left - dec [hl] - ret - -.done_move_left - call .JumptableNext - ld hl, SPRITEANIMSTRUCT_0C - add hl, bc - ld [hl], $80 - ret - -.WaitTimer2: ; 296f2 (a:56f2) - ld hl, SPRITEANIMSTRUCT_0C - add hl, bc - ld a, [hl] - dec [hl] - and a - ret nz - ld hl, SPRITEANIMSTRUCT_INDEX - add hl, bc - ld [hl], $0 - ret - -; 29701 (a:5701) - -TradeAnim_SentToOTText: ; 29701 - ld a, [wLinkMode] - cp LINK_TIMECAPSULE - jr z, .time_capsule - ld hl, .Text_MonName - call PrintText - ld c, 189 - call DelayFrames - ld hl, .Text_WasSentTo - call PrintText - call TradeAnim_Wait80Frames - ld c, 128 - call DelayFrames - call TradeAnim_AdvanceScriptPointer - ret - -.time_capsule - ld hl, .Text_WasSentTo - call PrintText - call TradeAnim_Wait80Frames - call TradeAnim_AdvanceScriptPointer - ret - -; 29732 - -.Text_WasSentTo: ; 0x29732 - ; was sent to @ . - text_jump UnknownText_0x1bc6e9 - db "@" -; 0x29737 - -.Text_MonName: ; 0x29737 - ; - text_jump UnknownText_0x1bc701 - db "@" -; 0x2973c - -TradeAnim_OTBidsFarewell: ; 2973c - ld hl, .Text_BidsFarewellToMon - call PrintText - call TradeAnim_Wait80Frames - ld hl, .Text_MonName - call PrintText - call TradeAnim_Wait80Frames - call TradeAnim_AdvanceScriptPointer - ret - -; 29752 - -.Text_BidsFarewellToMon: ; 0x29752 - ; bids farewell to - text_jump UnknownText_0x1bc703 - db "@" -; 0x29757 - -.Text_MonName: ; 0x29757 - ; . - text_jump UnknownText_0x1bc719 - db "@" -; 0x2975c - -TradeAnim_TakeCareOfText: ; 2975c - call WaitTop - hlcoord 0, 10 - ld bc, 8 * SCREEN_WIDTH - ld a, " " - call ByteFill - call WaitBGMap - ld hl, .Text_TakeGoodCareOfMon - call PrintText - call TradeAnim_Wait80Frames - call TradeAnim_AdvanceScriptPointer - ret - -; 2977a - -.Text_TakeGoodCareOfMon: ; 0x2977a - ; Take good care of @ . - text_jump UnknownText_0x1bc71f - db "@" -; 0x2977f - -TradeAnim_OTSendsText1: ; 2977f - ld hl, .Text_ForYourMon - call PrintText - call TradeAnim_Wait80Frames - ld hl, .Text_OTSends - call PrintText - call TradeAnim_Wait80Frames - ld c, 14 - call DelayFrames - call TradeAnim_AdvanceScriptPointer - ret - -; 2979a - -.Text_ForYourMon: ; 0x2979a - ; For @ 's @ , - text_jump UnknownText_0x1bc739 - db "@" -; 0x2979f - -.Text_OTSends: ; 0x2979f - ; sends @ . - text_jump UnknownText_0x1bc74c - db "@" -; 0x297a4 - -TradeAnim_OTSendsText2: ; 297a4 - ld hl, .Text_WillTrade - call PrintText - call TradeAnim_Wait80Frames - ld hl, .Text_ForYourMon - call PrintText - call TradeAnim_Wait80Frames - ld c, 14 - call DelayFrames - call TradeAnim_AdvanceScriptPointer - ret - -; 297bf - -.Text_WillTrade: ; 0x297bf - ; will trade @ @ - text_jump UnknownText_0x1bc75e - db "@" -; 0x297c4 - -.Text_ForYourMon: ; 0x297c4 - ; for @ 's @ . - text_jump UnknownText_0x1bc774 - db "@" -; 0x297c9 - -TradeAnim_Wait80Frames: ; 297c9 - ld c, 80 - call DelayFrames - ret - -; 297cf - -TradeAnim_BlankTileMap: ; 297cf - hlcoord 0, 0 - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - ld a, " " - call ByteFill - ret - -; 297db - -TradeAnim_CopyBoxFromDEtoHL: ; 297db -.row - push bc - push hl -.col - ld a, [de] - inc de - ld [hli], a - dec c - jr nz, .col - pop hl - ld bc, SCREEN_WIDTH - add hl, bc - pop bc - dec b - jr nz, .row - ret - -; 297ed - -TradeAnim_NormalPals: ; 297ed - ld a, [hSGB] - and a - ld a, %11100100 ; 3,2,1,0 - jr z, .not_sgb - ld a, $f0 - -.not_sgb - call DmgToCgbObjPal0 - ld a, %11100100 ; 3,2,1,0 - call DmgToCgbBGPals - ret - -; 297ff - -LinkTradeAnim_LoadTradePlayerNames: ; 297ff - push de - ld de, wLinkPlayer1Name - ld bc, NAME_LENGTH - call CopyBytes - pop hl - ld de, wLinkPlayer2Name - ld bc, NAME_LENGTH - call CopyBytes - ret - -; 29814 - -LinkTradeAnim_LoadTradeMonSpecies: ; 29814 - ld a, [hl] - ld [wLinkTradeSendmonSpecies], a - ld a, [de] - ld [wLinkTradeGetmonSpecies], a - ret - -; 2981d - -TradeAnim_FlashBGPals: ; 2981d - ld a, [wcf65] - and $7 - ret nz - ld a, [rBGP] - xor %00111100 - call DmgToCgbBGPals - ret - -; 2982b - -LoadTradeBallAndCableGFX: ; 2982b - call DelayFrame - ld de, TradeBallGFX - ld hl, VTiles0 tile $62 - lb bc, BANK(TradeBallGFX), $6 - call Request2bpp - ld de, TradePoofGFX - ld hl, VTiles0 tile $68 - lb bc, BANK(TradePoofGFX), $c - call Request2bpp - ld de, TradeCableGFX - ld hl, VTiles0 tile $74 - lb bc, BANK(TradeCableGFX), $4 - call Request2bpp - xor a - ld hl, wSpriteAnimDict - ld [hli], a - ld [hl], $62 - ret - -; 2985a - -LoadTradeBubbleGFX: ; 2985a - call DelayFrame - ld e, $3 - callab LoadMenuMonIcon - ld de, TradeBubbleGFX - ld hl, VTiles0 tile $72 - lb bc, BANK(TradeBubbleGFX), $4 - call Request2bpp - xor a - ld hl, wSpriteAnimDict - ld [hli], a - ld [hl], $62 - ret - -; 29879 - -TradeAnim_WaitAnim: ; 29879 - ld hl, wcf64 - ld a, [hl] - and a - jr z, .done - dec [hl] - ret - -.done - call TradeAnim_AdvanceScriptPointer - ret - -; 29886 - -TradeAnim_WaitAnim2: ; 29886 - ld hl, wcf64 - ld a, [hl] - and a - jr z, .done - dec [hl] - ret - -.done - call TradeAnim_AdvanceScriptPointer - ret - -; 29893 - - -DebugTrade: ; 29893 -; This function is unreferenced. -; It was meant for use in Japanese versions, so the -; constant used for copy length was changed by accident. - - ld hl, .DebugTradeData - - ld a, [hli] - ld [wPlayerTrademonSpecies], a - ld de, wPlayerTrademonSenderName - ld c, 11 + 2 ; jp: 6 + 2 -.loop1 - ld a, [hli] - ld [de], a - inc de - dec c - jr nz, .loop1 - - ld a, [hli] - ld [wOTTrademonSpecies], a - ld de, wOTTrademonSenderName - ld c, 11 + 2 ; jp: 6 + 2 -.loop2 - ld a, [hli] - ld [de], a - inc de - dec c - jr nz, .loop2 - ret - -; 298b5 - -.DebugTradeData: ; 298b5 - db VENUSAUR, "ゲーフり@@", $23, $01 ; GAME FREAK - db CHARIZARD, "クりーチャ@", $56, $04 ; Creatures Inc. -; 298c7 - - -TradeGameBoyTilemap: ; 298c7 -; 6x8 - db $31, $32, $32, $32, $32, $33 - db $34, $35, $36, $36, $37, $38 - db $34, $39, $3a, $3a, $3b, $38 - db $3c, $3d, $3e, $3e, $3f, $40 - db $41, $42, $43, $43, $44, $45 - db $46, $47, $43, $48, $49, $4a - db $41, $43, $4b, $4c, $4d, $4e - db $4f, $50, $50, $50, $51, $52 -; 297f7 - -TradeLinkTubeTilemap: ; 297f7 -; 12x3 - db $43, $55, $56, $53, $53, $53, $53, $53, $53, $53, $53, $53 - db $43, $57, $58, $54, $54, $54, $54, $54, $54, $54, $54, $54 - db $43, $59, $5a, $43, $43, $43, $43, $43, $43, $43, $43, $43 -; 2991b - -TradeArrowGFX: INCBIN "gfx/trade/arrow.2bpp" -TradeCableGFX: INCBIN "gfx/trade/cable.2bpp" -TradeBubbleGFX: INCBIN "gfx/trade/bubble.2bpp" -TradeGameBoyLZ: INCBIN "gfx/trade/game_boy.2bpp.lz" -TradeBallGFX: INCBIN "gfx/trade/ball.2bpp" -TradePoofGFX: INCBIN "gfx/trade/poof.2bpp" diff --git a/engine/trade_animation.asm b/engine/trade_animation.asm new file mode 100755 index 000000000..7100bd558 --- /dev/null +++ b/engine/trade_animation.asm @@ -0,0 +1,1628 @@ +TradeAnimation: ; 28f24 + xor a + ld [wcf66], a + ld hl, wPlayerTrademonSenderName + ld de, wOTTrademonSenderName + call LinkTradeAnim_LoadTradePlayerNames + ld hl, wPlayerTrademonSpecies + ld de, wOTTrademonSpecies + call LinkTradeAnim_LoadTradeMonSpecies + ld de, .script + jr RunTradeAnimScript + +.script + tradeanim_setup_givemon_scroll + tradeanim_show_givemon_data + tradeanim_do_givemon_scroll + tradeanim_wait_80 + tradeanim_wait_96 + tradeanim_poof + tradeanim_rocking_ball + tradeanim_enter_link_tube + tradeanim_wait_anim + tradeanim_bulge_through_tube + tradeanim_wait_anim + tradeanim_textbox_scroll + tradeanim_give_trademon_sfx + tradeanim_tube_to_ot + tradeanim_sent_to_ot_text + tradeanim_scroll_out_right + + tradeanim_ot_sends_text_1 + tradeanim_ot_bids_farewell + tradeanim_wait_40 + tradeanim_scroll_out_right + tradeanim_get_trademon_sfx + tradeanim_tube_to_player + tradeanim_enter_link_tube + tradeanim_drop_ball + tradeanim_exit_link_tube + tradeanim_wait_anim + tradeanim_show_getmon_data + tradeanim_poof + tradeanim_wait_anim + tradeanim_frontpic_scroll + tradeanim_animate_frontpic + tradeanim_wait_80_if_ot_egg + tradeanim_textbox_scroll + tradeanim_take_care_of_text + tradeanim_scroll_out_right + tradeanim_end + +TradeAnimationPlayer2: ; 28f63 + xor a + ld [wcf66], a + ld hl, wOTTrademonSenderName + ld de, wPlayerTrademonSenderName + call LinkTradeAnim_LoadTradePlayerNames + ld hl, wOTTrademonSpecies + ld de, wPlayerTrademonSpecies + call LinkTradeAnim_LoadTradeMonSpecies + ld de, .script + jr RunTradeAnimScript + +.script + tradeanim_ot_sends_text_2 + tradeanim_ot_bids_farewell + tradeanim_wait_40 + tradeanim_scroll_out_right + tradeanim_get_trademon_sfx + tradeanim_tube_to_ot + tradeanim_enter_link_tube + tradeanim_drop_ball + tradeanim_exit_link_tube + tradeanim_wait_anim + tradeanim_show_getmon_data + tradeanim_poof + tradeanim_wait_anim + tradeanim_frontpic_scroll + tradeanim_animate_frontpic + tradeanim_wait_180_if_ot_egg + tradeanim_textbox_scroll + tradeanim_take_care_of_text + tradeanim_scroll_out_right + + tradeanim_setup_givemon_scroll + tradeanim_show_givemon_data + tradeanim_do_givemon_scroll + tradeanim_wait_40 + tradeanim_poof + tradeanim_rocking_ball + tradeanim_enter_link_tube + tradeanim_wait_anim + tradeanim_bulge_through_tube + tradeanim_wait_anim + tradeanim_textbox_scroll + tradeanim_give_trademon_sfx + tradeanim_tube_to_player + tradeanim_sent_to_ot_text + tradeanim_scroll_out_right + tradeanim_end + +RunTradeAnimScript: ; 28fa1 + ld hl, wTradeAnimAddress + ld [hl], e + inc hl + ld [hl], d + ld a, [hMapAnims] + push af + xor a + ld [hMapAnims], a + ld hl, VramState + ld a, [hl] + push af + res 0, [hl] + ld hl, Options + ld a, [hl] + push af + set 4, [hl] + call .TradeAnimLayout + ld a, [wcf66] + and a + jr nz, .anim_loop + ld de, MUSIC_EVOLUTION + call PlayMusic2 +.anim_loop + call DoTradeAnimation + jr nc, .anim_loop + pop af + ld [Options], a + pop af + ld [VramState], a + pop af + ld [hMapAnims], a + ret + +; 28fdb + +.TradeAnimLayout: ; 28fdb + xor a + ld [wJumptableIndex], a + call ClearBGPalettes + call ClearSprites + call ClearTileMap + call DisableLCD + call LoadFontsBattleExtra + callab ClearSpriteAnims + ld a, [hCGB] + and a + jr z, .NotCGB + ld a, $1 + ld [rVBK], a + ld hl, VTiles0 + ld bc, sScratch - VTiles0 + xor a + call ByteFill + ld a, $0 + ld [rVBK], a + +.NotCGB: + hlbgcoord 0, 0 + ld bc, sScratch - VBGMap0 + ld a, " " + call ByteFill + ld hl, TradeGameBoyLZ + ld de, VTiles2 tile $31 + call Decompress + ld hl, TradeArrowGFX + ld de, VTiles1 tile $6d + ld bc, $10 + ld a, BANK(TradeArrowGFX) + call FarCopyBytes + ld hl, TradeArrowGFX + $10 + ld de, VTiles1 tile $6e + ld bc, $10 + ld a, BANK(TradeArrowGFX) + call FarCopyBytes + xor a + ld [hSCX], a + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + callba GetTrademonFrontpic + call EnableLCD + call LoadTradeBallAndCableGFX + ld a, [wPlayerTrademonSpecies] + ld hl, wPlayerTrademonDVs + ld de, VTiles0 + call TradeAnim_GetFrontpic + ld a, [wOTTrademonSpecies] + ld hl, wOTTrademonDVs + ld de, VTiles0 tile $31 + call TradeAnim_GetFrontpic + ld a, [wPlayerTrademonSpecies] + ld de, wPlayerTrademonSpeciesName + call TradeAnim_GetNickname + ld a, [wOTTrademonSpecies] + ld de, wOTTrademonSpeciesName + call TradeAnim_GetNickname + call TradeAnim_NormalPals + ret + +; 29082 + +DoTradeAnimation: ; 29082 + ld a, [wJumptableIndex] + bit 7, a + jr nz, .finished + call .DoTradeAnimCommand + callab PlaySpriteAnimations + ld hl, wcf65 + inc [hl] + call DelayFrame + and a + ret + +.finished + call LoadStandardFont + scf + ret + +; 290a0 + +.DoTradeAnimCommand: ; 290a0 + ld a, [wJumptableIndex] + ld e, a + ld d, 0 + ld hl, .JumpTable + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp hl +; 290af + +.JumpTable: ; 290af +; entries correspond to macros/trade_anim.asm enumeration + dw TradeAnim_AdvanceScriptPointer ; 00 + dw TradeAnim_ShowGivemonData ; 01 + dw TradeAnim_ShowGetmonData ; 02 + dw TradeAnim_EnterLinkTube1 ; 03 + dw TradeAnim_EnterLinkTube2 ; 04 + dw TradeAnim_ExitLinkTube ; 05 + dw TradeAnim_TubeToOT1 ; 06 + dw TradeAnim_TubeToOT2 ; 07 + dw TradeAnim_TubeToOT3 ; 08 + dw TradeAnim_TubeToOT4 ; 09 + dw TradeAnim_TubeToOT5 ; 0a + dw TradeAnim_TubeToOT6 ; 0b + dw TradeAnim_TubeToOT7 ; 0c + dw TradeAnim_TubeToOT8 ; 0d + dw TradeAnim_TubeToPlayer1 ; 0e + dw TradeAnim_TubeToPlayer2 ; 0f + dw TradeAnim_TubeToPlayer3 ; 10 + dw TradeAnim_TubeToPlayer4 ; 11 + dw TradeAnim_TubeToPlayer5 ; 12 + dw TradeAnim_TubeToPlayer6 ; 13 + dw TradeAnim_TubeToPlayer7 ; 14 + dw TradeAnim_TubeToPlayer8 ; 15 + dw TradeAnim_SentToOTText ; 16 + dw TradeAnim_OTBidsFarewell ; 17 + dw TradeAnim_TakeCareOfText ; 18 + dw TradeAnim_OTSendsText1 ; 19 + dw TradeAnim_OTSendsText2 ; 1a + dw TradeAnim_SetupGivemonScroll ; 1b + dw TradeAnim_DoGivemonScroll ; 1c + dw TradeAnim_FrontpicScrollStart ; 1d + dw TradeAnim_TextboxScrollStart ; 1e + dw TradeAnim_ScrollOutRight ; 1f + dw TradeAnim_ScrollOutRight2 ; 20 + dw TraideAnim_Wait80 ; 21 + dw TraideAnim_Wait40 ; 22 + dw TradeAnim_RockingBall ; 23 + dw TradeAnim_DropBall ; 24 + dw TradeAnim_WaitAnim ; 25 + dw TradeAnim_WaitAnim2 ; 26 + dw TradeAnim_Poof ; 27 + dw TradeAnim_BulgeThroughTube ; 28 + dw TradeAnim_GiveTrademonSFX ; 29 + dw TradeAnim_GetTrademonSFX ; 2a + dw TradeAnim_End ; 2b + dw TradeAnim_AnimateFrontpic ; 2c + dw TraideAnim_Wait96 ; 2d + dw TraideAnim_Wait80IfOTEgg ; 2e + dw TraideAnim_Wait180IfOTEgg ; 2f +; 2910f + +TradeAnim_IncrementJumptableIndex: ; 2910f + ld hl, wJumptableIndex + inc [hl] + ret + +; 29114 + +TradeAnim_AdvanceScriptPointer: ; 29114 + ld hl, wTradeAnimAddress + ld e, [hl] + inc hl + ld d, [hl] + ld a, [de] + ld [wJumptableIndex], a + inc de + ld [hl], d + dec hl + ld [hl], e + ret + +; 29123 + +TradeAnim_End: ; 29123 + ld hl, wJumptableIndex + set 7, [hl] + ret + +; 29129 + +TradeAnim_TubeToOT1: ; 29129 + ld a, $ed ; >>>>>>>> + call TradeAnim_PlaceTrademonStatsOnTubeAnim + ld a, [wLinkTradeSendmonSpecies] + ld [wd265], a + xor a + depixel 5, 11, 4, 0 + ld b, $0 + jr TradeAnim_InitTubeAnim + +TradeAnim_TubeToPlayer1: ; 2913c + ld a, $ee ; <<<<<<<< + call TradeAnim_PlaceTrademonStatsOnTubeAnim + ld a, [wLinkTradeGetmonSpecies] + ld [wd265], a + ld a, $2 + depixel 9, 18, 4, 4 + ld b, $4 +TradeAnim_InitTubeAnim: ; 2914e + push bc + push de + push bc + push de + + push af + call DisableLCD + callab ClearSpriteAnims + hlbgcoord 20, 3 + ld bc, 12 + ld a, $60 + call ByteFill + pop af + + call TradeAnim_TubeAnimJumptable + + xor a + ld [hSCX], a + ld a, $7 + ld [hWX], a + ld a, $70 + ld [hWY], a + call EnableLCD + call LoadTradeBubbleGFX + + pop de + ld a, SPRITE_ANIM_INDEX_TRADEMON_ICON + call _InitSpriteAnimStruct + + ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX + add hl, bc + pop bc + ld [hl], b + + pop de + ld a, SPRITE_ANIM_INDEX_TRADEMON_BUBBLE + call _InitSpriteAnimStruct + + ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX + add hl, bc + pop bc + ld [hl], b + + call WaitBGMap + ld b, SCGB_TRADE_TUBE + call GetSGBLayout + ld a, %11100100 ; 3,2,1,0 + call DmgToCgbBGPals + ld a, %11010000 + call DmgToCgbObjPal0 + + call TradeAnim_IncrementJumptableIndex + ld a, $5c + ld [wcf64], a + ret + +; 291af + +TradeAnim_TubeToOT2: ; 291af + call TradeAnim_FlashBGPals + ld a, [hSCX] + add $2 + ld [hSCX], a + cp $50 + ret nz + ld a, $1 + call TradeAnim_TubeAnimJumptable + call TradeAnim_IncrementJumptableIndex + ret + +; 291c4 + +TradeAnim_TubeToOT3: ; 291c4 + call TradeAnim_FlashBGPals + ld a, [hSCX] + add $2 + ld [hSCX], a + cp $a0 + ret nz + ld a, $2 + call TradeAnim_TubeAnimJumptable + call TradeAnim_IncrementJumptableIndex + ret + +; 291d9 + +TradeAnim_TubeToOT4: ; 291d9 + call TradeAnim_FlashBGPals + ld a, [hSCX] + add $2 + ld [hSCX], a + and a + ret nz + call TradeAnim_IncrementJumptableIndex + ret + +; 291e8 + +TradeAnim_TubeToPlayer3: ; 291e8 + call TradeAnim_FlashBGPals + ld a, [hSCX] + sub $2 + ld [hSCX], a + cp $b0 + ret nz + ld a, $1 + call TradeAnim_TubeAnimJumptable + call TradeAnim_IncrementJumptableIndex + ret + +; 291fd + +TradeAnim_TubeToPlayer4: ; 291fd + call TradeAnim_FlashBGPals + ld a, [hSCX] + sub $2 + ld [hSCX], a + cp $60 + ret nz + xor a + call TradeAnim_TubeAnimJumptable + call TradeAnim_IncrementJumptableIndex + ret + +; 29211 + +TradeAnim_TubeToPlayer5: ; 29211 + call TradeAnim_FlashBGPals + ld a, [hSCX] + sub $2 + ld [hSCX], a + and a + ret nz + call TradeAnim_IncrementJumptableIndex + ret + +; 29220 + +TradeAnim_TubeToOT6: +TradeAnim_TubeToPlayer6: ; 29220 + ld a, $80 + ld [wcf64], a + call TradeAnim_IncrementJumptableIndex + ret + +; 29229 + +TradeAnim_TubeToOT8: +TradeAnim_TubeToPlayer8: ; 29229 + call ClearBGPalettes + call ClearTileMap + call ClearSprites + call DisableLCD + callab ClearSpriteAnims + hlbgcoord 0, 0 + ld bc, sScratch - VBGMap0 + ld a, " " + call ByteFill + xor a + ld [hSCX], a + ld a, $90 + ld [hWY], a + call EnableLCD + call LoadTradeBallAndCableGFX + call WaitBGMap + call TradeAnim_NormalPals + call TradeAnim_AdvanceScriptPointer + ret + +; 2925d + +TradeAnim_TubeToOT5: +TradeAnim_TubeToOT7: +TradeAnim_TubeToPlayer2: +TradeAnim_TubeToPlayer7: ; 2925d + call TradeAnim_FlashBGPals + ld hl, wcf64 + ld a, [hl] + and a + jr z, .done + dec [hl] + ret + +.done + call TradeAnim_IncrementJumptableIndex + ret + +; 2926d + +TradeAnim_GiveTrademonSFX: ; 2926d + call TradeAnim_AdvanceScriptPointer + ld de, SFX_GIVE_TRADEMON + call PlaySFX + ret + +; 29277 + +TradeAnim_GetTrademonSFX: ; 29277 + call TradeAnim_AdvanceScriptPointer + ld de, SFX_GET_TRADEMON + call PlaySFX + ret + +; 29281 + +TradeAnim_TubeAnimJumptable: ; 29281 + and 3 + ld e, a + ld d, 0 + ld hl, .Jumptable + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp hl +; 2928f + +.Jumptable: ; 2928f + dw .Zero + dw .One + dw .Two + dw .Three +; 29297 + +.Zero: ; 29297 +.Three: ; 29297 + call TradeAnim_BlankTileMap + hlcoord 9, 3 + ld [hl], $5b + inc hl + ld bc, 10 + ld a, $60 + call ByteFill + hlcoord 3, 2 + call TradeAnim_CopyTradeGameBoyTilemap + ret + +; 292af + +.One: ; 292af + call TradeAnim_BlankTileMap + hlcoord 0, 3 + ld bc, SCREEN_WIDTH + ld a, $60 + call ByteFill + ret + +; 292be + +.Two: ; 292be + call TradeAnim_BlankTileMap + hlcoord 0, 3 + ld bc, $11 + ld a, $60 + call ByteFill + hlcoord 17, 3 + ld a, $5d + ld [hl], a + + ld a, $61 + ld de, SCREEN_WIDTH + ld c, $3 +.loop + add hl, de + ld [hl], a + dec c + jr nz, .loop + + add hl, de + ld a, $5f + ld [hld], a + ld a, $5b + ld [hl], a + hlcoord 10, 6 + call TradeAnim_CopyTradeGameBoyTilemap + ret + +; 292ec + +TradeAnim_CopyTradeGameBoyTilemap: ; 292ec + ld de, TradeGameBoyTilemap + lb bc, 8, 6 + call TradeAnim_CopyBoxFromDEtoHL + ret + +; 292f6 + +TradeAnim_PlaceTrademonStatsOnTubeAnim: ; 292f6 + push af + call ClearBGPalettes + call WaitTop + ld a, VBGMap1 / $100 + ld [hBGMapAddress + 1], a + call ClearTileMap + hlcoord 0, 0 + ld bc, SCREEN_WIDTH + ld a, "─" + call ByteFill + hlcoord 0, 1 + ld de, wLinkPlayer1Name + call PlaceString + ld hl, wLinkPlayer2Name + ld de, 0 +.find_name_end_loop + ld a, [hli] + cp "@" + jr z, .done + dec de + jr .find_name_end_loop + +.done + hlcoord 0, 4 + add hl, de + ld de, wLinkPlayer2Name + call PlaceString + hlcoord 7, 2 + ld bc, 6 + pop af + call ByteFill + call WaitBGMap + call WaitTop + ld a, VBGMap0 / $100 + ld [hBGMapAddress + 1], a + call ClearTileMap + ret + +; 29348 + +TradeAnim_EnterLinkTube1: ; 29348 + call ClearTileMap + call WaitTop + ld a, $a0 + ld [hSCX], a + call DelayFrame + hlcoord 8, 2 + ld de, TradeLinkTubeTilemap + lb bc, 3, 12 + call TradeAnim_CopyBoxFromDEtoHL + call WaitBGMap + ld b, SCGB_TRADE_TUBE + call GetSGBLayout + ld a, %11100100 ; 3,2,1,0 + call DmgToCgbBGPals + lb de, %11100100, %11100100 ; 3,2,1,0, 3,2,1,0 + call DmgToCgbObjPals + ld de, SFX_POTION + call PlaySFX + call TradeAnim_IncrementJumptableIndex + ret + +; 2937e + +TradeAnim_EnterLinkTube2: ; 2937e + ld a, [hSCX] + and a + jr z, .done + add $4 + ld [hSCX], a + ret + +.done + ld c, 80 + call DelayFrames + call TradeAnim_AdvanceScriptPointer + ret + +; 29391 + +TradeAnim_ExitLinkTube: ; 29391 + ld a, [hSCX] + cp $a0 + jr z, .done + sub $4 + ld [hSCX], a + ret + +.done + call ClearTileMap + xor a + ld [hSCX], a + call TradeAnim_AdvanceScriptPointer + ret + +; 293a6 + +TradeAnim_SetupGivemonScroll: ; 293a6 + ld a, $8f + ld [hWX], a + ld a, $88 + ld [hSCX], a + ld a, $50 + ld [hWY], a + call TradeAnim_AdvanceScriptPointer + ret + +; 293b6 + +TradeAnim_DoGivemonScroll: ; 293b6 + ld a, [hWX] + cp $7 + jr z, .done + sub $4 + ld [hWX], a + ld a, [hSCX] + sub $4 + ld [hSCX], a + ret + +.done + ld a, $7 + ld [hWX], a + xor a + ld [hSCX], a + call TradeAnim_AdvanceScriptPointer + ret + +; 293d2 + +TradeAnim_FrontpicScrollStart: ; 293d2 + ld a, $7 + ld [hWX], a + ld a, $50 + ld [hWY], a + call TradeAnim_AdvanceScriptPointer + ret + +; 293de + +TradeAnim_TextboxScrollStart: ; 293de + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + call TradeAnim_AdvanceScriptPointer + ret + +; 293ea + +TradeAnim_ScrollOutRight: ; 293ea + call WaitTop + ld a, VBGMap1 / $100 + ld [hBGMapAddress + 1], a + call WaitBGMap + ld a, $7 + ld [hWX], a + xor a + ld [hWY], a + call DelayFrame + call WaitTop + ld a, VBGMap0 / $100 + ld [hBGMapAddress + 1], a + call ClearTileMap + call TradeAnim_IncrementJumptableIndex + ret + +; 2940c + +TradeAnim_ScrollOutRight2: ; 2940c + ld a, [hWX] + cp $a1 + jr nc, .done + add $4 + ld [hWX], a + ret + +.done + ld a, VBGMap1 / $100 + ld [hBGMapAddress + 1], a + call WaitBGMap + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + ld a, VBGMap0 / $100 + ld [hBGMapAddress + 1], a + call TradeAnim_AdvanceScriptPointer + ret + +; 2942e + +TradeAnim_ShowGivemonData: ; 2942e + call ShowPlayerTrademonStats + ld a, [wPlayerTrademonSpecies] + ld [CurPartySpecies], a + ld a, [wPlayerTrademonDVs] + ld [TempMonDVs], a + ld a, [wPlayerTrademonDVs + 1] + ld [TempMonDVs + 1], a + ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS + call GetSGBLayout + ld a, %11100100 ; 3,2,1,0 + call DmgToCgbBGPals + call TradeAnim_ShowGivemonFrontpic + + ld a, [wPlayerTrademonSpecies] + call GetCryIndex + jr c, .skip_cry + ld e, c + ld d, b + call PlayCryHeader +.skip_cry + + call TradeAnim_AdvanceScriptPointer + ret + +; 29461 + +TradeAnim_ShowGetmonData: ; 29461 + call ShowOTTrademonStats + ld a, [wOTTrademonSpecies] + ld [CurPartySpecies], a + ld a, [wOTTrademonDVs] + ld [TempMonDVs], a + ld a, [wOTTrademonDVs + 1] + ld [TempMonDVs + 1], a + ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS + call GetSGBLayout + ld a, %11100100 ; 3,2,1,0 + call DmgToCgbBGPals + call TradeAnim_ShowGetmonFrontpic + call TradeAnim_AdvanceScriptPointer + ret + +; 29487 + +TradeAnim_AnimateFrontpic: ; 29487 + callba AnimateTrademonFrontpic + call TradeAnim_AdvanceScriptPointer + ret + +; 29491 + +TradeAnim_GetFrontpic: ; 29491 + push de + push af + predef GetUnownLetter + pop af + ld [CurPartySpecies], a + ld [CurSpecies], a + call GetBaseData + pop de + predef GetFrontpic + ret + +; 294a9 + +TradeAnim_GetNickname: ; 294a9 + push de + ld [wd265], a + call GetPokemonName + ld hl, StringBuffer1 + pop de + ld bc, NAME_LENGTH + call CopyBytes + ret + +; 294bb + +TradeAnim_ShowGivemonFrontpic: ; 294bb + ld de, VTiles0 + jr TradeAnim_ShowFrontpic + +TradeAnim_ShowGetmonFrontpic: ; 294c0 + ld de, VTiles0 tile $31 +TradeAnim_ShowFrontpic: ; 294c3 + call DelayFrame + ld hl, VTiles2 + lb bc, 10, $31 + call Request2bpp + call WaitTop + call TradeAnim_BlankTileMap + hlcoord 7, 2 + xor a + ld [hGraphicStartTile], a + lb bc, 7, 7 + predef PlaceGraphic + call WaitBGMap + ret + +; 294e7 + +TraideAnim_Wait80: ; 294e7 + ld c, 80 + call DelayFrames + call TradeAnim_AdvanceScriptPointer + ret + +; 294f0 + +TraideAnim_Wait40: ; 294f0 + ld c, 40 + call DelayFrames + call TradeAnim_AdvanceScriptPointer + ret + +; 294f9 + +TraideAnim_Wait96: ; 294f9 + ld c, 96 + call DelayFrames + call TradeAnim_AdvanceScriptPointer + ret + +; 29502 + +TraideAnim_Wait80IfOTEgg: ; 29502 + call IsOTTrademonEgg + ret nz + ld c, 80 + call DelayFrames + ret + +; 2950c + +TraideAnim_Wait180IfOTEgg: ; 2950c + call IsOTTrademonEgg + ret nz + ld c, 180 + call DelayFrames + ret + +; 29516 + +IsOTTrademonEgg: ; 29516 + call TradeAnim_AdvanceScriptPointer + ld a, [wOTTrademonSpecies] + cp EGG + ret + +; 2951f +ShowPlayerTrademonStats: ; 2951f + ld de, wPlayerTrademonSpecies + ld a, [de] + cp EGG + jr z, TrademonStats_Egg + call TrademonStats_MonTemplate + ld de, wPlayerTrademonSpecies + call TrademonStats_PrintSpeciesNumber + ld de, wPlayerTrademonSpeciesName + call TrademonStats_PrintSpeciesName + ld a, [wPlayerTrademonCaughtData] + ld de, wPlayerTrademonOTName + call TrademonStats_PrintOTName + ld de, wPlayerTrademonID + call TrademonStats_PrintTrademonID + call TrademonStats_WaitBGMap + ret + +; 29549 + +ShowOTTrademonStats: ; 29549 + ld de, wOTTrademonSpecies + ld a, [de] + cp EGG + jr z, TrademonStats_Egg + call TrademonStats_MonTemplate + ld de, wOTTrademonSpecies + call TrademonStats_PrintSpeciesNumber + ld de, wOTTrademonSpeciesName + call TrademonStats_PrintSpeciesName + ld a, [wOTTrademonCaughtData] + ld de, wOTTrademonOTName + call TrademonStats_PrintOTName + ld de, wOTTrademonID + call TrademonStats_PrintTrademonID + call TrademonStats_WaitBGMap + ret + +; 29573 + +TrademonStats_MonTemplate: ; 29573 + call WaitTop + call TradeAnim_BlankTileMap + ld a, VBGMap1 / $100 + ld [hBGMapAddress + 1], a + hlcoord 3, 0 + ld b, $6 + ld c, $d + call TextBox + hlcoord 4, 0 + ld de, .OTMonData + call PlaceString + ret + +; 29591 + +.OTMonData: ; 29591 + db "─── №." + next "" + next "OT/" + next "№.@" +; 295a1 + +TrademonStats_Egg: ; 295a1 + call WaitTop + call TradeAnim_BlankTileMap + ld a, VBGMap1 / $100 + ld [hBGMapAddress + 1], a + hlcoord 3, 0 + ld b, 6 + ld c, 13 + call TextBox + hlcoord 4, 2 + ld de, .EggData + call PlaceString + call TrademonStats_WaitBGMap + ret + +; 295c2 + +.EggData: ; 295c2 + db "EGG" + next "OT/?????" + next "№.?????@" +; 295d8 + +TrademonStats_WaitBGMap: ; 295d8 + call WaitBGMap + call WaitTop + ld a, VBGMap0 / $100 + ld [hBGMapAddress + 1], a + ret + +; 295e3 + +TrademonStats_PrintSpeciesNumber: ; 295e3 + hlcoord 10, 0 + lb bc, PRINTNUM_LEADINGZEROS | 1, 3 + call PrintNum + ld [hl], " " + ret + +; 295ef + +TrademonStats_PrintSpeciesName: ; 295ef + hlcoord 4, 2 + call PlaceString + ret + +; 295f6 + +TrademonStats_PrintOTName: ; 295f6 + cp 3 + jr c, .caught_gender_okay + xor a +.caught_gender_okay + push af + hlcoord 7, 4 + call PlaceString + inc bc + pop af + ld hl, .Gender + ld d, 0 + ld e, a + add hl, de + ld a, [hl] + ld [bc], a + ret + +; 2960e + +.Gender: ; 2960e + db " ", "♂", "♀" +; 29611 + +TrademonStats_PrintTrademonID: ; 29611 + hlcoord 7, 6 + lb bc, PRINTNUM_LEADINGZEROS | 2, 5 + call PrintNum + ret + +; 2961b + +TradeAnim_RockingBall: ; 2961b + depixel 10, 11, 4, 0 + ld a, SPRITE_ANIM_INDEX_TRADE_POKE_BALL + call _InitSpriteAnimStruct + call TradeAnim_AdvanceScriptPointer + ld a, $20 + ld [wcf64], a + ret + +; 2962c + +TradeAnim_DropBall: ; 2962c + depixel 10, 11, 4, 0 + ld a, SPRITE_ANIM_INDEX_TRADE_POKE_BALL + call _InitSpriteAnimStruct + ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX + add hl, bc + ld [hl], $1 + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], $dc + call TradeAnim_AdvanceScriptPointer + ld a, $38 + ld [wcf64], a + ret + +; 29649 + +TradeAnim_Poof: ; 29649 + depixel 10, 11, 4, 0 + ld a, SPRITE_ANIM_INDEX_TRADE_POOF + call _InitSpriteAnimStruct + call TradeAnim_AdvanceScriptPointer + ld a, $10 + ld [wcf64], a + ld de, SFX_BALL_POOF + call PlaySFX + ret + +; 29660 + +TradeAnim_BulgeThroughTube: ; 29660 + ld a, %11100100 ; 3,2,1,0 + call DmgToCgbObjPal0 + depixel 5, 11 + ld a, SPRITE_ANIM_INDEX_TRADE_TUBE_BULGE + call _InitSpriteAnimStruct + call TradeAnim_AdvanceScriptPointer + ld a, $40 + ld [wcf64], a + ret + +; 29676 + +TradeAnim_AnimateTrademonInTube: ; 29676 (a:5676) + ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX + add hl, bc + ld e, [hl] + ld d, 0 + ld hl, .Jumptable + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp hl +; 29686 + +.Jumptable: ; 29686 (a:5686) + dw .InitTimer + dw .WaitTimer1 + dw .MoveRight + dw .MoveDown + dw .MoveUp + dw .MoveLeft + dw .WaitTimer2 +; 2969a + +.JumptableNext: ; 29694 (a:5694) + ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX + add hl, bc + inc [hl] + ret + +.InitTimer: ; 2969a (a:569a) + call .JumptableNext + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld [hl], $80 + ret + +.WaitTimer1: ; 296a4 (a:56a4) + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + dec [hl] + and a + ret nz + call .JumptableNext + +.MoveRight: ; 296af (a:56af) + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $94 + jr nc, .done_move_right + inc [hl] + ret + +.done_move_right + call .JumptableNext + +.MoveDown: ; 296bd (a:56bd) + ld hl, SPRITEANIMSTRUCT_YCOORD + add hl, bc + ld a, [hl] + cp $4c + jr nc, .done_move_down + inc [hl] + ret + +.done_move_down + ld hl, SPRITEANIMSTRUCT_INDEX + add hl, bc + ld [hl], $0 + ret + +.MoveUp: ; 296cf (a:56cf) + ld hl, SPRITEANIMSTRUCT_YCOORD + add hl, bc + ld a, [hl] + cp $2c + jr z, .done_move_up + dec [hl] + ret + +.done_move_up + call .JumptableNext + +.MoveLeft: ; 296dd (a:56dd) + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $58 + jr z, .done_move_left + dec [hl] + ret + +.done_move_left + call .JumptableNext + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld [hl], $80 + ret + +.WaitTimer2: ; 296f2 (a:56f2) + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + dec [hl] + and a + ret nz + ld hl, SPRITEANIMSTRUCT_INDEX + add hl, bc + ld [hl], $0 + ret + +; 29701 (a:5701) + +TradeAnim_SentToOTText: ; 29701 + ld a, [wLinkMode] + cp LINK_TIMECAPSULE + jr z, .time_capsule + ld hl, .Text_MonName + call PrintText + ld c, 189 + call DelayFrames + ld hl, .Text_WasSentTo + call PrintText + call TradeAnim_Wait80Frames + ld c, 128 + call DelayFrames + call TradeAnim_AdvanceScriptPointer + ret + +.time_capsule + ld hl, .Text_WasSentTo + call PrintText + call TradeAnim_Wait80Frames + call TradeAnim_AdvanceScriptPointer + ret + +; 29732 + +.Text_WasSentTo: ; 0x29732 + ; was sent to @ . + text_jump UnknownText_0x1bc6e9 + db "@" +; 0x29737 + +.Text_MonName: ; 0x29737 + ; + text_jump UnknownText_0x1bc701 + db "@" +; 0x2973c + +TradeAnim_OTBidsFarewell: ; 2973c + ld hl, .Text_BidsFarewellToMon + call PrintText + call TradeAnim_Wait80Frames + ld hl, .Text_MonName + call PrintText + call TradeAnim_Wait80Frames + call TradeAnim_AdvanceScriptPointer + ret + +; 29752 + +.Text_BidsFarewellToMon: ; 0x29752 + ; bids farewell to + text_jump UnknownText_0x1bc703 + db "@" +; 0x29757 + +.Text_MonName: ; 0x29757 + ; . + text_jump UnknownText_0x1bc719 + db "@" +; 0x2975c + +TradeAnim_TakeCareOfText: ; 2975c + call WaitTop + hlcoord 0, 10 + ld bc, 8 * SCREEN_WIDTH + ld a, " " + call ByteFill + call WaitBGMap + ld hl, .Text_TakeGoodCareOfMon + call PrintText + call TradeAnim_Wait80Frames + call TradeAnim_AdvanceScriptPointer + ret + +; 2977a + +.Text_TakeGoodCareOfMon: ; 0x2977a + ; Take good care of @ . + text_jump UnknownText_0x1bc71f + db "@" +; 0x2977f + +TradeAnim_OTSendsText1: ; 2977f + ld hl, .Text_ForYourMon + call PrintText + call TradeAnim_Wait80Frames + ld hl, .Text_OTSends + call PrintText + call TradeAnim_Wait80Frames + ld c, 14 + call DelayFrames + call TradeAnim_AdvanceScriptPointer + ret + +; 2979a + +.Text_ForYourMon: ; 0x2979a + ; For @ 's @ , + text_jump UnknownText_0x1bc739 + db "@" +; 0x2979f + +.Text_OTSends: ; 0x2979f + ; sends @ . + text_jump UnknownText_0x1bc74c + db "@" +; 0x297a4 + +TradeAnim_OTSendsText2: ; 297a4 + ld hl, .Text_WillTrade + call PrintText + call TradeAnim_Wait80Frames + ld hl, .Text_ForYourMon + call PrintText + call TradeAnim_Wait80Frames + ld c, 14 + call DelayFrames + call TradeAnim_AdvanceScriptPointer + ret + +; 297bf + +.Text_WillTrade: ; 0x297bf + ; will trade @ @ + text_jump UnknownText_0x1bc75e + db "@" +; 0x297c4 + +.Text_ForYourMon: ; 0x297c4 + ; for @ 's @ . + text_jump UnknownText_0x1bc774 + db "@" +; 0x297c9 + +TradeAnim_Wait80Frames: ; 297c9 + ld c, 80 + call DelayFrames + ret + +; 297cf + +TradeAnim_BlankTileMap: ; 297cf + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, " " + call ByteFill + ret + +; 297db + +TradeAnim_CopyBoxFromDEtoHL: ; 297db +.row + push bc + push hl +.col + ld a, [de] + inc de + ld [hli], a + dec c + jr nz, .col + pop hl + ld bc, SCREEN_WIDTH + add hl, bc + pop bc + dec b + jr nz, .row + ret + +; 297ed + +TradeAnim_NormalPals: ; 297ed + ld a, [hSGB] + and a + ld a, %11100100 ; 3,2,1,0 + jr z, .not_sgb + ld a, $f0 + +.not_sgb + call DmgToCgbObjPal0 + ld a, %11100100 ; 3,2,1,0 + call DmgToCgbBGPals + ret + +; 297ff + +LinkTradeAnim_LoadTradePlayerNames: ; 297ff + push de + ld de, wLinkPlayer1Name + ld bc, NAME_LENGTH + call CopyBytes + pop hl + ld de, wLinkPlayer2Name + ld bc, NAME_LENGTH + call CopyBytes + ret + +; 29814 + +LinkTradeAnim_LoadTradeMonSpecies: ; 29814 + ld a, [hl] + ld [wLinkTradeSendmonSpecies], a + ld a, [de] + ld [wLinkTradeGetmonSpecies], a + ret + +; 2981d + +TradeAnim_FlashBGPals: ; 2981d + ld a, [wcf65] + and $7 + ret nz + ld a, [rBGP] + xor %00111100 + call DmgToCgbBGPals + ret + +; 2982b + +LoadTradeBallAndCableGFX: ; 2982b + call DelayFrame + ld de, TradeBallGFX + ld hl, VTiles0 tile $62 + lb bc, BANK(TradeBallGFX), $6 + call Request2bpp + ld de, TradePoofGFX + ld hl, VTiles0 tile $68 + lb bc, BANK(TradePoofGFX), $c + call Request2bpp + ld de, TradeCableGFX + ld hl, VTiles0 tile $74 + lb bc, BANK(TradeCableGFX), $4 + call Request2bpp + xor a + ld hl, wSpriteAnimDict + ld [hli], a + ld [hl], $62 + ret + +; 2985a + +LoadTradeBubbleGFX: ; 2985a + call DelayFrame + ld e, $3 + callab LoadMenuMonIcon + ld de, TradeBubbleGFX + ld hl, VTiles0 tile $72 + lb bc, BANK(TradeBubbleGFX), $4 + call Request2bpp + xor a + ld hl, wSpriteAnimDict + ld [hli], a + ld [hl], $62 + ret + +; 29879 + +TradeAnim_WaitAnim: ; 29879 + ld hl, wcf64 + ld a, [hl] + and a + jr z, .done + dec [hl] + ret + +.done + call TradeAnim_AdvanceScriptPointer + ret + +; 29886 + +TradeAnim_WaitAnim2: ; 29886 + ld hl, wcf64 + ld a, [hl] + and a + jr z, .done + dec [hl] + ret + +.done + call TradeAnim_AdvanceScriptPointer + ret + +; 29893 + + +DebugTrade: ; 29893 +; This function is unreferenced. +; It was meant for use in Japanese versions, so the +; constant used for copy length was changed by accident. + + ld hl, .DebugTradeData + + ld a, [hli] + ld [wPlayerTrademonSpecies], a + ld de, wPlayerTrademonSenderName + ld c, 11 + 2 ; jp: 6 + 2 +.loop1 + ld a, [hli] + ld [de], a + inc de + dec c + jr nz, .loop1 + + ld a, [hli] + ld [wOTTrademonSpecies], a + ld de, wOTTrademonSenderName + ld c, 11 + 2 ; jp: 6 + 2 +.loop2 + ld a, [hli] + ld [de], a + inc de + dec c + jr nz, .loop2 + ret + +; 298b5 + +.DebugTradeData: ; 298b5 + db VENUSAUR, "ゲーフり@@", $23, $01 ; GAME FREAK + db CHARIZARD, "クりーチャ@", $56, $04 ; Creatures Inc. +; 298c7 + + +TradeGameBoyTilemap: ; 298c7 +; 6x8 + db $31, $32, $32, $32, $32, $33 + db $34, $35, $36, $36, $37, $38 + db $34, $39, $3a, $3a, $3b, $38 + db $3c, $3d, $3e, $3e, $3f, $40 + db $41, $42, $43, $43, $44, $45 + db $46, $47, $43, $48, $49, $4a + db $41, $43, $4b, $4c, $4d, $4e + db $4f, $50, $50, $50, $51, $52 +; 297f7 + +TradeLinkTubeTilemap: ; 297f7 +; 12x3 + db $43, $55, $56, $53, $53, $53, $53, $53, $53, $53, $53, $53 + db $43, $57, $58, $54, $54, $54, $54, $54, $54, $54, $54, $54 + db $43, $59, $5a, $43, $43, $43, $43, $43, $43, $43, $43, $43 +; 2991b + +TradeArrowGFX: INCBIN "gfx/trade/arrow.2bpp" +TradeCableGFX: INCBIN "gfx/trade/cable.2bpp" +TradeBubbleGFX: INCBIN "gfx/trade/bubble.2bpp" +TradeGameBoyLZ: INCBIN "gfx/trade/game_boy.2bpp.lz" +TradeBallGFX: INCBIN "gfx/trade/ball.2bpp" +TradePoofGFX: INCBIN "gfx/trade/poof.2bpp" diff --git a/macros.asm b/macros.asm index f0dc01fbe..48c2ceca4 100644 --- a/macros.asm +++ b/macros.asm @@ -22,5 +22,5 @@ INCLUDE "macros/scripts/gfx_anim.asm" percent EQUS "* $ff / 100" -tiles EQUS "* $10" -tile EQUS "+ $10 *" +tiles EQUS "* LEN_2BPP_TILE" +tile EQUS "+ LEN_2BPP_TILE *" diff --git a/main.asm b/main.asm index 3deb21334..5049540d8 100644 --- a/main.asm +++ b/main.asm @@ -612,7 +612,7 @@ INCLUDE "data/items/marts.asm" INCLUDE "event/mom.asm" INCLUDE "event/daycare.asm" INCLUDE "event/photo.asm" -INCLUDE "engine/breeding/egg.asm" +INCLUDE "engine/breeding.asm" INCLUDE "tilesets/data.asm" @@ -1771,7 +1771,7 @@ CheckCanLearnMoveTutorMove: ; 492b9 db 12, 00 ; start coords db 17, 19 ; end coords -INCLUDE "predef/crystal.asm" +INCLUDE "engine/crystal_colors.asm" Unknown_4985a: ; unreferenced db $ab, $03, $57, $24, $ac, $0e, $13, $32 @@ -5073,7 +5073,7 @@ INCLUDE "engine/crystal_intro.asm" SECTION "bank3E", ROMX INCLUDE "gfx/font.asm" -INCLUDE "engine/time_capsule/conversion.asm" +INCLUDE "engine/time_capsule.asm" INCLUDE "engine/unowndex.asm" INCLUDE "event/magikarp.asm" INCLUDE "battle/hidden_power.asm" diff --git a/predef/cgb.asm b/predef/cgb.asm deleted file mode 100644 index 7ede2768f..000000000 --- a/predef/cgb.asm +++ /dev/null @@ -1,1127 +0,0 @@ -; Replaces the functionality of sgb.asm to work with CGB hardware. - -CheckCGB: ; 8d55 - ld a, [hCGB] - and a - ret -; 8d59 - -Predef_LoadSGBLayoutCGB: ; 8d59 - ld a, b - cp SCGB_RAM - jr nz, .not_ram - ld a, [SGBPredef] -.not_ram - cp SCGB_PARTY_MENU_HP_PALS - jp z, CGB_ApplyPartyMenuHPPals - call ResetBGPals - ld l, a - ld h, 0 - add hl, hl - ld de, .dw - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld de, .ReturnFromJumpTable - push de - jp hl -; 8d79 - -.ReturnFromJumpTable: ; 8d79 - ret -; 8d7a - -.dw ; 8d7a - dw _CGB_BattleGrayscale - dw _CGB_BattleColors - dw _CGB_PokegearPals - dw _CGB_StatsScreenHPPals - dw _CGB_Pokedex - dw _CGB_SlotMachine - dw _CGB06 - dw _CGB07 - dw _CGB_Diploma - dw _CGB_MapPals - dw _CGB_PartyMenu - dw _CGB_Evolution - dw _CGB0c - dw _CGB0d - dw _CGB_MoveList - dw _CGB0f - dw _CGB_PokedexSearchOption - dw _CGB11 - dw _CGB_Pokepic - dw _CGB13 - dw _CGB_PackPals - dw _CGB_TrainerCard - dw _CGB_PokedexUnownMode - dw _CGB_BillsPC - dw _CGB_UnownPuzzle - dw _CGB_GamefreakLogo ; called before copyright - dw _CGB_PlayerOrMonFrontpicPals - dw _CGB_TradeTube - dw _CGB_TrainerOrMonFrontpicPals - dw _CGB_MysteryGift - dw _CGB1e -; 8db8 - -_CGB_BattleGrayscale: ; 8db8 - ld hl, PalPacket_9c66 + 1 - ld de, UnknBGPals - ld c, 4 - call CopyPalettes - ld hl, PalPacket_9c66 + 1 - ld de, UnknBGPals palette PAL_BATTLE_BG_EXP - ld c, 4 - call CopyPalettes - ld hl, PalPacket_9c66 + 1 - ld de, UnknOBPals - ld c, 2 - call CopyPalettes - jr _CGB_FinishBattleScreenLayout - -_CGB_BattleColors: ; 8ddb - ld de, UnknBGPals - call GetBattlemonBackpicPalettePointer - push hl - call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_BG_PLAYER - call GetEnemyFrontpicPalettePointer - push hl - call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_BG_ENEMY - ld a, [EnemyHPPal] - ld l, a - ld h, $0 - add hl, hl - add hl, hl - ld bc, Palettes_a8be - add hl, bc - call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_BG_ENEMY_HP - ld a, [PlayerHPPal] - ld l, a - ld h, $0 - add hl, hl - add hl, hl - ld bc, Palettes_a8be - add hl, bc - call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_BG_PLAYER_HP - ld hl, Palettes_a8ca - call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_BG_EXP - ld de, UnknOBPals - pop hl - call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_OB_ENEMY - pop hl - call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_OB_PLAYER - ld a, SCGB_BATTLE_COLORS - ld [SGBPredef], a - call ApplyPals -_CGB_FinishBattleScreenLayout: ; 8e23 - call InitPartyMenuBGPal7 - hlcoord 0, 0, AttrMap - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - ld a, PAL_BATTLE_BG_ENEMY_HP - call ByteFill - hlcoord 0, 4, AttrMap - lb bc, 8, 10 - ld a, PAL_BATTLE_BG_PLAYER - call FillBoxCGB - hlcoord 10, 0, AttrMap - lb bc, 7, 10 - ld a, PAL_BATTLE_BG_ENEMY - call FillBoxCGB - hlcoord 0, 0, AttrMap - lb bc, 4, 10 - ld a, PAL_BATTLE_BG_ENEMY_HP - call FillBoxCGB - hlcoord 10, 7, AttrMap - lb bc, 5, 10 - ld a, PAL_BATTLE_BG_PLAYER_HP - call FillBoxCGB - hlcoord 10, 11, AttrMap - lb bc, 1, 9 - ld a, PAL_BATTLE_BG_EXP - call FillBoxCGB - hlcoord 0, 12, AttrMap - ld bc, 6 * SCREEN_WIDTH - ld a, PAL_BATTLE_BG_TEXT - call ByteFill - ld hl, Palettes_979c - ld de, UnknOBPals palette PAL_BATTLE_OB_GRAY - ld bc, 6 palettes - ld a, $5 - call FarCopyWRAM - call ApplyAttrMap - ret -; 8e85 - - -InitPartyMenuBGPal7: ; 8e85 - callba Function100dc0 -Mobile_InitPartyMenuBGPal7: ; 8e8b - ld hl, Palette_b311 - jr nc, .not_mobile - ld hl, Palette_b309 -.not_mobile - ld de, UnknBGPals palette 7 - ld bc, 1 palettes - ld a, $5 - call FarCopyWRAM - ret -; 8e9f - -InitPartyMenuBGPal0: ; 8e9f - callba Function100dc0 - ld hl, Palette_b311 - jr nc, .not_mobile - ld hl, Palette_b309 -.not_mobile - ld de, UnknBGPals palette 0 - ld bc, 1 palettes - ld a, $5 - call FarCopyWRAM - ret -; 8eb9 - -_CGB_PokegearPals: ; 8eb9 - ld a, [PlayerGender] - bit 0, a - jr z, .male - ld hl, FemalePokegearPals - jr .got_pals - -.male - ld hl, MalePokegearPals -.got_pals - ld de, UnknBGPals - ld bc, 6 palettes - ld a, $5 - call FarCopyWRAM - call ApplyPals - ld a, $1 - ld [hCGBPalUpdate], a - ret -; 8edb - -_CGB_StatsScreenHPPals: ; 8edb - ld de, UnknBGPals - ld a, [wCurHPPal] - ld l, a - ld h, $0 - add hl, hl - add hl, hl - ld bc, Palettes_a8be - add hl, bc - call LoadPalette_White_Col1_Col2_Black ; hp palette - ld a, [CurPartySpecies] - ld bc, TempMonDVs - call GetPlayerOrMonPalettePointer - call LoadPalette_White_Col1_Col2_Black ; mon palette - ld hl, Palettes_a8ca - call LoadPalette_White_Col1_Col2_Black ; exp palette - ld hl, StatsScreenPagePals - ld de, UnknBGPals palette 3 - ld bc, 3 palettes ; pink, green, and blue page palettes - ld a, $5 - call FarCopyWRAM - call WipeAttrMap - - hlcoord 0, 0, AttrMap - lb bc, 8, SCREEN_WIDTH - ld a, $1 ; mon palette - call FillBoxCGB - - hlcoord 10, 16, AttrMap - ld bc, 10 - ld a, $2 ; exp palette - call ByteFill - - hlcoord 13, 5, AttrMap - lb bc, 2, 2 - ld a, $3 ; pink page palette - call FillBoxCGB - - hlcoord 15, 5, AttrMap - lb bc, 2, 2 - ld a, $4 ; green page palette - call FillBoxCGB - - hlcoord 17, 5, AttrMap - lb bc, 2, 2 - ld a, $5 ; blue page palette - call FillBoxCGB - - call ApplyAttrMap - call ApplyPals - ld a, $1 - ld [hCGBPalUpdate], a - ret -; 8f52 - -StatsScreenPagePals: ; 8f52 -; pink - RGB 31, 31, 31 - RGB 31, 19, 31 - RGB 31, 15, 31 - RGB 00, 00, 00 -; green - RGB 31, 31, 31 - RGB 21, 31, 14 - RGB 17, 31, 00 - RGB 00, 00, 00 -; blue - RGB 31, 31, 31 - RGB 17, 31, 31 - RGB 17, 31, 31 - RGB 00, 00, 00 -; 8f6a - -StatsScreenPals: ; 8f6a -; pink - RGB 31, 19, 31 -; green - RGB 21, 31, 14 -; blue - RGB 17, 31, 31 -; 8f70 - -_CGB_Pokedex: ; 8f70 - ld de, UnknBGPals - ld a, $1d - call GetPredefPal - call LoadHLPaletteIntoDE ; dex interface palette - ld a, [CurPartySpecies] - cp $ff - jr nz, .is_pokemon - ld hl, .PokedexQuestionMarkPalette - call LoadHLPaletteIntoDE ; green question mark palette - jr .got_palette - -.is_pokemon - call GetMonPalettePointer_ - call LoadPalette_White_Col1_Col2_Black ; mon palette -.got_palette - call WipeAttrMap - hlcoord 1, 1, AttrMap - lb bc, 7, 7 - ld a, $1 ; green question mark palette - call FillBoxCGB - call InitPartyMenuOBPals - ld hl, .PokedexCursorPalette - ld de, UnknOBPals palette 7 ; green cursor palette - ld bc, 1 palettes - ld a, $5 - call FarCopyWRAM - call ApplyAttrMap - call ApplyPals - ld a, $1 - ld [hCGBPalUpdate], a - ret -; 8fba - -.PokedexQuestionMarkPalette: ; 8fba - RGB 11, 23, 00 - RGB 07, 17, 00 - RGB 06, 16, 03 - RGB 05, 12, 01 - -.PokedexCursorPalette: ; 8fc2 - RGB 00, 00, 00 - RGB 11, 23, 00 - RGB 07, 17, 00 - RGB 00, 00, 00 -; 8fca - -_CGB_BillsPC: ; 8fca - ld de, UnknBGPals - ld a, $1d - call GetPredefPal - call LoadHLPaletteIntoDE - ld a, [CurPartySpecies] - cp $ff - jr nz, .GetMonPalette - ld hl, .BillsPCOrangePalette - call LoadHLPaletteIntoDE - jr .Resume - -.GetMonPalette: - ld bc, TempMonDVs - call GetPlayerOrMonPalettePointer - call LoadPalette_White_Col1_Col2_Black -.Resume: - call WipeAttrMap - hlcoord 1, 4, AttrMap - lb bc, 7, 7 - ld a, $1 - call FillBoxCGB - call InitPartyMenuOBPals - call ApplyAttrMap - call ApplyPals - ld a, $1 - ld [hCGBPalUpdate], a - ret -; 9009 - -.Function9009: ; 9009 - ld hl, .BillsPCOrangePalette - call LoadHLPaletteIntoDE - jr .asm_901a - -.unused - ld bc, TempMonDVs - call GetPlayerOrMonPalettePointer - call LoadPalette_White_Col1_Col2_Black -.asm_901a - call WipeAttrMap - hlcoord 1, 1, AttrMap - lb bc, 7, 7 - ld a, $1 - call FillBoxCGB - call InitPartyMenuOBPals - call ApplyAttrMap - call ApplyPals - ld a, $1 - ld [hCGBPalUpdate], a - ret -; 9036 - -.BillsPCOrangePalette: ; 9036 - RGB 31, 15, 00 - RGB 23, 12, 00 - RGB 15, 07, 00 - RGB 00, 00, 00 -; 903e - -_CGB_PokedexUnownMode: ; 903e - ld de, UnknBGPals - ld a, $1d - call GetPredefPal - call LoadHLPaletteIntoDE - ld a, [CurPartySpecies] - call GetMonPalettePointer_ - call LoadPalette_White_Col1_Col2_Black - call WipeAttrMap - hlcoord 7, 5, AttrMap - lb bc, 7, 7 - ld a, $1 - call FillBoxCGB - call InitPartyMenuOBPals - call ApplyAttrMap - call ApplyPals - ld a, $1 - ld [hCGBPalUpdate], a - ret -; 906e - -_CGB_SlotMachine: ; 906e - ld hl, SlotMachinePals - ld de, UnknBGPals - ld bc, 16 palettes - ld a, $5 - call FarCopyWRAM - call WipeAttrMap - hlcoord 0, 2, AttrMap - lb bc, 10, 3 - ld a, $2 - call FillBoxCGB - hlcoord 17, 2, AttrMap - lb bc, 10, 3 - ld a, $2 - call FillBoxCGB - hlcoord 0, 4, AttrMap - lb bc, 6, 3 - ld a, $3 - call FillBoxCGB - hlcoord 17, 4, AttrMap - lb bc, 6, 3 - ld a, $3 - call FillBoxCGB - hlcoord 0, 6, AttrMap - lb bc, 2, 3 - ld a, $4 - call FillBoxCGB - hlcoord 17, 6, AttrMap - lb bc, 2, 3 - ld a, $4 - call FillBoxCGB - hlcoord 4, 2, AttrMap - lb bc, 2, 12 - ld a, $1 - call FillBoxCGB - hlcoord 3, 2, AttrMap - lb bc, 10, 1 - ld a, $1 - call FillBoxCGB - hlcoord 16, 2, AttrMap - lb bc, 10, 1 - ld a, $1 - call FillBoxCGB - hlcoord 0, 12, AttrMap - ld bc, $78 - ld a, $7 - call ByteFill - call ApplyAttrMap - call ApplyPals - ld a, $1 - ld [hCGBPalUpdate], a - ret -; 90f8 - -_CGB06: ; 90f8 - ld hl, PalPacket_9ca6 + 1 - call CopyFourPalettes - call WipeAttrMap - ld de, UnknOBPals - ld a, $3c - call GetPredefPal - call LoadHLPaletteIntoDE - hlcoord 0, 6, AttrMap - lb bc, 12, SCREEN_WIDTH - ld a, $1 - call FillBoxCGB - call ApplyAttrMap - call ApplyPals - ld a, $1 - ld [hCGBPalUpdate], a - ret -; 9122 - -_CGB07: ; 9122 - ld b, 0 - ld hl, .Jumptable - add hl, bc - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - jp hl -; 912d - -.Jumptable: ; 912d - dw .Function9133 - dw .Function9166 - dw .Function9180 -; 9133 - -.Function9133: ; 9133 - ld hl, .Palette_914e - ld de, UnknBGPals - call LoadHLPaletteIntoDE - ld hl, .Palette_9156 - ld de, UnknOBPals - ld bc, 2 palettes - ld a, $5 - call FarCopyWRAM - call WipeAttrMap - ret -; 914e - -.Palette_914e: ; 914e - RGB 19, 31, 19 - RGB 18, 23, 31 - RGB 11, 21, 28 - RGB 04, 16, 24 - -.Palette_9156: ; 9156 - RGB 29, 29, 29 - RGB 20, 19, 20 - RGB 19, 06, 04 - RGB 03, 04, 06 - - RGB 31, 31, 31 - RGB 31, 31, 31 - RGB 31, 00, 00 - RGB 03, 04, 06 -; 9166 - -.Function9166: ; 9166 - ld de, UnknBGPals - ld a, $38 - call GetPredefPal - call LoadHLPaletteIntoDE - - ld de, UnknOBPals - ld a, $39 - call GetPredefPal - call LoadHLPaletteIntoDE - call WipeAttrMap - ret -; 9180 - -.Function9180: ; 9180 - ld hl, PalPacket_9c36 + 1 - call CopyFourPalettes - ld de, UnknOBPals - ld a, $3a - call GetPredefPal - call LoadHLPaletteIntoDE - call WipeAttrMap - ret -; 9195 - -_CGB11: ; 9195 - ld hl, Palettes_b789 - ld de, UnknBGPals - ld bc, 5 palettes - ld a, $5 - call FarCopyWRAM - call ApplyPals - call WipeAttrMap - call ApplyAttrMap - ret -; 91ad - -_CGB_Diploma: ; 91ad - ld hl, DiplomaPalettes - ld de, UnknBGPals - ld bc, 16 palettes - ld a, $5 - call FarCopyWRAM - - ld hl, PalPacket_9cb6 + 1 - call CopyFourPalettes - call WipeAttrMap - call ApplyAttrMap - ret -; 91c8 - -_CGB_MapPals: ; 91c8 - call LoadMapPals - ld a, SCGB_MAPPALS - ld [SGBPredef], a - ret -; 91d1 - -_CGB_PartyMenu: ; 91d1 - ld hl, PalPacket_9c56 + 1 - call CopyFourPalettes - call InitPartyMenuBGPal0 - call InitPartyMenuBGPal7 - call InitPartyMenuOBPals - call ApplyAttrMap - ret -; 91e4 - -_CGB_Evolution: ; 91e4 - ld de, UnknBGPals - ld a, c - and a - jr z, .pokemon - ld a, $1a - call GetPredefPal - call LoadHLPaletteIntoDE - jr .got_palette - -.pokemon - ld hl, PartyMon1DVs - ld bc, PARTYMON_STRUCT_LENGTH - ld a, [CurPartyMon] - call AddNTimes - ld c, l - ld b, h - ld a, [PlayerHPPal] - call GetPlayerOrMonPalettePointer - call LoadPalette_White_Col1_Col2_Black - ld hl, Palettes_979c - ld de, UnknOBPals palette 2 - ld bc, 6 palettes - ld a, $5 - call FarCopyWRAM - -.got_palette - call WipeAttrMap - call ApplyAttrMap - call ApplyPals - ld a, $1 - ld [hCGBPalUpdate], a - ret -; 9228 - -_CGB0c: ; 9228 - ld hl, Palettes_b6f1 - ld de, UnknBGPals - ld bc, 5 palettes - ld a, $5 - call FarCopyWRAM - ld hl, Palettes_b719 - ld de, UnknOBPals - ld bc, 2 palettes - ld a, $5 - call FarCopyWRAM - ld a, SCGB_DIPLOMA - ld [SGBPredef], a - call ApplyPals - ld a, $1 - ld [hCGBPalUpdate], a - ret -; 9251 - -_CGB0d: ; 9251 - ld hl, PalPacket_9cb6 + 1 - call CopyFourPalettes - call WipeAttrMap - call ApplyAttrMap - ret -; 925e - -_CGB_UnownPuzzle: ; 925e - ld hl, PalPacket_9bc6 + 1 - call CopyFourPalettes - ld de, UnknOBPals - ld a, $4c - call GetPredefPal - call LoadHLPaletteIntoDE - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, UnknOBPals - ld a, $1f - ld [hli], a - ld a, $0 - ld [hl], a - pop af - ld [rSVBK], a - call WipeAttrMap - call ApplyAttrMap - ret -; 9289 - -_CGB_TrainerCard: ; 9289 - ld de, UnknBGPals - xor a ; CHRIS - call GetTrainerPalettePointer - call LoadPalette_White_Col1_Col2_Black - ld a, FALKNER ; KRIS - call GetTrainerPalettePointer - call LoadPalette_White_Col1_Col2_Black - ld a, BUGSY - call GetTrainerPalettePointer - call LoadPalette_White_Col1_Col2_Black - ld a, WHITNEY - call GetTrainerPalettePointer - call LoadPalette_White_Col1_Col2_Black - ld a, MORTY - call GetTrainerPalettePointer - call LoadPalette_White_Col1_Col2_Black - ld a, CHUCK - call GetTrainerPalettePointer - call LoadPalette_White_Col1_Col2_Black - ld a, JASMINE - call GetTrainerPalettePointer - call LoadPalette_White_Col1_Col2_Black - ld a, PRYCE - call GetTrainerPalettePointer - call LoadPalette_White_Col1_Col2_Black - ld a, $24 - call GetPredefPal - call LoadHLPaletteIntoDE - - ; fill screen with opposite-gender palette for the card border - hlcoord 0, 0, AttrMap - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - ld a, [PlayerGender] - and a - ld a, $1 ; kris - jr z, .got_gender - ld a, $0 ; chris -.got_gender - call ByteFill - ; fill trainer sprite area with same-gender palette - hlcoord 14, 1, AttrMap - lb bc, 7, 5 - ld a, [PlayerGender] - and a - ld a, $0 ; chris - jr z, .got_gender2 - ld a, $1 ; kris -.got_gender2 - call FillBoxCGB - ; top-right corner still uses the border's palette - hlcoord 18, 1, AttrMap - ld [hl], $1 - hlcoord 2, 11, AttrMap - lb bc, 2, 4 - ld a, $1 ; falkner - call FillBoxCGB - hlcoord 6, 11, AttrMap - lb bc, 2, 4 - ld a, $2 ; bugsy - call FillBoxCGB - hlcoord 10, 11, AttrMap - lb bc, 2, 4 - ld a, $3 ; whitney - call FillBoxCGB - hlcoord 14, 11, AttrMap - lb bc, 2, 4 - ld a, $4 ; morty - call FillBoxCGB - hlcoord 2, 14, AttrMap - lb bc, 2, 4 - ld a, $5 ; chuck - call FillBoxCGB - hlcoord 6, 14, AttrMap - lb bc, 2, 4 - ld a, $6 ; jasmine - call FillBoxCGB - hlcoord 10, 14, AttrMap - lb bc, 2, 4 - ld a, $7 ; pryce - call FillBoxCGB - ; clair uses kris's palette - ld a, [PlayerGender] - and a - push af - jr z, .got_gender3 - hlcoord 14, 14, AttrMap - lb bc, 2, 4 - ld a, $1 - call FillBoxCGB -.got_gender3 - pop af - ld c, $0 - jr nz, .got_gender4 - inc c -.got_gender4 - ld a, c - hlcoord 18, 1, AttrMap - ld [hl], a - call ApplyAttrMap - call ApplyPals - ld a, $1 - ld [hCGBPalUpdate], a - ret -; 9373 - -_CGB_MoveList: ; 9373 - ld de, UnknBGPals - ld a, $10 - call GetPredefPal - call LoadHLPaletteIntoDE - ld a, [PlayerHPPal] - ld l, a - ld h, 0 - add hl, hl - add hl, hl - ld bc, Palettes_a8be - add hl, bc - call LoadPalette_White_Col1_Col2_Black - call WipeAttrMap - hlcoord 11, 1, AttrMap - lb bc, 2, 9 - ld a, $1 - call FillBoxCGB - call ApplyAttrMap - call ApplyPals - ld a, $1 - ld [hCGBPalUpdate], a - ret -; 93a6 - -_CGB0f: ; 93a6 - ld hl, PalPacket_9c46 + 1 - call CopyFourPalettes - call WipeAttrMap - call ApplyAttrMap - call ApplyPals - ld a, $1 - ld [hCGBPalUpdate], a - ret -; 93ba - -_CGB_PokedexSearchOption: ; 93ba - ld de, UnknBGPals - ld a, $1d - call GetPredefPal - call LoadHLPaletteIntoDE - call WipeAttrMap - call ApplyAttrMap - call ApplyPals - ld a, $1 - ld [hCGBPalUpdate], a - ret -; 93d3 - -_CGB_PackPals: ; 93d3 -; pack pals - ld a, [BattleType] - cp BATTLETYPE_TUTORIAL - jr z, .tutorial_male - - ld a, [PlayerGender] - bit 0, a - jr z, .tutorial_male - - ld hl, .KrisPackPals - jr .got_gender - -.tutorial_male - ld hl, .ChrisPackPals - -.got_gender - ld de, UnknBGPals - ld bc, 8 palettes ; 6 palettes? - ld a, $5 - call FarCopyWRAM - call WipeAttrMap - hlcoord 0, 0, AttrMap - lb bc, 1, 10 - ld a, $1 - call FillBoxCGB - hlcoord 10, 0, AttrMap - lb bc, 1, 10 - ld a, $2 - call FillBoxCGB - hlcoord 7, 2, AttrMap - lb bc, 9, 1 - ld a, $3 - call FillBoxCGB - hlcoord 0, 7, AttrMap - lb bc, 3, 5 - ld a, $4 - call FillBoxCGB - hlcoord 0, 3, AttrMap - lb bc, 3, 5 - ld a, $5 - call FillBoxCGB - call ApplyAttrMap - call ApplyPals - ld a, $1 - ld [hCGBPalUpdate], a - ret -; 9439 - -.ChrisPackPals: ; 9439 - RGB 31, 31, 31 - RGB 15, 15, 31 - RGB 00, 00, 31 - RGB 00, 00, 00 - - RGB 31, 31, 31 - RGB 15, 15, 31 - RGB 00, 00, 31 - RGB 00, 00, 00 - - RGB 31, 11, 31 - RGB 15, 15, 31 - RGB 00, 00, 31 - RGB 00, 00, 00 - - RGB 31, 31, 31 - RGB 15, 15, 31 - RGB 00, 00, 31 - RGB 31, 00, 00 - - RGB 31, 31, 31 - RGB 15, 15, 31 - RGB 31, 00, 00 - RGB 00, 00, 00 - - RGB 31, 31, 31 - RGB 07, 19, 07 - RGB 07, 19, 07 - RGB 00, 00, 00 -; 9469 - -.KrisPackPals: ; 9469 - RGB 31, 31, 31 - RGB 31, 14, 31 - RGB 31, 07, 31 - RGB 00, 00, 00 - - RGB 31, 31, 31 - RGB 31, 14, 31 - RGB 31, 07, 31 - RGB 00, 00, 00 - - RGB 15, 15, 31 - RGB 31, 14, 31 - RGB 31, 07, 31 - RGB 00, 00, 00 - - RGB 31, 31, 31 - RGB 31, 14, 31 - RGB 31, 07, 31 - RGB 31, 00, 00 - - RGB 31, 31, 31 - RGB 31, 14, 31 - RGB 31, 00, 00 - RGB 00, 00, 00 - - RGB 31, 31, 31 - RGB 07, 19, 07 - RGB 07, 19, 07 - RGB 00, 00, 00 -; 9499 - -_CGB_Pokepic: ; 9499 - call _CGB_MapPals - ld de, SCREEN_WIDTH - hlcoord 0, 0, AttrMap - ld a, [wMenuBorderTopCoord] -.loop - and a - jr z, .found_top - dec a - add hl, de - jr .loop - -.found_top - ld a, [wMenuBorderLeftCoord] - ld e, a - ld d, $0 - add hl, de - ld a, [wMenuBorderTopCoord] - ld b, a - ld a, [wMenuBorderBottomCoord] - inc a - sub b - ld b, a - ld a, [wMenuBorderLeftCoord] - ld c, a - ld a, [wMenuBorderRightCoord] - sub c - inc a - ld c, a - ld a, $0 - call FillBoxCGB - call ApplyAttrMap - ret -; 94d0 - -_CGB13: ; 94d0 - ld hl, PalPacket_9ba6 + 1 - call CopyFourPalettes - call WipeAttrMap - hlcoord 0, 4, AttrMap - lb bc, 10, SCREEN_WIDTH - ld a, $2 - call FillBoxCGB - hlcoord 0, 6, AttrMap - lb bc, 6, SCREEN_WIDTH - ld a, $1 - call FillBoxCGB - call ApplyAttrMap - call ApplyPals - ld a, $1 - ld [hCGBPalUpdate], a - ret -; 94fa - -_CGB_GamefreakLogo: ; 94fa - ld de, UnknBGPals - ld a, $4e - call GetPredefPal - call LoadHLPaletteIntoDE - ld hl, .Palette - ld de, UnknOBPals - call LoadHLPaletteIntoDE - ld hl, .Palette - ld de, UnknOBPals palette 1 - call LoadHLPaletteIntoDE - call WipeAttrMap - call ApplyAttrMap - call ApplyPals - ret -; 9521 - -.Palette: ; 9521 - RGB 31, 31, 31 - RGB 13, 11, 00 - RGB 23, 12, 28 - RGB 00, 00, 00 -; 9529 - -_CGB_PlayerOrMonFrontpicPals: ; 9529 - ld de, UnknBGPals - ld a, [CurPartySpecies] - ld bc, TempMonDVs - call GetPlayerOrMonPalettePointer - call LoadPalette_White_Col1_Col2_Black - call WipeAttrMap - call ApplyAttrMap - call ApplyPals - ret -; 9542 - -_CGB1e: ; 9542 - ld de, UnknBGPals - ld a, [CurPartySpecies] - call GetMonPalettePointer_ - call LoadPalette_White_Col1_Col2_Black - call WipeAttrMap - call ApplyAttrMap - ret -; 9555 - -_CGB_TradeTube: ; 9555 - ld hl, PalPacket_9cc6 + 1 - call CopyFourPalettes - ld hl, Palettes_b681 - ld de, UnknOBPals - ld bc, 1 palettes - ld a, $5 - call FarCopyWRAM - ld de, UnknOBPals palette 7 - ld a, $1c - call GetPredefPal - call LoadHLPaletteIntoDE - call WipeAttrMap - ret -; 9578 - -_CGB_TrainerOrMonFrontpicPals: ; 9578 - ld de, UnknBGPals - ld a, [CurPartySpecies] - ld bc, TempMonDVs - call GetFrontpicPalettePointer - call LoadPalette_White_Col1_Col2_Black - call WipeAttrMap - call ApplyAttrMap - call ApplyPals - ret -; 9591 - -_CGB_MysteryGift: ; 9591 - ld hl, .Palettes - ld de, UnknBGPals - ld bc, 2 palettes - ld a, $5 - call FarCopyWRAM - call ApplyPals - call WipeAttrMap - hlcoord 3, 7, AttrMap - lb bc, 8, 14 - ld a, $1 - call FillBoxCGB - hlcoord 1, 5, AttrMap - lb bc, 1, 18 - ld a, $1 - call FillBoxCGB - hlcoord 1, 16, AttrMap - lb bc, 1, 18 - ld a, $1 - call FillBoxCGB - hlcoord 0, 0, AttrMap - lb bc, 17, 2 - ld a, $1 - call FillBoxCGB - hlcoord 18, 5, AttrMap - lb bc, 12, 1 - ld a, $1 - call FillBoxCGB - call ApplyAttrMap - ret -; 95e0 - -.Palettes: ; 95e0 - RGB 31, 31, 31 - RGB 16, 31, 14 - RGB 05, 14, 21 - RGB 05, 13, 10 - - RGB 31, 31, 31 - RGB 11, 21, 25 - RGB 05, 14, 21 - RGB 00, 03, 19 -; 95f0 diff --git a/predef/crystal.asm b/predef/crystal.asm deleted file mode 100755 index 9aa0fbdf2..000000000 --- a/predef/crystal.asm +++ /dev/null @@ -1,614 +0,0 @@ -GetMysteryGift_MobileAdapterLayout: ; 4930f (mobile) - ld a, b - cp SCGB_RAM - jr nz, .not_ram - ld a, [SGBPredef] -.not_ram - push af - callba ResetBGPals - pop af - ld l, a - ld h, 0 - add hl, hl - ld de, .dw - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld de, .done - push de - jp hl -.done - ret -; 49330 (12:5330) - -.dw ; 49330 - - dw MG_Mobile_Layout00 - dw MG_Mobile_Layout01 - dw MG_Mobile_Layout02 -; 49336 - -MG_Mobile_Layout_FillBox: ; 49336 -.row - push bc - push hl -.col - ld [hli], a - dec c - jr nz, .col - pop hl - ld bc, SCREEN_WIDTH - add hl, bc - pop bc - dec b - jr nz, .row - ret -; 49346 - -MG_Mobile_Layout_WipeAttrMap: ; 49346 (12:5346) - hlcoord 0, 0, AttrMap - ld bc, SCREEN_HEIGHT * SCREEN_WIDTH - xor a - call ByteFill - ret - -MG_Mobile_Layout_LoadPals: ; 49351 (12:5351) - ld de, UnknBGPals - ld hl, Palette_493e1 - ld bc, 5 palettes - ld a, $5 ; BANK(UnknBGPals) - call FarCopyWRAM - ld de, UnknBGPals + 7 palettes - ld hl, Palette_TextBG7 - ld bc, 1 palettes - ld a, $5 ; BANK(UnknBGPals) - call FarCopyWRAM - ret - -MG_Mobile_Layout00: ; 4936e (12:536e) - call MG_Mobile_Layout_LoadPals - call MG_Mobile_Layout_WipeAttrMap - call MG_Mobile_Layout_CreatePalBoxes - callba ApplyAttrMap - callba ApplyPals - ret - -MG_Mobile_Layout_CreatePalBoxes: ; 49384 (12:5384) - hlcoord 0, 0, AttrMap - lb bc, 4, 1 - ld a, $1 - call MG_Mobile_Layout_FillBox - lb bc, 2, 1 - ld a, $2 - call MG_Mobile_Layout_FillBox - lb bc, 6, 1 - ld a, $3 - call MG_Mobile_Layout_FillBox - hlcoord 1, 0, AttrMap - ld a, $1 - lb bc, 3, 18 - call MG_Mobile_Layout_FillBox - lb bc, 2, 18 - ld a, $2 - call MG_Mobile_Layout_FillBox - lb bc, 12, 18 - ld a, $3 - call MG_Mobile_Layout_FillBox - hlcoord 19, 0, AttrMap - lb bc, 4, 1 - ld a, $1 - call MG_Mobile_Layout_FillBox - lb bc, 2, 1 - ld a, $2 - call MG_Mobile_Layout_FillBox - lb bc, 6, 1 - ld a, $3 - call MG_Mobile_Layout_FillBox - hlcoord 0, 12, AttrMap - ld bc, 6 * SCREEN_WIDTH - ld a, $7 - call ByteFill - ret -; 493e1 (12:53e1) - -Palette_493e1: ; 493e1 - RGB 03, 07, 09 - RGB 26, 31, 00 - RGB 20, 16, 03 - RGB 31, 31, 31 - - RGB 13, 24, 29 - RGB 11, 16, 30 - RGB 07, 11, 22 - RGB 05, 06, 18 - - RGB 31, 31, 31 - RGB 20, 26, 31 - RGB 13, 24, 29 - RGB 11, 16, 30 - - RGB 31, 31, 31 - RGB 20, 26, 31 - RGB 00, 00, 00 - RGB 00, 00, 00 - - RGB 31, 31, 31 - RGB 20, 16, 08 - RGB 31, 00, 00 - RGB 00, 00, 00 -; 49409 - -LoadOW_BGPal7:: ; 49409 - ld hl, Palette_TextBG7 - ld de, UnknBGPals + 8 * 7 - ld bc, 8 - ld a, $5 - call FarCopyWRAM - ret -; 49418 - -Palette_TextBG7: ; 49418 - RGB 31, 31, 31 - RGB 08, 19, 28 - RGB 05, 05, 16 - RGB 00, 00, 00 -; 49420 - -Function49420:: ; 49420 (12:5420) - ld hl, MansionPalette4 - ld de, UnknBGPals + $30 - ld bc, $8 - ld a, $5 ; BANK(UnknBGPals) - call FarCopyWRAM - ret -; 4942f (12:542f) - -MG_Mobile_Layout01: ; 4942f - call MG_Mobile_Layout_LoadPals - ld de, UnknBGPals + $38 - ld hl, Palette_49478 - ld bc, $8 - ld a, $5 ; BANK(UnknBGPals) - call FarCopyWRAM - call MG_Mobile_Layout_WipeAttrMap - hlcoord 0, 0, AttrMap - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - xor a - call ByteFill - hlcoord 0, 14, AttrMap - ld bc, 4 * SCREEN_WIDTH - ld a, $7 - call ByteFill - ld a, [wd002] - bit 6, a - jr z, .asm_49464 - call Function49480 - jr .asm_49467 - -.asm_49464 - call Function49496 - -.asm_49467 - callba ApplyAttrMap - callba ApplyPals - ld a, $1 - ld [hCGBPalUpdate], a - ret -; 49478 - -Palette_49478: ; 49478 - RGB 31, 31, 31 - RGB 26, 31, 00 - RGB 20, 16, 03 - RGB 00, 00, 00 -; 49480 - -Function49480: ; 49480 - hlcoord 0, 0, AttrMap - lb bc, 4, SCREEN_WIDTH - ld a, $7 - call MG_Mobile_Layout_FillBox - hlcoord 0, 2, AttrMap - ld a, $4 - ld [hl], a - hlcoord 19, 2, AttrMap - ld [hl], a - ret -; 49496 - -Function49496: ; 49496 - hlcoord 0, 0, AttrMap - lb bc, 2, SCREEN_WIDTH - ld a, $7 - call MG_Mobile_Layout_FillBox - hlcoord 0, 1, AttrMap - ld a, $4 - ld [hl], a - hlcoord 19, 1, AttrMap - ld [hl], a - ret -; 494ac - -LoadSpecialMapPalette: ; 494ac - ld a, [wTileset] - cp TILESET_POKECOM_CENTER - jr z, .pokecom_2f - cp TILESET_BATTLE_TOWER - jr z, .battle_tower - cp TILESET_ICE_PATH - jr z, .ice_path - cp TILESET_HOUSE_1 - jr z, .house - cp TILESET_RADIO_TOWER - jr z, .radio_tower - cp TILESET_CELADON_MANSION - jr z, .mansion_mobile - jr .do_nothing - -.pokecom_2f - call LoadPokeComPalette - scf - ret - -.battle_tower - call LoadBattleTowerPalette - scf - ret - -.ice_path - ld a, [wPermission] ; permission - and 7 - cp 3 ; 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 -; 494f2 - -LoadPokeComPalette: ; 494f2 - ld a, $5 - ld de, UnknBGPals - ld hl, PokeComPalette - ld bc, 8 palettes - call FarCopyWRAM - ret -; 49501 - -PokeComPalette: ; 49501 -INCLUDE "tilesets/pokecom.pal" -; 49541 - -LoadBattleTowerPalette: ; 49541 - ld a, $5 - ld de, UnknBGPals - ld hl, BattleTowerPalette - ld bc, 8 palettes - call FarCopyWRAM - ret -; 49550 - -BattleTowerPalette: ; 49550 -INCLUDE "tilesets/battle_tower.pal" -; 49590 - -LoadIcePathPalette: ; 49590 - ld a, $5 - ld de, UnknBGPals - ld hl, IcePathPalette - ld bc, 8 palettes - call FarCopyWRAM - ret -; 4959f - -IcePathPalette: ; 4959f -INCLUDE "tilesets/ice_path.pal" -; 495df - -LoadHousePalette: ; 495df - ld a, $5 - ld de, UnknBGPals - ld hl, HousePalette - ld bc, 8 palettes - call FarCopyWRAM - ret -; 495ee - -HousePalette: ; 495ee -INCLUDE "tilesets/house.pal" -; 4962e - -LoadRadioTowerPalette: ; 4962e - ld a, $5 - ld de, UnknBGPals - ld hl, RadioTowerPalette - ld bc, 8 palettes - call FarCopyWRAM - ret -; 4963d - -RadioTowerPalette: ; 4963d -INCLUDE "tilesets/radio_tower.pal" -; 4967d - -MansionPalette1: ; 4967d - RGB 30, 28, 26 - RGB 19, 19, 19 - RGB 13, 13, 13 - RGB 07, 07, 07 - - RGB 30, 28, 26 - RGB 31, 19, 24 - RGB 30, 10, 06 - RGB 07, 07, 07 - - RGB 18, 24, 09 - RGB 15, 20, 01 - RGB 09, 13, 00 - RGB 07, 07, 07 - - RGB 30, 28, 26 - RGB 15, 16, 31 - RGB 09, 09, 31 - RGB 07, 07, 07 - - RGB 30, 28, 26 - RGB 31, 31, 07 - RGB 31, 16, 01 - RGB 07, 07, 07 - - RGB 26, 24, 17 - RGB 21, 17, 07 - RGB 16, 13, 03 - RGB 07, 07, 07 - -MansionPalette3: ; 496ad - RGB 30, 28, 26 - RGB 17, 19, 31 - RGB 14, 16, 31 - RGB 07, 07, 07 - - RGB 31, 31, 16 - RGB 31, 31, 16 - RGB 14, 09, 00 - RGB 00, 00, 00 -; 496bd - -MansionPalette4: ; 496bd - RGB 05, 05, 16 - RGB 08, 19, 28 - RGB 00, 00, 00 - RGB 31, 31, 31 -; 496c5 - -LoadMansionPalette: ; 496c5 - ld a, $5 - ld de, UnknBGPals - ld hl, MansionPalette1 - ld bc, 8 palettes - call FarCopyWRAM - ld a, $5 - ld de, UnknBGPals + 4 palettes - ld hl, MansionPalette2 - ld bc, 1 palettes - call FarCopyWRAM - ld a, $5 - ld de, UnknBGPals + 3 palettes - ld hl, MansionPalette3 - ld bc, 1 palettes - call FarCopyWRAM - ld a, $5 - ld de, UnknBGPals + 6 palettes - ld hl, MansionPalette4 - ld bc, 1 palettes - call FarCopyWRAM - ret -; 496fe - -MansionPalette2: ; 496fe - RGB 25, 24, 23 - RGB 20, 19, 19 - RGB 14, 16, 31 - RGB 07, 07, 07 -; 49706 - -MG_Mobile_Layout02: ; 49706 - ld hl, Palette_49732 - ld de, UnknBGPals - ld bc, 1 palettes - ld a, $5 - call FarCopyWRAM - callba ApplyPals - call MG_Mobile_Layout_WipeAttrMap - callba ApplyAttrMap - ld hl, Palette_4973a - ld de, UnknOBPals - ld bc, 1 palettes - ld a, $5 - call FarCopyWRAM - ret -; 49732 - -Palette_49732: ; 49732 - RGB 31, 31, 31 - RGB 23, 16, 07 - RGB 23, 07, 07 - RGB 03, 07, 20 -; 4973a - -Palette_4973a: ; 4973a - RGB 00, 00, 00 - RGB 07, 05, 31 - RGB 14, 18, 31 - RGB 31, 31, 31 -; 49742 - -Function49742: ; 49742 - ld hl, Palette_49757 - ld de, UnknBGPals - ld bc, $40 - ld a, $5 - call FarCopyWRAM - callba ApplyPals - ret -; 49757 - -Palette_49757: ; 49757 - RGB 31, 31, 63 - RGB 00, 00, 00 - RGB 00, 00, 00 - RGB 00, 00, 00 - - RGB 31, 31, 63 - RGB 00, 00, 00 - RGB 00, 00, 00 - RGB 00, 00, 00 - - RGB 04, 02, 15 - RGB 21, 00, 21 - RGB 31, 00, 00 - RGB 31, 31, 31 - - RGB 04, 02, 15 - RGB 21, 00, 21 - RGB 30, 16, 26 - RGB 31, 31, 31 - - RGB 04, 02, 15 - RGB 21, 00, 21 - RGB 16, 16, 16 - RGB 31, 31, 31 - - RGB 04, 02, 15 - RGB 21, 00, 21 - RGB 31, 12, 12 - RGB 31, 31, 31 - - RGB 04, 02, 15 - RGB 21, 00, 21 - RGB 07, 08, 31 - RGB 31, 31, 31 - - RGB 04, 02, 15 - RGB 21, 00, 21 - RGB 29, 28, 09 - RGB 31, 31, 31 -; 49797 - -_InitMG_Mobile_LinkTradePalMap: ; 49797 - hlcoord 0, 0, AttrMap - lb bc, 16, 2 - ld a, $4 - call MG_Mobile_Layout_FillBox - ld a, $3 - ldcoord_a 0, 1, AttrMap - ldcoord_a 0, 14, AttrMap - hlcoord 2, 0, AttrMap - lb bc, 8, 18 - ld a, $5 - call MG_Mobile_Layout_FillBox - hlcoord 2, 8, AttrMap - lb bc, 8, 18 - ld a, $6 - call MG_Mobile_Layout_FillBox - hlcoord 0, 16, AttrMap - lb bc, 2, SCREEN_WIDTH - ld a, $4 - call MG_Mobile_Layout_FillBox - ld a, $3 - lb bc, 6, 1 - hlcoord 6, 1, AttrMap - call MG_Mobile_Layout_FillBox - ld a, $3 - lb bc, 6, 1 - hlcoord 17, 1, AttrMap - call MG_Mobile_Layout_FillBox - ld a, $3 - lb bc, 6, 1 - hlcoord 6, 9, AttrMap - call MG_Mobile_Layout_FillBox - ld a, $3 - lb bc, 6, 1 - hlcoord 17, 9, AttrMap - call MG_Mobile_Layout_FillBox - ld a, $2 - hlcoord 2, 16, AttrMap - ld [hli], a - ld a, $7 - ld [hli], a - ld [hli], a - ld [hli], a - ld a, $2 - ld [hl], a - hlcoord 2, 17, AttrMap - ld a, $3 - ld bc, 6 - call ByteFill - ret -; 49811 - -LoadTradeRoomBGPals: ; 49811 - ld hl, Palette_49826 - ld de, UnknBGPals + $10 - ld bc, $30 - ld a, $5 - call FarCopyWRAM - callba ApplyPals - ret -; 49826 - -Palette_49826: ; 49826 - RGB 04, 02, 15 - RGB 07, 09, 31 - RGB 31, 00, 00 - RGB 31, 31, 31 - - RGB 04, 02, 15 - RGB 07, 09, 31 - RGB 15, 23, 30 - RGB 31, 31, 31 - - RGB 04, 02, 15 - RGB 07, 09, 31 - RGB 16, 16, 16 - RGB 31, 31, 31 - - RGB 04, 02, 15 - RGB 07, 09, 31 - RGB 25, 07, 04 - RGB 31, 31, 31 - - RGB 04, 02, 15 - RGB 07, 09, 31 - RGB 03, 22, 08 - RGB 31, 31, 31 - - RGB 04, 02, 15 - RGB 07, 09, 31 - RGB 29, 28, 09 - RGB 31, 31, 31 -; 49856 - -InitMG_Mobile_LinkTradePalMap: ; 49856 - call _InitMG_Mobile_LinkTradePalMap - ret -; 4985a diff --git a/predef/sgb.asm b/predef/sgb.asm deleted file mode 100644 index dc174e86f..000000000 --- a/predef/sgb.asm +++ /dev/null @@ -1,636 +0,0 @@ -Predef_LoadSGBLayout: ; 864c -; LoadSGBLayout - call CheckCGB - jp nz, Predef_LoadSGBLayoutCGB - - ld a, b - cp SCGB_RAM - jr nz, .not_ram - ld a, [SGBPredef] -.not_ram - cp SCGB_PARTY_MENU_HP_PALS - jp z, SGB_ApplyPartyMenuHPPals - ld l, a - ld h, 0 - add hl, hl - ld de, .Jumptable - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld de, .Finish - push de - jp hl -; 866f - -.Jumptable: ; 866f - dw .SGB_BattleGrayscale - dw .SGB_BattleColors - dw .SGB_PokegearPals - dw .SGB_StatsScreenHPPals - dw .SGB_Pokedex - dw .SGB_SlotMachine - dw .SGB06 - dw .SGB07 - dw .SGB_Diploma - dw .SGB_MapPals - dw .SGB_PartyMenu - dw .SGB_Evolution - dw .SGB0c - dw .SGB0d - dw .SGB_MoveList - dw .SGB0f - dw .SGB_PokedexSearchOption - dw .SGB11 - dw .SGB12 - dw .SGB13 - dw .SGB_PackPals - dw .SGB_TrainerCard - dw .SGB_PokedexUnownMode - dw .SGB_BillsPC - dw .SGB_UnownPuzzle - dw .SGB19 - dw .SGB_PlayerOrMonFrontpicPals - dw .SGB_TradeTube - dw .SGB_TrainerOrMonFrontpicPals - dw .SGB_MysteryGift - dw .SGB1e -; 86ad - -.SGB_BattleGrayscale: ; 86ad - ld hl, PalPacket_9c66 - ld de, BlkPacket_9aa6 - ret -; 86b4 - -.SGB_BattleColors: ; 86b4 - ld hl, BlkPacket_9aa6 - call PushSGBPals_ - - ld hl, PalPacket_9ce6 - ld de, wSGBPals - ld bc, $10 - call CopyBytes - - ld a, [PlayerHPPal] - ld l, a - ld h, 0 - add hl, hl - add hl, hl - ld de, Palettes_a8be - 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, [EnemyHPPal] - ld l, a - ld h, 0 - add hl, hl - add hl, hl - - ld de, Palettes_a8be - 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_9cf6 - ld de, wSGBPals + $10 - ld bc, $10 - call CopyBytes - - call GetBattlemonBackpicPalettePointer - - ld a, [hli] - ld [wSGBPals + $13], a - ld a, [hli] - ld [wSGBPals + $14], a - ld a, [hli] - ld [wSGBPals + $15], a - ld a, [hl] - ld [wSGBPals + $16], a - call GetEnemyFrontpicPalettePointer - ld a, [hli] - ld [wSGBPals + $19], a - ld a, [hli] - ld [wSGBPals + $1a], a - ld a, [hli] - ld [wSGBPals + $1b], a - ld a, [hl] - ld [wSGBPals + $1c], a - - ld hl, wSGBPals - ld de, wSGBPals + $10 - ld a, SCGB_BATTLE_COLORS - ld [SGBPredef], a - ret -; 873c - -.SGB_MoveList: ; 873c - ld hl, PalPacket_9bd6 - ld de, wSGBPals - ld bc, $10 - call CopyBytes - - ld hl, wSGBPals + 1 - ld [hl], $10 - inc hl - inc hl - - ld a, [PlayerHPPal] - add $2f - ld [hl], a - ld hl, wSGBPals - ld de, BlkPacket_9ad6 - ret -; 875c - -.SGB_PokegearPals: ; 875c - ld hl, PalPacket_9c76 - ld de, BlkPacket_9a86 - ret -; 8763 - -.SGB_StatsScreenHPPals: ; 8763 - ld hl, PalPacket_9ce6 - ld de, wSGBPals - ld bc, $10 - call CopyBytes - ld a, [wCurHPPal] - ld l, a - ld h, 0 - add hl, hl - add hl, hl - ld de, Palettes_a8be - 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, [CurPartySpecies] - ld bc, TempMonDVs - 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_9ac6 - ret -; 87ab - -.SGB_PartyMenu: ; 87ab - ld hl, PalPacket_9c56 - ld de, wSGBPals + 1 - ret -; 87b2 - -.SGB_Pokedex: ; 87b2 - ld hl, PalPacket_9ce6 - ld de, wSGBPals - ld bc, $10 - call CopyBytes - ld hl, wSGBPals + 3 - ld [hl], $9f - inc hl - ld [hl], $2a - inc hl - ld [hl], $5a - inc hl - ld [hl], $19 - ld a, [CurPartySpecies] - 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_9ae6 - ret -; 87e9 - -.SGB_BillsPC: ; 87e9 - ld hl, PalPacket_9ce6 - ld de, wSGBPals - ld bc, $10 - call CopyBytes - ld hl, wSGBPals + 3 - ld [hl], $9f - inc hl - ld [hl], $2a - inc hl - ld [hl], $5a - inc hl - ld [hl], $19 - ld a, [CurPartySpecies] - ld bc, TempMonDVs - 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_9ae6 - ret -; 8823 - -.SGB_PokedexUnownMode: ; 8823 - call .SGB_Pokedex - ld de, BlkPacket_9af6 - ret -; 882a - -.SGB_PokedexSearchOption: ; 882a - ld hl, PalPacket_9ce6 - ld de, wSGBPals - ld bc, $10 - call CopyBytes - ld hl, wSGBPals + 3 - ld [hl], $9f - inc hl - ld [hl], $2a - inc hl - ld [hl], $5a - inc hl - ld [hl], $19 - ld hl, wSGBPals - ld de, BlkPacket_9a86 - ret -; 884b - -.SGB_PackPals: ; 884b - ld hl, PalPacket_9c36 - ld de, BlkPacket_9a86 - ret -; 8852 - -.SGB_SlotMachine: ; 8852 - ld hl, PalPacket_9c96 - ld de, BlkPacket_9b06 - ret -; 8859 - -.SGB06: ; 8859 - ld hl, PalPacket_9ca6 - ld de, BlkPacket_9b76 - ret -; 8860 - -.SGB_Diploma: -.SGB_MysteryGift: ; 8860 - ld hl, PalPacket_9cb6 - ld de, BlkPacket_9a86 - ret -; 8867 - -.SGB07: ; 8867 - ld b, 0 - ld hl, .BlkPacketTable_SGB07 -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 -; 8878 - -.BlkPacketTable_SGB07: ; 8878 - dw BlkPacket_9a86, PalPacket_9be6 - dw BlkPacket_9a96, PalPacket_9c06 - dw BlkPacket_9a86, PalPacket_9c16 -; 8884 - -.SGB0c: ; 8884 - ld hl, PalPacket_9b96 - ld de, BlkPacket_9b56 - ld a, SCGB_DIPLOMA - ld [SGBPredef], a - ret -; 8890 - -.SGB13: ; 8890 - ld hl, PalPacket_9ba6 - ld de, BlkPacket_9b86 - ret -; 8897 - -.SGB0f: ; 8897 - ld hl, PalPacket_9c46 - ld de, BlkPacket_9a86 - ret -; 889e - -.SGB11: ; 889e - ld hl, BlkPacket_9a86 - ld de, PlayerLightScreenCount - ld bc, $10 - call CopyBytes - ld hl, PalPacket_9bb6 - ld de, BlkPacket_9a86 - ret -; 88b1 - -.SGB_MapPals: ; 88b1 - ld hl, PalPacket_9bd6 - ld de, wSGBPals - ld bc, $10 - call CopyBytes - call .GetMapPalsIndex - ld hl, wSGBPals + 1 - ld [hld], a - ld de, BlkPacket_9a86 - ld a, SCGB_MAPPALS - ld [SGBPredef], a - ret -; 88cd - -.SGB_Evolution: ; 88cd - push bc - ld hl, PalPacket_9ce6 - ld de, wSGBPals - ld bc, $10 - call CopyBytes - pop bc - ld a, c - and a - jr z, .partymon - ; Egg - ld hl, wSGBPals + 3 - ; RGB 7, 7, 7 - ld [hl], $e7 - inc hl - ld [hl], $1c - inc hl - ; RGB 2, 3, 3 - ld [hl], $62 - inc hl - ld [hl], $c - jr .done - -.partymon - ld hl, PartyMon1DVs - ld bc, PARTYMON_STRUCT_LENGTH - ld a, [CurPartyMon] - call AddNTimes - ld c, l - ld b, h - ld a, [PlayerHPPal] - 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_9a86 - ret -; 891a - -.SGB0d: -.SGB_TrainerCard: ; 891a - ld hl, PalPacket_9cb6 - ld de, BlkPacket_9a86 - ret -; 8921 - -.SGB_UnownPuzzle: ; 8921 - ld hl, PalPacket_9bc6 - ld de, BlkPacket_9a86 - ret -; 8928 - -.SGB12: ; 8928 - ld hl, PalPacket_9bd6 - ld de, wSGBPals - ld bc, $10 - call CopyBytes - ld hl, BlkPacket_9a86 - ld de, wSGBPals + $10 - ld bc, $10 - 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 + $10 - ret -; 8969 - -.SGB1e: ; 8969 - ld hl, PalPacket_9ce6 - ld de, wSGBPals - ld bc, $10 - call CopyBytes - ld a, [CurPartySpecies] - ld l, a - ld h, 0 - add hl, hl - add hl, hl - add hl, hl - ld de, PokemonPalettes - add hl, de - ld a, [wcf65] - 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_9a86 - ret -; 89a6 - -.SGB19: ; 89a6 - ld hl, PalPacket_9cd6 - ld de, BlkPacket_9a86 - ret -; 89ad - -.SGB_PlayerOrMonFrontpicPals: ; 89ad - ld hl, PalPacket_9ce6 - ld de, wSGBPals - ld bc, $10 - call CopyBytes - ld a, [CurPartySpecies] - ld bc, TempMonDVs - 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_9a86 - ret -; 89d9 - -.SGB_TradeTube: ; 89d9 - ld hl, PalPacket_9cc6 - ld de, BlkPacket_9a86 - ret -; 89e0 - -.SGB_TrainerOrMonFrontpicPals: ; 89e0 - ld hl, PalPacket_9ce6 - ld de, wSGBPals - ld bc, $10 - call CopyBytes - ld a, [CurPartySpecies] - ld bc, TempMonDVs - 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_9a86 - ret -; 8a0c - -.GetMapPalsIndex: ; 8a0c - ld a, [TimeOfDayPal] - cp NITE_F - jr c, .morn_day - ld a, $19 - ret - -.morn_day - ld a, [wPermission] - cp ROUTE - jr z, .route - cp CAVE - jr z, .cave - cp DUNGEON - jr z, .cave - cp PERM_5 - jr z, .perm5 - cp GATE - jr z, .gate - ld a, [MapGroup] - ld e, a - ld d, 0 - ld hl, .SGBRoofPalInds - add hl, de - ld a, [hl] - ret - -.route - ld a, $00 - ret - -.cave - ld a, $18 - ret - -.perm5 - ld a, $06 - ret - -.gate - ld a, $03 - ret -; 8a45 - -.SGBRoofPalInds: ; 8a45 - db $00 ; Unused - db $12 ; Olivine - db $14 ; Mahogany - db $18 ; Various Dungeons - db $11 ; Ecruteak - db $15 ; Blackthorn - db $09 ; Cinnabar - db $04 ; Cerulean - db $0f ; Azalea - db $16 ; Lake Of Rage - db $0e ; Violet - db $10 ; Goldenrod - db $06 ; Vermilion - db $01 ; Palette - db $03 ; Pewter - db $06 ; Fast Ship - db $0b ; Indigo Plateau - db $08 ; Fuchsia - db $05 ; Lavender - db $17 ; Silver Cave Outside - db $08 ; Pokemon Center 2F - db $07 ; Celadon - db $13 ; Cianwood - db $02 ; Viridian - db $0c ; New Bark - db $0a ; Saffron - db $0d ; Cherrygrove -; 8a60 - -.Finish: ; 8a60 - push de - call PushSGBPals_ - pop hl - jp PushSGBPals_ -; 8a68 diff --git a/tilesets/bg.pal b/tilesets/bg.pal deleted file mode 100644 index 3cd14d142..000000000 --- a/tilesets/bg.pal +++ /dev/null @@ -1,227 +0,0 @@ -; morn - -; gray - RGB 28, 31, 16 - RGB 21, 21, 21 - RGB 13, 13, 13 - RGB 07, 07, 07 -; red - RGB 28, 31, 16 - RGB 31, 19, 24 - RGB 30, 10, 06 - RGB 07, 07, 07 -; green - RGB 22, 31, 10 - RGB 12, 25, 01 - RGB 05, 14, 00 - RGB 07, 07, 07 -; water - RGB 31, 31, 31 - RGB 08, 12, 31 - RGB 01, 04, 31 - RGB 07, 07, 07 -; yellow - RGB 28, 31, 16 - RGB 31, 31, 07 - RGB 31, 16, 01 - RGB 07, 07, 07 -; brown - RGB 28, 31, 16 - RGB 24, 18, 07 - RGB 20, 15, 03 - RGB 07, 07, 07 -; roof - RGB 28, 31, 16 - RGB 15, 31, 31 - RGB 05, 17, 31 - RGB 07, 07, 07 -; text - RGB 31, 31, 16 - RGB 31, 31, 16 - RGB 14, 09, 00 - RGB 00, 00, 00 - -; day - -; gray - RGB 27, 31, 27 - RGB 21, 21, 21 - RGB 13, 13, 13 - RGB 07, 07, 07 -; red - RGB 27, 31, 27 - RGB 31, 19, 24 - RGB 30, 10, 06 - RGB 07, 07, 07 -; green - RGB 22, 31, 10 - RGB 12, 25, 01 - RGB 05, 14, 00 - RGB 07, 07, 07 -; water - RGB 31, 31, 31 - RGB 08, 12, 31 - RGB 01, 04, 31 - RGB 07, 07, 07 -; yellow - RGB 27, 31, 27 - RGB 31, 31, 07 - RGB 31, 16, 01 - RGB 07, 07, 07 -; brown - RGB 27, 31, 27 - RGB 24, 18, 07 - RGB 20, 15, 03 - RGB 07, 07, 07 -; roof - RGB 27, 31, 27 - RGB 15, 31, 31 - RGB 05, 17, 31 - RGB 07, 07, 07 -; text - RGB 31, 31, 16 - RGB 31, 31, 16 - RGB 14, 09, 00 - RGB 00, 00, 00 - -; nite - -; gray - RGB 15, 14, 24 - RGB 11, 11, 19 - RGB 07, 07, 12 - RGB 00, 00, 00 -; red - RGB 15, 14, 24 - RGB 14, 07, 17 - RGB 13, 00, 08 - RGB 00, 00, 00 -; green - RGB 15, 14, 24 - RGB 08, 13, 19 - RGB 00, 11, 13 - RGB 00, 00, 00 -; water - RGB 15, 14, 24 - RGB 05, 05, 17 - RGB 03, 03, 10 - RGB 00, 00, 00 -; yellow - RGB 30, 30, 11 - RGB 16, 14, 18 - RGB 16, 14, 10 - RGB 00, 00, 00 -; brown - RGB 15, 14, 24 - RGB 12, 09, 15 - RGB 08, 04, 05 - RGB 00, 00, 00 -; roof - RGB 15, 14, 24 - RGB 13, 12, 23 - RGB 11, 09, 20 - RGB 00, 00, 00 -; text - RGB 31, 31, 16 - RGB 31, 31, 16 - RGB 14, 09, 00 - RGB 00, 00, 00 - -; dark - -; gray - RGB 01, 01, 02 - RGB 00, 00, 00 - RGB 00, 00, 00 - RGB 00, 00, 00 -; red - RGB 01, 01, 02 - RGB 00, 00, 00 - RGB 00, 00, 00 - RGB 00, 00, 00 -; green - RGB 01, 01, 02 - RGB 00, 00, 00 - RGB 00, 00, 00 - RGB 00, 00, 00 -; water - RGB 01, 01, 02 - RGB 00, 00, 00 - RGB 00, 00, 00 - RGB 00, 00, 00 -; yellow - RGB 30, 30, 11 - RGB 00, 00, 00 - RGB 00, 00, 00 - RGB 00, 00, 00 -; brown - RGB 01, 01, 02 - RGB 00, 00, 00 - RGB 00, 00, 00 - RGB 00, 00, 00 -; roof - RGB 01, 01, 02 - RGB 00, 00, 00 - RGB 00, 00, 00 - RGB 00, 00, 00 -; text - RGB 31, 31, 16 - RGB 31, 31, 16 - RGB 14, 09, 00 - RGB 00, 00, 00 - -; indoor - -; gray - RGB 30, 28, 26 - RGB 19, 19, 19 - RGB 13, 13, 13 - RGB 07, 07, 07 -; red - RGB 30, 28, 26 - RGB 31, 19, 24 - RGB 30, 10, 06 - RGB 07, 07, 07 -; green - RGB 18, 24, 09 - RGB 15, 20, 01 - RGB 09, 13, 00 - RGB 07, 07, 07 -; water - RGB 30, 28, 26 - RGB 15, 16, 31 - RGB 09, 09, 31 - RGB 07, 07, 07 -; yellow - RGB 30, 28, 26 - RGB 31, 31, 07 - RGB 31, 16, 01 - RGB 07, 07, 07 -; brown - RGB 26, 24, 17 - RGB 21, 17, 07 - RGB 16, 13, 03 - RGB 07, 07, 07 -; roof - RGB 30, 28, 26 - RGB 17, 19, 31 - RGB 14, 16, 31 - RGB 07, 07, 07 -; text - RGB 31, 31, 16 - RGB 31, 31, 16 - RGB 14, 09, 00 - RGB 00, 00, 00 - -; overworld water - -; morn/day - RGB 23, 23, 31 - RGB 18, 19, 31 - RGB 13, 12, 31 - RGB 07, 07, 07 -; nite - RGB 15, 13, 27 - RGB 10, 09, 20 - RGB 04, 03, 18 - RGB 00, 00, 00 diff --git a/tilesets/house.pal b/tilesets/house.pal deleted file mode 100644 index a9f8b74b6..000000000 --- a/tilesets/house.pal +++ /dev/null @@ -1,40 +0,0 @@ -; gray - RGB 30, 28, 26 - RGB 19, 19, 19 - RGB 13, 13, 13 - RGB 07, 07, 07 -; red - RGB 30, 28, 26 - RGB 31, 19, 24 - RGB 30, 10, 06 - RGB 07, 07, 07 -; green - RGB 30, 28, 26 - RGB 15, 20, 01 - RGB 09, 13, 00 - RGB 07, 07, 07 -; water (blue) - RGB 30, 28, 26 - RGB 15, 16, 31 - RGB 09, 09, 31 - RGB 07, 07, 07 -; yellow - RGB 30, 28, 26 - RGB 31, 31, 07 - RGB 31, 16, 01 - RGB 07, 07, 07 -; brown - RGB 26, 24, 17 - RGB 21, 17, 07 - RGB 16, 13, 03 - RGB 07, 07, 07 -; roof (glass) - RGB 30, 28, 26 - RGB 31, 19, 24 - RGB 16, 13, 03 - RGB 07, 07, 07 -; text - RGB 31, 31, 16 - RGB 31, 31, 16 - RGB 14, 09, 00 - RGB 00, 00, 00 diff --git a/tilesets/house_1.pal b/tilesets/house_1.pal new file mode 100644 index 000000000..a9f8b74b6 --- /dev/null +++ b/tilesets/house_1.pal @@ -0,0 +1,40 @@ +; gray + RGB 30, 28, 26 + RGB 19, 19, 19 + RGB 13, 13, 13 + RGB 07, 07, 07 +; red + RGB 30, 28, 26 + RGB 31, 19, 24 + RGB 30, 10, 06 + RGB 07, 07, 07 +; green + RGB 30, 28, 26 + RGB 15, 20, 01 + RGB 09, 13, 00 + RGB 07, 07, 07 +; water (blue) + RGB 30, 28, 26 + RGB 15, 16, 31 + RGB 09, 09, 31 + RGB 07, 07, 07 +; yellow + RGB 30, 28, 26 + RGB 31, 31, 07 + RGB 31, 16, 01 + RGB 07, 07, 07 +; brown + RGB 26, 24, 17 + RGB 21, 17, 07 + RGB 16, 13, 03 + RGB 07, 07, 07 +; roof (glass) + RGB 30, 28, 26 + RGB 31, 19, 24 + RGB 16, 13, 03 + RGB 07, 07, 07 +; text + RGB 31, 31, 16 + RGB 31, 31, 16 + RGB 14, 09, 00 + RGB 00, 00, 00 diff --git a/tilesets/ob.pal b/tilesets/ob.pal deleted file mode 100644 index a6e20d7f0..000000000 --- a/tilesets/ob.pal +++ /dev/null @@ -1,39 +0,0 @@ - ; morn - RGB 28,31,16, 31,19,10, 31,07,01, 00,00,00 ; red - RGB 28,31,16, 31,19,10, 10,09,31, 00,00,00 ; blue - RGB 28,31,16, 31,19,10, 07,23,03, 00,00,00 ; green - RGB 28,31,16, 31,19,10, 15,10,03, 00,00,00 ; brown - RGB 28,31,16, 31,19,10, 30,10,06, 00,00,00 ; pink - RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver - RGB 22,31,10, 12,25,01, 05,14,00, 07,07,07 ; tree - RGB 28,31,16, 24,18,07, 20,15,03, 07,07,07 ; rock - - ; day - RGB 27,31,27, 31,19,10, 31,07,01, 00,00,00 ; red - RGB 27,31,27, 31,19,10, 10,09,31, 00,00,00 ; blue - RGB 27,31,27, 31,19,10, 07,23,03, 00,00,00 ; green - RGB 27,31,27, 31,19,10, 15,10,03, 00,00,00 ; brown - RGB 27,31,27, 31,19,10, 30,10,06, 00,00,00 ; pink - RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver - RGB 22,31,10, 12,25,01, 05,14,00, 07,07,07 ; tree - RGB 27,31,27, 24,18,07, 20,15,03, 07,07,07 ; rock - - ; nite - RGB 15,14,24, 31,19,10, 31,07,01, 00,00,00 ; red - RGB 15,14,24, 31,19,10, 10,09,31, 00,00,00 ; blue - RGB 15,14,24, 31,19,10, 07,23,03, 00,00,00 ; green - RGB 15,14,24, 31,19,10, 15,10,03, 00,00,00 ; brown - RGB 15,14,24, 31,19,10, 30,10,06, 00,00,00 ; pink - RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver - RGB 15,14,24, 08,13,19, 00,11,13, 00,00,00 ; tree - RGB 15,14,24, 12,09,15, 08,04,05, 00,00,00 ; rock - - ; dark - RGB 01,01,02, 31,19,10, 31,07,01, 00,00,00 ; red - RGB 01,01,02, 31,19,10, 10,09,31, 00,00,00 ; blue - RGB 01,01,02, 31,19,10, 07,23,03, 00,00,00 ; green - RGB 01,01,02, 31,19,10, 15,10,03, 00,00,00 ; brown - RGB 01,01,02, 31,19,10, 30,10,06, 00,00,00 ; pink - RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver - RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; tree - RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; rock diff --git a/tilesets/pokecom.pal b/tilesets/pokecom.pal deleted file mode 100644 index 9fe7b765a..000000000 --- a/tilesets/pokecom.pal +++ /dev/null @@ -1,40 +0,0 @@ -; gray - RGB 30, 28, 26 - RGB 19, 19, 19 - RGB 13, 13, 13 - RGB 07, 07, 07 -; red - RGB 30, 28, 26 - RGB 31, 19, 24 - RGB 30, 10, 06 - RGB 07, 07, 07 -; green - RGB 18, 24, 09 - RGB 15, 20, 01 - RGB 09, 13, 00 - RGB 07, 07, 07 -; water (blue) - RGB 30, 28, 26 - RGB 17, 19, 31 - RGB 14, 16, 31 - RGB 07, 07, 07 -; yellow - RGB 31, 26, 21 - RGB 31, 20, 01 - RGB 14, 16, 31 - RGB 07, 07, 07 -; brown - RGB 21, 17, 07 - RGB 17, 19, 31 - RGB 16, 13, 03 - RGB 07, 07, 07 -; roof - RGB 05, 05, 16 - RGB 08, 19, 28 - RGB 00, 00, 00 - RGB 31, 31, 31 -; text - RGB 31, 31, 16 - RGB 31, 31, 16 - RGB 14, 09, 00 - RGB 00, 00, 00 diff --git a/tilesets/pokecom_center.pal b/tilesets/pokecom_center.pal new file mode 100644 index 000000000..9fe7b765a --- /dev/null +++ b/tilesets/pokecom_center.pal @@ -0,0 +1,40 @@ +; gray + RGB 30, 28, 26 + RGB 19, 19, 19 + RGB 13, 13, 13 + RGB 07, 07, 07 +; red + RGB 30, 28, 26 + RGB 31, 19, 24 + RGB 30, 10, 06 + RGB 07, 07, 07 +; green + RGB 18, 24, 09 + RGB 15, 20, 01 + RGB 09, 13, 00 + RGB 07, 07, 07 +; water (blue) + RGB 30, 28, 26 + RGB 17, 19, 31 + RGB 14, 16, 31 + RGB 07, 07, 07 +; yellow + RGB 31, 26, 21 + RGB 31, 20, 01 + RGB 14, 16, 31 + RGB 07, 07, 07 +; brown + RGB 21, 17, 07 + RGB 17, 19, 31 + RGB 16, 13, 03 + RGB 07, 07, 07 +; roof + RGB 05, 05, 16 + RGB 08, 19, 28 + RGB 00, 00, 00 + RGB 31, 31, 31 +; text + RGB 31, 31, 16 + RGB 31, 31, 16 + RGB 14, 09, 00 + RGB 00, 00, 00 diff --git a/tilesets/roof.pal b/tilesets/roof.pal deleted file mode 100644 index ba65fc7d2..000000000 --- a/tilesets/roof.pal +++ /dev/null @@ -1,161 +0,0 @@ -; group 0 (unused) - RGB 21, 21, 21 - RGB 11, 11, 11 - RGB 21, 21, 21 - RGB 11, 11, 11 - -; group 1 (Olivine) - RGB 14, 17, 31 - RGB 07, 11, 15 - RGB 09, 09, 17 - RGB 05, 07, 13 - -; group 2 (Mahogany) - RGB 12, 19, 00 - RGB 06, 10, 00 - RGB 06, 09, 07 - RGB 04, 05, 06 - -; group 3 - RGB 21, 21, 21 - RGB 11, 11, 11 - RGB 21, 21, 21 - RGB 17, 08, 07 - -; group 4 (Ecruteak) - RGB 31, 19, 00 - RGB 27, 10, 05 - RGB 15, 07, 02 - RGB 11, 04, 02 - -; group 5 (Blackthorn) - RGB 11, 10, 16 - RGB 05, 06, 07 - RGB 03, 04, 08 - RGB 00, 00, 00 - -; group 6 (Cinnabar) - RGB 31, 10, 00 - RGB 18, 06, 00 - RGB 18, 05, 09 - RGB 17, 08, 07 - -; group 7 (Cerulean) - RGB 17, 27, 31 - RGB 05, 15, 31 - RGB 07, 08, 22 - RGB 07, 07, 16 - -; group 8 (Azalea) - RGB 22, 20, 10 - RGB 17, 14, 03 - RGB 11, 11, 05 - RGB 10, 09, 07 - -; group 9 (Lake of Rage) - RGB 31, 08, 04 - RGB 09, 09, 08 - RGB 18, 05, 09 - RGB 09, 09, 08 - -; group 10 (Violet) - RGB 24, 14, 31 - RGB 13, 07, 21 - RGB 12, 03, 18 - RGB 09, 03, 15 - -; group 11 (Goldenrod) - RGB 25, 25, 00 - RGB 20, 17, 08 - RGB 12, 12, 00 - RGB 10, 09, 05 - -; group 12 (Vermilion) - RGB 27, 23, 01 - RGB 23, 11, 00 - RGB 15, 11, 01 - RGB 11, 10, 01 - -; group 13 (Pallet) - RGB 27, 28, 31 - RGB 17, 19, 22 - RGB 14, 14, 18 - RGB 10, 09, 13 - -; group 14 (Pewter) - RGB 19, 19, 16 - RGB 10, 12, 15 - RGB 09, 09, 11 - RGB 04, 05, 07 - -; group 15 (Mount Moon Square) - RGB 14, 17, 31 - RGB 07, 11, 15 - RGB 09, 13, 19 - RGB 07, 07, 16 - -; group 16 (Route 23) - RGB 21, 21, 21 - RGB 13, 13, 13 - RGB 11, 11, 19 - RGB 07, 07, 12 - -; group 17 (Fuchsia) - RGB 31, 18, 29 - RGB 17, 13, 20 - RGB 14, 06, 12 - RGB 11, 03, 10 - -; group 18 (Lavender) - RGB 23, 15, 31 - RGB 16, 05, 31 - RGB 12, 07, 17 - RGB 08, 06, 10 - -; group 19 (Route 28) - RGB 21, 21, 25 - RGB 16, 16, 16 - RGB 13, 13, 13 - RGB 07, 07, 07 - -; group 20 - RGB 21, 21, 21 - RGB 11, 11, 11 - RGB 21, 21, 21 - RGB 11, 11, 11 - -; group 21 (Celadon) - RGB 19, 31, 15 - RGB 31, 22, 02 - RGB 12, 13, 09 - RGB 09, 12, 03 - -; group 22 (Cianwood) - RGB 15, 10, 31 - RGB 07, 05, 15 - RGB 06, 05, 17 - RGB 02, 02, 08 - -; group 23 (Viridian) - RGB 21, 31, 07 - RGB 13, 25, 04 - RGB 09, 14, 08 - RGB 06, 10, 04 - -; group 24 (New Bark) - RGB 20, 31, 14 - RGB 11, 23, 05 - RGB 09, 13, 08 - RGB 06, 09, 04 - -; group 25 (Saffron) - RGB 31, 26, 00 - RGB 31, 15, 00 - RGB 13, 13, 01 - RGB 08, 08, 01 - -; group 26 (Cherrygrove) - RGB 31, 14, 28 - RGB 31, 05, 21 - RGB 14, 07, 17 - RGB 13, 00, 08 -- cgit v1.2.3