From e0b4fc781aba3c9ac184e0ab91dfcf5d11c585c5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 13 Nov 2015 00:49:27 -0500 Subject: sprite engine; tileset constants --- engine/color.asm | 8 +- engine/engine_flags.asm | 26 +- engine/events.asm | 2 +- engine/events_2.asm | 4 +- engine/flypoints.asm | 2 +- engine/map_objects.asm | 6 +- engine/overworld.asm | 1480 +++++++++++++++++ engine/pokedex.asm | 8 +- engine/sprites.asm | 4052 +++++++++++++++++++++++++++++++---------------- 9 files changed, 4237 insertions(+), 1351 deletions(-) create mode 100755 engine/overworld.asm (limited to 'engine') diff --git a/engine/color.asm b/engine/color.asm index 8530c2181..d24fdf2df 100644 --- a/engine/color.asm +++ b/engine/color.asm @@ -318,7 +318,7 @@ Function8bec: ; 8bec lb bc, 6, 4 ld a, [EnemySafeguardCount] and $3 - call Function9663 + call FillBoxCGB call LoadDETile ret ; 8c1d @@ -394,7 +394,7 @@ endr .asm_8c82 lb bc, 2, 8 ld a, e - call Function9663 + call FillBoxCGB ret ; 8c8a @@ -618,7 +618,7 @@ Function9643: ; 9643 ret ; 9663 -Function9663: ; 9663 +FillBoxCGB: ; 9663 .row push bc push hl @@ -752,7 +752,7 @@ Function96f3: ; 96f3 .asm_9712 lb bc, 2, 8 ld a, e - call Function9663 + call FillBoxCGB ret ; 971a diff --git a/engine/engine_flags.asm b/engine/engine_flags.asm index 5baa52cc4..49a7d82e1 100644 --- a/engine/engine_flags.asm +++ b/engine/engine_flags.asm @@ -22,7 +22,7 @@ ENDM engine_flag wMomSavingMoney, 0 ; mom saving money ; $8 engine_flag wMomSavingMoney, 7 ; dst - engine_flag wdc39, 0 + engine_flag wdc39, 0 ; unused, possibly related to a 2-day timer engine_flag StatusFlags, 0 ; pokedex engine_flag StatusFlags, 1 ; unown dex @@ -31,7 +31,7 @@ ENDM engine_flag StatusFlags, 6 ; credits skip engine_flag StatusFlags, 7 ; bug contest on ; $10 engine_flag StatusFlags2, 2 ; bug contest timer - engine_flag StatusFlags2, 1 + engine_flag StatusFlags2, 1 ; ??? engine_flag StatusFlags2, 0 ; rockets in radio tower engine_flag StatusFlags2, 4 ; bike shop call enabled (1024 bike steps reqd) engine_flag StatusFlags2, 5 ; give pokerus @@ -71,14 +71,14 @@ ENDM engine_flag UnlockedUnowns, 7 ; 8 ; fly - engine_flag VisitedSpawns, 0 ; your house - engine_flag VisitedSpawns, 1 ; viridian pokecenter - engine_flag VisitedSpawns, 2 ; pallet - engine_flag VisitedSpawns, 3 ; viridian - engine_flag VisitedSpawns, 4 ; pewter - engine_flag VisitedSpawns, 5 ; cerulean ; $38 - engine_flag VisitedSpawns, 6 ; rock tunnel - engine_flag VisitedSpawns, 7 ; vermilion + engine_flag VisitedSpawns, 0 ; your house + engine_flag VisitedSpawns, 1 ; viridian pokecenter + engine_flag VisitedSpawns, 2 ; pallet + engine_flag VisitedSpawns, 3 ; viridian + engine_flag VisitedSpawns, 4 ; pewter + engine_flag VisitedSpawns, 5 ; cerulean ; $38 + engine_flag VisitedSpawns, 6 ; rock tunnel + engine_flag VisitedSpawns, 7 ; vermilion engine_flag VisitedSpawns + 1, 0 ; lavender engine_flag VisitedSpawns + 1, 1 ; saffron engine_flag VisitedSpawns + 1, 2 ; celadon @@ -88,6 +88,7 @@ ENDM engine_flag VisitedSpawns + 1, 6 ; new bark engine_flag VisitedSpawns + 1, 7 ; cherrygrove engine_flag VisitedSpawns + 2, 0 ; violet + ; union cave engine_flag VisitedSpawns + 2, 2 ; azalea engine_flag VisitedSpawns + 2, 3 ; cianwood engine_flag VisitedSpawns + 2, 4 ; goldenrod @@ -97,6 +98,7 @@ ENDM engine_flag VisitedSpawns + 3, 0 ; lake of rage engine_flag VisitedSpawns + 3, 1 ; blackthorn engine_flag VisitedSpawns + 3, 2 ; silver cave + ; fast ship engine_flag VisitedSpawns + 3, 4 ; unused engine_flag wLuckyNumberShowFlag, 0 ; lucky number show @@ -157,7 +159,7 @@ ENDM engine_flag wDailyPhoneItemFlags, 0 ; beverly has nugget engine_flag wDailyPhoneItemFlags, 1 ; jose has star piece - engine_flag wDailyPhoneItemFlags, 2 ; wade has item (see bittable1 $032b-e) + engine_flag wDailyPhoneItemFlags, 2 ; wade has item (see EVENT_WADE_HAS_*** in constants/event_flags.asm) engine_flag wDailyPhoneItemFlags, 3 ; gina has leaf stone ; $80 engine_flag wDailyPhoneItemFlags, 4 ; alan has fire stone engine_flag wDailyPhoneItemFlags, 5 ; liz has thunderstone @@ -165,7 +167,7 @@ ENDM engine_flag wDailyPhoneItemFlags, 7 ; tully has water stone engine_flag wDailyPhoneItemFlags + 1, 0 ; tiffany has pink bow - engine_flag wDailyPhoneItemFlags + 1, 1 ; wilton has item (see bittable1 $032f-31) + engine_flag wDailyPhoneItemFlags + 1, 1 ; wilton has item (see EVENT_WILTON_HAS_*** in constants/event_flags.asm) engine_flag wDailyPhoneTimeOfDayFlags, 0 engine_flag wDailyPhoneTimeOfDayFlags, 1 ; $88 diff --git a/engine/events.asm b/engine/events.asm index bd26afffd..d41e3495a 100644 --- a/engine/events.asm +++ b/engine/events.asm @@ -511,7 +511,7 @@ CheckTimeEvents: ; 9693a jr nz, .nothing ld hl, StatusFlags2 - bit 2, [hl] + bit 2, [hl] ; bug contest jr z, .do_daily callba CheckBugContestTimer diff --git a/engine/events_2.asm b/engine/events_2.asm index 9dd604a47..f88a31c2a 100644 --- a/engine/events_2.asm +++ b/engine/events_2.asm @@ -3,8 +3,8 @@ WarpToSpawnPoint:: ; 97c28 ld hl, StatusFlags2 - res 1, [hl] - res 2, [hl] + res 1, [hl] ; ?? + res 2, [hl] ; bug contest ret ; 97c30 diff --git a/engine/flypoints.asm b/engine/flypoints.asm index 7f6d384aa..0eb49d70e 100755 --- a/engine/flypoints.asm +++ b/engine/flypoints.asm @@ -496,7 +496,7 @@ Function91d9b: ; 91d9b .asm_91db7 ld a, [StatusFlags] - bit 6, a + bit 6, a ; hall of fame ret z ld a, [hWY] and a diff --git a/engine/map_objects.asm b/engine/map_objects.asm index 4c2adc9aa..d174c76d9 100644 --- a/engine/map_objects.asm +++ b/engine/map_objects.asm @@ -717,7 +717,7 @@ Function46a6: ; 46a6 ld e, a push bc - call Function2a3c + call GetCoordTile pop bc ld hl, OBJECT_STANDING_TILE @@ -922,7 +922,7 @@ Function47bc: ; 47bc add hl, bc ld e, [hl] push bc - call Function2a3c + call GetCoordTile pop bc ld hl, OBJECT_STANDING_TILE add hl, bc @@ -2874,7 +2874,7 @@ Function5688: ; 5688 ld hl, OBJECT_MAP_Y add hl, bc ld e, [hl] - call Function2a3c + call GetCoordTile pop bc ld hl, OBJECT_STANDING_TILE add hl, bc diff --git a/engine/overworld.asm b/engine/overworld.asm new file mode 100755 index 000000000..517428007 --- /dev/null +++ b/engine/overworld.asm @@ -0,0 +1,1480 @@ +GetEmote2bpp: ; 1412a + ld a, $1 + ld [rVBK], a + call Get2bpp + xor a + ld [rVBK], a + ret +; 14135 + +_ReplaceKrisSprite:: ; 14135 + call GetPlayerSprite + ld a, [UsedSprites] + ld [hUsedSpriteIndex], a + ld a, [UsedSprites + 1] + ld [hUsedSpriteTile], a + call Function143c8 + ret +; 14146 + +Function14146: ; 14146 + ld hl, wSpriteFlags + ld a, [hl] + push af + res 7, [hl] + set 6, [hl] + call RunCallback_04 + pop af + ld [wSpriteFlags], a + ret +; 14157 + +Function14157: ; 14157 + ld hl, wSpriteFlags + ld a, [hl] + push af + set 7, [hl] + res 6, [hl] + call RunCallback_04 + pop af + ld [wSpriteFlags], a + ret +; 14168 + +RefreshSprites:: ; 14168 + call .Refresh + call RunCallback_04 + ret +; 1416f + +.Refresh: ; 1416f + xor a + ld bc, UsedSpritesEnd - UsedSprites + ld hl, UsedSprites + call ByteFill + call GetPlayerSprite + call AddMapSprites + call LoadAndSortSprites + ret +; 14183 + +GetPlayerSprite: ; 14183 +; Get Chris or Kris's sprite. + ld hl, .Chris + ld a, [wPlayerSpriteSetupFlags] + bit 2, a + jr nz, .go + ld a, [PlayerGender] + bit 0, a + jr z, .go + ld hl, .Kris + +.go + ld a, [PlayerState] + ld c, a +.loop + ld a, [hli] + cp c + jr z, .good + inc hl + cp $ff + jr nz, .loop + +; Any player state not in the array defaults to Chris's sprite. + xor a ; ld a, PLAYER_NORMAL + ld [PlayerState], a + ld a, SPRITE_CHRIS + jr .finish + +.good + ld a, [hl] + +.finish + ld [UsedSprites + 0], a + ld [PlayerSprite], a + ld [PlayerObjectSprite], a + ret + +.Chris + db PLAYER_NORMAL, SPRITE_CHRIS + db PLAYER_BIKE, SPRITE_CHRIS_BIKE + db PLAYER_SURF, SPRITE_SURF + db PLAYER_SURF_PIKA, SPRITE_SURFING_PIKACHU + db $ff + +.Kris + db PLAYER_NORMAL, SPRITE_KRIS + db PLAYER_BIKE, SPRITE_KRIS_BIKE + db PLAYER_SURF, SPRITE_SURF + db PLAYER_SURF_PIKA, SPRITE_SURFING_PIKACHU + db $ff +; 141c9 + + +AddMapSprites: ; 141c9 + call GetMapPermission + call CheckOutdoorMap + jr z, .outdoor + call AddIndoorSprites + ret + +.outdoor + call AddOutdoorSprites + ret +; 141d9 + + +AddIndoorSprites: ; 141d9 + ld hl, Map1ObjectSprite + ld a, 1 +.loop + push af + ld a, [hl] + call AddSpriteGFX + ld de, OBJECT_LENGTH + add hl, de + pop af + inc a + cp NUM_OBJECTS + jr nz, .loop + ret +; 141ee + + +AddOutdoorSprites: ; 141ee + ld a, [MapGroup] + dec a + ld c, a + ld b, 0 + ld hl, OutdoorSprites +rept 2 + add hl, bc +endr + ld a, [hli] + ld h, [hl] + ld l, a + ld c, MAX_OUTDOOR_SPRITES +.loop + push bc + ld a, [hli] + call AddSpriteGFX + pop bc + dec c + jr nz, .loop + ret +; 14209 + + +RunCallback_04: ; 14209 + ld a, $4 + call RunMapCallback + call Function1439b + call Function14215 + ret +; 14215 + +Function14215: ; 14215 + ld a, [wSpriteFlags] + bit 6, a + ret nz + ld c, EMOTE_08 + callba LoadEmote + call GetMapPermission + call CheckOutdoorMap + ld c, EMOTE_0B + jr z, .outdoor + ld c, EMOTE_0A + +.outdoor + callba LoadEmote + ret +; 14236 + + + +SafeGetSprite: ; 14236 + push hl + call GetSprite + pop hl + ret +; 1423c + +GetSprite: ; 1423c + call GetMonSprite + ret c + + ld hl, SpriteHeaders ; address + dec a + ld c, a + ld b, 0 + ld a, 6 + call AddNTimes + ; load the address into de + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ; load the length into c + ld a, [hli] + swap a + ld c, a + ; load the sprite bank into both b and h + ld b, [hl] + ld a, [hli] + ; load the sprite type into l + ld l, [hl] + ld h, a + ret +; 14259 + + +GetMonSprite: ; 14259 +; Return carry if a monster sprite was loaded. + + cp SPRITE_POKEMON + jr c, .Normal + cp SPRITE_DAYCARE_MON_1 + jr z, .wBreedMon1 + cp SPRITE_DAYCARE_MON_2 + jr z, .wBreedMon2 + cp SPRITE_VARS + jr nc, .Variable + jr .Icon + +.Normal + and a + ret + +.Icon + sub SPRITE_POKEMON + ld e, a + ld d, 0 + ld hl, SpriteMons + add hl, de + ld a, [hl] + jr .Mon + +.wBreedMon1 + ld a, [wBreedMon1Species] + jr .Mon + +.wBreedMon2 + ld a, [wBreedMon2Species] + +.Mon + ld e, a + and a + jr z, .NoBreedmon + + callba Function8e82b + + ld l, 1 + ld h, 0 + scf + ret + +.Variable + sub SPRITE_VARS + ld e, a + ld d, 0 + ld hl, VariableSprites + add hl, de + ld a, [hl] + and a + jp nz, GetMonSprite + +.NoBreedmon + ld a, 1 + ld l, 1 + ld h, 0 + and a + ret +; 142a7 + + +_DoesSpriteHaveFacings:: ; 142a7 +; Checks to see whether we can apply a facing to a sprite. +; Returns carry unless the sprite is a Pokemon or a Still Sprite. + cp SPRITE_POKEMON + jr nc, .only_down + + push hl + push bc + ld hl, SpriteHeaders + SPRITEHEADER_TYPE ; type + dec a + ld c, a + ld b, 0 + ld a, NUM_SPRITEHEADER_FIELDS + call AddNTimes + ld a, [hl] + pop bc + pop hl + cp STILL_SPRITE + jr nz, .only_down + scf + ret + +.only_down + and a + ret +; 142c4 + + +_GetSpritePalette:: ; 142c4 + ld a, c + call GetMonSprite + jr c, .is_pokemon + + ld hl, SpriteHeaders + 5 ; palette + dec a + ld c, a + ld b, 0 + ld a, 6 + call AddNTimes + ld c, [hl] + ret + +.is_pokemon + xor a + ld c, a + ret +; 142db + + +LoadAndSortSprites: ; 142db + call LoadSpriteGFX + call SortUsedSprites + call ArrangeUsedSprites + ret +; 142e5 + + +AddSpriteGFX: ; 142e5 +; Add any new sprite ids to a list of graphics to be loaded. +; Return carry if the list is full. + + push hl + push bc + ld b, a + ld hl, UsedSprites + 2 + ld c, SPRITE_GFX_LIST_CAPACITY - 1 +.loop + ld a, [hl] + cp b + jr z, .exists + and a + jr z, .new +rept 2 + inc hl +endr + dec c + jr nz, .loop + + pop bc + pop hl + scf + ret + +.exists + pop bc + pop hl + and a + ret + +.new + ld [hl], b + pop bc + pop hl + and a + ret +; 14306 + + +LoadSpriteGFX: ; 14306 +; Bug: b is not preserved, so +; it's useless as a next count. + + ld hl, UsedSprites + ld b, SPRITE_GFX_LIST_CAPACITY +.loop + ld a, [hli] + and a + jr z, .done + push hl + call .LoadSprite + pop hl + ld [hli], a + dec b + jr nz, .loop + +.done + ret + +.LoadSprite + call GetSprite + ld a, l + ret +; 1431e + + +SortUsedSprites: ; 1431e +; Bubble-sort sprites by type. + +; Run backwards through UsedSprites to find the last one. + + ld c, SPRITE_GFX_LIST_CAPACITY + ld de, UsedSprites + (SPRITE_GFX_LIST_CAPACITY - 1) * 2 +.FindLastSprite + ld a, [de] + and a + jr nz, .FoundLastSprite +rept 2 + dec de +endr + dec c + jr nz, .FindLastSprite +.FoundLastSprite + dec c + jr z, .quit + +; If the length of the current sprite is +; higher than a later one, swap them. + + inc de + ld hl, UsedSprites + 1 + +.CheckSprite + push bc + push de + push hl + +.CheckFollowing + ld a, [de] + cp [hl] + jr nc, .loop + +; Swap the two sprites. + + ld b, a + ld a, [hl] + ld [hl], b + ld [de], a + dec de + dec hl + ld a, [de] + ld b, a + ld a, [hl] + ld [hl], b + ld [de], a + inc de + inc hl + +; Keep doing this until everything's in order. + +.loop +rept 2 + dec de +endr + dec c + jr nz, .CheckFollowing + + pop hl +rept 2 + inc hl +endr + pop de + pop bc + dec c + jr nz, .CheckSprite + +.quit + ret +; 14355 + + +ArrangeUsedSprites: ; 14355 +; Get the length of each sprite and space them out in VRAM. +; Crystal introduces a second table in VRAM bank 0. + + ld hl, UsedSprites + ld c, SPRITE_GFX_LIST_CAPACITY + ld b, 0 +.FirstTableLength +; Keep going until the end of the list. + ld a, [hli] + and a + jr z, .quit + + ld a, [hl] + call GetSpriteLength + +; Spill over into the second table after $80 tiles. + add b + cp $80 + jr z, .loop + jr nc, .SecondTable + +.loop + ld [hl], b + inc hl + ld b, a + +; Assumes the next table will be reached before c hits 0. + dec c + jr nz, .FirstTableLength + +.SecondTable +; The second tile table starts at tile $80. + ld b, $80 + dec hl +.SecondTableLength +; Keep going until the end of the list. + ld a, [hli] + and a + jr z, .quit + + ld a, [hl] + call GetSpriteLength + +; There are only two tables, so don't go any further than that. + add b + jr c, .quit + + ld [hl], b + ld b, a + inc hl + + dec c + jr nz, .SecondTableLength + +.quit + ret +; 14386 + + +GetSpriteLength: ; 14386 +; Return the length of sprite type a in tiles. + + cp WALKING_SPRITE + jr z, .AnyDirection + cp STANDING_SPRITE + jr z, .AnyDirection + cp STILL_SPRITE + jr z, .OneDirection + + ld a, 12 + ret + +.AnyDirection + ld a, 12 + ret + +.OneDirection + ld a, 4 + ret +; 1439b + + +Function1439b: ; 1439b + ld hl, UsedSprites + ld c, SPRITE_GFX_LIST_CAPACITY +.loop + ld a, [wSpriteFlags] + res 5, a + ld [wSpriteFlags], a + ld a, [hli] + and a + jr z, .done + ld [hUsedSpriteIndex], a + ld a, [hli] + ld [hUsedSpriteTile], a + bit 7, a + jr z, .dont_set + ld a, [wSpriteFlags] + set 5, a + ld [wSpriteFlags], a + +.dont_set + push bc + push hl + call Function143c8 + pop hl + pop bc + dec c + jr nz, .loop + +.done + ret +; 143c8 + +Function143c8: ; 143c8 + ld a, [hUsedSpriteIndex] + call SafeGetSprite + ld a, [hUsedSpriteTile] + call .GetTileAddr + push hl + push de + push bc + ld a, [wSpriteFlags] + bit 7, a + jr nz, .skip + call .CopyToVram + +.skip + pop bc + ld l, c + ld h, $0 +rept 4 + add hl, hl +endr + pop de + add hl, de + ld d, h + ld e, l + pop hl + ld a, [wSpriteFlags] + bit 5, a + jr nz, .done + bit 6, a + jr nz, .done + ld a, [hUsedSpriteIndex] + call _DoesSpriteHaveFacings + jr c, .done + ld a, h + add $8 + ld h, a + call .CopyToVram + +.done + ret +; 14406 + +.GetTileAddr: ; 14406 +; Return the address of tile (a) in (hl). + and $7f + ld l, a + ld h, 0 +rept 4 + add hl, hl +endr + ld a, l + add VTiles0 % $100 + ld l, a + ld a, h + adc VTiles0 / $100 + ld h, a + ret +; 14418 + +.CopyToVram: ; 14418 + ld a, [rVBK] + push af + ld a, [wSpriteFlags] + bit 5, a + ld a, $1 + jr z, .bankswitch + ld a, $0 + +.bankswitch + ld [rVBK], a + call Get2bpp + pop af + ld [rVBK], a + ret +; 1442f + +LoadEmote:: ; 1442f +; Get the address of the pointer to emote c. + ld a, c + ld bc, 6 + ld hl, EmotesPointers + call AddNTimes +; Load the emote address into de + ld e, [hl] + inc hl + ld d, [hl] +; load the length of the emote (in tiles) into c + inc hl + ld c, [hl] + swap c +; load the emote pointer bank into b + inc hl + ld b, [hl] +; load the VRAM destination into hl + inc hl + ld a, [hli] + ld h, [hl] + ld l, a +; if the emote has a length of 0, do not proceed (error handling) + ld a, c + and a + ret z + call GetEmote2bpp + ret +; 1444d + +emote_header: MACRO + dw \1 + db \2 tiles, BANK(\1) + dw \3 +ENDM + +EmotesPointers: ; 144d +; dw source address +; db length, bank +; dw dest address + + emote_header ShockEmote, 4, VTiles1 tile $78 + emote_header QuestionEmote, 4, VTiles1 tile $78 + emote_header HappyEmote, 4, VTiles1 tile $78 + emote_header SadEmote, 4, VTiles1 tile $78 + emote_header HeartEmote, 4, VTiles1 tile $78 + emote_header BoltEmote, 4, VTiles1 tile $78 + emote_header SleepEmote, 4, VTiles1 tile $78 + emote_header FishEmote, 4, VTiles1 tile $78 + emote_header FishingRodGFX1, 1, VTiles1 tile $7c + emote_header FishingRodGFX2, 2, VTiles1 tile $7c + emote_header FishingRodGFX3, 2, VTiles1 tile $7e + emote_header FishingRodGFX4, 1, VTiles1 tile $7e +; 14495 + + +SpriteMons: ; 14495 + db UNOWN + db GEODUDE + db GROWLITHE + db WEEDLE + db SHELLDER + db ODDISH + db GENGAR + db ZUBAT + db MAGIKARP + db SQUIRTLE + db TOGEPI + db BUTTERFREE + db DIGLETT + db POLIWAG + db PIKACHU + db CLEFAIRY + db CHARMANDER + db JYNX + db STARMIE + db BULBASAUR + db JIGGLYPUFF + db GRIMER + db EKANS + db PARAS + db TENTACOOL + db TAUROS + db MACHOP + db VOLTORB + db LAPRAS + db RHYDON + db MOLTRES + db SNORLAX + db GYARADOS + db LUGIA + db HO_OH +; 144b8 + + +OutdoorSprites: ; 144b8 +; Valid sprite IDs for each map group. + + dw Group1Sprites + dw Group2Sprites + dw Group3Sprites + dw Group4Sprites + dw Group5Sprites + dw Group6Sprites + dw Group7Sprites + dw Group8Sprites + dw Group9Sprites + dw Group10Sprites + dw Group11Sprites + dw Group12Sprites + dw Group13Sprites + dw Group14Sprites + dw Group15Sprites + dw Group16Sprites + dw Group17Sprites + dw Group18Sprites + dw Group19Sprites + dw Group20Sprites + dw Group21Sprites + dw Group22Sprites + dw Group23Sprites + dw Group24Sprites + dw Group25Sprites + dw Group26Sprites +; 144ec + + +Group13Sprites: ; 144ec + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_BIG_LAPRAS + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_TEACHER + db SPRITE_FISHER + db SPRITE_YOUNGSTER + db SPRITE_BLUE + db SPRITE_GRAMPS + db SPRITE_BUG_CATCHER + db SPRITE_COOLTRAINER_F + db SPRITE_SWIMMER_GIRL + db SPRITE_SWIMMER_GUY + db SPRITE_POKE_BALL + db SPRITE_FRUIT_TREE +; 14503 + +Group23Sprites: ; 14503 + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_BIG_LAPRAS + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_TEACHER + db SPRITE_FISHER + db SPRITE_YOUNGSTER + db SPRITE_BLUE + db SPRITE_GRAMPS + db SPRITE_BUG_CATCHER + db SPRITE_COOLTRAINER_F + db SPRITE_SWIMMER_GIRL + db SPRITE_SWIMMER_GUY + db SPRITE_POKE_BALL + db SPRITE_FRUIT_TREE +; 1451a + +Group14Sprites: ; 1451a + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_BIG_LAPRAS + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_TEACHER + db SPRITE_FISHER + db SPRITE_YOUNGSTER + db SPRITE_BLUE + db SPRITE_GRAMPS + db SPRITE_BUG_CATCHER + db SPRITE_COOLTRAINER_F + db SPRITE_SWIMMER_GIRL + db SPRITE_SWIMMER_GUY + db SPRITE_POKE_BALL + db SPRITE_FRUIT_TREE +; 14531 + +Group6Sprites: ; 14531 + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_BIG_LAPRAS + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_TEACHER + db SPRITE_FISHER + db SPRITE_YOUNGSTER + db SPRITE_BLUE + db SPRITE_GRAMPS + db SPRITE_BUG_CATCHER + db SPRITE_COOLTRAINER_F + db SPRITE_SWIMMER_GIRL + db SPRITE_SWIMMER_GUY + db SPRITE_POKE_BALL + db SPRITE_FRUIT_TREE +; 14548 + +Group7Sprites: ; 14548 + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_BIG_LAPRAS + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_COOLTRAINER_M + db SPRITE_SUPER_NERD + db SPRITE_COOLTRAINER_F + db SPRITE_FISHER + db SPRITE_YOUNGSTER + db SPRITE_LASS + db SPRITE_POKEFAN_M + db SPRITE_ROCKET + db SPRITE_MISTY + db SPRITE_POKE_BALL + db SPRITE_SLOWPOKE +; 1455f + +Group25Sprites: ; 1455f + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_BIG_LAPRAS + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_COOLTRAINER_M + db SPRITE_SUPER_NERD + db SPRITE_COOLTRAINER_F + db SPRITE_FISHER + db SPRITE_YOUNGSTER + db SPRITE_LASS + db SPRITE_POKEFAN_M + db SPRITE_ROCKET + db SPRITE_MISTY + db SPRITE_POKE_BALL + db SPRITE_SLOWPOKE +; 14576 + +Group21Sprites: ; 14576 + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_BIG_LAPRAS + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_FISHER + db SPRITE_POLIWAG + db SPRITE_TEACHER + db SPRITE_GRAMPS + db SPRITE_YOUNGSTER + db SPRITE_LASS + db SPRITE_BIKER + db SPRITE_SILVER + db SPRITE_BLUE + db SPRITE_POKE_BALL + db SPRITE_FRUIT_TREE +; 1458d + +Group18Sprites: ; 1458d + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_BIG_LAPRAS + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_POKEFAN_M + db SPRITE_MACHOP + db SPRITE_GRAMPS + db SPRITE_YOUNGSTER + db SPRITE_FISHER + db SPRITE_TEACHER + db SPRITE_SUPER_NERD + db SPRITE_BIG_SNORLAX + db SPRITE_BIKER + db SPRITE_POKE_BALL + db SPRITE_FRUIT_TREE +; 145a4 + +Group12Sprites: ; 145a4 + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_BIG_LAPRAS + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_POKEFAN_M + db SPRITE_MACHOP + db SPRITE_GRAMPS + db SPRITE_YOUNGSTER + db SPRITE_FISHER + db SPRITE_TEACHER + db SPRITE_SUPER_NERD + db SPRITE_BIG_SNORLAX + db SPRITE_BIKER + db SPRITE_POKE_BALL + db SPRITE_FRUIT_TREE +; 145bb + +Group17Sprites: ; 145bb + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_BIG_LAPRAS + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_POKEFAN_M + db SPRITE_MACHOP + db SPRITE_GRAMPS + db SPRITE_YOUNGSTER + db SPRITE_FISHER + db SPRITE_TEACHER + db SPRITE_SUPER_NERD + db SPRITE_BIG_SNORLAX + db SPRITE_BIKER + db SPRITE_POKE_BALL + db SPRITE_FRUIT_TREE +; 145d2 + +Group16Sprites: ; 145d2 + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_BIG_LAPRAS + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_POKEFAN_M + db SPRITE_BUENA + db SPRITE_GRAMPS + db SPRITE_YOUNGSTER + db SPRITE_FISHER + db SPRITE_TEACHER + db SPRITE_SUPER_NERD + db SPRITE_MACHOP + db SPRITE_BIKER + db SPRITE_POKE_BALL + db SPRITE_BOULDER +; 145e9 + +Group24Sprites: ; 145e9 + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_BIG_LAPRAS + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_SILVER + db SPRITE_TEACHER + db SPRITE_FISHER + db SPRITE_COOLTRAINER_M + db SPRITE_YOUNGSTER + db SPRITE_MONSTER + db SPRITE_GRAMPS + db SPRITE_BUG_CATCHER + db SPRITE_COOLTRAINER_F + db SPRITE_POKE_BALL + db SPRITE_FRUIT_TREE +; 14600 + +Group26Sprites: ; 14600 + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_BIG_LAPRAS + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_SILVER + db SPRITE_TEACHER + db SPRITE_FISHER + db SPRITE_COOLTRAINER_M + db SPRITE_YOUNGSTER + db SPRITE_MONSTER + db SPRITE_GRAMPS + db SPRITE_BUG_CATCHER + db SPRITE_COOLTRAINER_F + db SPRITE_POKE_BALL + db SPRITE_FRUIT_TREE +; 14617 + +Group19Sprites: ; 14617 + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_BIG_LAPRAS + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_SILVER + db SPRITE_TEACHER + db SPRITE_FISHER + db SPRITE_COOLTRAINER_M + db SPRITE_YOUNGSTER + db SPRITE_MONSTER + db SPRITE_GRAMPS + db SPRITE_BUG_CATCHER + db SPRITE_COOLTRAINER_F + db SPRITE_POKE_BALL + db SPRITE_FRUIT_TREE +; 1462e + +Group10Sprites: ; 1462e + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_BIG_LAPRAS + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_FISHER + db SPRITE_LASS + db SPRITE_OFFICER + db SPRITE_GRAMPS + db SPRITE_YOUNGSTER + db SPRITE_COOLTRAINER_M + db SPRITE_BUG_CATCHER + db SPRITE_SUPER_NERD + db SPRITE_WEIRD_TREE + db SPRITE_POKE_BALL + db SPRITE_FRUIT_TREE +; 14645 + +Group4Sprites: ; 14645 + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_BIG_LAPRAS + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_FISHER + db SPRITE_LASS + db SPRITE_OFFICER + db SPRITE_GRAMPS + db SPRITE_YOUNGSTER + db SPRITE_COOLTRAINER_M + db SPRITE_BUG_CATCHER + db SPRITE_SUPER_NERD + db SPRITE_WEIRD_TREE + db SPRITE_POKE_BALL + db SPRITE_FRUIT_TREE +; 1465c + +Group8Sprites: ; 1465c + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_KURT_OUTSIDE + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_GRAMPS + db SPRITE_YOUNGSTER + db SPRITE_OFFICER + db SPRITE_POKEFAN_M + db SPRITE_BLACK_BELT + db SPRITE_TEACHER + db SPRITE_AZALEA_ROCKET + db SPRITE_LASS + db SPRITE_SILVER + db SPRITE_FRUIT_TREE + db SPRITE_SLOWPOKE +; 14673 + +Group11Sprites: ; 14673 + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_POKE_BALL + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_BIG_LAPRAS + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_GRAMPS + db SPRITE_YOUNGSTER + db SPRITE_OFFICER + db SPRITE_POKEFAN_M + db SPRITE_DAYCARE_MON_1 + db SPRITE_COOLTRAINER_F + db SPRITE_ROCKET + db SPRITE_LASS + db SPRITE_DAYCARE_MON_2 + db SPRITE_FRUIT_TREE + db SPRITE_SLOWPOKE +; 1468a + +Group22Sprites: ; 1468a + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_STANDING_YOUNGSTER + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_OLIVINE_RIVAL + db SPRITE_POKEFAN_M + db SPRITE_LASS + db SPRITE_BUENA + db SPRITE_SWIMMER_GIRL + db SPRITE_SAILOR + db SPRITE_POKEFAN_F + db SPRITE_SUPER_NERD + db SPRITE_TAUROS + db SPRITE_FRUIT_TREE + db SPRITE_ROCK +; 146a1 + +Group1Sprites: ; 146a1 + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_STANDING_YOUNGSTER + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_OLIVINE_RIVAL + db SPRITE_POKEFAN_M + db SPRITE_LASS + db SPRITE_BUENA + db SPRITE_SWIMMER_GIRL + db SPRITE_SAILOR + db SPRITE_POKEFAN_F + db SPRITE_SUPER_NERD + db SPRITE_TAUROS + db SPRITE_FRUIT_TREE + db SPRITE_ROCK +; 146b8 + +Group9Sprites: ; 146b8 + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_BIG_LAPRAS + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_LANCE + db SPRITE_GRAMPS + db SPRITE_SUPER_NERD + db SPRITE_COOLTRAINER_F + db SPRITE_FISHER + db SPRITE_COOLTRAINER_M + db SPRITE_LASS + db SPRITE_YOUNGSTER + db SPRITE_GYARADOS + db SPRITE_FRUIT_TREE + db SPRITE_POKE_BALL +; 146cf + +Group2Sprites: ; 146cf + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_BIG_LAPRAS + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_GRAMPS + db SPRITE_YOUNGSTER + db SPRITE_LASS + db SPRITE_SUPER_NERD + db SPRITE_COOLTRAINER_M + db SPRITE_POKEFAN_M + db SPRITE_BLACK_BELT + db SPRITE_COOLTRAINER_F + db SPRITE_FISHER + db SPRITE_FRUIT_TREE + db SPRITE_POKE_BALL +; 146e6 + +Group5Sprites: ; 146e6 + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_BIG_LAPRAS + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_GRAMPS + db SPRITE_YOUNGSTER + db SPRITE_LASS + db SPRITE_SUPER_NERD + db SPRITE_COOLTRAINER_M + db SPRITE_POKEFAN_M + db SPRITE_BLACK_BELT + db SPRITE_COOLTRAINER_F + db SPRITE_FISHER + db SPRITE_FRUIT_TREE + db SPRITE_POKE_BALL +; 146fd + +Group3Sprites: ; 146fd + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_GAMEBOY_KID + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_LASS + db SPRITE_POKEFAN_F + db SPRITE_TEACHER + db SPRITE_YOUNGSTER + db SPRITE_GROWLITHE + db SPRITE_POKEFAN_M + db SPRITE_ROCKER + db SPRITE_FISHER + db SPRITE_SCIENTIST + db SPRITE_POKE_BALL + db SPRITE_BOULDER +; 14714 + +Group15Sprites: ; 14714 + db SPRITE_SUICUNE + db SPRITE_SILVER_TROPHY + db SPRITE_FAMICOM + db SPRITE_POKEDEX + db SPRITE_WILL + db SPRITE_KAREN + db SPRITE_NURSE + db SPRITE_OLD_LINK_RECEPTIONIST + db SPRITE_BIG_LAPRAS + db SPRITE_BIG_ONIX + db SPRITE_SUDOWOODO + db SPRITE_BIG_SNORLAX + db SPRITE_SAILOR + db SPRITE_FISHING_GURU + db SPRITE_GENTLEMAN + db SPRITE_SUPER_NERD + db SPRITE_HO_OH + db SPRITE_TEACHER + db SPRITE_COOLTRAINER_F + db SPRITE_YOUNGSTER + db SPRITE_FAIRY + db SPRITE_POKE_BALL + db SPRITE_ROCK +; 1472b + +Group20Sprites: ; 1472b + db SPRITE_OAK + db SPRITE_FISHER + db SPRITE_TEACHER + db SPRITE_TWIN + db SPRITE_POKEFAN_M + db SPRITE_GRAMPS + db SPRITE_FAIRY + db SPRITE_SILVER + db SPRITE_FISHING_GURU + db SPRITE_POKE_BALL + db SPRITE_POKEDEX +; 14736 + + +SpriteHeaders: ; 14736 +INCLUDE "gfx/overworld/sprite_headers.asm" +; 1499a diff --git a/engine/pokedex.asm b/engine/pokedex.asm index 8d5680ded..080647895 100644 --- a/engine/pokedex.asm +++ b/engine/pokedex.asm @@ -65,12 +65,8 @@ InitPokedex: ; 40063 call ClearTileMap call Function414b7 - ld hl, wc6d0 -IF DEF(CRYSTAL11) - ld bc, $0116 -ELSE - ld bc, $0115 -ENDC + ld hl, wPokedexDataStart + ld bc, wPokedexDataEnd - wPokedexDataStart xor a call ByteFill diff --git a/engine/sprites.asm b/engine/sprites.asm index 517428007..82c50f743 100755 --- a/engine/sprites.asm +++ b/engine/sprites.asm @@ -1,1480 +1,2888 @@ -GetEmote2bpp: ; 1412a - ld a, $1 - ld [rVBK], a - call Get2bpp - xor a - ld [rVBK], a +Function8cf53: ; 8cf53 + ld hl, wc300 + ld bc, wc3c1 - wc300 +.loop + ld [hl], $0 + inc hl + dec bc + ld a, c + or b + jr nz, .loop ret -; 14135 +; 8cf62 -_ReplaceKrisSprite:: ; 14135 - call GetPlayerSprite - ld a, [UsedSprites] - ld [hUsedSpriteIndex], a - ld a, [UsedSprites + 1] - ld [hUsedSpriteTile], a - call Function143c8 +Function8cf62: ; 8cf62 + call Function8cf69 + call DelayFrame ret -; 14146 +; 8cf69 -Function14146: ; 14146 - ld hl, wSpriteFlags - ld a, [hl] +Function8cf69: ; 8cf69 + push hl + push de + push bc push af - res 7, [hl] - set 6, [hl] - call RunCallback_04 - pop af - ld [wSpriteFlags], a - ret -; 14157 -Function14157: ; 14157 - ld hl, wSpriteFlags - ld a, [hl] - push af - set 7, [hl] - res 6, [hl] - call RunCallback_04 + ld a, $0 + ld [wc3b5], a + call Function8cf7a + pop af - ld [wSpriteFlags], a + pop bc + pop de + pop hl ret -; 14168 +; 8cf7a -RefreshSprites:: ; 14168 - call .Refresh - call RunCallback_04 - ret -; 1416f +Function8cf7a: ; 8cf7a + ld hl, wc314 + ld e, 10 ; There are 10 structs here. -.Refresh: ; 1416f - xor a - ld bc, UsedSpritesEnd - UsedSprites - ld hl, UsedSprites - call ByteFill - call GetPlayerSprite - call AddMapSprites - call LoadAndSortSprites - ret -; 14183 - -GetPlayerSprite: ; 14183 -; Get Chris or Kris's sprite. - ld hl, .Chris - ld a, [wPlayerSpriteSetupFlags] - bit 2, a - jr nz, .go - ld a, [PlayerGender] - bit 0, a - jr z, .go - ld hl, .Kris - -.go - ld a, [PlayerState] - ld c, a .loop - ld a, [hli] - cp c - jr z, .good - inc hl - cp $ff + ld a, [hl] + and a + jr z, .next ; This struct is deinitialized. + ld c, l + ld b, h + push hl + push de + call Function8d24b ; Uses a massive jumptable + call Function8d04c + pop de + pop hl + jr c, .done + +.next + ld bc, $10 + add hl, bc + dec e jr nz, .loop -; Any player state not in the array defaults to Chris's sprite. - xor a ; ld a, PLAYER_NORMAL - ld [PlayerState], a - ld a, SPRITE_CHRIS - jr .finish + ld a, [wc3b5] + ld l, a + ld h, Sprites / $0100 -.good - ld a, [hl] +.loop2 ; Clear (Sprites + [wc3b5] --> SpritesEnd) + ld a, l + cp SpritesEnd % $100 + jr nc, .done + xor a + ld [hli], a + jr .loop2 -.finish - ld [UsedSprites + 0], a - ld [PlayerSprite], a - ld [PlayerObjectSprite], a +.done ret +; 8cfa8 -.Chris - db PLAYER_NORMAL, SPRITE_CHRIS - db PLAYER_BIKE, SPRITE_CHRIS_BIKE - db PLAYER_SURF, SPRITE_SURF - db PLAYER_SURF_PIKA, SPRITE_SURFING_PIKACHU - db $ff +Function8cfa8: ; 8cfa8 (23:4fa8) + ld hl, wc314 + ld e, 10 + +.loop + ld a, [hl] + and a + jr z, .next + ld c, l + ld b, h + push hl + push de + call Function8d24b ; Uses a massive jumptable + call Function8d04c + pop de + pop hl + jr c, .done -.Kris - db PLAYER_NORMAL, SPRITE_KRIS - db PLAYER_BIKE, SPRITE_KRIS_BIKE - db PLAYER_SURF, SPRITE_SURF - db PLAYER_SURF_PIKA, SPRITE_SURFING_PIKACHU - db $ff -; 141c9 +.next + ld bc, $10 + add hl, bc + dec e + jr nz, .loop + ld a, [wc3b5] + ld l, a + ld h, (Sprites + $40) / $100 -AddMapSprites: ; 141c9 - call GetMapPermission - call CheckOutdoorMap - jr z, .outdoor - call AddIndoorSprites - ret +.loop2 ; Clear (Sprites + [wc3b5] --> Sprites + $40) + ld a, l + cp (Sprites + $40) % $100 + jr nc, .done + xor a + ld [hli], a + jr .loop2 -.outdoor - call AddOutdoorSprites +.done ret -; 141d9 - -AddIndoorSprites: ; 141d9 - ld hl, Map1ObjectSprite - ld a, 1 -.loop +Function8cfd6:: ; 8cfd6 +; Find if there's any room in the wc314 array, which is 10x16 + push de push af + ld hl, wc314 + ld e, 10 +.loop ld a, [hl] - call AddSpriteGFX - ld de, OBJECT_LENGTH - add hl, de - pop af - inc a - cp NUM_OBJECTS + and a + jr z, .found + ld bc, $10 + add hl, bc + dec e jr nz, .loop +; We've reached the end. There is no more room here. +; Return carry. + pop af + pop de + scf ret -; 141ee +.found +; Back up the structure address to bc. + ld c, l + ld b, h +; Value [wc3b4] is initially set to -1. Set it to +; the number of objects loaded into this array. + ld hl, wc3b4 + inc [hl] + ld a, [hl] + and a + jr nz, .initialized + inc [hl] -AddOutdoorSprites: ; 141ee - ld a, [MapGroup] - dec a - ld c, a - ld b, 0 - ld hl, OutdoorSprites -rept 2 +.initialized +; Get row a of Unknown_8d1c4, copy the pointer into de + pop af + ld e, a + ld d, 0 + ld hl, Unknown_8d1c4 +rept 3 + add hl, de +endr + ld e, l + ld d, h +; Set hl to the first field (field 0) in the current structure. + ld hl, 0 + add hl, bc +; Load the index. + ld a, [wc3b4] + ld [hli], a +; Copy the table entry to the next two fields. + ld a, [de] + ld [hli], a + inc de + ld a, [de] + ld [hli], a + inc de +; Look up the third field from the table in the wc300 array (10x2). +; Take the value and load it in + ld a, [de] + call LookUpInwDict_c300 + ld [hli], a + pop de +; Set hl to field 4. Kinda pointless, because we're presumably already here. + ld hl, $4 add hl, bc +; Load the original value of de into here. + ld a, e + ld [hli], a + ld a, d + ld [hli], a +; load 0 into the next four fields + xor a +rept 2 + ld [hli], a endr - ld a, [hli] - ld h, [hl] - ld l, a - ld c, MAX_OUTDOOR_SPRITES -.loop - push bc - ld a, [hli] - call AddSpriteGFX - pop bc - dec c - jr nz, .loop - ret -; 14209 - - -RunCallback_04: ; 14209 - ld a, $4 - call RunMapCallback - call Function1439b - call Function14215 + xor a +rept 2 + ld [hli], a +endr +; load -1 into the next field + dec a + ld [hli], a +; load 0 into the last five fields + xor a +rept 4 + ld [hli], a +endr + ld [hl], a +; back up the address of the first field to wc3b8 + ld a, c + ld [wc3b8], a + ld a, b + ld [wc3b8 + 1], a ret -; 14215 - -Function14215: ; 14215 - ld a, [wSpriteFlags] - bit 6, a - ret nz - ld c, EMOTE_08 - callba LoadEmote - call GetMapPermission - call CheckOutdoorMap - ld c, EMOTE_0B - jr z, .outdoor - ld c, EMOTE_0A +; 8d036 -.outdoor - callba LoadEmote +Function8d036: ; 8d036 +; Clear the index field of the struct in bc. + ld hl, 0 + add hl, bc + ld [hl], $0 ret -; 14236 +; 8d03d - -SafeGetSprite: ; 14236 - push hl - call GetSprite - pop hl +Function8d03d: ; 8d03d (23:503d) +; Clear the index field of every struct in the wc314 array. + ld hl, wc314 + ld bc, $10 + ld e, 10 + xor a +.loop + ld [hl], a + add hl, bc + dec e + jr nz, .loop ret -; 1423c -GetSprite: ; 1423c - call GetMonSprite - ret c - ld hl, SpriteHeaders ; address - dec a - ld c, a - ld b, 0 - ld a, 6 - call AddNTimes - ; load the address into de +Function8d04c: ; 8d04c +; Populate Sprites with the bouncing mon icons + call Function8d0ec ; init WRAM + call Function8d132 ; read from a memory array + cp -3 + jr z, .done + cp -4 + jr z, .almost + call Function8d1a2 ; read from a pointer table + ld a, [wc3ba] + add [hl] + ld [wc3ba], a + inc hl ld a, [hli] + ld h, [hl] + ld l, a + push bc + ld a, [wc3b5] ld e, a + ld d, Sprites / $100 ld a, [hli] - ld d, a - ; load the length into c - ld a, [hli] - swap a ld c, a - ; load the sprite bank into both b and h - ld b, [hl] - ld a, [hli] - ; load the sprite type into l - ld l, [hl] - ld h, a - ret -; 14259 - - -GetMonSprite: ; 14259 -; Return carry if a monster sprite was loaded. +.loop + ld a, [wc3bc] + ld b, a + ld a, [wc3be] + add b + ld b, a + ld a, [wc3bf] + add b + ld b, a + call Function8d0be + add b + ld [de], a + inc hl + inc de + ld a, [wc3bb] + ld b, a + ld a, [wc3bd] + add b + ld b, a + ld a, [wc3c0] + add b + ld b, a + call Function8d0ce + add b + ld [de], a + inc hl + inc de + ld a, [wc3ba] + add [hl] + ld [de], a + inc hl + inc de + call Function8d0de + ld [de], a + inc hl + inc de + ld a, e + ld [wc3b5], a + cp SpritesEnd % $100 + jr nc, .outofroom + dec c + jr nz, .loop + pop bc + jr .done - cp SPRITE_POKEMON - jr c, .Normal - cp SPRITE_DAYCARE_MON_1 - jr z, .wBreedMon1 - cp SPRITE_DAYCARE_MON_2 - jr z, .wBreedMon2 - cp SPRITE_VARS - jr nc, .Variable - jr .Icon +.almost + call Function8d036 -.Normal +.done and a ret -.Icon - sub SPRITE_POKEMON - ld e, a - ld d, 0 - ld hl, SpriteMons - add hl, de - ld a, [hl] - jr .Mon - -.wBreedMon1 - ld a, [wBreedMon1Species] - jr .Mon - -.wBreedMon2 - ld a, [wBreedMon2Species] - -.Mon - ld e, a - and a - jr z, .NoBreedmon - - callba Function8e82b - - ld l, 1 - ld h, 0 +.outofroom + pop bc scf ret +; 8d0be -.Variable - sub SPRITE_VARS - ld e, a - ld d, 0 - ld hl, VariableSprites - add hl, de +Function8d0be: ; 8d0be + push hl ld a, [hl] - and a - jp nz, GetMonSprite + ld hl, wc3b8 + bit 6, [hl] + jr z, .ok + add $8 + xor $ff + inc a -.NoBreedmon - ld a, 1 - ld l, 1 - ld h, 0 - and a +.ok + pop hl ret -; 142a7 - - -_DoesSpriteHaveFacings:: ; 142a7 -; Checks to see whether we can apply a facing to a sprite. -; Returns carry unless the sprite is a Pokemon or a Still Sprite. - cp SPRITE_POKEMON - jr nc, .only_down +; 8d0ce +Function8d0ce: ; 8d0ce push hl - push bc - ld hl, SpriteHeaders + SPRITEHEADER_TYPE ; type - dec a - ld c, a - ld b, 0 - ld a, NUM_SPRITEHEADER_FIELDS - call AddNTimes ld a, [hl] - pop bc - pop hl - cp STILL_SPRITE - jr nz, .only_down - scf - ret + ld hl, wc3b8 + bit 5, [hl] + jr z, .ok + add $8 + xor $ff + inc a -.only_down - and a +.ok + pop hl ret -; 142c4 - - -_GetSpritePalette:: ; 142c4 - ld a, c - call GetMonSprite - jr c, .is_pokemon +; 8d0de - ld hl, SpriteHeaders + 5 ; palette - dec a - ld c, a - ld b, 0 - ld a, 6 - call AddNTimes - ld c, [hl] +Function8d0de: ; 8d0de + ld a, [wc3b8] + ld b, a + ld a, [hl] + xor b + and $e0 + ld b, a + ld a, [hl] + and $1f + or b ret +; 8d0ec -.is_pokemon +Function8d0ec: ; 8d0ec xor a - ld c, a - ret -; 142db - - -LoadAndSortSprites: ; 142db - call LoadSpriteGFX - call SortUsedSprites - call ArrangeUsedSprites + ld [wc3b8], a + ld hl, $3 + add hl, bc + ld a, [hli] + ld [wc3ba], a + ld a, [hli] + ld [wc3bb], a + ld a, [hli] + ld [wc3bc], a + ld a, [hli] + ld [wc3bd], a + ld a, [hli] + ld [wc3be], a ret -; 142e5 - - -AddSpriteGFX: ; 142e5 -; Add any new sprite ids to a list of graphics to be loaded. -; Return carry if the list is full. +; 8d109 +LookUpInwDict_c300: ; 8d109 +; a = wDict_c300[a] if a in wDict_c300 else 0 push hl push bc + ld hl, wDict_c300 ld b, a - ld hl, UsedSprites + 2 - ld c, SPRITE_GFX_LIST_CAPACITY - 1 + ld c, 10 .loop - ld a, [hl] + ld a, [hli] cp b - jr z, .exists - and a - jr z, .new -rept 2 + jr z, .ok inc hl -endr dec c jr nz, .loop + xor a + jr .done - pop bc - pop hl - scf - ret +.ok + ld a, [hl] -.exists +.done pop bc pop hl - and a ret +; 8d120 -.new - ld [hl], b - pop bc - pop hl - and a +Function8d120:: ; 8d120 + ld hl, $1 + add hl, bc + ld [hl], a + ld hl, $8 + add hl, bc + ld [hl], $0 + ld hl, $a + add hl, bc + ld [hl], $ff ret -; 14306 +; 8d132 -LoadSpriteGFX: ; 14306 -; Bug: b is not preserved, so -; it's useless as a next count. - - ld hl, UsedSprites - ld b, SPRITE_GFX_LIST_CAPACITY +Function8d132: ; 8d132 .loop - ld a, [hli] + ld hl, $8 + add hl, bc + ld a, [hl] and a - jr z, .done + jr z, .ok + dec [hl] + call Function8d189 + ld a, [hli] + push af + jr .skip + +.ok + ld hl, $a + add hl, bc + inc [hl] + call Function8d189 + ld a, [hli] + cp $fe + jr z, .minus_2 + cp $ff + jr z, .minus_1 + push af + ld a, [hl] push hl - call .LoadSprite + and $3f + ld hl, $9 + add hl, bc + add [hl] + ld hl, $8 + add hl, bc + ld [hl], a pop hl - ld [hli], a - dec b - jr nz, .loop -.done - ret - -.LoadSprite - call GetSprite - ld a, l +.skip + ld a, [hl] + and $c0 + srl a + ld [wc3b8], a + pop af ret -; 1431e +.minus_1 + xor a + ld hl, $8 + add hl, bc + ld [hl], a + ld hl, $a + add hl, bc +rept 2 + dec [hl] +endr + jr .loop -SortUsedSprites: ; 1431e -; Bubble-sort sprites by type. +.minus_2 + xor a + ld hl, $8 + add hl, bc + ld [hl], a + dec a + ld hl, $a + add hl, bc + ld [hl], a + jr .loop +; 8d189 + +Function8d189: ; 8d189 + ; Get the [bc+10]th entry in the data table + ; indexed at [bc+1] in Unknown_8d6e6 + ld hl, $1 + add hl, bc + ld e, [hl] + ld d, 0 + ld hl, Unknown_8d6e6 +rept 2 + add hl, de +endr + ld e, [hl] + inc hl + ld d, [hl] + ld hl, $a + add hl, bc + ld l, [hl] + ld h, 0 + add hl, hl + add hl, de + ret +; 8d1a2 -; Run backwards through UsedSprites to find the last one. +Function8d1a2: ; 8d1a2 + ld e, a + ld d, 0 + ld hl, Unknown_8d94d +rept 3 + add hl, de +endr + ret +; 8d1ac - ld c, SPRITE_GFX_LIST_CAPACITY - ld de, UsedSprites + (SPRITE_GFX_LIST_CAPACITY - 1) * 2 -.FindLastSprite - ld a, [de] - and a - jr nz, .FoundLastSprite +Function8d1ac: ; unreferenced + push hl + ld l, a + ld h, 0 rept 2 - dec de + add hl, hl endr - dec c - jr nz, .FindLastSprite -.FoundLastSprite - dec c - jr z, .quit - -; If the length of the current sprite is -; higher than a later one, swap them. + ld de, Unknown_8e706 ; broken 2bpp pointers + add hl, de + ld c, [hl] + inc hl + ld b, [hl] + inc hl + ld e, [hl] + inc hl + ld d, [hl] + pop hl + push bc + call Request2bpp + pop bc + ret +; 8d1c4 + +Unknown_8d1c4: ; 8d1c4 + db $01, JUMPTABLE_8D24B_FUNCTION_01, $00 ; 00 + db $07, JUMPTABLE_8D24B_FUNCTION_04, $00 ; 01 + db $08, JUMPTABLE_8D24B_FUNCTION_05, $05 ; 02 + db $0a, JUMPTABLE_8D24B_FUNCTION_06, $00 ; 03 + db $0b, JUMPTABLE_8D24B_FUNCTION_07, $06 ; 04 + db $0c, JUMPTABLE_8D24B_FUNCTION_08, $06 ; 05 + db $0d, JUMPTABLE_8D24B_FUNCTION_09, $07 ; 06 + db $0e, JUMPTABLE_8D24B_FUNCTION_0A, $07 ; 07 + db $10, JUMPTABLE_8D24B_FUNCTION_0B, $07 ; 08 + db $08, JUMPTABLE_8D24B_FUNCTION_0C, $05 ; 09 + db $11, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 0a + db $12, JUMPTABLE_8D24B_FUNCTION_0D, $08 ; 0b + db $12, JUMPTABLE_8D24B_FUNCTION_0E, $08 ; 0c + db $12, JUMPTABLE_8D24B_FUNCTION_0F, $08 ; 0d + db $13, JUMPTABLE_8D24B_FUNCTION_10, $00 ; 0e + db $15, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 0f + db $16, JUMPTABLE_8D24B_FUNCTION_11, $00 ; 10 + db $17, JUMPTABLE_8D24B_FUNCTION_12, $00 ; 11 + db $18, JUMPTABLE_8D24B_FUNCTION_12, $00 ; 12 + db $19, JUMPTABLE_8D24B_FUNCTION_13, $00 ; 13 + db $1a, JUMPTABLE_8D24B_FUNCTION_14, $00 ; 14 + db $1b, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 15 + db $1d, JUMPTABLE_8D24B_FUNCTION_15, $00 ; 16 + db $1e, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 17 + db $1d, JUMPTABLE_8D24B_FUNCTION_17, $00 ; 18 + db $1f, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 19 + db $24, JUMPTABLE_8D24B_FUNCTION_19, $00 ; 1a + db $25, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 1b + db $20, JUMPTABLE_8D24B_FUNCTION_13, $00 ; 1c + db $26, JUMPTABLE_8D24B_FUNCTION_1A, $00 ; 1d + db $2d, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 1e + db $2e, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 1f + db $2f, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 20 + db $30, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 21 + db $31, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 22 + db $32, JUMPTABLE_8D24B_FUNCTION_1B, $00 ; 23 + db $33, JUMPTABLE_8D24B_FUNCTION_1C, $00 ; 24 + db $34, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 25 + db $35, JUMPTABLE_8D24B_FUNCTION_1D, $00 ; 26 + db $37, JUMPTABLE_8D24B_FUNCTION_1E, $00 ; 27 + db $38, JUMPTABLE_8D24B_FUNCTION_1E, $00 ; 28 + db $39, JUMPTABLE_8D24B_FUNCTION_20, $00 ; 29 + db $3f, JUMPTABLE_8D24B_FUNCTION_21, $00 ; 2a + db $3e, JUMPTABLE_8D24B_FUNCTION_22, $00 ; 2b + db $40, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 2c +; 8d24b + + +Function8d24b: ; 8d24b + ld hl, $2 ; field 2, see the second column in the above table + add hl, bc + ld e, [hl] + ld d, 0 + ld hl, .Jumptable +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 8d25b + + +.Jumptable: ; 8d25b (23:525b) + dw .zero ; town map + dw .one ; bouncing mon icons + dw .two + dw .three + dw .four + dw .five + dw .six ; Game Freak logo + dw .seven + dw .eight + dw .nine + dw .ten + dw .eleven + dw .twelve + dw .thirteen + dw .fourteen + dw .fifteen + dw .sixteen + dw .seventeen + dw .eighteen + dw .nineteen + dw .twenty + dw .twentyone + dw .twentytwo ; flying sprite + dw .twentythree ; flying leaves + dw .twentyfour + dw .twentyfive + dw .twentysix + dw .twentyseven + dw .twentyeight + dw .twentynine ; intro suicune + dw .thirty ; intro pichu wooper + dw .thirtyone + dw .thirtytwo ; intro unown + dw .thirtythree ; intro unown F with suicune leaping up + dw .thirtyfour ; intro suicune facing away from us + + +.zero: ; 8d2a1 (23:52a1) + ret - inc de - ld hl, UsedSprites + 1 +.one: ; 8d2a2 (23:52a2) + ld a, [MenuSelection2] + ld hl, 0 + add hl, bc + cp [hl] + jr z, .two + ld hl, $4 + add hl, bc + ld [hl], $10 + ld hl, $7 + add hl, bc + ld [hl], $0 + ret -.CheckSprite - push bc - push de - push hl +.two: ; 8d2b9 (23:52b9) + ld hl, $4 + add hl, bc + ld [hl], $18 + ld hl, $c + add hl, bc + ld a, [hl] + ld d, a + inc [hl] + and $f + ret nz + ld hl, $d + add hl, bc + ld e, [hl] + ld hl, $7 + add hl, bc + ld a, d + and $10 ; bit 4 + jr z, .asm_8d2df + ld a, e + and a + jr z, .asm_8d2e6 + cp $1 + jr z, .asm_8d2e2 +.asm_8d2df + xor a + ld [hl], a + ret +.asm_8d2e2 + ld a, $ff + ld [hl], a + ret +.asm_8d2e6 + ld a, $fe + ld [hl], a + ret -.CheckFollowing - ld a, [de] +.three: ; 8d2ea (23:52ea) + ld a, [MenuSelection2] + ld hl, 0 + add hl, bc cp [hl] - jr nc, .loop + jr z, .asm_8d2fb + ld hl, $4 + add hl, bc + ld [hl], $10 + ret +.asm_8d2fb + ld hl, $4 + add hl, bc + ld [hl], $18 + ret -; Swap the two sprites. +.four: ; 8d302 (23:5302) + call .anonymous_jumptable + jp [hl] +; 8d306 (23:5306) - ld b, a +; Anonymous jumptable (see .anonymous_jumptable) + dw .four_zero + dw .four_one +; 8d30a + +.four_zero: ; 8d30a + call .asm_8d6d8 + ld hl, 0 + add hl, bc ld a, [hl] - ld [hl], b - ld [de], a - dec de - dec hl - ld a, [de] - ld b, a + ld hl, $d + add hl, bc + and $3 + ld [hl], a + inc [hl] + swap a + ld hl, $c + add hl, bc + ld [hl], a + +.four_one: ; 8d321 + ld hl, $4 + add hl, bc ld a, [hl] - ld [hl], b - ld [de], a - inc de - inc hl + cp $a4 + jr nc, .asm_8d356 + ld hl, $d + add hl, bc + add $4 + ld hl, $4 + add hl, bc + ld [hl], a + ld hl, $5 + add hl, bc + inc [hl] + ld hl, $d + add hl, bc + ld a, [hl] + sla a + sla a + ld d, $2 + ld hl, $c + add hl, bc + ld a, [hl] + add $3 + ld [hl], a + call .asm_8d6de + ld hl, $7 + add hl, bc + ld [hl], a + ret -; Keep doing this until everything's in order. +.asm_8d356 + call Function8d036 + ret +; 8d35a -.loop -rept 2 - dec de -endr - dec c - jr nz, .CheckFollowing +.twentyfive: ; 8d35a (23:535a) + ld hl, $c + add hl, bc + ld a, [hl] + inc a + ld [hl], a + ld d, $2 + call .asm_8d6de + ld hl, $7 + add hl, bc + ld [hl], a + ret - pop hl +.five: ; 8d36c (23:536c) + callab Function11a3b + ret + +.twelve: ; 8d373 (23:5373) + callab Function120c1 + ret + +.six: ; 8d37a (23:537a) + callab GameFreakLogoJumper + ret + +.seven: ; 8d381 (23:5381) + ld hl, $c + add hl, bc + ld a, [hl] + and a + jr z, .asm_8d3ba rept 2 - inc hl + dec [hl] endr + ld d, a + and $1f + jr nz, .asm_8d395 + ld hl, $d + add hl, bc + dec [hl] +.asm_8d395 + ld hl, $b + add hl, bc + ld a, [hl] + push af + push de + call .asm_8d6de + ld hl, $7 + add hl, bc + ld [hl], a pop de - pop bc - dec c - jr nz, .CheckSprite - -.quit + pop af + call .asm_8d6e2 + ld hl, $6 + add hl, bc + ld [hl], a + ld hl, $d + add hl, bc + ld a, [hl] + ld hl, $b + add hl, bc + add [hl] + ld [hl], a + ret +.asm_8d3ba + ld a, $1 + ld [wcf64], a + call Function8d036 ret -; 14355 +.eight: ; 8d3c3 (23:53c3) + ld hl, $c + add hl, bc + ld a, [hli] + or [hl] + jr z, .asm_8d41e + ld hl, $f + add hl, bc + ld d, [hl] + ld hl, $b + add hl, bc + ld a, [hl] + push af + push de + call .asm_8d6de + ld hl, $7 + add hl, bc + ld [hl], a + pop de + pop af + call .asm_8d6e2 + ld hl, $6 + add hl, bc + ld [hl], a + ld hl, $c + add hl, bc + ld e, [hl] + inc hl + ld d, [hl] + ld hl, $e + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + add hl, de + ld e, l + ld d, h + ld hl, $e + add hl, bc + ld [hl], e + inc hl + ld [hl], d + ld hl, $c + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld de, $fff0 + add hl, de + ld e, l + ld d, h + ld hl, $c + add hl, bc + ld [hl], e + inc hl + ld [hl], d + ld hl, $b + add hl, bc + ld a, [hl] + xor $20 + ld [hl], a + ret +.asm_8d41e + call Function8d036 + ret -ArrangeUsedSprites: ; 14355 -; Get the length of each sprite and space them out in VRAM. -; Crystal introduces a second table in VRAM bank 0. +.nine: ; 8d422 (23:5422) + callab Function9321d + ret - ld hl, UsedSprites - ld c, SPRITE_GFX_LIST_CAPACITY - ld b, 0 -.FirstTableLength -; Keep going until the end of the list. - ld a, [hli] - and a - jr z, .quit +.ten: ; 8d429 (23:5429) + callab Function932ac + ld hl, wcf64 + ld a, [hl] + cp $2 + ret nz + ld [hl], $3 + ld a, $f + call Function8d120 + ret +.eleven: ; 8d43e (23:543e) + ld hl, $b + add hl, bc ld a, [hl] - call GetSpriteLength + dec [hl] + ld e, a + and $1 + jr z, .asm_8d462 + ld hl, $4 + add hl, bc + ld a, [hl] + cp $78 + jr c, .asm_8d461 + call Function8d036 + ld a, $4 + ld [wcf64], a + ld de, SFX_PLACE_PUZZLE_PIECE_DOWN + call PlaySFX + ret +.asm_8d461 + inc [hl] +.asm_8d462 + ld a, e + ld d, $20 + call .asm_8d6de + ld hl, $7 + add hl, bc + ld [hl], a + ret -; Spill over into the second table after $80 tiles. - add b - cp $80 - jr z, .loop - jr nc, .SecondTable +.thirteen: ; 8d46e (23:546e) + callab Functione00ed + ret -.loop - ld [hl], b - inc hl - ld b, a +.fifteen: ; 8d475 (23:5475) + callab Function90d41 + ret -; Assumes the next table will be reached before c hits 0. - dec c - jr nz, .FirstTableLength - -.SecondTable -; The second tile table starts at tile $80. - ld b, $80 - dec hl -.SecondTableLength -; Keep going until the end of the list. - ld a, [hli] - and a - jr z, .quit +.fourteen: ; 8d47c (23:547c) + callab Functione21a1 + ret + +.sixteen: ; 8d483 (23:5483) + call .anonymous_jumptable + jp [hl] +; 8d487 (23:5487) + +; Anonymous jumptable (see .anonymous_jumptable) + dw .sixteen_zero + dw .sixteen_one + dw .sixteen_two + dw .sixteen_three + dw .sixteen_four + dw .sixteen_five +; 8d493 + +.sixteen_zero: ; 8d493 + ld a, $14 + call Function8d120 + ld hl, $b + add hl, bc + ld [hl], $2 + ld hl, $c + add hl, bc + ld [hl], $20 + ret +; 8d4a5 +.sixteen_two: ; 8d4a5 + ld hl, $c + add hl, bc ld a, [hl] - call GetSpriteLength + and a + jr z, .asm_8d4af + dec [hl] + ret -; There are only two tables, so don't go any further than that. - add b - jr c, .quit +.asm_8d4af + call .asm_8d6d8 + ld hl, $c + add hl, bc + ld [hl], $40 - ld [hl], b - ld b, a - inc hl +.sixteen_three: ; 8d4b8 + ld hl, $c + add hl, bc + ld a, [hl] + cp $30 + jr c, .asm_8d4cd + dec [hl] + ld d, $28 + call .asm_8d6de + ld hl, $7 + add hl, bc + ld [hl], a + ret - dec c - jr nz, .SecondTableLength +.asm_8d4cd + ld de, SFX_GOT_SAFARI_BALLS + call PlaySFX + jr .sixteen_five +; 8d4d5 -.quit +.sixteen_one: ; 8d4d5 + ld hl, $b + add hl, bc + ld [hl], $4 + ld hl, $c + add hl, bc + ld [hl], $30 + ld hl, $d + add hl, bc + ld [hl], $24 ret -; 14386 - +; 8d4e8 -GetSpriteLength: ; 14386 -; Return the length of sprite type a in tiles. +.sixteen_four: ; 8d4e8 + ld hl, $d + add hl, bc + ld a, [hl] + and a + jr z, .asm_8d51c + ld d, a + ld hl, $c + add hl, bc + ld a, [hl] + call Function8e72c + ld hl, $7 + add hl, bc + ld [hl], a + ld hl, $c + add hl, bc + inc [hl] + ld a, [hl] + and $3f + ret nz + ld hl, $c + add hl, bc + ld [hl], $20 + ld hl, $d + add hl, bc + ld a, [hl] + sub $c + ld [hl], a + ld de, SFX_SWITCH_POKEMON + call PlaySFX + ret - cp WALKING_SPRITE - jr z, .AnyDirection - cp STANDING_SPRITE - jr z, .AnyDirection - cp STILL_SPRITE - jr z, .OneDirection +.asm_8d51c + xor a + ld hl, $7 + add hl, bc + ld [hl], a + call .asm_8d6d8 + ret - ld a, 12 +.sixteen_five: ; 8d526 + call Function8d036 ret +; 8d52a -.AnyDirection - ld a, 12 +.seventeen: ; 8d52a (23:552a) + ld hl, $4 + add hl, bc + ld a, [hl] +rept 2 + inc [hl] +endr + cp $b0 + jr nc, .asm_8d53f + and $3 + ret nz + ld de, SFX_POKEBALLS_PLACED_ON_TABLE + call PlaySFX ret -.OneDirection - ld a, 4 +.asm_8d53f + call Function8d036 ret -; 1439b +.eighteen: ; 8d543 (23:5543) + callab Function29676 + ret -Function1439b: ; 1439b - ld hl, UsedSprites - ld c, SPRITE_GFX_LIST_CAPACITY -.loop - ld a, [wSpriteFlags] - res 5, a - ld [wSpriteFlags], a - ld a, [hli] - and a - jr z, .done - ld [hUsedSpriteIndex], a - ld a, [hli] - ld [hUsedSpriteTile], a - bit 7, a - jr z, .dont_set - ld a, [wSpriteFlags] - set 5, a - ld [wSpriteFlags], a - -.dont_set - push bc - push hl - call Function143c8 - pop hl - pop bc - dec c - jr nz, .loop +.nineteen: ; 8d54a (23:554a) + ld hl, $c + add hl, bc + ld a, [hl] + cp $80 + jr nc, .asm_8d574 + ld d, a + add $8 + ld [hl], a + ld hl, $b + add hl, bc + ld a, [hl] + xor $20 + ld [hl], a + push af + push de + call .asm_8d6de + ld hl, $7 + add hl, bc + ld [hl], a + pop de + pop af + call .asm_8d6e2 + ld hl, $6 + add hl, bc + ld [hl], a + ret +.asm_8d574 + call Function8d036 + ret -.done +.twenty: ; 8d578 (23:5578) + callab Function91640 ret -; 143c8 -Function143c8: ; 143c8 - ld a, [hUsedSpriteIndex] - call SafeGetSprite - ld a, [hUsedSpriteTile] - call .GetTileAddr - push hl +.twentyone: ; 8d57f (23:557f) + ld hl, $d + add hl, bc + ld e, [hl] + inc hl + ld d, [hl] + ld hl, $80 + add hl, de + ld e, l + ld d, h + ld hl, $d + add hl, bc + ld [hl], e + inc hl + ld [hl], d + ld hl, $c + add hl, bc + ld a, [hl] +rept 3 + inc [hl] +endr + push af push de - push bc - ld a, [wSpriteFlags] - bit 7, a - jr nz, .skip - call .CopyToVram + call .asm_8d6de + ld hl, $7 + add hl, bc + ld [hl], a + pop de + pop af + call .asm_8d6e2 + ld hl, $6 + add hl, bc + ld [hl], a + ret -.skip - pop bc - ld l, c - ld h, $0 -rept 4 - add hl, hl +.twentytwo: ; 8d5b0 (23:55b0) + ld hl, $5 + add hl, bc + ld a, [hl] + and a + ret z + ld hl, $d + add hl, bc + ld a, [hl] + inc [hl] + cp $40 + ret c + ld hl, $5 + add hl, bc +rept 2 + dec [hl] endr - pop de - add hl, de - ld d, h - ld e, l - pop hl - ld a, [wSpriteFlags] - bit 5, a - jr nz, .done - bit 6, a - jr nz, .done - ld a, [hUsedSpriteIndex] - call _DoesSpriteHaveFacings - jr c, .done - ld a, h + ld hl, $f + add hl, bc + ld a, [hl] + ld d, a + cp $40 + jr nc, .asm_8d5d3 add $8 - ld h, a - call .CopyToVram + ld [hl], a +.asm_8d5d3 + ld hl, $e + add hl, bc + ld a, [hl] + inc [hl] + call .asm_8d6e2 + ld hl, $6 + add hl, bc + ld [hl], a + ret -.done +.twentythree: ; 8d5e2 (23:55e2) + ld hl, $4 + add hl, bc + ld a, [hl] + cp $b8 + jr nc, .asm_8d603 +rept 2 + inc [hl] +endr + ld hl, $5 + add hl, bc + dec [hl] + ld d, $40 + ld hl, $c + add hl, bc + ld a, [hl] + inc [hl] + call .asm_8d6e2 + ld hl, $6 + add hl, bc + ld [hl], a + ret +.asm_8d603 + call Function8d036 ret -; 14406 -.GetTileAddr: ; 14406 -; Return the address of tile (a) in (hl). - and $7f - ld l, a - ld h, 0 -rept 4 - add hl, hl +.twentyfour: ; 8d607 (23:5607) + ld hl, $5 + add hl, bc + ld a, [hl] + cp $54 + ret z + ld hl, $5 + add hl, bc +rept 2 + inc [hl] endr - ld a, l - add VTiles0 % $100 - ld l, a - ld a, h - adc VTiles0 / $100 - ld h, a + ld hl, $f + add hl, bc + ld a, [hl] + ld d, a + and a + jr z, .asm_8d621 + sub $2 + ld [hl], a +.asm_8d621 + ld hl, $e + add hl, bc + ld a, [hl] + inc [hl] + call .asm_8d6e2 + ld hl, $6 + add hl, bc + ld [hl], a ret -; 14418 -.CopyToVram: ; 14418 - ld a, [rVBK] - push af - ld a, [wSpriteFlags] - bit 5, a - ld a, $1 - jr z, .bankswitch - ld a, $0 +.twentyseven: ; 8d630 (23:5630) + callba Function108bc7 + ret -.bankswitch - ld [rVBK], a - call Get2bpp +.twentyeight: ; 8d637 (23:5637) + callba Function108be0 + ret + +.twentynine: ; 8d63e (23:563e) + ld a, [wcf65] + and a + jr nz, .asm_8d645 + ret +.asm_8d645 + ld hl, $7 + add hl, bc + ld [hl], $0 + ld hl, $d + add hl, bc + ld a, [hl] + add $2 + ld [hl], a + xor $ff + inc a + ld d, $20 + call .asm_8d6de + ld hl, $7 + add hl, bc + ld [hl], a + ld a, $36 + call Function8d120 + ret + +.thirty: ; 8d666 (23:5666) + ld hl, $c + add hl, bc + ld a, [hl] + cp $14 + jr nc, .asm_8d67f + add $2 + ld [hl], a + xor $ff + inc a + ld d, $20 + call .asm_8d6de + ld hl, $7 + add hl, bc + ld [hl], a +.asm_8d67f + ret + +.thirtytwo: ; 8d680 (23:5680) + ld hl, $b + add hl, bc + ld d, [hl] +rept 3 + inc [hl] +endr + ld hl, $c + add hl, bc + ld a, [hl] + push af + push de + call .asm_8d6de + ld hl, $7 + add hl, bc + ld [hl], a + pop de pop af - ld [rVBK], a + call .asm_8d6e2 + ld hl, $6 + add hl, bc + ld [hl], a ret -; 1442f -LoadEmote:: ; 1442f -; Get the address of the pointer to emote c. - ld a, c - ld bc, 6 - ld hl, EmotesPointers - call AddNTimes -; Load the emote address into de +.thirtythree: ; 8d6a2 (23:56a2) + ld a, [wcf64] + cp $40 + ret nz + ld a, $3d + call Function8d120 + ret + +.thirtyfour: ; 8d6ae (23:56ae) + ld hl, $5 + add hl, bc + ld a, [hl] + add $10 + ld [hl], a + ret + +.twentysix: ; 8d6b7 (23:56b7) + callba Function11d0b6 + ret + +.thirtyone: ; 8d6be (23:56be) + callba Function49aa2 + ret + +.anonymous_jumptable: ; 8d6c5 (23:56c5) + ld hl, [sp+$0] ld e, [hl] inc hl ld d, [hl] -; load the length of the emote (in tiles) into c - inc hl - ld c, [hl] - swap c -; load the emote pointer bank into b - inc hl - ld b, [hl] -; load the VRAM destination into hl - inc hl + inc de + ld hl, $b + add hl, bc + ld l, [hl] + ld h, $0 + add hl, hl + add hl, de ld a, [hli] ld h, [hl] ld l, a -; if the emote has a length of 0, do not proceed (error handling) - ld a, c + ret +; 8d6d8 (23:56d8) + +.asm_8d6d8: ; 8d6d8 + ld hl, $b + add hl, bc + inc [hl] + ret +; 8d6de + +.asm_8d6de: ; 8d6de (23:56de) + call Function8e72c + ret + +.asm_8d6e2: ; 8d6e2 (23:56e2) + call Function8e72a + ret +; 8d6e6 (23:56e6) + +Unknown_8d6e6: ; 8d6e6 + dw Unknown_8d76a + dw Unknown_8d76d + dw Unknown_8d772 + dw Unknown_8d777 + dw Unknown_8d77c + dw Unknown_8d781 + dw Unknown_8d786 + dw Unknown_8d7a6 + dw Unknown_8d7ab + dw Unknown_8d7b0 + dw Unknown_8d7b5 + dw Unknown_8d7d4 + dw Unknown_8d7d9 + dw Unknown_8d7e2 + dw Unknown_8d7eb + dw Unknown_8d7f4 + dw Unknown_8d7ff + dw Unknown_8d78b + dw Unknown_8d802 + dw Unknown_8d805 + dw Unknown_8d808 + dw Unknown_8d811 + dw Unknown_8d818 + dw Unknown_8d81d + dw Unknown_8d822 + dw Unknown_8d825 + dw Unknown_8d82c + dw Unknown_8d82f + dw Unknown_8d861 + dw Unknown_8d864 + dw Unknown_8d867 + dw Unknown_8d874 + dw Unknown_8d877 + dw Unknown_8d87a + dw Unknown_8d87d + dw Unknown_8d880 + dw Unknown_8d883 + dw Unknown_8d890 + dw Unknown_8d899 + dw Unknown_8d89c + dw Unknown_8d89f + dw Unknown_8d8a2 + dw Unknown_8d8a5 + dw Unknown_8d8a8 + dw Unknown_8d8ab + dw Unknown_8d794 + dw Unknown_8d79d + dw Unknown_8d8ae + dw Unknown_8d8cd + dw Unknown_8d8ec + dw Unknown_8d8f1 + dw Unknown_8d8f4 + dw Unknown_8d8f7 + dw Unknown_8d8fe + dw Unknown_8d907 + dw Unknown_8d90c + dw Unknown_8d913 + dw Unknown_8d916 + dw Unknown_8d91d + dw Unknown_8d924 + dw Unknown_8d92b + dw Unknown_8d932 + dw Unknown_8d93d + dw Unknown_8d940 + dw Unknown_8d943 + dw Unknown_8d948 +; 8d76a + +Unknown_8d76a: dw $2000 + db -1 +Unknown_8d76d: dw $0800, $0801 + db -2 +Unknown_8d772: dw $083d, $083e + db -2 +Unknown_8d777: dw $083f, $0840 + db -2 +Unknown_8d77c: dw $0400, $0401 + db -2 +Unknown_8d781: dw $043d, $043e + db -2 +Unknown_8d786: dw $043f, $0440 + db -2 +Unknown_8d78b: dw $0800, $0801, $0800, $4801 + db -2 +Unknown_8d794: dw $0863, $0864, $0863, $4864 + db -2 +Unknown_8d79d: dw $0865, $0866, $0865, $4866 + db -2 +Unknown_8d7a6: dw $011e, $011f + db -2 +Unknown_8d7ab: dw $0120, $01fd + db -2 +Unknown_8d7b0: dw $0121, $01fd + db -2 +Unknown_8d7b5: dw $0c81, $0182, $0183, $0482, $0c81, $0c82, $0483, $2084, $0385, $0386, $0487, $0488, $0489, $0a8a, $078b + db -1 +Unknown_8d7d4: dw $0323, $8323 + db -2 +Unknown_8d7d9: dw $0224, $0225, $0226, $0225 + db -2 +Unknown_8d7e2: dw $0727, $0728, $8727, $4728 + db -2 +Unknown_8d7eb: dw $0729, $072a, $0729, $072b + db -2 +Unknown_8d7f4: dw $0729, $072c, $072d, $072c, $0729 + db -1 +Unknown_8d7ff: dw $142e + db -1 +Unknown_8d802: dw $202f + db -1 +Unknown_8d805: dw $2030 + db -1 +Unknown_8d808: dw $0330, $0331, $0330, $4331 + db -2 +Unknown_8d811: dw $0432, $0433, $0434 + db -4 +Unknown_8d818: dw $0335, $0336 + db -2 +Unknown_8d81d: dw $0737, $0738 + db -2 +Unknown_8d822: dw $2039 + db -1 +Unknown_8d825: dw $023b, $023a, $023b + db -1 +Unknown_8d82c: dw $203c + db -1 +Unknown_8d82f: dw $0841, $0842, $0841, $4842 + db -2 + dw $0843, $0844 + db -2 + dw $0845, $0846 + db -2 + dw $0847, $0848 + db -2 + dw $0149, $4149, $c149, $8149 + db -2 + dw $204a + db -1 + dw $204b + db -1 + dw $204c + db -1 + dw $204d + db -1 + dw $034e, $03fd + db -2 +Unknown_8d861: dw $20fd + db -1 +Unknown_8d864: dw $204f + db -1 +Unknown_8d867: dw $0250, $1051, $01fd, $0152, $01fd, $0153 + db -4 +Unknown_8d874: dw $2054 + db -1 +Unknown_8d877: dw $2055 + db -1 +Unknown_8d87a: dw $6055 + db -1 +Unknown_8d87d: dw $a055 + db -1 +Unknown_8d880: dw $e055 + db -1 +Unknown_8d883: dw $0a56, $0957, $0a58, $0a59, $0958, $0a5a + db -2 +Unknown_8d890: dw $0250, $025b, $0250, $425b + db -2 +Unknown_8d899: dw $025c + db -1 +Unknown_8d89c: dw $025d + db -1 +Unknown_8d89f: dw $025e + db -1 +Unknown_8d8a2: dw $025f + db -1 +Unknown_8d8a5: dw $0260 + db -1 +Unknown_8d8a8: dw $0261 + db -1 +Unknown_8d8ab: dw $0262 + db -1 +Unknown_8d8ae: dw $0332, $0333, $0334, $0330, $0331, $0330, $4331, $0330, $0331, $0330, $4331, $0330, $0331, $0330, $4331 + db -1 +Unknown_8d8cd: dw $0330, $0331, $0330, $4331, $0330, $0331, $0330, $4331, $0330, $0331, $0330, $4331, $0332, $0333, $0334 + db -4 +Unknown_8d8ec: dw $0367, $0368 + db -2 +Unknown_8d8f1: dw $036c + db -1 +Unknown_8d8f4: dw $036d + db -1 +Unknown_8d8f7: dw $0269, $026a, $026b + db -4 +Unknown_8d8fe: dw $036e, $036f, $0370, $0371 + db -2 +Unknown_8d907: dw $0371, $076e + db -1 +Unknown_8d90c: dw $2072, $0773, $0774 + db -1 +Unknown_8d913: dw $0375 + db -1 +Unknown_8d916: dw $0376, $0377, $0778 + db -4 +Unknown_8d91d: dw $4376, $4377, $4778 + db -4 +Unknown_8d924: dw $8376, $8377, $8778 + db -4 +Unknown_8d92b: dw $c376, $c377, $c778 + db -4 +Unknown_8d932: dw $0379, $037a, $037b, $077c, $077d + db -1 +Unknown_8d93d: dw $037e + db -1 +Unknown_8d940: dw $00fd + db -1 +Unknown_8d943: dw $087f, $0880 + db -1 +Unknown_8d948: dw $487f, $4880 + db -1 +; 8d94d + +Unknown_8d94d: ; 8d94d + dbw $00, Unknown_8dd8a ; 00 + dbw $04, Unknown_8dd8a ; 01 + dbw $4c, Unknown_8daf1 ; 02 + dbw $5c, Unknown_8daf1 ; 03 + dbw $6c, Unknown_8daf6 ; 04 + dbw $6e, Unknown_8daf6 ; 05 + dbw $2d, Unknown_8ddf0 ; 06 + dbw $4d, Unknown_8ddf0 ; 07 + dbw $60, Unknown_8de09 ; 08 + dbw $00, Unknown_8de09 ; 09 + dbw $00, Unknown_8de09 ; 0a + dbw $06, Unknown_8de09 ; 0b + dbw $0c, Unknown_8de7e ; 0c + dbw $0d, Unknown_8daf1 ; 0d + dbw $00, Unknown_8dc53 ; 0e + dbw $04, Unknown_8dc53 ; 0f + dbw $08, Unknown_8dc53 ; 10 + dbw $40, Unknown_8dc53 ; 11 + dbw $44, Unknown_8dc53 ; 12 + dbw $48, Unknown_8dc53 ; 13 + dbw $4c, Unknown_8dc53 ; 14 + dbw $80, Unknown_8de87 ; 15 + dbw $85, Unknown_8de87 ; 16 + dbw $8a, Unknown_8de87 ; 17 + dbw $00, Unknown_8db29 ; 18 + dbw $01, Unknown_8db5c ; 19 + dbw $09, Unknown_8db9d ; 1a + dbw $10, Unknown_8dc94 ; 1b + dbw $29, Unknown_8dc94 ; 1c + dbw $42, Unknown_8dc94 ; 1d + dbw $f8, Unknown_8e17e ; 1e + dbw $fa, Unknown_8e17e ; 1f + dbw $00, Unknown_8deb2 ; 20 + dbw $00, Unknown_8dec3 ; 21 + dbw $00, Unknown_8deec ; 22 + dbw $0f, Unknown_8db07 ; 23 + dbw $11, Unknown_8daf1 ; 24 + dbw $12, Unknown_8daf1 ; 25 + dbw $13, Unknown_8daf1 ; 26 + dbw $00, Unknown_8df29 ; 27 + dbw $08, Unknown_8df29 ; 28 + dbw $10, Unknown_8df42 ; 29 + dbw $10, Unknown_8df5b ; 2a + dbw $10, Unknown_8df74 ; 2b + dbw $10, Unknown_8df8d ; 2c + dbw $10, Unknown_8dfa6 ; 2d + dbw $3a, Unknown_8daf1 ; 2e + dbw $00, Unknown_8dd8a ; 2f + dbw $00, Unknown_8db18 ; 30 + dbw $02, Unknown_8dd9b ; 31 + dbw $06, Unknown_8db5c ; 32 + dbw $0a, Unknown_8db5c ; 33 + dbw $0e, Unknown_8db5c ; 34 + dbw $12, Unknown_8db3a ; 35 + dbw $13, Unknown_8db3a ; 36 + dbw $00, Unknown_8dd8a ; 37 + dbw $04, Unknown_8dd8a ; 38 + dbw $10, Unknown_8db5c ; 39 + dbw $00, Unknown_8dd9b ; 3a + dbw $04, Unknown_8daf1 ; 3b + dbw $00, Unknown_8dfbf ; 3c + dbw $00, Unknown_8ddac ; 3d + dbw $00, Unknown_8ddbd ; 3e + dbw $00, Unknown_8ddce ; 3f + dbw $00, Unknown_8dddf ; 40 + dbw $00, Unknown_8dd9b ; 41 + dbw $04, Unknown_8dd9b ; 42 + dbw $00, Unknown_8dc2e ; 43 + dbw $30, Unknown_8dc2e ; 44 + dbw $03, Unknown_8dc2e ; 45 + dbw $33, Unknown_8dc2e ; 46 + dbw $06, Unknown_8dc2e ; 47 + dbw $36, Unknown_8dc2e ; 48 + dbw $09, Unknown_8dc2e ; 49 + dbw $39, Unknown_8dc2e ; 4a + dbw $0c, Unknown_8dfcc ; 4b + dbw $0c, Unknown_8dfe5 ; 4c + dbw $3c, Unknown_8daf1 ; 4d + dbw $3e, Unknown_8daf1 ; 4e + dbw $00, Unknown_8de9c ; 4f + dbw $00, Unknown_8dea1 ; 50 + dbw $00, Unknown_8dff6 ; 51 + dbw $00, Unknown_8e007 ; 52 + dbw $00, Unknown_8e018 ; 53 + dbw $00, Unknown_8daf1 ; 54 + dbw $01, Unknown_8daf1 ; 55 + dbw $00, Unknown_8e029 ; 56 + dbw $00, Unknown_8e076 ; 57 + dbw $00, Unknown_8e0b7 ; 58 + dbw $00, Unknown_8e0f4 ; 59 + dbw $00, Unknown_8e139 ; 5a + dbw $04, Unknown_8dea1 ; 5b + dbw $00, Unknown_8e183 ; 5c + dbw $00, Unknown_8e1b4 ; 5d + dbw $00, Unknown_8e1b9 ; 5e + dbw $00, Unknown_8e1ca ; 5f + dbw $00, Unknown_8e1eb ; 60 + dbw $00, Unknown_8e1f0 ; 61 + dbw $00, Unknown_8e1f9 ; 62 + dbw $00, Unknown_8e202 ; 63 + dbw $04, Unknown_8e202 ; 64 + dbw $00, Unknown_8e213 ; 65 + dbw $04, Unknown_8e213 ; 66 + dbw $20, Unknown_8e224 ; 67 + dbw $21, Unknown_8e224 ; 68 + dbw $22, Unknown_8e24b ; 69 + dbw $23, Unknown_8e25c ; 6a + dbw $27, Unknown_8e27d ; 6b + dbw $2a, Unknown_8e229 ; 6c + dbw $2a, Unknown_8e23a ; 6d + dbw $00, Unknown_8e2ae ; 6e + dbw $08, Unknown_8e33f ; 6f + dbw $60, Unknown_8e3b0 ; 70 + dbw $68, Unknown_8e429 ; 71 + dbw $00, Unknown_8e4a6 ; 72 + dbw $05, Unknown_8e4a6 ; 73 + dbw $0a, Unknown_8e4a6 ; 74 + dbw $50, Unknown_8e50b ; 75 + dbw $00, Unknown_8e54c ; 76 + dbw $01, Unknown_8e551 ; 77 + dbw $04, Unknown_8e55e ; 78 + dbw $00, Unknown_8db29 ; 79 + dbw $01, Unknown_8e57b ; 7a + dbw $03, Unknown_8e59c ; 7b + dbw $08, Unknown_8e5cd ; 7c + dbw $1c, Unknown_8e5cd ; 7d + dbw $80, Unknown_8e61e ; 7e + dbw $00, Unknown_8e66f ; 7f + dbw $04, Unknown_8e66f ; 80 + dbw $d0, Unknown_8e680 ; 81 + dbw $d3, Unknown_8e680 ; 82 + dbw $d6, Unknown_8e680 ; 83 + dbw $6c, Unknown_8e6a5 ; 84 + dbw $68, Unknown_8e6a5 ; 85 + dbw $64, Unknown_8e6a5 ; 86 + dbw $60, Unknown_8e6a5 ; 87 + dbw $0c, Unknown_8e6a5 ; 88 + dbw $08, Unknown_8e6a5 ; 89 + dbw $04, Unknown_8e6a5 ; 8a + dbw $00, Unknown_8e6a5 ; 8b +; 8daf1 + + +Unknown_8daf1: ; 8daf1 + db 1 + db $fc, $fc, $00, $00 +; 8daf6 + +Unknown_8daf6: ; 8daf6 + db 4 + db $f8, $f8, $00, $00 + db $f8, $00, $01, $00 + db $00, $f8, $10, $00 + db $00, $00, $11, $00 +; 8db07 + +Unknown_8db07: ; 8db07 + db 4 + db $f8, $f8, $00, $00 + db $f8, $00, $00, $20 + db $00, $f8, $01, $00 + db $00, $00, $01, $20 +; 8db18 + +Unknown_8db18: ; 8db18 + db 4 + db $f8, $f8, $00, $80 + db $f8, $00, $00, $a0 + db $00, $f8, $01, $80 + db $00, $00, $01, $a0 +; 8db29 + +Unknown_8db29: ; 8db29 + db 4 + db $f8, $f8, $00, $00 + db $f8, $00, $00, $20 + db $00, $f8, $00, $40 + db $00, $00, $00, $60 +; 8db3a + +Unknown_8db3a: ; 8db3a + db 4 + db $f8, $f8, $00, $07 + db $f8, $00, $00, $27 + db $00, $f8, $00, $47 + db $00, $00, $00, $67 +; 8db4b + +; 8db4b + db 4 + db $f8, $f8, $00, $80 + db $f8, $00, $00, $a0 + db $00, $f8, $00, $c0 + db $00, $00, $00, $e0 +; 8db5c + +Unknown_8db5c: ; 8db5c + db 16 + db $f0, $f0, $00, $00 + db $f0, $f8, $01, $00 + db $f8, $f0, $02, $00 + db $f8, $f8, $03, $00 + db $f0, $00, $01, $20 + db $f0, $08, $00, $20 + db $f8, $00, $03, $20 + db $f8, $08, $02, $20 + db $00, $f0, $02, $40 + db $00, $f8, $03, $40 + db $08, $f0, $00, $40 + db $08, $f8, $01, $40 + db $00, $00, $03, $60 + db $00, $08, $02, $60 + db $08, $00, $01, $60 + db $08, $08, $00, $60 +; 8db9d + +Unknown_8db9d: ; 8db9d + db 36 + db $e8, $e8, $00, $00 + db $e8, $f0, $01, $00 + db $e8, $f8, $02, $00 + db $f0, $e8, $03, $00 + db $f0, $f0, $04, $00 + db $f0, $f8, $05, $00 + db $f8, $e8, $06, $00 + db $f8, $f0, $05, $00 + db $f8, $f8, $05, $00 + db $e8, $00, $02, $20 + db $e8, $08, $01, $20 + db $e8, $10, $00, $20 + db $f0, $00, $05, $20 + db $f0, $08, $04, $20 + db $f0, $10, $03, $20 + db $f8, $00, $05, $20 + db $f8, $08, $05, $20 + db $f8, $10, $06, $20 + db $00, $e8, $06, $40 + db $00, $f0, $05, $40 + db $00, $f8, $05, $40 + db $08, $e8, $03, $40 + db $08, $f0, $04, $40 + db $08, $f8, $05, $40 + db $10, $e8, $00, $40 + db $10, $f0, $01, $40 + db $10, $f8, $02, $40 + db $00, $00, $05, $60 + db $00, $08, $05, $60 + db $00, $10, $06, $60 + db $08, $00, $05, $60 + db $08, $08, $04, $60 + db $08, $10, $03, $60 + db $10, $00, $02, $60 + db $10, $08, $01, $60 + db $10, $10, $00, $60 +; 8dc2e + +Unknown_8dc2e: ; 8dc2e + db 9 + db $f4, $f4, $00, $00 + db $f4, $fc, $01, $00 + db $f4, $04, $02, $00 + db $fc, $f4, $10, $00 + db $fc, $fc, $11, $00 + db $fc, $04, $12, $00 + db $04, $f4, $20, $00 + db $04, $fc, $21, $00 + db $04, $04, $22, $00 +; 8dc53 + +Unknown_8dc53: ; 8dc53 + db 16 + db $f0, $f0, $00, $00 + db $f0, $f8, $01, $00 + db $f0, $00, $02, $00 + db $f0, $08, $03, $00 + db $f8, $f0, $10, $00 + db $f8, $f8, $11, $00 + db $f8, $00, $12, $00 + db $f8, $08, $13, $00 + db $00, $f0, $20, $00 + db $00, $f8, $21, $00 + db $00, $00, $22, $00 + db $00, $08, $23, $00 + db $08, $f0, $30, $00 + db $08, $f8, $31, $00 + db $08, $00, $32, $00 + db $08, $08, $33, $00 +; 8dc94 + +Unknown_8dc94: ; 8dc94 + db 25 + db $ec, $ec, $00, $00 + db $f4, $ec, $01, $00 + db $fc, $ec, $02, $00 + db $04, $ec, $03, $00 + db $0c, $ec, $04, $00 + db $ec, $f4, $05, $00 + db $f4, $f4, $06, $00 + db $fc, $f4, $07, $00 + db $04, $f4, $08, $00 + db $0c, $f4, $09, $00 + db $ec, $fc, $0a, $00 + db $f4, $fc, $0b, $00 + db $fc, $fc, $0c, $00 + db $04, $fc, $0d, $00 + db $0c, $fc, $0e, $00 + db $ec, $04, $0f, $00 + db $f4, $04, $10, $00 + db $fc, $04, $11, $00 + db $04, $04, $12, $00 + db $0c, $04, $13, $00 + db $ec, $0c, $14, $00 + db $f4, $0c, $15, $00 + db $fc, $0c, $16, $00 + db $04, $0c, $17, $00 + db $0c, $0c, $18, $00 +; 8dcf9 + +; 8dcf9 + db 36 + db $e8, $e8, $00, $00 + db $e8, $f0, $01, $00 + db $e8, $f8, $02, $00 + db $e8, $00, $03, $00 + db $e8, $08, $04, $00 + db $e8, $10, $05, $00 + db $f0, $e8, $06, $00 + db $f0, $f0, $07, $00 + db $f0, $f8, $08, $00 + db $f0, $00, $09, $00 + db $f0, $08, $0a, $00 + db $f0, $10, $0b, $00 + db $f8, $e8, $0c, $00 + db $f8, $f0, $0d, $00 + db $f8, $f8, $0e, $00 + db $f8, $00, $0f, $00 + db $f8, $08, $10, $00 + db $f8, $10, $11, $00 + db $00, $e8, $12, $00 + db $00, $f0, $13, $00 + db $00, $f8, $14, $00 + db $00, $00, $15, $00 + db $00, $08, $16, $00 + db $00, $10, $17, $00 + db $08, $e8, $18, $00 + db $08, $f0, $19, $00 + db $08, $f8, $1a, $00 + db $08, $00, $1b, $00 + db $08, $08, $1c, $00 + db $08, $10, $1d, $00 + db $10, $e8, $1e, $00 + db $10, $f0, $1f, $00 + db $10, $f8, $20, $00 + db $10, $00, $21, $00 + db $10, $08, $22, $00 + db $10, $10, $23, $00 +; 8dd8a + +Unknown_8dd8a: ; 8dd8a + db 4 + db $f8, $f8, $00, $00 + db $f8, $00, $01, $00 + db $00, $f8, $02, $00 + db $00, $00, $03, $00 +; 8dd9b + +Unknown_8dd9b: ; 8dd9b + db 4 + db $f8, $f8, $00, $80 + db $f8, $00, $01, $80 + db $00, $f8, $02, $80 + db $00, $00, $03, $80 +; 8ddac + +Unknown_8ddac: ; 8ddac + db 4 + db $f8, $f8, $00, $00 + db $f8, $00, $01, $00 + db $00, $f8, $08, $00 + db $00, $00, $03, $00 +; 8ddbd + +Unknown_8ddbd: ; 8ddbd + db 4 + db $f8, $f8, $04, $00 + db $f8, $00, $05, $00 + db $00, $f8, $08, $00 + db $00, $00, $07, $00 +; 8ddce + +Unknown_8ddce: ; 8ddce + db 4 + db $f8, $f8, $00, $00 + db $f8, $00, $01, $00 + db $00, $f8, $09, $00 + db $00, $00, $03, $00 +; 8dddf + +Unknown_8dddf: ; 8dddf + db 4 + db $f8, $f8, $04, $00 + db $f8, $00, $05, $00 + db $00, $f8, $09, $00 + db $00, $00, $07, $00 +; 8ddf0 + +Unknown_8ddf0: ; 8ddf0 + db 6 + db $f8, $f4, $00, $01 + db $f8, $fc, $01, $01 + db $f8, $04, $02, $01 + db $00, $f4, $10, $01 + db $00, $fc, $11, $01 + db $00, $04, $12, $01 +; 8de09 + +Unknown_8de09: ; 8de09 + db 29 + db $e8, $e8, $00, $00 + db $e8, $f0, $01, $00 + db $e8, $f8, $02, $00 + db $e8, $00, $03, $00 + db $f0, $e8, $10, $00 + db $f0, $f0, $11, $00 + db $f0, $f8, $12, $00 + db $f0, $00, $13, $00 + db $f8, $e8, $20, $00 + db $f8, $f0, $21, $00 + db $f8, $f8, $22, $00 + db $f8, $00, $23, $00 + db $f8, $08, $24, $00 + db $00, $e8, $30, $80 + db $00, $f0, $31, $80 + db $00, $f8, $32, $80 + db $00, $00, $33, $80 + db $00, $08, $34, $80 + db $08, $e8, $40, $80 + db $08, $f0, $41, $80 + db $08, $f8, $42, $80 + db $08, $00, $43, $80 + db $08, $08, $44, $80 + db $08, $10, $45, $80 + db $10, $f0, $51, $80 + db $10, $f8, $52, $80 + db $10, $00, $53, $80 + db $10, $08, $54, $80 + db $10, $10, $55, $80 +; 8de7e + +Unknown_8de7e: ; 8de7e + db 2 + db $f8, $fc, $00, $00 + db $00, $fc, $10, $00 +; 8de87 + +Unknown_8de87: ; 8de87 + db 5 + db $f0, $18, $00, $00 + db $f0, $20, $01, $00 + db $f8, $10, $02, $00 + db $f8, $18, $03, $00 + db $00, $10, $04, $00 +; 8de9c + +Unknown_8de9c: ; 8de9c + db 1 + db $fc, $fc, $00, $06 +; 8dea1 + +Unknown_8dea1: ; 8dea1 + db 4 + db $f8, $f8, $00, $06 + db $f8, $00, $01, $06 + db $00, $f8, $02, $06 + db $00, $00, $03, $06 +; 8deb2 + +Unknown_8deb2: ; 8deb2 + db 4 + db $ff, $ff, $00, $00 + db $ff, $00, $00, $20 + db $00, $ff, $00, $40 + db $00, $00, $00, $60 +; 8dec3 + +Unknown_8dec3: ; 8dec3 + db 10 + db $ff, $00, $00, $00 + db $ff, $08, $01, $00 + db $ff, $10, $01, $00 + db $ff, $18, $01, $00 + db $ff, $20, $00, $20 + db $00, $00, $00, $40 + db $00, $08, $01, $40 + db $00, $10, $01, $40 + db $00, $18, $01, $40 + db $00, $20, $00, $60 +; 8deec + +Unknown_8deec: ; 8deec + db 15 + db $ec, $f4, $00, $11 + db $ec, $fc, $01, $11 + db $ec, $04, $02, $11 + db $f4, $f4, $03, $11 + db $f4, $fc, $04, $11 + db $f4, $04, $05, $11 + db $fc, $f4, $06, $11 + db $fc, $fc, $07, $11 + db $fc, $04, $08, $11 + db $04, $f4, $09, $11 + db $04, $fc, $0a, $11 + db $04, $04, $0b, $11 + db $0c, $f4, $0c, $11 + db $0c, $fc, $0d, $11 + db $0c, $04, $0e, $11 +; 8df29 + +Unknown_8df29: ; 8df29 + db 6 + db $f4, $f4, $00, $15 + db $f4, $fc, $02, $15 + db $f4, $04, $00, $35 + db $04, $f4, $04, $15 + db $04, $fc, $06, $15 + db $04, $04, $04, $35 +; 8df42 + +Unknown_8df42: ; 8df42 + db 6 + db $f4, $f4, $00, $16 + db $f4, $fc, $02, $16 + db $f4, $04, $04, $16 + db $04, $f4, $06, $16 + db $04, $fc, $08, $16 + db $04, $04, $0a, $16 +; 8df5b + +Unknown_8df5b: ; 8df5b + db 6 + db $f4, $f4, $00, $16 + db $f4, $fc, $02, $16 + db $f4, $04, $04, $16 + db $04, $f4, $0c, $16 + db $04, $fc, $0e, $16 + db $04, $04, $10, $16 +; 8df74 + +Unknown_8df74: ; 8df74 + db 6 + db $f4, $f4, $00, $16 + db $f4, $fc, $02, $16 + db $f4, $04, $04, $16 + db $04, $f4, $12, $16 + db $04, $fc, $14, $16 + db $04, $04, $16, $16 +; 8df8d + +Unknown_8df8d: ; 8df8d + db 6 + db $f4, $f4, $00, $16 + db $f4, $fc, $02, $16 + db $f4, $04, $04, $16 + db $04, $f4, $18, $16 + db $04, $fc, $1a, $16 + db $04, $04, $1c, $16 +; 8dfa6 + +Unknown_8dfa6: ; 8dfa6 + db 6 + db $f4, $f4, $1e, $16 + db $f4, $fc, $20, $16 + db $f4, $04, $22, $16 + db $04, $f4, $24, $16 + db $04, $fc, $26, $16 + db $04, $04, $28, $16 +; 8dfbf + +Unknown_8dfbf: ; 8dfbf + db 3 + db $f4, $fc, $00, $10 + db $fc, $fc, $00, $10 + db $04, $fc, $00, $10 +; 8dfcc + +Unknown_8dfcc: ; 8dfcc + db 6 + db $00, $00, $00, $00 + db $00, $08, $01, $00 + db $00, $10, $01, $00 + db $00, $18, $01, $00 + db $00, $20, $02, $00 + db $00, $28, $03, $00 +; 8dfe5 + +Unknown_8dfe5: ; 8dfe5 + db 4 + db $00, $00, $00, $00 + db $00, $08, $01, $00 + db $00, $10, $02, $00 + db $00, $18, $03, $00 +; 8dff6 + +Unknown_8dff6: ; 8dff6 + db 4 + db $f8, $f6, $00, $06 + db $f8, $02, $01, $06 + db $00, $f6, $02, $06 + db $00, $02, $03, $06 +; 8e007 + +Unknown_8e007: ; 8e007 + db 4 + db $f8, $f4, $00, $06 + db $f8, $04, $01, $06 + db $00, $f4, $02, $06 + db $00, $04, $03, $06 +; 8e018 + +Unknown_8e018: ; 8e018 + db 4 + db $f8, $f0, $00, $06 + db $f8, $08, $01, $06 + db $00, $f0, $02, $06 + db $00, $08, $03, $06 +; 8e029 + +Unknown_8e029: ; 8e029 + db 19 + db $f8, $e0, $00, $00 + db $f0, $e8, $02, $00 + db $00, $e8, $04, $00 + db $e8, $f0, $06, $00 + db $f8, $f0, $08, $00 + db $08, $f0, $0a, $00 + db $e8, $f8, $0c, $00 + db $f8, $f8, $0e, $00 + db $08, $f8, $10, $00 + db $e8, $00, $12, $00 + db $f8, $00, $14, $00 + db $08, $00, $16, $00 + db $e8, $08, $18, $00 + db $f8, $08, $1a, $00 + db $08, $08, $1c, $00 + db $f8, $10, $1e, $00 + db $08, $10, $20, $00 + db $f0, $18, $22, $00 + db $00, $18, $24, $00 +; 8e076 + +Unknown_8e076: ; 8e076 + db 16 + db $f8, $e0, $00, $00 + db $f0, $e8, $02, $00 + db $00, $e8, $04, $00 + db $f8, $f0, $26, $00 + db $08, $f0, $0a, $00 + db $e8, $f8, $28, $00 + db $f8, $f8, $2a, $00 + db $08, $f8, $10, $00 + db $f8, $00, $2c, $00 + db $08, $00, $16, $00 + db $f8, $08, $30, $00 + db $08, $08, $1c, $00 + db $f8, $10, $1e, $00 + db $08, $10, $20, $00 + db $f0, $18, $22, $00 + db $00, $18, $24, $00 +; 8e0b7 + +Unknown_8e0b7: ; 8e0b7 + db 15 + db $f8, $e0, $00, $00 + db $f0, $e8, $02, $00 + db $00, $e8, $32, $00 + db $f8, $f0, $34, $00 + db $08, $f0, $36, $00 + db $f8, $f8, $38, $00 + db $08, $f8, $3a, $00 + db $f8, $00, $3c, $00 + db $08, $00, $3e, $00 + db $f8, $08, $30, $00 + db $08, $08, $1c, $00 + db $f8, $10, $1e, $00 + db $08, $10, $20, $00 + db $f0, $18, $22, $00 + db $00, $18, $24, $00 +; 8e0f4 + +Unknown_8e0f4: ; 8e0f4 + db 17 + db $f8, $e0, $00, $00 + db $f0, $e8, $02, $00 + db $00, $e8, $04, $00 + db $f8, $f0, $40, $00 + db $08, $f0, $42, $00 + db $18, $f0, $44, $00 + db $f8, $f8, $46, $00 + db $08, $f8, $48, $00 + db $18, $f8, $4a, $00 + db $f8, $00, $4c, $00 + db $08, $00, $4e, $00 + db $f8, $08, $30, $00 + db $08, $08, $1c, $00 + db $f8, $10, $1e, $00 + db $08, $10, $20, $00 + db $f0, $18, $22, $00 + db $00, $18, $24, $00 +; 8e139 + +Unknown_8e139: ; 8e139 + db 17 + db $f8, $e0, $00, $00 + db $f0, $e8, $02, $00 + db $00, $e8, $04, $00 + db $f8, $f0, $50, $00 + db $08, $f0, $0a, $00 + db $e8, $f8, $52, $00 + db $f8, $f8, $54, $00 + db $08, $f8, $10, $00 + db $e8, $00, $56, $00 + db $f8, $00, $2e, $00 + db $08, $00, $16, $00 + db $f8, $08, $30, $00 + db $08, $08, $1c, $00 + db $f8, $10, $1e, $00 + db $08, $10, $20, $00 + db $f0, $18, $22, $00 + db $00, $18, $24, $00 +; 8e17e + +Unknown_8e17e: ; 8e17e + db 1 + db $fc, $fc, $00, $11 +; 8e183 + +Unknown_8e183: ; 8e183 + db 12 + db $00, $00, $30, $00 + db $00, $08, $31, $00 + db $00, $10, $31, $00 + db $00, $18, $31, $00 + db $00, $20, $31, $00 + db $00, $28, $32, $00 + db $08, $00, $33, $00 + db $08, $08, $34, $00 + db $08, $10, $34, $00 + db $08, $18, $34, $00 + db $08, $20, $34, $00 + db $08, $28, $35, $00 +; 8e1b4 + +Unknown_8e1b4: ; 8e1b4 + db 1 + db $00, $00, $ed, $00 +; 8e1b9 + +Unknown_8e1b9: ; 8e1b9 + db 4 + db $ff, $ff, $30, $00 + db $ff, $01, $32, $00 + db $01, $ff, $33, $00 + db $01, $01, $35, $00 +; 8e1ca + +Unknown_8e1ca: ; 8e1ca + db 8 + db $ff, $ff, $30, $00 + db $ff, $04, $31, $00 + db $ff, $0c, $31, $00 + db $ff, $11, $32, $00 + db $01, $ff, $33, $00 + db $01, $04, $34, $00 + db $01, $0c, $34, $00 + db $01, $11, $35, $00 +; 8e1eb + +Unknown_8e1eb: ; 8e1eb + db 1 + db $00, $00, $34, $00 +; 8e1f0 + +Unknown_8e1f0: ; 8e1f0 + db 2 + db $00, $00, $30, $00 + db $08, $00, $33, $00 +; 8e1f9 + +Unknown_8e1f9: ; 8e1f9 + db 2 + db $00, $00, $32, $00 + db $08, $00, $35, $00 +; 8e202 + +Unknown_8e202: ; 8e202 + db 4 + db $f8, $f8, $00, $01 + db $f8, $00, $01, $01 + db $00, $f8, $02, $01 + db $00, $00, $03, $01 +; 8e213 + +Unknown_8e213: ; 8e213 + db 4 + db $f8, $f8, $00, $81 + db $f8, $00, $01, $81 + db $00, $f8, $02, $81 + db $00, $00, $03, $81 +; 8e224 + +Unknown_8e224: ; 8e224 + db 1 + db $fc, $fc, $00, $02 +; 8e229 + +Unknown_8e229: ; 8e229 + db 4 + db $f0, $fc, $00, $03 + db $f8, $fc, $01, $03 + db $00, $fc, $02, $03 + db $08, $fc, $03, $03 +; 8e23a + +Unknown_8e23a: ; 8e23a + db 4 + db $f0, $fc, $03, $44 + db $f8, $fc, $02, $44 + db $00, $fc, $01, $44 + db $08, $fc, $00, $44 +; 8e24b + +Unknown_8e24b: ; 8e24b + db 4 + db $f8, $f8, $00, $01 + db $f8, $00, $00, $21 + db $00, $f8, $00, $41 + db $00, $00, $00, $61 +; 8e25c + +Unknown_8e25c: ; 8e25c + db 8 + db $f4, $f4, $00, $01 + db $f4, $fc, $01, $01 + db $f4, $04, $00, $21 + db $fc, $f4, $02, $01 + db $fc, $04, $02, $21 + db $04, $f4, $00, $41 + db $04, $fc, $01, $41 + db $04, $04, $00, $61 +; 8e27d + +Unknown_8e27d: ; 8e27d + db 12 + db $f0, $f0, $00, $01 + db $f0, $f8, $01, $01 + db $f8, $f0, $02, $01 + db $f0, $00, $01, $21 + db $f0, $08, $00, $21 + db $f8, $08, $02, $21 + db $00, $f0, $02, $41 + db $08, $f0, $00, $41 + db $08, $f8, $01, $41 + db $00, $08, $02, $61 + db $08, $00, $01, $61 + db $08, $08, $00, $61 +; 8e2ae + +Unknown_8e2ae: ; 8e2ae + db 36 + db $e8, $08, $05, $00 + db $e8, $10, $06, $00 + db $e8, $18, $07, $00 + db $f0, $e8, $11, $00 + db $f0, $f0, $12, $00 + db $f0, $f8, $13, $00 + db $f0, $00, $14, $00 + db $f0, $08, $15, $00 + db $f0, $10, $16, $00 + db $f0, $18, $17, $00 + db $f8, $e0, $20, $00 + db $f8, $e8, $21, $00 + db $f8, $f0, $22, $00 + db $f8, $f8, $23, $00 + db $f8, $00, $24, $00 + db $f8, $08, $25, $00 + db $f8, $10, $26, $00 + db $f8, $18, $27, $00 + db $00, $e0, $30, $00 + db $00, $e8, $31, $00 + db $00, $f0, $32, $00 + db $00, $f8, $33, $00 + db $00, $00, $34, $00 + db $00, $08, $35, $00 + db $00, $10, $36, $00 + db $08, $e0, $40, $00 + db $08, $e8, $41, $00 + db $08, $f0, $42, $00 + db $08, $f8, $43, $00 + db $08, $00, $44, $00 + db $08, $08, $45, $00 + db $08, $10, $46, $00 + db $08, $18, $47, $00 + db $10, $e0, $50, $00 + db $10, $e8, $51, $00 + db $10, $18, $57, $00 +; 8e33f + +Unknown_8e33f: ; 8e33f + db 28 + db $e8, $00, $04, $00 + db $e8, $08, $05, $00 + db $e8, $10, $06, $00 + db $f0, $e8, $11, $00 + db $f0, $f0, $12, $00 + db $f0, $f8, $13, $00 + db $f0, $00, $14, $00 + db $f0, $08, $15, $00 + db $f0, $10, $16, $00 + db $f8, $e8, $21, $00 + db $f8, $f0, $22, $00 + db $f8, $f8, $23, $00 + db $f8, $00, $24, $00 + db $f8, $08, $25, $00 + db $f8, $10, $26, $00 + db $00, $e0, $30, $00 + db $00, $e8, $31, $00 + db $00, $f0, $32, $00 + db $00, $f8, $33, $00 + db $00, $00, $34, $00 + db $00, $08, $35, $00 + db $08, $f0, $42, $00 + db $08, $f8, $43, $00 + db $08, $00, $44, $00 + db $08, $08, $45, $00 + db $10, $f8, $53, $00 + db $10, $00, $54, $00 + db $10, $08, $55, $00 +; 8e3b0 + +Unknown_8e3b0: ; 8e3b0 + db 30 + db $e8, $00, $04, $00 + db $e8, $08, $05, $00 + db $f0, $e8, $11, $00 + db $f0, $f0, $12, $00 + db $f0, $f8, $13, $00 + db $f0, $00, $14, $00 + db $f0, $08, $15, $00 + db $f0, $10, $16, $00 + db $f0, $18, $17, $00 + db $f8, $e0, $20, $00 + db $f8, $e8, $21, $00 + db $f8, $f0, $22, $00 + db $f8, $f8, $23, $00 + db $f8, $00, $24, $00 + db $f8, $08, $25, $00 + db $f8, $10, $26, $00 + db $00, $e0, $30, $00 + db $00, $e8, $31, $00 + db $00, $f0, $32, $00 + db $00, $f8, $33, $00 + db $00, $00, $34, $00 + db $00, $08, $35, $00 + db $08, $f0, $42, $00 + db $08, $f8, $43, $00 + db $08, $00, $44, $00 + db $08, $08, $45, $00 + db $10, $f0, $52, $00 + db $10, $f8, $53, $00 + db $10, $00, $54, $00 + db $10, $08, $55, $00 +; 8e429 + +Unknown_8e429: ; 8e429 + db 31 + db $f0, $e8, $11, $00 + db $f0, $f0, $12, $00 + db $f0, $f8, $13, $00 + db $f0, $00, $14, $00 + db $f0, $08, $15, $00 + db $f0, $10, $16, $00 + db $f0, $18, $17, $00 + db $f8, $e0, $20, $00 + db $f8, $e8, $21, $00 + db $f8, $f0, $22, $00 + db $f8, $f8, $23, $00 + db $f8, $00, $24, $00 + db $f8, $08, $25, $00 + db $f8, $10, $26, $00 + db $f8, $18, $27, $00 + db $00, $e0, $30, $00 + db $00, $e8, $31, $00 + db $00, $f0, $32, $00 + db $00, $f8, $33, $00 + db $00, $00, $34, $00 + db $00, $08, $35, $00 + db $00, $10, $36, $00 + db $08, $e8, $41, $00 + db $08, $f0, $42, $00 + db $08, $f8, $43, $00 + db $08, $00, $44, $00 + db $08, $08, $45, $00 + db $10, $e8, $51, $00 + db $10, $f0, $52, $00 + db $10, $00, $54, $00 + db $10, $08, $55, $00 +; 8e4a6 + +Unknown_8e4a6: ; 8e4a6 + db 25 + db $ec, $ec, $00, $09 + db $ec, $f4, $01, $09 + db $ec, $fc, $02, $09 + db $ec, $04, $03, $09 + db $ec, $0c, $04, $09 + db $f4, $ec, $10, $09 + db $f4, $f4, $11, $09 + db $f4, $fc, $12, $09 + db $f4, $04, $13, $09 + db $f4, $0c, $14, $09 + db $fc, $ec, $20, $09 + db $fc, $f4, $21, $09 + db $fc, $fc, $22, $09 + db $fc, $04, $23, $09 + db $fc, $0c, $24, $09 + db $04, $ec, $30, $09 + db $04, $f4, $31, $09 + db $04, $fc, $32, $09 + db $04, $04, $33, $09 + db $04, $0c, $34, $09 + db $0c, $ec, $40, $09 + db $0c, $f4, $41, $09 + db $0c, $fc, $42, $09 + db $0c, $04, $43, $09 + db $0c, $0c, $44, $09 +; 8e50b + +Unknown_8e50b: ; 8e50b + db 16 + db $f0, $ec, $00, $0a + db $f0, $f4, $01, $0a + db $f0, $fc, $02, $0a + db $f0, $04, $03, $0a + db $f8, $ec, $04, $0a + db $f8, $f4, $05, $0a + db $f8, $fc, $06, $0a + db $f8, $04, $07, $0a + db $00, $ec, $08, $0a + db $00, $f4, $09, $0a + db $00, $fc, $0a, $0a + db $00, $04, $0b, $0a + db $08, $ec, $0c, $0a + db $08, $f4, $0d, $0a + db $08, $fc, $0e, $0a + db $08, $04, $0f, $0a +; 8e54c + +Unknown_8e54c: ; 8e54c + db 1 + db $fc, $fc, $00, $00 +; 8e551 + +Unknown_8e551: ; 8e551 + db 3 + db $00, $f8, $00, $00 + db $f8, $f8, $01, $00 + db $f8, $00, $02, $00 +; 8e55e + +Unknown_8e55e: ; 8e55e + db 7 + db $08, $f0, $00, $00 + db $00, $f0, $01, $00 + db $f8, $f0, $02, $00 + db $f8, $f8, $03, $00 + db $f0, $f8, $04, $00 + db $f0, $00, $05, $00 + db $f0, $08, $06, $00 +; 8e57b + +Unknown_8e57b: ; 8e57b + db 8 + db $f8, $f0, $00, $00 + db $f8, $f8, $01, $00 + db $f8, $00, $01, $20 + db $f8, $08, $00, $20 + db $00, $f0, $00, $40 + db $00, $f8, $01, $40 + db $00, $00, $01, $60 + db $00, $08, $00, $60 +; 8e59c + +Unknown_8e59c: ; 8e59c + db 12 + db $e8, $f8, $00, $00 + db $f0, $f8, $01, $00 + db $f8, $f8, $02, $00 + db $e8, $00, $00, $20 + db $f0, $00, $01, $20 + db $f8, $00, $02, $20 + db $00, $f8, $02, $40 + db $08, $f8, $01, $40 + db $10, $f8, $00, $40 + db $00, $00, $02, $60 + db $08, $00, $01, $60 + db $10, $00, $00, $60 +; 8e5cd + +Unknown_8e5cd: ; 8e5cd + db 20 + db $ec, $f0, $00, $00 + db $ec, $f8, $01, $00 + db $ec, $00, $02, $00 + db $ec, $08, $03, $00 + db $f4, $f0, $04, $00 + db $f4, $f8, $05, $00 + db $f4, $00, $06, $00 + db $f4, $08, $07, $00 + db $fc, $f0, $08, $00 + db $fc, $f8, $09, $00 + db $fc, $00, $0a, $00 + db $fc, $08, $0b, $00 + db $04, $f0, $0c, $00 + db $04, $f8, $0d, $00 + db $04, $00, $0e, $00 + db $04, $08, $0f, $00 + db $0c, $f0, $10, $00 + db $0c, $f8, $11, $00 + db $0c, $00, $12, $00 + db $0c, $08, $13, $00 +; 8e61e + +Unknown_8e61e: ; 8e61e + db 20 + db $00, $08, $00, $81 + db $08, $10, $00, $81 + db $10, $18, $00, $81 + db $18, $20, $00, $81 + db $20, $28, $00, $81 + db $18, $30, $00, $81 + db $10, $38, $00, $81 + db $08, $40, $00, $81 + db $00, $48, $00, $81 + db $08, $50, $00, $81 + db $10, $58, $00, $81 + db $18, $60, $00, $81 + db $20, $68, $00, $81 + db $18, $70, $00, $81 + db $10, $78, $00, $81 + db $08, $80, $00, $81 + db $00, $88, $00, $81 + db $08, $90, $00, $81 + db $10, $98, $00, $81 + db $18, $a0, $00, $81 +; 8e66f + +Unknown_8e66f: ; 8e66f + db 4 + db $f8, $f8, $00, $02 + db $f8, $00, $01, $02 + db $00, $f8, $02, $02 + db $00, $00, $03, $02 +; 8e680 + +Unknown_8e680: ; 8e680 + db 9 + db $f0, $f4, $00, $01 + db $f0, $fc, $01, $01 + db $f0, $04, $02, $01 + db $f8, $f4, $10, $01 + db $f8, $fc, $11, $01 + db $f8, $04, $12, $01 + db $00, $f4, $20, $01 + db $00, $fc, $21, $01 + db $00, $04, $22, $01 +; 8e6a5 + +Unknown_8e6a5: ; 8e6a5 + db 24 + db $d8, $f4, $00, $01 + db $d8, $fc, $01, $01 + db $d8, $04, $02, $01 + db $d8, $0c, $03, $01 + db $e0, $f4, $10, $01 + db $e0, $fc, $11, $01 + db $e0, $04, $12, $01 + db $e0, $0c, $13, $01 + db $e8, $f4, $20, $01 + db $e8, $fc, $21, $01 + db $e8, $04, $22, $01 + db $e8, $0c, $23, $01 + db $f0, $f4, $30, $01 + db $f0, $fc, $31, $01 + db $f0, $04, $32, $01 + db $f0, $0c, $33, $01 + db $f8, $f4, $40, $01 + db $f8, $fc, $41, $01 + db $f8, $04, $42, $01 + db $f8, $0c, $43, $01 + db $00, $f4, $50, $01 + db $00, $fc, $51, $01 + db $00, $04, $52, $01 + db $00, $0c, $53, $01 +; 8e706 +Unknown_8e706: ; Broken 2bpp pointers + dbbw $80, $01, $672a ; 128-tile 2bpp at 1:672a (inside Multiply) + dbbw $80, $01, $672a + dbbw $80, $01, $672a + dbbw $80, $01, $672a + dbbw $10, $37, $672a ; 16-tile 2bpp at 37:672a (within Tileset11GFX) + dbbw $10, $11, $672a ; 16-tile 2bpp at 11:672a (empty data) + dbbw $10, $39, $672a ; 16-tile 2bpp at 39:672a (empty data) + dbbw $10, $24, $672a ; 16-tile 2bpp at 24:672a (inside Function926f7) + dbbw $10, $21, $672a ; 16-tile 2bpp at 21:672a (inside Function8671c) + +Function8e72a: ; 8e72a + add $10 +Function8e72c: ; 8e72c + and $3f + cp $20 + jr nc, .asm_8e737 + call Function8e741 + ld a, h + ret + +.asm_8e737 + and $1f + call Function8e741 + ld a, h + xor $ff ; cpl + inc a + ret +; 8e741 + +Function8e741: ; 8e741 + ld e, a + ld a, d + ld d, 0 + ld hl, Unknown_8e75d +rept 2 + add hl, de +endr + ld e, [hl] + inc hl + ld d, [hl] + ld hl, 0 +.asm_8e750 + srl a + jr nc, .asm_8e755 + add hl, de + +.asm_8e755 + sla e + rl d and a - ret z - call GetEmote2bpp - ret -; 1444d - -emote_header: MACRO - dw \1 - db \2 tiles, BANK(\1) - dw \3 -ENDM - -EmotesPointers: ; 144d -; dw source address -; db length, bank -; dw dest address - - emote_header ShockEmote, 4, VTiles1 tile $78 - emote_header QuestionEmote, 4, VTiles1 tile $78 - emote_header HappyEmote, 4, VTiles1 tile $78 - emote_header SadEmote, 4, VTiles1 tile $78 - emote_header HeartEmote, 4, VTiles1 tile $78 - emote_header BoltEmote, 4, VTiles1 tile $78 - emote_header SleepEmote, 4, VTiles1 tile $78 - emote_header FishEmote, 4, VTiles1 tile $78 - emote_header FishingRodGFX1, 1, VTiles1 tile $7c - emote_header FishingRodGFX2, 2, VTiles1 tile $7c - emote_header FishingRodGFX3, 2, VTiles1 tile $7e - emote_header FishingRodGFX4, 1, VTiles1 tile $7e -; 14495 - - -SpriteMons: ; 14495 - db UNOWN - db GEODUDE - db GROWLITHE - db WEEDLE - db SHELLDER - db ODDISH - db GENGAR - db ZUBAT - db MAGIKARP - db SQUIRTLE - db TOGEPI - db BUTTERFREE - db DIGLETT - db POLIWAG - db PIKACHU - db CLEFAIRY - db CHARMANDER - db JYNX - db STARMIE - db BULBASAUR - db JIGGLYPUFF - db GRIMER - db EKANS - db PARAS - db TENTACOOL - db TAUROS - db MACHOP - db VOLTORB - db LAPRAS - db RHYDON - db MOLTRES - db SNORLAX - db GYARADOS - db LUGIA - db HO_OH -; 144b8 - - -OutdoorSprites: ; 144b8 -; Valid sprite IDs for each map group. - - dw Group1Sprites - dw Group2Sprites - dw Group3Sprites - dw Group4Sprites - dw Group5Sprites - dw Group6Sprites - dw Group7Sprites - dw Group8Sprites - dw Group9Sprites - dw Group10Sprites - dw Group11Sprites - dw Group12Sprites - dw Group13Sprites - dw Group14Sprites - dw Group15Sprites - dw Group16Sprites - dw Group17Sprites - dw Group18Sprites - dw Group19Sprites - dw Group20Sprites - dw Group21Sprites - dw Group22Sprites - dw Group23Sprites - dw Group24Sprites - dw Group25Sprites - dw Group26Sprites -; 144ec - - -Group13Sprites: ; 144ec - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_BIG_LAPRAS - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_TEACHER - db SPRITE_FISHER - db SPRITE_YOUNGSTER - db SPRITE_BLUE - db SPRITE_GRAMPS - db SPRITE_BUG_CATCHER - db SPRITE_COOLTRAINER_F - db SPRITE_SWIMMER_GIRL - db SPRITE_SWIMMER_GUY - db SPRITE_POKE_BALL - db SPRITE_FRUIT_TREE -; 14503 - -Group23Sprites: ; 14503 - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_BIG_LAPRAS - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_TEACHER - db SPRITE_FISHER - db SPRITE_YOUNGSTER - db SPRITE_BLUE - db SPRITE_GRAMPS - db SPRITE_BUG_CATCHER - db SPRITE_COOLTRAINER_F - db SPRITE_SWIMMER_GIRL - db SPRITE_SWIMMER_GUY - db SPRITE_POKE_BALL - db SPRITE_FRUIT_TREE -; 1451a - -Group14Sprites: ; 1451a - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_BIG_LAPRAS - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_TEACHER - db SPRITE_FISHER - db SPRITE_YOUNGSTER - db SPRITE_BLUE - db SPRITE_GRAMPS - db SPRITE_BUG_CATCHER - db SPRITE_COOLTRAINER_F - db SPRITE_SWIMMER_GIRL - db SPRITE_SWIMMER_GUY - db SPRITE_POKE_BALL - db SPRITE_FRUIT_TREE -; 14531 - -Group6Sprites: ; 14531 - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_BIG_LAPRAS - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_TEACHER - db SPRITE_FISHER - db SPRITE_YOUNGSTER - db SPRITE_BLUE - db SPRITE_GRAMPS - db SPRITE_BUG_CATCHER - db SPRITE_COOLTRAINER_F - db SPRITE_SWIMMER_GIRL - db SPRITE_SWIMMER_GUY - db SPRITE_POKE_BALL - db SPRITE_FRUIT_TREE -; 14548 - -Group7Sprites: ; 14548 - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_BIG_LAPRAS - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_COOLTRAINER_M - db SPRITE_SUPER_NERD - db SPRITE_COOLTRAINER_F - db SPRITE_FISHER - db SPRITE_YOUNGSTER - db SPRITE_LASS - db SPRITE_POKEFAN_M - db SPRITE_ROCKET - db SPRITE_MISTY - db SPRITE_POKE_BALL - db SPRITE_SLOWPOKE -; 1455f - -Group25Sprites: ; 1455f - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_BIG_LAPRAS - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_COOLTRAINER_M - db SPRITE_SUPER_NERD - db SPRITE_COOLTRAINER_F - db SPRITE_FISHER - db SPRITE_YOUNGSTER - db SPRITE_LASS - db SPRITE_POKEFAN_M - db SPRITE_ROCKET - db SPRITE_MISTY - db SPRITE_POKE_BALL - db SPRITE_SLOWPOKE -; 14576 - -Group21Sprites: ; 14576 - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_BIG_LAPRAS - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_FISHER - db SPRITE_POLIWAG - db SPRITE_TEACHER - db SPRITE_GRAMPS - db SPRITE_YOUNGSTER - db SPRITE_LASS - db SPRITE_BIKER - db SPRITE_SILVER - db SPRITE_BLUE - db SPRITE_POKE_BALL - db SPRITE_FRUIT_TREE -; 1458d - -Group18Sprites: ; 1458d - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_BIG_LAPRAS - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_POKEFAN_M - db SPRITE_MACHOP - db SPRITE_GRAMPS - db SPRITE_YOUNGSTER - db SPRITE_FISHER - db SPRITE_TEACHER - db SPRITE_SUPER_NERD - db SPRITE_BIG_SNORLAX - db SPRITE_BIKER - db SPRITE_POKE_BALL - db SPRITE_FRUIT_TREE -; 145a4 - -Group12Sprites: ; 145a4 - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_BIG_LAPRAS - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_POKEFAN_M - db SPRITE_MACHOP - db SPRITE_GRAMPS - db SPRITE_YOUNGSTER - db SPRITE_FISHER - db SPRITE_TEACHER - db SPRITE_SUPER_NERD - db SPRITE_BIG_SNORLAX - db SPRITE_BIKER - db SPRITE_POKE_BALL - db SPRITE_FRUIT_TREE -; 145bb - -Group17Sprites: ; 145bb - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_BIG_LAPRAS - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_POKEFAN_M - db SPRITE_MACHOP - db SPRITE_GRAMPS - db SPRITE_YOUNGSTER - db SPRITE_FISHER - db SPRITE_TEACHER - db SPRITE_SUPER_NERD - db SPRITE_BIG_SNORLAX - db SPRITE_BIKER - db SPRITE_POKE_BALL - db SPRITE_FRUIT_TREE -; 145d2 - -Group16Sprites: ; 145d2 - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_BIG_LAPRAS - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_POKEFAN_M - db SPRITE_BUENA - db SPRITE_GRAMPS - db SPRITE_YOUNGSTER - db SPRITE_FISHER - db SPRITE_TEACHER - db SPRITE_SUPER_NERD - db SPRITE_MACHOP - db SPRITE_BIKER - db SPRITE_POKE_BALL - db SPRITE_BOULDER -; 145e9 - -Group24Sprites: ; 145e9 - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_BIG_LAPRAS - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_SILVER - db SPRITE_TEACHER - db SPRITE_FISHER - db SPRITE_COOLTRAINER_M - db SPRITE_YOUNGSTER - db SPRITE_MONSTER - db SPRITE_GRAMPS - db SPRITE_BUG_CATCHER - db SPRITE_COOLTRAINER_F - db SPRITE_POKE_BALL - db SPRITE_FRUIT_TREE -; 14600 - -Group26Sprites: ; 14600 - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_BIG_LAPRAS - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_SILVER - db SPRITE_TEACHER - db SPRITE_FISHER - db SPRITE_COOLTRAINER_M - db SPRITE_YOUNGSTER - db SPRITE_MONSTER - db SPRITE_GRAMPS - db SPRITE_BUG_CATCHER - db SPRITE_COOLTRAINER_F - db SPRITE_POKE_BALL - db SPRITE_FRUIT_TREE -; 14617 - -Group19Sprites: ; 14617 - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_BIG_LAPRAS - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_SILVER - db SPRITE_TEACHER - db SPRITE_FISHER - db SPRITE_COOLTRAINER_M - db SPRITE_YOUNGSTER - db SPRITE_MONSTER - db SPRITE_GRAMPS - db SPRITE_BUG_CATCHER - db SPRITE_COOLTRAINER_F - db SPRITE_POKE_BALL - db SPRITE_FRUIT_TREE -; 1462e - -Group10Sprites: ; 1462e - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_BIG_LAPRAS - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_FISHER - db SPRITE_LASS - db SPRITE_OFFICER - db SPRITE_GRAMPS - db SPRITE_YOUNGSTER - db SPRITE_COOLTRAINER_M - db SPRITE_BUG_CATCHER - db SPRITE_SUPER_NERD - db SPRITE_WEIRD_TREE - db SPRITE_POKE_BALL - db SPRITE_FRUIT_TREE -; 14645 - -Group4Sprites: ; 14645 - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_BIG_LAPRAS - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_FISHER - db SPRITE_LASS - db SPRITE_OFFICER - db SPRITE_GRAMPS - db SPRITE_YOUNGSTER - db SPRITE_COOLTRAINER_M - db SPRITE_BUG_CATCHER - db SPRITE_SUPER_NERD - db SPRITE_WEIRD_TREE - db SPRITE_POKE_BALL - db SPRITE_FRUIT_TREE -; 1465c - -Group8Sprites: ; 1465c - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_KURT_OUTSIDE - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_GRAMPS - db SPRITE_YOUNGSTER - db SPRITE_OFFICER - db SPRITE_POKEFAN_M - db SPRITE_BLACK_BELT - db SPRITE_TEACHER - db SPRITE_AZALEA_ROCKET - db SPRITE_LASS - db SPRITE_SILVER - db SPRITE_FRUIT_TREE - db SPRITE_SLOWPOKE -; 14673 - -Group11Sprites: ; 14673 - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_POKE_BALL - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_BIG_LAPRAS - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_GRAMPS - db SPRITE_YOUNGSTER - db SPRITE_OFFICER - db SPRITE_POKEFAN_M - db SPRITE_DAYCARE_MON_1 - db SPRITE_COOLTRAINER_F - db SPRITE_ROCKET - db SPRITE_LASS - db SPRITE_DAYCARE_MON_2 - db SPRITE_FRUIT_TREE - db SPRITE_SLOWPOKE -; 1468a - -Group22Sprites: ; 1468a - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_STANDING_YOUNGSTER - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_OLIVINE_RIVAL - db SPRITE_POKEFAN_M - db SPRITE_LASS - db SPRITE_BUENA - db SPRITE_SWIMMER_GIRL - db SPRITE_SAILOR - db SPRITE_POKEFAN_F - db SPRITE_SUPER_NERD - db SPRITE_TAUROS - db SPRITE_FRUIT_TREE - db SPRITE_ROCK -; 146a1 - -Group1Sprites: ; 146a1 - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_STANDING_YOUNGSTER - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_OLIVINE_RIVAL - db SPRITE_POKEFAN_M - db SPRITE_LASS - db SPRITE_BUENA - db SPRITE_SWIMMER_GIRL - db SPRITE_SAILOR - db SPRITE_POKEFAN_F - db SPRITE_SUPER_NERD - db SPRITE_TAUROS - db SPRITE_FRUIT_TREE - db SPRITE_ROCK -; 146b8 - -Group9Sprites: ; 146b8 - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_BIG_LAPRAS - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_LANCE - db SPRITE_GRAMPS - db SPRITE_SUPER_NERD - db SPRITE_COOLTRAINER_F - db SPRITE_FISHER - db SPRITE_COOLTRAINER_M - db SPRITE_LASS - db SPRITE_YOUNGSTER - db SPRITE_GYARADOS - db SPRITE_FRUIT_TREE - db SPRITE_POKE_BALL -; 146cf - -Group2Sprites: ; 146cf - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_BIG_LAPRAS - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_GRAMPS - db SPRITE_YOUNGSTER - db SPRITE_LASS - db SPRITE_SUPER_NERD - db SPRITE_COOLTRAINER_M - db SPRITE_POKEFAN_M - db SPRITE_BLACK_BELT - db SPRITE_COOLTRAINER_F - db SPRITE_FISHER - db SPRITE_FRUIT_TREE - db SPRITE_POKE_BALL -; 146e6 - -Group5Sprites: ; 146e6 - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_BIG_LAPRAS - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_GRAMPS - db SPRITE_YOUNGSTER - db SPRITE_LASS - db SPRITE_SUPER_NERD - db SPRITE_COOLTRAINER_M - db SPRITE_POKEFAN_M - db SPRITE_BLACK_BELT - db SPRITE_COOLTRAINER_F - db SPRITE_FISHER - db SPRITE_FRUIT_TREE - db SPRITE_POKE_BALL -; 146fd - -Group3Sprites: ; 146fd - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_GAMEBOY_KID - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_LASS - db SPRITE_POKEFAN_F - db SPRITE_TEACHER - db SPRITE_YOUNGSTER - db SPRITE_GROWLITHE - db SPRITE_POKEFAN_M - db SPRITE_ROCKER - db SPRITE_FISHER - db SPRITE_SCIENTIST - db SPRITE_POKE_BALL - db SPRITE_BOULDER -; 14714 - -Group15Sprites: ; 14714 - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM - db SPRITE_POKEDEX - db SPRITE_WILL - db SPRITE_KAREN - db SPRITE_NURSE - db SPRITE_OLD_LINK_RECEPTIONIST - db SPRITE_BIG_LAPRAS - db SPRITE_BIG_ONIX - db SPRITE_SUDOWOODO - db SPRITE_BIG_SNORLAX - db SPRITE_SAILOR - db SPRITE_FISHING_GURU - db SPRITE_GENTLEMAN - db SPRITE_SUPER_NERD - db SPRITE_HO_OH - db SPRITE_TEACHER - db SPRITE_COOLTRAINER_F - db SPRITE_YOUNGSTER - db SPRITE_FAIRY - db SPRITE_POKE_BALL - db SPRITE_ROCK -; 1472b - -Group20Sprites: ; 1472b - db SPRITE_OAK - db SPRITE_FISHER - db SPRITE_TEACHER - db SPRITE_TWIN - db SPRITE_POKEFAN_M - db SPRITE_GRAMPS - db SPRITE_FAIRY - db SPRITE_SILVER - db SPRITE_FISHING_GURU - db SPRITE_POKE_BALL - db SPRITE_POKEDEX -; 14736 - - -SpriteHeaders: ; 14736 -INCLUDE "gfx/overworld/sprite_headers.asm" -; 1499a + jr nz, .asm_8e750 + ret +; 8e75d + +Unknown_8e75d: ; 8e75d + sine_wave $100 -- cgit v1.2.3 From 21276b79f12fa8e261e63f7ddba0cdfb2391c0f9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 13 Nov 2015 10:48:49 -0500 Subject: SpriteAnim --- engine/breeding/egg.asm | 8 ++-- engine/dummy_game.asm | 2 +- engine/evolution_animation.asm | 2 +- engine/flypoints.asm | 4 +- engine/link.asm | 12 +++--- engine/namingscreen.asm | 18 ++++---- engine/slot_machine.asm | 18 ++++---- engine/sprites.asm | 93 +++++++++++++++++++++--------------------- 8 files changed, 78 insertions(+), 79 deletions(-) (limited to 'engine') diff --git a/engine/breeding/egg.asm b/engine/breeding/egg.asm index 7c4d8ba62..8798233a1 100755 --- a/engine/breeding/egg.asm +++ b/engine/breeding/egg.asm @@ -792,8 +792,8 @@ Function1736d: ; 1736d (5:736d) add $4c ld d, a ld e, $58 - ld a, $19 - call Function3b2a + ld a, SPRITE_ANIM_INDEX_19 + call _InitSpriteAnimStruct ld hl, $3 add hl, bc ld [hl], $0 @@ -821,8 +821,8 @@ Function173b3: ; 173b3 (5:73b3) ld b, a push hl push bc - ld a, $1c - call Function3b2a + ld a, SPRITE_ANIM_INDEX_1C + call _InitSpriteAnimStruct ld hl, $3 add hl, bc ld [hl], $0 diff --git a/engine/dummy_game.asm b/engine/dummy_game.asm index 86d505e0e..72a8e3a80 100755 --- a/engine/dummy_game.asm +++ b/engine/dummy_game.asm @@ -123,7 +123,7 @@ Functione1f1c: ; e1f1c .asm_e1f30 ld de, $341c ld a, $c - call Function3b2a + call _InitSpriteAnimStruct ld a, $5 ld [wc702], a ld hl, wJumptableIndex diff --git a/engine/evolution_animation.asm b/engine/evolution_animation.asm index 69e7aec4c..ce7dbd7f5 100755 --- a/engine/evolution_animation.asm +++ b/engine/evolution_animation.asm @@ -321,7 +321,7 @@ Function4e7e8: ; 4e7e8 push de ld de, $4858 ld a, $13 - call Function3b2a + call _InitSpriteAnimStruct ld hl, $b add hl, bc ld a, [wJumptableIndex] diff --git a/engine/flypoints.asm b/engine/flypoints.asm index 0eb49d70e..f56facf09 100755 --- a/engine/flypoints.asm +++ b/engine/flypoints.asm @@ -828,7 +828,7 @@ TownMapMon: ; 91f7b ; Animation/palette ld de, 0 ld a, $0 - call Function3b2a + call _InitSpriteAnimStruct ld hl, 3 add hl, bc @@ -869,7 +869,7 @@ TownMapPlayerIcon: ; 91fa6 ld b, $1e ; Female .asm_91fd3 ld a, b - call Function3b2a + call _InitSpriteAnimStruct ld hl, $3 add hl, bc diff --git a/engine/link.asm b/engine/link.asm index a1fa0661b..c50a6ff42 100755 --- a/engine/link.asm +++ b/engine/link.asm @@ -2388,14 +2388,14 @@ Function2914e: ; 2914e call Function2985a pop de ld a, $11 - call Function3b2a + call _InitSpriteAnimStruct ld hl, $b add hl, bc pop bc ld [hl], b pop de ld a, $12 - call Function3b2a + call _InitSpriteAnimStruct ld hl, $b add hl, bc pop bc @@ -3082,7 +3082,7 @@ Function29611: ; 29611 Function2961b: ; 2961b lb de, $54, $58 ld a, $e - call Function3b2a + call _InitSpriteAnimStruct call Function29114 ld a, $20 ld [wcf64], a @@ -3092,7 +3092,7 @@ Function2961b: ; 2961b Function2962c: ; 2962c lb de, $54, $58 ld a, $e - call Function3b2a + call _InitSpriteAnimStruct ld hl, $b add hl, bc ld [hl], $1 @@ -3108,7 +3108,7 @@ Function2962c: ; 2962c Function29649: ; 29649 lb de, $54, $58 ld a, $f - call Function3b2a + call _InitSpriteAnimStruct call Function29114 ld a, $10 ld [wcf64], a @@ -3122,7 +3122,7 @@ Function29660: ; 29660 call Functioncf8 lb de, $28, $58 ld a, $10 - call Function3b2a + call _InitSpriteAnimStruct call Function29114 ld a, $40 ld [wcf64], a diff --git a/engine/namingscreen.asm b/engine/namingscreen.asm index 21ec969b4..3b381a016 100755 --- a/engine/namingscreen.asm +++ b/engine/namingscreen.asm @@ -173,9 +173,9 @@ Function117f5: ; 117f5 (4:57f5) ld hl, wc300 ld [hli], a ld [hl], a - ld de, $2420 - ld a, $a - call Function3b2a + lb de, $24, $20 + ld a, SPRITE_ANIM_INDEX_0A + call _InitSpriteAnimStruct ld hl, $1 add hl, bc ld [hl], $0 @@ -220,18 +220,18 @@ Function11847: ; 11847 (4:5847) ld [hli], a ld [hl], a pop de - ld b, $a + ld b, SPRITE_ANIM_INDEX_0A ld a, d cp $7a jr nz, .asm_11873 ld a, e cp $40 jr nz, .asm_11873 - ld b, $1e + ld b, SPRITE_ANIM_INDEX_1E .asm_11873 ld a, b - ld de, $2420 - call Function3b2a + lb de, $24, $20 + call _InitSpriteAnimStruct ret Function1187b: ; 1187b (4:587b) @@ -405,8 +405,8 @@ Function1197b: ; 1197b (4:597b) jr nz, .asm_11985 ld d, $40 .asm_11985 - ld a, $2 - call Function3b2a + ld a, SPRITE_ANIM_INDEX_02 + call _InitSpriteAnimStruct ld a, c ld [wc6d5], a ld a, b diff --git a/engine/slot_machine.asm b/engine/slot_machine.asm index 075b1ba78..8318942fe 100755 --- a/engine/slot_machine.asm +++ b/engine/slot_machine.asm @@ -1037,9 +1037,9 @@ Function92d20: ; 92d20 call Function92fc0 push bc push af - ld de, $6068 - ld a, $6 - call Function3b2a + lb de, $60, $68 + ld a, SPRITE_ANIM_INDEX_06 + call _InitSpriteAnimStruct ld hl, $e add hl, bc pop af @@ -1096,9 +1096,9 @@ Function92d7e: ; 92d7e add hl, bc ld [hl], $0 push bc - ld de, $6000 - ld a, $7 - call Function3b2a + lb de, $60, $00 + ld a, SPRITE_ANIM_INDEX_07 + call _InitSpriteAnimStruct pop bc xor a ld [wcf64], a @@ -2063,9 +2063,9 @@ Function932fc: ; 932fc (24:72fc) add hl, bc dec [hl] push bc - ld de, $606c - ld a, $8 - call Function3b2a + lb de, $60, $6c + ld a, SPRITE_ANIM_INDEX_08 + call _InitSpriteAnimStruct pop bc ret ; 93316 (24:7316) diff --git a/engine/sprites.asm b/engine/sprites.asm index 82c50f743..38b8ed82f 100755 --- a/engine/sprites.asm +++ b/engine/sprites.asm @@ -113,7 +113,7 @@ Function8cfa8: ; 8cfa8 (23:4fa8) .done ret -Function8cfd6:: ; 8cfd6 +InitSpriteAnimStruct:: ; 8cfd6 ; Find if there's any room in the wc314 array, which is 10x16 push de push af @@ -235,7 +235,6 @@ Function8d03d: ; 8d03d (23:503d) Function8d04c: ; 8d04c -; Populate Sprites with the bouncing mon icons call Function8d0ec ; init WRAM call Function8d132 ; read from a memory array cp -3 @@ -539,51 +538,51 @@ endr ; 8d1c4 Unknown_8d1c4: ; 8d1c4 - db $01, JUMPTABLE_8D24B_FUNCTION_01, $00 ; 00 - db $07, JUMPTABLE_8D24B_FUNCTION_04, $00 ; 01 - db $08, JUMPTABLE_8D24B_FUNCTION_05, $05 ; 02 - db $0a, JUMPTABLE_8D24B_FUNCTION_06, $00 ; 03 - db $0b, JUMPTABLE_8D24B_FUNCTION_07, $06 ; 04 - db $0c, JUMPTABLE_8D24B_FUNCTION_08, $06 ; 05 - db $0d, JUMPTABLE_8D24B_FUNCTION_09, $07 ; 06 - db $0e, JUMPTABLE_8D24B_FUNCTION_0A, $07 ; 07 - db $10, JUMPTABLE_8D24B_FUNCTION_0B, $07 ; 08 - db $08, JUMPTABLE_8D24B_FUNCTION_0C, $05 ; 09 - db $11, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 0a - db $12, JUMPTABLE_8D24B_FUNCTION_0D, $08 ; 0b - db $12, JUMPTABLE_8D24B_FUNCTION_0E, $08 ; 0c - db $12, JUMPTABLE_8D24B_FUNCTION_0F, $08 ; 0d - db $13, JUMPTABLE_8D24B_FUNCTION_10, $00 ; 0e - db $15, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 0f - db $16, JUMPTABLE_8D24B_FUNCTION_11, $00 ; 10 - db $17, JUMPTABLE_8D24B_FUNCTION_12, $00 ; 11 - db $18, JUMPTABLE_8D24B_FUNCTION_12, $00 ; 12 - db $19, JUMPTABLE_8D24B_FUNCTION_13, $00 ; 13 - db $1a, JUMPTABLE_8D24B_FUNCTION_14, $00 ; 14 - db $1b, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 15 - db $1d, JUMPTABLE_8D24B_FUNCTION_15, $00 ; 16 - db $1e, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 17 - db $1d, JUMPTABLE_8D24B_FUNCTION_17, $00 ; 18 - db $1f, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 19 - db $24, JUMPTABLE_8D24B_FUNCTION_19, $00 ; 1a - db $25, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 1b - db $20, JUMPTABLE_8D24B_FUNCTION_13, $00 ; 1c - db $26, JUMPTABLE_8D24B_FUNCTION_1A, $00 ; 1d - db $2d, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 1e - db $2e, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 1f - db $2f, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 20 - db $30, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 21 - db $31, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 22 - db $32, JUMPTABLE_8D24B_FUNCTION_1B, $00 ; 23 - db $33, JUMPTABLE_8D24B_FUNCTION_1C, $00 ; 24 - db $34, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 25 - db $35, JUMPTABLE_8D24B_FUNCTION_1D, $00 ; 26 - db $37, JUMPTABLE_8D24B_FUNCTION_1E, $00 ; 27 - db $38, JUMPTABLE_8D24B_FUNCTION_1E, $00 ; 28 - db $39, JUMPTABLE_8D24B_FUNCTION_20, $00 ; 29 - db $3f, JUMPTABLE_8D24B_FUNCTION_21, $00 ; 2a - db $3e, JUMPTABLE_8D24B_FUNCTION_22, $00 ; 2b - db $40, JUMPTABLE_8D24B_FUNCTION_00, $00 ; 2c + db $01, SPRITE_ANIM_SEQ_01, $00 ; 00 + db $07, SPRITE_ANIM_SEQ_04, $00 ; 01 + db $08, SPRITE_ANIM_SEQ_05, $05 ; 02 + db $0a, SPRITE_ANIM_SEQ_06, $00 ; 03 + db $0b, SPRITE_ANIM_SEQ_07, $06 ; 04 + db $0c, SPRITE_ANIM_SEQ_08, $06 ; 05 + db $0d, SPRITE_ANIM_SEQ_09, $07 ; 06 + db $0e, SPRITE_ANIM_SEQ_0A, $07 ; 07 + db $10, SPRITE_ANIM_SEQ_0B, $07 ; 08 + db $08, SPRITE_ANIM_SEQ_0C, $05 ; 09 + db $11, SPRITE_ANIM_SEQ_00, $00 ; 0a + db $12, SPRITE_ANIM_SEQ_0D, $08 ; 0b + db $12, SPRITE_ANIM_SEQ_0E, $08 ; 0c + db $12, SPRITE_ANIM_SEQ_0F, $08 ; 0d + db $13, SPRITE_ANIM_SEQ_10, $00 ; 0e + db $15, SPRITE_ANIM_SEQ_00, $00 ; 0f + db $16, SPRITE_ANIM_SEQ_11, $00 ; 10 + db $17, SPRITE_ANIM_SEQ_12, $00 ; 11 + db $18, SPRITE_ANIM_SEQ_12, $00 ; 12 + db $19, SPRITE_ANIM_SEQ_13, $00 ; 13 + db $1a, SPRITE_ANIM_SEQ_14, $00 ; 14 + db $1b, SPRITE_ANIM_SEQ_00, $00 ; 15 + db $1d, SPRITE_ANIM_SEQ_15, $00 ; 16 + db $1e, SPRITE_ANIM_SEQ_00, $00 ; 17 + db $1d, SPRITE_ANIM_SEQ_17, $00 ; 18 + db $1f, SPRITE_ANIM_SEQ_00, $00 ; 19 + db $24, SPRITE_ANIM_SEQ_19, $00 ; 1a + db $25, SPRITE_ANIM_SEQ_00, $00 ; 1b + db $20, SPRITE_ANIM_SEQ_13, $00 ; 1c + db $26, SPRITE_ANIM_SEQ_1A, $00 ; 1d + db $2d, SPRITE_ANIM_SEQ_00, $00 ; 1e + db $2e, SPRITE_ANIM_SEQ_00, $00 ; 1f + db $2f, SPRITE_ANIM_SEQ_00, $00 ; 20 + db $30, SPRITE_ANIM_SEQ_00, $00 ; 21 + db $31, SPRITE_ANIM_SEQ_00, $00 ; 22 + db $32, SPRITE_ANIM_SEQ_1B, $00 ; 23 + db $33, SPRITE_ANIM_SEQ_1C, $00 ; 24 + db $34, SPRITE_ANIM_SEQ_00, $00 ; 25 + db $35, SPRITE_ANIM_SEQ_1D, $00 ; 26 + db $37, SPRITE_ANIM_SEQ_1E, $00 ; 27 + db $38, SPRITE_ANIM_SEQ_1E, $00 ; 28 + db $39, SPRITE_ANIM_SEQ_20, $00 ; 29 + db $3f, SPRITE_ANIM_SEQ_21, $00 ; 2a + db $3e, SPRITE_ANIM_SEQ_22, $00 ; 2b + db $40, SPRITE_ANIM_SEQ_00, $00 ; 2c ; 8d24b -- cgit v1.2.3 From cc8c36ee149b287b7a1cabb85abb4bf42873a3b2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 13 Nov 2015 18:59:49 -0500 Subject: Creation of constants for OBJECT_09 indices --- engine/events.asm | 82 ++++++++++---------- engine/map_objects.asm | 202 +++++++++++++++++++++++++------------------------ engine/mart.asm | 8 +- engine/movement.asm | 88 ++++++++++----------- engine/scripting.asm | 6 +- engine/sprites.asm | 2 +- 6 files changed, 196 insertions(+), 192 deletions(-) (limited to 'engine') diff --git a/engine/events.asm b/engine/events.asm index d41e3495a..04e090483 100644 --- a/engine/events.asm +++ b/engine/events.asm @@ -24,13 +24,13 @@ OverworldLoop:: ; 966b0 ; 966cb -ClearAllScriptFlags3: ; 966cb +DisableEvents: ; 966cb xor a ld [ScriptFlags3], a ret ; 966d0 -SetAll_ScriptFlags3:: ; 966d0 +EnableEvents:: ; 966d0 ld a, $ff ld [ScriptFlags3], a ret @@ -42,73 +42,73 @@ CheckBit5_ScriptFlags3: ; 966d6 ret ; 966dc -ResetBit2_ScriptFlags3: ; 966dc +DisableWarpsConnxns: ; 966dc ld hl, ScriptFlags3 res 2, [hl] ret ; 966e2 -ResetBit1_ScriptFlags3: ; 966e2 +DisableCoordEvents: ; 966e2 ld hl, ScriptFlags3 res 1, [hl] ret ; 966e8 -ResetBit0_ScriptFlags3: ; 966e8 +DisableStepCount: ; 966e8 ld hl, ScriptFlags3 res 0, [hl] ret ; 966ee -ResetBit4_ScriptFlags3: ; 966ee +DisableWildEncounters: ; 966ee ld hl, ScriptFlags3 res 4, [hl] ret ; 966f4 -SetBit2_ScriptFlags3: ; 966f4 +EnableWarpsConnxns: ; 966f4 ld hl, ScriptFlags3 set 2, [hl] ret ; 966fa -SetBit1_ScriptFlags3: ; 966fa +EnableCoordEvents: ; 966fa ld hl, ScriptFlags3 set 1, [hl] ret ; 96700 -SetBit0_ScriptFlags3: ; 96700 +EnableStepCount: ; 96700 ld hl, ScriptFlags3 set 0, [hl] ret ; 96706 -SetBit4_ScriptFlags3: ; 96706 +EnableWildEncounters: ; 96706 ld hl, ScriptFlags3 set 4, [hl] ret ; 9670c -CheckBit2_ScriptFlags3: ; 9670c +CheckWarpConnxnScriptFlag: ; 9670c ld hl, ScriptFlags3 bit 2, [hl] ret ; 96712 -CheckBit1_ScriptFlags3: ; 96712 +CheckCoordEventScriptFlag: ; 96712 ld hl, ScriptFlags3 bit 1, [hl] ret ; 96718 -CheckBit0_ScriptFlags3: ; 96718 +CheckStepCountScriptFlag: ; 96718 ld hl, ScriptFlags3 bit 0, [hl] ret ; 9671e -CheckBit4_ScriptFlags3: ; 9671e +CheckWildEncountersScriptFlag: ; 9671e ld hl, ScriptFlags3 bit 4, [hl] ret @@ -135,13 +135,13 @@ EnterMap: ; 9673e ld [wd454], a call SetUpFiveStepWildEncounterCooldown callba RunMapSetupScript - call ClearAllScriptFlags3 + call DisableEvents ld a, [hMapEntryMethod] cp MAPSETUP_CONNECTION - jr nz, .dontset - call SetAll_ScriptFlags3 -.dontset + jr nz, .dont_enable + call EnableEvents +.dont_enable ld a, [hMapEntryMethod] cp MAPSETUP_RELOADMAP @@ -197,7 +197,7 @@ MapEvents: ; 96795 .events ; 967a1 call PlayerEvents - call ClearAllScriptFlags3 + call DisableEvents callba ScriptEvents ret ; 967ae @@ -238,7 +238,7 @@ Function967c1: ; 967c1 ; 967d1 Function967d1: ; 967d1 - callba Function576a + callba Function576a ; engine/map_objects.asm callba Functiond497 call Function96812 ret @@ -259,7 +259,7 @@ Function967f4: ; 967f4 jr z, .noevents bit 4, a jr nz, .noevents - call SetAll_ScriptFlags3 + call EnableEvents .events ld a, 0 ; events @@ -355,8 +355,8 @@ CheckTrainerBattle3: ; 96867 CheckTileEvent: ; 96874 ; Check for warps, tile triggers or wild battles. - call CheckBit2_ScriptFlags3 - jr z, .bit2 + call CheckWarpConnxnScriptFlag + jr z, .connections_disabled callba CheckMovingOffEdgeOfMap jr c, .map_connection @@ -364,22 +364,22 @@ CheckTileEvent: ; 96874 call CheckWarpTile jr c, .warp_tile -.bit2 - call CheckBit1_ScriptFlags3 - jr z, .bit1 +.connections_disabled + call CheckCoordEventScriptFlag + jr z, .coord_events_disabled call CheckCurrentMapXYTriggers - jr c, .movement + jr c, .coord_event -.bit1 - call CheckBit0_ScriptFlags3 - jr z, .bit0 +.coord_events_disabled + call CheckStepCountScriptFlag + jr z, .step_count_disabled call CountStep ret c -.bit0 - call CheckBit4_ScriptFlags3 +.step_count_disabled + call CheckWildEncountersScriptFlag jr z, .ok call RandomEncounter @@ -408,8 +408,8 @@ CheckTileEvent: ; 96874 scf ret -.movement - ld hl, MovementAnimation +.coord_event + ld hl, EngineBuffer5 ld a, [hli] ld h, [hl] ld l, a @@ -552,7 +552,7 @@ OWPlayerInput: ; 96974 jr nz, .NoAction ; Can't perform button actions while sliding on ice. - callba Function80404 + callba CheckStandingOnIce jr c, .NoAction call CheckAPressOW @@ -1077,12 +1077,12 @@ PlayerEventScriptPointers: ; 96c0c dba SeenByTrainerScript ; 1 dba TalkToTrainerScript ; 2 dba FindItemInBallScript ; 3 - dba UnknownScript_0x96c4d ; 4 + dba EdgeWarpScript ; 4 dba WarpToNewMapScript ; 5 dba FallIntoMapScript ; 6 dba Script_OverworldWhiteout ; 7 dba HatchEggScript ; 8 - dba UnknownScript_0x96c4f ; 9 + dba ChangeDirectionScript ; 9 dba Invalid_0x96c2d ; 10 ; 96c2d @@ -1124,13 +1124,13 @@ LandAfterPitfallScript: ; 96c4a end ; 96c4d -UnknownScript_0x96c4d: ; 4 +EdgeWarpScript: ; 4 reloadandreturn MAPSETUP_CONNECTION ; 96c4f -UnknownScript_0x96c4f: ; 9 - deactivatefacing $3 - callasm SetBit4_ScriptFlags3 +ChangeDirectionScript: ; 9 + deactivatefacing 3 + callasm EnableWildEncounters end ; 96c56 diff --git a/engine/map_objects.asm b/engine/map_objects.asm index d174c76d9..a53658e60 100644 --- a/engine/map_objects.asm +++ b/engine/map_objects.asm @@ -2,45 +2,45 @@ INCLUDE "engine/facings.asm" SpriteMovementData:: ; 4273 - ; function, facing, ?, ?, ?, ? - db SPRITEMOVEFN_00, DOWN, $01, $02, $00, $00 ; 00 - db SPRITEMOVEFN_STANDING, DOWN, $01, $0c, $00, $00 ; 01 - db SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, $01, $00, $00, $00 ; 02 - db SPRITEMOVEFN_SLOW_RANDOM_SPIN, DOWN, $01, $00, $00, $00 ; 03 - db SPRITEMOVEFN_RANDOM_WALK_Y, DOWN, $01, $00, $00, $00 ; 04 - db SPRITEMOVEFN_RANDOM_WALK_X, DOWN, $01, $00, $00, $00 ; 05 - db SPRITEMOVEFN_STANDING, DOWN, $01, $00, $00, $00 ; 06 - db SPRITEMOVEFN_STANDING, UP, $01, $00, $00, $00 ; 07 - db SPRITEMOVEFN_STANDING, LEFT, $01, $00, $00, $00 ; 08 - db SPRITEMOVEFN_STANDING, RIGHT, $01, $00, $00, $00 ; 09 - db SPRITEMOVEFN_FAST_RANDOM_SPIN, DOWN, $01, $00, $00, $00 ; 0a - db SPRITEMOVEFN_OBEY_DPAD, DOWN, $01, $02, $00, $00 ; 0b - db SPRITEMOVEFN_08, DOWN, $01, $00, $00, $00 ; 0c - db SPRITEMOVEFN_09, DOWN, $01, $00, $00, $00 ; 0d - db SPRITEMOVEFN_0A, DOWN, $01, $00, $00, $00 ; 0e - db SPRITEMOVEFN_0B, DOWN, $01, $00, $00, $00 ; 0f - db SPRITEMOVEFN_0C, DOWN, $01, $00, $00, $00 ; 10 - db SPRITEMOVEFN_0D, DOWN, $01, $00, $00, $00 ; 11 - db SPRITEMOVEFN_0E, DOWN, $01, $00, $00, $00 ; 12 - db SPRITEMOVEFN_FOLLOW, DOWN, $01, $02, $00, $00 ; 13 - db SPRITEMOVEFN_SCRIPTED, DOWN, $01, $02, $00, $00 ; 14 - db SPRITEMOVEFN_BIG_SNORLAX, DOWN, $09, $2e, $01, $c0 ; 15 - db SPRITEMOVEFN_BOUNCE, DOWN, $0a, $2e, $00, $00 ; 16 - db SPRITEMOVEFN_STANDING, DOWN, $01, $0c, $00, $00 ; 17 - db SPRITEMOVEFN_STANDING, DOWN, $01, $2e, $10, $00 ; 18 - db SPRITEMOVEFN_STRENGTH, DOWN, $01, $2e, $00, $40 ; 19 - db SPRITEMOVEFN_FOLLOWNOTEXACT, DOWN, $01, $02, $00, $00 ; 1a - db SPRITEMOVEFN_13, DOWN, $00, $8e, $01, $00 ; 1b - db SPRITEMOVEFN_14, DOWN, $08, $8e, $02, $00 ; 1c - db SPRITEMOVEFN_17, DOWN, $00, $82, $00, $00 ; 1d + ; function, facing, ?, ?, ?, ? + db SPRITEMOVEFN_00, DOWN, $01, $02, $00, $00 ; 00 + db SPRITEMOVEFN_STANDING, DOWN, $01, $0c, $00, $00 ; 01 + db SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, $01, $00, $00, $00 ; 02 + db SPRITEMOVEFN_SLOW_RANDOM_SPIN, DOWN, $01, $00, $00, $00 ; 03 + db SPRITEMOVEFN_RANDOM_WALK_Y, DOWN, $01, $00, $00, $00 ; 04 + db SPRITEMOVEFN_RANDOM_WALK_X, DOWN, $01, $00, $00, $00 ; 05 + db SPRITEMOVEFN_STANDING, DOWN, $01, $00, $00, $00 ; 06 + db SPRITEMOVEFN_STANDING, UP, $01, $00, $00, $00 ; 07 + db SPRITEMOVEFN_STANDING, LEFT, $01, $00, $00, $00 ; 08 + db SPRITEMOVEFN_STANDING, RIGHT, $01, $00, $00, $00 ; 09 + db SPRITEMOVEFN_FAST_RANDOM_SPIN, DOWN, $01, $00, $00, $00 ; 0a + db SPRITEMOVEFN_OBEY_DPAD, DOWN, $01, $02, $00, $00 ; 0b + db SPRITEMOVEFN_08, DOWN, $01, $00, $00, $00 ; 0c + db SPRITEMOVEFN_09, DOWN, $01, $00, $00, $00 ; 0d + db SPRITEMOVEFN_0A, DOWN, $01, $00, $00, $00 ; 0e + db SPRITEMOVEFN_0B, DOWN, $01, $00, $00, $00 ; 0f + db SPRITEMOVEFN_0C, DOWN, $01, $00, $00, $00 ; 10 + db SPRITEMOVEFN_0D, DOWN, $01, $00, $00, $00 ; 11 + db SPRITEMOVEFN_0E, DOWN, $01, $00, $00, $00 ; 12 + db SPRITEMOVEFN_FOLLOW, DOWN, $01, $02, $00, $00 ; 13 + db SPRITEMOVEFN_SCRIPTED, DOWN, $01, $02, $00, $00 ; 14 + db SPRITEMOVEFN_BIG_SNORLAX, DOWN, $09, $2e, $01, $c0 ; 15 + db SPRITEMOVEFN_BOUNCE, DOWN, $0a, $2e, $00, $00 ; 16 + db SPRITEMOVEFN_STANDING, DOWN, $01, $0c, $00, $00 ; 17 + db SPRITEMOVEFN_STANDING, DOWN, $01, $2e, $10, $00 ; 18 + db SPRITEMOVEFN_STRENGTH, DOWN, $01, $2e, $00, $40 ; 19 + db SPRITEMOVEFN_FOLLOWNOTEXACT, DOWN, $01, $02, $00, $00 ; 1a + db SPRITEMOVEFN_13, DOWN, $00, $8e, $01, $00 ; 1b + db SPRITEMOVEFN_14, DOWN, $08, $8e, $02, $00 ; 1c + db SPRITEMOVEFN_17, DOWN, $00, $82, $00, $00 ; 1d db SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE, LEFT, $01, $00, $00, $00 ; 1e - db SPRITEMOVEFN_SPIN_CLOCKWISE, RIGHT, $01, $00, $00, $00 ; 1f - db SPRITEMOVEFN_STRENGTH, DOWN, $0c, $2e, $01, $c0 ; 20 - db SPRITEMOVEFN_STRENGTH, DOWN, $0d, $2e, $01, $c0 ; 21 - db SPRITEMOVEFN_1A, DOWN, $0e, $8e, $01, $00 ; 22 - db SPRITEMOVEFN_1B, DOWN, $0f, $8e, $02, $00 ; 23 - db SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, $01, $00, $00, $20 ; 24 - db SPRITEMOVEFN_00, DOWN, $01, $00, $00, $00 ; 25 + db SPRITEMOVEFN_SPIN_CLOCKWISE, RIGHT, $01, $00, $00, $00 ; 1f + db SPRITEMOVEFN_STRENGTH, DOWN, $0c, $2e, $01, $c0 ; 20 + db SPRITEMOVEFN_STRENGTH, DOWN, $0d, $2e, $01, $c0 ; 21 + db SPRITEMOVEFN_1A, DOWN, $0e, $8e, $01, $00 ; 22 + db SPRITEMOVEFN_1B, DOWN, $0f, $8e, $02, $00 ; 23 + db SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, $01, $00, $00, $20 ; 24 + db SPRITEMOVEFN_00, DOWN, $01, $00, $00, $00 ; 25 ; 4357 @@ -156,11 +156,13 @@ Function43f3: ; 43f3 ld a, [hl] and a jr z, .zero + ld hl, OBJECT_FLAGS2 add hl, bc bit 5, [hl] jr nz, .bit5 - cp 1 + + cp OBJECT_09_VALUE_01 jr z, .one jr .ok @@ -178,7 +180,7 @@ Function43f3: ; 43f3 ld a, [hl] and a ret z - cp 1 + cp OBJECT_09_VALUE_01 ret z .ok @@ -892,6 +894,7 @@ IncrementObjectStructField28: ; 47a2 ; 47a8 JumptoObjectStructField28: ; 47a8 +; anonymous jumptable ld hl, OBJECT_28 add hl, bc ld a, [hl] @@ -931,7 +934,7 @@ Function47bc: ; 47bc call Function467b ld hl, OBJECT_09 add hl, bc - ld [hl], 1 + ld [hl], OBJECT_09_VALUE_01 ret ; 47dd @@ -1037,7 +1040,7 @@ Function47dd: ; 47dd ld [hl], 1 ld hl, OBJECT_09 add hl, bc - ld [hl], 5 + ld [hl], OBJECT_09_VALUE_05 ret ; 487c @@ -1121,7 +1124,7 @@ Function47dd: ; 47dd call Function463f ld hl, OBJECT_09 add hl, bc - ld [hl], $f + ld [hl], OBJECT_09_VALUE_0F ret .ok2 @@ -1223,7 +1226,7 @@ Function47dd: ; 47dd ld [hl], 9 ld hl, OBJECT_09 add hl, bc - ld [hl], 4 + ld [hl], OBJECT_09_VALUE_04 ret ; 496e @@ -1237,7 +1240,7 @@ Function47dd: ; 47dd ld [hl], 10 ld hl, OBJECT_09 add hl, bc - ld [hl], 4 + ld [hl], OBJECT_09_VALUE_04 ret ; 4984 @@ -1274,7 +1277,7 @@ Function47dd: ; 47dd ld [hl], a ld hl, OBJECT_09 add hl, bc - ld [hl], 3 + ld [hl], OBJECT_09_VALUE_03 call IncrementObjectStructField27 ret ; 49b8 @@ -1351,7 +1354,7 @@ Function47dd: ; 47dd ld [hl], 0 ld hl, OBJECT_09 add hl, bc - ld [hl], $13 + ld [hl], OBJECT_09_VALUE_13 ret ; 4a21 @@ -1372,7 +1375,7 @@ Function47dd: ; 47dd ld [hl], 0 ld hl, OBJECT_09 add hl, bc - ld [hl], $13 + ld [hl], OBJECT_09_VALUE_13 ret ; 4a46 @@ -1411,7 +1414,7 @@ endr ld [hl], e ld hl, OBJECT_09 add hl, bc - ld [hl], $13 + ld [hl], OBJECT_09_VALUE_13 ret ; 4a81 @@ -1438,7 +1441,7 @@ endr ld [hl], a ld hl, OBJECT_09 add hl, bc - ld [hl], $13 + ld [hl], OBJECT_09_VALUE_13 ret ; 4aa8 @@ -1476,7 +1479,7 @@ endr ld [hl], a ld hl, OBJECT_09 add hl, bc - ld [hl], $15 + ld [hl], OBJECT_09_VALUE_15 ret ; 4ade @@ -1512,13 +1515,13 @@ endr jr z, .load_6 ld hl, OBJECT_09 add hl, bc - ld [hl], 7 + ld [hl], OBJECT_09_VALUE_07 ret .load_6 ld hl, OBJECT_09 add hl, bc - ld [hl], 6 + ld [hl], OBJECT_09_VALUE_06 ret Function4b17: ; 4b17 @@ -1553,37 +1556,38 @@ Function4b2d: ; 4b2d ld [hl], 1 ld hl, OBJECT_09 add hl, bc - ld [hl], 3 + ld [hl], OBJECT_09_VALUE_03 ret ; 4b45 Pointers4b45: ; 4b45 - dw Function47bc - dw Function47dd - dw Function4e2b - dw Function4ddd - dw Function4e21 - dw Function4e0c - dw Function4e56 - dw Function4e47 - dw Function4b86 - dw Function4bbf - dw Function4e83 - dw Function4dff - dw Function4c18 - dw Function4c89 - dw Function4d14 - dw Function4ecd - dw Function4d7e - dw Function4daf - dw Function4dc8 - dw Function4f04 - dw Function4f33 - dw Function4f33 - dw Function4f77 - dw Function4f7a - dw Function4df0 - dw Function4f83 +; These pointers use OBJECT_09. See constants/sprite_constants.asm + dw Function47bc ; 00 + dw Function47dd ; 01 + dw Function4e2b ; 02 + dw Function4ddd ; 03 + dw Function4e21 ; 04 + dw Function4e0c ; 05 + dw Function4e56 ; 06 + dw Function4e47 ; 07 + dw Function4b86 ; 08 + dw Function4bbf ; 09 + dw Function4e83 ; 0a + dw Function4dff ; 0b + dw Function4c18 ; 0c + dw Function4c89 ; 0d + dw Function4d14 ; 0e + dw Function4ecd ; 0f + dw Function4d7e ; 10 + dw Function4daf ; 11 + dw Function4dc8 ; 12 + dw Function4f04 ; 13 + dw Function4f33 ; 14 + dw Function4f33 ; 15 + dw Function4f77 ; 16 + dw Function4f7a ; 17 + dw Function4df0 ; 18 + dw Function4f83 ; 19 ; 4b79 Function4b79: ; 4b79 @@ -1593,7 +1597,7 @@ Function4b79: ; 4b79 ret nz ld hl, OBJECT_09 add hl, bc - ld [hl], 1 + ld [hl], OBJECT_09_VALUE_01 ret ; 4b86 @@ -1629,7 +1633,7 @@ Function4ba9: ; 4ba9 call Function4600 ld hl, OBJECT_09 add hl, bc - ld [hl], 1 + ld [hl], OBJECT_09_VALUE_01 ret ; 4bbf @@ -1686,7 +1690,7 @@ Function4bfd: ; 4bfd call Function4600 ld hl, OBJECT_09 add hl, bc - ld [hl], 1 + ld [hl], OBJECT_09_VALUE_01 ret ; 4c18 @@ -1762,7 +1766,7 @@ Function4c5d: ; 4c5d ld [hl], 0 ld hl, OBJECT_09 add hl, bc - ld [hl], 1 + ld [hl], OBJECT_09_VALUE_01 ret ; 4c89 @@ -1861,7 +1865,7 @@ Function4d01: ; 4d01 ld [hl], 0 ld hl, OBJECT_09 add hl, bc - ld [hl], 1 + ld [hl], OBJECT_09_VALUE_01 ret ; 4d14 @@ -1934,7 +1938,7 @@ Function4d6b: ; 4d6b ld [hl], 0 ld hl, OBJECT_09 add hl, bc - ld [hl], 1 + ld [hl], OBJECT_09_VALUE_01 ret ; 4d7e @@ -1970,7 +1974,7 @@ Function4d94: ; 4d94 ld [hl], 0 ld hl, OBJECT_09 add hl, bc - ld [hl], 1 + ld [hl], OBJECT_09_VALUE_01 ret ; 4daf @@ -2021,7 +2025,7 @@ Function4ddd: ; 4ddd ret nz ld hl, OBJECT_09 add hl, bc - ld [hl], 1 + ld [hl], OBJECT_09_VALUE_01 ret ; 4df0 @@ -2043,7 +2047,7 @@ Function4dff: ; 4dff ret nz ld hl, OBJECT_09 add hl, bc - ld [hl], 1 + ld [hl], OBJECT_09_VALUE_01 ret ; 4e0c @@ -2055,7 +2059,7 @@ Function4e0c: ; 4e0c Function4e13: ; 4e13 call RestoreDefaultMovement - call Function1a47 + call GetInitialFacing ld hl, OBJECT_FACING add hl, bc ld [hl], a @@ -2084,7 +2088,7 @@ Function4e2b: ; 4e2b ld [hl], STANDING ld hl, OBJECT_09 add hl, bc - ld [hl], 1 + ld [hl], OBJECT_09_VALUE_01 ret ; 4e47 @@ -2126,7 +2130,7 @@ Function4e65: ; 4e65 ld [hl], STANDING ld hl, OBJECT_09 add hl, bc - ld [hl], 1 + ld [hl], OBJECT_09_VALUE_01 ret ; 4e83 @@ -2183,7 +2187,7 @@ Function4ec0: ; 4ec0 ret nz ld hl, OBJECT_09 add hl, bc - ld [hl], 1 + ld [hl], OBJECT_09_VALUE_01 ret ; 4ecd @@ -2215,7 +2219,7 @@ Function4ecd: ; 4ecd ld [hl], STANDING ld hl, OBJECT_09 add hl, bc - ld [hl], 1 + ld [hl], OBJECT_09_VALUE_01 ret ; 4f04 @@ -2347,7 +2351,7 @@ Function4f99: ; 4f99 ld [hl], 0 ld hl, OBJECT_09 add hl, bc - ld [hl], 1 + ld [hl], OBJECT_09_VALUE_01 ret ; 4fb2 @@ -2404,7 +2408,7 @@ UpdateJumpPosition: ; 4fd5 ; 5000 Function5000: ; unscripted? -; copy [wc3de] to [wc2df] +; copy [wc2de] to [wc2df] ld a, [wc2de] ld hl, wc2df ld [hl], a @@ -3188,7 +3192,7 @@ SetFollowerIfVisible: ; 582c ld [hl], SPRITEMOVEDATA_FOLLOWING ld hl, OBJECT_09 add hl, bc - ld [hl], 0 + ld [hl], OBJECT_09_VALUE_00 ld a, [hObjectStructIndexBuffer] ld [wObjectFollow_Follower], a ret @@ -3328,7 +3332,7 @@ Function58e3: ; 58e3 ld hl, OBJECT_09 add hl, bc - ld [hl], 0 + ld [hl], OBJECT_09_VALUE_00 ret ; 5903 @@ -3347,7 +3351,7 @@ Function5903: ; 5903 ld hl, OBJECT_09 add hl, bc - ld [hl], 0 + ld [hl], OBJECT_09_VALUE_00 ret .standing_movefns diff --git a/engine/mart.asm b/engine/mart.asm index 2c3dac0e7..81ab22d12 100755 --- a/engine/mart.asm +++ b/engine/mart.asm @@ -29,7 +29,7 @@ MartDialog: ; 15a61 ld a, 0 ld [EngineBuffer1], a xor a - ld [MovementAnimation], a + ld [EngineBuffer5], a call StandardMart ret ; 15a6e @@ -129,7 +129,7 @@ LoadMartPointer: ; 15b10 ld bc, 16 call ByteFill xor a - ld [MovementAnimation], a + ld [EngineBuffer5], a ld [wBargainShopFlags], a ld [FacingDirection], a ret @@ -157,10 +157,10 @@ endr StandardMart: ; 15b47 .loop - ld a, [MovementAnimation] + ld a, [EngineBuffer5] ld hl, .MartFunctions rst JumpTable - ld [MovementAnimation], a + ld [EngineBuffer5], a cp $ff jr nz, .loop ret diff --git a/engine/movement.asm b/engine/movement.asm index 21dd89e9f..a908624e1 100644 --- a/engine/movement.asm +++ b/engine/movement.asm @@ -79,7 +79,7 @@ MovementPointers: ; 5075 dw Movement_teleport_to ; 4d dw Movement_skyfall ; 4e dw Movement_step_wait5 ; 4f - dw Movement_50 ; 50 + dw Movement_step_bump ; 50 dw Movement_fish_got_bite ; 51 dw Movement_fish_cast_rod ; 52 dw Movement_hide_emote ; 53 @@ -95,28 +95,28 @@ MovementPointers: ; 5075 Movement_teleport_from: ; 5129 ld hl, OBJECT_09 add hl, bc - ld [hl], $c + ld [hl], OBJECT_09_VALUE_0C ret ; 5130 Movement_teleport_to: ; 5130 ld hl, OBJECT_09 add hl, bc - ld [hl], $d + ld [hl], OBJECT_09_VALUE_0D ret ; 5137 Movement_skyfall: ; 5137 ld hl, OBJECT_09 add hl, bc - ld [hl], $e + ld [hl], OBJECT_09_VALUE_0E ret ; 513e Movement_59: ; 513e ld hl, OBJECT_09 add hl, bc - ld [hl], $19 + ld [hl], OBJECT_09_VALUE_19 ret ; 5145 @@ -136,7 +136,7 @@ Movement_step_wait5: ; 5145 ld [hl], a ld hl, OBJECT_09 add hl, bc - ld [hl], $3 + ld [hl], OBJECT_09_VALUE_03 ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING @@ -159,7 +159,7 @@ Movement_58: ; 516a ld [hl], STANDING ld hl, OBJECT_09 add hl, bc - ld [hl], $12 + ld [hl], OBJECT_09_VALUE_12 ret ; 5189 @@ -169,7 +169,7 @@ Movement_fish_got_bite: ; 5189 ld [hl], $6 ld hl, OBJECT_09 add hl, bc - ld [hl], $10 + ld [hl], OBJECT_09_VALUE_10 ret ; 5196 @@ -183,7 +183,7 @@ Movement_rock_smash: ; 5196 ld [hl], $1 ld hl, OBJECT_09 add hl, bc - ld [hl], $11 + ld [hl], OBJECT_09_VALUE_11 ret ; 51ab @@ -193,7 +193,7 @@ Movement_fish_cast_rod: ; 51ab ld [hl], $6 ld hl, OBJECT_09 add hl, bc - ld [hl], $1 + ld [hl], OBJECT_09_VALUE_01 ret ; 51b8 @@ -219,7 +219,7 @@ Movement_step_end: ; 51c1 ld hl, OBJECT_09 add hl, bc - ld [hl], $1 + ld [hl], OBJECT_09_VALUE_01 ret ; 51db @@ -240,7 +240,7 @@ Movement_48: ; 51db ld hl, OBJECT_09 add hl, bc - ld [hl], $3 + ld [hl], OBJECT_09_VALUE_03 ld hl, VramState res 7, [hl] @@ -268,7 +268,7 @@ Movement_4b: ; 5210 ld hl, OBJECT_09 add hl, bc - ld [hl], $4 + ld [hl], OBJECT_09_VALUE_04 ld hl, VramState res 7, [hl] @@ -276,52 +276,52 @@ Movement_4b: ; 5210 ; 5222 Movement_step_sleep_1: ; 5222 - ld a, $1 - jr Function5247 + ld a, 1 + jr Movement_step_sleep_common Movement_step_sleep_2: ; 5226 - ld a, $2 - jr Function5247 + ld a, 2 + jr Movement_step_sleep_common Movement_step_sleep_3: ; 522a - ld a, $3 - jr Function5247 + ld a, 3 + jr Movement_step_sleep_common Movement_step_sleep_4: ; 522e - ld a, $4 - jr Function5247 + ld a, 4 + jr Movement_step_sleep_common Movement_step_sleep_5: ; 5232 - ld a, $5 - jr Function5247 + ld a, 5 + jr Movement_step_sleep_common Movement_step_sleep_6: ; 5236 - ld a, $6 - jr Function5247 + ld a, 6 + jr Movement_step_sleep_common Movement_step_sleep_7: ; 523a - ld a, $7 - jr Function5247 + ld a, 7 + jr Movement_step_sleep_common Movement_step_sleep_8: ; 523e - ld a, $8 - jr Function5247 + ld a, 8 + jr Movement_step_sleep_common Movement_step_sleep: ; 5242 ; parameters: ; duration (DecimalParam) call GetMovementByte - jr Function5247 + jr Movement_step_sleep_common -Function5247: ; 5247 +Movement_step_sleep_common: ; 5247 ld hl, OBJECT_STEP_DURATION add hl, bc ld [hl], a ld hl, OBJECT_09 add hl, bc - ld [hl], $3 + ld [hl], OBJECT_09_VALUE_03 ld hl, OBJECT_11 add hl, bc @@ -333,14 +333,14 @@ Function5247: ; 5247 ret ; 525f -Movement_50: ; 525f +Movement_step_bump: ; 525f ld a, $1 ld hl, OBJECT_STEP_DURATION add hl, bc ld [hl], a ld hl, OBJECT_09 add hl, bc - ld [hl], $b + ld [hl], OBJECT_09_VALUE_0B ld hl, OBJECT_11 add hl, bc ld [hl], $3 @@ -357,7 +357,7 @@ Movement_56: ; 5279 ld [hl], a ld hl, OBJECT_09 add hl, bc - ld [hl], $3 + ld [hl], OBJECT_09_VALUE_03 ld hl, OBJECT_11 add hl, bc ld [hl], $b @@ -726,7 +726,7 @@ HalfStep: ; 5400 ld [hl], $2 ld hl, OBJECT_09 add hl, bc - ld [hl], $a + ld [hl], OBJECT_09_VALUE_0A ret ; 5412 @@ -756,13 +756,13 @@ NormalStep: ; 5412 ld hl, OBJECT_09 add hl, bc - ld [hl], $2 + ld [hl], OBJECT_09_VALUE_02 ret .asm_543f ld hl, OBJECT_09 add hl, bc - ld [hl], $6 + ld [hl], OBJECT_09_VALUE_06 ret ; 5446 @@ -778,13 +778,13 @@ TurningStep: ; 5446 jr z, .asm_5461 ld hl, OBJECT_09 add hl, bc - ld [hl], $2 + ld [hl], OBJECT_09_VALUE_02 ret .asm_5461 ld hl, OBJECT_09 add hl, bc - ld [hl], $6 + ld [hl], OBJECT_09_VALUE_06 ret ; 5468 @@ -801,13 +801,13 @@ SlideStep: ; 5468 jr z, .asm_5483 ld hl, OBJECT_09 add hl, bc - ld [hl], $2 + ld [hl], OBJECT_09_VALUE_02 ret .asm_5483 ld hl, OBJECT_09 add hl, bc - ld [hl], $6 + ld [hl], OBJECT_09_VALUE_06 ret ; 548a @@ -830,12 +830,12 @@ JumpStep: ; 548a jr z, .asm_54b1 ld hl, OBJECT_09 add hl, bc - ld [hl], $8 + ld [hl], OBJECT_09_VALUE_08 ret .asm_54b1 ld hl, OBJECT_09 add hl, bc - ld [hl], $9 + ld [hl], OBJECT_09_VALUE_09 ret ; 54b8 diff --git a/engine/scripting.asm b/engine/scripting.asm index ae5041bc2..720ea1de4 100644 --- a/engine/scripting.asm +++ b/engine/scripting.asm @@ -2987,12 +2987,12 @@ Script_warpcheck: ; 0x97af6 call WarpCheck ret nc - callba SetAll_ScriptFlags3 + callba EnableEvents ret ; 0x97b01 -Function97b01: ; 0x97b01 - callba SetAll_ScriptFlags3 +Script_enableevents: ; unreferenced + callba EnableEvents ret ; 0x97b08 diff --git a/engine/sprites.asm b/engine/sprites.asm index 38b8ed82f..e95894292 100755 --- a/engine/sprites.asm +++ b/engine/sprites.asm @@ -75,7 +75,7 @@ Function8cf7a: ; 8cf7a ; 8cfa8 Function8cfa8: ; 8cfa8 (23:4fa8) - ld hl, wc314 + ld hl, wSpriteAnimationStructs ld e, 10 .loop -- cgit v1.2.3 From ed44de4bb4688f6b8c83aeb4f5fd8658d17615fb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 14 Nov 2015 14:41:47 -0500 Subject: More map object work --- engine/events.asm | 2 +- engine/map_objects.asm | 401 +++++++++++++++++++++++++------------------------ engine/map_setup.asm | 4 +- engine/movement.asm | 42 +++--- engine/overworld.asm | 4 +- 5 files changed, 233 insertions(+), 220 deletions(-) (limited to 'engine') diff --git a/engine/events.asm b/engine/events.asm index 04e090483..004cbf33e 100644 --- a/engine/events.asm +++ b/engine/events.asm @@ -368,7 +368,7 @@ CheckTileEvent: ; 96874 call CheckCoordEventScriptFlag jr z, .coord_events_disabled - call CheckCurrentMapXYTriggers + call CheckCurrentNextMapXYTriggers jr c, .coord_event .coord_events_disabled diff --git a/engine/map_objects.asm b/engine/map_objects.asm index a53658e60..670eca9a6 100644 --- a/engine/map_objects.asm +++ b/engine/map_objects.asm @@ -30,15 +30,15 @@ SpriteMovementData:: ; 4273 db SPRITEMOVEFN_STANDING, DOWN, $01, $2e, $10, $00 ; 18 db SPRITEMOVEFN_STRENGTH, DOWN, $01, $2e, $00, $40 ; 19 db SPRITEMOVEFN_FOLLOWNOTEXACT, DOWN, $01, $02, $00, $00 ; 1a - db SPRITEMOVEFN_13, DOWN, $00, $8e, $01, $00 ; 1b - db SPRITEMOVEFN_14, DOWN, $08, $8e, $02, $00 ; 1c - db SPRITEMOVEFN_17, DOWN, $00, $82, $00, $00 ; 1d + db SPRITEMOVEFN_SHADOW, DOWN, $00, $8e, $01, $00 ; 1b + db SPRITEMOVEFN_EMOTE, DOWN, $08, $8e, $02, $00 ; 1c + db SPRITEMOVEFN_SCREENSHAKE, DOWN, $00, $82, $00, $00 ; 1d db SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE, LEFT, $01, $00, $00, $00 ; 1e db SPRITEMOVEFN_SPIN_CLOCKWISE, RIGHT, $01, $00, $00, $00 ; 1f db SPRITEMOVEFN_STRENGTH, DOWN, $0c, $2e, $01, $c0 ; 20 db SPRITEMOVEFN_STRENGTH, DOWN, $0d, $2e, $01, $c0 ; 21 - db SPRITEMOVEFN_1A, DOWN, $0e, $8e, $01, $00 ; 22 - db SPRITEMOVEFN_1B, DOWN, $0f, $8e, $02, $00 ; 23 + db SPRITEMOVEFN_BOULDERDUST, DOWN, $0e, $8e, $01, $00 ; 22 + db SPRITEMOVEFN_GRASS, DOWN, $0f, $8e, $02, $00 ; 23 db SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, $01, $00, $00, $20 ; 24 db SPRITEMOVEFN_00, DOWN, $01, $00, $00, $00 ; 25 ; 4357 @@ -84,7 +84,7 @@ Function4386: ; 4386 res 6, [hl] ld a, [XCoord] ld e, a - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld a, [hl] add 1 @@ -94,7 +94,7 @@ Function4386: ; 4386 jr nc, .ok ld a, [YCoord] ld e, a - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld a, [hl] add 1 @@ -110,7 +110,7 @@ Function4386: ; 4386 set 6, [hl] ld a, [XCoord] ld e, a - ld hl, OBJECT_20 + ld hl, OBJECT_INIT_X add hl, bc ld a, [hl] add 1 @@ -120,7 +120,7 @@ Function4386: ; 4386 jr nc, .ok2 ld a, [YCoord] ld e, a - ld hl, OBJECT_21 + ld hl, OBJECT_INIT_Y add hl, bc ld a, [hl] add 1 @@ -224,7 +224,8 @@ Function4448: ; 4448 ; 444d Function444d: ; 444d - ld hl, OBJECT_11 +; call [4 * ObjectStructs[ObjInd, OBJECT_ACTION] + de] + ld hl, OBJECT_ACTION add hl, bc ld a, [hl] ld l, a @@ -242,39 +243,39 @@ endr Pointers445f: ; 445f dw Function44a3 ; 00 - dw Function44a3 ; 01 - dw Function44b5 ; 02 - dw Function44aa ; 03 - dw Function44c1 ; 04 - dw Function44aa ; 05 - dw Function4508 ; 06 - dw Function44aa ; 07 - dw Function4529 ; 08 - dw Function44aa ; 09 - dw Function4539 ; 0a - dw Function44a3 ; 0b - dw Function456e ; 0c - dw Function456e ; 0d - dw Function457b ; 0e - dw Function44a3 ; 0f - dw Function4582 ; 10 - dw Function4582 ; 11 - dw Function4589 ; 12 - dw Function4589 ; 13 - dw Function4590 ; 14 - dw Function45a4 ; 15 - dw Function45ab ; 16 - dw Function44aa ; 17 - dw Function45be ; 18 - dw Function45be ; 19 - dw Function45c5 ; 1a - dw Function45c5 ; 1b - dw Function45da ; 1c - dw Function44a3 ; 1d - dw Function45ed ; 1e - dw Function44a3 ; 1f - dw Function44e4 ; 20 - dw Function44aa ; 21 + dw Function44a3 ; 01 (00) + dw Function44b5 ; 02 (01) + dw Function44aa ; 03 (02) + dw Function44c1 ; 04 (03) + dw Function44aa ; 05 (04) + dw Function4508 ; 06 (05) + dw Function44aa ; 07 (06) + dw Function4529 ; 08 (07) + dw Function44aa ; 09 (08) + dw Function4539 ; 0a (09) + dw Function44a3 ; 0b (0a) + dw Function456e ; 0c (0b) + dw Function456e ; 0d (0c) + dw Function457b ; 0e (0d) + dw Function44a3 ; 0f (0e) + dw Function4582 ; 10 (0f) + dw Function4582 ; 11 (10) + dw Function4589 ; 12 (11) + dw Function4589 ; 13 (12) + dw Function4590 ; 14 (13) + dw Function45a4 ; 15 (14) + dw Function45ab ; 16 (15) + dw Function44aa ; 17 (16) + dw Function45be ; 18 (17) + dw Function45be ; 19 (18) + dw Function45c5 ; 1a (19) + dw Function45c5 ; 1b (1a) + dw Function45da ; 1c (1b) + dw Function44a3 ; 1d (1c) + dw Function45ed ; 1e (1d) + dw Function44a3 ; 1f (1e) + dw Function44e4 ; 20 (1f) + dw Function44aa ; 21 (20) ; 44a3 Function44a3: ; 44a3 @@ -286,7 +287,7 @@ Function44a3: ; 44a3 Function44aa: ; 44aa call GetSpriteDirection - or 0 + or 0 ; useless ld hl, OBJECT_FACING_STEP add hl, bc ld [hl], a @@ -556,17 +557,17 @@ Function45ed: ; 45ed Function4600: ; 4600 - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld a, [hl] - ld hl, OBJECT_NEXT_MAP_X + ld hl, OBJECT_MAP_X add hl, bc ld [hl], a - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld a, [hl] - ld hl, OBJECT_NEXT_MAP_Y + ld hl, OBJECT_MAP_Y add hl, bc ld [hl], a @@ -588,17 +589,17 @@ Function4600: ; 4600 Function462a: ; 462a - ld hl, OBJECT_NEXT_MAP_X + ld hl, OBJECT_MAP_X add hl, bc ld a, [hl] - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld [hl], a - ld hl, OBJECT_NEXT_MAP_Y + ld hl, OBJECT_MAP_Y add hl, bc ld a, [hl] - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld [hl], a @@ -662,7 +663,7 @@ Function467b: ; 467b rept 3 ld [hli], a endr - ld [hl], a + ld [hl], a ; OBJECT_30 ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING @@ -675,8 +676,8 @@ Function4690: ; 4690 ld [hl], a ld hl, OBJECT_FLAGS1 add hl, bc - bit 2, [hl] - jr nz, .ok + bit FIXED_FACING, [hl] + jr nz, GetCurTile rept 2 add a @@ -685,12 +686,7 @@ endr ld hl, OBJECT_FACING add hl, bc ld [hl], a - -.ok - ; fallthrough -; 46a6 - -Function46a6: ; 46a6 +GetCurTile: ; 46a6 call GetStepVector @@ -699,21 +695,21 @@ Function46a6: ; 46a6 ld [hl], a ld a, d - call Function4730 - ld hl, OBJECT_NEXT_MAP_X + call GetStepVectorSign + ld hl, OBJECT_MAP_X add hl, bc add [hl] - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld [hl], a ld d, a ld a, e - call Function4730 - ld hl, OBJECT_NEXT_MAP_Y + call GetStepVectorSign + ld hl, OBJECT_MAP_Y add hl, bc add [hl] - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld [hl], a ld e, a @@ -729,7 +725,7 @@ Function46a6: ; 46a6 ret ; 46d7 -Function46d7: ; 46d7 +AddStepVector: ; 46d7 call GetStepVector @@ -789,13 +785,15 @@ StepVectors: ; 4700 db 4, 0, 4, 4 ; 4730 -Function4730: ; 4730 +GetStepVectorSign: ; 4730 add a - ret z + ret z ; 0 or 128 + ld a, 1 - ret nc + ret nc ; 1 - 127 + ld a, -1 - ret + ret ; 129 - 255 ; 4738 Function4738: ; 4738 @@ -804,7 +802,7 @@ Function4738: ; 4738 ld a, [hl] and %00000011 ld [wd151], a - call Function46d7 + call AddStepVector ld a, [wd14e] add d ld [wd14e], a @@ -849,28 +847,28 @@ RestoreDefaultMovement: ; 4769 ret ; 4780 -ClearObjectStructField27: ; 4780 +ClearObjectMovementByteIndex: ; 4780 ld hl, OBJECT_MOVEMENT_BYTE_INDEX add hl, bc ld [hl], 0 ret ; 4787 -IncrementObjectStructField27: ; 4787 +IncrementObjectMovementByteIndex: ; 4787 ld hl, OBJECT_MOVEMENT_BYTE_INDEX add hl, bc inc [hl] ret ; 478d -DecrementObjectStructField27: ; 478d +DecrementObjectMovementByteIndex: ; 478d ld hl, OBJECT_MOVEMENT_BYTE_INDEX add hl, bc dec [hl] ret ; 4793 -JumptoObjectStructField27: ; 4793 +JumptoObjectMovementByteIndex: ; 4793 ld hl, OBJECT_MOVEMENT_BYTE_INDEX add hl, bc ld a, [hl] @@ -893,7 +891,7 @@ IncrementObjectStructField28: ; 47a2 ret ; 47a8 -JumptoObjectStructField28: ; 47a8 +Object28AnonymousJumptable: ; 47a8 ; anonymous jumptable ld hl, OBJECT_28 add hl, bc @@ -918,10 +916,10 @@ SetValueObjectStructField28: ; 47b6 ; 47bc Function47bc: ; 47bc - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld d, [hl] - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld e, [hl] push bc @@ -1011,7 +1009,7 @@ Function47dd: ; 47dd ld hl, OBJECT_FACING add hl, bc ld [hl], a - jp Function4b1d + jp RandomStepDuration_Slow ; 4851 .RandomSpin2: ; 4851 @@ -1029,13 +1027,13 @@ Function47dd: ; 47dd .keep ld [hl], a - jp Function4b26 + jp RandomStepDuration_Fast ; 4869 .Standing: ; 4869 call Function462a call Function467b - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], 1 ld hl, OBJECT_09 @@ -1091,7 +1089,7 @@ Function47dd: ; 47dd ; 48ac .Strength: ; 48ac - call JumptoObjectStructField27 + call JumptoObjectMovementByteIndex dw .Strength_Start dw .Strength_Stop ; 48b3 @@ -1109,7 +1107,7 @@ Function47dd: ; 47dd res 2, [hl] jr z, .ok - ld hl, OBJECT_32 + ld hl, OBJECT_RANGE add hl, bc ld a, [hl] and %00000011 @@ -1120,7 +1118,7 @@ Function47dd: ; 47dd ld de, SFX_STRENGTH call PlaySFX - call Function5538 + call SpawnStrengthBoulderDust call Function463f ld hl, OBJECT_09 add hl, bc @@ -1137,7 +1135,7 @@ Function47dd: ; 47dd ret .on_pit - call IncrementObjectStructField27 + call IncrementObjectMovementByteIndex ; fallthrough ; 48f8 @@ -1149,15 +1147,15 @@ Function47dd: ; 47dd ; 48ff .FollowNotExact: ; 48ff - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld d, [hl] - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld e, [hl] - ld hl, OBJECT_32 + ld hl, OBJECT_RANGE add hl, bc ld a, [hl] @@ -1169,7 +1167,7 @@ Function47dd: ; 47dd cp STANDING jr z, .standing - ld hl, OBJECT_NEXT_MAP_X + ld hl, OBJECT_MAP_X add hl, bc ld a, [hl] cp d @@ -1183,7 +1181,7 @@ Function47dd: ; 47dd jr .done .equal - ld hl, OBJECT_NEXT_MAP_Y + ld hl, OBJECT_MAP_Y add hl, bc ld a, [hl] cp e @@ -1210,7 +1208,7 @@ Function47dd: ; 47dd ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], 1 ret @@ -1221,7 +1219,7 @@ Function47dd: ; 47dd ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], 9 ld hl, OBJECT_09 @@ -1235,7 +1233,7 @@ Function47dd: ; 47dd ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], 10 ld hl, OBJECT_09 @@ -1245,14 +1243,14 @@ Function47dd: ; 47dd ; 4984 .MovementSpinCounterclockwise: ; 4984 - call JumptoObjectStructField27 + call JumptoObjectMovementByteIndex dw .MovementSpinInit dw .MovementSpinRepeat dw .MovementSpinTurnLeft ; 498d .MovementSpinClockwise: ; 498d - call JumptoObjectStructField27 + call JumptoObjectMovementByteIndex dw .MovementSpinInit dw .MovementSpinRepeat dw .MovementSpinTurnRight @@ -1260,25 +1258,25 @@ Function47dd: ; 47dd .MovementSpinInit: ; 4996 call Function467b - call IncrementObjectStructField27 + call IncrementObjectMovementByteIndex ; fallthrough ; 499c .MovementSpinRepeat: ; 499c - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], 1 - ld hl, OBJECT_32 + ld hl, OBJECT_RANGE add hl, bc ld a, [hl] - ld a, $10 + ld a, 16 ld hl, OBJECT_STEP_DURATION add hl, bc ld [hl], a ld hl, OBJECT_09 add hl, bc ld [hl], OBJECT_09_VALUE_03 - call IncrementObjectStructField27 + call IncrementObjectMovementByteIndex ret ; 49b8 @@ -1316,13 +1314,13 @@ Function47dd: ; 47dd ld a, [hl] pop hl ld [hl], a - call DecrementObjectStructField27 + call DecrementObjectMovementByteIndex ret ; 49e5 .Movement13: ; 49e5 call ._Movement13_14_1a_1b - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], $7 ld hl, OBJECT_STEP_DURATION @@ -1361,7 +1359,7 @@ Function47dd: ; 47dd .Movement14: ; 4a21 call Function467b call ._Movement13_14_1a_1b - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], 8 ld hl, OBJECT_STEP_DURATION @@ -1382,7 +1380,7 @@ Function47dd: ; 47dd .Movement1a: ; 4a46 call Function467b call ._Movement13_14_1a_1b - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], $e ld hl, OBJECT_STEP_DURATION @@ -1429,7 +1427,7 @@ endr .Movement1b: ; 4a89 call Function467b call ._Movement13_14_1a_1b - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], $f ld hl, OBJECT_STEP_DURATION @@ -1446,7 +1444,7 @@ endr ; 4aa8 ._Movement13_14_1a_1b: ; 4aa8 - ld hl, OBJECT_32 + ld hl, OBJECT_RANGE add hl, bc ld a, [hl] push bc @@ -1464,10 +1462,10 @@ endr .Movement17: ; 4abc call Function467b - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], 0 - ld hl, OBJECT_32 + ld hl, OBJECT_RANGE add hl, bc ld a, [hl] call ._Movement17 @@ -1506,7 +1504,7 @@ endr call Function6ec1 jr c, Function4b17 call Function463f - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], 2 ld hl, wd4cf @@ -1530,28 +1528,28 @@ Function4b17: ; 4b17 ; fallthrough ; 4b1d -Function4b1d: ; 4b1d +RandomStepDuration_Slow: ; 4b1d call Random ld a, [hRandomAdd] and %01111111 - jr Function4b2d + jr SetRandomStepDuration ; 4b26 -Function4b26: ; 4b26 +RandomStepDuration_Fast: ; 4b26 call Random ld a, [hRandomAdd] and %00011111 ; fallthrough ; 4b2d -Function4b2d: ; 4b2d +SetRandomStepDuration: ; 4b2d ld hl, OBJECT_STEP_DURATION add hl, bc ld [hl], a ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], 1 ld hl, OBJECT_09 @@ -1602,20 +1600,21 @@ Function4b79: ; 4b79 ; 4b86 Function4b86: ; 4b86 - call JumptoObjectStructField28 + call Object28AnonymousJumptable +; anonymous jumptable dw Function4b8d dw Function4ba9 ; 4b8d Function4b8d: ; 4b8d - call Function46d7 + call AddStepVector call UpdateJumpPosition ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] ret nz call Function4600 - call Function46a6 + call GetCurTile ld hl, OBJECT_FLAGS2 add hl, bc res 3, [hl] @@ -1624,7 +1623,7 @@ Function4b8d: ; 4b8d ; 4ba9 Function4ba9: ; 4ba9 - call Function46d7 + call AddStepVector call UpdateJumpPosition ld hl, OBJECT_STEP_DURATION add hl, bc @@ -1638,7 +1637,8 @@ Function4ba9: ; 4ba9 ; 4bbf Function4bbf: ; 4bbf - call JumptoObjectStructField28 + call Object28AnonymousJumptable +; anonymous jumptable dw Function4bca dw Function4bd2 dw Function4bf2 @@ -1671,7 +1671,7 @@ Function4bd2: ; 4bd2 ; 4bf2 Function4bf2: ; 4bf2 - call Function46a6 + call GetCurTile ld hl, wd150 set 7, [hl] call IncrementObjectStructField28 @@ -1695,7 +1695,8 @@ Function4bfd: ; 4bfd ; 4c18 Function4c18: ; 4c18 - call JumptoObjectStructField28 + call Object28AnonymousJumptable +; anonymous jumptable dw Function4c23 dw Function4c32 dw Function4c42 @@ -1714,7 +1715,7 @@ Function4c23: ; 4c23 ; 4c32 Function4c32: ; 4c32 - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], 4 ld hl, OBJECT_STEP_DURATION @@ -1743,7 +1744,7 @@ Function4c42: ; 4c42 ; 4c5d Function4c5d: ; 4c5d - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], 4 ld hl, OBJECT_31 @@ -1771,7 +1772,8 @@ Function4c5d: ; 4c5d ; 4c89 Function4c89: ; 4c89 - call JumptoObjectStructField28 + call Object28AnonymousJumptable +; anonymous jumptable dw Function4c9a dw Function4caa dw Function4cb3 @@ -1782,7 +1784,7 @@ Function4c89: ; 4c89 ; 4c9a Function4c9a: ; 4c9a - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], 0 ld hl, OBJECT_STEP_DURATION @@ -1816,7 +1818,7 @@ Function4cb3: ; 4cb3 ; 4cc9 Function4cc9: ; 4cc9 - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], 4 ld hl, OBJECT_31 @@ -1847,7 +1849,7 @@ Function4ceb: ; 4ceb ; 4cf5 Function4cf5: ; 4cf5 - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], 4 ld hl, OBJECT_STEP_DURATION @@ -1870,7 +1872,8 @@ Function4d01: ; 4d01 ; 4d14 Function4d14: ; 4d14 - call JumptoObjectStructField28 + call Object28AnonymousJumptable +; anonymous jumptable dw Function4d1f dw Function4d2e dw Function4d4f @@ -1878,7 +1881,7 @@ Function4d14: ; 4d14 ; 4d1f Function4d1f: ; 4d1f - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], 0 ld hl, OBJECT_STEP_DURATION @@ -1893,7 +1896,7 @@ Function4d2e: ; 4d2e add hl, bc dec [hl] ret nz - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], 2 ld hl, OBJECT_12 @@ -1943,7 +1946,8 @@ Function4d6b: ; 4d6b ; 4d7e Function4d7e: ; 4d7e - call JumptoObjectStructField28 + call Object28AnonymousJumptable +; anonymous jumptable dw Function4d85 dw Function4d94 ; 4d85 @@ -1993,7 +1997,7 @@ Function4db5: ; 4db5 ld a, 0 .yes - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], a ret @@ -2009,7 +2013,7 @@ Function4dc8: ; 4dc8 ld a, 5 .yes - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], a jp Function4b79 @@ -2052,7 +2056,8 @@ Function4dff: ; 4dff ; 4e0c Function4e0c: ; 4e0c - call JumptoObjectStructField28 + call Object28AnonymousJumptable +; anonymous jumptable dw Function4e13 dw Function4e21 ; 4e13 @@ -2077,7 +2082,7 @@ Function4e21: ; 4e21 Function4e2b: ; 4e2b call Function4fb2 - call Function46d7 + call AddStepVector ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] @@ -2093,18 +2098,19 @@ Function4e2b: ; 4e2b ; 4e47 Function4e47: ; 4e47 - call Function46d7 + call AddStepVector ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] ret nz call Function4600 - jp Function4b1d + jp RandomStepDuration_Slow ; 4e56 Function4e56: ; 4e56 ; AnimateStep? - call JumptoObjectStructField28 + call Object28AnonymousJumptable +; anonymous jumptable dw Function4e5d dw Function4e65 ; 4e5d @@ -2122,6 +2128,7 @@ Function4e65: ; 4e65 add hl, bc dec [hl] ret nz + ld hl, wd150 set 6, [hl] call Function4600 @@ -2135,7 +2142,8 @@ Function4e65: ; 4e65 ; 4e83 Function4e83: ; 4e83 - call JumptoObjectStructField28 + call Object28AnonymousJumptable +; anonymous jumptable dw Function4e8e dw Function4ea4 dw Function4ead @@ -2192,16 +2200,16 @@ Function4ec0: ; 4ec0 ; 4ecd Function4ecd: ; 4ecd - call Function46d7 + call AddStepVector ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] ret nz push bc - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld d, [hl] - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld e, [hl] ld hl, OBJECT_MAP_OBJECT_INDEX @@ -2259,7 +2267,8 @@ Function4f04: ; 4f04 ; 4f33 Function4f33: ; 4f33 - call JumptoObjectStructField28 + call Object28AnonymousJumptable +; anonymous jumptable dw Function4f3a dw Function4f43 ; 4f3a @@ -2312,24 +2321,26 @@ Function4f6c: ; 4f6c ; 4f77 Function4f77: ; 4f77 - call JumptoObjectStructField28 ; ???? + call Object28AnonymousJumptable ; ???? ; 4f7a Function4f7a: ; 4f7a - call JumptoObjectStructField28 + call Object28AnonymousJumptable +; anonymous jumptable dw Function4f83 dw Function4f83 dw Function4f83 ; 4f83 Function4f83: ; 4f83 - call JumptoObjectStructField28 + call Object28AnonymousJumptable +; anonymous jumptable dw Function4f8a dw Function4f99 ; 4f8a Function4f8a: ; 4f8a - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], $10 ld hl, OBJECT_STEP_DURATION @@ -2602,79 +2613,80 @@ Function550a: ; 550a ret ; 5529 -Function5529: ; 5529 +SpawnShadow: ; 5529 push bc - ld de, .data_5535 - call Function55b9 - call Function55ac + ld de, .ShadowObject + call CopyTempObjectData + call InitTempObject pop bc ret -.data_5535 - db $00, $05, $1b +.ShadowObject + ; vtile, palette, movement + db $00, PAL_OW_SILVER, SPRITEMOVEDATA_SHADOW ; 5538 -Function5538: ; 5538 +SpawnStrengthBoulderDust: ; 5538 push bc - ld de, .data_5544 - call Function55b9 - call Function55ac + ld de, .BoulderDustObject + call CopyTempObjectData + call InitTempObject pop bc ret -.data_5544 - db $00, $05, $22 +.BoulderDustObject + db $00, PAL_OW_SILVER, SPRITEMOVEDATA_BOULDERDUST ; 5547 -Function5547: ; 5547 +SpawnEmote: ; 5547 push bc - ld de, .data_5553 - call Function55b9 - call Function55ac + ld de, .EmoteObject + call CopyTempObjectData + call InitTempObject pop bc ret -.data_5553 - db $00, $05, $1c +.EmoteObject + db $00, PAL_OW_SILVER, SPRITEMOVEDATA_EMOTE ; 5556 -Function5556: ; 5556 +ShakeGrass: ; 5556 push bc ld de, .data_5562 - call Function55b9 - call Function55ac + call CopyTempObjectData + call InitTempObject pop bc ret .data_5562 - db $00, $06, $23 + db $00, PAL_OW_TREE, SPRITEMOVEDATA_GRASS ; 5565 -Function5565: ; 5565 +ShakeScreen: ; 5565 push bc push af - ld de, .data_5576 - call Function55b9 + ld de, .ScreenShakeObject + call CopyTempObjectData pop af - ld [wc2f5], a - call Function55ac + ld [wTempObjectCopyRange], a + call InitTempObject pop bc ret -.data_5576 - db $00, $05, $1d +.ScreenShakeObject + db $00, PAL_OW_SILVER, SPRITEMOVEDATA_SCREENSHAKE ; 5579 -Function5579: ; 5579 +DespawnEmote: ; 5579 push bc ld a, [hMapObjectIndexBuffer] ld c, a - call Function5582 + call .DeleteEmote pop bc ret ; 5582 -Function5582: ; 5582 +.DeleteEmote: ; 5582 ld de, ObjectStructs ld a, NUM_OBJECT_STRUCTS .loop @@ -2705,20 +2717,21 @@ Function5582: ; 5582 ret ; 55ac -Function55ac: ; 55ac +InitTempObject: ; 55ac call FindFirstEmptyObjectStruct ret nc ld d, h ld e, l - callba Function8286 + callba CopyTempObjectToObjectStruct ret ; 55b9 -Function55b9: ; 55b9 -; load into wc2f0: -; -1, -1, [de], [de + 1], [de + 2], [hMapObjectIndexBuffer], [MapX], [MapY], -1 - ld hl, wc2f0 +CopyTempObjectData: ; 55b9 +; load into wTempObjectCopy: +; -1, -1, [de], [de + 1], [de + 2], [hMapObjectIndexBuffer], [NextMapX], [NextMapY], -1 +; This spawns the object at the same place as whichever object is loaded into bc. + ld hl, wTempObjectCopyMapObjectIndex ld [hl], -1 inc hl ld [hl], -1 @@ -2737,10 +2750,10 @@ Function55b9: ; 55b9 ld [hli], a push hl - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld d, [hl] - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld e, [hl] pop hl @@ -2872,10 +2885,10 @@ Function5680: ; 5680 Function5688: ; 5688 push bc - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld d, [hl] - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld e, [hl] call GetCoordTile @@ -2888,10 +2901,10 @@ Function5688: ; 5688 ; 56a3 Function56a3: ; 56a3 - ld hl, OBJECT_MAP_X + ld hl, OBJECT_NEXT_MAP_X add hl, bc ld d, [hl] - ld hl, OBJECT_MAP_Y + ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld e, [hl] inc d @@ -3612,7 +3625,7 @@ Function59f3: ; 59f3 ld hl, OBJECT_FACING_STEP add hl, bc ld a, [hl] - cp -1 + cp STANDING jp z, .done cp NUM_FACINGS jp nc, .done diff --git a/engine/map_setup.asm b/engine/map_setup.asm index 9c99df2f6..7e0bfd3c1 100644 --- a/engine/map_setup.asm +++ b/engine/map_setup.asm @@ -311,10 +311,10 @@ SuspendMapAnims: ; 154d3 ; 154d7 LoadObjectsRunCallback_02: ; 154d7 - ld a, $2 + ld a, 2 call RunMapCallback callba LoadObjectMasks - callba Function8177 + callba InitializeVisibleSprites ret ; 154ea (5:54ea) diff --git a/engine/movement.asm b/engine/movement.asm index a908624e1..7708773aa 100644 --- a/engine/movement.asm +++ b/engine/movement.asm @@ -127,7 +127,7 @@ Movement_step_wait5: ; 5145 ld hl, OBJECT_12 add hl, bc ld [hl], a - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], $4 call GetMovementByte @@ -164,7 +164,7 @@ Movement_58: ; 516a ; 5189 Movement_fish_got_bite: ; 5189 - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], $6 ld hl, OBJECT_09 @@ -178,7 +178,7 @@ Movement_rock_smash: ; 5196 ld hl, OBJECT_STEP_DURATION add hl, bc ld [hl], a - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], $1 ld hl, OBJECT_09 @@ -188,7 +188,7 @@ Movement_rock_smash: ; 5196 ; 51ab Movement_fish_cast_rod: ; 51ab - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], $6 ld hl, OBJECT_09 @@ -262,7 +262,7 @@ Movement_remove_person: ; 51fd ; 5210 Movement_4b: ; 5210 - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], $1 @@ -323,7 +323,7 @@ Movement_step_sleep_common: ; 5247 add hl, bc ld [hl], OBJECT_09_VALUE_03 - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], $1 @@ -341,7 +341,7 @@ Movement_step_bump: ; 525f ld hl, OBJECT_09 add hl, bc ld [hl], OBJECT_09_VALUE_0B - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], $3 ld hl, OBJECT_DIRECTION_WALKING @@ -358,7 +358,7 @@ Movement_56: ; 5279 ld hl, OBJECT_09 add hl, bc ld [hl], OBJECT_09_VALUE_03 - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], $b ld hl, OBJECT_DIRECTION_WALKING @@ -384,14 +384,14 @@ Movement_39: ; 529c Movement_remove_fixed_facing: ; 52a5 ld hl, OBJECT_FLAGS1 add hl, bc - res 2, [hl] + res FIXED_FACING, [hl] jp ContinueReadingMovement ; 52ae Movement_fix_facing: ; 52ae ld hl, OBJECT_FLAGS1 add hl, bc - set 2, [hl] + set FIXED_FACING, [hl] jp ContinueReadingMovement ; 52b7 @@ -410,12 +410,12 @@ Movement_hide_person: ; 52c0 ; 52c9 Movement_hide_emote: ; 52c9 - call Function5579 + call DespawnEmote jp ContinueReadingMovement ; 52cf Movement_show_emote: ; 52cf - call Function5547 + call SpawnEmote jp ContinueReadingMovement ; 52d5 @@ -424,7 +424,7 @@ Movement_step_shake: ; 52d5 ; displacement (DecimalParam) call GetMovementByte - call Function5565 + call ShakeScreen jp ContinueReadingMovement ; 52de @@ -448,7 +448,7 @@ TurnHead: ; 52ee ld hl, OBJECT_FACING add hl, bc ld [hl], a - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], $1 ld hl, OBJECT_DIRECTION_WALKING @@ -721,7 +721,7 @@ HalfStep: ; 5400 ld hl, OBJECT_29 add hl, bc ld [hl], a - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], $2 ld hl, OBJECT_09 @@ -733,7 +733,7 @@ HalfStep: ; 5400 NormalStep: ; 5412 call Function4690 call Function463f - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], $2 ld hl, OBJECT_STANDING_TILE @@ -746,7 +746,7 @@ NormalStep: ; 5412 jr c, .asm_5430 .asm_542d - call Function5556 + call ShakeGrass .asm_5430 ld hl, wd4cf @@ -769,7 +769,7 @@ NormalStep: ; 5412 TurningStep: ; 5446 call Function4690 call Function463f - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], $4 ld hl, wd4cf @@ -792,7 +792,7 @@ TurningStep: ; 5446 SlideStep: ; 5468 call Function4690 call Function463f - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], $1 ld hl, wd4cf @@ -820,10 +820,10 @@ JumpStep: ; 548a ld hl, OBJECT_FLAGS2 add hl, bc res 3, [hl] - ld hl, OBJECT_11 + ld hl, OBJECT_ACTION add hl, bc ld [hl], $2 - call Function5529 + call SpawnShadow ld hl, wd4cf ld a, [hMapObjectIndexBuffer] cp [hl] diff --git a/engine/overworld.asm b/engine/overworld.asm index 517428007..566cc2a9b 100755 --- a/engine/overworld.asm +++ b/engine/overworld.asm @@ -732,9 +732,9 @@ EmotesPointers: ; 144d emote_header BoltEmote, 4, VTiles1 tile $78 emote_header SleepEmote, 4, VTiles1 tile $78 emote_header FishEmote, 4, VTiles1 tile $78 - emote_header FishingRodGFX1, 1, VTiles1 tile $7c + emote_header JumpShadowGFX, 1, VTiles1 tile $7c emote_header FishingRodGFX2, 2, VTiles1 tile $7c - emote_header FishingRodGFX3, 2, VTiles1 tile $7e + emote_header BoulderDustGFX, 2, VTiles1 tile $7e emote_header FishingRodGFX4, 1, VTiles1 tile $7e ; 14495 -- cgit v1.2.3 From b921226aea7e624655f0d32436638ea3ffd63419 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 14 Nov 2015 23:02:38 -0500 Subject: More map object, swap StandingTile and NextTile --- engine/events.asm | 6 +- engine/events_2.asm | 4 +- engine/facings.asm | 38 +++--- engine/map_objects.asm | 342 +++++++++++++++++++++++-------------------------- engine/movement.asm | 144 +++++++++++---------- engine/overworld.asm | 60 +++++---- 6 files changed, 297 insertions(+), 297 deletions(-) (limited to 'engine') diff --git a/engine/events.asm b/engine/events.asm index 004cbf33e..6e955b86d 100644 --- a/engine/events.asm +++ b/engine/events.asm @@ -252,7 +252,7 @@ Function967e1: ; 967e1 ; 967f4 Function967f4: ; 967f4 - ld a, [wd150] + ld a, [wPlayerStepFlags] bit 5, a jr z, .events bit 6, a @@ -273,7 +273,7 @@ Function967f4: ; 967f4 ; 96812 Function96812: ; 96812 - ld hl, wd150 + ld hl, wPlayerStepFlags bit 6, [hl] ret z @@ -396,7 +396,7 @@ CheckTileEvent: ; 96874 ret .warp_tile - ld a, [PlayerStandingTile] + ld a, [PlayerNextTile] call CheckPitTile jr nz, .not_pit ld a, PLAYEREVENT_FALL diff --git a/engine/events_2.asm b/engine/events_2.asm index f88a31c2a..4597e92e5 100644 --- a/engine/events_2.asm +++ b/engine/events_2.asm @@ -161,7 +161,7 @@ CanUseSweetScent:: ; 97cfd jr nc, .no .ice_check - ld a, [PlayerStandingTile] + ld a, [PlayerNextTile] call CheckIceTile jr z, .no scf @@ -235,7 +235,7 @@ ChooseWildEncounter_BugContest:: ; 97d31 ; 97d64 TryWildEncounter_BugContest: ; 97d64 - ld a, [PlayerStandingTile] + ld a, [PlayerNextTile] call CheckSuperTallGrassTile ld b, 40 percent jr z, .ok diff --git a/engine/facings.asm b/engine/facings.asm index 47e6fd352..9f516a306 100644 --- a/engine/facings.asm +++ b/engine/facings.asm @@ -50,7 +50,7 @@ BEHIND_BG EQU 1 << OAM_PRIORITY Facing00: Facing02: Facing24: -Facing26: ; 408b +Facing26: ; standing down db 4 ; # db 0, 0, 0, $00 db 0, 8, 0, $01 @@ -58,7 +58,7 @@ Facing26: ; 408b db 8, 8, 2, $03 ; 409c -Facing01: ; 409c +Facing01: ; walking down 1 db 4 ; # db 0, 0, 0, $80 db 0, 8, 0, $81 @@ -66,7 +66,7 @@ Facing01: ; 409c db 8, 8, 2, $83 ; 40ad -Facing03: ; 40ad +Facing03: ; walking down 2 db 4 ; # db 0, 8, X_FLIP, $80 db 0, 0, X_FLIP, $81 @@ -75,7 +75,7 @@ Facing03: ; 40ad ; 40be Facing04: -Facing06: ; 40be +Facing06: ; standing up db 4 ; # db 0, 0, 0, $04 db 0, 8, 0, $05 @@ -83,7 +83,7 @@ Facing06: ; 40be db 8, 8, 2, $07 ; 40cf -Facing05: ; 40cf +Facing05: ; walking up 1 db 4 ; # db 0, 0, 0, $84 db 0, 8, 0, $85 @@ -91,7 +91,7 @@ Facing05: ; 40cf db 8, 8, 2, $87 ; 40e0 -Facing07: ; 40e0 +Facing07: ; walking up 2 db 4 ; # db 0, 8, X_FLIP, $84 db 0, 0, X_FLIP, $85 @@ -100,7 +100,7 @@ Facing07: ; 40e0 ; 40f1 Facing08: -Facing10: ; 40f1 +Facing10: ; standing left db 4 ; # db 0, 0, 0, $08 db 0, 8, 0, $09 @@ -109,7 +109,7 @@ Facing10: ; 40f1 ; 4102 Facing12: -Facing14: ; 4102 +Facing14: ; standing right db 4 ; # db 0, 8, X_FLIP, $08 db 0, 0, X_FLIP, $09 @@ -118,7 +118,7 @@ Facing14: ; 4102 ; 4113 Facing09: -Facing11: ; 4113 +Facing11: ; walking left db 4 ; # db 0, 0, 0, $88 db 0, 8, 0, $89 @@ -127,7 +127,7 @@ Facing11: ; 4113 ; 4124 Facing13: -Facing15: ; 4124 +Facing15: ; walking right db 4 ; # db 0, 8, X_FLIP, $88 db 0, 0, X_FLIP, $89 @@ -135,7 +135,7 @@ Facing15: ; 4124 db 8, 0, 2 | X_FLIP, $8b ; 4135 -Facing16: ; 4135 +Facing16: ; fishing down db 5 ; # db 0, 0, 0, $00 db 0, 8, 0, $01 @@ -144,7 +144,7 @@ Facing16: ; 4135 db 16, 0, 4, $fc ; 414a -Facing17: ; 414a +Facing17: ; fishing up db 5 ; # db 0, 0, 0, $04 db 0, 8, 0, $05 @@ -153,7 +153,7 @@ Facing17: ; 414a db -8, 0, 4, $fc ; 415f -Facing18: ; 415f +Facing18: ; fishing left db 5 ; # db 0, 0, 0, $08 db 0, 8, 0, $09 @@ -162,7 +162,7 @@ Facing18: ; 415f db 5, -8, 4 | X_FLIP, $fd ; 4174 -Facing19: ; 4174 +Facing19: ; fishing right db 5 ; # db 0, 8, X_FLIP, $08 db 0, 0, X_FLIP, $09 @@ -171,7 +171,7 @@ Facing19: ; 4174 db 5, 16, 4, $fd ; 4189 -Facing20: ; 4189 +Facing20: ; emote db 4 ; # db 0, 0, 4, $f8 db 0, 8, 4, $f9 @@ -179,13 +179,13 @@ Facing20: ; 4189 db 8, 8, 4, $fb ; 419a -Facing21: ; 419a +Facing21: ; shadow db 2 ; # db 0, 0, 4, $fc db 0, 8, 4 | X_FLIP, $fc ; 41a3 -Facing23: ; 41a3 +Facing23: ; big doll db 16 ; # db 0, 0, 0, $00 db 0, 8, 0, $01 @@ -239,7 +239,7 @@ Facing22: ; 4206 db 24, 16, 0, $0b ; 423f -Facing28: ; 423f +Facing28: ; boulder dust 1 db 4 ; # db 0, 0, 4, $fe db 0, 8, 4, $fe @@ -247,7 +247,7 @@ Facing28: ; 423f db 8, 8, 4, $fe ; 4250 -Facing29: ; 4250 +Facing29: ; boulder dust 2 db 4 ; # db 0, 0, 4, $ff db 0, 8, 4, $ff diff --git a/engine/map_objects.asm b/engine/map_objects.asm index 670eca9a6..f15ca1401 100644 --- a/engine/map_objects.asm +++ b/engine/map_objects.asm @@ -151,7 +151,7 @@ Function4386: ; 4386 ; 43f3 Function43f3: ; 43f3 - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc ld a, [hl] and a @@ -162,7 +162,7 @@ Function43f3: ; 43f3 bit 5, [hl] jr nz, .bit5 - cp OBJECT_09_VALUE_01 + cp STEP_TYPE_01 jr z, .one jr .ok @@ -175,12 +175,13 @@ Function43f3: ; 43f3 .one call Function47dd - ld hl, OBJECT_09 + + ld hl, OBJECT_STEP_TYPE add hl, bc ld a, [hl] and a ret z - cp OBJECT_09_VALUE_01 + cp STEP_TYPE_01 ret z .ok @@ -242,40 +243,23 @@ endr ; 445f Pointers445f: ; 445f - dw Function44a3 ; 00 - dw Function44a3 ; 01 (00) - dw Function44b5 ; 02 (01) - dw Function44aa ; 03 (02) - dw Function44c1 ; 04 (03) - dw Function44aa ; 05 (04) - dw Function4508 ; 06 (05) - dw Function44aa ; 07 (06) - dw Function4529 ; 08 (07) - dw Function44aa ; 09 (08) - dw Function4539 ; 0a (09) - dw Function44a3 ; 0b (0a) - dw Function456e ; 0c (0b) - dw Function456e ; 0d (0c) - dw Function457b ; 0e (0d) - dw Function44a3 ; 0f (0e) - dw Function4582 ; 10 (0f) - dw Function4582 ; 11 (10) - dw Function4589 ; 12 (11) - dw Function4589 ; 13 (12) - dw Function4590 ; 14 (13) - dw Function45a4 ; 15 (14) - dw Function45ab ; 16 (15) - dw Function44aa ; 17 (16) - dw Function45be ; 18 (17) - dw Function45be ; 19 (18) - dw Function45c5 ; 1a (19) - dw Function45c5 ; 1b (1a) - dw Function45da ; 1c (1b) - dw Function44a3 ; 1d (1c) - dw Function45ed ; 1e (1d) - dw Function44a3 ; 1f (1e) - dw Function44e4 ; 20 (1f) - dw Function44aa ; 21 (20) + dw Function44a3, Function44a3 ; 00 + dw Function44b5, Function44aa ; 01 + dw Function44c1, Function44aa ; 02 + dw Function4508, Function44aa ; 03 + dw Function4529, Function44aa ; 04 + dw Function4539, Function44a3 ; 05 + dw Function456e, Function456e ; 06 + dw Function457b, Function44a3 ; 07 + dw Function4582, Function4582 ; 08 + dw Function4589, Function4589 ; 09 + dw Function4590, Function45a4 ; 0a + dw Function45ab, Function44aa ; 0c + dw Function45be, Function45be ; 0b + dw Function45c5, Function45c5 ; 0d + dw Function45da, Function44a3 ; 0e + dw Function45ed, Function44a3 ; 0f + dw Function44e4, Function44aa ; 10 ; 44a3 Function44a3: ; 44a3 @@ -571,15 +555,15 @@ Function4600: ; 4600 add hl, bc ld [hl], a - ld hl, OBJECT_STANDING_TILE + ld hl, OBJECT_NEXT_TILE add hl, bc ld a, [hl] - ld hl, OBJECT_NEXT_TILE + ld hl, OBJECT_STANDING_TILE add hl, bc ld [hl], a call Function4661 - ld hl, OBJECT_STANDING_TILE + ld hl, OBJECT_NEXT_TILE add hl, bc ld a, [hl] @@ -611,18 +595,18 @@ Function463f: ; 463f add hl, bc bit 3, [hl] jr z, .ok - ld hl, OBJECT_STANDING_TILE + ld hl, OBJECT_NEXT_TILE add hl, bc ld a, [hl] call Function4661 .ok - ld hl, OBJECT_STANDING_TILE + ld hl, OBJECT_NEXT_TILE add hl, bc ld a, [hl] call Function4679 ret c - ld hl, OBJECT_NEXT_TILE + ld hl, OBJECT_STANDING_TILE add hl, bc ld a, [hl] call Function4679 @@ -677,7 +661,7 @@ Function4690: ; 4690 ld hl, OBJECT_FLAGS1 add hl, bc bit FIXED_FACING, [hl] - jr nz, GetCurTile + jr nz, GetStandingTile rept 2 add a @@ -686,7 +670,7 @@ endr ld hl, OBJECT_FACING add hl, bc ld [hl], a -GetCurTile: ; 46a6 +GetStandingTile: ; 46a6 call GetStepVector @@ -718,7 +702,7 @@ GetCurTile: ; 46a6 call GetCoordTile pop bc - ld hl, OBJECT_STANDING_TILE + ld hl, OBJECT_NEXT_TILE add hl, bc ld [hl], a @@ -801,15 +785,15 @@ Function4738: ; 4738 add hl, bc ld a, [hl] and %00000011 - ld [wd151], a + ld [wPlayerStepDirection], a call AddStepVector - ld a, [wd14e] + ld a, [wPlayerStepVectorX] add d - ld [wd14e], a - ld a, [wd14f] + ld [wPlayerStepVectorX], a + ld a, [wPlayerStepVectorY] add e - ld [wd14f], a - ld hl, wd150 + ld [wPlayerStepVectorY], a + ld hl, wPlayerStepFlags set 5, [hl] ret ; 4759 @@ -925,14 +909,14 @@ Function47bc: ; 47bc push bc call GetCoordTile pop bc - ld hl, OBJECT_STANDING_TILE + ld hl, OBJECT_NEXT_TILE add hl, bc ld [hl], a call Function4600 call Function467b - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_01 + ld [hl], STEP_TYPE_01 ret ; 47dd @@ -965,15 +949,15 @@ Function47dd: ; 47dd dw .Script ; 10 dw .Strength ; 11 dw .FollowNotExact ; 12 - dw .Movement13 ; 13 - dw .Movement14 ; 14 + dw .MovementShadow ; 13 + dw .MovementEmote ; 14 dw .MovementBigStanding ; 15 dw .MovementBouncing ; 16 - dw .Movement17 ; 17 + dw .MovementScreenShake ; 17 dw .MovementSpinClockwise ; 18 dw .MovementSpinCounterclockwise ; 19 - dw .Movement1a ; 1a - dw .Movement1b ; 1b + dw .MovementBoulderDust ; 1a + dw .MovementShakingGrass ; 1b ; 4821 .Null_00: ; 4821 @@ -1035,10 +1019,10 @@ Function47dd: ; 47dd call Function467b ld hl, OBJECT_ACTION add hl, bc - ld [hl], 1 - ld hl, OBJECT_09 + ld [hl], PERSON_ACTION_01 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_05 + ld [hl], STEP_TYPE_05 ret ; 487c @@ -1095,7 +1079,7 @@ Function47dd: ; 47dd ; 48b3 .Strength_Start: ; 48b3 - ld hl, OBJECT_STANDING_TILE + ld hl, OBJECT_NEXT_TILE add hl, bc ld a, [hl] call CheckPitTile @@ -1120,9 +1104,9 @@ Function47dd: ; 47dd call PlaySFX call SpawnStrengthBoulderDust call Function463f - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_0F + ld [hl], STEP_TYPE_0F ret .ok2 @@ -1210,7 +1194,7 @@ Function47dd: ; 47dd ld [hl], STANDING ld hl, OBJECT_ACTION add hl, bc - ld [hl], 1 + ld [hl], PERSON_ACTION_01 ret ; 4958 @@ -1221,10 +1205,10 @@ Function47dd: ; 47dd ld [hl], STANDING ld hl, OBJECT_ACTION add hl, bc - ld [hl], 9 - ld hl, OBJECT_09 + ld [hl], PERSON_ACTION_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_04 + ld [hl], STEP_TYPE_04 ret ; 496e @@ -1235,10 +1219,10 @@ Function47dd: ; 47dd ld [hl], STANDING ld hl, OBJECT_ACTION add hl, bc - ld [hl], 10 - ld hl, OBJECT_09 + ld [hl], PERSON_ACTION_0A + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_04 + ld [hl], STEP_TYPE_04 ret ; 4984 @@ -1265,17 +1249,17 @@ Function47dd: ; 47dd .MovementSpinRepeat: ; 499c ld hl, OBJECT_ACTION add hl, bc - ld [hl], 1 + ld [hl], PERSON_ACTION_01 ld hl, OBJECT_RANGE add hl, bc ld a, [hl] - ld a, 16 + ld a, $10 ld hl, OBJECT_STEP_DURATION add hl, bc ld [hl], a - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_03 + ld [hl], STEP_TYPE_03 call IncrementObjectMovementByteIndex ret ; 49b8 @@ -1318,11 +1302,11 @@ Function47dd: ; 47dd ret ; 49e5 -.Movement13: ; 49e5 - call ._Movement13_14_1a_1b +.MovementShadow: ; 49e5 + call ._MovementShadow_14_1a_1b ld hl, OBJECT_ACTION add hl, bc - ld [hl], $7 + ld [hl], PERSON_ACTION_07 ld hl, OBJECT_STEP_DURATION add hl, de ld a, [hl] @@ -1350,39 +1334,39 @@ Function47dd: ; 47dd ld hl, OBJECT_SPRITE_X_OFFSET add hl, bc ld [hl], 0 - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_13 + ld [hl], STEP_TYPE_13 ret ; 4a21 -.Movement14: ; 4a21 +.MovementEmote: ; 4a21 call Function467b - call ._Movement13_14_1a_1b + call ._MovementShadow_14_1a_1b ld hl, OBJECT_ACTION add hl, bc - ld [hl], 8 + ld [hl], PERSON_ACTION_08 ld hl, OBJECT_STEP_DURATION add hl, bc ld [hl], 0 ld hl, OBJECT_SPRITE_Y_OFFSET add hl, bc - ld [hl], $f0 + ld [hl], -$10 ld hl, OBJECT_SPRITE_X_OFFSET add hl, bc ld [hl], 0 - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_13 + ld [hl], STEP_TYPE_13 ret ; 4a46 -.Movement1a: ; 4a46 +.MovementBoulderDust: ; 4a46 call Function467b - call ._Movement13_14_1a_1b + call ._MovementShadow_14_1a_1b ld hl, OBJECT_ACTION add hl, bc - ld [hl], $e + ld [hl], PERSON_ACTION_0E ld hl, OBJECT_STEP_DURATION add hl, de ld a, [hl] @@ -1410,9 +1394,9 @@ endr ld hl, OBJECT_SPRITE_Y_OFFSET add hl, bc ld [hl], e - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_13 + ld [hl], STEP_TYPE_13 ret ; 4a81 @@ -1424,12 +1408,12 @@ endr db -6, 2 ; 4a89 -.Movement1b: ; 4a89 +.MovementShakingGrass: ; 4a89 call Function467b - call ._Movement13_14_1a_1b + call ._MovementShadow_14_1a_1b ld hl, OBJECT_ACTION add hl, bc - ld [hl], $f + ld [hl], PERSON_ACTION_0F ld hl, OBJECT_STEP_DURATION add hl, de ld a, [hl] @@ -1437,13 +1421,13 @@ endr ld hl, OBJECT_STEP_DURATION add hl, bc ld [hl], a - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_13 + ld [hl], STEP_TYPE_13 ret ; 4aa8 -._Movement13_14_1a_1b: ; 4aa8 +._MovementShadow_14_1a_1b: ; 4aa8 ld hl, OBJECT_RANGE add hl, bc ld a, [hl] @@ -1460,28 +1444,28 @@ endr ret ; 4abc -.Movement17: ; 4abc +.MovementScreenShake: ; 4abc call Function467b ld hl, OBJECT_ACTION add hl, bc - ld [hl], 0 + ld [hl], PERSON_ACTION_00 ld hl, OBJECT_RANGE add hl, bc ld a, [hl] - call ._Movement17 + call ._MovementScreenShake ld hl, OBJECT_STEP_DURATION add hl, bc ld [hl], e ld hl, OBJECT_30 add hl, bc ld [hl], a - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_15 + ld [hl], STEP_TYPE_15 ret ; 4ade -._Movement17: ; 4ade +._MovementScreenShake: ; 4ade ld d, a and %00111111 ld e, a @@ -1506,20 +1490,20 @@ endr call Function463f ld hl, OBJECT_ACTION add hl, bc - ld [hl], 2 + ld [hl], PERSON_ACTION_02 ld hl, wd4cf ld a, [hMapObjectIndexBuffer] cp [hl] jr z, .load_6 - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_07 + ld [hl], STEP_TYPE_07 ret .load_6 - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_06 + ld [hl], STEP_TYPE_06 ret Function4b17: ; 4b17 @@ -1551,15 +1535,15 @@ SetRandomStepDuration: ; 4b2d ld [hl], STANDING ld hl, OBJECT_ACTION add hl, bc - ld [hl], 1 - ld hl, OBJECT_09 + ld [hl], PERSON_ACTION_01 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_03 + ld [hl], STEP_TYPE_03 ret ; 4b45 Pointers4b45: ; 4b45 -; These pointers use OBJECT_09. See constants/sprite_constants.asm +; These pointers use OBJECT_STEP_TYPE. See constants/sprite_constants.asm dw Function47bc ; 00 dw Function47dd ; 01 dw Function4e2b ; 02 @@ -1593,9 +1577,9 @@ Function4b79: ; 4b79 add hl, bc dec [hl] ret nz - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_01 + ld [hl], STEP_TYPE_01 ret ; 4b86 @@ -1614,7 +1598,7 @@ Function4b8d: ; 4b8d dec [hl] ret nz call Function4600 - call GetCurTile + call GetStandingTile ld hl, OBJECT_FLAGS2 add hl, bc res 3, [hl] @@ -1630,9 +1614,9 @@ Function4ba9: ; 4ba9 dec [hl] ret nz call Function4600 - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_01 + ld [hl], STEP_TYPE_01 ret ; 4bbf @@ -1646,7 +1630,7 @@ Function4bbf: ; 4bbf ; 4bca Function4bca: ; 4bca - ld hl, wd150 + ld hl, wPlayerStepFlags set 7, [hl] call IncrementObjectStructField28 ; fallthrough @@ -1663,7 +1647,7 @@ Function4bd2: ; 4bd2 ld hl, OBJECT_FLAGS2 add hl, bc res 3, [hl] - ld hl, wd150 + ld hl, wPlayerStepFlags set 6, [hl] set 4, [hl] call IncrementObjectStructField28 @@ -1671,8 +1655,8 @@ Function4bd2: ; 4bd2 ; 4bf2 Function4bf2: ; 4bf2 - call GetCurTile - ld hl, wd150 + call GetStandingTile + ld hl, wPlayerStepFlags set 7, [hl] call IncrementObjectStructField28 ; fallthrough @@ -1685,12 +1669,12 @@ Function4bfd: ; 4bfd add hl, bc dec [hl] ret nz - ld hl, wd150 + ld hl, wPlayerStepFlags set 6, [hl] call Function4600 - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_01 + ld [hl], STEP_TYPE_01 ret ; 4c18 @@ -1717,7 +1701,7 @@ Function4c23: ; 4c23 Function4c32: ; 4c32 ld hl, OBJECT_ACTION add hl, bc - ld [hl], 4 + ld [hl], PERSON_ACTION_04 ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] @@ -1746,7 +1730,7 @@ Function4c42: ; 4c42 Function4c5d: ; 4c5d ld hl, OBJECT_ACTION add hl, bc - ld [hl], 4 + ld [hl], PERSON_ACTION_04 ld hl, OBJECT_31 add hl, bc inc [hl] @@ -1765,9 +1749,9 @@ Function4c5d: ; 4c5d ld hl, OBJECT_12 add hl, bc ld [hl], 0 - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_01 + ld [hl], STEP_TYPE_01 ret ; 4c89 @@ -1786,7 +1770,7 @@ Function4c89: ; 4c89 Function4c9a: ; 4c9a ld hl, OBJECT_ACTION add hl, bc - ld [hl], 0 + ld [hl], PERSON_ACTION_00 ld hl, OBJECT_STEP_DURATION add hl, bc ld [hl], $10 @@ -1820,7 +1804,7 @@ Function4cb3: ; 4cb3 Function4cc9: ; 4cc9 ld hl, OBJECT_ACTION add hl, bc - ld [hl], 4 + ld [hl], PERSON_ACTION_04 ld hl, OBJECT_31 add hl, bc inc [hl] @@ -1851,7 +1835,7 @@ Function4ceb: ; 4ceb Function4cf5: ; 4cf5 ld hl, OBJECT_ACTION add hl, bc - ld [hl], 4 + ld [hl], PERSON_ACTION_04 ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] @@ -1865,9 +1849,9 @@ Function4d01: ; 4d01 ld hl, OBJECT_SPRITE_Y_OFFSET add hl, bc ld [hl], 0 - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_01 + ld [hl], STEP_TYPE_01 ret ; 4d14 @@ -1883,7 +1867,7 @@ Function4d14: ; 4d14 Function4d1f: ; 4d1f ld hl, OBJECT_ACTION add hl, bc - ld [hl], 0 + ld [hl], PERSON_ACTION_00 ld hl, OBJECT_STEP_DURATION add hl, bc ld [hl], $10 @@ -1898,7 +1882,7 @@ Function4d2e: ; 4d2e ret nz ld hl, OBJECT_ACTION add hl, bc - ld [hl], 2 + ld [hl], PERSON_ACTION_02 ld hl, OBJECT_12 add hl, bc ld [hl], 0 @@ -1939,9 +1923,9 @@ Function4d6b: ; 4d6b ld hl, OBJECT_SPRITE_Y_OFFSET add hl, bc ld [hl], 0 - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_01 + ld [hl], STEP_TYPE_01 ret ; 4d7e @@ -1976,9 +1960,9 @@ Function4d94: ; 4d94 ld hl, OBJECT_SPRITE_Y_OFFSET add hl, bc ld [hl], 0 - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_01 + ld [hl], STEP_TYPE_01 ret ; 4daf @@ -1992,9 +1976,9 @@ Function4db5: ; 4db5 add hl, bc ld a, [hl] and %00000001 - ld a, 1 + ld a, PERSON_ACTION_01 jr z, .yes - ld a, 0 + ld a, PERSON_ACTION_00 .yes ld hl, OBJECT_ACTION @@ -2008,9 +1992,9 @@ Function4dc8: ; 4dc8 add hl, bc ld a, [hl] and %00000001 - ld a, 4 + ld a, PERSON_ACTION_04 jr z, .yes - ld a, 5 + ld a, PERSON_ACTION_05 .yes ld hl, OBJECT_ACTION @@ -2027,9 +2011,9 @@ Function4ddd: ; 4ddd add hl, bc dec [hl] ret nz - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_01 + ld [hl], STEP_TYPE_01 ret ; 4df0 @@ -2049,9 +2033,9 @@ Function4dff: ; 4dff add hl, bc dec [hl] ret nz - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_01 + ld [hl], STEP_TYPE_01 ret ; 4e0c @@ -2091,9 +2075,9 @@ Function4e2b: ; 4e2b ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_01 + ld [hl], STEP_TYPE_01 ret ; 4e47 @@ -2116,7 +2100,7 @@ Function4e56: ; 4e56 ; 4e5d Function4e5d: ; 4e5d - ld hl, wd150 + ld hl, wPlayerStepFlags set 7, [hl] call IncrementObjectStructField28 ; fallthrough @@ -2129,15 +2113,15 @@ Function4e65: ; 4e65 dec [hl] ret nz - ld hl, wd150 + ld hl, wPlayerStepFlags set 6, [hl] call Function4600 ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_01 + ld [hl], STEP_TYPE_01 ret ; 4e83 @@ -2193,9 +2177,9 @@ Function4ec0: ; 4ec0 add hl, bc dec [hl] ret nz - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_01 + ld [hl], STEP_TYPE_01 ret ; 4ecd @@ -2225,9 +2209,9 @@ Function4ecd: ; 4ecd ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_01 + ld [hl], STEP_TYPE_01 ret ; 4f04 @@ -2286,9 +2270,9 @@ Function4f43: ; 4f43 ld hl, OBJECT_29 add hl, bc ld d, [hl] - ld a, [wd14f] + ld a, [wPlayerStepVectorY] sub d - ld [wd14f], a + ld [wPlayerStepVectorY], a ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] @@ -2299,9 +2283,9 @@ Function4f43: ; 4f43 add hl, bc ld [hl], a ld d, a - ld a, [wd14f] + ld a, [wPlayerStepVectorY] add d - ld [wd14f], a + ld [wPlayerStepVectorY], a ret .ok @@ -2342,10 +2326,10 @@ Function4f83: ; 4f83 Function4f8a: ; 4f8a ld hl, OBJECT_ACTION add hl, bc - ld [hl], $10 + ld [hl], PERSON_ACTION_10 ld hl, OBJECT_STEP_DURATION add hl, bc - ld [hl], $10 + ld [hl], 16 call IncrementObjectStructField28 ; 4f99 @@ -2360,9 +2344,9 @@ Function4f99: ; 4f99 ld hl, OBJECT_12 add hl, bc ld [hl], 0 - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_01 + ld [hl], STEP_TYPE_01 ret ; 4fb2 @@ -2893,7 +2877,7 @@ Function5688: ; 5688 ld e, [hl] call GetCoordTile pop bc - ld hl, OBJECT_STANDING_TILE + ld hl, OBJECT_NEXT_TILE add hl, bc ld [hl], a callba Function463f @@ -3060,11 +3044,11 @@ Function576a:: ; 576a Function5771: ; 5771 xor a - ld [wd14e], a - ld [wd14f], a - ld [wd150], a + ld [wPlayerStepVectorX], a + ld [wPlayerStepVectorY], a + ld [wPlayerStepFlags], a ld a, -1 - ld [wd151], a + ld [wPlayerStepDirection], a ret ; 5781 @@ -3203,9 +3187,9 @@ SetFollowerIfVisible: ; 582c ld hl, OBJECT_MOVEMENTTYPE add hl, bc ld [hl], SPRITEMOVEDATA_FOLLOWING - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_00 + ld [hl], STEP_TYPE_00 ld a, [hObjectStructIndexBuffer] ld [wObjectFollow_Follower], a ret @@ -3343,9 +3327,9 @@ Function58e3: ; 58e3 add hl, bc ld [hl], a - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_00 + ld [hl], STEP_TYPE_00 ret ; 5903 @@ -3362,9 +3346,9 @@ Function5903: ; 5903 add hl, bc ld [hl], a - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_00 + ld [hl], STEP_TYPE_00 ret .standing_movefns diff --git a/engine/movement.asm b/engine/movement.asm index 7708773aa..4e3182c12 100644 --- a/engine/movement.asm +++ b/engine/movement.asm @@ -93,30 +93,30 @@ MovementPointers: ; 5075 Movement_teleport_from: ; 5129 - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_0C + ld [hl], STEP_TYPE_0C ret ; 5130 Movement_teleport_to: ; 5130 - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_0D + ld [hl], STEP_TYPE_0D ret ; 5137 Movement_skyfall: ; 5137 - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_0E + ld [hl], STEP_TYPE_0E ret ; 513e Movement_59: ; 513e - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_19 + ld [hl], STEP_TYPE_19 ret ; 5145 @@ -129,14 +129,14 @@ Movement_step_wait5: ; 5145 ld [hl], a ld hl, OBJECT_ACTION add hl, bc - ld [hl], $4 + ld [hl], PERSON_ACTION_04 call GetMovementByte ld hl, OBJECT_STEP_DURATION add hl, bc ld [hl], a - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_03 + ld [hl], STEP_TYPE_03 ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING @@ -157,19 +157,19 @@ Movement_58: ; 516a ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_12 + ld [hl], STEP_TYPE_12 ret ; 5189 Movement_fish_got_bite: ; 5189 ld hl, OBJECT_ACTION add hl, bc - ld [hl], $6 - ld hl, OBJECT_09 + ld [hl], PERSON_ACTION_06 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_10 + ld [hl], STEP_TYPE_10 ret ; 5196 @@ -180,20 +180,20 @@ Movement_rock_smash: ; 5196 ld [hl], a ld hl, OBJECT_ACTION add hl, bc - ld [hl], $1 - ld hl, OBJECT_09 + ld [hl], PERSON_ACTION_01 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_11 + ld [hl], STEP_TYPE_11 ret ; 51ab Movement_fish_cast_rod: ; 51ab ld hl, OBJECT_ACTION add hl, bc - ld [hl], $6 - ld hl, OBJECT_09 + ld [hl], PERSON_ACTION_06 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_01 + ld [hl], STEP_TYPE_01 ret ; 51b8 @@ -217,9 +217,9 @@ Movement_step_end: ; 51c1 ld hl, VramState res 7, [hl] - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_01 + ld [hl], STEP_TYPE_01 ret ; 51db @@ -238,9 +238,9 @@ Movement_48: ; 51db add hl, bc ld [hl], a - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_03 + ld [hl], STEP_TYPE_03 ld hl, VramState res 7, [hl] @@ -264,11 +264,11 @@ Movement_remove_person: ; 51fd Movement_4b: ; 5210 ld hl, OBJECT_ACTION add hl, bc - ld [hl], $1 + ld [hl], PERSON_ACTION_01 - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_04 + ld [hl], STEP_TYPE_04 ld hl, VramState res 7, [hl] @@ -319,13 +319,13 @@ Movement_step_sleep_common: ; 5247 add hl, bc ld [hl], a - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_03 + ld [hl], STEP_TYPE_03 ld hl, OBJECT_ACTION add hl, bc - ld [hl], $1 + ld [hl], PERSON_ACTION_01 ld hl, OBJECT_DIRECTION_WALKING add hl, bc @@ -338,12 +338,12 @@ Movement_step_bump: ; 525f ld hl, OBJECT_STEP_DURATION add hl, bc ld [hl], a - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_0B + ld [hl], STEP_TYPE_0B ld hl, OBJECT_ACTION add hl, bc - ld [hl], $3 + ld [hl], PERSON_ACTION_03 ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING @@ -351,16 +351,19 @@ Movement_step_bump: ; 525f ; 5279 Movement_56: ; 5279 - ld a, $18 + ld a, 24 ld hl, OBJECT_STEP_DURATION add hl, bc ld [hl], a - ld hl, OBJECT_09 + + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_03 + ld [hl], STEP_TYPE_03 + ld hl, OBJECT_ACTION add hl, bc - ld [hl], $b + ld [hl], PERSON_ACTION_0B + ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING @@ -448,9 +451,11 @@ TurnHead: ; 52ee ld hl, OBJECT_FACING add hl, bc ld [hl], a + ld hl, OBJECT_ACTION add hl, bc - ld [hl], $1 + ld [hl], PERSON_ACTION_01 + ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING @@ -721,12 +726,14 @@ HalfStep: ; 5400 ld hl, OBJECT_29 add hl, bc ld [hl], a + ld hl, OBJECT_ACTION add hl, bc - ld [hl], $2 - ld hl, OBJECT_09 + ld [hl], PERSON_ACTION_02 + + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_0A + ld [hl], STEP_TYPE_0A ret ; 5412 @@ -735,34 +742,35 @@ NormalStep: ; 5412 call Function463f ld hl, OBJECT_ACTION add hl, bc - ld [hl], $2 - ld hl, OBJECT_STANDING_TILE + ld [hl], PERSON_ACTION_02 + + ld hl, OBJECT_NEXT_TILE add hl, bc ld a, [hl] call CheckSuperTallGrassTile - jr z, .asm_542d + jr z, .shake_grass call Function1875 - jr c, .asm_5430 + jr c, .skip_grass -.asm_542d +.shake_grass call ShakeGrass -.asm_5430 +.skip_grass ld hl, wd4cf ld a, [hMapObjectIndexBuffer] cp [hl] jr z, .asm_543f - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_02 + ld [hl], STEP_TYPE_02 ret .asm_543f - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_06 + ld [hl], STEP_TYPE_06 ret ; 5446 @@ -771,20 +779,20 @@ TurningStep: ; 5446 call Function463f ld hl, OBJECT_ACTION add hl, bc - ld [hl], $4 + ld [hl], PERSON_ACTION_04 ld hl, wd4cf ld a, [hMapObjectIndexBuffer] cp [hl] jr z, .asm_5461 - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_02 + ld [hl], STEP_TYPE_02 ret .asm_5461 - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_06 + ld [hl], STEP_TYPE_06 ret ; 5468 @@ -794,20 +802,20 @@ SlideStep: ; 5468 call Function463f ld hl, OBJECT_ACTION add hl, bc - ld [hl], $1 + ld [hl], PERSON_ACTION_01 ld hl, wd4cf ld a, [hMapObjectIndexBuffer] cp [hl] jr z, .asm_5483 - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_02 + ld [hl], STEP_TYPE_02 ret .asm_5483 - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_06 + ld [hl], STEP_TYPE_06 ret ; 548a @@ -822,20 +830,20 @@ JumpStep: ; 548a res 3, [hl] ld hl, OBJECT_ACTION add hl, bc - ld [hl], $2 + ld [hl], PERSON_ACTION_02 call SpawnShadow ld hl, wd4cf ld a, [hMapObjectIndexBuffer] cp [hl] jr z, .asm_54b1 - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_08 + ld [hl], STEP_TYPE_08 ret .asm_54b1 - ld hl, OBJECT_09 + ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], OBJECT_09_VALUE_09 + ld [hl], STEP_TYPE_09 ret ; 54b8 diff --git a/engine/overworld.asm b/engine/overworld.asm index 566cc2a9b..fa4d02e7c 100755 --- a/engine/overworld.asm +++ b/engine/overworld.asm @@ -13,11 +13,11 @@ _ReplaceKrisSprite:: ; 14135 ld [hUsedSpriteIndex], a ld a, [UsedSprites + 1] ld [hUsedSpriteTile], a - call Function143c8 + call GetUsedSprite ret ; 14146 -Function14146: ; 14146 +Function14146: ; mobile ld hl, wSpriteFlags ld a, [hl] push af @@ -29,7 +29,7 @@ Function14146: ; 14146 ret ; 14157 -Function14157: ; 14157 +Function14157: ; mobile ld hl, wSpriteFlags ld a, [hl] push af @@ -168,23 +168,23 @@ endr RunCallback_04: ; 14209 ld a, $4 call RunMapCallback - call Function1439b - call Function14215 + call GetUsedSprites + call .LoadMiscTiles ret ; 14215 -Function14215: ; 14215 +.LoadMiscTiles: ; 14215 ld a, [wSpriteFlags] bit 6, a ret nz - ld c, EMOTE_08 + + ld c, EMOTE_SHADOW callba LoadEmote call GetMapPermission call CheckOutdoorMap ld c, EMOTE_0B jr z, .outdoor - ld c, EMOTE_0A - + ld c, EMOTE_BOULDER_DUST .outdoor callba LoadEmote ret @@ -575,29 +575,34 @@ GetSpriteLength: ; 14386 ; 1439b -Function1439b: ; 1439b +GetUsedSprites: ; 1439b ld hl, UsedSprites ld c, SPRITE_GFX_LIST_CAPACITY + .loop ld a, [wSpriteFlags] res 5, a ld [wSpriteFlags], a + ld a, [hli] and a jr z, .done ld [hUsedSpriteIndex], a + ld a, [hli] ld [hUsedSpriteTile], a + bit 7, a jr z, .dont_set + ld a, [wSpriteFlags] - set 5, a + set 5, a ; load VBank0 ld [wSpriteFlags], a .dont_set push bc push hl - call Function143c8 + call GetUsedSprite pop hl pop bc dec c @@ -607,7 +612,7 @@ Function1439b: ; 1439b ret ; 143c8 -Function143c8: ; 143c8 +GetUsedSprite: ; 143c8 ld a, [hUsedSpriteIndex] call SafeGetSprite ld a, [hUsedSpriteTile] @@ -632,14 +637,17 @@ endr ld d, h ld e, l pop hl + ld a, [wSpriteFlags] bit 5, a jr nz, .done bit 6, a jr nz, .done + ld a, [hUsedSpriteIndex] call _DoesSpriteHaveFacings jr c, .done + ld a, h add $8 ld h, a @@ -716,7 +724,7 @@ LoadEmote:: ; 1442f emote_header: MACRO dw \1 db \2 tiles, BANK(\1) - dw \3 + dw VTiles1 tile \3 ENDM EmotesPointers: ; 144d @@ -724,18 +732,18 @@ EmotesPointers: ; 144d ; db length, bank ; dw dest address - emote_header ShockEmote, 4, VTiles1 tile $78 - emote_header QuestionEmote, 4, VTiles1 tile $78 - emote_header HappyEmote, 4, VTiles1 tile $78 - emote_header SadEmote, 4, VTiles1 tile $78 - emote_header HeartEmote, 4, VTiles1 tile $78 - emote_header BoltEmote, 4, VTiles1 tile $78 - emote_header SleepEmote, 4, VTiles1 tile $78 - emote_header FishEmote, 4, VTiles1 tile $78 - emote_header JumpShadowGFX, 1, VTiles1 tile $7c - emote_header FishingRodGFX2, 2, VTiles1 tile $7c - emote_header BoulderDustGFX, 2, VTiles1 tile $7e - emote_header FishingRodGFX4, 1, VTiles1 tile $7e + emote_header ShockEmote, 4, $78 + emote_header QuestionEmote, 4, $78 + emote_header HappyEmote, 4, $78 + emote_header SadEmote, 4, $78 + emote_header HeartEmote, 4, $78 + emote_header BoltEmote, 4, $78 + emote_header SleepEmote, 4, $78 + emote_header FishEmote, 4, $78 + emote_header JumpShadowGFX, 1, $7c + emote_header FishingRodGFX2, 2, $7c + emote_header BoulderDustGFX, 2, $7e + emote_header FishingRodGFX4, 1, $7e ; 14495 -- cgit v1.2.3 From ead04b3b75c79446a337b5b2c38f2650f22a5f3b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 15 Nov 2015 14:59:38 -0500 Subject: Backup prior to global introduction of PERSONTYPE constants --- engine/events.asm | 37 ++++++++-------- engine/map_objects.asm | 115 ++++++++++++++++++++++++------------------------- engine/movement.asm | 2 +- 3 files changed, 76 insertions(+), 78 deletions(-) (limited to 'engine') diff --git a/engine/events.asm b/engine/events.asm index 6e955b86d..8538d9ec9 100644 --- a/engine/events.asm +++ b/engine/events.asm @@ -635,21 +635,23 @@ TryObjectEvent: ; 969b5 jp [hl] .nope_bugged + ; pop bc xor a ret .pointers - dbw 0, .zero - dbw 1, .one - dbw 2, .two - dbw 3, .three - dbw 4, .four - dbw 5, .five - dbw 6, .six + dbw PERSONTYPE_SCRIPT, .script + dbw PERSONTYPE_ITEMFRAGMENT, .itemfragment + dbw PERSONTYPE_TRAINER, .trainer + ; the remaining four are dummy events + dbw PERSONTYPE_3, .three + dbw PERSONTYPE_4, .four + dbw PERSONTYPE_5, .five + dbw PERSONTYPE_6, .six db -1 ; 96a04 -.zero ; 96a04 +.script ; 96a04 ld hl, MAPOBJECT_SCRIPT_POINTER add hl, bc ld a, [hli] @@ -657,11 +659,10 @@ TryObjectEvent: ; 969b5 ld l, a call GetMapScriptHeaderBank call CallScript -; ld a, -1 ret ; 96a12 -.one ; 96a12 +.itemfragment ; 96a12 ld hl, MAPOBJECT_SCRIPT_POINTER add hl, bc ld a, [hli] @@ -671,14 +672,14 @@ TryObjectEvent: ; 969b5 ld de, EngineBuffer1 ld bc, 2 call FarCopyBytes - ld a, 3 + ld a, PLAYEREVENT_ITEMBALL scf ret ; 96a29 -.two ; 96a29 - call Function3674 - ld a, 2 +.trainer ; 96a29 + call TalkToTrainer + ld a, PLAYEREVENT_TALKTOTRAINER scf ret ; 96a30 @@ -729,16 +730,16 @@ TryReadSign: ; 96a38 ; 96a59 .up - ld b, UP << 2 + ld b, OW_UP jr .checkdir .down - ld b, DOWN << 2 + ld b, OW_DOWN jr .checkdir .right - ld b, RIGHT << 2 + ld b, OW_RIGHT jr .checkdir .left - ld b, LEFT << 2 + ld b, OW_LEFT jr .checkdir .checkdir diff --git a/engine/map_objects.asm b/engine/map_objects.asm index f15ca1401..0c83b1986 100644 --- a/engine/map_objects.asm +++ b/engine/map_objects.asm @@ -197,12 +197,12 @@ Function4427: ; 4427 ld hl, OBJECT_FLAGS1 add hl, bc bit 0, [hl] - jr nz, Function44a3 + jr nz, SetFacingStanding ld hl, OBJECT_FLAGS2 add hl, bc bit 6, [hl] - jr nz, Function44a3 + jr nz, SetFacingStanding bit 5, [hl] jr nz, Function4448 @@ -215,7 +215,7 @@ Function4440: ; 4440 ld hl, OBJECT_FLAGS1 add hl, bc bit 0, [hl] - jr nz, Function44a3 + jr nz, SetFacingStanding ; fallthrough ; 4448 @@ -243,33 +243,33 @@ endr ; 445f Pointers445f: ; 445f - dw Function44a3, Function44a3 ; 00 - dw Function44b5, Function44aa ; 01 - dw Function44c1, Function44aa ; 02 - dw Function4508, Function44aa ; 03 - dw Function4529, Function44aa ; 04 - dw Function4539, Function44a3 ; 05 + dw SetFacingStanding, SetFacingStanding ; 00 + dw Function44b5, SetFacingCurrent ; 01 + dw Function44c1, SetFacingCurrent ; 02 + dw Function4508, SetFacingCurrent ; 03 + dw Function4529, SetFacingCurrent ; 04 + dw Function4539, SetFacingStanding ; 05 dw Function456e, Function456e ; 06 - dw Function457b, Function44a3 ; 07 + dw Function457b, SetFacingStanding ; 07 dw Function4582, Function4582 ; 08 dw Function4589, Function4589 ; 09 dw Function4590, Function45a4 ; 0a - dw Function45ab, Function44aa ; 0c + dw Function45ab, SetFacingCurrent ; 0c dw Function45be, Function45be ; 0b dw Function45c5, Function45c5 ; 0d - dw Function45da, Function44a3 ; 0e - dw Function45ed, Function44a3 ; 0f - dw Function44e4, Function44aa ; 10 + dw Function45da, SetFacingStanding ; 0e + dw Function45ed, SetFacingStanding ; 0f + dw Function44e4, SetFacingCurrent ; 10 ; 44a3 -Function44a3: ; 44a3 +SetFacingStanding: ; 44a3 ld hl, OBJECT_FACING_STEP add hl, bc - ld [hl], -1 + ld [hl], STANDING ret ; 44aa -Function44aa: ; 44aa +SetFacingCurrent: ; 44aa call GetSpriteDirection or 0 ; useless ld hl, OBJECT_FACING_STEP @@ -284,26 +284,28 @@ Function44b5: ; 44b5 ld a, [hl] and 1 jr nz, Function44c1 - jp Function44aa + jp SetFacingCurrent ; 44c1 Function44c1: ; 44c1 ld hl, OBJECT_FLAGS1 add hl, bc bit 3, [hl] - jp nz, Function44aa + jp nz, SetFacingCurrent + ld hl, OBJECT_12 add hl, bc ld a, [hl] inc a and %00001111 ld [hl], a + rrca rrca and %00000011 ld d, a call GetSpriteDirection - or 0 + or 0 ; useless or d ld hl, OBJECT_FACING_STEP add hl, bc @@ -315,7 +317,7 @@ Function44e4: ; 44e4 ld hl, OBJECT_FLAGS1 add hl, bc bit 3, [hl] - jp nz, Function44aa + jp nz, SetFacingCurrent ld hl, OBJECT_12 add hl, bc ld a, [hl] @@ -327,7 +329,7 @@ Function44e4: ; 44e4 and %00000011 ld d, a call GetSpriteDirection - or 0 + or 0 ; useless or d ld hl, OBJECT_FACING_STEP add hl, bc @@ -339,7 +341,7 @@ Function4508: ; 4508 ld hl, OBJECT_FLAGS1 add hl, bc bit 3, [hl] - jp nz, Function44aa + jp nz, SetFacingCurrent ld hl, OBJECT_12 add hl, bc inc [hl] @@ -350,7 +352,7 @@ Function4508: ; 4508 and %00000011 ld d, a call GetSpriteDirection - or 0 + or 0 ; useless or d ld hl, OBJECT_FACING_STEP add hl, bc @@ -363,7 +365,7 @@ Function4529: ; 4529 ld hl, OBJECT_FACING add hl, bc ld a, [hl] - or 0 + or 0 ; useless ld hl, OBJECT_FACING_STEP add hl, bc ld [hl], a @@ -372,7 +374,7 @@ Function4529: ; 4529 Function4539: ; 4539 call Function453f - jp Function44a3 + jp SetFacingStanding ; 453f Function453f: ; 453f @@ -409,7 +411,7 @@ Function453f: ; 453f ; 456a .Directions ; 456a - db DOWN << 2, RIGHT << 2, UP << 2, LEFT << 2 + db OW_DOWN, OW_RIGHT, OW_UP, OW_LEFT ; 456e Function456e: ; 456e @@ -562,12 +564,12 @@ Function4600: ; 4600 add hl, bc ld [hl], a - call Function4661 + call SetTallGrassFlags ld hl, OBJECT_NEXT_TILE add hl, bc ld a, [hl] - call Function4679 + call UselessAndA ret ; 462a @@ -593,30 +595,30 @@ Function462a: ; 462a Function463f: ; 463f ld hl, OBJECT_FLAGS2 add hl, bc - bit 3, [hl] + bit 3, [hl] ; is current tile grass? jr z, .ok ld hl, OBJECT_NEXT_TILE add hl, bc ld a, [hl] - call Function4661 + call SetTallGrassFlags .ok ld hl, OBJECT_NEXT_TILE add hl, bc ld a, [hl] - call Function4679 - ret c + call UselessAndA + ret c ; never happens ld hl, OBJECT_STANDING_TILE add hl, bc ld a, [hl] - call Function4679 + call UselessAndA ret ; 4661 -Function4661: ; 4661 +SetTallGrassFlags: ; 4661 call CheckSuperTallGrassTile jr z, .set - call Function1875 + call CheckGrassTile jr c, .reset .set @@ -632,7 +634,7 @@ Function4661: ; 4661 ret ; 4679 -Function4679: ; 4679 +UselessAndA: ; 4679 and a ret ; 467b @@ -661,7 +663,7 @@ Function4690: ; 4690 ld hl, OBJECT_FLAGS1 add hl, bc bit FIXED_FACING, [hl] - jr nz, GetStandingTile + jr nz, GetNextTile rept 2 add a @@ -670,8 +672,8 @@ endr ld hl, OBJECT_FACING add hl, bc ld [hl], a -GetStandingTile: ; 46a6 +GetNextTile: ; 46a6 call GetStepVector ld hl, OBJECT_STEP_DURATION @@ -852,7 +854,7 @@ DecrementObjectMovementByteIndex: ; 478d ret ; 4793 -JumptoObjectMovementByteIndex: ; 4793 +MovementAnonymousJumptable: ; 4793 ld hl, OBJECT_MOVEMENT_BYTE_INDEX add hl, bc ld a, [hl] @@ -1073,7 +1075,7 @@ Function47dd: ; 47dd ; 48ac .Strength: ; 48ac - call JumptoObjectMovementByteIndex + call MovementAnonymousJumptable dw .Strength_Start dw .Strength_Stop ; 48b3 @@ -1120,8 +1122,6 @@ Function47dd: ; 47dd .on_pit call IncrementObjectMovementByteIndex - ; fallthrough -; 48f8 .Strength_Stop: ; 48f8 ld hl, OBJECT_DIRECTION_WALKING @@ -1227,14 +1227,14 @@ Function47dd: ; 47dd ; 4984 .MovementSpinCounterclockwise: ; 4984 - call JumptoObjectMovementByteIndex + call MovementAnonymousJumptable dw .MovementSpinInit dw .MovementSpinRepeat dw .MovementSpinTurnLeft ; 498d .MovementSpinClockwise: ; 498d - call JumptoObjectMovementByteIndex + call MovementAnonymousJumptable dw .MovementSpinInit dw .MovementSpinRepeat dw .MovementSpinTurnRight @@ -1243,9 +1243,6 @@ Function47dd: ; 47dd .MovementSpinInit: ; 4996 call Function467b call IncrementObjectMovementByteIndex - ; fallthrough -; 499c - .MovementSpinRepeat: ; 499c ld hl, OBJECT_ACTION add hl, bc @@ -1271,7 +1268,7 @@ Function47dd: ; 47dd ; 49c0 .DirectionData_Counterclockwise ; 49c0 - db RIGHT << 2, LEFT << 2, DOWN << 2, UP << 2 + db OW_RIGHT, OW_LEFT, OW_DOWN, OW_UP ; 49c4 .MovementSpinTurnRight: ; 49c4 @@ -1281,7 +1278,7 @@ Function47dd: ; 47dd ; 49cc .DirectionData_Clockwise ; 49cc - db LEFT << 2, RIGHT << 2, UP << 2, DOWN << 2 + db OW_LEFT, OW_RIGHT, OW_UP, OW_DOWN ; 49d0 .MovementSpinNextFacing: ; 49d0 @@ -1485,16 +1482,19 @@ endr .RandomWalkContinue: ; 4af0 call Function4690 - call Function6ec1 - jr c, Function4b17 + call Function6ec1 ; check whether the object can move in that direction + jr c, .NewDuration + call Function463f ld hl, OBJECT_ACTION add hl, bc ld [hl], PERSON_ACTION_02 + ld hl, wd4cf ld a, [hMapObjectIndexBuffer] cp [hl] jr z, .load_6 + ld hl, OBJECT_STEP_TYPE add hl, bc ld [hl], STEP_TYPE_07 @@ -1506,12 +1506,9 @@ endr ld [hl], STEP_TYPE_06 ret -Function4b17: ; 4b17 +.NewDuration: ; 4b17 call Function467b call Function462a - ; fallthrough -; 4b1d - RandomStepDuration_Slow: ; 4b1d call Random ld a, [hRandomAdd] @@ -1598,7 +1595,7 @@ Function4b8d: ; 4b8d dec [hl] ret nz call Function4600 - call GetStandingTile + call GetNextTile ld hl, OBJECT_FLAGS2 add hl, bc res 3, [hl] @@ -1655,7 +1652,7 @@ Function4bd2: ; 4bd2 ; 4bf2 Function4bf2: ; 4bf2 - call GetStandingTile + call GetNextTile ld hl, wPlayerStepFlags set 7, [hl] call IncrementObjectStructField28 @@ -2880,7 +2877,7 @@ Function5688: ; 5688 ld hl, OBJECT_NEXT_TILE add hl, bc ld [hl], a - callba Function463f + callba Function463f ; no need to farcall ret ; 56a3 diff --git a/engine/movement.asm b/engine/movement.asm index 4e3182c12..bce6fdd92 100644 --- a/engine/movement.asm +++ b/engine/movement.asm @@ -750,7 +750,7 @@ NormalStep: ; 5412 call CheckSuperTallGrassTile jr z, .shake_grass - call Function1875 + call CheckGrassTile jr c, .skip_grass .shake_grass -- cgit v1.2.3 From aba038a4a4b5a1ef9ab683a3683849809ef95467 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 15 Nov 2015 21:28:15 -0500 Subject: Fix some movement macro/function names --- engine/events.asm | 2 +- engine/facings.asm | 4 +- engine/map_objects.asm | 228 ++++++++++++++++++++----------------------------- engine/movement.asm | 64 ++++++++------ engine/scripting.asm | 2 +- 5 files changed, 134 insertions(+), 166 deletions(-) (limited to 'engine') diff --git a/engine/events.asm b/engine/events.asm index 8538d9ec9..95c002042 100644 --- a/engine/events.asm +++ b/engine/events.asm @@ -245,7 +245,7 @@ Function967d1: ; 967d1 ; 967e1 Function967e1: ; 967e1 - callba RefreshMapAppearDisappear + callba _UpdateSprites callba Functiond4d2 callba PlaceMapNameSign ret diff --git a/engine/facings.asm b/engine/facings.asm index 9f516a306..f807e77f8 100644 --- a/engine/facings.asm +++ b/engine/facings.asm @@ -185,7 +185,7 @@ Facing21: ; shadow db 0, 8, 4 | X_FLIP, $fc ; 41a3 -Facing23: ; big doll +Facing23: ; big snorlax or lapras doll db 16 ; # db 0, 0, 0, $00 db 0, 8, 0, $01 @@ -221,7 +221,7 @@ Facing27: ; 41f5 db 8, 0, X_FLIP, $07 ; 4206 -Facing22: ; 4206 +Facing22: ; big doll other than snorlax or lapras db 14 ; # db 0, 0, 0, $00 db 0, 8, 0, $01 diff --git a/engine/map_objects.asm b/engine/map_objects.asm index 0c83b1986..58b0f7493 100644 --- a/engine/map_objects.asm +++ b/engine/map_objects.asm @@ -196,7 +196,7 @@ Function43f3: ; 43f3 Function4427: ; 4427 ld hl, OBJECT_FLAGS1 add hl, bc - bit 0, [hl] + bit INVISIBLE, [hl] jr nz, SetFacingStanding ld hl, OBJECT_FLAGS2 @@ -214,11 +214,8 @@ Function4427: ; 4427 Function4440: ; 4440 ld hl, OBJECT_FLAGS1 add hl, bc - bit 0, [hl] + bit INVISIBLE, [hl] jr nz, SetFacingStanding - ; fallthrough -; 4448 - Function4448: ; 4448 ld de, Pointers445f + 2 jr Function444d @@ -290,10 +287,10 @@ Function44b5: ; 44b5 Function44c1: ; 44c1 ld hl, OBJECT_FLAGS1 add hl, bc - bit 3, [hl] + bit SLIDING, [hl] jp nz, SetFacingCurrent - ld hl, OBJECT_12 + ld hl, OBJECT_STEP_FRAME add hl, bc ld a, [hl] inc a @@ -304,6 +301,7 @@ Function44c1: ; 44c1 rrca and %00000011 ld d, a + call GetSpriteDirection or 0 ; useless or d @@ -316,18 +314,21 @@ Function44c1: ; 44c1 Function44e4: ; 44e4 ld hl, OBJECT_FLAGS1 add hl, bc - bit 3, [hl] + bit SLIDING, [hl] jp nz, SetFacingCurrent - ld hl, OBJECT_12 + + ld hl, OBJECT_STEP_FRAME add hl, bc ld a, [hl] add 2 and %00001111 ld [hl], a + rrca rrca and %00000011 ld d, a + call GetSpriteDirection or 0 ; useless or d @@ -340,17 +341,20 @@ Function44e4: ; 44e4 Function4508: ; 4508 ld hl, OBJECT_FLAGS1 add hl, bc - bit 3, [hl] + bit SLIDING, [hl] jp nz, SetFacingCurrent - ld hl, OBJECT_12 + + ld hl, OBJECT_STEP_FRAME add hl, bc inc [hl] + ld a, [hl] rrca rrca rrca and %00000011 ld d, a + call GetSpriteDirection or 0 ; useless or d @@ -378,17 +382,19 @@ Function4539: ; 4539 ; 453f Function453f: ; 453f - ld hl, OBJECT_12 + ld hl, OBJECT_STEP_FRAME add hl, bc ld a, [hl] and %11110000 ld e, a + ld a, [hl] inc a and %00001111 ld d, a cp 4 jr c, .ok + ld d, 0 ld a, e add $10 @@ -399,6 +405,7 @@ Function453f: ; 453f ld a, d or e ld [hl], a + swap e ld d, 0 ld hl, .Directions @@ -428,26 +435,26 @@ Function456e: ; 456e Function457b: ; 457b ld hl, OBJECT_FACING_STEP add hl, bc - ld [hl], $15 + ld [hl], FACING_15 ret ; 4582 Function4582: ; 4582 ld hl, OBJECT_FACING_STEP add hl, bc - ld [hl], $14 + ld [hl], FACING_14 ret ; 4589 Function4589: ; 4589 ld hl, OBJECT_FACING_STEP add hl, bc - ld [hl], $17 + ld [hl], FACING_17 ret ; 4590 Function4590: ; 4590 - ld hl, OBJECT_12 + ld hl, OBJECT_STEP_FRAME add hl, bc ld a, [hl] inc a @@ -457,7 +464,7 @@ Function4590: ; 4590 jr z, Function45a4 ld hl, OBJECT_FACING_STEP add hl, bc - ld [hl], $4 + ld [hl], FACING_04 ret ; 45a4 @@ -469,7 +476,7 @@ Function45a4: ; 45a4 ; 45ab Function45ab: ; 45ab - ld hl, OBJECT_12 + ld hl, OBJECT_STEP_FRAME add hl, bc ld a, [hl] inc a @@ -487,18 +494,18 @@ Function45ab: ; 45ab Function45be: ; 45be ld hl, OBJECT_FACING_STEP add hl, bc - ld [hl], $16 + ld [hl], FACING_16 ret ; 45c5 Function45c5: ; 45c5 ld a, [VariableSprites + SPRITE_BIG_DOLL - SPRITE_VARS] - ld d, $17 + ld d, FACING_17 cp SPRITE_BIG_SNORLAX jr z, .ok cp SPRITE_BIG_LAPRAS jr z, .ok - ld d, $16 + ld d, FACING_16 .ok ld hl, OBJECT_FACING_STEP @@ -508,7 +515,7 @@ Function45c5: ; 45c5 ; 45da Function45da: ; 45da - ld hl, OBJECT_12 + ld hl, OBJECT_STEP_FRAME add hl, bc inc [hl] ld a, [hl] @@ -516,25 +523,25 @@ Function45da: ; 45da ld hl, OBJECT_FACING_STEP add hl, bc and 2 - ld a, $1c + ld a, FACING_1C jr z, .ok - inc a + inc a ; FACING_1D .ok ld [hl], a ret ; 45ed Function45ed: ; 45ed - ld hl, OBJECT_12 + ld hl, OBJECT_STEP_FRAME add hl, bc inc [hl] ld a, [hl] ld hl, OBJECT_FACING_STEP add hl, bc and 4 - ld a, $1e + ld a, FACING_1E jr z, .ok - inc a + inc a ; FACING_1F .ok ld [hl], a @@ -641,7 +648,7 @@ UselessAndA: ; 4679 Function467b: ; 467b xor a - ld hl, OBJECT_12 + ld hl, OBJECT_STEP_FRAME add hl, bc ld [hl], a ld hl, OBJECT_MOVEMENT_BYTE_INDEX @@ -1300,7 +1307,7 @@ Function47dd: ; 47dd ; 49e5 .MovementShadow: ; 49e5 - call ._MovementShadow_14_1a_1b + call ._MovementShadow_Grass_Emote_BoulderDust ld hl, OBJECT_ACTION add hl, bc ld [hl], PERSON_ACTION_07 @@ -1339,7 +1346,7 @@ Function47dd: ; 47dd .MovementEmote: ; 4a21 call Function467b - call ._MovementShadow_14_1a_1b + call ._MovementShadow_Grass_Emote_BoulderDust ld hl, OBJECT_ACTION add hl, bc ld [hl], PERSON_ACTION_08 @@ -1360,7 +1367,7 @@ Function47dd: ; 47dd .MovementBoulderDust: ; 4a46 call Function467b - call ._MovementShadow_14_1a_1b + call ._MovementShadow_Grass_Emote_BoulderDust ld hl, OBJECT_ACTION add hl, bc ld [hl], PERSON_ACTION_0E @@ -1407,7 +1414,7 @@ endr .MovementShakingGrass: ; 4a89 call Function467b - call ._MovementShadow_14_1a_1b + call ._MovementShadow_Grass_Emote_BoulderDust ld hl, OBJECT_ACTION add hl, bc ld [hl], PERSON_ACTION_0F @@ -1424,7 +1431,7 @@ endr ret ; 4aa8 -._MovementShadow_14_1a_1b: ; 4aa8 +._MovementShadow_Grass_Emote_BoulderDust: ; 4aa8 ld hl, OBJECT_RANGE add hl, bc ld a, [hl] @@ -1520,9 +1527,6 @@ RandomStepDuration_Fast: ; 4b26 call Random ld a, [hRandomAdd] and %00011111 - ; fallthrough -; 4b2d - SetRandomStepDuration: ; 4b2d ld hl, OBJECT_STEP_DURATION add hl, bc @@ -1630,9 +1634,6 @@ Function4bca: ; 4bca ld hl, wPlayerStepFlags set 7, [hl] call IncrementObjectStructField28 -; fallthrough -; 4bd2 - Function4bd2: ; 4bd2 call UpdateJumpPosition call Function4738 @@ -1656,9 +1657,6 @@ Function4bf2: ; 4bf2 ld hl, wPlayerStepFlags set 7, [hl] call IncrementObjectStructField28 -; fallthrough -; 4bfd - Function4bfd: ; 4bfd call UpdateJumpPosition call Function4738 @@ -1685,16 +1683,13 @@ Function4c18: ; 4c18 ; 4c23 Function4c23: ; 4c23 - ld hl, OBJECT_12 + ld hl, OBJECT_STEP_FRAME add hl, bc ld [hl], 0 ld hl, OBJECT_STEP_DURATION add hl, bc ld [hl], $10 call IncrementObjectStructField28 -; fallthrough -; 4c32 - Function4c32: ; 4c32 ld hl, OBJECT_ACTION add hl, bc @@ -1708,7 +1703,7 @@ Function4c32: ; 4c32 ; 4c42 Function4c42: ; 4c42 - ld hl, OBJECT_12 + ld hl, OBJECT_STEP_FRAME add hl, bc ld [hl], 0 ld hl, OBJECT_31 @@ -1721,9 +1716,6 @@ Function4c42: ; 4c42 add hl, bc res 3, [hl] call IncrementObjectStructField28 -; fallthrough -; 4c5d - Function4c5d: ; 4c5d ld hl, OBJECT_ACTION add hl, bc @@ -1743,7 +1735,7 @@ Function4c5d: ; 4c5d add hl, bc dec [hl] ret nz - ld hl, OBJECT_12 + ld hl, OBJECT_STEP_FRAME add hl, bc ld [hl], 0 ld hl, OBJECT_STEP_TYPE @@ -1781,11 +1773,8 @@ Function4caa: ; 4caa dec [hl] ret nz call IncrementObjectStructField28 -; fallthrough -; 4cb3 - Function4cb3: ; 4cb3 - ld hl, OBJECT_12 + ld hl, OBJECT_STEP_FRAME add hl, bc ld [hl], 0 ld hl, OBJECT_31 @@ -1818,9 +1807,6 @@ Function4cc9: ; 4cc9 dec [hl] ret nz call IncrementObjectStructField28 -; fallthrough -; 4ceb - Function4ceb: ; 4ceb ld hl, OBJECT_STEP_DURATION add hl, bc @@ -1837,10 +1823,8 @@ Function4cf5: ; 4cf5 add hl, bc dec [hl] ret nz -; 4d01 - Function4d01: ; 4d01 - ld hl, OBJECT_12 + ld hl, OBJECT_STEP_FRAME add hl, bc ld [hl], 0 ld hl, OBJECT_SPRITE_Y_OFFSET @@ -1869,9 +1853,6 @@ Function4d1f: ; 4d1f add hl, bc ld [hl], $10 call IncrementObjectStructField28 -; fallthrough -; 4d2e - Function4d2e: ; 4d2e ld hl, OBJECT_STEP_DURATION add hl, bc @@ -1880,7 +1861,7 @@ Function4d2e: ; 4d2e ld hl, OBJECT_ACTION add hl, bc ld [hl], PERSON_ACTION_02 - ld hl, OBJECT_12 + ld hl, OBJECT_STEP_FRAME add hl, bc ld [hl], 0 ld hl, OBJECT_31 @@ -1890,9 +1871,6 @@ Function4d2e: ; 4d2e add hl, bc ld [hl], $10 call IncrementObjectStructField28 -; fallthrough -; 4d4f - Function4d4f: ; 4d4f ld hl, OBJECT_31 add hl, bc @@ -1910,11 +1888,8 @@ Function4d4f: ; 4d4f dec [hl] ret nz call IncrementObjectStructField28 -; fallthrough -; 4d6b - Function4d6b: ; 4d6b - ld hl, OBJECT_12 + ld hl, OBJECT_STEP_FRAME add hl, bc ld [hl], 0 ld hl, OBJECT_SPRITE_Y_OFFSET @@ -1941,9 +1916,6 @@ Function4d85: ; 4d85 add hl, bc ld [hl], 0 call IncrementObjectStructField28 - ; fallthrough -; 4d94 - Function4d94: ; 4d94 ld hl, OBJECT_SPRITE_Y_OFFSET add hl, bc @@ -2050,9 +2022,6 @@ Function4e13: ; 4e13 add hl, bc ld [hl], a call IncrementObjectStructField28 - ; fallthrough -; 4e21 - Function4e21: ; 4e21 call Function4fb2 ld hl, OBJECT_DIRECTION_WALKING @@ -2100,9 +2069,6 @@ Function4e5d: ; 4e5d ld hl, wPlayerStepFlags set 7, [hl] call IncrementObjectStructField28 - ; fallthrough -; 4e65 - Function4e65: ; 4e65 call Function4738 ld hl, OBJECT_STEP_DURATION @@ -2135,7 +2101,7 @@ Function4e8e: ; 4e8e ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING - ld hl, OBJECT_12 + ld hl, OBJECT_STEP_FRAME add hl, bc ld a, [hl] ld [hl], 2 @@ -2143,18 +2109,12 @@ Function4e8e: ; 4e8e add hl, bc ld [hl], 2 call IncrementObjectStructField28 - ; fallthrough -; 4ea4 - Function4ea4: ; 4ea4 ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] ret nz call IncrementObjectStructField28 - ; fallthrough -; 4ead - Function4ead: ; 4ead ld hl, OBJECT_29 add hl, bc @@ -2166,9 +2126,6 @@ Function4ead: ; 4ead add hl, bc ld [hl], $2 call IncrementObjectStructField28 - ; fallthrough -; 4ec0 - Function4ec0: ; 4ec0 ld hl, OBJECT_STEP_DURATION add hl, bc @@ -2260,9 +2217,6 @@ Function4f3a: ; 4f3a add hl, bc ld [hl], a call IncrementObjectStructField28 - ; fallthrough -; 4f43 - Function4f43: ; 4f43 ld hl, OBJECT_29 add hl, bc @@ -2338,7 +2292,7 @@ Function4f99: ; 4f99 ld hl, OBJECT_SPRITE_Y_OFFSET add hl, bc ld [hl], $60 - ld hl, OBJECT_12 + ld hl, OBJECT_STEP_FRAME add hl, bc ld [hl], 0 ld hl, OBJECT_STEP_TYPE @@ -2674,7 +2628,7 @@ DespawnEmote: ; 5579 push af ld hl, OBJECT_FLAGS1 add hl, de - bit 7, [hl] + bit EMOTE_OBJECT, [hl] jr z, .next ld hl, OBJECT_SPRITE add hl, de @@ -2784,7 +2738,7 @@ Function5602: ; 5602 call Function5629 .ok - call RefreshMapAppearDisappear + call _UpdateSprites ret ; 561d @@ -2792,7 +2746,7 @@ Function561d: ; 561d call Function5645 ld a, 0 call Function5629 - call RefreshMapAppearDisappear + call _UpdateSprites ret ; 5629 @@ -3076,11 +3030,11 @@ Function579d: ; 579d ld [wc2df], a xor a ld [wd04e], a - ld [PlayerObject12], a + ld [PlayerObjectStepFrame], a call Function57bc callba CheckWarpCollision call c, SpawnInFacingDown - call Function57ca + call SpawnInCustomFacing ret ; 57bc @@ -3096,7 +3050,7 @@ Function57bc: ; 57bc ret ; 57ca -Function57ca: ; 57ca +SpawnInCustomFacing: ; 57ca ld hl, wPlayerSpriteSetupFlags bit 5, [hl] ret z @@ -3105,15 +3059,12 @@ Function57ca: ; 57ca rept 2 add a endr - jr Function57db + jr ContinueSpawnFacing ; 57d9 SpawnInFacingDown: ; 57d9 ld a, 0 - ; fallthrough -; 57db - -Function57db: ; 57db +ContinueSpawnFacing: ; 57db ld bc, PlayerStruct call SetSpriteDirection ret @@ -3355,7 +3306,7 @@ Function5903: ; 5903 db SPRITEMOVEDATA_STANDING_RIGHT ; 5920 -RefreshMapAppearDisappear:: ; 5920 +_UpdateSprites:: ; 5920 ld a, [VramState] bit 0, a ret z @@ -3365,29 +3316,29 @@ RefreshMapAppearDisappear:: ; 5920 push af ld a, 1 ld [hOAMUpdate], a - call Function5991 - call Function593a + call InitSprites + call .fill pop af ld [hOAMUpdate], a ret ; 593a -Function593a: ; 593a +.fill: ; 593a ld a, [VramState] bit 1, a - ld b, $a0 + ld b, SpritesEnd % $100 jr z, .ok - ld b, $70 + ld b, 28 * 4 .ok ld a, [hUsedSpriteIndex] cp b ret nc ld l, a - ld h, $c4 - ld de, OBJECT_FLAGS1 + ld h, Sprites / $100 + ld de, 4 ld a, b - ld c, $a0 + ld c, SCREEN_HEIGHT_PX + 16 .loop ld [hl], c add hl, de @@ -3442,26 +3393,29 @@ Function5958: ; 5958 ret ; 5991 -Function5991: ; 5991 - call Function59a4 - ld c, $30 - call Function59f3 - ld c, $20 - call Function59f3 - ld c, $10 - call Function59f3 +InitSprites: ; 5991 +PRIORITY_LOW EQU $10 +PRIORITY_NORM EQU $20 +PRIORITY_HIGH EQU $30 + call .DeterminePriorities + ld c, PRIORITY_HIGH + call .InitSpritesByPriority + ld c, PRIORITY_NORM + call .InitSpritesByPriority + ld c, PRIORITY_LOW + call .InitSpritesByPriority ret ; 59a4 -Function59a4: ; 59a4 +.DeterminePriorities: ; 59a4 xor a - ld hl, wMovementPointer - ld bc, 13 + ld hl, wc2eb + ld bc, NUM_OBJECT_STRUCTS call ByteFill ld d, 0 ld bc, ObjectStructs - ld hl, wMovementPointer + ld hl, wc2eb .loop push hl call GetObjectSprite @@ -3470,19 +3424,19 @@ Function59a4: ; 59a4 ld hl, OBJECT_FACING_STEP add hl, bc ld a, [hl] - cp -1 + cp STANDING jr z, .skip ; Define the sprite priority. - ld e, $10 + ld e, PRIORITY_LOW ld hl, OBJECT_FLAGS2 add hl, bc bit 0, [hl] jr nz, .add - ld e, $20 + ld e, PRIORITY_NORM bit 1, [hl] jr z, .add - ld e, $30 + ld e, PRIORITY_HIGH jr .add .skip @@ -3511,28 +3465,28 @@ Function59a4: ; 59a4 ret ; 59f3 -Function59f3: ; 59f3 +.InitSpritesByPriority: ; 59f3 ld hl, wMovementPointer -.next +.next_sprite ld a, [hli] ld d, a and $f0 ret z cp c - jr nz, .next + jr nz, .next_sprite push bc push hl ld a, d and $f call .GetObjectStructPointer - call .asm_5a0d + call .InitSprite pop hl pop bc - jr .next + jr .next_sprite ; 5a0d -.asm_5a0d: ; 5a0d +.InitSprite: ; 5a0d ld hl, OBJECT_SPRITE_TILE add hl, bc ld a, [hl] diff --git a/engine/movement.asm b/engine/movement.asm index bce6fdd92..07bdc37c7 100644 --- a/engine/movement.asm +++ b/engine/movement.asm @@ -59,7 +59,7 @@ MovementPointers: ; 5075 dw Movement_39 ; 39 dw Movement_remove_fixed_facing ; 3a dw Movement_fix_facing ; 3b - dw Movement_3c ; 3c + dw Movement_show_person ; 3c dw Movement_hide_person ; 3d dw Movement_step_sleep_1 ; 3e dw Movement_step_sleep_2 ; 3f @@ -78,8 +78,8 @@ MovementPointers: ; 5075 dw Movement_teleport_from ; 4c dw Movement_teleport_to ; 4d dw Movement_skyfall ; 4e - dw Movement_step_wait5 ; 4f - dw Movement_step_bump ; 50 + dw Movement_step_dig ; 4f + dw Movement_step_bump ; 50 dw Movement_fish_got_bite ; 51 dw Movement_fish_cast_rod ; 52 dw Movement_hide_emote ; 53 @@ -87,7 +87,7 @@ MovementPointers: ; 5075 dw Movement_step_shake ; 55 dw Movement_56 ; 56 dw Movement_rock_smash ; 57 - dw Movement_58 ; 58 + dw Movement_return_dig ; 58 dw Movement_59 ; 59 ; 5129 @@ -95,21 +95,21 @@ MovementPointers: ; 5075 Movement_teleport_from: ; 5129 ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_0C + ld [hl], STEP_TYPE_TELEPORT_FROM ret ; 5130 Movement_teleport_to: ; 5130 ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_0D + ld [hl], STEP_TYPE_TELEPORT_TO ret ; 5137 Movement_skyfall: ; 5137 ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_0E + ld [hl], STEP_TYPE_SKYFALL ret ; 513e @@ -120,11 +120,11 @@ Movement_59: ; 513e ret ; 5145 -Movement_step_wait5: ; 5145 +Movement_step_dig: ; 5145 call GetSpriteDirection rlca rlca - ld hl, OBJECT_12 + ld hl, OBJECT_STEP_FRAME add hl, bc ld [hl], a ld hl, OBJECT_ACTION @@ -143,11 +143,11 @@ Movement_step_wait5: ; 5145 ret ; 516a -Movement_58: ; 516a +Movement_return_dig: ; 516a call GetSpriteDirection rlca rlca - ld hl, OBJECT_12 + ld hl, OBJECT_STEP_FRAME add hl, bc ld [hl], a call GetMovementByte @@ -334,16 +334,19 @@ Movement_step_sleep_common: ; 5247 ; 525f Movement_step_bump: ; 525f - ld a, $1 + ld a, 1 ld hl, OBJECT_STEP_DURATION add hl, bc ld [hl], a + ld hl, OBJECT_STEP_TYPE add hl, bc ld [hl], STEP_TYPE_0B + ld hl, OBJECT_ACTION add hl, bc ld [hl], PERSON_ACTION_03 + ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING @@ -373,14 +376,14 @@ Movement_56: ; 5279 Movement_38: ; 5293 ld hl, OBJECT_FLAGS1 add hl, bc - res 3, [hl] + res SLIDING, [hl] jp ContinueReadingMovement ; 529c Movement_39: ; 529c ld hl, OBJECT_FLAGS1 add hl, bc - set 3, [hl] + set SLIDING, [hl] jp ContinueReadingMovement ; 52a5 @@ -398,17 +401,17 @@ Movement_fix_facing: ; 52ae jp ContinueReadingMovement ; 52b7 -Movement_3c: ; 52b7 +Movement_show_person: ; 52b7 ld hl, OBJECT_FLAGS1 add hl, bc - res 0, [hl] + res INVISIBLE, [hl] jp ContinueReadingMovement ; 52c0 Movement_hide_person: ; 52c0 ld hl, OBJECT_FLAGS1 add hl, bc - set 0, [hl] + set INVISIBLE, [hl] jp ContinueReadingMovement ; 52c9 @@ -760,14 +763,14 @@ NormalStep: ; 5412 ld hl, wd4cf ld a, [hMapObjectIndexBuffer] cp [hl] - jr z, .asm_543f + jr z, .step_type_06 ld hl, OBJECT_STEP_TYPE add hl, bc ld [hl], STEP_TYPE_02 ret -.asm_543f +.step_type_06 ld hl, OBJECT_STEP_TYPE add hl, bc ld [hl], STEP_TYPE_06 @@ -777,19 +780,22 @@ NormalStep: ; 5412 TurningStep: ; 5446 call Function4690 call Function463f + ld hl, OBJECT_ACTION add hl, bc ld [hl], PERSON_ACTION_04 + ld hl, wd4cf ld a, [hMapObjectIndexBuffer] cp [hl] - jr z, .asm_5461 + jr z, .step_type_06 + ld hl, OBJECT_STEP_TYPE add hl, bc ld [hl], STEP_TYPE_02 ret -.asm_5461 +.step_type_06 ld hl, OBJECT_STEP_TYPE add hl, bc ld [hl], STEP_TYPE_06 @@ -800,19 +806,22 @@ TurningStep: ; 5446 SlideStep: ; 5468 call Function4690 call Function463f + ld hl, OBJECT_ACTION add hl, bc ld [hl], PERSON_ACTION_01 + ld hl, wd4cf ld a, [hMapObjectIndexBuffer] cp [hl] - jr z, .asm_5483 + jr z, .step_type_06 + ld hl, OBJECT_STEP_TYPE add hl, bc ld [hl], STEP_TYPE_02 ret -.asm_5483 +.step_type_06 ld hl, OBJECT_STEP_TYPE add hl, bc ld [hl], STEP_TYPE_06 @@ -825,23 +834,28 @@ JumpStep: ; 548a ld hl, OBJECT_31 add hl, bc ld [hl], $0 + ld hl, OBJECT_FLAGS2 add hl, bc res 3, [hl] + ld hl, OBJECT_ACTION add hl, bc ld [hl], PERSON_ACTION_02 + call SpawnShadow + ld hl, wd4cf ld a, [hMapObjectIndexBuffer] cp [hl] - jr z, .asm_54b1 + jr z, .step_type_09 + ld hl, OBJECT_STEP_TYPE add hl, bc ld [hl], STEP_TYPE_08 ret -.asm_54b1 +.step_type_09 ld hl, OBJECT_STEP_TYPE add hl, bc ld [hl], STEP_TYPE_09 diff --git a/engine/scripting.asm b/engine/scripting.asm index 720ea1de4..60618abab 100644 --- a/engine/scripting.asm +++ b/engine/scripting.asm @@ -1284,7 +1284,7 @@ Script_disappear: ; 0x972ee ld a, [hMapObjectIndexBuffer] ld b, 1 ; set call ApplyEventActionAppearDisappear - callba RefreshMapAppearDisappear + callba _UpdateSprites ret ; 0x9730b -- cgit v1.2.3 From 8290f851fd97131d927a9702deee20b150d3eae3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 16 Nov 2015 00:52:53 -0500 Subject: Further decoding of SpriteMovementData --- engine/map_objects.asm | 84 +++++++++++++++++++++++++++----------------------- 1 file changed, 45 insertions(+), 39 deletions(-) (limited to 'engine') diff --git a/engine/map_objects.asm b/engine/map_objects.asm index 58b0f7493..2de4074a8 100644 --- a/engine/map_objects.asm +++ b/engine/map_objects.asm @@ -2,45 +2,50 @@ INCLUDE "engine/facings.asm" SpriteMovementData:: ; 4273 - ; function, facing, ?, ?, ?, ? - db SPRITEMOVEFN_00, DOWN, $01, $02, $00, $00 ; 00 - db SPRITEMOVEFN_STANDING, DOWN, $01, $0c, $00, $00 ; 01 - db SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, $01, $00, $00, $00 ; 02 - db SPRITEMOVEFN_SLOW_RANDOM_SPIN, DOWN, $01, $00, $00, $00 ; 03 - db SPRITEMOVEFN_RANDOM_WALK_Y, DOWN, $01, $00, $00, $00 ; 04 - db SPRITEMOVEFN_RANDOM_WALK_X, DOWN, $01, $00, $00, $00 ; 05 - db SPRITEMOVEFN_STANDING, DOWN, $01, $00, $00, $00 ; 06 - db SPRITEMOVEFN_STANDING, UP, $01, $00, $00, $00 ; 07 - db SPRITEMOVEFN_STANDING, LEFT, $01, $00, $00, $00 ; 08 - db SPRITEMOVEFN_STANDING, RIGHT, $01, $00, $00, $00 ; 09 - db SPRITEMOVEFN_FAST_RANDOM_SPIN, DOWN, $01, $00, $00, $00 ; 0a - db SPRITEMOVEFN_OBEY_DPAD, DOWN, $01, $02, $00, $00 ; 0b - db SPRITEMOVEFN_08, DOWN, $01, $00, $00, $00 ; 0c - db SPRITEMOVEFN_09, DOWN, $01, $00, $00, $00 ; 0d - db SPRITEMOVEFN_0A, DOWN, $01, $00, $00, $00 ; 0e - db SPRITEMOVEFN_0B, DOWN, $01, $00, $00, $00 ; 0f - db SPRITEMOVEFN_0C, DOWN, $01, $00, $00, $00 ; 10 - db SPRITEMOVEFN_0D, DOWN, $01, $00, $00, $00 ; 11 - db SPRITEMOVEFN_0E, DOWN, $01, $00, $00, $00 ; 12 - db SPRITEMOVEFN_FOLLOW, DOWN, $01, $02, $00, $00 ; 13 - db SPRITEMOVEFN_SCRIPTED, DOWN, $01, $02, $00, $00 ; 14 - db SPRITEMOVEFN_BIG_SNORLAX, DOWN, $09, $2e, $01, $c0 ; 15 - db SPRITEMOVEFN_BOUNCE, DOWN, $0a, $2e, $00, $00 ; 16 - db SPRITEMOVEFN_STANDING, DOWN, $01, $0c, $00, $00 ; 17 - db SPRITEMOVEFN_STANDING, DOWN, $01, $2e, $10, $00 ; 18 - db SPRITEMOVEFN_STRENGTH, DOWN, $01, $2e, $00, $40 ; 19 - db SPRITEMOVEFN_FOLLOWNOTEXACT, DOWN, $01, $02, $00, $00 ; 1a - db SPRITEMOVEFN_SHADOW, DOWN, $00, $8e, $01, $00 ; 1b - db SPRITEMOVEFN_EMOTE, DOWN, $08, $8e, $02, $00 ; 1c - db SPRITEMOVEFN_SCREENSHAKE, DOWN, $00, $82, $00, $00 ; 1d - db SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE, LEFT, $01, $00, $00, $00 ; 1e - db SPRITEMOVEFN_SPIN_CLOCKWISE, RIGHT, $01, $00, $00, $00 ; 1f - db SPRITEMOVEFN_STRENGTH, DOWN, $0c, $2e, $01, $c0 ; 20 - db SPRITEMOVEFN_STRENGTH, DOWN, $0d, $2e, $01, $c0 ; 21 - db SPRITEMOVEFN_BOULDERDUST, DOWN, $0e, $8e, $01, $00 ; 22 - db SPRITEMOVEFN_GRASS, DOWN, $0f, $8e, $02, $00 ; 23 - db SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, $01, $00, $00, $20 ; 24 - db SPRITEMOVEFN_00, DOWN, $01, $00, $00, $00 ; 25 + +sprite_movement_data: macro + db \1, \2, \3, \4, \5 + dn \6, 0 + endm + ; function, facing, action, flags1, flags2, palette flags + sprite_movement_data SPRITEMOVEFN_00, DOWN, PERSON_ACTION_01, $02, $00, %0000 ; 00 + sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_01, $0c, $00, %0000 ; 01 + sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 02 + sprite_movement_data SPRITEMOVEFN_SLOW_RANDOM_SPIN, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 03 + sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_Y, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 04 + sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_X, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 05 + sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 06 + sprite_movement_data SPRITEMOVEFN_STANDING, UP, PERSON_ACTION_01, $00, $00, %0000 ; 07 + sprite_movement_data SPRITEMOVEFN_STANDING, LEFT, PERSON_ACTION_01, $00, $00, %0000 ; 08 + sprite_movement_data SPRITEMOVEFN_STANDING, RIGHT, PERSON_ACTION_01, $00, $00, %0000 ; 09 + sprite_movement_data SPRITEMOVEFN_FAST_RANDOM_SPIN, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 0a + sprite_movement_data SPRITEMOVEFN_OBEY_DPAD, DOWN, PERSON_ACTION_01, $02, $00, %0000 ; 0b + sprite_movement_data SPRITEMOVEFN_08, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 0c + sprite_movement_data SPRITEMOVEFN_09, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 0d + sprite_movement_data SPRITEMOVEFN_0A, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 0e + sprite_movement_data SPRITEMOVEFN_0B, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 0f + sprite_movement_data SPRITEMOVEFN_0C, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 10 + sprite_movement_data SPRITEMOVEFN_0D, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 11 + sprite_movement_data SPRITEMOVEFN_0E, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 12 + sprite_movement_data SPRITEMOVEFN_FOLLOW, DOWN, PERSON_ACTION_01, $02, $00, %0000 ; 13 + sprite_movement_data SPRITEMOVEFN_SCRIPTED, DOWN, PERSON_ACTION_01, $02, $00, %0000 ; 14 + sprite_movement_data SPRITEMOVEFN_BIG_SNORLAX, DOWN, PERSON_ACTION_09, $2e, $01, %1100 ; 15 + sprite_movement_data SPRITEMOVEFN_BOUNCE, DOWN, PERSON_ACTION_0A, $2e, $00, %0000 ; 16 + sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_01, $0c, $00, %0000 ; 17 + sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_01, $2e, $10, %0000 ; 18 + sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, PERSON_ACTION_01, $2e, $00, %0100 ; 19 + sprite_movement_data SPRITEMOVEFN_FOLLOWNOTEXACT, DOWN, PERSON_ACTION_01, $02, $00, %0000 ; 1a + sprite_movement_data SPRITEMOVEFN_SHADOW, DOWN, PERSON_ACTION_00, $8e, $01, %0000 ; 1b + sprite_movement_data SPRITEMOVEFN_EMOTE, DOWN, PERSON_ACTION_08, $8e, $02, %0000 ; 1c + sprite_movement_data SPRITEMOVEFN_SCREENSHAKE, DOWN, PERSON_ACTION_00, $82, $00, %0000 ; 1d + sprite_movement_data SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE, LEFT, PERSON_ACTION_01, $00, $00, %0000 ; 1e + sprite_movement_data SPRITEMOVEFN_SPIN_CLOCKWISE, RIGHT, PERSON_ACTION_01, $00, $00, %0000 ; 1f + sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, PERSON_ACTION_0C, $2e, $01, %1100 ; 20 + sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, PERSON_ACTION_0D, $2e, $01, %1100 ; 21 + sprite_movement_data SPRITEMOVEFN_BOULDERDUST, DOWN, PERSON_ACTION_0E, $8e, $01, %0000 ; 22 + sprite_movement_data SPRITEMOVEFN_GRASS, DOWN, PERSON_ACTION_0F, $8e, $02, %0000 ; 23 + sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, PERSON_ACTION_01, $00, $00, %0010 ; 24 + sprite_movement_data SPRITEMOVEFN_00, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 25 ; 4357 @@ -2705,6 +2710,7 @@ Function55e0:: ; 55e0 ld a, [VramState] bit 0, a ret z + ld bc, ObjectStructs xor a .loop -- cgit v1.2.3 From fb88b2ccf8f0897f95d25b82f95444ec775aa917 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 16 Nov 2015 11:53:26 -0500 Subject: Movement constants, script stack --- engine/battle_start.asm | 16 ++-- engine/map_objects.asm | 208 ++++++++++++++++++++++++------------------------ engine/movement.asm | 82 +++++++++---------- engine/save.asm | 18 ++--- engine/scripting.asm | 149 ++++++++++++++++++---------------- 5 files changed, 244 insertions(+), 229 deletions(-) (limited to 'engine') diff --git a/engine/battle_start.asm b/engine/battle_start.asm index 0897b8a4a..5bcaad99c 100644 --- a/engine/battle_start.asm +++ b/engine/battle_start.asm @@ -27,7 +27,7 @@ Predef_StartBattle: ; 8c20f ld [rSVBK], a ld hl, wMapPals - ld bc, $0040 + ld bc, 8 palettes xor a call ByteFill @@ -308,9 +308,11 @@ StartTrainerBattle_Flash: ; 8c3ab (23:43ab) StartTrainerBattle_SetUpForWavyOutro: ; 8c3e8 (23:43e8) callba Function5602 - ld a, $5 + ld a, $5 ; BANK(LYOverrides) ld [rSVBK], a + call StartTrainerBattle_NextScene + ld a, $43 ld [hLCDStatCustom], a xor a @@ -342,8 +344,8 @@ StartTrainerBattle_SineWave: ; 8c408 (23:4408) ld d, [hl] add [hl] ld [hl], a - ld a, $90 - ld bc, wd100 + ld a, LYOverridesEnd - LYOverrides + ld bc, LYOverrides ld e, $0 .loop @@ -364,7 +366,7 @@ StartTrainerBattle_SineWave: ; 8c408 (23:4408) StartTrainerBattle_SetUpForSpinOutro: ; 8c43d (23:443d) callba Function5602 - ld a, $5 + ld a, $5 ; BANK(LYOverrides) ld [rSVBK], a call StartTrainerBattle_NextScene xor a @@ -507,7 +509,7 @@ endr StartTrainerBattle_SetUpForRandomScatterOutro: ; 8c578 (23:4578) callba Function5602 - ld a, $5 + ld a, $5 ; BANK(LYOverrides) ld [rSVBK], a call StartTrainerBattle_NextScene ld a, $10 @@ -739,10 +741,12 @@ WipeLYOverrides: ; 8c6d8 push af ld a, $5 ld [rSVBK], a + ld hl, LYOverrides call .wipe ld hl, LYOverridesBackup call .wipe + pop af ld [rSVBK], a ret diff --git a/engine/map_objects.asm b/engine/map_objects.asm index 2de4074a8..e442b7f77 100644 --- a/engine/map_objects.asm +++ b/engine/map_objects.asm @@ -8,44 +8,44 @@ sprite_movement_data: macro dn \6, 0 endm ; function, facing, action, flags1, flags2, palette flags - sprite_movement_data SPRITEMOVEFN_00, DOWN, PERSON_ACTION_01, $02, $00, %0000 ; 00 - sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_01, $0c, $00, %0000 ; 01 - sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 02 - sprite_movement_data SPRITEMOVEFN_SLOW_RANDOM_SPIN, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 03 - sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_Y, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 04 - sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_X, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 05 - sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 06 - sprite_movement_data SPRITEMOVEFN_STANDING, UP, PERSON_ACTION_01, $00, $00, %0000 ; 07 - sprite_movement_data SPRITEMOVEFN_STANDING, LEFT, PERSON_ACTION_01, $00, $00, %0000 ; 08 - sprite_movement_data SPRITEMOVEFN_STANDING, RIGHT, PERSON_ACTION_01, $00, $00, %0000 ; 09 - sprite_movement_data SPRITEMOVEFN_FAST_RANDOM_SPIN, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 0a - sprite_movement_data SPRITEMOVEFN_OBEY_DPAD, DOWN, PERSON_ACTION_01, $02, $00, %0000 ; 0b - sprite_movement_data SPRITEMOVEFN_08, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 0c - sprite_movement_data SPRITEMOVEFN_09, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 0d - sprite_movement_data SPRITEMOVEFN_0A, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 0e - sprite_movement_data SPRITEMOVEFN_0B, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 0f - sprite_movement_data SPRITEMOVEFN_0C, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 10 - sprite_movement_data SPRITEMOVEFN_0D, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 11 - sprite_movement_data SPRITEMOVEFN_0E, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 12 - sprite_movement_data SPRITEMOVEFN_FOLLOW, DOWN, PERSON_ACTION_01, $02, $00, %0000 ; 13 - sprite_movement_data SPRITEMOVEFN_SCRIPTED, DOWN, PERSON_ACTION_01, $02, $00, %0000 ; 14 + sprite_movement_data SPRITEMOVEFN_00, DOWN, PERSON_ACTION_STAND, $02, $00, %0000 ; 00 + sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_STAND, $0c, $00, %0000 ; 01 + sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 02 + sprite_movement_data SPRITEMOVEFN_SLOW_RANDOM_SPIN, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 03 + sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_Y, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 04 + sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_X, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 05 + sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 06 + sprite_movement_data SPRITEMOVEFN_STANDING, UP, PERSON_ACTION_STAND, $00, $00, %0000 ; 07 + sprite_movement_data SPRITEMOVEFN_STANDING, LEFT, PERSON_ACTION_STAND, $00, $00, %0000 ; 08 + sprite_movement_data SPRITEMOVEFN_STANDING, RIGHT, PERSON_ACTION_STAND, $00, $00, %0000 ; 09 + sprite_movement_data SPRITEMOVEFN_FAST_RANDOM_SPIN, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 0a + sprite_movement_data SPRITEMOVEFN_OBEY_DPAD, DOWN, PERSON_ACTION_STAND, $02, $00, %0000 ; 0b + sprite_movement_data SPRITEMOVEFN_08, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 0c + sprite_movement_data SPRITEMOVEFN_09, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 0d + sprite_movement_data SPRITEMOVEFN_0A, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 0e + sprite_movement_data SPRITEMOVEFN_0B, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 0f + sprite_movement_data SPRITEMOVEFN_0C, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 10 + sprite_movement_data SPRITEMOVEFN_0D, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 11 + sprite_movement_data SPRITEMOVEFN_0E, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 12 + sprite_movement_data SPRITEMOVEFN_FOLLOW, DOWN, PERSON_ACTION_STAND, $02, $00, %0000 ; 13 + sprite_movement_data SPRITEMOVEFN_SCRIPTED, DOWN, PERSON_ACTION_STAND, $02, $00, %0000 ; 14 sprite_movement_data SPRITEMOVEFN_BIG_SNORLAX, DOWN, PERSON_ACTION_09, $2e, $01, %1100 ; 15 sprite_movement_data SPRITEMOVEFN_BOUNCE, DOWN, PERSON_ACTION_0A, $2e, $00, %0000 ; 16 - sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_01, $0c, $00, %0000 ; 17 - sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_01, $2e, $10, %0000 ; 18 - sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, PERSON_ACTION_01, $2e, $00, %0100 ; 19 - sprite_movement_data SPRITEMOVEFN_FOLLOWNOTEXACT, DOWN, PERSON_ACTION_01, $02, $00, %0000 ; 1a + sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_STAND, $0c, $00, %0000 ; 17 + sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_STAND, $2e, $10, %0000 ; 18 + sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, PERSON_ACTION_STAND, $2e, $00, %0100 ; 19 + sprite_movement_data SPRITEMOVEFN_FOLLOWNOTEXACT, DOWN, PERSON_ACTION_STAND, $02, $00, %0000 ; 1a sprite_movement_data SPRITEMOVEFN_SHADOW, DOWN, PERSON_ACTION_00, $8e, $01, %0000 ; 1b - sprite_movement_data SPRITEMOVEFN_EMOTE, DOWN, PERSON_ACTION_08, $8e, $02, %0000 ; 1c + sprite_movement_data SPRITEMOVEFN_EMOTE, DOWN, PERSON_ACTION_EMOTE, $8e, $02, %0000 ; 1c sprite_movement_data SPRITEMOVEFN_SCREENSHAKE, DOWN, PERSON_ACTION_00, $82, $00, %0000 ; 1d - sprite_movement_data SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE, LEFT, PERSON_ACTION_01, $00, $00, %0000 ; 1e - sprite_movement_data SPRITEMOVEFN_SPIN_CLOCKWISE, RIGHT, PERSON_ACTION_01, $00, $00, %0000 ; 1f + sprite_movement_data SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE, LEFT, PERSON_ACTION_STAND, $00, $00, %0000 ; 1e + sprite_movement_data SPRITEMOVEFN_SPIN_CLOCKWISE, RIGHT, PERSON_ACTION_STAND, $00, $00, %0000 ; 1f sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, PERSON_ACTION_0C, $2e, $01, %1100 ; 20 sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, PERSON_ACTION_0D, $2e, $01, %1100 ; 21 sprite_movement_data SPRITEMOVEFN_BOULDERDUST, DOWN, PERSON_ACTION_0E, $8e, $01, %0000 ; 22 sprite_movement_data SPRITEMOVEFN_GRASS, DOWN, PERSON_ACTION_0F, $8e, $02, %0000 ; 23 - sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, PERSON_ACTION_01, $00, $00, %0010 ; 24 - sprite_movement_data SPRITEMOVEFN_00, DOWN, PERSON_ACTION_01, $00, $00, %0000 ; 25 + sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, PERSON_ACTION_STAND, $00, $00, %0010 ; 24 + sprite_movement_data SPRITEMOVEFN_00, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 25 ; 4357 @@ -167,7 +167,7 @@ Function43f3: ; 43f3 bit 5, [hl] jr nz, .bit5 - cp STEP_TYPE_01 + cp STEP_TYPE_STANDING jr z, .one jr .ok @@ -186,7 +186,7 @@ Function43f3: ; 43f3 ld a, [hl] and a ret z - cp STEP_TYPE_01 + cp STEP_TYPE_STANDING ret z .ok @@ -246,22 +246,22 @@ endr Pointers445f: ; 445f dw SetFacingStanding, SetFacingStanding ; 00 - dw Function44b5, SetFacingCurrent ; 01 - dw Function44c1, SetFacingCurrent ; 02 - dw Function4508, SetFacingCurrent ; 03 - dw Function4529, SetFacingCurrent ; 04 - dw Function4539, SetFacingStanding ; 05 - dw Function456e, Function456e ; 06 - dw Function457b, SetFacingStanding ; 07 - dw Function4582, Function4582 ; 08 - dw Function4589, Function4589 ; 09 - dw Function4590, Function45a4 ; 0a - dw Function45ab, SetFacingCurrent ; 0c - dw Function45be, Function45be ; 0b - dw Function45c5, Function45c5 ; 0d - dw Function45da, SetFacingStanding ; 0e - dw Function45ed, SetFacingStanding ; 0f - dw Function44e4, SetFacingCurrent ; 10 + dw Function44b5, SetFacingCurrent ; 01 standing? + dw Function44c1, SetFacingCurrent ; 02 walking? + dw Function4508, SetFacingCurrent ; 03 bumping? + dw Function4529, SetFacingCurrent ; 04 + dw Function4539, SetFacingStanding ; 05 + dw Function456e, Function456e ; 06 + dw Function457b, SetFacingStanding ; 07 + dw Function4582, Function4582 ; 08 + dw Function4589, Function4589 ; 09 + dw Function4590, Function45a4 ; 0a + dw Function45ab, SetFacingCurrent ; 0c + dw Function45be, Function45be ; 0b + dw Function45c5, Function45c5 ; 0d + dw Function45da, SetFacingStanding ; 0e + dw Function45ed, SetFacingStanding ; 0f + dw Function44e4, SetFacingCurrent ; 10 ; 44a3 SetFacingStanding: ; 44a3 @@ -444,10 +444,10 @@ Function457b: ; 457b ret ; 4582 -Function4582: ; 4582 +Function4582: ; 4582 emote ld hl, OBJECT_FACING_STEP add hl, bc - ld [hl], FACING_14 + ld [hl], FACING_EMOTE ret ; 4589 @@ -930,7 +930,7 @@ Function47bc: ; 47bc call Function467b ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_01 + ld [hl], STEP_TYPE_STANDING ret ; 47dd @@ -1033,7 +1033,7 @@ Function47dd: ; 47dd call Function467b ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_01 + ld [hl], PERSON_ACTION_STAND ld hl, OBJECT_STEP_TYPE add hl, bc ld [hl], STEP_TYPE_05 @@ -1206,7 +1206,7 @@ Function47dd: ; 47dd ld [hl], STANDING ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_01 + ld [hl], PERSON_ACTION_STAND ret ; 4958 @@ -1258,7 +1258,7 @@ Function47dd: ; 47dd .MovementSpinRepeat: ; 499c ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_01 + ld [hl], PERSON_ACTION_STAND ld hl, OBJECT_RANGE add hl, bc ld a, [hl] @@ -1354,7 +1354,7 @@ Function47dd: ; 47dd call ._MovementShadow_Grass_Emote_BoulderDust ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_08 + ld [hl], PERSON_ACTION_EMOTE ld hl, OBJECT_STEP_DURATION add hl, bc ld [hl], 0 @@ -1500,9 +1500,9 @@ endr call Function463f ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_02 + ld [hl], PERSON_ACTION_STEP - ld hl, wd4cf + ld hl, wCenteredObject ld a, [hMapObjectIndexBuffer] cp [hl] jr z, .load_6 @@ -1515,7 +1515,7 @@ endr .load_6 ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_06 + ld [hl], STEP_TYPE_PLAYER_WALK ret .NewDuration: ; 4b17 @@ -1541,7 +1541,7 @@ SetRandomStepDuration: ; 4b2d ld [hl], STANDING ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_01 + ld [hl], PERSON_ACTION_STAND ld hl, OBJECT_STEP_TYPE add hl, bc ld [hl], STEP_TYPE_03 @@ -1552,19 +1552,19 @@ Pointers4b45: ; 4b45 ; These pointers use OBJECT_STEP_TYPE. See constants/sprite_constants.asm dw Function47bc ; 00 dw Function47dd ; 01 - dw Function4e2b ; 02 + dw Function4e2b ; 02 npc walk dw Function4ddd ; 03 dw Function4e21 ; 04 dw Function4e0c ; 05 - dw Function4e56 ; 06 + dw Function4e56 ; 06 player walk dw Function4e47 ; 07 - dw Function4b86 ; 08 - dw Function4bbf ; 09 - dw Function4e83 ; 0a + dw Function4b86 ; 08 npc jump step + dw Function4bbf ; 09 player jump step + dw Function4e83 ; 0a half step dw Function4dff ; 0b - dw Function4c18 ; 0c - dw Function4c89 ; 0d - dw Function4d14 ; 0e + dw Function4c18 ; 0c teleport from + dw Function4c89 ; 0d teleport to + dw Function4d14 ; 0e skyfall dw Function4ecd ; 0f dw Function4d7e ; 10 dw Function4daf ; 11 @@ -1585,7 +1585,7 @@ Function4b79: ; 4b79 ret nz ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_01 + ld [hl], STEP_TYPE_STANDING ret ; 4b86 @@ -1622,7 +1622,7 @@ Function4ba9: ; 4ba9 call Function4600 ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_01 + ld [hl], STEP_TYPE_STANDING ret ; 4bbf @@ -1674,7 +1674,7 @@ Function4bfd: ; 4bfd call Function4600 ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_01 + ld [hl], STEP_TYPE_STANDING ret ; 4c18 @@ -1698,7 +1698,7 @@ Function4c23: ; 4c23 Function4c32: ; 4c32 ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_04 + ld [hl], PERSON_ACTION_SPIN ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] @@ -1724,7 +1724,7 @@ Function4c42: ; 4c42 Function4c5d: ; 4c5d ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_04 + ld [hl], PERSON_ACTION_SPIN ld hl, OBJECT_31 add hl, bc inc [hl] @@ -1745,7 +1745,7 @@ Function4c5d: ; 4c5d ld [hl], 0 ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_01 + ld [hl], STEP_TYPE_STANDING ret ; 4c89 @@ -1795,7 +1795,7 @@ Function4cb3: ; 4cb3 Function4cc9: ; 4cc9 ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_04 + ld [hl], PERSON_ACTION_SPIN ld hl, OBJECT_31 add hl, bc inc [hl] @@ -1823,7 +1823,7 @@ Function4ceb: ; 4ceb Function4cf5: ; 4cf5 ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_04 + ld [hl], PERSON_ACTION_SPIN ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] @@ -1837,7 +1837,7 @@ Function4d01: ; 4d01 ld [hl], 0 ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_01 + ld [hl], STEP_TYPE_STANDING ret ; 4d14 @@ -1865,7 +1865,7 @@ Function4d2e: ; 4d2e ret nz ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_02 + ld [hl], PERSON_ACTION_STEP ld hl, OBJECT_STEP_FRAME add hl, bc ld [hl], 0 @@ -1902,7 +1902,7 @@ Function4d6b: ; 4d6b ld [hl], 0 ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_01 + ld [hl], STEP_TYPE_STANDING ret ; 4d7e @@ -1936,7 +1936,7 @@ Function4d94: ; 4d94 ld [hl], 0 ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_01 + ld [hl], STEP_TYPE_STANDING ret ; 4daf @@ -1950,7 +1950,7 @@ Function4db5: ; 4db5 add hl, bc ld a, [hl] and %00000001 - ld a, PERSON_ACTION_01 + ld a, PERSON_ACTION_STAND jr z, .yes ld a, PERSON_ACTION_00 @@ -1966,9 +1966,9 @@ Function4dc8: ; 4dc8 add hl, bc ld a, [hl] and %00000001 - ld a, PERSON_ACTION_04 + ld a, PERSON_ACTION_SPIN jr z, .yes - ld a, PERSON_ACTION_05 + ld a, PERSON_ACTION_SPIN_FLICKER .yes ld hl, OBJECT_ACTION @@ -1987,7 +1987,7 @@ Function4ddd: ; 4ddd ret nz ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_01 + ld [hl], STEP_TYPE_STANDING ret ; 4df0 @@ -2009,7 +2009,7 @@ Function4dff: ; 4dff ret nz ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_01 + ld [hl], STEP_TYPE_STANDING ret ; 4e0c @@ -2048,7 +2048,7 @@ Function4e2b: ; 4e2b ld [hl], STANDING ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_01 + ld [hl], STEP_TYPE_STANDING ret ; 4e47 @@ -2089,7 +2089,7 @@ Function4e65: ; 4e65 ld [hl], STANDING ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_01 + ld [hl], STEP_TYPE_STANDING ret ; 4e83 @@ -2138,7 +2138,7 @@ Function4ec0: ; 4ec0 ret nz ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_01 + ld [hl], STEP_TYPE_STANDING ret ; 4ecd @@ -2170,7 +2170,7 @@ Function4ecd: ; 4ecd ld [hl], STANDING ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_01 + ld [hl], STEP_TYPE_STANDING ret ; 4f04 @@ -2302,7 +2302,7 @@ Function4f99: ; 4f99 ld [hl], 0 ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_01 + ld [hl], STEP_TYPE_STANDING ret ; 4fb2 @@ -2731,17 +2731,19 @@ Function55e0:: ; 55e0 ret ; 5602 -Function5602: ; 5602 - call Function5645 - ld a, 0 - call Function5629 +Function5602: ; 5602, called at battle start + call Function5645 ; clear sprites + ld a, PLAYER + call Function5629 ; respawn player + ld a, [wd459] bit 7, a jr z, .ok + ld a, [hLastTalked] and a jr z, .ok - call Function5629 + call Function5629 ; respawn opponent .ok call _UpdateSprites @@ -2749,9 +2751,9 @@ Function5602: ; 5602 ; 561d Function561d: ; 561d - call Function5645 - ld a, 0 - call Function5629 + call Function5645 ; clear sprites + ld a, PLAYER + call Function5629 ; respawn player call _UpdateSprites ret ; 5629 @@ -2783,7 +2785,7 @@ Function5645: ; 5645 ld bc, ObjectStructs .loop ld [hMapObjectIndexBuffer], a - call Function5680 + call SetFacing_Standing ld hl, OBJECT_STRUCT_LENGTH add hl, bc ld b, h @@ -2799,9 +2801,9 @@ Function565c: ; 565c push bc call Function56cd pop bc - jr c, Function5680 + jr c, SetFacing_Standing call Function56a3 - jr c, Function5680 + jr c, SetFacing_Standing call Function5688 callba Function4440 xor a @@ -2810,13 +2812,13 @@ Function565c: ; 565c Function5673: ; 5673 call Function56a3 - jr c, Function5680 - callba Function4440 + jr c, SetFacing_Standing + callba Function4440 ; no need to farcall xor a ret ; 5680 -Function5680: ; 5680 +SetFacing_Standing: ; 5680 ld hl, OBJECT_FACING_STEP add hl, bc ld [hl], STANDING diff --git a/engine/movement.asm b/engine/movement.asm index 07bdc37c7..86a2eb6fb 100644 --- a/engine/movement.asm +++ b/engine/movement.asm @@ -87,7 +87,7 @@ MovementPointers: ; 5075 dw Movement_step_shake ; 55 dw Movement_56 ; 56 dw Movement_rock_smash ; 57 - dw Movement_return_dig ; 58 + dw Movement_return_dig ; 58 dw Movement_59 ; 59 ; 5129 @@ -129,7 +129,7 @@ Movement_step_dig: ; 5145 ld [hl], a ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_04 + ld [hl], PERSON_ACTION_SPIN call GetMovementByte ld hl, OBJECT_STEP_DURATION add hl, bc @@ -159,17 +159,17 @@ Movement_return_dig: ; 516a ld [hl], STANDING ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_12 + ld [hl], STEP_TYPE_RETURN_DIG ret ; 5189 Movement_fish_got_bite: ; 5189 ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_06 + ld [hl], PERSON_ACTION_FISHING ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_10 + ld [hl], STEP_TYPE_GOT_BITE ret ; 5196 @@ -180,20 +180,20 @@ Movement_rock_smash: ; 5196 ld [hl], a ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_01 + ld [hl], PERSON_ACTION_STAND ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_11 + ld [hl], STEP_TYPE_ROCK_SMASH ret ; 51ab Movement_fish_cast_rod: ; 51ab ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_06 + ld [hl], PERSON_ACTION_FISHING ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_01 + ld [hl], STEP_TYPE_STANDING ret ; 51b8 @@ -219,7 +219,7 @@ Movement_step_end: ; 51c1 ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_01 + ld [hl], STEP_TYPE_STANDING ret ; 51db @@ -264,7 +264,7 @@ Movement_remove_person: ; 51fd Movement_4b: ; 5210 ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_01 + ld [hl], PERSON_ACTION_STAND ld hl, OBJECT_STEP_TYPE add hl, bc @@ -325,7 +325,7 @@ Movement_step_sleep_common: ; 5247 ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_01 + ld [hl], PERSON_ACTION_STAND ld hl, OBJECT_DIRECTION_WALKING add hl, bc @@ -341,11 +341,11 @@ Movement_step_bump: ; 525f ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_0B + ld [hl], STEP_TYPE_BUMP ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_03 + ld [hl], PERSON_ACTION_BUMP ld hl, OBJECT_DIRECTION_WALKING add hl, bc @@ -457,7 +457,7 @@ TurnHead: ; 52ee ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_01 + ld [hl], PERSON_ACTION_STAND ld hl, OBJECT_DIRECTION_WALKING add hl, bc @@ -732,11 +732,11 @@ HalfStep: ; 5400 ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_02 + ld [hl], PERSON_ACTION_STEP ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_0A + ld [hl], STEP_TYPE_HALF_STEP ret ; 5412 @@ -745,7 +745,7 @@ NormalStep: ; 5412 call Function463f ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_02 + ld [hl], PERSON_ACTION_STEP ld hl, OBJECT_NEXT_TILE add hl, bc @@ -760,20 +760,20 @@ NormalStep: ; 5412 call ShakeGrass .skip_grass - ld hl, wd4cf + ld hl, wCenteredObject ld a, [hMapObjectIndexBuffer] cp [hl] - jr z, .step_type_06 + jr z, .player ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_02 + ld [hl], STEP_TYPE_NPC_WALK ret -.step_type_06 +.player ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_06 + ld [hl], STEP_TYPE_PLAYER_WALK ret ; 5446 @@ -783,22 +783,22 @@ TurningStep: ; 5446 ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_04 + ld [hl], PERSON_ACTION_SPIN - ld hl, wd4cf + ld hl, wCenteredObject ld a, [hMapObjectIndexBuffer] cp [hl] - jr z, .step_type_06 + jr z, .player ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_02 + ld [hl], STEP_TYPE_NPC_WALK ret -.step_type_06 +.player ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_06 + ld [hl], STEP_TYPE_PLAYER_WALK ret ; 5468 @@ -809,22 +809,22 @@ SlideStep: ; 5468 ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_01 + ld [hl], PERSON_ACTION_STAND - ld hl, wd4cf + ld hl, wCenteredObject ld a, [hMapObjectIndexBuffer] cp [hl] - jr z, .step_type_06 + jr z, .player ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_02 + ld [hl], STEP_TYPE_NPC_WALK ret -.step_type_06 +.player ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_06 + ld [hl], STEP_TYPE_PLAYER_WALK ret ; 548a @@ -841,23 +841,23 @@ JumpStep: ; 548a ld hl, OBJECT_ACTION add hl, bc - ld [hl], PERSON_ACTION_02 + ld [hl], PERSON_ACTION_STEP call SpawnShadow - ld hl, wd4cf + ld hl, wCenteredObject ld a, [hMapObjectIndexBuffer] cp [hl] - jr z, .step_type_09 + jr z, .player ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_08 + ld [hl], STEP_TYPE_NPC_JUMP ret -.step_type_09 +.player ld hl, OBJECT_STEP_TYPE add hl, bc - ld [hl], STEP_TYPE_09 + ld [hl], STEP_TYPE_PLAYER_JUMP ret ; 54b8 diff --git a/engine/save.asm b/engine/save.asm index de11a8133..8bccd932c 100644 --- a/engine/save.asm +++ b/engine/save.asm @@ -496,9 +496,9 @@ Function14da0: ; 14da0 ValidateSave: ; 14da9 ld a, BANK(s1_a008) call GetSRAMBank - ld a, $63 + ld a, 99 ld [s1_a008], a - ld a, $7f + ld a, " " ld [s1_ad0f], a jp CloseSRAM ; 14dbb @@ -564,9 +564,9 @@ Function14e13: ; 14e13 ValidateBackupSave: ; 14e2d ld a, BANK(s0_b208) call GetSRAMBank - ld a, $63 + ld a, 99 ld [s0_b208], a - ld a, $7f + ld a, " " ld [s0_bf0f], a call CloseSRAM ret @@ -661,7 +661,7 @@ TryLoadSaveFile: ; 14ea5 (5:4ea5) .corrupt ld a, [Options] push af - set 4, a + set NO_TEXT_SCROLL, a ld [Options], a ld hl, UnknownText_0x1529c call PrintText @@ -735,10 +735,10 @@ Function14f84: ; 14f84 ld a, BANK(s1_a008) call GetSRAMBank ld a, [s1_a008] - cp $63 + cp 99 jr nz, .nope ld a, [s1_ad0f] - cp $7f + cp " " jr nz, .nope ld hl, sOptions ld de, Options @@ -757,10 +757,10 @@ Function14faf: ; 14faf ld a, BANK(s0_b208) call GetSRAMBank ld a, [s0_b208] - cp $63 + cp 99 jr nz, .nope ld a, [s0_bf0f] - cp $7f + cp " " jr nz, .nope ld hl, sBackupOptions ld de, Options diff --git a/engine/scripting.asm b/engine/scripting.asm index 60618abab..a0acbf75c 100644 --- a/engine/scripting.asm +++ b/engine/scripting.asm @@ -241,7 +241,7 @@ ENDC dw Script_trainerclassname dw Script_name dw Script_wait - dw Script_unknown0xa9 + dw Script_check_save ; 0x96e05 StartScript: ; 0x96e05 @@ -415,10 +415,10 @@ Script_repeattext: ; 0x96ebb call GetScriptByte ld h, a cp -1 - jr nz, .done ; 0x96ec5 $11 + jr nz, .done ld a, l cp -1 - jr nz, .done ; 0x96eca $c + jr nz, .done ld hl, wd44e ld a, [hli] ld b, a @@ -456,7 +456,7 @@ Script_yesorno: ; 0x96eed call YesNoBox ld a, 0 - jr c, .no ; 0x96ef2 $2 + jr c, .no ld a, 1 .no ld [ScriptVar], a @@ -567,12 +567,12 @@ Script_verbosegiveitem: ; 0x96f60 ; 0x96f76 -Function96f76: ; 96f76 +ret_96f76: ; 96f76 ret ; 96f77 GiveItemScript: ; 96f77 - callasm Function96f76 + callasm ret_96f76 writetext ReceivedItemText iffalse .Full waitbutton @@ -792,16 +792,16 @@ Script_askforphonenumber: ; 0x970be ; number (SingleByteParam) call YesNoBox - jr c, .refused ; 0x970c1 $13 + jr c, .refused call GetScriptByte ld c, a callba AddPhoneNumber - jr c, .phonefull ; 0x970cd $3 + jr c, .phonefull xor a - jr .done ; 0x970d0 $9 + jr .done .phonefull ld a, 1 - jr .done ; 0x970d4 $5 + jr .done .refused call GetScriptByte ld a, 2 @@ -1196,7 +1196,7 @@ ApplyPersonFacing: ; 0x9728b ld a, d push de call CheckObjectVisibility - jr c, .not_visible ; 0x97290 $27 + jr c, .not_visible ld hl, OBJECT_SPRITE add hl, bc ld a, [hl] @@ -1207,13 +1207,13 @@ ApplyPersonFacing: ; 0x9728b ld hl, OBJECT_FLAGS1 add hl, bc bit 2, [hl] - jr nz, .not_visible ; 0x972a4 $13 + jr nz, .not_visible pop de ld a, e call SetSpriteDirection ld hl, VramState bit 6, [hl] - jr nz, .text_state ; 0x972b0 $3 + jr nz, .text_state call .DisableTextTiles .text_state call UpdateSprites @@ -1235,7 +1235,7 @@ ApplyPersonFacing: ; 0x9728b dec bc ld a, b or c - jr nz, .loop ; 0x972cb $f8 + jr nz, .loop ret ; 0x972ce @@ -1299,9 +1299,9 @@ ApplyEventActionAppearDisappear: ; 0x9730b ld d, [hl] ld a, -1 cp e - jr nz, .okay ; 0x9731a $5 + jr nz, .okay cp d - jr nz, .okay ; 0x9731d $2 + jr nz, .okay xor a ret .okay @@ -1391,7 +1391,7 @@ Script_loademote: ; 0x97384 call GetScriptByte cp -1 - jr nz, .not_var_emote ; 0x97389 $3 + jr nz, .not_var_emote ld a, [ScriptVar] .not_var_emote ld c, a @@ -1563,21 +1563,21 @@ Script_returnafterbattle: ; 0x97459 ld a, [wBattleResult] and $3f cp $1 - jr nz, .notblackedout ; 0x97466 $8 + jr nz, .notblackedout ld b, BANK(Script_BattleWhiteout) ld hl, Script_BattleWhiteout jp ScriptJump .notblackedout bit 0, d - jr z, .was_wild ; 0x97472 $8 + jr z, .was_wild callba MomTriesToBuySomething - jr .done ; 0x9747a $12 + jr .done .was_wild ld a, [wBattleResult] bit 7, a - jr z, .done ; 0x97481 $b + jr z, .done ld b, BANK(Script_SpecialBillCall) ld de, Script_SpecialBillCall callba LoadScriptBDE @@ -1643,12 +1643,18 @@ Script_2ptcall: ; 0x974be ; fallthrough ScriptCall: ; 0x974cb +; Bug: The script stack has a capacity of 5 scripts, yet there is +; nothing to stop you from pushing a sixth script. The high part +; of the script address can then be overwritten by modifications +; to ScriptDelay, causing the script to return to the rst/interrupt +; space. + push de - ld hl, wd43c + ld hl, wScriptStackSize ld e, [hl] inc [hl] ld d, $0 - ld hl, wd43d + ld hl, wScriptStackBA1 rept 3 add hl, de endr @@ -1751,8 +1757,8 @@ Script_if_equal: ; 0x97540 call GetScriptByte ld hl, ScriptVar cp [hl] - jr z, Script_2jump ; 0x97547 $b5 - jr SkipTwoScriptBytes ; 0x97549 $4b + jr z, Script_2jump + jr SkipTwoScriptBytes ; 0x9754b Script_if_not_equal: ; 0x9754b @@ -1764,8 +1770,8 @@ Script_if_not_equal: ; 0x9754b call GetScriptByte ld hl, ScriptVar cp [hl] - jr nz, Script_2jump ; 0x97552 $aa - jr SkipTwoScriptBytes ; 0x97554 $40 + jr nz, Script_2jump + jr SkipTwoScriptBytes ; 0x97556 Script_if_greater_than: ; 0x97556 @@ -1778,8 +1784,8 @@ Script_if_greater_than: ; 0x97556 ld b, a call GetScriptByte cp b - jr c, Script_2jump ; 0x9755e $9e - jr SkipTwoScriptBytes ; 0x97560 $34 + jr c, Script_2jump + jr SkipTwoScriptBytes ; 0x97562 Script_if_less_than: ; 0x97562 @@ -1792,8 +1798,8 @@ Script_if_less_than: ; 0x97562 ld b, a ld a, [ScriptVar] cp b - jr c, Script_2jump ; 0x9756a $92 - jr SkipTwoScriptBytes ; 0x9756c $28 + jr c, Script_2jump + jr SkipTwoScriptBytes ; 0x9756e Script_jumpstd: ; 0x9756e @@ -1802,7 +1808,7 @@ Script_jumpstd: ; 0x9756e ; predefined_script (MultiByteParam) call StdScript - jr ScriptJump ; 0x97571 $2a + jr ScriptJump ; 0x97573 Script_callstd: ; 0x97573 @@ -1870,7 +1876,7 @@ Script_checktriggers: ; 0x975c2 ; script command 0x13 call CheckTriggers - jr z, .asm_975cb ; 0x975c5 $4 + jr z, .asm_975cb ld [ScriptVar], a ret .asm_975cb @@ -1892,7 +1898,7 @@ Script_checkmaptriggers: ; 0x975d1 call GetMapTrigger ld a, d or e - jr z, .asm_975e5 ; 0x975de $5 + jr z, .asm_975e5 ld a, [de] ld [ScriptVar], a ret @@ -1911,7 +1917,7 @@ Script_dotrigger: ; 0x975eb ld b, a ld a, [MapNumber] ld c, a - jr Unknown_975fd ; 0x975f3 $8 + jr Unknown_975fd ; 0x975f5 Script_domaptrigger: ; 0x975f5 @@ -1931,7 +1937,7 @@ Unknown_975fd: ; 0x975fd call GetMapTrigger ld a, d or e - jr z, .asm_97608 ; 0x97602 $4 + jr z, .asm_97608 call GetScriptByte ld [de], a .asm_97608 @@ -2012,28 +2018,31 @@ Script_random: ; 0x97640 ld [ScriptVar], a and a ret z + ld c, a - call Function97673 + call .Divide256byC and a - jr z, .asm_9765f ; 0x9764d $10 + jr z, .no_restriction ; 256 % b == 0 ld b, a xor a sub b ld b, a -.asm_97653 +.loop push bc call Random pop bc - ld a, [$ffe1] + ld a, [hRandomAdd] cp b - jr nc, .asm_97653 ; 0x9765b $f6 - jr .asm_97666 ; 0x9765d $7 -.asm_9765f + jr nc, .loop + jr .finish + +.no_restriction push bc call Random pop bc - ld a, [$ffe1] -.asm_97666 + ld a, [hRandomAdd] + +.finish push af ld a, [ScriptVar] ld c, a @@ -2043,14 +2052,14 @@ Script_random: ; 0x97640 ret ; 0x97673 -Function97673: ; 0x97673 +.Divide256byC: ; 0x97673 xor a ld b, a sub c -.asm_97676 +.mod_loop inc b sub c - jr nc, .asm_97676 ; 0x97678 $fc + jr nc, .mod_loop dec b add c ret @@ -2119,7 +2128,7 @@ Script_pokenamemem: ; 0x976ae call GetScriptByte and a - jr nz, .gotit ; 0x976b2 $3 + jr nz, .gotit ld a, [ScriptVar] .gotit ld [wd265], a @@ -2149,13 +2158,13 @@ Script_itemtotext: ; 0x976d5 call GetScriptByte and a - jr nz, .ok ; 0x976d9 $3 + jr nz, .ok ld a, [ScriptVar] .ok ld [wd265], a call GetItemName ld de, StringBuffer1 - jr ConvertMemToText ; 0x976e7 $d7 + jr ConvertMemToText ; 0x976e9 Script_mapnametotext: ; 0x976e9 @@ -2183,7 +2192,7 @@ Script_displaylocation: ; 0x97701 ; memory (SingleByteParam) call GetScriptByte - jr ConvertLandmarkToText ; 0x97704 $ee + jr ConvertLandmarkToText ; 0x97706 Script_trainertotext: ; 0x97706 @@ -2198,7 +2207,7 @@ Script_trainertotext: ; 0x97706 call GetScriptByte ld b, a callba GetTrainerName - jr ConvertMemToText ; 0x97714 $aa + jr ConvertMemToText ; 0x97716 Script_name: ; 0x97716 @@ -2227,7 +2236,7 @@ Script_trainerclassname: ; 0x9772b ld a, TRAINER_NAME ld [wNamedObjectTypeBuffer], a - jr ContinueToGetName ; 0x97730 $ea + jr ContinueToGetName ; 0x97732 Script_readmoney: ; 0x97732 @@ -2344,7 +2353,7 @@ Script_giveitem: ; 0x977ca call GetScriptByte cp ITEM_FROM_MEM - jr nz, .ok ; 0x977cf $3 + jr nz, .ok ld a, [ScriptVar] .ok ld [CurItem], a @@ -2352,7 +2361,7 @@ Script_giveitem: ; 0x977ca ld [wItemQuantityChangeBuffer], a ld hl, NumItems call ReceiveItem - jr nc, .full ; 0x977e3 $6 + jr nc, .full ld a, $1 ld [ScriptVar], a ret @@ -2718,7 +2727,7 @@ Script_checkevent: ; 0x979a4 call EventFlagAction ld a, c and a - jr z, .false ; 0x979b3 $2 + jr z, .false ld a, 1 .false ld [ScriptVar], a @@ -2766,7 +2775,7 @@ Script_checkflag: ; 0x979d7 call _EngineFlagAction ld a, c and a - jr z, .false ; 0x979e6 $2 + jr z, .false ld a, 1 .false ld [ScriptVar], a @@ -2835,7 +2844,7 @@ Script_warp: ; 0x97a1d ; This seems to be some sort of error handling case. call GetScriptByte and a - jr z, .not_ok ; 0x97a21 $27 + jr z, .not_ok ld [MapGroup], a call GetScriptByte ld [MapNumber], a @@ -3080,14 +3089,14 @@ Script_pause: ; 0x97b47 call GetScriptByte and a - jr z, .loop ; 0x97b4b $3 + jr z, .loop ld [ScriptDelay], a .loop ld c, 2 call DelayFrames ld hl, ScriptDelay dec [hl] - jr nz, .loop ; 0x97b59 $f5 + jr nz, .loop ret ; 0x97b5c @@ -3098,7 +3107,7 @@ Script_deactivatefacing: ; 0x97b5c call GetScriptByte and a - jr z, .no_time ; 0x97b60 $3 + jr z, .no_time ld [ScriptDelay], a .no_time ld a, SCRIPT_WAIT @@ -3149,14 +3158,14 @@ Script_return: ; 0x97b8c ExitScriptSubroutine: ; 0x97b9a ; Return carry if there's no parent to return to. - ld hl, wd43c + ld hl, wScriptStackSize ld a, [hl] and a - jr z, .done ; 0x97b9f $1d + jr z, .done dec [hl] ld e, [hl] ld d, $0 - ld hl, wd43d + ld hl, wScriptStackBA1 rept 3 add hl,de endr @@ -3181,7 +3190,7 @@ Script_resetfuncs: ; 0x97bc0 ; script command 0x93 xor a - ld [wd43c], a + ld [wScriptStackSize], a ld [ScriptRunning], a ld a, SCRIPT_OFF ld [ScriptMode], a @@ -3231,22 +3240,22 @@ Script_wait: ; 0x97c05 call DelayFrames pop af dec a - jr nz, .loop ; 0x97c11 $f6 + jr nz, .loop pop bc ret ; 0x97c15 -Script_unknown0xa9: ; 0x97c15 +Script_check_save: ; 0x97c15 ; script command 0xa9 - callba Function4cffe + callba CheckSave ld a, c ld [ScriptVar], a ret ; 0x97c20 -Function97c20: ; 97c20 unreferenced +; 97c20 unreferenced ld a, [.byte] ld [ScriptVar], a ret -- cgit v1.2.3 From 4b5424368f09ff83bfdd2454a4fd06985f5ff54d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 16 Nov 2015 12:49:42 -0500 Subject: Little cleanup on engine/scripting.asm --- engine/scripting.asm | 836 +++++++++++++++++++++++++-------------------------- 1 file changed, 418 insertions(+), 418 deletions(-) (limited to 'engine') diff --git a/engine/scripting.asm b/engine/scripting.asm index a0acbf75c..4aa1de224 100644 --- a/engine/scripting.asm +++ b/engine/scripting.asm @@ -69,13 +69,13 @@ RunScriptCommand: ; 96ca9 ; 96cb1 -ScriptCommandTable: ; 0x96cb1 - dw Script_2call - dw Script_3call - dw Script_2ptcall - dw Script_2jump - dw Script_3jump - dw Script_2ptjump +ScriptCommandTable: ; 96cb1 + dw Script_scall + dw Script_farscall + dw Script_ptcall + dw Script_jump + dw Script_farjump + dw Script_ptjump dw Script_if_equal dw Script_if_not_equal dw Script_iffalse @@ -84,9 +84,9 @@ ScriptCommandTable: ; 0x96cb1 dw Script_if_less_than dw Script_jumpstd dw Script_callstd - dw Script_3callasm + dw Script_callasm dw Script_special - dw Script_2ptcallasm + dw Script_ptcallasm dw Script_checkmaptriggers dw Script_domaptrigger dw Script_checktriggers @@ -144,16 +144,16 @@ ScriptCommandTable: ; 0x96cb1 dw Script_loadfont dw Script_refreshscreen dw Script_loadmovesprites - dw Script_loadbytec1ce - dw Script_3writetext - dw Script_2writetext + dw Script_loadbytec2cf + dw Script_farwritetext + dw Script_writetext dw Script_repeattext dw Script_yesorno dw Script_loadmenudata dw Script_writebackup dw Script_jumptextfaceplayer IF _CRYSTAL - dw Script_3jumptext + dw Script_farjumptext ENDC dw Script_jumptext dw Script_closetext @@ -242,27 +242,27 @@ ENDC dw Script_name dw Script_wait dw Script_check_save -; 0x96e05 +; 96e05 -StartScript: ; 0x96e05 +StartScript: ; 96e05 ld hl, ScriptFlags set SCRIPT_RUNNING, [hl] ret -; 0x96e0b +; 96e0b -CheckScript: ; 0x96e0b +CheckScript: ; 96e0b ld hl, ScriptFlags bit SCRIPT_RUNNING, [hl] ret -; 0x96e11 +; 96e11 -StopScript: ; 0x96e11 +StopScript: ; 96e11 ld hl, ScriptFlags res SCRIPT_RUNNING, [hl] ret -; 0x96e17 +; 96e17 -Script_3callasm: ; 0x96e17 +Script_callasm: ; 96e17 ; script command 0xe ; parameters: ; asm (AsmPointerParam) @@ -276,9 +276,9 @@ Script_3callasm: ; 0x96e17 ld a, b rst FarCall ret -; 0x96e26 +; 96e26 -Script_special: ; 0x96e26 +Script_special: ; 96e26 ; script command 0xf ; parameters: ; predefined_script (MultiByteParam) @@ -289,9 +289,9 @@ Script_special: ; 0x96e26 ld d, a callba Special ret -; 0x96e35 +; 96e35 -Script_2ptcallasm: ; 0x96e35 +Script_ptcallasm: ; 96e35 ; script command 0x10 ; parameters: ; asm (PointerToAsmPointerParam) @@ -308,9 +308,9 @@ Script_2ptcallasm: ; 0x96e35 ld a, b rst FarCall ret -; 0x96e45 +; 96e45 -Script_jumptextfaceplayer: ; 0x96e45 +Script_jumptextfaceplayer: ; 96e45 ; script command 0x51 ; parameters: ; text_pointer (RawTextPointerLabelParam) @@ -324,9 +324,9 @@ Script_jumptextfaceplayer: ; 0x96e45 ld b, BANK(JumpTextFacePlayerScript) ld hl, JumpTextFacePlayerScript jp ScriptJump -; 0x96e5f +; 96e5f -Script_jumptext: ; 0x96e5f +Script_jumptext: ; 96e5f ; script command 0x53 ; parameters: ; text_pointer (RawTextPointerLabelParam) @@ -340,22 +340,22 @@ Script_jumptext: ; 0x96e5f ld b, BANK(JumpTextScript) ld hl, JumpTextScript jp ScriptJump -; 0x96e79 +; 96e79 -JumpTextFacePlayerScript: ; 0x96e79 +JumpTextFacePlayerScript: ; 96e79 faceplayer -JumpTextScript: ; 0x96e7a +JumpTextScript: ; 96e7a loadfont repeattext -1, -1 closetext loadmovesprites end -; 0x96e81 +; 96e81 IF _CRYSTAL -Script_3jumptext: ; 0x96e81 +Script_farjumptext: ; 96e81 ; script command 0x52 ; parameters: ; text_pointer (PointerLabelBeforeBank) @@ -369,12 +369,12 @@ Script_3jumptext: ; 0x96e81 ld b, BANK(JumpTextScript) ld hl, JumpTextScript jp ScriptJump -; 0x96e9b +; 96e9b ENDC -Script_2writetext: ; 0x96e9b +Script_writetext: ; 96e9b ; script command 0x4c ; parameters: ; text_pointer (RawTextPointerLabelParam) @@ -387,9 +387,9 @@ Script_2writetext: ; 0x96e9b ld b, a call MapTextbox ret -; 0x96eab +; 96eab -Script_3writetext: ; 0x96eab +Script_farwritetext: ; 96eab ; script command 0x4b ; parameters: ; text_pointer (PointerLabelBeforeBank) @@ -402,9 +402,9 @@ Script_3writetext: ; 0x96eab ld h, a call MapTextbox ret -; 0x96ebb +; 96ebb -Script_repeattext: ; 0x96ebb +Script_repeattext: ; 96ebb ; script command 0x4d ; parameters: ; byte (SingleByteParam) @@ -429,15 +429,15 @@ Script_repeattext: ; 0x96ebb ret .done ret -; 0x96ed9 +; 96ed9 -Script_closetext: ; 0x96ed9 +Script_closetext: ; 96ed9 ; script command 0x54 jp CloseText -; 0x96edc +; 96edc -Script_keeptextopen: ; 0x96edc +Script_keeptextopen: ; 96edc ; script command 0x55 ld a, [hOAMUpdate] @@ -449,9 +449,9 @@ Script_keeptextopen: ; 0x96edc pop af ld [hOAMUpdate], a ret -; 0x96eed +; 96eed -Script_yesorno: ; 0x96eed +Script_yesorno: ; 96eed ; script command 0x4e call YesNoBox @@ -461,9 +461,9 @@ Script_yesorno: ; 0x96eed .no ld [ScriptVar], a ret -; 0x96efa +; 96efa -Script_loadmenudata: ; 0x96efa +Script_loadmenudata: ; 96efa ; script command 0x4f ; parameters: ; data (MenuDataPointerParam) @@ -477,17 +477,17 @@ Script_loadmenudata: ; 0x96efa call Call_a_de call UpdateSprites ret -; 0x96f0f +; 96f0f -Script_writebackup: ; 0x96f0f +Script_writebackup: ; 96f0f ; script command 0x50 call WriteBackup call UpdateSprites ret -; 0x96f16 +; 96f16 -Script_pokepic: ; 0x96f16 +Script_pokepic: ; 96f16 ; script command 0x56 ; parameters: ; pokemon (PokemonParam) @@ -500,16 +500,16 @@ Script_pokepic: ; 0x96f16 ld [CurPartySpecies], a callba Pokepic ret -; 0x96f29 +; 96f29 -Script_pokepicyesorno: ; 0x96f29 +Script_pokepicyesorno: ; 96f29 ; script command 0x57 callba PokepicYesOrNo ret -; 0x96f30 +; 96f30 -Script_interpretmenu2: ; 0x96f30 +Script_interpretmenu2: ; 96f30 ; script command 0x59 ld a, [ScriptBank] @@ -521,9 +521,9 @@ Script_interpretmenu2: ; 0x96f30 .ok ld [ScriptVar], a ret -; 0x96f41 +; 96f41 -Script_interpretmenu: ; 0x96f41 +Script_interpretmenu: ; 96f41 ; script command 0x58 ld a, [ScriptBank] @@ -535,9 +535,9 @@ Script_interpretmenu: ; 0x96f41 .ok ld [ScriptVar], a ret -; 0x96f52 +; 96f52 -Script_battletowertext: ; 0x96f52 +Script_battletowertext: ; 96f52 ; script command 0xa4 ; parameters: ; pointer (PointerLabelBeforeBank) @@ -548,9 +548,9 @@ Script_battletowertext: ; 0x96f52 ld c, a callba BattleTowerText ret -; 0x96f60 +; 96f60 -Script_verbosegiveitem: ; 0x96f60 +Script_verbosegiveitem: ; 96f60 ; script command 0x9e ; parameters: ; item (ItemLabelByte) @@ -564,7 +564,7 @@ Script_verbosegiveitem: ; 0x96f60 ld b, BANK(GiveItemScript) ld de, GiveItemScript jp ScriptCall -; 0x96f76 +; 96f76 ret_96f76: ; 96f76 @@ -593,7 +593,7 @@ ReceivedItemText: ; 96f89 ; 96f8e -Script_verbosegiveitem2: ; 0x96f8e +Script_verbosegiveitem2: ; 96f8e ; script command 0x9f ; parameters: ; item (ItemLabelByte) @@ -623,9 +623,9 @@ Script_verbosegiveitem2: ; 0x96f8e ld b, BANK(GiveItemScript) ld de, GiveItemScript jp ScriptCall -; 0x96fc6 +; 96fc6 -Script_itemnotify: ; 0x96fc6 +Script_itemnotify: ; 96fc6 ; script command 0x45 call GetPocketName @@ -634,9 +634,9 @@ Script_itemnotify: ; 0x96fc6 ld hl, PutItemInPocketText call MapTextbox ret -; 0x96fd5 +; 96fd5 -Script_pocketisfull: ; 0x96fd5 +Script_pocketisfull: ; 96fd5 ; script command 0x46 call GetPocketName @@ -645,9 +645,9 @@ Script_pocketisfull: ; 0x96fd5 ld hl, PocketIsFullText call MapTextbox ret -; 0x96fe4 +; 96fe4 -Script_specialsound: ; 0x96fe4 +Script_specialsound: ; 96fe4 ; script command 0x88 callba CheckItemPocket @@ -660,7 +660,7 @@ Script_specialsound: ; 0x96fe4 call PlaySFX call WaitSFX ret -; 0x96ffe +; 96ffe GetPocketName: ; 96ffe @@ -715,7 +715,7 @@ PocketIsFullText: ; 97060 ; 97065 -Script_pokemart: ; 0x97065 +Script_pokemart: ; 97065 ; script command 0x94 ; parameters: ; dialog_id (SingleByteParam) @@ -731,9 +731,9 @@ Script_pokemart: ; 0x97065 ld b, a callba OpenMartDialog ret -; 0x9707c +; 9707c -Script_elevator: ; 0x9707c +Script_elevator: ; 9707c ; script command 0x95 ; parameters: ; floor_list_pointer (PointerLabelParam) @@ -751,9 +751,9 @@ Script_elevator: ; 0x9707c ld a, $1 ld [ScriptVar], a ret -; 0x97099 +; 97099 -Script_trade: ; 0x97099 +Script_trade: ; 97099 ; script command 0x96 ; parameters: ; trade_id (SingleByteParam) @@ -762,9 +762,9 @@ Script_trade: ; 0x97099 ld e, a callba NPCTrade ret -; 0x970a4 +; 970a4 -Script_phonecall: ; 0x970a4 +Script_phonecall: ; 970a4 ; script command 0x98 ; parameters: ; caller_name (RawTextPointerLabelParam) @@ -777,16 +777,16 @@ Script_phonecall: ; 0x970a4 ld b, a callba PhoneCall ret -; 0x970b7 +; 970b7 -Script_hangup: ; 0x970b7 +Script_hangup: ; 970b7 ; script command 0x99 callba HangUp ret -; 0x970be +; 970be -Script_askforphonenumber: ; 0x970be +Script_askforphonenumber: ; 970be ; script command 0x97 ; parameters: ; number (SingleByteParam) @@ -808,9 +808,9 @@ Script_askforphonenumber: ; 0x970be .done ld [ScriptVar], a ret -; 0x970df +; 970df -Script_describedecoration: ; 0x970df +Script_describedecoration: ; 970df ; script command 0x9a ; parameters: ; byte (SingleByteParam) @@ -821,9 +821,9 @@ Script_describedecoration: ; 0x970df ld h, d ld l, e jp ScriptJump -; 0x970ee +; 970ee -Script_fruittree: ; 0x970ee +Script_fruittree: ; 970ee ; script command 0x9b ; parameters: ; tree_id (SingleByteParam) @@ -833,9 +833,9 @@ Script_fruittree: ; 0x970ee ld b, BANK(FruitTreeScript) ld hl, FruitTreeScript jp ScriptJump -; 0x970fc +; 970fc -Script_loadwilddata: ; 0x970fc +Script_loadwilddata: ; 970fc ; script command 0xa0 ; parameters: ; flag (SingleByteParam) @@ -850,9 +850,9 @@ Script_loadwilddata: ; 0x970fc ld e, a callba LoadWildData ret -; 0x9710f +; 9710f -Script_trainertext: ; 0x9710f +Script_trainertext: ; 9710f ; script command 0x62 ; parameters: ; which_text (SingleByteParam) @@ -871,9 +871,9 @@ endr ld b, a call MapTextbox ret -; 0x97125 +; 97125 -Script_scripttalkafter: ; 0x97125 +Script_scripttalkafter: ; 97125 ; script command 0x65 ld hl, wd04b @@ -883,9 +883,9 @@ Script_scripttalkafter: ; 0x97125 ld a, [EngineBuffer1] ld b, a jp ScriptJump -; 0x97132 +; 97132 -Script_trainerstatus: ; 0x97132 +Script_trainerstatus: ; 97132 ; script command 0x63 ; parameters: ; action (SingleByteParam) @@ -905,9 +905,9 @@ Script_trainerstatus: ; 0x97132 ld a, 1 ld [ScriptVar], a ret -; 0x9714c +; 9714c -Script_winlosstext: ; 0x9714c +Script_winlosstext: ; 9714c ; script command 0x64 ; parameters: ; win_text_pointer (TextPointerLabelParam) @@ -924,18 +924,18 @@ Script_winlosstext: ; 0x9714c call GetScriptByte ld [hli], a ret -; 0x97163 +; 97163 -Script_talkaftercancel: ; 0x97163 +Script_talkaftercancel: ; 97163 ; script command 0x66 ld a, [wd04d] and a ret z jp Script_end -; 0x9716b +; 9716b -Script_talkaftercheck: ; 0x9716b +Script_talkaftercheck: ; 9716b ; script command 0x67 ld a, 1 @@ -946,25 +946,25 @@ Script_talkaftercheck: ; 0x9716b xor a ld [ScriptVar], a ret -; 0x9717a +; 9717a -Script_playrammusic: ; 0x9717a +Script_playrammusic: ; 9717a ; script command 0x80 ld a, [OtherTrainerClass] ld e, a callba PlayTrainerEncounterMusic ret -; 0x97185 +; 97185 -Script_playmapmusic: ; 0x97185 +Script_playmapmusic: ; 97185 ; script command 0x82 call PlayMapMusic ret -; 0x97189 +; 97189 -Script_playmusic: ; 0x97189 +Script_playmusic: ; 97189 ; script command 0x7f ; parameters: ; music_pointer (MultiByteParam) @@ -980,9 +980,9 @@ Script_playmusic: ; 0x97189 ld d, a call PlayMusic ret -; 0x971a2 +; 971a2 -Script_musicfadeout: ; 0x971a2 +Script_musicfadeout: ; 971a2 ; script command 0x81 ; parameters: ; music (MultiByteParam) @@ -996,9 +996,9 @@ Script_musicfadeout: ; 0x971a2 and $7f ld [MusicFade], a ret -; 0x971b7 +; 971b7 -Script_playsound: ; 0x971b7 +Script_playsound: ; 971b7 ; script command 0x85 ; parameters: ; sound_pointer (MultiByteParam) @@ -1009,24 +1009,24 @@ Script_playsound: ; 0x971b7 ld d, a call PlaySFX ret -; 0x971c3 +; 971c3 -Script_waitbutton: ; 0x971c3 +Script_waitbutton: ; 971c3 ; script command 0x86 call WaitSFX ret -; 0x971c7 +; 971c7 -Script_warpsound: ; 0x971c7 +Script_warpsound: ; 971c7 ; script command 0x87 callba Function14a07 call PlaySFX ret -; 0x971d1 +; 971d1 -Script_cry: ; 0x971d1 +Script_cry: ; 971d1 ; script command 0x84 ; parameters: ; cry_id (MultiByteParam) @@ -1041,18 +1041,18 @@ Script_cry: ; 0x971d1 .ok call PlayCry ret -; 0x971e3 +; 971e3 -GetScriptPerson: ; 0x971e3 +GetScriptPerson: ; 971e3 and a ret z cp LAST_TALKED ret z dec a ret -; 0x971ea +; 971ea -Script_setlasttalked: ; 0x971ea +Script_setlasttalked: ; 971ea ; script command 0x68 ; parameters: ; person (SingleByteParam) @@ -1061,9 +1061,9 @@ Script_setlasttalked: ; 0x971ea call GetScriptPerson ld [hLastTalked], a ret -; 0x971f3 +; 971f3 -Script_applymovement: ; 0x971f3 +Script_applymovement: ; 971f3 ; script command 0x69 ; parameters: ; person (SingleByteParam) @@ -1097,14 +1097,14 @@ ApplyMovement: ; 971fa ld [ScriptMode], a call StopScript ret -; 0x97221 +; 97221 -SetFlagsForMovement_2: ; 0x97221 +SetFlagsForMovement_2: ; 97221 callba _SetFlagsForMovement_2 ret -; 0x97228 +; 97228 -Script_applymovement2: ; 0x97228 +Script_applymovement2: ; 97228 ; apply movement to last talked ; script command 0x6a ; parameters: @@ -1113,9 +1113,9 @@ Script_applymovement2: ; 0x97228 ld a, [hLastTalked] ld c, a jp ApplyMovement -; 0x9722e +; 9722e -Script_faceplayer: ; 0x9722e +Script_faceplayer: ; 9722e ; script command 0x6b ld a, [hLastTalked] @@ -1134,9 +1134,9 @@ endr ld d, a call ApplyPersonFacing ret -; 0x97248 +; 97248 -Script_faceperson: ; 0x97248 +Script_faceperson: ; 97248 ; script command 0x6c ; parameters: ; person1 (SingleByteParam) @@ -1168,9 +1168,9 @@ endr ld d, c call ApplyPersonFacing ret -; 0x97274 +; 97274 -Script_spriteface: ; 0x97274 +Script_spriteface: ; 97274 ; script command 0x76 ; parameters: ; person (SingleByteParam) @@ -1190,9 +1190,9 @@ endr ld e, a call ApplyPersonFacing ret -; 0x9728b +; 9728b -ApplyPersonFacing: ; 0x9728b +ApplyPersonFacing: ; 9728b ld a, d push de call CheckObjectVisibility @@ -1223,9 +1223,9 @@ ApplyPersonFacing: ; 0x9728b pop de scf ret -; 0x972bc +; 972bc -.DisableTextTiles: ; 0x972bc +.DisableTextTiles: ; 972bc call LoadMapPart hlcoord 0, 0 ld bc, SCREEN_WIDTH * SCREEN_HEIGHT @@ -1237,9 +1237,9 @@ ApplyPersonFacing: ; 0x9728b or c jr nz, .loop ret -; 0x972ce +; 972ce -Script_variablesprite: ; 0x972ce +Script_variablesprite: ; 972ce ; script command 0x6d ; parameters: ; byte (SingleByteParam) @@ -1253,9 +1253,9 @@ Script_variablesprite: ; 0x972ce call GetScriptByte ld [hl], a ret -; 0x972dd +; 972dd -Script_appear: ; 0x972dd +Script_appear: ; 972dd ; script command 0x6f ; parameters: ; person (SingleByteParam) @@ -1267,9 +1267,9 @@ Script_appear: ; 0x972dd ld b, 0 ; clear call ApplyEventActionAppearDisappear ret -; 0x972ee +; 972ee -Script_disappear: ; 0x972ee +Script_disappear: ; 972ee ; script command 0x6e ; parameters: ; person (SingleByteParam) @@ -1286,9 +1286,9 @@ Script_disappear: ; 0x972ee call ApplyEventActionAppearDisappear callba _UpdateSprites ret -; 0x9730b +; 9730b -ApplyEventActionAppearDisappear: ; 0x9730b +ApplyEventActionAppearDisappear: ; 9730b push bc call GetMapObject ld hl, MAPOBJECT_EVENT_FLAG @@ -1307,9 +1307,9 @@ ApplyEventActionAppearDisappear: ; 0x9730b .okay call EventFlagAction ret -; 0x97325 +; 97325 -Script_follow: ; 0x97325 +Script_follow: ; 97325 ; script command 0x70 ; parameters: ; person2 (SingleByteParam) @@ -1323,16 +1323,16 @@ Script_follow: ; 0x97325 ld c, a callba StartFollow ret -; 0x9733a +; 9733a -Script_stopfollow: ; 0x9733a +Script_stopfollow: ; 9733a ; script command 0x71 callba StopFollow ret -; 0x97341 +; 97341 -Script_moveperson: ; 0x97341 +Script_moveperson: ; 97341 ; script command 0x72 ; parameters: ; person (SingleByteParam) @@ -1350,9 +1350,9 @@ Script_moveperson: ; 0x97341 ld e, a callba CopyDECoordsToMapObject ret -; 0x9735b +; 9735b -Script_writepersonxy: ; 0x9735b +Script_writepersonxy: ; 9735b ; script command 0x73 ; parameters: ; person (SingleByteParam) @@ -1366,9 +1366,9 @@ Script_writepersonxy: ; 0x9735b ld b, a callba WritePersonXY ret -; 0x9736f +; 9736f -Script_follownotexact: ; 0x9736f +Script_follownotexact: ; 9736f ; script command 0x77 ; parameters: ; person2 (SingleByteParam) @@ -1382,9 +1382,9 @@ Script_follownotexact: ; 0x9736f ld c, a callba FollowNotExact ret -; 0x97384 +; 97384 -Script_loademote: ; 0x97384 +Script_loademote: ; 97384 ; script command 0x74 ; parameters: ; bubble (SingleByteParam) @@ -1397,9 +1397,9 @@ Script_loademote: ; 0x97384 ld c, a callba LoadEmote ret -; 0x97396 +; 97396 -Script_showemote: ; 0x97396 +Script_showemote: ; 97396 ; script command 0x75 ; parameters: ; bubble (SingleByteParam) @@ -1419,7 +1419,7 @@ Script_showemote: ; 0x97396 ld b, BANK(ShowEmoteScript) ld de, ShowEmoteScript jp ScriptCall -; 0x973b6 +; 973b6 ShowEmoteScript: ; 973b6 loademote EMOTE_MEM @@ -1440,7 +1440,7 @@ ShowEmoteScript: ; 973b6 ; 973c7 -Script_earthquake: ; 0x973c7 +Script_earthquake: ; 973c7 ; script command 0x78 ; parameters: ; param (DecimalParam) @@ -1456,7 +1456,7 @@ Script_earthquake: ; 0x973c7 ld b, BANK(.script) ld de, .script jp ScriptCall -; 0x973e6 +; 973e6 .script: ; 973e6 applymovement PLAYER, wd002 @@ -1471,7 +1471,7 @@ EarthquakeMovementEnd ; 973f0 -Script_loadpikachudata: ; 0x973f0 +Script_loadpikachudata: ; 973f0 ; script command 0x5a ld a, PIKACHU @@ -1479,17 +1479,17 @@ Script_loadpikachudata: ; 0x973f0 ld a, 5 ld [CurPartyLevel], a ret -; 0x973fb +; 973fb -Script_battlecheck: ; 0x973fb +Script_battlecheck: ; 973fb ; script command 0x5b xor a ld [wd459], a ret -; 0x97400 +; 97400 -Script_loadtrainerdata: ; 0x97400 +Script_loadtrainerdata: ; 97400 ; script command 0x5c ld a, (1 << 7) | 1 @@ -1499,9 +1499,9 @@ Script_loadtrainerdata: ; 0x97400 ld a, [FacingDirection] ld [OtherTrainerID], a ret -; 0x97412 +; 97412 -Script_loadpokedata: ; 0x97412 +Script_loadpokedata: ; 97412 ; script command 0x5d ; parameters: ; pokemon (PokemonParam) @@ -1514,9 +1514,9 @@ Script_loadpokedata: ; 0x97412 call GetScriptByte ld [CurPartyLevel], a ret -; 0x97424 +; 97424 -Script_loadtrainer: ; 0x97424 +Script_loadtrainer: ; 97424 ; script command 0x5e ; parameters: ; trainer_group (TrainerGroupParam) @@ -1529,9 +1529,9 @@ Script_loadtrainer: ; 0x97424 call GetScriptByte ld [OtherTrainerID], a ret -; 0x97436 +; 97436 -Script_startbattle: ; 0x97436 +Script_startbattle: ; 97436 ; script command 0x5f call BufferScreen @@ -1540,9 +1540,9 @@ Script_startbattle: ; 0x97436 and $3f ld [ScriptVar], a ret -; 0x97447 +; 97447 -Script_catchtutorial: ; 0x97447 +Script_catchtutorial: ; 97447 ; script command 0x61 ; parameters: ; byte (SingleByteParam) @@ -1552,9 +1552,9 @@ Script_catchtutorial: ; 0x97447 call BufferScreen callba CatchTutorial jp Script_reloadmap -; 0x97459 +; 97459 -Script_returnafterbattle: ; 0x97459 +Script_returnafterbattle: ; 97459 ; script command 0x60 ld hl, wd459 @@ -1583,9 +1583,9 @@ Script_returnafterbattle: ; 0x97459 callba LoadScriptBDE .done jp Script_reloadmap -; 0x97491 +; 97491 -Script_reloadmap: ; 0x97491 +Script_reloadmap: ; 97491 ; script command 0x7b xor a @@ -1596,9 +1596,9 @@ Script_reloadmap: ; 0x97491 call LoadMapStatus call StopScript ret -; 0x974a2 +; 974a2 -Script_2call: ; 0x974a2 +Script_scall: ; 974a2 ; script command 0x0 ; parameters: ; pointer (ScriptPointerLabelParam) @@ -1610,9 +1610,9 @@ Script_2call: ; 0x974a2 call GetScriptByte ld d, a jr ScriptCall -; 0x974b0 +; 974b0 -Script_3call: ; 0x974b0 +Script_farscall: ; 974b0 ; script command 0x1 ; parameters: ; pointer (ScriptPointerLabelBeforeBank) @@ -1624,9 +1624,9 @@ Script_3call: ; 0x974b0 call GetScriptByte ld d, a jr ScriptCall -; 0x974be +; 974be -Script_2ptcall: ; 0x974be +Script_ptcall: ; 974be ; script command 0x2 ; parameters: ; pointer (PointerLabelToScriptPointer) @@ -1642,7 +1642,7 @@ Script_2ptcall: ; 0x974be ld d, [hl] ; fallthrough -ScriptCall: ; 0x974cb +ScriptCall: ; 974cb ; Bug: The script stack has a capacity of 5 scripts, yet there is ; nothing to stop you from pushing a sixth script. The high part ; of the script address can then be overwritten by modifications @@ -1672,16 +1672,16 @@ endr ld a, d ld [ScriptPos + 1], a ret -; 0x974f3 +; 974f3 -CallCallback:: ; 0x974f3 +CallCallback:: ; 974f3 ld a, [ScriptBank] or $80 ld [ScriptBank], a jp ScriptCall -; 0x974fe +; 974fe -Script_2jump: ; 0x974fe +Script_jump: ; 974fe ; script command 0x3 ; parameters: ; pointer (ScriptPointerLabelParam) @@ -1693,9 +1693,9 @@ Script_2jump: ; 0x974fe ld a, [ScriptBank] ld b, a jp ScriptJump -; 0x9750d +; 9750d -Script_3jump: ; 0x9750d +Script_farjump: ; 9750d ; script command 0x4 ; parameters: ; pointer (ScriptPointerLabelBeforeBank) @@ -1707,9 +1707,9 @@ Script_3jump: ; 0x9750d call GetScriptByte ld h, a jp ScriptJump -; 0x9751c +; 9751c -Script_2ptjump: ; 0x9751c +Script_ptjump: ; 9751c ; script command 0x5 ; parameters: ; pointer (PointerLabelToScriptPointer) @@ -1724,9 +1724,9 @@ Script_2ptjump: ; 0x9751c ld h, [hl] ld l, a jp ScriptJump -; 0x9752c +; 9752c -Script_iffalse: ; 0x9752c +Script_iffalse: ; 9752c ; script command 0x8 ; parameters: ; pointer (ScriptPointerLabelParam) @@ -1734,21 +1734,21 @@ Script_iffalse: ; 0x9752c ld a, [ScriptVar] and a jp nz, SkipTwoScriptBytes - jp Script_2jump -; 0x97536 + jp Script_jump +; 97536 -Script_iftrue: ; 0x97536 +Script_iftrue: ; 97536 ; script command 0x9 ; parameters: ; pointer (ScriptPointerLabelParam) ld a, [ScriptVar] and a - jp nz, Script_2jump + jp nz, Script_jump jp SkipTwoScriptBytes -; 0x97540 +; 97540 -Script_if_equal: ; 0x97540 +Script_if_equal: ; 97540 ; script command 0x6 ; parameters: ; byte (SingleByteParam) @@ -1757,11 +1757,11 @@ Script_if_equal: ; 0x97540 call GetScriptByte ld hl, ScriptVar cp [hl] - jr z, Script_2jump + jr z, Script_jump jr SkipTwoScriptBytes -; 0x9754b +; 9754b -Script_if_not_equal: ; 0x9754b +Script_if_not_equal: ; 9754b ; script command 0x7 ; parameters: ; byte (SingleByteParam) @@ -1770,11 +1770,11 @@ Script_if_not_equal: ; 0x9754b call GetScriptByte ld hl, ScriptVar cp [hl] - jr nz, Script_2jump + jr nz, Script_jump jr SkipTwoScriptBytes -; 0x97556 +; 97556 -Script_if_greater_than: ; 0x97556 +Script_if_greater_than: ; 97556 ; script command 0xa ; parameters: ; byte (SingleByteParam) @@ -1784,11 +1784,11 @@ Script_if_greater_than: ; 0x97556 ld b, a call GetScriptByte cp b - jr c, Script_2jump + jr c, Script_jump jr SkipTwoScriptBytes -; 0x97562 +; 97562 -Script_if_less_than: ; 0x97562 +Script_if_less_than: ; 97562 ; script command 0xb ; parameters: ; byte (SingleByteParam) @@ -1798,20 +1798,20 @@ Script_if_less_than: ; 0x97562 ld b, a ld a, [ScriptVar] cp b - jr c, Script_2jump + jr c, Script_jump jr SkipTwoScriptBytes -; 0x9756e +; 9756e -Script_jumpstd: ; 0x9756e +Script_jumpstd: ; 9756e ; script command 0xc ; parameters: ; predefined_script (MultiByteParam) call StdScript jr ScriptJump -; 0x97573 +; 97573 -Script_callstd: ; 0x97573 +Script_callstd: ; 97573 ; script command 0xd ; parameters: ; predefined_script (MultiByteParam) @@ -1820,9 +1820,9 @@ Script_callstd: ; 0x97573 ld d, h ld e, l jp ScriptCall -; 0x9757b +; 9757b -StdScript: ; 0x9757b +StdScript: ; 9757b call GetScriptByte ld e, a call GetScriptByte @@ -1838,15 +1838,15 @@ endr ld a, BANK(StdScripts) call GetFarHalfword ret -; 0x97596 +; 97596 -SkipTwoScriptBytes: ; 0x97596 +SkipTwoScriptBytes: ; 97596 call GetScriptByte call GetScriptByte ret -; 0x9759d +; 9759d -ScriptJump: ; 0x9759d +ScriptJump: ; 9759d ld a, b ld [ScriptBank], a ld a, l @@ -1854,9 +1854,9 @@ ScriptJump: ; 0x9759d ld a, h ld [ScriptPos + 1], a ret -; 0x975aa +; 975aa -Script_priorityjump: ; 0x975aa +Script_priorityjump: ; 975aa ; script command 0x8d ; parameters: ; pointer (ScriptPointerLabelParam) @@ -1870,22 +1870,23 @@ Script_priorityjump: ; 0x975aa ld hl, ScriptFlags set 3, [hl] ret -; 0x975c2 +; 975c2 -Script_checktriggers: ; 0x975c2 +Script_checktriggers: ; 975c2 ; script command 0x13 call CheckTriggers - jr z, .asm_975cb + jr z, .no_triggers ld [ScriptVar], a ret -.asm_975cb + +.no_triggers ld a, $ff ld [ScriptVar], a ret -; 0x975d1 +; 975d1 -Script_checkmaptriggers: ; 0x975d1 +Script_checkmaptriggers: ; 975d1 ; script command 0x11 ; parameters: ; map_group (SingleByteParam) @@ -1898,17 +1899,18 @@ Script_checkmaptriggers: ; 0x975d1 call GetMapTrigger ld a, d or e - jr z, .asm_975e5 + jr z, .no_triggers ld a, [de] ld [ScriptVar], a ret -.asm_975e5 + +.no_triggers ld a, $ff ld [ScriptVar], a ret -; 0x975eb +; 975eb -Script_dotrigger: ; 0x975eb +Script_dotrigger: ; 975eb ; script command 0x14 ; parameters: ; trigger_id (SingleByteParam) @@ -1917,10 +1919,10 @@ Script_dotrigger: ; 0x975eb ld b, a ld a, [MapNumber] ld c, a - jr Unknown_975fd -; 0x975f5 + jr DoTrigger +; 975f5 -Script_domaptrigger: ; 0x975f5 +Script_domaptrigger: ; 975f5 ; script command 0x12 ; parameters: ; map_group (MapGroupParam) @@ -1931,20 +1933,18 @@ Script_domaptrigger: ; 0x975f5 ld b, a call GetScriptByte ld c, a - ; fallthrough - -Unknown_975fd: ; 0x975fd +DoTrigger: ; 975fd call GetMapTrigger ld a, d or e - jr z, .asm_97608 + jr z, .no_trigger call GetScriptByte ld [de], a -.asm_97608 +.no_trigger ret -; 0x97609 +; 97609 -Script_copybytetovar: ; 0x97609 +Script_copybytetovar: ; 97609 ; script command 0x19 ; parameters: ; address (RAMAddressParam) @@ -1956,9 +1956,9 @@ Script_copybytetovar: ; 0x97609 ld a, [hl] ld [ScriptVar], a ret -; 0x97616 +; 97616 -Script_copyvartobyte: ; 0x97616 +Script_copyvartobyte: ; 97616 ; script command 0x1a ; parameters: ; address (RAMAddressParam) @@ -1970,9 +1970,9 @@ Script_copyvartobyte: ; 0x97616 ld a, [ScriptVar] ld [hl], a ret -; 0x97623 +; 97623 -Script_loadvar: ; 0x97623 +Script_loadvar: ; 97623 ; script command 0x1b ; parameters: ; address (RAMAddressParam) @@ -1985,9 +1985,9 @@ Script_loadvar: ; 0x97623 call GetScriptByte ld [hl], a ret -; 0x97630 +; 97630 -Script_writebyte: ; 0x97630 +Script_writebyte: ; 97630 ; script command 0x15 ; parameters: ; value (SingleByteParam) @@ -1995,9 +1995,9 @@ Script_writebyte: ; 0x97630 call GetScriptByte ld [ScriptVar], a ret -; 0x97637 +; 97637 -Script_addvar: ; 0x97637 +Script_addvar: ; 97637 ; script command 0x16 ; parameters: ; value (SingleByteParam) @@ -2007,9 +2007,9 @@ Script_addvar: ; 0x97637 add [hl] ld [hl], a ret -; 0x97640 +; 97640 -Script_random: ; 0x97640 +Script_random: ; 97640 ; script command 0x17 ; parameters: ; input (SingleByteParam) @@ -2050,9 +2050,9 @@ Script_random: ; 0x97640 call SimpleDivide ld [ScriptVar], a ret -; 0x97673 +; 97673 -.Divide256byC: ; 0x97673 +.Divide256byC: ; 97673 xor a ld b, a sub c @@ -2063,9 +2063,9 @@ Script_random: ; 0x97640 dec b add c ret -; 0x9767d +; 9767d -Script_checkcode: ; 0x9767d +Script_checkcode: ; 9767d ; script command 0x1c ; parameters: ; variable_id (SingleByteParam) @@ -2075,9 +2075,9 @@ Script_checkcode: ; 0x9767d ld a, [de] ld [ScriptVar], a ret -; 0x97688 +; 97688 -Script_writevarcode: ; 0x97688 +Script_writevarcode: ; 97688 ; script command 0x1d ; parameters: ; variable_id (SingleByteParam) @@ -2087,9 +2087,9 @@ Script_writevarcode: ; 0x97688 ld a, [ScriptVar] ld [de], a ret -; 0x97693 +; 97693 -Script_writecode: ; 0x97693 +Script_writecode: ; 97693 ; script command 0x1e ; parameters: ; variable_id (SingleByteParam) @@ -2100,27 +2100,27 @@ Script_writecode: ; 0x97693 call GetScriptByte ld [de], a ret -; 0x9769e +; 9769e -GetVarAction: ; 0x9769e +GetVarAction: ; 9769e ld c, a callba _GetVarAction ret -; 0x976a6 +; 976a6 -Script_checkver: ; 0x976a6 +Script_checkver: ; 976a6 ; script command 0x18 ld a, [Version] ld [ScriptVar], a ret -; 0x976ad +; 976ad Version: ; 976ad db VERSION ; 976ae -Script_pokenamemem: ; 0x976ae +Script_pokenamemem: ; 976ae ; script command 0x40 ; parameters: ; pokemon (PokemonParam); leave $0 to draw from script var @@ -2135,7 +2135,7 @@ Script_pokenamemem: ; 0x976ae call GetPokemonName ld de, StringBuffer1 -ConvertMemToText: ; 0x976c0 +ConvertMemToText: ; 976c0 call GetScriptByte cp 3 jr c, .ok @@ -2148,9 +2148,9 @@ CopyConvertedText: ; 976c8 call AddNTimes call CopyName2 ret -; 0x976d5 +; 976d5 -Script_itemtotext: ; 0x976d5 +Script_itemtotext: ; 976d5 ; script command 0x41 ; parameters: ; item (ItemLabelByte) @@ -2165,9 +2165,9 @@ Script_itemtotext: ; 0x976d5 call GetItemName ld de, StringBuffer1 jr ConvertMemToText -; 0x976e9 +; 976e9 -Script_mapnametotext: ; 0x976e9 +Script_mapnametotext: ; 976e9 ; script command 0x42 ; parameters: ; memory (SingleByteParam) @@ -2178,14 +2178,14 @@ Script_mapnametotext: ; 0x976e9 ld c, a call GetWorldMapLocation -ConvertLandmarkToText: ; 0x976f4 +ConvertLandmarkToText: ; 976f4 ld e, a callba GetLandmarkName ld de, StringBuffer1 jp ConvertMemToText -; 0x97701 +; 97701 -Script_displaylocation: ; 0x97701 +Script_displaylocation: ; 97701 ; script command 0xa5 ; parameters: ; id (SingleByteParam) @@ -2193,9 +2193,9 @@ Script_displaylocation: ; 0x97701 call GetScriptByte jr ConvertLandmarkToText -; 0x97706 +; 97706 -Script_trainertotext: ; 0x97706 +Script_trainertotext: ; 97706 ; script command 0x43 ; parameters: ; trainer_id (TrainerGroupParam) @@ -2208,9 +2208,9 @@ Script_trainertotext: ; 0x97706 ld b, a callba GetTrainerName jr ConvertMemToText -; 0x97716 +; 97716 -Script_name: ; 0x97716 +Script_name: ; 97716 ; script command 0xa7 ; parameters: ; type (SingleByteParam) @@ -2220,15 +2220,15 @@ Script_name: ; 0x97716 call GetScriptByte ld [wNamedObjectTypeBuffer], a -ContinueToGetName: ; 0x9771c +ContinueToGetName: ; 9771c call GetScriptByte ld [CurSpecies], a call GetName ld de, StringBuffer1 jp ConvertMemToText -; 0x9772b +; 9772b -Script_trainerclassname: ; 0x9772b +Script_trainerclassname: ; 9772b ; script command 0xa6 ; parameters: ; id (SingleByteParam) @@ -2237,9 +2237,9 @@ Script_trainerclassname: ; 0x9772b ld a, TRAINER_NAME ld [wNamedObjectTypeBuffer], a jr ContinueToGetName -; 0x97732 +; 97732 -Script_readmoney: ; 0x97732 +Script_readmoney: ; 97732 ; script command 0x3d ; parameters: ; account (SingleByteParam) @@ -2252,9 +2252,9 @@ Script_readmoney: ; 0x97732 call PrintNum ld de, StringBuffer1 jp ConvertMemToText -; 0x97747 +; 97747 -Script_readcoins: ; 0x97747 +Script_readcoins: ; 97747 ; script command 0x3e ; parameters: ; memory (SingleByteParam) @@ -2266,9 +2266,9 @@ Script_readcoins: ; 0x97747 call PrintNum ld de, StringBuffer1 jp ConvertMemToText -; 0x9775c +; 9775c -Script_RAM2MEM: ; 0x9775c +Script_RAM2MEM: ; 9775c ; script command 0x3f ; parameters: ; memory (SingleByteParam) @@ -2280,17 +2280,17 @@ Script_RAM2MEM: ; 0x9775c call PrintNum ld de, StringBuffer1 jp ConvertMemToText -; 0x97771 +; 97771 -ResetStringBuffer1: ; 0x97771 +ResetStringBuffer1: ; 97771 ld hl, StringBuffer1 ld bc, NAME_LENGTH ld a, "@" call ByteFill ret -; 0x9777d +; 9777d -Script_stringtotext: ; 0x9777d +Script_stringtotext: ; 9777d ; script command 0x44 ; parameters: ; text_pointer (EncodedTextLabelParam) @@ -2305,9 +2305,9 @@ Script_stringtotext: ; 0x9777d rst FarCall ld de, StringBuffer2 jp ConvertMemToText -; 0x97792 +; 97792 -Script_givepokeitem: ; 0x97792 +Script_givepokeitem: ; 97792 ; script command 0x2f ; parameters: ; pointer (PointerParamToItemAndLetter) @@ -2328,9 +2328,9 @@ Script_givepokeitem: ; 0x97792 pop bc callba GivePokeItem ret -; 0x977b7 +; 977b7 -Script_checkpokeitem: ; 0x977b7 +Script_checkpokeitem: ; 977b7 ; script command 0x30 ; parameters: ; pointer (PointerParamToItemAndLetter) @@ -2343,9 +2343,9 @@ Script_checkpokeitem: ; 0x977b7 ld b, a callba Function44654 ret -; 0x977ca +; 977ca -Script_giveitem: ; 0x977ca +Script_giveitem: ; 977ca ; script command 0x1f ; parameters: ; item (ItemLabelByte) @@ -2369,9 +2369,9 @@ Script_giveitem: ; 0x977ca xor a ld [ScriptVar], a ret -; 0x977f0 +; 977f0 -Script_takeitem: ; 0x977f0 +Script_takeitem: ; 977f0 ; script command 0x20 ; parameters: ; item (ItemLabelByte) @@ -2391,9 +2391,9 @@ Script_takeitem: ; 0x977f0 ld a, $1 ld [ScriptVar], a ret -; 0x97812 +; 97812 -Script_checkitem: ; 0x97812 +Script_checkitem: ; 97812 ; script command 0x21 ; parameters: ; item (ItemLabelByte) @@ -2408,9 +2408,9 @@ Script_checkitem: ; 0x97812 ld a, 1 ld [ScriptVar], a ret -; 0x97829 +; 97829 -Script_givemoney: ; 0x97829 +Script_givemoney: ; 97829 ; script command 0x22 ; parameters: ; account (SingleByteParam) @@ -2420,9 +2420,9 @@ Script_givemoney: ; 0x97829 call LoadMoneyAmountToMem callba GiveMoney ret -; 0x97836 +; 97836 -Script_takemoney: ; 0x97836 +Script_takemoney: ; 97836 ; script command 0x23 ; parameters: ; account (SingleByteParam) @@ -2432,9 +2432,9 @@ Script_takemoney: ; 0x97836 call LoadMoneyAmountToMem callba TakeMoney ret -; 0x97843 +; 97843 -Script_checkmoney: ; 0x97843 +Script_checkmoney: ; 97843 ; script command 0x24 ; parameters: ; account (SingleByteParam) @@ -2443,9 +2443,9 @@ Script_checkmoney: ; 0x97843 call GetMoneyAccount call LoadMoneyAmountToMem callba CompareMoney -; 0x9784f +; 9784f -CompareMoneyAction: ; 0x9784f +CompareMoneyAction: ; 9784f jr c, .two jr z, .one ld a, 0 @@ -2458,18 +2458,18 @@ CompareMoneyAction: ; 0x9784f .done ld [ScriptVar], a ret -; 0x97861 +; 97861 -GetMoneyAccount: ; 0x97861 +GetMoneyAccount: ; 97861 call GetScriptByte and a ld de, Money ret z ld de, wMomsMoney ret -; 0x9786d +; 9786d -LoadMoneyAmountToMem: ; 0x9786d +LoadMoneyAmountToMem: ; 9786d ld bc, hMoneyTemp push bc call GetScriptByte @@ -2482,9 +2482,9 @@ LoadMoneyAmountToMem: ; 0x9786d ld [bc], a pop bc ret -; 0x97881 +; 97881 -Script_givecoins: ; 0x97881 +Script_givecoins: ; 97881 ; script command 0x25 ; parameters: ; coins (CoinByteParam) @@ -2492,9 +2492,9 @@ Script_givecoins: ; 0x97881 call LoadCoinAmountToMem callba GiveCoins ret -; 0x9788b +; 9788b -Script_takecoins: ; 0x9788b +Script_takecoins: ; 9788b ; script command 0x26 ; parameters: ; coins (CoinByteParam) @@ -2502,9 +2502,9 @@ Script_takecoins: ; 0x9788b call LoadCoinAmountToMem callba TakeCoins ret -; 0x97895 +; 97895 -Script_checkcoins: ; 0x97895 +Script_checkcoins: ; 97895 ; script command 0x27 ; parameters: ; coins (CoinByteParam) @@ -2521,9 +2521,9 @@ LoadCoinAmountToMem: ; 978a0 ld [hMoneyTemp], a ld bc, hMoneyTemp ret -; 0x978ae +; 978ae -Script_checktime: ; 0x978ae +Script_checktime: ; 978ae ; script command 0x2b ; parameters: ; time (SingleByteParam) @@ -2537,9 +2537,9 @@ Script_checktime: ; 0x978ae ld a, $1 ld [ScriptVar], a ret -; 0x978c3 +; 978c3 -Script_checkpoke: ; 0x978c3 +Script_checkpoke: ; 978c3 ; script command 0x2c ; parameters: ; pkmn (PokemonParam) @@ -2554,9 +2554,9 @@ Script_checkpoke: ; 0x978c3 ld a, 1 ld [ScriptVar], a ret -; 0x978da +; 978da -Script_addcellnum: ; 0x978da +Script_addcellnum: ; 978da ; script command 0x28 ; parameters: ; person (SingleByteParam) @@ -2570,9 +2570,9 @@ Script_addcellnum: ; 0x978da ld a, $1 ld [ScriptVar], a ret -; 0x978ef +; 978ef -Script_delcellnum: ; 0x978ef +Script_delcellnum: ; 978ef ; script command 0x29 ; parameters: ; person (SingleByteParam) @@ -2586,9 +2586,9 @@ Script_delcellnum: ; 0x978ef ld a, $1 ld [ScriptVar], a ret -; 0x97904 +; 97904 -Script_checkcellnum: ; 0x97904 +Script_checkcellnum: ; 97904 ; script command 0x2a ; parameters: ; person (SingleByteParam) @@ -2603,9 +2603,9 @@ Script_checkcellnum: ; 0x97904 ld a, $1 ld [ScriptVar], a ret -; 0x97919 +; 97919 -Script_specialphonecall: ; 0x97919 +Script_specialphonecall: ; 97919 ; script command 0x9c ; parameters: ; call_id (MultiByteParam) @@ -2615,9 +2615,9 @@ Script_specialphonecall: ; 0x97919 call GetScriptByte ld [wSpecialPhoneCallID + 1], a ret -; 0x97926 +; 97926 -Script_checkphonecall: ; 0x97926 +Script_checkphonecall: ; 97926 ; script command 0x9d ; returns false if no special phone call is stored @@ -2628,9 +2628,9 @@ Script_checkphonecall: ; 0x97926 .ok ld [ScriptVar], a ret -; 0x97932 +; 97932 -Script_givepoke: ; 0x97932 +Script_givepoke: ; 97932 ; script command 0x2d ; parameters: ; pokemon (PokemonParam) @@ -2663,9 +2663,9 @@ Script_givepoke: ; 0x97932 ld a, b ld [ScriptVar], a ret -; 0x97968 +; 97968 -Script_giveegg: ; 0x97968 +Script_giveegg: ; 97968 ; script command 0x2e ; parameters: ; pkmn (PokemonParam) @@ -2684,9 +2684,9 @@ Script_giveegg: ; 0x97968 ld a, 2 ld [ScriptVar], a ret -; 0x97988 +; 97988 -Script_setevent: ; 0x97988 +Script_setevent: ; 97988 ; script command 0x33 ; parameters: ; bit_number (MultiByteParam) @@ -2698,9 +2698,9 @@ Script_setevent: ; 0x97988 ld b, SET_FLAG call EventFlagAction ret -; 0x97996 +; 97996 -Script_clearevent: ; 0x97996 +Script_clearevent: ; 97996 ; script command 0x32 ; parameters: ; bit_number (MultiByteParam) @@ -2712,9 +2712,9 @@ Script_clearevent: ; 0x97996 ld b, RESET_FLAG call EventFlagAction ret -; 0x979a4 +; 979a4 -Script_checkevent: ; 0x979a4 +Script_checkevent: ; 979a4 ; script command 0x31 ; parameters: ; bit_number (MultiByteParam) @@ -2732,9 +2732,9 @@ Script_checkevent: ; 0x979a4 .false ld [ScriptVar], a ret -; 0x979bb +; 979bb -Script_setflag: ; 0x979bb +Script_setflag: ; 979bb ; script command 0x36 ; parameters: ; bit_number (MultiByteParam) @@ -2746,9 +2746,9 @@ Script_setflag: ; 0x979bb ld b, 1 ; set call _EngineFlagAction ret -; 0x979c9 +; 979c9 -Script_clearflag: ; 0x979c9 +Script_clearflag: ; 979c9 ; script command 0x35 ; parameters: ; bit_number (MultiByteParam) @@ -2760,9 +2760,9 @@ Script_clearflag: ; 0x979c9 ld b, 0 ; clear call _EngineFlagAction ret -; 0x979d7 +; 979d7 -Script_checkflag: ; 0x979d7 +Script_checkflag: ; 979d7 ; script command 0x34 ; parameters: ; bit_number (MultiByteParam) @@ -2780,30 +2780,30 @@ Script_checkflag: ; 0x979d7 .false ld [ScriptVar], a ret -; 0x979ee +; 979ee -_EngineFlagAction: ; 0x979ee +_EngineFlagAction: ; 979ee callba EngineFlagAction ret -; 0x979f5 +; 979f5 -Script_wildoff: ; 0x979f5 +Script_wildoff: ; 979f5 ; script command 0x38 ld hl, StatusFlags set 5, [hl] ret -; 0x979fb +; 979fb -Script_wildon: ; 0x979fb +Script_wildon: ; 979fb ; script command 0x37 ld hl, StatusFlags res 5, [hl] ret -; 0x97a01 +; 97a01 -Script_xycompare: ; 0x97a01 +Script_xycompare: ; 97a01 ; script command 0x39 ; parameters: ; pointer (MultiByteParam) @@ -2813,9 +2813,9 @@ Script_xycompare: ; 0x97a01 call GetScriptByte ld [wd454], a ret -; 0x97a0e +; 97a0e -Script_warpfacing: ; 0x97a0e +Script_warpfacing: ; 97a0e ; script command 0xa3 ; parameters: ; facing (SingleByteParam) @@ -2833,7 +2833,7 @@ Script_warpfacing: ; 0x97a0e ld [wPlayerSpriteSetupFlags], a ; fall through -Script_warp: ; 0x97a1d +Script_warp: ; 97a1d ; script command 0x3c ; parameters: ; map_group (MapGroupParam) @@ -2873,9 +2873,9 @@ Script_warp: ; 0x97a1d call LoadMapStatus call StopScript ret -; 0x97a65 +; 97a65 -Script_warpmod: ; 0x97a65 +Script_warpmod: ; 97a65 ; script command 0x3a ; parameters: ; warp_id (SingleByteParam) @@ -2889,9 +2889,9 @@ Script_warpmod: ; 0x97a65 call GetScriptByte ld [BackupMapNumber], a ret -; 0x97a78 +; 97a78 -Script_blackoutmod: ; 0x97a78 +Script_blackoutmod: ; 97a78 ; script command 0x3b ; parameters: ; map_group (MapGroupParam) @@ -2902,17 +2902,17 @@ Script_blackoutmod: ; 0x97a78 call GetScriptByte ld [wLastSpawnMapNumber], a ret -; 0x97a85 +; 97a85 -Script_reloadmapmusic: ; 0x97a85 +Script_reloadmapmusic: ; 97a85 ; script command 0x83 ld a, 1 ld [wc2c1], a ret -; 0x97a8b +; 97a8b -Script_writecmdqueue: ; 0x97a8b +Script_writecmdqueue: ; 97a8b ; script command 0x7d ; parameters: ; queue_pointer (MultiByteParam) @@ -2925,9 +2925,9 @@ Script_writecmdqueue: ; 0x97a8b ld b, a callba Function97e31 ret -; 0x97a9e +; 97a9e -Script_delcmdqueue: ; 0x97a9e +Script_delcmdqueue: ; 97a9e ; script command 0x7e ; parameters: ; byte (SingleByteParam) @@ -2941,9 +2941,9 @@ Script_delcmdqueue: ; 0x97a9e ld a, 1 ld [ScriptVar], a ret -; 0x97ab3 +; 97ab3 -Script_changemap: ; 0x97ab3 +Script_changemap: ; 97ab3 ; script command 0x79 ; parameters: ; map_data_pointer (MapDataPointerParam) @@ -2957,9 +2957,9 @@ Script_changemap: ; 0x97ab3 call ChangeMap call BufferScreen ret -; 0x97acc +; 97acc -Script_changeblock: ; 0x97acc +Script_changeblock: ; 97acc ; script command 0x7a ; parameters: ; x (SingleByteParam) @@ -2977,9 +2977,9 @@ Script_changeblock: ; 0x97acc ld [hl], a call BufferScreen ret -; 0x97ae3 +; 97ae3 -Script_reloadmappart:: ; 0x97ae3 +Script_reloadmappart:: ; 97ae3 ; script command 0x7c xor a @@ -2989,23 +2989,23 @@ Script_reloadmappart:: ; 0x97ae3 callba Function104061 call UpdateSprites ret -; 0x97af6 +; 97af6 -Script_warpcheck: ; 0x97af6 +Script_warpcheck: ; 97af6 ; script command 0x8e call WarpCheck ret nc callba EnableEvents ret -; 0x97b01 +; 97b01 Script_enableevents: ; unreferenced callba EnableEvents ret -; 0x97b08 +; 97b08 -Script_newloadmap: ; 0x97b08 +Script_newloadmap: ; 97b08 ; script command 0x8a ; parameters: ; which_method (SingleByteParam) @@ -3016,23 +3016,23 @@ Script_newloadmap: ; 0x97b08 call LoadMapStatus call StopScript ret -; 0x97b16 +; 97b16 -Script_reloadandreturn: ; 0x97b16 +Script_reloadandreturn: ; 97b16 ; script command 0x92 call Script_newloadmap jp Script_end -; 0x97b1c +; 97b1c -Script_loadfont: ; 0x97b1c +Script_loadfont: ; 97b1c ; script command 0x47 call LoadFont ret -; 0x97b20 +; 97b20 -Script_refreshscreen: ; 0x97b20 +Script_refreshscreen: ; 97b20 ; script command 0x48 ; parameters: ; dummy (SingleByteParam) @@ -3040,9 +3040,9 @@ Script_refreshscreen: ; 0x97b20 call ResetWindow call GetScriptByte ret -; 0x97b27 +; 97b27 -Script_loadbytec1ce: ; 0x97b27 +Script_loadbytec2cf: ; 97b27 ; script command 0x4a ; parameters: ; byte (SingleByteParam) @@ -3050,23 +3050,23 @@ Script_loadbytec1ce: ; 0x97b27 call GetScriptByte ld [wc2cf], a ret -; 0x97b2e +; 97b2e LoadMoveSpritesScript: ; 97b2e loadmovesprites ; 97b2f -Script_loadmovesprites: ; 0x97b2f +Script_loadmovesprites: ; 97b2f ; script command 0x49 call Function2e20 call LoadMoveSprites ret -; 0x97b36 +; 97b36 -Script_passtoengine: ; 0x97b36 +Script_passtoengine: ; 97b36 ; script command 0x89 ; parameters: ; data_pointer (PointerLabelBeforeBank) @@ -3080,9 +3080,9 @@ Script_passtoengine: ; 0x97b36 pop af call StartAutoInput ret -; 0x97b47 +; 97b47 -Script_pause: ; 0x97b47 +Script_pause: ; 97b47 ; script command 0x8b ; parameters: ; length (DecimalParam) @@ -3098,9 +3098,9 @@ Script_pause: ; 0x97b47 dec [hl] jr nz, .loop ret -; 0x97b5c +; 97b5c -Script_deactivatefacing: ; 0x97b5c +Script_deactivatefacing: ; 97b5c ; script command 0x8c ; parameters: ; time (SingleByteParam) @@ -3114,18 +3114,18 @@ Script_deactivatefacing: ; 0x97b5c ld [ScriptMode], a call StopScript ret -; 0x97b6e +; 97b6e -Script_ptpriorityjump: ; 0x97b6e +Script_ptpriorityjump: ; 97b6e ; script command 0x8f ; parameters: ; pointer (ScriptPointerLabelParam) call StopScript - jp Script_2jump -; 0x97b74 + jp Script_jump +; 97b74 -Script_end: ; 0x97b74 +Script_end: ; 97b74 ; script command 0x91 call ExitScriptSubroutine @@ -3141,9 +3141,9 @@ Script_end: ; 0x97b74 res 0, [hl] call StopScript ret -; 0x97b8c +; 97b8c -Script_return: ; 0x97b8c +Script_return: ; 97b8c ; script command 0x90 call ExitScriptSubroutine @@ -3153,9 +3153,9 @@ Script_return: ; 0x97b8c res 0, [hl] call StopScript ret -; 0x97b9a +; 97b9a -ExitScriptSubroutine: ; 0x97b9a +ExitScriptSubroutine: ; 97b9a ; Return carry if there's no parent to return to. ld hl, wScriptStackSize @@ -3184,9 +3184,9 @@ endr .done scf ret -; 0x97bc0 +; 97bc0 -Script_resetfuncs: ; 0x97bc0 +Script_resetfuncs: ; 97bc0 ; script command 0x93 xor a @@ -3198,9 +3198,9 @@ Script_resetfuncs: ; 0x97bc0 res 0, [hl] call StopScript ret -; 0x97bd5 +; 97bd5 -Script_halloffame: ; 0x97bd5 +Script_halloffame: ; 97bd5 ; script command 0xa1 ld hl, GameTimerPause @@ -3211,9 +3211,9 @@ Script_halloffame: ; 0x97bd5 ld hl, GameTimerPause set 0, [hl] jr DisplayCredits -; 0x97bf3 +; 97bf3 -Script_credits: ; 0x97bf3 +Script_credits: ; 97bf3 ; script command 0xa2 callba RedCredits @@ -3225,9 +3225,9 @@ DisplayCredits: call LoadMapStatus call StopScript ret -; 0x97c051 +; 97c051 -Script_wait: ; 0x97c05 +Script_wait: ; 97c05 ; script command 0xa8 ; parameters: ; unknown (SingleByteParam) @@ -3243,16 +3243,16 @@ Script_wait: ; 0x97c05 jr nz, .loop pop bc ret -; 0x97c15 +; 97c15 -Script_check_save: ; 0x97c15 +Script_check_save: ; 97c15 ; script command 0xa9 callba CheckSave ld a, c ld [ScriptVar], a ret -; 0x97c20 +; 97c20 ; 97c20 unreferenced -- cgit v1.2.3 From 435b0cf686e55bbe60acbce1e6154b0c2450bbac Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 16 Nov 2015 16:01:45 -0500 Subject: Options menu, some mobile fns --- engine/color.asm | 13 +- engine/flypoints.asm | 916 ---------------------------------------- engine/map_objects.asm | 2 +- engine/options_menu.asm | 565 +++++++++++++++++++++++++ engine/radio2.asm | 260 ++++++++++++ engine/specials.asm | 4 +- engine/town_map.asm | 1068 +++++++++++++++++++++++++++++++++++++++++++++++ engine/wildmons.asm | 1057 ++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 2960 insertions(+), 925 deletions(-) delete mode 100755 engine/flypoints.asm create mode 100755 engine/options_menu.asm create mode 100755 engine/town_map.asm create mode 100755 engine/wildmons.asm (limited to 'engine') diff --git a/engine/color.asm b/engine/color.asm index d24fdf2df..c44b296d4 100644 --- a/engine/color.asm +++ b/engine/color.asm @@ -1,4 +1,4 @@ - +PALPACKET_LENGTH EQU $10 INCLUDE "predef/sgb.asm" SHINY_ATK_BIT EQU 5 @@ -89,7 +89,7 @@ Function8aa4: ; 8aa4 push bc ld hl, PalPacket_9ce6 ld de, wcda9 - ld bc, PalPacket_9cf6 - PalPacket_9ce6 + ld bc, PALPACKET_LENGTH call CopyBytes pop bc pop de @@ -232,7 +232,7 @@ Function8b81: ; 8b81 push af ld hl, PalPacket_9ce6 ld de, wcda9 - ld bc, $0010 + ld bc, PALPACKET_LENGTH call CopyBytes pop af call Function9775 @@ -437,7 +437,7 @@ endr push hl ld hl, PalPacket_9ce6 ld de, wcda9 - ld bc, $0010 + ld bc, PALPACKET_LENGTH call CopyBytes pop hl rept 2 @@ -792,7 +792,7 @@ Function974b: ; 974b and a jp nz, Function97f9 ld a, [wPlayerSpriteSetupFlags] - bit 2, a + bit 2, a ; transformed to male jr nz, .male ld a, [PlayerGender] and a @@ -1212,7 +1212,7 @@ Function99d8: ; 99d8 ld a, $e4 ld [rBGP], a ld de, VTiles1 - ld bc, $0140 + ld bc, 20 tiles call CopyData ld b, $12 .asm_99ea @@ -1367,6 +1367,7 @@ BlkPacket_9b86: ; 9a86 ; 9b96 ; 9b96 + PalPacket_9b96: db $51, $48, $00, $49, $00, $4a, $00, $4b, $00, $00, $00, $00, $00, $00, $00, $00 PalPacket_9ba6: db $51, $2b, $00, $24, $00, $20, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 PalPacket_9bb6: db $51, $41, $00, $42, $00, $43, $00, $44, $00, $00, $00, $00, $00, $00, $00, $00 diff --git a/engine/flypoints.asm b/engine/flypoints.asm deleted file mode 100755 index f56facf09..000000000 --- a/engine/flypoints.asm +++ /dev/null @@ -1,916 +0,0 @@ -_FlyMap: ; 91af3 - call ClearBGPalettes - call ClearTileMap - call ClearSprites - ld hl, hInMenu - ld a, [hl] - push af - ld [hl], $1 - xor a - ld [hBGMapMode], a - callba Function8cf53 - call Function91ff2 - ld de, GFX_922e1 - ld hl, VTiles2 tile $30 - lb bc, BANK(GFX_922e1), 6 - call Request1bpp - call FlyMap - call Function91c8f - ld b, $2 - call GetSGBLayout - call SetPalettes -.loop - call JoyTextDelay - ld hl, hJoyPressed - ld a, [hl] - and B_BUTTON - jr nz, .pressedB - ld a, [hl] - and A_BUTTON - jr nz, .pressedA - call FlyMapScroll - call GetMapCursorCoordinates - callba Function8cf69 - call DelayFrame - jr .loop - -.pressedB - ld a, -1 - jr .exit - -.pressedA - ld a, [wd002] - ld l, a - ld h, 0 - add hl, hl - ld de, Flypoints + 1 - add hl, de - ld a, [hl] - -.exit - ld [wd002], a - pop af - ld [hInMenu], a - call ClearBGPalettes - ld a, $90 - ld [hWY], a - xor a - ld [hBGMapAddress], a - ld a, VBGMap0 / $100 - ld [hBGMapAddress + 1], a - ld a, [wd002] - ld e, a - ret -; 91b73 - -FlyMapScroll: ; 91b73 - ld a, [StartFlypoint] - ld e, a - ld a, [EndFlypoint] - ld d, a - ld hl, hJoyLast - ld a, [hl] - and D_UP - jr nz, .ScrollNext - ld a, [hl] - and D_DOWN - jr nz, .ScrollPrev - ret - -.ScrollNext - ld hl, wd002 - ld a, [hl] - cp d - jr nz, .NotAtEndYet - ld a, e - dec a - ld [hl], a - -.NotAtEndYet - inc [hl] - call CheckIfVisitedFlypoint - jr z, .ScrollNext - jr .Finally - -.ScrollPrev - ld hl, wd002 - ld a, [hl] - cp e - jr nz, .NotAtStartYet - ld a, d - inc a - ld [hl], a - -.NotAtStartYet - dec [hl] - call CheckIfVisitedFlypoint - jr z, .ScrollPrev - -.Finally - call TownMapBubble - call WaitBGMap - xor a - ld [hBGMapMode], a - ret -; 91bb5 - -TownMapBubble: ; 91bb5 -; Draw the bubble containing the location text in the town map HUD - -; Top-left corner - hlcoord 1, 0 - ld a, $30 - ld [hli], a - -; Top row - ld bc, 16 - ld a, " " - call ByteFill - -; Top-right corner - ld a, $31 - ld [hl], a - hlcoord 1, 1 - - -; Middle row - ld bc, 18 - ld a, " " - call ByteFill - - -; Bottom-left corner - hlcoord 1, 2 - ld a, $32 - ld [hli], a - -; Bottom row - ld bc, 16 - ld a, " " - call ByteFill - -; Bottom-right corner - ld a, $33 - ld [hl], a - - -; Print "Where?" - hlcoord 2, 0 - ld de, .Where - call PlaceString - -; Print the name of the default flypoint - call .Name - -; Up/down arrows - hlcoord 18, 1 - ld [hl], $34 - ret - -.Where - db "Where?@" - -.Name -; We need the map location of the default flypoint - ld a, [wd002] - ld l, a - ld h, 0 - add hl, hl ; two bytes per flypoint - ld de, Flypoints - add hl, de - ld e, [hl] - - callba GetLandmarkName - - hlcoord 2, 1 - ld de, StringBuffer1 - call PlaceString - ret -; 91c17 - -GetMapCursorCoordinates: ; 91c17 - ld a, [wd002] - ld l, a - ld h, $0 - add hl, hl - ld de, Flypoints - add hl, de - ld e, [hl] - callba GetLandmarkCoords - ld a, [wd003] - ld c, a - ld a, [wd004] - ld b, a - ld hl, $4 - add hl, bc - ld [hl], e - ld hl, $5 - add hl, bc - ld [hl], d - ret -; 91c3c - -CheckIfVisitedFlypoint: ; 91c3c -; Check if the flypoint loaded in [hl] has been visited yet. - push bc - push de - push hl - ld l, [hl] - ld h, 0 - add hl, hl - ld de, Flypoints + 1 - add hl, de - ld c, [hl] - call HasVisitedSpawn - pop hl - pop de - pop bc - and a - ret -; 91c50 - -HasVisitedSpawn: ; 91c50 -; Check if spawn point c has been visited. - ld hl, VisitedSpawns - ld b, CHECK_FLAG - ld d, 0 - predef FlagPredef - ld a, c - ret -; 91c5e - -Flypoints: ; 91c5e -; landmark, spawn point - - const_def - -flypoint: MACRO -; \1\@FLY EQUS "FLY_\1" -; \1\@SPAWN EQUS "SPAWN_\1" - ; const \1\@FLY - ; db \2, \1\@SPAWN - const FLY_\1 - db \2, SPAWN_\1 -ENDM - -; Johto - flypoint NEW_BARK, NEW_BARK_TOWN - flypoint CHERRYGROVE, CHERRYGROVE_CITY - flypoint VIOLET, VIOLET_CITY - flypoint AZALEA, AZALEA_TOWN - flypoint GOLDENROD, GOLDENROD_CITY - flypoint ECRUTEAK, ECRUTEAK_CITY - flypoint OLIVINE, OLIVINE_CITY - flypoint CIANWOOD, CIANWOOD_CITY - flypoint MAHOGANY, MAHOGANY_TOWN - flypoint LAKE, LAKE_OF_RAGE - flypoint BLACKTHORN, BLACKTHORN_CITY - flypoint MT_SILVER, SILVER_CAVE - -; Kanto -KANTO_FLYPOINT EQU const_value - - flypoint PALLET, PALLET_TOWN - flypoint VIRIDIAN, VIRIDIAN_CITY - flypoint PEWTER, PEWTER_CITY - flypoint CERULEAN, CERULEAN_CITY - flypoint VERMILION, VERMILION_CITY - flypoint ROCK_TUNNEL, ROCK_TUNNEL - flypoint LAVENDER, LAVENDER_TOWN - flypoint CELADON, CELADON_CITY - flypoint SAFFRON, SAFFRON_CITY - flypoint FUCHSIA, FUCHSIA_CITY - flypoint CINNABAR, CINNABAR_ISLAND - flypoint INDIGO, INDIGO_PLATEAU - - db -1 -; 91c8f - -Function91c8f: ; 91c8f - ret -; 91c90 - -FlyMap: ; 91c90 - - ld a, [MapGroup] - ld b, a - ld a, [MapNumber] - ld c, a - call GetWorldMapLocation - -; If we're not in a valid location, i.e. Pokecenter floor 2F, -; the backup map information is used - - cp SPECIAL_MAP - jr nz, .CheckRegion - - ld a, [BackupMapGroup] - ld b, a - ld a, [BackupMapNumber] - ld c, a - call GetWorldMapLocation - -.CheckRegion -; The first 46 locations are part of Johto. The rest are in Kanto - cp KANTO_LANDMARK - jr nc, .KantoFlyMap - -.JohtoFlyMap -; Note that .NoKanto should be modified in tandem with this branch - - push af - -; Start from New Bark Town - ld a, FLY_NEW_BARK - ld [wd002], a - -; Flypoints begin at New Bark Town... - ld [StartFlypoint], a -; ..and end at Silver Cave - ld a, FLY_MT_SILVER - ld [EndFlypoint], a - -; Fill out the map - call FillJohtoMap - call .MapHud - pop af - call TownMapPlayerIcon - ret - -.KantoFlyMap - -; The event that there are no flypoints enabled in a map is not -; accounted for. As a result, if you attempt to select a flypoint -; when there are none enabled, the game will crash. Additionally, -; the flypoint selection has a default starting point that -; can be flown to even if none are enabled - -; To prevent both of these things from happening when the player -; enters Kanto, fly access is restricted until Indigo Plateau is -; visited and its flypoint enabled - - push af - ld c, SPAWN_INDIGO - call HasVisitedSpawn - and a - jr z, .NoKanto - -; Kanto's map is only loaded if we've visited Indigo Plateau - -; Flypoints begin at Pallet Town... - ld a, FLY_PALLET - ld [StartFlypoint], a -; ...and end at Indigo Plateau - ld a, FLY_INDIGO - ld [EndFlypoint], a - -; Because Indigo Plateau is the first flypoint the player -; visits, it's made the default flypoint - ld [wd002], a - -; Fill out the map - call FillKantoMap - call .MapHud - pop af - call TownMapPlayerIcon - ret - -.NoKanto -; If Indigo Plateau hasn't been visited, we use Johto's map instead - -; Start from New Bark Town - ld a, FLY_NEW_BARK - ld [wd002], a - -; Flypoints begin at New Bark Town... - ld [StartFlypoint], a -; ..and end at Silver Cave - ld a, FLY_MT_SILVER - ld [EndFlypoint], a - - call FillJohtoMap - - pop af - -.MapHud - call TownMapBubble - call TownMapPals - - ld hl, VBGMap0 ; BG Map 0 - call TownMapBGUpdate - - call TownMapMon - ld a, c - ld [wd003], a - ld a, b - ld [wd004], a - ret -; 91d11 - -Function91d11: ; 91d11 - ld a, [wd002] - push af - ld a, [wd003] - push af - ld a, e - ld [wd002], a - call ClearSprites - xor a - ld [hBGMapMode], a - ld a, $1 - ld [hInMenu], a - ld de, GFX_922d1 - ld hl, VTiles0 tile $7f - lb bc, BANK(GFX_922d1), 1 - call Request2bpp ; actually 1bpp - call Function91ed0 - ld hl, VTiles0 tile $78 - ld c, $4 - call Request2bpp - call Function91ff2 - call FillKantoMap - call Function91de9 - call TownMapPals - ld hl, VBGMap1 - call TownMapBGUpdate - call FillJohtoMap - call Function91de9 - call TownMapPals - ld hl, VBGMap0 - call TownMapBGUpdate - ld b, $2 - call GetSGBLayout - call SetPalettes - xor a - ld [hBGMapMode], a - xor a - call Function91e1e -.asm_91d6e - call JoyTextDelay - ld hl, hJoyPressed - ld a, [hl] - and A_BUTTON | B_BUTTON - jr nz, .asm_91d8f - ld a, [hJoypadDown] - and SELECT - jr nz, .asm_91d87 - call Function91d9b - call Function91dcd - jr .asm_91d8a - -.asm_91d87 - call Function91e5a - -.asm_91d8a - call DelayFrame - jr .asm_91d6e - -.asm_91d8f - call ClearSprites - pop af - ld [wd003], a - pop af - ld [wd002], a - ret -; 91d9b - -Function91d9b: ; 91d9b - ld a, [hl] - and $20 - jr nz, .asm_91da6 - ld a, [hl] - and $10 - jr nz, .asm_91db7 - ret - -.asm_91da6 - ld a, [hWY] - cp $90 - ret z - call ClearSprites - ld a, $90 - ld [hWY], a - xor a - call Function91e1e - ret - -.asm_91db7 - ld a, [StatusFlags] - bit 6, a ; hall of fame - ret z - ld a, [hWY] - and a - ret z - call ClearSprites - xor a - ld [hWY], a - ld a, $1 - call Function91e1e - ret -; 91dcd - -Function91dcd: ; 91dcd - ld a, [hVBlankCounter] - ld e, a - and $f - ret nz - ld a, e - and $10 - jr nz, .asm_91ddc - call ClearSprites - ret - -.asm_91ddc - hlcoord 0, 0 - ld de, Sprites - ld bc, $a0 - call CopyBytes - ret -; 91de9 - -Function91de9: ; 91de9 - hlcoord 0, 0 - ld bc, SCREEN_WIDTH - ld a, $7f - call ByteFill - hlcoord 0, 1 - ld a, $6 - ld [hli], a - ld bc, SCREEN_HEIGHT - ld a, $7 - call ByteFill - ld [hl], $17 - call GetPokemonName - hlcoord 2, 0 - call PlaceString - ld h, b - ld l, c - ld de, String_91e16 - call PlaceString - ret -; 91e16 - -String_91e16: - db "'S NEST@" -; 91e1e - -Function91e1e: ; 91e1e - ld [wd003], a - ld e, a - callba Function2a01f - decoord 0, 0 - ld hl, Sprites -.asm_91e2e - ld a, [de] - and a - jr z, .asm_91e4d - push de - ld e, a - push hl - callba GetLandmarkCoords - pop hl - ld a, d - sub $4 - ld [hli], a - ld a, e - sub $4 - ld [hli], a - ld a, $7f - ld [hli], a - xor a - ld [hli], a - pop de - inc de - jr .asm_91e2e - -.asm_91e4d - ld hl, Sprites - decoord 0, 0 - ld bc, $a0 - call CopyBytes - ret -; 91e5a - -Function91e5a: ; 91e5a - call Function91ea9 - ret c - - ld a, [wd002] - ld e, a - callba GetLandmarkCoords - ld c, e - ld b, d - ld de, Unknown_91e9c - ld hl, Sprites -.asm_91e70 - ld a, [de] - cp $80 - jr z, .asm_91e91 - - add b - ld [hli], a - inc de - - ld a, [de] - add c - ld [hli], a - inc de - - ld a, [de] - add $78 - ld [hli], a - inc de - - push bc - ld c, 0 - ld a, [PlayerGender] - bit 0, a - jr z, .asm_91e8c - inc c -.asm_91e8c - ld a, c - ld [hli], a - pop bc - - jr .asm_91e70 - -.asm_91e91 - ld hl, Sprites + $10 - ld bc, SpritesEnd - (Sprites + $10) - xor a - call ByteFill - ret -; 91e9c - -Unknown_91e9c: ; 91e9c - db -8, -8, 0 - db -8, 0, 1 - db 0, -8, 2 - db 0, 0, 3 - db $80 ; terminator -; 91ea9 - -Function91ea9: ; 91ea9 - ld a, [wd002] - cp FAST_SHIP - jr z, .johto - cp KANTO_LANDMARK - jr c, .johto - -.kanto - ld a, [wd003] - and a - jr z, .clear - jr .ok - -.johto - ld a, [wd003] - and a - jr nz, .clear - -.ok - and a - ret - -.clear - ld hl, Sprites - ld bc, SpritesEnd - Sprites - xor a - call ByteFill - scf - ret -; 91ed0 - -Function91ed0: ; 91ed0 - ld a, [wd002] - cp FAST_SHIP - jr z, .asm_91ede - callba GetPlayerIcon - ret - -.asm_91ede - ld de, FastShipGFX - ld b, BANK(FastShipGFX) - ret -; 91ee4 - -TownMapBGUpdate: ; 91ee4 -; Update BG Map tiles and attributes - -; BG Map address - ld a, l - ld [hBGMapAddress], a - ld a, h - ld [hBGMapAddress + 1], a - -; Only update palettes on CGB - ld a, [hCGB] - and a - jr z, .tiles - -; BG Map mode 2 (palettes) - ld a, 2 - ld [hBGMapMode], a - -; The BG Map is updated in thirds, so we wait -; 3 frames to update the whole screen's palettes. - ld c, 3 - call DelayFrames - -.tiles -; Update BG Map tiles - call WaitBGMap - -; Turn off BG Map update - xor a - ld [hBGMapMode], a - ret -; 91eff - -FillJohtoMap: ; 91eff - ld de, JohtoMap - jr FillTownMap - -FillKantoMap: ; 91f04 - ld de, KantoMap - -FillTownMap: ; 91f07 - hlcoord 0, 0 -.loop - ld a, [de] - cp $ff - ret z - ld a, [de] - ld [hli], a - inc de - jr .loop -; 91f13 - -TownMapPals: ; 91f13 -; Assign palettes based on tile ids - - hlcoord 0, 0 - decoord 0, 0, AttrMap - ld bc, 360 -.loop -; Current tile - ld a, [hli] - push hl - -; HP/borders use palette 0 - cp $60 - jr nc, .pal0 - -; The palette data is condensed to nybbles, -; least-significant first. - ld hl, TownMapPalMap - srl a - jr c, .odd - -; Even-numbered tile ids take the bottom nybble... - add l - ld l, a - ld a, h - adc 0 - ld h, a - ld a, [hl] - and %111 - jr .update - -.odd -; ...and odd ids take the top. - add l - ld l, a - ld a, h - adc 0 - ld h, a - ld a, [hl] - swap a - and %111 - jr .update - -.pal0 - xor a - -.update - pop hl - ld [de], a - inc de - dec bc - ld a, b - or c - jr nz, .loop - ret - -TownMapPalMap: - db $11, $21, $22, $00, $11, $13, $54, $54, $11, $21, $22, $00 - db $11, $10, $01, $00, $11, $21, $22, $00, $00, $00, $00, $00 - db $00, $00, $44, $04, $00, $00, $00, $00, $33, $33, $33, $33 - db $33, $33, $33, $03, $33, $33, $33, $33, $00, $00, $00, $00 -; 91f7b - -TownMapMon: ; 91f7b -; Draw the FlyMon icon at town map location in - -; Get FlyMon species - ld a, [CurPartyMon] - ld hl, PartySpecies - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - ld [wd265], a - -; Get FlyMon icon - ld e, 8 ; starting tile in VRAM - callba GetSpeciesIcon - -; Animation/palette - ld de, 0 - ld a, $0 - call _InitSpriteAnimStruct - - ld hl, 3 - add hl, bc - ld [hl], 8 - ld hl, 2 - add hl, bc - ld [hl], 0 - ret -; 91fa6 - -TownMapPlayerIcon: ; 91fa6 -; Draw the player icon at town map location in a - push af - - callba GetPlayerIcon - -; Standing icon - ld hl, VTiles0 tile $10 - ld c, 4 ; # tiles - call Request2bpp - -; Walking icon - ld hl, $c0 - add hl, de - ld d, h - ld e, l - ld hl, VTiles0 tile $14 - ld c, 4 ; # tiles - ld a, BANK(ChrisSpriteGFX) ; does nothing - call Request2bpp - -; Animation/palette - ld de, 0 - ld b, $0a ; Male - ld a, [PlayerGender] - bit 0, a - jr z, .asm_91fd3 - ld b, $1e ; Female -.asm_91fd3 - ld a, b - call _InitSpriteAnimStruct - - ld hl, $3 - add hl, bc - ld [hl], $10 - - pop af - ld e, a - push bc - callba GetLandmarkCoords - pop bc - - ld hl, 4 - add hl, bc - ld [hl], e - ld hl, 5 - add hl, bc - ld [hl], d - ret -; 0x91ff2 - -Function91ff2: ; 91ff2 - ld hl, TownMapGFX - ld de, VTiles2 - lb bc, BANK(TownMapGFX), $30 - call DecompressRequest2bpp - ret -; 91fff - - -JohtoMap: ; 91fff -INCBIN "gfx/misc/johto.bin" -; 92168 - -KantoMap: ; 92168 -INCBIN "gfx/misc/kanto.bin" -; 922d1 - - -GFX_922d1: ; 922d1 -INCBIN "gfx/unknown/0922d1.2bpp" -GFX_922e1: ; 922e1 -INCBIN "gfx/unknown/0922e1.2bpp" -GFX_92301: ; 92301 -INCBIN "gfx/unknown/092301.2bpp" diff --git a/engine/map_objects.asm b/engine/map_objects.asm index e442b7f77..ef8878565 100644 --- a/engine/map_objects.asm +++ b/engine/map_objects.asm @@ -3053,7 +3053,7 @@ Function57bc: ; 57bc ret .ok - ld a, 0 + ld a, PERSON_ACTION_00 ld [PlayerAction], a ret ; 57ca diff --git a/engine/options_menu.asm b/engine/options_menu.asm new file mode 100755 index 000000000..ed2c21f30 --- /dev/null +++ b/engine/options_menu.asm @@ -0,0 +1,565 @@ +_OptionsMenu: ; e41d0 + ld hl, hInMenu + ld a, [hl] + push af + ld [hl], $1 + call ClearBGPalettes + hlcoord 0, 0 + ld b, $10 + ld c, $12 + call TextBox + hlcoord 2, 2 + ld de, StringOptions + call PlaceString + xor a + ld [wJumptableIndex], a + ld c, $6 ; number of items on the menu minus 1 (for cancel) + +.print_text_loop ; this next will display the settings of each option when the menu is opened + push bc + xor a + ld [hJoyLast], a + call GetOptionPointer + pop bc + ld hl, wJumptableIndex + inc [hl] + dec c + jr nz, .print_text_loop + + call UpdateFrame + xor a + ld [wJumptableIndex], a + inc a + ld [hBGMapMode], a + call WaitBGMap + ld b, SCGB_08 + call GetSGBLayout + call SetPalettes + +.joypad_loop + call JoyTextDelay + ld a, [hJoyPressed] + and START | B_BUTTON + jr nz, .ExitOptions + call OptionsControl + jr c, .dpad + call GetOptionPointer + jr c, .ExitOptions + +.dpad + call Functione455c + ld c, 3 + call DelayFrames + jr .joypad_loop + +.ExitOptions + ld de, SFX_TRANSACTION + call PlaySFX + call WaitSFX + pop af + ld [hInMenu], a + ret +; e4241 + +StringOptions: ; e4241 + db "TEXT SPEED" + db " :" + db "BATTLE SCENE" + db " :" + db "BATTLE STYLE" + db " :" + db "SOUND" + db " :" + db "PRINT" + db " :" + db "MENU ACCOUNT" + db " :" + db "FRAME" + db " :TYPE" + db "CANCEL@" +; e42d6 + + +GetOptionPointer: ; e42d6 + ld a, [wJumptableIndex] ; load the cursor position to a + ld e, a ; copy it to de + ld d, 0 + ld hl, .Pointers +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] ; jump to the code of the current highlighted item +; e42e5 + +.Pointers + dw Options_TextSpeed + dw Options_BattleScene + dw Options_BattleStyle + dw Options_Sound + dw Options_Print + dw Options_MenuAccount + dw Options_Frame + dw Options_Cancel +; e42f5 + + +Options_TextSpeed: ; e42f5 + call GetTextSpeed + ld a, [hJoyPressed] + bit D_LEFT_F, a + jr nz, .LeftPressed + bit D_RIGHT_F, a + jr z, .NonePressed + ld a, c ; right pressed + cp SLOW_TEXT + jr c, .Increase + ld c, FAST_TEXT +- 1 + +.Increase + inc c + ld a, e + jr .Save + +.LeftPressed + ld a, c + and a + jr nz, .Decrease + ld c, SLOW_TEXT + 1 + +.Decrease + dec c + ld a, d + +.Save + ld b, a + ld a, [Options] + and $f0 + or b + ld [Options], a + +.NonePressed + ld b, 0 + ld hl, .Strings +rept 2 + add hl, bc +endr + ld e, [hl] + inc hl + ld d, [hl] + hlcoord 11, 3 + call PlaceString + and a + ret +; e4331 + +.Strings + dw .Fast + dw .Mid + dw .Slow + +.Fast + db "FAST@" +.Mid + db "MID @" +.Slow + db "SLOW@" +; e4346 + + +GetTextSpeed: ; e4346 + ld a, [Options] ; This converts the number of frames, to 0, 1, 2 representing speed + and 7 + cp 5 ; 5 frames of delay is slow + jr z, .slow + cp 1 ; 1 frame of delay is fast + jr z, .fast + ld c, MED_TEXT ; set it to mid if not one of the above + lb de, 1, 5 + ret + +.slow + ld c, SLOW_TEXT + lb de, 3, 1 + ret + +.fast + ld c, FAST_TEXT + lb de, 5, 3 + ret +; e4365 + + +Options_BattleScene: ; e4365 + ld hl, Options + ld a, [hJoyPressed] + bit D_LEFT_F, a + jr nz, .LeftPressed + bit D_RIGHT_F, a + jr z, .NonePressed + bit BATTLE_SCENE, [hl] + jr nz, .ToggleOn + jr .ToggleOff + +.LeftPressed + bit BATTLE_SCENE, [hl] + jr z, .ToggleOff + jr .ToggleOn + +.NonePressed + bit BATTLE_SCENE, [hl] + jr z, .ToggleOn + jr .ToggleOff + +.ToggleOn + res BATTLE_SCENE, [hl] + ld de, .On + jr .Display + +.ToggleOff + set BATTLE_SCENE, [hl] + ld de, .Off + +.Display + hlcoord 11, 5 + call PlaceString + and a + ret +; e4398 + +.On + db "ON @" +.Off + db "OFF@" +; e43a0 + + +Options_BattleStyle: ; e43a0 + ld hl, Options + ld a, [hJoyPressed] + bit D_LEFT_F, a + jr nz, .LeftPressed + bit D_RIGHT_F, a + jr z, .NonePressed + bit BATTLE_SHIFT, [hl] + jr nz, .ToggleShift + jr .ToggleSet + +.LeftPressed + bit BATTLE_SHIFT, [hl] + jr z, .ToggleSet + jr .ToggleShift + +.NonePressed + bit BATTLE_SHIFT, [hl] + jr nz, .ToggleSet + +.ToggleShift + res BATTLE_SHIFT, [hl] + ld de, .Shift + jr .Display + +.ToggleSet + set BATTLE_SHIFT, [hl] + ld de, .Set + +.Display + hlcoord 11, 7 + call PlaceString + and a + ret +; e43d1 + +.Shift + db "SHIFT@" +.Set + db "SET @" +; e43dd + + +Options_Sound: ; e43dd + ld hl, Options + ld a, [hJoyPressed] + bit D_LEFT_F, a + jr nz, .LeftPressed + bit D_RIGHT_F, a + jr z, .NonePressed + bit STEREO, [hl] + jr nz, .SetMono + jr .SetStereo + +.LeftPressed + bit STEREO, [hl] + jr z, .SetStereo + jr .SetMono + +.NonePressed + bit STEREO, [hl] + jr nz, .ToggleStereo + jr .ToggleMono + +.SetMono + res STEREO, [hl] + call RestartMapMusic + +.ToggleMono + ld de, .Mono + jr .Display + +.SetStereo + set STEREO, [hl] + call RestartMapMusic + +.ToggleStereo + ld de, .Stereo + +.Display + hlcoord 11, 9 + call PlaceString + and a + ret +; e4416 + +.Mono + db "MONO @" +.Stereo + db "STEREO@" +; e4424 + + +Options_Print: ; e4424 + call GetPrinterSetting + ld a, [hJoyPressed] + bit D_LEFT_F, a + jr nz, .LeftPressed + bit D_RIGHT_F, a + jr z, .NonePressed + ld a, c + cp 4 + jr c, .Increase + ld c, -1 + +.Increase + inc c + ld a, e + jr .Save + +.LeftPressed + ld a, c + and a + jr nz, .Decrease + ld c, 5 + +.Decrease + dec c + ld a, d + +.Save + ld b, a + ld [GBPrinter], a + +.NonePressed + ld b, $0 + ld hl, .Strings +rept 2 + add hl, bc +endr + ld e, [hl] + inc hl + ld d, [hl] + hlcoord 11, 11 + call PlaceString + and a + ret +; e445a + +.Strings + dw .Lightest + dw .Lighter + dw .Normal + dw .Darker + dw .Darkest + +.Lightest + db "LIGHTEST@" +.Lighter + db "LIGHTER @" +.Normal + db "NORMAL @" +.Darker + db "DARKER @" +.Darkest + db "DARKEST @" +; e4491 + + +GetPrinterSetting: ; e4491 + ld a, [GBPrinter] ; converts from the stored printer setting to 0,1,2,3,4 + and a + jr z, .IsLightest + cp PRINT_LIGHTER + jr z, .IsLight + cp PRINT_DARKER + jr z, .IsDark + cp PRINT_DARKEST + jr z, .IsDarkest + ld c, 2 ; normal if none of the above + lb de, PRINT_LIGHTER, PRINT_DARKER ; the 2 values next to this setting + ret + +.IsLightest + ld c, 0 + lb de, PRINT_DARKEST, PRINT_LIGHTER ; the 2 values next to this setting + ret + +.IsLight + ld c, 1 + lb de, PRINT_LIGHTEST, PRINT_NORMAL ; the 2 values next to this setting + ret + +.IsDark + ld c, 3 + lb de, PRINT_NORMAL, PRINT_DARKEST ; the 2 values next to this setting + ret + +.IsDarkest + ld c, 4 + lb de, PRINT_DARKER, PRINT_LIGHTEST ; the 2 values next to this setting + ret +; e44c1 + +Options_MenuAccount: ; e44c1 + ld hl, Options2 + ld a, [hJoyPressed] + bit D_LEFT_F, a + jr nz, .LeftPressed + bit D_RIGHT_F, a + jr z, .NonePressed + bit MENU_ACCOUNT, [hl] + jr nz, .ToggleOff + jr .ToggleOn + +.LeftPressed + bit MENU_ACCOUNT, [hl] + jr z, .ToggleOn + jr .ToggleOff + +.NonePressed + bit MENU_ACCOUNT, [hl] + jr nz, .ToggleOn + +.ToggleOff + res MENU_ACCOUNT, [hl] + ld de, .Off + jr .Display + +.ToggleOn + set MENU_ACCOUNT, [hl] + ld de, .On + +.Display + hlcoord 11, 13 + call PlaceString + and a + ret +; e44f2 + +.Off + db "OFF@" +.On + db "ON @" +; e44fa + + +Options_Frame: ; e44fa + ld hl, TextBoxFrame + ld a, [hJoyPressed] + bit D_LEFT_F, a + jr nz, .LeftPressed + bit D_RIGHT_F, a + jr nz, .RightPressed + and a + ret + +.RightPressed + ld a, [hl] + inc a + jr .Save + +.LeftPressed + ld a, [hl] + dec a + +.Save + and $7 + ld [hl], a +UpdateFrame: ; e4512 + ld a, [TextBoxFrame] + hlcoord 16, 15 ; where on the screen the number is drawn + add "1" + ld [hl], a + call LoadFontsExtra + and a + ret +; e4520 + +Options_Cancel: ; e4520 + ld a, [hJoyPressed] + and A_BUTTON + jr nz, .Exit + and a + ret + +.Exit + scf + ret +; e452a + +OptionsControl: ; e452a + ld hl, wJumptableIndex + ld a, [hJoyLast] + cp D_DOWN + jr z, .DownPressed + cp D_UP + jr z, .UpPressed + and a + ret + +.DownPressed + ld a, [hl] ; load the cursor position to a + cp $7 ; maximum number of items in option menu + jr nz, .CheckFive + ld [hl], $0 + scf + ret + +.CheckFive ; I have no idea why this exists... + cp $5 + jr nz, .Increase + ld [hl], $5 + +.Increase + inc [hl] + scf + ret + +.UpPressed + ld a, [hl] + cp $6 + jr nz, .NotSix + ld [hl], $5 ; Another thing where I'm not sure why it exists + scf + ret + +.NotSix + and a + jr nz, .Decrease + ld [hl], $8 ; number of option items +1 + +.Decrease + dec [hl] + scf + ret +; e455c diff --git a/engine/radio2.asm b/engine/radio2.asm index 1d07c904c..e9ffedd7c 100644 --- a/engine/radio2.asm +++ b/engine/radio2.asm @@ -402,3 +402,263 @@ PlacesAndPeopleName: db "Places & People@" LetsAllSingName: db "Let's All Sing!@" PokeFluteStationName: db "# FLUTE@" ; 9191c + + +Function9191c: ; 9191c + ld hl, Options + ld a, [hl] + push af + set 4, [hl] + ld a, [hInMenu] + push af + ld a, $1 + ld [hInMenu], a + ld a, [VramState] + push af + xor a + ld [VramState], a + call ClearBGPalettes + call ClearTileMap + call ClearSprites + call DisableLCD + call Function90c4e + callba Function8cf53 + ld a, 8 + call SkipMusic + ld a, $e3 + ld [rLCDC], a + call Function90d56 + ld [wd002], a + ld [wd003], a + xor a + ld [hBGMapMode], a + call Function91a04 + call Function3200 + ld a, [wd002] + call Function9106a + ld a, [wd003] + call Function91098 + ld a, c + ld [wd004], a + ld a, b + ld [wd005], a + ld b, SCGB_02 + call GetSGBLayout + call SetPalettes + ld a, [hCGB] + and a + jr z, .asm_9198b + ld a, $e4 + call Functioncf8 + call DelayFrame + +.asm_9198b + ld a, [wd002] + cp KANTO_LANDMARK + jr nc, .asm_9199b + ld d, KANTO_LANDMARK - 1 + ld e, 1 + call Function919b0 + jr .asm_919a1 + +.asm_9199b + call Function910e8 + call Function919b0 + +.asm_919a1 + pop af + ld [VramState], a + pop af + ld [hInMenu], a + pop af + ld [Options], a + call ClearBGPalettes + ret +; 919b0 + +Function919b0: ; 919b0 +.asm_919b0 + call JoyTextDelay + ld hl, hJoyPressed + ld a, [hl] + and B_BUTTON + ret nz + ld hl, hJoyLast + ld a, [hl] + and D_UP + jr nz, .asm_919d4 + ld a, [hl] + and D_DOWN + jr nz, .asm_919e1 +.asm_919c7 + push de + callba Function8cf69 + pop de + call DelayFrame + jr .asm_919b0 + +.asm_919d4 + ld hl, wd003 + ld a, [hl] + cp d + jr c, .asm_919de + ld a, e + dec a + ld [hl], a + +.asm_919de + inc [hl] + jr .asm_919ec + +.asm_919e1 + ld hl, wd003 + ld a, [hl] + cp e + jr nz, .asm_919eb + ld a, d + inc a + ld [hl], a + +.asm_919eb + dec [hl] + +.asm_919ec + push de + ld a, [wd003] + call Function910b4 + ld a, [wd004] + ld c, a + ld a, [wd005] + ld b, a + ld a, [wd003] + call Function910d4 + pop de + jr .asm_919c7 +; 91a04 + +Function91a04: ; 91a04 + ld a, [wd002] + cp KANTO_LANDMARK + jr nc, .asm_91a0f + ld e, $0 + jr .asm_91a11 + +.asm_91a0f + ld e, $1 + +.asm_91a11 + callba Function91ae1 + ld a, $7 + ld bc, 6 + hlcoord 1, 0 + call ByteFill + hlcoord 0, 0 + ld [hl], $6 + hlcoord 7, 0 + ld [hl], $17 + hlcoord 7, 1 + ld [hl], $16 + hlcoord 7, 2 + ld [hl], $26 + ld a, $7 + ld bc, NAME_LENGTH + hlcoord 8, 2 + call ByteFill + hlcoord 19, 2 + ld [hl], $17 + ld a, [wd003] + call Function910b4 + callba TownMapPals + ret +; 91a53 + +PlayRadio: ; 91a53 + ld hl, Options + ld a, [hl] + push af + set 4, [hl] + call .PlayStation + ld c, 100 + call DelayFrames +.loop + call JoyTextDelay + ld a, [hJoyPressed] + and A_BUTTON | B_BUTTON + jr nz, .stop + ld a, [wc6da] + ld l, a + ld a, [wc6db] + ld h, a + ld a, [wc6d9] + and a + jr z, .zero + rst FarCall + +.zero + call DelayFrame + jr .loop + +.stop + pop af + ld [Options], a + call Function91492 + ret +; 91a87 + +.PlayStation: ; 91a87 + ld a, -1 + ld [EnemyTurnsTaken], a + ld hl, .StationPointers + ld d, $0 +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + ld de, .jump_return + push de + jp [hl] + +.jump_return + push de + hlcoord 0, 12 + lb bc, 4, 18 + call TextBox + hlcoord 1, 14 + ld [hl], $72 + pop de + hlcoord 2, 14 + call PlaceString + ld h, b + ld l, c + ld [hl], $73 + call WaitBGMap + ret +; 91ab9 + +.StationPointers: ; 91ab9 + dw .OakOrPnP + dw LoadStation_OaksPokemonTalk + dw LoadStation_PokedexShow + dw LoadStation_PokemonMusic + dw LoadStation_LuckyChannel + dw LoadStation_UnownRadio + dw LoadStation_PlacesAndPeople + dw LoadStation_LetsAllSing + dw LoadStation_RocketRadio +; 91acb + +.OakOrPnP: ; 91acb + call IsInJohto + and a + jr nz, .kanto + call UpdateTime + ld a, [TimeOfDay] + and a + jp z, LoadStation_PokedexShow + jp LoadStation_OaksPokemonTalk + +.kanto + jp LoadStation_PlacesAndPeople +; 91ae1 diff --git a/engine/specials.asm b/engine/specials.asm index 21d391faa..825cf3870 100644 --- a/engine/specials.asm +++ b/engine/specials.asm @@ -160,7 +160,7 @@ SpecialsPointers:: ; c029 add_special Function17d2b6 add_special Function17d2ce add_special Function17f53d - add_special Function103612 + add_special AskMobileOrCable add_special SpecialHoOhChamber add_special Function102142 add_special Special_CelebiShrineEvent @@ -180,7 +180,7 @@ SpecialsPointers:: ; c029 add_special Mobile_HealParty add_special RefreshSprites add_special Function1037c2 - add_special Function10630f + add_special Mobile_DummyReturnFalse add_special Function103780 add_special Function10387b add_special Function4ae12 diff --git a/engine/town_map.asm b/engine/town_map.asm new file mode 100755 index 000000000..bc24af23b --- /dev/null +++ b/engine/town_map.asm @@ -0,0 +1,1068 @@ +Function91ae1: ; 91ae1 + ld a, e + and a + jr nz, .kanto + call Function91ff2 + call FillJohtoMap + ret + +.kanto + call Function91ff2 + call FillKantoMap + ret +; 91af3 + +_FlyMap: ; 91af3 + call ClearBGPalettes + call ClearTileMap + call ClearSprites + ld hl, hInMenu + ld a, [hl] + push af + ld [hl], $1 + xor a + ld [hBGMapMode], a + callba Function8cf53 + call Function91ff2 + ld de, GFX_922e1 + ld hl, VTiles2 tile $30 + lb bc, BANK(GFX_922e1), 6 + call Request1bpp + call FlyMap + call Function91c8f + ld b, $2 + call GetSGBLayout + call SetPalettes +.loop + call JoyTextDelay + ld hl, hJoyPressed + ld a, [hl] + and B_BUTTON + jr nz, .pressedB + ld a, [hl] + and A_BUTTON + jr nz, .pressedA + call FlyMapScroll + call GetMapCursorCoordinates + callba Function8cf69 + call DelayFrame + jr .loop + +.pressedB + ld a, -1 + jr .exit + +.pressedA + ld a, [wd002] + ld l, a + ld h, 0 + add hl, hl + ld de, Flypoints + 1 + add hl, de + ld a, [hl] + +.exit + ld [wd002], a + pop af + ld [hInMenu], a + call ClearBGPalettes + ld a, $90 + ld [hWY], a + xor a + ld [hBGMapAddress], a + ld a, VBGMap0 / $100 + ld [hBGMapAddress + 1], a + ld a, [wd002] + ld e, a + ret +; 91b73 + +FlyMapScroll: ; 91b73 + ld a, [StartFlypoint] + ld e, a + ld a, [EndFlypoint] + ld d, a + ld hl, hJoyLast + ld a, [hl] + and D_UP + jr nz, .ScrollNext + ld a, [hl] + and D_DOWN + jr nz, .ScrollPrev + ret + +.ScrollNext + ld hl, wd002 + ld a, [hl] + cp d + jr nz, .NotAtEndYet + ld a, e + dec a + ld [hl], a + +.NotAtEndYet + inc [hl] + call CheckIfVisitedFlypoint + jr z, .ScrollNext + jr .Finally + +.ScrollPrev + ld hl, wd002 + ld a, [hl] + cp e + jr nz, .NotAtStartYet + ld a, d + inc a + ld [hl], a + +.NotAtStartYet + dec [hl] + call CheckIfVisitedFlypoint + jr z, .ScrollPrev + +.Finally + call TownMapBubble + call WaitBGMap + xor a + ld [hBGMapMode], a + ret +; 91bb5 + +TownMapBubble: ; 91bb5 +; Draw the bubble containing the location text in the town map HUD + +; Top-left corner + hlcoord 1, 0 + ld a, $30 + ld [hli], a + +; Top row + ld bc, 16 + ld a, " " + call ByteFill + +; Top-right corner + ld a, $31 + ld [hl], a + hlcoord 1, 1 + + +; Middle row + ld bc, 18 + ld a, " " + call ByteFill + + +; Bottom-left corner + hlcoord 1, 2 + ld a, $32 + ld [hli], a + +; Bottom row + ld bc, 16 + ld a, " " + call ByteFill + +; Bottom-right corner + ld a, $33 + ld [hl], a + + +; Print "Where?" + hlcoord 2, 0 + ld de, .Where + call PlaceString + +; Print the name of the default flypoint + call .Name + +; Up/down arrows + hlcoord 18, 1 + ld [hl], $34 + ret + +.Where + db "Where?@" + +.Name +; We need the map location of the default flypoint + ld a, [wd002] + ld l, a + ld h, 0 + add hl, hl ; two bytes per flypoint + ld de, Flypoints + add hl, de + ld e, [hl] + + callba GetLandmarkName + + hlcoord 2, 1 + ld de, StringBuffer1 + call PlaceString + ret +; 91c17 + +GetMapCursorCoordinates: ; 91c17 + ld a, [wd002] + ld l, a + ld h, $0 + add hl, hl + ld de, Flypoints + add hl, de + ld e, [hl] + callba GetLandmarkCoords + ld a, [wd003] + ld c, a + ld a, [wd004] + ld b, a + ld hl, $4 + add hl, bc + ld [hl], e + ld hl, $5 + add hl, bc + ld [hl], d + ret +; 91c3c + +CheckIfVisitedFlypoint: ; 91c3c +; Check if the flypoint loaded in [hl] has been visited yet. + push bc + push de + push hl + ld l, [hl] + ld h, 0 + add hl, hl + ld de, Flypoints + 1 + add hl, de + ld c, [hl] + call HasVisitedSpawn + pop hl + pop de + pop bc + and a + ret +; 91c50 + +HasVisitedSpawn: ; 91c50 +; Check if spawn point c has been visited. + ld hl, VisitedSpawns + ld b, CHECK_FLAG + ld d, 0 + predef FlagPredef + ld a, c + ret +; 91c5e + +Flypoints: ; 91c5e +; landmark, spawn point + + const_def + +flypoint: MACRO +; \1\@FLY EQUS "FLY_\1" +; \1\@SPAWN EQUS "SPAWN_\1" + ; const \1\@FLY + ; db \2, \1\@SPAWN + const FLY_\1 + db \2, SPAWN_\1 +ENDM + +; Johto + flypoint NEW_BARK, NEW_BARK_TOWN + flypoint CHERRYGROVE, CHERRYGROVE_CITY + flypoint VIOLET, VIOLET_CITY + flypoint AZALEA, AZALEA_TOWN + flypoint GOLDENROD, GOLDENROD_CITY + flypoint ECRUTEAK, ECRUTEAK_CITY + flypoint OLIVINE, OLIVINE_CITY + flypoint CIANWOOD, CIANWOOD_CITY + flypoint MAHOGANY, MAHOGANY_TOWN + flypoint LAKE, LAKE_OF_RAGE + flypoint BLACKTHORN, BLACKTHORN_CITY + flypoint MT_SILVER, SILVER_CAVE + +; Kanto +KANTO_FLYPOINT EQU const_value + + flypoint PALLET, PALLET_TOWN + flypoint VIRIDIAN, VIRIDIAN_CITY + flypoint PEWTER, PEWTER_CITY + flypoint CERULEAN, CERULEAN_CITY + flypoint VERMILION, VERMILION_CITY + flypoint ROCK_TUNNEL, ROCK_TUNNEL + flypoint LAVENDER, LAVENDER_TOWN + flypoint CELADON, CELADON_CITY + flypoint SAFFRON, SAFFRON_CITY + flypoint FUCHSIA, FUCHSIA_CITY + flypoint CINNABAR, CINNABAR_ISLAND + flypoint INDIGO, INDIGO_PLATEAU + + db -1 +; 91c8f + +Function91c8f: ; 91c8f + ret +; 91c90 + +FlyMap: ; 91c90 + + ld a, [MapGroup] + ld b, a + ld a, [MapNumber] + ld c, a + call GetWorldMapLocation + +; If we're not in a valid location, i.e. Pokecenter floor 2F, +; the backup map information is used + + cp SPECIAL_MAP + jr nz, .CheckRegion + + ld a, [BackupMapGroup] + ld b, a + ld a, [BackupMapNumber] + ld c, a + call GetWorldMapLocation + +.CheckRegion +; The first 46 locations are part of Johto. The rest are in Kanto + cp KANTO_LANDMARK + jr nc, .KantoFlyMap + +.JohtoFlyMap +; Note that .NoKanto should be modified in tandem with this branch + + push af + +; Start from New Bark Town + ld a, FLY_NEW_BARK + ld [wd002], a + +; Flypoints begin at New Bark Town... + ld [StartFlypoint], a +; ..and end at Silver Cave + ld a, FLY_MT_SILVER + ld [EndFlypoint], a + +; Fill out the map + call FillJohtoMap + call .MapHud + pop af + call TownMapPlayerIcon + ret + +.KantoFlyMap + +; The event that there are no flypoints enabled in a map is not +; accounted for. As a result, if you attempt to select a flypoint +; when there are none enabled, the game will crash. Additionally, +; the flypoint selection has a default starting point that +; can be flown to even if none are enabled + +; To prevent both of these things from happening when the player +; enters Kanto, fly access is restricted until Indigo Plateau is +; visited and its flypoint enabled + + push af + ld c, SPAWN_INDIGO + call HasVisitedSpawn + and a + jr z, .NoKanto + +; Kanto's map is only loaded if we've visited Indigo Plateau + +; Flypoints begin at Pallet Town... + ld a, FLY_PALLET + ld [StartFlypoint], a +; ...and end at Indigo Plateau + ld a, FLY_INDIGO + ld [EndFlypoint], a + +; Because Indigo Plateau is the first flypoint the player +; visits, it's made the default flypoint + ld [wd002], a + +; Fill out the map + call FillKantoMap + call .MapHud + pop af + call TownMapPlayerIcon + ret + +.NoKanto +; If Indigo Plateau hasn't been visited, we use Johto's map instead + +; Start from New Bark Town + ld a, FLY_NEW_BARK + ld [wd002], a + +; Flypoints begin at New Bark Town... + ld [StartFlypoint], a +; ..and end at Silver Cave + ld a, FLY_MT_SILVER + ld [EndFlypoint], a + + call FillJohtoMap + + pop af + +.MapHud + call TownMapBubble + call TownMapPals + + ld hl, VBGMap0 ; BG Map 0 + call TownMapBGUpdate + + call TownMapMon + ld a, c + ld [wd003], a + ld a, b + ld [wd004], a + ret +; 91d11 + +Function91d11: ; 91d11 + ld a, [wd002] + push af + ld a, [wd003] + push af + ld a, e + ld [wd002], a + call ClearSprites + xor a + ld [hBGMapMode], a + ld a, $1 + ld [hInMenu], a + + ld de, GFX_922d1 + ld hl, VTiles0 tile $7f + lb bc, BANK(GFX_922d1), 1 + call Request2bpp ; actually 1bpp + + call Function91ed0 + + ld hl, VTiles0 tile $78 + ld c, $4 + call Request2bpp + + call Function91ff2 + call FillKantoMap + call Function91de9 + call TownMapPals + ld hl, VBGMap1 + call TownMapBGUpdate + call FillJohtoMap + call Function91de9 + call TownMapPals + ld hl, VBGMap0 + call TownMapBGUpdate + ld b, $2 + call GetSGBLayout + call SetPalettes + xor a + ld [hBGMapMode], a + xor a + call Function91e1e +.loop + call JoyTextDelay + ld hl, hJoyPressed + ld a, [hl] + and A_BUTTON | B_BUTTON + jr nz, .a_b + ld a, [hJoypadDown] + and SELECT + jr nz, .select + call Function91d9b + call Function91dcd + jr .next + +.select + call Function91e5a + +.next + call DelayFrame + jr .loop + +.a_b + call ClearSprites + pop af + ld [wd003], a + pop af + ld [wd002], a + ret +; 91d9b + +Function91d9b: ; 91d9b + ld a, [hl] + and $20 + jr nz, .asm_91da6 + ld a, [hl] + and $10 + jr nz, .asm_91db7 + ret + +.asm_91da6 + ld a, [hWY] + cp $90 + ret z + call ClearSprites + ld a, $90 + ld [hWY], a + xor a + call Function91e1e + ret + +.asm_91db7 + ld a, [StatusFlags] + bit 6, a ; hall of fame + ret z + ld a, [hWY] + and a + ret z + call ClearSprites + xor a + ld [hWY], a + ld a, $1 + call Function91e1e + ret +; 91dcd + +Function91dcd: ; 91dcd + ld a, [hVBlankCounter] + ld e, a + and $f + ret nz + ld a, e + and $10 + jr nz, .asm_91ddc + call ClearSprites + ret + +.asm_91ddc + hlcoord 0, 0 + ld de, Sprites + ld bc, $a0 + call CopyBytes + ret +; 91de9 + +Function91de9: ; 91de9 + hlcoord 0, 0 + ld bc, SCREEN_WIDTH + ld a, $7f + call ByteFill + hlcoord 0, 1 + ld a, $6 + ld [hli], a + ld bc, SCREEN_HEIGHT + ld a, $7 + call ByteFill + ld [hl], $17 + call GetPokemonName + hlcoord 2, 0 + call PlaceString + ld h, b + ld l, c + ld de, String_91e16 + call PlaceString + ret +; 91e16 + +String_91e16: + db "'S NEST@" +; 91e1e + +Function91e1e: ; 91e1e + ld [wd003], a + ld e, a + callba Function2a01f + decoord 0, 0 + ld hl, Sprites +.asm_91e2e + ld a, [de] + and a + jr z, .asm_91e4d + push de + ld e, a + push hl + callba GetLandmarkCoords + pop hl + ld a, d + sub $4 + ld [hli], a + ld a, e + sub $4 + ld [hli], a + ld a, $7f + ld [hli], a + xor a + ld [hli], a + pop de + inc de + jr .asm_91e2e + +.asm_91e4d + ld hl, Sprites + decoord 0, 0 + ld bc, $a0 + call CopyBytes + ret +; 91e5a + +Function91e5a: ; 91e5a + call Function91ea9 + ret c + + ld a, [wd002] + ld e, a + callba GetLandmarkCoords + ld c, e + ld b, d + ld de, Unknown_91e9c + ld hl, Sprites +.asm_91e70 + ld a, [de] + cp $80 + jr z, .asm_91e91 + + add b + ld [hli], a + inc de + + ld a, [de] + add c + ld [hli], a + inc de + + ld a, [de] + add $78 + ld [hli], a + inc de + + push bc + ld c, 0 + ld a, [PlayerGender] + bit 0, a + jr z, .asm_91e8c + inc c +.asm_91e8c + ld a, c + ld [hli], a + pop bc + + jr .asm_91e70 + +.asm_91e91 + ld hl, Sprites + $10 + ld bc, SpritesEnd - (Sprites + $10) + xor a + call ByteFill + ret +; 91e9c + +Unknown_91e9c: ; 91e9c + db -8, -8, 0 + db -8, 0, 1 + db 0, -8, 2 + db 0, 0, 3 + db $80 ; terminator +; 91ea9 + +Function91ea9: ; 91ea9 + ld a, [wd002] + cp FAST_SHIP + jr z, .johto + cp KANTO_LANDMARK + jr c, .johto + +.kanto + ld a, [wd003] + and a + jr z, .clear + jr .ok + +.johto + ld a, [wd003] + and a + jr nz, .clear + +.ok + and a + ret + +.clear + ld hl, Sprites + ld bc, SpritesEnd - Sprites + xor a + call ByteFill + scf + ret +; 91ed0 + +Function91ed0: ; 91ed0 + ld a, [wd002] + cp FAST_SHIP + jr z, .asm_91ede + callba GetPlayerIcon + ret + +.asm_91ede + ld de, FastShipGFX + ld b, BANK(FastShipGFX) + ret +; 91ee4 + +TownMapBGUpdate: ; 91ee4 +; Update BG Map tiles and attributes + +; BG Map address + ld a, l + ld [hBGMapAddress], a + ld a, h + ld [hBGMapAddress + 1], a + +; Only update palettes on CGB + ld a, [hCGB] + and a + jr z, .tiles + +; BG Map mode 2 (palettes) + ld a, 2 + ld [hBGMapMode], a + +; The BG Map is updated in thirds, so we wait +; 3 frames to update the whole screen's palettes. + ld c, 3 + call DelayFrames + +.tiles +; Update BG Map tiles + call WaitBGMap + +; Turn off BG Map update + xor a + ld [hBGMapMode], a + ret +; 91eff + +FillJohtoMap: ; 91eff + ld de, JohtoMap + jr FillTownMap + +FillKantoMap: ; 91f04 + ld de, KantoMap + +FillTownMap: ; 91f07 + hlcoord 0, 0 +.loop + ld a, [de] + cp $ff + ret z + ld a, [de] + ld [hli], a + inc de + jr .loop +; 91f13 + +TownMapPals: ; 91f13 +; Assign palettes based on tile ids + + hlcoord 0, 0 + decoord 0, 0, AttrMap + ld bc, 360 +.loop +; Current tile + ld a, [hli] + push hl + +; HP/borders use palette 0 + cp $60 + jr nc, .pal0 + +; The palette data is condensed to nybbles, +; least-significant first. + ld hl, TownMapPalMap + srl a + jr c, .odd + +; Even-numbered tile ids take the bottom nybble... + add l + ld l, a + ld a, h + adc 0 + ld h, a + ld a, [hl] + and %111 + jr .update + +.odd +; ...and odd ids take the top. + add l + ld l, a + ld a, h + adc 0 + ld h, a + ld a, [hl] + swap a + and %111 + jr .update + +.pal0 + xor a + +.update + pop hl + ld [de], a + inc de + dec bc + ld a, b + or c + jr nz, .loop + ret + +TownMapPalMap: + db $11, $21, $22, $00, $11, $13, $54, $54, $11, $21, $22, $00 + db $11, $10, $01, $00, $11, $21, $22, $00, $00, $00, $00, $00 + db $00, $00, $44, $04, $00, $00, $00, $00, $33, $33, $33, $33 + db $33, $33, $33, $03, $33, $33, $33, $33, $00, $00, $00, $00 +; 91f7b + +TownMapMon: ; 91f7b +; Draw the FlyMon icon at town map location in + +; Get FlyMon species + ld a, [CurPartyMon] + ld hl, PartySpecies + ld e, a + ld d, $0 + add hl, de + ld a, [hl] + ld [wd265], a + +; Get FlyMon icon + ld e, 8 ; starting tile in VRAM + callba GetSpeciesIcon + +; Animation/palette + ld de, 0 + ld a, $0 + call _InitSpriteAnimStruct + + ld hl, 3 + add hl, bc + ld [hl], 8 + ld hl, 2 + add hl, bc + ld [hl], 0 + ret +; 91fa6 + +TownMapPlayerIcon: ; 91fa6 +; Draw the player icon at town map location in a + push af + + callba GetPlayerIcon + +; Standing icon + ld hl, VTiles0 tile $10 + ld c, 4 ; # tiles + call Request2bpp + +; Walking icon + ld hl, $c0 + add hl, de + ld d, h + ld e, l + ld hl, VTiles0 tile $14 + ld c, 4 ; # tiles + ld a, BANK(ChrisSpriteGFX) ; does nothing + call Request2bpp + +; Animation/palette + ld de, 0 + ld b, $0a ; Male + ld a, [PlayerGender] + bit 0, a + jr z, .asm_91fd3 + ld b, $1e ; Female +.asm_91fd3 + ld a, b + call _InitSpriteAnimStruct + + ld hl, $3 + add hl, bc + ld [hl], $10 + + pop af + ld e, a + push bc + callba GetLandmarkCoords + pop bc + + ld hl, 4 + add hl, bc + ld [hl], e + ld hl, 5 + add hl, bc + ld [hl], d + ret +; 0x91ff2 + +Function91ff2: ; 91ff2 + ld hl, TownMapGFX + ld de, VTiles2 + lb bc, BANK(TownMapGFX), $30 + call DecompressRequest2bpp + ret +; 91fff + + +JohtoMap: ; 91fff +INCBIN "gfx/misc/johto.bin" +; 92168 + +KantoMap: ; 92168 +INCBIN "gfx/misc/kanto.bin" +; 922d1 + + +GFX_922d1: ; 922d1 +INCBIN "gfx/unknown/0922d1.2bpp" +GFX_922e1: ; 922e1 +INCBIN "gfx/unknown/0922e1.2bpp" +GFX_92301: ; 92301 +INCBIN "gfx/unknown/092301.2bpp" +Function92311: ; unreferenced + xor a + ld [wd002], a + call ClearBGPalettes + call ClearTileMap + call ClearSprites + ld hl, hInMenu + ld a, [hl] + push af + ld [hl], $1 + xor a + ld [hBGMapMode], a + callba Function8cf53 + call Function91ff2 + ld de, GFX_922e1 + ld hl, VTiles2 tile $30 + lb bc, BANK(GFX_922e1), 6 + call Request1bpp + call FillKantoMap + call TownMapBubble + call TownMapPals + ld hl, VBGMap1 + call TownMapBGUpdate + call FillJohtoMap + call TownMapBubble + call TownMapPals + ld hl, VBGMap0 + call TownMapBGUpdate + call TownMapMon + ld a, c + ld [wd003], a + ld a, b + ld [wd004], a + ld b, SCGB_02 + call GetSGBLayout + call SetPalettes +.loop + call JoyTextDelay + ld hl, hJoyPressed + ld a, [hl] + and B_BUTTON + jr nz, .pressedB + ld a, [hl] + and A_BUTTON + jr nz, .pressedA + call Function923b8 + call GetMapCursorCoordinates + callba Function8cf69 + call DelayFrame + jr .loop + +.pressedB + ld a, -1 + jr .asm_9239f + +.pressedA + ld a, [wd002] + ld l, a + ld h, 0 + add hl, hl + ld de, Flypoints + 1 + add hl, de + ld a, [hl] + +.asm_9239f + ld [wd002], a + pop af + ld [hInMenu], a + call ClearBGPalettes + ld a, $90 + ld [hWY], a + xor a + ld [hBGMapAddress], a + ld a, VBGMap0 / $100 + ld [hBGMapAddress + 1], a + ld a, [wd002] + ld e, a + ret +; 923b8 + +Function923b8: ; 923b8 + ld hl, hJoyLast + ld a, [hl] + and D_DOWN | D_RIGHT + jr nz, .asm_923c6 + ld a, [hl] + and D_UP | D_LEFT + jr nz, .asm_923d3 + ret + +.asm_923c6 + ld hl, wd002 + ld a, [hl] + cp FLY_INDIGO + jr c, .asm_923d0 + ld [hl], -1 +.asm_923d0 + inc [hl] + jr .asm_923dd + +.asm_923d3 + ld hl, wd002 + ld a, [hl] + and a + jr nz, .asm_923dc + ld [hl], FLY_INDIGO + 1 +.asm_923dc + dec [hl] + +.asm_923dd + ld a, [wd002] + cp KANTO_FLYPOINT + jr c, .johto + + call FillKantoMap + xor a + ld b, $9c + jr .asm_923f3 + +.johto + call FillJohtoMap + ld a, $90 + ld b, $98 + +.asm_923f3 + ld [hWY], a + ld a, b + ld [hBGMapAddress + 1], a + call TownMapBubble + call WaitBGMap + xor a + ld [hBGMapMode], a + ret +; 92402 diff --git a/engine/wildmons.asm b/engine/wildmons.asm new file mode 100755 index 000000000..6f39e19dc --- /dev/null +++ b/engine/wildmons.asm @@ -0,0 +1,1057 @@ +LoadWildMonData: ; 29ff8 + call _GrassWildmonLookup + jr c, .copy + ld hl, wd25a + xor a + ld [hli], a + ld [hli], a + ld [hl], a + jr .done_copy +.copy + inc hl + inc hl + ld de, wd25a + ld bc, $3 + call CopyBytes +.done_copy + call _WaterWildmonLookup + ld a, $0 + jr nc, .no_copy + inc hl + inc hl + ld a, [hl] +.no_copy + ld [wd25d], a + ret + +Function2a01f: ; 2a01f + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + xor a + call ByteFill + ld a, e + and a + jr nz, .kanto + decoord 0, 0 + ld hl, JohtoGrassWildMons + call Function2a052 + ld hl, JohtoWaterWildMons + call Function2a06e + call Function2a0b7 + call Function2a0cf + ret + +.kanto + decoord 0, 0 + ld hl, KantoGrassWildMons + call Function2a052 + ld hl, KantoWaterWildMons + jp Function2a06e +; 2a052 + +Function2a052: ; 2a052 +.loop + ld a, [hl] + cp $ff + ret z + push hl + ld a, [hli] + ld b, a + ld a, [hli] + ld c, a +rept 3 + inc hl +endr + ld a, $15 + call Function2a088 + jr nc, .next + ld [de], a + inc de + +.next + pop hl + ld bc, $2f + add hl, bc + jr .loop +; 2a06e + +Function2a06e: ; 2a06e +.loop + ld a, [hl] + cp $ff + ret z + push hl + ld a, [hli] + ld b, a + ld a, [hli] + ld c, a + inc hl + ld a, $3 + call Function2a088 + jr nc, .next + ld [de], a + inc de + +.next + pop hl + ld bc, 9 + add hl, bc + jr .loop +; 2a088 + +Function2a088: ; 2a088 + inc hl +.loop + push af + ld a, [wd265] + cp [hl] + jr z, .found +rept 2 + inc hl +endr + pop af + dec a + jr nz, .loop + and a + ret + +.found + pop af + jp Function2a09c +; 2a09c + +Function2a09c: ; 2a09c + push de + call GetWorldMapLocation + ld c, a + hlcoord 0, 0 + ld de, SCREEN_WIDTH * SCREEN_HEIGHT +.loop + ld a, [hli] + cp c + jr z, .found + dec de + ld a, e + or d + jr nz, .loop + ld a, c + pop de + scf + ret + +.found + pop de + and a + ret +; 2a0b7 + +Function2a0b7: ; 2a0b7 + ld a, [wRoamMon1Species] + ld b, a + ld a, [wd265] + cp b + ret nz + ld a, [wRoamMon1MapGroup] + ld b, a + ld a, [wRoamMon1MapNumber] + ld c, a + call Function2a09c + ret nc + ld [de], a + inc de + ret +; 2a0cf + +Function2a0cf: ; 2a0cf + ld a, [wRoamMon2Species] + ld b, a + ld a, [wd265] + cp b + ret nz + ld a, [wRoamMon2MapGroup] + ld b, a + ld a, [wRoamMon2MapNumber] + ld c, a + call Function2a09c + ret nc + ld [de], a + inc de + ret +; 2a0e7 + +TryWildEncounter:: ; 2a0e7 +; Try to trigger a wild encounter. + call .EncounterRate + jr nc, .no_battle + call ChooseWildEncounter + jr nz, .no_battle + call CheckRepelEffect + jr nc, .no_battle + xor a + ret + +.no_battle + xor a ; BATTLETYPE_NORMAL + ld [TempWildMonSpecies], a + ld [BattleType], a + ld a, 1 + and a + ret +; 2a103 + +.EncounterRate: ; 2a103 + call GetMapEncounterRate + call ApplyMusicEffectOnEncounterRate + call ApplyCleanseTagEffectOnEncounterRate + call Random + cp b + ret +; 2a111 + +GetMapEncounterRate: ; 2a111 + ld hl, wd25a + call CheckOnWater + ld a, 3 + jr z, .ok + ld a, [TimeOfDay] +.ok + ld c, a + ld b, 0 + add hl, bc + ld b, [hl] + ret +; 2a124 + +ApplyMusicEffectOnEncounterRate:: ; 2a124 +; Pokemon March and Ruins of Alph signal double encounter rate. +; Pokemon Lullaby halves encounter rate. + ld a, [wMapMusic] + cp MUSIC_POKEMON_MARCH + jr z, .double + cp MUSIC_RUINS_OF_ALPH_RADIO + jr z, .double + cp MUSIC_POKEMON_LULLABY + ret nz + srl b + ret + +.double + sla b + ret +; 2a138 + +ApplyCleanseTagEffectOnEncounterRate:: ; 2a138 +; Cleanse Tag halves encounter rate. + ld hl, PartyMon1Item + ld de, PARTYMON_STRUCT_LENGTH + ld a, [PartyCount] + ld c, a +.loop + ld a, [hl] + cp CLEANSE_TAG + jr z, .cleansetag + add hl, de + dec c + jr nz, .loop + ret + +.cleansetag + srl b + ret +; 2a14f + +ChooseWildEncounter: ; 2a14f + call LoadWildMonDataPointer + jp nc, .nowildbattle + call CheckEncounterRoamMon + jp c, .startwildbattle + +rept 3 + inc hl +endr + call CheckOnWater + ld de, .WaterMonTable + jr z, .watermon +rept 2 + inc hl +endr + ld a, [TimeOfDay] + ld bc, $e + call AddNTimes + ld de, .GrassMonTable + +.watermon +; hl contains the pointer to the wild mon data, let's save that to the stack + push hl +.randomloop + call Random + cp 100 + jr nc, .randomloop + inc a ; 1 <= a <= 100 + ld b, a + ld h, d + ld l, e +; This next loop chooses which mon to load up. +.prob_bracket_loop + ld a, [hli] + cp b + jr nc, .got_it + inc hl + jr .prob_bracket_loop + +.got_it + ld c, [hl] + ld b, 0 + pop hl + add hl, bc ; this selects our mon + ld a, [hli] + ld b, a +; If the Pokemon is encountered by surfing, we need to give the levels some variety. + call CheckOnWater + jr nz, .ok +; Check if we buff the wild mon, and by how much. + call Random + cp 35 percent + jr c, .ok + inc b + cp 65 percent + jr c, .ok + inc b + cp 85 percent + jr c, .ok + inc b + cp 95 percent + jr c, .ok + inc b +; Store the level +.ok + ld a, b + ld [CurPartyLevel], a + ld b, [hl] + ; ld a, b + call ValidateTempWildMonSpecies + jr c, .nowildbattle + + ld a, b ; This is in the wrong place. + cp UNOWN + jr nz, .done + + ld a, [UnlockedUnowns] + and a + jr z, .nowildbattle + +.done + jr .loadwildmon + +.nowildbattle + ld a, 1 + and a + ret + +.loadwildmon + ld a, b + ld [TempWildMonSpecies], a + +.startwildbattle + xor a + ret +; 2a1cb + +.GrassMonTable: ; 2a1cb + db 30, $0 ; 30% chance + db 60, $2 ; 30% chance + db 80, $4 ; 20% chance + db 90, $6 ; 10% chance + db 95, $8 ; 5% chance + db 99, $a ; 4% chance + db 100, $c ; 1% chance +; 2a1d9 + +.WaterMonTable: ; 2a1d9 + db 60, $0 ; 60% chance + db 90, $2 ; 30% chance + db 100, $4 ; 10% chance +; 2a1df + +CheckRepelEffect:: ; 2a1df +; If there is no active Repel, there's no need to be here. + ld a, [wRepelEffect] + and a + jr z, .encounter +; Get the first Pokemon in your party that isn't fainted. + ld hl, PartyMon1HP + ld bc, PARTYMON_STRUCT_LENGTH - 1 +.loop + ld a, [hli] + or [hl] + jr nz, .ok + add hl, bc + jr .loop + +.ok +; to PartyMonLevel +rept 4 + dec hl +endr + + ld a, [CurPartyLevel] + cp [hl] + jr nc, .encounter + and a + ret + +.encounter + scf + ret +; 2a200 + +LoadWildMonDataPointer: ; 2a200 + call CheckOnWater + jr z, _WaterWildmonLookup + +_GrassWildmonLookup: ; 2a205 + ld hl, SwarmGrassWildMons + ld bc, GRASS_WILDDATA_LENGTH + call _SwarmWildmonCheck + ret c + ld hl, JohtoGrassWildMons + ld de, KantoGrassWildMons + call _JohtoWildmonCheck + ld bc, GRASS_WILDDATA_LENGTH + jr _NormalWildmonOK + +_WaterWildmonLookup: ; 2a21d + ld hl, SwarmWaterWildMons + ld bc, WATER_WILDDATA_LENGTH + call _SwarmWildmonCheck + ret c + ld hl, JohtoWaterWildMons + ld de, KantoWaterWildMons + call _JohtoWildmonCheck + ld bc, WATER_WILDDATA_LENGTH + jr _NormalWildmonOK + +_JohtoWildmonCheck + call IsInJohto + and a + ret z + ld h, d + ld l, e + ret + +_SwarmWildmonCheck + call CopyCurrMapDE + push hl + ld hl, SwarmFlags + bit 2, [hl] + pop hl + jr z, .CheckYanma + ld a, [wdfcc] + cp d + jr nz, .CheckYanma + ld a, [wdfcd] + cp e + jr nz, .CheckYanma + call LookUpWildmonsForMapDE + jr nc, _NoSwarmWildmon + scf + ret + +.CheckYanma + push hl + ld hl, SwarmFlags + bit 3, [hl] + pop hl + jr z, _NoSwarmWildmon + ld a, [wdc5a] + cp d + jr nz, _NoSwarmWildmon + ld a, [wdc5b] + cp e + jr nz, _NoSwarmWildmon + call LookUpWildmonsForMapDE + jr nc, _NoSwarmWildmon + scf + ret + +_NoSwarmWildmon + and a + ret + +_NormalWildmonOK + call CopyCurrMapDE + jr LookUpWildmonsForMapDE +; 2a27f + +CopyCurrMapDE: ; 2a27f + ld a, [MapGroup] + ld d, a + ld a, [MapNumber] + ld e, a + ret +; 2a288 + +LookUpWildmonsForMapDE: ; 2a288 + push hl + ld a, [hl] + inc a + jr z, .nope + ld a, d + cp [hl] + jr nz, .next + inc hl + ld a, e + cp [hl] + jr z, .yup + +.next + pop hl + add hl, bc + jr LookUpWildmonsForMapDE + +.nope + pop hl + and a + ret + +.yup + pop hl + scf + ret +; 2a2a0 + + +InitRoamMons: ; 2a2a0 +; initialize wRoamMon structs + +; species + ld a, RAIKOU + ld [wRoamMon1Species], a + ld a, ENTEI + ld [wRoamMon2Species], a +; ld a, SUICUNE +; ld [wRoamMon3Species], a + +; level + ld a, 40 + ld [wRoamMon1Level], a + ld [wRoamMon2Level], a +; ld [wRoamMon3Level], a + +; raikou starting map + ld a, GROUP_ROUTE_42 + ld [wRoamMon1MapGroup], a + ld a, MAP_ROUTE_42 + ld [wRoamMon1MapNumber], a + +; entei starting map + ld a, GROUP_ROUTE_37 + ld [wRoamMon2MapGroup], a + ld a, MAP_ROUTE_37 + ld [wRoamMon2MapNumber], a + +; suicune starting map +; ld a, GROUP_ROUTE_38 +; ld [wRoamMon3MapGroup], a +; ld a, MAP_ROUTE_38 +; ld [wRoamMon3MapNumber], a + +; hp + xor a ; generate new stats + ld [wRoamMon1HP], a + ld [wRoamMon2HP], a +; ld [wRoamMon3HP], a + + ret +; 2a2ce + + +CheckEncounterRoamMon: ; 2a2ce + push hl +; Don't trigger an encounter if we're on water. + call CheckOnWater + jr z, .DontEncounterRoamMon +; Load the current map group and number to de + call CopyCurrMapDE +; Randomly select a beast. + call Random + cp 100 ; 25/64 chance + jr nc, .DontEncounterRoamMon + and %00000011 ; Of that, a 3/4 chance. Running total: 75/256, or around 29.3%. + jr z, .DontEncounterRoamMon + dec a ; 1/3 chance that it's Entei, 1/3 chance that it's Raikou +; Compare its current location with yours + ld hl, wRoamMon1MapGroup + ld c, a + ld b, 0 + ld a, 7 ; length of the RoamMon struct + call AddNTimes + ld a, d + cp [hl] + jr nz, .DontEncounterRoamMon + inc hl + ld a, e + cp [hl] + jr nz, .DontEncounterRoamMon +; We've decided to take on a beast, so stage its information for battle. +rept 3 + dec hl +endr + ld a, [hli] + ld [TempWildMonSpecies], a + ld a, [hl] + ld [CurPartyLevel], a + ld a, BATTLETYPE_ROAMING + ld [BattleType], a + + pop hl + scf + ret + +.DontEncounterRoamMon + pop hl + and a + ret +; 2a30d + + +UpdateRoamMons: ; 2a30d + ld a, [wRoamMon1MapGroup] + cp GROUP_N_A + jr z, .SkipRaikou + ld b, a + ld a, [wRoamMon1MapNumber] + ld c, a + call .Update + ld a, b + ld [wRoamMon1MapGroup], a + ld a, c + ld [wRoamMon1MapNumber], a + +.SkipRaikou + ld a, [wRoamMon2MapGroup] + cp GROUP_N_A + jr z, .SkipEntei + ld b, a + ld a, [wRoamMon2MapNumber] + ld c, a + call .Update + ld a, b + ld [wRoamMon2MapGroup], a + ld a, c + ld [wRoamMon2MapNumber], a + +.SkipEntei + ld a, [wRoamMon3MapGroup] + cp GROUP_N_A + jr z, .SkipSuicune + ld b, a + ld a, [wRoamMon3MapNumber] + ld c, a + call .Update + ld a, b + ld [wRoamMon3MapGroup], a + ld a, c + ld [wRoamMon3MapNumber], a + +.SkipSuicune + jp _BackUpMapIndices +; 2a355 + + +.Update: ; 2a355 + ld hl, RoamMaps +.loop +; Are we at the end of the table? + ld a, [hl] + cp -1 + ret z +; Is this the correct entry? + ld a, b + cp [hl] + jr nz, .next + inc hl + ld a, c + cp [hl] + jr z, .yes +; We don't have the correct entry yet, so let's continue. A 0 terminates each entry. +.next + ld a, [hli] + and a + jr nz, .next + jr .loop + +; We have the correct entry now, so let's choose a random map from it. +.yes + inc hl + ld d, h + ld e, l +.update_loop + ld h, d + ld l, e +; Choose which map to warp to. + call Random + and $1f ; 1/8n chance it moves to a completely random map, where n is the number of roaming connections from the current map. + jr z, JumpRoamMon + and 3 + cp [hl] + jr nc, .update_loop ; invalid index, try again + inc hl + ld c, a + ld b, $0 +rept 2 + add hl, bc +endr + ld a, [wdfe7] + cp [hl] + jr nz, .done + inc hl + ld a, [wdfe6] + cp [hl] + jr z, .update_loop + dec hl + +.done + ld a, [hli] + ld b, a + ld c, [hl] + ret + +JumpRoamMons: ; 2a394 + ld a, [wRoamMon1MapGroup] + cp GROUP_N_A + jr z, .SkipRaikou + call JumpRoamMon + ld a, b + ld [wRoamMon1MapGroup], a + ld a, c + ld [wRoamMon1MapNumber], a +.SkipRaikou + + ld a, [wRoamMon2MapGroup] + cp GROUP_N_A + jr z, .SkipEntei + call JumpRoamMon + ld a, b + ld [wRoamMon2MapGroup], a + ld a, c + ld [wRoamMon2MapNumber], a +.SkipEntei + + ld a, [wRoamMon3MapGroup] + cp GROUP_N_A + jr z, .SkipSuicune + call JumpRoamMon + ld a, b + ld [wRoamMon3MapGroup], a + ld a, c + ld [wRoamMon3MapNumber], a +.SkipSuicune + + jp _BackUpMapIndices + +JumpRoamMon: ; 2a3cd +.loop + ld hl, RoamMaps +.innerloop1 ; This loop is completely unnecessary. + call Random ; Choose a random number + and $f ; Take the lower nybble only. This gives a number between 0 and 15. + cp $10 ; If the number is greater than or equal to 16, loop back and try again. + jr nc, .innerloop1 ; I'm sure you can guess why this check is bogus. + inc a + ld b, a +.innerloop2 ; Loop to get hl to the address of the chosen roam map. + dec b + jr z, .ok +.innerloop3 ; Loop to skip the current roam map, which is terminated by a 0. + ld a, [hli] + and a + jr nz, .innerloop3 + jr .innerloop2 +; Check to see if the selected map is the one the player is currently in. If so, try again. +.ok + ld a, [MapGroup] + cp [hl] + jr nz, .done + inc hl + ld a, [MapNumber] + cp [hl] + jr z, .loop + dec hl +; Return the map group and number in bc. +.done + ld a, [hli] + ld b, a + ld c, [hl] + ret +; 2a3f6 + +_BackUpMapIndices: ; 2a3f6 + ld a, [wdfe4] + ld [wdfe6], a + ld a, [wdfe5] + ld [wdfe7], a + ld a, [MapNumber] + ld [wdfe4], a + ld a, [MapGroup] + ld [wdfe5], a + ret +; 2a40f + +RoamMaps: ; 2a40f +; Maps that roaming monsters can be on, +; and possible maps they can jump to. +; Notably missing are Route 40 and +; Route 41, which are water routes. + roam_map ROUTE_29, 2, ROUTE_30, ROUTE_46 + roam_map ROUTE_30, 2, ROUTE_29, ROUTE_31 + roam_map ROUTE_31, 3, ROUTE_30, ROUTE_32, ROUTE_36 + roam_map ROUTE_32, 3, ROUTE_36, ROUTE_31, ROUTE_33 + roam_map ROUTE_33, 2, ROUTE_32, ROUTE_34 + roam_map ROUTE_34, 2, ROUTE_33, ROUTE_35 + roam_map ROUTE_35, 2, ROUTE_34, ROUTE_36 + roam_map ROUTE_36, 4, ROUTE_35, ROUTE_31, ROUTE_32, ROUTE_37 + roam_map ROUTE_37, 3, ROUTE_36, ROUTE_38, ROUTE_42 + roam_map ROUTE_38, 3, ROUTE_37, ROUTE_39, ROUTE_42 + roam_map ROUTE_39, 1, ROUTE_38 + roam_map ROUTE_42, 4, ROUTE_43, ROUTE_44, ROUTE_37, ROUTE_38 + roam_map ROUTE_43, 2, ROUTE_42, ROUTE_44 + roam_map ROUTE_44, 3, ROUTE_42, ROUTE_43, ROUTE_45 + roam_map ROUTE_45, 2, ROUTE_44, ROUTE_46 + roam_map ROUTE_46, 2, ROUTE_45, ROUTE_29 + db -1 +; 2a4a0 + +ValidateTempWildMonSpecies: ; 2a4a0 +; Due to a development oversight, this function is called with the wild Pokemon's level, not its species, in a. + and a + jr z, .nowildmon ; = 0 + cp NUM_POKEMON + 1 ; 252 + jr nc, .nowildmon ; >= 252 + and a ; 1 <= Species <= 251 + ret + +.nowildmon + scf + ret +; 2a4ab + +RandomPhoneRareWildMon: ; 2a4ab +; Related to the phone? + callba GetCallerLocation + ld d, b + ld e, c + ld hl, JohtoGrassWildMons + ld bc, GRASS_WILDDATA_LENGTH + call LookUpWildmonsForMapDE + jr c, .GetGrassmon + ld hl, KantoGrassWildMons + call LookUpWildmonsForMapDE + jr nc, .done + +.GetGrassmon + push hl + ld bc, 5 + 4 * 2 ; Location of the level of the 5th wild Pokemon in that map + add hl, bc + ld a, [TimeOfDay] + ld bc, 7 * 2 + call AddNTimes +.randloop1 + call Random + and $3 + jr z, .randloop1 + dec a + ld c, a + ld b, $0 +rept 2 + add hl, bc +endr +; We now have the pointer to one of the last (rarest) three wild Pokemon found in that area. + inc hl + ld c, [hl] ; Contains the species index of this rare Pokemon + pop hl + ld de, 5 + 0 * 2 + add hl, de + inc hl ; Species index of the most common Pokemon on that route + ld b, 4 +.loop2 + ld a, [hli] + cp c ; Compare this most common Pokemon with the rare one stored in c. + jr z, .done + inc hl + dec b + jr nz, .loop2 +; This Pokemon truly is rare. + push bc + dec c + ld a, c + call CheckSeenMon + pop bc + jr nz, .done +; Since we haven't seen it, have the caller tell us about it. + ld de, StringBuffer1 + call CopyName1 + ld a, c + ld [wd265], a + call GetPokemonName + ld hl, UnknownText_0x2a51a + call PrintText + xor a + ld [ScriptVar], a + ret + +.done + ld a, $1 + ld [ScriptVar], a + ret +; 2a51a + +UnknownText_0x2a51a: ; 0x2a51a + ; I just saw some rare @ in @ . I'll call you if I see another rare #MON, OK? + text_jump UnknownText_0x1bd34b + db "@" +; 0x2a51f + +RandomPhoneWildMon: ; 2a51f + callba GetCallerLocation + ld d, b + ld e, c + ld hl, JohtoGrassWildMons + ld bc, GRASS_WILDDATA_LENGTH + call LookUpWildmonsForMapDE + jr c, .ok + ld hl, KantoGrassWildMons + call LookUpWildmonsForMapDE + +.ok + ld bc, 5 + 0 * 2 + add hl, bc + ld a, [TimeOfDay] + inc a + ld bc, 7 * 2 +.loop + dec a + jr z, .done + add hl, bc + jr .loop + +.done + call Random + and $3 + ld c, a + ld b, $0 +rept 2 + add hl, bc +endr + inc hl + ld a, [hl] + ld [wd265], a + call GetPokemonName + ld hl, StringBuffer1 + ld de, StringBuffer4 + ld bc, PKMN_NAME_LENGTH + jp CopyBytes +; 2a567 + +RandomPhoneMon: ; 2a567 +; Get a random monster owned by the trainer who's calling. + callba GetCallerLocation + ld hl, TrainerGroups + ld a, d + dec a + ld c, a + ld b, 0 +rept 2 + add hl, bc +endr + ld a, BANK(TrainerGroups) + call GetFarHalfword + +.skip_trainer + dec e + jr z, .skipped +.skip + ld a, BANK(Trainers) + call GetFarByte + inc hl + cp -1 + jr nz, .skip + jr .skip_trainer +.skipped + +.skip_name + ld a, BANK(Trainers) + call GetFarByte + inc hl + cp "@" + jr nz, .skip_name + + ld a, BANK(Trainers) + call GetFarByte + inc hl + ld bc, 2 + cp 0 + jr z, .got_mon_length + ld bc, 2 + NUM_MOVES + cp 1 + jr z, .got_mon_length + ld bc, 2 + 1 + cp 2 + jr z, .got_mon_length + ld bc, 2 + 1 + NUM_MOVES +.got_mon_length + + ld e, 0 + push hl +.count_mon + inc e + add hl, bc + ld a, BANK(Trainers) + call GetFarByte + cp -1 + jr nz, .count_mon + pop hl + +.rand + call Random + and 7 + cp e + jr nc, .rand + + inc a +.get_mon + dec a + jr z, .got_mon + add hl, bc + jr .get_mon +.got_mon + + inc hl ; species + ld a, BANK(Trainers) + call GetFarByte + ld [wd265], a + call GetPokemonName + ld hl, StringBuffer1 + ld de, StringBuffer4 + ld bc, PKMN_NAME_LENGTH + jp CopyBytes +; 2a5e9 + + +JohtoGrassWildMons: ; 0x2a5e9 +INCLUDE "data/wild/johto_grass.asm" + +JohtoWaterWildMons: ; 0x2b11d +INCLUDE "data/wild/johto_water.asm" + +KantoGrassWildMons: ; 0x2b274 +INCLUDE "data/wild/kanto_grass.asm" + +KantoWaterWildMons: ; 0x2b7f7 +INCLUDE "data/wild/kanto_water.asm" + +SwarmGrassWildMons: ; 0x2b8d0 +INCLUDE "data/wild/swarm_grass.asm" + +SwarmWaterWildMons: ; 0x2b92f +INCLUDE "data/wild/swarm_water.asm" -- cgit v1.2.3 From ba871547eda6e17e988f4e1dfa7b899050205d5e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 16 Nov 2015 21:07:26 -0500 Subject: engine/pokegear.asm --- engine/pokegear.asm | 2989 ++++++++++++++++++++++++++++++++++++++++++++++++++ engine/radio2.asm | 664 ----------- engine/specials.asm | 2 +- engine/startmenu.asm | 2 +- engine/town_map.asm | 1131 ++----------------- 5 files changed, 3109 insertions(+), 1679 deletions(-) create mode 100755 engine/pokegear.asm delete mode 100644 engine/radio2.asm (limited to 'engine') diff --git a/engine/pokegear.asm b/engine/pokegear.asm new file mode 100755 index 000000000..02684aaab --- /dev/null +++ b/engine/pokegear.asm @@ -0,0 +1,2989 @@ +PokeGear: ; 90b8d (24:4b8d) + ld hl, Options + ld a, [hl] + push af + set NO_TEXT_SCROLL, [hl] + + ld a, [hInMenu] + push af + ld a, $1 + ld [hInMenu], a + + ld a, [VramState] + push af + xor a + ld [VramState], a + + call Function90bea + call DelayFrame + +.loop + call UpdateTime + call JoyTextDelay + ld a, [wJumptableIndex] + bit 7, a + jr nz, .done + call Function90f04 + callba Function8cf69 + call DelayFrame + jr .loop + +.done + ld de, SFX_READ_TEXT_2 + call PlaySFX + call WaitSFX + pop af + ld [VramState], a + pop af + ld [hInMenu], a + pop af + ld [Options], a + call ClearBGPalettes + xor a + ld [hBGMapAddress], a + ld a, VBGMap0 / $100 + ld [hBGMapAddress + 1], a + ld a, $90 + ld [hWY], a + call Function91492 + ret + +Function90bea: ; 90bea (24:4bea) + call ClearBGPalettes + call ClearTileMap + call ClearSprites + call DisableLCD + xor a + ld [hSCY], a + ld [hSCX], a + ld a, $7 + ld [hWX], a + call Function90c4e + callba Function8cf53 + call Function90d32 + ld a, 8 + call SkipMusic + ld a, $e3 + ld [rLCDC], a + call Function90d70 + xor a + ld [wJumptableIndex], a + ld [wcf64], a + ld [wcf65], a + ld [wcf66], a + ld [wc6d2], a + ld [wc6d1], a + ld [wc6d3], a + ld [wc6d9], a + ld [wc6da], a + ld [wc6db], a + call Function90d9e + call Function90da8 + ld b, SCGB_02 + call GetSGBLayout + call SetPalettes + ld a, [hCGB] + and a + ret z + ld a, $e4 + call Functioncf8 + ret + +Function90c4e: ; 90c4e + call ClearVBank1 + ld hl, TownMapGFX + ld de, VTiles2 + ld a, BANK(TownMapGFX) + call FarDecompress + + ld hl, PokegearGFX + ld de, VTiles2 + $30 tiles + ld a, BANK(PokegearGFX) + call FarDecompress + + ld hl, PokegearSpritesGFX + ld de, VTiles0 + ld a, BANK(PokegearSpritesGFX) + call Decompress + + ld a, [MapGroup] + ld b, a + ld a, [MapNumber] + ld c, a + call GetWorldMapLocation + cp FAST_SHIP + jr z, .ssaqua + + callba GetPlayerIcon + + push de + ld h, d + ld l, e + ld a, b + + push af + ld de, VTiles0 tile $10 + ld bc, 4 tiles + call FarCopyBytes + pop af + + pop hl + + ld de, $c0 + add hl, de + ld de, VTiles0 tile $14 + ld bc, 4 tiles + call FarCopyBytes + ret + +.ssaqua + ld hl, FastShipGFX + ld de, VTiles0 tile $10 + ld bc, 8 tiles + call CopyBytes + ret +; 90cb2 + +FastShipGFX: ; 90cb2 +INCBIN "gfx/misc/fast_ship.2bpp" +; 90d32 + +Function90d32: ; 90d32 (24:4d32) + lb de, $24, $10 + ld a, SPRITE_ANIM_INDEX_0D + call _InitSpriteAnimStruct + ld hl, $3 + add hl, bc + ld [hl], $0 + ret + +Function90d41: ; 90d41 (24:4d41) + ld hl, wcf64 + ld e, [hl] + ld d, 0 + ld hl, Unknown_90d52 + add hl, de + ld a, [hl] + ld hl, $6 + add hl, bc + ld [hl], a + ret +; 90d52 (24:4d52) + +Unknown_90d52: ; 90d52 + db $00, $10, $20, $30 +; 90d56 + +Function90d56: ; 90d56 + ld a, [MapGroup] + ld b, a + ld a, [MapNumber] + ld c, a + call GetWorldMapLocation + cp SPECIAL_MAP + ret nz + ld a, [BackupMapGroup] + ld b, a + ld a, [BackupMapNumber] + ld c, a + call GetWorldMapLocation + ret +; 90d70 + + +Function90d70: ; 90d70 (24:4d70) + ld a, [MapGroup] + ld b, a + ld a, [MapNumber] + ld c, a + call GetWorldMapLocation + + cp FAST_SHIP + jr z, .asm_90d95 + + cp SPECIAL_MAP + jr nz, .asm_90d8e + + ld a, [BackupMapGroup] + ld b, a + ld a, [BackupMapNumber] + ld c, a + call GetWorldMapLocation + +.asm_90d8e + ld [wc6d8], a + ld [wc6d7], a + ret + +.asm_90d95 + ld [wc6d8], a + ld a, NEW_BARK_TOWN + ld [wc6d7], a + ret + +Function90d9e: ; 90d9e (24:4d9e) + ld a, $0 + ld [wJumptableIndex], a + xor a + ld [wcf64], a + ret + +Function90da8: ; 90da8 (24:4da8) + xor a + ld [hBGMapMode], a + hlcoord 0, 0 + ld bc, TileMapEnd - TileMap + ld a, $4f + call ByteFill + ld a, [wcf64] + and $3 + add a + ld e, a + ld d, 0 + ld hl, Jumptable_90e12 + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ld de, .asm_90dcb + push de + jp [hl] + +.asm_90dcb + call Function90eb0 + callba TownMapPals + ld a, [wcf65] + and a + jr nz, .asm_90de8 + + xor a + ld [hBGMapAddress], a + ld a, VBGMap0 / $100 + ld [hBGMapAddress + 1], a + call Function90e00 + ld a, $90 + jr .asm_90df3 + +.asm_90de8 + xor a + ld [hBGMapAddress], a + ld a, VBGMap1 / $100 + ld [hBGMapAddress + 1], a + call Function90e00 + xor a + +.asm_90df3 + ld [hWY], a + ld a, [wcf65] + and 1 + xor 1 + ld [wcf65], a + ret + +Function90e00: ; 90e00 (24:4e00) + ld a, [hCGB] + and a + jr z, .asm_90e0e + ld a, $2 + ld [hBGMapMode], a + ld c, 3 + call DelayFrames +.asm_90e0e + call WaitBGMap + ret +; 90e12 (24:4e12) + +Jumptable_90e12: ; 90e12 + dw Function90e1a + dw Function90e3f + dw Function90e82 + dw Function90e72 +; 90e1a + +Function90e1a: ; 90e1a + ld de, ClockTilemapRLE + call Function914bb + hlcoord 12, 1 + ld de, .switch + call PlaceString + hlcoord 0, 12 + lb bc, 4, 18 + call TextBox + call Function90f86 + ret +; 90e36 (24:4e36) + +.switch + db " SWITCH▶@" +; 90e3f + +Function90e3f: ; 90e3f + + ld a, [wc6d8] + cp FAST_SHIP + jr z, .johto + cp KANTO_LANDMARK + jr nc, .kanto +.johto + ld e, 0 + jr .ok +.kanto + ld e, 1 +.ok + callba Function91ae1 + ld a, $7 + ld bc, $12 + hlcoord 1, 2 + call ByteFill + hlcoord 0, 2 + ld [hl], $6 + hlcoord 19, 2 + ld [hl], $17 + ld a, [wc6d7] + call Function910b4 + ret +; 90e72 + +Function90e72: ; 90e72 + ld de, RadioTilemapRLE + call Function914bb + hlcoord 0, 12 + lb bc, 4, 18 + call TextBox + ret +; 90e82 + +Function90e82: ; 90e82 + ld de, PhoneTilemapRLE + call Function914bb + hlcoord 0, 12 + lb bc, 4, 18 + call TextBox + call Function90e98 + call Function912d8 + ret +; 90e98 + +Function90e98: ; 90e98 (24:4e98) + hlcoord 17, 1 + ld a, $3c + ld [hli], a + inc a + ld [hl], a + hlcoord 17, 2 + inc a + ld [hli], a + call GetMapHeaderPhoneServiceNybble + and a + ret nz + hlcoord 18, 2 + ld [hl], $3f + ret + +Function90eb0: ; 90eb0 (24:4eb0) + hlcoord 0, 0 + ld bc, $8 + ld a, $4f + call ByteFill + hlcoord 0, 1 + ld bc, $8 + ld a, $4f + call ByteFill + ld de, wPokegearFlags + ld a, [de] + bit 0, a + call nz, Function90ee4 + ld a, [de] + bit 2, a + call nz, Function90eeb + ld a, [de] + bit 1, a + call nz, Function90ef2 + hlcoord 0, 0 + ld a, $46 + call Function90ef7 + ret + +Function90ee4: ; 90ee4 (24:4ee4) + hlcoord 2, 0 + ld a, $40 + jr Function90ef7 + +Function90eeb: ; 90eeb (24:4eeb) + hlcoord 4, 0 + ld a, $44 + jr Function90ef7 + +Function90ef2: ; 90ef2 (24:4ef2) + hlcoord 6, 0 + ld a, $42 + +Function90ef7: ; 90ef7 (24:4ef7) + ld [hli], a + inc a + ld [hld], a + ld bc, $14 + add hl, bc + add $f + ld [hli], a + inc a + ld [hld], a + ret + +Function90f04: ; 90f04 (24:4f04) + ld a, [wJumptableIndex] + ld e, a + ld d, 0 + ld hl, Jumptable_90f13 +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +Jumptable_90f13: ; 90f13 (24:4f13) + dw Function90f2d + dw Function90f3e + dw Function90fb4 + dw Function90fcd + dw Function90fee + dw Function90fcd + dw Function90fe9 + dw Function91156 + dw Function91171 + dw Function911eb + dw Function91256 + dw Function910f9 + dw Function91112 + + +Function90f2d: ; 90f2d (24:4f2d) + call Function90da8 + ld hl, UnknownText_0x914d3 + call PrintText + ld hl, wJumptableIndex + inc [hl] + call Function91492 + ret + +Function90f3e: ; 90f3e (24:4f3e) + call Function90f7b + ld hl, hJoyLast + + ld a, [hl] + and A_BUTTON + B_BUTTON + START + SELECT + jr nz, .asm_90f75 + + ld a, [hl] + and D_RIGHT + ret z + + ld a, [wPokegearFlags] + bit 0, a + jr z, .asm_90f5a + ld c, $2 + ld b, $1 + jr .asm_90f71 +.asm_90f5a + + ld a, [wPokegearFlags] + bit 2, a + jr z, .asm_90f67 + ld c, $7 + ld b, $2 + jr .asm_90f71 +.asm_90f67 + + ld a, [wPokegearFlags] + bit 1, a + ret z + + ld c, $b + ld b, $3 + +.asm_90f71 + call Function91480 + ret + +.asm_90f75 + ld hl, wJumptableIndex + set 7, [hl] + ret + +Function90f7b: ; 90f7b (24:4f7b) + xor a + ld [hBGMapMode], a + call Function90f86 + ld a, $1 + ld [hBGMapMode], a + ret + +Function90f86: ; 90f86 (24:4f86) + hlcoord 3, 5 + lb bc, 5, 14 + call ClearBox + ld a, [hHours] + ld b, a + ld a, [hMinutes] + ld c, a + decoord 6, 8 + callba PrintHoursMins + ld hl, UnknownText_0x90faf + bccoord 6, 6 + call PlaceWholeStringInBoxAtOnce + ret +; 90fa8 (24:4fa8) + +String_90fa8: db "ごぜん@" +String_90fac: db "ごご@" + +UnknownText_0x90faf: ; 0x90faf + text_jump UnknownText_0x1c5821 + db "@" +; 0x90fb4 + +Function90fb4: ; 90fb4 (24:4fb4) + ld a, [wc6d8] + cp FAST_SHIP + jr z, .johto + cp KANTO_LANDMARK + jr nc, .kanto +.johto + ld a, 3 + jr .done + + ret + +.kanto + ld a, 5 +.done + ld [wJumptableIndex], a + call Function91492 + ret + +Function90fcd: ; 90fcd (24:4fcd) + call Function90da8 + ld a, [wc6d8] + call Function9106a + ld a, [wc6d7] + call Function91098 + ld a, c + ld [wc6d5], a + ld a, b + ld [wc6d6], a + ld hl, wJumptableIndex + inc [hl] + ret + +Function90fe9: ; 90fe9 (24:4fe9) + call Function910e8 + jr Function90ff2 + +Function90fee: ; 90fee (24:4fee) + ld d, $2e + ld e, $1 +Function90ff2: ; 90ff2 (24:4ff2) + ld hl, hJoyLast + ld a, [hl] + and B_BUTTON + jr nz, .cancel + ld a, [hl] + and D_RIGHT + jr nz, .right + ld a, [hl] + and D_LEFT + jr nz, .left + call Function9102f + ret + +.right + ld a, [wPokegearFlags] + bit 2, a + jr z, .asm_91015 + ld c, $7 + ld b, $2 + jr .done + +.asm_91015 + ld a, [wPokegearFlags] + bit 1, a + ret z + ld c, $b + ld b, $3 + jr .done + +.left + ld c, $0 + ld b, $0 +.done + call Function91480 + ret +.cancel + ld hl, wJumptableIndex + set 7, [hl] + ret + +Function9102f: ; 9102f (24:502f) + ld hl, hJoyLast + ld a, [hl] + and D_UP + jr nz, .up + ld a, [hl] + and D_DOWN + jr nz, .down + ret +.up + ld hl, wc6d7 + ld a, [hl] + cp d + jr c, .asm_91047 + ld a, e + dec a + ld [hl], a +.asm_91047 + inc [hl] + jr .done + +.down + ld hl, wc6d7 + ld a, [hl] + cp e + jr nz, .asm_91054 + ld a, d + inc a + ld [hl], a +.asm_91054 + dec [hl] + +.done + ld a, [wc6d7] + call Function910b4 + ld a, [wc6d5] + ld c, a + ld a, [wc6d6] + ld b, a + ld a, [wc6d7] + call Function910d4 + ret + +Function9106a: ; 9106a + push af + ld de, 0 + ld b, SPRITE_ANIM_INDEX_0A + ld a, [PlayerGender] + bit 0, a + jr z, .asm_91079 + ld b, SPRITE_ANIM_INDEX_1E + +.asm_91079 + ld a, b + call _InitSpriteAnimStruct + ld hl, $3 + add hl, bc + ld [hl], $10 + pop af + ld e, a + push bc + callba GetLandmarkCoords + pop bc + ld hl, $4 + add hl, bc + ld [hl], e + ld hl, $5 + add hl, bc + ld [hl], d + ret +; 91098 + +Function91098: ; 91098 + push af + ld de, 0 + ld a, SPRITE_ANIM_INDEX_0D + call _InitSpriteAnimStruct + ld hl, $3 + add hl, bc + ld [hl], $4 + ld hl, $2 + add hl, bc + ld [hl], $0 + pop af + push bc + call Function910d4 + pop bc + ret +; 910b4 + +Function910b4: ; 910b4 + push af + hlcoord 8, 0 + lb bc, 2, 12 + call ClearBox + pop af + ld e, a + push de + callba GetLandmarkName + pop de + callba Function1de2c5 + hlcoord 8, 0 + ld [hl], $34 + ret +; 910d4 + +Function910d4: ; 910d4 + push bc + ld e, a + callba GetLandmarkCoords + pop bc + ld hl, $4 + add hl, bc + ld [hl], e + ld hl, $5 + add hl, bc + ld [hl], d + ret +; 910e8 + +Function910e8: ; 910e8 + ld a, [StatusFlags] + bit 6, a + jr z, .asm_910f4 + ld d, $5e + ld e, $2f + ret + +.asm_910f4 + ld d, $5e + ld e, $58 + ret +; 910f9 + + +Function910f9: ; 910f9 (24:50f9) + call Function90da8 + lb de, $24, $54 + ld a, SPRITE_ANIM_INDEX_14 + call _InitSpriteAnimStruct + ld hl, $3 + add hl, bc + ld [hl], $8 + call _UpdateRadioStation + ld hl, wJumptableIndex + inc [hl] + ret + +Function91112: ; 91112 (24:5112) + ld hl, hJoyLast + ld a, [hl] + and B_BUTTON + jr nz, .cancel + ld a, [hl] + and D_LEFT + jr nz, .left + ld a, [wc6da] + ld l, a + ld a, [wc6db] + ld h, a + ld a, [wc6d9] + and a + ret z + rst FarCall + ret + +.left + ld a, [wPokegearFlags] + bit 2, a + jr z, .asm_9113b + ld c, $7 + ld b, $2 + jr .asm_9114c + +.asm_9113b + ld a, [wPokegearFlags] + bit 0, a + jr z, .asm_91148 + ld c, $2 + ld b, $1 + jr .asm_9114c + +.asm_91148 + ld c, $0 + ld b, $0 +.asm_9114c + call Function91480 + ret + +.cancel + ld hl, wJumptableIndex + set 7, [hl] + ret + +Function91156: ; 91156 (24:5156) + ld hl, wJumptableIndex + inc [hl] + xor a + ld [wc6d2], a + ld [wc6d1], a + ld [wc6d3], a + call Function90da8 + call Function91492 + ld hl, UnknownText_0x914ce + call PrintText + ret + +Function91171: ; 91171 (24:5171) + ld hl, hJoyPressed + ld a, [hl] + and B_BUTTON + jr nz, .b + ld a, [hl] + and A_BUTTON + jr nz, .a + ld hl, hJoyLast + ld a, [hl] + and D_LEFT + jr nz, .left + ld a, [hl] + and D_RIGHT + jr nz, .right + call Function9126d + ret + +.left + ld a, [wPokegearFlags] + bit 0, a + jr z, .asm_9119c + ld c, $2 + ld b, $1 + jr .asm_911ac +.asm_9119c + ld c, $0 + ld b, $0 + jr .asm_911ac + +.right + ld a, [wPokegearFlags] + bit 1, a + ret z + ld c, $b + ld b, $3 +.asm_911ac + call Function91480 + ret + +.b + ld hl, wJumptableIndex + set 7, [hl] + ret + +.a + ld hl, wPhoneList + ld a, [wc6d2] + ld e, a + ld d, 0 + add hl, de + ld a, [wc6d1] + ld e, a + ld d, 0 + add hl, de + ld a, [hl] + and a + ret z + + ld [wc6d3], a + hlcoord 1, 4 + ld a, [wc6d1] + ld bc, 20 * 2 + call AddNTimes + ld [hl], "▷" + call Function91342 + jr c, .asm_911e5 + + ld hl, wJumptableIndex + inc [hl] + ret + +.asm_911e5 + ld a, $8 + ld [wJumptableIndex], a + ret + +Function911eb: ; 911eb (24:51eb) + call GetMapHeaderPhoneServiceNybble + and a + jr nz, .asm_91234 + ld hl, Options + res NO_TEXT_SCROLL, [hl] + xor a + ld [hInMenu], a + ld de, SFX_CALL + call PlaySFX + ld hl, UnknownText_0x9124c + call PrintText + call WaitSFX + ld de, SFX_CALL + call PlaySFX + ld hl, UnknownText_0x9124c + call PrintText + call WaitSFX + ld a, [wc6d3] + ld b, a + call Function90199 + ld c, 10 + call DelayFrames + ld hl, Options + set NO_TEXT_SCROLL, [hl] + ld a, $1 + ld [hInMenu], a + call Function912b7 + ld hl, wJumptableIndex + inc [hl] + ret +.asm_91234 + callba Phone_NoSignal + ld hl, OutOfServiceAreaText + call PrintText + ld a, $8 + ld [wJumptableIndex], a + ld hl, UnknownText_0x914ce + call PrintText + ret +; 9124c (24:524c) + +UnknownText_0x9124c: ; 0x9124c + ; + text_jump UnknownText_0x1c5824 + db "@" +; 0x91251 + +OutOfServiceAreaText: ; 0x91251 + ; You're out of the service area. + text_jump UnknownText_0x1c5827 + db "@" +; 0x91256 + +Function91256: ; 91256 (24:5256) + ld a, [hJoyPressed] + and A_BUTTON | B_BUTTON + ret z + callba HangUp + ld a, $8 + ld [wJumptableIndex], a + ld hl, UnknownText_0x914ce + call PrintText + ret + +Function9126d: ; 9126d (24:526d) + ld hl, hJoyLast + ld a, [hl] + and D_UP + jr nz, .up + ld a, [hl] + and D_DOWN + jr nz, .down + ret + +.up + ld hl, wc6d1 + ld a, [hl] + and a + jr z, .asm_91285 + dec [hl] + jr .asm_912a3 + +.asm_91285 + ld hl, wc6d2 + ld a, [hl] + and a + ret z + dec [hl] + jr .asm_912ad + +.down + ld hl, wc6d1 + ld a, [hl] + cp $3 + jr nc, .asm_91299 + inc [hl] + jr .asm_912a3 + +.asm_91299 + ld hl, wc6d2 + ld a, [hl] + cp $6 + ret nc + inc [hl] + jr .asm_912ad + +.asm_912a3 + xor a + ld [hBGMapMode], a + call Function912b7 + call WaitBGMap + ret + +.asm_912ad + xor a + ld [hBGMapMode], a + call Function912d8 + call WaitBGMap + ret + +Function912b7: ; 912b7 (24:52b7) + ld a, " " + hlcoord 1, 4 + ld [hl], a + hlcoord 1, 6 + ld [hl], a + hlcoord 1, 8 + ld [hl], a + hlcoord 1, 10 + ld [hl], a + hlcoord 1, 4 + ld a, [wc6d1] + ld bc, $28 + call AddNTimes + ld [hl], "▶" + ret + +Function912d8: ; 912d8 (24:52d8) + hlcoord 1, 3 + ld b, $9 + ld a, $7f +.asm_912df + ld c, $12 +.asm_912e1 + ld [hli], a + dec c + jr nz, .asm_912e1 +rept 2 + inc hl +endr + dec b + jr nz, .asm_912df + ld a, [wc6d2] + ld e, a + ld d, $0 + ld hl, wPhoneList + add hl, de + xor a + ld [wc6d0], a +.asm_912f8 + ld a, [hli] + push hl + push af + hlcoord 2, 4 + ld a, [wc6d0] + ld bc, $28 + call AddNTimes + ld d, h + ld e, l + pop af + ld b, a + call Function90380 + pop hl + ld a, [wc6d0] + inc a + ld [wc6d0], a + cp $4 + jr c, .asm_912f8 + call Function912b7 + ret +; 9131e (24:531e) + +Function9131e: ; 9131e + ld hl, wPhoneList + ld a, [wc6d2] + ld e, a + ld d, 0 + add hl, de + ld a, [wc6d1] + ld e, a + ld d, 0 + add hl, de + ld [hl], 0 + ld hl, wPhoneList + ld c, $a +.asm_91336 + ld a, [hli] + and a + jr nz, .asm_9133e + ld a, [hld] + ld [hli], a + ld [hl], 0 +.asm_9133e + dec c + jr nz, .asm_91336 + ret +; 91342 + +Function91342: ; 91342 (24:5342) + ld hl, wPhoneList + ld a, [wc6d2] + ld e, a + ld d, 0 + add hl, de + ld a, [wc6d1] + ld e, a + ld d, 0 + add hl, de + ld c, [hl] + callba Function9038a + ld a, c + and a + jr z, .asm_91366 + + ld hl, Jumptable_91455 + ld de, Unknown_9143f + jr .asm_9136c + +.asm_91366 + ld hl, Jumptable_9146a + ld de, Unknown_9145b + +.asm_9136c + xor a + ld [hBGMapMode], a + push hl + push de + ld a, [de] + ld l, a + inc de + ld a, [de] + ld h, a + inc de + push hl + ld bc, hBGMapAddress + 1 + add hl, bc + ld a, [de] + inc de + sla a + ld b, a + ld c, 8 + push de + call TextBox + pop de + pop hl + inc hl + call PlaceString + pop de + xor a + ld [wc6d4], a + call Function9141d + call WaitBGMap + +.asm_91398 + push de + call JoyTextDelay + pop de + ld hl, hJoyPressed + ld a, [hl] + and D_UP + jr nz, .asm_913b4 + ld a, [hl] + and D_DOWN + jr nz, .asm_913c1 + ld a, [hl] + and A_BUTTON | B_BUTTON + jr nz, .asm_913d4 + call DelayFrame + jr .asm_91398 + +.asm_913b4 + ld hl, wc6d4 + ld a, [hl] + and a + jr z, .asm_91398 + dec [hl] + call Function9141d + jr .asm_91398 + +.asm_913c1 + ld hl, 2 + add hl, de + ld a, [wc6d4] + inc a + cp [hl] + jr nc, .asm_91398 + ld [wc6d4], a + call Function9141d + jr .asm_91398 + +.asm_913d4 + xor a + ld [hBGMapMode], a + call Function912d8 + ld a, $1 + ld [hBGMapMode], a + pop hl + ld a, [hJoyPressed] + and B_BUTTON + jr nz, Function913f1 + + ld a, [wc6d4] + ld e, a + ld d, 0 +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +Function913f1: ; 913f1 + ld hl, UnknownText_0x914ce + call PrintText + scf + ret +; 913f9 (24:53f9) + +Function913f9: ; 913f9 + ld hl, UnknownText_0x914d8 + call MenuTextBox + call YesNoBox + call ExitMenu + jr c, .asm_91419 + call Function9131e + xor a + ld [hBGMapMode], a + call Function912d8 + ld hl, UnknownText_0x914ce + call PrintText + call WaitBGMap +.asm_91419 + scf + ret +; 9141b + +Function9141b: ; 9141b + and a + ret +; 9141d + +Function9141d: ; 9141d (24:541d) + push de + ld a, [de] + inc de + ld l, a + ld a, [de] + inc de + ld h, a + ld a, [de] + ld c, a + push hl + ld a, " " + ld de, 20 * 2 +.asm_9142c + ld [hl], a + add hl, de + dec c + jr nz, .asm_9142c + pop hl + ld a, [wc6d4] + ld bc, 20 * 2 + call AddNTimes + ld [hl], "▶" + pop de + ret +; 9143f (24:543f) + +Unknown_9143f: ; 9143f + dwcoord 10, 6 + db 3 + db "CALL" + next "DELETE" + next "CANCEL" + db "@" +; 91455 + +Jumptable_91455: ; 91455 + dw Function9141b + dw Function913f9 + dw Function913f1 +; 9145b + +Unknown_9145b: ; 9145b + dwcoord 10, 8 + db 2 + db "CALL" + next "CANCEL" + db "@" +; 9146a + +Jumptable_9146a: ; 9146a + dw Function9141b + dw Function913f1 +; 9146e + + +Function9146e: ; 9146e + ld a, [hHours] + cp 12 + jr c, .asm_9147b + sub 12 + ld [wd265], a + scf + ret + +.asm_9147b + ld [wd265], a + and a + ret +; 91480 + + +Function91480: ; 91480 (24:5480) + ld de, SFX_READ_TEXT_2 + call PlaySFX + ld a, c + ld [wJumptableIndex], a + ld a, b + ld [wcf64], a + call DeleteSpriteAnimStruct2ToEnd + ret + +Function91492: ; 91492 + ld a, [wc6dc] + cp $fe + jr z, .asm_914a3 + cp $ff + call z, EnterMapMusic + xor a + ld [wc6dc], a + ret + +.asm_914a3 + call RestartMapMusic + xor a + ld [wc6dc], a + ret +; 914ab + + +DeleteSpriteAnimStruct2ToEnd: ; 914ab (24:54ab) + ld hl, SpriteAnim2 + ld bc, wSpriteAnimationStructsEnd - SpriteAnim2 + xor a + call ByteFill + ld a, 2 + ld [wSpriteAnimCount], a + ret + +Function914bb: ; 914bb (24:54bb) + hlcoord 0, 0 +.asm_914be + ld a, [de] + cp $ff + ret z + ld b, a + inc de + ld a, [de] + ld c, a + inc de + ld a, b +.asm_914c8 + ld [hli], a + dec c + jr nz, .asm_914c8 + jr .asm_914be +; 914ce (24:54ce) + +UnknownText_0x914ce: ; 0x914ce + ; Whom do you want to call? + text_jump UnknownText_0x1c5847 + db "@" +; 0x914d3 + +UnknownText_0x914d3: ; 0x914d3 + ; Press any button to exit. + text_jump UnknownText_0x1c5862 + db "@" +; 0x914d8 + +UnknownText_0x914d8: ; 0x914d8 + ; Delete this stored phone number? + text_jump UnknownText_0x1c587d + db "@" +; 0x914dd + + +PokegearSpritesGFX: ; 914dd +INCBIN "gfx/misc/pokegear_sprites.2bpp.lz" +; 9150d + +RadioTilemapRLE: ; 9150d +INCBIN "gfx/unknown/09150d.tilemap.rle" + +PhoneTilemapRLE: ; 9158a +INCBIN "gfx/unknown/09158a.tilemap.rle" + +ClockTilemapRLE: ; 915db +INCBIN "gfx/unknown/0915db.tilemap.rle" +; 9163e +_UpdateRadioStation: ; 9163e (24:563e) + jr UpdateRadioStation + +Function91640: ; 91640 (24:5640) + push bc + call .TuningKnob + pop bc + ld a, [wRadioTuningKnob] + ld hl, $6 + add hl, bc + ld [hl], a + ret + +.TuningKnob: ; 9164e (24:564e) + ld hl, hJoyLast + ld a, [hl] + and D_DOWN + jr nz, .down + ld a, [hl] + and D_UP + jr nz, .up + ret + +.down + ld hl, wRadioTuningKnob + ld a, [hl] + and a + ret z +rept 2 + dec [hl] +endr + jr .update + +.up + ld hl, wRadioTuningKnob + ld a, [hl] + cp 80 + ret nc +rept 2 + inc [hl] +endr + +.update + +UpdateRadioStation: ; 9166f (24:566f) + ld hl, wRadioTuningKnob + ld d, [hl] + ld hl, RadioChannels +.loop + ld a, [hli] + cp -1 + jr z, .nostation + cp d + jr z, .foundstation +rept 2 + inc hl +endr + jr .loop + +.nostation + call NoRadioStation + ret + +.foundstation + ld a, [hli] + ld h, [hl] + ld l, a + ld de, .returnafterstation + push de + jp [hl] +.returnafterstation + ld a, [wc6d9] + and a + ret z + xor a + ld [hBGMapMode], a + hlcoord 2, 9 + call PlaceString + ld a, $1 + ld [hBGMapMode], a + ret +; 916a1 (24:56a1) + +Function916a1: ; 916a1 + ld [wc6d9], a + ld a, [hli] + ld [wc6da], a + ld a, [hli] + ld [wc6db], a + ret +; 916ad + + +RadioChannels: +; frequencies and the shows that play on them. +; frequency value given here = 4 × ingame_frequency − 2 + dbw 16, .PkmnTalkAndPokedexShow + dbw 28, .PokemonMusic + dbw 32, .LuckyChannel + dbw 40, .BuenasPassword + dbw 52, .RuinsOfAlphRadio + dbw 64, .PlacesAndPeople + dbw 72, .LetsAllSing + dbw 78, .PokeFluteRadio + dbw 80, .EvolutionRadio + db $ff + +.PkmnTalkAndPokedexShow +; Pokédex Show in the morning +; Oak's Pokémon Talk in the afternoon and evening + call .InJohto + jr nc, .NoSignal + ld a, [TimeOfDay] + and a + jp z, LoadStation_PokedexShow + jp LoadStation_OaksPokemonTalk + +.PokemonMusic + call .InJohto + jr nc, .NoSignal + jp LoadStation_PokemonMusic + +.LuckyChannel + call .InJohto + jr nc, .NoSignal + jp LoadStation_LuckyChannel + +.BuenasPassword + call .InJohto + jr nc, .NoSignal + jp LoadStation_BuenasPassword + +.RuinsOfAlphRadio + ld a, [wc6d8] + cp RUINS_OF_ALPH + jr nz, .NoSignal + jp LoadStation_UnownRadio + +.PlacesAndPeople + call .InJohto + jr c, .NoSignal + ld a, [wPokegearFlags] + bit 3, a + jr z, .NoSignal + jp LoadStation_PlacesAndPeople + +.LetsAllSing + call .InJohto + jr c, .NoSignal + ld a, [wPokegearFlags] + bit 3, a + jr z, .NoSignal + jp LoadStation_LetsAllSing + +.PokeFluteRadio + call .InJohto + jr c, .NoSignal + ld a, [wPokegearFlags] + bit 3, a + jr z, .NoSignal + jp LoadStation_PokeFluteRadio + +.EvolutionRadio +; This station airs in the Lake of Rage area when Rocket are still in Mahogany. + + ld a, [StatusFlags] + bit 4, a + jr z, .NoSignal + + ld a, [wc6d8] + cp MAHOGANY_TOWN + jr z, .ok + cp ROUTE_43 + jr z, .ok + cp LAKE_OF_RAGE + jr nz, .NoSignal +.ok + jp LoadStation_EvolutionRadio + +.NoSignal + call NoRadioStation + ret + +.InJohto +; if in Johto or on the S.S. Aqua, set carry +; otherwise clear carry + ld a, [wc6d8] + cp FAST_SHIP + jr z, .johto + cp KANTO_LANDMARK + jr c, .johto +.kanto + and a + ret +.johto + scf + ret + + + +LoadStation_OaksPokemonTalk: ; 91753 (24:5753) + xor a ; OAKS_POKEMON_TALK + ld [wd002], a + ld [wd005], a + ld a, BANK(PlayRadioShow) + ld hl, PlayRadioShow + call Radio_BackUpFarCallParams + ld de, OaksPkmnTalkName + ret + +LoadStation_PokedexShow: ; 91766 (24:5766) + ld a, POKEDEX_SHOW + ld [wd002], a + xor a + ld [wd005], a + ld a, BANK(PlayRadioShow) + ld hl, PlayRadioShow + call Radio_BackUpFarCallParams + ld de, PokedexShowName + ret + +LoadStation_PokemonMusic: ; 9177b (24:577b) + ld a, POKEMON_MUSIC + ld [wd002], a + xor a + ld [wd005], a + ld a, BANK(PlayRadioShow) + ld hl, PlayRadioShow + call Radio_BackUpFarCallParams + ld de, PokemonMusicName + ret + +LoadStation_LuckyChannel: ; 91790 (24:5790) + ld a, LUCKY_CHANNEL + ld [wd002], a + xor a + ld [wd005], a + ld a, BANK(PlayRadioShow) + ld hl, PlayRadioShow + call Radio_BackUpFarCallParams + ld de, LuckyChannelName + ret + +LoadStation_BuenasPassword: ; 917a5 (24:57a5) + ld a, BUENAS_PASSWORD + ld [wd002], a + xor a + ld [wd005], a + ld a, BANK(PlayRadioShow) + ld hl, PlayRadioShow + call Radio_BackUpFarCallParams + ld de, NotBuenasPasswordName + ld a, [StatusFlags2] + bit 0, a + ret z + ld de, BuenasPasswordName + ret +; 917c3 (24:57c3) + +BuenasPasswordName: db "BUENA'S PASSWORD@" +NotBuenasPasswordName: db "@" + +LoadStation_UnownRadio: ; 917d5 (24:57d5) + ld a, UNOWN_RADIO + ld [wd002], a + xor a + ld [wd005], a + ld a, BANK(PlayRadioShow) + ld hl, PlayRadioShow + call Radio_BackUpFarCallParams + ld de, UnknownStationName + ret + +LoadStation_PlacesAndPeople: ; 917ea (24:57ea) + ld a, PLACES_AND_PEOPLE + ld [wd002], a + xor a + ld [wd005], a + ld a, BANK(PlayRadioShow) + ld hl, PlayRadioShow + call Radio_BackUpFarCallParams + ld de, PlacesAndPeopleName + ret + +LoadStation_LetsAllSing: ; 917ff (24:57ff) + ld a, LETS_ALL_SING + ld [wd002], a + xor a + ld [wd005], a + ld a, BANK(PlayRadioShow) + ld hl, PlayRadioShow + call Radio_BackUpFarCallParams + ld de, LetsAllSingName + ret +; 91814 (24:5814) + +LoadStation_RocketRadio: ; 91814 + ld a, ROCKET_RADIO + ld [wd002], a + xor a + ld [wd005], a + ld a, BANK(PlayRadioShow) + ld hl, PlayRadioShow + call Radio_BackUpFarCallParams + ld de, LetsAllSingName + ret +; 91829 + +LoadStation_PokeFluteRadio: ; 91829 (24:5829) + ld a, POKE_FLUTE_RADIO + ld [wd002], a + xor a + ld [wd005], a + ld a, BANK(PlayRadioShow) + ld hl, PlayRadioShow + call Radio_BackUpFarCallParams + ld de, PokeFluteStationName + ret + +LoadStation_EvolutionRadio: ; 9183e (24:583e) + ld a, EVOLUTION_RADIO + ld [wd002], a + xor a + ld [wd005], a + ld a, BANK(PlayRadioShow) + ld hl, PlayRadioShow + call Radio_BackUpFarCallParams + ld de, UnknownStationName + ret +; 91853 (24:5853) + +LoadStation_Dummy: ; 91853 + ret + +RadioMusicRestartDE: ; 91854 (24:5854) + push de + ld a, e + ld [wc6dc], a + ld de, MUSIC_NONE + call PlayMusic + pop de + ld a, e + ld [wMapMusic], a + call PlayMusic + ret + +RadioMusicRestartPokemonChannel: ; 91868 (24:5868) + push de + ld a, $fe + ld [wc6dc], a + ld de, MUSIC_NONE + call PlayMusic + pop de + ld de, MUSIC_POKEMON_CHANNEL + call PlayMusic + ret + +Radio_BackUpFarCallParams: ; 9187c (24:587c) + ld [wc6d9], a + ld a, l + ld [wc6da], a + ld a, h + ld [wc6db], a + ret + +NoRadioStation: ; 91888 (24:5888) + call NoRadioMusic + call NoRadioName + xor a + ld [wc6d9], a + ld [wc6da], a + ld [wc6db], a + ld a, $1 + ld [hBGMapMode], a + ret + +NoRadioMusic: ; 9189d (24:589d) + ld de, MUSIC_NONE + call PlayMusic + ld a, $ff + ld [wc6dc], a + ret + +NoRadioName: ; 918a9 (24:58a9) + xor a + ld [hBGMapMode], a + hlcoord 1, 8 + lb bc, 3, 18 + call ClearBox + hlcoord 0, 12 + ld bc, $412 + call TextBox + ret +; 918bf + +OaksPkmnTalkName: db "OAK's Talk@" +PokedexShowName: db "#DEX Show@" +PokemonMusicName: db "#MON Music@" +LuckyChannelName: db "Lucky Channel@" +UnknownStationName: db "?????@" +PlacesAndPeopleName: db "Places & People@" +LetsAllSingName: db "Let's All Sing!@" +PokeFluteStationName: db "# FLUTE@" +; 9191c + +INCLUDE "engine/town_map.asm" + +PlayRadio: ; 91a53 + ld hl, Options + ld a, [hl] + push af + set 4, [hl] + call .PlayStation + ld c, 100 + call DelayFrames +.loop + call JoyTextDelay + ld a, [hJoyPressed] + and A_BUTTON | B_BUTTON + jr nz, .stop + ld a, [wc6da] + ld l, a + ld a, [wc6db] + ld h, a + ld a, [wc6d9] + and a + jr z, .zero + rst FarCall + +.zero + call DelayFrame + jr .loop + +.stop + pop af + ld [Options], a + call Function91492 + ret +; 91a87 + +.PlayStation: ; 91a87 + ld a, -1 + ld [EnemyTurnsTaken], a + ld hl, .StationPointers + ld d, $0 +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + ld de, .jump_return + push de + jp [hl] + +.jump_return + push de + hlcoord 0, 12 + lb bc, 4, 18 + call TextBox + hlcoord 1, 14 + ld [hl], $72 + pop de + hlcoord 2, 14 + call PlaceString + ld h, b + ld l, c + ld [hl], $73 + call WaitBGMap + ret +; 91ab9 + +.StationPointers: ; 91ab9 + dw .OakOrPnP + dw LoadStation_OaksPokemonTalk + dw LoadStation_PokedexShow + dw LoadStation_PokemonMusic + dw LoadStation_LuckyChannel + dw LoadStation_UnownRadio + dw LoadStation_PlacesAndPeople + dw LoadStation_LetsAllSing + dw LoadStation_RocketRadio +; 91acb + +.OakOrPnP: ; 91acb + call IsInJohto + and a + jr nz, .kanto + call UpdateTime + ld a, [TimeOfDay] + and a + jp z, LoadStation_PokedexShow + jp LoadStation_OaksPokemonTalk + +.kanto + jp LoadStation_PlacesAndPeople +; 91ae1 +Function91ae1: ; 91ae1 + ld a, e + and a + jr nz, .kanto + call Function91ff2 + call FillJohtoMap + ret + +.kanto + call Function91ff2 + call FillKantoMap + ret +; 91af3 + +_FlyMap: ; 91af3 + call ClearBGPalettes + call ClearTileMap + call ClearSprites + ld hl, hInMenu + ld a, [hl] + push af + ld [hl], $1 + xor a + ld [hBGMapMode], a + callba Function8cf53 + call Function91ff2 + ld de, GFX_922e1 + ld hl, VTiles2 tile $30 + lb bc, BANK(GFX_922e1), 6 + call Request1bpp + call FlyMap + call Function91c8f + ld b, $2 + call GetSGBLayout + call SetPalettes +.loop + call JoyTextDelay + ld hl, hJoyPressed + ld a, [hl] + and B_BUTTON + jr nz, .pressedB + ld a, [hl] + and A_BUTTON + jr nz, .pressedA + call FlyMapScroll + call GetMapCursorCoordinates + callba Function8cf69 + call DelayFrame + jr .loop + +.pressedB + ld a, -1 + jr .exit + +.pressedA + ld a, [wd002] + ld l, a + ld h, 0 + add hl, hl + ld de, Flypoints + 1 + add hl, de + ld a, [hl] + +.exit + ld [wd002], a + pop af + ld [hInMenu], a + call ClearBGPalettes + ld a, $90 + ld [hWY], a + xor a + ld [hBGMapAddress], a + ld a, VBGMap0 / $100 + ld [hBGMapAddress + 1], a + ld a, [wd002] + ld e, a + ret +; 91b73 + +FlyMapScroll: ; 91b73 + ld a, [StartFlypoint] + ld e, a + ld a, [EndFlypoint] + ld d, a + ld hl, hJoyLast + ld a, [hl] + and D_UP + jr nz, .ScrollNext + ld a, [hl] + and D_DOWN + jr nz, .ScrollPrev + ret + +.ScrollNext + ld hl, wd002 + ld a, [hl] + cp d + jr nz, .NotAtEndYet + ld a, e + dec a + ld [hl], a + +.NotAtEndYet + inc [hl] + call CheckIfVisitedFlypoint + jr z, .ScrollNext + jr .Finally + +.ScrollPrev + ld hl, wd002 + ld a, [hl] + cp e + jr nz, .NotAtStartYet + ld a, d + inc a + ld [hl], a + +.NotAtStartYet + dec [hl] + call CheckIfVisitedFlypoint + jr z, .ScrollPrev + +.Finally + call TownMapBubble + call WaitBGMap + xor a + ld [hBGMapMode], a + ret +; 91bb5 + +TownMapBubble: ; 91bb5 +; Draw the bubble containing the location text in the town map HUD + +; Top-left corner + hlcoord 1, 0 + ld a, $30 + ld [hli], a + +; Top row + ld bc, 16 + ld a, " " + call ByteFill + +; Top-right corner + ld a, $31 + ld [hl], a + hlcoord 1, 1 + + +; Middle row + ld bc, 18 + ld a, " " + call ByteFill + + +; Bottom-left corner + hlcoord 1, 2 + ld a, $32 + ld [hli], a + +; Bottom row + ld bc, 16 + ld a, " " + call ByteFill + +; Bottom-right corner + ld a, $33 + ld [hl], a + + +; Print "Where?" + hlcoord 2, 0 + ld de, .Where + call PlaceString + +; Print the name of the default flypoint + call .Name + +; Up/down arrows + hlcoord 18, 1 + ld [hl], $34 + ret + +.Where + db "Where?@" + +.Name +; We need the map location of the default flypoint + ld a, [wd002] + ld l, a + ld h, 0 + add hl, hl ; two bytes per flypoint + ld de, Flypoints + add hl, de + ld e, [hl] + + callba GetLandmarkName + + hlcoord 2, 1 + ld de, StringBuffer1 + call PlaceString + ret +; 91c17 + +GetMapCursorCoordinates: ; 91c17 + ld a, [wd002] + ld l, a + ld h, $0 + add hl, hl + ld de, Flypoints + add hl, de + ld e, [hl] + callba GetLandmarkCoords + ld a, [wd003] + ld c, a + ld a, [wd004] + ld b, a + ld hl, $4 + add hl, bc + ld [hl], e + ld hl, $5 + add hl, bc + ld [hl], d + ret +; 91c3c + +CheckIfVisitedFlypoint: ; 91c3c +; Check if the flypoint loaded in [hl] has been visited yet. + push bc + push de + push hl + ld l, [hl] + ld h, 0 + add hl, hl + ld de, Flypoints + 1 + add hl, de + ld c, [hl] + call HasVisitedSpawn + pop hl + pop de + pop bc + and a + ret +; 91c50 + +HasVisitedSpawn: ; 91c50 +; Check if spawn point c has been visited. + ld hl, VisitedSpawns + ld b, CHECK_FLAG + ld d, 0 + predef FlagPredef + ld a, c + ret +; 91c5e + +Flypoints: ; 91c5e +; landmark, spawn point + + const_def + +flypoint: MACRO +; \1\@FLY EQUS "FLY_\1" +; \1\@SPAWN EQUS "SPAWN_\1" + ; const \1\@FLY + ; db \2, \1\@SPAWN + const FLY_\1 + db \2, SPAWN_\1 +ENDM + +; Johto + flypoint NEW_BARK, NEW_BARK_TOWN + flypoint CHERRYGROVE, CHERRYGROVE_CITY + flypoint VIOLET, VIOLET_CITY + flypoint AZALEA, AZALEA_TOWN + flypoint GOLDENROD, GOLDENROD_CITY + flypoint ECRUTEAK, ECRUTEAK_CITY + flypoint OLIVINE, OLIVINE_CITY + flypoint CIANWOOD, CIANWOOD_CITY + flypoint MAHOGANY, MAHOGANY_TOWN + flypoint LAKE, LAKE_OF_RAGE + flypoint BLACKTHORN, BLACKTHORN_CITY + flypoint MT_SILVER, SILVER_CAVE + +; Kanto +KANTO_FLYPOINT EQU const_value + + flypoint PALLET, PALLET_TOWN + flypoint VIRIDIAN, VIRIDIAN_CITY + flypoint PEWTER, PEWTER_CITY + flypoint CERULEAN, CERULEAN_CITY + flypoint VERMILION, VERMILION_CITY + flypoint ROCK_TUNNEL, ROCK_TUNNEL + flypoint LAVENDER, LAVENDER_TOWN + flypoint CELADON, CELADON_CITY + flypoint SAFFRON, SAFFRON_CITY + flypoint FUCHSIA, FUCHSIA_CITY + flypoint CINNABAR, CINNABAR_ISLAND + flypoint INDIGO, INDIGO_PLATEAU + + db -1 +; 91c8f + +Function91c8f: ; 91c8f + ret +; 91c90 + +FlyMap: ; 91c90 + + ld a, [MapGroup] + ld b, a + ld a, [MapNumber] + ld c, a + call GetWorldMapLocation + +; If we're not in a valid location, i.e. Pokecenter floor 2F, +; the backup map information is used + + cp SPECIAL_MAP + jr nz, .CheckRegion + + ld a, [BackupMapGroup] + ld b, a + ld a, [BackupMapNumber] + ld c, a + call GetWorldMapLocation + +.CheckRegion +; The first 46 locations are part of Johto. The rest are in Kanto + cp KANTO_LANDMARK + jr nc, .KantoFlyMap + +.JohtoFlyMap +; Note that .NoKanto should be modified in tandem with this branch + + push af + +; Start from New Bark Town + ld a, FLY_NEW_BARK + ld [wd002], a + +; Flypoints begin at New Bark Town... + ld [StartFlypoint], a +; ..and end at Silver Cave + ld a, FLY_MT_SILVER + ld [EndFlypoint], a + +; Fill out the map + call FillJohtoMap + call .MapHud + pop af + call TownMapPlayerIcon + ret + +.KantoFlyMap + +; The event that there are no flypoints enabled in a map is not +; accounted for. As a result, if you attempt to select a flypoint +; when there are none enabled, the game will crash. Additionally, +; the flypoint selection has a default starting point that +; can be flown to even if none are enabled + +; To prevent both of these things from happening when the player +; enters Kanto, fly access is restricted until Indigo Plateau is +; visited and its flypoint enabled + + push af + ld c, SPAWN_INDIGO + call HasVisitedSpawn + and a + jr z, .NoKanto + +; Kanto's map is only loaded if we've visited Indigo Plateau + +; Flypoints begin at Pallet Town... + ld a, FLY_PALLET + ld [StartFlypoint], a +; ...and end at Indigo Plateau + ld a, FLY_INDIGO + ld [EndFlypoint], a + +; Because Indigo Plateau is the first flypoint the player +; visits, it's made the default flypoint + ld [wd002], a + +; Fill out the map + call FillKantoMap + call .MapHud + pop af + call TownMapPlayerIcon + ret + +.NoKanto +; If Indigo Plateau hasn't been visited, we use Johto's map instead + +; Start from New Bark Town + ld a, FLY_NEW_BARK + ld [wd002], a + +; Flypoints begin at New Bark Town... + ld [StartFlypoint], a +; ..and end at Silver Cave + ld a, FLY_MT_SILVER + ld [EndFlypoint], a + + call FillJohtoMap + + pop af + +.MapHud + call TownMapBubble + call TownMapPals + + ld hl, VBGMap0 ; BG Map 0 + call TownMapBGUpdate + + call TownMapMon + ld a, c + ld [wd003], a + ld a, b + ld [wd004], a + ret +; 91d11 + +Function91d11: ; 91d11 + ld a, [wd002] + push af + ld a, [wd003] + push af + ld a, e + ld [wd002], a + call ClearSprites + xor a + ld [hBGMapMode], a + ld a, $1 + ld [hInMenu], a + + ld de, GFX_922d1 + ld hl, VTiles0 tile $7f + lb bc, BANK(GFX_922d1), 1 + call Request2bpp ; actually 1bpp + + call Function91ed0 + + ld hl, VTiles0 tile $78 + ld c, $4 + call Request2bpp + + call Function91ff2 + call FillKantoMap + call Function91de9 + call TownMapPals + ld hl, VBGMap1 + call TownMapBGUpdate + call FillJohtoMap + call Function91de9 + call TownMapPals + ld hl, VBGMap0 + call TownMapBGUpdate + ld b, $2 + call GetSGBLayout + call SetPalettes + xor a + ld [hBGMapMode], a + xor a + call Function91e1e +.loop + call JoyTextDelay + ld hl, hJoyPressed + ld a, [hl] + and A_BUTTON | B_BUTTON + jr nz, .a_b + ld a, [hJoypadDown] + and SELECT + jr nz, .select + call Function91d9b + call Function91dcd + jr .next + +.select + call Function91e5a + +.next + call DelayFrame + jr .loop + +.a_b + call ClearSprites + pop af + ld [wd003], a + pop af + ld [wd002], a + ret +; 91d9b + +Function91d9b: ; 91d9b + ld a, [hl] + and $20 + jr nz, .asm_91da6 + ld a, [hl] + and $10 + jr nz, .asm_91db7 + ret + +.asm_91da6 + ld a, [hWY] + cp $90 + ret z + call ClearSprites + ld a, $90 + ld [hWY], a + xor a + call Function91e1e + ret + +.asm_91db7 + ld a, [StatusFlags] + bit 6, a ; hall of fame + ret z + ld a, [hWY] + and a + ret z + call ClearSprites + xor a + ld [hWY], a + ld a, $1 + call Function91e1e + ret +; 91dcd + +Function91dcd: ; 91dcd + ld a, [hVBlankCounter] + ld e, a + and $f + ret nz + ld a, e + and $10 + jr nz, .asm_91ddc + call ClearSprites + ret + +.asm_91ddc + hlcoord 0, 0 + ld de, Sprites + ld bc, $a0 + call CopyBytes + ret +; 91de9 + +Function91de9: ; 91de9 + hlcoord 0, 0 + ld bc, SCREEN_WIDTH + ld a, $7f + call ByteFill + hlcoord 0, 1 + ld a, $6 + ld [hli], a + ld bc, SCREEN_HEIGHT + ld a, $7 + call ByteFill + ld [hl], $17 + call GetPokemonName + hlcoord 2, 0 + call PlaceString + ld h, b + ld l, c + ld de, String_91e16 + call PlaceString + ret +; 91e16 + +String_91e16: + db "'S NEST@" +; 91e1e + +Function91e1e: ; 91e1e + ld [wd003], a + ld e, a + callba Function2a01f + decoord 0, 0 + ld hl, Sprites +.asm_91e2e + ld a, [de] + and a + jr z, .asm_91e4d + push de + ld e, a + push hl + callba GetLandmarkCoords + pop hl + ld a, d + sub $4 + ld [hli], a + ld a, e + sub $4 + ld [hli], a + ld a, $7f + ld [hli], a + xor a + ld [hli], a + pop de + inc de + jr .asm_91e2e + +.asm_91e4d + ld hl, Sprites + decoord 0, 0 + ld bc, $a0 + call CopyBytes + ret +; 91e5a + +Function91e5a: ; 91e5a + call Function91ea9 + ret c + + ld a, [wd002] + ld e, a + callba GetLandmarkCoords + ld c, e + ld b, d + ld de, Unknown_91e9c + ld hl, Sprites +.asm_91e70 + ld a, [de] + cp $80 + jr z, .asm_91e91 + + add b + ld [hli], a + inc de + + ld a, [de] + add c + ld [hli], a + inc de + + ld a, [de] + add $78 + ld [hli], a + inc de + + push bc + ld c, 0 + ld a, [PlayerGender] + bit 0, a + jr z, .asm_91e8c + inc c +.asm_91e8c + ld a, c + ld [hli], a + pop bc + + jr .asm_91e70 + +.asm_91e91 + ld hl, Sprites + $10 + ld bc, SpritesEnd - (Sprites + $10) + xor a + call ByteFill + ret +; 91e9c + +Unknown_91e9c: ; 91e9c + db -8, -8, 0 + db -8, 0, 1 + db 0, -8, 2 + db 0, 0, 3 + db $80 ; terminator +; 91ea9 + +Function91ea9: ; 91ea9 + ld a, [wd002] + cp FAST_SHIP + jr z, .johto + cp KANTO_LANDMARK + jr c, .johto + +.kanto + ld a, [wd003] + and a + jr z, .clear + jr .ok + +.johto + ld a, [wd003] + and a + jr nz, .clear + +.ok + and a + ret + +.clear + ld hl, Sprites + ld bc, SpritesEnd - Sprites + xor a + call ByteFill + scf + ret +; 91ed0 + +Function91ed0: ; 91ed0 + ld a, [wd002] + cp FAST_SHIP + jr z, .asm_91ede + callba GetPlayerIcon + ret + +.asm_91ede + ld de, FastShipGFX + ld b, BANK(FastShipGFX) + ret +; 91ee4 + +TownMapBGUpdate: ; 91ee4 +; Update BG Map tiles and attributes + +; BG Map address + ld a, l + ld [hBGMapAddress], a + ld a, h + ld [hBGMapAddress + 1], a + +; Only update palettes on CGB + ld a, [hCGB] + and a + jr z, .tiles + +; BG Map mode 2 (palettes) + ld a, 2 + ld [hBGMapMode], a + +; The BG Map is updated in thirds, so we wait +; 3 frames to update the whole screen's palettes. + ld c, 3 + call DelayFrames + +.tiles +; Update BG Map tiles + call WaitBGMap + +; Turn off BG Map update + xor a + ld [hBGMapMode], a + ret +; 91eff + +FillJohtoMap: ; 91eff + ld de, JohtoMap + jr FillTownMap + +FillKantoMap: ; 91f04 + ld de, KantoMap + +FillTownMap: ; 91f07 + hlcoord 0, 0 +.loop + ld a, [de] + cp $ff + ret z + ld a, [de] + ld [hli], a + inc de + jr .loop +; 91f13 + +TownMapPals: ; 91f13 +; Assign palettes based on tile ids + + hlcoord 0, 0 + decoord 0, 0, AttrMap + ld bc, 360 +.loop +; Current tile + ld a, [hli] + push hl + +; HP/borders use palette 0 + cp $60 + jr nc, .pal0 + +; The palette data is condensed to nybbles, +; least-significant first. + ld hl, TownMapPalMap + srl a + jr c, .odd + +; Even-numbered tile ids take the bottom nybble... + add l + ld l, a + ld a, h + adc 0 + ld h, a + ld a, [hl] + and %111 + jr .update + +.odd +; ...and odd ids take the top. + add l + ld l, a + ld a, h + adc 0 + ld h, a + ld a, [hl] + swap a + and %111 + jr .update + +.pal0 + xor a + +.update + pop hl + ld [de], a + inc de + dec bc + ld a, b + or c + jr nz, .loop + ret + +TownMapPalMap: + db $11, $21, $22, $00, $11, $13, $54, $54, $11, $21, $22, $00 + db $11, $10, $01, $00, $11, $21, $22, $00, $00, $00, $00, $00 + db $00, $00, $44, $04, $00, $00, $00, $00, $33, $33, $33, $33 + db $33, $33, $33, $03, $33, $33, $33, $33, $00, $00, $00, $00 +; 91f7b + +TownMapMon: ; 91f7b +; Draw the FlyMon icon at town map location in + +; Get FlyMon species + ld a, [CurPartyMon] + ld hl, PartySpecies + ld e, a + ld d, $0 + add hl, de + ld a, [hl] + ld [wd265], a + +; Get FlyMon icon + ld e, 8 ; starting tile in VRAM + callba GetSpeciesIcon + +; Animation/palette + ld de, 0 + ld a, $0 + call _InitSpriteAnimStruct + + ld hl, 3 + add hl, bc + ld [hl], 8 + ld hl, 2 + add hl, bc + ld [hl], 0 + ret +; 91fa6 + +TownMapPlayerIcon: ; 91fa6 +; Draw the player icon at town map location in a + push af + + callba GetPlayerIcon + +; Standing icon + ld hl, VTiles0 tile $10 + ld c, 4 ; # tiles + call Request2bpp + +; Walking icon + ld hl, $c0 + add hl, de + ld d, h + ld e, l + ld hl, VTiles0 tile $14 + ld c, 4 ; # tiles + ld a, BANK(ChrisSpriteGFX) ; does nothing + call Request2bpp + +; Animation/palette + ld de, 0 + ld b, $0a ; Male + ld a, [PlayerGender] + bit 0, a + jr z, .asm_91fd3 + ld b, $1e ; Female +.asm_91fd3 + ld a, b + call _InitSpriteAnimStruct + + ld hl, $3 + add hl, bc + ld [hl], $10 + + pop af + ld e, a + push bc + callba GetLandmarkCoords + pop bc + + ld hl, 4 + add hl, bc + ld [hl], e + ld hl, 5 + add hl, bc + ld [hl], d + ret +; 0x91ff2 + +Function91ff2: ; 91ff2 + ld hl, TownMapGFX + ld de, VTiles2 + lb bc, BANK(TownMapGFX), $30 + call DecompressRequest2bpp + ret +; 91fff + + +JohtoMap: ; 91fff +INCBIN "gfx/misc/johto.bin" +; 92168 + +KantoMap: ; 92168 +INCBIN "gfx/misc/kanto.bin" +; 922d1 + + +GFX_922d1: ; 922d1 +INCBIN "gfx/unknown/0922d1.2bpp" +GFX_922e1: ; 922e1 +INCBIN "gfx/unknown/0922e1.2bpp" +GFX_92301: ; 92301 +INCBIN "gfx/unknown/092301.2bpp" +Function92311: ; unreferenced + xor a + ld [wd002], a + call ClearBGPalettes + call ClearTileMap + call ClearSprites + ld hl, hInMenu + ld a, [hl] + push af + ld [hl], $1 + xor a + ld [hBGMapMode], a + callba Function8cf53 + call Function91ff2 + ld de, GFX_922e1 + ld hl, VTiles2 tile $30 + lb bc, BANK(GFX_922e1), 6 + call Request1bpp + call FillKantoMap + call TownMapBubble + call TownMapPals + ld hl, VBGMap1 + call TownMapBGUpdate + call FillJohtoMap + call TownMapBubble + call TownMapPals + ld hl, VBGMap0 + call TownMapBGUpdate + call TownMapMon + ld a, c + ld [wd003], a + ld a, b + ld [wd004], a + ld b, SCGB_02 + call GetSGBLayout + call SetPalettes +.loop + call JoyTextDelay + ld hl, hJoyPressed + ld a, [hl] + and B_BUTTON + jr nz, .pressedB + ld a, [hl] + and A_BUTTON + jr nz, .pressedA + call Function923b8 + call GetMapCursorCoordinates + callba Function8cf69 + call DelayFrame + jr .loop + +.pressedB + ld a, -1 + jr .asm_9239f + +.pressedA + ld a, [wd002] + ld l, a + ld h, 0 + add hl, hl + ld de, Flypoints + 1 + add hl, de + ld a, [hl] + +.asm_9239f + ld [wd002], a + pop af + ld [hInMenu], a + call ClearBGPalettes + ld a, $90 + ld [hWY], a + xor a + ld [hBGMapAddress], a + ld a, VBGMap0 / $100 + ld [hBGMapAddress + 1], a + ld a, [wd002] + ld e, a + ret +; 923b8 + +Function923b8: ; 923b8 + ld hl, hJoyLast + ld a, [hl] + and D_DOWN | D_RIGHT + jr nz, .asm_923c6 + ld a, [hl] + and D_UP | D_LEFT + jr nz, .asm_923d3 + ret + +.asm_923c6 + ld hl, wd002 + ld a, [hl] + cp FLY_INDIGO + jr c, .asm_923d0 + ld [hl], -1 +.asm_923d0 + inc [hl] + jr .asm_923dd + +.asm_923d3 + ld hl, wd002 + ld a, [hl] + and a + jr nz, .asm_923dc + ld [hl], FLY_INDIGO + 1 +.asm_923dc + dec [hl] + +.asm_923dd + ld a, [wd002] + cp KANTO_FLYPOINT + jr c, .johto + + call FillKantoMap + xor a + ld b, $9c + jr .asm_923f3 + +.johto + call FillJohtoMap + ld a, $90 + ld b, $98 + +.asm_923f3 + ld [hWY], a + ld a, b + ld [hBGMapAddress + 1], a + call TownMapBubble + call WaitBGMap + xor a + ld [hBGMapMode], a + ret +; 92402 diff --git a/engine/radio2.asm b/engine/radio2.asm deleted file mode 100644 index e9ffedd7c..000000000 --- a/engine/radio2.asm +++ /dev/null @@ -1,664 +0,0 @@ -_UpdateRadioStation: ; 9163e (24:563e) - jr UpdateRadioStation - -Function91640: ; 91640 (24:5640) - push bc - call .TuningKnob - pop bc - ld a, [wRadioTuningKnob] - ld hl, $6 - add hl, bc - ld [hl], a - ret - -.TuningKnob: ; 9164e (24:564e) - ld hl, hJoyLast - ld a, [hl] - and D_DOWN - jr nz, .down - ld a, [hl] - and D_UP - jr nz, .up - ret - -.down - ld hl, wRadioTuningKnob - ld a, [hl] - and a - ret z -rept 2 - dec [hl] -endr - jr .update - -.up - ld hl, wRadioTuningKnob - ld a, [hl] - cp 80 - ret nc -rept 2 - inc [hl] -endr - -.update - -UpdateRadioStation: ; 9166f (24:566f) - ld hl, wRadioTuningKnob - ld d, [hl] - ld hl, RadioChannels -.loop - ld a, [hli] - cp -1 - jr z, .nostation - cp d - jr z, .foundstation -rept 2 - inc hl -endr - jr .loop - -.nostation - call NoRadioStation - ret - -.foundstation - ld a, [hli] - ld h, [hl] - ld l, a - ld de, .returnafterstation - push de - jp [hl] -.returnafterstation - ld a, [wc6d9] - and a - ret z - xor a - ld [hBGMapMode], a - hlcoord 2, 9 - call PlaceString - ld a, $1 - ld [hBGMapMode], a - ret -; 916a1 (24:56a1) - -Function916a1: ; 916a1 - ld [wc6d9], a - ld a, [hli] - ld [wc6da], a - ld a, [hli] - ld [wc6db], a - ret -; 916ad - - -RadioChannels: -; frequencies and the shows that play on them. -; frequency value given here = 4 × ingame_frequency − 2 - dbw 16, .PkmnTalkAndPokedexShow - dbw 28, .PokemonMusic - dbw 32, .LuckyChannel - dbw 40, .BuenasPassword - dbw 52, .RuinsOfAlphRadio - dbw 64, .PlacesAndPeople - dbw 72, .LetsAllSing - dbw 78, .PokeFluteRadio - dbw 80, .EvolutionRadio - db $ff - -.PkmnTalkAndPokedexShow -; Pokédex Show in the morning -; Oak's Pokémon Talk in the afternoon and evening - call .InJohto - jr nc, .NoSignal - ld a, [TimeOfDay] - and a - jp z, LoadStation_PokedexShow - jp LoadStation_OaksPokemonTalk - -.PokemonMusic - call .InJohto - jr nc, .NoSignal - jp LoadStation_PokemonMusic - -.LuckyChannel - call .InJohto - jr nc, .NoSignal - jp LoadStation_LuckyChannel - -.BuenasPassword - call .InJohto - jr nc, .NoSignal - jp LoadStation_BuenasPassword - -.RuinsOfAlphRadio - ld a, [wc6d8] - cp RUINS_OF_ALPH - jr nz, .NoSignal - jp LoadStation_UnownRadio - -.PlacesAndPeople - call .InJohto - jr c, .NoSignal - ld a, [wPokegearFlags] - bit 3, a - jr z, .NoSignal - jp LoadStation_PlacesAndPeople - -.LetsAllSing - call .InJohto - jr c, .NoSignal - ld a, [wPokegearFlags] - bit 3, a - jr z, .NoSignal - jp LoadStation_LetsAllSing - -.PokeFluteRadio - call .InJohto - jr c, .NoSignal - ld a, [wPokegearFlags] - bit 3, a - jr z, .NoSignal - jp LoadStation_PokeFluteRadio - -.EvolutionRadio -; This station airs in the Lake of Rage area when Rocket are still in Mahogany. - - ld a, [StatusFlags] - bit 4, a - jr z, .NoSignal - - ld a, [wc6d8] - cp MAHOGANY_TOWN - jr z, .ok - cp ROUTE_43 - jr z, .ok - cp LAKE_OF_RAGE - jr nz, .NoSignal -.ok - jp LoadStation_EvolutionRadio - -.NoSignal - call NoRadioStation - ret - -.InJohto -; if in Johto or on the S.S. Aqua, set carry -; otherwise clear carry - ld a, [wc6d8] - cp FAST_SHIP - jr z, .johto - cp KANTO_LANDMARK - jr c, .johto -.kanto - and a - ret -.johto - scf - ret - - - -LoadStation_OaksPokemonTalk: ; 91753 (24:5753) - xor a ; OAKS_POKEMON_TALK - ld [wd002], a - ld [wd005], a - ld a, BANK(PlayRadioShow) - ld hl, PlayRadioShow - call Radio_BackUpFarCallParams - ld de, OaksPkmnTalkName - ret - -LoadStation_PokedexShow: ; 91766 (24:5766) - ld a, POKEDEX_SHOW - ld [wd002], a - xor a - ld [wd005], a - ld a, BANK(PlayRadioShow) - ld hl, PlayRadioShow - call Radio_BackUpFarCallParams - ld de, PokedexShowName - ret - -LoadStation_PokemonMusic: ; 9177b (24:577b) - ld a, POKEMON_MUSIC - ld [wd002], a - xor a - ld [wd005], a - ld a, BANK(PlayRadioShow) - ld hl, PlayRadioShow - call Radio_BackUpFarCallParams - ld de, PokemonMusicName - ret - -LoadStation_LuckyChannel: ; 91790 (24:5790) - ld a, LUCKY_CHANNEL - ld [wd002], a - xor a - ld [wd005], a - ld a, BANK(PlayRadioShow) - ld hl, PlayRadioShow - call Radio_BackUpFarCallParams - ld de, LuckyChannelName - ret - -LoadStation_BuenasPassword: ; 917a5 (24:57a5) - ld a, BUENAS_PASSWORD - ld [wd002], a - xor a - ld [wd005], a - ld a, BANK(PlayRadioShow) - ld hl, PlayRadioShow - call Radio_BackUpFarCallParams - ld de, NotBuenasPasswordName - ld a, [StatusFlags2] - bit 0, a - ret z - ld de, BuenasPasswordName - ret -; 917c3 (24:57c3) - -BuenasPasswordName: db "BUENA'S PASSWORD@" -NotBuenasPasswordName: db "@" - -LoadStation_UnownRadio: ; 917d5 (24:57d5) - ld a, UNOWN_RADIO - ld [wd002], a - xor a - ld [wd005], a - ld a, BANK(PlayRadioShow) - ld hl, PlayRadioShow - call Radio_BackUpFarCallParams - ld de, UnknownStationName - ret - -LoadStation_PlacesAndPeople: ; 917ea (24:57ea) - ld a, PLACES_AND_PEOPLE - ld [wd002], a - xor a - ld [wd005], a - ld a, BANK(PlayRadioShow) - ld hl, PlayRadioShow - call Radio_BackUpFarCallParams - ld de, PlacesAndPeopleName - ret - -LoadStation_LetsAllSing: ; 917ff (24:57ff) - ld a, LETS_ALL_SING - ld [wd002], a - xor a - ld [wd005], a - ld a, BANK(PlayRadioShow) - ld hl, PlayRadioShow - call Radio_BackUpFarCallParams - ld de, LetsAllSingName - ret -; 91814 (24:5814) - -LoadStation_RocketRadio: ; 91814 - ld a, ROCKET_RADIO - ld [wd002], a - xor a - ld [wd005], a - ld a, BANK(PlayRadioShow) - ld hl, PlayRadioShow - call Radio_BackUpFarCallParams - ld de, LetsAllSingName - ret -; 91829 - -LoadStation_PokeFluteRadio: ; 91829 (24:5829) - ld a, POKE_FLUTE_RADIO - ld [wd002], a - xor a - ld [wd005], a - ld a, BANK(PlayRadioShow) - ld hl, PlayRadioShow - call Radio_BackUpFarCallParams - ld de, PokeFluteStationName - ret - -LoadStation_EvolutionRadio: ; 9183e (24:583e) - ld a, EVOLUTION_RADIO - ld [wd002], a - xor a - ld [wd005], a - ld a, BANK(PlayRadioShow) - ld hl, PlayRadioShow - call Radio_BackUpFarCallParams - ld de, UnknownStationName - ret -; 91853 (24:5853) - -LoadStation_Dummy: ; 91853 - ret - -RadioMusicRestartDE: ; 91854 (24:5854) - push de - ld a, e - ld [wc6dc], a - ld de, MUSIC_NONE - call PlayMusic - pop de - ld a, e - ld [wMapMusic], a - call PlayMusic - ret - -RadioMusicRestartPokemonChannel: ; 91868 (24:5868) - push de - ld a, $fe - ld [wc6dc], a - ld de, MUSIC_NONE - call PlayMusic - pop de - ld de, MUSIC_POKEMON_CHANNEL - call PlayMusic - ret - -Radio_BackUpFarCallParams: ; 9187c (24:587c) - ld [wc6d9], a - ld a, l - ld [wc6da], a - ld a, h - ld [wc6db], a - ret - -NoRadioStation: ; 91888 (24:5888) - call NoRadioMusic - call NoRadioName - xor a - ld [wc6d9], a - ld [wc6da], a - ld [wc6db], a - ld a, $1 - ld [hBGMapMode], a - ret - -NoRadioMusic: ; 9189d (24:589d) - ld de, MUSIC_NONE - call PlayMusic - ld a, $ff - ld [wc6dc], a - ret - -NoRadioName: ; 918a9 (24:58a9) - xor a - ld [hBGMapMode], a - hlcoord 1, 8 - lb bc, 3, 18 - call ClearBox - hlcoord 0, 12 - ld bc, $412 - call TextBox - ret -; 918bf - -OaksPkmnTalkName: db "OAK's Talk@" -PokedexShowName: db "#DEX Show@" -PokemonMusicName: db "#MON Music@" -LuckyChannelName: db "Lucky Channel@" -UnknownStationName: db "?????@" -PlacesAndPeopleName: db "Places & People@" -LetsAllSingName: db "Let's All Sing!@" -PokeFluteStationName: db "# FLUTE@" -; 9191c - - -Function9191c: ; 9191c - ld hl, Options - ld a, [hl] - push af - set 4, [hl] - ld a, [hInMenu] - push af - ld a, $1 - ld [hInMenu], a - ld a, [VramState] - push af - xor a - ld [VramState], a - call ClearBGPalettes - call ClearTileMap - call ClearSprites - call DisableLCD - call Function90c4e - callba Function8cf53 - ld a, 8 - call SkipMusic - ld a, $e3 - ld [rLCDC], a - call Function90d56 - ld [wd002], a - ld [wd003], a - xor a - ld [hBGMapMode], a - call Function91a04 - call Function3200 - ld a, [wd002] - call Function9106a - ld a, [wd003] - call Function91098 - ld a, c - ld [wd004], a - ld a, b - ld [wd005], a - ld b, SCGB_02 - call GetSGBLayout - call SetPalettes - ld a, [hCGB] - and a - jr z, .asm_9198b - ld a, $e4 - call Functioncf8 - call DelayFrame - -.asm_9198b - ld a, [wd002] - cp KANTO_LANDMARK - jr nc, .asm_9199b - ld d, KANTO_LANDMARK - 1 - ld e, 1 - call Function919b0 - jr .asm_919a1 - -.asm_9199b - call Function910e8 - call Function919b0 - -.asm_919a1 - pop af - ld [VramState], a - pop af - ld [hInMenu], a - pop af - ld [Options], a - call ClearBGPalettes - ret -; 919b0 - -Function919b0: ; 919b0 -.asm_919b0 - call JoyTextDelay - ld hl, hJoyPressed - ld a, [hl] - and B_BUTTON - ret nz - ld hl, hJoyLast - ld a, [hl] - and D_UP - jr nz, .asm_919d4 - ld a, [hl] - and D_DOWN - jr nz, .asm_919e1 -.asm_919c7 - push de - callba Function8cf69 - pop de - call DelayFrame - jr .asm_919b0 - -.asm_919d4 - ld hl, wd003 - ld a, [hl] - cp d - jr c, .asm_919de - ld a, e - dec a - ld [hl], a - -.asm_919de - inc [hl] - jr .asm_919ec - -.asm_919e1 - ld hl, wd003 - ld a, [hl] - cp e - jr nz, .asm_919eb - ld a, d - inc a - ld [hl], a - -.asm_919eb - dec [hl] - -.asm_919ec - push de - ld a, [wd003] - call Function910b4 - ld a, [wd004] - ld c, a - ld a, [wd005] - ld b, a - ld a, [wd003] - call Function910d4 - pop de - jr .asm_919c7 -; 91a04 - -Function91a04: ; 91a04 - ld a, [wd002] - cp KANTO_LANDMARK - jr nc, .asm_91a0f - ld e, $0 - jr .asm_91a11 - -.asm_91a0f - ld e, $1 - -.asm_91a11 - callba Function91ae1 - ld a, $7 - ld bc, 6 - hlcoord 1, 0 - call ByteFill - hlcoord 0, 0 - ld [hl], $6 - hlcoord 7, 0 - ld [hl], $17 - hlcoord 7, 1 - ld [hl], $16 - hlcoord 7, 2 - ld [hl], $26 - ld a, $7 - ld bc, NAME_LENGTH - hlcoord 8, 2 - call ByteFill - hlcoord 19, 2 - ld [hl], $17 - ld a, [wd003] - call Function910b4 - callba TownMapPals - ret -; 91a53 - -PlayRadio: ; 91a53 - ld hl, Options - ld a, [hl] - push af - set 4, [hl] - call .PlayStation - ld c, 100 - call DelayFrames -.loop - call JoyTextDelay - ld a, [hJoyPressed] - and A_BUTTON | B_BUTTON - jr nz, .stop - ld a, [wc6da] - ld l, a - ld a, [wc6db] - ld h, a - ld a, [wc6d9] - and a - jr z, .zero - rst FarCall - -.zero - call DelayFrame - jr .loop - -.stop - pop af - ld [Options], a - call Function91492 - ret -; 91a87 - -.PlayStation: ; 91a87 - ld a, -1 - ld [EnemyTurnsTaken], a - ld hl, .StationPointers - ld d, $0 -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - ld de, .jump_return - push de - jp [hl] - -.jump_return - push de - hlcoord 0, 12 - lb bc, 4, 18 - call TextBox - hlcoord 1, 14 - ld [hl], $72 - pop de - hlcoord 2, 14 - call PlaceString - ld h, b - ld l, c - ld [hl], $73 - call WaitBGMap - ret -; 91ab9 - -.StationPointers: ; 91ab9 - dw .OakOrPnP - dw LoadStation_OaksPokemonTalk - dw LoadStation_PokedexShow - dw LoadStation_PokemonMusic - dw LoadStation_LuckyChannel - dw LoadStation_UnownRadio - dw LoadStation_PlacesAndPeople - dw LoadStation_LetsAllSing - dw LoadStation_RocketRadio -; 91acb - -.OakOrPnP: ; 91acb - call IsInJohto - and a - jr nz, .kanto - call UpdateTime - ld a, [TimeOfDay] - and a - jp z, LoadStation_PokedexShow - jp LoadStation_OaksPokemonTalk - -.kanto - jp LoadStation_PlacesAndPeople -; 91ae1 diff --git a/engine/specials.asm b/engine/specials.asm index 825cf3870..b9911dc47 100644 --- a/engine/specials.asm +++ b/engine/specials.asm @@ -285,7 +285,7 @@ SpecialNameRater: ; c2b9 Special_TownMap: ; c2c0 call FadeToMenu - callba Function9191c + callba _TownMap call Function2b4d ret ; c2cd diff --git a/engine/startmenu.asm b/engine/startmenu.asm index 1c7768850..efb6c817a 100755 --- a/engine/startmenu.asm +++ b/engine/startmenu.asm @@ -494,7 +494,7 @@ StartMenu_Pokedex: ; 12937 StartMenu_Pokegear: ; 1294c call FadeToMenu - callba Function90b8d + callba PokeGear call Function2b3c ld a, 0 ret diff --git a/engine/town_map.asm b/engine/town_map.asm index bc24af23b..a2f93119a 100755 --- a/engine/town_map.asm +++ b/engine/town_map.asm @@ -1,1068 +1,173 @@ -Function91ae1: ; 91ae1 - ld a, e - and a - jr nz, .kanto - call Function91ff2 - call FillJohtoMap - ret -.kanto - call Function91ff2 - call FillKantoMap - ret -; 91af3 +_TownMap: ; 9191c + ld hl, Options + ld a, [hl] + push af + set NO_TEXT_SCROLL, [hl] + + ld a, [hInMenu] + push af + ld a, $1 + ld [hInMenu], a + + ld a, [VramState] + push af + xor a + ld [VramState], a -_FlyMap: ; 91af3 call ClearBGPalettes call ClearTileMap call ClearSprites - ld hl, hInMenu - ld a, [hl] - push af - ld [hl], $1 + call DisableLCD + call Function90c4e + callba Function8cf53 + ld a, 8 + call SkipMusic + ld a, $e3 + ld [rLCDC], a + call Function90d56 + ld [wd002], a + ld [wd003], a xor a ld [hBGMapMode], a - callba Function8cf53 - call Function91ff2 - ld de, GFX_922e1 - ld hl, VTiles2 tile $30 - lb bc, BANK(GFX_922e1), 6 - call Request1bpp - call FlyMap - call Function91c8f - ld b, $2 + call Function91a04 + call Function3200 + ld a, [wd002] + call Function9106a + ld a, [wd003] + call Function91098 + ld a, c + ld [wd004], a + ld a, b + ld [wd005], a + ld b, SCGB_02 call GetSGBLayout call SetPalettes -.loop - call JoyTextDelay - ld hl, hJoyPressed - ld a, [hl] - and B_BUTTON - jr nz, .pressedB - ld a, [hl] - and A_BUTTON - jr nz, .pressedA - call FlyMapScroll - call GetMapCursorCoordinates - callba Function8cf69 + ld a, [hCGB] + and a + jr z, .sgb + ld a, $e4 + call Functioncf8 call DelayFrame - jr .loop - -.pressedB - ld a, -1 - jr .exit -.pressedA +.sgb ld a, [wd002] - ld l, a - ld h, 0 - add hl, hl - ld de, Flypoints + 1 - add hl, de - ld a, [hl] + cp KANTO_LANDMARK + jr nc, .kanto + ld d, KANTO_LANDMARK - 1 + ld e, 1 + call Function919b0 + jr .resume -.exit - ld [wd002], a +.kanto + call Function910e8 + call Function919b0 + +.resume + pop af + ld [VramState], a pop af ld [hInMenu], a + pop af + ld [Options], a call ClearBGPalettes - ld a, $90 - ld [hWY], a - xor a - ld [hBGMapAddress], a - ld a, VBGMap0 / $100 - ld [hBGMapAddress + 1], a - ld a, [wd002] - ld e, a ret -; 91b73 +; 919b0 + +Function919b0: ; 919b0 +.loop + call JoyTextDelay + ld hl, hJoyPressed + ld a, [hl] + and B_BUTTON + ret nz -FlyMapScroll: ; 91b73 - ld a, [StartFlypoint] - ld e, a - ld a, [EndFlypoint] - ld d, a ld hl, hJoyLast ld a, [hl] and D_UP - jr nz, .ScrollNext + jr nz, .pressed_up + ld a, [hl] and D_DOWN - jr nz, .ScrollPrev - ret + jr nz, .pressed_down +.loop2 + push de + callba Function8cf69 + pop de + call DelayFrame + jr .loop -.ScrollNext - ld hl, wd002 +.pressed_up + ld hl, wd003 ld a, [hl] cp d - jr nz, .NotAtEndYet + jr c, .okay ld a, e dec a ld [hl], a -.NotAtEndYet +.okay inc [hl] - call CheckIfVisitedFlypoint - jr z, .ScrollNext - jr .Finally + jr .next -.ScrollPrev - ld hl, wd002 +.pressed_down + ld hl, wd003 ld a, [hl] cp e - jr nz, .NotAtStartYet + jr nz, .okay2 ld a, d inc a ld [hl], a -.NotAtStartYet +.okay2 dec [hl] - call CheckIfVisitedFlypoint - jr z, .ScrollPrev -.Finally - call TownMapBubble - call WaitBGMap - xor a - ld [hBGMapMode], a - ret -; 91bb5 - -TownMapBubble: ; 91bb5 -; Draw the bubble containing the location text in the town map HUD - -; Top-left corner - hlcoord 1, 0 - ld a, $30 - ld [hli], a - -; Top row - ld bc, 16 - ld a, " " - call ByteFill - -; Top-right corner - ld a, $31 - ld [hl], a - hlcoord 1, 1 - - -; Middle row - ld bc, 18 - ld a, " " - call ByteFill - - -; Bottom-left corner - hlcoord 1, 2 - ld a, $32 - ld [hli], a - -; Bottom row - ld bc, 16 - ld a, " " - call ByteFill - -; Bottom-right corner - ld a, $33 - ld [hl], a - - -; Print "Where?" - hlcoord 2, 0 - ld de, .Where - call PlaceString - -; Print the name of the default flypoint - call .Name - -; Up/down arrows - hlcoord 18, 1 - ld [hl], $34 - ret - -.Where - db "Where?@" - -.Name -; We need the map location of the default flypoint - ld a, [wd002] - ld l, a - ld h, 0 - add hl, hl ; two bytes per flypoint - ld de, Flypoints - add hl, de - ld e, [hl] - - callba GetLandmarkName - - hlcoord 2, 1 - ld de, StringBuffer1 - call PlaceString - ret -; 91c17 - -GetMapCursorCoordinates: ; 91c17 - ld a, [wd002] - ld l, a - ld h, $0 - add hl, hl - ld de, Flypoints - add hl, de - ld e, [hl] - callba GetLandmarkCoords +.next + push de ld a, [wd003] - ld c, a + call Function910b4 ld a, [wd004] - ld b, a - ld hl, $4 - add hl, bc - ld [hl], e - ld hl, $5 - add hl, bc - ld [hl], d - ret -; 91c3c - -CheckIfVisitedFlypoint: ; 91c3c -; Check if the flypoint loaded in [hl] has been visited yet. - push bc - push de - push hl - ld l, [hl] - ld h, 0 - add hl, hl - ld de, Flypoints + 1 - add hl, de - ld c, [hl] - call HasVisitedSpawn - pop hl - pop de - pop bc - and a - ret -; 91c50 - -HasVisitedSpawn: ; 91c50 -; Check if spawn point c has been visited. - ld hl, VisitedSpawns - ld b, CHECK_FLAG - ld d, 0 - predef FlagPredef - ld a, c - ret -; 91c5e - -Flypoints: ; 91c5e -; landmark, spawn point - - const_def - -flypoint: MACRO -; \1\@FLY EQUS "FLY_\1" -; \1\@SPAWN EQUS "SPAWN_\1" - ; const \1\@FLY - ; db \2, \1\@SPAWN - const FLY_\1 - db \2, SPAWN_\1 -ENDM - -; Johto - flypoint NEW_BARK, NEW_BARK_TOWN - flypoint CHERRYGROVE, CHERRYGROVE_CITY - flypoint VIOLET, VIOLET_CITY - flypoint AZALEA, AZALEA_TOWN - flypoint GOLDENROD, GOLDENROD_CITY - flypoint ECRUTEAK, ECRUTEAK_CITY - flypoint OLIVINE, OLIVINE_CITY - flypoint CIANWOOD, CIANWOOD_CITY - flypoint MAHOGANY, MAHOGANY_TOWN - flypoint LAKE, LAKE_OF_RAGE - flypoint BLACKTHORN, BLACKTHORN_CITY - flypoint MT_SILVER, SILVER_CAVE - -; Kanto -KANTO_FLYPOINT EQU const_value - - flypoint PALLET, PALLET_TOWN - flypoint VIRIDIAN, VIRIDIAN_CITY - flypoint PEWTER, PEWTER_CITY - flypoint CERULEAN, CERULEAN_CITY - flypoint VERMILION, VERMILION_CITY - flypoint ROCK_TUNNEL, ROCK_TUNNEL - flypoint LAVENDER, LAVENDER_TOWN - flypoint CELADON, CELADON_CITY - flypoint SAFFRON, SAFFRON_CITY - flypoint FUCHSIA, FUCHSIA_CITY - flypoint CINNABAR, CINNABAR_ISLAND - flypoint INDIGO, INDIGO_PLATEAU - - db -1 -; 91c8f - -Function91c8f: ; 91c8f - ret -; 91c90 - -FlyMap: ; 91c90 - - ld a, [MapGroup] - ld b, a - ld a, [MapNumber] ld c, a - call GetWorldMapLocation - -; If we're not in a valid location, i.e. Pokecenter floor 2F, -; the backup map information is used - - cp SPECIAL_MAP - jr nz, .CheckRegion - - ld a, [BackupMapGroup] + ld a, [wd005] ld b, a - ld a, [BackupMapNumber] - ld c, a - call GetWorldMapLocation - -.CheckRegion -; The first 46 locations are part of Johto. The rest are in Kanto - cp KANTO_LANDMARK - jr nc, .KantoFlyMap - -.JohtoFlyMap -; Note that .NoKanto should be modified in tandem with this branch - - push af - -; Start from New Bark Town - ld a, FLY_NEW_BARK - ld [wd002], a - -; Flypoints begin at New Bark Town... - ld [StartFlypoint], a -; ..and end at Silver Cave - ld a, FLY_MT_SILVER - ld [EndFlypoint], a - -; Fill out the map - call FillJohtoMap - call .MapHud - pop af - call TownMapPlayerIcon - ret - -.KantoFlyMap - -; The event that there are no flypoints enabled in a map is not -; accounted for. As a result, if you attempt to select a flypoint -; when there are none enabled, the game will crash. Additionally, -; the flypoint selection has a default starting point that -; can be flown to even if none are enabled - -; To prevent both of these things from happening when the player -; enters Kanto, fly access is restricted until Indigo Plateau is -; visited and its flypoint enabled - - push af - ld c, SPAWN_INDIGO - call HasVisitedSpawn - and a - jr z, .NoKanto - -; Kanto's map is only loaded if we've visited Indigo Plateau - -; Flypoints begin at Pallet Town... - ld a, FLY_PALLET - ld [StartFlypoint], a -; ...and end at Indigo Plateau - ld a, FLY_INDIGO - ld [EndFlypoint], a - -; Because Indigo Plateau is the first flypoint the player -; visits, it's made the default flypoint - ld [wd002], a - -; Fill out the map - call FillKantoMap - call .MapHud - pop af - call TownMapPlayerIcon - ret - -.NoKanto -; If Indigo Plateau hasn't been visited, we use Johto's map instead - -; Start from New Bark Town - ld a, FLY_NEW_BARK - ld [wd002], a - -; Flypoints begin at New Bark Town... - ld [StartFlypoint], a -; ..and end at Silver Cave - ld a, FLY_MT_SILVER - ld [EndFlypoint], a - - call FillJohtoMap - - pop af - -.MapHud - call TownMapBubble - call TownMapPals - - ld hl, VBGMap0 ; BG Map 0 - call TownMapBGUpdate - - call TownMapMon - ld a, c - ld [wd003], a - ld a, b - ld [wd004], a - ret -; 91d11 - -Function91d11: ; 91d11 - ld a, [wd002] - push af ld a, [wd003] - push af - ld a, e - ld [wd002], a - call ClearSprites - xor a - ld [hBGMapMode], a - ld a, $1 - ld [hInMenu], a - - ld de, GFX_922d1 - ld hl, VTiles0 tile $7f - lb bc, BANK(GFX_922d1), 1 - call Request2bpp ; actually 1bpp - - call Function91ed0 - - ld hl, VTiles0 tile $78 - ld c, $4 - call Request2bpp - - call Function91ff2 - call FillKantoMap - call Function91de9 - call TownMapPals - ld hl, VBGMap1 - call TownMapBGUpdate - call FillJohtoMap - call Function91de9 - call TownMapPals - ld hl, VBGMap0 - call TownMapBGUpdate - ld b, $2 - call GetSGBLayout - call SetPalettes - xor a - ld [hBGMapMode], a - xor a - call Function91e1e -.loop - call JoyTextDelay - ld hl, hJoyPressed - ld a, [hl] - and A_BUTTON | B_BUTTON - jr nz, .a_b - ld a, [hJoypadDown] - and SELECT - jr nz, .select - call Function91d9b - call Function91dcd - jr .next - -.select - call Function91e5a - -.next - call DelayFrame - jr .loop - -.a_b - call ClearSprites - pop af - ld [wd003], a - pop af - ld [wd002], a - ret -; 91d9b - -Function91d9b: ; 91d9b - ld a, [hl] - and $20 - jr nz, .asm_91da6 - ld a, [hl] - and $10 - jr nz, .asm_91db7 - ret - -.asm_91da6 - ld a, [hWY] - cp $90 - ret z - call ClearSprites - ld a, $90 - ld [hWY], a - xor a - call Function91e1e - ret - -.asm_91db7 - ld a, [StatusFlags] - bit 6, a ; hall of fame - ret z - ld a, [hWY] - and a - ret z - call ClearSprites - xor a - ld [hWY], a - ld a, $1 - call Function91e1e - ret -; 91dcd - -Function91dcd: ; 91dcd - ld a, [hVBlankCounter] - ld e, a - and $f - ret nz - ld a, e - and $10 - jr nz, .asm_91ddc - call ClearSprites - ret - -.asm_91ddc - hlcoord 0, 0 - ld de, Sprites - ld bc, $a0 - call CopyBytes - ret -; 91de9 - -Function91de9: ; 91de9 - hlcoord 0, 0 - ld bc, SCREEN_WIDTH - ld a, $7f - call ByteFill - hlcoord 0, 1 - ld a, $6 - ld [hli], a - ld bc, SCREEN_HEIGHT - ld a, $7 - call ByteFill - ld [hl], $17 - call GetPokemonName - hlcoord 2, 0 - call PlaceString - ld h, b - ld l, c - ld de, String_91e16 - call PlaceString - ret -; 91e16 - -String_91e16: - db "'S NEST@" -; 91e1e - -Function91e1e: ; 91e1e - ld [wd003], a - ld e, a - callba Function2a01f - decoord 0, 0 - ld hl, Sprites -.asm_91e2e - ld a, [de] - and a - jr z, .asm_91e4d - push de - ld e, a - push hl - callba GetLandmarkCoords - pop hl - ld a, d - sub $4 - ld [hli], a - ld a, e - sub $4 - ld [hli], a - ld a, $7f - ld [hli], a - xor a - ld [hli], a + call Function910d4 pop de - inc de - jr .asm_91e2e - -.asm_91e4d - ld hl, Sprites - decoord 0, 0 - ld bc, $a0 - call CopyBytes - ret -; 91e5a - -Function91e5a: ; 91e5a - call Function91ea9 - ret c - - ld a, [wd002] - ld e, a - callba GetLandmarkCoords - ld c, e - ld b, d - ld de, Unknown_91e9c - ld hl, Sprites -.asm_91e70 - ld a, [de] - cp $80 - jr z, .asm_91e91 - - add b - ld [hli], a - inc de - - ld a, [de] - add c - ld [hli], a - inc de - - ld a, [de] - add $78 - ld [hli], a - inc de - - push bc - ld c, 0 - ld a, [PlayerGender] - bit 0, a - jr z, .asm_91e8c - inc c -.asm_91e8c - ld a, c - ld [hli], a - pop bc + jr .loop2 +; 91a04 - jr .asm_91e70 - -.asm_91e91 - ld hl, Sprites + $10 - ld bc, SpritesEnd - (Sprites + $10) - xor a - call ByteFill - ret -; 91e9c - -Unknown_91e9c: ; 91e9c - db -8, -8, 0 - db -8, 0, 1 - db 0, -8, 2 - db 0, 0, 3 - db $80 ; terminator -; 91ea9 - -Function91ea9: ; 91ea9 +Function91a04: ; 91a04 ld a, [wd002] - cp FAST_SHIP - jr z, .johto cp KANTO_LANDMARK - jr c, .johto + jr nc, .kanto + ld e, $0 + jr .okay .kanto - ld a, [wd003] - and a - jr z, .clear - jr .ok - -.johto - ld a, [wd003] - and a - jr nz, .clear + ld e, $1 -.ok - and a - ret - -.clear - ld hl, Sprites - ld bc, SpritesEnd - Sprites - xor a +.okay + callba Function91ae1 + ld a, $7 + ld bc, 6 + hlcoord 1, 0 call ByteFill - scf - ret -; 91ed0 - -Function91ed0: ; 91ed0 - ld a, [wd002] - cp FAST_SHIP - jr z, .asm_91ede - callba GetPlayerIcon - ret - -.asm_91ede - ld de, FastShipGFX - ld b, BANK(FastShipGFX) - ret -; 91ee4 - -TownMapBGUpdate: ; 91ee4 -; Update BG Map tiles and attributes - -; BG Map address - ld a, l - ld [hBGMapAddress], a - ld a, h - ld [hBGMapAddress + 1], a - -; Only update palettes on CGB - ld a, [hCGB] - and a - jr z, .tiles - -; BG Map mode 2 (palettes) - ld a, 2 - ld [hBGMapMode], a - -; The BG Map is updated in thirds, so we wait -; 3 frames to update the whole screen's palettes. - ld c, 3 - call DelayFrames - -.tiles -; Update BG Map tiles - call WaitBGMap - -; Turn off BG Map update - xor a - ld [hBGMapMode], a - ret -; 91eff - -FillJohtoMap: ; 91eff - ld de, JohtoMap - jr FillTownMap - -FillKantoMap: ; 91f04 - ld de, KantoMap - -FillTownMap: ; 91f07 - hlcoord 0, 0 -.loop - ld a, [de] - cp $ff - ret z - ld a, [de] - ld [hli], a - inc de - jr .loop -; 91f13 - -TownMapPals: ; 91f13 -; Assign palettes based on tile ids - hlcoord 0, 0 - decoord 0, 0, AttrMap - ld bc, 360 -.loop -; Current tile - ld a, [hli] - push hl - -; HP/borders use palette 0 - cp $60 - jr nc, .pal0 - -; The palette data is condensed to nybbles, -; least-significant first. - ld hl, TownMapPalMap - srl a - jr c, .odd - -; Even-numbered tile ids take the bottom nybble... - add l - ld l, a - ld a, h - adc 0 - ld h, a - ld a, [hl] - and %111 - jr .update - -.odd -; ...and odd ids take the top. - add l - ld l, a - ld a, h - adc 0 - ld h, a - ld a, [hl] - swap a - and %111 - jr .update - -.pal0 - xor a - -.update - pop hl - ld [de], a - inc de - dec bc - ld a, b - or c - jr nz, .loop - ret - -TownMapPalMap: - db $11, $21, $22, $00, $11, $13, $54, $54, $11, $21, $22, $00 - db $11, $10, $01, $00, $11, $21, $22, $00, $00, $00, $00, $00 - db $00, $00, $44, $04, $00, $00, $00, $00, $33, $33, $33, $33 - db $33, $33, $33, $03, $33, $33, $33, $33, $00, $00, $00, $00 -; 91f7b - -TownMapMon: ; 91f7b -; Draw the FlyMon icon at town map location in - -; Get FlyMon species - ld a, [CurPartyMon] - ld hl, PartySpecies - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - ld [wd265], a - -; Get FlyMon icon - ld e, 8 ; starting tile in VRAM - callba GetSpeciesIcon - -; Animation/palette - ld de, 0 - ld a, $0 - call _InitSpriteAnimStruct - - ld hl, 3 - add hl, bc - ld [hl], 8 - ld hl, 2 - add hl, bc - ld [hl], 0 - ret -; 91fa6 - -TownMapPlayerIcon: ; 91fa6 -; Draw the player icon at town map location in a - push af - - callba GetPlayerIcon - -; Standing icon - ld hl, VTiles0 tile $10 - ld c, 4 ; # tiles - call Request2bpp - -; Walking icon - ld hl, $c0 - add hl, de - ld d, h - ld e, l - ld hl, VTiles0 tile $14 - ld c, 4 ; # tiles - ld a, BANK(ChrisSpriteGFX) ; does nothing - call Request2bpp - -; Animation/palette - ld de, 0 - ld b, $0a ; Male - ld a, [PlayerGender] - bit 0, a - jr z, .asm_91fd3 - ld b, $1e ; Female -.asm_91fd3 - ld a, b - call _InitSpriteAnimStruct - - ld hl, $3 - add hl, bc - ld [hl], $10 - - pop af - ld e, a - push bc - callba GetLandmarkCoords - pop bc - - ld hl, 4 - add hl, bc - ld [hl], e - ld hl, 5 - add hl, bc - ld [hl], d - ret -; 0x91ff2 - -Function91ff2: ; 91ff2 - ld hl, TownMapGFX - ld de, VTiles2 - lb bc, BANK(TownMapGFX), $30 - call DecompressRequest2bpp - ret -; 91fff - - -JohtoMap: ; 91fff -INCBIN "gfx/misc/johto.bin" -; 92168 - -KantoMap: ; 92168 -INCBIN "gfx/misc/kanto.bin" -; 922d1 - - -GFX_922d1: ; 922d1 -INCBIN "gfx/unknown/0922d1.2bpp" -GFX_922e1: ; 922e1 -INCBIN "gfx/unknown/0922e1.2bpp" -GFX_92301: ; 92301 -INCBIN "gfx/unknown/092301.2bpp" -Function92311: ; unreferenced - xor a - ld [wd002], a - call ClearBGPalettes - call ClearTileMap - call ClearSprites - ld hl, hInMenu - ld a, [hl] - push af - ld [hl], $1 - xor a - ld [hBGMapMode], a - callba Function8cf53 - call Function91ff2 - ld de, GFX_922e1 - ld hl, VTiles2 tile $30 - lb bc, BANK(GFX_922e1), 6 - call Request1bpp - call FillKantoMap - call TownMapBubble - call TownMapPals - ld hl, VBGMap1 - call TownMapBGUpdate - call FillJohtoMap - call TownMapBubble - call TownMapPals - ld hl, VBGMap0 - call TownMapBGUpdate - call TownMapMon - ld a, c - ld [wd003], a - ld a, b - ld [wd004], a - ld b, SCGB_02 - call GetSGBLayout - call SetPalettes -.loop - call JoyTextDelay - ld hl, hJoyPressed - ld a, [hl] - and B_BUTTON - jr nz, .pressedB - ld a, [hl] - and A_BUTTON - jr nz, .pressedA - call Function923b8 - call GetMapCursorCoordinates - callba Function8cf69 - call DelayFrame - jr .loop - -.pressedB - ld a, -1 - jr .asm_9239f - -.pressedA - ld a, [wd002] - ld l, a - ld h, 0 - add hl, hl - ld de, Flypoints + 1 - add hl, de - ld a, [hl] - -.asm_9239f - ld [wd002], a - pop af - ld [hInMenu], a - call ClearBGPalettes - ld a, $90 - ld [hWY], a - xor a - ld [hBGMapAddress], a - ld a, VBGMap0 / $100 - ld [hBGMapAddress + 1], a - ld a, [wd002] - ld e, a - ret -; 923b8 - -Function923b8: ; 923b8 - ld hl, hJoyLast - ld a, [hl] - and D_DOWN | D_RIGHT - jr nz, .asm_923c6 - ld a, [hl] - and D_UP | D_LEFT - jr nz, .asm_923d3 - ret - -.asm_923c6 - ld hl, wd002 - ld a, [hl] - cp FLY_INDIGO - jr c, .asm_923d0 - ld [hl], -1 -.asm_923d0 - inc [hl] - jr .asm_923dd - -.asm_923d3 - ld hl, wd002 - ld a, [hl] - and a - jr nz, .asm_923dc - ld [hl], FLY_INDIGO + 1 -.asm_923dc - dec [hl] - -.asm_923dd - ld a, [wd002] - cp KANTO_FLYPOINT - jr c, .johto - - call FillKantoMap - xor a - ld b, $9c - jr .asm_923f3 - -.johto - call FillJohtoMap - ld a, $90 - ld b, $98 - -.asm_923f3 - ld [hWY], a - ld a, b - ld [hBGMapAddress + 1], a - call TownMapBubble - call WaitBGMap - xor a - ld [hBGMapMode], a + ld [hl], $6 + hlcoord 7, 0 + ld [hl], $17 + hlcoord 7, 1 + ld [hl], $16 + hlcoord 7, 2 + ld [hl], $26 + ld a, $7 + ld bc, NAME_LENGTH + hlcoord 8, 2 + call ByteFill + hlcoord 19, 2 + ld [hl], $17 + ld a, [wd003] + call Function910b4 + callba TownMapPals ret -; 92402 +; 91a53 -- cgit v1.2.3 From 042fc4bfe5f55df87712d33b6f832a591b136f1a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 16 Nov 2015 21:46:36 -0500 Subject: Split up some more banks in main.asm --- engine/money.asm | 209 +++++++++++++ engine/pokecenter_pc.asm | 705 +++++++++++++++++++++++++++++++++++++++++++ engine/timeset.asm | 771 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1685 insertions(+) create mode 100755 engine/money.asm create mode 100755 engine/pokecenter_pc.asm create mode 100755 engine/timeset.asm (limited to 'engine') diff --git a/engine/money.asm b/engine/money.asm new file mode 100755 index 000000000..5935a23e7 --- /dev/null +++ b/engine/money.asm @@ -0,0 +1,209 @@ +GiveMoney:: ; 15fd7 + ld a, $3 + call AddMoney + ld bc, MaxMoney + ld a, $3 + call CompareMoney + jr z, .asm_15ff5 + jr c, .asm_15ff5 + ld hl, MaxMoney + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + scf + ret + +.asm_15ff5 + and a + ret +; 15ff7 + +MaxMoney: ; 15ff7 + dt 999999 +; 15ffa + + +TakeMoney:: ; 15ffa + ld a, 3 + call SubtractMoney + jr nc, .asm_16009 + xor a + ld [de], a + inc de + ld [de], a + inc de + ld [de], a + scf + ret + +.asm_16009 + and a + ret +; 1600b + +CompareMoney:: ; 1600b + ld a, $3 +CompareFunds: ; 1600d + push hl + push de + push bc + ld h, b + ld l, c + ld c, $0 + ld b, a +.loop1 + dec a + jr z, .done + inc de + inc hl + jr .loop1 + +.done + and a +.loop2 + ld a, [de] + sbc [hl] + jr z, .okay + inc c + +.okay + dec de + dec hl + dec b + jr nz, .loop2 + jr c, .set_carry + ld a, c + and a + jr .skip_carry + +.set_carry + ld a, $1 + and a + scf + +.skip_carry + pop bc + pop de + pop hl + ret +; 16035 + +SubtractMoney: ; 16035 + ld a, 3 +SubtractFunds: ; 16037 + push hl + push de + push bc + ld h, b + ld l, c + ld b, a + ld c, 0 +.loop + dec a + jr z, .done + inc de + inc hl + jr .loop + +.done + and a +.loop2 + ld a, [de] + sbc [hl] + ld [de], a + dec de + dec hl + dec b + jr nz, .loop2 + pop bc + pop de + pop hl + ret +; 16053 + +AddMoney: ; 16053 + ld a, $3 +AddFunds: ; 16055 + push hl + push de + push bc + ld h, b + ld l, c + ld b, a +.loop1 + dec a + jr z, .done + inc de + inc hl + jr .loop1 + +.done + and a +.loop2 + ld a, [de] + adc [hl] + ld [de], a + dec de + dec hl + dec b + jr nz, .loop2 + pop bc + pop de + pop hl + ret +; 1606f + +GiveCoins:: ; 1606f + ld a, 2 + ld de, Coins + call AddFunds + ld a, 2 + ld bc, .maxcoins + call CompareFunds + jr c, .not_maxed + ld hl, .maxcoins + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + scf + ret + +.not_maxed + and a + ret +; 1608d + +.maxcoins: ; 1608d + bigdw 9999 +; 1608f + + +TakeCoins:: ; 1608f + ld a, 2 + ld de, Coins + call SubtractFunds + jr nc, .asm_1609f + xor a + ld [de], a + inc de + ld [de], a + scf + ret + +.asm_1609f + and a + ret +; 160a1 + +CheckCoins:: ; 160a1 + ld a, $2 + ld de, Coins + jp CompareFunds +; 160a9 diff --git a/engine/pokecenter_pc.asm b/engine/pokecenter_pc.asm new file mode 100755 index 000000000..ee37edca5 --- /dev/null +++ b/engine/pokecenter_pc.asm @@ -0,0 +1,705 @@ +PokemonCenterPC: ; 1559a + call PC_CheckPartyForPokemon + ret c + call PC_PlayBootSound + ld hl, UnknownText_0x15a27 + call PC_DisplayText + ld hl, UnknownText_0x15a2c + call PC_DisplayTextWaitMenu + ld hl, .TopMenu + call LoadMenuDataHeader +.loop + xor a + ld [hBGMapMode], a + call .ChooseWhichPCListToUse + ld [wcf76], a + call DoNthMenu + jr c, .shutdown + ld a, [MenuSelection] + ld hl, .JumpTable + call MenuJumptable + jr nc, .loop + +.shutdown + call PC_PlayShutdownSound + call ExitMenu + call WriteBackup + ret +; 155d6 + +.TopMenu: ; 0x155d6 + db $48 ; flags + db 00, 00 ; start coords + db 12, 15 ; end coords + dw .MenuData2 + db 1 ; default option +; 0x155de + +.MenuData2: ; 0x155de + db $a0 ; flags + db 0 ; items + dw .WhichPC + dw PlaceNthMenuStrings + dw .JumpTable +; 0x155e6 + +.JumpTable: ; 155e6 + dw PlayersPC, .String_PlayersPC + dw BillsPC, .String_BillsPC + dw OaksPC, .String_OaksPC + dw HallOfFamePC, .String_HallOfFame + dw TurnOffPC, .String_TurnOff +; 155fa + +.String_PlayersPC: db "'s PC@" +.String_BillsPC: db "BILL's PC@" +.String_OaksPC: db "PROF.OAK's PC@" +.String_HallOfFame: db "HALL OF FAME@" +.String_TurnOff: db "TURN OFF@" +; 1562c + +.WhichPC: ; 1562c + ; before pokedex + db 3 ; items + db 1, 0, 4 ; bill's, player's, turn off + db -1 + + ; before Hall Of Fame + db 4 ; items + db 1, 0, 2, 4 ; bill's, player's, oak's, turn off + db -1 + + ; postgame + db 5 ; items + db 1, 0, 2, 3, 4 ; bill's, player's, oak's, hall of fame, turn off + db -1 +; 1563e + +.ChooseWhichPCListToUse: ; 1563e + call CheckReceivedDex + jr nz, .got_dex + ld a, $0 + ret + +.got_dex + ld a, [wHallOfFameCount] + and a + ld a, $1 + ret z + ld a, $2 + ret +; 15650 + +PC_CheckPartyForPokemon: ; 15650 + ld a, [PartyCount] + and a + ret nz + ld de, SFX_CHOOSE_PC_OPTION + call PlaySFX + ld hl, UnknownText_0x15663 + call PC_DisplayText + scf + ret +; 15663 + +UnknownText_0x15663: ; 0x15663 + ; Bzzzzt! You must have a #MON to use this! + text_jump UnknownText_0x1c1328 + db "@" +; 0x15668 + +BillsPC: ; 15668 + call PC_PlayChoosePCSound + ld hl, UnknownText_0x15a31 + call PC_DisplayText + callba _BillsPC + and a + ret +; 15679 (5:5679) + +PlayersPC: ; 15679 + call PC_PlayChoosePCSound + ld hl, UnknownText_0x15a36 + call PC_DisplayText + ld b, $0 + call _PlayersPC + and a + ret +; 15689 + +OaksPC: ; 15689 + call PC_PlayChoosePCSound + ld hl, UnknownText_0x15a3b + call PC_DisplayText + callba ProfOaksPC + and a + ret +; 1569a + +HallOfFamePC: ; 1569a + call PC_PlayChoosePCSound + call FadeToMenu + callba _HallOfFamePC + call Function2b3c + and a + ret +; 156ab + +TurnOffPC: ; 156ab + ld hl, UnknownText_0x15a40 + call PrintText + scf + ret +; 156b3 + +PC_PlayBootSound: ; 156b3 + ld de, SFX_BOOT_PC + jr PC_WaitPlaySFX + +PC_PlayShutdownSound: ; 156b8 + ld de, SFX_SHUT_DOWN_PC + call PC_WaitPlaySFX + call WaitSFX + ret + +PC_PlayChoosePCSound: ; 156c2 + ld de, SFX_CHOOSE_PC_OPTION + jr PC_WaitPlaySFX + +Function156c7: ; 156c7 + ld de, SFX_SWITCH_POKEMON + call PC_WaitPlaySFX + ld de, SFX_SWITCH_POKEMON + +PC_WaitPlaySFX: ; 156d0 + push de + call WaitSFX + pop de + call PlaySFX + ret +; 156d9 + +Function156d9: ; 156d9 + call PC_PlayBootSound + ld hl, UnknownText_0x156ff + call PC_DisplayText + ld b, $1 + call _PlayersPC + and a + jr nz, .asm_156f9 + call OverworldTextModeSwitch + call Function321c + call UpdateSprites + call PC_PlayShutdownSound + ld c, $0 + ret + +.asm_156f9 + call ClearBGPalettes + ld c, $1 + ret +; 156ff + +UnknownText_0x156ff: ; 0x156ff + ; turned on the PC. + text_jump UnknownText_0x1c1353 + db "@" +; 0x15704 + +_PlayersPC: ; 15704 + ld a, b + ld [wcf76], a + ld hl, UnknownText_0x157cc + call PC_DisplayTextWaitMenu + call Function15715 + call ExitMenu + ret +; 15715 + +Function15715: ; 15715 + xor a + ld [wd0d7], a + ld [wd0dd], a + ld hl, KrissPCMenuData + call LoadMenuDataHeader +.asm_15722 + call UpdateTimePals + call DoNthMenu + jr c, .asm_15731 + call MenuJumptable + jr nc, .asm_15722 + jr .asm_15732 + +.asm_15731 + xor a + +.asm_15732 + call ExitMenu + ret +; 15736 + +KrissPCMenuData: ; 0x15736 + db %01000000 + db 0, 0 ; top left corner coords (y, x) + db 12, 15 ; bottom right corner coords (y, x) + dw .KrissPCMenuData2 + db 1 ; default selected option + +.KrissPCMenuData2 + db %10100000 ; bit7 + db 0 ; # items? + dw .KrissPCMenuList1 + dw PlaceNthMenuStrings + dw .KrissPCMenuPointers + +.KrissPCMenuPointers ; 0x15746 + dw KrisWithdrawItemMenu, .WithdrawItem + dw KrisDepositItemMenu, .DepositItem + dw KrisTossItemMenu, .TossItem + dw KrisMailBoxMenu, .MailBox + dw KrisDecorationMenu, .Decoration + dw KrisLogOffMenu, .LogOff + dw KrisLogOffMenu, .TurnOff + +.WithdrawItem db "WITHDRAW ITEM@" +.DepositItem db "DEPOSIT ITEM@" +.TossItem db "TOSS ITEM@" +.MailBox db "MAIL BOX@" +.Decoration db "DECORATION@" +.TurnOff db "TURN OFF@" +.LogOff db "LOG OFF@" + +WITHDRAW_ITEM EQU 0 +DEPOSIT_ITEM EQU 1 +TOSS_ITEM EQU 2 +MAIL_BOX EQU 3 +DECORATION EQU 4 +TURN_OFF EQU 5 +LOG_OFF EQU 6 + +.KrissPCMenuList1 + db 5 + db WITHDRAW_ITEM + db DEPOSIT_ITEM + db TOSS_ITEM + db MAIL_BOX + db TURN_OFF + db -1 + +.KrissPCMenuList2 + db 6 + db WITHDRAW_ITEM + db DEPOSIT_ITEM + db TOSS_ITEM + db MAIL_BOX + db DECORATION + db LOG_OFF + db -1 + +PC_DisplayTextWaitMenu: ; 157bb + ld a, [Options] + push af + set NO_TEXT_SCROLL, a + ld [Options], a + call MenuTextBox + pop af + ld [Options], a + ret +; 157cc + +UnknownText_0x157cc: ; 0x157cc + ; What do you want to do? + text_jump UnknownText_0x1c1368 + db "@" +; 0x157d1 + +KrisWithdrawItemMenu: ; 0x157d1 + call LoadStandardMenuDataHeader + callba ClearPCItemScreen +.asm_157da + call Function15985 + jr c, .asm_157e4 + call Function157e9 + jr .asm_157da + +.asm_157e4 + call Function2b3c + xor a + ret +; 0x157e9 + +Function157e9: ; 0x157e9 + ; check if the item has a quantity + callba _CheckTossableItem + ld a, [wItemAttributeParamBuffer] + and a + jr z, .askquantity + + ; items without quantity are always ×1 + ld a, 1 + ld [wItemQuantityChangeBuffer], a + jr .withdraw + +.askquantity + ld hl, .HowManyText + call MenuTextBox + callba Function24fbf + call ExitMenu + call ExitMenu + jr c, .done + +.withdraw + ld a, [wItemQuantityChangeBuffer] + ld [Buffer1], a ; quantity + ld a, [wd107] + ld [Buffer2], a + ld hl, NumItems + call ReceiveItem + jr nc, .PackFull + ld a, [Buffer1] + ld [wItemQuantityChangeBuffer], a + ld a, [Buffer2] + ld [wd107], a + ld hl, PCItems + call TossItem + predef PartyMonItemName + ld hl, .WithdrewText + call MenuTextBox + xor a + ld [hBGMapMode], a + call ExitMenu + ret + +.PackFull + ld hl, .NoRoomText + call MenuTextBoxBackup + ret + +.done + ret +; 0x15850 + +.HowManyText ; 0x15850 + text_jump _KrissPCHowManyWithdrawText + db "@" + +.WithdrewText ; 0x15855 + text_jump _KrissPCWithdrewItemsText + db "@" + +.NoRoomText ; 0x1585a + text_jump _KrissPCNoRoomWithdrawText + db "@" + + +KrisTossItemMenu: ; 0x1585f + call LoadStandardMenuDataHeader + callba ClearPCItemScreen +.asm_15868 + call Function15985 + jr c, .asm_15878 + ld de, PCItems + callba Function129f4 + jr .asm_15868 + +.asm_15878 + call Function2b3c + xor a + ret +; 0x1587d + + +KrisDecorationMenu: ; 0x1587d + callba _KrisDecorationMenu + ld a, c + and a + ret z + scf + ret +; 0x15888 + + +KrisLogOffMenu: ; 0x15888 + xor a + scf + ret +; 0x1588b + + +KrisDepositItemMenu: ; 0x1588b + call Function158b8 + jr c, .asm_158b6 + call DisableSpriteUpdates + call LoadStandardMenuDataHeader + callba Function106a5 +.asm_1589c + callba Function106be + ld a, [wcf66] + and a + jr z, .asm_158b3 + call Function158cc + callba CheckRegisteredItem + jr .asm_1589c + +.asm_158b3 + call Function2b3c + +.asm_158b6 + xor a + ret +; 0x158b8 + +Function158b8: ; 0x158b8 + callba Function129d5 + ret nc + ld hl, UnknownText_0x158c7 + call MenuTextBoxBackup + scf + ret +; 0x158c7 + +UnknownText_0x158c7: ; 0x158c7 + ; No items here! + text_jump UnknownText_0x1c13df + db "@" +; 0x158cc + + +Function158cc: ; 0x158cc + ld a, [wc2ce] + push af + ld a, $0 + ld [wc2ce], a + callba CheckItemMenu + ld a, [wItemAttributeParamBuffer] + ld hl, .jumptable + rst JumpTable + pop af + ld [wc2ce], a + ret +; 0x158e7 + +.jumptable: ; 0x158e7 + dw .tossable + dw .no_toss + dw .no_toss + dw .no_toss + dw .tossable + dw .tossable + dw .tossable + +.no_toss: + ret + +.tossable: + ld a, [Buffer1] + push af + ld a, [Buffer2] + push af + call Function1590a + pop af + ld [Buffer2], a + pop af + ld [Buffer1], a + ret +; 0x1590a + +Function1590a: ; 0x1590a + callba _CheckTossableItem + ld a, [wItemAttributeParamBuffer] + and a + jr z, .asm_1591d + ld a, $1 + ld [wItemQuantityChangeBuffer], a + jr .asm_15933 + +.asm_1591d + ld hl, .HowManyText + call MenuTextBox + callba Function24fbf + push af + call ExitMenu + call ExitMenu + pop af + jr c, .asm_1596c + +.asm_15933 + ld a, [wItemQuantityChangeBuffer] + ld [Buffer1], a + ld a, [wd107] + ld [Buffer2], a + ld hl, PCItems + call ReceiveItem + jr nc, .asm_15965 + ld a, [Buffer1] + ld [wItemQuantityChangeBuffer], a + ld a, [Buffer2] + ld [wd107], a + ld hl, NumItems + call TossItem + predef PartyMonItemName + ld hl, .DepositText + call PrintText + ret + +.asm_15965 + ld hl, .NoRoomText + call PrintText + ret + +.asm_1596c + and a + ret +; 0x1596e + + +.HowManyText ; 0x1596e + text_jump _KrissPCHowManyDepositText + db "@" + +.DepositText ; 0x15973 + text_jump _KrissPCDepositItemsText + db "@" + +.NoRoomText ; 0x15978 + text_jump _KrissPCNoRoomDepositText + db "@" + + +KrisMailBoxMenu: ; 0x1597d + callba _KrisMailBoxMenu + xor a + ret +; 0x15985 + + +Function15985: ; 0x15985 + xor a + ld [wd0e3], a +.asm_15989 + ld a, [wc2ce] + push af + ld a, $0 + ld [wc2ce], a + ld hl, MenuData15a08 + call CopyMenuDataHeader + hlcoord 0, 0 + ld b, $a + ld c, $12 + call TextBox + ld a, [wd0d7] + ld [wMenuCursorBuffer], a + ld a, [wd0dd] + ld [wd0e4], a + call HandleScrollingMenu + ld a, [wd0e4] + ld [wd0dd], a + ld a, [MenuSelection2] + ld [wd0d7], a + pop af + ld [wc2ce], a + ld a, [wd0e3] + and a + jr nz, .asm_159d8 + ld a, [wcf73] + cp $2 + jr z, .asm_15a06 + cp $1 + jr z, .asm_159fb + cp $4 + jr z, .asm_159f2 + jr .asm_159f8 + +.asm_159d8 + ld a, [wcf73] + cp $2 + jr z, .asm_159e9 + cp $1 + jr z, .asm_159ef + cp $4 + jr z, .asm_159ef + jr .asm_159f8 + +.asm_159e9 + xor a + ld [wd0e3], a + jr .asm_159f8 + +.asm_159ef + call Function156c7 + +.asm_159f2 + callba Function2490c + +.asm_159f8 + jp .asm_15989 + +.asm_159fb + callba Function24706 + call Function1bee + and a + ret + +.asm_15a06 + scf + ret +; 0x15a08 + +MenuData15a08: ; 0x15a08 + db %01000000 + db 1, 4 ; start coords + db 10, 18 ; end coords + dw .MenuData2 + db 1 ; default option + +.MenuData2 + db %10110000 + db 4, 8 ; rows/cols? + db 2 ; horizontal spacing? + dbw 0, PCItems + dba PlaceMenuItemName + dba PlaceMenuItemQuantity + dba Function244c3 + +PC_DisplayText: ; 15a20 + call MenuTextBox + call ExitMenu + ret +; 15a27 + + +UnknownText_0x15a27: ; 0x15a27 + ; turned on the PC. + text_jump UnknownText_0x1c144d + db "@" +; 0x15a2c + +UnknownText_0x15a2c: ; 0x15a2c + ; Access whose PC? + text_jump UnknownText_0x1c1462 + db "@" +; 0x15a31 + +UnknownText_0x15a31: ; 0x15a31 + ; BILL's PC accessed. #MON Storage System opened. + text_jump UnknownText_0x1c1474 + db "@" +; 0x15a36 + +UnknownText_0x15a36: ; 0x15a36 + ; Accessed own PC. Item Storage System opened. + text_jump UnknownText_0x1c14a4 + db "@" +; 0x15a3b + +UnknownText_0x15a3b: ; 0x15a3b + ; PROF.OAK's PC accessed. #DEX Rating System opened. + text_jump UnknownText_0x1c14d2 + db "@" +; 0x15a40 + +UnknownText_0x15a40: ; 0x15a40 + ; … Link closed… + text_jump UnknownText_0x1c1505 + db "@" +; 0x15a45 diff --git a/engine/timeset.asm b/engine/timeset.asm new file mode 100755 index 000000000..00cdf9cac --- /dev/null +++ b/engine/timeset.asm @@ -0,0 +1,771 @@ +InitClock: ; 90672 (24:4672) +; Ask the player to set the time. + ld a, [hInMenu] + push af + ld a, $1 + ld [hInMenu], a + + ld a, $0 + ld [wc2ce], a + ld a, $10 + ld [MusicFade], a + ld a, MUSIC_NONE % $100 + ld [MusicFadeIDLo], a + ld a, MUSIC_NONE / $100 + ld [MusicFadeIDHi], a + ld c, 8 + call DelayFrames + call Function4dd + call ClearTileMap + call ClearSprites + ld b, SCGB_08 + call GetSGBLayout + xor a + ld [hBGMapMode], a + call LoadStandardFont + ld de, GFX_908fb + ld hl, VTiles2 tile $00 + lb bc, BANK(GFX_908fb), 1 + call Request1bpp + ld de, GFX_90903 + ld hl, VTiles2 tile $01 + lb bc, BANK(GFX_90903), 1 + call Request1bpp + ld de, GFX_9090b + ld hl, VTiles2 tile $02 + lb bc, BANK(GFX_9090b), 1 + call Request1bpp + call .ClearScreen + call WaitBGMap + call Function4a3 + ld hl, UnknownText_0x90874 + call PrintText + ld hl, wc608 + ld bc, 50 + xor a + call ByteFill + ld a, $a + ld [wInitHourBuffer], a + +.loop + ld hl, UnknownText_0x90879 + call PrintText + hlcoord 3, 7 + ld b, 2 + ld c, 15 + call TextBox + hlcoord 11, 7 + ld [hl], $1 + hlcoord 11, 10 + ld [hl], $2 + hlcoord 4, 9 + call DisplayHourOClock + ld c, 10 + call DelayFrames + +.SetHourLoop + call JoyTextDelay + call SetHour + jr nc, .SetHourLoop + + ld a, [wInitHourBuffer] + ld [StringBuffer2 + 1], a + call .ClearScreen + ld hl, UnknownText_0x90886 + call PrintText + call YesNoBox + jr nc, .HourIsSet + call .ClearScreen + jr .loop + +.HourIsSet + ld hl, UnknownText_0x9089a + call PrintText + hlcoord 11, 7 + lb bc, 2, 7 + call TextBox + hlcoord 15, 7 + ld [hl], $1 + hlcoord 15, 10 + ld [hl], $2 + hlcoord 12, 9 + call DisplayMinutesWithMinString + ld c, 10 + call DelayFrames + +.SetMinutesLoop + call JoyTextDelay + call SetMinutes + jr nc, .SetMinutesLoop + + ld a, [BattleMonNick + 5] + ld [StringBuffer2 + 2], a + call .ClearScreen + ld hl, UnknownText_0x908a4 + call PrintText + call YesNoBox + jr nc, .MinutesAreSet + call .ClearScreen + jr .HourIsSet + +.MinutesAreSet + call Function658 + ld hl, OakText_ResponseToSetTime + call PrintText + call WaitPressAorB_BlinkCursor + pop af + ld [hInMenu], a + ret + +.ClearScreen: ; 90783 (24:4783) + xor a + ld [hBGMapMode], a + hlcoord 0, 0 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + xor a + call ByteFill + ld a, $1 + ld [hBGMapMode], a + ret + +SetHour: ; 90795 (24:4795) + ld a, [hJoyPressed] + and A_BUTTON + jr nz, .Confirm + + ld hl, hJoyLast + ld a, [hl] + and D_UP + jr nz, .up + ld a, [hl] + and D_DOWN + jr nz, .down + call DelayFrame + and a + ret + +.down + ld hl, wInitHourBuffer + ld a, [hl] + and a + jr nz, .DecreaseThroughMidnight + ld a, 23 + 1 +.DecreaseThroughMidnight + dec a + ld [hl], a + jr .okay + +.up + ld hl, wInitHourBuffer + ld a, [hl] + cp 23 + jr c, .AdvanceThroughMidnight + ld a, -1 +.AdvanceThroughMidnight + inc a + ld [hl], a + +.okay + hlcoord 4, 9 + ld a, " " + ld bc, 15 + call ByteFill + hlcoord 4, 9 + call DisplayHourOClock + call WaitBGMap + and a + ret + +.Confirm + scf + ret + +DisplayHourOClock: ; 907de (24:47de) + push hl + ld a, [wInitHourBuffer] + ld c, a + ld e, l + ld d, h + call PrintHour + inc hl + ld de, String_oclock + call PlaceString + pop hl + ret +; 907f1 (24:47f1) + +Function907f1: ; 907f1 + ld h, d + ld l, e + push hl + call DisplayHourOClock + pop de +rept 2 + inc de +endr + ld a, $9c + ld [de], a + inc de + push de + ld hl, $3 + add hl, de + ld a, [de] + inc de + ld [hli], a + ld a, [de] + ld [hl], a + pop hl + call DisplayMinutesWithMinString +rept 3 + inc hl +endr + ret +; 90810 + +SetMinutes: ; 90810 (24:4810) + ld a, [hJoyPressed] + and A_BUTTON + jr nz, .asm_90857 + ld hl, hJoyLast + ld a, [hl] + and D_UP + jr nz, .asm_90835 + ld a, [hl] + and D_DOWN + jr nz, .asm_90828 + call DelayFrame + and a + ret +.asm_90828 + ld hl, BattleMonNick + 5 + ld a, [hl] + and a + jr nz, .asm_90831 + ld a, 59 + 1 +.asm_90831 + dec a + ld [hl], a + jr .asm_90841 +.asm_90835 + ld hl, BattleMonNick + 5 + ld a, [hl] + cp 59 + jr c, .asm_9083f + ld a, -1 +.asm_9083f + inc a + ld [hl], a +.asm_90841 + hlcoord 12, 9 + ld a, " " + ld bc, 7 + call ByteFill + hlcoord 12, 9 + call DisplayMinutesWithMinString + call WaitBGMap + and a + ret +.asm_90857 + scf + ret + +DisplayMinutesWithMinString: ; 90859 (24:4859) + ld de, BattleMonNick + 5 + call PrintTwoDigitNumberRightAlign + inc hl + ld de, String_min + call PlaceString + ret + +PrintTwoDigitNumberRightAlign: ; 90867 (24:4867) + push hl + ld a, " " + ld [hli], a + ld [hl], a + pop hl + lb bc, PRINTNUM_RIGHTALIGN | 1, 2 + call PrintNum + ret +; 90874 (24:4874) + +UnknownText_0x90874: ; 0x90874 + ; Zzz… Hm? Wha…? You woke me up! Will you check the clock for me? + text_jump UnknownText_0x1bc29c + db "@" +; 0x90879 + +UnknownText_0x90879: ; 0x90879 + ; What time is it? + text_jump UnknownText_0x1bc2eb + db "@" +; 0x9087e + +String_oclock: + db "o'clock@" +; 90886 + +UnknownText_0x90886: ; 0x90886 + ; What?@ @ + text_jump UnknownText_0x1bc2fd + start_asm + hlcoord 1, 16 + call DisplayHourOClock + ld hl, UnknownText_0x90895 + ret +; 90895 (24:4895) + +UnknownText_0x90895: ; 0x90895 + ; ? + text_jump UnknownText_0x1bc305 + db "@" +; 0x9089a + +UnknownText_0x9089a: ; 0x9089a + ; How many minutes? + text_jump UnknownText_0x1bc308 + db "@" +; 0x9089f + +String_min: + db "min.@" +; 908a4 + +UnknownText_0x908a4: ; 0x908a4 + ; Whoa!@ @ + text_jump UnknownText_0x1bc31b + start_asm +; 0x908a9 + hlcoord 7, 14 + call DisplayMinutesWithMinString + ld hl, UnknownText_0x908b3 + ret +; 908b3 (24:48b3) + +UnknownText_0x908b3: ; 0x908b3 + ; ? + text_jump UnknownText_0x1bc323 + db "@" +; 0x908b8 + +OakText_ResponseToSetTime: ; 0x908b8 + start_asm + decoord 1, 14 + ld a, [wInitHourBuffer] + ld c, a + call PrintHour + ld [hl], ":" + inc hl + ld de, BattleMonNick + 5 + lb bc, PRINTNUM_LEADINGZEROS | 1, 2 + call PrintNum + ld b, h + ld c, l + ld a, [wInitHourBuffer] + cp 4 + jr c, .NITE + cp 11 + jr c, .MORN + cp 18 + jr c, .DAY +.NITE + ld hl, .sodark + ret +.MORN + ld hl, .overslept + ret +.DAY + ld hl, .yikes + ret +; 908ec (24:48ec) + +.overslept: ; 0x908ec + ; ! I overslept! + text_jump UnknownText_0x1bc326 + db "@" +; 0x908f1 + +.yikes: ; 0x908f1 + ; ! Yikes! I over- slept! + text_jump UnknownText_0x1bc336 + db "@" +; 0x908f6 + +.sodark: ; 0x908f6 + ; ! No wonder it's so dark! + text_jump UnknownText_0x1bc34f + db "@" +; 0x908fb + +GFX_908fb: ; 908fb +INCBIN "gfx/unknown/0908fb.2bpp" +GFX_90903: ; 90903 +INCBIN "gfx/unknown/090903.2bpp" +GFX_9090b: ; 9090b +INCBIN "gfx/unknown/09090b.2bpp" +; 90913 + +Special_SetDayOfWeek: ; 90913 + ld a, [hInMenu] + push af + ld a, $1 + ld [hInMenu], a + ld de, GFX_90903 + ld hl, VTiles1 tile $6f + lb bc, BANK(GFX_90903), 1 + call Request1bpp + ld de, GFX_9090b + ld hl, VTiles1 tile $75 + lb bc, BANK(GFX_9090b), 1 + call Request1bpp + xor a + ld [wd002], a +.asm_90936 + hlcoord 0, 12 + lb bc, 4, 18 + call TextBox + call LoadStandardMenuDataHeader + ld hl, UnknownText_0x90a3f + call PrintText + hlcoord 9, 3 + ld b, 2 + ld c, 9 + call TextBox + hlcoord 14, 3 + ld [hl], $ef + hlcoord 14, 6 + ld [hl], $f5 + hlcoord 10, 5 + call Function909de + call Function321c + ld c, 10 + call DelayFrames +.asm_9096a + call JoyTextDelay + call Function90993 + jr nc, .asm_9096a + call ExitMenu + call UpdateSprites + ld hl, UnknownText_0x90a44 + call PrintText + call YesNoBox + jr c, .asm_90936 + ld a, [wd002] + ld [StringBuffer2], a + call Function663 + call LoadStandardFont + pop af + ld [hInMenu], a + ret +; 90993 + +Function90993: ; 90993 + ld a, [hJoyPressed] + and A_BUTTON + jr z, .asm_9099b + scf + ret + +.asm_9099b + ld hl, hJoyLast + ld a, [hl] + and D_UP + jr nz, .asm_909ba + ld a, [hl] + and D_DOWN + jr nz, .asm_909ad + call DelayFrame + and a + ret + +.asm_909ad + ld hl, wd002 + ld a, [hl] + and a + jr nz, .asm_909b6 + ld a, 6 + 1 + +.asm_909b6 + dec a + ld [hl], a + jr .asm_909c6 + +.asm_909ba + ld hl, wd002 + ld a, [hl] + cp 6 + jr c, .asm_909c4 + ld a, -1 + +.asm_909c4 + inc a + ld [hl], a + +.asm_909c6 + xor a + ld [hBGMapMode], a + hlcoord 10, 4 + ld b, $2 + ld c, $9 + call ClearBox + hlcoord 10, 5 + call Function909de + call WaitBGMap + and a + ret +; 909de + +Function909de: ; 909de + push hl + ld a, [wd002] + ld e, a + ld d, 0 + ld hl, WeekdaysStrings +rept 2 + add hl, de +endr + ld a, [hli] + ld d, [hl] + ld e, a + pop hl + call PlaceString + ret +; 909f2 + +WeekdaysStrings: ; 909f2 + dw Sunday + dw Monday + dw Tuesday + dw Wednesday + dw Thursday + dw Friday + dw Saturday + dw Sunday + +Sunday: db " SUNDAY@" +Monday: db " MONDAY@" +Tuesday: db " TUESDAY@" +Wednesday: db "WEDNESDAY@" +Thursday: db "THURSDAY@" +Friday: db " FRIDAY@" +Saturday: db "SATURDAY@" + + +UnknownText_0x90a3f: ; 0x90a3f + ; What day is it? + text_jump UnknownText_0x1bc369 + db "@" +; 0x90a44 + +UnknownText_0x90a44: ; 0x90a44 + start_asm + hlcoord 1, 14 + call Function909de + ld hl, UnknownText_0x90a4f + ret +; 90a4f (24:4a4f) + +UnknownText_0x90a4f: ; 0x90a4f + ; , is it? + text_jump UnknownText_0x1bc37a + db "@" +; 0x90a54 + +Special_InitialSetDSTFlag: ; 90a54 + ld a, [wDST] + set 7, a + ld [wDST], a + hlcoord 1, 14 + lb bc, 3, 18 + call ClearBox + ld hl, UnknownText_0x90a6c + call PlaceWholeStringInBoxAtOnce + ret +; 90a6c + +UnknownText_0x90a6c: ; 90a6c + start_asm + call UpdateTime + ld a, [hHours] + ld b, a + ld a, [hMinutes] + ld c, a + decoord 1, 14 + callba PrintHoursMins + ld hl, TextJump_DSTIsThatOK + ret +; 90a83 (24:4a83) + +TextJump_DSTIsThatOK: ; 0x90a83 + ; DST, is that OK? + text_jump Text_DSTIsThatOK + db "@" +; 0x90a88 + +Special_InitialClearDSTFlag: ; 90a88 + ld a, [wDST] + res 7, a + ld [wDST], a + hlcoord 1, 14 + lb bc, 3, 18 + call ClearBox + ld hl, UnknownText_0x90aa0 + call PlaceWholeStringInBoxAtOnce + ret +; 90aa0 + +UnknownText_0x90aa0: ; 90aa0 + start_asm + call UpdateTime + ld a, [hHours] + ld b, a + ld a, [hMinutes] + ld c, a + decoord 1, 14 + callba PrintHoursMins + ld hl, UnknownText_0x90ab7 + ret +; 90ab7 + +UnknownText_0x90ab7: ; 0x90ab7 + ; , is that OK? + text_jump UnknownText_0x1c5ff1 + db "@" +; 0x90abc + +Function90abc: ; 90abc + hlcoord 1, 14 + lb bc, 3, SCREEN_WIDTH - 2 + call ClearBox + ld hl, UnknownText_0x90acc + call PlaceWholeStringInBoxAtOnce + ret +; 90acc + +UnknownText_0x90acc: ; 0x90acc + start_asm + + call UpdateTime + + hlcoord 1, 14 + ld [hl], "R" + inc hl + ld [hl], "T" + inc hl + ld [hl], " " + inc hl + + ld de, hRTCDayLo + call Function90b23 + + hlcoord 1, 16 + ld [hl], "D" + inc hl + ld [hl], "F" + inc hl + ld [hl], " " + inc hl + + ld de, StartDay + call Function90b23 + + ld [hl], " " + inc hl + + ld a, [wDST] + bit 7, a + jr z, .off + + ld [hl], "O" + inc hl + ld [hl], "N" + inc hl + jr .done + +.off + ld [hl], "O" + inc hl + ld [hl], "F" + inc hl + ld [hl], "F" + inc hl + +.done + ld hl, UnknownText_0x90b13 + ret +; 90b13 + +UnknownText_0x90b13: ; 0x90b13 + text "Now on DEBUG…" + prompt +; 0x90b23 + +Function90b23: ; 90b23 + lb bc, 1, 3 + call PrintNum + ld [hl], "." + inc hl + inc de + lb bc, PRINTNUM_LEADINGZEROS | 1, 2 + call PrintNum + ld [hl], ":" + inc hl + inc de + lb bc, PRINTNUM_LEADINGZEROS | 1, 2 + call PrintNum + ret +; 90b3e + +PrintHour: ; 90b3e (24:4b3e) + ld l, e + ld h, d + push bc + call GetTimeOfDayString + call PlaceString + ld l, c + ld h, b + inc hl + pop bc + call AdjustHourForAMorPM + ld [wd265], a + ld de, wd265 + call PrintTwoDigitNumberRightAlign + ret + +GetTimeOfDayString: ; 90b58 (24:4b58) + ld a, c + cp 4 + jr c, .nite + cp 10 + jr c, .morn + cp 18 + jr c, .day +.nite + ld de, .NITE + ret +.morn + ld de, .MORN + ret +.day + ld de, .DAY + ret +; 90b71 (24:4b71) + +.NITE: db "NITE@" +.MORN: db "MORN@" +.DAY: db "DAY@" +; 90b7f + +AdjustHourForAMorPM: +; Convert the hour stored in c (0-23) to a 1-12 value + ld a, c + or a + jr z, .midnight + cp 12 + ret c + ret z + sub 12 + ret + +.midnight + ld a, 12 + ret -- cgit v1.2.3 From 0b8fe4bac31c83a8164567da6d7889a18ab3eb4b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 16 Nov 2015 22:29:54 -0500 Subject: More specials; bank 12 mobile --- engine/diploma.asm | 2 +- engine/main_menu.asm | 1242 ++++++++++++++++++++++++++++++++++++++++++++++ engine/mart.asm | 6 +- engine/pokecenter_pc.asm | 2 +- engine/specials.asm | 36 +- 5 files changed, 1266 insertions(+), 22 deletions(-) create mode 100755 engine/main_menu.asm (limited to 'engine') diff --git a/engine/diploma.asm b/engine/diploma.asm index 7699cf930..d2ca46bb3 100644 --- a/engine/diploma.asm +++ b/engine/diploma.asm @@ -1,5 +1,5 @@ -Function1dd702: ; 1dd702 +_Diploma: ; 1dd702 call Function1dd709 call WaitPressAorB_BlinkCursor ret diff --git a/engine/main_menu.asm b/engine/main_menu.asm new file mode 100755 index 000000000..72c6955b1 --- /dev/null +++ b/engine/main_menu.asm @@ -0,0 +1,1242 @@ +GFX_49c0c: ; 49c0c +INCBIN "gfx/unknown/049c0c.2bpp" +; 49cdc + +MainMenu: ; 49cdc + xor a + ld [wc2d7], a + call Function49ed0 + ld b, SCGB_08 + call GetSGBLayout + call SetPalettes + ld hl, GameTimerPause + res 0, [hl] + call Function49da4 + ld [wcf76], a + call Function49e09 + ld hl, MenuDataHeader_0x49d14 + call LoadMenuDataHeader + call Function49de4 + call WriteBackup + jr c, .quit + call ClearTileMap + ld a, [MenuSelection] + ld hl, Jumptable_49d60 + rst JumpTable + jr MainMenu + +.quit + ret +; 49d14 + +MenuDataHeader_0x49d14: ; 49d14 + db $40 ; flags + db 00, 00 ; start coords + db 07, 16 ; end coords + dw MenuData2_0x49d1c + db 1 ; default option +; 49d1c + +MenuData2_0x49d1c: ; 49d1c + db $80 ; flags + db 0 ; items + dw MainMenuItems + dw Function1f79 + dw MainMenuText +; 49d20 + +MainMenuText: ; 49d24 + db "CONTINUE@" + db "NEW GAME@" + db "OPTION@" + db "MYSTERY GIFT@" + db "MOBILE@" + db "MOBILE STUDIUM@" + +Jumptable_49d60: ; 0x49d60 + dw MainMenu_Continue + dw MainMenu_NewGame + dw MainMenu_Options + dw MainMenu_MysteryGift + dw MainMenu_Mobile + dw MainMenu_MobileStudium +; 0x49d6c + +CONTINUE EQU 0 +NEW_GAME EQU 1 +OPTION EQU 2 +MYSTERY_GIFT EQU 3 +MOBILE EQU 4 +MOBILE_STUDIUM EQU 5 + +MainMenuItems: + +NewGameMenu: ; 0x49d6c + db 2 + db NEW_GAME + db OPTION + db $ff + +ContinueMenu: ; 0x49d70 + db 3 + db CONTINUE + db NEW_GAME + db OPTION + db $ff + +MobileMysteryMenu: ; 0x49d75 + db 5 + db CONTINUE + db NEW_GAME + db OPTION + db MYSTERY_GIFT + db MOBILE + db $ff + +MobileMenu: ; 0x49d7c + db 4 + db CONTINUE + db NEW_GAME + db OPTION + db MOBILE + db $ff + +MobileStudiumMenu: ; 0x49d82 + db 5 + db CONTINUE + db NEW_GAME + db OPTION + db MOBILE + db MOBILE_STUDIUM + db $ff + +MysteryMobileStudiumMenu: ; 0x49d89 + db 6 + db CONTINUE + db NEW_GAME + db OPTION + db MYSTERY_GIFT + db MOBILE + db MOBILE_STUDIUM + db $ff + +MysteryMenu: ; 0x49d91 + db 4 + db CONTINUE + db NEW_GAME + db OPTION + db MYSTERY_GIFT + db $ff + +MysteryStudiumMenu: ; 0x49d97 + db 5 + db CONTINUE + db NEW_GAME + db OPTION + db MYSTERY_GIFT + db MOBILE_STUDIUM + db $ff + +StudiumMenu: ; 0x49d9e + db 4 + db CONTINUE + db NEW_GAME + db OPTION + db MOBILE_STUDIUM + db $ff + + +Function49da4: ; 49da4 + nop + nop + nop + ld a, [wcfcd] + and a + jr nz, .next + ld a, $0 + ret + +.next + ld a, [hCGB] + cp $1 + ld a, $1 + ret nz + ld a, BANK(s0_abe5) + call GetSRAMBank + ld a, [s0_abe5] + cp $ff + call CloseSRAM + jr nz, .done + ld a, [StatusFlags] + bit 7, a + ld a, $1 + jr z, .ok + jr .ok + +.ok + jr .ok2 + +.ok2 + ld a, $1 + ret + +.done + ld a, [StatusFlags] + bit 7, a + jr z, .ok3 + jr .ok3 + +.ok3 + jr .ok4 + +.ok4 + ld a, $6 + ret +; 49de4 + +Function49de4: ; 49de4 + call SetUpMenu +.asm_49de7 + call Function49e09 + ld a, [wcfa5] + set 5, a + ld [wcfa5], a + call Function1f1a + ld a, [wcf73] + cp $2 + jr z, .asm_49e07 + cp $1 + jr z, .asm_49e02 + jr .asm_49de7 + +.asm_49e02 + call PlayClickSFX + and a + ret + +.asm_49e07 + scf + ret +; 49e09 + +Function49e09: ; 49e09 + ld a, [wcfcd] + and a + ret z + xor a + ld [hBGMapMode], a + call Function49e27 + ld hl, Options + ld a, [hl] + push af + set 4, [hl] + call Function49e3d + pop af + ld [Options], a + ld a, $1 + ld [hBGMapMode], a + ret +; 49e27 + + +Function49e27: ; 49e27 + call Function6e3 + and $80 + jr nz, .asm_49e39 + hlcoord 0, 14 + ld b, $2 + ld c, $12 + call TextBox + ret + +.asm_49e39 + call SpeechTextBox + ret +; 49e3d + + +Function49e3d: ; 49e3d + ld a, [wcfcd] + and a + ret z + call Function6e3 + and $80 + jp nz, Function49e75 + call UpdateTime + call GetWeekday + ld b, a + decoord 1, 15 + call Function49e91 + decoord 4, 16 + ld a, [hHours] + ld c, a + callba PrintHour + ld [hl], ":" + inc hl + ld de, hMinutes + lb bc, PRINTNUM_LEADINGZEROS | 1, 2 + call PrintNum + ret +; 49e70 + +; 49e70 + db "min.@" +; 49e75 + +Function49e75: ; 49e75 + hlcoord 1, 14 + ld de, .TimeNotSet + call PlaceString + ret +; 49e7f + +.TimeNotSet ; 49e7f + db "TIME NOT SET@" +; 49e8c + +UnknownText_0x49e8c: ; 49e8c + text_jump UnknownText_0x1c5182 + db "@" +; 49e91 + +Function49e91: ; 49e91 + push de + ld hl, .Days + ld a, b + call GetNthString + ld d, h + ld e, l + pop hl + call PlaceString + ld h, b + ld l, c + ld de, .Day + call PlaceString + ret +; 49ea8 + +.Days + db "SUN@" + db "MON@" + db "TUES@" + db "WEDNES@" + db "THURS@" + db "FRI@" + db "SATUR@" +.Day + db "DAY@" +; 49ed0 + +Function49ed0: ; 49ed0 + xor a + ld [hMapAnims], a + call ClearTileMap + call LoadFontsExtra + call LoadStandardFont + call ResetTextRelatedRAM + ret +; 49ee0 + + +MainMenu_NewGame: ; 49ee0 + callba NewGame + ret +; 49ee7 + +MainMenu_Options: ; 49ee7 + callba OptionsMenu + ret +; 49eee + +MainMenu_Continue: ; 49eee + callba Continue + ret +; 49ef5 + +MainMenu_MysteryGift: ; 49ef5 + callba MysteryGift + ret +; 49efc + +MainMenu_Mobile: ; 49efc + call ClearBGPalettes + ld a, MUSIC_MOBILE_ADAPTER_MENU + ld [wMapMusic], a + ld de, MUSIC_MOBILE_ADAPTER_MENU + call Function4a6c5 +Function49f0a: ; 49f0a + call ClearBGPalettes + call Function4a3a7 + call Function4a492 + call ClearBGPalettes +Function49f16: ; 49f16 + call Function4a071 + ld c, 12 + call DelayFrames + hlcoord 4, 0 + ld b, $a + ld c, $a + call Function48cdc + hlcoord 6, 2 + ld de, MobileString1 + call PlaceString + hlcoord 0, 12 + ld b, $4 + ld c, $12 + call TextBox + xor a + ld de, String_0x49fe9 + hlcoord 1, 14 + call PlaceString + call Function3200 + call SetPalettes + call Function1bc9 + ld hl, MenuSelection2 + ld b, [hl] + push bc + jr .asm_49f5d + +.asm_49f55 + call Function1bd3 + ld hl, MenuSelection2 + ld b, [hl] + push bc + +.asm_49f5d + bit 0, a + jr nz, .asm_49f67 + bit 1, a + jr nz, .asm_49f84 + jr .asm_49f97 + +.asm_49f67 + ld hl, MenuSelection2 + ld a, [hl] + cp $1 + jp z, Function4a098 + cp $2 + jp z, Function4a0b9 + cp $3 + jp z, Function4a0c2 + cp $4 + jp z, Function4a100 + ld a, $1 + call Function1ff8 + +.asm_49f84 + pop bc + call ClearBGPalettes + call ClearTileMap + ld a, MUSIC_MAIN_MENU + ld [wMapMusic], a + ld de, MUSIC_MAIN_MENU + call Function4a6c5 + ret + +.asm_49f97 + ld hl, MenuSelection2 + ld a, [hl] + dec a + ld hl, MobileStrings2 + call GetNthString + ld d, h + ld e, l + hlcoord 1, 13 + ld b, $4 + ld c, $12 + call ClearBox + hlcoord 1, 14 + call PlaceString + jp .asm_49fb7 + +.asm_49fb7 + call Function4a071 + pop bc + ld hl, MenuSelection2 + ld [hl], b + ld b, $a + ld c, $1 + hlcoord 5, 1 + call ClearBox + jp .asm_49f55 +; 49fcc + + +MobileString1: ; 49fcc + db "めいしフ,ルダー" + next "あいさつ" + next "プロフィール" + next "せ", $1e, "い" + next "もどる" + db "@" +; 49fe9 + + +MobileStrings2: + +String_0x49fe9: ; 49fe9 + db "めいし¯つくったり" + next "ほぞんしておける フ,ルダーです@" +; 4a004 + +String_0x4a004: ; 4a004 + db "モバイルたいせんや じぶんのめいしで" + next "つかう あいさつ¯つくります@" +; 4a026 + +String_0x4a026: ; 4a026 + db "あなた%じゅうしょや ねんれいの" + next "せ", $1e, "い¯かえられます@" +; 4a042 + +String_0x4a042: ; 4a042 + db "モバイルセンター", $1d, "せつぞくするとき" + next "ひつような こと¯きめます@" +; 4a062 + +String_0x4a062: ; 4a062 + db "まえ%がめん ", $1d, "もどります" + next "@" +; 4a071 + +Function4a071: ; 4a071 (12:6071) + ld hl, wcfa1 + ld a, $2 + ld [hli], a + ld a, $5 + ld [hli], a + ld a, $5 + ld [hli], a + ld a, $1 + ld [hli], a + ld [hl], $0 + set 5, [hl] + inc hl + xor a + ld [hli], a + ld a, $20 + ld [hli], a + ld a, $1 + add $40 + add $80 + add $2 + ld [hli], a + ld a, $1 +rept 2 + ld [hli], a +endr + ret + +Function4a098: ; 4a098 (12:6098) + ld a, $2 + call Function1ff8 + call Function1bee + call WaitBGMap + call LoadStandardMenuDataHeader + callba Function89de0 + call Call_ExitMenu + call Function49351 + call Function4a485 + pop bc + jp Function49f16 + +Function4a0b9: ; 4a0b9 (12:60b9) + ld a, $2 + call Function1ff8 + pop bc + jp Function4a4c4 + +Function4a0c2: ; 4a0c2 (12:60c2) + ld a, $2 + call Function1ff8 + ld a, BANK(sPlayerData) + call GetSRAMBank + ld hl, sPlayerData + PlayerName - wPlayerData + ld de, PlayerName + ld bc, $6 + call CopyBytes + call CloseSRAM + callba Function150b9 + ld c, 2 + call DelayFrames + ld c, $1 + call Function4802f + push af + call ClearBGPalettes + pop af + and a + jr nz, .asm_4a0f9 + callba Function1509a +.asm_4a0f9 + ld c, 5 + call DelayFrames + jr asm_4a111 + +Function4a100: ; 4a100 (12:6100) + ld a, $2 + call Function1ff8 + call ClearBGPalettes + call Function4a13b + call ClearBGPalettes + call ClearTileMap + +asm_4a111: ; 4a111 (12:6111) + pop bc + call LoadFontsExtra + jp Function49f0a + +Function4a118: ; 4a118 (12:6118) + ld hl, wcfa1 + ld a, $1 + ld [hli], a + ld a, $d + ld [hli], a + ld a, $3 + ld [hli], a + ld a, $1 + ld [hli], a + ld [hl], $0 + set 5, [hl] + inc hl + xor a + ld [hli], a + ld a, $20 + ld [hli], a + ld a, $1 + add $2 + ld [hli], a + ld a, $1 +rept 2 + ld [hli], a +endr + ret + +Function4a13b: ; 4a13b (12:613b) + call Function4a3a7 + call Function4a492 + call Function4a373 + ld c, 10 + call DelayFrames + +Function4a149: ; 4a149 (12:6149) + hlcoord 1, 2 + ld b, $6 + ld c, $10 + call Function48cdc + hlcoord 3, 4 + ld de, String_4a1ef + call PlaceString + hlcoord 0, 12 + ld b, $4 + ld c, $12 + call TextBox + ld a, [MenuSelection2] + dec a + ld hl, Strings_4a23d + call GetNthString + ld d, h + ld e, l + hlcoord 1, 13 + ld b, $4 + ld c, $12 + call ClearBox + hlcoord 1, 14 + call PlaceString + callba Function104148 + call SetPalettes + call Function1bc9 + ld hl, MenuSelection2 + ld b, [hl] + push bc + jr asm_4a19d + +Function4a195: ; 4a195 (12:6195) + call Function1bd3 + ld hl, MenuSelection2 + ld b, [hl] + push bc + +asm_4a19d: ; 4a19d (12:619d) + bit 0, a + jr nz, .asm_4a1a7 + bit 1, a + jr nz, .asm_4a1ba + jr .asm_4a1bc +.asm_4a1a7 + ld hl, MenuSelection2 + ld a, [hl] + cp $1 + jp z, Function4a20e + cp $2 + jp z, Function4a221 + ld a, $1 + call Function1ff8 +.asm_4a1ba + pop bc + ret +.asm_4a1bc + ld hl, MenuSelection2 + ld a, [hl] + dec a + ld hl, Strings_4a23d + call GetNthString + ld d, h + ld e, l + hlcoord 1, 13 + ld b, $4 + ld c, $12 + call ClearBox + hlcoord 1, 14 + call PlaceString + jr .asm_4a1db +.asm_4a1db + call Function4a373 + pop bc + ld hl, MenuSelection2 + ld [hl], b + lb bc, 6, 1 + hlcoord 2, 3 + call ClearBox + jp Function4a195 +; 4a1ef (12:61ef) + +String_4a1ef: ; 4a1ef + db "モバイルセンター¯えらぶ" + next "ログインパスワード¯いれる" + next "もどる@" +; 4a20e + +Function4a20e: ; 4a20e (12:620e) + ld a, $1 + call Function1ff8 + callba Function1719c8 + call ClearBGPalettes + call DelayFrame + jr Function4a239 + +Function4a221: ; 4a221 (12:6221) + ld a, $1 + call Function1ff8 + call Function4a28a + jr c, Function4a239 + call Function4a373 + ld a, $2 + ld [MenuSelection2], a + jr .asm_4a235 +.asm_4a235 + pop bc + jp Function4a149 + +Function4a239: ; 4a239 (12:6239) + pop bc + jp Function4a13b +; 4a23d (12:623d) + +Strings_4a23d: ; 4a23d + db "いつも せつぞく¯する" + next "モバイルセンター¯えらびます@" + + db "モバイルセンター", $1d, "せつぞくするとき" + next "つかうパスワード¯ほぞんできます@" + + db "まえ%がめん ", $1d, "もどります@" + + db "@" +; 4a28a + +Function4a28a: ; 4a28a (12:628a) + hlcoord 2, 3 + lb bc, 6, 1 + ld a, " " + call Function4a6d8 + call Function1bee + call WaitBGMap + call LoadStandardMenuDataHeader + ld a, $5 + call GetSRAMBank + ld a, [$aa4b] + call CloseSRAM + and a + jr z, .asm_4a2df + hlcoord 12, 0 + ld b, $5 + ld c, $6 + call Function48cdc + hlcoord 14, 1 + ld de, String_4a34b + call PlaceString + callba Function104148 + call Function4a118 + call Function1bd3 + push af + call PlayClickSFX + pop af + bit 1, a + jr nz, .asm_4a33b + ld a, [MenuSelection2] + cp $2 + jr z, .asm_4a2f0 + cp $3 + jr z, .asm_4a33b +.asm_4a2df + callba Function11765d + call ClearBGPalettes + call Call_ExitMenu + call LoadFontsExtra + scf + ret +.asm_4a2f0 + call Function1bee + ld hl, UnknownText_0x4a358 + call PrintText + hlcoord 14, 7 + ld b, $3 + ld c, $4 + call TextBox + callba Function104148 + ld hl, MenuDataHeader_0x4a362 + call LoadMenuDataHeader + call InterpretMenu2 + bit 1, a + jr nz, .asm_4a338 + ld a, [MenuSelection2] + cp $2 + jr z, .asm_4a338 + ld a, $5 + call GetSRAMBank + ld hl, $aa4b + xor a + ld bc, $11 + call ByteFill + call CloseSRAM + ld hl, UnknownText_0x4a35d + call PrintText + call JoyWaitAorB +.asm_4a338 + call ExitMenu +.asm_4a33b + call Call_ExitMenu + callba Function104148 + xor a + ret +; 4a346 (12:6346) + +MenuDataHeader_0x4a346: ; 0x4a346 + db $40 ; flags + db 00, 12 ; start coords + db 06, 19 ; end coords + +String_4a34b: ; 4a34b + db "いれなおす" + next "けす" + next "もどる@" +; 4a358 + +UnknownText_0x4a358: ; 0x4a358 + ; Delete the saved LOG-IN PASSWORD? + text_jump UnknownText_0x1c5196 + db "@" +; 0x4a35d + +UnknownText_0x4a35d: ; 0x4a35d + ; Deleted the LOG-IN PASSWORD. + text_jump UnknownText_0x1c51b9 + db "@" +; 0x4a362 + +MenuDataHeader_0x4a362: ; 0x4a362 + db $40 ; flags + db 07, 14 ; start coords + db 11, 19 ; end coords + dw MenuData2_0x4a36a + db 2 ; default option +; 0x4a36a + +MenuData2_0x4a36a: ; 0x4a36a + db $e0 ; flags + db 2 ; items + db "はい@" + db "いいえ@" +; 0x4a373 + +Function4a373: ; 4a373 (12:6373) + ld hl, wcfa1 + ld a, $4 + ld [hli], a + ld a, $2 + ld [hli], a + ld a, $3 + ld [hli], a + ld a, $1 + ld [hli], a + ld [hl], $0 + set 5, [hl] + inc hl + xor a + ld [hli], a + ld a, $20 + ld [hli], a + ld a, $1 + add $40 + add $80 + add $2 + ld [hli], a + ld a, $1 +rept 2 + ld [hli], a +endr + ret +; 4a39a (12:639a) + +Function4a39a: ; 4a39a + call Function4a485 + call Function4a492 + call Function4a3aa + call SetPalettes + ret +; 4a3a7 + +Function4a3a7: ; 4a3a7 (12:63a7) + call Function4a485 +Function4a3aa: ; 4a3aa + hlcoord 0, 0 + lb bc, 3, 1 + xor a + call Function4a6d8 + lb bc, 1, 1 + ld a, $1 + call Function4a6d8 + lb bc, 1, 1 + xor a + call Function4a6d8 + lb bc, 1, 1 + ld a, $1 + call Function4a6d8 + lb bc, 4, 1 + ld a, $2 + call Function4a6d8 + lb bc, 1, 1 + ld a, $3 + call Function4a6d8 + lb bc, 1, 1 + ld a, " " + call Function4a6d8 + hlcoord 1, 0 + ld a, $1 + lb bc, 3, 18 + call Function4a6d8 + lb bc, 1, 18 + ld a, $0 + call Function4a6d8 + lb bc, 1, 18 + ld a, $1 + call Function4a6d8 + lb bc, 1, 18 + ld a, $2 + call Function4a6d8 + lb bc, 11, 18 + ld a, " " + call Function4a6d8 + hlcoord 19, 0 + lb bc, 3, 1 + ld a, $0 + call Function4a6d8 + lb bc, 1, 1 + ld a, $1 + call Function4a6d8 + lb bc, 1, 1 + xor a + call Function4a6d8 + lb bc, 1, 1 + ld a, $1 + call Function4a6d8 + lb bc, 4, 1 + ld a, $2 + call Function4a6d8 + lb bc, 1, 1 + ld a, $3 + call Function4a6d8 + lb bc, 1, 1 + ld a, " " + call Function4a6d8 + ret +; 4a449 (12:6449) + +Function4a449: ; 4a449 + ld bc, 3 * SCREEN_WIDTH + ld a, $0 + hlcoord 0, 0 + call ByteFill + ld bc, 2 * SCREEN_WIDTH + ld a, $1 + call ByteFill + ld bc, 2 * SCREEN_WIDTH + ld a, $0 + call ByteFill + ld bc, 2 * SCREEN_WIDTH + ld a, $1 + call ByteFill + ld bc, SCREEN_WIDTH + ld a, $2 + call ByteFill + ld bc, SCREEN_WIDTH + ld a, $3 + call ByteFill + ld bc, SCREEN_WIDTH + ld a, " " + call ByteFill + ret +; 4a485 + +Function4a485: ; 4a485 (12:6485) + ld de, GFX_49c0c + ld hl, VTiles2 tile $00 + lb bc, BANK(GFX_49c0c), $d + call Get2bpp + ret + +Function4a492: ; 4a492 (12:6492) + call Function4936e + ret + + +MainMenu_MobileStudium: ; 4a496 + ld a, [StartDay] + ld b, a + ld a, [StartHour] + ld c, a + ld a, [StartMinute] + ld d, a + ld a, [StartSecond] + ld e, a + push bc + push de + callba MobileStudium + call ClearBGPalettes + pop de + pop bc + ld a, b + ld [StartDay], a + ld a, c + ld [StartHour], a + ld a, d + ld [StartMinute], a + ld a, e + ld [StartSecond], a + ret +; 4a4c4 + + +Function4a4c4: ; 4a4c4 (12:64c4) + call ClearBGPalettes + call Function4a3a7 + call Function4a492 + call Function4a680 + call ClearBGPalettes + ld c, 20 + call DelayFrames + hlcoord 2, 0 + ld b, $a + ld c, $e + call Function48cdc + hlcoord 4, 2 + ld de, String_4a5c5 + call PlaceString + hlcoord 4, 4 + ld de, String_4a5cd + call PlaceString + hlcoord 4, 6 + ld de, String_4a5da + call PlaceString + hlcoord 4, 8 + ld de, String_4a5e6 + call PlaceString + hlcoord 4, 10 + ld de, String_4a5f2 + call PlaceString + hlcoord 0, 12 + ld b, $4 + ld c, $12 + call TextBox + xor a + ld hl, Strings_4a5f6 + ld d, h + ld e, l + hlcoord 1, 14 + call PlaceString + ld a, $1 + ld hl, Strings_4a5f6 + call GetNthString + ld d, h + ld e, l + hlcoord 1, 16 + call PlaceString + call Function3200 + call SetPalettes + call Function1bc9 + ld hl, MenuSelection2 + ld b, [hl] + push bc + jr asm_4a54d + +Function4a545: ; 4a545 (12:6545) + call Function1bd3 + ld hl, MenuSelection2 + ld b, [hl] + push bc + +asm_4a54d: ; 4a54d (12:654d) + bit 0, a + jr nz, .asm_4a557 + bit 1, a + jr nz, .asm_4a574 + jr .asm_4a57e +.asm_4a557 + ld hl, MenuSelection2 + ld a, [hl] + cp $1 + jp z, Function4a6ab + cp $2 + jp z, Function4a6ab + cp $3 + jp z, Function4a6ab + cp $4 + jp z, Function4a6ab + ld a, $1 + call Function1ff8 +.asm_4a574 + pop bc + call ClearBGPalettes + call ClearTileMap + jp Function49f0a +.asm_4a57e + ld hl, MenuSelection2 + ld a, [hl] + dec a + add a + push af + ld hl, Strings_4a5f6 + call GetNthString + ld d, h + ld e, l + hlcoord 1, 13 + ld b, $4 + ld c, $12 + call ClearBox + hlcoord 1, 14 + call PlaceString + pop af + inc a + ld hl, Strings_4a5f6 + call GetNthString + ld d, h + ld e, l + hlcoord 1, 16 + call PlaceString + jp Function4a5b0 + +Function4a5b0: ; 4a5b0 (12:65b0) + call Function4a680 + pop bc + ld hl, MenuSelection2 + ld [hl], b + ld b, $a + ld c, $1 + hlcoord 3, 1 + call ClearBox + jp Function4a545 +; 4a5c5 (12:65c5) + +String_4a5c5: ; 4a5c5 + db "じこしょうかい@" +String_4a5cd: ; 4a5cd + db "たいせん ", $4a, "はじまるとき@" +String_4a5da: ; 4a5da + db "たいせん ", $1d, "かったとき@" +String_4a5e6: ; 4a5e6 + db "たいせん ", $1d, "まけたとき@" +String_4a5f2: ; 4a5f2 + db "もどる@" +; 4a5f6 + +Strings_4a5f6: ; 4a5f6 + db "めいし や ニュース ", $1d, "のせる@" + db "あなた%あいさつです@" + db "モバイル たいせん", $4a, "はじまるとき@" + db "あいて", $1d, "みえる あいさつです@" + db "モバイル たいせんで かったとき@" + db "あいて", $1d, "みえる あいさつです@" + db "モバイル たいせんで まけたとき@" + db "あいて", $1d, "みえる あいさつです@" + db "まえ%がめん ", $1d, "もどります@" + db "@" +; 4a680 + +Function4a680: ; 4a680 (12:6680) + ld hl, wcfa1 + ld a, $2 + ld [hli], a + ld a, $3 + ld [hli], a + ld a, $5 + ld [hli], a + ld a, $1 + ld [hli], a + ld [hl], $0 + set 5, [hl] + inc hl + xor a + ld [hli], a + ld a, $20 + ld [hli], a + ld a, $1 + add $40 + add $80 + add $2 + ld [hli], a + ld a, $1 +rept 2 + ld [hli], a +endr + xor a +rept 3 + ld [hli], a +endr + ret + +Function4a6ab: ; 4a6ab (12:66ab) + ld a, $2 + call Function1ff8 + call ClearBGPalettes + ld b, SCGB_08 + call GetSGBLayout + callba Function11c1ab + pop bc + call LoadFontsExtra + jp Function4a4c4 + +Function4a6c5: ; 4a6c5 (12:66c5) + ld a, $5 + ld [MusicFade], a + ld a, e + ld [MusicFadeIDLo], a + ld a, d + ld [MusicFadeIDHi], a + ld c, 22 + call DelayFrames + ret + +Function4a6d8: ; 4a6d8 (12:66d8) + push bc + push hl +.asm_4a6da + ld [hli], a + dec c + jr nz, .asm_4a6da + pop hl + ld bc, $14 + add hl, bc + pop bc + dec b + jr nz, Function4a6d8 + ret diff --git a/engine/mart.asm b/engine/mart.asm index 81ab22d12..8fa7888c2 100755 --- a/engine/mart.asm +++ b/engine/mart.asm @@ -470,7 +470,7 @@ endr BuyMenuLoop: ; 15cef - callba Function24ae8 + callba PlaceMoneyTopRightOW call UpdateSprites ld hl, MenuDataHeader_Buy call CopyMenuDataHeader @@ -875,7 +875,7 @@ Function15ee0: ; 15ee0 .okay_to_sell ld hl, Text_Mart_SellHowMany call PrintText - callba Function24af8 + callba PlaceMoneyTopRightMenu callba Function24fe1 call ExitMenu jr c, .declined @@ -899,7 +899,7 @@ Function15ee0: ; 15ee0 ld hl, Text_Mart_SoldForAmount call PrintTextBoxText call PlayTransactionSound - callba Function24af0 + callba PlaceMoneyBottomLeftOW call JoyWaitAorB .declined diff --git a/engine/pokecenter_pc.asm b/engine/pokecenter_pc.asm index ee37edca5..7d76d07d3 100755 --- a/engine/pokecenter_pc.asm +++ b/engine/pokecenter_pc.asm @@ -179,7 +179,7 @@ PC_WaitPlaySFX: ; 156d0 ret ; 156d9 -Function156d9: ; 156d9 +_KrissHousePC: ; 156d9 call PC_PlayBootSound ld hl, UnknownText_0x156ff call PC_DisplayText diff --git a/engine/specials.asm b/engine/specials.asm index b9911dc47..bfc4be7c0 100644 --- a/engine/specials.asm +++ b/engine/specials.asm @@ -101,14 +101,14 @@ SpecialsPointers:: ; c029 add_special SpecialCheckPokerus add_special Special_DisplayCoinCaseBalance add_special Special_DisplayMoneyAndCoinBalance - add_special Function24ae8 + add_special PlaceMoneyTopRightOW add_special Special_CheckForLuckyNumberWinners add_special Special_CheckLuckyNumberShowFlag add_special Special_ResetLuckyNumberShowFlag add_special Special_PrintTodaysLuckyNumber add_special Special_SelectApricornForKurt add_special SpecialNameRater - add_special Functionc2da + add_special Special_DisplayLinkRecord add_special GetFirstPokemonHappiness add_special CheckFirstMonIsEgg add_special RandomPhoneRareWildMon @@ -120,15 +120,17 @@ SpecialsPointers:: ; c029 add_special Special_YoungerHaircutBrother add_special Special_OlderHaircutBrother add_special Special_DaisyMassage - add_special Functionc472 + add_special PlayCurMonCry add_special ProfOaksPCBoot add_special SpecialGameboyCheck add_special SpecialTrainerHouse add_special PhotoStudio add_special InitRoamMons - add_special Functionc48f - add_special Functionc49f - add_special Functionc4ac + add_special Special_FadeOutMusic + add_special Diploma + add_special PrintDiploma + + ; Crystal add_special Function11ac3e add_special Function11b444 add_special Function11b5e8 @@ -151,7 +153,7 @@ SpecialsPointers:: ; c029 add_special Function101220 add_special Function101225 add_special Function101231 - add_special Function4925b + add_special Special_MoveTutor add_special SpecialOmanyteChamber add_special Function11c1ab add_special BattleTowerAction @@ -292,14 +294,14 @@ Special_TownMap: ; c2c0 Special_UnownPrinter: ; c2cd call FadeToMenu - callba Function16be4 + callba UnownPrinter call Function2b4d ret ; c2da -Functionc2da: ; c2da +Special_DisplayLinkRecord: ; c2da call FadeToMenu - callba Function3f836 + callba DisplayLinkRecord call Function2b4d ret ; c2e7 @@ -307,7 +309,7 @@ Functionc2da: ; c2da Special_KrissHousePC: ; c2e7 xor a ld [ScriptVar], a - callba Function156d9 + callba _KrissHousePC ld a, c ld [ScriptVar], a ret @@ -586,7 +588,7 @@ SpecialSnorlaxAwake: ; 0xc43d db $ff -Functionc472: ; c472 +PlayCurMonCry: ; c472 ld a, [CurPartySpecies] jp PlayCry ; c478 @@ -614,7 +616,7 @@ SpecialGameboyCheck: ; c478 ret -Functionc48f: ; c48f +Special_FadeOutMusic: ; c48f ld a, MUSIC_NONE % $100 ld [MusicFadeIDLo], a ld a, MUSIC_NONE / $100 @@ -624,16 +626,16 @@ Functionc48f: ; c48f ret ; c49f -Functionc49f: ; c49f +Diploma: ; c49f call FadeToMenu - callba Function1dd702 + callba _Diploma call Function2b4d ret ; c4ac -Functionc4ac: ; c4ac +PrintDiploma: ; c4ac call FadeToMenu - callba Function84688 + callba _PrintDiploma call Function2b4d ret ; c4b9 -- cgit v1.2.3 From 4bfe086ef6412e5fdba99e6143db6de75c7c9458 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 17 Nov 2015 12:29:37 -0500 Subject: Phone scripts and specials --- engine/buena_phone_scripts.asm | 154 ++++---- engine/link.asm | 2 +- engine/map_objects.asm | 4 +- engine/more_phone_scripts.asm | 578 ++++++++++++++--------------- engine/phone_scripts.asm | 802 ++++++++++++++++++++--------------------- engine/predef.asm | 2 +- engine/specials.asm | 12 +- 7 files changed, 779 insertions(+), 775 deletions(-) (limited to 'engine') diff --git a/engine/buena_phone_scripts.asm b/engine/buena_phone_scripts.asm index 3c0717503..98a7b72a3 100644 --- a/engine/buena_phone_scripts.asm +++ b/engine/buena_phone_scripts.asm @@ -1,168 +1,170 @@ BuenaPhoneScript1: checkflag ENGINE_ROCKETS_IN_RADIO_TOWER - iftrue UnknownScript_0xa0b73 + iftrue BuenaPhoneScript_Rocket checkcode VAR_HOUR - if_greater_than 17, UnknownScript_0xa0b4b - scall UnknownScript_0xa0b32 - jump UnknownScript_0xa0c0e + if_greater_than 17, BuenaPhoneScript_AfterMidnight1 + scall BuenaPhoneScript_CheckTimeOfDay1 + jump BuenaPhoneScript_Random1 BuenaPhoneScript2: checkflag ENGINE_ROCKETS_IN_RADIO_TOWER - iftrue UnknownScript_0xa0b73 - scall UnknownScript_0xa0b4f - jump UnknownScript_0xa0b77 + iftrue BuenaPhoneScript_Rocket + scall BuenaPhoneScript_CheckTimeOfDay2 + jump BuenaPhoneScript_Random2 -UnknownScript_0xa0b32: +BuenaPhoneScript_CheckTimeOfDay1: checkmorn - iftrue UnknownScript_0xa0b41 + iftrue .morn checkday - iftrue UnknownScript_0xa0b46 + iftrue .day writetext UnknownText_0xa0d42 keeptextopen end -UnknownScript_0xa0b41: +.morn: writetext UnknownText_0xa0c28 keeptextopen end -UnknownScript_0xa0b46: +.day: writetext UnknownText_0xa0c72 keeptextopen end -UnknownScript_0xa0b4b: +BuenaPhoneScript_AfterMidnight1: writetext UnknownText_0xa0caf end -UnknownScript_0xa0b4f: +BuenaPhoneScript_CheckTimeOfDay2: checkcode VAR_HOUR - if_greater_than 17, UnknownScript_0xa0b6e + if_greater_than 17, BuenaPhoneScript_AfterMidnight2 checkmorn - iftrue UnknownScript_0xa0b64 + iftrue .morn checkday - iftrue UnknownScript_0xa0b69 + iftrue .day writetext UnknownText_0xa0e29 keeptextopen end -UnknownScript_0xa0b64: +.morn: writetext UnknownText_0xa0d96 keeptextopen end -UnknownScript_0xa0b69: +.day: writetext UnknownText_0xa0dcf keeptextopen end -UnknownScript_0xa0b6e: +BuenaPhoneScript_AfterMidnight2: writetext UnknownText_0xa0e01 keeptextopen end -UnknownScript_0xa0b73: +BuenaPhoneScript_Rocket: writetext UnknownText_0xa0e5e end -UnknownScript_0xa0b77: +BuenaPhoneScript_Random2: checkevent EVENT_BEAT_ELITE_FOUR - iftrue UnknownScript_0xa0b82 + iftrue .PostE4 random 11 - jump UnknownScript_0xa0b84 + jump .Jumptable -UnknownScript_0xa0b82: +.PostE4: random 14 -UnknownScript_0xa0b84: - if_equal 0, UnknownScript_0xa0bbc - if_equal 1, UnknownScript_0xa0bc2 - if_equal 2, UnknownScript_0xa0bc8 - if_equal 3, UnknownScript_0xa0bce - if_equal 4, UnknownScript_0xa0bd4 - if_equal 5, UnknownScript_0xa0bda - if_equal 6, UnknownScript_0xa0be0 - if_equal 7, UnknownScript_0xa0be6 - if_equal 8, UnknownScript_0xa0bec - if_equal 9, UnknownScript_0xa0bf2 - if_equal 10, UnknownScript_0xa0bf8 - if_equal 11, UnknownScript_0xa0bfe - if_equal 12, UnknownScript_0xa0c04 - if_equal 13, UnknownScript_0xa0c0a - -UnknownScript_0xa0bbc: +.Jumptable: + if_equal 0, .zero + if_equal 1, .one + if_equal 2, .two + if_equal 3, .three + if_equal 4, .four + if_equal 5, .five + if_equal 6, .six + if_equal 7, .seven + if_equal 8, .eight + if_equal 9, .nine + if_equal 10, .ten + if_equal 11, .eleven + if_equal 12, .twelve + if_equal 13, .thirteen + +.zero: writetext UnknownText_0xa0efb - jump UnknownScript_0xa0c0d + jump .finish -UnknownScript_0xa0bc2: +.one: writetext UnknownText_0xa0fcf - jump UnknownScript_0xa0c0d + jump .finish -UnknownScript_0xa0bc8: +.two: writetext UnknownText_0xa109d - jump UnknownScript_0xa0c0d + jump .finish -UnknownScript_0xa0bce: +.three: writetext UnknownText_0xa1143 - jump UnknownScript_0xa0c0d + jump .finish -UnknownScript_0xa0bd4: +.four: writetext UnknownText_0xa1244 - jump UnknownScript_0xa0c0d + jump .finish -UnknownScript_0xa0bda: +.five: writetext UnknownText_0xa1318 - jump UnknownScript_0xa0c0d + jump .finish -UnknownScript_0xa0be0: +.six: writetext UnknownText_0xa13d8 - jump UnknownScript_0xa0c0d + jump .finish -UnknownScript_0xa0be6: +.seven: writetext UnknownText_0xa1488 - jump UnknownScript_0xa0c0d + jump .finish -UnknownScript_0xa0bec: +.eight: writetext UnknownText_0xa15de - jump UnknownScript_0xa0c0d + jump .finish -UnknownScript_0xa0bf2: +.nine: writetext UnknownText_0xa1717 - jump UnknownScript_0xa0c0d + jump .finish -UnknownScript_0xa0bf8: +.ten: writetext UnknownText_0xa183d - jump UnknownScript_0xa0c0d + jump .finish -UnknownScript_0xa0bfe: +.eleven: writetext UnknownText_0xa19b1 - jump UnknownScript_0xa0c0d + jump .finish -UnknownScript_0xa0c04: +.twelve: writetext UnknownText_0xa1ac0 - jump UnknownScript_0xa0c0d + jump .finish -UnknownScript_0xa0c0a: +.thirteen: writetext UnknownText_0xa1bed -UnknownScript_0xa0c0d: +.finish: end -UnknownScript_0xa0c0e: +BuenaPhoneScript_Random1: random 3 - if_equal 0, UnknownScript_0xa0c1c - if_equal 1, UnknownScript_0xa0c20 - if_equal 2, UnknownScript_0xa0c24 + if_equal 0, .zero + if_equal 1, .one + if_equal 2, .two -UnknownScript_0xa0c1c: +.zero: writetext UnknownText_0xa1c88 end -UnknownScript_0xa0c20: +.one: writetext UnknownText_0xa1d5f end -UnknownScript_0xa0c24: +.two: writetext UnknownText_0xa1e2f end ; a0c28 + +INCLUDE "text/phone/buena.asm" diff --git a/engine/link.asm b/engine/link.asm index c50a6ff42..27a9ebcc4 100755 --- a/engine/link.asm +++ b/engine/link.asm @@ -1916,7 +1916,7 @@ Function28b87: ; 28b87 ld de, TempMonSpecies ld bc, PARTYMON_STRUCT_LENGTH call CopyBytes - predef Functionda96 + predef AddTempmonToParty ld a, [PartyCount] dec a ld [CurPartyMon], a diff --git a/engine/map_objects.asm b/engine/map_objects.asm index ef8878565..168c5389c 100644 --- a/engine/map_objects.asm +++ b/engine/map_objects.asm @@ -3078,16 +3078,18 @@ ContinueSpawnFacing: ; 57db ret ; 57e2 -Function57e2: ; 57e2 +SetPlayerPalette: ; 57e2 ld a, d and %10000000 ret z + ld bc, 0 ; debug? ld hl, OBJECT_FACING add hl, bc ld a, [hl] or d ld [hl], a + ld a, d swap a and %00000111 diff --git a/engine/more_phone_scripts.asm b/engine/more_phone_scripts.asm index 5bc1f1560..f0c835e92 100644 --- a/engine/more_phone_scripts.asm +++ b/engine/more_phone_scripts.asm @@ -56,468 +56,468 @@ UnknownScript_0xa0074: UnknownScript_0xa007c: checkcode VAR_CALLERID - if_equal $5, UnknownScript_0xa00c2 - if_equal $b, UnknownScript_0xa00c8 - if_equal $d, UnknownScript_0xa00ce - if_equal $f, UnknownScript_0xa00d4 - if_equal $10, UnknownScript_0xa00da - if_equal $11, UnknownScript_0xa00e0 - if_equal $13, UnknownScript_0xa00e6 - if_equal $14, UnknownScript_0xa00ec - if_equal $17, UnknownScript_0xa00f2 - if_equal $18, UnknownScript_0xa00f8 - if_equal $1b, UnknownScript_0xa00fe - if_equal $1c, UnknownScript_0xa0104 - if_equal $1d, UnknownScript_0xa010a - if_equal $1e, UnknownScript_0xa0110 - if_equal $20, UnknownScript_0xa0116 - if_equal $21, UnknownScript_0xa011c - if_equal $23, UnknownScript_0xa0122 - -UnknownScript_0xa00c2: + if_equal PHONE_SCHOOLBOY_JACK, .Jack + if_equal PHONE_COOLTRAINERM_GAVEN, .Gaven + if_equal PHONE_BIRDKEEPER_JOSE, .Jose + if_equal PHONE_YOUNGSTER_JOEY, .Joey + if_equal PHONE_BUG_CATCHER_WADE, .Wade + if_equal PHONE_FISHER_RALPH, .Ralph + if_equal PHONE_HIKER_ANTHONY, .Anthony + if_equal PHONE_CAMPER_TODD, .Todd + if_equal PHONE_BUG_CATCHER_ARNIE, .Arnie + if_equal PHONE_SCHOOLBOY_ALAN, .Alan + if_equal PHONE_SCHOOLBOY_CHAD, .Chad + if_equal PHONE_POKEFANM_DEREK, .Derek + if_equal PHONE_FISHER_TULLY, .Tully + if_equal PHONE_POKEMANIAC_BRENT, .Brent + if_equal PHONE_BIRDKEEPER_VANCE, .Vance + if_equal PHONE_FISHER_WILTON, .Wilton + if_equal PHONE_HIKER_PARRY, .Parry + +.Jack: farwritetext UnknownText_0x1740c0 keeptextopen end -UnknownScript_0xa00c8: +.Gaven: farwritetext UnknownText_0x174a24 keeptextopen end -UnknownScript_0xa00ce: +.Jose: farwritetext UnknownText_0x174f2f keeptextopen end -UnknownScript_0xa00d4: +.Joey: farwritetext UnknownText_0x175530 keeptextopen end -UnknownScript_0xa00da: +.Wade: farwritetext UnknownText_0x1757d4 keeptextopen end -UnknownScript_0xa00e0: +.Ralph: farwritetext UnknownText_0x175bc4 keeptextopen end -UnknownScript_0xa00e6: +.Anthony: farwritetext UnknownText_0x176a2f keeptextopen end -UnknownScript_0xa00ec: +.Todd: farwritetext UnknownText_0x176e5d keeptextopen end -UnknownScript_0xa00f2: +.Arnie: farwritetext UnknownText_0x649dc keeptextopen end -UnknownScript_0xa00f8: +.Alan: farwritetext UnknownText_0x64cbd keeptextopen end -UnknownScript_0xa00fe: +.Chad: farwritetext UnknownText_0x65271 keeptextopen end -UnknownScript_0xa0104: +.Derek: farwritetext UnknownText_0x65ab2 keeptextopen end -UnknownScript_0xa010a: +.Tully: farwritetext UnknownText_0x65de4 keeptextopen end -UnknownScript_0xa0110: +.Brent: farwritetext UnknownText_0x660be keeptextopen end -UnknownScript_0xa0116: +.Vance: farwritetext UnknownText_0x66980 keeptextopen end -UnknownScript_0xa011c: +.Wilton: farwritetext UnknownText_0x66afc keeptextopen end -UnknownScript_0xa0122: +.Parry: farwritetext UnknownText_0x66f9f keeptextopen end UnknownScript_0xa0128: checkcode VAR_CALLERID - if_equal $6, UnknownScript_0xa014a - if_equal $c, UnknownScript_0xa0150 - if_equal $e, UnknownScript_0xa0156 - if_equal $12, UnknownScript_0xa015c - if_equal $15, UnknownScript_0xa0162 - if_equal $1a, UnknownScript_0xa0168 - if_equal $1f, UnknownScript_0xa016e - if_equal $24, UnknownScript_0xa0174 - -UnknownScript_0xa014a: + if_equal PHONE_POKEFAN_BEVERLY, .Beverly + if_equal PHONE_COOLTRAINERF_BETH, .Beth + if_equal PHONE_COOLTRAINERF_REENA, .Reena + if_equal PHONE_PICNICKER_LIZ, .Liz + if_equal PHONE_PICNICKER_GINA, .Gina + if_equal PHONE_LASS_DANA, .Dana + if_equal PHONE_PICNICKER_TIFFANY, .Tiffany + if_equal PHONE_PICNICKER_ERIN, .Erin + +.Beverly: farwritetext UnknownText_0x174688 keeptextopen end -UnknownScript_0xa0150: +.Beth: farwritetext UnknownText_0x174c7f keeptextopen end -UnknownScript_0xa0156: +.Reena: farwritetext UnknownText_0x1752f5 keeptextopen end -UnknownScript_0xa015c: +.Liz: farwritetext UnknownText_0x175fda keeptextopen end -UnknownScript_0xa0162: +.Gina: farwritetext UnknownText_0x1771fd keeptextopen end -UnknownScript_0xa0168: +.Dana: farwritetext UnknownText_0x64f74 keeptextopen end -UnknownScript_0xa016e: +.Tiffany: farwritetext UnknownText_0x665ad keeptextopen end -UnknownScript_0xa0174: +.Erin: farwritetext UnknownText_0x6717a keeptextopen end UnknownScript_0xa017a: checkcode VAR_CALLERID - if_equal $5, UnknownScript_0xa01c0 - if_equal $b, UnknownScript_0xa01c6 - if_equal $d, UnknownScript_0xa01cc - if_equal $f, UnknownScript_0xa01d2 - if_equal $10, UnknownScript_0xa01d8 - if_equal $11, UnknownScript_0xa01de - if_equal $13, UnknownScript_0xa01e4 - if_equal $14, UnknownScript_0xa01ea - if_equal $17, UnknownScript_0xa01f0 - if_equal $18, UnknownScript_0xa01f6 - if_equal $1b, UnknownScript_0xa01fc - if_equal $1c, UnknownScript_0xa0202 - if_equal $1d, UnknownScript_0xa0208 - if_equal $1e, UnknownScript_0xa020e - if_equal $20, UnknownScript_0xa0214 - if_equal $21, UnknownScript_0xa021a - if_equal $23, UnknownScript_0xa0220 - -UnknownScript_0xa01c0: + if_equal PHONE_SCHOOLBOY_JACK, .Jack + if_equal PHONE_COOLTRAINERM_GAVEN, .Gaven + if_equal PHONE_BIRDKEEPER_JOSE, .Jose + if_equal PHONE_YOUNGSTER_JOEY, .Joey + if_equal PHONE_BUG_CATCHER_WADE, .Wade + if_equal PHONE_FISHER_RALPH, .Ralph + if_equal PHONE_HIKER_ANTHONY, .Anthony + if_equal PHONE_CAMPER_TODD, .Todd + if_equal PHONE_BUG_CATCHER_ARNIE, .Arnie + if_equal PHONE_SCHOOLBOY_ALAN, .Alan + if_equal PHONE_SCHOOLBOY_CHAD, .Chad + if_equal PHONE_POKEFANM_DEREK, .Derek + if_equal PHONE_FISHER_TULLY, .Tully + if_equal PHONE_POKEMANIAC_BRENT, .Brent + if_equal PHONE_BIRDKEEPER_VANCE, .Vance + if_equal PHONE_FISHER_WILTON, .Wilton + if_equal PHONE_HIKER_PARRY, .Parry + +.Jack: farwritetext UnknownText_0x174106 keeptextopen end -UnknownScript_0xa01c6: +.Gaven: farwritetext UnknownText_0x174a80 keeptextopen end -UnknownScript_0xa01cc: +.Jose: farwritetext UnknownText_0x174f90 keeptextopen end -UnknownScript_0xa01d2: +.Joey: farwritetext UnknownText_0x175591 keeptextopen end -UnknownScript_0xa01d8: +.Wade: farwritetext UnknownText_0x175869 keeptextopen end -UnknownScript_0xa01de: +.Ralph: farwritetext UnknownText_0x175c24 keeptextopen end -UnknownScript_0xa01e4: +.Anthony: farwritetext UnknownText_0x176aef keeptextopen end -UnknownScript_0xa01ea: +.Todd: farwritetext UnknownText_0x176e9c keeptextopen end -UnknownScript_0xa01f0: +.Arnie: farwritetext UnknownText_0x64a13 keeptextopen end -UnknownScript_0xa01f6: +.Alan: farwritetext UnknownText_0x64cf3 keeptextopen end -UnknownScript_0xa01fc: +.Chad: farwritetext UnknownText_0x65318 keeptextopen end -UnknownScript_0xa0202: +.Derek: farwritetext UnknownText_0x65b29 keeptextopen end -UnknownScript_0xa0208: +.Tully: farwritetext UnknownText_0x65e42 keeptextopen end -UnknownScript_0xa020e: +.Brent: farwritetext UnknownText_0x6613c keeptextopen end -UnknownScript_0xa0214: +.Vance: farwritetext UnknownText_0x669b2 keeptextopen end -UnknownScript_0xa021a: +.Wilton: farwritetext UnknownText_0x66b3e keeptextopen end -UnknownScript_0xa0220: +.Parry: farwritetext UnknownText_0x66fc0 keeptextopen end UnknownScript_0xa0226: checkcode VAR_CALLERID - if_equal $6, UnknownScript_0xa0248 - if_equal $c, UnknownScript_0xa024e - if_equal $e, UnknownScript_0xa0254 - if_equal $12, UnknownScript_0xa025a - if_equal $15, UnknownScript_0xa0260 - if_equal $1a, UnknownScript_0xa0266 - if_equal $1f, UnknownScript_0xa026c - if_equal $24, UnknownScript_0xa0272 - -UnknownScript_0xa0248: + if_equal PHONE_POKEFAN_BEVERLY, .Beverly + if_equal PHONE_COOLTRAINERF_BETH, .Beth + if_equal PHONE_COOLTRAINERF_REENA, .Reena + if_equal PHONE_PICNICKER_LIZ, .Liz + if_equal PHONE_PICNICKER_GINA, .Gina + if_equal PHONE_LASS_DANA, .Dana + if_equal PHONE_PICNICKER_TIFFANY, .Tiffany + if_equal PHONE_PICNICKER_ERIN, .Erin + +.Beverly: farwritetext UnknownText_0x1746c3 keeptextopen end -UnknownScript_0xa024e: +.Beth: farwritetext UnknownText_0x174cf6 keeptextopen end -UnknownScript_0xa0254: +.Reena: farwritetext UnknownText_0x17536b keeptextopen end -UnknownScript_0xa025a: +.Liz: farwritetext UnknownText_0x17602d keeptextopen end -UnknownScript_0xa0260: +.Gina: farwritetext UnknownText_0x177237 keeptextopen end -UnknownScript_0xa0266: +.Dana: farwritetext UnknownText_0x64fb2 keeptextopen end -UnknownScript_0xa026c: +.Tiffany: farwritetext UnknownText_0x66605 keeptextopen end -UnknownScript_0xa0272: +.Erin: farwritetext UnknownText_0x671a4 keeptextopen end UnknownScript_0xa0278: checkcode VAR_CALLERID - if_equal $5, UnknownScript_0xa02be - if_equal $b, UnknownScript_0xa02c4 - if_equal $d, UnknownScript_0xa02ca - if_equal $f, UnknownScript_0xa02d0 - if_equal $10, UnknownScript_0xa02d6 - if_equal $11, UnknownScript_0xa02dc - if_equal $13, UnknownScript_0xa02e2 - if_equal $14, UnknownScript_0xa02e8 - if_equal $17, UnknownScript_0xa02ee - if_equal $18, UnknownScript_0xa02f4 - if_equal $1b, UnknownScript_0xa02fa - if_equal $1c, UnknownScript_0xa0300 - if_equal $1d, UnknownScript_0xa0306 - if_equal $1e, UnknownScript_0xa030c - if_equal $20, UnknownScript_0xa0312 - if_equal $21, UnknownScript_0xa0318 - if_equal $23, UnknownScript_0xa031e - -UnknownScript_0xa02be: + if_equal PHONE_SCHOOLBOY_JACK, .Jack + if_equal PHONE_COOLTRAINERM_GAVEN, .Gaven + if_equal PHONE_BIRDKEEPER_JOSE, .Jose + if_equal PHONE_YOUNGSTER_JOEY, .Joey + if_equal PHONE_BUG_CATCHER_WADE, .Wade + if_equal PHONE_FISHER_RALPH, .Ralph + if_equal PHONE_HIKER_ANTHONY, .Anthony + if_equal PHONE_CAMPER_TODD, .Todd + if_equal PHONE_BUG_CATCHER_ARNIE, .Arnie + if_equal PHONE_SCHOOLBOY_ALAN, .Alan + if_equal PHONE_SCHOOLBOY_CHAD, .Chad + if_equal PHONE_POKEFANM_DEREK, .Derek + if_equal PHONE_FISHER_TULLY, .Tully + if_equal PHONE_POKEMANIAC_BRENT, .Brent + if_equal PHONE_BIRDKEEPER_VANCE, .Vance + if_equal PHONE_FISHER_WILTON, .Wilton + if_equal PHONE_HIKER_PARRY, .Parry + +.Jack: farwritetext UnknownText_0x174165 keeptextopen end -UnknownScript_0xa02c4: +.Gaven: farwritetext UnknownText_0x174b2d keeptextopen end -UnknownScript_0xa02ca: +.Jose: farwritetext UnknownText_0x174ffd keeptextopen end -UnknownScript_0xa02d0: +.Joey: farwritetext UnknownText_0x175611 keeptextopen end -UnknownScript_0xa02d6: +.Wade: farwritetext UnknownText_0x1758e4 keeptextopen end -UnknownScript_0xa02dc: +.Ralph: farwritetext UnknownText_0x175c9f keeptextopen end -UnknownScript_0xa02e2: +.Anthony: farwritetext UnknownText_0x176b45 keeptextopen end -UnknownScript_0xa02e8: +.Todd: farwritetext UnknownText_0x176eee keeptextopen end -UnknownScript_0xa02ee: +.Arnie: farwritetext UnknownText_0x64a71 keeptextopen end -UnknownScript_0xa02f4: +.Alan: farwritetext UnknownText_0x64d4f keeptextopen end -UnknownScript_0xa02fa: +.Chad: farwritetext UnknownText_0x65399 keeptextopen end -UnknownScript_0xa0300: +.Derek: farwritetext UnknownText_0x65bc8 keeptextopen end -UnknownScript_0xa0306: +.Tully: farwritetext UnknownText_0x65eac keeptextopen end -UnknownScript_0xa030c: +.Brent: farwritetext UnknownText_0x6618c keeptextopen end -UnknownScript_0xa0312: +.Vance: farwritetext UnknownText_0x669ed keeptextopen end -UnknownScript_0xa0318: +.Wilton: farwritetext UnknownText_0x66b8f keeptextopen end -UnknownScript_0xa031e: +.Parry: farwritetext UnknownText_0x67001 keeptextopen end UnknownScript_0xa0324: checkcode VAR_CALLERID - if_equal $6, UnknownScript_0xa0346 - if_equal $c, UnknownScript_0xa034c - if_equal $e, UnknownScript_0xa0352 - if_equal $12, UnknownScript_0xa0358 - if_equal $15, UnknownScript_0xa035e - if_equal $1a, UnknownScript_0xa0364 - if_equal $1f, UnknownScript_0xa036a - if_equal $24, UnknownScript_0xa0370 - -UnknownScript_0xa0346: + if_equal PHONE_POKEFAN_BEVERLY, .Beverly + if_equal PHONE_COOLTRAINERF_BETH, .Beth + if_equal PHONE_COOLTRAINERF_REENA, .Reena + if_equal PHONE_PICNICKER_LIZ, .Liz + if_equal PHONE_PICNICKER_GINA, .Gina + if_equal PHONE_LASS_DANA, .Dana + if_equal PHONE_PICNICKER_TIFFANY, .Tiffany + if_equal PHONE_PICNICKER_ERIN, .Erin + +.Beverly: farwritetext UnknownText_0x174734 keeptextopen end -UnknownScript_0xa034c: +.Beth: farwritetext UnknownText_0x174d86 keeptextopen end -UnknownScript_0xa0352: +.Reena: farwritetext UnknownText_0x1753c5 keeptextopen end -UnknownScript_0xa0358: +.Liz: farwritetext UnknownText_0x176095 keeptextopen end -UnknownScript_0xa035e: +.Gina: farwritetext UnknownText_0x177297 keeptextopen end -UnknownScript_0xa0364: +.Dana: farwritetext UnknownText_0x6501c keeptextopen end -UnknownScript_0xa036a: +.Tiffany: farwritetext UnknownText_0x66688 keeptextopen end -UnknownScript_0xa0370: +.Erin: farwritetext UnknownText_0x671eb keeptextopen end @@ -532,150 +532,150 @@ UnknownScript_0xa037e: UnknownScript_0xa0386: checkcode VAR_CALLERID - if_equal $5, UnknownScript_0xa03cc - if_equal $7, UnknownScript_0xa03d2 - if_equal $b, UnknownScript_0xa03d8 - if_equal $d, UnknownScript_0xa03de - if_equal $f, UnknownScript_0xa03e4 - if_equal $10, UnknownScript_0xa03ea - if_equal $11, UnknownScript_0xa03f0 - if_equal $13, UnknownScript_0xa03f6 - if_equal $14, UnknownScript_0xa03fc - if_equal $17, UnknownScript_0xa0402 - if_equal $18, UnknownScript_0xa0408 - if_equal $1b, UnknownScript_0xa040e - if_equal $1d, UnknownScript_0xa0414 - if_equal $1e, UnknownScript_0xa041a - if_equal $20, UnknownScript_0xa0420 - if_equal $21, UnknownScript_0xa0426 - if_equal $23, UnknownScript_0xa042c - -UnknownScript_0xa03cc: + if_equal PHONE_SCHOOLBOY_JACK, .Jack + if_equal PHONE_SAILOR_HUEY, .Huey + if_equal PHONE_COOLTRAINERM_GAVEN, .Gaven + if_equal PHONE_BIRDKEEPER_JOSE, .Jose + if_equal PHONE_YOUNGSTER_JOEY, .Joey + if_equal PHONE_BUG_CATCHER_WADE, .Wade + if_equal PHONE_FISHER_RALPH, .Ralph + if_equal PHONE_HIKER_ANTHONY, .Anthony + if_equal PHONE_CAMPER_TODD, .Todd + if_equal PHONE_BUG_CATCHER_ARNIE, .Arnie + if_equal PHONE_SCHOOLBOY_ALAN, .Alan + if_equal PHONE_SCHOOLBOY_CHAD, .Chad + if_equal PHONE_FISHER_TULLY, .Tully + if_equal PHONE_POKEMANIAC_BRENT, .Brent + if_equal PHONE_BIRDKEEPER_VANCE, .Vance + if_equal PHONE_FISHER_WILTON, .Wilton + if_equal PHONE_HIKER_PARRY, .Parry + +.Jack: farwritetext UnknownText_0x1741e1 keeptextopen end -UnknownScript_0xa03d2: +.Huey: farwritetext UnknownText_0x1748ea keeptextopen end -UnknownScript_0xa03d8: +.Gaven: farwritetext UnknownText_0x174bc5 keeptextopen end -UnknownScript_0xa03de: +.Jose: farwritetext UnknownText_0x17507d keeptextopen end -UnknownScript_0xa03e4: +.Joey: farwritetext UnknownText_0x175693 keeptextopen end -UnknownScript_0xa03ea: +.Wade: farwritetext UnknownText_0x175976 keeptextopen end -UnknownScript_0xa03f0: +.Ralph: farwritetext UnknownText_0x175d40 keeptextopen end -UnknownScript_0xa03f6: +.Anthony: farwritetext UnknownText_0x176bee keeptextopen end -UnknownScript_0xa03fc: +.Todd: farwritetext UnknownText_0x176f60 keeptextopen end -UnknownScript_0xa0402: +.Arnie: farwritetext UnknownText_0x64ada keeptextopen end -UnknownScript_0xa0408: +.Alan: farwritetext UnknownText_0x64da4 keeptextopen end -UnknownScript_0xa040e: +.Chad: farwritetext UnknownText_0x65419 keeptextopen end -UnknownScript_0xa0414: +.Tully: farwritetext UnknownText_0x65f17 keeptextopen end -UnknownScript_0xa041a: +.Brent: farwritetext UnknownText_0x66214 keeptextopen end -UnknownScript_0xa0420: +.Vance: farwritetext UnknownText_0x66a3a keeptextopen end -UnknownScript_0xa0426: +.Wilton: farwritetext UnknownText_0x66bf3 keeptextopen end -UnknownScript_0xa042c: +.Parry: farwritetext UnknownText_0x67096 keeptextopen end UnknownScript_0xa0432: checkcode VAR_CALLERID - if_equal $c, UnknownScript_0xa0450 - if_equal $e, UnknownScript_0xa0456 - if_equal $12, UnknownScript_0xa045c - if_equal $15, UnknownScript_0xa0462 - if_equal $1a, UnknownScript_0xa0468 - if_equal $1f, UnknownScript_0xa046e - if_equal $24, UnknownScript_0xa0474 - -UnknownScript_0xa0450: + if_equal PHONE_COOLTRAINERF_BETH, .Beth + if_equal PHONE_COOLTRAINERF_REENA, .Reena + if_equal PHONE_PICNICKER_LIZ, .Liz + if_equal PHONE_PICNICKER_GINA, .Gina + if_equal PHONE_LASS_DANA, .Dana + if_equal PHONE_PICNICKER_TIFFANY, .Tiffany + if_equal PHONE_PICNICKER_ERIN, .Erin + +.Beth: farwritetext UnknownText_0x174e4e keeptextopen end -UnknownScript_0xa0456: +.Reena: farwritetext UnknownText_0x17543a keeptextopen end -UnknownScript_0xa045c: +.Liz: farwritetext UnknownText_0x17610a keeptextopen end -UnknownScript_0xa0462: +.Gina: farwritetext UnknownText_0x1772e2 keeptextopen end -UnknownScript_0xa0468: +.Dana: farwritetext UnknownText_0x65091 keeptextopen end -UnknownScript_0xa046e: +.Tiffany: farwritetext UnknownText_0x66730 keeptextopen end -UnknownScript_0xa0474: +.Erin: farwritetext UnknownText_0x6722e keeptextopen end @@ -690,147 +690,147 @@ UnknownScript_0xa047f: UnknownScript_0xa0484: checkcode VAR_CALLERID - if_equal $5, UnknownScript_0xa04d6 - if_equal $7, UnknownScript_0xa04db - if_equal $b, UnknownScript_0xa04e0 - if_equal $d, UnknownScript_0xa04e5 - if_equal $f, UnknownScript_0xa04ea - if_equal $10, UnknownScript_0xa04ef - if_equal $11, UnknownScript_0xa04f4 - if_equal $13, UnknownScript_0xa04f9 - if_equal $14, UnknownScript_0xa04fe - if_equal $16, UnknownScript_0xa0503 - if_equal $17, UnknownScript_0xa0508 - if_equal $18, UnknownScript_0xa050d - if_equal $1b, UnknownScript_0xa0512 - if_equal $1c, UnknownScript_0xa0517 - if_equal $1d, UnknownScript_0xa051c - if_equal $1e, UnknownScript_0xa0521 - if_equal $20, UnknownScript_0xa0526 - if_equal $21, UnknownScript_0xa052b - if_equal $22, UnknownScript_0xa0530 - if_equal $23, UnknownScript_0xa0535 - -UnknownScript_0xa04d6: + if_equal PHONE_SCHOOLBOY_JACK, .Jack + if_equal PHONE_SAILOR_HUEY, .Huey + if_equal PHONE_COOLTRAINERM_GAVEN, .Gaven + if_equal PHONE_BIRDKEEPER_JOSE, .Jose + if_equal PHONE_YOUNGSTER_JOEY, .Joey + if_equal PHONE_BUG_CATCHER_WADE, .Wade + if_equal PHONE_FISHER_RALPH, .Ralph + if_equal PHONE_HIKER_ANTHONY, .Anthony + if_equal PHONE_CAMPER_TODD, .Todd + if_equal PHONE_JUGGLER_IRWIN, .Irwin + if_equal PHONE_BUG_CATCHER_ARNIE, .Arnie + if_equal PHONE_SCHOOLBOY_ALAN, .Alan + if_equal PHONE_SCHOOLBOY_CHAD, .Chad + if_equal PHONE_POKEFANM_DEREK, .Derek + if_equal PHONE_FISHER_TULLY, .Tully + if_equal PHONE_POKEMANIAC_BRENT, .Brent + if_equal PHONE_BIRDKEEPER_VANCE, .Vance + if_equal PHONE_FISHER_WILTON, .Wilton + if_equal PHONE_BLACKBELT_KENJI, .Kenji + if_equal PHONE_HIKER_PARRY, .Parry + +.Jack: farwritetext UnknownText_0x174251 end -UnknownScript_0xa04db: +.Huey: farwritetext UnknownText_0x174962 end -UnknownScript_0xa04e0: +.Gaven: farwritetext UnknownText_0x174c0e end -UnknownScript_0xa04e5: +.Jose: farwritetext UnknownText_0x175106 end -UnknownScript_0xa04ea: +.Joey: farwritetext UnknownText_0x17570a end -UnknownScript_0xa04ef: +.Wade: farwritetext UnknownText_0x1759e7 end -UnknownScript_0xa04f4: +.Ralph: farwritetext UnknownText_0x175db7 end -UnknownScript_0xa04f9: +.Anthony: farwritetext UnknownText_0x176c47 end -UnknownScript_0xa04fe: +.Todd: farwritetext UnknownText_0x176fdb end -UnknownScript_0xa0503: +.Irwin: farwritetext UnknownText_0x64000 end -UnknownScript_0xa0508: +.Arnie: farwritetext UnknownText_0x64b48 end -UnknownScript_0xa050d: +.Alan: farwritetext UnknownText_0x64e1f end -UnknownScript_0xa0512: +.Chad: farwritetext UnknownText_0x65471 end -UnknownScript_0xa0517: +.Derek: farwritetext UnknownText_0x65c4e end -UnknownScript_0xa051c: +.Tully: farwritetext UnknownText_0x65f6e end -UnknownScript_0xa0521: +.Brent: farwritetext UnknownText_0x662a9 end -UnknownScript_0xa0526: +.Vance: farwritetext UnknownText_0x66a93 end -UnknownScript_0xa052b: +.Wilton: farwritetext UnknownText_0x66c58 end -UnknownScript_0xa0530: +.Kenji: farwritetext UnknownText_0x66dab end -UnknownScript_0xa0535: +.Parry: farwritetext UnknownText_0x670eb end UnknownScript_0xa053a: checkcode VAR_CALLERID - if_equal $6, UnknownScript_0xa055c - if_equal $c, UnknownScript_0xa0561 - if_equal $e, UnknownScript_0xa0566 - if_equal $12, UnknownScript_0xa056b - if_equal $15, UnknownScript_0xa0570 - if_equal $1a, UnknownScript_0xa0575 - if_equal $1f, UnknownScript_0xa057a - if_equal $24, UnknownScript_0xa057f - -UnknownScript_0xa055c: + if_equal PHONE_POKEFAN_BEVERLY, .Beverly + if_equal PHONE_COOLTRAINERF_BETH, .Beth + if_equal PHONE_COOLTRAINERF_REENA, .Reena + if_equal PHONE_PICNICKER_LIZ, .Liz + if_equal PHONE_PICNICKER_GINA, .Gina + if_equal PHONE_LASS_DANA, .Dana + if_equal PHONE_PICNICKER_TIFFANY, .Tiffany + if_equal PHONE_PICNICKER_ERIN, .Erin + +.Beverly: farwritetext UnknownText_0x1747ac end -UnknownScript_0xa0561: +.Beth: farwritetext UnknownText_0x174eb7 end -UnknownScript_0xa0566: +.Reena: farwritetext UnknownText_0x175488 end -UnknownScript_0xa056b: +.Liz: farwritetext UnknownText_0x17620a end -UnknownScript_0xa0570: +.Gina: farwritetext UnknownText_0x177361 end -UnknownScript_0xa0575: +.Dana: farwritetext UnknownText_0x650e2 end -UnknownScript_0xa057a: +.Tiffany: farwritetext UnknownText_0x667f7 end -UnknownScript_0xa057f: +.Erin: farwritetext UnknownText_0x67281 end @@ -856,15 +856,15 @@ UnknownScript_0xa05a0: UnknownScript_0xa05a4: checkcode VAR_CALLERID - if_equal $10, UnknownScript_0xa05ae - if_equal $1c, UnknownScript_0xa05b6 + if_equal PHONE_BUG_CATCHER_WADE, .Wade + if_equal PHONE_POKEFANM_DEREK, .Derek -UnknownScript_0xa05ae: +.Wade: farwritetext UnknownText_0x1759f7 keeptextopen jump UnknownScript_0xa0484 -UnknownScript_0xa05b6: +.Derek: farwritetext UnknownText_0x65c66 keeptextopen jump UnknownScript_0xa0484 @@ -896,57 +896,57 @@ UnknownScript_0xa05de: UnknownScript_0xa05e6: checkcode VAR_CALLERID - if_equal $d, UnknownScript_0xa0600 - if_equal $10, UnknownScript_0xa0605 - if_equal $18, UnknownScript_0xa060a - if_equal $1c, UnknownScript_0xa060f - if_equal $1d, UnknownScript_0xa0614 - if_equal $21, UnknownScript_0xa0619 - -UnknownScript_0xa0600: + if_equal PHONE_BIRDKEEPER_JOSE, .Jose + if_equal PHONE_BUG_CATCHER_WADE, .Wade + if_equal PHONE_SCHOOLBOY_ALAN, .Alan + if_equal PHONE_POKEFANM_DEREK, .Derek + if_equal PHONE_FISHER_TULLY, .Tully + if_equal PHONE_FISHER_WILTON, .Wilton + +.Jose: farwritetext UnknownText_0x175116 end -UnknownScript_0xa0605: +.Wade: farwritetext UnknownText_0x175a60 end -UnknownScript_0xa060a: +.Alan: farwritetext UnknownText_0x64e2f end -UnknownScript_0xa060f: +.Derek: farwritetext UnknownText_0x65cf9 end -UnknownScript_0xa0614: +.Tully: farwritetext UnknownText_0x65f88 end -UnknownScript_0xa0619: +.Wilton: farwritetext UnknownText_0x66c6b end UnknownScript_0xa061e: checkcode VAR_CALLERID - if_equal $6, UnknownScript_0xa0630 - if_equal $15, UnknownScript_0xa0635 - if_equal $1a, UnknownScript_0xa063a - if_equal $1f, UnknownScript_0xa063f + if_equal PHONE_POKEFAN_BEVERLY, .Beverly + if_equal PHONE_PICNICKER_GINA, .Gina + if_equal PHONE_LASS_DANA, .Dana + if_equal PHONE_PICNICKER_TIFFANY, .Tiffany -UnknownScript_0xa0630: +.Beverly: farwritetext UnknownText_0x1747cc end -UnknownScript_0xa0635: +.Gina: farwritetext UnknownText_0x1773e7 end -UnknownScript_0xa063a: +.Dana: farwritetext UnknownText_0x650ec end -UnknownScript_0xa063f: +.Tiffany: farwritetext UnknownText_0x66801 end diff --git a/engine/phone_scripts.asm b/engine/phone_scripts.asm index 33541e224..5d0795766 100644 --- a/engine/phone_scripts.asm +++ b/engine/phone_scripts.asm @@ -1914,369 +1914,369 @@ UnknownScript_0xbde4e: checknite iftrue UnknownScript_0xbdfec checkcode VAR_CALLERID - if_equal PHONE_SCHOOLBOY_JACK, UnknownScript_0xbdeaa - if_equal PHONE_SAILOR_HUEY, UnknownScript_0xbdeb0 - if_equal PHONE_COOLTRAINERM_GAVEN, UnknownScript_0xbdeb6 - if_equal PHONE_BIRDKEEPER_JOSE, UnknownScript_0xbdebc - if_equal PHONE_YOUNGSTER_JOEY, UnknownScript_0xbdec2 - if_equal PHONE_BUG_CATCHER_WADE, UnknownScript_0xbdec8 - if_equal PHONE_FISHER_RALPH, UnknownScript_0xbdece - if_equal PHONE_HIKER_ANTHONY, UnknownScript_0xbded4 - if_equal PHONE_CAMPER_TODD, UnknownScript_0xbdeda - if_equal PHONE_JUGGLER_IRWIN, UnknownScript_0xbdee0 - if_equal PHONE_BUG_CATCHER_ARNIE, UnknownScript_0xbdee6 - if_equal PHONE_SCHOOLBOY_ALAN, UnknownScript_0xbdeec - if_equal PHONE_SCHOOLBOY_CHAD, UnknownScript_0xbdef2 - if_equal PHONE_POKEFANM_DEREK, UnknownScript_0xbdef8 - if_equal PHONE_FISHER_TULLY, UnknownScript_0xbdefe - if_equal PHONE_POKEMANIAC_BRENT, UnknownScript_0xbdf04 - if_equal PHONE_BIRDKEEPER_VANCE, UnknownScript_0xbdf0a - if_equal PHONE_FISHER_WILTON, UnknownScript_0xbdf10 - if_equal PHONE_BLACKBELT_KENJI, UnknownScript_0xbdf16 - if_equal PHONE_HIKER_PARRY, UnknownScript_0xbdf1c - -UnknownScript_0xbdeaa: + if_equal PHONE_SCHOOLBOY_JACK, .Jack + if_equal PHONE_SAILOR_HUEY, .Huey + if_equal PHONE_COOLTRAINERM_GAVEN, .Gaven + if_equal PHONE_BIRDKEEPER_JOSE, .Jose + if_equal PHONE_YOUNGSTER_JOEY, .Joey + if_equal PHONE_BUG_CATCHER_WADE, .Wade + if_equal PHONE_FISHER_RALPH, .Ralph + if_equal PHONE_HIKER_ANTHONY, .Anthony + if_equal PHONE_CAMPER_TODD, .Todd + if_equal PHONE_JUGGLER_IRWIN, .Irwin + if_equal PHONE_BUG_CATCHER_ARNIE, .Arnie + if_equal PHONE_SCHOOLBOY_ALAN, .Alan + if_equal PHONE_SCHOOLBOY_CHAD, .Chad + if_equal PHONE_POKEFANM_DEREK, .Derek + if_equal PHONE_FISHER_TULLY, .Tully + if_equal PHONE_POKEMANIAC_BRENT, .Brent + if_equal PHONE_BIRDKEEPER_VANCE, .Vance + if_equal PHONE_FISHER_WILTON, .Wilton + if_equal PHONE_BLACKBELT_KENJI, .Kenji + if_equal PHONE_HIKER_PARRY, .Parry + +.Jack: farwritetext UnknownText_0x1b4dc5 keeptextopen end -UnknownScript_0xbdeb0: +.Huey: farwritetext UnknownText_0x1b5073 keeptextopen end -UnknownScript_0xbdeb6: +.Gaven: farwritetext UnknownText_0x1b5270 keeptextopen end -UnknownScript_0xbdebc: +.Jose: farwritetext UnknownText_0x1b55ae keeptextopen end -UnknownScript_0xbdec2: +.Joey: farwritetext UnknownText_0x1b589a keeptextopen end -UnknownScript_0xbdec8: +.Wade: farwritetext UnknownText_0x1b5a3b keeptextopen end -UnknownScript_0xbdece: +.Ralph: farwritetext UnknownText_0x1b5c10 keeptextopen end -UnknownScript_0xbded4: +.Anthony: farwritetext UnknownText_0x1b5f7a keeptextopen end -UnknownScript_0xbdeda: +.Todd: farwritetext UnknownText_0x1b60f5 keeptextopen end -UnknownScript_0xbdee0: +.Irwin: farwritetext UnknownText_0x1b638c keeptextopen end -UnknownScript_0xbdee6: +.Arnie: farwritetext UnknownText_0x1b6454 keeptextopen end -UnknownScript_0xbdeec: +.Alan: farwritetext UnknownText_0x1b659d keeptextopen end -UnknownScript_0xbdef2: +.Chad: farwritetext UnknownText_0x1b67e2 keeptextopen end -UnknownScript_0xbdef8: +.Derek: farwritetext UnknownText_0x1b69a8 keeptextopen end -UnknownScript_0xbdefe: +.Tully: farwritetext UnknownText_0x1b6b39 keeptextopen end -UnknownScript_0xbdf04: +.Brent: farwritetext UnknownText_0x1b6c96 keeptextopen end -UnknownScript_0xbdf0a: +.Vance: farwritetext UnknownText_0x1b7019 keeptextopen end -UnknownScript_0xbdf10: +.Wilton: farwritetext UnknownText_0x1b71d5 keeptextopen end -UnknownScript_0xbdf16: +.Kenji: farwritetext UnknownText_0x1b730b keeptextopen end -UnknownScript_0xbdf1c: +.Parry: farwritetext UnknownText_0x1b73c7 keeptextopen end UnknownScript_0xbdf22: checkcode VAR_CALLERID - if_equal PHONE_SCHOOLBOY_JACK, UnknownScript_0xbdf74 - if_equal PHONE_SAILOR_HUEY, UnknownScript_0xbdf7a - if_equal PHONE_COOLTRAINERM_GAVEN, UnknownScript_0xbdf80 - if_equal PHONE_BIRDKEEPER_JOSE, UnknownScript_0xbdf86 - if_equal PHONE_YOUNGSTER_JOEY, UnknownScript_0xbdf8c - if_equal PHONE_BUG_CATCHER_WADE, UnknownScript_0xbdf92 - if_equal PHONE_FISHER_RALPH, UnknownScript_0xbdf98 - if_equal PHONE_HIKER_ANTHONY, UnknownScript_0xbdf9e - if_equal PHONE_CAMPER_TODD, UnknownScript_0xbdfa4 - if_equal PHONE_JUGGLER_IRWIN, UnknownScript_0xbdfaa - if_equal PHONE_BUG_CATCHER_ARNIE, UnknownScript_0xbdfb0 - if_equal PHONE_SCHOOLBOY_ALAN, UnknownScript_0xbdfb6 - if_equal PHONE_SCHOOLBOY_CHAD, UnknownScript_0xbdfbc - if_equal PHONE_POKEFANM_DEREK, UnknownScript_0xbdfc2 - if_equal PHONE_FISHER_TULLY, UnknownScript_0xbdfc8 - if_equal PHONE_POKEMANIAC_BRENT, UnknownScript_0xbdfce - if_equal PHONE_BIRDKEEPER_VANCE, UnknownScript_0xbdfd4 - if_equal PHONE_FISHER_WILTON, UnknownScript_0xbdfda - if_equal PHONE_BLACKBELT_KENJI, UnknownScript_0xbdfe0 - if_equal PHONE_HIKER_PARRY, UnknownScript_0xbdfe6 - -UnknownScript_0xbdf74: + if_equal PHONE_SCHOOLBOY_JACK, .Jack + if_equal PHONE_SAILOR_HUEY, .Huey + if_equal PHONE_COOLTRAINERM_GAVEN, .Gaven + if_equal PHONE_BIRDKEEPER_JOSE, .Jose + if_equal PHONE_YOUNGSTER_JOEY, .Joey + if_equal PHONE_BUG_CATCHER_WADE, .Wade + if_equal PHONE_FISHER_RALPH, .Ralph + if_equal PHONE_HIKER_ANTHONY, .Anthony + if_equal PHONE_CAMPER_TODD, .Todd + if_equal PHONE_JUGGLER_IRWIN, .Irwin + if_equal PHONE_BUG_CATCHER_ARNIE, .Arnie + if_equal PHONE_SCHOOLBOY_ALAN, .Alan + if_equal PHONE_SCHOOLBOY_CHAD, .Chad + if_equal PHONE_POKEFANM_DEREK, .Derek + if_equal PHONE_FISHER_TULLY, .Tully + if_equal PHONE_POKEMANIAC_BRENT, .Brent + if_equal PHONE_BIRDKEEPER_VANCE, .Vance + if_equal PHONE_FISHER_WILTON, .Wilton + if_equal PHONE_BLACKBELT_KENJI, .Kenji + if_equal PHONE_HIKER_PARRY, .Parry + +.Jack: farwritetext UnknownText_0x1b4ded keeptextopen end -UnknownScript_0xbdf7a: +.Huey: farwritetext UnknownText_0x1b509b keeptextopen end -UnknownScript_0xbdf80: +.Gaven: farwritetext UnknownText_0x1b52a5 keeptextopen end -UnknownScript_0xbdf86: +.Jose: farwritetext UnknownText_0x1b55da keeptextopen end -UnknownScript_0xbdf8c: +.Joey: farwritetext UnknownText_0x1b58c2 keeptextopen end -UnknownScript_0xbdf92: +.Wade: farwritetext UnknownText_0x1b5a74 keeptextopen end -UnknownScript_0xbdf98: +.Ralph: farwritetext UnknownText_0x1b5c63 keeptextopen end -UnknownScript_0xbdf9e: +.Anthony: farwritetext UnknownText_0x1b5f9e keeptextopen end -UnknownScript_0xbdfa4: +.Todd: farwritetext UnknownText_0x1b611b keeptextopen end -UnknownScript_0xbdfaa: +.Irwin: farwritetext UnknownText_0x1b63a8 keeptextopen end -UnknownScript_0xbdfb0: +.Arnie: farwritetext UnknownText_0x1b647e keeptextopen end -UnknownScript_0xbdfb6: +.Alan: farwritetext UnknownText_0x1b65c7 keeptextopen end -UnknownScript_0xbdfbc: +.Chad: farwritetext UnknownText_0x1b680e keeptextopen end -UnknownScript_0xbdfc2: +.Derek: farwritetext UnknownText_0x1b69d2 keeptextopen end -UnknownScript_0xbdfc8: +.Tully: farwritetext UnknownText_0x1b6b65 keeptextopen end -UnknownScript_0xbdfce: +.Brent: farwritetext UnknownText_0x1b6cc6 keeptextopen end -UnknownScript_0xbdfd4: +.Vance: farwritetext UnknownText_0x1b7057 keeptextopen end -UnknownScript_0xbdfda: +.Wilton: farwritetext UnknownText_0x1b71fc keeptextopen end -UnknownScript_0xbdfe0: +.Kenji: farwritetext UnknownText_0x1b7331 keeptextopen end -UnknownScript_0xbdfe6: +.Parry: farwritetext UnknownText_0x1b73ef keeptextopen end UnknownScript_0xbdfec: checkcode VAR_CALLERID - if_equal PHONE_SCHOOLBOY_JACK, UnknownScript_0xbe03e - if_equal PHONE_SAILOR_HUEY, UnknownScript_0xbe044 - if_equal PHONE_COOLTRAINERM_GAVEN, UnknownScript_0xbe04a - if_equal PHONE_BIRDKEEPER_JOSE, UnknownScript_0xbe050 - if_equal PHONE_YOUNGSTER_JOEY, UnknownScript_0xbe056 - if_equal PHONE_BUG_CATCHER_WADE, UnknownScript_0xbe05c - if_equal PHONE_FISHER_RALPH, UnknownScript_0xbe062 - if_equal PHONE_HIKER_ANTHONY, UnknownScript_0xbe068 - if_equal PHONE_CAMPER_TODD, UnknownScript_0xbe06e - if_equal PHONE_JUGGLER_IRWIN, UnknownScript_0xbe074 - if_equal PHONE_BUG_CATCHER_ARNIE, UnknownScript_0xbe07a - if_equal PHONE_SCHOOLBOY_ALAN, UnknownScript_0xbe080 - if_equal PHONE_SCHOOLBOY_CHAD, UnknownScript_0xbe086 - if_equal PHONE_POKEFANM_DEREK, UnknownScript_0xbe08c - if_equal PHONE_FISHER_TULLY, UnknownScript_0xbe092 - if_equal PHONE_POKEMANIAC_BRENT, UnknownScript_0xbe098 - if_equal PHONE_BIRDKEEPER_VANCE, UnknownScript_0xbe09e - if_equal PHONE_FISHER_WILTON, UnknownScript_0xbe0a4 - if_equal PHONE_BLACKBELT_KENJI, UnknownScript_0xbe0aa - if_equal PHONE_HIKER_PARRY, UnknownScript_0xbe0b0 - -UnknownScript_0xbe03e: + if_equal PHONE_SCHOOLBOY_JACK, .Jack + if_equal PHONE_SAILOR_HUEY, .Huey + if_equal PHONE_COOLTRAINERM_GAVEN, .Gaven + if_equal PHONE_BIRDKEEPER_JOSE, .Jose + if_equal PHONE_YOUNGSTER_JOEY, .Joey + if_equal PHONE_BUG_CATCHER_WADE, .Wade + if_equal PHONE_FISHER_RALPH, .Ralph + if_equal PHONE_HIKER_ANTHONY, .Anthony + if_equal PHONE_CAMPER_TODD, .Todd + if_equal PHONE_JUGGLER_IRWIN, .Irwin + if_equal PHONE_BUG_CATCHER_ARNIE, .Arnie + if_equal PHONE_SCHOOLBOY_ALAN, .Alan + if_equal PHONE_SCHOOLBOY_CHAD, .Chad + if_equal PHONE_POKEFANM_DEREK, .Derek + if_equal PHONE_FISHER_TULLY, .Tully + if_equal PHONE_POKEMANIAC_BRENT, .Brent + if_equal PHONE_BIRDKEEPER_VANCE, .Vance + if_equal PHONE_FISHER_WILTON, .Wilton + if_equal PHONE_BLACKBELT_KENJI, .Kenji + if_equal PHONE_HIKER_PARRY, .Parry + +.Jack: farwritetext UnknownText_0x1b4e16 keeptextopen end -UnknownScript_0xbe044: +.Huey: farwritetext UnknownText_0x1b50c2 keeptextopen end -UnknownScript_0xbe04a: +.Gaven: farwritetext UnknownText_0x1b52cc keeptextopen end -UnknownScript_0xbe050: +.Jose: farwritetext UnknownText_0x1b55fc keeptextopen end -UnknownScript_0xbe056: +.Joey: farwritetext UnknownText_0x1b58ea keeptextopen end -UnknownScript_0xbe05c: +.Wade: farwritetext UnknownText_0x1b5a9f keeptextopen end -UnknownScript_0xbe062: +.Ralph: farwritetext UnknownText_0x1b5cb6 keeptextopen end -UnknownScript_0xbe068: +.Anthony: farwritetext UnknownText_0x1b5fc9 keeptextopen end -UnknownScript_0xbe06e: +.Todd: farwritetext UnknownText_0x1b6149 keeptextopen end -UnknownScript_0xbe074: +.Irwin: farwritetext UnknownText_0x1b63c4 keeptextopen end -UnknownScript_0xbe07a: +.Arnie: farwritetext UnknownText_0x1b64a8 keeptextopen end -UnknownScript_0xbe080: +.Alan: farwritetext UnknownText_0x1b65e3 keeptextopen end -UnknownScript_0xbe086: +.Chad: farwritetext UnknownText_0x1b6836 keeptextopen end -UnknownScript_0xbe08c: +.Derek: farwritetext UnknownText_0x1b69f8 keeptextopen end -UnknownScript_0xbe092: +.Tully: farwritetext UnknownText_0x1b6b92 keeptextopen end -UnknownScript_0xbe098: +.Brent: farwritetext UnknownText_0x1b6cf6 keeptextopen end -UnknownScript_0xbe09e: +.Vance: farwritetext UnknownText_0x1b7092 keeptextopen end -UnknownScript_0xbe0a4: +.Wilton: farwritetext UnknownText_0x1b722a keeptextopen end -UnknownScript_0xbe0aa: +.Kenji: farwritetext UnknownText_0x1b7357 keeptextopen end -UnknownScript_0xbe0b0: +.Parry: farwritetext UnknownText_0x1b7417 keeptextopen end @@ -2287,153 +2287,153 @@ UnknownScript_0xbe0b6: checknite iftrue UnknownScript_0xbe164 checkcode VAR_CALLERID - if_equal PHONE_POKEFAN_BEVERLY, UnknownScript_0xbe0e2 - if_equal PHONE_COOLTRAINERF_BETH, UnknownScript_0xbe0e8 - if_equal PHONE_COOLTRAINERF_REENA, UnknownScript_0xbe0ee - if_equal PHONE_PICNICKER_LIZ, UnknownScript_0xbe0f4 - if_equal PHONE_PICNICKER_GINA, UnknownScript_0xbe0fa - if_equal PHONE_LASS_DANA, UnknownScript_0xbe100 - if_equal PHONE_PICNICKER_TIFFANY, UnknownScript_0xbe106 - if_equal PHONE_PICNICKER_ERIN, UnknownScript_0xbe10c - -UnknownScript_0xbe0e2: + if_equal PHONE_POKEFAN_BEVERLY, .Beverly + if_equal PHONE_COOLTRAINERF_BETH, .Beth + if_equal PHONE_COOLTRAINERF_REENA, .Reena + if_equal PHONE_PICNICKER_LIZ, .Liz + if_equal PHONE_PICNICKER_GINA, .Gina + if_equal PHONE_LASS_DANA, .Dana + if_equal PHONE_PICNICKER_TIFFANY, .Tiffany + if_equal PHONE_PICNICKER_ERIN, .Erin + +.Beverly: farwritetext UnknownText_0x1b4f21 keeptextopen end -UnknownScript_0xbe0e8: +.Beth: farwritetext UnknownText_0x1b53f7 keeptextopen end -UnknownScript_0xbe0ee: +.Reena: farwritetext UnknownText_0x1b5702 keeptextopen end -UnknownScript_0xbe0f4: +.Liz: farwritetext UnknownText_0x1b5d9f keeptextopen end -UnknownScript_0xbe0fa: +.Gina: farwritetext UnknownText_0x1b626a keeptextopen end -UnknownScript_0xbe100: +.Dana: farwritetext UnknownText_0x1b66c8 keeptextopen end -UnknownScript_0xbe106: +.Tiffany: farwritetext UnknownText_0x1b6e7c keeptextopen end -UnknownScript_0xbe10c: +.Erin: farwritetext UnknownText_0x1b751a keeptextopen end UnknownScript_0xbe112: checkcode VAR_CALLERID - if_equal PHONE_POKEFAN_BEVERLY, UnknownScript_0xbe134 - if_equal PHONE_COOLTRAINERF_BETH, UnknownScript_0xbe13a - if_equal PHONE_COOLTRAINERF_REENA, UnknownScript_0xbe140 - if_equal PHONE_PICNICKER_LIZ, UnknownScript_0xbe146 - if_equal PHONE_PICNICKER_GINA, UnknownScript_0xbe14c - if_equal PHONE_LASS_DANA, UnknownScript_0xbe152 - if_equal PHONE_PICNICKER_TIFFANY, UnknownScript_0xbe158 - if_equal PHONE_PICNICKER_ERIN, UnknownScript_0xbe15e - -UnknownScript_0xbe134: + if_equal PHONE_POKEFAN_BEVERLY, .Beverly + if_equal PHONE_COOLTRAINERF_BETH, .Beth + if_equal PHONE_COOLTRAINERF_REENA, .Reena + if_equal PHONE_PICNICKER_LIZ, .Liz + if_equal PHONE_PICNICKER_GINA, .Gina + if_equal PHONE_LASS_DANA, .Dana + if_equal PHONE_PICNICKER_TIFFANY, .Tiffany + if_equal PHONE_PICNICKER_ERIN, .Erin + +.Beverly: farwritetext UnknownText_0x1b4f4d keeptextopen end -UnknownScript_0xbe13a: +.Beth: farwritetext UnknownText_0x1b5424 keeptextopen end -UnknownScript_0xbe140: +.Reena: farwritetext UnknownText_0x1b572e keeptextopen end -UnknownScript_0xbe146: +.Liz: farwritetext UnknownText_0x1b5dcc keeptextopen end -UnknownScript_0xbe14c: +.Gina: farwritetext UnknownText_0x1b6296 keeptextopen end -UnknownScript_0xbe152: +.Dana: farwritetext UnknownText_0x1b66ec keeptextopen end -UnknownScript_0xbe158: +.Tiffany: farwritetext UnknownText_0x1b6ea6 keeptextopen end -UnknownScript_0xbe15e: +.Erin: farwritetext UnknownText_0x1b7548 keeptextopen end UnknownScript_0xbe164: checkcode VAR_CALLERID - if_equal PHONE_POKEFAN_BEVERLY, UnknownScript_0xbe186 - if_equal PHONE_COOLTRAINERF_BETH, UnknownScript_0xbe18c - if_equal PHONE_COOLTRAINERF_REENA, UnknownScript_0xbe192 - if_equal PHONE_PICNICKER_LIZ, UnknownScript_0xbe198 - if_equal PHONE_PICNICKER_GINA, UnknownScript_0xbe19e - if_equal PHONE_LASS_DANA, UnknownScript_0xbe1a4 - if_equal PHONE_PICNICKER_TIFFANY, UnknownScript_0xbe1aa - if_equal PHONE_PICNICKER_ERIN, UnknownScript_0xbe1b0 - -UnknownScript_0xbe186: + if_equal PHONE_POKEFAN_BEVERLY, .Beverly + if_equal PHONE_COOLTRAINERF_BETH, .Beth + if_equal PHONE_COOLTRAINERF_REENA, .Reena + if_equal PHONE_PICNICKER_LIZ, .Liz + if_equal PHONE_PICNICKER_GINA, .Gina + if_equal PHONE_LASS_DANA, .Dana + if_equal PHONE_PICNICKER_TIFFANY, .Tiffany + if_equal PHONE_PICNICKER_ERIN, .Erin + +.Beverly: farwritetext UnknownText_0x1b4f75 keeptextopen end -UnknownScript_0xbe18c: +.Beth: farwritetext UnknownText_0x1b5446 keeptextopen end -UnknownScript_0xbe192: +.Reena: farwritetext UnknownText_0x1b575a keeptextopen end -UnknownScript_0xbe198: +.Liz: farwritetext UnknownText_0x1b5df8 keeptextopen end -UnknownScript_0xbe19e: +.Gina: farwritetext UnknownText_0x1b62c5 keeptextopen end -UnknownScript_0xbe1a4: +.Dana: farwritetext UnknownText_0x1b6713 keeptextopen end -UnknownScript_0xbe1aa: +.Tiffany: farwritetext UnknownText_0x1b6ec9 keeptextopen end -UnknownScript_0xbe1b0: +.Erin: farwritetext UnknownText_0x1b756f keeptextopen end @@ -2444,369 +2444,369 @@ UnknownScript_0xbe1b6: checknite iftrue UnknownScript_0xbe354 checkcode VAR_CALLERID - if_equal PHONE_SCHOOLBOY_JACK, UnknownScript_0xbe212 - if_equal PHONE_SAILOR_HUEY, UnknownScript_0xbe218 - if_equal PHONE_COOLTRAINERM_GAVEN, UnknownScript_0xbe21e - if_equal PHONE_BIRDKEEPER_JOSE, UnknownScript_0xbe224 - if_equal PHONE_YOUNGSTER_JOEY, UnknownScript_0xbe22a - if_equal PHONE_BUG_CATCHER_WADE, UnknownScript_0xbe230 - if_equal PHONE_FISHER_RALPH, UnknownScript_0xbe236 - if_equal PHONE_HIKER_ANTHONY, UnknownScript_0xbe23c - if_equal PHONE_CAMPER_TODD, UnknownScript_0xbe242 - if_equal PHONE_JUGGLER_IRWIN, UnknownScript_0xbe248 - if_equal PHONE_BUG_CATCHER_ARNIE, UnknownScript_0xbe24e - if_equal PHONE_SCHOOLBOY_ALAN, UnknownScript_0xbe254 - if_equal PHONE_SCHOOLBOY_CHAD, UnknownScript_0xbe25a - if_equal PHONE_POKEFANM_DEREK, UnknownScript_0xbe260 - if_equal PHONE_FISHER_TULLY, UnknownScript_0xbe266 - if_equal PHONE_POKEMANIAC_BRENT, UnknownScript_0xbe26c - if_equal PHONE_BIRDKEEPER_VANCE, UnknownScript_0xbe272 - if_equal PHONE_FISHER_WILTON, UnknownScript_0xbe278 - if_equal PHONE_BLACKBELT_KENJI, UnknownScript_0xbe27e - if_equal PHONE_HIKER_PARRY, UnknownScript_0xbe284 - -UnknownScript_0xbe212: + if_equal PHONE_SCHOOLBOY_JACK, .Jack + if_equal PHONE_SAILOR_HUEY, .Huey + if_equal PHONE_COOLTRAINERM_GAVEN, .Gaven + if_equal PHONE_BIRDKEEPER_JOSE, .Jose + if_equal PHONE_YOUNGSTER_JOEY, .Joey + if_equal PHONE_BUG_CATCHER_WADE, .Wade + if_equal PHONE_FISHER_RALPH, .Ralph + if_equal PHONE_HIKER_ANTHONY, .Anthony + if_equal PHONE_CAMPER_TODD, .Todd + if_equal PHONE_JUGGLER_IRWIN, .Irwin + if_equal PHONE_BUG_CATCHER_ARNIE, .Arnie + if_equal PHONE_SCHOOLBOY_ALAN, .Alan + if_equal PHONE_SCHOOLBOY_CHAD, .Chad + if_equal PHONE_POKEFANM_DEREK, .Derek + if_equal PHONE_FISHER_TULLY, .Tully + if_equal PHONE_POKEMANIAC_BRENT, .Brent + if_equal PHONE_BIRDKEEPER_VANCE, .Vance + if_equal PHONE_FISHER_WILTON, .Wilton + if_equal PHONE_BLACKBELT_KENJI, .Kenji + if_equal PHONE_HIKER_PARRY, .Parry + +.Jack: farwritetext UnknownText_0x1b4e3e keeptextopen end -UnknownScript_0xbe218: +.Huey: farwritetext UnknownText_0x1b50e9 keeptextopen end -UnknownScript_0xbe21e: +.Gaven: farwritetext UnknownText_0x1b5301 keeptextopen end -UnknownScript_0xbe224: +.Jose: farwritetext UnknownText_0x1b5628 keeptextopen end -UnknownScript_0xbe22a: +.Joey: farwritetext UnknownText_0x1b5912 keeptextopen end -UnknownScript_0xbe230: +.Wade: farwritetext UnknownText_0x1b5ad8 keeptextopen end -UnknownScript_0xbe236: +.Ralph: farwritetext UnknownText_0x1b5d09 keeptextopen end -UnknownScript_0xbe23c: +.Anthony: farwritetext UnknownText_0x1b5ff6 keeptextopen end -UnknownScript_0xbe242: +.Todd: farwritetext UnknownText_0x1b616e keeptextopen end -UnknownScript_0xbe248: +.Irwin: farwritetext UnknownText_0x1b63e3 keeptextopen end -UnknownScript_0xbe24e: +.Arnie: farwritetext UnknownText_0x1b64d2 keeptextopen end -UnknownScript_0xbe254: +.Alan: farwritetext UnknownText_0x1b660d keeptextopen end -UnknownScript_0xbe25a: +.Chad: farwritetext UnknownText_0x1b6862 keeptextopen end -UnknownScript_0xbe260: +.Derek: farwritetext UnknownText_0x1b6a22 keeptextopen end -UnknownScript_0xbe266: +.Tully: farwritetext UnknownText_0x1b6bb9 keeptextopen end -UnknownScript_0xbe26c: +.Brent: farwritetext UnknownText_0x1b6d26 keeptextopen end -UnknownScript_0xbe272: +.Vance: farwritetext UnknownText_0x1b70e7 keeptextopen end -UnknownScript_0xbe278: +.Wilton: farwritetext UnknownText_0x1b725c keeptextopen end -UnknownScript_0xbe27e: +.Kenji: farwritetext UnknownText_0x1b737f keeptextopen end -UnknownScript_0xbe284: +.Parry: farwritetext UnknownText_0x1b743f keeptextopen end UnknownScript_0xbe28a: checkcode VAR_CALLERID - if_equal PHONE_SCHOOLBOY_JACK, UnknownScript_0xbe2dc - if_equal PHONE_SAILOR_HUEY, UnknownScript_0xbe2e2 - if_equal PHONE_COOLTRAINERM_GAVEN, UnknownScript_0xbe2e8 - if_equal PHONE_BIRDKEEPER_JOSE, UnknownScript_0xbe2ee - if_equal PHONE_YOUNGSTER_JOEY, UnknownScript_0xbe2f4 - if_equal PHONE_BUG_CATCHER_WADE, UnknownScript_0xbe2fa - if_equal PHONE_FISHER_RALPH, UnknownScript_0xbe300 - if_equal PHONE_HIKER_ANTHONY, UnknownScript_0xbe306 - if_equal PHONE_CAMPER_TODD, UnknownScript_0xbe30c - if_equal PHONE_JUGGLER_IRWIN, UnknownScript_0xbe312 - if_equal PHONE_BUG_CATCHER_ARNIE, UnknownScript_0xbe318 - if_equal PHONE_SCHOOLBOY_ALAN, UnknownScript_0xbe31e - if_equal PHONE_SCHOOLBOY_CHAD, UnknownScript_0xbe324 - if_equal PHONE_POKEFANM_DEREK, UnknownScript_0xbe32a - if_equal PHONE_FISHER_TULLY, UnknownScript_0xbe330 - if_equal PHONE_POKEMANIAC_BRENT, UnknownScript_0xbe336 - if_equal PHONE_BIRDKEEPER_VANCE, UnknownScript_0xbe33c - if_equal PHONE_FISHER_WILTON, UnknownScript_0xbe342 - if_equal PHONE_BLACKBELT_KENJI, UnknownScript_0xbe348 - if_equal PHONE_HIKER_PARRY, UnknownScript_0xbe34e - -UnknownScript_0xbe2dc: + if_equal PHONE_SCHOOLBOY_JACK, .Jack + if_equal PHONE_SAILOR_HUEY, .Huey + if_equal PHONE_COOLTRAINERM_GAVEN, .Gaven + if_equal PHONE_BIRDKEEPER_JOSE, .Jose + if_equal PHONE_YOUNGSTER_JOEY, .Joey + if_equal PHONE_BUG_CATCHER_WADE, .Wade + if_equal PHONE_FISHER_RALPH, .Ralph + if_equal PHONE_HIKER_ANTHONY, .Anthony + if_equal PHONE_CAMPER_TODD, .Todd + if_equal PHONE_JUGGLER_IRWIN, .Irwin + if_equal PHONE_BUG_CATCHER_ARNIE, .Arnie + if_equal PHONE_SCHOOLBOY_ALAN, .Alan + if_equal PHONE_SCHOOLBOY_CHAD, .Chad + if_equal PHONE_POKEFANM_DEREK, .Derek + if_equal PHONE_FISHER_TULLY, .Tully + if_equal PHONE_POKEMANIAC_BRENT, .Brent + if_equal PHONE_BIRDKEEPER_VANCE, .Vance + if_equal PHONE_FISHER_WILTON, .Wilton + if_equal PHONE_BLACKBELT_KENJI, .Kenji + if_equal PHONE_HIKER_PARRY, .Parry + +.Jack: farwritetext UnknownText_0x1b4e72 keeptextopen end -UnknownScript_0xbe2e2: +.Huey: farwritetext UnknownText_0x1b511a keeptextopen end -UnknownScript_0xbe2e8: +.Gaven: farwritetext UnknownText_0x1b5335 keeptextopen end -UnknownScript_0xbe2ee: +.Jose: farwritetext UnknownText_0x1b564c keeptextopen end -UnknownScript_0xbe2f4: +.Joey: farwritetext UnknownText_0x1b5948 keeptextopen end -UnknownScript_0xbe2fa: +.Wade: farwritetext UnknownText_0x1b5b0b keeptextopen end -UnknownScript_0xbe300: +.Ralph: farwritetext UnknownText_0x1b5d21 keeptextopen end -UnknownScript_0xbe306: +.Anthony: farwritetext UnknownText_0x1b6017 keeptextopen end -UnknownScript_0xbe30c: +.Todd: farwritetext UnknownText_0x1b618f keeptextopen end -UnknownScript_0xbe312: +.Irwin: farwritetext UnknownText_0x1b6407 keeptextopen end -UnknownScript_0xbe318: +.Arnie: farwritetext UnknownText_0x1b6506 keeptextopen end -UnknownScript_0xbe31e: +.Alan: farwritetext UnknownText_0x1b6624 keeptextopen end -UnknownScript_0xbe324: +.Chad: farwritetext UnknownText_0x1b6890 keeptextopen end -UnknownScript_0xbe32a: +.Derek: farwritetext UnknownText_0x1b6a56 keeptextopen end -UnknownScript_0xbe330: +.Tully: farwritetext UnknownText_0x1b6bef keeptextopen end -UnknownScript_0xbe336: +.Brent: farwritetext UnknownText_0x1b6d57 keeptextopen end -UnknownScript_0xbe33c: +.Vance: farwritetext UnknownText_0x1b7112 keeptextopen end -UnknownScript_0xbe342: +.Wilton: farwritetext UnknownText_0x1b7283 keeptextopen end -UnknownScript_0xbe348: +.Kenji: farwritetext UnknownText_0x1b7397 keeptextopen end -UnknownScript_0xbe34e: +.Parry: farwritetext UnknownText_0x1b746f keeptextopen end UnknownScript_0xbe354: checkcode VAR_CALLERID - if_equal PHONE_SCHOOLBOY_JACK, UnknownScript_0xbe3a6 - if_equal PHONE_SAILOR_HUEY, UnknownScript_0xbe3ac - if_equal PHONE_COOLTRAINERM_GAVEN, UnknownScript_0xbe3b2 - if_equal PHONE_BIRDKEEPER_JOSE, UnknownScript_0xbe3b8 - if_equal PHONE_YOUNGSTER_JOEY, UnknownScript_0xbe3be - if_equal PHONE_BUG_CATCHER_WADE, UnknownScript_0xbe3c4 - if_equal PHONE_FISHER_RALPH, UnknownScript_0xbe3ca - if_equal PHONE_HIKER_ANTHONY, UnknownScript_0xbe3d0 - if_equal PHONE_CAMPER_TODD, UnknownScript_0xbe3d6 - if_equal PHONE_JUGGLER_IRWIN, UnknownScript_0xbe3dc - if_equal PHONE_BUG_CATCHER_ARNIE, UnknownScript_0xbe3e2 - if_equal PHONE_SCHOOLBOY_ALAN, UnknownScript_0xbe3e8 - if_equal PHONE_SCHOOLBOY_CHAD, UnknownScript_0xbe3ee - if_equal PHONE_POKEFANM_DEREK, UnknownScript_0xbe3f4 - if_equal PHONE_FISHER_TULLY, UnknownScript_0xbe3fa - if_equal PHONE_POKEMANIAC_BRENT, UnknownScript_0xbe400 - if_equal PHONE_BIRDKEEPER_VANCE, UnknownScript_0xbe406 - if_equal PHONE_FISHER_WILTON, UnknownScript_0xbe40c - if_equal PHONE_BLACKBELT_KENJI, UnknownScript_0xbe412 - if_equal PHONE_HIKER_PARRY, UnknownScript_0xbe418 - -UnknownScript_0xbe3a6: + if_equal PHONE_SCHOOLBOY_JACK, .Jack + if_equal PHONE_SAILOR_HUEY, .Huey + if_equal PHONE_COOLTRAINERM_GAVEN, .Gaven + if_equal PHONE_BIRDKEEPER_JOSE, .Jose + if_equal PHONE_YOUNGSTER_JOEY, .Joey + if_equal PHONE_BUG_CATCHER_WADE, .Wade + if_equal PHONE_FISHER_RALPH, .Ralph + if_equal PHONE_HIKER_ANTHONY, .Anthony + if_equal PHONE_CAMPER_TODD, .Todd + if_equal PHONE_JUGGLER_IRWIN, .Irwin + if_equal PHONE_BUG_CATCHER_ARNIE, .Arnie + if_equal PHONE_SCHOOLBOY_ALAN, .Alan + if_equal PHONE_SCHOOLBOY_CHAD, .Chad + if_equal PHONE_POKEFANM_DEREK, .Derek + if_equal PHONE_FISHER_TULLY, .Tully + if_equal PHONE_POKEMANIAC_BRENT, .Brent + if_equal PHONE_BIRDKEEPER_VANCE, .Vance + if_equal PHONE_FISHER_WILTON, .Wilton + if_equal PHONE_BLACKBELT_KENJI, .Kenji + if_equal PHONE_HIKER_PARRY, .Parry + +.Jack: farwritetext UnknownText_0x1b4e9e keeptextopen end -UnknownScript_0xbe3ac: +.Huey: farwritetext UnknownText_0x1b5154 keeptextopen end -UnknownScript_0xbe3b2: +.Gaven: farwritetext UnknownText_0x1b535f keeptextopen end -UnknownScript_0xbe3b8: +.Jose: farwritetext UnknownText_0x1b5670 keeptextopen end -UnknownScript_0xbe3be: +.Joey: farwritetext UnknownText_0x1b597c keeptextopen end -UnknownScript_0xbe3c4: +.Wade: farwritetext UnknownText_0x1b5b37 keeptextopen end -UnknownScript_0xbe3ca: +.Ralph: farwritetext UnknownText_0x1b5d39 keeptextopen end -UnknownScript_0xbe3d0: +.Anthony: farwritetext UnknownText_0x1b6041 keeptextopen end -UnknownScript_0xbe3d6: +.Todd: farwritetext UnknownText_0x1b61bd keeptextopen end -UnknownScript_0xbe3dc: +.Irwin: farwritetext UnknownText_0x1b642c keeptextopen end -UnknownScript_0xbe3e2: +.Arnie: farwritetext UnknownText_0x1b6539 keeptextopen end -UnknownScript_0xbe3e8: +.Alan: farwritetext UnknownText_0x1b663b keeptextopen end -UnknownScript_0xbe3ee: +.Chad: farwritetext UnknownText_0x1b68ba keeptextopen end -UnknownScript_0xbe3f4: +.Derek: farwritetext UnknownText_0x1b6a8b keeptextopen end -UnknownScript_0xbe3fa: +.Tully: farwritetext UnknownText_0x1b6c23 keeptextopen end -UnknownScript_0xbe400: +.Brent: farwritetext UnknownText_0x1b6d88 keeptextopen end -UnknownScript_0xbe406: +.Vance: farwritetext UnknownText_0x1b7132 keeptextopen end -UnknownScript_0xbe40c: +.Wilton: farwritetext UnknownText_0x1b72a5 keeptextopen end -UnknownScript_0xbe412: +.Kenji: farwritetext UnknownText_0x1b73af keeptextopen end -UnknownScript_0xbe418: +.Parry: farwritetext UnknownText_0x1b749b keeptextopen end @@ -2817,314 +2817,314 @@ UnknownScript_0xbe41e: checknite iftrue UnknownScript_0xbe4cc checkcode VAR_CALLERID - if_equal PHONE_POKEFAN_BEVERLY, UnknownScript_0xbe44a - if_equal PHONE_COOLTRAINERF_BETH, UnknownScript_0xbe450 - if_equal PHONE_COOLTRAINERF_REENA, UnknownScript_0xbe456 - if_equal PHONE_PICNICKER_LIZ, UnknownScript_0xbe45c - if_equal PHONE_PICNICKER_GINA, UnknownScript_0xbe462 - if_equal PHONE_LASS_DANA, UnknownScript_0xbe468 - if_equal PHONE_PICNICKER_TIFFANY, UnknownScript_0xbe46e - if_equal PHONE_PICNICKER_ERIN, UnknownScript_0xbe474 - -UnknownScript_0xbe44a: + if_equal PHONE_POKEFAN_BEVERLY, .Beverly + if_equal PHONE_COOLTRAINERF_BETH, .Beth + if_equal PHONE_COOLTRAINERF_REENA, .Reena + if_equal PHONE_PICNICKER_LIZ, .Liz + if_equal PHONE_PICNICKER_GINA, .Gina + if_equal PHONE_LASS_DANA, .Dana + if_equal PHONE_PICNICKER_TIFFANY, .Tiffany + if_equal PHONE_PICNICKER_ERIN, .Erin + +.Beverly: farwritetext UnknownText_0x1b4fa1 keeptextopen end -UnknownScript_0xbe450: +.Beth: farwritetext UnknownText_0x1b5472 keeptextopen end -UnknownScript_0xbe456: +.Reena: farwritetext UnknownText_0x1b5786 keeptextopen end -UnknownScript_0xbe45c: +.Liz: farwritetext UnknownText_0x1b5e25 keeptextopen end -UnknownScript_0xbe462: +.Gina: farwritetext UnknownText_0x1b62f1 keeptextopen end -UnknownScript_0xbe468: +.Dana: farwritetext UnknownText_0x1b6738 keeptextopen end -UnknownScript_0xbe46e: +.Tiffany: farwritetext UnknownText_0x1b6ef3 keeptextopen end -UnknownScript_0xbe474: +.Erin: farwritetext UnknownText_0x1b758f keeptextopen end UnknownScript_0xbe47a: checkcode VAR_CALLERID - if_equal PHONE_POKEFAN_BEVERLY, UnknownScript_0xbe49c - if_equal PHONE_COOLTRAINERF_BETH, UnknownScript_0xbe4a2 - if_equal PHONE_COOLTRAINERF_REENA, UnknownScript_0xbe4a8 - if_equal PHONE_PICNICKER_LIZ, UnknownScript_0xbe4ae - if_equal PHONE_PICNICKER_GINA, UnknownScript_0xbe4b4 - if_equal PHONE_LASS_DANA, UnknownScript_0xbe4ba - if_equal PHONE_PICNICKER_TIFFANY, UnknownScript_0xbe4c0 - if_equal PHONE_PICNICKER_ERIN, UnknownScript_0xbe4c6 - -UnknownScript_0xbe49c: + if_equal PHONE_POKEFAN_BEVERLY, .Beverly + if_equal PHONE_COOLTRAINERF_BETH, .Beth + if_equal PHONE_COOLTRAINERF_REENA, .Reena + if_equal PHONE_PICNICKER_LIZ, .Liz + if_equal PHONE_PICNICKER_GINA, .Gina + if_equal PHONE_LASS_DANA, .Dana + if_equal PHONE_PICNICKER_TIFFANY, .Tiffany + if_equal PHONE_PICNICKER_ERIN, .Erin + +.Beverly: farwritetext UnknownText_0x1b4fda keeptextopen end -UnknownScript_0xbe4a2: +.Beth: farwritetext UnknownText_0x1b54a6 keeptextopen end -UnknownScript_0xbe4a8: +.Reena: farwritetext UnknownText_0x1b57b7 keeptextopen end -UnknownScript_0xbe4ae: +.Liz: farwritetext UnknownText_0x1b5e59 keeptextopen end -UnknownScript_0xbe4b4: +.Gina: farwritetext UnknownText_0x1b630e keeptextopen end -UnknownScript_0xbe4ba: +.Dana: farwritetext UnknownText_0x1b6757 keeptextopen end -UnknownScript_0xbe4c0: +.Tiffany: farwritetext UnknownText_0x1b6f1c keeptextopen end -UnknownScript_0xbe4c6: +.Erin: farwritetext UnknownText_0x1b75ac keeptextopen end UnknownScript_0xbe4cc: checkcode VAR_CALLERID - if_equal PHONE_POKEFAN_BEVERLY, UnknownScript_0xbe4ee - if_equal PHONE_COOLTRAINERF_BETH, UnknownScript_0xbe4f4 - if_equal PHONE_COOLTRAINERF_REENA, UnknownScript_0xbe4fa - if_equal PHONE_PICNICKER_LIZ, UnknownScript_0xbe500 - if_equal PHONE_PICNICKER_GINA, UnknownScript_0xbe506 - if_equal PHONE_LASS_DANA, UnknownScript_0xbe50c - if_equal PHONE_PICNICKER_TIFFANY, UnknownScript_0xbe512 - if_equal PHONE_PICNICKER_ERIN, UnknownScript_0xbe518 - -UnknownScript_0xbe4ee: + if_equal PHONE_POKEFAN_BEVERLY, .Beverly + if_equal PHONE_COOLTRAINERF_BETH, .Beth + if_equal PHONE_COOLTRAINERF_REENA, .Reena + if_equal PHONE_PICNICKER_LIZ, .Liz + if_equal PHONE_PICNICKER_GINA, .Gina + if_equal PHONE_LASS_DANA, .Dana + if_equal PHONE_PICNICKER_TIFFANY, .Tiffany + if_equal PHONE_PICNICKER_ERIN, .Erin + +.Beverly: farwritetext UnknownText_0x1b5004 keeptextopen end -UnknownScript_0xbe4f4: +.Beth: farwritetext UnknownText_0x1b54d4 keeptextopen end -UnknownScript_0xbe4fa: +.Reena: farwritetext UnknownText_0x1b57e8 keeptextopen end -UnknownScript_0xbe500: +.Liz: farwritetext UnknownText_0x1b5e8e keeptextopen end -UnknownScript_0xbe506: +.Gina: farwritetext UnknownText_0x1b6331 keeptextopen end -UnknownScript_0xbe50c: +.Dana: farwritetext UnknownText_0x1b6776 keeptextopen end -UnknownScript_0xbe512: +.Tiffany: farwritetext UnknownText_0x1b6f37 keeptextopen end -UnknownScript_0xbe518: +.Erin: farwritetext UnknownText_0x1b75c9 keeptextopen end UnknownScript_0xbe51e: checkcode VAR_CALLERID - if_equal PHONE_SCHOOLBOY_JACK, UnknownScript_0xbe564 - if_equal PHONE_COOLTRAINERM_GAVEN, UnknownScript_0xbe570 - if_equal PHONE_BIRDKEEPER_JOSE, UnknownScript_0xbe576 - if_equal PHONE_YOUNGSTER_JOEY, UnknownScript_0xbe57c - if_equal PHONE_BUG_CATCHER_WADE, UnknownScript_0xbe582 - if_equal PHONE_FISHER_RALPH, UnknownScript_0xbe588 - if_equal PHONE_HIKER_ANTHONY, UnknownScript_0xbe58e - if_equal PHONE_CAMPER_TODD, UnknownScript_0xbe594 - if_equal PHONE_BUG_CATCHER_ARNIE, UnknownScript_0xbe59a - if_equal PHONE_SCHOOLBOY_ALAN, UnknownScript_0xbe5a0 - if_equal PHONE_SCHOOLBOY_CHAD, UnknownScript_0xbe5a6 - if_equal PHONE_POKEFANM_DEREK, UnknownScript_0xbe5ac - if_equal PHONE_FISHER_TULLY, UnknownScript_0xbe5b2 - if_equal PHONE_POKEMANIAC_BRENT, UnknownScript_0xbe5b8 - if_equal PHONE_BIRDKEEPER_VANCE, UnknownScript_0xbe5be - if_equal PHONE_FISHER_WILTON, UnknownScript_0xbe5c4 - if_equal PHONE_HIKER_PARRY, UnknownScript_0xbe5ca - -UnknownScript_0xbe564: + if_equal PHONE_SCHOOLBOY_JACK, .Jack + if_equal PHONE_COOLTRAINERM_GAVEN, .Gaven + if_equal PHONE_BIRDKEEPER_JOSE, .Jose + if_equal PHONE_YOUNGSTER_JOEY, .Joey + if_equal PHONE_BUG_CATCHER_WADE, .Wade + if_equal PHONE_FISHER_RALPH, .Ralph + if_equal PHONE_HIKER_ANTHONY, .Anthony + if_equal PHONE_CAMPER_TODD, .Todd + if_equal PHONE_BUG_CATCHER_ARNIE, .Arnie + if_equal PHONE_SCHOOLBOY_ALAN, .Alan + if_equal PHONE_SCHOOLBOY_CHAD, .Chad + if_equal PHONE_POKEFANM_DEREK, .Derek + if_equal PHONE_FISHER_TULLY, .Tully + if_equal PHONE_POKEMANIAC_BRENT, .Brent + if_equal PHONE_BIRDKEEPER_VANCE, .Vance + if_equal PHONE_FISHER_WILTON, .Wilton + if_equal PHONE_HIKER_PARRY, .Parry + +.Jack: farwritetext UnknownText_0x1b4ecd keeptextopen end -UnknownScript_0xbe56a: +.Unknown: farwritetext UnknownText_0x1b518b keeptextopen end -UnknownScript_0xbe570: +.Gaven: farwritetext UnknownText_0x1b5393 keeptextopen end -UnknownScript_0xbe576: +.Jose: farwritetext UnknownText_0x1b5694 keeptextopen end -UnknownScript_0xbe57c: +.Joey: farwritetext UnknownText_0x1b59b2 keeptextopen end -UnknownScript_0xbe582: +.Wade: farwritetext UnknownText_0x1b5b68 keeptextopen end -UnknownScript_0xbe588: +.Ralph: farwritetext UnknownText_0x1b5d51 keeptextopen end -UnknownScript_0xbe58e: +.Anthony: farwritetext UnknownText_0x1b606f keeptextopen end -UnknownScript_0xbe594: +.Todd: farwritetext UnknownText_0x1b61f2 keeptextopen end -UnknownScript_0xbe59a: +.Arnie: farwritetext UnknownText_0x1b656c keeptextopen end -UnknownScript_0xbe5a0: +.Alan: farwritetext UnknownText_0x1b6652 keeptextopen end -UnknownScript_0xbe5a6: +.Chad: farwritetext UnknownText_0x1b68e8 keeptextopen end -UnknownScript_0xbe5ac: +.Derek: farwritetext UnknownText_0x1b6ac2 keeptextopen end -UnknownScript_0xbe5b2: +.Tully: farwritetext UnknownText_0x1b6c56 keeptextopen end -UnknownScript_0xbe5b8: +.Brent: farwritetext UnknownText_0x1b6db9 keeptextopen end -UnknownScript_0xbe5be: +.Vance: farwritetext UnknownText_0x1b7161 keeptextopen end -UnknownScript_0xbe5c4: +.Wilton: farwritetext UnknownText_0x1b72d0 keeptextopen end -UnknownScript_0xbe5ca: +.Parry: farwritetext UnknownText_0x1b74c8 keeptextopen end UnknownScript_0xbe5d0: checkcode VAR_CALLERID - if_equal PHONE_POKEFAN_BEVERLY, UnknownScript_0xbe5f2 - if_equal PHONE_COOLTRAINERF_BETH, UnknownScript_0xbe5f8 - if_equal PHONE_COOLTRAINERF_REENA, UnknownScript_0xbe5fe - if_equal PHONE_PICNICKER_LIZ, UnknownScript_0xbe604 - if_equal PHONE_PICNICKER_GINA, UnknownScript_0xbe60a - if_equal PHONE_LASS_DANA, UnknownScript_0xbe610 - if_equal PHONE_PICNICKER_TIFFANY, UnknownScript_0xbe616 - if_equal PHONE_PICNICKER_ERIN, UnknownScript_0xbe61c - -UnknownScript_0xbe5f2: + if_equal PHONE_POKEFAN_BEVERLY, .Beverly + if_equal PHONE_COOLTRAINERF_BETH, .Beth + if_equal PHONE_COOLTRAINERF_REENA, .Reena + if_equal PHONE_PICNICKER_LIZ, .Liz + if_equal PHONE_PICNICKER_GINA, .Gina + if_equal PHONE_LASS_DANA, .Dana + if_equal PHONE_PICNICKER_TIFFANY, .Tiffany + if_equal PHONE_PICNICKER_ERIN, .Erin + +.Beverly: farwritetext UnknownText_0x1b502b keeptextopen end -UnknownScript_0xbe5f8: +.Beth: farwritetext UnknownText_0x1b5510 keeptextopen end -UnknownScript_0xbe5fe: +.Reena: farwritetext UnknownText_0x1b5819 keeptextopen end -UnknownScript_0xbe604: +.Liz: farwritetext UnknownText_0x1b5ebe keeptextopen end -UnknownScript_0xbe60a: +.Gina: farwritetext UnknownText_0x1b6352 keeptextopen end -UnknownScript_0xbe610: +.Dana: farwritetext UnknownText_0x1b6795 keeptextopen end -UnknownScript_0xbe616: +.Tiffany: farwritetext UnknownText_0x1b6f60 keeptextopen end -UnknownScript_0xbe61c: +.Erin: farwritetext UnknownText_0x1b75e5 keeptextopen end diff --git a/engine/predef.asm b/engine/predef.asm index 6079b48a4..cb72f9202 100644 --- a/engine/predef.asm +++ b/engine/predef.asm @@ -37,7 +37,7 @@ PredefPointers:: ; 856b add_predef DrawPartyMenuHPBar add_predef FillPP add_predef TryAddMonToParty - add_predef Functionda96 + add_predef AddTempmonToParty add_predef SentGetPkmnIntoFromBox add_predef SentPkmnIntoBox add_predef GiveEgg diff --git a/engine/specials.asm b/engine/specials.asm index bfc4be7c0..82281d600 100644 --- a/engine/specials.asm +++ b/engine/specials.asm @@ -166,7 +166,7 @@ SpecialsPointers:: ; c029 add_special SpecialHoOhChamber add_special Function102142 add_special Special_CelebiShrineEvent - add_special Function49bf9 + add_special CheckCaughtCelebi add_special SpecialPokeSeer add_special SpecialBuenasPassword add_special SpecialBuenaPrize @@ -174,7 +174,7 @@ SpecialsPointers:: ; c029 add_special Special_SampleKenjiBreakCountdown add_special SpecialBeastsCheck add_special SpecialMonCheck - add_special Functionc225 + add_special Special_SetPlayerPalette add_special Function170bd2 add_special Mobile_SelectThreeMons add_special Function1037eb @@ -185,9 +185,9 @@ SpecialsPointers:: ; c029 add_special Mobile_DummyReturnFalse add_special Function103780 add_special Function10387b - add_special Function4ae12 + add_special AskRememberPassword add_special LoadMapPalettes - add_special Function4a927 + add_special FindItemInPCOrBag add_special Special_InitialSetDSTFlag add_special Special_InitialClearDSTFlag add_special SpecialNone @@ -197,10 +197,10 @@ SpecialNone: ; c224 ret ; c225 -Functionc225: ; c225 +Special_SetPlayerPalette: ; c225 ld a, [ScriptVar] ld d, a - callba Function57e2 + callba SetPlayerPalette ret ; c230 -- cgit v1.2.3 From e88c88ff2015a55ff0d04f9ac1dc55d7f0567f7c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 17 Nov 2015 15:54:03 -0500 Subject: engine/decorations.asm --- engine/decorations.asm | 1437 +++++++++++++++++++++++++++++++++++++++++++++++ engine/trainer_card.asm | 611 ++++++++++++++++++++ 2 files changed, 2048 insertions(+) create mode 100755 engine/decorations.asm create mode 100755 engine/trainer_card.asm (limited to 'engine') diff --git a/engine/decorations.asm b/engine/decorations.asm new file mode 100755 index 000000000..a46d359a5 --- /dev/null +++ b/engine/decorations.asm @@ -0,0 +1,1437 @@ +InitDecorations: ; 26751 (9:6751) + ld a, DECO_FEATHERY_BED + ld [Bed], a + ld a, DECO_TOWN_MAP + ld [Poster], a + ret + +_KrisDecorationMenu: ; 0x2675c + ld a, [wcf76] + push af + ld hl, .MenuDataHeader + call LoadMenuDataHeader + xor a + ld [wd1ee], a + ld a, $1 + ld [wd1ef], a +.top_loop + ld a, [wd1ef] + ld [wMenuCursorBuffer], a + call .FindCategoriesWithOwnedDecos + call DoNthMenu + ld a, [MenuSelection2] + ld [wd1ef], a + jr c, .exit_menu + ld a, [MenuSelection] + ld hl, .pointers + call MenuJumptable + jr nc, .top_loop + +.exit_menu + call ExitMenu + pop af + ld [wcf76], a + ld a, [wd1ee] + ld c, a + ret +; 0x2679a + +.MenuDataHeader: ; 0x2679a + db $40 ; flags + db 00, 05 ; start coords + db 17, 19 ; end coords + dw .MenuData2 + db 1 ; default option +; 0x267a2 + +.MenuData2: ; 0x267a2 + db $a0 ; flags + db 0 ; items + dw wd002 + dw PlaceNthMenuStrings + dw .pointers +; 0x267aa + +.pointers: ; 267aa + dw DecoBedMenu, .bed + dw DecoCarpetMenu, .carpet + dw DecoPlantMenu, .plant + dw DecoPosterMenu, .poster + dw DecoConsoleMenu, .game + dw DecoOrnamentMenu, .ornament + dw DecoBigDollMenu, .big_doll + dw DecoExitMenu, .exit + +.bed db "BED@" +.carpet db "CARPET@" +.plant db "PLANT@" +.poster db "POSTER@" +.game db "GAME CONSOLE@" +.ornament db "ORNAMENT@" +.big_doll db "BIG DOLL@" +.exit db "EXIT@" +; 26806 + +.FindCategoriesWithOwnedDecos: ; 26806 + xor a + ld [wcf76], a + call .ClearStringBuffer2 + call .FindOwndDecos + ld a, 7 + call .AppendToStringBuffer2 + ld hl, StringBuffer2 + ld de, wd002 + ld bc, ITEM_NAME_LENGTH + call CopyBytes + ret + +.ClearStringBuffer2: ; 26822 (9:6822) + ld hl, StringBuffer2 + xor a + ld [hli], a + ld bc, ITEM_NAME_LENGTH - 1 + ld a, -1 + call ByteFill + ret + +.AppendToStringBuffer2: ; 26830 (9:6830) + ld hl, StringBuffer2 + inc [hl] + ld e, [hl] + ld d, 0 + add hl, de + ld [hl], a + ret + +.FindOwndDecos: ; 2683a (9:683a) + ld hl, .jumptable +.loop + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + or e + jr z, .done + push hl + call _de_ + pop hl + jr nc, .next + ld a, [hl] + push hl + call .AppendToStringBuffer2 + pop hl +.next + inc hl + jr .loop +.done + ret +; 26855 (9:6855) + +.jumptable: ; 26855 + dwb FindOwnedBeds, 0 ; bed + dwb FindOwnedCarpets, 1 ; carpet + dwb FindOwnedPlants, 2 ; plant + dwb FindOwnedPosters, 3 ; poster + dwb FindOwnedConsoles, 4 ; game console + dwb FindOwnedOrnaments, 5 ; ornament + dwb FindOwnedBigDolls, 6 ; big doll + dw 0 ; end +; 2686c + +Deco_FillTempWithMinusOne: ; 2686c + xor a + ld hl, wd002 + ld [hli], a + ld a, -1 + ld bc, $10 + call ByteFill + ret +; 2687a + +CheckAllDecorationFlags: ; 2687a +.loop + ld a, [hli] + cp -1 + jr z, .done + push hl + push af + ld b, CHECK_FLAG + call DecorationFlagAction + ld a, c + and a + pop bc + ld a, b + call nz, AppendDecoIndex + pop hl + jr .loop + +.done + ret +; 26891 + +AppendDecoIndex: ; 26891 + ld hl, wd002 + inc [hl] + ld e, [hl] + ld d, $0 + add hl, de + ld [hl], a + ret +; 2689b + +FindOwnedDecosInCategory: ; 2689b + push bc + push hl + call Deco_FillTempWithMinusOne + pop hl + call CheckAllDecorationFlags + pop bc + ld a, [wd002] + and a + ret z + + ld a, c + call AppendDecoIndex + ld a, 0 + call AppendDecoIndex + scf + ret +; 268b5 + +DecoBedMenu: ; 268b5 + call FindOwnedBeds + call PopulateDecoCategoryMenu + xor a + ret +; 268bd + +FindOwnedBeds: ; 268bd + ld hl, .beds + ld c, DECO_BEDS + jp FindOwnedDecosInCategory +; 268c5 + +.beds: ; 268c5 + db DECO_FEATHERY_BED ; 2 + db DECO_PINK_BED ; 3 + db DECO_POLKADOT_BED ; 4 + db DECO_PIKACHU_BED ; 5 + db -1 +; 268ca + +DecoCarpetMenu: ; 268ca + call FindOwnedCarpets + call PopulateDecoCategoryMenu + xor a + ret +; 268d2 + +FindOwnedCarpets: ; 268d2 + ld hl, .carpets + ld c, DECO_CARPETS + jp FindOwnedDecosInCategory +; 268da + +.carpets: ; 268da + db DECO_RED_CARPET ; 7 + db DECO_BLUE_CARPET ; 8 + db DECO_YELLOW_CARPET ; 9 + db DECO_GREEN_CARPET ; a + db -1 +; 268df + +DecoPlantMenu: ; 268df + call FindOwnedPlants + call PopulateDecoCategoryMenu + xor a + ret +; 268e7 + +FindOwnedPlants: ; 268e7 + ld hl, .plants + ld c, DECO_0B + jp FindOwnedDecosInCategory +; 268ef + +.plants: ; 268ef + db DECO_MAGNAPLANT ; c + db DECO_TROPICPLANT ; d + db DECO_JUMBOPLANT ; e + db -1 +; 268f3 + +DecoPosterMenu: ; 268f3 + call FindOwnedPosters + call PopulateDecoCategoryMenu + xor a + ret +; 268fb + +FindOwnedPosters: ; 268fb + ld hl, .posters + ld c, DECO_POSTERS + jp FindOwnedDecosInCategory +; 26903 + +.posters: ; 26903 + db DECO_TOWN_MAP ; 10 + db DECO_PIKACHU_POSTER ; 11 + db DECO_CLEFAIRY_POSTER ; 12 + db DECO_JIGGLYPUFF_POSTER ; 13 + db -1 +; 26908 + +DecoConsoleMenu: ; 26908 + call FindOwnedConsoles + call PopulateDecoCategoryMenu + xor a + ret +; 26910 + +FindOwnedConsoles: ; 26910 + ld hl, .consoles + ld c, DECO_CONSOLES + jp FindOwnedDecosInCategory +; 26918 + +.consoles: ; 26918 + db DECO_FAMICOM ; 15 + db DECO_SNES ; 16 + db DECO_N64 ; 17 + db DECO_VIRTUAL_BOY ; 18 + db -1 +; 2691d + +DecoOrnamentMenu: ; 2691d + call FindOwnedOrnaments + call PopulateDecoCategoryMenu + xor a + ret +; 26925 + +FindOwnedOrnaments: ; 26925 + ld hl, .ornaments + ld c, DECO_DOLLS + jp FindOwnedDecosInCategory +; 2692d + +.ornaments: ; 2692d + db DECO_PIKACHU_DOLL ; 1e + db DECO_SURF_PIKACHU_DOLL ; 1f + db DECO_CLEFAIRY_DOLL ; 20 + db DECO_JIGGLYPUFF_DOLL ; 21 + db DECO_BULBASAUR_DOLL ; 22 + db DECO_CHARMANDER_DOLL ; 23 + db DECO_SQUIRTLE_DOLL ; 24 + db DECO_POLIWAG_DOLL ; 25 + db DECO_DIGLETT_DOLL ; 26 + db DECO_STARMIE_DOLL ; 27 + db DECO_MAGIKARP_DOLL ; 28 + db DECO_ODDISH_DOLL ; 29 + db DECO_GENGAR_DOLL ; 2a + db DECO_SHELLDER_DOLL ; 2b + db DECO_GRIMER_DOLL ; 2c + db DECO_VOLTORB_DOLL ; 2d + db DECO_WEEDLE_DOLL ; 2e + db DECO_UNOWN_DOLL ; 2f + db DECO_GEODUDE_DOLL ; 30 + db DECO_MACHOP_DOLL ; 31 + db DECO_TENTACOOL_DOLL ; 32 + db DECO_GOLD_TROPHY_DOLL ; 33 + db DECO_SILVER_TROPHY_DOLL ; 34 + db -1 +; 26945 + +DecoBigDollMenu: ; 26945 + call FindOwnedBigDolls + call PopulateDecoCategoryMenu + xor a + ret +; 2694d + +FindOwnedBigDolls: ; 2694d + ld hl, .big_dolls + ld c, DECO_BIG_DOLLS + jp FindOwnedDecosInCategory +; 26955 + +.big_dolls: ; 26955 + db DECO_BIG_SNORLAX_DOLL ; 1a + db DECO_BIG_ONIX_DOLL ; 1b + db DECO_BIG_LAPRAS_DOLL ; 1c + db -1 +; 26959 + +DecoExitMenu: ; 26959 + scf + ret +; 2695b + +PopulateDecoCategoryMenu: ; 2695b + ld a, [wd002] + and a + jr z, .empty + cp 8 + jr nc, .beyond_eight + xor a + ld [wcf76], a + ld hl, .NonscrollingMenuDataHeader + call LoadMenuDataHeader + call DoNthMenu + jr c, .no_action_1 + call DoDecorationAction2 + +.no_action_1 + call ExitMenu + ret + +.beyond_eight + ld hl, wd002 + ld e, [hl] + dec [hl] + ld d, 0 + add hl, de + ld [hl], -1 + call LoadStandardMenuDataHeader + ld hl, .ScrollingMenuDataHeader + call CopyMenuDataHeader + xor a + ld [hBGMapMode], a + call InitScrollingMenu + xor a + ld [wd0e4], a + call HandleScrollingMenu + ld a, [wcf73] + cp 2 + jr z, .no_action_2 + call DoDecorationAction2 + +.no_action_2 + call ExitMenu + ret + +.empty + ld hl, .Text_nothing_to_choose + call MenuTextBoxBackup + ret +; 269b0 + +.Text_nothing_to_choose: ; 0x269b0 + ; There's nothing to choose. + text_jump UnknownText_0x1bc471 + db "@" +; 0x269b5 + +.NonscrollingMenuDataHeader: ; 0x269b5 + db $40 ; flags + db 00, 00 ; start coords + db 17, 19 ; end coords + dw .NonscrollingMenuData2 + db 1 ; default option +; 0x269bd + +.NonscrollingMenuData2: ; 0x269bd + db $a0 ; flags + db 0 ; items + dw wd002 + dw DecorationMenuFunction + dw DecorationAttributes +; 0x269c5 + +.ScrollingMenuDataHeader: ; 0x269c5 + db $40 ; flags + db 01, 01 ; start coords + db 16, 18 ; end coords + dw .ScrollingMenuData2 + db 1 ; default option +; 0x269cd + +.ScrollingMenuData2: ; 0x269cd + db $10 ; flags + db 8, 0 ; rows, columns + db 1 ; horizontal spacing + dbw 0, wd002 ; text pointer + dba DecorationMenuFunction + dbw 0, 0 + dbw 0, 0 +; 269dd + + +GetDecorationData: ; 269dd + ld hl, DecorationAttributes + ld bc, 6 + call AddNTimes + ret +; 269e7 + +GetDecorationName: ; 269e7 + push hl + call GetDecorationData + call GetDecoName + pop hl + call CopyName2 + ret +; 269f3 + +DecorationMenuFunction: ; 269f3 + ld a, [MenuSelection] + push de + call GetDecorationData + call GetDecoName + pop hl + call PlaceString + ret +; 26a02 + +DoDecorationAction2: ; 26a02 + ld a, [MenuSelection] + call GetDecorationData + ld de, 2 ; function 2 + add hl, de + ld a, [hl] + ld hl, .DecoActions + rst JumpTable + ret +; 26a12 + +.DecoActions: ; 26a12 + dw DecoAction_nothing + dw DecoAction_setupbed + dw DecoAction_putawaybed + dw DecoAction_setupcarpet + dw DecoAction_putawaycarpet + dw DecoAction_setupplant + dw DecoAction_putawayplant + dw DecoAction_setupposter + dw DecoAction_putawayposter + dw DecoAction_setupconsole + dw DecoAction_putawayconsole + dw DecoAction_setupbigdoll + dw DecoAction_putawaybigdoll + dw DecoAction_setupornament + dw DecoAction_putawayornament +; 26a30 + + +GetDecorationFlag: ; 26a30 + call GetDecorationData + ld de, 3 ; event flag + add hl, de + ld a, [hli] + ld d, [hl] + ld e, a + ret +; 26a3b + +DecorationFlagAction: ; 26a3b + push bc + call GetDecorationFlag + pop bc + call EventFlagAction + ret +; 26a44 + +GetDecorationSprite: ; 26a44 + ld a, c + call GetDecorationData + ld de, 5 ; sprite + add hl, de + ld a, [hl] + ld c, a + ret +; 26a4f + +decoration: MACRO + ; type, name, command, event flag, tile/sprite + db \1, \2, \3 + dw \4 + db \5 +ENDM + +DecorationAttributes: ; 26a4f + decoration DECO_PLANT, $00, $0, EVENT_GAVE_KURT_APRICORNS, $00 + decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_BED, EVENT_GAVE_KURT_APRICORNS, $00 + decoration DECO_BED, FEATHERY_BED, SET_UP_BED, EVENT_DECO_BED_1, $1b + decoration DECO_BED, PINK_BED, SET_UP_BED, EVENT_DECO_BED_2, $1c + decoration DECO_BED, POLKADOT_BED, SET_UP_BED, EVENT_DECO_BED_3, $1d + decoration DECO_BED, PIKACHU_BED, SET_UP_BED, EVENT_DECO_BED_4, $1e + decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_CARPET, EVENT_GAVE_KURT_APRICORNS, $00 + decoration DECO_CARPET, RED_CARPET, SET_UP_CARPET, EVENT_DECO_CARPET_1, $08 + decoration DECO_CARPET, BLUE_CARPET, SET_UP_CARPET, EVENT_DECO_CARPET_2, $0b + decoration DECO_CARPET, YELLOW_CARPET, SET_UP_CARPET, EVENT_DECO_CARPET_3, $0e + decoration DECO_CARPET, GREEN_CARPET, SET_UP_CARPET, EVENT_DECO_CARPET_4, $11 + decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_PLANT, EVENT_GAVE_KURT_APRICORNS, $00 + decoration DECO_PLANT, MAGNAPLANT, SET_UP_PLANT, EVENT_DECO_PLANT_1, $20 + decoration DECO_PLANT, TROPICPLANT, SET_UP_PLANT, EVENT_DECO_PLANT_2, $21 + decoration DECO_PLANT, JUMBOPLANT, SET_UP_PLANT, EVENT_DECO_PLANT_3, $22 + decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_POSTER, EVENT_GAVE_KURT_APRICORNS, $00 + decoration DECO_PLANT, TOWN_MAP_D, SET_UP_POSTER, EVENT_DECO_PLANT_4, $1f + decoration DECO_POSTER, PIKACHU, SET_UP_POSTER, EVENT_DECO_POSTER_1, $23 + decoration DECO_POSTER, CLEFAIRY, SET_UP_POSTER, EVENT_DECO_POSTER_2, $24 + decoration DECO_POSTER, JIGGLYPUFF, SET_UP_POSTER, EVENT_DECO_POSTER_3, $25 + decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_CONSOLE, EVENT_GAVE_KURT_APRICORNS, $00 + decoration DECO_PLANT, FAMICOM, SET_UP_CONSOLE, EVENT_DECO_FAMICOM, SPRITE_FAMICOM + decoration DECO_PLANT, SUPER_NES, SET_UP_CONSOLE, EVENT_DECO_SNES, SPRITE_SNES + decoration DECO_PLANT, NINTENDO_64, SET_UP_CONSOLE, EVENT_DECO_N64, SPRITE_N64 + decoration DECO_PLANT, VIRTUAL_BOY, SET_UP_CONSOLE, EVENT_DECO_VIRTUAL_BOY, SPRITE_VIRTUAL_BOY + decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_BIG_DOLL, EVENT_GAVE_KURT_APRICORNS, $00 + decoration DECO_BIGDOLL, SNORLAX, SET_UP_BIG_DOLL, EVENT_DECO_BIG_SNORLAX_DOLL, SPRITE_BIG_SNORLAX + decoration DECO_BIGDOLL, ONIX, SET_UP_BIG_DOLL, EVENT_DECO_BIG_ONIX_DOLL, SPRITE_BIG_ONIX + decoration DECO_BIGDOLL, LAPRAS, SET_UP_BIG_DOLL, EVENT_DECO_BIG_LAPRAS_DOLL, SPRITE_BIG_LAPRAS + decoration DECO_PLANT, PUT_IT_AWAY, PUT_AWAY_DOLL, EVENT_GAVE_KURT_APRICORNS, $00 + decoration DECO_DOLL, PIKACHU, SET_UP_DOLL, EVENT_DECO_PIKACHU_DOLL, SPRITE_PIKACHU + decoration DECO_PLANT, SURF_PIKA_DOLL, SET_UP_DOLL, EVENT_DECO_SURFING_PIKACHU_DOLL, SPRITE_SURFING_PIKACHU + decoration DECO_DOLL, CLEFAIRY, SET_UP_DOLL, EVENT_DECO_CLEFAIRY_DOLL, SPRITE_CLEFAIRY + decoration DECO_DOLL, JIGGLYPUFF, SET_UP_DOLL, EVENT_DECO_JIGGLYPUFF_DOLL, SPRITE_JIGGLYPUFF + decoration DECO_DOLL, BULBASAUR, SET_UP_DOLL, EVENT_DECO_BULBASAUR_DOLL, SPRITE_BULBASAUR + decoration DECO_DOLL, CHARMANDER, SET_UP_DOLL, EVENT_DECO_CHARMANDER_DOLL, SPRITE_CHARMANDER + decoration DECO_DOLL, SQUIRTLE, SET_UP_DOLL, EVENT_DECO_SQUIRTLE_DOLL, SPRITE_SQUIRTLE + decoration DECO_DOLL, POLIWAG, SET_UP_DOLL, EVENT_DECO_POLIWAG_DOLL, SPRITE_POLIWAG + decoration DECO_DOLL, DIGLETT, SET_UP_DOLL, EVENT_DECO_DIGLETT_DOLL, SPRITE_DIGLETT + decoration DECO_DOLL, STARYU, SET_UP_DOLL, EVENT_DECO_STARMIE_DOLL, SPRITE_STARMIE + decoration DECO_DOLL, MAGIKARP, SET_UP_DOLL, EVENT_DECO_MAGIKARP_DOLL, SPRITE_MAGIKARP + decoration DECO_DOLL, ODDISH, SET_UP_DOLL, EVENT_DECO_ODDISH_DOLL, SPRITE_ODDISH + decoration DECO_DOLL, GENGAR, SET_UP_DOLL, EVENT_DECO_GENGAR_DOLL, SPRITE_GENGAR + decoration DECO_DOLL, SHELLDER, SET_UP_DOLL, EVENT_DECO_SHELLDER_DOLL, SPRITE_SHELLDER + decoration DECO_DOLL, GRIMER, SET_UP_DOLL, EVENT_DECO_GRIMER_DOLL, SPRITE_GRIMER + decoration DECO_DOLL, VOLTORB, SET_UP_DOLL, EVENT_DECO_VOLTORB_DOLL, SPRITE_VOLTORB + decoration DECO_DOLL, WEEDLE, SET_UP_DOLL, EVENT_DECO_WEEDLE_DOLL, SPRITE_WEEDLE + decoration DECO_DOLL, UNOWN, SET_UP_DOLL, EVENT_DECO_UNOWN_DOLL, SPRITE_UNOWN + decoration DECO_DOLL, GEODUDE, SET_UP_DOLL, EVENT_DECO_GEODUDE_DOLL, SPRITE_GEODUDE + decoration DECO_DOLL, MACHOP, SET_UP_DOLL, EVENT_DECO_MACHOP_DOLL, SPRITE_MACHOP + decoration DECO_DOLL, TENTACOOL, SET_UP_DOLL, EVENT_DECO_TENTACOOL_DOLL, SPRITE_TENTACOOL + decoration DECO_PLANT, GOLD_TROPHY, SET_UP_DOLL, EVENT_DECO_GOLD_TROPHY, SPRITE_GOLD_TROPHY + decoration DECO_PLANT, SILVER_TROPHY, SET_UP_DOLL, EVENT_DECO_SILVER_TROPHY, SPRITE_SILVER_TROPHY +; 26b8d + + +DecorationNames: ; 26b8d + db "CANCEL@" + db "PUT IT AWAY@" + db "MAGNAPLANT@" + db "TROPICPLANT@" + db "JUMBOPLANT@" + db "TOWN MAP@" + db "NES@" + db "SUPER NES@" + db "NINTENDO 64@" + db "VIRTUAL BOY@" + db "GOLD TROPHY@" + db "SILVER TROPHY@" + db "SURF PIKACHU DOLL@" + db " BED@" + db " CARPET@" + db " POSTER@" + db " DOLL@" + db "BIG @" + db "FEATHERY@" + db "PIKACHU@" + db "PINK@" + db "POLKADOT@" + db "RED@" + db "BLUE@" + db "YELLOW@" + db "GREEN@" +; 26c72 + +GetDecoName: ; 26c72 + ld a, [hli] + ld e, [hl] + ld bc, StringBuffer2 + push bc + ld hl, .NameFunctions + rst JumpTable + pop de + ret +; 26c7e + +.NameFunctions: ; 26c7e + dw .invalid + dw .plant + dw .bed + dw .carpet + dw .poster + dw .doll + dw .bigdoll +; 26c8c + + +.invalid: ; 26c8c + ret +; 26c8d + +.plant: ; 26c8d + ld a, e + jr .getdeconame + +.bed: ; 26c90 + call .plant + ld a, _BED + jr .getdeconame + +.carpet: ; 26c97 + call .plant + ld a, _CARPET + jr .getdeconame + +.poster: ; 26c9e + ld a, e + call .getpokename + ld a, _POSTER + jr .getdeconame + +.doll: ; 26ca6 + ld a, e + call .getpokename + ld a, _DOLL + jr .getdeconame + +.bigdoll: ; 26cae + push de + ld a, BIG_ + call .getdeconame + pop de + ld a, e + jr .getpokename + +.unused: ; 26cb8 + push de + call .getdeconame + pop de + ld a, e + jr .getdeconame + +.getpokename: ; 26cc0 + push bc + ld [wd265], a + call GetPokemonName + pop bc + jr .copy + +.getdeconame: ; 26cca + call ._getdeconame + jr .copy + +._getdeconame: ; 26ccf + push bc + ld hl, DecorationNames + call GetNthString + ld d, h + ld e, l + pop bc + ret + +.copy: ; 26cda + ld h, b + ld l, c + call CopyName2 + dec hl + ld b, h + ld c, l + ret +; 26ce3 + +DecoAction_nothing: ; 26ce3 + scf + ret +; 26ce5 + +DecoAction_setupbed: ; 26ce5 + ld hl, Bed + jp DecoAction_TrySetItUp +; 26ceb + +DecoAction_putawaybed: ; 26ceb + ld hl, Bed + jp DecoAction_TryPutItAway +; 26cf1 + +DecoAction_setupcarpet: ; 26cf1 + ld hl, Carpet + jp DecoAction_TrySetItUp +; 26cf7 + +DecoAction_putawaycarpet: ; 26cf7 + ld hl, Carpet + jp DecoAction_TryPutItAway +; 26cfd + +DecoAction_setupplant: ; 26cfd + ld hl, Plant + jp DecoAction_TrySetItUp +; 26d03 + +DecoAction_putawayplant: ; 26d03 + ld hl, Plant + jp DecoAction_TryPutItAway +; 26d09 + +DecoAction_setupposter: ; 26d09 + ld hl, Poster + jp DecoAction_TrySetItUp +; 26d0f + +DecoAction_putawayposter: ; 26d0f + ld hl, Poster + jp DecoAction_TryPutItAway +; 26d15 + +DecoAction_setupconsole: ; 26d15 + ld hl, Console + jp DecoAction_TrySetItUp +; 26d1b + +DecoAction_putawayconsole: ; 26d1b + ld hl, Console + jp DecoAction_TryPutItAway +; 26d21 + +DecoAction_setupbigdoll: ; 26d21 + ld hl, BigDoll + jp DecoAction_TrySetItUp +; 26d27 + +DecoAction_putawaybigdoll: ; 26d27 + ld hl, BigDoll + jp DecoAction_TryPutItAway +; 26d2d + +DecoAction_TrySetItUp: ; 26d2d + ld a, [hl] + ld [Buffer1], a + push hl + call DecoAction_SetItUp + jr c, .failed + ld a, 1 + ld [wd1ee], a + pop hl + ld a, [MenuSelection] + ld [hl], a + xor a + ret + +.failed + pop hl + xor a + ret +; 26d46 + +DecoAction_SetItUp: ; 26d46 +; See if there's anything of the same type already out + ld a, [Buffer1] + and a + jr z, .nothingthere +; See if that item is already out + ld b, a + ld a, [MenuSelection] + cp b + jr z, .alreadythere +; Put away the item that's already out, and set up the new one + ld a, [MenuSelection] + ld hl, StringBuffer4 + call GetDecorationName + ld a, [Buffer1] + ld hl, StringBuffer3 + call GetDecorationName + ld hl, DecoText_PutAwayAndSetUp + call MenuTextBoxBackup + xor a + ret + +.nothingthere + ld a, [MenuSelection] + ld hl, StringBuffer3 + call GetDecorationName + ld hl, DecoText_SetUpTheDeco + call MenuTextBoxBackup + xor a + ret + +.alreadythere + ld hl, DecoText_AlreadySetUp + call MenuTextBoxBackup + scf + ret +; 26d86 + +DecoAction_TryPutItAway: ; 26d86 +; If there is no item of that type already set, there is nothing to put away. + ld a, [hl] + ld [Buffer1], a + xor a + ld [hl], a + ld a, [Buffer1] + and a + jr z, .nothingthere +; Put it away. + ld a, $1 + ld [wd1ee], a + ld a, [Buffer1] + ld [MenuSelection], a + ld hl, StringBuffer3 + call GetDecorationName + ld hl, DecoText_PutAwayTheDeco + call MenuTextBoxBackup + xor a + ret + +.nothingthere + ld hl, DecoText_NothingToPutAway + call MenuTextBoxBackup + xor a + ret +; 26db3 + +DecoAction_setupornament: ; 26db3 + ld hl, UnknownText_0x26e41 + call DecoAction_AskWhichSide + jr c, .cancel + call DecoAction_SetItUp_Ornament + jr c, .cancel + ld a, $1 + ld [wd1ee], a + jr DecoAction_FinishUp_Ornament + +.cancel + xor a + ret + +DecoAction_putawayornament: ; 26dc9 + ld hl, DecoText_WhichSide + call DecoAction_AskWhichSide + jr nc, .incave + xor a + ret + +.incave + call DecoAction_PutItAway_Ornament + +DecoAction_FinishUp_Ornament: ; 26dd6 + call QueryWhichSide + ld a, [wd1ec] + ld [hl], a + ld a, [wd1ed] + ld [de], a + xor a + ret +; 26de3 + +DecoAction_SetItUp_Ornament: ; 26de3 + ld a, [wd1ec] + and a + jr z, .nothingthere + ld b, a + ld a, [MenuSelection] + cp b + jr z, .failed + ld a, b + ld hl, StringBuffer3 + call GetDecorationName + ld a, [MenuSelection] + ld hl, StringBuffer4 + call GetDecorationName + ld a, [MenuSelection] + ld [wd1ec], a + call .getwhichside + ld hl, DecoText_PutAwayAndSetUp + call MenuTextBoxBackup + xor a + ret + +.nothingthere + ld a, [MenuSelection] + ld [wd1ec], a + call .getwhichside + ld a, [MenuSelection] + ld hl, StringBuffer3 + call GetDecorationName + ld hl, DecoText_SetUpTheDeco + call MenuTextBoxBackup + xor a + ret + +.failed + ld hl, DecoText_AlreadySetUp + call MenuTextBoxBackup + scf + ret +; 26e33 + +.getwhichside: ; 26e33 + ld a, [MenuSelection] + ld b, a + ld a, [wd1ed] + cp b + ret nz + xor a + ld [wd1ed], a + ret +; 26e41 + +UnknownText_0x26e41: ; 0x26e41 + ; Which side do you want to put it on? + text_jump UnknownText_0x1bc48c + db "@" +; 0x26e46 + +DecoAction_PutItAway_Ornament: ; 26e46 + ld a, [wd1ec] + and a + jr z, .nothingthere + ld hl, StringBuffer3 + call GetDecorationName + ld a, $1 + ld [wd1ee], a + xor a + ld [wd1ec], a + ld hl, DecoText_PutAwayTheDeco + call MenuTextBoxBackup + xor a + ret + +.nothingthere + ld hl, DecoText_NothingToPutAway + call MenuTextBoxBackup + xor a + ret +; 26e6b + +DecoText_WhichSide: ; 0x26e6b + ; Which side do you want to put away? + text_jump UnknownText_0x1bc4b2 + db "@" +; 0x26e70 + +DecoAction_AskWhichSide: ; 26e70 + call MenuTextBox + ld hl, MenuDataHeader_0x26eab + call GetMenu2 + call ExitMenu + call CopyMenuData2 + jr c, .nope + ld a, [MenuSelection2] + cp 3 + jr z, .nope + ld [Buffer2], a + call QueryWhichSide + ld a, [hl] + ld [wd1ec], a + ld a, [de] + ld [wd1ed], a + xor a + ret + +.nope + scf + ret +; 26e9a + +QueryWhichSide: ; 26e9a + ld hl, RightOrnament + ld de, LeftOrnament + ld a, [Buffer2] + cp 1 + ret z + push hl + ld h, d + ld l, e + pop de + ret +; 26eab + +MenuDataHeader_0x26eab: ; 0x26eab + db $40 ; flags + db 00, 00 ; start coords + db 07, 13 ; end coords + dw MenuData2_0x26eb3 + db 1 ; default option +; 0x26eb3 + +MenuData2_0x26eb3: ; 0x26eb3 + db $80 ; flags + db 3 ; items + db "RIGHT SIDE@" + db "LEFT SIDE@" + db "CANCEL@" +; 0x26ed1 + +DecoText_PutAwayTheDeco: ; 0x26ed1 + ; Put away the @ . + text_jump UnknownText_0x1bc4d7 + db "@" +; 0x26ed6 + +DecoText_NothingToPutAway: ; 0x26ed6 + ; There's nothing to put away. + text_jump UnknownText_0x1bc4ec + db "@" +; 0x26edb + +DecoText_SetUpTheDeco: ; 0x26edb + ; Set up the @ . + text_jump UnknownText_0x1bc509 + db "@" +; 0x26ee0 + +DecoText_PutAwayAndSetUp: ; 0x26ee0 + ; Put away the @ and set up the @ . + text_jump UnknownText_0x1bc51c + db "@" +; 0x26ee5 + +DecoText_AlreadySetUp: ; 0x26ee5 + ; That's already set up. + text_jump UnknownText_0x1bc546 + db "@" +; 0x26eea + +GetDecorationName_c_de: ; 26eea + ld a, c + ld h, d + ld l, e + call GetDecorationName + ret +; 26ef1 + +DecorationFlagAction_c: ; 26ef1 + ld a, c + jp DecorationFlagAction +; 26ef5 + + +GetDecorationName_c: ; 26ef5 (9:6ef5) + ld a, c + call GetDecorationID + ld hl, StringBuffer1 + push hl + call GetDecorationName + pop de + ret + + +SetSpecificDecorationFlag: ; 26f02 + ld a, c + call GetDecorationID + ld b, SET_FLAG + call DecorationFlagAction + ret +; 26f0c + +GetDecorationID: ; 26f0c + push hl + push de + ld e, a + ld d, 0 + ld hl, DecorationIDs + add hl, de + ld a, [hl] + pop de + pop hl + ret +; 26f19 + +SetAllDecorationFlags: ; 26f19 + ld hl, DecorationIDs +.loop + ld a, [hli] + cp -1 + jr z, .done + push hl + ld b, SET_FLAG + call DecorationFlagAction + pop hl + jr .loop + +.done + ret +; 26f2b + +DecorationIDs: ; 26f2b + db DECO_FEATHERY_BED ; 2 + db DECO_PINK_BED ; 3 + db DECO_POLKADOT_BED ; 4 + db DECO_PIKACHU_BED ; 5 + + db DECO_RED_CARPET ; 7 + db DECO_BLUE_CARPET ; 8 + db DECO_YELLOW_CARPET ; 9 + db DECO_GREEN_CARPET ; a + + db DECO_MAGNAPLANT ; c + db DECO_TROPICPLANT ; d + db DECO_JUMBOPLANT ; e + + db DECO_TOWN_MAP ; 10 + db DECO_PIKACHU_POSTER ; 11 + db DECO_CLEFAIRY_POSTER ; 12 + db DECO_JIGGLYPUFF_POSTER ; 13 + + db DECO_FAMICOM ; 15 + db DECO_SNES ; 16 + db DECO_N64 ; 17 + db DECO_VIRTUAL_BOY ; 18 + + db DECO_PIKACHU_DOLL ; 1e + db DECO_SURF_PIKACHU_DOLL ; 1f + db DECO_CLEFAIRY_DOLL ; 20 + db DECO_JIGGLYPUFF_DOLL ; 21 + db DECO_BULBASAUR_DOLL ; 22 + db DECO_CHARMANDER_DOLL ; 23 + db DECO_SQUIRTLE_DOLL ; 24 + db DECO_POLIWAG_DOLL ; 25 + db DECO_DIGLETT_DOLL ; 26 + db DECO_STARMIE_DOLL ; 27 + db DECO_MAGIKARP_DOLL ; 28 + db DECO_ODDISH_DOLL ; 29 + db DECO_GENGAR_DOLL ; 2a + db DECO_SHELLDER_DOLL ; 2b + db DECO_GRIMER_DOLL ; 2c + db DECO_VOLTORB_DOLL ; 2d + db DECO_WEEDLE_DOLL ; 2e + db DECO_UNOWN_DOLL ; 2f + db DECO_GEODUDE_DOLL ; 30 + db DECO_MACHOP_DOLL ; 31 + db DECO_TENTACOOL_DOLL ; 32 + db DECO_BIG_SNORLAX_DOLL ; 1a + db DECO_BIG_ONIX_DOLL ; 1b + db DECO_BIG_LAPRAS_DOLL ; 1c + db DECO_GOLD_TROPHY_DOLL ; 33 + db DECO_SILVER_TROPHY_DOLL ; 34 + db -1 +; 26f59 + +DescribeDecoration:: ; 26f59 + ld a, b + ld hl, JumpTable_DecorationDesc + rst JumpTable + ret +; 26f5f + +JumpTable_DecorationDesc: ; 26f5f + dw DecorationDesc_Poster + dw DecorationDesc_LeftOrnament + dw DecorationDesc_RightOrnament + dw DecorationDesc_GiantOrnament + dw DecorationDesc_Console +; 26f69 + +DecorationDesc_Poster: ; 26f69 + ld a, [Poster] + ld hl, DecorationDesc_PosterPointers + ld de, 3 + call IsInArray + jr c, .nope + ld de, DecorationDesc_NullPoster + ld b, BANK(DecorationDesc_NullPoster) + ret + +.nope + ld b, BANK(DecorationDesc_TownMapPoster) + inc hl + ld a, [hli] + ld d, [hl] + ld e, a + ret +; 26f84 + +DecorationDesc_PosterPointers: ; 26f84 + dbw DECO_TOWN_MAP, DecorationDesc_TownMapPoster + dbw DECO_PIKACHU_POSTER, DecorationDesc_PikachuPoster + dbw DECO_CLEFAIRY_POSTER, DecorationDesc_ClefairyPoster + dbw DECO_JIGGLYPUFF_POSTER, DecorationDesc_JigglypuffPoster + db -1 +; 26f91 + +DecorationDesc_TownMapPoster: ; 0x26f91 + loadfont + writetext .TownMapText + closetext + special Special_TownMap + loadmovesprites + end +; 0x26f9b + +.TownMapText: ; 0x26f9b + ; It's the TOWN MAP. + text_jump UnknownText_0x1bc55d + db "@" +; 0x26fa0 + +DecorationDesc_PikachuPoster: ; 0x26fa0 + jumptext .PikaPosterText +; 0x26fa3 + +.PikaPosterText: ; 0x26fa3 + ; It's a poster of a cute PIKACHU. + text_jump UnknownText_0x1bc570 + db "@" +; 0x26fa8 + +DecorationDesc_ClefairyPoster: ; 0x26fa8 + jumptext .ClefairyPosterText +; 0x26fab + +.ClefairyPosterText: ; 0x26fab + ; It's a poster of a cute CLEFAIRY. + text_jump UnknownText_0x1bc591 + db "@" +; 0x26fb0 + +DecorationDesc_JigglypuffPoster: ; 0x26fb0 + jumptext .JigglypuffPosterText +; 0x26fb3 + +.JigglypuffPosterText: ; 0x26fb3 + ; It's a poster of a cute JIGGLYPUFF. + text_jump UnknownText_0x1bc5b3 + db "@" +; 0x26fb8 + +DecorationDesc_NullPoster: ; 26fb8 + end +; 26fb9 + +DecorationDesc_LeftOrnament: ; 26fb9 + ld a, [LeftOrnament] + jr DecorationDesc_OrnamentOrConsole + +DecorationDesc_RightOrnament: ; 26fbe + ld a, [RightOrnament] + jr DecorationDesc_OrnamentOrConsole + +DecorationDesc_Console: ; 26fc3 + ld a, [Console] + jr DecorationDesc_OrnamentOrConsole + +DecorationDesc_OrnamentOrConsole: ; 26fc8 + ld c, a + ld de, StringBuffer3 + call GetDecorationName_c_de + ld b, BANK(.OrnamentConsoleScript) + ld de, .OrnamentConsoleScript + ret +; 26fd5 + +.OrnamentConsoleScript: ; 26fd5 + jumptext .OrnamentConsoleText +; 26fd8 + +.OrnamentConsoleText: ; 0x26fd8 + ; It's an adorable @ . + text_jump UnknownText_0x1bc5d7 + db "@" +; 0x26fdd + +DecorationDesc_GiantOrnament: ; 26fdd + ld b, BANK(.BigDollScript) + ld de, .BigDollScript + ret +; 26fe3 + +.BigDollScript: ; 26fe3 + jumptext .BigDollText +; 26fe6 + +.BigDollText: ; 0x26fe6 + ; A giant doll! It's fluffy and cuddly. + text_jump UnknownText_0x1bc5ef + db "@" +; 0x26feb + +ToggleMaptileDecorations: ; 26feb + lb de, 0, 4 + ld a, [Bed] + call SetDecorationTile + lb de, 7, 4 + ld a, [Plant] + call SetDecorationTile + lb de, 6, 0 + ld a, [Poster] + call SetDecorationTile + call SetPosterVisibility + lb de, 0, 0 + call PadCoords_de + ld a, [Carpet] + and a + ret z + call _GetDecorationSprite + ld [hl], a + push af + lb de, 0, 2 + call PadCoords_de + pop af + inc a + ld [hli], a + inc a + ld [hli], a + dec a + ld [hl], a + ret +; 27027 + +SetPosterVisibility: ; 27027 + ld b, SET_FLAG + ld a, [Poster] + and a + jr nz, .ok + ld b, RESET_FLAG + +.ok + ld de, EVENT_KRISS_ROOM_POSTER + jp EventFlagAction +; 27037 + +SetDecorationTile: ; 27037 + push af + call PadCoords_de + pop af + and a + ret z + call _GetDecorationSprite + ld [hl], a + ret +; 27043 + +ToggleDecorationsVisibility: ; 27043 + ld de, EVENT_KRISS_HOUSE_2F_CONSOLE + ld hl, VariableSprites + SPRITE_CONSOLE - SPRITE_VARS + ld a, [Console] + call ToggleDecorationVisibility + ld de, EVENT_KRISS_HOUSE_2F_DOLL_1 + ld hl, VariableSprites + SPRITE_DOLL_1 - SPRITE_VARS + ld a, [LeftOrnament] + call ToggleDecorationVisibility + ld de, EVENT_KRISS_HOUSE_2F_DOLL_2 + ld hl, VariableSprites + SPRITE_DOLL_2 - SPRITE_VARS + ld a, [RightOrnament] + call ToggleDecorationVisibility + ld de, EVENT_KRISS_HOUSE_2F_BIG_DOLL + ld hl, VariableSprites + SPRITE_BIG_DOLL - SPRITE_VARS + ld a, [BigDoll] + call ToggleDecorationVisibility + ret +; 27074 + +ToggleDecorationVisibility: ; 27074 + and a + jr z, .hide + call _GetDecorationSprite + ld [hl], a + ld b, RESET_FLAG + jp EventFlagAction + +.hide + ld b, SET_FLAG + jp EventFlagAction +; 27085 + +_GetDecorationSprite: ; 27085 + ld c, a + push de + push hl + callba GetDecorationSprite + pop hl + pop de + ld a, c + ret +; 27092 diff --git a/engine/trainer_card.asm b/engine/trainer_card.asm new file mode 100755 index 000000000..53acdbf53 --- /dev/null +++ b/engine/trainer_card.asm @@ -0,0 +1,611 @@ +Function25105: ; 25105 + ld a, [VramState] + push af + xor a + ld [VramState], a + ld hl, Options + ld a, [hl] + push af + set 4, [hl] + call Function2513b +.asm_25117 + call UpdateTime + call JoyTextDelay + ld a, [wJumptableIndex] + bit 7, a + jr nz, .asm_25132 + ld a, [hJoyLast] + and B_BUTTON + jr nz, .asm_25132 + call Function2518e + call DelayFrame + jr .asm_25117 +.asm_25132 + pop af + ld [Options], a + pop af + ld [VramState], a + ret + +Function2513b: ; 2513b (9:513b) + call ClearBGPalettes + call ClearSprites + call ClearTileMap + call DisableLCD + + callba Function8833e + + ld hl, CardRightCornerGFX + ld de, VTiles2 tile $1c + ld bc, 1 tiles + ld a, BANK(CardRightCornerGFX) + call FarCopyBytes + + ld hl, CardStatusGFX + ld de, VTiles2 tile $29 + ld bc, $56 tiles + ld a, BANK(CardStatusGFX) + call FarCopyBytes + + call Function25299 + + hlcoord 0, 8 + ld d, $6 + call Function253b0 + + call EnableLCD + call WaitBGMap + ld b, SCGB_15 + call GetSGBLayout + call SetPalettes + call WaitBGMap + ld hl, wJumptableIndex + xor a +rept 3 + ld [hli], a +endr + ld [hl], a + ret + +Function2518e: ; 2518e (9:518e) + ld a, [wJumptableIndex] + ld e, a + ld d, $0 + ld hl, Jumptable_2519d +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +Jumptable_2519d: ; 2519d (9:519d) + dw Function251b6 + dw Function251d7 + dw Function251f4 + dw Function25221 + dw Function2524c + dw Function25279 + dw Function251b0 + + +Function251ab: ; 251ab (9:51ab) + ld hl, wJumptableIndex + inc [hl] + ret + +Function251b0: ; 251b0 (9:51b0) + ld hl, wJumptableIndex + set 7, [hl] + ret + +Function251b6: ; 251b6 (9:51b6) + call ClearSprites + hlcoord 0, 8 + ld d, $6 + call Function253b0 + call WaitBGMap + ld de, CardStatusGFX + ld hl, VTiles2 tile $29 + lb bc, BANK(CardStatusGFX), $56 + call Request2bpp + call Function2530a + call Function251ab + ret + +Function251d7: ; 251d7 (9:51d7) + call Function25415 + ld hl, hJoyLast + ld a, [hl] + and D_RIGHT | A_BUTTON + jr nz, .pressed_right_a + ret + +.pressed_right_a + ld a, $2 + ld [wJumptableIndex], a + ret +; 251e9 (9:51e9) + +Function251e9: ; 251e9 + ld a, [KantoBadges] + and a + ret z + + ld a, $4 + ld [wJumptableIndex], a + ret +; 251f4 + +Function251f4: ; 251f4 (9:51f4) + call ClearSprites + hlcoord 0, 8 + ld d, $6 + call Function253b0 + call WaitBGMap + ld de, LeaderGFX + ld hl, VTiles2 tile $29 + lb bc, BANK(LeaderGFX), $56 + call Request2bpp + ld de, BadgeGFX + ld hl, VTiles0 tile $00 + lb bc, BANK(BadgeGFX), $2c + call Request2bpp + call Function2536c + call Function251ab + ret + +Function25221: ; 25221 (9:5221) + ld hl, Unknown_254c9 + call Function25438 + ld hl, hJoyLast + ld a, [hl] + and A_BUTTON + jr nz, Function25246 + ld a, [hl] + and D_LEFT + jr nz, .asm_25235 + ret +.asm_25235 + ld a, $0 + ld [wJumptableIndex], a + ret +; 2523b (9:523b) + +Function2523b: ; 2523b + ld a, [KantoBadges] + and a + ret z + ld a, $4 + ld [wJumptableIndex], a + ret +; 25246 + +Function25246: ; 25246 + ld a, $6 + ld [wJumptableIndex], a + ret + +Function2524c: ; 2524c (9:524c) + call ClearSprites + hlcoord 0, 8 + ld d, $6 + call Function253b0 + call WaitBGMap + ld de, LeaderGFX2 + ld hl, VTiles2 tile $29 + lb bc, BANK(LeaderGFX2), $56 + call Request2bpp + ld de, BadgeGFX2 + ld hl, VTiles0 tile $00 + lb bc, BANK(BadgeGFX2), $2c + call Request2bpp + call Function2536c + call Function251ab + ret + +Function25279: ; 25279 (9:5279) + ld hl, Unknown_254c9 + call Function25438 + ld hl, hJoyLast + ld a, [hl] + and D_LEFT + jr nz, .asm_2528d + ld a, [hl] + and D_RIGHT + jr nz, .asm_25293 + ret +.asm_2528d + ld a, $2 + ld [wJumptableIndex], a + ret +.asm_25293 + ld a, $0 + ld [wJumptableIndex], a + ret + +Function25299: ; 25299 (9:5299) + hlcoord 0, 0 + ld d, $5 + call Function253b0 + hlcoord 2, 2 + ld de, String_252ec + call PlaceString + hlcoord 2, 4 + ld de, Tilemap_252f9 + call Function253a8 + hlcoord 7, 2 + ld de, PlayerName + call PlaceString + hlcoord 5, 4 + ld de, PlayerID + lb bc, PRINTNUM_LEADINGZEROS | 2, 5 + call PrintNum + hlcoord 7, 6 + ld de, Money + lb bc, PRINTNUM_MONEY | 3, 6 + call PrintNum + hlcoord 1, 3 + ld de, Tilemap_252fc + call Function253a8 + hlcoord 14, 1 + lb bc, 5, 7 + xor a + ld [hFillBox], a + predef FillBox + ret +; 252ec (9:52ec) + +String_252ec: ; 252ec + db "NAME/" + next "" + next "MONEY@" + +Tilemap_252f9: ; 252f9 + db $27, $28, $ff ; ID NO + +Tilemap_252fc: ; 252fc + db $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $26, $ff ; ____________> +; 2530a + +Function2530a: ; 2530a (9:530a) + hlcoord 2, 10 + ld de, String_2534c + call PlaceString + hlcoord 10, 15 + ld de, String_2535c + call PlaceString + ld hl, PokedexCaught + ld b, $20 + call CountSetBits + ld de, wd265 + hlcoord 15, 10 + lb bc, 1, 3 + call PrintNum + call Function25415 + hlcoord 2, 8 + ld de, Tilemap_25366 + call Function253a8 + ld a, [StatusFlags] ; pokedex + bit 0, a + ret nz + hlcoord 1, 9 + lb bc, 2, 17 + call ClearBox + ret +; 2534c (9:534c) + +String_2534c: ; 2534c + db "#DEX" + next "PLAY TIME" + db "@" + +String_2535b: ; 2535b + db "@" + +String_2535c: ; 2535c + db " BADGES▶@" + +Tilemap_25366: ; 25366 + db $29, $2a, $2b, $2c, $2d, $ff +; 2536c + +Function2536c: ; 2536c (9:536c) + hlcoord 2, 8 + ld de, Tilemap_253a2 + call Function253a8 + hlcoord 2, 10 + ld a, $29 + ld c, $4 +.asm_2537c + call Function253f4 +rept 4 + inc hl +endr + dec c + jr nz, .asm_2537c + hlcoord 2, 13 + ld a, $51 + ld c, $4 +.asm_2538d + call Function253f4 +rept 4 + inc hl +endr + dec c + jr nz, .asm_2538d + xor a + ld [wcf64], a + ld hl, Unknown_254c9 + call Function25448 + ret +; 253a2 (9:53a2) + +Tilemap_253a2: ; 253a2 + db $79, $7a, $7b, $7c, $7d, $ff ; "BADGES" +; 253a8 + +Function253a8: ; 253a8 (9:53a8) + ld a, [de] + cp $ff + ret z + ld [hli], a + inc de + jr Function253a8 + +Function253b0: ; 253b0 (9:53b0) + ld e, $14 +.asm_253b2 + ld a, $23 + ld [hli], a + dec e + jr nz, .asm_253b2 + ld a, $23 + ld [hli], a + ld e, $11 + ld a, $7f +.asm_253bf + ld [hli], a + dec e + jr nz, .asm_253bf + ld a, $1c + ld [hli], a + ld a, $23 + ld [hli], a +.asm_253c9 + ld a, $23 + ld [hli], a + ld e, $12 + ld a, $7f +.asm_253d0 + ld [hli], a + dec e + jr nz, .asm_253d0 + ld a, $23 + ld [hli], a + dec d + jr nz, .asm_253c9 + ld a, $23 + ld [hli], a + ld a, $24 + ld [hli], a + ld e, $11 + ld a, $7f +.asm_253e4 + ld [hli], a + dec e + jr nz, .asm_253e4 + ld a, $23 + ld [hli], a + ld e, $14 +.asm_253ed + ld a, $23 + ld [hli], a + dec e + jr nz, .asm_253ed + ret + +Function253f4: ; 253f4 (9:53f4) + push de + push hl + ld [hli], a + inc a + ld [hli], a + inc a + ld [hli], a + inc a + ld [hli], a + inc a + ld de, $11 + add hl, de + ld [hli], a + inc a + ld [hli], a + inc a + ld [hli], a + inc a + ld de, $11 + add hl, de + ld [hli], a + inc a + ld [hli], a + inc a + ld [hli], a + inc a + pop hl + pop de + ret + +Function25415: ; 25415 (9:5415) + hlcoord 11, 12 + ld de, GameTimeHours + lb bc, 2, 4 + call PrintNum + inc hl + ld de, GameTimeMinutes + lb bc, PRINTNUM_LEADINGZEROS | 1, 2 + call PrintNum + ld a, [hVBlankCounter] + and $1f + ret nz + hlcoord 15, 12 + ld a, [hl] + xor $51 + ld [hl], a + ret + +Function25438: ; 25438 (9:5438) + ld a, [hVBlankCounter] + and $7 + ret nz + ld a, [wcf64] + inc a + and $7 + ld [wcf64], a + jr Function25448 + +Function25448: ; 25448 (9:5448) + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [de] + ld c, a + ld de, Sprites + ld b, 8 +.asm_25453 + srl c + push bc + jr nc, .asm_25472 + push hl + ld a, [hli] + ld b, a + ld a, [hli] + ld c, a + ld a, [hli] + ld [wcf66], a + ld a, [wcf64] + add l + ld l, a + ld a, 0 + adc h + ld h, a + ld a, [hl] + ld [wcf65], a + call Function2547b + pop hl +.asm_25472 + ld bc, $b + add hl, bc + pop bc + dec b + jr nz, .asm_25453 + ret + +Function2547b: ; 2547b (9:547b) + ld a, [wcf65] + and $80 + jr nz, .asm_25487 + ld hl, Unknown_254a7 + jr .asm_2548a +.asm_25487 + ld hl, Unknown_254b8 +.asm_2548a + ld a, [hli] + cp $ff + ret z + add b + ld [de], a + inc de + ld a, [hli] + add c + ld [de], a + inc de + ld a, [wcf65] + and $7f + add [hl] + ld [de], a + inc hl + inc de + ld a, [wcf66] + add [hl] + ld [de], a + inc hl + inc de + jr .asm_2548a +; 254a7 (9:54a7) + +Unknown_254a7: ; 254a7 + db $00, $00, $00, $00 + db $00, $08, $01, $00 + db $08, $00, $02, $00 + db $08, $08, $03, $00 + db $ff + +Unknown_254b8: ; 254b8 + db $00, $00, $01, $20 + db $00, $08, $00, $20 + db $08, $00, $03, $20 + db $08, $08, $02, $20 + db $ff + +Unknown_254c9: ; 254c9 +; Template OAM data for each badge on the trainer card. +; Format: + ; y, x, palette + ; cycle 1: face tile, in1 tile, in2 tile, in3 tile + ; cycle 2: face tile, in1 tile, in2 tile, in3 tile + + dw JohtoBadges + + ; Zephyrbadge + db $68, $18, $00 + db $00, $20, $24, $20 | $80 + db $00, $20, $24, $20 | $80 + + ; Hivebadge + db $68, $38, $00 + db $04, $20, $24, $20 | $80 + db $04, $20, $24, $20 | $80 + + ; Plainbadge + db $68, $58, $00 + db $08, $20, $24, $20 | $80 + db $08, $20, $24, $20 | $80 + + ; Fogbadge + db $68, $78, $00 + db $0c, $20, $24, $20 | $80 + db $0c, $20, $24, $20 | $80 + + ; Mineralbadge + db $80, $38, $00 + db $10, $20, $24, $20 | $80 + db $10, $20, $24, $20 | $80 + + ; Stormbadge + db $80, $18, $00 + db $14, $20, $24, $20 | $80 + db $14, $20, $24, $20 | $80 + + ; Glacierbadge + db $80, $58, $00 + db $18, $20, $24, $20 | $80 + db $18, $20, $24, $20 | $80 + + ; Risingbadge + ; X-flips on alternate cycles. + db $80, $78, $00 + db $1c, $20, $24, $20 | $80 + db $1c | $80, $20, $24, $20 | $80 +; 25523 + +CardStatusGFX: INCBIN "gfx/misc/card_status.2bpp" + +LeaderGFX: INCBIN "gfx/misc/leaders.w24.2bpp" +LeaderGFX2: INCBIN "gfx/misc/leaders.w24.2bpp" +BadgeGFX: INCBIN "gfx/misc/badges.2bpp" +BadgeGFX2: INCBIN "gfx/misc/badges.2bpp" + +CardRightCornerGFX: INCBIN "gfx/misc/card_right_corner.2bpp" -- cgit v1.2.3 From 27ef600ace40671a78f5bb3a71f507e42c175f50 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 17 Nov 2015 17:56:49 -0500 Subject: Here's the mail it never fails --- engine/breeding/egg.asm | 2 +- engine/link.asm | 28 +++---- engine/mail.asm | 190 +++++++++++++++++++++++++++++++++++++++++++++++ engine/mart.asm | 2 +- engine/pokecenter_pc.asm | 10 +-- engine/save.asm | 12 +-- engine/selectmenu.asm | 2 +- engine/specials.asm | 16 ++-- engine/startmenu.asm | 71 +++++++++--------- engine/trainer_card.asm | 90 ++++++++++++---------- 10 files changed, 311 insertions(+), 112 deletions(-) create mode 100755 engine/mail.asm (limited to 'engine') diff --git a/engine/breeding/egg.asm b/engine/breeding/egg.asm index 8798233a1..f007fde6a 100755 --- a/engine/breeding/egg.asm +++ b/engine/breeding/egg.asm @@ -192,7 +192,7 @@ OverworldHatchEgg:: ; 16f5e call ResetWindow call LoadStandardMenuDataHeader call Function16f70 - call Function2b4d + call ExitAllMenus call RestartMapMusic jp LoadMoveSprites ; 16f70 diff --git a/engine/link.asm b/engine/link.asm index 27a9ebcc4..6d6e0f403 100755 --- a/engine/link.asm +++ b/engine/link.asm @@ -834,9 +834,9 @@ Function28595: ; 28595 ld de, wc9f4 ld a, $20 call Function28682 - ld a, BANK(sPartyScratch1) + ld a, BANK(sPartyMail) call GetSRAMBank - ld hl, sPartyScratch1 + ld hl, sPartyMail ld b, PARTY_LENGTH .loop2 push bc @@ -847,7 +847,7 @@ Function28595: ; 28595 pop bc dec b jr nz, .loop2 - ld hl, sPartyScratch1 + ld hl, sPartyMail ld b, PARTY_LENGTH .loop3 push bc @@ -859,7 +859,7 @@ Function28595: ; 28595 dec b jr nz, .loop3 ld b, PARTY_LENGTH - ld de, sPartyScratch1 + ld de, sPartyMail ld hl, wc9f9 .loop4 push bc @@ -883,7 +883,7 @@ Function28595: ; 28595 .next pop de - ld hl, SCRATCHMON_STRUCT_LENGTH + ld hl, MAIL_STRUCT_LENGTH add hl, de ld d, h ld e, l @@ -1744,15 +1744,15 @@ Function28b87: ; 28b87 jp Function28ea3 .asm_28c7b - ld hl, sPartyScratch1 + ld hl, sPartyMail ld a, [wd002] - ld bc, SCRATCHMON_STRUCT_LENGTH + ld bc, MAIL_STRUCT_LENGTH call AddNTimes - ld a, BANK(sPartyScratch1) + ld a, BANK(sPartyMail) call GetSRAMBank ld d, h ld e, l - ld bc, SCRATCHMON_STRUCT_LENGTH + ld bc, MAIL_STRUCT_LENGTH add hl, bc ld a, [wd002] ld c, a @@ -1762,24 +1762,24 @@ Function28b87: ; 28b87 cp $6 jr z, .asm_28ca6 push bc - ld bc, SCRATCHMON_STRUCT_LENGTH + ld bc, MAIL_STRUCT_LENGTH call CopyBytes pop bc jr .asm_28c96 .asm_28ca6 - ld hl, sPartyScratch1 + ld hl, sPartyMail ld a, [PartyCount] dec a - ld bc, SCRATCHMON_STRUCT_LENGTH + ld bc, MAIL_STRUCT_LENGTH call AddNTimes push hl ld hl, wc9f4 ld a, [wd003] - ld bc, SCRATCHMON_STRUCT_LENGTH + ld bc, MAIL_STRUCT_LENGTH call AddNTimes pop de - ld bc, SCRATCHMON_STRUCT_LENGTH + ld bc, MAIL_STRUCT_LENGTH call CopyBytes call CloseSRAM ld hl, PlayerName diff --git a/engine/mail.asm b/engine/mail.asm new file mode 100755 index 000000000..e3b7a5fab --- /dev/null +++ b/engine/mail.asm @@ -0,0 +1,190 @@ +SendMailToPC: ; 4456e + ld a, MON_ITEM + call GetPartyParamLocation + ld d, [hl] + callba ItemIsMail + jr nc, .full + call GetMailboxCount + cp MAILBOX_CAPACITY + jr nc, .full + ld bc, MAIL_STRUCT_LENGTH + ld hl, sMailbox + call AddNTimes + ld d, h + ld e, l + ld a, [CurPartyMon] + ld bc, MAIL_STRUCT_LENGTH + ld hl, sPartyMail + call AddNTimes + push hl + ld a, BANK(sMailboxCount) + call GetSRAMBank + ld bc, MAIL_STRUCT_LENGTH + call CopyBytes + pop hl + xor a + ld bc, MAIL_STRUCT_LENGTH + call ByteFill + ld a, MON_ITEM + call GetPartyParamLocation + ld [hl], $0 + ld hl, sMailboxCount + inc [hl] + call CloseSRAM + xor a + ret + +.full + scf + ret +; 445c0 + +Function445c0: ; 445c0 (11:45c0) + ld a, BANK(sMailboxCount) + call GetSRAMBank + ld a, b + push bc + ld hl, sMailbox + ld bc, MAIL_STRUCT_LENGTH + call AddNTimes + push hl + add hl, bc + pop de + pop bc +.loop + ld a, b + cp $9 + jr z, .done + push bc + ld bc, MAIL_STRUCT_LENGTH + call CopyBytes + pop bc + inc b + jr .loop +.done + ld h, d + ld l, e + xor a + ld bc, MAIL_STRUCT_LENGTH + call ByteFill + ld hl, sMailboxCount + dec [hl] + jp CloseSRAM +; 445f4 (11:45f4) + +ReadMailMessage: ; 445f4 + ld a, b + ld hl, sMailbox + ld bc, MAIL_STRUCT_LENGTH + call AddNTimes + ld d, h + ld e, l + callba ReadAnyMail + ret + +Function44607: ; 44607 + ld a, BANK(sMailboxCount) + call GetSRAMBank + push bc + ld a, b + ld bc, MAIL_STRUCT_LENGTH + ld hl, sMailbox + call AddNTimes + push hl + ld a, [CurPartyMon] + ld bc, MAIL_STRUCT_LENGTH + ld hl, sPartyMail + call AddNTimes + ld d, h + ld e, l + pop hl + push hl + ld bc, MAIL_STRUCT_LENGTH + call CopyBytes + pop hl + ld de, PARTYMON_STRUCT_LENGTH - MON_MOVES + add hl, de + ld d, [hl] + ld a, [CurPartyMon] + ld hl, PartyMon1Item + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + ld [hl], d + call CloseSRAM + pop bc + jp Function445c0 +; 44648 (11:4648) + +GetMailboxCount: ; 44648 + ld a, BANK(sMailboxCount) + call GetSRAMBank + ld a, [sMailboxCount] + ld c, a + jp CloseSRAM +; 44654 + +Function44654:: ; 44654 + push bc + push de + callba SelectMonFromParty + ld a, $2 + jr c, .asm_446c6 + ld a, [CurPartyMon] + ld hl, PartyMon1Item + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + ld d, [hl] + callba ItemIsMail + ld a, $3 + jr nc, .asm_446c6 + ld a, BANK(sPartyMail) + call GetSRAMBank + ld a, [CurPartyMon] + ld hl, sPartyMail + ld bc, MAIL_STRUCT_LENGTH + call AddNTimes + ld d, h + ld e, l + pop hl + pop bc + + ld a, $20 + ld [wd265], a +.asm_44691 + ld a, [de] + ld c, a + ld a, b + call GetFarByte + cp "@" + jr z, .asm_446ab + cp c + ld a, $0 + jr nz, .asm_446c1 + inc hl + inc de + ld a, [wd265] + dec a + ld [wd265], a + jr nz, .asm_44691 + +.asm_446ab + callba CheckCurPartyMonFainted + ld a, $4 + jr c, .asm_446c1 + xor a + ld [wPokemonWithdrawDepositParameter], a + callba Functione039 + ld a, $1 + +.asm_446c1 + call CloseSRAM + jr .asm_446c8 + +.asm_446c6 + pop de + pop bc + +.asm_446c8 + ld [ScriptVar], a + ret +; 446cc diff --git a/engine/mart.asm b/engine/mart.asm index 8fa7888c2..2aa410760 100755 --- a/engine/mart.asm +++ b/engine/mart.asm @@ -377,7 +377,7 @@ BuyMenu: ; 15c62 .loop call BuyMenuLoop ; menu loop jr nc, .loop - call Function2b3c + call ReturnToCallingMenu ret ; 15c7d diff --git a/engine/pokecenter_pc.asm b/engine/pokecenter_pc.asm index 7d76d07d3..4d31109ac 100755 --- a/engine/pokecenter_pc.asm +++ b/engine/pokecenter_pc.asm @@ -140,7 +140,7 @@ HallOfFamePC: ; 1569a call PC_PlayChoosePCSound call FadeToMenu callba _HallOfFamePC - call Function2b3c + call ReturnToCallingMenu and a ret ; 156ab @@ -323,7 +323,7 @@ KrisWithdrawItemMenu: ; 0x157d1 jr .asm_157da .asm_157e4 - call Function2b3c + call ReturnToCallingMenu xor a ret ; 0x157e9 @@ -403,7 +403,7 @@ KrisTossItemMenu: ; 0x1585f jr .asm_15868 .asm_15878 - call Function2b3c + call ReturnToCallingMenu xor a ret ; 0x1587d @@ -442,7 +442,7 @@ KrisDepositItemMenu: ; 0x1588b jr .asm_1589c .asm_158b3 - call Function2b3c + call ReturnToCallingMenu .asm_158b6 xor a @@ -450,7 +450,7 @@ KrisDepositItemMenu: ; 0x1588b ; 0x158b8 Function158b8: ; 0x158b8 - callba Function129d5 + callba HasNoItems ret nc ld hl, UnknownText_0x158c7 call MenuTextBoxBackup diff --git a/engine/save.asm b/engine/save.asm index 8bccd932c..4c20c83a4 100644 --- a/engine/save.asm +++ b/engine/save.asm @@ -1,4 +1,4 @@ -Function14a1a: ; 14a1a +SaveMenu: ; 14a1a call LoadStandardMenuDataHeader callba Function5e9a call SpeechTextBox @@ -30,7 +30,7 @@ Function14a58: ; 14a58 call Function14e13 call SaveBackupPokemonData call SaveBackupChecksum - callba BackupScratchmons + callba BackupPartyMonMail callba Function1406a call ClearWRAMStateAfterSave ret @@ -106,7 +106,7 @@ Function14ad5: ; 14ad5 call SaveBackupPlayerData call SaveBackupPokemonData call SaveBackupChecksum - callba BackupScratchmons + callba BackupPartyMonMail callba BackupMobileEventIndex callba Function1406a call LoadBox @@ -284,7 +284,7 @@ SaveGameData_: ; 14c10 call SaveBackupPokemonData call SaveBackupChecksum call UpdateStackTop - callba BackupScratchmons + callba BackupPartyMonMail callba BackupMobileEventIndex callba Function1406a ld a, BANK(s1_be45) @@ -630,7 +630,7 @@ TryLoadSaveFile: ; 14ea5 (5:4ea5) call LoadPlayerData call LoadPokemonData call LoadBox - callba RestoreScratchmons + callba RestorePartyMonMail callba RestoreMobileEventIndex callba Function1050ea call ValidateBackupSave @@ -647,7 +647,7 @@ TryLoadSaveFile: ; 14ea5 (5:4ea5) call LoadBackupPlayerData call LoadBackupPokemonData call LoadBox - callba RestoreScratchmons + callba RestorePartyMonMail callba RestoreMobileEventIndex callba Function1050ea call ValidateSave diff --git a/engine/selectmenu.asm b/engine/selectmenu.asm index e73f397a5..916e48b3c 100755 --- a/engine/selectmenu.asm +++ b/engine/selectmenu.asm @@ -158,7 +158,7 @@ UseRegisteredItem: ; 133c3 call ResetWindow call FadeToMenu call DoItemEffect - call Function2b3c + call ReturnToCallingMenu call LoadMoveSprites and a ret diff --git a/engine/specials.asm b/engine/specials.asm index 82281d600..68ad47aa4 100644 --- a/engine/specials.asm +++ b/engine/specials.asm @@ -216,7 +216,7 @@ Special_GameCornerPrizeMonCheckDex: ; c230 ld a, [ScriptVar] ld [wd265], a callba Functionfb877 - call Function2b4d + call ExitAllMenus ret ; c252 @@ -288,21 +288,21 @@ SpecialNameRater: ; c2b9 Special_TownMap: ; c2c0 call FadeToMenu callba _TownMap - call Function2b4d + call ExitAllMenus ret ; c2cd Special_UnownPrinter: ; c2cd call FadeToMenu callba UnownPrinter - call Function2b4d + call ExitAllMenus ret ; c2da Special_DisplayLinkRecord: ; c2da call FadeToMenu callba DisplayLinkRecord - call Function2b4d + call ExitAllMenus ret ; c2e7 @@ -383,7 +383,7 @@ Special_UnownPuzzle: ; c360 callba Functione1190 ld a, [wd0ec] ld [ScriptVar], a - call Function2b4d + call ExitAllMenus ret ; c373 @@ -425,7 +425,7 @@ Special_StartGameCornerGame: ; c39a ld l, a pop af rst FarCall - call Function2b4d + call ExitAllMenus ret ; c3ae @@ -629,14 +629,14 @@ Special_FadeOutMusic: ; c48f Diploma: ; c49f call FadeToMenu callba _Diploma - call Function2b4d + call ExitAllMenus ret ; c4ac PrintDiploma: ; c4ac call FadeToMenu callba _PrintDiploma - call Function2b4d + call ExitAllMenus ret ; c4b9 diff --git a/engine/startmenu.asm b/engine/startmenu.asm index efb6c817a..ae6358014 100755 --- a/engine/startmenu.asm +++ b/engine/startmenu.asm @@ -422,7 +422,7 @@ StartMenu_Quit: ; 128f0 ; Retire from the bug catching contest. ld hl, .EndTheContestText - call Function12cf5 + call StartMenuYesNo jr c, .DontEndContest ld a, BANK(BugCatchingContestReturnToGateScript) ld hl, BugCatchingContestReturnToGateScript @@ -444,7 +444,7 @@ StartMenu_Save: ; 1290b ; Save the game. call BufferScreen - callba Function14a1a + callba SaveMenu jr nc, .asm_12919 ld a, 0 ret @@ -468,8 +468,8 @@ StartMenu_Status: ; 12928 ; Player status. call FadeToMenu - callba Function25105 - call Function2b3c + callba TrainerCard + call ReturnToCallingMenu ld a, 0 ret ; 12937 @@ -483,7 +483,7 @@ StartMenu_Pokedex: ; 12937 call FadeToMenu callba Pokedex - call Function2b3c + call ReturnToCallingMenu .asm_12949 ld a, 0 @@ -495,7 +495,7 @@ StartMenu_Pokegear: ; 1294c call FadeToMenu callba PokeGear - call Function2b3c + call ReturnToCallingMenu ld a, 0 ret ; 1295b @@ -507,12 +507,13 @@ StartMenu_Pack: ; 1295b callba Pack ld a, [wcf66] and a - jr nz, .asm_12970 - call Function2b3c + jr nz, .used_item + call ReturnToCallingMenu ld a, 0 ret -.asm_12970 - call Function2b4d + +.used_item + call ExitAllMenus ld a, 4 ret ; 12976 @@ -556,19 +557,19 @@ StartMenu_Pokemon: ; 12976 jr z, .quit .return - call Function2b3c + call ReturnToCallingMenu ld a, 0 ret .quit ld a, b push af - call Function2b4d + call ExitAllMenus pop af ret ; 129d5 -Function129d5: ; 129d5 +HasNoItems: ; 129d5 ld a, [NumItems] and a ret nz @@ -580,15 +581,15 @@ Function129d5: ; 129d5 ret nz ld hl, TMsHMs ld b, NUM_TMS + NUM_HMS -.asm_129e9 +.loop ld a, [hli] and a - jr nz, .asm_129f2 + jr nz, .done dec b - jr nz, .asm_129e9 + jr nz, .loop scf ret -.asm_129f2 +.done and a ret @@ -882,7 +883,7 @@ Function12bd9: ; 12bd9 jr .asm_12c08 .asm_12bf4 - call Function12cea + call GiveItemToPokemon ld hl, MadeHoldText call MenuTextBoxBackup call GivePartyItem @@ -897,17 +898,17 @@ Function12bd9: ; 12bd9 ld [wd265], a call GetItemName ld hl, SwitchAlreadyHoldingText - call Function12cf5 + call StartMenuYesNo jr c, .asm_12c4b - call Function12cea + call GiveItemToPokemon ld a, [wd265] push af ld a, [CurItem] ld [wd265], a pop af ld [CurItem], a - call Function12cdf + call ReceiveItemFromPokemon jr nc, .asm_12c3c ld hl, TookAndMadeHoldText @@ -920,7 +921,7 @@ Function12bd9: ; 12bd9 .asm_12c3c ld a, [wd265] ld [CurItem], a - call Function12cdf + call ReceiveItemFromPokemon ld hl, ItemStorageIsFullText call MenuTextBoxBackup @@ -953,7 +954,7 @@ TakePartyItem: ; 12c60 jr z, .asm_12c8c ld [CurItem], a - call Function12cdf + call ReceiveItemFromPokemon jr nc, .asm_12c94 callba ItemIsMail @@ -1045,7 +1046,7 @@ GetPartyItemLocation: ; 12cd7 ; 12cdf -Function12cdf: ; 12cdf +ReceiveItemFromPokemon: ; 12cdf ld a, $1 ld [wItemQuantityChangeBuffer], a ld hl, NumItems @@ -1053,13 +1054,13 @@ Function12cdf: ; 12cdf ; 12cea -Function12cea: ; 12cea (4:6cea) +GiveItemToPokemon: ; 12cea (4:6cea) ld a, $1 ld [wItemQuantityChangeBuffer], a ld hl, NumItems jp TossItem -Function12cf5: ; 12cf5 +StartMenuYesNo: ; 12cf5 call MenuTextBox call YesNoBox jp ExitMenu @@ -1071,7 +1072,7 @@ Function12cfe: ; 12cfe (4:6cfe) callba Function11e75 ld hl, PlayerName ld de, wd023 - ld bc, $a + ld bc, NAME_LENGTH - 1 call CopyBytes ld hl, PlayerID ld bc, $2 @@ -1082,14 +1083,14 @@ Function12cfe: ; 12cfe (4:6cfe) ld a, [CurItem] ld [de], a ld a, [CurPartyMon] - ld hl, sPartyScratch1 - ld bc, SCRATCHMON_STRUCT_LENGTH + ld hl, sPartyMail + ld bc, MAIL_STRUCT_LENGTH call AddNTimes ld d, h ld e, l ld hl, wd002 - ld bc, SCRATCHMON_STRUCT_LENGTH - ld a, BANK(sPartyScratch1) + ld bc, MAIL_STRUCT_LENGTH + ld a, BANK(sPartyMail) call GetSRAMBank call CopyBytes call CloseSRAM @@ -1127,11 +1128,11 @@ MonMailAction: ; 12d45 .take ld hl, .sendmailtopctext - call Function12cf5 + call StartMenuYesNo jr c, .RemoveMailToBag ld a, [CurPartyMon] ld b, a - callba Function4456e + callba SendMailToPC jr c, .MailboxFull ld hl, .sentmailtopctext call MenuTextBoxBackup @@ -1144,12 +1145,12 @@ MonMailAction: ; 12d45 .RemoveMailToBag ld hl, .mailwilllosemessagetext - call Function12cf5 + call StartMenuYesNo jr c, .done call GetPartyItemLocation ld a, [hl] ld [CurItem], a - call Function12cdf + call ReceiveItemFromPokemon jr nc, .BagIsFull call GetPartyItemLocation ld [hl], $0 diff --git a/engine/trainer_card.asm b/engine/trainer_card.asm index 53acdbf53..076e13fec 100755 --- a/engine/trainer_card.asm +++ b/engine/trainer_card.asm @@ -1,4 +1,4 @@ -Function25105: ; 25105 +TrainerCard: ; 25105 ld a, [VramState] push af xor a @@ -211,16 +211,18 @@ Function25279: ; 25279 (9:5279) ld hl, hJoyLast ld a, [hl] and D_LEFT - jr nz, .asm_2528d + jr nz, .left ld a, [hl] and D_RIGHT - jr nz, .asm_25293 + jr nz, .right ret -.asm_2528d + +.left ld a, $2 ld [wJumptableIndex], a ret -.asm_25293 + +.right ld a, $0 ld [wJumptableIndex], a ret @@ -466,24 +468,26 @@ Function25438: ; 25438 (9:5438) jr Function25448 Function25448: ; 25448 (9:5448) +; copy flag array pointer ld a, [hli] ld e, a ld a, [hli] +; get flag array ld d, a ld a, [de] ld c, a ld de, Sprites ld b, 8 -.asm_25453 +.loop srl c push bc - jr nc, .asm_25472 + jr nc, .skip_badge push hl - ld a, [hli] + ld a, [hli] ; y ld b, a - ld a, [hli] + ld a, [hli] ; x ld c, a - ld a, [hli] + ld a, [hli] ; pal ld [wcf66], a ld a, [wcf64] add l @@ -495,60 +499,64 @@ Function25448: ; 25448 (9:5448) ld [wcf65], a call Function2547b pop hl -.asm_25472 - ld bc, $b +.skip_badge + ld bc, $b ; 3 + 2 * 4 add hl, bc pop bc dec b - jr nz, .asm_25453 + jr nz, .loop ret Function2547b: ; 2547b (9:547b) ld a, [wcf65] and $80 - jr nz, .asm_25487 - ld hl, Unknown_254a7 - jr .asm_2548a -.asm_25487 - ld hl, Unknown_254b8 -.asm_2548a + jr nz, .xflip + ld hl, .facing1 + jr .loop +.xflip + ld hl, .facing2 +.loop ld a, [hli] cp $ff ret z add b ld [de], a inc de + ld a, [hli] add c ld [de], a inc de + ld a, [wcf65] and $7f add [hl] ld [de], a inc hl inc de + ld a, [wcf66] add [hl] ld [de], a inc hl inc de - jr .asm_2548a + jr .loop ; 254a7 (9:54a7) -Unknown_254a7: ; 254a7 - db $00, $00, $00, $00 - db $00, $08, $01, $00 - db $08, $00, $02, $00 - db $08, $08, $03, $00 - db $ff - -Unknown_254b8: ; 254b8 - db $00, $00, $01, $20 - db $00, $08, $00, $20 - db $08, $00, $03, $20 - db $08, $08, $02, $20 - db $ff +.facing1: ; 254a7 + ; y, x, tile, OAM attributes + db 0, 0, 0, 0 + db 0, 8, 1, 0 + db 8, 0, 2, 0 + db 8, 8, 3, 0 + db -1 + +.facing2: ; 254b8 + db 0, 0, 1, X_FLIP + db 0, 8, 0, X_FLIP + db 8, 0, 3, X_FLIP + db 8, 8, 2, X_FLIP + db -1 Unknown_254c9: ; 254c9 ; Template OAM data for each badge on the trainer card. @@ -560,43 +568,43 @@ Unknown_254c9: ; 254c9 dw JohtoBadges ; Zephyrbadge - db $68, $18, $00 + db $68, $18, 0 db $00, $20, $24, $20 | $80 db $00, $20, $24, $20 | $80 ; Hivebadge - db $68, $38, $00 + db $68, $38, 0 db $04, $20, $24, $20 | $80 db $04, $20, $24, $20 | $80 ; Plainbadge - db $68, $58, $00 + db $68, $58, 0 db $08, $20, $24, $20 | $80 db $08, $20, $24, $20 | $80 ; Fogbadge - db $68, $78, $00 + db $68, $78, 0 db $0c, $20, $24, $20 | $80 db $0c, $20, $24, $20 | $80 ; Mineralbadge - db $80, $38, $00 + db $80, $38, 0 db $10, $20, $24, $20 | $80 db $10, $20, $24, $20 | $80 ; Stormbadge - db $80, $18, $00 + db $80, $18, 0 db $14, $20, $24, $20 | $80 db $14, $20, $24, $20 | $80 ; Glacierbadge - db $80, $58, $00 + db $80, $58, 0 db $18, $20, $24, $20 | $80 db $18, $20, $24, $20 | $80 ; Risingbadge ; X-flips on alternate cycles. - db $80, $78, $00 + db $80, $78, 0 db $1c, $20, $24, $20 | $80 db $1c | $80, $20, $24, $20 | $80 ; 25523 -- cgit v1.2.3 From bc1870e3f499973fd656d37d134e3f9e4757c980 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 17 Nov 2015 23:29:14 -0500 Subject: Save, Bill's PC --- engine/billspc.asm | 136 ++++++++++++++++++++++++++++----------------------- engine/link.asm | 2 +- engine/main_menu.asm | 8 +-- engine/save.asm | 133 ++++++++++++++++++++++++------------------------- 4 files changed, 146 insertions(+), 133 deletions(-) (limited to 'engine') diff --git a/engine/billspc.asm b/engine/billspc.asm index 03a7592ca..1f46ee587 100755 --- a/engine/billspc.asm +++ b/engine/billspc.asm @@ -1165,30 +1165,30 @@ endr cp $f jr z, .asm_e2bf5 ld b, a - call Functione3396 + call GetBoxPointer ld a, b call GetSRAMBank push hl - ld bc, $35 + ld bc, sBoxMon1Level - sBox add hl, bc - ld bc, $20 + ld bc, BOXMON_STRUCT_LENGTH ld a, e call AddNTimes ld a, [hl] ld [TempMonLevel], a pop hl push hl - ld bc, $17 + ld bc, sBoxMon1Item - sBox add hl, bc - ld bc, $20 + ld bc, BOXMON_STRUCT_LENGTH ld a, e call AddNTimes ld a, [hl] ld [TempMonItem], a pop hl - ld bc, $2b + ld bc, sBoxMon1DVs - sBox add hl, bc - ld bc, $20 + ld bc, BOXMON_STRUCT_LENGTH ld a, e call AddNTimes ld de, TempMonDVs @@ -1201,19 +1201,19 @@ endr ret .asm_e2bc6 ld hl, PartyMon1Level - ld bc, $30 + ld bc, PARTYMON_STRUCT_LENGTH ld a, e call AddNTimes ld a, [hl] ld [TempMonLevel], a ld hl, PartyMon1Item - ld bc, $30 + ld bc, PARTYMON_STRUCT_LENGTH ld a, e call AddNTimes ld a, [hl] ld [TempMonItem], a ld hl, PartyMon1DVs - ld bc, $30 + ld bc, PARTYMON_STRUCT_LENGTH ld a, e call AddNTimes ld de, TempMonDVs @@ -1228,21 +1228,21 @@ endr ld a, BANK(sBox) call GetSRAMBank ld hl, sBoxMon1Level - ld bc, $20 + ld bc, BOXMON_STRUCT_LENGTH ld a, e call AddNTimes ld a, [hl] ld [TempMonLevel], a ld hl, sBoxMon1Item - ld bc, $20 + ld bc, BOXMON_STRUCT_LENGTH ld a, e call AddNTimes ld a, [hl] ld [TempMonItem], a ld hl, sBoxMon1DVs - ld bc, $20 + ld bc, BOXMON_STRUCT_LENGTH ld a, e call AddNTimes ld de, TempMonDVs @@ -1307,6 +1307,7 @@ Functione2c6e: ; e2c6e (38:6c6e) ld de, String_e2c67 call PlaceString ret + .asm_e2c7c inc de ld a, [de] @@ -1320,36 +1321,38 @@ Functione2c6e: ; e2c6e (38:6c6e) cp $f jr z, .asm_e2cf1 push hl - call Functione3396 + call GetBoxPointer ld a, b call GetSRAMBank push hl - ld bc, $16 + ld bc, sBoxMons - sBox add hl, bc - ld bc, $20 + ld bc, BOXMON_STRUCT_LENGTH ld a, e call AddNTimes ld a, [hl] pop hl and a jr z, .asm_e2cc2 - ld bc, $372 + ld bc, sBoxMonNicknames - sBox add hl, bc - ld bc, $b + ld bc, PKMN_NAME_LENGTH ld a, e call AddNTimes ld de, StringBuffer1 - ld bc, $b + ld bc, PKMN_NAME_LENGTH call CopyBytes call CloseSRAM pop hl ld de, StringBuffer1 call PlaceString ret + .asm_e2cc2 call CloseSRAM pop hl jr .asm_e2d23 + .asm_e2cc8 push hl ld hl, PartySpecies @@ -1359,19 +1362,21 @@ Functione2c6e: ; e2c6e (38:6c6e) and a jr z, .asm_e2cee ld hl, PartyMonNicknames - ld bc, $b + ld bc, PKMN_NAME_LENGTH ld a, e call AddNTimes ld de, StringBuffer1 - ld bc, $b + ld bc, PKMN_NAME_LENGTH call CopyBytes pop hl ld de, StringBuffer1 call PlaceString ret + .asm_e2cee pop hl jr .asm_e2d23 + .asm_e2cf1 push hl ld a, BANK(sBox) @@ -1394,6 +1399,7 @@ Functione2c6e: ; e2c6e (38:6c6e) ld de, StringBuffer1 call PlaceString ret + .asm_e2d1f call CloseSRAM pop hl @@ -1422,7 +1428,7 @@ Functione2d30: ; e2d30 (38:6d30) cp $f jr z, .asm_e2db7 ld b, a - call Functione3396 + call GetBoxPointer ld a, b call GetSRAMBank inc hl @@ -1447,6 +1453,7 @@ Functione2d30: ; e2d30 (38:6d30) inc a ld [wd004], a jr .asm_e2d57 + .asm_e2d79 call CloseSRAM ld a, $ff @@ -1455,6 +1462,7 @@ Functione2d30: ; e2d30 (38:6d30) inc a ld [wcb2c], a ret + .asm_e2d87 ld hl, PartySpecies .asm_e2d8a @@ -1478,6 +1486,7 @@ Functione2d30: ; e2d30 (38:6d30) inc a ld [wd004], a jr .asm_e2d8a + .asm_e2dac ld a, $ff ld [de], a @@ -1485,6 +1494,7 @@ Functione2d30: ; e2d30 (38:6d30) inc a ld [wcb2c], a ret + .asm_e2db7 ld a, BANK(sBox) call GetSRAMBank @@ -1510,6 +1520,7 @@ Functione2d30: ; e2d30 (38:6d30) inc a ld [wd004], a jr .asm_e2dbf + .asm_e2de1 call CloseSRAM ld a, $ff @@ -1538,10 +1549,11 @@ Functione2e01: ; e2e01 (38:6e01) jr nz, .asm_e2e0b call ClearSprites ret + .asm_e2e0b ld hl, Unknown_e2e2b ld de, Sprites -.done1 +.loop ld a, [hl] cp $ff ret z @@ -1561,7 +1573,7 @@ Functione2e01: ; e2e01 (38:6e01) ld a, [hli] ld [de], a inc de - jr .done1 + jr .loop ; e2e2b (38:6e2b) Unknown_e2e2b: ; e2e2b @@ -1795,11 +1807,11 @@ Functione2fd6: ; e2fd6 (38:6fd6) ld a, BANK(sBox) call GetSRAMBank ld hl, sBoxSpecies - call Functione3357 + call CopySpeciesToTemp ld hl, sBoxMonNicknames - call Functione3363 + call CopyNicknameToTemp ld hl, sBoxMonOT - call Functione3376 + call CopyOTNameToTemp ld hl, sBoxMons ld bc, BOXMON_STRUCT_LENGTH ld a, [CurPartyMon] @@ -1813,11 +1825,11 @@ Functione2fd6: ; e2fd6 (38:6fd6) .asm_e3020 ld hl, PartySpecies - call Functione3357 + call CopySpeciesToTemp ld hl, PartyMonNicknames - call Functione3363 + call CopyNicknameToTemp ld hl, PartyMonOT - call Functione3376 + call CopyOTNameToTemp ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species) ld bc, PARTYMON_STRUCT_LENGTH ld a, [CurPartyMon] @@ -1829,27 +1841,27 @@ Functione2fd6: ; e2fd6 (38:6fd6) .asm_e3048 ld b, a - call Functione3396 + call GetBoxPointer ld a, b call GetSRAMBank push hl inc hl - call Functione3357 + call CopySpeciesToTemp pop hl push hl - ld bc, $372 + ld bc, sBoxMonNicknames - sBox add hl, bc - call Functione3363 + call CopyNicknameToTemp pop hl push hl - ld bc, $296 + ld bc, sBoxMonOT - sBox add hl, bc - call Functione3376 + call CopyOTNameToTemp pop hl - ld bc, $16 + ld bc, sBoxMons - sBox add hl, bc - ld bc, $20 - call Functione3389 + ld bc, BOXMON_STRUCT_LENGTH + call CopyMonToTemp call CloseSRAM callba Function5088b ret @@ -2141,7 +2153,7 @@ Functione32b0: ; e32b0 ld a, [wcb31] dec a ld e, a - callba Function14ac2 + callba MovePkmnWOMail_SaveGame ld a, [wcb30] ld hl, wcb2f add [hl] @@ -2149,14 +2161,14 @@ Functione32b0: ; e32b0 ld a, $1 call GetSRAMBank ld hl, sBoxSpecies - call Functione3357 + call CopySpeciesToTemp ld hl, sBoxMonNicknames - call Functione3363 + call CopyNicknameToTemp ld hl, sBoxMonOT - call Functione3376 + call CopyOTNameToTemp ld hl, sBoxMons ld bc, BOXMON_STRUCT_LENGTH - call Functione3389 + call CopyMonToTemp call CloseSRAM callba Function5088b ld a, PC_DEPOSIT @@ -2169,7 +2181,7 @@ Functione32fa: ; e32fa ld a, [wcb2e] dec a ld e, a - callba Function14ac2 + callba MovePkmnWOMail_SaveGame ld a, [wcb2b] ld hl, wcb2a add [hl] @@ -2184,14 +2196,14 @@ Functione3316: ; e3316 add [hl] ld [CurPartyMon], a ld hl, PartySpecies - call Functione3357 + call CopySpeciesToTemp ld hl, PartyMonNicknames - call Functione3363 + call CopyNicknameToTemp ld hl, PartyMonOT - call Functione3376 + call CopyOTNameToTemp ld hl, PartyMon1Species ld bc, PARTYMON_STRUCT_LENGTH - call Functione3389 + call CopyMonToTemp xor a ld [wPokemonWithdrawDepositParameter], a callba Functione039 @@ -2207,7 +2219,7 @@ Functione3346: ; e3346 ret ; e3357 -Functione3357: ; e3357 (38:7357) +CopySpeciesToTemp: ; e3357 (38:7357) ld a, [CurPartyMon] ld c, a ld b, $0 @@ -2216,36 +2228,36 @@ Functione3357: ; e3357 (38:7357) ld [CurPartySpecies], a ret -Functione3363: ; e3363 (38:7363) - ld bc, $b +CopyNicknameToTemp: ; e3363 (38:7363) + ld bc, PKMN_NAME_LENGTH ld a, [CurPartyMon] call AddNTimes ld de, wd002 - ld bc, $b + ld bc, PKMN_NAME_LENGTH call CopyBytes ret -Functione3376: ; e3376 (38:7376) - ld bc, $b +CopyOTNameToTemp: ; e3376 (38:7376) + ld bc, NAME_LENGTH ld a, [CurPartyMon] call AddNTimes ld de, wd00d - ld bc, $b + ld bc, NAME_LENGTH call CopyBytes ret -Functione3389: ; e3389 (38:7389) +CopyMonToTemp: ; e3389 (38:7389) ld a, [CurPartyMon] call AddNTimes - ld de, wd018 + ld de, wd018_Mon call CopyBytes ret -Functione3396: ; e3396 (38:7396) +GetBoxPointer: ; e3396 (38:7396) dec b ld c, b ld b, 0 - ld hl, Unknown_e33a6 + ld hl, .boxes rept 3 add hl, bc endr @@ -2257,7 +2269,7 @@ endr ret ; e33a6 (38:73a6) -Unknown_e33a6: ; e33a6 +.boxes: ; e33a6 ; bank, address dba sBox1 dba sBox2 @@ -2576,7 +2588,7 @@ Functione36f9: ; e36f9 (38:76f9) ld a, [wCurBox] cp e ret z - callba Function14a83 + callba ChangeBoxSaveGame ret .asm_e3745 diff --git a/engine/link.asm b/engine/link.asm index 6d6e0f403..28b420543 100755 --- a/engine/link.asm +++ b/engine/link.asm @@ -3969,7 +3969,7 @@ Function29e53: ; 29e53 Special_TryQuickSave: ; 29e66 ld a, [wd265] push af - callba Function14ab2 + callba Link_SaveGame ld a, $1 jr nc, .asm_29e75 xor a diff --git a/engine/main_menu.asm b/engine/main_menu.asm index 72c6955b1..6e0ab56e5 100755 --- a/engine/main_menu.asm +++ b/engine/main_menu.asm @@ -150,7 +150,7 @@ Function49da4: ; 49da4 nop nop nop - ld a, [wcfcd] + ld a, [wSaveFileExists] and a jr nz, .next ld a, $0 @@ -220,7 +220,7 @@ Function49de4: ; 49de4 ; 49e09 Function49e09: ; 49e09 - ld a, [wcfcd] + ld a, [wSaveFileExists] and a ret z xor a @@ -256,7 +256,7 @@ Function49e27: ; 49e27 Function49e3d: ; 49e3d - ld a, [wcfcd] + ld a, [wSaveFileExists] and a ret z call Function6e3 @@ -566,7 +566,7 @@ Function4a0c2: ; 4a0c2 (12:60c2) pop af and a jr nz, .asm_4a0f9 - callba Function1509a + callba _SaveData .asm_4a0f9 ld c, 5 call DelayFrames diff --git a/engine/save.asm b/engine/save.asm index 4c20c83a4..f314cd4b5 100644 --- a/engine/save.asm +++ b/engine/save.asm @@ -3,11 +3,11 @@ SaveMenu: ; 14a1a callba Function5e9a call SpeechTextBox call UpdateSprites - callba Function4cf45 + callba SaveMenu_LoadDETile ld hl, UnknownText_0x15283 call SaveTheGame_yesorno jr nz, .refused - call CheckForExistingSaveFile + call AskOverwriteSaveFile jr c, .refused call SetWRAMStateForSave call _SavingDontTurnOffThePower @@ -15,36 +15,37 @@ SaveMenu: ; 14a1a call ExitMenu and a ret + .refused call ExitMenu call Functiond90 - callba Function4cf45 + callba SaveMenu_LoadDETile scf ret Function14a58: ; 14a58 call SetWRAMStateForSave - callba Function14056 - callba Function1050d9 + callba StageRTCTimeForSave + callba BackupMysteryGift call SavePokemonData - call Function14e13 + call SaveChecksum call SaveBackupPokemonData call SaveBackupChecksum callba BackupPartyMonMail - callba Function1406a + callba SaveRTC call ClearWRAMStateAfterSave ret ; 14a83 -Function14a83: ; 14a83 (5:4a83) +ChangeBoxSaveGame: ; 14a83 (5:4a83) push de ld hl, UnknownText_0x152a1 call MenuTextBox call YesNoBox call ExitMenu jr c, .refused - call CheckForExistingSaveFile + call AskOverwriteSaveFile jr c, .refused call SetWRAMStateForSave call SavingDontTurnOffThePower @@ -61,8 +62,8 @@ Function14a83: ; 14a83 (5:4a83) pop de ret -Function14ab2: ; 14ab2 - call CheckForExistingSaveFile +Link_SaveGame: ; 14ab2 + call AskOverwriteSaveFile jr c, .refused call SetWRAMStateForSave call _SavingDontTurnOffThePower @@ -73,7 +74,7 @@ Function14ab2: ; 14ab2 ret ; 14ac2 -Function14ac2: ; 14ac2 +MovePkmnWOMail_SaveGame: ; 14ac2 call SetWRAMStateForSave push de call SaveBox @@ -93,14 +94,14 @@ Function14ad5: ; 14ad5 ld a, e ld [wCurBox], a ld a, $1 - ld [wcfcd], a - callba Function14056 - callba Function1050d9 + ld [wSaveFileExists], a + callba StageRTCTimeForSave + callba BackupMysteryGift call ValidateSave call SaveOptions call SavePlayerData call SavePokemonData - call Function14e13 + call SaveChecksum call ValidateBackupSave call SaveBackupOptions call SaveBackupPlayerData @@ -108,31 +109,31 @@ Function14ad5: ; 14ad5 call SaveBackupChecksum callba BackupPartyMonMail callba BackupMobileEventIndex - callba Function1406a + callba SaveRTC call LoadBox call ClearWRAMStateAfterSave ld de, SFX_SAVE call PlaySFX - ld c, $18 + ld c, 24 call DelayFrames ret ; 14b34 -Function14b34: ; 14b34 +StartMovePkmnWOMail_SaveGame: ; 14b34 ld hl, UnknownText_0x152a6 call MenuTextBox call YesNoBox call ExitMenu - jr c, .asm_14b52 - call CheckForExistingSaveFile - jr c, .asm_14b52 + jr c, .refused + call AskOverwriteSaveFile + jr c, .refused call SetWRAMStateForSave call _SavingDontTurnOffThePower call ClearWRAMStateAfterSave and a ret -.asm_14b52 +.refused scf ret ; 14b54 @@ -177,8 +178,8 @@ SaveGameData: ; 14b85 ret ; 14b89 -CheckForExistingSaveFile: ; 14b89 - ld a, [wcfcd] +AskOverwriteSaveFile: ; 14b89 + ld a, [wSaveFileExists] and a jr z, .erase call Function14bcb @@ -269,15 +270,15 @@ SavedTheGame: ; 14be6 SaveGameData_: ; 14c10 ld a, 1 - ld [wcfcd], a - callba Function14056 - callba Function1050d9 + ld [wSaveFileExists], a + callba StageRTCTimeForSave + callba BackupMysteryGift call ValidateSave call SaveOptions call SavePlayerData call SavePokemonData call SaveBox - call Function14e13 + call SaveChecksum call ValidateBackupSave call SaveBackupOptions call SaveBackupPlayerData @@ -286,14 +287,14 @@ SaveGameData_: ; 14c10 call UpdateStackTop callba BackupPartyMonMail callba BackupMobileEventIndex - callba Function1406a - ld a, BANK(s1_be45) + callba SaveRTC + ld a, BANK(sSaveType) call GetSRAMBank - ld a, [s1_be45] + ld a, [sSaveType] cp $4 jr nz, .ok xor a - ld [s1_be45], a + ld [sSaveType], a .ok call CloseSRAM ret @@ -371,7 +372,7 @@ ErasePreviousSave: ; 14cbb call EraseHallOfFame call EraseLinkBattleStats call EraseMysteryGift - call Function14d68 + call SaveData call Function14d5c ld a, BANK(sStackTop) call GetSRAMBank @@ -395,10 +396,10 @@ EraseLinkBattleStats: ; 14ce2 ; 14cf4 EraseMysteryGift: ; 14cf4 - ld a, BANK(s0_abe4) + ld a, BANK(sBackupMysteryGiftItem) call GetSRAMBank - ld hl, s0_abe4 - ld bc, s0_abe4End - s0_abe4 + ld hl, sBackupMysteryGiftItem + ld bc, sBackupMysteryGiftItemEnd - sBackupMysteryGiftItem xor a call ByteFill jp CloseSRAM @@ -437,15 +438,15 @@ Unknown_14d2c: ; 14d2c ; 14d5c Function14d5c: ; 14d5c - ld a, BANK(s1_be45) + ld a, BANK(sSaveType) call GetSRAMBank xor a - ld [s1_be45], a + ld [sSaveType], a jp CloseSRAM ; 14d68 -Function14d68: ; 14d68 - call Function1509a +SaveData: ; 14d68 + call _SaveData ret ; 14d6c @@ -547,7 +548,7 @@ SaveBox: ; 14e0c ret ; 14e13 -Function14e13: ; 14e13 +SaveChecksum: ; 14e13 ld hl, sGameData ld bc, sGameDataEnd - sGameData ld a, BANK(sGameData) @@ -632,7 +633,7 @@ TryLoadSaveFile: ; 14ea5 (5:4ea5) call LoadBox callba RestorePartyMonMail callba RestoreMobileEventIndex - callba Function1050ea + callba RestoreMysteryGift call ValidateBackupSave call SaveBackupOptions call SaveBackupPlayerData @@ -649,12 +650,12 @@ TryLoadSaveFile: ; 14ea5 (5:4ea5) call LoadBox callba RestorePartyMonMail callba RestoreMobileEventIndex - callba Function1050ea + callba RestoreMysteryGift call ValidateSave call SaveOptions call SavePlayerData call SavePokemonData - call Function14e13 + call SaveChecksum and a ret @@ -671,11 +672,11 @@ TryLoadSaveFile: ; 14ea5 (5:4ea5) ret -Function14f1c: ; 14f1c +TryLoadSaveData: ; 14f1c xor a - ld [wcfcd], a - call Function14f84 - ld a, [wcfcd] + ld [wSaveFileExists], a + call CheckPrimarySaveFile + ld a, [wSaveFileExists] and a jr z, .backup @@ -693,8 +694,8 @@ Function14f1c: ; 14f1c ret .backup - call Function14faf - ld a, [wcfcd] + call CheckBackupSaveFile + ld a, [wSaveFileExists] and a jr z, .corrupt @@ -716,7 +717,7 @@ Function14f1c: ; 14f1c ld de, Options ld bc, OptionsEnd - Options call CopyBytes - call Function67e + call PanicResetClock ret ; 14f7c @@ -731,7 +732,7 @@ DefaultOptions: ; 14f7c db $00 ; 14f84 -Function14f84: ; 14f84 +CheckPrimarySaveFile: ; 14f84 ld a, BANK(s1_a008) call GetSRAMBank ld a, [s1_a008] @@ -746,14 +747,14 @@ Function14f84: ; 14f84 call CopyBytes call CloseSRAM ld a, $1 - ld [wcfcd], a + ld [wSaveFileExists], a .nope call CloseSRAM ret ; 14faf -Function14faf: ; 14faf +CheckBackupSaveFile: ; 14faf ld a, BANK(s0_b208) call GetSRAMBank ld a, [s0_b208] @@ -767,7 +768,7 @@ Function14faf: ; 14faf ld bc, OptionsEnd - Options call CopyBytes ld a, $2 - ld [wcfcd], a + ld [wSaveFileExists], a .nope call CloseSRAM @@ -787,14 +788,14 @@ LoadPlayerData: ; 14fd7 (5:4fd7) ld bc, wMapDataEnd - wMapData call CopyBytes call CloseSRAM - ld a, BANK(s1_be45) + ld a, BANK(sSaveType) call GetSRAMBank - ld a, [s1_be45] + ld a, [sSaveType] cp $4 - jr nz, .asm_15008 + jr nz, .not_4 ld a, $3 - ld [s1_be45], a -.asm_15008 + ld [sSaveType], a +.not_4 call CloseSRAM ret @@ -822,10 +823,10 @@ VerifyChecksum: ; 15028 (5:5028) call Checksum ld a, [sChecksum + 0] cp e - jr nz, .asm_15040 + jr nz, .fail ld a, [sChecksum + 1] cp d -.asm_15040 +.fail push af call CloseSRAM pop af @@ -863,17 +864,17 @@ VerifyBackupChecksum: ; 1507c (5:507c) call Checksum ld a, [sBackupChecksum + 0] cp e - jr nz, .asm_15094 + jr nz, .fail ld a, [sBackupChecksum + 1] cp d -.asm_15094 +.fail push af call CloseSRAM pop af ret -Function1509a: ; 1509a +_SaveData: ; 1509a ld a, BANK(sCrystalData) call GetSRAMBank ld hl, wCrystalData -- cgit v1.2.3 From 6d47be8d8c02317a963c6ff5266a50a8674d285d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 18 Nov 2015 10:42:42 -0500 Subject: Fruit tree constants, more mail engine --- engine/mail.asm | 433 ++++++++++++++++++++++++++++++++++++++++++++++++--- engine/scripting.asm | 2 +- 2 files changed, 416 insertions(+), 19 deletions(-) (limited to 'engine') diff --git a/engine/mail.asm b/engine/mail.asm index e3b7a5fab..5748536dc 100755 --- a/engine/mail.asm +++ b/engine/mail.asm @@ -39,7 +39,8 @@ SendMailToPC: ; 4456e ret ; 445c0 -Function445c0: ; 445c0 (11:45c0) +DeleteMailFromPC: ; 445c0 (11:45c0) +; Shift all mail messages in the mailbox ld a, BANK(sMailboxCount) call GetSRAMBank ld a, b @@ -53,7 +54,7 @@ Function445c0: ; 445c0 (11:45c0) pop bc .loop ld a, b - cp $9 + cp MAILBOX_CAPACITY - 1 jr z, .done push bc ld bc, MAIL_STRUCT_LENGTH @@ -82,7 +83,7 @@ ReadMailMessage: ; 445f4 callba ReadAnyMail ret -Function44607: ; 44607 +MoveMailFromPCToParty: ; 44607 ld a, BANK(sMailboxCount) call GetSRAMBank push bc @@ -112,7 +113,7 @@ Function44607: ; 44607 ld [hl], d call CloseSRAM pop bc - jp Function445c0 + jp DeleteMailFromPC ; 44648 (11:4648) GetMailboxCount: ; 44648 @@ -123,12 +124,13 @@ GetMailboxCount: ; 44648 jp CloseSRAM ; 44654 -Function44654:: ; 44654 +CheckPokeItem:: ; 44654 push bc push de callba SelectMonFromParty ld a, $2 - jr c, .asm_446c6 + jr c, .pop_return + ld a, [CurPartyMon] ld hl, PartyMon1Item ld bc, PARTYMON_STRUCT_LENGTH @@ -136,7 +138,8 @@ Function44654:: ; 44654 ld d, [hl] callba ItemIsMail ld a, $3 - jr nc, .asm_446c6 + jr nc, .pop_return + ld a, BANK(sPartyMail) call GetSRAMBank ld a, [CurPartyMon] @@ -148,43 +151,437 @@ Function44654:: ; 44654 pop hl pop bc - ld a, $20 +; Compare the mail message, byte for byte, with the expected message. + ld a, MAIL_MSG_LENGTH ld [wd265], a -.asm_44691 +.loop ld a, [de] ld c, a ld a, b call GetFarByte cp "@" - jr z, .asm_446ab + jr z, .done cp c ld a, $0 - jr nz, .asm_446c1 + jr nz, .close_sram_return inc hl inc de ld a, [wd265] dec a ld [wd265], a - jr nz, .asm_44691 + jr nz, .loop -.asm_446ab +.done callba CheckCurPartyMonFainted ld a, $4 - jr c, .asm_446c1 + jr c, .close_sram_return xor a ld [wPokemonWithdrawDepositParameter], a callba Functione039 ld a, $1 -.asm_446c1 +.close_sram_return call CloseSRAM - jr .asm_446c8 + jr .return -.asm_446c6 +.pop_return pop de pop bc -.asm_446c8 +.return ld [ScriptVar], a ret ; 446cc + + +GivePokeItem:: ; 446cc + ld a, [PartyCount] + dec a + push af + push bc + ld hl, PartyMon1Item + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + pop bc + ld [hl], b + pop af + push bc + push af + ld hl, sPartyMail + ld bc, $2f + call AddNTimes + ld d, h + ld e, l + ld hl, wd002 + ld bc, $21 + ld a, BANK(sPartyMail) + call GetSRAMBank + call CopyBytes + pop af + push af + ld hl, PartyMonOT + ld bc, NAME_LENGTH + call AddNTimes + ld bc, $a + call CopyBytes + pop af + ld hl, PartyMon1ID + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + inc de + ld a, [CurPartySpecies] + ld [de], a + inc de + pop bc + ld a, b + ld [de], a + jp CloseSRAM +; 44725 + + +BackupPartyMonMail: ; 44725 + ld a, BANK(sPartyMail) + call GetSRAMBank + ld hl, sPartyMail + ld de, sPartyMailBackup + ld bc, 6 * MAIL_STRUCT_LENGTH + call CopyBytes + ld hl, sMailboxCount + ld de, sMailboxCountBackup + ld bc, 1 + 10 * MAIL_STRUCT_LENGTH + call CopyBytes + jp CloseSRAM +; 44745 + +RestorePartyMonMail: ; 44745 (11:4745) + ld a, BANK(sPartyMail) + call GetSRAMBank + ld hl, sPartyMailBackup + ld de, sPartyMail + ld bc, 6 * MAIL_STRUCT_LENGTH + call CopyBytes + ld hl, sMailboxCountBackup + ld de, sMailboxCount + ld bc, 1 + 10 * MAIL_STRUCT_LENGTH + call CopyBytes + jp CloseSRAM + +DeletePartyMonMail: ; 44765 (11:4765) + ld a, BANK(sPartyMail) + call GetSRAMBank + xor a + ld hl, sPartyMail + ld bc, 6 * MAIL_STRUCT_LENGTH + call ByteFill + xor a + ld hl, sMailboxCount + ld bc, 1 + 10 * MAIL_STRUCT_LENGTH + call ByteFill + jp CloseSRAM +; 44781 (11:4781) + + +Function44781: ; 44781 + ld a, [PartyCount] + and a + jr z, .asm_4479e + ld e, a + ld hl, PartyMon1Item +.asm_4478b + ld d, [hl] + push hl + push de + callba ItemIsMail + pop de + pop hl + ret c + ld bc, PARTYMON_STRUCT_LENGTH + add hl, bc + dec e + jr nz, .asm_4478b + +.asm_4479e + and a + ret +; 447a0 + +_KrisMailBoxMenu: ; 0x447a0 + call InitMail + jr z, .nomail + call LoadStandardMenuDataHeader + call MailboxPC + jp WriteBackup + +.nomail + ld hl, .EmptyMailboxText + jp MenuTextBoxBackup +; 0x447b4 + +.EmptyMailboxText ; 0x447b4 + text_jump _EmptyMailboxText + db "@" + +InitMail: ; 0x447b9 +; initialize wd0f2 and beyond with incrementing values, one per mail +; set z if no mail + ld a, BANK(sMailboxCount) + call GetSRAMBank + ld a, [sMailboxCount] + call CloseSRAM + ld hl, wd0f2 + ld [hli], a + and a + + jr z, .done ; if no mail, we're done + + ; load values in memory with incrementing values starting at wd0f2 + ld b, a + ld a, $1 +.loop + ld [hli], a + inc a + dec b + jr nz, .loop +.done + ld [hl], $ff ; terminate + + ld a, [wd0f2] + and a + ret +; 0x447da + +Function447da: ; 0x447da + dec a + ld hl, sMailbox1Author + ld bc, MAIL_STRUCT_LENGTH + call AddNTimes + ld a, BANK(sMailboxCount) + call GetSRAMBank + ld de, StringBuffer2 + push de + ld bc, NAME_LENGTH - 1 + call CopyBytes + ld a, "@" + ld [de], a + call CloseSRAM + pop de + ret +; 0x447fb + +Function447fb: ; 0x447fb + push de + ld a, [MenuSelection] + call Function447da + pop hl + jp PlaceString +; 0x44806 + +MailboxPC: ; 0x44806 + xor a + ld [OBPals + 8 * 6], a + ld a, $1 + ld [wd0f1], a +.loop + call InitMail + ld hl, MenuData4494c + call CopyMenuDataHeader + xor a + ld [hBGMapMode], a + call InitScrollingMenu + call UpdateSprites + ld a, [wd0f1] + ld [wMenuCursorBuffer], a + ld a, [OBPals + 8 * 6] + ld [wd0e4], a + call HandleScrollingMenu + ld a, [wd0e4] + ld [OBPals + 8 * 6], a + ld a, [MenuSelection2] + ld [wd0f1], a + ld a, [wcf73] + cp $2 + jr z, .exit + call Function4484a + jr .loop + +.exit + xor a + ret +; 0x4484a + +Function4484a: ; 0x4484a + ld hl, MenuData44964 + call LoadMenuDataHeader + call InterpretMenu2 + call ExitMenu + jr c, .exit + ld a, [MenuSelection2] + dec a + ld hl, .JumpTable + rst JumpTable + +.exit + ret +; 0x44861 + +.JumpTable + dw .ReadMail + dw .PutInPack + dw .AttachMail + dw .Cancel + +.ReadMail ; 0x44869 + call FadeToMenu + ld a, [MenuSelection] + dec a + ld b, a + call ReadMailMessage + jp ReturnToCallingMenu +; 0x44877 + +.PutInPack ; 0x44877 + ld hl, .MessageLostText + call MenuTextBox + call YesNoBox + call ExitMenu + ret c + ld a, [MenuSelection] + dec a + call .GetMailType + ld a, $1 + ld [wItemQuantityChangeBuffer], a + ld hl, NumItems + call ReceiveItem + jr c, .put_in_bag + ld hl, .PackFullText + jp MenuTextBoxBackup + +.put_in_bag + ld a, [MenuSelection] + dec a + ld b, a + call DeleteMailFromPC + ld hl, .PutAwayText + jp MenuTextBoxBackup +; 0x448ac + +.PutAwayText ; 0x448ac + text_jump ClearedMailPutAwayText + db "@" + +.PackFullText ; 0x448b1 + text_jump MailPackFullText + db "@" + +.MessageLostText ; 0x448b6 + text_jump MailMessageLostText + db "@" + +.GetMailType: ; 0x448bb + push af + ld a, BANK(sMailboxCount) + call GetSRAMBank + pop af + ld hl, sMailbox1MailType + ld bc, MAIL_STRUCT_LENGTH + call AddNTimes + ld a, [hl] + ld [CurItem], a + jp CloseSRAM +; 0x448d2 + +.AttachMail ; 0x448d2 + call FadeToMenu + xor a + ld [PartyMenuActionText], a + call ClearBGPalettes +.try_again + callba Function5004f + callba Function50405 + callba Function503e0 + callba WritePartyMenuTilemap + callba PrintPartyMenuText + call WaitBGMap + call SetPalettes + call DelayFrame + callba PartyMenuSelect + jr c, .exit2 + ld a, [CurPartySpecies] + cp EGG + jr z, .egg + ld a, MON_ITEM + call GetPartyParamLocation + ld a, [hl] + and a + jr z, .attach_mail + ld hl, .HoldingMailText + call PrintText + jr .try_again + +.egg + ld hl, .EggText + call PrintText + jr .try_again + +.attach_mail + ld a, [MenuSelection] + dec a + ld b, a + call MoveMailFromPCToParty + ld hl, .MailMovedText + call PrintText + +.exit2 + jp ReturnToCallingMenu +; 0x4493c + +.HoldingMailText ; 0x4493c + text_jump MailAlreadyHoldingItemText + db "@" + +.EggText ; 0x44941 + text_jump MailEggText + db "@" + +.MailMovedText ; 0x44946 + text_jump MailMovedFromBoxText + db "@" + +.Cancel + ret + +MenuData4494c: ; 0x4494c + db %01000000 ; flags + db 1, 8 ; start coords + db $a, $12 ; end coords + dw .MenuData2 + db 1 ; default option + +.MenuData2 + db %00010000 ; flags + db 4, 0 ; rows/columns? + db 1 ; horizontal spacing? + dbw 0,wd0f2 ; text pointer + dba Function447fb + dbw 0,0 + dbw 0,0 + +MenuData44964: ; 0x44964 + db %01000000 ; flags + db 0, 0 ; start coords + db 9, $d ; end coords + dw .MenuData2 + db 1 ; default option + +.MenuData2 + db %10000000 ; flags + db 4 ; items + db "READ MAIL@" + db "PUT IN PACK@" + db "ATTACH MAIL@" + db "CANCEL@" diff --git a/engine/scripting.asm b/engine/scripting.asm index 4aa1de224..f576fa3d4 100644 --- a/engine/scripting.asm +++ b/engine/scripting.asm @@ -2341,7 +2341,7 @@ Script_checkpokeitem: ; 977b7 ld d, a ld a, [ScriptBank] ld b, a - callba Function44654 + callba CheckPokeItem ret ; 977ca -- cgit v1.2.3 From 3f4044cd4628c156e975971ce0655d3d51917b87 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 18 Nov 2015 13:01:55 -0500 Subject: engine/compose_mail.asm; ldpixel --- engine/compose_mail.asm | 498 ++++++++++++++++++++++++++++++++++++++++++++++++ engine/link.asm | 8 +- engine/mail.asm | 34 ++-- engine/namingscreen.asm | 8 +- engine/pokegear.asm | 4 +- engine/slot_machine.asm | 6 +- engine/sprites.asm | 2 +- engine/startmenu.asm | 2 +- 8 files changed, 531 insertions(+), 31 deletions(-) create mode 100755 engine/compose_mail.asm (limited to 'engine') diff --git a/engine/compose_mail.asm b/engine/compose_mail.asm new file mode 100755 index 000000000..35990431e --- /dev/null +++ b/engine/compose_mail.asm @@ -0,0 +1,498 @@ +ComposeMailMessage: ; 11e75 (mail?) + ld hl, wc6d0 + ld [hl], e + inc hl + ld [hl], d + ld a, [hMapAnims] + push af + xor a + ld [hMapAnims], a + ld a, [hInMenu] + push af + ld a, $1 + ld [hInMenu], a + call .InitBlankMail + call DelayFrame + +.loop + call .DoMailEntry + jr nc, .loop + + pop af + ld [hInMenu], a + pop af + ld [hMapAnims], a + ret + +.InitBlankMail: ; 11e9a (4:5e9a) + call ClearBGPalettes + call DisableLCD + call Function11c51 + ld de, VTiles0 tile $00 + ld hl, .MailIcon + ld bc, 8 tiles + ld a, BANK(.MailIcon) + call FarCopyBytes + xor a + ld hl, wc300 + ld [hli], a + ld [hl], a + + ; init mail icon + depixel 3, 2 + ld a, SPRITE_ANIM_INDEX_00 + call _InitSpriteAnimStruct + + ld hl, $2 + add hl, bc + ld [hl], $0 + call .InitCharset + ld a, $e3 + ld [rLCDC], a + call .initwc6d3 + ld b, SCGB_08 + call GetSGBLayout + call WaitBGMap + call WaitTop + ld a, %11100100 + call DmgToCgbBGPals + ld a, %11100100 + call Functioncf8 + call Function11be0 + ld hl, wc6d0 + ld e, [hl] + inc hl + ld d, [hl] + ld hl, $10 + add hl, de + ld [hl], $4e + ret +; 11ef4 (4:5ef4) + +.MailIcon: ; 11ef4 +INCBIN "gfx/icon/mail2.2bpp" +; 11f74 + +.initwc6d3: ; 11f74 (4:5f74) + ld a, $21 + ld [wc6d3], a + ret +; 11f7a (4:5f7a) + +.Dummy: ; dummied out + db "メールを かいてね@" +; 11f84 + +.InitCharset: ; 11f84 (4:5f84) + call WaitTop + hlcoord 0, 0 + ld bc, 6 * SCREEN_WIDTH + ld a, $60 ; border + call ByteFill + hlcoord 0, 6 + ld bc, 12 * SCREEN_WIDTH + ld a, " " + call ByteFill + hlcoord 1, 1 + lb bc, 4, SCREEN_WIDTH - 2 + call ClearBox + ld de, MailEntry_Uppercase + +.PlaceMailCharset: ; 11fa9 (4:5fa9) + hlcoord 1, 7 + ld b, 6 +.next + ld c, SCREEN_WIDTH - 1 +.loop_ + ld a, [de] + ld [hli], a + inc de + dec c + jr nz, .loop_ + push de + ld de, SCREEN_WIDTH + 1 + add hl, de + pop de + dec b + jr nz, .next + ret + +.DoMailEntry: ; 11fc0 (4:5fc0) + call JoyTextDelay + ld a, [wJumptableIndex] + bit 7, a + jr nz, .exit_mail + call .DoJumptable + callba Function8cf62 + call .Update + call DelayFrame + and a + ret +.exit_mail + callab Function8cf53 + call ClearSprites + xor a + ld [hSCX], a + ld [hSCY], a + scf + ret + +.Update: ; 11feb (4:5feb) + xor a + ld [hBGMapMode], a + hlcoord 1, 1 + lb bc, 4, 18 + call ClearBox + ld hl, wc6d0 + ld e, [hl] + inc hl + ld d, [hl] + hlcoord 2, 2 + call PlaceString + ld a, $1 + ld [hBGMapMode], a + ret + +.DoJumptable: ; 12008 (4:6008) + ld a, [wJumptableIndex] + ld e, a + ld d, 0 + ld hl, .Jumptable +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +.Jumptable: ; 12017 (4:6017) + dw .init_blinking_cursor + dw .process_joypad + + +.init_blinking_cursor: ; 1201b (4:601b) + depixel 9, 2 + ld a, SPRITE_ANIM_INDEX_09 + call _InitSpriteAnimStruct + ld a, c + ld [wc6d5], a + ld a, b + ld [wc6d6], a + ld hl, $1 + add hl, bc + ld a, [hl] + ld hl, $e + add hl, bc + ld [hl], a + ld hl, wJumptableIndex + inc [hl] + ret + +.process_joypad: ; 1203a (4:603a) + ld hl, hJoyPressed ; $ffa7 + ld a, [hl] + and A_BUTTON + jr nz, .a + ld a, [hl] + and B_BUTTON + jr nz, .b + ld a, [hl] + and START + jr nz, .start + ld a, [hl] + and SELECT + jr nz, .select + ret + +.a + call Function12185 + cp $1 + jr z, .select + cp $2 + jr z, .b + cp $3 + jr z, .finished + call Function11c11 + call Function121ac + jr c, .start + ld hl, wc6d2 + ld a, [hl] + cp $10 + ret nz + inc [hl] + call Function11bd0 + ld [hl], $f2 + dec hl + ld [hl], $4e + ret + +.start + ld hl, wc6d5 + ld c, [hl] + inc hl + ld b, [hl] + ld hl, $c + add hl, bc + ld [hl], $9 + ld hl, $d + add hl, bc + ld [hl], $5 + ret + +.b + call Function11bbc + ld hl, wc6d2 + ld a, [hl] + cp $10 + ret nz + dec [hl] + call Function11bd0 + ld [hl], $f2 + inc hl + ld [hl], $4e + ret + +.finished + call Function11bf7 + ld hl, wJumptableIndex + set 7, [hl] + ret + +.select + ld hl, wcf64 + ld a, [hl] + xor $1 + ld [hl], a + jr nz, .switch_to_lowercase + ld de, MailEntry_Uppercase + call .PlaceMailCharset + ret +.switch_to_lowercase + ld de, MailEntry_Lowercase + call .PlaceMailCharset + ret + +Function120c1: ; 120c1 (4:60c1) + call Function1210c + ld hl, SpriteAnim1Sprite0d - SpriteAnim1 + add hl, bc + ld a, [hl] + ld e, a + swap e + ld hl, SpriteAnim1YOffset - SpriteAnim1 + add hl, bc + ld [hl], e + cp $5 + ld de, Unknown_120f8 + ld a, $0 + jr nz, .asm_120df + ld de, Unknown_12102 + ld a, $1 +.asm_120df + ld hl, SpriteAnim1Sprite0e - SpriteAnim1 + add hl, bc + add [hl] + ld hl, SpriteAnim1Sprite01 - SpriteAnim1 + add hl, bc + ld [hl], a + ld hl, SpriteAnim1Sprite0c - SpriteAnim1 + add hl, bc + ld l, [hl] + ld h, SpriteAnim1Index - SpriteAnim1 + add hl, de + ld a, [hl] + ld hl, SpriteAnim1XOffset - SpriteAnim1 + add hl, bc + ld [hl], a + ret +; 120f8 (4:60f8) + +Unknown_120f8: ; 120f8 + db $00, $10, $20, $30, $40, $50, $60, $70, $80, $90 +Unknown_12102: ; 12102 + db $00, $00, $00, $30, $30, $30, $60, $60, $60, $60 +; 1210c + +Function1210c: ; 1210c (4:610c) + ld hl, hJoyLast + ld a, [hl] + and D_UP + jr nz, .up + ld a, [hl] + and D_DOWN + jr nz, .down + ld a, [hl] + and D_LEFT + jr nz, .left + ld a, [hl] + and D_RIGHT + jr nz, .right + ret +.right + call Function1218b + and a + jr nz, .asm_12138 + ld hl, $c + add hl, bc + ld a, [hl] + cp $9 + jr nc, .asm_12135 + inc [hl] + ret +.asm_12135 + ld [hl], $0 + ret +.asm_12138 + cp $3 + jr nz, .asm_1213d + xor a +.asm_1213d + ld e, a + add a + add e + ld hl, $c + add hl, bc + ld [hl], a + ret +.left + call Function1218b + and a + jr nz, .asm_12159 + ld hl, $c + add hl, bc + ld a, [hl] + and a + jr z, .asm_12156 + dec [hl] + ret +.asm_12156 + ld [hl], $9 + ret +.asm_12159 + cp $1 + jr nz, .asm_1215f + ld a, $4 +.asm_1215f +rept 2 + dec a +endr + ld e, a + add a + add e + ld hl, $c + add hl, bc + ld [hl], a + ret +.down + ld hl, $d + add hl, bc + ld a, [hl] + cp $5 + jr nc, .asm_12175 + inc [hl] + ret +.asm_12175 + ld [hl], $0 + ret +.up + ld hl, $d + add hl, bc + ld a, [hl] + and a + jr z, .asm_12182 + dec [hl] + ret +.asm_12182 + ld [hl], $5 + ret + +Function12185: ; 12185 (4:6185) + ld hl, wc6d5 + ld c, [hl] + inc hl + ld b, [hl] + +Function1218b: ; 1218b (4:618b) + ld hl, $d + add hl, bc + ld a, [hl] + cp $5 + jr nz, .asm_121aa + ld hl, $c + add hl, bc + ld a, [hl] + cp $3 + jr c, .asm_121a4 + cp $6 + jr c, .asm_121a7 + ld a, $3 + ret +.asm_121a4 + ld a, $1 + ret +.asm_121a7 + ld a, $2 + ret +.asm_121aa + xor a + ret + +Function121ac: ; 121ac (4:61ac) + ld a, [wc6d7] + jp Function11b17 +; 121b2 (4:61b2) + +Function121b2: ; unreferenced + ld a, [wc6d2] + and a + ret z + cp $11 + jr nz, .asm_121c3 + push hl + ld hl, wc6d2 +rept 2 + dec [hl] +endr + jr .asm_121c8 + +.asm_121c3 + push hl + ld hl, wc6d2 + dec [hl] + +.asm_121c8 + call Function11bd0 + ld c, [hl] + pop hl +.asm_121cd + ld a, [hli] + cp $ff + jp z, Function11b27 + cp c + jr z, .asm_121d9 + inc hl + jr .asm_121cd + +.asm_121d9 + ld a, [hl] + jp Function11b23 +; 121dd + +MailEntry_Uppercase: ; 122dd + db "A B C D E F G H I J" + db "K L M N O P Q R S T" + db "U V W X Y Z , ? !" + db "1 2 3 4 5 6 7 8 9 0" + db " é ♂ ♀ ¥ … ×" + db "lower DEL END " +; 1224f + +MailEntry_Lowercase: ; 1224f + db "a b c d e f g h i j" + db "k l m n o p q r s t" + db "u v w x y z . - /" + db "'d 'l 'm 'r 's 't 'v & ( )" + db "<``> <''> [ ] ' : ; " + db "UPPER DEL END " +; 122c1 diff --git a/engine/link.asm b/engine/link.asm index 28b420543..afc4f2d2e 100755 --- a/engine/link.asm +++ b/engine/link.asm @@ -3080,7 +3080,7 @@ Function29611: ; 29611 ; 2961b Function2961b: ; 2961b - lb de, $54, $58 + depixel 10, 11, 4, 0 ld a, $e call _InitSpriteAnimStruct call Function29114 @@ -3090,7 +3090,7 @@ Function2961b: ; 2961b ; 2962c Function2962c: ; 2962c - lb de, $54, $58 + depixel 10, 11, 4, 0 ld a, $e call _InitSpriteAnimStruct ld hl, $b @@ -3106,7 +3106,7 @@ Function2962c: ; 2962c ; 29649 Function29649: ; 29649 - lb de, $54, $58 + depixel 10, 11, 4, 0 ld a, $f call _InitSpriteAnimStruct call Function29114 @@ -3120,7 +3120,7 @@ Function29649: ; 29649 Function29660: ; 29660 ld a, $e4 call Functioncf8 - lb de, $28, $58 + depixel 5, 11 ld a, $10 call _InitSpriteAnimStruct call Function29114 diff --git a/engine/mail.asm b/engine/mail.asm index 5748536dc..c0bc591b0 100755 --- a/engine/mail.asm +++ b/engine/mail.asm @@ -286,13 +286,13 @@ DeletePartyMonMail: ; 44765 (11:4765) ; 44781 (11:4781) -Function44781: ; 44781 +IsAnyMonHoldingMail: ; 44781 ld a, [PartyCount] and a - jr z, .asm_4479e + jr z, .no_mons ld e, a ld hl, PartyMon1Item -.asm_4478b +.loop ld d, [hl] push hl push de @@ -303,9 +303,9 @@ Function44781: ; 44781 ld bc, PARTYMON_STRUCT_LENGTH add hl, bc dec e - jr nz, .asm_4478b + jr nz, .loop -.asm_4479e +.no_mons and a ret ; 447a0 @@ -327,30 +327,30 @@ _KrisMailBoxMenu: ; 0x447a0 db "@" InitMail: ; 0x447b9 -; initialize wd0f2 and beyond with incrementing values, one per mail +; initialize wMailboxCount and beyond with incrementing values, one per mail ; set z if no mail ld a, BANK(sMailboxCount) call GetSRAMBank ld a, [sMailboxCount] call CloseSRAM - ld hl, wd0f2 + ld hl, wMailboxCount ld [hli], a and a jr z, .done ; if no mail, we're done - ; load values in memory with incrementing values starting at wd0f2 + ; load values in memory with incrementing values starting at wMailboxCount ld b, a - ld a, $1 + ld a, 1 .loop ld [hli], a inc a dec b jr nz, .loop .done - ld [hl], $ff ; terminate + ld [hl], -1 ; terminate - ld a, [wd0f2] + ld a, [wMailboxCount] and a ret ; 0x447da @@ -385,7 +385,7 @@ MailboxPC: ; 0x44806 xor a ld [OBPals + 8 * 6], a ld a, $1 - ld [wd0f1], a + ld [wCurMessageIndex], a .loop call InitMail ld hl, MenuData4494c @@ -394,7 +394,8 @@ MailboxPC: ; 0x44806 ld [hBGMapMode], a call InitScrollingMenu call UpdateSprites - ld a, [wd0f1] + + ld a, [wCurMessageIndex] ld [wMenuCursorBuffer], a ld a, [OBPals + 8 * 6] ld [wd0e4], a @@ -402,7 +403,8 @@ MailboxPC: ; 0x44806 ld a, [wd0e4] ld [OBPals + 8 * 6], a ld a, [MenuSelection2] - ld [wd0f1], a + ld [wCurMessageIndex], a + ld a, [wcf73] cp $2 jr z, .exit @@ -558,7 +560,7 @@ Function4484a: ; 0x4484a MenuData4494c: ; 0x4494c db %01000000 ; flags db 1, 8 ; start coords - db $a, $12 ; end coords + db 10, 18 ; end coords dw .MenuData2 db 1 ; default option @@ -566,7 +568,7 @@ MenuData4494c: ; 0x4494c db %00010000 ; flags db 4, 0 ; rows/columns? db 1 ; horizontal spacing? - dbw 0,wd0f2 ; text pointer + dbw 0, wMailboxCount ; text pointer dba Function447fb dbw 0,0 dbw 0,0 diff --git a/engine/namingscreen.asm b/engine/namingscreen.asm index 3b381a016..c62dc1a0f 100755 --- a/engine/namingscreen.asm +++ b/engine/namingscreen.asm @@ -173,7 +173,7 @@ Function117f5: ; 117f5 (4:57f5) ld hl, wc300 ld [hli], a ld [hl], a - lb de, $24, $20 + depixel 4, 4, 4, 0 ld a, SPRITE_ANIM_INDEX_0A call _InitSpriteAnimStruct ld hl, $1 @@ -230,7 +230,7 @@ Function11847: ; 11847 (4:5847) ld b, SPRITE_ANIM_INDEX_1E .asm_11873 ld a, b - lb de, $24, $20 + depixel 4, 4, 4, 0 call _InitSpriteAnimStruct ret @@ -400,10 +400,10 @@ Jumptable_11977: ; 11977 (4:5977) Function1197b: ; 1197b (4:597b) - lb de, $50, $18 + depixel 10, 3 call Function1189c jr nz, .asm_11985 - ld d, $40 + ld d, 8 * 8 .asm_11985 ld a, SPRITE_ANIM_INDEX_02 call _InitSpriteAnimStruct diff --git a/engine/pokegear.asm b/engine/pokegear.asm index 02684aaab..424669b20 100755 --- a/engine/pokegear.asm +++ b/engine/pokegear.asm @@ -149,7 +149,7 @@ INCBIN "gfx/misc/fast_ship.2bpp" ; 90d32 Function90d32: ; 90d32 (24:4d32) - lb de, $24, $10 + depixel 4, 2, 4, 0 ld a, SPRITE_ANIM_INDEX_0D call _InitSpriteAnimStruct ld hl, $3 @@ -762,7 +762,7 @@ Function910e8: ; 910e8 Function910f9: ; 910f9 (24:50f9) call Function90da8 - lb de, $24, $54 + depixel 4, 10, 4, 4 ld a, SPRITE_ANIM_INDEX_14 call _InitSpriteAnimStruct ld hl, $3 diff --git a/engine/slot_machine.asm b/engine/slot_machine.asm index 8318942fe..6f53bb6b3 100755 --- a/engine/slot_machine.asm +++ b/engine/slot_machine.asm @@ -1037,7 +1037,7 @@ Function92d20: ; 92d20 call Function92fc0 push bc push af - lb de, $60, $68 + depixel 12, 13 ld a, SPRITE_ANIM_INDEX_06 call _InitSpriteAnimStruct ld hl, $e @@ -1096,7 +1096,7 @@ Function92d7e: ; 92d7e add hl, bc ld [hl], $0 push bc - lb de, $60, $00 + depixel 12, 0 ld a, SPRITE_ANIM_INDEX_07 call _InitSpriteAnimStruct pop bc @@ -2063,7 +2063,7 @@ Function932fc: ; 932fc (24:72fc) add hl, bc dec [hl] push bc - lb de, $60, $6c + depixel 12, 13, 0, 4 ld a, SPRITE_ANIM_INDEX_08 call _InitSpriteAnimStruct pop bc diff --git a/engine/sprites.asm b/engine/sprites.asm index e95894292..b8b4b2a47 100755 --- a/engine/sprites.asm +++ b/engine/sprites.asm @@ -615,7 +615,7 @@ endr dw .nine dw .ten dw .eleven - dw .twelve + dw .twelve ; blinking cursor dw .thirteen dw .fourteen dw .fifteen diff --git a/engine/startmenu.asm b/engine/startmenu.asm index ae6358014..94082ccad 100755 --- a/engine/startmenu.asm +++ b/engine/startmenu.asm @@ -1069,7 +1069,7 @@ StartMenuYesNo: ; 12cf5 Function12cfe: ; 12cfe (4:6cfe) ld de, wd002 - callba Function11e75 + callba ComposeMailMessage ld hl, PlayerName ld de, wd023 ld bc, NAME_LENGTH - 1 -- cgit v1.2.3 From 1ff37608b6b71f831608c1319d71eec3ac0583a9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 18 Nov 2015 13:29:30 -0500 Subject: Update mail struct labels --- engine/compose_mail.asm | 2 +- engine/startmenu.asm | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) (limited to 'engine') diff --git a/engine/compose_mail.asm b/engine/compose_mail.asm index 35990431e..f02f99326 100755 --- a/engine/compose_mail.asm +++ b/engine/compose_mail.asm @@ -1,4 +1,4 @@ -ComposeMailMessage: ; 11e75 (mail?) +_ComposeMailMessage: ; 11e75 (mail?) ld hl, wc6d0 ld [hl], e inc hl diff --git a/engine/startmenu.asm b/engine/startmenu.asm index 94082ccad..41c79478f 100755 --- a/engine/startmenu.asm +++ b/engine/startmenu.asm @@ -937,10 +937,10 @@ GivePartyItem: ; 12c4c ld [hl], a ld d, a callba ItemIsMail - jr nc, .asm_12c5f - call Function12cfe + jr nc, .done + call ComposeMailMessage -.asm_12c5f +.done ret ; 12c60 @@ -1067,15 +1067,15 @@ StartMenuYesNo: ; 12cf5 ; 12cfe -Function12cfe: ; 12cfe (4:6cfe) - ld de, wd002 - callba ComposeMailMessage +ComposeMailMessage: ; 12cfe (4:6cfe) + ld de, wTempMailMessage + callba _ComposeMailMessage ld hl, PlayerName - ld de, wd023 + ld de, wTempMailAuthor ld bc, NAME_LENGTH - 1 call CopyBytes ld hl, PlayerID - ld bc, $2 + ld bc, 2 call CopyBytes ld a, [CurPartySpecies] ld [de], a @@ -1088,7 +1088,7 @@ Function12cfe: ; 12cfe (4:6cfe) call AddNTimes ld d, h ld e, l - ld hl, wd002 + ld hl, wTempMail ld bc, MAIL_STRUCT_LENGTH ld a, BANK(sPartyMail) call GetSRAMBank -- cgit v1.2.3 From 91f749101724a17398363745d8ac95cd4feeb1c1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 18 Nov 2015 18:35:44 -0500 Subject: items/item_effects.asm; engine/evolution.asm --- engine/breeding/egg.asm | 2 +- engine/evolve.asm | 682 ++++++++++++++++++++++++++++++++++++++++++++++++ engine/link.asm | 2 +- engine/party_menu.asm | 52 ++-- engine/pokegear.asm | 5 +- engine/predef.asm | 4 +- engine/specials.asm | 2 +- engine/startmenu.asm | 97 +++---- engine/town_map.asm | 2 +- 9 files changed, 766 insertions(+), 82 deletions(-) create mode 100755 engine/evolve.asm (limited to 'engine') diff --git a/engine/breeding/egg.asm b/engine/breeding/egg.asm index f007fde6a..ea365d8b5 100755 --- a/engine/breeding/egg.asm +++ b/engine/breeding/egg.asm @@ -219,7 +219,7 @@ Function16f7a: ; 16f7a (5:6f7a) push de - callba Function4dbb8 + callba SetEggMonCaughtData callba MobileFn_10608d ld a, [CurPartyMon] ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species) diff --git a/engine/evolve.asm b/engine/evolve.asm new file mode 100755 index 000000000..940b033b1 --- /dev/null +++ b/engine/evolve.asm @@ -0,0 +1,682 @@ +EvolvePokemon: ; 421d8 + ld hl, EvolvableFlags + xor a + ld [hl], a + ld a, [CurPartyMon] + ld c, a + ld b, SET_FLAG + call EvoFlagAction + +EvolveAfterBattle: ; 421e6 + xor a + ld [wd268], a + dec a + ld [CurPartyMon], a + push hl + push bc + push de + ld hl, PartyCount + + push hl + +CheckForEvolvablePokemon: ; 421f5 + ld hl, CurPartyMon + inc [hl] + + pop hl + + inc hl + ld a, [hl] + cp $ff + jp z, Evolution_ReturnToMap + + ld [Buffer1], a + + push hl + ld a, [CurPartyMon] + ld c, a + ld hl, EvolvableFlags + ld b, CHECK_FLAG + call EvoFlagAction + ld a, c + and a + jp z, CheckForEvolvablePokemon + + ld a, [Buffer1] + dec a + ld b, 0 + ld c, a + ld hl, EvosAttacksPointers +rept 2 + add hl, bc +endr + ld a, [hli] + ld h, [hl] + ld l, a + + push hl + xor a + ld [MonType], a + predef CopyPkmnToTempMon + pop hl + +.loop + ld a, [hli] + and a + jr z, CheckForEvolvablePokemon + + ld b, a + + cp EVOLVE_TRADE + jr z, .trade + + ld a, [wLinkMode] + and a + jp nz, .dont_evolve_2 + + ld a, b + cp EVOLVE_ITEM + jp z, .item + + ld a, [wd1e9] + and a + jp nz, .dont_evolve_2 + + ld a, b + cp EVOLVE_LEVEL + jp z, .level + + cp EVOLVE_HAPPINESS + jr z, .happiness + + +; EVOLVE_STAT + ld a, [TempMonLevel] + cp [hl] + jp c, .dont_evolve_1 + + call IsMonHoldingEverstone + jp z, .dont_evolve_1 + + push hl + ld de, TempMonAttack + ld hl, TempMonDefense + ld c, 2 + call StringCmp + ld a, ATK_EQ_DEF + jr z, .got_tyrogue_evo + ld a, ATK_LT_DEF + jr c, .got_tyrogue_evo + ld a, ATK_GT_DEF +.got_tyrogue_evo + pop hl + + inc hl + cp [hl] + jp nz, .dont_evolve_2 + + inc hl + jr .proceed + + +.happiness + ld a, [TempMonHappiness] + cp 220 + jp c, .dont_evolve_2 + + call IsMonHoldingEverstone + jp z, .dont_evolve_2 + + ld a, [hli] + cp TR_ANYTIME + jr z, .proceed + cp TR_MORNDAY + jr z, .happiness_daylight + +; TR_NITE + ld a, [TimeOfDay] + cp NITE + jp nz, .dont_evolve_3 + jr .proceed + +.happiness_daylight + ld a, [TimeOfDay] + cp NITE + jp z, .dont_evolve_3 + jr .proceed + + +.trade + ld a, [wLinkMode] + and a + jp z, .dont_evolve_2 + + call IsMonHoldingEverstone + jp z, .dont_evolve_2 + + ld a, [hli] + ld b, a + inc a + jr z, .proceed + + ld a, [wLinkMode] + cp LINK_TIMECAPSULE + jp z, .dont_evolve_3 + + ld a, [TempMonItem] + cp b + jp nz, .dont_evolve_3 + + xor a + ld [TempMonItem], a + jr .proceed + + +.item + ld a, [hli] + ld b, a + ld a, [CurItem] + cp b + jp nz, .dont_evolve_3 + + ld a, [wd1e9] + and a + jp z, .dont_evolve_3 + ld a, [wLinkMode] + and a + jp nz, .dont_evolve_3 + jr .proceed + + +.level + ld a, [hli] + ld b, a + ld a, [TempMonLevel] + cp b + jp c, .dont_evolve_3 + call IsMonHoldingEverstone + jp z, .dont_evolve_3 + +.proceed + ld a, [TempMonLevel] + ld [CurPartyLevel], a + ld a, $1 + ld [wd268], a + + push hl + + ld a, [hl] + ld [Buffer2], a + ld a, [CurPartyMon] + ld hl, PartyMonNicknames + call GetNick + call CopyName1 + ld hl, Text_WhatEvolving + call PrintText + + ld c, 50 + call DelayFrames + + xor a + ld [hBGMapMode], a + hlcoord 0, 0 + lb bc, 12, 20 + call ClearBox + + ld a, $1 + ld [hBGMapMode], a + call ClearSprites + + callba EvolutionAnimation + + push af + call ClearSprites + pop af + jp c, CancelEvolution + + ld hl, Text_CongratulationsYourPokemon + call PrintText + + pop hl + + ld a, [hl] + ld [CurSpecies], a + ld [TempMonSpecies], a + ld [Buffer2], a + ld [wd265], a + call GetPokemonName + + push hl + ld hl, Text_EvolvedIntoPKMN + call PrintTextBoxText + callba MobileFn_106094 + + ld de, MUSIC_NONE + call PlayMusic + ld de, SFX_CAUGHT_MON + call PlaySFX + call WaitSFX + + ld c, 40 + call DelayFrames + + call ClearTileMap + call UpdateSpeciesNameIfNotNicknamed + call GetBaseData + + ld hl, TempMonExp + 2 + ld de, TempMonMaxHP + ld b, $1 + predef CalcPkmnStats + + ld a, [CurPartyMon] + ld hl, PartyMons + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + ld e, l + ld d, h + ld bc, MON_MAXHP + add hl, bc + ld a, [hli] + ld b, a + ld c, [hl] + ld hl, TempMonMaxHP + 1 + ld a, [hld] + sub c + ld c, a + ld a, [hl] + sbc b + ld b, a + ld hl, TempMonHP + 1 + ld a, [hl] + add c + ld [hld], a + ld a, [hl] + adc b + ld [hl], a + + ld hl, TempMonSpecies + ld bc, PARTYMON_STRUCT_LENGTH + call CopyBytes + + ld a, [CurSpecies] + ld [wd265], a + xor a + ld [MonType], a + call LearnLevelMoves + ld a, [wd265] + dec a + call SetSeenAndCaughtMon + + ld a, [wd265] + cp UNOWN + jr nz, .skip_unown + + ld hl, TempMonDVs + predef GetUnownLetter + callab UpdateUnownDex + +.skip_unown + pop de + pop hl + ld a, [TempMonSpecies] + ld [hl], a + push hl + ld l, e + ld h, d + jp CheckForEvolvablePokemon +; 423f8 + +.dont_evolve_1 + inc hl +.dont_evolve_2 + inc hl +.dont_evolve_3 + inc hl + jp .loop +; 423fe + +; dummy pop + pop hl + +Evolution_ReturnToMap: ; 423ff + pop de + pop bc + pop hl + ld a, [wLinkMode] + and a + ret nz + ld a, [wBattleMode] + and a + ret nz + ld a, [wd268] + and a + call nz, RestartMapMusic + ret +; 42414 + +UpdateSpeciesNameIfNotNicknamed: ; 42414 + ld a, [CurSpecies] + push af + ld a, [BaseDexNo] + ld [wd265], a + call GetPokemonName + pop af + ld [CurSpecies], a + ld hl, StringBuffer1 + ld de, StringBuffer2 +.loop + ld a, [de] + inc de + cp [hl] + inc hl + ret nz + cp "@" + jr nz, .loop + + ld a, [CurPartyMon] + ld bc, PKMN_NAME_LENGTH + ld hl, PartyMonNicknames + call AddNTimes + push hl + ld a, [CurSpecies] + ld [wd265], a + call GetPokemonName + ld hl, StringBuffer1 + pop de + ld bc, PKMN_NAME_LENGTH + jp CopyBytes +; 42454 + +CancelEvolution: ; 42454 + ld hl, Text_StoppedEvolving + call PrintText + call ClearTileMap + pop hl + jp CheckForEvolvablePokemon +; 42461 + +IsMonHoldingEverstone: ; 42461 + push hl + ld a, [CurPartyMon] + ld hl, PartyMon1Item + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + ld a, [hl] + cp EVERSTONE + pop hl + ret +; 42473 + +Text_CongratulationsYourPokemon: ; 0x42473 + ; Congratulations! Your @ @ + text_jump UnknownText_0x1c4b92 + db "@" +; 0x42478 + +Text_EvolvedIntoPKMN: ; 0x42478 + ; evolved into @ ! + text_jump UnknownText_0x1c4baf + db "@" +; 0x4247d + +Text_StoppedEvolving: ; 0x4247d + ; Huh? @ stopped evolving! + text_jump UnknownText_0x1c4bc5 + db "@" +; 0x42482 + +Text_WhatEvolving: ; 0x42482 + ; What? @ is evolving! + text_jump UnknownText_0x1c4be3 + db "@" +; 0x42487 + + +LearnLevelMoves: ; 42487 + ld a, [wd265] + ld [CurPartySpecies], a + dec a + ld b, 0 + ld c, a + ld hl, EvosAttacksPointers +rept 2 + add hl, bc +endr + ld a, [hli] + ld h, [hl] + ld l, a + +.skip_evos + ld a, [hli] + and a + jr nz, .skip_evos + +.find_move + ld a, [hli] + and a + jr z, .done + + ld b, a + ld a, [CurPartyLevel] + cp b + ld a, [hli] + jr nz, .find_move + + push hl + ld d, a + ld hl, PartyMon1Moves + ld a, [CurPartyMon] + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + + ld b, NUM_MOVES +.check_move + ld a, [hli] + cp d + jr z, .has_move + dec b + jr nz, .check_move + jr .learn +.has_move + + pop hl + jr .find_move + +.learn + ld a, d + ld [wd262], a + ld [wd265], a + call GetMoveName + call CopyName1 + predef LearnMove + pop hl + jr .find_move + +.done + ld a, [CurPartySpecies] + ld [wd265], a + ret +; 424e1 + + +FillMoves: ; 424e1 +; Fill in moves at de for CurPartySpecies at CurPartyLevel + + push hl + push de + push bc + ld hl, EvosAttacksPointers + ld b, 0 + ld a, [CurPartySpecies] + dec a + add a + rl b + ld c, a + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a +.GoToAttacks + ld a, [hli] + and a + jr nz, .GoToAttacks + jr .GetLevel + +.NextMove + pop de +.GetMove + inc hl +.GetLevel + ld a, [hli] + and a + jp z, .done + ld b, a + ld a, [CurPartyLevel] + cp b + jp c, .done + ld a, [Buffer1] + and a + jr z, .CheckMove + ld a, [wd002] + cp b + jr nc, .GetMove + +.CheckMove + push de + ld c, NUM_MOVES +.CheckRepeat + ld a, [de] + inc de + cp [hl] + jr z, .NextMove + dec c + jr nz, .CheckRepeat + pop de + push de + ld c, NUM_MOVES +.CheckSlot + ld a, [de] + and a + jr z, .LearnMove + inc de + dec c + jr nz, .CheckSlot + pop de + push de + push hl + ld h, d + ld l, e + call ShiftMoves + ld a, [Buffer1] + and a + jr z, .ShiftedMove + push de + ld bc, PartyMon1PP - (PartyMon1Moves + NUM_MOVES - 1) + add hl, bc + ld d, h + ld e, l + call ShiftMoves + pop de + +.ShiftedMove + pop hl + +.LearnMove + ld a, [hl] + ld [de], a + ld a, [Buffer1] + and a + jr z, .NextMove + push hl + ld a, [hl] + ld hl, MON_PP - MON_MOVES + add hl, de + push hl + dec a + ld hl, Moves + MOVE_PP + ld bc, MOVE_LENGTH + call AddNTimes + ld a, BANK(Moves) + call GetFarByte + pop hl + ld [hl], a + pop hl + jr .NextMove + +.done + pop bc + pop de + pop hl + ret +; 4256e + +ShiftMoves: ; 4256e + ld c, NUM_MOVES - 1 +.loop + inc de + ld a, [de] + ld [hli], a + dec c + jr nz, .loop + ret +; 42577 + + +EvoFlagAction: ; 42577 + push de + ld d, $0 + predef FlagPredef + pop de + ret +; 42581 + +GetPreEvolution: ; 42581 +; Find the first mon to evolve into CurPartySpecies. + +; Return carry and the new species in CurPartySpecies +; if a pre-evolution is found. + + ld c, 0 +.loop ; For each Pokemon... + ld hl, EvosAttacksPointers + ld b, 0 +rept 2 + add hl, bc +endr + ld a, [hli] + ld h, [hl] + ld l, a +.loop2 ; For each evolution... + ld a, [hli] + and a + jr z, .no_evolve ; If we jump, this Pokemon does not evolve into CurPartySpecies. + cp EVOLVE_STAT ; This evolution type has the extra parameter of stat comparison. + jr nz, .not_tyrogue + inc hl + +.not_tyrogue + inc hl + ld a, [CurPartySpecies] + cp [hl] + jr z, .found_preevo + inc hl + ld a, [hl] + and a + jr nz, .loop2 + +.no_evolve + inc c + ld a, c + cp NUM_POKEMON + jr c, .loop + and a + ret + +.found_preevo + inc c + ld a, c + ld [CurPartySpecies], a + scf + ret +; 425b1 diff --git a/engine/link.asm b/engine/link.asm index afc4f2d2e..afdbd218a 100755 --- a/engine/link.asm +++ b/engine/link.asm @@ -1920,7 +1920,7 @@ Function28b87: ; 28b87 ld a, [PartyCount] dec a ld [CurPartyMon], a - callab Function421d8 + callab EvolvePokemon call ClearScreen call Function28ef8 call Function28eff diff --git a/engine/party_menu.asm b/engine/party_menu.asm index 4d50ee8e4..6b50ca620 100644 --- a/engine/party_menu.asm +++ b/engine/party_menu.asm @@ -839,92 +839,92 @@ YouHaveNoPKMNString: ; 0x50556 db "You have no !@" -Function50566: ; 50566 +PrintPartyMenuActionText: ; 50566 ld a, [CurPartyMon] ld hl, PartyMonNicknames call GetNick ld a, [PartyMenuActionText] and $f - ld hl, Unknown_5057b - call Function505c1 + ld hl, .MenuActionTexts + call .PrintText ret ; 5057b -Unknown_5057b: ; 5057b - dw UnknownText_0x50594 - dw UnknownText_0x5059e - dw UnknownText_0x505a3 - dw UnknownText_0x505a8 - dw UnknownText_0x50599 - dw UnknownText_0x5058f - dw UnknownText_0x505ad - dw UnknownText_0x505b2 - dw UnknownText_0x505b7 - dw UnknownText_0x505bc +.MenuActionTexts: ; 5057b + dw .Text_CuredOfPoison + dw .Text_BurnWasHealed + dw .Text_Defrosted + dw .Text_WokeUp + dw .Text_RidOfParalysis + dw .Text_RecoveredSomeHP + dw .Text_HealthReturned + dw .Text_Revitalized + dw .Text_GrewToLevel + dw .Text_CameToItsSenses ; 5058f -UnknownText_0x5058f: ; 0x5058f +.Text_RecoveredSomeHP: ; 0x5058f ; recovered @ HP! text_jump UnknownText_0x1bc0a2 db "@" ; 0x50594 -UnknownText_0x50594: ; 0x50594 +.Text_CuredOfPoison: ; 0x50594 ; 's cured of poison. text_jump UnknownText_0x1bc0bb db "@" ; 0x50599 -UnknownText_0x50599: ; 0x50599 +.Text_RidOfParalysis: ; 0x50599 ; 's rid of paralysis. text_jump UnknownText_0x1bc0d2 db "@" ; 0x5059e -UnknownText_0x5059e: ; 0x5059e +.Text_BurnWasHealed: ; 0x5059e ; 's burn was healed. text_jump UnknownText_0x1bc0ea db "@" ; 0x505a3 -UnknownText_0x505a3: ; 0x505a3 +.Text_Defrosted: ; 0x505a3 ; was defrosted. text_jump UnknownText_0x1bc101 db "@" ; 0x505a8 -UnknownText_0x505a8: ; 0x505a8 +.Text_WokeUp: ; 0x505a8 ; woke up. text_jump UnknownText_0x1bc115 db "@" ; 0x505ad -UnknownText_0x505ad: ; 0x505ad +.Text_HealthReturned: ; 0x505ad ; 's health returned. text_jump UnknownText_0x1bc123 db "@" ; 0x505b2 -UnknownText_0x505b2: ; 0x505b2 +.Text_Revitalized: ; 0x505b2 ; is revitalized. text_jump UnknownText_0x1bc13a db "@" ; 0x505b7 -UnknownText_0x505b7: ; 0x505b7 +.Text_GrewToLevel: ; 0x505b7 ; grew to level @ !@ @ text_jump UnknownText_0x1bc14f db "@" ; 0x505bc -UnknownText_0x505bc: ; 0x505bc +.Text_CameToItsSenses: ; 0x505bc ; came to its senses. text_jump UnknownText_0x1bc16e db "@" ; 0x505c1 -Function505c1: ; 505c1 +.PrintText: ; 505c1 ld e, a ld d, 0 rept 2 @@ -935,7 +935,7 @@ endr ld l, a ld a, [Options] push af - set 4, a + set NO_TEXT_SCROLL, a ld [Options], a call PrintText pop af diff --git a/engine/pokegear.asm b/engine/pokegear.asm index 424669b20..3954f5384 100755 --- a/engine/pokegear.asm +++ b/engine/pokegear.asm @@ -330,7 +330,7 @@ Function90e3f: ; 90e3f .kanto ld e, 1 .ok - callba Function91ae1 + callba PokegearMap ld a, $7 ld bc, $12 hlcoord 1, 2 @@ -1919,7 +1919,8 @@ endr .kanto jp LoadStation_PlacesAndPeople ; 91ae1 -Function91ae1: ; 91ae1 + +PokegearMap: ; 91ae1 ld a, e and a jr nz, .kanto diff --git a/engine/predef.asm b/engine/predef.asm index cb72f9202..213cfc352 100644 --- a/engine/predef.asm +++ b/engine/predef.asm @@ -58,7 +58,7 @@ PredefPointers:: ; 856b add_predef GetMonFrontpic add_predef LearnLevelMoves add_predef FillMoves - add_predef Function421e6 + add_predef EvolveAfterBattle add_predef Function28f63 add_predef Function28f24 add_predef CopyPkmnToTempMon @@ -97,7 +97,7 @@ PredefPointers:: ; 856b add_predef DecompressPredef ; $40 add_predef CheckTypeMatchup add_predef ConvertMon_1to2 - add_predef Functionfb877 + add_predef NewPokedexEntry add_predef AnimateMon_Slow_Normal add_predef PlaceStatusString add_predef LoadMonAnimation diff --git a/engine/specials.asm b/engine/specials.asm index 68ad47aa4..29c4da492 100644 --- a/engine/specials.asm +++ b/engine/specials.asm @@ -215,7 +215,7 @@ Special_GameCornerPrizeMonCheckDex: ; c230 call FadeToMenu ld a, [ScriptVar] ld [wd265], a - callba Functionfb877 + callba NewPokedexEntry call ExitAllMenus ret ; c252 diff --git a/engine/startmenu.asm b/engine/startmenu.asm index 41c79478f..290e6d6ea 100755 --- a/engine/startmenu.asm +++ b/engine/startmenu.asm @@ -664,7 +664,7 @@ UnknownText_0x12a5b: ; 0x12a5b CantUseItem: ; 12a60 ld hl, CantUseItemText - call Function2012 + call MenuTextBoxWaitButton ret ; 12a67 @@ -1241,14 +1241,14 @@ OpenPartyStats: ; 12e00 MonMenu_Cut: ; 12e1b callba CutFunction - ld a, [wd0ec] + ld a, [wFieldMoveSucceeded] cp $1 - jr nz, .asm_12e2d + jr nz, .Fail ld b, $4 ld a, $2 ret -.asm_12e2d +.Fail ld a, $3 ret ; 12e30 @@ -1256,160 +1256,161 @@ MonMenu_Cut: ; 12e1b MonMenu_Fly: ; 12e30 callba FlyFunction - ld a, [wd0ec] + ld a, [wFieldMoveSucceeded] cp $2 - jr z, .asm_12e4c + jr z, .Fail cp $0 - jr z, .asm_12e4f + jr z, .Error callba MobileFn_1060b5 ld b, $4 ld a, $2 ret -.asm_12e4c +.Fail ld a, $3 ret -.asm_12e4f +.Error ld a, $0 ret -.asm_12e52 +.Unused ld a, $1 ret ; 12e55 MonMenu_Flash: ; 12e55 callba Functionc8ac - ld a, [wd0ec] + ld a, [wFieldMoveSucceeded] cp $1 - jr nz, .asm_12e67 + jr nz, .Fail ld b, $4 ld a, $2 ret -.asm_12e67 +.Fail ld a, $3 ret ; 12e6a MonMenu_Strength: ; 12e6a callba StrengthFunction - ld a, [wd0ec] + ld a, [wFieldMoveSucceeded] cp $1 - jr nz, .asm_12e7c + jr nz, .Fail ld b, $4 ld a, $2 ret -.asm_12e7c +.Fail ld a, $3 ret ; 12e7f MonMenu_Whirlpool: ; 12e7f callba WhirlpoolFunction - ld a, [wd0ec] + ld a, [wFieldMoveSucceeded] cp $1 - jr nz, .asm_12e91 + jr nz, .Fail ld b, $4 ld a, $2 ret -.asm_12e91 +.Fail ld a, $3 ret ; 12e94 MonMenu_Waterfall: ; 12e94 callba Functioncade - ld a, [wd0ec] + ld a, [wFieldMoveSucceeded] cp $1 - jr nz, .asm_12ea6 + jr nz, .Fail ld b, $4 ld a, $2 ret -.asm_12ea6 +.Fail ld a, $3 ret ; 12ea9 MonMenu_Teleport: ; 12ea9 callba TeleportFunction - ld a, [wd0ec] + ld a, [wFieldMoveSucceeded] and a - jr z, .asm_12eba + jr z, .Fail ld b, $4 ld a, $2 ret -.asm_12eba +.Fail ld a, $3 ret ; 12ebd MonMenu_Surf: ; 12ebd callba SurfFunction - ld a, [wd0ec] + ld a, [wFieldMoveSucceeded] and a - jr z, .asm_12ece + jr z, .Fail ld b, $4 ld a, $2 ret -.asm_12ece +.Fail ld a, $3 ret ; 12ed1 MonMenu_Dig: ; 12ed1 callba DigFunction - ld a, [wd0ec] + ld a, [wFieldMoveSucceeded] cp $1 - jr nz, .asm_12ee3 + jr nz, .Fail ld b, $4 ld a, $2 ret -.asm_12ee3 +.Fail ld a, $3 ret ; 12ee6 MonMenu_Softboiled_MilkDrink: ; 12ee6 - call Function12f05 - jr nc, .asm_12ef3 - callba Functionf3df - jr .asm_12ef9 + call .CheckMonHasEnoughHP + jr nc, .NotEnoughHP + callba Softboiled_MilkDrinkFunction + jr .finish -.asm_12ef3 - ld hl, UnknownText_0x12f00 +.NotEnoughHP + ld hl, .Text_NotEnoughHP call PrintText -.asm_12ef9 +.finish xor a ld [PartyMenuActionText], a ld a, $3 ret ; 12f00 -UnknownText_0x12f00: ; 0x12f00 +.Text_NotEnoughHP: ; 0x12f00 ; Not enough HP! text_jump UnknownText_0x1c1ce3 db "@" ; 0x12f05 -Function12f05: ; 12f05 +.CheckMonHasEnoughHP: ; 12f05 +; Need to have at least (MaxHP / 5) HP left. ld a, MON_MAXHP call GetPartyParamLocation ld a, [hli] ld [hDividend + 0], a ld a, [hl] ld [hDividend + 1], a - ld a, $5 + ld a, 5 ld [hDivisor], a - ld b, $2 + ld b, 2 call Divide ld a, MON_HP + 1 call GetPartyParamLocation @@ -1423,28 +1424,28 @@ Function12f05: ; 12f05 MonMenu_Headbutt: ; 12f26 callba HeadbuttFunction - ld a, [wd0ec] + ld a, [wFieldMoveSucceeded] cp $1 - jr nz, .asm_12f38 + jr nz, .Fail ld b, $4 ld a, $2 ret -.asm_12f38 +.Fail ld a, $3 ret ; 12f3b MonMenu_RockSmash: ; 12f3b callba RockSmashFunction - ld a, [wd0ec] + ld a, [wFieldMoveSucceeded] cp $1 - jr nz, .asm_12f4d + jr nz, .Fail ld b, $4 ld a, $2 ret -.asm_12f4d +.Fail ld a, $3 ret ; 12f50 diff --git a/engine/town_map.asm b/engine/town_map.asm index a2f93119a..c821e793a 100755 --- a/engine/town_map.asm +++ b/engine/town_map.asm @@ -147,7 +147,7 @@ Function91a04: ; 91a04 ld e, $1 .okay - callba Function91ae1 + callba PokegearMap ld a, $7 ld bc, 6 hlcoord 1, 0 -- cgit v1.2.3 From 8a6a1a7d77fdcd1f8468f0c411795a8f039d4bd8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 18 Nov 2015 23:16:25 -0500 Subject: CmdQueues --- engine/events.asm | 2 +- engine/events_2.asm | 216 +++++++++++++++++++++++++------------------------- engine/mail.asm | 6 +- engine/pack.asm | 6 +- engine/party_menu.asm | 62 ++++++++------- engine/scripting.asm | 6 +- engine/startmenu.asm | 26 +++--- 7 files changed, 162 insertions(+), 162 deletions(-) (limited to 'engine') diff --git a/engine/events.asm b/engine/events.asm index 95c002042..40e863cdc 100644 --- a/engine/events.asm +++ b/engine/events.asm @@ -168,7 +168,7 @@ Function9676d: ; 9676d HandleMap: ; 96773 call ResetOverworldDelay call Function967c1 - callba Function97e08 + callba HandleCmdQueue ; no need to farcall call MapEvents ; Not immediately entering a connected map will cause problems. diff --git a/engine/events_2.asm b/engine/events_2.asm index 4597e92e5..972379e6d 100644 --- a/engine/events_2.asm +++ b/engine/events_2.asm @@ -335,8 +335,8 @@ DoBikeStep:: ; 97db3 ret ; 97df9 -Function97df9:: ; 97df9 - ld hl, wd6de +ClearCmdQueue:: ; 97df9 + ld hl, wCmdQueue ld de, 6 ld c, 4 xor a @@ -348,8 +348,8 @@ Function97df9:: ; 97df9 ret ; 97e08 -Function97e08:: ; 97e08 - ld hl, wd6de +HandleCmdQueue:: ; 97e08 + ld hl, wCmdQueue xor a .loop ld [hMapObjectIndexBuffer], a @@ -359,106 +359,106 @@ Function97e08:: ; 97e08 push hl ld b, h ld c, l - call Function97e79 + call HandleQueuedCommand pop hl .skip - ld de, $0006 + ld de, CMDQUEUE_ENTRY_SIZE add hl, de ld a, [hMapObjectIndexBuffer] inc a - cp $4 + cp CMDQUEUE_CAPACITY jr nz, .loop ret ; 97e25 -Function97e25: ; 97e25 - ld hl, wd6de - ld bc, 6 +GetNthCmdQueueEntry: ; 97e25 unreferenced + ld hl, wCmdQueue + ld bc, CMDQUEUE_ENTRY_SIZE call AddNTimes ld b, h ld c, l ret ; 97e31 -Function97e31:: ; 97e31 +WriteCmdQueue:: ; 97e31 push bc push de - call Function97e45 + call .GetNextEmptyEntry ld d, h ld e, l pop hl pop bc ret c ld a, b - ld bc, $0005 + ld bc, CMDQUEUE_ENTRY_SIZE - 1 call FarCopyBytes xor a ld [hl], a ret ; 97e45 -Function97e45: ; 97e45 - ld hl, wd6de - ld de, $0006 - ld c, $4 -.asm_97e4d +.GetNextEmptyEntry: ; 97e45 + ld hl, wCmdQueue + ld de, CMDQUEUE_ENTRY_SIZE + ld c, CMDQUEUE_CAPACITY +.loop ld a, [hl] and a - jr z, .asm_97e57 + jr z, .done add hl, de dec c - jr nz, .asm_97e4d + jr nz, .loop scf ret -.asm_97e57 - ld a, $4 +.done + ld a, CMDQUEUE_CAPACITY sub c and a ret ; 97e5c -Function97e5c:: ; 97e5c - ld hl, wd6de - ld de, $0006 - ld c, $4 -.asm_97e64 +DelCmdQueue:: ; 97e5c + ld hl, wCmdQueue + ld de, CMDQUEUE_ENTRY_SIZE + ld c, CMDQUEUE_CAPACITY +.loop ld a, [hl] cp b - jr z, .asm_97e6e + jr z, .done add hl, de dec c - jr nz, .asm_97e64 + jr nz, .loop and a ret -.asm_97e6e +.done xor a ld [hl], a scf ret ; 97e72 -Function97e72: ; 97e72 - ld hl, 0 +_DelCmdQueue: ; 97e72 + ld hl, CMDQUEUE_TYPE add hl, bc ld [hl], 0 ret ; 97e79 -Function97e79: ; 97e79 - ld hl, 0 +HandleQueuedCommand: ; 97e79 + ld hl, CMDQUEUE_TYPE add hl, bc ld a, [hl] cp 5 - jr c, .asm_97e83 + jr c, .okay xor a -.asm_97e83 +.okay ld e, a ld d, 0 - ld hl, Table97e94 + ld hl, .Jumptable_ba rept 3 add hl, de endr @@ -472,16 +472,16 @@ endr ret ; 97e94 -Table97e94: ; 97e94 - dba Function97eb7 - dba Function97eb8 - dba Function97f42 - dba Function97ef9 - dba Function97ebc +.Jumptable_ba: ; 97e94 + dba CmdQueue_Null + dba CmdQueue_Null2 + dba CmdQueue_StoneTable + dba CmdQueue_Type3 + dba CmdQueue_Type4 ; 97ea3 -Function97ea3: ; 97ea3 - ld hl, $0005 +CmdQueueAnonymousJumptable: ; 97ea3 + ld hl, CMDQUEUE_05 add hl, bc ld a, [hl] pop hl @@ -489,45 +489,44 @@ Function97ea3: ; 97ea3 ret ; 97eab -Function97eab: ; 97eab - ld hl, $0005 +CmdQueueAnonJT_Increment: ; 97eab + ld hl, CMDQUEUE_05 add hl, bc inc [hl] ret ; 97eb1 -Function97eb1: ; 97eb1 - ld hl, $0005 +CmdQueueAnonJT_Decrement: ; 97eb1 + ld hl, CMDQUEUE_05 add hl, bc dec [hl] ret ; 97eb7 -Function97eb7: ; 97eb7 +CmdQueue_Null: ; 97eb7 ret ; 97eb8 -Function97eb8: ; 97eb8 +CmdQueue_Null2: ; 97eb8 call ret_2f3e ret ; 97ebc -Function97ebc: ; 97ebc - call Function97ea3 - dw Function97ec3 - dw Function97ecd +CmdQueue_Type4: ; 97ebc + call CmdQueueAnonymousJumptable + ; anonymous jumptable + dw .zero + dw .one ; 97ec3 -Function97ec3: ; 97ec3 +.zero: ; 97ec3 ld a, [hSCY] - ld hl, $0004 + ld hl, 4 add hl, bc ld [hl], a - call Function97eab -; 97ecd - -Function97ecd: ; 97ecd - ld hl, $0001 + call CmdQueueAnonJT_Increment +.one: ; 97ecd + ld hl, 1 add hl, bc ld a, [hl] dec a @@ -535,7 +534,7 @@ Function97ecd: ; 97ecd jr z, .asm_97eee and $1 jr z, .asm_97ee4 - ld hl, $0002 + ld hl, 2 add hl, bc ld a, [hSCY] sub [hl] @@ -543,7 +542,7 @@ Function97ecd: ; 97ecd ret .asm_97ee4 - ld hl, $0002 + ld hl, 2 add hl, bc ld a, [hSCY] add [hl] @@ -551,61 +550,60 @@ Function97ecd: ; 97ecd ret .asm_97eee - ld hl, $0004 + ld hl, 4 add hl, bc ld a, [hl] ld [hSCY], a - call Function97e72 + call _DelCmdQueue ret ; 97ef9 -Function97ef9: ; 97ef9 - call Function97ea3 - dw Function97f02 - dw Function97f0a - dw Function97f1b +CmdQueue_Type3: ; 97ef9 + call CmdQueueAnonymousJumptable + ; anonymous jumptable + dw .zero + dw .one + dw .two ; 97f02 -Function97f02: ; 97f02 - call Function97f38 - jr z, Function97f2c - call Function97eab -; 97f0a - -Function97f0a: ; 97f0a - call Function97f38 - jr z, Function97f2c - call Function97eab +.zero: ; 97f02 + call .IsPlayerFacingDown + jr z, .PlayerNotFacingDown + call CmdQueueAnonJT_Increment +.one: ; 97f0a + call .IsPlayerFacingDown + jr z, .PlayerNotFacingDown + call CmdQueueAnonJT_Increment - ld hl, $0002 + ld hl, 2 add hl, bc ld a, [hl] ld [wd173], a ret ; 97f1b -Function97f1b: ; 97f1b - call Function97f38 - jr z, Function97f2c - call Function97eb1 +.two: ; 97f1b + call .IsPlayerFacingDown + jr z, .PlayerNotFacingDown + call CmdQueueAnonJT_Decrement - ld hl, $0003 + ld hl, 3 add hl, bc ld a, [hl] ld [wd173], a ret ; 97f2c -Function97f2c: ; 97f2c +.PlayerNotFacingDown: ; 97f2c ld a, $7f ld [wd173], a - ld hl, $0005 + ld hl, 5 add hl, bc ld [hl], 0 ret ; 97f38 -Function97f38: ; 97f38 +.IsPlayerFacingDown: ; 97f38 push bc ld bc, PlayerStruct call GetSpriteDirection @@ -614,50 +612,50 @@ Function97f38: ; 97f38 ret ; 97f42 -Function97f42: ; 97f42 +CmdQueue_StoneTable: ; 97f42 ld de, PlayerStruct - ld a, $d -.asm_97f47 + ld a, NUM_OBJECT_STRUCTS +.loop push af - ld hl, 0 + ld hl, OBJECT_SPRITE add hl, de ld a, [hl] and a - jr z, .asm_97f71 + jr z, .next - ld hl, $0003 + ld hl, OBJECT_MOVEMENTTYPE add hl, de ld a, [hl] - cp $19 - jr nz, .asm_97f71 + cp STEP_TYPE_19 + jr nz, .next - ld hl, $000e + ld hl, OBJECT_NEXT_TILE add hl, de ld a, [hl] call CheckPitTile - jr nz, .asm_97f71 + jr nz, .next - ld hl, $0007 + ld hl, OBJECT_DIRECTION_WALKING add hl, de ld a, [hl] - cp $ff - jr nz, .asm_97f71 - call Function3567 - jr c, .asm_97f7c + cp STANDING + jr nz, .next + call HandleStoneQueue + jr c, .fall_down_hole -.asm_97f71 - ld hl, $0028 +.next + ld hl, OBJECT_STRUCT_LENGTH add hl, de ld d, h ld e, l pop af dec a - jr nz, .asm_97f47 + jr nz, .loop ret -.asm_97f7c +.fall_down_hole pop af ret ; 97f7e diff --git a/engine/mail.asm b/engine/mail.asm index c0bc591b0..1cf1a13a7 100755 --- a/engine/mail.asm +++ b/engine/mail.asm @@ -503,9 +503,9 @@ Function4484a: ; 0x4484a ld [PartyMenuActionText], a call ClearBGPalettes .try_again - callba Function5004f - callba Function50405 - callba Function503e0 + callba LoadPartyMenuGFX + callba InitPartyMenuWithCancel + callba InitPartyMenuGFX callba WritePartyMenuTilemap callba PrintPartyMenuText call WaitBGMap diff --git a/engine/pack.asm b/engine/pack.asm index 2ba9c9d3a..e9b52606c 100644 --- a/engine/pack.asm +++ b/engine/pack.asm @@ -595,9 +595,9 @@ Function103fd: ; 103fd ld a, $8 ld [PartyMenuActionText], a call ClearBGPalettes - callba Function5004f - callba Function50405 - callba Function503e0 + callba LoadPartyMenuGFX + callba InitPartyMenuWithCancel + callba InitPartyMenuGFX .asm_10427 callba WritePartyMenuTilemap callba PrintPartyMenuText diff --git a/engine/party_menu.asm b/engine/party_menu.asm index 6b50ca620..e81355c7a 100644 --- a/engine/party_menu.asm +++ b/engine/party_menu.asm @@ -30,15 +30,15 @@ Function5001d: ; 5001d ; 5003f Function5003f: ; 5003f - call Function5004f - call Function50405 - call Function503e0 + call LoadPartyMenuGFX + call InitPartyMenuWithCancel + call InitPartyMenuGFX call WritePartyMenuTilemap call PrintPartyMenuText ret ; 5004f -Function5004f: ; 5004f +LoadPartyMenuGFX: ; 5004f call LoadFontsBattleExtra callab Function8ad1 ; engine/color.asm callab InefficientlyClear121BytesAtwc300 @@ -648,7 +648,7 @@ endr ; 503e0 -Function503e0: ; 503e0 +InitPartyMenuGFX: ; 503e0 ld hl, PartyCount ld a, [hli] and a @@ -656,7 +656,7 @@ Function503e0: ; 503e0 ld c, a xor a ld [hObjectStructIndexBuffer], a -.asm_503ea +.loop push bc push hl ld hl, Function8e83f @@ -669,60 +669,62 @@ Function503e0: ; 503e0 pop hl pop bc dec c - jr nz, .asm_503ea + jr nz, .loop callab Function8cf69 ret ; 50405 -Function50405: ; 50405 +InitPartyMenuWithCancel: ; 50405 +; with cancel xor a - ld [wd0e3], a - ld de, Unknown_5044f - call Function1bb1 + ld [wSwitchMon], a + ld de, PartyMenuAttributes + call InitMenu3 ld a, [PartyCount] inc a - ld [wcfa3], a + ld [wcfa3], a ; list length dec a ld b, a - ld a, [wd0d8] + ld a, [wPartyMenuCursor] and a - jr z, .asm_50422 + jr z, .skip inc b cp b - jr c, .asm_50424 + jr c, .done -.asm_50422 +.skip ld a, $1 -.asm_50424 +.done ld [MenuSelection2], a - ld a, $3 + ld a, A_BUTTON | B_BUTTON ld [wcfa8], a ret ; 5042d -Function5042d: ; 0x5042d - ld de, Unknown_5044f - call Function1bb1 +InitPartyMenuNoCancel: ; 0x5042d +; no cancel + ld de, PartyMenuAttributes + call InitMenu3 ld a, [PartyCount] - ld [wcfa3], a + ld [wcfa3], a ; list length ld b, a - ld a, [wd0d8] + ld a, [wPartyMenuCursor] and a - jr z, .asm_50444 + jr z, .skip inc b cp b - jr c, .asm_50446 -.asm_50444 + jr c, .done +.skip ld a, $1 -.asm_50446 +.done ld [MenuSelection2], a - ld a, $3 + ld a, A_BUTTON | B_BUTTON ld [wcfa8], a ret ; 5044f (14:444f) -Unknown_5044f: ; 5044f +PartyMenuAttributes: ; 5044f ; cursor y ; cursor x ; list length @@ -744,7 +746,7 @@ PartyMenuSelect: ; 0x50457 ld a, [MenuSelection2] ; menu selection? cp b jr z, .exitmenu ; CANCEL - ld [wd0d8], a + ld [wPartyMenuCursor], a ld a, [hJoyLast] ld b, a bit 1, b diff --git a/engine/scripting.asm b/engine/scripting.asm index f576fa3d4..6d87c2f1b 100644 --- a/engine/scripting.asm +++ b/engine/scripting.asm @@ -2153,7 +2153,7 @@ CopyConvertedText: ; 976c8 Script_itemtotext: ; 976d5 ; script command 0x41 ; parameters: -; item (ItemLabelByte) +; item (ItemLabelByte); use 0 to draw from ScriptVar ; memory (SingleByteParam) call GetScriptByte @@ -2923,7 +2923,7 @@ Script_writecmdqueue: ; 97a8b ld d, a ld a, [ScriptBank] ld b, a - callba Function97e31 + callba WriteCmdQueue ; no need to farcall ret ; 97a9e @@ -2936,7 +2936,7 @@ Script_delcmdqueue: ; 97a9e ld [ScriptVar], a call GetScriptByte ld b, a - callba Function97e5c + callba DelCmdQueue ; no need to farcall ret c ld a, 1 ld [ScriptVar], a diff --git a/engine/startmenu.asm b/engine/startmenu.asm index 290e6d6ea..bcf2247af 100755 --- a/engine/startmenu.asm +++ b/engine/startmenu.asm @@ -533,9 +533,9 @@ StartMenu_Pokemon: ; 12976 call ClearBGPalettes .menu - callba Function5004f - callba Function50405 - callba Function503e0 + callba LoadPartyMenuGFX + callba InitPartyMenuWithCancel + callba InitPartyMenuGFX .menunoreload callba WritePartyMenuTilemap @@ -684,7 +684,7 @@ PartyMonItemName: ; 12a6c CancelPokemonAction: ; 12a79 - callba Function50405 + callba InitPartyMenuWithCancel callba Function8ea71 ld a, 1 ret @@ -746,10 +746,10 @@ SwitchPartyMons: ; 12aec ld a, [CurPartyMon] inc a - ld [wd0e3], a + ld [wSwitchMon], a callba Function8ea8c - callba Function5042d + callba InitPartyMenuNoCancel ld a, 4 ld [PartyMenuActionText], a @@ -758,7 +758,7 @@ SwitchPartyMons: ; 12aec hlcoord 0, 1 ld bc, 20 * 2 - ld a, [wd0e3] + ld a, [wSwitchMon] dec a call AddNTimes ld [hl], "▷" @@ -775,9 +775,9 @@ SwitchPartyMons: ; 12aec xor a ld [PartyMenuActionText], a - callba Function5004f - callba Function50405 - callba Function503e0 + callba LoadPartyMenuGFX + callba InitPartyMenuWithCancel + callba InitPartyMenuGFX ld a, 1 ret @@ -1476,7 +1476,7 @@ Function12f5b: ; 12f5b Function12f73: ; 12f73 call SetUpMoveScreenBG ld de, Unknown_12fb2 - call Function1bb1 + call InitMenu3 call Function131ef ld hl, wcfa5 set 6, [hl] @@ -1505,7 +1505,7 @@ Function12f9f: ; 12f9f Function12fa0: ; 12fa0 push af xor a - ld [wd0e3], a + ld [wSwitchMon], a ld hl, wcfa5 res 6, [hl] call ClearSprites @@ -1543,7 +1543,7 @@ MoveScreenLoop: ; 12fd5 call SetUpMoveScreenBG call Function132d3 ld de, Unknown_13163 - call Function1bb1 + call InitMenu3 .loop call Function131ef ld hl, wcfa5 -- cgit v1.2.3 From 93a129eb6dc261faccaf2b2d58daf3db204ab3ba Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 19 Nov 2015 18:07:20 -0500 Subject: main.asm is now under 30k lines --- engine/crystal_intro.asm | 2531 ++++++++++++++++++++++++++++++++++++ engine/debug.asm | 1517 +++++++++++++++++++++ engine/engine_flags.asm | 87 ++ engine/npctrade.asm | 620 +++++++++ engine/party_menu.asm | 2 +- engine/printer.asm | 1493 +++++++++++++++++++++ engine/scripting.asm | 4 +- engine/sprites.asm | 545 +++++++- engine/startmenu.asm | 2 +- engine/time_capsule/conversion.asm | 684 ++++++++++ engine/variables.asm | 150 +++ 11 files changed, 7627 insertions(+), 8 deletions(-) create mode 100755 engine/crystal_intro.asm create mode 100755 engine/debug.asm create mode 100755 engine/npctrade.asm create mode 100755 engine/printer.asm create mode 100755 engine/time_capsule/conversion.asm create mode 100755 engine/variables.asm (limited to 'engine') diff --git a/engine/crystal_intro.asm b/engine/crystal_intro.asm new file mode 100755 index 000000000..7849a9f48 --- /dev/null +++ b/engine/crystal_intro.asm @@ -0,0 +1,2531 @@ +Functione455c: ; e455c + hlcoord 1, 1 + ld de, SCREEN_WIDTH + ld c, $10 +.asm_e4564 + ld [hl], $7f + add hl, de + dec c + jr nz, .asm_e4564 + hlcoord 1, 2 + ld bc, $28 + ld a, [wJumptableIndex] + call AddNTimes + ld [hl], $ed + ret +; e4579 + + +Functione4579: ; e4579 + ld de, MUSIC_NONE + call PlayMusic + call ClearBGPalettes + call ClearTileMap + ld a, VBGMap0 / $100 + ld [hBGMapAddress + 1], a + xor a + ld [hBGMapAddress], a + ld [hJoyDown], a + ld [hSCX], a + ld [hSCY], a + ld a, $90 + ld [hWY], a + call WaitBGMap + ld b, SCGB_19 + call GetSGBLayout + call SetPalettes + ld c, 10 + call DelayFrames + callab Copyright + call WaitBGMap + ld c, 100 + call DelayFrames + call ClearTileMap + callba GBCOnlyScreen + call Functione45e8 +.joy_loop + call JoyTextDelay + ld a, [hJoyLast] + and BUTTONS + jr nz, .pressed_button + ld a, [wJumptableIndex] + bit 7, a + jr nz, .finish + call PlaceGameFreakPresents + callba Function8cf69 + call DelayFrame + jr .joy_loop + +.pressed_button + call Functione465e + scf + ret + +.finish + call Functione465e + and a + ret +; e45e8 + +Functione45e8: ; e45e8 + ld de, GameFreakLogo + ld hl, VTiles2 + lb bc, BANK(GameFreakLogo), $1c + call Get1bpp + + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + + ld hl, IntroLogoGFX + ld de, w6_d000 + ld a, BANK(IntroLogoGFX) + call FarDecompress + + ld hl, VTiles0 + ld de, w6_d000 + lb bc, 1, 8 tiles + call Request2bpp + + ld hl, VTiles1 + ld de, w6_d000 + $80 tiles + lb bc, 1, 8 tiles + call Request2bpp + + pop af + ld [rSVBK], a + + callba Function8cf53 + depixel 10, 11, 4, 0 + ld a, SPRITE_ANIM_INDEX_03 + call _InitSpriteAnimStruct + ld hl, $7 + add hl, bc + ld [hl], $a0 + ld hl, $c + add hl, bc + ld [hl], $60 + ld hl, $d + add hl, bc + ld [hl], $30 + xor a + ld [wJumptableIndex], a + ld [wcf64], a + ld [wcf65], a + ld [hSCX], a + ld [hSCY], a + ld a, $1 + ld [hBGMapMode], a + ld a, $90 + ld [hWY], a + ld de, $e4e4 + call DmgToCgbObjPals + ret +; e465e + +Functione465e: ; e465e + callba Function8cf53 + call ClearTileMap + call ClearSprites + ld c, 16 + call DelayFrames + ret +; e4670 + +PlaceGameFreakPresents: ; e4670 + ld a, [wJumptableIndex] + ld e, a + ld d, 0 + ld hl, .jumptable +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; e467f + +.jumptable: ; e467f + dw PlaceGameFreakPresents_0 + dw PlaceGameFreakPresents_1 + dw PlaceGameFreakPresents_2 + dw PlaceGameFreakPresents_3 +; e4687 + +PlaceGameFreakPresents_AdvanceIndex: ; e4687 + ld hl, wJumptableIndex + inc [hl] + ret +; e468c + +PlaceGameFreakPresents_0: ; e468c + ret +; e468d + +PlaceGameFreakPresents_1: ; e468d + ld hl, wcf65 + ld a, [hl] + cp $20 + jr nc, .PlaceGameFreak + inc [hl] + ret + +.PlaceGameFreak + ld [hl], 0 + ld hl, .GAME_FREAK + decoord 5, 10 + ld bc, .end - .GAME_FREAK + call CopyBytes + call PlaceGameFreakPresents_AdvanceIndex + ld de, SFX_GAME_FREAK_PRESENTS + call PlaySFX + ret +; e46af + +.GAME_FREAK + ; G A M E _ F R E A K + db 0, 1, 2, 3, 13, 4, 5, 3, 1, 6 +.end + db "@" +; e46ba + +PlaceGameFreakPresents_2: ; e46ba + ld hl, wcf65 + ld a, [hl] + cp $40 + jr nc, .place_presents + inc [hl] + ret + +.place_presents + ld [hl], 0 + ld hl, .presents + decoord 7,11 + ld bc, .end - .presents + call CopyBytes + call PlaceGameFreakPresents_AdvanceIndex + ret +; e46d6 + +.presents + db 7, 8, 9, 10, 11, 12 +.end + db "@" +; e46dd + +PlaceGameFreakPresents_3: ; e46dd + ld hl, wcf65 + ld a, [hl] + cp $80 + jr nc, .finish + inc [hl] + ret + +.finish + ld hl, wJumptableIndex + set 7, [hl] + ret +; e46ed + + + +GameFreakLogoJumper: ; e46ed (39:46ed) + ld hl, $b + add hl, bc + ld e, [hl] + ld d, 0 + ld hl, GameFreakLogoScenes +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +GameFreakLogoScenes: ; e46fd (39:46fd) + dw GameFreakLogoScene1 + dw GameFreakLogoScene2 + dw GameFreakLogoScene3 + dw GameFreakLogoScene4 + dw GameFreakLogoScene5 + + +GameFreakLogoScene1: ; e4707 (39:4707) + ld hl, $b + add hl, bc + inc [hl] + ret + +GameFreakLogoScene2: ; e470d (39:470d) + ld hl, $c + add hl, bc + ld a, [hl] + and a + jr z, .asm_e4747 + ld d, a + ld hl, $d + add hl, bc + ld a, [hl] + and $3f + cp $20 + jr nc, .asm_e4723 + add $20 +.asm_e4723 + ld e, a + callba Functionce765 + ld hl, $7 + add hl, bc + ld [hl], e + ld hl, $d + add hl, bc + ld a, [hl] + dec [hl] + and $1f + ret nz + ld hl, $c + add hl, bc + ld a, [hl] + sub $30 + ld [hl], a + ld de, SFX_DITTO_BOUNCE + call PlaySFX + ret +.asm_e4747 + ld hl, $b + add hl, bc + inc [hl] + ld hl, $d + add hl, bc + ld [hl], $0 + ld de, SFX_DITTO_POP_UP + call PlaySFX + ret + +GameFreakLogoScene3: ; e4759 (39:4759) + ld hl, $d + add hl, bc + ld a, [hl] + cp $20 + jr nc, .asm_e4764 + inc [hl] + ret +.asm_e4764 + ld hl, $b + add hl, bc + inc [hl] + ld hl, $d + add hl, bc + ld [hl], $0 + ld de, SFX_DITTO_TRANSFORM + call PlaySFX + ret + +GameFreakLogoScene4: ; e4776 (39:4776) + ld hl, $d + add hl, bc + ld a, [hl] + cp $40 + jr z, .asm_e47a3 + inc [hl] + srl a + srl a + ld e, a + ld d, $0 + ld hl, GameFreakLogoPalettes +rept 2 + add hl, de +endr + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld a, [hli] + ld [OBPals + 12], a + ld a, [hli] + ld [OBPals + 13], a + pop af + ld [rSVBK], a + ld a, $1 + ld [hCGBPalUpdate], a + ret +.asm_e47a3 + ld hl, $b + add hl, bc + inc [hl] + call PlaceGameFreakPresents_AdvanceIndex + +GameFreakLogoScene5: ; e47ab (39:47ab) + ret +; e47ac (39:47ac) + +GameFreakLogoPalettes: ; e47ac +; Ditto's color as it turns into the Game Freak logo. +; Fade from pink to orange. +; One color per step. + RGB 23, 12, 28 + RGB 23, 12, 27 + RGB 23, 13, 26 + RGB 23, 13, 24 + RGB 24, 14, 22 + RGB 24, 14, 20 + RGB 24, 15, 18 + RGB 24, 15, 16 + RGB 25, 16, 14 + RGB 25, 16, 12 + RGB 25, 17, 10 + RGB 25, 17, 08 + RGB 26, 18, 06 + RGB 26, 18, 04 + RGB 26, 19, 02 + RGB 26, 19, 00 +;' e47cc + +GameFreakLogo: ; e47cc +INCBIN "gfx/splash/logo.1bpp" +; e48ac + +CrystalIntro: ; e48ac + ld a, [rSVBK] + push af + ld a, 5 + ld [rSVBK], a + ld a, [hInMenu] + push af + ld a, [hVBlank] + push af + call Functione4901 +.loop: ; e48bc + call JoyTextDelay + ld a, [hJoyLast] + and BUTTONS + jr nz, .ShutOffMusic + ld a, [wJumptableIndex] + bit 7, a + jr nz, .done + call IntroSceneJumper + callba Function8cf69 + call DelayFrame + jp .loop + +.ShutOffMusic + ld de, MUSIC_NONE + call PlayMusic + +.done + call ClearBGPalettes + call ClearSprites + call ClearTileMap + xor a + ld [hSCX], a + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + pop af + ld [hVBlank], a + pop af + ld [hInMenu], a + pop af + ld [rSVBK], a + ret +; e4901 + +Functione4901: ; e4901 + xor a + ld [hVBlank], a + ld a, $1 + ld [hInMenu], a + xor a + ld [hMapAnims], a + ld [wJumptableIndex], a + ret +; e490f + +IntroSceneJumper: ; e490f + ld a, [wJumptableIndex] + ld e, a + ld d, 0 + ld hl, IntroScenes +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; e491e + + +IntroScenes: ; e491e (39:491e) + dw IntroScene1 + dw IntroScene2 + dw IntroScene3 + dw IntroScene4 + dw IntroScene5 + dw IntroScene6 + dw IntroScene7 + dw IntroScene8 + dw IntroScene9 + dw IntroScene10 + dw IntroScene11 + dw IntroScene12 + dw IntroScene13 + dw IntroScene14 + dw IntroScene15 + dw IntroScene16 + dw IntroScene17 + dw IntroScene18 + dw IntroScene19 + dw IntroScene20 + dw IntroScene21 + dw IntroScene22 + dw IntroScene23 + dw IntroScene24 + dw IntroScene25 + dw IntroScene26 + dw IntroScene27 + dw IntroScene28 + + +NextIntroScene: ; e4956 (39:4956) + ld hl, wJumptableIndex + inc [hl] + ret + +IntroScene1: ; e495b (39:495b) +; Setup the next scene. + call Functione54a3 + call ClearSprites + call ClearTileMap + xor a + ld [hBGMapMode], a + ld a, $1 + ld [rVBK], a + ld hl, IntroTilemap001 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, $0 + ld [rVBK], a + ld hl, IntroUnownsGFX + ld de, VTiles2 tile $00 + call Functione54c2 + ld hl, IntroPulseGFX + ld de, VTiles0 tile $00 + call Functione54c2 + ld hl, IntroTilemap002 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, Palette_365ad + ld de, wMapPals + ld bc, $80 + call CopyBytes + ld hl, Palette_365ad + ld de, BGPals + ld bc, $80 + call CopyBytes + pop af + ld [rSVBK], a + xor a + ld [hSCX], a + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + callba Function8cf53 + call Functione549e + xor a + ld [wIntroSceneFrameCounter], a + ld [wcf65], a + call NextIntroScene + ret + +IntroScene2: ; e49d6 (39:49d6) +; First Unown (A) fades in, pulses, then fades out. + ld hl, wIntroSceneFrameCounter + ld a, [hl] + inc [hl] + cp $80 + jr nc, .endscene + cp $60 + jr nz, .DontPlaySound + push af + ld de, $5858 + call Functione51dc + ld de, SFX_INTRO_UNOWN_1 + call PlaySFX + pop af +.DontPlaySound + ld [wcf65], a + xor a + call Functione5223 + ret +.endscene + call NextIntroScene + ret + +IntroScene3: ; e49fd (39:49fd) +; More setup. Transition to the outdoor scene. + call Functione54a3 + call ClearSprites + call ClearTileMap + xor a + ld [hBGMapMode], a + ld a, $1 + ld [rVBK], a + ld hl, IntroTilemap003 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, $0 + ld [rVBK], a + ld hl, IntroBackgroundGFX + ld de, VTiles2 tile $00 + call Functione54c2 + ld hl, IntroTilemap004 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, Palette_e5edd + ld de, wMapPals + ld bc, $80 + call CopyBytes + ld hl, Palette_e5edd + ld de, BGPals + ld bc, $80 + call CopyBytes + pop af + ld [rSVBK], a + xor a + ld [hSCX], a + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + call Functione5516 + call Functione549e + xor a + ld [wIntroSceneFrameCounter], a + call NextIntroScene + ret + +IntroScene4: ; e4a69 (39:4a69) +; Scroll the outdoor panorama for a bit. + call Functione552f + ld hl, wIntroSceneFrameCounter + ld a, [hl] + cp $80 + jr z, .endscene + inc [hl] + ret +.endscene + call NextIntroScene + ret + +IntroScene5: ; e4a7a (39:4a7a) +; Go back to the Unown. + call Functione54a3 + call ClearSprites + call ClearTileMap + xor a + ld [hBGMapMode], a + ld [hLCDStatCustom], a + ld a, $1 + ld [rVBK], a + ld hl, IntroTilemap005 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, $0 + ld [rVBK], a + ld hl, IntroUnownsGFX + ld de, VTiles2 tile $00 + call Functione54c2 + ld hl, IntroPulseGFX + ld de, VTiles0 tile $00 + call Functione54c2 + ld hl, IntroTilemap006 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, Palette_365ad + ld de, wMapPals + ld bc, $80 + call CopyBytes + ld hl, Palette_365ad + ld de, BGPals + ld bc, $80 + call CopyBytes + pop af + ld [rSVBK], a + xor a + ld [hSCX], a + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + callba Function8cf53 + call Functione549e + xor a + ld [wcf64], a + ld [wcf65], a + call NextIntroScene + ret + +IntroScene6: ; e4af7 (39:4af7) +; Two more Unown (I, H) fade in. + ld hl, wcf64 + ld a, [hl] + inc [hl] + cp $80 + jr nc, .endscene + cp $60 + jr z, .SecondUnown + cp $40 + jr nc, .StopUnown + cp $20 + jr z, .FirstUnown + jr .NoUnown +.FirstUnown + push af + ld de, $3878 + call Functione51dc + ld de, SFX_INTRO_UNOWN_2 + call PlaySFX + pop af +.NoUnown + ld [wcf65], a + xor a + call Functione5223 + ret +.SecondUnown + push af + ld de, $7030 + call Functione51dc + ld de, SFX_INTRO_UNOWN_1 + call PlaySFX + pop af +.StopUnown + ld [wcf65], a + ld a, $1 + call Functione5223 + ret +.endscene + call NextIntroScene + ret + +IntroScene7: ; e4b3f (39:4b3f) +; Back to the outdoor scene. + call Functione54a3 + call ClearSprites + call ClearTileMap + xor a + ld [hBGMapMode], a + ld a, $1 + ld [rVBK], a + ld hl, IntroTilemap003 + ld de, VBGMap0 tile $00 + call Functione54fa + ld hl, IntroPichuWooperGFX + ld de, VTiles0 tile $00 + call Functione54c2 + ld a, $0 + ld [rVBK], a + ld hl, IntroSuicuneRunGFX + ld de, VTiles0 tile $00 + call Functione54de + ld hl, IntroBackgroundGFX + ld de, VTiles2 tile $00 + call Functione54c2 + ld hl, IntroTilemap004 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, Palette_e5edd + ld de, wMapPals + ld bc, $80 + call CopyBytes + ld hl, Palette_e5edd + ld de, BGPals + ld bc, $80 + call CopyBytes + pop af + ld [rSVBK], a + xor a + ld [hSCX], a + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + call Functione5516 + callba Function8cf53 + depixel 13, 27, 4, 0 + ld a, SPRITE_ANIM_INDEX_26 + call _InitSpriteAnimStruct + ld a, $f0 + ld [wc3c0], a + call Functione549e + xor a + ld [wIntroSceneFrameCounter], a + ld [wcf65], a + call NextIntroScene + ret + +IntroScene8: ; e4bd3 (39:4bd3) +; Scroll the scene, then show Suicune running across the screen. + ld hl, wIntroSceneFrameCounter + ld a, [hl] + inc [hl] + cp $40 + jr z, .asm_e4be2 + jr nc, .asm_e4be8 + call Functione552f + ret +.asm_e4be2 + ld de, SFX_INTRO_SUICUNE_3 + call PlaySFX +.asm_e4be8 + ld a, [wc3c0] + and a + jr z, .asm_e4bf4 + sub $8 + ld [wc3c0], a + ret +.asm_e4bf4 + ld de, SFX_INTRO_SUICUNE_2 + call PlaySFX + callba Function8d03d + call NextIntroScene + ret + +IntroScene9: ; e4c04 (39:4c04) +; Set up the next scene (same bg). + xor a + ld [hLCDStatCustom], a + call ClearSprites + hlcoord 0, 0, AttrMap + ld bc, $f0 + ld a, $1 + call ByteFill + ld bc, $3c + ld a, $2 + call ByteFill + ld bc, $3c + ld a, $3 + call ByteFill + ld a, $2 + ld [hBGMapMode], a + call DelayFrame + call DelayFrame + call DelayFrame + ld a, $c + ld [hBGMapAddress], a + call DelayFrame + call DelayFrame + call DelayFrame + xor a + ld [hBGMapMode], a + ld [hBGMapAddress], a + ld [wc3c0], a + xor a + ld [wcf64], a + call NextIntroScene + ret + +IntroScene10: ; e4c4f (39:4c4f) +; Wooper and Pichu enter. + call Functione546d + ld hl, wcf64 + ld a, [hl] + inc [hl] + cp $c0 + jr z, .done + cp $20 + jr z, .wooper + cp $40 + jr z, .pichu + ret + +.pichu + depixel 21, 16, 1, 0 + ld a, SPRITE_ANIM_INDEX_27 + call _InitSpriteAnimStruct + ld de, SFX_INTRO_PICHU + call PlaySFX + ret + +.wooper + depixel 22, 6 + ld a, SPRITE_ANIM_INDEX_28 + call _InitSpriteAnimStruct + ld de, SFX_INTRO_PICHU + call PlaySFX + ret +.done + call NextIntroScene + ret + +IntroScene11: ; e4c86 (39:4c86) +; Back to Unown again. + call Functione54a3 + call ClearSprites + call ClearTileMap + xor a + ld [hBGMapMode], a + ld [hLCDStatCustom], a + ld a, $1 + ld [rVBK], a + ld hl, IntroTilemap007 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, $0 + ld [rVBK], a + ld hl, IntroUnownsGFX + ld de, VTiles2 tile $00 + call Functione54c2 + ld hl, IntroTilemap008 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, Palette_365ad + ld de, wMapPals + ld bc, $80 + call CopyBytes + ld hl, Palette_365ad + ld de, BGPals + ld bc, $80 + call CopyBytes + pop af + ld [rSVBK], a + xor a + ld [hSCX], a + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + callba Function8cf53 + call Functione549e + xor a + ld [wIntroSceneFrameCounter], a + ld [wcf65], a + call NextIntroScene + ret + +IntroScene12: ; e4cfa (39:4cfa) +; Even more Unown. + call Functione4d36 + ld hl, wIntroSceneFrameCounter + ld a, [hl] + inc [hl] + cp $c0 + jr nc, .asm_e4d32 + cp $80 + jr nc, .asm_e4d1d + ld c, a + and $1f + sla a + ld [wcf65], a + ld a, c + and $e0 + srl a + swap a + call Functione5223 + ret +.asm_e4d1d + ld c, a + and $f + sla a + sla a + ld [wcf65], a + ld a, c + and $70 + or $40 + swap a + call Functione5223 + ret +.asm_e4d32 + call NextIntroScene + ret + +Functione4d36: ; e4d36 (39:4d36) + ld a, [wIntroSceneFrameCounter] + ld c, a + ld hl, .UnownSounds +.loop + ld a, [hli] + cp -1 + ret z + cp c + jr z, .playsound +rept 2 + inc hl +endr + jr .loop +.playsound + ld a, [hli] + ld d, [hl] + ld e, a + push de + call SFXChannelsOff + pop de + call PlaySFX + ret +; e4d54 (39:4d54) + +.UnownSounds: ; e4d54 + dbw $00, SFX_INTRO_UNOWN_3 + dbw $20, SFX_INTRO_UNOWN_2 + dbw $40, SFX_INTRO_UNOWN_1 + dbw $60, SFX_INTRO_UNOWN_2 + dbw $80, SFX_INTRO_UNOWN_3 + dbw $90, SFX_INTRO_UNOWN_2 + dbw $a0, SFX_INTRO_UNOWN_1 + dbw $b0, SFX_INTRO_UNOWN_2 + db $ff +; e4d6d + +IntroScene13: ; e4d6d (39:4d6d) +; Switch scenes again. + call Functione54a3 + call ClearSprites + call ClearTileMap + xor a + ld [hBGMapMode], a + ld a, $1 + ld [rVBK], a + ld hl, IntroTilemap003 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, $0 + ld [rVBK], a + ld hl, IntroSuicuneRunGFX + ld de, VTiles0 tile $00 + call Functione54de + ld hl, IntroBackgroundGFX + ld de, VTiles2 tile $00 + call Functione54c2 + ld hl, IntroTilemap004 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, Palette_e5edd + ld de, wMapPals + ld bc, $80 + call CopyBytes + ld hl, Palette_e5edd + ld de, BGPals + ld bc, $80 + call CopyBytes + pop af + ld [rSVBK], a + xor a + ld [hSCX], a + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + callba Function8cf53 + depixel 13, 11, 4, 0 + ld a, SPRITE_ANIM_INDEX_26 + call _InitSpriteAnimStruct + ld de, MUSIC_CRYSTAL_OPENING + call PlayMusic + xor a + ld [wc3c0], a + call Functione549e + xor a + ld [wcf64], a + ld [wcf65], a + call NextIntroScene + ret + +IntroScene14: ; e4dfa (39:4dfa) +; Suicune runs then jumps. + ld a, [hSCX] + sub 10 + ld [hSCX], a + ld hl, wcf64 + ld a, [hl] + inc [hl] + cp $80 + jr z, .done + cp $60 + jr z, .jump + jr nc, .asm_e4e1a + cp $40 + jr nc, .asm_e4e33 + ret + +.jump + ld de, SFX_INTRO_SUICUNE_4 + call PlaySFX + +.asm_e4e1a + ld a, $1 + ld [wcf65], a + ld a, [wc3c0] + cp $88 + jr c, .asm_e4e2c + sub $8 + ld [wc3c0], a + ret + +.asm_e4e2c + callba Function8d03d + ret + +.asm_e4e33 + ld a, [wc3c0] + sub $2 + ld [wc3c0], a + ret + +.done + call NextIntroScene + ret + +IntroScene15: ; e4e40 (39:4e40) +; Transition to a new scene. + call Functione54a3 + call ClearSprites + call ClearTileMap + xor a + ld [hBGMapMode], a + ld a, $1 + ld [rVBK], a + ld hl, IntroTilemap009 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, $0 + ld [rVBK], a + ld hl, IntroSuicuneJumpGFX + ld de, VTiles2 tile $00 + call Functione54c2 + ld hl, IntroUnownBackGFX + ld de, VTiles0 tile $00 + call Functione54c2 + ld de, GFX_e7a5d + ld hl, VTiles1 tile $00 + lb bc, BANK(GFX_e7a5d), 1 + call Request2bpp + ld hl, IntroTilemap010 + ld de, VBGMap0 tile $00 + call Functione54fa + call Functione541b + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, Palette_e77dd + ld de, wMapPals + ld bc, $80 + call CopyBytes + ld hl, Palette_e77dd + ld de, BGPals + ld bc, $80 + call CopyBytes + pop af + ld [rSVBK], a + xor a + ld [hSCX], a + ld a, $90 + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + callba Function8cf53 + call Functione549e + depixel 8, 5 + ld a, SPRITE_ANIM_INDEX_2A + call _InitSpriteAnimStruct + depixel 12, 0 + ld a, SPRITE_ANIM_INDEX_2B + call _InitSpriteAnimStruct + xor a + ld [wcf64], a + ld [wcf65], a + call NextIntroScene + ret + +IntroScene16: ; e4edc (39:4edc) +; Suicune shows its face. An Unown appears in front. + ld hl, wcf64 + ld a, [hl] + inc [hl] + cp $80 + jr nc, .done + call Functione5441 + ld a, [hSCY] + and a + ret z + add 8 + ld [hSCY], a + ret +.done + call NextIntroScene + ret + +IntroScene17: ; e4ef5 (39:4ef5) +; ... + call Functione54a3 + call ClearSprites + call ClearTileMap + xor a + ld [hBGMapMode], a + ld a, $1 + ld [rVBK], a + ld hl, IntroTilemap011 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, $0 + ld [rVBK], a + ld hl, IntroSuicuneCloseGFX + ld de, VTiles1 tile $00 + call Functione54de + ld hl, IntroTilemap012 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, Palette_e6d6d + ld de, wMapPals + ld bc, $80 + call CopyBytes + ld hl, Palette_e6d6d + ld de, BGPals + ld bc, $80 + call CopyBytes + pop af + ld [rSVBK], a + xor a + ld [hSCX], a + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + callba Function8cf53 + call Functione549e + xor a + ld [wcf64], a + ld [wcf65], a + call NextIntroScene + ret + +IntroScene18: ; e4f67 (39:4f67) +; Suicune close up. + ld hl, wcf64 + ld a, [hl] + inc [hl] + cp $60 + jr nc, .done + ld a, [hSCX] + cp $60 + ret z + add 8 + ld [hSCX], a + ret +.done + call NextIntroScene + ret + +IntroScene19: ; e4f7e (39:4f7e) +; More setup. + call Functione54a3 + call ClearSprites + call ClearTileMap + xor a + ld [hBGMapMode], a + ld a, $1 + ld [rVBK], a + ld hl, IntroTilemap013 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, $0 + ld [rVBK], a + ld hl, IntroSuicuneBackGFX + ld de, VTiles2 tile $00 + call Functione54c2 + ld hl, IntroUnownsGFX + ld de, VTiles1 tile $00 + call Functione54c2 + ld de, GFX_e7a5d + ld hl, VTiles1 tile $7f + lb bc, BANK(GFX_e7a5d), 1 + call Request2bpp + ld hl, IntroTilemap014 + ld de, VBGMap0 tile $00 + call Functione54fa + call Functione541b + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, Palette_e77dd + ld de, wMapPals + ld bc, $80 + call CopyBytes + ld hl, Palette_e77dd + ld de, BGPals + ld bc, $80 + call CopyBytes + pop af + ld [rSVBK], a + xor a + ld [hSCX], a + ld a, $d8 + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + callba Function8cf53 + ld hl, wc300 + xor a + ld [hli], a + ld [hl], $7f + call Functione549e + depixel 12, 0 + ld a, SPRITE_ANIM_INDEX_2B + call _InitSpriteAnimStruct + xor a + ld [wcf64], a + ld [wcf65], a + call NextIntroScene + ret + +IntroScene20: ; e5019 (39:5019) +; Suicune running away. A bunch of Unown appear. + ld hl, wcf64 + ld a, [hl] + inc [hl] + cp $98 + jr nc, .asm_e5059 + cp $58 + ret nc + cp $40 + jr nc, .asm_e5032 + cp $28 + ret nc + ld a, [hSCY] + inc a + ld [hSCY], a + ret + +.asm_e5032 + sub $18 + ld c, a + and $3 + cp $3 + ret nz + ld a, c + and $1c + srl a + srl a + ld [wcf65], a + xor a + call Functione5348 + ret +; e5049 (39:5049) + + ld a, c + and $1c + srl a + srl a + ld [wcf65], a + ld a, 1 + call Functione5348 + ret + +.asm_e5059 + call NextIntroScene + ret + +IntroScene21: ; e505d (39:505d) +; Suicune gets more distant and turns black. + call Functione5451 + ld c, 3 + call DelayFrames + xor a + ld [hBGMapMode], a + ld [wcf64], a + ld [wcf65], a + call NextIntroScene + ret + +IntroScene22: ; e5072 (39:5072) + ld hl, wcf64 + ld a, [hl] + inc [hl] + cp $8 + jr nc, .done + ret +.done + callba Function8d03d + call NextIntroScene + ret + +IntroScene23: ; e5086 (39:5086) + xor a + ld [wcf64], a + call NextIntroScene + ret + +IntroScene24: ; e508e (39:508e) +; Fade to white. + ld hl, wcf64 + ld a, [hl] + inc [hl] + cp $20 + jr nc, .done + + ld c, a + and $3 + ret nz + ld a, c + and $1c + sla a + call Functione5172 + ret + +.done + ld a, $40 + ld [wcf64], a + call NextIntroScene + ret + +IntroScene25: ; e50ad (39:50ad) +; Wait around a bit. + ld a, [wcf64] + dec a + jr z, .done + ld [wcf64], a + ret +.done + call NextIntroScene + ret + +IntroScene26: ; e50bb (39:50bb) +; Load the final scene. + call ClearBGPalettes + call ClearSprites + call ClearTileMap + xor a + ld [hBGMapMode], a + ld a, $1 + ld [rVBK], a + ld hl, IntroTilemap015 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, $0 + ld [rVBK], a + ld hl, IntroCrystalUnownsGFX + ld de, VTiles2 tile $00 + call Functione54c2 + ld hl, IntroTilemap017 + ld de, VBGMap0 tile $00 + call Functione54fa + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, Palette_e679d + ld de, wMapPals + ld bc, $80 + call CopyBytes + ld hl, Palette_e679d + ld de, BGPals + ld bc, $80 + call CopyBytes + pop af + ld [rSVBK], a + xor a + ld [hSCX], a + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + callba Function8cf53 + call Functione549e + xor a + ld [wcf64], a + ld [wcf65], a + call NextIntroScene + ret + +IntroScene27: ; e512d (39:512d) +; Spell out C R Y S T A L with Unown. + ld hl, wcf65 + inc [hl] + ld hl, wcf64 + ld a, [hl] + inc [hl] + cp $80 + jr nc, .done + + ld c, a + and $f + ld [wcf65], a + ld a, c + and $70 + swap a + call Functione539d + ret + +.done + call NextIntroScene + ld a, $80 + ld [wcf64], a + ret + +IntroScene28: ; e5152 (39:5152) +; Cut out when the music ends, and lead into the title screen. + ld hl, wcf64 + ld a, [hl] + and a + jr z, .done + dec [hl] + cp $18 + jr z, .clear + cp $8 + ret nz + + ld de, SFX_UNKNOWN_CB + call PlaySFX + ret + +.clear + call ClearBGPalettes + ret + +.done + ld hl, wJumptableIndex + set 7, [hl] + ret + + +Functione5172: ; e5172 (39:5172) + ld hl, Unknown_e519c + add l + ld l, a + ld a, $0 + adc h + ld h, a + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld de, BGPals + ld b, $8 +.asm_e5187 + push hl + ld c, $8 +.asm_e518a + ld a, [hli] + ld [de], a + inc de + dec c + jr nz, .asm_e518a + pop hl + dec b + jr nz, .asm_e5187 + pop af + ld [rSVBK], a + ld a, $1 + ld [hCGBPalUpdate], a + ret +; e519c (39:519c) + +Unknown_e519c: ; e519c +; Fade to white. + RGB 24, 12, 09 + RGB 31, 31, 31 + RGB 12, 00, 31 + RGB 00, 00, 00 + + RGB 31, 19, 05 + RGB 31, 31, 31 + RGB 15, 05, 31 + RGB 07, 07, 07 + + RGB 31, 21, 09 + RGB 31, 31, 31 + RGB 18, 09, 31 + RGB 11, 11, 11 + + RGB 31, 23, 13 + RGB 31, 31, 31 + RGB 21, 13, 31 + RGB 15, 15, 15 + + RGB 31, 25, 17 + RGB 31, 31, 31 + RGB 25, 17, 31 + RGB 19, 19, 19 + + RGB 31, 27, 21 + RGB 31, 31, 31 + RGB 27, 21, 31 + RGB 23, 23, 23 + + RGB 31, 29, 25 + RGB 31, 31, 31 + RGB 29, 26, 31 + RGB 27, 27, 27 + + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 +; e51dc + +Functione51dc: ; e51dc (39:51dc) + push de + ld a, SPRITE_ANIM_INDEX_29 + call _InitSpriteAnimStruct + ld hl, $c + add hl, bc + ld [hl], $8 + ld a, $3c + call Function3b3c + pop de + + push de + ld a, SPRITE_ANIM_INDEX_29 + call _InitSpriteAnimStruct + ld hl, $c + add hl, bc + ld [hl], $18 + ld a, $3b + call Function3b3c + pop de + + push de + ld a, SPRITE_ANIM_INDEX_29 + call _InitSpriteAnimStruct + ld hl, $c + add hl, bc + ld [hl], $28 + ld a, $39 + call Function3b3c + pop de + + ld a, SPRITE_ANIM_INDEX_29 + call _InitSpriteAnimStruct + ld hl, $c + add hl, bc + ld [hl], $38 + ld a, $3a + call Function3b3c + ret + +Functione5223: ; e5223 (39:5223) +rept 3 + add a +endr + ld e, a + ld d, $0 + ld hl, BGPals + add hl, de +rept 2 + inc hl +endr + ld a, [wcf65] + and $3f + cp $1f + jr z, .asm_e523e + jr c, .asm_e523e + ld c, a + ld a, $3f + sub c +.asm_e523e + ld c, a + ld b, $0 + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + push hl + push bc + ld hl, BGPals + ld bc, $40 + xor a + call ByteFill + pop bc + pop hl + push hl + ld hl, Unknown_e5288 +rept 2 + add hl, bc +endr + ld a, [hli] + ld d, [hl] + ld e, a + pop hl + ld a, e + ld [hli], a + ld a, d + ld [hli], a + push hl + ld hl, Unknown_e52c8 +rept 2 + add hl, bc +endr + ld a, [hli] + ld d, [hl] + ld e, a + pop hl + ld a, e + ld [hli], a + ld a, d + ld [hli], a + push hl + ld hl, Unknown_e5308 +rept 2 + add hl, bc +endr + ld a, [hli] + ld d, [hl] + ld e, a + pop hl + ld a, e + ld [hli], a + ld a, d + ld [hli], a + pop af + ld [rSVBK], a + ld a, $1 + ld [hCGBPalUpdate], a + ret +; e5288 (39:5288) + +Unknown_e5288: ; e5288 +; Fade between black and white. +hue = 0 +rept 32 + RGB hue, hue, hue +hue = hue + 1 +endr +; e52c8 + +Unknown_e52c8: ; e52c8 +; Fade between black and light blue. +hue = 0 +rept 32 + RGB 0, hue / 2, hue +hue = hue + 1 +endr +; e5308 + +Unknown_e5308: ; e5308 +; Fade between black and blue. +hue = 0 +rept 32 + RGB 0, 0, hue +hue = hue + 1 +endr +; e5348 + +Functione5348: ; e5348 (39:5348) + and a + jr nz, .asm_e5350 + ld hl, Palette_e538d + jr .asm_e5353 +.asm_e5350 + ld hl, Palette_e5395 +.asm_e5353 + ld a, [wcf65] + and $7 +rept 3 + add a +endr + ld c, a + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + push bc + ld de, BGPals + ld a, c + add e + ld e, a + ld a, $0 + adc d + ld d, a + ld bc, $8 + call CopyBytes + pop bc + ld de, wMapPals + ld a, c + add e + ld e, a + ld a, $0 + adc d + ld d, a + ld bc, $8 + call CopyBytes + pop af + ld [rSVBK], a + ld a, $1 + ld [hCGBPalUpdate], a + ret +; e538d (39:538d) + +Palette_e538d: ; e538d + RGB 24, 12, 09 + RGB 31, 31, 31 + RGB 12, 00, 31 + RGB 00, 00, 00 +; e5395 + +Palette_e5395: ; e5395 + RGB 24, 12, 09 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 +; e539d + +Functione539d: ; e539d (39:539d) +rept 3 + add a +endr + ld e, a + ld d, $0 + ld hl, BGPals + add hl, de +rept 4 + inc hl +endr + ld a, [wcf65] + add a + ld c, a + ld b, $0 + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + push hl + ld hl, Palette_e53db + add hl, bc + ld a, [hli] + ld d, [hl] + ld e, a + pop hl + ld a, e + ld [hli], a + ld a, d + ld [hli], a + push hl + ld hl, Palette_e53fb + add hl, bc + ld a, [hli] + ld d, [hl] + ld e, a + pop hl + ld a, e + ld [hli], a + ld a, d + ld [hli], a + pop af + ld [rSVBK], a + ld a, $1 + ld [hCGBPalUpdate], a + ret +; e53db (39:53db) + +Palette_e53db: ; e53db +hue = 31 +rept 8 + RGB hue, hue, hue +hue = hue + -1 + RGB hue, hue, hue +hue = hue + -2 +endr +; e53fb + +Palette_e53fb: ; e53fb +hue = 31 +rept 16 + RGB hue, hue, hue +hue = hue + -1 +endr +; e541b + +Functione541b: ; e541b (39:541b) + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + ld hl, w6_d000 + decoord 0, 0 + ld b, SCREEN_HEIGHT +.asm_e542a + ld c, SCREEN_WIDTH +.asm_e542c + ld a, [hli] + ld [de], a + inc de + dec c + jr nz, .asm_e542c + ld a, $c + add l + ld l, a + ld a, $0 + adc h + ld h, a + dec b + jr nz, .asm_e542a + pop af + ld [rSVBK], a + ret + +Functione5441: ; e5441 (39:5441) + ld a, [wcf64] + and $3 + jr z, Functione5451 + cp $3 + jr z, .asm_e544d + ret +.asm_e544d + xor a + ld [hBGMapMode], a + ret + +Functione5451: ; e5451 (39:5451) + hlcoord 0, 0 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH +.asm_e5457 + ld a, [hl] + and a + jr z, .asm_e5462 + cp $80 + jr nc, .asm_e5462 + xor $8 + ld [hl], a +.asm_e5462 + inc hl + dec bc + ld a, c + or b + jr nz, .asm_e5457 + ld a, $1 + ld [hBGMapMode], a + ret + +Functione546d: ; e546d (39:546d) + ld a, [wcf64] + cp $24 + ret nc + and $c + srl a + ld e, a + ld d, $0 + ld hl, Unknown_e5496 + add hl, de + ld a, [hli] + ld [Requested2bppSource], a + ld a, [hli] + ld [Requested2bppSource + 1], a + ld a, (VTiles2 tile $09) % $100 + ld [Requested2bppDest], a + ld a, (VTiles2 tile $09) / $100 + ld [Requested2bppDest + 1], a + ld a, $4 + ld [Requested2bpp], a + ret +; e5496 (39:5496) + +Unknown_e5496: ; e5496 + dw GFX_e799d + dw GFX_e79dd + dw GFX_e7a1d + dw GFX_e79dd +; e549e + +Functione549e: ; e549e (39:549e) + ld a, $1 + ld [hCGBPalUpdate], a + ret + +Functione54a3: ; e54a3 (39:54a3) + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, BGPals + ld bc, $80 + xor a + call ByteFill + pop af + ld [rSVBK], a + ld a, $1 + ld [hCGBPalUpdate], a + call DelayFrame + call DelayFrame + ret + +Functione54c2: ; e54c2 (39:54c2) + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + push de + ld de, w6_d000 + call Decompress + pop hl + ld de, w6_d000 + ld bc, $180 + call Request2bpp + pop af + ld [rSVBK], a + ret + +Functione54de: ; e54de (39:54de) + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + push de + ld de, w6_d000 + call Decompress + pop hl + ld de, w6_d000 + ld bc, $1ff + call Request2bpp + pop af + ld [rSVBK], a + ret + +Functione54fa: ; e54fa (39:54fa) + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + push de + ld de, w6_d000 + call Decompress + pop hl + ld de, w6_d000 + ld bc, $140 + call Request2bpp + pop af + ld [rSVBK], a + ret + +Functione5516: ; e5516 (39:5516) + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, LYOverrides + ld bc, $90 + xor a + call ByteFill + pop af + ld [rSVBK], a + ld a, $43 + ld [hLCDStatCustom], a + ret + +Functione552f: ; e552f (39:552f) + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld a, [wcf64] + and $1 + jr z, .asm_e5548 + ld hl, LYOverrides + ld a, [hl] + inc a + ld bc, $5f + call ByteFill +.asm_e5548 + ld hl, LYOverrides + $5f + ld a, [hl] +rept 2 + inc a +endr + ld bc, $31 + call ByteFill + ld a, [LYOverrides + 0] + ld [hSCX], a + pop af + ld [rSVBK], a + ret + +IntroSuicuneRunGFX: ; e555d +INCBIN "gfx/intro/suicune_run.2bpp.lz" +; e592d + +IntroPichuWooperGFX: ; e592d +INCBIN "gfx/intro/pichu_wooper.2bpp.lz" +; e5c7d + +IntroBackgroundGFX: ; e5c7d +INCBIN "gfx/intro/background.2bpp.lz" +; e5e6d + +IntroTilemap004: ; e5e6d +INCBIN "gfx/intro/004.tilemap.lz" +; e5ecd + +IntroTilemap003: ; e5ecd +INCBIN "gfx/intro/003.tilemap.lz" +; e5edd + +Palette_e5edd: ; e5edd + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 0, 4, 5 + RGB 1, 8, 5 + RGB 4, 12, 9 + RGB 24, 12, 9 + RGB 0, 4, 5 + RGB 9, 6, 8 + RGB 8, 16, 5 + RGB 5, 10, 4 + RGB 31, 31, 31 + RGB 9, 6, 8 + RGB 18, 9, 9 + RGB 13, 8, 9 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 2, 5, 22 + RGB 1, 5, 12 + RGB 31, 31, 31 + RGB 31, 10, 25 + RGB 31, 21, 0 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 21, 31 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + +IntroUnownsGFX: ; e5f5d +INCBIN "gfx/intro/unowns.2bpp.lz" +; e634d + +IntroPulseGFX: ; e634d +INCBIN "gfx/intro/pulse.2bpp.lz" +; e63dd + +IntroTilemap002: ; e63dd +INCBIN "gfx/intro/002.tilemap.lz" +; e641d + +IntroTilemap001: ; e641d +INCBIN "gfx/intro/001.tilemap.lz" +; e642d + +IntroTilemap006: ; e642d +INCBIN "gfx/intro/006.tilemap.lz" +; e647d + +IntroTilemap005: ; e647d +INCBIN "gfx/intro/005.tilemap.lz" +; e649d + +IntroTilemap008: ; e649d +INCBIN "gfx/intro/008.tilemap.lz" +; e655d + +IntroTilemap007: ; e655d +INCBIN "gfx/intro/007.tilemap.lz" +; e65ad + +Palette_365ad: ; e65ad + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 10, 0, 10 + RGB 19, 0, 19 + RGB 31, 0, 31 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + +IntroCrystalUnownsGFX: ; e662d +INCBIN "gfx/intro/crystal_unowns.2bpp.lz" +; e672d + +IntroTilemap017: ; e672d +INCBIN "gfx/intro/017.tilemap.lz" +; e676d + +IntroTilemap015: ; e676d +INCBIN "gfx/intro/015.tilemap.lz" +; e679d + +Palette_e679d: ; e679d + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + +IntroSuicuneCloseGFX: ; e681d +INCBIN "gfx/intro/suicune_close.2bpp.lz" +; e6c3d + +IntroTilemap012: ; e6c3d +INCBIN "gfx/intro/012.tilemap.lz" +; e6d0d + +IntroTilemap011: ; e6d0d +INCBIN "gfx/intro/011.tilemap.lz" +; e6d6d + +Palette_e6d6d: ; e6d6d + RGB 24, 12, 9 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 24, 12, 9 + RGB 31, 31, 31 + RGB 8, 9, 31 + RGB 0, 0, 0 + RGB 24, 12, 9 + RGB 12, 20, 31 + RGB 19, 8, 31 + RGB 0, 0, 0 + RGB 12, 20, 31 + RGB 8, 9, 31 + RGB 19, 8, 31 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 12, 20, 31 + RGB 8, 9, 31 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + +IntroSuicuneJumpGFX: ; e6ded +INCBIN "gfx/intro/suicune_jump.2bpp.lz" +; e72ad + +IntroSuicuneBackGFX: ; e72ad +INCBIN "gfx/intro/suicune_back.2bpp.lz" +; e764d + +IntroTilemap010: ; e764d +INCBIN "gfx/intro/010.tilemap.lz" +; e76ad + +IntroTilemap009: ; e76ad +INCBIN "gfx/intro/009.tilemap.lz" +; e76bd + +IntroTilemap014: ; e76bd +INCBIN "gfx/intro/014.tilemap.lz" +; e778d + +IntroTilemap013: ; e778d +INCBIN "gfx/intro/013.tilemap.lz" +; e77dd + +Palette_e77dd: ; e77dd + RGB 24, 12, 9 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 24, 12, 9 + RGB 31, 31, 31 + RGB 8, 9, 31 + RGB 0, 0, 0 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 24, 12, 9 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 12, 0, 31 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 21, 9, 0 + RGB 21, 9, 0 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + RGB 31, 31, 31 + RGB 20, 20, 20 + RGB 11, 11, 11 + RGB 0, 0, 0 + +IntroUnownBackGFX: ; e785d +INCBIN "gfx/intro/unown_back.2bpp.lz" +; e799d + +GFX_e799d: ; e799d +INCBIN "gfx/unknown/0e799d.2bpp" +GFX_e79dd: ; e79dd +INCBIN "gfx/unknown/0e79dd.2bpp" +GFX_e7a1d: ; e7a1d +INCBIN "gfx/unknown/0e7a1d.2bpp" + +GFX_e7a5d: ; e7a5d +INCBIN "gfx/unknown/0e7a5d.2bpp" + + diff --git a/engine/debug.asm b/engine/debug.asm new file mode 100755 index 000000000..913ea0a8d --- /dev/null +++ b/engine/debug.asm @@ -0,0 +1,1517 @@ +ColorTest: ; 818ac +; A debug menu to test monster and trainer palettes at runtime. + + ld a, [hCGB] + and a + jr nz, .asm_818b5 + ld a, [hSGB] + and a + ret z + +.asm_818b5 + ld a, [hInMenu] + push af + ld a, $1 + ld [hInMenu], a + call DisableLCD + call Function81948 + call Function8197c + call Function819a7 + call Function818f4 + call EnableLCD + ld de, MUSIC_NONE + call PlayMusic + xor a + ld [wJumptableIndex], a + ld [wcf66], a + ld [wd003], a +.asm_818de + ld a, [wJumptableIndex] + bit 7, a + jr nz, .asm_818f0 + call Function81a74 + call Function81f5e + call DelayFrame + jr .asm_818de + +.asm_818f0 + pop af + ld [hInMenu], a + ret +; 818f4 + +Function818f4: ; 818f4 + ld a, [wd002] + and a + jr nz, Function81911 + ld hl, PokemonPalettes + +Function818fd: ; 818fd + ld de, OverworldMap + ld c, NUM_POKEMON + 1 +.asm_81902 + push bc + push hl + call Function81928 + pop hl + ld bc, 8 + add hl, bc + pop bc + dec c + jr nz, .asm_81902 + ret + +Function81911: ; 81911 + ld hl, TrainerPalettes + ld de, OverworldMap + ld c, NUM_TRAINER_CLASSES +.asm_81919 + push bc + push hl + call Function81928 + pop hl + ld bc, 4 + add hl, bc + pop bc + dec c + jr nz, .asm_81919 + ret +; 81928 + +Function81928: ; 81928 + ld a, BANK(PokemonPalettes) ; BANK(TrainerPalettes) + call GetFarByte + ld [de], a + inc de + inc hl + ld a, BANK(PokemonPalettes) ; BANK(TrainerPalettes) + call GetFarByte + ld [de], a + inc de + inc hl + ld a, BANK(PokemonPalettes) ; BANK(TrainerPalettes) + call GetFarByte + ld [de], a + inc de + inc hl + ld a, BANK(PokemonPalettes) ; BANK(TrainerPalettes) + call GetFarByte + ld [de], a + inc de + ret +; 81948 + +Function81948: ; 81948 + ld a, $1 + ld [rVBK], a + ld hl, VTiles0 + ld bc, sScratch - VTiles0 + xor a + call ByteFill + ld a, $0 + ld [rVBK], a + ld hl, VTiles0 + ld bc, sScratch - VTiles0 + xor a + call ByteFill + hlcoord 0, 0, AttrMap + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + xor a + call ByteFill + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + xor a + call ByteFill + call ClearSprites + ret +; 8197c + +Function8197c: ; 8197c + ld hl, DebugColorTestGFX + $10 + ld de, VTiles2 tile $6a + ld bc, $160 + call CopyBytes + ld hl, DebugColorTestGFX + ld de, VTiles0 + ld bc, $10 + call CopyBytes + call LoadStandardFont + ld hl, VTiles1 + lb bc, 8, 0 +.asm_8199d + ld a, [hl] + xor $ff + ld [hli], a + dec bc + ld a, c + or b + jr nz, .asm_8199d + ret +; 819a7 + +Function819a7: ; 819a7 + ld a, [hCGB] + and a + ret z + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, Palette_819f4 + ld de, BGPals + ld bc, $80 + call CopyBytes + ld a, $80 + ld [rBGPI], a + ld hl, Palette_819f4 + ld c, $40 + xor a +.asm_819c8 + ld [rBGPD], a + dec c + jr nz, .asm_819c8 + ld a, $80 + ld [rOBPI], a + ld hl, Palette_81a34 + ld c, $40 +.asm_819d6 + ld a, [hli] + ld [rOBPD], a + dec c + jr nz, .asm_819d6 + ld a, $94 + ld [wc608], a + ld a, $52 + ld [wc608 + 1], a + ld a, $4a + ld [wc608 + 2], a + ld a, $29 + ld [wc608 + 3], a + pop af + ld [rSVBK], a + ret +; 819f4 + +Palette_819f4: ; 819f4 + ; white + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 00, 00, 00 + + ; red + RGB 31, 00, 00 + RGB 31, 00, 00 + RGB 31, 00, 00 + RGB 00, 00, 00 + + ; green + RGB 00, 31, 00 + RGB 00, 31, 00 + RGB 00, 31, 00 + RGB 00, 00, 00 + + ; blue + RGB 00, 00, 31 + RGB 00, 00, 31 + RGB 00, 00, 31 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 00, 00, 00 + +Palette_81a34: ; 81a34 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 31, 31, 31 + RGB 00, 00, 00 + + ; red + RGB 31, 31, 31 + RGB 31, 00, 00 + RGB 31, 00, 00 + RGB 00, 00, 00 + + ; green + RGB 31, 31, 31 + RGB 00, 31, 00 + RGB 00, 31, 00 + RGB 00, 00, 00 + + ; blue + RGB 31, 31, 31 + RGB 00, 00, 31 + RGB 00, 00, 31 + RGB 00, 00, 00 +; 81a74 + +Function81a74: ; 81a74 + call JoyTextDelay + ld a, [wJumptableIndex] + cp $4 + jr nc, .asm_81a8b + ld hl, hJoyLast + ld a, [hl] + and SELECT + jr nz, .asm_81a9a + ld a, [hl] + and START + jr nz, .asm_81aab + +.asm_81a8b + ld a, [wJumptableIndex] + ld e, a + ld d, 0 + ld hl, Jumptable_81acf +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +.asm_81a9a + call Function81eca + call Function81ac3 + ld e, a + ld a, [wcf66] + inc a + cp e + jr c, .asm_81aba + xor a + jr .asm_81aba + +.asm_81aab + call Function81eca + ld a, [wcf66] + dec a + cp $ff + jr nz, .asm_81aba + call Function81ac3 + dec a + +.asm_81aba + ld [wcf66], a + ld a, $0 + ld [wJumptableIndex], a + ret +; 81ac3 + +Function81ac3: ; 81ac3 +; Looping back around the pic set. + ld a, [wd002] + and a + jr nz, .asm_81acc + ld a, NUM_POKEMON ; CELEBI + ret + +.asm_81acc + ld a, NUM_TRAINER_CLASSES - 1 ; MYSTICALMAN + ret +; 81acf + +Jumptable_81acf: ; 81acf + dw Function81adb + dw Function81c18 + dw Function81c33 + dw Function81cc2 + dw Function81d8e + dw Function81daf +; 81adb + +Function81adb: ; 81adb + xor a + ld [hBGMapMode], a + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, $6f + call ByteFill + hlcoord 1, 3 + lb bc, 7, 18 + ld a, $6c + call Bank20_FillBoxWithByte + hlcoord 11, 0 + lb bc, 2, 3 + ld a, $6d + call Bank20_FillBoxWithByte + hlcoord 16, 0 + lb bc, 2, 3 + ld a, $6e + call Bank20_FillBoxWithByte + call Function81bc0 + call Function81bf4 + ld a, [wcf66] + inc a + ld [CurPartySpecies], a + ld [wd265], a + hlcoord 0, 1 + ld de, wd265 + lb bc, PRINTNUM_LEADINGZEROS | 1, 3 + call PrintNum + ld a, [wd002] + and a + jr nz, .asm_81b7a + ld a, $1 + ld [UnownLetter], a + call GetPokemonName + hlcoord 4, 1 + call PlaceString + xor a + ld [wc2c6], a + hlcoord 12, 3 + call _PrepMonFrontpic + ld de, VTiles2 tile $31 + predef GetBackpic + ld a, $31 + ld [hFillBox], a + hlcoord 2, 4 + lb bc, 6, 6 + predef FillBox + ld a, [wd003] + and a + jr z, .asm_81b66 + ld de, String_81baf + jr .asm_81b69 + +.asm_81b66 + ld de, String_81bb4 + +.asm_81b69 + hlcoord 7, 17 + call PlaceString + hlcoord 0, 17 + ld de, String_81bb9 + call PlaceString + jr .asm_81ba9 + +.asm_81b7a + ld a, [wd265] + ld [TrainerClass], a + callab Function3957b + ld de, StringBuffer1 + hlcoord 4, 1 + call PlaceString + ld de, VTiles2 + callab GetTrainerPic + xor a + ld [TempEnemyMonSpecies], a + ld [hFillBox], a + hlcoord 2, 3 + lb bc, 7, 7 + predef FillBox + +.asm_81ba9 + ld a, $1 + ld [wJumptableIndex], a + ret +; 81baf + +String_81baf: db "レア", $6f, $6f, "@" ; rare (shiny) +String_81bb4: db "ノーマル@" ; normal +String_81bb9: db $7a, "きりかえ▶@" ; (A) switches +; 81bc0 + +Function81bc0: ; 81bc0 + decoord 0, 11, AttrMap + hlcoord 2, 11 + ld a, $1 + call Function81bde + decoord 0, 13, AttrMap + hlcoord 2, 13 + ld a, $2 + call Function81bde + decoord 0, 15, AttrMap + hlcoord 2, 15 + ld a, $3 + +Function81bde: ; 81bde + push af + ld a, $6a + ld [hli], a + ld bc, $f + ld a, $6b + call ByteFill + ld l, e + ld h, d + pop af + ld bc, $28 + call ByteFill + ret +; 81bf4 + +Function81bf4: ; 81bf4 + ld a, [wcf66] + inc a + ld l, a + ld h, $0 +rept 2 + add hl, hl +endr + ld de, OverworldMap + add hl, de + ld de, wc608 + ld bc, 4 + call CopyBytes + xor a + ld [wcf64], a + ld [wcf65], a + ld de, wc608 + call Function81ea5 + ret +; 81c18 + +Function81c18: ; 81c18 + ld a, [hCGB] + and a + jr z, .asm_81c2a + ld a, $2 + ld [hBGMapMode], a + call DelayFrame + call DelayFrame + call DelayFrame + +.asm_81c2a + call WaitBGMap + ld a, $2 + ld [wJumptableIndex], a + ret +; 81c33 + +Function81c33: ; 81c33 + ld a, [hCGB] + and a + jr z, .asm_81c69 + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, BGPals + ld de, wc608 + ld c, $1 + call Function81ee3 + hlcoord 10, 2 + ld de, wc608 + call Function81ca7 + hlcoord 15, 2 + ld de, wc608 + 2 + call Function81ca7 + ld a, $1 + ld [hCGBPalUpdate], a + ld a, $3 + ld [wJumptableIndex], a + pop af + ld [rSVBK], a + ret + +.asm_81c69 + ld hl, wcda9 + ld a, $1 + ld [hli], a + ld a, $ff + ld [hli], a + ld a, $7f + ld [hli], a + ld a, [wc608] + ld [hli], a + ld a, [wc608 + 1] + ld [hli], a + ld a, [wc608 + 2] + ld [hli], a + ld a, [wc608 + 3] + ld [hli], a + xor a +rept 2 + ld [hli], a +endr + ld [hl], a + ld hl, wcda9 + call Function81f0c + hlcoord 10, 2 + ld de, wc608 + call Function81ca7 + hlcoord 15, 2 + ld de, wc608 + 2 + call Function81ca7 + ld a, $3 + ld [wJumptableIndex], a + ret +; 81ca7 + +Function81ca7: ; 81ca7 +rept 3 + inc hl +endr + ld a, [de] + call Function81cbc + ld a, [de] + swap a + call Function81cbc + inc de + ld a, [de] + call Function81cbc + ld a, [de] + swap a + +Function81cbc: ; 81cbc + and $f + add $70 + ld [hld], a + ret +; 81cc2 + +Function81cc2: ; 81cc2 + ld a, [hJoyLast] + and B_BUTTON + jr nz, .asm_81cdf + ld a, [hJoyLast] + and A_BUTTON + jr nz, .asm_81ce5 + ld a, [wcf64] + and $3 + ld e, a + ld d, 0 + ld hl, Jumptable_81d02 +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +.asm_81cdf + ld a, $4 + ld [wJumptableIndex], a + ret + +.asm_81ce5 + ld a, [wd002] + and a + ret nz + ld a, [wd003] + xor $4 + ld [wd003], a + ld c, a + ld b, 0 + ld hl, PokemonPalettes + add hl, bc + call Function818fd + ld a, $0 + ld [wJumptableIndex], a + ret +; 81d02 + +Jumptable_81d02: ; 81d02 + dw Function81d0a + dw Function81d34 + dw Function81d46 + dw Function81d58 +; 81d0a + +Function81d0a: ; 81d0a + ld hl, hJoyLast + ld a, [hl] + and D_DOWN + jr nz, Function81d89 + ld a, [hl] + and D_LEFT + jr nz, .asm_81d1d + ld a, [hl] + and D_RIGHT + jr nz, .asm_81d28 + ret + +.asm_81d1d + xor a + ld [wcf65], a + ld de, wc608 + call Function81ea5 + ret + +.asm_81d28 + ld a, $1 + ld [wcf65], a + ld de, wc608 + 2 + call Function81ea5 + ret + +Function81d34: ; 81d34 + ld hl, hJoyLast + ld a, [hl] + and D_DOWN + jr nz, Function81d89 + ld a, [hl] + and D_UP + jr nz, Function81d84 + ld hl, wc608 + 10 + jr Function81d63 + +Function81d46: ; 81d46 + ld hl, hJoyLast + ld a, [hl] + and D_DOWN + jr nz, Function81d89 + ld a, [hl] + and D_UP + jr nz, Function81d84 + ld hl, wc608 + 11 + jr Function81d63 + +Function81d58: ; 81d58 + ld hl, hJoyLast + ld a, [hl] + and D_UP + jr nz, Function81d84 + ld hl, wc608 + 12 + +Function81d63: ; 81d63 + ld a, [hJoyLast] + and D_RIGHT + jr nz, Function81d70 + ld a, [hJoyLast] + and D_LEFT + jr nz, Function81d77 + ret + +Function81d70: ; 81d70 + ld a, [hl] + cp $1f + ret nc + inc [hl] + jr Function81d7b + +Function81d77: ; 81d77 + ld a, [hl] + and a + ret z + dec [hl] + +Function81d7b: ; 81d7b + call Function81e67 + ld a, $2 + ld [wJumptableIndex], a + ret + +Function81d84: ; 81d84 + ld hl, wcf64 + dec [hl] + ret + +Function81d89: ; 81d89 + ld hl, wcf64 + inc [hl] + ret +; 81d8e + +Function81d8e: ; 81d8e + hlcoord 0, 10 + ld bc, $a0 + ld a, $6f + call ByteFill + hlcoord 2, 12 + ld de, String_81fcd + call PlaceString + xor a + ld [wd004], a + call Function81df4 + ld a, $5 + ld [wJumptableIndex], a + ret +; 81daf + +Function81daf: ; 81daf + ld hl, hJoyPressed + ld a, [hl] + and B_BUTTON + jr nz, .asm_81dbb + call Function81dc7 + ret + +.asm_81dbb + ld a, $0 + ld [wJumptableIndex], a + ret +; 81dc1 + +Function81dc1: ; 81dc1 + ld hl, wJumptableIndex + set 7, [hl] + ret +; 81dc7 + +Function81dc7: ; 81dc7 + ld hl, hJoyLast + ld a, [hl] + and D_UP + jr nz, .asm_81dd5 + ld a, [hl] + and D_DOWN + jr nz, .asm_81de2 + ret + +.asm_81dd5 + ld a, [wd004] + cp $3b + jr z, .asm_81ddf + inc a + jr .asm_81ded + +.asm_81ddf + xor a + jr .asm_81ded + +.asm_81de2 + ld a, [wd004] + and a + jr z, .asm_81deb + dec a + jr .asm_81ded + +.asm_81deb + ld a, $3b + +.asm_81ded + ld [wd004], a + call Function81df4 + ret +; 81df4 + +Function81df4: ; 81df4 + hlcoord 10, 11 + call Function81e5e + hlcoord 10, 12 + call Function81e5e + hlcoord 10, 13 + call Function81e5e + hlcoord 10, 14 + call Function81e5e + ld a, [wd004] + inc a + ld [wd265], a + predef GetTMHMMove + ld a, [wd265] + ld [wd262], a + call GetMoveName + hlcoord 10, 12 + call PlaceString + ld a, [wd004] + call Function81e55 + ld [CurItem], a + predef CanLearnTMHMMove + ld a, c + and a + ld de, String_81e46 + jr nz, .asm_81e3f + ld de, String_81e4d + +.asm_81e3f + hlcoord 10, 14 + call PlaceString + ret +; 81e46 + +String_81e46: db "おぼえられる@" ; can be taught +String_81e4d: db "おぼえられない@" ; cannot be taught +; 81e55 + +Function81e55: ; 81e55 + cp $32 + jr c, .asm_81e5b +rept 2 + inc a +endr + +.asm_81e5b + add $bf + ret +; 81e5e + +Function81e5e: ; 81e5e + ld bc, $a + ld a, $6f + call ByteFill + ret +; 81e67 + +Function81e67: ; 81e67 + ld a, [wc608 + 10] + and $1f + ld e, a + ld a, [wc608 + 11] + and $7 + sla a + swap a + or e + ld e, a + ld a, [wc608 + 11] + and $18 + sla a + swap a + ld d, a + ld a, [wc608 + 12] + and $1f + sla a + sla a + or d + ld d, a + ld a, [wcf65] + and a + jr z, .asm_81e9c + ld a, e + ld [wc608 + 2], a + ld a, d + ld [wc608 + 3], a + ret + +.asm_81e9c + ld a, e + ld [wc608], a + ld a, d + ld [wc608 + 1], a + ret +; 81ea5 + +Function81ea5: ; 81ea5 + ld a, [de] + and $1f + ld [wc608 + 10], a + ld a, [de] + and $e0 + swap a + srl a + ld b, a + inc de + ld a, [de] + and $3 + swap a + srl a + or b + ld [wc608 + 11], a + ld a, [de] + and $7c + srl a + srl a + ld [wc608 + 12], a + ret +; 81eca + +Function81eca: ; 81eca + ld a, [wcf66] + inc a + ld l, a + ld h, $0 +rept 2 + add hl, hl +endr + ld de, OverworldMap + add hl, de + ld e, l + ld d, h + ld hl, wc608 + ld bc, 4 + call CopyBytes + ret +; 81ee3 + +Function81ee3: ; 81ee3 +.asm_81ee3 + ld a, $ff + ld [hli], a + ld a, $7f + ld [hli], a + ld a, [de] + inc de + ld [hli], a + ld a, [de] + inc de + ld [hli], a + ld a, [de] + inc de + ld [hli], a + ld a, [de] + inc de + ld [hli], a + xor a +rept 2 + ld [hli], a +endr + dec c + jr nz, .asm_81ee3 + ret +; 81efc + +Bank20_FillBoxWithByte: ; 81efc +; For some reason, we have another copy of FillBoxWithByte here +.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 +; 81f0c + +Function81f0c: ; 81f0c + ld a, [wcfbe] + push af + set 7, a + ld [wcfbe], a + call Function81f1d + pop af + ld [wcfbe], a + ret +; 81f1d + +Function81f1d: ; 81f1d + ld a, [hl] + and $7 + ret z + ld b, a +.asm_81f22 + push bc + xor a + ld [rJOYP], a + ld a, $30 + ld [rJOYP], a + ld b, $10 +.asm_81f2c + ld e, $8 + ld a, [hli] + ld d, a +.asm_81f30 + bit 0, d + ld a, $10 + jr nz, .asm_81f38 + ld a, $20 + +.asm_81f38 + ld [rJOYP], a + ld a, $30 + ld [rJOYP], a + rr d + dec e + jr nz, .asm_81f30 + dec b + jr nz, .asm_81f2c + ld a, $20 + ld [rJOYP], a + ld a, $30 + ld [rJOYP], a + ld de, 7000 +.asm_81f51 + nop + nop + nop + dec de + ld a, d + or e + jr nz, .asm_81f51 + pop bc + dec b + jr nz, .asm_81f22 + ret +; 81f5e + +Function81f5e: ; 81f5e + ld a, $6f + hlcoord 10, 0 + ld [hl], a + hlcoord 15, 0 + ld [hl], a + hlcoord 1, 11 + ld [hl], a + hlcoord 1, 13 + ld [hl], a + hlcoord 1, 15 + ld [hl], a + ld a, [wJumptableIndex] + cp $3 + jr nz, .asm_81fc9 + ld a, [wcf64] + and a + jr z, .asm_81f8d + dec a + hlcoord 1, 11 + ld bc, 2 * SCREEN_WIDTH + call AddNTimes + ld [hl], $ed + +.asm_81f8d + ld a, [wcf65] + and a + jr z, .asm_81f98 + hlcoord 15, 0 + jr .asm_81f9b + +.asm_81f98 + hlcoord 10, 0 + +.asm_81f9b + ld [hl], $ed + ld b, $70 + ld c, $5 + ld hl, Sprites + ld de, wc608 + 10 + call .asm_81fb7 + ld de, wc608 + 11 + call .asm_81fb7 + ld de, wc608 + 12 + call .asm_81fb7 + ret + +.asm_81fb7 + ld a, b + ld [hli], a + ld a, [de] +rept 2 + add a +endr + add $18 + ld [hli], a + xor a + ld [hli], a + ld a, c + ld [hli], a + ld a, $10 + add b + ld b, a + inc c + ret + +.asm_81fc9 + call ClearSprites + ret +; 81fcd + +String_81fcd: ; 81fcd + db "おわりますか?" ; Are you finished? + next "はい", $f2, $f2, $f2, $7a ; YES (A) + next "いいえ", $f2, $f2, $7b ; NO (B) + db "@" +; 81fe3 + +DebugColorTestGFX: +INCBIN "gfx/debug/color_test.2bpp" + + +TilesetColorTest: + ret + xor a + ld [wJumptableIndex], a + ld [wcf64], a + ld [wcf65], a + ld [wcf66], a + ld [hMapAnims], a + call ClearSprites + call OverworldTextModeSwitch + call Function3200 + xor a + ld [hBGMapMode], a + ld de, DebugColorTestGFX + $10 + ld hl, VTiles2 tile $6a + lb bc, BANK(DebugColorTestGFX), $16 + call Request2bpp + ld de, DebugColorTestGFX + ld hl, VTiles1 + lb bc, BANK(DebugColorTestGFX), 1 + call Request2bpp + ld a, VBGMap1 / $100 + ld [hBGMapAddress + 1], a + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, $6f + call ByteFill + hlcoord 0, 0, AttrMap + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, $7 + call ByteFill + ld de, $15 + ld a, $6c + call Function821d2 + ld de, $1a + ld a, $6d + call Function821d2 + ld de, $1f + ld a, $6e + call Function821d2 + ld de, $24 + ld a, $6f + call Function821d2 + call Function821f4 + call Function8220f + call Function3200 + ld [wJumptableIndex], a + ld a, $40 + ld [hWY], a + ret +; 821d2 + +Function821d2: ; 821d2 + hlcoord 0, 0 + call Function821de + +Function821d8: ; 821d8 + ld a, [wcf64] + hlcoord 0, 0, AttrMap + +Function821de: ; 821de + add hl, de +rept 4 + ld [hli], a +endr + ld bc, $10 + add hl, bc +rept 4 + ld [hli], a +endr + ld bc, $10 + add hl, bc +rept 4 + ld [hli], a +endr + ret +; 821f4 + +Function821f4: ; 821f4 + hlcoord 2, 4 + call Function82203 + hlcoord 2, 6 + call Function82203 + hlcoord 2, 8 + +Function82203: ; 82203 + ld a, $6a + ld [hli], a + ld bc, $10 - 1 + ld a, $6b + call ByteFill + ret +; 8220f + +Function8220f: ; 8220f + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld a, [wcf64] + ld l, a + ld h, $0 +rept 3 + add hl, hl +endr + ld de, wMapPals + add hl, de + ld de, wc608 + ld bc, 8 + call CopyBytes + ld de, wc608 + call Function81ea5 + pop af + ld [rSVBK], a + ret +; 82236 + + +Function82236: ; 82236 + ld hl, hJoyLast + ld a, [hl] + and SELECT + jr nz, .loop7 + ld a, [hl] + and B_BUTTON + jr nz, .asm_82299 + call Function822f0 + ret + +.loop7 + ld hl, wcf64 + ld a, [hl] + inc a + and $7 + cp $7 + jr nz, .asm_82253 + xor a + +.asm_82253 + ld [hl], a + ld de, $15 + call Function821d8 + ld de, $1a + call Function821d8 + ld de, $1f + call Function821d8 + ld de, $24 + call Function821d8 + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, BGPals + ld a, [wcf64] + ld bc, 8 + call AddNTimes + ld de, wc608 + ld bc, 8 + call CopyBytes + pop af + ld [rSVBK], a + ld a, $2 + ld [hBGMapMode], a + ld c, 3 + call DelayFrames + ld a, $1 + ld [hBGMapMode], a + ret + +.asm_82299 + call ClearSprites + ld a, [hWY] + xor $d0 + ld [hWY], a + ret +; 822a3 + +Function822a3: ; 822a3 + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, BGPals + ld a, [wcf64] + ld bc, 8 + call AddNTimes + ld e, l + ld d, h + ld hl, wc608 + ld bc, 8 + call CopyBytes + hlcoord 1, 0 + ld de, wc608 + call Function81ca7 + hlcoord 6, 0 + ld de, wc608 + 2 + call Function81ca7 + hlcoord 11, 0 + ld de, wc608 + 4 + call Function81ca7 + hlcoord 16, 0 + ld de, wc608 + 6 + call Function81ca7 + pop af + ld [rSVBK], a + ld a, $1 + ld [hCGBPalUpdate], a + call DelayFrame + ret +; 822f0 + +Function822f0: ; 822f0 + ld a, [wcf65] + and 3 + ld e, a + ld d, 0 + ld hl, .jumptable +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 82301 + +.jumptable: ; 82301 + dw Function82309 + dw Function82339 + dw Function8234b + dw Function8235d +; 82309 + +Function82309: ; 82309 + ld hl, hJoyLast + ld a, [hl] + and D_DOWN + jr nz, Function8238c + ld a, [hl] + and D_LEFT + jr nz, .asm_8231c + ld a, [hl] + and D_RIGHT + jr nz, .asm_82322 + ret + +.asm_8231c + ld a, [wcf66] + dec a + jr .asm_82326 + +.asm_82322 + ld a, [wcf66] + inc a + +.asm_82326 + and $3 + ld [wcf66], a + ld e, a + ld d, $0 + ld hl, wc608 +rept 2 + add hl, de +endr + ld e, l + ld d, h + call Function81ea5 + ret + +Function82339: ; 82338 + ld hl, hJoyLast + ld a, [hl] + and D_DOWN + jr nz, Function8238c + ld a, [hl] + and D_UP + jr nz, Function82387 + ld hl, wc608 + 10 + jr Function82368 + +Function8234b: ; 8234b + ld hl, hJoyLast + ld a, [hl] + and D_DOWN + jr nz, Function8238c + ld a, [hl] + and D_UP + jr nz, Function82387 + ld hl, wc608 + 11 + jr Function82368 + +Function8235d: ; 8235d + ld hl, hJoyLast + ld a, [hl] + and D_UP + jr nz, Function82387 + ld hl, wc608 + 12 + +Function82368: ; 82368 + ld a, [hJoyLast] + and D_RIGHT + jr nz, .asm_82375 + ld a, [hJoyLast] + and D_LEFT + jr nz, .asm_8237c + ret + +.asm_82375 + ld a, [hl] + cp $1f + ret nc + inc [hl] + jr .asm_82380 + +.asm_8237c + ld a, [hl] + and a + ret z + dec [hl] + +.asm_82380 + call Function82391 + call Function822a3 + ret + +Function82387: ; 82387 + ld hl, wcf65 + dec [hl] + ret + +Function8238c: ; 8238c + ld hl, wcf65 + inc [hl] + ret +; 82391 + +Function82391: ; 82391 + ld a, [wc608 + 10] + and $1f + ld e, a + ld a, [wc608 + 11] + and $7 + sla a + swap a + or e + ld e, a + ld a, [wc608 + 11] + and $18 + sla a + swap a + ld d, a + ld a, [wc608 + 12] + and $1f + sla a + sla a + or d + ld d, a + ld a, [wcf66] + ld c, a + ld b, $0 + ld hl, wc608 +rept 2 + add hl, bc +endr + ld a, e + ld [hli], a + ld [hl], d + ret +; 823c6 + +Function823c6: ; 823c6 + ret + +Function823c7: ; 823c7 + ret +; 823c8 diff --git a/engine/engine_flags.asm b/engine/engine_flags.asm index 49a7d82e1..74113b4a5 100644 --- a/engine/engine_flags.asm +++ b/engine/engine_flags.asm @@ -1,3 +1,90 @@ +EngineFlagAction:: ; 80430 +; Do action b on engine flag de +; +; b = 0: reset flag +; = 1: set flag +; > 1: check flag, result in c +; +; Setting/resetting does not return a result. + + +; 16-bit flag ids are considered invalid, but it's nice +; to know that the infrastructure is there. + + ld a, d + cp 0 + jr z, .ceiling + jr c, .read ; cp 0 can't set carry! + jr .invalid + +; There are only $a2 engine flags, so +; anything beyond that is invalid too. + +.ceiling + ld a, e + cp NUM_ENGINE_FLAGS + jr c, .read + +; Invalid flags are treated as flag 00. + +.invalid + xor a + ld e, a + ld d, a + +; Get this flag's location. + +.read + ld hl, EngineFlags +; location +rept 2 + add hl, de +endr +; bit + add hl, de + +; location + ld e, [hl] + inc hl + ld d, [hl] + inc hl +; bit + ld c, [hl] + +; What are we doing with this flag? + + ld a, b + cp 1 + jr c, .reset ; b = 0 + jr z, .set ; b = 1 + +; Return the given flag in c. +.check + ld a, [de] + and c + ld c, a + ret + +; Set the given flag. +.set + ld a, [de] + or c + ld [de], a + ret + +; Reset the given flag. +.reset + ld a, c + cpl ; AND all bits except the one in question + ld c, a + ld a, [de] + and c + ld [de], a + ret +; 80462 + + +EngineFlags: ; 80462 ; All locations are in WRAM bank 1. engine_flag: MACRO dwb \1, 1 << \2 diff --git a/engine/npctrade.asm b/engine/npctrade.asm new file mode 100755 index 000000000..97109cdd4 --- /dev/null +++ b/engine/npctrade.asm @@ -0,0 +1,620 @@ + +; Trade struct +TRADE_DIALOG EQU 0 +TRADE_GIVEMON EQU 1 +TRADE_GETMON EQU 2 +TRADE_NICK EQU 3 +TRADE_DVS EQU 14 +TRADE_ITEM EQU 16 +TRADE_OT_ID EQU 17 +TRADE_OT_NAME EQU 19 +TRADE_GENDER EQU 30 +TRADE_PADDING EQU 31 + +; Trade dialogs +TRADE_INTRO EQU 0 +TRADE_CANCEL EQU 1 +TRADE_WRONG EQU 2 +TRADE_COMPLETE EQU 3 +TRADE_AFTER EQU 4 + +NPCTrade:: ; fcba8 + ld a, e + ld [wJumptableIndex], a + call Functionfcc59 + ld b, CHECK_FLAG + call TradeFlagAction + ld a, TRADE_AFTER + jr nz, .done + + ld a, TRADE_INTRO + call PrintTradeText + + call YesNoBox + ld a, TRADE_CANCEL + jr c, .done + +; Select givemon from party + ld b, 6 + callba Function5001d + ld a, TRADE_CANCEL + jr c, .done + + ld e, TRADE_GIVEMON + call GetTradeAttribute + ld a, [CurPartySpecies] + cp [hl] + ld a, TRADE_WRONG + jr nz, .done + + call CheckTradeGender + ld a, TRADE_WRONG + jr c, .done + + ld b, SET_FLAG + call TradeFlagAction + + ld hl, ConnectLinkCableText + call PrintText + + call Functionfcc63 + call Functionfcc07 + call GetTradeMonNames + + ld hl, TradedForText + call PrintText + + call RestartMapMusic + + ld a, TRADE_COMPLETE + +.done + call PrintTradeText + ret +; fcc07 + +Functionfcc07: ; fcc07 + call DisableSpriteUpdates + ld a, [wJumptableIndex] + push af + ld a, [wcf64] + push af + predef Function28f24 + pop af + ld [wcf64], a + pop af + ld [wJumptableIndex], a + call Function2b74 + ret +; fcc23 + +CheckTradeGender: ; fcc23 + xor a + ld [MonType], a + + ld e, TRADE_GENDER + call GetTradeAttribute + ld a, [hl] + and a + jr z, .asm_fcc46 + cp 1 + jr z, .asm_fcc3e + + callba GetGender + jr nz, .asm_fcc48 + jr .asm_fcc46 + +.asm_fcc3e + callba GetGender + jr z, .asm_fcc48 + +.asm_fcc46 + and a + ret + +.asm_fcc48 + scf + ret +; fcc4a + +TradeFlagAction: ; fcc4a + ld hl, wd960 + ld a, [wJumptableIndex] + ld c, a + predef FlagPredef + ld a, c + and a + ret +; fcc59 + +Functionfcc59: ; fcc59 + ld e, TRADE_DIALOG + call GetTradeAttribute + ld a, [hl] + ld [wcf64], a + ret +; fcc63 + +Functionfcc63: ; fcc63 + ld e, TRADE_GIVEMON + call GetTradeAttribute + ld a, [hl] + ld [wc6d0], a + + ld e, TRADE_GETMON + call GetTradeAttribute + ld a, [hl] + ld [wc702], a + + ld a, [wc6d0] + ld de, wc6d1 + call Functionfcde8 + call Functionfcdf4 + + ld a, [wc702] + ld de, wc703 + call Functionfcde8 + call Functionfcdf4 + + ld hl, PartyMonOT + ld bc, NAME_LENGTH + call Functionfcdd7 + ld de, wc6f2 + call Functionfcdf4 + + ld hl, PlayerName + ld de, wc6e7 + call Functionfcdf4 + + ld hl, PartyMon1ID + ld bc, PARTYMON_STRUCT_LENGTH + call Functionfcdd7 + ld de, wc6ff + call Functionfce0f + + ld hl, PartyMon1DVs + ld bc, PARTYMON_STRUCT_LENGTH + call Functionfcdd7 + ld de, wc6fd + call Functionfce0f + + ld hl, PartyMon1Species + ld bc, PARTYMON_STRUCT_LENGTH + call Functionfcdd7 + ld b, h + ld c, l + callba GetCaughtGender + ld a, c + ld [wc701], a + + ld e, TRADE_DIALOG + call GetTradeAttribute + ld a, [hl] + cp TRADE_COMPLETE + ld a, 1 + jr c, .asm_fcce6 + ld a, 2 +.asm_fcce6 + ld [wEnemyCharging], a + + ld hl, PartyMon1Level + ld bc, PARTYMON_STRUCT_LENGTH + call Functionfcdd7 + ld a, [hl] + ld [CurPartyLevel], a + ld a, [wc702] + ld [CurPartySpecies], a + xor a + ld [MonType], a + ld [wPokemonWithdrawDepositParameter], a + callab Functione039 + predef TryAddMonToParty + + ld e, TRADE_DIALOG + call GetTradeAttribute + ld a, [hl] + cp TRADE_COMPLETE + ld b, 0 + jr c, .asm_fcd1c + ld b, 1 +.asm_fcd1c + callba SetGiftPartyMonCaughtData + + ld e, TRADE_NICK + call GetTradeAttribute + ld de, wc70e + call Functionfcdf4 + + ld hl, PartyMonNicknames + ld bc, PKMN_NAME_LENGTH + call Functionfcdde + ld hl, wc70e + call Functionfcdf4 + + ld e, TRADE_OT_NAME + call GetTradeAttribute + push hl + ld de, wc724 + call Functionfcdf4 + pop hl + ld de, wc719 + call Functionfcdf4 + + ld hl, PartyMonOT + ld bc, NAME_LENGTH + call Functionfcdde + ld hl, wc724 + call Functionfcdf4 + + ld e, TRADE_DVS + call GetTradeAttribute + ld de, wEnemyTrappingMove + call Functionfce0f + + ld hl, PartyMon1DVs + ld bc, PARTYMON_STRUCT_LENGTH + call Functionfcdde + ld hl, wEnemyTrappingMove + call Functionfce0f + + ld e, TRADE_OT_ID + call GetTradeAttribute + ld de, wPlayerCharging + call Functionfce15 + + ld hl, PartyMon1ID + ld bc, PARTYMON_STRUCT_LENGTH + call Functionfcdde + ld hl, wEnemyWrapCount + call Functionfce0f + + ld e, TRADE_ITEM + call GetTradeAttribute + push hl + ld hl, PartyMon1Item + ld bc, PARTYMON_STRUCT_LENGTH + call Functionfcdde + pop hl + ld a, [hl] + ld [de], a + + push af + push bc + push de + push hl + ld a, [CurPartyMon] + push af + ld a, [PartyCount] + dec a + ld [CurPartyMon], a + callba Functione134 + pop af + ld [CurPartyMon], a + pop hl + pop de + pop bc + pop af + ret +; fcdc2 + + +GetTradeAttribute: ; 0xfcdc2 + ld d, 0 + push de + ld a, [wJumptableIndex] + and $f + swap a + ld e, a + ld d, 0 + ld hl, NPCTrades +rept 2 + add hl, de +endr + pop de + add hl, de + ret +; 0xfcdd7 + +Functionfcdd7: ; fcdd7 + ld a, [CurPartyMon] + call AddNTimes + ret +; fcdde + +Functionfcdde: ; fcdde + ld a, [PartyCount] + dec a + call AddNTimes + ld e, l + ld d, h + ret +; fcde8 + +Functionfcde8: ; fcde8 + push de + ld [wd265], a + call GetBasePokemonName + ld hl, StringBuffer1 + pop de + ret +; fcdf4 + +Functionfcdf4: ; fcdf4 + ld bc, NAME_LENGTH + call CopyBytes + ret +; fcdfb + +Functionfcdfb: ; fcdfb + ld bc, 4 + call CopyBytes + ld a, $50 + ld [de], a + ret +; fce05 + +Functionfce05: ; fce05 + ld bc, 3 + call CopyBytes + ld a, $50 + ld [de], a + ret +; fce0f + +Functionfce0f: ; fce0f + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + ret +; fce15 + +Functionfce15: ; fce15 + ld a, [hli] + ld [de], a + dec de + ld a, [hl] + ld [de], a + ret +; fce1b + +GetTradeMonNames: ; fce1b + ld e, TRADE_GETMON + call GetTradeAttribute + ld a, [hl] + call Functionfcde8 + + ld de, StringBuffer2 + call Functionfcdf4 + + ld e, TRADE_GIVEMON + call GetTradeAttribute + ld a, [hl] + call Functionfcde8 + + ld de, wd050 + call Functionfcdf4 + + ld hl, StringBuffer1 +.loop + ld a, [hli] + cp "@" + jr nz, .loop + + dec hl + push hl + ld e, TRADE_GENDER + call GetTradeAttribute + ld a, [hl] + pop hl + and a + ret z + + cp 1 + ld a, "♂" + jr z, .done + ld a, "♀" +.done + ld [hli], a + ld [hl], "@" + ret +; fce58 + + +NPCTrades: ; fce58 + db 0, ABRA, MACHOP, "MUSCLE@@@@@", $37, $66, GOLD_BERRY, $54, $92, "MIKE@@@@@@@", 0, 0 + db 0, BELLSPROUT, ONIX, "ROCKY@@@@@@", $96, $66, BITTER_BERRY, $1e, $bf, "KYLE@@@@@@@", 0, 0 + db 1, KRABBY, VOLTORB, "VOLTY@@@@@@", $98, $88, PRZCUREBERRY, $05, $72, "TIM@@@@@@@@", 0, 0 + db 3, DRAGONAIR, DODRIO, "DORIS@@@@@@", $77, $66, SMOKE_BALL, $1b, $01, "EMY@@@@@@@@", 2, 0 + db 2, HAUNTER, XATU, "PAUL@@@@@@@", $96, $86, MYSTERYBERRY, $00, $3d, "CHRIS@@@@@@", 0, 0 + db 3, CHANSEY, AERODACTYL, "AEROY@@@@@@", $96, $66, GOLD_BERRY, $7b, $67, "KIM@@@@@@@@", 0, 0 + db 0, DUGTRIO, MAGNETON, "MAGGIE@@@@@", $96, $66, METAL_COAT, $a2, $c3, "FOREST@@@@@", 0, 0 +; fcf38 + + +PrintTradeText: ; fcf38 + push af + call GetTradeMonNames + pop af + ld bc, 2 * 4 + ld hl, TradeTexts + call AddNTimes + ld a, [wcf64] + ld c, a +rept 2 + add hl, bc +endr + ld a, [hli] + ld h, [hl] + ld l, a + call PrintText + ret +; fcf53 + +TradeTexts: ; fcf53 +; intro + dw TradeIntroText1 + dw TradeIntroText2 + dw TradeIntroText3 + dw TradeIntroText4 + +; cancel + dw TradeCancelText1 + dw TradeCancelText2 + dw TradeCancelText3 + dw TradeCancelText4 + +; wrong mon + dw TradeWrongText1 + dw TradeWrongText2 + dw TradeWrongText3 + dw TradeWrongText4 + +; completed + dw TradeCompleteText1 + dw TradeCompleteText2 + dw TradeCompleteText3 + dw TradeCompleteText4 + +; after + dw TradeAfterText1 + dw TradeAfterText2 + dw TradeAfterText3 + dw TradeAfterText4 +; fcf7b + + +ConnectLinkCableText: ; 0xfcf7b + ; OK, connect the Game Link Cable. + text_jump UnknownText_0x1bd407 + db "@" +; 0xfcf80 + + +TradedForText: ; 0xfcf80 + ; traded givemon for getmon + text_jump UnknownText_0x1bd429 + start_asm + + ld de, MUSIC_NONE + call PlayMusic + call DelayFrame + ld hl, .done + ret + +.done + ; sound0x0A + ; interpret_data + text_jump UnknownText_0x1bd445 + db "@" +; 0xfcf97 + + +TradeIntroText1: ; 0xfcf97 + ; I collect #MON. Do you have @ ? Want to trade it for my @ ? + text_jump UnknownText_0x1bd449 + db "@" +; 0xfcf9c + +TradeCancelText1: ; 0xfcf9c + ; You don't want to trade? Aww… + text_jump UnknownText_0x1bd48c + db "@" +; 0xfcfa1 + +TradeWrongText1: ; 0xfcfa1 + ; Huh? That's not @ . What a letdown… + text_jump UnknownText_0x1bd4aa + db "@" +; 0xfcfa6 + +TradeCompleteText1: ; 0xfcfa6 + ; Yay! I got myself @ ! Thanks! + text_jump UnknownText_0x1bd4d2 + db "@" +; 0xfcfab + +TradeAfterText1: ; 0xfcfab + ; Hi, how's my old @ doing? + text_jump UnknownText_0x1bd4f4 + db "@" +; 0xfcfb0 + + +TradeIntroText2: +TradeIntroText3: ; 0xfcfb0 + ; Hi, I'm looking for this #MON. If you have @ , would you trade it for my @ ? + text_jump UnknownText_0x1bd512 + db "@" +; 0xfcfb5 + +TradeCancelText2: +TradeCancelText3: ; 0xfcfb5 + ; You don't have one either? Gee, that's really disappointing… + text_jump UnknownText_0x1bd565 + db "@" +; 0xfcfba + +TradeWrongText2: +TradeWrongText3: ; 0xfcfba + ; You don't have @ ? That's too bad, then. + text_jump UnknownText_0x1bd5a1 + db "@" +; 0xfcfbf + +TradeCompleteText2: ; 0xfcfbf + ; Great! Thank you! I finally got @ . + text_jump UnknownText_0x1bd5cc + db "@" +; 0xfcfc4 + +TradeAfterText2: ; 0xfcfc4 + ; Hi! The @ you traded me is doing great! + text_jump UnknownText_0x1bd5f4 + db "@" +; 0xfcfc9 + + +TradeIntroText4: ; 0xfcfc9 + ; 's cute, but I don't have it. Do you have @ ? Want to trade it for my @ ? + text_jump UnknownText_0x1bd621 + db "@" +; 0xfcfce + +TradeCancelText4: ; 0xfcfce + ; You don't want to trade? Oh, darn… + text_jump UnknownText_0x1bd673 + db "@" +; 0xfcfd3 + +TradeWrongText4: ; 0xfcfd3 + ; That's not @ . Please trade with me if you get one. + text_jump UnknownText_0x1bd696 + db "@" +; 0xfcfd8 + +TradeCompleteText4: ; 0xfcfd8 + ; Wow! Thank you! I always wanted @ ! + text_jump UnknownText_0x1bd6cd + db "@" +; 0xfcfdd + +TradeAfterText4: ; 0xfcfdd + ; How is that @ I traded you doing? Your @ 's so cute! + text_jump UnknownText_0x1bd6f5 + db "@" +; 0xfcfe2 + + +TradeCompleteText3: ; 0xfcfe2 + ; Uh? What happened? + text_jump UnknownText_0x1bd731 + db "@" +; 0xfcfe7 + +TradeAfterText3: ; 0xfcfe7 + ; Trading is so odd… I still have a lot to learn about it. + text_jump UnknownText_0x1bd745 + db "@" +; 0xfcfec diff --git a/engine/party_menu.asm b/engine/party_menu.asm index e81355c7a..356b07f8e 100644 --- a/engine/party_menu.asm +++ b/engine/party_menu.asm @@ -41,7 +41,7 @@ Function5003f: ; 5003f LoadPartyMenuGFX: ; 5004f call LoadFontsBattleExtra callab Function8ad1 ; engine/color.asm - callab InefficientlyClear121BytesAtwc300 + callab ClearSpriteAnims ret ; 5005f diff --git a/engine/printer.asm b/engine/printer.asm new file mode 100755 index 000000000..9c18d42fe --- /dev/null +++ b/engine/printer.asm @@ -0,0 +1,1493 @@ +Function84000: ; 84000 + ld hl, OverworldMap + lb bc, 4, 12 + xor a + call Function842ab + xor a + ld [rSB], a + ld [rSC], a + ld [wc2d5], a + ld hl, wc2d4 + set 0, [hl] + ld a, [GBPrinter] + ld [wcbfb], a + xor a + ld [wJumptableIndex], a + ret +; 84022 + +Function84022: ; 84022 + ld a, [wJumptableIndex] + ld e, a + ld d, 0 + ld hl, Jumptable_84031 +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 84031 + + +Jumptable_84031: ; 84031 (21:4031) + dw Function84077 + dw Function84143 + dw Function84120 + dw Function84099 + dw Function84180 + dw Function8412e + dw Function840c5 + dw Function84180 + dw Function84120 + dw Function840de + dw Function84180 + dw Function84120 + dw Function841a1 + dw Function84063 + dw Function8406d + dw Function84120 + dw Function84103 + dw Function84071 + dw Function841b0 + dw Function841b3 + + +Function84059: ; 84059 (21:4059) + ld hl, wJumptableIndex + inc [hl] + ret + +Function8405e: ; 8405e (21:405e) + ld hl, wJumptableIndex + dec [hl] + ret + +Function84063: ; 84063 (21:4063) + xor a + ld [wca89], a + ld hl, wJumptableIndex + set 7, [hl] + ret + +Function8406d: ; 8406d (21:406d) + call Function84059 + ret + +Function84071: ; 84071 (21:4071) + ld a, $1 + ld [wJumptableIndex], a + ret + +Function84077: ; 84077 (21:4077) + call Function841fb + ld hl, Unknown_842b7 + call Function841e2 + xor a + ld [wca8e], a + ld [wca8f], a + ld a, [wcf65] + ld [wca81], a + call Function84059 + call Function841c3 + ld a, $1 + ld [wcbf8], a + ret + +Function84099: ; 84099 (21:4099) + call Function841fb + ld hl, wca81 + ld a, [hl] + and a + jr z, Function840c5 + ld hl, Unknown_842c3 + call Function841e2 + call Function84260 + ld a, $80 + ld [wca8e], a + ld a, $2 + ld [wca8f], a + call Function84219 + call Function84059 + call Function841c3 + ld a, $2 + ld [wcbf8], a + ret + +Function840c5: ; 840c5 (21:40c5) + ld a, $6 + ld [wJumptableIndex], a + ld hl, Unknown_842c9 + call Function841e2 + xor a + ld [wca8e], a + ld [wca8f], a + call Function84059 + call Function841c3 + ret + +Function840de: ; 840de (21:40de) + call Function841fb + ld hl, Unknown_842bd + call Function841e2 + call Function84249 + ld a, $4 + ld [wca8e], a + ld a, $0 + ld [wca8f], a + call Function84219 + call Function84059 + call Function841c3 + ld a, $3 + ld [wcbf8], a + ret + +Function84103: ; 84103 (21:4103) + call Function841fb + ld hl, Unknown_842b7 + call Function841e2 + xor a + ld [wca8e], a + ld [wca8f], a + ld a, [wcf65] + ld [wca81], a + call Function84059 + call Function841c3 + ret + +Function84120: ; 84120 (21:4120) + ld hl, wca8b + inc [hl] + ld a, [hl] + cp $6 + ret c + xor a + ld [hl], a + call Function84059 + ret + +Function8412e: ; 8412e (21:412e) + ld hl, wca8b + inc [hl] + ld a, [hl] + cp $6 + ret c + xor a + ld [hl], a + ld hl, wca81 + dec [hl] + call Function8405e + call Function8405e + ret + +Function84143: ; 84143 (21:4143) + ld a, [wc2d5] + and a + ret nz + ld a, [wca88] + cp $ff + jr nz, .printer_connected + ld a, [wca89] + cp $ff + jr z, .printer_error + +.printer_connected + ld a, [wca88] + cp $81 + jr nz, .printer_error + ld a, [wca89] + cp $0 + jr nz, .printer_error + ld hl, wc2d4 + set 1, [hl] + ld a, $5 + ld [wca8a], a + call Function84059 + ret + +.printer_error + ld a, $ff + ld [wca88], a + ld [wca89], a + ld a, $e + ld [wJumptableIndex], a + ret + +Function84180: ; 84180 (21:4180) + ld a, [wc2d5] + and a + ret nz + ld a, [wca89] + and $f0 + jr nz, .asm_8419b + ld a, [wca89] + and $1 + jr nz, .asm_84197 + call Function84059 + ret +.asm_84197 + call Function8405e + ret +.asm_8419b + ld a, $12 + ld [wJumptableIndex], a + ret + +Function841a1: ; 841a1 (21:41a1) + ld a, [wc2d5] + and a + ret nz + ld a, [wca89] + and $f3 + ret nz + call Function84059 + ret + +Function841b0: ; 841b0 (21:41b0) + call Function84059 + +Function841b3: ; 841b3 (21:41b3) + ld a, [wc2d5] + and a + ret nz + ld a, [wca89] + and $f0 + ret nz + xor a + ld [wJumptableIndex], a + ret + +Function841c3: ; 841c3 (21:41c3) + ld a, [wc2d5] + and a + jr nz, Function841c3 + xor a + ld [wca8c], a + ld [wca8d], a + ld a, $1 + ld [wc2d5], a + ld a, $88 + ld [rSB], a + ld a, $1 + ld [rSC], a + ld a, $81 + ld [rSC], a + ret + +Function841e2: ; 841e2 (21:41e2) + ld a, [hli] + ld [wca82], a + ld a, [hli] + ld [wca83], a + ld a, [hli] + ld [wca84], a + ld a, [hli] + ld [wca85], a + ld a, [hli] + ld [wca86], a + ld a, [hl] + ld [wca87], a + ret + +Function841fb: ; 841fb (21:41fb) + xor a + ld hl, wca82 +rept 3 + ld [hli], a +endr + ld [hl], a + ld hl, wca86 + ld [hli], a + ld [hl], a + xor a + ld [wca8e], a + ld [wca8f], a + ld hl, OverworldMap + ld bc, $280 + call Function842ab + ret + +Function84219: ; 84219 (21:4219) + ld hl, 0 + ld bc, $4 + ld de, wca82 + call Function8423c + ld a, [wca8e] + ld c, a + ld a, [wca8f] + ld b, a + ld de, OverworldMap + call Function8423c + ld a, l + ld [wca86], a + ld a, h + ld [wca87], a + ret + +Function8423c: ; 8423c (21:423c) + ld a, [de] + inc de + add l + jr nc, .asm_84242 + inc h +.asm_84242 + ld l, a + dec bc + ld a, c + or b + jr nz, Function8423c + ret + +Function84249: ; 84249 (21:4249) + ld a, $1 + ld [OverworldMap], a + ld a, [wcbfa] + ld [wc801], a + ld a, $e4 + ld [wc802], a + ld a, [wcbfb] + ld [wc803], a + ret + +Function84260: ; 84260 (21:4260) + ld a, [wca81] + xor $ff + ld d, a + ld a, [wcf65] + inc a + add d + ld hl, wca90 + ld de, $28 +.asm_84271 + and a + jr z, .asm_84278 + add hl, de + dec a + jr .asm_84271 +.asm_84278 + ld e, l + ld d, h + ld hl, OverworldMap + ld c, $28 +.asm_8427f + ld a, [de] + inc de + push bc + push de + push hl + 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, .asm_84297 + or $90 + jr .asm_84299 +.asm_84297 + or $80 +.asm_84299 + ld d, a + lb bc, $21, 1 + call Request2bpp + pop hl + ld de, $10 + add hl, de + pop de + pop bc + dec c + jr nz, .asm_8427f + ret + +Function842ab: ; 842ab + push de + ld e, a +.asm_842ad + ld [hl], e + inc hl + dec bc + ld a, c + or b + jr nz, .asm_842ad + ld a, e + pop de + ret +; 842b7 + +Unknown_842b7: db 1, 0, $00, 0, 1, 0 +Unknown_842bd: db 2, 0, $04, 0, 0, 0 +Unknown_842c3: db 4, 0, $80, 2, 0, 0 +Unknown_842c9: db 4, 0, $00, 0, 4, 0 +Unknown_842cf: db 8, 0, $00, 0, 8, 0 ; unused +Unknown_842d5: db 15, 0, $00, 0, 15, 0 ; unused +; 842db + + +Function842db:: ; 842db + ld a, [wc2d5] + add a + ld e, a + ld d, 0 + ld hl, Jumptable_842ea + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 842ea + + +Jumptable_842ea: ; 842ea (21:42ea) + dw Function8432f + dw Function84330 + dw Function84339 + dw Function84343 + dw Function8434d + dw Function84357 + dw Function84361 + dw Function8438b + dw Function84395 + dw Function8439f + dw Function843a8 + dw Function843b6 + dw Function84330 + dw Function843c0 + dw Function843c9 + dw Function843c9 + dw Function843c9 + dw Function843c0 + dw Function843c9 + dw Function8439f + dw Function843a8 + dw Function843e6 + dw Function84330 + dw Function843d2 + dw Function843c9 + dw Function843c9 + dw Function843c9 + dw Function843d2 + dw Function843c9 + dw Function8439f + dw Function843a8 + dw Function843b6 + + +Function8432a: ; 8432a (21:432a) + ld hl, wc2d5 + inc [hl] + ret + +Function8432f: ; 8432f (21:432f) + ret + +Function84330: ; 84330 (21:4330) + ld a, $33 + call Function843db + call Function8432a + ret + +Function84339: ; 84339 (21:4339) + ld a, [wca82] + call Function843db + call Function8432a + ret + +Function84343: ; 84343 (21:4343) + ld a, [wca83] + call Function843db + call Function8432a + ret + +Function8434d: ; 8434d (21:434d) + ld a, [wca84] + call Function843db + call Function8432a + ret + +Function84357: ; 84357 (21:4357) + ld a, [wca85] + call Function843db + call Function8432a + ret + +Function84361: ; 84361 (21:4361) + ld hl, wca8e + ld a, [hli] + ld d, [hl] + ld e, a + or d + jr z, .asm_84388 + dec de + ld [hl], d + dec hl + ld [hl], e + ld a, [wca8c] + ld e, a + ld a, [wca8d] + ld d, a + ld hl, OverworldMap + add hl, de + inc de + ld a, e + ld [wca8c], a + ld a, d + ld [wca8d], a + ld a, [hl] + call Function843db + ret +.asm_84388 + call Function8432a + +Function8438b: ; 8438b (21:438b) + ld a, [wca86] + call Function843db + call Function8432a + ret + +Function84395: ; 84395 (21:4395) + ld a, [wca87] + call Function843db + call Function8432a + ret + +Function8439f: ; 8439f (21:439f) + ld a, $0 + call Function843db + call Function8432a + ret + +Function843a8: ; 843a8 (21:43a8) + ld a, [rSB] + ld [wca88], a + ld a, $0 + call Function843db + call Function8432a + ret + +Function843b6: ; 843b6 (21:43b6) + ld a, [rSB] + ld [wca89], a + xor a + ld [wc2d5], a + ret + +Function843c0: ; 843c0 (21:43c0) + ld a, $f + call Function843db + call Function8432a + ret + +Function843c9: ; 843c9 (21:43c9) + ld a, $0 + call Function843db + call Function8432a + ret + +Function843d2: ; 843d2 (21:43d2) + ld a, $8 + call Function843db + call Function8432a + ret + +Function843db: ; 843db (21:43db) + ld [rSB], a + ld a, $1 + ld [rSC], a + ld a, $81 + ld [rSC], a + ret + +Function843e6: ; 843e6 (21:43e6) + ld a, [rSB] + ld [wca89], a + xor a + ld [wc2d5], a + ret + +Function843f0: ; 843f0 +.asm_843f0 + call JoyTextDelay + call Function846f6 + jr c, .asm_8440f + ld a, [wJumptableIndex] + bit 7, a + jr nz, .asm_8440d + call Function84022 + call Function84757 + call Function84785 + call DelayFrame + jr .asm_843f0 + +.asm_8440d + and a + ret + +.asm_8440f + scf + ret +; 84411 + +Function84411: ; 84411 + xor a + ld [wc2d4], a + ld [wc2d5], a + ret +; 84419 + +Function84419: ; 84419 + push af + call Function84000 + pop af + ld [wcbfa], a + call Function84728 + ret +; 84425 + +Function84425: ; 84425 + call ReturnToMapFromSubmenu + call Function84753 + ret +; 8442c + +Function8442c: ; 8442c + ld a, [wcf65] + push af + ld hl, VTiles1 + ld de, FontInversed + lb bc, BANK(FontInversed), $80 + call Request1bpp + xor a + ld [$ffac], a + call Function8474c + ld a, [rIE] + push af + xor a + ld [rIF], a + ld a, $9 + ld [rIE], a + call Function84000 + ld a, $10 + ld [wcbfa], a + callba Function1dc1b0 + call ClearTileMap + ld a, $e4 + call DmgToCgbBGPals + call DelayFrame + ld hl, hVBlank + ld a, [hl] + push af + ld [hl], $4 + ld a, $8 + ld [wcf65], a + call Function84742 + call Function843f0 + jr c, .asm_8449d + call Function84411 + ld c, 12 + call DelayFrames + xor a + ld [hBGMapMode], a + call Function84000 + ld a, $3 + ld [wcbfa], a + callba Function1dc213 + call Function84742 + ld a, $4 + ld [wcf65], a + call Function843f0 + +.asm_8449d + pop af + ld [hVBlank], a + call Function84411 + xor a + ld [rIF], a + pop af + ld [rIE], a + call Function84425 + ld c, $8 +.asm_844ae + call LowVolume + call DelayFrame + dec c + jr nz, .asm_844ae + pop af + ld [wcf65], a + ret +; 844bc + +Function844bc: ; 844bc (21:44bc) + ld a, [wcf65] + push af + ld a, $9 + ld [wcf65], a + ld a, e + ld [wd004], a + ld a, d + ld [StartFlypoint], a + ld a, b + ld [EndFlypoint], a + ld a, c + ld [MovementBuffer], a + xor a + ld [$ffac], a + ld [wd003], a + call Function8474c + ld a, [rIE] + push af + xor a + ld [rIF], a + ld a, $9 + ld [rIE], a + ld hl, hVBlank + ld a, [hl] + push af + ld [hl], $4 + xor a + ld [hBGMapMode], a + call Function84817 + ld a, $10 + call Function84419 + call Function84559 + jr c, .asm_84545 + call Function84411 + ld c, 12 + call DelayFrames + xor a + ld [hBGMapMode], a + call Function8486f + ld a, $0 + call Function84419 + call Function84559 + jr c, .asm_84545 + call Function84411 + ld c, 12 + call DelayFrames + xor a + ld [hBGMapMode], a + call Function84893 + ld a, $0 + call Function84419 + call Function84559 + jr c, .asm_84545 + call Function84411 + ld c, 12 + call DelayFrames + xor a + ld [hBGMapMode], a + call Function848b7 + ld a, $3 + call Function84419 + call Function84559 +.asm_84545 + pop af + ld [hVBlank], a + call Function84411 + xor a + ld [rIF], a + pop af + ld [rIE], a + call Function84425 + pop af + ld [wcf65], a + ret + +Function84559: ; 84559 (21:4559) + call Function84742 + call Function843f0 + ret + +Function84560: ; 84560 + ld a, [wcf65] + push af + xor a + ld [$ffac], a + call Function8474c + ld a, [rIE] + push af + xor a + ld [rIF], a + ld a, $9 + ld [rIE], a + ld hl, hVBlank + ld a, [hl] + push af + ld [hl], $4 + xor a + ld [hBGMapMode], a + call LoadTileMapToTempTileMap + callba Function16dac + ld a, $0 + call Function84419 + call Call_LoadTempTileMapToTileMap + call Function84742 + ld a, $9 + ld [wcf65], a +.asm_84597 + call JoyTextDelay + call Function846f6 + jr c, .asm_845c0 + ld a, [wJumptableIndex] + bit 7, a + jr nz, .asm_845c0 + call Function84022 + ld a, [wJumptableIndex] + cp $2 + jr nc, .asm_845b5 + ld a, $3 + ld [wca81], a + +.asm_845b5 + call Function84757 + call Function84785 + call DelayFrame + jr .asm_84597 + +.asm_845c0 + pop af + ld [hVBlank], a + call Function84411 + call Call_LoadTempTileMapToTileMap + xor a + ld [rIF], a + pop af + ld [rIE], a + pop af + ld [wcf65], a + ret +; 845d4 + +Function845d4: ; 845d4 + call Function845db + call Function84425 + ret +; 845db + +Function845db: ; 845db + ld a, [wcf65] + push af + xor a + ld [$ffac], a + call Function8474c + ld a, [rIE] + push af + xor a + ld [rIF], a + ld a, $9 + ld [rIE], a + xor a + ld [hBGMapMode], a + ld a, $13 + call Function84419 + ld hl, hVBlank + ld a, [hl] + push af + ld [hl], $4 + ld a, $9 + ld [wcf65], a + call Function843f0 + pop af + ld [hVBlank], a + call Function84411 + call Function84735 + xor a + ld [rIF], a + pop af + ld [rIE], a + pop af + ld [wcf65], a + ret +; 8461a + +Function8461a: ; 8461a + ld a, [wcf65] + push af + xor a + ld [$ffac], a + call Function8474c + ld a, [rIE] + push af + xor a + ld [rIF], a + ld a, $9 + ld [rIE], a + xor a + ld [hBGMapMode], a + callba Function1dc381 + ld a, $10 + call Function84419 + ld hl, hVBlank + ld a, [hl] + push af + ld [hl], $4 + ld a, $8 + ld [wcf65], a + call Function84742 + call Function843f0 + jr c, .asm_84671 + call Function84411 + ld c, 12 + call DelayFrames + xor a + ld [hBGMapMode], a + callba Function1dc47b + ld a, $3 + call Function84419 + ld a, $9 + ld [wcf65], a + call Function84742 + call Function843f0 + +.asm_84671 + pop af + ld [hVBlank], a + call Function84411 + call Function84735 + xor a + ld [rIF], a + pop af + ld [rIE], a + call Function84425 + pop af + ld [wcf65], a + ret +; 84688 + +_PrintDiploma: ; 84688 + ld a, [wcf65] + push af + callba Function1dd709 + xor a + ld [$ffac], a + call Function8474c + ld a, [rIE] + push af + xor a + ld [rIF], a + ld a, $9 + ld [rIE], a + ld hl, hVBlank + ld a, [hl] + push af + ld [hl], $4 + ld a, $10 + call Function84419 + call Function84742 + ld a, $9 + ld [wcf65], a + call Function843f0 + jr c, .asm_846e2 + call Function84411 + ld c, 12 + call DelayFrames + call LoadTileMapToTempTileMap + xor a + ld [hBGMapMode], a + callba Function1dd7ae + ld a, $3 + call Function84419 + call Call_LoadTempTileMapToTileMap + call Function84742 + ld a, $9 + ld [wcf65], a + call Function843f0 + +.asm_846e2 + pop af + ld [hVBlank], a + call Function84411 + xor a + ld [rIF], a + pop af + ld [rIE], a + call Function84425 + pop af + ld [wcf65], a + ret +; 846f6 + +Function846f6: ; 846f6 + ld a, [hJoyDown] + and B_BUTTON + jr nz, .asm_846fe + and a + ret + +.asm_846fe + ld a, [wca80] + cp $c + jr nz, .asm_84722 +.asm_84705 + ld a, [wc2d5] + and a + jr nz, .asm_84705 + ld a, $16 + ld [wc2d5], a + ld a, $88 + ld [rSB], a + ld a, $1 + ld [rSC], a + ld a, $81 + ld [rSC], a +.asm_8471c + ld a, [wc2d5] + and a + jr nz, .asm_8471c + +.asm_84722 + ld a, $1 + ld [$ffac], a + scf + ret +; 84728 + +Function84728: ; 84728 + hlcoord 0, 0 + ld de, wca90 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + call CopyBytes + ret +; 84735 + +Function84735: ; 84735 + ld hl, wca90 + decoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + call CopyBytes + ret +; 84742 + +Function84742: ; 84742 + xor a + ld [hJoyReleased], a + ld [hJoyPressed], a + ld [hJoyDown], a + ld [hJoyLast], a + ret +; 8474c + +Function8474c: ; 8474c + ld de, MUSIC_PRINTER + call PlayMusic2 + ret +; 84753 + +Function84753: ; 84753 + call RestartMapMusic + ret +; 84757 + +Function84757: ; 84757 + ld a, [wca88] + cp -1 + jr nz, .printer_connected + ld a, [wca89] + cp -1 + jr z, .error_2 + +.printer_connected + ld a, [wca89] + and %11100000 + ret z ; no error + + bit 7, a + jr nz, .error_1 + bit 6, a + jr nz, .error_4 + ld a, 6 ; error 3 + jr .load_text_index + +.error_4 + ld a, 7 ; error 4 + jr .load_text_index + +.error_1 + ld a, 4 ; error 1 + jr .load_text_index + +.error_2 + ld a, 5 ; error 2 + +.load_text_index + ld [wcbf8], a + ret +; 84785 + +Function84785: ; 84785 + ld a, [wcbf8] + and a + ret z + push af + xor a + ld [hBGMapMode], a + hlcoord 0, 5 + lb bc, 10, 18 + call TextBox + pop af + ld e, a + ld d, 0 + ld hl, PrinterStatusStringPointers +rept 2 + add hl, de +endr + ld e, [hl] + inc hl + ld d, [hl] + hlcoord 1, 7 + ld a, BANK(GBPrinterStrings) + call FarString + hlcoord 2, 15 + ld de, String_PressBToCancel + call PlaceString + ld a, $1 + ld [hBGMapMode], a + xor a + ld [wcbf8], a + ret +; 847bd + +Function847bd: ; 847bd + ld a, [wcbf8] + and a + ret z + push af + xor a + ld [hBGMapMode], a + hlcoord 2, 4 + lb bc, 13, 16 + call ClearBox + pop af + ld e, a + ld d, 0 + ld hl, PrinterStatusStringPointers +rept 2 + add hl, de +endr + ld e, [hl] + inc hl + ld d, [hl] + hlcoord 4, 7 + ld a, BANK(GBPrinterStrings) + call FarString + hlcoord 4, 15 + ld de, String_PressBToCancel + call PlaceString + ld a, $1 + ld [hBGMapMode], a + xor a + ld [wcbf8], a + ret +; 847f5 + +String_PressBToCancel: + db "Press B to Cancel@" +; 84807 + +PrinterStatusStringPointers: ; 84807 + dw String_1dc275 ; @ + dw String_1dc276 ; CHECKING LINK + dw String_1dc289 ; TRANSMITTING + dw String_1dc29c ; PRINTING + dw String_1dc2ad ; error 1 + dw String_1dc2e2 ; error 2 + dw String_1dc317 ; error 3 + dw String_1dc34c ; error 4 +; 84817 + +Function84817: ; 84817 (21:4817) + xor a + ld [wd002], a + hlcoord 0, 0 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + ld a, " " + call ByteFill + call Function84a0e + hlcoord 0, 0 + ld bc, 9 * SCREEN_WIDTH + ld a, " " + call ByteFill + call Function849e9 + call Function849d7 + hlcoord 4, 3 + ld de, String_84865 + call PlaceString + ld a, [wd007] + ld bc, BOX_NAME_LENGTH + ld hl, wBoxNames + call AddNTimes + ld d, h + ld e, l + hlcoord 6, 5 + call PlaceString + ld a, $1 + call Function849c6 + hlcoord 2, 9 + ld c, $3 + call Function848e7 + ret +; 84865 (21:4865) + +String_84865: + db "#MON LIST@" +; 8486f + +Function8486f: ; 8486f (21:486f) + hlcoord 0, 0 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + ld a, " " + call ByteFill + call Function84a0e + call Function849e9 + ld a, [wd003] + and a + ret nz + ld a, $4 + call Function849c6 + hlcoord 2, 0 + ld c, $6 + call Function848e7 + ret + +Function84893: ; 84893 (21:4893) + hlcoord 0, 0 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + ld a, " " + call ByteFill + call Function84a0e + call Function849e9 + ld a, [wd003] + and a + ret nz + ld a, $a + call Function849c6 + hlcoord 2, 0 + ld c, $6 + call Function848e7 + ret + +Function848b7: ; 848b7 (21:48b7) + hlcoord 0, 0 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + ld a, " " + call ByteFill + call Function84a0e + hlcoord 1, 15 + lb bc, 2, 18 + call ClearBox + call Function849e9 + call Function849fc + ld a, [wd003] + and a + ret nz + ld a, $10 + call Function849c6 + hlcoord 2, 0 + ld c, $5 + call Function848e7 + ret + +Function848e7: ; 848e7 (21:48e7) + ld a, [EndFlypoint] + call GetSRAMBank + +Function848ed: ; 848ed (21:48ed) + ld a, c + and a + jp z, Function84986 + dec c + ld a, [de] + cp $ff + jp z, Function84981 + ld [wd265], a + ld [CurPartySpecies], a + push bc + push hl + push de + push hl + ld bc, $10 + ld a, " " + call ByteFill + pop hl + push hl + call GetBasePokemonName + pop hl + push hl + call PlaceString + ld a, [CurPartySpecies] + cp $fd + pop hl + jr z, .ok2 + ld bc, $b + add hl, bc + call Function8498a + ld bc, $9 + add hl, bc + ld a, $f3 + ld [hli], a + push hl + ld bc, $e + ld a, " " + call ByteFill + pop hl + push hl + ld a, [wd004] + ld l, a + ld a, [StartFlypoint] + ld h, a + ld bc, $372 + add hl, bc + ld bc, $b + ld a, [wd002] + call AddNTimes + ld e, l + ld d, h + pop hl + push hl + call PlaceString + pop hl + ld bc, $b + add hl, bc + push hl + ld a, [wd004] + ld l, a + ld a, [StartFlypoint] + ld h, a + ld bc, $35 + add hl, bc + ld bc, $20 + ld a, [wd002] + call AddNTimes + ld a, [hl] + pop hl + call Function383d +.ok2 + ld hl, wd002 + inc [hl] + pop de + pop hl + ld bc, $3c + add hl, bc + pop bc + inc de + jp Function848ed + +Function84981: ; 84981 (21:4981) + ld a, $1 + ld [wd003], a + +Function84986: ; 84986 (21:4986) + call CloseSRAM + ret + +Function8498a: ; 8498a (21:498a) + push hl + ld a, [wd004] + ld l, a + ld a, [StartFlypoint] + ld h, a + ld bc, $2b + add hl, bc + ld bc, $20 + ld a, [wd002] + call AddNTimes + ld de, TempMonDVs + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + ld a, [wd002] + ld [CurPartyMon], a + ld a, $3 + ld [MonType], a + callba GetGender + ld a, $7f + jr c, .asm_849c3 + ld a, $ef + jr nz, .asm_849c3 + ld a, $f5 +.asm_849c3 + pop hl + ld [hli], a + ret + +Function849c6: ; 849c6 (21:49c6) + push hl + ld e, a + ld d, $0 + ld a, [wd004] + ld l, a + ld a, [StartFlypoint] + ld h, a + add hl, de + ld e, l + ld d, h + pop hl + ret + +Function849d7: ; 849d7 (21:49d7) + hlcoord 0, 0 + ld a, "┌" + ld [hli], a + ld a, "─" + ld c, SCREEN_WIDTH - 2 +.asm_849e1 + ld [hli], a + dec c + jr nz, .asm_849e1 + ld a, "┐" + ld [hl], a + ret + +Function849e9: ; 849e9 (21:49e9) + hlcoord 0, 0 + ld de, SCREEN_WIDTH - 1 + ld c, SCREEN_HEIGHT +.asm_849f1 + ld a, "│" + ld [hl], a + add hl, de + ld a, "│" + ld [hli], a + dec c + jr nz, .asm_849f1 + ret + +Function849fc: ; 849fc (21:49fc) + hlcoord 0, 17 + ld a, "└" + ld [hli], a + ld a, "─" + ld c, SCREEN_WIDTH - 2 +.asm_84a06 + ld [hli], a + dec c + jr nz, .asm_84a06 + ld a, "┘" + ld [hl], a + ret + +Function84a0e: ; 84a0e (21:4a0e) + hlcoord 2, 0 + ld c, $6 +.asm_84a13 + push bc + push hl + ld de, String84a25 + call PlaceString + pop hl + ld bc, $3c + add hl, bc + pop bc + dec c + jr nz, .asm_84a13 + ret +; 84a25 (21:4a25) + +String84a25: ; 84a25 + db " ------@" +; 84a2e diff --git a/engine/scripting.asm b/engine/scripting.asm index 6d87c2f1b..945368e2b 100644 --- a/engine/scripting.asm +++ b/engine/scripting.asm @@ -2985,8 +2985,8 @@ Script_reloadmappart:: ; 97ae3 xor a ld [hBGMapMode], a call OverworldTextModeSwitch - call Function2914 - callba Function104061 + call GetMovementPermissions + callba ReloadMapPart call UpdateSprites ret ; 97af6 diff --git a/engine/sprites.asm b/engine/sprites.asm index b8b4b2a47..bf82659e8 100755 --- a/engine/sprites.asm +++ b/engine/sprites.asm @@ -174,7 +174,7 @@ endr ; Look up the third field from the table in the wc300 array (10x2). ; Take the value and load it in ld a, [de] - call LookUpInwDict_c300 + call LookUpInwSpriteAnimDict ld [hli], a pop de ; Set hl to field 4. Kinda pointless, because we're presumably already here. @@ -374,11 +374,11 @@ Function8d0ec: ; 8d0ec ret ; 8d109 -LookUpInwDict_c300: ; 8d109 -; a = wDict_c300[a] if a in wDict_c300 else 0 +LookUpInwSpriteAnimDict: ; 8d109 +; a = wSpriteAnimDict[a] if a in wSpriteAnimDict else 0 push hl push bc - ld hl, wDict_c300 + ld hl, wSpriteAnimDict ld b, a ld c, 10 .loop @@ -2885,3 +2885,540 @@ endr Unknown_8e75d: ; 8e75d sine_wave $100 + + +Function8e79d: ; 8e79d + ld a, [hSGB] + ld de, GFX_8e7f4 + and a + jr z, .asm_8e7a8 + ld de, GFX_8e804 + +.asm_8e7a8 + ld hl, VTiles0 + lb bc, BANK(GFX_8e7f4), 1 + call Request2bpp + ld c, $8 + ld d, $0 +.asm_8e7b5 + push bc + call Function8e7c6 + call DelayFrame + pop bc +rept 2 + inc d +endr + dec c + jr nz, .asm_8e7b5 + call ClearSprites + ret +; 8e7c6 + +Function8e7c6: ; 8e7c6 + ld hl, Sprites + ld c, $8 +.asm_8e7cb + ld a, c + and a + ret z + dec c + ld a, c + sla a + sla a + sla a + push af + push de + push hl + call Function8e72c + pop hl + pop de + add $68 + ld [hli], a + pop af + push de + push hl + call Function8e72a + pop hl + pop de + add $54 + ld [hli], a + ld a, $0 + ld [hli], a + ld a, $6 + ld [hli], a + jr .asm_8e7cb +; 8e7f4 + +GFX_8e7f4: ; 8e7f4 +INCBIN "gfx/unknown/08e7f4.2bpp" +GFX_8e804: ; 8e804 +INCBIN "gfx/unknown/08e804.2bpp" + +ClearSpriteAnims: ; 8e814 + push hl + push de + push bc + push af + ld hl, wSpriteAnimDict + ld bc, wSpriteAnimsEnd - wSpriteAnimDict +.loop + ld [hl], $0 + inc hl + dec bc + ld a, c + or b + jr nz, .loop + pop af + pop bc + pop de + pop hl + ret +; 8e82b + +Function8e82b: ; 8e82b + ld a, e + call ReadMonMenuIcon + ld l, a + ld h, 0 + add hl, hl + ld de, IconPointers + add hl, de + ld a, [hli] + ld e, a + ld d, [hl] + ld b, BANK(Icons) + ld c, 8 + ret +; 8e83f + +Function8e83f: ; 8e83f + push hl + push de + push bc + call Function8e849 + pop bc + pop de + pop hl + ret +; 8e849 + +Function8e849: ; 8e849 + ld d, 0 + ld hl, Jumptable_8e854 +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 8e854 + + +Jumptable_8e854: ; 8e854 (23:6854) + dw Function8e8d5 + dw Function8e961 + dw Function8e97d + dw Function8e99a + dw Function8e898 + dw Function8e8b1 + dw Function8e862 + + +Function8e862: ; 8e862 (23:6862) + call Function8e908 + call Function8e86c + call Function8e936 + ret + +Function8e86c: ; 8e86c (23:686c) + push bc + ld a, [hObjectStructIndexBuffer] + ld hl, PartyMon1Item + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + pop bc + ld a, [hl] + and a + jr z, .asm_8e890 + push hl + push bc + ld d, a + callab ItemIsMail + pop bc + pop hl + jr c, .asm_8e88e + ld a, $6 + jr .asm_8e892 +.asm_8e88e + ld a, $5 +.asm_8e890 + ld a, $4 +.asm_8e892 + ld hl, $1 + add hl, bc + ld [hl], a + ret + +Function8e898: ; 8e898 (23:6898) + call Function8e8d5 + ld hl, $2 + add hl, bc + ld a, $0 + ld [hl], a + ld hl, $4 + add hl, bc + ld a, $48 + ld [hl], a + ld hl, $5 + add hl, bc + ld a, $48 + ld [hl], a + ret + +Function8e8b1: ; 8e8b1 (23:68b1) + call Function8e908 + call Function8e936 + ld hl, $2 + add hl, bc + ld a, $0 + ld [hl], a + ld hl, $4 + add hl, bc + ld a, $18 + ld [hl], a + ld hl, $5 + add hl, bc + ld a, $60 + ld [hl], a + ld a, c + ld [wc608], a + ld a, b + ld [wc608 + 1], a + ret + +Function8e8d5: ; 8e8d5 (23:68d5) + call Function8e908 + call Function8e8df + call Function8e936 + ret + +Function8e8df: ; 8e8df (23:68df) + push bc + ld a, [hObjectStructIndexBuffer] + ld hl, PartyMon1Item + ld bc, $30 + call AddNTimes + pop bc + ld a, [hl] + and a + ret z + push hl + push bc + ld d, a + callab ItemIsMail + pop bc + pop hl + jr c, .asm_8e900 + ld a, $3 + jr .asm_8e902 +.asm_8e900 + ld a, $2 +.asm_8e902 + ld hl, $1 + add hl, bc + ld [hl], a + ret + +Function8e908: ; 8e908 (23:6908) + ld a, [wc3b7] + push af + ld a, [hObjectStructIndexBuffer] + ld hl, PartySpecies + ld e, a + ld d, $0 + add hl, de + ld a, [hl] + call ReadMonMenuIcon + ld [CurIcon], a + call Function8e9db + ld a, [hObjectStructIndexBuffer] +; y coord +rept 4 + add a +endr + add $1c + ld d, a +; x coord + ld e, $10 +; type is partymon icon + ld a, SPRITE_ANIM_INDEX_00 + call InitSpriteAnimStruct + pop af + ld hl, $3 + add hl, bc + ld [hl], a + ret + +Function8e936: ; 8e936 (23:6936) + push bc + ld a, [hObjectStructIndexBuffer] + ld b, a + call Function8e94c + ld a, b + pop bc + ld hl, $9 + add hl, bc + ld [hl], a + rlca + rlca + ld hl, $d + add hl, bc + ld [hl], a + ret + +Function8e94c: ; 8e94c (23:694c) + callba PlacePartymonHPBar + call GetHPPal + ld e, d + ld d, 0 + ld hl, Unknown_8e95e + add hl, de + ld b, [hl] + ret +; 8e95e (23:695e) + +Unknown_8e95e: ; 8e95e + db $00, $40, $80 +; 8e961 + +Function8e961: ; 8e961 (23:6961) + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + xor a + call GetIconGFX + lb de, $24, $20 + ld a, SPRITE_ANIM_INDEX_00 + call InitSpriteAnimStruct + ld hl, $2 + add hl, bc + ld [hl], $0 + ret + +Function8e97d: ; 8e97d (23:697d) + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + xor a + call GetIconGFX + ld d, $1a + ld e, $24 + ld a, SPRITE_ANIM_INDEX_00 + call InitSpriteAnimStruct + ld hl, $2 + add hl, bc + ld [hl], $0 + ret + +Function8e99a: ; 8e99a (23:699a) + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + ld a, $62 + ld [wc3b7], a + call Function8e9db + ret + +GetSpeciesIcon: ; 8e9ac +; Load species icon into VRAM at tile a + push de + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + pop de + ld a, e + call GetIconGFX + ret +; 8e9bc + + +Function8e9bc: ; 8e9bc (23:69bc) + push de + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + pop de + ld a, e + call GetIcon_a + ret +; 8e9cc (23:69cc) + +Function8e9cc: ; 8e9cc + push de + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + pop de + call GetIcon_de + ret +; 8e9db + +Function8e9db: ; 8e9db (23:69db) + ld a, [wc3b7] + +GetIconGFX: ; 8e9de + call GetIcon_a + ld de, $80 ; 8 tiles + add hl, de + ld de, HeldItemIcons + lb bc, BANK(HeldItemIcons), 2 + call GetGFXUnlessMobile + ld a, [wc3b7] + add 10 + ld [wc3b7], a + ret + +HeldItemIcons: +INCBIN "gfx/icon/mail.2bpp" +INCBIN "gfx/icon/item.2bpp" +; 8ea17 + +GetIcon_de: ; 8ea17 +; Load icon graphics into VRAM starting from tile de. + ld l, e + ld h, d + jr GetIcon + +GetIcon_a: ; 8ea1b +; Load icon graphics into VRAM starting from tile a. + ld l, a + ld h, 0 + +GetIcon: ; 8ea1e +; Load icon graphics into VRAM starting from tile hl. + +; One tile is 16 bytes long. +rept 4 + add hl, hl +endr + + ld de, VTiles0 + add hl, de + push hl + +; The icons are contiguous, in order and of the same +; size, so the pointer table is somewhat redundant. + ld a, [CurIcon] + push hl + ld l, a + ld h, 0 + add hl, hl + ld de, IconPointers + add hl, de + ld a, [hli] + ld e, a + ld d, [hl] + pop hl + + lb bc, BANK(Icons), 8 + call GetGFXUnlessMobile + + pop hl + ret +; 8ea3f + +GetGFXUnlessMobile: ; 8ea3f + ld a, [wLinkMode] + cp LINK_MOBILE + jp nz, Request2bpp + jp Get2bpp_2 +; 8ea4a + +Function8ea4a: ; 8ea4a + ld hl, wSpriteAnimationStructs + ld e, $6 + ld a, [MenuSelection2] + ld d, a +.loop + ld a, [hl] + and a + jr z, .next + cp d + jr z, .loadwithtwo + ld a, $0 + jr .ok + +.loadwithtwo + ld a, $2 + +.ok + push hl + ld c, l + ld b, h + ld hl, $2 + add hl, bc + ld [hl], a + pop hl + +.next + ld bc, $10 + add hl, bc + dec e + jr nz, .loop + ret +; 8ea71 + +Function8ea71: ; 8ea71 + ld hl, wSpriteAnimationStructs + ld e, $6 +.loop + ld a, [hl] + and a + jr z, .zero + push hl + ld c, l + ld b, h + ld hl, $2 + add hl, bc + ld [hl], $1 + pop hl +.zero + ld bc, $10 + add hl, bc + dec e + jr nz, .loop + ret +; 8ea8c (23:6a8c) + +Function8ea8c: ; 8ea8c + ld hl, wSpriteAnimationStructs + ld e, $6 + ld a, [wd0e3] + ld d, a +.asm_8ea95 + ld a, [hl] + and a + jr z, .asm_8eaab + cp d + jr z, .asm_8eaa0 + ld a, $3 + jr .asm_8eaa2 +.asm_8eaa0 + ld a, $2 +.asm_8eaa2 + push hl + ld c, l + ld b, h + ld hl, $2 + add hl, bc + ld [hl], a + pop hl +.asm_8eaab + ld bc, $10 + add hl, bc + dec e + jr nz, .asm_8ea95 + ret + +INCLUDE "menu/mon_icons.asm" diff --git a/engine/startmenu.asm b/engine/startmenu.asm index bcf2247af..ba5e2330c 100755 --- a/engine/startmenu.asm +++ b/engine/startmenu.asm @@ -1761,7 +1761,7 @@ SetUpMoveScreenBG: ; 13172 xor a ld [hBGMapMode], a callba Functionfb571 - callba InefficientlyClear121BytesAtwc300 + callba ClearSpriteAnims ld a, [CurPartyMon] ld e, a ld d, $0 diff --git a/engine/time_capsule/conversion.asm b/engine/time_capsule/conversion.asm new file mode 100755 index 000000000..4b5b1ef83 --- /dev/null +++ b/engine/time_capsule/conversion.asm @@ -0,0 +1,684 @@ +; These functions seem to be related to backwards compatibility + +Functionfb57e: ; 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, .asm_fb59c + cp [hl] + jr nz, .asm_fb5db + +.asm_fb59c + ld b, h + ld c, l + ld hl, MON_LEVEL + add hl, bc + ld a, [hl] + cp 101 + jr nc, .asm_fb5db + ld a, [wLinkMode] + cp LINK_TIMECAPSULE + jr nz, .asm_fb5d9 + 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, .asm_fb5d9 + cp MAGNETON + jr z, .asm_fb5d9 + + ld [CurSpecies], a + call GetBaseData + ld hl, wcbea +rept 2 + add hl, bc +endr + ld a, [BaseType1] + cp [hl] + jr nz, .asm_fb5db + inc hl + ld a, [BaseType2] + cp [hl] + jr nz, .asm_fb5db + +.asm_fb5d9 + and a + ret + +.asm_fb5db + scf + ret +; fb5dd + +Functionfb5dd: ; fb5dd + ld a, [wd002] + ld d, a + ld a, [PartyCount] + ld b, a + ld c, $0 +.asm_fb5e7 + ld a, c + cp d + jr z, .asm_fb5f8 + push bc + ld a, c + ld hl, PartyMon1HP + call GetPartyLocation + pop bc + ld a, [hli] + or [hl] + jr nz, .asm_fb60b + +.asm_fb5f8 + inc c + dec b + jr nz, .asm_fb5e7 + ld a, [wd003] + ld hl, OTPartyMon1HP + call GetPartyLocation + ld a, [hli] + or [hl] + jr nz, .asm_fb60b + scf + ret + +.asm_fb60b + and a + ret +; fb60d + +Functionfb60d: ; fb60d + hlcoord 4, 0 + ld de, PlayerName + call PlaceString + ld a, $14 + ld [bc], a + hlcoord 4, 8 + ld de, wd26b + call PlaceString + ld a, $14 + ld [bc], a + hlcoord 7, 1 + ld de, PartySpecies + call Functionfb634 + hlcoord 7, 9 + ld de, OTPartySpecies + +Functionfb634: ; fb634 + ld c, $0 +.asm_fb636 + ld a, [de] + cp $ff + 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 .asm_fb636 +; fb656 + +KantoMonSpecials: ; fb656 +; The original special base stat for +; each Kanto monster from Red/Blue. + db 65 ; BULBASAUR + db 80 ; IVYSAUR + db 100 ; VENUSAUR + db 50 ; CHARMANDER + db 65 ; CHARMELEON + db 85 ; CHARIZARD + db 50 ; SQUIRTLE + db 65 ; WARTORTLE + db 85 ; BLASTOISE + db 20 ; CATERPIE + db 25 ; METAPOD + db 80 ; BUTTERFREE + db 20 ; WEEDLE + db 25 ; KAKUNA + db 45 ; BEEDRILL + db 35 ; PIDGEY + db 50 ; PIDGEOTTO + db 70 ; PIDGEOT + db 25 ; RATTATA + db 50 ; RATICATE + db 31 ; SPEAROW + db 61 ; FEAROW + db 40 ; EKANS + db 65 ; ARBOK + db 50 ; PIKACHU + db 90 ; RAICHU + db 30 ; SANDSHREW + db 55 ; SANDSLASH + db 40 ; NIDORAN_F + db 55 ; NIDORINA + db 75 ; NIDOQUEEN + db 40 ; NIDORAN_M + db 55 ; NIDORINO + db 75 ; NIDOKING + db 60 ; CLEFAIRY + db 85 ; CLEFABLE + db 65 ; VULPIX + db 100 ; NINETALES + db 25 ; JIGGLYPUFF + db 50 ; WIGGLYTUFF + db 40 ; ZUBAT + db 75 ; GOLBAT + db 75 ; ODDISH + db 85 ; GLOOM + db 100 ; VILEPLUME + db 55 ; PARAS + db 80 ; PARASECT + db 40 ; VENONAT + db 90 ; VENOMOTH + db 45 ; DIGLETT + db 70 ; DUGTRIO + db 40 ; MEOWTH + db 65 ; PERSIAN + db 50 ; PSYDUCK + db 80 ; GOLDUCK + db 35 ; MANKEY + db 60 ; PRIMEAPE + db 50 ; GROWLITHE + db 80 ; ARCANINE + db 40 ; POLIWAG + db 50 ; POLIWHIRL + db 70 ; POLIWRATH + db 105 ; ABRA + db 120 ; KADABRA + db 135 ; ALAKAZAM + db 35 ; MACHOP + db 50 ; MACHOKE + db 65 ; MACHAMP + db 70 ; BELLSPROUT + db 85 ; WEEPINBELL + db 100 ; VICTREEBEL + db 100 ; TENTACOOL + db 120 ; TENTACRUEL + db 30 ; GEODUDE + db 45 ; GRAVELER + db 55 ; GOLEM + db 65 ; PONYTA + db 80 ; RAPIDASH + db 40 ; SLOWPOKE + db 80 ; SLOWBRO + db 95 ; MAGNEMITE + db 120 ; MAGNETON + db 58 ; FARFETCH_D + db 35 ; DODUO + db 60 ; DODRIO + db 70 ; SEEL + db 95 ; DEWGONG + db 40 ; GRIMER + db 65 ; MUK + db 45 ; SHELLDER + db 85 ; CLOYSTER + db 100 ; GASTLY + db 115 ; HAUNTER + db 130 ; GENGAR + db 30 ; ONIX + db 90 ; DROWZEE + db 115 ; HYPNO + db 25 ; KRABBY + db 50 ; KINGLER + db 55 ; VOLTORB + db 80 ; ELECTRODE + db 60 ; EXEGGCUTE + db 125 ; EXEGGUTOR + db 40 ; CUBONE + db 50 ; MAROWAK + db 35 ; HITMONLEE + db 35 ; HITMONCHAN + db 60 ; LICKITUNG + db 60 ; KOFFING + db 85 ; WEEZING + db 30 ; RHYHORN + db 45 ; RHYDON + db 105 ; CHANSEY + db 100 ; TANGELA + db 40 ; KANGASKHAN + db 70 ; HORSEA + db 95 ; SEADRA + db 50 ; GOLDEEN + db 80 ; SEAKING + db 70 ; STARYU + db 100 ; STARMIE + db 100 ; MR__MIME + db 55 ; SCYTHER + db 95 ; JYNX + db 85 ; ELECTABUZZ + db 85 ; MAGMAR + db 55 ; PINSIR + db 70 ; TAUROS + db 20 ; MAGIKARP + db 100 ; GYARADOS + db 95 ; LAPRAS + db 48 ; DITTO + db 65 ; EEVEE + db 110 ; VAPOREON + db 110 ; JOLTEON + db 110 ; FLAREON + db 75 ; PORYGON + db 90 ; OMANYTE + db 115 ; OMASTAR + db 45 ; KABUTO + db 70 ; KABUTOPS + db 60 ; AERODACTYL + db 65 ; SNORLAX + db 125 ; ARTICUNO + db 125 ; ZAPDOS + db 125 ; MOLTRES + db 50 ; DRATINI + db 70 ; DRAGONAIR + db 100 ; DRAGONITE + db 154 ; MEWTWO + db 100 ; MEW +; fb6ed + + +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 Function41a7f + call WaitPressAorB_BlinkCursor + ld a, $1 + ld [wPokedexStatus], a + callba Function4424d + call WaitPressAorB_BlinkCursor + pop af + ld [wPokedexStatus], a + call MaxVolume + call FadeToWhite + ld a, [hSCX] + add $fb + ld [hSCX], a + call Functionfb8c8 + pop af + ld [hMapAnims], a + ret +; fb8c8 + +Functionfb8c8: ; fb8c8 + call ClearTileMap + call LoadFontsExtra + call LoadStandardFont + callba Function40ab2 + call Function3200 + callba GetEnemyMonDVs + ld a, [hli] + ld [TempMonDVs], a + ld a, [hl] + ld [TempMonDVs + 1], a + ld b, SCGB_1C + 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 + +Pokered_MonIndices: ; fb91c + db RHYDON + db KANGASKHAN + db NIDORAN_M + db CLEFAIRY + db SPEAROW + db VOLTORB + db NIDOKING + db SLOWBRO + db IVYSAUR + db EXEGGUTOR + db LICKITUNG + db EXEGGCUTE + db GRIMER + db GENGAR + db NIDORAN_F + db NIDOQUEEN + db CUBONE + db RHYHORN + db LAPRAS + db ARCANINE + db MEW + db GYARADOS + db SHELLDER + db TENTACOOL + db GASTLY + db SCYTHER + db STARYU + db BLASTOISE + db PINSIR + db TANGELA + db SCIZOR + db SHUCKLE + db GROWLITHE + db ONIX + db FEAROW + db PIDGEY + db SLOWPOKE + db KADABRA + db GRAVELER + db CHANSEY + db MACHOKE + db MR__MIME + db HITMONLEE + db HITMONCHAN + db ARBOK + db PARASECT + db PSYDUCK + db DROWZEE + db GOLEM + db HERACROSS + db MAGMAR + db HO_OH + db ELECTABUZZ + db MAGNETON + db KOFFING + db SNEASEL + db MANKEY + db SEEL + db DIGLETT + db TAUROS + db TEDDIURSA + db URSARING + db SLUGMA + db FARFETCH_D + db VENONAT + db DRAGONITE + db MAGCARGO + db SWINUB + db PILOSWINE + db DODUO + db POLIWAG + db JYNX + db MOLTRES + db ARTICUNO + db ZAPDOS + db DITTO + db MEOWTH + db KRABBY + db CORSOLA + db REMORAID + db OCTILLERY + db VULPIX + db NINETALES + db PIKACHU + db RAICHU + db DELIBIRD + db MANTINE + db DRATINI + db DRAGONAIR + db KABUTO + db KABUTOPS + db HORSEA + db SEADRA + db SKARMORY + db HOUNDOUR + db SANDSHREW + db SANDSLASH + db OMANYTE + db OMASTAR + db JIGGLYPUFF + db WIGGLYTUFF + db EEVEE + db FLAREON + db JOLTEON + db VAPOREON + db MACHOP + db ZUBAT + db EKANS + db PARAS + db POLIWHIRL + db POLIWRATH + db WEEDLE + db KAKUNA + db BEEDRILL + db HOUNDOOM + db DODRIO + db PRIMEAPE + db DUGTRIO + db VENOMOTH + db DEWGONG + db KINGDRA + db PHANPY + db CATERPIE + db METAPOD + db BUTTERFREE + db MACHAMP + db DONPHAN + db GOLDUCK + db HYPNO + db GOLBAT + db MEWTWO + db SNORLAX + db MAGIKARP + db PORYGON2 + db STANTLER + db MUK + db SMEARGLE + db KINGLER + db CLOYSTER + db TYROGUE + db ELECTRODE + db CLEFABLE + db WEEZING + db PERSIAN + db MAROWAK + db HITMONTOP + db HAUNTER + db ABRA + db ALAKAZAM + db PIDGEOTTO + db PIDGEOT + db STARMIE + db BULBASAUR + db VENUSAUR + db TENTACRUEL + db SMOOCHUM + db GOLDEEN + db SEAKING + db ELEKID + db MAGBY + db MILTANK + db BLISSEY + db PONYTA + db RAPIDASH + db RATTATA + db RATICATE + db NIDORINO + db NIDORINA + db GEODUDE + db PORYGON + db AERODACTYL + db RAIKOU + db MAGNEMITE + db ENTEI + db SUICUNE + db CHARMANDER + db SQUIRTLE + db CHARMELEON + db WARTORTLE + db CHARIZARD + db LARVITAR + db PUPITAR + db TYRANITAR + db LUGIA + db ODDISH + db GLOOM + db VILEPLUME + db BELLSPROUT + db WEEPINBELL + db VICTREEBEL + db CHIKORITA + db BAYLEEF + db MEGANIUM + db CYNDAQUIL + db QUILAVA + db TYPHLOSION + db TOTODILE + db CROCONAW + db FERALIGATR + db SENTRET + db FURRET + db HOOTHOOT + db NOCTOWL + db LEDYBA + db LEDIAN + db SPINARAK + db ARIADOS + db CROBAT + db CHINCHOU + db LANTURN + db PICHU + db CLEFFA + db IGGLYBUFF + db TOGEPI + db TOGETIC + db NATU + db XATU + db MAREEP + db FLAAFFY + db AMPHAROS + db BELLOSSOM + db MARILL + db AZUMARILL + db SUDOWOODO + db POLITOED + db HOPPIP + db SKIPLOOM + db JUMPLUFF + db AIPOM + db SUNKERN + db SUNFLORA + db YANMA + db WOOPER + db QUAGSIRE + db ESPEON + db UMBREON + db MURKROW + db SLOWKING + db MISDREAVUS + db UNOWN + db WOBBUFFET + db GIRAFARIG + db PINECO + db FORRETRESS + db DUNSPARCE + db GLIGAR + db STEELIX + db SNUBBULL + db GRANBULL + db QWILFISH + db WOBBUFFET + db WOBBUFFET +; fba18 diff --git a/engine/variables.asm b/engine/variables.asm new file mode 100755 index 000000000..a115e2c37 --- /dev/null +++ b/engine/variables.asm @@ -0,0 +1,150 @@ +_GetVarAction:: ; 80648 (20:4648) + ld a, c + cp NUM_VARS + jr c, .valid + xor a +.valid + ld c, a + ld b, 0 + ld hl, .VarActionTable +rept 3 + add hl, bc +endr + ld e, [hl] + inc hl + ld d, [hl] + inc hl + ld b, [hl] + ld a, b + and RETVAR_EXECUTE + jr nz, .call + ld a, b + and RETVAR_ADDR_DE + ret nz + ld a, [de] + jr .loadstringbuffer2 + +.call + call _de_ + ret + +.loadstringbuffer2: ; 8066c (20:466c) + ld de, StringBuffer2 + ld [de], a + ret +; 80671 (20:4671) + +.VarActionTable: ; 80671 +; $00: copy [de] to StringBuffer2 +; $40: return address in de +; $80: call function + dwb StringBuffer2, RETVAR_STRBUF2 + dwb PartyCount, RETVAR_STRBUF2 + dwb .BattleResult, RETVAR_EXECUTE + dwb BattleType, RETVAR_ADDR_DE + dwb TimeOfDay, RETVAR_STRBUF2 + dwb .CountCaughtMons, RETVAR_EXECUTE + dwb .CountSeenMons, RETVAR_EXECUTE + dwb .CountBadges, RETVAR_EXECUTE + dwb PlayerState, RETVAR_ADDR_DE + dwb .PlayerFacing, RETVAR_EXECUTE + dwb hHours, RETVAR_STRBUF2 + dwb .DayOfWeek, RETVAR_EXECUTE + dwb MapGroup, RETVAR_STRBUF2 + dwb MapNumber, RETVAR_STRBUF2 + dwb .UnownCaught, RETVAR_EXECUTE + dwb wPermission, RETVAR_STRBUF2 + dwb .BoxFreeSpace, RETVAR_EXECUTE + dwb wBugContestMinsRemaining, RETVAR_STRBUF2 + dwb XCoord, RETVAR_STRBUF2 + dwb YCoord, RETVAR_STRBUF2 + dwb wSpecialPhoneCallID, RETVAR_STRBUF2 + dwb wcf64, RETVAR_STRBUF2 + dwb wKurtApricornQuantity, RETVAR_STRBUF2 + dwb wCurrentCaller, RETVAR_ADDR_DE + dwb wBlueCardBalance, RETVAR_ADDR_DE + dwb wBuenasPassword, RETVAR_ADDR_DE + dwb wdc58, RETVAR_STRBUF2 + dwb NULL, RETVAR_STRBUF2 +; 806c5 + +.CountCaughtMons: ; 806c5 +; Caught mons. + ld hl, PokedexCaught + ld b, EndPokedexCaught - PokedexCaught + call CountSetBits + ld a, [wd265] + jp .loadstringbuffer2 +; 806d3 + +.CountSeenMons: ; 806d3 +; Seen mons. + ld hl, PokedexSeen + ld b, EndPokedexSeen - PokedexSeen + call CountSetBits + ld a, [wd265] + jp .loadstringbuffer2 +; 806e1 + +.CountBadges: ; 806e1 +; Number of owned badges. + ld hl, Badges + ld b, 2 + call CountSetBits + ld a, [wd265] + jp .loadstringbuffer2 +; 806ef + +.PlayerFacing: ; 806ef +; The direction the player is facing. + ld a, [PlayerDirection] + and $c + rrca + rrca + jp .loadstringbuffer2 +; 806f9 + +.DayOfWeek: ; 806f9 +; The day of the week. + call GetWeekday + jp .loadstringbuffer2 +; 806ff + +.UnownCaught: ; 806ff +; Number of unique Unown caught. + call .count + ld a, b + jp .loadstringbuffer2 + +.count + ld hl, UnownDex + ld b, 0 +.loop + ld a, [hli] + and a + ret z + inc b + ld a, b + cp 26 + jr c, .loop + ret +; 80715 + +.BoxFreeSpace: ; 80715 +; Remaining slots in the current box. + ld a, BANK(sBoxCount) + call GetSRAMBank + ld hl, sBoxCount + ld a, MONS_PER_BOX + sub [hl] + ld b, a + call CloseSRAM + ld a, b + jp .loadstringbuffer2 +; 80728 + +.BattleResult: ; 80728 + ld a, [wBattleResult] + and $3f + jp .loadstringbuffer2 +; 80730 -- cgit v1.2.3 From b02305625920d42649587d6ba6504777dcac25a0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 19 Nov 2015 23:38:16 -0500 Subject: engine/stats_screen.asm --- engine/stats_screen.asm | 1150 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1150 insertions(+) create mode 100755 engine/stats_screen.asm (limited to 'engine') diff --git a/engine/stats_screen.asm b/engine/stats_screen.asm new file mode 100755 index 000000000..11c6f61ce --- /dev/null +++ b/engine/stats_screen.asm @@ -0,0 +1,1150 @@ +Function4dc7b: ; 4dc7b (13:5c7b) + ld a, [wLinkMode] + cp LINK_MOBILE + jr nz, StatsScreenInit + + ld a, [wBattleMode] ; wd22d (aliases: EnemyMonEnd) + and a + jr z, StatsScreenInit + jr Function4dc8f + +StatsScreenInit: ; 4dc8a + ld hl, StatsScreenMain + jr StatsScreenInit_gotaddress + +Function4dc8f: ; 4dc8f + ld hl, StatsScreenBattle + jr StatsScreenInit_gotaddress + +StatsScreenInit_gotaddress: ; 4dc94 + ld a, [hMapAnims] + push af + xor a + ld [hMapAnims], a ; disable overworld tile animations + ld a, [wc2c6] ; whether sprite is to be mirrorred + push af + ld a, [wJumptableIndex] + ld b, a + ld a, [wcf64] + ld c, a + + push bc + push hl + call ClearBGPalettes + call ClearTileMap + call UpdateSprites + callba Functionfb53e + pop hl + call _hl_ + call ClearBGPalettes + call ClearTileMap + pop bc + + ; restore old values + ld a, b + ld [wJumptableIndex], a + ld a, c + ld [wcf64], a + pop af + ld [wc2c6], a + pop af + ld [hMapAnims], a + ret +; 0x4dcd2 + +StatsScreenMain: ; 0x4dcd2 + xor a + ld [wJumptableIndex], a + ; stupid interns + ld [wcf64], a + ld a, [wcf64] + and $fc + or $1 + ld [wcf64], a +.loop ; 4dce3 + ld a, [wJumptableIndex] + and $7f + ld hl, StatsScreenPointerTable + rst JumpTable + call Function4dd3a ; check for keys? + ld a, [wJumptableIndex] + bit 7, a + jr z, .loop + ret +; 0x4dcf7 + +StatsScreenBattle: ; 4dcf7 + xor a + ld [wJumptableIndex], a + ; stupid interns + ld [wcf64], a + ld a, [wcf64] + and $fc + or $1 + ld [wcf64], a +.loop + callba Function100dd2 + ld a, [wJumptableIndex] + and $7f + ld hl, StatsScreenPointerTable + rst JumpTable + call Function4dd3a + callba Function100dfd + jr c, .exit + ld a, [wJumptableIndex] + bit 7, a + jr z, .loop + +.exit + ret +; 4dd2a + +StatsScreenPointerTable: ; 4dd2a + dw MonStatsInit ; regular pokémon + dw EggStatsInit ; egg + dw StatsScreenWaitCry + dw Function4ddac + dw Function4ddc6 + dw StatsScreenWaitCry + dw Function4ddd6 + dw Function4dd6c +; 4dd3a + + +Function4dd3a: ; 4dd3a (13:5d3a) + ld hl, wcf64 + bit 6, [hl] + jr nz, .asm_4dd49 + bit 5, [hl] + jr nz, .asm_4dd56 + call DelayFrame + ret +.asm_4dd49 + callba Functiond00b4 + jr nc, .asm_4dd56 + ld hl, wcf64 + res 6, [hl] +.asm_4dd56 + ld hl, wcf64 + res 5, [hl] + callba Function10402d + ret + +Function4dd62: ; 4dd62 (13:5d62) + ld a, [wJumptableIndex] + and $80 + or h + ld [wJumptableIndex], a + ret + +Function4dd6c: ; 4dd6c (13:5d6c) + ld hl, wJumptableIndex + set 7, [hl] + ret + +MonStatsInit: ; 4dd72 (13:5d72) + ld hl, wcf64 + res 6, [hl] + call ClearBGPalettes + call ClearTileMap + callba Function10402d + call Function4ddf2 + ld a, [CurPartySpecies] + cp EGG + jr z, .asm_4dd9b + call Function4deea + ld hl, wcf64 + set 4, [hl] + ld h, $4 + call Function4dd62 + ret +.asm_4dd9b + ld h, $1 + call Function4dd62 + ret + +EggStatsInit: ; 4dda1 + call EggStatsScreen + ld a, [wJumptableIndex] + inc a + ld [wJumptableIndex], a + ret +; 0x4ddac + + +Function4ddac: ; 4ddac (13:5dac) + call Function4de2c + jr nc, .asm_4ddb7 + ld h, $0 + call Function4dd62 + ret +.asm_4ddb7 + bit 0, a + jr nz, .asm_4ddc0 + and $c3 + jp Function4de54 +.asm_4ddc0 + ld h, $7 + call Function4dd62 + ret + +Function4ddc6: ; 4ddc6 (13:5dc6) + call Function4dfb6 + ld hl, wcf64 + res 4, [hl] + ld a, [wJumptableIndex] + inc a + ld [wJumptableIndex], a + ret + +Function4ddd6: ; 4ddd6 (13:5dd6) + call Function4de2c + jr nc, .asm_4dde1 + ld h, $0 + call Function4dd62 + ret + +.asm_4dde1 + and $f3 + jp Function4de54 + +StatsScreenWaitCry: ; 4dde6 (13:5de6) + call IsSFXPlaying + ret nc + ld a, [wJumptableIndex] + inc a + ld [wJumptableIndex], a + ret + +Function4ddf2: ; 4ddf2 (13:5df2) + ld a, [MonType] + cp BREEDMON + jr nz, .asm_4de10 + ld a, [wd018_Mon] + ld [CurSpecies], a + call GetBaseData + ld hl, wd018_Mon + ld de, TempMon + ld bc, PARTYMON_STRUCT_LENGTH + call CopyBytes + jr .asm_4de2a +.asm_4de10 + callba CopyPkmnToTempMon + ld a, [CurPartySpecies] + cp EGG + jr z, .asm_4de2a + ld a, [MonType] + cp BOXMON + jr c, .asm_4de2a + callba Function50890 +.asm_4de2a + and a + ret + +Function4de2c: ; 4de2c (13:5e2c) + call GetJoypad + ld a, [MonType] + cp BREEDMON + jr nz, .notbreedmon + push hl + push de + push bc + callba Functione2f95 + pop bc + pop de + pop hl + ld a, [wcf73] + and $c0 + jr nz, .set_carry + ld a, [wcf73] + jr .clear_flags + +.notbreedmon + ld a, [hJoyPressed] +.clear_flags + and a + ret + +.set_carry + scf + ret + +Function4de54: ; 4de54 (13:5e54) + push af + ld a, [wcf64] + and $3 + ld c, a + pop af + bit 1, a + jp nz, Function4dee4 + bit 5, a + jr nz, .asm_4dec7 + bit 4, a + jr nz, .asm_4debd + bit 0, a + jr nz, .asm_4deb8 + bit 6, a + jr nz, .asm_4dea0 + bit 7, a + jr nz, .asm_4de77 + jr .asm_4dece +.asm_4de77 + ld a, [MonType] + cp BOXMON + jr nc, .asm_4dece + and a + ld a, [PartyCount] + jr z, .asm_4de87 + ld a, [OTPartyCount] +.asm_4de87 + ld b, a + ld a, [CurPartyMon] + inc a + cp b + jr z, .asm_4dece + ld [CurPartyMon], a + ld b, a + ld a, [MonType] + and a + jr nz, .asm_4dede + ld a, b + inc a + ld [wd0d8], a + jr .asm_4dede +.asm_4dea0 + ld a, [CurPartyMon] + and a + jr z, .asm_4dece + dec a + ld [CurPartyMon], a + ld b, a + ld a, [MonType] + and a + jr nz, .asm_4dede + ld a, b + inc a + ld [wd0d8], a + jr .asm_4dede +.asm_4deb8 + ld a, c + cp $3 + jr z, Function4dee4 +.asm_4debd + inc c + ld a, $3 + cp c + jr nc, .asm_4decf + ld c, $1 + jr .asm_4decf +.asm_4dec7 + dec c + jr nz, .asm_4decf + ld c, $3 + jr .asm_4decf +.asm_4dece + ret +.asm_4decf + ld a, [wcf64] + and $fc + or c + ld [wcf64], a + ld h, $4 + call Function4dd62 + ret +.asm_4dede + ld h, $0 + call Function4dd62 + ret + +Function4dee4: ; 4dee4 (13:5ee4) + ld h, $7 + call Function4dd62 + ret + +Function4deea: ; 4deea (13:5eea) + call Function4df45 + xor a + ld [hBGMapMode], a + ld a, [CurBaseData] ; wd236 (aliases: BaseDexNo) + ld [wd265], a + ld [CurSpecies], a + hlcoord 8, 0 + ld [hl], "№" + inc hl + ld [hl], "." + inc hl + hlcoord 10, 0 + lb bc, PRINTNUM_LEADINGZEROS | 1, 3 + ld de, wd265 + call PrintNum + hlcoord 14, 0 + call PrintLevel + ld hl, Unknown_4df77 + call Function4e528 + call Function4e505 + hlcoord 8, 2 + call PlaceString + hlcoord 18, 0 + call Function4df66 + hlcoord 9, 4 + ld a, "/" + ld [hli], a + ld a, [CurBaseData] ; wd236 (aliases: BaseDexNo) + ld [wd265], a + call GetPokemonName + call PlaceString + call Function4df8f + call Function4df9b + call Function4dfa6 + ret + +Function4df45: ; 4df45 (13:5f45) + ld hl, TempMonHP + ld a, [hli] + ld b, a + ld c, [hl] + ld hl, TempMonMaxHP + ld a, [hli] + ld d, a + ld e, [hl] + callba DrawPartyMenuHPBar + ld hl, wcda1 + call SetHPPal + ld b, SCGB_03 + call GetSGBLayout + call DelayFrame + ret + +Function4df66: ; 4df66 (13:5f66) + push hl + callba GetGender + pop hl + ret c + ld a, "♂" + jr nz, .got_gender + ld a, "♀" +.got_gender + ld [hl], a + ret +; 4df77 (13:5f77) + +Unknown_4df77: ; 4df77 + dw PartyMonNicknames + dw OTPartyMonNicknames + dw sBoxMonNicknames + dw wd002 +; 4df7f + +Function4df7f: ; 4df7f + hlcoord 7, 0 + ld bc, SCREEN_WIDTH + ld d, SCREEN_HEIGHT +.loop + ld a, $31 + ld [hl], a + add hl, bc + dec d + jr nz, .loop + ret +; 4df8f + +Function4df8f: ; 4df8f (13:5f8f) + hlcoord 0, 7 + ld b, SCREEN_WIDTH + ld a, "_" +.loop + ld [hli], a + dec b + jr nz, .loop + ret + +Function4df9b: ; 4df9b (13:5f9b) + hlcoord 12, 6 + ld [hl], "◀" + hlcoord 19, 6 + ld [hl], "▶" + ret + +Function4dfa6: ; 4dfa6 (13:5fa6) + ld bc, TempMonDVs + callba CheckShininess + ret nc + hlcoord 19, 0 + ld [hl], "" + ret + +Function4dfb6: ; 4dfb6 (13:5fb6) + ld a, [CurBaseData] ; wd236 (aliases: BaseDexNo) + ld [wd265], a + ld [CurSpecies], a + xor a + ld [hBGMapMode], a + call Function4dfda + call Function4e002 + call Function4dfed + ld hl, wcf64 + bit 4, [hl] + jr nz, .asm_4dfd6 + call SetPalettes + ret + +.asm_4dfd6 + call Function4e226 + ret + +Function4dfda: ; 4dfda (13:5fda) + ld a, [wcf64] + and $3 + ld c, a + call Function4e4cd + hlcoord 0, 8 + lb bc, 10, 20 + call ClearBox + ret + +Function4dfed: ; 4dfed (13:5fed) + ld a, [wcf64] + and $3 + ld c, a + callba Function8c8a + call DelayFrame + ld hl, wcf64 + set 5, [hl] + ret + +Function4e002: ; 4e002 (13:6002) + ld a, [wcf64] + and $3 + dec a + ld hl, Jumptable_4e00d + rst JumpTable + ret + +Jumptable_4e00d: ; 4e00d (13:600d) + dw Function4e013 + dw Function4e147 + dw Function4e1ae + + +Function4e013: ; 4e013 (13:6013) + hlcoord 0, 9 + ld b, $0 + predef DrawPlayerHP + hlcoord 8, 9 + ld [hl], $41 + ld de, String_4e119 + hlcoord 0, 12 + call PlaceString + ld a, [TempMonPokerusStatus] + ld b, a + and $f + jr nz, .asm_4e055 + ld a, b + and $f0 + jr z, .asm_4e03d + hlcoord 8, 8 + ld [hl], $e8 +.asm_4e03d + ld a, [MonType] + cp $2 + jr z, .asm_4e060 + hlcoord 6, 13 + push hl + ld de, TempMonStatus + predef PlaceStatusString + pop hl + jr nz, .asm_4e066 + jr .asm_4e060 +.asm_4e055 + ld de, String_4e142 + hlcoord 1, 13 + call PlaceString + jr .asm_4e066 +.asm_4e060 + ld de, String_4e127 + call PlaceString +.asm_4e066 + hlcoord 1, 15 + predef PrintMonTypes + hlcoord 9, 8 + ld de, $14 + ld b, $a + ld a, $31 +.asm_4e078 + ld [hl], a + add hl, de + dec b + jr nz, .asm_4e078 + ld de, String_4e12b + hlcoord 10, 9 + call PlaceString + hlcoord 17, 14 + call Function4e0d3 + hlcoord 13, 10 + lb bc, 3, 7 + ld de, TempMonExp + call PrintNum + call Function4e0e7 + hlcoord 13, 13 + lb bc, 3, 7 + ld de, Buffer1 ; wd1ea (aliases: MagikarpLength) + call PrintNum + ld de, String_4e136 + hlcoord 10, 12 + call PlaceString + ld de, String_4e13f + hlcoord 14, 14 + call PlaceString + hlcoord 11, 16 + ld a, [TempMonLevel] + ld b, a + ld de, TempMonExp + 2 + predef FillInExpBar + hlcoord 10, 16 + ld [hl], $40 + hlcoord 19, 16 + ld [hl], $41 + ret + +Function4e0d3: ; 4e0d3 (13:60d3) + ld a, [TempMonLevel] + push af + cp MAX_LEVEL + jr z, .asm_4e0df + inc a + ld [TempMonLevel], a +.asm_4e0df + call PrintLevel + pop af + ld [TempMonLevel], a + ret + +Function4e0e7: ; 4e0e7 (13:60e7) + ld a, [TempMonLevel] + cp MAX_LEVEL + jr z, .asm_4e111 + inc a + ld d, a + callba CalcExpAtLevel +rept 2 + ld hl, TempMonExp + 2 +endr + ld a, [$ffb6] + sub [hl] + dec hl + ld [wd1ec], a + ld a, [$ffb5] + sbc [hl] + dec hl + ld [Buffer2], a ; wd1eb (aliases: MovementType) + ld a, [hQuotient] + sbc [hl] + ld [Buffer1], a ; wd1ea (aliases: MagikarpLength) + ret +.asm_4e111 + ld hl, Buffer1 ; wd1ea (aliases: MagikarpLength) + xor a +rept 2 + ld [hli], a +endr + ld [hl], a + ret +; 4e119 (13:6119) + +String_4e119: ; 4e119 + db "STATUS/" + next "TYPE/@" +; 4e127 + +String_4e127: ; 4e127 + db "OK @" +; 4e12b + +String_4e12b: ; 4e12b + db "EXP POINTS@" +; 4e136 + +String_4e136: ; 4e136 + db "LEVEL UP@" +; 4e13f + +String_4e13f: ; 4e13f + db "TO@" +; 4e142 + +String_4e142: ; 4e142 + db "#RUS@" +; 4e147 + +Function4e147: ; 4e147 (13:6147) + ld de, String_4e1a0 + hlcoord 0, 8 + call PlaceString + call Function4e189 + hlcoord 8, 8 + call PlaceString + ld de, String_4e1a9 + hlcoord 0, 10 + call PlaceString + ld hl, TempMonMoves + ld de, wListMoves_MoveIndicesBuffer + ld bc, NUM_MOVES + call CopyBytes + hlcoord 8, 10 + ld a, SCREEN_WIDTH * 2 + ld [Buffer1], a + predef ListMoves + hlcoord 12, 11 + ld a, $28 + ld [Buffer1], a + predef Function50c50 + ret + +Function4e189: ; 4e189 (13:6189) + ld de, String_4e1a5 + ld a, [TempMonItem] + and a + ret z + ld b, a + callba Function28771 + ld a, b + ld [wd265], a + call GetItemName + ret +; 4e1a0 (13:61a0) + +String_4e1a0: ; 4e1a0 + db "ITEM@" +; 4e1a5 + +String_4e1a5: ; 4e1a5 + db "---@" +; 4e1a9 + +String_4e1a9: ; 4e1a9 + db "MOVE@" +; 4e1ae + +Function4e1ae: ; 4e1ae (13:61ae) + call Function4e1cc + hlcoord 10, 8 + ld de, $14 + ld b, $a + ld a, $31 +.asm_4e1bb + ld [hl], a + add hl, de + dec b + jr nz, .asm_4e1bb + hlcoord 11, 8 + ld bc, $6 + predef PrintTempMonStats + ret + +Function4e1cc: ; 4e1cc (13:61cc) + ld de, IDNoString + hlcoord 0, 9 + call PlaceString + ld de, OTString + hlcoord 0, 12 + call PlaceString + hlcoord 2, 10 + lb bc, PRINTNUM_LEADINGZEROS | 2, 5 + ld de, TempMonID + call PrintNum + ld hl, Unknown_4e216 + call Function4e528 + call Function4e505 + callba CheckNickErrors + hlcoord 2, 13 + call PlaceString + ld a, [TempMonCaughtGender] + and a + jr z, .asm_4e215 + cp $7f + jr z, .asm_4e215 + and $80 + ld a, "♂" + jr z, .asm_4e211 + ld a, "♀" +.asm_4e211 + hlcoord 9, 13 + ld [hl], a +.asm_4e215 + ret +; 4e216 (13:6216) + +Unknown_4e216: ; 4e216 + dw PartyMonOT + dw OTPartyMonOT + dw sBoxMonOT + dw wd00d +; 4e21e + +IDNoString: ; 4e21e + db $73, "№.@" + +OTString: ; 4e222 + db "OT/@" +; 4e226 + + +Function4e226: ; 4e226 (13:6226) + ld hl, TempMonDVs + predef GetUnownLetter + call Function4e2ad + jr c, .asm_4e238 + and a + jr z, .asm_4e23f + jr .asm_4e246 +.asm_4e238 + call Function4e271 + call SetPalettes + ret +.asm_4e23f + call Function4e253 + call SetPalettes + ret +.asm_4e246 + call SetPalettes + call Function4e253 + ld a, [CurPartySpecies] + call PlayCry2 + ret + +Function4e253: ; 4e253 (13:6253) + ld hl, wcf64 + set 5, [hl] + ld a, [CurPartySpecies] + cp UNOWN + jr z, .asm_4e266 + hlcoord 0, 0 + call PrepMonFrontpic + ret +.asm_4e266 + xor a + ld [wc2c6], a + hlcoord 0, 0 + call _PrepMonFrontpic + ret + +Function4e271: ; 4e271 (13:6271) + ld a, [CurPartySpecies] + cp UNOWN + jr z, .asm_4e281 + ld a, $1 + ld [wc2c6], a + call Function4e289 + ret +.asm_4e281 + xor a + ld [wc2c6], a + call Function4e289 + ret + +Function4e289: ; 4e289 (13:6289) + ld a, [CurPartySpecies] + call IsAPokemon + ret c + call Function4e307 + ld de, VTiles2 tile $00 + predef Function5108b + hlcoord 0, 0 + ld d, $0 + ld e, $2 + predef LoadMonAnimation + ld hl, wcf64 + set 6, [hl] + ret + +Function4e2ad: ; 4e2ad (13:62ad) + ld a, [MonType] + ld hl, .Jumptable + rst JumpTable + ret + +.Jumptable: ; 4e2b5 (13:62b5) + dw Function4e2bf + dw Function4e2cf + dw Function4e2d1 + dw Function4e2ed + dw Function4e301 + + +Function4e2bf: ; 4e2bf (13:62bf) + ld a, [CurPartyMon] + ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species) + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + ld b, h + ld c, l + jr Function4e2f2 + +Function4e2cf: ; 4e2cf (13:62cf) + xor a + ret + +Function4e2d1: ; 4e2d1 (13:62d1) + ld hl, sBoxMons + ld bc, PARTYMON_STRUCT_LENGTH + ld a, [CurPartyMon] + call AddNTimes + ld b, h + ld c, l + ld a, BANK(sBoxMons) + call GetSRAMBank + call Function4e2f2 + push af + call CloseSRAM + pop af + ret + +Function4e2ed: ; 4e2ed (13:62ed) + ld bc, TempMonSpecies ; wd10e (aliases: TempMon) + jr Function4e2f2 ; utterly pointless + +Function4e2f2: ; 4e2f2 (13:62f2) + ld a, [CurPartySpecies] + cp EGG + jr z, .egg + call CheckFaintedFrzSlp + jr c, Function4e305 +.egg + xor a + scf + ret + +Function4e301: ; 4e301 (13:6301) + ld a, $1 + and a + ret +Function4e305: ; 4e305 (13:6305) + xor a + ret + +Function4e307: ; 4e307 (13:6307) + nop + push hl + push de + push bc + push af + call DelayFrame + ld a, [rVBK] + push af + ld a, $1 + ld [rVBK], a + ld de, TextBoxSpaceGFX + lb bc, BANK(TextBoxSpaceGFX), 1 + ld hl, VTiles2 tile $7f + call Get2bpp + pop af + ld [rVBK], a + pop af + pop bc + pop de + pop hl + ret +; 4e32a (13:632a) + +Unknown_4e32a: ; 4e32a +; A blank tile? + ds 16 +; 4e33a + +EggStatsScreen: ; 4e33a + xor a + ld [hBGMapMode], a + ld hl, wcda1 + call SetHPPal + ld b, SCGB_03 + call GetSGBLayout + call Function4df8f + ld de, EggString + hlcoord 8, 1 + call PlaceString + ld de, IDNoString + hlcoord 8, 3 + call PlaceString + ld de, OTString + hlcoord 8, 5 + call PlaceString + ld de, FiveQMarkString + hlcoord 11, 3 + call PlaceString + ld de, FiveQMarkString + hlcoord 11, 5 + call PlaceString + ld a, [TempMonHappiness] ; egg status + ld de, EggSoonString + cp $6 + jr c, .picked + ld de, EggCloseString + cp $b + jr c, .picked + ld de, EggMoreTimeString + cp $29 + jr c, .picked + ld de, EggALotMoreTimeString +.picked + hlcoord 1, 9 + call PlaceString + ld hl, wcf64 + set 5, [hl] + call SetPalettes ; pals + call DelayFrame + hlcoord 0, 0 + call PrepMonFrontpic + callba Function10402d + call Function4e497 + + ld a, [TempMonHappiness] + cp 6 + ret nc + ld de, SFX_2_BOOPS + call PlaySFX + ret +; 0x4e3c0 + +EggString: ; 4e3c0 + db "EGG@" + +FiveQMarkString: ; 4e3c4 + db "?????@" + +EggSoonString: ; 0x4e3ca + db "It's making sounds" + next "inside. It's going" + next "to hatch soon!@" + +EggCloseString: ; 0x4e3fd + db "It moves around" + next "inside sometimes." + next "It must be close" + next "to hatching.@" + +EggMoreTimeString: ; 0x4e43d + db "Wonder what's" + next "inside? It needs" + next "more time, though.@" + +EggALotMoreTimeString: ; 0x4e46e + db "This EGG needs a" + next "lot more time to" + next "hatch.@" +; 0x4e497 + + +Function4e497: ; 4e497 (13:6497) + call Function4e2ad + ret nc + ld a, [TempMonHappiness] + ld e, $7 + cp $6 + jr c, .asm_4e4ab + ld e, $8 + cp $b + jr c, .asm_4e4ab + ret +.asm_4e4ab + push de + ld a, $1 + ld [wc2c6], a + call Function4e307 + ld de, VTiles2 tile $00 + predef Function5108b + pop de + hlcoord 0, 0 + ld d, $0 + predef LoadMonAnimation + ld hl, wcf64 + set 6, [hl] + ret + +Function4e4cd: ; 4e4cd (13:64cd) + hlcoord 13, 5 + ld a, $36 + call .load_square + hlcoord 15, 5 + ld a, $36 + call .load_square + hlcoord 17, 5 + ld a, $36 + call .load_square + ld a, c + cp $2 + ld a, $3a + hlcoord 13, 5 + jr c, .load_square + hlcoord 15, 5 + jr z, .load_square + hlcoord 17, 5 +.load_square: ; 4e4f7 (13:64f7) + push bc + ld [hli], a + inc a + ld [hld], a + ld bc, SCREEN_WIDTH + add hl, bc + inc a + ld [hli], a + inc a + ld [hl], a + pop bc + ret + +Function4e505: ; 4e505 (13:6505) + ld de, StringBuffer1 + ld bc, PKMN_NAME_LENGTH + jr .okay ; uuterly pointless +.okay + ld a, [MonType] + cp BOXMON + jr nz, .partymon + ld a, BANK(sBoxMonNicknames) + call GetSRAMBank + push de + call CopyBytes + pop de + call CloseSRAM + ret + +.partymon + push de + call CopyBytes + pop de + ret + +Function4e528: ; 4e528 (13:6528) + ld a, [MonType] + add a + ld c, a + ld b, 0 + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [MonType] + cp $3 + ret z + ld a, [CurPartyMon] + jp SkipNames + + +CheckFaintedFrzSlp: ; 4e53f + ld hl, MON_HP + add hl, bc + ld a, [hli] + or [hl] + jr z, .fainted_frz_slp + ld hl, MON_STATUS + add hl, bc + ld a, [hl] + and (1 << FRZ) | SLP + jr nz, .fainted_frz_slp + and a + ret + +.fainted_frz_slp + scf + ret +; 4e554 -- cgit v1.2.3 From 812976cee6ba39d50583921273ad85195e77be37 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 20 Nov 2015 11:47:52 -0500 Subject: bgcoord --- engine/battle_start.asm | 2 +- engine/color.asm | 6 +- engine/crystal_intro.asm | 40 +- engine/decorations.asm | 1 + engine/evolution_animation.asm | 6 +- engine/intro_menu.asm | 1427 ++++++++++++++++++++++++++++++++++++ engine/link.asm | 10 +- engine/main_menu.asm | 6 +- engine/map_setup.asm | 12 +- engine/phone.asm | 4 +- engine/pokegear.asm | 10 +- engine/save.asm | 6 +- engine/slot_machine.asm | 2 +- engine/specials.asm | 10 +- engine/time_capsule/conversion.asm | 2 +- engine/timeofdaypals.asm | 6 +- engine/timeset.asm | 4 +- engine/title.asm | 54 +- 18 files changed, 1518 insertions(+), 90 deletions(-) create mode 100755 engine/intro_menu.asm (limited to 'engine') diff --git a/engine/battle_start.asm b/engine/battle_start.asm index 5bcaad99c..2b32e41b9 100644 --- a/engine/battle_start.asm +++ b/engine/battle_start.asm @@ -84,7 +84,7 @@ endr Function8c2a0: ; 8c2a0 call LoadTrainerBattlePokeballTiles - ld hl, VBGMap0 + hlbgcoord 0, 0 call Function8c2cf ret ; 8c2aa diff --git a/engine/color.asm b/engine/color.asm index c44b296d4..bf428f51c 100644 --- a/engine/color.asm +++ b/engine/color.asm @@ -319,7 +319,7 @@ Function8bec: ; 8bec ld a, [EnemySafeguardCount] and $3 call FillBoxCGB - call LoadDETile + call LoadEDTile ret ; 8c1d @@ -702,7 +702,7 @@ Function96b3: ; 96b3 .asm_96d0 hlcoord 0, 0, AttrMap - ld de, VBGMap0 + debgcoord 0, 0 ld b, $12 ld a, $1 ld [rVBK], a @@ -1293,7 +1293,7 @@ ClearBytes: ; 0x9a5b DrawDefaultTiles: ; 0x9a64 ; Draw 240 tiles (2/3 of the screen) from tiles in VRAM - ld hl, VBGMap0 ; BG Map 0 + hlbgcoord 0, 0 ; BG Map 0 ld de, 32 - 20 ld a, $80 ; starting tile ld c, 12 + 1 diff --git a/engine/crystal_intro.asm b/engine/crystal_intro.asm index 7849a9f48..0ed427de4 100755 --- a/engine/crystal_intro.asm +++ b/engine/crystal_intro.asm @@ -506,7 +506,7 @@ IntroScene1: ; e495b (39:495b) ld a, $1 ld [rVBK], a ld hl, IntroTilemap001 - ld de, VBGMap0 tile $00 + debgcoord 0, 0 call Functione54fa ld a, $0 ld [rVBK], a @@ -517,7 +517,7 @@ IntroScene1: ; e495b (39:495b) ld de, VTiles0 tile $00 call Functione54c2 ld hl, IntroTilemap002 - ld de, VBGMap0 tile $00 + debgcoord 0, 0 call Functione54fa ld a, [rSVBK] push af @@ -582,7 +582,7 @@ IntroScene3: ; e49fd (39:49fd) ld a, $1 ld [rVBK], a ld hl, IntroTilemap003 - ld de, VBGMap0 tile $00 + debgcoord 0, 0 call Functione54fa ld a, $0 ld [rVBK], a @@ -590,7 +590,7 @@ IntroScene3: ; e49fd (39:49fd) ld de, VTiles2 tile $00 call Functione54c2 ld hl, IntroTilemap004 - ld de, VBGMap0 tile $00 + debgcoord 0, 0 call Functione54fa ld a, [rSVBK] push af @@ -644,7 +644,7 @@ IntroScene5: ; e4a7a (39:4a7a) ld a, $1 ld [rVBK], a ld hl, IntroTilemap005 - ld de, VBGMap0 tile $00 + debgcoord 0, 0 call Functione54fa ld a, $0 ld [rVBK], a @@ -655,7 +655,7 @@ IntroScene5: ; e4a7a (39:4a7a) ld de, VTiles0 tile $00 call Functione54c2 ld hl, IntroTilemap006 - ld de, VBGMap0 tile $00 + debgcoord 0, 0 call Functione54fa ld a, [rSVBK] push af @@ -738,7 +738,7 @@ IntroScene7: ; e4b3f (39:4b3f) ld a, $1 ld [rVBK], a ld hl, IntroTilemap003 - ld de, VBGMap0 tile $00 + debgcoord 0, 0 call Functione54fa ld hl, IntroPichuWooperGFX ld de, VTiles0 tile $00 @@ -752,7 +752,7 @@ IntroScene7: ; e4b3f (39:4b3f) ld de, VTiles2 tile $00 call Functione54c2 ld hl, IntroTilemap004 - ld de, VBGMap0 tile $00 + debgcoord 0, 0 call Functione54fa ld a, [rSVBK] push af @@ -894,7 +894,7 @@ IntroScene11: ; e4c86 (39:4c86) ld a, $1 ld [rVBK], a ld hl, IntroTilemap007 - ld de, VBGMap0 tile $00 + debgcoord 0, 0 call Functione54fa ld a, $0 ld [rVBK], a @@ -902,7 +902,7 @@ IntroScene11: ; e4c86 (39:4c86) ld de, VTiles2 tile $00 call Functione54c2 ld hl, IntroTilemap008 - ld de, VBGMap0 tile $00 + debgcoord 0, 0 call Functione54fa ld a, [rSVBK] push af @@ -1016,7 +1016,7 @@ IntroScene13: ; e4d6d (39:4d6d) ld a, $1 ld [rVBK], a ld hl, IntroTilemap003 - ld de, VBGMap0 tile $00 + debgcoord 0, 0 call Functione54fa ld a, $0 ld [rVBK], a @@ -1027,7 +1027,7 @@ IntroScene13: ; e4d6d (39:4d6d) ld de, VTiles2 tile $00 call Functione54c2 ld hl, IntroTilemap004 - ld de, VBGMap0 tile $00 + debgcoord 0, 0 call Functione54fa ld a, [rSVBK] push af @@ -1120,7 +1120,7 @@ IntroScene15: ; e4e40 (39:4e40) ld a, $1 ld [rVBK], a ld hl, IntroTilemap009 - ld de, VBGMap0 tile $00 + debgcoord 0, 0 call Functione54fa ld a, $0 ld [rVBK], a @@ -1135,7 +1135,7 @@ IntroScene15: ; e4e40 (39:4e40) lb bc, BANK(GFX_e7a5d), 1 call Request2bpp ld hl, IntroTilemap010 - ld de, VBGMap0 tile $00 + debgcoord 0, 0 call Functione54fa call Functione541b ld a, [rSVBK] @@ -1202,7 +1202,7 @@ IntroScene17: ; e4ef5 (39:4ef5) ld a, $1 ld [rVBK], a ld hl, IntroTilemap011 - ld de, VBGMap0 tile $00 + debgcoord 0, 0 call Functione54fa ld a, $0 ld [rVBK], a @@ -1210,7 +1210,7 @@ IntroScene17: ; e4ef5 (39:4ef5) ld de, VTiles1 tile $00 call Functione54de ld hl, IntroTilemap012 - ld de, VBGMap0 tile $00 + debgcoord 0, 0 call Functione54fa ld a, [rSVBK] push af @@ -1268,7 +1268,7 @@ IntroScene19: ; e4f7e (39:4f7e) ld a, $1 ld [rVBK], a ld hl, IntroTilemap013 - ld de, VBGMap0 tile $00 + debgcoord 0, 0 call Functione54fa ld a, $0 ld [rVBK], a @@ -1283,7 +1283,7 @@ IntroScene19: ; e4f7e (39:4f7e) lb bc, BANK(GFX_e7a5d), 1 call Request2bpp ld hl, IntroTilemap014 - ld de, VBGMap0 tile $00 + debgcoord 0, 0 call Functione54fa call Functione541b ld a, [rSVBK] @@ -1444,7 +1444,7 @@ IntroScene26: ; e50bb (39:50bb) ld a, $1 ld [rVBK], a ld hl, IntroTilemap015 - ld de, VBGMap0 tile $00 + debgcoord 0, 0 call Functione54fa ld a, $0 ld [rVBK], a @@ -1452,7 +1452,7 @@ IntroScene26: ; e50bb (39:50bb) ld de, VTiles2 tile $00 call Functione54c2 ld hl, IntroTilemap017 - ld de, VBGMap0 tile $00 + debgcoord 0, 0 call Functione54fa ld a, [rSVBK] push af diff --git a/engine/decorations.asm b/engine/decorations.asm index a46d359a5..519f88d7c 100755 --- a/engine/decorations.asm +++ b/engine/decorations.asm @@ -1195,6 +1195,7 @@ DecorationIDs: ; 26f2b db DECO_BIG_SNORLAX_DOLL ; 1a db DECO_BIG_ONIX_DOLL ; 1b db DECO_BIG_LAPRAS_DOLL ; 1c +Trophys: db DECO_GOLD_TROPHY_DOLL ; 33 db DECO_SILVER_TROPHY_DOLL ; 34 db -1 diff --git a/engine/evolution_animation.asm b/engine/evolution_animation.asm index ce7dbd7f5..8e0a4af6d 100755 --- a/engine/evolution_animation.asm +++ b/engine/evolution_animation.asm @@ -378,7 +378,7 @@ Function4e881: ; 4e881 call DisableLCD call LoadStandardFont call LoadFontsBattleExtra - ld hl, VBGMap0 + hlbgcoord 0, 0 ld bc, VBGMap1 - VBGMap0 ld a, " " call ByteFill @@ -411,7 +411,7 @@ Function4e8c2: ; 4e8c2 call DisableLCD call LoadStandardFont call LoadFontsBattleExtra - ld hl, VBGMap0 + hlbgcoord 0, 0 ld bc, VBGMap1 - VBGMap0 ld a, " " call ByteFill @@ -446,7 +446,7 @@ Function4e906: ; 4e906 ld bc, w6_d400 - w6_d000 ld a, " " call ByteFill - ld hl, VBGMap0 + hlbgcoord 0, 0 ld de, w6_d000 ld b, $0 ld c, $40 diff --git a/engine/intro_menu.asm b/engine/intro_menu.asm new file mode 100755 index 000000000..cf5bcf8a0 --- /dev/null +++ b/engine/intro_menu.asm @@ -0,0 +1,1427 @@ +_MainMenu: ; 5ae8 + ld de, MUSIC_NONE + call PlayMusic + call DelayFrame + ld de, MUSIC_MAIN_MENU + ld a, e + ld [wMapMusic], a + call PlayMusic + callba MainMenu + jp Function6219 +; 5b04 + +; unreferenced + ret +; 5b05 + +PrintDayOfWeek: ; 5b05 + push de + ld hl, .Days + ld a, b + call GetNthString + ld d, h + ld e, l + pop hl + call PlaceString + ld h, b + ld l, c + ld de, .Day + call PlaceString + ret +; 5b1c + +.Days ; 5b1c + db "SUN@" + db "MON@" + db "TUES@" + db "WEDNES@" + db "THURS@" + db "FRI@" + db "SATUR@" +; 5b40 + +.Day ; 5b40 + db "DAY@" +; 5b44 + +NewGame_ClearTileMapEtc: ; 5b44 + xor a + ld [hMapAnims], a + call ClearTileMap + call LoadFontsExtra + call LoadStandardFont + call ResetTextRelatedRAM + ret +; 5b54 + +MysteryGift: ; 5b54 + call UpdateTime + callba DoMysteryGiftIfDayHasPassed + callba DoMysteryGift + ret +; 5b64 + +OptionsMenu: ; 5b64 + callba _OptionsMenu + ret +; 5b6b + +NewGame: ; 5b6b + xor a + ld [wc2cc], a + call ResetWRAM + call NewGame_ClearTileMapEtc + call AreYouABoyOrAreYouAGirl + call OakSpeech + call InitializeWorld + ld a, 1 + ld [wPreviousLandmark], a + + ld a, SPAWN_HOME + ld [DefaultSpawnpoint], a + + ld a, MAPSETUP_WARP + ld [hMapEntryMethod], a + jp FinishContinueFunction +; 5b8f + +AreYouABoyOrAreYouAGirl: ; 5b8f + callba Function10632f ; some mobile stuff + jr c, .ok + callba InitGender + ret + +.ok + ld c, 0 + callba InitMobileProfile ; mobile + ret +; 5ba7 + +ResetWRAM: ; 5ba7 + xor a + ld [hBGMapMode], a + call _ResetWRAM + ret +; 5bae + +_ResetWRAM: ; 5bae + + ld hl, Sprites + ld bc, Options - Sprites + xor a + call ByteFill + + ld hl, wd000 + ld bc, wGameData - wd000 + xor a + call ByteFill + + ld hl, wGameData + ld bc, wGameDataEnd - wGameData + xor a + call ByteFill + + ld a, [rLY] + ld [hSecondsBackup], a + call DelayFrame + ld a, [hRandomSub] + ld [PlayerID], a + + ld a, [rLY] + ld [hSecondsBackup], a + call DelayFrame + ld a, [hRandomAdd] + ld [PlayerID + 1], a + + call Random + ld [wSecretID], a + call DelayFrame + call Random + ld [wSecretID + 1], a + + ld hl, PartyCount + call InitList + + xor a + ld [wCurBox], a + ld [wSavedAtLeastOnce], a + + call SetDefaultBoxNames + + ld a, BANK(sBoxCount) + call GetSRAMBank + ld hl, sBoxCount + call InitList + call CloseSRAM + + ld hl, NumItems + call InitList + + ld hl, NumKeyItems + call InitList + + ld hl, NumBalls + call InitList + + ld hl, PCItems + call InitList + + xor a + ld [wRoamMon1Species], a + ld [wRoamMon2Species], a + ld [wRoamMon3Species], a + ld a, -1 + ld [wRoamMon1MapGroup], a + ld [wRoamMon2MapGroup], a + ld [wRoamMon3MapGroup], a + ld [wRoamMon1MapNumber], a + ld [wRoamMon2MapNumber], a + ld [wRoamMon3MapNumber], a + + ld a, BANK(sMysteryGiftItem) + call GetSRAMBank + ld hl, sMysteryGiftItem + xor a + ld [hli], a + dec a + ld [hl], a + call CloseSRAM + + call LoadOrRegenerateLuckyIDNumber + call InitializeMagikarpHouse + + xor a + ld [MonType], a + + ld [JohtoBadges], a + ld [KantoBadges], a + + ld [Coins], a + ld [Coins + 1], a + +START_MONEY EQU 3000 + +IF START_MONEY / $10000 + ld a, START_MONEY / $10000 +ENDC + ld [Money], a + ld a, START_MONEY / $100 % $100 + ld [Money + 1], a + ld a, START_MONEY % $100 + ld [Money + 2], a + + xor a + ld [wdc17], a + + ld hl, wdc19 + ld [hl], 2300 / $10000 + inc hl + ld [hl], 2300 / $100 % $100 + inc hl + ld [hl], 2300 % $100 + + call InitializeNPCNames + + callba InitDecorations + + callba DeletePartyMonMail + + callba DeleteMobileEventIndex + + call ResetGameTime + ret +; 5ca1 + +InitList: ; 5ca1 +; Loads 0 in the count and -1 in the first item or mon slot. + xor a + ld [hli], a + dec a + ld [hl], a + ret +; 5ca6 + +SetDefaultBoxNames: ; 5ca6 + ld hl, wBoxNames + ld c, 0 +.loop + push hl + ld de, .Box + call CopyName2 + dec hl + ld a, c + inc a + cp 10 + jr c, .less + sub 10 + ld [hl], "1" + inc hl + +.less + add "0" + ld [hli], a + ld [hl], "@" + pop hl + ld de, 9 + add hl, de + inc c + ld a, c + cp NUM_BOXES + jr c, .loop + ret + +.Box + db "BOX@" +; 5cd3 + +InitializeMagikarpHouse: ; 5cd3 + ld hl, wBestMagikarpLengthFeet + ld a, $3 + ld [hli], a + ld a, $6 + ld [hli], a + ld de, .Ralph + call CopyName2 + ret +; 5ce3 + +.Ralph ; 5ce3 + db "RALPH@" +; 5ce9 + +InitializeNPCNames: ; 5ce9 + ld hl, .Rival + ld de, RivalName + call .Copy + + ld hl, .Mom + ld de, MomsName + call .Copy + + ld hl, .Red + ld de, RedsName + call .Copy + + ld hl, .Green + ld de, GreensName + +.Copy + ld bc, NAME_LENGTH + call CopyBytes + ret + +.Rival db "???@" +.Red db "RED@" +.Green db "GREEN@" +.Mom db "MOM@" +; 5d23 + +InitializeWorld: ; 5d23 + call ShrinkPlayer + callba GetSpawnCoord + callba _InitializeStartDay + ret +; 5d33 + +LoadOrRegenerateLuckyIDNumber: ; 5d33 + ld a, BANK(sLuckyIDNumber) + call GetSRAMBank + ld a, [CurDay] + inc a + ld b, a + ld a, [sLuckyNumberDay] + cp b + ld a, [sLuckyIDNumber + 1] + ld c, a + ld a, [sLuckyIDNumber] + jr z, .skip + ld a, b + ld [sLuckyNumberDay], a + call Random + ld c, a + call Random + +.skip + ld [wLuckyIDNumber], a + ld [sLuckyIDNumber], a + ld a, c + ld [wLuckyIDNumber + 1], a + ld [sLuckyIDNumber + 1], a + jp CloseSRAM +; 5d65 + +Continue: ; 5d65 + callba TryLoadSaveFile + jr c, .FailToLoad + callba Function150b9 + call LoadStandardMenuDataHeader + call DisplaySaveInfoOnContinue + ld a, $1 + ld [hBGMapMode], a + ld c, 20 + call DelayFrames + call ConfirmContinue + jr nc, .Check1Pass + call WriteBackup + jr .FailToLoad + +.Check1Pass + call Continue_CheckRTC_RestartClock + jr nc, .Check2Pass + call WriteBackup + jr .FailToLoad + +.Check2Pass + ld a, $8 + ld [MusicFade], a + ld a, MUSIC_NONE % $100 + ld [MusicFadeIDLo], a + ld a, MUSIC_NONE / $100 + ld [MusicFadeIDHi], a + call ClearBGPalettes + call Continue_MobileAdapterMenu + call WriteBackup + call ClearTileMap + ld c, 20 + call DelayFrames + callba JumpRoamMons + callba Function105091 ; Mystery Gift + callba Function140ae ; time-related + ld a, [wSpawnAfterChampion] + cp SPAWN_LANCE + jr z, .SpawnAfterE4 + ld a, MAPSETUP_CONTINUE + ld [hMapEntryMethod], a + jp FinishContinueFunction + +.FailToLoad + ret + +.SpawnAfterE4 + ld a, SPAWN_NEW_BARK + ld [wd001], a + call PostCreditsSpawn + jp FinishContinueFunction +; 5de2 + +SpawnAfterRed: ; 5de2 + ld a, SPAWN_MT_SILVER + ld [wd001], a +; 5de7 + +PostCreditsSpawn: ; 5de7 + xor a + ld [wSpawnAfterChampion], a + ld a, MAPSETUP_WARP + ld [hMapEntryMethod], a + ret +; 5df0 + +Continue_MobileAdapterMenu: ; 5df0 + callba Function10632f ; mobile check + ret nc + ld hl, wd479 + bit 1, [hl] + ret nz + ld a, 5 + ld [MusicFade], a + ld a, MUSIC_MOBILE_ADAPTER_MENU % $100 + ld [MusicFadeIDLo], a + ld a, MUSIC_MOBILE_ADAPTER_MENU / $100 + ld [MusicFadeIDHi], a + ld c, 20 + call DelayFrames + ld c, $1 + callba InitMobileProfile ; mobile + callba _SaveData + ld a, 8 + ld [MusicFade], a + ld a, MUSIC_NONE % $100 + ld [MusicFadeIDLo], a + ld a, MUSIC_NONE / $100 + ld [MusicFadeIDHi], a + ld c, 35 + call DelayFrames + ret +; 5e34 + +ConfirmContinue: ; 5e34 +.loop + call DelayFrame + call GetJoypad + ld hl, hJoyPressed + bit 0, [hl] + jr nz, .PressA + bit 1, [hl] + jr z, .loop + scf + ret + +.PressA + ret +; 5e48 + +Continue_CheckRTC_RestartClock: ; 5e48 + call CheckRTCStatus + and %10000000 ; Day count exceeded 16383 + jr z, .pass + callba RestartClock + ld a, c + and a + jr z, .pass + scf + ret + +.pass + xor a + ret +; 5e5d + +FinishContinueFunction: ; 5e5d +.loop + xor a + ld [wc2c1], a + ld [wLinkMode], a + ld hl, GameTimerPause + set 0, [hl] + res 7, [hl] + ld hl, wEnteredMapFromContinue + set 1, [hl] + callba OverworldLoop + ld a, [wSpawnAfterChampion] + cp SPAWN_RED + jr z, .AfterRed + jp Reset + +.AfterRed + call SpawnAfterRed + jr .loop +; 5e85 + +DisplaySaveInfoOnContinue: ; 5e85 + call CheckRTCStatus + and %10000000 + jr z, .clock_ok + lb de, 4, 8 + call DisplayContinueDataWithRTCError + ret + +.clock_ok + lb de, 4, 8 + call DisplayNormalContinueData + ret +; 5e9a + +DisplaySaveInfoOnSave: ; 5e9a + lb de, 4, 0 + jr DisplayNormalContinueData +; 5e9f + +DisplayNormalContinueData: ; 5e9f + call Continue_LoadMenuHeader + call Continue_DisplayBadgesDexPlayerName + call Continue_PrintGameTime + call LoadFontsExtra + call UpdateSprites + ret +; 5eaf + +DisplayContinueDataWithRTCError: ; 5eaf + call Continue_LoadMenuHeader + call Continue_DisplayBadgesDexPlayerName + call Continue_UnknownGameTime + call LoadFontsExtra + call UpdateSprites + ret +; 5ebf + +Continue_LoadMenuHeader: ; 5ebf + xor a + ld [hBGMapMode], a + ld hl, .MenuDataHeader_Dex + ld a, [StatusFlags] + bit 0, a ; pokedex + jr nz, .pokedex_header + ld hl, .MenuDataHeader_NoDex + +.pokedex_header + call Function1e35 + call MenuBox + call Function1c89 + ret +; 5ed9 + +.MenuDataHeader_Dex: ; 5ed9 + db $40 ; flags + db 00, 00 ; start coords + db 09, 15 ; end coords + dw .MenuData2_Dex + db 1 ; default option +; 5ee1 + +.MenuData2_Dex: ; 5ee1 + db $00 ; flags + db 4 ; items + db "PLAYER@" + db "BADGES@" + db "#DEX@" + db "TIME@" +; 5efb + +.MenuDataHeader_NoDex: ; 5efb + db $40 ; flags + db 00, 00 ; start coords + db 09, 15 ; end coords + dw .MenuData2_NoDex + db 1 ; default option +; 5f03 + +.MenuData2_NoDex: ; 5f03 + db $00 ; flags + db 4 ; items + db "PLAYER @" + db "BADGES@" + db " @" + db "TIME@" +; 5f1c + + +Continue_DisplayBadgesDexPlayerName: ; 5f1c + call MenuBoxCoord2Tile + push hl + decoord 13, 4, 0 + add hl, de + call Continue_DisplayBadgeCount + pop hl + push hl + decoord 12, 6, 0 + add hl, de + call Continue_DisplayPokedexNumCaught + pop hl + push hl + decoord 8, 2, 0 + add hl, de + ld de, .Player + call PlaceString + pop hl + ret + +.Player + db "@" +; 5f40 + +Continue_PrintGameTime: ; 5f40 + decoord 9, 8, 0 + add hl, de + call Continue_DisplayGameTime + ret +; 5f48 + +Continue_UnknownGameTime: ; 5f48 + decoord 9, 8, 0 + add hl, de + ld de, .three_question_marks + call PlaceString + ret + +.three_question_marks + db " ???@" +; 5f58 + +Continue_DisplayBadgeCount: ; 5f58 + push hl + ld hl, JohtoBadges + ld b, 2 + call CountSetBits + pop hl + ld de, wd265 + lb bc, 1, 2 + jp PrintNum +; 5f6b + +Continue_DisplayPokedexNumCaught: ; 5f6b + ld a, [StatusFlags] + bit 0, a + ret z + push hl + ld hl, PokedexCaught +IF NUM_POKEMON % 8 + ld b, NUM_POKEMON / 8 + 1 +ELSE + ld b, NUM_POKEMON / 8 +ENDC + call CountSetBits + pop hl + ld de, wd265 + lb bc, 1, 3 + jp PrintNum +; 5f84 + +Continue_DisplayGameTime: ; 5f84 + ld de, GameTimeHours + lb bc, 2, 3 + call PrintNum + ld [hl], "" + inc hl + ld de, GameTimeMinutes + lb bc, PRINTNUM_LEADINGZEROS | 1, 2 + jp PrintNum +; 5f99 + + +OakSpeech: ; 0x5f99 + callba InitClock + call RotateFourPalettesLeft + call ClearTileMap + + ld de, MUSIC_ROUTE_30 + call PlayMusic + + call RotateFourPalettesRight + call RotateThreePalettesRight + xor a + ld [CurPartySpecies], a + ld a, POKEMON_PROF + ld [TrainerClass], a + call Intro_PrepTrainerPic + + ld b, SCGB_1C + call GetSGBLayout + call Intro_RotatePalettesLeftFrontpic + + ld hl, OakText1 + call PrintText + call RotateThreePalettesRight + call ClearTileMap + + ld a, WOOPER + ld [CurSpecies], a + ld [CurPartySpecies], a + call GetBaseData + + hlcoord 6, 4 + call PrepMonFrontpic + + xor a + ld [TempMonDVs], a + ld [TempMonDVs + 1], a + + ld b, SCGB_1C + call GetSGBLayout + call Intro_WipeInFrontpic + + ld hl, OakText2 + call PrintText + ld hl, OakText4 + call PrintText + call RotateThreePalettesRight + call ClearTileMap + + xor a + ld [CurPartySpecies], a + ld a, POKEMON_PROF + ld [TrainerClass], a + call Intro_PrepTrainerPic + + ld b, SCGB_1C + call GetSGBLayout + call Intro_RotatePalettesLeftFrontpic + + ld hl, OakText5 + call PrintText + call RotateThreePalettesRight + call ClearTileMap + + xor a + ld [CurPartySpecies], a + callba DrawIntroPlayerPic + + ld b, SCGB_1C + call GetSGBLayout + call Intro_RotatePalettesLeftFrontpic + + ld hl, OakText6 + call PrintText + call NamePlayer + ld hl, OakText7 + call PrintText + ret + +OakText1: ; 0x6045 + text_jump _OakText1 + db "@" + +OakText2: ; 0x604a + text_jump _OakText2 + start_asm + ld a, WOOPER + call PlayCry + call WaitSFX + ld hl, OakText3 + ret + +OakText3: ; 0x605b + text_jump _OakText3 + db "@" + +OakText4: ; 0x6060 + text_jump _OakText4 + db "@" + +OakText5: ; 0x6065 + text_jump _OakText5 + db "@" + +OakText6: ; 0x606a + text_jump _OakText6 + db "@" + +OakText7: ; 0x606f + text_jump _OakText7 + db "@" + +NamePlayer: ; 0x6074 + callba MovePlayerPicRight + callba ShowPlayerNamingChoices + ld a, [MenuSelection2] + dec a + jr z, .NewName + call StorePlayerName + callba Function8c1d + callba MovePlayerPicLeft + ret + +.NewName + ld b, 1 + ld de, PlayerName + callba NamingScreen + + call RotateThreePalettesRight + call ClearTileMap + + call LoadFontsExtra + call WaitBGMap + + xor a + ld [CurPartySpecies], a + callba DrawIntroPlayerPic + + ld b, SCGB_1C + call GetSGBLayout + call RotateThreePalettesLeft + + ld hl, PlayerName + ld de, .Chris + ld a, [PlayerGender] + bit 0, a + jr z, .Male + ld de, .Kris +.Male + call InitName + ret + +.Chris + db "CHRIS@@@@@@" +.Kris + db "KRIS@@@@@@@" +; 60e9 + +Function60e9: ; Unreferenced + call LoadMenuDataHeader + call InterpretMenu2 + ld a, [MenuSelection2] + dec a + call CopyNameFromMenu + call WriteBackup + ret +; 60fa + +StorePlayerName: ; 60fa + ld a, "@" + ld bc, NAME_LENGTH + ld hl, PlayerName + call ByteFill + ld hl, PlayerName + ld de, StringBuffer2 + call CopyName2 + ret +; 610f + +ShrinkPlayer: ; 610f + + ld a, [hROMBank] + push af + + ld a, 0 << 7 | 32 ; fade out + ld [MusicFade], a + ld de, MUSIC_NONE + ld a, e + ld [MusicFadeIDLo], a + ld a, d + ld [MusicFadeIDHi], a + + ld de, SFX_ESCAPE_ROPE + call PlaySFX + pop af + rst Bankswitch + + ld c, 8 + call DelayFrames + + ld hl, Shrink1Pic + ld b, BANK(Shrink1Pic) + call ShrinkFrame + + ld c, 8 + call DelayFrames + + ld hl, Shrink2Pic + ld b, BANK(Shrink2Pic) + call ShrinkFrame + + ld c, 8 + call DelayFrames + + hlcoord 6, 5 + ld b, 7 + ld c, 7 + call ClearBox + + ld c, 3 + call DelayFrames + + call Intro_PlacePlayerSprite + call LoadFontsExtra + + ld c, 50 + call DelayFrames + + call RotateThreePalettesRight + call ClearTileMap + ret +; 616a + +Intro_RotatePalettesLeftFrontpic: ; 616a + ld hl, IntroFadePalettes + ld b, IntroFadePalettesEnd - IntroFadePalettes +.loop + ld a, [hli] + call DmgToCgbBGPals + ld c, 10 + call DelayFrames + dec b + jr nz, .loop + ret +; 617c + +IntroFadePalettes: ; 0x617c + db %01010100 + db %10101000 + db %11111100 + db %11111000 + db %11110100 + db %11100100 +IntroFadePalettesEnd +; 6182 + +Intro_WipeInFrontpic: ; 6182 + ld a, $77 + ld [hWX], a + call DelayFrame + ld a, %11100100 + call DmgToCgbBGPals +.loop + call DelayFrame + ld a, [hWX] + sub $8 + cp -1 + ret z + ld [hWX], a + jr .loop +; 619c + +Intro_PrepTrainerPic: ; 619c + ld de, VTiles2 + callba GetTrainerPic + xor a + ld [hFillBox], a + hlcoord 6, 4 + lb bc, 7, 7 + predef FillBox + ret +; 61b4 + +ShrinkFrame: ; 61b4 + ld de, VTiles2 + ld c, $31 + predef DecompressPredef + xor a + ld [hFillBox], a + hlcoord 6, 4 + lb bc, 7, 7 + predef FillBox + ret +; 61cd + +Intro_PlacePlayerSprite: ; 61cd + + callba GetPlayerIcon + ld c, $c + ld hl, VTiles0 + call Request2bpp + + ld hl, Sprites + ld de, .sprites + ld a, [de] + inc de + + ld c, a +.loop + ld a, [de] + inc de + ld [hli], a + ld a, [de] + inc de + ld [hli], a + ld a, [de] + inc de + ld [hli], a + + ld b, 0 + ld a, [PlayerGender] + bit 0, a + jr z, .male + ld b, 1 +.male + ld a, b + + ld [hli], a + dec c + jr nz, .loop + ret +; 61fe + +.sprites ; 61fe + db 4 + db $4c, $48, 0 + db $4c, $50, 1 + db $54, $48, 2 + db $54, $50, 3 +; 620b + + +Function620b: ; 620b + callab Functione4579 + jr c, Function6219 + callba CrystalIntro + +Function6219: ; 6219 + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + + call .TitleScreen + call DelayFrame +.loop + call Function627b + jr nc, .loop + + call ClearSprites + call ClearBGPalettes + + pop af + ld [rSVBK], a + + ld hl, rLCDC + res 2, [hl] + call ClearScreen + call Function3200 + xor a + ld [hLCDStatCustom], a + ld [hSCX], a + ld [hSCY], a + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + ld b, SCGB_08 + call GetSGBLayout + call UpdateTimePals + ld a, [wcf64] + cp $5 + jr c, .ok + xor a +.ok + ld e, a + ld d, 0 + ld hl, .jumptable +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 626a + +.jumptable + dw _MainMenu + dw Function6389 + dw Function620b + dw Function620b + dw ResetClock +; 6274 + + +.TitleScreen: ; 6274 + callba _TitleScreen + ret +; 627b + +Function627b: ; 627b + ld a, [wJumptableIndex] + bit 7, a + jr nz, .done_title + call TitleScreenScene + callba SuicuneFrameIterator + call DelayFrame + and a + ret + +.done_title + scf + ret +; 6292 + +Function6292: ; 6292 ; unreferenced + ld a, [hVBlankCounter] + and $7 + ret nz + ld hl, LYOverrides + $5f + ld a, [hl] + dec a + ld bc, 2 * SCREEN_WIDTH + call ByteFill + ret +; 62a3 + +TitleScreenScene: ; 62a3 + ld e, a + ld d, 0 + ld hl, .scenes +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 62af + +.scenes + dw TitleScreenEntrance + dw TitleScreenTimer + dw TitleScreenMain + dw TitleScreenEnd +; 62b7 + +Function62b7: ; Unreferenced + ld hl, wJumptableIndex + inc [hl] + ret +; 62bc + + +TitleScreenEntrance: ; 62bc + +; Animate the logo: +; Move each line by 4 pixels until our count hits 0. + ld a, [hSCX] + and a + jr z, .done + sub 4 + ld [hSCX], a + +; Lay out a base (all lines scrolling together). + ld e, a + ld hl, LYOverrides + ld bc, 8 * 10 ; logo height + call ByteFill + +; Reversed signage for every other line's position. +; This is responsible for the interlaced effect. + ld a, e + xor -1 + inc a + + ld b, 8 * 10 / 2 ; logo height / 2 + ld hl, LYOverrides + 1 +.loop + ld [hli], a + inc hl + dec b + jr nz, .loop + + callba AnimateTitleCrystal + ret + +.done +; Next scene + ld hl, wJumptableIndex + inc [hl] + xor a + ld [hLCDStatCustom], a + +; Play the title screen music. + ld de, MUSIC_TITLE + call PlayMusic + + ld a, $88 + ld [hWY], a + ret +; 62f6 + + +TitleScreenTimer: ; 62f6 + +; Next scene + ld hl, wJumptableIndex + inc [hl] + +; Start a timer + ld hl, wcf65 + ld de, $1140 ; 73.6 seconds + ld [hl], e + inc hl + ld [hl], d + ret +; 6304 + +TitleScreenMain: ; 6304 + +; Run the timer down. + ld hl, wcf65 + ld e, [hl] + inc hl + ld d, [hl] + ld a, e + or d + jr z, .end + + dec de + ld [hl], d + dec hl + ld [hl], e + +; Save data can be deleted by pressing Up + B + Select. + call GetJoypad + ld hl, hJoyDown + ld a, [hl] + and D_UP + B_BUTTON + SELECT + cp D_UP + B_BUTTON + SELECT + jr z, .delete_save_data + +; To bring up the clock reset dialog: + +; Hold Down + B + Select to initiate the sequence. + ld a, [$ffeb] + cp $34 + jr z, .check_clock_reset + + ld a, [hl] + and D_DOWN + B_BUTTON + SELECT + cp D_DOWN + B_BUTTON + SELECT + jr nz, .check_start + + ld a, $34 + ld [$ffeb], a + jr .check_start + +; Keep Select pressed, and hold Left + Up. +; Then let go of Select. +.check_clock_reset + bit 2, [hl] ; SELECT + jr nz, .check_start + + xor a + ld [$ffeb], a + + ld a, [hl] + and D_LEFT + D_UP + cp D_LEFT + D_UP + jr z, .clock_reset + +; Press Start or A to start the game. +.check_start + ld a, [hl] + and START | A_BUTTON + jr nz, .incave + ret + +.incave + ld a, 0 + jr .done + +.delete_save_data + ld a, 1 + +.done + ld [wcf64], a + +; Return to the intro sequence. + ld hl, wJumptableIndex + set 7, [hl] + ret + +.end +; Next scene + ld hl, wJumptableIndex + inc [hl] + +; Fade out the title screen music + xor a + ld [MusicFadeIDLo], a + ld [MusicFadeIDHi], a + ld hl, MusicFade + ld [hl], 8 ; 1 second + + ld hl, wcf65 + inc [hl] + ret + +.clock_reset + ld a, 4 + ld [wcf64], a + +; Return to the intro sequence. + ld hl, wJumptableIndex + set 7, [hl] + ret +; 6375 + +TitleScreenEnd: ; 6375 + +; Wait until the music is done fading. + + ld hl, wcf65 + inc [hl] + + ld a, [MusicFade] + and a + ret nz + + ld a, 2 + ld [wcf64], a + +; Back to the intro. + ld hl, wJumptableIndex + set 7, [hl] + ret +; 6389 + +Function6389: ; 6389 + callba Function4d54c + jp Init +; 6392 + +ResetClock: ; 6392 + callba _ResetClock + jp Init +; 639b + +Function639b: ; unreferenced + ; If bit 0 or 1 of [wcf65] is set, we don't need to be here. + ld a, [wcf65] + and $3 + ret nz + ld bc, SpriteAnim10 + ld hl, SpriteAnim10FrameIndex - SpriteAnim10 + add hl, bc ; over-the-top compicated way to load wc3ae into hl + ld l, [hl] + ld h, 0 +rept 2 + add hl, hl +endr + ld de, Data63ca + add hl, de + ; If bit 2 of [wcf65] is set, get the second dw; else, get the first dw + ld a, [wcf65] + and %00000100 +rept 2 + srl a +endr + ld e, a + ld d, 0 +rept 2 + add hl, de +endr + ld a, [hli] + and a + ret z + ld e, a + ld d, [hl] + ld a, SPRITE_ANIM_INDEX_01 + call _InitSpriteAnimStruct + ret +; 63ca + +Data63ca: ; 63ca +; frame 0 y, x; frame 1 y, x + db $5c, $50, $00, $00 + db $5c, $68, $5c, $58 + db $5c, $68, $5c, $78 + db $5c, $88, $5c, $78 + db $00, $00, $5c, $78 + db $00, $00, $5c, $58 +; 63e2 + +Copyright: ; 63e2 + call ClearTileMap + call LoadFontsExtra + ld de, CopyrightGFX + ld hl, VTiles2 tile $60 + lb bc, BANK(CopyrightGFX), $1d + call Request2bpp + hlcoord 2, 7 + ld de, CopyrightString + jp PlaceString +; 63fd + +CopyrightString: ; 63fd + ; ©1995-2001 Nintendo + db $60, $61, $62, $63, $64, $65, $66 + db $67, $68, $69, $6a, $6b, $6c + + db $4e + + ; ©1995-2001 Creatures inc. + db $60, $61, $62, $63, $64, $65, $66, $6d + db $6e, $6f, $70, $71, $72, $7a, $7b, $7c + + db $4e + + ; ©1995-2001 GAME FREAK inc. + db $60, $61, $62, $63, $64, $65, $66, $73, $74 + db $75, $76, $77, $78, $79, $7a, $7b, $7c + + db "@" +; 642e + +GameInit:: ; 642e + callba TryLoadSaveData + call ResetTextRelatedRAM + call ClearBGPalettes + call ClearTileMap + ld a, VBGMap0 / $100 + ld [hBGMapAddress + 1], a + xor a + ld [hBGMapAddress], a + ld [hJoyDown], a + ld [hSCX], a + ld [hSCY], a + ld a, $90 + ld [hWY], a + call WaitBGMap + jp Function620b +; 6454 diff --git a/engine/link.asm b/engine/link.asm index afdbd218a..feb4b5023 100755 --- a/engine/link.asm +++ b/engine/link.asm @@ -493,7 +493,7 @@ Function283b2: ; 283b2 pop hl bccoord 1, 14 call PlaceWholeStringInBoxAtOnce - call FadeToWhite + call RotateThreePalettesRight call ClearScreen ld b, $8 call GetSGBLayout @@ -1583,7 +1583,7 @@ Function28ade: ; 28ade jr nz, .asm_28ade Function28b22: ; 28b22 - call FadeToWhite + call RotateThreePalettesRight call ClearScreen ld b, $8 call GetSGBLayout @@ -2191,7 +2191,7 @@ Function28fdb: ; 28fdb ld [rVBK], a .asm_2900b - ld hl, VBGMap0 + hlbgcoord 0, 0 ld bc, sScratch - VBGMap0 ld a, " " call ByteFill @@ -2372,7 +2372,7 @@ Function2914e: ; 2914e push af call DisableLCD callab Function8cf53 - ld hl, $9874 + hlbgcoord 20, 3 ld bc, $c ld a, $60 call ByteFill @@ -2500,7 +2500,7 @@ Function29229: ; 29229 call ClearSprites call DisableLCD callab Function8cf53 - ld hl, VBGMap0 + hlbgcoord 0, 0 ld bc, sScratch - VBGMap0 ld a, " " call ByteFill diff --git a/engine/main_menu.asm b/engine/main_menu.asm index 6e0ab56e5..428858a74 100755 --- a/engine/main_menu.asm +++ b/engine/main_menu.asm @@ -240,7 +240,7 @@ Function49e09: ; 49e09 Function49e27: ; 49e27 - call Function6e3 + call CheckRTCStatus and $80 jr nz, .asm_49e39 hlcoord 0, 14 @@ -259,7 +259,7 @@ Function49e3d: ; 49e3d ld a, [wSaveFileExists] and a ret z - call Function6e3 + call CheckRTCStatus and $80 jp nz, Function49e75 call UpdateTime @@ -560,7 +560,7 @@ Function4a0c2: ; 4a0c2 (12:60c2) ld c, 2 call DelayFrames ld c, $1 - call Function4802f + call InitMobileProfile push af call ClearBGPalettes pop af diff --git a/engine/map_setup.asm b/engine/map_setup.asm index 7e0bfd3c1..ef1ad715e 100644 --- a/engine/map_setup.asm +++ b/engine/map_setup.asm @@ -249,10 +249,10 @@ MapSetupCommands: ; 15440 dba PlayMapMusic ; 03 dba RestartMapMusic ; 04 dba FadeToMapMusic ; 05 - dba FadeOutMapAndMusic ; 06 + dba RotatePalettesRightMapAndMusic ; 06 dba EnterMapMusic ; 07 dba ForceMapMusic ; 08 - dba FadeInMusic ; 09 + dba RotatePalettesLeftMusic ; 09 dba LoadBlockData ; 0a dba LoadNeighboringBlockData ; 0b dba SaveScreen ; 0c @@ -272,8 +272,8 @@ MapSetupCommands: ; 15440 dba LoadMapAttributes ; 1a dba LoadMapAttributes_SkipPeople ; 1b dba ClearBGPalettes ; 1c - dba FadeOutPalettes ; 1d - dba FadeInPalettes ; 1e + dba RotatePalettesRightPalettes ; 1d + dba RotatePalettesLeftPalettes ; 1e dba GetCoordOfUpperLeftCorner ; 1f dba RestoreFacingAfterWarp ; 20 dba SpawnInFacingDown ; 21 @@ -417,14 +417,14 @@ RetainOldPalettes: ; 1556d callba _UpdateTimePals ret -FadeOutMapAndMusic: ; 15574 +RotatePalettesRightMapAndMusic: ; 15574 ld e, 0 ld a, [MusicFadeIDLo] ld d, 0 ld a, [MusicFadeIDHi] ld a, $4 ld [MusicFade], a - call FadeToWhite + call RotateThreePalettesRight ret ; 15587 diff --git a/engine/phone.asm b/engine/phone.asm index 32481deaa..ab0ecb84a 100644 --- a/engine/phone.asm +++ b/engine/phone.asm @@ -604,7 +604,7 @@ Phone_StartRinging: ; 9033f call PlaySFX call Phone_CallerTextbox call UpdateSprites - callba Function4d188 + callba PhoneRing_LoadEDTile ret ; 90355 @@ -614,7 +614,7 @@ HangUp_Wait20Frames: ; 90355 Phone_Wait20Frames ld c, 20 call DelayFrames - callba Function4d188 + callba PhoneRing_LoadEDTile ret ; 90363 diff --git a/engine/pokegear.asm b/engine/pokegear.asm index 3954f5384..2aaf0d74e 100755 --- a/engine/pokegear.asm +++ b/engine/pokegear.asm @@ -2332,7 +2332,7 @@ FlyMap: ; 91c90 call TownMapBubble call TownMapPals - ld hl, VBGMap0 ; BG Map 0 + hlbgcoord 0, 0 ; BG Map 0 call TownMapBGUpdate call TownMapMon @@ -2371,12 +2371,12 @@ Function91d11: ; 91d11 call FillKantoMap call Function91de9 call TownMapPals - ld hl, VBGMap1 + hlbgcoord 0, 0, VBGMap1 call TownMapBGUpdate call FillJohtoMap call Function91de9 call TownMapPals - ld hl, VBGMap0 + hlbgcoord 0, 0 call TownMapBGUpdate ld b, $2 call GetSGBLayout @@ -2875,12 +2875,12 @@ Function92311: ; unreferenced call FillKantoMap call TownMapBubble call TownMapPals - ld hl, VBGMap1 + hlbgcoord 0, 0, VBGMap1 call TownMapBGUpdate call FillJohtoMap call TownMapBubble call TownMapPals - ld hl, VBGMap0 + hlbgcoord 0, 0 call TownMapBGUpdate call TownMapMon ld a, c diff --git a/engine/save.asm b/engine/save.asm index f314cd4b5..68189b7d1 100644 --- a/engine/save.asm +++ b/engine/save.asm @@ -1,9 +1,9 @@ SaveMenu: ; 14a1a call LoadStandardMenuDataHeader - callba Function5e9a + callba DisplaySaveInfoOnSave call SpeechTextBox call UpdateSprites - callba SaveMenu_LoadDETile + callba SaveMenu_LoadEDTile ld hl, UnknownText_0x15283 call SaveTheGame_yesorno jr nz, .refused @@ -19,7 +19,7 @@ SaveMenu: ; 14a1a .refused call ExitMenu call Functiond90 - callba SaveMenu_LoadDETile + callba SaveMenu_LoadEDTile scf ret diff --git a/engine/slot_machine.asm b/engine/slot_machine.asm index 6f53bb6b3..dab0e2361 100755 --- a/engine/slot_machine.asm +++ b/engine/slot_machine.asm @@ -26,7 +26,7 @@ Function926f7: ; 926f7 (24:66f7) call PlayMusic call DelayFrame call DisableLCD - ld hl, VBGMap0 tile $00 + hlbgcoord 0, 0 lb bc, 4, 0 ld a, $7f call ByteFill diff --git a/engine/specials.asm b/engine/specials.asm index 29c4da492..e2b4e6195 100644 --- a/engine/specials.asm +++ b/engine/specials.asm @@ -66,11 +66,11 @@ SpecialsPointers:: ; c029 add_special Special_CardFlip add_special Special_DummyNonfunctionalGameCornerGame add_special Special_ClearBGPalettesBufferScreen - add_special FadeOutPalettes + add_special RotatePalettesRightPalettes add_special Special_BattleTowerFade add_special Special_FadeBlackQuickly - add_special FadeInPalettes - add_special Special_FadeInQuickly + add_special RotatePalettesLeftPalettes + add_special Special_RotatePalettesLeftQuickly add_special Special_ReloadSpritesNoPalettes add_special ClearBGPalettes add_special UpdateTimePals @@ -126,7 +126,7 @@ SpecialsPointers:: ; c029 add_special SpecialTrainerHouse add_special PhotoStudio add_special InitRoamMons - add_special Special_FadeOutMusic + add_special Special_RotatePalettesRightMusic add_special Diploma add_special PrintDiploma @@ -616,7 +616,7 @@ SpecialGameboyCheck: ; c478 ret -Special_FadeOutMusic: ; c48f +Special_RotatePalettesRightMusic: ; c48f ld a, MUSIC_NONE % $100 ld [MusicFadeIDLo], a ld a, MUSIC_NONE / $100 diff --git a/engine/time_capsule/conversion.asm b/engine/time_capsule/conversion.asm index 4b5b1ef83..10f7ab5f3 100755 --- a/engine/time_capsule/conversion.asm +++ b/engine/time_capsule/conversion.asm @@ -364,7 +364,7 @@ NewPokedexEntry: ; fb877 pop af ld [wPokedexStatus], a call MaxVolume - call FadeToWhite + call RotateThreePalettesRight ld a, [hSCX] add $fb ld [hSCX], a diff --git a/engine/timeofdaypals.asm b/engine/timeofdaypals.asm index 6ebb2a421..fac580f41 100644 --- a/engine/timeofdaypals.asm +++ b/engine/timeofdaypals.asm @@ -116,7 +116,7 @@ _UpdateTimePals:: ; 8c070 ret ; 8c079 -FadeInPalettes:: ; 8c079 +RotatePalettesLeftPalettes:: ; 8c079 ld c, $12 call GetTimePalFade ld b, $4 @@ -124,7 +124,7 @@ FadeInPalettes:: ; 8c079 ret ; 8c084 -FadeOutPalettes:: ; 8c084 +RotatePalettesRightPalettes:: ; 8c084 call Function8c0c1 ld c, $9 call GetTimePalFade @@ -150,7 +150,7 @@ endr ret ; 8c0ab -Special_FadeInQuickly: ; 8c0ab +Special_RotatePalettesLeftQuickly: ; 8c0ab ld c, $0 call GetTimePalFade ld b, $4 diff --git a/engine/timeset.asm b/engine/timeset.asm index 00cdf9cac..0b0f12718 100755 --- a/engine/timeset.asm +++ b/engine/timeset.asm @@ -15,7 +15,7 @@ InitClock: ; 90672 (24:4672) ld [MusicFadeIDHi], a ld c, 8 call DelayFrames - call Function4dd + call RotateFourPalettesLeft call ClearTileMap call ClearSprites ld b, SCGB_08 @@ -37,7 +37,7 @@ InitClock: ; 90672 (24:4672) call Request1bpp call .ClearScreen call WaitBGMap - call Function4a3 + call RotateFourPalettesRight ld hl, UnknownText_0x90874 call PrintText ld hl, wc608 diff --git a/engine/title.asm b/engine/title.asm index 0fbf8b42d..fc8dfa0e4 100644 --- a/engine/title.asm +++ b/engine/title.asm @@ -31,8 +31,8 @@ _TitleScreen: ; 10ed67 ; Clear screen palettes - ld hl, VBGMap0 - ld bc, $0280 + hlbgcoord 0, 0 + ld bc, 20 bgrows xor a call ByteFill @@ -42,8 +42,8 @@ _TitleScreen: ; 10ed67 ; BG Map 1: ; line 0 (copyright) - ld hl, VBGMap1 - ld bc, $0020 ; one row + hlbgcoord 0, 0, VBGMap1 + ld bc, 1 bgrows ld a, 7 ; palette call ByteFill @@ -53,41 +53,41 @@ _TitleScreen: ; 10ed67 ; Apply logo gradient: ; lines 3-4 - ld hl, VBGMap0 tile $06 ; (0,3) - ld bc, $0040 ; 2 rows + hlbgcoord 0, 3 + ld bc, 2 bgrows ld a, 2 call ByteFill ; line 5 - ld hl, VBGMap0 tile $0a ; (0,5) - ld bc, $0020 ; 1 row + hlbgcoord 0, 5 + ld bc, 1 bgrows ld a, 3 call ByteFill ; line 6 - ld hl, VBGMap0 tile $0c ; (0,6) - ld bc, $0020 ; 1 row + hlbgcoord 0, 6 + ld bc, 1 bgrows ld a, 4 call ByteFill ; line 7 - ld hl, VBGMap0 tile $0e ; (0,7) - ld bc, $0020 ; 1 row + hlbgcoord 0, 7 + ld bc, 1 bgrows ld a, 5 call ByteFill ; lines 8-9 - ld hl, VBGMap0 tile $10 ; (0,8) - ld bc, $0040 ; 2 rows + hlbgcoord 0, 8 + ld bc, 2 bgrows ld a, 6 call ByteFill ; 'CRYSTAL VERSION' - ld hl, $9925 ; (5,9) - ld bc, $000b ; length of version text + hlbgcoord 5, 9 + ld bc, NAME_LENGTH ; length of version text ld a, 1 call ByteFill ; Suicune gfx - ld hl, VBGMap0 tile $18 ; (0,12) - ld bc, $00c0 ; the rest of the screen + hlbgcoord 0, 12 + ld bc, 6 bgrows ; the rest of the screen ld a, 8 call ByteFill @@ -109,9 +109,9 @@ _TitleScreen: ; 10ed67 ; Clear screen tiles - ld hl, VBGMap0 - ld bc, $0800 - ld a, $7f + hlbgcoord 0, 0 + ld bc, 64 bgrows + ld a, " " call ByteFill ; Draw Pokemon logo @@ -122,7 +122,7 @@ _TitleScreen: ; 10ed67 call DrawTitleGraphic ; Draw copyright text - ld hl, $9c03 ; BGMap1(3,0) + hlbgcoord 3, 0, VBGMap1 lb bc, 1, 13 ld d, $c ld e, $10 @@ -270,7 +270,7 @@ SuicuneFrameIterator: ; 10eea7 LoadSuicuneFrame: ; 10eed2 hlcoord 6, 12 ld b, 6 -.row +.bgrows ld c, 8 .col ld a, d @@ -288,7 +288,7 @@ LoadSuicuneFrame: ; 10eed2 add d ld d, a dec b - jr nz, .row + jr nz, .bgrows ret ; 10eeef @@ -298,8 +298,8 @@ DrawTitleGraphic: ; 10eeef ; b: height ; c: width ; d: tile to start drawing from -; e: number of tiles to advance for each row -.row +; e: number of tiles to advance for each bgrows +.bgrows push de push bc push hl @@ -318,7 +318,7 @@ DrawTitleGraphic: ; 10eeef add d ld d, a dec b - jr nz, .row + jr nz, .bgrows ret ; 10ef06 -- cgit v1.2.3 From 7b3090e22aefffa464570ac34665ee8e43df873d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 20 Nov 2015 15:15:32 -0500 Subject: Annotate battle tower text bug --- engine/battle_start.asm | 10 ++--- engine/breeding/egg.asm | 4 +- engine/card_flip.asm | 4 +- engine/color.asm | 58 +++++++++++++------------- engine/credits.asm | 4 +- engine/crystal_intro.asm | 22 +++++----- engine/debug.asm | 2 +- engine/diploma.asm | 2 +- engine/dummy_game.asm | 2 +- engine/evolution_animation.asm | 95 +++++++++++++++++++++--------------------- engine/link.asm | 14 +++---- engine/namingscreen.asm | 2 +- engine/party_menu.asm | 6 +-- engine/pokedex.asm | 2 +- engine/pokegear.asm | 4 +- engine/predef.asm | 2 +- engine/slot_machine.asm | 4 +- engine/startmenu.asm | 2 +- engine/stats_screen.asm | 4 +- engine/timeofdaypals.asm | 10 ++--- engine/title.asm | 6 +-- 21 files changed, 129 insertions(+), 130 deletions(-) (limited to 'engine') diff --git a/engine/battle_start.asm b/engine/battle_start.asm index 2b32e41b9..845af9d2a 100644 --- a/engine/battle_start.asm +++ b/engine/battle_start.asm @@ -26,7 +26,7 @@ Predef_StartBattle: ; 8c20f ld a, $5 ld [rSVBK], a - ld hl, wMapPals + ld hl, UnknBGPals ld bc, 8 palettes xor a call ByteFill @@ -661,7 +661,7 @@ StartTrainerBattle_LoadPokeBallGraphics: ; 8c5dc (23:45dc) ld [rSVBK], a call .copypals push hl - ld de, wMapPals + 8 * 7 + ld de, UnknBGPals + 8 * 7 ld bc, $8 call CopyBytes pop hl @@ -680,15 +680,15 @@ StartTrainerBattle_LoadPokeBallGraphics: ; 8c5dc (23:45dc) ret .copypals: ; 8c677 (23:4677) - ld de, wMapPals + 8 * 7 + ld de, UnknBGPals + 8 * 7 call .copy ld de, BGPals + 8 * 7 call .copy - ld de, Unkn2Pals + 8 * 6 + ld de, UnknOBPals + 8 * 6 call .copy ld de, OBPals + 8 * 6 call .copy - ld de, Unkn2Pals + 8 * 7 + ld de, UnknOBPals + 8 * 7 call .copy ld de, OBPals + 8 * 7 diff --git a/engine/breeding/egg.asm b/engine/breeding/egg.asm index ea365d8b5..ebf5e48d8 100755 --- a/engine/breeding/egg.asm +++ b/engine/breeding/egg.asm @@ -650,7 +650,7 @@ Function1723c: ; 1723c (5:723c) ld hl, BattleMonDVs predef GetUnownLetter pop de - predef_jump Function5108b + predef_jump FrontpicPredef Function17254: ; 17254 (5:7254) push af @@ -775,7 +775,7 @@ Function1728f: ; 1728f (5:728f) Function17363: ; 17363 (5:7363) ld [PlayerHPPal], a - ld b, $b + ld b, SCGB_0B ld c, $0 jp GetSGBLayout diff --git a/engine/card_flip.asm b/engine/card_flip.asm index 8ee1e5cd9..df9d895d1 100755 --- a/engine/card_flip.asm +++ b/engine/card_flip.asm @@ -1621,7 +1621,7 @@ Functione0c37: ; e0c37 (38:4c37) ld a, $5 ld [rSVBK], a ld hl, Palette_e0c93 - ld de, wMapPals + ld de, UnknBGPals ld bc, $48 call CopyBytes pop af @@ -1751,7 +1751,7 @@ Functione1190: ; e1190 ld a, $93 ld [rLCDC], a call WaitBGMap - ld b, $18 + ld b, SCGB_18 call GetSGBLayout ld a, $e4 call DmgToCgbBGPals diff --git a/engine/color.asm b/engine/color.asm index bf428f51c..7e7520816 100644 --- a/engine/color.asm +++ b/engine/color.asm @@ -117,7 +117,7 @@ Function8ad1: ; 8ad1 ret ; 8ade -Function8ade: ; 8ade +Function8ade: ; 8ade SGB layout $fc ld hl, wcd9b ld a, [wcda9] ld e, a @@ -149,7 +149,7 @@ Function8b07: ; 8b07 call CheckCGB ret z ld hl, Palette8b2f - ld de, wMapPals + ld de, UnknBGPals ld bc, $0008 ld a, $5 call FarCopyWRAM @@ -200,7 +200,7 @@ Function8b4d: ; 8b4d jp Function9809 .asm_8b5c - ld de, Unkn2Pals + ld de, UnknOBPals ld a, $3b call GetAthPalletFromPalettes9df6 jp LoadHLPaletteIntoDE @@ -216,7 +216,7 @@ Function8b67: ; 8b67 jp Function9809 .asm_8b76 - ld de, Unkn2Pals + ld de, UnknOBPals ld a, $3c call GetAthPalletFromPalettes9df6 jp LoadHLPaletteIntoDE @@ -248,7 +248,7 @@ Function8b81: ; 8b81 jp Function9809 .asm_8bb2 - ld de, Unkn2Pals + ld de, UnknOBPals ld a, c call Function9775 call Function9643 @@ -275,7 +275,7 @@ endr asm_8bd7 push hl - ld hl, wMapPals + ld hl, UnknBGPals ld de, $0008 .asm_8bde and a @@ -338,7 +338,7 @@ Function8c1d: ; 8c1d call Function976b .asm_8c33 - ld de, wMapPals + ld de, UnknBGPals call Function9643 call Function9699 call Function96b3 @@ -412,11 +412,11 @@ endr ld a, $5 ld [rSVBK], a ld a, [hli] - ld [wMapPals], a - ld [wMapPals + 8 * 2], a + ld [UnknBGPals], a + ld [UnknBGPals + 8 * 2], a ld a, [hl] - ld [wMapPals + 1], a - ld [wMapPals + 8 * 2 + 1], a + ld [UnknBGPals + 1], a + ld [UnknBGPals + 8 * 2 + 1], a pop af ld [rSVBK], a call Function96a4 @@ -458,7 +458,7 @@ endr ret .asm_8cf0 - ld de, wMapPals + ld de, UnknBGPals ld bc, $0008 ld a, $5 call FarCopyWRAM @@ -525,7 +525,7 @@ INCLUDE "predef/cgb.asm" Function95f0: ; 95f0 ld hl, Palette_9608 - ld de, wMapPals + ld de, UnknBGPals ld bc, 8 ld a, $5 call FarCopyWRAM @@ -544,7 +544,7 @@ Palette_9608: ; 9608 CopyFourPalettes: ; 9610 - ld de, wMapPals + ld de, UnknBGPals ld c, $4 CopyPalettes: ; 9615 @@ -644,9 +644,9 @@ Function9673: ; 9673 push af ld a, $5 ld [rSVBK], a - ld hl, wMapPals - ld c, $8 -.asm_9683 + ld hl, UnknBGPals + ld c, 8 +.loop ld a, $ff rept 4 ld [hli], a @@ -656,7 +656,7 @@ rept 4 ld [hli], a endr dec c - jr nz, .asm_9683 + jr nz, .loop pop af ld [rSVBK], a pop hl @@ -676,7 +676,7 @@ Function9699: ; 9699 ; 96a4 Function96a4: ; 96a4 - ld hl, wMapPals + ld hl, UnknBGPals ld de, BGPals ld bc, $0080 ld a, $5 @@ -728,7 +728,7 @@ Function96b3: ; 96b3 ret ; 96f3 -Function96f3: ; 96f3 +Function96f3: ; 96f3 CGB layout $fc ld hl, wcd9b ld a, [wcda9] ld e, a @@ -759,7 +759,7 @@ Function96f3: ; 96f3 Function971a: ; 971a ld hl, Palettes_b681 - ld de, Unkn2Pals + ld de, UnknOBPals ld bc, $0010 ld a, $5 call FarCopyWRAM @@ -843,7 +843,7 @@ Function977a: ; 977a dec c jr nz, .asm_9787 ld hl, Palettes_979c - ld de, Unkn2Pals + 8 * 2 + ld de, UnknOBPals + 8 * 2 ld bc, $0010 ld a, $5 call FarCopyWRAM @@ -1047,7 +1047,7 @@ Function9890:: ; 9890 push af ld a, $5 ld [rSVBK], a - ld hl, wMapPals + ld hl, UnknBGPals call Function98df ld hl, BGPals call Function98df @@ -1058,13 +1058,13 @@ Function9890:: ; 9890 Function98df: ; 98df ld c, $40 -.asm_98e1 +.loop ld a, $ff ld [hli], a ld a, $7f ld [hli], a dec c - jr nz, .asm_98e1 + jr nz, .loop ret ; 98eb @@ -1974,7 +1974,7 @@ endr push af ld a, $5 ld [rSVBK], a - ld hl, wMapPals + ld hl, UnknBGPals ld b, $8 .asm_b210 ld a, [de] @@ -2010,9 +2010,9 @@ endr ld bc, $40 ld hl, MapObjectPals call AddNTimes - ld de, Unkn2Pals + ld de, UnknOBPals ld bc, $40 - ld a, $5 ; BANK(Unkn2Pals) + ld a, $5 ; BANK(UnknOBPals) call FarCopyWRAM ld a, [wPermission] @@ -2037,7 +2037,7 @@ rept 4 inc hl endr .asm_b26d - ld de, wMapPals + 8 * 6 + 2 + ld de, UnknBGPals + 8 * 6 + 2 ld bc, 4 ld a, $5 call FarCopyWRAM diff --git a/engine/credits.asm b/engine/credits.asm index 6b35fbe6a..6e2bef12d 100644 --- a/engine/credits.asm +++ b/engine/credits.asm @@ -637,10 +637,10 @@ GetCreditsPalette: ; 109b2c push af push hl - add wMapPals % $100 + add UnknBGPals % $100 ld e, a ld a, 0 - adc wMapPals / $100 + adc UnknBGPals / $100 ld d, a ld bc, 24 call CopyBytes diff --git a/engine/crystal_intro.asm b/engine/crystal_intro.asm index 0ed427de4..69a068ff9 100755 --- a/engine/crystal_intro.asm +++ b/engine/crystal_intro.asm @@ -524,7 +524,7 @@ IntroScene1: ; e495b (39:495b) ld a, $5 ld [rSVBK], a ld hl, Palette_365ad - ld de, wMapPals + ld de, UnknBGPals ld bc, $80 call CopyBytes ld hl, Palette_365ad @@ -597,7 +597,7 @@ IntroScene3: ; e49fd (39:49fd) ld a, $5 ld [rSVBK], a ld hl, Palette_e5edd - ld de, wMapPals + ld de, UnknBGPals ld bc, $80 call CopyBytes ld hl, Palette_e5edd @@ -662,7 +662,7 @@ IntroScene5: ; e4a7a (39:4a7a) ld a, $5 ld [rSVBK], a ld hl, Palette_365ad - ld de, wMapPals + ld de, UnknBGPals ld bc, $80 call CopyBytes ld hl, Palette_365ad @@ -759,7 +759,7 @@ IntroScene7: ; e4b3f (39:4b3f) ld a, $5 ld [rSVBK], a ld hl, Palette_e5edd - ld de, wMapPals + ld de, UnknBGPals ld bc, $80 call CopyBytes ld hl, Palette_e5edd @@ -909,7 +909,7 @@ IntroScene11: ; e4c86 (39:4c86) ld a, $5 ld [rSVBK], a ld hl, Palette_365ad - ld de, wMapPals + ld de, UnknBGPals ld bc, $80 call CopyBytes ld hl, Palette_365ad @@ -1034,7 +1034,7 @@ IntroScene13: ; e4d6d (39:4d6d) ld a, $5 ld [rSVBK], a ld hl, Palette_e5edd - ld de, wMapPals + ld de, UnknBGPals ld bc, $80 call CopyBytes ld hl, Palette_e5edd @@ -1143,7 +1143,7 @@ IntroScene15: ; e4e40 (39:4e40) ld a, $5 ld [rSVBK], a ld hl, Palette_e77dd - ld de, wMapPals + ld de, UnknBGPals ld bc, $80 call CopyBytes ld hl, Palette_e77dd @@ -1217,7 +1217,7 @@ IntroScene17: ; e4ef5 (39:4ef5) ld a, $5 ld [rSVBK], a ld hl, Palette_e6d6d - ld de, wMapPals + ld de, UnknBGPals ld bc, $80 call CopyBytes ld hl, Palette_e6d6d @@ -1291,7 +1291,7 @@ IntroScene19: ; e4f7e (39:4f7e) ld a, $5 ld [rSVBK], a ld hl, Palette_e77dd - ld de, wMapPals + ld de, UnknBGPals ld bc, $80 call CopyBytes ld hl, Palette_e77dd @@ -1459,7 +1459,7 @@ IntroScene26: ; e50bb (39:50bb) ld a, $5 ld [rSVBK], a ld hl, Palette_e679d - ld de, wMapPals + ld de, UnknBGPals ld bc, $80 call CopyBytes ld hl, Palette_e679d @@ -1785,7 +1785,7 @@ endr ld bc, $8 call CopyBytes pop bc - ld de, wMapPals + ld de, UnknBGPals ld a, c add e ld e, a diff --git a/engine/debug.asm b/engine/debug.asm index 913ea0a8d..0d2720990 100755 --- a/engine/debug.asm +++ b/engine/debug.asm @@ -1244,7 +1244,7 @@ Function8220f: ; 8220f rept 3 add hl, hl endr - ld de, wMapPals + ld de, UnknBGPals add hl, de ld de, wc608 ld bc, 8 diff --git a/engine/diploma.asm b/engine/diploma.asm index d2ca46bb3..8f8ef9e99 100644 --- a/engine/diploma.asm +++ b/engine/diploma.asm @@ -31,7 +31,7 @@ Function1dd709: ; 1dd709 call PlaceString call EnableLCD call WaitBGMap - ld b, $8 + ld b, SCGB_08 call GetSGBLayout call SetPalettes call DelayFrame diff --git a/engine/dummy_game.asm b/engine/dummy_game.asm index 72a8e3a80..4e8dad1a3 100755 --- a/engine/dummy_game.asm +++ b/engine/dummy_game.asm @@ -8,7 +8,7 @@ _DummyGame: ; e1e5b (38:5e5b) Functione1e67: ; e1e67 (38:5e67) call DisableLCD - ld b, $8 + ld b, SCGB_08 call GetSGBLayout callab Function8cf53 ld hl, LZ_e2221 diff --git a/engine/evolution_animation.asm b/engine/evolution_animation.asm index 8e0a4af6d..835db8b52 100755 --- a/engine/evolution_animation.asm +++ b/engine/evolution_animation.asm @@ -52,11 +52,11 @@ _EvolutionAnimation: ; 4e607 ld [PlayerHPPal], a ld c, $0 - call Function4e703 + call .GetSGBLayout ld a, [Buffer1] ld [CurPartySpecies], a ld [CurSpecies], a - call Function4e708 + call .PlaceFrontpic ld de, VTiles2 ld hl, VTiles2 tile $31 @@ -65,11 +65,11 @@ _EvolutionAnimation: ; 4e607 ld a, $31 ld [wd1ec], a - call Evolution_FlashFrontpics + call .ReplaceFrontpic ld a, [Buffer2] ld [CurPartySpecies], a ld [CurSpecies], a - call Function4e711 + call .LoadFrontpic ld a, [Buffer1] ld [CurPartySpecies], a ld [CurSpecies], a @@ -90,14 +90,14 @@ _EvolutionAnimation: ; 4e607 call DelayFrames ld c, $1 - call Function4e703 - call Function4e726 - jr c, .pressed_b + call .GetSGBLayout + call .AnimationSequence + jr c, .cancel_evo - ld a, $cf + ld a, -7 * 7 ld [wd1ec], a - call Evolution_FlashFrontpics + call .ReplaceFrontpic xor a ld [wd1ed], a @@ -105,7 +105,7 @@ _EvolutionAnimation: ; 4e607 ld [PlayerHPPal], a ld c, $0 - call Function4e703 + call .GetSGBLayout call Function4e7a6 callba Function8cf53 call Function4e794 @@ -134,7 +134,7 @@ _EvolutionAnimation: ; 4e607 .asm_4e6de ret -.pressed_b +.cancel_evo ld a, $1 ld [wd1ed], a @@ -142,7 +142,7 @@ _EvolutionAnimation: ; 4e607 ld [PlayerHPPal], a ld c, $0 - call Function4e703 + call .GetSGBLayout call Function4e7a6 callba Function8cf53 call Function4e794 @@ -153,38 +153,38 @@ _EvolutionAnimation: ; 4e607 ret ; 4e703 -Function4e703: ; 4e703 - ld b, $b +.GetSGBLayout: ; 4e703 + ld b, SCGB_0B jp GetSGBLayout ; 4e708 -Function4e708: ; 4e708 +.PlaceFrontpic: ; 4e708 call GetBaseData hlcoord 7, 2 jp PrepMonFrontpic ; 4e711 -Function4e711: ; 4e711 +.LoadFrontpic: ; 4e711 call GetBaseData ld a, $1 ld [wc2c6], a ld de, VTiles2 - predef Function5108b + predef FrontpicPredef xor a ld [wc2c6], a ret ; 4e726 -Function4e726: ; 4e726 +.AnimationSequence: ; 4e726 call ClearJoypad - lb bc, 1, 14 + lb bc, 1, 2 * 7 ; flash b times, wait c frames in between .loop push bc - call Evolution_CheckPressedB + call .WaitFrames_CheckPressedB pop bc - jr c, .pressed_b + jr c, .exit_sequence push bc - call Evolution_NextFrame + call .Flash pop bc inc b rept 2 @@ -194,31 +194,30 @@ endr and a ret -.pressed_b +.exit_sequence scf ret ; 4e741 -Evolution_NextFrame: ; 4e741 -.loop - ld a, -49 +.Flash: ; 4e741 + ld a, -7 * 7 ; new stage ld [wd1ec], a - call Evolution_FlashFrontpics - ld a, 49 + call .ReplaceFrontpic + ld a, 7 * 7 ; previous stage ld [wd1ec], a - call Evolution_FlashFrontpics + call .ReplaceFrontpic dec b - jr nz, .loop + jr nz, .Flash ret ; 4e755 -Evolution_FlashFrontpics: ; 4e755 +.ReplaceFrontpic: ; 4e755 push bc xor a ld [hBGMapMode], a hlcoord 7, 2 lb bc, 7, 7 - ld de, $d + ld de, SCREEN_WIDTH - 7 .loop1 push bc .loop2 @@ -238,8 +237,7 @@ Evolution_FlashFrontpics: ; 4e755 ret ; 4e779 -Evolution_CheckPressedB: ; 4e779 -.loop +.WaitFrames_CheckPressedB: ; 4e779 call DelayFrame push bc call JoyTextDelay @@ -247,16 +245,16 @@ Evolution_CheckPressedB: ; 4e779 pop bc and B_BUTTON jr nz, .pressed_b -.loop2 +.loop3 dec c - jr nz, .loop + jr nz, .WaitFrames_CheckPressedB and a ret .pressed_b ld a, [wd1e9] and a - jr nz, .loop2 + jr nz, .loop3 scf ret ; 4e794 @@ -281,18 +279,18 @@ Function4e7a6: ; 4e7a6 ld a, [hl] push af ld [hl], $0 -.asm_4e7b8 +.loop call Function4e7cf - jr nc, .asm_4e7c2 + jr nc, .done call Function4e80c - jr .asm_4e7b8 + jr .loop -.asm_4e7c2 +.done ld c, $20 -.asm_4e7c4 +.loop2 call Function4e80c dec c - jr nz, .asm_4e7c4 + jr nz, .loop2 pop af ld [wJumptableIndex], a ret @@ -319,7 +317,7 @@ Function4e7cf: ; 4e7cf Function4e7e8: ; 4e7e8 push de - ld de, $4858 + lb de, $48, $58 ld a, $13 call _InitSpriteAnimStruct ld hl, $b @@ -342,6 +340,7 @@ Function4e7e8: ; 4e7e8 Function4e80c: ; 4e80c push bc callab Function8cf69 + ; a = (([hVBlankCounter] + 4) / 2) % NUM_PALETTES ld a, [hVBlankCounter] and $e srl a @@ -350,9 +349,9 @@ rept 2 endr and $7 ld b, a - ld hl, Sprites + 3 - ld c, $28 -.asm_4e823 + ld hl, Sprites + 3 ; attributes + ld c, 40 +.loop ld a, [hl] or b ld [hli], a @@ -360,7 +359,7 @@ rept 3 inc hl endr dec c - jr nz, .asm_4e823 + jr nz, .loop pop bc call DelayFrame ret diff --git a/engine/link.asm b/engine/link.asm index feb4b5023..e10a3d0f6 100755 --- a/engine/link.asm +++ b/engine/link.asm @@ -495,7 +495,7 @@ Function283b2: ; 283b2 call PlaceWholeStringInBoxAtOnce call RotateThreePalettesRight call ClearScreen - ld b, $8 + ld b, SCGB_08 call GetSGBLayout call Function3200 ret @@ -1585,7 +1585,7 @@ Function28ade: ; 28ade Function28b22: ; 28b22 call RotateThreePalettesRight call ClearScreen - ld b, $8 + ld b, SCGB_08 call GetSGBLayout call Function3200 xor a @@ -1889,7 +1889,7 @@ Function28b87: ; 28b87 call DelayFrames call ClearTileMap call LoadFontsBattleExtra - ld b, $8 + ld b, SCGB_08 call GetSGBLayout ld a, [hLinkPlayerNumber] cp $1 @@ -2401,7 +2401,7 @@ Function2914e: ; 2914e pop bc ld [hl], b call WaitBGMap - ld b, $1b + ld b, SCGB_1B call GetSGBLayout ld a, $e4 call DmgToCgbBGPals @@ -2672,7 +2672,7 @@ Function29348: ; 29348 lb bc, 3, 12 call Function297db call WaitBGMap - ld b, $1b + ld b, SCGB_1B call GetSGBLayout ld a, $e4 call DmgToCgbBGPals @@ -2812,7 +2812,7 @@ Function2942e: ; 2942e ld [TempMonDVs], a ld a, [wPlayerMinimized] ld [TempMonDVs + 1], a - ld b, $1a + ld b, SCGB_1A call GetSGBLayout ld a, $e4 call DmgToCgbBGPals @@ -2838,7 +2838,7 @@ Function29461: ; 29461 ld [TempMonDVs], a ld a, [wPlayerWrapCount] ld [TempMonDVs + 1], a - ld b, $1a + ld b, SCGB_1A call GetSGBLayout ld a, $e4 call DmgToCgbBGPals diff --git a/engine/namingscreen.asm b/engine/namingscreen.asm index c62dc1a0f..93cd97199 100755 --- a/engine/namingscreen.asm +++ b/engine/namingscreen.asm @@ -41,7 +41,7 @@ NamingScreen: ; 116c1 Function116f8: ; 116f8 call ClearBGPalettes - ld b, $8 + ld b, SCGB_08 call GetSGBLayout call DisableLCD call Function11c51 diff --git a/engine/party_menu.asm b/engine/party_menu.asm index 356b07f8e..06b774064 100644 --- a/engine/party_menu.asm +++ b/engine/party_menu.asm @@ -20,7 +20,7 @@ Function5001d: ; 5001d call ClearBGPalettes call Function5003f call WaitBGMap - ld b, $a + ld b, SCGB_0A call GetSGBLayout call SetPalettes call DelayFrame @@ -149,7 +149,7 @@ PlacePartyHPBar: ; 500cf ld b, $0 add hl, bc call SetHPPal - ld b, $fc + ld b, SCGB_FC call GetSGBLayout .skip @@ -162,7 +162,7 @@ PlacePartyHPBar: ; 500cf inc b dec c jr nz, .loop - ld b, $a + ld b, SCGB_0A call GetSGBLayout ret ; 50117 diff --git a/engine/pokedex.asm b/engine/pokedex.asm index 080647895..656e1767b 100644 --- a/engine/pokedex.asm +++ b/engine/pokedex.asm @@ -2363,7 +2363,7 @@ Function41401: ; 41401 (10:5401) push af ld a, $5 ld [rSVBK], a - ld hl, wMapPals + ld hl, UnknBGPals ld bc, $40 xor a call ByteFill diff --git a/engine/pokegear.asm b/engine/pokegear.asm index 2aaf0d74e..da6006853 100755 --- a/engine/pokegear.asm +++ b/engine/pokegear.asm @@ -1952,7 +1952,7 @@ _FlyMap: ; 91af3 call Request1bpp call FlyMap call Function91c8f - ld b, $2 + ld b, SCGB_02 call GetSGBLayout call SetPalettes .loop @@ -2378,7 +2378,7 @@ Function91d11: ; 91d11 call TownMapPals hlbgcoord 0, 0 call TownMapBGUpdate - ld b, $2 + ld b, SCGB_02 call GetSGBLayout call SetPalettes xor a diff --git a/engine/predef.asm b/engine/predef.asm index 213cfc352..90a60c800 100644 --- a/engine/predef.asm +++ b/engine/predef.asm @@ -92,7 +92,7 @@ PredefPointers:: ; 856b add_predef PartyMonItemName add_predef GetFrontpic add_predef GetBackpic - add_predef Function5108b + add_predef FrontpicPredef add_predef GetTrainerPic add_predef DecompressPredef ; $40 add_predef CheckTypeMatchup diff --git a/engine/slot_machine.asm b/engine/slot_machine.asm index dab0e2361..afd038588 100755 --- a/engine/slot_machine.asm +++ b/engine/slot_machine.asm @@ -28,9 +28,9 @@ Function926f7: ; 926f7 (24:66f7) call DisableLCD hlbgcoord 0, 0 lb bc, 4, 0 - ld a, $7f + ld a, " " call ByteFill - ld b, $5 + ld b, SCGB_05 call GetSGBLayout callab Function8cf53 ld hl, wc6d0 diff --git a/engine/startmenu.asm b/engine/startmenu.asm index ba5e2330c..a40aa734e 100755 --- a/engine/startmenu.asm +++ b/engine/startmenu.asm @@ -1795,7 +1795,7 @@ SetUpMoveScreenBG: ; 13172 call PrintLevel ld hl, PlayerHPPal call SetHPPal - ld b, $e + ld b, SCGB_0E call GetSGBLayout hlcoord 16, 0 lb bc, 1, 3 diff --git a/engine/stats_screen.asm b/engine/stats_screen.asm index 11c6f61ce..766e05fe7 100755 --- a/engine/stats_screen.asm +++ b/engine/stats_screen.asm @@ -848,7 +848,7 @@ Function4e289: ; 4e289 (13:6289) ret c call Function4e307 ld de, VTiles2 tile $00 - predef Function5108b + predef FrontpicPredef hlcoord 0, 0 ld d, $0 ld e, $2 @@ -1051,7 +1051,7 @@ Function4e497: ; 4e497 (13:6497) ld [wc2c6], a call Function4e307 ld de, VTiles2 tile $00 - predef Function5108b + predef FrontpicPredef pop de hlcoord 0, 0 ld d, $0 diff --git a/engine/timeofdaypals.asm b/engine/timeofdaypals.asm index fac580f41..b977772eb 100644 --- a/engine/timeofdaypals.asm +++ b/engine/timeofdaypals.asm @@ -39,7 +39,7 @@ _TimeOfDayPals:: ; 8c011 ; save bg palette 8 - ld hl, wMapPals + 8 * 7 ; wMapPals + 7 pals + ld hl, UnknBGPals + 8 * 7 ; UnknBGPals + 7 pals ; save wram bank ld a, [rSVBK] @@ -65,12 +65,12 @@ _TimeOfDayPals:: ; 8c011 ; update sgb pals - ld b, $9 + ld b, SCGB_09 call GetSGBLayout ; restore bg palette 8 - ld hl, Unkn2Pals - 1 ; last byte in wMapPals + ld hl, UnknOBPals - 1 ; last byte in UnknBGPals ; save wram bank ld a, [rSVBK] @@ -172,12 +172,12 @@ Function8c0c1: ; 8c0c1 push af ld a, $5 ld [rSVBK], a - ld hl, wMapPals + ld hl, UnknBGPals ld a, [hli] ld e, a ld a, [hli] ld d, a - ld hl, wMapPals + 8 + ld hl, UnknBGPals + 8 ld c, $6 .asm_8c0d4 ld a, e diff --git a/engine/title.asm b/engine/title.asm index fc8dfa0e4..0812ec0ec 100644 --- a/engine/title.asm +++ b/engine/title.asm @@ -144,7 +144,7 @@ _TitleScreen: ; 10ed67 ; Update palette colors ld hl, TitleScreenPalettes - ld de, wMapPals + ld de, UnknBGPals ld bc, 4 * 32 call CopyBytes @@ -220,7 +220,7 @@ _TitleScreen: ; 10ed67 ld [hBGMapMode], a xor a - ld [wMapPals + 2], a + ld [UnknBGPals + 2], a ; Play starting sound effect call SFXChannelsOff @@ -231,7 +231,7 @@ _TitleScreen: ; 10ed67 ; 10eea7 SuicuneFrameIterator: ; 10eea7 - ld hl, wMapPals + 2 + ld hl, UnknBGPals + 2 ld a, [hl] ld c, a inc [hl] -- cgit v1.2.3 From 24b7b2c1cf4a83967c441f1d23c28760e0dadcc1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 22 Nov 2015 12:01:58 -0500 Subject: Foreign language font handling in mail --- engine/events_2.asm | 4 ++-- engine/link.asm | 67 ++++++++++++++++++++++++++++++++--------------------- 2 files changed, 43 insertions(+), 28 deletions(-) (limited to 'engine') diff --git a/engine/events_2.asm b/engine/events_2.asm index 972379e6d..c9b673e81 100644 --- a/engine/events_2.asm +++ b/engine/events_2.asm @@ -275,7 +275,7 @@ DoBikeStep:: ; 97db3 ; if we've already gotten the call, we don't have to ; be here. ld hl, StatusFlags2 - bit 4, [hl] + bit 4, [hl] ; bike shop call jr z, .NoCall ; If we're not on the bike, we don't have to be here. @@ -326,7 +326,7 @@ DoBikeStep:: ; 97db3 xor a ld [wSpecialPhoneCallID + 1], a ld hl, StatusFlags2 - res 4, [hl] + res 4, [hl] ; bike shop call scf ret diff --git a/engine/link.asm b/engine/link.asm index e10a3d0f6..77b63183e 100755 --- a/engine/link.asm +++ b/engine/link.asm @@ -363,23 +363,23 @@ Function28177: ; 28177 .asm_282cc push bc push de - callba Function1de5c8 + callba IsMailEuropean ld a, c or a - jr z, .asm_282ee + jr z, .next sub $3 - jr nc, .asm_282e4 - callba Function1df203 - jr .asm_282ee + jr nc, .skip + callba DeutenEnglischenPost + jr .next -.asm_282e4 +.skip cp $2 - jr nc, .asm_282ee - callba Function1df220 + jr nc, .next + callba HandleSpanishItalianMail -.asm_282ee +.next pop de - ld hl, $2f + ld hl, MAIL_STRUCT_LENGTH add hl, de ld d, h ld e, l @@ -802,62 +802,77 @@ Function284f6: ; 284f6 ; 28595 Function28595: ; 28595 - ld de, OverworldMap - ld a, $fd - ld b, $6 + ld de, wc800 + ld a, EGG + ld b, PARTY_LENGTH .loop1 ld [de], a inc de dec b jr nz, .loop1 + ; de = $c806 ld hl, PlayerName ld bc, NAME_LENGTH call CopyBytes + ; de = $c811 ld hl, PartyCount - ld bc, 8 + ld bc, 1 + PARTY_LENGTH + 1 call CopyBytes + ; de = $c819 ld hl, PlayerID ld bc, 2 call CopyBytes + ; de = $c81b ld hl, PartyMon1Species - ld bc, $120 + ld bc, PARTY_LENGTH * PARTYMON_STRUCT_LENGTH call CopyBytes + ; de = $c93b ld hl, PartyMonOT - ld bc, $42 + ld bc, PARTY_LENGTH * NAME_LENGTH call CopyBytes + ; de = $c97d ld hl, PartyMonNicknames - ld bc, $42 + ld bc, PARTY_LENGTH * PKMN_NAME_LENGTH call CopyBytes + ; de = $c9bf + +; Okay, we did all that. Now, are we in the trade center? ld a, [wLinkMode] cp LINK_TRADECENTER ret nz + +; Fill 32 bytes at wc9f4 with $05 ld de, wc9f4 ld a, $20 call Function28682 + +; Copy all the mail messages to $ca14 ld a, BANK(sPartyMail) call GetSRAMBank ld hl, sPartyMail ld b, PARTY_LENGTH .loop2 push bc - ld bc, $21 + ld bc, MAIL_MSG_LENGTH + 1 call CopyBytes - ld bc, $e + ld bc, MAIL_STRUCT_LENGTH - MAIL_MSG_LENGTH - 1 add hl, bc pop bc dec b jr nz, .loop2 +; Copy the mail metadata to $cada ld hl, sPartyMail ld b, PARTY_LENGTH .loop3 push bc - ld bc, $21 + ld bc, MAIL_MSG_LENGTH + 1 add hl, bc - ld bc, $e + ld bc, MAIL_STRUCT_LENGTH - MAIL_MSG_LENGTH - 1 call CopyBytes pop bc dec b jr nz, .loop3 + ld b, PARTY_LENGTH ld de, sPartyMail ld hl, wc9f9 @@ -866,20 +881,20 @@ Function28595: ; 28595 push hl push de push hl - callba Function1de5c8 + callba IsMailEuropean pop de ld a, c or a jr z, .next sub $3 - jr nc, .skip - callba Function1df1e6 + jr nc, .italian_spanish + callba HandleFrenchGermanMail jr .next -.skip +.italian_spanish cp $2 jr nc, .next - callba Function1df220 + callba HandleSpanishItalianMail .next pop de -- cgit v1.2.3 From 58020fb5f629693e3f90c0a3c6b417f61330802c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 23 Nov 2015 00:21:21 -0500 Subject: trade animation --- engine/billspc.asm | 28 +- engine/link.asm | 1609 +---------------------------------------- engine/mail.asm | 2 +- engine/main_menu.asm | 4 +- engine/mysterygift.asm | 1702 ++++++++++++++++++++++++++++++++++++++++++++ engine/npctrade.asm | 177 ++--- engine/pokedex.asm | 2 +- engine/predef.asm | 4 +- engine/printer.asm | 94 +-- engine/trade/animation.asm | 1542 +++++++++++++++++++++++++++++++++++++++ 10 files changed, 3444 insertions(+), 1720 deletions(-) create mode 100755 engine/mysterygift.asm create mode 100755 engine/trade/animation.asm (limited to 'engine') diff --git a/engine/billspc.asm b/engine/billspc.asm index 1f46ee587..6c228a18e 100755 --- a/engine/billspc.asm +++ b/engine/billspc.asm @@ -2547,41 +2547,41 @@ String_e36f1: ; e36f1 ; e36f9 Functione36f9: ; e36f9 (38:76f9) - ld hl, MenuDataHeader_0xe377b + ld hl, .MenuDataHeader call LoadMenuDataHeader call InterpretMenu2 call ExitMenu ret c ld a, [MenuSelection2] cp $1 - jr z, .asm_e3734 + jr z, .Switch cp $2 - jr z, .asm_e3745 + jr z, .Name cp $3 - jr z, .asm_e3717 + jr z, .Print and a ret -.asm_e3717 +.Print call GetBoxCount and a - jr z, .asm_e372f + jr z, .EmptyBox ld e, l ld d, h ld a, [MenuSelection] dec a ld c, a - callba Function844bc + callba PrintPCBox call Functione35e2 and a ret -.asm_e372f +.EmptyBox call Functione37be and a ret -.asm_e3734 +.Switch ld a, [MenuSelection] dec a ld e, a @@ -2591,8 +2591,8 @@ Functione36f9: ; e36f9 (38:76f9) callba ChangeBoxSaveGame ret -.asm_e3745 - ld b, $4 +.Name + ld b, $4 ; box ld de, wd002 callba NamingScreen call ClearTileMap @@ -2616,15 +2616,15 @@ Functione36f9: ; e36f9 (38:76f9) hlcoord 11, 7 ; XXX -MenuDataHeader_0xe377b: ; 0xe377b +.MenuDataHeader: ; 0xe377b db $40 ; flags db 04, 11 ; start coords db 13, 19 ; end coords - dw MenuData2_0xe3783 + dw .MenuData2 db 1 ; default option ; 0xe3783 -MenuData2_0xe3783: ; 0xe3783 +.MenuData2: ; 0xe3783 db $80 ; flags db 4 ; items db "SWITCH@" diff --git a/engine/link.asm b/engine/link.asm index 77b63183e..96c5cb376 100755 --- a/engine/link.asm +++ b/engine/link.asm @@ -83,8 +83,8 @@ Function2805d: ; 2805d ld a, $fe ld [de], a ld hl, wc608 - ld de, wc6d0 - ld bc, $c8 + ld de, wPlayerTrademonSpecies + ld bc, wPlayerTrademonSpecies - wc608 call Function75f xor a ld [rIF], a @@ -105,7 +105,7 @@ Function2805d: ; 2805d ld de, OverworldMap ld bc, $1a2 call Function2879e - ld de, wc6d0 + ld de, wPlayerTrademonSpecies ld hl, wc813 ld c, $2 .asm_280fe @@ -226,7 +226,7 @@ Function28177: ; 28177 ld a, $fe ld [de], a ld hl, wc608 - ld de, wc6d0 + ld de, wPlayerTrademonSpecies ld bc, $c8 call Function75f ld a, [wLinkMode] @@ -250,7 +250,7 @@ Function28177: ; 28177 ld de, OverworldMap ld bc, $1b9 call Function2879e - ld de, wc6d0 + ld de, wPlayerTrademonSpecies ld hl, wc813 ld c, $2 .asm_28224 @@ -841,12 +841,12 @@ Function28595: ; 28595 cp LINK_TRADECENTER ret nz -; Fill 32 bytes at wc9f4 with $05 +; Fill 5 bytes at wc9f4 with $20 ld de, wc9f4 ld a, $20 call Function28682 -; Copy all the mail messages to $ca14 +; Copy all the mail messages to wc9f9 ld a, BANK(sPartyMail) call GetSRAMBank ld hl, sPartyMail @@ -855,19 +855,19 @@ Function28595: ; 28595 push bc ld bc, MAIL_MSG_LENGTH + 1 call CopyBytes - ld bc, MAIL_STRUCT_LENGTH - MAIL_MSG_LENGTH - 1 + ld bc, sPartyMon1MailEnd - sPartyMon1MailAuthor add hl, bc pop bc dec b jr nz, .loop2 -; Copy the mail metadata to $cada +; Copy the mail metadata to wcabf ld hl, sPartyMail ld b, PARTY_LENGTH .loop3 push bc ld bc, MAIL_MSG_LENGTH + 1 add hl, bc - ld bc, MAIL_STRUCT_LENGTH - MAIL_MSG_LENGTH - 1 + ld bc, sPartyMon1MailEnd - sPartyMon1MailAuthor call CopyBytes pop bc dec b @@ -903,19 +903,19 @@ Function28595: ; 28595 ld d, h ld e, l pop hl - ld bc, $21 + ld bc, sPartyMon1MailAuthor - sPartyMon1Mail add hl, bc pop bc dec b jr nz, .loop4 call CloseSRAM ld hl, wc9f9 - ld bc, $c6 + ld bc, PARTY_LENGTH * (sPartyMon1MailAuthor - sPartyMon1Mail) .loop5 ld a, [hl] cp $fe jr nz, .skip2 - ld [hl], $21 + ld [hl], sPartyMon1MailAuthor - sPartyMon1Mail .skip2 inc hl @@ -925,7 +925,7 @@ Function28595: ; 28595 jr nz, .loop5 ld hl, wcabf ld de, wcb13 - ld b, $54 + ld b, PARTY_LENGTH * (sPartyMon1MailEnd - sPartyMon1MailAuthor) ld c, $0 .loop6 inc c @@ -1798,7 +1798,7 @@ Function28b87: ; 28b87 call CopyBytes call CloseSRAM ld hl, PlayerName - ld de, wc6e7 + ld de, wPlayerTrademonSenderName ld bc, NAME_LENGTH call CopyBytes ld a, [wd002] @@ -1807,28 +1807,28 @@ Function28b87: ; 28b87 ld c, a add hl, bc ld a, [hl] - ld [wc6d0], a + ld [wPlayerTrademonSpecies], a push af ld a, [wd002] ld hl, PartyMonOT call SkipNames - ld de, wc6f2 + ld de, wPlayerTrademonOTName ld bc, NAME_LENGTH call CopyBytes ld hl, PartyMon1ID ld a, [wd002] call GetPartyLocation ld a, [hli] - ld [PlayerScreens], a + ld [wPlayerTrademonID], a ld a, [hl] - ld [EnemyScreens], a + ld [wPlayerTrademonID + 1], a ld hl, PartyMon1DVs ld a, [wd002] call GetPartyLocation ld a, [hli] - ld [wc6fd], a + ld [wPlayerTrademonDVs], a ld a, [hl] - ld [wPlayerMinimized], a + ld [wPlayerTrademonDVs + 1], a ld a, [wd002] ld hl, PartyMon1Species call GetPartyLocation @@ -1836,9 +1836,9 @@ Function28b87: ; 28b87 ld c, l callba GetCaughtGender ld a, c - ld [wc701], a + ld [wPlayerTrademonCaughtData], a ld hl, wd26b - ld de, wc719 + ld de, wOTTrademonSenderName ld bc, NAME_LENGTH call CopyBytes ld a, [wd003] @@ -1847,27 +1847,27 @@ Function28b87: ; 28b87 ld c, a add hl, bc ld a, [hl] - ld [wc702], a + ld [wOTTrademonSpecies], a ld a, [wd003] ld hl, OTPartyMonOT call SkipNames - ld de, wc724 + ld de, wOTTrademonOTName ld bc, NAME_LENGTH call CopyBytes ld hl, OTPartyMon1ID ld a, [wd003] call GetPartyLocation ld a, [hli] - ld [wEnemyWrapCount], a + ld [wOTTrademonID], a ld a, [hl] - ld [wPlayerCharging], a + ld [wOTTrademonID + 1], a ld hl, OTPartyMon1DVs ld a, [wd003] call GetPartyLocation ld a, [hli] - ld [wEnemyTrappingMove], a + ld [wOTTrademonDVs], a ld a, [hl] - ld [wPlayerWrapCount], a + ld [wOTTrademonDVs + 1], a ld a, [wd003] ld hl, OTPartyMon1Species call GetPartyLocation @@ -1875,7 +1875,7 @@ Function28b87: ; 28b87 ld c, l callba GetCaughtGender ld a, c - ld [wEnemyCharging], a + ld [wOTTrademonCaughtData], a ld a, [wd002] ld [CurPartyMon], a ld hl, PartySpecies @@ -1908,14 +1908,14 @@ Function28b87: ; 28b87 call GetSGBLayout ld a, [hLinkPlayerNumber] cp $1 - jr z, .asm_28de4 - predef Function28f24 - jr .asm_28de9 + jr z, .player_2 + predef TradeAnimation + jr .done_animation -.asm_28de4 - predef Function28f63 +.player_2 + predef TradeAnimationPlayer2 -.asm_28de9 +.done_animation pop af ld c, a ld [CurPartyMon], a @@ -2050,1542 +2050,7 @@ Function28f09: ; 28f09 ret ; 28f24 -Function28f24: ; 28f24 - xor a - ld [wcf66], a - ld hl, wc6e7 - ld de, wc719 - call Function297ff - ld hl, wc6d0 - ld de, wc702 - call Function29814 - ld de, .data_28f3f - jr Function28fa1 - -.data_28f3f - db $1b - db $1 - db $1c - db $21 - db $2d - db $27 - db $23 - db $3 - db $25 - db $28 - db $25 - db $1e - db $29 - db $6 - db $16 - db $1f - db $19 - db $17 - db $22 - db $1f - db $2a - db $e - db $3 - db $24 - db $5 - db $25 - db $2 - db $27 - db $25 - db $1d - db $2c - db $2e - db $1e - db $18 - db $1f - db $2b - -Function28f63: ; 28f63 - xor a - ld [wcf66], a - ld hl, wc719 - ld de, wc6e7 - call Function297ff - ld hl, wc702 - ld de, wc6d0 - call Function29814 - ld de, .data_28f7e - jr Function28fa1 - -.data_28f7e - db $1a - db $17 - db $22 - db $1f - db $2a - db $6 - db $3 - db $24 - db $5 - db $25 - db $2 - db $27 - db $25 - db $1d - db $2c - db $2f - db $1e - db $18 - db $1f - db $1b - db $1 - db $1c - db $22 - db $27 - db $23 - db $3 - db $25 - db $28 - db $25 - db $1e - db $29 - db $e - db $16 - db $1f - db $2b - -Function28fa1: ; 28fa1 - ld hl, BattleEnded - 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 Function28fdb - ld a, [wcf66] - and a - jr nz, .asm_28fca - ld de, MUSIC_EVOLUTION - call PlayMusic2 -.asm_28fca - call Function29082 - jr nc, .asm_28fca - pop af - ld [Options], a - pop af - ld [VramState], a - pop af - ld [hMapAnims], a - ret -; 28fdb - -Function28fdb: ; 28fdb - xor a - ld [wJumptableIndex], a - call ClearBGPalettes - call ClearSprites - call ClearTileMap - call DisableLCD - call LoadFontsBattleExtra - callab Function8cf53 - ld a, [hCGB] - and a - jr z, .asm_2900b - ld a, $1 - ld [rVBK], a - ld hl, VTiles0 - ld bc, sScratch - VTiles0 - xor a - call ByteFill - ld a, $0 - ld [rVBK], a - -.asm_2900b - 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 Function4d7fd - call EnableLCD - call Function2982b - ld a, [wc6d0] - ld hl, wc6fd - ld de, VTiles0 - call Function29491 - ld a, [wc702] - ld hl, wEnemyTrappingMove - ld de, VTiles0 tile $31 - call Function29491 - ld a, [wc6d0] - ld de, wc6d1 - call Function294a9 - ld a, [wc702] - ld de, wc703 - call Function294a9 - call Function297ed - ret -; 29082 - -Function29082: ; 29082 - ld a, [wJumptableIndex] - bit 7, a - jr nz, .asm_2909b - call Function290a0 - callab Function8cf69 - ld hl, wcf65 - inc [hl] - call DelayFrame - and a - ret - -.asm_2909b - call LoadStandardFont - scf - ret -; 290a0 - -Function290a0: ; 290a0 - ld a, [wJumptableIndex] - ld e, a - ld d, 0 - ld hl, JumpTable290af -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 290af - -JumpTable290af: ; 290af - dw Function29114 - dw Function2942e - dw Function29461 - dw Function29348 - dw Function2937e - dw Function29391 - dw Function29129 - dw Function291af - dw Function291c4 - dw Function291d9 - dw Function2925d - dw Function29220 - dw Function2925d - dw Function29229 - dw Function2913c - dw Function2925d - dw Function291e8 - dw Function291fd - dw Function29211 - dw Function29220 - dw Function2925d - dw Function29229 - dw Function29701 - dw Function2973c - dw Function2975c - dw Function2977f - dw Function297a4 - dw Function293a6 - dw Function293b6 - dw Function293d2 - dw Function293de - dw Function293ea - dw Function2940c - dw Function294e7 - dw Function294f0 - dw Function2961b - dw Function2962c - dw Function29879 - dw Function29886 - dw Function29649 - dw Function29660 - dw Function2926d - dw Function29277 - dw Function29123 - dw Function29487 - dw Function294f9 - dw Function29502 - dw Function2950c -; 2910f - -Function2910f: ; 2910f - ld hl, wJumptableIndex - inc [hl] - ret -; 29114 - -Function29114: ; 29114 - ld hl, BattleEnded - 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 - -Function29123: ; 29123 - ld hl, wJumptableIndex - set 7, [hl] - ret -; 29129 - -Function29129: ; 29129 - ld a, $ed - call Function292f6 - ld a, [wc74c] - ld [wd265], a - xor a - ld de, $2c58 - ld b, $0 - jr Function2914e - -Function2913c: ; 2913c - ld a, $ee - call Function292f6 - ld a, [wc74d] - ld [wd265], a - ld a, $2 - lb de, $4c, $94 - ld b, $4 - -Function2914e: ; 2914e - push bc - push de - push bc - push de - push af - call DisableLCD - callab Function8cf53 - hlbgcoord 20, 3 - ld bc, $c - ld a, $60 - call ByteFill - pop af - call Function29281 - xor a - ld [hSCX], a - ld a, $7 - ld [hWX], a - ld a, $70 - ld [hWY], a - call EnableLCD - call Function2985a - pop de - ld a, $11 - call _InitSpriteAnimStruct - ld hl, $b - add hl, bc - pop bc - ld [hl], b - pop de - ld a, $12 - call _InitSpriteAnimStruct - ld hl, $b - add hl, bc - pop bc - ld [hl], b - call WaitBGMap - ld b, SCGB_1B - call GetSGBLayout - ld a, $e4 - call DmgToCgbBGPals - ld a, $d0 - call Functioncf8 - call Function2910f - ld a, $5c - ld [wcf64], a - ret -; 291af - -Function291af: ; 291af - call Function2981d - ld a, [hSCX] - add $2 - ld [hSCX], a - cp $50 - ret nz - ld a, $1 - call Function29281 - call Function2910f - ret -; 291c4 - -Function291c4: ; 291c4 - call Function2981d - ld a, [hSCX] - add $2 - ld [hSCX], a - cp $a0 - ret nz - ld a, $2 - call Function29281 - call Function2910f - ret -; 291d9 - -Function291d9: ; 291d9 - call Function2981d - ld a, [hSCX] - add $2 - ld [hSCX], a - and a - ret nz - call Function2910f - ret -; 291e8 - -Function291e8: ; 291e8 - call Function2981d - ld a, [hSCX] - sub $2 - ld [hSCX], a - cp $b0 - ret nz - ld a, $1 - call Function29281 - call Function2910f - ret -; 291fd - -Function291fd: ; 291fd - call Function2981d - ld a, [hSCX] - sub $2 - ld [hSCX], a - cp $60 - ret nz - xor a - call Function29281 - call Function2910f - ret -; 29211 - -Function29211: ; 29211 - call Function2981d - ld a, [hSCX] - sub $2 - ld [hSCX], a - and a - ret nz - call Function2910f - ret -; 29220 - -Function29220: ; 29220 - ld a, $80 - ld [wcf64], a - call Function2910f - ret -; 29229 - -Function29229: ; 29229 - call ClearBGPalettes - call ClearTileMap - call ClearSprites - call DisableLCD - callab Function8cf53 - 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 Function2982b - call WaitBGMap - call Function297ed - call Function29114 - ret -; 2925d - -Function2925d: ; 2925d - call Function2981d - ld hl, wcf64 - ld a, [hl] - and a - jr z, .asm_29269 - dec [hl] - ret - -.asm_29269 - call Function2910f - ret -; 2926d - -Function2926d: ; 2926d - call Function29114 - ld de, SFX_GIVE_TRADEMON - call PlaySFX - ret -; 29277 - -Function29277: ; 29277 - call Function29114 - ld de, SFX_GET_TRADEMON - call PlaySFX - ret -; 29281 - -Function29281: ; 29281 - and 3 - ld e, a - ld d, 0 - ld hl, Jumptable_2928f -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 2928f - -Jumptable_2928f: ; 2928f - dw Function29297 - dw Function292af - dw Function292be - dw Function29297 -; 29297 - -Function29297: ; 29297 - call Function297cf - hlcoord 9, 3 - ld [hl], $5b - inc hl - ld bc, $a - ld a, $60 - call ByteFill - hlcoord 3, 2 - call Function292ec - ret -; 292af - -Function292af: ; 292af - call Function297cf - hlcoord 0, 3 - ld bc, SCREEN_WIDTH - ld a, $60 - call ByteFill - ret -; 292be - -Function292be: ; 292be - call Function297cf - 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 -.asm_292d9 - add hl, de - ld [hl], a - dec c - jr nz, .asm_292d9 - add hl, de - ld a, $5f - ld [hld], a - ld a, $5b - ld [hl], a - hlcoord 10, 6 - call Function292ec - ret -; 292ec - -Function292ec: ; 292ec - ld de, TradeGameBoyTilemap - lb bc, 8, 6 - call Function297db - ret -; 292f6 - -Function292f6: ; 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, wc736 - call PlaceString - ld hl, wc741 - ld de, 0 -.asm_2931e - ld a, [hli] - cp "@" - jr z, .asm_29326 - dec de - jr .asm_2931e - -.asm_29326 - hlcoord 0, 4 - add hl, de - ld de, wc741 - 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 - -Function29348: ; 29348 - call ClearTileMap - call WaitTop - ld a, $a0 - ld [hSCX], a - call DelayFrame - hlcoord 8, 2 - ld de, Tilemap_298f7 - lb bc, 3, 12 - call Function297db - call WaitBGMap - ld b, SCGB_1B - call GetSGBLayout - ld a, $e4 - call DmgToCgbBGPals - ld de, $e4e4 - call DmgToCgbObjPals - ld de, SFX_POTION - call PlaySFX - call Function2910f - ret -; 2937e - -Function2937e: ; 2937e - ld a, [hSCX] - and a - jr z, .asm_29388 - add $4 - ld [hSCX], a - ret - -.asm_29388 - ld c, $50 - call DelayFrames - call Function29114 - ret -; 29391 - -Function29391: ; 29391 - ld a, [hSCX] - cp $a0 - jr z, .asm_2939c - sub $4 - ld [hSCX], a - ret - -.asm_2939c - call ClearTileMap - xor a - ld [hSCX], a - call Function29114 - ret -; 293a6 - -Function293a6: ; 293a6 - ld a, $8f - ld [hWX], a - ld a, $88 - ld [hSCX], a - ld a, $50 - ld [hWY], a - call Function29114 - ret -; 293b6 - -Function293b6: ; 293b6 - ld a, [hWX] - cp $7 - jr z, .asm_293c7 - sub $4 - ld [hWX], a - ld a, [hSCX] - sub $4 - ld [hSCX], a - ret - -.asm_293c7 - ld a, $7 - ld [hWX], a - xor a - ld [hSCX], a - call Function29114 - ret -; 293d2 - -Function293d2: ; 293d2 - ld a, $7 - ld [hWX], a - ld a, $50 - ld [hWY], a - call Function29114 - ret -; 293de - -Function293de: ; 293de - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - call Function29114 - ret -; 293ea - -Function293ea: ; 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 Function2910f - ret -; 2940c - -Function2940c: ; 2940c - ld a, [hWX] - cp $a1 - jr nc, .asm_29417 - add $4 - ld [hWX], a - ret - -.asm_29417 - 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 Function29114 - ret -; 2942e - -Function2942e: ; 2942e - call Function2951f - ld a, [wc6d0] - ld [CurPartySpecies], a - ld a, [wc6fd] - ld [TempMonDVs], a - ld a, [wPlayerMinimized] - ld [TempMonDVs + 1], a - ld b, SCGB_1A - call GetSGBLayout - ld a, $e4 - call DmgToCgbBGPals - call Function294bb - - ld a, [wc6d0] - call GetCryIndex - jr c, .asm_2945d - ld e, c - ld d, b - call PlayCryHeader -.asm_2945d - - call Function29114 - ret -; 29461 - -Function29461: ; 29461 - call Function29549 - ld a, [wc702] - ld [CurPartySpecies], a - ld a, [wEnemyTrappingMove] - ld [TempMonDVs], a - ld a, [wPlayerWrapCount] - ld [TempMonDVs + 1], a - ld b, SCGB_1A - call GetSGBLayout - ld a, $e4 - call DmgToCgbBGPals - call Function294c0 - call Function29114 - ret -; 29487 - -Function29487: ; 29487 - callba Function4d81e - call Function29114 - ret -; 29491 - -Function29491: ; 29491 - push de - push af - predef GetUnownLetter - pop af - ld [CurPartySpecies], a - ld [CurSpecies], a - call GetBaseData - pop de - predef GetFrontpic - ret -; 294a9 - -Function294a9: ; 294a9 - push de - ld [wd265], a - call GetPokemonName - ld hl, StringBuffer1 - pop de - ld bc, NAME_LENGTH - call CopyBytes - ret -; 294bb - -Function294bb: ; 294bb - ld de, VTiles0 - jr Function294c3 - -Function294c0: ; 294c0 - ld de, VTiles0 tile $31 - -Function294c3: ; 294c3 - call DelayFrame - ld hl, VTiles2 - ld bc, $a31 - call Request2bpp - call WaitTop - call Function297cf - hlcoord 7, 2 - xor a - ld [hFillBox], a - lb bc, 7, 7 - predef FillBox - call WaitBGMap - ret -; 294e7 - -Function294e7: ; 294e7 - ld c, $50 - call DelayFrames - call Function29114 - ret -; 294f0 - -Function294f0: ; 294f0 - ld c, $28 - call DelayFrames - call Function29114 - ret -; 294f9 - -Function294f9: ; 294f9 - ld c, $60 - call DelayFrames - call Function29114 - ret -; 29502 - -Function29502: ; 29502 - call Function29516 - ret nz - ld c, $50 - call DelayFrames - ret -; 2950c - -Function2950c: ; 2950c - call Function29516 - ret nz - ld c, $b4 - call DelayFrames - ret -; 29516 - -Function29516: ; 29516 - call Function29114 - ld a, [wc702] - cp $fd - ret -; 2951f - -Function2951f: ; 2951f - ld de, wc6d0 - ld a, [de] - cp $fd - jr z, Function295a1 - call Function29573 - ld de, wc6d0 - call Function295e3 - ld de, wc6d1 - call Function295ef - ld a, [wc701] - ld de, wc6f2 - call Function295f6 - ld de, PlayerScreens - call Function29611 - call Function295d8 - ret -; 29549 - -Function29549: ; 29549 - ld de, wc702 - ld a, [de] - cp $fd - jr z, Function295a1 - call Function29573 - ld de, wc702 - call Function295e3 - ld de, wc703 - call Function295ef - ld a, [wEnemyCharging] - ld de, wc724 - call Function295f6 - ld de, wEnemyWrapCount - call Function29611 - call Function295d8 - ret -; 29573 - -Function29573: ; 29573 - call WaitTop - call Function297cf - ld a, VBGMap1 / $100 - ld [hBGMapAddress + 1], a - hlcoord 3, 0 - ld b, $6 - ld c, $d - call TextBox - hlcoord 4, 0 - ld de, String29591 - call PlaceString - ret -; 29591 - -String29591: ; 29591 - db "─── №." - next "" - next "OT/" - next $73, "№.@" -; 295a1 - -Function295a1: ; 295a1 - call WaitTop - call Function297cf - ld a, VBGMap1 / $100 - ld [hBGMapAddress + 1], a - hlcoord 3, 0 - ld b, $6 - ld c, $d - call TextBox - hlcoord 4, 2 - ld de, String295c2 - call PlaceString - call Function295d8 - ret -; 295c2 - -String295c2: ; 295c2 - db "EGG" - next "OT/?????" - next $73, "№.?????@" -; 295d8 - -Function295d8: ; 295d8 - call WaitBGMap - call WaitTop - ld a, VBGMap0 / $100 - ld [hBGMapAddress + 1], a - ret -; 295e3 - -Function295e3: ; 295e3 - hlcoord 10, 0 - lb bc, PRINTNUM_LEADINGZEROS | 1, 3 - call PrintNum - ld [hl], $7f - ret -; 295ef - -Function295ef: ; 295ef - hlcoord 4, 2 - call PlaceString - ret -; 295f6 - -Function295f6: ; 295f6 - cp 3 - jr c, .asm_295fb - xor a - -.asm_295fb - push af - hlcoord 7, 4 - call PlaceString - inc bc - pop af - ld hl, Unknown_2960e - ld d, 0 - ld e, a - add hl, de - ld a, [hl] - ld [bc], a - ret -; 2960e - -Unknown_2960e: ; 2960e - db " ", "♂", "♀" -; 29611 - -Function29611: ; 29611 - hlcoord 7, 6 - lb bc, PRINTNUM_LEADINGZEROS | 2, 5 - call PrintNum - ret -; 2961b - -Function2961b: ; 2961b - depixel 10, 11, 4, 0 - ld a, $e - call _InitSpriteAnimStruct - call Function29114 - ld a, $20 - ld [wcf64], a - ret -; 2962c - -Function2962c: ; 2962c - depixel 10, 11, 4, 0 - ld a, $e - call _InitSpriteAnimStruct - ld hl, $b - add hl, bc - ld [hl], $1 - ld hl, $7 - add hl, bc - ld [hl], $dc - call Function29114 - ld a, $38 - ld [wcf64], a - ret -; 29649 - -Function29649: ; 29649 - depixel 10, 11, 4, 0 - ld a, $f - call _InitSpriteAnimStruct - call Function29114 - ld a, $10 - ld [wcf64], a - ld de, SFX_BALL_POOF - call PlaySFX - ret -; 29660 - -Function29660: ; 29660 - ld a, $e4 - call Functioncf8 - depixel 5, 11 - ld a, $10 - call _InitSpriteAnimStruct - call Function29114 - ld a, $40 - ld [wcf64], a - ret -; 29676 - -Function29676: ; 29676 (a:5676) - ld hl, $b - add hl, bc - ld e, [hl] - ld d, 0 - ld hl, Jumptable_29686 -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 29686 - -Jumptable_29686: ; 29686 (a:5686) - dw Function2969a - dw Function296a4 - dw Function296af - dw Function296bd - dw Function296cf - dw Function296dd - dw Function296f2 -; 2969a - -Function29694: ; 29694 (a:5694) - ld hl, $b - add hl, bc - inc [hl] - ret - -Function2969a: ; 2969a (a:569a) - call Function29694 - ld hl, $c - add hl, bc - ld [hl], $80 - ret - -Function296a4: ; 296a4 (a:56a4) - ld hl, $c - add hl, bc - ld a, [hl] - dec [hl] - and a - ret nz - call Function29694 - -Function296af: ; 296af (a:56af) - ld hl, $4 - add hl, bc - ld a, [hl] - cp $94 - jr nc, .asm_296ba - inc [hl] - ret -.asm_296ba - call Function29694 - -Function296bd: ; 296bd (a:56bd) - ld hl, $5 - add hl, bc - ld a, [hl] - cp $4c - jr nc, .asm_296c8 - inc [hl] - ret -.asm_296c8 - ld hl, $ - add hl, bc - ld [hl], $0 - ret - -Function296cf: ; 296cf (a:56cf) - ld hl, $5 - add hl, bc - ld a, [hl] - cp $2c - jr z, .asm_296da - dec [hl] - ret -.asm_296da - call Function29694 - -Function296dd: ; 296dd (a:56dd) - ld hl, $4 - add hl, bc - ld a, [hl] - cp $58 - jr z, .asm_296e8 - dec [hl] - ret -.asm_296e8 - call Function29694 - ld hl, $c - add hl, bc - ld [hl], $80 - ret - -Function296f2: ; 296f2 (a:56f2) - ld hl, $c - add hl, bc - ld a, [hl] - dec [hl] - and a - ret nz - ld hl, $ - add hl, bc - ld [hl], $0 - ret -; 29701 (a:5701) - -Function29701: ; 29701 - ld a, [wLinkMode] - cp LINK_TIMECAPSULE - jr z, .asm_29725 - ld hl, UnknownText_0x29737 - call PrintText - ld c, $bd - call DelayFrames - ld hl, UnknownText_0x29732 - call PrintText - call Function297c9 - ld c, $80 - call DelayFrames - call Function29114 - ret - -.asm_29725 - ld hl, UnknownText_0x29732 - call PrintText - call Function297c9 - call Function29114 - ret -; 29732 - -UnknownText_0x29732: ; 0x29732 - ; was sent to @ . - text_jump UnknownText_0x1bc6e9 - db "@" -; 0x29737 - -UnknownText_0x29737: ; 0x29737 - ; - text_jump UnknownText_0x1bc701 - db "@" -; 0x2973c - -Function2973c: ; 2973c - ld hl, UnknownText_0x29752 - call PrintText - call Function297c9 - ld hl, UnknownText_0x29757 - call PrintText - call Function297c9 - call Function29114 - ret -; 29752 - -UnknownText_0x29752: ; 0x29752 - ; bids farewell to - text_jump UnknownText_0x1bc703 - db "@" -; 0x29757 - -UnknownText_0x29757: ; 0x29757 - ; . - text_jump UnknownText_0x1bc719 - db "@" -; 0x2975c - -Function2975c: ; 2975c - call WaitTop - hlcoord 0, 10 - ld bc, 8 * SCREEN_WIDTH - ld a, " " - call ByteFill - call WaitBGMap - ld hl, UnknownText_0x2977a - call PrintText - call Function297c9 - call Function29114 - ret -; 2977a - -UnknownText_0x2977a: ; 0x2977a - ; Take good care of @ . - text_jump UnknownText_0x1bc71f - db "@" -; 0x2977f - -Function2977f: ; 2977f - ld hl, UnknownText_0x2979a - call PrintText - call Function297c9 - ld hl, UnknownText_0x2979f - call PrintText - call Function297c9 - ld c, $e - call DelayFrames - call Function29114 - ret -; 2979a - -UnknownText_0x2979a: ; 0x2979a - ; For @ 's @ , - text_jump UnknownText_0x1bc739 - db "@" -; 0x2979f - -UnknownText_0x2979f: ; 0x2979f - ; sends @ . - text_jump UnknownText_0x1bc74c - db "@" -; 0x297a4 - -Function297a4: ; 297a4 - ld hl, UnknownText_0x297bf - call PrintText - call Function297c9 - ld hl, UnknownText_0x297c4 - call PrintText - call Function297c9 - ld c, $e - call DelayFrames - call Function29114 - ret -; 297bf - -UnknownText_0x297bf: ; 0x297bf - ; will trade @ @ - text_jump UnknownText_0x1bc75e - db "@" -; 0x297c4 - -UnknownText_0x297c4: ; 0x297c4 - ; for @ 's @ . - text_jump UnknownText_0x1bc774 - db "@" -; 0x297c9 - -Function297c9: ; 297c9 - ld c, $50 - call DelayFrames - ret -; 297cf - -Function297cf: ; 297cf - hlcoord 0, 0 - ld bc, SCREEN_WIDTH * SCREEN_HEIGHT - ld a, " " - call ByteFill - ret -; 297db - -Function297db: ; 297db -.asm_297db - push bc - push hl -.asm_297dd - ld a, [de] - inc de - ld [hli], a - dec c - jr nz, .asm_297dd - pop hl - ld bc, SCREEN_WIDTH - add hl, bc - pop bc - dec b - jr nz, .asm_297db - ret -; 297ed - -Function297ed: ; 297ed - ld a, [hSGB] - and a - ld a, $e4 - jr z, .asm_297f6 - ld a, $f0 - -.asm_297f6 - call Functioncf8 - ld a, $e4 - call DmgToCgbBGPals - ret -; 297ff - -Function297ff: ; 297ff - push de - ld de, wc736 - ld bc, NAME_LENGTH - call CopyBytes - pop hl - ld de, wc741 - ld bc, NAME_LENGTH - call CopyBytes - ret -; 29814 - -Function29814: ; 29814 - ld a, [hl] - ld [wc74c], a - ld a, [de] - ld [wc74d], a - ret -; 2981d - -Function2981d: ; 2981d - ld a, [wcf65] - and $7 - ret nz - ld a, [rBGP] - xor $3c - call DmgToCgbBGPals - ret -; 2982b - -Function2982b: ; 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, wc300 - ld [hli], a - ld [hl], $62 - ret -; 2985a - -Function2985a: ; 2985a - call DelayFrame - ld e, $3 - callab Function8e83f - ld de, TradeBubbleGFX - ld hl, VTiles0 tile $72 - lb bc, BANK(TradeBubbleGFX), $4 - call Request2bpp - xor a - ld hl, wc300 - ld [hli], a - ld [hl], $62 - ret -; 29879 - -Function29879: ; 29879 - ld hl, wcf64 - ld a, [hl] - and a - jr z, .asm_29882 - dec [hl] - ret - -.asm_29882 - call Function29114 - ret -; 29886 - -Function29886: ; 29886 - ld hl, wcf64 - ld a, [hl] - and a - jr z, .asm_2988f - dec [hl] - ret - -.asm_2988f - call Function29114 - ret -; 29893 - - -Function29893: ; 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, Unknown_298b5 - - ld a, [hli] - ld [wc6d0], a - ld de, wc6e7 - ld c, 13 ; jp: 8 -.asm_2989f - ld a, [hli] - ld [de], a - inc de - dec c - jr nz, .asm_2989f - - ld a, [hli] - ld [wc702], a - ld de, wc719 - ld c, 13 ; jp: 8 -.asm_298ae - ld a, [hli] - ld [de], a - inc de - dec c - jr nz, .asm_298ae - ret -; 298b5 - -Unknown_298b5: ; 298b5 - db $03, "ゲーフり@@", $23, $01 ; GAME FREAK - db $06, "クりーチャ@", $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 - -Tilemap_298f7: ; 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" +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/mail.asm b/engine/mail.asm index 1cf1a13a7..7aa6b30c1 100755 --- a/engine/mail.asm +++ b/engine/mail.asm @@ -489,7 +489,7 @@ Function4484a: ; 0x4484a ld a, BANK(sMailboxCount) call GetSRAMBank pop af - ld hl, sMailbox1MailType + ld hl, sMailbox1Type ld bc, MAIL_STRUCT_LENGTH call AddNTimes ld a, [hl] diff --git a/engine/main_menu.asm b/engine/main_menu.asm index 428858a74..efab46cda 100755 --- a/engine/main_menu.asm +++ b/engine/main_menu.asm @@ -161,9 +161,9 @@ Function49da4: ; 49da4 cp $1 ld a, $1 ret nz - ld a, BANK(s0_abe5) + ld a, BANK(sNumDailyMysteryGiftPartnerIDs) call GetSRAMBank - ld a, [s0_abe5] + ld a, [sNumDailyMysteryGiftPartnerIDs] cp $ff call CloseSRAM jr nz, .done diff --git a/engine/mysterygift.asm b/engine/mysterygift.asm new file mode 100755 index 000000000..43cbe52d1 --- /dev/null +++ b/engine/mysterygift.asm @@ -0,0 +1,1702 @@ +DoMysteryGift: ; 1048ba (41:48ba) + call ClearTileMap + call ClearSprites + call WaitBGMap + call Function105153 + hlcoord 3, 8 + ld de, .String_PressAToLink_BToCancel + call PlaceString + call WaitBGMap + callba Function2c642 + call Function1050fb + ld a, $2 + ld [wca01], a + ld a, $14 + ld [wca02], a + ld a, [rIE] + push af + call Function104a95 + ld d, a + xor a + ld [rIF], a + pop af + ld [rIE], a + push de + call ClearTileMap + call EnableLCD + call WaitBGMap + ld b, SCGB_08 + call GetSGBLayout + call SetPalettes + pop de + hlcoord 2, 8 + ld a, d + ld de, .Text_LinkCanceled ; Link has been canceled + cp $10 + jp z, .LinkCanceled + cp $6c + jp nz, .CommunicationError + ld a, [wc900] + cp $3 + jr z, .skip_checks + call .CheckAlreadyGotFiveGiftsToday + ld hl, .Text_MaxFiveGifts ; Only 5 gifts a day + jp nc, .PrintTextAndExit + call .CheckAlreadyGotAGiftFromThatPerson + ld hl, .Text_MaxOneGiftPerPerson ; Only one gift a day per person + jp c, .PrintTextAndExit +.skip_checks + ld a, [wc962] + and a + jp nz, .GiftWaiting + ld a, [wc912] + and a + jp nz, .FriendNotReady + ld a, [wc900] + cp $3 + jr z, .skip_append_save + call .AddMysteryGiftPartnerID + ld a, [wc900] + cp $4 + jr z, .skip_append_save + call .SaveMysteryGiftTrainerName + callba RestoreMobileEventIndex + callba MobileFn_1060a9 + callba BackupMobileEventIndex +.skip_append_save + ld a, [wc90f] + and a + jr z, .item + ld a, [wc911] + ld c, a + callba MysteryGiftGetDecoration + push bc + call Function105069 + pop bc + jr nz, .item + callab GetDecorationName_c + ld h, d + ld l, e + ld de, StringBuffer1 + ld bc, ITEM_NAME_LENGTH + call CopyBytes + ld hl, .Text_SentToHome ; sent decoration to home + jr .PrintTextAndExit + +.item + call GetMysteryGiftBank + ld a, [wc910] + ld c, a + callba MysteryGiftGetItemHeldEffect + ld a, c + ld [sBackupMysteryGiftItem], a + ld [wNamedObjectIndexBuffer], a + call CloseSRAM + call GetItemName + ld hl, .Text_Sent ; sent item + jr .PrintTextAndExit + +.LinkCanceled: ; 1049af (41:49af) + ld hl, .Text_LinkCanceled ; Link has been canceled + jr .PrintTextAndExit + +.CommunicationError: ; 1049b4 (41:49b4) + ld hl, .Text_CommunicationError ; Communication error + call PrintText + jp DoMysteryGift + +.GiftWaiting: ; 1049bd (41:49bd) + ld hl, .Text_ReceiveGiftAtCounter ; receive gift at counter + jr .PrintTextAndExit + +.FriendNotReady: ; 1049c2 (41:49c2) + ld hl, .Text_FriendNotReady ; friend not ready + +.PrintTextAndExit: ; 1049c5 (41:49c5) + call PrintText + ld a, $e3 + ld [rLCDC], a + ret +; 1049cd (41:49cd) + +.String_PressAToLink_BToCancel: ; 1049cd + db "Press A to" + next "link IR-Device" + next "Press B to" + next "cancel it." + db "@" +; 1049fd + +.Text_LinkCanceled: ; 1049fd + text_jump UnknownText_0x1c0436 + db "@" +; 104a02 + +.Text_CommunicationError: ; 104a02 + text_jump UnknownText_0x1c0454 + db "@" +; 104a07 + +.Text_ReceiveGiftAtCounter: ; 104a07 + text_jump UnknownText_0x1c046a + db "@" +; 104a0c + +.Text_FriendNotReady: ; 104a0c + text_jump UnknownText_0x1c048e + db "@" +; 104a11 + +.Text_MaxFiveGifts: ; 104a11 + text_jump UnknownText_0x1c04a7 + db "@" +; 104a16 + +.Text_MaxOneGiftPerPerson: ; 104a16 + text_jump UnknownText_0x1c04c6 + db "@" +; 104a1b + +.Text_Sent: ; 104a1b + text_jump UnknownText_0x1c04e9 + db "@" +; 104a20 + +.Text_SentToHome: ; 104a20 + text_jump UnknownText_0x1c04fa + db "@" +; 104a25 + +.CheckAlreadyGotFiveGiftsToday: ; 104a25 (41:4a25) + call GetMysteryGiftBank + ld a, [sNumDailyMysteryGiftPartnerIDs] + cp $5 + jp CloseSRAM + +.CheckAlreadyGotAGiftFromThatPerson: ; 104a30 (41:4a30) + call GetMysteryGiftBank + ld a, [wMysteryGiftPartnerID] + ld b, a + ld a, [wMysteryGiftPartnerID + 1] + ld c, a + ld a, [sNumDailyMysteryGiftPartnerIDs] + ld d, a + ld hl, sDailyMysteryGiftPartnerIDs +.loop + ld a, d + and a + jr z, .No + ld a, [hli] + cp b + jr nz, .skip + ld a, [hl] + cp c + jr z, .Yes +.skip + inc hl + dec d + jr .loop +.Yes + scf +.No + jp CloseSRAM + +.AddMysteryGiftPartnerID: ; 104a56 (41:4a56) + call GetMysteryGiftBank + ld hl, sNumDailyMysteryGiftPartnerIDs + ld a, [hl] + inc [hl] + ld hl, sDailyMysteryGiftPartnerIDs ; inc hl + ld e, a + ld d, $0 +rept 2 + add hl, de +endr + ld a, [wMysteryGiftPartnerID] + ld [hli], a + ld a, [wMysteryGiftPartnerID + 1] + ld [hl], a + jp CloseSRAM + +.SaveMysteryGiftTrainerName: ; 104a71 (41:4a71) + call GetMysteryGiftBank + ld a, $1 + ld [sMysteryGiftTrainerHouseFlag], a + ld hl, wMysteryGiftPartnerName + ld de, sMysteryGiftPartnerName + ld bc, NAME_LENGTH + call CopyBytes + ld a, $1 + ld [de], a + inc de + ld hl, wMysteryGiftTrainerData + ld bc, (1 + 1 + NUM_MOVES) * PARTY_LENGTH + 2 + call CopyBytes + jp CloseSRAM + +Function104a95: ; 104a95 (41:4a95) + di + callba ClearChannels + call Function104d5e +.loop2 + call Function104d96 + call Function104ddd + ld a, [hPrintNum10] + cp $10 + jp z, Function104bd0 + cp $6c + jr nz, .loop2 + ld a, [hPrintNum9] + cp $2 + jr z, Function104b22 + ld hl, $ffb3 + ld b, $1 + call Function104d56 + jr nz, .ly_loop + call Function104b49 + jp nz, Function104bd0 + jr asm_104b0a +.ly_loop + ld a, [rLY] + cp $90 + jr c, .ly_loop + ld c, rRP % $100 + ld a, $c0 + ld [$ff00+c], a + ld b, $f0 +.loop3 + push bc + call Function105038 + ld b, $2 + ld c, rRP % $100 +.ly_loop2 + ld a, [$ff00+c] + and b + ld b, a + ld a, [rLY] + cp $90 + jr nc, .ly_loop2 +.ly_loop3 + ld a, [$ff00+c] + and b + ld b, a + ld a, [rLY] + cp $90 + jr c, .ly_loop3 + ld a, b + pop bc + dec b + jr z, .loop2 + or a + jr nz, .loop2 + ld a, [hMoneyTemp + 1] + bit 1, a + jr z, .loop3 + ld a, $10 + ld [hPrintNum10], a + jp Function104bd0 + +Function104b04: ; 104b04 (41:4b04) + call Function104b40 + jp nz, Function104bd0 + +asm_104b0a: ; 104b0a (41:4b0a) + call Function104d38 + jp nz, Function104bd0 + call Function104b88 + jp nz, Function104bd0 + call Function104d43 + jp nz, Function104bd0 + call Function105033 + jp Function104bd0 + +Function104b22: ; 104b22 (41:4b22) + call Function104b88 + jp nz, Function104bd0 + call Function104d43 + jp nz, Function104bd0 + call Function104b40 + jp nz, Function104bd0 + call Function104d38 + jp nz, Function104bd0 + call Function10502e + jp Function104bd0 + +Function104b40: ; 104b40 (41:4b40) + ld hl, $ffb3 + ld b, $1 + call Function104d56 + ret nz + +Function104b49: ; 104b49 (41:4b49) + call Function105033 + ld a, [hPrintNum10] + cp $6c + ret nz + ld a, [$ffb3] + cp $96 + jp nz, Function104d32 + ld a, $90 + ld [$ffb3], a + call Function104d38 + ret nz + ld hl, $ffb3 + ld b, $1 + call Function104d4e + ret nz + call Function10502e + ld a, [hPrintNum10] + cp $6c + ret nz + call Function104d43 + ret nz + ld hl, wMysteryGiftTrainerData + ld a, [wca02] + ld b, a + call Function104d56 + ret nz + call Function105033 + ld a, [hPrintNum10] + cp $6c + ret + +Function104b88: ; 104b88 (41:4b88) + ld a, $96 + ld [$ffb3], a + ld hl, $ffb3 + ld b, $1 + call Function104d4e + ret nz + call Function10502e + ld a, [hPrintNum10] + cp $6c + ret nz + call Function104d43 + ret nz + ld hl, $ffb3 + ld b, $1 + call Function104d56 + ret nz + call Function105033 + ld a, [hPrintNum10] + cp $6c + ret nz + ld a, [$ffb3] + cp $90 + jp nz, Function104d32 + call Function104d38 + ret nz + ld hl, OverworldMap + ld a, [wca02] + ld b, a + call Function104d4e + ret nz + call Function10502e + ld a, [hPrintNum10] + cp $6c + ret + +Function104bd0: ; 104bd0 (41:4bd0) + nop + ld a, [hPrintNum10] + cp $10 + jr z, .asm_104c18 + cp $6c + jr nz, .asm_104c18 + ld hl, wca01 + dec [hl] + jr z, .asm_104c18 + ld hl, wMysteryGiftTrainerData + ld de, wc900 + ld bc, $14 + call CopyBytes + ld a, [wMysteryGiftTrainerData] + cp $3 + jr nc, .asm_104c18 + callba Function10510b + call Function1050fb + ld a, $26 + ld [wca02], a + ld a, [hPrintNum9] + cp $2 + jr z, .asm_104c10 + call Function104d43 + jr nz, Function104bd0 + jp Function104b04 +.asm_104c10 + call Function104d38 + jr nz, Function104bd0 + jp Function104b22 +.asm_104c18 + ld a, [hPrintNum10] + push af + call Function104da0 + xor a + ld [rIF], a + ld a, [rIE] + or $1 + ld [rIE], a + ei + call DelayFrame + pop af + ret + +Function104c2d: ; 104c2d (41:4c2d) + di + callba ClearChannels + call Function104d5e +.asm_104c37 + call Function104d96 + call Function104ddd + ld a, [hPrintNum10] + cp $10 + jp z, Function104d1c + cp $6c + jr nz, .asm_104c37 + ld a, [hPrintNum9] + cp $2 + jr z, .asm_104c6c + call Function104c8a + jp nz, Function104d1c + call Function104d38 + jp nz, Function104d1c + call Function104cd2 + jp nz, Function104d1c + call Function104d43 + jp nz, Function104d1c + call Function105033 + jp Function104d1c +.asm_104c6c + call Function104cd2 + jp nz, Function104d1c + call Function104d43 + jp nz, Function104d1c + call Function104c8a + jp nz, Function104d1c + call Function104d38 + jp nz, Function104d1c + call Function10502e + jp Function104d1c + +Function104c8a: ; 104c8a (41:4c8a) + ld hl, $ffb3 + ld b, $1 + call Function104d56 + ret nz + call Function105033 + ld a, [hPrintNum10] + cp $6c + ret nz + ld a, [$ffb3] + cp $3c + jp nz, Function104d32 + swap a + ld [$ffb3], a + call Function104d38 + ret nz + ld hl, $ffb3 + ld b, $1 + call Function104d4e + ret nz + call Function10502e + ld a, [hPrintNum10] + cp $6c + ret nz + call Function104d43 + ret nz + ld hl, wMysteryGiftTrainerData + ld a, [wca02] + ld b, a + call Function104d56 + ret nz + call Function105033 + ld a, [hPrintNum10] + cp $6c + ret + +Function104cd2: ; 104cd2 (41:4cd2) + ld a, $3c + ld [$ffb3], a + ld hl, $ffb3 + ld b, $1 + call Function104d4e + ret nz + call Function10502e + ld a, [hPrintNum10] + cp $6c + ret nz + call Function104d43 + ret nz + ld hl, $ffb3 + ld b, $1 + call Function104d56 + ret nz + call Function105033 + ld a, [hPrintNum10] + cp $6c + ret nz + ld a, [$ffb3] + swap a + cp $3c + jp nz, Function104d32 + call Function104d38 + ret nz + ld hl, OverworldMap + ld a, [wca02] + ld b, a + call Function104d4e + ret nz + call Function10502e + ld a, [hPrintNum10] + cp $6c + ret + +Function104d1c: ; 104d1c (41:4d1c) + nop + ld a, [hPrintNum10] + push af + call Function104da0 + xor a + ld [rIF], a + ld a, [rIE] + or $1 + ld [rIE], a + ei + call DelayFrame + pop af + ret + +Function104d32: ; 104d32 (41:4d32) + ld a, $80 + ld [hPrintNum10], a + and a + ret + +Function104d38: ; 104d38 (41:4d38) + call Function104d96 + call Function104e46 + ld a, [hPrintNum10] + cp $6c + ret + +Function104d43: ; 104d43 (41:4d43) + call Function104d96 + call Function104dfe + ld a, [hPrintNum10] + cp $6c + ret + +Function104d4e: ; 104d4e (41:4d4e) + call Function104e93 + ld a, [hPrintNum10] + cp $6c + ret + +Function104d56: ; 104d56 (41:4d56) + call Function104f57 + ld a, [hPrintNum10] + cp $6c + ret + +Function104d5e: ; 104d5e (41:4d5e) + call Function104d74 + ld a, $4 + ld [rIE], a + xor a + ld [rIF], a + call Function104d96 + xor a + ld b, a +.asm_104d6d + inc a + jr nz, .asm_104d6d + inc b + jr nz, .asm_104d6d + ret + +Function104d74: ; 104d74 (41:4d74) + xor a + ld [rTAC], a + ld a, $fe + ld [rTMA], a + ld [rTIMA], a + ld a, $2 + ld [rTAC], a + or $4 + ld [rTAC], a + ret + +Function104d86: ; 104d86 (41:4d86) + xor a + ld [rTAC], a + ld [rTMA], a + ld [rTIMA], a + ld a, $2 + ld [rTAC], a + or $4 + ld [rTAC], a + ret + +Function104d96: ; 104d96 (41:4d96) + ld a, $c0 + call Function104e8c + ld a, $1 + ld [hPrintNum9], a + ret + +Function104da0: ; 104da0 (41:4da0) + xor a + call Function104e8c + ld a, $2 + ld [rTAC], a + ret + +Function104da9: ; 104da9 (41:4da9) + inc d + ret z + xor a + ld [rIF], a + halt + ld a, [$ff00+c] + bit 1, a + jr z, Function104da9 + or a + ret + +Function104db7: ; 104db7 (41:4db7) + inc d + ret z + xor a + ld [rIF], a + halt + ld a, [$ff00+c] + bit 1, a + jr nz, Function104db7 + or a + ret + +Function104dc5: ; 104dc5 (41:4dc5) + ld a, $c1 + ld [$ff00+c], a +.asm_104dc8 + dec d + ret z + xor a + ld [rIF], a + halt + jr .asm_104dc8 + +Function104dd1: ; 104dd1 (41:4dd1) + ld a, $c0 + ld [$ff00+c], a +.asm_104dd4 + dec d + ret z + xor a + ld [rIF], a + halt + jr .asm_104dd4 + +Function104ddd: ; 104ddd (41:4ddd) + ld d, $0 + ld e, d + ld a, $1 + ld [hPrintNum9], a +.asm_104de4 + call Function105038 + ld b, $2 + ld c, rRP % $100 + ld a, [hMoneyTemp + 1] + bit 1, a + jr z, .asm_104df6 + ld a, $10 + ld [hPrintNum10], a + ret +.asm_104df6 + bit 0, a + jr nz, asm_104e3a + ld a, [$ff00+c] + and b + jr nz, .asm_104de4 + +Function104dfe: ; 104dfe (41:4dfe) + ld c, rRP % $100 + ld d, $0 + ld e, d + call Function104db7 + jp z, Function104f42 + ld d, e + call Function104da9 + jp z, Function104f42 + call Function104db7 + jp z, Function104f42 + call Function104da9 + jp z, Function104f42 + ld a, $6c + ld [hPrintNum10], a + ld d, $3d + call Function104dd1 + ld d, $5 + call Function104dc5 + ld d, $15 + call Function104dd1 + ld d, $5 + call Function104dc5 + ld d, $5 + call Function104dd1 + ret + +asm_104e3a: ; 104e3a (41:4e3a) + call Random + ld e, a + and $f + ld d, a +.asm_104e41 + dec de + ld a, d + or e + jr nz, .asm_104e41 + +Function104e46: ; 104e46 (41:4e46) + ld a, $2 + ld [hPrintNum9], a + ld c, $56 + ld d, $0 + ld e, d + ld d, $3d + call Function104dd1 + ld d, $5 + call Function104dc5 + ld d, $15 + call Function104dd1 + ld d, $5 + call Function104dc5 + ld d, $5 + call Function104dd1 + ld d, e + call Function104db7 + jp z, Function104f42 + ld d, e + call Function104da9 + jp z, Function104f42 + call Function104db7 + jp z, Function104f42 + call Function104da9 + jp z, Function104f42 + ld d, $3d + call Function104dd1 + ld a, $6c + ld [hPrintNum10], a + ret + +Function104e8c: ; 104e8c (41:4e8c) + ld [rRP], a + ld a, $ff + ld [hPrintNum10], a + ret + +Function104e93: ; 104e93 (41:4e93) + xor a + ld [hDivisor], a + ld [hMathBuffer], a + push hl + push bc + ld c, $56 + ld d, $3d + call Function104dd1 + ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand) + ld a, $5a + ld [hli], a + ld [hl], b + dec hl + ld b, $2 + call Function104ed6 + pop bc + pop hl + call Function104ed6 + ld a, [hDivisor] + ld [hQuotient], a + ld a, [hMathBuffer] + ld [$ffb5], a + push hl + ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand) + ld b, $2 + call Function104ed6 + ld hl, hPrintNum10 + ld b, $1 + call Function104faf + ld a, [hQuotient] + ld [hDivisor], a + ld a, [$ffb5] + ld [hMathBuffer], a + pop hl + ret + +Function104ed6: ; 104ed6 (41:4ed6) + ld c, $56 + ld d, $5 + call Function104dd1 + ld d, $5 + call Function104dc5 + ld d, $15 + call Function104dd1 + ld a, b + cpl + ld b, a + ld a, $f4 + ld [rTMA], a +.asm_104eee + inc b + jr z, .asm_104f2e + ld a, $8 + ld [$ffb6], a + ld a, [hli] + ld e, a + ld a, [hDivisor] + add e + ld [hDivisor], a + ld a, [hMathBuffer] + adc $0 + ld [hMathBuffer], a +.asm_104f02 + xor a + ld [rIF], a + halt + ld a, $c1 + ld [rRP], a + ld d, $1 + ld a, e + rlca + ld e, a + jr nc, .asm_104f13 + inc d +.asm_104f13 + ld a, [rTIMA] + cp $f8 + jr c, .asm_104f13 + ld a, $c0 + ld [rRP], a + dec d + jr z, .asm_104f25 + xor a + ld [rIF], a + halt +.asm_104f25 + ld a, [$ffb6] + dec a + jr z, .asm_104eee + ld [$ffb6], a + jr .asm_104f02 +.asm_104f2e + ld a, $fe + ld [rTMA], a + xor a + ld [rIF], a + halt + ld d, $5 + call Function104dc5 + ld d, $11 + call Function104dd1 + ret + +Function104f42: ; 104f42 (41:4f42) + ld a, [hPrintNum10] + or $2 + ld [hPrintNum10], a + ret + +Function104f49: ; 104f49 (41:4f49) + ld a, [hPrintNum10] + or $1 + ld [hPrintNum10], a + ret + +Function104f50: ; 104f50 (41:4f50) + ld a, [hPrintNum10] + or $80 + ld [hPrintNum10], a + ret + +Function104f57: ; 104f57 (41:4f57) + xor a + ld [hDivisor], a + ld [hMathBuffer], a + push bc + push hl + ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand) + ld b, $2 + call Function104faf + ld a, [$ffb5] + ld [$ffba], a + ld b, a + pop hl + pop af + cp b + jp c, Function104f50 + ld a, [hQuotient] + cp $5a + jp nz, Function104f50 + call Function104faf + ld a, [hDivisor] + ld d, a + ld a, [hMathBuffer] + ld e, a + push hl + push de + ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand) + ld b, $2 + call Function104faf + pop de + ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand) + ld a, [hli] + xor d + ld b, a + ld a, [hl] + xor e + or b + call nz, Function104f49 + push de + ld d, $3d + call Function104dd1 + ld hl, hPrintNum10 + ld b, $1 + call Function104ed6 + pop de + pop hl + ld a, d + ld [hDivisor], a + ld a, e + ld [hMathBuffer], a + ret + +Function104faf: ; 104faf (41:4faf) + ld c, rRP % $100 + ld d, $0 + call Function104db7 + jp z, Function104f42 + ld d, $0 + call Function104da9 + jp z, Function104f42 + ld d, $0 + call Function104db7 + jp z, Function104f42 + ld a, b + cpl + ld b, a + xor a + ld [hMoneyTemp + 2], a + call Function104d86 +.asm_104fd2 + inc b + jr z, .asm_10501a + ld a, $8 + ld [$ffb6], a +.asm_104fd9 + ld d, $0 +.asm_104fdb + inc d + jr z, .asm_104fe5 + ld a, [$ff00+c] + bit 1, a + jr z, .asm_104fdb + ld d, $0 +.asm_104fe5 + inc d + jr z, .asm_104fed + ld a, [$ff00+c] + bit 1, a + jr nz, .asm_104fe5 +.asm_104fed + ld a, [hMoneyTemp + 2] + ld d, a + ld a, [rTIMA] + ld [hMoneyTemp + 2], a + sub d + cp $12 + jr c, .asm_104ffd + set 0, e + jr .asm_104fff +.asm_104ffd + res 0, e +.asm_104fff + ld a, [$ffb6] + dec a + ld [$ffb6], a + jr z, .asm_10500b + ld a, e + rlca + ld e, a + jr .asm_104fd9 +.asm_10500b + ld a, e + ld [hli], a + ld a, [hDivisor] + add e + ld [hDivisor], a + ld a, [hMathBuffer] + adc $0 + ld [hMathBuffer], a + jr .asm_104fd2 +.asm_10501a + call Function104d74 + xor a + ld [rIF], a + ld d, $0 + call Function104da9 + jp z, Function104f42 + ld d, $10 + call Function104dd1 + ret + +Function10502e: ; 10502e (41:502e) + ld b, $0 + jp Function104e93 + +Function105033: ; 105033 (41:5033) + ld b, $0 + jp Function104f57 + +Function105038: ; 105038 (41:5038) + ld a, $20 + ld [rJOYP], a +rept 2 + ld a, [rJOYP] +endr + cpl + and $f + swap a + ld b, a + ld a, $10 + ld [rJOYP], a +rept 6 + ld a, [rJOYP] +endr + cpl + and $f + or b + ld c, a + ld a, [hMoneyTemp] + xor c + and c + ld [hMoneyTemp + 1], a + ld a, c + ld [hMoneyTemp], a + ld a, $30 + ld [rJOYP], a + ret + +Function105069: ; 105069 (41:5069) + call GetMysteryGiftBank + ld d, $0 + ld b, CHECK_FLAG + ld hl, sMysteryGiftDecorationsReceived + predef_id FlagPredef + push hl + push bc + call Predef + call CloseSRAM + ld a, c + and a + pop bc + pop hl + ret nz + call GetMysteryGiftBank + ld b, SET_FLAG + predef FlagPredef + call CloseSRAM + xor a + ret + +Function105091: ; 105091 (41:5091) + call GetMysteryGiftBank + ld c, $0 +.loop + push bc + ld d, $0 + ld b, CHECK_FLAG + ld hl, sMysteryGiftDecorationsReceived + predef FlagPredef + ld a, c + and a + pop bc + jr z, .skip + push bc + callab SetSpecificDecorationFlag + pop bc +.skip + inc c + ld a, c + cp Trophys - DecorationIDs + jr c, .loop + jp CloseSRAM + +Special_UnlockMysteryGift: ; 1050b9 + call GetMysteryGiftBank + ld hl, sMysteryGiftUnlocked + ld a, [hl] + inc a + jr nz, .ok + ld [hld], a + ld [hl], a +.ok + jp CloseSRAM +; 1050c8 + +Function1050c8: ; 1050c8 + call GetMysteryGiftBank + ld a, [sNumDailyMysteryGiftPartnerIDs] + cp $ff + jr z, .okay + xor a + ld [sNumDailyMysteryGiftPartnerIDs], a +.okay + jp CloseSRAM +; 1050d9 + + +BackupMysteryGift: ; 1050d9 + call GetMysteryGiftBank + ld hl, sMysteryGiftItem + ld de, sBackupMysteryGiftItem + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + jp CloseSRAM +; 1050ea + + +RestoreMysteryGift: ; 1050ea (41:50ea) + call GetMysteryGiftBank + ld hl, sBackupMysteryGiftItem + ld de, sMysteryGiftItem + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + jp CloseSRAM + +Function1050fb: ; 1050fb (41:50fb) + ld hl, wMysteryGiftTrainerData + xor a + ld b, $26 +.asm_105101 + ld [hli], a + dec b + jr nz, .asm_105101 + ret + + +GetMysteryGiftBank: ; 105106 + ld a, BANK(sBackupMysteryGiftItem) + jp GetSRAMBank +; 10510b + + +Function10510b: ; 10510b (41:510b) + ld a, BANK(sPokemonData) + call GetSRAMBank + ld de, OverworldMap + ld bc, sPokemonData + PartyMons - wPokemonData + ld hl, sPokemonData + PartySpecies - wPokemonData +.asm_105119 + ld a, [hli] + cp $ff + jr z, .asm_105148 + cp EGG + jr z, .asm_10513e + push hl + ld hl, MON_LEVEL + add hl, bc + ld a, [hl] + ld [de], a + inc de + ld hl, MON_SPECIES + add hl, bc + ld a, [hl] + ld [de], a + inc de + ld hl, MON_MOVES + add hl, bc + push bc + ld bc, NUM_MOVES + call CopyBytes + pop bc + pop hl +.asm_10513e + push hl + ld hl, PARTYMON_STRUCT_LENGTH + add hl, bc + ld b, h + ld c, l + pop hl + jr .asm_105119 +.asm_105148 + ld a, $ff + ld [de], a + ld a, $26 + ld [wca00], a + jp CloseSRAM + +Function105153: ; 105153 (41:5153) + call ClearBGPalettes + call DisableLCD + ld hl, MysteryGiftGFX + ld de, VTiles2 tile $00 + ld a, BANK(MysteryGiftGFX) + ld bc, Function105688 - MysteryGiftGFX + call FarCopyBytes + hlcoord 0, 0 + ld a, $42 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + call ByteFill + hlcoord 3, 7 + lb bc, 9, 15 + call ClearBox + hlcoord 0, 0 + ld a, $0 + ld [hli], a + inc a + ld [hl], a + hlcoord 0, 1 + inc a + ld [hli], a + inc a + ld [hl], a + hlcoord 7, 1 + ld a, $12 + call Function10522e + hlcoord 2, 2 + ld a, $17 + call Function105236 + hlcoord 2, 3 + ld a, $27 + call Function105236 + hlcoord 9, 4 + ld a, $37 + ld [hli], a + inc a + ld [hl], a + hlcoord 1, 2 + ld [hl], $4 + hlcoord 1, 3 + ld a, $5 + call Function105246 + ld a, $9 + hlcoord 18, 5 + call Function105242 + hlcoord 2, 5 + ld a, $b + call Function105251 + hlcoord 2, 16 + ld a, $7 + call Function105251 + hlcoord 2, 5 + ld a, $d + call Function10522e + hlcoord 7, 5 + ld [hl], $c + hlcoord 18, 5 + ld [hl], $a + hlcoord 18, 16 + ld [hl], $8 + hlcoord 1, 16 + ld [hl], $6 + hlcoord 2, 6 + ld a, $3a + call Function105251 + hlcoord 2, 15 + ld a, $40 + call Function105251 + hlcoord 2, 6 + ld a, $3c + call Function10523e + hlcoord 17, 6 + ld a, $3e + call Function10523e + hlcoord 2, 6 + ld [hl], $39 + hlcoord 17, 6 + ld [hl], $3b + hlcoord 2, 15 + ld [hl], $3f + hlcoord 17, 15 + ld [hl], $41 + call EnableLCD + call WaitBGMap + ld b, SCGB_1D + call GetSGBLayout + call SetPalettes + ret + +Function10522e: ; 10522e (41:522e) + ld b, $5 + jr asm_105238 +; 105232 (41:5232) + +Function105232: ; unreferenced + ld b, 6 + jr asm_105238 + +Function105236: ; 105236 (41:5236) + ld b, $10 + +asm_105238: ; 105238 (41:5238) + ld [hli], a + inc a + dec b + jr nz, asm_105238 + ret + +Function10523e: ; 10523e (41:523e) + ld b, $9 + jr asm_105248 + +Function105242: ; 105242 (41:5242) + ld b, $b + jr asm_105248 + +Function105246: ; 105246 (41:5246) + ld b, $e + +asm_105248: ; 105248 (41:5248) + ld [hl], a + ld de, $14 + add hl, de + dec b + jr nz, asm_105248 + ret + +Function105251: ; 105251 (41:5251) + ld b, $10 +.asm_105253 + ld [hli], a + dec b + jr nz, .asm_105253 + ret + +MysteryGiftGFX: ; 105258 +INCBIN "gfx/misc/mystery_gift.2bpp" + + +Function105688: ; 105688 (41:5688) + call ClearTileMap + call ClearSprites + call WaitBGMap + call Function1057d7 + hlcoord 3, 8 + ld de, String_10572e + call PlaceString + call WaitBGMap + call Function10578c + call Function1050fb + ld a, $24 + ld [wca02], a + ld a, [rIE] + push af + call Function104c2d + ld d, a + xor a + ld [rIF], a + pop af + ld [rIE], a + ld a, d + cp $10 + jp z, Function105712 + cp $6c + jp nz, Function10571a + call Function1056eb + ld c, 60 + call DelayFrames + call Function105777 + ld hl, Text_10575e + call PrintText + ld de, wMysteryGiftTrainerData + callba Function8ac70 + ld a, c + ld [wd265], a + ld hl, Text_105768 + jr c, asm_105726 + ld hl, Text_105763 + jr asm_105726 + +Function1056eb: ; 1056eb (41:56eb) + ld c, $10 +.asm_1056ed + ld hl, Sprites + ld b, $8 +.asm_1056f2 + dec [hl] +rept 4 + inc hl +endr + dec b + jr nz, .asm_1056f2 + ld hl, Sprites + $20 + ld b, $8 +.asm_1056ff + inc [hl] +rept 4 + inc hl +endr + dec b + jr nz, .asm_1056ff + dec c + ret z + push bc + ld c, 4 + call DelayFrames + pop bc + jr .asm_1056ed + +Function105712: ; 105712 (41:5712) + call Function105777 + ld hl, Text_10576d + jr asm_105726 + +Function10571a: ; 10571a (41:571a) + call Function105777 + ld hl, Text_105772 + call PrintText + jp Function105688 + +asm_105726: ; 105726 (41:5726) + call PrintText + ld a, $e3 + ld [rLCDC], a + ret +; 10572e (41:572e) + +String_10572e: ; 10572e + db "エーボタン¯おすと" + next "つうしん", $4a, "おこなわれるよ!" + next "ビーボタン¯おすと" + next "つうしん¯ちゅうし します" + db "@" + +; 10575e + +Text_10575e: ; 10575e + text_jump UnknownText_0x1c051a + db "@" + +Text_105763: ; 105763 + text_jump UnknownText_0x1c0531 + db "@" + +Text_105768: ; 105768 + text_jump UnknownText_0x1c0555 + db "@" + +Text_10576d: ; 10576d + text_jump UnknownText_0x1c0573 + db "@" + +Text_105772: ; 105772 + text_jump UnknownText_0x1c0591 + db "@" +; 105777 + +Function105777: ; 105777 (41:5777) + call ClearSprites + call ClearTileMap + call EnableLCD + call WaitBGMap + ld b, SCGB_08 + call GetSGBLayout + call SetPalettes + ret + +Function10578c: ; 10578c (41:578c) + ld de, OverworldMap + ld a, BANK(sPlayerData) + call GetSRAMBank + ld hl, sPlayerData + PlayerName - wPlayerData + ld bc, NAME_LENGTH + call CopyBytes + ld hl, sPlayerData + PlayerID - wPlayerData + ld bc, 2 + call CopyBytes + ld hl, sPlayerData + wSecretID - wPlayerData + ld bc, 2 + call CopyBytes + call CloseSRAM + ld a, BANK(sCrystalData) + call GetSRAMBank + ld a, [sCrystalData + 0] + ld [de], a + inc de + ld a, $4 + call GetSRAMBank + ld hl, $a603 + ld bc, $8 + call CopyBytes + ld hl, $a007 + ld bc, $c + call CopyBytes + call CloseSRAM + ret + +Function1057d7: ; 1057d7 (41:57d7) + call ClearBGPalettes + call DisableLCD + ld hl, MysteryGiftJP_GFX + ld de, VTiles2 tile $00 + ld a, BANK(MysteryGiftJP_GFX) + lb bc, 4, 0 + call FarCopyBytes + ld hl, MysteryGiftJP_GFX + $400 + ld de, VTiles0 tile $00 + ld a, BANK(MysteryGiftJP_GFX) + ld bc, $80 + call FarCopyBytes + hlcoord 0, 0 + ld a, $3f + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + call ByteFill + hlcoord 3, 7 + lb bc, 9, 15 + call ClearBox + hlcoord 0, 0 + ld a, $0 + ld [hli], a + inc a + ld [hl], a + hlcoord 0, 1 + inc a + ld [hli], a + inc a + ld [hl], a + hlcoord 4, 2 + ld a, $13 + call Function1058ca + hlcoord 4, 3 + ld a, $1e + call Function1058ce + hlcoord 4, 4 + ld a, $2a + call Function1058ce + hlcoord 1, 2 + ld [hl], $4 + hlcoord 1, 3 + ld a, $5 + call Function1058de + ld a, $9 + hlcoord 18, 5 + call Function1058da + hlcoord 2, 5 + ld a, $b + call Function1058e9 + hlcoord 2, 16 + ld a, $7 + call Function1058e9 + hlcoord 2, 5 + ld a, $d + call Function1058c6 + hlcoord 8, 5 + ld [hl], $c + hlcoord 18, 5 + ld [hl], $a + hlcoord 18, 16 + ld [hl], $8 + hlcoord 1, 16 + ld [hl], $6 + hlcoord 2, 6 + ld a, $37 + call Function1058e9 + hlcoord 2, 15 + ld a, $3d + call Function1058e9 + hlcoord 2, 6 + ld a, $39 + call Function1058d6 + hlcoord 17, 6 + ld a, $3b + call Function1058d6 + hlcoord 2, 6 + ld [hl], $36 + hlcoord 17, 6 + ld [hl], $38 + hlcoord 2, 15 + ld [hl], $3c + hlcoord 17, 15 + ld [hl], $3e + ld de, Sprites + ld hl, OAM_1058f0 + ld bc, $40 + call CopyBytes + call EnableLCD + call WaitBGMap + ld b, $2 + callba Function4930f + jp SetPalettes + +Function1058c6: ; 1058c6 (41:58c6) + ld b, $6 + jr asm_1058d0 + +Function1058ca: ; 1058ca (41:58ca) + ld b, $b + jr asm_1058d0 + +Function1058ce: ; 1058ce (41:58ce) + ld b, $c + +asm_1058d0: ; 1058d0 (41:58d0) + ld [hli], a + inc a + dec b + jr nz, asm_1058d0 + ret + +Function1058d6: ; 1058d6 (41:58d6) + ld b, $9 + jr asm_1058e0 + +Function1058da: ; 1058da (41:58da) + ld b, $b + jr asm_1058e0 + +Function1058de: ; 1058de (41:58de) + ld b, $e + +asm_1058e0: ; 1058e0 (41:58e0) + ld [hl], a + ld de, SCREEN_WIDTH + add hl, de + dec b + jr nz, asm_1058e0 + ret + +Function1058e9: ; 1058e9 (41:58e9) + ld b, $10 +.asm_1058eb + ld [hli], a + dec b + jr nz, .asm_1058eb + ret +; 1058f0 (41:58f0) + +OAM_1058f0: ; 1058f0 + db $11, $34, $00, $00 + db $11, $3c, $01, $00 + db $11, $44, $02, $00 + db $11, $4c, $03, $00 + db $19, $34, $04, $00 + db $19, $3c, $05, $00 + db $19, $44, $06, $00 + db $19, $4c, $07, $00 + db $01, $5c, $00, $00 + db $01, $64, $01, $00 + db $01, $6c, $02, $00 + db $01, $74, $03, $00 + db $09, $5c, $04, $00 + db $09, $64, $05, $00 + db $09, $6c, $06, $00 + db $09, $74, $07, $00 + +; japanese mystery gift gfx +MysteryGiftJP_GFX: ; 105930 +INCBIN "gfx/misc/mystery_gift_jp.2bpp" diff --git a/engine/npctrade.asm b/engine/npctrade.asm index 97109cdd4..0a61129c1 100755 --- a/engine/npctrade.asm +++ b/engine/npctrade.asm @@ -18,10 +18,14 @@ TRADE_WRONG EQU 2 TRADE_COMPLETE EQU 3 TRADE_AFTER EQU 4 +TRADE_EITHER_GENDER EQU 0 +TRADE_MALE_ONLY EQU 1 +TRADE_FEMALE_ONLY EQU 2 + NPCTrade:: ; fcba8 ld a, e ld [wJumptableIndex], a - call Functionfcc59 + call Trade_GetDialog ld b, CHECK_FLAG call TradeFlagAction ld a, TRADE_AFTER @@ -57,8 +61,8 @@ NPCTrade:: ; fcba8 ld hl, ConnectLinkCableText call PrintText - call Functionfcc63 - call Functionfcc07 + call DoNPCTrade + call .TradeAnimation call GetTradeMonNames ld hl, TradedForText @@ -73,13 +77,13 @@ NPCTrade:: ; fcba8 ret ; fcc07 -Functionfcc07: ; fcc07 +.TradeAnimation: ; fcc07 call DisableSpriteUpdates ld a, [wJumptableIndex] push af ld a, [wcf64] push af - predef Function28f24 + predef TradeAnimation pop af ld [wcf64], a pop af @@ -118,7 +122,7 @@ CheckTradeGender: ; fcc23 ; fcc4a TradeFlagAction: ; fcc4a - ld hl, wd960 + ld hl, wTradeFlags ld a, [wJumptableIndex] ld c, a predef FlagPredef @@ -127,7 +131,7 @@ TradeFlagAction: ; fcc4a ret ; fcc59 -Functionfcc59: ; fcc59 +Trade_GetDialog: ; fcc59 ld e, TRADE_DIALOG call GetTradeAttribute ld a, [hl] @@ -135,74 +139,74 @@ Functionfcc59: ; fcc59 ret ; fcc63 -Functionfcc63: ; fcc63 +DoNPCTrade: ; fcc63 ld e, TRADE_GIVEMON call GetTradeAttribute ld a, [hl] - ld [wc6d0], a + ld [wPlayerTrademonSpecies], a ld e, TRADE_GETMON call GetTradeAttribute ld a, [hl] - ld [wc702], a + ld [wOTTrademonSpecies], a - ld a, [wc6d0] - ld de, wc6d1 - call Functionfcde8 - call Functionfcdf4 + ld a, [wPlayerTrademonSpecies] + ld de, wPlayerTrademonSpeciesName + call GetTradeMonName + call CopyTradeName - ld a, [wc702] - ld de, wc703 - call Functionfcde8 - call Functionfcdf4 + ld a, [wOTTrademonSpecies] + ld de, wOTTrademonSpeciesName + call GetTradeMonName + call CopyTradeName ld hl, PartyMonOT ld bc, NAME_LENGTH - call Functionfcdd7 - ld de, wc6f2 - call Functionfcdf4 + call Trade_GetAttributeOfCurrentPartymon + ld de, wPlayerTrademonOTName + call CopyTradeName ld hl, PlayerName - ld de, wc6e7 - call Functionfcdf4 + ld de, wPlayerTrademonSenderName + call CopyTradeName ld hl, PartyMon1ID ld bc, PARTYMON_STRUCT_LENGTH - call Functionfcdd7 - ld de, wc6ff - call Functionfce0f + call Trade_GetAttributeOfCurrentPartymon + ld de, wPlayerTrademonID + call Trade_CopyTwoBytes ld hl, PartyMon1DVs ld bc, PARTYMON_STRUCT_LENGTH - call Functionfcdd7 - ld de, wc6fd - call Functionfce0f + call Trade_GetAttributeOfCurrentPartymon + ld de, wPlayerTrademonDVs + call Trade_CopyTwoBytes ld hl, PartyMon1Species ld bc, PARTYMON_STRUCT_LENGTH - call Functionfcdd7 + call Trade_GetAttributeOfCurrentPartymon ld b, h ld c, l callba GetCaughtGender ld a, c - ld [wc701], a + ld [wPlayerTrademonCaughtData], a ld e, TRADE_DIALOG call GetTradeAttribute ld a, [hl] - cp TRADE_COMPLETE + cp 3 ld a, 1 - jr c, .asm_fcce6 + jr c, .okay ld a, 2 -.asm_fcce6 - ld [wEnemyCharging], a +.okay + ld [wOTTrademonCaughtData], a ld hl, PartyMon1Level ld bc, PARTYMON_STRUCT_LENGTH - call Functionfcdd7 + call Trade_GetAttributeOfCurrentPartymon ld a, [hl] ld [CurPartyLevel], a - ld a, [wc702] + ld a, [wOTTrademonSpecies] ld [CurPartySpecies], a xor a ld [MonType], a @@ -214,66 +218,66 @@ Functionfcc63: ; fcc63 call GetTradeAttribute ld a, [hl] cp TRADE_COMPLETE - ld b, 0 + ld b, RESET_FLAG jr c, .asm_fcd1c - ld b, 1 + ld b, SET_FLAG .asm_fcd1c callba SetGiftPartyMonCaughtData ld e, TRADE_NICK call GetTradeAttribute - ld de, wc70e - call Functionfcdf4 + ld de, wOTTrademonNickname + call CopyTradeName ld hl, PartyMonNicknames ld bc, PKMN_NAME_LENGTH - call Functionfcdde - ld hl, wc70e - call Functionfcdf4 + call Trade_GetAttributeOfLastPartymon + ld hl, wOTTrademonNickname + call CopyTradeName ld e, TRADE_OT_NAME call GetTradeAttribute push hl - ld de, wc724 - call Functionfcdf4 + ld de, wOTTrademonOTName + call CopyTradeName pop hl - ld de, wc719 - call Functionfcdf4 + ld de, wOTTrademonSenderName + call CopyTradeName ld hl, PartyMonOT ld bc, NAME_LENGTH - call Functionfcdde - ld hl, wc724 - call Functionfcdf4 + call Trade_GetAttributeOfLastPartymon + ld hl, wOTTrademonOTName + call CopyTradeName ld e, TRADE_DVS call GetTradeAttribute - ld de, wEnemyTrappingMove - call Functionfce0f + ld de, wOTTrademonDVs + call Trade_CopyTwoBytes ld hl, PartyMon1DVs ld bc, PARTYMON_STRUCT_LENGTH - call Functionfcdde - ld hl, wEnemyTrappingMove - call Functionfce0f + call Trade_GetAttributeOfLastPartymon + ld hl, wOTTrademonDVs + call Trade_CopyTwoBytes ld e, TRADE_OT_ID call GetTradeAttribute - ld de, wPlayerCharging - call Functionfce15 + ld de, wOTTrademonID + 1 + call Trade_CopyTwoBytesReverseEndian ld hl, PartyMon1ID ld bc, PARTYMON_STRUCT_LENGTH - call Functionfcdde - ld hl, wEnemyWrapCount - call Functionfce0f + call Trade_GetAttributeOfLastPartymon + ld hl, wOTTrademonID + call Trade_CopyTwoBytes ld e, TRADE_ITEM call GetTradeAttribute push hl ld hl, PartyMon1Item ld bc, PARTYMON_STRUCT_LENGTH - call Functionfcdde + call Trade_GetAttributeOfLastPartymon pop hl ld a, [hl] ld [de], a @@ -315,13 +319,13 @@ endr ret ; 0xfcdd7 -Functionfcdd7: ; fcdd7 +Trade_GetAttributeOfCurrentPartymon: ; fcdd7 ld a, [CurPartyMon] call AddNTimes ret ; fcdde -Functionfcdde: ; fcdde +Trade_GetAttributeOfLastPartymon: ; fcdde ld a, [PartyCount] dec a call AddNTimes @@ -330,7 +334,7 @@ Functionfcdde: ; fcdde ret ; fcde8 -Functionfcde8: ; fcde8 +GetTradeMonName: ; fcde8 push de ld [wd265], a call GetBasePokemonName @@ -339,29 +343,31 @@ Functionfcde8: ; fcde8 ret ; fcdf4 -Functionfcdf4: ; fcdf4 +CopyTradeName: ; fcdf4 ld bc, NAME_LENGTH call CopyBytes ret ; fcdfb Functionfcdfb: ; fcdfb +; unreferenced ld bc, 4 call CopyBytes - ld a, $50 + ld a, "@" ld [de], a ret ; fce05 Functionfce05: ; fce05 +; unreferenced ld bc, 3 call CopyBytes - ld a, $50 + ld a, "@" ld [de], a ret ; fce0f -Functionfce0f: ; fce0f +Trade_CopyTwoBytes: ; fce0f ld a, [hli] ld [de], a inc de @@ -370,7 +376,7 @@ Functionfce0f: ; fce0f ret ; fce15 -Functionfce15: ; fce15 +Trade_CopyTwoBytesReverseEndian: ; fce15 ld a, [hli] ld [de], a dec de @@ -383,18 +389,18 @@ GetTradeMonNames: ; fce1b ld e, TRADE_GETMON call GetTradeAttribute ld a, [hl] - call Functionfcde8 + call GetTradeMonName ld de, StringBuffer2 - call Functionfcdf4 + call CopyTradeName ld e, TRADE_GIVEMON call GetTradeAttribute ld a, [hl] - call Functionfcde8 + call GetTradeMonName ld de, wd050 - call Functionfcdf4 + call CopyTradeName ld hl, StringBuffer1 .loop @@ -423,13 +429,22 @@ GetTradeMonNames: ; fce1b NPCTrades: ; fce58 - db 0, ABRA, MACHOP, "MUSCLE@@@@@", $37, $66, GOLD_BERRY, $54, $92, "MIKE@@@@@@@", 0, 0 - db 0, BELLSPROUT, ONIX, "ROCKY@@@@@@", $96, $66, BITTER_BERRY, $1e, $bf, "KYLE@@@@@@@", 0, 0 - db 1, KRABBY, VOLTORB, "VOLTY@@@@@@", $98, $88, PRZCUREBERRY, $05, $72, "TIM@@@@@@@@", 0, 0 - db 3, DRAGONAIR, DODRIO, "DORIS@@@@@@", $77, $66, SMOKE_BALL, $1b, $01, "EMY@@@@@@@@", 2, 0 - db 2, HAUNTER, XATU, "PAUL@@@@@@@", $96, $86, MYSTERYBERRY, $00, $3d, "CHRIS@@@@@@", 0, 0 - db 3, CHANSEY, AERODACTYL, "AEROY@@@@@@", $96, $66, GOLD_BERRY, $7b, $67, "KIM@@@@@@@@", 0, 0 - db 0, DUGTRIO, MAGNETON, "MAGGIE@@@@@", $96, $66, METAL_COAT, $a2, $c3, "FOREST@@@@@", 0, 0 +npctrade: MACRO + db \1, \2, \3, \4 + dw \5 + db \6 + dw \7 + db \8, \9, 0 +ENDM + + + npctrade 0, ABRA, MACHOP, "MUSCLE@@@@@", $6637, GOLD_BERRY, $9254, "MIKE@@@@@@@", TRADE_EITHER_GENDER + npctrade 0, BELLSPROUT, ONIX, "ROCKY@@@@@@", $6696, BITTER_BERRY, $bf1e, "KYLE@@@@@@@", TRADE_EITHER_GENDER + npctrade 1, KRABBY, VOLTORB, "VOLTY@@@@@@", $8898, PRZCUREBERRY, $7205, "TIM@@@@@@@@", TRADE_EITHER_GENDER + npctrade 3, DRAGONAIR, DODRIO, "DORIS@@@@@@", $6677, SMOKE_BALL, $011b, "EMY@@@@@@@@", TRADE_FEMALE_ONLY + npctrade 2, HAUNTER, XATU, "PAUL@@@@@@@", $8696, MYSTERYBERRY, $3d00, "CHRIS@@@@@@", TRADE_EITHER_GENDER + npctrade 3, CHANSEY, AERODACTYL, "AEROY@@@@@@", $6696, GOLD_BERRY, $677b, "KIM@@@@@@@@", TRADE_EITHER_GENDER + npctrade 0, DUGTRIO, MAGNETON, "MAGGIE@@@@@", $6696, METAL_COAT, $c3a2, "FOREST@@@@@", TRADE_EITHER_GENDER ; fcf38 diff --git a/engine/pokedex.asm b/engine/pokedex.asm index 656e1767b..d150ee471 100644 --- a/engine/pokedex.asm +++ b/engine/pokedex.asm @@ -476,7 +476,7 @@ Function4034f: ; 4034f push af ld a, [wJumptableIndex] push af - callba Function8442c + callba PrintDexEntry pop af ld [wJumptableIndex], a pop af diff --git a/engine/predef.asm b/engine/predef.asm index 90a60c800..c089215a6 100644 --- a/engine/predef.asm +++ b/engine/predef.asm @@ -59,8 +59,8 @@ PredefPointers:: ; 856b add_predef LearnLevelMoves add_predef FillMoves add_predef EvolveAfterBattle - add_predef Function28f63 - add_predef Function28f24 + add_predef TradeAnimationPlayer2 + add_predef TradeAnimation add_predef CopyPkmnToTempMon add_predef ListMoves ; $20 add_predef PlaceNonFaintStatus diff --git a/engine/printer.asm b/engine/printer.asm index 9c18d42fe..5330d6b3c 100755 --- a/engine/printer.asm +++ b/engine/printer.asm @@ -653,7 +653,7 @@ Function84425: ; 84425 ret ; 8442c -Function8442c: ; 8442c +PrintDexEntry: ; 8442c ld a, [wcf65] push af ld hl, VTiles1 @@ -661,7 +661,7 @@ Function8442c: ; 8442c lb bc, BANK(FontInversed), $80 call Request1bpp xor a - ld [$ffac], a + ld [hPrinter], a call Function8474c ld a, [rIE] push af @@ -720,7 +720,7 @@ Function8442c: ; 8442c ret ; 844bc -Function844bc: ; 844bc (21:44bc) +PrintPCBox: ; 844bc (21:44bc) ld a, [wcf65] push af ld a, $9 @@ -728,13 +728,13 @@ Function844bc: ; 844bc (21:44bc) ld a, e ld [wd004], a ld a, d - ld [StartFlypoint], a + ld [wd005], a ld a, b - ld [EndFlypoint], a + ld [wd006], a ld a, c - ld [MovementBuffer], a + ld [wd007], a xor a - ld [$ffac], a + ld [hPrinter], a ld [wd003], a call Function8474c ld a, [rIE] @@ -801,11 +801,11 @@ Function84559: ; 84559 (21:4559) call Function843f0 ret -Function84560: ; 84560 +PrintUnownStamp: ; 84560 ld a, [wcf65] push af xor a - ld [$ffac], a + ld [hPrinter], a call Function8474c ld a, [rIE] push af @@ -861,7 +861,7 @@ Function84560: ; 84560 ret ; 845d4 -Function845d4: ; 845d4 +PrintMail: ; 845d4 call Function845db call Function84425 ret @@ -871,7 +871,7 @@ Function845db: ; 845db ld a, [wcf65] push af xor a - ld [$ffac], a + ld [hPrinter], a call Function8474c ld a, [rIE] push af @@ -903,11 +903,11 @@ Function845db: ; 845db ret ; 8461a -Function8461a: ; 8461a +PrintPartymon: ; 8461a ld a, [wcf65] push af xor a - ld [$ffac], a + ld [hPrinter], a call Function8474c ld a, [rIE] push af @@ -962,7 +962,7 @@ _PrintDiploma: ; 84688 push af callba Function1dd709 xor a - ld [$ffac], a + ld [hPrinter], a call Function8474c ld a, [rIE] push af @@ -1040,7 +1040,7 @@ Function846f6: ; 846f6 .asm_84722 ld a, $1 - ld [$ffac], a + ld [hPrinter], a scf ret ; 84728 @@ -1205,15 +1205,15 @@ Function84817: ; 84817 (21:4817) ld bc, SCREEN_HEIGHT * SCREEN_WIDTH ld a, " " call ByteFill - call Function84a0e + call Printer_PlaceEmptyBoxSlotString hlcoord 0, 0 ld bc, 9 * SCREEN_WIDTH ld a, " " call ByteFill - call Function849e9 - call Function849d7 + call Printer_PlaceSideBorders + call Printer_PlaceTopBorder hlcoord 4, 3 - ld de, String_84865 + ld de, .String_PokemonList call PlaceString ld a, [wd007] ld bc, BOX_NAME_LENGTH @@ -1231,7 +1231,7 @@ Function84817: ; 84817 (21:4817) ret ; 84865 (21:4865) -String_84865: +.String_PokemonList: db "#MON LIST@" ; 8486f @@ -1240,8 +1240,8 @@ Function8486f: ; 8486f (21:486f) ld bc, SCREEN_HEIGHT * SCREEN_WIDTH ld a, " " call ByteFill - call Function84a0e - call Function849e9 + call Printer_PlaceEmptyBoxSlotString + call Printer_PlaceSideBorders ld a, [wd003] and a ret nz @@ -1257,8 +1257,8 @@ Function84893: ; 84893 (21:4893) ld bc, SCREEN_HEIGHT * SCREEN_WIDTH ld a, " " call ByteFill - call Function84a0e - call Function849e9 + call Printer_PlaceEmptyBoxSlotString + call Printer_PlaceSideBorders ld a, [wd003] and a ret nz @@ -1274,12 +1274,12 @@ Function848b7: ; 848b7 (21:48b7) ld bc, SCREEN_HEIGHT * SCREEN_WIDTH ld a, " " call ByteFill - call Function84a0e + call Printer_PlaceEmptyBoxSlotString hlcoord 1, 15 lb bc, 2, 18 call ClearBox - call Function849e9 - call Function849fc + call Printer_PlaceSideBorders + call Printer_PlaceBottomBorders ld a, [wd003] and a ret nz @@ -1291,7 +1291,7 @@ Function848b7: ; 848b7 (21:48b7) ret Function848e7: ; 848e7 (21:48e7) - ld a, [EndFlypoint] + ld a, [wd006] call GetSRAMBank Function848ed: ; 848ed (21:48ed) @@ -1318,7 +1318,7 @@ Function848ed: ; 848ed (21:48ed) push hl call PlaceString ld a, [CurPartySpecies] - cp $fd + cp EGG pop hl jr z, .ok2 ld bc, $b @@ -1326,7 +1326,7 @@ Function848ed: ; 848ed (21:48ed) call Function8498a ld bc, $9 add hl, bc - ld a, $f3 + ld a, "/" ld [hli], a push hl ld bc, $e @@ -1336,7 +1336,7 @@ Function848ed: ; 848ed (21:48ed) push hl ld a, [wd004] ld l, a - ld a, [StartFlypoint] + ld a, [wd005] ld h, a ld bc, $372 add hl, bc @@ -1354,7 +1354,7 @@ Function848ed: ; 848ed (21:48ed) push hl ld a, [wd004] ld l, a - ld a, [StartFlypoint] + ld a, [wd005] ld h, a ld bc, $35 add hl, bc @@ -1387,7 +1387,7 @@ Function8498a: ; 8498a (21:498a) push hl ld a, [wd004] ld l, a - ld a, [StartFlypoint] + ld a, [wd005] ld h, a ld bc, $2b add hl, bc @@ -1421,7 +1421,7 @@ Function849c6: ; 849c6 (21:49c6) ld d, $0 ld a, [wd004] ld l, a - ld a, [StartFlypoint] + ld a, [wd005] ld h, a add hl, de ld e, l @@ -1429,62 +1429,62 @@ Function849c6: ; 849c6 (21:49c6) pop hl ret -Function849d7: ; 849d7 (21:49d7) +Printer_PlaceTopBorder: ; 849d7 (21:49d7) hlcoord 0, 0 ld a, "┌" ld [hli], a ld a, "─" ld c, SCREEN_WIDTH - 2 -.asm_849e1 +.loop ld [hli], a dec c - jr nz, .asm_849e1 + jr nz, .loop ld a, "┐" ld [hl], a ret -Function849e9: ; 849e9 (21:49e9) +Printer_PlaceSideBorders: ; 849e9 (21:49e9) hlcoord 0, 0 ld de, SCREEN_WIDTH - 1 ld c, SCREEN_HEIGHT -.asm_849f1 +.loop ld a, "│" ld [hl], a add hl, de ld a, "│" ld [hli], a dec c - jr nz, .asm_849f1 + jr nz, .loop ret -Function849fc: ; 849fc (21:49fc) +Printer_PlaceBottomBorders: ; 849fc (21:49fc) hlcoord 0, 17 ld a, "└" ld [hli], a ld a, "─" ld c, SCREEN_WIDTH - 2 -.asm_84a06 +.loop ld [hli], a dec c - jr nz, .asm_84a06 + jr nz, .loop ld a, "┘" ld [hl], a ret -Function84a0e: ; 84a0e (21:4a0e) +Printer_PlaceEmptyBoxSlotString: ; 84a0e (21:4a0e) hlcoord 2, 0 ld c, $6 -.asm_84a13 +.loop push bc push hl ld de, String84a25 call PlaceString pop hl - ld bc, $3c + ld bc, 3 * SCREEN_WIDTH add hl, bc pop bc dec c - jr nz, .asm_84a13 + jr nz, .loop ret ; 84a25 (21:4a25) diff --git a/engine/trade/animation.asm b/engine/trade/animation.asm new file mode 100755 index 000000000..1c03dc869 --- /dev/null +++ b/engine/trade/animation.asm @@ -0,0 +1,1542 @@ +TradeAnimation: ; 28f24 + xor a + ld [wcf66], a + ld hl, wPlayerTrademonSenderName + ld de, wOTTrademonSenderName + call Function297ff + ld hl, wPlayerTrademonSpecies + ld de, wOTTrademonSpecies + call Function29814 + ld de, .data_28f3f + jr Function28fa1 + +.data_28f3f + tradeanim_1b + tradeanim_01 + tradeanim_1c + tradeanim_21 + tradeanim_2d + tradeanim_27 + tradeanim_23 + tradeanim_03 + tradeanim_25 + tradeanim_28 + tradeanim_25 + tradeanim_1e + tradeanim_29 + tradeanim_06 + tradeanim_16 + tradeanim_1f + + tradeanim_19 + tradeanim_17 + tradeanim_22 + tradeanim_1f + tradeanim_2a + tradeanim_0e + tradeanim_03 + tradeanim_24 + tradeanim_05 + tradeanim_25 + tradeanim_02 + tradeanim_27 + tradeanim_25 + tradeanim_1d + tradeanim_2c + tradeanim_2e + tradeanim_1e + tradeanim_18 + tradeanim_1f + tradeanim_end + +TradeAnimationPlayer2: ; 28f63 + xor a + ld [wcf66], a + ld hl, wOTTrademonSenderName + ld de, wPlayerTrademonSenderName + call Function297ff + ld hl, wOTTrademonSpecies + ld de, wPlayerTrademonSpecies + call Function29814 + ld de, .data_28f7e + jr Function28fa1 + +.data_28f7e + tradeanim_1a + tradeanim_17 + tradeanim_22 + tradeanim_1f + tradeanim_2a + tradeanim_06 + tradeanim_03 + tradeanim_24 + tradeanim_05 + tradeanim_25 + tradeanim_02 + tradeanim_27 + tradeanim_25 + tradeanim_1d + tradeanim_2c + tradeanim_2f + tradeanim_1e + tradeanim_18 + tradeanim_1f + + tradeanim_1b + tradeanim_01 + tradeanim_1c + tradeanim_22 + tradeanim_27 + tradeanim_23 + tradeanim_03 + tradeanim_25 + tradeanim_28 + tradeanim_25 + tradeanim_1e + tradeanim_29 + tradeanim_0e + tradeanim_16 + tradeanim_1f + tradeanim_end + +Function28fa1: ; 28fa1 + ld hl, wTradeAnimPointer + 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 Function28fdb + 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 + +Function28fdb: ; 28fdb + xor a + ld [wJumptableIndex], a + call ClearBGPalettes + call ClearSprites + call ClearTileMap + call DisableLCD + call LoadFontsBattleExtra + callab Function8cf53 + ld a, [hCGB] + and a + jr z, .asm_2900b + ld a, $1 + ld [rVBK], a + ld hl, VTiles0 + ld bc, sScratch - VTiles0 + xor a + call ByteFill + ld a, $0 + ld [rVBK], a + +.asm_2900b + 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 Function4d7fd + call EnableLCD + call Function2982b + ld a, [wPlayerTrademonSpecies] + ld hl, wPlayerTrademonDVs + ld de, VTiles0 + call Function29491 + ld a, [wOTTrademonSpecies] + ld hl, wOTTrademonDVs + ld de, VTiles0 tile $31 + call Function29491 + ld a, [wPlayerTrademonSpecies] + ld de, wPlayerTrademonSpeciesName + call Function294a9 + ld a, [wOTTrademonSpecies] + ld de, wOTTrademonSpeciesName + call Function294a9 + call Function297ed + ret +; 29082 + +DoTradeAnimation: ; 29082 + ld a, [wJumptableIndex] + bit 7, a + jr nz, .finished + call .DoTradeAnimCommand + callab Function8cf69 + 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 +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 290af + +.JumpTable: ; 290af + dw GetTradeAnimByte ; 00 + dw TradeAnim_01 ; 01 get player mon frontpic + dw TradeAnim_02 ; 02 + dw TradeAnim_03 ; 03 transition to link tube + dw TradeAnim_04 ; 04 slide in link tube + dw TradeAnim_05 ; 05 + dw TradeAnim_06 ; 06 trademon navigates to OT system + dw TradeAnim_07 ; 07 pan bgmap + dw TradeAnim_08 ; 08 pan bgmap + dw TradeAnim_09 ; 09 pan bgmap + dw TradeAnim_0a ; 0a stop scroll + dw TradeAnim_0b ; 0b disappear mon icon + dw TradeAnim_0c ; 0c continue flashing OT screen + dw TradeAnim_0d ; 0d end scene + dw TradeAnim_0e ; 0e trademon navigates to player system + dw TradeAnim_0f ; 0f pan bgmap + dw TradeAnim_10 ; 10 pan bgmap + dw TradeAnim_11 ; 11 pan bgmap + dw TradeAnim_12 ; 12 stop scroll + dw TradeAnim_13 ; 13 disappear mon icon + dw TradeAnim_14 ; 14 continue flashing OT screen + dw TradeAnim_15 ; 15 end scene + dw TradeAnim_16 ; 16 + dw TradeAnim_17 ; 17 + dw TradeAnim_18 ; 18 + dw TradeAnim_19 ; 19 + dw TradeAnim_1a ; 1a + dw TradeAnim_1b ; 1b set up scroll for player mon + dw TradeAnim_1c ; 1c scroll across + dw TradeAnim_1d ; 1d + dw TradeAnim_1e ; 1e set up scroll for mon transfer + dw TradeAnim_1f ; 1f + dw TradeAnim_20 ; 20 + dw TradeAnim_21 ; 21 wait 80 frames + dw TradeAnim_22 ; 22 + dw TradeAnim_23 ; 23 ball appear anim + dw TradeAnim_24 ; 24 ball rises into tube + dw TradeAnim_25 ; 25 wait ball rise + dw TradeAnim_26 ; 26 + dw TradeAnim_27 ; 27 ball return poof anim + dw TradeAnim_28 ; 28 ball travels through tube + dw TradeAnim_29 ; 29 give trademon sfx + dw TradeAnim_2a ; 2a get trademon sfx + dw EndTradeAnim ; 2b + dw TradeAnim_2c ; 2c + dw TradeAnim_2d ; 2d wait 96 frames + dw TradeAnim_2e ; 2e + dw TradeAnim_2f ; 2f +; 2910f + +NextTradeAnim: ; 2910f + ld hl, wJumptableIndex + inc [hl] + ret +; 29114 + +GetTradeAnimByte: ; 29114 + ld hl, wTradeAnimPointer + 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 + +EndTradeAnim: ; 29123 + ld hl, wJumptableIndex + set 7, [hl] + ret +; 29129 + +TradeAnim_06: ; 29129 + ld a, $ed + call Function292f6 + ld a, [wc74c] + ld [wd265], a + xor a + depixel 5, 11, 4, 0 + ld b, $0 + jr Function2914e + +TradeAnim_0e: ; 2913c + ld a, $ee + call Function292f6 + ld a, [wc74d] + ld [wd265], a + ld a, $2 + depixel 9, 18, 4, 4 + ld b, $4 + +Function2914e: ; 2914e + push bc + push de + push bc + push de + push af + call DisableLCD + callab Function8cf53 + hlbgcoord 20, 3 + ld bc, $c + ld a, $60 + call ByteFill + pop af + call Function29281 + xor a + ld [hSCX], a + ld a, $7 + ld [hWX], a + ld a, $70 + ld [hWY], a + call EnableLCD + call Function2985a + pop de + ld a, SPRITE_ANIM_INDEX_11 + call _InitSpriteAnimStruct + ld hl, $b + add hl, bc + pop bc + ld [hl], b + pop de + ld a, SPRITE_ANIM_INDEX_12 + call _InitSpriteAnimStruct + ld hl, $b + add hl, bc + pop bc + ld [hl], b + call WaitBGMap + ld b, SCGB_1B + call GetSGBLayout + ld a, $e4 + call DmgToCgbBGPals + ld a, $d0 + call Functioncf8 + call NextTradeAnim + ld a, $5c + ld [wcf64], a + ret +; 291af + +TradeAnim_07: ; 291af + call Function2981d + ld a, [hSCX] + add $2 + ld [hSCX], a + cp $50 + ret nz + ld a, $1 + call Function29281 + call NextTradeAnim + ret +; 291c4 + +TradeAnim_08: ; 291c4 + call Function2981d + ld a, [hSCX] + add $2 + ld [hSCX], a + cp $a0 + ret nz + ld a, $2 + call Function29281 + call NextTradeAnim + ret +; 291d9 + +TradeAnim_09: ; 291d9 + call Function2981d + ld a, [hSCX] + add $2 + ld [hSCX], a + and a + ret nz + call NextTradeAnim + ret +; 291e8 + +TradeAnim_10: ; 291e8 + call Function2981d + ld a, [hSCX] + sub $2 + ld [hSCX], a + cp $b0 + ret nz + ld a, $1 + call Function29281 + call NextTradeAnim + ret +; 291fd + +TradeAnim_11: ; 291fd + call Function2981d + ld a, [hSCX] + sub $2 + ld [hSCX], a + cp $60 + ret nz + xor a + call Function29281 + call NextTradeAnim + ret +; 29211 + +TradeAnim_12: ; 29211 + call Function2981d + ld a, [hSCX] + sub $2 + ld [hSCX], a + and a + ret nz + call NextTradeAnim + ret +; 29220 + +TradeAnim_0b: +TradeAnim_13: ; 29220 + ld a, $80 + ld [wcf64], a + call NextTradeAnim + ret +; 29229 + +TradeAnim_0d: +TradeAnim_15: ; 29229 + call ClearBGPalettes + call ClearTileMap + call ClearSprites + call DisableLCD + callab Function8cf53 + 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 Function2982b + call WaitBGMap + call Function297ed + call GetTradeAnimByte + ret +; 2925d + +TradeAnim_0a: +TradeAnim_0c: +TradeAnim_0f: +TradeAnim_14: ; 2925d + call Function2981d + ld hl, wcf64 + ld a, [hl] + and a + jr z, .done + dec [hl] + ret + +.done + call NextTradeAnim + ret +; 2926d + +TradeAnim_29: ; 2926d + call GetTradeAnimByte + ld de, SFX_GIVE_TRADEMON + call PlaySFX + ret +; 29277 + +TradeAnim_2a: ; 29277 + call GetTradeAnimByte + ld de, SFX_GET_TRADEMON + call PlaySFX + ret +; 29281 + +Function29281: ; 29281 + and 3 + ld e, a + ld d, 0 + ld hl, Jumptable_2928f +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 2928f + +Jumptable_2928f: ; 2928f + dw Function29297 + dw Function292af + dw Function292be + dw Function29297 +; 29297 + +Function29297: ; 29297 + call Function297cf + hlcoord 9, 3 + ld [hl], $5b + inc hl + ld bc, $a + ld a, $60 + call ByteFill + hlcoord 3, 2 + call Function292ec + ret +; 292af + +Function292af: ; 292af + call Function297cf + hlcoord 0, 3 + ld bc, SCREEN_WIDTH + ld a, $60 + call ByteFill + ret +; 292be + +Function292be: ; 292be + call Function297cf + 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 +.asm_292d9 + add hl, de + ld [hl], a + dec c + jr nz, .asm_292d9 + add hl, de + ld a, $5f + ld [hld], a + ld a, $5b + ld [hl], a + hlcoord 10, 6 + call Function292ec + ret +; 292ec + +Function292ec: ; 292ec + ld de, TradeGameBoyTilemap + lb bc, 8, 6 + call Function297db + ret +; 292f6 + +Function292f6: ; 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, wc736 + call PlaceString + ld hl, wc741 + ld de, 0 +.asm_2931e + ld a, [hli] + cp "@" + jr z, .asm_29326 + dec de + jr .asm_2931e + +.asm_29326 + hlcoord 0, 4 + add hl, de + ld de, wc741 + 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_03: ; 29348 + call ClearTileMap + call WaitTop + ld a, $a0 + ld [hSCX], a + call DelayFrame + hlcoord 8, 2 + ld de, Tilemap_298f7 + lb bc, 3, 12 + call Function297db + call WaitBGMap + ld b, SCGB_1B + call GetSGBLayout + ld a, $e4 + call DmgToCgbBGPals + ld de, $e4e4 + call DmgToCgbObjPals + ld de, SFX_POTION + call PlaySFX + call NextTradeAnim + ret +; 2937e + +TradeAnim_04: ; 2937e + ld a, [hSCX] + and a + jr z, .done + add $4 + ld [hSCX], a + ret + +.done + ld c, 80 + call DelayFrames + call GetTradeAnimByte + ret +; 29391 + +TradeAnim_05: ; 29391 + ld a, [hSCX] + cp $a0 + jr z, .asm_2939c + sub $4 + ld [hSCX], a + ret + +.asm_2939c + call ClearTileMap + xor a + ld [hSCX], a + call GetTradeAnimByte + ret +; 293a6 + +TradeAnim_1b: ; 293a6 + ld a, $8f + ld [hWX], a + ld a, $88 + ld [hSCX], a + ld a, $50 + ld [hWY], a + call GetTradeAnimByte + ret +; 293b6 + +TradeAnim_1c: ; 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 GetTradeAnimByte + ret +; 293d2 + +TradeAnim_1d: ; 293d2 + ld a, $7 + ld [hWX], a + ld a, $50 + ld [hWY], a + call GetTradeAnimByte + ret +; 293de + +TradeAnim_1e: ; 293de + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + call GetTradeAnimByte + ret +; 293ea + +TradeAnim_1f: ; 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 NextTradeAnim + ret +; 2940c + +TradeAnim_20: ; 2940c + ld a, [hWX] + cp $a1 + jr nc, .asm_29417 + add $4 + ld [hWX], a + ret + +.asm_29417 + 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 GetTradeAnimByte + ret +; 2942e + +TradeAnim_01: ; 2942e + call Function2951f + ld a, [wPlayerTrademonSpecies] + ld [CurPartySpecies], a + ld a, [wPlayerTrademonDVs] + ld [TempMonDVs], a + ld a, [wPlayerTrademonDVs + 1] + ld [TempMonDVs + 1], a + ld b, SCGB_1A + call GetSGBLayout + ld a, $e4 + call DmgToCgbBGPals + call Function294bb + + ld a, [wPlayerTrademonSpecies] + call GetCryIndex + jr c, .skip_cry + ld e, c + ld d, b + call PlayCryHeader +.skip_cry + + call GetTradeAnimByte + ret +; 29461 + +TradeAnim_02: ; 29461 + call Function29549 + ld a, [wOTTrademonSpecies] + ld [CurPartySpecies], a + ld a, [wOTTrademonDVs] + ld [TempMonDVs], a + ld a, [wOTTrademonDVs + 1] + ld [TempMonDVs + 1], a + ld b, SCGB_1A + call GetSGBLayout + ld a, $e4 + call DmgToCgbBGPals + call Function294c0 + call GetTradeAnimByte + ret +; 29487 + +TradeAnim_2c: ; 29487 + callba Function4d81e + call GetTradeAnimByte + ret +; 29491 + +Function29491: ; 29491 + push de + push af + predef GetUnownLetter + pop af + ld [CurPartySpecies], a + ld [CurSpecies], a + call GetBaseData + pop de + predef GetFrontpic + ret +; 294a9 + +Function294a9: ; 294a9 + push de + ld [wd265], a + call GetPokemonName + ld hl, StringBuffer1 + pop de + ld bc, NAME_LENGTH + call CopyBytes + ret +; 294bb + +Function294bb: ; 294bb + ld de, VTiles0 + jr Function294c3 + +Function294c0: ; 294c0 + ld de, VTiles0 tile $31 + +Function294c3: ; 294c3 + call DelayFrame + ld hl, VTiles2 + lb bc, 10, $31 + call Request2bpp + call WaitTop + call Function297cf + hlcoord 7, 2 + xor a + ld [hFillBox], a + lb bc, 7, 7 + predef FillBox + call WaitBGMap + ret +; 294e7 + +TradeAnim_21: ; 294e7 + ld c, 80 + call DelayFrames + call GetTradeAnimByte + ret +; 294f0 + +TradeAnim_22: ; 294f0 + ld c, 40 + call DelayFrames + call GetTradeAnimByte + ret +; 294f9 + +TradeAnim_2d: ; 294f9 + ld c, 96 + call DelayFrames + call GetTradeAnimByte + ret +; 29502 + +TradeAnim_2e: ; 29502 + call Function29516 + ret nz + ld c, 80 + call DelayFrames + ret +; 2950c + +TradeAnim_2f: ; 2950c + call Function29516 + ret nz + ld c, 180 + call DelayFrames + ret +; 29516 + +Function29516: ; 29516 + call GetTradeAnimByte + ld a, [wOTTrademonSpecies] + cp $fd + ret +; 2951f +Function2951f: ; 2951f + ld de, wPlayerTrademonSpecies + ld a, [de] + cp $fd + jr z, Function295a1 + call Function29573 + ld de, wPlayerTrademonSpecies + call Function295e3 + ld de, wPlayerTrademonSpeciesName + call Function295ef + ld a, [wPlayerTrademonCaughtData] + ld de, wPlayerTrademonOTName + call Function295f6 + ld de, PlayerScreens + call Function29611 + call Function295d8 + ret +; 29549 + +Function29549: ; 29549 + ld de, wOTTrademonSpecies + ld a, [de] + cp $fd + jr z, Function295a1 + call Function29573 + ld de, wOTTrademonSpecies + call Function295e3 + ld de, wOTTrademonSpeciesName + call Function295ef + ld a, [wOTTrademonCaughtData] + ld de, wOTTrademonOTName + call Function295f6 + ld de, wOTTrademonID + call Function29611 + call Function295d8 + ret +; 29573 + +Function29573: ; 29573 + call WaitTop + call Function297cf + ld a, VBGMap1 / $100 + ld [hBGMapAddress + 1], a + hlcoord 3, 0 + ld b, $6 + ld c, $d + call TextBox + hlcoord 4, 0 + ld de, String29591 + call PlaceString + ret +; 29591 + +String29591: ; 29591 + db "─── №." + next "" + next "OT/" + next $73, "№.@" +; 295a1 + +Function295a1: ; 295a1 + call WaitTop + call Function297cf + ld a, VBGMap1 / $100 + ld [hBGMapAddress + 1], a + hlcoord 3, 0 + ld b, $6 + ld c, $d + call TextBox + hlcoord 4, 2 + ld de, String295c2 + call PlaceString + call Function295d8 + ret +; 295c2 + +String295c2: ; 295c2 + db "EGG" + next "OT/?????" + next "№.?????@" +; 295d8 + +Function295d8: ; 295d8 + call WaitBGMap + call WaitTop + ld a, VBGMap0 / $100 + ld [hBGMapAddress + 1], a + ret +; 295e3 + +Function295e3: ; 295e3 + hlcoord 10, 0 + lb bc, PRINTNUM_LEADINGZEROS | 1, 3 + call PrintNum + ld [hl], " " + ret +; 295ef + +Function295ef: ; 295ef + hlcoord 4, 2 + call PlaceString + ret +; 295f6 + +Function295f6: ; 295f6 + cp 3 + jr c, .asm_295fb + xor a + +.asm_295fb + push af + hlcoord 7, 4 + call PlaceString + inc bc + pop af + ld hl, Unknown_2960e + ld d, 0 + ld e, a + add hl, de + ld a, [hl] + ld [bc], a + ret +; 2960e + +Unknown_2960e: ; 2960e + db " ", "♂", "♀" +; 29611 + +Function29611: ; 29611 + hlcoord 7, 6 + lb bc, PRINTNUM_LEADINGZEROS | 2, 5 + call PrintNum + ret +; 2961b + +TradeAnim_23: ; 2961b + depixel 10, 11, 4, 0 + ld a, SPRITE_ANIM_INDEX_0E + call _InitSpriteAnimStruct + call GetTradeAnimByte + ld a, $20 + ld [wcf64], a + ret +; 2962c + +TradeAnim_24: ; 2962c + depixel 10, 11, 4, 0 + ld a, SPRITE_ANIM_INDEX_0E + call _InitSpriteAnimStruct + ld hl, $b + add hl, bc + ld [hl], $1 + ld hl, $7 + add hl, bc + ld [hl], $dc + call GetTradeAnimByte + ld a, $38 + ld [wcf64], a + ret +; 29649 + +TradeAnim_27: ; 29649 + depixel 10, 11, 4, 0 + ld a, SPRITE_ANIM_INDEX_0F + call _InitSpriteAnimStruct + call GetTradeAnimByte + ld a, $10 + ld [wcf64], a + ld de, SFX_BALL_POOF + call PlaySFX + ret +; 29660 + +TradeAnim_28: ; 29660 + ld a, $e4 + call Functioncf8 + depixel 5, 11 + ld a, SPRITE_ANIM_INDEX_10 + call _InitSpriteAnimStruct + call GetTradeAnimByte + ld a, $40 + ld [wcf64], a + ret +; 29676 + +Function29676: ; 29676 (a:5676) + ld hl, $b + add hl, bc + ld e, [hl] + ld d, 0 + ld hl, Jumptable_29686 +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 29686 + +Jumptable_29686: ; 29686 (a:5686) + dw Function2969a + dw Function296a4 + dw Function296af + dw Function296bd + dw Function296cf + dw Function296dd + dw Function296f2 +; 2969a + +Function29694: ; 29694 (a:5694) + ld hl, $b + add hl, bc + inc [hl] + ret + +Function2969a: ; 2969a (a:569a) + call Function29694 + ld hl, $c + add hl, bc + ld [hl], $80 + ret + +Function296a4: ; 296a4 (a:56a4) + ld hl, $c + add hl, bc + ld a, [hl] + dec [hl] + and a + ret nz + call Function29694 + +Function296af: ; 296af (a:56af) + ld hl, $4 + add hl, bc + ld a, [hl] + cp $94 + jr nc, .asm_296ba + inc [hl] + ret +.asm_296ba + call Function29694 + +Function296bd: ; 296bd (a:56bd) + ld hl, $5 + add hl, bc + ld a, [hl] + cp $4c + jr nc, .asm_296c8 + inc [hl] + ret +.asm_296c8 + ld hl, $ + add hl, bc + ld [hl], $0 + ret + +Function296cf: ; 296cf (a:56cf) + ld hl, $5 + add hl, bc + ld a, [hl] + cp $2c + jr z, .asm_296da + dec [hl] + ret +.asm_296da + call Function29694 + +Function296dd: ; 296dd (a:56dd) + ld hl, $4 + add hl, bc + ld a, [hl] + cp $58 + jr z, .asm_296e8 + dec [hl] + ret +.asm_296e8 + call Function29694 + ld hl, $c + add hl, bc + ld [hl], $80 + ret + +Function296f2: ; 296f2 (a:56f2) + ld hl, $c + add hl, bc + ld a, [hl] + dec [hl] + and a + ret nz + ld hl, $ + add hl, bc + ld [hl], $0 + ret +; 29701 (a:5701) + +TradeAnim_16: ; 29701 + ld a, [wLinkMode] + cp LINK_TIMECAPSULE + jr z, .time_capsule + ld hl, UnknownText_0x29737 + call PrintText + ld c, 189 + call DelayFrames + ld hl, UnknownText_0x29732 + call PrintText + call Function297c9 + ld c, 128 + call DelayFrames + call GetTradeAnimByte + ret + +.time_capsule + ld hl, UnknownText_0x29732 + call PrintText + call Function297c9 + call GetTradeAnimByte + ret +; 29732 + +UnknownText_0x29732: ; 0x29732 + ; was sent to @ . + text_jump UnknownText_0x1bc6e9 + db "@" +; 0x29737 + +UnknownText_0x29737: ; 0x29737 + ; + text_jump UnknownText_0x1bc701 + db "@" +; 0x2973c + +TradeAnim_17: ; 2973c + ld hl, UnknownText_0x29752 + call PrintText + call Function297c9 + ld hl, UnknownText_0x29757 + call PrintText + call Function297c9 + call GetTradeAnimByte + ret +; 29752 + +UnknownText_0x29752: ; 0x29752 + ; bids farewell to + text_jump UnknownText_0x1bc703 + db "@" +; 0x29757 + +UnknownText_0x29757: ; 0x29757 + ; . + text_jump UnknownText_0x1bc719 + db "@" +; 0x2975c + +TradeAnim_18: ; 2975c + call WaitTop + hlcoord 0, 10 + ld bc, 8 * SCREEN_WIDTH + ld a, " " + call ByteFill + call WaitBGMap + ld hl, UnknownText_0x2977a + call PrintText + call Function297c9 + call GetTradeAnimByte + ret +; 2977a + +UnknownText_0x2977a: ; 0x2977a + ; Take good care of @ . + text_jump UnknownText_0x1bc71f + db "@" +; 0x2977f + +TradeAnim_19: ; 2977f + ld hl, UnknownText_0x2979a + call PrintText + call Function297c9 + ld hl, UnknownText_0x2979f + call PrintText + call Function297c9 + ld c, 14 + call DelayFrames + call GetTradeAnimByte + ret +; 2979a + +UnknownText_0x2979a: ; 0x2979a + ; For @ 's @ , + text_jump UnknownText_0x1bc739 + db "@" +; 0x2979f + +UnknownText_0x2979f: ; 0x2979f + ; sends @ . + text_jump UnknownText_0x1bc74c + db "@" +; 0x297a4 + +TradeAnim_1a: ; 297a4 + ld hl, UnknownText_0x297bf + call PrintText + call Function297c9 + ld hl, UnknownText_0x297c4 + call PrintText + call Function297c9 + ld c, 14 + call DelayFrames + call GetTradeAnimByte + ret +; 297bf + +UnknownText_0x297bf: ; 0x297bf + ; will trade @ @ + text_jump UnknownText_0x1bc75e + db "@" +; 0x297c4 + +UnknownText_0x297c4: ; 0x297c4 + ; for @ 's @ . + text_jump UnknownText_0x1bc774 + db "@" +; 0x297c9 + +Function297c9: ; 297c9 + ld c, 80 + call DelayFrames + ret +; 297cf + +Function297cf: ; 297cf + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, " " + call ByteFill + ret +; 297db + +Function297db: ; 297db +.asm_297db + push bc + push hl +.asm_297dd + ld a, [de] + inc de + ld [hli], a + dec c + jr nz, .asm_297dd + pop hl + ld bc, SCREEN_WIDTH + add hl, bc + pop bc + dec b + jr nz, .asm_297db + ret +; 297ed + +Function297ed: ; 297ed + ld a, [hSGB] + and a + ld a, $e4 + jr z, .asm_297f6 + ld a, $f0 + +.asm_297f6 + call Functioncf8 + ld a, $e4 + call DmgToCgbBGPals + ret +; 297ff + +Function297ff: ; 297ff + push de + ld de, wc736 + ld bc, NAME_LENGTH + call CopyBytes + pop hl + ld de, wc741 + ld bc, NAME_LENGTH + call CopyBytes + ret +; 29814 + +Function29814: ; 29814 + ld a, [hl] + ld [wc74c], a + ld a, [de] + ld [wc74d], a + ret +; 2981d + +Function2981d: ; 2981d + ld a, [wcf65] + and $7 + ret nz + ld a, [rBGP] + xor $3c + call DmgToCgbBGPals + ret +; 2982b + +Function2982b: ; 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, wc300 + ld [hli], a + ld [hl], $62 + ret +; 2985a + +Function2985a: ; 2985a + call DelayFrame + ld e, $3 + callab Function8e83f + ld de, TradeBubbleGFX + ld hl, VTiles0 tile $72 + lb bc, BANK(TradeBubbleGFX), $4 + call Request2bpp + xor a + ld hl, wc300 + ld [hli], a + ld [hl], $62 + ret +; 29879 + +TradeAnim_25: ; 29879 + ld hl, wcf64 + ld a, [hl] + and a + jr z, .done + dec [hl] + ret + +.done + call GetTradeAnimByte + ret +; 29886 + +TradeAnim_26: ; 29886 + ld hl, wcf64 + ld a, [hl] + and a + jr z, .asm_2988f + dec [hl] + ret + +.asm_2988f + call GetTradeAnimByte + ret +; 29893 + + +Function29893: ; 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, Unknown_298b5 + + ld a, [hli] + ld [wPlayerTrademonSpecies], a + ld de, wPlayerTrademonSenderName + ld c, 13 ; jp: 8 +.asm_2989f + ld a, [hli] + ld [de], a + inc de + dec c + jr nz, .asm_2989f + + ld a, [hli] + ld [wOTTrademonSpecies], a + ld de, wOTTrademonSenderName + ld c, 13 ; jp: 8 +.asm_298ae + ld a, [hli] + ld [de], a + inc de + dec c + jr nz, .asm_298ae + ret +; 298b5 + +Unknown_298b5: ; 298b5 + db $03, "ゲーフり@@", $23, $01 ; GAME FREAK + db $06, "クりーチャ@", $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 + +Tilemap_298f7: ; 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" -- cgit v1.2.3 From 0dc5ae04b82143b1cbff50a9d25ebe21326305ae Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 23 Nov 2015 02:08:08 -0500 Subject: more trade animation labels --- engine/npctrade.asm | 14 +- engine/trade/animation.asm | 436 ++++++++++++++++++++++----------------------- 2 files changed, 225 insertions(+), 225 deletions(-) (limited to 'engine') diff --git a/engine/npctrade.asm b/engine/npctrade.asm index 0a61129c1..22ca490d6 100755 --- a/engine/npctrade.asm +++ b/engine/npctrade.asm @@ -438,13 +438,13 @@ npctrade: MACRO ENDM - npctrade 0, ABRA, MACHOP, "MUSCLE@@@@@", $6637, GOLD_BERRY, $9254, "MIKE@@@@@@@", TRADE_EITHER_GENDER - npctrade 0, BELLSPROUT, ONIX, "ROCKY@@@@@@", $6696, BITTER_BERRY, $bf1e, "KYLE@@@@@@@", TRADE_EITHER_GENDER - npctrade 1, KRABBY, VOLTORB, "VOLTY@@@@@@", $8898, PRZCUREBERRY, $7205, "TIM@@@@@@@@", TRADE_EITHER_GENDER - npctrade 3, DRAGONAIR, DODRIO, "DORIS@@@@@@", $6677, SMOKE_BALL, $011b, "EMY@@@@@@@@", TRADE_FEMALE_ONLY - npctrade 2, HAUNTER, XATU, "PAUL@@@@@@@", $8696, MYSTERYBERRY, $3d00, "CHRIS@@@@@@", TRADE_EITHER_GENDER - npctrade 3, CHANSEY, AERODACTYL, "AEROY@@@@@@", $6696, GOLD_BERRY, $677b, "KIM@@@@@@@@", TRADE_EITHER_GENDER - npctrade 0, DUGTRIO, MAGNETON, "MAGGIE@@@@@", $6696, METAL_COAT, $c3a2, "FOREST@@@@@", TRADE_EITHER_GENDER + npctrade 0, ABRA, MACHOP, "MUSCLE@@@@@", $6637, GOLD_BERRY, 37460, "MIKE@@@@@@@", TRADE_EITHER_GENDER + npctrade 0, BELLSPROUT, ONIX, "ROCKY@@@@@@", $6696, BITTER_BERRY, 48926, "KYLE@@@@@@@", TRADE_EITHER_GENDER + npctrade 1, KRABBY, VOLTORB, "VOLTY@@@@@@", $8898, PRZCUREBERRY, 29189, "TIM@@@@@@@@", TRADE_EITHER_GENDER + npctrade 3, DRAGONAIR, DODRIO, "DORIS@@@@@@", $6677, SMOKE_BALL, 00283, "EMY@@@@@@@@", TRADE_FEMALE_ONLY + npctrade 2, HAUNTER, XATU, "PAUL@@@@@@@", $8696, MYSTERYBERRY, 15616, "CHRIS@@@@@@", TRADE_EITHER_GENDER + npctrade 3, CHANSEY, AERODACTYL, "AEROY@@@@@@", $6696, GOLD_BERRY, 26491, "KIM@@@@@@@@", TRADE_EITHER_GENDER + npctrade 0, DUGTRIO, MAGNETON, "MAGGIE@@@@@", $6696, METAL_COAT, 50082, "FOREST@@@@@", TRADE_EITHER_GENDER ; fcf38 diff --git a/engine/trade/animation.asm b/engine/trade/animation.asm index 1c03dc869..0aaf0cb8b 100755 --- a/engine/trade/animation.asm +++ b/engine/trade/animation.asm @@ -11,42 +11,42 @@ TradeAnimation: ; 28f24 jr Function28fa1 .data_28f3f - tradeanim_1b - tradeanim_01 - tradeanim_1c - tradeanim_21 - tradeanim_2d - tradeanim_27 - tradeanim_23 - tradeanim_03 - tradeanim_25 - tradeanim_28 - tradeanim_25 + 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_1e - tradeanim_29 - tradeanim_06 - tradeanim_16 - tradeanim_1f - - tradeanim_19 - tradeanim_17 - tradeanim_22 - tradeanim_1f - tradeanim_2a - tradeanim_0e - tradeanim_03 - tradeanim_24 - tradeanim_05 - tradeanim_25 - tradeanim_02 - tradeanim_27 - tradeanim_25 + 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_1d - tradeanim_2c - tradeanim_2e + tradeanim_animate_frontpic + tradeanim_wait_80_if_ot_egg tradeanim_1e - tradeanim_18 - tradeanim_1f + tradeanim_take_care_of_text + tradeanim_scroll_out_right tradeanim_end TradeAnimationPlayer2: ; 28f63 @@ -62,41 +62,41 @@ TradeAnimationPlayer2: ; 28f63 jr Function28fa1 .data_28f7e - tradeanim_1a - tradeanim_17 - tradeanim_22 - tradeanim_1f - tradeanim_2a - tradeanim_06 - tradeanim_03 - tradeanim_24 - tradeanim_05 - tradeanim_25 - tradeanim_02 - tradeanim_27 - tradeanim_25 + 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_1d - tradeanim_2c - tradeanim_2f + tradeanim_animate_frontpic + tradeanim_wait_180_if_ot_egg tradeanim_1e - tradeanim_18 - tradeanim_1f - - tradeanim_1b - tradeanim_01 - tradeanim_1c - tradeanim_22 - tradeanim_27 - tradeanim_23 - tradeanim_03 - tradeanim_25 - tradeanim_28 - tradeanim_25 + 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_1e - tradeanim_29 - tradeanim_0e - tradeanim_16 - tradeanim_1f + tradeanim_give_trademon_sfx + tradeanim_tube_to_player + tradeanim_sent_to_ot_text + tradeanim_scroll_out_right tradeanim_end Function28fa1: ; 28fa1 @@ -234,54 +234,54 @@ endr ; 290af .JumpTable: ; 290af - dw GetTradeAnimByte ; 00 - dw TradeAnim_01 ; 01 get player mon frontpic - dw TradeAnim_02 ; 02 - dw TradeAnim_03 ; 03 transition to link tube - dw TradeAnim_04 ; 04 slide in link tube - dw TradeAnim_05 ; 05 - dw TradeAnim_06 ; 06 trademon navigates to OT system - dw TradeAnim_07 ; 07 pan bgmap - dw TradeAnim_08 ; 08 pan bgmap - dw TradeAnim_09 ; 09 pan bgmap - dw TradeAnim_0a ; 0a stop scroll - dw TradeAnim_0b ; 0b disappear mon icon - dw TradeAnim_0c ; 0c continue flashing OT screen - dw TradeAnim_0d ; 0d end scene - dw TradeAnim_0e ; 0e trademon navigates to player system - dw TradeAnim_0f ; 0f pan bgmap - dw TradeAnim_10 ; 10 pan bgmap - dw TradeAnim_11 ; 11 pan bgmap - dw TradeAnim_12 ; 12 stop scroll - dw TradeAnim_13 ; 13 disappear mon icon - dw TradeAnim_14 ; 14 continue flashing OT screen - dw TradeAnim_15 ; 15 end scene - dw TradeAnim_16 ; 16 - dw TradeAnim_17 ; 17 - dw TradeAnim_18 ; 18 - dw TradeAnim_19 ; 19 - dw TradeAnim_1a ; 1a - dw TradeAnim_1b ; 1b set up scroll for player mon - dw TradeAnim_1c ; 1c scroll across + dw TradeAnim_Next ; 00 + dw TradeAnim_ShowGivemonData ; 01 + dw TradeAnim_ShowGetmonData ; 02 + dw TradeAnim_EnterLinkTube ; 03 + dw TradeAnim_04 ; 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_1d ; 1d - dw TradeAnim_1e ; 1e set up scroll for mon transfer - dw TradeAnim_1f ; 1f - dw TradeAnim_20 ; 20 - dw TradeAnim_21 ; 21 wait 80 frames - dw TradeAnim_22 ; 22 - dw TradeAnim_23 ; 23 ball appear anim - dw TradeAnim_24 ; 24 ball rises into tube - dw TradeAnim_25 ; 25 wait ball rise - dw TradeAnim_26 ; 26 - dw TradeAnim_27 ; 27 ball return poof anim - dw TradeAnim_28 ; 28 ball travels through tube - dw TradeAnim_29 ; 29 give trademon sfx - dw TradeAnim_2a ; 2a get trademon sfx - dw EndTradeAnim ; 2b - dw TradeAnim_2c ; 2c - dw TradeAnim_2d ; 2d wait 96 frames - dw TradeAnim_2e ; 2e - dw TradeAnim_2f ; 2f + dw TradeAnim_1e ; 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 NextTradeAnim: ; 2910f @@ -290,7 +290,7 @@ NextTradeAnim: ; 2910f ret ; 29114 -GetTradeAnimByte: ; 29114 +TradeAnim_Next: ; 29114 ld hl, wTradeAnimPointer ld e, [hl] inc hl @@ -304,13 +304,13 @@ GetTradeAnimByte: ; 29114 ret ; 29123 -EndTradeAnim: ; 29123 +TradeAnim_End: ; 29123 ld hl, wJumptableIndex set 7, [hl] ret ; 29129 -TradeAnim_06: ; 29129 +TradeAnim_TubeToOT1: ; 29129 ld a, $ed call Function292f6 ld a, [wc74c] @@ -320,7 +320,7 @@ TradeAnim_06: ; 29129 ld b, $0 jr Function2914e -TradeAnim_0e: ; 2913c +TradeAnim_TubeToPlayer1: ; 2913c ld a, $ee call Function292f6 ld a, [wc74d] @@ -378,7 +378,7 @@ Function2914e: ; 2914e ret ; 291af -TradeAnim_07: ; 291af +TradeAnim_TubeToOT2: ; 291af call Function2981d ld a, [hSCX] add $2 @@ -391,7 +391,7 @@ TradeAnim_07: ; 291af ret ; 291c4 -TradeAnim_08: ; 291c4 +TradeAnim_TubeToOT3: ; 291c4 call Function2981d ld a, [hSCX] add $2 @@ -404,7 +404,7 @@ TradeAnim_08: ; 291c4 ret ; 291d9 -TradeAnim_09: ; 291d9 +TradeAnim_TubeToOT4: ; 291d9 call Function2981d ld a, [hSCX] add $2 @@ -415,7 +415,7 @@ TradeAnim_09: ; 291d9 ret ; 291e8 -TradeAnim_10: ; 291e8 +TradeAnim_TubeToPlayer3: ; 291e8 call Function2981d ld a, [hSCX] sub $2 @@ -428,7 +428,7 @@ TradeAnim_10: ; 291e8 ret ; 291fd -TradeAnim_11: ; 291fd +TradeAnim_TubeToPlayer4: ; 291fd call Function2981d ld a, [hSCX] sub $2 @@ -441,7 +441,7 @@ TradeAnim_11: ; 291fd ret ; 29211 -TradeAnim_12: ; 29211 +TradeAnim_TubeToPlayer5: ; 29211 call Function2981d ld a, [hSCX] sub $2 @@ -452,16 +452,16 @@ TradeAnim_12: ; 29211 ret ; 29220 -TradeAnim_0b: -TradeAnim_13: ; 29220 +TradeAnim_TubeToOT6: +TradeAnim_TubeToPlayer6: ; 29220 ld a, $80 ld [wcf64], a call NextTradeAnim ret ; 29229 -TradeAnim_0d: -TradeAnim_15: ; 29229 +TradeAnim_TubeToOT8: +TradeAnim_TubeToPlayer8: ; 29229 call ClearBGPalettes call ClearTileMap call ClearSprites @@ -479,14 +479,14 @@ TradeAnim_15: ; 29229 call Function2982b call WaitBGMap call Function297ed - call GetTradeAnimByte + call TradeAnim_Next ret ; 2925d -TradeAnim_0a: -TradeAnim_0c: -TradeAnim_0f: -TradeAnim_14: ; 2925d +TradeAnim_TubeToOT5: +TradeAnim_TubeToOT7: +TradeAnim_TubeToPlayer2: +TradeAnim_TubeToPlayer7: ; 2925d call Function2981d ld hl, wcf64 ld a, [hl] @@ -500,15 +500,15 @@ TradeAnim_14: ; 2925d ret ; 2926d -TradeAnim_29: ; 2926d - call GetTradeAnimByte +TradeAnim_GiveTrademonSFX: ; 2926d + call TradeAnim_Next ld de, SFX_GIVE_TRADEMON call PlaySFX ret ; 29277 -TradeAnim_2a: ; 29277 - call GetTradeAnimByte +TradeAnim_GetTrademonSFX: ; 29277 + call TradeAnim_Next ld de, SFX_GET_TRADEMON call PlaySFX ret @@ -540,7 +540,7 @@ Function29297: ; 29297 hlcoord 9, 3 ld [hl], $5b inc hl - ld bc, $a + ld bc, 10 ld a, $60 call ByteFill hlcoord 3, 2 @@ -569,11 +569,11 @@ Function292be: ; 292be ld a, $61 ld de, SCREEN_WIDTH ld c, $3 -.asm_292d9 +.loop add hl, de ld [hl], a dec c - jr nz, .asm_292d9 + jr nz, .loop add hl, de ld a, $5f ld [hld], a @@ -603,21 +603,21 @@ Function292f6: ; 292f6 ld a, "─" call ByteFill hlcoord 0, 1 - ld de, wc736 + ld de, wLinkPlayer1Name call PlaceString - ld hl, wc741 + ld hl, wLinkPlayer2Name ld de, 0 -.asm_2931e +.find_name_end_loop ld a, [hli] cp "@" - jr z, .asm_29326 + jr z, .done dec de - jr .asm_2931e + jr .find_name_end_loop -.asm_29326 +.done hlcoord 0, 4 add hl, de - ld de, wc741 + ld de, wLinkPlayer2Name call PlaceString hlcoord 7, 2 ld bc, 6 @@ -631,7 +631,7 @@ Function292f6: ; 292f6 ret ; 29348 -TradeAnim_03: ; 29348 +TradeAnim_EnterLinkTube: ; 29348 call ClearTileMap call WaitTop ld a, $a0 @@ -665,11 +665,11 @@ TradeAnim_04: ; 2937e .done ld c, 80 call DelayFrames - call GetTradeAnimByte + call TradeAnim_Next ret ; 29391 -TradeAnim_05: ; 29391 +TradeAnim_ExitLinkTube: ; 29391 ld a, [hSCX] cp $a0 jr z, .asm_2939c @@ -681,22 +681,22 @@ TradeAnim_05: ; 29391 call ClearTileMap xor a ld [hSCX], a - call GetTradeAnimByte + call TradeAnim_Next ret ; 293a6 -TradeAnim_1b: ; 293a6 +TradeAnim_SetupGivemonScroll: ; 293a6 ld a, $8f ld [hWX], a ld a, $88 ld [hSCX], a ld a, $50 ld [hWY], a - call GetTradeAnimByte + call TradeAnim_Next ret ; 293b6 -TradeAnim_1c: ; 293b6 +TradeAnim_DoGivemonScroll: ; 293b6 ld a, [hWX] cp $7 jr z, .done @@ -712,7 +712,7 @@ TradeAnim_1c: ; 293b6 ld [hWX], a xor a ld [hSCX], a - call GetTradeAnimByte + call TradeAnim_Next ret ; 293d2 @@ -721,7 +721,7 @@ TradeAnim_1d: ; 293d2 ld [hWX], a ld a, $50 ld [hWY], a - call GetTradeAnimByte + call TradeAnim_Next ret ; 293de @@ -730,11 +730,11 @@ TradeAnim_1e: ; 293de ld [hWX], a ld a, $90 ld [hWY], a - call GetTradeAnimByte + call TradeAnim_Next ret ; 293ea -TradeAnim_1f: ; 293ea +TradeAnim_ScrollOutRight: ; 293ea call WaitTop ld a, VBGMap1 / $100 ld [hBGMapAddress + 1], a @@ -752,15 +752,15 @@ TradeAnim_1f: ; 293ea ret ; 2940c -TradeAnim_20: ; 2940c +TradeAnim_ScrollOutRight2: ; 2940c ld a, [hWX] cp $a1 - jr nc, .asm_29417 + jr nc, .done add $4 ld [hWX], a ret -.asm_29417 +.done ld a, VBGMap1 / $100 ld [hBGMapAddress + 1], a call WaitBGMap @@ -770,11 +770,11 @@ TradeAnim_20: ; 2940c ld [hWY], a ld a, VBGMap0 / $100 ld [hBGMapAddress + 1], a - call GetTradeAnimByte + call TradeAnim_Next ret ; 2942e -TradeAnim_01: ; 2942e +TradeAnim_ShowGivemonData: ; 2942e call Function2951f ld a, [wPlayerTrademonSpecies] ld [CurPartySpecies], a @@ -796,11 +796,11 @@ TradeAnim_01: ; 2942e call PlayCryHeader .skip_cry - call GetTradeAnimByte + call TradeAnim_Next ret ; 29461 -TradeAnim_02: ; 29461 +TradeAnim_ShowGetmonData: ; 29461 call Function29549 ld a, [wOTTrademonSpecies] ld [CurPartySpecies], a @@ -813,13 +813,13 @@ TradeAnim_02: ; 29461 ld a, $e4 call DmgToCgbBGPals call Function294c0 - call GetTradeAnimByte + call TradeAnim_Next ret ; 29487 -TradeAnim_2c: ; 29487 +TradeAnim_AnimateFrontpic: ; 29487 callba Function4d81e - call GetTradeAnimByte + call TradeAnim_Next ret ; 29491 @@ -870,53 +870,53 @@ Function294c3: ; 294c3 ret ; 294e7 -TradeAnim_21: ; 294e7 +TraideAnim_Wait80: ; 294e7 ld c, 80 call DelayFrames - call GetTradeAnimByte + call TradeAnim_Next ret ; 294f0 -TradeAnim_22: ; 294f0 +TraideAnim_Wait40: ; 294f0 ld c, 40 call DelayFrames - call GetTradeAnimByte + call TradeAnim_Next ret ; 294f9 -TradeAnim_2d: ; 294f9 +TraideAnim_Wait96: ; 294f9 ld c, 96 call DelayFrames - call GetTradeAnimByte + call TradeAnim_Next ret ; 29502 -TradeAnim_2e: ; 29502 - call Function29516 +TraideAnim_Wait80IfOTEgg: ; 29502 + call IsOTTrademonEgg ret nz ld c, 80 call DelayFrames ret ; 2950c -TradeAnim_2f: ; 2950c - call Function29516 +TraideAnim_Wait180IfOTEgg: ; 2950c + call IsOTTrademonEgg ret nz ld c, 180 call DelayFrames ret ; 29516 -Function29516: ; 29516 - call GetTradeAnimByte +IsOTTrademonEgg: ; 29516 + call TradeAnim_Next ld a, [wOTTrademonSpecies] - cp $fd + cp EGG ret ; 2951f Function2951f: ; 2951f ld de, wPlayerTrademonSpecies ld a, [de] - cp $fd + cp EGG jr z, Function295a1 call Function29573 ld de, wPlayerTrademonSpecies @@ -935,7 +935,7 @@ Function2951f: ; 2951f Function29549: ; 29549 ld de, wOTTrademonSpecies ld a, [de] - cp $fd + cp EGG jr z, Function295a1 call Function29573 ld de, wOTTrademonSpecies @@ -970,7 +970,7 @@ String29591: ; 29591 db "─── №." next "" next "OT/" - next $73, "№.@" + next "№.@" ; 295a1 Function295a1: ; 295a1 @@ -1048,17 +1048,17 @@ Function29611: ; 29611 ret ; 2961b -TradeAnim_23: ; 2961b +TradeAnim_RockingBall: ; 2961b depixel 10, 11, 4, 0 ld a, SPRITE_ANIM_INDEX_0E call _InitSpriteAnimStruct - call GetTradeAnimByte + call TradeAnim_Next ld a, $20 ld [wcf64], a ret ; 2962c -TradeAnim_24: ; 2962c +TradeAnim_DropBall: ; 2962c depixel 10, 11, 4, 0 ld a, SPRITE_ANIM_INDEX_0E call _InitSpriteAnimStruct @@ -1068,17 +1068,17 @@ TradeAnim_24: ; 2962c ld hl, $7 add hl, bc ld [hl], $dc - call GetTradeAnimByte + call TradeAnim_Next ld a, $38 ld [wcf64], a ret ; 29649 -TradeAnim_27: ; 29649 +TradeAnim_Poof: ; 29649 depixel 10, 11, 4, 0 ld a, SPRITE_ANIM_INDEX_0F call _InitSpriteAnimStruct - call GetTradeAnimByte + call TradeAnim_Next ld a, $10 ld [wcf64], a ld de, SFX_BALL_POOF @@ -1086,13 +1086,13 @@ TradeAnim_27: ; 29649 ret ; 29660 -TradeAnim_28: ; 29660 +TradeAnim_BulgeThroughTube: ; 29660 ld a, $e4 call Functioncf8 depixel 5, 11 ld a, SPRITE_ANIM_INDEX_10 call _InitSpriteAnimStruct - call GetTradeAnimByte + call TradeAnim_Next ld a, $40 ld [wcf64], a ret @@ -1209,7 +1209,7 @@ Function296f2: ; 296f2 (a:56f2) ret ; 29701 (a:5701) -TradeAnim_16: ; 29701 +TradeAnim_SentToOTText: ; 29701 ld a, [wLinkMode] cp LINK_TIMECAPSULE jr z, .time_capsule @@ -1222,14 +1222,14 @@ TradeAnim_16: ; 29701 call Function297c9 ld c, 128 call DelayFrames - call GetTradeAnimByte + call TradeAnim_Next ret .time_capsule ld hl, UnknownText_0x29732 call PrintText call Function297c9 - call GetTradeAnimByte + call TradeAnim_Next ret ; 29732 @@ -1245,14 +1245,14 @@ UnknownText_0x29737: ; 0x29737 db "@" ; 0x2973c -TradeAnim_17: ; 2973c +TradeAnim_OTBidsFarewell: ; 2973c ld hl, UnknownText_0x29752 call PrintText call Function297c9 ld hl, UnknownText_0x29757 call PrintText call Function297c9 - call GetTradeAnimByte + call TradeAnim_Next ret ; 29752 @@ -1268,7 +1268,7 @@ UnknownText_0x29757: ; 0x29757 db "@" ; 0x2975c -TradeAnim_18: ; 2975c +TradeAnim_TakeCareOfText: ; 2975c call WaitTop hlcoord 0, 10 ld bc, 8 * SCREEN_WIDTH @@ -1278,7 +1278,7 @@ TradeAnim_18: ; 2975c ld hl, UnknownText_0x2977a call PrintText call Function297c9 - call GetTradeAnimByte + call TradeAnim_Next ret ; 2977a @@ -1288,7 +1288,7 @@ UnknownText_0x2977a: ; 0x2977a db "@" ; 0x2977f -TradeAnim_19: ; 2977f +TradeAnim_OTSendsText1: ; 2977f ld hl, UnknownText_0x2979a call PrintText call Function297c9 @@ -1297,7 +1297,7 @@ TradeAnim_19: ; 2977f call Function297c9 ld c, 14 call DelayFrames - call GetTradeAnimByte + call TradeAnim_Next ret ; 2979a @@ -1313,7 +1313,7 @@ UnknownText_0x2979f: ; 0x2979f db "@" ; 0x297a4 -TradeAnim_1a: ; 297a4 +TradeAnim_OTSendsText2: ; 297a4 ld hl, UnknownText_0x297bf call PrintText call Function297c9 @@ -1322,7 +1322,7 @@ TradeAnim_1a: ; 297a4 call Function297c9 ld c, 14 call DelayFrames - call GetTradeAnimByte + call TradeAnim_Next ret ; 297bf @@ -1387,11 +1387,11 @@ Function297ed: ; 297ed Function297ff: ; 297ff push de - ld de, wc736 + ld de, wLinkPlayer1Name ld bc, NAME_LENGTH call CopyBytes pop hl - ld de, wc741 + ld de, wLinkPlayer2Name ld bc, NAME_LENGTH call CopyBytes ret @@ -1451,7 +1451,7 @@ Function2985a: ; 2985a ret ; 29879 -TradeAnim_25: ; 29879 +TradeAnim_WaitAnim: ; 29879 ld hl, wcf64 ld a, [hl] and a @@ -1460,25 +1460,25 @@ TradeAnim_25: ; 29879 ret .done - call GetTradeAnimByte + call TradeAnim_Next ret ; 29886 -TradeAnim_26: ; 29886 +TradeAnim_WaitAnim2: ; 29886 ld hl, wcf64 ld a, [hl] and a - jr z, .asm_2988f + jr z, .done dec [hl] ret -.asm_2988f - call GetTradeAnimByte +.done + call TradeAnim_Next ret ; 29893 -Function29893: ; 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. @@ -1488,30 +1488,30 @@ Function29893: ; 29893 ld a, [hli] ld [wPlayerTrademonSpecies], a ld de, wPlayerTrademonSenderName - ld c, 13 ; jp: 8 -.asm_2989f + ld c, 11 + 2 ; jp: 6 + 2 +.loop1 ld a, [hli] ld [de], a inc de dec c - jr nz, .asm_2989f + jr nz, .loop1 ld a, [hli] ld [wOTTrademonSpecies], a ld de, wOTTrademonSenderName - ld c, 13 ; jp: 8 -.asm_298ae + ld c, 11 + 2 ; jp: 6 + 2 +.loop2 ld a, [hli] ld [de], a inc de dec c - jr nz, .asm_298ae + jr nz, .loop2 ret ; 298b5 Unknown_298b5: ; 298b5 - db $03, "ゲーフり@@", $23, $01 ; GAME FREAK - db $06, "クりーチャ@", $56, $04 ; Creatures Inc. + db VENUSAUR, "ゲーフり@@", $23, $01 ; GAME FREAK + db CHARIZARD, "クりーチャ@", $56, $04 ; Creatures Inc. ; 298c7 -- cgit v1.2.3 From d972564175bcee324877f1e016fafd349c50e7d3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 23 Nov 2015 16:04:53 -0500 Subject: link and seer labels --- engine/billspc.asm | 2 +- engine/decorations.asm | 2 +- engine/evolve.asm | 6 +- engine/link.asm | 96 ++++++------- engine/mail.asm | 4 +- engine/mart.asm | 6 +- engine/pack.asm | 361 +++++++++++++++++++++++++---------------------- engine/pokecenter_pc.asm | 6 +- 8 files changed, 252 insertions(+), 231 deletions(-) (limited to 'engine') diff --git a/engine/billspc.asm b/engine/billspc.asm index 6c228a18e..a4dd02876 100755 --- a/engine/billspc.asm +++ b/engine/billspc.asm @@ -2362,7 +2362,7 @@ _ChangeBox: ; e35aa (38:75aa) ld hl, _ChangeBox_menudataheader call CopyMenuDataHeader xor a - ld [wd0e4], a + ld [wMenuScrollPosition], a hlcoord 0, 4 lb bc, 8, 9 call TextBox diff --git a/engine/decorations.asm b/engine/decorations.asm index 519f88d7c..1fa5cac7e 100755 --- a/engine/decorations.asm +++ b/engine/decorations.asm @@ -399,7 +399,7 @@ PopulateDecoCategoryMenu: ; 2695b ld [hBGMapMode], a call InitScrollingMenu xor a - ld [wd0e4], a + ld [wMenuScrollPosition], a call HandleScrollingMenu ld a, [wcf73] cp 2 diff --git a/engine/evolve.asm b/engine/evolve.asm index 940b033b1..6772db932 100755 --- a/engine/evolve.asm +++ b/engine/evolve.asm @@ -9,7 +9,7 @@ EvolvePokemon: ; 421d8 EvolveAfterBattle: ; 421e6 xor a - ld [wd268], a + ld [wMonTriedToEvolve], a dec a ld [CurPartyMon], a push hl @@ -201,7 +201,7 @@ endr ld a, [TempMonLevel] ld [CurPartyLevel], a ld a, $1 - ld [wd268], a + ld [wMonTriedToEvolve], a push hl @@ -349,7 +349,7 @@ Evolution_ReturnToMap: ; 423ff ld a, [wBattleMode] and a ret nz - ld a, [wd268] + ld a, [wMonTriedToEvolve] and a call nz, RestartMapMusic ret diff --git a/engine/link.asm b/engine/link.asm index 96c5cb376..9d21104f8 100755 --- a/engine/link.asm +++ b/engine/link.asm @@ -40,7 +40,7 @@ Function2805d: ; 2805d call Function28499 call Function28434 xor a - ld [wcf56], a + ld [wPlayerLinkAction], a call Function87d ld a, [hLinkPlayerNumber] cp $2 @@ -474,7 +474,7 @@ Function283b2: ; 283b2 ld b, $a .asm_283b7 call DelayFrame - call Function908 + call LinkCommunicationsSignalDataReceived dec b jr nz, .asm_283b7 xor a @@ -1213,7 +1213,7 @@ Function287e3: ; 287e3 call Function28ef8 callba Function16d673 xor a - ld hl, wcf51 + ld hl, wOtherPlayerLinkMode rept 3 ld [hli], a endr @@ -1221,7 +1221,7 @@ endr ld a, $1 ld [MenuSelection2], a inc a - ld [wcf56], a + ld [wPlayerLinkAction], a jp Function2888b ; 28803 @@ -1468,9 +1468,9 @@ Function28926: ; 28926 ld [MenuSelection2], a dec a ld [wd002], a - ld [wcf56], a + ld [wPlayerLinkAction], a callba Function16d6ce - ld a, [wcf51] + ld a, [wOtherPlayerLinkMode] cp $f jp z, Function287e3 ld [wd003], a @@ -1483,7 +1483,7 @@ Function28926: ; 28926 jp nc, Function28b87 xor a ld [wcf57], a - ld [wcf52], a + ld [wOtherPlayerLinkAction], a hlcoord 0, 12 ld b, $4 ld c, $12 @@ -1497,7 +1497,7 @@ Function28926: ; 28926 .asm_28a58 xor a ld [wcf57], a - ld [wcf52], a + ld [wOtherPlayerLinkAction], a ld a, [wd003] ld hl, OTPartySpecies ld c, a @@ -1524,7 +1524,7 @@ Function28926: ; 28926 ld de, String28ece call PlaceString ld a, $1 - ld [wcf56], a + ld [wPlayerLinkAction], a callba Function16d6ce ld c, $64 call DelayFrames @@ -1591,9 +1591,9 @@ Function28ade: ; 28ade ld a, $ec ldcoord_a 9, 17 ld a, $f - ld [wcf56], a + ld [wPlayerLinkAction], a callba Function16d6ce - ld a, [wcf51] + ld a, [wOtherPlayerLinkMode] cp $f jr nz, .asm_28ade @@ -1634,7 +1634,7 @@ String_28b61: ; 28b61 ; 28b68 Function28b68: ; 28b68 - ld a, [wcf51] + ld a, [wOtherPlayerLinkMode] hlcoord 6, 9 ld bc, SCREEN_WIDTH call AddNTimes @@ -1662,7 +1662,7 @@ Function28b77: ; 28b77 Function28b87: ; 28b87 xor a ld [wcf57], a - ld [wcf52], a + ld [wOtherPlayerLinkAction], a hlcoord 0, 12 ld b, $4 ld c, $12 @@ -1731,7 +1731,7 @@ Function28b87: ; 28b87 .asm_28c33 ld a, $1 - ld [wcf56], a + ld [wPlayerLinkAction], a hlcoord 0, 12 ld b, 4 ld c, 18 @@ -1744,9 +1744,9 @@ Function28b87: ; 28b87 .asm_28c54 ld a, $2 - ld [wcf56], a + ld [wPlayerLinkAction], a callba Function16d6ce - ld a, [wcf51] + ld a, [wOtherPlayerLinkMode] dec a jr nz, .asm_28c7b hlcoord 0, 12 @@ -1959,7 +1959,7 @@ Function28b87: ; 28b87 .asm_28e49 ld a, b - ld [wcf56], a + ld [wPlayerLinkAction], a push bc call Function862 pop bc @@ -1969,7 +1969,7 @@ Function28b87: ; 28b87 ld a, b and a jr z, .asm_28e63 - ld a, [wcf52] + ld a, [wOtherPlayerLinkAction] cp b jr nz, .asm_28e49 @@ -2148,11 +2148,11 @@ Function29c67: ; 29c67 ; 29c7b Special_EnterTimeCapsule: ; 29c7b - ld c, $a + ld c, 10 call DelayFrames ld a, $4 call Function29f17 - ld c, $28 + ld c, 40 call DelayFrames xor a ld [hVBlank], a @@ -2210,15 +2210,15 @@ Special_AbortLink: ; 29c92 ; 29ce8 Special_SetBitsForLinkTradeRequest: ; 29ce8 - ld a, $1 - ld [wcf56], a + ld a, LINK_TRADECENTER - 1 + ld [wPlayerLinkAction], a ld [wd265], a ret ; 29cf1 Special_SetBitsForBattleRequest: ; 29cf1 - ld a, $2 - ld [wcf56], a + ld a, LINK_COLOSSEUM - 1 + ld [wPlayerLinkAction], a ld [wd265], a ret ; 29cfa @@ -2232,14 +2232,14 @@ Special_SetBitsForTimeCapsuleRequest: ; 29cfa ld [rSC], a ld a, $80 ld [rSC], a - xor a - ld [wcf56], a + xor a ; LINK_TIMECAPSULE - 1 + ld [wPlayerLinkAction], a ld [wd265], a ret ; 29d11 Special_WaitForLinkedFriend: ; 29d11 - ld a, [wcf56] + ld a, [wPlayerLinkAction] and a jr z, .asm_29d2f ld a, $2 @@ -2295,9 +2295,9 @@ Special_WaitForLinkedFriend: ; 29d11 jr .asm_29d39 .asm_29d79 - call Function908 + call LinkCommunicationsSignalDataReceived call DelayFrame - call Function908 + call LinkCommunicationsSignalDataReceived ld c, $32 call DelayFrames ld a, $1 @@ -2312,7 +2312,7 @@ Special_WaitForLinkedFriend: ; 29d11 Special_CheckLinkTimeout: ; 29d92 ld a, $1 - ld [wcf56], a + ld [wPlayerLinkAction], a ld hl, wcf5b ld a, $3 ld [hli], a @@ -2334,7 +2334,7 @@ Special_CheckLinkTimeout: ; 29d92 Function29dba: ; 29dba ld a, $5 - ld [wcf56], a + ld [wPlayerLinkAction], a ld hl, wcf5b ld a, $3 ld [hli], a @@ -2355,17 +2355,17 @@ Function29dba: ; 29dba ld a, b or c jr nz, .asm_29de0 - ld a, [wcf51] + ld a, [wOtherPlayerLinkMode] cp $5 jr nz, .asm_29e03 ld a, $6 - ld [wcf56], a + ld [wPlayerLinkAction], a ld hl, wcf5b ld a, $1 ld [hli], a ld [hl], $32 call Function29e0c - ld a, [wcf51] + ld a, [wOtherPlayerLinkMode] cp $6 jr z, .asm_29e08 @@ -2426,7 +2426,7 @@ Function29e47: ; 29e47 ld b, $a .asm_29e49 call DelayFrame - call Function908 + call LinkCommunicationsSignalDataReceived dec b jr nz, .asm_29e49 ret @@ -2467,14 +2467,14 @@ Special_CheckBothSelectedSameRoom: ; 29e82 ld a, [wd265] call Function29f17 push af - call Function908 + call LinkCommunicationsSignalDataReceived call DelayFrame - call Function908 + call LinkCommunicationsSignalDataReceived pop af ld b, a ld a, [wd265] cp b - jr nz, .asm_29eaa + jr nz, .fail ld a, [wd265] inc a ld [wLinkMode], a @@ -2484,7 +2484,7 @@ Special_CheckBothSelectedSameRoom: ; 29e82 ld [ScriptVar], a ret -.asm_29eaa +.fail xor a ld [ScriptVar], a ret @@ -2532,14 +2532,14 @@ Special_CloseLink: ; 29eee ; 29efa Special_FailedLinkToPast: ; 29efa - ld c, $28 + ld c, 40 call DelayFrames ld a, $e jp Function29f17 ; 29f04 Function29f04: ; 29f04 - ld c, $3 + ld c, 3 call DelayFrames ld a, -1 ld [hLinkPlayerNumber], a @@ -2553,26 +2553,26 @@ Function29f04: ; 29f04 Function29f17: ; 29f17 add $d0 - ld [wcf56], a + ld [wPlayerLinkAction], a ld [wcf57], a ld a, $2 ld [hVBlank], a call DelayFrame call DelayFrame -.asm_29f29 +.receive_loop call Function83b - ld a, [wcf51] + ld a, [wOtherPlayerLinkMode] ld b, a and $f0 cp $d0 - jr z, .asm_29f40 - ld a, [wcf52] + jr z, .done + ld a, [wOtherPlayerLinkAction] ld b, a and $f0 cp $d0 - jr nz, .asm_29f29 + jr nz, .receive_loop -.asm_29f40 +.done xor a ld [hVBlank], a ld a, b diff --git a/engine/mail.asm b/engine/mail.asm index 7aa6b30c1..82d27d4be 100755 --- a/engine/mail.asm +++ b/engine/mail.asm @@ -398,9 +398,9 @@ MailboxPC: ; 0x44806 ld a, [wCurMessageIndex] ld [wMenuCursorBuffer], a ld a, [OBPals + 8 * 6] - ld [wd0e4], a + ld [wMenuScrollPosition], a call HandleScrollingMenu - ld a, [wd0e4] + ld a, [wMenuScrollPosition] ld [OBPals + 8 * 6], a ld a, [MenuSelection2] ld [wCurMessageIndex], a diff --git a/engine/mart.asm b/engine/mart.asm index 2aa410760..87c805c25 100755 --- a/engine/mart.asm +++ b/engine/mart.asm @@ -477,9 +477,9 @@ BuyMenuLoop: ; 15cef ld a, [wd045] ld [wMenuCursorBuffer], a ld a, [wd045 + 1] - ld [wd0e4], a + ld [wMenuScrollPosition], a call HandleScrollingMenu - ld a, [wd0e4] + ld a, [wMenuScrollPosition] ld [wd045 + 1], a ld a, [MenuSelection2] ld [wd045], a @@ -658,7 +658,7 @@ MenuDataHeader_Buy: ; 0x15e18 dbw 0, CurMart dba PlaceMenuItemName dba .PrintBCDPrices - dba Function244c3 + dba UpdateItemDescription ; 15e30 .PrintBCDPrices: ; 15e30 diff --git a/engine/pack.asm b/engine/pack.asm index e9b52606c..0b7d35ece 100644 --- a/engine/pack.asm +++ b/engine/pack.asm @@ -1,7 +1,7 @@ Pack: ; 10000 ld hl, Options - set 4, [hl] + set NO_TEXT_SCROLL, [hl] call Function1068a .loop call JoyTextDelay @@ -14,9 +14,9 @@ Pack: ; 10000 .done ld a, [wcf65] - ld [wd0d6], a + ld [wLastPocket], a ld hl, Options - res 4, [hl] + res NO_TEXT_SCROLL, [hl] ret ; 10026 @@ -65,11 +65,11 @@ Function10067: ; 10067 (4:4067) call CopyMenuDataHeader ld a, [wItemsPocketCursor] ld [wMenuCursorBuffer], a - ld a, [wd0df] - ld [wd0e4], a + ld a, [wItemsPocketScrollPosition] + ld [wMenuScrollPosition], a call HandleScrollingMenu - ld a, [wd0e4] - ld [wd0df], a + ld a, [wMenuScrollPosition] + ld [wItemsPocketScrollPosition], a ld a, [MenuSelection2] ld [wItemsPocketCursor], a ld b, $7 @@ -93,11 +93,11 @@ Function100a6: ; 100a6 (4:40a6) call CopyMenuDataHeader ld a, [wKeyItemsPocketCursor] ld [wMenuCursorBuffer], a - ld a, [wd0e0] - ld [wd0e4], a + ld a, [wKeyItemsPocketScrollPosition] + ld [wMenuScrollPosition], a call HandleScrollingMenu - ld a, [wd0e4] - ld [wd0e0], a + ld a, [wMenuScrollPosition] + ld [wKeyItemsPocketScrollPosition], a ld a, [MenuSelection2] ld [wKeyItemsPocketCursor], a ld b, $3 @@ -164,7 +164,7 @@ MenuData2_0x1012c: ; 0x1012c Jumptable_10137: ; 10137 dw Function10159 - dw Function10492_ret + dw QuitItemSubmenu ; 1013b MenuDataHeader_0x1013b: ; 0x1013b @@ -185,8 +185,8 @@ MenuData2_0x10143: ; 0x10143 Jumptable_10153: ; 10153 dw Function10159 - dw Function103fd - dw Function10492_ret + dw GiveItem + dw QuitItemSubmenu ; 10159 Function10159: ; 10159 @@ -223,11 +223,11 @@ Function10198: ; 10198 (4:4198) call CopyMenuDataHeader ld a, [wBallsPocketCursor] ld [wMenuCursorBuffer], a - ld a, [wd0e1] - ld [wd0e4], a + ld a, [wBallsPocketScrollPosition] + ld [wMenuScrollPosition], a call HandleScrollingMenu - ld a, [wd0e4] - ld [wd0e1], a + ld a, [wMenuScrollPosition] + ld [wBallsPocketScrollPosition], a ld a, [MenuSelection2] ld [wBallsPocketCursor], a ld b, $1 @@ -267,32 +267,32 @@ Function101c5: ; 101c5 (4:41c5) jr .tossable_unselectable .usable - ld hl, MenuDataHeader_0x10249 + ld hl, MenuDataHeader_UsableKeyItem ld de, Jumptable_1026a jr .build_menu .selectable_usable - ld hl, MenuDataHeader_0x10274 + ld hl, MenuDataHeader_UsableItem ld de, Jumptable_10291 jr .build_menu .tossable_selectable - ld hl, MenuDataHeader_0x10299 + ld hl, MenuDataHeader_UnusableItem ld de, Jumptable_102ac jr .build_menu .tossable_unselectable - ld hl, MenuDataHeader_0x102b0 + ld hl, MenuDataHeader_UnusableKeyItem ld de, Jumptable_102c7 jr .build_menu .unusable - ld hl, MenuDataHeader_0x102cd + ld hl, MenuDataHeader_HoldableKeyItem ld de, Jumptable_102ea jr .build_menu .selectable_unusable - ld hl, MenuDataHeader_0x102f2 + ld hl, MenuDataHeader_HoldableItem ld de, Jumptable_1030b .build_menu push de @@ -307,15 +307,15 @@ Function101c5: ; 101c5 (4:41c5) jp [hl] ; 10249 (4:4249) -MenuDataHeader_0x10249: ; 0x10249 +MenuDataHeader_UsableKeyItem: ; 0x10249 db $40 ; flags db 01, 13 ; start coords db 11, 19 ; end coords - dw MenuData2_0x10251 + dw .MenuData2 db 1 ; default option ; 0x10251 -MenuData2_0x10251: ; 0x10251 +.MenuData2: ; 0x10251 db $c0 ; flags db 5 ; items db "USE@" @@ -326,22 +326,22 @@ MenuData2_0x10251: ; 0x10251 ; 0x1026a Jumptable_1026a: ; 1026a - dw Function10311 - dw Function103fd - dw Function10364 - dw Function103c2 - dw Function10492_ret + dw UseItem + dw GiveItem + dw TossMenu + dw RegisterItem + dw QuitItemSubmenu ; 10274 -MenuDataHeader_0x10274: ; 0x10274 +MenuDataHeader_UsableItem: ; 0x10274 db $40 ; flags db 03, 13 ; start coords db 11, 19 ; end coords - dw MenuData2_0x1027c + dw .MenuData2 db 1 ; default option ; 0x1027c -MenuData2_0x1027c: ; 0x1027c +.MenuData2: ; 0x1027c db $c0 ; flags db 4 ; items db "USE@" @@ -351,21 +351,21 @@ MenuData2_0x1027c: ; 0x1027c ; 0x10291 Jumptable_10291: ; 10291 - dw Function10311 - dw Function103fd - dw Function10364 - dw Function10492_ret + dw UseItem + dw GiveItem + dw TossMenu + dw QuitItemSubmenu ; 10299 -MenuDataHeader_0x10299: ; 0x10299 +MenuDataHeader_UnusableItem: ; 0x10299 db %01000000 ; flags db 07, 13 ; start coords db 11, 19 ; end coords - dw MenuData2_0x102a1 + dw .MenuData2 db 1 ; default option ; 0x102a1 -MenuData2_0x102a1: ; 0x102a1 +.MenuData2: ; 0x102a1 db $c0 ; flags db 2 ; items db "USE@" @@ -373,19 +373,19 @@ MenuData2_0x102a1: ; 0x102a1 ; 0x102ac Jumptable_102ac: ; 102ac - dw Function10311 - dw Function10492_ret + dw UseItem + dw QuitItemSubmenu ; 102b0 -MenuDataHeader_0x102b0: ; 0x102b0 +MenuDataHeader_UnusableKeyItem: ; 0x102b0 db %01000000 ; flags db 05, 13 ; start coords db 11, 19 ; end coords - dw MenuData2_0x102b8 + dw .MenuData2 db 1 ; default option ; 0x102b8 -MenuData2_0x102b8: ; 0x102b8 +.MenuData2: ; 0x102b8 db $c0 ; flags db 3 ; items db "USE@" @@ -394,20 +394,20 @@ MenuData2_0x102b8: ; 0x102b8 ; 0x102c7 Jumptable_102c7: ; 102c7 - dw Function10311 - dw Function103c2 - dw Function10492_ret + dw UseItem + dw RegisterItem + dw QuitItemSubmenu ; 102cd -MenuDataHeader_0x102cd: ; 0x102cd +MenuDataHeader_HoldableKeyItem: ; 0x102cd db $40 ; flags db 03, 13 ; start coords db 11, 19 ; end coords - dw MenuData2_0x102d5 + dw .MenuData2 db 1 ; default option ; 0x102d5 -MenuData2_0x102d5: ; 0x102d5 +.MenuData2: ; 0x102d5 db $c0 ; flags db 4 ; items db "GIVE@" @@ -417,21 +417,21 @@ MenuData2_0x102d5: ; 0x102d5 ; 0x102ea Jumptable_102ea: ; 102ea - dw Function103fd - dw Function10364 - dw Function103c2 - dw Function10492_ret + dw GiveItem + dw TossMenu + dw RegisterItem + dw QuitItemSubmenu ; 102f2 -MenuDataHeader_0x102f2: ; 0x102f2 +MenuDataHeader_HoldableItem: ; 0x102f2 db $40 ; flags db 05, 13 ; start coords db 11, 19 ; end coords - dw MenuData2_0x102fa + dw .MenuData2 db 1 ; default option ; 0x102fa -MenuData2_0x102fa: ; 0x102fa +.MenuData2: ; 0x102fa db $c0 ; flags db 3 ; items db "GIVE@" @@ -440,12 +440,12 @@ MenuData2_0x102fa: ; 0x102fa ; 0x1030b Jumptable_1030b: ; 1030b - dw Function103fd - dw Function10364 - dw Function10492_ret + dw GiveItem + dw TossMenu + dw QuitItemSubmenu ; 10311 -Function10311: ; 10311 +UseItem: ; 10311 callba CheckItemMenu ld a, [wItemAttributeParamBuffer] ld hl, .jumptable @@ -464,7 +464,7 @@ Function10311: ; 10311 ; 1035c .Oak: ; 1032d (4:432d) - ld hl, UnknownText_0x10af3 + ld hl, Text_ThisIsntTheTime call Function10889 ret @@ -498,30 +498,30 @@ Function10311: ; 10311 ret ; 10364 (4:4364) -Function10364: ; 10364 - ld hl, UnknownText_0x10ae4 +TossMenu: ; 10364 + ld hl, Text_ThrowAwayHowMany call Function10889 callba Function24fbf push af call ExitMenu pop af - jr c, .asm_1039c - call Function10a1d - ld hl, UnknownText_0x10ae9 + jr c, .finish + call Pack_GetItemName + ld hl, Text_ConfirmThrowAway call MenuTextBox call YesNoBox push af call ExitMenu pop af - jr c, .asm_1039c + jr c, .finish ld hl, NumItems - ld a, [wd107] + ld a, [ItemCountBuffer] call TossItem - call Function10a1d - ld hl, UnknownText_0x10aee + call Pack_GetItemName + ld hl, Text_ThrewAway call Function10889 -.asm_1039c +.finish ret ; 1039d @@ -538,23 +538,23 @@ Function1039d: ; 1039d .asm_103aa xor a ld [wBallsPocketCursor], a - ld [wd0e1], a + ld [wBallsPocketScrollPosition], a ret .asm_103b2 xor a ld [wItemsPocketCursor], a - ld [wd0df], a + ld [wItemsPocketScrollPosition], a ret .asm_103ba xor a ld [wKeyItemsPocketCursor], a - ld [wd0e0], a + ld [wKeyItemsPocketScrollPosition], a ret ; 103c2 -Function103c2: ; 103c2 +RegisterItem: ; 103c2 callba CheckSelectableItem ld a, [wItemAttributeParamBuffer] and a @@ -564,27 +564,27 @@ Function103c2: ; 103c2 rrca and $c0 ld b, a - ld a, [wd107] + ld a, [ItemCountBuffer] inc a and $3f or b ld [WhichRegisteredItem], a ld a, [CurItem] ld [RegisteredItem], a - call Function10a1d + call Pack_GetItemName ld de, SFX_FULL_HEAL call WaitPlaySFX - ld hl, UnknownText_0x10afd + ld hl, Text_RegisteredItem call Function10889 ret .asm_103f6 - ld hl, UnknownText_0x10b02 + ld hl, Text_CantRegister call Function10889 ret ; 103fd -Function103fd: ; 103fd +GiveItem: ; 103fd ld a, [PartyCount] and a jp z, Function10486 @@ -652,7 +652,7 @@ TextJump_AnEGGCantHoldAnItem: ; 0x1048d db "@" ; 0x10492 -Function10492_ret: ; 10492 +QuitItemSubmenu: ; 10492 ret ; 10493 @@ -661,18 +661,18 @@ BattlePack: ; 10493 ld hl, Options set 4, [hl] call Function1068a -.asm_1049b +.loop call JoyTextDelay ld a, [wJumptableIndex] bit 7, a - jr nz, .asm_104ad + jr nz, .end call Function104b9 call DelayFrame - jr .asm_1049b + jr .loop -.asm_104ad +.end ld a, [wcf65] - ld [wd0d6], a + ld [wLastPocket], a ld hl, Options res 4, [hl] ret @@ -723,11 +723,11 @@ Function104fa: ; 104fa (4:44fa) call CopyMenuDataHeader ld a, [wItemsPocketCursor] ld [wMenuCursorBuffer], a - ld a, [wd0df] - ld [wd0e4], a + ld a, [wItemsPocketScrollPosition] + ld [wMenuScrollPosition], a call HandleScrollingMenu - ld a, [wd0e4] - ld [wd0df], a + ld a, [wMenuScrollPosition] + ld [wItemsPocketScrollPosition], a ld a, [MenuSelection2] ld [wItemsPocketCursor], a ld b, $7 @@ -751,11 +751,11 @@ Function10539: ; 10539 (4:4539) call CopyMenuDataHeader ld a, [wKeyItemsPocketCursor] ld [wMenuCursorBuffer], a - ld a, [wd0e0] - ld [wd0e4], a + ld a, [wKeyItemsPocketScrollPosition] + ld [wMenuScrollPosition], a call HandleScrollingMenu - ld a, [wd0e4] - ld [wd0e0], a + ld a, [wMenuScrollPosition] + ld [wKeyItemsPocketScrollPosition], a ld a, [MenuSelection2] ld [wKeyItemsPocketCursor], a ld b, $3 @@ -773,7 +773,7 @@ Function10566: ; 10566 (4:4566) xor a ld [hBGMapMode], a call WaitBGMap_DrawPackGFX - ld hl, UnknownText_0x10b0c + ld hl, Text_PackEmptyString call Function10889 call Function10866 ret @@ -802,11 +802,11 @@ Function105a6: ; 105a6 (4:45a6) call CopyMenuDataHeader ld a, [wBallsPocketCursor] ld [wMenuCursorBuffer], a - ld a, [wd0e1] - ld [wd0e4], a + ld a, [wBallsPocketScrollPosition] + ld [wMenuScrollPosition], a call HandleScrollingMenu - ld a, [wd0e4] - ld [wd0e1], a + ld a, [wMenuScrollPosition] + ld [wBallsPocketScrollPosition], a ld a, [MenuSelection2] ld [wBallsPocketCursor], a ld b, $1 @@ -898,7 +898,7 @@ Function105dc: ; 105dc (4:45dc) .Oak: ; 10645 (4:4645) - ld hl, UnknownText_0x10af3 + ld hl, Text_ThisIsntTheTime call Function10889 ret @@ -951,7 +951,7 @@ Function105dc: ; 105dc (4:45dc) Function1068a: ; 1068a xor a ld [wJumptableIndex], a - ld a, [wd0d6] + ld a, [wLastPocket] and $3 ld [wcf65], a inc a @@ -1008,33 +1008,33 @@ Jumptable_106d1: ; 106d1 (4:46d1) call CopyMenuDataHeader ld a, [wItemsPocketCursor] ld [wMenuCursorBuffer], a - ld a, [wd0df] - ld [wd0e4], a + ld a, [wItemsPocketScrollPosition] + ld [wMenuScrollPosition], a call HandleScrollingMenu - ld a, [wd0e4] - ld [wd0df], a + ld a, [wMenuScrollPosition] + ld [wItemsPocketScrollPosition], a ld a, [MenuSelection2] ld [wItemsPocketCursor], a ret .KeyItemsPocket: ; 106ff (4:46ff) - ld a, $2 + ld a, 2 call InitPocket ld hl, MenuDataHeader_0x10a97 call CopyMenuDataHeader ld a, [wKeyItemsPocketCursor] ld [wMenuCursorBuffer], a - ld a, [wd0e0] - ld [wd0e4], a + ld a, [wKeyItemsPocketScrollPosition] + ld [wMenuScrollPosition], a call HandleScrollingMenu - ld a, [wd0e4] - ld [wd0e0], a + ld a, [wMenuScrollPosition] + ld [wKeyItemsPocketScrollPosition], a ld a, [MenuSelection2] ld [wKeyItemsPocketCursor], a ret .TMHMPocket: ; 10726 (4:4726) - ld a, $3 + ld a, 3 call InitPocket call WaitBGMap_DrawPackGFX callba Function2c76f @@ -1043,17 +1043,17 @@ Jumptable_106d1: ; 106d1 (4:46d1) ret .BallsPocket: ; 1073b (4:473b) - ld a, $1 + ld a, 1 call InitPocket ld hl, MenuDataHeader_0x10ac7 call CopyMenuDataHeader ld a, [wBallsPocketCursor] ld [wMenuCursorBuffer], a - ld a, [wd0e1] - ld [wd0e4], a + ld a, [wBallsPocketScrollPosition] + ld [wMenuScrollPosition], a call HandleScrollingMenu - ld a, [wd0e4] - ld [wd0e1], a + ld a, [wMenuScrollPosition] + ld [wBallsPocketScrollPosition], a ld a, [MenuSelection2] ld [wBallsPocketCursor], a ret @@ -1120,17 +1120,17 @@ Function1076f: ; 1076f ret ; 107bb -Function107bb: ; 107bb +TutorialPack: ; 107bb call Function106a5 ld a, [InputType] or a - jr z, .asm_107ca + jr z, .loop callba _DudeAutoInput_RightA -.asm_107ca +.loop call Function107d7 call Function1076f - jr c, .asm_107ca + jr c, .loop xor a ld [wcf66], a ret @@ -1138,13 +1138,13 @@ Function107bb: ; 107bb Function107d7: ; 107d7 ld a, [wJumptableIndex] - ld hl, Jumptable_107e1 + ld hl, .jumptable call Function1086b jp [hl] ; 107e1 -Jumptable_107e1: ; 107e1 (4:47e1) +.jumptable: ; 107e1 (4:47e1) dw Function107e9 dw Function1083b dw Function10807 @@ -1161,22 +1161,22 @@ MenuDataHeader_0x107ef: ; 0x107ef db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw MenuData2_0x107f7 + dw .MenuData2 db 1 ; default option ; 0x107f7 -MenuData2_0x107f7: ; 0x107f7 +.MenuData2: ; 0x107f7 db $ae ; flags db 5, 8 ; rows, columns db 2 ; horizontal spacing dbw 0, OTPartyMons dba PlaceMenuItemName dba PlaceMenuItemQuantity - dba Function244c3 + dba UpdateItemDescription ; 10807 Function10807: ; 10807 (4:4807) - ld a, $2 + ld a, 2 ld hl, MenuDataHeader_0x1080e jr Function1085a ; 1080e (4:480e) @@ -1185,22 +1185,22 @@ MenuDataHeader_0x1080e: ; 0x1080e db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw MenuData2_0x10816 + dw .MenuData2 db 1 ; default option ; 0x10816 -MenuData2_0x10816: ; 0x10816 +.MenuData2: ; 0x10816 db $ae ; flags db 5, 8 ; rows, columns db 1 ; horizontal spacing dbw 0, OTPartyMon1Exp + 2 dba PlaceMenuItemName dba PlaceMenuItemQuantity - dba Function244c3 + dba UpdateItemDescription ; 10826 Function10826: ; 10826 (4:4826) - ld a, $3 + ld a, 3 call InitPocket call WaitBGMap_DrawPackGFX callba Function2c76f @@ -1209,7 +1209,7 @@ Function10826: ; 10826 (4:4826) ret Function1083b: ; 1083b (4:483b) - ld a, $1 + ld a, 1 ld hl, MenuDataHeader_0x10842 jr Function1085a ; 10842 (4:4842) @@ -1218,18 +1218,18 @@ MenuDataHeader_0x10842: ; 0x10842 db $40 ; flags db 01, 07 ; start coords db 11, 19 ; end coords - dw MenuData2_0x1084a + dw .MenuData2 db 1 ; default option ; 0x1084a -MenuData2_0x1084a: ; 0x1084a +.MenuData2: ; 0x1084a db $ae ; flags db 5, 8 ; rows, columns db 2 ; horizontal spacing dbw 0, OTPartyMon1CaughtGender dba PlaceMenuItemName dba PlaceMenuItemQuantity - dba Function244c3 + dba UpdateItemDescription ; 1085a Function1085a: ; 1085a (4:485a) @@ -1374,7 +1374,7 @@ Function108d4: ; 108d4 (4:48d4) ret .asm_10923 callba Function2490c - ld hl, UnknownText_0x10b07 + ld hl, Text_MoveItemWhere call Function10889 scf ret @@ -1410,13 +1410,19 @@ Function10955: ; 10955 ld bc, $60 tiles ld a, BANK(PackMenuGFX) call FarCopyBytes + +; Background (blue if male, pink if female) hlcoord 0, 1 ld bc, 11 * SCREEN_WIDTH ld a, $24 call ByteFill + +; This is where the items themselves will be listed. hlcoord 5, 1 lb bc, 11, 15 call ClearBox + +; ◀▶ POCKET ▼▲ ITEMS hlcoord 0, 0 ld a, $28 ld c, SCREEN_WIDTH @@ -1425,31 +1431,34 @@ Function10955: ; 10955 inc a dec c jr nz, .loop + call DrawPocketName - call Function109a5 - hlcoord 0, 12 - lb bc, 4, 18 + call PlacePackGFX + +; Place the textbox for displaying the item description + hlcoord 0, SCREEN_HEIGHT - 4 - 2 + lb bc, 4, SCREEN_WIDTH - 2 call TextBox call EnableLCD call DrawPackGFX ret ; 109a5 -Function109a5: ; 109a5 +PlacePackGFX: ; 109a5 hlcoord 0, 3 ld a, $50 - ld de, 15 + ld de, SCREEN_WIDTH - 5 ld b, 3 -.asm_109af +.row ld c, 5 -.asm_109b1 +.column ld [hli], a inc a dec c - jr nz, .asm_109b1 + jr nz, .column add hl, de dec b - jr nz, .asm_109af + jr nz, .row ret ; 109bb @@ -1487,21 +1496,33 @@ DrawPocketName: ; 109bb ; 109e1 .tilemap: ; 109e1 - db $00, $04, $04, $04, $01, $06, $07, $08, $09, $0a, $02, $05, $05, $05, $03 - db $00, $04, $04, $04, $01, $15, $16, $17, $18, $19, $02, $05, $05, $05, $03 - db $00, $04, $04, $04, $01, $0b, $0c, $0d, $0e, $0f, $02, $05, $05, $05, $03 - db $00, $04, $04, $04, $01, $10, $11, $12, $13, $14, $02, $05, $05, $05, $03 + db $00, $04, $04, $04, $01 ; top border + db $06, $07, $08, $09, $0a ; Items + db $02, $05, $05, $05, $03 ; bottom border + + db $00, $04, $04, $04, $01 ; top border + db $15, $16, $17, $18, $19 ; Balls + db $02, $05, $05, $05, $03 ; bottom border + + db $00, $04, $04, $04, $01 ; top border + db $0b, $0c, $0d, $0e, $0f ; Key Items + db $02, $05, $05, $05, $03 ; bottom border + + db $00, $04, $04, $04, $01 ; top border + db $10, $11, $12, $13, $14 ; TM/HM + db $02, $05, $05, $05, $03 ; bottom border ; 10a1d -Function10a1d: ; 10a1d +Pack_GetItemName: ; 10a1d ld a, [CurItem] - ld [wd265], a + ld [wNamedObjectIndexBuffer], a call GetItemName call CopyName1 ret ; 10a2a -Function10a2a: ; 10a2a +Pack_ClearTilemap: ; 10a2a +; unreferenced hlcoord 0, 0 ld bc, SCREEN_WIDTH * SCREEN_HEIGHT ld a, " " @@ -1540,7 +1561,7 @@ MenuData2_0x10a57: ; 0x10a57 dbw 0, NumItems dba PlaceMenuItemName dba PlaceMenuItemQuantity - dba Function244c3 + dba UpdateItemDescription ; 10a67 MenuDataHeader_0x10a67: ; 0x10a67 @@ -1558,7 +1579,7 @@ MenuData2_0x10a6f: ; 0x10a6f dbw 0, NumItems dba PlaceMenuItemName dba PlaceMenuItemQuantity - dba Function244c3 + dba UpdateItemDescription ; 10a7f MenuDataHeader_0x10a7f: ; 0x10a7f @@ -1576,7 +1597,7 @@ MenuData2_0x10a87: ; 0x10a87 dbw 0, NumKeyItems dba PlaceMenuItemName dba PlaceMenuItemQuantity - dba Function244c3 + dba UpdateItemDescription ; 10a97 MenuDataHeader_0x10a97: ; 0x10a97 @@ -1594,7 +1615,7 @@ MenuData2_0x10a9f: ; 0x10a9f dbw 0, NumKeyItems dba PlaceMenuItemName dba PlaceMenuItemQuantity - dba Function244c3 + dba UpdateItemDescription ; 10aaf MenuDataHeader_0x10aaf: ; 0x10aaf @@ -1612,7 +1633,7 @@ MenuData2_0x10ab7: ; 0x10ab7 dbw 0, NumBalls dba PlaceMenuItemName dba PlaceMenuItemQuantity - dba Function244c3 + dba UpdateItemDescription ; 10ac7 MenuDataHeader_0x10ac7: ; 0x10ac7 @@ -1630,34 +1651,34 @@ MenuData2_0x10acf: ; 0x10acf dbw 0, NumBalls dba PlaceMenuItemName dba PlaceMenuItemQuantity - dba Function244c3 + dba UpdateItemDescription ; 10adf -UnknownText_0x10adf: ; 0x10adf +Text_PackNoItems: ; 0x10adf ; No items. text_jump UnknownText_0x1c0b9a db "@" ; 0x10ae4 -UnknownText_0x10ae4: ; 0x10ae4 +Text_ThrowAwayHowMany: ; 0x10ae4 ; Throw away how many? text_jump UnknownText_0x1c0ba5 db "@" ; 0x10ae9 -UnknownText_0x10ae9: ; 0x10ae9 +Text_ConfirmThrowAway: ; 0x10ae9 ; Throw away @ @ (S)? text_jump UnknownText_0x1c0bbb db "@" ; 0x10aee -UnknownText_0x10aee: ; 0x10aee +Text_ThrewAway: ; 0x10aee ; Threw away @ (S). text_jump UnknownText_0x1c0bd8 db "@" ; 0x10af3 -UnknownText_0x10af3: ; 0x10af3 +Text_ThisIsntTheTime: ; 0x10af3 ; OAK: ! This isn't the time to use that! text_jump UnknownText_0x1c0bee db "@" @@ -1669,25 +1690,25 @@ TextJump_YouDontHaveAPkmn: ; 0x10af8 db "@" ; 0x10afd -UnknownText_0x10afd: ; 0x10afd +Text_RegisteredItem: ; 0x10afd ; Registered the @ . text_jump UnknownText_0x1c0c2e db "@" ; 0x10b02 -UnknownText_0x10b02: ; 0x10b02 +Text_CantRegister: ; 0x10b02 ; You can't register that item. text_jump UnknownText_0x1c0c45 db "@" ; 0x10b07 -UnknownText_0x10b07: ; 0x10b07 +Text_MoveItemWhere: ; 0x10b07 ; Where should this be moved to? text_jump UnknownText_0x1c0c63 db "@" ; 0x10b0c -UnknownText_0x10b0c: ; 0x10b0c +Text_PackEmptyString: ; 0x10b0c ; text_jump UnknownText_0x1c0c83 db "@" diff --git a/engine/pokecenter_pc.asm b/engine/pokecenter_pc.asm index 4d31109ac..4d296aab2 100755 --- a/engine/pokecenter_pc.asm +++ b/engine/pokecenter_pc.asm @@ -590,9 +590,9 @@ Function15985: ; 0x15985 ld a, [wd0d7] ld [wMenuCursorBuffer], a ld a, [wd0dd] - ld [wd0e4], a + ld [wMenuScrollPosition], a call HandleScrollingMenu - ld a, [wd0e4] + ld a, [wMenuScrollPosition] ld [wd0dd], a ld a, [MenuSelection2] ld [wd0d7], a @@ -659,7 +659,7 @@ MenuData15a08: ; 0x15a08 dbw 0, PCItems dba PlaceMenuItemName dba PlaceMenuItemQuantity - dba Function244c3 + dba UpdateItemDescription PC_DisplayText: ; 15a20 call MenuTextBox -- cgit v1.2.3 From f3c8f7520975cbfca8be57b0adb855bf42368d83 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 23 Nov 2015 21:19:53 -0500 Subject: bug contest judgint labels --- engine/npctrade.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engine') diff --git a/engine/npctrade.asm b/engine/npctrade.asm index 22ca490d6..71ab03ee3 100755 --- a/engine/npctrade.asm +++ b/engine/npctrade.asm @@ -519,7 +519,7 @@ TradedForText: ; 0xfcf80 ret .done - ; sound0x0A + ; sound_dex_fanfare_80_109 ; interpret_data text_jump UnknownText_0x1bd445 db "@" -- cgit v1.2.3 From 6c248953b79237de98a177b7820ed7b9c4e96880 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 24 Nov 2015 10:35:13 -0500 Subject: Mobile functions for fixed-phrase selection --- engine/sprites.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engine') diff --git a/engine/sprites.asm b/engine/sprites.asm index bf82659e8..f12ed1de8 100755 --- a/engine/sprites.asm +++ b/engine/sprites.asm @@ -889,7 +889,7 @@ endr ld a, [hli] ld h, [hl] ld l, a - ld de, $fff0 + ld de, -$10 add hl, de ld e, l ld d, h -- cgit v1.2.3 From f599e477fc3306dbca9cad4aeadfe7a66b84c7bc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 24 Nov 2015 15:18:44 -0500 Subject: Partial interpretation of battle tower trainer data --- engine/save.asm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'engine') diff --git a/engine/save.asm b/engine/save.asm index 68189b7d1..20f59c042 100644 --- a/engine/save.asm +++ b/engine/save.asm @@ -288,13 +288,13 @@ SaveGameData_: ; 14c10 callba BackupPartyMonMail callba BackupMobileEventIndex callba SaveRTC - ld a, BANK(sSaveType) + ld a, BANK(sBattleTowerChallengeState) call GetSRAMBank - ld a, [sSaveType] + ld a, [sBattleTowerChallengeState] cp $4 jr nz, .ok xor a - ld [sSaveType], a + ld [sBattleTowerChallengeState], a .ok call CloseSRAM ret @@ -438,10 +438,10 @@ Unknown_14d2c: ; 14d2c ; 14d5c Function14d5c: ; 14d5c - ld a, BANK(sSaveType) + ld a, BANK(sBattleTowerChallengeState) call GetSRAMBank xor a - ld [sSaveType], a + ld [sBattleTowerChallengeState], a jp CloseSRAM ; 14d68 @@ -788,13 +788,13 @@ LoadPlayerData: ; 14fd7 (5:4fd7) ld bc, wMapDataEnd - wMapData call CopyBytes call CloseSRAM - ld a, BANK(sSaveType) + ld a, BANK(sBattleTowerChallengeState) call GetSRAMBank - ld a, [sSaveType] + ld a, [sBattleTowerChallengeState] cp $4 jr nz, .not_4 ld a, $3 - ld [sSaveType], a + ld [sBattleTowerChallengeState], a .not_4 call CloseSRAM ret -- cgit v1.2.3 From 0c6f94effd1cb4278b0c0a2f02117055a69537e1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 25 Nov 2015 10:26:30 -0500 Subject: Final relabeling before merge --- engine/link.asm | 26 +++++++++++++------------- engine/map_objects.asm | 2 +- engine/menu.asm | 6 +++--- engine/pokecenter_pc.asm | 14 +++++++------- engine/predef.asm | 2 +- engine/scripting.asm | 16 ++++++++-------- engine/timeset.asm | 4 ++-- 7 files changed, 35 insertions(+), 35 deletions(-) (limited to 'engine') diff --git a/engine/link.asm b/engine/link.asm index 9d21104f8..8ba1702e9 100755 --- a/engine/link.asm +++ b/engine/link.asm @@ -1378,7 +1378,7 @@ Function28926: ; 28926 hlcoord 0, 15 ld b, $1 ld c, $12 - call Function28eef + call Predef_LinkTextbox hlcoord 2, 16 ld de, String28ab4 call PlaceString @@ -1487,7 +1487,7 @@ Function28926: ; 28926 hlcoord 0, 12 ld b, $4 ld c, $12 - call Function28eef + call Predef_LinkTextbox callba Function4d354 ld hl, UnknownText_0x28aaf bccoord 1, 14 @@ -1509,7 +1509,7 @@ Function28926: ; 28926 hlcoord 0, 12 ld b, $4 ld c, $12 - call Function28eef + call Predef_LinkTextbox callba Function4d354 ld hl, UnknownText_0x28ac4 bccoord 1, 14 @@ -1519,7 +1519,7 @@ Function28926: ; 28926 hlcoord 0, 12 ld b, $4 ld c, $12 - call Function28eef + call Predef_LinkTextbox hlcoord 1, 14 ld de, String28ece call PlaceString @@ -1666,7 +1666,7 @@ Function28b87: ; 28b87 hlcoord 0, 12 ld b, $4 ld c, $12 - call Function28eef + call Predef_LinkTextbox callba Function4d354 ld a, [wd002] ld hl, PartySpecies @@ -1695,7 +1695,7 @@ Function28b87: ; 28b87 hlcoord 10, 7 ld b, $3 ld c, $7 - call Function28eef + call Predef_LinkTextbox ld de, String28eab hlcoord 12, 8 call PlaceString @@ -1735,7 +1735,7 @@ Function28b87: ; 28b87 hlcoord 0, 12 ld b, 4 ld c, 18 - call Function28eef + call Predef_LinkTextbox hlcoord 1, 14 ld de, String28ece call PlaceString @@ -1752,7 +1752,7 @@ Function28b87: ; 28b87 hlcoord 0, 12 ld b, 4 ld c, 18 - call Function28eef + call Predef_LinkTextbox hlcoord 1, 14 ld de, String28ece call PlaceString @@ -1982,7 +1982,7 @@ Function28b87: ; 28b87 hlcoord 0, 12 ld b, 4 ld c, 18 - call Function28eef + call Predef_LinkTextbox hlcoord 1, 14 ld de, String28ebd call PlaceString @@ -2019,10 +2019,10 @@ String28ece: ; 28ece next "was canceled!@" -Function28eef: ; 28eef +Predef_LinkTextbox: ; 28eef ld d, h ld e, l - callba Function16d6ca + callba LinkTextbox ret ; 28ef8 @@ -2041,11 +2041,11 @@ Function28f09: ; 28f09 hlcoord 0, 0 ld b, 6 ld c, 18 - call Function28eef + call Predef_LinkTextbox hlcoord 0, 8 ld b, 6 ld c, 18 - call Function28eef + call Predef_LinkTextbox callba Functionfb60d ret ; 28f24 diff --git a/engine/map_objects.asm b/engine/map_objects.asm index 168c5389c..13e4f73bf 100644 --- a/engine/map_objects.asm +++ b/engine/map_objects.asm @@ -2736,7 +2736,7 @@ Function5602: ; 5602, called at battle start ld a, PLAYER call Function5629 ; respawn player - ld a, [wd459] + ld a, [wBattleScriptFlags] bit 7, a jr z, .ok diff --git a/engine/menu.asm b/engine/menu.asm index a1ec30b7a..6978a0e54 100755 --- a/engine/menu.asm +++ b/engine/menu.asm @@ -4,7 +4,7 @@ Function2400e:: ; 2400e rst FarCall call Function24085 call UpdateSprites - call Function321c + call ApplyTilemap call Function2408f ret ; 24022 @@ -16,7 +16,7 @@ Function24022:: ; 24022 call Function24085 callba MobileTextBorder call UpdateSprites - call Function321c + call ApplyTilemap call Function2408f ret ; 2403c @@ -28,7 +28,7 @@ Function2403c:: ; 2403c call Function24085 callba MobileTextBorder call UpdateSprites - call Function321c + call ApplyTilemap call Function2411a ld hl, wcfa5 set 7, [hl] diff --git a/engine/pokecenter_pc.asm b/engine/pokecenter_pc.asm index 4d296aab2..064b35a6c 100755 --- a/engine/pokecenter_pc.asm +++ b/engine/pokecenter_pc.asm @@ -188,7 +188,7 @@ _KrissHousePC: ; 156d9 and a jr nz, .asm_156f9 call OverworldTextModeSwitch - call Function321c + call ApplyTilemap call UpdateSprites call PC_PlayShutdownSound ld c, $0 @@ -466,16 +466,16 @@ UnknownText_0x158c7: ; 0x158c7 Function158cc: ; 0x158cc - ld a, [wc2ce] + ld a, [wSpriteUpdatesEnabled] push af ld a, $0 - ld [wc2ce], a + ld [wSpriteUpdatesEnabled], a callba CheckItemMenu ld a, [wItemAttributeParamBuffer] ld hl, .jumptable rst JumpTable pop af - ld [wc2ce], a + ld [wSpriteUpdatesEnabled], a ret ; 0x158e7 @@ -577,10 +577,10 @@ Function15985: ; 0x15985 xor a ld [wd0e3], a .asm_15989 - ld a, [wc2ce] + ld a, [wSpriteUpdatesEnabled] push af ld a, $0 - ld [wc2ce], a + ld [wSpriteUpdatesEnabled], a ld hl, MenuData15a08 call CopyMenuDataHeader hlcoord 0, 0 @@ -597,7 +597,7 @@ Function15985: ; 0x15985 ld a, [MenuSelection2] ld [wd0d7], a pop af - ld [wc2ce], a + ld [wSpriteUpdatesEnabled], a ld a, [wd0e3] and a jr nz, .asm_159d8 diff --git a/engine/predef.asm b/engine/predef.asm index c089215a6..680a6b4a0 100644 --- a/engine/predef.asm +++ b/engine/predef.asm @@ -46,7 +46,7 @@ PredefPointers:: ; 856b add_predef CalcPkmnStatC add_predef CanLearnTMHMMove add_predef GetTMHMMove - add_predef Function28eef ; $ 10 + add_predef Predef_LinkTextbox ; $ 10 add_predef PrintMoveDesc add_predef UpdatePlayerHUD add_predef FillBox diff --git a/engine/scripting.asm b/engine/scripting.asm index 945368e2b..c80343a4c 100644 --- a/engine/scripting.asm +++ b/engine/scripting.asm @@ -929,7 +929,7 @@ Script_winlosstext: ; 9714c Script_talkaftercancel: ; 97163 ; script command 0x66 - ld a, [wd04d] + ld a, [wRunningTrainerBattleScript] and a ret z jp Script_end @@ -940,7 +940,7 @@ Script_talkaftercheck: ; 9716b ld a, 1 ld [ScriptVar], a - ld a, [wd04d] + ld a, [wRunningTrainerBattleScript] and a ret nz xor a @@ -1485,7 +1485,7 @@ Script_battlecheck: ; 973fb ; script command 0x5b xor a - ld [wd459], a + ld [wBattleScriptFlags], a ret ; 97400 @@ -1493,7 +1493,7 @@ Script_loadtrainerdata: ; 97400 ; script command 0x5c ld a, (1 << 7) | 1 - ld [wd459], a + ld [wBattleScriptFlags], a ld a, [WalkingDirection] ld [OtherTrainerClass], a ld a, [FacingDirection] @@ -1508,7 +1508,7 @@ Script_loadpokedata: ; 97412 ; level (DecimalParam) ld a, (1 << 7) - ld [wd459], a + ld [wBattleScriptFlags], a call GetScriptByte ld [TempWildMonSpecies], a call GetScriptByte @@ -1523,7 +1523,7 @@ Script_loadtrainer: ; 97424 ; trainer_id (TrainerIdParam) ld a, (1 << 7) | 1 - ld [wd459], a + ld [wBattleScriptFlags], a call GetScriptByte ld [OtherTrainerClass], a call GetScriptByte @@ -1557,7 +1557,7 @@ Script_catchtutorial: ; 97447 Script_returnafterbattle: ; 97459 ; script command 0x60 - ld hl, wd459 + ld hl, wBattleScriptFlags ld d, [hl] ld [hl], $0 ld a, [wBattleResult] @@ -1589,7 +1589,7 @@ Script_reloadmap: ; 97491 ; script command 0x7b xor a - ld [wd459], a + ld [wBattleScriptFlags], a ld a, MAPSETUP_RELOADMAP ld [hMapEntryMethod], a ld a, $1 diff --git a/engine/timeset.asm b/engine/timeset.asm index 0b0f12718..1f82da884 100755 --- a/engine/timeset.asm +++ b/engine/timeset.asm @@ -6,7 +6,7 @@ InitClock: ; 90672 (24:4672) ld [hInMenu], a ld a, $0 - ld [wc2ce], a + ld [wSpriteUpdatesEnabled], a ld a, $10 ld [MusicFade], a ld a, MUSIC_NONE % $100 @@ -436,7 +436,7 @@ Special_SetDayOfWeek: ; 90913 ld [hl], $f5 hlcoord 10, 5 call Function909de - call Function321c + call ApplyTilemap ld c, 10 call DelayFrames .asm_9096a -- cgit v1.2.3 From 4bcd71e3227181baa536357af3d87a8d02af3890 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 26 Nov 2015 21:06:32 -0500 Subject: Fix some labels in engine/timeofdaypals.asm --- engine/map_setup.asm | 4 ++-- engine/specials.asm | 6 +++--- engine/timeofdaypals.asm | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) (limited to 'engine') diff --git a/engine/map_setup.asm b/engine/map_setup.asm index ef1ad715e..7444c7fbe 100644 --- a/engine/map_setup.asm +++ b/engine/map_setup.asm @@ -272,8 +272,8 @@ MapSetupCommands: ; 15440 dba LoadMapAttributes ; 1a dba LoadMapAttributes_SkipPeople ; 1b dba ClearBGPalettes ; 1c - dba RotatePalettesRightPalettes ; 1d - dba RotatePalettesLeftPalettes ; 1e + dba FadeOutPalettes ; 1d + dba FadeInPalettes ; 1e dba GetCoordOfUpperLeftCorner ; 1f dba RestoreFacingAfterWarp ; 20 dba SpawnInFacingDown ; 21 diff --git a/engine/specials.asm b/engine/specials.asm index e2b4e6195..09edbb263 100644 --- a/engine/specials.asm +++ b/engine/specials.asm @@ -66,11 +66,11 @@ SpecialsPointers:: ; c029 add_special Special_CardFlip add_special Special_DummyNonfunctionalGameCornerGame add_special Special_ClearBGPalettesBufferScreen - add_special RotatePalettesRightPalettes + add_special FadeOutPalettes add_special Special_BattleTowerFade add_special Special_FadeBlackQuickly - add_special RotatePalettesLeftPalettes - add_special Special_RotatePalettesLeftQuickly + add_special FadeInPalettes + add_special Special_FadeInQuickly add_special Special_ReloadSpritesNoPalettes add_special ClearBGPalettes add_special UpdateTimePals diff --git a/engine/timeofdaypals.asm b/engine/timeofdaypals.asm index b977772eb..368636758 100644 --- a/engine/timeofdaypals.asm +++ b/engine/timeofdaypals.asm @@ -116,7 +116,7 @@ _UpdateTimePals:: ; 8c070 ret ; 8c079 -RotatePalettesLeftPalettes:: ; 8c079 +FadeInPalettes:: ; 8c079 ld c, $12 call GetTimePalFade ld b, $4 @@ -124,7 +124,7 @@ RotatePalettesLeftPalettes:: ; 8c079 ret ; 8c084 -RotatePalettesRightPalettes:: ; 8c084 +FadeOutPalettes:: ; 8c084 call Function8c0c1 ld c, $9 call GetTimePalFade @@ -150,7 +150,7 @@ endr ret ; 8c0ab -Special_RotatePalettesLeftQuickly: ; 8c0ab +Special_FadeInQuickly: ; 8c0ab ld c, $0 call GetTimePalFade ld b, $4 -- cgit v1.2.3