From 1da2a7a5c4cf4e0aa19218c9a1afa4a1e1e39ec0 Mon Sep 17 00:00:00 2001 From: yenatch Date: Mon, 8 Jul 2013 01:35:41 -0400 Subject: Outdoor sprites and sprite constants --- main.asm | 1020 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 1018 insertions(+), 2 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index 88a3e193d..60622550c 100644 --- a/main.asm +++ b/main.asm @@ -8756,8 +8756,10 @@ root set root+1 SECTION "bank5",DATA,BANK[$5] + INCBIN "baserom.gbc", $14000, $14032 - $14000 + GetTimeOfDay: ; 14032 ; get time of day based on the current hour ld a, [hHours] ; hour @@ -8791,7 +8793,1021 @@ TimesOfDay: ; 14044 db 24, NITE ; 1404c -INCBIN "baserom.gbc", $1404c, $152ab - $1404c + +INCBIN "baserom.gbc", $1404c, $14183 - $1404c + + +GetPlayerSprite: ; 14183 +; Get Chris or Kris's sprite. + + ld hl, .Chris + ld a, [$d45b] + 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, .asm_141ac + 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 .asm_141ad + +.asm_141ac + ld a, [hl] + +.asm_141ad + ld [UsedSprites + 0], a + ld [$d4d6], a + ld [$d71f], 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 + + +; 141c9 + call $2c8a + call $22ee + jr z, .outdoor + + call IndoorSpriteGFX + ret + +.outdoor + call OutdoorSpriteGFX + ret +; 141d9 + + +IndoorSpriteGFX: ; 141d9 + ld hl, MapObjects + 1 * OBJECT_LENGTH + 1 ; sprite + 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 + + +OutdoorSpriteGFX: ; 141ee + ld a, [MapGroup] + dec a + ld c, a + ld b, 0 + ld hl, OutdoorSprites + add hl, bc + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld c, $17 +.loop + push bc + ld a, [hli] + call AddSpriteGFX + pop bc + dec c + jr nz, .loop + ret +; 14209 + + +INCBIN "baserom.gbc", $14209, $1423c - $14209 + + +GetSprite: ; 1423c + call GetMonSprite + ret c + + ld hl, $4736 + dec a + ld c, a + ld b, 0 + ld a, 6 + call AddNTimes + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + swap a + ld c, a + ld b, [hl] + ld a, [hli] + 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, .BreedMon1 + cp SPRITE_DAYCARE_MON_2 + jr z, .BreedMon2 + 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 + +.BreedMon1 + ld a, [BreedMon1Species] + jr .Mon + +.BreedMon2 + ld a, [BreedMon2Species] + +.Mon + ld e, a + and a + jr z, .asm_1429f + + ld a, $23 + ld hl, $682b + rst FarCall ; callba LoadMonSprite + + 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 + +.asm_1429f + ld a, 1 + ld l, 1 + ld h, 0 + and a + ret +; 142a7 + + +INCBIN "baserom.gbc", $142a7, $142e5 - $142a7 + + +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, $1f +.loop + ld a, [hl] + cp b + jr z, .exists + and a + jr z, .new + inc hl + inc hl + 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 + + ld hl, UsedSprites + ld b, $20 +.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 + + +INCBIN "baserom.gbc", $1431e, $14495 - $1431e + + +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 + + +INCBIN "baserom.gbc", $14736, $152ab - $14736 + BlackoutPoints: ; 0x152ab db GROUP_KRISS_HOUSE_2F, MAP_KRISS_HOUSE_2F, 3, 3 @@ -14992,7 +16008,7 @@ WaterToLandSprite: ; 803f9 push bc ld a, PLAYER_NORMAL ld [PlayerState], a - call $e4a ; GetPlayerSprite + call $e4a ; UpdateSprites pop bc ret ; 80404 -- cgit v1.2.3 From bf2a4b8a845f06409fa99088e6d7c0ac10c0e01b Mon Sep 17 00:00:00 2001 From: yenatch Date: Fri, 12 Jul 2013 16:18:52 -0400 Subject: Sprite headers --- main.asm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index 60622550c..910476026 100644 --- a/main.asm +++ b/main.asm @@ -8912,7 +8912,7 @@ GetSprite: ; 1423c call GetMonSprite ret c - ld hl, $4736 + ld hl, SpriteHeaders dec a ld c, a ld b, 0 @@ -9806,7 +9806,12 @@ Group20Sprites: ; 1472b ; 14736 -INCBIN "baserom.gbc", $14736, $152ab - $14736 +SpriteHeaders: ; 14736 +INCLUDE "gfx/overworld/sprite_headers.asm" +; 1499a + + +INCBIN "baserom.gbc", $1499a, $152ab - $1499a BlackoutPoints: ; 0x152ab -- cgit v1.2.3 From 8d75f962e45694555b10ac78a3e78e3f53682db0 Mon Sep 17 00:00:00 2001 From: yenatch Date: Sun, 14 Jul 2013 14:51:07 -0400 Subject: more sprite asm --- main.asm | 283 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 268 insertions(+), 15 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index 910476026..da4967743 100644 --- a/main.asm +++ b/main.asm @@ -2575,7 +2575,29 @@ UpdateGameTimer: ; 20ad ; 210f -INCBIN "baserom.gbc", $210f, $23a3 - $210f +INCBIN "baserom.gbc", $210f, $22ee - $210f + + +CheckOutdoorMap: ; 22ee + cp ROUTE + ret z + cp TOWN + ret +; 22f4 + +CheckIndoorMap: ; 22f4 + cp INDOOR + ret z + cp CAVE + ret z + cp DUNGEON + ret z + cp GATE + ret +; 2300 + + +INCBIN "baserom.gbc", $2300, $23a3 - $2300 GetMapConnection: ; 23a3 @@ -3113,8 +3135,25 @@ GetSecondaryMapHeaderPointer: ; 0x2c7d pop de pop bc ret +; 2c8a + + +GetMapPermission: ; 2c8a + push hl + push de + push bc + ld de, 2 + call GetMapHeaderMember + ld a, c + pop bc + pop de + pop hl + ret +; 2c98 + + +INCBIN "baserom.gbc", $2c98, $2caf - $2c98 -INCBIN "baserom.gbc", $2c8a, $2caf-$2c8a GetWorldMapLocation: ; 0x2caf ; given a map group/id in bc, return its location on the Pokégear map. @@ -3130,7 +3169,9 @@ GetWorldMapLocation: ; 0x2caf ret ; 0x2cbd -INCBIN "baserom.gbc", $2cbd, $2d63-$2cbd + +INCBIN "baserom.gbc", $2cbd, $2d63 - $2cbd + FarJpHl: ; 2d63 ; Jump to a:hl. @@ -8851,21 +8892,19 @@ GetPlayerSprite: ; 14183 ; 141c9 -; 141c9 - call $2c8a - call $22ee +AddMapSprites: ; 141c9 + call GetMapPermission + call CheckOutdoorMap jr z, .outdoor - - call IndoorSpriteGFX + call AddIndoorSprites ret - .outdoor - call OutdoorSpriteGFX + call AddOutdoorSprites ret ; 141d9 -IndoorSpriteGFX: ; 141d9 +AddIndoorSprites: ; 141d9 ld hl, MapObjects + 1 * OBJECT_LENGTH + 1 ; sprite ld a, 1 .loop @@ -8882,7 +8921,7 @@ IndoorSpriteGFX: ; 141d9 ; 141ee -OutdoorSpriteGFX: ; 141ee +AddOutdoorSprites: ; 141ee ld a, [MapGroup] dec a ld c, a @@ -8905,8 +8944,15 @@ OutdoorSpriteGFX: ; 141ee ; 14209 -INCBIN "baserom.gbc", $14209, $1423c - $14209 +INCBIN "baserom.gbc", $14209, $14236 - $14209 + +SafeGetSprite: ; 14236 + push hl + call GetSprite + pop hl + ret +; 1423c GetSprite: ; 1423c call GetMonSprite @@ -8999,7 +9045,59 @@ GetMonSprite: ; 14259 ; 142a7 -INCBIN "baserom.gbc", $142a7, $142e5 - $142a7 +Function142a7: ; 142a7 + cp SPRITE_POKEMON + jr nc, .asm_142c2 + + push hl + push bc + ld hl, SpriteHeaders + 4 + dec a + ld c, a + ld b, 0 + ld a, 6 + call AddNTimes + ld a, [hl] + pop bc + pop hl + cp 3 + jr nz, .asm_142c2 + scf + ret + +.asm_142c2 + and a + ret +; 142c4 + + +GetSpritePalette: ; 142c4 + ld a, c + call GetMonSprite + jr c, .asm_142d8 + + ld hl, SpriteHeaders + 5 ; palette + dec a + ld c, a + ld b, 0 + ld a, 6 + call AddNTimes + ld c, [hl] + ret + +.asm_142d8 + xor a + ld c, a + ret +; 142db + + +Function142db: ; 142db + call LoadSpriteGFX + call SortUsedSprites + call ArrangeUsedSprites + ret +; 142e5 AddSpriteGFX: ; 142e5 @@ -9067,7 +9165,162 @@ LoadSpriteGFX: ; 14306 ; 1431e -INCBIN "baserom.gbc", $1431e, $14495 - $1431e +SortUsedSprites: ; 1431e +; Bubble-sort sprites by type. + +; Run backwards through UsedSprites to find the last one. + + ld c, $20 + ld de, UsedSprites + ($20 - 1) * 2 +.FindLastSprite + ld a, [de] + and a + jr nz, .FoundLastSprite + dec de + dec de + 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, .next + +; 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. + +.next + dec de + dec de + dec c + jr nz, .CheckFollowing + + pop hl + inc hl + inc hl + 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, $20 + 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, .next + jr nc, .SecondTable + +.next + 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 + + +INCBIN "baserom.gbc", $1439b, $14495 - $1439b SpriteMons: ; 14495 -- cgit v1.2.3 From 6fb2cd66133896bdb1e8f04ec2278a99627edea6 Mon Sep 17 00:00:00 2001 From: yenatch Date: Sat, 20 Jul 2013 01:25:41 -0400 Subject: no more incbins in bank 25 --- main.asm | 1372 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 1302 insertions(+), 70 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index da4967743..b7b2209a8 100644 --- a/main.asm +++ b/main.asm @@ -101,9 +101,10 @@ RTC: ; 46f ld a, [VramState] bit 0, a ; obj update ret z - -; update palettes - callab TimeOfDayPals +; 47e + +TimeOfDayPals: ; 47e + callab _TimeOfDayPals ret ; 485 @@ -2130,8 +2131,10 @@ SafeTileAnimation: ; 17d3 ret ; 17ff + INCBIN "baserom.gbc", $17ff, $185d - $17ff + GetTileType: ; 185d ; checks the properties of a tile ; input: a = tile id @@ -2155,8 +2158,10 @@ GetTileType: ; 185d ret ; 1875 + INCBIN "baserom.gbc", $1875, $18a0 - $1875 + CheckCounterTile: ; 18a0 cp $90 ret z @@ -2164,7 +2169,12 @@ CheckCounterTile: ; 18a0 ret ; 18a6 -INCBIN "baserom.gbc", $18a6, $18ac - $18a6 +CheckPitTile: ; 18a6 + cp $60 + ret z + cp $68 + ret +; 18ac CheckIceTile: ; 18ac cp $23 @@ -3090,7 +3100,13 @@ GetAnyMapHeaderMember: ; 0x2c0c ; 0x2c1c -INCBIN "baserom.gbc", $2c1c, $2c5b - $2c1c +INCBIN "baserom.gbc", $2c1c, $2c57 - $2c1c + + +GetMapEventBank: ; 2c57 + ld a, [MapEventBank] + ret +; 2c5b GetAnyMapBlockdataBank: ; 2c5b @@ -4580,7 +4596,7 @@ CheckTrainerBattle: ; 360d ld [$d040], a .asm_367e - call $2c57 + call GetMapEventBank ld [EngineBuffer1], a ld a, [$ffe0] call GetMapObject @@ -6481,7 +6497,7 @@ SECTION "bank3",DATA,BANK[$3] INCBIN "baserom.gbc", $c000, $29 SpecialsPointers: ; 0xc029 - dbw $25, $7c28 + dbw BANK(Function97c28), Function97c28 dbw $0a, $5ce8 dbw $0a, $5d11 dbw $0a, $5d92 @@ -17009,7 +17025,7 @@ SECTION "bank23",DATA,BANK[$23] INCBIN "baserom.gbc", $8c000, $8c011 - $8c000 -TimeOfDayPals: ; 8c011 +_TimeOfDayPals: ; 8c011 ; return carry if pals are changed ; forced pals? @@ -18347,7 +18363,183 @@ INCLUDE "maps/map_headers.asm" INCLUDE "maps/second_map_headers.asm" -INCBIN "baserom.gbc", $966b0, $96795 - $966b0 +Function966b0: ; 966b0 + xor a + ld [$d432], a +.asm_966b4 + ld a, [$d432] + ld hl, .pointers + rst JumpTable + ld a, [$d432] + cp 3 ; done + jr nz, .asm_966b4 +.done + ret + +.pointers + dw Function96724 + dw Function9673e + dw Function96773 + dw .done +; 966cb + + +Function966cb: ; 966cb + xor a + ld [ScriptFlags3], a + ret +; 966d0 + +Function966d0: ; 966d0 + ld a, $ff + ld [ScriptFlags3], a + ret +; 966d6 + +Function966d6: ; 966d6 + ld hl, ScriptFlags3 + bit 5, [hl] + ret +; 966dc + +Function966dc: ; 966dc + ld hl, ScriptFlags3 + res 2, [hl] + ret +; 966e2 + +Function966e2: ; 966e2 + ld hl, ScriptFlags3 + res 1, [hl] + ret +; 966e8 + +Function966e8: ; 966e8 + ld hl, ScriptFlags3 + res 0, [hl] + ret +; 966ee + +Function966ee: ; 966ee + ld hl, ScriptFlags3 + res 4, [hl] + ret +; 966f4 + +Function966f4: ; 966f4 + ld hl, ScriptFlags3 + set 2, [hl] + ret +; 966fa + +Function966fa: ; 966fa + ld hl, ScriptFlags3 + set 1, [hl] + ret +; 96700 + +Function96700: ; 96700 + ld hl, ScriptFlags3 + set 0, [hl] + ret +; 96706 + +Function96706: ; 96706 + ld hl, ScriptFlags3 + set 4, [hl] + ret +; 9670c + +Function9670c: ; 9670c + ld hl, ScriptFlags3 + bit 2, [hl] + ret +; 96712 + +Function96712: ; 96712 + ld hl, ScriptFlags3 + bit 1, [hl] + ret +; 96718 + +Function96718: ; 96718 + ld hl, ScriptFlags3 + bit 0, [hl] + ret +; 9671e + +Function9671e: ; 9671e + ld hl, ScriptFlags3 + bit 4, [hl] + ret +; 96724 + + +Function96724: ; 96724 + xor a + ld [ScriptVar], a + xor a + ld [ScriptRunning], a + ld hl, $d432 + ld bc, $3e + call ByteFill + ld a, $4 + ld hl, $53e5 + rst FarCall + call $092f + ; fallthrough +; 9673e + + +Function9673e: ; 9673e + xor a + ld [$d453], a + ld [$d454], a + call Function968d1 + ld a, $5 + ld hl, $5363 + rst FarCall + call Function966cb + ld a, [$ff9f] + cp $f7 + jr nz, .asm_9675a + call Function966d0 +.asm_9675a + ld a, [$ff9f] + cp $f3 + jr nz, .asm_96764 + xor a + ld [PoisonStepCount], a +.asm_96764 + xor a + ld [$ff9f], a + ld a, $2 + ld [$d432], a + ret +; 9676d + + +Function9676d: ; 9676d + ld c, 30 + call DelayFrames + ret +; 96773 + + +Function96773: ; 96773 + call ResetOverworldDelay + call Function967c1 + callba Function97e08 + call DoEvents + ld a, [$d432] + cp 2 + ret nz + call Function967d1 + call NextOverworldFrame + call Function967e1 + call Function967f4 + ret +; 96795 DoEvents: ; 96795 @@ -18355,15 +18547,15 @@ DoEvents: ; 96795 ld hl, .pointers rst JumpTable ret -; 9679d .pointers dw Function967a1 dw Function967ae +; 967a1 Function967a1: ; 967a1 call PlayerEvents - call $66cb + call Function966cb callba ScriptEvents ret ; 967ae @@ -18373,19 +18565,102 @@ Function967ae: ; 967ae ; 967af -INCBIN "baserom.gbc", $967af, $9681f - $967af +MaxOverworldDelay: ; 967af + db 2 +; 967b0 + +ResetOverworldDelay: ; 967b0 + ld a, [MaxOverworldDelay] + ld [OverworldDelay], a + ret +; 967b7 + +NextOverworldFrame: ; 967b7 + ld a, [OverworldDelay] + and a + ret z + ld c, a + call DelayFrames + ret +; 967c1 + + +Function967c1: ; 967c1 + ld a, [$d433] + cp 1 + ret z + call UpdateTime + call GetJoypadPublic + call TimeOfDayPals + ret +; 967d1 + +Function967d1: ; 967d1 + ld a, $1 + ld hl, $576a + rst FarCall + ld a, $3 + ld hl, $5497 + rst FarCall + call Function96812 + ret +; 967e1 + +Function967e1: ; 967e1 + ld a, $1 + ld hl, $5920 + rst FarCall + ld a, $3 + ld hl, $54d2 + rst FarCall + ld a, $2e + ld hl, $4098 + rst FarCall + ret +; 967f4 + +Function967f4: ; 967f4 + ld a, [$d150] + bit 5, a + jr z, .asm_96806 + bit 6, a + jr z, .asm_9680c + bit 4, a + jr nz, .asm_9680c + call Function966d0 + +.asm_96806 + ld a, $0 + ld [$d433], a + ret + +.asm_9680c + ld a, $1 + ld [$d433], a + ret +; 96812 + +Function96812: ; 96812 + ld hl, $d150 + bit 6, [hl] + ret z + ld a, $2 + ld hl, $41ca + rst FarCall + + ret +; 9681f PlayerEvents: ; 9681f -; Reset carry. xor a ld a, [ScriptRunning] and a ret nz - call $68e4 + call Function968e4 call CheckTrainerBattle3 jr c, .asm_96848 @@ -18393,13 +18668,13 @@ PlayerEvents: ; 9681f call CheckTileEvent jr c, .asm_96848 - call $7c30 + call Function97c30 jr c, .asm_96848 - call $68ec + call Function968ec jr c, .asm_96848 - call $693a + call Function9693a jr c, .asm_96848 call OWPlayerInput @@ -18411,13 +18686,11 @@ PlayerEvents: ; 9681f .asm_96848 push af - ld a, $25 - ld hl, $6c56 - rst FarCall + callba Function96c56 pop af ld [ScriptRunning], a - call $6beb + call Function96beb ld a, [ScriptRunning] cp 4 jr z, .asm_96865 @@ -18451,7 +18724,7 @@ CheckTrainerBattle3: ; 96867 CheckTileEvent: ; 96874 ; Check for warps, tile triggers or wild battles. - call $670c + call Function9670c jr z, .asm_96886 ld a, $41 @@ -18463,26 +18736,25 @@ CheckTileEvent: ; 96874 jr c, .asm_968aa .asm_96886 - call $6712 + call Function96712 jr z, .asm_96890 call $2ad4 jr c, .asm_968ba .asm_96890 - call $6718 + call Function96718 jr z, .asm_96899 - call $6b79 + call CountStep ret c .asm_96899 - call $671e + call Function9671e jr z, .asm_968a4 - call $7cc0 + call Function97cc0 ret c - jr .asm_968a4 .asm_968a4 @@ -18496,7 +18768,7 @@ CheckTileEvent: ; 96874 .asm_968aa ld a, [StandingTile] - call $18a6 + call CheckPitTile jr nz, .asm_968b6 ld a, 6 scf @@ -18512,13 +18784,142 @@ CheckTileEvent: ; 96874 ld a, [hli] ld h, [hl] ld l, a - call $2c57 + call GetMapEventBank call PushScriptPointer ret ; 968c7 -INCBIN "baserom.gbc", $968c7, $96974 - $968c7 +Function968c7: ; 968c7 + ld hl, $d452 + ld a, [hl] + and a + ret z + dec [hl] + ret z + scf + ret +; 968d1 + +Function968d1: ; 968d1 + ld a, 5 + ld [$d452], a + ret +; 968d7 + +Function968d7: ; 968d7 + ret +; 968d8 + +Function968d8: ; 968d8 + ld a, [$d452] + cp 2 + ret nc + ld a, 2 + ld [$d452], a + ret +; 968e4 + +Function968e4: ; 968e4 + call Function966d6 + ret z + call $2f3e + ret +; 968ec + +Function968ec: ; 968ec + ld a, [$dc07] + and a + jr z, .asm_96938 + + ld c, a + call $211b + cp c + jr nc, .asm_96938 + + ld e, a + ld d, 0 + ld hl, $dc08 + ld a, [hli] + ld h, [hl] + ld l, a + add hl, de + add hl, de + add hl, de + add hl, de + + call GetMapEventBank + call GetFarHalfword + call GetMapEventBank + call PushScriptPointer + + ld hl, ScriptFlags + res 3, [hl] + + callba Function96c56 + callba ScriptEvents + + ld hl, ScriptFlags + bit 3, [hl] + jr z, .asm_96938 + + ld hl, $d44f + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [$d44e] + call PushScriptPointer + scf + ret + +.asm_96938 + xor a + ret +; 9693a + +Function9693a: ; 9693a + ld a, [InLinkBattle] + and a + jr nz, .asm_96964 + ld hl, StatusFlags2 + bit 2, [hl] + jr z, .asm_96951 + ld a, $4 + ld hl, $54a4 + rst FarCall + jr c, .asm_96966 + xor a + ret + +.asm_96951 + ld a, $4 + ld hl, $5452 + rst FarCall + ld a, $4 + ld hl, $54e7 + rst FarCall + ld a, $24 + ld hl, $4074 + rst FarCall + ret c + +.asm_96964 + xor a + ret + +.asm_96966 + ld a, $4 + ld hl, $75f8 + call PushScriptPointer + scf + ret +; 96970 + +Function96970: ; 96970 + ld a, 8 + scf + ret +; 96974 OWPlayerInput: ; 96974 @@ -18559,7 +18960,7 @@ CheckAPressOW: ; 96999 ret c call TryReadSign ret c - call $7c5f + call Function97c5f ret c xor a ret @@ -18632,7 +19033,7 @@ TryObjectEvent: ; 969b5 ld a, [hli] ld h, [hl] ld l, a - call $2c57 + call GetMapEventBank call PushScriptPointer ; ld a, -1 ret @@ -18644,7 +19045,7 @@ TryObjectEvent: ; 969b5 ld a, [hli] ld h, [hl] ld l, a - call $2c57 + call GetMapEventBank ld de, EngineBuffer1 ld bc, 2 call FarCopyBytes @@ -18722,7 +19123,7 @@ TryReadSign: ; 96a38 ld a, [PlayerDirection] and %1100 cp b - jp nz, $6ad6 + jp nz, .dontread .read call PlayTalkObject @@ -18730,16 +19131,16 @@ TryReadSign: ; 96a38 ld a, [hli] ld h, [hl] ld l, a - call $2c57 + call GetMapEventBank call PushScriptPointer scf ret .itemifset call CheckSignFlag - jp nz, $6ad6 + jp nz, .dontread call PlayTalkObject - call $2c57 + call GetMapEventBank ld de, EngineBuffer1 ld bc, 3 call FarCopyBytes @@ -18752,7 +19153,7 @@ TryReadSign: ; 96a38 .asm_96aa2 call CheckSignFlag jr nz, .dontread - call $2c57 + call GetMapEventBank ld de, EngineBuffer1 ld bc, 3 call FarCopyBytes @@ -18773,9 +19174,9 @@ TryReadSign: ; 96a38 pop hl inc hl inc hl - call $2c57 + call GetMapEventBank call GetFarHalfword - call $2c57 + call GetMapEventBank call PushScriptPointer scf ret @@ -18792,7 +19193,7 @@ CheckSignFlag: ; 96ad8 ld h, [hl] ld l, a push hl - call $2c57 + call GetMapEventBank call GetFarHalfword ld e, l ld d, h @@ -18832,7 +19233,7 @@ PlayerMovement: ; 96af0 ; 96b10 .seven ; 96b10 - call $68d7 ; empty + call Function968d7 ; empty xor a ld c, a ret @@ -18932,40 +19333,221 @@ SelectMenuCallback: ; 96b66 ; 96b79 -INCBIN "baserom.gbc", $96b79, $96c5e - $96b79 +CountStep: ; 96b79 + ld a, [InLinkBattle] + and a + jr nz, .asm_96bc9 + ld a, $24 + ld hl, $4136 + rst FarCall + jr c, .asm_96bcb -ScriptEvents: ; 96c5e - call StartScript -.loop - ld a, [ScriptMode] - ld hl, .modes - rst JumpTable - call CheckScript - jr nz, .loop - ret -; 96c6e + call Function96bd7 + jr c, .asm_96bcb -.modes ; 96c6e - dw EndScript - dw RunScriptCommand - dw WaitScriptMovement - dw WaitScript + ld hl, PoisonStepCount + inc [hl] + ld hl, StepCount + inc [hl] + jr nz, .asm_96b9c -EndScript: ; 96c76 - call StopScript - ret -; 96c7a + ld a, $1 + ld hl, $725a + rst FarCall -WaitScript: ; 96c7a - call StopScript +.asm_96b9c + ld a, [StepCount] + cp $80 + jr nz, .asm_96bab - ld hl, ScriptDelay - dec [hl] - ret nz + ld a, $5 + ld hl, $6f3e + rst FarCall + jr nz, .asm_96bcf +.asm_96bab ld a, $1 - ld hl, $58b9 + ld hl, $7282 + rst FarCall + + ld hl, PoisonStepCount + ld a, [hl] + cp 4 + jr c, .asm_96bc3 + ld [hl], 0 + + ld a, $14 + ld hl, $45da + rst FarCall + jr c, .asm_96bcb + +.asm_96bc3 + callba Function97db3 + +.asm_96bc9 + xor a + ret + +.asm_96bcb + ld a, -1 + scf + ret + +.asm_96bcf + ld a, 8 + scf + ret +; 96bd3 + + +Function96bd3: ; 96bd3 + ld a, $7 + scf + ret +; 96bd7 + +Function96bd7: ; 96bd7 + ld a, [$dca1] + and a + ret z + dec a + ld [$dca1], a + ret nz + ld a, $4 + ld hl, $7619 + call PushScriptPointer + scf + ret +; 96beb + +Function96beb: ; 96beb + ld a, [ScriptRunning] + and a + ret z + cp $ff + ret z + cp $a + ret nc + + ld c, a + ld b, 0 + ld hl, ScriptPointers96c0c + add hl, bc + add hl, bc + add hl, bc + ld a, [hli] + ld [ScriptBank], a + ld a, [hli] + ld [ScriptPos], a + ld a, [hl] + ld [ScriptPos + 1], a + ret +; 96c0c + +ScriptPointers96c0c: ; 96c0c + dbw BANK(UnknownScript_0x96c2d), UnknownScript_0x96c2d + dbw $2f, $6675 ; BANK(UnknownScript_0xbe675), UnknownScript_0xbe675 + dbw $2f, $666a ; BANK(UnknownScript_0xbe66a), UnknownScript_0xbe66a + dbw $04, $62ce ; BANK(UnknownScript_0x122ce), UnknownScript_0x122ce + dbw BANK(UnknownScript_0x96c4d), UnknownScript_0x96c4d + dbw BANK(UnknownScript_0x96c34), UnknownScript_0x96c34 + dbw BANK(FallIntoMapScript), FallIntoMapScript + dbw $04, $64c8 ; BANK(UnknownScript_0x124c8), UnknownScript_0x124c8 + dbw BANK(UnknownScript_0x96c2f), UnknownScript_0x96c2f + dbw BANK(UnknownScript_0x96c4f), UnknownScript_0x96c4f + dbw BANK(UnknownScript_0x96c2d), UnknownScript_0x96c2d +; 96c2d + +UnknownScript_0x96c2d: ; 96c2d + end +; 96c2e + +UnknownScript_0x96c2e: ; 96c2e + end +; 96c2f + +UnknownScript_0x96c2f: ; 96c2f + 3callasm $05, $6f5e + end +; 96c34 + +UnknownScript_0x96c34: ; 96c34 + warpsound + newloadmap $f5 + end +; 96c38 + +FallIntoMapScript: ; 96c38 + newloadmap $f6 + playsound SFX_KINESIS + applymovement $0, MovementData_0x96c48 + playsound SFX_STRENGTH + 2call UnknownScript_0x96c4a + end +; 96c48 + +MovementData_0x96c48: ; 96c48 + skyfall + step_end +; 96c4a + +UnknownScript_0x96c4a: ; 96c4a + earthquake 16 + end +; 96c4d + +UnknownScript_0x96c4d: ; 96c4d + reloadandreturn $f7 +; 96c4f + +UnknownScript_0x96c4f: ; 96c4f + deactivatefacing $3 + 3callasm BANK(Function96706), Function96706 + end +; 96c56 + + +Function96c56: ; 96c56 + push af + ld a, 1 + ld [ScriptMode], a + pop af + ret +; 96c5e + + +ScriptEvents: ; 96c5e + call StartScript +.loop + ld a, [ScriptMode] + ld hl, .modes + rst JumpTable + call CheckScript + jr nz, .loop + ret +; 96c6e + +.modes ; 96c6e + dw EndScript + dw RunScriptCommand + dw WaitScriptMovement + dw WaitScript + +EndScript: ; 96c76 + call StopScript + ret +; 96c7a + +WaitScript: ; 96c7a + call StopScript + + ld hl, ScriptDelay + dec [hl] + ret nz + + ld a, $1 + ld hl, $58b9 rst FarCall ld a, SCRIPT_READ @@ -19002,7 +19584,657 @@ RunScriptCommand: ; 96ca9 INCLUDE "engine/scripting.asm" -INCBIN "baserom.gbc", $97c20, $97f7e - $97c20 +Function97c20: ; 97c20 + ld a, [.byte] + ld [ScriptVar], a + ret + +.byte + db 0 +; 97c28 + +Function97c28: ; 97c28 + ld hl, StatusFlags2 + res 1, [hl] + res 2, [hl] + ret +; 97c30 + +Function97c30: ; 97c30 + ld a, [$d45c] + and a + ret z + ld hl, $d45e + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [$d45d] + call PushScriptPointer + scf + push af + xor a + ld hl, $d45c + ld bc, 8 + call ByteFill + pop af + ret +; 97c4f + +Function97c4f: ; 97c4f + ld hl, $d45c + ld a, [hl] + and a + ret nz + ld [hl], 1 + inc hl + ld [hl], b + inc hl + ld [hl], e + inc hl + ld [hl], d + scf + ret +; 97c5f + +Function97c5f: ; 97c5f + call GetFacingTileCoord + ld [EngineBuffer1], a + ld c, a + ld a, $4 + ld hl, $765b + rst FarCall + jr c, .asm_97cb9 + call $1894 + jr nz, .asm_97c7b + ld a, $3 + ld hl, $5186 + rst FarCall + jr .asm_97cb9 + +.asm_97c7b + ld a, [EngineBuffer1] + call CheckWhirlpoolTile + jr nz, .asm_97c8b + ld a, $3 + ld hl, $4e3e + rst FarCall + jr .asm_97cb9 + +.asm_97c8b + ld a, [EngineBuffer1] + call CheckWaterfallTile + jr nz, .asm_97c9b + ld a, $3 + ld hl, $4b56 + rst FarCall + jr .asm_97cb9 + +.asm_97c9b + ld a, [EngineBuffer1] + call $189a + jr nz, .asm_97cad + ld a, $3 + ld hl, $4ec9 + rst FarCall + jr c, .asm_97cb9 + jr .asm_97cb7 + +.asm_97cad + callba CheckSurfOW + jr nc, .asm_97cb7 + jr .asm_97cb9 + +.asm_97cb7 + xor a + ret + +.asm_97cb9 + call PlayClickSFX + ld a, $ff + scf + ret +; 97cc0 + +Function97cc0: ; 97cc0 + call Function968c7 + jr c, .asm_97ce2 + call Function97cfd + jr nc, .asm_97ce2 + ld hl, StatusFlags2 + bit 2, [hl] + jr nz, .asm_97cdb + ld a, $a + ld hl, $60e7 + rst FarCall + jr nz, .asm_97ce2 + jr .asm_97ce6 + +.asm_97cdb + call Function97d23 + jr nc, .asm_97ce2 + jr .asm_97ced + +.asm_97ce2 + ld a, 1 + and a + ret + +.asm_97ce6 + ld a, BANK(UnknownScript_0x97cf9) + ld hl, UnknownScript_0x97cf9 + jr .asm_97cf4 + +.asm_97ced + ld a, $4 + ld hl, $75eb + jr .asm_97cf4 + +.asm_97cf4 + call PushScriptPointer + scf + ret +; 97cf9 + +UnknownScript_0x97cf9: ; 97cf9 + battlecheck + startbattle + returnafterbattle + end +; 97cfd + +Function97cfd: ; 97cfd + ld hl, StatusFlags + bit 5, [hl] + jr nz, .asm_97d21 + ld a, [$d19a] + cp $4 + jr z, .asm_97d17 + cp $7 + jr z, .asm_97d17 + ld a, $5 + ld hl, $49dd + rst FarCall + jr nc, .asm_97d21 + +.asm_97d17 + ld a, [StandingTile] + call CheckIceTile + jr z, .asm_97d21 + scf + ret + +.asm_97d21 + and a + ret +; 97d23 + +Function97d23: ; 97d23 + call Function97d64 + ret nc + call Function97d31 + ld a, $a + ld hl, $61df + rst FarCall + ret +; 97d31 + +Function97d31: ; 97d31 +.asm_97d31 + call RNG + cp 100 << 1 + jr nc, .asm_97d31 + srl a + ld hl, Table97d87 + ld de, 4 +.asm_97d40 + sub [hl] + jr c, .asm_97d46 + add hl, de + jr .asm_97d40 + +.asm_97d46 + inc hl + ld a, [hli] + ld [$d22e], a + ld a, [hli] + ld d, a + ld a, [hl] + sub d + jr nz, .asm_97d54 + ld a, d + jr .asm_97d5f + +.asm_97d54 + ld c, a + inc c + call RNG + ld a, [hRandomAdd] + call SimpleDivide + add d + +.asm_97d5f + ld [CurPartyLevel], a + xor a + ret +; 97d64 + +Function97d64: ; 97d64 + ld a, [StandingTile] + call $188e + ld b, $66 + jr z, .asm_97d70 + ld b, $33 + +.asm_97d70 + ld a, $a + ld hl, $6124 + rst FarCall + ld a, $a + ld hl, $6138 + rst FarCall + call RNG + ld a, [hRandomAdd] + cp b + ret c + ld a, 1 + and a + ret +; 97d87 + +Table97d87: ; 97d87 + db 20, $0a, $07, $12 + db 20, $0d, $07, $12 + db 10, $0b, $09, $12 + db 10, $0e, $09, $12 + db 5, $0c, $0c, $0f + db 5, $0f, $0c, $0f + db 10, $30, $0a, $10 + db 10, $2e, $0a, $11 + db 5, $7b, $0d, $0e + db 5, $7f, $0d, $0e + db -1, $31, $1e, $28 +; 97db3 + +Function97db3: ; 97db3 + nop + nop + ; fallthrough +; 97db5 + +Function97db5: ; 97db5 + ld hl, StatusFlags2 + bit 4, [hl] + jr z, .asm_97df7 + ld a, [PlayerState] + cp $1 + jr nz, .asm_97df7 + call $2d05 + and a + jr nz, .asm_97df7 + ld hl, $dca2 + ld a, [hli] + ld d, a + ld e, [hl] + cp $ff + jr nz, .asm_97dd8 + ld a, e + cp $ff + jr z, .asm_97ddc + +.asm_97dd8 + inc de + ld [hl], e + dec hl + ld [hl], d + +.asm_97ddc + ld a, d + cp $4 + jr c, .asm_97df7 + ld a, [$dc31] + and a + jr nz, .asm_97df7 + ld a, $6 + ld [$dc31], a + xor a + ld [$dc32], a + ld hl, StatusFlags2 + res 4, [hl] + scf + ret + +.asm_97df7 + xor a + ret +; 97df9 + +Function97df9: ; 97df9 + ld hl, $d6de + ld de, $0006 + ld c, $4 + xor a +.asm_97e02 + ld [hl], a + add hl, de + dec c + jr nz, .asm_97e02 + ret +; 97e08 + +Function97e08: ; 97e08 + ld hl, $d6de + xor a +.asm_97e0c + ld [hConnectionStripLength], a + ld a, [hl] + and a + jr z, .asm_97e19 + push hl + ld b, h + ld c, l + call Function97e79 + pop hl + +.asm_97e19 + ld de, $0006 + add hl, de + ld a, [hConnectionStripLength] + inc a + cp $4 + jr nz, .asm_97e0c + ret +; 97e25 + +Function97e25: ; 97e25 + ld hl, $d6de + ld bc, 6 + call AddNTimes + ld b, h + ld c, l + ret +; 97e31 + +Function97e31: ; 97e31 + push bc + push de + call Function97e45 + ld d, h + ld e, l + pop hl + pop bc + ret c + ld a, b + ld bc, $0005 + call FarCopyBytes + xor a + ld [hl], a + ret +; 97e45 + +Function97e45: ; 97e45 + ld hl, $d6de + ld de, $0006 + ld c, $4 +.asm_97e4d + ld a, [hl] + and a + jr z, .asm_97e57 + add hl, de + dec c + jr nz, .asm_97e4d + scf + ret + +.asm_97e57 + ld a, $4 + sub c + and a + ret +; 97e5c + +Function97e5c: ; 97e5c + ld hl, $d6de + ld de, $0006 + ld c, $4 +.asm_97e64 + ld a, [hl] + cp b + jr z, .asm_97e6e + add hl, de + dec c + jr nz, .asm_97e64 + and a + ret + +.asm_97e6e + xor a + ld [hl], a + scf + ret +; 97e72 + +Function97e72: ; 97e72 + ld hl, $0000 + add hl, bc + ld [hl], 0 + ret +; 97e79 + +Function97e79: ; 97e79 + ld hl, $0000 + add hl, bc + ld a, [hl] + cp 5 + jr c, .asm_97e83 + xor a + +.asm_97e83 + ld e, a + ld d, 0 + ld hl, Table97e94 + add hl, de + add hl, de + add hl, de + ld a, [hli] + push af + ld a, [hli] + ld h, [hl] + ld l, a + pop af + rst FarCall + ret +; 97e94 + +Table97e94: ; 97e94 + dbw BANK(Function97eb7), Function97eb7 + dbw BANK(Function97eb8), Function97eb8 + dbw BANK(Function97f42), Function97f42 + dbw BANK(Function97ef9), Function97ef9 + dbw BANK(Function97ebc), Function97ebc +; 97ea3 + +Function97ea3: ; 97ea3 + ld hl, $0005 + add hl, bc + ld a, [hl] + pop hl + rst JumpTable + ret +; 97eab + +Function97eab: ; 97eab + ld hl, $0005 + add hl, bc + inc [hl] + ret +; 97eb1 + +Function97eb1: ; 97eb1 + ld hl, $0005 + add hl, bc + dec [hl] + ret +; 97eb7 + +Function97eb7: ; 97eb7 + ret +; 97eb8 + +Function97eb8: ; 97eb8 + call $2f3e + ret +; 97ebc + +Function97ebc: ; 97ebc + call Function97ea3 + dw Function97ec3 + dw Function97ecd +; 97ec3 + +Function97ec3: ; 97ec3 + ld a, [$ffd0] + ld hl, $0004 + add hl, bc + ld [hl], a + call Function97eab +; 97ecd + +Function97ecd: ; 97ecd + ld hl, $0001 + add hl, bc + ld a, [hl] + dec a + ld [hl], a + jr z, .asm_97eee + and $1 + jr z, .asm_97ee4 + ld hl, $0002 + add hl, bc + ld a, [$ffd0] + sub [hl] + ld [$ffd0], a + ret + +.asm_97ee4 + ld hl, $0002 + add hl, bc + ld a, [$ffd0] + add [hl] + ld [$ffd0], a + ret + +.asm_97eee + ld hl, $0004 + add hl, bc + ld a, [hl] + ld [$ffd0], a + call Function97e72 + ret +; 97ef9 + +Function97ef9: ; 97ef9 + call Function97ea3 + dw Function97f02 + dw Function97f0a + dw Function97f1b +; 97f02 + +Function97f02: ; 97f02 + call Function97f38 + jr z, Function97f2c + call Function97eab +; 97f0a + +Function97f0a: ; 97f0a + call Function97f38 + jr z, Function97f2c + call Function97eab + + ld hl, $0002 + add hl, bc + ld a, [hl] + ld [$d173], a + ret +; 97f1b + +Function97f1b: ; 97f1b + call Function97f38 + jr z, Function97f2c + call Function97eb1 + + ld hl, $0003 + add hl, bc + ld a, [hl] + ld [$d173], a + ret +; 97f2c + +Function97f2c: ; 97f2c + ld a, $7f + ld [$d173], a + ld hl, $0005 + add hl, bc + ld [hl], 0 + ret +; 97f38 + +Function97f38: ; 97f38 + push bc + ld bc, $d4d6 + call GetSpriteDirection + and a + pop bc + ret +; 97f42 + +Function97f42: ; 97f42 + ld de, $d4d6 + ld a, $d +.asm_97f47 + push af + + ld hl, $0000 + add hl, de + ld a, [hl] + and a + jr z, .asm_97f71 + + ld hl, $0003 + add hl, de + ld a, [hl] + cp $19 + jr nz, .asm_97f71 + + ld hl, $000e + add hl, de + ld a, [hl] + call CheckPitTile + jr nz, .asm_97f71 + + ld hl, $0007 + add hl, de + ld a, [hl] + cp $ff + jr nz, .asm_97f71 + call $3567 + jr c, .asm_97f7c + +.asm_97f71 + ld hl, $0028 + add hl, de + ld d, h + ld e, l + + pop af + dec a + jr nz, .asm_97f47 + ret + +.asm_97f7c + pop af + ret +; 97f7e + SECTION "bank26",DATA,BANK[$26] -- cgit v1.2.3 From 8e27cfbc1a9891788e1dc3b588e7d2486684294c Mon Sep 17 00:00:00 2001 From: yenatch Date: Sat, 20 Jul 2013 22:34:40 -0400 Subject: movement command asm --- main.asm | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 112 insertions(+), 1 deletion(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index b7b2209a8..80acd042f 100644 --- a/main.asm +++ b/main.asm @@ -5583,7 +5583,118 @@ INCBIN "baserom.gbc", $3e32, $3fb5 - $3e32 SECTION "bank1",DATA,BANK[$1] -INCBIN "baserom.gbc", $4000, $5f99 - $4000 + +INCBIN "baserom.gbc", $4000, $5000 - $4000 + + +Function5000: ; 5000 + ld a, [$c2de] + ld hl, $c2df + ld [hl], a + ld a, $3e + ld [$c2de], a + ld a, [hl] + ret +; 500e + +Function500e: ; 500e + ld hl, $c2e3 + call $1aae + ret +; 5015 + +Function5015: ; 5015 + ld hl, $001b + add hl, bc + ld e, [hl] + inc [hl] + ld d, $0 + ld hl, $c2e2 + ld a, [hli] + ld h, [hl] + ld l, a + add hl, de + ld a, [hl] + ret +; 5026 + +Function5026: ; 5026 + ld hl, $001b + add hl, bc + ld e, [hl] + inc [hl] + ld d, $0 + ld hl, $c2e6 + ld a, [hli] + ld h, [hl] + ld l, a + add hl, de + ld a, [hl] + ret +; 5037 + +Function5037: ; 5037 + ld hl, $503d + jp $5041 +; 503d + +Function503d: ; 503d + ld a, [$c2e2] + ret +; 5041 + +Function5041: ; 5041 + call $5055 +.asm_5044 + xor a + ld [$c2ea], a + call Function505e + call Function506b + ld a, [$c2ea] + and a + jr nz, .asm_5044 + ret +; 5055 + +Function5055: ; 5055 + ld a, l + ld [$c2eb], a + ld a, h + ld [$c2ec], a + ret +; 505e + +Function505e: ; 505e + ld hl, $c2eb + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 5065 + +Function5065: ; 5065 + ld a, $1 + ld [$c2ea], a + ret +; 506b + +Function506b: ; 506b + push af + call $54b8 + pop af + ld hl, MovementPointers + rst JumpTable + ret +; 5075 + + +; 5075 +INCLUDE "engine/movement.asm" +; 54b8 + + +INCBIN "baserom.gbc", $54b8, $5f99 - $54b8 + OakSpeech: ; 0x5f99 ld a, $24 -- cgit v1.2.3 From 9c7b0932fc36fbb5526d8fd5362390c61d0e792b Mon Sep 17 00:00:00 2001 From: yenatch Date: Sun, 21 Jul 2013 05:53:40 -0400 Subject: more bank 1 asm --- main.asm | 1857 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 1846 insertions(+), 11 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index 80acd042f..dc70f6a89 100644 --- a/main.asm +++ b/main.asm @@ -5644,7 +5644,7 @@ Function503d: ; 503d ; 5041 Function5041: ; 5041 - call $5055 + call Function5055 .asm_5044 xor a ld [$c2ea], a @@ -5680,7 +5680,7 @@ Function5065: ; 5065 Function506b: ; 506b push af - call $54b8 + call Function54b8 pop af ld hl, MovementPointers rst JumpTable @@ -5693,7 +5693,1846 @@ INCLUDE "engine/movement.asm" ; 54b8 -INCBIN "baserom.gbc", $54b8, $5f99 - $54b8 +Function54b8: ; 54b8 + ld e, a + ld a, [$d4ce] + cp $ff + ret z + ld a, [$d4cd] + ld d, a + ld a, [hConnectionStripLength] + cp d + ret nz + ld a, e + cp $3e + ret z + cp $47 + ret z + cp $4b + ret z + cp $50 + ret z + cp $8 + ret c + push af + ld hl, $d4d0 + inc [hl] + ld e, [hl] + ld d, $0 + ld hl, $d4d1 + add hl, de + pop af + ld [hl], a + ret +; 54e6 + +Function54e6: ; 54e6 + ld hl, $d4d0 + ld a, [hl] + and a + jr z, .asm_5503 + cp $ff + jr z, .asm_5503 + dec [hl] + ld e, a + ld d, $0 + ld hl, $d4d1 + add hl, de + inc e + ld a, $ff +.asm_54fc + ld d, [hl] + ld [hld], a + ld a, d + dec e + jr nz, .asm_54fc + ret + +.asm_5503 + call Function550a + ret c + ld a, $3e + ret +; 550a + +Function550a: ; 550a + ld a, [$d4cd] + cp $ff + jr z, .asm_5520 + push bc + call $1ae5 + ld hl, $0000 + add hl, bc + ld a, [hl] + pop bc + and a + jr z, .asm_5520 + and a + ret + +.asm_5520 + ld a, $ff + ld [$d4ce], a + ld a, $47 + scf + ret +; 5529 + +Function5529: ; 5529 + push bc + ld de, .data_5535 + call Function55b9 + call Function55ac + pop bc + ret + +.data_5535 + db $00, $05, $1b +; 5538 + +Function5538: ; 5538 + push bc + ld de, .data_5544 + call Function55b9 + call Function55ac + pop bc + ret + +.data_5544 + db $00, $05, $22 +; 5547 + +Function5547: ; 5547 + push bc + ld de, .data_5553 + call Function55b9 + call Function55ac + pop bc + ret + +.data_5553 + db $00, $05, $1c +; 5556 + +Function5556: ; 5556 + push bc + ld de, .data_5562 + call Function55b9 + call Function55ac + pop bc + ret + +.data_5562 + db $00, $06, $23 +; 5565 + +Function5565: ; 5565 + push bc + push af + ld de, .data_5576 + call Function55b9 + pop af + ld [$c2f5], a + call Function55ac + pop bc + ret + +.data_5576 + db $00, $05, $1d +; 5579 + +Function5579: ; 5579 + push bc + ld a, [hConnectionStripLength] + ld c, a + call Function5582 + pop bc + ret +; 5582 + +Function5582: ; 5582 + ld de, $d4d6 + ld a, $d +.asm_5587 + push af + ld hl, $0004 + add hl, de + bit 7, [hl] + jr z, .asm_55a1 + ld hl, $0000 + add hl, de + ld a, [hl] + and a + jr z, .asm_55a1 + push bc + xor a + ld bc, $0028 + call ByteFill + pop bc + +.asm_55a1 + ld hl, $0028 + add hl, de + ld d, h + ld e, l + pop af + dec a + jr nz, .asm_5587 + ret +; 55ac + +Function55ac: ; 55ac + call $1a13 + ret nc + ld d, h + ld e, l + ld a, $2 + ld hl, $4286 + rst FarCall + ret +; 55b9 + +Function55b9: ; 55b9 + ld hl, $c2f0 + ld [hl], $ff + inc hl + ld [hl], $ff + inc hl + ld a, [de] + inc de + ld [hli], a + ld a, [de] + inc de + ld [hli], a + ld a, [de] + ld [hli], a + ld a, [hConnectionStripLength] + ld [hli], a + push hl + ld hl, $0010 + add hl, bc + ld d, [hl] + ld hl, $0011 + add hl, bc + ld e, [hl] + pop hl + ld [hl], d + inc hl + ld [hl], e + inc hl + ld [hl], $ff + ret +; 55e0 + +Function55e0: ; 55e0 + ld a, [VramState] + bit 0, a + ret z + ld bc, $d4d6 + xor a +.asm_55ea + ld [hConnectionStripLength], a + call $1af1 + jr z, .asm_55f4 + call Function565c + +.asm_55f4 + ld hl, $0028 + add hl, bc + ld b, h + ld c, l + ld a, [hConnectionStripLength] + inc a + cp $d + jr nz, .asm_55ea + ret +; 5602 + +Function5602: ; 5602 + call Function5645 + ld a, $0 + call Function5629 + ld a, [$d459] + bit 7, a + jr z, .asm_5619 + ld a, [$ffe0] + and a + jr z, .asm_5619 + call Function5629 + +.asm_5619 + call Function5920 + ret +; 561d + +Function561d: ; 561d + call Function5645 + ld a, $0 + call Function5629 + call Function5920 + ret +; 5629 + +Function5629: ; 5629 + cp $10 + ret nc + call GetMapObject + ld hl, $0000 + add hl, bc + ld a, [hl] + cp $ff + ret z + cp $d + ret nc + call $1ae5 + call $1af1 + ret z + call Function5673 + ret +; 5645 + +Function5645: ; 5645 + xor a + ld bc, $d4d6 +.asm_5649 + ld [hConnectionStripLength], a + call Function5680 + ld hl, $0028 + add hl, bc + ld b, h + ld c, l + ld a, [hConnectionStripLength] + inc a + cp $d + jr nz, .asm_5649 + ret +; 565c + +Function565c: ; 565c + push bc + call Function56cd + pop bc + jr c, Function5680 + call Function56a3 + jr c, Function5680 + call Function5688 + ld a, $1 + ld hl, $4440 + rst FarCall + xor a + ret +; 5673 + +Function5673: ; 5673 + call Function56a3 + jr c, Function5680 + ld a, $1 + ld hl, $4440 + rst FarCall + xor a + ret +; 5680 + +Function5680: ; 5680 + ld hl, $000d + add hl, bc + ld [hl], $ff + scf + ret +; 5688 + +Function5688: ; 5688 + push bc + ld hl, $0010 + add hl, bc + ld d, [hl] + ld hl, $0011 + add hl, bc + ld e, [hl] + call $2a3c + pop bc + ld hl, $000e + add hl, bc + ld [hl], a + ld a, $1 + ld hl, $463f + rst FarCall + ret +; 56a3 + +Function56a3: ; 56a3 + ld hl, $0010 + add hl, bc + ld d, [hl] + ld hl, $0011 + add hl, bc + ld e, [hl] + inc d + inc e + ld a, [XCoord] + cp d + jr z, .asm_56bc + jr nc, .asm_56cb + add $b + cp d + jr c, .asm_56cb + +.asm_56bc + ld a, [YCoord] + cp e + jr z, .asm_56c9 + jr nc, .asm_56cb + add $a + cp e + jr c, .asm_56cb + +.asm_56c9 + xor a + ret + +.asm_56cb + scf + ret +; 56cd + +Function56cd: ; 56cd + ld a, [$d14c] + ld d, a + ld hl, $0019 + add hl, bc + ld a, [hl] + ld hl, $0017 + add hl, bc + add [hl] + add d + cp $f0 + jr nc, .asm_56e5 + cp $a0 + jp nc, $5768 + +.asm_56e5 + and $7 + ld d, $2 + cp $4 + jr c, .asm_56ef + ld d, $3 + +.asm_56ef + ld a, [hl] + srl a + srl a + srl a + cp $14 + jr c, .asm_56fc + sub $20 + +.asm_56fc + ld [$ffbd], a + ld a, [$d14d] + ld e, a + ld hl, $001a + add hl, bc + ld a, [hl] + ld hl, $0018 + add hl, bc + add [hl] + add e + cp $f0 + jr nc, .asm_5715 + cp $90 + jr nc, .asm_5768 + +.asm_5715 + and $7 + ld e, $2 + cp $4 + jr c, .asm_571f + ld e, $3 + +.asm_571f + ld a, [hl] + srl a + srl a + srl a + cp $12 + jr c, .asm_572c + sub $20 + +.asm_572c + ld [$ffbe], a + ld hl, $0006 + add hl, bc + bit 7, [hl] + jr z, .asm_573e + ld a, d + add $2 + ld d, a + ld a, e + add $2 + ld e, a + +.asm_573e + ld a, d + ld [$ffbf], a +.asm_5741 + ld a, [$ffbf] + ld d, a + ld a, [$ffbe] + add e + dec a + cp $12 + jr nc, .asm_5763 + ld b, a +.asm_574d + ld a, [$ffbd] + add d + dec a + cp $14 + jr nc, .asm_5760 + ld c, a + push bc + call $1d05 + pop bc + ld a, [hl] + cp $60 + jr nc, .asm_5768 + +.asm_5760 + dec d + jr nz, .asm_574d + +.asm_5763 + dec e + jr nz, .asm_5741 + and a + ret + +.asm_5768 + scf + ret +; 576a + +Function576a: ; 576a + call Function5771 + call Function5781 + ret +; 5771 + +Function5771: ; 5771 + xor a + ld [$d14e], a + ld [$d14f], a + ld [$d150], a + ld a, $ff + ld [$d151], a + ret +; 5781 + +Function5781: ; 5781 + ld bc, $d4d6 + xor a +.asm_5785 + ld [hConnectionStripLength], a + call $1af1 + jr z, .asm_578f + call $437b + +.asm_578f + ld hl, $0028 + add hl, bc + ld b, h + ld c, l + ld a, [hConnectionStripLength] + inc a + cp $d + jr nz, .asm_5785 + ret +; 579d + +Function579d: ; 579d + ld a, $3e + ld [$c2de], a + ld [$c2df], a + xor a + ld [$d04e], a + ld [$d4e2], a + call Function57bc + ld a, $5 + ld hl, $49c6 + rst FarCall + call c, $57d9 + call Function57ca + ret +; 57bc + +Function57bc: ; 57bc + ld hl, $d45b + bit 7, [hl] + jr nz, .asm_57c4 + ret + +.asm_57c4 + ld a, $0 + ld [$d4e1], a + ret +; 57ca + +Function57ca: ; 57ca + ld hl, $d45b + bit 5, [hl] + ret z + ld a, [$d45b] + and $3 + add a + add a + jr .asm_57db + + ld a, $0 + +.asm_57db + ld bc, $d4d6 + call $1af8 + ret +; 57e2 + +Function57e2: ; 57e2 + ld a, d + and $80 + ret z + ld bc, $0000 + ld hl, $0008 + add hl, bc + ld a, [hl] + or d + ld [hl], a + ld a, d + swap a + and $7 + ld d, a + ld bc, $d4d6 + ld hl, $0006 + add hl, bc + ld a, [hl] + and $f8 + or d + ld [hl], a + ret +; 5803 + +Function5803: ; 5803 + push bc + ld a, b + call Function5815 + pop bc + ret c + ld a, c + call Function582c + ld a, $2 + ld hl, $448a + rst FarCall + ret +; 5815 + +Function5815: ; 5815 + call $18de + ret c + ld a, [hConnectedMapWidth] + ld [$d4cd], a + ret +; 581f + +Function581f: ; 581f + call Function5826 + call Function5847 + ret +; 5826 + +Function5826: ; 5826 + ld a, $ff + ld [$d4cd], a + ret +; 582c + +Function582c: ; 582c + push af + call Function5847 + pop af + call $18de + ret c + ld hl, $0003 + add hl, bc + ld [hl], $13 + ld hl, $0009 + add hl, bc + ld [hl], $0 + ld a, [hConnectedMapWidth] + ld [$d4ce], a + ret +; 5847 + +Function5847: ; 5847 + ld a, [$d4ce] + cp $ff + ret z + call $1ae5 + callba Function58e3 + ld a, $ff + ld [$d4ce], a + ret +; 585c + +Function585c: ; 585c + ld a, c + call $18de + ret c + push bc + call Function587a + pop bc + ld hl, $0005 + add hl, bc + res 5, [hl] + xor a + ret +; 586e + +Function586e: ; 586e + call $18de + ret c + ld hl, $0005 + add hl, bc + set 5, [hl] + xor a + ret +; 587a + +Function587a: ; 587a + ld bc, $d4d6 + xor a +.asm_587e + push af + call $1af1 + jr z, .asm_588a + ld hl, $0005 + add hl, bc + set 5, [hl] + +.asm_588a + ld hl, $0028 + add hl, bc + ld b, h + ld c, l + pop af + inc a + cp $d + jr nz, .asm_587e + ret +; 5897 + +Function5897: ; 5897 + ld a, [$d4cd] + cp $ff + ret z + push bc + call $1ae5 + ld hl, $0001 + add hl, bc + ld a, [hl] + pop bc + cp c + ret nz + ld a, [$d4ce] + cp $ff + ret z + call $1ae5 + ld hl, $0005 + add hl, bc + res 5, [hl] + ret +; 58b9 + +Function58b9: ; 58b9 + push bc + ld bc, $d4d6 + xor a +.asm_58be + push af + call $1af1 + jr z, .asm_58ca + ld hl, $0005 + add hl, bc + res 5, [hl] + +.asm_58ca + ld hl, $0028 + add hl, bc + ld b, h + ld c, l + pop af + inc a + cp $d + jr nz, .asm_58be + pop bc + ret +; 58d8 + +Function58d8: ; 58d8 + call $18de + ret c + ld hl, $0005 + add hl, bc + res 5, [hl] + ret +; 58e3 + +Function58e3: ; 58e3 + ld hl, $0001 + add hl, bc + ld a, [hl] + cp $ff + jp z, Function5903 + push bc + call GetMapObject + ld hl, $0004 + add hl, bc + ld a, [hl] + pop bc + ld hl, $0003 + add hl, bc + ld [hl], a + ld hl, $0009 + add hl, bc + ld [hl], $0 + ret +; 5903 + +Function5903: ; 5903 + call GetSpriteDirection + rrca + rrca + ld e, a + ld d, $0 + ld hl, .data_591c + add hl, de + ld a, [hl] + ld hl, $0003 + add hl, bc + ld [hl], a + ld hl, $0009 + add hl, bc + ld [hl], $0 + ret + +.data_591c + db 6, 7, 8, 9 +; 5920 + +Function5920: ; 5920 + ld a, [VramState] + bit 0, a + ret z + xor a + ld [$ffbd], a + ld a, [hOAMUpdate] + push af + ld a, $1 + ld [hOAMUpdate], a + call Function5991 + call Function593a + pop af + ld [hOAMUpdate], a + ret +; 593a + +Function593a: ; 593a + ld a, [VramState] + bit 1, a + ld b, $a0 + jr z, .asm_5945 + ld b, $70 + +.asm_5945 + ld a, [$ffbd] + cp b + ret nc + ld l, a + ld h, $c4 + ld de, $0004 + ld a, b + ld c, $a0 +.asm_5952 + ld [hl], c + add hl, de + cp l + jr nz, .asm_5952 + ret +; 5958 + +Function5958: ; 5958 + push hl + push de + push bc + ld a, [$d14c] + ld d, a + ld a, [$d14d] + ld e, a + ld bc, $d4d6 + ld a, $d +.asm_5968 + push af + call $1af1 + jr z, .asm_597c + ld hl, $0017 + add hl, bc + ld a, [hl] + add d + ld [hl], a + ld hl, $0018 + add hl, bc + ld a, [hl] + add e + ld [hl], a + +.asm_597c + ld hl, $0028 + add hl, bc + ld b, h + ld c, l + pop af + dec a + jr nz, .asm_5968 + xor a + ld [$d14c], a + ld [$d14d], a + pop bc + pop de + pop hl + ret +; 5991 + +Function5991: ; 5991 + call Function59a4 + ld c, $30 + call Function59f3 + ld c, $20 + call Function59f3 + ld c, $10 + call Function59f3 + ret +; 59a4 + +Function59a4: ; 59a4 + xor a + ld hl, $c2eb + ld bc, $000d + call ByteFill + ld d, $0 + ld bc, $d4d6 + ld hl, $c2eb +.asm_59b6 + push hl + call $1af1 + jr z, .asm_59d9 + ld hl, $000d + add hl, bc + ld a, [hl] + cp $ff + jr z, .asm_59d9 + ld e, $10 + ld hl, $0005 + add hl, bc + bit 0, [hl] + jr nz, .asm_59e2 + ld e, $20 + bit 1, [hl] + jr z, .asm_59e2 + ld e, $30 + jr .asm_59e2 + +.asm_59d9 + ld hl, $0028 + add hl, bc + ld b, h + ld c, l + pop hl + jr .asm_59ec + +.asm_59e2 + ld hl, $0028 + add hl, bc + ld b, h + ld c, l + pop hl + ld a, d + or e + ld [hli], a + +.asm_59ec + inc d + ld a, d + cp $d + jr nz, .asm_59b6 + ret +; 59f3 + +Function59f3: ; 59f3 + ld hl, $c2eb +.asm_59f6 + ld a, [hli] + ld d, a + and $f0 + ret z + cp c + jr nz, .asm_59f6 + push bc + push hl + ld a, d + and $f + call Function5ac2 + call Function5a0d + pop hl + pop bc + jr .asm_59f6 +; 5a0d + +Function5a0d: ; 5a0d + ld hl, $0002 + add hl, bc + ld a, [hl] + and $7f + ld [$ffc1], a + xor a + bit 7, [hl] + jr nz, .asm_5a1d + or $8 + +.asm_5a1d + ld hl, $0005 + add hl, bc + ld e, [hl] + bit 7, e + jr z, .asm_5a28 + or $80 + +.asm_5a28 + bit 4, e + jr z, .asm_5a2e + or $10 + +.asm_5a2e + ld hl, $0006 + add hl, bc + ld d, a + ld a, [hl] + and $7 + or d + ld d, a + xor a + bit 3, e + jr z, .asm_5a3f + or $80 + +.asm_5a3f + ld [$ffc2], a + ld hl, $0017 + add hl, bc + ld a, [hl] + ld hl, $0019 + add hl, bc + add [hl] + add $8 + ld e, a + ld a, [$d14c] + add e + ld [$ffbf], a + ld hl, $0018 + add hl, bc + ld a, [hl] + ld hl, $001a + add hl, bc + add [hl] + add $c + ld e, a + ld a, [$d14d] + add e + ld [$ffc0], a + ld hl, $000d + add hl, bc + ld a, [hl] + cp $ff + jp z, .asm_5abe + + cp $20 + jp nc, .asm_5abe + ld l, a + ld h, $0 + add hl, hl + ld bc, $4049 + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [$ffbd] + ld c, a + ld b, $c4 + ld a, [hli] + ld [$ffbe], a + add c + cp $a0 + jr nc, .asm_5ac0 + +.asm_5a8e + ld a, [$ffc0] + add [hl] + inc hl + ld [bc], a + inc c + ld a, [$ffbf] + add [hl] + inc hl + ld [bc], a + inc c + ld e, [hl] + inc hl + ld a, [$ffc1] + bit 2, e + jr z, .asm_5aa3 + xor a + +.asm_5aa3 + add [hl] + inc hl + ld [bc], a + inc c + ld a, e + bit 1, a + jr z, .asm_5aaf + ld a, [$ffc2] + or e + +.asm_5aaf + and $f0 + or d + ld [bc], a + inc c + ld a, [$ffbe] + dec a + ld [$ffbe], a + jr nz, .asm_5a8e + ld a, c + ld [$ffbd], a + +.asm_5abe + xor a + ret + +.asm_5ac0 + scf + ret +; 5ac2 + +Function5ac2: ; 5ac2 + ld c, a + ld b, 0 + ld hl, .Addresses + add hl, bc + add hl, bc + ld c, [hl] + inc hl + ld b, [hl] + ret +; 5ace + +.Addresses ; 5ace + dw $d4d6 + dw $d4fe + dw $d526 + dw $d54e + dw $d576 + dw $d59e + dw $d5c6 + dw $d5ee + dw $d616 + dw $d63e + dw $d666 + dw $d68e + dw $d6b6 +; 5ae8 + +Function5ae8: ; 5ae8 + ld de, MUSIC_NONE + call StartMusic + call DelayFrame + ld de, $0054 + ld a, e + ld [CurMusic], a + call StartMusic + ld a, $12 + ld hl, $5cdc + rst FarCall + jp $6219 +; 5b04 + +Function5b04: ; 5b04 + ret +; 5b05 + +Function5b05: ; 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 + +Function5b44: ; 5b44 + xor a + ld [$ffde], a + call ClearTileMap + call $0e5f + call $0e51 + call $1fbf + ret +; 5b54 + +Function5b54: ; 5b54 + call UpdateTime + ld a, $4 + ld hl, $5548 + rst FarCall + ld a, $41 + ld hl, $48ba + rst FarCall + ret +; 5b64 + +Function5b64: ; 5b64 + ld a, $39 + ld hl, $41d0 + rst FarCall + ret +; 5b6b + +Function5b6b: ; 5b6b + xor a + ld [$c2cc], a + call Function5ba7 + call Function5b44 + call Function5b8f + call OakSpeech + call Function5d23 + ld a, $1 + ld [$c2d8], a + ld a, $0 + ld [$d001], a + ld a, $f1 + ld [$ff9f], a + jp $5e5d +; 5b8f + +Function5b8f: ; 5b8f + ld a, $41 + ld hl, $632f + rst FarCall + jr c, .asm_5b9e + ld a, $12 + ld hl, $4dcb + rst FarCall + ret + +.asm_5b9e + ld c, $0 + ld a, $12 + ld hl, $402f + rst FarCall + ret +; 5ba7 + +Function5ba7: ; 5ba7 + xor a + ld [hBGMapMode], a + call Function5bae + ret +; 5bae + +Function5bae: ; 5bae + ld hl, Sprites + ld bc, $0bcc + xor a + call ByteFill + ld hl, $d000 + ld bc, $047b + xor a + call ByteFill + ld hl, PlayerID + ld bc, $0b7a + xor a + call ByteFill + ld a, [rLY] + ld [$ffe3], a + call DelayFrame + ld a, [hRandomSub] + ld [PlayerID], a + ld a, [rLY] + ld [$ffe3], a + call DelayFrame + ld a, [hRandomAdd] + ld [PlayerID + 1], a + call RNG + ld [$d84a], a + call DelayFrame + call RNG + ld [$d84b], a + ld hl, PartyCount + call Function5ca1 + xor a + ld [$db72], a + ld [$d4b4], a + call Function5ca6 + ld a, $1 + call GetSRAMBank + ld hl, $ad10 + call Function5ca1 + call CloseSRAM + ld hl, NumItems + call Function5ca1 + ld hl, NumKeyItems + call Function5ca1 + ld hl, NumBalls + call Function5ca1 + ld hl, $d8f1 + call Function5ca1 + xor a + ld [RoamMon1Species], a + ld [RoamMon2Species], a + ld [RoamMon3Species], a + ld a, $ff + ld [RoamMon1MapGroup], a + ld [RoamMon2MapGroup], a + ld [RoamMon3MapGroup], a + ld [RoamMon1MapNumber], a + ld [RoamMon2MapNumber], a + ld [RoamMon3MapNumber], a + ld a, $0 + call GetSRAMBank + ld hl, $abe2 + xor a + ld [hli], a + dec a + ld [hl], a + call CloseSRAM + call Function5d33 + call Function5cd3 + xor a + ld [MonType], a + ld [JohtoBadges], a + ld [KantoBadges], a + ld [$d855], a + ld [$d856], a + ld [Money], a + ld a, $b + ld [$d84f], a + ld a, $b8 + ld [$d850], a + xor a + ld [$dc17], a + ld hl, $dc19 + ld [hl], $0 + inc hl + ld [hl], $8 + inc hl + ld [hl], $fc + call Function5ce9 + ld a, $9 + ld hl, $6751 + rst FarCall + ld a, $11 + ld hl, $4765 + rst FarCall + ld a, $41 + ld hl, $61c0 + rst FarCall + call $208a + ret +; 5ca1 + +Function5ca1: ; 5ca1 + xor a + ld [hli], a + dec a + ld [hl], a + ret +; 5ca6 + +Function5ca6: ; 5ca6 + ld hl, Box1Name + ld c, $0 +.asm_5cab + push hl + ld de, .Box + call CopyName2 + dec hl + ld a, c + inc a + cp $a + jr c, .asm_5cbe + sub $a + ld [hl], $f7 + inc hl + +.asm_5cbe + add $f6 + ld [hli], a + ld [hl], $50 + pop hl + ld de, $0009 + add hl, de + inc c + ld a, c + cp $e + jr c, .asm_5cab + ret + +.Box + db "BOX@" +; 5cd3 + +Function5cd3: ; 5cd3 + ld hl, $dfe8 + ld a, $3 + ld [hli], a + ld a, $6 + ld [hli], a + ld de, .Ralph + call CopyName2 + ret +; 5ce3 + +.Ralph ; 5ce3 + db "RALPH@" +; 5ce9 + +Function5ce9: ; 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, $000b + call CopyBytes + ret + +.Rival + db "???@" +.Red + db "RED@" +.Green + db "GREEN@" +.Mom + db "MOM@" +; 5d23 + +Function5d23: ; 5d23 + call $610f + ld a, $2 + ld hl, $4029 + rst FarCall + ld a, $4 + ld hl, $53d6 + rst FarCall + ret +; 5d33 + +Function5d33: ; 5d33 + ld a, $0 + call GetSRAMBank + ld a, [CurDay] + inc a + ld b, a + ld a, [$ac68] + cp b + ld a, [$ac6a] + ld c, a + ld a, [$ac69] + jr z, .asm_5d55 + ld a, b + ld [$ac68], a + call RNG + ld c, a + call RNG + +.asm_5d55 + ld [$dc9f], a + ld [$ac69], a + ld a, c + ld [$dca0], a + ld [$ac6a], a + jp CloseSRAM +; 5d65 + +Function5d65: ; 5d65 + ld a, $5 + ld hl, $4ea5 + rst FarCall + jr c, .asm_5dd6 + ld a, $5 + ld hl, $50b9 + rst FarCall + call $1d6e + call Function5e85 + ld a, $1 + ld [hBGMapMode], a + ld c, $14 + call DelayFrames + call Function5e34 + jr nc, .asm_5d8c + call Function1c17 + jr .asm_5dd6 + +.asm_5d8c + call Function5e48 + jr nc, .asm_5d96 + call Function1c17 + jr .asm_5dd6 + +.asm_5d96 + ld a, $8 + ld [MusicFade], a + ld a, $0 + ld [MusicFadeIDLo], a + ld a, $0 + ld [MusicFadeIDHi], a + call WhiteBGMap + call Function5df0 + call Function1c17 + call ClearTileMap + ld c, $14 + call DelayFrames + ld a, $a + ld hl, $6394 + rst FarCall + ld a, $41 + ld hl, $5091 + rst FarCall + ld a, $5 + ld hl, $40ae + rst FarCall + ld a, [$d4b5] + cp $1 + jr z, .asm_5dd7 + ld a, $f2 + ld [$ff9f], a + jp $5e5d + +.asm_5dd6 + ret + +.asm_5dd7 + ld a, $e + ld [$d001], a + call Function5de7 + jp $5e5d +; 5de2 + +Function5de2: ; 5de2 + ld a, $1a + ld [$d001], a +; 5de7 + +Function5de7: ; 5de7 + xor a + ld [$d4b5], a + ld a, $f1 + ld [$ff9f], a + ret +; 5df0 + +Function5df0: ; 5df0 + ld a, $41 + ld hl, $632f + rst FarCall + ret nc + ld hl, $d479 + bit 1, [hl] + ret nz + ld a, $5 + ld [MusicFade], a + ld a, $5e + ld [MusicFadeIDLo], a + ld a, $0 + ld [MusicFadeIDHi], a + ld c, $14 + call DelayFrames + ld c, $1 + ld a, $12 + ld hl, $402f + rst FarCall + ld a, $5 + ld hl, $509a + rst FarCall + ld a, $8 + ld [MusicFade], a + ld a, $0 + ld [MusicFadeIDLo], a + ld a, $0 + ld [MusicFadeIDHi], a + ld c, $23 + call DelayFrames + ret +; 5e34 + +Function5e34: ; 5e34 +.asm_5e34 + call DelayFrame + call $0984 + ld hl, hJoyPressed + bit 0, [hl] + jr nz, .asm_5e47 + bit 1, [hl] + jr z, .asm_5e34 + scf + ret + +.asm_5e47 + ret +; 5e48 + +Function5e48: ; 5e48 + call $06e3 + and $80 + jr z, .asm_5e5b + ld a, $8 + ld hl, $4021 + rst FarCall + ld a, c + and a + jr z, .asm_5e5b + scf + ret + +.asm_5e5b + xor a + ret +; 5e5d + +Function5e5d: ; 5e5d +.asm_5e5d + xor a + ld [$c2c1], a + ld [InLinkBattle], a + ld hl, GameTimerPause + set 0, [hl] + res 7, [hl] + ld hl, $d83e + set 1, [hl] + callba Function966b0 + ld a, [$d4b5] + cp $2 + jr z, .asm_5e80 + jp $0150 + +.asm_5e80 + call Function5de2 + jr .asm_5e5d +; 5e85 + +Function5e85: ; 5e85 + call $06e3 + and $80 + jr z, .asm_5e93 + ld de, $0408 + call Function5eaf + ret + +.asm_5e93 + ld de, $0408 + call Function5e9f + ret +; 5e9a + +Function5e9a: ; 5e9a + ld de, $0400 + jr Function5e9f +; 5e9f + +Function5e9f: ; 5e9f + call Function5ebf + call Function5f1c + call Function5f40 + call $0e5f + call $1ad2 + ret +; 5eaf + +Function5eaf: ; 5eaf + call Function5ebf + call Function5f1c + call Function5f48 + call $0e5f + call $1ad2 + ret +; 5ebf + +Function5ebf: ; 5ebf + xor a + ld [hBGMapMode], a + ld hl, MenuDataHeader_0x5ed9 + ld a, [StatusFlags] + bit 0, a ; pokedex + jr nz, .asm_5ecf + ld hl, MenuDataHeader_0x5efb + +.asm_5ecf + call $1e35 + call $1cbb + call $1c89 + ret +; 5ed9 + +MenuDataHeader_0x5ed9: ; 5ed9 + db $40 ; flags + db 00, 00 ; start coords + db 09, 15 ; end coords + dw MenuData2_0x5ee1 + db 1 ; default option +; 5ee1 + +MenuData2_0x5ee1: ; 5ee1 + db $00 ; flags + db 4 ; items + db "PLAYER@" + db "BADGES@" + db "#DEX@" + db "TIME@" +; 5efb + +MenuDataHeader_0x5efb: ; 5efb + db $40 ; flags + db 00, 00 ; start coords + db 09, 15 ; end coords + dw MenuData2_0x5f03 + db 1 ; default option +; 5f03 + +MenuData2_0x5f03: ; 5f03 + db $00 ; flags + db 4 ; items + db "PLAYER ", $52, "@" + db "BADGES@" + db " @" + db "TIME@" +; 5f1c + + +Function5f1c: ; 5f1c + call $1cfd + push hl + ld de, $005d + add hl, de + call Function5f58 + pop hl + push hl + ld de, $0084 + add hl, de + call Function5f6b + pop hl + push hl + ld de, $0030 + add hl, de + ld de, .Player + call PlaceString + pop hl + ret + +.Player + db $52, "@" +; 5f40 + +Function5f40: ; 5f40 + ld de, $00a9 + add hl, de + call Function5f84 + ret +; 5f48 + +Function5f48: ; 5f48 + ld de, $00a9 + add hl, de + ld de, .text_5f53 + call PlaceString + ret + +.text_5f53 + db " ???@" +; 5f58 + +Function5f58: ; 5f58 + push hl + ld hl, JohtoBadges + ld b, $2 + call CountSetBits + pop hl + ld de, $d265 + ld bc, $0102 + jp $3198 +; 5f6b + +Function5f6b: ; 5f6b + ld a, [StatusFlags] + bit 0, a + ret z + push hl + ld hl, PokedexSeen + ld b, $20 + call CountSetBits + pop hl + ld de, $d265 + ld bc, $0103 + jp $3198 +; 5f84 + +Function5f84: ; 5f84 + ld de, GameTimeHours + ld bc, $0203 + call $3198 + ld [hl], $6d + inc hl + ld de, GameTimeMinutes + ld bc, $8102 + jp $3198 +; 5f99 OakSpeech: ; 0x5f99 @@ -6782,12 +8621,12 @@ INCBIN "baserom.gbc", $c224, $c29d - $c224 SpecialNameRival: ; 0xc29d ld b, $2 ; rival - ld de, WRivalName + ld de, RivalName ld a, BANK(Function116b7) ld hl, Function116b7 rst $8 ; default to "SILVER" - ld hl, WRivalName + ld hl, RivalName ld de, DefaultRivalName call InitString ret @@ -8131,9 +9970,7 @@ StartMenu_Option: ; 1291c ; Game options. call FadeToMenu - ld a, $1 - ld hl, $5b64 - rst FarCall + callba Function5b64 ld a, 6 ret ; 12928 @@ -18718,9 +20555,7 @@ Function967d1: ; 967d1 ; 967e1 Function967e1: ; 967e1 - ld a, $1 - ld hl, $5920 - rst FarCall + callba Function5920 ld a, $3 ld hl, $54d2 rst FarCall -- cgit v1.2.3 From 65bd235e61c8303989af86f9753c8f40488eb567 Mon Sep 17 00:00:00 2001 From: yenatch Date: Mon, 22 Jul 2013 03:00:07 -0400 Subject: even more bank 1 asm --- main.asm | 2964 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 2820 insertions(+), 144 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index dc70f6a89..28c28f5bb 100644 --- a/main.asm +++ b/main.asm @@ -2217,7 +2217,55 @@ GetMapObject: ; 18d2 ; 18de -INCBIN "baserom.gbc", $18de, $1b07 - $18de +INCBIN "baserom.gbc", $18de, $1a2f - $18de + + +Function1a2f: ; 1a2f + ld hl, $0003 + add hl, bc + ld a, [hl] + cp $25 + jr c, .asm_1a39 + xor a + +.asm_1a39 + ld hl, Data4273 + ld e, a + ld d, 0 + add hl, de + add hl, de + add hl, de + add hl, de + add hl, de + add hl, de + ld a, [hl] + ret +; 1a47 + +Function1a47: ; 1a47 + push bc + push de + ld e, a + ld d, 0 + ld hl, Data4273 + 1 + add hl, de + add hl, de + add hl, de + add hl, de + add hl, de + add hl, de + ld a, BANK(Data4273) + call GetFarByte + add a + add a + and $c + pop de + pop bc + ret +; 1a61 + + +INCBIN "baserom.gbc", $1a61, $1b07 - $1a61 GetSpriteDirection: ; 1b07 @@ -5474,118 +5522,2753 @@ StartSFX: ; 3c23 pop de pop hl ret -; 3c4e +; 3c4e + + +WaitPlaySFX: ; 3c4e + call WaitSFX + call StartSFX + ret +; 3c55 + + +WaitSFX: ; 3c55 +; infinite loop until sfx is done playing + + push hl + +.loop + ; ch5 on? + ld hl, Channel5 + Channel1Flags - Channel1 + bit 0, [hl] + jr nz, .loop + ; ch6 on? + ld hl, Channel6 + Channel1Flags - Channel1 + bit 0, [hl] + jr nz, .loop + ; ch7 on? + ld hl, Channel7 + Channel1Flags - Channel1 + bit 0, [hl] + jr nz, .loop + ; ch8 on? + ld hl, Channel8 + Channel1Flags - Channel1 + bit 0, [hl] + jr nz, .loop + + pop hl + ret +; 3c74 + +INCBIN "baserom.gbc", $3c74, $3c97-$3c74 + +MaxVolume: ; 3c97 + ld a, $77 ; max + ld [Volume], a + ret +; 3c9d + +LowVolume: ; 3c9d + ld a, $33 ; 40% + ld [Volume], a + ret +; 3ca3 + +VolumeOff: ; 3ca3 + xor a + ld [Volume], a + ret +; 3ca8 + +INCBIN "baserom.gbc", $3ca8, $3dde - $3ca8 + +CheckSFX: ; 3dde +; returns carry if sfx channels are active + ld a, [$c1cc] ; 1 + bit 0, a + jr nz, .quit + ld a, [$c1fe] ; 2 + bit 0, a + jr nz, .quit + ld a, [$c230] ; 3 + bit 0, a + jr nz, .quit + ld a, [$c262] ; 4 + bit 0, a + jr nz, .quit + and a + ret +.quit + scf + ret +; 3dfe + +INCBIN "baserom.gbc", $3dfe, $3e10 - $3dfe + +ChannelsOff: ; 3e10 +; Quickly turn off music channels + xor a + ld [$c104], a + ld [$c136], a + ld [$c168], a + ld [$c19a], a + ld [$c29c], a + ret +; 3e21 + +SFXChannelsOff: ; 3e21 +; Quickly turn off sound effect channels + xor a + ld [$c1cc], a + ld [$c1fe], a + ld [$c230], a + ld [$c262], a + ld [$c29c], a + ret +; 3e32 + +INCBIN "baserom.gbc", $3e32, $3fb5 - $3e32 + + + +SECTION "bank1",DATA,BANK[$1] + + +Function4000: ; 4000 + hlcoord 3, 10 + ld b, 1 + ld c, 11 + + ld a, [IsInBattle] + and a + jr z, .asm_4012 + + call TextBox + jr .asm_4017 + +.asm_4012 + ld a, $10 + call Predef + +.asm_4017 + hlcoord 4, 11 + ld de, .Waiting + call PlaceString + ld c, 50 + jp DelayFrames +; 4025 + +.Waiting ; 4025 + db "Waiting...!@" +; 4031 + +Function4031: ; 4031 + ld c, hPushOAM & $ff + ld b, PushOAMEnd - PushOAM + ld hl, PushOAM +.loop + ld a, [hli] + ld [$ff00+c], a + inc c + dec b + jr nz, .loop + ret +; 403f + +PushOAM: ; 403f + ld a, $c4 + ld [rDMA], a + ld a, $28 +.loop + dec a + jr nz, .loop + ret +PushOAMEnd +; 4049 + + +DataPointers4049: ; 4049 + dw Data408b + dw Data409c + dw Data408b + dw Data40ad + dw Data40be + dw Data40cf + dw Data40be + dw Data40e0 + dw Data40f1 + dw Data4113 + dw Data40f1 + dw Data4113 + dw Data4102 + dw Data4124 + dw Data4102 + dw Data4124 + dw Data4135 + dw Data414a + dw Data415f + dw Data4174 + dw Data4189 + dw Data419a + dw Data4206 + dw Data41a3 + dw Data408b + dw Data41e4 + dw Data408b + dw Data41f5 + dw Data423f + dw Data4250 + dw Data4261 + dw Data426a + dw $0000 +; 408b + +Data408b: ; 408b + db 4 ; # + db $00, $00, $00, $00 + db $00, $08, $00, $01 + db $08, $00, $02, $02 + db $08, $08, $02, $03 +; 409c + +Data409c: ; 409c + db 4 ; # + db $00, $00, $00, $80 + db $00, $08, $00, $81 + db $08, $00, $02, $82 + db $08, $08, $02, $83 +; 40ad + +Data40ad: ; 40ad + db 4 ; # + db $00, $08, $20, $80 + db $00, $00, $20, $81 + db $08, $08, $22, $82 + db $08, $00, $22, $83 +; 40be + +Data40be: ; 40be + db 4 ; # + db $00, $00, $00, $04 + db $00, $08, $00, $05 + db $08, $00, $02, $06 + db $08, $08, $02, $07 +; 40cf + +Data40cf: ; 40cf + db 4 ; # + db $00, $00, $00, $84 + db $00, $08, $00, $85 + db $08, $00, $02, $86 + db $08, $08, $02, $87 +; 40e0 + +Data40e0: ; 40e0 + db 4 ; # + db $00, $08, $20, $84 + db $00, $00, $20, $85 + db $08, $08, $22, $86 + db $08, $00, $22, $87 +; 40f1 + +Data40f1: ; 40f1 + db 4 ; # + db $00, $00, $00, $08 + db $00, $08, $00, $09 + db $08, $00, $02, $0a + db $08, $08, $02, $0b +; 4102 + +Data4102: ; 4102 + db 4 ; # + db $00, $08, $20, $08 + db $00, $00, $20, $09 + db $08, $08, $22, $0a + db $08, $00, $22, $0b +; 4113 + +Data4113: ; 4113 + db 4 ; # + db $00, $00, $00, $88 + db $00, $08, $00, $89 + db $08, $00, $02, $8a + db $08, $08, $02, $8b +; 4124 + +Data4124: ; 4124 + db 4 ; # + db $00, $08, $20, $88 + db $00, $00, $20, $89 + db $08, $08, $22, $8a + db $08, $00, $22, $8b +; 4135 + +Data4135: ; 4135 + db 5 ; # + db $00, $00, $00, $00 + db $00, $08, $00, $01 + db $08, $00, $02, $02 + db $08, $08, $02, $03 + db $10, $00, $04, $fc +; 414a + +Data414a: ; 414a + db 5 ; # + db $00, $00, $00, $04 + db $00, $08, $00, $05 + db $08, $00, $02, $06 + db $08, $08, $02, $07 + db $f8, $00, $04, $fc +; 415f + +Data415f: ; 415f + db 5 ; # + db $00, $00, $00, $08 + db $00, $08, $00, $09 + db $08, $00, $02, $0a + db $08, $08, $02, $0b + db $05, $f8, $24, $fd +; 4174 + +Data4174: ; 4174 + db 5 ; # + db $00, $08, $20, $08 + db $00, $00, $20, $09 + db $08, $08, $22, $0a + db $08, $00, $22, $0b + db $05, $10, $04, $fd +; 4189 + +Data4189: ; 4189 + db 4 ; # + db $00, $00, $04, $f8 + db $00, $08, $04, $f9 + db $08, $00, $04, $fa + db $08, $08, $04, $fb +; 419a + +Data419a: ; 419a + db 2 ; # + db $00, $00, $04, $fc + db $00, $08, $24, $fc +; 41a3 + +Data41a3: ; 41a3 + db 16 ; # + db $00, $00, $00, $00 + db $00, $08, $00, $01 + db $08, $00, $00, $02 + db $08, $08, $00, $03 + db $10, $00, $00, $04 + db $10, $08, $00, $05 + db $18, $00, $00, $06 + db $18, $08, $00, $07 + db $00, $18, $20, $00 + db $00, $10, $20, $01 + db $08, $18, $20, $02 + db $08, $10, $20, $03 + db $10, $18, $20, $04 + db $10, $10, $20, $05 + db $18, $18, $20, $06 + db $18, $10, $20, $07 +; 41e4 + +Data41e4: ; 41e4 + db 4 ; # + db $00, $00, $00, $04 + db $00, $08, $00, $05 + db $08, $00, $00, $06 + db $08, $08, $00, $07 +; 41f5 + +Data41f5: ; 41f5 + db 4 ; # + db $00, $08, $20, $04 + db $00, $00, $20, $05 + db $08, $08, $20, $06 + db $08, $00, $20, $07 +; 4206 + +Data4206: ; 4206 + db 14 ; # + db $00, $00, $00, $00 + db $00, $08, $00, $01 + db $08, $00, $00, $04 + db $08, $08, $00, $05 + db $10, $08, $00, $07 + db $18, $08, $00, $0a + db $00, $18, $00, $03 + db $00, $10, $00, $02 + db $08, $18, $20, $02 + db $08, $10, $00, $06 + db $10, $18, $00, $09 + db $10, $10, $00, $08 + db $18, $18, $20, $04 + db $18, $10, $00, $0b +; 423f + +Data423f: ; 423f + db 4 ; # + db $00, $00, $04, $fe + db $00, $08, $04, $fe + db $08, $00, $04, $fe + db $08, $08, $04, $fe +; 4250 + +Data4250: ; 4250 + db 4 ; # + db $00, $00, $04, $ff + db $00, $08, $04, $ff + db $08, $00, $04, $ff + db $08, $08, $04, $ff +; 4261 + +Data4261: ; 4261 + db 2 ; # + db $08, $00, $04, $fe + db $08, $08, $24, $fe +; 426a + +Data426a: ; 426a + db 2 ; # + db $09, $ff, $04, $fe + db $09, $09, $24, $fe +; 4273 + + +Data4273: ; 4273 +INCBIN "baserom.gbc", $4273, $4357 - $4273 +; 4357 + + +Function4357: ; 4357 + push bc + ld hl, $0001 + add hl, bc + ld a, [hl] + push af + ld h, b + ld l, c + ld bc, $0028 + xor a + call ByteFill + pop af + cp $ff + jr z, .asm_4379 + bit 7, a + jr nz, .asm_4379 + call GetMapObject + ld hl, $0000 + add hl, bc + ld [hl], $ff + +.asm_4379 + pop bc + ret +; 437b + +Function437b: ; 437b + call Function4386 + ret c + call Function43f3 + call Function4427 + ret +; 4386 + +Function4386: ; 4386 + ld hl, $0005 + add hl, bc + res 6, [hl] + ld a, [XCoord] + ld e, a + ld hl, $0010 + add hl, bc + ld a, [hl] + add $1 + sub e + jr c, .asm_43b2 + cp $c + jr nc, .asm_43b2 + ld a, [YCoord] + ld e, a + ld hl, $0011 + add hl, bc + ld a, [hl] + add $1 + sub e + jr c, .asm_43b2 + cp $b + jr nc, .asm_43b2 + jr .asm_43dc + +.asm_43b2 + ld hl, $0005 + add hl, bc + set 6, [hl] + ld a, [XCoord] + ld e, a + ld hl, $0014 + add hl, bc + ld a, [hl] + add $1 + sub e + jr c, .asm_43de + cp $c + jr nc, .asm_43de + ld a, [YCoord] + ld e, a + ld hl, $0015 + add hl, bc + ld a, [hl] + add $1 + sub e + jr c, .asm_43de + cp $b + jr nc, .asm_43de + +.asm_43dc + and a + ret + +.asm_43de + ld hl, $0004 + add hl, bc + bit 1, [hl] + jr nz, .asm_43eb + call Function4357 + scf + ret + +.asm_43eb + ld hl, $0005 + add hl, bc + set 6, [hl] + and a + ret +; 43f3 + +Function43f3: ; 43f3 + ld hl, $0009 + add hl, bc + ld a, [hl] + and a + jr z, .asm_4409 + ld hl, $0005 + add hl, bc + bit 5, [hl] + jr nz, .asm_4426 + cp $1 + jr z, .asm_4414 + jr .asm_4421 + +.asm_4409 + call Function47bc + ld hl, $0005 + add hl, bc + bit 5, [hl] + jr nz, .asm_4426 + +.asm_4414 + call Function47dd + ld hl, $0009 + add hl, bc + ld a, [hl] + and a + ret z + cp $1 + ret z + +.asm_4421 + ld hl, Pointers4b45 + rst JumpTable + ret + +.asm_4426 + ret +; 4427 + +Function4427: ; 4427 + ld hl, $0004 + add hl, bc + bit 0, [hl] + jr nz, Function44a3 + + ld hl, $0005 + add hl, bc + bit 6, [hl] + jr nz, Function44a3 + + bit 5, [hl] + jr nz, Function4448 + + ld de, Pointers445f + jr Function444d +; 4440 + +Function4440: ; 4440 + ld hl, $0004 + add hl, bc + bit 0, [hl] + jr nz, Function44a3 + ; fallthrough +; 4448 + +Function4448: ; 4448 + ld de, Pointers445f + 2 + jr Function444d +; 444d + +Function444d: ; 444d + ld hl, $000b + add hl, bc + ld a, [hl] + ld l, a + ld h, 0 + add hl, hl + add hl, hl + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + call JpHl + ret +; 445f + +Pointers445f: ; 445f + dw Function44a3 + dw Function44a3 + dw Function44b5 + dw Function44aa + dw Function44c1 + dw Function44aa + dw Function4508 + dw Function44aa + dw Function4529 + dw Function44aa + dw Function4539 + dw Function44a3 + dw Function456e + dw Function456e + dw Function457b + dw Function44a3 + dw Function4582 + dw Function4582 + dw Function4589 + dw Function4589 + dw Function4590 + dw Function45a4 + dw Function45ab + dw Function44aa + dw Function45be + dw Function45be + dw Function45c5 + dw Function45c5 + dw Function45da + dw Function44a3 + dw Function45ed + dw Function44a3 + dw Function44e4 + dw Function44aa +; 44a3 + +Function44a3: ; 44a3 + ld hl, $000d + add hl, bc + ld [hl], $ff + ret +; 44aa + +Function44aa: ; 44aa + call GetSpriteDirection + or $0 + ld hl, $000d + add hl, bc + ld [hl], a + ret +; 44b5 + +Function44b5: ; 44b5 + ld hl, $000d + add hl, bc + ld a, [hl] + and $1 + jr nz, Function44c1 + jp Function44aa +; 44c1 + +Function44c1: ; 44c1 + ld hl, $0004 + add hl, bc + bit 3, [hl] + jp nz, Function44aa + ld hl, $000c + add hl, bc + ld a, [hl] + inc a + and $f + ld [hl], a + rrca + rrca + and $3 + ld d, a + call GetSpriteDirection + or $0 + or d + ld hl, $000d + add hl, bc + ld [hl], a + ret +; 44e4 + +Function44e4: ; 44e4 + ld hl, $0004 + add hl, bc + bit 3, [hl] + jp nz, Function44aa + ld hl, $000c + add hl, bc + ld a, [hl] + add $2 + and $f + ld [hl], a + rrca + rrca + and $3 + ld d, a + call GetSpriteDirection + or $0 + or d + ld hl, $000d + add hl, bc + ld [hl], a + ret +; 4508 + +Function4508: ; 4508 + ld hl, $0004 + add hl, bc + bit 3, [hl] + jp nz, Function44aa + ld hl, $000c + add hl, bc + inc [hl] + ld a, [hl] + rrca + rrca + rrca + and $3 + ld d, a + call GetSpriteDirection + or $0 + or d + ld hl, $000d + add hl, bc + ld [hl], a + ret +; 4529 + +Function4529: ; 4529 + call Function453f + ld hl, $0008 + add hl, bc + ld a, [hl] + or $0 + ld hl, $000d + add hl, bc + ld [hl], a + ret +; 4539 + +Function4539: ; 4539 + call Function453f + jp Function44a3 +; 453f + +Function453f: ; 453f + ld hl, $000c + add hl, bc + ld a, [hl] + and $f0 + ld e, a + ld a, [hl] + inc a + and $f + ld d, a + cp $4 + jr c, .asm_4558 + ld d, 0 + ld a, e + add $10 + and $30 + ld e, a + +.asm_4558 + ld a, d + or e + ld [hl], a + swap e + ld d, 0 + ld hl, .Directions + add hl, de + ld a, [hl] + ld hl, $0008 + add hl, bc + ld [hl], a + ret +; 456a + +.Directions ; 456a + db $00, $0c, $04, $08 +; 456e + +Function456e: ; 456e + call $1b07 + rrca + rrca + add $10 + ld hl, $000d + add hl, bc + ld [hl], a + ret +; 457b + +Function457b: ; 457b + ld hl, $000d + add hl, bc + ld [hl], $15 + ret +; 4582 + +Function4582: ; 4582 + ld hl, $000d + add hl, bc + ld [hl], $14 + ret +; 4589 + +Function4589: ; 4589 + ld hl, $000d + add hl, bc + ld [hl], $17 + ret +; 4590 + +Function4590: ; 4590 + ld hl, $000c + add hl, bc + ld a, [hl] + inc a + and $f + ld [hl], a + and $8 + jr z, Function45a4 + ld hl, $000d + add hl, bc + ld [hl], $4 + ret +; 45a4 + +Function45a4: ; 45a4 + ld hl, $000d + add hl, bc + ld [hl], $0 + ret +; 45ab + +Function45ab: ; 45ab + ld hl, $000c + add hl, bc + ld a, [hl] + inc a + ld [hl], a + and $c + rrca + rrca + add $18 + ld hl, $000d + add hl, bc + ld [hl], a + ret +; 45be + +Function45be: ; 45be + ld hl, $000d + add hl, bc + ld [hl], $16 + ret +; 45c5 + +Function45c5: ; 45c5 + ld a, [$d831] + ld d, $17 + cp $33 + jr z, .asm_45d4 + cp $47 + jr z, .asm_45d4 + ld d, $16 + +.asm_45d4 + ld hl, $000d + add hl, bc + ld [hl], d + ret +; 45da + +Function45da: ; 45da + ld hl, $000c + add hl, bc + inc [hl] + ld a, [hl] + ld hl, $000d + add hl, bc + and $2 + ld a, $1c + jr z, .asm_45eb + inc a + +.asm_45eb + ld [hl], a + ret +; 45ed + +Function45ed: ; 45ed + ld hl, $000c + add hl, bc + inc [hl] + ld a, [hl] + ld hl, $000d + add hl, bc + and $4 + ld a, $1e + jr z, .asm_45fe + inc a + +.asm_45fe + ld [hl], a + ret +; 4600 + +Function4600: ; 4600 + ld hl, $0010 + add hl, bc + ld a, [hl] + ld hl, $0012 + add hl, bc + ld [hl], a + ld hl, $0011 + add hl, bc + ld a, [hl] + ld hl, $0013 + add hl, bc + ld [hl], a + ld hl, $000e + add hl, bc + ld a, [hl] + ld hl, $000f + add hl, bc + ld [hl], a + call Function4661 + ld hl, $000e + add hl, bc + ld a, [hl] + call Function4679 + ret +; 462a + +Function462a: ; 462a + ld hl, $0012 + add hl, bc + ld a, [hl] + ld hl, $0010 + add hl, bc + ld [hl], a + ld hl, $0013 + add hl, bc + ld a, [hl] + ld hl, $0011 + add hl, bc + ld [hl], a + ret +; 463f + +Function463f: ; 463f + ld hl, $0005 + add hl, bc + bit 3, [hl] + jr z, .asm_464f + ld hl, $000e + add hl, bc + ld a, [hl] + call Function4661 + +.asm_464f + ld hl, $000e + add hl, bc + ld a, [hl] + call Function4679 + ret c + ld hl, $000f + add hl, bc + ld a, [hl] + call Function4679 + ret +; 4661 + +Function4661: ; 4661 + call $188e + jr z, .asm_466b + call $1875 + jr c, .asm_4672 + +.asm_466b + ld hl, $0005 + add hl, bc + set 3, [hl] + ret + +.asm_4672 + ld hl, $0005 + add hl, bc + res 3, [hl] + ret +; 4679 + +Function4679: ; 4679 + and a + ret +; 467b + +Function467b: ; 467b + xor a + ld hl, $000c + add hl, bc + ld [hl], a + ld hl, $001b + add hl, bc + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld hl, $0007 + add hl, bc + ld [hl], $ff + ret +; 4690 + +Function4690: ; 4690 + ld hl, $0007 + add hl, bc + ld [hl], a + ld hl, $0004 + add hl, bc + bit 2, [hl] + jr nz, .asm_46a6 + + add a + add a + and $c + ld hl, $0008 + add hl, bc + ld [hl], a + +.asm_46a6 + ; fallthrough +; 46a6 + +Function46a6: ; 46a6 + call Function46e9 + ld hl, $000a + add hl, bc + ld [hl], a + ld a, d + call Function4730 + ld hl, $0012 + add hl, bc + add [hl] + ld hl, $0010 + add hl, bc + ld [hl], a + ld d, a + ld a, e + call Function4730 + ld hl, $0013 + add hl, bc + add [hl] + ld hl, $0011 + add hl, bc + ld [hl], a + ld e, a + push bc + call $2a3c + pop bc + ld hl, $000e + add hl, bc + ld [hl], a + ret +; 46d7 + +Function46d7: ; 46d7 + call Function46e9 + ld hl, $0017 + add hl, bc + ld a, [hl] + add d + ld [hl], a + ld hl, $0018 + add hl, bc + ld a, [hl] + add e + ld [hl], a + ret +; 46e9 + +Function46e9: ; 46e9 + ld hl, $0007 + add hl, bc + ld a, [hl] + and $f + add a + add a + ld l, a + ld h, 0 + ld de, .Steps + add hl, de + ld d, [hl] + inc hl + ld e, [hl] + inc hl + ld a, [hli] + ld h, [hl] + ret +; 4700 + +.Steps ; 4700 + ; x, y, duration, speed + ; slow + db 0, 1, $10, $01 + db 0, -1, $10, $01 + db -1, 0, $10, $01 + db 1, 0, $10, $01 + ; normal + db 0, 2, $08, $02 + db 0, -2, $08, $02 + db -2, 0, $08, $02 + db 2, 0, $08, $02 + ; fast + db 0, 4, $04, $04 + db 0, -4, $04, $04 + db -4, 0, $04, $04 + db 4, 0, $04, $04 +; 4730 + +Function4730: ; 4730 + add a + ret z + ld a, 1 + ret nc + ld a, -1 + ret +; 4738 + +Function4738: ; 4738 + ld hl, $0007 + add hl, bc + ld a, [hl] + and $3 + ld [$d151], a + call Function46d7 + ld a, [$d14e] + add d + ld [$d14e], a + ld a, [$d14f] + add e + ld [$d14f], a + ld hl, $d150 + set 5, [hl] + ret +; 4759 + +Function4759: ; 4759 + push bc + ld e, a + ld d, 0 + ld hl, $0001 + add hl, bc + ld a, [hl] + call GetMapObject + add hl, de + ld a, [hl] + pop bc + ret +; 4769 + +Function4769: ; 4769 + ld hl, $0001 + add hl, bc + ld a, [hl] + cp $ff + jr z, .asm_477d + push bc + call GetMapObject + ld hl, $0004 + add hl, bc + ld a, [hl] + pop bc + ret + +.asm_477d + ld a, $6 + ret +; 4780 + +Function4780: ; 4780 + ld hl, $001b + add hl, bc + ld [hl], $0 + ret +; 4787 + +Function4787: ; 4787 + ld hl, $001b + add hl, bc + inc [hl] + ret +; 478d + +Function478d: ; 478d + ld hl, $001b + add hl, bc + dec [hl] + ret +; 4793 + +Function4793: ; 4793 + ld hl, $001b + add hl, bc + ld a, [hl] + pop hl + rst JumpTable + ret +; 479b + +Function479b: ; 479b + ld hl, $001c + add hl, bc + ld [hl], $0 + ret +; 47a2 + +Function47a2: ; 47a2 + ld hl, $001c + add hl, bc + inc [hl] + ret +; 47a8 + +Function47a8: ; 47a8 + ld hl, $001c + add hl, bc + ld a, [hl] + pop hl + rst JumpTable + ret +; 47b0 + +Function47b0: ; 47b0 + ld hl, $001c + add hl, bc + ld a, [hl] + ret +; 47b6 + +Function47b6: ; 47b6 + ld hl, $001c + add hl, bc + ld [hl], a + ret +; 47bc + +Function47bc: ; 47bc + ld hl, $0010 + add hl, bc + ld d, [hl] + ld hl, $0011 + add hl, bc + ld e, [hl] + push bc + call $2a3c + pop bc + ld hl, $000e + add hl, bc + ld [hl], a + call Function4600 + call Function467b + ld hl, $0009 + add hl, bc + ld [hl], $1 + ret +; 47dd + +Function47dd: ; 47dd + call Function479b + call Function1a2f + ld a, [hl] + ld hl, .Pointers + rst JumpTable + ret +; 47e9 + +.Pointers ; 47e9 + dw Function4821 + dw Function4822 + dw Function482c + dw Function4838 + dw Function4842 + dw Function4851 + dw Function4869 + dw Function487c + dw Function4882 + dw Function4888 + dw Function488e + dw Function4891 + dw Function4894 + dw Function4897 + dw Function489d + dw Function48a0 + dw Function48a6 + dw Function48ac + dw Function48ff + dw Function49e5 + dw Function4a21 + dw Function4958 + dw Function496e + dw Function4abc + dw Function498d + dw Function4984 + dw Function4a46 + dw Function4a89 +; 4821 + +Function4821: ; 4821 + ret +; 4822 + +Function4822: ; 4822 + call RNG + ld a, [hRandomAdd] + and 1 + jp Function4af0 +; 482c + +Function482c: ; 482c + call RNG + ld a, [hRandomAdd] + and 1 + or 2 + jp Function4af0 +; 4838 + +Function4838: ; 4838 + call RNG + ld a, [hRandomAdd] + and 3 + jp Function4af0 +; 4842 + +Function4842: ; 4842 + call RNG + ld a, [hRandomAdd] + and $c + ld hl, $0008 + add hl, bc + ld [hl], a + jp Function4b1d +; 4851 + +Function4851: ; 4851 + ld hl, $0008 + add hl, bc + ld a, [hl] + and $c + ld d, a + call RNG + ld a, [hRandomAdd] + and $c + cp d + jr nz, .asm_4865 + xor $c + +.asm_4865 + ld [hl], a + jp Function4b26 +; 4869 + +Function4869: ; 4869 + call Function462a + call Function467b + ld hl, $000b + add hl, bc + ld [hl], $1 + ld hl, $0009 + add hl, bc + ld [hl], $5 + ret +; 487c + +Function487c: ; 487c + ld hl, Function5000 + jp Function5041 +; 4882 + +Function4882: ; 4882 + ld hl, Function5015 + jp Function5041 +; 4888 + +Function4888: ; 4888 + ld hl, Function5026 + jp Function5041 +; 488e + +Function488e: ; 488e + jp Function5037 +; 4891 + +Function4891: ; 4891 + jp Function5037 +; 4894 + +Function4894: ; 4894 + jp Function5037 +; 4897 + +Function4897: ; 4897 + ld hl, Function5000 + jp Function5041 +; 489d + +Function489d: ; 489d + jp Function5037 +; 48a0 + +Function48a0: ; 48a0 + ld hl, Function54e6 + jp Function5041 +; 48a6 + +Function48a6: ; 48a6 + ld hl, Function500e + jp Function5041 +; 48ac + +Function48ac: ; 48ac + call Function4793 + dw Function48b3 + dw Function48f8 +; 48b3 + +Function48b3: ; 48b3 + ld hl, $000e + add hl, bc + ld a, [hl] + call CheckPitTile + jr z, .asm_48f5 + ld hl, $0005 + add hl, bc + bit 2, [hl] + res 2, [hl] + jr z, .asm_48ee + ld hl, $0020 + add hl, bc + ld a, [hl] + and $3 + or $0 + call Function4690 + call $6ec1 + jr c, .asm_48eb + ld de, SFX_STRENGTH + call StartSFX + call Function5538 + call Function463f + ld hl, $0009 + add hl, bc + ld [hl], $f + ret + +.asm_48eb + call Function462a + +.asm_48ee + ld hl, $0007 + add hl, bc + ld [hl], $ff + ret + +.asm_48f5 + call Function4787 + ; fallthrough +; 48f8 + +Function48f8: ; 48f8 + ld hl, $0007 + add hl, bc + ld [hl], $ff + ret +; 48ff + +Function48ff: ; 48ff + ld hl, $0010 + add hl, bc + ld d, [hl] + ld hl, $0011 + add hl, bc + ld e, [hl] + ld hl, $0020 + add hl, bc + ld a, [hl] + push bc + call $1ae5 + ld hl, $0007 + add hl, bc + ld a, [hl] + cp $ff + jr z, .asm_494a + ld hl, $0012 + add hl, bc + ld a, [hl] + cp d + jr z, .asm_492d + jr c, .asm_4929 + ld a, $3 + jr .asm_493d + +.asm_4929 + ld a, $2 + jr .asm_493d + +.asm_492d + ld hl, $0013 + add hl, bc + ld a, [hl] + cp e + jr z, .asm_494a + jr c, .asm_493b + ld a, $0 + jr .asm_493d + +.asm_493b + ld a, $1 + +.asm_493d + ld d, a + ld hl, $0007 + add hl, bc + ld a, [hl] + and $c + or d + pop bc + jp Function5412 + +.asm_494a + pop bc + ld hl, $0007 + add hl, bc + ld [hl], $ff + ld hl, $000b + add hl, bc + ld [hl], $1 + ret +; 4958 + +Function4958: ; 4958 + call Function467b + ld hl, $0007 + add hl, bc + ld [hl], $ff + ld hl, $000b + add hl, bc + ld [hl], $9 + ld hl, $0009 + add hl, bc + ld [hl], $4 + ret +; 496e + +Function496e: ; 496e + call Function467b + ld hl, $0007 + add hl, bc + ld [hl], $ff + ld hl, $000b + add hl, bc + ld [hl], $a + ld hl, $0009 + add hl, bc + ld [hl], $4 + ret +; 4984 + +Function4984: ; 4984 + call Function4793 + dw Function4996 + dw Function499c + dw Function49b8 +; 498d + +Function498d: ; 498d + call Function4793 + dw Function4996 + dw Function499c + dw Function49c4 +; 4996 + +Function4996: ; 4996 + call Function467b + call Function4787 + ; fallthrough +; 499c + +Function499c: ; 499c + ld hl, $000b + add hl, bc + ld [hl], $1 + ld hl, $0020 + add hl, bc + ld a, [hl] + ld a, $10 + ld hl, $000a + add hl, bc + ld [hl], a + ld hl, $0009 + add hl, bc + ld [hl], $3 + call Function4787 + ret +; 49b8 + +Function49b8: ; 49b8 + ld de, .data_49c0 + call Function49d0 + jr Function4984 +; 49c0 + +.data_49c0 ; 49c0 + db $0c, $08, $00, $04 +; 49c4 + +Function49c4: ; 49c4 + ld de, .data_49cc + call Function49d0 + jr Function498d +; 49cc + +.data_49cc ; 49cc + db $08, $0c, $04, $00 +; 49d0 + +Function49d0: ; 49d0 + ld hl, $0008 + add hl, bc + ld a, [hl] + and $c + rrca + rrca + push hl + ld l, a + ld h, $0 + add hl, de + ld a, [hl] + pop hl + ld [hl], a + call Function478d + ret +; 49e5 + +Function49e5: ; 49e5 + call Function4aa8 + ld hl, $000b + add hl, bc + ld [hl], $7 + ld hl, $000a + add hl, de + ld a, [hl] + inc a + add a + add $0 + ld hl, $000a + add hl, bc + ld [hl], a + ld hl, $0007 + add hl, de + ld a, [hl] + and 3 + ld d, $e + cp 0 + jr z, .asm_4a0f + cp 1 + jr z, .asm_4a0f + ld d, $c + +.asm_4a0f + ld hl, $001a + add hl, bc + ld [hl], d + ld hl, $0019 + add hl, bc + ld [hl], $0 + ld hl, $0009 + add hl, bc + ld [hl], $13 + ret +; 4a21 + +Function4a21: ; 4a21 + call Function467b + call Function4aa8 + ld hl, $000b + add hl, bc + ld [hl], $8 + ld hl, $000a + add hl, bc + ld [hl], $0 + ld hl, $001a + add hl, bc + ld [hl], $f0 + ld hl, $0019 + add hl, bc + ld [hl], $0 + ld hl, $0009 + add hl, bc + ld [hl], $13 + ret +; 4a46 + +Function4a46: ; 4a46 + call Function467b + call Function4aa8 + ld hl, $000b + add hl, bc + ld [hl], $e + ld hl, $000a + add hl, de + ld a, [hl] + inc a + add a + ld hl, $000a + add hl, bc + ld [hl], a + ld hl, $0007 + add hl, de + ld a, [hl] + and 3 + ld e, a + ld d, 0 + ld hl, .data_4a81 + add hl, de + add hl, de + ld d, [hl] + inc hl + ld e, [hl] + ld hl, $0019 + add hl, bc + ld [hl], d + ld hl, $001a + add hl, bc + ld [hl], e + ld hl, $0009 + add hl, bc + ld [hl], $13 + ret +; 4a81 + +.data_4a81 ; 4a81 + ; x, y + db 0, -4 + db 0, 8 + db 6, 2 + db -6, 2 +; 4a89 + +Function4a89: ; 4a89 + call Function467b + call Function4aa8 + ld hl, $000b + add hl, bc + ld [hl], $f + ld hl, $000a + add hl, de + ld a, [hl] + add $ff + ld hl, $000a + add hl, bc + ld [hl], a + ld hl, $0009 + add hl, bc + ld [hl], $13 + ret +; 4aa8 + +Function4aa8: ; 4aa8 + ld hl, $0020 + add hl, bc + ld a, [hl] + push bc + call $1ae5 + ld d, b + ld e, c + pop bc + ld hl, $001d + add hl, bc + ld [hl], e + inc hl + ld [hl], d + ret +; 4abc + +Function4abc: ; 4abc + call Function467b + ld hl, $000b + add hl, bc + ld [hl], $0 + ld hl, $0020 + add hl, bc + ld a, [hl] + call Function4ade + ld hl, $000a + add hl, bc + ld [hl], e + ld hl, $001e + add hl, bc + ld [hl], a + ld hl, $0009 + add hl, bc + ld [hl], $15 + ret +; 4ade + +Function4ade: ; 4ade + ld d, a + and $3f + ld e, a + ld a, d + rlca + rlca + and $3 + ld d, a + inc d + ld a, $1 +.asm_4aeb + dec d + ret z + add a + jr .asm_4aeb +; 4af0 + +Function4af0: ; 4af0 + call Function4690 + call $6ec1 + jr c, Function4b17 + call Function463f + ld hl, $000b + add hl, bc + ld [hl], $2 + ld hl, $d4cf + ld a, [hConnectionStripLength] + cp [hl] + jr z, .asm_4b10 + ld hl, $0009 + add hl, bc + ld [hl], $7 + ret + +.asm_4b10 + ld hl, $0009 + add hl, bc + ld [hl], $6 + ret + +Function4b17: ; 4b17 + call Function467b + call Function462a + ; fallthrough +; 4b1d + +Function4b1d: ; 4b1d + call RNG + ld a, [hRandomAdd] + and $7f + jr Function4b2d +; 4b26 + +Function4b26: ; 4b26 + call RNG + ld a, [hRandomAdd] + and $1f + ; fallthrough +; 4b2d + +Function4b2d: ; 4b2d + ld hl, $000a + add hl, bc + ld [hl], a + ld hl, $0007 + add hl, bc + ld [hl], $ff + ld hl, $000b + add hl, bc + ld [hl], $1 + ld hl, $0009 + add hl, bc + ld [hl], $3 + 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 +; 4b79 + +Function4b79: ; 4b79 + ld hl, $000a + add hl, bc + dec [hl] + ret nz + ld hl, $0009 + add hl, bc + ld [hl], $1 + ret +; 4b86 + +Function4b86: ; 4b86 + call Function47a8 + dw Function4b8d + dw Function4ba9 +; 4b8d + +Function4b8d: ; 4b8d + call Function46d7 + call UpdateJumpPosition + ld hl, $000a + add hl, bc + dec [hl] + ret nz + call Function4600 + call Function46a6 + ld hl, $0005 + add hl, bc + res 3, [hl] + call Function47a2 + ret +; 4ba9 + +Function4ba9: ; 4ba9 + call Function46d7 + call UpdateJumpPosition + ld hl, $000a + add hl, bc + dec [hl] + ret nz + call Function4600 + ld hl, $0009 + add hl, bc + ld [hl], $1 + ret +; 4bbf + +Function4bbf: ; 4bbf + call Function47a8 + dw Function4bca + dw Function4bd2 + dw Function4bf2 + dw Function4bfd +; 4bca + +Function4bca: ; 4bca + ld hl, $d150 + set 7, [hl] + call Function47a2 +; fallthrough +; 4bd2 + +Function4bd2: ; 4bd2 + call UpdateJumpPosition + call Function4738 + ld hl, $000a + add hl, bc + dec [hl] + ret nz + call Function4600 + ld hl, $0005 + add hl, bc + res 3, [hl] + ld hl, $d150 + set 6, [hl] + set 4, [hl] + call Function47a2 + ret +; 4bf2 + +Function4bf2: ; 4bf2 + call Function46a6 + ld hl, $d150 + set 7, [hl] + call Function47a2 +; fallthrough +; 4bfd + +Function4bfd: ; 4bfd + call UpdateJumpPosition + call Function4738 + ld hl, $000a + add hl, bc + dec [hl] + ret nz + ld hl, $d150 + set 6, [hl] + call Function4600 + ld hl, $0009 + add hl, bc + ld [hl], $1 + ret +; 4c18 + +Function4c18: ; 4c18 + call Function47a8 + dw Function4c23 + dw Function4c32 + dw Function4c42 + dw Function4c5d +; 4c23 + +Function4c23: ; 4c23 + ld hl, $000c + add hl, bc + ld [hl], $0 + ld hl, $000a + add hl, bc + ld [hl], $10 + call Function47a2 +; fallthrough +; 4c32 + +Function4c32: ; 4c32 + ld hl, $000b + add hl, bc + ld [hl], $4 + ld hl, $000a + add hl, bc + dec [hl] + ret nz + call Function47a2 + ret +; 4c42 + +Function4c42: ; 4c42 + ld hl, $000c + add hl, bc + ld [hl], $0 + ld hl, $001f + add hl, bc + ld [hl], $10 + ld hl, $000a + add hl, bc + ld [hl], $10 + ld hl, $0005 + add hl, bc + res 3, [hl] + call Function47a2 +; fallthrough +; 4c5d + +Function4c5d: ; 4c5d + ld hl, $000b + add hl, bc + ld [hl], $4 + ld hl, $001f + add hl, bc + inc [hl] + ld a, [hl] + ld d, $60 + call $1b11 + ld a, h + sub $60 + ld hl, $001a + add hl, bc + ld [hl], a + ld hl, $000a + add hl, bc + dec [hl] + ret nz + ld hl, $000c + add hl, bc + ld [hl], $0 + ld hl, $0009 + add hl, bc + ld [hl], $1 + ret +; 4c89 + +Function4c89: ; 4c89 + call Function47a8 + dw Function4c9a + dw Function4caa + dw Function4cb3 + dw Function4cc9 + dw Function4ceb + dw Function4cf5 + dw Function4d01 +; 4c9a + +Function4c9a: ; 4c9a + ld hl, $000b + add hl, bc + ld [hl], $0 + ld hl, $000a + add hl, bc + ld [hl], $10 + call Function47a2 + ret +; 4caa + +Function4caa: ; 4caa + ld hl, $000a + add hl, bc + dec [hl] + ret nz + call Function47a2 +; fallthrough +; 4cb3 + +Function4cb3: ; 4cb3 + ld hl, $000c + add hl, bc + ld [hl], $0 + ld hl, $001f + add hl, bc + ld [hl], $0 + ld hl, $000a + add hl, bc + ld [hl], $10 + call Function47a2 + ret +; 4cc9 + +Function4cc9: ; 4cc9 + ld hl, $000b + add hl, bc + ld [hl], $4 + ld hl, $001f + add hl, bc + inc [hl] + ld a, [hl] + ld d, $60 + call $1b11 + ld a, h + sub $60 + ld hl, $001a + add hl, bc + ld [hl], a + ld hl, $000a + add hl, bc + dec [hl] + ret nz + call Function47a2 +; fallthrough +; 4ceb + +Function4ceb: ; 4ceb + ld hl, $000a + add hl, bc + ld [hl], $10 + call Function47a2 + ret +; 4cf5 + +Function4cf5: ; 4cf5 + ld hl, $000b + add hl, bc + ld [hl], $4 + ld hl, $000a + add hl, bc + dec [hl] + ret nz +; 4d01 + +Function4d01: ; 4d01 + ld hl, $000c + add hl, bc + ld [hl], $0 + ld hl, $001a + add hl, bc + ld [hl], $0 + ld hl, $0009 + add hl, bc + ld [hl], $1 + ret +; 4d14 + +Function4d14: ; 4d14 + call Function47a8 + dw Function4d1f + dw Function4d2e + dw Function4d4f + dw Function4d6b +; 4d1f + +Function4d1f: ; 4d1f + ld hl, $000b + add hl, bc + ld [hl], $0 + ld hl, $000a + add hl, bc + ld [hl], $10 + call Function47a2 +; fallthrough +; 4d2e + +Function4d2e: ; 4d2e + ld hl, $000a + add hl, bc + dec [hl] + ret nz + ld hl, $000b + add hl, bc + ld [hl], $2 + ld hl, $000c + add hl, bc + ld [hl], $0 + ld hl, $001f + add hl, bc + ld [hl], $0 + ld hl, $000a + add hl, bc + ld [hl], $10 + call Function47a2 +; fallthrough +; 4d4f + +Function4d4f: ; 4d4f + ld hl, $001f + add hl, bc + inc [hl] + ld a, [hl] + ld d, $60 + call $1b11 + ld a, h + sub $60 + ld hl, $001a + add hl, bc + ld [hl], a + ld hl, $000a + add hl, bc + dec [hl] + ret nz + call Function47a2 +; fallthrough +; 4d6b + +Function4d6b: ; 4d6b + ld hl, $000c + add hl, bc + ld [hl], $0 + ld hl, $001a + add hl, bc + ld [hl], $0 + ld hl, $0009 + add hl, bc + ld [hl], $1 + ret +; 4d7e + +Function4d7e: ; 4d7e + call Function47a8 + dw Function4d85 + dw Function4d94 +; 4d85 + +Function4d85: ; 4d85 + ld hl, $000a + add hl, bc + ld [hl], $8 + ld hl, $001a + add hl, bc + ld [hl], $0 + call Function47a2 + ; fallthrough +; 4d94 + +Function4d94: ; 4d94 + ld hl, $001a + add hl, bc + ld a, [hl] + xor 1 + ld [hl], a + ld hl, $000a + add hl, bc + dec [hl] + ret nz + ld hl, $001a + add hl, bc + ld [hl], $0 + ld hl, $0009 + add hl, bc + ld [hl], $1 + ret +; 4daf + +Function4daf: ; 4daf + call Function4db5 + jp Function4b79 +; 4db5 + +Function4db5: ; 4db5 + ld hl, $000a + add hl, bc + ld a, [hl] + and $1 + ld a, $1 + jr z, .asm_4dc2 + ld a, $0 + +.asm_4dc2 + ld hl, $000b + add hl, bc + ld [hl], a + ret +; 4dc8 + +Function4dc8: ; 4dc8 + ld hl, $000a + add hl, bc + ld a, [hl] + and $1 + ld a, $4 + jr z, .asm_4dd5 + ld a, $5 + +.asm_4dd5 + ld hl, $000b + add hl, bc + ld [hl], a + jp Function4b79 +; 4ddd + +Function4ddd: ; 4ddd + ld hl, $0007 + add hl, bc + ld [hl], $ff + ld hl, $000a + add hl, bc + dec [hl] + ret nz + ld hl, $0009 + add hl, bc + ld [hl], $1 + ret +; 4df0 + +Function4df0: ; 4df0 + ld hl, $0007 + add hl, bc + ld [hl], $ff + ld hl, $000a + add hl, bc + dec [hl] + ret nz + jp Function4357 +; 4dff + +Function4dff: ; 4dff + ld hl, $000a + add hl, bc + dec [hl] + ret nz + ld hl, $0009 + add hl, bc + ld [hl], $1 + ret +; 4e0c + +Function4e0c: ; 4e0c + call Function47a8 + dw Function4e13 + dw Function4e21 +; 4e13 + +Function4e13: ; 4e13 + call Function4769 + call Function1a47 + ld hl, $0008 + add hl, bc + ld [hl], a + call Function47a2 + ; fallthrough +; 4e21 + +Function4e21: ; 4e21 + call Function4fb2 + ld hl, $0007 + add hl, bc + ld [hl], $ff + ret +; 4e2b + +Function4e2b: ; 4e2b + call Function4fb2 + call Function46d7 + ld hl, $000a + add hl, bc + dec [hl] + ret nz + call Function4600 + ld hl, $0007 + add hl, bc + ld [hl], $ff + ld hl, $0009 + add hl, bc + ld [hl], $1 + ret +; 4e47 + +Function4e47: ; 4e47 + call Function46d7 + ld hl, $000a + add hl, bc + dec [hl] + ret nz + call Function4600 + jp Function4b1d +; 4e56 + +Function4e56: ; 4e56 +; AnimateStep? + call Function47a8 + dw Function4e5d + dw Function4e65 +; 4e5d + +Function4e5d: ; 4e5d + ld hl, $d150 + set 7, [hl] + call Function47a2 + ; fallthrough +; 4e65 + +Function4e65: ; 4e65 + call Function4738 + ld hl, $000a + add hl, bc + dec [hl] + ret nz + ld hl, $d150 + set 6, [hl] + call Function4600 + ld hl, $0007 + add hl, bc + ld [hl], $ff + ld hl, $0009 + add hl, bc + ld [hl], $1 + ret +; 4e83 + +Function4e83: ; 4e83 + call Function47a8 + dw Function4e8e + dw Function4ea4 + dw Function4ead + dw Function4ec0 +; 4e8e + +Function4e8e: ; 4e8e + ld hl, $0007 + add hl, bc + ld [hl], $ff + ld hl, $000c + add hl, bc + ld a, [hl] + ld [hl], $2 + ld hl, $000a + add hl, bc + ld [hl], $2 + call Function47a2 + ; fallthrough +; 4ea4 + +Function4ea4: ; 4ea4 + ld hl, $000a + add hl, bc + dec [hl] + ret nz + call Function47a2 + ; fallthrough +; 4ead + +Function4ead: ; 4ead + ld hl, $001d + add hl, bc + ld a, [hl] + ld hl, $0008 + add hl, bc + ld [hl], a + ld hl, $000a + add hl, bc + ld [hl], $2 + call Function47a2 + ; fallthrough +; 4ec0 + +Function4ec0: ; 4ec0 + ld hl, $000a + add hl, bc + dec [hl] + ret nz + ld hl, $0009 + add hl, bc + ld [hl], $1 + ret +; 4ecd - -WaitPlaySFX: ; 3c4e - call WaitSFX - call StartSFX +Function4ecd: ; 4ecd + call Function46d7 + ld hl, $000a + add hl, bc + dec [hl] + ret nz + push bc + ld hl, $0010 + add hl, bc + ld d, [hl] + ld hl, $0011 + add hl, bc + ld e, [hl] + ld hl, $0001 + add hl, bc + ld a, [hl] + ld b, a + ld a, $2 + ld hl, $407e + rst FarCall + pop bc + ld hl, $0005 + add hl, bc + res 2, [hl] + call Function4600 + ld hl, $0007 + add hl, bc + ld [hl], $ff + ld hl, $0009 + add hl, bc + ld [hl], $1 ret -; 3c55 +; 4f04 +Function4f04: ; 4f04 + ld hl, $001d + add hl, bc + ld e, [hl] + inc hl + ld d, [hl] + ld hl, $0000 + add hl, de + ld a, [hl] + and a + jr z, .asm_4f30 + ld hl, $0017 + add hl, de + ld a, [hl] + ld hl, $0017 + add hl, bc + ld [hl], a + ld hl, $0018 + add hl, de + ld a, [hl] + ld hl, $0018 + add hl, bc + ld [hl], a + ld hl, $000a + add hl, bc + ld a, [hl] + and a + ret z + dec [hl] + ret nz -WaitSFX: ; 3c55 -; infinite loop until sfx is done playing +.asm_4f30 + jp Function4357 +; 4f33 - push hl - -.loop - ; ch5 on? - ld hl, Channel5 + Channel1Flags - Channel1 - bit 0, [hl] - jr nz, .loop - ; ch6 on? - ld hl, Channel6 + Channel1Flags - Channel1 - bit 0, [hl] - jr nz, .loop - ; ch7 on? - ld hl, Channel7 + Channel1Flags - Channel1 - bit 0, [hl] - jr nz, .loop - ; ch8 on? - ld hl, Channel8 + Channel1Flags - Channel1 - bit 0, [hl] - jr nz, .loop - - pop hl - ret -; 3c74 +Function4f33: ; 4f33 + call Function47a8 + dw Function4f3a + dw Function4f43 +; 4f3a -INCBIN "baserom.gbc", $3c74, $3c97-$3c74 +Function4f3a: ; 4f3a + xor a + ld hl, $001d + add hl, bc + ld [hl], a + call Function47a2 + ; fallthrough +; 4f43 -MaxVolume: ; 3c97 - ld a, $77 ; max - ld [Volume], a +Function4f43: ; 4f43 + ld hl, $001d + add hl, bc + ld d, [hl] + ld a, [$d14f] + sub d + ld [$d14f], a + ld hl, $000a + add hl, bc + dec [hl] + jr z, .asm_4f68 + ld a, [hl] + call Function4f6c + ld hl, $001d + add hl, bc + ld [hl], a + ld d, a + ld a, [$d14f] + add d + ld [$d14f], a ret -; 3c9d -LowVolume: ; 3c9d - ld a, $33 ; 40% - ld [Volume], a +.asm_4f68 + call Function4357 ret -; 3ca3 +; 4f6c -VolumeOff: ; 3ca3 - xor a - ld [Volume], a +Function4f6c: ; 4f6c + ld hl, $001e + add hl, bc + and 1 + ld a, [hl] + ret z + cpl + inc a ret -; 3ca8 +; 4f77 -INCBIN "baserom.gbc", $3ca8, $3dde - $3ca8 +Function4f77: ; 4f77 + call Function47a8 ; ???? +; 4f7a -CheckSFX: ; 3dde -; returns carry if sfx channels are active - ld a, [$c1cc] ; 1 - bit 0, a - jr nz, .quit - ld a, [$c1fe] ; 2 - bit 0, a - jr nz, .quit - ld a, [$c230] ; 3 - bit 0, a - jr nz, .quit - ld a, [$c262] ; 4 - bit 0, a - jr nz, .quit - and a - ret -.quit - scf - ret -; 3dfe +Function4f7a: ; 4f7a + call Function47a8 + dw Function4f83 + dw Function4f83 + dw Function4f83 +; 4f83 -INCBIN "baserom.gbc", $3dfe, $3e10 - $3dfe +Function4f83: ; 4f83 + call Function47a8 + dw Function4f8a + dw Function4f99 +; 4f8a -ChannelsOff: ; 3e10 -; Quickly turn off music channels - xor a - ld [$c104], a - ld [$c136], a - ld [$c168], a - ld [$c19a], a - ld [$c29c], a - ret -; 3e21 +Function4f8a: ; 4f8a + ld hl, $000b + add hl, bc + ld [hl], $10 + ld hl, $000a + add hl, bc + ld [hl], $10 + call Function47a2 +; 4f99 -SFXChannelsOff: ; 3e21 -; Quickly turn off sound effect channels - xor a - ld [$c1cc], a - ld [$c1fe], a - ld [$c230], a - ld [$c262], a - ld [$c29c], a +Function4f99: ; 4f99 + ld hl, $000a + add hl, bc + dec [hl] + ret nz + ld hl, $001a + add hl, bc + ld [hl], $60 + ld hl, $000c + add hl, bc + ld [hl], $0 + ld hl, $0009 + add hl, bc + ld [hl], $1 ret -; 3e32 - -INCBIN "baserom.gbc", $3e32, $3fb5 - $3e32 +; 4fb2 +Function4fb2: ; 4fb2 + ret +; 4fb3 -SECTION "bank1",DATA,BANK[$1] +Function4fb3: ; 4fb3 + ld hl, $001d + add hl, bc + inc [hl] + ld a, [hl] + srl a + srl a + and 7 + ld l, a + ld h, 0 + ld de, .y + add hl, de + ld a, [hl] + ld hl, $001a + add hl, bc + ld [hl], a + ret +; 4fcd +.y ; 4fcd + db 0, -1, -2, -3, -4, -3, -2, -1 +; 4fd5 -INCBIN "baserom.gbc", $4000, $5000 - $4000 +UpdateJumpPosition: ; 4fd5 + call Function46e9 + ld a, h + ld hl, $001f + add hl, bc + ld e, [hl] + add e + ld [hl], a + nop + srl e + ld d, 0 + ld hl, .y + add hl, de + ld a, [hl] + ld hl, $001a + add hl, bc + ld [hl], a + ret +; 4ff0 +.y ; 4ff0 + db -4, -6, -8, -10, -11, -12, -12, -12 + db -11, -10, -9, -8, -6, -4, 0, 0 +; 5000 Function5000: ; 5000 ld a, [$c2de] @@ -5608,7 +8291,7 @@ Function5015: ; 5015 add hl, bc ld e, [hl] inc [hl] - ld d, $0 + ld d, 0 ld hl, $c2e2 ld a, [hli] ld h, [hl] @@ -5623,7 +8306,7 @@ Function5026: ; 5026 add hl, bc ld e, [hl] inc [hl] - ld d, $0 + ld d, 0 ld hl, $c2e6 ld a, [hli] ld h, [hl] @@ -5634,8 +8317,8 @@ Function5026: ; 5026 ; 5037 Function5037: ; 5037 - ld hl, $503d - jp $5041 + ld hl, Function503d + jp Function5041 ; 503d Function503d: ; 503d @@ -5718,7 +8401,7 @@ Function54b8: ; 54b8 ld hl, $d4d0 inc [hl] ld e, [hl] - ld d, $0 + ld d, 0 ld hl, $d4d1 add hl, de pop af @@ -5735,7 +8418,7 @@ Function54e6: ; 54e6 jr z, .asm_5503 dec [hl] ld e, a - ld d, $0 + ld d, 0 ld hl, $d4d1 add hl, de inc e @@ -6016,9 +8699,7 @@ Function565c: ; 565c call Function56a3 jr c, Function5680 call Function5688 - ld a, $1 - ld hl, $4440 - rst FarCall + callba Function4440 xor a ret ; 5673 @@ -6026,9 +8707,7 @@ Function565c: ; 565c Function5673: ; 5673 call Function56a3 jr c, Function5680 - ld a, $1 - ld hl, $4440 - rst FarCall + callba Function4440 xor a ret ; 5680 @@ -6054,9 +8733,7 @@ Function5688: ; 5688 ld hl, $000e add hl, bc ld [hl], a - ld a, $1 - ld hl, $463f - rst FarCall + callba Function463f ret ; 56a3 @@ -6108,7 +8785,7 @@ Function56cd: ; 56cd cp $f0 jr nc, .asm_56e5 cp $a0 - jp nc, $5768 + jp nc, .asm_5768 .asm_56e5 and $7 @@ -6235,7 +8912,7 @@ Function5781: ; 5781 ld [hConnectionStripLength], a call $1af1 jr z, .asm_578f - call $437b + call Function437b .asm_578f ld hl, $0028 @@ -6260,7 +8937,7 @@ Function579d: ; 579d ld a, $5 ld hl, $49c6 rst FarCall - call c, $57d9 + call c, Function57d9 call Function57ca ret ; 57bc @@ -6285,11 +8962,15 @@ Function57ca: ; 57ca and $3 add a add a - jr .asm_57db + jr Function57db +; 57d9 +Function57d9: ; 57d9 ld a, $0 + ; fallthrough +; 57db -.asm_57db +Function57db: ; 57db ld bc, $d4d6 call $1af8 ret @@ -6510,7 +9191,7 @@ Function5903: ; 5903 rrca rrca ld e, a - ld d, $0 + ld d, 0 ld hl, .data_591c add hl, de ld a, [hl] @@ -6625,7 +9306,7 @@ Function59a4: ; 59a4 ld hl, $c2eb ld bc, $000d call ByteFill - ld d, $0 + ld d, 0 ld bc, $d4d6 ld hl, $c2eb .asm_59b6 @@ -6755,32 +9436,34 @@ Function5a0d: ; 5a0d ld a, [$d14d] add e ld [$ffc0], a + ld hl, $000d add hl, bc ld a, [hl] cp $ff jp z, .asm_5abe - cp $20 jp nc, .asm_5abe + ld l, a - ld h, $0 + ld h, 0 add hl, hl - ld bc, $4049 + ld bc, DataPointers4049 add hl, bc ld a, [hli] ld h, [hl] ld l, a + ld a, [$ffbd] ld c, a - ld b, $c4 + ld b, Sprites / $100 ld a, [hli] ld [$ffbe], a add c - cp $a0 - jr nc, .asm_5ac0 + cp SpritesEnd % $100 + jr nc, .full -.asm_5a8e +.loop ld a, [$ffc0] add [hl] inc hl @@ -6797,7 +9480,6 @@ Function5a0d: ; 5a0d bit 2, e jr z, .asm_5aa3 xor a - .asm_5aa3 add [hl] inc hl @@ -6808,7 +9490,6 @@ Function5a0d: ; 5a0d jr z, .asm_5aaf ld a, [$ffc2] or e - .asm_5aaf and $f0 or d @@ -6817,7 +9498,8 @@ Function5a0d: ; 5a0d ld a, [$ffbe] dec a ld [$ffbe], a - jr nz, .asm_5a8e + jr nz, .loop + ld a, c ld [$ffbd], a @@ -6825,7 +9507,7 @@ Function5a0d: ; 5a0d xor a ret -.asm_5ac0 +.full scf ret ; 5ac2 @@ -6862,7 +9544,7 @@ Function5ae8: ; 5ae8 ld de, MUSIC_NONE call StartMusic call DelayFrame - ld de, $0054 + ld de, MUSIC_MAIN_MENU ld a, e ld [CurMusic], a call StartMusic @@ -6948,7 +9630,7 @@ Function5b6b: ; 5b6b ld [$d001], a ld a, $f1 ld [$ff9f], a - jp $5e5d + jp Function5e5d ; 5b8f Function5b8f: ; 5b8f @@ -7230,9 +9912,9 @@ Function5d65: ; 5d65 .asm_5d96 ld a, $8 ld [MusicFade], a - ld a, $0 + ld a, MUSIC_NONE % $100 ld [MusicFadeIDLo], a - ld a, $0 + ld a, MUSIC_NONE / $100 ld [MusicFadeIDHi], a call WhiteBGMap call Function5df0 @@ -7254,7 +9936,7 @@ Function5d65: ; 5d65 jr z, .asm_5dd7 ld a, $f2 ld [$ff9f], a - jp $5e5d + jp Function5e5d .asm_5dd6 ret @@ -7263,7 +9945,7 @@ Function5d65: ; 5d65 ld a, $e ld [$d001], a call Function5de7 - jp $5e5d + jp Function5e5d ; 5de2 Function5de2: ; 5de2 @@ -7289,11 +9971,11 @@ Function5df0: ; 5df0 ret nz ld a, $5 ld [MusicFade], a - ld a, $5e + ld a, MUSIC_MOBILE_ADAPTER_MENU % $100 ld [MusicFadeIDLo], a - ld a, $0 + ld a, MUSIC_MOBILE_ADAPTER_MENU / $100 ld [MusicFadeIDHi], a - ld c, $14 + ld c, 20 call DelayFrames ld c, $1 ld a, $12 @@ -7304,11 +9986,11 @@ Function5df0: ; 5df0 rst FarCall ld a, $8 ld [MusicFade], a - ld a, $0 + ld a, MUSIC_NONE % $100 ld [MusicFadeIDLo], a - ld a, $0 + ld a, MUSIC_NONE / $100 ld [MusicFadeIDHi], a - ld c, $23 + ld c, 35 call DelayFrames ret ; 5e34 @@ -20544,9 +23226,7 @@ Function967c1: ; 967c1 ; 967d1 Function967d1: ; 967d1 - ld a, $1 - ld hl, $576a - rst FarCall + callba Function576a ld a, $3 ld hl, $5497 rst FarCall @@ -21492,9 +24172,7 @@ WaitScript: ; 96c7a dec [hl] ret nz - ld a, $1 - ld hl, $58b9 - rst FarCall + callba Function58b9 ld a, SCRIPT_READ ld [ScriptMode], a @@ -21509,9 +24187,7 @@ WaitScriptMovement: ; 96c91 bit 7, [hl] ret nz - ld a, $1 - ld hl, $58b9 - rst FarCall + callba Function58b9 ld a, SCRIPT_READ ld [ScriptMode], a -- cgit v1.2.3 From 1518925365a8693ca5f7e921467e1f7a63b31e56 Mon Sep 17 00:00:00 2001 From: yenatch Date: Mon, 22 Jul 2013 04:27:50 -0400 Subject: main menu and untranslated mobile text --- main.asm | 460 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 446 insertions(+), 14 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index 28c28f5bb..7d5acc782 100644 --- a/main.asm +++ b/main.asm @@ -9598,7 +9598,7 @@ Function5b44: ; 5b44 ret ; 5b54 -Function5b54: ; 5b54 +MysteryGift: ; 5b54 call UpdateTime ld a, $4 ld hl, $5548 @@ -9609,14 +9609,14 @@ Function5b54: ; 5b54 ret ; 5b64 -Function5b64: ; 5b64 +OptionsMenu: ; 5b64 ld a, $39 ld hl, $41d0 rst FarCall ret ; 5b6b -Function5b6b: ; 5b6b +NewGame: ; 5b6b xor a ld [$c2cc], a call Function5ba7 @@ -9884,7 +9884,7 @@ Function5d33: ; 5d33 jp CloseSRAM ; 5d65 -Function5d65: ; 5d65 +Continue: ; 5d65 ld a, $5 ld hl, $4ea5 rst FarCall @@ -12652,7 +12652,7 @@ StartMenu_Option: ; 1291c ; Game options. call FadeToMenu - callba Function5b64 + callba OptionsMenu ld a, 6 ret ; 12928 @@ -18406,8 +18406,52 @@ INCBIN "gfx/special/celebi/2.2bpp" INCBIN "gfx/special/celebi/3.2bpp" INCBIN "gfx/special/celebi/4.2bpp" -INCBIN "baserom.gbc", $49aa2, $49d24 - $49aa2 +INCBIN "baserom.gbc", $49aa2, $49cdc - $49aa2 +MainMenu: ; 49cdc + xor a + ld [$c2d7], a + call Function49ed0 + ld b, $8 + call GetSGBLayout + call $32f9 + ld hl, GameTimerPause + res 0, [hl] + call Function49da4 + ld [$cf76], a + call Function49e09 + ld hl, MenuDataHeader_0x49d14 + call Function1d35 + call Function49de4 + call Function1c17 + jr c, .quit + call ClearTileMap + ld a, [MenuSelection] + ld hl, Label49d60 + 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 $1f79 + dw MainMenuText +; 49d20 + +MainMenuText: ContinueText: ; 0x49d24 db "CONTINUE@" NewGameText: ; 0x49d2d @@ -18422,12 +18466,13 @@ MobileStudiumText: ; 0x49d51 db "MOBILE STUDIUM@" Label49d60: ; 0x49d60 - dw $5eee ; XXX is this ContinueASM? - dw $5ee0 ; XXX is this NewGameASM? - dw $5ee7 ; XXX is this OptionASM? - dw $5ef5 ; XXX is this MysteryGiftASM? - dw $5efc ; XXX is this MobileASM? - dw $6496 ; XXX is this MobileStudiumASM? + 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 @@ -18436,6 +18481,8 @@ MYSTERY_GIFT EQU 3 MOBILE EQU 4 MOBILE_STUDIUM EQU 5 +MainMenuItems: + NewGameMenu: ; 0x49d6c db 2 db NEW_GAME @@ -18510,7 +18557,392 @@ StudiumMenu: ; 0x49d9e db MOBILE_STUDIUM db $ff -INCBIN "baserom.gbc", $49da4, $4a6e8 - $49da4 + +Function49da4: ; 49da4 + nop + nop + nop + ld a, [$cfcd] + and a + jr nz, .asm_49db0 + ld a, $0 + ret + +.asm_49db0 + ld a, [hCGB] + cp $1 + ld a, $1 + ret nz + ld a, $0 + call GetSRAMBank + ld a, [$abe5] + cp $ff + call CloseSRAM + jr nz, .asm_49dd6 + ld a, [StatusFlags] + bit 7, a + ld a, $1 + jr z, .asm_49dd1 + jr .asm_49dd1 + +.asm_49dd1 + jr .asm_49dd3 + +.asm_49dd3 + ld a, $1 + ret + +.asm_49dd6 + ld a, [StatusFlags] + bit 7, a + jr z, .asm_49ddf + jr .asm_49ddf + +.asm_49ddf + jr .asm_49de1 + +.asm_49de1 + ld a, $6 + ret +; 49de4 + +Function49de4: ; 49de4 + call SetUpMenu +.asm_49de7 + call $5e09 + ld a, [$cfa5] + set 5, a + ld [$cfa5], a + call $1f1a + ld a, [$cf73] + 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, [$cfcd] + and a + ret z + xor a + ld [hBGMapMode], a + call Function49e27 + ld hl, Options + ld a, [hl] + push af + set 4, [hl] + call $5e3d + pop af + ld [Options], a + ld a, $1 + ld [hBGMapMode], a + ret +; 49e27 + + +Function49e27: ; 49e27 + call $06e3 + and $80 + jr nz, .asm_49e39 + ld hl, $c5b8 + ld b, $2 + ld c, $12 + call TextBox + ret + +.asm_49e39 + call SpeechTextBox + ret +; 49e3d + + +Function49e3d: ; 49e3d + ld a, [$cfcd] + and a + ret z + call $06e3 + 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 + ld a, $24 + ld hl, $4b3e + rst FarCall + ld [hl], $9c + inc hl + ld de, hMinutes + ld bc, $8102 + call $3198 + 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, BANK(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 [$ffde], a + call ClearTileMap + call $0e5f + call $0e51 + call $1fbf + 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 WhiteBGMap + ld a, MUSIC_MOBILE_ADAPTER_MENU + ld [CurMusic], a + ld de, MUSIC_MOBILE_ADAPTER_MENU + call $66c5 + call WhiteBGMap + call $63a7 + call $6492 + call WhiteBGMap + call $6071 + ld c, $c + call DelayFrames + ld hl, $c4a4 + ld b, $a + ld c, $a + call $4cdc + ld hl, $c4ce + ld de, MobileString1 + call PlaceString + ld hl, $c590 + ld b, $4 + ld c, $12 + call TextBox + xor a + ld de, String_0x49fe9 + ld hl, $c5b9 + call PlaceString + call Function3200 + call $32f9 + call $1bc9 + ld hl, $cfa9 + ld b, [hl] + push bc + jr .asm_49f5d + +.asm_49f55 + call $1bd3 + ld hl, $cfa9 + 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, $cfa9 + ld a, [hl] + cp $1 + jp z, $6098 + cp $2 + jp z, $60b9 + cp $3 + jp z, $60c2 + cp $4 + jp z, $6100 + ld a, $1 + call $1ff8 + +.asm_49f84 + pop bc + call WhiteBGMap + call ClearTileMap + ld a, MUSIC_MAIN_MENU + ld [CurMusic], a + ld de, MUSIC_MAIN_MENU + call $66c5 + ret + +.asm_49f97 + ld hl, $cfa9 + ld a, [hl] + dec a + ld hl, MobileStrings2 + call GetNthString + ld d, h + ld e, l + ld hl, $c5a5 + ld b, $4 + ld c, $12 + call ClearBox + ld hl, $c5b9 + call PlaceString + jp .asm_49fb7 + +.asm_49fb7 + call $6071 + pop bc + ld hl, $cfa9 + ld [hl], b + ld b, $a + ld c, $1 + ld hl, $c4b9 + call ClearBox + jp .asm_49f55 +; 49fcc + + +MobileString1: ; 49fcc + db "めいしフ,ルダー", $4e + db "あいさつ", $4e + db "プロフィール", $4e + db "せ", $1e, "い", $4e + db "もどる@" +; 49fe9 + + +MobileStrings2: + +String_0x49fe9: ; 49fe9 + db "めいし", $1f, "つくったり", $4e + db "ほぞんしておける フ,ルダーです@" +; 4a004 + +String_0x4a004: ; 4a004 + db "モバイルたいせんや じぶんのめいしで", $4e + db "つかう あいさつ", $1f, "つくります@" +; 4a026 + +String_0x4a026: ; 4a026 + db "あなた", $25, "じゅうしょや ねんれいの", $4e + db "せ", $1e, "い", $1f, "かえられます@" +; 4a042 + +String_0x4a042: ; 4a042 + db "モバイルセンター", $1d, "せつぞくするとき", $4e + db "ひつような こと", $1f, "きめます@" +; 4a062 + +String_0x4a062: ; 4a062 + db "まえ", $25, "がめん ", $1d, "もどります", $4e + db "@" +; 4a071 + + +INCBIN "baserom.gbc", $4a071, $4a496 - $4a071 + + +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 WhiteBGMap + 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 + + +INCBIN "baserom.gbc", $4a4c4, $4a6e8 - $4a4c4 + SpecialBeastsCheck: ; 0x4a6e8 ; Check if the player owns all three legendary beasts. @@ -29665,7 +30097,7 @@ INCBIN "baserom.gbc", $114000, $117a7f - $114000 ; everything from here to the end of the bank is related to the ; Mobile Stadium option from the continue/newgame menu. ; XXX better function names -Function117a7f: ; 0x117a7f +MobileStudium: ; 0x117a7f ld a, [$ffaa] push af ld a, $1 -- cgit v1.2.3 From 83139cb7d6d349fadb3fafed9843776623b4f939 Mon Sep 17 00:00:00 2001 From: yenatch Date: Wed, 24 Jul 2013 03:47:52 -0400 Subject: Text_1354 is used globally --- main.asm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index 7d5acc782..f00b64620 100644 --- a/main.asm +++ b/main.asm @@ -1500,7 +1500,7 @@ Char4B: ; 131f Char55: ; 1345 push de - ld de, .text_1354 + ld de, Text_1354 ld b, h ld c, l call PlaceString @@ -1508,8 +1508,9 @@ Char55: ; 1345 ld l, c pop de jp NextChar +; 1354 -.text_1354 +Text_1354: ; 1354 db $4b, "@" ; 1356 -- cgit v1.2.3 From 184a984941ec3c242de2ca087548bb48e21e418e Mon Sep 17 00:00:00 2001 From: yenatch Date: Wed, 24 Jul 2013 18:32:45 -0400 Subject: autogbzdisasm trial run --- main.asm | 3590 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 3332 insertions(+), 258 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index f00b64620..505732450 100644 --- a/main.asm +++ b/main.asm @@ -56,7 +56,169 @@ Start: SECTION "start",HOME[$150] -INCBIN "baserom.gbc", $150, $283 - $150 +INCBIN "baserom.gbc", $150, $16e - $150 + + +Function16e: ; 16e + cp $11 + jr z, .asm_175 + xor a + jr .asm_177 + +.asm_175 + ld a, $1 + +.asm_177 + ld [hCGB], a + ld a, $1 + ld [$ffea], a + di + xor a + ld [rIF], a + ld [rIE], a + ld [rRP], a + ld [rSCX], a + ld [rSCY], a + ld [rSB], a + ld [rSC], a + ld [rWX], a + ld [rWY], a + ld [rBGP], a + ld [rOBP0], a + ld [rOBP1], a + ld [rTMA], a + ld [rTAC], a + ld [$d000], a + ld a, $4 + ld [rTAC], a +.asm_1a2 + ld a, [rLY] + cp $91 + jr nz, .asm_1a2 + xor a + ld [rLCDC], a + ld hl, $c000 + ld bc, $1000 +.asm_1b1 + ld [hl], $0 + inc hl + dec bc + ld a, b + or c + jr nz, .asm_1b1 + ld sp, $c0ff + ld a, [hCGB] + push af + ld a, [$ffea] + push af + xor a + ld hl, hPushOAM + ld bc, $007f + call ByteFill + pop af + ld [$ffea], a + pop af + ld [hCGB], a + call $025a + ld a, $1 + ld [rSVBK], a + call $0245 + call ClearSprites + call $0270 + ld a, $1 + rst Bankswitch + + call $4031 + xor a + ld [$ffde], a + ld [$ffcf], a + ld [$ffd0], a + ld [rJOYP], a + ld a, $8 + ld [rSTAT], a + ld a, $90 + ld [$ffd2], a + ld [rWY], a + ld a, $7 + ld [$ffd1], a + ld [rWX], a + ld a, $e3 + ld [rLCDC], a + ld a, $ff + ld [$ffcb], a + ld a, $2 + ld hl, $5890 + rst FarCall + ld a, $9c + ld [$ffd7], a + xor a + ld [hBGMapAddress], a + ld a, $5 + ld hl, $4089 + rst FarCall + xor a + ld [$6000], a + ld [$0000], a + ld a, [hCGB] + and a + jr z, .asm_22b + call $2ff7 + +.asm_22b + xor a + ld [rIF], a + ld a, $f + ld [rIE], a + ei + call DelayFrame + ld a, $30 + call Predef + call CleanSoundRestart + xor a + ld [CurMusic], a + jp $642e +; 245 + +Function245: ; 245 + ld a, $1 + ld [rVBK], a + call $024f + xor a + ld [rVBK], a + ld hl, VTiles0 + ld bc, $2000 + xor a + call ByteFill + ret +; 25a + +Function25a: ; 25a + ld a, $1 +.asm_25c + push af + ld [rSVBK], a + xor a + ld hl, $d000 + ld bc, $1000 + call ByteFill + pop af + inc a + cp $8 + jr nc, .asm_25c + ret +; 270 + +Function270: ; 270 + ld a, $0 + call GetSRAMBank + ld hl, $a000 + ld bc, $0020 + xor a + call ByteFill + call CloseSRAM + ret +; 283 + VBlank: ; 283 @@ -109,7 +271,12 @@ TimeOfDayPals: ; 47e ; 485 -INCBIN "baserom.gbc", $485, $52f - $485 +Function485: ; 485 + callab UpdateTimePals + ret +; 48c + +INCBIN "baserom.gbc", $48c, $52f - $48c IncGradGBPalTable_01: ; 52f @@ -385,7 +552,25 @@ FixTime: ; 61d ret ; 658 -INCBIN "baserom.gbc", $658, $691 - $658 +INCBIN "baserom.gbc", $658, $67e - $658 + + +Function67e: ; 67e + call $0685 + call SetClock + ret +; 685 + +Function685: ; 685 + xor a + ld [hRTCSeconds], a + ld [hRTCMinutes], a + ld [hRTCHours], a + ld [hRTCDayLo], a + ld [hRTCDayHi], a + ret +; 691 + SetClock: ; 691 ; set clock data from hram @@ -435,13 +620,126 @@ SetClock: ; 691 ret ; 6c4 -INCBIN "baserom.gbc", $6c4, $92e - $6c4 +INCBIN "baserom.gbc", $6c4, $6d3 - $6c4 + + +Function6d3: ; 6d3 + ld hl, $ac60 + push af + ld a, $0 + call GetSRAMBank + pop af + or [hl] + ld [hl], a + call CloseSRAM + ret +; 6e3 + +INCBIN "baserom.gbc", $6e3, $92e - $6e3 INCLUDE "engine/joypad.asm" -INCBIN "baserom.gbc", $a1b, $b40 - $a1b +INCBIN "baserom.gbc", $a1b, $a57 - $a1b + + +Functiona57: ; a57 + call GetJoypadPublic + ld a, [$ffaa] + and a + ld a, [hJoyPressed] + jr z, .asm_a63 + ld a, [hJoyDown] + +.asm_a63 + ld [$ffa9], a + ld a, [hJoyPressed] + and a + jr z, .asm_a70 + ld a, $f + ld [TextDelayFrames], a + ret + +.asm_a70 + ld a, [TextDelayFrames] + and a + jr z, .asm_a7a + xor a + ld [$ffa9], a + ret + +.asm_a7a + ld a, $5 + ld [TextDelayFrames], a + ret +; a80 + +INCBIN "baserom.gbc", $a80, $aaf - $a80 + + +Functionaaf: ; aaf + ld a, [InLinkBattle] + and a + jr nz, .asm_ac1 + call $0ac6 + push de + ld de, $0008 + call StartSFX + pop de + ret + +.asm_ac1 + ld c, $41 + jp DelayFrames +; ac6 + +Functionac6: ; ac6 + ld a, [hOAMUpdate] + push af + ld a, $1 + ld [hOAMUpdate], a + ld a, [InputType] + or a + jr z, .asm_ad9 + ld a, $77 + ld hl, $628a + rst FarCall + +.asm_ad9 + call $0af5 + call $0a57 + ld a, [hJoyPressed] + and $3 + jr nz, .asm_af1 + call RTC + ld a, $1 + ld [hBGMapMode], a + call DelayFrame + jr .asm_ad9 + +.asm_af1 + pop af + ld [hOAMUpdate], a + ret +; af5 + +Functionaf5: ; af5 + ld a, [$ff9b] + and $10 + jr z, .asm_aff + ld a, $ee + jr .asm_b02 + +.asm_aff + ld a, [$c605] + +.asm_b02 + ld [$c606], a + ret +; b06 + +INCBIN "baserom.gbc", $b06, $b40 - $b06 FarDecompress: ; b40 ; Decompress graphics data at a:hl to de @@ -1030,7 +1328,69 @@ CopyPals: ; d50 ; d79 -INCBIN "baserom.gbc", $d79, $e8d - $d79 +INCBIN "baserom.gbc", $d79, $dc9 - $d79 + + +Functiondc9: ; dc9 + ld a, [rLCDC] + bit 7, a + jp z, $0f89 + ld a, [hROMBank] + push af + ld a, $41 + rst Bankswitch + + call $4284 + pop af + rst Bankswitch + + ret +; ddc + +Functionddc: ; ddc + ld a, [rLCDC] + bit 7, a + jp z, $0fa4 + ld a, [hROMBank] + push af + ld a, $41 + rst Bankswitch + + call $42b2 + pop af + rst Bankswitch + + ret +; def + +Functiondef: ; def + ld [hBuffer], a + ld a, [hROMBank] + push af + ld a, [hBuffer] + rst Bankswitch + + call FarCopyBytesDouble + pop af + rst Bankswitch + + ret +; dfd + +INCBIN "baserom.gbc", $dfd, $e5f - $dfd + + +Functione5f: ; e5f + ld a, $3e + ld hl, $748a + rst FarCall + ld a, $3e + ld hl, $74b0 + rst FarCall + ret +; e6c + +INCBIN "baserom.gbc", $e6c, $e8d - $e6c FarCopyBytes: ; e8d @@ -1089,22 +1449,197 @@ FarCopyBytesDouble: ; e9b ; 0xeba -INCBIN "baserom.gbc", $eba, $fb6 - $eba - +Functioneba: ; eba + ld a, [hBGMapMode] + push af + xor a + ld [hBGMapMode], a + ld a, [hROMBank] + push af + ld a, b + rst Bankswitch -ClearBox: ; fb6 -; Fill a c*b box at hl with blank tiles. + ld a, [$ffd3] + push af + ld a, $8 + ld [$ffd3], a + ld a, [InLinkBattle] + cp $4 + jr nz, .asm_edc + ld a, [$ffe9] + and a + jr nz, .asm_edc + ld a, $6 + ld [$ffd3], a - ld a, " " -.y - push bc - push hl -.x - ld [hli], a - dec c - jr nz, .x - pop hl - ld bc, 20 ; screen width +.asm_edc + ld a, e + ld [$cf68], a + ld a, d + ld [$cf69], a + ld a, l + ld [$cf6a], a + ld a, h + ld [$cf6b], a +.asm_eec + ld a, c + ld hl, $ffd3 + cp [hl] + jr nc, .asm_f08 + ld [$cf67], a +.asm_ef6 + call DelayFrame + ld a, [$cf67] + and a + jr nz, .asm_ef6 + pop af + ld [$ffd3], a + pop af + rst Bankswitch + + pop af + ld [hBGMapMode], a + ret + +.asm_f08 + ld a, [$ffd3] + ld [$cf67], a +.asm_f0d + call DelayFrame + ld a, [$cf67] + and a + jr nz, .asm_f0d + ld a, c + ld hl, $ffd3 + sub [hl] + ld c, a + jr .asm_eec +; f1e + +Functionf1e: ; f1e + ld a, [hBGMapMode] + push af + xor a + ld [hBGMapMode], a + ld a, [hROMBank] + push af + ld a, b + rst Bankswitch + + ld a, [$ffd3] + push af + ld a, $8 + ld [$ffd3], a + ld a, [InLinkBattle] + cp $4 + jr nz, .asm_f40 + ld a, [$ffe9] + and a + jr nz, .asm_f40 + ld a, $6 + ld [$ffd3], a + +.asm_f40 + ld a, e + ld [$cf6d], a + ld a, d + ld [$cf6e], a + ld a, l + ld [$cf6f], a + ld a, h + ld [$cf70], a +.asm_f50 + ld a, c + ld hl, $ffd3 + cp [hl] + jr nc, .asm_f6c + ld [$cf6c], a +.asm_f5a + call DelayFrame + ld a, [$cf6c] + and a + jr nz, .asm_f5a + pop af + ld [$ffd3], a + pop af + rst Bankswitch + + pop af + ld [hBGMapMode], a + ret + +.asm_f6c + ld a, [$ffd3] + ld [$cf6c], a +.asm_f71 + call DelayFrame + ld a, [$cf6c] + and a + jr nz, .asm_f71 + ld a, c + ld hl, $ffd3 + sub [hl] + ld c, a + jr .asm_f50 +; f82 + +Functionf82: ; f82 + ld a, [rLCDC] + bit 7, a + jp nz, $0eba + push hl + ld h, d + ld l, e + pop de + ld a, b + push af + swap c + ld a, $f + and c + ld b, a + ld a, $f0 + and c + ld c, a + pop af + jp FarCopyBytes +; f9d + +Functionf9d: ; f9d + ld a, [rLCDC] + bit 7, a + jp nz, $0f1e + push de + ld d, h + ld e, l + ld a, b + push af + ld h, $0 + ld l, c + add hl, hl + add hl, hl + add hl, hl + ld b, h + ld c, l + pop af + pop hl + jp FarCopyBytesDouble +; fb6 + + + +ClearBox: ; fb6 +; Fill a c*b box at hl with blank tiles. + + ld a, " " +.y + push bc + push hl +.x + ld [hli], a + dec c + jr nz, .x + pop hl + ld bc, 20 ; screen width add hl, bc pop bc dec b @@ -1129,7 +1664,14 @@ ClearTileMap: ; fc8 ; fdb -INCBIN "baserom.gbc", $fdb, $fe8 - $fdb +Functionfdb: ; fdb + ld a, $7 + ld hl, AttrMap + ld bc, $0168 + call ByteFill + jr ClearTileMap +; fe8 + TextBox: ; fe8 @@ -1382,7 +1924,118 @@ CheckDict: ; 1087 ; 0x117b -INCBIN "baserom.gbc", $117b, $1203 - $117b +Function117b: ; 117b + ld c, l + ld b, h + ld a, $5f + ld hl, $7036 + rst FarCall + jp PlaceNextChar +; 1186 + +Function1186: ; 1186 + push de + ld de, MomsName + jp $126a +; 118d + +Function118d: ; 118d + push de + ld de, PlayerName + jp $126a +; 1194 + +Function1194: ; 1194 + push de + ld de, RivalName + jp $126a +; 119b + +Function119b: ; 119b + push de + ld de, RedsName + jp $126a +; 11a2 + +Function11a2: ; 11a2 + push de + ld de, GreensName + jp $126a +; 11a9 + +Function11a9: ; 11a9 + push de + ld de, Char5DText + jp $126a +; 11b0 + +Function11b0: ; 11b0 + push de + ld de, Char5CText + jp $126a +; 11b7 + +Function11b7: ; 11b7 + push de + ld de, Char5BText + jp $126a +; 11be + +Function11be: ; 11be + push de + ld de, $1281 + jp $126a +; 11c5 + +Function11c5: ; 11c5 + push de + ld de, $1288 + jp $126a +; 11cc + +Function11cc: ; 11cc + push de + ld de, $128d + jp $126a +; 11d3 + +Function11d3: ; 11d3 + push de + ld de, $1292 + jp $126a +; 11da + +Function11da: ; 11da + push de + ld de, $129c + jp $126a +; 11e1 + +Function11e1: ; 11e1 + push de + ld de, $129f + jp $126a +; 11e8 + +Function11e8: ; 11e8 + push de + ld de, $12a4 + jp $126a +; 11ef + +Function11ef: ; 11ef + push de + ld de, $12a4 + jp $126a +; 11f6 + +Function11f6: ; 11f6 + push de + ld de, $12a4 + jp $126a +; 11fd + +INCBIN "baserom.gbc", $11fd, $1203 - $11fd Char5D: ; 1203 @@ -1461,7 +2114,67 @@ Char56Text: ; 0x1293 Char5AText: ; 0x1295 db "Enemy @" -INCBIN "baserom.gbc", $129c, $12ea - $129c +INCBIN "baserom.gbc", $129c, $12a7 - $129c + + +Function12a7: ; 12a7 + pop hl + ld bc, $0028 + add hl, bc + push hl + jp NextChar +; 12b0 + +Function12b0: ; 12b0 + pop hl + ld bc, $0014 + add hl, bc + push hl + jp NextChar +; 12b9 + +Function12b9: ; 12b9 + pop hl + push de + ld bc, $3b60 + add hl, bc + ld de, $ffec + ld c, $1 +.asm_12c4 + ld a, h + and a + jr nz, .asm_12cd + ld a, l + cp $14 + jr c, .asm_12d1 + +.asm_12cd + add hl, de + inc c + jr .asm_12c4 + +.asm_12d1 + ld hl, TileMap + ld de, $0014 + ld a, c +.asm_12d8 + and a + jr z, .asm_12df + add hl, de + dec a + jr .asm_12d8 + +.asm_12df + pop de + inc de + ld a, [de] + ld c, a + ld b, $0 + add hl, bc + push hl + jp NextChar +; 12ea + Char4F: ; 12ea pop hl @@ -1470,7 +2183,29 @@ Char4F: ; 12ea jp NextChar ; 0x12f2 -INCBIN "baserom.gbc", $12f2, $131f - $12f2 +Function12f2: ; 12f2 + push de + ld a, [InLinkBattle] + cp $3 + jr z, .asm_1301 + cp $4 + jr z, .asm_1301 + call $13c7 + +.asm_1301 + call $13b6 + call $0aaf + ld hl, $c5b9 + ld bc, $0312 + call ClearBox + call $13cd + ld c, $14 + call DelayFrames + ld hl, $c5b9 + pop de + jp NextChar +; 131f + Char4B: ; 131f ld a, [InLinkBattle] @@ -1522,32 +2257,125 @@ Char5F: ; 1356 ret ; 135a -INCBIN "baserom.gbc", $135a, $15d8 - $135a +Function135a: ; 135a + ld a, [InLinkBattle] + cp $3 + jr z, .asm_1368 + cp $4 + jr z, .asm_1368 + call $13c7 -DMATransfer: ; 15d8 -; DMA transfer -; return carry if successful +.asm_1368 + call $13b6 + call $0aaf + ld a, [InLinkBattle] + cp $3 + jr z, .asm_137c + cp $4 + jr z, .asm_137c + call $13cd -; anything to transfer? - ld a, [hDMATransfer] - and a - ret z -; start transfer - ld [rHDMA5], a -; indicate that transfer has occurred - xor a - ld [hDMATransfer], a -; successful transfer - scf +.asm_137c + pop hl + ld de, $1382 + dec de ret -; 15e3 - +; 1382 -UpdateBGMapBuffer: ; 15e3 -; write [$ffdc] 16x8 tiles from BGMapBuffer to bg map addresses in BGMapBufferPtrs -; [$ffdc] must be even since this is done in 16x16 blocks +INCBIN "baserom.gbc", $1382, $1383 - $1382 -; return carry if successful + +Function1383: ; 1383 + ld a, $e6 + ld [hli], a + call PrintLetterDelay + jp NextChar +; 138c + +Function138c: ; 138c + ld hl, $c5b9 + ld de, $c5a5 + ld a, $3 +.asm_1394 + push af + ld c, $12 +.asm_1397 + ld a, [hli] + ld [de], a + inc de + dec c + jr nz, .asm_1397 + inc de + inc de + inc hl + inc hl + pop af + dec a + jr nz, .asm_1394 + ld hl, $c5e1 + ld a, $7f + ld bc, $0012 + call ByteFill + ld c, $5 + call DelayFrames + ret +; 13b6 + +Function13b6: ; 13b6 + push bc + ld a, [hOAMUpdate] + push af + ld a, $1 + ld [hOAMUpdate], a + call WaitBGMap + pop af + ld [hOAMUpdate], a + pop bc + ret +; 13c6 + +Function13c6: ; 13c6 + ret +; 13c7 + +Function13c7: ; 13c7 + ld a, $ee + ld [$c606], a + ret +; 13cd + +Function13cd: ; 13cd + ld a, [$c605] + ld [$c606], a + ret +; 13d4 + +INCBIN "baserom.gbc", $13d4, $15d8 - $13d4 + +DMATransfer: ; 15d8 +; DMA transfer +; return carry if successful + +; anything to transfer? + ld a, [hDMATransfer] + and a + ret z +; start transfer + ld [rHDMA5], a +; indicate that transfer has occurred + xor a + ld [hDMATransfer], a +; successful transfer + scf + ret +; 15e3 + + +UpdateBGMapBuffer: ; 15e3 +; write [$ffdc] 16x8 tiles from BGMapBuffer to bg map addresses in BGMapBufferPtrs +; [$ffdc] must be even since this is done in 16x16 blocks + +; return carry if successful ; any tiles to update? ld a, [hBGMapUpdate] @@ -2160,7 +2988,39 @@ GetTileType: ; 185d ; 1875 -INCBIN "baserom.gbc", $1875, $18a0 - $1875 +Function1875: ; 1875 + ld d, a + and $f0 + cp $10 + jr z, .asm_1882 + cp $20 + jr z, .asm_1888 + scf + ret + +.asm_1882 + ld a, d + and $7 + ret z + scf + ret + +.asm_1888 + ld a, d + and $7 + ret z + scf + ret +; 188e + +Function188e: ; 188e + cp $14 + ret z + cp $1c + ret +; 1894 + +INCBIN "baserom.gbc", $1894, $18a0 - $1894 CheckCounterTile: ; 18a0 @@ -2218,7 +3078,36 @@ GetMapObject: ; 18d2 ; 18de -INCBIN "baserom.gbc", $18de, $1a2f - $18de +INCBIN "baserom.gbc", $18de, $1a13 - $18de + + +Function1a13: ; 1a13 + push bc + push de + ld hl, $d4d6 + ld de, $0028 + ld c, $d +.asm_1a1d + ld a, [hl] + and a + jr z, .asm_1a28 + add hl, de + dec c + jr nz, .asm_1a1d + xor a + jr .asm_1a2c + +.asm_1a28 + ld a, $d + sub c + scf + +.asm_1a2c + pop de + pop bc + ret +; 1a2f + Function1a2f: ; 1a2f @@ -2266,7 +3155,92 @@ Function1a47: ; 1a47 ; 1a61 -INCBIN "baserom.gbc", $1a61, $1b07 - $1a61 +Function1a61: ; 1a61 + ld l, a + ld a, [hROMBank] + push af + ld a, $1 + rst Bankswitch + + ld a, l + push bc + call $1a71 + pop bc + pop af + rst Bankswitch + + ret +; 1a71 + +Function1a71: ; 1a71 + ld hl, $0003 + add hl, de + ld [hl], a + push de + ld e, a + ld d, $0 + ld hl, $4274 + add hl, de + add hl, de + add hl, de + add hl, de + add hl, de + add hl, de + ld b, h + ld c, l + pop de + ld a, [bc] + inc bc + rlca + rlca + and $c + ld hl, $0008 + add hl, de + ld [hl], a + ld a, [bc] + inc bc + ld hl, $000b + add hl, de + ld [hl], a + ld a, [bc] + inc bc + ld hl, $0004 + add hl, de + ld [hl], a + ld a, [bc] + inc bc + ld hl, $0005 + add hl, de + ld [hl], a + ld a, [bc] + inc bc + ld hl, $0006 + add hl, de + ld [hl], a + ret +; 1aae + +INCBIN "baserom.gbc", $1aae, $1ae5 - $1aae + + +Function1ae5: ; 1ae5 + ld bc, $0028 + ld hl, $d4d6 + call AddNTimes + ld b, h + ld c, l + ret +; 1af1 + +Function1af1: ; 1af1 + ld hl, $0000 + add hl, bc + ld a, [hl] + and a + ret +; 1af8 + +INCBIN "baserom.gbc", $1af8, $1b07 - $1af8 GetSpriteDirection: ; 1b07 @@ -2453,7 +3427,43 @@ MenuWriteText: ; 0x1e8c ret ; 0x1ea6 -INCBIN "baserom.gbc", $1ea6, $2009 - $1ea6 +INCBIN "baserom.gbc", $1ea6, $1fbf - $1ea6 + + +Function1fbf: ; 1fbf + ld hl, $cf71 + call $1ff0 + ld hl, $cf81 + call $1ff0 + ld hl, $cf91 + call $1ff0 + ld hl, $cfa1 + call $1ff0 + ld a, [rSVBK] + push af + ld a, $7 + ld [rSVBK], a + xor a + ld hl, $dfff + ld [hld], a + ld [hld], a + ld a, l + ld [$cf71], a + ld a, h + ld [$cf72], a + pop af + ld [rSVBK], a + ret +; 1ff0 + +Function1ff0: ; 1ff0 + ld bc, $0010 + xor a + call ByteFill + ret +; 1ff8 + +INCBIN "baserom.gbc", $1ff8, $2009 - $1ff8 PlayClickSFX: ; $2009 push de @@ -2967,7 +3977,70 @@ GetFacingTileCoord: ; 2a07 ; 2a3c -INCBIN "baserom.gbc", $2a3c, $2a8b - $2a3c +Function2a3c: ; 2a3c + call $2a66 + ld a, [hl] + and a + jr z, .asm_2a63 + ld l, a + ld h, $0 + add hl, hl + add hl, hl + ld a, [TileSetCollisionAddress] + ld c, a + ld a, [$d1e1] + ld b, a + add hl, bc + rr d + jr nc, .asm_2a56 + inc hl + +.asm_2a56 + rr e + jr nc, .asm_2a5c + inc hl + inc hl + +.asm_2a5c + ld a, [TileSetCollisionBank] + call GetFarByte + ret + +.asm_2a63 + ld a, $ff + ret +; 2a66 + +Function2a66: ; 2a66 + ld a, [$d19f] + add $6 + ld c, a + ld b, $0 + ld hl, $c801 + add hl, bc + ld a, e + srl a + jr z, .asm_2a84 + and a +.asm_2a78 + srl a + jr nc, .asm_2a7d + add hl, bc + +.asm_2a7d + sla c + rl b + and a + jr nz, .asm_2a78 + +.asm_2a84 + ld c, d + srl c + ld b, $0 + add hl, bc + ret +; 2a8b + CheckFacingSign: ; 2a8b @@ -3634,7 +4707,23 @@ JpDe: ; 2fed ret ; 2fef -INCBIN "baserom.gbc", $2fef, $300b - $2fef +INCBIN "baserom.gbc", $2fef, $2ff7 - $2fef + + +Function2ff7: ; 2ff7 + ld hl, rKEY1 + bit 7, [hl] + ret z + set 0, [hl] + xor a + ld [rIF], a + ld [rIE], a + ld a, $30 + ld [rJOYP], a + stop ; rgbasm adds a nop after this instruction by default + ret +; 300b + ClearSprites: ; 300b ld hl, Sprites @@ -4065,17 +5154,40 @@ Function3200: ; 0x3200 ret ; 0x3218 -INCBIN "baserom.gbc", $3218, $3317 - $3218 +INCBIN "baserom.gbc", $3218, $32f9 - $3218 -ClearPalettes: ; 3317 -; Make all palettes white -; For CGB we make all the palette colors white +Function32f9: ; 32f9 ld a, [hCGB] and a - jr nz, .cgb - -; In DMG mode, we can just change palettes to 0 (white) + jr nz, .asm_3309 + ld a, $e4 + ld [rBGP], a + ld a, $d0 + ld [rOBP0], a + ld [rOBP1], a + ret + +.asm_3309 + push de + ld a, $e4 + call DmgToCgbBGPals + ld de, $e4e4 + call DmgToCgbObjPals + pop de + ret +; 3317 + + +ClearPalettes: ; 3317 +; Make all palettes white + +; For CGB we make all the palette colors white + ld a, [hCGB] + and a + jr nz, .cgb + +; In DMG mode, we can just change palettes to 0 (white) xor a ld [rBGP], a ld [rOBP0], a @@ -5285,7 +6397,25 @@ FarBattleTextBox: ; 3ad5 ; 3ae1 -INCBIN "baserom.gbc", $3ae1, $3b4e - $3ae1 +INCBIN "baserom.gbc", $3ae1, $3b2a - $3ae1 + + +Function3b2a: ; 3b2a + ld [$c3b8], a + ld a, [hROMBank] + push af + ld a, $23 + rst Bankswitch + + ld a, [$c3b8] + call $4fd6 + pop af + rst Bankswitch + + ret +; 3b3c + +INCBIN "baserom.gbc", $3b3c, $3b4e - $3b3c CleanSoundRestart: ; 3b4e @@ -10394,14 +11524,104 @@ IntroFadePalettes: ; 0x617c db %11100100 ; 6182 -INCBIN "baserom.gbc", $6182, $6274 - $6182 +INCBIN "baserom.gbc", $6182, $620b - $6182 + + +Function620b: ; 620b + ld hl, $4579 + ld a, $39 + rst FarCall + jr c, .asm_6219 + ld a, $39 + ld hl, $48ac + rst FarCall + +.asm_6219 + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + call FarStartTitleScreen + call DelayFrame +.asm_6226 + call $627b + jr nc, .asm_6226 + call ClearSprites + call WhiteBGMap + pop af + ld [rSVBK], a + ld hl, rLCDC + res 2, [hl] + call $0fdb + call Function3200 + xor a + ld [hLCDStatCustom], a + ld [$ffcf], a + ld [$ffd0], a + ld a, $7 + ld [$ffd1], a + ld a, $90 + ld [$ffd2], a + ld b, $8 + call GetSGBLayout + call $0485 + ld a, [$cf64] + cp $5 + jr c, .asm_625e + xor a + +.asm_625e + ld e, a + ld d, $0 + ld hl, $626a + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 626a + +INCBIN "baserom.gbc", $626a, $6274 - $626a FarStartTitleScreen: ; 6274 callba StartTitleScreen ret ; 627b -INCBIN "baserom.gbc", $627b, $62bc - $627b +Function627b: ; 627b + ld a, [$cf63] + bit 7, a + jr nz, .asm_6290 + call $62a3 + ld a, $43 + ld hl, $6ea7 + rst FarCall + call DelayFrame + and a + ret + +.asm_6290 + scf + ret +; 6292 + +INCBIN "baserom.gbc", $6292, $62a3 - $6292 + + +Function62a3: ; 62a3 + ld e, a + ld d, $0 + ld hl, $62af + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 62af + +INCBIN "baserom.gbc", $62af, $62bc - $62af TitleScreenEntrance: ; 62bc @@ -10453,7 +11673,45 @@ TitleScreenEntrance: ; 62bc ret ; 62f6 -INCBIN "baserom.gbc", $62f6, $669f - $62f6 +INCBIN "baserom.gbc", $62f6, $63e2 - $62f6 + + +Function63e2: ; 63e2 + call ClearTileMap + call $0e5f + ld de, Function4000 + ld hl, $9600 + ld bc, $391d + call $0eba + ld hl, $c52e + ld de, $63fd + jp PlaceString +; 63fd + +INCBIN "baserom.gbc", $63fd, $642e - $63fd + + +Function642e: ; 642e + ld a, $5 + ld hl, $4f1c + rst FarCall + call $1fbf + call WhiteBGMap + call ClearTileMap + ld a, $98 + ld [$ffd7], a + xor a + ld [hBGMapAddress], a + ld [hJoyDown], a + ld [$ffcf], a + ld [$ffd0], a + ld a, $90 + ld [$ffd2], a + call WaitBGMap + jp $620b +; 6454 + +INCBIN "baserom.gbc", $6454, $669f - $6454 CheckNickErrors: ; 669f ; error-check monster nick before use @@ -10767,7 +12025,165 @@ DrawGraphic: ; 6eef ; 6f07 -INCBIN "baserom.gbc", $6f07, $6fd9 - $6f07 +Function6f07: ; 6f07 + call $6f5f + ret c + ld hl, $0010 + add hl, bc + ld d, [hl] + ld hl, $0011 + add hl, bc + ld e, [hl] + ld hl, $0006 + add hl, bc + bit 7, [hl] + jp nz, $6fa1 + ld hl, $000e + add hl, bc + ld a, [hl] + ld d, a + call GetTileType + and a + jr z, .asm_6f3e + scf + ret + + call $6f5f + ret c + ld hl, $000e + add hl, bc + ld a, [hl] + call GetTileType + cp $1 + jr z, .asm_6f3e + scf + ret + +.asm_6f3e + ld hl, $000e + add hl, bc + ld a, [hl] + call $6f7f + ret nc + push af + ld hl, $0007 + add hl, bc + ld a, [hl] + and $3 + ld e, a + ld d, $0 + ld hl, $6f5b + add hl, de + pop af + and [hl] + ret z + scf + ret +; 6f5b + +INCBIN "baserom.gbc", $6f5b, $6f5f - $6f5b + + +Function6f5f: ; 6f5f + ld hl, $000f + add hl, bc + ld a, [hl] + call $6f7f + ret nc + push af + ld hl, $0007 + add hl, bc + and $3 + ld e, a + ld d, $0 + ld hl, $6f7b + add hl, de + pop af + and [hl] + ret z + scf + ret +; 6f7b + +INCBIN "baserom.gbc", $6f7b, $6f7f - $6f7b + + +Function6f7f: ; 6f7f + ld d, a + and $f0 + cp $b0 + jr z, .asm_6f8c + cp $c0 + jr z, .asm_6f8c + xor a + ret + +.asm_6f8c + ld a, d + and $7 + ld e, a + ld d, $0 + ld hl, $6f99 + add hl, de + ld a, [hl] + scf + ret +; 6f99 + +INCBIN "baserom.gbc", $6f99, $6fa1 - $6f99 + + +Function6fa1: ; 6fa1 + ld hl, $0007 + add hl, bc + ld a, [hl] + and $3 + jr z, .asm_6fb2 + dec a + jr z, .asm_6fb7 + dec a + jr z, .asm_6fbb + jr .asm_6fbf + +.asm_6fb2 + inc e + push de + inc d + jr .asm_6fc2 + +.asm_6fb7 + push de + inc d + jr .asm_6fc2 + +.asm_6fbb + push de + inc e + jr .asm_6fc2 + +.asm_6fbf + inc d + push de + inc e + +.asm_6fc2 + call $2a3c + call GetTileType + pop de + and a + jr nz, .asm_6fd7 + call $2a3c + call GetTileType + and a + jr nz, .asm_6fd7 + xor a + ret + +.asm_6fd7 + scf + ret +; 6fd9 + CheckFacingObject: ; 6fd9 @@ -10812,20 +12228,252 @@ CheckFacingObject: ; 6fd9 ; 7009 -INCBIN "baserom.gbc", $7009, $7305 - $7009 - - -SpecialGiveShuckle: ; 7305 - -; Adding to the party. - xor a - ld [MonType], a +Function7009: ; 7009 + ld hl, $0010 + add hl, bc + ld d, [hl] + ld hl, $0011 + add hl, bc + ld e, [hl] + jr .asm_7041 -; Level 15 Shuckle. - ld a, SHUCKLE - ld [CurPartySpecies], a - ld a, 15 - ld [CurPartyLevel], a + ld a, [hConnectionStripLength] + call $1ae5 + call $7021 + call $7041 + ret + + ld hl, $0010 + add hl, bc + ld d, [hl] + ld hl, $0011 + add hl, bc + ld e, [hl] + call GetSpriteDirection + and a + jr z, .asm_703b + cp $4 + jr z, .asm_703d + cp $8 + jr z, .asm_703f + inc d + ret + +.asm_703b + inc e + ret + +.asm_703d + dec e + ret + +.asm_703f + dec d + ret + +.asm_7041 + ld bc, $d4d6 + xor a +.asm_7045 + ld [hConnectedMapWidth], a + call $1af1 + jr z, .asm_7093 + ld hl, $0004 + add hl, bc + bit 7, [hl] + jr nz, .asm_7093 + ld hl, $0006 + add hl, bc + bit 7, [hl] + jr z, .asm_7063 + call $7171 + jr nc, .asm_707b + jr .asm_7073 + +.asm_7063 + ld hl, $0010 + add hl, bc + ld a, [hl] + cp d + jr nz, .asm_707b + ld hl, $0011 + add hl, bc + ld a, [hl] + cp e + jr nz, .asm_707b + +.asm_7073 + ld a, [hConnectionStripLength] + ld l, a + ld a, [hConnectedMapWidth] + cp l + jr nz, .asm_70a2 + +.asm_707b + ld hl, $0012 + add hl, bc + ld a, [hl] + cp d + jr nz, .asm_7093 + ld hl, $0013 + add hl, bc + ld a, [hl] + cp e + jr nz, .asm_7093 + ld a, [hConnectionStripLength] + ld l, a + ld a, [hConnectedMapWidth] + cp l + jr nz, .asm_70a2 + +.asm_7093 + ld hl, $0028 + add hl, bc + ld b, h + ld c, l + ld a, [hConnectedMapWidth] + inc a + cp $d + jr nz, .asm_7045 + and a + ret + +.asm_70a2 + scf + ret +; 70a4 + +Function70a4: ; 70a4 + ld hl, $0016 + add hl, bc + ld a, [hl] + and a + jr z, .asm_70e9 + and $f + jr z, .asm_70c7 + ld e, a + ld d, a + ld hl, $0014 + add hl, bc + ld a, [hl] + sub d + ld d, a + ld a, [hl] + add e + ld e, a + ld hl, $0010 + add hl, bc + ld a, [hl] + cp d + jr z, .asm_70eb + cp e + jr z, .asm_70eb + +.asm_70c7 + ld hl, $0016 + add hl, bc + ld a, [hl] + swap a + and $f + jr z, .asm_70e9 + ld e, a + ld d, a + ld hl, $0015 + add hl, bc + ld a, [hl] + sub d + ld d, a + ld a, [hl] + add e + ld e, a + ld hl, $0011 + add hl, bc + ld a, [hl] + cp d + jr z, .asm_70eb + cp e + jr z, .asm_70eb + +.asm_70e9 + xor a + ret + +.asm_70eb + scf + ret +; 70ed + +Function70ed: ; 70ed + ld hl, $0010 + add hl, bc + ld a, [XCoord] + cp [hl] + jr z, .asm_70fe + jr nc, .asm_7111 + add $9 + cp [hl] + jr c, .asm_7111 + +.asm_70fe + ld hl, $0011 + add hl, bc + ld a, [YCoord] + cp [hl] + jr z, .asm_710f + jr nc, .asm_7111 + add $8 + cp [hl] + jr c, .asm_7111 + +.asm_710f + and a + ret + +.asm_7111 + scf + ret +; 7113 + +INCBIN "baserom.gbc", $7113, $7171 - $7113 + + +Function7171: ; 7171 + ld hl, $0010 + add hl, bc + ld a, d + sub [hl] + jr c, .asm_718b + cp $2 + jr nc, .asm_718b + ld hl, $0011 + add hl, bc + ld a, e + sub [hl] + jr c, .asm_718b + cp $2 + jr nc, .asm_718b + scf + ret + +.asm_718b + and a + ret +; 718d + +INCBIN "baserom.gbc", $718d, $7305 - $718d + + +SpecialGiveShuckle: ; 7305 + +; Adding to the party. + xor a + ld [MonType], a + +; Level 15 Shuckle. + ld a, SHUCKLE + ld [CurPartySpecies], a + ld a, 15 + ld [CurPartyLevel], a ld a, PREDEF_ADDPARTYMON call Predef @@ -10897,7 +12545,103 @@ INCBIN "baserom.gbc", $737e, $747b - $737e SECTION "bank2",DATA,BANK[$2] -INCBIN "baserom.gbc", $8000, $854b - $8000 +INCBIN "baserom.gbc", $8000, $8286 - $8000 + + +Function8286: ; 8286 + ld a, [$c2f0] + ld hl, $0001 + add hl, de + ld [hl], a + ld a, [$c2f4] + call $1a61 + ld a, [$c2f3] + ld hl, $0006 + add hl, de + or [hl] + ld [hl], a + ld a, [$c2f7] + call $42d5 + ld a, [$c2f6] + call $42f1 + ld a, [$c2f1] + ld hl, $0000 + add hl, de + ld [hl], a + ld a, [$c2f2] + ld hl, $0002 + add hl, de + ld [hl], a + ld hl, $0009 + add hl, de + ld [hl], $0 + ld hl, $000d + add hl, de + ld [hl], $ff + ld a, [$c2f8] + call $430d + ld a, [$c2f5] + ld hl, $0020 + add hl, de + ld [hl], a + and a + ret +; 82d5 + +Function82d5: ; 82d5 + ld hl, $0015 + add hl, de + ld [hl], a + ld hl, $0011 + add hl, de + ld [hl], a + ld hl, YCoord + sub [hl] + and $f + swap a + ld hl, $d14d + sub [hl] + ld hl, $0018 + add hl, de + ld [hl], a + ret +; 82f1 + +Function82f1: ; 82f1 + ld hl, $0014 + add hl, de + ld [hl], a + ld hl, $0010 + add hl, de + ld [hl], a + ld hl, XCoord + sub [hl] + and $f + swap a + ld hl, $d14c + sub [hl] + ld hl, $0017 + add hl, de + ld [hl], a + ret +; 830d + +Function830d: ; 830d + ld h, a + inc a + and $f + ld l, a + ld a, h + add $10 + and $f0 + or l + ld hl, $0016 + add hl, de + ld [hl], a + ret +; 831e + +INCBIN "baserom.gbc", $831e, $854b - $831e GetPredefFn: ; 854b ; input: @@ -11043,23 +12787,91 @@ CheckShininess: ; 0x8a68 and a ; clear carry flag ret -INCBIN "baserom.gbc", $8a88, $9a52-$8a88 +INCBIN "baserom.gbc", $8a88, $8d55 - $8a88 -CopyData: ; 0x9a52 -; copy bc bytes of data from hl to de - ld a, [hli] - ld [de], a - inc de - dec bc - ld a, c - or b - jr nz, CopyData + +Function8d55: ; 8d55 + ld a, [hCGB] + and a ret -; 0x9a5b +; 8d59 -ClearBytes: ; 0x9a5b -; clear bc bytes of data starting from de - xor a +INCBIN "baserom.gbc", $8d59, $9890 - $8d59 + + +Function9890: ; 9890 + call $4d55 + ret z + ld a, $1 + ld [rVBK], a + ld hl, VTiles0 + ld bc, $2000 + xor a + call ByteFill + ld a, $0 + ld [rVBK], a + ld a, $80 + ld [rBGPI], a + ld c, $20 +.asm_98ac + ld a, $ff + ld [rBGPD], a + ld a, $7f + ld [rBGPD], a + dec c + jr nz, .asm_98ac + ld a, $80 + ld [rOBPI], a + ld c, $20 +.asm_98bd + ld a, $ff + ld [rOBPD], a + ld a, $7f + ld [rOBPD], a + dec c + jr nz, .asm_98bd + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, $d000 + call $58df + ld hl, $d080 + call $58df + pop af + ld [rSVBK], a + ret +; 98df + +Function98df: ; 98df + ld c, $40 +.asm_98e1 + ld a, $ff + ld [hli], a + ld a, $7f + ld [hli], a + dec c + jr nz, .asm_98e1 + ret +; 98eb + +INCBIN "baserom.gbc", $98eb, $9a52 - $98eb + +CopyData: ; 0x9a52 +; copy bc bytes of data from hl to de + ld a, [hli] + ld [de], a + inc de + dec bc + ld a, c + or b + jr nz, CopyData + ret +; 0x9a5b + +ClearBytes: ; 0x9a5b +; clear bc bytes of data starting from de + xor a ld [de], a inc de dec bc @@ -13445,7 +15257,22 @@ root set root+1 SECTION "bank5",DATA,BANK[$5] -INCBIN "baserom.gbc", $14000, $14032 - $14000 +INCBIN "baserom.gbc", $14000, $14019 - $14000 + + +Function14019: ; 14019 + ld a, $a + ld [$0000], a + call LatchClock + ld a, $c + ld [$4000], a + ld a, [$a000] + res 6, a + ld [$a000], a + call CloseSRAM + ret +; 14032 + GetTimeOfDay: ; 14032 @@ -13482,7 +15309,37 @@ TimesOfDay: ; 14044 ; 1404c -INCBIN "baserom.gbc", $1404c, $14183 - $1404c +INCBIN "baserom.gbc", $1404c, $14089 - $1404c + + +Function14089: ; 14089 + call GetClock + call $409b + call FixDays + jr nc, .asm_14097 + call $06d3 + +.asm_14097 + call $4019 + ret +; 1409b + +Function1409b: ; 1409b + ld hl, hRTCDayHi + bit 7, [hl] + jr nz, .asm_140a8 + bit 6, [hl] + jr nz, .asm_140a8 + xor a + ret + +.asm_140a8 + ld a, $80 + call $06d3 + ret +; 140ae + +INCBIN "baserom.gbc", $140ae, $14183 - $140ae GetPlayerSprite: ; 14183 @@ -14711,7 +16568,103 @@ INCLUDE "gfx/overworld/sprite_headers.asm" ; 1499a -INCBIN "baserom.gbc", $1499a, $152ab - $1499a +INCBIN "baserom.gbc", $1499a, $14f1c - $1499a + + +Function14f1c: ; 14f1c + xor a + ld [$cfcd], a + call $4f84 + ld a, [$cfcd] + and a + jr z, .asm_14f46 + ld a, $1 + call GetSRAMBank + ld hl, $a044 + ld de, StartDay + ld bc, $0008 + call CopyBytes + ld hl, $a3da + ld de, StatusFlags + ld a, [hl] + ld [de], a + call CloseSRAM + ret + +.asm_14f46 + call $4faf + ld a, [$cfcd] + and a + jr z, .asm_14f6c + ld a, $0 + call GetSRAMBank + ld hl, $b244 + ld de, StartDay + ld bc, $0008 + call CopyBytes + ld hl, $b5da + ld de, StatusFlags + ld a, [hl] + ld [de], a + call CloseSRAM + ret + +.asm_14f6c + ld hl, $4f7c + ld de, Options + ld bc, $0008 + call CopyBytes + call $067e + ret +; 14f7c + +INCBIN "baserom.gbc", $14f7c, $14f84 - $14f7c + + +Function14f84: ; 14f84 + ld a, $1 + call GetSRAMBank + ld a, [$a008] + cp $63 + jr nz, .asm_14fab + ld a, [$ad0f] + cp $7f + jr nz, .asm_14fab + ld hl, $a000 + ld de, Options + ld bc, $0008 + call CopyBytes + call CloseSRAM + ld a, $1 + ld [$cfcd], a + +.asm_14fab + call CloseSRAM + ret +; 14faf + +Function14faf: ; 14faf + ld a, $0 + call GetSRAMBank + ld a, [$b208] + cp $63 + jr nz, .asm_14fd3 + ld a, [$bf0f] + cp $7f + jr nz, .asm_14fd3 + ld hl, $b200 + ld de, Options + ld bc, $0008 + call CopyBytes + ld a, $2 + ld [$cfcd], a + +.asm_14fd3 + call CloseSRAM + ret +; 14fd7 + +INCBIN "baserom.gbc", $14fd7, $152ab - $14fd7 BlackoutPoints: ; 0x152ab @@ -16464,7 +18417,63 @@ AIScoring: ; 38591 INCLUDE "battle/ai/scoring.asm" -INCBIN "baserom.gbc", $3952d, $39999 - $3952d +INCBIN "baserom.gbc", $3952d, $39939 - $3952d + + +Function39939: ; 39939 + ld a, [$cfc0] + bit 0, a + ld hl, $d26b + jp nz, $5984 + ld a, [OtherTrainerID] + ld b, a + ld a, [OtherTrainerClass] + ld c, a + ld a, c + cp $c + jr nz, .asm_3996d + ld a, $0 + call GetSRAMBank + ld a, [$abfd] + and a + call CloseSRAM + jr z, .asm_3996d + ld a, $0 + call GetSRAMBank + ld hl, $abfe + call $5984 + jp CloseSRAM + +.asm_3996d + dec c + push bc + ld b, $0 + ld hl, TrainerGroups + add hl, bc + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + pop bc +.asm_3997a + dec b + jr z, .asm_39984 +.asm_3997d + ld a, [hli] + cp $ff + jr nz, .asm_3997d + jr .asm_3997a + +.asm_39984 + ld de, StringBuffer1 + push de + ld bc, $000b + call CopyBytes + pop de + ret +; 39990 + +INCBIN "baserom.gbc", $39990, $39999 - $39990 TrainerGroups: ; 0x39999 @@ -19893,7 +21902,119 @@ EvolutionGFX: INCBIN "gfx/evo/bubble_large.2bpp" INCBIN "gfx/evo/bubble.2bpp" -INCBIN "baserom.gbc", $4e881, $4f31c - $4e881 +INCBIN "baserom.gbc", $4e881, $4ea82 - $4e881 + + +Function4ea82: ; 4ea82 + ld a, [hCGB] + and a + ret nz + ld de, $0000 + call StartMusic + call ClearTileMap + ld hl, $6b76 + ld de, $d000 + ld a, [rSVBK] + push af + ld a, $0 + ld [rSVBK], a + call Decompress + pop af + ld [rSVBK], a + ld de, $d000 + ld hl, VTiles2 + ld bc, Text_1354 + call $0f82 + ld de, $4200 + ld hl, VTiles1 + ld bc, $3e80 + call $0f9d + call $6ac5 + call WaitBGMap +.asm_4eac0 + call DelayFrame + jr .asm_4eac0 +; 4eac5 + +Function4eac5: ; 4eac5 + call $6aea + ld hl, $c4cb + ld b, $e + ld c, $4 + ld a, $8 + call $6b27 + ld hl, $c51d + ld b, $a + ld c, $2 + ld a, $40 + call $6b27 + ld de, $6b38 + ld hl, $c569 + call PlaceString + ret +; 4eaea + +Function4eaea: ; 4eaea + ld hl, TileMap + ld [hl], $0 + inc hl + ld a, $1 + call $6b15 + ld [hl], $2 + ld hl, $c4b4 + ld a, $3 + call $6b1c + ld hl, $c4c7 + ld a, $4 + call $6b1c + ld hl, $c5f4 + ld [hl], $5 + inc hl + ld a, $6 + call $6b15 + ld [hl], $7 + ret +; 4eb15 + +Function4eb15: ; 4eb15 + ld c, $12 +.asm_4eb17 + ld [hli], a + dec c + jr nz, .asm_4eb17 + ret +; 4eb1c + +Function4eb1c: ; 4eb1c + ld de, $0014 + ld c, $10 +.asm_4eb21 + ld [hl], a + add hl, de + dec c + jr nz, .asm_4eb21 + ret +; 4eb27 + +Function4eb27: ; 4eb27 + ld de, $0014 +.asm_4eb2a + push bc + push hl +.asm_4eb2c + ld [hli], a + inc a + dec b + jr nz, .asm_4eb2c + pop hl + add hl, de + pop bc + dec c + jr nz, .asm_4eb2a + ret +; 4eb38 + +INCBIN "baserom.gbc", $4eb38, $4f31c - $4eb38 SECTION "bank14",DATA,BANK[$14] @@ -22301,166 +24422,610 @@ GetTimePalFade: ; 8c17c ld b, $0 add hl, bc ret -; 8c19e - -.dmgfades ; 8c19e - dw .morn - dw .day - dw .nite - dw .darkness -; 8c1a6 - -.morn ; 8c1a6 - db %11111111 - db %11111111 - db %11111111 - - db %11111110 - db %11111110 - db %11111110 - - db %11111001 - db %11100100 - db %11100100 - - db %11100100 - db %11010000 - db %11010000 - - db %10010000 - db %10000000 - db %10000000 - - db %01000000 - db %01000000 - db %01000000 - - db %00000000 - db %00000000 - db %00000000 -; 8c1bb +; 8c19e + +.dmgfades ; 8c19e + dw .morn + dw .day + dw .nite + dw .darkness +; 8c1a6 + +.morn ; 8c1a6 + db %11111111 + db %11111111 + db %11111111 + + db %11111110 + db %11111110 + db %11111110 + + db %11111001 + db %11100100 + db %11100100 + + db %11100100 + db %11010000 + db %11010000 + + db %10010000 + db %10000000 + db %10000000 + + db %01000000 + db %01000000 + db %01000000 + + db %00000000 + db %00000000 + db %00000000 +; 8c1bb + +.day ; 8c1bb + db %11111111 + db %11111111 + db %11111111 + + db %11111110 + db %11111110 + db %11111110 + + db %11111001 + db %11100100 + db %11100100 + + db %11100100 + db %11010000 + db %11010000 + + db %10010000 + db %10000000 + db %10000000 + + db %01000000 + db %01000000 + db %01000000 + + db %00000000 + db %00000000 + db %00000000 +; 8c1d0 + +.nite ; 8c1d0 + db %11111111 + db %11111111 + db %11111111 + + db %11111110 + db %11111110 + db %11111110 + + db %11111001 + db %11100100 + db %11100100 + + db %11101001 + db %11010000 + db %11010000 + + db %10010000 + db %10000000 + db %10000000 + + db %01000000 + db %01000000 + db %01000000 + + db %00000000 + db %00000000 + db %00000000 +; 8c1e5 + +.darkness ; 8c1e5 + db %11111111 + db %11111111 + db %11111111 + + db %11111110 + db %11111110 + db %11111111 + + db %11111110 + db %11100100 + db %11111111 + + db %11111101 + db %11010000 + db %11111111 + + db %11111101 + db %10000000 + db %11111111 + + db %00000000 + db %01000000 + db %00000000 + + db %00000000 + db %00000000 + db %00000000 +; 8c1fa + +.cgbfade ; 8c1fa + db %11111111 + db %11111111 + db %11111111 + + db %11111110 + db %11111110 + db %11111110 + + db %11111001 + db %11111001 + db %11111001 + + db %11100100 + db %11100100 + db %11100100 + + db %10010000 + db %10010000 + db %10010000 + + db %01000000 + db %01000000 + db %01000000 + + db %00000000 + db %00000000 + db %00000000 +; 8c20f + +INCBIN "baserom.gbc", $8c20f, $8cf53 - $8c20f + + +Function8cf53: ; 8cf53 + ld hl, $c300 + ld bc, $00c1 +.asm_8cf59 + ld [hl], $0 + inc hl + dec bc + ld a, c + or b + jr nz, .asm_8cf59 + ret +; 8cf62 + +INCBIN "baserom.gbc", $8cf62, $8cf69 - $8cf62 + + +Function8cf69: ; 8cf69 + push hl + push de + push bc + push af + ld a, $0 + ld [$c3b5], a + call $4f7a + pop af + pop bc + pop de + pop hl + ret +; 8cf7a + +Function8cf7a: ; 8cf7a + ld hl, $c314 + ld e, $a +.asm_8cf7f + ld a, [hl] + and a + jr z, .asm_8cf91 + ld c, l + ld b, h + push hl + push de + call $524b + call $504c + pop de + pop hl + jr c, .asm_8cfa7 + +.asm_8cf91 + ld bc, $0010 + add hl, bc + dec e + jr nz, .asm_8cf7f + ld a, [$c3b5] + ld l, a + ld h, $c4 +.asm_8cf9e + ld a, l + cp $a0 + jr nc, .asm_8cfa7 + xor a + ld [hli], a + jr .asm_8cf9e + +.asm_8cfa7 + ret +; 8cfa8 + +INCBIN "baserom.gbc", $8cfa8, $8cfd6 - $8cfa8 + + +Function8cfd6: ; 8cfd6 + push de + push af + ld hl, $c314 + ld e, $a +.asm_8cfdd + ld a, [hl] + and a + jr z, .asm_8cfec + ld bc, $0010 + add hl, bc + dec e + jr nz, .asm_8cfdd + pop af + pop de + scf + ret + +.asm_8cfec + ld c, l + ld b, h + ld hl, $c3b4 + inc [hl] + ld a, [hl] + and a + jr nz, .asm_8cff7 + inc [hl] + +.asm_8cff7 + pop af + ld e, a + ld d, $0 + ld hl, $51c4 + add hl, de + add hl, de + add hl, de + ld e, l + ld d, h + ld hl, $0000 + add hl, bc + ld a, [$c3b4] + ld [hli], a + ld a, [de] + ld [hli], a + inc de + ld a, [de] + ld [hli], a + inc de + ld a, [de] + call $5109 + ld [hli], a + pop de + ld hl, $0004 + add hl, bc + ld a, e + ld [hli], a + ld a, d + ld [hli], a + xor a + ld [hli], a + ld [hli], a + xor a + ld [hli], a + ld [hli], a + dec a + ld [hli], a + xor a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld a, c + ld [$c3b8], a + ld a, b + ld [$c3b9], a + ret +; 8d036 + +Function8d036: ; 8d036 + ld hl, $0000 + add hl, bc + ld [hl], $0 + ret +; 8d03d + +INCBIN "baserom.gbc", $8d03d, $8d04c - $8d03d + + +Function8d04c: ; 8d04c + call $50ec + call $5132 + cp $fd + jr z, .asm_8d0b9 + cp $fc + jr z, .asm_8d0b6 + call $51a2 + ld a, [$c3ba] + add [hl] + ld [$c3ba], a + inc hl + ld a, [hli] + ld h, [hl] + ld l, a + push bc + ld a, [$c3b5] + ld e, a + ld d, $c4 + ld a, [hli] + ld c, a +.asm_8d071 + ld a, [$c3bc] + ld b, a + ld a, [$c3be] + add b + ld b, a + ld a, [$c3bf] + add b + ld b, a + call $50be + add b + ld [de], a + inc hl + inc de + ld a, [$c3bb] + ld b, a + ld a, [$c3bd] + add b + ld b, a + ld a, [$c3c0] + add b + ld b, a + call $50ce + add b + ld [de], a + inc hl + inc de + ld a, [$c3ba] + add [hl] + ld [de], a + inc hl + inc de + call $50de + ld [de], a + inc hl + inc de + ld a, e + ld [$c3b5], a + cp $a0 + jr nc, .asm_8d0bb + dec c + jr nz, .asm_8d071 + pop bc + jr .asm_8d0b9 + +.asm_8d0b6 + call $5036 + +.asm_8d0b9 + and a + ret + +.asm_8d0bb + pop bc + scf + ret +; 8d0be + +Function8d0be: ; 8d0be + push hl + ld a, [hl] + ld hl, $c3b8 + bit 6, [hl] + jr z, .asm_8d0cc + add $8 + xor $ff + inc a + +.asm_8d0cc + pop hl + ret +; 8d0ce + +Function8d0ce: ; 8d0ce + push hl + ld a, [hl] + ld hl, $c3b8 + bit 5, [hl] + jr z, .asm_8d0dc + add $8 + xor $ff + inc a + +.asm_8d0dc + pop hl + ret +; 8d0de + +Function8d0de: ; 8d0de + ld a, [$c3b8] + ld b, a + ld a, [hl] + xor b + and $e0 + ld b, a + ld a, [hl] + and $1f + or b + ret +; 8d0ec + +Function8d0ec: ; 8d0ec + xor a + ld [$c3b8], a + ld hl, $0003 + add hl, bc + ld a, [hli] + ld [$c3ba], a + ld a, [hli] + ld [$c3bb], a + ld a, [hli] + ld [$c3bc], a + ld a, [hli] + ld [$c3bd], a + ld a, [hli] + ld [$c3be], a + ret +; 8d109 + +Function8d109: ; 8d109 + push hl + push bc + ld hl, $c300 + ld b, a + ld c, $a +.asm_8d111 + ld a, [hli] + cp b + jr z, .asm_8d11c + inc hl + dec c + jr nz, .asm_8d111 + xor a + jr .asm_8d11d + +.asm_8d11c + ld a, [hl] + +.asm_8d11d + pop bc + pop hl + ret +; 8d120 + +INCBIN "baserom.gbc", $8d120, $8d132 - $8d120 + + +Function8d132: ; 8d132 +.asm_8d132 + ld hl, $0008 + add hl, bc + ld a, [hl] + and a + jr z, .asm_8d142 + dec [hl] + call $5189 + ld a, [hli] + push af + jr .asm_8d163 + +.asm_8d142 + ld hl, $000a + add hl, bc + inc [hl] + call $5189 + ld a, [hli] + cp $fe + jr z, .asm_8d17b + cp $ff + jr z, .asm_8d16d + push af + ld a, [hl] + push hl + and $3f + ld hl, $0009 + add hl, bc + add [hl] + ld hl, $0008 + add hl, bc + ld [hl], a + pop hl + +.asm_8d163 + ld a, [hl] + and $c0 + srl a + ld [$c3b8], a + pop af + ret + +.asm_8d16d + xor a + ld hl, $0008 + add hl, bc + ld [hl], a + ld hl, $000a + add hl, bc + dec [hl] + dec [hl] + jr .asm_8d132 + +.asm_8d17b + xor a + ld hl, $0008 + add hl, bc + ld [hl], a + dec a + ld hl, $000a + add hl, bc + ld [hl], a + jr .asm_8d132 +; 8d189 + +Function8d189: ; 8d189 + ld hl, $0001 + add hl, bc + ld e, [hl] + ld d, $0 + ld hl, $56e6 + add hl, de + add hl, de + ld e, [hl] + inc hl + ld d, [hl] + ld hl, $000a + add hl, bc + ld l, [hl] + ld h, $0 + add hl, hl + add hl, de + ret +; 8d1a2 -.day ; 8c1bb - db %11111111 - db %11111111 - db %11111111 - - db %11111110 - db %11111110 - db %11111110 - - db %11111001 - db %11100100 - db %11100100 - - db %11100100 - db %11010000 - db %11010000 - - db %10010000 - db %10000000 - db %10000000 - - db %01000000 - db %01000000 - db %01000000 - - db %00000000 - db %00000000 - db %00000000 -; 8c1d0 +Function8d1a2: ; 8d1a2 + ld e, a + ld d, $0 + ld hl, $594d + add hl, de + add hl, de + add hl, de + ret +; 8d1ac -.nite ; 8c1d0 - db %11111111 - db %11111111 - db %11111111 - - db %11111110 - db %11111110 - db %11111110 - - db %11111001 - db %11100100 - db %11100100 - - db %11101001 - db %11010000 - db %11010000 - - db %10010000 - db %10000000 - db %10000000 - - db %01000000 - db %01000000 - db %01000000 - - db %00000000 - db %00000000 - db %00000000 -; 8c1e5 +INCBIN "baserom.gbc", $8d1ac, $8d24b - $8d1ac -.darkness ; 8c1e5 - db %11111111 - db %11111111 - db %11111111 - - db %11111110 - db %11111110 - db %11111111 - - db %11111110 - db %11100100 - db %11111111 - - db %11111101 - db %11010000 - db %11111111 - - db %11111101 - db %10000000 - db %11111111 - - db %00000000 - db %01000000 - db %00000000 - - db %00000000 - db %00000000 - db %00000000 -; 8c1fa -.cgbfade ; 8c1fa - db %11111111 - db %11111111 - db %11111111 - - db %11111110 - db %11111110 - db %11111110 - - db %11111001 - db %11111001 - db %11111001 - - db %11100100 - db %11100100 - db %11100100 - - db %10010000 - db %10010000 - db %10010000 - - db %01000000 - db %01000000 - db %01000000 - - db %00000000 - db %00000000 - db %00000000 -; 8c20f +Function8d24b: ; 8d24b + ld hl, $0002 + add hl, bc + ld e, [hl] + ld d, $0 + ld hl, $525b + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 8d25b -INCBIN "baserom.gbc", $8c20f, $8e9ac - $8c20f +INCBIN "baserom.gbc", $8d25b, $8e9ac - $8d25b GetSpeciesIcon: ; 8e9ac ; Load species icon into VRAM at tile a @@ -27574,9 +30139,146 @@ SECTION "bank38",DATA,BANK[$38] INCBIN "baserom.gbc", $e0000, $e37f9 - $e0000 -SECTION "bank39",DATA,BANK[$39] +SECTION "bank39",DATA,BANK[$39] + +INCBIN "baserom.gbc", $e4000, $e4579 - $e4000 + + +Functione4579: ; e4579 + ld de, $0000 + call StartMusic + call WhiteBGMap + call ClearTileMap + ld a, $98 + ld [$ffd7], a + xor a + ld [hBGMapAddress], a + ld [hJoyDown], a + ld [$ffcf], a + ld [$ffd0], a + ld a, $90 + ld [$ffd2], a + call WaitBGMap + ld b, $19 + call GetSGBLayout + call $32f9 + ld c, $a + call DelayFrames + ld hl, $63e2 + ld a, $1 + rst FarCall + call WaitBGMap + ld c, $64 + call DelayFrames + call ClearTileMap + ld a, $13 + ld hl, $6a82 + rst FarCall + call $45e8 +.asm_e45c0 + call $0a57 + ld a, [$ffa9] + and $f + jr nz, .asm_e45de + ld a, [$cf63] + bit 7, a + jr nz, .asm_e45e3 + call $4670 + ld a, $23 + ld hl, $4f69 + rst FarCall + call DelayFrame + jr .asm_e45c0 + +.asm_e45de + call $465e + scf + ret + +.asm_e45e3 + call $465e + and a + ret +; e45e8 + +Functione45e8: ; e45e8 + ld de, $47cc + ld hl, VTiles2 + ld bc, $391c + call $0f9d + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + ld hl, $5407 + ld de, $d000 + ld a, $42 + call FarDecompress + ld hl, VTiles0 + ld de, $d000 + ld bc, $0180 + call $0eba + ld hl, VTiles1 + ld de, $d800 + ld bc, $0180 + call $0eba + pop af + ld [rSVBK], a + ld a, $23 + ld hl, $4f53 + rst FarCall + ld de, $5458 + ld a, $3 + call $3b2a + ld hl, $0007 + add hl, bc + ld [hl], $a0 + ld hl, $000c + add hl, bc + ld [hl], $60 + ld hl, $000d + add hl, bc + ld [hl], $30 + xor a + ld [$cf63], a + ld [$cf64], a + ld [$cf65], a + ld [$ffcf], a + ld [$ffd0], a + ld a, $1 + ld [hBGMapMode], a + ld a, $90 + ld [$ffd2], a + ld de, $e4e4 + call DmgToCgbObjPals + ret +; e465e + +Functione465e: ; e465e + ld a, $23 + ld hl, $4f53 + rst FarCall + call ClearTileMap + call ClearSprites + ld c, $10 + call DelayFrames + ret +; e4670 + +Functione4670: ; e4670 + ld a, [$cf63] + ld e, a + ld d, $0 + ld hl, $467f + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; e467f -INCBIN "baserom.gbc", $e4000, $e555d - $e4000 +INCBIN "baserom.gbc", $e467f, $e555d - $e467f IntroSuicuneRunGFX: ; e555d INCBIN "gfx/intro/suicune_run.lz" @@ -27893,7 +30595,56 @@ TownMapGFX: ; f8ba0 INCBIN "gfx/misc/town_map.lz" ; f8ea3 -INCBIN "baserom.gbc", $f8ea3, $fbbfc - $f8ea3 +INCBIN "baserom.gbc", $f8ea3, $fb48a - $f8ea3 + + +Functionfb48a: ; fb48a + ld de, $5214 + ld hl, $9600 + ld bc, $3e01 + call $0ddc + ld de, $4f24 + ld hl, $9620 + ld bc, $3e01 + call $0dc9 + ld de, $4030 + ld hl, $9630 + ld bc, $3e16 + call $0dc9 + jr .asm_fb4cc + + ld de, $5424 + ld hl, $9610 + ld b, $3e + ld c, $1 + call $0dc9 + ret + + ld de, $4600 + ld hl, $9600 + ld bc, $3e19 + call $0dc9 + jr .asm_fb4cc + +.asm_fb4cc + ld a, [TextBoxFrame] + and $7 + ld bc, $0030 + ld hl, $4800 + call AddNTimes + ld d, h + ld e, l + ld hl, $9790 + ld bc, $3e06 + call $0ddc + ld hl, $97f0 + ld de, $5204 + ld bc, $3e01 + call $0ddc + ret +; fb4f2 + +INCBIN "baserom.gbc", $fb4f2, $fbbfc - $fb4f2 INCLUDE "battle/magikarp_length.asm" @@ -29147,7 +31898,156 @@ INCBIN "baserom.gbc", $100000, $10389d - $100000 SECTION "bank41",DATA,BANK[$41] -INCBIN "baserom.gbc", $104000, $104350 - $104000 +INCBIN "baserom.gbc", $104000, $104209 - $104000 + + +Function104209: ; 104209 + ld b, $7f + ld a, h + ld [rHDMA1], a + ld a, l + and $f0 + ld [rHDMA2], a + ld a, d + and $1f + ld [rHDMA3], a + ld a, e + and $f0 + ld [rHDMA4], a + ld a, c + dec c + or $80 + ld e, a + ld a, b + sub c + ld d, a +.asm_104225 + ld a, [rLY] + cp d + jr nc, .asm_104225 + di +.asm_10422b + ld a, [rSTAT] + and $3 + jr nz, .asm_10422b +.asm_104231 + ld a, [rSTAT] + and $3 + jr z, .asm_104231 + ld a, e + ld [rHDMA5], a + ld a, [rLY] + inc c + ld hl, rLY +.asm_104240 + cp [hl] + jr z, .asm_104240 + ld a, [hl] + dec c + jr nz, .asm_104240 + ld hl, rHDMA5 + res 7, [hl] + ei + ret +; 10424e + +INCBIN "baserom.gbc", $10424e, $104284 - $10424e + + +Function104284: ; 104284 + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + push bc + push hl + ld a, b + ld l, c + ld h, $0 + add hl, hl + add hl, hl + add hl, hl + add hl, hl + ld b, h + ld c, l + ld h, d + ld l, e + ld de, $d000 + call FarCopyBytes + pop hl + pop bc + push bc + call DelayFrame + pop bc + ld d, h + ld e, l + ld hl, $d000 + call $4209 + pop af + ld [rSVBK], a + ret +; 1042b2 + +Function1042b2: ; 1042b2 +.asm_1042b2 + ld a, c + cp $10 + jp c, $42d6 + jp z, $42d6 + push bc + push hl + push de + ld c, $10 + call $42d6 + pop de + ld hl, $0080 + add hl, de + ld d, h + ld e, l + pop hl + ld bc, Start + add hl, bc + pop bc + ld a, c + sub $10 + ld c, a + jr .asm_1042b2 +; 1042d6 + +Function1042d6: ; 1042d6 + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + push bc + push hl + ld a, b + ld l, c + ld h, $0 + add hl, hl + add hl, hl + add hl, hl + ld c, l + ld b, h + ld h, d + ld l, e + ld de, $d000 + call $0def + pop hl + pop bc + push bc + call DelayFrame + pop bc + ld d, h + ld e, l + ld hl, $d000 + call $4209 + pop af + ld [rSVBK], a + ret +; 104303 + +INCBIN "baserom.gbc", $104303, $104350 - $104303 INCBIN "gfx/ow/misc.2bpp" @@ -29946,7 +32846,122 @@ StartTitleScreen: ; 10ed67 ret ; 10eea7 -INCBIN "baserom.gbc", $10eea7, $10ef32 - $10eea7 +Function10eea7: ; 10eea7 + ld hl, DefaultFlypoint + ld a, [hl] + ld c, a + inc [hl] + and $7 + ret nz + ld a, c + and $18 + sla a + swap a + ld e, a + ld d, $0 + ld hl, $6ece + add hl, de + ld d, [hl] + xor a + ld [hBGMapMode], a + call $6ed2 + ld a, $1 + ld [hBGMapMode], a + ld a, $3 + ld [hBGMapThird], a + ret +; 10eece + +INCBIN "baserom.gbc", $10eece, $10eed2 - $10eece + + +Function10eed2: ; 10eed2 + ld hl, $c596 + ld b, $6 +.asm_10eed7 + ld c, $8 +.asm_10eed9 + ld a, d + ld [hli], a + inc d + dec c + jr nz, .asm_10eed9 + ld a, $c + add l + ld l, a + ld a, $0 + adc h + ld h, a + ld a, $8 + add d + ld d, a + dec b + jr nz, .asm_10eed7 + ret +; 10eeef + +Function10eeef: ; 10eeef +.asm_10eeef + push de + push bc + push hl +.asm_10eef2 + ld a, d + ld [hli], a + inc d + dec c + jr nz, .asm_10eef2 + pop hl + ld bc, $0014 + add hl, bc + pop bc + pop de + ld a, e + add d + ld d, a + dec b + jr nz, .asm_10eeef + ret +; 10ef06 + +Function10ef06: ; 10ef06 + ld hl, Sprites + ld d, $de + ld e, $0 + ld c, $5 +.asm_10ef0f + push bc + call $6f1c + pop bc + ld a, $10 + add d + ld d, a + dec c + jr nz, .asm_10ef0f + ret +; 10ef1c + +Function10ef1c: ; 10ef1c + ld c, $6 + ld b, $40 +.asm_10ef20 + ld a, d + ld [hli], a + ld a, b + ld [hli], a + add $8 + ld b, a + ld a, e + ld [hli], a + inc e + inc e + ld a, $80 + ld [hli], a + dec c + jr nz, .asm_10ef20 + ret +; 10ef32 + AnimateTitleCrystal: ; 10ef32 ; Move the title screen crystal downward until it's fully visible @@ -31340,7 +34355,48 @@ INCBIN "baserom.gbc", $17a68f, $17b629 - $17a68f SECTION "bank5F",DATA,BANK[$5F] -INCBIN "baserom.gbc", $17c000, $17ff6c - $17c000 +INCBIN "baserom.gbc", $17c000, $17f036 - $17c000 + + +Function17f036: ; 17f036 + ld a, $6 + call GetSRAMBank + inc de +.asm_17f03c + call $7047 + jr c, .asm_17f043 + jr .asm_17f03c + +.asm_17f043 + call CloseSRAM + ret +; 17f047 + +Function17f047: ; 17f047 + ld a, [de] + inc de + cp $50 + jr z, .asm_17f05f + cp $10 + jr nc, .asm_17f05f + dec a + push de + ld e, a + ld d, $0 + ld hl, $7061 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +.asm_17f05f + scf + ret +; 17f061 + +INCBIN "baserom.gbc", $17f061, $17ff6c - $17f061 SECTION "bank60",DATA,BANK[$60] @@ -31785,7 +34841,25 @@ Tileset26Coll: ; 0x1dd5a9 INCBIN "tilesets/26_collision.bin" ; 0x1dd6a9 -INCBIN "baserom.gbc", $1dd6a9, $1de29f - $1dd6a9 +INCBIN "baserom.gbc", $1dd6a9, $1de28a - $1dd6a9 + + +Function1de28a: ; 1de28a + ld hl, DudeAutoInput_A + jr .asm_1de299 + + ld hl, DudeAutoInput_RightA + jr .asm_1de299 + + ld hl, DudeAutoInput_DownA + jr .asm_1de299 + +.asm_1de299 + ld a, $77 + call StartAutoInput + ret +; 1de29f + DudeAutoInput_A: ; 1de29f -- cgit v1.2.3 From 4d72b06bccf62a4063e8a4c23faad2ef6e8c76c1 Mon Sep 17 00:00:00 2001 From: yenatch Date: Thu, 25 Jul 2013 21:08:30 -0400 Subject: replace known addresses with labels --- main.asm | 644 +++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 322 insertions(+), 322 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index 505732450..ecf5f8034 100644 --- a/main.asm +++ b/main.asm @@ -52,7 +52,7 @@ SECTION "joypad",HOME[$60] ; joypad interrupt SECTION "romheader",HOME[$100] Start: nop - jp $016e + jp Function16e SECTION "start",HOME[$150] @@ -119,12 +119,12 @@ Function16e: ; 16e ld [$ffea], a pop af ld [hCGB], a - call $025a + call Function25a ld a, $1 ld [rSVBK], a - call $0245 + call Function245 call ClearSprites - call $0270 + call Function270 ld a, $1 rst Bankswitch @@ -162,7 +162,7 @@ Function16e: ; 16e ld a, [hCGB] and a jr z, .asm_22b - call $2ff7 + call Function2ff7 .asm_22b xor a @@ -556,7 +556,7 @@ INCBIN "baserom.gbc", $658, $67e - $658 Function67e: ; 67e - call $0685 + call Function685 call SetClock ret ; 685 @@ -682,7 +682,7 @@ Functionaaf: ; aaf ld a, [InLinkBattle] and a jr nz, .asm_ac1 - call $0ac6 + call Functionac6 push de ld de, $0008 call StartSFX @@ -707,8 +707,8 @@ Functionac6: ; ac6 rst FarCall .asm_ad9 - call $0af5 - call $0a57 + call Functionaf5 + call Functiona57 ld a, [hJoyPressed] and $3 jr nz, .asm_af1 @@ -1586,7 +1586,7 @@ Functionf1e: ; f1e Functionf82: ; f82 ld a, [rLCDC] bit 7, a - jp nz, $0eba + jp nz, Functioneba push hl ld h, d ld l, e @@ -1607,7 +1607,7 @@ Functionf82: ; f82 Functionf9d: ; f9d ld a, [rLCDC] bit 7, a - jp nz, $0f1e + jp nz, Functionf1e push de ld d, h ld e, l @@ -1811,63 +1811,63 @@ NextChar: ; 1083 CheckDict: ; 1087 cp $15 - jp z, $117b + jp z, Function117b cp $4f jp z, Char4F cp $4e - jp z, $12a7 + jp z, Function12a7 cp $16 - jp z, $12b9 + jp z, Function12b9 and a - jp z, $1383 + jp z, Function1383 cp $4c jp z, $1337 cp $4b jp z, Char4B cp $51 ; Player name - jp z, $12f2 + jp z, Function12f2 cp $49 - jp z, $1186 + jp z, Function1186 cp $52 ; Mother name - jp z, $118d + jp z, Function118d cp $53 - jp z, $1194 + jp z, Function1194 cp $35 - jp z, $11e8 + jp z, Function11e8 cp $36 - jp z, $11ef + jp z, Function11ef cp $37 - jp z, $11f6 + jp z, Function11f6 cp $38 - jp z, $119b + jp z, Function119b cp $39 - jp z, $11a2 + jp z, Function11a2 cp $54 - jp z, $11c5 + jp z, Function11c5 cp $5b - jp z, $11b7 + jp z, Function11b7 cp $5e - jp z, $11be + jp z, Function11be cp $5c - jp z, $11b0 + jp z, Function11b0 cp $5d - jp z, $11a9 + jp z, Function11a9 cp $23 - jp z, $11cc + jp z, Function11cc cp $22 - jp z, $12b0 + jp z, Function12b0 cp $55 jp z, Char55 cp $56 - jp z, $11d3 + jp z, Function11d3 cp $57 jp z, $137c cp $58 - jp z, $135a + jp z, Function135a cp $4a - jp z, $11da + jp z, Function11da cp $24 - jp z, $11e1 + jp z, Function11e1 cp $25 jp z, NextChar cp $1f @@ -1879,7 +1879,7 @@ CheckDict: ; 1087 cp $59 jp z, $11fd cp $5a - jp z, $1203 + jp z, Char5D cp $3f jp z, $121b cp $14 @@ -1890,7 +1890,7 @@ CheckDict: ; 1087 jr z, .asm_1174 ; 0x1141 $31 jr .asm_114c ; 0x1143 $7 ld b, a - call $13c6 + call Function13c6 jp NextChar .asm_114c cp $60 @@ -1905,7 +1905,7 @@ CheckDict: ; 1087 add $90 .asm_115e ld b, $e5 - call $13c6 + call Function13c6 jr .asm_1174 ; 0x1163 $f .asm_1165 cp $44 @@ -1916,7 +1916,7 @@ CheckDict: ; 1087 add $86 .asm_116f ld b, $e4 - call $13c6 + call Function13c6 .asm_1174 ld [hli], a call PrintLetterDelay @@ -2043,14 +2043,14 @@ Char5D: ; 1203 push de and a jr nz, .asm_120e ; 0x1207 $5 - ld de, $c621 + ld de, BattleMonNick jr .asm_126a ; 0x120c $5c .asm_120e ld de, Char5AText ; Enemy call PlaceString ld h, b ld l, c - ld de, $c616 + ld de, EnemyMonNick jr .asm_126a ; 0x1219 $4f push de ld a, [InLinkBattle] @@ -2075,7 +2075,7 @@ Char5D: ; 1203 ld de, StringBuffer1 jr .asm_126a ; 0x1246 $22 .asm_1248 - ld de, $d493 + ld de, RivalName jr .asm_126a ; 0x124b $1d .linkbattle ld de, $c656 @@ -2085,7 +2085,7 @@ Char5D: ; 1203 call PlaceString ld h, b ld l, c - ld a, [$d472] + ld a, [PlayerGender] bit 0, a ld de, $12a5 jr z, .asm_126a ; 0x1263 $5 @@ -2190,15 +2190,15 @@ Function12f2: ; 12f2 jr z, .asm_1301 cp $4 jr z, .asm_1301 - call $13c7 + call Function13c7 .asm_1301 - call $13b6 - call $0aaf + call Function13b6 + call Functionaaf ld hl, $c5b9 ld bc, $0312 call ClearBox - call $13cd + call Function13cd ld c, $14 call DelayFrames ld hl, $c5b9 @@ -2211,22 +2211,22 @@ Char4B: ; 131f ld a, [InLinkBattle] or a jr nz, .asm_1328 - call $13c7 + call Function13c7 .asm_1328 - call $13b6 + call Function13b6 push de - call $aaf + call Functionaaf pop de ld a, [InLinkBattle] or a - call z, $13cd + call z, Function13cd push de - call $138c - call $138c + call Function138c + call Function138c hlcoord 1, 16 pop de jp NextChar @@ -2263,17 +2263,17 @@ Function135a: ; 135a jr z, .asm_1368 cp $4 jr z, .asm_1368 - call $13c7 + call Function13c7 .asm_1368 - call $13b6 - call $0aaf + call Function13b6 + call Functionaaf ld a, [InLinkBattle] cp $3 jr z, .asm_137c cp $4 jr z, .asm_137c - call $13cd + call Function13cd .asm_137c pop hl @@ -2526,7 +2526,7 @@ UpdateBGMap: ; 164c ld h, a push hl -; bg map 1 ($9c00) +; bg map 1 (VBGMap1) xor a ld [hBGMapAddress], a ld a, $9c @@ -3164,7 +3164,7 @@ Function1a61: ; 1a61 ld a, l push bc - call $1a71 + call Function1a71 pop bc pop af rst Bankswitch @@ -3319,10 +3319,10 @@ Function1c47: ; 0x1c47 Function1c53: ; 0x1c53 ld a, [$cf82] ld b, a - ld a, [$cf84] + ld a, [TileX] sub b ld b, a - ld a, [$cf83] + ld a, [TileY] ld c, a ld a, [$cf85] sub c @@ -3341,7 +3341,7 @@ Function1d3c: ; 0x1d3c ld de, $cf81 ld bc, $0010 call CopyBytes - ld a, [$ff9d] + ld a, [hROMBank] ld [$cf8a], a ret ; 0x1d4b @@ -3350,7 +3350,7 @@ INCBIN "baserom.gbc", $1d4b, $1d81 - $1d4b Function1d81: ; 0x1d81 xor a - ld [$ffd4], a + ld [hBGMapMode], a call $1cbb call $1ad2 call $1c89 @@ -3359,7 +3359,7 @@ Function1d81: ; 0x1d81 ld a, [$cf91] bit 7, a jr z, .asm_1da7 ; 0x1d98 $d - call $1c10 + call Function1c10 call $1bc9 call $1ff8 bit 1, a @@ -3388,7 +3388,7 @@ Function1db8: ; 0x1db8 call GetNthString ld d, h ld e, l - call $30d6 + call CopyName1 pop bc pop hl ret @@ -3432,13 +3432,13 @@ INCBIN "baserom.gbc", $1ea6, $1fbf - $1ea6 Function1fbf: ; 1fbf ld hl, $cf71 - call $1ff0 + call Function1ff0 ld hl, $cf81 - call $1ff0 + call Function1ff0 ld hl, $cf91 - call $1ff0 + call Function1ff0 ld hl, $cfa1 - call $1ff0 + call Function1ff0 ld a, [rSVBK] push af ld a, $7 @@ -3465,7 +3465,7 @@ Function1ff0: ; 1ff0 INCBIN "baserom.gbc", $1ff8, $2009 - $1ff8 -PlayClickSFX: ; $2009 +PlayClickSFX: ; PlayClickSFX push de ld de, SFX_READ_TEXT_2 call StartSFX @@ -3978,7 +3978,7 @@ GetFacingTileCoord: ; 2a07 Function2a3c: ; 2a3c - call $2a66 + call Function2a66 ld a, [hl] and a jr z, .asm_2a63 @@ -4143,7 +4143,7 @@ Function2b74: ; 0x2b74 ld a, $12 ld hl, $5409 rst $8 - call $0485 + call Function485 call DelayFrame ld a, $1 ld [$ffde], a @@ -4423,7 +4423,7 @@ Predef: ; 2d83 ResetWindow: ; 2dba - call $1fbf + call Function1fbf ld a, [hROMBank] push af ld a, $1 @@ -5351,7 +5351,7 @@ NamesPointerTable: ; 33ab GetName: ; 33c3 -; Return name $cf60 from name list $cf61 in StringBuffer1. +; Return name CurSpecies from name list $cf61 in StringBuffer1. ld a, [hROMBank] push af push hl @@ -5361,7 +5361,7 @@ GetName: ; 33c3 cp 1 ; Pokemon names jr nz, .NotPokeName - ld a, [$cf60] + ld a, [CurSpecies] ld [$d265], a call GetPokemonName ld hl, $000b @@ -5385,7 +5385,7 @@ GetName: ; 33c3 ld h, [hl] ld l, a - ld a, [$cf60] + ld a, [CurSpecies] dec a call GetNthString @@ -5499,7 +5499,7 @@ GetItemName: ; 3468 cp TM_01 jr nc, .TM - ld [$cf60], a + ld [CurSpecies], a ld a, 4 ; Item names ld [$cf61], a call GetName @@ -5633,7 +5633,7 @@ GetMoveName: ; 34f8 ld [$cf61], a ; move id ld a, [$d265] - ld [$cf60], a + ld [CurSpecies], a call GetName ld de, StringBuffer1 @@ -5697,7 +5697,7 @@ CheckTrainerBattle: ; 360d jr z, .next ; Is facing the player... - call $1ae5 + call Function1ae5 call FacingPlayerDistance_bc jr nc, .next @@ -5746,13 +5746,13 @@ CheckTrainerBattle: ; 360d pop af ld [$ffe0], a ld a, b - ld [$d03f], a + ld [CurFruit], a ld a, c ld [$d040], a jr .asm_367e ld a, $1 - ld [$d03f], a + ld [CurFruit], a ld a, $ff ld [$d040], a @@ -6738,11 +6738,11 @@ INCBIN "baserom.gbc", $3dfe, $3e10 - $3dfe ChannelsOff: ; 3e10 ; Quickly turn off music channels xor a - ld [$c104], a + ld [Channel1Flags], a ld [$c136], a ld [$c168], a ld [$c19a], a - ld [$c29c], a + ld [SoundInput], a ret ; 3e21 @@ -6753,7 +6753,7 @@ SFXChannelsOff: ; 3e21 ld [$c1fe], a ld [$c230], a ld [$c262], a - ld [$c29c], a + ld [SoundInput], a ret ; 3e32 @@ -7452,7 +7452,7 @@ Function453f: ; 453f ; 456e Function456e: ; 456e - call $1b07 + call GetSpriteDirection rrca rrca add $10 @@ -7645,9 +7645,9 @@ Function463f: ; 463f ; 4661 Function4661: ; 4661 - call $188e + call Function188e jr z, .asm_466b - call $1875 + call Function1875 jr c, .asm_4672 .asm_466b @@ -7729,7 +7729,7 @@ Function46a6: ; 46a6 ld [hl], a ld e, a push bc - call $2a3c + call Function2a3c pop bc ld hl, $000e add hl, bc @@ -7926,7 +7926,7 @@ Function47bc: ; 47bc add hl, bc ld e, [hl] push bc - call $2a3c + call Function2a3c pop bc ld hl, $000e add hl, bc @@ -8157,7 +8157,7 @@ Function48ff: ; 48ff add hl, bc ld a, [hl] push bc - call $1ae5 + call Function1ae5 ld hl, $0007 add hl, bc ld a, [hl] @@ -8443,7 +8443,7 @@ Function4aa8: ; 4aa8 add hl, bc ld a, [hl] push bc - call $1ae5 + call Function1ae5 ld d, b ld e, c pop bc @@ -9574,7 +9574,7 @@ Function550a: ; 550a cp $ff jr z, .asm_5520 push bc - call $1ae5 + call Function1ae5 ld hl, $0000 add hl, bc ld a, [hl] @@ -9696,7 +9696,7 @@ Function5582: ; 5582 ; 55ac Function55ac: ; 55ac - call $1a13 + call Function1a13 ret nc ld d, h ld e, l @@ -9746,7 +9746,7 @@ Function55e0: ; 55e0 xor a .asm_55ea ld [hConnectionStripLength], a - call $1af1 + call Function1af1 jr z, .asm_55f4 call Function565c @@ -9798,8 +9798,8 @@ Function5629: ; 5629 ret z cp $d ret nc - call $1ae5 - call $1af1 + call Function1ae5 + call Function1af1 ret z call Function5673 ret @@ -9859,7 +9859,7 @@ Function5688: ; 5688 ld hl, $0011 add hl, bc ld e, [hl] - call $2a3c + call Function2a3c pop bc ld hl, $000e add hl, bc @@ -10041,7 +10041,7 @@ Function5781: ; 5781 xor a .asm_5785 ld [hConnectionStripLength], a - call $1af1 + call Function1af1 jr z, .asm_578f call Function437b @@ -10186,7 +10186,7 @@ Function5847: ; 5847 ld a, [$d4ce] cp $ff ret z - call $1ae5 + call Function1ae5 callba Function58e3 ld a, $ff ld [$d4ce], a @@ -10222,7 +10222,7 @@ Function587a: ; 587a xor a .asm_587e push af - call $1af1 + call Function1af1 jr z, .asm_588a ld hl, $0005 add hl, bc @@ -10245,7 +10245,7 @@ Function5897: ; 5897 cp $ff ret z push bc - call $1ae5 + call Function1ae5 ld hl, $0001 add hl, bc ld a, [hl] @@ -10255,7 +10255,7 @@ Function5897: ; 5897 ld a, [$d4ce] cp $ff ret z - call $1ae5 + call Function1ae5 ld hl, $0005 add hl, bc res 5, [hl] @@ -10268,7 +10268,7 @@ Function58b9: ; 58b9 xor a .asm_58be push af - call $1af1 + call Function1af1 jr z, .asm_58ca ld hl, $0005 add hl, bc @@ -10391,7 +10391,7 @@ Function5958: ; 5958 ld a, $d .asm_5968 push af - call $1af1 + call Function1af1 jr z, .asm_597c ld hl, $0017 add hl, bc @@ -10442,7 +10442,7 @@ Function59a4: ; 59a4 ld hl, $c2eb .asm_59b6 push hl - call $1af1 + call Function1af1 jr z, .asm_59d9 ld hl, $000d add hl, bc @@ -10723,9 +10723,9 @@ Function5b44: ; 5b44 xor a ld [$ffde], a call ClearTileMap - call $0e5f + call Functione5f call $0e51 - call $1fbf + call Function1fbf ret ; 5b54 @@ -11129,7 +11129,7 @@ Function5df0: ; 5df0 Function5e34: ; 5e34 .asm_5e34 call DelayFrame - call $0984 + call GetJoypadPublic ld hl, hJoyPressed bit 0, [hl] jr nz, .asm_5e47 @@ -11204,7 +11204,7 @@ Function5e9f: ; 5e9f call Function5ebf call Function5f1c call Function5f40 - call $0e5f + call Functione5f call $1ad2 ret ; 5eaf @@ -11213,7 +11213,7 @@ Function5eaf: ; 5eaf call Function5ebf call Function5f1c call Function5f48 - call $0e5f + call Functione5f call $1ad2 ret ; 5ebf @@ -11376,15 +11376,15 @@ OakSpeech: ; 0x5f99 call ClearTileMap ld a, $c2 - ld [$cf60], a + ld [CurSpecies], a ld [CurPartySpecies], a - call $3856 + call GetBaseData hlcoord 6, 4 call $3786 xor a - ld [$d123], a + ld [TempMonDVs], a ld [$d124], a ld b, $1c @@ -11437,7 +11437,7 @@ OakText2: ; 0x604a start_asm ld a,WOOPER call $37ce - call $3c55 + call WaitSFX ld hl,OakText3 ret @@ -11484,7 +11484,7 @@ NamePlayer: ; 0x6074 call $04b6 call ClearTileMap - call $0e5f + call Functione5f call WaitBGMap xor a @@ -11533,7 +11533,7 @@ Function620b: ; 620b rst FarCall jr c, .asm_6219 ld a, $39 - ld hl, $48ac + ld hl, Function48ac rst FarCall .asm_6219 @@ -11544,7 +11544,7 @@ Function620b: ; 620b call FarStartTitleScreen call DelayFrame .asm_6226 - call $627b + call Function627b jr nc, .asm_6226 call ClearSprites call WhiteBGMap @@ -11552,7 +11552,7 @@ Function620b: ; 620b ld [rSVBK], a ld hl, rLCDC res 2, [hl] - call $0fdb + call Functionfdb call Function3200 xor a ld [hLCDStatCustom], a @@ -11564,7 +11564,7 @@ Function620b: ; 620b ld [$ffd2], a ld b, $8 call GetSGBLayout - call $0485 + call Function485 ld a, [$cf64] cp $5 jr c, .asm_625e @@ -11593,7 +11593,7 @@ Function627b: ; 627b ld a, [$cf63] bit 7, a jr nz, .asm_6290 - call $62a3 + call Function62a3 ld a, $43 ld hl, $6ea7 rst FarCall @@ -11678,11 +11678,11 @@ INCBIN "baserom.gbc", $62f6, $63e2 - $62f6 Function63e2: ; 63e2 call ClearTileMap - call $0e5f + call Functione5f ld de, Function4000 ld hl, $9600 ld bc, $391d - call $0eba + call Functioneba ld hl, $c52e ld de, $63fd jp PlaceString @@ -11695,7 +11695,7 @@ Function642e: ; 642e ld a, $5 ld hl, $4f1c rst FarCall - call $1fbf + call Function1fbf call WhiteBGMap call ClearTileMap ld a, $98 @@ -11708,7 +11708,7 @@ Function642e: ; 642e ld a, $90 ld [$ffd2], a call WaitBGMap - jp $620b + jp Function620b ; 6454 INCBIN "baserom.gbc", $6454, $669f - $6454 @@ -12005,18 +12005,18 @@ DrawGraphic: ; 6eef ; c: width ; d: tile to start drawing from ; e: number of tiles to advance for each row - call $7009 + call Function7009 pop bc pop hl ret c bit 5, [hl] jr nz, .asm_6f05 push hl - call $70a4 + call Function70a4 pop hl ret c push hl - call $70ed + call Function70ed pop hl ret c .asm_6f05 @@ -12026,7 +12026,7 @@ DrawGraphic: ; 6eef Function6f07: ; 6f07 - call $6f5f + call Function6f5f ret c ld hl, $0010 add hl, bc @@ -12037,7 +12037,7 @@ Function6f07: ; 6f07 ld hl, $0006 add hl, bc bit 7, [hl] - jp nz, $6fa1 + jp nz, Function6fa1 ld hl, $000e add hl, bc ld a, [hl] @@ -12048,7 +12048,7 @@ Function6f07: ; 6f07 scf ret - call $6f5f + call Function6f5f ret c ld hl, $000e add hl, bc @@ -12063,7 +12063,7 @@ Function6f07: ; 6f07 ld hl, $000e add hl, bc ld a, [hl] - call $6f7f + call Function6f7f ret nc push af ld hl, $0007 @@ -12088,7 +12088,7 @@ Function6f5f: ; 6f5f ld hl, $000f add hl, bc ld a, [hl] - call $6f7f + call Function6f7f ret nc push af ld hl, $0007 @@ -12167,12 +12167,12 @@ Function6fa1: ; 6fa1 inc e .asm_6fc2 - call $2a3c + call Function2a3c call GetTileType pop de and a jr nz, .asm_6fd7 - call $2a3c + call Function2a3c call GetTileType and a jr nz, .asm_6fd7 @@ -12238,7 +12238,7 @@ Function7009: ; 7009 jr .asm_7041 ld a, [hConnectionStripLength] - call $1ae5 + call Function1ae5 call $7021 call $7041 ret @@ -12276,7 +12276,7 @@ Function7009: ; 7009 xor a .asm_7045 ld [hConnectedMapWidth], a - call $1af1 + call Function1af1 jr z, .asm_7093 ld hl, $0004 add hl, bc @@ -12286,7 +12286,7 @@ Function7009: ; 7009 add hl, bc bit 7, [hl] jr z, .asm_7063 - call $7171 + call Function7171 jr nc, .asm_707b jr .asm_7073 @@ -12554,16 +12554,16 @@ Function8286: ; 8286 add hl, de ld [hl], a ld a, [$c2f4] - call $1a61 + call Function1a61 ld a, [$c2f3] ld hl, $0006 add hl, de or [hl] ld [hl], a ld a, [$c2f7] - call $42d5 + call Function82d5 ld a, [$c2f6] - call $42f1 + call Function82f1 ld a, [$c2f1] ld hl, $0000 add hl, de @@ -12579,7 +12579,7 @@ Function8286: ; 8286 add hl, de ld [hl], $ff ld a, [$c2f8] - call $430d + call Function830d ld a, [$c2f5] ld hl, $0020 add hl, de @@ -12800,7 +12800,7 @@ INCBIN "baserom.gbc", $8d59, $9890 - $8d59 Function9890: ; 9890 - call $4d55 + call Function8d55 ret z ld a, $1 ld [rVBK], a @@ -12835,9 +12835,9 @@ Function9890: ; 9890 ld a, $5 ld [rSVBK], a ld hl, $d000 - call $58df + call Function98df ld hl, $d080 - call $58df + call Function98df pop af ld [rSVBK], a ret @@ -12883,7 +12883,7 @@ ClearBytes: ; 0x9a5b DrawDefaultTiles: ; 0x9a64 ; Draw 240 tiles (2/3 of the screen) from tiles in VRAM - ld hl, $9800 ; BG Map 0 + ld hl, VBGMap0 ; BG Map 0 ld de, 32 - 20 ld a, $80 ; starting tile ld c, 12 + 1 @@ -12995,7 +12995,7 @@ SpecialsPointers: ; 0xc029 dbw $23, $40ab dbw $00, $0d91 dbw BANK(WhiteBGMap), WhiteBGMap - dbw $00, $0485 + dbw $00, Function485 dbw BANK(ClearTileMap), ClearTileMap dbw $00, $1ad2 dbw $00, $0e4a @@ -13161,7 +13161,7 @@ SpecialSnorlaxAwake: ; 0xc43d ; ScriptVar is 1 if the conditions are met, otherwise 0. ; check background music - ld a, [$c2c0] + ld a, [CurMusic] cp $40 ; Poké Flute Channel jr nz, .nope @@ -13270,7 +13270,7 @@ GetPartyNick: ; c706 ; write CurPartyMon nickname to StringBuffer1-3 ld hl, PartyMon1Nickname ld a, $02 - ld [$cf5f], a + ld [MonType], a ld a, [CurPartyMon] call GetNick call CopyName1 @@ -13666,7 +13666,7 @@ ClearPCItemScreen: ; e58b ld bc, $0412 call TextBox call Function3200 - call $32f9 ; load regular palettes? + call Function32f9 ; load regular palettes? ret ; 0xe5bb @@ -13949,7 +13949,7 @@ INCBIN "baserom.gbc", $116b3, $116b7 - $116b3 Function116b7: ; 0x116b7 call Function2ed3 call $56c1 - call $2b74 + call Function2b74 ret ; 0x116c1 @@ -14013,7 +14013,7 @@ INCBIN "baserom.gbc", $12527, $125cd - $12527 StartMenu: ; 125cd - call $1fbf + call Function1fbf ld de, SFX_MENU call StartSFX @@ -14042,12 +14042,12 @@ StartMenu: ; 125cd ld hl, $64bf rst $8 call .DrawBugContestStatus - call $0485 + call Function485 jr .Select .Reopen call $1ad2 - call $0485 + call Function485 call .SetUpMenuItems ld a, [$d0d2] ld [$cf88], a @@ -14088,14 +14088,14 @@ StartMenu: ; 125cd push af ld a, 1 ld [hOAMUpdate], a - call $0e5f + call Functione5f pop af ld [hOAMUpdate], a .ReturnEnd call Function1c07 .ReturnEnd2 call $2dcf - call $0485 + call Function485 ret .GetInput @@ -14288,7 +14288,7 @@ StartMenu: ; 125cd ld [$cf76], a call .FillMenuList - ld hl, $d84c + ld hl, StatusFlags bit 0, [hl] jr z, .no_pokedex ld a, 0 ; pokedex @@ -14561,7 +14561,7 @@ StartMenu_Pokemon: ; 12976 callba WritePartyMenuTilemap callba PrintPartyMenuText call WaitBGMap - call $32f9 ; load regular palettes? + call Function32f9 ; load regular palettes? call DelayFrame callba PartyMenuSelect jr c, .return ; if cancelled or pressed B @@ -14704,7 +14704,7 @@ SwitchPartyMons: ; 12aec call AddNTimes ld [hl], "▷" call WaitBGMap - call $32f9 + call Function32f9 call DelayFrame callba PartyMenuSelect @@ -15314,13 +15314,13 @@ INCBIN "baserom.gbc", $1404c, $14089 - $1404c Function14089: ; 14089 call GetClock - call $409b + call Function1409b call FixDays jr nc, .asm_14097 - call $06d3 + call Function6d3 .asm_14097 - call $4019 + call Function14019 ret ; 1409b @@ -15335,7 +15335,7 @@ Function1409b: ; 1409b .asm_140a8 ld a, $80 - call $06d3 + call Function6d3 ret ; 140ae @@ -16574,7 +16574,7 @@ INCBIN "baserom.gbc", $1499a, $14f1c - $1499a Function14f1c: ; 14f1c xor a ld [$cfcd], a - call $4f84 + call Function14f84 ld a, [$cfcd] and a jr z, .asm_14f46 @@ -16592,7 +16592,7 @@ Function14f1c: ; 14f1c ret .asm_14f46 - call $4faf + call Function14faf ld a, [$cfcd] and a jr z, .asm_14f6c @@ -16614,7 +16614,7 @@ Function14f1c: ; 14f1c ld de, Options ld bc, $0008 call CopyBytes - call $067e + call Function67e ret ; 14f7c @@ -16990,8 +16990,8 @@ Function1590a: ; 0x1590a ld hl, $4fbf rst $8 push af - call $1c07 - call $1c07 + call Function1c07 + call Function1c07 pop af jr c, .asm_1596c @@ -17056,7 +17056,7 @@ Function15985: ; 0x15985 ld a, $0 ld [$c2ce], a ld hl, MenuData15a08 - call $1d3c + call Function1d3c hlcoord 0, 0 ld b, $a ld c, $12 @@ -17537,7 +17537,7 @@ Function26601: ; 0x26601 pop de call StartSFX call $0a36 - call $3c55 + call WaitSFX ret ; 0x26616 @@ -17792,7 +17792,7 @@ _KrisDecorationMenu: ; 0x2675c ld a, [$cf76] push af ld hl, $679a - call $1d35 + call Function1d35 xor a ld [$d1ee], a ld a, $1 @@ -17811,7 +17811,7 @@ _KrisDecorationMenu: ; 0x2675c jr nc, .asm_2676f .asm_2678e - call $1c07 + call Function1c07 pop af ld [$cf76], a ld a, [$d1ee] @@ -18241,9 +18241,9 @@ ClearBattleRAM: ; 2ef18 ld a, $f rst FarCall - call $1fbf + call Function1fbf - ld hl, $ffd6 + ld hl, hBGMapAddress xor a ld [hli], a ld [hl], $98 @@ -18542,7 +18542,7 @@ GetHalfMaxHP: ; 3cc9f GetMaxHP: ; 3ccac -; output: bc, $d1ea-b +; output: bc, MagikarpLength-b ; player ld hl, BattleMonMaxHP @@ -18557,11 +18557,11 @@ GetMaxHP: ; 3ccac .gethp ld a, [hli] - ld [$d1eb], a + ld [Buffer2], a ld b, a ld a, [hl] - ld [$d1ea], a + ld [MagikarpLength], a ld c, a ret ; 3ccc2 @@ -18683,7 +18683,7 @@ LostBattle: ; 3d38e ; Greyscale ld b, 0 call GetSGBLayout - call $32f9 + call Function32f9 jr .end .LostLinkBattle @@ -18731,7 +18731,7 @@ LostBattle: ; 3d38e INCBIN "baserom.gbc", $3d432, $3ddc2 - $3d432 ld hl, RecoveredUsingText - jp $3ad5 + jp FarBattleTextBox ; 0x3ddc8 INCBIN "baserom.gbc", $3ddc8, $3e8eb - $3ddc8 @@ -19004,7 +19004,7 @@ LoadEnemyMon: ; 3e8eb jr c, .Happiness ; Floor at length 1024 ld a, [MagikarpLength] - cp a, $04 ; $400 = 1024 + cp a, 1024 >> 8 jr c, .GenerateDVs ; try again @@ -19035,7 +19035,7 @@ LoadEnemyMon: ; 3e8eb jr z, .TreeMon ; ???? - ld a, [$c671] + ld a, [EnemySubStatus5] bit 3, a jp nz, .Moves @@ -19139,7 +19139,7 @@ LoadEnemyMon: ; 3e8eb ld [hli], a ld [hl], a ; Make sure the predef knows this isn't a partymon - ld [$d1ea], a + ld [MagikarpLength], a ; Fill moves based on level ld a, PREDEF_FILLMOVES call Predef @@ -19211,7 +19211,7 @@ LoadEnemyMon: ; 3e8eb call Predef ld hl, EnemyMonStats - ld de, $c6c1 + ld de, EnemyStats ld bc, EnemyMonStatsEnd - EnemyMonStats call CopyBytes @@ -19628,7 +19628,7 @@ BattleStartMessage ; 3fc8b .asm_3fcc2 ld a, $f - ld hl, $6b38 + ld hl, CheckSleepingTreeMon rst FarCall jr c, .asm_3fceb @@ -20116,8 +20116,8 @@ _KrisMailBoxMenu: ; 0x447a0 call InitMail jr z, .nomail call $1d6e - call $4806 - jp $1c17 + call Function44806 + jp Function1c17 .nomail ld hl, .EmptyMailboxText @@ -20190,8 +20190,8 @@ Function44806: ; 0x44806 ld [$d0f1], a .asm_4480f call InitMail - ld hl, $494c - call $1d3c + ld hl, MenuData4494c + call Function1d3c xor a ld [hBGMapMode], a call $352f @@ -20208,7 +20208,7 @@ Function44806: ; 0x44806 ld a, [$cf73] cp $2 jr z, .asm_44848 - call $484a + call Function4484a jr .asm_4480f .asm_44848 @@ -20218,9 +20218,9 @@ Function44806: ; 0x44806 Function4484a: ; 0x4484a ld hl, MenuData44964 - call $1d35 - call $1d81 - call $1c07 + call Function1d35 + call Function1d81 + call Function1c07 jr c, .asm_44860 ld a, [$cfa9] dec a @@ -20250,7 +20250,7 @@ Function4484a: ; 0x4484a ld hl, .MessageLostText call $1d4f call $1dcf - call $1c07 + call Function1c07 ret c ld a, [MenuSelection] dec a @@ -20300,8 +20300,8 @@ Function4484a: ; 0x4484a .AttachMail ; 0x448d2 call FadeToMenu xor a - ld [$d141], a - call $31f3 + ld [PartyMenuActionText], a + call WhiteBGMap .asm_448dc ld a, $14 ld hl, $404f @@ -20313,13 +20313,13 @@ Function4484a: ; 0x4484a ld hl, $43e0 rst $8 ld a, $14 - ld hl, $405f + ld hl, PickedFruitTree rst $8 ld a, $14 ld hl, $449a rst $8 - call $31f6 - call $32f9 + call WaitBGMap + call Function32f9 call DelayFrame ld a, $14 ld hl, $4457 @@ -20424,7 +20424,7 @@ MainMenu: ; 49cdc call Function49ed0 ld b, $8 call GetSGBLayout - call $32f9 + call Function32f9 ld hl, GameTimerPause res 0, [hl] call Function49da4 @@ -20619,7 +20619,7 @@ Function49da4: ; 49da4 Function49de4: ; 49de4 call SetUpMenu .asm_49de7 - call $5e09 + call Function49e09 ld a, [$cfa5] set 5, a ld [$cfa5], a @@ -20652,7 +20652,7 @@ Function49e09: ; 49e09 ld a, [hl] push af set 4, [hl] - call $5e3d + call Function49e3d pop af ld [Options], a ld a, $1 @@ -20755,9 +20755,9 @@ Function49ed0: ; 49ed0 xor a ld [$ffde], a call ClearTileMap - call $0e5f + call Functione5f call $0e51 - call $1fbf + call Function1fbf ret ; 49ee0 @@ -20811,7 +20811,7 @@ MainMenu_Mobile: ; 49efc ld hl, $c5b9 call PlaceString call Function3200 - call $32f9 + call Function32f9 call $1bc9 ld hl, $cfa9 ld b, [hl] @@ -21843,7 +21843,7 @@ EggStatsScreen: ; 4e33a ld de, FiveQMarkString hlcoord 11, 5 ; $c50f call PlaceString - ld a, [$d129] ; egg status + ld a, [TempMonHappiness] ; egg status ld de, EggSoonString cp $6 jr c, .picked @@ -21859,8 +21859,8 @@ EggStatsScreen: ; 4e33a call PlaceString ld hl, $cf64 set 5, [hl] - call $32f9 ; pals - call $045a + call Function32f9 ; pals + call DelayFrame ld hl, TileMap call $3786 ld a, $41 @@ -21924,12 +21924,12 @@ Function4ea82: ; 4ea82 ld de, $d000 ld hl, VTiles2 ld bc, Text_1354 - call $0f82 + call Functionf82 ld de, $4200 ld hl, VTiles1 ld bc, $3e80 - call $0f9d - call $6ac5 + call Functionf9d + call Function4eac5 call WaitBGMap .asm_4eac0 call DelayFrame @@ -21937,17 +21937,17 @@ Function4ea82: ; 4ea82 ; 4eac5 Function4eac5: ; 4eac5 - call $6aea + call Function4eaea ld hl, $c4cb ld b, $e ld c, $4 ld a, $8 - call $6b27 + call Function4eb27 ld hl, $c51d ld b, $a ld c, $2 ld a, $40 - call $6b27 + call Function4eb27 ld de, $6b38 ld hl, $c569 call PlaceString @@ -21959,19 +21959,19 @@ Function4eaea: ; 4eaea ld [hl], $0 inc hl ld a, $1 - call $6b15 + call Function4eb15 ld [hl], $2 ld hl, $c4b4 ld a, $3 - call $6b1c + call Function4eb1c ld hl, $c4c7 ld a, $4 - call $6b1c + call Function4eb1c ld hl, $c5f4 ld [hl], $5 inc hl ld a, $6 - call $6b15 + call Function4eb15 ld [hl], $7 ret ; 4eb15 @@ -22317,7 +22317,7 @@ GetGender: ; 50bdd jr z, .BoxMon ; 3: Unknown - ld hl, $d123 ; DVBuffer + ld hl, TempMonDVs ; DVBuffer dec a jr z, .DVs @@ -22424,7 +22424,7 @@ DecompressPredef: ; 5125d pop hl ld a, [hROMBank] ld b, a - call $f82 + call Functionf82 pop af ld [rSVBK], a @@ -23004,7 +23004,7 @@ TrySurfStep: ; 801c0 jr c, .asm_801f1 call Function80341 - ld [$d03f], a + ld [CurFruit], a and a jr z, .asm_801f1 cp 2 @@ -23851,7 +23851,7 @@ INCBIN "baserom.gbc", $8640b, $8640e - $8640b HallOfFame3: ; 0x8640e call $648e - ld a, [$d84c] + ld a, [StatusFlags] push af ld a, $1 ld [$c2cd], a @@ -23860,7 +23860,7 @@ HallOfFame3: ; 0x8640e ld [$d4b5], a ; Enable the Pokégear map to cycle through all of Kanto - ld hl, $d84c + ld hl, StatusFlags set 6, [hl] ld a, $5 @@ -23911,12 +23911,12 @@ MovePlayerPic: ; 0x88266 push hl push de xor a - ld [$ffd4], a + ld [hBGMapMode], a ld bc, $0707 ld a, $13 call Predef xor a - ld [$ffd5], a + ld [hBGMapThird], a call WaitBGMap call DelayFrame pop de @@ -24003,7 +24003,7 @@ DrawIntroPlayerPic: ; 88874 ld hl, VTiles2 ld b, BANK(ChrisPic) ld c, $31 - call $f82 + call Functionf82 ; Draw xor a @@ -24030,7 +24030,7 @@ GetKrisBackpic: ; 88ec9 ld de, KrisBackpic ld hl, $9310 ld bc, $2231 - call $f82 + call Functionf82 ret ; 88ed6 @@ -24271,7 +24271,7 @@ _TimeOfDayPals: ; 8c011 ; restore bg palette 8 - ld hl, $d03f ; last byte in Unkn1Pals + ld hl, CurFruit ; last byte in Unkn1Pals ; save wram bank ld a, [rSVBK] @@ -24607,7 +24607,7 @@ Function8cf69: ; 8cf69 push af ld a, $0 ld [$c3b5], a - call $4f7a + call Function8cf7a pop af pop bc pop de @@ -24626,8 +24626,8 @@ Function8cf7a: ; 8cf7a ld b, h push hl push de - call $524b - call $504c + call Function8d24b + call Function8d04c pop de pop hl jr c, .asm_8cfa7 @@ -24704,7 +24704,7 @@ Function8cfd6: ; 8cfd6 ld [hli], a inc de ld a, [de] - call $5109 + call Function8d109 ld [hli], a pop de ld hl, $0004 @@ -24745,13 +24745,13 @@ INCBIN "baserom.gbc", $8d03d, $8d04c - $8d03d Function8d04c: ; 8d04c - call $50ec - call $5132 + call Function8d0ec + call Function8d132 cp $fd jr z, .asm_8d0b9 cp $fc jr z, .asm_8d0b6 - call $51a2 + call Function8d1a2 ld a, [$c3ba] add [hl] ld [$c3ba], a @@ -24774,7 +24774,7 @@ Function8d04c: ; 8d04c ld a, [$c3bf] add b ld b, a - call $50be + call Function8d0be add b ld [de], a inc hl @@ -24787,7 +24787,7 @@ Function8d04c: ; 8d04c ld a, [$c3c0] add b ld b, a - call $50ce + call Function8d0ce add b ld [de], a inc hl @@ -24797,7 +24797,7 @@ Function8d04c: ; 8d04c ld [de], a inc hl inc de - call $50de + call Function8d0de ld [de], a inc hl inc de @@ -24811,7 +24811,7 @@ Function8d04c: ; 8d04c jr .asm_8d0b9 .asm_8d0b6 - call $5036 + call Function8d036 .asm_8d0b9 and a @@ -24920,7 +24920,7 @@ Function8d132: ; 8d132 and a jr z, .asm_8d142 dec [hl] - call $5189 + call Function8d189 ld a, [hli] push af jr .asm_8d163 @@ -24929,7 +24929,7 @@ Function8d132: ; 8d132 ld hl, $000a add hl, bc inc [hl] - call $5189 + call Function8d189 ld a, [hli] cp $fe jr z, .asm_8d17b @@ -25105,8 +25105,8 @@ GetIcon: ; 8ea1e GetGFXUnlessMobile: ; 8ea3f ld a, [InLinkBattle] cp 4 ; Mobile Link Battle - jp nz, $eba - jp $dc9 + jp nz, Functioneba + jp Functiondc9 ; 8ea4a INCBIN "baserom.gbc", $8ea4a, $8eab3 - $8ea4a @@ -25726,7 +25726,7 @@ FlyMap: ; 91c90 call TownMapBubble call TownMapPals - ld hl, $9800 ; BG Map 0 + ld hl, VBGMap0 ; BG Map 0 call TownMapBGUpdate call TownMapMon @@ -25873,7 +25873,7 @@ TownMapMon: ; 91f7b ; Animation/palette ld de, $0000 ld a, $0 - call $3b2a + call Function3b2a ld hl, 3 add hl, bc @@ -25893,7 +25893,7 @@ TownMapPlayerIcon: ; 91fa6 ; Standing icon ld hl, $8100 ld c, 4 ; # tiles - call $eba + call Functioneba ; Walking icon ld hl, $00c0 @@ -25903,7 +25903,7 @@ TownMapPlayerIcon: ; 91fa6 ld hl, $8140 ld c, 4 ; # tiles ld a, $30 - call $eba + call Functioneba ; Animation/palette ld de, $0000 @@ -25915,7 +25915,7 @@ TownMapPlayerIcon: ; 91fa6 .asm_91fd3 ld a, b - call $3b2a + call Function3b2a ld hl, $0003 add hl, bc @@ -26114,7 +26114,7 @@ Function96724: ; 96724 ld a, $4 ld hl, $53e5 rst FarCall - call $092f + call ClearJoypadPublic ; fallthrough ; 9673e @@ -26509,7 +26509,7 @@ Function9693a: ; 9693a bit 2, [hl] jr z, .asm_96951 ld a, $4 - ld hl, $54a4 + ld hl, Route7_SecondMapHeader rst FarCall jr c, .asm_96966 xor a @@ -26609,7 +26609,7 @@ TryObjectEvent: ; 969b5 .IsObject call PlayTalkObject ld a, [hConnectedMapWidth] - call $1ae5 + call Function1ae5 ld hl, $0001 add hl, bc ld a, [hl] @@ -27346,7 +27346,7 @@ Function97cc0: ; 97cc0 .asm_97ced ld a, $4 - ld hl, $75eb + ld hl, Script_dotrigger jr .asm_97cf4 .asm_97cf4 @@ -27440,7 +27440,7 @@ Function97d31: ; 97d31 Function97d64: ; 97d64 ld a, [StandingTile] - call $188e + call Function188e ld b, $66 jr z, .asm_97d70 ld b, $33 @@ -29263,14 +29263,14 @@ Functionb8219: ; b8219 ; deals strictly with rockmon encounter xor a ld [$d22e], a - ld [$d143], a + ld [CurPartyLevel], a ld hl, WildRockMonMapTable call GetTreeMonEncounterTable jr nc, .quit call LoadWildTreeMonData jr nc, .quit ld a, $0a - call $2fb1 + call Function2fb1 cp a, $04 jr nc, .quit call $441f @@ -29691,13 +29691,13 @@ UnknownScript_0xbcee7: ; 0xbcee7 .violet ; 0xbcf15 displaylocation $7 ; sprout tower - 3call $3, $4edf + 3call $3, UnknownScript_0xbcedf .azalea ; 0xbcf1b displaylocation $d ; slowpoke well - 3call $3, $4edf + 3call $3, UnknownScript_0xbcedf .goldenrod ; 0xbcf21 displaylocation $11 ; radio tower - 3call $3, $4edf + 3call $3, UnknownScript_0xbcedf 3writetext $6d, $411c keeptextopen 2jump UnknownScript_0xbcf37 @@ -30161,7 +30161,7 @@ Functione4579: ; e4579 call WaitBGMap ld b, $19 call GetSGBLayout - call $32f9 + call Function32f9 ld c, $a call DelayFrames ld hl, $63e2 @@ -30174,16 +30174,16 @@ Functione4579: ; e4579 ld a, $13 ld hl, $6a82 rst FarCall - call $45e8 + call Functione45e8 .asm_e45c0 - call $0a57 + call Functiona57 ld a, [$ffa9] and $f jr nz, .asm_e45de ld a, [$cf63] bit 7, a jr nz, .asm_e45e3 - call $4670 + call Functione4670 ld a, $23 ld hl, $4f69 rst FarCall @@ -30191,12 +30191,12 @@ Functione4579: ; e4579 jr .asm_e45c0 .asm_e45de - call $465e + call Functione465e scf ret .asm_e45e3 - call $465e + call Functione465e and a ret ; e45e8 @@ -30205,7 +30205,7 @@ Functione45e8: ; e45e8 ld de, $47cc ld hl, VTiles2 ld bc, $391c - call $0f9d + call Functionf9d ld a, [rSVBK] push af ld a, $6 @@ -30217,11 +30217,11 @@ Functione45e8: ; e45e8 ld hl, VTiles0 ld de, $d000 ld bc, $0180 - call $0eba + call Functioneba ld hl, VTiles1 ld de, $d800 ld bc, $0180 - call $0eba + call Functioneba pop af ld [rSVBK], a ld a, $23 @@ -30229,7 +30229,7 @@ Functione45e8: ; e45e8 rst FarCall ld de, $5458 ld a, $3 - call $3b2a + call Function3b2a ld hl, $0007 add hl, bc ld [hl], $a0 @@ -30602,28 +30602,28 @@ Functionfb48a: ; fb48a ld de, $5214 ld hl, $9600 ld bc, $3e01 - call $0ddc + call Functionddc ld de, $4f24 ld hl, $9620 ld bc, $3e01 - call $0dc9 + call Functiondc9 ld de, $4030 ld hl, $9630 ld bc, $3e16 - call $0dc9 + call Functiondc9 jr .asm_fb4cc ld de, $5424 ld hl, $9610 ld b, $3e ld c, $1 - call $0dc9 + call Functiondc9 ret ld de, $4600 ld hl, $9600 ld bc, $3e19 - call $0dc9 + call Functiondc9 jr .asm_fb4cc .asm_fb4cc @@ -30636,11 +30636,11 @@ Functionfb48a: ; fb48a ld e, l ld hl, $9790 ld bc, $3e06 - call $0ddc + call Functionddc ld hl, $97f0 ld de, $5204 ld bc, $3e01 - call $0ddc + call Functionddc ret ; fb4f2 @@ -30705,7 +30705,7 @@ DoWeatherModifiers: ; fbda4 .ApplyModifier xor a - ld [$ffb4], a + ld [hMultiplicand], a ld hl, CurDamage ld a, [hli] ld [$ffb5], a @@ -30714,16 +30714,16 @@ DoWeatherModifiers: ; fbda4 inc de ld a, [de] - ld [$ffb7], a + ld [hMultiplier], a call Multiply ld a, 10 - ld [$ffb7], a + ld [hMultiplier], a ld b, $4 call Divide - ld a, [$ffb4] + ld a, [hMultiplicand] and a ld bc, $ffff jr nz, .Update @@ -30931,13 +30931,13 @@ Tileset25Anim: ; 0xfc047 Tileset31Anim: ; 0xfc073 ; param, function - dw $0000, $445c - dw $0000, $44c4 + dw $0000, ForestTreeLeftAnimation + dw $0000, ForestTreeRightAnimation dw $0000, WaitTileAnimation dw $0000, WaitTileAnimation dw $0000, WaitTileAnimation - dw $0000, $44f2 - dw $0000, $451c + dw $0000, ForestTreeLeftAnimation2 + dw $0000, ForestTreeRightAnimation2 dw $0000, AnimateFlowerTile dw $9140, AnimateWaterTile dw $0000, TileAnimationPalette @@ -30997,46 +30997,46 @@ INCBIN "baserom.gbc", $fc17f, $fc1e7-$fc17f Tileset24Anim: ; 0xfc1e7 Tileset30Anim: ; 0xfc1e7 ; param, function - dw $9140, $46a2 + dw $9140, WriteTileToBuffer dw $0000, $471e dw $cf41, ScrollTileRightLeft dw $0000, $471e - dw $9140, $4696 + dw $9140, WriteTileFromBuffer dw $0000, $471e dw $0000, TileAnimationPalette dw $0000, $471e - dw $9400, $46a2 + dw $9400, WriteTileToBuffer dw $0000, $471e - dw $cf41, $436a + dw $cf41, ScrollTileDown dw $0000, $471e - dw $cf41, $436a + dw $cf41, ScrollTileDown dw $0000, $471e - dw $cf41, $436a + dw $cf41, ScrollTileDown dw $0000, $471e - dw $9400, $4696 + dw $9400, WriteTileFromBuffer dw $0000, $471e dw $0000, DoneTileAnimation ; 0xfc233 Tileset29Anim: ; 0xfc233 ; param, function - dw $9350, $46a2 + dw $9350, WriteTileToBuffer dw $0000, $471e dw $cf41, ScrollTileRightLeft dw $0000, $471e - dw $9350, $4696 + dw $9350, WriteTileFromBuffer dw $0000, $471e dw $0000, TileAnimationPalette dw $0000, $471e - dw $9310, $46a2 + dw $9310, WriteTileToBuffer dw $0000, $471e - dw $cf41, $436a + dw $cf41, ScrollTileDown dw $0000, $471e - dw $cf41, $436a + dw $cf41, ScrollTileDown dw $0000, $471e - dw $cf41, $436a + dw $cf41, ScrollTileDown dw $0000, $471e - dw $9310, $4696 + dw $9310, WriteTileFromBuffer dw $0000, $471e dw $0000, DoneTileAnimation ; 0xfc27f @@ -31740,7 +31740,7 @@ TileAnimationPalette: ; fc6d7 ret z ; We don't want to mess with non-standard palettes. - ld a, [$ff47] ; BGP + ld a, [rBGP] ; BGP cp %11100100 ret nz @@ -31982,7 +31982,7 @@ Function104284: ; 104284 ld d, h ld e, l ld hl, $d000 - call $4209 + call Function104209 pop af ld [rSVBK], a ret @@ -31992,13 +31992,13 @@ Function1042b2: ; 1042b2 .asm_1042b2 ld a, c cp $10 - jp c, $42d6 - jp z, $42d6 + jp c, Function1042d6 + jp z, Function1042d6 push bc push hl push de ld c, $10 - call $42d6 + call Function1042d6 pop de ld hl, $0080 add hl, de @@ -32032,7 +32032,7 @@ Function1042d6: ; 1042d6 ld h, d ld l, e ld de, $d000 - call $0def + call Functiondef pop hl pop bc push bc @@ -32041,7 +32041,7 @@ Function1042d6: ; 1042d6 ld d, h ld e, l ld hl, $d000 - call $4209 + call Function104209 pop af ld [rSVBK], a ret @@ -32274,7 +32274,7 @@ UsedMoveText: ; 105db9 ; everything except 'instead' made redundant in localization ; check obedience - ld a, [$c6f4] + ld a, [AlreadyDisobeyed] and a ld hl, UsedMove2Text ret nz @@ -32301,7 +32301,7 @@ UsedMove2Text: ; 105e0b Function105e10: ; 105e10 ; check obedience - ld a, [$c6f4] + ld a, [AlreadyDisobeyed] and a jr z, GetMoveNameText ; print "instead," @@ -32638,12 +32638,12 @@ StartTitleScreen: ; 10ed67 ; Decompress running Suicune gfx ld hl, TitleSuicuneGFX - ld de, $8800 - call $0b50 + ld de, VTiles1 + call Decompress ; Clear screen palettes - ld hl, $9800 + ld hl, VBGMap0 ld bc, $0280 xor a call ByteFill @@ -32654,7 +32654,7 @@ StartTitleScreen: ; 10ed67 ; BG Map 1: ; line 0 (copyright) - ld hl, $9c00 + ld hl, VBGMap1 ld bc, $0020 ; one row ld a, 7 ; palette call ByteFill @@ -32711,17 +32711,17 @@ StartTitleScreen: ; 10ed67 ; Decompress logo ld hl, TitleLogoGFX - ld de, $8800 - call $0b50 + ld de, VTiles1 + call Decompress ; Decompress background crystal ld hl, TitleCrystalGFX - ld de, $8000 - call $0b50 + ld de, VTiles0 + call Decompress ; Clear screen tiles - ld hl, $9800 + ld hl, VBGMap0 ld bc, $0800 ld a, $7f call ByteFill @@ -32742,10 +32742,10 @@ StartTitleScreen: ; 10ed67 ; Initialize running Suicune? ld d, $0 - call $6ed2 + call Function10eed2 ; Initialize background crystal - call $6f06 + call Function10ef06 ; Save WRAM bank ld a, [rSVBK] @@ -32812,7 +32812,7 @@ StartTitleScreen: ; 10ed67 ; Reset audio call ChannelsOff - call $058a + call EnableLCD ; Set sprite size to 8x16 ld a, [rLCDC] @@ -32836,7 +32836,7 @@ StartTitleScreen: ; 10ed67 ld [hBGMapMode], a xor a - ld [$d002], a + ld [DefaultFlypoint], a ; Play starting sound effect call SFXChannelsOff @@ -32864,7 +32864,7 @@ Function10eea7: ; 10eea7 ld d, [hl] xor a ld [hBGMapMode], a - call $6ed2 + call Function10eed2 ld a, $1 ld [hBGMapMode], a ld a, $3 @@ -32931,7 +32931,7 @@ Function10ef06: ; 10ef06 ld c, $5 .asm_10ef0f push bc - call $6f1c + call Function10ef1c pop bc ld a, $10 add d @@ -33163,7 +33163,7 @@ Function117ab4: ; 0x117ab4 ; 0x117acd Function117acd: ; 0x117acd - call $0a57 + call Functiona57 ld a, [$cf63] bit 7, a jr nz, .asm_117ae2 ; 0x117ad5 $b @@ -33360,7 +33360,7 @@ Function117bb6: ld [rSVBK], a ld a, $7 call GetSRAMBank - ld hl, $d002 + ld hl, DefaultFlypoint ld de, $b000 ld bc, $1000 call CopyBytes @@ -34363,7 +34363,7 @@ Function17f036: ; 17f036 call GetSRAMBank inc de .asm_17f03c - call $7047 + call Function17f047 jr c, .asm_17f043 jr .asm_17f03c -- cgit v1.2.3 From 45f52b0f71ee05a9d24e2acdf982a1634fefab47 Mon Sep 17 00:00:00 2001 From: yenatch Date: Thu, 25 Jul 2013 21:20:19 -0400 Subject: Remove erroneous TileX/Y labels --- main.asm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index ecf5f8034..0cdc61695 100644 --- a/main.asm +++ b/main.asm @@ -3319,10 +3319,10 @@ Function1c47: ; 0x1c47 Function1c53: ; 0x1c53 ld a, [$cf82] ld b, a - ld a, [TileX] + ld a, [$cf84] sub b ld b, a - ld a, [TileY] + ld a, [$cf83] ld c, a ld a, [$cf85] sub c -- cgit v1.2.3 From bdd31cb8c5d2b986684a1e595985773d18e82437 Mon Sep 17 00:00:00 2001 From: yenatch Date: Thu, 25 Jul 2013 21:30:48 -0400 Subject: fix replaced label comment --- main.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index 0cdc61695..e7ea79f22 100644 --- a/main.asm +++ b/main.asm @@ -3465,7 +3465,7 @@ Function1ff0: ; 1ff0 INCBIN "baserom.gbc", $1ff8, $2009 - $1ff8 -PlayClickSFX: ; PlayClickSFX +PlayClickSFX: ; 2009 push de ld de, SFX_READ_TEXT_2 call StartSFX -- cgit v1.2.3 From be0af35e3f98d2d546571eca85df80cfa8133a3d Mon Sep 17 00:00:00 2001 From: yenatch Date: Fri, 26 Jul 2013 22:19:26 -0400 Subject: over a million hours in gedit --- main.asm | 29635 ++++++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 22477 insertions(+), 7158 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index e7ea79f22..413bd04e5 100644 --- a/main.asm +++ b/main.asm @@ -276,7 +276,39 @@ Function485: ; 485 ret ; 48c -INCBIN "baserom.gbc", $48c, $52f - $48c +INCBIN "baserom.gbc", $48c, $4b6 - $48c + + +Function4b6: ; 4b6 + ld a, [hCGB] + and a + jr z, .asm_4c2 + ld hl, $0526 + ld b, $3 + jr .asm_4c7 + +.asm_4c2 + ld hl, $053e + ld b, $3 + +.asm_4c7 + push de + ld a, [hli] + call DmgToCgbBGPals + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + call DmgToCgbObjPals + ld c, $8 + call DelayFrames + pop de + dec b + jr nz, .asm_4c7 + ret +; 4dd + +INCBIN "baserom.gbc", $4dd, $52f - $4dd IncGradGBPalTable_01: ; 52f @@ -314,7 +346,31 @@ IncGradGBPalTable_01: ; 52f ; 547 -INCBIN "baserom.gbc", $547, $568 - $547 +INCBIN "baserom.gbc", $547, $552 - $547 + + +Function552: ; 552 + push af + ld a, [hLCDStatCustom] + and a + jr z, .asm_566 + push bc + ld a, [rLY] + ld c, a + ld b, $d1 + ld a, [bc] + ld b, a + ld a, [hLCDStatCustom] + ld c, a + ld a, b + ld [$ff00+c], a + pop bc + +.asm_566 + pop af + reti +; 568 + DisableLCD: ; 568 @@ -552,7 +608,29 @@ FixTime: ; 61d ret ; 658 -INCBIN "baserom.gbc", $658, $67e - $658 +Function658: ; 658 + xor a + ld [StringBuffer2], a + ld a, $0 + ld [$d089], a + jr .asm_677 + + call UpdateTime + ld a, [hHours] + ld [$d087], a + ld a, [hMinutes] + ld [$d088], a + ld a, [hSeconds] + ld [$d089], a + jr .asm_677 + +.asm_677 + ld a, $5 + ld hl, $40ed + rst FarCall + ret +; 67e + Function67e: ; 67e @@ -635,13 +713,385 @@ Function6d3: ; 6d3 ret ; 6e3 -INCBIN "baserom.gbc", $6e3, $92e - $6e3 +Function6e3: ; 6e3 + ld a, $0 + call GetSRAMBank + ld a, [$ac60] + call CloseSRAM + ret +; 6ef + + + +Function6ef: ; 6ef + push af + push bc + push de + push hl + ld a, [$ffc9] + and a + jr nz, .asm_71c + ld a, [$c2d4] + bit 0, a + jr nz, .asm_721 + ld a, [$ffcb] + inc a + jr z, .asm_726 + ld a, [rSB] + ld [$ffce], a + ld a, [$ffcd] + ld [rSB], a + ld a, [$ffcb] + cp $2 + jr z, .asm_752 + ld a, $0 + ld [rSC], a + ld a, $80 + ld [rSC], a + jr .asm_752 + +.asm_71c + call $3e80 + jr .asm_75a + +.asm_721 + call $2057 + jr .asm_75a + +.asm_726 + ld a, [rSB] + cp $1 + jr z, .asm_730 + cp $2 + jr nz, .asm_752 + +.asm_730 + ld [$ffce], a + ld [$ffcb], a + cp $2 + jr z, .asm_74f + xor a + ld [rSB], a + ld a, $3 + ld [rDIV], a +.asm_73f + ld a, [rDIV] + bit 7, a + jr nz, .asm_73f + ld a, $0 + ld [rSC], a + ld a, $80 + ld [rSC], a + jr .asm_752 + +.asm_74f + xor a + ld [rSB], a + +.asm_752 + ld a, $1 + ld [$ffca], a + ld a, $fe + ld [$ffcd], a + +.asm_75a + pop hl + pop de + pop bc + pop af + reti +; 75f + +Function75f: ; 75f + ld a, $1 + ld [$ffcc], a +.asm_763 + ld a, [hl] + ld [$ffcd], a + call $078a + push bc + ld b, a + inc hl + ld a, $30 +.asm_76e + dec a + jr nz, .asm_76e + ld a, [$ffcc] + and a + ld a, b + pop bc + jr z, .asm_782 + dec hl + cp $fd + jr nz, .asm_763 + xor a + ld [$ffcc], a + jr .asm_763 + +.asm_782 + ld [de], a + inc de + dec bc + ld a, b + or c + jr nz, .asm_763 + ret +; 78a + +Function78a: ; 78a + xor a + ld [$ffca], a + ld a, [$ffcb] + cp $2 + jr nz, .asm_79b + ld a, $1 + ld [rSC], a + ld a, $81 + ld [rSC], a + +.asm_79b + ld a, [$ffca] + and a + jr nz, .asm_7e5 + ld a, [$ffcb] + cp $1 + jr nz, .asm_7c0 + call $082b + jr z, .asm_7c0 + call $0825 + push hl + ld hl, $cf5c + inc [hl] + jr nz, .asm_7b7 + dec hl + inc [hl] + +.asm_7b7 + pop hl + call $082b + jr nz, .asm_79b + jp $0833 + +.asm_7c0 + ld a, [rIE] + and $f + cp $8 + jr nz, .asm_79b + ld a, [$cf5d] + dec a + ld [$cf5d], a + jr nz, .asm_79b + ld a, [$cf5e] + dec a + ld [$cf5e], a + jr nz, .asm_79b + ld a, [$ffcb] + cp $1 + jr z, .asm_7e5 + ld a, $ff +.asm_7e2 + dec a + jr nz, .asm_7e2 + +.asm_7e5 + xor a + ld [$ffca], a + ld a, [rIE] + and $f + sub $8 + jr nz, .asm_7f8 + ld [$cf5d], a + ld a, $50 + ld [$cf5e], a + +.asm_7f8 + ld a, [$ffce] + cp $fe + ret nz + call $082b + jr z, .asm_813 + push hl + ld hl, $cf5c + ld a, [hl] + dec a + ld [hld], a + inc a + jr nz, .asm_80d + dec [hl] + +.asm_80d + pop hl + call $082b + jr z, .asm_833 + +.asm_813 + ld a, [rIE] + and $f + cp $8 + ld a, $fe + ret z + ld a, [hl] + ld [$ffcd], a + call DelayFrame + jp $078a + + ld a, $f +.asm_827 + dec a + jr nz, .asm_827 + ret + + push hl + ld hl, $cf5b + ld a, [hli] + or [hl] + pop hl + ret + +.asm_833 + dec a + ld [$cf5b], a + ld [$cf5c], a + ret +; 83b + +INCBIN "baserom.gbc", $83b, $87d - $83b + + +Function87d: ; 87d + ld a, $ff + ld [$cf52], a +.asm_882 + call $08c1 + call DelayFrame + call $082b + jr z, .asm_89e + push hl + ld hl, $cf5c + dec [hl] + jr nz, .asm_89d + dec hl + dec [hl] + jr nz, .asm_89d + pop hl + xor a + jp $0833 + +.asm_89d + pop hl + +.asm_89e + ld a, [$cf52] + inc a + jr z, .asm_882 + ld b, $a +.asm_8a6 + call DelayFrame + call $08c1 + dec b + jr nz, .asm_8a6 + ld b, $a +.asm_8b1 + call DelayFrame + call $0908 + dec b + jr nz, .asm_8b1 + ld a, [$cf52] + ld [$cf51], a + ret +; 8c1 + +Function8c1: ; 8c1 + push bc + ld b, $60 + ld a, [InLinkBattle] + cp $1 + jr z, .asm_8d7 + ld b, $60 + jr c, .asm_8d7 + cp $2 + ld b, $70 + jr z, .asm_8d7 + ld b, $80 + +.asm_8d7 + call $08f3 + ld a, [$cf56] + add b + ld [$ffcd], a + ld a, [$ffcb] + cp $2 + jr nz, .asm_8ee + ld a, $1 + ld [rSC], a + ld a, $81 + ld [rSC], a + +.asm_8ee + call $08f3 + pop bc + ret +; 8f3 + +Function8f3: ; 8f3 + ld a, [$ffce] + ld [$cf51], a + and $f0 + cp b + ret nz + xor a + ld [$ffce], a + ld a, [$cf51] + and $f + ld [$cf52], a + ret +; 908 + +Function908: ; 908 + xor a + ld [$ffcd], a + ld a, [$ffcb] + cp $2 + ret nz + ld a, $1 + ld [rSC], a + ld a, $81 + ld [rSC], a + ret +; 919 + +INCBIN "baserom.gbc", $919, $92e - $919 INCLUDE "engine/joypad.asm" -INCBIN "baserom.gbc", $a1b, $a57 - $a1b +INCBIN "baserom.gbc", $a1b, $a36 - $a1b + + +Functiona36: ; a36 +.asm_a36 + call DelayFrame + call GetJoypadPublic + ld a, [hJoyPressed] + and $3 + ret nz + call RTC + jr .asm_a36 +; a46 + +Functiona46: ; a46 + ld a, [hOAMUpdate] + push af + ld a, $1 + ld [hOAMUpdate], a + call WaitBGMap + call $0a36 + pop af + ld [hOAMUpdate], a + ret +; a57 + Functiona57: ; a57 @@ -1328,7 +1778,30 @@ CopyPals: ; d50 ; d79 -INCBIN "baserom.gbc", $d79, $dc9 - $d79 +INCBIN "baserom.gbc", $d79, $d90 - $d79 + + +Functiond90: ; d90 + ret +; d91 + +INCBIN "baserom.gbc", $d91, $db1 - $d91 + + +Functiondb1: ; db1 + ld a, [hROMBank] + push af + ld a, $13 + rst Bankswitch + + call $4000 + pop af + rst Bankswitch + + ret +; dbd + +INCBIN "baserom.gbc", $dbd, $dc9 - $dbd Functiondc9: ; dc9 @@ -1377,7 +1850,32 @@ Functiondef: ; def ret ; dfd -INCBIN "baserom.gbc", $dfd, $e5f - $dfd +INCBIN "baserom.gbc", $dfd, $e4a - $dfd + + +Functione4a: ; e4a + ld a, $5 + ld hl, $4135 + rst FarCall + ret +; e51 + + + +Functione51: ; e51 + ld a, $3e + ld hl, $7449 + rst FarCall + ret +; e58 + +Functione58: ; e58 + ld a, $3e + ld hl, $74be + rst FarCall + ret +; e5f + Functione5f: ; e5f @@ -1789,7 +2287,15 @@ PrintTextBoxText: ; 1065 ; 106c -INCBIN "baserom.gbc", $106c, $1078 - $106c +Function106c: ; 106c + push hl + call SpeechTextBox + call $1ad2 + call $321c + pop hl + ret +; 1078 + PlaceString: ; 1078 @@ -2350,7 +2856,47 @@ Function13cd: ; 13cd ret ; 13d4 -INCBIN "baserom.gbc", $13d4, $15d8 - $13d4 +INCBIN "baserom.gbc", $13d4, $13e5 - $13d4 + + +Function13e5: ; 13e5 + ld a, [$cfcf] + push af + set 1, a + ld [$cfcf], a + call $13f6 + pop af + ld [$cfcf], a + ret +; 13f6 + +Function13f6: ; 13f6 +.asm_13f6 + ld a, [hli] + cp $50 + ret z + call $13ff + jr .asm_13f6 +; 13ff + +Function13ff: ; 13ff + push hl + push bc + ld c, a + ld b, $0 + ld hl, $1410 + add hl, bc + add hl, bc + ld e, [hl] + inc hl + ld d, [hl] + pop bc + pop hl + push de + ret +; 1410 + +INCBIN "baserom.gbc", $1410, $15d8 - $1410 DMATransfer: ; 15d8 ; DMA transfer @@ -2961,7 +3507,56 @@ SafeTileAnimation: ; 17d3 ; 17ff -INCBIN "baserom.gbc", $17ff, $185d - $17ff +Function17ff: ; 17ff + push hl + push de + push bc + ld c, a + callba GetSpritePalette + ld a, c + pop bc + pop de + pop hl + ret +; 180e + +Function180e: ; 180e + push hl + push bc + ld hl, $d156 + ld c, $1f + ld b, a + ld a, [hConnectionStripLength] + cp $0 + jr z, .asm_182b + ld a, b +.asm_181d + cp [hl] + jr z, .asm_1830 + inc hl + inc hl + dec c + jr nz, .asm_181d + ld a, [$d155] + scf + jr .asm_1833 + +.asm_182b + ld a, [$d155] + jr .asm_1833 + +.asm_1830 + inc hl + xor a + ld a, [hl] + +.asm_1833 + pop bc + pop hl + ret +; 1836 + +INCBIN "baserom.gbc", $1836, $185d - $1836 GetTileType: ; 185d @@ -3078,7 +3673,103 @@ GetMapObject: ; 18d2 ; 18de -INCBIN "baserom.gbc", $18de, $1a13 - $18de +Function18de: ; 18de + ld [hConnectionStripLength], a + call GetMapObject + ld hl, $0000 + add hl, bc + ld a, [hl] + cp $ff + jr z, .asm_18f3 + ld [hConnectedMapWidth], a + call Function1ae5 + and a + ret + +.asm_18f3 + scf + ret +; 18f5 + +INCBIN "baserom.gbc", $18f5, $1956 - $18f5 + + +Function1956: ; 1956 + ld [hConnectionStripLength], a + call $271e + ld a, [hConnectionStripLength] + call GetMapObject + ld a, $2 + ld hl, $40e7 + rst FarCall + ret +; 1967 + +Function1967: ; 1967 + ld [hConnectionStripLength], a + call GetMapObject + ld hl, $0000 + add hl, bc + ld a, [hl] + cp $ff + ret z + ld [hl], $ff + push af + call $1985 + pop af + call Function1ae5 + callba Function4357 + ret +; 1985 + +Function1985: ; 1985 + ld hl, $d4cd + cp [hl] + jr z, .asm_1990 + ld hl, $d4ce + cp [hl] + ret nz + +.asm_1990 + callba Function581f + ld a, $ff + ld [$d4cd], a + ld [$d4ce], a + ret +; 199f + +Function199f: ; 199f + call $1967 + call $2712 + ret +; 19a6 + +INCBIN "baserom.gbc", $19a6, $19e9 - $19a6 + + +Function19e9: ; 19e9 + ld [$c2e2], a + ld a, [hROMBank] + ld [$c2e3], a + ld a, l + ld [$c2e4], a + ld a, h + ld [$c2e5], a + ld a, [$c2e2] + call $18de + ret c + ld hl, $0003 + add hl, bc + ld [hl], $14 + ld hl, $0009 + add hl, bc + ld [hl], $0 + ld hl, VramState + set 7, [hl] + and a + ret +; 1a13 + Function1a13: ; 1a13 @@ -3220,7 +3911,18 @@ Function1a71: ; 1a71 ret ; 1aae -INCBIN "baserom.gbc", $1aae, $1ae5 - $1aae +INCBIN "baserom.gbc", $1aae, $1ad2 - $1aae + + +Function1ad2: ; 1ad2 + ld a, [VramState] + bit 0, a + ret z + callba Function55e0 + callba Function5920 + ret +; 1ae5 + Function1ae5: ; 1ae5 @@ -3252,7 +3954,83 @@ GetSpriteDirection: ; 1b07 ; 1b0f -INCBIN "baserom.gbc", $1b0f, $1c07 - $1b0f +INCBIN "baserom.gbc", $1b0f, $1bb1 - $1b0f + + +Function1bb1: ; 1bb1 + push hl + push bc + ld hl, $cfa1 + ld b, $8 +.asm_1bb8 + ld a, [de] + inc de + ld [hli], a + dec b + jr nz, .asm_1bb8 + ld a, $1 + ld [hli], a + ld [hli], a + xor a + ld [hli], a + ld [hli], a + ld [hli], a + pop bc + pop hl + ret +; 1bc9 + +Function1bc9: ; 1bc9 + ld hl, $41a8 + ld a, $9 + rst FarCall + call $1bdd + ret +; 1bd3 + +Function1bd3: ; 1bd3 + ld hl, $41ab + ld a, $9 + rst FarCall + call $1bdd + ret +; 1bdd + +Function1bdd: ; 1bdd + push bc + push af + ld a, [$ffa9] + and $f0 + ld b, a + ld a, [hJoyPressed] + and $f + or b + ld b, a + pop af + ld a, b + pop bc + ret +; 1bee + +Function1bee: ; 1bee + ld hl, $cfac + ld a, [hli] + ld h, [hl] + ld l, a + ld [hl], $ec + ret +; 1bf7 + +INCBIN "baserom.gbc", $1bf7, $1c00 - $1bf7 + + +Function1c00: ; 1c00 + ld hl, $4374 + ld a, $9 + rst FarCall + ret +; 1c07 + Function1c07: ; 0x1c07 @@ -3330,7 +4108,169 @@ Function1c53: ; 0x1c53 ret ; 0x1c66 -INCBIN "baserom.gbc", $1c66, $1d35 - $1c66 +Function1c66: ; 1c66 + push hl + push de + push bc + push af + ld hl, $cf86 + ld a, [hli] + ld h, [hl] + ld l, a + ld de, $cf91 + ld bc, $0010 + call CopyBytes + pop af + pop bc + pop de + pop hl + ret +; 1c7e + +Function1c7e: ; 1c7e + ld hl, $cf71 + ld a, [hli] + ld h, [hl] + ld l, a + inc hl + ld a, [hli] + ld h, [hl] + ld l, a + ret +; 1c89 + +Function1c89: ; 1c89 + call $1c66 + ld hl, $cf86 + ld e, [hl] + inc hl + ld d, [hl] + call $1cc6 + call $1d05 + inc de + ld a, [de] + inc de + ld b, a +.asm_1c9c + push bc + call PlaceString + inc de + ld bc, $0028 + add hl, bc + pop bc + dec b + jr nz, .asm_1c9c + ld a, [$cf91] + bit 4, a + ret z + call $1cfd + ld a, [de] + ld c, a + inc de + ld b, $0 + add hl, bc + jp PlaceString +; 1cbb + +Function1cbb: ; 1cbb + call $1cfd + call Function1c53 + dec b + dec c + jp TextBox +; 1cc6 + +Function1cc6: ; 1cc6 + ld a, [$cf82] + ld b, a + inc b + ld a, [$cf83] + ld c, a + inc c + ld a, [$cf91] + bit 6, a + jr nz, .asm_1cd8 + inc b + +.asm_1cd8 + ld a, [$cf91] + bit 7, a + jr z, .asm_1ce0 + inc c + +.asm_1ce0 + ret +; 1ce1 + +Function1ce1: ; 1ce1 + call $1cfd + ld bc, $0015 + add hl, bc + call Function1c53 + dec b + dec c + call ClearBox + ret +; 1cf1 + +Function1cf1: ; 1cf1 + call $1cfd + call Function1c53 + inc c + inc b + call ClearBox + ret +; 1cfd + +INCBIN "baserom.gbc", $1cfd, $1d05 - $1cfd + + +Function1d05: ; 1d05 + xor a + ld h, a + ld l, b + ld a, c + ld b, h + ld c, l + add hl, hl + add hl, hl + add hl, bc + add hl, hl + add hl, hl + ld c, a + xor a + ld b, a + add hl, bc + ld bc, TileMap + add hl, bc + ret +; 1d19 + +Function1d19: ; 1d19 + ld a, [$cf83] + ld c, a + ld a, [$cf82] + ld b, a + xor a + ld h, a + ld l, b + ld a, c + ld b, h + ld c, l + add hl, hl + add hl, hl + add hl, bc + add hl, hl + add hl, hl + ld c, a + xor a + ld b, a + add hl, bc + ld bc, AttrMap + add hl, bc + ret +; 1d35 + Function1d35: ; 0x1d35 call Function1d3c @@ -3346,7 +4286,42 @@ Function1d3c: ; 0x1d3c ret ; 0x1d4b -INCBIN "baserom.gbc", $1d4b, $1d81 - $1d4b +INCBIN "baserom.gbc", $1d4b, $1d4f - $1d4b + + +Function1d4f: ; 1d4f + push hl + call $1d58 + pop hl + jp PrintText +; 1d57 + +INCBIN "baserom.gbc", $1d57, $1d58 - $1d57 + + +Function1d58: ; 1d58 + ld hl, $1d5f + call Function1d35 + ret +; 1d5f + +INCBIN "baserom.gbc", $1d5f, $1d6e - $1d5f + + +Function1d6e: ; 1d6e + ld hl, $1d75 + call Function1d35 + ret +; 1d75 + +INCBIN "baserom.gbc", $1d75, $1d7d - $1d75 + + +Function1d7d: ; 1d7d + call Function1c07 + ret +; 1d81 + Function1d81: ; 0x1d81 xor a @@ -3394,7 +4369,99 @@ Function1db8: ; 0x1db8 ret ; 0x1dcf -INCBIN "baserom.gbc", $1dcf, $1e70 - $1dcf +Function1dcf: ; 1dcf + ld bc, $0e07 + jr .asm_1dd9 + + call Function1d35 + jr .asm_1dfe + +.asm_1dd9 + push bc + ld hl, $1e1d + call Function1d3c + pop bc + ld a, b + cp $e + jr nz, .asm_1de9 + ld a, $e + ld b, a + +.asm_1de9 + ld a, b + ld [$cf83], a + add $5 + ld [$cf85], a + ld a, c + ld [$cf82], a + add $4 + ld [$cf84], a + call $1c00 + +.asm_1dfe + call Function1d81 + push af + ld c, $f + call DelayFrames + call Function1c17 + pop af + jr c, .asm_1e16 + ld a, [$cfa9] + cp $2 + jr z, .asm_1e16 + and a + ret + +.asm_1e16 + ld a, $2 + ld [$cfa9], a + scf + ret +; 1e1d + +INCBIN "baserom.gbc", $1e1d, $1e2e - $1e1d + + +Function1e2e: ; 1e2e + call $1e35 + call $1c00 + ret +; 1e35 + +Function1e35: ; 1e35 + push de + call Function1d3c + pop de + ld a, [$cf83] + ld h, a + ld a, [$cf85] + sub h + ld h, a + ld a, d + ld [$cf83], a + add h + ld [$cf85], a + ld a, [$cf82] + ld l, a + ld a, [$cf84] + sub l + ld l, a + ld a, e + ld [$cf82], a + add l + ld [$cf84], a + ret +; 1e5d + +INCBIN "baserom.gbc", $1e5d, $1e6b - $1e5d + + +Function1e6b: ; 1e6b + dec de + call $1ff8 + ret +; 1e70 + SetUpMenu: ; 1e70 call MenuFunc_1e7f ; ??? @@ -3463,7 +4530,20 @@ Function1ff0: ; 1ff0 ret ; 1ff8 -INCBIN "baserom.gbc", $1ff8, $2009 - $1ff8 +Function1ff8: ; 1ff8 + push af + and $3 + jr z, .asm_2007 + ld hl, $cf81 + bit 3, [hl] + jr nz, .asm_2007 + call PlayClickSFX + +.asm_2007 + pop af + ret +; 2009 + PlayClickSFX: ; 2009 push de @@ -3473,7 +4553,22 @@ PlayClickSFX: ; 2009 ret ; 0x2012 -INCBIN "baserom.gbc", $2012, $2063 - $2012 +INCBIN "baserom.gbc", $2012, $2057 - $2012 + + +Function2057: ; 2057 + ld a, [hROMBank] + push af + ld a, $21 + rst Bankswitch + + call $42db + pop af + rst Bankswitch + + ret +; 2063 + AskSerial: ; 2063 ; send out a handshake while serial int is off @@ -3644,7 +4739,356 @@ UpdateGameTimer: ; 20ad ; 210f -INCBIN "baserom.gbc", $210f, $22ee - $210f +INCBIN "baserom.gbc", $210f, $211b - $210f + + +Function211b: ; 211b + push hl + ld hl, $dbf7 + ld a, [hli] + ld h, [hl] + ld l, a + or h + ld a, [hl] + jr nz, .asm_2128 + ld a, $ff + +.asm_2128 + pop hl + ret +; 212a + +INCBIN "baserom.gbc", $212a, $2147 - $212a + + +Function2147: ; 2147 + push bc + ld a, [hROMBank] + push af + ld a, $13 + rst Bankswitch + + ld hl, $501e +.asm_2151 + push hl + ld a, [hli] + cp $ff + jr z, .asm_2167 + cp b + jr nz, .asm_2160 + ld a, [hli] + cp c + jr nz, .asm_2160 + jr .asm_216a + +.asm_2160 + pop hl + ld de, $0004 + add hl, de + jr .asm_2151 + +.asm_2167 + scf + jr .asm_216d + +.asm_216a + ld e, [hl] + inc hl + ld d, [hl] + +.asm_216d + pop hl + pop bc + ld a, b + rst Bankswitch + + pop bc + ret +; 2173 + +Function2173: ; 2173 + call $217a + call $0db1 + ret +; 217a + +Function217a: ; 217a + ld a, [hROMBank] + push af + ld a, [TileSetBlocksBank] + rst Bankswitch + + call $2198 + ld a, $60 + ld hl, TileMap + ld bc, $0168 + call ByteFill + ld a, $13 + rst Bankswitch + + call $515b + pop af + rst Bankswitch + + ret +; 2198 + +Function2198: ; 2198 + ld a, [$d194] + ld e, a + ld a, [$d195] + ld d, a + ld hl, EnemyMoveAnimation + ld b, $5 + push de + push hl + ld c, $6 + push de + push hl + ld a, [de] + and a + jr nz, .asm_21b2 + ld a, [$d19d] + +.asm_21b2 + ld e, l + ld d, h + add a + ld l, a + ld h, $0 + add hl, hl + add hl, hl + add hl, hl + ld a, [TileSetBlocksAddress] + add l + ld l, a + ld a, [$d1de] + adc h + ld h, a + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, e + add $14 + ld e, a + jr nc, .asm_21d8 + inc d + +.asm_21d8 + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, e + add $14 + ld e, a + jr nc, .asm_21eb + inc d + +.asm_21eb + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, e + add $14 + ld e, a + jr nc, .asm_21fe + inc d + +.asm_21fe + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + pop hl + ld de, $0004 + add hl, de + pop de + inc de + dec c + jp nz, $21a9 + pop hl + ld de, $0060 + add hl, de + pop de + ld a, [$d19f] + add $6 + add e + ld e, a + jr nc, .asm_2225 + inc d + +.asm_2225 + dec b + jp nz, $21a5 + ret +; 222a + +INCBIN "baserom.gbc", $222a, $224a - $222a + + +Function224a: ; 224a + call $2252 + ret nc + call $22a7 + ret +; 2252 + +Function2252: ; 2252 + ld a, $5 + ld hl, $499a + rst FarCall + ret nc + ld a, [hROMBank] + push af + call $2c52 + call $2266 + pop de + ld a, d + rst Bankswitch + + ret +; 2266 + +Function2266: ; 2266 + ld a, [MapY] + sub $4 + ld e, a + ld a, [MapX] + sub $4 + ld d, a + ld a, [$dbfb] + and a + ret z + ld c, a + ld hl, $dbfc + ld a, [hli] + ld h, [hl] + ld l, a +.asm_227e + push hl + ld a, [hli] + cp e + jr nz, .asm_2289 + ld a, [hli] + cp d + jr nz, .asm_2289 + jr .asm_2296 + +.asm_2289 + pop hl + ld a, $5 + add l + ld l, a + jr nc, .asm_2291 + inc h + +.asm_2291 + dec c + jr nz, .asm_227e + xor a + ret + +.asm_2296 + pop hl + call $22a3 + ret nc + ld a, [$dbfb] + inc a + sub c + ld c, a + scf + ret +; 22a3 + +Function22a3: ; 22a3 + inc hl + inc hl + scf + ret +; 22a7 + +Function22a7: ; 22a7 + ld a, [hROMBank] + push af + call $2c52 + call $22b4 + pop af + rst Bankswitch + + scf + ret +; 22b4 + +Function22b4: ; 22b4 + push bc + ld hl, $dbfc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, c + dec a + ld bc, $0005 + call AddNTimes + ld bc, $0002 + add hl, bc + ld a, [hli] + cp $ff + jr nz, .asm_22d0 + ld hl, $dcac + ld a, [hli] + +.asm_22d0 + pop bc + ld [$d146], a + ld a, [hli] + ld [$d147], a + ld a, [hli] + ld [$d148], a + ld a, c + ld [$d149], a + ld a, [MapGroup] + ld [$d14a], a + ld a, [MapNumber] + ld [$d14b], a + scf + ret +; 22ee + CheckOutdoorMap: ; 22ee @@ -3682,7 +5126,59 @@ GetMapConnection: ; 23a3 ; 23ac -INCBIN "baserom.gbc", $23ac, $2524 - $23ac +INCBIN "baserom.gbc", $23ac, $24e4 - $23ac + + +Function24e4: ; 24e4 + ld a, [hROMBank] + push af + ld hl, OverworldMap + ld a, [$d19f] + ld [hConnectedMapWidth], a + add $6 + ld [hConnectionStripLength], a + ld c, a + ld b, $0 + add hl, bc + add hl, bc + add hl, bc + ld c, $3 + add hl, bc + ld a, [$d1a0] + rst Bankswitch + + ld a, [$d1a1] + ld e, a + ld a, [$d1a2] + ld d, a + ld a, [$d19e] + ld b, a +.asm_250c + push hl + ld a, [hConnectedMapWidth] + ld c, a +.asm_2510 + ld a, [de] + inc de + ld [hli], a + dec c + jr nz, .asm_2510 + pop hl + ld a, [hConnectionStripLength] + add l + ld l, a + jr nc, .asm_251e + inc h + +.asm_251e + dec b + jr nz, .asm_250c + pop af + rst Bankswitch + + ret +; 2524 + FillMapConnections: ; 2524 @@ -3861,7 +5357,11 @@ FillEastConnectionStrip: ; 25f6 ; 261b -INCBIN "baserom.gbc", $261b, $261f - $261b +Function261b: ; 261b + ld [$d432], a + ret +; 261f + PushScriptPointer: ; 261f @@ -3881,7 +5381,133 @@ PushScriptPointer: ; 261f ; 2631 -INCBIN "baserom.gbc", $2631, $26d4 - $2631 +INCBIN "baserom.gbc", $2631, $263b - $2631 + + +Function263b: ; 263b + ld b, a + ld a, [hROMBank] + push af + call $2c52 + call $2653 + jr nc, .asm_2650 + call GetMapEventBank + ld b, a + ld d, h + ld e, l + call $2674 + +.asm_2650 + pop af + rst Bankswitch + + ret +; 2653 + +Function2653: ; 2653 + ld a, [$dc0a] + ld c, a + and a + ret z + ld hl, $dc0b + ld a, [hli] + ld h, [hl] + ld l, a + or h + ret z + ld de, $0003 +.asm_2664 + ld a, [hl] + cp b + jr z, .asm_266e + add hl, de + dec c + jr nz, .asm_2664 + xor a + ret + +.asm_266e + inc hl + ld a, [hli] + ld h, [hl] + ld l, a + scf + ret +; 2674 + +Function2674: ; 2674 + callba Unknown_0x974f3 + ld a, [ScriptMode] + push af + ld hl, ScriptFlags + ld a, [hl] + push af + set 1, [hl] + callba Function96c56 + callba ScriptEvents + pop af + ld [ScriptFlags], a + pop af + ld [ScriptMode], a + ret +; 269a + +Function269a: ; 269a + ld a, [hROMBank] + push af + ld a, b + rst Bankswitch + + push hl + call SpeechTextBox + call $2e31 + ld a, $1 + ld [hOAMUpdate], a + call $321c + pop hl + call PrintTextBoxText + xor a + ld [hOAMUpdate], a + pop af + rst Bankswitch + + ret +; 26b7 + +Function26b7: ; 26b7 + ld [hBuffer], a + ld a, [hROMBank] + push af + ld a, [hBuffer] + rst Bankswitch + + call $26c5 + pop af + rst Bankswitch + + ret +; 26c5 + +Function26c5: ; 26c5 + push de + ret +; 26c7 + +Function26c7: ; 26c7 + ld a, [hROMBank] + push af + ld a, b + rst Bankswitch + + ld a, c + call $19e9 + pop hl + ld a, h + rst Bankswitch + + ret +; 26d4 + GetScriptByte: ; 0x26d4 @@ -3928,46 +5554,314 @@ ObjectEventText: ; 0x26f7 -INCBIN "baserom.gbc", $26f7, $2a07 - $26f7 +INCBIN "baserom.gbc", $26f7, $2707 - $26f7 -GetFacingTileCoord: ; 2a07 -; Return map coordinates in (d, e) and tile id in a -; of the tile the player is facing. +Function2707: ; 2707 + ld a, [hConnectionStripLength] + ld e, a + ld d, $0 + ld hl, $d81e + add hl, de + ld a, [hl] + ret +; 2712 - ld a, [PlayerDirection] - and %1100 - srl a - srl a - ld l, a - ld h, 0 - add hl, hl - add hl, hl - ld de, .Directions +Function2712: ; 2712 + ld a, [hConnectionStripLength] + ld e, a + ld d, $0 + ld hl, $d81e add hl, de + ld [hl], $ff + ret +; 271e - ld d, [hl] - inc hl - ld e, [hl] - inc hl +Function271e: ; 271e + ld a, [hConnectionStripLength] + ld e, a + ld d, $0 + ld hl, $d81e + add hl, de + ld [hl], $0 + ret +; 272a + +INCBIN "baserom.gbc", $272a, $2821 - $272a + +Function2821: ; 2821 + ld hl, TileSetAddress ld a, [hli] ld h, [hl] ld l, a - - ld a, [MapX] - add d - ld d, a - ld a, [MapY] - add e + ld a, [TileSetBank] ld e, a - ld a, [hl] - ret - -.Directions - ; x, y - db 0, 1 - dw TileDown + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + ld a, e + ld de, $d000 + call FarDecompress + ld hl, $d000 + ld de, VTiles2 + ld bc, $0600 + call CopyBytes + ld a, [rVBK] + push af + ld a, $1 + ld [rVBK], a + ld hl, $d600 + ld de, VTiles2 + ld bc, $0600 + call CopyBytes + pop af + ld [rVBK], a + pop af + ld [rSVBK], a + ld a, [$d199] + cp $1 + jr z, .asm_286f + cp $2 + jr z, .asm_286f + cp $4 + jr z, .asm_286f + jr .asm_2875 + +.asm_286f + ld a, $7 + ld hl, $4000 + rst FarCall + +.asm_2875 + xor a + ld [hTileAnimFrame], a + ret +; 2879 + +Function2879: ; 2879 + ld hl, $d194 + ld a, [hli] + ld h, [hl] + ld l, a + ld de, $dcb9 + ld c, $5 + ld b, $6 +.asm_2886 + push bc + push hl +.asm_2888 + ld a, [hli] + ld [de], a + inc de + dec b + jr nz, .asm_2888 + pop hl + ld a, [$d19f] + add $6 + ld c, a + ld b, $0 + add hl, bc + pop bc + dec c + jr nz, .asm_2886 + ret +; 289d + +INCBIN "baserom.gbc", $289d, $2914 - $289d + + +Function2914: ; 2914 + xor a + ld [TilePermissions], a + call $296c + call $294d + ld a, [MapX] + ld d, a + ld a, [MapY] + ld e, a + call Function2a3c + ld [StandingTile], a + call $29ff + ret nz + ld a, [StandingTile] + and $7 + ld hl, $2945 + add l + ld l, a + ld a, $0 + adc h + ld h, a + ld a, [hl] + ld hl, TilePermissions + or [hl] + ld [hl], a + ret +; 2945 + +INCBIN "baserom.gbc", $2945, $294d - $2945 + + +Function294d: ; 294d + ld a, [MapX] + ld d, a + ld a, [MapY] + ld e, a + push de + inc e + call Function2a3c + ld [TileDown], a + call $298b + pop de + dec e + call Function2a3c + ld [TileUp], a + call $29a8 + ret +; 296c + +Function296c: ; 296c + ld a, [MapX] + ld d, a + ld a, [MapY] + ld e, a + push de + dec d + call Function2a3c + ld [TileLeft], a + call $29e2 + pop de + inc d + call Function2a3c + ld [TileRight], a + call $29c5 + ret +; 298b + +Function298b: ; 298b + call $29ff + ret nz + ld a, [TileDown] + and $7 + cp $2 + jr z, .asm_299f + cp $6 + jr z, .asm_299f + cp $7 + ret nz + +.asm_299f + ld a, [TilePermissions] + or $8 + ld [TilePermissions], a + ret +; 29a8 + +Function29a8: ; 29a8 + call $29ff + ret nz + ld a, [TileUp] + and $7 + cp $3 + jr z, .asm_29bc + cp $4 + jr z, .asm_29bc + cp $5 + ret nz + +.asm_29bc + ld a, [TilePermissions] + or $4 + ld [TilePermissions], a + ret +; 29c5 + +Function29c5: ; 29c5 + call $29ff + ret nz + ld a, [TileRight] + and $7 + cp $1 + jr z, .asm_29d9 + cp $5 + jr z, .asm_29d9 + cp $7 + ret nz + +.asm_29d9 + ld a, [TilePermissions] + or $1 + ld [TilePermissions], a + ret +; 29e2 + +Function29e2: ; 29e2 + call $29ff + ret nz + ld a, [TileLeft] + and $7 + cp $0 + jr z, .asm_29f6 + cp $4 + jr z, .asm_29f6 + cp $6 + ret nz + +.asm_29f6 + ld a, [TilePermissions] + or $2 + ld [TilePermissions], a + ret +; 29ff + +Function29ff: ; 29ff + and $f0 + cp $b0 + ret z + cp $c0 + ret +; 2a07 + + + +GetFacingTileCoord: ; 2a07 +; Return map coordinates in (d, e) and tile id in a +; of the tile the player is facing. + + ld a, [PlayerDirection] + and %1100 + srl a + srl a + ld l, a + ld h, 0 + add hl, hl + add hl, hl + ld de, .Directions + add hl, de + + ld d, [hl] + inc hl + ld e, [hl] + inc hl + + ld a, [hli] + ld h, [hl] + ld l, a + + ld a, [MapX] + add d + ld d, a + ld a, [MapY] + add e + ld e, a + ld a, [hl] + ret + +.Directions + ; x, y + db 0, 1 + dw TileDown db 0, -1 dw TileUp db -1, 0 @@ -4121,7 +6015,34 @@ FadeToMenu: ; 2b29 ; 2b3c -INCBIN "baserom.gbc", $2b3c, $2b74 - $2b3c +Function2b3c: ; 2b3c + call WhiteBGMap + call $2bae + call $1ad2 + call $1d7d + call $0d90 + jr .asm_2b5c + + call WhiteBGMap + call $1d7d + call $2bae + call $1ad2 + call $0d90 + +.asm_2b5c + ld b, $9 + call GetSGBLayout + ld a, $12 + ld hl, $5409 + rst FarCall + call Function3200 + ld a, $23 + ld hl, $4079 + rst FarCall + call $2ee4 + ret +; 2b74 + Function2b74: ; 0x2b74 @@ -4151,7 +6072,36 @@ Function2b74: ; 0x2b74 ret ; 0x2bae -INCBIN "baserom.gbc", $2bae, $2bed-$2bae +Function2bae: ; 2bae + call DisableLCD + call ClearSprites + ld a, $5 + ld hl, $4168 + rst FarCall + call $0e51 + call Functione5f + ld a, [hROMBank] + push af + ld a, [MapGroup] + ld b, a + ld a, [MapNumber] + ld c, a + call $2c24 + ld a, $23 + ld hl, $4001 + rst FarCall + call $2173 + call $2821 + ld a, $9 + call $3cb4 + pop af + rst Bankswitch + + call EnableLCD + ret +; 2be5 + +INCBIN "baserom.gbc", $2be5, $2bed - $2be5 GetMapHeaderPointer: ; 0x2bed ; Prior to calling this function, you must have switched banks so that @@ -4222,7 +6172,40 @@ GetAnyMapHeaderMember: ; 0x2c0c ; 0x2c1c -INCBIN "baserom.gbc", $2c1c, $2c57 - $2c1c +INCBIN "baserom.gbc", $2c1c, $2c24 - $2c1c + + +Function2c24: ; 2c24 + call $2c31 + rst Bankswitch + + ret +; 2c29 + +INCBIN "baserom.gbc", $2c29, $2c31 - $2c29 + + +Function2c31: ; 2c31 + push hl + push de + ld de, $0000 + call GetAnyMapHeaderMember + ld a, c + pop de + pop hl + ret +; 2c3d + +INCBIN "baserom.gbc", $2c3d, $2c52 - $2c3d + + +Function2c52: ; 2c52 + ld a, [MapEventBank] + rst Bankswitch + + ret +; 2c57 + GetMapEventBank: ; 2c57 @@ -4308,7 +6291,81 @@ GetWorldMapLocation: ; 0x2caf ; 0x2cbd -INCBIN "baserom.gbc", $2cbd, $2d63 - $2cbd +Function2cbd: ; 2cbd + push hl + push bc + ld de, $0006 + call GetMapHeaderMember + ld a, c + cp $64 + jr z, .asm_2cee + bit 7, c + jr nz, .asm_2cda + ld a, $22 + ld hl, $7342 + rst FarCall + ld e, c + ld d, $0 +.asm_2cd7 + pop bc + pop hl + ret + +.asm_2cda + ld a, [StatusFlags2] + bit 0, a + jr z, .asm_2ce6 + ld de, $0056 + jr .asm_2cd7 + +.asm_2ce6 + ld a, c + and $7f + ld e, a + ld d, $0 + jr .asm_2cd7 + +.asm_2cee + ld a, [StatusFlags2] + bit 7, a + jr z, .asm_2cfa + ld de, $0048 + jr .asm_2cd7 + +.asm_2cfa + ld de, $0026 + jr .asm_2cd7 +; 2cff + +INCBIN "baserom.gbc", $2cff, $2d05 - $2cff + + +Function2d05: ; 2d05 + call $2d0d + and $f0 + swap a + ret +; 2d0d + +Function2d0d: ; 2d0d + push hl + push bc + ld de, $0007 + call GetMapHeaderMember + ld a, c + pop bc + pop hl + ret +; 2d19 + +INCBIN "baserom.gbc", $2d19, $2d61 - $2d19 + + +Function2d61: ; 2d61 + push de + ret +; 2d63 + FarJpHl: ; 2d63 @@ -4439,7 +6496,91 @@ ResetWindow: ; 2dba ; 2dcf -INCBIN "baserom.gbc", $2dcf, $2e6f-$2dcf +Function2dcf: ; 2dcf + ld a, [hOAMUpdate] + push af + ld a, $1 + ld [hOAMUpdate], a + call $2de2 + pop af + ld [hOAMUpdate], a + ld hl, VramState + res 6, [hl] + ret +; 2de2 + +Function2de2: ; 2de2 + call Function1fbf + xor a + ld [hBGMapMode], a + call $2173 + call $2e20 + xor a + ld [hBGMapMode], a + call $2e31 + ld a, $90 + ld [$ffd2], a + call $0e4a + ld a, $2e + ld hl, $4000 + rst FarCall + ld a, $41 + ld hl, $6594 + rst FarCall + ret +; 2e08 + +Function2e08: ; 2e08 + call Function1fbf + ld a, [hROMBank] + push af + ld a, $1 + rst Bankswitch + + call $6454 + call SpeechTextBox + call $2e20 + call $64bf + pop af + rst Bankswitch + + ret +; 2e20 + +Function2e20: ; 2e20 + ld a, [hOAMUpdate] + push af + ld a, $1 + ld [hOAMUpdate], a + ld a, $41 + ld hl, $4110 + rst FarCall + pop af + ld [hOAMUpdate], a + ret +; 2e31 + +Function2e31: ; 2e31 + ld a, [hOAMUpdate] + push af + ld a, [hBGMapMode] + push af + xor a + ld [hBGMapMode], a + ld a, $1 + ld [hOAMUpdate], a + call $1ad2 + xor a + ld [hOAMUpdate], a + call DelayFrame + pop af + ld [hBGMapMode], a + pop af + ld [hOAMUpdate], a + ret +; 2e4e + +INCBIN "baserom.gbc", $2e4e, $2e6f - $2e4e BitTable1Func: ; 0x2e6f @@ -4515,7 +6656,21 @@ BitTableFunc: ; 0x2e76 ret ; 0x2ead -INCBIN "baserom.gbc", $2ead, $2ed3 - $2ead +INCBIN "baserom.gbc", $2ead, $2ec6 - $2ead + + +Function2ec6: ; 2ec6 + xor a + ret +; 2ec8 + +Function2ec8: ; 2ec8 + xor a + dec a + ret +; 2ecb + +INCBIN "baserom.gbc", $2ecb, $2ed3 - $2ecb Function2ed3: ; 0x2ed3 ; disables overworld sprite updating? @@ -4529,7 +6684,18 @@ Function2ed3: ; 0x2ed3 ret ; 0x2ee4 -INCBIN "baserom.gbc", $2ee4, $2ef9 - $2ee4 +Function2ee4: ; 2ee4 + ld a, $1 + ld [$c2ce], a + ld a, [VramState] + set 0, a + ld [VramState], a + ld a, $1 + ld [$ffde], a + ret +; 2ef6 + +INCBIN "baserom.gbc", $2ef6, $2ef9 - $2ef6 InitString: ; 0x2ef9 ; if the string pointed to by hl is empty (defined as "zero or more spaces @@ -4584,7 +6750,66 @@ CheckTossableItem: ; 2f46 ; 2f53 -INCBIN "baserom.gbc", $2f53, $2f8c - $2f53 +Function2f53: ; 2f53 + push hl + push de + push bc + ld a, [hROMBank] + push af + ld a, $3 + rst Bankswitch + + call $520d + pop bc + ld a, b + rst Bankswitch + + pop bc + pop de + pop hl + ret +; 2f66 + +Function2f66: ; 2f66 + push bc + ld a, [hROMBank] + push af + ld a, $3 + rst Bankswitch + + push hl + push de + call $51d5 + pop de + pop hl + pop bc + ld a, b + rst Bankswitch + + pop bc + ret +; 2f79 + +Function2f79: ; 2f79 + push hl + push de + push bc + ld a, [hROMBank] + push af + ld a, $3 + rst Bankswitch + + call $5244 + pop bc + ld a, b + rst Bankswitch + + pop bc + pop de + pop hl + ret +; 2f8c + RNG: ; 2f8c @@ -4844,7 +7069,19 @@ GetFarHalfword: ; 0x305d ret ; 0x306b -INCBIN "baserom.gbc", $306b, $30d6-$306b +Function306b: ; 306b + ld [hBuffer], a + ld a, [rSVBK] + push af + ld a, [hBuffer] + ld [rSVBK], a + call CopyBytes + pop af + ld [rSVBK], a + ret +; 307b + +INCBIN "baserom.gbc", $307b, $30d6 - $307b CopyName1: ; 30d6 ld hl, StringBuffer2 @@ -5085,7 +7322,54 @@ CopyDataUntil: ; 318c ret ; 0x3198 -INCBIN "baserom.gbc", $3198, $31db - $3198 +Function3198: ; 3198 + ld a, [hROMBank] + push af + ld a, $3 + rst Bankswitch + + call $44c7 + pop af + rst Bankswitch + + ret +; 31a4 + +INCBIN "baserom.gbc", $31a4, $31b0 - $31a4 + + +Function31b0: ; 31b0 + ld [hBuffer], a + ld a, [hROMBank] + push af + ld a, [hBuffer] + rst Bankswitch + + call PrintText + pop af + rst Bankswitch + + ret +; 31be + +Function31be: ; 31be + ld a, [hROMBank] + push af + ld a, [hli] + rst Bankswitch + + ld a, [hli] + ld h, [hl] + ld l, a + call JpHl + pop hl + ld a, h + rst Bankswitch + + ret +; 31cd + +INCBIN "baserom.gbc", $31cd, $31db - $31cd StringCmp: ; 31db ; Compare strings, c bytes in length, at de and hl. @@ -5154,7 +7438,188 @@ Function3200: ; 0x3200 ret ; 0x3218 -INCBIN "baserom.gbc", $3218, $32f9 - $3218 +INCBIN "baserom.gbc", $3218, $321c - $3218 + + +Function321c: ; 321c + ld a, [hCGB] + and a + jr z, .asm_322e + ld a, [$c2ce] + cp $0 + jr z, .asm_322e + ld a, $1 + ld [hBGMapMode], a + jr .asm_323d + +.asm_322e + ld a, $1 + ld [hBGMapMode], a + ld c, $4 + call DelayFrames + ret + + ld a, [hCGB] + and a + jr z, WaitBGMap + +.asm_323d + jr .asm_3246 + + ld a, $41 + ld hl, $4000 + rst FarCall + ret + +.asm_3246 + ld a, [hBGMapMode] + push af + xor a + ld [hBGMapMode], a + ld a, [$ffde] + push af + xor a + ld [$ffde], a +.asm_3252 + ld a, [rLY] + cp $7f + jr c, .asm_3252 ; 3256 $fa + di + ld a, $1 + ld [rVBK], a + ld hl, AttrMap + call $327b + ld a, $0 + ld [rVBK], a + ld hl, TileMap + call $327b +.asm_326d + ld a, [rLY] + cp $7f + jr c, .asm_326d ; 3271 $fa + ei + pop af + ld [$ffde], a + pop af + ld [hBGMapMode], a + ret +; 327b + +Function327b: ; 327b + ld [hSPBuffer], sp + ld sp, hl + ld a, [$ffd7] + ld h, a + ld l, $0 + ld a, $12 + ld [$ffd3], a + ld b, $2 + ld c, $41 +.asm_328c + pop de +.asm_328d + ld a, [$ff00+c] + and b + jr nz, .asm_328d + ld [hl], e + inc l + ld [hl], d + inc l + pop de +.asm_3296 + ld a, [$ff00+c] + and b + jr nz, .asm_3296 + ld [hl], e + inc l + ld [hl], d + inc l + pop de +.asm_329f + ld a, [$ff00+c] + and b + jr nz, .asm_329f + ld [hl], e + inc l + ld [hl], d + inc l + pop de +.asm_32a8 + ld a, [$ff00+c] + and b + jr nz, .asm_32a8 + ld [hl], e + inc l + ld [hl], d + inc l + pop de +.asm_32b1 + ld a, [$ff00+c] + and b + jr nz, .asm_32b1 + ld [hl], e + inc l + ld [hl], d + inc l + pop de +.asm_32ba + ld a, [$ff00+c] + and b + jr nz, .asm_32ba + ld [hl], e + inc l + ld [hl], d + inc l + pop de +.asm_32c3 + ld a, [$ff00+c] + and b + jr nz, .asm_32c3 + ld [hl], e + inc l + ld [hl], d + inc l + pop de +.asm_32cc + ld a, [$ff00+c] + and b + jr nz, .asm_32cc + ld [hl], e + inc l + ld [hl], d + inc l + pop de +.asm_32d5 + ld a, [$ff00+c] + and b + jr nz, .asm_32d5 + ld [hl], e + inc l + ld [hl], d + inc l + pop de +.asm_32de + ld a, [$ff00+c] + and b + jr nz, .asm_32de + ld [hl], e + inc l + ld [hl], d + inc l + ld de, $000c + add hl, de + ld a, [$ffd3] + dec a + ld [$ffd3], a + jr nz, .asm_328c + ld a, [hSPBuffer] + ld l, a + ld a, [$ffda] + ld h, a + ld sp, hl + ret +; 32f9 + Function32f9: ; 32f9 @@ -5642,7 +8107,69 @@ GetMoveName: ; 34f8 ; 350c -INCBIN "baserom.gbc", $350c, $3600 - $350c +Function350c: ; 350c + call $1c66 + ld a, [hROMBank] + push af + ld a, $9 + rst Bankswitch + + call $45af + call $3524 + call $45cb + pop af + rst Bankswitch + + ld a, [$cf73] + ret +; 3524 + +Function3524: ; 3524 + ld hl, VramState + bit 0, [hl] + jp nz, Function485 + jp Function32f9 +; 352f + +Function352f: ; 352f + ld a, [$cf82] + dec a + ld b, a + ld a, [$cf84] + sub b + ld d, a + ld a, [$cf83] + dec a + ld c, a + ld a, [$cf85] + sub c + ld e, a + push de + call $1d05 + pop bc + jp TextBox +; 354b + +Function354b: ; 354b + call DelayFrame + ld a, [$ffaa] + push af + ld a, $1 + ld [$ffaa], a + call Functiona57 + pop af + ld [$ffaa], a + ld a, [$ffa9] + and $f0 + ld c, a + ld a, [hJoyPressed] + and $f + or c + ld c, a + ret +; 3567 + +INCBIN "baserom.gbc", $3567, $3600 - $3567 CheckTrainerBattle2: ; 3600 @@ -5858,7 +8385,184 @@ FacingPlayerDistance: ; 36ad ; 36f5 -INCBIN "baserom.gbc", $36f5, $3856 - $36f5 +INCBIN "baserom.gbc", $36f5, $3741 - $36f5 + + +Function3741: ; 3741 + and a + jr z, .asm_374c + cp $fd + jr z, .asm_374e + cp $fc + jr c, .asm_374e + +.asm_374c + scf + ret + +.asm_374e + and a + ret +; 3750 + +Function3750: ; 3750 + push hl + push de + push bc + ld a, $60 + ld [hli], a + ld a, $61 + ld [hli], a + push hl + ld a, $62 +.asm_375c + ld [hli], a + dec d + jr nz, .asm_375c + ld a, $6b + add b + ld [hl], a + pop hl + ld a, e + and a + jr nz, .asm_376f + ld a, c + and a + jr z, .asm_3782 + ld e, $1 + +.asm_376f + ld a, e + sub $8 + jr c, .asm_377e + ld e, a + ld a, $6a + ld [hli], a + ld a, e + and a + jr z, .asm_3782 + jr .asm_376f + +.asm_377e + ld a, $62 + add e + ld [hl], a + +.asm_3782 + pop bc + pop de + pop hl + ret +; 3786 + + + +Function3786: ; 3786 + ld a, $1 + ld [$c2c6], a + ld a, [CurPartySpecies] + call $3741 + jr c, .asm_37ad + push hl + ld de, VTiles2 + ld a, $3c + call Predef + pop hl + xor a + ld [$ffad], a + ld bc, $0707 + ld a, $13 + call Predef + xor a + ld [$c2c6], a + ret + +.asm_37ad + xor a + ld [$c2c6], a + inc a + ld [CurPartySpecies], a + ret +; 37b6 + +INCBIN "baserom.gbc", $37b6, $37ce - $37b6 + + +Function37ce: ; 37ce + call $37d5 + call WaitSFX + ret +; 37d5 + +Function37d5: ; 37d5 + push af + xor a + ld [$c2bc], a + ld [CryTracks], a + pop af + call $37e2 + ret +; 37e2 + +Function37e2: ; 37e2 + push hl + push de + push bc + call $381e + jr c, .asm_37ef + ld e, c + ld d, b + call PlayCryHeader + +.asm_37ef + pop bc + pop de + pop hl + ret +; 37f3 + +INCBIN "baserom.gbc", $37f3, $381e - $37f3 + + +Function381e: ; 381e + and a + jr z, .asm_382b + cp $fc + jr nc, .asm_382b + dec a + ld c, a + ld b, $0 + and a + ret + +.asm_382b + scf + ret +; 382d + +Function382d: ; 382d + ld a, [TempMonLevel] + ld [hl], $6e + inc hl + ld c, $2 + cp $64 + jr c, .asm_3842 + dec hl + inc c + jr .asm_3842 + + ld [hl], $6e + inc hl + ld c, $3 + +.asm_3842 + ld [$d265], a + ld de, $d265 + ld b, $41 + jp $3198 +; 384d + +INCBIN "baserom.gbc", $384d, $3856 - $384d GetBaseData: ; 3856 @@ -6710,7 +9414,115 @@ VolumeOff: ; 3ca3 ret ; 3ca8 -INCBIN "baserom.gbc", $3ca8, $3dde - $3ca8 +INCBIN "baserom.gbc", $3ca8, $3cb4 - $3ca8 + + +Function3cb4: ; 3cb4 +.asm_3cb4 + and a + ret z + dec a + call CleanUpdateSound + jr .asm_3cb4 +; 3cbc + +INCBIN "baserom.gbc", $3cbc, $3cdf - $3cbc + + +Function3cdf: ; 3cdf + push hl + push de + push bc + push af + call $3d97 + ld a, [CurMusic] + cp e + jr z, .asm_3cfe + push de + ld de, $0000 + call StartMusic + call DelayFrame + pop de + ld a, e + ld [CurMusic], a + call StartMusic + +.asm_3cfe + pop af + pop bc + pop de + pop hl + ret +; 3d03 + +INCBIN "baserom.gbc", $3d03, $3d47 - $3d03 + + +Function3d47: ; 3d47 + push hl + push de + push bc + push af + ld de, $0000 + call StartMusic + call DelayFrame + ld a, [CurMusic] + ld e, a + ld d, $0 + call StartMusic + pop af + pop bc + pop de + pop hl + ret +; 3d62 + +Function3d62: ; 3d62 + ld a, [PlayerState] + cp $4 + jr z, .asm_3d7b + cp $8 + jr z, .asm_3d7b + ld a, [StatusFlags2] + bit 2, a + jr nz, .asm_3d80 +.asm_3d74 + and a + ret + + ld de, $0013 + scf + ret + +.asm_3d7b + ld de, $0021 + scf + ret + +.asm_3d80 + ld a, [MapGroup] + cp $a + jr nz, .asm_3d74 + ld a, [MapNumber] + cp $f + jr z, .asm_3d92 + cp $11 + jr nz, .asm_3d74 + +.asm_3d92 + ld de, $0058 + scf + ret +; 3d97 + +Function3d97: ; 3d97 + call $3d62 + ret c + call $2cbd + ret +; 3d9f + +INCBIN "baserom.gbc", $3d9f, $3dde - $3d9f CheckSFX: ; 3dde ; returns carry if sfx channels are active @@ -6757,7 +9569,77 @@ SFXChannelsOff: ; 3e21 ret ; 3e32 -INCBIN "baserom.gbc", $3e32, $3fb5 - $3e32 +INCBIN "baserom.gbc", $3e32, $3e80 - $3e32 + + +Function3e80: ; 3e80 + ld a, [hROMBank] + push af + ld a, $44 + ld [$c981], a + rst Bankswitch + + call $56c5 + pop bc + ld a, b + ld [$c981], a + rst Bankswitch + + ret +; 3e93 + + + +Function3e93: ; 3e93 + push af + push bc + push de + push hl + ld a, [$ffe9] + and a + jr z, .asm_3ed2 + xor a + ld [rTAC], a + ld a, [rIF] + and $1b + ld [rIF], a + ld a, [$c86a] + or a + jr z, .asm_3ed2 + ld a, [$c822] + bit 1, a + jr nz, .asm_3eca + ld a, [rSC] + and $80 + jr nz, .asm_3eca + ld a, [hROMBank] + push af + ld a, $44 + ld [$c981], a + rst Bankswitch + + call $58de + pop bc + ld a, b + ld [$c981], a + rst Bankswitch + + +.asm_3eca + ld a, [rTMA] + ld [rTIMA], a + ld a, $6 + ld [rTAC], a + +.asm_3ed2 + pop hl + pop de + pop bc + pop af + reti +; 3ed7 + +INCBIN "baserom.gbc", $3ed7, $3fb5 - $3ed7 @@ -11711,7 +14593,116 @@ Function642e: ; 642e jp Function620b ; 6454 -INCBIN "baserom.gbc", $6454, $669f - $6454 +Function6454: ; 6454 + call DelayFrame + ld a, [hOAMUpdate] + push af + ld a, $1 + ld [hOAMUpdate], a + ld a, [hBGMapMode] + push af + xor a + ld [hBGMapMode], a + call $6473 + pop af + ld [hBGMapMode], a + pop af + ld [hOAMUpdate], a + ld hl, VramState + set 6, [hl] + ret +; 6473 + +Function6473: ; 6473 + xor a + ld [hLCDStatCustom], a + ld [hBGMapMode], a + ld a, $90 + ld [$ffd2], a + call $2173 + ld a, $9c + call $64b9 + call $2e20 + ld a, $12 + ld hl, $5409 + rst FarCall + ld a, $2 + ld hl, $56a4 + rst FarCall + ld a, $1 + ld [hCGBPalUpdate], a + xor a + ld [hBGMapMode], a + ld [$ffd2], a + ld a, $1 + ld hl, $64db + rst FarCall + ld a, $98 + call $64b9 + xor a + ld [$d152], a + ld a, $98 + ld [$d153], a + xor a + ld [$ffcf], a + ld [$ffd0], a + call Function5958 + ret +; 64b9 + +Function64b9: ; 64b9 + ld [$ffd7], a + xor a + ld [hBGMapAddress], a + ret +; 64bf + +Function64bf: ; 64bf + ld a, [hOAMUpdate] + push af + ld a, $1 + ld [hOAMUpdate], a + call $64cd + pop af + ld [hOAMUpdate], a + ret +; 64cd + +Function64cd: ; 64cd + call Functione5f + ld a, $90 + ld [$ffd2], a + call $2e31 + call $0e51 + ret +; 64db + +Function64db: ; 64db + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + ld a, $60 + ld hl, $d000 + ld bc, VBlank5 + call ByteFill + ld a, $d0 + ld [rHDMA1], a + ld a, $0 + ld [rHDMA2], a + ld a, $18 + ld [rHDMA3], a + ld a, $0 + ld [rHDMA4], a + ld a, $3f + ld [hDMATransfer], a + call DelayFrame + pop af + ld [rSVBK], a + ret +; 6508 + +INCBIN "baserom.gbc", $6508, $669f - $6508 CheckNickErrors: ; 669f ; error-check monster nick before use @@ -12460,7 +15451,77 @@ Function7171: ; 7171 ret ; 718d -INCBIN "baserom.gbc", $718d, $7305 - $718d +INCBIN "baserom.gbc", $718d, $71c2 - $718d + + +Function71c2: ; 71c2 + ld a, [CurPartyMon] + inc a + ld e, a + ld d, $0 + ld hl, PartyCount + add hl, de + ld a, [hl] + cp $fd + ret z + push bc + ld hl, PartyMon1Happiness + ld bc, $0030 + ld a, [CurPartyMon] + call AddNTimes + pop bc + ld d, h + ld e, l + push de + ld a, [de] + cp $64 + ld e, $0 + jr c, .asm_71ef + inc e + cp $c8 + jr c, .asm_71ef + inc e + +.asm_71ef + dec c + ld b, $0 + ld hl, $7221 + add hl, bc + add hl, bc + add hl, bc + ld d, $0 + add hl, de + ld a, [hl] + cp $64 + pop de + ld a, [de] + jr nc, .asm_7209 + add [hl] + jr nc, .asm_720d + ld a, $ff + jr .asm_720d + +.asm_7209 + add [hl] + jr c, .asm_720d + xor a + +.asm_720d + ld [de], a + ld a, [IsInBattle] + and a + ret z + ld a, [CurPartyMon] + ld b, a + ld a, [$d0d8] + cp b + ret nz + ld a, [de] + ld [BattleMonHappiness], a + ret +; 7221 + +INCBIN "baserom.gbc", $7221, $7305 - $7221 SpecialGiveShuckle: ; 7305 @@ -12545,7 +15606,154 @@ INCBIN "baserom.gbc", $737e, $747b - $737e SECTION "bank2",DATA,BANK[$2] -INCBIN "baserom.gbc", $8000, $8286 - $8000 +Function8000: ; 8000 + call Function2ed3 + xor a + ld [hBGMapMode], a + call WhiteBGMap + call ClearSprites + ld hl, TileMap + ld bc, $0168 + ld a, $7f + call ByteFill + ld hl, AttrMap + ld bc, $0168 + ld a, $7 + call ByteFill + call Function3200 + call Function32f9 + ret +; 8029 + +INCBIN "baserom.gbc", $8029, $807e - $8029 + + +Function807e: ; 807e + push de + ld a, b + call GetMapObject + pop de + ld hl, $0003 + add hl, bc + ld [hl], d + ld hl, $0002 + add hl, bc + ld [hl], e + ret +; 808f + +INCBIN "baserom.gbc", $808f, $80a1 - $808f + + +Function80a1: ; 80a1 + ld a, b + call $18de + ret c + ld hl, $0010 + add hl, bc + ld d, [hl] + ld hl, $0011 + add hl, bc + ld e, [hl] + ld a, [hConnectionStripLength] + ld b, a + call $407e + and a + ret +; 80b8 + +INCBIN "baserom.gbc", $80b8, $80e7 - $80b8 + + +Function80e7: ; 80e7 + call $2707 + and a + ret nz + ld hl, $d4fe + ld a, $1 + ld de, $0028 +.asm_80f4 + ld [hConnectedMapWidth], a + ld a, [hl] + and a + jr z, .asm_8104 + add hl, de + ld a, [hConnectedMapWidth] + inc a + cp $d + jr nz, .asm_80f4 + scf + ret + +.asm_8104 + ld d, h + ld e, l + call $4116 + ld hl, VramState + bit 7, [hl] + ret z + ld hl, $0005 + add hl, de + set 5, [hl] + ret +; 8116 + +Function8116: ; 8116 + call $411d + call Function8286 + ret +; 811d + +Function811d: ; 811d + ld a, [hConnectedMapWidth] + ld hl, $0000 + add hl, bc + ld [hl], a + ld a, [hConnectionStripLength] + ld [$c2f0], a + ld hl, $0001 + add hl, bc + ld a, [hl] + ld [$c2f1], a + call $180e + ld [$c2f2], a + ld a, [hl] + call $17ff + ld [$c2f3], a + ld hl, $0008 + add hl, bc + ld a, [hl] + and $f0 + jr z, .asm_814e + swap a + and $7 + ld [$c2f3], a + +.asm_814e + ld hl, $0004 + add hl, bc + ld a, [hl] + ld [$c2f4], a + ld hl, $0009 + add hl, bc + ld a, [hl] + ld [$c2f5], a + ld hl, $0003 + add hl, bc + ld a, [hl] + ld [$c2f6], a + ld hl, $0002 + add hl, bc + ld a, [hl] + ld [$c2f7], a + ld hl, $0005 + add hl, bc + ld a, [hl] + ld [$c2f8], a + ret +; 8177 + +INCBIN "baserom.gbc", $8177, $8286 - $8177 Function8286: ; 8286 @@ -12641,7 +15849,253 @@ Function830d: ; 830d ret ; 831e -INCBIN "baserom.gbc", $831e, $854b - $831e +INCBIN "baserom.gbc", $831e, $839e - $831e + + +Function839e: ; 839e + push bc + ld a, c + call $18de + ld d, b + ld e, c + pop bc + ret c + ld a, b + call $18de + ret c + ld hl, $0010 + add hl, bc + ld a, [hl] + ld hl, $0011 + add hl, bc + ld c, [hl] + ld b, a + ld hl, $0010 + add hl, de + ld a, [hl] + cp b + jr z, .asm_83c7 + jr c, .asm_83c4 + inc b + jr .asm_83d5 + +.asm_83c4 + dec b + jr .asm_83d5 + +.asm_83c7 + ld hl, $0011 + add hl, de + ld a, [hl] + cp c + jr z, .asm_83d5 + jr c, .asm_83d4 + inc c + jr .asm_83d5 + +.asm_83d4 + dec c + +.asm_83d5 + ld hl, $0010 + add hl, de + ld [hl], b + ld a, b + ld hl, XCoord + sub [hl] + and $f + swap a + ld hl, $d14c + sub [hl] + ld hl, $0017 + add hl, de + ld [hl], a + ld hl, $0011 + add hl, de + ld [hl], c + ld a, c + ld hl, YCoord + sub [hl] + and $f + swap a + ld hl, $d14d + sub [hl] + ld hl, $0018 + add hl, de + ld [hl], a + ld a, [hConnectedMapWidth] + ld hl, $0020 + add hl, de + ld [hl], a + ld hl, $0003 + add hl, de + ld [hl], $1a + ld hl, $0009 + add hl, de + ld [hl], $0 + ret +; 8417 + +Function8417: ; 8417 + ld a, d + call GetMapObject + ld hl, $0000 + add hl, bc + ld a, [hl] + cp $d + jr nc, .asm_8437 + ld d, a + ld a, e + call GetMapObject + ld hl, $0000 + add hl, bc + ld a, [hl] + cp $d + jr nc, .asm_8437 + ld e, a + call $4439 + ret + +.asm_8437 + scf + ret +; 8439 + +Function8439: ; 8439 + ld a, d + call Function1ae5 + ld hl, $0010 + add hl, bc + ld a, [hl] + ld hl, $0011 + add hl, bc + ld c, [hl] + ld b, a + push bc + ld a, e + call Function1ae5 + ld hl, $0010 + add hl, bc + ld d, [hl] + ld hl, $0011 + add hl, bc + ld e, [hl] + pop bc + ld a, b + sub d + jr z, .asm_846c + jr nc, .asm_8460 + cpl + inc a + +.asm_8460 + ld h, a + ld a, c + sub e + jr z, .asm_847a + jr nc, .asm_8469 + cpl + inc a + +.asm_8469 + sub h + jr c, .asm_847a + +.asm_846c + ld a, c + cp e + jr z, .asm_8488 + jr c, .asm_8476 + ld d, $0 + and a + ret + +.asm_8476 + ld d, $1 + and a + ret + +.asm_847a + ld a, b + cp d + jr z, .asm_8488 + jr c, .asm_8484 + ld d, $3 + and a + ret + +.asm_8484 + ld d, $2 + and a + ret + +.asm_8488 + scf + ret +; 848a + +Function848a: ; 848a + call $449d + jr c, .asm_8497 + ld [$d4d1], a + xor a + ld [$d4d0], a + ret + +.asm_8497 + ld a, $ff + ld [$d4d0], a + ret +; 849d + +Function849d: ; 849d + ld a, [$d4cd] + call Function1ae5 + ld hl, $0010 + add hl, bc + ld d, [hl] + ld hl, $0011 + add hl, bc + ld e, [hl] + ld a, [$d4ce] + call Function1ae5 + ld hl, $0010 + add hl, bc + ld a, d + cp [hl] + jr z, .asm_84c5 + jr c, .asm_84c1 + and a + ld a, $f + ret + +.asm_84c1 + and a + ld a, $e + ret + +.asm_84c5 + ld hl, $0011 + add hl, bc + ld a, e + cp [hl] + jr z, .asm_84d7 + jr c, .asm_84d3 + and a + ld a, $c + ret + +.asm_84d3 + and a + ld a, $d + ret + +.asm_84d7 + scf + ret +; 84d9 + +INCBIN "baserom.gbc", $84d9, $854b - $84d9 GetPredefFn: ; 854b ; input: @@ -12787,7 +16241,18 @@ CheckShininess: ; 0x8a68 and a ; clear carry flag ret -INCBIN "baserom.gbc", $8a88, $8d55 - $8a88 +INCBIN "baserom.gbc", $8a88, $8ad1 - $8a88 + + +Function8ad1: ; 8ad1 + ld hl, $5c57 + call $5610 + call $571a + call $5699 + ret +; 8ade + +INCBIN "baserom.gbc", $8ade, $8d55 - $8ade Function8d55: ; 8d55 @@ -12796,7 +16261,87 @@ Function8d55: ; 8d55 ret ; 8d59 -INCBIN "baserom.gbc", $8d59, $9890 - $8d59 +INCBIN "baserom.gbc", $8d59, $9610 - $8d59 + + +Function9610: ; 9610 + ld de, $d000 + ld c, $4 +.asm_9615 + push bc + ld a, [hli] + push hl + call $5625 + call $5630 + pop hl + inc hl + pop bc + dec c + jr nz, .asm_9615 + ret +; 9625 + +Function9625: ; 9625 + ld l, a + ld h, $0 + add hl, hl + add hl, hl + add hl, hl + ld bc, $5df6 + add hl, bc + ret +; 9630 + +Function9630: ; 9630 + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld c, $8 +.asm_9639 + ld a, [hli] + ld [de], a + inc de + dec c + jr nz, .asm_9639 + pop af + ld [rSVBK], a + ret +; 9643 + +INCBIN "baserom.gbc", $9643, $9699 - $9643 + + +Function9699: ; 9699 + ld hl, AttrMap + ld bc, $0168 + xor a + call ByteFill + ret +; 96a4 + +Function96a4: ; 96a4 + ld hl, $d000 + ld de, $d080 + ld bc, $0080 + ld a, $5 + call $306b + ret +; 96b3 + +INCBIN "baserom.gbc", $96b3, $971a - $96b3 + + +Function971a: ; 971a + ld hl, $7681 + ld de, $d040 + ld bc, $0010 + ld a, $5 + call $306b + ret +; 9729 + +INCBIN "baserom.gbc", $9729, $9890 - $9729 Function9890: ; 9890 @@ -12939,7 +16484,37 @@ INCBIN "baserom.gbc", $b419, $b825 - $b419 SECTION "bank3",DATA,BANK[$3] -INCBIN "baserom.gbc", $c000, $29 +Functionc000: ; c000 + ld a, [TimeOfDay] + ld hl, $4012 + ld de, $0002 + call IsInArray + inc hl + ld c, [hl] + ret c + xor a + ld c, a + ret +; c012 + +INCBIN "baserom.gbc", $c012, $c01b - $c012 + + +Functionc01b: ; c01b + ld hl, SpecialsPointers + add hl, de + add hl, de + add hl, de + ld b, [hl] + inc hl + ld a, [hli] + ld h, [hl] + ld l, a + ld a, b + rst FarCall + ret +; c029 + SpecialsPointers: ; 0xc029 dbw BANK(Function97c28), Function97c28 @@ -13143,7 +16718,27 @@ ScriptReturnCarry: ; c3e2 ret ; c3ef -INCBIN "baserom.gbc", $c3ef, $c419 - $c3ef +INCBIN "baserom.gbc", $c3ef, $c403 - $c3ef + + +Functionc403: ; c403 + ld a, c + and a + jr nz, .asm_c410 + ld a, d + ld [$dfcc], a + ld a, e + ld [$dfcd], a + ret + +.asm_c410 + ld a, d + ld [$dc5a], a + ld a, e + ld [$dc5b], a + ret +; c419 + SpecialCheckPokerus: ; c419 ; Check if a monster in your party has Pokerus @@ -13237,7 +16832,189 @@ SpecialTrainerHouse: ; 0xc4b9 ld [ScriptVar], a jp CloseSRAM -INCBIN "baserom.gbc", $c4c7, $c5d2 - $c4c7 +Functionc4c7: ; c4c7 + push bc + bit 5, b + jr z, .asm_c4d9 + bit 7, b + jr nz, .asm_c4d4 + bit 6, b + jr z, .asm_c4d9 + +.asm_c4d4 + ld a, $f0 + ld [hli], a + res 5, b + +.asm_c4d9 + xor a + ld [hProduct], a + ld [hMultiplicand], a + ld [$ffb5], a + ld a, b + and $f + cp $1 + jr z, .asm_c501 + cp $2 + jr z, .asm_c4f8 + ld a, [de] + ld [hMultiplicand], a + inc de + ld a, [de] + ld [$ffb5], a + inc de + ld a, [de] + ld [$ffb6], a + jr .asm_c504 + +.asm_c4f8 + ld a, [de] + ld [$ffb5], a + inc de + ld a, [de] + ld [$ffb6], a + jr .asm_c504 + +.asm_c501 + ld a, [de] + ld [$ffb6], a + +.asm_c504 + push de + ld d, b + ld a, c + swap a + and $f + ld e, a + ld a, c + and $f + ld b, a + ld c, $0 + cp $2 + jr z, .asm_c57c + cp $3 + jr z, .asm_c56c + cp $4 + jr z, .asm_c55b + cp $5 + jr z, .asm_c54a + cp $6 + jr z, .asm_c538 + ld a, $f + ld [hMultiplier], a + ld a, $42 + ld [hMathBuffer], a + ld a, $40 + ld [$ffb9], a + call $45cb + call PrintNumber_AdvancePointer + +.asm_c538 + ld a, $1 + ld [hMultiplier], a + ld a, $86 + ld [hMathBuffer], a + ld a, $a0 + ld [$ffb9], a + call $45cb + call PrintNumber_AdvancePointer + +.asm_c54a + xor a + ld [hMultiplier], a + ld a, $27 + ld [hMathBuffer], a + ld a, $10 + ld [$ffb9], a + call $45cb + call PrintNumber_AdvancePointer + +.asm_c55b + xor a + ld [hMultiplier], a + ld a, $3 + ld [hMathBuffer], a + ld a, $e8 + ld [$ffb9], a + call $45cb + call PrintNumber_AdvancePointer + +.asm_c56c + xor a + ld [hMultiplier], a + xor a + ld [hMathBuffer], a + ld a, $64 + ld [$ffb9], a + call $45cb + call PrintNumber_AdvancePointer + +.asm_c57c + dec e + jr nz, .asm_c583 + ld a, $f6 + ld [hProduct], a + +.asm_c583 + ld c, $0 + ld a, [$ffb6] +.asm_c587 + cp $a + jr c, .asm_c590 + sub $a + inc c + jr .asm_c587 + +.asm_c590 + ld b, a + ld a, [hProduct] + or c + jr nz, .asm_c59b + call PrintNumber_PrintLeadingZero + jr .asm_c5ad + +.asm_c59b + call $45ba + push af + ld a, $f6 + add c + ld [hl], a + pop af + ld [hProduct], a + inc e + dec e + jr nz, .asm_c5ad + inc hl + ld [hl], $f2 + +.asm_c5ad + call PrintNumber_AdvancePointer + call $45ba + ld a, $f6 + add b + ld [hli], a + pop de + pop bc + ret +; c5ba + +Functionc5ba: ; c5ba + push af + ld a, [hProduct] + and a + jr nz, .asm_c5c9 + bit 5, d + jr z, .asm_c5c9 + ld a, $f0 + ld [hli], a + res 5, d + +.asm_c5c9 + pop af + ret +; c5cb + +INCBIN "baserom.gbc", $c5cb, $c5d2 - $c5cb PrintNumber_PrintDigit: ; c5d2 INCBIN "baserom.gbc", $c5d2, $c644 - $c5d2 @@ -13517,7 +17294,389 @@ AskSurfText: ; ca36 ; ca3b -INCBIN "baserom.gbc", $ca3b, $d407 - $ca3b +INCBIN "baserom.gbc", $ca3b, $d1d5 - $ca3b + + +Functiond1d5: ; d1d5 + call $527b + jp nz, $529c + push hl + call CheckItemPocket + pop de + ld a, [$d142] + dec a + ld hl, $51e9 + rst JumpTable + ret +; d1e9 + +INCBIN "baserom.gbc", $d1e9, $d1f1 - $d1e9 + + +Functiond1f1: ; d1f1 + ld h, d + ld l, e + jp $529c +; d1f6 + +Functiond1f6: ; d1f6 + ld h, d + ld l, e + jp $535a +; d1fb + +Functiond1fb: ; d1fb + ld hl, NumBalls + jp $529c +; d201 + +Functiond201: ; d201 + ld h, d + ld l, e + ld a, [CurItem] + ld c, a + call GetTMHMNumber + jp $53c4 +; d20d + +Functiond20d: ; d20d + call $527b + jr nz, .asm_d241 + push hl + call CheckItemPocket + pop de + ld a, [$d142] + dec a + ld hl, .data_d220 + rst JumpTable + ret + +.data_d220 + db $3f + db $52 + db $3a + db $52 + db $28 + db $52 + db $2e + db $52 + db $21 + db $d7 + db $d8 + db $c3 + db $ff + db $52 + db $62 + db $6b + db $fa + db $6 + db $d1 + db $4f + db $cd + db $7 + db $54 + db $c3 + db $d8 + db $53 + db $62 + db $6b + db $c3 + db $74 + db $53 + db $62 + db $6b + +.asm_d241 + jp $52ff +; d244 + +Functiond244: ; d244 + call $527b + jr nz, .asm_d278 + push hl + call CheckItemPocket + pop de + ld a, [$d142] + dec a + ld hl, .data_d257 + rst JumpTable + ret + +.data_d257 + db $76 + db $52 + db $71 + db $52 + db $5f + db $52 + db $65 + db $52 + db $21 + db $d7 + db $d8 + db $c3 + db $49 + db $53 + db $62 + db $6b + db $fa + db $6 + db $d1 + db $4f + db $cd + db $7 + db $54 + db $c3 + db $fb + db $53 + db $62 + db $6b + db $c3 + db $b1 + db $53 + db $62 + db $6b + +.asm_d278 + jp $5349 +; d27b + +Functiond27b: ; d27b + ld a, l + cp $92 + ret nz + ld a, h + cp $d8 + ret +; d283 + +Functiond283: ; d283 + ld c, $14 + ld a, e + cp $92 + jr nz, .asm_d28e + ld a, d + cp $d8 + ret z + +.asm_d28e + ld c, $32 + ld a, e + cp $f1 + jr nz, .asm_d299 + ld a, d + cp $d8 + ret z + +.asm_d299 + ld c, $c + ret +; d29c + +Functiond29c: ; d29c + ld d, h + ld e, l + inc hl + ld a, [CurItem] + ld c, a + ld b, $0 +.asm_d2a5 + ld a, [hli] + cp $ff + jr z, .asm_d2bd + cp c + jr nz, .asm_d2ba + ld a, $63 + sub [hl] + add b + ld b, a + ld a, [$d10c] + cp b + jr z, .asm_d2c6 + jr c, .asm_d2c6 + +.asm_d2ba + inc hl + jr .asm_d2a5 + +.asm_d2bd + call $5283 + ld a, [de] + cp c + jr c, .asm_d2c6 + and a + ret + +.asm_d2c6 + ld h, d + ld l, e + ld a, [CurItem] + ld c, a + ld a, [$d10c] + ld [$d10d], a +.asm_d2d2 + inc hl + ld a, [hli] + cp $ff + jr z, .asm_d2ef + cp c + jr nz, .asm_d2d2 + ld a, [$d10d] + add [hl] + cp $64 + jr nc, .asm_d2e6 + ld [hl], a + jr .asm_d2fd + +.asm_d2e6 + ld [hl], $63 + sub $63 + ld [$d10d], a + jr .asm_d2d2 + +.asm_d2ef + dec hl + ld a, [CurItem] + ld [hli], a + ld a, [$d10d] + ld [hli], a + ld [hl], $ff + ld h, d + ld l, e + inc [hl] + +.asm_d2fd + scf + ret +; d2ff + +Functiond2ff: ; d2ff + ld d, h + ld e, l + ld a, [hli] + ld c, a + ld a, [$d107] + cp c + jr nc, .asm_d318 + ld c, a + ld b, $0 + add hl, bc + add hl, bc + ld a, [CurItem] + cp [hl] + inc hl + jr z, .asm_d327 + ld h, d + ld l, e + inc hl + +.asm_d318 + ld a, [CurItem] + ld b, a +.asm_d31c + ld a, [hli] + cp b + jr z, .asm_d327 + cp $ff + jr z, .asm_d347 + inc hl + jr .asm_d31c + +.asm_d327 + ld a, [$d10c] + ld b, a + ld a, [hl] + sub b + jr c, .asm_d347 + ld [hl], a + ld [$d10d], a + and a + jr nz, .asm_d345 + dec hl + ld b, h + ld c, l + inc hl + inc hl +.asm_d33b + ld a, [hli] + ld [bc], a + inc bc + cp $ff + jr nz, .asm_d33b + ld h, d + ld l, e + dec [hl] + +.asm_d345 + scf + ret + +.asm_d347 + and a + ret +; d349 + +Functiond349: ; d349 + ld a, [CurItem] + ld c, a +.asm_d34d + inc hl + ld a, [hli] + cp $ff + jr z, .asm_d358 + cp c + jr nz, .asm_d34d + scf + ret + +.asm_d358 + and a + ret +; d35a + +Functiond35a: ; d35a + ld hl, NumKeyItems + ld a, [hli] + cp $19 + jr nc, .asm_d372 + ld c, a + ld b, $0 + add hl, bc + ld a, [CurItem] + ld [hli], a + ld [hl], $ff + ld hl, NumKeyItems + inc [hl] + scf + ret + +.asm_d372 + and a + ret +; d374 + +INCBIN "baserom.gbc", $d374, $d3c4 - $d374 + + +Functiond3c4: ; d3c4 + dec c + ld b, $0 + ld hl, TMsHMs + add hl, bc + ld a, [$d10c] + add [hl] + cp $64 + jr nc, .asm_d3d6 + ld [hl], a + scf + ret + +.asm_d3d6 + and a + ret +; d3d8 + +INCBIN "baserom.gbc", $d3d8, $d407 - $d3d8 GetTMHMNumber: ; d407 @@ -13647,2443 +17806,5166 @@ Function0xd47f: ; d47f ; d486 -INCBIN "baserom.gbc", $d486, $e58b - $d486 - -ClearPCItemScreen: ; e58b - call Function2ed3 - xor a - ld [hBGMapMode], a - call WhiteBGMap - call ClearSprites - ld hl, TileMap - ld bc, 18 * 20 - ld a, " " - call ByteFill - hlcoord 0,0 - ld bc, $0a12 - call TextBox - hlcoord 0,12 - ld bc, $0412 - call TextBox - call Function3200 - call Function32f9 ; load regular palettes? +Functiond486: ; d486 + push hl + push bc + ld a, $0 + call GetItemAttr + ld e, a + ld a, $1 + call GetItemAttr + ld d, a + pop bc + pop hl ret -; 0xe5bb +; d497 -INCBIN "baserom.gbc", $e5bb, $e722 - $e5bb +INCBIN "baserom.gbc", $d497, $d88c - $d497 -_DoItemEffect: ; e722 - ld a, [CurItem] +Functiond88c: ; d88c + ld de, PartyCount + ld a, [MonType] + and $f + jr z, .asm_d899 + ld de, OTPartyCount + +.asm_d899 + ld a, [de] + inc a + cp $7 + ret nc + ld [de], a + ld a, [de] + ld [$ffae], a + add e + ld e, a + jr nc, .asm_d8a7 + inc d + +.asm_d8a7 + ld a, [CurPartySpecies] + ld [de], a + inc de + ld a, $ff + ld [de], a + ld hl, PartyMon1OT + ld a, [MonType] + and $f + jr z, .asm_d8bc + ld hl, OTPartyMon1OT + +.asm_d8bc + ld a, [$ffae] + dec a + call SkipNames + ld d, h + ld e, l + ld hl, PlayerName + ld bc, $000b + call CopyBytes + ld a, [MonType] + and a + jr nz, .asm_d8f0 + ld a, [CurPartySpecies] ld [$d265], a - call GetItemName - call CopyName1 - ld a, 1 - ld [$d0ec], a - ld a, [CurItem] + call GetPokemonName + ld hl, PartyMon1Nickname + ld a, [$ffae] dec a - ld hl, ItemEffects - rst JumpTable - ret -; e73c + call SkipNames + ld d, h + ld e, l + ld hl, StringBuffer1 + ld bc, $000b + call CopyBytes +.asm_d8f0 + ld hl, PartyMon1Species + ld a, [MonType] + and $f + jr z, .asm_d8fd + ld hl, OTPartyMon1Species -ItemEffects: ; e73c - dw MasterBall - dw UltraBall - dw Brightpowder - dw GreatBall - dw PokeBall - dw Item06 - dw Bicycle - dw MoonStone - dw Antidote - dw BurnHeal - dw IceHeal - dw Awakening - dw ParlyzHeal - dw FullRestore - dw MaxPotion - dw HyperPotion - dw SuperPotion - dw Potion - dw EscapeRope - dw Repel - dw MaxElixer - dw FireStone - dw Thunderstone - dw WaterStone - dw Item19 - dw HpUp - dw Protein - dw Iron - dw Carbos - dw LuckyPunch - dw Calcium - dw RareCandy - dw XAccuracy - dw LeafStone - dw MetalPowder - dw Nugget - dw PokeDoll - dw FullHeal - dw Revive - dw MaxRevive - dw GuardSpec - dw SuperRepel - dw MaxRepel - dw DireHit - dw Item2D - dw FreshWater - dw SodaPop - dw Lemonade - dw XAttack - dw Item32 - dw XDefend - dw XSpeed - dw XSpecial - dw CoinCase - dw Itemfinder - dw Item38 - dw ExpShare - dw OldRod - dw GoodRod - dw SilverLeaf - dw SuperRod - dw PpUp - dw Ether - dw MaxEther - dw Elixer - dw RedScale - dw Secretpotion - dw SSTicket - dw MysteryEgg - dw ClearBell - dw SilverWing - dw MoomooMilk - dw QuickClaw - dw Psncureberry - dw GoldLeaf - dw SoftSand - dw SharpBeak - dw Przcureberry - dw BurntBerry - dw IceBerry - dw PoisonBarb - dw KingsRock - dw BitterBerry - dw MintBerry - dw RedApricorn - dw Tinymushroom - dw BigMushroom - dw Silverpowder - dw BluApricorn - dw Item5A - dw AmuletCoin - dw YlwApricorn - dw GrnApricorn - dw CleanseTag - dw MysticWater - dw Twistedspoon - dw WhtApricorn - dw Blackbelt - dw BlkApricorn - dw Item64 - dw PnkApricorn - dw Blackglasses - dw Slowpoketail - dw PinkBow - dw Stick - dw SmokeBall - dw Nevermeltice - dw Magnet - dw Miracleberry - dw Pearl - dw BigPearl - dw Everstone - dw SpellTag - dw Ragecandybar - dw GsBall - dw BlueCard - dw MiracleSeed - dw ThickClub - dw FocusBand - dw Item78 - dw Energypowder - dw EnergyRoot - dw HealPowder - dw RevivalHerb - dw HardStone - dw LuckyEgg - dw CardKey - dw MachinePart - dw EggTicket - dw LostItem - dw Stardust - dw StarPiece - dw BasementKey - dw Pass - dw Item87 - dw Item88 - dw Item89 - dw Charcoal - dw BerryJuice - dw ScopeLens - dw Item8D - dw Item8E - dw MetalCoat - dw DragonFang - dw Item91 - dw Leftovers - dw Item93 - dw Item94 - dw Item95 - dw Mysteryberry - dw DragonScale - dw BerserkGene - dw Item99 - dw Item9A - dw Item9B - dw SacredAsh - dw HeavyBall - dw FlowerMail - dw LevelBall - dw LureBall - dw FastBall - dw ItemA2 - dw LightBall - dw FriendBall - dw MoonBall - dw LoveBall - dw NormalBox - dw GorgeousBox - dw SunStone - dw PolkadotBow - dw ItemAB - dw UpGrade - dw Berry - dw GoldBerry - dw Squirtbottle - dw ItemB0 - dw ParkBall - dw RainbowWing - dw ItemB3 -; e8a2 - -INCLUDE "items/item_effects.asm" +.asm_d8fd + ld a, [$ffae] + dec a + ld bc, $0030 + call AddNTimes + ld e, l + ld d, h + push hl + ld a, [CurPartySpecies] + ld [CurSpecies], a + call GetBaseData + ld a, [BaseDexNo] + ld [de], a + inc de + ld a, [IsInBattle] + and a + ld a, $0 + jr z, .asm_d922 + ld a, [EnemyMonItem] +.asm_d922 + ld [de], a + inc de + push de + ld h, d + ld l, e + ld a, [IsInBattle] + and a + jr z, .asm_d943 + ld a, [MonType] + and a + jr nz, .asm_d943 + ld de, EnemyMonMove1 + 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] + ld [hl], a + jr .asm_d950 -INCBIN "baserom.gbc", $f780, $fa0b - $f780 +.asm_d943 + xor a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld [MagikarpLength], a + ld a, $1b + call Predef +.asm_d950 + pop de + inc de + inc de + inc de + inc de + ld a, [PlayerID] + ld [de], a + inc de + ld a, [$d47c] + ld [de], a + inc de + push de + ld a, [CurPartyLevel] + ld d, a + ld hl, $4e47 + ld a, $14 + rst FarCall + pop de + ld a, [hMultiplicand] + ld [de], a + inc de + ld a, [$ffb5] + ld [de], a + inc de + ld a, [$ffb6] + ld [de], a + inc de + xor a + ld b, $a +.asm_d97a + ld [de], a + inc de + dec b + jr nz, .asm_d97a + pop hl + push hl + ld a, [MonType] + and $f + jr z, .asm_d992 + push hl + callba GetTrainerDVs + pop hl + jr .asm_d9b5 -SECTION "bank4",DATA,BANK[$4] +.asm_d992 + ld a, [CurPartySpecies] + ld [$d265], a + dec a + push de + call CheckSeenMon + ld a, [$d265] + dec a + call SetSeenAndCaughtMon + pop de + pop hl + push hl + ld a, [IsInBattle] + and a + jr nz, .asm_d9f3 + call RNG + ld b, a + call RNG + ld c, a -INCBIN "baserom.gbc", $10000, $10b16 - $10000 +.asm_d9b5 + ld a, b + ld [de], a + inc de + ld a, c + ld [de], a + inc de + push hl + push de + inc hl + inc hl + call $5a6d + pop de + pop hl + inc de + inc de + inc de + inc de + ld a, $46 + ld [de], a + inc de + xor a + ld [de], a + inc de + ld [de], a + inc de + ld [de], a + inc de + ld a, [CurPartyLevel] + ld [de], a + inc de + xor a + ld [de], a + inc de + ld [de], a + inc de + ld bc, $000a + add hl, bc + ld a, $1 + ld c, a + ld b, $0 + call $617b + ld a, [$ffb5] + ld [de], a + inc de + ld a, [$ffb6] + ld [de], a + inc de + jr .asm_da29 -PackGFX: -INCBIN "gfx/misc/pack.2bpp" +.asm_d9f3 + ld a, [EnemyMonAtkDefDV] + ld [de], a + inc de + ld a, [EnemyMonSpdSpclDV] + ld [de], a + inc de + push hl + ld hl, EnemyMonPPMove1 + ld b, $4 +.asm_da03 + ld a, [hli] + ld [de], a + inc de + dec b + jr nz, .asm_da03 + pop hl + ld a, $46 + ld [de], a + inc de + xor a + ld [de], a + inc de + ld [de], a + inc de + ld [de], a + inc de + ld a, [CurPartyLevel] + ld [de], a + inc de + ld hl, EnemyMonStatus + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + inc de -INCBIN "baserom.gbc", $113d6, $1167a - $113d6 +.asm_da29 + ld a, [IsInBattle] + dec a + jr nz, .asm_da3b + ld hl, EnemyMonMaxHPHi + ld bc, $000c + call CopyBytes + pop hl + jr .asm_da45 -TechnicalMachines: ; 0x1167a - db DYNAMICPUNCH - db HEADBUTT - db CURSE - db ROLLOUT - db ROAR - db TOXIC - db ZAP_CANNON - db ROCK_SMASH - db PSYCH_UP - db HIDDEN_POWER - db SUNNY_DAY - db SWEET_SCENT - db SNORE - db BLIZZARD - db HYPER_BEAM - db ICY_WIND - db PROTECT - db RAIN_DANCE - db GIGA_DRAIN - db ENDURE - db FRUSTRATION - db SOLARBEAM - db IRON_TAIL - db DRAGONBREATH - db THUNDER - db EARTHQUAKE - db RETURN - db DIG - db PSYCHIC_M - db SHADOW_BALL - db MUD_SLAP - db DOUBLE_TEAM - db ICE_PUNCH - db SWAGGER - db SLEEP_TALK - db SLUDGE_BOMB - db SANDSTORM - db FIRE_BLAST - db SWIFT - db DEFENSE_CURL - db THUNDERPUNCH - db DREAM_EATER - db DETECT - db REST - db ATTRACT - db THIEF - db STEEL_WING - db FIRE_PUNCH - db FURY_CUTTER - db NIGHTMARE - db CUT - db FLY - db SURF - db STRENGTH - db FLASH - db WHIRLPOOL - db WATERFALL +.asm_da3b + pop hl + ld bc, $000a + add hl, bc + ld b, $0 + call $6167 -INCBIN "baserom.gbc", $116b3, $116b7 - $116b3 +.asm_da45 + ld a, [MonType] + and $f + jr nz, .asm_da6b + ld a, [CurPartySpecies] + cp $c9 + jr nz, .asm_da6b + ld hl, PartyMon1DVs + ld a, [PartyCount] + dec a + ld bc, $0030 + call AddNTimes + ld a, $2d + call Predef + ld hl, $7a18 + ld a, $3e + rst FarCall -Function116b7: ; 0x116b7 - call Function2ed3 - call $56c1 - call Function2b74 +.asm_da6b + scf ret -; 0x116c1 - -INCBIN "baserom.gbc", $116c1, $11ce7 - $116c1 - -NameInputLower: - db "a b c d e f g h i" - db "j k l m n o p q r" - db "s t u v w x y z " - db "× ( ) : ; [ ] ", $e1, " ", $e2 - db "UPPER DEL END " -BoxNameInputLower: - db "a b c d e f g h i" - db "j k l m n o p q r" - db "s t u v w x y z " - db "é 'd 'l 'm 'r 's 't 'v 0" - db "1 2 3 4 5 6 7 8 9" - db "UPPER DEL END " -NameInputUpper: - db "A B C D E F G H I" - db "J K L M N O P Q R" - db "S T U V W X Y Z " - db "- ? ! / . , " - db "lower DEL END " -BoxNameInputUpper: - db "A B C D E F G H I" - db "J K L M N O P Q R" - db "S T U V W X Y Z " - db "× ( ) : ; [ ] ", $e1, " ", $e2 - db "- ? ! ♂ ♀ / . , &" - db "lower DEL END " +; da6d +Functionda6d: ; da6d + push bc + ld b, $4 +.asm_da70 + ld a, [hli] + and a + jr z, .asm_da8f + dec a + push hl + push de + push bc + ld hl, $5afb + ld bc, $0007 + call AddNTimes + ld de, StringBuffer1 + ld a, $10 + call FarCopyBytes + pop bc + pop de + pop hl + ld a, [$d078] -INCBIN "baserom.gbc", $11e5d, $12513 - $11e5d +.asm_da8f + ld [de], a + inc de + dec b + jr nz, .asm_da70 + pop bc + ret +; da96 +INCBIN "baserom.gbc", $da96, $dcb6 - $da96 -HalveMoney: ; 12513 -; Empty function... - ld a, $41 - ld hl, $60c7 +Functiondcb6: ; dcb6 + ld a, b + ld hl, $ad26 + ld bc, $0020 + call AddNTimes + ld b, h + ld c, l + ld hl, $0017 + add hl, bc + push hl + push bc + ld de, TempMonPP + ld bc, $0004 + call CopyBytes + pop bc + ld hl, $0002 + add hl, bc + push hl + ld de, TempMonMove1 + ld bc, $0004 + call CopyBytes + pop hl + pop de + ld a, [$cfa9] + push af + ld a, [MonType] + push af + ld b, $0 +.asm_dcec + ld a, [hli] + and a + jr z, .asm_dd18 + ld [TempMonMove1], a + ld a, $2 + ld [MonType], a + ld a, b + ld [$cfa9], a + push bc + push hl + push de + ld a, $3 + ld hl, $78ec rst FarCall + pop de + pop hl + ld a, [$d265] + ld b, a + ld a, [de] + and $c0 + add b + ld [de], a + pop bc + inc de + inc b + ld a, b + cp $4 + jr c, .asm_dcec -; Halve the player's money. - ld hl, Money - ld a, [hl] - srl a - ld [hli], a - ld a, [hl] - rra - ld [hli], a - ld a, [hl] - rra - ld [hl], a +.asm_dd18 + pop af + ld [MonType], a + pop af + ld [$cfa9], a ret -; 12527 - - -INCBIN "baserom.gbc", $12527, $125cd - $12527 +; dd21 +INCBIN "baserom.gbc", $dd21, $de6e - $dd21 -StartMenu: ; 125cd - - call Function1fbf - - ld de, SFX_MENU - call StartSFX +Functionde6e: ; de6e ld a, $1 - ld hl, $6454 + call GetSRAMBank + ld de, $ad10 + ld a, [de] + cp $14 + jp nc, $5f42 + inc a + ld [de], a + ld a, [CurPartySpecies] + ld [CurSpecies], a + ld c, a +.asm_de85 + inc de + ld a, [de] + ld b, a + ld a, c + ld c, b + ld [de], a + inc a + jr nz, .asm_de85 + call GetBaseData + call $5f47 + ld hl, PlayerName + ld de, $afa6 + ld bc, $000b + call CopyBytes + ld a, [CurPartySpecies] + ld [$d265], a + call GetPokemonName + ld de, $b082 + ld hl, StringBuffer1 + ld bc, $000b + call CopyBytes + ld hl, EnemyMonSpecies + ld de, $ad26 + ld bc, $0006 + call CopyBytes + ld hl, PlayerID + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + inc de + push de + ld a, [CurPartyLevel] + ld d, a + ld hl, $4e47 + ld a, $14 + rst FarCall + pop de + ld a, [hMultiplicand] + ld [de], a + inc de + ld a, [$ffb5] + ld [de], a + inc de + ld a, [$ffb6] + ld [de], a + inc de + xor a + ld b, $a +.asm_dee5 + ld [de], a + inc de + dec b + jr nz, .asm_dee5 + ld hl, EnemyMonAtkDefDV + ld b, $6 +.asm_deef + ld a, [hli] + ld [de], a + inc de + dec b + jr nz, .asm_deef + ld a, $46 + ld [de], a + inc de + xor a + ld [de], a + inc de + ld [de], a + inc de + ld [de], a + inc de + ld a, [CurPartyLevel] + ld [de], a + ld a, [CurPartySpecies] + dec a + call SetSeenAndCaughtMon + ld a, [CurPartySpecies] + cp $c9 + jr nz, .asm_df20 + ld hl, $ad3b + ld a, $2d + call Predef + ld hl, $7a18 + ld a, $3e rst FarCall - ld hl, StatusFlags2 - bit 2, [hl] ; bug catching contest - ld hl, .MenuDataHeader - jr z, .GotMenuData - ld hl, .ContestMenuDataHeader -.GotMenuData +.asm_df20 + ld hl, $ad28 + ld de, TempMonMove1 + ld bc, $0004 + call CopyBytes + ld hl, $ad3d + ld de, TempMonPP + ld bc, $0004 + call CopyBytes + ld b, $0 + call $5cb6 + call CloseSRAM + scf + ret +; df42 - call Function1d35 - call .SetUpMenuItems - ld a, [$d0d2] - ld [$cf88], a - call .DrawMenuAccount_ - call MenuFunc_1e7f - call .DrawBugContestStatusBox - call $2e31 - call $2e20 - ld a, $1 - ld hl, $64bf - rst $8 - call .DrawBugContestStatus - call Function485 - jr .Select +Functiondf42: ; df42 + call CloseSRAM + and a + ret +; df47 -.Reopen - call $1ad2 - call Function485 - call .SetUpMenuItems - ld a, [$d0d2] - ld [$cf88], a +Functiondf47: ; df47 + ld hl, $afa6 + ld bc, $000b + call $5f5f + ld hl, $b082 + ld bc, $000b + call $5f5f + ld hl, $ad26 + ld bc, $0020 + ld a, [$ad10] + cp $2 + ret c + push hl + call AddNTimes + dec hl + ld e, l + ld d, h + pop hl + ld a, [$ad10] + dec a + call AddNTimes + dec hl + push hl + ld a, [$ad10] + dec a + ld hl, $0000 + call AddNTimes + ld c, l + ld b, h + pop hl +.asm_df83 + ld a, [hld] + ld [de], a + dec de + dec bc + ld a, c + or b + jr nz, .asm_df83 + ret +; df8c -.Select - call .GetInput - jr c, .Exit - call .DrawMenuAccount - ld a, [$cf88] - ld [$d0d2], a - call PlayClickSFX - call $1bee - call .OpenMenu +Functiondf8c: ; df8c + ld a, [CurPartySpecies] + push af + ld hl, $6581 + ld a, $10 + rst FarCall + ld hl, $6581 + ld a, $10 + rst FarCall + ld a, [CurPartySpecies] + dec a + push af + call CheckSeenMon + pop af + push bc + call CheckCaughtMon + push bc + call $588c + pop bc + ld a, c + and a + jr nz, .asm_dfc3 + ld a, [CurPartySpecies] + dec a + ld c, a + ld d, $0 + ld hl, PokedexSeen + ld b, $0 + ld a, $3 + call Predef -; Menu items have different return functions. -; For example, saving exits the menu. - ld hl, .MenuReturns - ld e, a - ld d, 0 - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] - -.MenuReturns - dw .Reopen - dw .Exit - dw .ReturnTwo - dw .ReturnThree - dw .ReturnFour - dw .ReturnEnd - dw .ReturnRedraw +.asm_dfc3 + pop bc + ld a, c + and a + jr nz, .asm_dfd9 + ld a, [CurPartySpecies] + dec a + ld c, a + ld d, $0 + ld hl, PokedexCaught + ld b, $0 + ld a, $3 + call Predef -.Exit - ld a, [hOAMUpdate] - push af - ld a, 1 - ld [hOAMUpdate], a - call Functione5f +.asm_dfd9 pop af - ld [hOAMUpdate], a -.ReturnEnd - call Function1c07 -.ReturnEnd2 - call $2dcf - call Function485 - ret + ld [CurPartySpecies], a + ld a, [PartyCount] + dec a + ld bc, $0030 + ld hl, PartyMon1Species + call AddNTimes + ld a, [CurPartySpecies] + ld [hl], a + ld hl, PartyCount + ld a, [hl] + ld b, $0 + ld c, a + add hl, bc + ld a, $fd + ld [hl], a + ld a, [PartyCount] + dec a + ld hl, PartyMon1Nickname + call SkipNames + ld de, $6035 + call CopyName2 + ld a, [PartyCount] + dec a + ld hl, PartyMon1Happiness + ld bc, $0030 + call AddNTimes + ld a, [$c2cc] + bit 1, a + ld a, $1 + jr nz, .asm_e022 + ld a, [BaseEggSteps] -.GetInput -; Return carry on exit, and no-carry on selection. +.asm_e022 + ld [hl], a + ld a, [PartyCount] + dec a + ld hl, PartyMon1CurHP + ld bc, $0030 + call AddNTimes xor a - ld [hBGMapMode], a - call .DrawMenuAccount - call SetUpMenu - ld a, $ff - ld [MenuSelection], a -.loop - call .PrintMenuAccount - call $1f1a - ld a, [$cf73] - cp BUTTON_B - jr z, .b - cp BUTTON_A - jr z, .a - jr .loop -.a - call PlayClickSFX + ld [hli], a + ld [hl], a and a ret -.b - scf - ret -; 12691 +; e035 -.ReturnFour ; 12691 - call Function1c07 - ld a, $80 - ld [$ffa0], a - ret -; 12699 +INCBIN "baserom.gbc", $e035, $e039 - $e035 -.ReturnThree ; 12699 - call Function1c07 - ld a, $80 - ld [$ffa0], a - jr .ReturnEnd2 -; 126a2 -.ReturnTwo ; 126a2 - call Function1c07 - ld hl, $d0e9 - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [$d0e8] - rst FarCall - jr .ReturnEnd2 -; 126b1 +Functione039: ; e039 + ld hl, PartyCount + ld a, [$d10b] + and a + jr z, .asm_e04a + ld a, $1 + call GetSRAMBank + ld hl, $ad10 -.ReturnRedraw ; 126b1 - call .Clear - jp .Reopen -; 126b7 +.asm_e04a + ld a, [hl] + dec a + ld [hli], a + ld a, [CurPartyMon] + ld c, a + ld b, $0 + add hl, bc + ld e, l + ld d, h + inc de +.asm_e057 + ld a, [de] + inc de + ld [hli], a + inc a + jr nz, .asm_e057 + ld hl, PartyMon1OT + ld d, $5 + ld a, [$d10b] + and a + jr z, .asm_e06d + ld hl, $afa6 + ld d, $13 -.Clear ; 126b7 - call WhiteBGMap - call $1d7d - call $2bae - call .DrawMenuAccount_ - call MenuFunc_1e7f - call .DrawBugContestStatus - call $1ad2 - call $0d90 - call $2b5c - ret -; 126d3 +.asm_e06d + ld a, [CurPartyMon] + call SkipNames + ld a, [CurPartyMon] + cp d + jr nz, .asm_e07e + ld [hl], $ff + jp $60f0 +.asm_e07e + ld d, h + ld e, l + ld bc, $000b + add hl, bc + ld bc, PartyMon1Nickname + ld a, [$d10b] + and a + jr z, .asm_e090 + ld bc, $b082 -.MenuDataHeader - db $40 ; tile backup - db 0, 10 ; start coords - db 17, 19 ; end coords - dw .MenuData - db 1 ; default selection +.asm_e090 + call CopyDataUntil + ld hl, PartyMon1Species + ld bc, $0030 + ld a, [$d10b] + and a + jr z, .asm_e0a5 + ld hl, $ad26 + ld bc, $0020 -.ContestMenuDataHeader - db $40 ; tile backup - db 2, 10 ; start coords - db 17, 19 ; end coords - dw .MenuData - db 1 ; default selection +.asm_e0a5 + ld a, [CurPartyMon] + call AddNTimes + ld d, h + ld e, l + ld a, [$d10b] + and a + jr z, .asm_e0bc + ld bc, $0020 + add hl, bc + ld bc, $afa6 + jr .asm_e0c3 -.MenuData - db %10101000 ; x padding, wrap around, start can close - dn 0, 0 ; rows, columns - dw MenuItemsList - dw .MenuString - dw .Items +.asm_e0bc + ld bc, $0030 + add hl, bc + ld bc, PartyMon1OT -.Items - dw StartMenu_Pokedex, .PokedexString, .PokedexDesc - dw StartMenu_Pokemon, .PartyString, .PartyDesc - dw StartMenu_Pack, .PackString, .PackDesc - dw StartMenu_Status, .StatusString, .StatusDesc - dw StartMenu_Save, .SaveString, .SaveDesc - dw StartMenu_Option, .OptionString, .OptionDesc - dw StartMenu_Exit, .ExitString, .ExitDesc - dw StartMenu_Pokegear, .PokegearString, .PokegearDesc - dw StartMenu_Quit, .QuitString, .QuitDesc +.asm_e0c3 + call CopyDataUntil + ld hl, PartyMon1Nickname + ld a, [$d10b] + and a + jr z, .asm_e0d2 + ld hl, $b082 -.PokedexString db "#DEX@" -.PartyString db "#MON@" -.PackString db "PACK@" -.StatusString db $52, "@" -.SaveString db "SAVE@" -.OptionString db "OPTION@" -.ExitString db "EXIT@" -.PokegearString db $24, "GEAR@" -.QuitString db "QUIT@" +.asm_e0d2 + ld bc, $000b + ld a, [CurPartyMon] + call AddNTimes + ld d, h + ld e, l + ld bc, $000b + add hl, bc + ld bc, $de83 + ld a, [$d10b] + and a + jr z, .asm_e0ed + ld bc, $b15e -.PokedexDesc db "#MON", $4e, "database@" -.PartyDesc db "Party ", $4a, $4e, "status@" -.PackDesc db "Contains", $4e, "items@" -.PokegearDesc db "Trainer's", $4e, "key device@" -.StatusDesc db "Your own", $4e, "status@" -.SaveDesc db "Save your", $4e, "progress@" -.OptionDesc db "Change", $4e, "settings@" -.ExitDesc db "Close this", $4e, "menu@" -.QuitDesc db "Quit and", $4e, "be judged.@" +.asm_e0ed + call CopyDataUntil + ld a, [$d10b] + and a + jp nz, CloseSRAM + ld a, [InLinkBattle] + and a + ret nz + ld a, $0 + call GetSRAMBank + ld hl, PartyCount + ld a, [CurPartyMon] + cp [hl] + jr z, .asm_e131 + ld hl, $a600 + ld bc, $002f + call AddNTimes + push hl + add hl, bc + pop de + ld a, [CurPartyMon] + ld b, a +.asm_e11a + push bc + push hl + ld bc, $002f + call CopyBytes + pop hl + push hl + ld bc, $002f + add hl, bc + pop de + pop bc + inc b + ld a, [PartyCount] + cp b + jr nz, .asm_e11a +.asm_e131 + jp CloseSRAM +; e134 -.OpenMenu ; 127e5 - ld a, [MenuSelection] - call .GetMenuAccountTextPointer - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 127ef +Functione134: ; e134 + ld a, $1f + call GetPartyParamLocation + ld a, [hl] + ld [$001f], a + ld a, $0 + call GetPartyParamLocation + ld a, [hl] + ld [CurSpecies], a + call GetBaseData + ld a, $24 + call GetPartyParamLocation + ld d, h + ld e, l + push de + ld a, $a + call GetPartyParamLocation + ld b, $1 + call $6167 + pop de + ld a, $22 + call GetPartyParamLocation + ld a, [de] + inc de + ld [hli], a + ld a, [de] + ld [hl], a + ret +; e167 -.MenuString ; 127ef +Functione167: ; e167 + ld c, $0 +.asm_e169 + inc c + call $617b + ld a, [$ffb5] + ld [de], a + inc de + ld a, [$ffb6] + ld [de], a + inc de + ld a, c + cp $6 + jr nz, .asm_e169 + ret +; e17b + +Functione17b: ; e17b + push hl push de - ld a, [MenuSelection] - call .GetMenuAccountTextPointer - inc hl - inc hl - ld a, [hli] - ld d, [hl] + push bc + ld a, b + ld d, a + push hl + ld hl, BaseHP + dec hl + ld b, $0 + add hl, bc + ld a, [hl] ld e, a pop hl - call PlaceString - ret -; 12800 + push hl + ld a, c + cp $6 + jr nz, .asm_e193 + dec hl + dec hl -.MenuDesc ; 12800 +.asm_e193 + sla c + ld a, d + and a + jr z, .asm_e1a5 + add hl, bc push de - ld a, [MenuSelection] - cp $ff - jr z, .none - call .GetMenuAccountTextPointer - inc hl - inc hl - inc hl - inc hl - ld a, [hli] - ld d, [hl] + ld a, [hld] ld e, a - pop hl - call PlaceString - ret -.none + ld d, [hl] + callba GetSquareRoot pop de - ret -; 12819 - -.GetMenuAccountTextPointer ; 12819 - ld e, a - ld d, 0 - ld hl, $cf97 +.asm_e1a5 + srl c + pop hl + push bc + ld bc, $000b + add hl, bc + pop bc + ld a, c + cp $2 + jr z, .asm_e1e3 + cp $3 + jr z, .asm_e1ea + cp $4 + jr z, .asm_e1ef + cp $5 + jr z, .asm_e1f7 + cp $6 + jr z, .asm_e1f7 + push bc + ld a, [hl] + swap a + and $1 + add a + add a + add a + ld b, a ld a, [hli] - ld h, [hl] - ld l, a - add hl, de - add hl, de - add hl, de - add hl, de - add hl, de - add hl, de - ret -; 12829 - + and $1 + add a + add a + add b + ld b, a + ld a, [hl] + swap a + and $1 + add a + add b + ld b, a + ld a, [hl] + and $1 + add b + pop bc + jr .asm_e1fb -.SetUpMenuItems ; 12829 - xor a - ld [$cf76], a - call .FillMenuList - - ld hl, StatusFlags - bit 0, [hl] - jr z, .no_pokedex - ld a, 0 ; pokedex - call .AppendMenuList -.no_pokedex +.asm_e1e3 + ld a, [hl] + swap a + and $f + jr .asm_e1fb - ld a, [PartyCount] - and a - jr z, .no_pokemon - ld a, 1 ; pokemon - call .AppendMenuList -.no_pokemon +.asm_e1ea + ld a, [hl] + and $f + jr .asm_e1fb - ld a, [InLinkBattle] - and a - jr nz, .no_pack - ld hl, StatusFlags2 - bit 2, [hl] ; bug catching contest - jr nz, .no_pack - ld a, 2 ; pack - call .AppendMenuList -.no_pack +.asm_e1ef + inc hl + ld a, [hl] + swap a + and $f + jr .asm_e1fb - ld hl, $d957 - bit 7, [hl] - jr z, .no_pokegear - ld a, 7 ; pokegear - call .AppendMenuList -.no_pokegear +.asm_e1f7 + inc hl + ld a, [hl] + and $f - ld a, 3 ; status - call .AppendMenuList +.asm_e1fb + ld d, $0 + add e + ld e, a + jr nc, .asm_e202 + inc d - ld a, [InLinkBattle] - and a - jr nz, .no_save - ld hl, StatusFlags2 - bit 2, [hl] ; bug catching contest - ld a, 8 ; quit - jr nz, .write - ld a, 4 ; save -.write - call .AppendMenuList -.no_save +.asm_e202 + sla e + rl d + srl b + srl b + ld a, b + add e + jr nc, .asm_e20f + inc d - ld a, 5 ; option - call .AppendMenuList - ld a, 6 ; exit - call .AppendMenuList +.asm_e20f + ld [$ffb6], a + ld a, d + ld [$ffb5], a + xor a + ld [hMultiplicand], a + ld a, [CurPartyLevel] + ld [hMultiplier], a + call Multiply + ld a, [hMultiplicand] + ld [hProduct], a + ld a, [$ffb5] + ld [hMultiplicand], a + ld a, [$ffb6] + ld [$ffb5], a + ld a, $64 + ld [hMultiplier], a + ld a, $3 + ld b, a + call Divide ld a, c - ld [MenuItemsList], a - ret -; 1288d + cp $1 + ld a, $5 + jr nz, .asm_e24e + ld a, [CurPartyLevel] + ld b, a + ld a, [$ffb6] + add b + ld [$ffb6], a + jr nc, .asm_e24c + ld a, [$ffb5] + inc a + ld [$ffb5], a +.asm_e24c + ld a, $a -.FillMenuList ; 1288d - xor a - ld hl, MenuItemsList - ld [hli], a - ld a, $ff - ld bc, $000f - call ByteFill - ld de, MenuItemsList + 1 - ld c, 0 - ret -; 128a0 +.asm_e24e + ld b, a + ld a, [$ffb6] + add b + ld [$ffb6], a + jr nc, .asm_e25b + ld a, [$ffb5] + inc a + ld [$ffb5], a -.AppendMenuList ; 128a0 - ld [de], a - inc de - inc c - ret -; 128a4 +.asm_e25b + ld a, [$ffb5] + cp $4 + jr nc, .asm_e26b + cp $3 + jr c, .asm_e273 + ld a, [$ffb6] + cp $e8 + jr c, .asm_e273 -.DrawMenuAccount_ ; 128a4 - jp .DrawMenuAccount -; 128a7 +.asm_e26b + ld a, $3 + ld [$ffb5], a + ld a, $e7 + ld [$ffb6], a -.PrintMenuAccount ; 128a7 - call .IsMenuAccountOn - ret z - call .DrawMenuAccount - decoord 0, 14 - jp .MenuDesc -; 128b4 +.asm_e273 + pop bc + pop de + pop hl + ret +; e277 -.DrawMenuAccount ; 128b4 - call .IsMenuAccountOn - ret z - hlcoord 0, 13 - ld bc, $050a - call ClearBox - hlcoord 0, 13 - ld b, 3 - ld c, 8 - jp TextBoxPalette -; 128cb +Functione277: ; e277 + push de + push bc + xor a + ld [MonType], a + call $588c + jr nc, .asm_e2b0 + ld hl, PartyMon1Nickname + ld a, [PartyCount] + dec a + ld [CurPartyMon], a + call SkipNames + ld d, h + ld e, l + pop bc + ld a, b + ld b, $0 + push bc + push de + push af + ld a, [CurItem] + and a + jr z, .asm_e2e1 + ld a, [CurPartyMon] + ld hl, PartyMon1Item + ld bc, $0030 + call AddNTimes + ld a, [CurItem] + ld [hl], a + jr .asm_e2e1 -.IsMenuAccountOn ; 128cb - ld a, [Options2] - and 1 - ret -; 128d1 +.asm_e2b0 + ld a, [CurPartySpecies] + ld [TempEnemyMonSpecies], a + callab LoadEnemyMon + call $5e6e + jp nc, $63d4 + ld a, $2 + ld [MonType], a + xor a + ld [CurPartyMon], a + ld de, $d050 + pop bc + ld a, b + ld b, $1 + push bc + push de + push af + ld a, [CurItem] + and a + jr z, .asm_e2e1 + ld a, [CurItem] + ld [$ad27], a -.DrawBugContestStatusBox ; 128d1 - ld hl, StatusFlags2 - bit 2, [hl] ; bug catching contest - ret z - ld a, $9 - ld hl, $4bdc +.asm_e2e1 + ld a, [CurPartySpecies] + ld [$d265], a + ld [TempEnemyMonSpecies], a + call GetPokemonName + ld hl, StringBuffer1 + ld de, $d050 + ld bc, $000b + call CopyBytes + pop af + and a + jp z, $6390 + pop de + pop bc + pop hl + push bc + push hl + ld a, [ScriptBank] + call GetFarHalfword + ld bc, $000b + ld a, [ScriptBank] + call FarCopyBytes + pop hl + inc hl + inc hl + ld a, [ScriptBank] + call GetFarHalfword + pop bc + ld a, b + and a + push de + push bc + jr nz, .asm_e35e + push hl + ld a, [CurPartyMon] + ld hl, PartyMon1OT + call SkipNames + ld d, h + ld e, l + pop hl +.asm_e32f + ld a, [ScriptBank] + call GetFarByte + ld [de], a + inc hl + inc de + cp $50 + jr nz, .asm_e32f + ld a, [ScriptBank] + call GetFarByte + ld b, a + push bc + ld a, [CurPartyMon] + ld hl, PartyMon1ID + ld bc, $0030 + call AddNTimes + ld a, $3 + ld [hli], a + ld [hl], $e9 + pop bc + ld a, $13 + ld hl, $5ba3 rst FarCall - ret -; 128de + jr .asm_e3b2 -.DrawBugContestStatus ; 128de - ld hl, StatusFlags2 - bit 2, [hl] ; bug catching contest - jr nz, .contest - ret -.contest - ld a, $9 - ld hl, $4be7 +.asm_e35e + ld a, $1 + call GetSRAMBank + ld de, $afa6 +.asm_e366 + ld a, [ScriptBank] + call GetFarByte + ld [de], a + inc hl + inc de + cp $50 + jr nz, .asm_e366 + ld a, [ScriptBank] + call GetFarByte + ld b, a + ld hl, $ad2c + call RNG + ld [hli], a + call RNG + ld [hl], a + call CloseSRAM + ld a, $13 + ld hl, $5b92 rst FarCall - ret -; 128ed - + jr .asm_e3b2 -StartMenu_Exit: ; 128ed -; Exit the menu. - - ld a, 1 - ret -; 128f0 + pop de + pop bc + push bc + push de + ld a, b + and a + jr z, .asm_e3a0 + ld a, $13 + ld hl, $5b83 + rst FarCall + jr .asm_e3a6 +.asm_e3a0 + ld a, $13 + ld hl, $5b49 + rst FarCall -StartMenu_Quit: ; 128f0 -; Retire from the bug catching contest. +.asm_e3a6 + ld a, $13 + ld hl, $5b3b + rst FarCall + pop de + jr c, .asm_e3b2 + call $63de - ld hl, .EndTheContestText - call $6cf5 - jr c, .asm_12903 - ld a, $4 - ld hl, $760b - call $31cf - ld a, 4 - ret -.asm_12903 - ld a, 0 +.asm_e3b2 + pop bc + pop de + ld a, b + and a + ret z + ld hl, $63d9 + call PrintText + ld a, $1 + call GetSRAMBank + ld hl, $d050 + ld de, $b082 + ld bc, $000b + call CopyBytes + call CloseSRAM + ld b, $1 ret +; e3d4 -.EndTheContestText - text_jump UnknownText_0x1c1a6c, BANK(UnknownText_0x1c1a6c) - db "@" -; 1290b +Functione3d4: ; e3d4 + pop bc + pop de + ld b, $2 + ret +; e3d9 +INCBIN "baserom.gbc", $e3d9, $e3de - $e3d9 -StartMenu_Save: ; 1290b -; Save the game. - call $2879 - ld a, $5 - ld hl, $4a1a +Functione3de: ; e3de + push de + call $1d6e + call Function2ed3 + pop de + push de + ld b, $0 + ld a, $4 + ld hl, $56c1 + rst FarCall + pop hl + ld de, StringBuffer1 + call InitString + ld a, $4 + ld hl, $2b4d rst FarCall - jr nc, .asm_12919 - ld a, 0 - ret -.asm_12919 - ld a, 1 ret -; 1291c - +; e3fd -StartMenu_Option: ; 1291c -; Game options. +INCBIN "baserom.gbc", $e3fd, $e538 - $e3fd - call FadeToMenu - callba OptionsMenu - ld a, 6 - ret -; 12928 +Functione538: ; e538 + ld hl, PartyMon1CurHP + ld de, $0030 + ld b, $0 +.asm_e540 + ld a, [CurPartyMon] + cp b + jr z, .asm_e54b + ld a, [hli] + or [hl] + jr nz, .asm_e557 + dec hl -StartMenu_Status: ; 12928 -; Player status. +.asm_e54b + inc b + ld a, [PartyCount] + cp b + jr z, .asm_e555 + add hl, de + jr .asm_e540 - call FadeToMenu - ld a, $9 - ld hl, $5105 - rst FarCall - call $2b3c - ld a, 0 +.asm_e555 + scf ret -; 12937 - -StartMenu_Pokedex: ; 12937 - - ld a, [PartyCount] +.asm_e557 and a - jr z, .asm_12949 - - call FadeToMenu - ld a, $10 - ld hl, $4000 - rst FarCall - call $2b3c - -.asm_12949 - ld a, 0 ret -; 1294c - +; e559 -StartMenu_Pokegear: ; 1294c +INCBIN "baserom.gbc", $e559, $e58b - $e559 - call FadeToMenu - ld a, $24 - ld hl, $4b8d - rst FarCall - call $2b3c - ld a, 0 +ClearPCItemScreen: ; e58b + call Function2ed3 + xor a + ld [hBGMapMode], a + call WhiteBGMap + call ClearSprites + ld hl, TileMap + ld bc, 18 * 20 + ld a, " " + call ByteFill + hlcoord 0,0 + ld bc, $0a12 + call TextBox + hlcoord 0,12 + ld bc, $0412 + call TextBox + call Function3200 + call Function32f9 ; load regular palettes? ret -; 1295b +; 0xe5bb +INCBIN "baserom.gbc", $e5bb, $e6ce - $e5bb -StartMenu_Pack: ; 1295b - call FadeToMenu - ld a, $4 +Functione6ce: ; e6ce + ld a, [$df9c] + and a + jr z, .asm_e6ea + ld [$d265], a + ld a, $33 + ld hl, $40c7 + rst FarCall + ld a, $33 ld hl, $4000 rst FarCall - ld a, [$cf66] - and a - jr nz, .asm_12970 - call $2b3c - ld a, 0 - ret -.asm_12970 - call $2b4d - ld a, 4 - ret -; 12976 + ld bc, $0e07 + call $1dd2 + ret c +.asm_e6ea + call $66fd + ld a, [TempEnemyMonSpecies] + ld [$d265], a + call GetPokemonName + ld hl, $671d + call PrintText + ret +; e6fd -StartMenu_Pokemon: ; 12976 +Functione6fd: ; e6fd + ld a, [TempEnemyMonSpecies] + ld [CurSpecies], a + ld [CurPartySpecies], a + call GetBaseData + xor a + ld bc, $0030 + ld hl, $df9c + call ByteFill + xor a + ld [MonType], a + ld hl, $df9c + jp $5906 +; e71d - ld a, [PartyCount] - and a - jr z, .return +INCBIN "baserom.gbc", $e71d, $e722 - $e71d - call FadeToMenu -.choosemenu - xor a - ld [PartyMenuActionText], a ; Choose a POKéMON. - call WhiteBGMap +_DoItemEffect: ; e722 + ld a, [CurItem] + ld [$d265], a + call GetItemName + call CopyName1 + ld a, 1 + ld [$d0ec], a + ld a, [CurItem] + dec a + ld hl, ItemEffects + rst JumpTable + ret +; e73c -.menu - ld a, $14 - ld hl, $404f - rst FarCall ; load gfx - ld a, $14 - ld hl, $4405 - rst FarCall ; setup menu? - ld a, $14 - ld hl, $43e0 - rst FarCall ; load menu pokémon sprites -.menunoreload - callba WritePartyMenuTilemap - callba PrintPartyMenuText - call WaitBGMap - call Function32f9 ; load regular palettes? - call DelayFrame - callba PartyMenuSelect - jr c, .return ; if cancelled or pressed B +ItemEffects: ; e73c + dw MasterBall + dw UltraBall + dw Brightpowder + dw GreatBall + dw PokeBall + dw Item06 + dw Bicycle + dw MoonStone + dw Antidote + dw BurnHeal + dw IceHeal + dw Awakening + dw ParlyzHeal + dw FullRestore + dw MaxPotion + dw HyperPotion + dw SuperPotion + dw Potion + dw EscapeRope + dw Repel + dw MaxElixer + dw FireStone + dw Thunderstone + dw WaterStone + dw Item19 + dw HpUp + dw Protein + dw Iron + dw Carbos + dw LuckyPunch + dw Calcium + dw RareCandy + dw XAccuracy + dw LeafStone + dw MetalPowder + dw Nugget + dw PokeDoll + dw FullHeal + dw Revive + dw MaxRevive + dw GuardSpec + dw SuperRepel + dw MaxRepel + dw DireHit + dw Item2D + dw FreshWater + dw SodaPop + dw Lemonade + dw XAttack + dw Item32 + dw XDefend + dw XSpeed + dw XSpecial + dw CoinCase + dw Itemfinder + dw Item38 + dw ExpShare + dw OldRod + dw GoodRod + dw SilverLeaf + dw SuperRod + dw PpUp + dw Ether + dw MaxEther + dw Elixer + dw RedScale + dw Secretpotion + dw SSTicket + dw MysteryEgg + dw ClearBell + dw SilverWing + dw MoomooMilk + dw QuickClaw + dw Psncureberry + dw GoldLeaf + dw SoftSand + dw SharpBeak + dw Przcureberry + dw BurntBerry + dw IceBerry + dw PoisonBarb + dw KingsRock + dw BitterBerry + dw MintBerry + dw RedApricorn + dw Tinymushroom + dw BigMushroom + dw Silverpowder + dw BluApricorn + dw Item5A + dw AmuletCoin + dw YlwApricorn + dw GrnApricorn + dw CleanseTag + dw MysticWater + dw Twistedspoon + dw WhtApricorn + dw Blackbelt + dw BlkApricorn + dw Item64 + dw PnkApricorn + dw Blackglasses + dw Slowpoketail + dw PinkBow + dw Stick + dw SmokeBall + dw Nevermeltice + dw Magnet + dw Miracleberry + dw Pearl + dw BigPearl + dw Everstone + dw SpellTag + dw Ragecandybar + dw GsBall + dw BlueCard + dw MiracleSeed + dw ThickClub + dw FocusBand + dw Item78 + dw Energypowder + dw EnergyRoot + dw HealPowder + dw RevivalHerb + dw HardStone + dw LuckyEgg + dw CardKey + dw MachinePart + dw EggTicket + dw LostItem + dw Stardust + dw StarPiece + dw BasementKey + dw Pass + dw Item87 + dw Item88 + dw Item89 + dw Charcoal + dw BerryJuice + dw ScopeLens + dw Item8D + dw Item8E + dw MetalCoat + dw DragonFang + dw Item91 + dw Leftovers + dw Item93 + dw Item94 + dw Item95 + dw Mysteryberry + dw DragonScale + dw BerserkGene + dw Item99 + dw Item9A + dw Item9B + dw SacredAsh + dw HeavyBall + dw FlowerMail + dw LevelBall + dw LureBall + dw FastBall + dw ItemA2 + dw LightBall + dw FriendBall + dw MoonBall + dw LoveBall + dw NormalBox + dw GorgeousBox + dw SunStone + dw PolkadotBow + dw ItemAB + dw UpGrade + dw Berry + dw GoldBerry + dw Squirtbottle + dw ItemB0 + dw ParkBall + dw RainbowWing + dw ItemB3 +; e8a2 - call PokemonActionSubmenu - cp 3 - jr z, .menu - cp 0 - jr z, .choosemenu - cp 1 - jr z, .menunoreload - cp 2 - jr z, .quit +INCLUDE "items/item_effects.asm" -.return - call $2b3c - ld a, 0 - ret -.quit - ld a, b - push af - call $2b4d - pop af - ret -; 129d5 +INCBIN "baserom.gbc", $f780, $f881 - $f780 -INCBIN "baserom.gbc", $129d5, $12a60 - $129d5 +Functionf881: ; f881 + push bc + ld a, [de] + ld [$ffb6], a + xor a + ld [hProduct], a + ld [hMultiplicand], a + ld [$ffb5], a + ld a, $5 + ld [hMultiplier], a + ld b, $4 + call Divide + ld a, [hl] + ld b, a + swap a + and $f + srl a + srl a + ld c, a + and a + jr z, .asm_f8b6 +.asm_f8a3 + ld a, [$ffb6] + cp $8 + jr c, .asm_f8ab + ld a, $7 +.asm_f8ab + add b + ld b, a + ld a, [$d265] + dec a + jr z, .asm_f8b6 + dec c + jr nz, .asm_f8a3 -CantUseItem: ; 12a60 - ld hl, CantUseItemText - call $2012 +.asm_f8b6 + ld [hl], b + pop bc ret -; 12a67 - -CantUseItemText: ; 12a67 - text_jump UnknownText_0x1c1b03, BANK(UnknownText_0x1c1b03) - db "@" -; 12a6c +; f8b9 +INCBIN "baserom.gbc", $f8b9, $f8ec - $f8b9 -PartyMonItemName: ; 12a6c - ld a, [CurItem] - ld [$d265], a - call GetItemName - call CopyName1 - ret -; 12a79 +Functionf8ec: ; f8ec + ld a, [StringBuffer1] + push af + ld a, [$d074] + push af + ld a, [MonType] + and a + ld hl, PartyMon1Move1 + ld bc, $0030 + jr z, .asm_f91a + ld hl, OTPartyMon1Move1 + dec a + jr z, .asm_f91a + ld hl, TempMonMove1 + dec a + jr z, .asm_f915 + ld hl, TempMonMove1 + dec a + jr z, .asm_f915 + ld hl, BattleMonMove1 -CancelPokemonAction: ; 12a79 - ld a, $14 - ld hl, $4405 - rst FarCall - ld a, $23 - ld hl, $6a71 - rst FarCall - ld a, 1 - ret -; 12a88 +.asm_f915 + call $7969 + jr .asm_f91d +.asm_f91a + call $7963 -PokemonActionSubmenu: ; 12a88 - hlcoord 1, 15 - ld bc, $0212 ; box size - call ClearBox - ld a, $9 - ld hl, $4d19 - rst FarCall - call $389c - ld a, [MenuSelection] - ld hl, .Actions - ld de, 3 - call IsInArray - jr nc, .nothing +.asm_f91d + ld a, [hl] + dec a + push hl + ld hl, $5b00 + ld bc, $0007 + call AddNTimes + ld a, $10 + call GetFarByte + ld b, a + ld de, StringBuffer1 + ld [de], a + pop hl + push bc + ld bc, $0015 + ld a, [MonType] + cp $4 + jr nz, .asm_f942 + ld bc, $0006 - inc hl - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] +.asm_f942 + add hl, bc + ld a, [hl] + and $c0 + pop bc + or b + ld hl, $d074 + ld [hl], a + xor a + ld [$d265], a + ld a, b + call $7881 + ld a, [hl] + and $3f + ld [$d265], a + pop af + ld [$d074], a + pop af + ld [StringBuffer1], a + ret +; f963 -.nothing - ld a, 0 +Functionf963: ; f963 + ld a, [CurPartyMon] + call AddNTimes + ld a, [$cfa9] + ld c, a + ld b, $0 + add hl, bc ret +; f971 -.Actions - dbw $01, $6e1b - dbw $02, $6e30 - dbw $03, $6ebd - dbw $04, $6e6a - dbw $06, $6e55 - dbw $07, $6e7f - dbw $08, $6ed1 - dbw $09, $6ea9 - dbw $0a, $6ee6 - dbw $0d, $6ee6 - dbw $0b, $6f26 - dbw $05, $6e94 - dbw $0c, $6f3b - dbw $0e, $6f50 - dbw $0f, OpenPartyStats - dbw $10, SwitchPartyMons - dbw $11, GiveTakePartyMonItem - dbw $12, CancelPokemonAction - dbw $13, $6fba ; move - dbw $14, $6d45 ; mail -; 12aec +INCBIN "baserom.gbc", $f971, $f9ea - $f971 -SwitchPartyMons: ; 12aec +Functionf9ea: ; f9ea + ld a, $2 + call GetPartyParamLocation + ld a, [$d262] + ld b, a + ld c, $4 +.asm_f9f5 + ld a, [hli] + cp b + jr z, .asm_f9fe + dec c + jr nz, .asm_f9f5 + and a + ret -; Don't try if there's nothing to switch! - ld a, [PartyCount] - cp 2 - jr c, .DontSwitch +.asm_f9fe + ld hl, $7a06 + call PrintText + scf + ret +; fa06 - ld a, [CurPartyMon] - inc a - ld [$d0e3], a +INCBIN "baserom.gbc", $fa06, $fa0b - $fa06 - ld a, $23 - ld hl, $6a8c - rst FarCall - ld a, $14 - ld hl, $442d - rst FarCall - ld a, 4 - ld [PartyMenuActionText], a - callba WritePartyMenuTilemap - callba PrintPartyMenuText +SECTION "bank4",DATA,BANK[$4] - hlcoord 0, 1 - ld bc, 20 * 2 - ld a, [$d0e3] - dec a - call AddNTimes - ld [hl], "▷" - call WaitBGMap - call Function32f9 +Function10000: ; 10000 + ld hl, Options + set 4, [hl] + call $468a +.asm_10008 + call Functiona57 + ld a, [$cf63] + bit 7, a + jr nz, .asm_1001a + call $4026 call DelayFrame + jr .asm_10008 - callba PartyMenuSelect - bit 1, b - jr c, .DontSwitch +.asm_1001a + ld a, [$cf65] + ld [$d0d6], a + ld hl, Options + res 4, [hl] + ret +; 10026 - ld a, $14 - ld hl, $4f12 - rst FarCall +Function10026: ; 10026 + ld a, [$cf63] + ld hl, $4030 + call $486b + jp [hl] +; 10030 - xor a - ld [PartyMenuActionText], a +INCBIN "baserom.gbc", $10030, $1068a - $10030 - ld a, $14 - ld hl, $404f - rst FarCall - ld a, $14 - ld hl, $4405 - rst FarCall - ld a, $14 - ld hl, $43e0 - rst FarCall - ld a, 1 +Function1068a: ; 1068a + xor a + ld [$cf63], a + ld a, [$d0d6] + and $3 + ld [$cf65], a + inc a + add a + dec a + ld [$cf64], a + xor a + ld [$cf66], a + xor a + ld [$d0e3], a ret +; 106a5 -.DontSwitch +Function106a5: ; 106a5 xor a - ld [PartyMenuActionText], a - call CancelPokemonAction + ld [hBGMapMode], a + ld [$cf63], a + ld [$cf64], a + ld [$cf65], a + ld [$cf66], a + ld [$d0e3], a + call $4955 + call $4a40 ret -; 12b60 +; 106be +Function106be: ; 106be +.asm_106be + call $46c7 + call $476f + jr c, .asm_106be + ret +; 106c7 -GiveTakePartyMonItem: ; 12b60 - -; Eggs can't hold items! - ld a, [CurPartySpecies] - cp EGG - jr z, .asm_12ba6 +Function106c7: ; 106c7 + ld a, [$cf63] + ld hl, $46d1 + call $486b + jp [hl] +; 106d1 - ld hl, GiveTakeItemMenuData - call Function1d35 - call Function1d81 - call Function1c07 - jr c, .asm_12ba6 +INCBIN "baserom.gbc", $106d1, $1076f - $106d1 - call $389c - ld hl, StringBuffer1 - ld de, $d050 - ld bc, $b - call CopyBytes - ld a, [$cfa9] - cp 1 - jr nz, .asm_12ba0 - call $1d6e - call ClearPalettes - call Function12ba9 - call ClearPalettes - call $0e58 - call Function1c07 - ld a, 0 +Function1076f: ; 1076f + ld hl, $cf73 + ld a, [hl] + and $1 + jr nz, .asm_10788 + ld a, [hl] + and $2 + jr nz, .asm_1078f + ld a, [hl] + and $20 + jr nz, .asm_10795 + ld a, [hl] + and $10 + jr nz, .asm_107a8 + scf ret -.asm_12ba0 - call TakePartyItem - ld a, 3 +.asm_10788 + ld a, $1 + ld [$cf66], a + and a ret -.asm_12ba6 - ld a, 3 +.asm_1078f + xor a + ld [$cf66], a + and a ret -; 12ba9 - -Function12ba9: ; 12ba9 +.asm_10795 + ld a, [$cf63] + dec a + and $3 + ld [$cf63], a + push de + ld de, $0062 + call StartSFX + pop de + scf + ret - ld a, $4 - ld hl, $46a5 - rst FarCall +.asm_107a8 + ld a, [$cf63] + inc a + and $3 + ld [$cf63], a + push de + ld de, $0062 + call StartSFX + pop de + scf + ret +; 107bb -.loop - ld a, $4 - ld hl, $46be - rst FarCall +INCBIN "baserom.gbc", $107bb, $1086b - $107bb - ld a, [$cf66] - and a - jr z, .quit - ld a, [$cf65] - cp 2 - jr z, .next - - call CheckTossableItem - ld a, [$d142] - and a - jr nz, .next - - call Function12bd9 - jr .quit - -.next - ld hl, CantBeHeldText - call $1d67 - jr .loop - -.quit +Function1086b: ; 1086b + ld e, a + ld d, $0 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a ret -; 12bd9 - +; 10874 -Function12bd9: ; 12bd9 +INCBIN "baserom.gbc", $10874, $1089d - $10874 - call SpeechTextBox - call PartyMonItemName - call GetPartyItemLocation - ld a, [hl] - and a - jr z, .asm_12bf4 - push hl - ld d, a - ld a, $2e - ld hl, $5e76 - rst FarCall - pop hl - jr c, .asm_12c01 - ld a, [hl] - jr .asm_12c08 +Function1089d: ; 1089d + ld a, [$cf65] + and $3 + ld e, a + ld d, $0 + ld a, [BattleType] + cp $3 + jr z, .asm_108b3 + ld a, [PlayerGender] + bit 0, a + jr nz, .asm_108c5 -.asm_12bf4 - call $6cea - ld hl, MadeHoldText - call $1d67 - call GivePartyItem +.asm_108b3 + ld hl, $48cc + add hl, de + add hl, de + ld a, [hli] + ld e, a + ld d, [hl] + ld hl, $9500 + ld bc, $040f + call Functioneba ret -.asm_12c01 - ld hl, PleaseRemoveMailText - call $1d67 +.asm_108c5 + ld a, $12 + ld hl, $4e81 + rst FarCall ret +; 108cc -.asm_12c08 - ld [$d265], a - call GetItemName - ld hl, SwitchAlreadyHoldingText - call $6cf5 - jr c, .asm_12c4b +INCBIN "baserom.gbc", $108cc, $10955 - $108cc - call $6cea - ld a, [$d265] - push af - ld a, [CurItem] - ld [$d265], a - pop af - ld [CurItem], a - call $6cdf - jr nc, .asm_12c3c - ld hl, TookAndMadeHoldText - call $1d67 - ld a, [$d265] - ld [CurItem], a - call GivePartyItem +Function10955: ; 10955 + call WhiteBGMap + call ClearTileMap + call ClearSprites + call DisableLCD + ld hl, $4b16 + ld de, VTiles2 + ld bc, $0600 + ld a, $4 + call FarCopyBytes + ld hl, $c4b4 + ld bc, $00dc + ld a, $24 + call ByteFill + ld hl, $c4b9 + ld bc, $0b0f + call ClearBox + ld hl, TileMap + ld a, $28 + ld c, $14 +.asm_1098a + ld [hli], a + inc a + dec c + jr nz, .asm_1098a + call $49bb + call $49a5 + ld hl, $c590 + ld bc, $0412 + call TextBox + call EnableLCD + call $489d ret +; 109a5 -.asm_12c3c - ld a, [$d265] - ld [CurItem], a - call $6cdf - ld hl, ItemStorageIsFullText - call $1d67 - -.asm_12c4b +Function109a5: ; 109a5 + ld hl, $c4dc + ld a, $50 + ld de, $000f + ld b, $3 +.asm_109af + ld c, $5 +.asm_109b1 + ld [hli], a + inc a + dec c + jr nz, .asm_109b1 + add hl, de + dec b + jr nz, .asm_109af ret -; 12c4c +; 109bb - -GivePartyItem: ; 12c4c - - call GetPartyItemLocation - ld a, [CurItem] - ld [hl], a +Function109bb: ; 109bb + ld a, [$cf65] ld d, a - ld a, $2e - ld hl, $5e76 - rst FarCall - jr nc, .asm_12c5f - call $6cfe - -.asm_12c5f + swap a + sub d + ld d, $0 + ld e, a + ld hl, $49e1 + add hl, de + ld d, h + ld e, l + ld hl, $c52c + ld c, $3 +.asm_109d0 + ld b, $5 +.asm_109d2 + ld a, [de] + inc de + ld [hli], a + dec b + jr nz, .asm_109d2 + ld a, c + ld c, $f + add hl, bc + ld c, a + dec c + jr nz, .asm_109d0 ret -; 12c60 - +; 109e1 -TakePartyItem: ; 12c60 - - call SpeechTextBox - call GetPartyItemLocation - ld a, [hl] - and a - jr z, .asm_12c8c +INCBIN "baserom.gbc", $109e1, $10a40 - $109e1 - ld [CurItem], a - call $6cdf - jr nc, .asm_12c94 - ld a, $2e - ld hl, $5e76 - rst FarCall - call GetPartyItemLocation - ld a, [hl] - ld [$d265], a - ld [hl], NO_ITEM - call GetItemName - ld hl, TookFromText - call $1d67 - jr .asm_12c9a +Function10a40: ; 10a40 + call WaitBGMap + ld b, $14 + call GetSGBLayout + call Function32f9 + call DelayFrame + ret +; 10a4f -.asm_12c8c - ld hl, IsntHoldingAnythingText - call $1d67 - jr .asm_12c9a +INCBIN "baserom.gbc", $10a4f, $10b16 - $10a4f -.asm_12c94 - ld hl, ItemStorageIsFullText - call $1d67 +PackGFX: +INCBIN "gfx/misc/pack.2bpp" -.asm_12c9a +Function113d6: ; 113d6 + call $54dd ret -; 12c9b - - -GiveTakeItemMenuData: ; 12c9b - db %01010000 - db 12, 12 ; start coords - db 17, 19 ; end coords - dw .Items - db 1 ; default option +; 113da -.Items - db %10000000 ; x padding - db 2 ; # items - db "GIVE@" - db "TAKE@" -; 12caf +Function113da: ; 113da + xor a + ld [$dc2d], a + ld [$dc3a], a + ld [$dc1c], a + ret +; 113e5 +INCBIN "baserom.gbc", $113e5, $114dd - $113e5 -TookAndMadeHoldText: ; 12caf - text_jump UnknownText_0x1c1b2c, BANK(UnknownText_0x1c1b2c) - db "@" -; 12cb4 -MadeHoldText: ; 12cb4 - text_jump UnknownText_0x1c1b57, BANK(UnknownText_0x1c1b57) - db "@" -; 12cb9 +Function114dd: ; 114dd + call UpdateTime + ld hl, $dc23 + call $5621 + ret +; 114e7 -PleaseRemoveMailText: ; 12cb9 - text_jump UnknownText_0x1c1b6f, BANK(UnknownText_0x1c1b6f) - db "@" -; 12cbe +INCBIN "baserom.gbc", $114e7, $11621 - $114e7 -IsntHoldingAnythingText: ; 12cbe - text_jump UnknownText_0x1c1b8e, BANK(UnknownText_0x1c1b8e) - db "@" -; 12cc3 -ItemStorageIsFullText: ; 12cc3 - text_jump UnknownText_0x1c1baa, BANK(UnknownText_0x1c1baa) - db "@" -; 12cc8 +Function11621: ; 11621 + ld a, [CurDay] + ld [hl], a + ret +; 11626 -TookFromText: ; 12cc8 - text_jump UnknownText_0x1c1bc4, BANK(UnknownText_0x1c1bc4) - db "@" -; 12ccd +INCBIN "baserom.gbc", $11626, $1167a - $11626 -SwitchAlreadyHoldingText: ; 12ccd - text_jump UnknownText_0x1c1bdc, BANK(UnknownText_0x1c1bdc) - db "@" -; 12cd2 +TechnicalMachines: ; 0x1167a + db DYNAMICPUNCH + db HEADBUTT + db CURSE + db ROLLOUT + db ROAR + db TOXIC + db ZAP_CANNON + db ROCK_SMASH + db PSYCH_UP + db HIDDEN_POWER + db SUNNY_DAY + db SWEET_SCENT + db SNORE + db BLIZZARD + db HYPER_BEAM + db ICY_WIND + db PROTECT + db RAIN_DANCE + db GIGA_DRAIN + db ENDURE + db FRUSTRATION + db SOLARBEAM + db IRON_TAIL + db DRAGONBREATH + db THUNDER + db EARTHQUAKE + db RETURN + db DIG + db PSYCHIC_M + db SHADOW_BALL + db MUD_SLAP + db DOUBLE_TEAM + db ICE_PUNCH + db SWAGGER + db SLEEP_TALK + db SLUDGE_BOMB + db SANDSTORM + db FIRE_BLAST + db SWIFT + db DEFENSE_CURL + db THUNDERPUNCH + db DREAM_EATER + db DETECT + db REST + db ATTRACT + db THIEF + db STEEL_WING + db FIRE_PUNCH + db FURY_CUTTER + db NIGHTMARE + db CUT + db FLY + db SURF + db STRENGTH + db FLASH + db WHIRLPOOL + db WATERFALL -CantBeHeldText: ; 12cd2 - text_jump UnknownText_0x1c1c09, BANK(UnknownText_0x1c1c09) - db "@" -; 12cd7 +INCBIN "baserom.gbc", $116b3, $116b7 - $116b3 +Function116b7: ; 0x116b7 + call Function2ed3 + call $56c1 + call Function2b74 + ret +; 0x116c1 -GetPartyItemLocation: ; 12cd7 +Function116c1: ; 116c1 + ld hl, PlayerSDefLevel + ld [hl], e + inc hl + ld [hl], d + ld hl, EnemyAtkLevel + ld [hl], b + ld hl, Options + ld a, [hl] push af - ld a, PartyMon1Item - PartyMon1 - call GetPartyParamLocation + set 4, [hl] + ld a, [$ffde] + push af + xor a + ld [$ffde], a + ld a, [$ffaa] + push af + ld a, $1 + ld [$ffaa], a + call $56f8 + call DelayFrame +.asm_116e5 + call $5915 + jr nc, .asm_116e5 + pop af + ld [$ffaa], a pop af + ld [$ffde], a + pop af + ld [Options], a + call ClearJoypadPublic ret -; 12cdf - - -INCBIN "baserom.gbc", $12cdf, $12e00 - $12cdf +; 116f8 - -OpenPartyStats: ; 12e00 - call $1d6e - call ClearSprites -; PartyMon - xor a - ld [MonType], a - call LowVolume - ld a, $25 - call Predef - call MaxVolume - call $1d7d - ld a, 0 +Function116f8: ; 116f8 + call WhiteBGMap + ld b, $8 + call GetSGBLayout + call DisableLCD + call $5c51 + call $58a8 + ld a, $e3 + ld [rLCDC], a + call $571d + call WaitBGMap + call WaitTop + call Function32f9 + call $5be0 ret -; 12e1b - - -INCBIN "baserom.gbc", $12e1b, $13327 - $12e1b - +; 1171d -SelectMenu: ; 13327 +Function1171d: ; 1171d + ld a, [EnemyAtkLevel] + and $7 + ld e, a + ld d, $0 + ld hl, $572e + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 1172e - call CheckRegisteredItem - jr c, .NotRegistered - jp UseRegisteredItem +INCBIN "baserom.gbc", $1172e, $1189c - $1172e -.NotRegistered - call $2e08 - ld b, BANK(ItemMayBeRegisteredText) - ld hl, ItemMayBeRegisteredText - call $269a - call $0a46 - jp $2dcf -; 13340 +Function1189c: ; 1189c + push bc + push af + ld a, [EnemyAtkLevel] + sub $3 + ld b, a + pop af + dec b + pop bc + ret +; 118a8 -ItemMayBeRegisteredText: ; 13340 - text_jump UnknownText_0x1c1cf3, BANK(UnknownText_0x1c1cf3) - db "@" -; 13345 +Function118a8: ; 118a8 + call WaitTop + ld hl, TileMap + ld bc, $0168 + ld a, $60 + call ByteFill + ld hl, $c4b5 + ld bc, $0612 + call $589c + jr nz, .asm_118c4 + ld bc, $0412 +.asm_118c4 + call ClearBox + ld de, $5da2 + call $589c + jr nz, .asm_118d5 + ld hl, $0055 + add hl, de + ld d, h + ld e, l -CheckRegisteredItem: ; 13345 +.asm_118d5 + push de + ld hl, $c541 + ld bc, $0712 + call $589c + jr nz, .asm_118e7 + ld hl, $c519 + ld bc, $0912 + +.asm_118e7 + call ClearBox + ld hl, $c5e1 + ld bc, $0112 + call ClearBox + pop de + ld hl, $c542 + ld b, $5 + call $589c + jr nz, .asm_11903 + ld hl, $c51a + ld b, $6 - ld a, [WhichRegisteredItem] - and a - jr z, .NoRegisteredItem - and REGISTERED_POCKET - rlca - rlca - ld hl, .Pockets - rst JumpTable +.asm_11903 + ld c, $11 +.asm_11905 + ld a, [de] + ld [hli], a + inc de + dec c + jr nz, .asm_11905 + push de + ld de, $0017 + add hl, de + pop de + dec b + jr nz, .asm_11903 ret +; 11915 -.Pockets - dw .CheckItem - dw .CheckBall - dw .CheckKeyItem - dw .CheckTMHM - -.CheckItem - ld hl, NumItems - call .CheckRegisteredNo - jr c, .NoRegisteredItem - inc hl - ld e, a - ld d, 0 - add hl, de - add hl, de - call .IsSameItem - jr c, .NoRegisteredItem +Function11915: ; 11915 + call Functiona57 + ld a, [$cf63] + bit 7, a + jr nz, .asm_11930 + call $5968 + ld a, $23 + ld hl, $4f62 + rst FarCall + call $5940 + call DelayFrame and a ret -.CheckKeyItem - ld a, [RegisteredItem] - ld hl, KeyItems - ld de, 1 - call IsInArray - jr nc, .NoRegisteredItem - ld a, [RegisteredItem] - ld [CurItem], a - and a +.asm_11930 + callab Function8cf53 + call ClearSprites + xor a + ld [$ffcf], a + ld [$ffd0], a + scf ret +; 11940 -.CheckBall - ld hl, NumBalls - call .CheckRegisteredNo - jr nc, .NoRegisteredItem +Function11940: ; 11940 + xor a + ld [hBGMapMode], a + ld hl, $c505 + call $589c + jr nz, .asm_1194e + ld hl, $c4dd + +.asm_1194e + ld bc, $0112 + call ClearBox + ld hl, PlayerSDefLevel + ld e, [hl] inc hl + ld d, [hl] + ld hl, EnemySDefLevel + ld a, [hli] + ld h, [hl] + ld l, a + call PlaceString + ld a, $1 + ld [hBGMapMode], a + ret +; 11968 + +Function11968: ; 11968 + ld a, [$cf63] ld e, a - ld d, 0 + ld d, $0 + ld hl, $5977 add hl, de add hl, de - call .IsSameItem - jr c, .NoRegisteredItem - ret + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 11977 -.CheckTMHM - jr .NoRegisteredItem +INCBIN "baserom.gbc", $11977, $11be0 - $11977 -.NoRegisteredItem - xor a - ld [WhichRegisteredItem], a - ld [RegisteredItem], a - scf + +Function11be0: ; 11be0 + ld hl, PlayerSDefLevel + ld a, [hli] + ld h, [hl] + ld l, a + ld [hl], $f2 + inc hl + ld a, [$c6d3] + dec a + ld c, a + ld a, $eb +.asm_11bf0 + ld [hli], a + dec c + jr nz, .asm_11bf0 + ld [hl], $50 ret -; 133a6 +; 11bf7 +INCBIN "baserom.gbc", $11bf7, $11c51 - $11bf7 -.CheckRegisteredNo ; 133a6 - ld a, [WhichRegisteredItem] - and REGISTERED_NUMBER - dec a - cp [hl] - jr nc, .NotEnoughItems - ld [$d107], a - and a - ret -.NotEnoughItems - scf +Function11c51: ; 11c51 + call ClearSprites + callab Function8cf53 + call $0e51 + call Functione5f + ld de, $5e65 + ld hl, $8eb0 + ld bc, $0401 + call Functionf9d + ld de, $5e6d + ld hl, $8f20 + ld bc, $0401 + call Functionf9d + ld de, $9600 + ld hl, $5cb7 + ld bc, $0010 + ld a, $4 + call FarCopyBytes + ld de, $87e0 + ld hl, $5cc7 + ld bc, $0020 + ld a, $4 + call FarCopyBytes + ld a, $5 + ld hl, $c312 + ld [hli], a + ld [hl], $7e + xor a + ld [$ffd0], a + ld [$c3bf], a + ld [$ffcf], a + ld [$c3c0], a + ld [$cf63], a + ld [$cf64], a + ld [hBGMapMode], a + ld [PlayerEvaLevel], a + ld a, $7 + ld [$ffd1], a ret -; 133b6 +; 11cb7 +INCBIN "baserom.gbc", $11cb7, $11ce7 - $11cb7 -.IsSameItem ; 133b6 - ld a, [RegisteredItem] - cp [hl] - jr nz, .NotSameItem - ld [CurItem], a - and a - ret +NameInputLower: + db "a b c d e f g h i" + db "j k l m n o p q r" + db "s t u v w x y z " + db "× ( ) : ; [ ] ", $e1, " ", $e2 + db "UPPER DEL END " +BoxNameInputLower: + db "a b c d e f g h i" + db "j k l m n o p q r" + db "s t u v w x y z " + db "é 'd 'l 'm 'r 's 't 'v 0" + db "1 2 3 4 5 6 7 8 9" + db "UPPER DEL END " +NameInputUpper: + db "A B C D E F G H I" + db "J K L M N O P Q R" + db "S T U V W X Y Z " + db "- ? ! / . , " + db "lower DEL END " +BoxNameInputUpper: + db "A B C D E F G H I" + db "J K L M N O P Q R" + db "S T U V W X Y Z " + db "× ( ) : ; [ ] ", $e1, " ", $e2 + db "- ? ! ♂ ♀ / . , &" + db "lower DEL END " -.NotSameItem - scf - ret -; 133c3 +INCBIN "baserom.gbc", $11e5d, $12513 - $11e5d -UseRegisteredItem: ; 133c3 - callba CheckItemMenu - ld a, [$d142] - ld hl, .SwitchTo - rst JumpTable - ret +HalveMoney: ; 12513 -.SwitchTo - dw .CantUse - dw .NoFunction - dw .NoFunction - dw .NoFunction - dw .Current - dw .Party - dw .Overworld -; 133df +; Empty function... + ld a, $41 + ld hl, $60c7 + rst FarCall -.NoFunction ; 133df - call $2e08 - call CantUseItem - call $2dcf - and a +; Halve the player's money. + ld hl, Money + ld a, [hl] + srl a + ld [hli], a + ld a, [hl] + rra + ld [hli], a + ld a, [hl] + rra + ld [hl], a ret -; 133ea +; 12527 -.Current ; 133ea - call $2e08 - call DoItemEffect - call $2dcf - and a - ret -; 133f5 -.Party ; 133f5 - call ResetWindow - call FadeToMenu - call DoItemEffect - call $2b3c - call $2dcf - and a - ret -; 13406 +INCBIN "baserom.gbc", $12527, $125cd - $12527 -.Overworld ; 13406 - call ResetWindow - ld a, 1 - ld [$d0ef], a - call DoItemEffect - xor a - ld [$d0ef], a - ld a, [$d0ec] - cp 1 - jr nz, .asm_13425 - scf - ld a, $80 - ld [$ffa0], a - ret -; 13422 -.CantUse ; 13422 - call ResetWindow +StartMenu: ; 125cd -.asm_13425 - call CantUseItem - call $2dcf - and a - ret -; 1342d + call Function1fbf + ld de, SFX_MENU + call StartSFX -INCBIN "baserom.gbc", $1342d, $13b87 - $1342d + ld a, $1 + ld hl, $6454 + rst FarCall + ld hl, StatusFlags2 + bit 2, [hl] ; bug catching contest + ld hl, .MenuDataHeader + jr z, .GotMenuData + ld hl, .ContestMenuDataHeader +.GotMenuData -GetSquareRoot: ; 13b87 -; Return the square root of de in b. + call Function1d35 + call .SetUpMenuItems + ld a, [$d0d2] + ld [$cf88], a + call .DrawMenuAccount_ + call MenuFunc_1e7f + call .DrawBugContestStatusBox + call $2e31 + call $2e20 + ld a, $1 + ld hl, $64bf + rst $8 + call .DrawBugContestStatus + call Function485 + jr .Select -; Rather than calculating the result, we take the index of the -; first value in a table of squares that isn't lower than de. +.Reopen + call $1ad2 + call Function485 + call .SetUpMenuItems + ld a, [$d0d2] + ld [$cf88], a - ld hl, Squares - ld b, 0 -.loop -; Make sure we don't go past the end of the table. - inc b - ld a, b - cp $ff - ret z +.Select + call .GetInput + jr c, .Exit + call .DrawMenuAccount + ld a, [$cf88] + ld [$d0d2], a + call PlayClickSFX + call $1bee + call .OpenMenu -; Iterate over the table until b**2 >= de. - ld a, [hli] - sub e +; Menu items have different return functions. +; For example, saving exits the menu. + ld hl, .MenuReturns + ld e, a + ld d, 0 + add hl, de + add hl, de ld a, [hli] - sbc d + ld h, [hl] + ld l, a + jp [hl] + +.MenuReturns + dw .Reopen + dw .Exit + dw .ReturnTwo + dw .ReturnThree + dw .ReturnFour + dw .ReturnEnd + dw .ReturnRedraw - jr c, .loop +.Exit + ld a, [hOAMUpdate] + push af + ld a, 1 + ld [hOAMUpdate], a + call Functione5f + pop af + ld [hOAMUpdate], a +.ReturnEnd + call Function1c07 +.ReturnEnd2 + call $2dcf + call Function485 ret -Squares: ; 13b98 -root set 1 - rept $ff - dw root*root -root set root+1 - endr -; 13d96 - +.GetInput +; Return carry on exit, and no-carry on selection. + xor a + ld [hBGMapMode], a + call .DrawMenuAccount + call SetUpMenu + ld a, $ff + ld [MenuSelection], a +.loop + call .PrintMenuAccount + call $1f1a + ld a, [$cf73] + cp BUTTON_B + jr z, .b + cp BUTTON_A + jr z, .a + jr .loop +.a + call PlayClickSFX + and a + ret +.b + scf + ret +; 12691 -SECTION "bank5",DATA,BANK[$5] +.ReturnFour ; 12691 + call Function1c07 + ld a, $80 + ld [$ffa0], a + ret +; 12699 +.ReturnThree ; 12699 + call Function1c07 + ld a, $80 + ld [$ffa0], a + jr .ReturnEnd2 +; 126a2 -INCBIN "baserom.gbc", $14000, $14019 - $14000 +.ReturnTwo ; 126a2 + call Function1c07 + ld hl, $d0e9 + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [$d0e8] + rst FarCall + jr .ReturnEnd2 +; 126b1 +.ReturnRedraw ; 126b1 + call .Clear + jp .Reopen +; 126b7 -Function14019: ; 14019 - ld a, $a - ld [$0000], a - call LatchClock - ld a, $c - ld [$4000], a - ld a, [$a000] - res 6, a - ld [$a000], a - call CloseSRAM +.Clear ; 126b7 + call WhiteBGMap + call $1d7d + call $2bae + call .DrawMenuAccount_ + call MenuFunc_1e7f + call .DrawBugContestStatus + call $1ad2 + call $0d90 + call $2b5c ret -; 14032 +; 126d3 +.MenuDataHeader + db $40 ; tile backup + db 0, 10 ; start coords + db 17, 19 ; end coords + dw .MenuData + db 1 ; default selection -GetTimeOfDay: ; 14032 -; get time of day based on the current hour - ld a, [hHours] ; hour - ld hl, TimesOfDay - -.check -; if we're within the given time period, -; get the corresponding time of day - cp [hl] - jr c, .match -; else, get the next entry - inc hl - inc hl -; try again - jr .check - -.match -; get time of day - inc hl - ld a, [hl] - ld [TimeOfDay], a - ret -; 14044 +.ContestMenuDataHeader + db $40 ; tile backup + db 2, 10 ; start coords + db 17, 19 ; end coords + dw .MenuData + db 1 ; default selection -TimesOfDay: ; 14044 -; hours for the time of day -; 04-09 morn | 10-17 day | 18-03 nite - db 04, NITE - db 10, MORN - db 18, DAY - db 24, NITE -; 1404c +.MenuData + db %10101000 ; x padding, wrap around, start can close + dn 0, 0 ; rows, columns + dw MenuItemsList + dw .MenuString + dw .Items + +.Items + dw StartMenu_Pokedex, .PokedexString, .PokedexDesc + dw StartMenu_Pokemon, .PartyString, .PartyDesc + dw StartMenu_Pack, .PackString, .PackDesc + dw StartMenu_Status, .StatusString, .StatusDesc + dw StartMenu_Save, .SaveString, .SaveDesc + dw StartMenu_Option, .OptionString, .OptionDesc + dw StartMenu_Exit, .ExitString, .ExitDesc + dw StartMenu_Pokegear, .PokegearString, .PokegearDesc + dw StartMenu_Quit, .QuitString, .QuitDesc +.PokedexString db "#DEX@" +.PartyString db "#MON@" +.PackString db "PACK@" +.StatusString db $52, "@" +.SaveString db "SAVE@" +.OptionString db "OPTION@" +.ExitString db "EXIT@" +.PokegearString db $24, "GEAR@" +.QuitString db "QUIT@" -INCBIN "baserom.gbc", $1404c, $14089 - $1404c +.PokedexDesc db "#MON", $4e, "database@" +.PartyDesc db "Party ", $4a, $4e, "status@" +.PackDesc db "Contains", $4e, "items@" +.PokegearDesc db "Trainer's", $4e, "key device@" +.StatusDesc db "Your own", $4e, "status@" +.SaveDesc db "Save your", $4e, "progress@" +.OptionDesc db "Change", $4e, "settings@" +.ExitDesc db "Close this", $4e, "menu@" +.QuitDesc db "Quit and", $4e, "be judged.@" -Function14089: ; 14089 - call GetClock - call Function1409b - call FixDays - jr nc, .asm_14097 - call Function6d3 +.OpenMenu ; 127e5 + ld a, [MenuSelection] + call .GetMenuAccountTextPointer + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 127ef -.asm_14097 - call Function14019 +.MenuString ; 127ef + push de + ld a, [MenuSelection] + call .GetMenuAccountTextPointer + inc hl + inc hl + ld a, [hli] + ld d, [hl] + ld e, a + pop hl + call PlaceString ret -; 1409b +; 12800 -Function1409b: ; 1409b - ld hl, hRTCDayHi - bit 7, [hl] - jr nz, .asm_140a8 - bit 6, [hl] - jr nz, .asm_140a8 - xor a +.MenuDesc ; 12800 + push de + ld a, [MenuSelection] + cp $ff + jr z, .none + call .GetMenuAccountTextPointer + inc hl + inc hl + inc hl + inc hl + ld a, [hli] + ld d, [hl] + ld e, a + pop hl + call PlaceString ret - -.asm_140a8 - ld a, $80 - call Function6d3 +.none + pop de ret -; 140ae - -INCBIN "baserom.gbc", $140ae, $14183 - $140ae - - -GetPlayerSprite: ; 14183 -; Get Chris or Kris's sprite. +; 12819 - ld hl, .Chris - ld a, [$d45b] - 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 +.GetMenuAccountTextPointer ; 12819 + ld e, a + ld d, 0 + ld hl, $cf97 ld a, [hli] - cp c - jr z, .asm_141ac - inc hl - cp $ff - jr nz, .loop + ld h, [hl] + ld l, a + add hl, de + add hl, de + add hl, de + add hl, de + add hl, de + add hl, de + ret +; 12829 -; 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 .asm_141ad -.asm_141ac - ld a, [hl] +.SetUpMenuItems ; 12829 + xor a + ld [$cf76], a + call .FillMenuList -.asm_141ad - ld [UsedSprites + 0], a - ld [$d4d6], a - ld [$d71f], a - ret + ld hl, StatusFlags + bit 0, [hl] + jr z, .no_pokedex + ld a, 0 ; pokedex + call .AppendMenuList +.no_pokedex -.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 + ld a, [PartyCount] + and a + jr z, .no_pokemon + ld a, 1 ; pokemon + call .AppendMenuList +.no_pokemon -.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 + ld a, [InLinkBattle] + and a + jr nz, .no_pack + ld hl, StatusFlags2 + bit 2, [hl] ; bug catching contest + jr nz, .no_pack + ld a, 2 ; pack + call .AppendMenuList +.no_pack + ld hl, $d957 + bit 7, [hl] + jr z, .no_pokegear + ld a, 7 ; pokegear + call .AppendMenuList +.no_pokegear -AddMapSprites: ; 141c9 - call GetMapPermission - call CheckOutdoorMap - jr z, .outdoor - call AddIndoorSprites - ret -.outdoor - call AddOutdoorSprites - ret -; 141d9 + ld a, 3 ; status + call .AppendMenuList + ld a, [InLinkBattle] + and a + jr nz, .no_save + ld hl, StatusFlags2 + bit 2, [hl] ; bug catching contest + ld a, 8 ; quit + jr nz, .write + ld a, 4 ; save +.write + call .AppendMenuList +.no_save -AddIndoorSprites: ; 141d9 - ld hl, MapObjects + 1 * OBJECT_LENGTH + 1 ; sprite - 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 + ld a, 5 ; option + call .AppendMenuList + ld a, 6 ; exit + call .AppendMenuList + ld a, c + ld [MenuItemsList], a ret -; 141ee +; 1288d -AddOutdoorSprites: ; 141ee - ld a, [MapGroup] - dec a - ld c, a - ld b, 0 - ld hl, OutdoorSprites - add hl, bc - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld c, $17 -.loop - push bc - ld a, [hli] - call AddSpriteGFX - pop bc - dec c - jr nz, .loop +.FillMenuList ; 1288d + xor a + ld hl, MenuItemsList + ld [hli], a + ld a, $ff + ld bc, $000f + call ByteFill + ld de, MenuItemsList + 1 + ld c, 0 ret -; 14209 +; 128a0 + +.AppendMenuList ; 128a0 + ld [de], a + inc de + inc c + ret +; 128a4 +.DrawMenuAccount_ ; 128a4 + jp .DrawMenuAccount +; 128a7 -INCBIN "baserom.gbc", $14209, $14236 - $14209 +.PrintMenuAccount ; 128a7 + call .IsMenuAccountOn + ret z + call .DrawMenuAccount + decoord 0, 14 + jp .MenuDesc +; 128b4 +.DrawMenuAccount ; 128b4 + call .IsMenuAccountOn + ret z + hlcoord 0, 13 + ld bc, $050a + call ClearBox + hlcoord 0, 13 + ld b, 3 + ld c, 8 + jp TextBoxPalette +; 128cb -SafeGetSprite: ; 14236 - push hl - call GetSprite - pop hl +.IsMenuAccountOn ; 128cb + ld a, [Options2] + and 1 ret -; 1423c - -GetSprite: ; 1423c - call GetMonSprite - ret c +; 128d1 - ld hl, SpriteHeaders - dec a - ld c, a - ld b, 0 - ld a, 6 - call AddNTimes - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - ld a, [hli] - swap a - ld c, a - ld b, [hl] - ld a, [hli] - ld l, [hl] - ld h, a +.DrawBugContestStatusBox ; 128d1 + ld hl, StatusFlags2 + bit 2, [hl] ; bug catching contest + ret z + ld a, $9 + ld hl, $4bdc + rst FarCall ret -; 14259 +; 128de +.DrawBugContestStatus ; 128de + ld hl, StatusFlags2 + bit 2, [hl] ; bug catching contest + jr nz, .contest + ret +.contest + ld a, $9 + ld hl, $4be7 + rst FarCall + ret +; 128ed -GetMonSprite: ; 14259 -; Return carry if a monster sprite was loaded. - cp SPRITE_POKEMON - jr c, .Normal - cp SPRITE_DAYCARE_MON_1 - jr z, .BreedMon1 - cp SPRITE_DAYCARE_MON_2 - jr z, .BreedMon2 - cp SPRITE_VARS - jr nc, .Variable - jr .Icon +StartMenu_Exit: ; 128ed +; Exit the menu. -.Normal - and a + ld a, 1 ret +; 128f0 -.Icon - sub SPRITE_POKEMON - ld e, a - ld d, 0 - ld hl, SpriteMons - add hl, de - ld a, [hl] - jr .Mon - -.BreedMon1 - ld a, [BreedMon1Species] - jr .Mon -.BreedMon2 - ld a, [BreedMon2Species] +StartMenu_Quit: ; 128f0 +; Retire from the bug catching contest. -.Mon - ld e, a - and a - jr z, .asm_1429f + ld hl, .EndTheContestText + call $6cf5 + jr c, .asm_12903 + ld a, $4 + ld hl, $760b + call $31cf + ld a, 4 + ret +.asm_12903 + ld a, 0 + ret - ld a, $23 - ld hl, $682b - rst FarCall ; callba LoadMonSprite +.EndTheContestText + text_jump UnknownText_0x1c1a6c, BANK(UnknownText_0x1c1a6c) + db "@" +; 1290b - 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 +StartMenu_Save: ; 1290b +; Save the game. -.asm_1429f + call $2879 + ld a, $5 + ld hl, $4a1a + rst FarCall + jr nc, .asm_12919 + ld a, 0 + ret +.asm_12919 ld a, 1 - ld l, 1 - ld h, 0 - and a ret -; 142a7 +; 1291c -Function142a7: ; 142a7 - cp SPRITE_POKEMON - jr nc, .asm_142c2 +StartMenu_Option: ; 1291c +; Game options. - push hl - push bc - ld hl, SpriteHeaders + 4 - dec a - ld c, a - ld b, 0 + call FadeToMenu + callba OptionsMenu ld a, 6 - call AddNTimes - ld a, [hl] - pop bc - pop hl - cp 3 - jr nz, .asm_142c2 - scf ret +; 12928 -.asm_142c2 - and a + +StartMenu_Status: ; 12928 +; Player status. + + call FadeToMenu + ld a, $9 + ld hl, $5105 + rst FarCall + call $2b3c + ld a, 0 ret -; 142c4 +; 12937 -GetSpritePalette: ; 142c4 - ld a, c - call GetMonSprite - jr c, .asm_142d8 +StartMenu_Pokedex: ; 12937 - ld hl, SpriteHeaders + 5 ; palette - dec a - ld c, a - ld b, 0 - ld a, 6 - call AddNTimes - ld c, [hl] - ret + ld a, [PartyCount] + and a + jr z, .asm_12949 -.asm_142d8 - xor a - ld c, a + call FadeToMenu + ld a, $10 + ld hl, $4000 + rst FarCall + call $2b3c + +.asm_12949 + ld a, 0 ret -; 142db +; 1294c -Function142db: ; 142db - call LoadSpriteGFX - call SortUsedSprites - call ArrangeUsedSprites +StartMenu_Pokegear: ; 1294c + + call FadeToMenu + ld a, $24 + ld hl, $4b8d + rst FarCall + call $2b3c + ld a, 0 ret -; 142e5 +; 1295b -AddSpriteGFX: ; 142e5 -; Add any new sprite ids to a list of graphics to be loaded. -; Return carry if the list is full. +StartMenu_Pack: ; 1295b - push hl - push bc - ld b, a - ld hl, UsedSprites + 2 - ld c, $1f -.loop - ld a, [hl] - cp b - jr z, .exists + call FadeToMenu + ld a, $4 + ld hl, $4000 + rst FarCall + ld a, [$cf66] and a - jr z, .new - inc hl - inc hl - dec c - jr nz, .loop - - pop bc - pop hl - scf + jr nz, .asm_12970 + call $2b3c + ld a, 0 ret - -.exists - pop bc - pop hl - and a +.asm_12970 + call $2b4d + ld a, 4 ret +; 12976 -.new - ld [hl], b - pop bc - pop hl + +StartMenu_Pokemon: ; 12976 + + ld a, [PartyCount] and a - ret -; 14306 + jr z, .return + call FadeToMenu -LoadSpriteGFX: ; 14306 +.choosemenu + xor a + ld [PartyMenuActionText], a ; Choose a POKéMON. + call WhiteBGMap - ld hl, UsedSprites - ld b, $20 -.loop - ld a, [hli] - and a - jr z, .done - push hl - call .LoadSprite - pop hl - ld [hli], a - dec b - jr nz, .loop +.menu + ld a, $14 + ld hl, $404f + rst FarCall ; load gfx + ld a, $14 + ld hl, $4405 + rst FarCall ; setup menu? + ld a, $14 + ld hl, $43e0 + rst FarCall ; load menu pokémon sprites -.done - ret +.menunoreload + callba WritePartyMenuTilemap + callba PrintPartyMenuText + call WaitBGMap + call Function32f9 ; load regular palettes? + call DelayFrame + callba PartyMenuSelect + jr c, .return ; if cancelled or pressed B -.LoadSprite - call GetSprite - ld a, l + call PokemonActionSubmenu + cp 3 + jr z, .menu + cp 0 + jr z, .choosemenu + cp 1 + jr z, .menunoreload + cp 2 + jr z, .quit + +.return + call $2b3c + ld a, 0 ret -; 1431e +.quit + ld a, b + push af + call $2b4d + pop af + ret +; 129d5 -SortUsedSprites: ; 1431e -; Bubble-sort sprites by type. -; Run backwards through UsedSprites to find the last one. +INCBIN "baserom.gbc", $129d5, $12a60 - $129d5 - ld c, $20 - ld de, UsedSprites + ($20 - 1) * 2 -.FindLastSprite - ld a, [de] - and a - jr nz, .FoundLastSprite - dec de - dec de - 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. +CantUseItem: ; 12a60 + ld hl, CantUseItemText + call $2012 + ret +; 12a67 - inc de - ld hl, UsedSprites + 1 +CantUseItemText: ; 12a67 + text_jump UnknownText_0x1c1b03, BANK(UnknownText_0x1c1b03) + db "@" +; 12a6c -.CheckSprite - push bc - push de - push hl -.CheckFollowing - ld a, [de] - cp [hl] - jr nc, .next +PartyMonItemName: ; 12a6c + ld a, [CurItem] + ld [$d265], a + call GetItemName + call CopyName1 + ret +; 12a79 -; 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 +CancelPokemonAction: ; 12a79 + ld a, $14 + ld hl, $4405 + rst FarCall + ld a, $23 + ld hl, $6a71 + rst FarCall + ld a, 1 + ret +; 12a88 -; Keep doing this until everything's in order. -.next - dec de - dec de - dec c - jr nz, .CheckFollowing +PokemonActionSubmenu: ; 12a88 + hlcoord 1, 15 + ld bc, $0212 ; box size + call ClearBox + ld a, $9 + ld hl, $4d19 + rst FarCall + call $389c + ld a, [MenuSelection] + ld hl, .Actions + ld de, 3 + call IsInArray + jr nc, .nothing - pop hl - inc hl inc hl - pop de - pop bc - dec c - jr nz, .CheckSprite + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] -.quit +.nothing + ld a, 0 ret -; 14355 +.Actions + dbw $01, $6e1b + dbw $02, $6e30 + dbw $03, $6ebd + dbw $04, $6e6a + dbw $06, $6e55 + dbw $07, $6e7f + dbw $08, $6ed1 + dbw $09, $6ea9 + dbw $0a, $6ee6 + dbw $0d, $6ee6 + dbw $0b, $6f26 + dbw $05, $6e94 + dbw $0c, $6f3b + dbw $0e, $6f50 + dbw $0f, OpenPartyStats + dbw $10, SwitchPartyMons + dbw $11, GiveTakePartyMonItem + dbw $12, CancelPokemonAction + dbw $13, $6fba ; move + dbw $14, $6d45 ; mail +; 12aec -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, $20 - ld b, 0 -.FirstTableLength -; Keep going until the end of the list. - ld a, [hli] - and a - jr z, .quit +SwitchPartyMons: ; 12aec - ld a, [hl] - call GetSpriteLength +; Don't try if there's nothing to switch! + ld a, [PartyCount] + cp 2 + jr c, .DontSwitch -; Spill over into the second table after $80 tiles. - add b - cp $80 - jr z, .next - jr nc, .SecondTable + ld a, [CurPartyMon] + inc a + ld [$d0e3], a -.next - ld [hl], b - inc hl - ld b, a + ld a, $23 + ld hl, $6a8c + rst FarCall + ld a, $14 + ld hl, $442d + rst FarCall -; Assumes the next table will be reached before c hits 0. - dec c - jr nz, .FirstTableLength + ld a, 4 + ld [PartyMenuActionText], a + callba WritePartyMenuTilemap + callba PrintPartyMenuText -.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 + hlcoord 0, 1 + ld bc, 20 * 2 + ld a, [$d0e3] + dec a + call AddNTimes + ld [hl], "▷" + call WaitBGMap + call Function32f9 + call DelayFrame - ld a, [hl] - call GetSpriteLength + callba PartyMenuSelect + bit 1, b + jr c, .DontSwitch -; There are only two tables, so don't go any further than that. - add b - jr c, .quit + ld a, $14 + ld hl, $4f12 + rst FarCall - ld [hl], b - ld b, a - inc hl + xor a + ld [PartyMenuActionText], a - dec c - jr nz, .SecondTableLength + ld a, $14 + ld hl, $404f + rst FarCall + ld a, $14 + ld hl, $4405 + rst FarCall + ld a, $14 + ld hl, $43e0 + rst FarCall -.quit + ld a, 1 ret -; 14386 +.DontSwitch + xor a + ld [PartyMenuActionText], a + call CancelPokemonAction + ret +; 12b60 -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 +GiveTakePartyMonItem: ; 12b60 - ld a, 12 +; Eggs can't hold items! + ld a, [CurPartySpecies] + cp EGG + jr z, .asm_12ba6 + + ld hl, GiveTakeItemMenuData + call Function1d35 + call Function1d81 + call Function1c07 + jr c, .asm_12ba6 + + call $389c + ld hl, StringBuffer1 + ld de, $d050 + ld bc, $b + call CopyBytes + ld a, [$cfa9] + cp 1 + jr nz, .asm_12ba0 + + call $1d6e + call ClearPalettes + call Function12ba9 + call ClearPalettes + call $0e58 + call Function1c07 + ld a, 0 ret -.AnyDirection - ld a, 12 +.asm_12ba0 + call TakePartyItem + ld a, 3 ret -.OneDirection - ld a, 4 +.asm_12ba6 + ld a, 3 ret -; 1439b +; 12ba9 -INCBIN "baserom.gbc", $1439b, $14495 - $1439b +Function12ba9: ; 12ba9 + ld a, $4 + ld hl, $46a5 + rst FarCall -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 - +.loop + ld a, $4 + ld hl, $46be + rst FarCall -OutdoorSprites: ; 144b8 -; Valid sprite IDs for each map group. + ld a, [$cf66] + and a + jr z, .quit - 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 + ld a, [$cf65] + cp 2 + jr z, .next + call CheckTossableItem + ld a, [$d142] + and a + jr nz, .next -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 + call Function12bd9 + jr .quit -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 +.next + ld hl, CantBeHeldText + call $1d67 + jr .loop -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 +.quit + ret +; 12bd9 -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 +Function12bd9: ; 12bd9 -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 + call SpeechTextBox + call PartyMonItemName + call GetPartyItemLocation + ld a, [hl] + and a + jr z, .asm_12bf4 -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 + push hl + ld d, a + ld a, $2e + ld hl, $5e76 + rst FarCall + pop hl + jr c, .asm_12c01 + ld a, [hl] + jr .asm_12c08 -Group18Sprites: ; 1458d - db SPRITE_SUICUNE - db SPRITE_SILVER_TROPHY - db SPRITE_FAMICOM +.asm_12bf4 + call $6cea + ld hl, MadeHoldText + call $1d67 + call GivePartyItem + ret + +.asm_12c01 + ld hl, PleaseRemoveMailText + call $1d67 + ret + +.asm_12c08 + ld [$d265], a + call GetItemName + ld hl, SwitchAlreadyHoldingText + call $6cf5 + jr c, .asm_12c4b + + call $6cea + ld a, [$d265] + push af + ld a, [CurItem] + ld [$d265], a + pop af + ld [CurItem], a + call $6cdf + jr nc, .asm_12c3c + + ld hl, TookAndMadeHoldText + call $1d67 + ld a, [$d265] + ld [CurItem], a + call GivePartyItem + ret + +.asm_12c3c + ld a, [$d265] + ld [CurItem], a + call $6cdf + ld hl, ItemStorageIsFullText + call $1d67 + +.asm_12c4b + ret +; 12c4c + + +GivePartyItem: ; 12c4c + + call GetPartyItemLocation + ld a, [CurItem] + ld [hl], a + ld d, a + ld a, $2e + ld hl, $5e76 + rst FarCall + jr nc, .asm_12c5f + call $6cfe + +.asm_12c5f + ret +; 12c60 + + +TakePartyItem: ; 12c60 + + call SpeechTextBox + call GetPartyItemLocation + ld a, [hl] + and a + jr z, .asm_12c8c + + ld [CurItem], a + call $6cdf + jr nc, .asm_12c94 + + ld a, $2e + ld hl, $5e76 + rst FarCall + call GetPartyItemLocation + ld a, [hl] + ld [$d265], a + ld [hl], NO_ITEM + call GetItemName + ld hl, TookFromText + call $1d67 + jr .asm_12c9a + +.asm_12c8c + ld hl, IsntHoldingAnythingText + call $1d67 + jr .asm_12c9a + +.asm_12c94 + ld hl, ItemStorageIsFullText + call $1d67 + +.asm_12c9a + ret +; 12c9b + + +GiveTakeItemMenuData: ; 12c9b + db %01010000 + db 12, 12 ; start coords + db 17, 19 ; end coords + dw .Items + db 1 ; default option + +.Items + db %10000000 ; x padding + db 2 ; # items + db "GIVE@" + db "TAKE@" +; 12caf + + +TookAndMadeHoldText: ; 12caf + text_jump UnknownText_0x1c1b2c, BANK(UnknownText_0x1c1b2c) + db "@" +; 12cb4 + +MadeHoldText: ; 12cb4 + text_jump UnknownText_0x1c1b57, BANK(UnknownText_0x1c1b57) + db "@" +; 12cb9 + +PleaseRemoveMailText: ; 12cb9 + text_jump UnknownText_0x1c1b6f, BANK(UnknownText_0x1c1b6f) + db "@" +; 12cbe + +IsntHoldingAnythingText: ; 12cbe + text_jump UnknownText_0x1c1b8e, BANK(UnknownText_0x1c1b8e) + db "@" +; 12cc3 + +ItemStorageIsFullText: ; 12cc3 + text_jump UnknownText_0x1c1baa, BANK(UnknownText_0x1c1baa) + db "@" +; 12cc8 + +TookFromText: ; 12cc8 + text_jump UnknownText_0x1c1bc4, BANK(UnknownText_0x1c1bc4) + db "@" +; 12ccd + +SwitchAlreadyHoldingText: ; 12ccd + text_jump UnknownText_0x1c1bdc, BANK(UnknownText_0x1c1bdc) + db "@" +; 12cd2 + +CantBeHeldText: ; 12cd2 + text_jump UnknownText_0x1c1c09, BANK(UnknownText_0x1c1c09) + db "@" +; 12cd7 + + +GetPartyItemLocation: ; 12cd7 + push af + ld a, PartyMon1Item - PartyMon1 + call GetPartyParamLocation + pop af + ret +; 12cdf + + +INCBIN "baserom.gbc", $12cdf, $12e00 - $12cdf + + +OpenPartyStats: ; 12e00 + call $1d6e + call ClearSprites +; PartyMon + xor a + ld [MonType], a + call LowVolume + ld a, $25 + call Predef + call MaxVolume + call $1d7d + ld a, 0 + ret +; 12e1b + + +INCBIN "baserom.gbc", $12e1b, $13327 - $12e1b + + +SelectMenu: ; 13327 + + call CheckRegisteredItem + jr c, .NotRegistered + jp UseRegisteredItem + +.NotRegistered + call $2e08 + ld b, BANK(ItemMayBeRegisteredText) + ld hl, ItemMayBeRegisteredText + call $269a + call $0a46 + jp $2dcf +; 13340 + + +ItemMayBeRegisteredText: ; 13340 + text_jump UnknownText_0x1c1cf3, BANK(UnknownText_0x1c1cf3) + db "@" +; 13345 + + +CheckRegisteredItem: ; 13345 + + ld a, [WhichRegisteredItem] + and a + jr z, .NoRegisteredItem + and REGISTERED_POCKET + rlca + rlca + ld hl, .Pockets + rst JumpTable + ret + +.Pockets + dw .CheckItem + dw .CheckBall + dw .CheckKeyItem + dw .CheckTMHM + +.CheckItem + ld hl, NumItems + call .CheckRegisteredNo + jr c, .NoRegisteredItem + inc hl + ld e, a + ld d, 0 + add hl, de + add hl, de + call .IsSameItem + jr c, .NoRegisteredItem + and a + ret + +.CheckKeyItem + ld a, [RegisteredItem] + ld hl, KeyItems + ld de, 1 + call IsInArray + jr nc, .NoRegisteredItem + ld a, [RegisteredItem] + ld [CurItem], a + and a + ret + +.CheckBall + ld hl, NumBalls + call .CheckRegisteredNo + jr nc, .NoRegisteredItem + inc hl + ld e, a + ld d, 0 + add hl, de + add hl, de + call .IsSameItem + jr c, .NoRegisteredItem + ret + +.CheckTMHM + jr .NoRegisteredItem + +.NoRegisteredItem + xor a + ld [WhichRegisteredItem], a + ld [RegisteredItem], a + scf + ret +; 133a6 + + +.CheckRegisteredNo ; 133a6 + ld a, [WhichRegisteredItem] + and REGISTERED_NUMBER + dec a + cp [hl] + jr nc, .NotEnoughItems + ld [$d107], a + and a + ret + +.NotEnoughItems + scf + ret +; 133b6 + + +.IsSameItem ; 133b6 + ld a, [RegisteredItem] + cp [hl] + jr nz, .NotSameItem + ld [CurItem], a + and a + ret + +.NotSameItem + scf + ret +; 133c3 + + +UseRegisteredItem: ; 133c3 + + callba CheckItemMenu + ld a, [$d142] + ld hl, .SwitchTo + rst JumpTable + ret + +.SwitchTo + dw .CantUse + dw .NoFunction + dw .NoFunction + dw .NoFunction + dw .Current + dw .Party + dw .Overworld +; 133df + +.NoFunction ; 133df + call $2e08 + call CantUseItem + call $2dcf + and a + ret +; 133ea + +.Current ; 133ea + call $2e08 + call DoItemEffect + call $2dcf + and a + ret +; 133f5 + +.Party ; 133f5 + call ResetWindow + call FadeToMenu + call DoItemEffect + call $2b3c + call $2dcf + and a + ret +; 13406 + +.Overworld ; 13406 + call ResetWindow + ld a, 1 + ld [$d0ef], a + call DoItemEffect + xor a + ld [$d0ef], a + ld a, [$d0ec] + cp 1 + jr nz, .asm_13425 + scf + ld a, $80 + ld [$ffa0], a + ret +; 13422 + +.CantUse ; 13422 + call ResetWindow + +.asm_13425 + call CantUseItem + call $2dcf + and a + ret +; 1342d + + +Function1342d: ; 1342d + call $744a + call $747d + jr c, .asm_13448 + ld [$d041], a + call $74dd + jr c, .asm_13448 + ld hl, $d041 + cp [hl] + jr z, .asm_13448 + call $74c0 + and a + ret + +.asm_13448 + scf + ret +; 1344a + +Function1344a: ; 1344a + ld a, b + ld [EngineBuffer1], a + ld a, e + ld [CurFruit], a + ld a, d + ld [$d040], a + call $745a + ret +; 1345a + +Function1345a: ; 1345a + ld de, $d0f0 + ld bc, $0004 + ld hl, CurFruit + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [EngineBuffer1] + call GetFarByte + inc hl + ld [de], a + inc de +.asm_1346f + ld a, [EngineBuffer1] + call GetFarByte + ld [de], a + inc de + add hl, bc + cp $ff + jr nz, .asm_1346f + ret +; 1347d + +Function1347d: ; 1347d + ld hl, CurFruit + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [EngineBuffer1] + call GetFarByte + ld c, a + inc hl + ld a, [BackupMapGroup] + ld d, a + ld a, [BackupMapNumber] + ld e, a + ld b, $0 +.asm_13495 + ld a, [EngineBuffer1] + call GetFarByte + cp $ff + jr z, .asm_134be + inc hl + inc hl + ld a, [EngineBuffer1] + call GetFarByte + inc hl + cp d + jr nz, .asm_134b7 + ld a, [EngineBuffer1] + call GetFarByte + inc hl + cp e + jr nz, .asm_134b8 + jr .asm_134bb + +.asm_134b7 + inc hl + +.asm_134b8 + inc b + jr .asm_13495 + +.asm_134bb + xor a + ld a, b + ret + +.asm_134be + scf + ret +; 134c0 + +Function134c0: ; 134c0 + push af + ld hl, CurFruit + ld a, [hli] + ld h, [hl] + ld l, a + inc hl + pop af + ld bc, $0004 + call AddNTimes + inc hl + ld de, $dcac + ld a, [EngineBuffer1] + ld bc, $0003 + call FarCopyBytes + ret +; 134dd + +Function134dd: ; 134dd + call $1d6e + ld hl, $750d + call PrintText + call $7512 + ld hl, $7550 + call Function1d3c + call $352f + call $1ad2 + xor a + ld [$d0e4], a + call $350c + call Function1c17 + ld a, [$cf73] + cp $2 + jr z, .asm_1350b + xor a + ld a, [$cf77] + ret + +.asm_1350b + scf + ret +; 1350d + +INCBIN "baserom.gbc", $1350d, $13512 - $1350d + + +Function13512: ; 13512 + ld hl, Options + ld a, [hl] + push af + set 4, [hl] + ld hl, TileMap + ld b, $4 + ld c, $8 + call TextBox + ld hl, $c4c9 + ld de, $7537 + call PlaceString + ld hl, $c4f4 + call $753f + pop af + ld [Options], a + ret +; 13537 + +INCBIN "baserom.gbc", $13537, $1353f - $13537 + + +Function1353f: ; 1353f + push hl + ld a, [$d041] + ld e, a + ld d, $0 + ld hl, $d0f1 + add hl, de + ld a, [hl] + pop de + call $756b + ret +; 13550 + +INCBIN "baserom.gbc", $13550, $1356b - $13550 + + +Function1356b: ; 1356b + push de + call $7575 + ld d, h + ld e, l + pop hl + jp PlaceString +; 13575 + +Function13575: ; 13575 + push de + ld e, a + ld d, $0 + ld hl, $7583 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + pop de + ret +; 13583 + +INCBIN "baserom.gbc", $13583, $13b87 - $13583 + + +GetSquareRoot: ; 13b87 +; Return the square root of de in b. + +; Rather than calculating the result, we take the index of the +; first value in a table of squares that isn't lower than de. + + ld hl, Squares + ld b, 0 +.loop +; Make sure we don't go past the end of the table. + inc b + ld a, b + cp $ff + ret z + +; Iterate over the table until b**2 >= de. + ld a, [hli] + sub e + ld a, [hli] + sbc d + + jr c, .loop + ret + +Squares: ; 13b98 +root set 1 + rept $ff + dw root*root +root set root+1 + endr +; 13d96 + + +SECTION "bank5",DATA,BANK[$5] + + +Function14000: ; 14000 + ld a, $a + ld [$0000], a + call LatchClock + ld a, $c + ld [$4000], a + ld a, [$a000] + set 6, a + ld [$a000], a + call CloseSRAM + ret +; 14019 + + + +Function14019: ; 14019 + ld a, $a + ld [$0000], a + call LatchClock + ld a, $c + ld [$4000], a + ld a, [$a000] + res 6, a + ld [$a000], a + call CloseSRAM + ret +; 14032 + + + +GetTimeOfDay: ; 14032 +; get time of day based on the current hour + ld a, [hHours] ; hour + ld hl, TimesOfDay + +.check +; if we're within the given time period, +; get the corresponding time of day + cp [hl] + jr c, .match +; else, get the next entry + inc hl + inc hl +; try again + jr .check + +.match +; get time of day + inc hl + ld a, [hl] + ld [TimeOfDay], a + ret +; 14044 + +TimesOfDay: ; 14044 +; hours for the time of day +; 04-09 morn | 10-17 day | 18-03 nite + db 04, NITE + db 10, MORN + db 18, DAY + db 24, NITE +; 1404c + + +INCBIN "baserom.gbc", $1404c, $14056 - $1404c + + +Function14056: ; 14056 + call UpdateTime + ld hl, $d4ba + ld a, [CurDay] + ld [hli], a + ld a, [hHours] + ld [hli], a + ld a, [hMinutes] + ld [hli], a + ld a, [hSeconds] + ld [hli], a + ret +; 1406a + +Function1406a: ; 1406a + ld a, $a + ld [$0000], a + call LatchClock + ld hl, $a000 + ld a, $c + ld [$4000], a + res 7, [hl] + ld a, $0 + ld [$4000], a + xor a + ld [$ac60], a + call CloseSRAM + ret +; 14089 + + + +Function14089: ; 14089 + call GetClock + call Function1409b + call FixDays + jr nc, .asm_14097 + call Function6d3 + +.asm_14097 + call Function14019 + ret +; 1409b + +Function1409b: ; 1409b + ld hl, hRTCDayHi + bit 7, [hl] + jr nz, .asm_140a8 + bit 6, [hl] + jr nz, .asm_140a8 + xor a + ret + +.asm_140a8 + ld a, $80 + call Function6d3 + ret +; 140ae + +Function140ae: ; 140ae + call $06e3 + ld c, a + and $c0 + jr nz, .asm_140c8 + ld a, c + and $20 + jr z, .asm_140eb + call UpdateTime + ld a, [$d4ba] + ld b, a + ld a, [CurDay] + cp b + jr c, .asm_140eb + +.asm_140c8 + ld a, $4 + ld hl, $53da + rst FarCall + ld a, $5c + ld hl, $4923 + rst FarCall + ld a, $5 + call GetSRAMBank + ld a, [$aa8c] + inc a + ld [$aa8c], a + ld a, [$b2fa] + inc a + ld [$b2fa], a + call CloseSRAM + ret + +.asm_140eb + xor a + ret +; 140ed + + + +Function140ed: ; 140ed + call GetClock + call FixDays + ld hl, hRTCSeconds + ld de, StartSecond + ld a, [$d089] + sub [hl] + dec hl + jr nc, .asm_14102 + add $3c + +.asm_14102 + ld [de], a + dec de + ld a, [$d088] + sbc [hl] + dec hl + jr nc, .asm_1410d + add $3c + +.asm_1410d + ld [de], a + dec de + ld a, [$d087] + sbc [hl] + dec hl + jr nc, .asm_14118 + add $18 + +.asm_14118 + ld [de], a + dec de + ld a, [StringBuffer2] + sbc [hl] + dec hl + jr nc, .asm_14128 + add $8c + ld c, $7 + call SimpleDivide + +.asm_14128 + ld [de], a + ret +; 1412a + +Function1412a: ; 1412a + ld a, $1 + ld [rVBK], a + call Functionf82 + xor a + ld [rVBK], a + ret +; 14135 + +Function14135: ; 14135 + call GetPlayerSprite + ld a, [UsedSprites] + ld [$ffbd], a + ld a, [$d155] + ld [$ffbe], a + call $43c8 + ret +; 14146 + +INCBIN "baserom.gbc", $14146, $14168 - $14146 + + +Function14168: ; 14168 + call $416f + call $4209 + ret +; 1416f + +Function1416f: ; 1416f + xor a + ld bc, $0040 + ld hl, UsedSprites + call ByteFill + call GetPlayerSprite + call AddMapSprites + call Function142db + ret +; 14183 + + + +GetPlayerSprite: ; 14183 +; Get Chris or Kris's sprite. + + ld hl, .Chris + ld a, [$d45b] + 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, .asm_141ac + 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 .asm_141ad + +.asm_141ac + ld a, [hl] + +.asm_141ad + ld [UsedSprites + 0], a + ld [$d4d6], a + ld [$d71f], 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, MapObjects + 1 * OBJECT_LENGTH + 1 ; sprite + 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 + add hl, bc + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld c, $17 +.loop + push bc + ld a, [hli] + call AddSpriteGFX + pop bc + dec c + jr nz, .loop + ret +; 14209 + + +Function14209: ; 14209 + ld a, $4 + call $263b + call $439b + call $4215 + ret +; 14215 + +Function14215: ; 14215 + ld a, [$d13e] + bit 6, a + ret nz + ld c, $8 + ld a, $5 + ld hl, $442f + rst FarCall + call GetMapPermission + call CheckOutdoorMap + ld c, $b + jr z, .asm_1422f + ld c, $a + +.asm_1422f + ld a, $5 + ld hl, $442f + rst FarCall + ret +; 14236 + + + +SafeGetSprite: ; 14236 + push hl + call GetSprite + pop hl + ret +; 1423c + +GetSprite: ; 1423c + call GetMonSprite + ret c + + ld hl, SpriteHeaders + dec a + ld c, a + ld b, 0 + ld a, 6 + call AddNTimes + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + swap a + ld c, a + ld b, [hl] + ld a, [hli] + 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, .BreedMon1 + cp SPRITE_DAYCARE_MON_2 + jr z, .BreedMon2 + 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 + +.BreedMon1 + ld a, [BreedMon1Species] + jr .Mon + +.BreedMon2 + ld a, [BreedMon2Species] + +.Mon + ld e, a + and a + jr z, .asm_1429f + + ld a, $23 + ld hl, $682b + rst FarCall ; callba LoadMonSprite + + 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 + +.asm_1429f + ld a, 1 + ld l, 1 + ld h, 0 + and a + ret +; 142a7 + + +Function142a7: ; 142a7 + cp SPRITE_POKEMON + jr nc, .asm_142c2 + + push hl + push bc + ld hl, SpriteHeaders + 4 + dec a + ld c, a + ld b, 0 + ld a, 6 + call AddNTimes + ld a, [hl] + pop bc + pop hl + cp 3 + jr nz, .asm_142c2 + scf + ret + +.asm_142c2 + and a + ret +; 142c4 + + +GetSpritePalette: ; 142c4 + ld a, c + call GetMonSprite + jr c, .asm_142d8 + + ld hl, SpriteHeaders + 5 ; palette + dec a + ld c, a + ld b, 0 + ld a, 6 + call AddNTimes + ld c, [hl] + ret + +.asm_142d8 + xor a + ld c, a + ret +; 142db + + +Function142db: ; 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, $1f +.loop + ld a, [hl] + cp b + jr z, .exists + and a + jr z, .new + inc hl + inc hl + 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 + + ld hl, UsedSprites + ld b, $20 +.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, $20 + ld de, UsedSprites + ($20 - 1) * 2 +.FindLastSprite + ld a, [de] + and a + jr nz, .FoundLastSprite + dec de + dec de + 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, .next + +; 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. + +.next + dec de + dec de + dec c + jr nz, .CheckFollowing + + pop hl + inc hl + inc hl + 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, $20 + 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, .next + jr nc, .SecondTable + +.next + 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, $20 +.asm_143a0 + ld a, [$d13e] + res 5, a + ld [$d13e], a + ld a, [hli] + and a + jr z, .asm_143c7 + ld [$ffbd], a + ld a, [hli] + ld [$ffbe], a + bit 7, a + jr z, .asm_143bd + ld a, [$d13e] + set 5, a + ld [$d13e], a + +.asm_143bd + push bc + push hl + call $43c8 + pop hl + pop bc + dec c + jr nz, .asm_143a0 + +.asm_143c7 + ret +; 143c8 + +Function143c8: ; 143c8 + ld a, [$ffbd] + call SafeGetSprite + ld a, [$ffbe] + call $4406 + push hl + push de + push bc + ld a, [$d13e] + bit 7, a + jr nz, .asm_143df + call $4418 + +.asm_143df + pop bc + ld l, c + ld h, $0 + add hl, hl + add hl, hl + add hl, hl + add hl, hl + pop de + add hl, de + ld d, h + ld e, l + pop hl + ld a, [$d13e] + bit 5, a + jr nz, .asm_14405 + bit 6, a + jr nz, .asm_14405 + ld a, [$ffbd] + call Function142a7 + jr c, .asm_14405 + ld a, h + add $8 + ld h, a + call $4418 + +.asm_14405 + ret +; 14406 + +Function14406: ; 14406 + and $7f + ld l, a + ld h, $0 + add hl, hl + add hl, hl + add hl, hl + add hl, hl + ld a, l + add $0 + ld l, a + ld a, h + adc $80 + ld h, a + ret +; 14418 + +Function14418: ; 14418 + ld a, [rVBK] + push af + ld a, [$d13e] + bit 5, a + ld a, $1 + jr z, .asm_14426 + ld a, $0 + +.asm_14426 + ld [rVBK], a + call Functionf82 + pop af + ld [rVBK], a + ret +; 1442f + +Function1442f: ; 1442f + ld a, c + ld bc, $0006 + ld hl, $444d + call AddNTimes + ld e, [hl] + inc hl + ld d, [hl] + inc hl + ld c, [hl] + swap c + inc hl + ld b, [hl] + inc hl + ld a, [hli] + ld h, [hl] + ld l, a + ld a, c + and a + ret z + call $412a + ret +; 1444d + +INCBIN "baserom.gbc", $1444d, $14495 - $1444d + + +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 @@ -16094,1090 +22976,5158 @@ Group18Sprites: ; 1458d 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_BIKER + 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 -; 145a4 + 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 + + +Function1499a: ; 1499a + ld a, [StandingTile] + cp $60 + jr z, .asm_149ad + cp $68 + jr z, .asm_149ad + and $f0 + cp $70 + jr z, .asm_149ad + and a + ret + +.asm_149ad + scf + ret +; 149af + +INCBIN "baserom.gbc", $149af, $14a07 - $149af + + +Function14a07: ; 14a07 + ld a, [StandingTile] + ld de, $001f + cp $71 + ret z + ld de, $0013 + cp $7c + ret z + ld de, $0023 + ret +; 14a1a + +INCBIN "baserom.gbc", $14a1a, $14b5f - $14a1a + + +Function14b5f: ; 14b5f + ld a, $1 + call GetSRAMBank + ld hl, $bdd9 + ld de, $be3b + ld bc, $0b1a +.asm_14b6d + ld a, [hld] + ld [de], a + dec de + dec bc + ld a, c + or b + jr nz, .asm_14b6d + ld hl, OverworldMap + ld de, $b2c0 + ld bc, $0062 + call CopyBytes + call CloseSRAM + ret +; 14b85 + +Function14b85: ; 14b85 + call $4c10 + ret +; 14b89 + +INCBIN "baserom.gbc", $14b89, $14c10 - $14b89 + + +Function14c10: ; 14c10 + ld a, $1 + ld [$cfcd], a + ld a, $5 + ld hl, $4056 + rst FarCall + ld a, $41 + ld hl, $50d9 + rst FarCall + call $4da9 + call $4dbb + call $4dd7 + call $4df7 + call $4e0c + call $4e13 + call $4e2d + call $4e40 + call $4e55 + call $4e76 + call $4e8b + call $4c6b + ld a, $11 + ld hl, $4725 + rst FarCall + ld a, $41 + ld hl, $6187 + rst FarCall + ld a, $5 + ld hl, $406a + rst FarCall + ld a, $1 + call GetSRAMBank + ld a, [$be45] + cp $4 + jr nz, .asm_14c67 + xor a + ld [$be45], a + +.asm_14c67 + call CloseSRAM + ret +; 14c6b + +Function14c6b: ; 14c6b + call $4c90 + ld a, $0 + call GetSRAMBank + ld a, [$bf10] + ld e, a + ld a, [$bf11] + ld d, a + or e + jr z, .asm_14c84 + ld a, e + sub l + ld a, d + sbc h + jr c, .asm_14c8c + +.asm_14c84 + ld a, l + ld [$bf10], a + ld a, h + ld [$bf11], a + +.asm_14c8c + call CloseSRAM + ret +; 14c90 + +Function14c90: ; 14c90 + ld hl, $c000 +.asm_14c93 + ld a, [hl] + or a + ret nz + inc hl + jr .asm_14c93 +; 14c99 + +INCBIN "baserom.gbc", $14c99, $14cbb - $14c99 + + +Function14cbb: ; 14cbb + call $51fb + call $4d06 + call $4ce2 + call $4cf4 + call $4d68 + call $4d5c + ld a, $0 + call GetSRAMBank + xor a + ld [$bf10], a + ld [$bf11], a + call CloseSRAM + ld a, $1 + ld [$d4b4], a + ret +; 14ce2 + +Function14ce2: ; 14ce2 + ld a, $1 + call GetSRAMBank + ld hl, $b260 + ld bc, $0060 + xor a + call ByteFill + jp CloseSRAM +; 14cf4 + +Function14cf4: ; 14cf4 + ld a, $0 + call GetSRAMBank + ld hl, $abe4 + ld bc, $004c + xor a + call ByteFill + jp CloseSRAM +; 14d06 + +Function14d06: ; 14d06 + ld a, $1 + call GetSRAMBank + ld hl, $b2c0 + ld bc, $0b7c + xor a + call ByteFill + jp CloseSRAM +; 14d18 + +INCBIN "baserom.gbc", $14d18, $14d5c - $14d18 + + +Function14d5c: ; 14d5c + ld a, $1 + call GetSRAMBank + xor a + ld [$be45], a + jp CloseSRAM +; 14d68 + +Function14d68: ; 14d68 + call $509a + ret +; 14d6c + +INCBIN "baserom.gbc", $14d6c, $14da0 - $14d6c + + +Function14da0: ; 14da0 + ld a, [$d4b4] + and a + ret nz + call $4cbb + ret +; 14da9 + +Function14da9: ; 14da9 + ld a, $1 + call GetSRAMBank + ld a, $63 + ld [$a008], a + ld a, $7f + ld [$ad0f], a + jp CloseSRAM +; 14dbb + +Function14dbb: ; 14dbb + ld a, $1 + call GetSRAMBank + ld hl, Options + ld de, $a000 + ld bc, $0008 + call CopyBytes + ld a, [Options] + and $ef + ld [$a000], a + jp CloseSRAM +; 14dd7 + +Function14dd7: ; 14dd7 + ld a, $1 + call GetSRAMBank + ld hl, PlayerID + ld de, $a009 + ld bc, $082a + call CopyBytes + ld hl, FlypointPerms + ld de, $a833 + ld bc, $0032 + call CopyBytes + jp CloseSRAM +; 14df7 + +Function14df7: ; 14df7 + ld a, $1 + call GetSRAMBank + ld hl, PartyCount + ld de, $a865 + ld bc, $031e + call CopyBytes + call CloseSRAM + ret +; 14e0c + +Function14e0c: ; 14e0c + call $50d8 + call $50f9 + ret +; 14e13 + +Function14e13: ; 14e13 + ld hl, $a009 + ld bc, $0b7a + ld a, $1 + call GetSRAMBank + call $5273 + ld a, e + ld [$ad0d], a + ld a, d + ld [$ad0e], a + call CloseSRAM + ret +; 14e2d + +Function14e2d: ; 14e2d + ld a, $0 + call GetSRAMBank + ld a, $63 + ld [$b208], a + ld a, $7f + ld [$bf0f], a + call CloseSRAM + ret +; 14e40 + +Function14e40: ; 14e40 + ld a, $0 + call GetSRAMBank + ld hl, Options + ld de, $b200 + ld bc, $0008 + call CopyBytes + call CloseSRAM + ret +; 14e55 + +Function14e55: ; 14e55 + ld a, $0 + call GetSRAMBank + ld hl, PlayerID + ld de, $b209 + ld bc, $082a + call CopyBytes + ld hl, FlypointPerms + ld de, $ba33 + ld bc, $0032 + call CopyBytes + call CloseSRAM + ret +; 14e76 + +Function14e76: ; 14e76 + ld a, $0 + call GetSRAMBank + ld hl, PartyCount + ld de, $ba65 + ld bc, $031e + call CopyBytes + call CloseSRAM + ret +; 14e8b + +Function14e8b: ; 14e8b + ld hl, $b209 + ld bc, $0b7a + ld a, $0 + call GetSRAMBank + call $5273 + ld a, e + ld [$bf0d], a + ld a, d + ld [$bf0e], a + call CloseSRAM + ret +; 14ea5 + +INCBIN "baserom.gbc", $14ea5, $14f1c - $14ea5 + + +Function14f1c: ; 14f1c + xor a + ld [$cfcd], a + call Function14f84 + ld a, [$cfcd] + and a + jr z, .asm_14f46 + ld a, $1 + call GetSRAMBank + ld hl, $a044 + ld de, StartDay + ld bc, $0008 + call CopyBytes + ld hl, $a3da + ld de, StatusFlags + ld a, [hl] + ld [de], a + call CloseSRAM + ret + +.asm_14f46 + call Function14faf + ld a, [$cfcd] + and a + jr z, .asm_14f6c + ld a, $0 + call GetSRAMBank + ld hl, $b244 + ld de, StartDay + ld bc, $0008 + call CopyBytes + ld hl, $b5da + ld de, StatusFlags + ld a, [hl] + ld [de], a + call CloseSRAM + ret + +.asm_14f6c + ld hl, $4f7c + ld de, Options + ld bc, $0008 + call CopyBytes + call Function67e + ret +; 14f7c + +INCBIN "baserom.gbc", $14f7c, $14f84 - $14f7c + + +Function14f84: ; 14f84 + ld a, $1 + call GetSRAMBank + ld a, [$a008] + cp $63 + jr nz, .asm_14fab + ld a, [$ad0f] + cp $7f + jr nz, .asm_14fab + ld hl, $a000 + ld de, Options + ld bc, $0008 + call CopyBytes + call CloseSRAM + ld a, $1 + ld [$cfcd], a + +.asm_14fab + call CloseSRAM + ret +; 14faf + +Function14faf: ; 14faf + ld a, $0 + call GetSRAMBank + ld a, [$b208] + cp $63 + jr nz, .asm_14fd3 + ld a, [$bf0f] + cp $7f + jr nz, .asm_14fd3 + ld hl, $b200 + ld de, Options + ld bc, $0008 + call CopyBytes + ld a, $2 + ld [$cfcd], a + +.asm_14fd3 + call CloseSRAM + ret +; 14fd7 + +INCBIN "baserom.gbc", $14fd7, $1509a - $14fd7 + + +Function1509a: ; 1509a + ld a, $1 + call GetSRAMBank + ld hl, PlayerGender + ld de, $be3d + ld bc, $0007 + call CopyBytes + ld hl, $d479 + ld a, [hli] + ld [$a60e], a + ld a, [hli] + ld [$a60f], a + jp CloseSRAM +; 150b9 + +INCBIN "baserom.gbc", $150b9, $150d8 - $150b9 + + +Function150d8: ; 150d8 + ld a, [$db72] + cp $e + jr c, .asm_150e3 + xor a + ld [$db72], a + +.asm_150e3 + ld e, a + ld d, $0 + ld hl, $522d + add hl, de + add hl, de + add hl, de + add hl, de + add hl, de + ld a, [hli] + push af + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld h, [hl] + ld l, a + pop af + ret +; 150f9 + +Function150f9: ; 150f9 + push hl + push af + push de + ld a, $1 + call GetSRAMBank + ld hl, $ad10 + ld de, EnemyMoveAnimation + ld bc, $01e0 + call CopyBytes + call CloseSRAM + pop de + pop af + push af + push de + call GetSRAMBank + ld hl, EnemyMoveAnimation + ld bc, $01e0 + call CopyBytes + call CloseSRAM + ld a, $1 + call GetSRAMBank + ld hl, $aef0 + ld de, EnemyMoveAnimation + ld bc, $01e0 + call CopyBytes + call CloseSRAM + pop de + pop af + ld hl, $01e0 + add hl, de + ld e, l + ld d, h + push af + push de + call GetSRAMBank + ld hl, EnemyMoveAnimation + ld bc, $01e0 + call CopyBytes + call CloseSRAM + ld a, $1 + call GetSRAMBank + ld hl, $b0d0 + ld de, EnemyMoveAnimation + ld bc, $008e + call CopyBytes + call CloseSRAM + pop de + pop af + ld hl, $01e0 + add hl, de + ld e, l + ld d, h + call GetSRAMBank + ld hl, EnemyMoveAnimation + ld bc, $008e + call CopyBytes + call CloseSRAM + pop hl + ret +; 1517d + +INCBIN "baserom.gbc", $1517d, $151fb - $1517d + + +Function151fb: ; 151fb + ld hl, $522d + ld c, $e +.asm_15200 + push bc + ld a, [hli] + call GetSRAMBank + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + xor a + ld [de], a + inc de + ld a, $ff + ld [de], a + inc de + ld bc, $044c +.asm_15213 + xor a + ld [de], a + inc de + dec bc + ld a, b + or c + jr nz, .asm_15213 + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, $ff + ld [de], a + inc de + xor a + ld [de], a + call CloseSRAM + pop bc + dec c + jr nz, .asm_15200 + ret +; 1522d + +INCBIN "baserom.gbc", $1522d, $15273 - $1522d + + +Function15273: ; 15273 + ld de, $0000 +.asm_15276 + ld a, [hli] + add e + ld e, a + ld a, $0 + adc d + ld d, a + dec bc + ld a, b + or c + jr nz, .asm_15276 + ret +; 15283 + +INCBIN "baserom.gbc", $15283, $152ab - $15283 + + +BlackoutPoints: ; 0x152ab + db GROUP_KRISS_HOUSE_2F, MAP_KRISS_HOUSE_2F, 3, 3 + db GROUP_VIRIDIAN_POKECENTER_1F, MAP_VIRIDIAN_POKECENTER_1F, 5, 3 ; unused + db GROUP_PALLET_TOWN, MAP_PALLET_TOWN, 5, 6 + db GROUP_VIRIDIAN_CITY, MAP_VIRIDIAN_CITY, 23, 26 + db GROUP_PEWTER_CITY, MAP_PEWTER_CITY, 13, 26 + db GROUP_CERULEAN_CITY, MAP_CERULEAN_CITY, 19, 22 + db GROUP_ROUTE_10A, MAP_ROUTE_10A, 11, 2 + db GROUP_VERMILION_CITY, MAP_VERMILION_CITY, 9, 6 + db GROUP_LAVENDER_TOWN, MAP_LAVENDER_TOWN, 5, 6 + db GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY, 9, 30 + db GROUP_CELADON_CITY, MAP_CELADON_CITY, 29, 10 + db GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY, 19, 28 + db GROUP_CINNABAR_ISLAND, MAP_CINNABAR_ISLAND, 11, 12 + db GROUP_ROUTE_23, MAP_ROUTE_23, 9, 6 + db GROUP_NEW_BARK_TOWN, MAP_NEW_BARK_TOWN, 13, 6 + db GROUP_CHERRYGROVE_CITY, MAP_CHERRYGROVE_CITY, 29, 4 + db GROUP_VIOLET_CITY, MAP_VIOLET_CITY, 31, 26 + db GROUP_ROUTE_32, MAP_ROUTE_32, 11, 74 + db GROUP_AZALEA_TOWN, MAP_AZALEA_TOWN, 15, 10 + db GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY, 23, 44 + db GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY, 15, 28 + db GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY, 13, 22 + db GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY, 23, 28 + db GROUP_MAHOGANY_TOWN, MAP_MAHOGANY_TOWN, 15, 14 + db GROUP_LAKE_OF_RAGE, MAP_LAKE_OF_RAGE, 21, 29 + db GROUP_BLACKTHORN_CITY, MAP_BLACKTHORN_CITY, 21, 30 + db GROUP_SILVER_CAVE_OUTSIDE, MAP_SILVER_CAVE_OUTSIDE, 23, 20 + db GROUP_FAST_SHIP_CABINS_SW_SSW_NW, MAP_FAST_SHIP_CABINS_SW_SSW_NW, 6, 2 + db $ff, $ff, $ff, $ff + +INCBIN "baserom.gbc", $1531f, $15736 - $1531f + +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 + db $8d + db $1f + 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 $ff + +.KrissPCMenuList2 + db 6 + db WITHDRAW_ITEM + db DEPOSIT_ITEM + db TOSS_ITEM + db MAIL_BOX + db DECORATION + db LOG_OFF + db $ff + +INCBIN "baserom.gbc", $157bb, $157d1 - $157bb + +KrisWithdrawItemMenu: ; 0x157d1 + call $1d6e + ld a, BANK(ClearPCItemScreen) + ld hl, ClearPCItemScreen + rst $8 +.asm_157da + call Function15985 + jr c, .asm_157e4 + call Function157e9 + jr .asm_157da + +.asm_157e4 + call $2b3c + xor a + ret +; 0x157e9 + +Function157e9: ; 0x157e9 + ; check if the item has a quantity + ld a, BANK(_CheckTossableItem) + ld hl, _CheckTossableItem + rst $8 + ld a, [$d142] + and a + jr z, .askquantity + + ; items without quantity are always ×1 + ld a, 1 + ld [$d10c], a + jr .withdraw + +.askquantity + ld hl, .HowManyText + call $1d4f + ld a, $9 + ld hl, $4fbf + rst $8 + call Function1c07 + call Function1c07 + jr c, .done + +.withdraw + ld a, [$d10c] + ld [Buffer1], a ; quantity + ld a, [$d107] + ld [Buffer2], a + ld hl, NumItems + call $2f66 + jr nc, .PackFull + ld a, [Buffer1] + ld [$d10c], a + ld a, [Buffer2] + ld [$d107], a + ld hl, $d8f1 + call $2f53 + ld a, $3b + call Predef + ld hl, .WithdrewText + call $1d4f + xor a + ld [hBGMapMode], a + call Function1c07 + ret + +.PackFull + ld hl, .NoRoomText + call $1d67 + ret + +.done + ret +; 0x15850 + +.HowManyText ; 0x15850 + TX_FAR _KrissPCHowManyWithdrawText + db "@" + +.WithdrewText ; 0x15855 + TX_FAR _KrissPCWithdrewItemsText + db "@" + +.NoRoomText ; 0x1585a + TX_FAR _KrissPCNoRoomWithdrawText + db "@" + + +KrisTossItemMenu: ; 0x1585f + call $1d6e + ld a, BANK(ClearPCItemScreen) + ld hl, ClearPCItemScreen + rst $8 +.asm_15868 + call Function15985 + jr c, .asm_15878 + ld de, $d8f1 + ld a, $4 + ld hl, $69f4 + rst $8 + jr .asm_15868 + +.asm_15878 + call $2b3c + xor a + ret +; 0x1587d + + +KrisDecorationMenu: ; 0x1587d + ld a, BANK(_KrisDecorationMenu) + ld hl, _KrisDecorationMenu + rst $8 + 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 Function2ed3 + call $1d6e + ld a, $4 + ld hl, $46a5 + rst $8 +.asm_1589c + ld a, $4 + ld hl, $46be + rst $8 + ld a, [$cf66] + and a + jr z, .asm_158b3 + call Function158cc + ld a, $4 + ld hl, CheckRegisteredItem + rst $8 + jr .asm_1589c + +.asm_158b3 + call $2b3c + +.asm_158b6 + xor a + ret +; 0x158b8 + +Function158b8: ; 0x158b8 + ld a, $4 + ld hl, $69d5 + rst $8 + ret nc + ld hl, Text158c7 + call $1d67 + scf + ret +; 0x158c7 + +Text158c7: ; 0x15c87 + TX_FAR UnknownText_0x1c13df + db "@" + + +Function158cc: ; 0x158cc + ld a, [$c2ce] + push af + ld a, $0 + ld [$c2ce], a + ld a, $3 + ld hl, $5453 + rst $8 + ld a, [$d142] + ld hl, JumpTable158e7 + rst JumpTable + pop af + ld [$c2ce], a + ret +; 0x158e7 + +JumpTable158e7: ; 0x158e7 + dw .jump2 + dw .jump1 + dw .jump1 + dw .jump1 + dw .jump2 + dw .jump2 + dw .jump2 + +.jump1: + ret +.jump2: + 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 + ld a, $3 + ld hl, $5427 + rst $8 + ld a, [$d142] + and a + jr z, .asm_1591d + ld a, $1 + ld [$d10c], a + jr .asm_15933 + +.asm_1591d + ld hl, .HowManyText + call $1d4f + ld a, $9 + ld hl, $4fbf + rst $8 + push af + call Function1c07 + call Function1c07 + pop af + jr c, .asm_1596c + +.asm_15933 + ld a, [$d10c] + ld [Buffer1], a + ld a, [$d107] + ld [Buffer2], a + ld hl, $d8f1 + call $2f66 + jr nc, .asm_15965 + ld a, [Buffer1] + ld [$d10c], a + ld a, [Buffer2] + ld [$d107], a + ld hl, NumItems + call $2f53 + ld a, $3b + call Predef + ld hl, .DepositText + call PrintText + ret + +.asm_15965 + ld hl, .NoRoomText + call PrintText + ret + +.asm_1596c + and a + ret +; 0x1596e + + +.HowManyText ; 0x1596e + TX_FAR _KrissPCHowManyDepositText + db "@" + +.DepositText ; 0x15973 + TX_FAR _KrissPCDepositItemsText + db "@" + +.NoRoomText ; 0x15978 + TX_FAR _KrissPCNoRoomDepositText + db "@" + + +KrisMailBoxMenu: ; 0x1597d + ld a, $11 + ld hl, $47a0 + rst $8 + xor a + ret +; 0x15985 + + +Function15985: ; 0x15985 + xor a + ld [$d0e3], a + ld a, [$c2ce] + push af + ld a, $0 + ld [$c2ce], a + ld hl, MenuData15a08 + call Function1d3c + hlcoord 0, 0 + ld b, $a + ld c, $12 + call TextBox + ld a, [$d0d7] + ld [$cf88], a + ld a, [$d0dd] + ld [$d0e4], a + call $350c + ld a, [$d0e4] + ld [$d0dd], a + ld a, [$cfa9] + ld [$d0d7], a + pop af + ld [$c2ce], a + ld a, [$d0e3] + and a + jr nz, .asm_159d8 + ld a, [$cf73] + 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, [$cf73] + 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 [$d0e3], a + jr .asm_159f8 + +.asm_159ef + call $56c7 + +.asm_159f2 + ld a, $9 + ld hl, $490c + rst $8 + +.asm_159f8 + jp $5989 + +.asm_159fb + ld a, $9 + ld hl, $4706 + rst $8 + call $1bee + and a + ret + +.asm_15a06 + scf + ret +; 0x15a08 + +MenuData15a08: ; 0x15a08 + db %01000000 + db 1, 4 ; top left corner coords (y, x) + db $a, $12 ; bottorm right corner coords (y, x) + dw .MenuData2 + db 1 ; default selected option + +.MenuData2 + db %10110000 + db 4, 8 ; rows/cols? + db 2 ; horizontal spacing? + dbw 0, $d8f1 + dbw BANK(Function24ab4), Function24ab4 + dbw BANK(Function24ac3), Function24ac3 + dbw BANK(Function244c3), Function244c3 + +INCBIN "baserom.gbc", $15a20, $15a45 - $15a20 + + +Function15a45: ; 15a45 + call $5b31 + ld a, c + ld [EngineBuffer1], a + call $5b10 + ld a, [EngineBuffer1] + ld hl, $5a57 + rst JumpTable + ret +; 15a57 + +INCBIN "baserom.gbc", $15a57, $15a6e - $15a57 + + +Function15a6e: ; 15a6e + call $5bbb + call $1d6e + ld hl, $5e4a + call $5fcd + call $5c62 + ld hl, $5e68 + call $5fcd + ret +; 15a84 + +Function15a84: ; 15a84 + ld b, $5 + ld de, $5c51 + call $5b10 + call $5c25 + call $1d6e + ld hl, $5e6d + call $5fcd + call $5c62 + ld hl, WalkingDirection + ld a, [hli] + or [hl] + jr z, .asm_15aa7 + ld hl, $dc1e + set 6, [hl] + +.asm_15aa7 + ld hl, $5e8b + call $5fcd + ret +; 15aae + +Function15aae: ; 15aae + call $5bbb + call $1d6e + ld hl, $5e90 + call $5fcd + call $5c62 + ld hl, $5eae + call $5fcd + ret +; 15ac4 + +Function15ac4: ; 15ac4 + ld b, $5 + ld de, $5aee + ld hl, StatusFlags + bit 6, [hl] + jr z, .asm_15ad5 + ld b, $5 + ld de, $5aff + +.asm_15ad5 + call $5b10 + call $5c25 + call $1d6e + ld hl, $5f83 + call $5fcd + call $5c62 + ld hl, $5fb4 + call $5fcd + ret +; 15aee + +INCBIN "baserom.gbc", $15aee, $15b10 - $15aee + + +Function15b10: ; 15b10 + ld a, b + ld [CurFruit], a + ld a, e + ld [$d040], a + ld a, d + ld [$d041], a + ld hl, $d0f0 + xor a + ld bc, $0010 + call ByteFill + xor a + ld [MovementAnimation], a + ld [WalkingDirection], a + ld [FacingDirection], a + ret +; 15b31 + +Function15b31: ; 15b31 + ld a, e + cp $22 + jr c, .asm_15b3c + ld b, $5 + ld de, $6214 + ret + +.asm_15b3c + ld hl, $60a9 + add hl, de + add hl, de + ld e, [hl] + inc hl + ld d, [hl] + ld b, $5 + ret +; 15b47 + +Function15b47: ; 15b47 +.asm_15b47 + ld a, [MovementAnimation] + ld hl, $5b56 + rst JumpTable + ld [MovementAnimation], a + cp $ff + jr nz, .asm_15b47 + ret +; 15b56 + +INCBIN "baserom.gbc", $15b56, $15b62 - $15b56 + + +Function15b62: ; 15b62 + call $1d6e + ld hl, $5f83 + call PrintText + ld a, $1 + ret +; 15b6e + +Function15b6e: ; 15b6e + ld hl, $5f88 + call Function1d3c + call Function1d81 + jr c, .asm_15b84 + ld a, [$cfa9] + cp $1 + jr z, .asm_15b87 + cp $2 + jr z, .asm_15b8a + +.asm_15b84 + ld a, $4 + ret + +.asm_15b87 + ld a, $2 + ret + +.asm_15b8a + ld a, $3 + ret +; 15b8d + +Function15b8d: ; 15b8d + call Function1c07 + call $5bbb + call $5c62 + and a + ld a, $5 + ret +; 15b9a + +Function15b9a: ; 15b9a + call Function1c07 + call $5eb3 + ld a, $5 + ret +; 15ba3 + +Function15ba3: ; 15ba3 + call Function1c07 + ld hl, $5fb4 + call $5fcd + ld a, $ff + ret +; 15baf + +Function15baf: ; 15baf + call $1d6e + ld hl, $5fb9 + call PrintText + ld a, $1 + ret +; 15bbb + +Function15bbb: ; 15bbb + ld hl, $d040 + ld a, [hli] + ld h, [hl] + ld l, a + ld de, $d0f0 +.asm_15bc4 + ld a, [CurFruit] + call GetFarByte + ld [de], a + inc hl + inc de + cp $ff + jr nz, .asm_15bc4 + ld hl, DefaultFlypoint + ld de, $d0f1 +.asm_15bd7 + ld a, [de] + inc de + cp $ff + jr z, .asm_15be4 + push de + call $5be5 + pop de + jr .asm_15bd7 + +.asm_15be4 + ret +; 15be5 + +Function15be5: ; 15be5 + push hl + ld [CurItem], a + ld a, $3 + ld hl, $5486 + rst FarCall + pop hl + push hl + ld a, d + ld [StringBuffer2], a + ld a, e + ld [$d087], a + ld hl, StringBuffer1 + ld de, StringBuffer2 + ld bc, $8206 + call $3198 + pop hl + ld de, StringBuffer1 + ld c, $3 +.asm_15c0b + call $5c1a + swap a + ld b, a + call $5c1a + or b + ld [hli], a + dec c + jr nz, .asm_15c0b + ret +; 15c1a + +Function15c1a: ; 15c1a + ld a, [de] + inc de + cp $7f + jr nz, .asm_15c22 + ld a, $f6 + +.asm_15c22 + sub $f6 + ret +; 15c25 + +Function15c25: ; 15c25 + ld hl, $d040 + ld a, [hli] + ld h, [hl] + ld l, a + push hl + inc hl + ld bc, DefaultFlypoint + ld de, $d0f1 +.asm_15c33 + ld a, [hli] + ld [de], a + inc de + cp $ff + jr z, .asm_15c4b + push de + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + push hl + ld h, b + ld l, c + call $5bf0 + ld b, h + ld c, l + pop hl + pop de + jr .asm_15c33 + +.asm_15c4b + pop hl + ld a, [hl] + ld [$d0f0], a + ret +; 15c51 + +INCBIN "baserom.gbc", $15c51, $15c62 - $15c51 + + +Function15c62: ; 15c62 + call FadeToMenu + ld a, $2 + ld hl, $4000 + rst FarCall + xor a + ld [WalkingY], a + ld a, $1 + ld [WalkingX], a +.asm_15c74 + call $5cef + jr nc, .asm_15c74 + call $2b3c + ret +; 15c7d + +Function15c7d: ; 15c7d + push af + call $5ca3 + ld a, [hli] + ld h, [hl] + ld l, a + pop af + ld e, a + ld d, $0 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + call PrintText + ret +; 15c91 + +Function15c91: ; 15c91 + call $5ca3 + inc hl + inc hl + ld a, [hl] + and a + jp z, $5d83 + cp $1 + jp z, $5da5 + jp $5de2 +; 15ca3 + +Function15ca3: ; 15ca3 + ld a, [EngineBuffer1] + ld e, a + ld d, $0 + ld hl, $5cb0 + add hl, de + add hl, de + add hl, de + ret +; 15cb0 + +INCBIN "baserom.gbc", $15cb0, $15cef - $15cb0 + + +Function15cef: ; 15cef + ld a, $9 + ld hl, $4ae8 + rst FarCall + call $1ad2 + ld hl, $5e18 + call Function1d3c + ld a, [WalkingX] + ld [$cf88], a + ld a, [WalkingY] + ld [$d0e4], a + call $350c + ld a, [$d0e4] + ld [WalkingY], a + ld a, [$cfa9] + ld [WalkingX], a + call SpeechTextBox + ld a, [$cf73] + cp $2 + jr z, .asm_15d6d + cp $1 + jr z, .asm_15d27 + +.asm_15d27 + call $5c91 + jr c, .asm_15d68 + call $5d97 + jr c, .asm_15d68 + ld de, Money + ld bc, $ffc3 + ld a, $3 + call $600b + jr c, .asm_15d79 + ld hl, NumItems + call $2f66 + jr nc, .asm_15d6f + ld a, [$d107] + ld e, a + ld d, $0 + ld b, $1 + ld hl, WalkingDirection + call BitTableFunc + call $5fc3 + ld de, Money + ld bc, $ffc3 + call $5ffa + ld a, $4 + call $5c7d + call $0a36 + +.asm_15d68 + call SpeechTextBox + and a + ret + +.asm_15d6d + scf + ret + +.asm_15d6f + ld a, $3 + call $5c7d + call $0a36 + and a + ret + +.asm_15d79 + ld a, $2 + call $5c7d + call $0a36 + and a + ret +; 15d83 + +Function15d83: ; 15d83 + ld a, $63 + ld [$d10d], a + ld a, $0 + call $5c7d + ld a, $9 + ld hl, $4fc9 + rst FarCall + call Function1c07 + ret +; 15d97 + +Function15d97: ; 15d97 + ld a, $3b + call Predef + ld a, $1 + call $5c7d + call $1dcf + ret +; 15da5 + +Function15da5: ; 15da5 + ld a, $1 + ld [$d10c], a + ld a, [$d107] + ld e, a + ld d, $0 + ld b, $2 + ld hl, WalkingDirection + call BitTableFunc + ld a, c + and a + jr nz, .asm_15dd8 + ld a, [$d107] + ld e, a + ld d, $0 + ld hl, $d040 + ld a, [hli] + ld h, [hl] + ld l, a + inc hl + add hl, de + add hl, de + add hl, de + inc hl + ld a, [hli] + ld [$ffc5], a + ld a, [hl] + ld [$ffc4], a + xor a + ld [$ffc3], a + and a + ret + +.asm_15dd8 + ld a, $5 + call $5c7d + call $0a36 + scf + ret +; 15de2 + +Function15de2: ; 15de2 + ld a, $0 + call $5c7d + call $5df9 + ld a, $63 + ld [$d10d], a + ld a, $9 + ld hl, $4fcf + rst FarCall + call Function1c07 + ret +; 15df9 + +Function15df9: ; 15df9 + ld a, [$d107] + ld e, a + ld d, $0 + ld hl, $d040 + ld a, [hli] + ld h, [hl] + ld l, a + inc hl + add hl, de + add hl, de + add hl, de + inc hl + ld e, [hl] + inc hl + ld d, [hl] + ret +; 15e0e + +INCBIN "baserom.gbc", $15e0e, $15eb3 - $15e0e + + +Function15eb3: ; 15eb3 + call Function2ed3 + ld a, $4 + ld hl, $46a5 + rst FarCall +.asm_15ebc + ld a, $4 + ld hl, $46be + rst FarCall + ld a, [$cf66] + and a + jp z, $5ece + call $5ee0 + jr .asm_15ebc +; 15ece + +Function15ece: ; 15ece + call Function2b74 + and a + ret +; 15ed3 + +INCBIN "baserom.gbc", $15ed3, $15ee0 - $15ed3 + + +Function15ee0: ; 15ee0 + callba CheckItemMenu + ld a, [$d142] + ld hl, $5eee + rst JumpTable + ret +; 15eee + +INCBIN "baserom.gbc", $15eee, $15efd - $15eee + + +Function15efd: ; 15efd + callba _CheckTossableItem + ld a, [$d142] + and a + jr z, .asm_15f11 + ld hl, $5faf + call PrintText + and a + ret + +.asm_15f11 + ld hl, $5f73 + call PrintText + ld a, $9 + ld hl, $4af8 + rst FarCall + ld a, $9 + ld hl, $4fe1 + rst FarCall + call Function1c07 + jr c, .asm_15f6e + ld hl, $c5b9 + ld bc, $0312 + call ClearBox + ld hl, $5f78 + call PrintTextBoxText + call $1dcf + jr c, .asm_15f6e + ld de, Money + ld bc, $ffc3 + call $5fd7 + ld a, [$d107] + ld hl, NumItems + call $2f53 + ld a, $3b + call Predef + ld hl, $c5b9 + ld bc, $0312 + call ClearBox + ld hl, $5fbe + call PrintTextBoxText + call $5fc3 + ld a, $9 + ld hl, $4af0 + rst FarCall + call $0a36 + +.asm_15f6e + call Function1c07 + and a + ret +; 15f73 + +INCBIN "baserom.gbc", $15f73, $15fc3 - $15f73 + + +Function15fc3: ; 15fc3 + call WaitSFX + ld de, $0022 + call StartSFX + ret +; 15fcd + +Function15fcd: ; 15fcd + call $1d4f + call $0a36 + call Function1c07 + ret +; 15fd7 + +Function15fd7: ; 15fd7 + ld a, $3 + call $6053 + ld bc, $5ff7 + ld a, $3 + call $600b + jr z, .asm_15ff5 + jr c, .asm_15ff5 + ld hl, $5ff7 + 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 + +INCBIN "baserom.gbc", $15ff7, $15ffa - $15ff7 + + +Function15ffa: ; 15ffa + ld a, $3 + call $6035 + 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 + +Function1600b: ; 1600b + ld a, $3 + push hl + push de + push bc + ld h, b + ld l, c + ld c, $0 + ld b, a +.asm_16015 + dec a + jr z, .asm_1601c + inc de + inc hl + jr .asm_16015 + +.asm_1601c + and a +.asm_1601d + ld a, [de] + sbc [hl] + jr z, .asm_16022 + inc c + +.asm_16022 + dec de + dec hl + dec b + jr nz, .asm_1601d + jr c, .asm_1602d + ld a, c + and a + jr .asm_16031 + +.asm_1602d + ld a, $1 + and a + scf + +.asm_16031 + pop bc + pop de + pop hl + ret +; 16035 + +Function16035: ; 16035 + ld a, $3 + push hl + push de + push bc + ld h, b + ld l, c + ld b, a + ld c, $0 +.asm_1603f + dec a + jr z, .asm_16046 + inc de + inc hl + jr .asm_1603f + +.asm_16046 + and a +.asm_16047 + ld a, [de] + sbc [hl] + ld [de], a + dec de + dec hl + dec b + jr nz, .asm_16047 + pop bc + pop de + pop hl + ret +; 16053 + +Function16053: ; 16053 + ld a, $3 + push hl + push de + push bc + ld h, b + ld l, c + ld b, a +.asm_1605b + dec a + jr z, .asm_16062 + inc de + inc hl + jr .asm_1605b + +.asm_16062 + and a +.asm_16063 + ld a, [de] + adc [hl] + ld [de], a + dec de + dec hl + dec b + jr nz, .asm_16063 + pop bc + pop de + pop hl + ret +; 1606f + +Function1606f: ; 1606f + ld a, $2 + ld de, $d855 + call $6055 + ld a, $2 + ld bc, $608d + call $600d + jr c, .asm_1608b + ld hl, $608d + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + scf + ret + +.asm_1608b + and a + ret +; 1608d + +INCBIN "baserom.gbc", $1608d, $1608f - $1608d + + +Function1608f: ; 1608f + ld a, $2 + ld de, $d855 + call $6037 + jr nc, .asm_1609f + xor a + ld [de], a + inc de + ld [de], a + scf + ret + +.asm_1609f + and a + ret +; 160a1 + +Function160a1: ; 160a1 + ld a, $2 + ld de, $d855 + jp $600d +; 160a9 + +INCBIN "baserom.gbc", $160a9, $16ecd - $160a9 + + +Function16ecd: ; 16ecd + rlca + ld b, a + ld a, [$df5b] + and $7 + cp b + ret +; 16ed6 + +INCBIN "baserom.gbc", $16ed6, $174ba - $16ed6 + + +SECTION "bank6",DATA,BANK[$6] + +Tileset03GFX: ; 0x18000 +INCBIN "gfx/tilesets/03.lz" +; 0x18605 + + db $00 + +Tileset03Meta: ; 0x18606 +INCBIN "tilesets/03_metatiles.bin" +; 0x18e06 + +Tileset03Coll: ; 0x18e06 +INCBIN "tilesets/03_collision.bin" +; 0x19006 + +Tileset00GFX: ; 0x19006 +Tileset01GFX: ; 0x19006 +INCBIN "gfx/tilesets/01.lz" +; 0x19c0d + + db $00 + +Tileset00Meta: ; 0x19c0e +Tileset01Meta: ; 0x19c0e +INCBIN "tilesets/01_metatiles.bin" +; 0x1a40e + +Tileset00Coll: ; 0x1a40e +Tileset01Coll: ; 0x1a40e +INCBIN "tilesets/01_collision.bin" +; 0x1a60e + +Tileset29GFX: ; 0x1a60e +INCBIN "gfx/tilesets/29.lz" +; 0x1af38 + + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + +Tileset29Meta: ; 0x1af3e +INCBIN "tilesets/29_metatiles.bin" +; 0x1b33e + +Tileset29Coll: ; 0x1b33e +INCBIN "tilesets/29_collision.bin" +; 0x1b43e + +Tileset20GFX: ; 0x1b43e +INCBIN "gfx/tilesets/20.lz" +; 0x1b8f1 + + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + +Tileset20Meta: ; 0x1b8fe +INCBIN "tilesets/20_metatiles.bin" +; 0x1bcfe + +Tileset20Coll: ; 0x1bcfe +INCBIN "tilesets/20_collision.bin" +; 0x1bdfe + + +SECTION "bank7",DATA,BANK[$7] + +Function1c000: ; 1c000 + ld a, [MapGroup] + ld e, a + ld d, $0 + ld hl, $4021 + add hl, de + ld a, [hl] + cp $ff + ret z + ld hl, $403c + ld bc, $0090 + call AddNTimes + ld de, $90a0 + ld bc, $0090 + call CopyBytes + ret +; 1c021 + +INCBIN "baserom.gbc", $1c021, $1c30c - $1c021 + +Tileset07GFX: ; 0x1c30c +INCBIN "gfx/tilesets/07.lz" +; 0x1c73b + + db $00 + +Tileset07Meta: ; 0x1c73c +INCBIN "tilesets/07_metatiles.bin" +; 0x1cb3c + +Tileset07Coll: ; 0x1cb3c +INCBIN "tilesets/07_collision.bin" +; 0x1cc3c + +Tileset09GFX: ; 0x1cc3c +INCBIN "gfx/tilesets/09.lz" +; 0x1d047 + + db $00 + db $00 + db $00 + db $00 + db $00 + +Tileset09Meta: ; 0x1d04c +INCBIN "tilesets/09_metatiles.bin" +; 0x1d44c + +Tileset09Coll: ; 0x1d44c +INCBIN "tilesets/09_collision.bin" +; 0x1d54c + +Tileset06GFX: ; 0x1d54c +INCBIN "gfx/tilesets/06.lz" +; 0x1d924 + + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + +Tileset06Meta: ; 0x1d92c +INCBIN "tilesets/06_metatiles.bin" +; 0x1dd2c + +Tileset06Coll: ; 0x1dd2c +INCBIN "tilesets/06_collision.bin" +; 0x1de2c + +Tileset13GFX: ; 0x1de2c +INCBIN "gfx/tilesets/13.lz" +; 0x1e58c + +Tileset13Meta: ; 0x1e58c +INCBIN "tilesets/13_metatiles.bin" +; 0x1e98c + +Tileset13Coll: ; 0x1e98c +INCBIN "tilesets/13_collision.bin" +; 0x1ea8c + +Tileset24GFX: ; 0x1ea8c +INCBIN "gfx/tilesets/24.lz" +; 0x1ee0e + + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + +Tileset24Meta: ; 0x1ee1c +Tileset30Meta: ; 0x1ee1c +INCBIN "tilesets/30_metatiles.bin" +; 0x1f21c + +Tileset24Coll: ; 0x1f21c +Tileset30Coll: ; 0x1f21c +INCBIN "tilesets/30_collision.bin" +; 0x1f31c + +; Songs i + +Music_Credits: INCLUDE "audio/music/credits.asm" +Music_Clair: INCLUDE "audio/music/clair.asm" +Music_MobileAdapter: INCLUDE "audio/music/mobileadapter.asm" + + +SECTION "bank8",DATA,BANK[$8] + +INCBIN "baserom.gbc", $20000, $20181 - $20000 + +Tileset23GFX: ; 0x20181 +INCBIN "gfx/tilesets/23.lz" +; 0x206d2 + + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + +Tileset23Meta: ; 0x206e1 +INCBIN "tilesets/23_metatiles.bin" +; 0x20ae1 + +Tileset23Coll: ; 0x20ae1 +INCBIN "tilesets/23_collision.bin" +; 0x20be1 + +Tileset10GFX: ; 0x20be1 +INCBIN "gfx/tilesets/10.lz" +; 0x213e0 + + db $00 + +Tileset10Meta: ; 0x213e1 +INCBIN "tilesets/10_metatiles.bin" +; 0x217e1 + +Tileset10Coll: ; 0x217e1 +INCBIN "tilesets/10_collision.bin" +; 0x218e1 + +Tileset12GFX: ; 0x218e1 +INCBIN "gfx/tilesets/12.lz" +; 0x22026 + + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + +Tileset12Meta: ; 0x22031 +INCBIN "tilesets/12_metatiles.bin" +; 0x22431 + +Tileset12Coll: ; 0x22431 +INCBIN "tilesets/12_collision.bin" +; 0x22531 + +Tileset14GFX: ; 0x22531 +INCBIN "gfx/tilesets/14.lz" +; 0x22ae2 + + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + +Tileset14Meta: ; 0x22af1 +INCBIN "tilesets/14_metatiles.bin" +; 0x22ef1 + +Tileset14Coll: ; 0x22ef1 +INCBIN "tilesets/14_collision.bin" +; 0x22ff1 + +Tileset17GFX: ; 0x22ff1 +INCBIN "gfx/tilesets/17.lz" +; 0x23391 + +Tileset17Meta: ; 0x23391 +INCBIN "tilesets/17_metatiles.bin" +; 0x23791 + +Tileset17Coll: ; 0x23791 +INCBIN "tilesets/17_collision.bin" +; 0x23891 + +; todo +Tileset31Meta: ; 0x23891 +INCBIN "tilesets/31_metatiles.bin", $0, $280 +; 0x23b11 + +EggMovePointers: ; 0x23b11 +INCLUDE "stats/egg_move_pointers.asm" + +INCLUDE "stats/egg_moves.asm" + + +SECTION "bank9",DATA,BANK[$9] + +INCBIN "baserom.gbc", $24000, $24177 - $24000 + + +Function24177: ; 24177 + rst FarCall + ret +; 24179 + +INCBIN "baserom.gbc", $24179, $241a8 - $24179 + + +Function241a8: ; 241a8 + call $4329 + ld hl, $cfa6 + res 7, [hl] + ld a, [hBGMapMode] + push af + call $4216 + pop af + ld [hBGMapMode], a + ret +; 241ba + +INCBIN "baserom.gbc", $241ba, $24216 - $241ba + + +Function24216: ; 24216 +.asm_24216 + call $431a + call $4238 + call $4249 + jr nc, .asm_24237 + call $4270 + jr c, .asm_24237 + ld a, [$cfa5] + bit 7, a + jr nz, .asm_24237 + call $1bdd + ld b, a + ld a, [$cfa8] + and b + jr z, .asm_24216 + +.asm_24237 + ret +; 24238 + +Function24238: ; 24238 + ld a, [hOAMUpdate] + push af + ld a, $1 + ld [hOAMUpdate], a + call WaitBGMap + pop af + ld [hOAMUpdate], a + xor a + ld [hBGMapMode], a + ret +; 24249 + +Function24249: ; 24249 +.asm_24249 + call RTC + call $4259 + ret c + ld a, [$cfa5] + bit 7, a + jr z, .asm_24249 + and a + ret +; 24259 + +Function24259: ; 24259 + ld a, [$cfa5] + bit 6, a + jr z, .asm_24266 + ld hl, $4f62 + ld a, $23 + rst FarCall + +.asm_24266 + call Functiona57 + call $1bdd + and a + ret z + scf + ret +; 24270 + +Function24270: ; 24270 + call $1bdd + bit 0, a + jp nz, $4318 + bit 1, a + jp nz, $4318 + bit 2, a + jp nz, $4318 + bit 3, a + jp nz, $4318 + bit 4, a + jr nz, .asm_242fa + bit 5, a + jr nz, .asm_242dc + bit 6, a + jr nz, .asm_242be + bit 7, a + jr nz, .asm_242a0 + and a + ret + + ld hl, $cfa6 + set 7, [hl] + scf + ret + +.asm_242a0 + ld hl, $cfa9 + ld a, [$cfa3] + cp [hl] + jr z, .asm_242ac + inc [hl] + xor a + ret + +.asm_242ac + ld a, [$cfa5] + bit 5, a + jr nz, .asm_242ba + bit 3, a + jp nz, $4299 + xor a + ret + +.asm_242ba + ld [hl], $1 + xor a + ret + +.asm_242be + ld hl, $cfa9 + ld a, [hl] + dec a + jr z, .asm_242c8 + ld [hl], a + xor a + ret + +.asm_242c8 + ld a, [$cfa5] + bit 5, a + jr nz, .asm_242d6 + bit 2, a + jp nz, $4299 + xor a + ret + +.asm_242d6 + ld a, [$cfa3] + ld [hl], a + xor a + ret + +.asm_242dc + ld hl, $cfaa + ld a, [hl] + dec a + jr z, .asm_242e6 + ld [hl], a + xor a + ret + +.asm_242e6 + ld a, [$cfa5] + bit 4, a + jr nz, .asm_242f4 + bit 1, a + jp nz, $4299 + xor a + ret + +.asm_242f4 + ld a, [$cfa4] + ld [hl], a + xor a + ret + +.asm_242fa + ld hl, $cfaa + ld a, [$cfa4] + cp [hl] + jr z, .asm_24306 + inc [hl] + xor a + ret + +.asm_24306 + ld a, [$cfa5] + bit 4, a + jr nz, .asm_24314 + bit 0, a + jp nz, $4299 + xor a + ret + +.asm_24314 + ld [hl], $1 + xor a + ret +; 24318 + +Function24318: ; 24318 + xor a + ret +; 2431a + +Function2431a: ; 2431a + ld hl, $cfac + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [hl] + cp $ed + jr nz, .asm_24329 + ld a, [$cfab] + ld [hl], a + +.asm_24329 + ld a, [$cfa1] + ld b, a + ld a, [$cfa2] + ld c, a + call $1d05 + ld a, [$cfa7] + swap a + and $f + ld c, a + ld a, [$cfa9] + ld b, a + xor a + dec b + jr z, .asm_24348 +.asm_24344 + add c + dec b + jr nz, .asm_24344 + +.asm_24348 + ld c, $14 + call AddNTimes + ld a, [$cfa7] + and $f + ld c, a + ld a, [$cfaa] + ld b, a + xor a + dec b + jr z, .asm_2435f +.asm_2435b + add c + dec b + jr nz, .asm_2435b + +.asm_2435f + ld c, a + add hl, bc + ld a, [hl] + cp $ed + jr z, .asm_2436b + ld [$cfab], a + ld [hl], $ed + +.asm_2436b + ld a, l + ld [$cfac], a + ld a, h + ld [$cfad], a + ret +; 24374 + +Function24374: ; 24374 + ld a, [rSVBK] + push af + ld a, $7 + ld [rSVBK], a + ld hl, $cf71 + ld e, [hl] + inc hl + ld d, [hl] + push de + ld b, $10 + ld hl, $cf81 +.asm_24387 + ld a, [hli] + ld [de], a + dec de + dec b + jr nz, .asm_24387 + ld a, [$cf81] + bit 6, a + jr nz, .asm_24398 + bit 7, a + jr z, .asm_243ae + +.asm_24398 + ld hl, $cf71 + ld a, [hli] + ld h, [hl] + ld l, a + set 0, [hl] + call $1cfd + call $43cd + call $1d19 + call $43cd + jr .asm_243b5 + +.asm_243ae + pop hl + push hl + ld a, [hld] + ld l, [hl] + ld h, a + res 0, [hl] + +.asm_243b5 + pop hl + call $43e7 + ld a, h + ld [de], a + dec de + ld a, l + ld [de], a + dec de + ld hl, $cf71 + ld [hl], e + inc hl + ld [hl], d + pop af + ld [rSVBK], a + ld hl, $cf78 + inc [hl] + ret +; 243cd + +Function243cd: ; 243cd + call Function1c53 + inc b + inc c + call $43e7 +.asm_243d5 + push bc + push hl +.asm_243d7 + ld a, [hli] + ld [de], a + dec de + dec c + jr nz, .asm_243d7 + pop hl + ld bc, $0014 + add hl, bc + pop bc + dec b + jr nz, .asm_243d5 + ret +; 243e7 + +Function243e7: ; 243e7 + ret +; 243e8 + +Function243e8: ; 243e8 + xor a + ld [hBGMapMode], a + ld a, [rSVBK] + push af + ld a, $7 + ld [rSVBK], a + call $1c7e + ld a, l + or h + jp z, $445d + ld a, l + ld [$cf71], a + ld a, h + ld [$cf72], a + call Function1c47 + ld a, [$cf81] + bit 0, a + jr z, .asm_24411 + ld d, h + ld e, l + call Function1c23 + +.asm_24411 + call $1c7e + ld a, h + or l + jr z, .asm_2441b + call Function1c47 + +.asm_2441b + pop af + ld [rSVBK], a + ld hl, $cf78 + dec [hl] + ret +; 24423 + +INCBIN "baserom.gbc", $24423, $24426 - $24423 + + +Function24426: ; 24426 + bit 0, a + ret z + xor a + call GetSRAMBank + ld hl, TileMap + ld de, $a000 + ld bc, $0168 + call CopyBytes + call CloseSRAM + call $2173 + xor a + call GetSRAMBank + ld hl, $a000 + ld de, TileMap + ld bc, $0168 +.asm_2444c + ld a, [hl] + cp $61 + jr c, .asm_24452 + ld [de], a + +.asm_24452 + inc hl + inc de + dec bc + ld a, c + or b + jr nz, .asm_2444c + call CloseSRAM + ret +; 2445d + +Function2445d: ; 2445d + ld hl, $4468 + call PrintText + call WaitBGMap +.asm_24466 + jr .asm_24466 +; 24468 + +INCBIN "baserom.gbc", $24468, $2446d - $24468 + + +Function2446d: ; 2446d + ld a, [$cf91] + ld b, a + ld hl, $cfa1 + ld a, [$cf82] + inc a + bit 6, b + jr nz, .asm_2447d + inc a + +.asm_2447d + ld [hli], a + ld a, [$cf83] + inc a + ld [hli], a + ld a, [$cf92] + ld [hli], a + ld a, $1 + ld [hli], a + ld [hl], $0 + bit 5, b + jr z, .asm_24492 + set 5, [hl] + +.asm_24492 + ld a, [$cf81] + bit 4, a + jr z, .asm_2449b + set 6, [hl] + +.asm_2449b + inc hl + xor a + ld [hli], a + ld a, $20 + ld [hli], a + ld a, $1 + bit 0, b + jr nz, .asm_244a9 + add $2 + +.asm_244a9 + ld [hli], a + ld a, [$cf88] + and a + jr z, .asm_244b7 + ld c, a + ld a, [$cf92] + cp c + jr nc, .asm_244b9 + +.asm_244b7 + ld c, $1 + +.asm_244b9 + ld [hl], c + inc hl + ld a, $1 + ld [hli], a + xor a + ld [hli], a + ld [hli], a + ld [hli], a + ret +; 244c3 + + +Function244c3: ; 0x244c3 + ld a, [MenuSelection] + ld [CurSpecies], a + hlcoord 0, 12 + ld b, $4 + ld c, $12 + call TextBox + ld a, [MenuSelection] + cp $ff + ret z + ld de, $c5b9 + ld a, BANK(GetItemDescription) + ld hl, GetItemDescription + rst $8 + ret +; 0x244e3 + +Function244e3: ; 244e3 + ld hl, $4547 + call Function1d3c + call $1cbb + call $1ad2 + call $321c + ld b, $12 + call GetSGBLayout + xor a + ld [hBGMapMode], a + ld a, [CurPartySpecies] + ld [CurSpecies], a + call GetBaseData + ld de, VTiles1 + ld a, $3c + call Predef + ld a, [$cf82] + inc a + ld b, a + ld a, [$cf83] + inc a + ld c, a + call $1d05 + ld a, $80 + ld [$ffad], a + ld bc, $0707 + ld a, $13 + call Predef + call WaitBGMap + ret +; 24528 + +Function24528: ; 24528 + ld hl, $4547 + call Function1d3c + call $1ce1 + call WaitBGMap + call ClearSGB + xor a + ld [hBGMapMode], a + call $2173 + call $321c + call $1ad2 + call $0e51 + ret +; 24547 + +INCBIN "baserom.gbc", $24547, $245af - $24547 + + +Function245af: ; 245af + xor a + ld [$cf73], a + ld [hBGMapMode], a + inc a + ld [$ffaa], a + call $471a + call $4764 + call $47dd + call $45f1 + call $321c + xor a + ld [hBGMapMode], a + ret +; 245cb + +Function245cb: ; 245cb +.asm_245cb + call $4609 + jp c, $45d6 + call z, $45e1 + jr .asm_245cb +; 245d6 + +Function245d6: ; 245d6 + call $1ff8 + ld [$cf73], a + ld a, $0 + ld [$ffaa], a + ret +; 245e1 + +Function245e1: ; 245e1 + call $45f1 + ld a, $1 + ld [hBGMapMode], a + ld c, $3 + call DelayFrames + xor a + ld [hBGMapMode], a + ret +; 245f1 + +Function245f1: ; 245f1 + xor a + ld [hBGMapMode], a + ld hl, Options + ld a, [hl] + push af + set 4, [hl] + call $47f0 + call $488b + call $48b8 + pop af + ld [Options], a + ret +; 24609 + +Function24609: ; 24609 +.asm_24609 + call $1bd3 + ld a, [$ffa9] + and $f0 + ld b, a + ld a, [hJoyPressed] + and $f + or b + bit 0, a + jp nz, $4644 + bit 1, a + jp nz, $466f + bit 2, a + jp nz, $4673 + bit 3, a + jp nz, $4695 + bit 4, a + jp nz, $46b5 + bit 5, a + jp nz, $46a1 + bit 6, a + jp nz, $46c9 + bit 7, a + jp nz, $46df + jr .asm_24609 +; 24640 + +INCBIN "baserom.gbc", $24640, $24644 - $24640 + + +Function24644: ; 24644 + call $1bee + ld a, [$cfa9] + dec a + call $48d5 + ld a, [MenuSelection] + ld [CurItem], a + ld a, [$cf75] + ld [$d10d], a + call $46fc + dec a + ld [$cf77], a + ld [$d107], a + ld a, [MenuSelection] + cp $ff + jr z, .asm_2466f + ld a, $1 + scf + ret + +.asm_2466f + ld a, $2 + scf + ret +; 24673 + +Function24673: ; 24673 + ld a, [$cf91] + bit 7, a + jp z, $2ec8 + ld a, [$cfa9] + dec a + call $48d5 + ld a, [MenuSelection] + cp $ff + jp z, $2ec8 + call $46fc + dec a + ld [$cf77], a + ld a, $4 + scf + ret +; 24695 + +Function24695: ; 24695 + ld a, [$cf91] + bit 6, a + jp z, $2ec8 + ld a, $8 + scf + ret +; 246a1 + +Function246a1: ; 246a1 + ld hl, $cfa6 + bit 7, [hl] + jp z, $2ec8 + ld a, [$cf91] + bit 3, a + jp z, $2ec8 + ld a, $20 + scf + ret +; 246b5 + +Function246b5: ; 246b5 + ld hl, $cfa6 + bit 7, [hl] + jp z, $2ec8 + ld a, [$cf91] + bit 2, a + jp z, $2ec8 + ld a, $10 + scf + ret +; 246c9 + +Function246c9: ; 246c9 + ld hl, $cfa6 + bit 7, [hl] + jp z, $2ec6 + ld hl, $d0e4 + ld a, [hl] + and a + jr z, .asm_246dc + dec [hl] + jp $2ec6 + +.asm_246dc + jp $2ec8 +; 246df + +Function246df: ; 246df + ld hl, $cfa6 + bit 7, [hl] + jp z, $2ec6 + ld hl, $d0e4 + ld a, [$cf92] + add [hl] + ld b, a + ld a, [$d144] + cp b + jr c, .asm_246f9 + inc [hl] + jp $2ec6 + +.asm_246f9 + jp $2ec8 +; 246fc + +Function246fc: ; 246fc + ld a, [$d0e4] + ld c, a + ld a, [$cfa9] + add c + ld c, a + ret +; 24706 + +INCBIN "baserom.gbc", $24706, $2471a - $24706 + + +Function2471a: ; 2471a + ld hl, $cf96 + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [$cf95] + call GetFarByte + ld [$d144], a + ld a, [$cf92] + ld c, a + ld a, [$d0e4] + add c + ld c, a + ld a, [$d144] + inc a + cp c + jr nc, .asm_24748 + ld a, [$cf92] + ld c, a + ld a, [$d144] + inc a + sub c + jr nc, .asm_24745 + xor a + +.asm_24745 + ld [$d0e4], a + +.asm_24748 + ld a, [$d0e4] + ld c, a + ld a, [$cf88] + add c + ld b, a + ld a, [$d144] + inc a + cp b + jr c, .asm_2475a + jr nc, .asm_24763 + +.asm_2475a + xor a + ld [$d0e4], a + ld a, $1 + ld [$cf88], a + +.asm_24763 + ret +; 24764 + +Function24764: ; 24764 + ld a, [$cf91] + ld c, a + ld a, [$d144] + ld b, a + ld a, [$cf82] + add $1 + ld [$cfa1], a + ld a, [$cf83] + add $0 + ld [$cfa2], a + ld a, [$cf92] + cp b + jr c, .asm_24786 + jr z, .asm_24786 + ld a, b + inc a + +.asm_24786 + ld [$cfa3], a + ld a, $1 + ld [$cfa4], a + ld a, $8c + bit 2, c + jr z, .asm_24796 + set 0, a + +.asm_24796 + bit 3, c + jr z, .asm_2479c + set 1, a + +.asm_2479c + ld [$cfa5], a + xor a + ld [$cfa6], a + ld a, $20 + ld [$cfa7], a + ld a, $c3 + bit 7, c + jr z, .asm_247b0 + add $4 + +.asm_247b0 + bit 6, c + jr z, .asm_247b6 + add $8 + +.asm_247b6 + ld [$cfa8], a + ld a, [$cfa3] + ld b, a + ld a, [$cf88] + and a + jr z, .asm_247c8 + cp b + jr z, .asm_247ca + jr c, .asm_247ca + +.asm_247c8 + ld a, $1 + +.asm_247ca + ld [$cfa9], a + ld a, $1 + ld [$cfaa], a + xor a + ld [$cfac], a + ld [$cfad], a + ld [$cfab], a + ret +; 247dd + +Function247dd: ; 247dd + ld a, [$d144] + ld c, a + ld a, [$d0e3] + and a + jr z, .asm_247ef + dec a + cp c + jr c, .asm_247ef + xor a + ld [$d0e3], a + +.asm_247ef + ret +; 247f0 + +Function247f0: ; 247f0 + call $1cf1 + ld a, [$cf91] + bit 4, a + jr z, .asm_2480d + ld a, [$d0e4] + and a + jr z, .asm_2480d + ld a, [$cf82] + ld b, a + ld a, [$cf85] + ld c, a + call $1d05 + ld [hl], $61 + +.asm_2480d + call $1cfd + ld bc, $0015 + add hl, bc + ld a, [$cf92] + ld b, a + ld c, $0 +.asm_2481a + ld a, [$d0e4] + add c + ld [$cf77], a + ld a, c + call $48d5 + ld a, [MenuSelection] + cp $ff + jr z, .asm_24851 + push bc + push hl + call $486e + pop hl + ld bc, $0028 + add hl, bc + pop bc + inc c + ld a, c + cp b + jr nz, .asm_2481a + ld a, [$cf91] + bit 4, a + jr z, .asm_24850 + ld a, [$cf84] + ld b, a + ld a, [$cf85] + ld c, a + call $1d05 + ld [hl], $ee + +.asm_24850 + ret + +.asm_24851 + ld a, [$cf91] + bit 0, a + jr nz, .asm_24866 + ld de, .data_2485f + call PlaceString + ret + +.data_2485f + db $82 + db $80 + db $8d + db $82 + db $84 + db $8b + db $50 + +.asm_24866 + ld d, h + ld e, l + ld hl, $cf98 + jp $31be +; 2486e + +Function2486e: ; 2486e + push hl + ld d, h + ld e, l + ld hl, $cf98 + call $31be + pop hl + ld a, [$cf93] + and a + jr z, .asm_2488a + ld e, a + ld d, $0 + add hl, de + ld d, h + ld e, l + ld hl, $cf9b + call $31be + +.asm_2488a + ret +; 2488b + +Function2488b: ; 2488b + ld a, [$d0e3] + and a + jr z, .asm_248b7 + ld b, a + ld a, [$d0e4] + cp b + jr nc, .asm_248b7 + ld c, a + ld a, [$cf92] + add c + cp b + jr c, .asm_248b7 + ld a, b + sub c + dec a + add a + add $1 + ld c, a + ld a, [$cf82] + add c + ld b, a + ld a, [$cf83] + add $0 + ld c, a + call $1d05 + ld [hl], $ec + +.asm_248b7 + ret +; 248b8 + +Function248b8: ; 248b8 + ld a, [$cf91] + bit 5, a + ret z + bit 1, a + jr z, .asm_248c7 + ld a, [$d0e3] + and a + ret nz + +.asm_248c7 + ld a, [$cfa9] + dec a + call $48d5 + ld hl, $cf9e + call $31be + ret +; 248d5 + +Function248d5: ; 248d5 + push de + push hl + ld e, a + ld a, [$d0e4] + add e + ld e, a + ld d, $0 + ld hl, $cf96 + ld a, [hli] + ld h, [hl] + ld l, a + inc hl + ld a, [$cf94] + cp $1 + jr z, .asm_248f2 + cp $2 + jr z, .asm_248f1 + +.asm_248f1 + add hl, de + +.asm_248f2 + add hl, de + ld a, [$cf95] + call GetFarByte + ld [MenuSelection], a + ld [CurItem], a + inc hl + ld a, [$cf95] + call GetFarByte + ld [$cf75], a + pop hl + pop de + ret +; 2490c + +INCBIN "baserom.gbc", $2490c, $24ab4 - $2490c + +Function24ab4: ; 0x24ab4 + push de + ld a, [MenuSelection] + ld [$d265], a + call GetItemName + pop hl + call PlaceString + ret +; 0x24ac3 + +Function24ac3: ; 0x24ac3 + push de + ld a, [MenuSelection] + ld [CurItem], a + ld a, BANK(_CheckTossableItem) + ld hl, _CheckTossableItem + rst $8 + ld a, [$d142] + pop hl + and a + jr nz, .done + ld de, $0015 + add hl, de + ld [hl], $f1 + inc hl + ld de, $cf75 + ld bc, $0102 + call $3198 + +.done + ret +; 0x24ae8 + +Function24ae8: ; 24ae8 + ld hl, $4b15 + call Function1d3c + jr .asm_24b01 + + ld hl, $4b1d + call Function1d3c + jr .asm_24b01 + + ld hl, $4b15 + ld de, $000b + call $1e2e + +.asm_24b01 + call $1cbb + call $1cfd + ld de, $0015 + add hl, de + ld de, Money + ld bc, $2306 + call $3198 + ret +; 24b15 + +INCBIN "baserom.gbc", $24b15, $24b25 - $24b15 + + +Function24b25: ; 24b25 + ld hl, $c4ab + ld b, $1 + ld c, $7 + call TextBox + ld hl, $c4ac + ld de, $4b89 + call PlaceString + ld hl, $c4c5 + ld de, $4b8e + call PlaceString + ld de, $d855 + ld bc, $0204 + ld hl, $c4c1 + call $3198 + ret +; 24b4e + +INCBIN "baserom.gbc", $24b4e, $24ef2 - $24b4e + + +Function24ef2: ; 4ef2 + ld hl, $4f2c + call Function1d35 + ld a, [$d0d2] + ld [$cf88], a + call $2039 + ld a, [$cf88] + ld [$d0d2], a + call Function1c07 + ret +; 24f0b + + +Function24f0b: ; 24f0b + ld hl, $4f4e + call Function1d35 + jr .asm_24f19 + + ld hl, $4f89 + call Function1d35 + +.asm_24f19 + ld a, [$d0d2] + ld [$cf88], a + call $202a + ld a, [$cf88] + ld [$d0d2], a + call Function1c07 + ret +; 24f2c + + +INCBIN "baserom.gbc", $24f2c, $24fc9 - $24f2c + + +Function24fc9: ; 24fc9 + ld a, $3 + ld hl, $5486 + rst FarCall + ld a, d + ld [MagikarpLength], a + ld a, e + ld [Buffer2], a + ld hl, $50f5 + call Function1d35 + call $4ff9 + ret +; 24fe1 + +Function24fe1: ; 24fe1 + ld a, $3 + ld hl, $5486 + rst FarCall + ld a, d + ld [MagikarpLength], a + ld a, e + ld [Buffer2], a + ld hl, $50fd + call Function1d35 + call $4ff9 + ret +; 24ff9 + +Function24ff9: ; 24ff9 + ld a, $1 + ld [$d10c], a +.asm_24ffe + call $5072 + call $500e + jr nc, .asm_24ffe + cp $ff + jr nz, .asm_2500c + scf + ret + +.asm_2500c + and a + ret +; 2500e + +Function2500e: ; 2500e + call $354b + bit 1, c + jr nz, .asm_2502b + bit 0, c + jr nz, .asm_2502f + bit 7, c + jr nz, .asm_25033 + bit 6, c + jr nz, .asm_2503f + bit 5, c + jr nz, .asm_2504d + bit 4, c + jr nz, .asm_2505f + and a + ret + +.asm_2502b + ld a, $ff + scf + ret + +.asm_2502f + ld a, $0 + scf + ret + +.asm_25033 + ld hl, $d10c + dec [hl] + jr nz, .asm_2503d + ld a, [$d10d] + ld [hl], a + +.asm_2503d + and a + ret + +.asm_2503f + ld hl, $d10c + inc [hl] + ld a, [$d10d] + cp [hl] + jr nc, .asm_2504b + ld [hl], $1 + +.asm_2504b + and a + ret + +.asm_2504d + ld a, [$d10c] + sub $a + jr c, .asm_25058 + jr z, .asm_25058 + jr .asm_2505a + +.asm_25058 + ld a, $1 + +.asm_2505a + ld [$d10c], a + and a + ret + +.asm_2505f + ld a, [$d10c] + add $a + ld b, a + ld a, [$d10d] + cp b + jr nc, .asm_2506c + ld b, a + +.asm_2506c + ld a, b + ld [$d10c], a + and a + ret +; 25072 + +Function25072: ; 25072 + call $1cbb + call $1cfd + ld de, $0015 + add hl, de + ld [hl], $f1 + inc hl + ld de, $d10c + ld bc, $8102 + call $3198 + ld a, [$cf86] + ld e, a + ld a, [$cf87] + ld d, a + ld a, [$cf8a] + call $2d54 + ret +; 25097 + +INCBIN "baserom.gbc", $25097, $265d3 - $25097 + +ProfOaksPC: ; 0x265d3 + ld hl, OakPCText1 + call $1d4f + call $1dcf + jr c, .shutdown + call ProfOaksPCBoot ; player chose "yes"? +.shutdown + ld hl, OakPCText4 + call PrintText + call $0a36 + call Function1c07 + ret +; 0x265ee + +ProfOaksPCBoot ; 0x265ee + ld hl, OakPCText2 + call PrintText + call Rate + call StartSFX ; sfx loaded by previous Rate function call + call $0a36 + call WaitSFX + ret +; 0x26601 + +Function26601: ; 0x26601 + call Rate + push de + ld de, MUSIC_NONE + call StartMusic + pop de + call StartSFX + call $0a36 + call WaitSFX + ret +; 0x26616 + +Rate: ; 0x26616 +; calculate Seen/Owned + ld hl, PokedexCaught + ld b, EndPokedexCaught - PokedexCaught + call CountSetBits + ld [DefaultFlypoint], a + ld hl, PokedexSeen + ld b, EndPokedexSeen - PokedexSeen + call CountSetBits + ld [$d003], a + +; print appropriate rating + call ClearOakRatingBuffers + ld hl, OakPCText3 + call PrintText + call $0a36 + ld a, [$d003] + ld hl, OakRatings + call FindOakRating + push de + call PrintText + pop de + ret +; 0x26647 -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 +ClearOakRatingBuffers: ; 0x26647 + ld hl, StringBuffer3 + ld de, DefaultFlypoint + call ClearOakRatingBuffer + ld hl, StringBuffer4 + ld de, $d003 + call ClearOakRatingBuffer + ret +; 0x2665a -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 +ClearOakRatingBuffer: ; 0x2665a + push hl + ld a, "@" + ld bc, $000d + call ByteFill + pop hl + ld bc, $4103 + call $3198 + ret +; 0x2666b -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 +FindOakRating: ; 0x2666b +; return sound effect in de +; return text pointer in hl + nop + ld c, a +.loop + ld a, [hli] + cp c + jr nc, .match + inc hl + inc hl + inc hl + inc hl + jr .loop -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 +.match + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld h, [hl] + ld l, a + ret +; 0x2667f -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 +OakRatings: ; 0x2667f +; db count (if number caught ≤ this number, then this entry is used) +; dw sound effect +; dw text pointer -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 + db 9 + dw SFX_DEX_FANFARE_LESS_THAN_20 + dw OakRating01 -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 + db 19 + dw SFX_DEX_FANFARE_LESS_THAN_20 + dw OakRating02 -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 + db 34 + dw SFX_DEX_FANFARE_20_49 + dw OakRating03 -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 + db 49 + dw SFX_DEX_FANFARE_20_49 + dw OakRating04 -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 + db 64 + dw SFX_DEX_FANFARE_50_79 + dw OakRating05 + + db 79 + dw SFX_DEX_FANFARE_50_79 + dw OakRating06 + + db 94 + dw SFX_DEX_FANFARE_80_109 + dw OakRating07 + + db 109 + dw SFX_DEX_FANFARE_80_109 + dw OakRating08 + + db 124 + dw SFX_CAUGHT_MON + dw OakRating09 + + db 139 + dw SFX_CAUGHT_MON + dw OakRating10 + + db 154 + dw SFX_DEX_FANFARE_140_169 + dw OakRating11 + + db 169 + dw SFX_DEX_FANFARE_140_169 + dw OakRating12 + + db 184 + dw SFX_DEX_FANFARE_170_199 + dw OakRating13 + + db 199 + dw SFX_DEX_FANFARE_170_199 + dw OakRating14 + + db 214 + dw SFX_DEX_FANFARE_200_229 + dw OakRating15 + + db 229 + dw SFX_DEX_FANFARE_200_229 + dw OakRating16 + + db 239 + dw SFX_DEX_FANFARE_230_PLUS + dw OakRating17 + + db 248 + dw SFX_DEX_FANFARE_230_PLUS + dw OakRating18 + + db 255 + dw SFX_DEX_FANFARE_230_PLUS + dw OakRating19 + +OakPCText1: ; 0x266de + TX_FAR _OakPCText1 + db "@" + +OakPCText2: ; 0x266e3 + TX_FAR _OakPCText2 + db "@" + +OakPCText3: ; 0x266e8 + TX_FAR _OakPCText3 + db "@" + +OakRating01: + TX_FAR _OakRating01 + db "@" + +OakRating02: + TX_FAR _OakRating02 + db "@" + +OakRating03: + TX_FAR _OakRating03 + db "@" + +OakRating04: + TX_FAR _OakRating04 + db "@" + +OakRating05: + TX_FAR _OakRating05 + db "@" + +OakRating06: + TX_FAR _OakRating06 + db "@" + +OakRating07: + TX_FAR _OakRating07 + db "@" + +OakRating08: + TX_FAR _OakRating08 + db "@" + +OakRating09: + TX_FAR _OakRating09 + db "@" + +OakRating10: + TX_FAR _OakRating10 + db "@" + +OakRating11: + TX_FAR _OakRating11 + db "@" + +OakRating12: + TX_FAR _OakRating12 + db "@" + +OakRating13: + TX_FAR _OakRating13 + db "@" + +OakRating14: + TX_FAR _OakRating14 + db "@" + +OakRating15: + TX_FAR _OakRating15 + db "@" + +OakRating16: + TX_FAR _OakRating16 + db "@" + +OakRating17: + TX_FAR _OakRating17 + db "@" + +OakRating18: + TX_FAR _OakRating18 + db "@" + +OakRating19: + TX_FAR _OakRating19 + db "@" + +OakPCText4: ; 0x2674c + TX_FAR _OakPCText4 + db "@" + +INCBIN "baserom.gbc", $26751, $2675c - $26751 + +_KrisDecorationMenu: ; 0x2675c + ld a, [$cf76] + push af + ld hl, $679a + call Function1d35 + xor a + ld [$d1ee], a + ld a, $1 + ld [$d1ef], a +.asm_2676f + ld a, [$d1ef] + ld [$cf88], a + call $6806 + call $1e5d + ld a, [$cfa9] + ld [$d1ef], a + jr c, .asm_2678e + ld a, [MenuSelection] + ld hl, $67aa + call $1fa7 + jr nc, .asm_2676f + +.asm_2678e + call Function1c07 + pop af + ld [$cf76], a + ld a, [$d1ee] + ld c, a + ret +; 0x2679a + +INCBIN "baserom.gbc", $2679a, $269dd - $2679a + + +Function269dd: ; 269dd + ld hl, $6a4f + ld bc, $0006 + call AddNTimes + ret +; 269e7 + +Function269e7: ; 269e7 + push hl + call $69dd + call $6c72 + pop hl + call CopyName2 + ret +; 269f3 + +INCBIN "baserom.gbc", $269f3, $26a30 - $269f3 + + +Function26a30: ; 26a30 + call $69dd + ld de, $0003 + add hl, de + ld a, [hli] + ld d, [hl] + ld e, a + ret +; 26a3b -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 +Function26a3b: ; 26a3b + push bc + call $6a30 + pop bc + call BitTable1Func + ret +; 26a44 -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 +INCBIN "baserom.gbc", $26a44, $26c72 - $26a44 -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 +Function26c72: ; 26c72 + ld a, [hli] + ld e, [hl] + ld bc, StringBuffer2 + push bc + ld hl, $6c7e + rst JumpTable + pop de + ret +; 26c7e -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 +INCBIN "baserom.gbc", $26c7e, $26c8c - $26c7e -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 +Function26c8c: ; 26c8c + ret +; 26c8d -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 +Function26c8d: ; 26c8d + ld a, e + jr .asm_26cca + call $6c8d + ld a, $d + jr .asm_26cca -SpriteHeaders: ; 14736 -INCLUDE "gfx/overworld/sprite_headers.asm" -; 1499a + call $6c8d + ld a, $e + jr .asm_26cca + ld a, e + call $6cc0 + ld a, $f + jr .asm_26cca -INCBIN "baserom.gbc", $1499a, $14f1c - $1499a + ld a, e + call $6cc0 + ld a, $10 + jr .asm_26cca + push de + ld a, $11 + call $6cca + pop de + ld a, e + jr .asm_26cc0 -Function14f1c: ; 14f1c - xor a - ld [$cfcd], a - call Function14f84 - ld a, [$cfcd] - and a - jr z, .asm_14f46 - ld a, $1 - call GetSRAMBank - ld hl, $a044 - ld de, StartDay - ld bc, $0008 - call CopyBytes - ld hl, $a3da - ld de, StatusFlags - ld a, [hl] - ld [de], a - call CloseSRAM + push de + call $6cca + pop de + ld a, e + jr .asm_26cca + +.asm_26cc0 + push bc + ld [$d265], a + call GetPokemonName + pop bc + jr .asm_26cda + +.asm_26cca + call $6ccf + jr .asm_26cda + + push bc + ld hl, $6b8d + call GetNthString + ld d, h + ld e, l + pop bc ret -.asm_14f46 - call Function14faf - ld a, [$cfcd] - and a - jr z, .asm_14f6c - ld a, $0 - call GetSRAMBank - ld hl, $b244 - ld de, StartDay - ld bc, $0008 - call CopyBytes - ld hl, $b5da - ld de, StatusFlags - ld a, [hl] - ld [de], a - call CloseSRAM +.asm_26cda + ld h, b + ld l, c + call CopyName2 + dec hl + ld b, h + ld c, l ret +; 26ce3 -.asm_14f6c - ld hl, $4f7c - ld de, Options - ld bc, $0008 - call CopyBytes - call Function67e +INCBIN "baserom.gbc", $26ce3, $26eea - $26ce3 + + +Function26eea: ; 26eea + ld a, c + ld h, d + ld l, e + call $69e7 ret -; 14f7c +; 26ef1 -INCBIN "baserom.gbc", $14f7c, $14f84 - $14f7c +Function26ef1: ; 26ef1 + ld a, c + jp $6a3b +; 26ef5 +INCBIN "baserom.gbc", $26ef5, $26f59 - $26ef5 -Function14f84: ; 14f84 - ld a, $1 - call GetSRAMBank - ld a, [$a008] - cp $63 - jr nz, .asm_14fab - ld a, [$ad0f] - cp $7f - jr nz, .asm_14fab - ld hl, $a000 - ld de, Options - ld bc, $0008 - call CopyBytes - call CloseSRAM - ld a, $1 - ld [$cfcd], a -.asm_14fab - call CloseSRAM +Function26f59: ; 26f59 + ld a, b + ld hl, $6f5f + rst JumpTable ret -; 14faf +; 26f5f -Function14faf: ; 14faf - ld a, $0 - call GetSRAMBank - ld a, [$b208] - cp $63 - jr nz, .asm_14fd3 - ld a, [$bf0f] - cp $7f - jr nz, .asm_14fd3 - ld hl, $b200 - ld de, Options - ld bc, $0008 - call CopyBytes - ld a, $2 - ld [$cfcd], a +INCBIN "baserom.gbc", $26f5f, $26fb9 - $26f5f -.asm_14fd3 - call CloseSRAM + +Function26fb9: ; 26fb9 + ld a, [LeftOrnament] + jr .asm_26fc8 + + ld a, [RightOrnament] + jr .asm_26fc8 + + ld a, [Console] + jr .asm_26fc8 + +.asm_26fc8 + ld c, a + ld de, StringBuffer3 + call $6eea + ld b, $9 + ld de, $6fd5 ret -; 14fd7 +; 26fd5 -INCBIN "baserom.gbc", $14fd7, $152ab - $14fd7 +INCBIN "baserom.gbc", $26fd5, $26fdd - $26fd5 -BlackoutPoints: ; 0x152ab - db GROUP_KRISS_HOUSE_2F, MAP_KRISS_HOUSE_2F, 3, 3 - db GROUP_VIRIDIAN_POKECENTER_1F, MAP_VIRIDIAN_POKECENTER_1F, 5, 3 ; unused - db GROUP_PALLET_TOWN, MAP_PALLET_TOWN, 5, 6 - db GROUP_VIRIDIAN_CITY, MAP_VIRIDIAN_CITY, 23, 26 - db GROUP_PEWTER_CITY, MAP_PEWTER_CITY, 13, 26 - db GROUP_CERULEAN_CITY, MAP_CERULEAN_CITY, 19, 22 - db GROUP_ROUTE_10A, MAP_ROUTE_10A, 11, 2 - db GROUP_VERMILION_CITY, MAP_VERMILION_CITY, 9, 6 - db GROUP_LAVENDER_TOWN, MAP_LAVENDER_TOWN, 5, 6 - db GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY, 9, 30 - db GROUP_CELADON_CITY, MAP_CELADON_CITY, 29, 10 - db GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY, 19, 28 - db GROUP_CINNABAR_ISLAND, MAP_CINNABAR_ISLAND, 11, 12 - db GROUP_ROUTE_23, MAP_ROUTE_23, 9, 6 - db GROUP_NEW_BARK_TOWN, MAP_NEW_BARK_TOWN, 13, 6 - db GROUP_CHERRYGROVE_CITY, MAP_CHERRYGROVE_CITY, 29, 4 - db GROUP_VIOLET_CITY, MAP_VIOLET_CITY, 31, 26 - db GROUP_ROUTE_32, MAP_ROUTE_32, 11, 74 - db GROUP_AZALEA_TOWN, MAP_AZALEA_TOWN, 15, 10 - db GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY, 23, 44 - db GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY, 15, 28 - db GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY, 13, 22 - db GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY, 23, 28 - db GROUP_MAHOGANY_TOWN, MAP_MAHOGANY_TOWN, 15, 14 - db GROUP_LAKE_OF_RAGE, MAP_LAKE_OF_RAGE, 21, 29 - db GROUP_BLACKTHORN_CITY, MAP_BLACKTHORN_CITY, 21, 30 - db GROUP_SILVER_CAVE_OUTSIDE, MAP_SILVER_CAVE_OUTSIDE, 23, 20 - db GROUP_FAST_SHIP_CABINS_SW_SSW_NW, MAP_FAST_SHIP_CABINS_SW_SSW_NW, 6, 2 - db $ff, $ff, $ff, $ff +Function26fdd: ; 26fdd + ld b, $9 + ld de, $6fe3 + ret +; 26fe3 -INCBIN "baserom.gbc", $1531f, $15736 - $1531f +INCBIN "baserom.gbc", $26fe3, $270c4 - $26fe3 + +GetTrainerDVs: ; 270c4 +; get dvs based on trainer class +; output: bc + push hl +; dec trainer class so there's no filler entry for $00 + ld a, [OtherTrainerClass] + dec a + ld c, a + ld b, $0 +; seek table + ld hl, TrainerClassDVs + add hl, bc + add hl, bc +; get dvs + ld a, [hli] + ld b, a + ld c, [hl] +; we're done + pop hl + ret +; 270d6 + +TrainerClassDVs ; 270d6 +; AtkDef, SpdSpc + db $9A, $77 ; falkner + db $88, $88 ; bugsy + db $98, $88 ; whitney + db $98, $88 ; morty + db $98, $88 ; pryce + db $98, $88 ; jasmine + db $98, $88 ; chuck + db $7C, $DD ; clair + db $DD, $DD ; rival1 + db $98, $88 ; pokemon prof + db $DC, $DD ; will + db $DC, $DD ; cal + db $DC, $DD ; bruno + db $7F, $DF ; karen + db $DC, $DD ; koga + db $DC, $DD ; champion + db $98, $88 ; brock + db $78, $88 ; misty + db $98, $88 ; lt surge + db $98, $88 ; scientist + db $78, $88 ; erika + db $98, $88 ; youngster + db $98, $88 ; schoolboy + db $98, $88 ; bird keeper + db $58, $88 ; lass + db $98, $88 ; janine + db $D8, $C8 ; cooltrainerm + db $7C, $C8 ; cooltrainerf + db $69, $C8 ; beauty + db $98, $88 ; pokemaniac + db $D8, $A8 ; gruntm + db $98, $88 ; gentleman + db $98, $88 ; skier + db $68, $88 ; teacher + db $7D, $87 ; sabrina + db $98, $88 ; bug catcher + db $98, $88 ; fisher + db $98, $88 ; swimmerm + db $78, $88 ; swimmerf + db $98, $88 ; sailor + db $98, $88 ; super nerd + db $98, $88 ; rival2 + db $98, $88 ; guitarist + db $A8, $88 ; hiker + db $98, $88 ; biker + db $98, $88 ; blaine + db $98, $88 ; burglar + db $98, $88 ; firebreather + db $98, $88 ; juggler + db $98, $88 ; blackbelt + db $D8, $A8 ; executivem + db $98, $88 ; psychic + db $6A, $A8 ; picnicker + db $98, $88 ; camper + db $7E, $A8 ; executivef + db $98, $88 ; sage + db $78, $88 ; medium + db $98, $88 ; boarder + db $98, $88 ; pokefanm + db $68, $8A ; kimono girl + db $68, $A8 ; twins + db $6D, $88 ; pokefanf + db $FD, $DE ; red + db $9D, $DD ; blue + db $98, $88 ; officer + db $7E, $A8 ; gruntf + db $98, $88 ; mysticalman +; 2715c + +INCBIN "baserom.gbc", $2715c, $271f4 - $2715c + +MoveEffectsPointers: ; 271f4 +INCLUDE "battle/moves/move_effects_pointers.asm" + +MoveEffects: ; 2732e +INCLUDE "battle/moves/move_effects.asm" + +INCBIN "baserom.gbc", $27a28, $27a2d - $27a28 + + +SECTION "bankA",DATA,BANK[$A] + +INCBIN "baserom.gbc", $28000, $2a2a0 - $28000 + +SpecialRoamMons: ; 2a2a0 +; initialize RoamMon structs +; include commented-out parts from the gs function + +; species + ld a, RAIKOU + ld [RoamMon1Species], a + ld a, ENTEI + ld [RoamMon2Species], a +; ld a, SUICUNE +; ld [RoamMon3Species], a + +; level + ld a, 40 + ld [RoamMon1Level], a + ld [RoamMon2Level], a +; ld [RoamMon3Level], a + +; raikou starting map + ld a, GROUP_ROUTE_42 + ld [RoamMon1MapGroup], a + ld a, MAP_ROUTE_42 + ld [RoamMon1MapNumber], a + +; entei starting map + ld a, GROUP_ROUTE_37 + ld [RoamMon2MapGroup], a + ld a, MAP_ROUTE_37 + ld [RoamMon2MapNumber], a + +; suicune starting map +; ld a, GROUP_ROUTE_38 +; ld [RoamMon3MapGroup], a +; ld a, MAP_ROUTE_38 +; ld [RoamMon3MapNumber], a + +; hp + xor a ; generate new stats + ld [RoamMon1CurHP], a + ld [RoamMon2CurHP], a +; ld [RoamMon3CurHP], a -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 + ret +; 2a2ce -.KrissPCMenuData2 - db %10100000 ; bit7 - db 0 ; # items? - dw .KrissPCMenuList1 - db $8d - db $1f - dw .KrissPCMenuPointers +INCBIN "baserom.gbc", $2a2ce, $2a5e9 - $2a2ce -.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@" +WildMons1: ; 0x2a5e9 +INCLUDE "stats/wild/johto_grass.asm" -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 +WildMons2: ; 0x2b11d +INCLUDE "stats/wild/johto_water.asm" -.KrissPCMenuList1 - db 5 - db WITHDRAW_ITEM - db DEPOSIT_ITEM - db TOSS_ITEM - db MAIL_BOX - db TURN_OFF - db $ff +WildMons3: ; 0x2b274 +INCLUDE "stats/wild/kanto_grass.asm" -.KrissPCMenuList2 - db 6 - db WITHDRAW_ITEM - db DEPOSIT_ITEM - db TOSS_ITEM - db MAIL_BOX - db DECORATION - db LOG_OFF - db $ff +WildMons4: ; 0x2b7f7 +INCLUDE "stats/wild/kanto_water.asm" -INCBIN "baserom.gbc", $157bb, $157d1 - $157bb +WildMons5: ; 0x2b8d0 +INCLUDE "stats/wild/swarm_grass.asm" -KrisWithdrawItemMenu: ; 0x157d1 - call $1d6e - ld a, BANK(ClearPCItemScreen) - ld hl, ClearPCItemScreen - rst $8 -.asm_157da - call Function15985 - jr c, .asm_157e4 - call Function157e9 - jr .asm_157da +WildMons6: ; 0x2b92f +INCLUDE "stats/wild/swarm_water.asm" -.asm_157e4 - call $2b3c - xor a - ret -; 0x157e9 -Function157e9: ; 0x157e9 - ; check if the item has a quantity - ld a, BANK(_CheckTossableItem) - ld hl, _CheckTossableItem - rst $8 - ld a, [$d142] - and a - jr z, .askquantity +INCBIN "baserom.gbc", $2b930, $2ba1a - $2b930 - ; items without quantity are always ×1 - ld a, 1 - ld [$d10c], a - jr .withdraw +ChrisBackpic: ; 2ba1a +INCBIN "gfx/misc/player.lz" +; 2bba1 -.askquantity - ld hl, .HowManyText - call $1d4f - ld a, $9 - ld hl, $4fbf - rst $8 - call Function1c07 - call Function1c07 - jr c, .done +db 0, 0, 0, 0, 0, 0, 0, 0, 0 ; filler -.withdraw - ld a, [$d10c] - ld [Buffer1], a ; quantity - ld a, [$d107] - ld [Buffer2], a - ld hl, NumItems - call $2f66 - jr nc, .PackFull - ld a, [Buffer1] - ld [$d10c], a - ld a, [Buffer2] - ld [$d107], a - ld hl, $d8f1 - call $2f53 - ld a, $3b - call Predef - ld hl, .WithdrewText - call $1d4f - xor a - ld [hBGMapMode], a - call Function1c07 - ret +DudeBackpic: ; 2bbaa +INCBIN "gfx/misc/dude.lz" +; 2bce1 -.PackFull - ld hl, .NoRoomText - call $1d67 - ret -.done - ret -; 0x15850 +SECTION "bankB",DATA,BANK[$B] -.HowManyText ; 0x15850 - TX_FAR _KrissPCHowManyWithdrawText - db "@" +INCBIN "baserom.gbc", $2C000, $2c1ef - $2C000 -.WithdrewText ; 0x15855 - TX_FAR _KrissPCWithdrewItemsText - db "@" +TrainerClassNames: ; 2c1ef + db "LEADER@" + db "LEADER@" + db "LEADER@" + db "LEADER@" + db "LEADER@" + db "LEADER@" + db "LEADER@" + db "LEADER@" + db "RIVAL@" + db "#MON PROF.@" + db "ELITE FOUR@" + db $4a, " TRAINER@" + db "ELITE FOUR@" + db "ELITE FOUR@" + db "ELITE FOUR@" + db "CHAMPION@" + db "LEADER@" + db "LEADER@" + db "LEADER@" + db "SCIENTIST@" + db "LEADER@" + db "YOUNGSTER@" + db "SCHOOLBOY@" + db "BIRD KEEPER@" + db "LASS@" + db "LEADER@" + db "COOLTRAINER@" + db "COOLTRAINER@" + db "BEAUTY@" + db "#MANIAC@" + db "ROCKET@" + db "GENTLEMAN@" + db "SKIER@" + db "TEACHER@" + db "LEADER@" + db "BUG CATCHER@" + db "FISHER@" + db "SWIMMER♂@" + db "SWIMMER♀@" + db "SAILOR@" + db "SUPER NERD@" + db "RIVAL@" + db "GUITARIST@" + db "HIKER@" + db "BIKER@" + db "LEADER@" + db "BURGLAR@" + db "FIREBREATHER@" + db "JUGGLER@" + db "BLACKBELT@" + db "ROCKET@" + db "PSYCHIC@" + db "PICNICKER@" + db "CAMPER@" + db "ROCKET@" + db "SAGE@" + db "MEDIUM@" + db "BOARDER@" + db "#FAN@" + db "KIMONO GIRL@" + db "TWINS@" + db "#FAN@" + db $4a, " TRAINER@" + db "LEADER@" + db "OFFICER@" + db "ROCKET@" + db "MYSTICALMAN@" -.NoRoomText ; 0x1585a - TX_FAR _KrissPCNoRoomWithdrawText - db "@" +INCBIN "baserom.gbc", $2c41a, $2c7fb - $2c41a -KrisTossItemMenu: ; 0x1585f - call $1d6e - ld a, BANK(ClearPCItemScreen) - ld hl, ClearPCItemScreen - rst $8 -.asm_15868 - call Function15985 - jr c, .asm_15878 - ld de, $d8f1 - ld a, $4 - ld hl, $69f4 - rst $8 - jr .asm_15868 -.asm_15878 - call $2b3c - xor a +Function2c7fb: ; 2c7fb + ld hl, StringBuffer2 + ld de, $d066 + ld bc, $000c + call CopyBytes + call WhiteBGMap + ld a, $14 + ld hl, $404f + rst FarCall + ld a, $14 + ld hl, $4405 + rst FarCall + ld a, $14 + ld hl, $43e0 + rst FarCall + ld a, $3 + ld [PartyMenuActionText], a +.asm_2c821 + callba WritePartyMenuTilemap + callba PrintPartyMenuText + call WaitBGMap + call Function32f9 + call DelayFrame + callba PartyMenuSelect + push af + ld a, [CurPartySpecies] + cp $fd + pop bc + jr z, .asm_2c854 + push bc + ld hl, $d066 + ld de, StringBuffer2 + ld bc, $000c + call CopyBytes + pop af ret -; 0x1587d +.asm_2c854 + push hl + push de + push bc + push af + ld de, $0019 + call StartSFX + call WaitSFX + pop af + pop bc + pop de + pop hl + jr .asm_2c821 +; 2c867 -KrisDecorationMenu: ; 0x1587d - ld a, BANK(_KrisDecorationMenu) - ld hl, _KrisDecorationMenu - rst $8 - ld a, c - and a - ret z - scf - ret -; 0x15888 +INCBIN "baserom.gbc", $2c867, $2ee6c - $2c867 -KrisLogOffMenu: ; 0x15888 +PlayBattleMusic: ; 2ee6c + + push hl + push de + push bc + xor a - scf - ret -; 0x1588b + ld [MusicFade], a + ld de, MUSIC_NONE + call StartMusic + call DelayFrame + call MaxVolume + ld a, [BattleType] + cp BATTLETYPE_SUICUNE + ld de, MUSIC_SUICUNE_BATTLE + jp z, .done + cp BATTLETYPE_ROAMING + jp z, .done -KrisDepositItemMenu: ; 0x1588b - call Function158b8 - jr c, .asm_158b6 - call Function2ed3 - call $1d6e - ld a, $4 - ld hl, $46a5 - rst $8 -.asm_1589c - ld a, $4 - ld hl, $46be - rst $8 - ld a, [$cf66] + ; Are we fighting a trainer? + ld a, [OtherTrainerClass] and a - jr z, .asm_158b3 - call Function158cc - ld a, $4 - ld hl, CheckRegisteredItem - rst $8 - jr .asm_1589c + jr nz, .trainermusic -.asm_158b3 - call $2b3c + ld a, BANK(RegionCheck) + ld hl, RegionCheck + rst FarCall + ld a, e + and a + jr nz, .kantowild -.asm_158b6 - xor a - ret -; 0x158b8 + ld de, MUSIC_JOHTO_WILD_BATTLE + ld a, [TimeOfDay] + cp NITE + jr nz, .done + ld de, MUSIC_JOHTO_WILD_BATTLE_NIGHT + jr .done -Function158b8: ; 0x158b8 - ld a, $4 - ld hl, $69d5 - rst $8 - ret nc - ld hl, Text158c7 - call $1d67 - scf - ret -; 0x158c7 +.kantowild + ld de, MUSIC_KANTO_WILD_BATTLE + jr .done -Text158c7: ; 0x15c87 - TX_FAR UnknownText_0x1c13df - db "@" +.trainermusic + ld de, MUSIC_CHAMPION_BATTLE + cp CHAMPION + jr z, .done + cp RED + jr z, .done + ; really, they should have included admins and scientists here too... + ld de, MUSIC_ROCKET_BATTLE + cp GRUNTM + jr z, .done + cp GRUNTF + jr z, .done -Function158cc: ; 0x158cc - ld a, [$c2ce] - push af - ld a, $0 - ld [$c2ce], a - ld a, $3 - ld hl, $5453 - rst $8 - ld a, [$d142] - ld hl, JumpTable158e7 - rst JumpTable - pop af - ld [$c2ce], a - ret -; 0x158e7 + ld de, MUSIC_KANTO_GYM_LEADER_BATTLE + ld a, BANK(IsKantoGymLeader) + ld hl, IsKantoGymLeader + rst FarCall + jr c, .done -JumpTable158e7: ; 0x158e7 - dw .jump2 - dw .jump1 - dw .jump1 - dw .jump1 - dw .jump2 - dw .jump2 - dw .jump2 + ld de, MUSIC_JOHTO_GYM_LEADER_BATTLE + ld a, BANK(IsJohtoGymLeader) + ld hl, IsJohtoGymLeader + rst FarCall + jr c, .done -.jump1: - ret -.jump2: - ld a, [Buffer1] - push af - ld a, [Buffer2] - push af - call Function1590a - pop af - ld [Buffer2], a - pop af - ld [Buffer1], a - ret -; 0x1590a + ld de, MUSIC_RIVAL_BATTLE + ld a, [OtherTrainerClass] + cp RIVAL1 + jr z, .done + cp RIVAL2 + jr nz, .othertrainer -Function1590a: ; 0x1590a - ld a, $3 - ld hl, $5427 - rst $8 - ld a, [$d142] + ld a, [OtherTrainerID] + cp 4 ; Rival in Indigo Plateau + jr c, .done + ld de, MUSIC_CHAMPION_BATTLE + jr .done + +.othertrainer + ld a, [InLinkBattle] and a - jr z, .asm_1591d - ld a, $1 - ld [$d10c], a - jr .asm_15933 + jr nz, .johtotrainer -.asm_1591d - ld hl, .HowManyText - call $1d4f - ld a, $9 - ld hl, $4fbf - rst $8 - push af - call Function1c07 - call Function1c07 - pop af - jr c, .asm_1596c + ld a, BANK(RegionCheck) + ld hl, RegionCheck + rst FarCall + ld a, e + and a + jr nz, .kantotrainer -.asm_15933 - ld a, [$d10c] - ld [Buffer1], a - ld a, [$d107] - ld [Buffer2], a - ld hl, $d8f1 - call $2f66 - jr nc, .asm_15965 - ld a, [Buffer1] - ld [$d10c], a - ld a, [Buffer2] - ld [$d107], a - ld hl, NumItems - call $2f53 - ld a, $3b - call Predef - ld hl, .DepositText - call PrintText - ret +.johtotrainer + ld de, MUSIC_JOHTO_TRAINER_BATTLE + jr .done -.asm_15965 - ld hl, .NoRoomText - call PrintText - ret +.kantotrainer + ld de, MUSIC_KANTO_TRAINER_BATTLE -.asm_1596c - and a +.done + call StartMusic + + pop bc + pop de + pop hl ret -; 0x1596e +; 2ef18 -.HowManyText ; 0x1596e - TX_FAR _KrissPCHowManyDepositText - db "@" +ClearBattleRAM: ; 2ef18 + xor a + ld [$d0ec], a + ld [$d0ee], a -.DepositText ; 0x15973 - TX_FAR _KrissPCDepositItemsText - db "@" + ld hl, $d0d8 + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a -.NoRoomText ; 0x15978 - TX_FAR _KrissPCNoRoomDepositText - db "@" + ld [$d0e4], a + ld [CriticalHit], a + ld [BattleMonSpecies], a + ld [$c664], a + ld [CurBattleMon], a + ld [$d232], a + ld [TimeOfDayPal], a + ld [PlayerTurnsTaken], a + ld [EnemyTurnsTaken], a + ld [EvolvableFlags], a + ld hl, PlayerHPPal + ld [hli], a + ld [hl], a -KrisMailBoxMenu: ; 0x1597d - ld a, $11 - ld hl, $47a0 - rst $8 - xor a - ret -; 0x15985 + ld hl, BattleMonDVs + ld [hli], a + ld [hl], a + ld hl, EnemyMonDVs + ld [hli], a + ld [hl], a -Function15985: ; 0x15985 +; Clear the entire BattleMons area + ld hl, EnemyMoveStruct + ld bc, $0139 xor a - ld [$d0e3], a - ld a, [$c2ce] - push af - ld a, $0 - ld [$c2ce], a - ld hl, MenuData15a08 - call Function1d3c - hlcoord 0, 0 - ld b, $a - ld c, $12 - call TextBox - ld a, [$d0d7] - ld [$cf88], a - ld a, [$d0dd] - ld [$d0e4], a - call $350c - ld a, [$d0e4] - ld [$d0dd], a - ld a, [$cfa9] - ld [$d0d7], a - pop af - ld [$c2ce], a - ld a, [$d0e3] - and a - jr nz, .asm_159d8 - ld a, [$cf73] - cp $2 - jr z, .asm_15a06 - cp $1 - jr z, .asm_159fb - cp $4 - jr z, .asm_159f2 - jr .asm_159f8 + call ByteFill -.asm_159d8 - ld a, [$cf73] - cp $2 - jr z, .asm_159e9 - cp $1 - jr z, .asm_159ef - cp $4 - jr z, .asm_159ef - jr .asm_159f8 + ld hl, $5867 + ld a, $f + rst FarCall -.asm_159e9 + call Function1fbf + + ld hl, hBGMapAddress xor a - ld [$d0e3], a - jr .asm_159f8 + ld [hli], a + ld [hl], $98 + ret +; 2ef6e -.asm_159ef - call $56c7 -.asm_159f2 - ld a, $9 - ld hl, $490c - rst $8 +FillBox: ; 2ef6e +; Fill $c2c6-aligned box width b height c +; with iterating tile starting from $ffad at hl. +; Predef $13 -.asm_159f8 - jp $5989 + ld de, 20 -.asm_159fb - ld a, $9 - ld hl, $4706 - rst $8 - call $1bee + ld a, [$c2c6] and a - ret + jr nz, .left -.asm_15a06 - scf - ret -; 0x15a08 + ld a, [$ffad] +.x1 + push bc + push hl -MenuData15a08: ; 0x15a08 - db %01000000 - db 1, 4 ; top left corner coords (y, x) - db $a, $12 ; bottorm right corner coords (y, x) - dw .MenuData2 - db 1 ; default selected option +.y1 + ld [hl], a + add hl, de + inc a + dec c + jr nz, .y1 -.MenuData2 - db %10110000 - db 4, 8 ; rows/cols? - db 2 ; horizontal spacing? - dbw 0, $d8f1 - dbw BANK(Function24ab4), Function24ab4 - dbw BANK(Function24ac3), Function24ac3 - dbw BANK(Function244c3), Function244c3 + pop hl + inc hl + pop bc + dec b + jr nz, .x1 + ret -INCBIN "baserom.gbc", $15a20, $174ba - $15a20 +.left +; Right-aligned. + push bc + ld b, 0 + dec c + add hl, bc + pop bc + ld a, [$ffad] +.x2 + push bc + push hl -SECTION "bank6",DATA,BANK[$6] +.y2 + ld [hl], a + add hl, de + inc a + dec c + jr nz, .y2 -Tileset03GFX: ; 0x18000 -INCBIN "gfx/tilesets/03.lz" -; 0x18605 + pop hl + dec hl + pop bc + dec b + jr nz, .x2 + ret +; 2ef9f - db $00 -Tileset03Meta: ; 0x18606 -INCBIN "tilesets/03_metatiles.bin" -; 0x18e06 -Tileset03Coll: ; 0x18e06 -INCBIN "tilesets/03_collision.bin" -; 0x19006 +SECTION "bankC",DATA,BANK[$C] -Tileset00GFX: ; 0x19006 -Tileset01GFX: ; 0x19006 -INCBIN "gfx/tilesets/01.lz" -; 0x19c0d +Tileset15GFX: ; 0x30000 +INCBIN "gfx/tilesets/15.lz" +; 0x304d7 db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 + db $00 -Tileset00Meta: ; 0x19c0e -Tileset01Meta: ; 0x19c0e -INCBIN "tilesets/01_metatiles.bin" -; 0x1a40e +Tileset15Meta: ; 0x304e0 +INCBIN "tilesets/15_metatiles.bin" +; 0x308e0 -Tileset00Coll: ; 0x1a40e -Tileset01Coll: ; 0x1a40e -INCBIN "tilesets/01_collision.bin" -; 0x1a60e +Tileset15Coll: ; 0x308e0 +INCBIN "tilesets/15_collision.bin" +; 0x309e0 -Tileset29GFX: ; 0x1a60e -INCBIN "gfx/tilesets/29.lz" -; 0x1af38 +Tileset25GFX: ; 0x309e0 +INCBIN "gfx/tilesets/25.lz" +; 0x30e78 db $00 db $00 @@ -17185,23 +28135,39 @@ INCBIN "gfx/tilesets/29.lz" db $00 db $00 db $00 + db $00 + db $00 -Tileset29Meta: ; 0x1af3e -INCBIN "tilesets/29_metatiles.bin" -; 0x1b33e +Tileset25Meta: ; 0x30e80 +INCBIN "tilesets/25_metatiles.bin" +; 0x31280 -Tileset29Coll: ; 0x1b33e -INCBIN "tilesets/29_collision.bin" -; 0x1b43e +Tileset25Coll: ; 0x31280 +INCBIN "tilesets/25_collision.bin" +; 0x31380 -Tileset20GFX: ; 0x1b43e -INCBIN "gfx/tilesets/20.lz" -; 0x1b8f1 +Tileset27GFX: ; 0x31380 +INCBIN "gfx/tilesets/27.lz" +; 0x318dc db $00 db $00 db $00 db $00 + +Tileset27Meta: ; 0x318e0 +INCBIN "tilesets/27_metatiles.bin" +; 0x31ce0 + +Tileset27Coll: ; 0x31ce0 +INCBIN "tilesets/27_collision.bin" +; 0x31de0 + +Tileset28GFX: ; 0x31de0 +INCBIN "gfx/tilesets/28.lz" +; 0x321a6 + + db $00 db $00 db $00 db $00 @@ -17212,4843 +28178,6575 @@ INCBIN "gfx/tilesets/20.lz" db $00 db $00 -Tileset20Meta: ; 0x1b8fe -INCBIN "tilesets/20_metatiles.bin" -; 0x1bcfe +Tileset28Meta: ; 0x321b0 +INCBIN "tilesets/28_metatiles.bin" +; 0x325b0 -Tileset20Coll: ; 0x1bcfe -INCBIN "tilesets/20_collision.bin" -; 0x1bdfe +Tileset28Coll: ; 0x325b0 +INCBIN "tilesets/28_collision.bin" +; 0x326b0 +Tileset30GFX: ; 0x326b0 +INCBIN "gfx/tilesets/30.lz" +; 0x329ed -SECTION "bank7",DATA,BANK[$7] +INCBIN "baserom.gbc", $329ed, $333f0 - $329ed -INCBIN "baserom.gbc", $1c000, $1c30c - $1c000 -Tileset07GFX: ; 0x1c30c -INCBIN "gfx/tilesets/07.lz" -; 0x1c73b +SECTION "bankD",DATA,BANK[$D] - db $00 +INCLUDE "battle/effect_commands.asm" -Tileset07Meta: ; 0x1c73c -INCBIN "tilesets/07_metatiles.bin" -; 0x1cb3c -Tileset07Coll: ; 0x1cb3c -INCBIN "tilesets/07_collision.bin" -; 0x1cc3c +SECTION "bankE",DATA,BANK[$E] -Tileset09GFX: ; 0x1cc3c -INCBIN "gfx/tilesets/09.lz" -; 0x1d047 +INCBIN "baserom.gbc", $38000, $38591 - $38000 - db $00 - db $00 - db $00 - db $00 - db $00 -Tileset09Meta: ; 0x1d04c -INCBIN "tilesets/09_metatiles.bin" -; 0x1d44c +AIScoring: ; 38591 +INCLUDE "battle/ai/scoring.asm" -Tileset09Coll: ; 0x1d44c -INCBIN "tilesets/09_collision.bin" -; 0x1d54c -Tileset06GFX: ; 0x1d54c -INCBIN "gfx/tilesets/06.lz" -; 0x1d924 +INCBIN "baserom.gbc", $3952d, $39939 - $3952d + + +Function39939: ; 39939 + ld a, [$cfc0] + bit 0, a + ld hl, $d26b + jp nz, $5984 + ld a, [OtherTrainerID] + ld b, a + ld a, [OtherTrainerClass] + ld c, a + ld a, c + cp $c + jr nz, .asm_3996d + ld a, $0 + call GetSRAMBank + ld a, [$abfd] + and a + call CloseSRAM + jr z, .asm_3996d + ld a, $0 + call GetSRAMBank + ld hl, $abfe + call $5984 + jp CloseSRAM + +.asm_3996d + dec c + push bc + ld b, $0 + ld hl, TrainerGroups + add hl, bc + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + pop bc +.asm_3997a + dec b + jr z, .asm_39984 +.asm_3997d + ld a, [hli] + cp $ff + jr nz, .asm_3997d + jr .asm_3997a + +.asm_39984 + ld de, StringBuffer1 + push de + ld bc, $000b + call CopyBytes + pop de + ret +; 39990 + +INCBIN "baserom.gbc", $39990, $39999 - $39990 + + +TrainerGroups: ; 0x39999 +INCLUDE "trainers/trainer_pointers.asm" + +INCLUDE "trainers/trainers.asm" + + +SECTION "bankF",DATA,BANK[$F] + +INCBIN "baserom.gbc", $3c000, $3cc83 - $3c000 + +GetEighthMaxHP: ; 3cc83 +; output: bc + call GetQuarterMaxHP +; assumes nothing can have 1024 or more hp +; halve result + srl c +; round up + ld a, c + and a + jr nz, .end + inc c +.end + ret +; 3cc8e + + +GetQuarterMaxHP: ; 3cc8e +; output: bc + call GetMaxHP + +; quarter result + srl b + rr c + srl b + rr c + +; assumes nothing can have 1024 or more hp +; round up + ld a, c + and a + jr nz, .end + inc c +.end + ret +; 3cc9f + + +GetHalfMaxHP: ; 3cc9f +; output: bc + call GetMaxHP + +; halve reslut + srl b + rr c + +; floor = 1 + ld a, c + or b + jr nz, .end + inc c +.end + ret +; 3ccac + + +GetMaxHP: ; 3ccac +; output: bc, MagikarpLength-b + +; player + ld hl, BattleMonMaxHP + +; whose turn? + ld a, [hBattleTurn] + and a + jr z, .gethp + +; enemy + ld hl, EnemyMonMaxHP + +.gethp + ld a, [hli] + ld [Buffer2], a + ld b, a + + ld a, [hl] + ld [MagikarpLength], a + ld c, a + ret +; 3ccc2 + + +INCBIN "baserom.gbc", $3ccc2, $3d123 - $3ccc2 + + +; These functions check if the current opponent is a gym leader or one of a +; few other special trainers. + +; Note: KantoGymLeaders is a subset of JohtoGymLeaders. If you wish to +; differentiate between the two, call IsKantoGymLeader first. + +; The Lance and Red entries are unused for music checks; those trainers are +; accounted for elsewhere. + +IsKantoGymLeader: ; 0x3d123 + ld hl, KantoGymLeaders + jr IsGymLeaderCommon + +IsJohtoGymLeader: ; 0x3d128 + ld hl, JohtoGymLeaders +IsGymLeaderCommon: + push de + ld a, [OtherTrainerClass] + ld de, $0001 + call IsInArray + pop de + ret +; 0x3d137 + +JohtoGymLeaders: + db FALKNER + db WHITNEY + db BUGSY + db MORTY + db PRYCE + db JASMINE + db CHUCK + db CLAIR + db WILL + db BRUNO + db KAREN + db KOGA +; fallthrough +; these two entries are unused + db CHAMPION + db RED +; fallthrough +KantoGymLeaders: + db BROCK + db MISTY + db LT_SURGE + db ERIKA + db JANINE + db SABRINA + db BLAINE + db BLUE + db $ff + + +INCBIN "baserom.gbc", $3d14e, $3d38e - $3d14e - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 -Tileset06Meta: ; 0x1d92c -INCBIN "tilesets/06_metatiles.bin" -; 0x1dd2c +LostBattle: ; 3d38e + ld a, 1 + ld [BattleEnded], a -Tileset06Coll: ; 0x1dd2c -INCBIN "tilesets/06_collision.bin" -; 0x1de2c + ld a, [$cfc0] + bit 0, a + jr nz, .asm_3d3bd -Tileset13GFX: ; 0x1de2c -INCBIN "gfx/tilesets/13.lz" -; 0x1e58c + ld a, [BattleType] + cp BATTLETYPE_CANLOSE + jr nz, .asm_3d3e3 -Tileset13Meta: ; 0x1e58c -INCBIN "tilesets/13_metatiles.bin" -; 0x1e98c +; Remove the enemy from the screen. + hlcoord 0, 0 + ld bc, $0815 + call ClearBox + call $6bd8 -Tileset13Coll: ; 0x1e98c -INCBIN "tilesets/13_collision.bin" -; 0x1ea8c + ld c, 40 + call DelayFrames -Tileset24GFX: ; 0x1ea8c -INCBIN "gfx/tilesets/24.lz" -; 0x1ee0e + ld a, [$c2cc] + bit 0, a + jr nz, .asm_3d3bc + call $3718 +.asm_3d3bc + ret - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 +.asm_3d3bd +; Remove the enemy from the screen. + hlcoord 0, 0 + ld bc, $0815 + call ClearBox + call $6bd8 -Tileset24Meta: ; 0x1ee1c -Tileset30Meta: ; 0x1ee1c -INCBIN "tilesets/30_metatiles.bin" -; 0x1f21c + ld c, 40 + call DelayFrames -Tileset24Coll: ; 0x1f21c -Tileset30Coll: ; 0x1f21c -INCBIN "tilesets/30_collision.bin" -; 0x1f31c + call $6dd1 + ld c, 2 + ld a, $47 + ld hl, $4000 + rst FarCall + call $0a80 + call ClearTileMap + call WhiteBGMap + ret -; Songs i +.asm_3d3e3 + ld a, [InLinkBattle] + and a + jr nz, .LostLinkBattle -Music_Credits: INCLUDE "audio/music/credits.asm" -Music_Clair: INCLUDE "audio/music/clair.asm" -Music_MobileAdapter: INCLUDE "audio/music/mobileadapter.asm" +; Greyscale + ld b, 0 + call GetSGBLayout + call Function32f9 + jr .end +.LostLinkBattle + call UpdateEnemyMonInParty + call $4f35 + jr nz, .asm_3d40a + ld hl, TiedAgainstText + ld a, [$d0ee] + and $c0 + add 2 + ld [$d0ee], a + jr .asm_3d412 -SECTION "bank8",DATA,BANK[$8] +.asm_3d40a + ld hl, LostAgainstText + call $52f1 + jr z, .asm_3d417 -INCBIN "baserom.gbc", $20000, $20181 - $20000 +.asm_3d412 + call FarBattleTextBox -Tileset23GFX: ; 0x20181 -INCBIN "gfx/tilesets/23.lz" -; 0x206d2 +.end + scf + ret - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 +.asm_3d417 +; Remove the enemy from the screen. + hlcoord 0, 0 + ld bc, $0815 + call ClearBox + call $6bd8 -Tileset23Meta: ; 0x206e1 -INCBIN "tilesets/23_metatiles.bin" -; 0x20ae1 + ld c, 40 + call DelayFrames -Tileset23Coll: ; 0x20ae1 -INCBIN "tilesets/23_collision.bin" -; 0x20be1 + ld c, $3 + ld a, $13 + ld hl, $6a0a + rst FarCall + scf + ret +; 3d432 -Tileset10GFX: ; 0x20be1 -INCBIN "gfx/tilesets/10.lz" -; 0x213e0 - db $00 +INCBIN "baserom.gbc", $3d432, $3dabd - $3d432 -Tileset10Meta: ; 0x213e1 -INCBIN "tilesets/10_metatiles.bin" -; 0x217e1 -Tileset10Coll: ; 0x217e1 -INCBIN "tilesets/10_collision.bin" -; 0x218e1 +Function3dabd: ; 3dabd + ld a, [CurPartyMon] + ld hl, OTPartyMon1Species + call GetPartyLocation + ld de, EnemyMonSpecies + ld bc, $0006 + call CopyBytes + ld bc, $000f + add hl, bc + ld de, EnemyMonAtkDefDV + ld bc, $0007 + call CopyBytes + inc hl + inc hl + inc hl + ld de, EnemyMonLevel + ld bc, $0011 + call CopyBytes + ld a, [EnemyMonSpecies] + ld [CurSpecies], a + call GetBaseData + ld hl, OTPartyMon1Nickname + ld a, [CurPartyMon] + call SkipNames + ld de, EnemyMonNick + ld bc, $000b + call CopyBytes + ld hl, EnemyMonAtk + ld de, EnemyStats + ld bc, $000a + call CopyBytes + call $6c30 + ld hl, BaseType1 + ld de, EnemyMonType1 + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + ld hl, BaseHP + ld de, EnemyMonBaseStats + ld b, $5 +.asm_3db25 + ld a, [hli] + ld [de], a + inc de + dec b + jr nz, .asm_3db25 + ld a, [CurPartyMon] + ld [CurOTMon], a + ret +; 3db32 -Tileset12GFX: ; 0x218e1 -INCBIN "gfx/tilesets/12.lz" -; 0x22026 +INCBIN "baserom.gbc", $3db32, $3ddc2 - $3db32 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 + ld hl, RecoveredUsingText + jp FarBattleTextBox +; 0x3ddc8 -Tileset12Meta: ; 0x22031 -INCBIN "tilesets/12_metatiles.bin" -; 0x22431 +INCBIN "baserom.gbc", $3ddc8, $3e8eb - $3ddc8 -Tileset12Coll: ; 0x22431 -INCBIN "tilesets/12_collision.bin" -; 0x22531 +LoadEnemyMon: ; 3e8eb +; Initialize enemy monster parameters +; To do this we pull the species from TempEnemyMonSpecies -Tileset14GFX: ; 0x22531 -INCBIN "gfx/tilesets/14.lz" -; 0x22ae2 +; Notes: +; FarBattleRNG is used to ensure sync between Game Boys - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 +; Clear the whole EnemyMon struct + xor a + ld hl, EnemyMonSpecies + ld bc, EnemyMonEnd - EnemyMon + call ByteFill + +; We don't need to be here if we're in a link battle + ld a, [InLinkBattle] + and a + jp nz, $5abd + + ld a, [$cfc0] ; ???? + bit 0, a + jp nz, $5abd + +; Make sure everything knows what species we're working with + ld a, [TempEnemyMonSpecies] + ld [EnemyMonSpecies], a + ld [CurSpecies], a + ld [CurPartySpecies], a + +; Grab the BaseData for this species + call GetBaseData + -Tileset14Meta: ; 0x22af1 -INCBIN "tilesets/14_metatiles.bin" -; 0x22ef1 +; Let's get the item: -Tileset14Coll: ; 0x22ef1 -INCBIN "tilesets/14_collision.bin" -; 0x22ff1 +; Is the item predetermined? + ld a, [IsInBattle] + dec a + jr z, .WildItem + +; If we're in a trainer battle, the item is in the party struct + ld a, [CurPartyMon] + ld hl, OTPartyMon1Item + call GetPartyLocation ; bc = PartyMon[CurPartyMon] - PartyMons + ld a, [hl] + jr .UpdateItem + + +.WildItem +; In a wild battle, we pull from the item slots in BaseData -Tileset17GFX: ; 0x22ff1 -INCBIN "gfx/tilesets/17.lz" -; 0x23391 +; Force Item1 +; Used for Ho-Oh, Lugia and Snorlax encounters + ld a, [BattleType] + cp BATTLETYPE_FORCEITEM + ld a, [BaseItems] + jr z, .UpdateItem + +; Failing that, it's all up to chance +; Effective chances: +; 75% None +; 23% Item1 +; 2% Item2 -Tileset17Meta: ; 0x23391 -INCBIN "tilesets/17_metatiles.bin" -; 0x23791 +; 25% chance of getting an item + call FarBattleRNG + cp a, $c0 + ld a, NO_ITEM + jr c, .UpdateItem + +; From there, an 8% chance for Item2 + call FarBattleRNG + cp a, $14 ; 8% of 25% = 2% Item2 + ld a, [BaseItems] + jr nc, .UpdateItem + ld a, [BaseItems+1] + + +.UpdateItem + ld [EnemyMonItem], a + + +; Initialize DVs + +; If we're in a trainer battle, DVs are predetermined + ld a, [IsInBattle] + and a + jr z, .InitDVs + +; ???? + ld a, [EnemySubStatus5] + bit 3, a + jr z, .InitDVs + +; Unknown + ld hl, $c6f2 + ld de, EnemyMonDVs + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + jp .Happiness + + +.InitDVs + +; Trainer DVs + +; All trainers have preset DVs, determined by class +; See GetTrainerDVs for more on that + callba GetTrainerDVs +; These are the DVs we'll use if we're actually in a trainer battle + ld a, [IsInBattle] + dec a + jr nz, .UpdateDVs + + +; Wild DVs +; Here's where the fun starts -Tileset17Coll: ; 0x23791 -INCBIN "tilesets/17_collision.bin" -; 0x23891 +; Roaming monsters (Entei, Raikou) work differently +; They have their own structs, which are shorter than normal + ld a, [BattleType] + cp a, BATTLETYPE_ROAMING + jr nz, .NotRoaming + +; Grab HP + call GetRoamMonHP + ld a, [hl] +; Check if the HP has been initialized + and a +; We'll do something with the result in a minute + push af + +; Grab DVs + call GetRoamMonDVs + inc hl + ld a, [hld] + ld c, a + ld b, [hl] -; todo -Tileset31Meta: ; 0x23891 -INCBIN "tilesets/31_metatiles.bin", $0, $280 -; 0x23b11 +; Get back the result of our check + pop af +; If the RoamMon struct has already been initialized, we're done + jr nz, .UpdateDVs + +; If it hasn't, we need to initialize the DVs +; (HP is initialized at the end of the battle) + call GetRoamMonDVs + inc hl + call FarBattleRNG + ld [hld], a + ld c, a + call FarBattleRNG + ld [hl], a + ld b, a +; We're done with DVs + jr .UpdateDVs -EggMovePointers: ; 0x23b11 -INCLUDE "stats/egg_move_pointers.asm" + +.NotRoaming +; Register a contains BattleType + +; Forced shiny battle type +; Used by Red Gyarados at Lake of Rage + cp a, BATTLETYPE_SHINY + jr nz, .GenerateDVs + + ld b, ATKDEFDV_SHINY ; $ea + ld c, SPDSPCDV_SHINY ; $aa + jr .UpdateDVs + +.GenerateDVs +; Generate new random DVs + call FarBattleRNG + ld b, a + call FarBattleRNG + ld c, a + +.UpdateDVs +; Input DVs in register bc + ld hl, EnemyMonDVs + ld a, b + ld [hli], a + ld [hl], c + + +; We've still got more to do if we're dealing with a wild monster + ld a, [IsInBattle] + dec a + jr nz, .Happiness + + +; Species-specfic: + + +; Unown + ld a, [TempEnemyMonSpecies] + cp a, UNOWN + jr nz, .Magikarp + +; Get letter based on DVs + ld hl, EnemyMonDVs + ld a, PREDEF_GETUNOWNLETTER + call Predef +; Can't use any letters that haven't been unlocked +; If combined with forced shiny battletype, causes an infinite loop + call CheckUnownLetter + jr c, .GenerateDVs ; try again + + +.Magikarp +; Skimming this part recommended + + ld a, [TempEnemyMonSpecies] + cp a, MAGIKARP + jr nz, .Happiness + +; Get Magikarp's length + ld de, EnemyMonDVs + ld bc, PlayerID + callab CalcMagikarpLength + +; We're clear if the length is < 1536 + ld a, [MagikarpLength] + cp a, $06 ; $600 = 1536 + jr nz, .CheckMagikarpArea + +; 5% chance of skipping size checks + call RNG + cp a, $0c ; / $100 + jr c, .CheckMagikarpArea +; Try again if > 1614 + ld a, [MagikarpLength + 1] + cp a, $50 + jr nc, .GenerateDVs + +; 20% chance of skipping this check + call RNG + cp a, $32 ; / $100 + jr c, .CheckMagikarpArea +; Try again if > 1598 + ld a, [MagikarpLength + 1] + cp a, $40 + jr nc, .GenerateDVs + +.CheckMagikarpArea +; The z checks are supposed to be nz +; Instead, all maps in GROUP_LAKE_OF_RAGE (mahogany area) +; and routes 20 and 44 are treated as Lake of Rage + +; This also means Lake of Rage Magikarp can be smaller than ones +; caught elsewhere rather than the other way around + +; Intended behavior enforces a minimum size at Lake of Rage +; The real behavior prevents size flooring in the Lake of Rage area + ld a, [MapGroup] + cp a, GROUP_LAKE_OF_RAGE + jr z, .Happiness + ld a, [MapNumber] + cp a, MAP_LAKE_OF_RAGE + jr z, .Happiness +; 40% chance of not flooring + call RNG + cp a, $64 ; / $100 + jr c, .Happiness +; Floor at length 1024 + ld a, [MagikarpLength] + cp a, 1024 >> 8 + jr c, .GenerateDVs ; try again + + +; Finally done with DVs + +.Happiness +; Set happiness + ld a, BASE_HAPPINESS + ld [EnemyMonHappiness], a +; Set level + ld a, [CurPartyLevel] + ld [EnemyMonLevel], a +; Fill stats + ld de, EnemyMonMaxHP + ld b, $00 + ld hl, $d201 ; ? + ld a, PREDEF_FILLSTATS + call Predef + +; If we're in a trainer battle, +; get the rest of the parameters from the party struct + ld a, [IsInBattle] + cp a, TRAINER_BATTLE + jr z, .OpponentParty + +; If we're in a wild battle, check wild-specific stuff + and a + jr z, .TreeMon + +; ???? + ld a, [EnemySubStatus5] + bit 3, a + jp nz, .Moves + +.TreeMon +; If we're headbutting trees, some monsters enter battle asleep + call CheckSleepingTreeMon + ld a, 7 ; Asleep for 7 turns + jr c, .UpdateStatus +; Otherwise, no status + xor a + +.UpdateStatus + ld hl, EnemyMonStatus + ld [hli], a + +; Unused byte + xor a + ld [hli], a + +; Full HP... + ld a, [EnemyMonMaxHPHi] + ld [hli], a + ld a, [EnemyMonMaxHPLo] + ld [hl], a + +; ...unless it's a RoamMon + ld a, [BattleType] + cp a, BATTLETYPE_ROAMING + jr nz, .Moves + +; Grab HP + call GetRoamMonHP + ld a, [hl] +; Check if it's been initialized again + and a + jr z, .InitRoamHP +; Update from the struct if it has + ld a, [hl] + ld [EnemyMonHPLo], a + jr .Moves + +.InitRoamHP +; HP only uses the lo byte in the RoamMon struct since +; Raikou/Entei/Suicune will have < 256 hp at level 40 + ld a, [EnemyMonHPLo] + ld [hl], a + jr .Moves + + +.OpponentParty +; Get HP from the party struct + ld hl, (PartyMon1CurHP + 1) - PartyMon1 + OTPartyMon1 + ld a, [CurPartyMon] + call GetPartyLocation + ld a, [hld] + ld [EnemyMonHPLo], a + ld a, [hld] + ld [EnemyMonHPHi], a + +; Make sure everything knows which monster the opponent is using + ld a, [CurPartyMon] + ld [CurOTMon], a + +; Get status from the party struct + dec hl + ld a, [hl] ; OTPartyMonStatus + ld [EnemyMonStatus], a + + +.Moves +; ???? + ld hl, BaseType1 + ld de, EnemyMonType1 + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + +; Get moves + ld de, EnemyMonMoves +; Are we in a trainer battle? + ld a, [IsInBattle] + cp a, TRAINER_BATTLE + jr nz, .WildMoves +; Then copy moves from the party struct + ld hl, OTPartyMon1Moves + ld a, [CurPartyMon] + call GetPartyLocation + ld bc, NUM_MOVES + call CopyBytes + jr .PP + +.WildMoves +; Clear EnemyMonMoves + xor a + ld h, d + ld l, e + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a +; Make sure the predef knows this isn't a partymon + ld [MagikarpLength], a +; Fill moves based on level + ld a, PREDEF_FILLMOVES + call Predef + +.PP +; Trainer battle? + ld a, [IsInBattle] + cp a, TRAINER_BATTLE + jr z, .TrainerPP + +; Fill wild PP + ld hl, EnemyMonMoves + ld de, EnemyMonPP + ld a, PREDEF_FILLPP + call Predef + jr .Finish + +.TrainerPP +; Copy PP from the party struct + ld hl, OTPartyMon1PP + ld a, [CurPartyMon] + call GetPartyLocation + ld de, EnemyMonPP + ld bc, NUM_MOVES + call CopyBytes + +.Finish +; Only the first five base stats are copied... + ld hl, BaseStats + ld de, EnemyMonBaseStats + ld b, BaseSpecialDefense - BaseStats +.loop + ld a, [hli] + ld [de], a + inc de + dec b + jr nz, .loop -INCLUDE "stats/egg_moves.asm" + ld a, [BaseCatchRate] + ld [de], a + inc de + ld a, [BaseExp] + ld [de], a -SECTION "bank9",DATA,BANK[$9] + ld a, [TempEnemyMonSpecies] + ld [$d265], a -INCBIN "baserom.gbc", $24000, $244c3 - $24000 + call GetPokemonName -Function244c3: ; 0x244c3 - ld a, [MenuSelection] - ld [CurSpecies], a - hlcoord 0, 12 - ld b, $4 - ld c, $12 - call TextBox - ld a, [MenuSelection] - cp $ff +; Did we catch it? + ld a, [IsInBattle] + and a ret z - ld de, $c5b9 - ld a, BANK(GetItemDescription) - ld hl, GetItemDescription - rst $8 - ret -; 0x244e3 -INCBIN "baserom.gbc", $244e3, $24ab4 - $244e3 +; Update enemy nick + ld hl, StringBuffer1 + ld de, EnemyMonNick + ld bc, PKMN_NAME_LENGTH + call CopyBytes -Function24ab4: ; 0x24ab4 - push de - ld a, [MenuSelection] - ld [$d265], a - call GetItemName - pop hl - call PlaceString - ret -; 0x24ac3 +; Caught this mon + ld a, [TempEnemyMonSpecies] + dec a + ld c, a + ld b, 1 ; set + ld hl, PokedexCaught + ld a, PREDEF_FLAG + call Predef -Function24ac3: ; 0x24ac3 - push de - ld a, [MenuSelection] - ld [CurItem], a - ld a, BANK(_CheckTossableItem) - ld hl, _CheckTossableItem - rst $8 - ld a, [$d142] - pop hl - and a - jr nz, .done - ld de, $0015 - add hl, de - ld [hl], $f1 - inc hl - ld de, $cf75 - ld bc, $0102 - call $3198 + ld hl, EnemyMonStats + ld de, EnemyStats + ld bc, EnemyMonStatsEnd - EnemyMonStats + call CopyBytes -.done ret -; 0x24ae8 - -INCBIN "baserom.gbc", $24ae8, $265d3 - $24ae8 +; 3eb38 -ProfOaksPC: ; 0x265d3 - ld hl, OakPCText1 - call $1d4f - call $1dcf - jr c, .shutdown - call ProfOaksPCBoot ; player chose "yes"? -.shutdown - ld hl, OakPCText4 - call PrintText - call $0a36 - call Function1c07 - ret -; 0x265ee -ProfOaksPCBoot ; 0x265ee - ld hl, OakPCText2 - call PrintText - call Rate - call StartSFX ; sfx loaded by previous Rate function call - call $0a36 - call WaitSFX - ret -; 0x26601 +CheckSleepingTreeMon: ; 3eb38 +; Return carry if species is in the list +; for the current time of day -Function26601: ; 0x26601 - call Rate - push de - ld de, MUSIC_NONE - call StartMusic - pop de - call StartSFX - call $0a36 - call WaitSFX +; Don't do anything if this isn't a tree encounter + ld a, [BattleType] + cp a, BATTLETYPE_TREE + jr nz, .NotSleeping + +; Get list for the time of day + ld hl, .Morn + ld a, [TimeOfDay] + cp a, DAY + jr c, .Check + ld hl, .Day + jr z, .Check + ld hl, .Nite + +.Check + ld a, [TempEnemyMonSpecies] + ld de, 1 ; length of species id + call IsInArray +; If it's a match, the opponent is asleep + ret c + +.NotSleeping + and a ret -; 0x26616 -Rate: ; 0x26616 -; calculate Seen/Owned - ld hl, PokedexCaught - ld b, EndPokedexCaught - PokedexCaught - call CountSetBits - ld [DefaultFlypoint], a - ld hl, PokedexSeen - ld b, EndPokedexSeen - PokedexSeen - call CountSetBits - ld [$d003], a +.Nite + db CATERPIE + db METAPOD + db BUTTERFREE + db WEEDLE + db KAKUNA + db BEEDRILL + db SPEAROW + db EKANS + db EXEGGCUTE + db LEDYBA + db AIPOM + db $ff ; end -; print appropriate rating - call ClearOakRatingBuffers - ld hl, OakPCText3 - call PrintText - call $0a36 - ld a, [$d003] - ld hl, OakRatings - call FindOakRating - push de - call PrintText - pop de - ret -; 0x26647 +.Day + db VENONAT + db HOOTHOOT + db NOCTOWL + db SPINARAK + db HERACROSS + db $ff ; end -ClearOakRatingBuffers: ; 0x26647 - ld hl, StringBuffer3 - ld de, DefaultFlypoint - call ClearOakRatingBuffer - ld hl, StringBuffer4 - ld de, $d003 - call ClearOakRatingBuffer - ret -; 0x2665a +.Morn + db VENONAT + db HOOTHOOT + db NOCTOWL + db SPINARAK + db HERACROSS + db $ff ; end +; 3eb75 -ClearOakRatingBuffer: ; 0x2665a - push hl - ld a, "@" - ld bc, $000d - call ByteFill - pop hl - ld bc, $4103 - call $3198 - ret -; 0x2666b -FindOakRating: ; 0x2666b -; return sound effect in de -; return text pointer in hl - nop +CheckUnownLetter: ; 3eb75 +; Return carry if the Unown letter hasn't been unlocked yet + + ld a, [UnlockedUnowns] ld c, a + ld de, 0 + .loop - ld a, [hli] - cp c - jr nc, .match - inc hl - inc hl - inc hl - inc hl - jr .loop - -.match - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a + +; Don't check this set unless it's been unlocked + srl c + jr nc, .next + +; Is our letter in the set? + ld hl, .LetterSets + add hl, de ld a, [hli] ld h, [hl] ld l, a + + push de + ld a, [UnownLetter] + ld de, 1 + push bc + call IsInArray + pop bc + pop de + + jr c, .match + +.next +; Make sure we haven't gone past the end of the table + inc e + inc e + ld a, e + cp a, .Set1 - .LetterSets + jr c, .loop + +; Hasn't been unlocked, or the letter is invalid + scf ret -; 0x2667f - -OakRatings: ; 0x2667f -; db count (if number caught ≤ this number, then this entry is used) -; dw sound effect -; dw text pointer - - db 9 - dw SFX_DEX_FANFARE_LESS_THAN_20 - dw OakRating01 - - db 19 - dw SFX_DEX_FANFARE_LESS_THAN_20 - dw OakRating02 - - db 34 - dw SFX_DEX_FANFARE_20_49 - dw OakRating03 - - db 49 - dw SFX_DEX_FANFARE_20_49 - dw OakRating04 - - db 64 - dw SFX_DEX_FANFARE_50_79 - dw OakRating05 - - db 79 - dw SFX_DEX_FANFARE_50_79 - dw OakRating06 - - db 94 - dw SFX_DEX_FANFARE_80_109 - dw OakRating07 - - db 109 - dw SFX_DEX_FANFARE_80_109 - dw OakRating08 - - db 124 - dw SFX_CAUGHT_MON - dw OakRating09 - - db 139 - dw SFX_CAUGHT_MON - dw OakRating10 + +.match +; Valid letter + and a + ret + +.LetterSets + dw .Set1 + dw .Set2 + dw .Set3 + dw .Set4 + +.Set1 + ; A B C D E F G H I J K + db 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, $ff +.Set2 + ; L M N O P Q R + db 12, 13, 14, 15, 16, 17, 18, $ff +.Set3 + ; S T U V W + db 19, 20, 21, 22, 23, $ff +.Set4 + ; X Y Z + db 24, 25, 26, $ff + +; 3ebc7 - db 154 - dw SFX_DEX_FANFARE_140_169 - dw OakRating11 - db 169 - dw SFX_DEX_FANFARE_140_169 - dw OakRating12 +INCBIN "baserom.gbc", $3ebc7, $3ec30 - $3ebc7 - db 184 - dw SFX_DEX_FANFARE_170_199 - dw OakRating13 - db 199 - dw SFX_DEX_FANFARE_170_199 - dw OakRating14 +Function3ec30: ; 3ec30 + xor a + ld [hBattleTurn], a + call $6c39 + jp $6c76 +; 3ec39 - db 214 - dw SFX_DEX_FANFARE_200_229 - dw OakRating15 +Function3ec39: ; 3ec39 + ld a, [hBattleTurn] + and a + jr z, .asm_3ec5a + ld a, [BattleMonStatus] + and $40 + ret z + ld hl, $c645 + ld a, [hld] + ld b, a + ld a, [hl] + srl a + rr b + srl a + rr b + ld [hli], a + or b + jr nz, .asm_3ec58 + ld b, $1 - db 229 - dw SFX_DEX_FANFARE_200_229 - dw OakRating16 +.asm_3ec58 + ld [hl], b + ret - db 239 - dw SFX_DEX_FANFARE_230_PLUS - dw OakRating17 +.asm_3ec5a + ld a, [EnemyMonStatus] + and $40 + ret z + ld hl, $d21f + ld a, [hld] + ld b, a + ld a, [hl] + srl a + rr b + srl a + rr b + ld [hli], a + or b + jr nz, .asm_3ec74 + ld b, $1 - db 248 - dw SFX_DEX_FANFARE_230_PLUS - dw OakRating18 +.asm_3ec74 + ld [hl], b + ret +; 3ec76 - db 255 - dw SFX_DEX_FANFARE_230_PLUS - dw OakRating19 +Function3ec76: ; 3ec76 + ld a, [hBattleTurn] + and a + jr z, .asm_3ec93 + ld a, [BattleMonStatus] + and $10 + ret z + ld hl, $c641 + ld a, [hld] + ld b, a + ld a, [hl] + srl a + rr b + ld [hli], a + or b + jr nz, .asm_3ec91 + ld b, $1 -OakPCText1: ; 0x266de - TX_FAR _OakPCText1 - db "@" +.asm_3ec91 + ld [hl], b + ret -OakPCText2: ; 0x266e3 - TX_FAR _OakPCText2 - db "@" +.asm_3ec93 + ld a, [EnemyMonStatus] + and $10 + ret z + ld hl, $d21b + ld a, [hld] + ld b, a + ld a, [hl] + srl a + rr b + ld [hli], a + or b + jr nz, .asm_3eca9 + ld b, $1 -OakPCText3: ; 0x266e8 - TX_FAR _OakPCText3 - db "@" +.asm_3eca9 + ld [hl], b + ret +; 3ecab -OakRating01: - TX_FAR _OakRating01 - db "@" +INCBIN "baserom.gbc", $3ecab, $3ed4a - $3ecab -OakRating02: - TX_FAR _OakRating02 - db "@" -OakRating03: - TX_FAR _OakRating03 - db "@" +BadgeStatBoosts: ; 3ed4a +; Raise BattleMon stats depending on which badges have been obtained. -OakRating04: - TX_FAR _OakRating04 - db "@" +; Every other badge boosts a stat, starting from the first. -OakRating05: - TX_FAR _OakRating05 - db "@" +; ZephyrBadge: Attack +; PlainBadge: Speed +; MineralBadge: Defense +; GlacierBadge: Special Attack +; RisingBadge: Special Defense -OakRating06: - TX_FAR _OakRating06 - db "@" +; The boosted stats are in order, except PlainBadge and MineralBadge's boosts are swapped. -OakRating07: - TX_FAR _OakRating07 - db "@" + ld a, [$cfc0] + and a + ret nz -OakRating08: - TX_FAR _OakRating08 - db "@" + ld a, [JohtoBadges] -OakRating09: - TX_FAR _OakRating09 - db "@" +; Swap badges 3 (PlainBadge) and 5 (MineralBadge). + ld d, a + and %00000100 + add a + add a + ld b, a + ld a, d + and %00010000 + rrca + rrca + ld c, a + ld a, d + and %11101011 + or b + or c + ld b, a -OakRating10: - TX_FAR _OakRating10 - db "@" + ld hl, BattleMonAtk + ld c, 4 +.CheckBadge + ld a, b + srl b + call c, BoostStat + inc hl + inc hl +; Check every other badge. + srl b + dec c + jr nz, .CheckBadge +; And the last one (RisingBadge) too. + srl a + call c, BoostStat + ret +; 3ed7c -OakRating11: - TX_FAR _OakRating11 - db "@" -OakRating12: - TX_FAR _OakRating12 - db "@" +BoostStat: ; 3ed7c +; Raise stat at hl by 1/8. -OakRating13: - TX_FAR _OakRating13 - db "@" + ld a, [hli] + ld d, a + ld e, [hl] + srl d + rr e + srl d + rr e + srl d + rr e + ld a, [hl] + add e + ld [hld], a + ld a, [hl] + adc d + ld [hli], a -OakRating14: - TX_FAR _OakRating14 - db "@" +; Cap at 999. + ld a, [hld] + sub 999 % $100 + ld a, [hl] + sbc 999 / $100 + ret c + ld a, 999 / $100 + ld [hli], a + ld a, 999 % $100 + ld [hld], a + ret +; 3ed9f -OakRating15: - TX_FAR _OakRating15 - db "@" -OakRating16: - TX_FAR _OakRating16 - db "@" +INCBIN "baserom.gbc", $3ed9f, $3edd8 - $3ed9f -OakRating17: - TX_FAR _OakRating17 - db "@" -OakRating18: - TX_FAR _OakRating18 - db "@" +BattleRNG: ; 3edd8 +; If the normal RNG is used in a link battle it'll desync. +; To circumvent this a shared PRNG is used instead. -OakRating19: - TX_FAR _OakRating19 - db "@" +; But if we're in a non-link battle we're safe to use it + ld a, [InLinkBattle] + and a + jp z, RNG -OakPCText4: ; 0x2674c - TX_FAR _OakPCText4 - db "@" +; The PRNG operates in streams of 8 values +; The reasons for this are unknown -INCBIN "baserom.gbc", $26751, $2675c - $26751 +; Which value are we trying to pull? + push hl + push bc + ld a, [LinkBattleRNCount] + ld c, a + ld b, $0 + ld hl, LinkBattleRNs + add hl, bc + inc a + ld [LinkBattleRNCount], a -_KrisDecorationMenu: ; 0x2675c - ld a, [$cf76] +; If we haven't hit the end yet, we're good + cp 9 ; Exclude last value. See the closing comment + ld a, [hl] + pop bc + pop hl + ret c + + +; If we have, we have to generate new pseudorandom data +; Instead of having multiple PRNGs, ten seeds are used + push hl + push bc push af - ld hl, $679a - call Function1d35 + +; Reset count to 0 xor a - ld [$d1ee], a - ld a, $1 - ld [$d1ef], a -.asm_2676f - ld a, [$d1ef] - ld [$cf88], a - call $6806 - call $1e5d - ld a, [$cfa9] - ld [$d1ef], a - jr c, .asm_2678e - ld a, [MenuSelection] - ld hl, $67aa - call $1fa7 - jr nc, .asm_2676f + ld [LinkBattleRNCount], a + ld hl, LinkBattleRNs + ld b, 10 ; number of seeds + +; Generate next number in the sequence for each seed +; The algorithm takes the form *5 + 1 % 256 +.loop + ; get last # + ld a, [hl] + + ; a * 5 + 1 + ld c, a + add a + add a + add c + inc a + + ; update # + ld [hli], a + dec b + jr nz, .loop -.asm_2678e - call Function1c07 +; This has the side effect of pulling the last value first, +; then wrapping around. As a result, when we check to see if +; we've reached the end, we have to take this into account. pop af - ld [$cf76], a - ld a, [$d1ee] - ld c, a + pop bc + pop hl ret -; 0x2679a +; 3ee0f -INCBIN "baserom.gbc", $2679a, $270c4 - $2679a +INCBIN "baserom.gbc", $3ee0f, $3fa01 - $3ee0f -GetTrainerDVs: ; 270c4 -; get dvs based on trainer class -; output: bc - push hl -; dec trainer class so there's no filler entry for $00 - ld a, [OtherTrainerClass] - dec a - ld c, a - ld b, $0 -; seek table - ld hl, TrainerClassDVs - add hl, bc - add hl, bc -; get dvs - ld a, [hli] +GetRoamMonHP: ; 3fa01 +; output: hl = RoamMonCurHP + ld a, [TempEnemyMonSpecies] ld b, a - ld c, [hl] -; we're done - pop hl + ld a, [RoamMon1Species] + cp b + ld hl, RoamMon1CurHP + ret z + ld a, [RoamMon2Species] + cp b + ld hl, RoamMon2CurHP + ret z +; remnant of the GS function +; we know this will be $00 because it's never initialized + ld hl, RoamMon3CurHP ret -; 270d6 - -TrainerClassDVs ; 270d6 -; AtkDef, SpdSpc - db $9A, $77 ; falkner - db $88, $88 ; bugsy - db $98, $88 ; whitney - db $98, $88 ; morty - db $98, $88 ; pryce - db $98, $88 ; jasmine - db $98, $88 ; chuck - db $7C, $DD ; clair - db $DD, $DD ; rival1 - db $98, $88 ; pokemon prof - db $DC, $DD ; will - db $DC, $DD ; cal - db $DC, $DD ; bruno - db $7F, $DF ; karen - db $DC, $DD ; koga - db $DC, $DD ; champion - db $98, $88 ; brock - db $78, $88 ; misty - db $98, $88 ; lt surge - db $98, $88 ; scientist - db $78, $88 ; erika - db $98, $88 ; youngster - db $98, $88 ; schoolboy - db $98, $88 ; bird keeper - db $58, $88 ; lass - db $98, $88 ; janine - db $D8, $C8 ; cooltrainerm - db $7C, $C8 ; cooltrainerf - db $69, $C8 ; beauty - db $98, $88 ; pokemaniac - db $D8, $A8 ; gruntm - db $98, $88 ; gentleman - db $98, $88 ; skier - db $68, $88 ; teacher - db $7D, $87 ; sabrina - db $98, $88 ; bug catcher - db $98, $88 ; fisher - db $98, $88 ; swimmerm - db $78, $88 ; swimmerf - db $98, $88 ; sailor - db $98, $88 ; super nerd - db $98, $88 ; rival2 - db $98, $88 ; guitarist - db $A8, $88 ; hiker - db $98, $88 ; biker - db $98, $88 ; blaine - db $98, $88 ; burglar - db $98, $88 ; firebreather - db $98, $88 ; juggler - db $98, $88 ; blackbelt - db $D8, $A8 ; executivem - db $98, $88 ; psychic - db $6A, $A8 ; picnicker - db $98, $88 ; camper - db $7E, $A8 ; executivef - db $98, $88 ; sage - db $78, $88 ; medium - db $98, $88 ; boarder - db $98, $88 ; pokefanm - db $68, $8A ; kimono girl - db $68, $A8 ; twins - db $6D, $88 ; pokefanf - db $FD, $DE ; red - db $9D, $DD ; blue - db $98, $88 ; officer - db $7E, $A8 ; gruntf - db $98, $88 ; mysticalman -; 2715c - -INCBIN "baserom.gbc", $2715c, $271f4 - $2715c - -MoveEffectsPointers: ; 271f4 -INCLUDE "battle/moves/move_effects_pointers.asm" - -MoveEffects: ; 2732e -INCLUDE "battle/moves/move_effects.asm" - -INCBIN "baserom.gbc", $27a28, $27a2d - $27a28 - - -SECTION "bankA",DATA,BANK[$A] - -INCBIN "baserom.gbc", $28000, $2a2a0 - $28000 - -SpecialRoamMons: ; 2a2a0 -; initialize RoamMon structs -; include commented-out parts from the gs function - -; species - ld a, RAIKOU - ld [RoamMon1Species], a - ld a, ENTEI - ld [RoamMon2Species], a -; ld a, SUICUNE -; ld [RoamMon3Species], a - -; level - ld a, 40 - ld [RoamMon1Level], a - ld [RoamMon2Level], a -; ld [RoamMon3Level], a - -; raikou starting map - ld a, GROUP_ROUTE_42 - ld [RoamMon1MapGroup], a - ld a, MAP_ROUTE_42 - ld [RoamMon1MapNumber], a - -; entei starting map - ld a, GROUP_ROUTE_37 - ld [RoamMon2MapGroup], a - ld a, MAP_ROUTE_37 - ld [RoamMon2MapNumber], a - -; suicune starting map -; ld a, GROUP_ROUTE_38 -; ld [RoamMon3MapGroup], a -; ld a, MAP_ROUTE_38 -; ld [RoamMon3MapNumber], a - -; hp - xor a ; generate new stats - ld [RoamMon1CurHP], a - ld [RoamMon2CurHP], a -; ld [RoamMon3CurHP], a +; 3fa19 +GetRoamMonDVs: ; 3fa19 +; output: hl = RoamMonDVs + ld a, [TempEnemyMonSpecies] + ld b, a + ld a, [RoamMon1Species] + cp b + ld hl, RoamMon1DVs + ret z + ld a, [RoamMon2Species] + cp b + ld hl, RoamMon2DVs + ret z +; remnant of the GS function +; we know this will be $0000 because it's never initialized + ld hl, RoamMon3DVs ret -; 2a2ce - -INCBIN "baserom.gbc", $2a2ce, $2a5e9 - $2a2ce - - -WildMons1: ; 0x2a5e9 -INCLUDE "stats/wild/johto_grass.asm" - -WildMons2: ; 0x2b11d -INCLUDE "stats/wild/johto_water.asm" - -WildMons3: ; 0x2b274 -INCLUDE "stats/wild/kanto_grass.asm" - -WildMons4: ; 0x2b7f7 -INCLUDE "stats/wild/kanto_water.asm" +; 3fa31 -WildMons5: ; 0x2b8d0 -INCLUDE "stats/wild/swarm_grass.asm" -WildMons6: ; 0x2b92f -INCLUDE "stats/wild/swarm_water.asm" +INCBIN "baserom.gbc", $3fa31, $3fbff - $3fa31 -INCBIN "baserom.gbc", $2b930, $2ba1a - $2b930 +GetPlayerBackpic: ; 3fbff +; Load the player character's backpic (6x6) into VRAM starting from $9310. -ChrisBackpic: ; 2ba1a -INCBIN "gfx/misc/player.lz" -; 2bba1 +; Special exception for Dude. + ld b, BANK(DudeBackpic) + ld hl, DudeBackpic + ld a, [BattleType] + cp BATTLETYPE_TUTORIAL + jr z, .Decompress -db 0, 0, 0, 0, 0, 0, 0, 0, 0 ; filler +; What gender are we? + ld a, [$d45b] + bit 2, a + jr nz, .Chris + ld a, [PlayerGender] + bit 0, a + jr z, .Chris -DudeBackpic: ; 2bbaa -INCBIN "gfx/misc/dude.lz" -; 2bce1 +; It's a girl. + callba GetKrisBackpic + ret +.Chris +; It's a boy. + ld b, BANK(ChrisBackpic) + ld hl, ChrisBackpic -SECTION "bankB",DATA,BANK[$B] +.Decompress + ld de, $9310 + ld c, $31 + ld a, PREDEF_DECOMPRESS + call Predef + ret +; 3fc30 -INCBIN "baserom.gbc", $2C000, $2c1ef - $2C000 -TrainerClassNames: ; 2c1ef - db "LEADER@" - db "LEADER@" - db "LEADER@" - db "LEADER@" - db "LEADER@" - db "LEADER@" - db "LEADER@" - db "LEADER@" - db "RIVAL@" - db "#MON PROF.@" - db "ELITE FOUR@" - db $4a, " TRAINER@" - db "ELITE FOUR@" - db "ELITE FOUR@" - db "ELITE FOUR@" - db "CHAMPION@" - db "LEADER@" - db "LEADER@" - db "LEADER@" - db "SCIENTIST@" - db "LEADER@" - db "YOUNGSTER@" - db "SCHOOLBOY@" - db "BIRD KEEPER@" - db "LASS@" - db "LEADER@" - db "COOLTRAINER@" - db "COOLTRAINER@" - db "BEAUTY@" - db "#MANIAC@" - db "ROCKET@" - db "GENTLEMAN@" - db "SKIER@" - db "TEACHER@" - db "LEADER@" - db "BUG CATCHER@" - db "FISHER@" - db "SWIMMER♂@" - db "SWIMMER♀@" - db "SAILOR@" - db "SUPER NERD@" - db "RIVAL@" - db "GUITARIST@" - db "HIKER@" - db "BIKER@" - db "LEADER@" - db "BURGLAR@" - db "FIREBREATHER@" - db "JUGGLER@" - db "BLACKBELT@" - db "ROCKET@" - db "PSYCHIC@" - db "PICNICKER@" - db "CAMPER@" - db "ROCKET@" - db "SAGE@" - db "MEDIUM@" - db "BOARDER@" - db "#FAN@" - db "KIMONO GIRL@" - db "TWINS@" - db "#FAN@" - db $4a, " TRAINER@" - db "LEADER@" - db "OFFICER@" - db "ROCKET@" - db "MYSTICALMAN@" +INCBIN "baserom.gbc", $3fc30, $3fc8b - $3fc30 -INCBIN "baserom.gbc", $2c41a, $2ee6c - $2c41a +BattleStartMessage ; 3fc8b + ld a, [IsInBattle] + dec a + jr z, .asm_3fcaa + ld de, SFX_SHINE + call StartSFX + call WaitSFX -PlayBattleMusic: ; 2ee6c + ld c, 20 + call DelayFrames - push hl - push de - push bc + ld a, $e + ld hl, $5939 + rst FarCall - xor a - ld [MusicFade], a - ld de, MUSIC_NONE - call StartMusic - call DelayFrame - call MaxVolume + ld hl, WantsToBattleText + jr .asm_3fd0e - ld a, [BattleType] - cp BATTLETYPE_SUICUNE - ld de, MUSIC_SUICUNE_BATTLE - jp z, .done - cp BATTLETYPE_ROAMING - jp z, .done +.asm_3fcaa + call $5a79 + jr nc, .asm_3fcc2 - ; Are we fighting a trainer? - ld a, [OtherTrainerClass] - and a - jr nz, .trainermusic + xor a + ld [$cfca], a + ld a, 1 + ld [hBattleTurn], a + ld a, 1 + ld [$c689], a + ld de, $0101 + call $6e17 - ld a, BANK(RegionCheck) - ld hl, RegionCheck +.asm_3fcc2 + ld a, $f + ld hl, CheckSleepingTreeMon rst FarCall - ld a, e - and a - jr nz, .kantowild + jr c, .asm_3fceb - ld de, MUSIC_JOHTO_WILD_BATTLE - ld a, [TimeOfDay] - cp NITE - jr nz, .done - ld de, MUSIC_JOHTO_WILD_BATTLE_NIGHT - jr .done + ld a, $13 + ld hl, $6a44 + rst FarCall + jr c, .asm_3fce0 -.kantowild - ld de, MUSIC_KANTO_WILD_BATTLE - jr .done + hlcoord 12, 0 + ld d, $0 + ld e, $1 + ld a, $47 + call Predef + jr .asm_3fceb -.trainermusic - ld de, MUSIC_CHAMPION_BATTLE - cp CHAMPION - jr z, .done - cp RED - jr z, .done +.asm_3fce0 + ld a, $0f + ld [CryTracks], a + ld a, [TempEnemyMonSpecies] + call $37b6 - ; really, they should have included admins and scientists here too... - ld de, MUSIC_ROCKET_BATTLE - cp GRUNTM - jr z, .done - cp GRUNTF - jr z, .done +.asm_3fceb + ld a, [BattleType] + cp BATTLETYPE_FISH + jr nz, .asm_3fcfd - ld de, MUSIC_KANTO_GYM_LEADER_BATTLE - ld a, BANK(IsKantoGymLeader) - ld hl, IsKantoGymLeader + ld a, $41 + ld hl, $6086 rst FarCall - jr c, .done - ld de, MUSIC_JOHTO_GYM_LEADER_BATTLE - ld a, BANK(IsJohtoGymLeader) - ld hl, IsJohtoGymLeader + ld hl, HookedPokemonAttackedText + jr .asm_3fd0e + +.asm_3fcfd + ld hl, PokemonFellFromTreeText + cp BATTLETYPE_TREE + jr z, .asm_3fd0e + ld hl, WildPokemonAppearedText2 + cp $b + jr z, .asm_3fd0e + ld hl, WildPokemonAppearedText + +.asm_3fd0e + push hl + ld a, $b + ld hl, $4000 rst FarCall - jr c, .done - ld de, MUSIC_RIVAL_BATTLE - ld a, [OtherTrainerClass] - cp RIVAL1 - jr z, .done - cp RIVAL2 - jr nz, .othertrainer + pop hl + call FarBattleTextBox - ld a, [OtherTrainerID] - cp 4 ; Rival in Indigo Plateau - jr c, .done - ld de, MUSIC_CHAMPION_BATTLE - jr .done + call $7830 -.othertrainer - ld a, [InLinkBattle] - and a - jr nz, .johtotrainer + ret nz - ld a, BANK(RegionCheck) - ld hl, RegionCheck + ld c, $2 + ld a, $13 + ld hl, $6a0a rst FarCall - ld a, e - and a - jr nz, .kantotrainer -.johtotrainer - ld de, MUSIC_JOHTO_TRAINER_BATTLE - jr .done + ret +; 3fd26 -.kantotrainer - ld de, MUSIC_KANTO_TRAINER_BATTLE -.done - call StartMusic + dw $0000 ; padding - pop bc - pop de - pop hl - ret -; 2ef18 +BattleCommandPointers: ; 3fd28 -ClearBattleRAM: ; 2ef18 - xor a - ld [$d0ec], a - ld [$d0ee], a +INCLUDE "battle/effect_command_pointers.asm" - ld hl, $d0d8 - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a - ld [$d0e4], a - ld [CriticalHit], a - ld [BattleMonSpecies], a - ld [$c664], a - ld [CurBattleMon], a - ld [$d232], a - ld [TimeOfDayPal], a - ld [PlayerTurnsTaken], a - ld [EnemyTurnsTaken], a - ld [EvolvableFlags], a - ld hl, PlayerHPPal - ld [hli], a - ld [hl], a +SECTION "bank10",DATA,BANK[$10] - ld hl, BattleMonDVs - ld [hli], a - ld [hl], a +Function40000: ; 40000 + ld a, [$ffd1] + ld l, a + ld a, [$ffd2] + ld h, a + push hl + ld a, [$ffcf] + push af + ld hl, Options + ld a, [hl] + push af + set 4, [hl] + ld a, [VramState] + push af + xor a + ld [VramState], a + ld a, [$ffaa] + push af + ld a, $1 + ld [$ffaa], a + xor a + ld [$ffde], a + call $4063 + call DelayFrame +.asm_40029 + call Functiona57 + ld a, [$cf63] + bit 7, a + jr nz, .asm_4003b + call $410b + call DelayFrame + jr .asm_40029 - ld hl, EnemyMonDVs - ld [hli], a - ld [hl], a +.asm_4003b + ld de, $0008 + call StartSFX + call WaitSFX + call ClearSprites + ld a, [$c7d4] + ld [$d959], a + pop af + ld [$ffaa], a + pop af + ld [VramState], a + pop af + ld [Options], a + pop af + ld [$ffcf], a + pop hl + ld a, l + ld [$ffd1], a + ld a, h + ld [$ffd2], a + ret +; 40063 -; Clear the entire BattleMons area - ld hl, EnemyMoveStruct - ld bc, $0139 +Function40063: ; 40063 + call WhiteBGMap + call ClearSprites + call ClearTileMap + call $54b7 + ld hl, PlayerSDefLevel + ld bc, $0115 xor a call ByteFill - - ld hl, $5867 - ld a, $f + xor a + ld [$cf63], a + ld [$cf64], a + ld [$cf65], a + ld [$cf66], a + call $40a2 + ld a, [$d959] + ld [$c7d4], a + call $4bdc + call $40b4 + call $40ed + ld a, $77 + ld hl, $6247 rst FarCall + call $5af7 + ret +; 400a2 - call Function1fbf - - ld hl, hBGMapAddress +Function400a2: ; 400a2 + ld a, [StatusFlags] + bit 1, a + jr nz, .asm_400ae xor a - ld [hli], a - ld [hl], $98 + ld [$c7dc], a ret -; 2ef6e +.asm_400ae + ld a, $1 + ld [$c7dc], a + ret +; 400b4 -FillBox: ; 2ef6e -; Fill $c2c6-aligned box width b height c -; with iterating tile starting from $ffad at hl. -; Predef $13 - - ld de, 20 - - ld a, [$c2c6] +Function400b4: ; 400b4 + ld hl, PlayerSDefLevel + ld a, [$c2d6] and a - jr nz, .left - - ld a, [$ffad] -.x1 - push bc - push hl - -.y1 - ld [hl], a - add hl, de + jr z, .asm_400ec + cp $fc + jr nc, .asm_400ec + ld b, a + ld a, [$c7d2] + cp $8 + jr c, .asm_400db + sub $7 + ld c, a +.asm_400cc + ld a, b + cp [hl] + jr z, .asm_400ec + inc hl + ld a, [$c7d0] inc a + ld [$c7d0], a dec c - jr nz, .y1 + jr nz, .asm_400cc - pop hl +.asm_400db + ld c, $7 +.asm_400dd + ld a, b + cp [hl] + jr z, .asm_400ec inc hl - pop bc - dec b - jr nz, .x1 - ret - -.left -; Right-aligned. - push bc - ld b, 0 + ld a, [$c7d1] + inc a + ld [$c7d1], a dec c - add hl, bc - pop bc + jr nz, .asm_400dd - ld a, [$ffad] -.x2 - push bc - push hl +.asm_400ec + ret +; 400ed -.y2 - ld [hl], a - add hl, de - inc a - dec c - jr nz, .y2 +Function400ed: ; 400ed + ld a, [MapGroup] + ld b, a + ld a, [MapNumber] + ld c, a + call GetWorldMapLocation + cp $0 + jr nz, .asm_40107 + ld a, [BackupMapGroup] + ld b, a + ld a, [BackupMapNumber] + ld c, a + call GetWorldMapLocation - pop hl - dec hl - pop bc - dec b - jr nz, .x2 +.asm_40107 + ld [$c7e4], a ret -; 2ef9f +; 4010b +Function4010b: ; 4010b + ld a, [$cf63] + ld hl, $4115 + call $5432 + jp [hl] +; 40115 +INCBIN "baserom.gbc", $40115, $40ad5 - $40115 -SECTION "bankC",DATA,BANK[$C] -Tileset15GFX: ; 0x30000 -INCBIN "gfx/tilesets/15.lz" -; 0x304d7 +Function40ad5: ; 40ad5 + push hl + ld a, $33 + ld [hli], a + ld d, $34 + call $4b06 + ld a, $35 + ld [hl], a + pop hl + ld de, $0014 + add hl, de +.asm_40ae6 + push hl + ld a, $36 + ld [hli], a + ld d, $7f + call $4b06 + ld a, $37 + ld [hl], a + pop hl + ld de, $0014 + add hl, de + dec b + jr nz, .asm_40ae6 + ld a, $38 + ld [hli], a + ld d, $39 + call $4b06 + ld a, $3a + ld [hl], a + ret +; 40b06 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 +Function40b06: ; 40b06 + ld e, c +.asm_40b07 + ld a, e + and a + ret z + ld a, d + ld [hli], a + dec e + jr .asm_40b07 +; 40b0f -Tileset15Meta: ; 0x304e0 -INCBIN "tilesets/15_metatiles.bin" -; 0x308e0 +INCBIN "baserom.gbc", $40b0f, $40bb1 - $40b0f -Tileset15Coll: ; 0x308e0 -INCBIN "tilesets/15_collision.bin" -; 0x309e0 -Tileset25GFX: ; 0x309e0 -INCBIN "gfx/tilesets/25.lz" -; 0x30e78 +Function40bb1: ; 40bb1 + ld a, [$c7d1] + ld hl, $c7d0 + add [hl] + ld e, a + ld d, $0 + ld hl, PlayerSDefLevel + add hl, de + ld a, [hl] + ld [$d265], a + ret +; 40bc4 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 +INCBIN "baserom.gbc", $40bc4, $40bd0 - $40bc4 -Tileset25Meta: ; 0x30e80 -INCBIN "tilesets/25_metatiles.bin" -; 0x31280 -Tileset25Coll: ; 0x31280 -INCBIN "tilesets/25_collision.bin" -; 0x31380 +Function40bd0: ; 40bd0 + push de + push hl + ld a, [$d265] + dec a + call CheckCaughtMon + pop hl + pop de + ret +; 40bdc -Tileset27GFX: ; 0x31380 -INCBIN "gfx/tilesets/27.lz" -; 0x318dc - db $00 - db $00 - db $00 - db $00 -Tileset27Meta: ; 0x318e0 -INCBIN "tilesets/27_metatiles.bin" -; 0x31ce0 +Function40bdc: ; 40bdc + ld hl, PlayerSDefLevel + ld bc, Start + xor a + call ByteFill + ld a, [$c7d4] + ld hl, $4bf0 + call $5432 + jp [hl] +; 40bf0 -Tileset27Coll: ; 0x31ce0 -INCBIN "tilesets/27_collision.bin" -; 0x31de0 +INCBIN "baserom.gbc", $40bf0, $40c65 - $40bf0 -Tileset28GFX: ; 0x31de0 -INCBIN "gfx/tilesets/28.lz" -; 0x321a6 +AlphabeticalPokedexOrder: ; 0x40c65 +INCLUDE "stats/pokedex/order_alpha.asm" - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 - db $00 +NewPokedexOrder: ; 0x40d60 +INCLUDE "stats/pokedex/order_new.asm" -Tileset28Meta: ; 0x321b0 -INCBIN "tilesets/28_metatiles.bin" -; 0x325b0 +Function40e5b: ; 40e5b + xor a + ld [hBGMapMode], a + ld hl, $c590 + ld bc, $0412 + call $4ad5 + ld a, [$c7d8] + ld hl, $4e7d + call $5432 + ld e, l + ld d, h + ld hl, $c5b9 + call PlaceString + ld a, $1 + ld [hBGMapMode], a + ret +; 40e7d -Tileset28Coll: ; 0x325b0 -INCBIN "tilesets/28_collision.bin" -; 0x326b0 +INCBIN "baserom.gbc", $40e7d, $41432 - $40e7d -Tileset30GFX: ; 0x326b0 -INCBIN "gfx/tilesets/30.lz" -; 0x329ed -INCBIN "baserom.gbc", $329ed, $333f0 - $329ed +Function41432: ; 41432 + ld e, a + ld d, $0 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ret +; 4143b +Function4143b: ; 4143b + call $4bb1 + call $4bd0 + jr z, .asm_4145b + ld a, [$def4] + ld [UnownLetter], a + ld a, [$d265] + ld [CurPartySpecies], a + call GetBaseData + ld de, VTiles2 + ld a, $3c + call Predef + ret -SECTION "bankD",DATA,BANK[$D] +.asm_4145b + ld a, $0 + call GetSRAMBank + ld a, $77 + ld hl, $60d7 + rst FarCall + ld hl, VTiles2 + ld de, $a000 + ld c, $31 + ld a, [hROMBank] + ld b, a + call Functionf82 + call CloseSRAM + ret +; 41478 -INCLUDE "battle/effect_commands.asm" +INCBIN "baserom.gbc", $41478, $414b7 - $41478 -SECTION "bankE",DATA,BANK[$E] +Function414b7: ; 414b7 + call DisableLCD + ld hl, VTiles2 + ld bc, $0310 + xor a + call ByteFill + call $54fb + call Functione5f + ld hl, $9600 + ld bc, $0200 + call $5504 + call $5a24 + jr nz, .asm_414e0 + ld a, $77 + ld hl, $5f1c + rst FarCall + jr .asm_414e9 -INCBIN "baserom.gbc", $38000, $38591 - $38000 +.asm_414e0 + ld hl, $550e + ld de, $9310 + call Decompress +.asm_414e9 + ld hl, $56b0 + ld de, VTiles0 + call Decompress + ld a, $6 + call $3cb4 + call EnableLCD + ret +; 414fb -AIScoring: ; 38591 -INCLUDE "battle/ai/scoring.asm" +Function414fb: ; 414fb + call $0e51 + ld hl, VTiles1 + ld bc, $0800 +.asm_41504 + ld a, [hl] + xor $ff + ld [hli], a + dec bc + ld a, b + or c + jr nz, .asm_41504 + ret +; 4150e +INCBIN "baserom.gbc", $4150e, $41a24 - $4150e -INCBIN "baserom.gbc", $3952d, $39939 - $3952d +Function41a24: ; 41a24 + ld a, [hCGB] + or a + ret nz + ld a, [hSGB] + dec a + ret +; 41a2c -Function39939: ; 39939 - ld a, [$cfc0] - bit 0, a - ld hl, $d26b - jp nz, $5984 - ld a, [OtherTrainerID] - ld b, a - ld a, [OtherTrainerClass] - ld c, a - ld a, c - cp $c - jr nz, .asm_3996d +Function41a2c: ; 41a2c ld a, $0 call GetSRAMBank - ld a, [$abfd] - and a + ld hl, $4000 + ld de, $a188 + ld bc, Function270 + ld a, $77 + call FarCopyBytes + ld hl, $a188 + ld bc, $01b0 + call $5504 + ld de, $a188 + ld hl, $9400 + ld bc, $101b + call Functioneba call CloseSRAM - jr z, .asm_3996d - ld a, $0 - call GetSRAMBank - ld hl, $abfe - call $5984 - jp CloseSRAM + ret +; 41a58 -.asm_3996d - dec c +INCBIN "baserom.gbc", $41a58, $41af7 - $41a58 + + +Function41af7: ; 41af7 + xor a + ld [hBGMapMode], a + ret +; 41afb + + +Moves: ; 0x41afb +INCLUDE "battle/moves/moves.asm" + +Function421d8: ; 421d8 + ld hl, EvolvableFlags + xor a + ld [hl], a + ld a, [CurPartyMon] + ld c, a + ld b, $1 + call $6577 + xor a + ld [$d268], a + dec a + ld [CurPartyMon], a + push hl push bc + push de + ld hl, PartyCount + push hl +.asm_421f5 + ld hl, CurPartyMon + inc [hl] + pop hl + inc hl + ld a, [hl] + cp $ff + jp z, $63ff + ld [MagikarpLength], a + push hl + ld a, [CurPartyMon] + ld c, a + ld hl, EvolvableFlags + ld b, $2 + call $6577 + ld a, c + and a + jp z, $61f5 + ld a, [MagikarpLength] + dec a ld b, $0 - ld hl, TrainerGroups + ld c, a + ld hl, EvosAttacksPointers add hl, bc add hl, bc ld a, [hli] ld h, [hl] ld l, a - pop bc -.asm_3997a - dec b - jr z, .asm_39984 -.asm_3997d + push hl + xor a + ld [MonType], a + ld a, $1f + call Predef + pop hl ld a, [hli] - cp $ff - jr nz, .asm_3997d - jr .asm_3997a + and a + jr z, .asm_421f5 + ld b, a + cp $3 + jr z, .asm_422ae + ld a, [InLinkBattle] + and a + jp nz, $63f9 + ld a, b + cp $2 + jp z, $62d5 + ld a, [$d1e9] + and a + jp nz, $63f9 + ld a, b + cp $1 + jp z, $62ee + cp $4 + jr z, .asm_42283 + ld a, [TempMonLevel] + cp [hl] + jp c, $63f8 + call $6461 + jp z, $63f8 + push hl + ld de, TempMonAtk + ld hl, TempMonDef + ld c, $2 + call StringCmp + ld a, $3 + jr z, .asm_4227a + ld a, $2 + jr c, .asm_4227a + ld a, $1 -.asm_39984 - ld de, StringBuffer1 - push de - ld bc, $000b - call CopyBytes - pop de - ret -; 39990 +.asm_4227a + pop hl + inc hl + cp [hl] + jp nz, $63f9 + inc hl + jr .asm_422fd -INCBIN "baserom.gbc", $39990, $39999 - $39990 +.asm_42283 + ld a, [TempMonHappiness] + cp $dc + jp c, $63f9 + call $6461 + jp z, $63f9 + ld a, [hli] + cp $1 + jr z, .asm_422fd + cp $2 + jr z, .asm_422a4 + ld a, [TimeOfDay] + cp $2 + jp nz, $63fa + jr .asm_422fd +.asm_422a4 + ld a, [TimeOfDay] + cp $2 + jp z, $63fa + jr .asm_422fd -TrainerGroups: ; 0x39999 -INCLUDE "trainers/trainer_pointers.asm" +.asm_422ae + ld a, [InLinkBattle] + and a + jp z, $63f9 + call $6461 + jp z, $63f9 + ld a, [hli] + ld b, a + inc a + jr z, .asm_422fd + ld a, [InLinkBattle] + cp $1 + jp z, $63fa + ld a, [TempMonItem] + cp b + jp nz, $63fa + xor a + ld [TempMonItem], a + jr .asm_422fd -INCLUDE "trainers/trainers.asm" + ld a, [hli] + ld b, a + ld a, [CurItem] + cp b + jp nz, $63fa + ld a, [$d1e9] + and a + jp z, $63fa + ld a, [InLinkBattle] + and a + jp nz, $63fa + jr .asm_422fd + + ld a, [hli] + ld b, a + ld a, [TempMonLevel] + cp b + jp c, $63fa + call $6461 + jp z, $63fa + +.asm_422fd + ld a, [TempMonLevel] + ld [CurPartyLevel], a + ld a, $1 + ld [$d268], a + push hl + ld a, [hl] + ld [Buffer2], a + ld a, [CurPartyMon] + ld hl, PartyMon1Nickname + call GetNick + call CopyName1 + ld hl, $6482 + call PrintText + ld c, $32 + call DelayFrames + xor a + ld [hBGMapMode], a + ld hl, TileMap + ld bc, $0c14 + call ClearBox + ld a, $1 + ld [hBGMapMode], a + call ClearSprites + ld a, $13 + ld hl, $65e1 + rst FarCall + push af + call ClearSprites + pop af + jp c, $6454 + ld hl, $6473 + call PrintText + pop hl + ld a, [hl] + ld [CurSpecies], a + ld [TempMonSpecies], a + ld [Buffer2], a + ld [$d265], a + call GetPokemonName + push hl + ld hl, $6478 + call PrintTextBoxText + ld a, $41 + ld hl, $6094 + rst FarCall + ld de, $0000 + call StartMusic + ld de, $0002 + call StartSFX + call WaitSFX + ld c, $28 + call DelayFrames + call ClearTileMap + call $6414 + call GetBaseData + ld hl, $d118 + ld de, TempMonMaxHP + ld b, $1 + ld a, $c + call Predef + ld a, [CurPartyMon] + ld hl, PartyMon1Species + ld bc, $0030 + call AddNTimes + ld e, l + ld d, h + ld bc, $0024 + add hl, bc + ld a, [hli] + ld b, a + ld c, [hl] + ld hl, $d133 + ld a, [hld] + sub c + ld c, a + ld a, [hl] + sbc b + ld b, a + ld hl, $d131 + ld a, [hl] + add c + ld [hld], a + ld a, [hl] + adc b + ld [hl], a + ld hl, TempMonSpecies + ld bc, $0030 + call CopyBytes + ld a, [CurSpecies] + ld [$d265], a + xor a + ld [MonType], a + call $6487 + ld a, [$d265] + dec a + call SetSeenAndCaughtMon + ld a, [$d265] + cp $c9 + jr nz, .asm_423ec + ld hl, TempMonDVs + ld a, $2d + call Predef + ld hl, $7a18 + ld a, $3e + rst FarCall +.asm_423ec + pop de + pop hl + ld a, [TempMonSpecies] + ld [hl], a + push hl + ld l, e + ld h, d + jp $61f5 +; 423f8 -SECTION "bankF",DATA,BANK[$F] +Function423f8: ; 423f8 + inc hl + inc hl + inc hl + jp $6230 +; 423fe -INCBIN "baserom.gbc", $3c000, $3cc83 - $3c000 +INCBIN "baserom.gbc", $423fe, $423ff - $423fe -GetEighthMaxHP: ; 3cc83 -; output: bc - call GetQuarterMaxHP -; assumes nothing can have 1024 or more hp -; halve result - srl c -; round up - ld a, c + +Function423ff: ; 423ff + pop de + pop bc + pop hl + ld a, [InLinkBattle] and a - jr nz, .end - inc c -.end + ret nz + ld a, [IsInBattle] + and a + ret nz + ld a, [$d268] + and a + call nz, $3d47 ret -; 3cc8e +; 42414 + +Function42414: ; 42414 + ld a, [CurSpecies] + push af + ld a, [BaseDexNo] + ld [$d265], a + call GetPokemonName + pop af + ld [CurSpecies], a + ld hl, StringBuffer1 + ld de, StringBuffer2 +.asm_4242b + ld a, [de] + inc de + cp [hl] + inc hl + ret nz + cp $50 + jr nz, .asm_4242b + ld a, [CurPartyMon] + ld bc, $000b + ld hl, PartyMon1Nickname + call AddNTimes + push hl + ld a, [CurSpecies] + ld [$d265], a + call GetPokemonName + ld hl, StringBuffer1 + pop de + ld bc, $000b + jp CopyBytes +; 42454 +Function42454: ; 42454 + ld hl, $647d + call PrintText + call ClearTileMap + pop hl + jp $61f5 +; 42461 -GetQuarterMaxHP: ; 3cc8e -; output: bc - call GetMaxHP +Function42461: ; 42461 + push hl + ld a, [CurPartyMon] + ld hl, PartyMon1Item + ld bc, $0030 + call AddNTimes + ld a, [hl] + cp $70 + pop hl + ret +; 42473 -; quarter result - srl b - rr c - srl b - rr c +INCBIN "baserom.gbc", $42473, $42487 - $42473 -; assumes nothing can have 1024 or more hp -; round up - ld a, c + +Function42487: ; 42487 + ld a, [$d265] + ld [CurPartySpecies], a + dec a + ld b, $0 + ld c, a + ld hl, EvosAttacksPointers + add hl, bc + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a +.asm_42499 + ld a, [hli] and a - jr nz, .end - inc c -.end + jr nz, .asm_42499 +.asm_4249d + ld a, [hli] + and a + jr z, .asm_424da + ld b, a + ld a, [CurPartyLevel] + cp b + ld a, [hli] + jr nz, .asm_4249d + push hl + ld d, a + ld hl, PartyMon1Move1 + ld a, [CurPartyMon] + ld bc, $0030 + call AddNTimes + ld b, $4 +.asm_424b9 + ld a, [hli] + cp d + jr z, .asm_424c2 + dec b + jr nz, .asm_424b9 + jr .asm_424c5 + +.asm_424c2 + pop hl + jr .asm_4249d + +.asm_424c5 + ld a, d + ld [$d262], a + ld [$d265], a + call GetMoveName + call CopyName1 + ld a, $0 + call Predef + pop hl + jr .asm_4249d + +.asm_424da + ld a, [CurPartySpecies] + ld [$d265], a ret -; 3cc9f +; 424e1 +INCBIN "baserom.gbc", $424e1, $42577 - $424e1 -GetHalfMaxHP: ; 3cc9f -; output: bc - call GetMaxHP -; halve reslut - srl b - rr c +Function42577: ; 42577 + push de + ld d, $0 + ld a, $3 + call Predef + pop de + ret +; 42581 -; floor = 1 +Function42581: ; 42581 + ld c, $0 +.asm_42583 + ld hl, EvosAttacksPointers + ld b, $0 + add hl, bc + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a +.asm_4258d + ld a, [hli] + and a + jr z, .asm_425a2 + cp $5 + jr nz, .asm_42596 + inc hl + +.asm_42596 + inc hl + ld a, [CurPartySpecies] + cp [hl] + jr z, .asm_425aa + inc hl + ld a, [hl] + and a + jr nz, .asm_4258d + +.asm_425a2 + inc c ld a, c - or b - jr nz, .end + cp $fb + jr c, .asm_42583 + and a + ret + +.asm_425aa inc c -.end + ld a, c + ld [CurPartySpecies], a + scf ret -; 3ccac +; 425b1 -GetMaxHP: ; 3ccac -; output: bc, MagikarpLength-b +EvosAttacksPointers: ; 0x425b1 +INCLUDE "stats/evos_attacks_pointers.asm" + +INCLUDE "stats/evos_attacks.asm" -; player - ld hl, BattleMonMaxHP -; whose turn? - ld a, [hBattleTurn] - and a - jr z, .gethp +SECTION "bank11",DATA,BANK[$11] -; enemy - ld hl, EnemyMonMaxHP +FruitTreeScript: ; 44000 + 3callasm BANK(GetCurTreeFruit), GetCurTreeFruit + loadfont + copybytetovar CurFruit + itemtotext $0, $0 + 2writetext FruitBearingTreeText + keeptextopen + 3callasm BANK(TryResetFruitTrees), TryResetFruitTrees + 3callasm BANK(CheckFruitTree), CheckFruitTree + iffalse .fruit + 2writetext NothingHereText + closetext + 2jump .end -.gethp - ld a, [hli] - ld [Buffer2], a - ld b, a +.fruit + 2writetext HeyItsFruitText + copybytetovar CurFruit + giveitem $ff, 1 + iffalse .packisfull + keeptextopen + 2writetext ObtainedFruitText + 3callasm BANK(PickedFruitTree), PickedFruitTree + specialsound + itemnotify + 2jump .end - ld a, [hl] - ld [MagikarpLength], a - ld c, a - ret -; 3ccc2 +.packisfull + keeptextopen + 2writetext FruitPackIsFullText + closetext +.end + loadmovesprites + end +; 44041 -INCBIN "baserom.gbc", $3ccc2, $3d123 - $3ccc2 +GetCurTreeFruit: ; 44041 + ld a, [CurFruitTree] + dec a + call GetFruitTreeItem + ld [CurFruit], a + ret +; 4404c +TryResetFruitTrees: ; 4404c + ld hl, $dc1e + bit 4, [hl] + ret nz + jp ResetFruitTrees +; 44055 -; These functions check if the current opponent is a gym leader or one of a -; few other special trainers. +CheckFruitTree: ; 44055 + ld b, 2 + call GetFruitTreeFlag + ld a, c + ld [ScriptVar], a + ret +; 4405f -; Note: KantoGymLeaders is a subset of JohtoGymLeaders. If you wish to -; differentiate between the two, call IsKantoGymLeader first. +PickedFruitTree: ; 4405f + ld a, $41 + ld hl, $609b + rst FarCall ; empty function -; The Lance and Red entries are unused for music checks; those trainers are -; accounted for elsewhere. + ld b, 1 + jp GetFruitTreeFlag +; 4406a -IsKantoGymLeader: ; 0x3d123 - ld hl, KantoGymLeaders - jr IsGymLeaderCommon +ResetFruitTrees: ; 4406a + xor a + ld hl, FruitTreeFlags + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld hl, $dc1e + set 4, [hl] + ret +; 44078 -IsJohtoGymLeader: ; 0x3d128 - ld hl, JohtoGymLeaders -IsGymLeaderCommon: +GetFruitTreeFlag: ; 44078 + push hl push de - ld a, [OtherTrainerClass] - ld de, $0001 - call IsInArray + ld a, [CurFruitTree] + dec a + ld e, a + ld d, 0 + ld hl, FruitTreeFlags + call BitTableFunc pop de + pop hl ret -; 0x3d137 - -JohtoGymLeaders: - db FALKNER - db WHITNEY - db BUGSY - db MORTY - db PRYCE - db JASMINE - db CHUCK - db CLAIR - db WILL - db BRUNO - db KAREN - db KOGA -; fallthrough -; these two entries are unused - db CHAMPION - db RED -; fallthrough -KantoGymLeaders: - db BROCK - db MISTY - db LT_SURGE - db ERIKA - db JANINE - db SABRINA - db BLAINE - db BLUE - db $ff - +; 4408a -INCBIN "baserom.gbc", $3d14e, $3d38e - $3d14e +GetFruitTreeItem: ; 4408a + push hl + push de + ld e, a + ld d, 0 + ld hl, FruitTreeItems + add hl, de + ld a, [hl] + pop de + pop hl + ret +; 44097 +FruitTreeItems: ; 44097 + db BERRY + db BERRY + db BERRY + db BERRY + db PSNCUREBERRY + db PSNCUREBERRY + db BITTER_BERRY + db BITTER_BERRY + db PRZCUREBERRY + db PRZCUREBERRY + db MYSTERYBERRY + db MYSTERYBERRY + db ICE_BERRY + db ICE_BERRY + db MINT_BERRY + db BURNT_BERRY + db RED_APRICORN + db BLU_APRICORN + db BLK_APRICORN + db WHT_APRICORN + db PNK_APRICORN + db GRN_APRICORN + db YLW_APRICORN + db BERRY + db PSNCUREBERRY + db BITTER_BERRY + db PRZCUREBERRY + db ICE_BERRY + db MINT_BERRY + db BURNT_BERRY +; 440b5 -LostBattle: ; 3d38e - ld a, 1 - ld [BattleEnded], a +FruitBearingTreeText: ; 440b5 + text_jump _FruitBearingTreeText, BANK(_FruitBearingTreeText) + db "@" +; 440ba - ld a, [$cfc0] - bit 0, a - jr nz, .asm_3d3bd +HeyItsFruitText: ; 440ba + text_jump _HeyItsFruitText, BANK(_HeyItsFruitText) + db "@" +; 440bf - ld a, [BattleType] - cp BATTLETYPE_CANLOSE - jr nz, .asm_3d3e3 +ObtainedFruitText: ; 440bf + text_jump _ObtainedFruitText, BANK(_ObtainedFruitText) + db "@" +; 440c4 -; Remove the enemy from the screen. - hlcoord 0, 0 - ld bc, $0815 - call ClearBox - call $6bd8 +FruitPackIsFullText: ; 440c4 + text_jump _FruitPackIsFullText, BANK(_FruitPackIsFullText) + db "@" +; 440c9 - ld c, 40 - call DelayFrames +NothingHereText: ; 440c9 + text_jump _NothingHereText, BANK(_NothingHereText) + db "@" +; 440ce - ld a, [$c2cc] - bit 0, a - jr nz, .asm_3d3bc - call $3718 -.asm_3d3bc - ret -.asm_3d3bd -; Remove the enemy from the screen. - hlcoord 0, 0 - ld bc, $0815 - call ClearBox - call $6bd8 - ld c, 40 - call DelayFrames +AIChooseMove: ; 440ce +; Score each move in EnemyMonMoves starting from Buffer1. Lower is better. +; Pick the move with the lowest score. - call $6dd1 - ld c, 2 - ld a, $47 - ld hl, $4000 - rst FarCall - call $0a80 - call ClearTileMap - call WhiteBGMap - ret +; Wildmons attack at random. + ld a, [IsInBattle] + dec a + ret z -.asm_3d3e3 ld a, [InLinkBattle] and a - jr nz, .LostLinkBattle - -; Greyscale - ld b, 0 - call GetSGBLayout - call Function32f9 - jr .end - -.LostLinkBattle - call UpdateEnemyMonInParty - call $4f35 - jr nz, .asm_3d40a - ld hl, TiedAgainstText - ld a, [$d0ee] - and $c0 - add 2 - ld [$d0ee], a - jr .asm_3d412 - -.asm_3d40a - ld hl, LostAgainstText - call $52f1 - jr z, .asm_3d417 + ret nz -.asm_3d412 - call FarBattleTextBox +; No use picking a move if there's no choice. + ld a, $f + ld hl, $68d1 + rst FarCall ; CheckLockedEnemyMove + ret nz -.end - scf - ret -.asm_3d417 -; Remove the enemy from the screen. - hlcoord 0, 0 - ld bc, $0815 - call ClearBox - call $6bd8 +; The default score is 20. Unusable moves are given a score of 80. + ld a, 20 + ld hl, Buffer1 + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a - ld c, 40 - call DelayFrames +; Don't pick disabled moves. + ld a, [EnemyDisabledMove] + and a + jr z, .CheckPP - ld c, $3 - ld a, $13 - ld hl, $6a0a - rst FarCall - scf - ret -; 3d432 + ld hl, EnemyMonMove1 + ld c, 0 +.CheckDisabledMove + cp [hl] + jr z, .ScoreDisabledMove + inc c + inc hl + jr .CheckDisabledMove +.ScoreDisabledMove + ld hl, Buffer1 + ld b, 0 + add hl, bc + ld [hl], 80 +; Don't pick moves with 0 PP. +.CheckPP + ld hl, Buffer1 - 1 + ld de, EnemyMonPP + ld b, 0 +.CheckMovePP + inc b + ld a, b + cp EnemyMonMovesEnd - EnemyMonMoves + 1 + jr z, .ApplyLayers + inc hl + ld a, [de] + inc de + and $3f + jr nz, .CheckMovePP + ld [hl], 80 + jr .CheckMovePP -INCBIN "baserom.gbc", $3d432, $3ddc2 - $3d432 - ld hl, RecoveredUsingText - jp FarBattleTextBox -; 0x3ddc8 +; Apply AI scoring layers depending on the trainer class. +.ApplyLayers + ld hl, $559f ; TrainerAI + 3 ; e:559c-5771 -INCBIN "baserom.gbc", $3ddc8, $3e8eb - $3ddc8 + ld a, [$cfc0] + bit 0, a + jr nz, .asm_4412f -LoadEnemyMon: ; 3e8eb -; Initialize enemy monster parameters -; To do this we pull the species from TempEnemyMonSpecies + ld a, [TrainerClass] + dec a + ld bc, 7 ; Trainer2AI - Trainer1AI + call AddNTimes -; Notes: -; FarBattleRNG is used to ensure sync between Game Boys +.asm_4412f + ld bc, (CHECK_FLAG << 8) | 0 + push bc + push hl -; Clear the whole EnemyMon struct - xor a - ld hl, EnemyMonSpecies - ld bc, EnemyMonEnd - EnemyMon - call ByteFill - -; We don't need to be here if we're in a link battle - ld a, [InLinkBattle] - and a - jp nz, $5abd - - ld a, [$cfc0] ; ???? - bit 0, a - jp nz, $5abd - -; Make sure everything knows what species we're working with - ld a, [TempEnemyMonSpecies] - ld [EnemyMonSpecies], a - ld [CurSpecies], a - ld [CurPartySpecies], a - -; Grab the BaseData for this species - call GetBaseData - +.CheckLayer + pop hl + pop bc -; Let's get the item: + ld a, c + cp 16 ; up to 16 scoring layers + jr z, .asm_4415e -; Is the item predetermined? - ld a, [IsInBattle] - dec a - jr z, .WildItem - -; If we're in a trainer battle, the item is in the party struct - ld a, [CurPartyMon] - ld hl, OTPartyMon1Item - call GetPartyLocation ; bc = PartyMon[CurPartyMon] - PartyMons - ld a, [hl] - jr .UpdateItem - - -.WildItem -; In a wild battle, we pull from the item slots in BaseData + push bc + ld d, $e ; BANK(TrainerAI) + ld a, PREDEF_FLAG + call Predef + ld d, c + pop bc -; Force Item1 -; Used for Ho-Oh, Lugia and Snorlax encounters - ld a, [BattleType] - cp BATTLETYPE_FORCEITEM - ld a, [BaseItems] - jr z, .UpdateItem - -; Failing that, it's all up to chance -; Effective chances: -; 75% None -; 23% Item1 -; 2% Item2 + inc c + push bc + push hl -; 25% chance of getting an item - call FarBattleRNG - cp a, $c0 - ld a, NO_ITEM - jr c, .UpdateItem - -; From there, an 8% chance for Item2 - call FarBattleRNG - cp a, $14 ; 8% of 25% = 2% Item2 - ld a, [BaseItems] - jr nc, .UpdateItem - ld a, [BaseItems+1] - - -.UpdateItem - ld [EnemyMonItem], a - - -; Initialize DVs - -; If we're in a trainer battle, DVs are predetermined - ld a, [IsInBattle] + ld a, d and a - jr z, .InitDVs - -; ???? - ld a, [EnemySubStatus5] - bit 3, a - jr z, .InitDVs - -; Unknown - ld hl, $c6f2 - ld de, EnemyMonDVs - ld a, [hli] - ld [de], a - inc de - ld a, [hl] - ld [de], a - jp .Happiness - - -.InitDVs - -; Trainer DVs - -; All trainers have preset DVs, determined by class -; See GetTrainerDVs for more on that - callba GetTrainerDVs -; These are the DVs we'll use if we're actually in a trainer battle - ld a, [IsInBattle] - dec a - jr nz, .UpdateDVs - - -; Wild DVs -; Here's where the fun starts + jr z, .CheckLayer -; Roaming monsters (Entei, Raikou) work differently -; They have their own structs, which are shorter than normal - ld a, [BattleType] - cp a, BATTLETYPE_ROAMING - jr nz, .NotRoaming - -; Grab HP - call GetRoamMonHP - ld a, [hl] -; Check if the HP has been initialized + ld hl, AIScoringPointers + dec c + ld b, 0 + add hl, bc + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, BANK(AIScoring) + call FarJpHl + + jr .CheckLayer + +.asm_4415e + ld hl, Buffer1 + ld de, EnemyMonMoves + ld c, EnemyMonMovesEnd - EnemyMonMoves +.asm_44166 + ld a, [de] + inc de and a -; We'll do something with the result in a minute - push af - -; Grab DVs - call GetRoamMonDVs - inc hl - ld a, [hld] - ld c, a - ld b, [hl] + jr z, .asm_4415e + + dec [hl] + jr z, .asm_44174 -; Get back the result of our check - pop af -; If the RoamMon struct has already been initialized, we're done - jr nz, .UpdateDVs - -; If it hasn't, we need to initialize the DVs -; (HP is initialized at the end of the battle) - call GetRoamMonDVs inc hl - call FarBattleRNG - ld [hld], a - ld c, a - call FarBattleRNG - ld [hl], a - ld b, a -; We're done with DVs - jr .UpdateDVs + dec c + jr z, .asm_4415e - -.NotRoaming -; Register a contains BattleType + jr .asm_44166 -; Forced shiny battle type -; Used by Red Gyarados at Lake of Rage - cp a, BATTLETYPE_SHINY - jr nz, .GenerateDVs +.asm_44174 + ld a, c +.asm_44175 + inc [hl] + dec hl + inc a + cp EnemyMonMovesEnd - EnemyMonMoves + 1 + jr nz, .asm_44175 - ld b, ATKDEFDV_SHINY ; $ea - ld c, SPDSPCDV_SHINY ; $aa - jr .UpdateDVs - -.GenerateDVs -; Generate new random DVs - call FarBattleRNG - ld b, a - call FarBattleRNG - ld c, a - -.UpdateDVs -; Input DVs in register bc - ld hl, EnemyMonDVs - ld a, b - ld [hli], a - ld [hl], c - - -; We've still got more to do if we're dealing with a wild monster - ld a, [IsInBattle] - dec a - jr nz, .Happiness - - -; Species-specfic: - - -; Unown - ld a, [TempEnemyMonSpecies] - cp a, UNOWN - jr nz, .Magikarp - -; Get letter based on DVs - ld hl, EnemyMonDVs - ld a, PREDEF_GETUNOWNLETTER - call Predef -; Can't use any letters that haven't been unlocked -; If combined with forced shiny battletype, causes an infinite loop - call CheckUnownLetter - jr c, .GenerateDVs ; try again - - -.Magikarp -; Skimming this part recommended - - ld a, [TempEnemyMonSpecies] - cp a, MAGIKARP - jr nz, .Happiness - -; Get Magikarp's length - ld de, EnemyMonDVs - ld bc, PlayerID - callab CalcMagikarpLength - -; We're clear if the length is < 1536 - ld a, [MagikarpLength] - cp a, $06 ; $600 = 1536 - jr nz, .CheckMagikarpArea - -; 5% chance of skipping size checks - call RNG - cp a, $0c ; / $100 - jr c, .CheckMagikarpArea -; Try again if > 1614 - ld a, [MagikarpLength + 1] - cp a, $50 - jr nc, .GenerateDVs - -; 20% chance of skipping this check - call RNG - cp a, $32 ; / $100 - jr c, .CheckMagikarpArea -; Try again if > 1598 - ld a, [MagikarpLength + 1] - cp a, $40 - jr nc, .GenerateDVs - -.CheckMagikarpArea -; The z checks are supposed to be nz -; Instead, all maps in GROUP_LAKE_OF_RAGE (mahogany area) -; and routes 20 and 44 are treated as Lake of Rage - -; This also means Lake of Rage Magikarp can be smaller than ones -; caught elsewhere rather than the other way around - -; Intended behavior enforces a minimum size at Lake of Rage -; The real behavior prevents size flooring in the Lake of Rage area - ld a, [MapGroup] - cp a, GROUP_LAKE_OF_RAGE - jr z, .Happiness - ld a, [MapNumber] - cp a, MAP_LAKE_OF_RAGE - jr z, .Happiness -; 40% chance of not flooring - call RNG - cp a, $64 ; / $100 - jr c, .Happiness -; Floor at length 1024 - ld a, [MagikarpLength] - cp a, 1024 >> 8 - jr c, .GenerateDVs ; try again - - -; Finally done with DVs - -.Happiness -; Set happiness - ld a, BASE_HAPPINESS - ld [EnemyMonHappiness], a -; Set level - ld a, [CurPartyLevel] - ld [EnemyMonLevel], a -; Fill stats - ld de, EnemyMonMaxHP - ld b, $00 - ld hl, $d201 ; ? - ld a, PREDEF_FILLSTATS - call Predef - -; If we're in a trainer battle, -; get the rest of the parameters from the party struct - ld a, [IsInBattle] - cp a, TRAINER_BATTLE - jr z, .OpponentParty - -; If we're in a wild battle, check wild-specific stuff + ld hl, Buffer1 + ld de, EnemyMonMoves + ld c, EnemyMonMovesEnd - EnemyMonMoves +.asm_44184 + ld a, [de] and a - jr z, .TreeMon - -; ???? - ld a, [EnemySubStatus5] - bit 3, a - jp nz, .Moves - -.TreeMon -; If we're headbutting trees, some monsters enter battle asleep - call CheckSleepingTreeMon - ld a, 7 ; Asleep for 7 turns - jr c, .UpdateStatus -; Otherwise, no status - xor a - -.UpdateStatus - ld hl, EnemyMonStatus - ld [hli], a - -; Unused byte + jr nz, .asm_44189 + ld [hl], a +.asm_44189 + ld a, [hl] + dec a + jr z, .asm_44191 xor a ld [hli], a - -; Full HP... - ld a, [EnemyMonMaxHPHi] + jr .asm_44193 +.asm_44191 + ld a, [de] ld [hli], a - ld a, [EnemyMonMaxHPLo] - ld [hl], a - -; ...unless it's a RoamMon - ld a, [BattleType] - cp a, BATTLETYPE_ROAMING - jr nz, .Moves - -; Grab HP - call GetRoamMonHP +.asm_44193 + inc de + dec c + jr nz, .asm_44184 + +.asm_44197 + ld hl, Buffer1 + call RNG + and 3 + ld c, a + ld b, 0 + add hl, bc ld a, [hl] -; Check if it's been initialized again and a - jr z, .InitRoamHP -; Update from the struct if it has - ld a, [hl] - ld [EnemyMonHPLo], a - jr .Moves - -.InitRoamHP -; HP only uses the lo byte in the RoamMon struct since -; Raikou/Entei/Suicune will have < 256 hp at level 40 - ld a, [EnemyMonHPLo] - ld [hl], a - jr .Moves - - -.OpponentParty -; Get HP from the party struct - ld hl, (PartyMon1CurHP + 1) - PartyMon1 + OTPartyMon1 - ld a, [CurPartyMon] - call GetPartyLocation - ld a, [hld] - ld [EnemyMonHPLo], a - ld a, [hld] - ld [EnemyMonHPHi], a - -; Make sure everything knows which monster the opponent is using - ld a, [CurPartyMon] - ld [CurOTMon], a - -; Get status from the party struct - dec hl - ld a, [hl] ; OTPartyMonStatus - ld [EnemyMonStatus], a - - -.Moves -; ???? - ld hl, BaseType1 - ld de, EnemyMonType1 + jr z, .asm_44197 + + ld [CurEnemyMove], a + ld a, c + ld [CurEnemyMoveNum], a + ret +; 441af + + +AIScoringPointers: ; 441af + dw AIScoring_RedStatus + dw AIScoring_RedStatMods + dw AIScoring_RedSuperEffective + dw AIScoring_Offensive + dw AIScoring_Smart + dw AIScoring_Opportunist + dw AIScoring_Aggressive + dw AIScoring_Cautious + dw AIScoring_StatusImmunity + dw AIScoring_Risky + dw AIScoring_None + dw AIScoring_None + dw AIScoring_None + dw AIScoring_None + dw AIScoring_None + dw AIScoring_None +; 441cf + + +Function441cf: ; 441cf + ld hl, $41fc + ld b, $19 +.asm_441d4 + ld a, [hli] + cp $fe + jr nz, .asm_441dd + ld hl, $41fc + ld a, [hli] + +.asm_441dd + ld [$c7db], a + ld a, [hli] + ld c, a + push bc + push hl + call $4207 + pop hl + pop bc + call DelayFrames + dec b + jr nz, .asm_441d4 + xor a + ld [$c7db], a + call $4207 + ld c, $20 + call DelayFrames + ret +; 441fc + +INCBIN "baserom.gbc", $441fc, $44207 - $441fc + + +Function44207: ; 44207 + ld a, [$c7db] + ld hl, $4228 + ld de, Sprites +.asm_44210 ld a, [hli] + cp $ff + ret z ld [de], a inc de - ld a, [hl] + ld a, [hli] ld [de], a - -; Get moves - ld de, EnemyMonMoves -; Are we in a trainer battle? - ld a, [IsInBattle] - cp a, TRAINER_BATTLE - jr nz, .WildMoves -; Then copy moves from the party struct - ld hl, OTPartyMon1Moves + inc de + ld a, [$c7db] + ld b, a + add a + add b + add [hl] + inc hl + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + jr .asm_44210 +; 44228 + +INCBIN "baserom.gbc", $44228, $44378 - $44228 + + +PokedexDataPointerTable: ; 0x44378 +INCLUDE "stats/pokedex/entry_pointers.asm" + + +Function4456e: ; 4456e + ld a, $1 + call GetPartyParamLocation + ld d, [hl] + ld a, $2e + ld hl, $5e76 + rst FarCall + jr nc, .asm_445be + call $4648 + cp $a + jr nc, .asm_445be + ld bc, $002f + ld hl, $a835 + call AddNTimes + ld d, h + ld e, l ld a, [CurPartyMon] - call GetPartyLocation - ld bc, NUM_MOVES + ld bc, $002f + ld hl, $a600 + call AddNTimes + push hl + ld a, $0 + call GetSRAMBank + ld bc, $002f call CopyBytes - jr .PP - -.WildMoves -; Clear EnemyMonMoves + pop hl xor a - ld h, d - ld l, e - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a -; Make sure the predef knows this isn't a partymon - ld [MagikarpLength], a -; Fill moves based on level - ld a, PREDEF_FILLMOVES - call Predef - -.PP -; Trainer battle? - ld a, [IsInBattle] - cp a, TRAINER_BATTLE - jr z, .TrainerPP - -; Fill wild PP - ld hl, EnemyMonMoves - ld de, EnemyMonPP - ld a, PREDEF_FILLPP - call Predef - jr .Finish - -.TrainerPP -; Copy PP from the party struct - ld hl, OTPartyMon1PP + ld bc, $002f + call ByteFill + ld a, $1 + call GetPartyParamLocation + ld [hl], $0 + ld hl, $a834 + inc [hl] + call CloseSRAM + xor a + ret + +.asm_445be + scf + ret +; 445c0 + +INCBIN "baserom.gbc", $445c0, $44648 - $445c0 + + +Function44648: ; 44648 + ld a, $0 + call GetSRAMBank + ld a, [$a834] + ld c, a + jp CloseSRAM +; 44654 + +Function44654: ; 44654 + push bc + push de + ld a, $14 + ld hl, $4000 + rst FarCall + ld a, $2 + jr c, .asm_446c6 ld a, [CurPartyMon] - call GetPartyLocation - ld de, EnemyMonPP - ld bc, NUM_MOVES + ld hl, PartyMon1Item + ld bc, $0030 + call AddNTimes + ld d, [hl] + ld a, $2e + ld hl, $5e76 + rst FarCall + ld a, $3 + jr nc, .asm_446c6 + ld a, $0 + call GetSRAMBank + ld a, [CurPartyMon] + ld hl, $a600 + ld bc, $002f + call AddNTimes + ld d, h + ld e, l + pop hl + pop bc + ld a, $20 + ld [$d265], a +.asm_44691 + ld a, [de] + ld c, a + ld a, b + call GetFarByte + cp $50 + jr z, .asm_446ab + cp c + ld a, $0 + jr nz, .asm_446c1 + inc hl + inc de + ld a, [$d265] + dec a + ld [$d265], a + jr nz, .asm_44691 + +.asm_446ab + ld a, $3 + ld hl, $6538 + rst FarCall + ld a, $4 + jr c, .asm_446c1 + xor a + ld [$d10b], a + ld a, $3 + ld hl, $6039 + rst FarCall + ld a, $1 + +.asm_446c1 + call CloseSRAM + jr .asm_446c8 + +.asm_446c6 + pop de + pop bc + +.asm_446c8 + ld [ScriptVar], a + ret +; 446cc + +Function446cc: ; 446cc + ld a, [PartyCount] + dec a + push af + push bc + ld hl, PartyMon1Item + ld bc, $0030 + call AddNTimes + pop bc + ld [hl], b + pop af + push bc + push af + ld hl, $a600 + ld bc, $002f + call AddNTimes + ld d, h + ld e, l + ld hl, DefaultFlypoint + ld bc, $0021 + ld a, $0 + call GetSRAMBank call CopyBytes - -.Finish -; Only the first five base stats are copied... - ld hl, BaseStats - ld de, EnemyMonBaseStats - ld b, BaseSpecialDefense - BaseStats -.loop + pop af + push af + ld hl, PartyMon1OT + ld bc, $000b + call AddNTimes + ld bc, $000a + call CopyBytes + pop af + ld hl, PartyMon1ID + ld bc, $0030 + call AddNTimes ld a, [hli] ld [de], a inc de - dec b - jr nz, .loop - - ld a, [BaseCatchRate] + ld a, [hl] ld [de], a inc de - - ld a, [BaseExp] + ld a, [CurPartySpecies] ld [de], a + inc de + pop bc + ld a, b + ld [de], a + jp CloseSRAM +; 44725 - ld a, [TempEnemyMonSpecies] - ld [$d265], a - - call GetPokemonName - -; Did we catch it? - ld a, [IsInBattle] - and a - ret z - -; Update enemy nick - ld hl, StringBuffer1 - ld de, EnemyMonNick - ld bc, PKMN_NAME_LENGTH +Function44725: ; 44725 + ld a, $0 + call GetSRAMBank + ld hl, $a600 + ld de, $a71a + ld bc, $011a call CopyBytes - -; Caught this mon - ld a, [TempEnemyMonSpecies] - dec a - ld c, a - ld b, 1 ; set - ld hl, PokedexCaught - ld a, PREDEF_FLAG - call Predef - - ld hl, EnemyMonStats - ld de, EnemyStats - ld bc, EnemyMonStatsEnd - EnemyMonStats + ld hl, $a834 + ld de, $aa0b + ld bc, $01d7 call CopyBytes + jp CloseSRAM +; 44745 - ret -; 3eb38 +INCBIN "baserom.gbc", $44745, $447a0 - $44745 + +_KrisMailBoxMenu: ; 0x447a0 + call InitMail + jr z, .nomail + call $1d6e + call Function44806 + jp Function1c17 +.nomail + ld hl, .EmptyMailboxText + jp $1d67 +; 0x447b4 -CheckSleepingTreeMon: ; 3eb38 -; Return carry if species is in the list -; for the current time of day +.EmptyMailboxText ; 0x447b4 + TX_FAR _EmptyMailboxText + db "@" -; Don't do anything if this isn't a tree encounter - ld a, [BattleType] - cp a, BATTLETYPE_TREE - jr nz, .NotSleeping - -; Get list for the time of day - ld hl, .Morn - ld a, [TimeOfDay] - cp a, DAY - jr c, .Check - ld hl, .Day - jr z, .Check - ld hl, .Nite - -.Check - ld a, [TempEnemyMonSpecies] - ld de, 1 ; length of species id - call IsInArray -; If it's a match, the opponent is asleep - ret c - -.NotSleeping +InitMail: ; 0x447b9 +; initialize $d0f2 and beyond with incrementing values, one per mail +; set z if no mail + ld a, $0 + call GetSRAMBank + ld a, [$a834] + call CloseSRAM + ld hl, $d0f2 + ld [hli], a and a - ret -.Nite - db CATERPIE - db METAPOD - db BUTTERFREE - db WEEDLE - db KAKUNA - db BEEDRILL - db SPEAROW - db EKANS - db EXEGGCUTE - db LEDYBA - db AIPOM - db $ff ; end - -.Day - db VENONAT - db HOOTHOOT - db NOCTOWL - db SPINARAK - db HERACROSS - db $ff ; end + jr z, .done ; if no mail, we're done -.Morn - db VENONAT - db HOOTHOOT - db NOCTOWL - db SPINARAK - db HERACROSS - db $ff ; end -; 3eb75 + ; load values in memory with incrementing values starting at $d0f2 + ld b, a + ld a, $1 +.loop + ld [hli], a + inc a + dec b + jr nz, .loop +.done + ld [hl], $ff ; terminate + ld a, [$d0f2] + and a + ret +; 0x447da -CheckUnownLetter: ; 3eb75 -; Return carry if the Unown letter hasn't been unlocked yet - - ld a, [UnlockedUnowns] - ld c, a - ld de, 0 - -.loop - -; Don't check this set unless it's been unlocked - srl c - jr nc, .next - -; Is our letter in the set? - ld hl, .LetterSets - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - +Function447da: ; 0x447da + dec a + ld hl, $a856 + ld bc, $002f + call AddNTimes + ld a, $0 + call GetSRAMBank + ld de, StringBuffer2 push de - ld a, [UnownLetter] - ld de, 1 - push bc - call IsInArray - pop bc + ld bc, $a + call CopyBytes + ld a, $50 + ld [de], a + call CloseSRAM pop de - - jr c, .match - -.next -; Make sure we haven't gone past the end of the table - inc e - inc e - ld a, e - cp a, .Set1 - .LetterSets - jr c, .loop - -; Hasn't been unlocked, or the letter is invalid - scf - ret - -.match -; Valid letter - and a ret - -.LetterSets - dw .Set1 - dw .Set2 - dw .Set3 - dw .Set4 - -.Set1 - ; A B C D E F G H I J K - db 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, $ff -.Set2 - ; L M N O P Q R - db 12, 13, 14, 15, 16, 17, 18, $ff -.Set3 - ; S T U V W - db 19, 20, 21, 22, 23, $ff -.Set4 - ; X Y Z - db 24, 25, 26, $ff - -; 3ebc7 - - -INCBIN "baserom.gbc", $3ebc7, $3ed4a - $3ebc7 - - -BadgeStatBoosts: ; 3ed4a -; Raise BattleMon stats depending on which badges have been obtained. - -; Every other badge boosts a stat, starting from the first. - -; ZephyrBadge: Attack -; PlainBadge: Speed -; MineralBadge: Defense -; GlacierBadge: Special Attack -; RisingBadge: Special Defense - -; The boosted stats are in order, except PlainBadge and MineralBadge's boosts are swapped. - - ld a, [$cfc0] - and a - ret nz +; 0x447fb - ld a, [JohtoBadges] +Function447fb: ; 0x447fb + push de + ld a, [MenuSelection] + call Function447da + pop hl + jp PlaceString +; 0x44806 -; Swap badges 3 (PlainBadge) and 5 (MineralBadge). - ld d, a - and %00000100 - add a - add a - ld b, a - ld a, d - and %00010000 - rrca - rrca - ld c, a - ld a, d - and %11101011 - or b - or c - ld b, a +Function44806: ; 0x44806 + xor a + ld [$d0f0], a + ld a, $1 + ld [$d0f1], a +.asm_4480f + call InitMail + ld hl, MenuData4494c + call Function1d3c + xor a + ld [hBGMapMode], a + call $352f + call $1ad2 + ld a, [$d0f1] + ld [$cf88], a + ld a, [$d0f0] + ld [$d0e4], a + call $350c + ld a, [$d0e4] + ld [$d0f0], a + ld a, [$cfa9] + ld [$d0f1], a + ld a, [$cf73] + cp $2 + jr z, .asm_44848 + call Function4484a + jr .asm_4480f - ld hl, BattleMonAtk - ld c, 4 -.CheckBadge - ld a, b - srl b - call c, BoostStat - inc hl - inc hl -; Check every other badge. - srl b - dec c - jr nz, .CheckBadge -; And the last one (RisingBadge) too. - srl a - call c, BoostStat +.asm_44848 + xor a ret -; 3ed7c - - -BoostStat: ; 3ed7c -; Raise stat at hl by 1/8. +; 0x4484a - ld a, [hli] - ld d, a - ld e, [hl] - srl d - rr e - srl d - rr e - srl d - rr e - ld a, [hl] - add e - ld [hld], a - ld a, [hl] - adc d - ld [hli], a +Function4484a: ; 0x4484a + ld hl, MenuData44964 + call Function1d35 + call Function1d81 + call Function1c07 + jr c, .asm_44860 + ld a, [$cfa9] + dec a + ld hl, $4861 + rst JumpTable -; Cap at 999. - ld a, [hld] - sub 999 % $100 - ld a, [hl] - sbc 999 / $100 - ret c - ld a, 999 / $100 - ld [hli], a - ld a, 999 % $100 - ld [hld], a +.asm_44860 ret -; 3ed9f +; 0x44861 +.JumpTable + dw .ReadMail + dw .PutInPack + dw .AttachMail + dw .Cancel -INCBIN "baserom.gbc", $3ed9f, $3edd8 - $3ed9f +.ReadMail ; 0x44869 + call FadeToMenu + ld a, [MenuSelection] + dec a + ld b, a + call $45f4 + jp $2b3c +; 0x44877 +.PutInPack ; 0x44877 + ld hl, .MessageLostText + call $1d4f + call $1dcf + call Function1c07 + ret c + ld a, [MenuSelection] + dec a + call .Function448bb + ld a, $1 + ld [$d10c], a + ld hl, NumItems + call $2f66 + jr c, .asm_4489e + ld hl, .PackFullText + jp $1d67 -BattleRNG: ; 3edd8 -; If the normal RNG is used in a link battle it'll desync. -; To circumvent this a shared PRNG is used instead. +.asm_4489e + ld a, [MenuSelection] + dec a + ld b, a + call $45c0 + ld hl, .PutAwayText + jp $1d67 +; 0x448ac -; But if we're in a non-link battle we're safe to use it - ld a, [InLinkBattle] - and a - jp z, RNG +.PutAwayText ; 0x448ac + TX_FAR ClearedMailPutAwayText + db "@" -; The PRNG operates in streams of 8 values -; The reasons for this are unknown +.PackFullText ; 0x448b1 + TX_FAR MailPackFullText + db "@" -; Which value are we trying to pull? - push hl - push bc - ld a, [LinkBattleRNCount] - ld c, a - ld b, $0 - ld hl, LinkBattleRNs - add hl, bc - inc a - ld [LinkBattleRNCount], a +.MessageLostText ; 0x448b6 + TX_FAR MailMessageLostText + db "@" -; If we haven't hit the end yet, we're good - cp 9 ; Exclude last value. See the closing comment - ld a, [hl] - pop bc - pop hl - ret c - - -; If we have, we have to generate new pseudorandom data -; Instead of having multiple PRNGs, ten seeds are used - push hl - push bc +.Function448bb: ; 0x448bb push af - -; Reset count to 0 - xor a - ld [LinkBattleRNCount], a - ld hl, LinkBattleRNs - ld b, 10 ; number of seeds - -; Generate next number in the sequence for each seed -; The algorithm takes the form *5 + 1 % 256 -.loop - ; get last # + ld a, $0 + call GetSRAMBank + pop af + ld hl, $a863 + ld bc, $002f + call AddNTimes ld a, [hl] - - ; a * 5 + 1 - ld c, a - add a - add a - add c - inc a - - ; update # - ld [hli], a - dec b - jr nz, .loop + ld [CurItem], a + jp CloseSRAM +; 0x448d2 -; This has the side effect of pulling the last value first, -; then wrapping around. As a result, when we check to see if -; we've reached the end, we have to take this into account. - pop af - pop bc - pop hl - ret -; 3ee0f +.AttachMail ; 0x448d2 + call FadeToMenu + xor a + ld [PartyMenuActionText], a + call WhiteBGMap +.asm_448dc + ld a, $14 + ld hl, $404f + rst $8 + ld a, $14 + ld hl, $4405 + rst $8 + ld a, $14 + ld hl, $43e0 + rst $8 + ld a, $14 + ld hl, PickedFruitTree + rst $8 + ld a, $14 + ld hl, $449a + rst $8 + call WaitBGMap + call Function32f9 + call DelayFrame + ld a, $14 + ld hl, $4457 + rst $8 + jr c, .asm_44939 + ld a, [CurPartySpecies] + cp $fd + jr z, .asm_44923 + ld a, $1 + call GetPartyParamLocation + ld a, [hl] + and a + jr z, .asm_4492b + ld hl, .HoldingMailText + call PrintText + jr .asm_448dc -INCBIN "baserom.gbc", $3ee0f, $3fa01 - $3ee0f +.asm_44923 + ld hl, .EggText + call PrintText + jr .asm_448dc -GetRoamMonHP: ; 3fa01 -; output: hl = RoamMonCurHP - ld a, [TempEnemyMonSpecies] +.asm_4492b + ld a, [MenuSelection] + dec a ld b, a - ld a, [RoamMon1Species] - cp b - ld hl, RoamMon1CurHP - ret z - ld a, [RoamMon2Species] - cp b - ld hl, RoamMon2CurHP - ret z -; remnant of the GS function -; we know this will be $00 because it's never initialized - ld hl, RoamMon3CurHP - ret -; 3fa19 + call $4607 + ld hl, .MailMovedText + call PrintText -GetRoamMonDVs: ; 3fa19 -; output: hl = RoamMonDVs - ld a, [TempEnemyMonSpecies] - ld b, a - ld a, [RoamMon1Species] - cp b - ld hl, RoamMon1DVs - ret z - ld a, [RoamMon2Species] - cp b - ld hl, RoamMon2DVs - ret z -; remnant of the GS function -; we know this will be $0000 because it's never initialized - ld hl, RoamMon3DVs - ret -; 3fa31 +.asm_44939 + jp $2b3c +; 0x4493c +.HoldingMailText ; 0x4493c + TX_FAR MailAlreadyHoldingItemText + db "@" -INCBIN "baserom.gbc", $3fa31, $3fbff - $3fa31 +.EggText ; 0x44941 + TX_FAR MailEggText + db "@" +.MailMovedText ; 0x44946 + TX_FAR MailMovedFromBoxText + db "@" -GetPlayerBackpic: ; 3fbff -; Load the player character's backpic (6x6) into VRAM starting from $9310. +.Cancel + ret -; Special exception for Dude. - ld b, BANK(DudeBackpic) - ld hl, DudeBackpic - ld a, [BattleType] - cp BATTLETYPE_TUTORIAL - jr z, .Decompress +MenuData4494c: ; 0x4494c + db %01000000 ; flags + db 1, 8 ; start coords + db $a, $12 ; end coords + dw .MenuData2 + db 1 ; default option -; What gender are we? - ld a, [$d45b] - bit 2, a - jr nz, .Chris - ld a, [PlayerGender] - bit 0, a - jr z, .Chris +.MenuData2 + db %00010000 ; flags + db 4, 0 ; rows/columns? + db 1 ; horizontal spacing? + dbw 0,$d0f2 ; text pointer + dbw BANK(Function447fb), Function447fb + dbw 0,0 + dbw 0,0 -; It's a girl. - callba GetKrisBackpic - ret +MenuData44964: ; 0x44964 + db %01000000 ; flags + db 0, 0 ; start coords + db 9, $d ; end coords + dw .MenuData2 + db 1 ; default option -.Chris -; It's a boy. - ld b, BANK(ChrisBackpic) - ld hl, ChrisBackpic +.MenuData2 + db %10000000 ; flags + db 4 ; items + db "READ MAIL@" + db "PUT IN PACK@" + db "ATTACH MAIL@" + db "CANCEL@" -.Decompress - ld de, $9310 - ld c, $31 - ld a, PREDEF_DECOMPRESS - call Predef +SECTION "bank12",DATA,BANK[$12] + +Function48000: ; 48000 + ld a, $1 + ld [$d474], a + xor a + ld [$d473], a + ld [PlayerGender], a + ld [$d475], a + ld [$d476], a + ld [$d477], a + ld [$d478], a + ld [DefaultFlypoint], a + ld [$d003], a + ld a, [$d479] + res 0, a + ld [$d479], a + ld a, [$d479] + res 1, a + ld [$d479], a ret -; 3fc30 +; 4802f +INCBIN "baserom.gbc", $4802f, $48e81 - $4802f -INCBIN "baserom.gbc", $3fc30, $3fc8b - $3fc30 +Function48e81: ; 48e81 + ld hl, $4e93 + add hl, de + add hl, de + ld a, [hli] + ld e, a + ld d, [hl] + ld hl, $9500 + ld bc, $120f + call Functioneba + ret +; 48e93 -BattleStartMessage ; 3fc8b - ld a, [IsInBattle] - dec a - jr z, .asm_3fcaa +INCBIN "baserom.gbc", $48e93, $48e9b - $48e93 - ld de, SFX_SHINE - call StartSFX - call WaitSFX +PackFGFX: +INCBIN "gfx/misc/pack_f.2bpp" - ld c, 20 - call DelayFrames +Function4925b: ; 4925b + call FadeToMenu + call WhiteBGMap + call Functionfdb + call DelayFrame + ld b, $14 + call GetSGBLayout + xor a + ld [$d142], a + call $52a5 + ld [$d265], a + ld [$d262], a + call GetMoveName + call CopyName1 + ld a, $b + ld hl, $47fb + rst FarCall + jr c, .asm_4929c + jr .asm_49291 - ld a, $e - ld hl, $5939 +.asm_49289 + ld a, $b + ld hl, $480a rst FarCall + jr c, .asm_4929c - ld hl, WantsToBattleText - jr .asm_3fd0e +.asm_49291 + call $52b9 + jr nc, .asm_49289 + xor a + ld [ScriptVar], a + jr .asm_492a1 -.asm_3fcaa - call $5a79 - jr nc, .asm_3fcc2 +.asm_4929c + ld a, $ff + ld [ScriptVar], a - xor a - ld [$cfca], a - ld a, 1 - ld [hBattleTurn], a - ld a, 1 - ld [$c689], a - ld de, $0101 - call $6e17 +.asm_492a1 + call $2b3c + ret +; 492a5 -.asm_3fcc2 - ld a, $f - ld hl, CheckSleepingTreeMon - rst FarCall - jr c, .asm_3fceb +Function492a5: ; 492a5 + ld a, [ScriptVar] + cp $1 + jr z, .asm_492b3 + cp $2 + jr z, .asm_492b6 + ld a, $3a + ret - ld a, $13 - ld hl, $6a44 - rst FarCall - jr c, .asm_3fce0 +.asm_492b3 + ld a, $35 + ret - hlcoord 12, 0 - ld d, $0 - ld e, $1 - ld a, $47 +.asm_492b6 + ld a, $55 + ret +; 492b9 + +Function492b9: ; 492b9 + ld hl, $530a + call Function1d35 + ld a, $e call Predef - jr .asm_3fceb + push bc + ld a, [CurPartyMon] + ld hl, PartyMon1Nickname + call GetNick + pop bc + ld a, c + and a + jr nz, .asm_492e5 + push de + ld de, $0019 + call StartSFX + pop de + ld a, $b + ld hl, $48ce + call $31b0 + jr .asm_49300 -.asm_3fce0 - ld a, $0f - ld [CryTracks], a - ld a, [TempEnemyMonSpecies] - call $37b6 +.asm_492e5 + ld hl, $79ea + ld a, $3 + rst FarCall + jr c, .asm_49300 + ld a, $0 + call Predef + ld a, b + and a + jr z, .asm_49300 + ld c, $5 + ld hl, $71c2 + ld a, $1 + rst FarCall + jr .asm_49305 -.asm_3fceb - ld a, [BattleType] - cp BATTLETYPE_FISH - jr nz, .asm_3fcfd +.asm_49300 + call Function1c07 + and a + ret - ld a, $41 - ld hl, $6086 - rst FarCall +.asm_49305 + call Function1c07 + scf + ret +; 4930a - ld hl, HookedPokemonAttackedText - jr .asm_3fd0e +INCBIN "baserom.gbc", $4930a, $49409 - $4930a -.asm_3fcfd - ld hl, PokemonFellFromTreeText - cp BATTLETYPE_TREE - jr z, .asm_3fd0e - ld hl, WildPokemonAppearedText2 - cp $b - jr z, .asm_3fd0e - ld hl, WildPokemonAppearedText -.asm_3fd0e - push hl - ld a, $b - ld hl, $4000 - rst FarCall +Function49409: ; 49409 + ld hl, $5418 + ld de, $d038 + ld bc, $0008 + ld a, $5 + call $306b + ret +; 49418 - pop hl - call FarBattleTextBox +INCBIN "baserom.gbc", $49418, $49962 - $49418 - call $7830 +SpecialCelebiGFX: +INCBIN "gfx/special/celebi/leaf.2bpp" +INCBIN "gfx/special/celebi/1.2bpp" +INCBIN "gfx/special/celebi/2.2bpp" +INCBIN "gfx/special/celebi/3.2bpp" +INCBIN "gfx/special/celebi/4.2bpp" - ret nz +INCBIN "baserom.gbc", $49aa2, $49cdc - $49aa2 - ld c, $2 - ld a, $13 - ld hl, $6a0a - rst FarCall +MainMenu: ; 49cdc + xor a + ld [$c2d7], a + call Function49ed0 + ld b, $8 + call GetSGBLayout + call Function32f9 + ld hl, GameTimerPause + res 0, [hl] + call Function49da4 + ld [$cf76], a + call Function49e09 + ld hl, MenuDataHeader_0x49d14 + call Function1d35 + call Function49de4 + call Function1c17 + jr c, .quit + call ClearTileMap + ld a, [MenuSelection] + ld hl, Label49d60 + rst JumpTable + jr MainMenu +.quit ret -; 3fd26 +; 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 - dw $0000 ; padding +MenuData2_0x49d1c: ; 49d1c + db $80 ; flags + db 0 ; items + dw MainMenuItems + dw $1f79 + dw MainMenuText +; 49d20 +MainMenuText: +ContinueText: ; 0x49d24 + db "CONTINUE@" +NewGameText: ; 0x49d2d + db "NEW GAME@" +OptionText: ; 0x49d36 + db "OPTION@" +MysteryGiftText: ; 0x49d3d + db "MYSTERY GIFT@" +MobileText: ; 0x49d4a + db "MOBILE@" +MobileStudiumText: ; 0x49d51 + db "MOBILE STUDIUM@" -BattleCommandPointers: ; 3fd28 +Label49d60: ; 0x49d60 + dw MainMenu_Continue + dw MainMenu_NewGame + dw MainMenu_Options + dw MainMenu_MysteryGift + dw MainMenu_Mobile + dw MainMenu_MobileStudium +; 0x49d6c -INCLUDE "battle/effect_command_pointers.asm" +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 -SECTION "bank10",DATA,BANK[$10] +ContinueMenu: ; 0x49d70 + db 3 + db CONTINUE + db NEW_GAME + db OPTION + db $ff -INCBIN "baserom.gbc", $40000, $40c65-$40000 +MobileMysteryMenu: ; 0x49d75 + db 5 + db CONTINUE + db NEW_GAME + db OPTION + db MYSTERY_GIFT + db MOBILE + db $ff -AlphabeticalPokedexOrder: ; 0x40c65 -INCLUDE "stats/pokedex/order_alpha.asm" +MobileMenu: ; 0x49d7c + db 4 + db CONTINUE + db NEW_GAME + db OPTION + db MOBILE + db $ff -NewPokedexOrder: ; 0x40d60 -INCLUDE "stats/pokedex/order_new.asm" +MobileStudiumMenu: ; 0x49d82 + db 5 + db CONTINUE + db NEW_GAME + db OPTION + db MOBILE + db MOBILE_STUDIUM + db $ff -INCBIN "baserom.gbc", $40e5b, $41afb-$40e5b +MysteryMobileStudiumMenu: ; 0x49d89 + db 6 + db CONTINUE + db NEW_GAME + db OPTION + db MYSTERY_GIFT + db MOBILE + db MOBILE_STUDIUM + db $ff -Moves: ; 0x41afb -INCLUDE "battle/moves/moves.asm" +MysteryMenu: ; 0x49d91 + db 4 + db CONTINUE + db NEW_GAME + db OPTION + db MYSTERY_GIFT + db $ff -INCBIN "baserom.gbc", $421d8, $425b1-$421d8 +MysteryStudiumMenu: ; 0x49d97 + db 5 + db CONTINUE + db NEW_GAME + db OPTION + db MYSTERY_GIFT + db MOBILE_STUDIUM + db $ff -EvosAttacksPointers: ; 0x425b1 -INCLUDE "stats/evos_attacks_pointers.asm" +StudiumMenu: ; 0x49d9e + db 4 + db CONTINUE + db NEW_GAME + db OPTION + db MOBILE_STUDIUM + db $ff -INCLUDE "stats/evos_attacks.asm" +Function49da4: ; 49da4 + nop + nop + nop + ld a, [$cfcd] + and a + jr nz, .asm_49db0 + ld a, $0 + ret -SECTION "bank11",DATA,BANK[$11] +.asm_49db0 + ld a, [hCGB] + cp $1 + ld a, $1 + ret nz + ld a, $0 + call GetSRAMBank + ld a, [$abe5] + cp $ff + call CloseSRAM + jr nz, .asm_49dd6 + ld a, [StatusFlags] + bit 7, a + ld a, $1 + jr z, .asm_49dd1 + jr .asm_49dd1 -FruitTreeScript: ; 44000 - 3callasm BANK(GetCurTreeFruit), GetCurTreeFruit - loadfont - copybytetovar CurFruit - itemtotext $0, $0 - 2writetext FruitBearingTreeText - keeptextopen - 3callasm BANK(TryResetFruitTrees), TryResetFruitTrees - 3callasm BANK(CheckFruitTree), CheckFruitTree - iffalse .fruit - 2writetext NothingHereText - closetext - 2jump .end +.asm_49dd1 + jr .asm_49dd3 -.fruit - 2writetext HeyItsFruitText - copybytetovar CurFruit - giveitem $ff, 1 - iffalse .packisfull - keeptextopen - 2writetext ObtainedFruitText - 3callasm BANK(PickedFruitTree), PickedFruitTree - specialsound - itemnotify - 2jump .end +.asm_49dd3 + ld a, $1 + ret -.packisfull - keeptextopen - 2writetext FruitPackIsFullText - closetext +.asm_49dd6 + ld a, [StatusFlags] + bit 7, a + jr z, .asm_49ddf + jr .asm_49ddf -.end - loadmovesprites - end -; 44041 +.asm_49ddf + jr .asm_49de1 + +.asm_49de1 + ld a, $6 + ret +; 49de4 + +Function49de4: ; 49de4 + call SetUpMenu +.asm_49de7 + call Function49e09 + ld a, [$cfa5] + set 5, a + ld [$cfa5], a + call $1f1a + ld a, [$cf73] + cp $2 + jr z, .asm_49e07 + cp $1 + jr z, .asm_49e02 + jr .asm_49de7 -GetCurTreeFruit: ; 44041 - ld a, [CurFruitTree] - dec a - call GetFruitTreeItem - ld [CurFruit], a +.asm_49e02 + call PlayClickSFX + and a ret -; 4404c - -TryResetFruitTrees: ; 4404c - ld hl, $dc1e - bit 4, [hl] - ret nz - jp ResetFruitTrees -; 44055 -CheckFruitTree: ; 44055 - ld b, 2 - call GetFruitTreeFlag - ld a, c - ld [ScriptVar], a +.asm_49e07 + scf ret -; 4405f - -PickedFruitTree: ; 4405f - ld a, $41 - ld hl, $609b - rst FarCall ; empty function - - ld b, 1 - jp GetFruitTreeFlag -; 4406a +; 49e09 -ResetFruitTrees: ; 4406a +Function49e09: ; 49e09 + ld a, [$cfcd] + and a + ret z xor a - ld hl, FruitTreeFlags - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a - ld hl, $dc1e + 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 -; 44078 +; 49e27 -GetFruitTreeFlag: ; 44078 - push hl - push de - ld a, [CurFruitTree] - dec a - ld e, a - ld d, 0 - ld hl, FruitTreeFlags - call BitTableFunc - pop de - pop hl + +Function49e27: ; 49e27 + call $06e3 + and $80 + jr nz, .asm_49e39 + ld hl, $c5b8 + ld b, $2 + ld c, $12 + call TextBox ret -; 4408a -GetFruitTreeItem: ; 4408a - push hl - push de - ld e, a - ld d, 0 - ld hl, FruitTreeItems - add hl, de - ld a, [hl] - pop de - pop hl +.asm_49e39 + call SpeechTextBox ret -; 44097 +; 49e3d -FruitTreeItems: ; 44097 - db BERRY - db BERRY - db BERRY - db BERRY - db PSNCUREBERRY - db PSNCUREBERRY - db BITTER_BERRY - db BITTER_BERRY - db PRZCUREBERRY - db PRZCUREBERRY - db MYSTERYBERRY - db MYSTERYBERRY - db ICE_BERRY - db ICE_BERRY - db MINT_BERRY - db BURNT_BERRY - db RED_APRICORN - db BLU_APRICORN - db BLK_APRICORN - db WHT_APRICORN - db PNK_APRICORN - db GRN_APRICORN - db YLW_APRICORN - db BERRY - db PSNCUREBERRY - db BITTER_BERRY - db PRZCUREBERRY - db ICE_BERRY - db MINT_BERRY - db BURNT_BERRY -; 440b5 -FruitBearingTreeText: ; 440b5 - text_jump _FruitBearingTreeText, BANK(_FruitBearingTreeText) - db "@" -; 440ba +Function49e3d: ; 49e3d + ld a, [$cfcd] + and a + ret z + call $06e3 + 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 + ld a, $24 + ld hl, $4b3e + rst FarCall + ld [hl], $9c + inc hl + ld de, hMinutes + ld bc, $8102 + call $3198 + ret +; 49e70 -HeyItsFruitText: ; 440ba - text_jump _HeyItsFruitText, BANK(_HeyItsFruitText) - db "@" -; 440bf +; 49e70 + db "min.@" +; 49e75 -ObtainedFruitText: ; 440bf - text_jump _ObtainedFruitText, BANK(_ObtainedFruitText) - db "@" -; 440c4 +Function49e75: ; 49e75 + hlcoord 1, 14 + ld de, .TimeNotSet + call PlaceString + ret +; 49e7f -FruitPackIsFullText: ; 440c4 - text_jump _FruitPackIsFullText, BANK(_FruitPackIsFullText) - db "@" -; 440c9 +.TimeNotSet ; 49e7f + db "TIME NOT SET@" +; 49e8c -NothingHereText: ; 440c9 - text_jump _NothingHereText, BANK(_NothingHereText) +UnknownText_0x49e8c: ; 49e8c + text_jump UnknownText_0x1c5182, BANK(UnknownText_0x1c5182) db "@" -; 440ce - - - -AIChooseMove: ; 440ce -; Score each move in EnemyMonMoves starting from Buffer1. Lower is better. -; Pick the move with the lowest score. +; 49e91 -; Wildmons attack at random. - ld a, [IsInBattle] - dec a - ret z +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 - ld a, [InLinkBattle] - and a - ret nz +.Days + db "SUN@" + db "MON@" + db "TUES@" + db "WEDNES@" + db "THURS@" + db "FRI@" + db "SATUR@" +.Day + db "DAY@" +; 49ed0 -; No use picking a move if there's no choice. - ld a, $f - ld hl, $68d1 - rst FarCall ; CheckLockedEnemyMove - ret nz +Function49ed0: ; 49ed0 + xor a + ld [$ffde], a + call ClearTileMap + call Functione5f + call $0e51 + call Function1fbf + ret +; 49ee0 -; The default score is 20. Unusable moves are given a score of 80. - ld a, 20 - ld hl, Buffer1 - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a +MainMenu_NewGame: ; 49ee0 + callba NewGame + ret +; 49ee7 -; Don't pick disabled moves. - ld a, [EnemyDisabledMove] - and a - jr z, .CheckPP +MainMenu_Options: ; 49ee7 + callba OptionsMenu + ret +; 49eee - ld hl, EnemyMonMove1 - ld c, 0 -.CheckDisabledMove - cp [hl] - jr z, .ScoreDisabledMove - inc c - inc hl - jr .CheckDisabledMove -.ScoreDisabledMove - ld hl, Buffer1 - ld b, 0 - add hl, bc - ld [hl], 80 +MainMenu_Continue: ; 49eee + callba Continue + ret +; 49ef5 -; Don't pick moves with 0 PP. -.CheckPP - ld hl, Buffer1 - 1 - ld de, EnemyMonPP - ld b, 0 -.CheckMovePP - inc b - ld a, b - cp EnemyMonMovesEnd - EnemyMonMoves + 1 - jr z, .ApplyLayers - inc hl - ld a, [de] - inc de - and $3f - jr nz, .CheckMovePP - ld [hl], 80 - jr .CheckMovePP +MainMenu_MysteryGift: ; 49ef5 + callba MysteryGift + ret +; 49efc +MainMenu_Mobile: ; 49efc + call WhiteBGMap + ld a, MUSIC_MOBILE_ADAPTER_MENU + ld [CurMusic], a + ld de, MUSIC_MOBILE_ADAPTER_MENU + call $66c5 + call WhiteBGMap + call $63a7 + call $6492 + call WhiteBGMap + call $6071 + ld c, $c + call DelayFrames + ld hl, $c4a4 + ld b, $a + ld c, $a + call $4cdc + ld hl, $c4ce + ld de, MobileString1 + call PlaceString + ld hl, $c590 + ld b, $4 + ld c, $12 + call TextBox + xor a + ld de, String_0x49fe9 + ld hl, $c5b9 + call PlaceString + call Function3200 + call Function32f9 + call $1bc9 + ld hl, $cfa9 + ld b, [hl] + push bc + jr .asm_49f5d -; Apply AI scoring layers depending on the trainer class. -.ApplyLayers - ld hl, $559f ; TrainerAI + 3 ; e:559c-5771 +.asm_49f55 + call $1bd3 + ld hl, $cfa9 + ld b, [hl] + push bc - ld a, [$cfc0] +.asm_49f5d bit 0, a - jr nz, .asm_4412f - - ld a, [TrainerClass] - dec a - ld bc, 7 ; Trainer2AI - Trainer1AI - call AddNTimes + jr nz, .asm_49f67 + bit 1, a + jr nz, .asm_49f84 + jr .asm_49f97 -.asm_4412f - ld bc, (CHECK_FLAG << 8) | 0 - push bc - push hl +.asm_49f67 + ld hl, $cfa9 + ld a, [hl] + cp $1 + jp z, $6098 + cp $2 + jp z, $60b9 + cp $3 + jp z, $60c2 + cp $4 + jp z, $6100 + ld a, $1 + call $1ff8 -.CheckLayer - pop hl +.asm_49f84 pop bc + call WhiteBGMap + call ClearTileMap + ld a, MUSIC_MAIN_MENU + ld [CurMusic], a + ld de, MUSIC_MAIN_MENU + call $66c5 + ret - ld a, c - cp 16 ; up to 16 scoring layers - jr z, .asm_4415e +.asm_49f97 + ld hl, $cfa9 + ld a, [hl] + dec a + ld hl, MobileStrings2 + call GetNthString + ld d, h + ld e, l + ld hl, $c5a5 + ld b, $4 + ld c, $12 + call ClearBox + ld hl, $c5b9 + call PlaceString + jp .asm_49fb7 - push bc - ld d, $e ; BANK(TrainerAI) - ld a, PREDEF_FLAG - call Predef - ld d, c +.asm_49fb7 + call $6071 pop bc + ld hl, $cfa9 + ld [hl], b + ld b, $a + ld c, $1 + ld hl, $c4b9 + call ClearBox + jp .asm_49f55 +; 49fcc - inc c - push bc - push hl - ld a, d - and a - jr z, .CheckLayer +MobileString1: ; 49fcc + db "めいしフ,ルダー", $4e + db "あいさつ", $4e + db "プロフィール", $4e + db "せ", $1e, "い", $4e + db "もどる@" +; 49fe9 - ld hl, AIScoringPointers - dec c - ld b, 0 - add hl, bc - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, BANK(AIScoring) - call FarJpHl - jr .CheckLayer +MobileStrings2: -.asm_4415e - ld hl, Buffer1 - ld de, EnemyMonMoves - ld c, EnemyMonMovesEnd - EnemyMonMoves -.asm_44166 - ld a, [de] - inc de - and a - jr z, .asm_4415e +String_0x49fe9: ; 49fe9 + db "めいし", $1f, "つくったり", $4e + db "ほぞんしておける フ,ルダーです@" +; 4a004 - dec [hl] - jr z, .asm_44174 +String_0x4a004: ; 4a004 + db "モバイルたいせんや じぶんのめいしで", $4e + db "つかう あいさつ", $1f, "つくります@" +; 4a026 - inc hl - dec c - jr z, .asm_4415e +String_0x4a026: ; 4a026 + db "あなた", $25, "じゅうしょや ねんれいの", $4e + db "せ", $1e, "い", $1f, "かえられます@" +; 4a042 - jr .asm_44166 +String_0x4a042: ; 4a042 + db "モバイルセンター", $1d, "せつぞくするとき", $4e + db "ひつような こと", $1f, "きめます@" +; 4a062 -.asm_44174 - ld a, c -.asm_44175 - inc [hl] - dec hl - inc a - cp EnemyMonMovesEnd - EnemyMonMoves + 1 - jr nz, .asm_44175 +String_0x4a062: ; 4a062 + db "まえ", $25, "がめん ", $1d, "もどります", $4e + db "@" +; 4a071 - ld hl, Buffer1 - ld de, EnemyMonMoves - ld c, EnemyMonMovesEnd - EnemyMonMoves -.asm_44184 - ld a, [de] - and a - jr nz, .asm_44189 - ld [hl], a -.asm_44189 - ld a, [hl] - dec a - jr z, .asm_44191 - xor a - ld [hli], a - jr .asm_44193 -.asm_44191 - ld a, [de] - ld [hli], a -.asm_44193 - inc de - dec c - jr nz, .asm_44184 -.asm_44197 - ld hl, Buffer1 - call RNG - and 3 - ld c, a - ld b, 0 - add hl, bc - ld a, [hl] - and a - jr z, .asm_44197 +INCBIN "baserom.gbc", $4a071, $4a496 - $4a071 - ld [CurEnemyMove], a + +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 WhiteBGMap + pop de + pop bc + ld a, b + ld [StartDay], a ld a, c - ld [CurEnemyMoveNum], a + ld [StartHour], a + ld a, d + ld [StartMinute], a + ld a, e + ld [StartSecond], a ret -; 441af +; 4a4c4 -AIScoringPointers: ; 441af - dw AIScoring_RedStatus - dw AIScoring_RedStatMods - dw AIScoring_RedSuperEffective - dw AIScoring_Offensive - dw AIScoring_Smart - dw AIScoring_Opportunist - dw AIScoring_Aggressive - dw AIScoring_Cautious - dw AIScoring_StatusImmunity - dw AIScoring_Risky - dw AIScoring_None - dw AIScoring_None - dw AIScoring_None - dw AIScoring_None - dw AIScoring_None - dw AIScoring_None -; 441cf +INCBIN "baserom.gbc", $4a4c4, $4a6e8 - $4a4c4 -INCBIN "baserom.gbc", $441cf, $44378 - $441cf +SpecialBeastsCheck: ; 0x4a6e8 +; Check if the player owns all three legendary beasts. +; They must exist in either party or PC, and have the player's OT and ID. +; outputs: +; ScriptVar is 1 if the Pokémon exist, otherwise 0. -PokedexDataPointerTable: ; 0x44378 -INCLUDE "stats/pokedex/entry_pointers.asm" + ld a, RAIKOU + ld [ScriptVar], a + call CheckOwnMonAnywhere + jr nc, .notexist + ld a, ENTEI + ld [ScriptVar], a + call CheckOwnMonAnywhere + jr nc, .notexist -INCBIN "baserom.gbc", $4456e, $447a0 - $4456e + ld a, SUICUNE + ld [ScriptVar], a + call CheckOwnMonAnywhere + jr nc, .notexist -_KrisMailBoxMenu: ; 0x447a0 - call InitMail - jr z, .nomail - call $1d6e - call Function44806 - jp Function1c17 + ; they exist + ld a, $1 + ld [ScriptVar], a + ret -.nomail - ld hl, .EmptyMailboxText - jp $1d67 -; 0x447b4 +.notexist + xor a + ld [ScriptVar], a + ret -.EmptyMailboxText ; 0x447b4 - TX_FAR _EmptyMailboxText - db "@" +SpecialMonCheck: ; 0x4a711 +; Check if a Pokémon exists in PC or party. +; It must exist in either party or PC, and have the player's OT and ID. -InitMail: ; 0x447b9 -; initialize $d0f2 and beyond with incrementing values, one per mail -; set z if no mail - ld a, $0 - call GetSRAMBank - ld a, [$a834] - call CloseSRAM - ld hl, $d0f2 - ld [hli], a - and a +; inputs: +; ScriptVar contains species to search for + call CheckOwnMonAnywhere + jr c, .exists - jr z, .done ; if no mail, we're done + ; doesn't exist + xor a + ld [ScriptVar], a + ret - ; load values in memory with incrementing values starting at $d0f2 - ld b, a +.exists ld a, $1 + ld [ScriptVar], a + ret + +CheckOwnMonAnywhere: ; 0x4a721 + ld a, [PartyCount] + and a + ret z ; no pokémon in party + + ld d, a + ld e, $0 + ld hl, PartyMon1Species + ld bc, PartyMon1OT + +; run CheckOwnMon on each Pokémon in the party .loop - ld [hli], a - inc a - dec b - jr nz, .loop -.done - ld [hl], $ff ; terminate + call CheckOwnMon + ret c ; found! - ld a, [$d0f2] + push bc + ld bc, PartyMon2 - PartyMon1 + add hl, bc + pop bc + call UpdateOTPointer + dec d + jr nz, .loop ; 0x4a73d $f0 + +; XXX the below could use some cleanup +; run CheckOwnMon on each Pokémon in the PC + ld a, $1 + call GetSRAMBank + ld a, [$ad10] and a + jr z, .asm_4a766 ; 0x4a748 $1c + ld d, a + ld hl, $ad26 + ld bc, $afa6 +.asm_4a751 + call CheckOwnMon + jr nc, .asm_4a75a ; 0x4a754 $4 + call CloseSRAM ret -; 0x447da - -Function447da: ; 0x447da - dec a - ld hl, $a856 - ld bc, $002f - call AddNTimes - ld a, $0 +.asm_4a75a + push bc + ld bc, $0020 + add hl, bc + pop bc + call UpdateOTPointer + dec d + jr nz, .asm_4a751 ; 0x4a764 $eb +.asm_4a766 + call CloseSRAM + ld c, $0 +.asm_4a76b + ld a, [$db72] + and $f + cp c + jr z, .asm_4a7af ; 0x4a771 $3c + ld hl, $6810 + ld b, $0 + add hl, bc + add hl, bc + add hl, bc + ld a, [hli] call GetSRAMBank - ld de, StringBuffer2 + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [hl] + and a + jr z, .asm_4a7af ; 0x4a784 $29 + push bc + push hl + ld de, $0016 + add hl, de + ld d, h + ld e, l + pop hl push de - ld bc, $a - call CopyBytes - ld a, $50 - ld [de], a + ld de, $0296 + add hl, de + ld b, h + ld c, l + pop hl + ld d, a +.asm_4a798 + call CheckOwnMon + jr nc, .asm_4a7a2 ; 0x4a79b $5 + pop bc call CloseSRAM - pop de ret -; 0x447fb +.asm_4a7a2 + push bc + ld bc, $0020 + add hl, bc + pop bc + call UpdateOTPointer + dec d + jr nz, .asm_4a798 ; 0x4a7ac $ea + pop bc +.asm_4a7af + inc c + ld a, c + cp $e + jr c, .asm_4a76b ; 0x4a7b3 $b6 + call CloseSRAM + and a ; clear carry + ret -Function447fb: ; 0x447fb +CheckOwnMon: ; 0x4a7ba +; Check if a Pokémon belongs to the player and is of a specific species. + +; inputs: +; hl, pointer to PartyMonNSpecies +; bc, pointer to PartyMonNOT +; ScriptVar should contain the species we're looking for + +; outputs: +; sets carry if monster matches species, ID, and OT name. + + push bc + push hl push de - ld a, [MenuSelection] - call Function447da - pop hl - jp PlaceString -; 0x44806 + ld d, b + ld e, c -Function44806: ; 0x44806 - xor a - ld [$d0f0], a - ld a, $1 - ld [$d0f1], a -.asm_4480f - call InitMail - ld hl, MenuData4494c - call Function1d3c - xor a - ld [hBGMapMode], a - call $352f - call $1ad2 - ld a, [$d0f1] - ld [$cf88], a - ld a, [$d0f0] - ld [$d0e4], a - call $350c - ld a, [$d0e4] - ld [$d0f0], a - ld a, [$cfa9] - ld [$d0f1], a - ld a, [$cf73] - cp $2 - jr z, .asm_44848 - call Function4484a - jr .asm_4480f +; check species + ld a, [ScriptVar] ; species we're looking for + ld b, [hl] ; species we have + cp b + jr nz, .notfound ; species doesn't match -.asm_44848 - xor a - ret -; 0x4484a +; check ID number + ld bc, PartyMon1ID - PartyMon1Species + add hl, bc ; now hl points to ID number + ld a, [PlayerID] + cp [hl] + jr nz, .notfound ; ID doesn't match + inc hl + ld a, [PlayerID + 1] + cp [hl] + jr nz, .notfound ; ID doesn't match -Function4484a: ; 0x4484a - ld hl, MenuData44964 - call Function1d35 - call Function1d81 - call Function1c07 - jr c, .asm_44860 - ld a, [$cfa9] - dec a - ld hl, $4861 - rst JumpTable +; check OT +; This only checks five characters, which is fine for the Japanese version, +; but in the English version the player name is 7 characters, so this is wrong. -.asm_44860 - ret -; 0x44861 + ld hl, PlayerName -.JumpTable - dw .ReadMail - dw .PutInPack - dw .AttachMail - dw .Cancel + ld a, [de] + cp [hl] + jr nz, .notfound + cp "@" + jr z, .found ; reached end of string + inc hl + inc de -.ReadMail ; 0x44869 - call FadeToMenu - ld a, [MenuSelection] - dec a - ld b, a - call $45f4 - jp $2b3c -; 0x44877 + ld a, [de] + cp [hl] + jr nz, .notfound + cp $50 + jr z, .found + inc hl + inc de -.PutInPack ; 0x44877 - ld hl, .MessageLostText - call $1d4f - call $1dcf - call Function1c07 - ret c - ld a, [MenuSelection] - dec a - call .Function448bb - ld a, $1 - ld [$d10c], a - ld hl, NumItems - call $2f66 - jr c, .asm_4489e - ld hl, .PackFullText - jp $1d67 + ld a, [de] + cp [hl] + jr nz, .notfound + cp $50 + jr z, .found + inc hl + inc de -.asm_4489e - ld a, [MenuSelection] - dec a - ld b, a - call $45c0 - ld hl, .PutAwayText - jp $1d67 -; 0x448ac + ld a, [de] + cp [hl] + jr nz, .notfound + cp $50 + jr z, .found + inc hl + inc de -.PutAwayText ; 0x448ac - TX_FAR ClearedMailPutAwayText - db "@" + ld a, [de] + cp [hl] + jr z, .found -.PackFullText ; 0x448b1 - TX_FAR MailPackFullText - db "@" +.notfound + pop de + pop hl + pop bc + and a ; clear carry + ret +.found + pop de + pop hl + pop bc + scf + ret -.MessageLostText ; 0x448b6 - TX_FAR MailMessageLostText - db "@" +; 0x4a810 +INCBIN "baserom.gbc", $4a810, $4a83a - $4a810 -.Function448bb: ; 0x448bb - push af - ld a, $0 - call GetSRAMBank - pop af - ld hl, $a863 - ld bc, $002f - call AddNTimes +UpdateOTPointer: ; 0x4a83a + push hl + ld hl, PartyMon2OT - PartyMon1OT + add hl, bc + ld b, h + ld c, l + pop hl + ret +; 0x4a843 + +INCBIN "baserom.gbc", $4a843, $4ae78 - $4a843 + + +SECTION "bank13",DATA,BANK[$13] + +Function4c000: ; 4c000 + ld hl, TileMap + ld de, AttrMap + ld b, $12 +.asm_4c008 + push bc + ld c, $14 +.asm_4c00b ld a, [hl] - ld [CurItem], a - jp CloseSRAM -; 0x448d2 + push hl + srl a + jr c, .asm_4c021 + ld hl, TileSetPalettes + add [hl] + ld l, a + ld a, [$d1e7] + adc $0 + ld h, a + ld a, [hl] + and $f + jr .asm_4c031 -.AttachMail ; 0x448d2 - call FadeToMenu - xor a - ld [PartyMenuActionText], a - call WhiteBGMap -.asm_448dc - ld a, $14 - ld hl, $404f - rst $8 - ld a, $14 - ld hl, $4405 - rst $8 - ld a, $14 - ld hl, $43e0 - rst $8 - ld a, $14 - ld hl, PickedFruitTree - rst $8 - ld a, $14 - ld hl, $449a - rst $8 - call WaitBGMap - call Function32f9 - call DelayFrame - ld a, $14 - ld hl, $4457 - rst $8 - jr c, .asm_44939 - ld a, [CurPartySpecies] - cp $fd - jr z, .asm_44923 - ld a, $1 - call GetPartyParamLocation +.asm_4c021 + ld hl, TileSetPalettes + add [hl] + ld l, a + ld a, [$d1e7] + adc $0 + ld h, a ld a, [hl] - and a - jr z, .asm_4492b - ld hl, .HoldingMailText - call PrintText - jr .asm_448dc + swap a + and $f -.asm_44923 - ld hl, .EggText - call PrintText - jr .asm_448dc +.asm_4c031 + pop hl + ld [de], a + res 7, [hl] + inc hl + inc de + dec c + jr nz, .asm_4c00b + pop bc + dec b + jr nz, .asm_4c008 + ret +; 4c03f -.asm_4492b - ld a, [MenuSelection] - dec a - ld b, a - call $4607 - ld hl, .MailMovedText - call PrintText +INCBIN "baserom.gbc", $4c03f, $4c075 - $4c03f -.asm_44939 - jp $2b3c -; 0x4493c +Tileset03PalMap: ; 0x4c075 +INCBIN "tilesets/03_palette_map.bin" +; 0x4c0e5 + +Tileset00PalMap: ; 0x4c0e5 +Tileset01PalMap: ; 0x4c0e5 +INCBIN "tilesets/01_palette_map.bin" +; 0x4c155 -.HoldingMailText ; 0x4493c - TX_FAR MailAlreadyHoldingItemText - db "@" +Tileset02PalMap: ; 0x4c155 +INCBIN "tilesets/02_palette_map.bin" +; 0x4c1c5 -.EggText ; 0x44941 - TX_FAR MailEggText - db "@" +Tileset05PalMap: ; 0x4c1c5 +INCBIN "tilesets/05_palette_map.bin" +; 0x4c235 -.MailMovedText ; 0x44946 - TX_FAR MailMovedFromBoxText - db "@" +Tileset06PalMap: ; 0x4c235 +INCBIN "tilesets/06_palette_map.bin" +; 0x4c2a5 -.Cancel - ret +Tileset07PalMap: ; 0x4c2a5 +INCBIN "tilesets/07_palette_map.bin" +; 0x4c315 -MenuData4494c: ; 0x4494c - db %01000000 ; flags - db 1, 8 ; start coords - db $a, $12 ; end coords - dw .MenuData2 - db 1 ; default option +Tileset08PalMap: ; 0x4c315 +INCBIN "tilesets/08_palette_map.bin" +; 0x4c385 -.MenuData2 - db %00010000 ; flags - db 4, 0 ; rows/columns? - db 1 ; horizontal spacing? - dbw 0,$d0f2 ; text pointer - dbw BANK(Function447fb), Function447fb - dbw 0,0 - dbw 0,0 +Tileset09PalMap: ; 0x4c385 +INCBIN "tilesets/09_palette_map.bin" +; 0x4c3f5 -MenuData44964: ; 0x44964 - db %01000000 ; flags - db 0, 0 ; start coords - db 9, $d ; end coords - dw .MenuData2 - db 1 ; default option +Tileset10PalMap: ; 0x4c3f5 +INCBIN "tilesets/10_palette_map.bin" +; 0x4c465 -.MenuData2 - db %10000000 ; flags - db 4 ; items - db "READ MAIL@" - db "PUT IN PACK@" - db "ATTACH MAIL@" - db "CANCEL@" +Tileset11PalMap: ; 0x4c465 +INCBIN "tilesets/11_palette_map.bin" +; 0x4c4d5 -SECTION "bank12",DATA,BANK[$12] +Tileset12PalMap: ; 0x4c4d5 +INCBIN "tilesets/12_palette_map.bin" +; 0x4c545 -INCBIN "baserom.gbc", $48000, $48e9b - $48000 +Tileset13PalMap: ; 0x4c545 +INCBIN "tilesets/13_palette_map.bin" +; 0x4c5b5 -PackFGFX: -INCBIN "gfx/misc/pack_f.2bpp" +Tileset14PalMap: ; 0x4c5b5 +INCBIN "tilesets/14_palette_map.bin" +; 0x4c625 -INCBIN "baserom.gbc", $4925b, $49962 - $4925b +Tileset15PalMap: ; 0x4c625 +INCBIN "tilesets/15_palette_map.bin" +; 0x4c695 -SpecialCelebiGFX: -INCBIN "gfx/special/celebi/leaf.2bpp" -INCBIN "gfx/special/celebi/1.2bpp" -INCBIN "gfx/special/celebi/2.2bpp" -INCBIN "gfx/special/celebi/3.2bpp" -INCBIN "gfx/special/celebi/4.2bpp" +Tileset16PalMap: ; 0x4c695 +INCBIN "tilesets/16_palette_map.bin" +; 0x4c705 -INCBIN "baserom.gbc", $49aa2, $49cdc - $49aa2 +Tileset23PalMap: ; 0x4c705 +INCBIN "tilesets/23_palette_map.bin" +; 0x4c775 -MainMenu: ; 49cdc - xor a - ld [$c2d7], a - call Function49ed0 - ld b, $8 - call GetSGBLayout - call Function32f9 - ld hl, GameTimerPause - res 0, [hl] - call Function49da4 - ld [$cf76], a - call Function49e09 - ld hl, MenuDataHeader_0x49d14 - call Function1d35 - call Function49de4 - call Function1c17 - jr c, .quit - call ClearTileMap - ld a, [MenuSelection] - ld hl, Label49d60 - rst JumpTable - jr MainMenu +Tileset24PalMap: ; 0x4c775 +Tileset30PalMap: ; 0x4c775 +INCBIN "tilesets/30_palette_map.bin" +; 0x4c7e5 -.quit - ret -; 49d14 +Tileset25PalMap: ; 0x4c7e5 +INCBIN "tilesets/25_palette_map.bin" +; 0x4c855 -MenuDataHeader_0x49d14: ; 49d14 - db $40 ; flags - db 00, 00 ; start coords - db 07, 16 ; end coords - dw MenuData2_0x49d1c - db 1 ; default option -; 49d1c +Tileset26PalMap: ; 0x4c855 +Tileset32PalMap: ; 0x4c855 +Tileset33PalMap: ; 0x4c855 +Tileset34PalMap: ; 0x4c855 +Tileset35PalMap: ; 0x4c855 +Tileset36PalMap: ; 0x4c855 +INCBIN "tilesets/36_palette_map.bin" +; 0x4c8c5 -MenuData2_0x49d1c: ; 49d1c - db $80 ; flags - db 0 ; items - dw MainMenuItems - dw $1f79 - dw MainMenuText -; 49d20 +Tileset27PalMap: ; 0x4c8c5 +INCBIN "tilesets/27_palette_map.bin" +; 0x4c935 -MainMenuText: -ContinueText: ; 0x49d24 - db "CONTINUE@" -NewGameText: ; 0x49d2d - db "NEW GAME@" -OptionText: ; 0x49d36 - db "OPTION@" -MysteryGiftText: ; 0x49d3d - db "MYSTERY GIFT@" -MobileText: ; 0x49d4a - db "MOBILE@" -MobileStudiumText: ; 0x49d51 - db "MOBILE STUDIUM@" +Tileset17PalMap: ; 0x4c935 +INCBIN "tilesets/17_palette_map.bin" +; 0x4c9a5 -Label49d60: ; 0x49d60 - dw MainMenu_Continue - dw MainMenu_NewGame - dw MainMenu_Options - dw MainMenu_MysteryGift - dw MainMenu_Mobile - dw MainMenu_MobileStudium -; 0x49d6c +Tileset28PalMap: ; 0x4c9a5 +INCBIN "tilesets/28_palette_map.bin" +; 0x4ca15 -CONTINUE EQU 0 -NEW_GAME EQU 1 -OPTION EQU 2 -MYSTERY_GIFT EQU 3 -MOBILE EQU 4 -MOBILE_STUDIUM EQU 5 +Tileset18PalMap: ; 0x4ca15 +INCBIN "tilesets/18_palette_map.bin" +; 0x4ca85 -MainMenuItems: +Tileset19PalMap: ; 0x4ca85 +INCBIN "tilesets/19_palette_map.bin" +; 0x4caf5 -NewGameMenu: ; 0x49d6c - db 2 - db NEW_GAME - db OPTION - db $ff +Tileset20PalMap: ; 0x4caf5 +INCBIN "tilesets/20_palette_map.bin" +; 0x4cb65 -ContinueMenu: ; 0x49d70 - db 3 - db CONTINUE - db NEW_GAME - db OPTION - db $ff +INCBIN "baserom.gbc", $4cb65, $4cbd5-$4cb65 -MobileMysteryMenu: ; 0x49d75 - db 5 - db CONTINUE - db NEW_GAME - db OPTION - db MYSTERY_GIFT - db MOBILE - db $ff +Tileset29PalMap: ; 0x4cbd5 +INCBIN "tilesets/29_palette_map.bin" +; 0x4cc45 -MobileMenu: ; 0x49d7c - db 4 - db CONTINUE - db NEW_GAME - db OPTION - db MOBILE - db $ff +Tileset31PalMap: ; 0x4cc45 +INCBIN "tilesets/31_palette_map.bin" +; 0x4ccb5 -MobileStudiumMenu: ; 0x49d82 - db 5 - db CONTINUE - db NEW_GAME - db OPTION - db MOBILE - db MOBILE_STUDIUM - db $ff +Tileset21PalMap: ; 0x4ccb5 +INCBIN "tilesets/21_palette_map.bin" +; 0x4cd25 -MysteryMobileStudiumMenu: ; 0x49d89 - db 6 - db CONTINUE - db NEW_GAME - db OPTION - db MYSTERY_GIFT - db MOBILE - db MOBILE_STUDIUM - db $ff +Tileset22PalMap: ; 0x4cd25 +INCBIN "tilesets/22_palette_map.bin" +; 0x4cd95 -MysteryMenu: ; 0x49d91 - db 4 - db CONTINUE - db NEW_GAME - db OPTION - db MYSTERY_GIFT - db $ff +Tileset04PalMap: ; 0x4cd95 +INCBIN "tilesets/04_palette_map.bin" +; 0x4ce05 -MysteryStudiumMenu: ; 0x49d97 - db 5 - db CONTINUE - db NEW_GAME - db OPTION - db MYSTERY_GIFT - db MOBILE_STUDIUM - db $ff +INCBIN "baserom.gbc", $4ce05, $4ce1f - $4ce05 -StudiumMenu: ; 0x49d9e - db 4 - db CONTINUE - db NEW_GAME - db OPTION - db MOBILE_STUDIUM - db $ff +TileTypeTable: ; 4ce1f +; 256 tiletypes +; 00 = land +; 01 = water + db $00, $00, $00, $00, $00, $00, $00, $0f + db $00, $00, $00, $00, $00, $00, $00, $0f + db $00, $00, $1f, $00, $00, $1f, $00, $00 + db $00, $00, $1f, $00, $00, $1f, $00, $00 + db $01, $01, $11, $00, $11, $01, $01, $0f + db $01, $01, $11, $00, $11, $01, $01, $0f + db $01, $01, $01, $01, $01, $01, $01, $01 + db $01, $01, $01, $01, $01, $01, $01, $01 + + db $00, $00, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + db $00, $00, $0f, $00, $00, $00, $00, $00 + db $00, $00, $0f, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + + db $0f, $0f, $0f, $0f, $0f, $00, $00, $00 + db $0f, $0f, $0f, $0f, $0f, $00, $00, $00 + db $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f + db $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f + db $00, $00, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + + db $01, $01, $01, $01, $01, $01, $01, $01 + db $01, $01, $01, $01, $01, $01, $01, $01 + db $00, $00, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $0f +; 4cf1f +INCBIN "baserom.gbc", $4cf1f, $4cffe - $4cf1f -Function49da4: ; 49da4 - nop - nop - nop - ld a, [$cfcd] - and a - jr nz, .asm_49db0 - ld a, $0 - ret -.asm_49db0 - ld a, [hCGB] - cp $1 +Function4cffe: ; 4cffe ld a, $1 - ret nz - ld a, $0 call GetSRAMBank - ld a, [$abe5] - cp $ff + ld a, [$a008] + ld b, a + ld a, [$ad0f] + ld c, a call CloseSRAM - jr nz, .asm_49dd6 - ld a, [StatusFlags] - bit 7, a - ld a, $1 - jr z, .asm_49dd1 - jr .asm_49dd1 - -.asm_49dd1 - jr .asm_49dd3 - -.asm_49dd3 - ld a, $1 + ld a, b + cp $63 + jr nz, .asm_4d01b + ld a, c + cp $7f + jr nz, .asm_4d01b + ld c, $1 ret -.asm_49dd6 - ld a, [StatusFlags] - bit 7, a - jr z, .asm_49ddf - jr .asm_49ddf +.asm_4d01b + ld c, $0 + ret +; 4d01e -.asm_49ddf - jr .asm_49de1 +INCBIN "baserom.gbc", $4d01e, $4d15b - $4d01e -.asm_49de1 - ld a, $6 - ret -; 49de4 -Function49de4: ; 49de4 - call SetUpMenu -.asm_49de7 - call Function49e09 - ld a, [$cfa5] - set 5, a - ld [$cfa5], a - call $1f1a - ld a, [$cf73] - cp $2 - jr z, .asm_49e07 - cp $1 - jr z, .asm_49e02 - jr .asm_49de7 +Function4d15b: ; 4d15b + ld hl, EnemyMoveAnimation + ld a, [$d196] + and a + jr z, .asm_4d168 + ld bc, $0030 + add hl, bc -.asm_49e02 - call PlayClickSFX +.asm_4d168 + ld a, [$d197] and a - ret + jr z, .asm_4d170 + inc hl + inc hl -.asm_49e07 - scf +.asm_4d170 + ld de, TileMap + ld b, $12 +.asm_4d175 + ld c, $14 +.asm_4d177 + ld a, [hli] + ld [de], a + inc de + dec c + jr nz, .asm_4d177 + ld a, l + add $4 + ld l, a + jr nc, .asm_4d184 + inc h + +.asm_4d184 + dec b + jr nz, .asm_4d175 ret -; 49e09 +; 4d188 -Function49e09: ; 49e09 - ld a, [$cfcd] +Function4d188: ; 4d188 + ld a, [hCGB] and a - ret z + jp z, WaitBGMap + ld a, [$c2ce] + cp $0 + jp z, WaitBGMap + ld a, [hBGMapMode] + push af xor a ld [hBGMapMode], a - call Function49e27 - ld hl, Options - ld a, [hl] + ld a, [$ffde] push af - set 4, [hl] - call Function49e3d - pop af - ld [Options], a + xor a + ld [$ffde], a +.asm_4d1a2 + ld a, [rLY] + cp $8f + jr c, .asm_4d1a2 + di ld a, $1 + ld [rVBK], a + ld hl, AttrMap + call $51cb + ld a, $0 + ld [rVBK], a + ld hl, TileMap + call $51cb +.asm_4d1bd + ld a, [rLY] + cp $8f + jr c, .asm_4d1bd + ei + pop af + ld [$ffde], a + pop af ld [hBGMapMode], a ret -; 49e27 +; 4d1cb + +Function4d1cb: ; 4d1cb + ld [hSPBuffer], sp + ld sp, hl + ld a, [$ffd7] + ld h, a + ld l, $0 + ld a, $12 + ld [$ffd3], a + ld b, $2 + ld c, $41 +.asm_4d1dc + pop de +.asm_4d1dd + ld a, [$ff00+c] + and b + jr nz, .asm_4d1dd + ld [hl], e + inc l + ld [hl], d + inc l + pop de +.asm_4d1e6 + ld a, [$ff00+c] + and b + jr nz, .asm_4d1e6 + ld [hl], e + inc l + ld [hl], d + inc l + pop de +.asm_4d1ef + ld a, [$ff00+c] + and b + jr nz, .asm_4d1ef + ld [hl], e + inc l + ld [hl], d + inc l + pop de +.asm_4d1f8 + ld a, [$ff00+c] + and b + jr nz, .asm_4d1f8 + ld [hl], e + inc l + ld [hl], d + inc l + pop de +.asm_4d201 + ld a, [$ff00+c] + and b + jr nz, .asm_4d201 + ld [hl], e + inc l + ld [hl], d + inc l + pop de +.asm_4d20a + ld a, [$ff00+c] + and b + jr nz, .asm_4d20a + ld [hl], e + inc l + ld [hl], d + inc l + pop de +.asm_4d213 + ld a, [$ff00+c] + and b + jr nz, .asm_4d213 + ld [hl], e + inc l + ld [hl], d + inc l + pop de +.asm_4d21c + ld a, [$ff00+c] + and b + jr nz, .asm_4d21c + ld [hl], e + inc l + ld [hl], d + inc l + pop de +.asm_4d225 + ld a, [$ff00+c] + and b + jr nz, .asm_4d225 + ld [hl], e + inc l + ld [hl], d + inc l + pop de +.asm_4d22e + ld a, [$ff00+c] + and b + jr nz, .asm_4d22e + ld [hl], e + inc l + ld [hl], d + inc l + ld de, $000c + add hl, de + ld a, [$ffd3] + dec a + ld [$ffd3], a + jr nz, .asm_4d1dc + ld a, [hSPBuffer] + ld l, a + ld a, [$ffda] + ld h, a + ld sp, hl + ret +; 4d249 + +INCBIN "baserom.gbc", $4d249, $4d35b - $4d249 + + +Function4d35b: ; 4d35b + ld h, d + ld l, e + push bc + push hl + call $537e + pop hl + pop bc + ld de, $0939 + add hl, de + inc b + inc b + inc c + inc c + ld a, $7 +.asm_4d36e + push bc + push hl +.asm_4d370 + ld [hli], a + dec c + jr nz, .asm_4d370 + pop hl + ld de, $0014 + add hl, de + pop bc + dec b + jr nz, .asm_4d36e + ret +; 4d37e - -Function49e27: ; 49e27 - call $06e3 - and $80 - jr nz, .asm_49e39 - ld hl, $c5b8 - ld b, $2 - ld c, $12 - call TextBox +Function4d37e: ; 4d37e + push hl + ld a, $76 + ld [hli], a + inc a + call $53ab + inc a + ld [hl], a + pop hl + ld de, $0014 + add hl, de +.asm_4d38d + push hl + ld a, $79 + ld [hli], a + ld a, $7f + call $53ab + ld [hl], $7a + pop hl + ld de, $0014 + add hl, de + dec b + jr nz, .asm_4d38d + ld a, $7b + ld [hli], a + ld a, $7c + call $53ab + ld [hl], $7d ret +; 4d3ab -.asm_49e39 - call SpeechTextBox +Function4d3ab: ; 4d3ab + ld d, c +.asm_4d3ac + ld [hli], a + dec d + jr nz, .asm_4d3ac ret -; 49e3d +; 4d3b1 +INCBIN "baserom.gbc", $4d3b1, $4d596 - $4d3b1 -Function49e3d: ; 49e3d - ld a, [$cfcd] - and a - ret z - call $06e3 - 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 - ld a, $24 - ld hl, $4b3e - rst FarCall - ld [hl], $9c - inc hl - ld de, hMinutes - ld bc, $8102 - call $3198 - ret -; 49e70 +Tilesets: -; 49e70 - db "min.@" -; 49e75 +Tileset00: ; 0x4d596 + dbw BANK(Tileset00GFX), Tileset00GFX + dbw BANK(Tileset00Meta), Tileset00Meta + dbw BANK(Tileset00Coll), Tileset00Coll + dw Tileset00Anim + dw $0000 + dw Tileset00PalMap -Function49e75: ; 49e75 - hlcoord 1, 14 - ld de, .TimeNotSet - call PlaceString - ret -; 49e7f +Tileset01: ; 0x4d5a5 + dbw BANK(Tileset01GFX), Tileset01GFX + dbw BANK(Tileset01Meta), Tileset01Meta + dbw BANK(Tileset01Coll), Tileset01Coll + dw Tileset01Anim + dw $0000 + dw Tileset01PalMap -.TimeNotSet ; 49e7f - db "TIME NOT SET@" -; 49e8c +Tileset02: ; 0x4d5b4 + dbw BANK(Tileset02GFX), Tileset02GFX + dbw BANK(Tileset02Meta), Tileset02Meta + dbw BANK(Tileset02Coll), Tileset02Coll + dw Tileset02Anim + dw $0000 + dw Tileset02PalMap -UnknownText_0x49e8c: ; 49e8c - text_jump UnknownText_0x1c5182, BANK(UnknownText_0x1c5182) - db "@" -; 49e91 +Tileset03: ; 0x4d5c3 + dbw BANK(Tileset03GFX), Tileset03GFX + dbw BANK(Tileset03Meta), Tileset03Meta + dbw BANK(Tileset03Coll), Tileset03Coll + dw Tileset03Anim + dw $0000 + dw Tileset03PalMap -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 +Tileset04: ; 0x4d5d2 + dbw BANK(Tileset04GFX), Tileset04GFX + dbw BANK(Tileset04Meta), Tileset04Meta + dbw BANK(Tileset04Coll), Tileset04Coll + dw Tileset04Anim + dw $0000 + dw Tileset04PalMap -.Days - db "SUN@" - db "MON@" - db "TUES@" - db "WEDNES@" - db "THURS@" - db "FRI@" - db "SATUR@" -.Day - db "DAY@" -; 49ed0 +Tileset05: ; 0x4d5e1 + dbw BANK(Tileset05GFX), Tileset05GFX + dbw BANK(Tileset05Meta), Tileset05Meta + dbw BANK(Tileset05Coll), Tileset05Coll + dw Tileset05Anim + dw $0000 + dw Tileset05PalMap -Function49ed0: ; 49ed0 - xor a - ld [$ffde], a - call ClearTileMap - call Functione5f - call $0e51 - call Function1fbf - ret -; 49ee0 +Tileset06: ; 0x4d5f0 + dbw BANK(Tileset06GFX), Tileset06GFX + dbw BANK(Tileset06Meta), Tileset06Meta + dbw BANK(Tileset06Coll), Tileset06Coll + dw Tileset06Anim + dw $0000 + dw Tileset06PalMap +Tileset07: ; 0x4d5ff + dbw BANK(Tileset07GFX), Tileset07GFX + dbw BANK(Tileset07Meta), Tileset07Meta + dbw BANK(Tileset07Coll), Tileset07Coll + dw Tileset07Anim + dw $0000 + dw Tileset07PalMap -MainMenu_NewGame: ; 49ee0 - callba NewGame - ret -; 49ee7 +Tileset08: ; 0x4d60e + dbw BANK(Tileset08GFX), Tileset08GFX + dbw BANK(Tileset08Meta), Tileset08Meta + dbw BANK(Tileset08Coll), Tileset08Coll + dw Tileset08Anim + dw $0000 + dw Tileset08PalMap -MainMenu_Options: ; 49ee7 - callba OptionsMenu - ret -; 49eee +Tileset09: ; 0x4d61d + dbw BANK(Tileset09GFX), Tileset09GFX + dbw BANK(Tileset09Meta), Tileset09Meta + dbw BANK(Tileset09Coll), Tileset09Coll + dw Tileset09Anim + dw $0000 + dw Tileset09PalMap -MainMenu_Continue: ; 49eee - callba Continue - ret -; 49ef5 +Tileset10: ; 0x4d62c + dbw BANK(Tileset10GFX), Tileset10GFX + dbw BANK(Tileset10Meta), Tileset10Meta + dbw BANK(Tileset10Coll), Tileset10Coll + dw Tileset10Anim + dw $0000 + dw Tileset10PalMap -MainMenu_MysteryGift: ; 49ef5 - callba MysteryGift - ret -; 49efc +Tileset11: ; 0x4d63b + dbw BANK(Tileset11GFX), Tileset11GFX + dbw BANK(Tileset11Meta), Tileset11Meta + dbw BANK(Tileset11Coll), Tileset11Coll + dw Tileset11Anim + dw $0000 + dw Tileset11PalMap -MainMenu_Mobile: ; 49efc - call WhiteBGMap - ld a, MUSIC_MOBILE_ADAPTER_MENU - ld [CurMusic], a - ld de, MUSIC_MOBILE_ADAPTER_MENU - call $66c5 - call WhiteBGMap - call $63a7 - call $6492 - call WhiteBGMap - call $6071 - ld c, $c - call DelayFrames - ld hl, $c4a4 - ld b, $a - ld c, $a - call $4cdc - ld hl, $c4ce - ld de, MobileString1 - call PlaceString - ld hl, $c590 - ld b, $4 - ld c, $12 - call TextBox - xor a - ld de, String_0x49fe9 - ld hl, $c5b9 - call PlaceString - call Function3200 - call Function32f9 - call $1bc9 - ld hl, $cfa9 - ld b, [hl] - push bc - jr .asm_49f5d +Tileset12: ; 0x4d64a + dbw BANK(Tileset12GFX), Tileset12GFX + dbw BANK(Tileset12Meta), Tileset12Meta + dbw BANK(Tileset12Coll), Tileset12Coll + dw Tileset12Anim + dw $0000 + dw Tileset12PalMap -.asm_49f55 - call $1bd3 - ld hl, $cfa9 - ld b, [hl] - push bc +Tileset13: ; 0x4d659 + dbw BANK(Tileset13GFX), Tileset13GFX + dbw BANK(Tileset13Meta), Tileset13Meta + dbw BANK(Tileset13Coll), Tileset13Coll + dw Tileset13Anim + dw $0000 + dw Tileset13PalMap -.asm_49f5d - bit 0, a - jr nz, .asm_49f67 - bit 1, a - jr nz, .asm_49f84 - jr .asm_49f97 +Tileset14: ; 0x4d668 + dbw BANK(Tileset14GFX), Tileset14GFX + dbw BANK(Tileset14Meta), Tileset14Meta + dbw BANK(Tileset14Coll), Tileset14Coll + dw Tileset14Anim + dw $0000 + dw Tileset14PalMap -.asm_49f67 - ld hl, $cfa9 - ld a, [hl] - cp $1 - jp z, $6098 - cp $2 - jp z, $60b9 - cp $3 - jp z, $60c2 - cp $4 - jp z, $6100 - ld a, $1 - call $1ff8 +Tileset15: ; 0x4d677 + dbw BANK(Tileset15GFX), Tileset15GFX + dbw BANK(Tileset15Meta), Tileset15Meta + dbw BANK(Tileset15Coll), Tileset15Coll + dw Tileset15Anim + dw $0000 + dw Tileset15PalMap -.asm_49f84 - pop bc - call WhiteBGMap - call ClearTileMap - ld a, MUSIC_MAIN_MENU - ld [CurMusic], a - ld de, MUSIC_MAIN_MENU - call $66c5 - ret +Tileset16: ; 0x4d686 + dbw BANK(Tileset16GFX), Tileset16GFX + dbw BANK(Tileset16Meta), Tileset16Meta + dbw BANK(Tileset16Coll), Tileset16Coll + dw Tileset16Anim + dw $0000 + dw Tileset16PalMap -.asm_49f97 - ld hl, $cfa9 - ld a, [hl] - dec a - ld hl, MobileStrings2 - call GetNthString - ld d, h - ld e, l - ld hl, $c5a5 - ld b, $4 - ld c, $12 - call ClearBox - ld hl, $c5b9 - call PlaceString - jp .asm_49fb7 +Tileset17: ; 0x4d695 + dbw BANK(Tileset17GFX), Tileset17GFX + dbw BANK(Tileset17Meta), Tileset17Meta + dbw BANK(Tileset17Coll), Tileset17Coll + dw Tileset17Anim + dw $0000 + dw Tileset17PalMap -.asm_49fb7 - call $6071 - pop bc - ld hl, $cfa9 - ld [hl], b - ld b, $a - ld c, $1 - ld hl, $c4b9 - call ClearBox - jp .asm_49f55 -; 49fcc +Tileset18: ; 0x4d6a4 + dbw BANK(Tileset18GFX), Tileset18GFX + dbw BANK(Tileset18Meta), Tileset18Meta + dbw BANK(Tileset18Coll), Tileset18Coll + dw Tileset18Anim + dw $0000 + dw Tileset18PalMap +Tileset19: ; 0x4d6b3 + dbw BANK(Tileset19GFX), Tileset19GFX + dbw BANK(Tileset19Meta), Tileset19Meta + dbw BANK(Tileset19Coll), Tileset19Coll + dw Tileset19Anim + dw $0000 + dw Tileset19PalMap -MobileString1: ; 49fcc - db "めいしフ,ルダー", $4e - db "あいさつ", $4e - db "プロフィール", $4e - db "せ", $1e, "い", $4e - db "もどる@" -; 49fe9 +Tileset20: ; 0x4d6c2 + dbw BANK(Tileset20GFX), Tileset20GFX + dbw BANK(Tileset20Meta), Tileset20Meta + dbw BANK(Tileset20Coll), Tileset20Coll + dw Tileset20Anim + dw $0000 + dw Tileset20PalMap +Tileset21: ; 0x4d6d1 + dbw BANK(Tileset21GFX), Tileset21GFX + dbw BANK(Tileset21Meta), Tileset21Meta + dbw BANK(Tileset21Coll), Tileset21Coll + dw Tileset21Anim + dw $0000 + dw Tileset21PalMap -MobileStrings2: +Tileset22: ; 0x4d6e0 + dbw BANK(Tileset22GFX), Tileset22GFX + dbw BANK(Tileset22Meta), Tileset22Meta + dbw BANK(Tileset22Coll), Tileset22Coll + dw Tileset22Anim + dw $0000 + dw Tileset22PalMap -String_0x49fe9: ; 49fe9 - db "めいし", $1f, "つくったり", $4e - db "ほぞんしておける フ,ルダーです@" -; 4a004 +Tileset23: ; 0x4d6ef + dbw BANK(Tileset23GFX), Tileset23GFX + dbw BANK(Tileset23Meta), Tileset23Meta + dbw BANK(Tileset23Coll), Tileset23Coll + dw Tileset23Anim + dw $0000 + dw Tileset23PalMap -String_0x4a004: ; 4a004 - db "モバイルたいせんや じぶんのめいしで", $4e - db "つかう あいさつ", $1f, "つくります@" -; 4a026 +Tileset24: ; 0x4d6fe + dbw BANK(Tileset24GFX), Tileset24GFX + dbw BANK(Tileset24Meta), Tileset24Meta + dbw BANK(Tileset24Coll), Tileset24Coll + dw Tileset24Anim + dw $0000 + dw Tileset24PalMap -String_0x4a026: ; 4a026 - db "あなた", $25, "じゅうしょや ねんれいの", $4e - db "せ", $1e, "い", $1f, "かえられます@" -; 4a042 +Tileset25: ; 0x4d70d + dbw BANK(Tileset25GFX), Tileset25GFX + dbw BANK(Tileset25Meta), Tileset25Meta + dbw BANK(Tileset25Coll), Tileset25Coll + dw Tileset25Anim + dw $0000 + dw Tileset25PalMap -String_0x4a042: ; 4a042 - db "モバイルセンター", $1d, "せつぞくするとき", $4e - db "ひつような こと", $1f, "きめます@" -; 4a062 +Tileset26: ; 0x4d71c + dbw BANK(Tileset26GFX), Tileset26GFX + dbw BANK(Tileset26Meta), Tileset26Meta + dbw BANK(Tileset26Coll), Tileset26Coll + dw Tileset26Anim + dw $0000 + dw Tileset26PalMap -String_0x4a062: ; 4a062 - db "まえ", $25, "がめん ", $1d, "もどります", $4e - db "@" -; 4a071 +Tileset27: ; 0x4d72b + dbw BANK(Tileset27GFX), Tileset27GFX + dbw BANK(Tileset27Meta), Tileset27Meta + dbw BANK(Tileset27Coll), Tileset27Coll + dw Tileset27Anim + dw $0000 + dw Tileset27PalMap +Tileset28: ; 0x4d73a + dbw BANK(Tileset28GFX), Tileset28GFX + dbw BANK(Tileset28Meta), Tileset28Meta + dbw BANK(Tileset28Coll), Tileset28Coll + dw Tileset28Anim + dw $0000 + dw Tileset28PalMap -INCBIN "baserom.gbc", $4a071, $4a496 - $4a071 +Tileset29: ; 0x4d749 + dbw BANK(Tileset29GFX), Tileset29GFX + dbw BANK(Tileset29Meta), Tileset29Meta + dbw BANK(Tileset29Coll), Tileset29Coll + dw Tileset29Anim + dw $0000 + dw Tileset29PalMap +Tileset30: ; 0x4d758 + dbw BANK(Tileset30GFX), Tileset30GFX + dbw BANK(Tileset30Meta), Tileset30Meta + dbw BANK(Tileset30Coll), Tileset30Coll + dw Tileset30Anim + dw $0000 + dw Tileset30PalMap -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 WhiteBGMap - 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 +Tileset31: ; 0x4d767 + dbw BANK(Tileset31GFX), Tileset31GFX + dbw BANK(Tileset31Meta), Tileset31Meta + dbw BANK(Tileset31Coll), Tileset31Coll + dw Tileset31Anim + dw $0000 + dw Tileset31PalMap +Tileset32: ; 0x4d776 + dbw BANK(Tileset32GFX), Tileset32GFX + dbw BANK(Tileset32Meta), Tileset32Meta + dbw BANK(Tileset32Coll), Tileset32Coll + dw Tileset32Anim + dw $0000 + dw Tileset32PalMap -INCBIN "baserom.gbc", $4a4c4, $4a6e8 - $4a4c4 +Tileset33: ; 0x4d785 + dbw BANK(Tileset33GFX), Tileset33GFX + dbw BANK(Tileset33Meta), Tileset33Meta + dbw BANK(Tileset33Coll), Tileset33Coll + dw Tileset33Anim + dw $0000 + dw Tileset33PalMap +Tileset34: ; 0x4d794 + dbw BANK(Tileset34GFX), Tileset34GFX + dbw BANK(Tileset34Meta), Tileset34Meta + dbw BANK(Tileset34Coll), Tileset34Coll + dw Tileset34Anim + dw $0000 + dw Tileset34PalMap -SpecialBeastsCheck: ; 0x4a6e8 -; Check if the player owns all three legendary beasts. -; They must exist in either party or PC, and have the player's OT and ID. +Tileset35: ; 0x4d7a3 + dbw BANK(Tileset35GFX), Tileset35GFX + dbw BANK(Tileset35Meta), Tileset35Meta + dbw BANK(Tileset35Coll), Tileset35Coll + dw Tileset35Anim + dw $0000 + dw Tileset35PalMap -; outputs: -; ScriptVar is 1 if the Pokémon exist, otherwise 0. +Tileset36: ; 0x4d7b2 + dbw BANK(Tileset36GFX), Tileset36GFX + dbw BANK(Tileset36Meta), Tileset36Meta + dbw BANK(Tileset36Coll), Tileset36Coll + dw Tileset36Anim + dw $0000 + dw Tileset36PalMap - ld a, RAIKOU - ld [ScriptVar], a - call CheckOwnMonAnywhere - jr nc, .notexist +; 0x4d7c1 - ld a, ENTEI - ld [ScriptVar], a - call CheckOwnMonAnywhere - jr nc, .notexist +INCBIN "baserom.gbc", $4d7c1, $4d860 - $4d7c1 - ld a, SUICUNE - ld [ScriptVar], a - call CheckOwnMonAnywhere - jr nc, .notexist +CheckPokerus: ; 4d860 +; Return carry if a monster in your party has Pokerus - ; they exist - ld a, $1 - ld [ScriptVar], a +; Get number of monsters to iterate over + ld a, [PartyCount] + and a + jr z, .NoPokerus + ld b, a +; Check each monster in the party for Pokerus + ld hl, PartyMon1PokerusStatus + ld de, PartyMon2 - PartyMon1 +.Check + ld a, [hl] + and $0f ; only the bottom nybble is used + jr nz, .HasPokerus +; Next PartyMon + add hl, de + dec b + jr nz, .Check +.NoPokerus + and a ret - -.notexist - xor a - ld [ScriptVar], a +.HasPokerus + scf ret +; 4d87a -SpecialMonCheck: ; 0x4a711 -; Check if a Pokémon exists in PC or party. -; It must exist in either party or PC, and have the player's OT and ID. - -; inputs: -; ScriptVar contains species to search for - call CheckOwnMonAnywhere - jr c, .exists +INCBIN "baserom.gbc", $4d87a, $4db3b - $4d87a - ; doesn't exist - xor a - ld [ScriptVar], a - ret -.exists - ld a, $1 - ld [ScriptVar], a - ret +Function4db3b: ; 4db3b + ld hl, $5b44 + call PrintText + jp $1dcf +; 4db44 -CheckOwnMonAnywhere: ; 0x4a721 - ld a, [PartyCount] - and a - ret z ; no pokémon in party +INCBIN "baserom.gbc", $4db44, $4db49 - $4db44 - ld d, a - ld e, $0 - ld hl, PartyMon1Species - ld bc, PartyMon1OT -; run CheckOwnMon on each Pokémon in the party -.loop - call CheckOwnMon - ret c ; found! +Function4db49: ; 4db49 + ld a, [PartyCount] + dec a + ld hl, PartyMon1CaughtLevel + call GetPartyLocation + ld a, [TimeOfDay] + inc a + rrca + rrca + ld b, a + ld a, [CurPartyLevel] + or b + ld [hli], a + ld a, [MapGroup] + ld b, a + ld a, [MapNumber] + ld c, a + cp $1 + jr nz, .asm_4db78 + ld a, b + cp $14 + jr nz, .asm_4db78 + ld a, [BackupMapGroup] + ld b, a + ld a, [BackupMapNumber] + ld c, a - push bc - ld bc, PartyMon2 - PartyMon1 - add hl, bc - pop bc - call UpdateOTPointer - dec d - jr nz, .loop ; 0x4a73d $f0 +.asm_4db78 + call GetWorldMapLocation + ld b, a + ld a, [PlayerGender] + rrca + or b + ld [hl], a + ret +; 4db83 -; XXX the below could use some cleanup -; run CheckOwnMon on each Pokémon in the PC +Function4db83: ; 4db83 ld a, $1 call GetSRAMBank - ld a, [$ad10] - and a - jr z, .asm_4a766 ; 0x4a748 $1c - ld d, a - ld hl, $ad26 - ld bc, $afa6 -.asm_4a751 - call CheckOwnMon - jr nc, .asm_4a75a ; 0x4a754 $4 + ld hl, $ad43 + call $5b53 call CloseSRAM ret -.asm_4a75a +; 4db92 + +Function4db92: ; 4db92 push bc - ld bc, $0020 - add hl, bc - pop bc - call UpdateOTPointer - dec d - jr nz, .asm_4a751 ; 0x4a764 $eb -.asm_4a766 - call CloseSRAM - ld c, $0 -.asm_4a76b - ld a, [$db72] - and $f - cp c - jr z, .asm_4a7af ; 0x4a771 $3c - ld hl, $6810 - ld b, $0 - add hl, bc - add hl, bc - add hl, bc - ld a, [hli] + ld a, $1 call GetSRAMBank - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [hl] - and a - jr z, .asm_4a7af ; 0x4a784 $29 - push bc - push hl - ld de, $0016 - add hl, de - ld d, h - ld e, l - pop hl - push de - ld de, $0296 - add hl, de - ld b, h - ld c, l - pop hl - ld d, a -.asm_4a798 - call CheckOwnMon - jr nc, .asm_4a7a2 ; 0x4a79b $5 + ld hl, $ad43 pop bc + call $5baf call CloseSRAM ret -.asm_4a7a2 +; 4dba3 + +Function4dba3: ; 4dba3 + ld a, [PartyCount] + dec a + ld hl, PartyMon1CaughtLevel push bc - ld bc, $0020 - add hl, bc - pop bc - call UpdateOTPointer - dec d - jr nz, .asm_4a798 ; 0x4a7ac $ea + call GetPartyLocation pop bc -.asm_4a7af - inc c - ld a, c - cp $e - jr c, .asm_4a76b ; 0x4a7b3 $b6 - call CloseSRAM - and a ; clear carry + xor a + ld [hli], a + ld a, $7e + rrc b + or b + ld [hl], a ret +; 4dbb8 -CheckOwnMon: ; 0x4a7ba -; Check if a Pokémon belongs to the player and is of a specific species. - -; inputs: -; hl, pointer to PartyMonNSpecies -; bc, pointer to PartyMonNOT -; ScriptVar should contain the species we're looking for - -; outputs: -; sets carry if monster matches species, ID, and OT name. +INCBIN "baserom.gbc", $4dbb8, $4dc8a - $4dbb8 +StatsScreenInit: ; 4dc8a + ld hl, StatsScreenMain + jr .gotaddress + ld hl, $5cf7 + jr .gotaddress +.gotaddress + ld a, [$ffde] + push af + xor a + ld [$ffde], a ; disable overworld tile animations + ld a, [$c2c6] ; whether sprite is to be mirrorred + push af + ld a, [$cf63] + ld b, a + ld a, [$cf64] + ld c, a push bc push hl - push de - ld d, b - ld e, c - -; check species - ld a, [ScriptVar] ; species we're looking for - ld b, [hl] ; species we have - cp b - jr nz, .notfound ; species doesn't match - -; check ID number - ld bc, PartyMon1ID - PartyMon1Species - add hl, bc ; now hl points to ID number - ld a, [PlayerID] - cp [hl] - jr nz, .notfound ; ID doesn't match - inc hl - ld a, [PlayerID + 1] - cp [hl] - jr nz, .notfound ; ID doesn't match - -; check OT -; This only checks five characters, which is fine for the Japanese version, -; but in the English version the player name is 7 characters, so this is wrong. - - ld hl, PlayerName - - ld a, [de] - cp [hl] - jr nz, .notfound - cp "@" - jr z, .found ; reached end of string - inc hl - inc de - - ld a, [de] - cp [hl] - jr nz, .notfound - cp $50 - jr z, .found - inc hl - inc de - - ld a, [de] - cp [hl] - jr nz, .notfound - cp $50 - jr z, .found - inc hl - inc de - - ld a, [de] - cp [hl] - jr nz, .notfound - cp $50 - jr z, .found - inc hl - inc de - - ld a, [de] - cp [hl] - jr z, .found - -.notfound - pop de - pop hl - pop bc - and a ; clear carry - ret -.found - pop de + call WhiteBGMap + call ClearTileMap + call $1ad2 + ld a, $3e + ld hl, $753e + rst FarCall ; this loads graphics pop hl + call JpHl + call WhiteBGMap + call ClearTileMap pop bc - scf + ; restore old values + ld a, b + ld [$cf63], a + ld a, c + ld [$cf64], a + pop af + ld [$c2c6], a + pop af + ld [$ffde], a ret +; 0x4dcd2 -; 0x4a810 -INCBIN "baserom.gbc", $4a810, $4a83a - $4a810 - -UpdateOTPointer: ; 0x4a83a - push hl - ld hl, PartyMon2OT - PartyMon1OT - add hl, bc - ld b, h - ld c, l - pop hl +StatsScreenMain: ; 0x4dcd2 + xor a + ld [$cf63], a + ld [$cf64], a + ld a, [$cf64] + and $fc + or $1 + ld [$cf64], a +.loop ; 4dce3 + ld a, [$cf63] + and $7f + ld hl, StatsScreenPointerTable + rst JumpTable + call $5d3a ; check for keys? + ld a, [$cf63] + bit 7, a + jr z, .loop ret -; 0x4a843 - -INCBIN "baserom.gbc", $4a843, $4ae78 - $4a843 - - -SECTION "bank13",DATA,BANK[$13] - -INCBIN "baserom.gbc", $4c000, $4c075 - $4c000 - -Tileset03PalMap: ; 0x4c075 -INCBIN "tilesets/03_palette_map.bin" -; 0x4c0e5 - -Tileset00PalMap: ; 0x4c0e5 -Tileset01PalMap: ; 0x4c0e5 -INCBIN "tilesets/01_palette_map.bin" -; 0x4c155 - -Tileset02PalMap: ; 0x4c155 -INCBIN "tilesets/02_palette_map.bin" -; 0x4c1c5 - -Tileset05PalMap: ; 0x4c1c5 -INCBIN "tilesets/05_palette_map.bin" -; 0x4c235 +; 0x4dcf7 -Tileset06PalMap: ; 0x4c235 -INCBIN "tilesets/06_palette_map.bin" -; 0x4c2a5 +INCBIN "baserom.gbc", $4dcf7, $4dd2a - $4dcf7 -Tileset07PalMap: ; 0x4c2a5 -INCBIN "tilesets/07_palette_map.bin" -; 0x4c315 +StatsScreenPointerTable: ; 4dd2a + dw $5d72 ; regular pokémon + dw EggStatsInit ; egg + dw $5de6 + dw $5dac + dw $5dc6 + dw $5de6 + dw $5dd6 + dw $5d6c -Tileset08PalMap: ; 0x4c315 -INCBIN "tilesets/08_palette_map.bin" -; 0x4c385 +; 4dd3a -Tileset09PalMap: ; 0x4c385 -INCBIN "tilesets/09_palette_map.bin" -; 0x4c3f5 +INCBIN "baserom.gbc", $4dd3a, $4dda1 - $4dd3a -Tileset10PalMap: ; 0x4c3f5 -INCBIN "tilesets/10_palette_map.bin" -; 0x4c465 +EggStatsInit: ; 4dda1 + call EggStatsScreen + ld a, [$cf63] + inc a + ld [$cf63], a + ret +; 0x4ddac -Tileset11PalMap: ; 0x4c465 -INCBIN "tilesets/11_palette_map.bin" -; 0x4c4d5 +INCBIN "baserom.gbc", $4ddac, $4e21e - $4ddac -Tileset12PalMap: ; 0x4c4d5 -INCBIN "tilesets/12_palette_map.bin" -; 0x4c545 +IDNoString: ; 4e21e + db $73, "№.@" -Tileset13PalMap: ; 0x4c545 -INCBIN "tilesets/13_palette_map.bin" -; 0x4c5b5 +OTString: ; 4e222 + db "OT/@" +; 4e226 -Tileset14PalMap: ; 0x4c5b5 -INCBIN "tilesets/14_palette_map.bin" -; 0x4c625 +INCBIN "baserom.gbc", $4e226, $4e33a - $4e226 -Tileset15PalMap: ; 0x4c625 -INCBIN "tilesets/15_palette_map.bin" -; 0x4c695 +EggStatsScreen: ; 4e33a + xor a + ld [hBGMapMode], a + ld hl, $cda1 + call SetHPPal + ld b, $3 + call GetSGBLayout + call $5f8f + ld de, EggString + hlcoord 8, 1 ; $c4bc + call PlaceString + ld de, IDNoString + hlcoord 8, 3 ; $c4e4 + call PlaceString + ld de, OTString + hlcoord 8, 5 ; $c50c + call PlaceString + ld de, FiveQMarkString + hlcoord 11, 3 ; $c4e7 + call PlaceString + ld de, FiveQMarkString + hlcoord 11, 5 ; $c50f + 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 ; $c555 + call PlaceString + ld hl, $cf64 + set 5, [hl] + call Function32f9 ; pals + call DelayFrame + ld hl, TileMap + call $3786 + ld a, $41 + ld hl, $402d + rst FarCall + call $6497 -Tileset16PalMap: ; 0x4c695 -INCBIN "tilesets/16_palette_map.bin" -; 0x4c705 + ld a, [TempMonHappiness] + cp 6 + ret nc + ld de, SFX_2_BOOPS + call StartSFX + ret +; 0x4e3c0 -Tileset23PalMap: ; 0x4c705 -INCBIN "tilesets/23_palette_map.bin" -; 0x4c775 +EggString: ; 4e3c0 + db "EGG@" -Tileset24PalMap: ; 0x4c775 -Tileset30PalMap: ; 0x4c775 -INCBIN "tilesets/30_palette_map.bin" -; 0x4c7e5 +FiveQMarkString: ; 4e3c4 + db "?????@" -Tileset25PalMap: ; 0x4c7e5 -INCBIN "tilesets/25_palette_map.bin" -; 0x4c855 +EggSoonString: ; 0x4e3ca + db "It's making sounds", $4e, "inside. It's going", $4e, "to hatch soon!@" -Tileset26PalMap: ; 0x4c855 -Tileset32PalMap: ; 0x4c855 -Tileset33PalMap: ; 0x4c855 -Tileset34PalMap: ; 0x4c855 -Tileset35PalMap: ; 0x4c855 -Tileset36PalMap: ; 0x4c855 -INCBIN "tilesets/36_palette_map.bin" -; 0x4c8c5 +EggCloseString: ; 0x4e3fd + db "It moves around", $4e, "inside sometimes.", $4e, "It must be close", $4e, "to hatching.@" -Tileset27PalMap: ; 0x4c8c5 -INCBIN "tilesets/27_palette_map.bin" -; 0x4c935 +EggMoreTimeString: ; 0x4e43d + db "Wonder what's", $4e, "inside? It needs", $4e, "more time, though.@" -Tileset17PalMap: ; 0x4c935 -INCBIN "tilesets/17_palette_map.bin" -; 0x4c9a5 +EggALotMoreTimeString: ; 0x4e46e + db "This EGG needs a", $4e, "lot more time to", $4e, "hatch.@" -Tileset28PalMap: ; 0x4c9a5 -INCBIN "tilesets/28_palette_map.bin" -; 0x4ca15 +; 0x4e497 -Tileset18PalMap: ; 0x4ca15 -INCBIN "tilesets/18_palette_map.bin" -; 0x4ca85 +INCBIN "baserom.gbc", $4e497, $4e53f - $4e497 -Tileset19PalMap: ; 0x4ca85 -INCBIN "tilesets/19_palette_map.bin" -; 0x4caf5 -Tileset20PalMap: ; 0x4caf5 -INCBIN "tilesets/20_palette_map.bin" -; 0x4cb65 +Function4e53f: ; 4e53f + ld hl, $0022 + add hl, bc + ld a, [hli] + or [hl] + jr z, .asm_4e552 + ld hl, $0020 + add hl, bc + ld a, [hl] + and $27 + jr nz, .asm_4e552 + and a + ret -INCBIN "baserom.gbc", $4cb65, $4cbd5-$4cb65 +.asm_4e552 + scf + ret +; 4e554 -Tileset29PalMap: ; 0x4cbd5 -INCBIN "tilesets/29_palette_map.bin" -; 0x4cc45 +INCBIN "baserom.gbc", $4e554, $4e5e1 - $4e554 -Tileset31PalMap: ; 0x4cc45 -INCBIN "tilesets/31_palette_map.bin" -; 0x4ccb5 -Tileset21PalMap: ; 0x4ccb5 -INCBIN "tilesets/21_palette_map.bin" -; 0x4cd25 +Function4e5e1: ; 4e5e1 + push hl + push de + push bc + ld a, [CurSpecies] + push af + ld a, [rOBP0] + push af + ld a, [BaseDexNo] + push af + call $6607 + pop af + ld [BaseDexNo], a + pop af + ld [rOBP0], a + pop af + ld [CurSpecies], a + pop bc + pop de + pop hl + ld a, [$d1ed] + and a + ret z + scf + ret +; 4e607 -Tileset22PalMap: ; 0x4cd25 -INCBIN "tilesets/22_palette_map.bin" -; 0x4cd95 +Function4e607: ; 4e607 + ld a, $e4 + ld [rOBP0], a + ld de, $0000 + call StartMusic + callba Function8cf53 + ld de, $6831 + ld hl, VTiles0 + ld bc, $1308 + call Functioneba + xor a + ld [Danger], a + call WaitBGMap + xor a + ld [hBGMapMode], a + ld a, [MagikarpLength] + ld [PlayerHPPal], a + ld c, $0 + call $6703 + ld a, [MagikarpLength] + ld [CurPartySpecies], a + ld [CurSpecies], a + call $6708 + ld de, VTiles2 + ld hl, $9310 + ld bc, $0031 + call Functioneba + ld a, $31 + ld [$d1ec], a + call $6755 + ld a, [Buffer2] + ld [CurPartySpecies], a + ld [CurSpecies], a + call $6711 + ld a, [MagikarpLength] + ld [CurPartySpecies], a + ld [CurSpecies], a + ld a, $1 + ld [hBGMapMode], a + call $6794 + jr c, .asm_4e67c + ld a, [MagikarpLength] + call $37ce -Tileset04PalMap: ; 0x4cd95 -INCBIN "tilesets/04_palette_map.bin" -; 0x4ce05 +.asm_4e67c + ld de, $0022 + call StartMusic + ld c, $50 + call DelayFrames + ld c, $1 + call $6703 + call $6726 + jr c, .asm_4e6df + ld a, $cf + ld [$d1ec], a + call $6755 + xor a + ld [$d1ed], a + ld a, [Buffer2] + ld [PlayerHPPal], a + ld c, $0 + call $6703 + call $67a6 + callba Function8cf53 + call $6794 + jr c, .asm_4e6de + ld a, [$c2c6] + push af + ld a, $1 + ld [$c2c6], a + ld a, [CurPartySpecies] + push af + ld a, [PlayerHPPal] + ld [CurPartySpecies], a + ld hl, $c4cf + ld d, $0 + ld e, $4 + ld a, $47 + call Predef + pop af + ld [CurPartySpecies], a + pop af + ld [$c2c6], a + ret -INCBIN "baserom.gbc", $4ce05, $4ce1f - $4ce05 +.asm_4e6de + ret -TileTypeTable: ; 4ce1f -; 256 tiletypes -; 00 = land -; 01 = water - db $00, $00, $00, $00, $00, $00, $00, $0f - db $00, $00, $00, $00, $00, $00, $00, $0f - db $00, $00, $1f, $00, $00, $1f, $00, $00 - db $00, $00, $1f, $00, $00, $1f, $00, $00 - db $01, $01, $11, $00, $11, $01, $01, $0f - db $01, $01, $11, $00, $11, $01, $01, $0f - db $01, $01, $01, $01, $01, $01, $01, $01 - db $01, $01, $01, $01, $01, $01, $01, $01 - - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $0f, $00, $00, $00, $00, $00 - db $00, $00, $0f, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - - db $0f, $0f, $0f, $0f, $0f, $00, $00, $00 - db $0f, $0f, $0f, $0f, $0f, $00, $00, $00 - db $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f - db $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - - db $01, $01, $01, $01, $01, $01, $01, $01 - db $01, $01, $01, $01, $01, $01, $01, $01 - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $00 - db $00, $00, $00, $00, $00, $00, $00, $0f -; 4cf1f +.asm_4e6df + ld a, $1 + ld [$d1ed], a + ld a, [MagikarpLength] + ld [PlayerHPPal], a + ld c, $0 + call $6703 + call $67a6 + callba Function8cf53 + call $6794 + ret c + ld a, [PlayerHPPal] + call $37ce + ret +; 4e703 -INCBIN "baserom.gbc", $4cf1f, $4d596 - $4cf1f +Function4e703: ; 4e703 + ld b, $b + jp GetSGBLayout +; 4e708 -Tilesets: +Function4e708: ; 4e708 + call GetBaseData + ld hl, $c4cf + jp $3786 +; 4e711 -Tileset00: ; 0x4d596 - dbw BANK(Tileset00GFX), Tileset00GFX - dbw BANK(Tileset00Meta), Tileset00Meta - dbw BANK(Tileset00Coll), Tileset00Coll - dw Tileset00Anim - dw $0000 - dw Tileset00PalMap +Function4e711: ; 4e711 + call GetBaseData + ld a, $1 + ld [$c2c6], a + ld de, VTiles2 + ld a, $3e + call Predef + xor a + ld [$c2c6], a + ret +; 4e726 -Tileset01: ; 0x4d5a5 - dbw BANK(Tileset01GFX), Tileset01GFX - dbw BANK(Tileset01Meta), Tileset01Meta - dbw BANK(Tileset01Coll), Tileset01Coll - dw Tileset01Anim - dw $0000 - dw Tileset01PalMap +Function4e726: ; 4e726 + call ClearJoypadPublic + ld bc, $010e +.asm_4e72c + push bc + call $6779 + pop bc + jr c, .asm_4e73f + push bc + call $6741 + pop bc + inc b + dec c + dec c + jr nz, .asm_4e72c + and a + ret -Tileset02: ; 0x4d5b4 - dbw BANK(Tileset02GFX), Tileset02GFX - dbw BANK(Tileset02Meta), Tileset02Meta - dbw BANK(Tileset02Coll), Tileset02Coll - dw Tileset02Anim - dw $0000 - dw Tileset02PalMap +.asm_4e73f + scf + ret +; 4e741 -Tileset03: ; 0x4d5c3 - dbw BANK(Tileset03GFX), Tileset03GFX - dbw BANK(Tileset03Meta), Tileset03Meta - dbw BANK(Tileset03Coll), Tileset03Coll - dw Tileset03Anim - dw $0000 - dw Tileset03PalMap +Function4e741: ; 4e741 +.asm_4e741 + ld a, $cf + ld [$d1ec], a + call $6755 + ld a, $31 + ld [$d1ec], a + call $6755 + dec b + jr nz, .asm_4e741 + ret +; 4e755 -Tileset04: ; 0x4d5d2 - dbw BANK(Tileset04GFX), Tileset04GFX - dbw BANK(Tileset04Meta), Tileset04Meta - dbw BANK(Tileset04Coll), Tileset04Coll - dw Tileset04Anim - dw $0000 - dw Tileset04PalMap +Function4e755: ; 4e755 + push bc + xor a + ld [hBGMapMode], a + ld hl, $c4cf + ld bc, $0707 + ld de, $000d +.asm_4e762 + push bc +.asm_4e763 + ld a, [$d1ec] + add [hl] + ld [hli], a + dec c + jr nz, .asm_4e763 + pop bc + add hl, de + dec b + jr nz, .asm_4e762 + ld a, $1 + ld [hBGMapMode], a + call WaitBGMap + pop bc + ret +; 4e779 -Tileset05: ; 0x4d5e1 - dbw BANK(Tileset05GFX), Tileset05GFX - dbw BANK(Tileset05Meta), Tileset05Meta - dbw BANK(Tileset05Coll), Tileset05Coll - dw Tileset05Anim - dw $0000 - dw Tileset05PalMap +Function4e779: ; 4e779 +.asm_4e779 + call DelayFrame + push bc + call Functiona57 + ld a, [hJoyDown] + pop bc + and $2 + jr nz, .asm_4e78c +.asm_4e787 + dec c + jr nz, .asm_4e779 + and a + ret -Tileset06: ; 0x4d5f0 - dbw BANK(Tileset06GFX), Tileset06GFX - dbw BANK(Tileset06Meta), Tileset06Meta - dbw BANK(Tileset06Coll), Tileset06Coll - dw Tileset06Anim - dw $0000 - dw Tileset06PalMap +.asm_4e78c + ld a, [$d1e9] + and a + jr nz, .asm_4e787 + scf + ret +; 4e794 -Tileset07: ; 0x4d5ff - dbw BANK(Tileset07GFX), Tileset07GFX - dbw BANK(Tileset07Meta), Tileset07Meta - dbw BANK(Tileset07Coll), Tileset07Coll - dw Tileset07Anim - dw $0000 - dw Tileset07PalMap +Function4e794: ; 4e794 + ld a, [CurPartyMon] + ld hl, PartyMon1Species + call GetPartyLocation + ld b, h + ld c, l + ld a, $13 + ld hl, $653f + rst FarCall + ret +; 4e7a6 -Tileset08: ; 0x4d60e - dbw BANK(Tileset08GFX), Tileset08GFX - dbw BANK(Tileset08Meta), Tileset08Meta - dbw BANK(Tileset08Coll), Tileset08Coll - dw Tileset08Anim - dw $0000 - dw Tileset08PalMap +Function4e7a6: ; 4e7a6 + ld a, [$d1ed] + and a + ret nz + ld de, $00a4 + call StartSFX + ld hl, $cf63 + ld a, [hl] + push af + ld [hl], $0 +.asm_4e7b8 + call $67cf + jr nc, .asm_4e7c2 + call $680c + jr .asm_4e7b8 -Tileset09: ; 0x4d61d - dbw BANK(Tileset09GFX), Tileset09GFX - dbw BANK(Tileset09Meta), Tileset09Meta - dbw BANK(Tileset09Coll), Tileset09Coll - dw Tileset09Anim - dw $0000 - dw Tileset09PalMap +.asm_4e7c2 + ld c, $20 +.asm_4e7c4 + call $680c + dec c + jr nz, .asm_4e7c4 + pop af + ld [$cf63], a + ret +; 4e7cf -Tileset10: ; 0x4d62c - dbw BANK(Tileset10GFX), Tileset10GFX - dbw BANK(Tileset10Meta), Tileset10Meta - dbw BANK(Tileset10Coll), Tileset10Coll - dw Tileset10Anim - dw $0000 - dw Tileset10PalMap +Function4e7cf: ; 4e7cf + ld hl, $cf63 + ld a, [hl] + cp $20 + ret nc + ld d, a + inc [hl] + and $1 + jr nz, .asm_4e7e6 + ld e, $0 + call $67e8 + ld e, $10 + call $67e8 -Tileset11: ; 0x4d63b - dbw BANK(Tileset11GFX), Tileset11GFX - dbw BANK(Tileset11Meta), Tileset11Meta - dbw BANK(Tileset11Coll), Tileset11Coll - dw Tileset11Anim - dw $0000 - dw Tileset11PalMap +.asm_4e7e6 + scf + ret +; 4e7e8 -Tileset12: ; 0x4d64a - dbw BANK(Tileset12GFX), Tileset12GFX - dbw BANK(Tileset12Meta), Tileset12Meta - dbw BANK(Tileset12Coll), Tileset12Coll - dw Tileset12Anim - dw $0000 - dw Tileset12PalMap +Function4e7e8: ; 4e7e8 + push de + ld de, $4858 + ld a, $13 + call Function3b2a + ld hl, $000b + add hl, bc + ld a, [$cf63] + and $e + sla a + pop de + add e + ld [hl], a + ld hl, $0003 + add hl, bc + ld [hl], $0 + ld hl, $000c + add hl, bc + ld [hl], $10 + ret +; 4e80c -Tileset13: ; 0x4d659 - dbw BANK(Tileset13GFX), Tileset13GFX - dbw BANK(Tileset13Meta), Tileset13Meta - dbw BANK(Tileset13Coll), Tileset13Coll - dw Tileset13Anim - dw $0000 - dw Tileset13PalMap +Function4e80c: ; 4e80c + push bc + callab Function8cf69 + ld a, [$ff9b] + and $e + srl a + inc a + inc a + and $7 + ld b, a + ld hl, $c403 + ld c, $28 +.asm_4e823 + ld a, [hl] + or b + ld [hli], a + inc hl + inc hl + inc hl + dec c + jr nz, .asm_4e823 + pop bc + call DelayFrame + ret +; 4e831 -Tileset14: ; 0x4d668 - dbw BANK(Tileset14GFX), Tileset14GFX - dbw BANK(Tileset14Meta), Tileset14Meta - dbw BANK(Tileset14Coll), Tileset14Coll - dw Tileset14Anim - dw $0000 - dw Tileset14PalMap -Tileset15: ; 0x4d677 - dbw BANK(Tileset15GFX), Tileset15GFX - dbw BANK(Tileset15Meta), Tileset15Meta - dbw BANK(Tileset15Coll), Tileset15Coll - dw Tileset15Anim - dw $0000 - dw Tileset15PalMap +EvolutionGFX: +INCBIN "gfx/evo/bubble_large.2bpp" +INCBIN "gfx/evo/bubble.2bpp" -Tileset16: ; 0x4d686 - dbw BANK(Tileset16GFX), Tileset16GFX - dbw BANK(Tileset16Meta), Tileset16Meta - dbw BANK(Tileset16Coll), Tileset16Coll - dw Tileset16Anim - dw $0000 - dw Tileset16PalMap +Function4e881: ; 4e881 + call WhiteBGMap + call ClearTileMap + call ClearSprites + call DisableLCD + call $0e51 + call $0e58 + ld hl, VBGMap0 + ld bc, VBlank5 + ld a, $7f + call ByteFill + ld hl, AttrMap + ld bc, $0168 + xor a + call ByteFill + xor a + ld [$ffd0], a + ld [$ffcf], a + call EnableLCD + ld hl, $68bd + call PrintText + call Function3200 + call Function32f9 + ret +; 4e8bd -Tileset17: ; 0x4d695 - dbw BANK(Tileset17GFX), Tileset17GFX - dbw BANK(Tileset17Meta), Tileset17Meta - dbw BANK(Tileset17Coll), Tileset17Coll - dw Tileset17Anim - dw $0000 - dw Tileset17PalMap +INCBIN "baserom.gbc", $4e8bd, $4e8c2 - $4e8bd -Tileset18: ; 0x4d6a4 - dbw BANK(Tileset18GFX), Tileset18GFX - dbw BANK(Tileset18Meta), Tileset18Meta - dbw BANK(Tileset18Coll), Tileset18Coll - dw Tileset18Anim - dw $0000 - dw Tileset18PalMap -Tileset19: ; 0x4d6b3 - dbw BANK(Tileset19GFX), Tileset19GFX - dbw BANK(Tileset19Meta), Tileset19Meta - dbw BANK(Tileset19Coll), Tileset19Coll - dw Tileset19Anim - dw $0000 - dw Tileset19PalMap +Function4e8c2: ; 4e8c2 + call WhiteBGMap + call ClearTileMap + call ClearSprites + call DisableLCD + call $0e51 + call $0e58 + ld hl, VBGMap0 + ld bc, VBlank5 + ld a, $7f + call ByteFill + ld hl, AttrMap + ld bc, $0168 + xor a + call ByteFill + ld hl, $d000 + ld c, $40 +.asm_4e8ee + ld a, $ff + ld [hli], a + ld a, $7f + ld [hli], a + dec c + jr nz, .asm_4e8ee + xor a + ld [$ffd0], a + ld [$ffcf], a + call EnableLCD + call Function3200 + call Function32f9 + ret +; 4e906 -Tileset20: ; 0x4d6c2 - dbw BANK(Tileset20GFX), Tileset20GFX - dbw BANK(Tileset20Meta), Tileset20Meta - dbw BANK(Tileset20Coll), Tileset20Coll - dw Tileset20Anim - dw $0000 - dw Tileset20PalMap +Function4e906: ; 4e906 + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + ld hl, $d000 + ld bc, VBlank5 + ld a, $7f + call ByteFill + ld hl, VBGMap0 + ld de, $d000 + ld b, $0 + ld c, $40 + call Functioneba + pop af + ld [rSVBK], a + ret +; 4e929 -Tileset21: ; 0x4d6d1 - dbw BANK(Tileset21GFX), Tileset21GFX - dbw BANK(Tileset21Meta), Tileset21Meta - dbw BANK(Tileset21Coll), Tileset21Coll - dw Tileset21Anim - dw $0000 - dw Tileset21PalMap +INCBIN "baserom.gbc", $4e929, $4ea82 - $4e929 -Tileset22: ; 0x4d6e0 - dbw BANK(Tileset22GFX), Tileset22GFX - dbw BANK(Tileset22Meta), Tileset22Meta - dbw BANK(Tileset22Coll), Tileset22Coll - dw Tileset22Anim - dw $0000 - dw Tileset22PalMap -Tileset23: ; 0x4d6ef - dbw BANK(Tileset23GFX), Tileset23GFX - dbw BANK(Tileset23Meta), Tileset23Meta - dbw BANK(Tileset23Coll), Tileset23Coll - dw Tileset23Anim - dw $0000 - dw Tileset23PalMap +Function4ea82: ; 4ea82 + ld a, [hCGB] + and a + ret nz + ld de, $0000 + call StartMusic + call ClearTileMap + ld hl, $6b76 + ld de, $d000 + ld a, [rSVBK] + push af + ld a, $0 + ld [rSVBK], a + call Decompress + pop af + ld [rSVBK], a + ld de, $d000 + ld hl, VTiles2 + ld bc, Text_1354 + call Functionf82 + ld de, $4200 + ld hl, VTiles1 + ld bc, $3e80 + call Functionf9d + call Function4eac5 + call WaitBGMap +.asm_4eac0 + call DelayFrame + jr .asm_4eac0 +; 4eac5 -Tileset24: ; 0x4d6fe - dbw BANK(Tileset24GFX), Tileset24GFX - dbw BANK(Tileset24Meta), Tileset24Meta - dbw BANK(Tileset24Coll), Tileset24Coll - dw Tileset24Anim - dw $0000 - dw Tileset24PalMap +Function4eac5: ; 4eac5 + call Function4eaea + ld hl, $c4cb + ld b, $e + ld c, $4 + ld a, $8 + call Function4eb27 + ld hl, $c51d + ld b, $a + ld c, $2 + ld a, $40 + call Function4eb27 + ld de, $6b38 + ld hl, $c569 + call PlaceString + ret +; 4eaea -Tileset25: ; 0x4d70d - dbw BANK(Tileset25GFX), Tileset25GFX - dbw BANK(Tileset25Meta), Tileset25Meta - dbw BANK(Tileset25Coll), Tileset25Coll - dw Tileset25Anim - dw $0000 - dw Tileset25PalMap +Function4eaea: ; 4eaea + ld hl, TileMap + ld [hl], $0 + inc hl + ld a, $1 + call Function4eb15 + ld [hl], $2 + ld hl, $c4b4 + ld a, $3 + call Function4eb1c + ld hl, $c4c7 + ld a, $4 + call Function4eb1c + ld hl, $c5f4 + ld [hl], $5 + inc hl + ld a, $6 + call Function4eb15 + ld [hl], $7 + ret +; 4eb15 -Tileset26: ; 0x4d71c - dbw BANK(Tileset26GFX), Tileset26GFX - dbw BANK(Tileset26Meta), Tileset26Meta - dbw BANK(Tileset26Coll), Tileset26Coll - dw Tileset26Anim - dw $0000 - dw Tileset26PalMap +Function4eb15: ; 4eb15 + ld c, $12 +.asm_4eb17 + ld [hli], a + dec c + jr nz, .asm_4eb17 + ret +; 4eb1c -Tileset27: ; 0x4d72b - dbw BANK(Tileset27GFX), Tileset27GFX - dbw BANK(Tileset27Meta), Tileset27Meta - dbw BANK(Tileset27Coll), Tileset27Coll - dw Tileset27Anim - dw $0000 - dw Tileset27PalMap +Function4eb1c: ; 4eb1c + ld de, $0014 + ld c, $10 +.asm_4eb21 + ld [hl], a + add hl, de + dec c + jr nz, .asm_4eb21 + ret +; 4eb27 -Tileset28: ; 0x4d73a - dbw BANK(Tileset28GFX), Tileset28GFX - dbw BANK(Tileset28Meta), Tileset28Meta - dbw BANK(Tileset28Coll), Tileset28Coll - dw Tileset28Anim - dw $0000 - dw Tileset28PalMap +Function4eb27: ; 4eb27 + ld de, $0014 +.asm_4eb2a + push bc + push hl +.asm_4eb2c + ld [hli], a + inc a + dec b + jr nz, .asm_4eb2c + pop hl + add hl, de + pop bc + dec c + jr nz, .asm_4eb2a + ret +; 4eb38 -Tileset29: ; 0x4d749 - dbw BANK(Tileset29GFX), Tileset29GFX - dbw BANK(Tileset29Meta), Tileset29Meta - dbw BANK(Tileset29Coll), Tileset29Coll - dw Tileset29Anim - dw $0000 - dw Tileset29PalMap +INCBIN "baserom.gbc", $4eb38, $4f301 - $4eb38 -Tileset30: ; 0x4d758 - dbw BANK(Tileset30GFX), Tileset30GFX - dbw BANK(Tileset30Meta), Tileset30Meta - dbw BANK(Tileset30Coll), Tileset30Coll - dw Tileset30Anim - dw $0000 - dw Tileset30PalMap -Tileset31: ; 0x4d767 - dbw BANK(Tileset31GFX), Tileset31GFX - dbw BANK(Tileset31Meta), Tileset31Meta - dbw BANK(Tileset31Coll), Tileset31Coll - dw Tileset31Anim - dw $0000 - dw Tileset31PalMap +Function4f301: ; 4f301 + ld hl, $001e + add hl, bc + ld a, [hl] + and $7f + jr z, .asm_4f319 + cp $7f + jr z, .asm_4f319 + ld a, [hl] + and $80 + jr nz, .asm_4f316 + ld c, $1 + ret -Tileset32: ; 0x4d776 - dbw BANK(Tileset32GFX), Tileset32GFX - dbw BANK(Tileset32Meta), Tileset32Meta - dbw BANK(Tileset32Coll), Tileset32Coll - dw Tileset32Anim - dw $0000 - dw Tileset32PalMap +.asm_4f316 + ld c, $2 + ret -Tileset33: ; 0x4d785 - dbw BANK(Tileset33GFX), Tileset33GFX - dbw BANK(Tileset33Meta), Tileset33Meta - dbw BANK(Tileset33Coll), Tileset33Coll - dw Tileset33Anim - dw $0000 - dw Tileset33PalMap +.asm_4f319 + ld c, $0 + ret +; 4f31c -Tileset34: ; 0x4d794 - dbw BANK(Tileset34GFX), Tileset34GFX - dbw BANK(Tileset34Meta), Tileset34Meta - dbw BANK(Tileset34Coll), Tileset34Coll - dw Tileset34Anim - dw $0000 - dw Tileset34PalMap -Tileset35: ; 0x4d7a3 - dbw BANK(Tileset35GFX), Tileset35GFX - dbw BANK(Tileset35Meta), Tileset35Meta - dbw BANK(Tileset35Coll), Tileset35Coll - dw Tileset35Anim - dw $0000 - dw Tileset35PalMap -Tileset36: ; 0x4d7b2 - dbw BANK(Tileset36GFX), Tileset36GFX - dbw BANK(Tileset36Meta), Tileset36Meta - dbw BANK(Tileset36Coll), Tileset36Coll - dw Tileset36Anim - dw $0000 - dw Tileset36PalMap +SECTION "bank14",DATA,BANK[$14] -; 0x4d7c1 +INCBIN "baserom.gbc", $50000, $5001d - $50000 -INCBIN "baserom.gbc", $4d7c1, $4d860 - $4d7c1 -CheckPokerus: ; 4d860 -; Return carry if a monster in your party has Pokerus +Function5001d: ; 5001d + ld a, b + ld [PartyMenuActionText], a + call Function2ed3 + call WhiteBGMap + call $403f + call WaitBGMap + ld b, $a + call GetSGBLayout + call Function32f9 + call DelayFrame + call PartyMenuSelect + call Function2b74 + ret +; 5003f -; Get number of monsters to iterate over - ld a, [PartyCount] - and a - jr z, .NoPokerus - ld b, a -; Check each monster in the party for Pokerus - ld hl, PartyMon1PokerusStatus - ld de, PartyMon2 - PartyMon1 -.Check - ld a, [hl] - and $0f ; only the bottom nybble is used - jr nz, .HasPokerus -; Next PartyMon - add hl, de - dec b - jr nz, .Check -.NoPokerus - and a +Function5003f: ; 5003f + call $404f + call $4405 + call $43e0 + call WritePartyMenuTilemap + call PrintPartyMenuText ret -.HasPokerus - scf +; 5004f + +Function5004f: ; 5004f + call $0e58 + ld hl, $4ad1 + ld a, $2 + rst FarCall + ld hl, $6814 + ld a, $23 + rst FarCall ret -; 4d87a +; 5005f -INCBIN "baserom.gbc", $4d87a, $4dc8a - $4d87a -StatsScreenInit: ; 4dc8a - ld hl, StatsScreenMain - jr .gotaddress - ld hl, $5cf7 - jr .gotaddress -.gotaddress - ld a, [$ffde] +WritePartyMenuTilemap: ; 0x5005f + ld hl, Options + ld a, [hl] push af + set 4, [hl] ; Disable text delay xor a - ld [$ffde], a ; disable overworld tile animations - ld a, [$c2c6] ; whether sprite is to be mirrorred - push af - ld a, [$cf63] - ld b, a - ld a, [$cf64] - ld c, a - push bc + ld [hBGMapMode], a + ld hl, TileMap + ld bc, $0168 + ld a, " " + call ByteFill ; blank the tilemap + call $4396 ; This reads from a pointer table??? +.asm_50077 + ld a, [hli] + cp $ff + jr z, .asm_50084 ; 0x5007a $8 push hl - call WhiteBGMap - call ClearTileMap - call $1ad2 - ld a, $3e - ld hl, $753e - rst FarCall ; this loads graphics + ld hl, $4089 + rst JumpTable pop hl - call JpHl - call WhiteBGMap - call ClearTileMap - pop bc - ; restore old values - ld a, b - ld [$cf63], a - ld a, c - ld [$cf64], a - pop af - ld [$c2c6], a + jr .asm_50077 ; 0x50082 $f3 +.asm_50084 pop af - ld [$ffde], a - ret -; 0x4dcd2 - -StatsScreenMain: ; 0x4dcd2 - xor a - ld [$cf63], a - ld [$cf64], a - ld a, [$cf64] - and $fc - or $1 - ld [$cf64], a -.loop ; 4dce3 - ld a, [$cf63] - and $7f - ld hl, StatsScreenPointerTable - rst JumpTable - call $5d3a ; check for keys? - ld a, [$cf63] - bit 7, a - jr z, .loop + ld [Options], a ret -; 0x4dcf7 - -INCBIN "baserom.gbc", $4dcf7, $4dd2a - $4dcf7 +; 0x50089 -StatsScreenPointerTable: ; 4dd2a - dw $5d72 ; regular pokémon - dw EggStatsInit ; egg - dw $5de6 - dw $5dac - dw $5dc6 - dw $5de6 - dw $5dd6 - dw $5d6c +INCBIN "baserom.gbc", $50089, $500cf - $50089 -; 4dd3a -INCBIN "baserom.gbc", $4dd3a, $4dda1 - $4dd3a +Function500cf: ; 500cf + xor a + ld [$cda9], a + ld a, [PartyCount] + and a + ret z + ld c, a + ld b, $0 + ld hl, $c4d3 +.asm_500de + push bc + push hl + call $4389 + jr z, .asm_50103 + push hl + call $4117 + pop hl + ld d, $6 + ld b, $0 + call $3750 + ld hl, $cd9b + ld a, [$cda9] + ld c, a + ld b, $0 + add hl, bc + call SetHPPal + ld b, $fc + call GetSGBLayout -EggStatsInit: ; 4dda1 - call EggStatsScreen - ld a, [$cf63] - inc a - ld [$cf63], a +.asm_50103 + ld hl, $cda9 + inc [hl] + pop hl + ld de, $0028 + add hl, de + pop bc + inc b + dec c + jr nz, .asm_500de + ld b, $a + call GetSGBLayout ret -; 0x4ddac - -INCBIN "baserom.gbc", $4ddac, $4e21e - $4ddac - -IDNoString: ; 4e21e - db $73, "№.@" +; 50117 -OTString: ; 4e222 - db "OT/@" -; 4e226 +Function50117: ; 50117 + ld a, b + ld bc, $0030 + ld hl, PartyMon1CurHP + call AddNTimes + ld a, [hli] + or [hl] + jr nz, .asm_50129 + xor a + ld e, a + ld c, a + ret -INCBIN "baserom.gbc", $4e226, $4e33a - $4e226 +.asm_50129 + dec hl + ld a, [hli] + ld b, a + ld a, [hli] + ld c, a + ld a, [hli] + ld d, a + ld a, [hli] + ld e, a + ld a, $4 + call Predef + ret +; 50138 -EggStatsScreen: ; 4e33a - xor a - ld [hBGMapMode], a - ld hl, $cda1 - call SetHPPal - ld b, $3 - call GetSGBLayout - call $5f8f - ld de, EggString - hlcoord 8, 1 ; $c4bc - call PlaceString - ld de, IDNoString - hlcoord 8, 3 ; $c4e4 - call PlaceString - ld de, OTString - hlcoord 8, 5 ; $c50c - call PlaceString - ld de, FiveQMarkString - hlcoord 11, 3 ; $c4e7 - call PlaceString - ld de, FiveQMarkString - hlcoord 11, 5 ; $c50f - 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 ; $c555 - call PlaceString - ld hl, $cf64 - set 5, [hl] - call Function32f9 ; pals - call DelayFrame - ld hl, TileMap - call $3786 - ld a, $41 - ld hl, $402d - rst FarCall - call $6497 +Function50138: ; 50138 + ld a, [PartyCount] + and a + ret z + ld c, a + ld b, $0 + ld hl, $c4c1 +.asm_50143 + push bc + push hl + call $4389 + jr z, .asm_5016b + push hl + ld a, b + ld bc, $0030 + ld hl, PartyMon1CurHP + call AddNTimes + ld e, l + ld d, h + pop hl + push de + ld bc, $0203 + call $3198 + pop de + ld a, $f3 + ld [hli], a + inc de + inc de + ld bc, $0203 + call $3198 - ld a, [TempMonHappiness] - cp 6 - ret nc - ld de, SFX_2_BOOPS - call StartSFX +.asm_5016b + pop hl + ld de, $0028 + add hl, de + pop bc + inc b + dec c + jr nz, .asm_50143 ret -; 0x4e3c0 +; 50176 -EggString: ; 4e3c0 - db "EGG@" +Function50176: ; 50176 + ld a, [PartyCount] + and a + ret z + ld c, a + ld b, $0 + ld hl, $c4d0 +.asm_50181 + push bc + push hl + call $4389 + jr z, .asm_501a7 + push hl + ld a, b + ld bc, $0030 + ld hl, PartyMon1Level + call AddNTimes + ld e, l + ld d, h + pop hl + ld a, [de] + cp $64 + jr nc, .asm_501a1 + ld a, $6e + ld [hli], a + ld bc, $4102 -FiveQMarkString: ; 4e3c4 - db "?????@" +.asm_501a1 + ld bc, $4103 + call $3198 -EggSoonString: ; 0x4e3ca - db "It's making sounds", $4e, "inside. It's going", $4e, "to hatch soon!@" +.asm_501a7 + pop hl + ld de, $0028 + add hl, de + pop bc + inc b + dec c + jr nz, .asm_50181 + ret +; 501b2 -EggCloseString: ; 0x4e3fd - db "It moves around", $4e, "inside sometimes.", $4e, "It must be close", $4e, "to hatching.@" +Function501b2: ; 501b2 + ld a, [PartyCount] + and a + ret z + ld c, a + ld b, $0 + ld hl, $c4cd +.asm_501bd + push bc + push hl + call $4389 + jr z, .asm_501d5 + push hl + ld a, b + ld bc, $0030 + ld hl, PartyMon1Status + call AddNTimes + ld e, l + ld d, h + pop hl + call $4d0a -EggMoreTimeString: ; 0x4e43d - db "Wonder what's", $4e, "inside? It needs", $4e, "more time, though.@" +.asm_501d5 + pop hl + ld de, $0028 + add hl, de + pop bc + inc b + dec c + jr nz, .asm_501bd + ret +; 501e0 -EggALotMoreTimeString: ; 0x4e46e - db "This EGG needs a", $4e, "lot more time to", $4e, "hatch.@" +Function501e0: ; 501e0 + ld a, [PartyCount] + and a + ret z + ld c, a + ld b, $0 + ld hl, $c4d4 +.asm_501eb + push bc + push hl + call $4389 + jr z, .asm_5020a + push hl + ld hl, PartySpecies + ld e, b + ld d, $0 + add hl, de + ld a, [hl] + ld [CurPartySpecies], a + ld a, $e + call Predef + pop hl + call $4215 + call PlaceString -; 0x4e497 +.asm_5020a + pop hl + ld de, $0028 + add hl, de + pop bc + inc b + dec c + jr nz, .asm_501eb + ret +; 50215 -INCBIN "baserom.gbc", $4e497, $4e831 - $4e497 +Function50215: ; 50215 + ld a, c + and a + jr nz, .asm_5021d + ld de, $4226 + ret -EvolutionGFX: -INCBIN "gfx/evo/bubble_large.2bpp" -INCBIN "gfx/evo/bubble.2bpp" +.asm_5021d + ld de, $4221 + ret +; 50221 -INCBIN "baserom.gbc", $4e881, $4ea82 - $4e881 +INCBIN "baserom.gbc", $50221, $5022f - $50221 -Function4ea82: ; 4ea82 - ld a, [hCGB] +Function5022f: ; 5022f + ld a, [PartyCount] and a - ret nz - ld de, $0000 - call StartMusic - call ClearTileMap - ld hl, $6b76 - ld de, $d000 - ld a, [rSVBK] - push af - ld a, $0 - ld [rSVBK], a - call Decompress - pop af - ld [rSVBK], a - ld de, $d000 - ld hl, VTiles2 - ld bc, Text_1354 - call Functionf82 - ld de, $4200 - ld hl, VTiles1 - ld bc, $3e80 - call Functionf9d - call Function4eac5 - call WaitBGMap -.asm_4eac0 - call DelayFrame - jr .asm_4eac0 -; 4eac5 - -Function4eac5: ; 4eac5 - call Function4eaea - ld hl, $c4cb - ld b, $e - ld c, $4 - ld a, $8 - call Function4eb27 - ld hl, $c51d - ld b, $a - ld c, $2 - ld a, $40 - call Function4eb27 - ld de, $6b38 - ld hl, $c569 + ret z + ld c, a + ld b, $0 + ld hl, $c4d4 +.asm_5023a + push bc + push hl + call $4389 + jr z, .asm_5025d + push hl + ld a, b + ld bc, $0030 + ld hl, PartyMon1Species + call AddNTimes + ld a, [hl] + dec a + ld e, a + ld d, $0 + ld hl, $65b1 + add hl, de + add hl, de + call $4268 + pop hl call PlaceString + +.asm_5025d + pop hl + ld de, $0028 + add hl, de + pop bc + inc b + dec c + jr nz, .asm_5023a ret -; 4eaea +; 50268 -Function4eaea: ; 4eaea - ld hl, TileMap - ld [hl], $0 +Function50268: ; 50268 + ld de, StringBuffer1 + ld a, $10 + ld bc, $0002 + call FarCopyBytes + ld hl, StringBuffer1 + ld a, [hli] + ld h, [hl] + ld l, a + ld de, StringBuffer1 + ld a, $10 + ld bc, $000a + call FarCopyBytes + ld hl, StringBuffer1 +.asm_50287 + ld a, [hli] + and a + jr z, .asm_5029f inc hl - ld a, $1 - call Function4eb15 - ld [hl], $2 - ld hl, $c4b4 - ld a, $3 - call Function4eb1c - ld hl, $c4c7 - ld a, $4 - call Function4eb1c - ld hl, $c5f4 - ld [hl], $5 inc hl - ld a, $6 - call Function4eb15 - ld [hl], $7 + cp $2 + jr nz, .asm_50287 + dec hl + dec hl + ld a, [CurItem] + cp [hl] + inc hl + inc hl + jr nz, .asm_50287 + ld de, $42a3 ret -; 4eb15 -Function4eb15: ; 4eb15 - ld c, $12 -.asm_4eb17 - ld [hli], a - dec c - jr nz, .asm_4eb17 +.asm_5029f + ld de, $42a8 ret -; 4eb1c +; 502a3 -Function4eb1c: ; 4eb1c - ld de, $0014 - ld c, $10 -.asm_4eb21 - ld [hl], a +INCBIN "baserom.gbc", $502a3, $502b1 - $502a3 + + +Function502b1: ; 502b1 + ld a, [PartyCount] + and a + ret z + ld c, a + ld b, $0 + ld hl, $c4d4 +.asm_502bc + push bc + push hl + call $4389 + jr z, .asm_502e3 + ld [CurPartySpecies], a + push hl + ld a, b + ld [CurPartyMon], a + xor a + ld [MonType], a + call GetGender + ld de, $42fe + jr c, .asm_502df + ld de, $42ee + jr nz, .asm_502df + ld de, $42f5 + +.asm_502df + pop hl + call PlaceString + +.asm_502e3 + pop hl + ld de, $0028 add hl, de + pop bc + inc b dec c - jr nz, .asm_4eb21 + jr nz, .asm_502bc ret -; 4eb27 +; 502ee -Function4eb27: ; 4eb27 - ld de, $0014 -.asm_4eb2a +INCBIN "baserom.gbc", $502ee, $50307 - $502ee + + +Function50307: ; 50307 + ld a, [PartyCount] + and a + ret z + ld c, a + ld b, $0 + ld hl, $c4c0 +.asm_50312 push bc push hl -.asm_4eb2c - ld [hli], a - inc a - dec b - jr nz, .asm_4eb2c + ld de, $4372 + call PlaceString pop hl + ld de, $0028 add hl, de pop bc + inc b dec c - jr nz, .asm_4eb2a + jr nz, .asm_50312 + ld a, l + ld e, $b + sub e + ld l, a + ld a, h + sbc $0 + ld h, a + ld de, $4379 + call PlaceString + ld b, $3 + ld c, $0 + ld hl, DefaultFlypoint + ld a, [hl] +.asm_5033b + push hl + push bc + ld hl, $c4c0 +.asm_50340 + and a + jr z, .asm_5034a + ld de, $0028 + add hl, de + dec a + jr .asm_50340 + +.asm_5034a + ld de, $436b + push hl + call PlaceString + pop hl + pop bc + push bc + push hl + ld a, c + ld hl, $4383 + call GetNthString + ld d, h + ld e, l + pop hl + call PlaceString + pop bc + pop hl + inc hl + ld a, [hl] + inc c + dec b + ret z + jr .asm_5033b +; 5036b + +INCBIN "baserom.gbc", $5036b, $50389 - $5036b + + +Function50389: ; 50389 + ld a, $d8 + add b + ld e, a + ld a, $dc + adc $0 + ld d, a + ld a, [de] + cp $fd ret -; 4eb38 +; 50396 -INCBIN "baserom.gbc", $4eb38, $4f31c - $4eb38 +Function50396: ; 50396 + ld a, [PartyMenuActionText] + and $f0 + jr nz, .asm_503ae + ld a, [PartyMenuActionText] + and $f + ld e, a + ld d, $0 + ld hl, $43b2 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ret +.asm_503ae + ld hl, $43c6 + ret +; 503b2 -SECTION "bank14",DATA,BANK[$14] +INCBIN "baserom.gbc", $503b2, $503e0 - $503b2 -INCBIN "baserom.gbc", $50000, $5005f-$50000 -WritePartyMenuTilemap: ; 0x5005f - ld hl, Options - ld a, [hl] - push af - set 4, [hl] ; Disable text delay - xor a - ld [hBGMapMode], a - ld hl, TileMap - ld bc, $0168 - ld a, " " - call ByteFill ; blank the tilemap - call $4396 ; This reads from a pointer table??? -.asm_50077 +Function503e0: ; 503e0 + ld hl, PartyCount ld a, [hli] - cp $ff - jr z, .asm_50084 ; 0x5007a $8 + and a + ret z + ld c, a + xor a + ld [hConnectedMapWidth], a +.asm_503ea + push bc push hl - ld hl, $4089 - rst JumpTable + ld hl, $683f + ld a, $23 + ld e, $0 + rst FarCall + ld a, [hConnectedMapWidth] + inc a + ld [hConnectedMapWidth], a pop hl - jr .asm_50077 ; 0x50082 $f3 -.asm_50084 - pop af - ld [Options], a + pop bc + dec c + jr nz, .asm_503ea + callab Function8cf69 ret -; 0x50089 +; 50405 + +Function50405: ; 50405 + xor a + ld [$d0e3], a + ld de, $444f + call $1bb1 + ld a, [PartyCount] + inc a + ld [$cfa3], a + dec a + ld b, a + ld a, [$d0d8] + and a + jr z, .asm_50422 + inc b + cp b + jr c, .asm_50424 + +.asm_50422 + ld a, $1 + +.asm_50424 + ld [$cfa9], a + ld a, $3 + ld [$cfa8], a + ret +; 5042d -INCBIN "baserom.gbc", $50089, $50457-$50089 +INCBIN "baserom.gbc", $5042d, $50457 - $5042d PartyMenuSelect: ; 0x50457 ; sets carry if exitted menu. @@ -22403,7 +35101,193 @@ GetGender: ; 50bdd ret ; 50c50 -INCBIN "baserom.gbc", $50c50, $5125d - $50c50 +INCBIN "baserom.gbc", $50c50, $50d0a - $50c50 + + +Function50d0a: ; 50d0a + push de + inc de + inc de + ld a, [de] + ld b, a + inc de + ld a, [de] + or b + pop de + jr nz, .asm_50d2e + push de + ld de, .data_50d21 + call $4d25 + pop de + ld a, $1 + and a + ret + +.data_50d21 + db $85 + db $8d + db $93 + db $50 + db $1a + db $13 + db $22 + db $1a + db $13 + db $22 + db $1a + db $77 + db $c9 + +.asm_50d2e + push de + ld a, [de] + ld de, $4d5f + bit 3, a + jr nz, .asm_50d53 + ld de, $4d63 + bit 4, a + jr nz, .asm_50d53 + ld de, $4d67 + bit 5, a + jr nz, .asm_50d53 + ld de, $4d6b + bit 6, a + jr nz, .asm_50d53 + ld de, $4d5b + and $7 + jr z, .asm_50d59 + +.asm_50d53 + call $4d25 + ld a, $1 + and a + +.asm_50d59 + pop de + ret +; 50d5b + +INCBIN "baserom.gbc", $50d5b, $50e47 - $50d5b + + +Function50e47: ; 50e47 + ld a, [BaseGrowthRate] + add a + add a + ld c, a + ld b, $0 + ld hl, $4efa + add hl, bc + call $4eed + ld a, d + ld [hMultiplier], a + call Multiply + ld a, [hl] + and $f0 + swap a + ld [hMultiplier], a + call Multiply + ld a, [hli] + and $f + ld [hMultiplier], a + ld b, $4 + call Divide + ld a, [hMultiplicand] + push af + ld a, [$ffb5] + push af + ld a, [$ffb6] + push af + call $4eed + ld a, [hl] + and $7f + ld [hMultiplier], a + call Multiply + ld a, [hMultiplicand] + push af + ld a, [$ffb5] + push af + ld a, [$ffb6] + push af + ld a, [hli] + push af + xor a + ld [hMultiplicand], a + ld [$ffb5], a + ld a, d + ld [$ffb6], a + ld a, [hli] + ld [hMultiplier], a + call Multiply + ld b, [hl] + ld a, [$ffb6] + sub b + ld [$ffb6], a + ld b, $0 + ld a, [$ffb5] + sbc b + ld [$ffb5], a + ld a, [hMultiplicand] + sbc b + ld [hMultiplicand], a + pop af + and $80 + jr nz, .asm_50ec8 + pop bc + ld a, [$ffb6] + add b + ld [$ffb6], a + pop bc + ld a, [$ffb5] + adc b + ld [$ffb5], a + pop bc + ld a, [hMultiplicand] + adc b + ld [hMultiplicand], a + jr .asm_50eda + +.asm_50ec8 + pop bc + ld a, [$ffb6] + sub b + ld [$ffb6], a + pop bc + ld a, [$ffb5] + sbc b + ld [$ffb5], a + pop bc + ld a, [hMultiplicand] + sbc b + ld [hMultiplicand], a + +.asm_50eda + pop bc + ld a, [$ffb6] + add b + ld [$ffb6], a + pop bc + ld a, [$ffb5] + adc b + ld [$ffb5], a + pop bc + ld a, [hMultiplicand] + adc b + ld [hMultiplicand], a + ret +; 50eed + +Function50eed: ; 50eed + xor a + ld [hMultiplicand], a + ld [$ffb5], a + ld a, d + ld [$ffb6], a + ld [hMultiplier], a + jp Multiply +; 50efa + +INCBIN "baserom.gbc", $50efa, $5125d - $50efa DecompressPredef: ; 5125d @@ -23612,7 +36496,23 @@ INCBIN "baserom.gbc", $82153, $823c8-$82153 SECTION "bank21",DATA,BANK[$21] -INCBIN "baserom.gbc", $84000, $84a2e - $84000 +INCBIN "baserom.gbc", $84000, $842db - $84000 + + +Function842db: ; 842db + ld a, [$c2d5] + add a + ld e, a + ld d, $0 + ld hl, $42ea + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 842ea + +INCBIN "baserom.gbc", $842ea, $84a2e - $842ea FX00GFX: FX01GFX: ; 84a2e @@ -23890,7 +36790,494 @@ HallOfFame3: ; 0x8640e ret ; 0x86455 -INCBIN "baserom.gbc", $86455, $88000 - $86455 +Function86455: ; 86455 + ld a, $0 + ld [MusicFadeIDLo], a + ld a, $0 + ld [MusicFadeIDHi], a + ld a, $a + ld [MusicFade], a + ld a, $23 + ld hl, $4084 + rst FarCall + xor a + ld [VramState], a + ld [$ffde], a + ld a, $13 + ld hl, $68c2 + rst FarCall + ld c, $8 + call DelayFrames + call Function2ed3 + ld a, $2 + ld [$d4b5], a + ld a, [StatusFlags] + ld b, a + ld a, $42 + ld hl, $5847 + rst FarCall + ret +; 8648e + +Function8648e: ; 8648e + ld a, $0 + ld [MusicFadeIDLo], a + ld a, $0 + ld [MusicFadeIDHi], a + ld a, $a + ld [MusicFade], a + ld a, $23 + ld hl, $4084 + rst FarCall + xor a + ld [VramState], a + ld [$ffde], a + ld a, $13 + ld hl, $6881 + rst FarCall + ld c, $64 + jp DelayFrames +; 864b4 + +Function864b4: ; 864b4 + push de + ld de, $0000 + call StartMusic + call DelayFrame + pop de + call StartMusic + ret +; 864c3 + +Function864c3: ; 864c3 + xor a + ld [$cf63], a + call $671c + jr c, .asm_864fb + ld de, $0014 + call $64b4 + xor a + ld [$cf64], a +.asm_864d6 + ld a, [$cf64] + cp $6 + jr nc, .asm_864fb + ld hl, EnemyMoveEffect + ld bc, $0010 + call AddNTimes + ld a, [hl] + cp $ff + jr z, .asm_864fb + push hl + call $65b5 + pop hl + call $650c + jr c, .asm_864fb + ld hl, $cf64 + inc [hl] + jr .asm_864d6 + +.asm_864fb + call $6810 + ld a, $4 + ld [MusicFade], a + call $04b6 + ld c, $8 + call DelayFrames + ret +; 8650c + +Function8650c: ; 8650c + call $6748 + ld de, $652c + ld hl, $c4c9 + call PlaceString + call WaitBGMap + ld de, $c50a + ld c, $6 + ld a, $49 + call Predef + ld c, $3c + call DelayFrames + and a + ret +; 8652c + +INCBIN "baserom.gbc", $8652c, $8653f - $8652c + + +Function8653f: ; 8653f + ld hl, OverworldMap + ld bc, $0062 + xor a + call ByteFill + ld a, [$d95e] + ld de, OverworldMap + ld [de], a + inc de + ld hl, PartySpecies + ld c, $0 +.asm_86556 + ld a, [hli] + cp $ff + jr z, .asm_865b1 + cp $fd + jr nz, .asm_86562 + inc c + jr .asm_86556 + +.asm_86562 + push hl + push de + push bc + ld a, c + ld hl, PartyMon1Species + ld bc, $0030 + call AddNTimes + ld c, l + ld b, h + ld hl, $0000 + add hl, bc + ld a, [hl] + ld [de], a + inc de + ld hl, $0006 + add hl, bc + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + inc de + ld hl, $0015 + add hl, bc + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + inc de + ld hl, $001f + add hl, bc + ld a, [hl] + ld [de], a + inc de + pop bc + push bc + ld a, c + ld hl, PartyMon1Nickname + ld bc, $000b + call AddNTimes + ld bc, $000a + call CopyBytes + pop bc + inc c + pop de + ld hl, $0010 + add hl, de + ld e, l + ld d, h + pop hl + jr .asm_86556 + +.asm_865b1 + ld a, $ff + ld [de], a + ret +; 865b5 + +Function865b5: ; 865b5 + push hl + call WhiteBGMap + ld a, $13 + ld hl, $6906 + rst FarCall + pop hl + ld a, [hli] + ld [TempMonSpecies], a + ld [CurPartySpecies], a + inc hl + inc hl + ld a, [hli] + ld [TempMonDVs], a + ld a, [hli] + ld [$d124], a + ld hl, TempMonDVs + ld a, $2d + call Predef + ld hl, TileMap + ld bc, $0168 + ld a, $7f + call ByteFill + ld de, $9310 + ld a, $3d + call Predef + ld a, $31 + ld [$ffad], a + ld hl, $c51e + ld bc, $0606 + ld a, $13 + call Predef + ld a, $d0 + ld [$ffd0], a + ld a, $90 + ld [$ffcf], a + call WaitBGMap + xor a + ld [hBGMapMode], a + ld b, $1a + call GetSGBLayout + call Function32f9 + call $6635 + xor a + ld [$c2c6], a + ld hl, TileMap + ld bc, $0168 + ld a, $7f + call ByteFill + ld hl, $c50a + call $378b + call WaitBGMap + xor a + ld [hBGMapMode], a + ld [$ffd0], a + call $6643 + ret +; 86635 + +Function86635: ; 86635 +.asm_86635 + ld a, [$ffcf] + cp $70 + ret z + add $4 + ld [$ffcf], a + call DelayFrame + jr .asm_86635 +; 86643 + +Function86643: ; 86643 +.asm_86643 + ld a, [$ffcf] + and a + ret z + dec a + dec a + ld [$ffcf], a + call DelayFrame + jr .asm_86643 +; 86650 + +INCBIN "baserom.gbc", $86650, $8671c - $86650 + + +Function8671c: ; 8671c + ld a, [$cf63] + cp $1e + jr nc, .asm_86746 + ld hl, $b2c0 + ld bc, $0062 + call AddNTimes + ld a, $1 + call GetSRAMBank + ld a, [hl] + and a + jr z, .asm_86743 + ld de, EnemyMoveAnimation + ld bc, $0062 + call CopyBytes + call CloseSRAM + and a + ret + +.asm_86743 + call CloseSRAM + +.asm_86746 + scf + ret +; 86748 + +Function86748: ; 86748 + xor a + ld [hBGMapMode], a + ld a, [hli] + ld [TempMonSpecies], a + ld a, [hli] + ld [TempMonID], a + ld a, [hli] + ld [$d115], a + ld a, [hli] + ld [TempMonDVs], a + ld a, [hli] + ld [$d124], a + ld a, [hli] + ld [TempMonLevel], a + ld de, StringBuffer2 + ld bc, $000a + call CopyBytes + ld a, $50 + ld [$d090], a + ld hl, TileMap + ld bc, $0168 + ld a, $7f + call ByteFill + ld hl, TileMap + ld bc, $0312 + call TextBox + ld hl, $c590 + ld bc, $0412 + call TextBox + ld a, [TempMonSpecies] + ld [CurPartySpecies], a + ld [$d265], a + ld hl, TempMonDVs + ld a, $2d + call Predef + xor a + ld [$c2c6], a + ld hl, $c50a + call $378b + ld a, [CurPartySpecies] + cp $fd + jr z, .asm_867f8 + ld hl, $c5a5 + ld a, $74 + ld [hli], a + ld [hl], $f2 + ld hl, $c5a7 + ld de, $d265 + ld bc, $8103 + call $3198 + call GetBasePokemonName + ld hl, $c5ab + call PlaceString + ld a, $3 + ld [MonType], a + callba GetGender + ld a, $7f + jr c, .asm_867e2 + ld a, $ef + jr nz, .asm_867e2 + ld a, $f5 + +.asm_867e2 + ld hl, $c5b6 + ld [hli], a + ld hl, $c5c0 + ld a, $f3 + ld [hli], a + ld de, StringBuffer2 + call PlaceString + ld hl, $c5e1 + call $382d + +.asm_867f8 + ld hl, $c5e7 + ld a, $73 + ld [hli], a + ld a, $74 + ld [hli], a + ld [hl], $f3 + ld hl, $c5ea + ld de, TempMonID + ld bc, $8205 + call $3198 + ret +; 86810 + +Function86810: ; 86810 + call WhiteBGMap + ld hl, $9630 + ld de, $40d0 + ld bc, $3e01 + call Functioneba + ld hl, TileMap + ld bc, $0168 + ld a, $7f + call ByteFill + ld a, $22 + ld hl, $4825 + rst FarCall + ld a, $31 + ld [$ffad], a + ld hl, $c51e + ld bc, $0606 + ld a, $13 + call Predef + ld a, $d0 + ld [$ffd0], a + ld a, $90 + ld [$ffcf], a + call WaitBGMap + xor a + ld [hBGMapMode], a + ld [CurPartySpecies], a + ld b, $1a + call GetSGBLayout + call Function32f9 + call $6635 + xor a + ld [$c2c6], a + ld hl, TileMap + ld bc, $0168 + ld a, $7f + call ByteFill + ld a, $22 + ld hl, $4840 + rst FarCall + xor a + ld [$ffad], a + ld hl, $c510 + ld bc, $0707 + ld a, $13 + call Predef + ld a, $c0 + ld [$ffcf], a + call WaitBGMap + xor a + ld [hBGMapMode], a + ld [$ffd0], a + call $6643 + xor a + ld [hBGMapMode], a + ld hl, $c4c8 + ld bc, $0809 + call TextBox + ld hl, $c590 + ld bc, $0412 + call TextBox + ld hl, $c4f2 + ld de, PlayerName + call PlaceString + ld hl, $c519 + ld a, $73 + ld [hli], a + ld a, $74 + ld [hli], a + ld [hl], $f3 + ld hl, $c51c + ld de, PlayerID + ld bc, $8205 + call $3198 + ld hl, $c541 + ld de, $68ed + call PlaceString + ld hl, $c557 + ld de, GameTimeHours + ld bc, $0203 + call $3198 + ld [hl], $63 + inc hl + ld de, GameTimeMinutes + ld bc, $8102 + call $3198 + call WaitBGMap + callba Function26601 + ret +; 868ed + +INCBIN "baserom.gbc", $868ed, $88000 - $868ed SECTION "bank22",DATA,BANK[$22] @@ -23977,7 +37364,56 @@ GetPlayerIcon: ; 8832c ; 8833e -INCBIN "baserom.gbc", $8833e, $88874 - $8833e +INCBIN "baserom.gbc", $8833e, $88825 - $8833e + + +Function88825: ; 88825 + ld a, [PlayerGender] + bit 0, a + jr z, .asm_88830 + call GetKrisBackpic + ret + +.asm_88830 + ld hl, $7a1a + ld b, $a + ld de, $9310 + ld c, $31 + ld a, $40 + call Predef + ret +; 88840 + +Function88840: ; 88840 + call WaitBGMap + xor a + ld [hBGMapMode], a + ld e, $0 + ld a, [PlayerGender] + bit 0, a + jr z, .asm_88851 + ld e, $1 + +.asm_88851 + ld a, e + ld [TrainerClass], a + ld de, ChrisPic + ld a, [PlayerGender] + bit 0, a + jr z, .asm_88862 + ld de, KrisPic + +.asm_88862 + ld hl, VTiles2 + ld b, $22 + ld c, $31 + call Functionf82 + call WaitBGMap + ld a, $1 + ld [hBGMapMode], a + ret +; 88874 + DrawIntroPlayerPic: ; 88874 @@ -24202,12 +37638,53 @@ GetNthPartyMon: ; 0x8b1ce scf ret -INCBIN "baserom.gbc", $8b1e1, $8ba24-$8b1e1 +INCBIN "baserom.gbc", $8b1e1, $8b342 - $8b1e1 + + +Function8b342: ; 8b342 + call GetSecondaryMapHeaderPointer + ld d, h + ld e, l + xor a +.asm_8b348 + push af + ld hl, $7354 + rst JumpTable + pop af + inc a + cp $3 + jr nz, .asm_8b348 + ret +; 8b354 + +INCBIN "baserom.gbc", $8b354, $8b35b - $8b354 + + +Function8b35b: ; 8b35b + ret +; 8b35c + +Function8b35c: ; 8b35c + ret +; 8b35d + +INCBIN "baserom.gbc", $8b35d, $8ba24 - $8b35d SECTION "bank23",DATA,BANK[$23] -INCBIN "baserom.gbc", $8c000, $8c011 - $8c000 +INCBIN "baserom.gbc", $8c000, $8c001 - $8c000 + + +Function8c001: ; 8c001 + call UpdateTime + ld a, [TimeOfDay] + ld [CurTimeOfDay], a + call GetTimePalette + ld [TimeOfDayPal], a + ret +; 8c011 + _TimeOfDayPals: ; 8c011 ; return carry if pals are changed @@ -24317,7 +37794,57 @@ UpdateTimePals: ; 8c070 ret ; 8c079 -INCBIN "baserom.gbc", $8c079, $8c117 - $8c079 +Function8c079: ; 8c079 + ld c, $12 + call GetTimePalFade + ld b, $4 + call $416d + ret +; 8c084 + +Function8c084: ; 8c084 + call $40c1 + ld c, $9 + call GetTimePalFade + ld b, $4 + call $415e + ret +; 8c092 + +INCBIN "baserom.gbc", $8c092, $8c0c1 - $8c092 + + +Function8c0c1: ; 8c0c1 + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, $d000 + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld hl, $d008 + ld c, $6 +.asm_8c0d4 + ld a, e + ld [hli], a + ld a, d + ld [hli], a + inc hl + inc hl + inc hl + inc hl + inc hl + inc hl + dec c + jr nz, .asm_8c0d4 + pop af + ld [rSVBK], a + ret +; 8c0e5 + +INCBIN "baserom.gbc", $8c0e5, $8c117 - $8c0e5 GetTimePalette: ; 8c117 ; get time of day @@ -24386,7 +37913,32 @@ DmgToCgbTimePals: ; 8c14e ret ; 8c15e -INCBIN "baserom.gbc", $8c15e, $8c17c - $8c15e +Function8c15e: ; 8c15e +.asm_8c15e + call DmgToCgbTimePals + inc hl + inc hl + inc hl + ld c, $2 + call DelayFrames + dec b + jr nz, .asm_8c15e + ret +; 8c16d + +Function8c16d: ; 8c16d +.asm_8c16d + call DmgToCgbTimePals + dec hl + dec hl + dec hl + ld c, $2 + call DelayFrames + dec b + jr nz, .asm_8c16d + ret +; 8c17c + GetTimePalFade: ; 8c17c ; check cgb @@ -24597,7 +38149,12 @@ Function8cf53: ; 8cf53 ret ; 8cf62 -INCBIN "baserom.gbc", $8cf62, $8cf69 - $8cf62 +Function8cf62: ; 8cf62 + call Function8cf69 + call DelayFrame + ret +; 8cf69 + Function8cf69: ; 8cf69 @@ -25025,7 +38582,47 @@ Function8d24b: ; 8d24b jp [hl] ; 8d25b -INCBIN "baserom.gbc", $8d25b, $8e9ac - $8d25b +INCBIN "baserom.gbc", $8d25b, $8e814 - $8d25b + + +Function8e814: ; 8e814 + push hl + push de + push bc + push af + ld hl, $c300 + ld bc, $00c1 +.asm_8e81e + ld [hl], $0 + inc hl + dec bc + ld a, c + or b + jr nz, .asm_8e81e + 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, $23 + ld c, $8 + ret +; 8e83f + +INCBIN "baserom.gbc", $8e83f, $8e9ac - $8e83f GetSpeciesIcon: ; 8e9ac ; Load species icon into VRAM at tile a @@ -25463,7 +39060,189 @@ BigmonIcon: INCBIN "gfx/icon/bigmon.2bpp" ; 0x8fe8d SECTION "bank24",DATA,BANK[$24] -INCBIN "baserom.gbc", $90000, $909F2-$90000 +INCBIN "baserom.gbc", $90000, $9000f - $90000 + + +Function9000f: ; 9000f + call $401c + jr nc, .asm_90017 + xor a + ld [hl], a + ret + +.asm_90017 + scf + ret +; 90019 + +Function90019: ; 90019 + jp $401c +; 9001c + +Function9001c: ; 9001c + ld hl, $dc7c + ld b, $a +.asm_90021 + ld a, [hli] + cp c + jr z, .asm_9002a + dec b + jr nz, .asm_90021 + xor a + ret + +.asm_9002a + dec hl + scf + ret +; 9002d + +INCBIN "baserom.gbc", $9002d, $90069 - $9002d + + +Function90069: ; 90069 + ld a, [hROMBank] + push af + ld a, b + rst Bankswitch + + call PlaceString + pop af + rst Bankswitch + + ret +; 90074 + +INCBIN "baserom.gbc", $90074, $9029a - $90074 + + +Function9029a: ; 9029a + ld a, b + ld [DefaultFlypoint], a + ld a, e + ld [$d003], a + ld a, d + ld [$d004], a + call $42b3 + call $42b3 + ld a, $41 + ld hl, $60d3 + rst FarCall + ret +; 902b3 + +Function902b3: ; 902b3 + call $433f + call $4357 + call $42c9 + call $4357 + call $4375 + call $4357 + call $42c9 + ret +; 902c9 + +Function902c9: ; 902c9 + call $4375 + ld hl, $c4c9 + ld [hl], $62 + inc hl + inc hl + ld a, [DefaultFlypoint] + ld b, a + ld a, [$d003] + ld e, a + ld a, [$d004] + ld d, a + call $4069 + ret +; 902e3 + +INCBIN "baserom.gbc", $902e3, $902eb - $902e3 + + +Function902eb: ; 902eb + call $431d + call $4355 + call $432f + call $4355 + call $433b + call $4355 + call $432f + call $4355 + call $433b + call $4355 + call $432f + call $4355 + call $433b + call $4355 + ret +; 90316 + +INCBIN "baserom.gbc", $90316, $9031d - $90316 + + +Function9031d: ; 9031d + ld hl, $432a + call PrintText + ld de, $006b + call StartSFX + ret +; 9032a + +INCBIN "baserom.gbc", $9032a, $9032f - $9032a + + +Function9032f: ; 9032f + ld hl, $4336 + call PrintText + ret +; 90336 + +INCBIN "baserom.gbc", $90336, $9033b - $90336 + + +Function9033b: ; 9033b + call SpeechTextBox + ret +; 9033f + +Function9033f: ; 9033f + call WaitSFX + ld de, $006a + call StartSFX + call $4375 + call $1ad2 + ld a, $13 + ld hl, $5188 + rst FarCall + ret +; 90355 + +Function90355: ; 90355 + jr .asm_90357 + +.asm_90357 + ld c, $14 + call DelayFrames + ld a, $13 + ld hl, $5188 + rst FarCall + ret +; 90363 + +INCBIN "baserom.gbc", $90363, $90375 - $90363 + + +Function90375: ; 90375 + ld hl, TileMap + ld b, $2 + ld c, $12 + call TextBox + ret +; 90380 + +INCBIN "baserom.gbc", $90380, $909f2 - $90380 dw Sunday dw Monday @@ -29257,7 +43036,207 @@ INCBIN "tilesets/16_collision.bin" SECTION "bank2E",DATA,BANK[$2E] -INCBIN "baserom.gbc", $B8000, $b8219 - $b8000 +Functionb8000: ; b8000 + xor a + ld [hBGMapMode], a + ld a, $2e + ld hl, $400a + rst FarCall + ret +; b800a + +Functionb800a: ; b800a + ld a, [MapGroup] + ld b, a + ld a, [MapNumber] + ld c, a + call GetWorldMapLocation + ld [$c2d9], a + call $4089 + jr z, .asm_b8024 + call GetMapPermission + cp $6 + jr nz, .asm_b8029 + +.asm_b8024 + ld a, $ff + ld [$c2d9], a + +.asm_b8029 + ld hl, $d83e + bit 1, [hl] + res 1, [hl] + jr nz, .asm_b8054 + call $4064 + jr z, .asm_b8054 + ld a, [$c2d9] + ld [$c2d8], a + call $4070 + jr z, .asm_b8054 + ld a, $3c + ld [$c2da], a + call $40c6 + call $40d3 + ld a, $41 + ld hl, $4303 + rst FarCall + ret + +.asm_b8054 + ld a, [$c2d9] + ld [$c2d8], a + ld a, $90 + ld [rWY], a + ld [$ffd2], a + xor a + ld [hLCDStatCustom], a + ret +; b8064 + +Functionb8064: ; b8064 + ld a, [$c2d9] + ld c, a + ld a, [$c2d8] + cp c + ret z + cp $0 + ret +; b8070 + +Functionb8070: ; b8070 + cp $ff + ret z + cp $0 + ret z + cp $11 + ret z + cp $46 + ret z + cp $3b + ret z + cp $5a + ret z + cp $44 + ret z + ld a, $1 + and a + ret +; b8089 + +Functionb8089: ; b8089 + ld a, [MapGroup] + cp $a + ret nz + ld a, [MapNumber] + cp $f + ret z + cp $11 + ret +; b8098 + +INCBIN "baserom.gbc", $b8098, $b80c6 - $b8098 + + +Functionb80c6: ; b80c6 + ld de, $5344 + ld hl, $9600 + ld bc, $3e0e + call Functionf82 + ret +; b80d3 + +Functionb80d3: ; b80d3 + ld hl, TileMap + ld b, $2 + ld c, $12 + call $4115 + call $412f + ret +; b80e1 + +INCBIN "baserom.gbc", $b80e1, $b8115 - $b80e1 + + +Functionb8115: ; b8115 + ld de, $0939 + add hl, de + inc b + inc b + inc c + inc c + ld a, $87 +.asm_b811f + push bc + push hl +.asm_b8121 + ld [hli], a + dec c + jr nz, .asm_b8121 + pop hl + ld de, $0014 + add hl, de + pop bc + dec b + jr nz, .asm_b811f + ret +; b812f + +Functionb812f: ; b812f + ld hl, TileMap + ld a, $61 + ld [hli], a + ld a, $62 + call $4164 + ld a, $64 + ld [hli], a + ld a, $65 + ld [hli], a + call $415b + ld a, $6b + ld [hli], a + ld a, $66 + ld [hli], a + call $415b + ld a, $6c + ld [hli], a + ld a, $67 + ld [hli], a + ld a, $68 + call $4164 + ld a, $6a + ld [hl], a + ret +; b815b + +Functionb815b: ; b815b + ld c, $12 + ld a, $6d +.asm_b815f + ld [hli], a + dec c + jr nz, .asm_b815f + ret +; b8164 + +Functionb8164: ; b8164 + ld c, $5 + jr .asm_b816a + +.asm_b8168 + ld [hli], a + ld [hli], a + +.asm_b816a + inc a + ld [hli], a + ld [hli], a + dec a + dec c + jr nz, .asm_b8168 + ret +; b8172 + +INCBIN "baserom.gbc", $b8172, $b8219 - $b8172 Functionb8219: ; b8219 ; deals strictly with rockmon encounter @@ -29497,7 +43476,17 @@ WildRockMonTable: ; b83de db $ff ; end ; b83e5 -INCBIN "baserom.gbc", $b83e5, $b9e8b - $b83e5 +INCBIN "baserom.gbc", $b83e5, $b9e76 - $b83e5 + + +Functionb9e76: ; b9e76 + ld a, d + ld hl, $5e80 + ld de, $0001 + jp IsInArray +; b9e80 + +INCBIN "baserom.gbc", $b9e80, $b9e8b - $b9e80 SECTION "bank2F",DATA,BANK[$2F] @@ -29944,7 +43933,82 @@ INCBIN "baserom.gbc", $c8000, $cbe2b - $c8000 SECTION "bank33",DATA,BANK[$33] -INCBIN "baserom.gbc", $cc000, $cfd9e - $cc000 +Functioncc000: ; cc000 + call WhiteBGMap + call ClearTileMap + call ClearSprites + call $0e58 + ld hl, Options + ld a, [hl] + push af + set 4, [hl] + ld hl, TileMap + ld b, $4 + ld c, $d + call TextBox + ld hl, $c518 + ld b, $4 + ld c, $d + call TextBox + ld hl, $c4a2 + ld de, $40ae + call PlaceString + ld hl, $c51a + ld de, $40b8 + call PlaceString + ld hl, $c4f5 + ld de, $40a7 + call PlaceString + ld hl, $c56d + ld de, $40a7 + call PlaceString + ld a, [$df9c] + ld [$d265], a + call GetPokemonName + ld de, StringBuffer1 + ld hl, $c4c9 + call PlaceString + ld h, b + ld l, c + ld a, [$dfbb] + ld [TempMonLevel], a + call $382d + ld de, EnemyMonNick + ld hl, $c541 + call PlaceString + ld h, b + ld l, c + ld a, [EnemyMonLevel] + ld [TempMonLevel], a + call $382d + ld hl, $c4fb + ld de, $dfc0 + ld bc, $0203 + call $3198 + ld hl, $c573 + ld de, EnemyMonMaxHPHi + call $3198 + ld hl, $40c2 + call PrintText + pop af + ld [Options], a + call WaitBGMap + ld b, $8 + call GetSGBLayout + call Function32f9 + ret +; cc0a7 + +INCBIN "baserom.gbc", $cc0a7, $cc0c7 - $cc0a7 + + +Functioncc0c7: ; cc0c7 + call GetPokemonName + ld hl, $40d0 + jp PrintText +; cc0d0 + +INCBIN "baserom.gbc", $cc0d0, $cfd9e - $cc0d0 ; Songs iii @@ -30278,7 +44342,80 @@ Functione4670: ; e4670 jp [hl] ; e467f -INCBIN "baserom.gbc", $e467f, $e555d - $e467f +INCBIN "baserom.gbc", $e467f, $e48ac - $e467f + + +Functione48ac: ; e48ac + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld a, [$ffaa] + push af + ld a, [$ff9e] + push af + call $4901 + call Functiona57 + ld a, [$ffa9] + and $f + jr nz, .asm_e48db + ld a, [$cf63] + bit 7, a + jr nz, .asm_e48e1 + call $490f + callba Function8cf69 + call DelayFrame + jp $48bc + +.asm_e48db + ld de, $0000 + call StartMusic + +.asm_e48e1 + call WhiteBGMap + call ClearSprites + call ClearTileMap + xor a + ld [$ffcf], a + ld [$ffd0], a + ld a, $7 + ld [$ffd1], a + ld a, $90 + ld [$ffd2], a + pop af + ld [$ff9e], a + pop af + ld [$ffaa], a + pop af + ld [rSVBK], a + ret +; e4901 + +Functione4901: ; e4901 + xor a + ld [$ff9e], a + ld a, $1 + ld [$ffaa], a + xor a + ld [$ffde], a + ld [$cf63], a + ret +; e490f + +Functione490f: ; e490f + ld a, [$cf63] + ld e, a + ld d, $0 + ld hl, $491e + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; e491e + +INCBIN "baserom.gbc", $e491e, $e555d - $e491e IntroSuicuneRunGFX: ; e555d INCBIN "gfx/intro/suicune_run.lz" @@ -30595,7 +44732,35 @@ TownMapGFX: ; f8ba0 INCBIN "gfx/misc/town_map.lz" ; f8ea3 -INCBIN "baserom.gbc", $f8ea3, $fb48a - $f8ea3 +INCBIN "baserom.gbc", $f8ea3, $fb449 - $f8ea3 + + +Functionfb449: ; fb449 + ld de, $4200 + ld hl, VTiles1 + ld bc, $3e80 + ld a, [rLCDC] + bit 7, a + jp z, $0fa4 + ld de, $4200 + ld hl, VTiles1 + ld bc, $3e20 + call Functionddc + ld de, $4300 + ld hl, $8a00 + ld bc, $3e20 + call Functionddc + ld de, $4400 + ld hl, $8c00 + ld bc, $3e20 + call Functionddc + ld de, $4500 + ld hl, $8e00 + ld bc, $3e20 + call Functionddc + ret +; fb48a + Functionfb48a: ; fb48a @@ -30644,7 +44809,31 @@ Functionfb48a: ; fb48a ret ; fb4f2 -INCBIN "baserom.gbc", $fb4f2, $fbbfc - $fb4f2 +INCBIN "baserom.gbc", $fb4f2, $fba18 - $fb4f2 + + +Functionfba18: ; fba18 + ld a, [UnownLetter] + ld c, a + ld b, $1a + ld hl, UnownDex +.asm_fba21 + ld a, [hli] + and a + jr z, .asm_fba2b + cp c + ret z + dec b + jr nz, .asm_fba21 + ret + +.asm_fba2b + dec hl + ld [hl], c + ret +; fba2e + +INCBIN "baserom.gbc", $fba2e, $fbbfc - $fba2e INCLUDE "battle/magikarp_length.asm" @@ -31847,7 +46036,268 @@ SproutPillarTile10: ; fca98 -INCBIN "baserom.gbc", $fca98, $fcdc2 - $fca98 +INCBIN "baserom.gbc", $fca98, $fcba8 - $fca98 + + +Functionfcba8: ; fcba8 + ld a, e + ld [$cf63], a + call $4c59 + ld b, $2 + call $4c4a + ld a, $4 + jr nz, .asm_fcc03 + ld a, $0 + call $4f38 + call $1dcf + ld a, $1 + jr c, .asm_fcc03 + ld b, $6 + ld a, $14 + ld hl, $401d + rst FarCall + ld a, $1 + jr c, .asm_fcc03 + ld e, $1 + call LoadTradesPointer + ld a, [CurPartySpecies] + cp [hl] + ld a, $2 + jr nz, .asm_fcc03 + call $4c23 + ld a, $2 + jr c, .asm_fcc03 + ld b, $1 + call $4c4a + ld hl, $4f7b + call PrintText + call $4c63 + call $4c07 + call $4e1b + ld hl, $4f80 + call PrintText + call $3d47 + ld a, $3 + +.asm_fcc03 + call $4f38 + ret +; fcc07 + +Functionfcc07: ; fcc07 + call Function2ed3 + ld a, [$cf63] + push af + ld a, [$cf64] + push af + ld a, $1e + call Predef + pop af + ld [$cf64], a + pop af + ld [$cf63], a + call Function2b74 + ret +; fcc23 + +Functionfcc23: ; fcc23 + xor a + ld [MonType], a + ld e, $1e + call LoadTradesPointer + 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 + +Functionfcc4a: ; fcc4a + ld hl, $d960 + ld a, [$cf63] + ld c, a + ld a, $3 + call Predef + ld a, c + and a + ret +; fcc59 + +Functionfcc59: ; fcc59 + ld e, $0 + call LoadTradesPointer + ld a, [hl] + ld [$cf64], a + ret +; fcc63 + +Functionfcc63: ; fcc63 + ld e, $1 + call LoadTradesPointer + ld a, [hl] + ld [PlayerSDefLevel], a + ld e, $2 + call LoadTradesPointer + ld a, [hl] + ld [PlayerLightScreenCount], a + ld a, [PlayerSDefLevel] + ld de, PlayerAccLevel + call $4de8 + call $4df4 + ld a, [PlayerLightScreenCount] + ld de, PlayerReflectCount + call $4de8 + call $4df4 + ld hl, PartyMon1OT + ld bc, $000b + call $4dd7 + ld de, $c6f2 + call $4df4 + ld hl, PlayerName + ld de, $c6e7 + call $4df4 + ld hl, PartyMon1ID + ld bc, $0030 + call $4dd7 + ld de, PlayerScreens + call $4e0f + ld hl, PartyMon1DVs + ld bc, $0030 + call $4dd7 + ld de, $c6fd + call $4e0f + ld hl, PartyMon1Species + ld bc, $0030 + call $4dd7 + ld b, h + ld c, l + ld a, $13 + ld hl, $7301 + rst FarCall + ld a, c + ld [$c701], a + ld e, $0 + call LoadTradesPointer + ld a, [hl] + cp $3 + ld a, $1 + jr c, .asm_fcce6 + ld a, $2 + +.asm_fcce6 + ld [$c733], a + ld hl, PartyMon1Level + ld bc, $0030 + call $4dd7 + ld a, [hl] + ld [CurPartyLevel], a + ld a, [PlayerLightScreenCount] + ld [CurPartySpecies], a + xor a + ld [MonType], a + ld [$d10b], a + ld hl, $6039 + ld a, $3 + rst FarCall + ld a, $6 + call Predef + ld e, $0 + call LoadTradesPointer + ld a, [hl] + cp $3 + ld b, $0 + jr c, .asm_fcd1c + ld b, $1 + +.asm_fcd1c + ld a, $13 + ld hl, $5ba3 + rst FarCall + ld e, $3 + call LoadTradesPointer + ld de, FailedMessage + call $4df4 + ld hl, PartyMon1Nickname + ld bc, $000b + call $4dde + ld hl, FailedMessage + call $4df4 + ld e, $13 + call LoadTradesPointer + push hl + ld de, $c724 + call $4df4 + pop hl + ld de, $c719 + call $4df4 + ld hl, PartyMon1OT + ld bc, $000b + call $4dde + ld hl, $c724 + call $4df4 + ld e, $e + call LoadTradesPointer + ld de, $c72f + call $4e0f + ld hl, PartyMon1DVs + ld bc, $0030 + call $4dde + ld hl, $c72f + call $4e0f + ld e, $11 + call LoadTradesPointer + ld de, $c732 + call $4e15 + ld hl, PartyMon1ID + ld bc, $0030 + call $4dde + ld hl, $c731 + call $4e0f + ld e, $10 + call LoadTradesPointer + push hl + ld hl, PartyMon1Item + ld bc, $0030 + call $4dde + 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 + ld a, $3 + ld hl, $6134 + rst FarCall + pop af + ld [CurPartyMon], a + pop hl + pop de + pop bc + pop af + ret +; fcdc2 + LoadTradesPointer: ; 0xfcdc2 @@ -31866,7 +46316,94 @@ LoadTradesPointer: ; 0xfcdc2 ret ; 0xfcdd7 -INCBIN "baserom.gbc", $fcdd7, $fce58-$fcdd7 +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 [$d265], a + call GetBasePokemonName + ld hl, StringBuffer1 + pop de + ret +; fcdf4 + +Functionfcdf4: ; fcdf4 + ld bc, $000b + call CopyBytes + ret +; fcdfb + +INCBIN "baserom.gbc", $fcdfb, $fce0f - $fcdfb + + +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 + +Functionfce1b: ; fce1b + ld e, $2 + call LoadTradesPointer + ld a, [hl] + call $4de8 + ld de, StringBuffer2 + call $4df4 + ld e, $1 + call LoadTradesPointer + ld a, [hl] + call $4de8 + ld de, $d050 + call $4df4 + ld hl, StringBuffer1 +.asm_fce3c + ld a, [hli] + cp $50 + jr nz, .asm_fce3c + dec hl + push hl + ld e, $1e + call LoadTradesPointer + ld a, [hl] + pop hl + and a + ret z + cp $1 + ld a, $ef + jr z, .asm_fce54 + ld a, $f5 + +.asm_fce54 + ld [hli], a + ld [hl], $50 + ret +; fce58 + Trades: ; 0xfce58 ; byte 1: dialog @@ -31888,7 +46425,176 @@ Trades: ; 0xfce58 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 -INCBIN "baserom.gbc", $fcf38, $fd1d2-$fcf38 +Functionfcf38: ; fcf38 + push af + call $4e1b + pop af + ld bc, $0008 + ld hl, $4f53 + call AddNTimes + ld a, [$cf64] + ld c, a + add hl, bc + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + call PrintText + ret +; fcf53 + +INCBIN "baserom.gbc", $fcf53, $fcfec - $fcf53 + + +Functionfcfec: ; fcfec + ld a, [$d45c] + and a + ret nz + call $2d05 + and a + ret nz + xor a + ld [$dc18], a + call $5044 + ret nc + call $50c3 + ret nc + ld b, $3f + ld de, $500f + callba Function97c4f + scf + ret +; fd00f + +INCBIN "baserom.gbc", $fd00f, $fd044 - $fd00f + + +Functionfd044: ; fd044 + ld a, [$dc17] + cp $a + jr nc, .asm_fd065 + call $5117 + ld a, [hli] + ld [$ffc3], a + ld a, [hli] + ld [$ffc4], a + ld a, [hli] + ld [$ffc5], a + ld de, $d851 + ld bc, $ffc3 + ld a, $5 + ld hl, $600b + rst FarCall + jr nc, .asm_fd067 + +.asm_fd065 + jr .asm_fd069 + +.asm_fd067 + scf + ret + +.asm_fd069 + ld hl, $ffc3 + ld [hl], $0 + inc hl + ld [hl], $8 + inc hl + ld [hl], $fc +.asm_fd074 + ld de, $dc19 + ld bc, $d851 + ld a, $5 + ld hl, $600b + rst FarCall + jr z, .asm_fd08b + jr nc, .asm_fd089 + call $5099 + jr .asm_fd074 + +.asm_fd089 + xor a + ret + +.asm_fd08b + call $5099 + ld a, $5 + call Function2fb1 + inc a + ld [$dc18], a + scf + ret +; fd099 + +Functionfd099: ; fd099 + ld de, $dc19 + ld bc, $ffc3 + ld a, $5 + ld hl, $6053 + rst FarCall + ret +; fd0a6 + +INCBIN "baserom.gbc", $fd0a6, $fd0c3 - $fd0a6 + + +Functionfd0c3: ; fd0c3 + call $5117 + ld de, $0006 + add hl, de + ld a, [hli] + cp $1 + jr z, .asm_fd0db + ld a, [hl] + ld c, a + ld b, $1 + ld a, $9 + ld hl, $6ef1 + rst FarCall + scf + ret + +.asm_fd0db + ld a, [hl] + ld [CurItem], a + ld a, $1 + ld [$d10c], a + ld hl, $d8f1 + call $2f66 + ret +; fd0eb + +INCBIN "baserom.gbc", $fd0eb, $fd117 - $fd0eb + + +Functionfd117: ; fd117 + ld a, [$dc18] + and a + jr z, .asm_fd123 + dec a + ld de, $5136 + jr .asm_fd12e + +.asm_fd123 + ld a, [$dc17] + cp $a + jr c, .asm_fd12b + xor a + +.asm_fd12b + ld de, $515e + +.asm_fd12e + ld l, a + ld h, $0 + add hl, hl + add hl, hl + add hl, hl + add hl, de + ret +; fd136 + +INCBIN "baserom.gbc", $fd136, $fd1d2 - $fd136 SECTION "bank40",DATA,BANK[$40] @@ -31898,7 +46604,61 @@ INCBIN "baserom.gbc", $100000, $10389d - $100000 SECTION "bank41",DATA,BANK[$41] -INCBIN "baserom.gbc", $104000, $104209 - $104000 +Function104000: ; 104000 + ld hl, $4006 + jp $4177 +; 104006 + +INCBIN "baserom.gbc", $104006, $104061 - $104006 + + +Function104061: ; 104061 + ld hl, $4067 + jp $4177 +; 104067 + +INCBIN "baserom.gbc", $104067, $104110 - $104067 + + +Function104110: ; 104110 + ld hl, $4116 + jp $4177 +; 104116 + +INCBIN "baserom.gbc", $104116, $104177 - $104116 + + +Function104177: ; 104177 + ld a, [hBGMapMode] + push af + ld a, [$ffde] + push af + xor a + ld [hBGMapMode], a + ld [$ffde], a + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + ld a, [rVBK] + push af + call $419c + pop af + ld [rVBK], a + pop af + ld [rSVBK], a + pop af + ld [$ffde], a + pop af + ld [hBGMapMode], a + ret +; 10419c + +Function10419c: ; 10419c + jp [hl] +; 10419d + +INCBIN "baserom.gbc", $10419d, $104209 - $10419d Function104209: ; 104209 @@ -32047,7 +46807,12 @@ Function1042d6: ; 1042d6 ret ; 104303 -INCBIN "baserom.gbc", $104303, $104350 - $104303 +Function104303: ; 104303 + ld hl, $4309 + jp $4177 +; 104309 + +INCBIN "baserom.gbc", $104309, $104350 - $104309 INCBIN "gfx/ow/misc.2bpp" @@ -32203,7 +46968,30 @@ EnteredConnection: ; 1046c4 ; 1046c6 -INCBIN "baserom.gbc", $1046c6, $105258 - $1046c6 +INCBIN "baserom.gbc", $1046c6, $1050d9 - $1046c6 + + +Function1050d9: ; 1050d9 + call $5106 + ld hl, $abe2 + ld de, $abe4 + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + jp CloseSRAM +; 1050ea + +INCBIN "baserom.gbc", $1050ea, $105106 - $1050ea + + +Function105106: ; 105106 + ld a, $0 + jp GetSRAMBank +; 10510b + +INCBIN "baserom.gbc", $10510b, $105258 - $10510b MysteryGiftGFX: INCBIN "gfx/misc/mystery_gift.2bpp" @@ -32582,14 +47370,59 @@ INCBIN "baserom.gbc", $105ef7, $106078 - $105ef7 HallOfFame1: ; 0x106078 ret -INCBIN "baserom.gbc", $106079, $1060bb - $106079 +INCBIN "baserom.gbc", $106079, $106094 - $106079 + + +Function106094: ; 106094 + ret +; 106095 + +INCBIN "baserom.gbc", $106095, $1060bb - $106095 Function1060bb: ; 1060bb ; commented out ret ; 1060bc -INCBIN "baserom.gbc", $1060bc, $106dbc - $1060bc +INCBIN "baserom.gbc", $1060bc, $1060d3 - $1060bc + + +Function1060d3: ; 1060d3 + ret +; 1060d4 + +INCBIN "baserom.gbc", $1060d4, $106187 - $1060d4 + + +Function106187: ; 106187 + ld a, $1 + call GetSRAMBank + ld a, [$be3c] + push af + ld a, $1 + call GetSRAMBank + pop af + ld [$be44], a + call CloseSRAM + ret +; 10619d + +INCBIN "baserom.gbc", $10619d, $106594 - $10619d + + +Function106594: ; 106594 + ld de, $65ad + ld hl, VTiles1 + ld bc, $4180 + call Functionf82 + ld de, $6dad + ld hl, $97f0 + ld bc, $4101 + call Functionf82 + ret +; 1065ad + +INCBIN "baserom.gbc", $1065ad, $106dbc - $1065ad SECTION "bank42",DATA,BANK[$42] @@ -32600,7 +47433,146 @@ IntroLogoGFX: ; 109407 INCBIN "gfx/intro/logo.lz" ; 10983f -INCBIN "baserom.gbc", $10983f, $1099aa - $10983f +INCBIN "baserom.gbc", $10983f, $109847 - $10983f + + +Function109847: ; 109847 + bit 6, b + ld a, $0 + jr z, .asm_10984f + ld a, $40 + +.asm_10984f + ld [$cf63], a + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + call WhiteBGMap + call ClearTileMap + call ClearSprites + ld hl, $ca00 + ld c, $80 + ld de, rJOYP +.asm_10986a + ld a, e + ld [hli], a + ld a, d + ld [hli], a + dec c + jr nz, .asm_10986a + ld de, $5c24 + ld hl, $9200 + ld bc, $4209 + call Functioneba + ld de, $4000 + ld hl, $9600 + ld bc, $391d + call Functioneba + ld de, $7d2e + ld hl, $9400 + ld bc, $3210 + call Functioneba + ld a, $ff + ld [$cf64], a + xor a + ld [$cf65], a + call $5bca + ld e, l + ld d, h + ld hl, VTiles2 + ld bc, $4210 + call Functioneba + call $5a95 + xor a + ld [$cf66], a + ld hl, $d100 + ld bc, Start + xor a + call ByteFill + ld a, $43 + ld [hLCDStatCustom], a + call GetCreditsPalette + call Function32f9 + ld a, [$ff9e] + push af + ld a, $5 + ld [$ff9e], a + ld a, $1 + ld [$ffaa], a + xor a + ld [hBGMapMode], a + ld [CreditsPos], a + ld [$cd21], a + ld [CreditsTimer], a +.asm_1098de + call $5908 + call $58fd + jr nz, .asm_1098ee + call $5926 + call DelayFrame + jr .asm_1098de + +.asm_1098ee + call WhiteBGMap + xor a + ld [hLCDStatCustom], a + ld [hBGMapAddress], a + pop af + ld [$ff9e], a + pop af + ld [rSVBK], a + ret +; 1098fd + +Function1098fd: ; 1098fd + ld a, [hJoypadDown] + and $1 + ret z + ld a, [$cf63] + bit 7, a + ret +; 109908 + +Function109908: ; 109908 + ld a, [hJoypadDown] + and $2 + ret z + ld a, [$cf63] + bit 6, a + ret z + ld hl, CreditsPos + ld a, [hli] + cp $d + jr nc, .asm_10991e + ld a, [hli] + and a + ret z + +.asm_10991e + ld hl, CreditsTimer + ld a, [hl] + and a + ret z + dec [hl] + ret +; 109926 + +Function109926: ; 109926 + ld a, [$cf63] + and $f + ld e, a + ld d, $0 + ld hl, $5937 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 109937 + +INCBIN "baserom.gbc", $109937, $1099aa - $109937 ; Credits INCLUDE "engine/credits.asm" @@ -34317,12 +49289,39 @@ INCBIN "gfx/pics/201r/back.lz" SECTION "bank5B",DATA,BANK[$5B] -INCBIN "baserom.gbc", $16c000, $16d7fe - $16c000 +INCBIN "baserom.gbc", $16c000, $16d69a - $16c000 + + +Function16d69a: ; 16d69a + ld de, $52c1 + ld hl, $9760 + ld bc, $5b08 + call Functionf82 + ret +; 16d6a7 + +INCBIN "baserom.gbc", $16d6a7, $16d7fe - $16d6a7 SECTION "bank5C",DATA,BANK[$5C] -INCBIN "baserom.gbc", $170000, $17367f - $170000 +INCBIN "baserom.gbc", $170000, $170923 - $170000 + + +Function170923: ; 170923 + ld a, $5 + call GetSRAMBank + xor a + ld [$aa48], a + ld [$aa47], a + ld hl, $aa5d + ld bc, $0011 + call ByteFill + call CloseSRAM + ret +; 17093c + +INCBIN "baserom.gbc", $17093c, $17367f - $17093c SECTION "bank5D",DATA,BANK[$5D] @@ -34355,7 +49354,75 @@ INCBIN "baserom.gbc", $17a68f, $17b629 - $17a68f SECTION "bank5F",DATA,BANK[$5F] -INCBIN "baserom.gbc", $17c000, $17f036 - $17c000 +Function17c000: ; 17c000 + call DisableLCD + ld hl, VTiles2 + ld bc, $0310 + xor a + call ByteFill + call $0e51 + call Functione5f + ld hl, $4b83 + ld de, TileMap + ld bc, AttrMap + ld a, $12 +.asm_17c01e + push af + ld a, $14 + push hl +.asm_17c022 + push af + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [bc], a + inc bc + pop af + dec a + jr nz, .asm_17c022 + pop hl + push bc + ld bc, $0040 + add hl, bc + pop bc + pop af + dec a + jr nz, .asm_17c01e + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, $4ff3 + ld de, $d000 + ld bc, $0080 + call CopyBytes + pop af + ld [rSVBK], a + ld hl, $4983 + ld de, $8300 + ld bc, $0200 + call CopyBytes + ld a, $1 + ld [rVBK], a + ld hl, $4083 + ld de, VTiles2 + ld bc, $0800 + call CopyBytes + ld hl, $4883 + ld de, VTiles1 + ld bc, Start + call CopyBytes + xor a + ld [rVBK], a + call EnableLCD + ld a, $41 + ld hl, $4061 + rst FarCall + ret +; 17c083 + +INCBIN "baserom.gbc", $17c083, $17f036 - $17c083 Function17f036: ; 17f036 @@ -34841,7 +49908,74 @@ Tileset26Coll: ; 0x1dd5a9 INCBIN "tilesets/26_collision.bin" ; 0x1dd6a9 -INCBIN "baserom.gbc", $1dd6a9, $1de28a - $1dd6a9 +INCBIN "baserom.gbc", $1dd6a9, $1ddf1c - $1dd6a9 + + +Function1ddf1c: ; 1ddf1c + ld hl, $5f33 + ld de, $9310 + call Decompress + ret +; 1ddf26 + +INCBIN "baserom.gbc", $1ddf26, $1de0d7 - $1ddf26 + + +Function1de0d7: ; 1de0d7 + ld hl, $60e1 + ld de, $a000 + call Decompress + ret +; 1de0e1 + +INCBIN "baserom.gbc", $1de0e1, $1de247 - $1de0e1 + + +Function1de247: ; 1de247 + ld a, [hBGMapAddress] + ld l, a + ld a, [$ffd7] + ld h, a + push hl + inc hl + ld a, l + ld [hBGMapAddress], a + ld a, h + ld [$ffd7], a + ld hl, $c4b3 + ld [hl], $66 + ld hl, $c4c7 + ld a, $67 + ld b, $f + call $627f + ld [hl], $68 + ld hl, $c607 + ld [hl], $3c + xor a + ld b, $12 + ld hl, $cdec + call $627f + call Function3200 + pop hl + ld a, l + ld [hBGMapAddress], a + ld a, h + ld [$ffd7], a + ret +; 1de27f + +Function1de27f: ; 1de27f + push de + ld de, $0014 +.asm_1de283 + ld [hl], a + add hl, de + dec b + jr nz, .asm_1de283 + pop de + ret +; 1de28a + Function1de28a: ; 1de28a @@ -34937,12 +50071,197 @@ INCBIN "baserom.gbc", $1f0000, $1f09d8 - $1f0000 SECTION "bank7D",DATA,BANK[$7D] -INCBIN "baserom.gbc", $1f4000, $1f636a - $1f4000 +Function1f4000: ; 1f4000 + call z, $1e6b + ld a, $6 + call GetSRAMBank + ld hl, $4018 + ld de, $a000 + ld bc, $1000 + call CopyBytes + call CloseSRAM + ret +; 1f4018 + +INCBIN "baserom.gbc", $1f4018, $1f636a - $1f4018 SECTION "bank7E",DATA,BANK[$7E] -INCBIN "baserom.gbc", $1f8000, $1fb8a8 - $1f8000 +Function1f8000: ; 1f8000 + ld a, [rSVBK] + push af + ld a, $3 + ld [rSVBK], a + xor a + ld hl, $d100 + ld bc, $00e0 + call ByteFill + ld a, $ff + ld [$d10c], a + ld [$d147], a + ld [$d182], a + ld de, $d100 + ld a, [hRandomAdd] + ld b, a +.asm_1f8022 + call RNG + ld a, [hRandomAdd] + add b + ld b, a + and $1f + cp $15 + jr nc, .asm_1f8022 + ld b, a + ld a, $1 + call GetSRAMBank + ld c, $7 + ld hl, $be48 +.asm_1f803a + ld a, [hli] + cp b + jr z, .asm_1f8022 + dec c + jr nz, .asm_1f803a + ld hl, $be48 + ld a, [$be46] + ld c, a + ld a, b + ld b, $0 + add hl, bc + ld [hl], a + call CloseSRAM + push af + ld hl, $414e + ld bc, $000b + call AddNTimes + ld bc, $000b + call CopyBytes + call $4081 + pop af + ld hl, $4000 + ld bc, $0024 + call AddNTimes + ld bc, $0024 +.asm_1f8070 + ld a, $7c + call GetFarByte + ld [de], a + inc hl + inc de + dec bc + ld a, b + or c + jr nz, .asm_1f8070 + pop af + ld [rSVBK], a + ret +; 1f8081 + +Function1f8081: ; 1f8081 + ld c, $3 + push bc + ld a, $1 + call GetSRAMBank +.asm_1f8089 + ld a, [$d800] + dec a + ld hl, $4450 + ld bc, $04d7 + call AddNTimes + ld a, [hRandomAdd] + ld b, a +.asm_1f8099 + call RNG + ld a, [hRandomAdd] + add b + ld b, a + and $1f + cp $15 + jr nc, .asm_1f8099 + ld bc, $003b + call AddNTimes + ld a, [hli] + ld b, a + ld a, [hld] + ld c, a + ld a, [$d10b] + cp b + jr z, .asm_1f8089 + ld a, [$d10c] + cp c + jr z, .asm_1f8089 + ld a, [$d146] + cp b + jr z, .asm_1f8089 + ld a, [$d147] + cp c + jr z, .asm_1f8089 + ld a, [$d181] + cp b + jr z, .asm_1f8089 + ld a, [$d182] + cp c + jr z, .asm_1f8089 + ld a, [$be51] + cp b + jr z, .asm_1f8089 + ld a, [$be52] + cp b + jr z, .asm_1f8089 + ld a, [$be53] + cp b + jr z, .asm_1f8089 + ld a, [$be54] + cp b + jr z, .asm_1f8089 + ld a, [$be55] + cp b + jr z, .asm_1f8089 + ld a, [$be56] + cp b + jr z, .asm_1f8089 + ld bc, $003b + call CopyBytes + ld a, [$d265] + push af + push de + ld hl, $ffc5 + add hl, de + ld a, [hl] + ld [$d265], a + ld bc, $0030 + add hl, bc + push hl + call GetPokemonName + ld h, d + ld l, e + pop de + ld bc, $000b + call CopyBytes + pop de + pop af + ld [$d265], a + pop bc + dec c + jp nz, $4083 + ld a, [$be51] + ld [$be54], a + ld a, [$be52] + ld [$be55], a + ld a, [$be53] + ld [$be56], a + ld a, [$d10b] + ld [$be51], a + ld a, [$d146] + ld [$be52], a + ld a, [$d181] + ld [$be53], a + call CloseSRAM + ret +; 1f814e + +INCBIN "baserom.gbc", $1f814e, $1fb8a8 - $1f814e SECTION "bank7F",DATA,BANK[$7F] -- cgit v1.2.3 From 6343e2ddaf96b2dcc2cc0c70c951c379907b33ff Mon Sep 17 00:00:00 2001 From: yenatch Date: Fri, 26 Jul 2013 23:49:33 -0400 Subject: Reset --- main.asm | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index 413bd04e5..c7f2dd07b 100644 --- a/main.asm +++ b/main.asm @@ -56,8 +56,23 @@ Start: SECTION "start",HOME[$150] -INCBIN "baserom.gbc", $150, $16e - $150 - +Reset: ; 150 + di + call CleanSoundRestart + xor a + ld [$ffde], a + call ClearPalettes + xor a + ld [rIF], a + ld a, $1 + ld [rIE], a + ei + ld hl, $cfbe + set 7, [hl] + ld c, $20 + call DelayFrames + jr Function17d +; 16e Function16e: ; 16e cp $11 @@ -72,6 +87,9 @@ Function16e: ; 16e ld [hCGB], a ld a, $1 ld [$ffea], a +; 17d + +Function17d: ; 17d di xor a ld [rIF], a @@ -14056,7 +14074,7 @@ Function5e5d: ; 5e5d ld a, [$d4b5] cp $2 jr z, .asm_5e80 - jp $0150 + jp Reset .asm_5e80 call Function5de2 @@ -16643,7 +16661,7 @@ SpecialsPointers: ; 0xc029 dbw $46, $7a38 dbw $5c, $4bd3 dbw $45, $7656 - dbw $00, $0150 + dbw BANK(Reset), Reset dbw $40, $51f1 dbw $40, $5220 dbw $40, $5225 -- cgit v1.2.3 From 5ecf9f10817aecc877c4d6c1a31fd9c87c9e4fe1 Mon Sep 17 00:00:00 2001 From: yenatch Date: Sat, 27 Jul 2013 05:43:15 -0400 Subject: were gonna get bank 0 done!! --- main.asm | 2555 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 2494 insertions(+), 61 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index c7f2dd07b..63f1dbbbf 100644 --- a/main.asm +++ b/main.asm @@ -294,8 +294,40 @@ Function485: ; 485 ret ; 48c -INCBIN "baserom.gbc", $48c, $4b6 - $48c +Function48c: ; 48c + ld a, [TimeOfDayPal] + ld b, a + ld hl, $0538 + ld a, l + sub b + ld l, a + jr nc, .asm_499 + dec h +.asm_499 + ld a, [hli] + ld [rBGP], a + ld a, [hli] + ld [rOBP0], a + ld a, [hli] + ld [rOBP1], a + ret +; 4a3 + + +Function4a3: ; 4a3 + ld a, [hCGB] + and a + jr z, .asm_4af + ld hl, $0517 + ld b, $4 + jr Function4c7 + +.asm_4af + ld hl, IncGradGBPalTable_01 + ld b, $4 + jr Function4c7 +; 4b6 Function4b6: ; 4b6 ld a, [hCGB] @@ -303,12 +335,14 @@ Function4b6: ; 4b6 jr z, .asm_4c2 ld hl, $0526 ld b, $3 - jr .asm_4c7 + jr Function4c7 .asm_4c2 ld hl, $053e ld b, $3 +; 4c7 +Function4c7: ; 4c7 .asm_4c7 push de ld a, [hli] @@ -364,8 +398,15 @@ IncGradGBPalTable_01: ; 52f ; 547 -INCBIN "baserom.gbc", $547, $552 - $547 - +Function547: ; 547 + ld a, [hLCDStatCustom] + cp $43 + ret nz + ld c, a + ld a, [$d100] + ld [$ff00+c], a + ret +; 552 Function552: ; 552 push af @@ -443,7 +484,15 @@ EnableLCD: ; 58a AskTimer: ; 591 - INCBIN "baserom.gbc", $591, $59c - $591 + push af + ld a, [$ffe9] + and a + jr z, .asm_59a + call Function3e93 + +.asm_59a + pop af + reti ; 59c @@ -716,8 +765,17 @@ SetClock: ; 691 ret ; 6c4 -INCBIN "baserom.gbc", $6c4, $6d3 - $6c4 +Function6c4: ; 6c4 + xor a + push af + ld a, $0 + call GetSRAMBank + pop af + ld [$ac60], a + call CloseSRAM + ret +; 6d3 Function6d3: ; 6d3 ld hl, $ac60 @@ -973,7 +1031,46 @@ Function78a: ; 78a ret ; 83b -INCBIN "baserom.gbc", $83b, $87d - $83b +Function83b: ; 83b + ld hl, $cf56 + ld de, $cf51 + ld c, $2 + ld a, $1 + ld [$ffcc], a +.asm_847 + call DelayFrame + ld a, [hl] + ld [$ffcd], a + call Function78a + ld b, a + inc hl + ld a, [$ffcc] + and a + ld a, $0 + ld [$ffcc], a + jr nz, .asm_847 + ld a, b + ld [de], a + inc de + dec c + jr nz, .asm_847 + ret +; 862 + +Function862: ; 862 + call $309d + callab Function4000 + call Function87d + jp $30b4 +; 871 + + +Function871: ; 871 + call $309d + callab Function4000 + jp Function87d +; 87d + Function87d: ; 87d @@ -1078,13 +1175,48 @@ Function908: ; 908 ret ; 919 -INCBIN "baserom.gbc", $919, $92e - $919 +Function919: ; 919 + ld a, [InLinkBattle] + and a + ret nz + ld a, $2 + ld [rSB], a + xor a + ld [$ffce], a + ld a, $0 + ld [rSC], a + ld a, $80 + ld [rSC], a + ret +; 92e + INCLUDE "engine/joypad.asm" -INCBIN "baserom.gbc", $a1b, $a36 - $a1b +Functiona1b: ; a1b +.asm_a1b + call DelayFrame + push bc + call Functiona57 + pop bc + ld a, [hJoyDown] + cp $46 + jr z, .asm_a34 + ld a, [$ffa9] + and $9 + jr nz, .asm_a34 + dec c + jr nz, .asm_a1b + and a + ret + +.asm_a34 + scf + ret +; a36 + Functiona36: ; a36 @@ -1143,7 +1275,40 @@ Functiona57: ; a57 ret ; a80 -INCBIN "baserom.gbc", $a80, $aaf - $a80 +Functiona80: ; a80 + ld a, [hConnectionStripLength] + push af + ld a, [hConnectedMapWidth] + push af + xor a + ld [hConnectionStripLength], a + ld a, $6 + ld [hConnectedMapWidth], a +.asm_a8d + push hl + ld hl, $c606 + call $0b06 + pop hl + call Functiona57 + ld a, [$ffa9] + and $3 + jr z, .asm_a8d + pop af + ld [hConnectedMapWidth], a + pop af + ld [hConnectionStripLength], a + ret +; aa5 + +Functionaa5: ; aa5 +.asm_aa5 + call Functiona57 + ld a, [$ffa9] + and $3 + jr z, .asm_aa5 + ret +; aaf + Functionaaf: ; aaf @@ -1207,7 +1372,50 @@ Functionaf5: ; af5 ret ; b06 -INCBIN "baserom.gbc", $b06, $b40 - $b06 +Functionb06: ; b06 + push bc + ld a, [hl] + ld b, a + ld a, $ee + cp b + pop bc + jr nz, .asm_b27 + ld a, [hConnectionStripLength] + dec a + ld [hConnectionStripLength], a + ret nz + ld a, [hConnectedMapWidth] + dec a + ld [hConnectedMapWidth], a + ret nz + ld a, $7a + ld [hl], a + ld a, $ff + ld [hConnectionStripLength], a + ld a, $6 + ld [hConnectedMapWidth], a + ret + +.asm_b27 + ld a, [hConnectionStripLength] + and a + ret z + dec a + ld [hConnectionStripLength], a + ret nz + dec a + ld [hConnectionStripLength], a + ld a, [hConnectedMapWidth] + dec a + ld [hConnectedMapWidth], a + ret nz + ld a, $6 + ld [hConnectedMapWidth], a + ld a, $ee + ld [hl], a + ret +; b40 + FarDecompress: ; b40 ; Decompress graphics data at a:hl to de @@ -1740,7 +1948,70 @@ DmgToCgbObjPals: ; ccb ; cf8 -INCBIN "baserom.gbc", $cf8, $d50 - $cf8 +Functioncf8: ; cf8 + ld [rOBP0], a + push af + ld a, [hCGB] + and a + jr z, .asm_d22 + push hl + push de + push bc + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, $d0c0 + ld de, $d040 + ld a, [rOBP0] + ld b, a + ld c, $1 + call CopyPals + ld a, $1 + ld [hCGBPalUpdate], a + pop af + ld [rSVBK], a + pop bc + pop de + pop hl + +.asm_d22 + pop af + ret +; d24 + +Functiond24: ; d24 + ld [rOBP1], a + push af + ld a, [hCGB] + and a + jr z, .asm_d4e + push hl + push de + push bc + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, $d0c8 + ld de, $d048 + ld a, [rOBP1] + ld b, a + ld c, $1 + call CopyPals + ld a, $1 + ld [hCGBPalUpdate], a + pop af + ld [rSVBK], a + pop bc + pop de + pop hl + +.asm_d4e + pop af + ret +; d50 + CopyPals: ; d50 @@ -1796,14 +2067,47 @@ CopyPals: ; d50 ; d79 -INCBIN "baserom.gbc", $d79, $d90 - $d79 +Functiond79: ; d79 + ld a, [hCGB] + and a + ret z + ld a, $1 + ld [rVBK], a + ld hl, VTiles0 + ld bc, $2000 + xor a + call ByteFill + ld a, $0 + ld [rVBK], a + ret +; d90 + Functiond90: ; d90 ret ; d91 -INCBIN "baserom.gbc", $d91, $db1 - $d91 +Functiond91: ; d91 + ld a, [hCGB] + and a + ret z + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, $d080 + ld bc, $0050 + xor a + call ByteFill + pop af + ld [rSVBK], a + ld a, $1 + ld [hCGBPalUpdate], a + call DelayFrame + ret +; db1 + Functiondb1: ; db1 @@ -1819,7 +2123,19 @@ Functiondb1: ; db1 ret ; dbd -INCBIN "baserom.gbc", $dbd, $dc9 - $dbd +Functiondbd: ; dbd + ld a, [hROMBank] + push af + ld a, $13 + rst Bankswitch + + call $403f + pop af + rst Bankswitch + + ret +; dc9 + Functiondc9: ; dc9 @@ -1868,7 +2184,64 @@ Functiondef: ; def ret ; dfd -INCBIN "baserom.gbc", $dfd, $e4a - $dfd +Functiondfd: ; dfd + dec c + ld a, [hBGMapMode] + push af + xor a + ld [hBGMapMode], a + ld a, [hROMBank] + push af + ld a, b + rst Bankswitch + +.asm_e09 + ld a, d + ld [rHDMA1], a + ld a, e + and $f0 + ld [rHDMA2], a + ld a, h + and $1f + ld [rHDMA3], a + ld a, l + and $f0 + ld [rHDMA4], a + ld a, c + cp $8 + jr c, .asm_e3c + sub $8 + ld c, a + ld a, $f + ld [hDMATransfer], a + call DelayFrame + ld a, l + add $0 + ld l, a + ld a, h + adc $1 + ld h, a + ld a, e + add $0 + ld e, a + ld a, d + adc $1 + ld d, a + jr .asm_e09 + +.asm_e3c + ld a, c + and $7f + ld [hDMATransfer], a + call DelayFrame + pop af + rst Bankswitch + + pop af + ld [hBGMapMode], a + ret +; e4a + Functione4a: ; e4a @@ -1906,7 +2279,29 @@ Functione5f: ; e5f ret ; e6c -INCBIN "baserom.gbc", $e6c, $e8d - $e6c +Functione6c: ; e6c + ld a, $3e + ld hl, $74b0 + rst FarCall + ret +; e73 + +Functione73: ; e73 + push de + ld a, $0 + call GetSRAMBank + push bc + ld de, $a000 + ld a, b + call FarDecompress + pop bc + pop hl + ld de, $a000 + call Functioneba + call CloseSRAM + ret +; e8d + FarCopyBytes: ; e8d @@ -2287,7 +2682,15 @@ SpeechTextBox: ; 103e ; 1048 -INCBIN "baserom.gbc", $1048, $1057 - $1048 +INCBIN "baserom.gbc", $1048, $1052 - $1048 + + +Function1052: ; 1052 + ld hl, $1056 + ret +; 1056 + +INCBIN "baserom.gbc", $1056, $1057 - $1056 PrintText: ; 1057 @@ -2559,11 +2962,18 @@ Function11f6: ; 11f6 jp $126a ; 11fd -INCBIN "baserom.gbc", $11fd, $1203 - $11fd +Function11fd: ; 11fd + ld a, [hBattleTurn] + xor $1 + jr Function1205 +; 1203 Char5D: ; 1203 ld a, [hBattleTurn] +; 1205 + +Function1205: ; 1205 push de and a jr nz, .asm_120e ; 0x1207 $5 @@ -2874,7 +3284,26 @@ Function13cd: ; 13cd ret ; 13d4 -INCBIN "baserom.gbc", $13d4, $13e5 - $13d4 +Function13d4: ; 13d4 + ld b, a + ld a, [hROMBank] + push af + ld a, b + rst Bankswitch + + call PlaceString + pop af + rst Bankswitch + + ret +; 13e0 + +Function13e0: ; 13e0 + ld hl, $13e4 + ret +; 13e4 + +INCBIN "baserom.gbc", $13e4, $13e5 - $13e4 Function13e5: ; 13e5 @@ -2914,7 +3343,324 @@ Function13ff: ; 13ff ret ; 1410 -INCBIN "baserom.gbc", $1410, $15d8 - $1410 +INCBIN "baserom.gbc", $1410, $143e - $1410 + + +Function143e: ; 143e + ld d, h + ld e, l + ld h, b + ld l, c + call PlaceString + ld h, d + ld l, e + inc hl + ret +; 1449 + +Function1449: ; 1449 + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + push hl + ld h, b + ld l, c + call PlaceString + pop hl + ret +; 1455 + +Function1455: ; 1455 + ld a, [hROMBank] + push af + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld [hROMBank], a + ld [$2000], a + push hl + ld h, d + ld l, e + call Function13f6 + pop hl + pop af + ld [hROMBank], a + ld [$2000], a + ret +; 1470 + +Function1470: ; 1470 + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + push hl + ld h, b + ld l, c + ld c, a + call PrintBCDNumber + ld b, h + ld c, l + pop hl + ret +; 1480 + +Function1480: ; 1480 + ld a, [hli] + ld [$d0e6], a + ld c, a + ld a, [hli] + ld [$d0e7], a + ld b, a + ret +; 148b + +Function148b: ; 148b + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld b, a + ld a, [hli] + ld c, a + push hl + ld h, d + ld l, e + call TextBox + pop hl + ret +; 149b + +Function149b: ; 149b + ld bc, $c5e1 + ret +; 149f + +Function149f: ; 149f + ld a, [InLinkBattle] + cp $3 + jp z, $1562 + cp $4 + jp z, $1562 + push hl + call Function13c7 + push bc + call Functionaaf + pop bc + call Function13cd + pop hl + ret +; 14ba + +Function14ba: ; 14ba + push hl + call Function13cd + call Function138c + call Function138c + pop hl + ld bc, $c5e1 + ret +; 14c9 + +Function14c9: ; 14c9 + bit 7, h + jr nz, .asm_14ce + jp [hl] + +.asm_14ce + ld a, $50 + ld [hl], a + ret +; 14d2 + +Function14d2: ; 14d2 + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + push hl + ld h, b + ld l, c + ld b, a + and $f + ld c, a + ld a, b + and $f0 + swap a + set 6, a + ld b, a + call Function3198 + ld b, h + ld c, l + pop hl + ret +; 14ed + +Function14ed: ; 14ed + push hl + push bc + call GetJoypadPublic + ld a, [hJoyDown] + and $3 + jr nz, .asm_14fd + ld c, $1e + call DelayFrames + +.asm_14fd + pop bc + pop hl + ret +; 1500 + +Function1500: ; 1500 + push bc + dec hl + ld a, [hli] + ld b, a + push hl + ld hl, $152d +.asm_1508 + ld a, [hli] + cp $ff + jr z, .asm_151f + cp b + jr z, .asm_1514 + inc hl + inc hl + jr .asm_1508 + +.asm_1514 + push de + ld e, [hl] + inc hl + ld d, [hl] + call StartSFX + call WaitSFX + pop de + +.asm_151f + pop hl + pop bc + ret +; 1522 + +Function1522: ; 1522 + push de + ld e, [hl] + inc hl + ld d, [hl] + call Function37ce + pop de + pop hl + pop bc + ret +; 152d + +Function152d: ; 152d + dec bc + nop + nop + ld [de], a + dec l + nop + ld c, $9 + nop + rrca + ld bc, $1000 + ld [bc], a + nop + ld de, $000a + inc de + inc l + nop + rst $38 + ld a, [hli] + ld d, a + push hl + ld h, b + ld l, c +.asm_1548 + push de + ld a, $75 + ld [hli], a + call GetJoypadPublic + ld a, [hJoyDown] + and $3 + jr nz, .asm_155a + ld c, $a + call DelayFrames + +.asm_155a + pop de + dec d + jr nz, .asm_1548 + ld b, h + ld c, l + pop hl + ret +; 1562 + + + +Function1562: ; 1562 + push hl + push bc + call Functionaaf + pop bc + pop hl + ret +; 156a + +Function156a: ; 156a + ld a, [hli] + push hl + ld e, a + ld d, $0 + ld hl, $4000 + add hl, de + add hl, de + ld a, $9 + call GetFarHalfword + ld d, h + ld e, l + ld h, b + ld l, c + call PlaceString + pop hl + ret +; 1582 + +Function1582: ; 1582 + call GetWeekday + push hl + push bc + ld c, a + ld b, $0 + ld hl, $15a2 + add hl, bc + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld d, h + ld e, l + pop hl + call PlaceString + ld h, b + ld l, c + ld de, $15d4 + call PlaceString + pop hl + ret +; 15a2 + +INCBIN "baserom.gbc", $15a2, $15d8 - $15a2 DMATransfer: ; 15d8 ; DMA transfer @@ -3574,7 +4320,43 @@ Function180e: ; 180e ret ; 1836 -INCBIN "baserom.gbc", $1836, $185d - $1836 +Function1836: ; 1836 + push de + push hl + ld b, a + ld a, [hROMBank] + push af + ld a, $5 + rst Bankswitch + + ld a, b + call $42a7 + ld c, a + pop de + ld a, d + rst Bankswitch + + pop hl + pop de + ret +; 184a + +Function184a: ; 184a + ld a, [StandingTile] + call GetTileType + ld b, a + ret +; 1852 + +Function1852: ; 1852 + ld a, [StandingTile] + call GetTileType + sub $1 + ret z + and a + ret +; 185d + GetTileType: ; 185d @@ -3633,7 +4415,20 @@ Function188e: ; 188e ret ; 1894 -INCBIN "baserom.gbc", $1894, $18a0 - $1894 +Function1894: ; 1894 + cp $12 + ret z + cp $1a + ret +; 189a + +Function189a: ; 189a + cp $15 + ret z + cp $1d + ret +; 18a0 + CheckCounterTile: ; 18a0 @@ -3677,7 +4472,18 @@ CheckWaterfallTile: ; 18bd ; 18c3 -INCBIN "baserom.gbc", $18c3, $18d2 - $18c3 +Function18c3: ; 18c3 + ld a, [StandingTile] + cp $71 + ret z + cp $79 + ret z + cp $7a + ret z + cp $7b + ret +; 18d2 + GetMapObject: ; 18d2 @@ -3709,7 +4515,87 @@ Function18de: ; 18de ret ; 18f5 -INCBIN "baserom.gbc", $18f5, $1956 - $18f5 +Function18f5: ; 18f5 + ld hl, $0006 + add hl, bc + ld a, [hl] + cp $ff + jr nz, .asm_1921 + ld hl, $0007 + add hl, bc + ld a, [hl] + cp $ff + jr z, .asm_191c + ld hl, .data_191e + ld a, [TimeOfDay] + add l + ld l, a + jr nc, .asm_1912 + inc h + +.asm_1912 + ld a, [hl] + ld hl, $0007 + add hl, bc + and [hl] + jr nz, .asm_191c + scf + ret + +.asm_191c + and a + ret + +.data_191e + db $1 + db $2 + db $4 + +.asm_1921 + ld hl, $0006 + add hl, bc + ld d, [hl] + ld hl, $0007 + add hl, bc + ld e, [hl] + ld hl, hHours + ld a, d + cp e + jr z, .asm_1949 + jr c, .asm_193f + ld a, [hl] + cp d + jr nc, .asm_1949 + cp e + jr c, .asm_1949 + jr z, .asm_1949 + jr .asm_194b + +.asm_193f + ld a, e + cp [hl] + jr c, .asm_194b + ld a, [hl] + cp d + jr nc, .asm_1949 + jr .asm_194b + +.asm_1949 + and a + ret + +.asm_194b + scf + ret +; 194d + +Function194d: ; 194d + ld [hConnectionStripLength], a + call GetMapObject + call $40e7 + ret +; 1956 + Function1956: ; 1956 @@ -3762,7 +4648,50 @@ Function199f: ; 199f ret ; 19a6 -INCBIN "baserom.gbc", $19a6, $19e9 - $19a6 +Function19a6: ; 19a6 + push hl + call GetMapObject + ld d, b + ld e, c + ld a, $ff + ld [de], a + inc de + pop hl + ld bc, $000f + call CopyBytes + ret +; 19b8 + +Function19b8: ; 19b8 + call GetMapObject + ld hl, $0000 + add hl, bc + ld a, [hl] + push af + ld [hl], $ff + inc hl + ld bc, $000f + xor a + call ByteFill + pop af + cp $ff + ret z + cp $d + ret nc + ld b, a + ld a, [$d4cd] + cp b + jr nz, .asm_19de + ld a, $ff + ld [$d4cd], a + +.asm_19de + ld a, b + call Function1ae5 + callba Function4357 + ret +; 19e9 + Function19e9: ; 19e9 @@ -3929,7 +4858,43 @@ Function1a71: ; 1a71 ret ; 1aae -INCBIN "baserom.gbc", $1aae, $1ad2 - $1aae +Function1aae: ; 1aae + ld a, [hROMBank] + push af + ld a, [hli] + rst Bankswitch + + ld a, [hli] + ld d, [hl] + ld hl, $001b + add hl, bc + add [hl] + ld e, a + ld a, d + adc $0 + ld d, a + inc [hl] + ld a, [de] + ld h, a + pop af + rst Bankswitch + + ld a, h + ret +; 1ac6 + +Function1ac6: ; 1ac6 + ld hl, VramState + set 0, [hl] + ret +; 1acc + +Function1acc: ; 1acc + ld hl, VramState + res 0, [hl] + ret +; 1ad2 + Function1ad2: ; 1ad2 @@ -3960,7 +4925,20 @@ Function1af1: ; 1af1 ret ; 1af8 -INCBIN "baserom.gbc", $1af8, $1b07 - $1af8 +Function1af8: ; 1af8 + push af + ld hl, $0008 + add hl, bc + ld a, [hl] + and $f3 + ld e, a + pop af + and $c + or e + ld [hl], a + ret +; 1b07 + GetSpriteDirection: ; 1b07 @@ -3972,7 +4950,139 @@ GetSpriteDirection: ; 1b07 ; 1b0f -INCBIN "baserom.gbc", $1b0f, $1bb1 - $1b0f +Function1b0f: ; 1b0f + add $10 + ld e, a + ld a, [hROMBank] + push af + ld a, $2 + rst Bankswitch + + call $44d9 + pop af + rst Bankswitch + + ret +; 1b1e + +Function1b1e: ; 1b1e + ld [$d003], a + xor a + ld [DefaultFlypoint], a + ld a, $0 + ld [$d004], a + ld a, $7 + ld [StartFlypoint], a + ld a, $d0 + ld [EndFlypoint], a + ret +; 1b35 + +Function1b35: ; 1b35 + ld a, [DefaultFlypoint] + and a + ret z + dec a + ld [DefaultFlypoint], a + ret +; 1b3f + +Function1b3f: ; 1b3f + push hl + push de + ld hl, DefaultFlypoint + ld e, [hl] + inc [hl] + ld d, $0 + ld hl, MovementBuffer + add hl, de + ld [hl], a + pop de + pop hl + ret +; 1b50 + +Function1b50: ; 1b50 + push af + ld a, c + and a + jr nz, .asm_1b57 + pop af + ret + +.asm_1b57 + pop af +.asm_1b58 + call $1b3f + dec c + jr nz, .asm_1b58 + ret +; 1b5f + +Function1b5f: ; 1b5f + push af + ld a, b + sub d + ld h, $2 + jr nc, .asm_1b6a + dec a + cpl + ld h, $3 + +.asm_1b6a + ld d, a + ld a, c + sub e + ld l, $1 + jr nc, .asm_1b75 + dec a + cpl + ld l, $0 + +.asm_1b75 + ld e, a + cp d + jr nc, .asm_1b7f + ld a, h + ld h, l + ld l, a + ld a, d + ld d, e + ld e, a + +.asm_1b7f + pop af + ld b, a + ld a, h + call $1b92 + ld c, d + call $1b50 + ld a, l + call $1b92 + ld c, e + call $1b50 + ret +; 1b92 + +Function1b92: ; 1b92 + push de + push hl + ld l, b + ld h, $0 + add hl, hl + add hl, hl + ld e, a + ld d, $0 + add hl, de + ld de, $1ba5 + add hl, de + ld a, [hl] + pop hl + pop de + ret +; 1ba5 + +INCBIN "baserom.gbc", $1ba5, $1bb1 - $1ba5 Function1bb1: ; 1bb1 @@ -4039,7 +5149,15 @@ Function1bee: ; 1bee ret ; 1bf7 -INCBIN "baserom.gbc", $1bf7, $1c00 - $1bf7 +Function1bf7: ; 1bf7 + ld hl, $cfac + ld a, [hli] + ld h, [hl] + ld l, a + ld [hl], $7f + ret +; 1c00 + Function1c00: ; 1c00 @@ -4240,7 +5358,13 @@ Function1cf1: ; 1cf1 ret ; 1cfd -INCBIN "baserom.gbc", $1cfd, $1d05 - $1cfd + +Function1cfd: ; 1cfd + ld a, [$cf83] + ld c, a + ld a, [$cf82] + ld b, a +; 1d05 Function1d05: ; 1d05 @@ -4304,7 +5428,11 @@ Function1d3c: ; 0x1d3c ret ; 0x1d4b -INCBIN "baserom.gbc", $1d4b, $1d4f - $1d4b +Function1d4b: ; 1d4b + ld [$cf88], a + ret +; 1d4f + Function1d4f: ; 1d4f @@ -4365,7 +5493,14 @@ Function1d81: ; 0x1d81 ret ; 0x1dab -INCBIN "baserom.gbc", $1dab, $1db8 - $1dab +Function1dab: ; 1dab + call Function1d35 + call Function1d81 + call Function1c17 + ld a, [$cfa9] + ret +; 1db8 + Function1db8: ; 0x1db8 push hl @@ -4471,16 +5606,19 @@ Function1e35: ; 1e35 ret ; 1e5d -INCBIN "baserom.gbc", $1e5d, $1e6b - $1e5d - -Function1e6b: ; 1e6b - dec de - call $1ff8 +Function1e5d: ; 1e5d + call MenuFunc_1e7f + call MenuWriteText + call $1eff + call $1f23 + call Function1bdd + call Function1ff8 ret ; 1e70 + SetUpMenu: ; 1e70 call MenuFunc_1e7f ; ??? call MenuWriteText @@ -4512,7 +5650,225 @@ MenuWriteText: ; 0x1e8c ret ; 0x1ea6 -INCBIN "baserom.gbc", $1ea6, $1fbf - $1ea6 +Function1ea6: ; 1ea6 + ld a, [$cf83] + ld c, a + ld a, [$cf85] + sub c + ld c, a + ld a, [$cf92] + add a + inc a + ld b, a + ld a, [$cf82] + add b + ld [$cf84], a + ret +; 1ebd + +Function1ebd: ; 1ebd + ld hl, $cf93 + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [$cf76] + and a + jr z, .asm_1ed3 + ld b, a + ld c, $ff +.asm_1ecc + ld a, [hli] + cp c + jr nz, .asm_1ecc + dec b + jr nz, .asm_1ecc + +.asm_1ed3 + ld d, h + ld e, l + ld a, [hl] + ld [$cf92], a + ret +; 1eda + +Function1eda: ; 1eda + call $1cfd + ld bc, $002a + add hl, bc +.asm_1ee1 + inc de + ld a, [de] + cp $ff + ret z + ld [MenuSelection], a + push de + push hl + ld d, h + ld e, l + ld hl, $cf95 + call $1efb + pop hl + ld de, $0028 + add hl, de + pop de + jr .asm_1ee1 +; 1efb + +Function1efb: ; 1efb + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 1eff + +Function1eff: ; 1eff + call Function1c10 + ld hl, $cfa8 + ld a, [$cf91] + bit 3, a + jr z, .asm_1f0e + set 3, [hl] + +.asm_1f0e + ld a, [$cf91] + bit 2, a + jr z, .asm_1f19 + set 5, [hl] + set 4, [hl] + +.asm_1f19 + ret +; 1f1a + + +Function1f1a: ; 1f1a + call Function1bd3 + ld hl, $cfa8 + and [hl] + jr Function1f2a +; 1f23 + +Function1f23: ; 1f23 + xor a + ld [$cf73], a + call Function1bc9 +; 1f2a + +Function1f2a: ; 1f2a + bit 0, a + jr nz, .asm_1f52 + bit 1, a + jr nz, .asm_1f6d + bit 3, a + jr nz, .asm_1f6d + bit 4, a + jr nz, .asm_1f44 + bit 5, a + jr nz, .asm_1f4b + xor a + ld [$cf73], a + jr .asm_1f57 + +.asm_1f44 + ld a, $10 + ld [$cf73], a + jr .asm_1f57 + +.asm_1f4b + ld a, $20 + ld [$cf73], a + jr .asm_1f57 + +.asm_1f52 + ld a, $1 + ld [$cf73], a + +.asm_1f57 + call $1ebd + ld a, [$cfa9] + ld l, a + ld h, $0 + add hl, de + ld a, [hl] + ld [MenuSelection], a + ld a, [$cfa9] + ld [$cf88], a + and a + ret + +.asm_1f6d + ld a, $2 + ld [$cf73], a + ld a, $ff + ld [MenuSelection], a + scf + ret +; 1f79 + +Function1f79: ; 1f79 + push de + ld hl, $cf97 + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [MenuSelection] + call GetNthString + ld d, h + ld e, l + pop hl + call PlaceString + ret +; 1f8d + +Function1f8d: ; 1f8d + push de + ld a, [MenuSelection] + call $1fb1 + inc hl + inc hl + ld a, [hli] + ld d, [hl] + ld e, a + pop hl + call PlaceString + ret +; 1f9e + +Function1f9e: ; 1f9e + call $1fb1 + inc hl + inc hl + ld a, [hli] + ld d, [hl] + ld e, a + ret +; 1fa7 + +Function1fa7: ; 1fa7 + ld a, [MenuSelection] + call $1fb1 + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 1fb1 + + + +Function1fb1: ; 1fb1 + ld e, a + ld d, $0 + ld hl, $cf97 + ld a, [hli] + ld h, [hl] + ld l, a + add hl, de + add hl, de + add hl, de + add hl, de + ret +; 1fbf + Function1fbf: ; 1fbf @@ -4571,7 +5927,57 @@ PlayClickSFX: ; 2009 ret ; 0x2012 -INCBIN "baserom.gbc", $2012, $2057 - $2012 +Function2012: ; 2012 + call Function1d4f + call Functiona46 + call Function1c07 + ret +; 201c + +Function201c: ; 201c + ld [hBuffer], a + ld a, [hROMBank] + push af + ld a, [hBuffer] + rst Bankswitch + + call PlaceString + pop af + rst Bankswitch + + ret +; 202a + +Function202a: ; 202a + ld a, [hROMBank] + ld [$cf94], a + ld a, $9 + ld hl, $400e + rst FarCall + ld a, [$cf88] + ret +; 2039 + +Function2039: ; 2039 + ld a, [hROMBank] + ld [$cf94], a + ld a, $9 + ld hl, $4022 + rst FarCall + ld a, [$cf88] + ret +; 2048 + +Function2048: ; 2048 + ld a, [hROMBank] + ld [$cf94], a + ld a, $9 + ld hl, $403c + rst FarCall + ld a, [$cf88] + ret +; 2057 + Function2057: ; 2057 @@ -4626,7 +6032,17 @@ AskSerial: ; 2063 ret ; 208a -INCBIN "baserom.gbc", $208a, $209e - $208a +Function208a: ; 208a + xor a + ld [GameTimeCap], a + ld [GameTimeHours], a + ld [$d4c5], a + ld [GameTimeMinutes], a + ld [GameTimeSeconds], a + ld [GameTimeFrames], a + ret +; 209e + GameTimer: ; 209e ; precautionary @@ -4757,7 +6173,14 @@ UpdateGameTimer: ; 20ad ; 210f -INCBIN "baserom.gbc", $210f, $211b - $210f +Function210f: ; 210f + ld hl, $c7e8 + ld bc, $0018 + ld a, $0 + call ByteFill + ret +; 211b + Function211b: ; 211b @@ -4776,7 +6199,24 @@ Function211b: ; 211b ret ; 212a -INCBIN "baserom.gbc", $212a, $2147 - $212a +Function212a: ; 212a + ld a, [MapGroup] + ld b, a + ld a, [MapNumber] + ld c, a + xor a + ld [$dbf7], a + ld [$dbf8], a + call Function2147 + ret c + ld a, e + ld [$dbf7], a + ld a, d + ld [$dbf8], a + xor a + ret +; 2147 + Function2147: ; 2147 @@ -4976,7 +6416,18 @@ Function2198: ; 2198 ret ; 222a -INCBIN "baserom.gbc", $222a, $224a - $222a +Function222a: ; 222a + ld a, $fa + ld [$ff9f], a + ld a, $5 + ld hl, $5363 + rst FarCall + xor a + ld [$ff9f], a + ret +; 2238 + +INCBIN "baserom.gbc", $2238, $224a - $2238 Function224a: ; 224a @@ -5128,7 +6579,119 @@ CheckIndoorMap: ; 22f4 ; 2300 -INCBIN "baserom.gbc", $2300, $23a3 - $2300 +Function2300: ; 2300 + cp $3 + ret z + cp $6 + ret z + cp $5 + ret +; 2309 + +Function2309: ; 2309 + call $2326 + call Function2c52 + call $234f + xor a + call $2336 + ret +; 2317 + +Function2317: ; 2317 + call $2326 + call Function2c52 + call $234f + ld a, $1 + call $2336 + ret +; 2326 + + + +Function2326: ; 2326 + call $2c3d + call $2c1c + call GetSecondaryMapHeaderPointer + call $235c + call $2368 + ret +; 2336 + +Function2336: ; 2336 + push af + ld hl, $d1a6 + ld a, [hli] + ld h, [hl] + ld l, a + inc hl + inc hl + call $23da + call $23f1 + call $2408 + pop af + and a + ret nz + call $241f + ret +; 234f + +Function234f: ; 234f + ld hl, $d1a4 + ld a, [hli] + ld h, [hl] + ld l, a + call $23ac + call $23c3 + ret +; 235c + +Function235c: ; 235c + ld de, $d19d + ld c, $c +.asm_2361 + ld a, [hli] + ld [de], a + inc de + dec c + jr nz, .asm_2361 + ret +; 2368 + +Function2368: ; 2368 + ld a, $ff + ld [NorthConnectedMapGroup], a + ld [SouthConnectedMapGroup], a + ld [WestConnectedMapGroup], a + ld [EastConnectedMapGroup], a + ld a, [$d1a8] + ld b, a + bit 3, b + jr z, .asm_2384 + ld de, NorthConnectedMapGroup + call GetMapConnection + +.asm_2384 + bit 2, b + jr z, .asm_238e + ld de, SouthConnectedMapGroup + call GetMapConnection + +.asm_238e + bit 1, b + jr z, .asm_2398 + ld de, WestConnectedMapGroup + call GetMapConnection + +.asm_2398 + bit 0, b + jr z, .asm_23a2 + ld de, EastConnectedMapGroup + call GetMapConnection + +.asm_23a2 + ret +; 23a3 + GetMapConnection: ; 23a3 @@ -5144,7 +6707,220 @@ GetMapConnection: ; 23a3 ; 23ac -INCBIN "baserom.gbc", $23ac, $24e4 - $23ac +Function23ac: ; 23ac + ld a, [hli] + ld c, a + ld [$dc07], a + ld a, l + ld [$dc08], a + ld a, h + ld [$dc09], a + ld a, c + and a + ret z + ld bc, $0004 + call AddNTimes + ret +; 23c3 + +Function23c3: ; 23c3 + ld a, [hli] + ld c, a + ld [$dc0a], a + ld a, l + ld [$dc0b], a + ld a, h + ld [$dc0c], a + ld a, c + and a + ret z + ld bc, $0003 + call AddNTimes + ret +; 23da + +Function23da: ; 23da + ld a, [hli] + ld c, a + ld [$dbfb], a + ld a, l + ld [$dbfc], a + ld a, h + ld [$dbfd], a + ld a, c + and a + ret z + ld bc, $0005 + call AddNTimes + ret +; 23f1 + +Function23f1: ; 23f1 + ld a, [hli] + ld c, a + ld [$dbfe], a + ld a, l + ld [$dbff], a + ld a, h + ld [$dc00], a + ld a, c + and a + ret z + ld bc, $0008 + call AddNTimes + ret +; 2408 + +Function2408: ; 2408 + ld a, [hli] + ld c, a + ld [$dc01], a + ld a, l + ld [$dc02], a + ld a, h + ld [$dc03], a + ld a, c + and a + ret z + ld bc, $0005 + call AddNTimes + ret +; 241f + +Function241f: ; 241f + push hl + call $2471 + pop de + ld hl, $d72e + ld a, [de] + inc de + ld [$dc04], a + ld a, e + ld [$dc05], a + ld a, d + ld [$dc06], a + ld a, [$dc04] + call $2457 + ld a, [$dc04] + ld c, a + ld a, $10 + sub c + jr z, .asm_2454 + ld bc, $0001 + add hl, bc + ld bc, $0010 +.asm_244a + ld [hl], $0 + inc hl + ld [hl], $ff + dec hl + add hl, bc + dec a + jr nz, .asm_244a + +.asm_2454 + ld h, d + ld l, e + ret +; 2457 + +Function2457: ; 2457 + and a + ret z + ld c, a +.asm_245a + push bc + push hl + ld a, $ff + ld [hli], a + ld b, $d +.asm_2461 + ld a, [de] + inc de + ld [hli], a + dec b + jr nz, .asm_2461 + pop hl + ld bc, $0010 + add hl, bc + pop bc + dec c + jr nz, .asm_245a + ret +; 2471 + +Function2471: ; 2471 + ld hl, $d4fe + ld bc, $01e0 + xor a + call ByteFill + ld hl, $d4fe + ld de, $0028 + ld c, $c + xor a +.asm_2484 + ld [hl], a + add hl, de + dec c + jr nz, .asm_2484 + ret +; 248a + +Function248a: ; 248a + call GetMapEventBank + rst Bankswitch + + ld hl, $d1a6 + ld a, [hli] + ld h, [hl] + ld l, a + inc hl + inc hl + inc hl + ld a, [WarpNumber] + dec a + ld c, a + ld b, $0 + ld a, $5 + call AddNTimes + ld a, [hli] + ld [YCoord], a + ld a, [hli] + ld [XCoord], a + ld a, [hli] + cp $ff + jr nz, .asm_24b3 + call $24ba + +.asm_24b3 + ld a, $41 + ld hl, $486d + rst FarCall + ret +; 24ba + +Function24ba: ; 24ba + ld a, [$d149] + ld [$dcac], a + ld a, [$d14a] + ld [BackupMapGroup], a + ld a, [$d14b] + ld [BackupMapNumber], a + ret +; 24cd + +Function24cd: ; 24cd + ld hl, OverworldMap + ld bc, $0514 + ld a, $0 + call ByteFill + call Function24e4 + call FillMapConnections + ld a, $1 + call Function263b + ret +; 24e4 + Function24e4: ; 24e4 @@ -6214,7 +7990,22 @@ Function2c31: ; 2c31 ret ; 2c3d -INCBIN "baserom.gbc", $2c3d, $2c52 - $2c3d +Function2c3d: ; 2c3d + ld a, [hROMBank] + push af + ld a, $25 + rst Bankswitch + + call $2be5 + ld de, $d198 + ld bc, $0005 + call CopyBytes + pop af + rst Bankswitch + + ret +; 2c52 + Function2c52: ; 2c52 @@ -7099,7 +8890,46 @@ Function306b: ; 306b ret ; 307b -INCBIN "baserom.gbc", $307b, $30d6 - $307b +INCBIN "baserom.gbc", $307b, $309d - $307b + + +Function309d: ; 309d + ld a, [rSVBK] + push af + ld a, $2 + ld [rSVBK], a + ld hl, TileMap + ld de, $d000 + ld bc, $0168 + call CopyBytes + pop af + ld [rSVBK], a + ret +; 30b4 + +Function30b4: ; 30b4 + xor a + ld [hBGMapMode], a + call $30bf + ld a, $1 + ld [hBGMapMode], a + ret +; 30bf + +Function30bf: ; 30bf + ld a, [rSVBK] + push af + ld a, $2 + ld [rSVBK], a + ld hl, $d000 + ld de, TileMap + ld bc, $0168 + call CopyBytes + pop af + ld [rSVBK], a + ret +; 30d6 + CopyName1: ; 30d6 ld hl, StringBuffer2 @@ -9587,7 +11417,36 @@ SFXChannelsOff: ; 3e21 ret ; 3e32 -INCBIN "baserom.gbc", $3e32, $3e80 - $3e32 +Function3e32: ; 3e32 + cp $2 + ld [$c988], a + ld a, l + ld [$c986], a + ld a, h + ld [$c987], a + jr nz, .asm_3e4f + ld [$c982], a + ld a, l + ld [$c981], a + ld hl, $c983 + ld a, c + ld [hli], a + ld a, b + ld [hl], a + +.asm_3e4f + ld hl, $c822 + set 6, [hl] + ld a, [hROMBank] + push af + ld a, $44 + ld [$c981], a + rst Bankswitch + + jp $4030 +; 3e60 + +INCBIN "baserom.gbc", $3e60, $3e80 - $3e60 Function3e80: ; 3e80 @@ -16113,7 +17972,49 @@ Function849d: ; 849d ret ; 84d9 -INCBIN "baserom.gbc", $84d9, $854b - $84d9 +Function84d9: ; 84d9 + ld a, e + and $3f + cp $20 + jr nc, .asm_84e5 + call $44ef + ld a, h + ret + +.asm_84e5 + and $1f + call $44ef + ld a, h + xor $ff + inc a + ret +; 84ef + +Function84ef: ; 84ef + ld e, a + ld a, d + ld d, $0 + ld hl, $450b + add hl, de + add hl, de + ld e, [hl] + inc hl + ld d, [hl] + ld hl, $0000 +.asm_84fe + srl a + jr nc, .asm_8503 + add hl, de + +.asm_8503 + sla e + rl d + and a + jr nz, .asm_84fe + ret +; 850b + +INCBIN "baserom.gbc", $850b, $854b - $850b GetPredefFn: ; 854b ; input: @@ -17673,7 +19574,77 @@ Functiond35a: ; d35a ret ; d374 -INCBIN "baserom.gbc", $d374, $d3c4 - $d374 +Functiond374: ; d374 + ld a, [$d107] + ld e, a + ld d, $0 + ld hl, NumKeyItems + ld a, [hl] + cp e + jr nc, .asm_d387 + call $5396 + ret nc + jr .asm_d38a + +.asm_d387 + dec [hl] + inc hl + add hl, de + +.asm_d38a + ld d, h + ld e, l + inc hl +.asm_d38d + ld a, [hli] + ld [de], a + inc de + cp $ff + jr nz, .asm_d38d + scf + ret +; d396 + +Functiond396: ; d396 + ld hl, NumKeyItems + ld a, [CurItem] + ld c, a +.asm_d39d + inc hl + ld a, [hl] + cp c + jr z, .asm_d3a8 + cp $ff + jr nz, .asm_d39d + xor a + ret + +.asm_d3a8 + ld a, [NumKeyItems] + dec a + ld [NumKeyItems], a + scf + ret +; d3b1 + +Functiond3b1: ; d3b1 + ld a, [CurItem] + ld c, a + ld hl, KeyItems +.asm_d3b8 + ld a, [hli] + cp c + jr z, .asm_d3c2 + cp $ff + jr nz, .asm_d3b8 + and a + ret + +.asm_d3c2 + scf + ret +; d3c4 + Functiond3c4: ; d3c4 @@ -17694,7 +19665,46 @@ Functiond3c4: ; d3c4 ret ; d3d8 -INCBIN "baserom.gbc", $d3d8, $d407 - $d3d8 +Functiond3d8: ; d3d8 + dec c + ld b, $0 + ld hl, TMsHMs + add hl, bc + ld a, [$d10c] + ld b, a + ld a, [hl] + sub b + jr c, .asm_d3f9 + ld [hl], a + ld [$d10d], a + jr nz, .asm_d3f7 + ld a, [$d0e2] + and a + jr z, .asm_d3f7 + dec a + ld [$d0e2], a + +.asm_d3f7 + scf + ret + +.asm_d3f9 + and a + ret +; d3fb + +Functiond3fb: ; d3fb + dec c + ld b, $0 + ld hl, TMsHMs + add hl, bc + ld a, [hl] + and a + ret z + scf + ret +; d407 + GetTMHMNumber: ; d407 @@ -24049,7 +26059,62 @@ BlackoutPoints: ; 0x152ab db GROUP_FAST_SHIP_CABINS_SW_SSW_NW, MAP_FAST_SHIP_CABINS_SW_SSW_NW, 6, 2 db $ff, $ff, $ff, $ff -INCBIN "baserom.gbc", $1531f, $15736 - $1531f +INCBIN "baserom.gbc", $1531f, $15363 - $1531f + + +Function15363: ; 15363 + ld a, [$ff9f] + and $f + dec a + ld c, a + ld b, $0 + ld hl, $5377 + add hl, bc + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + call $541d + ret +; 15377 + +INCBIN "baserom.gbc", $15377, $1541d - $15377 + + +Function1541d: ; 1541d +.asm_1541d + ld a, [hli] + cp $ff + ret z + push hl + ld c, a + ld b, $0 + ld hl, $5440 + add hl, bc + add hl, bc + add hl, bc + ld b, [hl] + inc hl + ld a, [hli] + ld h, [hl] + ld l, a + bit 7, b + jr z, .asm_15439 + pop de + ld a, [de] + ld c, a + inc de + push de + +.asm_15439 + ld a, b + and $7f + rst FarCall + pop hl + jr .asm_1541d +; 15440 + +INCBIN "baserom.gbc", $15440, $15736 - $15440 KrissPCMenuData: ; 0x15736 db %01000000 @@ -25683,7 +27748,176 @@ INCLUDE "stats/egg_moves.asm" SECTION "bank9",DATA,BANK[$9] -INCBIN "baserom.gbc", $24000, $24177 - $24000 +INCBIN "baserom.gbc", $24000, $2400e - $24000 + + +Function2400e: ; 2400e + ld hl, Function1c66 + ld a, [$cf94] + rst FarCall + call $4085 + call Function1ad2 + call Function321c + call $408f + ret +; 24022 + +Function24022: ; 24022 + ld hl, Function1c66 + ld a, [$cf94] + rst FarCall + call $4085 + callba MobileTextBorder + call Function1ad2 + call Function321c + call $408f + ret +; 2403c + +Function2403c: ; 2403c + ld hl, Function1c66 + ld a, [$cf94] + rst FarCall + call $4085 + callba MobileTextBorder + call Function1ad2 + call Function321c + call $411a + ld hl, $cfa5 + set 7, [hl] +.asm_2405a + call DelayFrame + ld a, $40 + ld hl, $432e + rst FarCall + ld a, [$cd2b] + and a + jr nz, .asm_24076 + call $41ba + ld a, [$cfa8] + and c + jr z, .asm_2405a + call $4098 + ret + +.asm_24076 + ld a, [$cfa4] + ld c, a + ld a, [$cfa3] + call SimpleMultiply + ld [$cf88], a + and a + ret +; 24085 + + + +Function24085: ; 24085 + xor a + ld [hBGMapMode], a + call Function1cbb + call $40db + ret +; 2408f + +Function2408f: ; 2408f + call $411a + call Function1bc9 + call Function1ff8 + ld a, [$cf91] + bit 1, a + jr z, .asm_240a6 + call Function1bdd + bit 2, a + jr nz, .asm_240c9 + +.asm_240a6 + ld a, [$cf91] + bit 0, a + jr nz, .asm_240b4 + call Function1bdd + bit 1, a + jr nz, .asm_240cb + +.asm_240b4 + ld a, [$cfa4] + ld c, a + ld a, [$cfa9] + dec a + call SimpleMultiply + ld c, a + ld a, [$cfaa] + add c + ld [$cf88], a + and a + ret + +.asm_240c9 + scf + ret + +.asm_240cb + scf + ret +; 240cd + +Function240cd: ; 240cd + ld a, [$cf92] + and $f + ret +; 240d3 + +Function240d3: ; 240d3 + ld a, [$cf92] + swap a + and $f + ret +; 240db + +Function240db: ; 240db + ld hl, $cf95 + ld e, [hl] + inc hl + ld d, [hl] + call Function1cc6 + call Function1d05 + call $40d3 + ld b, a +.asm_240eb + push bc + push hl + call $40cd + ld c, a +.asm_240f1 + push bc + ld a, [$cf94] + call $201c + inc de + ld a, [$cf93] + ld c, a + ld b, $0 + add hl, bc + pop bc + dec c + jr nz, .asm_240f1 + pop hl + ld bc, $0028 + add hl, bc + pop bc + dec b + jr nz, .asm_240eb + ld hl, $cf98 + ld a, [hli] + ld h, [hl] + ld l, a + or h + ret z + ld a, [$cf97] + rst FarCall + ret +; 2411a + +INCBIN "baserom.gbc", $2411a, $24177 - $2411a Function24177: ; 24177 @@ -25691,7 +27925,43 @@ Function24177: ; 24177 ret ; 24179 -INCBIN "baserom.gbc", $24179, $241a8 - $24179 +Function24179: ; 24179 + xor a + ld hl, $cfa5 + ld [hli], a + ld [hld], a + ld a, [$cf91] + bit 5, a + ret z + set 5, [hl] + set 4, [hl] + ret +; 2418a + +Function2418a: ; 2418a + ld a, [$cf93] + or $20 + ld [$cfa7], a + ret +; 24193 + +Function24193: ; 24193 + ld hl, $cf91 + ld a, $1 + bit 0, [hl] + jr nz, .asm_2419e + or $2 + +.asm_2419e + bit 1, [hl] + jr z, .asm_241a4 + or $4 + +.asm_241a4 + ld [$cfa8], a + ret +; 241a8 + Function241a8: ; 241a8 @@ -25706,7 +27976,25 @@ Function241a8: ; 241a8 ret ; 241ba -INCBIN "baserom.gbc", $241ba, $24216 - $241ba +Function241ba: ; 241ba + ld hl, $cfa6 + res 7, [hl] + ld a, [hBGMapMode] + push af + call Function2431a + call Function24249 + jr nc, .asm_241cd + call Function24270 + +.asm_241cd + pop af + ld [hBGMapMode], a + call Function1bdd + ld c, a + ret +; 241d5 + +INCBIN "baserom.gbc", $241d5, $24216 - $241d5 Function24216: ; 24216 @@ -32514,7 +34802,46 @@ Function4c000: ; 4c000 ret ; 4c03f -INCBIN "baserom.gbc", $4c03f, $4c075 - $4c03f +Function4c03f: ; 4c03f + ld hl, CreditsPos + ld de, BGMapPalBuffer +.asm_4c045 + ld a, [hl] + push hl + srl a + jr c, .asm_4c05b + ld hl, TileSetPalettes + add [hl] + ld l, a + ld a, [$d1e7] + adc $0 + ld h, a + ld a, [hl] + and $f + jr .asm_4c06b + +.asm_4c05b + ld hl, TileSetPalettes + add [hl] + ld l, a + ld a, [$d1e7] + adc $0 + ld h, a + ld a, [hl] + swap a + and $f + +.asm_4c06b + pop hl + ld [de], a + res 7, [hl] + inc hl + inc de + dec c + jr nz, .asm_4c045 + ret +; 4c075 + Tileset03PalMap: ; 0x4c075 INCBIN "tilesets/03_palette_map.bin" @@ -46617,7 +48944,62 @@ INCBIN "baserom.gbc", $fd136, $fd1d2 - $fd136 SECTION "bank40",DATA,BANK[$40] -INCBIN "baserom.gbc", $100000, $10389d - $100000 +INCBIN "baserom.gbc", $100000, $10032e - $100000 + + +Function10032e: ; 10032e + call $434d + ld e, a + ret nc + ld [$cd2b], a + ret +; 100337 + +INCBIN "baserom.gbc", $100337, $10034d - $100337 + + +Function10034d: ; 10034d + ld a, [$c821] + bit 1, a + jr nz, .asm_10036a + bit 2, a + jr nz, .asm_10037e + bit 3, a + jr nz, .asm_100366 + bit 0, a + jr nz, .asm_100364 + ld a, $1 + and a + ret + +.asm_100364 + xor a + ret + +.asm_100366 + ld a, $2 + and a + ret + +.asm_10036a + ld a, $0 + call $3e32 + ld [$cd2c], a + ld a, h + ld [$cd2d], a + ld a, l + ld [$cd2e], a + ld a, $ff + scf + ret + +.asm_10037e + ld a, $fe + scf + ret +; 100382 + +INCBIN "baserom.gbc", $100382, $10389d - $100382 SECTION "bank41",DATA,BANK[$41] @@ -46986,7 +49368,57 @@ EnteredConnection: ; 1046c4 ; 1046c6 -INCBIN "baserom.gbc", $1046c6, $1050d9 - $1046c6 +INCBIN "baserom.gbc", $1046c6, $10486d - $1046c6 + + +Function10486d: ; 10486d + ld hl, OverworldMap + ld a, [XCoord] + bit 0, a + jr nz, .asm_10487d + srl a + add $1 + jr .asm_104881 + +.asm_10487d + add $1 + srl a + +.asm_104881 + ld c, a + ld b, $0 + add hl, bc + ld a, [$d19f] + add $6 + ld c, a + ld b, $0 + ld a, [YCoord] + bit 0, a + jr nz, .asm_10489a + srl a + add $1 + jr .asm_10489e + +.asm_10489a + add $1 + srl a + +.asm_10489e + call AddNTimes + ld a, l + ld [$d194], a + ld a, h + ld [$d195], a + ld a, [YCoord] + and $1 + ld [$d196], a + ld a, [XCoord] + and $1 + ld [$d197], a + ret +; 1048ba + +INCBIN "baserom.gbc", $1048ba, $1050d9 - $1048ba Function1050d9: ; 1050d9 @@ -50089,8 +52521,9 @@ INCBIN "baserom.gbc", $1f0000, $1f09d8 - $1f0000 SECTION "bank7D",DATA,BANK[$7D] -Function1f4000: ; 1f4000 - call z, $1e6b +INCBIN "baserom.gbc", $1f4000, $1f4003 - $1f4000 + +Function1f4003: ; 1f4003 ld a, $6 call GetSRAMBank ld hl, $4018 -- cgit v1.2.3 From 0d0066a0dab6108976f147e00a81495575e5cdea Mon Sep 17 00:00:00 2001 From: yenatch Date: Sat, 27 Jul 2013 15:19:35 -0400 Subject: picking at bank 0 incbins --- main.asm | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index 63f1dbbbf..f7ff80f5e 100644 --- a/main.asm +++ b/main.asm @@ -3636,13 +3636,13 @@ Function156a: ; 156a ret ; 1582 -Function1582: ; 1582 +Text_15: ; 1582 call GetWeekday push hl push bc ld c, a - ld b, $0 - ld hl, $15a2 + ld b, 0 + ld hl, .Days add hl, bc add hl, bc ld a, [hli] @@ -3654,13 +3654,31 @@ Function1582: ; 1582 call PlaceString ld h, b ld l, c - ld de, $15d4 + ld de, .Day call PlaceString pop hl ret ; 15a2 -INCBIN "baserom.gbc", $15a2, $15d8 - $15a2 +.Days ; 15a2 + dw .Sun + dw .Mon + dw .Tues + dw .Wednes + dw .Thurs + dw .Fri + dw .Satur + +.Sun db "SUN@" +.Mon db "MON@" +.Tues db "TUES@" +.Wednes db "WEDNES@" +.Thurs db "THURS@" +.Fri db "FRI@" +.Satur db "SATUR@" +.Day db "DAY@" +; 15d8 + DMATransfer: ; 15d8 ; DMA transfer @@ -5451,7 +5469,15 @@ Function1d58: ; 1d58 ret ; 1d5f -INCBIN "baserom.gbc", $1d5f, $1d6e - $1d5f +INCBIN "baserom.gbc", $1d5f, $1d67 - $1d5f + + +Function1d67: ; 1d67 + call Function1d4f + call Function1c17 + ret +; 1d6e + Function1d6e: ; 1d6e -- cgit v1.2.3 From 5b07ea19d0a8cb38d8e1d76999688ebaa50e6e18 Mon Sep 17 00:00:00 2001 From: yenatch Date: Sat, 27 Jul 2013 16:31:29 -0400 Subject: move descriptions --- main.asm | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index f7ff80f5e..90b1b96f7 100644 --- a/main.asm +++ b/main.asm @@ -30205,7 +30205,32 @@ Function2c7fb: ; 2c7fb jr .asm_2c821 ; 2c867 -INCBIN "baserom.gbc", $2c867, $2ee6c - $2c867 + +INCBIN "baserom.gbc", $2c867, $2cb3e - $2c867 + + +PrintMoveDescription: ; 2cb3e + push hl + ld hl, MoveDescriptions + ld a, [CurSpecies] + dec a + ld c, a + ld b, 0 + add hl, bc + add hl, bc + ld a, [hli] + ld e, a + ld d, [hl] + pop hl + jp PlaceString +; 2cb52 + +MoveDescriptions: ; 2cb52 +INCLUDE "battle/moves/move_descriptions.asm" +; 2ed44 + + +INCBIN "baserom.gbc", $2ed44, $2ee6c - $2ed44 PlayBattleMusic: ; 2ee6c -- cgit v1.2.3 From a0d54cce5156abf3c4b77dc57303e384b8756792 Mon Sep 17 00:00:00 2001 From: yenatch Date: Sun, 28 Jul 2013 03:12:03 -0400 Subject: couple bank e functions --- main.asm | 4621 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 4276 insertions(+), 345 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index 90b1b96f7..701be7c05 100644 --- a/main.asm +++ b/main.asm @@ -8916,7 +8916,21 @@ Function306b: ; 306b ret ; 307b -INCBIN "baserom.gbc", $307b, $309d - $307b +Function307b: ; 307b + ld [hBuffer], a + ld a, [rSVBK] + push af + ld a, [hBuffer] + ld [rSVBK], a + ld a, [hl] + ld [hBuffer], a + pop af + ld [rSVBK], a + ld a, [hBuffer] + ret +; 308d + +INCBIN "baserom.gbc", $308d, $309d - $308d Function309d: ; 309d @@ -10359,7 +10373,17 @@ Function3786: ; 3786 ret ; 37b6 -INCBIN "baserom.gbc", $37b6, $37ce - $37b6 +Function37b6: ; 37b6 + push af + ld a, $1 + ld [$c2bc], a + pop af + call Function37e2 + call WaitSFX + ret +; 37c4 + +INCBIN "baserom.gbc", $37c4, $37ce - $37c4 Function37ce: ; 37ce @@ -18206,7 +18230,26 @@ Function8d55: ; 8d55 ret ; 8d59 -INCBIN "baserom.gbc", $8d59, $9610 - $8d59 +INCBIN "baserom.gbc", $8d59, $8e85 - $8d59 + + +Function8e85: ; 8e85 + ld a, $40 + ld hl, $4dc0 + rst FarCall + ld hl, $7311 + jr nc, .asm_8e93 + ld hl, $7309 + +.asm_8e93 + ld de, $d038 + ld bc, $0008 + ld a, $5 + call Function306b + ret +; 8e9f + +INCBIN "baserom.gbc", $8e9f, $9610 - $8e9f Function9610: ; 9610 @@ -30078,7 +30121,256 @@ INCBIN "gfx/misc/dude.lz" SECTION "bankB",DATA,BANK[$B] -INCBIN "baserom.gbc", $2C000, $2c1ef - $2C000 +INCBIN "baserom.gbc", $2c000, $2c059 - $2c000 + + +Function2c059: ; 2c059 + ld a, [de] + push af + ld de, MagikarpLength + ld c, $6 + ld a, $34 +.asm_2c062 + ld [de], a + inc de + dec c + jr nz, .asm_2c062 + pop af + ld de, MagikarpLength +.asm_2c06b + push af + call $4075 + inc de + pop af + dec a + jr nz, .asm_2c06b + ret +; 2c075 + +Function2c075: ; 2c075 + ld a, [hli] + and a + jr nz, .asm_2c07f + ld a, [hl] + and a + ld b, $33 + jr z, .asm_2c08b + +.asm_2c07f + dec hl + dec hl + dec hl + ld a, [hl] + and a + ld b, $32 + jr nz, .asm_2c08e + dec b + jr .asm_2c08e + +.asm_2c08b + dec hl + dec hl + dec hl + +.asm_2c08e + ld a, b + ld [de], a + ld bc, $0032 + add hl, bc + ret +; 2c095 + +Function2c095: ; 2c095 + ld hl, .data_2c0a9 + ld de, $d004 + ld bc, $0004 + call CopyBytes + ld hl, $c57a + ld de, rIE + jr .asm_2c0f1 + +.data_2c0a9 + db $73 + db $77 + db $6f + db $76 + db $21 + db $c1 + db $40 + db $11 + db $4 + db $d0 + db $1 + db $4 + db $0 + db $cd + db $26 + db $30 + db $21 + db $7a + db $c5 + db $11 + db $ff + db $ff + db $18 + db $30 + db $73 + db $5c + db $6f + db $76 + db $21 + db $ed + db $40 + db $11 + db $4 + db $d0 + db $1 + db $4 + db $0 + db $cd + db $26 + db $30 + db $21 + db $c9 + db $c4 + db $11 + db $1 + db $0 + db $cd + db $f1 + db $40 + db $fa + db $2d + db $d2 + db $3d + db $c0 + db $fa + db $4 + db $d2 + db $3d + db $cd + db $93 + db $33 + db $c8 + db $21 + db $b5 + db $c4 + db $36 + db $5d + db $c9 + db $6d + db $74 + db $78 + db $76 + +.asm_2c0f1 + ld a, [$d004] + ld [hl], a + ld bc, $0014 + add hl, bc + ld a, [StartFlypoint] + ld [hl], a + ld b, $8 +.asm_2c0ff + add hl, de + ld a, [MovementBuffer] + ld [hl], a + dec b + jr nz, .asm_2c0ff + add hl, de + ld a, [EndFlypoint] + ld [hl], a + ret +; 2c10d + + + +Function2c10d: ; 2c10d + call $4165 + ld hl, PartyMon1CurHP + ld de, PartyCount + call $4059 + ld hl, $cfc4 + ld a, $50 + ld [hli], a + ld [hl], $40 + ld a, $8 + ld [$d003], a + ld hl, Sprites + call $4143 + ld hl, OTPartyMon1CurHP + ld de, OTPartyCount + call $4059 + ld hl, $cfc4 + ld a, $50 + ld [hli], a + ld [hl], $68 + ld hl, $c418 + jp $4143 +; 2c143 + +Function2c143: ; 2c143 + ld de, MagikarpLength + ld c, $6 +.asm_2c148 + ld a, [$cfc5] + ld [hli], a + ld a, [$cfc4] + ld [hli], a + ld a, [de] + ld [hli], a + ld a, $3 + ld [hli], a + ld a, [$cfc4] + ld b, a + ld a, [$d003] + add b + ld [$cfc4], a + inc de + dec c + jr nz, .asm_2c148 + ret +; 2c165 + +Function2c165: ; 2c165 + ld de, $4172 + ld hl, $8310 + ld bc, $0b04 + call Functiondc9 + ret +; 2c172 + +INCBIN "baserom.gbc", $2c172, $2c1b2 - $2c172 + + +Function2c1b2: ; 2c1b2 + call WhiteBGMap + call Functione5f + ld hl, $c4de + ld b, $9 + ld c, $e + call TextBox + ld hl, $c508 + ld de, PlayerName + call PlaceString + ld hl, $c56c + ld de, $d26b + call PlaceString + ld hl, $c549 + ld a, $69 + ld [hli], a + ld [hl], $6a + ld a, $b + ld hl, $410d + rst FarCall + ld b, $8 + call GetSGBLayout + call Function32f9 + ld a, $e4 + ld [rOBP0], a + ret +; 2c1ef + TrainerClassNames: ; 2c1ef db "LEADER@" @@ -30230,7 +30522,210 @@ INCLUDE "battle/moves/move_descriptions.asm" ; 2ed44 -INCBIN "baserom.gbc", $2ed44, $2ee6c - $2ed44 +Function2ed44: ; 2ed44 + call Function2ede6 + ld hl, PartyMon1PokerusStatus + ld a, [PartyCount] + ld b, a + ld de, $0030 +.asm_2ed51 + ld a, [hl] + and $f + jr nz, .asm_2ed9a + add hl, de + dec b + jr nz, .asm_2ed51 + ld hl, StatusFlags2 + bit 6, [hl] + ret z + call RNG + ld a, [hRandomAdd] + and a + ret nz + ld a, [hRandomSub] + cp $3 + ret nc + ld a, [PartyCount] + ld b, a +.asm_2ed70 + call RNG + and $7 + cp b + jr nc, .asm_2ed70 + ld hl, PartyMon1PokerusStatus + call GetPartyLocation + ld a, [hl] + and $f0 + ret nz +.asm_2ed82 + call RNG + and a + jr z, .asm_2ed82 + ld b, a + and $f0 + jr z, .asm_2ed91 + ld a, b + and $7 + inc a + +.asm_2ed91 + ld b, a + swap b + and $3 + inc a + add b + ld [hl], a + ret + +.asm_2ed9a + call RNG + cp $55 + ret nc + ld a, [PartyCount] + cp $1 + ret z + ld c, [hl] + ld a, b + cp $2 + jr c, .asm_2edc3 + call RNG + cp $80 + jr c, .asm_2edc3 +.asm_2edb3 + add hl, de + ld a, [hl] + and a + jr z, .asm_2edd9 + ld c, a + and $3 + ret z + dec b + ld a, b + cp $1 + jr nz, .asm_2edb3 + ret + +.asm_2edc3 + ld a, [PartyCount] + cp b + ret z + ld a, l + sub e + ld l, a + ld a, h + sbc d + ld h, a + ld a, [hl] + and a + jr z, .asm_2edd9 + ld c, a + and $3 + ret z + inc b + jr .asm_2edc3 + +.asm_2edd9 + ld a, c + and $f0 + ld b, a + ld a, c + swap a + and $3 + inc a + add b + ld [hl], a + ret +; 2ede6 + +Function2ede6: ; 2ede6 + ld hl, StatusFlags2 + bit 6, [hl] + ret z + call RNG + cp $10 + ret nc + ld hl, PartyMons + ld a, [PartyCount] +.asm_2edf8 + push af + push hl + ld a, [hl] + cp SHUCKLE + jr nz, .asm_2ee08 + ld bc, PartyMon1Item - PartyMon1Species + add hl, bc + ld a, [hl] + cp BERRY + jr z, .asm_2ee12 + +.asm_2ee08 + pop hl + ld bc, PartyMon2 - PartyMon1 + add hl, bc + pop af + dec a + jr nz, .asm_2edf8 + ret + +.asm_2ee12 + ld a, BERRY_JUICE + ld [hl], a + pop hl + pop af + ret +; 2ee18 + +Function2ee18: ; 2ee18 + ld a, [InLinkBattle] + and a + ret z + ld a, $b + ld hl, $41b2 + rst FarCall + ld c, 150 + call DelayFrames + call ClearTileMap + call ClearSprites + ret +; 2ee2f + +Function2ee2f: ; 2ee2f + xor a + ld [$ffde], a + call DelayFrame + ld b, $6 + ld hl, PartyMon1CurHP + ld de, $002f +.asm_2ee3d + ld a, [hli] + or [hl] + jr nz, .asm_2ee45 + add hl, de + dec b + jr nz, .asm_2ee3d + +.asm_2ee45 + ld de, $fffd + add hl, de + ld a, [hl] + ld [BattleMonLevel], a + ld a, $34 + call Predef + ld a, $f + ld hl, $6d9f + rst FarCall + ld a, $1 + ld [hBGMapMode], a + call ClearSprites + call ClearTileMap + xor a + ld [hBGMapMode], a + ld [$ffd2], a + ld [rWY], a + ld [$ffde], a + ret +; 2ee6c + PlayBattleMusic: ; 2ee6c @@ -30557,7 +31052,319 @@ INCLUDE "battle/effect_commands.asm" SECTION "bankE",DATA,BANK[$E] -INCBIN "baserom.gbc", $38000, $38591 - $38000 +Function38000: ; 38000 + and a + ld a, [IsInBattle] + dec a + ret z + ld a, [InLinkBattle] + and a + ret nz + ld a, $f + ld hl, $68d1 + rst FarCall + ret nz + ld a, [PlayerSubStatus5] + bit 7, a + jr nz, .asm_38041 + ld a, [$c731] + and a + jr nz, .asm_38041 + ld hl, $55a1 + ld a, [$cfc0] + and a + jr nz, .asm_38032 + ld a, [TrainerClass] + dec a + ld bc, $0007 + call AddNTimes + +.asm_38032 + bit 0, [hl] + jp nz, $4045 + bit 1, [hl] + jp nz, $4083 + bit 2, [hl] + jp nz, $40c1 + +.asm_38041 + call $4105 + ret +; 38045 + +Function38045: ; 38045 + callab Function34941 + ld a, [$c717] + and $f0 + jp z, $4041 + cp $10 + jr nz, .asm_38061 + call RNG + cp $80 + jr c, .asm_38077 + jp $4041 + +.asm_38061 + cp $20 + jr nz, .asm_3806f + call RNG + cp $c8 + jr c, .asm_38077 + jp $4041 + +.asm_3806f + call RNG + cp $a + jp c, $4041 + +.asm_38077 + ld a, [$c717] + and $f + inc a + ld [$c718], a + jp $444b +; 38083 + +Function38083: ; 38083 + callab Function34941 + ld a, [$c717] + and $f0 + jp z, $4041 + cp $10 + jr nz, .asm_3809f + call RNG + cp $14 + jr c, .asm_380b5 + jp $4041 + +.asm_3809f + cp $20 + jr nz, .asm_380ad + call RNG + cp $1e + jr c, .asm_380b5 + jp $4041 + +.asm_380ad + call RNG + cp $c8 + jp c, $4041 + +.asm_380b5 + ld a, [$c717] + and $f + inc a + ld [$c718], a + jp $444b +; 380c1 + +Function380c1: ; 380c1 + callab Function34941 + ld a, [$c717] + and $f0 + jp z, $4041 + cp $10 + jr nz, .asm_380dd + call RNG + cp $32 + jr c, .asm_380f3 + jp $4041 + +.asm_380dd + cp $20 + jr nz, .asm_380eb + call RNG + cp $80 + jr c, .asm_380f3 + jp $4041 + +.asm_380eb + call RNG + cp $32 + jp c, $4041 + +.asm_380f3 + ld a, [$c717] + and $f + inc a + ld [$c718], a + jp $444b +; 380ff + + +Function380ff: ; 380ff + ld a, [EnemySubStatus5] + bit 7, a + ret +; 38105 + + +Function38105: ; 38105 + ld a, [$cfc0] + and a + ret nz + ld a, [$c650] + ld b, a + ld a, [$c651] + or b + ret z + call Function38170 + ret nc + ld a, [TrainerClass] + dec a + ld hl, $55a1 + ld bc, $0007 + call AddNTimes + ld b, h + ld c, l + ld hl, $4196 + ld de, $c650 +.asm_3812c + ld a, [hl] + and a + inc a + ret z + ld a, [de] + cp [hl] + jr z, .asm_3813f + inc de + ld a, [de] + cp [hl] + jr z, .asm_3813f + dec de + inc hl + inc hl + inc hl + jr .asm_3812c + +.asm_3813f + inc hl + push hl + push de + ld de, $414a + push de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 3814a + +INCBIN "baserom.gbc", $3814a, $38170 - $3814a + + +Function38170: ; 38170 + ld a, [OTPartyCount] + ld d, a + ld e, $0 + ld hl, OTPartyMon1Level + ld bc, $0030 +.asm_3817c + ld a, [hl] + cp e + jr c, .asm_38181 + ld e, a +.asm_38181 + add hl, bc + dec d + jr nz, .asm_3817c + + ld a, [CurOTMon] + ld hl, OTPartyMon1Level + call AddNTimes + ld a, [hl] + cp e + jr nc, .asm_38194 + and a + ret + +.asm_38194 + scf + ret +; 38196 + +INCBIN "baserom.gbc", $38196, $3844b - $38196 + + +Function3844b: ; 3844b + ld a, [OTPartyCount] + ld c, a + ld hl, OTPartyMon1CurHP + ld d, 0 +.asm_38454 + ld a, [hli] + ld b, a + ld a, [hld] + or b + jr z, .asm_3845b + inc d + +.asm_3845b + push bc + ld bc, $0030 + add hl, bc + pop bc + dec c + jr nz, .asm_38454 + ld a, d + cp $2 + jp nc, $446c + and a + ret +; 3846c + +Function3846c: ; 3846c + ld a, $1 + ld [$c711], a + ld [$c70f], a + ld hl, EnemySubStatus4 + res 6, [hl] + xor a + ld [hBattleTurn], a + ld hl, $5c5b + ld a, $f + rst FarCall + push af + ld a, [CurOTMon] + ld hl, OTPartyMon1Status + ld bc, $0030 + call AddNTimes + ld d, h + ld e, l + ld hl, EnemyMonStatus + ld bc, $0004 + call CopyBytes + pop af + jr c, .asm_384a3 + ld hl, $44d0 + call PrintText + +.asm_384a3 + ld a, $1 + ld [$d264], a + ld hl, $5834 + ld a, $f + rst FarCall + ld hl, $5867 + ld a, $f + rst FarCall + ld hl, PlayerSubStatus1 + res 7, [hl] + ld a, $f + ld hl, $54e1 + rst FarCall + ld a, $f + ld hl, $557a + rst FarCall + xor a + ld [$d264], a + ld a, [InLinkBattle] + and a + ret nz + scf + ret +; 384d0 + +INCBIN "baserom.gbc", $384d0, $38591 - $384d0 AIScoring: ; 38591 @@ -30594,7 +31401,7 @@ Function39939: ; 39939 .asm_3996d dec c push bc - ld b, $0 + ld b, 0 ld hl, TrainerGroups add hl, bc add hl, bc @@ -30631,7 +31438,106 @@ INCLUDE "trainers/trainers.asm" SECTION "bankF",DATA,BANK[$F] -INCBIN "baserom.gbc", $3c000, $3cc83 - $3c000 +INCBIN "baserom.gbc", $3c000, $3c0e5 - $3c000 + + +Function3c0e5: ; 3c0e5 + call $30b4 + ld a, [$d0ee] + and $c0 + add $2 + ld [$d0ee], a + ld a, [InLinkBattle] + and a + ld hl, $47bd + jr z, .asm_3c115 + ld a, [$d0ee] + and $c0 + ld [$d0ee], a + ld hl, $47cf + call $52e0 + jr nc, .asm_3c115 + ld hl, $cd2a + bit 4, [hl] + jr nz, .asm_3c118 + ld hl, $5863 + +.asm_3c115 + call FarBattleTextBox + +.asm_3c118 + call $4eec + call $52e0 + jr c, .asm_3c126 + ld de, $002b + call StartSFX + +.asm_3c126 + call SetPlayerTurn + ld a, $1 + ld [BattleEnded], a + ret +; 3c12f + +INCBIN "baserom.gbc", $3c12f, $3c5ec - $3c12f + + +Function3c5ec: ; 3c5ec + ld a, b + dec a + ld hl, $5afc + ld bc, $0007 + call AddNTimes + ld a, $10 + call GetFarByte + ld b, a + ret +; 3c5fe + +INCBIN "baserom.gbc", $3c5fe, $3cc39 - $3c5fe + + +Function3cc39: ; 3cc39 + call $4c45 + jp $4d3c +; 3cc3f + +INCBIN "baserom.gbc", $3cc3f, $3cc45 - $3cc3f + + +Function3cc45: ; 3cc45 + ld hl, BattleMonHP + ld a, [hBattleTurn] + and a + jr z, .asm_3cc50 + ld hl, EnemyMonHPHi + +.asm_3cc50 + inc hl + ld a, [hl] + ld [$d1ec], a + sub c + ld [hld], a + ld [$d1ee], a + ld a, [hl] + ld [$d1ed], a + sbc b + ld [hl], a + ld [$d1ef], a + ret nc + ld a, [$d1ec] + ld c, a + ld a, [$d1ed] + ld b, a + xor a + ld [hli], a + ld [hl], a + ld [$d1ee], a + ld [$d1ef], a + ret +; 3cc76 + +INCBIN "baserom.gbc", $3cc76, $3cc83 - $3cc76 GetEighthMaxHP: ; 3cc83 ; output: bc @@ -30714,7 +31620,37 @@ GetMaxHP: ; 3ccac ; 3ccc2 -INCBIN "baserom.gbc", $3ccc2, $3d123 - $3ccc2 +INCBIN "baserom.gbc", $3ccc2, $3cd3c - $3ccc2 + + +Function3cd3c: ; 3cd3c + ld hl, $c55e + ld a, [hBattleTurn] + and a + ld a, $1 + jr z, .asm_3cd4a + ld hl, $c4ca + xor a + +.asm_3cd4a + push bc + ld [$d10a], a + ld a, $b + call Predef + pop bc + ret +; 3cd55 + +INCBIN "baserom.gbc", $3cd55, $3ceec - $3cd55 + + +Function3ceec: ; 3ceec + xor a + ld [Danger], a + ret +; 3cef1 + +INCBIN "baserom.gbc", $3cef1, $3d123 - $3cef1 ; These functions check if the current opponent is a gym leader or one of a @@ -30771,7 +31707,105 @@ KantoGymLeaders: db $ff -INCBIN "baserom.gbc", $3d14e, $3d38e - $3d14e +INCBIN "baserom.gbc", $3d14e, $3d2e0 - $3d14e + + +Function3d2e0: ; 3d2e0 + ld a, [InLinkBattle] + cp $4 + jr nz, .asm_3d2ef + ld a, [$cd2b] + and a + jr z, .asm_3d2ef + scf + ret + +.asm_3d2ef + xor a + ret +; 3d2f1 + +Function3d2f1: ; 3d2f1 + ld a, [InLinkBattle] + cp $4 + ret +; 3d2f7 + +Function3d2f7: ; 3d2f7 + call WhiteBGMap + callba Function5004f + callba Function50405 + ld a, $2 + ld hl, $4e85 + rst FarCall + callba Function503e0 + ret +; 3d313 + +Function3d313: ; 3d313 + callba WritePartyMenuTilemap + callba PrintPartyMenuText + call WaitBGMap + call Function32f9 + call DelayFrame + ret +; 3d329 + +Function3d329: ; 3d329 + call $52f1 + jr z, .asm_3d335 + callba PartyMenuSelect + ret + +.asm_3d335 + ld a, $40 + ld hl, $4cb5 + rst FarCall + ret +; 3d33c + +Function3d33c: ; 3d33c +.asm_3d33c + ld a, $2 + ld [PartyMenuActionText], a + call $5313 + call $5329 + ret c + call $5887 + jr z, .asm_3d33c + xor a + ret +; 3d34f + +Function3d34f: ; 3d34f + ld hl, CurBattleMon + ld a, [CurPartyMon] + cp [hl] + jr nz, .asm_3d360 + ld hl, $4c0d + call FarBattleTextBox + scf + ret + +.asm_3d360 + xor a + ret +; 3d362 + +INCBIN "baserom.gbc", $3d362, $3d375 - $3d362 + + +Function3d375: ; 3d375 +.asm_3d375 + call $533c + ret c + call $534f + jr c, .asm_3d375 + xor a + ret +; 3d380 + +INCBIN "baserom.gbc", $3d380, $3d38e - $3d380 LostBattle: ; 3d38e @@ -30875,129 +31909,1675 @@ LostBattle: ; 3d38e ; 3d432 -INCBIN "baserom.gbc", $3d432, $3dabd - $3d432 +Function3d432: ; 3d432 + ld hl, $c510 + ld de, $c524 + jp $5444 +; 3d43b +Function3d43b: ; 3d43b + ld hl, $c569 + ld de, $c57d + jp $5444 +; 3d444 -Function3dabd: ; 3dabd - ld a, [CurPartyMon] - ld hl, OTPartyMon1Species - call GetPartyLocation - ld de, EnemyMonSpecies - ld bc, $0006 - call CopyBytes - ld bc, $000f - add hl, bc - ld de, EnemyMonAtkDefDV +Function3d444: ; 3d444 + ld a, [$cfbe] + push af + set 6, a + ld [$cfbe], a + ld b, $7 +.asm_3d44f + push bc + push de + push hl + ld b, $6 +.asm_3d454 + push bc + push hl + push de ld bc, $0007 call CopyBytes - inc hl - inc hl - inc hl - ld de, EnemyMonLevel - ld bc, $0011 - call CopyBytes - ld a, [EnemyMonSpecies] - ld [CurSpecies], a - call GetBaseData - ld hl, OTPartyMon1Nickname - ld a, [CurPartyMon] - call SkipNames - ld de, EnemyMonNick - ld bc, $000b - call CopyBytes - ld hl, EnemyMonAtk - ld de, EnemyStats - ld bc, $000a - call CopyBytes - call $6c30 - ld hl, BaseType1 - ld de, EnemyMonType1 - ld a, [hli] - ld [de], a - inc de - ld a, [hl] - ld [de], a - ld hl, BaseHP - ld de, EnemyMonBaseStats - ld b, $5 -.asm_3db25 - ld a, [hli] - ld [de], a - inc de + pop de + pop hl + ld bc, $ffec + add hl, bc + push hl + ld h, d + ld l, e + add hl, bc + ld d, h + ld e, l + pop hl + pop bc dec b - jr nz, .asm_3db25 - ld a, [CurPartyMon] - ld [CurOTMon], a + jr nz, .asm_3d454 + ld bc, $0014 + add hl, bc + ld de, $5488 + call PlaceString + ld c, $2 + call DelayFrames + pop hl + pop de + pop bc + dec b + jr nz, .asm_3d44f + pop af + ld [$cfbe], a ret -; 3db32 +; 3d488 -INCBIN "baserom.gbc", $3db32, $3ddc2 - $3db32 +INCBIN "baserom.gbc", $3d488, $3d490 - $3d488 - ld hl, RecoveredUsingText - jp FarBattleTextBox -; 0x3ddc8 -INCBIN "baserom.gbc", $3ddc8, $3e8eb - $3ddc8 +Function3d490: ; 3d490 + ld [hConnectionStripLength], a + ld c, a +.asm_3d493 + push bc + push hl + ld b, $7 +.asm_3d497 + push hl + call $54ae + pop hl + ld de, $0014 + add hl, de + dec b + jr nz, .asm_3d497 + ld c, $2 + call DelayFrames + pop hl + pop bc + dec c + jr nz, .asm_3d493 + ret +; 3d4ae -LoadEnemyMon: ; 3e8eb -; Initialize enemy monster parameters -; To do this we pull the species from TempEnemyMonSpecies +Function3d4ae: ; 3d4ae + ld a, [hConnectionStripLength] + ld c, a + cp $8 + jr nz, .asm_3d4bc +.asm_3d4b5 + ld a, [hli] + ld [hld], a + dec hl + dec c + jr nz, .asm_3d4b5 + ret -; Notes: -; FarBattleRNG is used to ensure sync between Game Boys +.asm_3d4bc + ld a, [hld] + ld [hli], a + inc hl + dec c + jr nz, .asm_3d4bc + ret +; 3d4c3 -; Clear the whole EnemyMon struct +INCBIN "baserom.gbc", $3d4c3, $3d4e1 - $3d4c3 + + +Function3d4e1: ; 3d4e1 + call $5714 + jr nc, .asm_3d517 + call $5557 + call $5533 + jr c, .asm_3d4f1 + call $5599 + +.asm_3d4f1 + call $56ca + call $574b + push af + call $57a0 + call $57b8 + call $57c7 + pop af + ret c xor a - ld hl, EnemyMonSpecies - ld bc, EnemyMonEnd - EnemyMon - call ByteFill - -; We don't need to be here if we're in a link battle + ld [$c664], a + ld [$c6fc], a + ld [$d0ec], a + inc a + ld [$c711], a + call $309d + jp $63ad + +.asm_3d517 + call $5557 + call $5533 + jr c, .asm_3d522 + call $5599 + +.asm_3d522 + call $56ca + ld a, $1 + ld [$c711], a + call $57a0 + call $57b8 + jp $57c7 +; 3d533 + +Function3d533: ; 3d533 ld a, [InLinkBattle] and a - jp nz, $5abd - - ld a, [$cfc0] ; ???? - bit 0, a - jp nz, $5abd - -; Make sure everything knows what species we're working with - ld a, [TempEnemyMonSpecies] - ld [EnemyMonSpecies], a - ld [CurSpecies], a - ld [CurPartySpecies], a - -; Grab the BaseData for this species - call GetBaseData - - -; Let's get the item: + jr z, .asm_3d541 + ld a, [$d430] + sub $4 + ld b, a + jr .asm_3d555 -; Is the item predetermined? - ld a, [IsInBattle] +.asm_3d541 + ld a, [$c718] + and a + jr z, .asm_3d54b dec a - jr z, .WildItem - -; If we're in a trainer battle, the item is in the party struct - ld a, [CurPartyMon] - ld hl, OTPartyMon1Item - call GetPartyLocation ; bc = PartyMon[CurPartyMon] - PartyMons - ld a, [hl] - jr .UpdateItem - - -.WildItem -; In a wild battle, we pull from the item slots in BaseData + ld b, a + jr .asm_3d555 -; Force Item1 -; Used for Ho-Oh, Lugia and Snorlax encounters - ld a, [BattleType] - cp BATTLETYPE_FORCEITEM - ld a, [BaseItems] - jr z, .UpdateItem - -; Failing that, it's all up to chance -; Effective chances: +.asm_3d54b + ld a, [$d264] + and a + ld b, $0 + jr nz, .asm_3d555 + and a + ret + +.asm_3d555 + scf + ret +; 3d557 + +Function3d557: ; 3d557 + xor a + ld [LastEnemyCounterMove], a + ld [LastPlayerCounterMove], a + ld [LastEnemyMove], a + ld [CurEnemyMove], a + dec a + ld [$c6e6], a + xor a + ld [$c730], a + ld hl, $c4b2 + ld a, $8 + call $5490 + call $6dd1 + jp Function1d6e +; 3d57a + +Function3d57a: ; 3d57a + xor a + ld [$c664], a + ld [$c6fc], a + ld a, [CurBattleMon] + ld c, a + ld hl, $c664 + ld b, $1 + push bc + ld a, $3 + call Predef + pop bc + ld hl, $c6fc + ld a, $3 + jp Predef +; 3d599 + +Function3d599: ; 3d599 + ld b, $ff + ld a, $1 + ld [MagikarpLength], a + ld [Buffer2], a +.asm_3d5a3 + ld hl, MagikarpLength + sla [hl] + inc hl + sla [hl] + inc b + ld a, [OTPartyCount] + cp b + jp z, $5672 + ld a, [CurOTMon] + cp b + jr z, .asm_3d5d0 + ld hl, OTPartyMon1CurHP + push bc + ld a, b + call GetPartyLocation + ld a, [hli] + ld c, a + ld a, [hl] + or c + pop bc + jr z, .asm_3d5d0 + call $55d7 + call $5618 + jr .asm_3d5a3 + +.asm_3d5d0 + ld hl, Buffer2 + set 0, [hl] + jr .asm_3d5a3 +; 3d5d7 + +Function3d5d7: ; 3d5d7 + push bc + ld hl, OTPartyMon1Move1 + ld a, b + call GetPartyLocation + pop bc + ld e, $5 +.asm_3d5e2 + dec e + jr z, .asm_3d617 + ld a, [hli] + and a + jr z, .asm_3d617 + push hl + push de + push bc + dec a + ld hl, $5afb + ld bc, $0007 + call AddNTimes + ld de, EnemyMoveAnimation + ld a, $10 + call FarCopyBytes + call SetEnemyTurn + callab Function347c8 + pop bc + pop de + pop hl + ld a, [$d265] + cp $b + jr c, .asm_3d5e2 + ld hl, MagikarpLength + set 0, [hl] + ret + +.asm_3d617 + ret +; 3d618 + +Function3d618: ; 3d618 + push bc + ld hl, OTPartyCount + ld a, b + inc a + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + dec a + ld hl, $542b + ld bc, $0020 + call AddNTimes + ld de, EnemyMonType1 + ld bc, $0002 + ld a, $14 + call FarCopyBytes + ld a, [BattleMonType1] + ld [PlayerMoveType], a + call SetPlayerTurn + callab Function347c8 + ld a, [$d265] + cp $b + jr nc, .asm_3d663 + ld a, [BattleMonType2] + ld [PlayerMoveType], a + callab Function347c8 + ld a, [$d265] + cp $b + jr nc, .asm_3d663 + pop bc + ret + +.asm_3d663 + pop bc + ld hl, MagikarpLength + bit 0, [hl] + jr nz, .asm_3d66f + inc hl + set 0, [hl] + ret + +.asm_3d66f + res 0, [hl] + ret +; 3d672 + +Function3d672: ; 3d672 +.asm_3d672 + ld hl, MagikarpLength + sla [hl] + inc hl + sla [hl] + jr nc, .asm_3d672 + ld a, [OTPartyCount] + ld b, a + ld c, [hl] +.asm_3d681 + sla c + jr nc, .asm_3d68a + dec b + jr z, .asm_3d6a7 + jr .asm_3d681 + +.asm_3d68a + ld a, [MagikarpLength] + and a + jr z, .asm_3d69a + ld b, $ff + ld c, a +.asm_3d693 + inc b + sla c + jr nc, .asm_3d693 + jr .asm_3d6c9 + +.asm_3d69a + ld b, $ff + ld a, [Buffer2] + ld c, a +.asm_3d6a0 + inc b + sla c + jr c, .asm_3d6a0 + jr .asm_3d6c9 + +.asm_3d6a7 + ld a, [OTPartyCount] + ld b, a + call FarBattleRNG + and $7 + cp b + jr nc, .asm_3d6a7 + ld b, a + ld a, [CurOTMon] + cp b + jr z, .asm_3d6a7 + ld hl, OTPartyMon1CurHP + push bc + ld a, b + call GetPartyLocation + pop bc + ld a, [hli] + ld c, a + ld a, [hl] + or c + jr z, .asm_3d6a7 + +.asm_3d6c9 + ret +; 3d6ca + +Function3d6ca: ; 3d6ca + ld a, b + ld [CurPartyMon], a + ld hl, OTPartyMon1Level + call GetPartyLocation + ld a, [hl] + ld [CurPartyLevel], a + ld a, [CurPartyMon] + inc a + ld hl, OTPartyCount + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + ld [TempEnemyMonSpecies], a + ld [CurPartySpecies], a + call LoadEnemyMon + ld a, [CurPartySpecies] + cp $c9 + jr nz, .asm_3d708 + ld a, [$def4] + and a + jr nz, .asm_3d708 + ld hl, EnemyMonAtkDefDV + ld a, $2d + call Predef + ld a, [UnownLetter] + ld [$def4], a + +.asm_3d708 + ld hl, EnemyMonHPHi + ld a, [hli] + ld [$c6ea], a + ld a, [hl] + ld [$c6eb], a + ret +; 3d714 + +Function3d714: ; 3d714 + ld a, [$d264] + dec a + jp z, $5749 + ld a, [PartyCount] + dec a + jp z, $5749 + ld a, [InLinkBattle] + and a + jp nz, $5749 + ld a, [Options] + bit 6, a + jr nz, .asm_3d749 + ld a, [CurPartyMon] + push af + ld a, [CurBattleMon] + ld [CurPartyMon], a + callba Functione538 + pop bc + ld a, b + ld [CurPartyMon], a + jr c, .asm_3d749 + scf + ret + +.asm_3d749 + and a + ret +; 3d74b + +Function3d74b: ; 3d74b + ld a, [CurPartyMon] + push af + callab Function39939 + ld hl, $4aca + call FarBattleTextBox + ld bc, $0107 + call $1dd2 + ld a, [$cfa9] + dec a + jr nz, .asm_3d79a + call $52f7 + call $5375 + jr c, .asm_3d791 + ld a, [CurBattleMon] + ld [$c71a], a + ld a, [CurPartyMon] + ld [CurBattleMon], a + call ClearPalettes + call DelayFrame + call $6da6 + pop af + ld [CurPartyMon], a + xor a + ld [CurEnemyMove], a + ld [CurPlayerMove], a + and a + ret + +.asm_3d791 + call ClearPalettes + call DelayFrame + call $6da6 + +.asm_3d79a + pop af + ld [CurPartyMon], a + scf + ret +; 3d7a0 + +Function3d7a0: ; 3d7a0 + xor a + ld [hBGMapMode], a + call Function1c07 + call ClearSprites + ld hl, $c4a1 + ld bc, $040a + call ClearBox + call WaitBGMap + jp $6e27 +; 3d7b8 + +Function3d7b8: ; 3d7b8 + callab Function39939 + ld hl, $4af8 + call FarBattleTextBox + jp WaitBGMap +; 3d7c7 + +Function3d7c7: ; 3d7c7 + ld a, [TempEnemyMonSpecies] + ld [CurPartySpecies], a + ld [CurSpecies], a + call GetBaseData + ld a, $1 + ld [MonType], a + ld a, $1f + call Predef + call $747c + xor a + ld [$cfca], a + ld [$c689], a + call SetEnemyTurn + ld de, $0101 + call $6e17 + call $5a79 + jr nc, .asm_3d800 + ld a, $1 + ld [$c689], a + ld de, $0101 + call $6e17 + +.asm_3d800 + ld bc, TempMonSpecies + callba Function4e53f + jr c, .asm_3d82c + ld a, $13 + ld hl, $6a44 + rst FarCall + jr c, .asm_3d821 + ld hl, $c4ac + ld d, $0 + ld e, $0 + ld a, $47 + call Predef + jr .asm_3d82c + +.asm_3d821 + ld a, $f + ld [CryTracks], a + ld a, [TempEnemyMonSpecies] + call $37b6 + +.asm_3d82c + call $6036 + ld a, $1 + ld [hBGMapMode], a + ret +; 3d834 + +Function3d834: ; 3d834 + xor a + ld [LastEnemyCounterMove], a + ld [LastPlayerCounterMove], a + ld [LastEnemyMove], a + ld hl, EnemySubStatus1 + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld [EnemyDisableCount], a + ld [EnemyFuryCutterCount], a + ld [$c681], a + ld [$c72c], a + ld [EnemyDisabledMove], a + ld [$c6fa], a + ld [$c730], a + ld [$c731], a + ld [EnemyTurnsTaken], a + ld hl, PlayerSubStatus5 + res 7, [hl] + ret +; 3d867 + +Function3d867: ; 3d867 + ld a, $7 + ld b, $8 + ld hl, EnemyAtkLevel +.asm_3d86e + ld [hli], a + dec b + jr nz, .asm_3d86e + ret +; 3d873 + +INCBIN "baserom.gbc", $3d873, $3d887 - $3d873 + + +Function3d887: ; 3d887 + ld a, [CurPartyMon] + ld hl, PartyMon1CurHP + call GetPartyLocation + ld a, [hli] + or [hl] + ret nz + ld a, [$d264] + and a + jr nz, .asm_3d8b1 + ld hl, PartySpecies + ld a, [CurPartyMon] + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + cp $fd + ld hl, $4b26 + jr z, .asm_3d8ae + ld hl, $4b0b + +.asm_3d8ae + call FarBattleTextBox + +.asm_3d8b1 + xor a + ret +; 3d8b3 + +INCBIN "baserom.gbc", $3d8b3, $3da0d - $3d8b3 + + +Function3da0d: ; 3da0d + ld a, $0 + call GetPartyParamLocation + ld de, BattleMonSpecies + ld bc, $0006 + call CopyBytes + ld bc, $000f + add hl, bc + ld de, BattleMonAtkDefDV + ld bc, $0007 + call CopyBytes + inc hl + inc hl + inc hl + ld de, BattleMonLevel + ld bc, $0011 + call CopyBytes + ld a, [BattleMonSpecies] + ld [TempBattleMonSpecies], a + ld [CurPartySpecies], a + ld [CurSpecies], a + call GetBaseData + ld a, [BaseType1] + ld [BattleMonType1], a + ld a, [BaseType2] + ld [BattleMonType2], a + ld hl, PartyMon1Nickname + ld a, [CurBattleMon] + call SkipNames + ld de, BattleMonNick + ld bc, $000b + call CopyBytes + ld hl, BattleMonAtk + ld de, PlayerStats + ld bc, $000a + call CopyBytes + call $6c2c + call $6d45 + ret +; 3da74 + +Function3da74: ; 3da74 + call $5a85 + jr .asm_3da7c + + call $5a97 + +.asm_3da7c + ld b, h + ld c, l + callab CheckShininess + ret +; 3da85 + +Function3da85: ; 3da85 + ld hl, BattleMonAtkDefDV + ld a, [PlayerSubStatus5] + bit 3, a + ret z + ld hl, PartyMon1DVs + ld a, [CurBattleMon] + jp GetPartyLocation +; 3da97 + +Function3da97: ; 3da97 + ld hl, EnemyMonAtkDefDV + ld a, [EnemySubStatus5] + bit 3, a + ret z + ld hl, $c6f2 + ld a, [IsInBattle] + dec a + ret z + ld hl, OTPartyMon1AtkDefDV + ld a, [CurOTMon] + jp GetPartyLocation +; 3dab1 + +Function3dab1: ; 3dab1 + ld a, $7 + ld b, $8 + ld hl, PlayerAtkLevel +.asm_3dab8 + ld [hli], a + dec b + jr nz, .asm_3dab8 + ret +; 3dabd + + + +Function3dabd: ; 3dabd + ld a, [CurPartyMon] + ld hl, OTPartyMon1Species + call GetPartyLocation + ld de, EnemyMonSpecies + ld bc, $0006 + call CopyBytes + ld bc, $000f + add hl, bc + ld de, EnemyMonAtkDefDV + ld bc, $0007 + call CopyBytes + inc hl + inc hl + inc hl + ld de, EnemyMonLevel + ld bc, $0011 + call CopyBytes + ld a, [EnemyMonSpecies] + ld [CurSpecies], a + call GetBaseData + ld hl, OTPartyMon1Nickname + ld a, [CurPartyMon] + call SkipNames + ld de, EnemyMonNick + ld bc, $000b + call CopyBytes + ld hl, EnemyMonAtk + ld de, EnemyStats + ld bc, $000a + call CopyBytes + call $6c30 + ld hl, BaseType1 + ld de, EnemyMonType1 + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + ld hl, BaseHP + ld de, EnemyMonBaseStats + ld b, $5 +.asm_3db25 + ld a, [hli] + ld [de], a + inc de + dec b + jr nz, .asm_3db25 + ld a, [CurPartyMon] + ld [CurOTMon], a + ret +; 3db32 + +INCBIN "baserom.gbc", $3db32, $3db5f - $3db32 + + +Function3db5f: ; 3db5f + ld hl, BattleMonAtkDefDV + ld a, $2d + call Predef + ld hl, $c505 + ld b, $7 + ld c, $8 + call ClearBox + call WaitBGMap + xor a + ld [hBGMapMode], a + call $743d + xor a + ld [$ffad], a + ld [$d0d2], a + ld [CurMoveNum], a + ld [TypeModifier], a + ld [PlayerMoveAnimation], a + ld [LastEnemyCounterMove], a + ld [LastPlayerCounterMove], a + ld [LastPlayerMove], a + call $64a8 + call $6e27 + xor a + ld [$c731], a + call SetPlayerTurn + xor a + ld [$cfca], a + ld [$c689], a + ld de, $0101 + call $6e17 + call $5a74 + jr nc, .asm_3dbbc + ld a, $1 + ld [$c689], a + ld de, $0101 + call $6e17 + +.asm_3dbbc + ld a, $0 + call GetPartyParamLocation + ld b, h + ld c, l + callba Function4e53f + jr c, .asm_3dbd6 + ld a, $f0 + ld [CryTracks], a + ld a, [CurPartySpecies] + call $37b6 + +.asm_3dbd6 + call $5f48 + ld a, $1 + ld [hBGMapMode], a + ret +; 3dbde + +Function3dbde: ; 3dbde + xor a + ld [LastEnemyCounterMove], a + ld [LastPlayerCounterMove], a + ld [LastPlayerMove], a + ld hl, PlayerSubStatus1 + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld hl, PlayerUsedMoves + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld [PlayerDisableCount], a + ld [PlayerFuryCutterCount], a + ld [$c679], a + ld [$c72b], a + ld [DisabledMove], a + ld [$c6fe], a + ld [$c731], a + ld [$c730], a + ld [PlayerTurnsTaken], a + ld hl, EnemySubStatus5 + res 7, [hl] + ret +; 3dc18 + +Function3dc18: ; 3dc18 + ld hl, PlayerSubStatus1 + res 7, [hl] + ld hl, EnemySubStatus1 + res 7, [hl] + ret +; 3dc23 + +Function3dc23: ; 3dc23 + ld hl, PlayerScreens + ld de, BattleMonType1 + ld bc, $5f48 + ld a, [hBattleTurn] + and a + jr z, .asm_3dc3a + ld hl, EnemyScreens + ld de, EnemyMonType1 + ld bc, $6036 + +.asm_3dc3a + bit 0, [hl] + ret z + ld a, [de] + cp $2 + ret z + inc de + ld a, [de] + cp $2 + ret z + push bc + ld hl, $4bae + call FarBattleTextBox + call GetEighthMaxHP + call $4c39 + pop hl + call $5c5a + jp WaitBGMap +; 3dc5a + +Function3dc5a: ; 3dc5a + jp [hl] +; 3dc5b + +Function3dc5b: ; 3dc5b + ld a, $10 + call CleanGetBattleVarPair + ld b, a + call $45ec + ld a, b + cp $80 + jr nz, .asm_3dce4 + ld a, [CurBattleMon] + push af + ld hl, $4000 + ld a, [hBattleTurn] + and a + jr z, .asm_3dc7e + ld hl, $400a + ld a, [$c71a] + ld [CurBattleMon], a + +.asm_3dc7e + ld a, $d + rst FarCall + ld a, $10 + call GetBattleVarPair + ld a, $ff + ld [hl], a + pop af + ld [CurBattleMon], a + ld a, [hBattleTurn] + and a + jr z, .asm_3dcc0 + ld a, [$c71a] + call $399f + ld hl, BattleMonHP + ld a, [hli] + or [hl] + jr nz, .asm_3dce4 + ld a, $f0 + ld [CryTracks], a + ld a, [BattleMonSpecies] + call $37b6 + ld a, [$c71a] + ld c, a + ld hl, $c664 + ld b, $0 + ld a, $3 + call Predef + call $543b + ld hl, $4a75 + jr .asm_3dcdf + +.asm_3dcc0 + ld hl, EnemyMonHPHi + ld a, [hli] + or [hl] + jr nz, .asm_3dce4 + ld de, $002f + call StartSFX + call WaitSFX + ld de, $002a + call StartSFX + call WaitSFX + call $5432 + ld hl, $49a8 + +.asm_3dcdf + call FarBattleTextBox + scf + ret + +.asm_3dce4 + and a + ret +; 3dce6 + +Function3dce6: ; 3dce6 + ld a, [hBattleTurn] + push af + xor a + ld [hBattleTurn], a + ld [$cfca], a + ld de, $0102 + call $6e17 + pop af + ld [hBattleTurn], a + ret +; 3dcf9 + +INCBIN "baserom.gbc", $3dcf9, $3ddc2 - $3dcf9 + + ld hl, RecoveredUsingText + jp FarBattleTextBox +; 0x3ddc8 + +INCBIN "baserom.gbc", $3ddc8, $3df48 - $3ddc8 + + +Function3df48: ; 3df48 + push hl + push de + push bc + call $5f58 + call $5f98 + call $5f9e + pop bc + pop de + pop hl + ret +; 3df58 + +Function3df58: ; 3df58 + xor a + ld [hBGMapMode], a + ld hl, $c535 + ld bc, $050b + call ClearBox + ld a, $b + ld hl, $4095 + rst FarCall + ld hl, $c566 + ld [hl], $73 + call $5fbf + ld hl, $c55e + ld b, $1 + xor a + ld [MonType], a + ld a, $26 + call Predef + push de + ld a, [CurBattleMon] + ld hl, $dce9 + call GetPartyLocation + ld d, h + ld e, l + ld hl, $c586 + ld a, [TempMonLevel] + ld b, a + call $7390 + pop de + ret +; 3df98 + +Function3df98: ; 3df98 + ld hl, PlayerHPPal + jp $612e +; 3df9e + +Function3df9e: ; 3df9e + ld hl, BattleMonHP + ld a, [hli] + or [hl] + jr z, .asm_3dfb2 + ld a, [$c6fd] + and a + jr nz, .asm_3dfbe + ld a, [PlayerHPPal] + cp $2 + jr z, .asm_3dfb9 + +.asm_3dfb2 + ld hl, Danger + res 7, [hl] + jr .asm_3dfbe + +.asm_3dfb9 + ld hl, Danger + set 7, [hl] + +.asm_3dfbe + ret +; 3dfbf + +Function3dfbf: ; 3dfbf + ld de, BattleMonNick + ld hl, $c536 + call $6138 + call PlaceString + push bc + ld a, [CurBattleMon] + ld hl, PartyMon1DVs + call GetPartyLocation + ld de, TempMonDVs + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + ld hl, BattleMonLevel + ld de, TempMonLevel + ld bc, $0011 + call CopyBytes + ld a, [CurBattleMon] + ld hl, PartyMon1Species + call GetPartyLocation + ld a, [hl] + ld [CurPartySpecies], a + ld [CurSpecies], a + call GetBaseData + pop hl + dec hl + ld a, $3 + ld [MonType], a + callab GetGender + ld a, $7f + jr c, .asm_3e013 + ld a, $ef + jr nz, .asm_3e013 + ld a, $f5 + +.asm_3e013 + ld hl, $c551 + ld [hl], a + ld hl, $c54e + push af + push hl + ld de, BattleMonStatus + ld a, $21 + call Predef + pop hl + pop bc + ret nz + ld a, b + cp $7f + jr nz, .asm_3e02d + dec hl + +.asm_3e02d + ld a, [BattleMonLevel] + ld [TempMonLevel], a + jp Function382d +; 3e036 + +Function3e036: ; 3e036 + push hl + push de + push bc + call $6043 + call $6127 + pop bc + pop de + pop hl + ret +; 3e043 + +Function3e043: ; 3e043 + xor a + ld [hBGMapMode], a + ld hl, $c4a1 + ld bc, $040b + call ClearBox + ld a, $b + ld hl, $40c5 + rst FarCall + ld a, [TempEnemyMonSpecies] + ld [CurSpecies], a + ld [CurPartySpecies], a + call GetBaseData + ld de, EnemyMonNick + ld hl, $c4a1 + call $6138 + call PlaceString + ld h, b + ld l, c + dec hl + ld hl, EnemyMonAtkDefDV + ld de, TempMonDVs + ld a, [EnemySubStatus5] + bit 3, a + jr z, .asm_3e080 + ld hl, $c6f2 + +.asm_3e080 + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + ld a, $3 + ld [MonType], a + callab GetGender + ld a, $7f + jr c, .asm_3e09a + ld a, $ef + jr nz, .asm_3e09a + ld a, $f5 + +.asm_3e09a + ld hl, $c4bd + ld [hl], a + ld hl, $c4ba + push af + push hl + ld de, EnemyMonStatus + ld a, $21 + call Predef + pop hl + pop bc + jr nz, .asm_3e0be + ld a, b + cp $7f + jr nz, .asm_3e0b5 + dec hl + +.asm_3e0b5 + ld a, [EnemyMonLevel] + ld [TempMonLevel], a + call Function382d + +.asm_3e0be + ld hl, EnemyMonHPHi + ld a, [hli] + ld [$ffb5], a + ld a, [hld] + ld [$ffb6], a + or [hl] + jr nz, .asm_3e0d1 + ld c, a + ld e, a + ld d, $6 + jp $611a + +.asm_3e0d1 + xor a + ld [hMultiplicand], a + ld a, $30 + ld [hMultiplier], a + call Multiply + ld hl, EnemyMonMaxHPHi + ld a, [hli] + ld b, a + ld a, [hl] + ld [hMultiplier], a + ld a, b + and a + jr z, .asm_3e105 + ld a, [hMultiplier] + srl b + rr a + srl b + rr a + ld [hMultiplier], a + ld a, [$ffb5] + ld b, a + srl b + ld a, [$ffb6] + rr a + srl b + rr a + ld [$ffb6], a + ld a, b + ld [$ffb5], a + +.asm_3e105 + ld a, [$ffb5] + ld [hProduct], a + ld a, [$ffb6] + ld [hMultiplicand], a + ld a, $2 + ld b, a + call Divide + ld a, [$ffb6] + ld e, a + ld a, $6 + ld d, a + ld c, a + xor a + ld [$d10a], a + ld hl, $c4ca + ld b, $0 + call Function3750 + ret +; 3e127 + +Function3e127: ; 3e127 + ld hl, EnemyHPPal + call $612e + ret +; 3e12e + +Function3e12e: ; 3e12e + ld b, [hl] + call SetHPPal + ld a, [hl] + cp b + ret z + jp $6e27 +; 3e138 + +Function3e138: ; 3e138 + ret +; 3e139 + +INCBIN "baserom.gbc", $3e139, $3e3ad - $3e139 + + +Function3e3ad: ; 3e3ad + ld a, $1 + ld [$c710], a + ld a, [InLinkBattle] + and a + jr z, .asm_3e3c1 + call Function1d6e + call $68e4 + call Function1c17 + +.asm_3e3c1 + call $67c1 + ld a, [InLinkBattle] + and a + jr nz, .asm_3e3cf + call $640b + and a + ret + +.asm_3e3cf + ld a, [$d430] + cp $e + jp z, $63ca + cp $d + jp z, $63ca + cp $4 + jp c, $63ca + cp $f + jr nz, .asm_3e3e9 + call $40e5 + ret + +.asm_3e3e9 + ld a, [$ffcb] + cp $1 + jr z, .asm_3e3f7 + call $640b + call $63ff + and a + ret + +.asm_3e3f7 + call $63ff + call $640b + and a + ret +; 3e3ff + +Function3e3ff: ; 3e3ff + ld hl, $446c + ld a, $e + rst FarCall + call SetEnemyTurn + jp $5c23 +; 3e40b + +Function3e40b: ; 3e40b + call $72f4 + ld c, $32 + call DelayFrames + ld hl, PlayerSubStatus4 + res 6, [hl] + call SetEnemyTurn + call $5c5b + jr c, .asm_3e423 + call $5ce6 + +.asm_3e423 + ld hl, $c535 + ld bc, $050b + call ClearBox + ld a, [CurBattleMon] + ld [CurPartyMon], a + call $5581 + call $5a0d + call $5ab1 + call $726d + call $5bde + call $5c18 + call $5b5f + call $6dd1 + call $309d + call SetPlayerTurn + call $5c23 + ld a, $2 + ld [$cfa9], a + ret +; 3e459 + +INCBIN "baserom.gbc", $3e459, $3e4a8 - $3e459 + + +Function3e4a8: ; 3e4a8 + ld a, [BattleMonItem] + ld b, a + callab GetItem + ld a, b + cp $4c + ret nz + ld a, $1 + ld [$c73d], a + ret +; 3e4bc + +INCBIN "baserom.gbc", $3e4bc, $3e7c1 - $3e4bc + + +Function3e7c1: ; 3e7c1 + ld a, [$c711] + and a + ret nz + ld a, [InLinkBattle] + and a + jr z, .asm_3e817 + call $6dd1 + call $309d + ld a, [$d0ec] + and a + call z, $68e4 + call $30b4 + ld a, [$d430] + cp $e + jp z, $68bd + cp $d + jp z, $682c + cp $4 + jp nc, $68c1 + ld [CurEnemyMoveNum], a + ld c, a + ld a, [EnemySubStatus1] + bit 6, a + jp nz, $6882 + ld a, [EnemySubStatus3] + and $13 + jp nz, $6882 + ld hl, EnemySubStatus5 + bit 4, [hl] + ld a, [LastEnemyMove] + jp nz, $687f + ld hl, EnemyMonMove1 + ld b, $0 + add hl, bc + ld a, [hl] + jp $687f + +.asm_3e817 + ld hl, EnemySubStatus5 + bit 4, [hl] + jr z, .asm_3e824 + ld a, [LastEnemyMove] + jp $687f + +.asm_3e824 + call $68d1 + jp nz, $68c1 + jr .asm_3e830 + + ld a, $ff + jr .asm_3e87f + +.asm_3e830 + ld hl, EnemyMonMove1 + ld de, EnemyMonPPMove1 + ld b, $4 +.asm_3e838 + ld a, [hl] + and a + jp z, $68bd + ld a, [EnemyDisabledMove] + cp [hl] + jr z, .asm_3e848 + ld a, [de] + and $3f + jr nz, .asm_3e84f + +.asm_3e848 + inc hl + inc de + dec b + jr nz, .asm_3e838 + jr .asm_3e8bd + +.asm_3e84f + ld a, [IsInBattle] + dec a + jr nz, .asm_3e882 +.asm_3e855 + ld hl, EnemyMonMove1 + call FarBattleRNG + and $3 + ld c, a + ld b, $0 + add hl, bc + ld a, [EnemyDisableCount] + swap a + and $f + dec a + cp c + jr z, .asm_3e855 + ld a, [hl] + and a + jr z, .asm_3e855 + ld hl, EnemyMonPPMove1 + add hl, bc + ld b, a + ld a, [hl] + and $3f + jr z, .asm_3e855 + ld a, c + ld [CurEnemyMoveNum], a + ld a, b + +.asm_3e87f + ld [CurEnemyMove], a + +.asm_3e882 + call SetEnemyTurn + callab UpdateMoveData + call $68d1 + jr nz, .asm_3e894 + xor a + ld [$c733], a + +.asm_3e894 + ld a, [EnemyMoveEffect] + cp $77 + jr z, .asm_3e89f + xor a + ld [EnemyFuryCutterCount], a + +.asm_3e89f + ld a, [EnemyMoveEffect] + cp $51 + jr z, .asm_3e8af + ld hl, EnemySubStatus4 + res 6, [hl] + xor a + ld [$c72c], a + +.asm_3e8af + ld a, [EnemyMoveEffect] + cp $6f + ret z + cp $74 + ret z + xor a + ld [$c681], a + ret + +.asm_3e8bd + ld a, $a5 + jr .asm_3e87f +; 3e8c1 + +Function3e8c1: ; 3e8c1 + xor a + ld [EnemyFuryCutterCount], a + ld [$c681], a + ld [$c72c], a + ld hl, EnemySubStatus4 + res 6, [hl] + ret +; 3e8d1 + +Function3e8d1: ; 3e8d1 + ld a, [EnemySubStatus4] + and $20 + ret nz + ld hl, EnemySubStatus3 + ld a, [hl] + and $13 + ret nz + ld hl, EnemySubStatus1 + bit 6, [hl] + ret +; 3e8e4 + +Function3e8e4: ; 3e8e4 + ld a, $40 + ld hl, $4a09 + rst FarCall + ret +; 3e8eb + + +LoadEnemyMon: ; 3e8eb +; Initialize enemy monster parameters +; To do this we pull the species from TempEnemyMonSpecies + +; Notes: +; FarBattleRNG is used to ensure sync between Game Boys + +; Clear the whole EnemyMon struct + xor a + ld hl, EnemyMonSpecies + ld bc, EnemyMonEnd - EnemyMon + call ByteFill + +; We don't need to be here if we're in a link battle + ld a, [InLinkBattle] + and a + jp nz, $5abd + + ld a, [$cfc0] ; ???? + bit 0, a + jp nz, $5abd + +; Make sure everything knows what species we're working with + ld a, [TempEnemyMonSpecies] + ld [EnemyMonSpecies], a + ld [CurSpecies], a + ld [CurPartySpecies], a + +; Grab the BaseData for this species + call GetBaseData + + +; Let's get the item: + +; Is the item predetermined? + ld a, [IsInBattle] + dec a + jr z, .WildItem + +; If we're in a trainer battle, the item is in the party struct + ld a, [CurPartyMon] + ld hl, OTPartyMon1Item + call GetPartyLocation ; bc = PartyMon[CurPartyMon] - PartyMons + ld a, [hl] + jr .UpdateItem + + +.WildItem +; In a wild battle, we pull from the item slots in BaseData + +; Force Item1 +; Used for Ho-Oh, Lugia and Snorlax encounters + ld a, [BattleType] + cp BATTLETYPE_FORCEITEM + ld a, [BaseItems] + jr z, .UpdateItem + +; Failing that, it's all up to chance +; Effective chances: ; 75% None ; 23% Item1 ; 2% Item2 @@ -31741,7 +34321,29 @@ BoostStat: ; 3ed7c ; 3ed9f -INCBIN "baserom.gbc", $3ed9f, $3edd8 - $3ed9f +Function3ed9f: ; 3ed9f + ld hl, $74f2 + ld a, $3e + rst FarCall + ret +; 3eda6 + +Function3eda6: ; 3eda6 + ld hl, $750d + ld a, $3e + rst FarCall + ret +; 3edad + +INCBIN "baserom.gbc", $3edad, $3edd1 - $3edad + + +Function3edd1: ; 3edd1 + ld hl, $6dd7 + jp BattleTextBox +; 3edd7 + +INCBIN "baserom.gbc", $3edd7, $3edd8 - $3edd7 BattleRNG: ; 3edd8 @@ -31814,7 +34416,308 @@ BattleRNG: ; 3edd8 ret ; 3ee0f -INCBIN "baserom.gbc", $3ee0f, $3fa01 - $3ee0f +INCBIN "baserom.gbc", $3ee0f, $3ee17 - $3ee0f + + +Function3ee17: ; 3ee17 + ld a, e + ld [FXAnimIDLo], a + ld a, d + ld [FXAnimIDHi], a + call WaitBGMap + ld a, $37 + jp Predef +; 3ee27 + +Function3ee27: ; 3ee27 + push af + push bc + push de + push hl + ld b, $1 + call GetSGBLayout + call Function32f9 + call DelayFrame + pop hl + pop de + pop bc + pop af + ret +; 3ee3b + +INCBIN "baserom.gbc", $3ee3b, $3f26d - $3ee3b + + +Function3f26d: ; 3f26d + ld a, [InLinkBattle] + and a + jr z, .asm_3f27c + ld hl, $72d1 + ld a, [$d264] + and a + jr nz, .asm_3f2ce + +.asm_3f27c + ld hl, EnemyMonHPHi + ld a, [hli] + or [hl] + ld hl, $72d1 + jr z, .asm_3f2ce + xor a + ld [hMultiplicand], a + ld hl, EnemyMonHPHi + ld a, [hli] + ld [$c6ea], a + ld [$ffb5], a + ld a, [hl] + ld [$c6eb], a + ld [$ffb6], a + ld a, $19 + ld [hMultiplier], a + call Multiply + ld hl, EnemyMonMaxHPHi + ld a, [hli] + ld b, [hl] + srl a + rr b + srl a + rr b + ld a, b + ld b, $4 + ld [hMultiplier], a + call Divide + ld a, [$ffb6] + ld hl, $72d1 + cp $46 + jr nc, .asm_3f2ce + ld hl, $72d8 + cp $28 + jr nc, .asm_3f2ce + ld hl, $72df + cp $a + jr nc, .asm_3f2ce + ld hl, $72e6 + +.asm_3f2ce + jp BattleTextBox +; 3f2d1 + +INCBIN "baserom.gbc", $3f2d1, $3f2f4 - $3f2d1 + + +Function3f2f4: ; 3f2f4 + ld hl, $72fa + jp BattleTextBox +; 3f2fa + +INCBIN "baserom.gbc", $3f2fa, $3f390 - $3f2fa + + +Function3f390: ; 3f390 + push hl + call $739c + pop hl + ld de, $0007 + add hl, de + jp $741c +; 3f39c + +Function3f39c: ; 3f39c + push de + ld d, b + push de + callab Function50e47 + pop de + ld hl, hMultiplicand + ld a, [hli] + push af + ld a, [hli] + push af + ld a, [hl] + push af + inc d + callab Function50e47 + ld hl, $ffb6 + ld a, [hl] + ld [$ffba], a + pop bc + sub b + ld [hld], a + ld a, [hl] + ld [$ffb9], a + pop bc + sbc b + ld [hld], a + ld a, [hl] + ld [hMathBuffer], a + pop bc + sbc b + ld [hl], a + pop de + ld hl, $ffb5 + ld a, [hli] + push af + ld a, [hl] + push af + ld a, [de] + dec de + ld c, a + ld a, [$ffba] + sub c + ld [hld], a + ld a, [de] + dec de + ld b, a + ld a, [$ffb9] + sbc b + ld [hld], a + ld a, [de] + ld c, a + ld a, [hMathBuffer] + sbc c + ld [hld], a + xor a + ld [hl], a + ld a, $40 + ld [hMultiplier], a + call Multiply + pop af + ld c, a + pop af + ld b, a +.asm_3f3f4 + ld a, b + and a + jr z, .asm_3f40c + srl b + rr c + ld hl, hProduct + srl [hl] + inc hl + rr [hl] + inc hl + rr [hl] + inc hl + rr [hl] + jr .asm_3f3f4 + +.asm_3f40c + ld a, c + ld [hMultiplier], a + ld b, $4 + call Divide + ld a, [$ffb6] + ld b, a + ld a, $40 + sub b + ld b, a + ret +; 3f41c + +Function3f41c: ; 3f41c + ld c, $8 +.asm_3f41e + ld a, b + sub $8 + jr c, .asm_3f42c + ld b, a + ld a, $6a + ld [hld], a + dec c + jr z, .asm_3f43c + jr .asm_3f41e + +.asm_3f42c + add $8 + jr z, .asm_3f434 + add $54 + jr .asm_3f436 + +.asm_3f434 + ld a, $62 + +.asm_3f436 + ld [hld], a + ld a, $62 + dec c + jr nz, .asm_3f434 + +.asm_3f43c + ret +; 3f43d + +Function3f43d: ; 3f43d + ld a, [PlayerSubStatus4] + bit 4, a + ld hl, $4640 + jr nz, .asm_3f46f + ld a, [$c6fe] + and a + ld hl, $46cf + jr nz, .asm_3f46f + ld a, [CurPartySpecies] + push af + ld a, [BattleMonSpecies] + ld [CurPartySpecies], a + ld hl, BattleMonAtkDefDV + ld a, $2d + call Predef + ld de, $9310 + ld a, $3d + call Predef + pop af + ld [CurPartySpecies], a + ret + +.asm_3f46f + ld a, [hBattleTurn] + push af + xor a + ld [hBattleTurn], a + ld a, $33 + rst FarCall + pop af + ld [hBattleTurn], a + ret +; 3f47c + +Function3f47c: ; 3f47c + ld a, [EnemySubStatus4] + bit 4, a + ld hl, $4640 + jr nz, .asm_3f4b4 + ld a, [$c6fa] + and a + ld hl, $46cf + jr nz, .asm_3f4b4 + ld a, [CurPartySpecies] + push af + ld a, [EnemyMonSpecies] + ld [CurSpecies], a + ld [CurPartySpecies], a + call GetBaseData + ld hl, EnemyMonAtkDefDV + ld a, $2d + call Predef + ld de, VTiles2 + ld a, $3e + call Predef + pop af + ld [CurPartySpecies], a + ret + +.asm_3f4b4 + ld a, [hBattleTurn] + push af + call SetEnemyTurn + ld a, $33 + rst FarCall + pop af + ld [hBattleTurn], a + ret +; 3f4c1 + +INCBIN "baserom.gbc", $3f4c1, $3fa01 - $3f4c1 GetRoamMonHP: ; 3fa01 ; output: hl = RoamMonCurHP @@ -36407,7 +39310,50 @@ Function4e906: ; 4e906 ret ; 4e929 -INCBIN "baserom.gbc", $4e929, $4ea82 - $4e929 +INCBIN "baserom.gbc", $4e929, $4ea44 - $4e929 + + +Function4ea44: ; 4ea44 + ld a, $0 + ld hl, InLinkBattle + call $307b + cp $4 + jr z, .asm_4ea59 + ld a, [Options] + bit 7, a + jr nz, .asm_4ea80 + and a + ret + +.asm_4ea59 + ld a, [$cd2f] + and a + jr nz, .asm_4ea72 + ld a, $4 + call GetSRAMBank + ld a, [$a60c] + ld c, a + call CloseSRAM + ld a, c + bit 0, c + jr z, .asm_4ea80 + and a + ret + +.asm_4ea72 + ld a, $5 + ld hl, $dc00 + call $307b + bit 0, a + jr z, .asm_4ea80 + and a + ret + +.asm_4ea80 + scf + ret +; 4ea82 + Function4ea82: ; 4ea82 @@ -47205,7 +50151,36 @@ Functionfb48a: ; fb48a ret ; fb4f2 -INCBIN "baserom.gbc", $fb4f2, $fba18 - $fb4f2 +Functionfb4f2: ; fb4f2 + ld de, $4600 + ld hl, $9600 + ld bc, $3e0c + call Functiondc9 + ld hl, $9700 + ld de, $4700 + ld bc, $3e03 + call Functiondc9 + call $74cc + ld de, $4ac0 + ld hl, $96c0 + ld bc, $3e04 + call Functionddc + ld de, $4ae0 + ld hl, $9730 + ld bc, $3e06 + call Functionddc + ld de, $4b10 + ld hl, $9550 + ld bc, $3e09 + call Functiondc9 + ld de, $52a4 + ld hl, $95e0 + ld bc, $3e02 + call Functiondc9 + ret +; fb53e + +INCBIN "baserom.gbc", $fb53e, $fba18 - $fb53e Functionfba18: ; fba18 @@ -48751,306 +51726,1254 @@ Functionfce0f: ; fce0f inc de ld a, [hl] ld [de], a - ret -; fce15 + ret +; fce15 + +Functionfce15: ; fce15 + ld a, [hli] + ld [de], a + dec de + ld a, [hl] + ld [de], a + ret +; fce1b + +Functionfce1b: ; fce1b + ld e, $2 + call LoadTradesPointer + ld a, [hl] + call $4de8 + ld de, StringBuffer2 + call $4df4 + ld e, $1 + call LoadTradesPointer + ld a, [hl] + call $4de8 + ld de, $d050 + call $4df4 + ld hl, StringBuffer1 +.asm_fce3c + ld a, [hli] + cp $50 + jr nz, .asm_fce3c + dec hl + push hl + ld e, $1e + call LoadTradesPointer + ld a, [hl] + pop hl + and a + ret z + cp $1 + ld a, $ef + jr z, .asm_fce54 + ld a, $f5 + +.asm_fce54 + ld [hli], a + ld [hl], $50 + ret +; fce58 + + +Trades: ; 0xfce58 +; byte 1: dialog +; byte 2: givemon +; byte 3: getmon +; bytes 4-14 nickname +; bytes 15-16 DVs +; byte 17 held item +; bytes 18-19 ID +; bytes 20-30 OT name +; byte 31 gender +; byte 32 XXX always zero? + + 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 + +Functionfcf38: ; fcf38 + push af + call $4e1b + pop af + ld bc, $0008 + ld hl, $4f53 + call AddNTimes + ld a, [$cf64] + ld c, a + add hl, bc + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + call PrintText + ret +; fcf53 + +INCBIN "baserom.gbc", $fcf53, $fcfec - $fcf53 + + +Functionfcfec: ; fcfec + ld a, [$d45c] + and a + ret nz + call $2d05 + and a + ret nz + xor a + ld [$dc18], a + call $5044 + ret nc + call $50c3 + ret nc + ld b, $3f + ld de, $500f + callba Function97c4f + scf + ret +; fd00f + +INCBIN "baserom.gbc", $fd00f, $fd044 - $fd00f + + +Functionfd044: ; fd044 + ld a, [$dc17] + cp $a + jr nc, .asm_fd065 + call $5117 + ld a, [hli] + ld [$ffc3], a + ld a, [hli] + ld [$ffc4], a + ld a, [hli] + ld [$ffc5], a + ld de, $d851 + ld bc, $ffc3 + ld a, $5 + ld hl, $600b + rst FarCall + jr nc, .asm_fd067 + +.asm_fd065 + jr .asm_fd069 + +.asm_fd067 + scf + ret + +.asm_fd069 + ld hl, $ffc3 + ld [hl], $0 + inc hl + ld [hl], $8 + inc hl + ld [hl], $fc +.asm_fd074 + ld de, $dc19 + ld bc, $d851 + ld a, $5 + ld hl, $600b + rst FarCall + jr z, .asm_fd08b + jr nc, .asm_fd089 + call $5099 + jr .asm_fd074 + +.asm_fd089 + xor a + ret + +.asm_fd08b + call $5099 + ld a, $5 + call Function2fb1 + inc a + ld [$dc18], a + scf + ret +; fd099 + +Functionfd099: ; fd099 + ld de, $dc19 + ld bc, $ffc3 + ld a, $5 + ld hl, $6053 + rst FarCall + ret +; fd0a6 + +INCBIN "baserom.gbc", $fd0a6, $fd0c3 - $fd0a6 + + +Functionfd0c3: ; fd0c3 + call $5117 + ld de, $0006 + add hl, de + ld a, [hli] + cp $1 + jr z, .asm_fd0db + ld a, [hl] + ld c, a + ld b, $1 + ld a, $9 + ld hl, $6ef1 + rst FarCall + scf + ret + +.asm_fd0db + ld a, [hl] + ld [CurItem], a + ld a, $1 + ld [$d10c], a + ld hl, $d8f1 + call $2f66 + ret +; fd0eb + +INCBIN "baserom.gbc", $fd0eb, $fd117 - $fd0eb + + +Functionfd117: ; fd117 + ld a, [$dc18] + and a + jr z, .asm_fd123 + dec a + ld de, $5136 + jr .asm_fd12e + +.asm_fd123 + ld a, [$dc17] + cp $a + jr c, .asm_fd12b + xor a + +.asm_fd12b + ld de, $515e + +.asm_fd12e + ld l, a + ld h, $0 + add hl, hl + add hl, hl + add hl, hl + add hl, de + ret +; fd136 + +INCBIN "baserom.gbc", $fd136, $fd1d2 - $fd136 + + +SECTION "bank40",DATA,BANK[$40] + +INCBIN "baserom.gbc", $100000, $10032e - $100000 + + +Function10032e: ; 10032e + call $434d + ld e, a + ret nc + ld [$cd2b], a + ret +; 100337 + +Function100337: ; 100337 + call $432e + ret c + ld a, [$c821] + bit 4, a + jr z, .asm_100345 + ld a, e + and a + ret + +.asm_100345 + ld a, $f9 + ld e, a + ld [$cd2b], a + scf + ret +; 10034d + + + +Function10034d: ; 10034d + ld a, [$c821] + bit 1, a + jr nz, .asm_10036a + bit 2, a + jr nz, .asm_10037e + bit 3, a + jr nz, .asm_100366 + bit 0, a + jr nz, .asm_100364 + ld a, $1 + and a + ret + +.asm_100364 + xor a + ret + +.asm_100366 + ld a, $2 + and a + ret + +.asm_10036a + ld a, $0 + call $3e32 + ld [$cd2c], a + ld a, h + ld [$cd2d], a + ld a, l + ld [$cd2e], a + ld a, $ff + scf + ret + +.asm_10037e + ld a, $fe + scf + ret +; 100382 + +Function100382: ; 100382 + ld a, [$cd27] + ld hl, $444e + rst JumpTable + ret +; 10038a + +Function10038a: ; 10038a + ld hl, $ccb4 + ld a, $2e + call $3e32 + ret +; 100393 + +Function100393: ; 100393 + ld hl, $cc60 + ld a, $3a + call $3e32 + ret +; 10039c + +Function10039c: ; 10039c + ld hl, $cc60 + ld de, $d000 + ld bc, $0054 + ld a, $3 + call Function306b + ret +; 1003ab + +INCBIN "baserom.gbc", $1003ab, $1003ba - $1003ab + + +Function1003ba: ; 1003ba + ld hl, $ccb4 + ld de, $d080 + ld bc, $0054 + ld a, $3 + call Function306b + ret +; 1003c9 + +Function1003c9: ; 1003c9 + ld hl, $d080 + ld de, $ccb4 + ld bc, $0054 + ld a, $3 + call Function306b + ret +; 1003d8 + +Function1003d8: ; 1003d8 + ld hl, $ccb4 + ld a, [hli] + ld c, a + ld b, $0 + push hl + add hl, bc + ld a, [BGMapPalBuffer] + ld [hl], a + pop hl + inc bc + call $443a + add hl, bc + ld [hl], e + inc hl + ld [hl], d + ld a, c + add $2 + ld [$ccb4], a + ret +; 1003f5 + +Function1003f5: ; 1003f5 + ld a, [$cc60] + sub $3 + ld [$cc60], a + ld a, [$ccb4] + sub $3 + ld [$ccb4], a + ret +; 100406 + +Function100406: ; 100406 + ld a, [$cc60] + sub $2 + ld c, a + ld b, $0 + ld hl, $cc61 + call $443a + add hl, bc + ld a, [hli] + cp e + jr nz, .asm_100426 + ld a, [hld] + cp d + jr nz, .asm_100426 + dec hl + ld a, [BGMapPalBuffer] + cp [hl] + jr nz, .asm_10042d + xor a + ret + +.asm_100426 + ld a, $f4 + ld [$cd2b], a + jr .asm_100432 + +.asm_10042d + ld a, $f3 + ld [$cd2b], a + +.asm_100432 + push hl + ld hl, $cd7c + inc [hl] + pop hl + scf + ret +; 10043a + +Function10043a: ; 10043a + push hl + push bc + ld de, $0000 +.asm_10043f + ld a, [hli] + add e + ld e, a + ld a, d + adc $0 + ld d, a + dec bc + ld a, b + or c + jr nz, .asm_10043f + pop bc + pop hl + ret +; 10044e + +INCBIN "baserom.gbc", $10044e, $10046a - $10044e + + +Function10046a: ; 10046a + ld hl, BGMapPalBuffer + inc [hl] + call $43d8 + call $43ba + ld a, [$cd27] + inc a + ld [$cd27], a + ret +; 10047c + +Function10047c: ; 10047c + call $4337 + ret c + ret z + cp $2 + jr z, .asm_100487 + jr .asm_10048d + +.asm_100487 + ld a, $8 + ld [$cd27], a + ret + +.asm_10048d + ld a, $2 + ld [$cd27], a + ret +; 100493 + +Function100493: ; 100493 + jr .asm_100497 + + jr .asm_100497 + +.asm_100497 + call $4337 + ret c + ret z + ld a, [$cd27] + inc a + ld [$cd27], a + ret +; 1004a4 + +Function1004a4: ; 1004a4 + call $4406 + jr c, .asm_1004b8 + call $43c9 + call $43f5 + ld a, [$cd27] + set 7, a + ld [$cd27], a + ret + +.asm_1004b8 + scf + ret +; 1004ba + +Function1004ba: ; 1004ba + call $438a + and a + jr nz, .asm_1004c8 + ld a, [$cd27] + inc a + ld [$cd27], a + ret + +.asm_1004c8 + ld a, $8 + ld [$cd27], a + ret +; 1004ce + +Function1004ce: ; 1004ce + call $4337 + ret c + ret z + cp $2 + ret nz + ld a, [$cd27] + inc a + ld [$cd27], a + ret +; 1004de + +Function1004de: ; 1004de + call $4393 + ld a, [$cd27] + inc a + ld [$cd27], a + ret +; 1004e9 + +Function1004e9: ; 1004e9 + call $438a + ld a, [$cd27] + inc a + ld [$cd27], a + ret +; 1004f4 + +Function1004f4: ; 1004f4 + call $4337 + ret c + ret z + ld a, [$cd27] + inc a + ld [$cd27], a + call $439c + ret +; 100504 + +INCBIN "baserom.gbc", $100504, $10062d - $100504 + + +Function10062d: ; 10062d + push bc + call $464e + pop bc + ld a, [$cd44] + cp b + jr nc, .asm_10063a + and a + ret + +.asm_10063a + ld a, $fa + ld [$cd2b], a + scf + ret +; 100641 + +Function100641: ; 100641 + xor a + ld [$cd44], a + ld [$cd45], a + ld [$cd46], a + ret +; 10064c + +INCBIN "baserom.gbc", $10064c, $10064e - $10064c + + +Function10064e: ; 10064e + ld hl, $cd46 + ld a, [hl] + add c + cp $3c + jr c, .asm_100658 + xor a + +.asm_100658 + ld [hld], a + ret c + ld a, [hl] + inc a + cp $3c + jr c, .asm_100661 + xor a + +.asm_100661 + ld [hld], a + ret c + inc [hl] + ret +; 100665 + +INCBIN "baserom.gbc", $100665, $1006dc - $100665 + + +Function1006dc: ; 1006dc + ld a, [hld] + ld c, a + ld a, [hSeconds] + sub c + jr nc, .asm_1006e5 + add $3c + +.asm_1006e5 + ld [de], a + dec de + ld a, [hld] + ld c, a + ld a, [hMinutes] + sbc c + jr nc, .asm_1006f0 + add $3c -Functionfce15: ; fce15 - ld a, [hli] +.asm_1006f0 ld [de], a dec de ld a, [hl] + ld c, a + ld a, [hHours] + sbc c + jr nc, .asm_1006fb + add $18 + +.asm_1006fb ld [de], a ret -; fce1b +; 1006fd -Functionfce1b: ; fce1b - ld e, $2 - call LoadTradesPointer - ld a, [hl] - call $4de8 - ld de, StringBuffer2 - call $4df4 - ld e, $1 - call LoadTradesPointer - ld a, [hl] - call $4de8 - ld de, $d050 - call $4df4 - ld hl, StringBuffer1 -.asm_fce3c - ld a, [hli] - cp $50 - jr nz, .asm_fce3c - dec hl - push hl - ld e, $1e - call LoadTradesPointer - ld a, [hl] - pop hl +INCBIN "baserom.gbc", $1006fd, $10079c - $1006fd + + +Function10079c: ; 10079c + ld a, [$cd21] + cp $1 + jr nz, .asm_1007f4 + ld hl, $cd2a + bit 5, [hl] + jr nz, .asm_1007f4 + ld hl, $cd2a + bit 6, [hl] + jr nz, .asm_1007f4 + ld a, [$cd6a] + add c + cp $3c + jr nc, .asm_1007be + ld [$cd6a], a + and a + ret + +.asm_1007be + sub $3c + ld [$cd6a], a + ld d, b + push de + call $47f6 + pop de + jr c, .asm_1007e5 + ld a, c + and a + jr nz, .asm_1007e5 + ld a, b + cp $a + jr nc, .asm_1007e5 + ld a, d and a ret z - cp $1 - ld a, $ef - jr z, .asm_fce54 - ld a, $f5 + ld a, [$cd6b] + cp b + ret z + ld a, b + ld [$cd6b], a + call $48e0 + and a + ret -.asm_fce54 - ld [hli], a - ld [hl], $50 +.asm_1007e5 + call $48e0 + ld hl, $cd2a + set 4, [hl] + ld a, $fc + ld [$cd2b], a + scf ret -; fce58 +.asm_1007f4 + and a + ret +; 1007f6 -Trades: ; 0xfce58 -; byte 1: dialog -; byte 2: givemon -; byte 3: getmon -; bytes 4-14 nickname -; bytes 15-16 DVs -; byte 17 held item -; bytes 18-19 ID -; bytes 20-30 OT name -; byte 31 gender -; byte 32 XXX always zero? +Function1007f6: ; 1007f6 + call UpdateTime + ld hl, $cd74 + ld de, $cd71 + call $46dc + ld a, $4 + call GetSRAMBank + ld hl, $a802 + call $4826 + call CloseSRAM + ld hl, $cd6e + call $4826 + ld a, [hHours] + ld [$cd72], a + ld a, [hMinutes] + ld [$cd73], a + ld a, [hSeconds] + ld [$cd74], a + ret +; 100826 - 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 +Function100826: ; 100826 + ld a, [$cd71] + add [hl] + sub $3c + jr nc, .asm_100830 + add $3c -Functionfcf38: ; fcf38 - push af - call $4e1b - pop af - ld bc, $0008 - ld hl, $4f53 - call AddNTimes - ld a, [$cf64] +.asm_100830 + ld [hld], a + ccf + ld a, [BGMapBufferPtrs] + adc [hl] + sub $3c + jr nc, .asm_10083c + add $3c + +.asm_10083c + ld [hld], a + ld b, a + ccf + ld a, [$cd6f] + adc [hl] + ld [hl], a ld c, a - add hl, bc - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - call PrintText ret -; fcf53 +; 100846 -INCBIN "baserom.gbc", $fcf53, $fcfec - $fcf53 +INCBIN "baserom.gbc", $100846, $1008e0 - $100846 -Functionfcfec: ; fcfec - ld a, [$d45c] - and a - ret nz - call $2d05 - and a - ret nz +Function1008e0: ; 1008e0 + ld a, [hBGMapMode] + ld b, a + ld a, [$ff9e] + ld c, a + push bc xor a - ld [$dc18], a - call $5044 - ret nc - call $50c3 - ret nc - ld b, $3f - ld de, $500f - callba Function97c4f - scf + ld [hBGMapMode], a + ld a, $3 + ld [$ff9e], a + call $4970 + call $4902 + call $4989 + call DelayFrame + pop bc + ld a, c + ld [$ff9e], a + ld a, b + ld [hBGMapMode], a ret -; fd00f +; 100902 -INCBIN "baserom.gbc", $fd00f, $fd044 - $fd00f +Function100902: ; 100902 + ld hl, $c56b + ld b, $1 + ld c, $b + call TextBox + ld a, [$cd6d] + ld c, a + ld a, $a + sub c + ld [StringBuffer2], a + jr z, .asm_10093f + ld de, $4966 + ld hl, $c580 + call PlaceString + ld hl, $c584 + ld bc, $0102 + ld de, StringBuffer2 + call Function3198 + ld de, $00cc + call StartSFX + callba Function104061 + ld c, $3c + call DelayFrames + ret +.asm_10093f + ld de, $495a + ld hl, $c580 + call PlaceString + ld de, $00cd + call StartSFX + callba Function104061 + ld c, $78 + call DelayFrames + ret +; 10095a -Functionfd044: ; fd044 - ld a, [$dc17] - cp $a - jr nc, .asm_fd065 - call $5117 - ld a, [hli] - ld [$ffc3], a - ld a, [hli] - ld [$ffc4], a - ld a, [hli] - ld [$ffc5], a - ld de, $d851 - ld bc, $ffc3 - ld a, $5 - ld hl, $600b - rst FarCall - jr nc, .asm_fd067 +INCBIN "baserom.gbc", $10095a, $100970 - $10095a -.asm_fd065 - jr .asm_fd069 -.asm_fd067 - scf +Function100970: ; 100970 + ld hl, TileMap + ld de, $dc00 + call $49a5 + ld hl, AttrMap + ld de, $dd68 + call $49a5 + call $49d2 + call $49ae ret +; 100989 -.asm_fd069 - ld hl, $ffc3 - ld [hl], $0 - inc hl - ld [hl], $8 - inc hl - ld [hl], $fc -.asm_fd074 - ld de, $dc19 - ld bc, $d851 - ld a, $5 - ld hl, $600b - rst FarCall - jr z, .asm_fd08b - jr nc, .asm_fd089 - call $5099 - jr .asm_fd074 +Function100989: ; 100989 + ld hl, $dc00 + ld de, TileMap + call $49a5 + call $49ae + callba Function104061 + ld hl, $dd68 + ld de, AttrMap + call $49a5 + ret +; 1009a5 -.asm_fd089 - xor a +Function1009a5: ; 1009a5 + ld bc, $0168 + ld a, $3 + call Function306b ret +; 1009ae -.asm_fd08b - call $5099 - ld a, $5 - call Function2fb1 - inc a - ld [$dc18], a +Function1009ae: ; 1009ae + ld a, [rSVBK] + push af + ld a, $3 + ld [rSVBK], a + ld hl, $d800 + ld de, AttrMap + ld c, $14 + ld b, $12 +.asm_1009bf + push bc +.asm_1009c0 + ld a, [hli] + ld [de], a + inc de + dec c + jr nz, .asm_1009c0 + ld bc, $000c + add hl, bc + pop bc + dec b + jr nz, .asm_1009bf + pop af + ld [rSVBK], a + ret +; 1009d2 + +Function1009d2: ; 1009d2 + ld a, [rSVBK] + push af + ld a, $3 + ld [rSVBK], a + ld a, [rVBK] + push af + ld a, $1 + ld [rVBK], a + ld hl, $d800 + ld de, VBGMap0 + ld bc, $0324 + call Functionf82 + pop af + ld [rVBK], a + pop af + ld [rSVBK], a + ret +; 1009f3 + +Function1009f3: ; 1009f3 + ld a, [hJoyDown] + and $5 + cp $5 + jr nz, .asm_100a07 + ld hl, $cd2a + set 4, [hl] + ld a, $f8 + ld [$cd2b], a scf ret -; fd099 -Functionfd099: ; fd099 - ld de, $dc19 - ld bc, $ffc3 - ld a, $5 - ld hl, $6053 +.asm_100a07 + xor a + ret +; 100a09 + +Function100a09: ; 100a09 + call $4a2e + ld [$d431], a + callba Function4000 + ld a, [InLinkBattle] + cp $4 + jr nz, .asm_100a2a + call $4a87 + call $4da5 + ld a, $f + ld hl, $6e27 rst FarCall + jr .asm_100a2d + +.asm_100a2a + call $4a53 + +.asm_100a2d ret -; fd0a6 +; 100a2e -INCBIN "baserom.gbc", $fd0a6, $fd0c3 - $fd0a6 +Function100a2e: ; 100a2e + ld a, [$d0ec] + and a + jr nz, .asm_100a48 + ld a, [CurPlayerMove] + ld b, $e + cp $a5 + jr z, .asm_100a4f + ld b, $d + cp $ff + jr z, .asm_100a4f + ld a, [CurMoveNum] + jr .asm_100a50 +.asm_100a48 + ld a, [CurPartyMon] + add $4 + jr .asm_100a50 -Functionfd0c3: ; fd0c3 - call $5117 - ld de, $0006 - add hl, de - ld a, [hli] - cp $1 - jr z, .asm_fd0db - ld a, [hl] - ld c, a - ld b, $1 - ld a, $9 - ld hl, $6ef1 - rst FarCall - scf +.asm_100a4f + ld a, b + +.asm_100a50 + and $f ret +; 100a53 -.asm_fd0db - ld a, [hl] - ld [CurItem], a - ld a, $1 - ld [$d10c], a - ld hl, $d8f1 - call $2f66 +Function100a53: ; 100a53 + ld a, [$d431] + ld [$cf56], a + ld a, $ff + ld [$cf52], a +.asm_100a5e + call Function8c1 + call DelayFrame + ld a, [$cf52] + inc a + jr z, .asm_100a5e + ld b, $a +.asm_100a6c + call DelayFrame + call Function8c1 + dec b + jr nz, .asm_100a6c + ld b, $a +.asm_100a77 + call DelayFrame + call Function908 + dec b + jr nz, .asm_100a77 + ld a, [$cf52] + ld [$d430], a ret -; fd0eb +; 100a87 -INCBIN "baserom.gbc", $fd0eb, $fd117 - $fd0eb +Function100a87: ; 100a87 + call $4acf + call $4641 + ld a, $0 + ld [$cd27], a +.asm_100a92 + call DelayFrame + call GetJoypadPublic + ld a, $40 + ld hl, $4382 + rst FarCall + ld c, $1 + ld b, $3 + push bc + call $462d + pop bc + jr c, .asm_100ac7 + ld b, $1 + call $479c + jr c, .asm_100ac7 + call $49f3 + jr c, .asm_100ac7 + ld a, [$cd2b] + and a + jr nz, .asm_100ac7 + ld a, [$cd27] + bit 7, a + jr z, .asm_100a92 + call $4ae7 + jr .asm_100ace +.asm_100ac7 + ld a, $f + ld [$d430], a + jr .asm_100ace -Functionfd117: ; fd117 - ld a, [$dc18] +.asm_100ace + ret +; 100acf + +Function100acf: ; 100acf + ld de, $4b0a + ld hl, $ccb5 + ld a, [$d431] + ld [hli], a + ld c, $1 +.asm_100adb + ld a, [de] + inc de + ld [hli], a + inc c and a - jr z, .asm_fd123 - dec a - ld de, $5136 - jr .asm_fd12e + jr nz, .asm_100adb + ld a, c + ld [$ccb4], a + ret +; 100ae7 -.asm_fd123 - ld a, [$dc17] - cp $a - jr c, .asm_fd12b - xor a +Function100ae7: ; 100ae7 + ld de, $4b0a + ld hl, $cc62 +.asm_100aed + ld a, [de] + inc de + and a + jr z, .asm_100af8 + cp [hl] + jr nz, .asm_100aff + inc hl + jr .asm_100aed -.asm_fd12b - ld de, $515e +.asm_100af8 + ld a, [$cc61] + ld [$d430], a + ret -.asm_fd12e - ld l, a - ld h, $0 - add hl, hl - add hl, hl - add hl, hl - add hl, de +.asm_100aff + ld a, $f + ld [$d430], a + ld a, $f1 + ld [$cd2b], a ret -; fd136 +; 100b0a -INCBIN "baserom.gbc", $fd136, $fd1d2 - $fd136 +INCBIN "baserom.gbc", $100b0a, $100cb5 - $100b0a -SECTION "bank40",DATA,BANK[$40] +Function100cb5: ; 100cb5 + call $4dd8 + ret c + ld hl, $cfa5 + set 7, [hl] + res 6, [hl] +.asm_100cc0 + call $4dd2 + ld a, $9 + ld hl, $41ba + rst FarCall + push bc + callba Function8cf69 + ld a, $41 + ld hl, $402d + rst FarCall + call $4dfd + pop bc + jr c, .asm_100d17 + ld a, [$cfa8] + and c + jr z, .asm_100cc0 + call Function1bee + ld a, [PartyCount] + inc a + ld b, a + ld a, [$cfa9] + cp b + jr z, .asm_100d17 + ld [$d0d8], a + ld a, [$ffa9] + ld b, a + bit 1, b + jr nz, .asm_100d17 + ld a, [$cfa9] + dec a + ld [CurPartyMon], a + ld c, a + ld b, $0 + ld hl, PartySpecies + add hl, bc + ld a, [hl] + ld [CurPartySpecies], a + ld de, $0008 + call StartSFX + call WaitSFX + and a + ret -INCBIN "baserom.gbc", $100000, $10032e - $100000 +.asm_100d17 + ld de, $0008 + call StartSFX + call WaitSFX + scf + ret +; 100d22 +INCBIN "baserom.gbc", $100d22, $100da5 - $100d22 -Function10032e: ; 10032e - call $434d - ld e, a - ret nc - ld [$cd2b], a + +Function100da5: ; 100da5 + ld hl, $cd2a + res 3, [hl] + ld hl, $cd29 + res 0, [hl] ret -; 100337 +; 100db0 -INCBIN "baserom.gbc", $100337, $10034d - $100337 +INCBIN "baserom.gbc", $100db0, $100dc0 - $100db0 -Function10034d: ; 10034d - ld a, [$c821] - bit 1, a - jr nz, .asm_10036a - bit 2, a - jr nz, .asm_10037e - bit 3, a - jr nz, .asm_100366 - bit 0, a - jr nz, .asm_100364 - ld a, $1 - and a +Function100dc0: ; 100dc0 + ld a, [InLinkBattle] + cp $4 + jr nz, .asm_100dd0 + ld hl, $cd2a + bit 3, [hl] + jr z, .asm_100dd0 + scf ret -.asm_100364 +.asm_100dd0 xor a ret +; 100dd2 -.asm_100366 - ld a, $2 +Function100dd2: ; 100dd2 + ld a, $1e + ld [OverworldDelay], a + ret +; 100dd8 + +Function100dd8: ; 100dd8 + ld c, $1 + ld b, $3 + ld a, $40 + ld hl, $462d + rst FarCall + jr c, .asm_100dfb + ld c, $3c + ld b, $1 + call $479c + jr c, .asm_100dfb + ld a, $40 + ld hl, $432e + rst FarCall + ld a, [$cd2b] and a + jr nz, .asm_100dfb + xor a ret -.asm_10036a - ld a, $0 - call $3e32 - ld [$cd2c], a - ld a, h - ld [$cd2d], a - ld a, l - ld [$cd2e], a - ld a, $ff +.asm_100dfb scf ret +; 100dfd -.asm_10037e - ld a, $fe +Function100dfd: ; 100dfd + ld a, [OverworldDelay] + ld c, a + ld a, $1e + sub c + ld c, a + ld b, $3 + push bc + ld a, $40 + ld hl, $462d + rst FarCall + pop bc + jr c, .asm_100e2b + ld b, $1 + call $479c + jr c, .asm_100e2b + call $49f3 + jr c, .asm_100e2b + ld a, $40 + ld hl, $432e + rst FarCall + ld a, [$cd2b] + and a + jr nz, .asm_100e2b + xor a + ret + +.asm_100e2b scf ret -; 100382 +; 100e2d -INCBIN "baserom.gbc", $100382, $10389d - $100382 +INCBIN "baserom.gbc", $100e2d, $10389d - $100e2d SECTION "bank41",DATA,BANK[$41] @@ -49060,7 +52983,15 @@ Function104000: ; 104000 jp $4177 ; 104006 -INCBIN "baserom.gbc", $104006, $104061 - $104006 +INCBIN "baserom.gbc", $104006, $10402d - $104006 + + +Function10402d: ; 10402d + ld hl, $4033 + jp Function104177 +; 104033 + +INCBIN "baserom.gbc", $104033, $104061 - $104033 Function104061: ; 104061 -- cgit v1.2.3 From 5001d9b0230530fc8b94aeac0a0b6513983c31d8 Mon Sep 17 00:00:00 2001 From: yenatch Date: Sun, 28 Jul 2013 03:32:25 -0400 Subject: bank 6f is common text --- main.asm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index 701be7c05..d29ffa3ed 100644 --- a/main.asm +++ b/main.asm @@ -31335,7 +31335,7 @@ Function3846c: ; 3846c call CopyBytes pop af jr c, .asm_384a3 - ld hl, $44d0 + ld hl, UnknownText_0x384d0 call PrintText .asm_384a3 @@ -31364,7 +31364,12 @@ Function3846c: ; 3846c ret ; 384d0 -INCBIN "baserom.gbc", $384d0, $38591 - $384d0 +UnknownText_0x384d0: ; 384d0 + text_jump UnknownText_0x1bcf9c, BANK(UnknownText_0x1bcf9c) + db "@" +; 384d5 + +INCBIN "baserom.gbc", $384d5, $38591 - $384d5 AIScoring: ; 38591 -- cgit v1.2.3 From 3070aeb91578c196db2c35ac9b08496032975d62 Mon Sep 17 00:00:00 2001 From: yenatch Date: Sun, 28 Jul 2013 03:39:05 -0400 Subject: make way for bank 6f --- main.asm | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index d29ffa3ed..d7d8e1a56 100644 --- a/main.asm +++ b/main.asm @@ -56204,6 +56204,8 @@ INCLUDE "stats/pokedex/entries_2.asm" SECTION "bank6F",DATA,BANK[$6F] +; Common text II + _FruitBearingTreeText: ; 0x1bc000 db $0, "It's a fruit-", $4f db "bearing tree.", $57 @@ -56238,16 +56240,16 @@ INCBIN "baserom.gbc", $1bc06b, $1be08d - $1bc06b SECTION "bank70",DATA,BANK[$70] -; Common text II +; Common text III -INCLUDE "text/common_2.tx" +INCLUDE "text/common_3.tx" SECTION "bank71",DATA,BANK[$71] -; Common text III +; Common text IV -INCLUDE "text/common_3.tx" +INCLUDE "text/common_4.tx" SECTION "bank72",DATA,BANK[$72] -- cgit v1.2.3 From 03413c9f438d27d3e4dda7cc5a7d19d8bca3a617 Mon Sep 17 00:00:00 2001 From: yenatch Date: Sun, 28 Jul 2013 17:16:51 -0400 Subject: common text 2 and some fixes to compile --- main.asm | 55 ++++++++++++++----------------------------------------- 1 file changed, 14 insertions(+), 41 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index d7d8e1a56..0a01a6c0c 100644 --- a/main.asm +++ b/main.asm @@ -31066,10 +31066,10 @@ Function38000: ; 38000 ret nz ld a, [PlayerSubStatus5] bit 7, a - jr nz, .asm_38041 + jr nz, Function38041 ld a, [$c731] and a - jr nz, .asm_38041 + jr nz, Function38041 ld hl, $55a1 ld a, [$cfc0] and a @@ -31086,23 +31086,25 @@ Function38000: ; 38000 jp nz, $4083 bit 2, [hl] jp nz, $40c1 + ; fallthrough +; 38041 -.asm_38041 +Function38041: ; 38041 call $4105 ret ; 38045 Function38045: ; 38045 - callab Function34941 + callab Function0x34941 ld a, [$c717] and $f0 - jp z, $4041 + jp z, Function38041 cp $10 jr nz, .asm_38061 call RNG cp $80 jr c, .asm_38077 - jp $4041 + jp Function38041 .asm_38061 cp $20 @@ -31126,7 +31128,7 @@ Function38045: ; 38045 ; 38083 Function38083: ; 38083 - callab Function34941 + callab Function0x34941 ld a, [$c717] and $f0 jp z, $4041 @@ -31159,7 +31161,7 @@ Function38083: ; 38083 ; 380c1 Function380c1: ; 380c1 - callab Function34941 + callab Function0x34941 ld a, [$c717] and $f0 jp z, $4041 @@ -32191,7 +32193,7 @@ Function3d5d7: ; 3d5d7 ld a, $10 call FarCopyBytes call SetEnemyTurn - callab Function347c8 + callab Function0x347c8 pop bc pop de pop hl @@ -32226,13 +32228,13 @@ Function3d618: ; 3d618 ld a, [BattleMonType1] ld [PlayerMoveType], a call SetPlayerTurn - callab Function347c8 + callab Function0x347c8 ld a, [$d265] cp $b jr nc, .asm_3d663 ld a, [BattleMonType2] ld [PlayerMoveType], a - callab Function347c8 + callab Function0x347c8 ld a, [$d265] cp $b jr nc, .asm_3d663 @@ -56206,36 +56208,7 @@ SECTION "bank6F",DATA,BANK[$6F] ; Common text II -_FruitBearingTreeText: ; 0x1bc000 - db $0, "It's a fruit-", $4f - db "bearing tree.", $57 -; 0x1bc01c - -_HeyItsFruitText: ; 0x1bc01c - db $0, "Hey! It's", $4f - db "@" - text_from_ram StringBuffer3 - db $0, "!", $57 -; 0x1bc02d - -_ObtainedFruitText: ; 0x1bc02d - db $0, "Obtained", $4f - db "@" - text_from_ram StringBuffer3 - db $0, "!", $57 -; 0x1bc03e - -_FruitPackIsFullText: ; 0x1bc03e - db $0, "But the PACK is", $4f - db "full…", $57 -; 0x1bc055 - -_NothingHereText: ; 0x1bc055 - db $0, "There's nothing", $4f - db "here…", $57 -; 0x1bc06b - -INCBIN "baserom.gbc", $1bc06b, $1be08d - $1bc06b +INCLUDE "text/common_2.tx" SECTION "bank70",DATA,BANK[$70] -- cgit v1.2.3 From 39d84d4491d79d565289248dcc9d7e2a2b68c671 Mon Sep 17 00:00:00 2001 From: yenatch Date: Sun, 28 Jul 2013 18:20:08 -0400 Subject: bank f --- main.asm | 7609 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 7285 insertions(+), 324 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index 0a01a6c0c..abfe539c3 100644 --- a/main.asm +++ b/main.asm @@ -9257,7 +9257,16 @@ Function31be: ; 31be ret ; 31cd -INCBIN "baserom.gbc", $31cd, $31db - $31cd +Function31cd: ; 31cd + ld a, [hROMBank] + ld [$d0e8], a + ld a, l + ld [$d0e9], a + ld a, h + ld [$d0ea], a + ret +; 31db + StringCmp: ; 31db ; Compare strings, c bytes in length, at de and hl. @@ -10273,7 +10282,35 @@ FacingPlayerDistance: ; 36ad ; 36f5 -INCBIN "baserom.gbc", $36f5, $3741 - $36f5 +INCBIN "baserom.gbc", $36f5, $3718 - $36f5 + + +Function3718: ; 3718 + ld a, [BattleType] + cp $1 + jr .asm_3724 + + ld hl, WalkingTile + jr .asm_3731 + +.asm_3724 + ld a, [$d0ee] + ld hl, WalkingTile + and $f + jr z, .asm_3731 + ld hl, $d049 + +.asm_3731 + ld a, [hli] + ld h, [hl] + ld l, a + call GetMapEventBank + call Function31b0 + call WaitBGMap + call Functiona80 + ret +; 3741 + Function3741: ; 3741 @@ -10999,7 +11036,62 @@ FarBattleTextBox: ; 3ad5 ; 3ae1 -INCBIN "baserom.gbc", $3ae1, $3b2a - $3ae1 +Function3ae1: ; 3ae1 + ld a, $32 + rst Bankswitch + + ld a, [hli] + ld [$d410], a + ld a, [hl] + ld [$d411], a + ld a, $33 + rst Bankswitch + + ret +; 3af0 + +Function3af0: ; 3af0 + push hl + push de + ld hl, $d410 + ld e, [hl] + inc hl + ld d, [hl] + ld a, $32 + rst Bankswitch + + ld a, [de] + ld [$d417], a + inc de + ld a, $33 + rst Bankswitch + + ld [hl], d + dec hl + ld [hl], e + pop de + pop hl + ld a, [$d417] + ret +; 3b0c + +Function3b0c: ; 3b0c + ld a, [hLCDStatCustom] + and a + ret z + ld a, $0 + ld [$cf68], a + ld a, $d2 + ld [$cf69], a + ld a, $0 + ld [$cf6a], a + ld a, $d1 + ld [$cf6b], a + ld a, $9 + ld [$cf67], a + ret +; 3b2a + Function3b2a: ; 3b2a @@ -11443,7 +11535,18 @@ CheckSFX: ; 3dde ret ; 3dfe -INCBIN "baserom.gbc", $3dfe, $3e10 - $3dfe +Function3dfe: ; 3dfe + xor a + ld [$c1cc], a + ld [SoundInput], a + ld [rNR10], a + ld [rNR11], a + ld [rNR12], a + ld [rNR13], a + ld [rNR14], a + ret +; 3e10 + ChannelsOff: ; 3e10 ; Quickly turn off music channels @@ -19029,7 +19132,32 @@ PrintNumber_AdvancePointer: ; c64a ret ; 0xc658 -INCBIN "baserom.gbc", $c658, $c706 - $c658 +INCBIN "baserom.gbc", $c658, $c6ea - $c658 + + +Functionc6ea: ; c6ea + xor a + ld hl, MagikarpLength + ld bc, $0007 + call ByteFill + ret +; c6f5 + +Functionc6f5: ; c6f5 + ld a, [MagikarpLength] + rst JumpTable + ld [MagikarpLength], a + bit 7, a + jr nz, .asm_c702 + and a + ret + +.asm_c702 + and $7f + scf + ret +; c706 + GetPartyNick: ; c706 ; write CurPartyMon nickname to StringBuffer1-3 @@ -19282,7 +19410,140 @@ AskSurfText: ; ca36 ; ca3b -INCBIN "baserom.gbc", $ca3b, $d1d5 - $ca3b +INCBIN "baserom.gbc", $ca3b, $cb95 - $ca3b + + +Functioncb95: ; cb95 + call $46ea + ld a, $1 + jr .asm_cba1 + + call $46ea + ld a, $2 + +.asm_cba1 + ld [Buffer2], a +.asm_cba4 + ld hl, $4bb2 + call $46f5 + jr nc, .asm_cba4 + and $7f + ld [$d0ec], a + ret +; cbb2 + +INCBIN "baserom.gbc", $cbb2, $cf8e - $cbb2 + + +Functioncf8e: ; cf8e + ld a, e + push af + call $46ea + pop af + ld [Buffer2], a +.asm_cf97 + ld hl, $4fa5 + call $46f5 + jr nc, .asm_cf97 + and $7f + ld [$d0ec], a + ret +; cfa5 + +INCBIN "baserom.gbc", $cfa5, $d0b3 - $cfa5 + + +Functiond0b3: ; d0b3 + call $50bc + and $7f + ld [$d0ec], a + ret +; d0bc + +Functiond0bc: ; d0bc + call $5121 + jr c, .asm_d110 + ld a, [PlayerState] + cp $0 + jr z, .asm_d0ce + cp $1 + jr z, .asm_d0f7 + jr .asm_d110 + +.asm_d0ce + ld hl, $513e + ld de, $514e + call $5119 + call $31cd + xor a + ld [MusicFade], a + ld de, $0000 + call StartMusic + call DelayFrame + call MaxVolume + ld de, $0013 + ld a, e + ld [CurMusic], a + call StartMusic + ld a, $1 + ret + +.asm_d0f7 + ld hl, BikeFlags + bit 1, [hl] + jr nz, .asm_d10b + ld hl, $5158 + ld de, $516b + call $5119 + ld a, $3 + jr .asm_d113 + +.asm_d10b + ld hl, $5171 + jr .asm_d113 + +.asm_d110 + ld a, $0 + ret + +.asm_d113 + call $31cd + ld a, $1 + ret +; d119 + +Functiond119: ; d119 + ld a, [$d0ef] + and a + ret z + ld h, d + ld l, e + ret +; d121 + +Functiond121: ; d121 + call GetMapPermission + call CheckOutdoorMap + jr z, .asm_d133 + cp $4 + jr z, .asm_d133 + cp $6 + jr z, .asm_d133 + jr .asm_d13c + +.asm_d133 + call Function184a + and $f + jr nz, .asm_d13c + xor a + ret + +.asm_d13c + scf + ret +; d13e + +INCBIN "baserom.gbc", $d13e, $d1d5 - $d13e Functiond1d5: ; d1d5 @@ -21503,7 +21764,134 @@ ItemEffects: ; e73c INCLUDE "items/item_effects.asm" -INCBIN "baserom.gbc", $f780, $f881 - $f780 +Functionf780: ; f780 + push de + ld de, $0005 + call WaitPlaySFX + pop de + ret +; f789 + +Functionf789: ; f789 + ld hl, $783d + call PrintText + call $7780 + call Functiona80 + ; fallthrough +; f795 + +Functionf795: ; f795 + ld hl, NumItems + ld a, $1 + ld [$d10c], a + jp Function2f53 +; f7a0 + +Functionf7a0: ; f7a0 + call $6dfa + ld de, Start + ld a, e + ld [FXAnimIDLo], a + ld a, d + ld [FXAnimIDHi], a + xor a + ld [$c689], a + ld [hBattleTurn], a + ld [$cfca], a + ld a, $37 + call Predef + ld hl, $7824 + call PrintText + ld hl, $7829 + call PrintText + jr Functionf795 +; f7ca + +Functionf7ca: ; f7ca + ld hl, $781f + call PrintText + ld a, $2 + ld [$d0ec], a + ret +; f7d6 + +Functionf7d6: ; f7d6 + ld hl, $780b + jp PrintText +; f7dc + +Functionf7dc: ; f7dc + ld hl, $7838 + call PrintText + ld a, $2 + ld [$d0ec], a + ret +; f7e8 + +Functionf7e8: ; f7e8 + ld hl, $7810 + jr .asm_f804 + + ld hl, $7815 + jr .asm_f804 + + ld hl, $781f + jr .asm_f804 + + ld hl, $781a + jr .asm_f804 + + ld hl, $782e + jr .asm_f804 + + ld hl, $7833 + +.asm_f804 + xor a + ld [$d0ec], a + jp PrintText +; f80b + +INCBIN "baserom.gbc", $f80b, $f84c - $f80b + + +Functionf84c: ; f84c + ld a, $2 + call GetPartyParamLocation + push hl + ld de, MagikarpLength + ld a, $5 + call Predef + pop hl + ld bc, $0015 + add hl, bc + ld de, MagikarpLength + ld b, $0 +.asm_f864 + inc b + ld a, b + cp $5 + ret z + ld a, [$d265] + dec a + jr nz, .asm_f876 + ld a, [$cfa9] + inc a + cp b + jr nz, .asm_f87d + +.asm_f876 + ld a, [hl] + and $c0 + ld a, [de] + call nz, Functionf881 + +.asm_f87d + inc hl + inc de + jr .asm_f864 +; f881 + Functionf881: ; f881 @@ -21689,7 +22077,38 @@ Function10026: ; 10026 jp [hl] ; 10030 -INCBIN "baserom.gbc", $10030, $1068a - $10030 +INCBIN "baserom.gbc", $10030, $10493 - $10030 + + +Function10493: ; 10493 + ld hl, Options + set 4, [hl] + call Function1068a +.asm_1049b + call Functiona57 + ld a, [$cf63] + bit 7, a + jr nz, .asm_104ad + call $44b9 + call DelayFrame + jr .asm_1049b + +.asm_104ad + ld a, [$cf65] + ld [$d0d6], a + ld hl, Options + res 4, [hl] + ret +; 104b9 + +Function104b9: ; 104b9 + ld a, [$cf63] + ld hl, $44c3 + call Function1086b + jp [hl] +; 104c3 + +INCBIN "baserom.gbc", $104c3, $1068a - $104c3 Function1068a: ; 1068a @@ -21794,7 +22213,32 @@ Function1076f: ; 1076f ret ; 107bb -INCBIN "baserom.gbc", $107bb, $1086b - $107bb +Function107bb: ; 107bb + call Function106a5 + ld a, [InputType] + or a + jr z, .asm_107ca + ld a, $77 + ld hl, $628f + rst FarCall + +.asm_107ca + call $47d7 + call Function1076f + jr c, .asm_107ca + xor a + ld [$cf66], a + ret +; 107d7 + +Function107d7: ; 107d7 + ld a, [$cf63] + ld hl, $47e1 + call Function1086b + jp [hl] +; 107e1 + +INCBIN "baserom.gbc", $107e1, $1086b - $107e1 Function1086b: ; 1086b @@ -22371,7 +22815,28 @@ HalveMoney: ; 12513 ; 12527 -INCBIN "baserom.gbc", $12527, $125cd - $12527 +INCBIN "baserom.gbc", $12527, $12580 - $12527 + + +Function12580: ; 12580 + ld a, $2e + ld hl, $4172 + rst FarCall + jr c, .asm_1258d + ld hl, $65ba + jr .asm_12590 + +.asm_1258d + ld hl, $65ad + +.asm_12590 + call $31cd + ld a, $1 + ld [$d0ec], a + ret +; 12599 + +INCBIN "baserom.gbc", $12599, $125cd - $12599 StartMenu: ; 125cd @@ -29248,7 +29713,43 @@ Function24b25: ; 24b25 ret ; 24b4e -INCBIN "baserom.gbc", $24b4e, $24ef2 - $24b4e +INCBIN "baserom.gbc", $24b4e, $24e99 - $24b4e + + +Function24e99: ; 24e99 + ld hl, $4ed4 + call Function1d3c + xor a + ld [hBGMapMode], a + call Function1cbb + call Function1ad2 + call Function1c89 + call WaitBGMap + call Function1c66 + ld a, [$cf91] + bit 7, a + jr z, .asm_24ed0 + call Function1c10 + ld hl, $cfa5 + set 6, [hl] + call Function1bc9 + ld de, $0008 + call StartSFX + ld a, [hJoyPressed] + bit 1, a + jr z, .asm_24ed2 + ret z + +.asm_24ed0 + scf + ret + +.asm_24ed2 + and a + ret +; 24ed4 + +INCBIN "baserom.gbc", $24ed4, $24ef2 - $24ed4 Function24ef2: ; 4ef2 @@ -29888,7 +30389,31 @@ Function26ef1: ; 26ef1 jp $6a3b ; 26ef5 -INCBIN "baserom.gbc", $26ef5, $26f59 - $26ef5 +INCBIN "baserom.gbc", $26ef5, $26f02 - $26ef5 + + +Function26f02: ; 26f02 + ld a, c + call $6f0c + ld b, $1 + call Function26a3b + ret +; 26f0c + +Function26f0c: ; 26f0c + push hl + push de + ld e, a + ld d, $0 + ld hl, $6f2b + add hl, de + ld a, [hl] + pop de + pop hl + ret +; 26f19 + +INCBIN "baserom.gbc", $26f19, $26f59 - $26f19 Function26f59: ; 26f59 @@ -29929,7 +30454,31 @@ Function26fdd: ; 26fdd ret ; 26fe3 -INCBIN "baserom.gbc", $26fe3, $270c4 - $26fe3 +INCBIN "baserom.gbc", $26fe3, $2709e - $26fe3 + + +Function2709e: ; 2709e + ld a, [CurPartyMon] + ld hl, PartyMon1CaughtLocation + call GetPartyLocation + ld a, [hl] + and $7f + ld d, a + ld a, [MapGroup] + ld b, a + ld a, [MapNumber] + ld c, a + call GetWorldMapLocation + cp d + ld c, $1 + jr nz, .asm_270bd + ld c, $13 + +.asm_270bd + callab Function71c2 + ret +; 270c4 + GetTrainerDVs: ; 270c4 ; get dvs based on trainer class @@ -30024,7 +30573,86 @@ TrainerClassDVs ; 270d6 db $98, $88 ; mysticalman ; 2715c -INCBIN "baserom.gbc", $2715c, $271f4 - $2715c +Function2715c: ; 2715c + call WhiteBGMap + call ClearTileMap + ld a, [BattleType] + cp $3 + jr z, .asm_27171 + callba Function3f43d + jr .asm_27177 + +.asm_27171 + callba GetPlayerBackpic + +.asm_27177 + callba Function3f47c + callba Function3ed9f + call ClearSGB + call Function1c17 + call Function1d6e + call WaitBGMap + jp Function32f9 +; 27192 + +Function27192: ; 27192 + push hl + push de + push bc + ld a, [hBattleTurn] + and a + ld hl, OTPartyMon1Item + ld de, EnemyMonItem + ld a, [CurOTMon] + jr z, .asm_271ac + ld hl, PartyMon1Item + ld de, BattleMonItem + ld a, [CurBattleMon] + +.asm_271ac + push hl + push af + ld a, [de] + ld b, a + callba GetItem + ld hl, $71de +.asm_271b9 + ld a, [hli] + cp b + jr z, .asm_271c6 + inc a + jr nz, .asm_271b9 + pop af + pop hl + pop bc + pop de + pop hl + ret + +.asm_271c6 + xor a + ld [de], a + pop af + pop hl + call GetPartyLocation + ld a, [hBattleTurn] + and a + jr nz, .asm_271d8 + ld a, [IsInBattle] + dec a + jr z, .asm_271da + +.asm_271d8 + ld [hl], $0 + +.asm_271da + pop bc + pop de + pop hl + ret +; 271de + +INCBIN "baserom.gbc", $271de, $271f4 - $271de MoveEffectsPointers: ; 271f4 INCLUDE "battle/moves/move_effects_pointers.asm" @@ -30121,7 +30749,34 @@ INCBIN "gfx/misc/dude.lz" SECTION "bankB",DATA,BANK[$B] -INCBIN "baserom.gbc", $2c000, $2c059 - $2c000 +INCBIN "baserom.gbc", $2c000, $2c012 - $2c000 + + +Function2c012: ; 2c012 + ld a, $e4 + ld [rOBP0], a + call Function2c165 + jp $403a +; 2c01c + +INCBIN "baserom.gbc", $2c01c, $2c03a - $2c01c + + +Function2c03a: ; 2c03a + call $40c5 + ld hl, OTPartyMon1CurHP + ld de, OTPartyCount + call Function2c059 + ld hl, $cfc4 + ld a, $48 + ld [hli], a + ld [hl], $20 + ld a, $f8 + ld [$d003], a + ld hl, $c418 + jp Function2c143 +; 2c059 + Function2c059: ; 2c059 @@ -31284,7 +31939,29 @@ Function38170: ; 38170 ret ; 38196 -INCBIN "baserom.gbc", $38196, $3844b - $38196 +INCBIN "baserom.gbc", $38196, $38387 - $38196 + + +Function38387: ; 38387 + call UpdateEnemyMonInParty + callba Function3e036 + ld a, $1 + ld [hBGMapMode], a + ld hl, $c6e6 + dec [hl] + scf + ret +; 3839a + +Function3839a: ; 3839a + push de + ld de, $0005 + call StartSFX + pop de + ret +; 383a3 + +INCBIN "baserom.gbc", $383a3, $3844b - $383a3 Function3844b: ; 3844b @@ -31371,14 +32048,203 @@ UnknownText_0x384d0: ; 384d0 db "@" ; 384d5 -INCBIN "baserom.gbc", $384d5, $38591 - $384d5 +Function384d5: ; 384d5 + call $439a + call $44e0 + ld a, $34 + jp $4568 +; 384e0 + +Function384e0: ; 384e0 + ld a, [CurOTMon] + ld hl, OTPartyMon1Status + ld bc, $0030 + call AddNTimes + xor a + ld [hl], a + ld [EnemyMonStatus], a + ld hl, EnemySubStatus5 + res 0, [hl] + ret +; 384f7 + +Function384f7: ; 384f7 + call $439a + ld hl, EnemySubStatus4 + set 0, [hl] + ld a, $21 + jp $4568 +; 38504 + +Function38504: ; 38504 + call $439a + ld hl, EnemySubStatus4 + set 1, [hl] + ld a, $29 + jp $4568 +; 38511 + +Function38511: ; 38511 + call $439a + ld hl, EnemySubStatus4 + set 2, [hl] + ld a, $2c + jp $4568 +; 3851e + +Function3851e: ; 3851e + ld [hMultiplier], a + ld hl, EnemyMonMaxHPHi + ld a, [hli] + ld [hProduct], a + ld a, [hl] + ld [hMultiplicand], a + ld b, $2 + call Divide + ld a, [$ffb6] + ld c, a + ld a, [$ffb5] + ld b, a + ld hl, EnemyMonHPLo + ld a, [hld] + ld e, a + ld a, [hl] + ld d, a + ld a, d + sub b + ret nz + ld a, e + sub c + ret +; 38541 + +Function38541: ; 38541 + ld b, $0 + ld a, $31 + jr Function38557 +; 38547 + +Function38547: ; 38547 + ld b, $1 + ld a, $33 + jr Function38557 +; 3854d + +Function3854d: ; 3854d + ld b, $2 + ld a, $34 + jr Function38557 +; 38553 + +Function38553: ; 38553 + ld b, $3 + ld a, $35 + +Function38557 + ld [$d1f1], a + push bc + call $4571 + pop bc + callba Function0x361ef + jp $4387 +; 38568 + + +Function38568: ; 38568 + ld [$d1f1], a + call $4571 + jp $4387 +; 38571 + +Function38571: ; 38571 + ld a, [$d1f1] + ld [$d265], a + call GetItemName + ld hl, StringBuffer1 + ld de, $d050 + ld bc, $000d + call CopyBytes + ld hl, UnknownText_0x3858c + jp PrintText +; 3858c + +UnknownText_0x3858c: ; 3858c + text_jump UnknownText_0x1bcfaf, BANK(UnknownText_0x1bcfaf) + db "@" +; 38591 AIScoring: ; 38591 INCLUDE "battle/ai/scoring.asm" -INCBIN "baserom.gbc", $3952d, $39939 - $3952d +Function3952d: ; 3952d + ld hl, RivalName + ld a, c + cp $9 + jr z, .asm_39544 + ld [CurSpecies], a + ld a, $7 + ld [$cf61], a + call GetName + ld de, StringBuffer1 + ret + +.asm_39544 + ld de, StringBuffer1 + push de + ld bc, $000b + call CopyBytes + pop de + ret +; 39550 + +Function39550: ; 39550 + ld hl, $d26b + ld a, [InLinkBattle] + and a + jr nz, .asm_3956f + ld hl, RivalName + ld a, c + cp $9 + jr z, .asm_3956f + ld [CurSpecies], a + ld a, $7 + ld [$cf61], a + call GetName + ld hl, StringBuffer1 + +.asm_3956f + ld bc, $000d + ld de, $c656 + push de + call CopyBytes + pop de + ret +; 3957b + +Function3957b: ; 3957b + ld a, [TrainerClass] + ld c, a + call $5550 + ld a, [TrainerClass] + dec a + ld hl, $559c + ld bc, $0007 + call AddNTimes + ld de, $c650 + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + ld a, [hl] + ld [$c652], a + ret +; 3959c + + +INCBIN "baserom.gbc", $3959c, $39939 - $3959c Function39939: ; 39939 @@ -31434,7 +32300,14 @@ Function39939: ; 39939 ret ; 39990 -INCBIN "baserom.gbc", $39990, $39999 - $39990 +Function39990: ; 39990 + ld de, StringBuffer1 + push de + ld bc, $000b + pop de + ret +; 39999 + TrainerGroups: ; 0x39999 @@ -31445,7 +32318,122 @@ INCLUDE "trainers/trainers.asm" SECTION "bankF",DATA,BANK[$F] -INCBIN "baserom.gbc", $3c000, $3c0e5 - $3c000 +Function3c000: ; 3c000 + xor a + ld [$c664], a + ld [$c6fc], a + ld [$d0ec], a + ld [BattleEnded], a + inc a + ld [$d264], a + ld hl, OTPartyMon1CurHP + ld bc, $002f + ld d, $3 +.asm_3c019 + inc d + ld a, [hli] + or [hl] + jr nz, .asm_3c021 + add hl, bc + jr .asm_3c019 + +.asm_3c021 + ld a, d + ld [$d430], a + ld a, [InLinkBattle] + and a + jr z, .asm_3c031 + ld a, [$ffcb] + cp $2 +.data_3c02f + db $28 + db $1b + +.asm_3c031 + ld a, [IsInBattle] + dec a + jr z, .asm_3c047 + xor a + ld [$c718], a + call Function3d834 + call Function3d867 + call Function3dc18 + call Function3d4e1 + +.asm_3c047 + ld c, $28 + call DelayFrames + call Function309d + call $5873 + ld a, d + and a + jp z, LostBattle + call Function30b4 + ld a, [BattleType] + cp $2 + jp z, $40e2 + cp $3 + jp z, $40e2 + xor a + ld [CurPartyMon], a +.asm_3c06b + call Function3d887 + jr nz, .asm_3c076 + ld hl, CurPartyMon + inc [hl] + jr .asm_3c06b + +.asm_3c076 + ld a, [CurBattleMon] + ld [$c71a], a + ld a, [CurPartyMon] + ld [CurBattleMon], a + inc a + ld hl, PartyCount + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + ld [CurPartySpecies], a + ld [TempBattleMonSpecies], a + ld hl, $c505 + ld a, $9 + call Function3d490 + call Function309d + call Function3d57a + call Function3da0d + call Function3dab1 + call Function3f26d + call Function3dbde + call Function3dc18 + call Function3db5f + call Function3edd1 + call Function309d + call SetPlayerTurn + call Function3dc23 + ld a, [InLinkBattle] + and a + jr z, .asm_3c0df + ld a, [$ffcb] + cp $2 + jr nz, .asm_3c0df + xor a + ld [$c718], a + call Function3d834 + call Function3d867 + call Function3dc18 + call Function3d4e1 + call SetEnemyTurn + call Function3dc23 + +.asm_3c0df + jp $412f +; 3c0e2 + +Function3c0e2: ; 3c0e2 + jp $6139 +; 3c0e5 + Function3c0e5: ; 3c0e5 @@ -31484,180 +32472,2365 @@ Function3c0e5: ; 3c0e5 ld a, $1 ld [BattleEnded], a ret -; 3c12f +; 3c12f + +Function3c12f: ; 3c12f + call $41bf + call $43f5 + jp c, $41be + xor a + ld [$c710], a + ld [$c711], a + ld [$d264], a + ld [$c73f], a + ld [$c740], a + ld [CurDamage], a + ld [$d257], a + call $427c + call UpdateBattleMonInParty + callba AIChooseMove + call Function3d2f1 + jr nz, .asm_3c174 + callba Function100da5 + callba Function100641 + callba Function100dd8 + jp c, $41be + +.asm_3c174 + call $4410 + jr c, .asm_3c18a +.asm_3c179 + call $6139 + jr c, .asm_3c1be + ld a, [BattleEnded] + and a + jr nz, .asm_3c1be + ld a, [$d232] + and a + jr nz, .asm_3c1be + +.asm_3c18a + call $4434 + jr nz, .asm_3c179 + call $4300 + jr c, .asm_3c1be + call $4314 + jr c, .asm_3c19e + call $45fe + jr .asm_3c1a1 + +.asm_3c19e + call $4664 + +.asm_3c1a1 + call Function3d2e0 + jr c, .asm_3c1be + ld a, [$d232] + and a + jr nz, .asm_3c1be + ld a, [BattleEnded] + and a + jr nz, .asm_3c1be + call $41d6 + ld a, [BattleEnded] + and a + jr nz, .asm_3c1be + jp $412f + +.asm_3c1be + ret +; 3c1bf + +Function3c1bf: ; 3c1bf + ret +; 3c1c0 + +INCBIN "baserom.gbc", $3c1c0, $3c1d6 - $3c1c0 + + +Function3c1d6: ; 3c1d6 + ld a, [$ffcb] + cp $1 + jr z, .asm_3c1fe + call $423c + ret c + call $4a26 + call $423c + ret c + call $4b9e + call $423c + ret c + call $4874 + call $423c + ret c + call $4801 + call $423c + ret c + jr .asm_3c21e + +.asm_3c1fe + call $425c + ret c + call $4a26 + call $425c + ret c + call $4b9e + call $425c + ret c + call $4874 + call $425c + ret c + call $4801 + call $425c + ret c + +.asm_3c21e + call $48eb + call $493c + call $4a8f + call $4afb + call $4b36 + call $5e97 + call $5cf9 + call UpdateBattleMonInParty + call Function309d + jp $44df +; 3c23c + +Function3c23c: ; 3c23c + call $4710 + jr nz, .asm_3c24a + call $514e + ld a, [BattleEnded] + and a + jr nz, .asm_3c25a + +.asm_3c24a + call $470b + jr nz, .asm_3c258 + call $4d55 + ld a, [BattleEnded] + and a + jr nz, .asm_3c25a + +.asm_3c258 + and a + ret + +.asm_3c25a + scf + ret +; 3c25c + +Function3c25c: ; 3c25c + call $470b + jr nz, .asm_3c26a + call $4d55 + ld a, [BattleEnded] + and a + jr nz, .asm_3c27a + +.asm_3c26a + call $4710 + jr nz, .asm_3c278 + call $514e + ld a, [BattleEnded] + and a + jr nz, .asm_3c27a + +.asm_3c278 + and a + ret + +.asm_3c27a + scf + ret +; 3c27c + +Function3c27c: ; 3c27c + ld a, [$ffcb] + cp $1 + jr z, .asm_3c287 + call $428a + jr .asm_3c296 + +.asm_3c287 + call $4296 + call SetPlayerTurn + ld de, PartyMon1Item + ld a, [CurBattleMon] + ld b, a + jr .asm_3c2a0 + +.asm_3c296 + call SetEnemyTurn + ld de, OTPartyMon1Item + ld a, [CurOTMon] + ld b, a + +.asm_3c2a0 + push de + push bc + callab GetUserItem + ld a, [hl] + ld [$d265], a + sub $98 + pop bc + pop de + ret nz + ld [hl], a + ld h, d + ld l, e + ld a, b + call GetPartyLocation + xor a + ld [hl], a + ld a, $2 + call GetBattleVarPair + push af + set 7, [hl] + ld a, $c + call GetBattleVarPair + push hl + push af + xor a + ld [hl], a + ld [AttackMissed], a + ld [EffectFailed], a + callba BattleCommand77 + pop af + pop hl + ld [hl], a + call GetItemName + ld hl, $4bde + call FarBattleTextBox + callab BattleCommand8c + pop af + bit 7, a + ret nz + xor a + ld [$cfca], a + ld de, $0103 + call $6e0f + call $48e4 + ld hl, $4d97 + jp FarBattleTextBox +; 3c300 + +Function3c300: ; 3c300 + ld a, [InLinkBattle] + and a + jr z, .asm_3c30d + ld a, [$d430] + cp $f + jr z, .asm_3c30f + +.asm_3c30d + and a + ret + +.asm_3c30f + call Function3c0e5 + scf + ret +; 3c314 + +Function3c314: ; 3c314 + ld a, [InLinkBattle] + and a + jr z, .asm_3c35b + ld a, [$d430] + cp $e + jr z, .asm_3c35b + cp $d + jr z, .asm_3c35b + sub $4 + jr c, .asm_3c35b + ld a, [$d0ec] + cp $2 + jr nz, .asm_3c34c + ld a, [$ffcb] + cp $2 + jr z, .asm_3c341 + call FarBattleRNG + cp $80 + jp c, $43f1 + jp $43f3 + +.asm_3c341 + call FarBattleRNG + cp $80 + jp c, $43f3 + jp $43f1 + +.asm_3c34c + callab Function3846c + call SetEnemyTurn + call Function3dc23 + jp $43f3 + +.asm_3c35b + ld a, [$d0ec] + and a + jp nz, $43f1 + call $45b4 + jr z, .asm_3c36d + jp c, $43f1 + jp $43f3 + +.asm_3c36d + call SetPlayerTurn + callab GetUserItem + push bc + callab GetOpponentItem + pop de + ld a, d + cp $4a + jr nz, .asm_3c391 + ld a, b + cp $4a + jr z, .asm_3c39f + call FarBattleRNG + cp e + jr nc, .asm_3c3c5 + jp $43f1 + +.asm_3c391 + ld a, b + cp $4a + jr nz, .asm_3c3c5 + call FarBattleRNG + cp c + jr nc, .asm_3c3c5 + jp $43f3 + +.asm_3c39f + ld a, [$ffcb] + cp $2 + jr z, .asm_3c3b5 + call FarBattleRNG + cp c + jp c, $43f3 + call FarBattleRNG + cp e + jp c, $43f1 + jr .asm_3c3c5 + +.asm_3c3b5 + call FarBattleRNG + cp e + jp c, $43f1 + call FarBattleRNG + cp c + jp c, $43f3 + jr .asm_3c3c5 + +.asm_3c3c5 + ld de, BattleMonSpd + ld hl, EnemyMonSpd + ld c, $2 + call StringCmp + jr z, .asm_3c3d8 + jp nc, $43f1 + jp $43f3 + +.asm_3c3d8 + ld a, [$ffcb] + cp $2 + jr z, .asm_3c3e9 + call FarBattleRNG + cp $80 + jp c, $43f1 + jp $43f3 + +.asm_3c3e9 + call FarBattleRNG + cp $80 + jp c, $43f3 + scf + ret +; 3c3f3 + +Function3c3f3: ; 3c3f3 + and a + ret +; 3c3f5 + +Function3c3f5: ; 3c3f5 + ld a, [BattleType] + cp $6 + jr nz, .asm_3c40e + ld a, [$dc79] + and a + jr nz, .asm_3c40e + ld a, [$d0ee] + and $c0 + add $2 + ld [$d0ee], a + scf + ret + +.asm_3c40e + and a + ret +; 3c410 + +Function3c410: ; 3c410 + ld a, [PlayerSubStatus4] + and $20 + jp nz, $4432 + ld hl, EnemySubStatus3 + res 3, [hl] + ld hl, PlayerSubStatus3 + res 3, [hl] + ld a, [hl] + and $12 + jp nz, $4432 + ld hl, PlayerSubStatus1 + bit 6, [hl] + jp nz, $4432 + and a + ret +; 3c432 + +Function3c432: ; 3c432 + scf + ret +; 3c434 + +Function3c434: ; 3c434 + call $4410 + jp c, $44ba + ld hl, PlayerSubStatus5 + bit 4, [hl] + jr z, .asm_3c449 + ld a, [LastPlayerMove] + ld [CurPlayerMove], a + jr .asm_3c47c + +.asm_3c449 + ld a, [$d0ec] + cp $2 + jr z, .asm_3c4ce + and a + jr nz, .asm_3c4b5 + ld a, [PlayerSubStatus3] + and $1 + jr nz, .asm_3c4ba + xor a + ld [$d235], a + inc a + ld [FXAnimIDLo], a + call $64bc + push af + call Function30b4 + call UpdateBattleHuds + ld a, [CurPlayerMove] + cp $a5 + jr z, .asm_3c476 + call PlayClickSFX + +.asm_3c476 + ld a, $1 + ld [hBGMapMode], a + pop af + ret nz + +.asm_3c47c + call SetPlayerTurn + callab UpdateMoveData + xor a + ld [$c732], a + ld a, [PlayerMoveEffect] + cp $77 + jr z, .asm_3c494 + xor a + ld [PlayerFuryCutterCount], a + +.asm_3c494 + ld a, [PlayerMoveEffect] + cp $51 + jr z, .asm_3c4a4 + ld hl, PlayerSubStatus4 + res 6, [hl] + xor a + ld [$c72b], a + +.asm_3c4a4 + ld a, [PlayerMoveEffect] + cp $6f + jr z, .asm_3c4c9 + cp $74 + jr z, .asm_3c4c9 + xor a + ld [$c679], a + jr .asm_3c4c9 + +.asm_3c4b5 + ld hl, PlayerSubStatus3 + res 0, [hl] + +.asm_3c4ba + xor a + ld [PlayerFuryCutterCount], a + ld [$c679], a + ld [$c72b], a + ld hl, PlayerSubStatus4 + res 6, [hl] + +.asm_3c4c9 + call Function3e7c1 + xor a + ret + +.asm_3c4ce + xor a + ld [PlayerFuryCutterCount], a + ld [$c679], a + ld [$c72b], a + ld hl, PlayerSubStatus4 + res 6, [hl] + xor a + ret +; 3c4df + +Function3c4df: ; 3c4df + ld a, [$ffcb] + cp $1 + jr z, .asm_3c4ea + call $44ed + jr .asm_3c518 + +.asm_3c4ea + call $4518 + ld hl, PlayerSubStatus5 + bit 4, [hl] + ret z + ld a, [PlayerEncoreCount] + dec a + ld [PlayerEncoreCount], a + jr z, .asm_3c50a + ld hl, BattleMonPPMove1 + ld a, [CurMoveNum] + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + and $3f + ret nz + +.asm_3c50a + ld hl, PlayerSubStatus5 + res 4, [hl] + call SetEnemyTurn + ld hl, $4c8a + jp FarBattleTextBox + +.asm_3c518 + ld hl, EnemySubStatus5 + bit 4, [hl] + ret z + ld a, [EnemyEncoreCount] + dec a + ld [EnemyEncoreCount], a + jr z, .asm_3c535 + ld hl, EnemyMonPPMove1 + ld a, [CurEnemyMoveNum] + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + and $3f + ret nz + +.asm_3c535 + ld hl, EnemySubStatus5 + res 4, [hl] + call SetPlayerTurn + ld hl, $4c8a + jp FarBattleTextBox +; 3c543 + +Function3c543: ; 3c543 + ld a, [IsInBattle] + dec a + jr nz, .asm_3c596 + ld a, [PlayerSubStatus5] + bit 7, a + jr nz, .asm_3c596 + ld a, [$c731] + and a + jr nz, .asm_3c596 + ld a, [EnemyMonStatus] + and $27 + jr nz, .asm_3c596 + ld a, [TempEnemyMonSpecies] + ld de, $0001 + ld hl, $45b1 + call IsInArray + jr c, .asm_3c598 + call FarBattleRNG + ld b, a + cp $80 + jr nc, .asm_3c596 + push bc + ld a, [TempEnemyMonSpecies] + ld de, $0001 + ld hl, $45a8 + call IsInArray + pop bc + jr c, .asm_3c598 + ld a, b + cp $1a + jr nc, .asm_3c596 + ld a, [TempEnemyMonSpecies] + ld de, $0001 + ld hl, $459a + call IsInArray + jr c, .asm_3c598 + +.asm_3c596 + and a + ret + +.asm_3c598 + scf + ret +; 3c59a + +INCBIN "baserom.gbc", $3c59a, $3c5b4 - $3c59a + + +Function3c5b4: ; 3c5b4 + ld a, [CurPlayerMove] + call $45c5 + ld b, a + push bc + ld a, [CurEnemyMove] + call $45c5 + pop bc + cp b + ret +; 3c5c5 + +Function3c5c5: ; 3c5c5 + ld b, a + cp $e9 + ld a, $0 + ret z + call Function3c5ec + ld hl, $45df +.asm_3c5d1 + ld a, [hli] + cp b + jr z, .asm_3c5dd + inc hl + cp $ff + jr nz, .asm_3c5d1 + ld a, $1 + ret + +.asm_3c5dd + ld a, [hl] + ret +; 3c5df + +INCBIN "baserom.gbc", $3c5df, $3c5ec - $3c5df + + +Function3c5ec: ; 3c5ec + ld a, b + dec a + ld hl, $5afc + ld bc, $0007 + call AddNTimes + ld a, $10 + call GetFarByte + ld b, a + ret +; 3c5fe + +Function3c5fe: ; 3c5fe + call Function309d + call $4543 + jp c, Function3c0e5 + call SetEnemyTurn + ld a, $1 + ld [$c70f], a + callab Function38000 + jr c, .asm_3c62f + call $46de + call Function3d2e0 + ret c + ld a, [$d232] + and a + ret nz + call $4710 + jp z, $514e + call $470b + jp z, $4d55 + +.asm_3c62f + call SetEnemyTurn + call $4716 + jp z, $4d55 + call RefreshBattleHuds + call $46cf + call Function3d2e0 + ret c + ld a, [$d232] + and a + ret nz + call $470b + jp z, $4d55 + call $4710 + jp z, $514e + call SetPlayerTurn + call $4716 + jp z, $514e + call RefreshBattleHuds + xor a + ld [$d0ec], a + ret +; 3c664 + +Function3c664: ; 3c664 + xor a + ld [$c70f], a + call SetEnemyTurn + callab Function38000 + push af + call $46cf + pop bc + ld a, [$d232] + and a + ret nz + call Function3d2e0 + ret c + call $470b + jp z, $4d55 + call $4710 + jp z, $514e + push bc + call SetPlayerTurn + call $4716 + pop bc + jp z, $514e + push bc + call RefreshBattleHuds + pop af + jr c, .asm_3c6be + call Function309d + call $4543 + jp c, Function3c0e5 + call $46de + call Function3d2e0 + ret c + ld a, [$d232] + and a + ret nz + call $4710 + jp z, $514e + call $470b + jp z, $4d55 + +.asm_3c6be + call SetEnemyTurn + call $4716 + jp z, $4d55 + call RefreshBattleHuds + xor a + ld [$d0ec], a + ret +; 3c6cf + +Function3c6cf: ; 3c6cf + call SetPlayerTurn + call $46fe + callab DoPlayerTurn + jp $46ed +; 3c6de + +Function3c6de: ; 3c6de + call SetEnemyTurn + call $46fe + callab DoEnemyTurn + jp $46ed +; 3c6ed + +Function3c6ed: ; 3c6ed + ld a, $5 + call GetBattleVarPair + res 2, [hl] + res 5, [hl] + ld a, $9 + call GetBattleVarPair + res 6, [hl] + ret +; 3c6fe + +Function3c6fe: ; 3c6fe + ld a, $4 + call GetBattleVarPair + res 6, [hl] + ret +; 3c706 + +Function3c706: ; 3c706 + ld a, [hBattleTurn] + and a + jr z, .asm_3c710 + ld hl, EnemyMonHPHi + jr .asm_3c713 + +.asm_3c710 + ld hl, BattleMonHP + +.asm_3c713 + ld a, [hli] + or [hl] + ret +; 3c716 + +Function3c716: ; 3c716 + call $4706 + ret z + ld a, $a + call CleanGetBattleVarPair + and $18 + jr z, .asm_3c768 + ld hl, $47e2 + ld de, $0106 + and $10 + jr z, .asm_3c733 + ld hl, $47f8 + ld de, $0105 + +.asm_3c733 + push de + call FarBattleTextBox + pop de + xor a + ld [$cfca], a + call $6e0f + call GetEighthMaxHP + ld de, $c674 + ld a, [hBattleTurn] + and a + jr z, .asm_3c74d + ld de, $c67c + +.asm_3c74d + ld a, $4 + call CleanGetBattleVarPair + bit 0, a + jr z, .asm_3c765 + call $4c76 + ld a, [de] + inc a + ld [de], a + ld hl, $0000 +.asm_3c75f + add hl, bc + dec a + jr nz, .asm_3c75f + ld b, h + ld c, l + +.asm_3c765 + call $4c3f + +.asm_3c768 + call $4706 + jp z, $47f7 + ld a, $3 + call GetBattleVarPair + bit 7, [hl] + jr z, .asm_3c7a1 + call $48e4 + xor a + ld [$cfca], a + ld de, $0107 + ld a, $7 + call CleanGetBattleVarPair + and $60 + call z, $6e0f + call $48e4 + call GetEighthMaxHP + call $4c3f + ld a, $1 + ld [hBGMapMode], a + call $4cef + ld hl, $480e + call FarBattleTextBox + +.asm_3c7a1 + call $4706 + jr z, .asm_3c7f7 + ld a, $0 + call GetBattleVarPair + bit 0, [hl] + jr z, .asm_3c7c5 + xor a + ld [$cfca], a + ld de, $010c + call $6e0f + call GetQuarterMaxHP + call $4c3f + ld hl, $4822 + call FarBattleTextBox + +.asm_3c7c5 + call $4706 + jr z, .asm_3c7f7 + ld a, $0 + call GetBattleVarPair + bit 1, [hl] + jr z, .asm_3c7e9 + xor a + ld [$cfca], a + ld de, $010c + call $6e0f + call GetQuarterMaxHP + call $4c3f + ld hl, $4836 + call FarBattleTextBox + +.asm_3c7e9 + ld hl, BattleMonHP + ld a, [hBattleTurn] + and a + jr z, .asm_3c7f4 + ld hl, EnemyMonHPHi + +.asm_3c7f4 + ld a, [hli] + or [hl] + ret nz + +.asm_3c7f7 + call RefreshBattleHuds + ld c, $14 + call DelayFrames + xor a + ret +; 3c801 + +Function3c801: ; 3c801 + ld a, [$ffcb] + cp $1 + jr z, .asm_3c813 + call SetPlayerTurn + call $481c + call SetEnemyTurn + jp $481c + +.asm_3c813 + call SetEnemyTurn + call $481c + call SetPlayerTurn + ld hl, PlayerPerishCount + ld a, [hBattleTurn] + and a + jr z, .asm_3c827 + ld hl, EnemyPerishCount + +.asm_3c827 + ld a, $0 + call CleanGetBattleVarPair + bit 4, a + ret z + dec [hl] + ld a, [hl] + ld [$d265], a + push af + ld hl, $4864 + call FarBattleTextBox + pop af + ret nz + ld a, $0 + call GetBattleVarPair + res 4, [hl] + ld a, [hBattleTurn] + and a + jr nz, .asm_3c85c + ld hl, BattleMonHP + xor a + ld [hli], a + ld [hl], a + ld hl, PartyMon1CurHP + ld a, [CurBattleMon] + call GetPartyLocation + xor a + ld [hli], a + ld [hl], a + ret + +.asm_3c85c + ld hl, EnemyMonHPHi + xor a + ld [hli], a + ld [hl], a + ld a, [IsInBattle] + dec a + ret z + ld hl, OTPartyMon1CurHP + ld a, [CurOTMon] + call GetPartyLocation + xor a + ld [hli], a + ld [hl], a + ret +; 3c874 + +Function3c874: ; 3c874 + ld a, [$ffcb] + cp $1 + jr z, .asm_3c886 + call SetPlayerTurn + call $488f + call SetEnemyTurn + jp $488f + +.asm_3c886 + call SetEnemyTurn + call $488f + call SetPlayerTurn + ld hl, $c730 + ld de, $c72e + ld a, [hBattleTurn] + and a + jr z, .asm_3c8a0 + ld hl, $c731 + ld de, $c72f + +.asm_3c8a0 + ld a, [hl] + and a + ret z + ld a, $3 + call CleanGetBattleVarPair + bit 4, a + ret nz + ld a, [de] + ld [$d265], a + ld [FXAnimIDLo], a + call GetMoveName + dec [hl] + jr z, .asm_3c8de + ld a, $2 + call CleanGetBattleVarPair + and $60 + jr nz, .asm_3c8d3 + call $48e4 + xor a + ld [$cfca], a + ld [FXAnimIDHi], a + ld a, $37 + call Predef + call $48e4 + +.asm_3c8d3 + call $4c76 + call $4c3f + ld hl, $4de2 + jr .asm_3c8e1 + +.asm_3c8de + ld hl, $4df5 + +.asm_3c8e1 + jp FarBattleTextBox +; 3c8e4 + +Function3c8e4: ; 3c8e4 + ld a, [hBattleTurn] + xor $1 + ld [hBattleTurn], a + ret +; 3c8eb + +Function3c8eb: ; 3c8eb + ld a, [$ffcb] + cp $1 + jr z, .asm_3c8fd + call SetPlayerTurn + call $4906 + call SetEnemyTurn + jp $4906 + +.asm_3c8fd + call SetEnemyTurn + call $4906 + call SetPlayerTurn + callab GetUserItem + ld a, [hl] + ld [$d265], a + call GetItemName + ld a, b + cp $3 + ret nz + ld hl, BattleMonHP + ld a, [hBattleTurn] + and a + jr z, .asm_3c922 + ld hl, EnemyMonHPHi + +.asm_3c922 + ld a, [hli] + ld b, a + ld a, [hli] + ld c, a + ld a, [hli] + cp b + jr nz, .asm_3c92d + ld a, [hl] + cp c + ret z + +.asm_3c92d + call $4c76 + call $48e4 + call $4cef + ld hl, $4880 + jp FarBattleTextBox +; 3c93c + +Function3c93c: ; 3c93c + ld a, [$ffcb] + cp $1 + jr z, .asm_3c94e + call SetPlayerTurn + call $4957 + call SetEnemyTurn + jp $4957 + +.asm_3c94e + call SetEnemyTurn + call $4957 + call SetPlayerTurn + callab GetUserItem + ld a, b + cp $6 + jr nz, .asm_3c9ae + ld hl, PartyMon1PP + ld a, [CurBattleMon] + call GetPartyLocation + ld d, h + ld e, l + ld hl, PartyMon1Move1 + ld a, [CurBattleMon] + call GetPartyLocation + ld a, [hBattleTurn] + and a + jr z, .asm_3c99b + ld de, $c739 + ld hl, $c735 + ld a, [IsInBattle] + dec a + jr z, .asm_3c99b + ld hl, OTPartyMon1PPMove1 + ld a, [CurOTMon] + call GetPartyLocation + ld d, h + ld e, l + ld hl, OTPartyMon1Move1 + ld a, [CurOTMon] + call GetPartyLocation + +.asm_3c99b + ld c, $0 +.asm_3c99d + ld a, [hl] + and a + jr z, .asm_3c9ae + ld a, [de] + and $3f + jr z, .asm_3c9af + inc hl + inc de + inc c + ld a, c + cp $4 + jr nz, .asm_3c99d + +.asm_3c9ae + ret + +.asm_3c9af + ld a, [hl] + cp $a6 + ld b, $1 + jr z, .asm_3c9b8 + ld b, $5 + +.asm_3c9b8 + ld a, [de] + add b + ld [de], a + push bc + push bc + ld a, [hl] + ld [$d265], a + ld de, BattleMonItem + ld hl, BattleMonPPMove1 + ld a, [hBattleTurn] + and a + jr z, .asm_3c9d2 + ld de, EnemyMonItem + ld hl, EnemyMonPPMove1 + +.asm_3c9d2 + inc de + pop bc + ld b, $0 + add hl, bc + push hl + ld h, d + ld l, e + add hl, bc + pop de + pop bc + ld a, [$d265] + cp [hl] + jr nz, .asm_3c9f5 + ld a, [hBattleTurn] + and a + ld a, [PlayerSubStatus5] + jr z, .asm_3c9ee + ld a, [EnemySubStatus5] + +.asm_3c9ee + bit 3, a + jr nz, .asm_3c9f5 + ld a, [de] + add b + ld [de], a + +.asm_3c9f5 + callab GetUserItem + ld a, [hl] + ld [$d265], a + xor a + ld [hl], a + call $5f12 + ld a, [hBattleTurn] + and a + jr z, .asm_3ca12 + ld a, [IsInBattle] + dec a + jr z, .asm_3ca14 + call $5f1f + +.asm_3ca12 + xor a + ld [hl], a + +.asm_3ca14 + call GetItemName + call $48e4 + call $5dc8 + call $48e4 + ld hl, $4899 + jp FarBattleTextBox +; 3ca26 + +Function3ca26: ; 3ca26 + ld a, [$ffcb] + cp $1 + jr z, .asm_3ca38 + call SetPlayerTurn + call $4a41 + call SetEnemyTurn + jp $4a41 + +.asm_3ca38 + call SetEnemyTurn + call $4a41 + call SetPlayerTurn + ld hl, $c71d + ld a, [hBattleTurn] + and a + jr z, .asm_3ca4c + ld hl, $c71e + +.asm_3ca4c + ld a, [hl] + and a + ret z + dec a + ld [hl], a + cp $1 + ret nz + ld hl, $48b6 + call FarBattleTextBox + ld a, $10 + call GetBattleVarPair + push af + ld a, $f8 + ld [hl], a + callab UpdateMoveData + xor a + ld [AttackMissed], a + ld [AlreadyDisobeyed], a + ld a, $a + ld [TypeModifier], a + callab DoMove + xor a + ld [CurDamage], a + ld [$d257], a + ld a, $10 + call GetBattleVarPair + pop af + ld [hl], a + call UpdateBattleMonInParty + jp UpdateEnemyMonInParty +; 3ca8f + +Function3ca8f: ; 3ca8f + ld a, [$ffcb] + cp $1 + jr z, .asm_3ca9a + call $4a9d + jr .asm_3cac9 + +.asm_3ca9a + call $4ac9 + ld a, [BattleMonStatus] + bit 5, a + ret z + ld a, [$c73f] + and a + ret nz + call FarBattleRNG + cp $19 + ret nc + xor a + ld [BattleMonStatus], a + ld a, [CurBattleMon] + ld hl, PartyMon1Status + call GetPartyLocation + ld [hl], $0 + call UpdateBattleHuds + call SetEnemyTurn + ld hl, $524b + jp FarBattleTextBox + +.asm_3cac9 + ld a, [EnemyMonStatus] + bit 5, a + ret z + ld a, [$c740] + and a + ret nz + call FarBattleRNG + cp $19 + ret nc + xor a + ld [EnemyMonStatus], a + ld a, [IsInBattle] + dec a + jr z, .asm_3caef + ld a, [CurOTMon] + ld hl, OTPartyMon1Status + call GetPartyLocation + ld [hl], $0 + +.asm_3caef + call UpdateBattleHuds + call SetPlayerTurn + ld hl, $524b + jp FarBattleTextBox +; 3cafb + +Function3cafb: ; 3cafb + ld a, [$ffcb] + cp $1 + jr z, .asm_3cb06 + call $4b09 + jr .asm_3cb1c + +.asm_3cb06 + call $4b1c + ld a, [PlayerScreens] + bit 2, a + ret z + ld hl, $c701 + dec [hl] + ret nz + res 2, a + ld [PlayerScreens], a + xor a + jr .asm_3cb2e + +.asm_3cb1c + ld a, [EnemyScreens] + bit 2, a + ret z + ld hl, $c705 + dec [hl] + ret nz + res 2, a + ld [EnemyScreens], a + ld a, $1 + +.asm_3cb2e + ld [hBattleTurn], a + ld hl, $48d2 + jp FarBattleTextBox +; 3cb36 + +Function3cb36: ; 3cb36 + ld a, [$ffcb] + cp $1 + jr z, .asm_3cb41 + call $4b44 + jr .asm_3cb55 + +.asm_3cb41 + call $4b55 + call SetPlayerTurn + ld de, $4b75 + call $4b6f + ld hl, PlayerScreens + ld de, PlayerLightScreenCount + jr .asm_3cb64 + +.asm_3cb55 + call SetEnemyTurn + ld de, $4b7a + call $4b6f + ld hl, EnemyScreens + ld de, EnemyLightScreenCount + +.asm_3cb64 + bit 3, [hl] + call nz, $4b80 + bit 4, [hl] + call nz, $4b91 + ret +; 3cb6f + +Function3cb6f: ; 3cb6f + ld hl, StringBuffer1 + jp CopyName2 +; 3cb75 + +INCBIN "baserom.gbc", $3cb75, $3cb80 - $3cb75 + + +Function3cb80: ; 3cb80 + ld a, [de] + dec a + ld [de], a + ret nz + res 3, [hl] + push hl + push de + ld hl, $48e7 + call FarBattleTextBox + pop de + pop hl + ret +; 3cb91 + +Function3cb91: ; 3cb91 + inc de + ld a, [de] + dec a + ld [de], a + ret nz + res 4, [hl] + ld hl, $4905 + jp FarBattleTextBox +; 3cb9e + +Function3cb9e: ; 3cb9e + ld a, [Weather] + cp $0 + ret z + ld hl, WeatherCount + dec [hl] + jr z, .asm_3cc13 + ld hl, $4c2d + call $4c1e + ld a, [Weather] + cp $3 + ret nz + ld a, [$ffcb] + cp $1 + jr z, .asm_3cbc7 + call SetPlayerTurn + call $4bd0 + call SetEnemyTurn + jr .asm_3cbd0 + +.asm_3cbc7 + call SetEnemyTurn + call $4bd0 + call SetPlayerTurn + +.asm_3cbd0 + ld a, $2 + call CleanGetBattleVarPair + bit 5, a + ret nz + ld hl, BattleMonType1 + ld a, [hBattleTurn] + and a + jr z, .asm_3cbe3 + ld hl, EnemyMonType1 + +.asm_3cbe3 + ld a, [hli] + cp $5 + ret z + cp $4 + ret z + cp $9 + ret z + ld a, [hl] + cp $5 + ret z + cp $4 + ret z + cp $9 + ret z + call $48e4 + xor a + ld [$cfca], a + ld de, $010b + call Function3ee17 + call $48e4 + call GetEighthMaxHP + call $4c3f + ld hl, $484d + jp FarBattleTextBox + +.asm_3cc13 + ld hl, $4c33 + call $4c1e + xor a + ld [Weather], a + ret +; 3cc1e + +Function3cc1e: ; 3cc1e + ld a, [Weather] + dec a + ld c, a + ld b, $0 + add hl, bc + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + jp FarBattleTextBox +; 3cc2d + +INCBIN "baserom.gbc", $3cc2d, $3cc39 - $3cc2d + + +Function3cc39: ; 3cc39 + call $4c45 + jp $4d3c +; 3cc3f + +Function3cc3f: ; 3cc3f + call Function3cc45 + jp $4d36 +; 3cc45 + + + +Function3cc45: ; 3cc45 + ld hl, BattleMonHP + ld a, [hBattleTurn] + and a + jr z, .asm_3cc50 + ld hl, EnemyMonHPHi + +.asm_3cc50 + inc hl + ld a, [hl] + ld [$d1ec], a + sub c + ld [hld], a + ld [$d1ee], a + ld a, [hl] + ld [$d1ed], a + sbc b + ld [hl], a + ld [$d1ef], a + ret nc + ld a, [$d1ec] + ld c, a + ld a, [$d1ed] + ld b, a + xor a + ld [hli], a + ld [hl], a + ld [$d1ee], a + ld [$d1ef], a + ret +; 3cc76 + +Function3cc76: ; 3cc76 + call GetQuarterMaxHP + srl c + srl c + ld a, c + and a + jr nz, .asm_3cc82 + inc c + +.asm_3cc82 + ret +; 3cc83 + + +GetEighthMaxHP: ; 3cc83 +; output: bc + call GetQuarterMaxHP +; assumes nothing can have 1024 or more hp +; halve result + srl c +; round up + ld a, c + and a + jr nz, .end + inc c +.end + ret +; 3cc8e + + +GetQuarterMaxHP: ; 3cc8e +; output: bc + call GetMaxHP + +; quarter result + srl b + rr c + srl b + rr c + +; assumes nothing can have 1024 or more hp +; round up + ld a, c + and a + jr nz, .end + inc c +.end + ret +; 3cc9f + + +GetHalfMaxHP: ; 3cc9f +; output: bc + call GetMaxHP + +; halve reslut + srl b + rr c + +; floor = 1 + ld a, c + or b + jr nz, .end + inc c +.end + ret +; 3ccac + + +GetMaxHP: ; 3ccac +; output: bc, MagikarpLength-b + +; player + ld hl, BattleMonMaxHP + +; whose turn? + ld a, [hBattleTurn] + and a + jr z, .gethp + +; enemy + ld hl, EnemyMonMaxHP + +.gethp + ld a, [hli] + ld [Buffer2], a + ld b, a + + ld a, [hl] + ld [MagikarpLength], a + ld c, a + ret +; 3ccc2 + + +INCBIN "baserom.gbc", $3ccc2, $3ccef - $3ccc2 + + +Function3ccef: ; 3ccef + ld hl, EnemyMonMaxHPHi + ld a, [hBattleTurn] + and a + jr z, .asm_3ccfa + ld hl, BattleMonMaxHP + +.asm_3ccfa + ld a, [hli] + ld [Buffer2], a + ld a, [hld] + ld [MagikarpLength], a + dec hl + ld a, [hl] + ld [$d1ec], a + add c + ld [hld], a + ld [$d1ee], a + ld a, [hl] + ld [$d1ed], a + adc b + ld [hli], a + ld [$d1ef], a + ld a, [MagikarpLength] + ld c, a + ld a, [hld] + sub c + ld a, [Buffer2] + ld b, a + ld a, [hl] + sbc b + jr c, .asm_3cd2d + ld a, b + ld [hli], a + ld [$d1ef], a + ld a, c + ld [hl], a + ld [$d1ee], a + +.asm_3cd2d + call $48e4 + call $4d36 + jp $48e4 +; 3cd36 + +Function3cd36: ; 3cd36 + call Function3cd3c + jp UpdateBattleHuds +; 3cd3c + + + +Function3cd3c: ; 3cd3c + ld hl, $c55e + ld a, [hBattleTurn] + and a + ld a, $1 + jr z, .asm_3cd4a + ld hl, $c4ca + xor a + +.asm_3cd4a + push bc + ld [$d10a], a + ld a, $b + call Predef + pop bc + ret +; 3cd55 + +Function3cd55: ; 3cd55 + call $4f14 + ld hl, BattleMonHP + ld a, [hli] + or [hl] + call z, $4ef1 + xor a + ld [$c6f7], a + call $4e01 + call $5873 + ld a, d + and a + jp z, LostBattle + ld hl, BattleMonHP + ld a, [hli] + or [hl] + call nz, Function3df48 + ld a, $1 + ld [hBGMapMode], a + ld c, $3c + call DelayFrames + ld a, [IsInBattle] + dec a + jr nz, .asm_3cd8c + ld a, $1 + ld [BattleEnded], a + ret + +.asm_3cd8c + call $4f35 + jp z, $4fa4 + ld hl, BattleMonHP + ld a, [hli] + or [hl] + jr nz, .asm_3cdba + call $51f8 + jr nc, .asm_3cda4 + ld a, $1 + ld [BattleEnded], a + ret + +.asm_3cda4 + call $5227 + call Function3d2e0 + jp c, Function3c0e5 + ld a, $1 + ld [$d0ec], a + call $4f4a + jp z, Function3c0e5 + jr .asm_3cdca + +.asm_3cdba + ld a, $1 + ld [$d0ec], a + call $4f4a + jp z, Function3c0e5 + xor a + ld [$d0ec], a + ret + +.asm_3cdca + ld a, [$ffcb] + cp $1 + jr z, .asm_3cde6 + call ClearSprites + ld hl, $c4a1 + ld bc, $040a + call ClearBox + call $52b3 + ld a, $1 + call $4f78 + jr .asm_3cdfc + +.asm_3cde6 + ld a, [CurPartyMon] + push af + ld a, $1 + call $4f78 + call ClearSprites + call Function309d + pop af + ld [CurPartyMon], a + call $52b3 + +.asm_3cdfc + xor a + ld [$d0ec], a + ret +; 3ce01 + +Function3ce01: ; 3ce01 + call UpdateBattleMonInParty + ld a, [IsInBattle] + dec a + jr z, .asm_3ce16 + ld a, [CurOTMon] + ld hl, OTPartyMon1CurHP + call GetPartyLocation + xor a + ld [hli], a + ld [hl], a + +.asm_3ce16 + ld hl, PlayerSubStatus3 + res 2, [hl] + xor a + ld hl, EnemyDamageTaken + ld [hli], a + ld [hl], a + call Function3d834 + call Function3dc18 + ld a, [IsInBattle] + dec a + jr z, .asm_3ce2f + jr .asm_3ce37 + +.asm_3ce2f + call Function3ceec + ld a, $1 + ld [$c6fd], a + +.asm_3ce37 + ld hl, BattleMonHP + ld a, [hli] + or [hl] + jr nz, .asm_3ce47 + ld a, [$c6f7] + and a + jr nz, .asm_3ce47 + call $51aa + +.asm_3ce47 + call $5873 + ld a, d + and a + ret z + ld a, [IsInBattle] + dec a + call z, $50ea + call Function3edd1 + call Function309d + ld a, [$d0ee] + and $c0 + ld [$d0ee], a + call $4eaa + jr z, .asm_3ce72 + ld hl, EnemyMonBaseStats + ld b, $7 +.asm_3ce6c + srl [hl] + inc hl + dec b + jr nz, .asm_3ce6c + +.asm_3ce72 + ld hl, EnemyMonBaseStats + ld de, $c720 + ld bc, $0007 + call CopyBytes + xor a + ld [$c71f], a + call $6e3b + call $4eaa + ret z + ld a, [$c664] + push af + ld a, d + ld [$c664], a + ld hl, $c720 + ld de, EnemyMonBaseStats + ld bc, $0007 + call CopyBytes + ld a, $1 + ld [$c71f], a + call $6e3b + pop af + ld [$c664], a + ret +; 3ceaa + +Function3ceaa: ; 3ceaa + ld a, [PartyCount] + ld b, a + ld hl, PartyMon1Species + ld c, $1 + ld d, $0 +.asm_3ceb5 + push hl + push bc + ld bc, $0022 + add hl, bc + ld a, [hli] + or [hl] + pop bc + pop hl + jr z, .asm_3ced1 + push hl + push bc + ld bc, $0001 + add hl, bc + pop bc + ld a, [hl] + pop hl + cp $39 + jr nz, .asm_3ced1 + ld a, d + or c + ld d, a + +.asm_3ced1 + sla c + push de + ld de, $0030 + add hl, de + pop de + dec b + jr nz, .asm_3ceb5 + ld a, d + ld e, $0 + ld b, $6 +.asm_3cee1 + srl a + jr nc, .asm_3cee6 + inc e + +.asm_3cee6 + dec b + jr nz, .asm_3cee1 + ld a, e + and a + ret +; 3ceec + + + +Function3ceec: ; 3ceec + xor a + ld [Danger], a + ret +; 3cef1 + +Function3cef1: ; 3cef1 + call Function3ceec + call WaitSFX + ld a, $f0 + ld [CryTracks], a + ld a, [BattleMonSpecies] + call Function37b6 + call Function3d43b + ld hl, $c535 + ld bc, $050b + call ClearBox + ld hl, $4a75 + jp FarBattleTextBox +; 3cf14 + +Function3cf14: ; 3cf14 + call WaitSFX + ld de, $002f + call StartSFX + call Function3d432 + ld de, $002a + call StartSFX + ld hl, $c4a1 + ld bc, $040a + call ClearBox + ld hl, $49a8 + jp FarBattleTextBox +; 3cf35 + +Function3cf35: ; 3cf35 + ld a, [OTPartyCount] + ld b, a + xor a + ld hl, OTPartyMon1CurHP + ld de, $0030 +.asm_3cf40 + or [hl] + inc hl + or [hl] + dec hl + add hl, de + dec b + jr nz, .asm_3cf40 + and a + ret +; 3cf4a + +Function3cf4a: ; 3cf4a + ld hl, EnemyHPPal + ld e, $30 + call Function3e12e + call WaitBGMap + ld a, $b + ld hl, $4012 + rst FarCall + ld a, [InLinkBattle] + and a + jr z, .asm_3cf6d + call Function3e8e4 + ld a, [$d430] + cp $f + ret z + call Function30b4 + +.asm_3cf6d + ld hl, BattleMonHP + ld a, [hli] + or [hl] + ld a, $0 + jr nz, .asm_3cf78 + inc a + ret -INCBIN "baserom.gbc", $3c12f, $3c5ec - $3c12f +.asm_3cf78 + push af + xor a + ld [$c718], a + call Function3d834 + call Function3d867 + call Function3dc18 + pop af + and a + jr nz, .asm_3cf8f + call Function3d4e1 + jr .asm_3cf92 +.asm_3cf8f + call $5517 -Function3c5ec: ; 3c5ec - ld a, b - dec a - ld hl, $5afc - ld bc, $0007 - call AddNTimes - ld a, $10 - call GetFarByte - ld b, a +.asm_3cf92 + call Function3d57a + call SetEnemyTurn + call Function3dc23 + xor a + ld [EnemyMoveAnimation], a + ld [$d0ec], a + inc a ret -; 3c5fe - -INCBIN "baserom.gbc", $3c5fe, $3cc39 - $3c5fe +; 3cfa4 +Function3cfa4: ; 3cfa4 + call Function3ceec + ld a, $1 + ld [$c6fd], a + ld [BattleEnded], a + ld a, [InLinkBattle] + and a + ld a, b + call z, $50ea + callab Function39939 + ld hl, $49da + call FarBattleTextBox + call Function3d2f1 + jr z, .asm_3cff5 + ld a, [InLinkBattle] + and a + ret nz + ld a, [$cfc0] + bit 0, a + jr nz, .asm_3d006 + call $6bd8 + ld c, $28 + call DelayFrames + ld a, [BattleType] + cp $1 + jr nz, .asm_3cfe8 + ld a, $2 + call Predef -Function3cc39: ; 3cc39 - call $4c45 - jp $4d3c -; 3cc3f - -INCBIN "baserom.gbc", $3cc3f, $3cc45 - $3cc3f +.asm_3cfe8 + ld a, [$c2cc] + bit 0, a + jr nz, .asm_3cff2 + call $3718 +.asm_3cff2 + jp $502b -Function3cc45: ; 3cc45 - ld hl, BattleMonHP - ld a, [hBattleTurn] - and a - jr z, .asm_3cc50 - ld hl, EnemyMonHPHi +.asm_3cff5 + call $6bd8 + ld c, $28 + call DelayFrames + ld c, $4 + ld a, $13 + ld hl, $6a0a + rst FarCall + ret -.asm_3cc50 +.asm_3d006 + call $6bd8 + ld c, $28 + call DelayFrames + call Function3edd1 + ld c, $3 + ld a, $47 + ld hl, $4000 + rst FarCall + call Functiona80 + ld hl, $c6ec + ld a, [hli] + or [hl] inc hl - ld a, [hl] - ld [$d1ec], a - sub c - ld [hld], a - ld [$d1ee], a - ld a, [hl] - ld [$d1ed], a - sbc b - ld [hl], a - ld [$d1ef], a - ret nc - ld a, [$d1ec] - ld c, a - ld a, [$d1ed] - ld b, a - xor a - ld [hli], a - ld [hl], a - ld [$d1ee], a - ld [$d1ef], a + or [hl] + ret nz + call ClearTileMap + call WhiteBGMap ret -; 3cc76 +; 3d02b -INCBIN "baserom.gbc", $3cc76, $3cc83 - $3cc76 - -GetEighthMaxHP: ; 3cc83 -; output: bc - call GetQuarterMaxHP -; assumes nothing can have 1024 or more hp -; halve result - srl c -; round up - ld a, c +Function3d02b: ; 3d02b + ld a, [$c73d] and a - jr nz, .end - inc c -.end - ret -; 3cc8e - - -GetQuarterMaxHP: ; 3cc8e -; output: bc - call GetMaxHP + call nz, $5099 + call $50b1 + push af + ld a, $0 + jr nc, .asm_3d044 + ld a, [$d854] + and $7 + cp $3 + jr nz, .asm_3d044 + inc a -; quarter result - srl b - rr c - srl b - rr c +.asm_3d044 + ld b, a + ld c, $4 +.asm_3d047 + ld a, b + and a + jr z, .asm_3d052 + call $5081 + dec c + dec b + jr .asm_3d047 -; assumes nothing can have 1024 or more hp -; round up +.asm_3d052 ld a, c and a - jr nz, .end - inc c -.end - ret -; 3cc9f - + jr z, .asm_3d05c + call $508d + dec c + jr .asm_3d052 -GetHalfMaxHP: ; 3cc9f -; output: bc - call GetMaxHP +.asm_3d05c + call $5099 + call $5099 + pop af + jr nc, .asm_3d07b + ld a, [$d854] + and $7 + jr z, .asm_3d07b + ld hl, $50ab + dec a + ld c, a + ld b, $0 + add hl, bc + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + jp FarBattleTextBox -; halve reslut - srl b - rr c +.asm_3d07b + ld hl, $49be + jp FarBattleTextBox +; 3d081 -; floor = 1 - ld a, c - or b - jr nz, .end - inc c -.end +Function3d081: ; 3d081 + push bc + ld hl, $c688 + ld de, $d853 + call $50be + pop bc ret -; 3ccac - +; 3d08d -GetMaxHP: ; 3ccac -; output: bc, MagikarpLength-b - -; player - ld hl, BattleMonMaxHP +Function3d08d: ; 3d08d + push bc + ld hl, $c688 + ld de, $d850 + call $50be + pop bc + ret +; 3d099 -; whose turn? - ld a, [hBattleTurn] - and a - jr z, .gethp +Function3d099: ; 3d099 + ld hl, $c688 + sla [hl] + dec hl + rl [hl] + dec hl + rl [hl] + ret nc + ld a, $ff + ld [hli], a + ld [hli], a + ld [hl], a + ret +; 3d0ab -; enemy - ld hl, EnemyMonMaxHP +INCBIN "baserom.gbc", $3d0ab, $3d0b1 - $3d0ab -.gethp - ld a, [hli] - ld [Buffer2], a - ld b, a +Function3d0b1: ; 3d0b1 + ld hl, $d853 + ld a, [hld] + cp $3f + ld a, [hld] + sbc $42 ld a, [hl] - ld [MagikarpLength], a - ld c, a + sbc $f ret -; 3ccc2 - - -INCBIN "baserom.gbc", $3ccc2, $3cd3c - $3ccc2 - +; 3d0be -Function3cd3c: ; 3cd3c - ld hl, $c55e - ld a, [hBattleTurn] +Function3d0be: ; 3d0be + ld c, $3 and a - ld a, $1 - jr z, .asm_3cd4a - ld hl, $c4ca - xor a - -.asm_3cd4a + push de + push hl push bc - ld [$d10a], a - ld a, $b - call Predef + ld b, h + ld c, l + ld a, $41 + ld hl, $6008 + rst FarCall pop bc + pop hl +.asm_3d0ce + ld a, [de] + adc [hl] + ld [de], a + dec de + dec hl + dec c + jr nz, .asm_3d0ce + pop hl + ld a, [hld] + cp $3f + ld a, [hld] + sbc $42 + ld a, [hl] + sbc $f + ret c + ld [hl], $f + inc hl + ld [hl], $42 + inc hl + ld [hl], $3f ret -; 3cd55 +; 3d0ea + +Function3d0ea: ; 3d0ea + push de + ld de, $0000 + call StartMusic + call DelayFrame + ld de, $0018 + ld a, [IsInBattle] + dec a + jr nz, .asm_3d113 + push de + call $4eaa + pop de + jr nz, .asm_3d11e + ld hl, $c6ec + ld a, [hli] + or [hl] + jr nz, .asm_3d11e + ld a, [$c664] + and a + jr z, .asm_3d121 + jr .asm_3d11e -INCBIN "baserom.gbc", $3cd55, $3ceec - $3cd55 +.asm_3d113 + ld de, $0019 + call IsJohtoGymLeader + jr c, .asm_3d11e + ld de, $0017 +.asm_3d11e + call StartMusic -Function3ceec: ; 3ceec - xor a - ld [Danger], a +.asm_3d121 + pop de ret -; 3cef1 +; 3d123 -INCBIN "baserom.gbc", $3cef1, $3d123 - $3cef1 ; These functions check if the current opponent is a gym leader or one of a @@ -31714,7 +34887,203 @@ KantoGymLeaders: db $ff -INCBIN "baserom.gbc", $3d14e, $3d2e0 - $3d14e +Function3d14e: ; 3d14e + call $4ef1 + ld hl, EnemyMonHPHi + ld a, [hli] + or [hl] + call z, $4f14 + ld a, $1 + ld [$c6f7], a + call $51aa + call $5873 + ld a, d + and a + jp z, LostBattle + ld hl, EnemyMonHPHi + ld a, [hli] + or [hl] + jr nz, .asm_3d185 + call $4e01 + ld a, [IsInBattle] + dec a + jr nz, .asm_3d17f + ld a, $1 + ld [BattleEnded], a + ret + +.asm_3d17f + call $4f35 + jp z, $4fa4 + +.asm_3d185 + call $51f8 + jr nc, .asm_3d190 + ld a, $1 + ld [BattleEnded], a + ret + +.asm_3d190 + call $5227 + call Function3d2e0 + jp c, Function3c0e5 + ld a, c + and a + ret nz + ld a, $1 + ld [$d0ec], a + call $4f4a + jp z, Function3c0e5 + jp $4dca +; 3d1aa + +Function3d1aa: ; 3d1aa + ld a, [CurBattleMon] + ld c, a + ld hl, $c664 + ld b, $0 + ld a, $3 + call Predef + ld hl, EnemySubStatus3 + res 2, [hl] + xor a + ld [Danger], a + ld hl, PlayerDamageTaken + ld [hli], a + ld [hl], a + ld [BattleMonStatus], a + call UpdateBattleMonInParty + ld c, $6 + ld a, [BattleMonLevel] + add $1e + ld b, a + ld a, [EnemyMonLevel] + cp b + jr c, .asm_3d1dc + ld c, $8 + +.asm_3d1dc + ld a, [CurBattleMon] + ld [CurPartyMon], a + callab Function71c2 + ld a, [$d0ee] + and $c0 + add $1 + ld [$d0ee], a + ld a, [$c6f7] + and a + ret z + ret +; 3d1f8 + +Function3d1f8: ; 3d1f8 + call Function3edd1 + call Function309d + ld a, [IsInBattle] + and a + dec a + ret nz + ld hl, $4a83 + call FarBattleTextBox +.asm_3d20a + ld bc, $0107 + call $1dd2 + ld a, [$cfa9] + jr c, .asm_3d217 + and a + ret + +.asm_3d217 + ld a, [$cfa9] + cp $1 + jr z, .asm_3d20a + ld hl, PartyMon1Spd + ld de, EnemyMonSpd + jp $58b3 +; 3d227 + +Function3d227: ; 3d227 + call Function3edd1 + call Function1d6e + call Function3d2f7 + call $5362 + ld a, [InLinkBattle] + and a + jr z, .asm_3d241 + ld a, $1 + ld [$d0ec], a + call Function3e8e4 + +.asm_3d241 + xor a + ld [$d0ec], a + call Function3d2e0 + jr c, .asm_3d251 + ld hl, EnemyMonHPHi + ld a, [hli] + or [hl] + jr nz, .asm_3d26c + +.asm_3d251 + call ClearSprites + call WhiteBGMap + call Function3eda6 + call Function1c07 + call Function309d + call WaitBGMap + call ClearSGB + call Function32f9 + xor a + ld c, a + ret + +.asm_3d26c + call ClearSprites + ld a, [CurBattleMon] + ld [$c71a], a + ld a, [CurPartyMon] + ld [CurBattleMon], a + call $5581 + call Function3da0d + call Function3dab1 + call ClearPalettes + call DelayFrame + call Function3eda6 + call Function1c17 + call ClearSGB + call Function32f9 + call Function3f26d + call Function3dbde + call Function3dc18 + call Function3db5f + call Function3edd1 + call Function309d + call SetPlayerTurn + call Function3dc23 + ld a, $1 + and a + ld c, a + ret +; 3d2b3 + +Function3d2b3: ; 3d2b3 + ld a, [CurBattleMon] + ld [$c71a], a + ld a, [CurPartyMon] + ld [CurBattleMon], a + call $5581 + call Function3da0d + call Function3dab1 + call Function3f26d + call Function3dbde + call Function3dc18 + call Function3db5f + call Function3edd1 + call Function309d + call SetPlayerTurn + jp Function3dc23 +; 3d2e0 + Function3d2e0: ; 3d2e0 @@ -31799,7 +35168,18 @@ Function3d34f: ; 3d34f ret ; 3d362 -INCBIN "baserom.gbc", $3d362, $3d375 - $3d362 +Function3d362: ; 3d362 +.asm_3d362 + call Function3d33c + ret nc + call Function3d2e0 + ret c + ld de, $0019 + call StartSFX + call WaitSFX + jr .asm_3d362 +; 3d375 + Function3d375: ; 3d375 @@ -32535,7 +35915,23 @@ Function3d867: ; 3d867 ret ; 3d873 -INCBIN "baserom.gbc", $3d873, $3d887 - $3d873 +Function3d873: ; 3d873 + ld a, [PartyCount] + ld e, a + xor a + ld hl, PartyMon1CurHP + ld bc, $002f +.asm_3d87e + or [hl] + inc hl + or [hl] + add hl, bc + dec e + jr nz, .asm_3d87e + ld d, a + ret +; 3d887 + Function3d887: ; 3d887 @@ -32567,7 +35963,184 @@ Function3d887: ; 3d887 ret ; 3d8b3 -INCBIN "baserom.gbc", $3d8b3, $3da0d - $3d8b3 +Function3d8b3: ; 3d8b3 + ld a, [BattleType] + cp $2 + jp z, $59a2 + cp $6 + jp z, $59a2 + cp $9 + jp z, $598d + cp $b + jp z, $598d + cp $7 + jp z, $598d + cp $c + jp z, $598d + ld a, [InLinkBattle] + and a + jp nz, $59a2 + ld a, [IsInBattle] + dec a + jp nz, $5992 + ld a, [EnemySubStatus5] + bit 7, a + jp nz, $598d + ld a, [$c730] + and a + jp nz, $598d + push hl + push de + ld a, [BattleMonItem] + ld [$d265], a + ld b, a + callab GetItem + ld a, b + cp $48 + pop de + pop hl + jr nz, .asm_3d916 + call SetPlayerTurn + call GetItemName + ld hl, $4b89 + call FarBattleTextBox + jp $59a2 + +.asm_3d916 + ld a, [$d267] + inc a + ld [$d267], a + ld a, [hli] + ld [$ffb5], a + ld a, [hl] + ld [$ffb6], a + ld a, [de] + inc de + ld [$ffb1], a + ld a, [de] + ld [$ffb2], a + call Function30b4 + ld de, $ffb5 + ld hl, $ffb1 + ld c, $2 + call StringCmp + jr nc, .asm_3d9a2 + xor a + ld [hMultiplicand], a + ld a, $20 + ld [hMultiplier], a + call Multiply + ld a, [$ffb5] + ld [hProduct], a + ld a, [$ffb6] + ld [hMultiplicand], a + ld a, [$ffb1] + ld b, a + ld a, [$ffb2] + srl b + rr a + srl b + rr a + and a + jr z, .asm_3d9a2 + ld [hMultiplier], a + ld b, $2 + call Divide + ld a, [$ffb5] + and a + jr nz, .asm_3d9a2 + ld a, [$d267] + ld c, a +.asm_3d96c + dec c + jr z, .asm_3d97a + ld b, $1e + ld a, [$ffb6] + add b + ld [$ffb6], a + jr c, .asm_3d9a2 + jr .asm_3d96c + +.asm_3d97a + call FarBattleRNG + ld b, a + ld a, [$ffb6] + cp b + jr nc, .asm_3d9a2 + ld a, $1 + ld [$d0ec], a + ld hl, $4b3b + jr .asm_3d995 + + ld hl, $4ba0 + jr .asm_3d995 + + ld hl, $4b49 + +.asm_3d995 + call FarBattleTextBox + ld a, $1 + ld [$d266], a + call Function309d + and a + ret + +.asm_3d9a2 + ld a, [InLinkBattle] + and a + ld a, $2 + jr z, .asm_3d9cf + call Function309d + xor a + ld [$d0ec], a + ld a, $f + ld [CurMoveNum], a + xor a + ld [CurPlayerMove], a + call Function3e8e4 + call Function30b4 + call Function3d2e0 + jr c, .asm_3d9f5 + ld a, [$d430] + cp $f + ld a, $2 + jr z, .asm_3d9cf + dec a + +.asm_3d9cf + ld b, a + ld a, [$d0ee] + and $c0 + add b + ld [$d0ee], a + call Function3ceec + push de + ld de, $002b + call WaitPlaySFX + pop de + call WaitSFX + ld hl, $4b77 + call FarBattleTextBox + call WaitSFX + call Function309d + scf + ret + +.asm_3d9f5 + call Function3ceec + ld hl, $cd2a + bit 4, [hl] + jr nz, .asm_3da05 + ld hl, $5863 + call FarBattleTextBox + +.asm_3da05 + call WaitSFX + call Function309d + scf + ret +; 3da0d + Function3da0d: ; 3da0d @@ -32934,13 +36507,261 @@ Function3dce6: ; 3dce6 ret ; 3dcf9 -INCBIN "baserom.gbc", $3dcf9, $3ddc2 - $3dcf9 +Function3dcf9: ; 3dcf9 + ld a, [$ffcb] + cp $1 + jr z, .asm_3dd17 + call SetPlayerTurn + call $5d2f + call $5de9 + call $5e51 + call SetEnemyTurn + call $5d2f + call $5de9 + jp $5e51 + +.asm_3dd17 + call SetEnemyTurn + call $5d2f + call $5de9 + call $5e51 + call SetPlayerTurn + call $5d2f + call $5de9 + jp $5e51 +; 3dd2f + +INCBIN "baserom.gbc", $3dd2f, $3ddc2 - $3dd2f ld hl, RecoveredUsingText jp FarBattleTextBox ; 0x3ddc8 -INCBIN "baserom.gbc", $3ddc8, $3df48 - $3ddc8 +Function3ddc8: ; 3ddc8 + push hl + push de + push bc + call Function3edd1 + ld a, $69 + ld [FXAnimIDLo], a + call $48e4 + xor a + ld [$cfca], a + ld [FXAnimIDHi], a + ld a, $37 + call Predef + call $48e4 + pop bc + pop de + pop hl + ret +; 3dde9 + +Function3dde9: ; 3dde9 + callab GetOpponentItem + ld hl, $5e44 +.asm_3ddf2 + ld a, [hli] + cp $ff + ret z + inc hl + cp b + jr nz, .asm_3ddf2 + dec hl + ld b, [hl] + ld a, $b + call GetBattleVarPair + and b + ret z + xor a + ld [hl], a + push bc + call UpdateOpponentInParty + pop bc + ld a, $9 + call GetBattleVarPair + and [hl] + res 0, [hl] + ld a, $5 + call GetBattleVarPair + and [hl] + res 0, [hl] + ld a, b + cp $7f + jr nz, .asm_3de26 + ld a, $7 + call GetBattleVarPair + res 7, [hl] + +.asm_3de26 + ld hl, $65fd + ld a, [hBattleTurn] + and a + jr z, .asm_3de31 + ld hl, $65d7 + +.asm_3de31 + call $48e4 + ld a, $d + rst FarCall + call $48e4 + call $5dc8 + call $5dac + ld a, $1 + and a + ret +; 3de44 + +INCBIN "baserom.gbc", $3de44, $3de51 - $3de44 + + +Function3de51: ; 3de51 + ld a, $7 + call CleanGetBattleVarPair + bit 7, a + ret z + callab GetOpponentItem + ld a, b + cp $10 + jr z, .asm_3de67 + cp $f + ret nz + +.asm_3de67 + ld a, [hl] + ld [$d265], a + ld a, $7 + call GetBattleVarPair + res 7, [hl] + call GetItemName + call $5dc8 + ld hl, $4dab + call FarBattleTextBox + ld a, [hBattleTurn] + and a + jr nz, .asm_3de90 + call $5f1f + xor a + ld [bc], a + ld a, [IsInBattle] + dec a + ret z + ld [hl], $0 + ret + +.asm_3de90 + call $5f12 + xor a + ld [bc], a + ld [hl], a + ret +; 3de97 + +Function3de97: ; 3de97 + ld a, [$ffcb] + cp $1 + jr z, .asm_3dea3 + call $5ea9 + jp $5eb1 + +.asm_3dea3 + call $5eb1 + jp $5ea9 +; 3dea9 + +Function3dea9: ; 3dea9 + call $5f12 + ld a, $0 + jp $5eb6 +; 3deb1 + +Function3deb1: ; 3deb1 + call $5f1f + ld a, $1 + ld [hBattleTurn], a + ld d, h + ld e, l + push de + push bc + ld a, [bc] + ld b, a + callab GetItem + ld hl, $5efc +.asm_3dec7 + ld a, [hli] + cp $ff + jr z, .asm_3def9 + inc hl + inc hl + cp b + jr nz, .asm_3dec7 + pop bc + ld a, [bc] + ld [$d265], a + push bc + dec hl + dec hl + ld a, [hli] + ld h, [hl] + ld l, a + ld a, $d + rst FarCall + pop bc + pop de + ld a, [FailedMessage] + and a + ret nz + xor a + ld [bc], a + ld [de], a + call GetItemName + ld hl, $4bde + call FarBattleTextBox + callab BattleCommand8c + ret + +.asm_3def9 + pop bc + pop de + ret +; 3defc + +INCBIN "baserom.gbc", $3defc, $3df12 - $3defc + + +Function3df12: ; 3df12 + ld hl, PartyMon1Item + ld a, [CurBattleMon] + call GetPartyLocation + ld bc, BattleMonItem + ret +; 3df1f + +Function3df1f: ; 3df1f + ld hl, OTPartyMon1Item + ld a, [CurOTMon] + call GetPartyLocation + ld bc, EnemyMonItem + ret +; 3df2c + +Function3df2c: ; 3df2c + push hl + push de + push bc + call Function3df58 + ld hl, PlayerHPPal + call SetHPPal + call Function3df9e + call Function3e043 + ld hl, EnemyHPPal + call SetHPPal + pop bc + pop de + pop hl + ret +; 3df48 + Function3df48: ; 3df48 @@ -33238,7 +37059,293 @@ Function3e138: ; 3e138 ret ; 3e139 -INCBIN "baserom.gbc", $3e139, $3e3ad - $3e139 +Function3e139: ; 3e139 + xor a + ld [hBGMapMode], a + call Function30bf + ld a, [BattleType] + cp $2 + jr z, .asm_3e156 + cp $3 + jr z, .asm_3e156 + call Function3edd1 + call UpdateBattleHuds + call Function3edd1 + call Function309d + +.asm_3e156 + ld a, [BattleType] + cp $6 + jr nz, .asm_3e165 + ld a, $9 + ld hl, $4f13 + rst FarCall + jr .asm_3e175 + +.asm_3e165 + ld a, [InputType] + or a + jr z, .asm_3e171 + ld a, $77 + ld hl, $6294 + rst FarCall + +.asm_3e171 + call $619b + ret c + +.asm_3e175 + ld a, $1 + ld [hBGMapMode], a + ld a, [$d0d2] + cp $1 + jp z, $6192 + cp $3 + jp z, $61c7 + cp $2 + jp z, $628d + cp $4 + jp z, $6489 + jr .asm_3e156 +; 3e192 + +Function3e192: ; 3e192 + xor a + ld [$d267], a + call Function30b4 + and a + ret +; 3e19b + +Function3e19b: ; 3e19b + call Function3d2f1 + jr z, .asm_3e1a8 + callba Function24ef2 + and a + ret + +.asm_3e1a8 + ld a, $40 + ld hl, $4b12 + rst FarCall + ld a, [$cd2b] + and a + ret z + ld hl, $cd2a + bit 4, [hl] + jr nz, .asm_3e1c5 + ld hl, $5863 + call FarBattleTextBox + ld c, $3c + call DelayFrames + +.asm_3e1c5 + scf + ret +; 3e1c7 + +Function3e1c7: ; 3e1c7 + ld a, [InLinkBattle] + and a + jp nz, $622b + ld a, [$cfc0] + and a + jp nz, $622b + call Function1d6e + ld a, [BattleType] + cp $3 + jr z, .asm_3e1f1 + cp $6 + jr z, .asm_3e201 + ld a, $4 + ld hl, $4493 + rst FarCall + ld a, [$d0ec] + and a + jr z, .asm_3e20d + jr .asm_3e209 + +.asm_3e1f1 + ld a, $4 + ld hl, $47bb + rst FarCall + ld a, $5 + ld [CurItem], a + call DoItemEffect + jr .asm_3e209 + +.asm_3e201 + ld a, $b1 + ld [CurItem], a + call DoItemEffect + +.asm_3e209 + call $6234 + ret + +.asm_3e20d + call ClearPalettes + call DelayFrame + call Function3ed9f + call Function3f43d + call Function3f47c + call Function1c07 + call WaitBGMap + call Function3ee27 + call Function309d + jp $6139 +; 3e22b + +Function3e22b: ; 3e22b + ld hl, $4bf3 + call FarBattleTextBox + jp $6139 +; 3e234 + +Function3e234: ; 3e234 + ld a, [$c64e] + and a + jr nz, .asm_3e279 + callab CheckItemPocket + ld a, [$d142] + cp $3 + jr z, .asm_3e24a + call WhiteBGMap + +.asm_3e24a + xor a + ld [hBGMapMode], a + call Function3ed9f + call ClearSprites + ld a, [BattleType] + cp $3 + jr z, .asm_3e25d + call Function3f43d + +.asm_3e25d + call Function3f47c + ld a, $1 + ld [$cfa9], a + call Function1c07 + call $5f2c + call WaitBGMap + call Function309d + call Function1fbf + call Function3ee27 + and a + ret + +.asm_3e279 + xor a + ld [$c64e], a + ld a, [$d0ee] + and $c0 + ld [$d0ee], a + call Function1fbf + call Function32f9 + scf + ret +; 3e28d + +Function3e28d: ; 3e28d + call Function1d6e + call Function1c07 + call Function1d6e + call WhiteBGMap +.asm_3e299 + call $52fa + xor a + ld [PartyMenuActionText], a + call Function3d313 + call Function3d329 + jr c, .asm_3e2da +.asm_3e2a8 + ld a, $23 + ld hl, $6a4a + rst FarCall + call $62f5 + jr c, .asm_3e2c8 + call Function1bee + ld a, [$cfa9] + cp $1 + jp z, $6358 + cp $2 + jr z, .asm_3e2cf + cp $3 + jr z, .asm_3e2da + jr .asm_3e2a8 + +.asm_3e2c8 + call Function3d2e0 + jr c, .asm_3e2da + jr .asm_3e299 + +.asm_3e2cf + call $6308 + call Function3d2e0 + jr c, .asm_3e2da + jp $6290 + +.asm_3e2da + call ClearSprites + call ClearPalettes + call DelayFrame + call Function3eda6 + call Function1c17 + call Function309d + call ClearSGB + call Function32f9 + jp $6139 +; 3e2f5 + +Function3e2f5: ; 3e2f5 + call Function3d2f1 + jr z, .asm_3e301 + ld a, $9 + ld hl, $4e99 + rst FarCall + ret + +.asm_3e301 + ld a, $40 + ld hl, $4d22 + rst FarCall + ret +; 3e308 + +Function3e308: ; 3e308 + call DisableLCD + ld hl, $9310 + ld de, VTiles0 + ld bc, $0110 + call CopyBytes + ld hl, VTiles2 + ld de, $8110 + ld bc, $0310 + call CopyBytes + call EnableLCD + call ClearSprites + call LowVolume + xor a + ld [MonType], a + ld a, $13 + ld hl, $5c7b + rst FarCall + call MaxVolume + call DisableLCD + ld hl, VTiles0 + ld de, $9310 + ld bc, $0110 + call CopyBytes + ld hl, $8110 + ld de, VTiles2 + ld bc, $0310 + call CopyBytes + call EnableLCD + ret +; 3e358 + +INCBIN "baserom.gbc", $3e358, $3e3ad - $3e358 Function3e3ad: ; 3e3ad @@ -33330,7 +37437,25 @@ Function3e40b: ; 3e40b ret ; 3e459 -INCBIN "baserom.gbc", $3e459, $3e4a8 - $3e459 +INCBIN "baserom.gbc", $3e459, $3e489 - $3e459 + + +Function3e489: ; 3e489 + call Function30b4 + ld a, $3 + ld [$cfa9], a + ld hl, BattleMonSpd + ld de, EnemyMonSpd + call $58b3 + ld a, $0 + ld [$d266], a + ret c + ld a, [$d0ec] + and a + ret nz + jp $6139 +; 3e4a8 + Function3e4a8: ; 3e4a8 @@ -33345,7 +37470,451 @@ Function3e4a8: ; 3e4a8 ret ; 3e4bc -INCBIN "baserom.gbc", $3e4bc, $3e7c1 - $3e4bc +Function3e4bc: ; 3e4bc + call Function3d2f1 + jr nz, .asm_3e4c8 + ld a, $40 + ld hl, $4b9f + rst FarCall + ret + +.asm_3e4c8 + ld hl, EnemyMonMove1 + ld a, [$d235] + dec a + jr z, .asm_3e4e2 + dec a + jr z, .asm_3e4dd + call $6786 + ret z + ld hl, BattleMonMove1 + jr .asm_3e4e2 + +.asm_3e4dd + ld a, $2 + call GetPartyParamLocation + +.asm_3e4e2 + ld de, $d25e + ld bc, $0004 + call CopyBytes + xor a + ld [hBGMapMode], a + ld hl, $c594 + ld b, $4 + ld c, $e + ld a, [$d235] + cp $2 + jr nz, .asm_3e503 + ld hl, $c544 + ld b, $4 + ld c, $e + +.asm_3e503 + call TextBox + ld hl, $c5aa + ld a, [$d235] + cp $2 + jr nz, .asm_3e513 + ld hl, $c55a + +.asm_3e513 + ld a, $14 + ld [MagikarpLength], a + ld a, $20 + call Predef + ld b, $5 + ld a, [$d235] + cp $2 + ld a, $d + jr nz, .asm_3e52c + ld b, $5 + ld a, $9 + +.asm_3e52c + ld [$cfa1], a + ld a, b + ld [$cfa2], a + ld a, [$d235] + cp $1 + jr z, .asm_3e53e + ld a, [CurMoveNum] + inc a + +.asm_3e53e + ld [$cfa9], a + ld a, $1 + ld [$cfaa], a + ld a, [$d0eb] + inc a + ld [$cfa3], a + ld a, $1 + ld [$cfa4], a + ld c, $2c + ld a, [$d235] + dec a + ld b, $c1 + jr z, .asm_3e569 + dec a + ld b, $c3 + jr z, .asm_3e569 + ld a, [InLinkBattle] + and a + jr nz, .asm_3e569 + ld b, $c7 + +.asm_3e569 + ld a, b + ld [$cfa8], a + ld a, c + ld [$cfa5], a + xor a + ld [$cfa6], a + ld a, $10 + ld [$cfa7], a + ld a, [$d235] + and a + jr z, .asm_3e58e + dec a + jr nz, .asm_3e5a3 + ld hl, $c5c3 + ld de, $661c + call PlaceString + jr .asm_3e5a3 + +.asm_3e58e + call $66c8 + ld a, [$d0e3] + and a + jr z, .asm_3e5a3 + ld hl, $c5a9 + ld bc, $0014 + dec a + call AddNTimes + ld [hl], $ec + +.asm_3e5a3 + ld a, $1 + ld [hBGMapMode], a + call Function1bd3 + bit 6, a + jp nz, $661d + bit 7, a + jp nz, $662e + bit 2, a + jp nz, $6643 + bit 1, a + push af + xor a + ld [$d0e3], a + ld a, [$cfa9] + dec a + ld [$cfa9], a + ld b, a + ld a, [$d235] + dec a + jr nz, .asm_3e5d0 + pop af + ret + +.asm_3e5d0 + dec a + ld a, b + ld [CurMoveNum], a + jr nz, .asm_3e5d9 + pop af + ret + +.asm_3e5d9 + pop af + ret nz + ld hl, BattleMonPPMove1 + ld a, [$cfa9] + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + and $3f + jr z, .asm_3e610 + ld a, [PlayerDisableCount] + swap a + and $f + dec a + cp c + jr z, .asm_3e60b + ld a, [$c6e1] + and a + jr nz, .asm_3e606 + ld a, [$cfa9] + ld hl, BattleMonMove1 + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + +.asm_3e606 + ld [CurPlayerMove], a + xor a + ret + +.asm_3e60b + ld hl, $4c5b + jr .asm_3e613 + +.asm_3e610 + ld hl, Function3cc39 + +.asm_3e613 + call FarBattleTextBox + call Function30b4 + jp $64bc +; 3e61c + +INCBIN "baserom.gbc", $3e61c, $3e61d - $3e61c + + +Function3e61d: ; 3e61d + ld a, [$cfa9] + and a + jp nz, $657a + ld a, [$d0eb] + inc a + ld [$cfa9], a + jp $657a +; 3e62e + +Function3e62e: ; 3e62e + ld a, [$cfa9] + ld b, a + ld a, [$d0eb] + inc a + inc a + cp b + jp nz, $657a + ld a, $1 + ld [$cfa9], a + jp $657a +; 3e643 + +Function3e643: ; 3e643 + ld a, [$d0e3] + and a + jr z, .asm_3e6bf + ld hl, BattleMonMove1 + call $66a5 + ld hl, BattleMonPPMove1 + call $66a5 + ld hl, PlayerDisableCount + ld a, [hl] + swap a + and $f + ld b, a + ld a, [$cfa9] + cp b + jr nz, .asm_3e671 + ld a, [hl] + and $f + ld b, a + ld a, [$d0e3] + swap a + add b + ld [hl], a + jr .asm_3e682 + +.asm_3e671 + ld a, [$d0e3] + cp b + jr nz, .asm_3e682 + ld a, [hl] + and $f + ld b, a + ld a, [$cfa9] + swap a + add b + ld [hl], a + +.asm_3e682 + ld a, [PlayerSubStatus5] + bit 3, a + jr nz, .asm_3e69e + ld hl, PartyMon1Move1 + ld a, [CurBattleMon] + call GetPartyLocation + push hl + call $66a5 + pop hl + ld bc, $0015 + add hl, bc + call $66a5 + +.asm_3e69e + xor a + ld [$d0e3], a + jp $64bc + + push hl + ld a, [$d0e3] + dec a + ld c, a + ld b, $0 + add hl, bc + ld d, h + ld e, l + pop hl + ld a, [$cfa9] + dec a + ld c, a + ld b, $0 + add hl, bc + ld a, [de] + ld b, [hl] + ld [hl], a + ld a, b + ld [de], a + ret + +.asm_3e6bf + ld a, [$cfa9] + ld [$d0e3], a + jp $64bc +; 3e6c8 + +Function3e6c8: ; 3e6c8 + xor a + ld [hBGMapMode], a + ld hl, $c540 + ld b, $3 + ld c, $9 + call TextBox + call MobileTextBorder + ld a, [PlayerDisableCount] + and a + jr z, .asm_3e6f4 + swap a + and $f + ld b, a + ld a, [$cfa9] + cp b + jr nz, .asm_3e6f4 + ld hl, $c569 + ld de, $674f + call PlaceString + jr .asm_3e74e + +.asm_3e6f4 + ld hl, $cfa9 + dec [hl] + call SetPlayerTurn + ld hl, BattleMonMove1 + ld a, [$cfa9] + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + ld [CurPlayerMove], a + ld a, [CurBattleMon] + ld [CurPartyMon], a + ld a, $4 + ld [MonType], a + callab Functionf8ec + ld hl, $cfa9 + ld c, [hl] + inc [hl] + ld b, $0 + ld hl, BattleMonPPMove1 + add hl, bc + ld a, [hl] + and $3f + ld [StringBuffer1], a + call $675f + ld hl, $c555 + ld de, $6759 + call PlaceString + ld hl, $c583 + ld [hl], $f3 + callab UpdateMoveData + ld a, [PlayerMoveAnimation] + ld b, a + ld hl, $c56a + ld a, $2a + call Predef + +.asm_3e74e + ret +; 3e74f + +INCBIN "baserom.gbc", $3e74f, $3e75f - $3e74f + + +Function3e75f: ; 3e75f + ld hl, $c581 + ld a, [InLinkBattle] + cp $4 + jr c, .asm_3e76c + ld hl, $c581 + +.asm_3e76c + push hl + ld de, StringBuffer1 + ld bc, $0102 + call Function3198 + pop hl + inc hl + inc hl + ld [hl], $f3 + inc hl + ld de, $d265 + ld bc, $0102 + call Function3198 + ret +; 3e786 + +Function3e786: ; 3e786 + ld a, $a5 + ld [CurPlayerMove], a + ld a, [PlayerDisableCount] + and a + ld hl, BattleMonPPMove1 + jr nz, .asm_3e79f + ld a, [hli] + or [hl] + inc hl + or [hl] + inc hl + or [hl] + and $3f + ret nz + jr .asm_3e7b4 + +.asm_3e79f + swap a + and $f + ld b, a + ld d, $5 + xor a +.asm_3e7a7 + dec d + jr z, .asm_3e7b2 + ld c, [hl] + inc hl + dec b + jr z, .asm_3e7a7 + or c + jr .asm_3e7a7 + +.asm_3e7b2 + and a + ret nz + +.asm_3e7b4 + ld hl, $4c72 + call FarBattleTextBox + ld c, $3c + call DelayFrames + xor a + ret +; 3e7c1 + Function3e7c1: ; 3e7c1 @@ -34139,7 +38708,69 @@ CheckUnownLetter: ; 3eb75 ; 3ebc7 -INCBIN "baserom.gbc", $3ebc7, $3ec30 - $3ebc7 +INCBIN "baserom.gbc", $3ebc7, $3ebd8 - $3ebc7 + + +Function3ebd8: ; 3ebd8 + xor a + ld [TempEnemyMonSpecies], a + call Function3ee27 + ld a, [OtherTrainerClass] + ld [TrainerClass], a + ld de, VTiles2 + ld hl, $520d + ld a, $14 + rst FarCall + ld hl, $c4b3 + ld c, $0 +.asm_3ebf3 + inc c + ld a, c + cp $7 + ret z + xor a + ld [hBGMapMode], a + ld [hBGMapThird], a + ld d, $0 + push bc + push hl +.asm_3ec01 + call $6c1a + inc hl + ld a, $7 + add d + ld d, a + dec c + jr nz, .asm_3ec01 + ld a, $1 + ld [hBGMapMode], a + ld c, $4 + call DelayFrames + pop hl + pop bc + dec hl + jr .asm_3ebf3 +; 3ec1a + +Function3ec1a: ; 3ec1a + push hl + push de + push bc + ld e, $7 +.asm_3ec1f + ld [hl], d + ld bc, $0014 + add hl, bc + inc d + dec e + jr nz, .asm_3ec1f + pop bc + pop de + pop hl + ret +; 3ec2c + +INCBIN "baserom.gbc", $3ec2c, $3ec30 - $3ec2c Function3ec30: ; 3ec30 @@ -34237,7 +38868,99 @@ Function3ec76: ; 3ec76 ret ; 3ecab -INCBIN "baserom.gbc", $3ecab, $3ed4a - $3ecab +Function3ecab: ; 3ecab + ld c, $0 +.asm_3ecad + call $6cb7 + inc c + ld a, c + cp $5 + jr nz, .asm_3ecad + ret +; 3ecb7 + +Function3ecb7: ; 3ecb7 + push bc + push bc + ld a, [$d265] + and a + ld a, c + ld hl, BattleMonAtk + ld de, PlayerStats + ld bc, PlayerAtkLevel + jr z, .asm_3ecd2 + ld hl, EnemyMonAtk + ld de, EnemyStats + ld bc, EnemyAtkLevel + +.asm_3ecd2 + add c + ld c, a + jr nc, .asm_3ecd7 + inc b + +.asm_3ecd7 + ld a, [bc] + pop bc + ld b, a + push bc + sla c + ld b, $0 + add hl, bc + ld a, c + add e + ld e, a + jr nc, .asm_3ece6 + inc d + +.asm_3ece6 + pop bc + push hl + ld hl, $6d2b + dec b + sla b + ld c, b + ld b, $0 + add hl, bc + xor a + ld [hMultiplicand], a + ld a, [de] + ld [$ffb5], a + inc de + ld a, [de] + ld [$ffb6], a + ld a, [hli] + ld [hMultiplier], a + call Multiply + ld a, [hl] + ld [hMultiplier], a + ld b, $4 + call Divide + pop hl + ld a, [$ffb6] + sub $e7 + ld a, [$ffb5] + sbc $3 + jp c, $6d1e + ld a, $3 + ld [$ffb5], a + ld a, $e7 + ld [$ffb6], a + ld a, [$ffb5] + ld [hli], a + ld b, a + ld a, [$ffb6] + ld [hl], a + or b + jr nz, .asm_3ed29 + inc [hl] + +.asm_3ed29 + pop bc + ret +; 3ed2b + +INCBIN "baserom.gbc", $3ed2b, $3ed4a - $3ed2b BadgeStatBoosts: ; 3ed4a @@ -34452,7 +39175,271 @@ Function3ee27: ; 3ee27 ret ; 3ee3b -INCBIN "baserom.gbc", $3ee3b, $3f26d - $3ee3b +INCBIN "baserom.gbc", $3ee3b, $3f0b9 - $3ee3b + + +Function3f0b9: ; 3f0b9 + ld a, [PartyCount] + ld b, a + ld a, [CurPartyMon] + inc a + cp b + jr z, .asm_3f0d1 + ld [CurPartyMon], a + ld a, $0 + call GetPartyParamLocation + ld b, h + ld c, l + jp $6e50 + +.asm_3f0d1 + jp Function3d57a +; 3f0d4 + +Function3f0d4: ; 3f0d4 + ld a, [$c664] + ld b, a + ld c, $6 + ld d, $0 +.asm_3f0dc + xor a + srl b + adc d + ld d, a + dec c + jr nz, .asm_3f0dc + cp $2 + ret c + ld [$d265], a + ld hl, EnemyMonBaseStats + ld c, $7 +.asm_3f0ef + xor a + ld [hProduct], a + ld a, [hl] + ld [hMultiplicand], a + ld a, [$d265] + ld [hMultiplier], a + ld b, $2 + call Divide + ld a, [$ffb6] + ld [hli], a + dec c + jr nz, .asm_3f0ef + ret +; 3f106 + +Function3f106: ; 3f106 + push bc + ld a, [$ffb5] + ld b, a + ld a, [$ffb6] + ld c, a + srl b + rr c + add c + ld [$ffb6], a + ld a, [$ffb5] + adc b + ld [$ffb5], a + pop bc + ret +; 3f11b + +INCBIN "baserom.gbc", $3f11b, $3f136 - $3f11b + + +Function3f136: ; 3f136 + push bc + ld hl, CurPartyMon + ld a, [CurBattleMon] + cp [hl] + jp nz, $7219 + ld a, [BattleMonLevel] + cp $64 + jp nc, $7219 + ld a, [$ffb6] + ld [$d004], a + push af + ld a, [$ffb5] + ld [$d003], a + push af + xor a + ld [DefaultFlypoint], a + xor a + ld [MonType], a + ld a, $1f + call Predef + ld a, [TempMonLevel] + ld b, a + ld e, a + push de + ld de, $d118 + call Function3f39c + push bc + ld hl, $d118 + ld a, [$d004] + add [hl] + ld [hld], a + ld a, [$d003] + adc [hl] + ld [hld], a + jr nc, .asm_3f186 + inc [hl] + jr nz, .asm_3f186 + ld a, $ff + ld [hli], a + ld [hli], a + ld [hl], a + +.asm_3f186 + ld d, $64 + callab Function50e47 + ld a, [hMultiplicand] + ld b, a + ld a, [$ffb5] + ld c, a + ld a, [$ffb6] + ld d, a + ld hl, $d118 + ld a, [hld] + sub d + ld a, [hld] + sbc c + ld a, [hl] + sbc b + jr c, .asm_3f1a8 + ld a, b + ld [hli], a + ld a, c + ld [hli], a + ld a, d + ld [hld], a + +.asm_3f1a8 + ld hl, $4e1b + ld a, $14 + rst FarCall + ld a, d + pop bc + pop de + ld d, a + cp e + jr nc, .asm_3f1b7 + ld a, e + ld d, a + +.asm_3f1b7 + ld a, e + cp $64 + jr nc, .asm_3f1ff + cp d + jr z, .asm_3f1ff + inc a + ld [TempMonLevel], a + ld [CurPartyLevel], a + ld [BattleMonLevel], a + push de + call $721b + ld c, $40 + call $722c + call Function3dfbf + ld hl, BattleMonNick + ld de, StringBuffer1 + ld bc, $000b + call CopyBytes + call $3dfe + ld de, $00b6 + call StartSFX + ld a, $23 + ld hl, $679d + rst FarCall + call WaitSFX + ld hl, $4c9c + call FarBattleTextBox + pop de + inc e + ld b, $0 + jr .asm_3f1b7 + +.asm_3f1ff + push bc + ld b, d + ld de, $d118 + call Function3f39c + ld a, b + pop bc + ld c, a + call $721b + call $722c + call $3dfe + pop af + ld [$ffb5], a + pop af + ld [$ffb6], a + pop bc + ret +; 3f21b + +Function3f21b: ; 3f21b + push bc + call WaitSFX + ld de, $008c + call StartSFX + ld c, $a + call DelayFrames + pop bc + ret +; 3f22c + +Function3f22c: ; 3f22c + ld d, $3 + dec b +.asm_3f22f + inc b + push bc + push de + ld hl, $c58d + call Function3f41c + pop de + ld a, $1 + ld [hBGMapMode], a + ld c, d + call DelayFrames + xor a + ld [hBGMapMode], a + pop bc + ld a, c + cp b + jr z, .asm_3f268 + inc b + push bc + push de + ld hl, $c58d + call Function3f41c + pop de + ld a, $1 + ld [hBGMapMode], a + ld c, d + call DelayFrames + xor a + ld [hBGMapMode], a + dec d + jr nz, .asm_3f263 + ld d, $1 + +.asm_3f263 + pop bc + ld a, c + cp b + jr nz, .asm_3f22f + +.asm_3f268 + ld a, $1 + ld [hBGMapMode], a + ret +; 3f26d + Function3f26d: ; 3f26d @@ -39317,7 +44304,39 @@ Function4e906: ; 4e906 ret ; 4e929 -INCBIN "baserom.gbc", $4e929, $4ea44 - $4e929 +INCBIN "baserom.gbc", $4e929, $4ea0a - $4e929 + + +Function4ea0a: ; 4ea0a + ld a, c + push af + call SpeechTextBox + call MobileTextBorder + pop af + dec a + ld bc, $000c + ld hl, $dc1a + call AddNTimes + ld de, $cd53 + ld bc, $000c + ld a, $5 + call Function306b + ld a, [rSVBK] + push af + ld a, $1 + ld [rSVBK], a + ld bc, $cd53 + ld de, $c5b9 + ld a, $47 + ld hl, $40c6 + rst FarCall + pop af + ld [rSVBK], a + ld c, $b4 + call DelayFrames + ret +; 4ea44 + Function4ea44: ; 4ea44 @@ -40201,7 +45220,161 @@ YouHaveNoPKMNString: ; 0x50556 db "You have no ", $e1, $e2, "!@" -INCBIN "baserom.gbc", $50566, $5093a - $50566 +Function50566: ; 50566 + ld a, [CurPartyMon] + ld hl, PartyMon1Nickname + call GetNick + ld a, [PartyMenuActionText] + and $f + ld hl, $457b + call $45c1 + ret +; 5057b + +INCBIN "baserom.gbc", $5057b, $505c1 - $5057b + + +Function505c1: ; 505c1 + ld e, a + ld d, $0 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [Options] + push af + set 4, a + ld [Options], a + call PrintText + pop af + ld [Options], a + ret +; 505da + +INCBIN "baserom.gbc", $505da, $50730 - $505da + + +Function50730: ; 50730 + ld hl, $473c + call $31cd + ld a, $1 + ld [$d0ec], a + ret +; 5073c + +INCBIN "baserom.gbc", $5073c, $50779 - $5073c + + +Function50779: ; 50779 + ld a, [MapGroup] + cp $3 + jr nz, .asm_507a9 + ld a, [MapNumber] + cp $13 + jr nz, .asm_507a9 + ld a, [PlayerDirection] + and $c + cp $4 + jr nz, .asm_507a9 + call GetFacingTileCoord + ld a, d + cp $12 + jr nz, .asm_507a9 + ld a, e + cp $6 + jr nz, .asm_507a9 + ld hl, $47af + call $31cd + ld a, $1 + ld [$d0ec], a + ret + +.asm_507a9 + ld a, $0 + ld [$d0ec], a + ret +; 507af + +INCBIN "baserom.gbc", $507af, $507b4 - $507af + + +Function507b4: ; 507b4 + ld a, [MapGroup] + cp $3 + jr nz, .asm_507db + ld a, [MapNumber] + cp $35 + jr nz, .asm_507db + call GetFacingTileCoord + ld a, d + cp $16 + jr nz, .asm_507db + ld a, e + cp $a + jr nz, .asm_507db + ld hl, $47e1 + call $31cd + ld a, $1 + ld [$d0ec], a + ret + +.asm_507db + ld a, $0 + ld [$d0ec], a + ret +; 507e1 + +INCBIN "baserom.gbc", $507e1, $507e6 - $507e1 + + +Function507e6: ; 507e6 + ld a, $0 + ld [$d0ec], a + call $47fb + ret nc + ld hl, $4821 + call $31cd + ld a, $1 + ld [$d0ec], a + ret +; 507fb + +Function507fb: ; 507fb + ld de, $0030 + ld bc, PartySpecies + ld hl, PartyMon1CurHP + ld a, [PartyCount] + and a + ret z +.asm_50809 + push af + push hl + ld a, [bc] + inc bc + cp $fd + jr z, .asm_50815 + ld a, [hli] + or [hl] + jr z, .asm_5081d + +.asm_50815 + pop hl + add hl, de + pop af + dec a + jr nz, .asm_50809 + xor a + ret + +.asm_5081d + pop hl + pop af + scf + ret +; 50821 + +INCBIN "baserom.gbc", $50821, $5093a - $50821 PrintMoveType: ; 5093a @@ -40516,7 +45689,42 @@ Function50d0a: ; 50d0a ret ; 50d5b -INCBIN "baserom.gbc", $50d5b, $50e47 - $50d5b +INCBIN "baserom.gbc", $50d5b, $50e1b - $50d5b + + +Function50e1b: ; 50e1b + ld a, [TempMonSpecies] + ld [CurSpecies], a + call GetBaseData + ld d, $1 +.asm_50e26 + inc d + ld a, d + cp $65 + jr z, .asm_50e45 + call Function50e47 + push hl + ld hl, $d118 + ld a, [$ffb6] + ld c, a + ld a, [hld] + sub c + ld a, [$ffb5] + ld c, a + ld a, [hld] + sbc c + ld a, [hMultiplicand] + ld c, a + ld a, [hl] + sbc c + pop hl + jr nc, .asm_50e26 + +.asm_50e45 + dec d + ret +; 50e47 + Function50e47: ; 50e47 @@ -40636,7 +45844,69 @@ Function50eed: ; 50eed jp Multiply ; 50efa -INCBIN "baserom.gbc", $50efa, $5125d - $50efa +INCBIN "baserom.gbc", $50efa, $511c5 - $50efa + + +Function511c5: ; 511c5 + push hl + push bc + sub $12 + ld c, a + ld b, $0 + ld hl, $51d4 + add hl, bc + ld a, [hl] + pop bc + pop hl + ret +; 511d4 + +INCBIN "baserom.gbc", $511d4, $5120d - $511d4 + + +Function5120d: ; 5120d + ld a, [TrainerClass] + and a + ret z + cp $44 + ret nc + call WaitBGMap + xor a + ld [hBGMapMode], a + ld hl, $4000 + ld a, [TrainerClass] + dec a + ld bc, $0003 + call AddNTimes + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + push de + ld a, $4a + call GetFarByte + call $51c5 + push af + inc hl + ld a, $4a + call GetFarHalfword + pop af + ld de, $d000 + call FarDecompress + pop hl + ld de, $d000 + ld c, $31 + ld a, [hROMBank] + ld b, a + call Functionf82 + pop af + ld [rSVBK], a + call WaitBGMap + ld a, $1 + ld [hBGMapMode], a + ret +; 5125d + DecompressPredef: ; 5125d @@ -43931,7 +49201,116 @@ Function8d24b: ; 8d24b jp [hl] ; 8d25b -INCBIN "baserom.gbc", $8d25b, $8e814 - $8d25b +INCBIN "baserom.gbc", $8d25b, $8e72a - $8d25b + + +Function8e72a: ; 8e72a + add $10 + and $3f + cp $20 + jr nc, .asm_8e737 + call $6741 + ld a, h + ret + +.asm_8e737 + and $1f + call $6741 + ld a, h + xor $ff + inc a + ret +; 8e741 + +Function8e741: ; 8e741 + ld e, a + ld a, d + ld d, $0 + ld hl, $675d + add hl, de + add hl, de + ld e, [hl] + inc hl + ld d, [hl] + ld hl, $0000 +.asm_8e750 + srl a + jr nc, .asm_8e755 + add hl, de + +.asm_8e755 + sla e + rl d + and a + jr nz, .asm_8e750 + ret +; 8e75d + +INCBIN "baserom.gbc", $8e75d, $8e79d - $8e75d + + +Function8e79d: ; 8e79d + ld a, [hSGB] + ld de, $67f4 + and a + jr z, .asm_8e7a8 + ld de, $6804 + +.asm_8e7a8 + ld hl, VTiles0 + ld bc, $2301 + call Functioneba + ld c, $8 + ld d, $0 +.asm_8e7b5 + push bc + call $67c6 + call DelayFrame + pop bc + inc d + inc d + 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 $672c + pop hl + pop de + add $68 + ld [hli], a + pop af + push de + push hl + call $672a + 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 + +INCBIN "baserom.gbc", $8e7f4, $8e814 - $8e7f4 Function8e814: ; 8e814 @@ -44055,7 +49434,41 @@ GetGFXUnlessMobile: ; 8ea3f jp Functiondc9 ; 8ea4a -INCBIN "baserom.gbc", $8ea4a, $8eab3 - $8ea4a +Function8ea4a: ; 8ea4a + ld hl, $c314 + ld e, $6 + ld a, [$cfa9] + ld d, a +.asm_8ea53 + ld a, [hl] + and a + jr z, .asm_8ea69 + cp d + jr z, .asm_8ea5e + ld a, $0 + jr .asm_8ea60 + +.asm_8ea5e + ld a, $2 + +.asm_8ea60 + push hl + ld c, l + ld b, h + ld hl, $0002 + add hl, bc + ld [hl], a + pop hl + +.asm_8ea69 + ld bc, $0010 + add hl, bc + dec e + jr nz, .asm_8ea53 + ret +; 8ea71 + +INCBIN "baserom.gbc", $8ea71, $8eab3 - $8ea71 ReadMonMenuIcon: ; 8eab3 cp EGG @@ -44624,7 +50037,24 @@ PokegearSpritesGFX: ; 914dd INCBIN "gfx/misc/pokegear_sprites.lz" ; 91508 -INCBIN "baserom.gbc", $91508, $91bb5 - $91508 +INCBIN "baserom.gbc", $91508, $91ae1 - $91508 + + +Function91ae1: ; 91ae1 + ld a, e + and a + jr nz, .asm_91aec + call $5ff2 + call FillJohtoMap + ret + +.asm_91aec + call $5ff2 + call FillKantoMap + ret +; 91af3 + +INCBIN "baserom.gbc", $91af3, $91bb5 - $91af3 TownMapBubble: ; 91bb5 ; Draw the bubble containing the location text in the town map HUD @@ -45064,7 +50494,14 @@ TownMapPlayerIcon: ; 91fa6 ret ; 0x91ff2 -INCBIN "baserom.gbc", $91ff2, $91fff - $91ff2 +Function91ff2: ; 91ff2 + ld hl, $4ba0 + ld de, VTiles2 + ld bc, $3e30 + call Functione73 + ret +; 91fff + JohtoMap: INCBIN "baserom.gbc", $91fff, $92168 - $91fff @@ -48585,7 +54022,80 @@ Functionb8164: ; b8164 ret ; b8172 -INCBIN "baserom.gbc", $b8172, $b8219 - $b8172 +Functionb8172: ; b8172 + call GetMapEventBank + ld [MagikarpLength], a + ld a, [XCoord] + add $5 + ld [$d1ed], a + ld a, [YCoord] + add $4 + ld [$d1ec], a + ld hl, $dc02 + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [$dc01] + and a + jr z, .asm_b81dd +.asm_b8194 + ld [Buffer2], a + push hl + call $41e2 + ld e, a + ld a, [$d1ec] + sub e + jr c, .asm_b81d2 + cp $9 + jr nc, .asm_b81d2 + call $41e2 + ld d, a + ld a, [$d1ed] + sub d + jr c, .asm_b81d2 + cp $a + jr nc, .asm_b81d2 + call $41e2 + cp $7 + jr nz, .asm_b81d2 + ld a, [MagikarpLength] + call GetFarHalfword + ld a, [MagikarpLength] + call GetFarHalfword + ld d, h + ld e, l + ld b, $2 + call BitTable1Func + ld a, c + and a + jr z, .asm_b81df + +.asm_b81d2 + pop hl + ld bc, $0005 + add hl, bc + ld a, [Buffer2] + dec a + jr nz, .asm_b8194 + +.asm_b81dd + xor a + ret + +.asm_b81df + pop hl + scf + ret +; b81e2 + +Functionb81e2: ; b81e2 + ld a, [MagikarpLength] + call GetFarByte + inc hl + ret +; b81ea + +INCBIN "baserom.gbc", $b81ea, $b8219 - $b81ea Functionb8219: ; b8219 ; deals strictly with rockmon encounter @@ -49185,179 +54695,981 @@ ElmPhoneScript1: ; 0xbd00d 3writetext BANK(ElmPhoneStartText), ElmPhoneStartText end -.sawmrpokemon ; 0xbd048 - 3writetext BANK(ElmPhoneSawMrPokemonText), ElmPhoneSawMrPokemonText - end +.sawmrpokemon ; 0xbd048 + 3writetext BANK(ElmPhoneSawMrPokemonText), ElmPhoneSawMrPokemonText + end + +.stolen ; 0xbd04d + 3writetext BANK(ElmPhonePokemonStolenText), ElmPhonePokemonStolenText + end + +.checkingegg ; 0xbd052 + 3writetext BANK(ElmPhoneCheckingEggText), ElmPhoneCheckingEggText + end + +.assistant ; 0xbd057 + 3writetext BANK(ElmPhoneAssistantText), ElmPhoneAssistantText + end + +.eggunhatched ; 0xbd05c + 3writetext BANK(ElmPhoneEggUnhatchedText), ElmPhoneEggUnhatchedText + end + +.egghatched ; 0xbd061 + 3writetext BANK(ElmPhoneEggHatchedText), ElmPhoneEggHatchedText + setbit1 $0077 + end + +.discovery ; 0xbd069 + random $2 + if_equal $0, .nextdiscovery + 3writetext BANK(ElmPhoneDiscovery1Text), ElmPhoneDiscovery1Text + end + +.nextdiscovery ; 0xbd074 + 3writetext BANK(ElmPhoneDiscovery2Text), ElmPhoneDiscovery2Text + end + +.pokerus ; 0xbd079 + 3writetext BANK(ElmPhonePokerusText), ElmPhonePokerusText + specialphonecall $0000 + end + +ElmPhoneScript2: ; 0xbd081 + checkcode $14 + if_equal $2, .disaster + if_equal $3, .assistant + if_equal $4, .rocket + if_equal $5, .gift + if_equal $8, .gift + 3writetext BANK(ElmPhonePokerusText), ElmPhonePokerusText + specialphonecall $0000 + end + +.disaster ; 0xbd09f + 3writetext BANK(ElmPhoneDisasterText), ElmPhoneDisasterText + specialphonecall $0000 + setbit1 $0043 + end + +.assistant ; 0xbd0aa + 3writetext BANK(ElmPhoneEggAssistantText), ElmPhoneEggAssistantText + specialphonecall $0000 + clearbit1 $0700 + setbit1 $0701 + end + +.rocket ; 0xbd0b8 + 3writetext BANK(ElmPhoneRocketText), ElmPhoneRocketText + specialphonecall $0000 + end + +.gift ; 0xbd0c0 + 3writetext BANK(ElmPhoneGiftText), ElmPhoneGiftText + specialphonecall $0000 + end + +.unused ; 0xbd0c8 + 3writetext BANK(ElmPhoneUnusedText), ElmPhoneUnusedText + specialphonecall $0000 + end + +INCBIN "baserom.gbc", $bd0d0, $be699-$bd0d0 + + +SECTION "bank30",DATA,BANK[$30] + +INCLUDE "gfx/overworld/sprites_1.asm" + +SECTION "bank31",DATA,BANK[$31] + +INCLUDE "gfx/overworld/sprites_2.asm" + +SECTION "bank32",DATA,BANK[$32] + +INCBIN "baserom.gbc", $c8000, $cbe2b - $c8000 + + +SECTION "bank33",DATA,BANK[$33] + +Functioncc000: ; cc000 + call WhiteBGMap + call ClearTileMap + call ClearSprites + call $0e58 + ld hl, Options + ld a, [hl] + push af + set 4, [hl] + ld hl, TileMap + ld b, $4 + ld c, $d + call TextBox + ld hl, $c518 + ld b, $4 + ld c, $d + call TextBox + ld hl, $c4a2 + ld de, $40ae + call PlaceString + ld hl, $c51a + ld de, $40b8 + call PlaceString + ld hl, $c4f5 + ld de, $40a7 + call PlaceString + ld hl, $c56d + ld de, $40a7 + call PlaceString + ld a, [$df9c] + ld [$d265], a + call GetPokemonName + ld de, StringBuffer1 + ld hl, $c4c9 + call PlaceString + ld h, b + ld l, c + ld a, [$dfbb] + ld [TempMonLevel], a + call $382d + ld de, EnemyMonNick + ld hl, $c541 + call PlaceString + ld h, b + ld l, c + ld a, [EnemyMonLevel] + ld [TempMonLevel], a + call $382d + ld hl, $c4fb + ld de, $dfc0 + ld bc, $0203 + call $3198 + ld hl, $c573 + ld de, EnemyMonMaxHPHi + call $3198 + ld hl, $40c2 + call PrintText + pop af + ld [Options], a + call WaitBGMap + ld b, $8 + call GetSGBLayout + call Function32f9 + ret +; cc0a7 + +INCBIN "baserom.gbc", $cc0a7, $cc0c7 - $cc0a7 + + +Functioncc0c7: ; cc0c7 + call GetPokemonName + ld hl, $40d0 + jp PrintText +; cc0d0 + +INCBIN "baserom.gbc", $cc0d0, $cc0d6 - $cc0d0 + + +Functioncc0d6: ; cc0d6 + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + call $40e4 + pop af + ld [rSVBK], a + ret +; cc0e4 + +Functioncc0e4: ; cc0e4 + ld c, $6 +.asm_cc0e6 + call $41fb + dec c + jr nz, .asm_cc0e6 + call $48a4 + call $41e2 + call $41fb + ld c, $1 + ld a, [rKEY1] + bit 7, a + jr nz, .asm_cc0ff + ld c, $3 + +.asm_cc0ff + ld hl, $ff9e + ld a, [hl] + push af + ld [hl], c + call $411c + pop af + ld [$ff9e], a + ld a, $1 + ld [hBGMapMode], a + call $41fb + call $41fb + call $41fb + call WaitSFX + ret +; cc11c + +Functioncc11c: ; cc11c + ld a, [FXAnimIDHi] + and a + jr nz, .asm_cc156 + callba Function4ea44 + jr c, .asm_cc141 + call $41a1 + call $4163 + call $48a4 + call $41e2 + xor a + ld [$ffcf], a + ld [$ffd0], a + call $41fb + call $41bb + +.asm_cc141 + ld a, [$cfca] + and a + jr z, .asm_cc15f + ld l, a + ld h, $0 + ld de, $010e + add hl, de + ld a, l + ld [FXAnimIDLo], a + ld a, h + ld [FXAnimIDHi], a + +.asm_cc156 + call WaitSFX + call $4881 + call $4163 + +.asm_cc15f + call $48f6 + ret +; cc163 + +Functioncc163: ; cc163 + call $48d3 +.asm_cc166 + call $425f + call $4b48 + call $496e + call $3b0c + call $41e2 + ld a, [FXAnimIDHi] + or a + jr nz, .asm_cc193 + ld a, [FXAnimIDLo] + cp $cd + jr nz, .asm_cc193 + ld a, $2e + ld b, $5 + ld de, $0004 + ld hl, $d3fa +.asm_cc18c + cp [hl] + jr z, .asm_cc196 + add hl, de + dec b + jr nz, .asm_cc18c + +.asm_cc193 + call $41fb + +.asm_cc196 + ld a, [$d40f] + bit 0, a + jr z, .asm_cc166 + call $423d + ret +; cc1a1 + +Functioncc1a1: ; cc1a1 + call $41fb + call WaitTop + call $4207 + ld a, $1 + ld [hBGMapMode], a + call $41fb + call $41fb + call $41fb + call WaitTop + ret +; cc1bb + +Functioncc1bb: ; cc1bb + call $41fb + call WaitTop + ld a, [rSVBK] + push af + ld a, $1 + ld [rSVBK], a + ld hl, UpdateBattleHuds + ld a, $f + rst FarCall + pop af + ld [rSVBK], a + ld a, $1 + ld [hBGMapMode], a + call $41fb + call $41fb + call $41fb + call WaitTop + ret +; cc1e2 + +Functioncc1e2: ; cc1e2 + ld a, [hCGB] + and a + ret z + ld a, [rBGP] + ld b, a + ld a, [$cfc7] + cp b + call nz, $491a + ld a, [rOBP0] + ld b, a + ld a, [$cfc8] + cp b + call nz, $494b + ret +; cc1fb + +Functioncc1fb: ; cc1fb + ld a, $1 + ld [VBlankOccurred], a +.asm_cc200 + ld a, [VBlankOccurred] + and a + jr nz, .asm_cc200 + ret +; cc207 + +Functioncc207: ; cc207 + ld a, [hBattleTurn] + and a + jr z, .asm_cc216 + ld hl, $c4a1 + ld bc, $040a + call ClearBox + ret + +.asm_cc216 + ld hl, $c535 + ld bc, $050b + call ClearBox + ret +; cc220 + +INCBIN "baserom.gbc", $cc220, $cc23d - $cc220 + + +Functioncc23d: ; cc23d + ld a, [$d40f] + bit 3, a + jr z, .asm_cc254 + ld hl, $c403 + ld c, $28 +.asm_cc249 + ld a, [hl] + and $f0 + ld [hli], a + inc hl + inc hl + inc hl + dec c + jr nz, .asm_cc249 + ret + +.asm_cc254 + ld hl, Sprites + ld c, $a0 + xor a +.asm_cc25a + ld [hli], a + dec c + jr nz, .asm_cc25a + ret +; cc25f + +Functioncc25f: ; cc25f + call $4267 + ret nc + call $4275 + ret +; cc267 + +Functioncc267: ; cc267 + ld a, [$d412] + and a + jr z, .asm_cc273 + dec a + ld [$d412], a + and a + ret + +.asm_cc273 + scf + ret +; cc275 + +Functioncc275: ; cc275 +.asm_cc275 + call $3af0 + cp $ff + jr nz, .asm_cc286 + ld hl, $d40f + bit 1, [hl] + jr nz, .asm_cc28e + set 0, [hl] + ret + +.asm_cc286 + cp $d0 + jr nc, .asm_cc28e + ld [$d412], a + ret + +.asm_cc28e + call $4293 + jr .asm_cc275 +; cc293 + +Functioncc293: ; cc293 + ld a, [$d417] + sub $d0 + ld e, a + ld d, $0 + ld hl, $42a4 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; cc2a4 + +INCBIN "baserom.gbc", $cc2a4, $cc881 - $cc2a4 + + +Functioncc881: ; cc881 + ld a, [$cfca] + cp $1 + jr z, .asm_cc88b + cp $4 + ret nz + +.asm_cc88b + ld a, [TypeModifier] + and $7f + ret z + cp $a + ld de, $00ac + jr z, .asm_cc8a0 + ld de, $00ad + jr nc, .asm_cc8a0 + ld de, $00ab + +.asm_cc8a0 + call StartSFX + ret +; cc8a4 + +Functioncc8a4: ; cc8a4 + ld a, [hCGB] + and a + jr nz, .asm_cc8be + ld a, [hSGB] + and a + ld a, $e0 + jr z, .asm_cc8b2 + ld a, $f0 + +.asm_cc8b2 + ld [$cfc8], a + ld a, $e4 + ld [$cfc7], a + ld [$cfc9], a + ret + +.asm_cc8be + ld a, $e4 + ld [$cfc7], a + ld [$cfc8], a + ld [$cfc9], a + call DmgToCgbBGPals + ld de, $e4e4 + call DmgToCgbObjPals + ret +; cc8d3 + +Functioncc8d3: ; cc8d3 + ld hl, $d100 + ld bc, $0354 +.asm_cc8d9 + ld [hl], $0 + inc hl + dec bc + ld a, c + or b + jr nz, .asm_cc8d9 + ld hl, FXAnimIDLo + ld e, [hl] + inc hl + ld d, [hl] + ld hl, $506f + add hl, de + add hl, de + call $3ae1 + call $48a4 + call $41fb + ret +; cc8f6 + +Functioncc8f6: ; cc8f6 + call WaitTop + ld a, $e4 + ld [$cfc7], a + ld [$cfc8], a + ld [$cfc9], a + call DmgToCgbBGPals + ld de, $e4e4 + call DmgToCgbObjPals + xor a + ld [$ffcf], a + ld [$ffd0], a + call $41fb + ld a, $1 + ld [hBGMapMode], a + ret +; cc91a + +Functioncc91a: ; cc91a + ld [rBGP], a + ld a, [hCGB] + and a + ret z + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, $d080 + ld de, $d000 + ld a, [rBGP] + ld b, a + ld c, $7 + call CopyPals + ld hl, $d0c0 + ld de, $d040 + ld a, [rBGP] + ld b, a + ld c, $2 + call CopyPals + pop af + ld [rSVBK], a + ld a, $1 + ld [hCGBPalUpdate], a + ret +; cc94b + +Functioncc94b: ; cc94b + ld [rOBP0], a + ld a, [hCGB] + and a + ret z + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, $d0d0 + ld de, $d050 + ld a, [rOBP0] + ld b, a + ld c, $2 + call CopyPals + pop af + ld [rSVBK], a + ld a, $1 + ld [hCGBPalUpdate], a + ret +; cc96e + +Functioncc96e: ; cc96e + ld a, $0 + ld [$d418], a + ld hl, $d30a + ld e, $a +.asm_cc978 + ld a, [hl] + and a + jr z, .asm_cc98a + ld c, l + ld b, h + push hl + push de + call $4fbe + call $4a09 + pop de + pop hl + jr c, .asm_cc9a0 -.stolen ; 0xbd04d - 3writetext BANK(ElmPhonePokemonStolenText), ElmPhonePokemonStolenText - end +.asm_cc98a + ld bc, $0018 + add hl, bc + dec e + jr nz, .asm_cc978 + ld a, [$d418] + ld l, a + ld h, $c4 +.asm_cc997 + ld a, l + cp $a0 + jr nc, .asm_cc9a0 + xor a + ld [hli], a + jr .asm_cc997 -.checkingegg ; 0xbd052 - 3writetext BANK(ElmPhoneCheckingEggText), ElmPhoneCheckingEggText - end +.asm_cc9a0 + ret +; cc9a1 -.assistant ; 0xbd057 - 3writetext BANK(ElmPhoneAssistantText), ElmPhoneAssistantText - end +INCBIN "baserom.gbc", $cc9a1, $cc9bd - $cc9a1 -.eggunhatched ; 0xbd05c - 3writetext BANK(ElmPhoneEggUnhatchedText), ElmPhoneEggUnhatchedText - end -.egghatched ; 0xbd061 - 3writetext BANK(ElmPhoneEggHatchedText), ElmPhoneEggHatchedText - setbit1 $0077 - end +Functioncc9bd: ; cc9bd + ld hl, $0000 + add hl, bc + ld [hl], $0 + ret +; cc9c4 -.discovery ; 0xbd069 - random $2 - if_equal $0, .nextdiscovery - 3writetext BANK(ElmPhoneDiscovery1Text), ElmPhoneDiscovery1Text - end +INCBIN "baserom.gbc", $cc9c4, $cca09 - $cc9c4 -.nextdiscovery ; 0xbd074 - 3writetext BANK(ElmPhoneDiscovery2Text), ElmPhoneDiscovery2Text - end -.pokerus ; 0xbd079 - 3writetext BANK(ElmPhonePokerusText), ElmPhonePokerusText - specialphonecall $0000 - end +Functioncca09: ; cca09 + call $4aaa + call $67d1 + cp $fd + jp z, $4aa5 + cp $fc + jp z, $4aa2 + push af + ld hl, $d419 + ld a, [$d420] + xor [hl] + and $e0 + ld [hl], a + pop af + push bc + call $683c + ld a, [$d41b] + add [hl] + ld [$d41b], a + inc hl + ld a, [hli] + ld c, a + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [$d418] + ld e, a + ld d, $c4 +.asm_cca3c + ld a, [$d41d] + ld b, a + ld a, [$d41f] + add b + ld b, a + push hl + ld a, [hl] + ld hl, $d419 + bit 6, [hl] + jr z, .asm_cca53 + add $8 + xor $ff + inc a -ElmPhoneScript2: ; 0xbd081 - checkcode $14 - if_equal $2, .disaster - if_equal $3, .assistant - if_equal $4, .rocket - if_equal $5, .gift - if_equal $8, .gift - 3writetext BANK(ElmPhonePokerusText), ElmPhonePokerusText - specialphonecall $0000 - end +.asm_cca53 + pop hl + add b + ld [de], a + inc hl + inc de + ld a, [$d41c] + ld b, a + ld a, [$d41e] + add b + ld b, a + push hl + ld a, [hl] + ld hl, $d419 + bit 5, [hl] + jr z, .asm_cca6f + add $8 + xor $ff + inc a -.disaster ; 0xbd09f - 3writetext BANK(ElmPhoneDisasterText), ElmPhoneDisasterText - specialphonecall $0000 - setbit1 $0043 - end +.asm_cca6f + pop hl + add b + ld [de], a + inc hl + inc de + ld a, [$d41b] + add $31 + add [hl] + ld [de], a + inc hl + inc de + ld a, [$d419] + ld b, a + ld a, [hl] + xor b + and $e0 + ld b, a + ld a, [hl] + and $10 + or b + ld b, a + ld a, [OTPartyMon6Nickname] + and $f + or b + ld [de], a + inc hl + inc de + ld a, e + ld [$d418], a + cp $a0 + jr nc, .asm_ccaa7 + dec c + jr nz, .asm_cca3c + pop bc + jr .asm_ccaa5 -.assistant ; 0xbd0aa - 3writetext BANK(ElmPhoneEggAssistantText), ElmPhoneEggAssistantText - specialphonecall $0000 - clearbit1 $0700 - setbit1 $0701 - end + call $49bd -.rocket ; 0xbd0b8 - 3writetext BANK(ElmPhoneRocketText), ElmPhoneRocketText - specialphonecall $0000 - end +.asm_ccaa5 + and a + ret -.gift ; 0xbd0c0 - 3writetext BANK(ElmPhoneGiftText), ElmPhoneGiftText - specialphonecall $0000 - end +.asm_ccaa7 + pop bc + scf + ret +; ccaaa -.unused ; 0xbd0c8 - 3writetext BANK(ElmPhoneUnusedText), ElmPhoneUnusedText - specialphonecall $0000 - end +Functionccaaa: ; ccaaa + ld hl, $0001 + add hl, bc + ld a, [hl] + and $80 + ld [$d419], a + xor a + ld [$d420], a + ld hl, $0005 + add hl, bc + ld a, [hl] + ld [OTPartyMon6Nickname], a + ld hl, $0002 + add hl, bc + ld a, [hl] + ld [$d41a], a + ld hl, $0006 + add hl, bc + ld a, [hli] + ld [$d41b], a + ld a, [hli] + ld [$d41c], a + ld a, [hli] + ld [$d41d], a + ld a, [hli] + ld [$d41e], a + ld a, [hli] + ld [$d41f], a + ld a, [hBattleTurn] + and a + ret z + ld hl, $0001 + add hl, bc + ld a, [hl] + ld [$d419], a + bit 0, [hl] + ret z + ld hl, $0007 + add hl, bc + ld a, [hli] + ld d, a + ld a, $b4 + sub d + ld [$d41c], a + ld a, [hli] + ld d, a + ld a, [$d41a] + cp $ff + jr nz, .asm_ccb09 + ld a, $28 + add d + jr .asm_ccb26 -INCBIN "baserom.gbc", $bd0d0, $be699-$bd0d0 +.asm_ccb09 + sub d + push af + ld a, [FXAnimIDHi] + or a + jr nz, .asm_ccb25 + ld a, [FXAnimIDLo] + cp $86 + jr z, .asm_ccb20 + cp $87 + jr z, .asm_ccb20 + cp $d0 + jr nz, .asm_ccb25 +.asm_ccb20 + pop af + sub $8 + jr .asm_ccb26 -SECTION "bank30",DATA,BANK[$30] +.asm_ccb25 + pop af -INCLUDE "gfx/overworld/sprites_1.asm" +.asm_ccb26 + ld [$d41d], a + ld a, [hli] + xor $ff + inc a + ld [$d41e], a + ret +; ccb31 -SECTION "bank31",DATA,BANK[$31] +INCBIN "baserom.gbc", $ccb31, $ccb48 - $ccb31 -INCLUDE "gfx/overworld/sprites_2.asm" -SECTION "bank32",DATA,BANK[$32] +Functionccb48: ; ccb48 + ld hl, $4000 + ld a, $32 + rst FarCall + ret +; ccb4f -INCBIN "baserom.gbc", $c8000, $cbe2b - $c8000 +INCBIN "baserom.gbc", $ccb4f, $ccfbe - $ccb4f -SECTION "bank33",DATA,BANK[$33] +Functionccfbe: ; ccfbe + ld hl, $0004 + add hl, bc + ld e, [hl] + ld d, $0 + ld hl, $4fce + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; ccfce -Functioncc000: ; cc000 - call WhiteBGMap - call ClearTileMap - call ClearSprites - call $0e58 - ld hl, Options +INCBIN "baserom.gbc", $ccfce, $ce7d1 - $ccfce + + +Functionce7d1: ; ce7d1 +.asm_ce7d1 + ld hl, $000c + add hl, bc ld a, [hl] + and a + jr z, .asm_ce7e1 + dec [hl] + call $6823 + ld a, [hli] push af - set 4, [hl] - ld hl, TileMap - ld b, $4 - ld c, $d - call TextBox - ld hl, $c518 - ld b, $4 - ld c, $d - call TextBox - ld hl, $c4a2 - ld de, $40ae - call PlaceString - ld hl, $c51a - ld de, $40b8 - call PlaceString - ld hl, $c4f5 - ld de, $40a7 - call PlaceString - ld hl, $c56d - ld de, $40a7 - call PlaceString - ld a, [$df9c] - ld [$d265], a - call GetPokemonName - ld de, StringBuffer1 - ld hl, $c4c9 - call PlaceString - ld h, b - ld l, c - ld a, [$dfbb] - ld [TempMonLevel], a - call $382d - ld de, EnemyMonNick - ld hl, $c541 - call PlaceString - ld h, b - ld l, c - ld a, [EnemyMonLevel] - ld [TempMonLevel], a - call $382d - ld hl, $c4fb - ld de, $dfc0 - ld bc, $0203 - call $3198 - ld hl, $c573 - ld de, EnemyMonMaxHPHi - call $3198 - ld hl, $40c2 - call PrintText + jr .asm_ce7fd + +.asm_ce7e1 + ld hl, $000d + add hl, bc + inc [hl] + call $6823 + ld a, [hli] + cp $fe + jr z, .asm_ce815 + cp $ff + jr z, .asm_ce807 + push af + ld a, [hl] + push hl + and $3f + ld hl, $000c + add hl, bc + ld [hl], a + pop hl + +.asm_ce7fd + ld a, [hl] + and $c0 + srl a + ld [$d420], a pop af - ld [Options], a - call WaitBGMap - ld b, $8 - call GetSGBLayout - call Function32f9 ret -; cc0a7 -INCBIN "baserom.gbc", $cc0a7, $cc0c7 - $cc0a7 +.asm_ce807 + xor a + ld hl, $000c + add hl, bc + ld [hl], a + ld hl, $000d + add hl, bc + dec [hl] + dec [hl] + jr .asm_ce7d1 +.asm_ce815 + xor a + ld hl, $000c + add hl, bc + ld [hl], a + dec a + ld hl, $000d + add hl, bc + ld [hl], a + jr .asm_ce7d1 +; ce823 -Functioncc0c7: ; cc0c7 - call GetPokemonName - ld hl, $40d0 - jp PrintText -; cc0d0 +Functionce823: ; ce823 + ld hl, $0003 + add hl, bc + ld e, [hl] + ld d, $0 + ld hl, $685e + add hl, de + add hl, de + ld e, [hl] + inc hl + ld d, [hl] + ld hl, $000d + add hl, bc + ld l, [hl] + ld h, $0 + add hl, hl + add hl, de + ret +; ce83c -INCBIN "baserom.gbc", $cc0d0, $cfd9e - $cc0d0 +Functionce83c: ; ce83c + ld l, a + ld h, $0 + ld de, $6eae + add hl, hl + add hl, hl + add hl, de + ret +; ce846 + +INCBIN "baserom.gbc", $ce846, $cfd9e - $ce846 ; Songs iii @@ -50187,7 +56499,32 @@ Functionfb4f2: ; fb4f2 ret ; fb53e -INCBIN "baserom.gbc", $fb53e, $fba18 - $fb53e +Functionfb53e: ; fb53e + call $74be + ld de, $4ac0 + ld hl, $96c0 + ld bc, $3e04 + call Functionddc + ld de, $4ae0 + ld hl, $9780 + ld bc, $3e01 + call Functionddc + ld de, $4af8 + ld hl, $9760 + ld bc, $3e02 + call Functionddc + ld de, $4b10 + ld hl, $9550 + ld bc, $3e08 + call Functiondc9 + ld de, $49b0 + ld hl, $9310 + ld bc, $3e11 + call Functiondc9 + ret +; fb57e + +INCBIN "baserom.gbc", $fb57e, $fba18 - $fb57e Functionfba18: ; fba18 @@ -52828,7 +59165,220 @@ Function100ae7: ; 100ae7 ret ; 100b0a -INCBIN "baserom.gbc", $100b0a, $100cb5 - $100b0a +INCBIN "baserom.gbc", $100b0a, $100b12 - $100b0a + + +Function100b12: ; 100b12 + call Function100dd8 + ret c + ld hl, $4f2c + ld a, $9 + ld de, Function1d35 + call $2d54 + ld a, $9 + ld [$cf94], a + ld a, [$d0d2] + ld [$cf88], a + call $4e72 + call $4b45 + callba Function8e85 + call $4ed4 + ld a, [$cf88] + ld [$d0d2], a + call Function1c07 + ret +; 100b45 + +Function100b45: ; 100b45 + call $4b7a +.asm_100b48 + call Function100dd2 + callba Function241ba + push bc + callba Function10402d + call $4e2d + pop bc + jr c, .asm_100b6b + ld a, [$cfa8] + and c + jr z, .asm_100b48 + ld a, $9 + ld hl, $4098 + rst FarCall + ret + +.asm_100b6b + ld a, [$cfa4] + ld c, a + ld a, [$cfa3] + call SimpleMultiply + ld [$cf88], a + and a + ret +; 100b7a + +Function100b7a: ; 100b7a + ld hl, Function1c66 + ld a, [$cf94] + rst FarCall + callba Function24085 + callba MobileTextBorder + call Function1ad2 + call Function321c + ld a, $9 + ld hl, $411a + rst FarCall + ld hl, $cfa5 + set 7, [hl] + ret +; 100b9f + +Function100b9f: ; 100b9f + xor a + ld [$d0e3], a + ld a, $f + ld hl, $6786 + rst FarCall + ret z + call Function100dd8 + jp c, Function2ec8 + call $4e72 + call $4bc2 + push af + callba Function8e85 + call $4ed4 + pop af + ret +; 100bc2 + +Function100bc2: ; 100bc2 + xor a + ld [hBGMapMode], a + call $4c74 + call $4c98 + ld a, $f + ld hl, $66c8 + rst FarCall +.asm_100bd1 + call Function100dd2 + callba Function241ba + push bc + callba Function10402d + call $4e2d + pop bc + jr c, .asm_100c25 + ld a, [$cfa8] + and c + bit 6, a + jp nz, $4bff + bit 7, a + jp nz, $4c10 + bit 0, a + jr nz, .asm_100c30 + bit 1, a + jr nz, .asm_100c25 + jr .asm_100bd1 + + ld a, [$cfa9] + and a + jp nz, $4bcb + ld a, [$d0eb] + inc a + ld [$cfa9], a + jp $4bcb + + ld a, [$cfa9] + ld b, a + ld a, [$d0eb] + inc a + inc a + cp b + jp nz, $4bcb + ld a, $1 + ld [$cfa9], a + jp $4bcb + +.asm_100c25 + ld a, [$cfa9] + dec a + ld [CurMoveNum], a + ld a, $1 + and a + ret + +.asm_100c30 + ld a, [$cfa9] + dec a + ld [CurMoveNum], a + ld a, [$cfa9] + dec a + ld c, a + ld b, $0 + ld hl, BattleMonPPMove1 + add hl, bc + ld a, [hl] + and $3f + jr z, .asm_100c68 + ld a, [PlayerDisableCount] + swap a + and $f + dec a + cp c + jr z, .asm_100c63 + ld a, [$cfa9] + dec a + ld c, a + ld b, $0 + ld hl, BattleMonMove1 + add hl, bc + ld a, [hl] + ld [CurPlayerMove], a + xor a + ret + +.asm_100c63 + ld hl, $4c5b + jr .asm_100c6b + +.asm_100c68 + ld hl, $4c39 + +.asm_100c6b + call FarBattleTextBox + call Function30b4 + jp $4bc2 +; 100c74 + +Function100c74: ; 100c74 + ld hl, $c540 + ld b, $8 + ld c, $8 + call TextBox + ld hl, BattleMonMove1 + ld de, $d25e + ld bc, $0004 + call CopyBytes + ld a, $28 + ld [MagikarpLength], a + ld hl, $c56a + ld a, $20 + call Predef + ret +; 100c98 + +Function100c98: ; 100c98 + ld de, $4cad + call Function1bb1 + ld a, [$d0eb] + inc a + ld [$cfa3], a + ld a, [CurMoveNum] + inc a + ld [$cfa9], a + ret +; 100cad + +INCBIN "baserom.gbc", $100cad, $100cb5 - $100cad Function100cb5: ; 100cb5 @@ -52888,7 +59438,64 @@ Function100cb5: ; 100cb5 ret ; 100d22 -INCBIN "baserom.gbc", $100d22, $100da5 - $100d22 +Function100d22: ; 100d22 + call Function100dd8 + ret c + call $4d67 + ld hl, $cfa5 + set 7, [hl] + res 6, [hl] +.asm_100d30 + call Function100dd2 + callba Function241ba + push bc + callba Function8cf69 + callba Function10402d + call Function100dfd + pop bc + jr c, .asm_100d54 + ld a, [$cfa8] + and c + jr nz, .asm_100d56 + jr .asm_100d30 + +.asm_100d54 + scf + ret + +.asm_100d56 + push af + ld de, $0008 + call StartSFX + pop af + bit 1, a + jr z, .asm_100d65 + ret z + scf + ret + +.asm_100d65 + and a + ret +; 100d67 + +Function100d67: ; 100d67 + ld hl, $4d88 + call Function1d3c + xor a + ld [hBGMapMode], a + call Function1cbb + call Function1ad2 + call Function1c89 + call WaitBGMap + call Function1c66 + call Function1c10 + ld hl, $cfa5 + set 6, [hl] + ret +; 100d88 + +INCBIN "baserom.gbc", $100d88, $100da5 - $100d88 Function100da5: ; 100da5 @@ -52899,7 +59506,20 @@ Function100da5: ; 100da5 ret ; 100db0 -INCBIN "baserom.gbc", $100db0, $100dc0 - $100db0 +Function100db0: ; 100db0 + ld hl, $cd2a + bit 3, [hl] + jr nz, .asm_100dbe + ld hl, $cd2a + set 3, [hl] + scf + ret + +.asm_100dbe + xor a + ret +; 100dc0 + Function100dc0: ; 100dc0 @@ -52980,7 +59600,112 @@ Function100dfd: ; 100dfd ret ; 100e2d -INCBIN "baserom.gbc", $100e2d, $10389d - $100e2d +Function100e2d: ; 100e2d + ld a, [OverworldDelay] + ld c, a + ld a, $1e + sub c + ld c, a + ld b, $3 + push bc + callba Function10062d + pop bc + jr c, .asm_100e61 + ld b, $1 + call Function10079c + jr c, .asm_100e61 + call Function1009f3 + jr c, .asm_100e61 + callba Function10032e + ld a, [$cd2b] + and a + jr nz, .asm_100e61 + call $4e63 + call $4e84 + xor a + ret + +.asm_100e61 + scf + ret +; 100e63 + +Function100e63: ; 100e63 + ld a, e + cp $2 + ret nz + call $4db0 + ret nc + ld de, $0027 + call StartSFX + ret +; 100e72 + +Function100e72: ; 100e72 + xor a + ld hl, $cd29 + bit 0, [hl] + jr z, .asm_100e7c + ld a, $a + +.asm_100e7c + ld [$cd67], a + xor a + ld [$cd68], a + ret +; 100e84 + +Function100e84: ; 100e84 + ld a, [$cd67] + ld hl, $4e8c + rst JumpTable + ret +; 100e8c + +INCBIN "baserom.gbc", $100e8c, $100eae - $100e8c + + +Function100eae: ; 100eae + scf + call $4eca + jr .asm_100eb8 + + and a + call $4eca + +.asm_100eb8 + ld hl, $cd68 + inc [hl] + ld a, [hl] + cp $2 + ret c + ld [hl], $0 + jr .asm_100ec5 + + ret + +.asm_100ec5 + ld hl, $cd67 + inc [hl] + ret +; 100eca + +Function100eca: ; 100eca + ld a, $2 + ld hl, $4e8b + rst FarCall + call $4ed4 + ret +; 100ed4 + +Function100ed4: ; 100ed4 + callba Function96a4 + ld a, $1 + ld [hCGBPalUpdate], a + ret +; 100edf + +INCBIN "baserom.gbc", $100edf, $10389d - $100edf SECTION "bank41",DATA,BANK[$41] @@ -53804,7 +60529,14 @@ UpdateUsedMoves: ; 105ed0 HallOfFame2: ; 0x105ef6 ret -INCBIN "baserom.gbc", $105ef7, $106078 - $105ef7 +INCBIN "baserom.gbc", $105ef7, $106008 - $105ef7 + + +Function106008: ; 106008 + ret +; 106009 + +INCBIN "baserom.gbc", $106009, $106078 - $106009 HallOfFame1: ; 0x106078 ret @@ -54901,7 +61633,236 @@ INCBIN "baserom.gbc", $118d35, $11bc9e - $118d35 SECTION "bank47",DATA,BANK[$47] -INCBIN "baserom.gbc", $11c000, $11f686 - $11c000 +Function11c000: ; 11c000 + ld a, [rSVBK] + push af + ld a, $3 + ld [rSVBK], a + ld hl, $d105 + ld a, [hl] + dec a + ld e, a + ld d, $0 + ld hl, $72f0 + add hl, de + ld a, [hl] + and a + jr nz, .asm_11c026 + ld a, [hRandomAdd] + and $1f + cp $19 + jr c, .asm_11c021 + sub $19 + +.asm_11c021 + ld hl, $7332 + jr .asm_11c033 + +.asm_11c026 + ld a, [hRandomAdd] + and $f + cp $f + jr c, .asm_11c030 + sub $f + +.asm_11c030 + ld hl, $73ce + +.asm_11c033 + ld b, $0 + dec c + jr nz, .asm_11c03d + ld [$d200], a + jr .asm_11c040 + +.asm_11c03d + ld a, [$d200] + +.asm_11c040 + push af + add hl, bc + add hl, bc + ld a, [hli] + ld c, a + ld a, [hl] + ld h, a + ld l, c + pop af + ld c, a + ld b, $0 + add hl, bc + add hl, bc + ld a, [hli] + ld c, a + ld a, [hl] + ld l, c + ld h, a + ld bc, $c5b9 + pop af + ld [rSVBK], a + call Function13e5 + ret +; 11c05d + +INCBIN "baserom.gbc", $11c05d, $11c0c6 - $11c05d + + +Function11c0c6: ; 11c0c6 + ld a, [$cf63] + ld l, a + ld a, [$cf64] + ld h, a + push hl + ld hl, $c618 + ld a, $0 + ld [hli], a + push de + xor a + ld [$cf63], a + ld a, $12 + ld [$cf64], a + ld a, $6 +.asm_11c0e1 + push af + ld a, [bc] + ld e, a + inc bc + ld a, [bc] + ld d, a + inc bc + or e + jr z, .asm_11c133 + push hl + push bc + call $4156 + call $414a + ld e, c + pop bc + pop hl + ld a, e + or a + jr z, .asm_11c133 +.asm_11c0fa + ld a, [$cf64] + cp $12 + jr z, .asm_11c102 + inc e + +.asm_11c102 + cp e + jr nc, .asm_11c11c + ld a, [$cf63] + inc a + ld [$cf63], a + ld [hl], $4e + rra + jr c, .asm_11c113 + ld [hl], $55 + +.asm_11c113 + inc hl + ld a, $12 + ld [$cf64], a + dec e + jr .asm_11c0fa + +.asm_11c11c + cp $12 + jr z, .asm_11c123 + ld [hl], $7f + inc hl + +.asm_11c123 + sub e + ld [$cf64], a + ld de, EnemyMoveAnimation +.asm_11c12a + ld a, [de] + cp $50 + jr z, .asm_11c133 + inc de + ld [hli], a + jr .asm_11c12a + +.asm_11c133 + pop af + dec a + jr nz, .asm_11c0e1 + ld [hl], $57 + pop bc + ld hl, $c618 + call Function13e5 + pop hl + ld a, l + ld [$cf63], a + ld a, h + ld [$cf64], a + ret +; 11c14a + +Function11c14a: ; 11c14a + ld c, $0 + ld hl, EnemyMoveAnimation +.asm_11c14f + ld a, [hli] + cp $50 + ret z + inc c + jr .asm_11c14f +; 11c156 + +Function11c156: ; 11c156 + ld a, [rSVBK] + push af + ld a, $1 + ld [rSVBK], a + ld a, $50 + ld hl, EnemyMoveAnimation + ld bc, $000b + call ByteFill + ld a, d + and a + jr z, .asm_11c19c + ld hl, $5aac + dec d + sla d + ld c, d + ld b, $0 + add hl, bc + ld a, [hli] + ld c, a + ld a, [hl] + ld b, a + push bc + pop hl + ld c, e + ld b, $0 + sla c + rl b + sla c + rl b + sla c + rl b + add hl, bc + ld bc, $0005 +.asm_11c18f + ld de, EnemyMoveAnimation + call CopyBytes + ld de, EnemyMoveAnimation + pop af + ld [rSVBK], a + ret + +.asm_11c19c + ld a, e + ld [$d265], a + call GetPokemonName + ld hl, StringBuffer1 + ld bc, $000a + jr .asm_11c18f +; 11c1ab + +INCBIN "baserom.gbc", $11c1ab, $11f686 - $11c1ab SECTION "bank48",DATA,BANK[$48] -- cgit v1.2.3 From ed200a5a16d34e8ef7c2d210cc4e4d2bebb64745 Mon Sep 17 00:00:00 2001 From: yenatch Date: Mon, 29 Jul 2013 13:58:20 -0400 Subject: fill out bank f more --- main.asm | 907 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 782 insertions(+), 125 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index abfe539c3..ac7452ee0 100644 --- a/main.asm +++ b/main.asm @@ -37345,8 +37345,48 @@ Function3e308: ; 3e308 ret ; 3e358 -INCBIN "baserom.gbc", $3e358, $3e3ad - $3e358 +Function3e358: ; 3e358 + ld a, [CurBattleMon] + ld d, a + ld a, [CurPartyMon] + cp d + jr nz, .asm_3e36b + ld hl, $4c0d + call FarBattleTextBox + jp $6299 + +.asm_3e36b + ld a, [$c730] + and a + jr nz, .asm_3e378 + ld a, [EnemySubStatus5] + bit 7, a + jr z, .asm_3e381 + +.asm_3e378 + ld hl, $4c22 + call FarBattleTextBox + jp $6299 + +.asm_3e381 + call Function3d887 + jp z, $6299 + ld a, [CurBattleMon] + ld [$c71a], a + ld a, $2 + ld [$d0ec], a + call ClearPalettes + call DelayFrame + call ClearSprites + call Function3eda6 + call Function1c17 + call ClearSGB + call Function32f9 + ld a, [CurPartyMon] + ld [CurBattleMon], a + ; fallthrough +; 3e3ad Function3e3ad: ; 3e3ad ld a, $1 @@ -37363,6 +37403,8 @@ Function3e3ad: ; 3e3ad ld a, [InLinkBattle] and a jr nz, .asm_3e3cf + +.asm_3e3ca call $640b and a ret @@ -37370,28 +37412,28 @@ Function3e3ad: ; 3e3ad .asm_3e3cf ld a, [$d430] cp $e - jp z, $63ca + jp z, .asm_3e3ca cp $d - jp z, $63ca + jp z, .asm_3e3ca cp $4 - jp c, $63ca + jp c, .asm_3e3ca cp $f jr nz, .asm_3e3e9 - call $40e5 + call Function3c0e5 ret .asm_3e3e9 ld a, [$ffcb] cp $1 jr z, .asm_3e3f7 - call $640b - call $63ff + call Function3e40b + call Function3e3ff and a ret .asm_3e3f7 - call $63ff - call $640b + call Function3e3ff + call Function3e40b and a ret ; 3e3ff @@ -37437,7 +37479,26 @@ Function3e40b: ; 3e40b ret ; 3e459 -INCBIN "baserom.gbc", $3e459, $3e489 - $3e459 +Function3e459: ; 3e459 + ld c, $32 + call DelayFrames + ld hl, $c535 + ld bc, $050b + call ClearBox + ld a, [CurPartyMon] + ld [CurBattleMon], a + call $5581 + call Function3da0d + xor a + ld [$d265], a + call $6cab + call Function3db5f + call Function3edd1 + call Function309d + call SetPlayerTurn + jp Function3dc23 +; 3e489 + Function3e489: ; 3e489 @@ -37578,12 +37639,12 @@ Function3e4bc: ; 3e4bc dec a jr nz, .asm_3e5a3 ld hl, $c5c3 - ld de, $661c + ld de, .string_3e61c call PlaceString jr .asm_3e5a3 .asm_3e58e - call $66c8 + call MoveInfoBox ld a, [$d0e3] and a jr z, .asm_3e5a3 @@ -37670,7 +37731,9 @@ Function3e4bc: ; 3e4bc jp $64bc ; 3e61c -INCBIN "baserom.gbc", $3e61c, $3e61d - $3e61c +.string_3e61c ; 3e61c + db "@" +; 3e61d Function3e61d: ; 3e61d @@ -37779,7 +37842,7 @@ Function3e643: ; 3e643 jp $64bc ; 3e6c8 -Function3e6c8: ; 3e6c8 +MoveInfoBox: ; 3e6c8 xor a ld [hBGMapMode], a ld hl, $c540 @@ -37797,7 +37860,7 @@ Function3e6c8: ; 3e6c8 cp b jr nz, .asm_3e6f4 ld hl, $c569 - ld de, $674f + ld de, .Disabled call PlaceString jr .asm_3e74e @@ -37828,7 +37891,7 @@ Function3e6c8: ; 3e6c8 ld [StringBuffer1], a call $675f ld hl, $c555 - ld de, $6759 + ld de, .Type call PlaceString ld hl, $c583 ld [hl], $f3 @@ -37843,7 +37906,11 @@ Function3e6c8: ; 3e6c8 ret ; 3e74f -INCBIN "baserom.gbc", $3e74f, $3e75f - $3e74f +.Disabled + db "Disabled!@" +.Type + db "TYPE/@" +; 3e75f Function3e75f: ; 3e75f @@ -38708,8 +38775,17 @@ CheckUnownLetter: ; 3eb75 ; 3ebc7 -INCBIN "baserom.gbc", $3ebc7, $3ebd8 - $3ebc7 - +Function3ebc7: ; 3ebc7 + push bc + ld a, [BattleMonLevel] + ld b, a + ld a, [EnemyMonLevel] + ld [BattleMonLevel], a + ld a, b + ld [EnemyMonLevel], a + pop bc + ret +; 3ebd8 Function3ebd8: ; 3ebd8 xor a @@ -38770,11 +38846,17 @@ Function3ec1a: ; 3ec1a ret ; 3ec2c -INCBIN "baserom.gbc", $3ec2c, $3ec30 - $3ec2c +Function3ec2c: ; 3ec2c + ld a, 1 + jr Function3ec31 +; 3ec30 Function3ec30: ; 3ec30 xor a +; 3ec31 + +Function3ec31: ; 3ec31 ld [hBattleTurn], a call $6c39 jp $6c76 @@ -38869,12 +38951,12 @@ Function3ec76: ; 3ec76 ; 3ecab Function3ecab: ; 3ecab - ld c, $0 + ld c, 0 .asm_3ecad - call $6cb7 + call Function3ecb7 inc c ld a, c - cp $5 + cp 5 jr nz, .asm_3ecad ret ; 3ecb7 @@ -38898,29 +38980,27 @@ Function3ecb7: ; 3ecb7 ld c, a jr nc, .asm_3ecd7 inc b - .asm_3ecd7 ld a, [bc] pop bc ld b, a push bc sla c - ld b, $0 + ld b, 0 add hl, bc ld a, c add e ld e, a jr nc, .asm_3ece6 inc d - .asm_3ece6 pop bc push hl - ld hl, $6d2b + ld hl, .StatLevelMultipliers dec b sla b ld c, b - ld b, $0 + ld b, 0 add hl, bc xor a ld [hMultiplicand], a @@ -38937,15 +39017,20 @@ Function3ecb7: ; 3ecb7 ld b, $4 call Divide pop hl + +; Cap at 999. ld a, [$ffb6] - sub $e7 + sub 999 % $100 ld a, [$ffb5] - sbc $3 - jp c, $6d1e - ld a, $3 + sbc 999 / $100 + jp c, .asm_3ed1e + + ld a, 999 / $100 ld [$ffb5], a - ld a, $e7 + ld a, 999 % $100 ld [$ffb6], a + +.asm_3ed1e ld a, [$ffb5] ld [hli], a ld b, a @@ -38960,10 +39045,27 @@ Function3ecb7: ; 3ecb7 ret ; 3ed2b -INCBIN "baserom.gbc", $3ed2b, $3ed4a - $3ed2b +.StatLevelMultipliers +; / + db 25, 100 ; 25% + db 28, 100 ; 28% + db 33, 100 ; 33% + db 40, 100 ; 40% + db 50, 100 ; 50% + db 66, 100 ; 66% + db 1, 1 ; 100% -BadgeStatBoosts: ; 3ed4a + db 15, 10 ; 150% + db 2, 1 ; 200% + db 25, 10 ; 250% + db 3, 1 ; 300% + db 35, 10 ; 350% + db 4, 1 ; 400% +; 3ed45 + + +BadgeStatBoosts: ; 3ed45 ; Raise BattleMon stats depending on which badges have been obtained. ; Every other badge boosts a stat, starting from the first. @@ -38976,6 +39078,10 @@ BadgeStatBoosts: ; 3ed4a ; The boosted stats are in order, except PlainBadge and MineralBadge's boosts are swapped. + ld a, [InLinkBattle] + and a + ret nz + ld a, [$cfc0] and a ret nz @@ -39065,15 +39171,29 @@ Function3eda6: ; 3eda6 ret ; 3edad -INCBIN "baserom.gbc", $3edad, $3edd1 - $3edad + +Function3edad: ; 3edad + ld de, $4ac0 + ld hl, $96c0 + ld bc, $3e04 + call Functionf9d + ld de, $4ae0 + ld hl, $9730 + ld bc, $3e06 + call Functionf9d + ld de, $4b10 + ld hl, $9550 + ld bc, $3e08 + jp Functionf82 +; 3edd1 Function3edd1: ; 3edd1 - ld hl, $6dd7 + ld hl, .empty jp BattleTextBox -; 3edd7 - -INCBIN "baserom.gbc", $3edd7, $3edd8 - $3edd7 +.empty + db "@" +; 3edd8 BattleRNG: ; 3edd8 @@ -39085,100 +39205,472 @@ BattleRNG: ; 3edd8 and a jp z, RNG -; The PRNG operates in streams of 8 values -; The reasons for this are unknown +; The PRNG operates in streams of 10 values. ; Which value are we trying to pull? push hl push bc ld a, [LinkBattleRNCount] ld c, a - ld b, $0 + ld b, 0 ld hl, LinkBattleRNs add hl, bc inc a ld [LinkBattleRNCount], a ; If we haven't hit the end yet, we're good - cp 9 ; Exclude last value. See the closing comment + cp 10 - 1 ; Exclude last value. See the closing comment + ld a, [hl] + pop bc + pop hl + ret c + +; If we have, we have to generate new pseudorandom data +; Instead of having multiple PRNGs, ten seeds are used + push hl + push bc + push af + +; Reset count to 0 + xor a + ld [LinkBattleRNCount], a + ld hl, LinkBattleRNs + ld b, 10 ; number of seeds + +; Generate next number in the sequence for each seed +; The algorithm takes the form *5 + 1 % 256 +.loop + ; get last # + ld a, [hl] + + ; a * 5 + 1 + ld c, a + add a + add a + add c + inc a + + ; update # + ld [hli], a + dec b + jr nz, .loop + +; This has the side effect of pulling the last value first, +; then wrapping around. As a result, when we check to see if +; we've reached the end, we check the one before it. + + pop af + pop bc + pop hl + ret +; 3ee0f + + +Function3ee0f: ; 3ee0f + ld a, BATTLE_VARS_SUBSTATUS3 + call CleanGetBattleVarPair + and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND + ret nz +; 3ee17 + +Function3ee17: ; 3ee17 + ld a, e + ld [FXAnimIDLo], a + ld a, d + ld [FXAnimIDHi], a + call WaitBGMap + ld a, $37 + jp Predef +; 3ee27 + +Function3ee27: ; 3ee27 + push af + push bc + push de + push hl + ld b, $1 + call GetSGBLayout + call Function32f9 + call DelayFrame + pop hl + pop de + pop bc + pop af + ret +; 3ee3b + + +Function3ee3b: ; 3ee3b + ld a, [InLinkBattle] + and a + ret nz + ld a, [$cfc0] + bit 0, a + ret nz + call $70d4 + xor a + ld [CurPartyMon], a + ld bc, PartyMon1Species + +.asm_3ee50 + ld hl, $0022 + add hl, bc + ld a, [hli] + or [hl] + jp z, .asm_3f0b9 + push bc + ld hl, $c664 + ld a, [CurPartyMon] + ld c, a + ld b, $2 + ld d, $0 + ld a, $3 + call Predef + ld a, c + and a + pop bc + jp z, .asm_3f0b9 + ld hl, $000c + add hl, bc + ld d, h + ld e, l + ld hl, EnemyMonType2 + push bc + ld c, $5 +.asm_3ee7c + inc hl + ld a, [de] + add [hl] + ld [de], a + jr nc, .asm_3ee89 + dec de + ld a, [de] + inc a + jr z, .asm_3eea4 + ld [de], a + inc de + +.asm_3ee89 + push hl + push bc + ld a, $1c + call GetPartyParamLocation + ld a, [hl] + and a + pop bc + pop hl + jr z, .asm_3eea9 + ld a, [de] + add [hl] + ld [de], a + jr nc, .asm_3eea9 + dec de + ld a, [de] + inc a + jr z, .asm_3eea4 + ld [de], a + inc de + jr .asm_3eea9 + +.asm_3eea4 + ld a, $ff + ld [de], a + inc de + ld [de], a + +.asm_3eea9 + inc de + inc de + dec c + jr nz, .asm_3ee7c + xor a + ld [hMultiplicand], a + ld [$ffb5], a + ld a, [EnemyMonBaseExp] + ld [$ffb6], a + ld a, [EnemyMonLevel] + ld [hMultiplier], a + call Multiply + ld a, $7 + ld [hMultiplier], a + ld b, $4 + call Divide + pop bc + ld hl, $0006 + add hl, bc + ld a, [PlayerID] + cp [hl] + jr nz, .asm_3eedd + inc hl + ld a, [$d47c] + cp [hl] + ld a, $0 + jr z, .asm_3eee2 + +.asm_3eedd + call $7106 + ld a, $1 + +.asm_3eee2 + ld [$d088], a + ld a, [IsInBattle] + dec a + call nz, $7106 + push bc + ld a, $1 + call GetPartyParamLocation + ld a, [hl] + cp $7e + call z, $7106 + ld a, [$ffb6] + ld [$d087], a + ld a, [$ffb5] + ld [StringBuffer2], a + ld a, [CurPartyMon] + ld hl, PartyMon1Nickname + call GetNick + ld hl, UnknownText_0x3f11b + call BattleTextBox + ld a, [$d087] + ld [$ffb6], a + ld a, [StringBuffer2] + ld [$ffb5], a + pop bc + call $7136 + push bc + call Function309d + pop bc + ld hl, $000a + add hl, bc + ld d, [hl] + ld a, [$ffb6] + add d + ld [hld], a + ld d, [hl] + ld a, [$ffb5] + adc d + ld [hl], a + jr nc, .asm_3ef3d + dec hl + inc [hl] + jr nz, .asm_3ef3d + ld a, $ff + ld [hli], a + ld [hli], a + ld [hl], a + +.asm_3ef3d + ld a, [CurPartyMon] + ld e, a + ld d, $0 + ld hl, PartySpecies + add hl, de + ld a, [hl] + ld [CurSpecies], a + call GetBaseData + push bc + ld d, $64 + ld hl, $4e47 + ld a, $14 + rst FarCall + pop bc + ld hl, $000a + add hl, bc + push bc + ld a, [hMultiplicand] + ld b, a + ld a, [$ffb5] + ld c, a + ld a, [$ffb6] + ld d, a + ld a, [hld] + sub d + ld a, [hld] + sbc c + ld a, [hl] + sbc b + jr c, .asm_3ef74 + ld a, b + ld [hli], a + ld a, c + ld [hli], a + ld a, d + ld [hld], a + +.asm_3ef74 + xor a + ld [MonType], a + ld a, $1f + call Predef + ld hl, $4e1b + ld a, $14 + rst FarCall + pop bc + ld hl, $001f + add hl, bc + ld a, [hl] + cp $64 + jp nc, .asm_3f0b9 + cp d + jp z, .asm_3f0b9 + ld [$c719], a + ld a, [CurPartyLevel] + push af + ld a, d + ld [CurPartyLevel], a + ld [hl], a + ld hl, $0000 + add hl, bc + ld a, [hl] + ld [CurSpecies], a + ld [$d265], a + call GetBaseData + ld hl, $0025 + add hl, bc + ld a, [hld] + ld e, a + ld d, [hl] + push de + ld hl, $0024 + add hl, bc + ld d, h + ld e, l + ld hl, $000a + add hl, bc + push bc + ld b, $1 + ld a, $c + call Predef + pop bc + pop de + ld hl, $0025 + add hl, bc + ld a, [hld] + sub e + ld e, a + ld a, [hl] + sbc d + ld d, a + dec hl ld a, [hl] - pop bc - pop hl - ret c - - -; If we have, we have to generate new pseudorandom data -; Instead of having multiple PRNGs, ten seeds are used - push hl - push bc - push af - -; Reset count to 0 - xor a - ld [LinkBattleRNCount], a - ld hl, LinkBattleRNs - ld b, 10 ; number of seeds - -; Generate next number in the sequence for each seed -; The algorithm takes the form *5 + 1 % 256 -.loop - ; get last # + add e + ld [hld], a ld a, [hl] - - ; a * 5 + 1 - ld c, a - add a - add a - add c - inc a - - ; update # - ld [hli], a - dec b - jr nz, .loop - -; This has the side effect of pulling the last value first, -; then wrapping around. As a result, when we check to see if -; we've reached the end, we have to take this into account. - pop af + adc d + ld [hl], a + ld a, [CurBattleMon] + ld d, a + ld a, [CurPartyMon] + cp d + jr nz, .asm_3f035 + ld de, BattleMonHP + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + ld de, BattleMonMaxHP + push bc + ld bc, $000c + call CopyBytes pop bc - pop hl - ret -; 3ee0f - -INCBIN "baserom.gbc", $3ee0f, $3ee17 - $3ee0f + ld hl, $001f + add hl, bc + ld a, [hl] + ld [BattleMonLevel], a + ld a, [PlayerSubStatus5] + bit 3, a + jr nz, .asm_3f012 + ld hl, $0026 + add hl, bc + ld de, PlayerStats + ld bc, $000a + call CopyBytes +.asm_3f012 + xor a + ld [$d265], a + call $6cab + ld hl, $6c2c + ld a, $f + rst FarCall + ld hl, $6d45 + ld a, $f + rst FarCall + ld hl, Function3df48 + ld a, $f + rst FarCall + call Function3edd1 + call Function309d + ld a, $1 + ld [hBGMapMode], a -Function3ee17: ; 3ee17 - ld a, e - ld [FXAnimIDLo], a - ld a, d - ld [FXAnimIDHi], a - call WaitBGMap - ld a, $37 - jp Predef -; 3ee27 +.asm_3f035 + ld a, $9 + ld hl, $709e + rst FarCall + ld a, [CurBattleMon] + ld b, a + ld a, [CurPartyMon] + cp b + jr z, .asm_3f057 + ld de, $00b6 + call StartSFX + call WaitSFX + ld hl, $4c9c + call FarBattleTextBox + call Function309d -Function3ee27: ; 3ee27 +.asm_3f057 + xor a + ld [MonType], a + ld a, $1f + call Predef + ld hl, $c4a9 + ld b, $a + ld c, $9 + call TextBox + ld hl, $c4bf + ld bc, $0004 + ld a, $28 + call Predef + ld c, $1e + call DelayFrames + call Functiona80 + call Function30b4 + xor a + ld [MonType], a + ld a, [CurSpecies] + ld [$d265], a + ld a, [CurPartyLevel] push af + ld c, a + ld a, [$c719] + ld b, a + +.asm_3f093 + inc b + ld a, b + ld [CurPartyLevel], a push bc - push de - push hl - ld b, $1 - call GetSGBLayout - call Function32f9 - call DelayFrame - pop hl - pop de + ld a, $1a + call Predef pop bc + ld a, b + cp c + jr nz, .asm_3f093 pop af - ret -; 3ee3b - -INCBIN "baserom.gbc", $3ee3b, $3f0b9 - $3ee3b - + ld [CurPartyLevel], a + ld hl, EvolvableFlags + ld a, [CurPartyMon] + ld c, a + ld b, $1 + ld a, $3 + call Predef + pop af + ld [CurPartyLevel], a -Function3f0b9: ; 3f0b9 +.asm_3f0b9 ld a, [PartyCount] ld b, a ld a, [CurPartyMon] @@ -39190,7 +39682,7 @@ Function3f0b9: ; 3f0b9 call GetPartyParamLocation ld b, h ld c, l - jp $6e50 + jp .asm_3ee50 .asm_3f0d1 jp Function3d57a @@ -39246,18 +39738,41 @@ Function3f106: ; 3f106 ret ; 3f11b -INCBIN "baserom.gbc", $3f11b, $3f136 - $3f11b +UnknownText_0x3f11b: ; 3f11b + text_jump UnknownText_0x1c029c, BANK(UnknownText_0x1c029c) + start_asm + ld hl, UnknownText_0x3f131 + ld a, [$d088] ; IsTradedMon + and a + ret z + ld hl, UnknownText_0x3f12c + ret +; 3f12c + +UnknownText_0x3f12c: ; 3f12c + text_jump UnknownText_0x1c02a9, BANK(UnknownText_0x1c02a9) + db "@" +; 3f131 + +UnknownText_0x3f131: ; 3f131 + text_jump UnknownText_0x1c02c9, BANK(UnknownText_0x1c02c9) + db "@" +; 3f136 Function3f136: ; 3f136 + push bc + ld hl, CurPartyMon ld a, [CurBattleMon] cp [hl] - jp nz, $7219 + jp nz, .asm_3f219 + ld a, [BattleMonLevel] - cp $64 - jp nc, $7219 + cp MAX_LEVEL + jp nc, .asm_3f219 + ld a, [$ffb6] ld [$d004], a push af @@ -39377,6 +39892,8 @@ Function3f136: ; 3f136 ld [$ffb5], a pop af ld [$ffb6], a + +.asm_3f219 pop bc ret ; 3f21b @@ -39443,10 +39960,12 @@ Function3f22c: ; 3f22c Function3f26d: ; 3f26d +; SendOutMonText? + ld a, [InLinkBattle] and a jr z, .asm_3f27c - ld hl, $72d1 + ld hl, UnknownText_0x3f2d1 ld a, [$d264] and a jr nz, .asm_3f2ce @@ -39455,7 +39974,7 @@ Function3f26d: ; 3f26d ld hl, EnemyMonHPHi ld a, [hli] or [hl] - ld hl, $72d1 + ld hl, UnknownText_0x3f2d1 jr z, .asm_3f2ce xor a ld [hMultiplicand], a @@ -39481,7 +40000,7 @@ Function3f26d: ; 3f26d ld [hMultiplier], a call Divide ld a, [$ffb6] - ld hl, $72d1 + ld hl, UnknownText_0x3f2d1 cp $46 jr nc, .asm_3f2ce ld hl, $72d8 @@ -39496,15 +40015,153 @@ Function3f26d: ; 3f26d jp BattleTextBox ; 3f2d1 -INCBIN "baserom.gbc", $3f2d1, $3f2f4 - $3f2d1 + +UnknownText_0x3f2d1: ; 3f2d1 + text_jump UnknownText_0x1c02df, BANK(UnknownText_0x1c02df) + start_asm + jr Function3f2eb +; 3f2d6 + +UnknownText_0x3f2d8: ; 3f2d8 + text_jump UnknownText_0x1c02e6, BANK(UnknownText_0x1c02e6) + start_asm + jr Function3f2eb +; 3f2dd + +UnknownText_0x3f2df: ; 3f2df + text_jump UnknownText_0x1c02f0, BANK(UnknownText_0x1c02f0) + start_asm + jr Function3f2eb +; 3f2e4 + +UnknownText_0x3f2e6: ; 3f2e6 + text_jump UnknownText_0x1c02fe, BANK(UnknownText_0x1c02fe) + start_asm +; 3f2eb + +Function3f2eb: ; 3f2eb + ld hl, UnknownText_0x3f2ef + ret +; 3f2ef + +UnknownText_0x3f2ef: ; 3f2ef + text_jump UnknownText_0x1c0317, BANK(UnknownText_0x1c0317) + db "@" +; 3f2f4 Function3f2f4: ; 3f2f4 - ld hl, $72fa + ld hl, UnknownText_0x3f2fa jp BattleTextBox ; 3f2fa -INCBIN "baserom.gbc", $3f2fa, $3f390 - $3f2fa +UnknownText_0x3f2fa: ; 3f2fa + text_jump UnknownText_0x1c031d, BANK(UnknownText_0x1c031d) + start_asm +; 3f2ff + +Function3f2ff: ; 3f2ff + push de + push bc + ld hl, EnemyMonHPLo + ld de, $c6eb + ld b, [hl] + dec hl + ld a, [de] + sub b + ld [$ffb6], a + dec de + ld b, [hl] + ld a, [de] + sbc b + ld [$ffb5], a + ld a, $19 + ld [hMultiplier], a + call Multiply + ld hl, EnemyMonMaxHPHi + ld a, [hli] + ld b, [hl] + srl a + rr b + srl a + rr b + ld a, b + ld b, $4 + ld [hMultiplier], a + call Divide + pop bc + pop de + ld a, [$ffb6] + ld hl, $7348 + and a + ret z + ld hl, $735b + cp $1e + ret c + ld hl, $734d + cp $46 + ret c + ld hl, $7352 + ret +; 3f348 + +UnknownText_0x3f348: ; 3f348 + text_jump UnknownText_0x1c0324, BANK(UnknownText_0x1c0324) + db "@" +; 3f34d + +UnknownText_0x3f34d: ; 3f34d + text_jump UnknownText_0x1c0340, BANK(UnknownText_0x1c0340) + db "@" +; 3f352 + +UnknownText_0x3f352: ; 3f352 + text_jump UnknownText_0x1c0352, BANK(UnknownText_0x1c0352) + db "@" +; 3f357 + +Function3f357: ; 3f357 + ld hl, UnknownText_0x3f35b + ret +; 3f35b + +UnknownText_0x3f35b: ; 3f35b + text_jump UnknownText_0x1c0366, BANK(UnknownText_0x1c0366) + db "@" +; 3f360 + + +Function3f360: ; 3f360 + ld hl, $c6f0 + ld a, [hl] + and a + jr z, .asm_3f36d + dec [hl] + ld hl, $4cba + jr .asm_3f388 + +.asm_3f36d + dec hl + ld a, [hl] + and a + ret z + dec [hl] + ld hl, $4cd1 + jr nz, .asm_3f388 + push hl + ld a, [EnemyMonSpecies] + ld [CurSpecies], a + call GetBaseData + ld a, [BaseCatchRate] + ld [EnemyMonCatchRate], a + pop hl + +.asm_3f388 + push hl + call Function30b4 + pop hl + jp FarBattleTextBox +; 3f390 Function3f390: ; 3f390 @@ -39711,8 +40368,10 @@ Function3f47c: ; 3f47c ret ; 3f4c1 + INCBIN "baserom.gbc", $3f4c1, $3fa01 - $3f4c1 + GetRoamMonHP: ; 3fa01 ; output: hl = RoamMonCurHP ld a, [TempEnemyMonSpecies] @@ -59256,9 +59915,7 @@ Function100bc2: ; 100bc2 ld [hBGMapMode], a call $4c74 call $4c98 - ld a, $f - ld hl, $66c8 - rst FarCall + callba MoveInfoBox .asm_100bd1 call Function100dd2 callba Function241ba -- cgit v1.2.3 From 7db40e039561f5b7790110afec3b149d5d957303 Mon Sep 17 00:00:00 2001 From: yenatch Date: Mon, 29 Jul 2013 17:53:59 -0400 Subject: no more incbins in bank f --- main.asm | 2472 +++++++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 2228 insertions(+), 244 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index ac7452ee0..86d3ae755 100644 --- a/main.asm +++ b/main.asm @@ -30712,7 +30712,187 @@ SpecialRoamMons: ; 2a2a0 ret ; 2a2ce -INCBIN "baserom.gbc", $2a2ce, $2a5e9 - $2a2ce + +INCBIN "baserom.gbc", $2a2ce, $2a30d - $2a2ce + + +Function2a30d: ; 2a30d + ld a, [RoamMon1MapGroup] + cp $ff + jr z, .asm_2a324 + ld b, a + ld a, [RoamMon1MapNumber] + ld c, a + call $6355 + ld a, b + ld [RoamMon1MapGroup], a + ld a, c + ld [RoamMon1MapNumber], a + +.asm_2a324 + ld a, [RoamMon2MapGroup] + cp $ff + jr z, .asm_2a33b + ld b, a + ld a, [RoamMon2MapNumber] + ld c, a + call $6355 + ld a, b + ld [RoamMon2MapGroup], a + ld a, c + ld [RoamMon2MapNumber], a + +.asm_2a33b + ld a, [RoamMon3MapGroup] + cp $ff + jr z, .asm_2a352 + ld b, a + ld a, [RoamMon3MapNumber] + ld c, a + call $6355 + ld a, b + ld [RoamMon3MapGroup], a + ld a, c + ld [RoamMon3MapNumber], a + +.asm_2a352 + jp Function2a3f6 +; 2a355 + + +Function2a355: ; 2a355 + ld hl, $640f +.asm_2a358 + ld a, [hl] + cp $ff + ret z + ld a, b + cp [hl] + jr nz, .asm_2a365 + inc hl + ld a, c + cp [hl] + jr z, .asm_2a36b + +.asm_2a365 + ld a, [hli] + and a + jr nz, .asm_2a365 + jr .asm_2a358 + +.asm_2a36b + inc hl + ld d, h + ld e, l +.asm_2a36e + ld h, d + ld l, e + call RNG + and $1f + jr z, .asm_2a3cd + and $3 + cp [hl] + jr nc, .asm_2a36e + inc hl + ld c, a + ld b, $0 + add hl, bc + add hl, bc + ld a, [$dfe7] + cp [hl] + jr nz, .asm_2a390 + inc hl + ld a, [$dfe6] + cp [hl] + jr z, .asm_2a36e + dec hl + +.asm_2a390 + ld a, [hli] + ld b, a + ld c, [hl] + ret + + ld a, [RoamMon1MapGroup] + cp $ff + jr z, .asm_2a3a6 + call $63cd + ld a, b + ld [RoamMon1MapGroup], a + ld a, c + ld [RoamMon1MapNumber], a + +.asm_2a3a6 + ld a, [RoamMon2MapGroup] + cp $ff + jr z, .asm_2a3b8 + call $63cd + ld a, b + ld [RoamMon2MapGroup], a + ld a, c + ld [RoamMon2MapNumber], a + +.asm_2a3b8 + ld a, [RoamMon3MapGroup] + cp $ff + jr z, .asm_2a3ca + call $63cd + ld a, b + ld [RoamMon3MapGroup], a + ld a, c + ld [RoamMon3MapNumber], a + +.asm_2a3ca + jp $63f6 + +.asm_2a3cd + ld hl, $640f +.asm_2a3d0 + call RNG + and $f + cp $10 + jr nc, .asm_2a3d0 + inc a + ld b, a +.asm_2a3db + dec b + jr z, .asm_2a3e4 +.asm_2a3de + ld a, [hli] + and a + jr nz, .asm_2a3de + jr .asm_2a3db + +.asm_2a3e4 + ld a, [MapGroup] + cp [hl] + jr nz, .asm_2a3f2 + inc hl + ld a, [MapNumber] + cp [hl] + jr z, .asm_2a3cd + dec hl + +.asm_2a3f2 + ld a, [hli] + ld b, a + ld c, [hl] + ret +; 2a3f6 + +Function2a3f6: ; 2a3f6 + ld a, [$dfe4] + ld [$dfe6], a + ld a, [$dfe5] + ld [$dfe7], a + ld a, [MapNumber] + ld [$dfe4], a + ld a, [MapGroup] + ld [$dfe5], a + ret +; 2a40f + +INCBIN "baserom.gbc", $2a40f, $2a5e9 - $2a40f WildMons1: ; 0x2a5e9 @@ -30734,7 +30914,174 @@ WildMons6: ; 0x2b92f INCLUDE "stats/wild/swarm_water.asm" -INCBIN "baserom.gbc", $2b930, $2ba1a - $2b930 +Function2b930: ; 2b930 + callba UpdateEnemyMonInParty + ld hl, PartyMon1CurHP + call $7995 + push bc + ld hl, OTPartyMon1CurHP + call $7995 + ld a, c + pop bc + cp c + jr z, .asm_2b94c + jr c, .asm_2b97f + jr .asm_2b976 + +.asm_2b94c + call $79e1 + jr z, .asm_2b98a + ld a, e + cp $1 + jr z, .asm_2b976 + cp $2 + jr z, .asm_2b97f + ld hl, PartyMon1CurHP + call $79a6 + push de + ld hl, OTPartyMon1CurHP + call $79a6 + pop hl + ld a, d + cp h + jr c, .asm_2b976 + jr z, .asm_2b970 + jr .asm_2b97f + +.asm_2b970 + ld a, e + cp l + jr z, .asm_2b98a + jr nc, .asm_2b97f + +.asm_2b976 + ld a, [$d0ee] + and $f0 + ld [$d0ee], a + ret + +.asm_2b97f + ld a, [$d0ee] + and $f0 + add $1 + ld [$d0ee], a + ret + +.asm_2b98a + ld a, [$d0ee] + and $f0 + add $2 + ld [$d0ee], a + ret +; 2b995 + +Function2b995: ; 2b995 + ld c, $0 + ld b, $3 + ld de, $002f +.asm_2b99c + ld a, [hli] + or [hl] + jr nz, .asm_2b9a1 + inc c + +.asm_2b9a1 + add hl, de + dec b + jr nz, .asm_2b99c + ret +; 2b9a6 + +Function2b9a6: ; 2b9a6 + ld de, $0000 + ld c, $3 +.asm_2b9ab + ld a, [hli] + or [hl] + jr z, .asm_2b9d7 + dec hl + xor a + ld [hProduct], a + ld a, [hli] + ld [hMultiplicand], a + ld a, [hli] + ld [$ffb5], a + xor a + ld [$ffb6], a + ld a, [hli] + ld b, a + ld a, [hld] + srl b + rr a + srl b + rr a + ld [hMultiplier], a + ld b, $4 + call Divide + ld a, [$ffb6] + add e + ld e, a + ld a, [$ffb5] + adc d + ld d, a + dec hl + +.asm_2b9d7 + push de + ld de, $002f + add hl, de + pop de + dec c + jr nz, .asm_2b9ab + ret +; 2b9e1 + +Function2b9e1: ; 2b9e1 + ld hl, PartyMon1CurHP + call $7a01 + jr nz, .asm_2b9f2 + ld hl, OTPartyMon1CurHP + call $7a01 + ld e, $1 + ret + +.asm_2b9f2 + ld hl, OTPartyMon1CurHP + call $7a01 + ld e, $0 + ret nz + ld e, $2 + ld a, $1 + and a + ret +; 2ba01 + +Function2ba01: ; 2ba01 + ld d, $3 +.asm_2ba03 + ld a, [hli] + ld b, a + ld a, [hli] + ld c, a + or b + jr z, .asm_2ba10 + ld a, [hli] + cp b + ret nz + ld a, [hld] + cp c + ret nz + +.asm_2ba10 + push de + ld de, $002e + add hl, de + pop de + dec d + jr nz, .asm_2ba03 + ret +; 2ba1a + ChrisBackpic: ; 2ba1a INCBIN "gfx/misc/player.lz" @@ -30749,7 +31096,17 @@ INCBIN "gfx/misc/dude.lz" SECTION "bankB",DATA,BANK[$B] -INCBIN "baserom.gbc", $2c000, $2c012 - $2c000 +Function2c000: ; 2c000 + ld a, $e4 + ld [rOBP0], a + call Function2c165 + call $401c + ld a, [IsInBattle] + dec a + ret z + jp $403a +; 2c012 + Function2c012: ; 2c012 @@ -30759,7 +31116,21 @@ Function2c012: ; 2c012 jp $403a ; 2c01c -INCBIN "baserom.gbc", $2c01c, $2c03a - $2c01c +Function2c01c: ; 2c01c + call $40ad + ld hl, PartyMon1CurHP + ld de, PartyCount + call Function2c059 + ld a, $60 + ld hl, $cfc4 + ld [hli], a + ld [hl], a + ld a, $8 + ld [$d003], a + ld hl, Sprites + jp Function2c143 +; 2c03a + Function2c03a: ; 2c03a @@ -32244,20 +32615,174 @@ Function3957b: ; 3957b ; 3959c -INCBIN "baserom.gbc", $3959c, $39939 - $3959c +INCBIN "baserom.gbc", $3959c, $39771 - $3959c -Function39939: ; 39939 +Function39771: ; 39771 ld a, [$cfc0] bit 0, a - ld hl, $d26b - jp nz, $5984 - ld a, [OtherTrainerID] - ld b, a - ld a, [OtherTrainerClass] - ld c, a - ld a, c - cp $c + ret nz + ld a, [InLinkBattle] + and a + ret nz + ld hl, OTPartyCount + xor a + ld [hli], a + dec a + ld [hl], a + ld hl, OTPartyMon1Species + ld bc, $0120 + xor a + call ByteFill + ld a, [OtherTrainerClass] + cp $c + jr nz, .asm_3979e + ld a, [OtherTrainerID] + cp $2 + jr z, .asm_397d3 + ld a, [OtherTrainerClass] + +.asm_3979e + dec a + ld c, a + ld b, $0 + ld hl, TrainerGroups + add hl, bc + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [OtherTrainerID] + ld b, a +.asm_397ae + dec b + jr z, .asm_397b8 +.asm_397b1 + ld a, [hli] + cp $ff + jr nz, .asm_397b1 + jr .asm_397ae + +.asm_397b8 + ld a, [hli] + cp $50 + jr nz, .asm_397b8 + ld a, [hli] + ld c, a + ld b, $0 + ld d, h + ld e, l + ld hl, $57e3 + add hl, bc + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld bc, .data_397d0 + push bc + jp [hl] + +.data_397d0 +.asm_397d0 + db $c3 + db $1b + db $59 + +.asm_397d3 + ld a, $0 + call GetSRAMBank + ld de, $ac0a + call $5806 + call CloseSRAM + jr .asm_397d0 +; 397e3 + +INCBIN "baserom.gbc", $397e3, $39806 - $397e3 + + +Function39806: ; 39806 + ld h, d + ld l, e +.asm_39808 + ld a, [hli] + cp $ff + ret z + ld [CurPartyLevel], a + ld a, [hli] + ld [CurPartySpecies], a + ld a, $1 + ld [MonType], a + push hl + ld a, $6 + call Predef + ld a, [OTPartyCount] + dec a + ld hl, OTPartyMon1Move1 + ld bc, $0030 + call AddNTimes + ld d, h + ld e, l + pop hl + ld b, $4 +.asm_39830 + ld a, [hli] + ld [de], a + inc de + dec b + jr nz, .asm_39830 + push hl + ld a, [OTPartyCount] + dec a + ld hl, OTPartyMon1Species + ld bc, $0030 + call AddNTimes + ld d, h + ld e, l + ld hl, $0017 + add hl, de + push hl + ld hl, $0002 + add hl, de + pop de + ld b, $4 +.asm_39852 + ld a, [hli] + and a + jr z, .asm_3986e + push hl + push bc + dec a + ld hl, $5b00 + ld bc, $0007 + call AddNTimes + ld a, $10 + call GetFarByte + pop bc + pop hl + ld [de], a + inc de + dec b + jr nz, .asm_39852 + +.asm_3986e + pop hl + jr .asm_39808 +; 39871 + +INCBIN "baserom.gbc", $39871, $39939 - $39871 + + +Function39939: ; 39939 + ld a, [$cfc0] + bit 0, a + ld hl, $d26b + jp nz, $5984 + ld a, [OtherTrainerID] + ld b, a + ld a, [OtherTrainerClass] + ld c, a + ld a, c + cp $c jr nz, .asm_3996d ld a, $0 call GetSRAMBank @@ -32545,7 +33070,24 @@ Function3c1bf: ; 3c1bf ret ; 3c1c0 -INCBIN "baserom.gbc", $3c1c0, $3c1d6 - $3c1c0 + +Function3c1c0: ; 3c1c0 + ld a, $5 + call GetSRAMBank + ld hl, $a89b + inc [hl] + jr nz, .asm_3c1d2 + dec hl + inc [hl] + jr nz, .asm_3c1d2 + dec [hl] + inc hl + dec [hl] + +.asm_3c1d2 + call CloseSRAM + ret +; 3c1d6 Function3c1d6: ; 3c1d6 @@ -32557,7 +33099,7 @@ Function3c1d6: ; 3c1d6 call $4a26 call $423c ret c - call $4b9e + call HandleWeather call $423c ret c call $4874 @@ -32574,7 +33116,7 @@ Function3c1d6: ; 3c1d6 call $4a26 call $425c ret c - call $4b9e + call HandleWeather call $425c ret c call $4874 @@ -33051,83 +33593,124 @@ Function3c4df: ; 3c4df jp FarBattleTextBox ; 3c543 + Function3c543: ; 3c543 ld a, [IsInBattle] dec a - jr nz, .asm_3c596 + jr nz, .Stay + ld a, [PlayerSubStatus5] bit 7, a - jr nz, .asm_3c596 + jr nz, .Stay + ld a, [$c731] and a - jr nz, .asm_3c596 + jr nz, .Stay + ld a, [EnemyMonStatus] - and $27 - jr nz, .asm_3c596 + and 1 << FRZ | SLP + jr nz, .Stay + ld a, [TempEnemyMonSpecies] - ld de, $0001 - ld hl, $45b1 + ld de, 1 + ld hl, .Always call IsInArray - jr c, .asm_3c598 + jr c, .Flee + call FarBattleRNG ld b, a cp $80 - jr nc, .asm_3c596 + jr nc, .Stay + push bc ld a, [TempEnemyMonSpecies] - ld de, $0001 - ld hl, $45a8 + ld de, 1 + ld hl, .Often call IsInArray pop bc - jr c, .asm_3c598 + jr c, .Flee + ld a, b cp $1a - jr nc, .asm_3c596 + jr nc, .Stay + ld a, [TempEnemyMonSpecies] - ld de, $0001 - ld hl, $459a + ld de, 1 + ld hl, .Sometimes call IsInArray - jr c, .asm_3c598 + jr c, .Flee -.asm_3c596 +.Stay and a ret -.asm_3c598 +.Flee scf ret ; 3c59a -INCBIN "baserom.gbc", $3c59a, $3c5b4 - $3c59a +.Sometimes + db MAGNEMITE + db GRIMER + db TANGELA + db MR__MIME + db EEVEE + db PORYGON + db DRATINI + db DRAGONAIR + db TOGETIC + db UMBREON + db UNOWN + db SNUBBULL + db HERACROSS + db $ff + +.Often + db CUBONE + db ARTICUNO + db ZAPDOS + db MOLTRES + db QUAGSIRE + db DELIBIRD + db PHANPY + db TEDDIURSA + db $ff + +.Always + db RAIKOU + db ENTEI +; db SUICUNE + db $ff +; 3c5b4 Function3c5b4: ; 3c5b4 ld a, [CurPlayerMove] - call $45c5 + call GetMovePriority ld b, a push bc ld a, [CurEnemyMove] - call $45c5 + call GetMovePriority pop bc cp b ret ; 3c5c5 -Function3c5c5: ; 3c5c5 +GetMovePriority: ; 3c5c5 ld b, a - cp $e9 - ld a, $0 + cp VITAL_THROW + ld a, 0 ret z call Function3c5ec - ld hl, $45df -.asm_3c5d1 + ld hl, .data_3c5df +.loop ld a, [hli] cp b jr z, .asm_3c5dd inc hl cp $ff - jr nz, .asm_3c5d1 - ld a, $1 + jr nz, .loop + ld a, 1 ret .asm_3c5dd @@ -33135,7 +33718,15 @@ Function3c5c5: ; 3c5c5 ret ; 3c5df -INCBIN "baserom.gbc", $3c5df, $3c5ec - $3c5df +.data_3c5df + db EFFECT_PROTECT, 3 + db EFFECT_ENDURE, 3 + db EFFECT_PRIORITY_HIT, 2 + db EFFECT_WHIRLWIND, 0 + db EFFECT_COUNTER, 0 + db EFFECT_MIRROR_COAT, 0 + db $ff +; 3c5ec Function3c5ec: ; 3c5ec @@ -33880,101 +34471,114 @@ Function3cafb: ; 3cafb jp FarBattleTextBox ; 3cb36 + Function3cb36: ; 3cb36 ld a, [$ffcb] - cp $1 - jr z, .asm_3cb41 - call $4b44 - jr .asm_3cb55 + cp 1 + jr z, .Both + call .CheckPlayer + jr .CheckEnemy -.asm_3cb41 - call $4b55 +.Both + call .CheckEnemy + +.CheckPlayer call SetPlayerTurn - ld de, $4b75 - call $4b6f + ld de, .Your + call .asm_3cb6f ld hl, PlayerScreens ld de, PlayerLightScreenCount - jr .asm_3cb64 + jr .FadeScreens -.asm_3cb55 +.CheckEnemy call SetEnemyTurn - ld de, $4b7a - call $4b6f + ld de, .Enemy + call .asm_3cb6f ld hl, EnemyScreens ld de, EnemyLightScreenCount -.asm_3cb64 - bit 3, [hl] - call nz, $4b80 - bit 4, [hl] - call nz, $4b91 +.FadeScreens + bit SCREENS_LIGHT_SCREEN, [hl] + call nz, FadeLightScreen + bit SCREENS_REFLECT, [hl] + call nz, FadeReflect ret -; 3cb6f -Function3cb6f: ; 3cb6f +.asm_3cb6f ld hl, StringBuffer1 jp CopyName2 ; 3cb75 -INCBIN "baserom.gbc", $3cb75, $3cb80 - $3cb75 +.Your + db "Your@" +.Enemy + db "Enemy@" +; 3cb80 -Function3cb80: ; 3cb80 +FadeLightScreen: ; 3cb80 ld a, [de] dec a ld [de], a ret nz - res 3, [hl] + res SCREENS_LIGHT_SCREEN, [hl] push hl push de - ld hl, $48e7 + ld hl, BattleText_0x808e7 call FarBattleTextBox pop de pop hl ret ; 3cb91 -Function3cb91: ; 3cb91 +FadeReflect: ; 3cb91 inc de ld a, [de] dec a ld [de], a ret nz - res 4, [hl] - ld hl, $4905 + res SCREENS_REFLECT, [hl] + ld hl, BattleText_0x80905 jp FarBattleTextBox ; 3cb9e -Function3cb9e: ; 3cb9e +HandleWeather: ; 3cb9e + ld a, [Weather] - cp $0 + cp 0 ret z + ld hl, WeatherCount dec [hl] jr z, .asm_3cc13 - ld hl, $4c2d - call $4c1e + + ld hl, .WeatherMessages + call .asm_3cc1e ld a, [Weather] - cp $3 + cp WEATHER_SANDSTORM ret nz ld a, [$ffcb] - cp $1 + cp 1 jr z, .asm_3cbc7 + +; Player first call SetPlayerTurn - call $4bd0 + call .asm_3cbd0 call SetEnemyTurn jr .asm_3cbd0 .asm_3cbc7 +; Enemy first call SetEnemyTurn - call $4bd0 + call .asm_3cbd0 call SetPlayerTurn .asm_3cbd0 - ld a, $2 + ld a, BATTLE_VARS_SUBSTATUS3 call CleanGetBattleVarPair - bit 5, a + bit SUBSTATUS_UNDERGROUND, a ret nz + ld hl, BattleMonType1 ld a, [hBattleTurn] and a @@ -33983,19 +34587,21 @@ Function3cb9e: ; 3cb9e .asm_3cbe3 ld a, [hli] - cp $5 + cp ROCK ret z - cp $4 + cp GROUND ret z - cp $9 + cp STEEL ret z + ld a, [hl] - cp $5 + cp ROCK ret z - cp $4 + cp GROUND ret z - cp $9 + cp STEEL ret z + call $48e4 xor a ld [$cfca], a @@ -34004,22 +34610,22 @@ Function3cb9e: ; 3cb9e call $48e4 call GetEighthMaxHP call $4c3f - ld hl, $484d + + ld hl, BattleText_0x8084d jp FarBattleTextBox .asm_3cc13 - ld hl, $4c33 - call $4c1e + ld hl, .WeatherEndedMessages + call .asm_3cc1e xor a ld [Weather], a ret -; 3cc1e -Function3cc1e: ; 3cc1e +.asm_3cc1e ld a, [Weather] dec a ld c, a - ld b, $0 + ld b, 0 add hl, bc add hl, bc ld a, [hli] @@ -34028,8 +34634,15 @@ Function3cc1e: ; 3cc1e jp FarBattleTextBox ; 3cc2d -INCBIN "baserom.gbc", $3cc2d, $3cc39 - $3cc2d - +.WeatherMessages + dw BattleText_0x8091f + dw BattleText_0x80938 + dw BattleText_0x80951 +.WeatherEndedMessages + dw BattleText_0x80967 + dw BattleText_0x8097a + dw BattleText_0x8098f +; 3cc39 Function3cc39: ; 3cc39 call $4c45 @@ -34145,7 +34758,7 @@ GetHalfMaxHP: ; 3cc9f GetMaxHP: ; 3ccac -; output: bc, MagikarpLength-b +; output: bc, Buffer1-2 ; player ld hl, BattleMonMaxHP @@ -34164,17 +34777,51 @@ GetMaxHP: ; 3ccac ld b, a ld a, [hl] - ld [MagikarpLength], a + ld [Buffer1], a ld c, a ret ; 3ccc2 +Function3ccc2: ; 3ccc2 + ld hl, BattleMonHP + ld a, [hBattleTurn] + and a + jr z, .asm_3cccd + ld hl, EnemyMonHP + +.asm_3cccd + ld a, [hli] + ld b, a + ld a, [hli] + ld c, a + srl b + rr c + ld a, [hli] + ld [Buffer2], a + ld a, [hl] + ld [Buffer1], a + ret +; 3ccde + +Function3ccde: ; 3ccde + ld hl, BattleMonHP + 1 + ld a, [hBattleTurn] + and a + jr z, .asm_3cce9 + ld hl, EnemyMonHP + 1 -INCBIN "baserom.gbc", $3ccc2, $3ccef - $3ccc2 +.asm_3cce9 + ld a, c + sub [hl] + dec hl + ld a, b + sbc [hl] + ret +; 3ccef Function3ccef: ; 3ccef - ld hl, EnemyMonMaxHPHi + ld hl, EnemyMonMaxHP ld a, [hBattleTurn] and a jr z, .asm_3ccfa @@ -34184,7 +34831,7 @@ Function3ccef: ; 3ccef ld a, [hli] ld [Buffer2], a ld a, [hld] - ld [MagikarpLength], a + ld [Buffer1], a dec hl ld a, [hl] ld [$d1ec], a @@ -34196,7 +34843,7 @@ Function3ccef: ; 3ccef adc b ld [hli], a ld [$d1ef], a - ld a, [MagikarpLength] + ld a, [Buffer1] ld c, a ld a, [hld] sub c @@ -34214,7 +34861,7 @@ Function3ccef: ; 3ccef .asm_3cd2d call $48e4 - call $4d36 + call Function3cd36 jp $48e4 ; 3cd36 @@ -34224,7 +34871,6 @@ Function3cd36: ; 3cd36 ; 3cd3c - Function3cd3c: ; 3cd3c ld hl, $c55e ld a, [hBattleTurn] @@ -34495,7 +35141,7 @@ Function3cef1: ; 3cef1 ld hl, $c535 ld bc, $050b call ClearBox - ld hl, $4a75 + ld hl, BattleText_0x80a75 jp FarBattleTextBox ; 3cf14 @@ -34509,7 +35155,7 @@ Function3cf14: ; 3cf14 ld hl, $c4a1 ld bc, $040a call ClearBox - ld hl, $49a8 + ld hl, BattleText_0x809a8 jp FarBattleTextBox ; 3cf35 @@ -34594,7 +35240,7 @@ Function3cfa4: ; 3cfa4 ld a, b call z, $50ea callab Function39939 - ld hl, $49da + ld hl, BattleText_0x809da call FarBattleTextBox call Function3d2f1 jr z, .asm_3cff5 @@ -34695,10 +35341,10 @@ Function3d02b: ; 3d02b ld a, [$d854] and $7 jr z, .asm_3d07b - ld hl, $50ab + ld hl, SentToMomTexts dec a ld c, a - ld b, $0 + ld b, 0 add hl, bc add hl, bc ld a, [hli] @@ -34707,7 +35353,7 @@ Function3d02b: ; 3d02b jp FarBattleTextBox .asm_3d07b - ld hl, $49be + ld hl, BattleText_0x809be jp FarBattleTextBox ; 3d081 @@ -34744,7 +35390,11 @@ Function3d099: ; 3d099 ret ; 3d0ab -INCBIN "baserom.gbc", $3d0ab, $3d0b1 - $3d0ab +SentToMomTexts: ; 3d0ab + dw BattleText_0x809fc + dw BattleText_0x80a2a + dw BattleText_0x80a3d +; 3d0b1 Function3d0b1: ; 3d0b1 @@ -34797,10 +35447,10 @@ Function3d0be: ; 3d0be Function3d0ea: ; 3d0ea push de - ld de, $0000 + ld de, MUSIC_NONE call StartMusic call DelayFrame - ld de, $0018 + ld de, MUSIC_WILD_VICTORY ld a, [IsInBattle] dec a jr nz, .asm_3d113 @@ -34818,10 +35468,10 @@ Function3d0ea: ; 3d0ea jr .asm_3d11e .asm_3d113 - ld de, $0019 + ld de, MUSIC_GYM_VICTORY call IsJohtoGymLeader jr c, .asm_3d11e - ld de, $0017 + ld de, MUSIC_TRAINER_VICTORY .asm_3d11e call StartMusic @@ -34983,7 +35633,7 @@ Function3d1f8: ; 3d1f8 and a dec a ret nz - ld hl, $4a83 + ld hl, BattleText_0x80a83 call FarBattleTextBox .asm_3d20a ld bc, $0107 @@ -35158,7 +35808,7 @@ Function3d34f: ; 3d34f ld a, [CurPartyMon] cp [hl] jr nz, .asm_3d360 - ld hl, $4c0d + ld hl, BattleText_0x80c0d call FarBattleTextBox scf ret @@ -35192,7 +35842,16 @@ Function3d375: ; 3d375 ret ; 3d380 -INCBIN "baserom.gbc", $3d380, $3d38e - $3d380 +Function3d380: ; 3d380 +.asm_3d380 + call $5362 + call Function3d2e0 + ret c + call Function3d34f + jr c, .asm_3d380 + xor a + ret +; 3d38e LostBattle: ; 3d38e @@ -35327,7 +35986,7 @@ Function3d444: ; 3d444 call CopyBytes pop de pop hl - ld bc, $ffec + ld bc, -20 add hl, bc push hl ld h, d @@ -35339,11 +35998,11 @@ Function3d444: ; 3d444 pop bc dec b jr nz, .asm_3d454 - ld bc, $0014 + ld bc, 20 add hl, bc - ld de, $5488 + ld de, .Spaces call PlaceString - ld c, $2 + ld c, 2 call DelayFrames pop hl pop de @@ -35355,7 +36014,9 @@ Function3d444: ; 3d444 ret ; 3d488 -INCBIN "baserom.gbc", $3d488, $3d490 - $3d488 +.Spaces + db " @" +; 3d490 Function3d490: ; 3d490 @@ -35369,11 +36030,11 @@ Function3d490: ; 3d490 push hl call $54ae pop hl - ld de, $0014 + ld de, 20 add hl, de dec b jr nz, .asm_3d497 - ld c, $2 + ld c, 2 call DelayFrames pop hl pop bc @@ -35404,7 +36065,21 @@ Function3d4ae: ; 3d4ae ret ; 3d4c3 -INCBIN "baserom.gbc", $3d4c3, $3d4e1 - $3d4c3 + +Function3d4c3: ; 3d4c3 + call Function3d557 + ld a, [$c718] + dec a + ld b, a + call Function3d6ca + call Function3d7a0 + call Function3d834 + call Function3d867 + call Function3d7c7 + call Function3dc18 + call Function3d57a + ret +; 3d4e1 Function3d4e1: ; 3d4e1 @@ -35772,7 +36447,7 @@ Function3d74b: ; 3d74b ld a, [CurPartyMon] push af callab Function39939 - ld hl, $4aca + ld hl, BattleText_0x80aca call FarBattleTextBox ld bc, $0107 call $1dd2 @@ -35823,7 +36498,7 @@ Function3d7a0: ; 3d7a0 Function3d7b8: ; 3d7b8 callab Function39939 - ld hl, $4af8 + ld hl, BattleText_0x80af8 call FarBattleTextBox jp WaitBGMap ; 3d7c7 @@ -35951,9 +36626,9 @@ Function3d887: ; 3d887 add hl, bc ld a, [hl] cp $fd - ld hl, $4b26 + ld hl, BattleText_0x80b26 jr z, .asm_3d8ae - ld hl, $4b0b + ld hl, BattleText_0x80b0b .asm_3d8ae call FarBattleTextBox @@ -36002,7 +36677,7 @@ Function3d8b3: ; 3d8b3 jr nz, .asm_3d916 call SetPlayerTurn call GetItemName - ld hl, $4b89 + ld hl, BattleText_0x80b89 call FarBattleTextBox jp $59a2 @@ -36069,13 +36744,13 @@ Function3d8b3: ; 3d8b3 jr nc, .asm_3d9a2 ld a, $1 ld [$d0ec], a - ld hl, $4b3b + ld hl, BattleText_0x80b3b jr .asm_3d995 - ld hl, $4ba0 + ld hl, BattleText_0x80ba0 jr .asm_3d995 - ld hl, $4b49 + ld hl, BattleText_0x80b49 .asm_3d995 call FarBattleTextBox @@ -36119,7 +36794,7 @@ Function3d8b3: ; 3d8b3 call WaitPlaySFX pop de call WaitSFX - ld hl, $4b77 + ld hl, BattleText_0x80b77 call FarBattleTextBox call WaitSFX call Function309d @@ -36233,7 +36908,6 @@ Function3dab1: ; 3dab1 ; 3dabd - Function3dabd: ; 3dabd ld a, [CurPartyMon] ld hl, OTPartyMon1Species @@ -36287,7 +36961,26 @@ Function3dabd: ; 3dabd ret ; 3db32 -INCBIN "baserom.gbc", $3db32, $3db5f - $3db32 + +Function3db32: ; 3db32 + call ClearSprites + ld a, [CurBattleMon] + ld [$c71a], a + ld a, [CurPartyMon] + ld [CurBattleMon], a + call $5581 + call Function3da0d + call Function3dab1 + call Function3dbde + call Function3dc18 + call Function3db5f + call Function3edd1 + call Function309d + ld hl, EnemyMonHPHi + ld a, [hli] + or [hl] + ret +; 3db5f Function3db5f: ; 3db5f @@ -36407,7 +37100,7 @@ Function3dc23: ; 3dc23 cp $2 ret z push bc - ld hl, $4bae + ld hl, BattleText_0x80bae call FarBattleTextBox call GetEighthMaxHP call $4c39 @@ -36467,7 +37160,7 @@ Function3dc5b: ; 3dc5b ld a, $3 call Predef call $543b - ld hl, $4a75 + ld hl, BattleText_0x80a75 jr .asm_3dcdf .asm_3dcc0 @@ -36482,7 +37175,7 @@ Function3dc5b: ; 3dc5b call StartSFX call WaitSFX call $5432 - ld hl, $49a8 + ld hl, BattleText_0x809a8 .asm_3dcdf call FarBattleTextBox @@ -36531,11 +37224,99 @@ Function3dcf9: ; 3dcf9 jp $5e51 ; 3dd2f -INCBIN "baserom.gbc", $3dd2f, $3ddc2 - $3dd2f +Function3dd2f: ; 3dd2f + callab GetOpponentItem + ld a, b + cp $1 + ret nz + ld de, EnemyMonHPLo + ld hl, EnemyMonMaxHPHi + ld a, [hBattleTurn] + and a + jr z, .asm_3dd4a + ld de, $c63d + ld hl, BattleMonMaxHP + +.asm_3dd4a + push bc + ld a, [de] + ld [$d1ec], a + add a + ld c, a + dec de + ld a, [de] + inc de + ld [$d1ed], a + adc a + ld b, a + ld a, b + cp [hl] + ld a, c + pop bc + jr z, .asm_3dd62 + jr c, .asm_3dd66 + ret + +.asm_3dd62 + inc hl + cp [hl] + dec hl + ret nc + +.asm_3dd66 + call $5dc8 + ld a, [hli] + ld [Buffer2], a + ld a, [hl] + ld [MagikarpLength], a + ld a, [de] + add c + ld [$d1ee], a + ld c, a + dec de + ld a, [de] + adc $0 + ld [$d1ef], a + ld b, a + ld a, [hld] + cp c + ld a, [hl] + sbc b + jr nc, .asm_3dd8d + ld a, [hli] + ld [$d1ef], a + ld a, [hl] + ld [$d1ee], a + +.asm_3dd8d + ld a, [$d1ef] + ld [de], a + inc de + ld a, [$d1ee] + ld [de], a + ld a, [hBattleTurn] + ld [$d10a], a + and a + ld hl, $c4ca + jr z, .asm_3dda4 + ld hl, $c55e +.asm_3dda4 + ld [$d10a], a + ld a, $b + call Predef + call RefreshBattleHuds + callab GetOpponentItem + ld a, [hl] + ld [$d265], a + call GetItemName + ld hl, $7192 + ld a, $9 + rst FarCall ld hl, RecoveredUsingText jp FarBattleTextBox -; 0x3ddc8 +; 3ddc8 + Function3ddc8: ; 3ddc8 push hl @@ -36559,7 +37340,7 @@ Function3ddc8: ; 3ddc8 Function3dde9: ; 3dde9 callab GetOpponentItem - ld hl, $5e44 + ld hl, .Statuses .asm_3ddf2 ld a, [hli] cp $ff @@ -36612,7 +37393,15 @@ Function3dde9: ; 3dde9 ret ; 3de44 -INCBIN "baserom.gbc", $3de44, $3de51 - $3de44 +.Statuses ; 3de44 + db HELD_HEAL_POISON, 1 << PSN + db HELD_HEAL_FREEZE, 1 << FRZ + db HELD_HEAL_BURN, 1 << BRN + db HELD_HEAL_SLEEP, SLP + db HELD_HEAL_PARALYZE, 1 << PAR + db HELD_HEAL_STATUS, 1 << PSN | 1 << FRZ | 1 << BRN | SLP | 1 << PAR + db $ff +; 3de51 Function3de51: ; 3de51 @@ -36635,7 +37424,7 @@ Function3de51: ; 3de51 res 7, [hl] call GetItemName call $5dc8 - ld hl, $4dab + ld hl, BattleText_0x80dab call FarBattleTextBox ld a, [hBattleTurn] and a @@ -36686,7 +37475,7 @@ Function3deb1: ; 3deb1 ld a, [bc] ld b, a callab GetItem - ld hl, $5efc + ld hl, .data_3defc .asm_3dec7 ld a, [hli] cp $ff @@ -36715,7 +37504,7 @@ Function3deb1: ; 3deb1 ld [bc], a ld [de], a call GetItemName - ld hl, $4bde + ld hl, BattleText_0x80bde call FarBattleTextBox callab BattleCommand8c ret @@ -36726,7 +37515,16 @@ Function3deb1: ; 3deb1 ret ; 3defc -INCBIN "baserom.gbc", $3defc, $3df12 - $3defc +.data_3defc + dbw $1f, $61ac + dbw $20, $61b0 + dbw $21, $61b4 + dbw $22, $61b8 + dbw $23, $61bc + dbw $24, $61c0 + dbw $25, $61c4 + db $ff +; 3df12 Function3df12: ; 3df12 @@ -37197,7 +37995,7 @@ Function3e1c7: ; 3e1c7 ; 3e22b Function3e22b: ; 3e22b - ld hl, $4bf3 + ld hl, BattleText_0x80bf3 call FarBattleTextBox jp $6139 ; 3e234 @@ -37352,7 +38150,7 @@ Function3e358: ; 3e358 ld a, [CurPartyMon] cp d jr nz, .asm_3e36b - ld hl, $4c0d + ld hl, BattleText_0x80c0d call FarBattleTextBox jp $6299 @@ -37365,7 +38163,7 @@ Function3e358: ; 3e358 jr z, .asm_3e381 .asm_3e378 - ld hl, $4c22 + ld hl, BattleText_0x80c22 call FarBattleTextBox jp $6299 @@ -37719,7 +38517,7 @@ Function3e4bc: ; 3e4bc ret .asm_3e60b - ld hl, $4c5b + ld hl, BattleText_0x80c5b jr .asm_3e613 .asm_3e610 @@ -37974,7 +38772,7 @@ Function3e786: ; 3e786 ret nz .asm_3e7b4 - ld hl, $4c72 + ld hl, BattleText_0x80c72 call FarBattleTextBox ld c, $3c call DelayFrames @@ -39617,7 +40415,7 @@ Function3ee3b: ; 3ee3b ld de, $00b6 call StartSFX call WaitSFX - ld hl, $4c9c + ld hl, BattleText_0x80c9c call FarBattleTextBox call Function309d @@ -39870,7 +40668,7 @@ Function3f136: ; 3f136 ld hl, $679d rst FarCall call WaitSFX - ld hl, $4c9c + ld hl, BattleText_0x80c9c call FarBattleTextBox pop de inc e @@ -40137,7 +40935,7 @@ Function3f360: ; 3f360 and a jr z, .asm_3f36d dec [hl] - ld hl, $4cba + ld hl, BattleText_0x80cba jr .asm_3f388 .asm_3f36d @@ -40146,7 +40944,7 @@ Function3f360: ; 3f360 and a ret z dec [hl] - ld hl, $4cd1 + ld hl, BattleText_0x80cd1 jr nz, .asm_3f388 push hl ld a, [EnemyMonSpecies] @@ -40324,92 +41122,1062 @@ Function3f43d: ; 3f43d ld a, [hBattleTurn] push af xor a - ld [hBattleTurn], a - ld a, $33 + ld [hBattleTurn], a + ld a, $33 + rst FarCall + pop af + ld [hBattleTurn], a + ret +; 3f47c + +Function3f47c: ; 3f47c + ld a, [EnemySubStatus4] + bit 4, a + ld hl, $4640 + jr nz, .asm_3f4b4 + ld a, [$c6fa] + and a + ld hl, $46cf + jr nz, .asm_3f4b4 + ld a, [CurPartySpecies] + push af + ld a, [EnemyMonSpecies] + ld [CurSpecies], a + ld [CurPartySpecies], a + call GetBaseData + ld hl, EnemyMonAtkDefDV + ld a, $2d + call Predef + ld de, VTiles2 + ld a, $3e + call Predef + pop af + ld [CurPartySpecies], a + ret + +.asm_3f4b4 + ld a, [hBattleTurn] + push af + call SetEnemyTurn + ld a, $33 + rst FarCall + pop af + ld [hBattleTurn], a + ret +; 3f4c1 + + +Function3f4c1: ; 3f4c1 + ld a, [PartyCount] + and a + ret z + ld a, [TimeOfDayPal] + push af + call $74dd + call $4000 + call $769e + pop af + ld [TimeOfDayPal], a + scf + ret +; 3f4d9 + + +Function3f4d9: ; 3f4d9 + call Function3c000 + ret +; 3f4dd + + +Function3f4dd: ; 3f4dd + ld a, $41 + ld hl, $6050 + rst FarCall + call $754e + xor a + ld [TempBattleMonSpecies], a + ld [$d0d2], a + xor a + ld [$ffde], a + callba PlayBattleMusic + callba Function2ee18 + callba Function2ee2f + call Function2ed3 + callba ClearBattleRAM + call $755e + call $7568 + ld b, $0 + call GetSGBLayout + ld hl, rLCDC + res 6, [hl] + call $7b6c + call $7c8b + ld hl, rLCDC + set 6, [hl] + xor a + ld [hBGMapMode], a + call Function3edd1 + ld hl, $c535 + ld bc, $050b + call ClearBox + ld hl, $c4a1 + ld bc, $040a + call ClearBox + call ClearSprites + ld a, [IsInBattle] + cp $1 + call z, Function3e036 + ld a, $1 + ld [hBGMapMode], a + ret +; 3f54e + +Function3f54e: ; 3f54e + ld a, [OtherTrainerClass] + and a + jr nz, .asm_3f55a + ld a, [$d22e] + ld [CurPartySpecies], a + +.asm_3f55a + ld [TempEnemyMonSpecies], a + ret +; 3f55e + +Function3f55e: ; 3f55e + ld a, [OtherTrainerClass] + and a + jp nz, $7594 + jp $7607 +; 3f568 + +Function3f568: ; 3f568 + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + ld hl, $d000 + ld bc, VBlank5 + ld a, $2 + call ByteFill + ld a, [rVBK] + push af + ld a, $1 + ld [rVBK], a + ld de, $d000 + ld hl, VBGMap0 + ld bc, $0f40 + call Functioneba + pop af + ld [rVBK], a + pop af + ld [rSVBK], a + ret +; 3f594 + +Function3f594: ; 3f594 + ld [TrainerClass], a + ld a, $41 + ld hl, $606a + rst FarCall + xor a + ld [TempEnemyMonSpecies], a + ld hl, $557b + ld a, $e + rst FarCall + ld hl, $5771 + ld a, $e + rst FarCall + ld a, [TrainerClass] + cp $9 + jr nz, .asm_3f5b8 + xor a + ld [OTPartyMon1Item], a + +.asm_3f5b8 + ld de, VTiles2 + ld hl, $520d + ld a, $14 + rst FarCall + xor a + ld [$ffad], a + dec a + ld [$c6e6], a + ld hl, $c4ac + ld bc, $0707 + ld a, $13 + call Predef + ld a, $ff + ld [CurOTMon], a + ld a, $2 + ld [IsInBattle], a + call IsJohtoGymLeader + jr nc, .asm_3f606 + xor a + ld [CurPartyMon], a + ld a, [PartyCount] + ld b, a +.asm_3f5ea + push bc + ld a, $22 + call GetPartyParamLocation + ld a, [hli] + or [hl] + jr z, .asm_3f5fc + ld c, $4 + callab Function71c2 + +.asm_3f5fc + pop bc + dec b + jr z, .asm_3f606 + ld hl, CurPartyMon + inc [hl] + jr .asm_3f5ea + +.asm_3f606 + ret +; 3f607 + +Function3f607: ; 3f607 + ld a, $1 + ld [IsInBattle], a + ld a, $41 + ld hl, $605d + rst FarCall + call LoadEnemyMon + ld hl, EnemyMonMove1 + ld de, $c735 + ld bc, $0004 + call CopyBytes + ld hl, EnemyMonPPMove1 + ld de, $c739 + ld bc, $0004 + call CopyBytes + ld hl, EnemyMonAtkDefDV + ld a, $2d + call Predef + ld a, [CurPartySpecies] + cp $c9 + jr nz, .asm_3f648 + ld a, [$def4] + and a + jr nz, .asm_3f648 + ld a, [UnownLetter] + ld [$def4], a + +.asm_3f648 + ld de, VTiles2 + ld a, $3e + call Predef + xor a + ld [TrainerClass], a + ld [$ffad], a + ld hl, $c4ac + ld bc, $0707 + ld a, $13 + call Predef + ret +; 3f662 + +Function3f662: ; 3f662 + ld hl, EnemyMonMove1 + ld de, $d25e + ld b, $4 +.asm_3f66a + ld a, [de] + inc de + ld [hli], a + and a + jr z, .asm_3f690 + push bc + push hl + push hl + dec a + ld hl, $5b00 + ld bc, $0007 + call AddNTimes + ld a, $10 + call GetFarByte + pop hl + ld bc, $0005 + add hl, bc + ld [hl], a + pop hl + pop bc + dec b + jr nz, .asm_3f66a + ret + +.asm_3f68e + xor a + ld [hli], a + +.asm_3f690 + push bc + push hl + ld bc, $0005 + add hl, bc + xor a + ld [hl], a + pop hl + pop bc + dec b + jr nz, .asm_3f68e + ret +; 3f69e + + +Function3f69e: ; 3f69e + call $76a5 + call $76d0 + ret +; 3f6a5 + +Function3f6a5: ; 3f6a5 + ld a, [InLinkBattle] + and a + jr z, .asm_3f6b7 + call $7759 + ld c, $96 + call DelayFrames + call $777c + ret + +.asm_3f6b7 + ld a, [$d0ee] + and $f + ret nz + call $771d + xor a + ld [$d1e9], a + ld a, $1c + call Predef + callba Function2ed44 + ret +; 3f6d0 + +Function3f6d0: ; 3f6d0 + call $7998 + xor a + ld [Danger], a + ld [IsInBattle], a + ld [BattleType], a + ld [AttackMissed], a + ld [$d22e], a + ld [OtherTrainerClass], a + ld [$d266], a + ld [$d267], a + ld [$d232], a + ld [$d0d8], a + ld [$d0da], a + ld [$d0d9], a + ld [$d0d2], a + ld [CurMoveNum], a + ld [$d0db], a + ld [$d0d6], a + ld [$d0e4], a + ld [$d0e0], a + ld [$d0df], a + ld [$d0e1], a + ld hl, PlayerSubStatus1 + ld b, $18 +.asm_3f715 + ld [hli], a + dec b + jr nz, .asm_3f715 + call WaitSFX + ret +; 3f71d + +Function3f71d: ; 3f71d + ld hl, $c6ec + ld a, [hli] + or [hl] + inc hl + or [hl] + ret z + ld a, [$c73d] + and a + jr z, .asm_3f73d + ld hl, $c6ee + sla [hl] + dec hl + rl [hl] + dec hl + rl [hl] + jr nc, .asm_3f73d + ld a, $ff + ld [hli], a + ld [hli], a + ld [hl], a + +.asm_3f73d + ld hl, $c6ee + ld de, $d850 + call $50be + ld hl, BattleText_0x80730 + call FarBattleTextBox + ld a, [$cfc0] + bit 0, a + ret z + call ClearTileMap + call WhiteBGMap + ret +; 3f759 + +Function3f759: ; 3f759 + ld a, $41 + ld hl, $60df + rst FarCall + callba Function106187 + ld a, [CurOTMon] + ld hl, OTPartyMon1Status + call GetPartyLocation + ld a, [EnemyMonStatus] + ld [hl], a + call ClearTileMap + callba Function2c1b2 + ret +; 3f77c + +Function3f77c: ; 3f77c + callba Function3d2e0 + jp c, $780f + call $7830 + jr nz, .asm_3f797 + ld hl, $cd2a + bit 4, [hl] + jr z, .asm_3f797 + ld a, $a + ld hl, $7930 + rst FarCall + +.asm_3f797 + ld a, [$d0ee] + and $f + cp $1 + jr c, .asm_3f7ad + jr z, .asm_3f7b8 + ld a, $41 + ld hl, $6107 + rst FarCall + ld de, .Draw + jr .asm_3f7c3 + +.asm_3f7ad + ld a, $41 + ld hl, $60fb + rst FarCall + ld de, .Win + jr .asm_3f7c3 + +.asm_3f7b8 + ld a, $41 + ld hl, $6101 + rst FarCall + ld de, .Lose + jr .asm_3f7c3 + +.asm_3f7c3 + ld hl, $c546 + call PlaceString + callba Function106187 + ld c, $c8 + call DelayFrames + ld a, $1 + call GetSRAMBank + call $7a42 + call $785f + call CloseSRAM + call $7830 + jr z, .asm_3f7ee + call Functiona80 + call ClearTileMap + ret + +.asm_3f7ee + ld c, $c8 + call DelayFrames + call ClearTileMap + ret +; 3f7f7 + +.Win + db "YOU WIN@" +.Lose + db "YOU LOSE@" +.Draw + db " DRAW@" +; 3f80f + + +Function3f80f: ; 3f80f + ld hl, $c546 + ld de, .Invalid + call PlaceString + ld c, $c8 + call DelayFrames + call ClearTileMap + ret +; 3f821 + +.Invalid + db "INVALID BATTLE@" +; 3f830 + + +Function3f830: ; 3f830 + ld a, [InLinkBattle] + cp $4 + ret +; 3f836 + + +Function3f836: ; 3f836 + ld a, $1 + call GetSRAMBank + call Function3f85f + call CloseSRAM + ld hl, AttrMap + xor a + ld bc, $0168 + call ByteFill + call Function3200 + ld b, $8 + call GetSGBLayout + call Function32f9 + ld c, $8 + call DelayFrames + call Functiona80 + ret +; 3f85f + + +Function3f85f: ; 3f85f + call ClearTileMap + call ClearSprites + call .asm_3f8e0 + ld hl, $c540 + ld b, $5 + ld de, $b268 +.asm_3f870 + push bc + push hl + push de + ld a, [de] + and a + jr z, .asm_3f8c9 + ld a, [$d4b4] + and a + jr z, .asm_3f8c9 + push hl + push hl + ld h, d + ld l, e + ld de, DefaultFlypoint + ld bc, $000a + call CopyBytes + ld a, $50 + ld [de], a + inc de + ld bc, $0006 + call CopyBytes + ld de, DefaultFlypoint + pop hl + call PlaceString + pop hl + ld de, $001a + add hl, de + push hl + ld de, $d00d + ld bc, $0204 + call Function3198 + pop hl + ld de, $0005 + add hl, de + push hl + ld de, $d00f + ld bc, $0204 + call Function3198 + pop hl + ld de, $0005 + add hl, de + ld de, $d011 + ld bc, $0204 + call Function3198 + jr .asm_3f8cf + +.asm_3f8c9 + ld de, .Format + call PlaceString + +.asm_3f8cf + pop hl + ld bc, $0012 + add hl, bc + ld d, h + ld e, l + pop hl + ld bc, $0028 + add hl, bc + pop bc + dec b + jr nz, .asm_3f870 + ret + +.asm_3f8e0 + ld hl, $c4a1 + ld de, .Record + call PlaceString + + ld hl, $c518 + ld de, .Result + call PlaceString + + ld hl, $c4c8 + ld de, .Total + call PlaceString + + ld hl, $c4f6 + ld de, $b260 + call .asm_3f92b + jr c, .asm_3f92a + + ld bc, $0204 + call Function3198 + + ld hl, $c4fb + ld de, $b262 + call .asm_3f92b + + ld bc, $0204 + call Function3198 + + ld hl, $c500 + ld de, $b264 + call .asm_3f92b + + ld bc, $0204 + call Function3198 + +.asm_3f92a + ret + +.asm_3f92b + ld a, [$d4b4] + and a + ret nz + ld de, .Scores + call PlaceString + scf + ret +; 3f938 + +.Scores + db " 0 0 0@" +; 3f947 + +.Format ; 3f947 + db " --- ", $22, " - - -@" +.Record ; 3f964 + db $52, "'s RECORD@" +.Result ; 3f96e + db "RESULT WIN LOSE DRAW@" +.Total ; 3f983 + db "TOTAL WIN LOSE DRAW@" +; 3f998 + + +Function3f998: ; 3f998 + ld a, [BattleType] + cp BATTLETYPE_ROAMING + jr nz, .asm_3f9c4 + ld a, [$d0ee] + and $f + jr z, .asm_3f9af + call GetRoamMonHP + ld a, [EnemyMonHPLo] + ld [hl], a + jr .asm_3f9ca + +.asm_3f9af + call GetRoamMonHP + ld [hl], $0 + call GetRoamMonMapGroup + ld [hl], $ff + call GetRoamMonMapNumber + ld [hl], $ff + call GetRoamMonSpecies + ld [hl], $0 + ret + +.asm_3f9c4 + call FarBattleRNG + and $f + ret nz + +.asm_3f9ca + callab Function2a30d + ret +; 3f9d1 + +GetRoamMonMapGroup: ; 3f9d1 + ld a, [TempEnemyMonSpecies] + ld b, a + ld a, [RoamMon1Species] + cp b + ld hl, RoamMon1MapGroup + ret z + ld a, [RoamMon2Species] + cp b + ld hl, RoamMon2MapGroup + ret z + ld hl, RoamMon3MapGroup + ret +; 3f9e9 + +GetRoamMonMapNumber: ; 3f9e9 + ld a, [TempEnemyMonSpecies] + ld b, a + ld a, [RoamMon1Species] + cp b + ld hl, RoamMon1MapNumber + ret z + ld a, [RoamMon2Species] + cp b + ld hl, RoamMon2MapNumber + ret z + ld hl, RoamMon3MapNumber + ret +; 3fa01 + +GetRoamMonHP: ; 3fa01 +; output: hl = RoamMonCurHP + ld a, [TempEnemyMonSpecies] + ld b, a + ld a, [RoamMon1Species] + cp b + ld hl, RoamMon1CurHP + ret z + ld a, [RoamMon2Species] + cp b + ld hl, RoamMon2CurHP + ret z + ld hl, RoamMon3CurHP + ret +; 3fa19 + +GetRoamMonDVs: ; 3fa19 +; output: hl = RoamMonDVs + ld a, [TempEnemyMonSpecies] + ld b, a + ld a, [RoamMon1Species] + cp b + ld hl, RoamMon1DVs + ret z + ld a, [RoamMon2Species] + cp b + ld hl, RoamMon2DVs + ret z + ld hl, RoamMon3DVs + ret +; 3fa31 + +GetRoamMonSpecies: ; 3fa31 + ld a, [TempEnemyMonSpecies] + ld hl, RoamMon1Species + cp [hl] + ret z + ld hl, RoamMon2Species + cp [hl] + ret z + ld hl, RoamMon3Species + ret +; 3fa42 + + +Function3fa42: ; 3fa42 + ld hl, $d276 + ld de, StringBuffer1 + ld bc, $0002 + call CopyBytes + ld hl, $d26b + ld bc, $000a + call CopyBytes + ld hl, $b254 + call $7aa0 + ld hl, $b266 + ld d, $5 +.asm_3fa62 + push hl + inc hl + inc hl + ld a, [hl] + dec hl + dec hl + and a + jr z, .asm_3fa85 + push de + ld bc, $000c + ld de, StringBuffer1 + call CompareLong + pop de + pop hl + jr c, .asm_3fa99 + ld bc, $0012 + add hl, bc + dec d + jr nz, .asm_3fa62 + ld bc, $ffee + add hl, bc + push hl + +.asm_3fa85 + ld d, h + ld e, l + ld hl, StringBuffer1 + ld bc, $000c + call CopyBytes + ld b, $6 + xor a +.asm_3fa93 + ld [de], a + inc de + dec b + jr nz, .asm_3fa93 + pop hl + +.asm_3fa99 + call $7aa0 + call $7ac8 + ret +; 3faa0 + +Function3faa0: ; 3faa0 + ld a, [$d0ee] + and $f + cp $1 + ld bc, $000d + jr c, .asm_3fab4 + ld bc, $000f + jr z, .asm_3fab4 + ld bc, $0011 + +.asm_3fab4 + add hl, bc + call $7abe + ret nc + inc [hl] + ret nz + dec hl + inc [hl] + ret +; 3fabe + +Function3fabe: ; 3fabe + dec hl + ld a, [hl] + inc hl + cp $27 + ret c + ld a, [hl] + cp $f + ret +; 3fac8 + +Function3fac8: ; 3fac8 + ld b, $5 + ld hl, $b277 + ld de, DefaultFlypoint +.asm_3fad0 + push bc + push de + push hl + call $7b54 + pop hl + ld a, e + pop de + ld [de], a + inc de + ld a, b + ld [de], a + inc de + ld a, c + ld [de], a + inc de + ld bc, $0012 + add hl, bc + pop bc + dec b + jr nz, .asm_3fad0 + ld b, $0 + ld c, $1 +.asm_3faed + ld a, b + add b + add b + ld e, a + ld d, $0 + ld hl, DefaultFlypoint + add hl, de + push hl + ld a, c + add c + add c + ld e, a + ld d, $0 + ld hl, DefaultFlypoint + add hl, de + ld d, h + ld e, l + pop hl + push bc + ld c, $3 + call StringCmp + pop bc + jr z, .asm_3fb10 + jr nc, .asm_3fb1f + +.asm_3fb10 + inc c + ld a, c + cp $5 + jr nz, .asm_3faed + inc b + ld c, b + inc c + ld a, b + cp $4 + jr nz, .asm_3faed + ret + +.asm_3fb1f + push bc + ld a, b + ld bc, $0012 + ld hl, $b266 + call AddNTimes + push hl + ld de, DefaultFlypoint + ld bc, $0012 + call CopyBytes + pop hl + pop bc + push hl + ld a, c + ld bc, $0012 + ld hl, $b266 + call AddNTimes + pop de + push hl + ld bc, $0012 + call CopyBytes + ld hl, DefaultFlypoint + ld bc, $0012 + pop de + call CopyBytes + ret +; 3fb54 + +Function3fb54: ; 3fb54 + ld e, $0 + ld a, [hld] + ld c, a + ld a, [hld] + ld b, a + ld a, [hld] + add c + ld c, a + ld a, [hld] + adc b + ld b, a + jr nc, .asm_3fb63 + inc e + +.asm_3fb63 + ld a, [hld] + add c + ld c, a + ld a, [hl] + adc b + ld b, a + ret nc + inc e + ret +; 3fb6c + +Function3fb6c: ; 3fb6c + call $7bf8 + ld hl, $c590 + ld b, $4 + ld c, $12 + call TextBox + callba MobileTextBorder + ld hl, $c505 + ld bc, $0307 + call ClearBox + call Functione51 + call Function3ed9f + call $7bd6 + xor a + ld [$ffde], a + ld [$ffd0], a + ld a, $90 + ld [$ffd2], a + ld [rWY], a + call WaitBGMap + xor a + ld [hBGMapMode], a + ld a, $13 + ld hl, $6980 rst FarCall - pop af - ld [hBattleTurn], a - ret -; 3f47c - -Function3f47c: ; 3f47c - ld a, [EnemySubStatus4] - bit 4, a - ld hl, $4640 - jr nz, .asm_3f4b4 - ld a, [$c6fa] - and a - ld hl, $46cf - jr nz, .asm_3f4b4 - ld a, [CurPartySpecies] - push af - ld a, [EnemyMonSpecies] - ld [CurSpecies], a - ld [CurPartySpecies], a - call GetBaseData - ld hl, EnemyMonAtkDefDV - ld a, $2d - call Predef - ld de, VTiles2 - ld a, $3e + ld a, $1 + ld [hBGMapMode], a + ld a, $31 + ld [$ffad], a + ld hl, $c51a + ld bc, $0606 + ld a, $13 call Predef - pop af - ld [CurPartySpecies], a + xor a + ld [$ffd2], a + ld [rWY], a + call WaitBGMap + call HideSprites + ld b, $1 + call GetSGBLayout + call Function32f9 + ld a, $90 + ld [$ffd2], a + xor a + ld [$ffcf], a ret +; 3fbd6 -.asm_3f4b4 - ld a, [hBattleTurn] +Function3fbd6: ; 3fbd6 + ld a, [rSVBK] push af - call SetEnemyTurn - ld a, $33 - rst FarCall + ld a, $6 + ld [rSVBK], a + ld hl, $d000 + ld bc, VBlank5 + ld a, $7f + call ByteFill + ld de, $d000 + ld hl, VBGMap0 + ld bc, $0f40 + call Functioneba pop af - ld [hBattleTurn], a - ret -; 3f4c1 - - -INCBIN "baserom.gbc", $3f4c1, $3fa01 - $3f4c1 - - -GetRoamMonHP: ; 3fa01 -; output: hl = RoamMonCurHP - ld a, [TempEnemyMonSpecies] - ld b, a - ld a, [RoamMon1Species] - cp b - ld hl, RoamMon1CurHP - ret z - ld a, [RoamMon2Species] - cp b - ld hl, RoamMon2CurHP - ret z -; remnant of the GS function -; we know this will be $00 because it's never initialized - ld hl, RoamMon3CurHP + ld [rSVBK], a ret -; 3fa19 +; 3fbf8 -GetRoamMonDVs: ; 3fa19 -; output: hl = RoamMonDVs - ld a, [TempEnemyMonSpecies] - ld b, a - ld a, [RoamMon1Species] - cp b - ld hl, RoamMon1DVs - ret z - ld a, [RoamMon2Species] - cp b - ld hl, RoamMon2DVs - ret z -; remnant of the GS function -; we know this will be $0000 because it's never initialized - ld hl, RoamMon3DVs +Function3fbf8: ; 3fbf8 + call GetPlayerBackpic + call $7c30 ret -; 3fa31 - - -INCBIN "baserom.gbc", $3fa31, $3fbff - $3fa31 +; 3fbff GetPlayerBackpic: ; 3fbff @@ -40448,7 +42216,64 @@ GetPlayerBackpic: ; 3fbff ; 3fc30 -INCBIN "baserom.gbc", $3fc30, $3fc8b - $3fc30 +Function3fc30: ; 3fc30 + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + ld hl, VTiles0 + ld de, $9310 + ld a, [hROMBank] + ld b, a + ld c, $31 + call Functionf82 + pop af + ld [rSVBK], a + call $7c5b + ld a, $31 + ld [$ffad], a + ld hl, $c51a + ld bc, $0606 + ld a, $13 + call Predef + ret +; 3fc5b + +Function3fc5b: ; 3fc5b + ld hl, Sprites + xor a + ld [hConnectionStripLength], a + ld b, $6 + ld e, $a8 +.asm_3fc65 + ld c, $3 + ld d, $40 +.asm_3fc69 + ld [hl], d + inc hl + ld [hl], e + inc hl + ld a, [hConnectionStripLength] + ld [hli], a + inc a + ld [hConnectionStripLength], a + ld a, $1 + ld [hli], a + ld a, d + add $8 + ld d, a + dec c + jr nz, .asm_3fc69 + ld a, [hConnectionStripLength] + add $3 + ld [hConnectionStripLength], a + ld a, e + add $8 + ld e, a + dec b + jr nz, .asm_3fc65 + ret +; 3fc8b BattleStartMessage ; 3fc8b @@ -40484,9 +42309,7 @@ BattleStartMessage ; 3fc8b call $6e17 .asm_3fcc2 - ld a, $f - ld hl, CheckSleepingTreeMon - rst FarCall + callba CheckSleepingTreeMon jr c, .asm_3fceb ld a, $13 @@ -40533,12 +42356,10 @@ BattleStartMessage ; 3fc8b ld a, $b ld hl, $4000 rst FarCall - pop hl call FarBattleTextBox call $7830 - ret nz ld c, $2 @@ -44963,7 +46784,114 @@ Function4e906: ; 4e906 ret ; 4e929 -INCBIN "baserom.gbc", $4e929, $4ea0a - $4e929 +INCBIN "baserom.gbc", $4e929, $4e980 - $4e929 + + +Function4e980: ; 4e980 + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + call $6998 + ld a, $43 + ld [hLCDStatCustom], a + call $69ab + xor a + ld [hLCDStatCustom], a + pop af + ld [rSVBK], a + ret +; 4e998 + +Function4e998: ; 4e998 + call $69e5 + ld a, $90 + ld [$ffcf], a + ld a, $e4 + call DmgToCgbBGPals + ld de, $e4e4 + call DmgToCgbObjPals + ret +; 4e9ab + +Function4e9ab: ; 4e9ab + ld d, $90 + ld e, $72 + ld a, $48 + inc a +.asm_4e9b2 + push af +.asm_4e9b3 + ld a, [rLY] + cp $60 + jr c, .asm_4e9b3 + ld a, d + ld [$ffcf], a + call $69f1 + inc e + inc e + dec d + dec d + pop af + push af + cp $1 + jr z, .asm_4e9ce + push de + call $69d6 + pop de + +.asm_4e9ce + call DelayFrame + pop af + dec a + jr nz, .asm_4e9b2 + ret +; 4e9d6 + +Function4e9d6: ; 4e9d6 + ld hl, $c401 + ld c, $12 + ld de, $0004 +.asm_4e9de + dec [hl] + dec [hl] + add hl, de + dec c + jr nz, .asm_4e9de + ret +; 4e9e5 + +Function4e9e5: ; 4e9e5 + ld hl, $d100 + ld a, $90 + ld bc, $0090 + call ByteFill + ret +; 4e9f1 + +Function4e9f1: ; 4e9f1 + ld hl, $d100 + ld a, d + ld c, $3e +.asm_4e9f7 + ld [hli], a + dec c + jr nz, .asm_4e9f7 + ld a, e + ld c, $22 +.asm_4e9fe + ld [hli], a + dec c + jr nz, .asm_4e9fe + xor a + ld c, $30 +.asm_4ea05 + ld [hli], a + dec c + jr nz, .asm_4ea05 + ret +; 4ea0a + Function4ea0a: ; 4ea0a @@ -61193,12 +63121,40 @@ Function106008: ; 106008 ret ; 106009 -INCBIN "baserom.gbc", $106009, $106078 - $106009 +INCBIN "baserom.gbc", $106009, $106050 - $106009 + + +Function106050: ; 106050 + ret +; 106051 + +INCBIN "baserom.gbc", $106051, $10605d - $106051 + + +Function10605d: ; 10605d + ret +; 10605e + +INCBIN "baserom.gbc", $10605e, $10606a - $10605e + + +Function10606a: ; 10606a + ret +; 10606b + +INCBIN "baserom.gbc", $10606b, $106078 - $10606b HallOfFame1: ; 0x106078 ret -INCBIN "baserom.gbc", $106079, $106094 - $106079 +INCBIN "baserom.gbc", $106079, $106086 - $106079 + + +Function106086: ; 106086 + ret +; 106087 + +INCBIN "baserom.gbc", $106087, $106094 - $106087 Function106094: ; 106094 @@ -61219,7 +63175,35 @@ Function1060d3: ; 1060d3 ret ; 1060d4 -INCBIN "baserom.gbc", $1060d4, $106187 - $1060d4 +INCBIN "baserom.gbc", $1060d4, $1060df - $1060d4 + + +Function1060df: ; 1060df + ret +; 1060e0 + +INCBIN "baserom.gbc", $1060e0, $1060fb - $1060e0 + + +Function1060fb: ; 1060fb + ret +; 1060fc + +INCBIN "baserom.gbc", $1060fc, $106101 - $1060fc + + +Function106101: ; 106101 + ret +; 106102 + +INCBIN "baserom.gbc", $106102, $106107 - $106102 + + +Function106107: ; 106107 + ret +; 106108 + +INCBIN "baserom.gbc", $106108, $106187 - $106108 Function106187: ; 106187 -- cgit v1.2.3 From 50f1d7b788418630ba45573cabce6ecc85c49af5 Mon Sep 17 00:00:00 2001 From: yenatch Date: Mon, 29 Jul 2013 23:58:02 -0400 Subject: no more incbins in bank 0 --- main.asm | 2021 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 1788 insertions(+), 233 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index 86d3ae755..f5297d045 100644 --- a/main.asm +++ b/main.asm @@ -38,13 +38,13 @@ SECTION "vblank",HOME[$40] ; vblank interrupt jp VBlank SECTION "lcd",HOME[$48] ; lcd interrupt - jp $0552 + jp Function552 SECTION "timer",HOME[$50] ; timer interrupt - jp $3e93 + jp Function3e93 SECTION "serial",HOME[$58] ; serial interrupt - jp $06ef + jp Function6ef SECTION "joypad",HOME[$60] ; joypad interrupt jp JoypadInt @@ -360,8 +360,81 @@ Function4c7: ; 4c7 ret ; 4dd -INCBIN "baserom.gbc", $4dd, $52f - $4dd +Function4dd: ; 4dd + ld a, [hCGB] + and a + jr z, .asm_4e9 + ld hl, $0522 + ld b, $4 + jr .asm_501 + +.asm_4e9 + ld hl, $053a + ld b, $4 + jr .asm_501 + + ld a, [hCGB] + and a + jr z, .asm_4fc + ld hl, $052b + ld b, $3 + jr .asm_501 + +.asm_4fc + ld hl, $0543 + ld b, $3 + +.asm_501 + push de + ld a, [hld] + ld d, a + ld a, [hld] + ld e, a + call DmgToCgbObjPals + ld a, [hld] + call DmgToCgbBGPals + ld c, $8 + call DelayFrames + pop de + dec b + jr nz, .asm_501 + ret +; 517 + + +IncGradGBPalTable_00: ; 517 + db %11111111 ; bgp + db %11111111 ; obp1 + db %11111111 ; obp2 + ; and so on... + db %11111110 + db %11111110 + db %11111110 + db %11111001 + db %11111001 + db %11111001 + + db %11100100 + db %11100100 + db %11100100 + + db %11100100 + db %11100100 + db %11100100 + + db %10010000 + db %10010000 + db %10010000 + + db %01000000 + db %01000000 + db %01000000 + + db %00000000 + db %00000000 + db %00000000 +; 52f IncGradGBPalTable_01: ; 52f db %11111111 ; bgp @@ -2681,16 +2754,16 @@ SpeechTextBox: ; 103e jp TextBox ; 1048 - -INCBIN "baserom.gbc", $1048, $1052 - $1048 - +UnknownText_0x1048: ; 1048 + db $0, "ゲームフりーク!", $57 +; 1052 Function1052: ; 1052 - ld hl, $1056 + ld hl, .text_1056 ret -; 1056 - -INCBIN "baserom.gbc", $1056, $1057 - $1056 +.text_1056 + db "@" +; 1057 PrintText: ; 1057 @@ -2999,7 +3072,7 @@ Function1205: ; 1205 call PlaceString ld h, b ld l, c - ld de, $12a2 + ld de, String12a2 call PlaceString push bc ld hl, $5939 @@ -3021,9 +3094,9 @@ Function1205: ; 1205 ld l, c ld a, [PlayerGender] bit 0, a - ld de, $12a5 + ld de, String12a5 jr z, .asm_126a ; 0x1263 $5 - ld de, $12a6 + ld de, String12a6 jr .asm_126a ; 0x1268 $0 .asm_126a call PlaceString @@ -3033,23 +3106,37 @@ Function1205: ; 1205 jp NextChar ; 0x1273 - -Char5CText: ; 0x1273 +Char5CText: ; 1273 db "TM@" -Char5DText: ; 0x1276 +Char5DText: ; 1276 db "TRAINER@" -Char5BText: ; 0x127e +Char5BText: ; 127e db "PC@" - -INCBIN "baserom.gbc", $1281, $1293 - $1281 - -Char56Text: ; 0x1293 - db "…@" -Char5AText: ; 0x1295 +Char5EText: ; 1281 + db "ROCKET@" +Char54Text: ; 1288 + db "POKé@" +Char23Text: ; 128d + db "こうげき@" +Char56Text:; 1292 + db "……@" +Char5AText: ; 1295 db "Enemy @" - -INCBIN "baserom.gbc", $129c, $12a7 - $129c - +Char4AText: ; 129c + db $e1, $e2, "@" ; PK MN +Char24Text: ; 129f + db $70, $71, "@" ; PO KE +String12a2: ; 12a2 + db " @" +Char35Text: +Char36Text: +Char37Text: ; 12a4 + db "@" +String12a5: ; 12a5 + db "@" +String12a6: ; 12a6 + db "@" +; 12a7 Function12a7: ; 12a7 pop hl @@ -3211,13 +3298,13 @@ Function135a: ; 135a .asm_137c pop hl - ld de, $1382 + ld de, .string_1382 dec de ret -; 1382 - -INCBIN "baserom.gbc", $1382, $1383 - $1382 +.string_1382 + db "@" +; 1383 Function1383: ; 1383 ld a, $e6 @@ -3301,9 +3388,10 @@ Function13d4: ; 13d4 Function13e0: ; 13e0 ld hl, $13e4 ret -; 13e4 -INCBIN "baserom.gbc", $13e4, $13e5 - $13e4 +.string_13e4 + db "@" +; 13e5 Function13e5: ; 13e5 @@ -3320,9 +3408,9 @@ Function13e5: ; 13e5 Function13f6: ; 13f6 .asm_13f6 ld a, [hli] - cp $50 + cp "@" ret z - call $13ff + call Function13ff jr .asm_13f6 ; 13ff @@ -3330,8 +3418,8 @@ Function13ff: ; 13ff push hl push bc ld c, a - ld b, $0 - ld hl, $1410 + ld b, 0 + ld hl, TextCommands add hl, bc add hl, bc ld e, [hl] @@ -3339,14 +3427,43 @@ Function13ff: ; 13ff ld d, [hl] pop bc pop hl + +; jp de push de ret ; 1410 -INCBIN "baserom.gbc", $1410, $143e - $1410 +TextCommands: ; 1410 + dw Text_00 + dw Text_01 + dw Text_02 + dw Text_03 + dw Text_04 + dw Text_05 + dw Text_06 + dw Text_07 + dw Text_08 + dw Text_09 + dw Text_0A + dw Text_PlaySound ; $0b + dw Text_0C + dw Text_0D + dw Text_PlaySound ; $0e + dw Text_PlaySound ; $0f + dw Text_PlaySound ; $10 + dw Text_PlaySound ; $11 + dw Text_PlaySound ; $12 + dw Text_PlaySound ; $13 + dw Text_14 + dw Text_15 + dw Text_16 +; 143e + +Text_00: ; 143e +; TX +; write text until "@" +; [$00]["...@"] - -Function143e: ; 143e ld d, h ld e, l ld h, b @@ -3358,7 +3475,12 @@ Function143e: ; 143e ret ; 1449 -Function1449: ; 1449 +Text_01: ; 1449 +; TX_RAM +; write text from a ram address +; little endian +; [$01][addr] + ld a, [hli] ld e, a ld a, [hli] @@ -3371,28 +3493,43 @@ Function1449: ; 1449 ret ; 1455 -Function1455: ; 1455 +Text_16: ; 1455 +; TX_FAR +; write text from a different bank +; little endian +; [$16][addr][bank] + ld a, [hROMBank] push af + ld a, [hli] ld e, a ld a, [hli] ld d, a ld a, [hli] + ld [hROMBank], a - ld [$2000], a + ld [MBC3RomBank], a + push hl ld h, d ld l, e call Function13f6 pop hl + pop af ld [hROMBank], a - ld [$2000], a + ld [MBC3RomBank], a ret ; 1470 -Function1470: ; 1470 +Text_02: ; 1470 +; TX_NUM +; write bcdnumber from address, typically ram +; little endian +; [$02][addr][flags] +; flags: see PrintBCDNumber + ld a, [hli] ld e, a ld a, [hli] @@ -3409,7 +3546,12 @@ Function1470: ; 1470 ret ; 1480 -Function1480: ; 1480 +Text_03: ; 1480 +; TX_MOVE +; move to a new tile +; little endian +; [$03][tileaddr] + ld a, [hli] ld [$d0e6], a ld c, a @@ -3419,7 +3561,12 @@ Function1480: ; 1480 ret ; 148b -Function148b: ; 148b +Text_04: ; 148b +; TX_BOX +; draw a box +; little endian +; [$04][tileaddr][height][width] + ld a, [hli] ld e, a ld a, [hli] @@ -3436,17 +3583,26 @@ Function148b: ; 148b ret ; 149b -Function149b: ; 149b - ld bc, $c5e1 +Text_05: ; 149b +; TX_LOW +; write text at (1,16) +; [$05] + + bccoord 1, 16 ret ; 149f -Function149f: ; 149f +Text_06:: ; 149f +; TX_WAITBUTTON +; wait for button press +; show arrow +; [06] + ld a, [InLinkBattle] cp $3 - jp z, $1562 + jp z, Text_0D cp $4 - jp z, $1562 + jp z, Text_0D push hl call Function13c7 push bc @@ -3457,28 +3613,31 @@ Function149f: ; 149f ret ; 14ba -Function14ba: ; 14ba +Text_07: ; 14ba push hl call Function13cd call Function138c call Function138c pop hl - ld bc, $c5e1 + bccoord 1, 16 ret ; 14c9 -Function14c9: ; 14c9 +Text_08: ; 14c9 +; TX_ASM + +; rom only? bit 7, h jr nz, .asm_14ce jp [hl] .asm_14ce - ld a, $50 + ld a, "@" ld [hl], a ret ; 14d2 -Function14d2: ; 14d2 +Text_09: ; 14d2 ld a, [hli] ld e, a ld a, [hli] @@ -3502,14 +3661,14 @@ Function14d2: ; 14d2 ret ; 14ed -Function14ed: ; 14ed +Text_0A: ; 14ed push hl push bc call GetJoypadPublic ld a, [hJoyDown] - and $3 + and BUTTON_A | BUTTON_B jr nz, .asm_14fd - ld c, $1e + ld c, 30 call DelayFrames .asm_14fd @@ -3518,13 +3677,17 @@ Function14ed: ; 14ed ret ; 1500 -Function1500: ; 1500 +Text_PlaySound:: ; 1500 +; chars: +; $0b, $0e, $0f, $10, $11, $12, $13 +; see TextSFX + push bc dec hl ld a, [hli] ld b, a push hl - ld hl, $152d + ld hl, TextSFX .asm_1508 ld a, [hli] cp $ff @@ -3562,24 +3725,18 @@ Function1522: ; 1522 ret ; 152d -Function152d: ; 152d - dec bc - nop - nop - ld [de], a - dec l - nop - ld c, $9 - nop - rrca - ld bc, $1000 - ld [bc], a - nop - ld de, $000a - inc de - inc l - nop - rst $38 +TextSFX: ; 152d + dbw $0b, SFX_DEX_FANFARE_50_79 + dbw $12, SFX_FANFARE + dbw $0e, SFX_DEX_FANFARE_20_49 + dbw $0f, SFX_ITEM + dbw $10, SFX_CAUGHT_MON + dbw $11, SFX_DEX_FANFARE_80_109 + dbw $13, SFX_SLOT_MACHINE_START + db $ff ; end +; 1543 + +Text_0C: ; 1543 ld a, [hli] ld d, a push hl @@ -3587,15 +3744,14 @@ Function152d: ; 152d ld l, c .asm_1548 push de - ld a, $75 + ld a, "…" ld [hli], a call GetJoypadPublic ld a, [hJoyDown] - and $3 + and BUTTON_A | BUTTON_B jr nz, .asm_155a - ld c, $a + ld c, 10 call DelayFrames - .asm_155a pop de dec d @@ -3606,9 +3762,9 @@ Function152d: ; 152d ret ; 1562 - - -Function1562: ; 1562 +Text_0D: ; 1562 +; wait for key down +; display arrow push hl push bc call Functionaaf @@ -3617,11 +3773,14 @@ Function1562: ; 1562 ret ; 156a -Function156a: ; 156a +Text_14: ; 156a +; TX_PREDEF +; [$14][id] + ld a, [hli] push hl ld e, a - ld d, $0 + ld d, 0 ld hl, $4000 add hl, de add hl, de @@ -3637,6 +3796,8 @@ Function156a: ; 156a ; 1582 Text_15: ; 1582 +; TX_DAY + call GetWeekday push hl push bc @@ -5011,7 +5172,7 @@ Function1b3f: ; 1b3f ld hl, DefaultFlypoint ld e, [hl] inc [hl] - ld d, $0 + ld d, 0 ld hl, MovementBuffer add hl, de ld [hl], a @@ -5031,7 +5192,7 @@ Function1b50: ; 1b50 .asm_1b57 pop af .asm_1b58 - call $1b3f + call Function1b3f dec c jr nz, .asm_1b58 ret @@ -5072,13 +5233,13 @@ Function1b5f: ; 1b5f pop af ld b, a ld a, h - call $1b92 + call Function1b92 ld c, d - call $1b50 + call Function1b50 ld a, l - call $1b92 + call Function1b92 ld c, e - call $1b50 + call Function1b50 ret ; 1b92 @@ -5086,13 +5247,13 @@ Function1b92: ; 1b92 push de push hl ld l, b - ld h, $0 + ld h, 0 add hl, hl add hl, hl ld e, a - ld d, $0 + ld d, 0 add hl, de - ld de, $1ba5 + ld de, .data_1ba5 add hl, de ld a, [hl] pop hl @@ -5100,8 +5261,9 @@ Function1b92: ; 1b92 ret ; 1ba5 -INCBIN "baserom.gbc", $1ba5, $1bb1 - $1ba5 - +.data_1ba5 + db 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 +; 1bb1 Function1bb1: ; 1bb1 push hl @@ -5130,7 +5292,7 @@ Function1bc9: ; 1bc9 ld hl, $41a8 ld a, $9 rst FarCall - call $1bdd + call Function1bdd ret ; 1bd3 @@ -5138,7 +5300,7 @@ Function1bd3: ; 1bd3 ld hl, $41ab ld a, $9 rst FarCall - call $1bdd + call Function1bdd ret ; 1bdd @@ -5176,8 +5338,6 @@ Function1bf7: ; 1bf7 ret ; 1c00 - - Function1c00: ; 1c00 ld hl, $4374 ld a, $9 @@ -5185,8 +5345,6 @@ Function1c00: ; 1c00 ret ; 1c07 - - Function1c07: ; 0x1c07 push af ld hl, $43e8 @@ -5452,25 +5610,30 @@ Function1d4b: ; 1d4b ; 1d4f - Function1d4f: ; 1d4f push hl - call $1d58 + call Function1d58 pop hl jp PrintText ; 1d57 -INCBIN "baserom.gbc", $1d57, $1d58 - $1d57 - +Function1d57: ; 1d57 + ret +; 1d58 Function1d58: ; 1d58 - ld hl, $1d5f + ld hl, MenuDataHeader_0x1d5f call Function1d35 ret ; 1d5f -INCBIN "baserom.gbc", $1d5f, $1d67 - $1d5f - +MenuDataHeader_0x1d5f: ; 1d5f + db $40 ; tile backup + db 12, 0 ; start coords + db 17, 19 ; end coords + dw $8000 + db 0 ; default option +; 1d67 Function1d67: ; 1d67 call Function1d4f @@ -5478,23 +5641,25 @@ Function1d67: ; 1d67 ret ; 1d6e - - Function1d6e: ; 1d6e - ld hl, $1d75 + ld hl, MenuDataHeader_0x1d75 call Function1d35 ret ; 1d75 -INCBIN "baserom.gbc", $1d75, $1d7d - $1d75 - +MenuDataHeader_0x1d75: ; 1d75 + db $40 ; tile backup + db 0, 0 ; start coords + db 17, 19 ; end coords + dw $0000 + db 1 ; default option +; 1d7d Function1d7d: ; 1d7d call Function1c07 ret ; 1d81 - Function1d81: ; 0x1d81 xor a ld [hBGMapMode], a @@ -5527,7 +5692,6 @@ Function1dab: ; 1dab ret ; 1db8 - Function1db8: ; 0x1db8 push hl push bc @@ -5598,8 +5762,20 @@ Function1dcf: ; 1dcf ret ; 1e1d -INCBIN "baserom.gbc", $1e1d, $1e2e - $1e1d +MenuDataHeader_0x1e1d: ; 1e1d + db $40 ; tile backup + db 5, 10 ; start coords + db 9, 15 ; end coords + dw MenuData2_0x1e25 + db 1 ; default option +; 1e25 +MenuData2_0x1e25: ; 1e25 + db $c0 ; flags + db 2 + db "YES@" + db "NO@" +; 1e2e Function1e2e: ; 1e2e call $1e35 @@ -5632,7 +5808,6 @@ Function1e35: ; 1e35 ret ; 1e5d - Function1e5d: ; 1e5d call MenuFunc_1e7f call MenuWriteText @@ -5643,8 +5818,6 @@ Function1e5d: ; 1e5d ret ; 1e70 - - SetUpMenu: ; 1e70 call MenuFunc_1e7f ; ??? call MenuWriteText @@ -5879,8 +6052,6 @@ Function1fa7: ; 1fa7 jp [hl] ; 1fb1 - - Function1fb1: ; 1fb1 ld e, a ld d, $0 @@ -5895,8 +6066,6 @@ Function1fb1: ; 1fb1 ret ; 1fbf - - Function1fbf: ; 1fbf ld hl, $cf71 call Function1ff0 @@ -6004,8 +6173,6 @@ Function2048: ; 2048 ret ; 2057 - - Function2057: ; 2057 ld a, [hROMBank] push af @@ -6058,6 +6225,7 @@ AskSerial: ; 2063 ret ; 208a + Function208a: ; 208a xor a ld [GameTimeCap], a @@ -6207,8 +6375,6 @@ Function210f: ; 210f ret ; 211b - - Function211b: ; 211b push hl ld hl, $dbf7 @@ -6243,8 +6409,6 @@ Function212a: ; 212a ret ; 2147 - - Function2147: ; 2147 push bc ld a, [hROMBank] @@ -6291,7 +6455,7 @@ Function2147: ; 2147 ; 2173 Function2173: ; 2173 - call $217a + call Function217a call $0db1 ret ; 217a @@ -6453,7 +6617,20 @@ Function222a: ; 222a ret ; 2238 -INCBIN "baserom.gbc", $2238, $224a - $2238 +Function2238: ; 2238 + call Function2252 + ret nc + push bc + ld a, $5 + ld hl, $49af + rst FarCall + pop bc + ret nc + call Function22a7 + scf + ret +; 224a + Function224a: ; 224a @@ -7176,14 +7353,11 @@ FillEastConnectionStrip: ; 25f6 ret ; 261b - Function261b: ; 261b ld [$d432], a ret ; 261f - - PushScriptPointer: ; 261f ; Call a script at a:hl. @@ -7200,9 +7374,13 @@ PushScriptPointer: ; 261f ret ; 2631 - -INCBIN "baserom.gbc", $2631, $263b - $2631 - +Function2631: ; 2631 + ld a, [ScriptRunning] + and a + ret nz + call GetMapEventBank + jr PushScriptPointer +; 263b Function263b: ; 263b ld b, a @@ -7329,7 +7507,6 @@ Function26c7: ; 26c7 ; 26d4 - GetScriptByte: ; 0x26d4 ; Return byte at ScriptBank:ScriptPos in a. @@ -7364,6 +7541,7 @@ GetScriptByte: ; 0x26d4 ret ; 0x26ef + ObjectEvent: ; 0x26ef jumptextfaceplayer ObjectEventText ; 0x26f2 @@ -7374,7 +7552,24 @@ ObjectEventText: ; 0x26f7 -INCBIN "baserom.gbc", $26f7, $2707 - $26f7 +BGEvent: ; 26f7 + jumptext BGEventText +; 26fa + +BGEventText: ; 26fa + text_jump UnknownText_0x1c46fc, BANK(UnknownText_0x1c46fc) + db "@" +; 26ff + + +CoordinatesEvent: ; 26ff + jumptext CoordinatesEventText +; 2702 + +CoordinatesEventText: ; 2702 + text_jump UnknownText_0x1c4706, BANK(UnknownText_0x1c4706) + db "@" +; 2707 Function2707: ; 2707 @@ -7407,8 +7602,180 @@ Function271e: ; 271e ret ; 272a -INCBIN "baserom.gbc", $272a, $2821 - $272a +Function272a: ; 272a + ld hl, TileMap + ld de, BGMapBuffer + call $27b7 + ld c, $28 + call Functiondbd + ld a, [$d152] + ld e, a + ld a, [$d153] + ld d, a + call $27d3 + ld a, $1 + ld [hBGMapUpdate], a + ret +; 2748 + +Function2748: ; 2748 + ld hl, $c5e0 + ld de, BGMapBuffer + call $27b7 + ld c, $28 + call Functiondbd + ld a, [$d152] + ld l, a + ld a, [$d153] + ld h, a + ld bc, $0200 + add hl, bc + ld a, h + and $3 + or $98 + ld e, l + ld d, a + call $27d3 + ld a, $1 + ld [hBGMapUpdate], a + ret +; 2771 + +Function2771: ; 2771 + ld hl, TileMap + ld de, BGMapBuffer + call $27c0 + ld c, $24 + call Functiondbd + ld a, [$d152] + ld e, a + ld a, [$d153] + ld d, a + call $27f8 + ld a, $1 + ld [hBGMapUpdate], a + ret +; 278f + +Function278f: ; 278f + ld hl, $c4b2 + ld de, BGMapBuffer + call $27c0 + ld c, $24 + call Functiondbd + ld a, [$d152] + ld e, a + and $e0 + ld b, a + ld a, e + add $12 + and $1f + or b + ld e, a + ld a, [$d153] + ld d, a + call $27f8 + ld a, $1 + ld [hBGMapUpdate], a + ret +; 27b7 + +Function27b7: ; 27b7 + ld c, $28 +.asm_27b9 + ld a, [hli] + ld [de], a + inc de + dec c + jr nz, .asm_27b9 + ret +; 27c0 + +Function27c0: ; 27c0 + ld c, $12 +.asm_27c2 + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + inc de + ld a, $13 + add l + ld l, a + jr nc, .asm_27cf + inc h + +.asm_27cf + dec c + jr nz, .asm_27c2 + ret +; 27d3 + +Function27d3: ; 27d3 + ld hl, BGMapBufferPtrs + push de + call $27df + pop de + ld a, $20 + add e + ld e, a + ld c, $a +.asm_27e1 + ld a, e + ld [hli], a + ld a, d + ld [hli], a + ld a, e + inc a + inc a + and $1f + ld b, a + ld a, e + and $e0 + or b + ld e, a + dec c + jr nz, .asm_27e1 + ld a, $14 + ld [$ffdc], a + ret +; 27f8 + +Function27f8: ; 27f8 + ld hl, BGMapBufferPtrs + ld c, $12 +.asm_27fd + ld a, e + ld [hli], a + ld a, d + ld [hli], a + ld a, $20 + add e + ld e, a + jr nc, .asm_280e + inc d + ld a, d + and $3 + or $98 + ld d, a + +.asm_280e + dec c + jr nz, .asm_27fd + ld a, $12 + ld [$ffdc], a + ret +; 2816 + +Function2816: ; 2816 + ld hl, BGMapBuffer + ld bc, $0078 + xor a + call ByteFill + ret +; 2821 Function2821: ; 2821 ld hl, TileSetAddress @@ -7489,8 +7856,94 @@ Function2879: ; 2879 ret ; 289d -INCBIN "baserom.gbc", $289d, $2914 - $289d +Function289d: ; 289d + ld hl, $d194 + ld a, [hli] + ld h, [hl] + ld l, a + ld de, $dcb9 + ld a, [$d19f] + add $6 + ld [hConnectionStripLength], a + ld a, [$d151] + and a + jr z, .asm_28cb + cp $1 + jr z, .asm_28c0 + cp $2 + jr z, .asm_28d4 + cp $3 + jr z, .asm_28da + ret + +.asm_28c0 + ld de, $dcbf + ld a, [hConnectionStripLength] + ld c, a + ld b, $0 + add hl, bc + jr .asm_28ce + +.asm_28cb + ld de, $dcb9 + +.asm_28ce + ld b, $6 + ld c, $4 + jr .asm_28f7 + +.asm_28d4 + ld de, $dcba + inc hl + jr .asm_28dd + +.asm_28da + ld de, $dcb9 +.asm_28dd + ld b, $5 + ld c, $5 + jr .asm_28f7 + + ld hl, $d194 + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [$d19f] + add $6 + ld [hConnectionStripLength], a + ld de, $dcb9 + ld b, $6 + ld c, $5 + +.asm_28f7 + push bc + push hl + push de +.asm_28fa + ld a, [de] + inc de + ld [hli], a + dec b + jr nz, .asm_28fa + pop de + ld a, e + add $6 + ld e, a + jr nc, .asm_2908 + inc d + +.asm_2908 + pop hl + ld a, [hConnectionStripLength] + ld c, a + ld b, $0 + add hl, bc + pop bc + dec c + jr nz, .asm_28f7 + ret +; 2914 Function2914: ; 2914 xor a @@ -7506,11 +7959,11 @@ Function2914: ; 2914 call $29ff ret nz ld a, [StandingTile] - and $7 - ld hl, $2945 + and 7 + ld hl, .data_2945 add l ld l, a - ld a, $0 + ld a, 0 adc h ld h, a ld a, [hl] @@ -7520,8 +7973,9 @@ Function2914: ; 2914 ret ; 2945 -INCBIN "baserom.gbc", $2945, $294d - $2945 - +.data_2945 ; 2945 + db 1, 2, 4, 8, 9, 10, 5, 6 +; 294d Function294d: ; 294d ld a, [MapX] @@ -7644,7 +8098,6 @@ Function29ff: ; 29ff ; 2a07 - GetFacingTileCoord: ; 2a07 ; Return map coordinates in (d, e) and tile id in a ; of the tile the player is facing. @@ -7756,7 +8209,6 @@ Function2a66: ; 2a66 ; 2a8b - CheckFacingSign: ; 2a8b call GetFacingTileCoord ld b, a @@ -7780,7 +8232,7 @@ CheckFacingSign: ; 2a8b ret ; 2aaa -; 2aaa +Function2aaa: ; 2aaa ld hl, $dc02 ld a, [hli] ld h, [hl] @@ -7816,10 +8268,75 @@ CheckFacingSign: ; 2a8b call CopyBytes scf ret -; 0x2ad4 +; 2ad4 + +Function2ad4: ; 2ad4 + ld a, [$dbfe] + and a + ret z + ld c, a + ld a, [hROMBank] + push af + call Function2c52 + call $2ae7 + pop hl + ld a, h + rst Bankswitch + ret +; 2ae7 + +Function2ae7: ; 2ae7 + ld hl, $dbff + ld a, [hli] + ld h, [hl] + ld l, a + call Function211b + ld b, a + ld a, [MapX] + sub $4 + ld d, a + ld a, [MapY] + sub $4 + ld e, a +.asm_2afd + push hl + ld a, [hli] + cp b + jr z, .asm_2b06 + cp $ff + jr nz, .asm_2b10 + +.asm_2b06 + ld a, [hli] + cp e + jr nz, .asm_2b10 + ld a, [hli] + cp d + jr nz, .asm_2b10 + jr .asm_2b1d + +.asm_2b10 + pop hl + ld a, $8 + add l + ld l, a + jr nc, .asm_2b18 + inc h +.asm_2b18 + dec c + jr nz, .asm_2afd + xor a + ret -INCBIN "baserom.gbc", $2ad4, $2b29 - $2ad4 +.asm_2b1d + pop hl + ld de, EngineBuffer1 + ld bc, $0008 + call CopyBytes + scf + ret +; 2b29 FadeToMenu: ; 2b29 @@ -7864,7 +8381,6 @@ Function2b3c: ; 2b3c ; 2b74 - Function2b74: ; 0x2b74 push af ld a, $1 @@ -7921,9 +8437,15 @@ Function2bae: ; 2bae ret ; 2be5 -INCBIN "baserom.gbc", $2be5, $2bed - $2be5 -GetMapHeaderPointer: ; 0x2bed +GetMapHeaderPointer: ; 2be5 + ld a, [MapGroup] + ld b, a + ld a, [MapNumber] + ld c, a +; 2bed + +GetAnyMapHeaderPointer: ; 0x2bed ; Prior to calling this function, you must have switched banks so that ; MapGroupPointers is visible. @@ -7979,7 +8501,7 @@ GetAnyMapHeaderMember: ; 0x2c0c ld a, BANK(MapGroupPointers) rst Bankswitch - call GetMapHeaderPointer + call GetAnyMapHeaderPointer add hl, de ld c, [hl] inc hl @@ -7992,18 +8514,26 @@ GetAnyMapHeaderMember: ; 0x2c0c ; 0x2c1c -INCBIN "baserom.gbc", $2c1c, $2c24 - $2c1c - +Function2c1c: ; 2c1c + ld a, [MapGroup] + ld b, a + ld a, [MapNumber] + ld c, a +; 2c24 Function2c24: ; 2c24 - call $2c31 + call Function2c31 rst Bankswitch - ret ; 2c29 -INCBIN "baserom.gbc", $2c29, $2c31 - $2c29 +Function2c29: ; 2c29 + ld a, [MapGroup] + ld b, a + ld a, [MapNumber] + ld c, a +; 2c31 Function2c31: ; 2c31 push hl @@ -8021,34 +8551,27 @@ Function2c3d: ; 2c3d push af ld a, $25 rst Bankswitch - call $2be5 ld de, $d198 ld bc, $0005 call CopyBytes pop af rst Bankswitch - ret ; 2c52 - - Function2c52: ; 2c52 ld a, [MapEventBank] rst Bankswitch - ret ; 2c57 - GetMapEventBank: ; 2c57 ld a, [MapEventBank] ret ; 2c5b - GetAnyMapBlockdataBank: ; 2c5b ; Return the blockdata bank for group b map c. push hl @@ -8079,7 +8602,6 @@ GetAnyMapBlockdataBank: ; 2c5b ret ; 2c7d - GetSecondaryMapHeaderPointer: ; 0x2c7d ; returns the current map's secondary map header pointer in hl. push bc @@ -8093,7 +8615,6 @@ GetSecondaryMapHeaderPointer: ; 0x2c7d ret ; 2c8a - GetMapPermission: ; 2c8a push hl push de @@ -8107,9 +8628,29 @@ GetMapPermission: ; 2c8a ret ; 2c98 +Function2c98: ; 2c98 + ret +; 2c99 -INCBIN "baserom.gbc", $2c98, $2caf - $2c98 +Function2c99: ; 2c99 + push hl + push de + push bc + ld de, $0002 + call GetAnyMapHeaderMember + ld a, c + pop bc + pop de + pop hl + ret +; 2ca7 +Function2ca7: ; 2ca7 + ld de, $0001 + call GetAnyMapHeaderMember + ld a, c + ret +; 2caf GetWorldMapLocation: ; 0x2caf ; given a map group/id in bc, return its location on the Pokégear map. @@ -8125,7 +8666,6 @@ GetWorldMapLocation: ; 0x2caf ret ; 0x2cbd - Function2cbd: ; 2cbd push hl push bc @@ -8172,11 +8712,14 @@ Function2cbd: ; 2cbd jr .asm_2cd7 ; 2cff -INCBIN "baserom.gbc", $2cff, $2d05 - $2cff - +Function2cff: ; 2cff + call Function2d0d + and $f + ret +; 2d05 Function2d05: ; 2d05 - call $2d0d + call Function2d0d and $f0 swap a ret @@ -8193,8 +8736,65 @@ Function2d0d: ; 2d0d ret ; 2d19 -INCBIN "baserom.gbc", $2d19, $2d61 - $2d19 +Function2d19: ; 2d19 + push de + push hl + push bc + ld de, $0008 + call GetMapHeaderMember + ld a, c + pop bc + pop hl + pop de + ret +; 2d27 +Function2d27: ; 2d27 + push hl + push bc + ld hl, $5596 + ld bc, $000f + ld a, [$d199] + call AddNTimes + ld de, TileSetBank + ld bc, $000f + ld a, $13 + call FarCopyBytes + pop bc + pop hl + ret +; 2d43 + +Function2d43: ; 2d43 + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + ret +; 2d54 + + +FarJpDe: ; 2d54 + ld [hBuffer], a + ld a, [hROMBank] + push af + ld a, [hBuffer] + rst Bankswitch + call Function2d61 + jr ReturnFarJump +; 2d61 Function2d61: ; 2d61 push de @@ -8202,7 +8802,6 @@ Function2d61: ; 2d61 ; 2d63 - FarJpHl: ; 2d63 ; Jump to a:hl. ; Preserves all registers besides a. @@ -8213,9 +8812,10 @@ FarJpHl: ; 2d63 push af ld a, [hBuffer] rst Bankswitch - - call .hl - + call Function2d82 +; 2d6e + +ReturnFarJump: ; 2d6e ; We want to retain the contents of f. ; To do this, we can pop to bc instead of af. @@ -8234,7 +8834,9 @@ FarJpHl: ; 2d63 ld a, [$cfba] ld c, a ret -.hl +; 2d82 + +Function2d82: ; 2d82 jp [hl] ; 2d83 @@ -8415,7 +9017,39 @@ Function2e31: ; 2e31 ret ; 2e4e -INCBIN "baserom.gbc", $2e4e, $2e6f - $2e4e +Function2e4e: ; 2e4e + scf + ret +; 2e50 + +Function2e50: ; 2e50 + xor a + ld hl, $da72 + ld [hli], a + ret +; 2e56 + +Function2e56: ; 2e56 + xor a + ld hl, BikeFlags + ld [hli], a + ld [hl], a + ret +; 2e5d + +Function2e5d: ; 2e5d + ld a, [$d19a] + cp $2 + jr z, .asm_2e69 + cp $1 + jr z, .asm_2e69 + ret + +.asm_2e69 + ld hl, StatusFlags + res 2, [hl] + ret +; 2e6f BitTable1Func: ; 0x2e6f @@ -8491,7 +9125,24 @@ BitTableFunc: ; 0x2e76 ret ; 0x2ead -INCBIN "baserom.gbc", $2ead, $2ec6 - $2ead + +Function2ead: ; 2ead + ld de, $000b + ld b, $2 + callba GetFlag2 + ld a, c + and a + ret +; 2ebb + +Function2ebb: ; 2ebb + ld a, [$c2cc] + bit 1, a + ret z + ld a, [hJoyDown] + bit 1, a + ret +; 2ec6 Function2ec6: ; 2ec6 @@ -8505,7 +9156,15 @@ Function2ec8: ; 2ec8 ret ; 2ecb -INCBIN "baserom.gbc", $2ecb, $2ed3 - $2ecb + +Function2ecb: ; 2ecb + push hl + ld hl, $c2cc + bit 1, [hl] + pop hl + ret +; 2ed3 + Function2ed3: ; 0x2ed3 ; disables overworld sprite updating? @@ -8530,15 +9189,22 @@ Function2ee4: ; 2ee4 ret ; 2ef6 -INCBIN "baserom.gbc", $2ef6, $2ef9 - $2ef6 -InitString: ; 0x2ef9 -; if the string pointed to by hl is empty (defined as "zero or more spaces -; followed by a null"), then initialize it to the string pointed to by de. -; +InitString: ; 2ef6 +; Init a string of length c. + push hl + jr _InitString +; 2ef9 + +InitName: ; 2ef9 ; Intended for names, so this function is limited to ten characters. push hl ld c, 10 +; 2efc + +_InitString: ; 2efc +; if the string pointed to by hl is empty (defined as "zero or more spaces +; followed by a null"), then initialize it to the string pointed to by de. push bc .loop ld a, [hli] @@ -8561,18 +9227,47 @@ InitString: ; 0x2ef9 pop bc pop hl ret -; 0x2f17 +; 2f17 + +Function2f17: ; 2f17 + ld a, [MapGroup] + ld b, a + ld a, [MapNumber] + ld c, a + call GetWorldMapLocation + cp $5f + jr z, .asm_2f39 + cp $0 + jr nz, .asm_2f35 + ld a, [BackupMapGroup] + ld b, a + ld a, [BackupMapNumber] + ld c, a + call GetWorldMapLocation + +.asm_2f35 + cp $2f + jr nc, .asm_2f3b + +.asm_2f39 + xor a + ret +.asm_2f3b + ld a, $1 + ret +; 2f3e -INCBIN "baserom.gbc", $2f17, $2f3f - $2f17 +Function2f3e: ; 2f3e + ret +; 2f3f DoItemEffect: ; 2f3f callba _DoItemEffect ret ; 2f46 - CheckTossableItem: ; 2f46 push hl push de @@ -8584,7 +9279,6 @@ CheckTossableItem: ; 2f46 ret ; 2f53 - Function2f53: ; 2f53 push hl push de @@ -8646,7 +9340,6 @@ Function2f79: ; 2f79 ; 2f8c - RNG: ; 2f8c ; Two random numbers are generated by adding and subtracting ; the divider to the respective values every time it's called. @@ -8767,13 +9460,21 @@ JpDe: ; 2fed ret ; 2fef -INCBIN "baserom.gbc", $2fef, $2ff7 - $2fef +Function2fef: ; 2fef + ld hl, rKEY1 + bit 7, [hl] + jr z, Function2ffd + ret +; 2ff7 Function2ff7: ; 2ff7 ld hl, rKEY1 bit 7, [hl] ret z +; 2ffd + +Function2ffd: ; 2ffd set 0, [hl] xor a ld [rIF], a @@ -8930,8 +9631,19 @@ Function307b: ; 307b ret ; 308d -INCBIN "baserom.gbc", $308d, $309d - $308d - +Function308d: ; 308d + ld [hBuffer], a + ld a, [rSVBK] + push af + ld a, [hBuffer] + ld [rSVBK], a + ld a, [hli] + ld h, [hl] + ld l, a + pop af + ld [rSVBK], a + ret +; 309d Function309d: ; 309d ld a, [rSVBK] @@ -9223,7 +9935,19 @@ Function3198: ; 3198 ret ; 31a4 -INCBIN "baserom.gbc", $31a4, $31b0 - $31a4 + +Function31a4: ; 31a4 + ld a, [hROMBank] + push af + ld a, $41 + rst Bankswitch + + call $61ef + pop af + rst Bankswitch + + ret +; 31b0 Function31b0: ; 31b0 @@ -9335,7 +10059,12 @@ Function3200: ; 0x3200 ret ; 0x3218 -INCBIN "baserom.gbc", $3218, $321c - $3218 + +Function3218: ; 3218 + ld a, [hCGB] + and a + ret +; 321c Function321c: ; 321c @@ -10066,7 +10795,144 @@ Function354b: ; 354b ret ; 3567 -INCBIN "baserom.gbc", $3567, $3600 - $3567 + +Function3567: ; 3567 + ld a, [hROMBank] + push af + call Function2c52 + call $3574 + pop bc + ld a, b + rst Bankswitch + + ret +; 3574 + +Function3574: ; 3574 + ld hl, $0001 + add hl, de + ld a, [hl] + cp $ff + jr z, .asm_3597 + ld l, a + push hl + call $3599 + pop hl + jr nc, .asm_3597 + ld d, a + ld e, l + call $35de + jr nc, .asm_3597 + call $2631 + callba Function96c56 + scf + ret + +.asm_3597 + and a + ret +; 3599 + +Function3599: ; 3599 + push de + ld hl, $0010 + add hl, de + ld a, [hl] + ld hl, $0011 + add hl, de + ld e, [hl] + sub $4 + ld d, a + ld a, e + sub $4 + ld e, a + call $35b0 + pop de + ret +; 35b0 + +Function35b0: ; 35b0 + ld hl, $dbfc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [$dbfb] + and a + jr z, .asm_35d3 +.asm_35bc + push af + ld a, [hl] + cp e + jr nz, .asm_35c8 + inc hl + ld a, [hld] + cp d + jr nz, .asm_35c8 + jr .asm_35d5 + +.asm_35c8 + ld a, $5 + add l + ld l, a + jr nc, .asm_35cf + inc h + +.asm_35cf + pop af + dec a + jr nz, .asm_35bc + +.asm_35d3 + and a + ret + +.asm_35d5 + pop af + ld d, a + ld a, [$dbfb] + sub d + inc a + scf + ret +; 35de + +Function35de: ; 35de + inc e + ld hl, $0001 + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a +.asm_35e6 + ld a, [hli] + cp $ff + jr z, .asm_35fc + cp d + jr nz, .asm_35f7 + ld a, [hli] + cp e + jr nz, .asm_35f8 + ld a, [hli] + ld h, [hl] + ld l, a + jr .asm_35fe + +.asm_35f7 + inc hl + +.asm_35f8 + inc hl + inc hl + jr .asm_35e6 + +.asm_35fc + and a + ret + +.asm_35fe + scf + ret +; 3600 CheckTrainerBattle2: ; 3600 @@ -10197,7 +11063,7 @@ CheckTrainerBattle: ; 360d ld [$d04d], a scf ret -; 36a5d +; 36a5 FacingPlayerDistance_bc: ; 36a5 @@ -10282,7 +11148,30 @@ FacingPlayerDistance: ; 36ad ; 36f5 -INCBIN "baserom.gbc", $36f5, $3718 - $36f5 +Function36f5: ; 36f5 + push bc + ld hl, $0001 + add hl, bc + ld a, [hl] + call GetMapObject + ld hl, $000a + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + call GetMapEventBank + call GetFarHalfword + ld d, h + ld e, l + push de + ld b, $2 + call BitTable1Func + pop de + ld a, c + and a + pop bc + ret +; 3718 Function3718: ; 3718 @@ -10420,8 +11309,13 @@ Function37b6: ; 37b6 ret ; 37c4 -INCBIN "baserom.gbc", $37c4, $37ce - $37c4 - +Function37c4: ; 37c4 + push af + ld a, $1 + ld [$c2bc], a + pop af + jp Function37e2 +; 37ce Function37ce: ; 37ce call $37d5 @@ -10456,8 +11350,39 @@ Function37e2: ; 37e2 ret ; 37f3 -INCBIN "baserom.gbc", $37f3, $381e - $37f3 +Function37f3: ; 37f3 + call Function381e + ret c + ld a, [hROMBank] + push af + ld a, $3c + rst Bankswitch + + ld hl, $6787 + add hl, bc + add hl, bc + add hl, bc + add hl, bc + add hl, bc + add hl, bc + ld e, [hl] + inc hl + ld d, [hl] + inc hl + ld a, [hli] + ld [CryPitch], a + ld a, [hli] + ld [CryEcho], a + ld a, [hli] + ld [CryLength], a + ld a, [hl] + ld [$c2b3], a + pop af + rst Bankswitch + and a + ret +; 381e Function381e: ; 381e and a @@ -10497,7 +11422,14 @@ Function382d: ; 382d jp $3198 ; 384d -INCBIN "baserom.gbc", $384d, $3856 - $384d +Function384d: ; 384d + ld hl, $d25e + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + ret +; 3856 GetBaseData: ; 3856 @@ -10685,7 +11617,22 @@ GetPartyLocation: ; 3927 ; 392d -INCBIN "baserom.gbc", $392d, $3945 - $392d +Function392d: ; 392d + push hl + ld a, b + dec a + ld b, $0 + add hl, bc + ld hl, $5424 + ld bc, $0020 + call AddNTimes + ld a, $14 + call GetFarHalfword + ld b, l + ld c, h + pop hl + ret +; 3945 UserPartyAttr: ; 3945 @@ -10990,7 +11937,30 @@ GetBattleVarPair: ; 39e7 dw LastEnemyMove ; 3a90 -INCBIN "baserom.gbc", $3a90, $3ab2 - $3a90 + +Function3a90: ; 3a90 + inc hl + ld a, [hROMBank] + push af + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld [hROMBank], a + ld [MBC3RomBank], a + ld a, e + ld l, a + ld a, d + ld h, a + ld de, $d00c + ld bc, $0028 + call CopyBytes + pop af + ld [hROMBank], a + ld [MBC3RomBank], a + ret +; 3ab2 MobileTextBorder: ; 3ab2 @@ -11109,7 +12079,21 @@ Function3b2a: ; 3b2a ret ; 3b3c -INCBIN "baserom.gbc", $3b3c, $3b4e - $3b3c + +Function3b3c: ; 3b3c + ld [$c3b8], a + ld a, [hROMBank] + push af + ld a, $23 + rst Bankswitch + + ld a, [$c3b8] + call $5120 + pop af + rst Bankswitch + + ret +; 3b4e CleanSoundRestart: ; 3b4e @@ -11384,7 +12368,29 @@ WaitSFX: ; 3c55 ret ; 3c74 -INCBIN "baserom.gbc", $3c74, $3c97-$3c74 +Function3c74: ; 3c74 + push hl + ld hl, $c1cc + bit 0, [hl] + jr nz, .asm_3c94 + ld hl, $c1fe + bit 0, [hl] + jr nz, .asm_3c94 + ld hl, $c230 + bit 0, [hl] + jr nz, .asm_3c94 + ld hl, $c262 + bit 0, [hl] + jr nz, .asm_3c94 + pop hl + scf + ret + +.asm_3c94 + pop hl + and a + ret +; 3c97 MaxVolume: ; 3c97 ld a, $77 ; max @@ -11404,8 +12410,17 @@ VolumeOff: ; 3ca3 ret ; 3ca8 -INCBIN "baserom.gbc", $3ca8, $3cb4 - $3ca8 +Function3ca8: ; 3ca8 + ld a, $4 + ld [MusicFade], a + ret +; 3cae +Function3cae: ; 3cae + ld a, $84 + ld [MusicFade], a + ret +; 3cb4 Function3cb4: ; 3cb4 .asm_3cb4 @@ -11416,8 +12431,31 @@ Function3cb4: ; 3cb4 jr .asm_3cb4 ; 3cbc -INCBIN "baserom.gbc", $3cbc, $3cdf - $3cbc +Function3cbc: ; 3cbc + push hl + push de + push bc + push af + call Function3d97 + ld a, [CurMusic] + cp e + jr z, .asm_3cda + ld a, $8 + ld [MusicFade], a + ld a, e + ld [MusicFadeIDLo], a + ld a, d + ld [MusicFadeIDHi], a + ld a, e + ld [CurMusic], a +.asm_3cda + pop af + pop bc + pop de + pop hl + ret +; 3cdf Function3cdf: ; 3cdf push hl @@ -11429,7 +12467,7 @@ Function3cdf: ; 3cdf cp e jr z, .asm_3cfe push de - ld de, $0000 + ld de, MUSIC_NONE call StartMusic call DelayFrame pop de @@ -11445,20 +12483,59 @@ Function3cdf: ; 3cdf ret ; 3d03 -INCBIN "baserom.gbc", $3d03, $3d47 - $3d03 +Function3d03: ; 3d03 + push hl + push de + push bc + push af + xor a + ld [$c2c1], a + ld de, MUSIC_BICYCLE + ld a, [PlayerState] + cp $1 + jr z, .asm_3d18 + call Function3d97 +.asm_3d18 + push de + ld de, MUSIC_NONE + call StartMusic + call DelayFrame + pop de + ld a, e + ld [CurMusic], a + call StartMusic + pop af + pop bc + pop de + pop hl + ret +; 3d2f +Function3d2f: ; 3d2f + ld a, [$c2c1] + and a + jr z, Function3d47 + xor a + ld [CurMusic], a + ld de, MUSIC_NONE + call StartMusic + call DelayFrame + xor a + ld [$c2c1], a + ret +; 3d47 Function3d47: ; 3d47 push hl push de push bc push af - ld de, $0000 + ld de, MUSIC_NONE call StartMusic call DelayFrame ld a, [CurMusic] ld e, a - ld d, $0 + ld d, 0 call StartMusic pop af pop bc @@ -11512,7 +12589,39 @@ Function3d97: ; 3d97 ret ; 3d9f -INCBIN "baserom.gbc", $3d9f, $3dde - $3d9f +Function3d9f: ; 3d9f + ld a, $20 + ld [$c498], a + ld [$c49c], a + ld a, $50 + ld [$c499], a + ld a, $58 + ld [$c49d], a + xor a + ld [$c49b], a + ld [$c49f], a + ld a, [$c296] + cp $64 + jr nc, .asm_3dd5 + add $1 + daa + ld b, a + swap a + and $f + add $f6 + ld [$c49a], a + ld a, b + and $f + add $f6 + ld [$c49e], a + ret + +.asm_3dd5 + ld a, $ff + ld [$c49a], a + ld [$c49e], a + ret +; 3dde CheckSFX: ; 3dde ; returns carry if sfx channels are active @@ -11599,7 +12708,27 @@ Function3e32: ; 3e32 jp $4030 ; 3e60 -INCBIN "baserom.gbc", $3e60, $3e80 - $3e60 + +Function3e60: ; 3e60 + ld [$c986], a + ld a, l + ld [$c987], a + ld a, h + ld [$c988], a + pop bc + ld a, b + ld [$c981], a + rst Bankswitch + + ld hl, $c822 + res 6, [hl] + ld hl, $c987 + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [$c986] + ret +; 3e80 Function3e80: ; 3e80 @@ -11619,7 +12748,6 @@ Function3e80: ; 3e80 ; 3e93 - Function3e93: ; 3e93 push af push bc @@ -11669,8 +12797,189 @@ Function3e93: ; 3e93 reti ; 3ed7 -INCBIN "baserom.gbc", $3ed7, $3fb5 - $3ed7 +Function3ed7: ; 3ed7 + ld [$dc02], a + ld a, [hROMBank] + push af + ld a, $45 + rst Bankswitch + + call $4243 + pop bc + ld a, b + rst Bankswitch + + ld a, [$dc02] + ret +; 3eea + +Function3eea: ; 3eea + push hl + push bc + ld de, $0939 + add hl, de + inc b + inc b + inc c + inc c + call $3f35 + pop bc + pop hl + call $3f47 + ret +; 3efd + +Function3efd: ; 3efd + push hl + ld hl, $c590 + ld b, $4 + ld c, $12 + call $3f0d + pop hl + call PrintTextBoxText + ret +; 3f0d + +Function3f0d: ; 3f0d + push hl + push bc + ld de, $0939 + add hl, de + inc b + inc b + inc c + inc c + call $3f35 + pop bc + pop hl + call TextBoxBorder + ret +; 3f20 + +Function3f20: ; 3f20 + ld hl, AttrMap + ld b, $6 + ld c, $14 + call $3f35 + ld hl, TileMap + ld b, $4 + ld c, $12 + call $3f47 + ret +; 3f35 + +Function3f35: ; 3f35 + ld a, $6 + ld de, $0014 +.asm_3f3a + push bc + push hl +.asm_3f3c + ld [hli], a + dec c + jr nz, .asm_3f3c + pop hl + add hl, de + pop bc + dec b + jr nz, .asm_3f3a + ret +; 3f47 + +Function3f47: ; 3f47 + push bc + call $3f58 + pop bc +.asm_3f4c + push bc + call $3f68 + pop bc + dec b + jr nz, .asm_3f4c + call $3f60 + ret +; 3f58 + +Function3f58: ; 3f58 + ld a, $63 + ld d, $62 + ld e, $64 + jr .asm_3f6e + ld a, $68 + ld d, $67 + ld e, $69 + jr .asm_3f6e + + ld a, $7f + ld d, $65 + ld e, $66 + +.asm_3f6e + push hl + ld [hl], d + inc hl +.asm_3f71 + ld [hli], a + dec c + jr nz, .asm_3f71 + ld [hl], e + pop hl + ld de, $0014 + add hl, de + ret +; 3f7c + +Function3f7c: ; 3f7c + call Function1cfd + call Function1c53 + dec b + dec c + call $3eea + ret +; 3f88 + +Function3f88: ; 3f88 + ld hl, $d000 + ld b, $0 +.asm_3f8d + push bc + ld c, $8 +.asm_3f90 + ld a, [de] + inc de + cpl + ld [hl], $0 + inc hl + ld [hli], a + dec c + jr nz, .asm_3f90 + pop bc + dec c + jr nz, .asm_3f8d + ret +; 3f9f + +Function3f9f: ; 3f9f + ld hl, $d000 +.asm_3fa2 + push bc + ld c, $8 +.asm_3fa5 + ld a, [de] + inc de + inc de + cpl + ld [hl], $0 + inc hl + ld [hli], a + dec c + jr nz, .asm_3fa5 + pop bc + dec c + jr nz, .asm_3fa2 + ret +; 3fb5 SECTION "bank1",DATA,BANK[$1] @@ -16416,7 +17725,7 @@ NamePlayer: ; 0x6074 jr z, .asm_60cf ld de, .Kris .asm_60cf - call InitString + call InitName ret .Chris @@ -18789,7 +20098,7 @@ SpecialNameRival: ; 0xc29d ; default to "SILVER" ld hl, RivalName ld de, DefaultRivalName - call InitString + call InitName ret ; 0xc2b2 @@ -21455,7 +22764,7 @@ Functione3de: ; e3de rst FarCall pop hl ld de, StringBuffer1 - call InitString + call InitName ld a, $4 ld hl, $2b4d rst FarCall @@ -25951,7 +27260,25 @@ Function1499a: ; 1499a ret ; 149af -INCBIN "baserom.gbc", $149af, $14a07 - $149af +Function149af: ; 149af + ld a, [StandingTile] + cp $70 + jr z, .asm_149c4 + cp $76 + jr z, .asm_149c4 + cp $78 + jr z, .asm_149c4 + cp $7e + jr z, .asm_149c4 + scf + ret + +.asm_149c4 + xor a + ret +; 149c6 + +INCBIN "baserom.gbc", $149c6, $14a07 - $149c6 Function14a07: ; 14a07 @@ -45231,7 +46558,7 @@ Function4c000: ; 4c000 ; 4c03f Function4c03f: ; 4c03f - ld hl, CreditsPos + ld hl, BGMapBuffer ld de, BGMapPalBuffer .asm_4c045 ld a, [hl] @@ -51672,7 +52999,18 @@ Function8d109: ; 8d109 ret ; 8d120 -INCBIN "baserom.gbc", $8d120, $8d132 - $8d120 +Function8d120: ; 8d120 + ld hl, $0001 + add hl, bc + ld [hl], a + ld hl, $0008 + add hl, bc + ld [hl], $0 + ld hl, $000a + add hl, bc + ld [hl], $ff + ret +; 8d132 Function8d132: ; 8d132 @@ -53508,7 +54846,7 @@ CheckTileEvent: ; 96874 rst FarCall jr c, .asm_968a6 - call $2238 + call Function2238 jr c, .asm_968aa .asm_96886 @@ -63219,7 +64557,202 @@ Function106187: ; 106187 ret ; 10619d -INCBIN "baserom.gbc", $10619d, $106594 - $10619d +INCBIN "baserom.gbc", $10619d, $1061ef - $10619d + + +Function1061ef: ; 1061ef + push bc + xor a + ld [hProduct], a + ld [hMultiplicand], a + ld [$ffb5], a + ld a, b + and $f + cp $1 + jr z, .asm_106212 + cp $2 + jr z, .asm_10620e + cp $3 + jr z, .asm_10620a + ld a, [de] + ld [hProduct], a + inc de + +.asm_10620a + ld a, [de] + ld [hMultiplicand], a + inc de + +.asm_10620e + ld a, [de] + ld [$ffb5], a + inc de + +.asm_106212 + ld a, [de] + ld [$ffb6], a + inc de + push de + xor a + ld [$ffbb], a + ld a, b + ld [$ffbc], a + ld a, c + cp $2 + jr z, .asm_10626a + ld de, $62ae + cp $3 + jr z, .asm_106256 + ld de, $62aa + cp $4 + jr z, .asm_106256 + ld de, $62a6 + cp $5 + jr z, .asm_106256 + ld de, $62a2 + cp $6 + jr z, .asm_106256 + ld de, $629e + cp $7 + jr z, .asm_106256 + ld de, $629a + cp $8 + jr z, .asm_106256 + ld de, $6296 + cp $9 + jr z, .asm_106256 + ld de, $6292 + +.asm_106256 + inc de + inc de + inc de + dec a + dec a +.asm_10625b + push af + call $62b2 + call $62ff + inc de + inc de + inc de + inc de + pop af + dec a + jr nz, .asm_10625b + +.asm_10626a + ld c, $0 + ld a, [$ffb6] +.asm_10626e + cp $a + jr c, .asm_106277 + sub $a + inc c + jr .asm_10626e + +.asm_106277 + ld b, a + ld a, [$ffbb] + or c + ld [$ffbb], a + jr nz, .asm_106284 + call $62f7 + jr .asm_106288 + +.asm_106284 + ld a, $f6 + add c + ld [hl], a + +.asm_106288 + call $62ff + ld a, $f6 + add b + ld [hli], a + pop de + pop bc + ret +; 106292 + +INCBIN "baserom.gbc", $106292, $1062b2 - $106292 + + +Function1062b2: ; 1062b2 + ld c, $0 +.asm_1062b4 + ld a, [de] + dec de + ld b, a + ld a, [$ffb6] + sub b + ld [$ffba], a + ld a, [de] + dec de + ld b, a + ld a, [$ffb5] + sbc b + ld [$ffb9], a + ld a, [de] + dec de + ld b, a + ld a, [hMultiplicand] + sbc b + ld [hMathBuffer], a + ld a, [de] + inc de + inc de + inc de + ld b, a + ld a, [hProduct] + sbc b + ld [hMultiplier], a + jr c, .asm_1062eb + ld a, [hMultiplier] + ld [hProduct], a + ld a, [hMathBuffer] + ld [hMultiplicand], a + ld a, [$ffb9] + ld [$ffb5], a + ld a, [$ffba] + ld [$ffb6], a + inc c + jr .asm_1062b4 + +.asm_1062eb + ld a, [$ffbb] + or c + jr z, .asm_1062f7 + ld a, $f6 + add c + ld [hl], a + ld [$ffbb], a + ret + +.asm_1062f7 + ld a, [$ffbc] + bit 7, a + ret z + ld [hl], $f6 + ret +; 1062ff + +Function1062ff: ; 1062ff + ld a, [$ffbc] + bit 7, a + jr nz, .asm_10630d + bit 6, a + jr z, .asm_10630d + ld a, [$ffbb] + and a + ret z + +.asm_10630d + inc hl + ret +; 10630f + +INCBIN "baserom.gbc", $10630f, $106594 - $10630f Function106594: ; 106594 @@ -63892,7 +65425,29 @@ INCBIN "baserom.gbc", $111044, $113f84 - $111044 SECTION "bank45",DATA,BANK[$45] -INCBIN "baserom.gbc", $114000, $117a7f - $114000 +INCBIN "baserom.gbc", $114000, $114243 - $114000 + +Function114243: ; 114243 + ld a, $a + ld [$0000], a + ld a, [$ff8c] + push af + push de + ld a, [$dc02] + add a + ld e, a + ld d, $0 + ld hl, $4165 + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + pop de + jp [hl] +; 11425c + +INCBIN "baserom.gbc", $11425c, $117a7f - $11425c + ; everything from here to the end of the bank is related to the ; Mobile Stadium option from the continue/newgame menu. -- cgit v1.2.3 From 4cb7c4e407c893e4ca05db0542684e4df6a09832 Mon Sep 17 00:00:00 2001 From: yenatch Date: Tue, 30 Jul 2013 00:32:18 -0400 Subject: update known labels in main --- main.asm | 2969 +++++++++++++++++++++++++++++++------------------------------- 1 file changed, 1484 insertions(+), 1485 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index f5297d045..aed5bce6e 100644 --- a/main.asm +++ b/main.asm @@ -900,11 +900,11 @@ Function6ef: ; 6ef jr .asm_752 .asm_71c - call $3e80 + call Function3e80 jr .asm_75a .asm_721 - call $2057 + call Function2057 jr .asm_75a .asm_726 @@ -1131,15 +1131,15 @@ Function83b: ; 83b ; 862 Function862: ; 862 - call $309d + call Function309d callab Function4000 call Function87d - jp $30b4 + jp Function30b4 ; 871 Function871: ; 871 - call $309d + call Function309d callab Function4000 jp Function87d ; 87d @@ -2156,11 +2156,11 @@ Functiond79: ; d79 ; d90 - Functiond90: ; d90 ret ; d91 + Functiond91: ; d91 ld a, [hCGB] and a @@ -2182,7 +2182,6 @@ Functiond91: ; d91 ; db1 - Functiondb1: ; db1 ld a, [hROMBank] push af @@ -2767,7 +2766,7 @@ Function1052: ; 1052 PrintText: ; 1057 - call $106c + call Function106c push hl hlcoord 1, 14 ld bc, 18 + 3<<8 @@ -2776,7 +2775,7 @@ PrintText: ; 1057 PrintTextBoxText: ; 1065 bccoord 1, 14 - call $13e5 + call Function13e5 ret ; 106c @@ -2784,8 +2783,8 @@ PrintTextBoxText: ; 1065 Function106c: ; 106c push hl call SpeechTextBox - call $1ad2 - call $321c + call Function1ad2 + call Function321c pop hl ret ; 1078 @@ -2877,7 +2876,7 @@ CheckDict: ; 1087 cp $5f jp z, Char5F cp $59 - jp z, $11fd + jp z, Function11fd cp $5a jp z, Char5D cp $3f @@ -2983,19 +2982,19 @@ Function11b7: ; 11b7 Function11be: ; 11be push de - ld de, $1281 + ld de, Char5EText jp $126a ; 11c5 Function11c5: ; 11c5 push de - ld de, $1288 + ld de, Char54Text jp $126a ; 11cc Function11cc: ; 11cc push de - ld de, $128d + ld de, Char23Text jp $126a ; 11d3 @@ -3007,31 +3006,31 @@ Function11d3: ; 11d3 Function11da: ; 11da push de - ld de, $129c + ld de, Char4AText jp $126a ; 11e1 Function11e1: ; 11e1 push de - ld de, $129f + ld de, Char24Text jp $126a ; 11e8 Function11e8: ; 11e8 push de - ld de, $12a4 + ld de, Char37Text jp $126a ; 11ef Function11ef: ; 11ef push de - ld de, $12a4 + ld de, Char37Text jp $126a ; 11f6 Function11f6: ; 11f6 push de - ld de, $12a4 + ld de, Char37Text jp $126a ; 11fd @@ -3399,7 +3398,7 @@ Function13e5: ; 13e5 push af set 1, a ld [$cfcf], a - call $13f6 + call Function13f6 pop af ld [$cfcf], a ret @@ -4779,7 +4778,7 @@ Function194d: ; 194d Function1956: ; 1956 ld [hConnectionStripLength], a - call $271e + call Function271e ld a, [hConnectionStripLength] call GetMapObject ld a, $2 @@ -4798,7 +4797,7 @@ Function1967: ; 1967 ret z ld [hl], $ff push af - call $1985 + call Function1985 pop af call Function1ae5 callba Function4357 @@ -4822,8 +4821,8 @@ Function1985: ; 1985 ; 199f Function199f: ; 199f - call $1967 - call $2712 + call Function1967 + call Function2712 ret ; 19a6 @@ -4882,7 +4881,7 @@ Function19e9: ; 19e9 ld a, h ld [$c2e5], a ld a, [$c2e2] - call $18de + call Function18de ret c ld hl, $0003 add hl, bc @@ -5362,15 +5361,15 @@ Function1c10: ; 0x1c10 Function1c17: ; 0x1c17 push af call Function1c07 - call $321c - call $1ad2 + call Function321c + call Function1ad2 pop af ret Function1c23: ; 0x1c23 - call $1cfd + call Function1cfd call Function1c30 - call $1d19 + call Function1d19 call Function1c30 ret @@ -5452,13 +5451,13 @@ Function1c7e: ; 1c7e ; 1c89 Function1c89: ; 1c89 - call $1c66 + call Function1c66 ld hl, $cf86 ld e, [hl] inc hl ld d, [hl] - call $1cc6 - call $1d05 + call Function1cc6 + call Function1d05 inc de ld a, [de] inc de @@ -5475,7 +5474,7 @@ Function1c89: ; 1c89 ld a, [$cf91] bit 4, a ret z - call $1cfd + call Function1cfd ld a, [de] ld c, a inc de @@ -5485,7 +5484,7 @@ Function1c89: ; 1c89 ; 1cbb Function1cbb: ; 1cbb - call $1cfd + call Function1cfd call Function1c53 dec b dec c @@ -5515,7 +5514,7 @@ Function1cc6: ; 1cc6 ; 1ce1 Function1ce1: ; 1ce1 - call $1cfd + call Function1cfd ld bc, $0015 add hl, bc call Function1c53 @@ -5526,7 +5525,7 @@ Function1ce1: ; 1ce1 ; 1cf1 Function1cf1: ; 1cf1 - call $1cfd + call Function1cfd call Function1c53 inc c inc b @@ -5592,7 +5591,7 @@ Function1d19: ; 1d19 Function1d35: ; 0x1d35 call Function1d3c - call $1c00 + call Function1c00 ret Function1d3c: ; 0x1d3c @@ -5631,7 +5630,7 @@ MenuDataHeader_0x1d5f: ; 1d5f db $40 ; tile backup db 12, 0 ; start coords db 17, 19 ; end coords - dw $8000 + dw VTiles0 db 0 ; default option ; 1d67 @@ -5663,17 +5662,17 @@ Function1d7d: ; 1d7d Function1d81: ; 0x1d81 xor a ld [hBGMapMode], a - call $1cbb - call $1ad2 - call $1c89 - call $321c - call $1c66 + call Function1cbb + call Function1ad2 + call Function1c89 + call Function321c + call Function1c66 ld a, [$cf91] bit 7, a jr z, .asm_1da7 ; 0x1d98 $d call Function1c10 - call $1bc9 - call $1ff8 + call Function1bc9 + call Function1ff8 bit 1, a jr z, .asm_1da9 ; 0x1da5 $2 .asm_1da7 @@ -5721,7 +5720,7 @@ Function1dcf: ; 1dcf .asm_1dd9 push bc - ld hl, $1e1d + ld hl, MenuDataHeader_0x1e1d call Function1d3c pop bc ld a, b @@ -5739,7 +5738,7 @@ Function1dcf: ; 1dcf ld [$cf82], a add $4 ld [$cf84], a - call $1c00 + call Function1c00 .asm_1dfe call Function1d81 @@ -5778,8 +5777,8 @@ MenuData2_0x1e25: ; 1e25 ; 1e2e Function1e2e: ; 1e2e - call $1e35 - call $1c00 + call Function1e35 + call Function1c00 ret ; 1e35 @@ -5811,8 +5810,8 @@ Function1e35: ; 1e35 Function1e5d: ; 1e5d call MenuFunc_1e7f call MenuWriteText - call $1eff - call $1f23 + call Function1eff + call Function1f23 call Function1bdd call Function1ff8 ret @@ -5821,29 +5820,29 @@ Function1e5d: ; 1e5d SetUpMenu: ; 1e70 call MenuFunc_1e7f ; ??? call MenuWriteText - call $1eff ; set up selection pointer + call Function1eff ; set up selection pointer ld hl, $cfa5 set 7, [hl] ret MenuFunc_1e7f: ; 0x1e7f - call $1c66 - call $1ebd - call $1ea6 - call $1cbb + call Function1c66 + call Function1ebd + call Function1ea6 + call Function1cbb ret MenuWriteText: ; 0x1e8c xor a ld [hBGMapMode], a - call $1ebd ; sort out the text - call $1eda ; actually write it - call $2e31 + call Function1ebd ; sort out the text + call Function1eda ; actually write it + call Function2e31 ld a, [hOAMUpdate] push af ld a, $1 ld [hOAMUpdate], a - call $321c + call Function321c pop af ld [hOAMUpdate], a ret @@ -5891,7 +5890,7 @@ Function1ebd: ; 1ebd ; 1eda Function1eda: ; 1eda - call $1cfd + call Function1cfd ld bc, $002a add hl, bc .asm_1ee1 @@ -5905,7 +5904,7 @@ Function1eda: ; 1eda ld d, h ld e, l ld hl, $cf95 - call $1efb + call Function1efb pop hl ld de, $0028 add hl, de @@ -5983,7 +5982,7 @@ Function1f2a: ; 1f2a ld [$cf73], a .asm_1f57 - call $1ebd + call Function1ebd ld a, [$cfa9] ld l, a ld h, $0 @@ -6022,7 +6021,7 @@ Function1f79: ; 1f79 Function1f8d: ; 1f8d push de ld a, [MenuSelection] - call $1fb1 + call Function1fb1 inc hl inc hl ld a, [hli] @@ -6034,7 +6033,7 @@ Function1f8d: ; 1f8d ; 1f9e Function1f9e: ; 1f9e - call $1fb1 + call Function1fb1 inc hl inc hl ld a, [hli] @@ -6045,7 +6044,7 @@ Function1f9e: ; 1f9e Function1fa7: ; 1fa7 ld a, [MenuSelection] - call $1fb1 + call Function1fb1 ld a, [hli] ld h, [hl] ld l, a @@ -6466,7 +6465,7 @@ Function217a: ; 217a ld a, [TileSetBlocksBank] rst Bankswitch - call $2198 + call Function2198 ld a, $60 ld hl, TileMap ld bc, $0168 @@ -6634,9 +6633,9 @@ Function2238: ; 2238 Function224a: ; 224a - call $2252 + call Function2252 ret nc - call $22a7 + call Function22a7 ret ; 2252 @@ -6647,8 +6646,8 @@ Function2252: ; 2252 ret nc ld a, [hROMBank] push af - call $2c52 - call $2266 + call Function2c52 + call Function2266 pop de ld a, d rst Bankswitch @@ -6697,7 +6696,7 @@ Function2266: ; 2266 .asm_2296 pop hl - call $22a3 + call Function22a3 ret nc ld a, [$dbfb] inc a @@ -6717,8 +6716,8 @@ Function22a3: ; 22a3 Function22a7: ; 22a7 ld a, [hROMBank] push af - call $2c52 - call $22b4 + call Function2c52 + call Function22b4 pop af rst Bankswitch @@ -6792,31 +6791,31 @@ Function2300: ; 2300 ; 2309 Function2309: ; 2309 - call $2326 + call Function2326 call Function2c52 - call $234f + call Function234f xor a - call $2336 + call Function2336 ret ; 2317 Function2317: ; 2317 - call $2326 + call Function2326 call Function2c52 - call $234f + call Function234f ld a, $1 - call $2336 + call Function2336 ret ; 2326 Function2326: ; 2326 - call $2c3d - call $2c1c + call Function2c3d + call Function2c1c call GetSecondaryMapHeaderPointer - call $235c - call $2368 + call Function235c + call Function2368 ret ; 2336 @@ -6828,13 +6827,13 @@ Function2336: ; 2336 ld l, a inc hl inc hl - call $23da - call $23f1 - call $2408 + call Function23da + call Function23f1 + call Function2408 pop af and a ret nz - call $241f + call Function241f ret ; 234f @@ -6843,8 +6842,8 @@ Function234f: ; 234f ld a, [hli] ld h, [hl] ld l, a - call $23ac - call $23c3 + call Function23ac + call Function23c3 ret ; 235c @@ -6992,7 +6991,7 @@ Function2408: ; 2408 Function241f: ; 241f push hl - call $2471 + call Function2471 pop de ld hl, $d72e ld a, [de] @@ -7003,7 +7002,7 @@ Function241f: ; 241f ld a, d ld [$dc06], a ld a, [$dc04] - call $2457 + call Function2457 ld a, [$dc04] ld c, a ld a, $10 @@ -7093,7 +7092,7 @@ Function248a: ; 248a ld a, [hli] cp $ff jr nz, .asm_24b3 - call $24ba + call Function24ba .asm_24b3 ld a, $41 @@ -7386,14 +7385,14 @@ Function263b: ; 263b ld b, a ld a, [hROMBank] push af - call $2c52 - call $2653 + call Function2c52 + call Function2653 jr nc, .asm_2650 call GetMapEventBank ld b, a ld d, h ld e, l - call $2674 + call Function2674 .asm_2650 pop af @@ -7458,10 +7457,10 @@ Function269a: ; 269a push hl call SpeechTextBox - call $2e31 + call Function2e31 ld a, $1 ld [hOAMUpdate], a - call $321c + call Function321c pop hl call PrintTextBoxText xor a @@ -7479,7 +7478,7 @@ Function26b7: ; 26b7 ld a, [hBuffer] rst Bankswitch - call $26c5 + call Function26c5 pop af rst Bankswitch @@ -7498,7 +7497,7 @@ Function26c7: ; 26c7 rst Bankswitch ld a, c - call $19e9 + call Function19e9 pop hl ld a, h rst Bankswitch @@ -7606,14 +7605,14 @@ Function271e: ; 271e Function272a: ; 272a ld hl, TileMap ld de, BGMapBuffer - call $27b7 + call Function27b7 ld c, $28 call Functiondbd ld a, [$d152] ld e, a ld a, [$d153] ld d, a - call $27d3 + call Function27d3 ld a, $1 ld [hBGMapUpdate], a ret @@ -7622,7 +7621,7 @@ Function272a: ; 272a Function2748: ; 2748 ld hl, $c5e0 ld de, BGMapBuffer - call $27b7 + call Function27b7 ld c, $28 call Functiondbd ld a, [$d152] @@ -7636,7 +7635,7 @@ Function2748: ; 2748 or $98 ld e, l ld d, a - call $27d3 + call Function27d3 ld a, $1 ld [hBGMapUpdate], a ret @@ -7645,14 +7644,14 @@ Function2748: ; 2748 Function2771: ; 2771 ld hl, TileMap ld de, BGMapBuffer - call $27c0 + call Function27c0 ld c, $24 call Functiondbd ld a, [$d152] ld e, a ld a, [$d153] ld d, a - call $27f8 + call Function27f8 ld a, $1 ld [hBGMapUpdate], a ret @@ -7661,7 +7660,7 @@ Function2771: ; 2771 Function278f: ; 278f ld hl, $c4b2 ld de, BGMapBuffer - call $27c0 + call Function27c0 ld c, $24 call Functiondbd ld a, [$d152] @@ -7675,7 +7674,7 @@ Function278f: ; 278f ld e, a ld a, [$d153] ld d, a - call $27f8 + call Function27f8 ld a, $1 ld [hBGMapUpdate], a ret @@ -7948,15 +7947,15 @@ Function289d: ; 289d Function2914: ; 2914 xor a ld [TilePermissions], a - call $296c - call $294d + call Function296c + call Function294d ld a, [MapX] ld d, a ld a, [MapY] ld e, a call Function2a3c ld [StandingTile], a - call $29ff + call Function29ff ret nz ld a, [StandingTile] and 7 @@ -7986,12 +7985,12 @@ Function294d: ; 294d inc e call Function2a3c ld [TileDown], a - call $298b + call Function298b pop de dec e call Function2a3c ld [TileUp], a - call $29a8 + call Function29a8 ret ; 296c @@ -8004,17 +8003,17 @@ Function296c: ; 296c dec d call Function2a3c ld [TileLeft], a - call $29e2 + call Function29e2 pop de inc d call Function2a3c ld [TileRight], a - call $29c5 + call Function29c5 ret ; 298b Function298b: ; 298b - call $29ff + call Function29ff ret nz ld a, [TileDown] and $7 @@ -8033,7 +8032,7 @@ Function298b: ; 298b ; 29a8 Function29a8: ; 29a8 - call $29ff + call Function29ff ret nz ld a, [TileUp] and $7 @@ -8052,7 +8051,7 @@ Function29a8: ; 29a8 ; 29c5 Function29c5: ; 29c5 - call $29ff + call Function29ff ret nz ld a, [TileRight] and $7 @@ -8071,7 +8070,7 @@ Function29c5: ; 29c5 ; 29e2 Function29e2: ; 29e2 - call $29ff + call Function29ff ret nz ld a, [TileLeft] and $7 @@ -8224,8 +8223,8 @@ CheckFacingSign: ; 2a8b ld c, a ld a, [hROMBank] push af - call $2c52 - call $2aaa + call Function2c52 + call Function2aaa pop hl ld a, h rst Bankswitch @@ -8278,7 +8277,7 @@ Function2ad4: ; 2ad4 ld a, [hROMBank] push af call Function2c52 - call $2ae7 + call Function2ae7 pop hl ld a, h rst Bankswitch @@ -8342,7 +8341,7 @@ Function2ae7: ; 2ae7 FadeToMenu: ; 2b29 xor a ld [hBGMapMode], a - call $1d6e + call Function1d6e ld a, $23 ld hl, $4084 rst FarCall @@ -8354,16 +8353,16 @@ FadeToMenu: ; 2b29 Function2b3c: ; 2b3c call WhiteBGMap - call $2bae - call $1ad2 - call $1d7d + call Function2bae + call Function1ad2 + call Function1d7d call $0d90 jr .asm_2b5c call WhiteBGMap - call $1d7d - call $2bae - call $1ad2 + call Function1d7d + call Function2bae + call Function1ad2 call $0d90 .asm_2b5c @@ -8376,7 +8375,7 @@ Function2b3c: ; 2b3c ld a, $23 ld hl, $4079 rst FarCall - call $2ee4 + call Function2ee4 ret ; 2b74 @@ -8387,13 +8386,13 @@ Function2b74: ; 0x2b74 ld [$c2ce], a call WhiteBGMap call ClearSprites - call $2bae + call Function2bae ld hl, $c590 ; tile 0, 12 ld bc, $0412 call TextBox ld hl, VramState set 0, [hl] - call $1ad2 + call Function1ad2 call Function3200 ld b, $9 call GetSGBLayout @@ -8422,14 +8421,14 @@ Function2bae: ; 2bae ld b, a ld a, [MapNumber] ld c, a - call $2c24 + call Function2c24 ld a, $23 ld hl, $4001 rst FarCall - call $2173 - call $2821 + call Function2173 + call Function2821 ld a, $9 - call $3cb4 + call Function3cb4 pop af rst Bankswitch @@ -8551,7 +8550,7 @@ Function2c3d: ; 2c3d push af ld a, $25 rst Bankswitch - call $2be5 + call GetMapHeaderPointer ld de, $d198 ld bc, $0005 call CopyBytes @@ -8924,7 +8923,7 @@ ResetWindow: ; 2dba rst Bankswitch call $6454 - call $2e20 + call Function2e20 call $64bf pop af @@ -8938,7 +8937,7 @@ Function2dcf: ; 2dcf push af ld a, $1 ld [hOAMUpdate], a - call $2de2 + call Function2de2 pop af ld [hOAMUpdate], a ld hl, VramState @@ -8950,14 +8949,14 @@ Function2de2: ; 2de2 call Function1fbf xor a ld [hBGMapMode], a - call $2173 - call $2e20 + call Function2173 + call Function2e20 xor a ld [hBGMapMode], a - call $2e31 + call Function2e31 ld a, $90 ld [$ffd2], a - call $0e4a + call Functione4a ld a, $2e ld hl, $4000 rst FarCall @@ -8976,7 +8975,7 @@ Function2e08: ; 2e08 call $6454 call SpeechTextBox - call $2e20 + call Function2e20 call $64bf pop af rst Bankswitch @@ -9006,7 +9005,7 @@ Function2e31: ; 2e31 ld [hBGMapMode], a ld a, $1 ld [hOAMUpdate], a - call $1ad2 + call Function1ad2 xor a ld [hOAMUpdate], a call DelayFrame @@ -9662,7 +9661,7 @@ Function309d: ; 309d Function30b4: ; 30b4 xor a ld [hBGMapMode], a - call $30bf + call Function30bf ld a, $1 ld [hBGMapMode], a ret @@ -10114,11 +10113,11 @@ Function321c: ; 321c ld a, $1 ld [rVBK], a ld hl, AttrMap - call $327b + call Function327b ld a, $0 ld [rVBK], a ld hl, TileMap - call $327b + call Function327b .asm_326d ld a, [rLY] cp $7f @@ -10734,14 +10733,14 @@ GetMoveName: ; 34f8 Function350c: ; 350c - call $1c66 + call Function1c66 ld a, [hROMBank] push af ld a, $9 rst Bankswitch call $45af - call $3524 + call Function3524 call $45cb pop af rst Bankswitch @@ -10771,7 +10770,7 @@ Function352f: ; 352f sub c ld e, a push de - call $1d05 + call Function1d05 pop bc jp TextBox ; 354b @@ -10800,7 +10799,7 @@ Function3567: ; 3567 ld a, [hROMBank] push af call Function2c52 - call $3574 + call Function3574 pop bc ld a, b rst Bankswitch @@ -10816,14 +10815,14 @@ Function3574: ; 3574 jr z, .asm_3597 ld l, a push hl - call $3599 + call Function3599 pop hl jr nc, .asm_3597 ld d, a ld e, l - call $35de + call Function35de jr nc, .asm_3597 - call $2631 + call Function2631 callba Function96c56 scf ret @@ -10846,7 +10845,7 @@ Function3599: ; 3599 ld a, e sub $4 ld e, a - call $35b0 + call Function35b0 pop de ret ; 35b0 @@ -10939,7 +10938,7 @@ CheckTrainerBattle2: ; 3600 ld a, [hROMBank] push af - call $2c52 + call Function2c52 call CheckTrainerBattle @@ -11275,7 +11274,7 @@ Function3786: ; 3786 ld a, $1 ld [$c2c6], a ld a, [CurPartySpecies] - call $3741 + call Function3741 jr c, .asm_37ad push hl ld de, VTiles2 @@ -11318,7 +11317,7 @@ Function37c4: ; 37c4 ; 37ce Function37ce: ; 37ce - call $37d5 + call Function37d5 call WaitSFX ret ; 37d5 @@ -11329,7 +11328,7 @@ Function37d5: ; 37d5 ld [$c2bc], a ld [CryTracks], a pop af - call $37e2 + call Function37e2 ret ; 37e2 @@ -11337,7 +11336,7 @@ Function37e2: ; 37e2 push hl push de push bc - call $381e + call Function381e jr c, .asm_37ef ld e, c ld d, b @@ -11419,7 +11418,7 @@ Function382d: ; 382d ld [$d265], a ld de, $d265 ld b, $41 - jp $3198 + jp Function3198 ; 384d Function384d: ; 384d @@ -11981,8 +11980,8 @@ BattleTextBox: ; 3ac3 push hl call SpeechTextBox call MobileTextBorder - call $1ad2 ; UpdateSprites - call $321c ; refresh? + call Function1ad2 ; UpdateSprites + call Function321c ; refresh? pop hl call PrintTextBoxText ret @@ -12462,7 +12461,7 @@ Function3cdf: ; 3cdf push de push bc push af - call $3d97 + call Function3d97 ld a, [CurMusic] cp e jr z, .asm_3cfe @@ -12583,9 +12582,9 @@ Function3d62: ; 3d62 ; 3d97 Function3d97: ; 3d97 - call $3d62 + call Function3d62 ret c - call $2cbd + call Function2cbd ret ; 3d9f @@ -12822,10 +12821,10 @@ Function3eea: ; 3eea inc b inc c inc c - call $3f35 + call Function3f35 pop bc pop hl - call $3f47 + call Function3f47 ret ; 3efd @@ -12834,7 +12833,7 @@ Function3efd: ; 3efd ld hl, $c590 ld b, $4 ld c, $12 - call $3f0d + call Function3f0d pop hl call PrintTextBoxText ret @@ -12849,7 +12848,7 @@ Function3f0d: ; 3f0d inc b inc c inc c - call $3f35 + call Function3f35 pop bc pop hl call TextBoxBorder @@ -12860,11 +12859,11 @@ Function3f20: ; 3f20 ld hl, AttrMap ld b, $6 ld c, $14 - call $3f35 + call Function3f35 ld hl, TileMap ld b, $4 ld c, $12 - call $3f47 + call Function3f47 ret ; 3f35 @@ -12888,7 +12887,7 @@ Function3f35: ; 3f35 Function3f47: ; 3f47 push bc - call $3f58 + call Function3f58 pop bc .asm_3f4c push bc @@ -12935,7 +12934,7 @@ Function3f7c: ; 3f7c call Function1c53 dec b dec c - call $3eea + call Function3eea ret ; 3f88 @@ -15634,7 +15633,7 @@ Function5000: ; 5000 Function500e: ; 500e ld hl, $c2e3 - call $1aae + call Function1aae ret ; 5015 @@ -16220,7 +16219,7 @@ Function56cd: ; 56cd jr nc, .asm_5760 ld c, a push bc - call $1d05 + call Function1d05 pop bc ld a, [hl] cp $60 @@ -16324,7 +16323,7 @@ Function57d9: ; 57d9 Function57db: ; 57db ld bc, $d4d6 - call $1af8 + call Function1af8 ret ; 57e2 @@ -16367,7 +16366,7 @@ Function5803: ; 5803 ; 5815 Function5815: ; 5815 - call $18de + call Function18de ret c ld a, [hConnectedMapWidth] ld [$d4cd], a @@ -16390,7 +16389,7 @@ Function582c: ; 582c push af call Function5847 pop af - call $18de + call Function18de ret c ld hl, $0003 add hl, bc @@ -16416,7 +16415,7 @@ Function5847: ; 5847 Function585c: ; 585c ld a, c - call $18de + call Function18de ret c push bc call Function587a @@ -16429,7 +16428,7 @@ Function585c: ; 585c ; 586e Function586e: ; 586e - call $18de + call Function18de ret c ld hl, $0005 add hl, bc @@ -16509,7 +16508,7 @@ Function58b9: ; 58b9 ; 58d8 Function58d8: ; 58d8 - call $18de + call Function18de ret c ld hl, $0005 add hl, bc @@ -17107,7 +17106,7 @@ Function5bae: ; 5bae ld a, $41 ld hl, $61c0 rst FarCall - call $208a + call Function208a ret ; 5ca1 @@ -17244,7 +17243,7 @@ Continue: ; 5d65 ld a, $5 ld hl, $50b9 rst FarCall - call $1d6e + call Function1d6e call Function5e85 ld a, $1 ld [hBGMapMode], a @@ -17426,7 +17425,7 @@ Function5e9f: ; 5e9f call Function5f1c call Function5f40 call Functione5f - call $1ad2 + call Function1ad2 ret ; 5eaf @@ -17435,7 +17434,7 @@ Function5eaf: ; 5eaf call Function5f1c call Function5f48 call Functione5f - call $1ad2 + call Function1ad2 ret ; 5ebf @@ -17449,9 +17448,9 @@ Function5ebf: ; 5ebf ld hl, MenuDataHeader_0x5efb .asm_5ecf - call $1e35 - call $1cbb - call $1c89 + call Function1e35 + call Function1cbb + call Function1c89 ret ; 5ed9 @@ -17491,7 +17490,7 @@ MenuData2_0x5f03: ; 5f03 Function5f1c: ; 5f1c - call $1cfd + call Function1cfd push hl ld de, $005d add hl, de @@ -17540,7 +17539,7 @@ Function5f58: ; 5f58 pop hl ld de, $d265 ld bc, $0102 - jp $3198 + jp Function3198 ; 5f6b Function5f6b: ; 5f6b @@ -17554,18 +17553,18 @@ Function5f6b: ; 5f6b pop hl ld de, $d265 ld bc, $0103 - jp $3198 + jp Function3198 ; 5f84 Function5f84: ; 5f84 ld de, GameTimeHours ld bc, $0203 - call $3198 + call Function3198 ld [hl], $6d inc hl ld de, GameTimeMinutes ld bc, $8102 - jp $3198 + jp Function3198 ; 5f99 @@ -17602,7 +17601,7 @@ OakSpeech: ; 0x5f99 call GetBaseData hlcoord 6, 4 - call $3786 + call Function3786 xor a ld [TempMonDVs], a @@ -17657,7 +17656,7 @@ OakText2: ; 0x604a TX_FAR _OakText2 start_asm ld a,WOOPER - call $37ce + call Function37ce call WaitSFX ld hl,OakText3 ret @@ -17942,7 +17941,7 @@ Function6454: ; 6454 push af xor a ld [hBGMapMode], a - call $6473 + call Function6473 pop af ld [hBGMapMode], a pop af @@ -17958,10 +17957,10 @@ Function6473: ; 6473 ld [hBGMapMode], a ld a, $90 ld [$ffd2], a - call $2173 + call Function2173 ld a, $9c - call $64b9 - call $2e20 + call Function64b9 + call Function2e20 ld a, $12 ld hl, $5409 rst FarCall @@ -17977,7 +17976,7 @@ Function6473: ; 6473 ld hl, $64db rst FarCall ld a, $98 - call $64b9 + call Function64b9 xor a ld [$d152], a ld a, $98 @@ -18001,7 +18000,7 @@ Function64bf: ; 64bf push af ld a, $1 ld [hOAMUpdate], a - call $64cd + call Function64cd pop af ld [hOAMUpdate], a ret @@ -18011,7 +18010,7 @@ Function64cd: ; 64cd call Functione5f ld a, $90 ld [$ffd2], a - call $2e31 + call Function2e31 call $0e51 ret ; 64db @@ -18986,7 +18985,7 @@ INCBIN "baserom.gbc", $808f, $80a1 - $808f Function80a1: ; 80a1 ld a, b - call $18de + call Function18de ret c ld hl, $0010 add hl, bc @@ -18996,7 +18995,7 @@ Function80a1: ; 80a1 ld e, [hl] ld a, [hConnectionStripLength] ld b, a - call $407e + call Function807e and a ret ; 80b8 @@ -19005,7 +19004,7 @@ INCBIN "baserom.gbc", $80b8, $80e7 - $80b8 Function80e7: ; 80e7 - call $2707 + call Function2707 and a ret nz ld hl, $d4fe @@ -19027,7 +19026,7 @@ Function80e7: ; 80e7 .asm_8104 ld d, h ld e, l - call $4116 + call Function8116 ld hl, VramState bit 7, [hl] ret z @@ -19038,7 +19037,7 @@ Function80e7: ; 80e7 ; 8116 Function8116: ; 8116 - call $411d + call Function811d call Function8286 ret ; 811d @@ -19054,10 +19053,10 @@ Function811d: ; 811d add hl, bc ld a, [hl] ld [$c2f1], a - call $180e + call Function180e ld [$c2f2], a ld a, [hl] - call $17ff + call Function17ff ld [$c2f3], a ld hl, $0008 add hl, bc @@ -19194,13 +19193,13 @@ INCBIN "baserom.gbc", $831e, $839e - $831e Function839e: ; 839e push bc ld a, c - call $18de + call Function18de ld d, b ld e, c pop bc ret c ld a, b - call $18de + call Function18de ret c ld hl, $0010 add hl, bc @@ -19292,7 +19291,7 @@ Function8417: ; 8417 cp $d jr nc, .asm_8437 ld e, a - call $4439 + call Function8439 ret .asm_8437 @@ -19374,7 +19373,7 @@ Function8439: ; 8439 ; 848a Function848a: ; 848a - call $449d + call Function849d jr c, .asm_8497 ld [$d4d1], a xor a @@ -19439,13 +19438,13 @@ Function84d9: ; 84d9 and $3f cp $20 jr nc, .asm_84e5 - call $44ef + call Function84ef ld a, h ret .asm_84e5 and $1f - call $44ef + call Function84ef ld a, h xor $ff inc a @@ -19554,7 +19553,7 @@ PredefPointers: ; 856b dwb $4cdb, $14 dwb $4c50, $14 dwb $4bdd, $14 - dwb StatsScreenInit, BANK(StatsScreenInit) ; stats screen + dwb StatsScreenInit, BANK(StatsScreenInit) dwb $4b0a, $14 dwb $4b0e, $14 dwb $4b7b, $14 @@ -19627,9 +19626,9 @@ INCBIN "baserom.gbc", $8a88, $8ad1 - $8a88 Function8ad1: ; 8ad1 ld hl, $5c57 - call $5610 - call $571a - call $5699 + call Function9610 + call Function971a + call Function9699 ret ; 8ade @@ -19671,8 +19670,8 @@ Function9610: ; 9610 push bc ld a, [hli] push hl - call $5625 - call $5630 + call Function9625 + call Function9630 pop hl inc hl pop bc @@ -19725,7 +19724,7 @@ Function96a4: ; 96a4 ld de, $d080 ld bc, $0080 ld a, $5 - call $306b + call Function306b ret ; 96b3 @@ -19737,7 +19736,7 @@ Function971a: ; 971a ld de, $d040 ld bc, $0010 ld a, $5 - call $306b + call Function306b ret ; 9729 @@ -19968,17 +19967,17 @@ SpecialsPointers: ; 0xc029 dbw $23, $40b6 dbw $23, $4079 dbw $23, $40ab - dbw $00, $0d91 + dbw BANK(Functiond91), Functiond91 dbw BANK(WhiteBGMap), WhiteBGMap - dbw $00, Function485 + dbw BANK(Function485), Function485 dbw BANK(ClearTileMap), ClearTileMap - dbw $00, $1ad2 - dbw $00, $0e4a + dbw BANK(Function1ad2), Function1ad2 + dbw BANK(Functione4a), Functione4a dbw $03, $4230 dbw $03, $4252 dbw BANK(WaitSFX),WaitSFX - dbw $00, $3cdf - dbw $00, $3d47 + dbw BANK(Function3cdf), Function3cdf + dbw BANK(Function3d47), Function3d47 dbw $04, $6324 dbw $02, $4379 dbw $03, $425a @@ -20374,7 +20373,7 @@ Functionc4c7: ; c4c7 jr .asm_c5ad .asm_c59b - call $45ba + call Functionc5ba push af ld a, $f6 add c @@ -20389,7 +20388,7 @@ Functionc4c7: ; c4c7 .asm_c5ad call PrintNumber_AdvancePointer - call $45ba + call Functionc5ba ld a, $f6 add b ld [hli], a @@ -20504,7 +20503,7 @@ CheckBadge: ; c731 call CheckFlag2 ret nc ld hl, BadgeRequiredText - call $1d67 ; push text to queue + call Function1d67 ; push text to queue scf ret ; c73d @@ -20723,18 +20722,18 @@ INCBIN "baserom.gbc", $ca3b, $cb95 - $ca3b Functioncb95: ; cb95 - call $46ea + call Functionc6ea ld a, $1 jr .asm_cba1 - call $46ea + call Functionc6ea ld a, $2 .asm_cba1 ld [Buffer2], a .asm_cba4 ld hl, $4bb2 - call $46f5 + call Functionc6f5 jr nc, .asm_cba4 and $7f ld [$d0ec], a @@ -20747,12 +20746,12 @@ INCBIN "baserom.gbc", $cbb2, $cf8e - $cbb2 Functioncf8e: ; cf8e ld a, e push af - call $46ea + call Functionc6ea pop af ld [Buffer2], a .asm_cf97 ld hl, $4fa5 - call $46f5 + call Functionc6f5 jr nc, .asm_cf97 and $7f ld [$d0ec], a @@ -20763,14 +20762,14 @@ INCBIN "baserom.gbc", $cfa5, $d0b3 - $cfa5 Functiond0b3: ; d0b3 - call $50bc + call Functiond0bc and $7f ld [$d0ec], a ret ; d0bc Functiond0bc: ; d0bc - call $5121 + call Functiond121 jr c, .asm_d110 ld a, [PlayerState] cp $0 @@ -20782,8 +20781,8 @@ Functiond0bc: ; d0bc .asm_d0ce ld hl, $513e ld de, $514e - call $5119 - call $31cd + call Functiond119 + call Function31cd xor a ld [MusicFade], a ld de, $0000 @@ -20803,7 +20802,7 @@ Functiond0bc: ; d0bc jr nz, .asm_d10b ld hl, $5158 ld de, $516b - call $5119 + call Functiond119 ld a, $3 jr .asm_d113 @@ -20816,7 +20815,7 @@ Functiond0bc: ; d0bc ret .asm_d113 - call $31cd + call Function31cd ld a, $1 ret ; d119 @@ -20856,8 +20855,8 @@ INCBIN "baserom.gbc", $d13e, $d1d5 - $d13e Functiond1d5: ; d1d5 - call $527b - jp nz, $529c + call Functiond27b + jp nz, Functiond29c push hl call CheckItemPocket pop de @@ -20874,18 +20873,18 @@ INCBIN "baserom.gbc", $d1e9, $d1f1 - $d1e9 Functiond1f1: ; d1f1 ld h, d ld l, e - jp $529c + jp Functiond29c ; d1f6 Functiond1f6: ; d1f6 ld h, d ld l, e - jp $535a + jp Functiond35a ; d1fb Functiond1fb: ; d1fb ld hl, NumBalls - jp $529c + jp Functiond29c ; d201 Functiond201: ; d201 @@ -20894,11 +20893,11 @@ Functiond201: ; d201 ld a, [CurItem] ld c, a call GetTMHMNumber - jp $53c4 + jp Functiond3c4 ; d20d Functiond20d: ; d20d - call $527b + call Functiond27b jr nz, .asm_d241 push hl call CheckItemPocket @@ -20945,11 +20944,11 @@ Functiond20d: ; d20d db $6b .asm_d241 - jp $52ff + jp Functiond2ff ; d244 Functiond244: ; d244 - call $527b + call Functiond27b jr nz, .asm_d278 push hl call CheckItemPocket @@ -20996,7 +20995,7 @@ Functiond244: ; d244 db $6b .asm_d278 - jp $5349 + jp Functiond349 ; d27b Functiond27b: ; d27b @@ -21058,7 +21057,7 @@ Functiond29c: ; d29c jr .asm_d2a5 .asm_d2bd - call $5283 + call Functiond283 ld a, [de] cp c jr c, .asm_d2c6 @@ -21221,7 +21220,7 @@ Functiond374: ; d374 ld a, [hl] cp e jr nc, .asm_d387 - call $5396 + call Functiond396 ret nc jr .asm_d38a @@ -21686,7 +21685,7 @@ Functiond88c: ; d88c push de inc hl inc hl - call $5a6d + call Functionda6d pop de pop hl inc de @@ -21716,7 +21715,7 @@ Functiond88c: ; d88c ld a, $1 ld c, a ld b, $0 - call $617b + call Functione17b ld a, [$ffb5] ld [de], a inc de @@ -21784,7 +21783,7 @@ Functiond88c: ; d88c ld bc, $000a add hl, bc ld b, $0 - call $6167 + call Functione167 .asm_da45 ld a, [MonType] @@ -21918,7 +21917,7 @@ Functionde6e: ; de6e ld de, $ad10 ld a, [de] cp $14 - jp nc, $5f42 + jp nc, Functiondf42 inc a ld [de], a ld a, [CurPartySpecies] @@ -21934,7 +21933,7 @@ Functionde6e: ; de6e inc a jr nz, .asm_de85 call GetBaseData - call $5f47 + call Functiondf47 ld hl, PlayerName ld de, $afa6 ld bc, $000b @@ -22023,7 +22022,7 @@ Functionde6e: ; de6e ld bc, $0004 call CopyBytes ld b, $0 - call $5cb6 + call Functiondcb6 call CloseSRAM scf ret @@ -22093,7 +22092,7 @@ Functiondf8c: ; df8c push bc call CheckCaughtMon push bc - call $588c + call Functiond88c pop bc ld a, c and a @@ -22336,7 +22335,7 @@ Functione134: ; e134 ld a, $a call GetPartyParamLocation ld b, $1 - call $6167 + call Functione167 pop de ld a, $22 call GetPartyParamLocation @@ -22352,7 +22351,7 @@ Functione167: ; e167 ld c, $0 .asm_e169 inc c - call $617b + call Functione17b ld a, [$ffb5] ld [de], a inc de @@ -22558,7 +22557,7 @@ Functione277: ; e277 push bc xor a ld [MonType], a - call $588c + call Functiond88c jr nc, .asm_e2b0 ld hl, PartyMon1Nickname ld a, [PartyCount] @@ -22588,8 +22587,8 @@ Functione277: ; e277 ld a, [CurPartySpecies] ld [TempEnemyMonSpecies], a callab LoadEnemyMon - call $5e6e - jp nc, $63d4 + call Functionde6e + jp nc, Functione3d4 ld a, $2 ld [MonType], a xor a @@ -22721,7 +22720,7 @@ Functione277: ; e277 rst FarCall pop de jr c, .asm_e3b2 - call $63de + call Functione3de .asm_e3b2 pop bc @@ -22754,7 +22753,7 @@ INCBIN "baserom.gbc", $e3d9, $e3de - $e3d9 Functione3de: ; e3de push de - call $1d6e + call Function1d6e call Function2ed3 pop de push de @@ -22846,7 +22845,7 @@ Functione6ce: ; e6ce ret c .asm_e6ea - call $66fd + call Functione6fd ld a, [TempEnemyMonSpecies] ld [$d265], a call GetPokemonName @@ -23084,7 +23083,7 @@ Functionf780: ; f780 Functionf789: ; f789 ld hl, $783d call PrintText - call $7780 + call Functionf780 call Functiona80 ; fallthrough ; f795 @@ -23274,7 +23273,7 @@ Functionf8ec: ; f8ec jr .asm_f91d .asm_f91a - call $7963 + call Functionf963 .asm_f91d ld a, [hl] @@ -23307,7 +23306,7 @@ Functionf8ec: ; f8ec xor a ld [$d265], a ld a, b - call $7881 + call Functionf881 ld a, [hl] and $3f ld [$d265], a @@ -23361,13 +23360,13 @@ SECTION "bank4",DATA,BANK[$4] Function10000: ; 10000 ld hl, Options set 4, [hl] - call $468a + call Function1068a .asm_10008 call Functiona57 ld a, [$cf63] bit 7, a jr nz, .asm_1001a - call $4026 + call Function10026 call DelayFrame jr .asm_10008 @@ -23382,7 +23381,7 @@ Function10000: ; 10000 Function10026: ; 10026 ld a, [$cf63] ld hl, $4030 - call $486b + call Function1086b jp [hl] ; 10030 @@ -23398,7 +23397,7 @@ Function10493: ; 10493 ld a, [$cf63] bit 7, a jr nz, .asm_104ad - call $44b9 + call Function104b9 call DelayFrame jr .asm_1049b @@ -23445,15 +23444,15 @@ Function106a5: ; 106a5 ld [$cf65], a ld [$cf66], a ld [$d0e3], a - call $4955 - call $4a40 + call Function10955 + call Function10a40 ret ; 106be Function106be: ; 106be .asm_106be - call $46c7 - call $476f + call Function106c7 + call Function1076f jr c, .asm_106be ret ; 106c7 @@ -23461,7 +23460,7 @@ Function106be: ; 106be Function106c7: ; 106c7 ld a, [$cf63] ld hl, $46d1 - call $486b + call Function1086b jp [hl] ; 106d1 @@ -23532,7 +23531,7 @@ Function107bb: ; 107bb rst FarCall .asm_107ca - call $47d7 + call Function107d7 call Function1076f jr c, .asm_107ca xor a @@ -23623,13 +23622,13 @@ Function10955: ; 10955 inc a dec c jr nz, .asm_1098a - call $49bb - call $49a5 + call Function109bb + call Function109a5 ld hl, $c590 ld bc, $0412 call TextBox call EnableLCD - call $489d + call Function1089d ret ; 109a5 @@ -23699,7 +23698,7 @@ PackGFX: INCBIN "gfx/misc/pack.2bpp" Function113d6: ; 113d6 - call $54dd + call Function114dd ret ; 113da @@ -23717,7 +23716,7 @@ INCBIN "baserom.gbc", $113e5, $114dd - $113e5 Function114dd: ; 114dd call UpdateTime ld hl, $dc23 - call $5621 + call Function11621 ret ; 114e7 @@ -23795,7 +23794,7 @@ INCBIN "baserom.gbc", $116b3, $116b7 - $116b3 Function116b7: ; 0x116b7 call Function2ed3 - call $56c1 + call Function116c1 call Function2b74 ret ; 0x116c1 @@ -23819,10 +23818,10 @@ Function116c1: ; 116c1 push af ld a, $1 ld [$ffaa], a - call $56f8 + call Function116f8 call DelayFrame .asm_116e5 - call $5915 + call Function11915 jr nc, .asm_116e5 pop af ld [$ffaa], a @@ -23839,15 +23838,15 @@ Function116f8: ; 116f8 ld b, $8 call GetSGBLayout call DisableLCD - call $5c51 - call $58a8 + call Function11c51 + call Function118a8 ld a, $e3 ld [rLCDC], a - call $571d + call Function1171d call WaitBGMap call WaitTop call Function32f9 - call $5be0 + call Function11be0 ret ; 1171d @@ -23888,14 +23887,14 @@ Function118a8: ; 118a8 call ByteFill ld hl, $c4b5 ld bc, $0612 - call $589c + call Function1189c jr nz, .asm_118c4 ld bc, $0412 .asm_118c4 call ClearBox ld de, $5da2 - call $589c + call Function1189c jr nz, .asm_118d5 ld hl, $0055 add hl, de @@ -23906,7 +23905,7 @@ Function118a8: ; 118a8 push de ld hl, $c541 ld bc, $0712 - call $589c + call Function1189c jr nz, .asm_118e7 ld hl, $c519 ld bc, $0912 @@ -23919,7 +23918,7 @@ Function118a8: ; 118a8 pop de ld hl, $c542 ld b, $5 - call $589c + call Function1189c jr nz, .asm_11903 ld hl, $c51a ld b, $6 @@ -23946,11 +23945,11 @@ Function11915: ; 11915 ld a, [$cf63] bit 7, a jr nz, .asm_11930 - call $5968 + call Function11968 ld a, $23 ld hl, $4f62 rst FarCall - call $5940 + call Function11940 call DelayFrame and a ret @@ -23969,7 +23968,7 @@ Function11940: ; 11940 xor a ld [hBGMapMode], a ld hl, $c505 - call $589c + call Function1189c jr nz, .asm_1194e ld hl, $c4dd @@ -24139,7 +24138,7 @@ Function12580: ; 12580 ld hl, $65ad .asm_12590 - call $31cd + call Function31cd ld a, $1 ld [$d0ec], a ret @@ -24173,8 +24172,8 @@ StartMenu: ; 125cd call .DrawMenuAccount_ call MenuFunc_1e7f call .DrawBugContestStatusBox - call $2e31 - call $2e20 + call Function2e31 + call Function2e20 ld a, $1 ld hl, $64bf rst $8 @@ -24183,7 +24182,7 @@ StartMenu: ; 125cd jr .Select .Reopen - call $1ad2 + call Function1ad2 call Function485 call .SetUpMenuItems ld a, [$d0d2] @@ -24196,7 +24195,7 @@ StartMenu: ; 125cd ld a, [$cf88] ld [$d0d2], a call PlayClickSFX - call $1bee + call Function1bee call .OpenMenu ; Menu items have different return functions. @@ -24231,7 +24230,7 @@ StartMenu: ; 125cd .ReturnEnd call Function1c07 .ReturnEnd2 - call $2dcf + call Function2dcf call Function485 ret @@ -24245,7 +24244,7 @@ StartMenu: ; 125cd ld [MenuSelection], a .loop call .PrintMenuAccount - call $1f1a + call Function1f1a ld a, [$cf73] cp BUTTON_B jr z, .b @@ -24293,12 +24292,12 @@ StartMenu: ; 125cd .Clear ; 126b7 call WhiteBGMap - call $1d7d - call $2bae + call Function1d7d + call Function2bae call .DrawMenuAccount_ call MenuFunc_1e7f call .DrawBugContestStatus - call $1ad2 + call Function1ad2 call $0d90 call $2b5c ret @@ -24585,7 +24584,7 @@ StartMenu_Quit: ; 128f0 StartMenu_Save: ; 1290b ; Save the game. - call $2879 + call Function2879 ld a, $5 ld hl, $4a1a rst FarCall @@ -24615,7 +24614,7 @@ StartMenu_Status: ; 12928 ld a, $9 ld hl, $5105 rst FarCall - call $2b3c + call Function2b3c ld a, 0 ret ; 12937 @@ -24631,7 +24630,7 @@ StartMenu_Pokedex: ; 12937 ld a, $10 ld hl, $4000 rst FarCall - call $2b3c + call Function2b3c .asm_12949 ld a, 0 @@ -24645,7 +24644,7 @@ StartMenu_Pokegear: ; 1294c ld a, $24 ld hl, $4b8d rst FarCall - call $2b3c + call Function2b3c ld a, 0 ret ; 1295b @@ -24660,7 +24659,7 @@ StartMenu_Pack: ; 1295b ld a, [$cf66] and a jr nz, .asm_12970 - call $2b3c + call Function2b3c ld a, 0 ret .asm_12970 @@ -24714,7 +24713,7 @@ StartMenu_Pokemon: ; 12976 jr z, .quit .return - call $2b3c + call Function2b3c ld a, 0 ret @@ -24732,7 +24731,7 @@ INCBIN "baserom.gbc", $129d5, $12a60 - $129d5 CantUseItem: ; 12a60 ld hl, CantUseItemText - call $2012 + call Function2012 ret ; 12a67 @@ -24898,7 +24897,7 @@ GiveTakePartyMonItem: ; 12b60 cp 1 jr nz, .asm_12ba0 - call $1d6e + call Function1d6e call ClearPalettes call Function12ba9 call ClearPalettes @@ -24947,7 +24946,7 @@ Function12ba9: ; 12ba9 .next ld hl, CantBeHeldText - call $1d67 + call Function1d67 jr .loop .quit @@ -24977,13 +24976,13 @@ Function12bd9: ; 12bd9 .asm_12bf4 call $6cea ld hl, MadeHoldText - call $1d67 + call Function1d67 call GivePartyItem ret .asm_12c01 ld hl, PleaseRemoveMailText - call $1d67 + call Function1d67 ret .asm_12c08 @@ -25004,7 +25003,7 @@ Function12bd9: ; 12bd9 jr nc, .asm_12c3c ld hl, TookAndMadeHoldText - call $1d67 + call Function1d67 ld a, [$d265] ld [CurItem], a call GivePartyItem @@ -25015,7 +25014,7 @@ Function12bd9: ; 12bd9 ld [CurItem], a call $6cdf ld hl, ItemStorageIsFullText - call $1d67 + call Function1d67 .asm_12c4b ret @@ -25060,17 +25059,17 @@ TakePartyItem: ; 12c60 ld [hl], NO_ITEM call GetItemName ld hl, TookFromText - call $1d67 + call Function1d67 jr .asm_12c9a .asm_12c8c ld hl, IsntHoldingAnythingText - call $1d67 + call Function1d67 jr .asm_12c9a .asm_12c94 ld hl, ItemStorageIsFullText - call $1d67 + call Function1d67 .asm_12c9a ret @@ -25146,7 +25145,7 @@ INCBIN "baserom.gbc", $12cdf, $12e00 - $12cdf OpenPartyStats: ; 12e00 - call $1d6e + call Function1d6e call ClearSprites ; PartyMon xor a @@ -25155,7 +25154,7 @@ OpenPartyStats: ; 12e00 ld a, $25 call Predef call MaxVolume - call $1d7d + call Function1d7d ld a, 0 ret ; 12e1b @@ -25171,12 +25170,12 @@ SelectMenu: ; 13327 jp UseRegisteredItem .NotRegistered - call $2e08 + call Function2e08 ld b, BANK(ItemMayBeRegisteredText) ld hl, ItemMayBeRegisteredText - call $269a + call Function269a call $0a46 - jp $2dcf + jp Function2dcf ; 13340 @@ -25303,17 +25302,17 @@ UseRegisteredItem: ; 133c3 ; 133df .NoFunction ; 133df - call $2e08 + call Function2e08 call CantUseItem - call $2dcf + call Function2dcf and a ret ; 133ea .Current ; 133ea - call $2e08 + call Function2e08 call DoItemEffect - call $2dcf + call Function2dcf and a ret ; 133f5 @@ -25322,8 +25321,8 @@ UseRegisteredItem: ; 133c3 call ResetWindow call FadeToMenu call DoItemEffect - call $2b3c - call $2dcf + call Function2b3c + call Function2dcf and a ret ; 13406 @@ -25349,23 +25348,23 @@ UseRegisteredItem: ; 133c3 .asm_13425 call CantUseItem - call $2dcf + call Function2dcf and a ret ; 1342d Function1342d: ; 1342d - call $744a - call $747d + call Function1344a + call Function1347d jr c, .asm_13448 ld [$d041], a - call $74dd + call Function134dd jr c, .asm_13448 ld hl, $d041 cp [hl] jr z, .asm_13448 - call $74c0 + call Function134c0 and a ret @@ -25381,7 +25380,7 @@ Function1344a: ; 1344a ld [CurFruit], a ld a, d ld [$d040], a - call $745a + call Function1345a ret ; 1345a @@ -25477,17 +25476,17 @@ Function134c0: ; 134c0 ; 134dd Function134dd: ; 134dd - call $1d6e + call Function1d6e ld hl, $750d call PrintText - call $7512 + call Function13512 ld hl, $7550 call Function1d3c - call $352f - call $1ad2 + call Function352f + call Function1ad2 xor a ld [$d0e4], a - call $350c + call Function350c call Function1c17 ld a, [$cf73] cp $2 @@ -25517,7 +25516,7 @@ Function13512: ; 13512 ld de, $7537 call PlaceString ld hl, $c4f4 - call $753f + call Function1353f pop af ld [Options], a ret @@ -25535,7 +25534,7 @@ Function1353f: ; 1353f add hl, de ld a, [hl] pop de - call $756b + call Function1356b ret ; 13550 @@ -25544,7 +25543,7 @@ INCBIN "baserom.gbc", $13550, $1356b - $13550 Function1356b: ; 1356b push de - call $7575 + call Function13575 ld d, h ld e, l pop hl @@ -25609,7 +25608,7 @@ Function14000: ; 14000 ld [$0000], a call LatchClock ld a, $c - ld [$4000], a + ld [Function14000], a ld a, [$a000] set 6, a ld [$a000], a @@ -25624,7 +25623,7 @@ Function14019: ; 14019 ld [$0000], a call LatchClock ld a, $c - ld [$4000], a + ld [Function14000], a ld a, [$a000] res 6, a ld [$a000], a @@ -25691,10 +25690,10 @@ Function1406a: ; 1406a call LatchClock ld hl, $a000 ld a, $c - ld [$4000], a + ld [Function14000], a res 7, [hl] ld a, $0 - ld [$4000], a + ld [Function14000], a xor a ld [$ac60], a call CloseSRAM @@ -25830,7 +25829,7 @@ Function14135: ; 14135 ld [$ffbd], a ld a, [$d155] ld [$ffbe], a - call $43c8 + call Function143c8 ret ; 14146 @@ -25838,8 +25837,8 @@ INCBIN "baserom.gbc", $14146, $14168 - $14146 Function14168: ; 14168 - call $416f - call $4209 + call Function1416f + call Function14209 ret ; 1416f @@ -25964,9 +25963,9 @@ AddOutdoorSprites: ; 141ee Function14209: ; 14209 ld a, $4 - call $263b - call $439b - call $4215 + call Function263b + call Function1439b + call Function14215 ret ; 14215 @@ -26388,7 +26387,7 @@ Function1439b: ; 1439b .asm_143bd push bc push hl - call $43c8 + call Function143c8 pop hl pop bc dec c @@ -26402,14 +26401,14 @@ Function143c8: ; 143c8 ld a, [$ffbd] call SafeGetSprite ld a, [$ffbe] - call $4406 + call Function14406 push hl push de push bc ld a, [$d13e] bit 7, a jr nz, .asm_143df - call $4418 + call Function14418 .asm_143df pop bc @@ -26435,7 +26434,7 @@ Function143c8: ; 143c8 ld a, h add $8 ld h, a - call $4418 + call Function14418 .asm_14405 ret @@ -26495,7 +26494,7 @@ Function1442f: ; 1442f ld a, c and a ret z - call $412a + call Function1412a ret ; 1444d @@ -27319,7 +27318,7 @@ Function14b5f: ; 14b5f ; 14b85 Function14b85: ; 14b85 - call $4c10 + call Function14c10 ret ; 14b89 @@ -27335,18 +27334,18 @@ Function14c10: ; 14c10 ld a, $41 ld hl, $50d9 rst FarCall - call $4da9 - call $4dbb - call $4dd7 - call $4df7 - call $4e0c - call $4e13 - call $4e2d - call $4e40 - call $4e55 - call $4e76 - call $4e8b - call $4c6b + call Function14da9 + call Function14dbb + call Function14dd7 + call Function14df7 + call Function14e0c + call Function14e13 + call Function14e2d + call Function14e40 + call Function14e55 + call Function14e76 + call Function14e8b + call Function14c6b ld a, $11 ld hl, $4725 rst FarCall @@ -27370,7 +27369,7 @@ Function14c10: ; 14c10 ; 14c6b Function14c6b: ; 14c6b - call $4c90 + call Function14c90 ld a, $0 call GetSRAMBank ld a, [$bf10] @@ -27410,12 +27409,12 @@ INCBIN "baserom.gbc", $14c99, $14cbb - $14c99 Function14cbb: ; 14cbb - call $51fb - call $4d06 - call $4ce2 - call $4cf4 - call $4d68 - call $4d5c + call Function151fb + call Function14d06 + call Function14ce2 + call Function14cf4 + call Function14d68 + call Function14d5c ld a, $0 call GetSRAMBank xor a @@ -27469,7 +27468,7 @@ Function14d5c: ; 14d5c ; 14d68 Function14d68: ; 14d68 - call $509a + call Function1509a ret ; 14d6c @@ -27480,7 +27479,7 @@ Function14da0: ; 14da0 ld a, [$d4b4] and a ret nz - call $4cbb + call Function14cbb ret ; 14da9 @@ -27533,8 +27532,8 @@ Function14df7: ; 14df7 ; 14e0c Function14e0c: ; 14e0c - call $50d8 - call $50f9 + call Function150d8 + call Function150f9 ret ; 14e13 @@ -27543,7 +27542,7 @@ Function14e13: ; 14e13 ld bc, $0b7a ld a, $1 call GetSRAMBank - call $5273 + call Function15273 ld a, e ld [$ad0d], a ld a, d @@ -27605,7 +27604,7 @@ Function14e8b: ; 14e8b ld bc, $0b7a ld a, $0 call GetSRAMBank - call $5273 + call Function15273 ld a, e ld [$bf0d], a ld a, d @@ -27935,7 +27934,7 @@ Function15363: ; 15363 ld a, [hli] ld h, [hl] ld l, a - call $541d + call Function1541d ret ; 15377 @@ -28039,7 +28038,7 @@ LOG_OFF EQU 6 INCBIN "baserom.gbc", $157bb, $157d1 - $157bb KrisWithdrawItemMenu: ; 0x157d1 - call $1d6e + call Function1d6e ld a, BANK(ClearPCItemScreen) ld hl, ClearPCItemScreen rst $8 @@ -28050,7 +28049,7 @@ KrisWithdrawItemMenu: ; 0x157d1 jr .asm_157da .asm_157e4 - call $2b3c + call Function2b3c xor a ret ; 0x157e9 @@ -28071,7 +28070,7 @@ Function157e9: ; 0x157e9 .askquantity ld hl, .HowManyText - call $1d4f + call Function1d4f ld a, $9 ld hl, $4fbf rst $8 @@ -28085,18 +28084,18 @@ Function157e9: ; 0x157e9 ld a, [$d107] ld [Buffer2], a ld hl, NumItems - call $2f66 + call Function2f66 jr nc, .PackFull ld a, [Buffer1] ld [$d10c], a ld a, [Buffer2] ld [$d107], a ld hl, $d8f1 - call $2f53 + call Function2f53 ld a, $3b call Predef ld hl, .WithdrewText - call $1d4f + call Function1d4f xor a ld [hBGMapMode], a call Function1c07 @@ -28104,7 +28103,7 @@ Function157e9: ; 0x157e9 .PackFull ld hl, .NoRoomText - call $1d67 + call Function1d67 ret .done @@ -28125,7 +28124,7 @@ Function157e9: ; 0x157e9 KrisTossItemMenu: ; 0x1585f - call $1d6e + call Function1d6e ld a, BANK(ClearPCItemScreen) ld hl, ClearPCItemScreen rst $8 @@ -28139,7 +28138,7 @@ KrisTossItemMenu: ; 0x1585f jr .asm_15868 .asm_15878 - call $2b3c + call Function2b3c xor a ret ; 0x1587d @@ -28168,7 +28167,7 @@ KrisDepositItemMenu: ; 0x1588b call Function158b8 jr c, .asm_158b6 call Function2ed3 - call $1d6e + call Function1d6e ld a, $4 ld hl, $46a5 rst $8 @@ -28186,7 +28185,7 @@ KrisDepositItemMenu: ; 0x1588b jr .asm_1589c .asm_158b3 - call $2b3c + call Function2b3c .asm_158b6 xor a @@ -28199,7 +28198,7 @@ Function158b8: ; 0x158b8 rst $8 ret nc ld hl, Text158c7 - call $1d67 + call Function1d67 scf ret ; 0x158c7 @@ -28262,7 +28261,7 @@ Function1590a: ; 0x1590a .asm_1591d ld hl, .HowManyText - call $1d4f + call Function1d4f ld a, $9 ld hl, $4fbf rst $8 @@ -28278,14 +28277,14 @@ Function1590a: ; 0x1590a ld a, [$d107] ld [Buffer2], a ld hl, $d8f1 - call $2f66 + call Function2f66 jr nc, .asm_15965 ld a, [Buffer1] ld [$d10c], a ld a, [Buffer2] ld [$d107], a ld hl, NumItems - call $2f53 + call Function2f53 ld a, $3b call Predef ld hl, .DepositText @@ -28342,7 +28341,7 @@ Function15985: ; 0x15985 ld [$cf88], a ld a, [$d0dd] ld [$d0e4], a - call $350c + call Function350c ld a, [$d0e4] ld [$d0dd], a ld a, [$cfa9] @@ -28391,7 +28390,7 @@ Function15985: ; 0x15985 ld a, $9 ld hl, $4706 rst $8 - call $1bee + call Function1bee and a ret @@ -28420,10 +28419,10 @@ INCBIN "baserom.gbc", $15a20, $15a45 - $15a20 Function15a45: ; 15a45 - call $5b31 + call Function15b31 ld a, c ld [EngineBuffer1], a - call $5b10 + call Function15b10 ld a, [EngineBuffer1] ld hl, $5a57 rst JumpTable @@ -28434,25 +28433,25 @@ INCBIN "baserom.gbc", $15a57, $15a6e - $15a57 Function15a6e: ; 15a6e - call $5bbb - call $1d6e + call Function15bbb + call Function1d6e ld hl, $5e4a - call $5fcd - call $5c62 + call Function15fcd + call Function15c62 ld hl, $5e68 - call $5fcd + call Function15fcd ret ; 15a84 Function15a84: ; 15a84 ld b, $5 ld de, $5c51 - call $5b10 - call $5c25 - call $1d6e + call Function15b10 + call Function15c25 + call Function1d6e ld hl, $5e6d - call $5fcd - call $5c62 + call Function15fcd + call Function15c62 ld hl, WalkingDirection ld a, [hli] or [hl] @@ -28462,18 +28461,18 @@ Function15a84: ; 15a84 .asm_15aa7 ld hl, $5e8b - call $5fcd + call Function15fcd ret ; 15aae Function15aae: ; 15aae - call $5bbb - call $1d6e + call Function15bbb + call Function1d6e ld hl, $5e90 - call $5fcd - call $5c62 + call Function15fcd + call Function15c62 ld hl, $5eae - call $5fcd + call Function15fcd ret ; 15ac4 @@ -28487,14 +28486,14 @@ Function15ac4: ; 15ac4 ld de, $5aff .asm_15ad5 - call $5b10 - call $5c25 - call $1d6e + call Function15b10 + call Function15c25 + call Function1d6e ld hl, $5f83 - call $5fcd - call $5c62 + call Function15fcd + call Function15c62 ld hl, $5fb4 - call $5fcd + call Function15fcd ret ; 15aee @@ -28553,7 +28552,7 @@ INCBIN "baserom.gbc", $15b56, $15b62 - $15b56 Function15b62: ; 15b62 - call $1d6e + call Function1d6e ld hl, $5f83 call PrintText ld a, $1 @@ -28586,8 +28585,8 @@ Function15b6e: ; 15b6e Function15b8d: ; 15b8d call Function1c07 - call $5bbb - call $5c62 + call Function15bbb + call Function15c62 and a ld a, $5 ret @@ -28595,7 +28594,7 @@ Function15b8d: ; 15b8d Function15b9a: ; 15b9a call Function1c07 - call $5eb3 + call Function15eb3 ld a, $5 ret ; 15ba3 @@ -28603,13 +28602,13 @@ Function15b9a: ; 15b9a Function15ba3: ; 15ba3 call Function1c07 ld hl, $5fb4 - call $5fcd + call Function15fcd ld a, $ff ret ; 15baf Function15baf: ; 15baf - call $1d6e + call Function1d6e ld hl, $5fb9 call PrintText ld a, $1 @@ -28638,7 +28637,7 @@ Function15bbb: ; 15bbb cp $ff jr z, .asm_15be4 push de - call $5be5 + call Function15be5 pop de jr .asm_15bd7 @@ -28661,15 +28660,15 @@ Function15be5: ; 15be5 ld hl, StringBuffer1 ld de, StringBuffer2 ld bc, $8206 - call $3198 + call Function3198 pop hl ld de, StringBuffer1 ld c, $3 .asm_15c0b - call $5c1a + call Function15c1a swap a ld b, a - call $5c1a + call Function15c1a or b ld [hli], a dec c @@ -28739,15 +28738,15 @@ Function15c62: ; 15c62 ld a, $1 ld [WalkingX], a .asm_15c74 - call $5cef + call Function15cef jr nc, .asm_15c74 - call $2b3c + call Function2b3c ret ; 15c7d Function15c7d: ; 15c7d push af - call $5ca3 + call Function15ca3 ld a, [hli] ld h, [hl] ld l, a @@ -28764,15 +28763,15 @@ Function15c7d: ; 15c7d ; 15c91 Function15c91: ; 15c91 - call $5ca3 + call Function15ca3 inc hl inc hl ld a, [hl] and a - jp z, $5d83 + jp z, Function15d83 cp $1 - jp z, $5da5 - jp $5de2 + jp z, Function15da5 + jp Function15de2 ; 15ca3 Function15ca3: ; 15ca3 @@ -28793,14 +28792,14 @@ Function15cef: ; 15cef ld a, $9 ld hl, $4ae8 rst FarCall - call $1ad2 + call Function1ad2 ld hl, $5e18 call Function1d3c ld a, [WalkingX] ld [$cf88], a ld a, [WalkingY] ld [$d0e4], a - call $350c + call Function350c ld a, [$d0e4] ld [WalkingY], a ld a, [$cfa9] @@ -28813,17 +28812,17 @@ Function15cef: ; 15cef jr z, .asm_15d27 .asm_15d27 - call $5c91 + call Function15c91 jr c, .asm_15d68 - call $5d97 + call Function15d97 jr c, .asm_15d68 ld de, Money ld bc, $ffc3 ld a, $3 - call $600b + call Function1600b jr c, .asm_15d79 ld hl, NumItems - call $2f66 + call Function2f66 jr nc, .asm_15d6f ld a, [$d107] ld e, a @@ -28831,12 +28830,12 @@ Function15cef: ; 15cef ld b, $1 ld hl, WalkingDirection call BitTableFunc - call $5fc3 + call Function15fc3 ld de, Money ld bc, $ffc3 - call $5ffa + call Function15ffa ld a, $4 - call $5c7d + call Function15c7d call $0a36 .asm_15d68 @@ -28850,14 +28849,14 @@ Function15cef: ; 15cef .asm_15d6f ld a, $3 - call $5c7d + call Function15c7d call $0a36 and a ret .asm_15d79 ld a, $2 - call $5c7d + call Function15c7d call $0a36 and a ret @@ -28867,7 +28866,7 @@ Function15d83: ; 15d83 ld a, $63 ld [$d10d], a ld a, $0 - call $5c7d + call Function15c7d ld a, $9 ld hl, $4fc9 rst FarCall @@ -28879,8 +28878,8 @@ Function15d97: ; 15d97 ld a, $3b call Predef ld a, $1 - call $5c7d - call $1dcf + call Function15c7d + call Function1dcf ret ; 15da5 @@ -28919,7 +28918,7 @@ Function15da5: ; 15da5 .asm_15dd8 ld a, $5 - call $5c7d + call Function15c7d call $0a36 scf ret @@ -28927,8 +28926,8 @@ Function15da5: ; 15da5 Function15de2: ; 15de2 ld a, $0 - call $5c7d - call $5df9 + call Function15c7d + call Function15df9 ld a, $63 ld [$d10d], a ld a, $9 @@ -28971,8 +28970,8 @@ Function15eb3: ; 15eb3 rst FarCall ld a, [$cf66] and a - jp z, $5ece - call $5ee0 + jp z, Function15ece + call Function15ee0 jr .asm_15ebc ; 15ece @@ -29022,14 +29021,14 @@ Function15efd: ; 15efd call ClearBox ld hl, $5f78 call PrintTextBoxText - call $1dcf + call Function1dcf jr c, .asm_15f6e ld de, Money ld bc, $ffc3 - call $5fd7 + call Function15fd7 ld a, [$d107] ld hl, NumItems - call $2f53 + call Function2f53 ld a, $3b call Predef ld hl, $c5b9 @@ -29037,7 +29036,7 @@ Function15efd: ; 15efd call ClearBox ld hl, $5fbe call PrintTextBoxText - call $5fc3 + call Function15fc3 ld a, $9 ld hl, $4af0 rst FarCall @@ -29060,7 +29059,7 @@ Function15fc3: ; 15fc3 ; 15fcd Function15fcd: ; 15fcd - call $1d4f + call Function1d4f call $0a36 call Function1c07 ret @@ -29068,10 +29067,10 @@ Function15fcd: ; 15fcd Function15fd7: ; 15fd7 ld a, $3 - call $6053 + call Function16053 ld bc, $5ff7 ld a, $3 - call $600b + call Function1600b jr z, .asm_15ff5 jr c, .asm_15ff5 ld hl, $5ff7 @@ -29096,7 +29095,7 @@ INCBIN "baserom.gbc", $15ff7, $15ffa - $15ff7 Function15ffa: ; 15ffa ld a, $3 - call $6035 + call Function16035 jr nc, .asm_16009 xor a ld [de], a @@ -29616,10 +29615,10 @@ Function2400e: ; 2400e ld hl, Function1c66 ld a, [$cf94] rst FarCall - call $4085 + call Function24085 call Function1ad2 call Function321c - call $408f + call Function2408f ret ; 24022 @@ -29627,11 +29626,11 @@ Function24022: ; 24022 ld hl, Function1c66 ld a, [$cf94] rst FarCall - call $4085 + call Function24085 callba MobileTextBorder call Function1ad2 call Function321c - call $408f + call Function2408f ret ; 2403c @@ -29639,7 +29638,7 @@ Function2403c: ; 2403c ld hl, Function1c66 ld a, [$cf94] rst FarCall - call $4085 + call Function24085 callba MobileTextBorder call Function1ad2 call Function321c @@ -29654,7 +29653,7 @@ Function2403c: ; 2403c ld a, [$cd2b] and a jr nz, .asm_24076 - call $41ba + call Function241ba ld a, [$cfa8] and c jr z, .asm_2405a @@ -29677,7 +29676,7 @@ Function24085: ; 24085 xor a ld [hBGMapMode], a call Function1cbb - call $40db + call Function240db ret ; 2408f @@ -29742,17 +29741,17 @@ Function240db: ; 240db ld d, [hl] call Function1cc6 call Function1d05 - call $40d3 + call Function240d3 ld b, a .asm_240eb push bc push hl - call $40cd + call Function240cd ld c, a .asm_240f1 push bc ld a, [$cf94] - call $201c + call Function201c inc de ld a, [$cf93] ld c, a @@ -29831,7 +29830,7 @@ Function241a8: ; 241a8 res 7, [hl] ld a, [hBGMapMode] push af - call $4216 + call Function24216 pop af ld [hBGMapMode], a ret @@ -29860,16 +29859,16 @@ INCBIN "baserom.gbc", $241d5, $24216 - $241d5 Function24216: ; 24216 .asm_24216 - call $431a - call $4238 - call $4249 + call Function2431a + call Function24238 + call Function24249 jr nc, .asm_24237 - call $4270 + call Function24270 jr c, .asm_24237 ld a, [$cfa5] bit 7, a jr nz, .asm_24237 - call $1bdd + call Function1bdd ld b, a ld a, [$cfa8] and b @@ -29895,7 +29894,7 @@ Function24238: ; 24238 Function24249: ; 24249 .asm_24249 call RTC - call $4259 + call Function24259 ret c ld a, [$cfa5] bit 7, a @@ -29914,7 +29913,7 @@ Function24259: ; 24259 .asm_24266 call Functiona57 - call $1bdd + call Function1bdd and a ret z scf @@ -29922,15 +29921,15 @@ Function24259: ; 24259 ; 24270 Function24270: ; 24270 - call $1bdd + call Function1bdd bit 0, a - jp nz, $4318 + jp nz, Function24318 bit 1, a - jp nz, $4318 + jp nz, Function24318 bit 2, a - jp nz, $4318 + jp nz, Function24318 bit 3, a - jp nz, $4318 + jp nz, Function24318 bit 4, a jr nz, .asm_242fa bit 5, a @@ -30063,7 +30062,7 @@ Function2431a: ; 2431a ld b, a ld a, [$cfa2] ld c, a - call $1d05 + call Function1d05 ld a, [$cfa7] swap a and $f @@ -30141,10 +30140,10 @@ Function24374: ; 24374 ld h, [hl] ld l, a set 0, [hl] - call $1cfd - call $43cd - call $1d19 - call $43cd + call Function1cfd + call Function243cd + call Function1d19 + call Function243cd jr .asm_243b5 .asm_243ae @@ -30157,7 +30156,7 @@ Function24374: ; 24374 .asm_243b5 pop hl - call $43e7 + call Function243e7 ld a, h ld [de], a dec de @@ -30179,7 +30178,7 @@ Function243cd: ; 243cd call Function1c53 inc b inc c - call $43e7 + call Function243e7 .asm_243d5 push bc push hl @@ -30209,10 +30208,10 @@ Function243e8: ; 243e8 push af ld a, $7 ld [rSVBK], a - call $1c7e + call Function1c7e ld a, l or h - jp z, $445d + jp z, Function2445d ld a, l ld [$cf71], a ld a, h @@ -30226,7 +30225,7 @@ Function243e8: ; 243e8 call Function1c23 .asm_24411 - call $1c7e + call Function1c7e ld a, h or l jr z, .asm_2441b @@ -30253,7 +30252,7 @@ Function24426: ; 24426 ld bc, $0168 call CopyBytes call CloseSRAM - call $2173 + call Function2173 xor a call GetSRAMBank ld hl, $a000 @@ -30374,9 +30373,9 @@ Function244c3: ; 0x244c3 Function244e3: ; 244e3 ld hl, $4547 call Function1d3c - call $1cbb - call $1ad2 - call $321c + call Function1cbb + call Function1ad2 + call Function321c ld b, $12 call GetSGBLayout xor a @@ -30393,7 +30392,7 @@ Function244e3: ; 244e3 ld a, [$cf83] inc a ld c, a - call $1d05 + call Function1d05 ld a, $80 ld [$ffad], a ld bc, $0707 @@ -30406,14 +30405,14 @@ Function244e3: ; 244e3 Function24528: ; 24528 ld hl, $4547 call Function1d3c - call $1ce1 + call Function1ce1 call WaitBGMap call ClearSGB xor a ld [hBGMapMode], a - call $2173 - call $321c - call $1ad2 + call Function2173 + call Function321c + call Function1ad2 call $0e51 ret ; 24547 @@ -30427,11 +30426,11 @@ Function245af: ; 245af ld [hBGMapMode], a inc a ld [$ffaa], a - call $471a - call $4764 - call $47dd - call $45f1 - call $321c + call Function2471a + call Function24764 + call Function247dd + call Function245f1 + call Function321c xor a ld [hBGMapMode], a ret @@ -30439,14 +30438,14 @@ Function245af: ; 245af Function245cb: ; 245cb .asm_245cb - call $4609 - jp c, $45d6 - call z, $45e1 + call Function24609 + jp c, Function245d6 + call z, Function245e1 jr .asm_245cb ; 245d6 Function245d6: ; 245d6 - call $1ff8 + call Function1ff8 ld [$cf73], a ld a, $0 ld [$ffaa], a @@ -30454,7 +30453,7 @@ Function245d6: ; 245d6 ; 245e1 Function245e1: ; 245e1 - call $45f1 + call Function245f1 ld a, $1 ld [hBGMapMode], a ld c, $3 @@ -30471,9 +30470,9 @@ Function245f1: ; 245f1 ld a, [hl] push af set 4, [hl] - call $47f0 - call $488b - call $48b8 + call Function247f0 + call Function2488b + call Function248b8 pop af ld [Options], a ret @@ -30481,7 +30480,7 @@ Function245f1: ; 245f1 Function24609: ; 24609 .asm_24609 - call $1bd3 + call Function1bd3 ld a, [$ffa9] and $f0 ld b, a @@ -30489,21 +30488,21 @@ Function24609: ; 24609 and $f or b bit 0, a - jp nz, $4644 + jp nz, Function24644 bit 1, a jp nz, $466f bit 2, a - jp nz, $4673 + jp nz, Function24673 bit 3, a - jp nz, $4695 + jp nz, Function24695 bit 4, a - jp nz, $46b5 + jp nz, Function246b5 bit 5, a - jp nz, $46a1 + jp nz, Function246a1 bit 6, a - jp nz, $46c9 + jp nz, Function246c9 bit 7, a - jp nz, $46df + jp nz, Function246df jr .asm_24609 ; 24640 @@ -30511,15 +30510,15 @@ INCBIN "baserom.gbc", $24640, $24644 - $24640 Function24644: ; 24644 - call $1bee + call Function1bee ld a, [$cfa9] dec a - call $48d5 + call Function248d5 ld a, [MenuSelection] ld [CurItem], a ld a, [$cf75] ld [$d10d], a - call $46fc + call Function246fc dec a ld [$cf77], a ld [$d107], a @@ -30539,14 +30538,14 @@ Function24644: ; 24644 Function24673: ; 24673 ld a, [$cf91] bit 7, a - jp z, $2ec8 + jp z, Function2ec8 ld a, [$cfa9] dec a - call $48d5 + call Function248d5 ld a, [MenuSelection] cp $ff - jp z, $2ec8 - call $46fc + jp z, Function2ec8 + call Function246fc dec a ld [$cf77], a ld a, $4 @@ -30557,7 +30556,7 @@ Function24673: ; 24673 Function24695: ; 24695 ld a, [$cf91] bit 6, a - jp z, $2ec8 + jp z, Function2ec8 ld a, $8 scf ret @@ -30566,10 +30565,10 @@ Function24695: ; 24695 Function246a1: ; 246a1 ld hl, $cfa6 bit 7, [hl] - jp z, $2ec8 + jp z, Function2ec8 ld a, [$cf91] bit 3, a - jp z, $2ec8 + jp z, Function2ec8 ld a, $20 scf ret @@ -30578,10 +30577,10 @@ Function246a1: ; 246a1 Function246b5: ; 246b5 ld hl, $cfa6 bit 7, [hl] - jp z, $2ec8 + jp z, Function2ec8 ld a, [$cf91] bit 2, a - jp z, $2ec8 + jp z, Function2ec8 ld a, $10 scf ret @@ -30590,22 +30589,22 @@ Function246b5: ; 246b5 Function246c9: ; 246c9 ld hl, $cfa6 bit 7, [hl] - jp z, $2ec6 + jp z, Function2ec6 ld hl, $d0e4 ld a, [hl] and a jr z, .asm_246dc dec [hl] - jp $2ec6 + jp Function2ec6 .asm_246dc - jp $2ec8 + jp Function2ec8 ; 246df Function246df: ; 246df ld hl, $cfa6 bit 7, [hl] - jp z, $2ec6 + jp z, Function2ec6 ld hl, $d0e4 ld a, [$cf92] add [hl] @@ -30614,10 +30613,10 @@ Function246df: ; 246df cp b jr c, .asm_246f9 inc [hl] - jp $2ec6 + jp Function2ec6 .asm_246f9 - jp $2ec8 + jp Function2ec8 ; 246fc Function246fc: ; 246fc @@ -30772,7 +30771,7 @@ Function247dd: ; 247dd ; 247f0 Function247f0: ; 247f0 - call $1cf1 + call Function1cf1 ld a, [$cf91] bit 4, a jr z, .asm_2480d @@ -30783,11 +30782,11 @@ Function247f0: ; 247f0 ld b, a ld a, [$cf85] ld c, a - call $1d05 + call Function1d05 ld [hl], $61 .asm_2480d - call $1cfd + call Function1cfd ld bc, $0015 add hl, bc ld a, [$cf92] @@ -30798,13 +30797,13 @@ Function247f0: ; 247f0 add c ld [$cf77], a ld a, c - call $48d5 + call Function248d5 ld a, [MenuSelection] cp $ff jr z, .asm_24851 push bc push hl - call $486e + call Function2486e pop hl ld bc, $0028 add hl, bc @@ -30820,7 +30819,7 @@ Function247f0: ; 247f0 ld b, a ld a, [$cf85] ld c, a - call $1d05 + call Function1d05 ld [hl], $ee .asm_24850 @@ -30847,7 +30846,7 @@ Function247f0: ; 247f0 ld d, h ld e, l ld hl, $cf98 - jp $31be + jp Function31be ; 2486e Function2486e: ; 2486e @@ -30855,7 +30854,7 @@ Function2486e: ; 2486e ld d, h ld e, l ld hl, $cf98 - call $31be + call Function31be pop hl ld a, [$cf93] and a @@ -30866,7 +30865,7 @@ Function2486e: ; 2486e ld d, h ld e, l ld hl, $cf9b - call $31be + call Function31be .asm_2488a ret @@ -30897,7 +30896,7 @@ Function2488b: ; 2488b ld a, [$cf83] add $0 ld c, a - call $1d05 + call Function1d05 ld [hl], $ec .asm_248b7 @@ -30917,9 +30916,9 @@ Function248b8: ; 248b8 .asm_248c7 ld a, [$cfa9] dec a - call $48d5 + call Function248d5 ld hl, $cf9e - call $31be + call Function31be ret ; 248d5 @@ -30989,7 +30988,7 @@ Function24ac3: ; 0x24ac3 inc hl ld de, $cf75 ld bc, $0102 - call $3198 + call Function3198 .done ret @@ -31006,16 +31005,16 @@ Function24ae8: ; 24ae8 ld hl, $4b15 ld de, $000b - call $1e2e + call Function1e2e .asm_24b01 - call $1cbb - call $1cfd + call Function1cbb + call Function1cfd ld de, $0015 add hl, de ld de, Money ld bc, $2306 - call $3198 + call Function3198 ret ; 24b15 @@ -31036,7 +31035,7 @@ Function24b25: ; 24b25 ld de, $d855 ld bc, $0204 ld hl, $c4c1 - call $3198 + call Function3198 ret ; 24b4e @@ -31084,7 +31083,7 @@ Function24ef2: ; 4ef2 call Function1d35 ld a, [$d0d2] ld [$cf88], a - call $2039 + call Function2039 ld a, [$cf88] ld [$d0d2], a call Function1c07 @@ -31103,7 +31102,7 @@ Function24f0b: ; 24f0b .asm_24f19 ld a, [$d0d2] ld [$cf88], a - call $202a + call Function202a ld a, [$cf88] ld [$d0d2], a call Function1c07 @@ -31124,7 +31123,7 @@ Function24fc9: ; 24fc9 ld [Buffer2], a ld hl, $50f5 call Function1d35 - call $4ff9 + call Function24ff9 ret ; 24fe1 @@ -31138,7 +31137,7 @@ Function24fe1: ; 24fe1 ld [Buffer2], a ld hl, $50fd call Function1d35 - call $4ff9 + call Function24ff9 ret ; 24ff9 @@ -31146,8 +31145,8 @@ Function24ff9: ; 24ff9 ld a, $1 ld [$d10c], a .asm_24ffe - call $5072 - call $500e + call Function25072 + call Function2500e jr nc, .asm_24ffe cp $ff jr nz, .asm_2500c @@ -31160,7 +31159,7 @@ Function24ff9: ; 24ff9 ; 2500e Function2500e: ; 2500e - call $354b + call Function354b bit 1, c jr nz, .asm_2502b bit 0, c @@ -31241,21 +31240,21 @@ Function2500e: ; 2500e ; 25072 Function25072: ; 25072 - call $1cbb - call $1cfd + call Function1cbb + call Function1cfd ld de, $0015 add hl, de ld [hl], $f1 inc hl ld de, $d10c ld bc, $8102 - call $3198 + call Function3198 ld a, [$cf86] ld e, a ld a, [$cf87] ld d, a ld a, [$cf8a] - call $2d54 + call FarJpDe ret ; 25097 @@ -31263,8 +31262,8 @@ INCBIN "baserom.gbc", $25097, $265d3 - $25097 ProfOaksPC: ; 0x265d3 ld hl, OakPCText1 - call $1d4f - call $1dcf + call Function1d4f + call Function1dcf jr c, .shutdown call ProfOaksPCBoot ; player chose "yes"? .shutdown @@ -31339,7 +31338,7 @@ ClearOakRatingBuffer: ; 0x2665a call ByteFill pop hl ld bc, $4103 - call $3198 + call Function3198 ret ; 0x2666b @@ -31557,13 +31556,13 @@ _KrisDecorationMenu: ; 0x2675c ld a, [$d1ef] ld [$cf88], a call $6806 - call $1e5d + call Function1e5d ld a, [$cfa9] ld [$d1ef], a jr c, .asm_2678e ld a, [MenuSelection] ld hl, $67aa - call $1fa7 + call Function1fa7 jr nc, .asm_2676f .asm_2678e @@ -31587,8 +31586,8 @@ Function269dd: ; 269dd Function269e7: ; 269e7 push hl - call $69dd - call $6c72 + call Function269dd + call Function26c72 pop hl call CopyName2 ret @@ -31598,7 +31597,7 @@ INCBIN "baserom.gbc", $269f3, $26a30 - $269f3 Function26a30: ; 26a30 - call $69dd + call Function269dd ld de, $0003 add hl, de ld a, [hli] @@ -31609,7 +31608,7 @@ Function26a30: ; 26a30 Function26a3b: ; 26a3b push bc - call $6a30 + call Function26a30 pop bc call BitTable1Func ret @@ -31640,11 +31639,11 @@ Function26c8d: ; 26c8d ld a, e jr .asm_26cca - call $6c8d + call Function26c8d ld a, $d jr .asm_26cca - call $6c8d + call Function26c8d ld a, $e jr .asm_26cca @@ -31707,13 +31706,13 @@ Function26eea: ; 26eea ld a, c ld h, d ld l, e - call $69e7 + call Function269e7 ret ; 26ef1 Function26ef1: ; 26ef1 ld a, c - jp $6a3b + jp Function26a3b ; 26ef5 INCBIN "baserom.gbc", $26ef5, $26f02 - $26ef5 @@ -31721,7 +31720,7 @@ INCBIN "baserom.gbc", $26ef5, $26f02 - $26ef5 Function26f02: ; 26f02 ld a, c - call $6f0c + call Function26f0c ld b, $1 call Function26a3b ret @@ -31766,7 +31765,7 @@ Function26fb9: ; 26fb9 .asm_26fc8 ld c, a ld de, StringBuffer3 - call $6eea + call Function26eea ld b, $9 ld de, $6fd5 ret @@ -32050,7 +32049,7 @@ Function2a30d: ; 2a30d ld b, a ld a, [RoamMon1MapNumber] ld c, a - call $6355 + call Function2a355 ld a, b ld [RoamMon1MapGroup], a ld a, c @@ -32063,7 +32062,7 @@ Function2a30d: ; 2a30d ld b, a ld a, [RoamMon2MapNumber] ld c, a - call $6355 + call Function2a355 ld a, b ld [RoamMon2MapGroup], a ld a, c @@ -32076,7 +32075,7 @@ Function2a30d: ; 2a30d ld b, a ld a, [RoamMon3MapNumber] ld c, a - call $6355 + call Function2a355 ld a, b ld [RoamMon3MapGroup], a ld a, c @@ -32170,7 +32169,7 @@ Function2a355: ; 2a355 ld [RoamMon3MapNumber], a .asm_2a3ca - jp $63f6 + jp Function2a3f6 .asm_2a3cd ld hl, $640f @@ -32244,10 +32243,10 @@ INCLUDE "stats/wild/swarm_water.asm" Function2b930: ; 2b930 callba UpdateEnemyMonInParty ld hl, PartyMon1CurHP - call $7995 + call Function2b995 push bc ld hl, OTPartyMon1CurHP - call $7995 + call Function2b995 ld a, c pop bc cp c @@ -32256,7 +32255,7 @@ Function2b930: ; 2b930 jr .asm_2b976 .asm_2b94c - call $79e1 + call Function2b9e1 jr z, .asm_2b98a ld a, e cp $1 @@ -32264,10 +32263,10 @@ Function2b930: ; 2b930 cp $2 jr z, .asm_2b97f ld hl, PartyMon1CurHP - call $79a6 + call Function2b9a6 push de ld hl, OTPartyMon1CurHP - call $79a6 + call Function2b9a6 pop hl ld a, d cp h @@ -32365,16 +32364,16 @@ Function2b9a6: ; 2b9a6 Function2b9e1: ; 2b9e1 ld hl, PartyMon1CurHP - call $7a01 + call Function2ba01 jr nz, .asm_2b9f2 ld hl, OTPartyMon1CurHP - call $7a01 + call Function2ba01 ld e, $1 ret .asm_2b9f2 ld hl, OTPartyMon1CurHP - call $7a01 + call Function2ba01 ld e, $0 ret nz ld e, $2 @@ -32427,11 +32426,11 @@ Function2c000: ; 2c000 ld a, $e4 ld [rOBP0], a call Function2c165 - call $401c + call Function2c01c ld a, [IsInBattle] dec a ret z - jp $403a + jp Function2c03a ; 2c012 @@ -32440,7 +32439,7 @@ Function2c012: ; 2c012 ld a, $e4 ld [rOBP0], a call Function2c165 - jp $403a + jp Function2c03a ; 2c01c Function2c01c: ; 2c01c @@ -32492,7 +32491,7 @@ Function2c059: ; 2c059 ld de, MagikarpLength .asm_2c06b push af - call $4075 + call Function2c075 inc de pop af dec a @@ -32639,10 +32638,10 @@ Function2c095: ; 2c095 Function2c10d: ; 2c10d - call $4165 + call Function2c165 ld hl, PartyMon1CurHP ld de, PartyCount - call $4059 + call Function2c059 ld hl, $cfc4 ld a, $50 ld [hli], a @@ -32650,16 +32649,16 @@ Function2c10d: ; 2c10d ld a, $8 ld [$d003], a ld hl, Sprites - call $4143 + call Function2c143 ld hl, OTPartyMon1CurHP ld de, OTPartyCount - call $4059 + call Function2c059 ld hl, $cfc4 ld a, $50 ld [hli], a ld [hl], $68 ld hl, $c418 - jp $4143 + jp Function2c143 ; 2c143 Function2c143: ; 2c143 @@ -33434,16 +33433,16 @@ Function38000: ; 38000 .asm_38032 bit 0, [hl] - jp nz, $4045 + jp nz, Function38045 bit 1, [hl] - jp nz, $4083 + jp nz, Function38083 bit 2, [hl] - jp nz, $40c1 + jp nz, Function380c1 ; fallthrough ; 38041 Function38041: ; 38041 - call $4105 + call Function38105 ret ; 38045 @@ -33465,32 +33464,32 @@ Function38045: ; 38045 call RNG cp $c8 jr c, .asm_38077 - jp $4041 + jp Function38041 .asm_3806f call RNG cp $a - jp c, $4041 + jp c, Function38041 .asm_38077 ld a, [$c717] and $f inc a ld [$c718], a - jp $444b + jp Function3844b ; 38083 Function38083: ; 38083 callab Function0x34941 ld a, [$c717] and $f0 - jp z, $4041 + jp z, Function38041 cp $10 jr nz, .asm_3809f call RNG cp $14 jr c, .asm_380b5 - jp $4041 + jp Function38041 .asm_3809f cp $20 @@ -33498,32 +33497,32 @@ Function38083: ; 38083 call RNG cp $1e jr c, .asm_380b5 - jp $4041 + jp Function38041 .asm_380ad call RNG cp $c8 - jp c, $4041 + jp c, Function38041 .asm_380b5 ld a, [$c717] and $f inc a ld [$c718], a - jp $444b + jp Function3844b ; 380c1 Function380c1: ; 380c1 callab Function0x34941 ld a, [$c717] and $f0 - jp z, $4041 + jp z, Function38041 cp $10 jr nz, .asm_380dd call RNG cp $32 jr c, .asm_380f3 - jp $4041 + jp Function38041 .asm_380dd cp $20 @@ -33531,19 +33530,19 @@ Function380c1: ; 380c1 call RNG cp $80 jr c, .asm_380f3 - jp $4041 + jp Function38041 .asm_380eb call RNG cp $32 - jp c, $4041 + jp c, Function38041 .asm_380f3 ld a, [$c717] and $f inc a ld [$c718], a - jp $444b + jp Function3844b ; 380ff @@ -33684,7 +33683,7 @@ Function3844b: ; 3844b jr nz, .asm_38454 ld a, d cp $2 - jp nc, $446c + jp nc, Function3846c and a ret ; 3846c @@ -33747,10 +33746,10 @@ UnknownText_0x384d0: ; 384d0 ; 384d5 Function384d5: ; 384d5 - call $439a - call $44e0 + call Function3839a + call Function384e0 ld a, $34 - jp $4568 + jp Function38568 ; 384e0 Function384e0: ; 384e0 @@ -33767,27 +33766,27 @@ Function384e0: ; 384e0 ; 384f7 Function384f7: ; 384f7 - call $439a + call Function3839a ld hl, EnemySubStatus4 set 0, [hl] ld a, $21 - jp $4568 + jp Function38568 ; 38504 Function38504: ; 38504 - call $439a + call Function3839a ld hl, EnemySubStatus4 set 1, [hl] ld a, $29 - jp $4568 + jp Function38568 ; 38511 Function38511: ; 38511 - call $439a + call Function3839a ld hl, EnemySubStatus4 set 2, [hl] ld a, $2c - jp $4568 + jp Function38568 ; 3851e Function3851e: ; 3851e @@ -33841,17 +33840,17 @@ Function38553: ; 38553 Function38557 ld [$d1f1], a push bc - call $4571 + call Function38571 pop bc callba Function0x361ef - jp $4387 + jp Function38387 ; 38568 Function38568: ; 38568 ld [$d1f1], a - call $4571 - jp $4387 + call Function38571 + jp Function38387 ; 38571 Function38571: ; 38571 @@ -33924,7 +33923,7 @@ Function39550: ; 39550 Function3957b: ; 3957b ld a, [TrainerClass] ld c, a - call $5550 + call Function39550 ld a, [TrainerClass] dec a ld hl, $559c @@ -34019,7 +34018,7 @@ Function39771: ; 39771 ld a, $0 call GetSRAMBank ld de, $ac0a - call $5806 + call Function39806 call CloseSRAM jr .asm_397d0 ; 397e3 @@ -34216,16 +34215,16 @@ Function3c000: ; 3c000 ld c, $28 call DelayFrames call Function309d - call $5873 + call Function3d873 ld a, d and a jp z, LostBattle call Function30b4 ld a, [BattleType] cp $2 - jp z, $40e2 + jp z, Function3c0e2 cp $3 - jp z, $40e2 + jp z, Function3c0e2 xor a ld [CurPartyMon], a .asm_3c06b @@ -34279,17 +34278,17 @@ Function3c000: ; 3c000 call Function3dc23 .asm_3c0df - jp $412f + jp Function3c12f ; 3c0e2 Function3c0e2: ; 3c0e2 - jp $6139 + jp Function3e139 ; 3c0e5 Function3c0e5: ; 3c0e5 - call $30b4 + call Function30b4 ld a, [$d0ee] and $c0 add $2 @@ -34302,7 +34301,7 @@ Function3c0e5: ; 3c0e5 and $c0 ld [$d0ee], a ld hl, $47cf - call $52e0 + call Function3d2e0 jr nc, .asm_3c115 ld hl, $cd2a bit 4, [hl] @@ -34313,8 +34312,8 @@ Function3c0e5: ; 3c0e5 call FarBattleTextBox .asm_3c118 - call $4eec - call $52e0 + call Function3ceec + call Function3d2e0 jr c, .asm_3c126 ld de, $002b call StartSFX @@ -34327,8 +34326,8 @@ Function3c0e5: ; 3c0e5 ; 3c12f Function3c12f: ; 3c12f - call $41bf - call $43f5 + call Function3c1bf + call Function3c3f5 jp c, $41be xor a ld [$c710], a @@ -34338,7 +34337,7 @@ Function3c12f: ; 3c12f ld [$c740], a ld [CurDamage], a ld [$d257], a - call $427c + call Function3c27c call UpdateBattleMonInParty callba AIChooseMove call Function3d2f1 @@ -34349,10 +34348,10 @@ Function3c12f: ; 3c12f jp c, $41be .asm_3c174 - call $4410 + call Function3c410 jr c, .asm_3c18a .asm_3c179 - call $6139 + call Function3e139 jr c, .asm_3c1be ld a, [BattleEnded] and a @@ -34362,17 +34361,17 @@ Function3c12f: ; 3c12f jr nz, .asm_3c1be .asm_3c18a - call $4434 + call Function3c434 jr nz, .asm_3c179 - call $4300 + call Function3c300 jr c, .asm_3c1be - call $4314 + call Function3c314 jr c, .asm_3c19e - call $45fe + call Function3c5fe jr .asm_3c1a1 .asm_3c19e - call $4664 + call Function3c664 .asm_3c1a1 call Function3d2e0 @@ -34383,11 +34382,11 @@ Function3c12f: ; 3c12f ld a, [BattleEnded] and a jr nz, .asm_3c1be - call $41d6 + call Function3c1d6 ld a, [BattleEnded] and a jr nz, .asm_3c1be - jp $412f + jp Function3c12f .asm_3c1be ret @@ -34421,55 +34420,55 @@ Function3c1d6: ; 3c1d6 ld a, [$ffcb] cp $1 jr z, .asm_3c1fe - call $423c + call Function3c23c ret c - call $4a26 - call $423c + call Function3ca26 + call Function3c23c ret c call HandleWeather - call $423c + call Function3c23c ret c - call $4874 - call $423c + call Function3c874 + call Function3c23c ret c - call $4801 - call $423c + call Function3c801 + call Function3c23c ret c jr .asm_3c21e .asm_3c1fe - call $425c + call Function3c25c ret c - call $4a26 - call $425c + call Function3ca26 + call Function3c25c ret c call HandleWeather - call $425c + call Function3c25c ret c - call $4874 - call $425c + call Function3c874 + call Function3c25c ret c - call $4801 - call $425c + call Function3c801 + call Function3c25c ret c .asm_3c21e - call $48eb - call $493c - call $4a8f - call $4afb - call $4b36 - call $5e97 - call $5cf9 + call Function3c8eb + call Function3c93c + call Function3ca8f + call Function3cafb + call Function3cb36 + call Function3de97 + call Function3dcf9 call UpdateBattleMonInParty call Function309d - jp $44df + jp Function3c4df ; 3c23c Function3c23c: ; 3c23c call $4710 jr nz, .asm_3c24a - call $514e + call Function3d14e ld a, [BattleEnded] and a jr nz, .asm_3c25a @@ -34477,7 +34476,7 @@ Function3c23c: ; 3c23c .asm_3c24a call $470b jr nz, .asm_3c258 - call $4d55 + call Function3cd55 ld a, [BattleEnded] and a jr nz, .asm_3c25a @@ -34494,7 +34493,7 @@ Function3c23c: ; 3c23c Function3c25c: ; 3c25c call $470b jr nz, .asm_3c26a - call $4d55 + call Function3cd55 ld a, [BattleEnded] and a jr nz, .asm_3c27a @@ -34502,7 +34501,7 @@ Function3c25c: ; 3c25c .asm_3c26a call $4710 jr nz, .asm_3c278 - call $514e + call Function3d14e ld a, [BattleEnded] and a jr nz, .asm_3c27a @@ -34580,8 +34579,8 @@ Function3c27c: ; 3c27c xor a ld [$cfca], a ld de, $0103 - call $6e0f - call $48e4 + call Function3ee0f + call Function3c8e4 ld hl, $4d97 jp FarBattleTextBox ; 3c300 @@ -34624,28 +34623,28 @@ Function3c314: ; 3c314 call FarBattleRNG cp $80 jp c, $43f1 - jp $43f3 + jp Function3c3f3 .asm_3c341 call FarBattleRNG cp $80 - jp c, $43f3 + jp c, Function3c3f3 jp $43f1 .asm_3c34c callab Function3846c call SetEnemyTurn call Function3dc23 - jp $43f3 + jp Function3c3f3 .asm_3c35b ld a, [$d0ec] and a jp nz, $43f1 - call $45b4 + call Function3c5b4 jr z, .asm_3c36d jp c, $43f1 - jp $43f3 + jp Function3c3f3 .asm_3c36d call SetPlayerTurn @@ -34671,7 +34670,7 @@ Function3c314: ; 3c314 call FarBattleRNG cp c jr nc, .asm_3c3c5 - jp $43f3 + jp Function3c3f3 .asm_3c39f ld a, [$ffcb] @@ -34679,7 +34678,7 @@ Function3c314: ; 3c314 jr z, .asm_3c3b5 call FarBattleRNG cp c - jp c, $43f3 + jp c, Function3c3f3 call FarBattleRNG cp e jp c, $43f1 @@ -34691,7 +34690,7 @@ Function3c314: ; 3c314 jp c, $43f1 call FarBattleRNG cp c - jp c, $43f3 + jp c, Function3c3f3 jr .asm_3c3c5 .asm_3c3c5 @@ -34701,7 +34700,7 @@ Function3c314: ; 3c314 call StringCmp jr z, .asm_3c3d8 jp nc, $43f1 - jp $43f3 + jp Function3c3f3 .asm_3c3d8 ld a, [$ffcb] @@ -34710,12 +34709,12 @@ Function3c314: ; 3c314 call FarBattleRNG cp $80 jp c, $43f1 - jp $43f3 + jp Function3c3f3 .asm_3c3e9 call FarBattleRNG cp $80 - jp c, $43f3 + jp c, Function3c3f3 scf ret ; 3c3f3 @@ -34747,17 +34746,17 @@ Function3c3f5: ; 3c3f5 Function3c410: ; 3c410 ld a, [PlayerSubStatus4] and $20 - jp nz, $4432 + jp nz, Function3c432 ld hl, EnemySubStatus3 res 3, [hl] ld hl, PlayerSubStatus3 res 3, [hl] ld a, [hl] and $12 - jp nz, $4432 + jp nz, Function3c432 ld hl, PlayerSubStatus1 bit 6, [hl] - jp nz, $4432 + jp nz, Function3c432 and a ret ; 3c432 @@ -34768,7 +34767,7 @@ Function3c432: ; 3c432 ; 3c434 Function3c434: ; 3c434 - call $4410 + call Function3c410 jp c, $44ba ld hl, PlayerSubStatus5 bit 4, [hl] @@ -34790,7 +34789,7 @@ Function3c434: ; 3c434 ld [$d235], a inc a ld [FXAnimIDLo], a - call $64bc + call Function3e4bc push af call Function30b4 call UpdateBattleHuds @@ -35070,42 +35069,42 @@ Function3c5ec: ; 3c5ec Function3c5fe: ; 3c5fe call Function309d - call $4543 + call Function3c543 jp c, Function3c0e5 call SetEnemyTurn ld a, $1 ld [$c70f], a callab Function38000 jr c, .asm_3c62f - call $46de + call Function3c6de call Function3d2e0 ret c ld a, [$d232] and a ret nz call $4710 - jp z, $514e + jp z, Function3d14e call $470b - jp z, $4d55 + jp z, Function3cd55 .asm_3c62f call SetEnemyTurn - call $4716 - jp z, $4d55 + call Function3c716 + jp z, Function3cd55 call RefreshBattleHuds - call $46cf + call Function3c6cf call Function3d2e0 ret c ld a, [$d232] and a ret nz call $470b - jp z, $4d55 + jp z, Function3cd55 call $4710 - jp z, $514e + jp z, Function3d14e call SetPlayerTurn - call $4716 - jp z, $514e + call Function3c716 + jp z, Function3d14e call RefreshBattleHuds xor a ld [$d0ec], a @@ -35118,7 +35117,7 @@ Function3c664: ; 3c664 call SetEnemyTurn callab Function38000 push af - call $46cf + call Function3c6cf pop bc ld a, [$d232] and a @@ -35126,36 +35125,36 @@ Function3c664: ; 3c664 call Function3d2e0 ret c call $470b - jp z, $4d55 + jp z, Function3cd55 call $4710 - jp z, $514e + jp z, Function3d14e push bc call SetPlayerTurn - call $4716 + call Function3c716 pop bc - jp z, $514e + jp z, Function3d14e push bc call RefreshBattleHuds pop af jr c, .asm_3c6be call Function309d - call $4543 + call Function3c543 jp c, Function3c0e5 - call $46de + call Function3c6de call Function3d2e0 ret c ld a, [$d232] and a ret nz call $4710 - jp z, $514e + jp z, Function3d14e call $470b - jp z, $4d55 + jp z, Function3cd55 .asm_3c6be call SetEnemyTurn - call $4716 - jp z, $4d55 + call Function3c716 + jp z, Function3cd55 call RefreshBattleHuds xor a ld [$d0ec], a @@ -35164,16 +35163,16 @@ Function3c664: ; 3c664 Function3c6cf: ; 3c6cf call SetPlayerTurn - call $46fe + call Function3c6fe callab DoPlayerTurn - jp $46ed + jp Function3c6ed ; 3c6de Function3c6de: ; 3c6de call SetEnemyTurn - call $46fe + call Function3c6fe callab DoEnemyTurn - jp $46ed + jp Function3c6ed ; 3c6ed Function3c6ed: ; 3c6ed @@ -35211,7 +35210,7 @@ Function3c706: ; 3c706 ; 3c716 Function3c716: ; 3c716 - call $4706 + call Function3c706 ret z ld a, $a call CleanGetBattleVarPair @@ -35230,7 +35229,7 @@ Function3c716: ; 3c716 pop de xor a ld [$cfca], a - call $6e0f + call Function3ee0f call GetEighthMaxHP ld de, $c674 ld a, [hBattleTurn] @@ -35243,7 +35242,7 @@ Function3c716: ; 3c716 call CleanGetBattleVarPair bit 0, a jr z, .asm_3c765 - call $4c76 + call Function3cc76 ld a, [de] inc a ld [de], a @@ -35256,34 +35255,34 @@ Function3c716: ; 3c716 ld c, l .asm_3c765 - call $4c3f + call Function3cc3f .asm_3c768 - call $4706 + call Function3c706 jp z, $47f7 ld a, $3 call GetBattleVarPair bit 7, [hl] jr z, .asm_3c7a1 - call $48e4 + call Function3c8e4 xor a ld [$cfca], a ld de, $0107 ld a, $7 call CleanGetBattleVarPair and $60 - call z, $6e0f - call $48e4 + call z, Function3ee0f + call Function3c8e4 call GetEighthMaxHP - call $4c3f + call Function3cc3f ld a, $1 ld [hBGMapMode], a - call $4cef + call Function3ccef ld hl, $480e call FarBattleTextBox .asm_3c7a1 - call $4706 + call Function3c706 jr z, .asm_3c7f7 ld a, $0 call GetBattleVarPair @@ -35292,14 +35291,14 @@ Function3c716: ; 3c716 xor a ld [$cfca], a ld de, $010c - call $6e0f + call Function3ee0f call GetQuarterMaxHP - call $4c3f + call Function3cc3f ld hl, $4822 call FarBattleTextBox .asm_3c7c5 - call $4706 + call Function3c706 jr z, .asm_3c7f7 ld a, $0 call GetBattleVarPair @@ -35308,9 +35307,9 @@ Function3c716: ; 3c716 xor a ld [$cfca], a ld de, $010c - call $6e0f + call Function3ee0f call GetQuarterMaxHP - call $4c3f + call Function3cc3f ld hl, $4836 call FarBattleTextBox @@ -35440,17 +35439,17 @@ Function3c874: ; 3c874 call CleanGetBattleVarPair and $60 jr nz, .asm_3c8d3 - call $48e4 + call Function3c8e4 xor a ld [$cfca], a ld [FXAnimIDHi], a ld a, $37 call Predef - call $48e4 + call Function3c8e4 .asm_3c8d3 - call $4c76 - call $4c3f + call Function3cc76 + call Function3cc3f ld hl, $4de2 jr .asm_3c8e1 @@ -35507,9 +35506,9 @@ Function3c8eb: ; 3c8eb ret z .asm_3c92d - call $4c76 - call $48e4 - call $4cef + call Function3cc76 + call Function3c8e4 + call Function3ccef ld hl, $4880 jp FarBattleTextBox ; 3c93c @@ -35631,14 +35630,14 @@ Function3c93c: ; 3c93c ld [$d265], a xor a ld [hl], a - call $5f12 + call Function3df12 ld a, [hBattleTurn] and a jr z, .asm_3ca12 ld a, [IsInBattle] dec a jr z, .asm_3ca14 - call $5f1f + call Function3df1f .asm_3ca12 xor a @@ -35646,9 +35645,9 @@ Function3c93c: ; 3c93c .asm_3ca14 call GetItemName - call $48e4 - call $5dc8 - call $48e4 + call Function3c8e4 + call Function3ddc8 + call Function3c8e4 ld hl, $4899 jp FarBattleTextBox ; 3ca26 @@ -35929,14 +35928,14 @@ HandleWeather: ; 3cb9e cp STEEL ret z - call $48e4 + call Function3c8e4 xor a ld [$cfca], a ld de, $010b call Function3ee17 - call $48e4 + call Function3c8e4 call GetEighthMaxHP - call $4c3f + call Function3cc3f ld hl, BattleText_0x8084d jp FarBattleTextBox @@ -35972,13 +35971,13 @@ HandleWeather: ; 3cb9e ; 3cc39 Function3cc39: ; 3cc39 - call $4c45 - jp $4d3c + call Function3cc45 + jp Function3cd3c ; 3cc3f Function3cc3f: ; 3cc3f call Function3cc45 - jp $4d36 + jp Function3cd36 ; 3cc45 @@ -36187,9 +36186,9 @@ Function3ccef: ; 3ccef ld [$d1ee], a .asm_3cd2d - call $48e4 + call Function3c8e4 call Function3cd36 - jp $48e4 + jp Function3c8e4 ; 3cd36 Function3cd36: ; 3cd36 @@ -36217,15 +36216,15 @@ Function3cd3c: ; 3cd3c ; 3cd55 Function3cd55: ; 3cd55 - call $4f14 + call Function3cf14 ld hl, BattleMonHP ld a, [hli] or [hl] - call z, $4ef1 + call z, Function3cef1 xor a ld [$c6f7], a - call $4e01 - call $5873 + call Function3ce01 + call Function3d873 ld a, d and a jp z, LostBattle @@ -36245,32 +36244,32 @@ Function3cd55: ; 3cd55 ret .asm_3cd8c - call $4f35 - jp z, $4fa4 + call Function3cf35 + jp z, Function3cfa4 ld hl, BattleMonHP ld a, [hli] or [hl] jr nz, .asm_3cdba - call $51f8 + call Function3d1f8 jr nc, .asm_3cda4 ld a, $1 ld [BattleEnded], a ret .asm_3cda4 - call $5227 + call Function3d227 call Function3d2e0 jp c, Function3c0e5 ld a, $1 ld [$d0ec], a - call $4f4a + call Function3cf4a jp z, Function3c0e5 jr .asm_3cdca .asm_3cdba ld a, $1 ld [$d0ec], a - call $4f4a + call Function3cf4a jp z, Function3c0e5 xor a ld [$d0ec], a @@ -36284,7 +36283,7 @@ Function3cd55: ; 3cd55 ld hl, $c4a1 ld bc, $040a call ClearBox - call $52b3 + call Function3d2b3 ld a, $1 call $4f78 jr .asm_3cdfc @@ -36298,7 +36297,7 @@ Function3cd55: ; 3cd55 call Function309d pop af ld [CurPartyMon], a - call $52b3 + call Function3d2b3 .asm_3cdfc xor a @@ -36345,22 +36344,22 @@ Function3ce01: ; 3ce01 ld a, [$c6f7] and a jr nz, .asm_3ce47 - call $51aa + call Function3d1aa .asm_3ce47 - call $5873 + call Function3d873 ld a, d and a ret z ld a, [IsInBattle] dec a - call z, $50ea + call z, Function3d0ea call Function3edd1 call Function309d ld a, [$d0ee] and $c0 ld [$d0ee], a - call $4eaa + call Function3ceaa jr z, .asm_3ce72 ld hl, EnemyMonBaseStats ld b, $7 @@ -36377,8 +36376,8 @@ Function3ce01: ; 3ce01 call CopyBytes xor a ld [$c71f], a - call $6e3b - call $4eaa + call Function3ee3b + call Function3ceaa ret z ld a, [$c664] push af @@ -36390,7 +36389,7 @@ Function3ce01: ; 3ce01 call CopyBytes ld a, $1 ld [$c71f], a - call $6e3b + call Function3ee3b pop af ld [$c664], a ret @@ -36565,7 +36564,7 @@ Function3cfa4: ; 3cfa4 ld a, [InLinkBattle] and a ld a, b - call z, $50ea + call z, Function3d0ea callab Function39939 ld hl, BattleText_0x809da call FarBattleTextBox @@ -36577,7 +36576,7 @@ Function3cfa4: ; 3cfa4 ld a, [$cfc0] bit 0, a jr nz, .asm_3d006 - call $6bd8 + call Function3ebd8 ld c, $28 call DelayFrames ld a, [BattleType] @@ -36590,13 +36589,13 @@ Function3cfa4: ; 3cfa4 ld a, [$c2cc] bit 0, a jr nz, .asm_3cff2 - call $3718 + call Function3718 .asm_3cff2 - jp $502b + jp Function3d02b .asm_3cff5 - call $6bd8 + call Function3ebd8 ld c, $28 call DelayFrames ld c, $4 @@ -36606,7 +36605,7 @@ Function3cfa4: ; 3cfa4 ret .asm_3d006 - call $6bd8 + call Function3ebd8 ld c, $28 call DelayFrames call Function3edd1 @@ -36629,8 +36628,8 @@ Function3cfa4: ; 3cfa4 Function3d02b: ; 3d02b ld a, [$c73d] and a - call nz, $5099 - call $50b1 + call nz, Function3d099 + call Function3d0b1 push af ld a, $0 jr nc, .asm_3d044 @@ -36647,7 +36646,7 @@ Function3d02b: ; 3d02b ld a, b and a jr z, .asm_3d052 - call $5081 + call Function3d081 dec c dec b jr .asm_3d047 @@ -36656,13 +36655,13 @@ Function3d02b: ; 3d02b ld a, c and a jr z, .asm_3d05c - call $508d + call Function3d08d dec c jr .asm_3d052 .asm_3d05c - call $5099 - call $5099 + call Function3d099 + call Function3d099 pop af jr nc, .asm_3d07b ld a, [$d854] @@ -36688,7 +36687,7 @@ Function3d081: ; 3d081 push bc ld hl, $c688 ld de, $d853 - call $50be + call Function3d0be pop bc ret ; 3d08d @@ -36697,7 +36696,7 @@ Function3d08d: ; 3d08d push bc ld hl, $c688 ld de, $d850 - call $50be + call Function3d0be pop bc ret ; 3d099 @@ -36782,7 +36781,7 @@ Function3d0ea: ; 3d0ea dec a jr nz, .asm_3d113 push de - call $4eaa + call Function3ceaa pop de jr nz, .asm_3d11e ld hl, $c6ec @@ -36865,15 +36864,15 @@ KantoGymLeaders: Function3d14e: ; 3d14e - call $4ef1 + call Function3cef1 ld hl, EnemyMonHPHi ld a, [hli] or [hl] - call z, $4f14 + call z, Function3cf14 ld a, $1 ld [$c6f7], a - call $51aa - call $5873 + call Function3d1aa + call Function3d873 ld a, d and a jp z, LostBattle @@ -36881,7 +36880,7 @@ Function3d14e: ; 3d14e ld a, [hli] or [hl] jr nz, .asm_3d185 - call $4e01 + call Function3ce01 ld a, [IsInBattle] dec a jr nz, .asm_3d17f @@ -36890,18 +36889,18 @@ Function3d14e: ; 3d14e ret .asm_3d17f - call $4f35 - jp z, $4fa4 + call Function3cf35 + jp z, Function3cfa4 .asm_3d185 - call $51f8 + call Function3d1f8 jr nc, .asm_3d190 ld a, $1 ld [BattleEnded], a ret .asm_3d190 - call $5227 + call Function3d227 call Function3d2e0 jp c, Function3c0e5 ld a, c @@ -36909,7 +36908,7 @@ Function3d14e: ; 3d14e ret nz ld a, $1 ld [$d0ec], a - call $4f4a + call Function3cf4a jp z, Function3c0e5 jp $4dca ; 3d1aa @@ -36976,14 +36975,14 @@ Function3d1f8: ; 3d1f8 jr z, .asm_3d20a ld hl, PartyMon1Spd ld de, EnemyMonSpd - jp $58b3 + jp Function3d8b3 ; 3d227 Function3d227: ; 3d227 call Function3edd1 call Function1d6e call Function3d2f7 - call $5362 + call Function3d362 ld a, [InLinkBattle] and a jr z, .asm_3d241 @@ -37105,7 +37104,7 @@ Function3d313: ; 3d313 ; 3d329 Function3d329: ; 3d329 - call $52f1 + call Function3d2f1 jr z, .asm_3d335 callba PartyMenuSelect ret @@ -37121,10 +37120,10 @@ Function3d33c: ; 3d33c .asm_3d33c ld a, $2 ld [PartyMenuActionText], a - call $5313 - call $5329 + call Function3d313 + call Function3d329 ret c - call $5887 + call Function3d887 jr z, .asm_3d33c xor a ret @@ -37161,9 +37160,9 @@ Function3d362: ; 3d362 Function3d375: ; 3d375 .asm_3d375 - call $533c + call Function3d33c ret c - call $534f + call Function3d34f jr c, .asm_3d375 xor a ret @@ -37171,7 +37170,7 @@ Function3d375: ; 3d375 Function3d380: ; 3d380 .asm_3d380 - call $5362 + call Function3d362 call Function3d2e0 ret c call Function3d34f @@ -37197,7 +37196,7 @@ LostBattle: ; 3d38e hlcoord 0, 0 ld bc, $0815 call ClearBox - call $6bd8 + call Function3ebd8 ld c, 40 call DelayFrames @@ -37205,7 +37204,7 @@ LostBattle: ; 3d38e ld a, [$c2cc] bit 0, a jr nz, .asm_3d3bc - call $3718 + call Function3718 .asm_3d3bc ret @@ -37214,12 +37213,12 @@ LostBattle: ; 3d38e hlcoord 0, 0 ld bc, $0815 call ClearBox - call $6bd8 + call Function3ebd8 ld c, 40 call DelayFrames - call $6dd1 + call Function3edd1 ld c, 2 ld a, $47 ld hl, $4000 @@ -37242,7 +37241,7 @@ LostBattle: ; 3d38e .LostLinkBattle call UpdateEnemyMonInParty - call $4f35 + call Function3cf35 jr nz, .asm_3d40a ld hl, TiedAgainstText ld a, [$d0ee] @@ -37253,7 +37252,7 @@ LostBattle: ; 3d38e .asm_3d40a ld hl, LostAgainstText - call $52f1 + call Function3d2f1 jr z, .asm_3d417 .asm_3d412 @@ -37268,7 +37267,7 @@ LostBattle: ; 3d38e hlcoord 0, 0 ld bc, $0815 call ClearBox - call $6bd8 + call Function3ebd8 ld c, 40 call DelayFrames @@ -37285,13 +37284,13 @@ LostBattle: ; 3d38e Function3d432: ; 3d432 ld hl, $c510 ld de, $c524 - jp $5444 + jp Function3d444 ; 3d43b Function3d43b: ; 3d43b ld hl, $c569 ld de, $c57d - jp $5444 + jp Function3d444 ; 3d444 Function3d444: ; 3d444 @@ -37355,7 +37354,7 @@ Function3d490: ; 3d490 ld b, $7 .asm_3d497 push hl - call $54ae + call Function3d4ae pop hl ld de, 20 add hl, de @@ -37410,20 +37409,20 @@ Function3d4c3: ; 3d4c3 Function3d4e1: ; 3d4e1 - call $5714 + call Function3d714 jr nc, .asm_3d517 - call $5557 - call $5533 + call Function3d557 + call Function3d533 jr c, .asm_3d4f1 - call $5599 + call Function3d599 .asm_3d4f1 - call $56ca - call $574b + call Function3d6ca + call Function3d74b push af - call $57a0 - call $57b8 - call $57c7 + call Function3d7a0 + call Function3d7b8 + call Function3d7c7 pop af ret c xor a @@ -37432,22 +37431,22 @@ Function3d4e1: ; 3d4e1 ld [$d0ec], a inc a ld [$c711], a - call $309d - jp $63ad + call Function309d + jp Function3e3ad .asm_3d517 - call $5557 - call $5533 + call Function3d557 + call Function3d533 jr c, .asm_3d522 - call $5599 + call Function3d599 .asm_3d522 - call $56ca + call Function3d6ca ld a, $1 ld [$c711], a - call $57a0 - call $57b8 - jp $57c7 + call Function3d7a0 + call Function3d7b8 + jp Function3d7c7 ; 3d533 Function3d533: ; 3d533 @@ -37492,8 +37491,8 @@ Function3d557: ; 3d557 ld [$c730], a ld hl, $c4b2 ld a, $8 - call $5490 - call $6dd1 + call Function3d490 + call Function3edd1 jp Function1d6e ; 3d57a @@ -37527,7 +37526,7 @@ Function3d599: ; 3d599 inc b ld a, [OTPartyCount] cp b - jp z, $5672 + jp z, Function3d672 ld a, [CurOTMon] cp b jr z, .asm_3d5d0 @@ -37541,8 +37540,8 @@ Function3d599: ; 3d599 or c pop bc jr z, .asm_3d5d0 - call $55d7 - call $5618 + call Function3d5d7 + call Function3d618 jr .asm_3d5a3 .asm_3d5d0 @@ -37781,8 +37780,8 @@ Function3d74b: ; 3d74b ld a, [$cfa9] dec a jr nz, .asm_3d79a - call $52f7 - call $5375 + call Function3d2f7 + call Function3d375 jr c, .asm_3d791 ld a, [CurBattleMon] ld [$c71a], a @@ -37790,7 +37789,7 @@ Function3d74b: ; 3d74b ld [CurBattleMon], a call ClearPalettes call DelayFrame - call $6da6 + call Function3eda6 pop af ld [CurPartyMon], a xor a @@ -37802,7 +37801,7 @@ Function3d74b: ; 3d74b .asm_3d791 call ClearPalettes call DelayFrame - call $6da6 + call Function3eda6 .asm_3d79a pop af @@ -37820,7 +37819,7 @@ Function3d7a0: ; 3d7a0 ld bc, $040a call ClearBox call WaitBGMap - jp $6e27 + jp Function3ee27 ; 3d7b8 Function3d7b8: ; 3d7b8 @@ -37839,19 +37838,19 @@ Function3d7c7: ; 3d7c7 ld [MonType], a ld a, $1f call Predef - call $747c + call Function3f47c xor a ld [$cfca], a ld [$c689], a call SetEnemyTurn ld de, $0101 - call $6e17 + call Function3ee17 call $5a79 jr nc, .asm_3d800 ld a, $1 ld [$c689], a ld de, $0101 - call $6e17 + call Function3ee17 .asm_3d800 ld bc, TempMonSpecies @@ -37872,10 +37871,10 @@ Function3d7c7: ; 3d7c7 ld a, $f ld [CryTracks], a ld a, [TempEnemyMonSpecies] - call $37b6 + call Function37b6 .asm_3d82c - call $6036 + call Function3e036 ld a, $1 ld [hBGMapMode], a ret @@ -38181,16 +38180,16 @@ Function3da0d: ; 3da0d ld de, PlayerStats ld bc, $000a call CopyBytes - call $6c2c - call $6d45 + call Function3ec2c + call BadgeStatBoosts ret ; 3da74 Function3da74: ; 3da74 - call $5a85 + call Function3da85 jr .asm_3da7c - call $5a97 + call Function3da97 .asm_3da7c ld b, h @@ -38266,7 +38265,7 @@ Function3dabd: ; 3dabd ld de, EnemyStats ld bc, $000a call CopyBytes - call $6c30 + call Function3ec30 ld hl, BaseType1 ld de, EnemyMonType1 ld a, [hli] @@ -38321,7 +38320,7 @@ Function3db5f: ; 3db5f call WaitBGMap xor a ld [hBGMapMode], a - call $743d + call Function3f43d xor a ld [$ffad], a ld [$d0d2], a @@ -38331,8 +38330,8 @@ Function3db5f: ; 3db5f ld [LastEnemyCounterMove], a ld [LastPlayerCounterMove], a ld [LastPlayerMove], a - call $64a8 - call $6e27 + call Function3e4a8 + call Function3ee27 xor a ld [$c731], a call SetPlayerTurn @@ -38340,13 +38339,13 @@ Function3db5f: ; 3db5f ld [$cfca], a ld [$c689], a ld de, $0101 - call $6e17 - call $5a74 + call Function3ee17 + call Function3da74 jr nc, .asm_3dbbc ld a, $1 ld [$c689], a ld de, $0101 - call $6e17 + call Function3ee17 .asm_3dbbc ld a, $0 @@ -38358,10 +38357,10 @@ Function3db5f: ; 3db5f ld a, $f0 ld [CryTracks], a ld a, [CurPartySpecies] - call $37b6 + call Function37b6 .asm_3dbd6 - call $5f48 + call Function3df48 ld a, $1 ld [hBGMapMode], a ret @@ -38408,13 +38407,13 @@ Function3dc18: ; 3dc18 Function3dc23: ; 3dc23 ld hl, PlayerScreens ld de, BattleMonType1 - ld bc, $5f48 + ld bc, Function3df48 ld a, [hBattleTurn] and a jr z, .asm_3dc3a ld hl, EnemyScreens ld de, EnemyMonType1 - ld bc, $6036 + ld bc, Function3e036 .asm_3dc3a bit 0, [hl] @@ -38430,9 +38429,9 @@ Function3dc23: ; 3dc23 ld hl, BattleText_0x80bae call FarBattleTextBox call GetEighthMaxHP - call $4c39 + call Function3cc39 pop hl - call $5c5a + call Function3dc5a jp WaitBGMap ; 3dc5a @@ -38444,13 +38443,13 @@ Function3dc5b: ; 3dc5b ld a, $10 call CleanGetBattleVarPair ld b, a - call $45ec + call Function3c5ec ld a, b cp $80 jr nz, .asm_3dce4 ld a, [CurBattleMon] push af - ld hl, $4000 + ld hl, Function3c000 ld a, [hBattleTurn] and a jr z, .asm_3dc7e @@ -38479,14 +38478,14 @@ Function3dc5b: ; 3dc5b ld a, $f0 ld [CryTracks], a ld a, [BattleMonSpecies] - call $37b6 + call Function37b6 ld a, [$c71a] ld c, a ld hl, $c664 ld b, $0 ld a, $3 call Predef - call $543b + call Function3d43b ld hl, BattleText_0x80a75 jr .asm_3dcdf @@ -38501,7 +38500,7 @@ Function3dc5b: ; 3dc5b ld de, $002a call StartSFX call WaitSFX - call $5432 + call Function3d432 ld hl, BattleText_0x809a8 .asm_3dcdf @@ -38521,7 +38520,7 @@ Function3dce6: ; 3dce6 ld [hBattleTurn], a ld [$cfca], a ld de, $0102 - call $6e17 + call Function3ee17 pop af ld [hBattleTurn], a ret @@ -38532,23 +38531,23 @@ Function3dcf9: ; 3dcf9 cp $1 jr z, .asm_3dd17 call SetPlayerTurn - call $5d2f - call $5de9 - call $5e51 + call Function3dd2f + call Function3dde9 + call Function3de51 call SetEnemyTurn - call $5d2f - call $5de9 - jp $5e51 + call Function3dd2f + call Function3dde9 + jp Function3de51 .asm_3dd17 call SetEnemyTurn - call $5d2f - call $5de9 - call $5e51 + call Function3dd2f + call Function3dde9 + call Function3de51 call SetPlayerTurn - call $5d2f - call $5de9 - jp $5e51 + call Function3dd2f + call Function3dde9 + jp Function3de51 ; 3dd2f Function3dd2f: ; 3dd2f @@ -38591,7 +38590,7 @@ Function3dd2f: ; 3dd2f ret nc .asm_3dd66 - call $5dc8 + call Function3ddc8 ld a, [hli] ld [Buffer2], a ld a, [hl] @@ -38652,13 +38651,13 @@ Function3ddc8: ; 3ddc8 call Function3edd1 ld a, $69 ld [FXAnimIDLo], a - call $48e4 + call Function3c8e4 xor a ld [$cfca], a ld [FXAnimIDHi], a ld a, $37 call Predef - call $48e4 + call Function3c8e4 pop bc pop de pop hl @@ -38709,11 +38708,11 @@ Function3dde9: ; 3dde9 ld hl, $65d7 .asm_3de31 - call $48e4 + call Function3c8e4 ld a, $d rst FarCall - call $48e4 - call $5dc8 + call Function3c8e4 + call Function3ddc8 call $5dac ld a, $1 and a @@ -38750,13 +38749,13 @@ Function3de51: ; 3de51 call GetBattleVarPair res 7, [hl] call GetItemName - call $5dc8 + call Function3ddc8 ld hl, BattleText_0x80dab call FarBattleTextBox ld a, [hBattleTurn] and a jr nz, .asm_3de90 - call $5f1f + call Function3df1f xor a ld [bc], a ld a, [IsInBattle] @@ -38766,7 +38765,7 @@ Function3de51: ; 3de51 ret .asm_3de90 - call $5f12 + call Function3df12 xor a ld [bc], a ld [hl], a @@ -38777,22 +38776,22 @@ Function3de97: ; 3de97 ld a, [$ffcb] cp $1 jr z, .asm_3dea3 - call $5ea9 - jp $5eb1 + call Function3dea9 + jp Function3deb1 .asm_3dea3 - call $5eb1 - jp $5ea9 + call Function3deb1 + jp Function3dea9 ; 3dea9 Function3dea9: ; 3dea9 - call $5f12 + call Function3df12 ld a, $0 jp $5eb6 ; 3deb1 Function3deb1: ; 3deb1 - call $5f1f + call Function3df1f ld a, $1 ld [hBattleTurn], a ld d, h @@ -38893,9 +38892,9 @@ Function3df48: ; 3df48 push hl push de push bc - call $5f58 - call $5f98 - call $5f9e + call Function3df58 + call Function3df98 + call Function3df9e pop bc pop de pop hl @@ -38913,7 +38912,7 @@ Function3df58: ; 3df58 rst FarCall ld hl, $c566 ld [hl], $73 - call $5fbf + call Function3dfbf ld hl, $c55e ld b, $1 xor a @@ -38929,14 +38928,14 @@ Function3df58: ; 3df58 ld hl, $c586 ld a, [TempMonLevel] ld b, a - call $7390 + call Function3f390 pop de ret ; 3df98 Function3df98: ; 3df98 ld hl, PlayerHPPal - jp $612e + jp Function3e12e ; 3df9e Function3df9e: ; 3df9e @@ -38967,7 +38966,7 @@ Function3df9e: ; 3df9e Function3dfbf: ; 3dfbf ld de, BattleMonNick ld hl, $c536 - call $6138 + call Function3e138 call PlaceString push bc ld a, [CurBattleMon] @@ -39028,8 +39027,8 @@ Function3e036: ; 3e036 push hl push de push bc - call $6043 - call $6127 + call Function3e043 + call Function3e127 pop bc pop de pop hl @@ -39051,7 +39050,7 @@ Function3e043: ; 3e043 call GetBaseData ld de, EnemyMonNick ld hl, $c4a1 - call $6138 + call Function3e138 call PlaceString ld h, b ld l, c @@ -39167,7 +39166,7 @@ Function3e043: ; 3e043 Function3e127: ; 3e127 ld hl, EnemyHPPal - call $612e + call Function3e12e ret ; 3e12e @@ -39177,7 +39176,7 @@ Function3e12e: ; 3e12e ld a, [hl] cp b ret z - jp $6e27 + jp Function3ee27 ; 3e138 Function3e138: ; 3e138 @@ -39216,7 +39215,7 @@ Function3e139: ; 3e139 rst FarCall .asm_3e171 - call $619b + call Function3e19b ret c .asm_3e175 @@ -39224,13 +39223,13 @@ Function3e139: ; 3e139 ld [hBGMapMode], a ld a, [$d0d2] cp $1 - jp z, $6192 + jp z, Function3e192 cp $3 - jp z, $61c7 + jp z, Function3e1c7 cp $2 - jp z, $628d + jp z, Function3e28d cp $4 - jp z, $6489 + jp z, Function3e489 jr .asm_3e156 ; 3e192 @@ -39272,10 +39271,10 @@ Function3e19b: ; 3e19b Function3e1c7: ; 3e1c7 ld a, [InLinkBattle] and a - jp nz, $622b + jp nz, Function3e22b ld a, [$cfc0] and a - jp nz, $622b + jp nz, Function3e22b call Function1d6e ld a, [BattleType] cp $3 @@ -39305,7 +39304,7 @@ Function3e1c7: ; 3e1c7 call DoItemEffect .asm_3e209 - call $6234 + call Function3e234 ret .asm_3e20d @@ -39318,13 +39317,13 @@ Function3e1c7: ; 3e1c7 call WaitBGMap call Function3ee27 call Function309d - jp $6139 + jp Function3e139 ; 3e22b Function3e22b: ; 3e22b ld hl, BattleText_0x80bf3 call FarBattleTextBox - jp $6139 + jp Function3e139 ; 3e234 Function3e234: ; 3e234 @@ -39352,7 +39351,7 @@ Function3e234: ; 3e234 ld a, $1 ld [$cfa9], a call Function1c07 - call $5f2c + call Function3df2c call WaitBGMap call Function309d call Function1fbf @@ -39388,12 +39387,12 @@ Function3e28d: ; 3e28d ld a, $23 ld hl, $6a4a rst FarCall - call $62f5 + call Function3e2f5 jr c, .asm_3e2c8 call Function1bee ld a, [$cfa9] cp $1 - jp z, $6358 + jp z, Function3e358 cp $2 jr z, .asm_3e2cf cp $3 @@ -39406,7 +39405,7 @@ Function3e28d: ; 3e28d jr .asm_3e299 .asm_3e2cf - call $6308 + call Function3e308 call Function3d2e0 jr c, .asm_3e2da jp $6290 @@ -39420,7 +39419,7 @@ Function3e28d: ; 3e28d call Function309d call ClearSGB call Function32f9 - jp $6139 + jp Function3e139 ; 3e2f5 Function3e2f5: ; 3e2f5 @@ -39520,17 +39519,17 @@ Function3e3ad: ; 3e3ad and a jr z, .asm_3e3c1 call Function1d6e - call $68e4 + call Function3e8e4 call Function1c17 .asm_3e3c1 - call $67c1 + call Function3e7c1 ld a, [InLinkBattle] and a jr nz, .asm_3e3cf .asm_3e3ca - call $640b + call Function3e40b and a ret @@ -39568,19 +39567,19 @@ Function3e3ff: ; 3e3ff ld a, $e rst FarCall call SetEnemyTurn - jp $5c23 + jp Function3dc23 ; 3e40b Function3e40b: ; 3e40b - call $72f4 + call Function3f2f4 ld c, $32 call DelayFrames ld hl, PlayerSubStatus4 res 6, [hl] call SetEnemyTurn - call $5c5b + call Function3dc5b jr c, .asm_3e423 - call $5ce6 + call Function3dce6 .asm_3e423 ld hl, $c535 @@ -39589,16 +39588,16 @@ Function3e40b: ; 3e40b ld a, [CurBattleMon] ld [CurPartyMon], a call $5581 - call $5a0d - call $5ab1 - call $726d - call $5bde - call $5c18 - call $5b5f - call $6dd1 - call $309d + call Function3da0d + call Function3dab1 + call Function3f26d + call Function3dbde + call Function3dc18 + call Function3db5f + call Function3edd1 + call Function309d call SetPlayerTurn - call $5c23 + call Function3dc23 ld a, $2 ld [$cfa9], a ret @@ -39616,7 +39615,7 @@ Function3e459: ; 3e459 call Function3da0d xor a ld [$d265], a - call $6cab + call Function3ecab call Function3db5f call Function3edd1 call Function309d @@ -39632,14 +39631,14 @@ Function3e489: ; 3e489 ld [$cfa9], a ld hl, BattleMonSpd ld de, EnemyMonSpd - call $58b3 + call Function3d8b3 ld a, $0 ld [$d266], a ret c ld a, [$d0ec] and a ret nz - jp $6139 + jp Function3e139 ; 3e4a8 @@ -39671,7 +39670,7 @@ Function3e4bc: ; 3e4bc jr z, .asm_3e4e2 dec a jr z, .asm_3e4dd - call $6786 + call Function3e786 ret z ld hl, BattleMonMove1 jr .asm_3e4e2 @@ -39784,11 +39783,11 @@ Function3e4bc: ; 3e4bc ld [hBGMapMode], a call Function1bd3 bit 6, a - jp nz, $661d + jp nz, Function3e61d bit 7, a - jp nz, $662e + jp nz, Function3e62e bit 2, a - jp nz, $6643 + jp nz, Function3e643 bit 1, a push af xor a @@ -39853,7 +39852,7 @@ Function3e4bc: ; 3e4bc .asm_3e613 call FarBattleTextBox call Function30b4 - jp $64bc + jp Function3e4bc ; 3e61c .string_3e61c ; 3e61c @@ -39938,7 +39937,7 @@ Function3e643: ; 3e643 .asm_3e69e xor a ld [$d0e3], a - jp $64bc + jp Function3e4bc push hl ld a, [$d0e3] @@ -39964,7 +39963,7 @@ Function3e643: ; 3e643 .asm_3e6bf ld a, [$cfa9] ld [$d0e3], a - jp $64bc + jp Function3e4bc ; 3e6c8 MoveInfoBox: ; 3e6c8 @@ -40014,7 +40013,7 @@ MoveInfoBox: ; 3e6c8 ld a, [hl] and $3f ld [StringBuffer1], a - call $675f + call Function3e75f ld hl, $c555 ld de, .Type call PlaceString @@ -40116,19 +40115,19 @@ Function3e7c1: ; 3e7c1 ld a, [InLinkBattle] and a jr z, .asm_3e817 - call $6dd1 - call $309d + call Function3edd1 + call Function309d ld a, [$d0ec] and a - call z, $68e4 - call $30b4 + call z, Function3e8e4 + call Function30b4 ld a, [$d430] cp $e jp z, $68bd cp $d jp z, $682c cp $4 - jp nc, $68c1 + jp nc, Function3e8c1 ld [CurEnemyMoveNum], a ld c, a ld a, [EnemySubStatus1] @@ -40155,8 +40154,8 @@ Function3e7c1: ; 3e7c1 jp $687f .asm_3e824 - call $68d1 - jp nz, $68c1 + call Function3e8d1 + jp nz, Function3e8c1 jr .asm_3e830 ld a, $ff @@ -40220,7 +40219,7 @@ Function3e7c1: ; 3e7c1 .asm_3e882 call SetEnemyTurn callab UpdateMoveData - call $68d1 + call Function3e8d1 jr nz, .asm_3e894 xor a ld [$c733], a @@ -40303,11 +40302,11 @@ LoadEnemyMon: ; 3e8eb ; We don't need to be here if we're in a link battle ld a, [InLinkBattle] and a - jp nz, $5abd + jp nz, Function3dabd ld a, [$cfc0] ; ???? bit 0, a - jp nz, $5abd + jp nz, Function3dabd ; Make sure everything knows what species we're working with ld a, [TempEnemyMonSpecies] @@ -40936,7 +40935,7 @@ Function3ebd8: ; 3ebd8 push bc push hl .asm_3ec01 - call $6c1a + call Function3ec1a inc hl ld a, $7 add d @@ -40983,8 +40982,8 @@ Function3ec30: ; 3ec30 Function3ec31: ; 3ec31 ld [hBattleTurn], a - call $6c39 - jp $6c76 + call Function3ec39 + jp Function3ec76 ; 3ec39 Function3ec39: ; 3ec39 @@ -41432,7 +41431,7 @@ Function3ee3b: ; 3ee3b ld a, [$cfc0] bit 0, a ret nz - call $70d4 + call Function3f0d4 xor a ld [CurPartyMon], a ld bc, PartyMon1Species @@ -41533,20 +41532,20 @@ Function3ee3b: ; 3ee3b jr z, .asm_3eee2 .asm_3eedd - call $7106 + call Function3f106 ld a, $1 .asm_3eee2 ld [$d088], a ld a, [IsInBattle] dec a - call nz, $7106 + call nz, Function3f106 push bc ld a, $1 call GetPartyParamLocation ld a, [hl] cp $7e - call z, $7106 + call z, Function3f106 ld a, [$ffb6] ld [$d087], a ld a, [$ffb5] @@ -41561,7 +41560,7 @@ Function3ee3b: ; 3ee3b ld a, [StringBuffer2] ld [$ffb5], a pop bc - call $7136 + call Function3f136 push bc call Function309d pop bc @@ -41715,8 +41714,8 @@ Function3ee3b: ; 3ee3b .asm_3f012 xor a ld [$d265], a - call $6cab - ld hl, $6c2c + call Function3ecab + ld hl, Function3ec2c ld a, $f rst FarCall ld hl, $6d45 @@ -41980,15 +41979,15 @@ Function3f136: ; 3f136 ld [CurPartyLevel], a ld [BattleMonLevel], a push de - call $721b + call Function3f21b ld c, $40 - call $722c + call Function3f22c call Function3dfbf ld hl, BattleMonNick ld de, StringBuffer1 ld bc, $000b call CopyBytes - call $3dfe + call Function3dfe ld de, $00b6 call StartSFX ld a, $23 @@ -42010,9 +42009,9 @@ Function3f136: ; 3f136 ld a, b pop bc ld c, a - call $721b - call $722c - call $3dfe + call Function3f21b + call Function3f22c + call Function3dfe pop af ld [$ffb5], a pop af @@ -42128,13 +42127,13 @@ Function3f26d: ; 3f26d ld hl, UnknownText_0x3f2d1 cp $46 jr nc, .asm_3f2ce - ld hl, $72d8 + ld hl, UnknownText_0x3f2d8 cp $28 jr nc, .asm_3f2ce - ld hl, $72df + ld hl, UnknownText_0x3f2df cp $a jr nc, .asm_3f2ce - ld hl, $72e6 + ld hl, UnknownText_0x3f2e6 .asm_3f2ce jp BattleTextBox @@ -42217,16 +42216,16 @@ Function3f2ff: ; 3f2ff pop bc pop de ld a, [$ffb6] - ld hl, $7348 + ld hl, UnknownText_0x3f348 and a ret z - ld hl, $735b + ld hl, UnknownText_0x3f35b cp $1e ret c - ld hl, $734d + ld hl, UnknownText_0x3f34d cp $46 ret c - ld hl, $7352 + ld hl, UnknownText_0x3f352 ret ; 3f348 @@ -42291,11 +42290,11 @@ Function3f360: ; 3f360 Function3f390: ; 3f390 push hl - call $739c + call Function3f39c pop hl ld de, $0007 add hl, de - jp $741c + jp Function3f41c ; 3f39c Function3f39c: ; 3f39c @@ -42429,7 +42428,7 @@ Function3f43d: ; 3f43d jr nz, .asm_3f46f ld a, [$c6fe] and a - ld hl, $46cf + ld hl, Function3c6cf jr nz, .asm_3f46f ld a, [CurPartySpecies] push af @@ -42464,7 +42463,7 @@ Function3f47c: ; 3f47c jr nz, .asm_3f4b4 ld a, [$c6fa] and a - ld hl, $46cf + ld hl, Function3c6cf jr nz, .asm_3f4b4 ld a, [CurPartySpecies] push af @@ -42500,9 +42499,9 @@ Function3f4c1: ; 3f4c1 ret z ld a, [TimeOfDayPal] push af - call $74dd - call $4000 - call $769e + call Function3f4dd + call Function3c000 + call Function3f69e pop af ld [TimeOfDayPal], a scf @@ -42520,7 +42519,7 @@ Function3f4dd: ; 3f4dd ld a, $41 ld hl, $6050 rst FarCall - call $754e + call Function3f54e xor a ld [TempBattleMonSpecies], a ld [$d0d2], a @@ -42531,13 +42530,13 @@ Function3f4dd: ; 3f4dd callba Function2ee2f call Function2ed3 callba ClearBattleRAM - call $755e - call $7568 + call Function3f55e + call Function3f568 ld b, $0 call GetSGBLayout ld hl, rLCDC res 6, [hl] - call $7b6c + call Function3fb6c call $7c8b ld hl, rLCDC set 6, [hl] @@ -42574,8 +42573,8 @@ Function3f54e: ; 3f54e Function3f55e: ; 3f55e ld a, [OtherTrainerClass] and a - jp nz, $7594 - jp $7607 + jp nz, Function3f594 + jp Function3f607 ; 3f568 Function3f568: ; 3f568 @@ -42756,8 +42755,8 @@ Function3f662: ; 3f662 Function3f69e: ; 3f69e - call $76a5 - call $76d0 + call Function3f6a5 + call Function3f6d0 ret ; 3f6a5 @@ -42765,17 +42764,17 @@ Function3f6a5: ; 3f6a5 ld a, [InLinkBattle] and a jr z, .asm_3f6b7 - call $7759 + call Function3f759 ld c, $96 call DelayFrames - call $777c + call Function3f77c ret .asm_3f6b7 ld a, [$d0ee] and $f ret nz - call $771d + call Function3f71d xor a ld [$d1e9], a ld a, $1c @@ -42785,7 +42784,7 @@ Function3f6a5: ; 3f6a5 ; 3f6d0 Function3f6d0: ; 3f6d0 - call $7998 + call Function3f998 xor a ld [Danger], a ld [IsInBattle], a @@ -42842,7 +42841,7 @@ Function3f71d: ; 3f71d .asm_3f73d ld hl, $c6ee ld de, $d850 - call $50be + call Function3d0be ld hl, BattleText_0x80730 call FarBattleTextBox ld a, [$cfc0] @@ -42870,8 +42869,8 @@ Function3f759: ; 3f759 Function3f77c: ; 3f77c callba Function3d2e0 - jp c, $780f - call $7830 + jp c, Function3f80f + call Function3f830 jr nz, .asm_3f797 ld hl, $cd2a bit 4, [hl] @@ -42914,10 +42913,10 @@ Function3f77c: ; 3f77c call DelayFrames ld a, $1 call GetSRAMBank - call $7a42 - call $785f + call Function3fa42 + call Function3f85f call CloseSRAM - call $7830 + call Function3f830 jr z, .asm_3f7ee call Functiona80 call ClearTileMap @@ -43233,7 +43232,7 @@ Function3fa42: ; 3fa42 ld bc, $000a call CopyBytes ld hl, $b254 - call $7aa0 + call Function3faa0 ld hl, $b266 ld d, $5 .asm_3fa62 @@ -43276,8 +43275,8 @@ Function3fa42: ; 3fa42 pop hl .asm_3fa99 - call $7aa0 - call $7ac8 + call Function3faa0 + call Function3fac8 ret ; 3faa0 @@ -43293,7 +43292,7 @@ Function3faa0: ; 3faa0 .asm_3fab4 add hl, bc - call $7abe + call Function3fabe ret nc inc [hl] ret nz @@ -43321,7 +43320,7 @@ Function3fac8: ; 3fac8 push bc push de push hl - call $7b54 + call Function3fb54 pop hl ld a, e pop de @@ -43435,7 +43434,7 @@ Function3fb54: ; 3fb54 ; 3fb6c Function3fb6c: ; 3fb6c - call $7bf8 + call Function3fbf8 ld hl, $c590 ld b, $4 ld c, $12 @@ -43446,7 +43445,7 @@ Function3fb6c: ; 3fb6c call ClearBox call Functione51 call Function3ed9f - call $7bd6 + call Function3fbd6 xor a ld [$ffde], a ld [$ffd0], a @@ -43502,7 +43501,7 @@ Function3fbd6: ; 3fbd6 Function3fbf8: ; 3fbf8 call GetPlayerBackpic - call $7c30 + call Function3fc30 ret ; 3fbff @@ -43556,7 +43555,7 @@ Function3fc30: ; 3fc30 call Functionf82 pop af ld [rSVBK], a - call $7c5b + call Function3fc5b ld a, $31 ld [$ffad], a ld hl, $c51a @@ -43633,7 +43632,7 @@ BattleStartMessage ; 3fc8b ld a, 1 ld [$c689], a ld de, $0101 - call $6e17 + call Function3ee17 .asm_3fcc2 callba CheckSleepingTreeMon @@ -43655,7 +43654,7 @@ BattleStartMessage ; 3fc8b ld a, $0f ld [CryTracks], a ld a, [TempEnemyMonSpecies] - call $37b6 + call Function37b6 .asm_3fceb ld a, [BattleType] @@ -43686,7 +43685,7 @@ BattleStartMessage ; 3fc8b pop hl call FarBattleTextBox - call $7830 + call Function3f830 ret nz ld c, $2 @@ -43731,14 +43730,14 @@ Function40000: ; 40000 ld [$ffaa], a xor a ld [$ffde], a - call $4063 + call Function40063 call DelayFrame .asm_40029 call Functiona57 ld a, [$cf63] bit 7, a jr nz, .asm_4003b - call $410b + call Function4010b call DelayFrame jr .asm_40029 @@ -43769,7 +43768,7 @@ Function40063: ; 40063 call WhiteBGMap call ClearSprites call ClearTileMap - call $54b7 + call Function414b7 ld hl, PlayerSDefLevel ld bc, $0115 xor a @@ -43779,16 +43778,16 @@ Function40063: ; 40063 ld [$cf64], a ld [$cf65], a ld [$cf66], a - call $40a2 + call Function400a2 ld a, [$d959] ld [$c7d4], a - call $4bdc - call $40b4 - call $40ed + call Function40bdc + call Function400b4 + call Function400ed ld a, $77 ld hl, $6247 rst FarCall - call $5af7 + call Function41af7 ret ; 400a2 @@ -43869,7 +43868,7 @@ Function400ed: ; 400ed Function4010b: ; 4010b ld a, [$cf63] ld hl, $4115 - call $5432 + call Function41432 jp [hl] ; 40115 @@ -43881,7 +43880,7 @@ Function40ad5: ; 40ad5 ld a, $33 ld [hli], a ld d, $34 - call $4b06 + call Function40b06 ld a, $35 ld [hl], a pop hl @@ -43892,7 +43891,7 @@ Function40ad5: ; 40ad5 ld a, $36 ld [hli], a ld d, $7f - call $4b06 + call Function40b06 ld a, $37 ld [hl], a pop hl @@ -43903,7 +43902,7 @@ Function40ad5: ; 40ad5 ld a, $38 ld [hli], a ld d, $39 - call $4b06 + call Function40b06 ld a, $3a ld [hl], a ret @@ -43960,7 +43959,7 @@ Function40bdc: ; 40bdc call ByteFill ld a, [$c7d4] ld hl, $4bf0 - call $5432 + call Function41432 jp [hl] ; 40bf0 @@ -43977,10 +43976,10 @@ Function40e5b: ; 40e5b ld [hBGMapMode], a ld hl, $c590 ld bc, $0412 - call $4ad5 + call Function40ad5 ld a, [$c7d8] ld hl, $4e7d - call $5432 + call Function41432 ld e, l ld d, h ld hl, $c5b9 @@ -44005,8 +44004,8 @@ Function41432: ; 41432 ; 4143b Function4143b: ; 4143b - call $4bb1 - call $4bd0 + call Function40bb1 + call Function40bd0 jr z, .asm_4145b ld a, [$def4] ld [UnownLetter], a @@ -44043,12 +44042,12 @@ Function414b7: ; 414b7 ld bc, $0310 xor a call ByteFill - call $54fb + call Function414fb call Functione5f ld hl, $9600 ld bc, $0200 call $5504 - call $5a24 + call Function41a24 jr nz, .asm_414e0 ld a, $77 ld hl, $5f1c @@ -44065,7 +44064,7 @@ Function414b7: ; 414b7 ld de, VTiles0 call Decompress ld a, $6 - call $3cb4 + call Function3cb4 call EnableLCD ret ; 414fb @@ -44100,7 +44099,7 @@ Function41a24: ; 41a24 Function41a2c: ; 41a2c ld a, $0 call GetSRAMBank - ld hl, $4000 + ld hl, Function40000 ld de, $a188 ld bc, Function270 ld a, $77 @@ -44136,7 +44135,7 @@ Function421d8: ; 421d8 ld a, [CurPartyMon] ld c, a ld b, $1 - call $6577 + call Function42577 xor a ld [$d268], a dec a @@ -44153,14 +44152,14 @@ Function421d8: ; 421d8 inc hl ld a, [hl] cp $ff - jp z, $63ff + jp z, Function423ff ld [MagikarpLength], a push hl ld a, [CurPartyMon] ld c, a ld hl, EvolvableFlags ld b, $2 - call $6577 + call Function42577 ld a, c and a jp z, $61f5 @@ -44202,9 +44201,9 @@ Function421d8: ; 421d8 jr z, .asm_42283 ld a, [TempMonLevel] cp [hl] - jp c, $63f8 - call $6461 - jp z, $63f8 + jp c, Function423f8 + call Function42461 + jp z, Function423f8 push hl ld de, TempMonAtk ld hl, TempMonDef @@ -44228,7 +44227,7 @@ Function421d8: ; 421d8 ld a, [TempMonHappiness] cp $dc jp c, $63f9 - call $6461 + call Function42461 jp z, $63f9 ld a, [hli] cp $1 @@ -44250,7 +44249,7 @@ Function421d8: ; 421d8 ld a, [InLinkBattle] and a jp z, $63f9 - call $6461 + call Function42461 jp z, $63f9 ld a, [hli] ld b, a @@ -44284,7 +44283,7 @@ Function421d8: ; 421d8 ld a, [TempMonLevel] cp b jp c, $63fa - call $6461 + call Function42461 jp z, $63fa .asm_422fd @@ -44317,7 +44316,7 @@ Function421d8: ; 421d8 push af call ClearSprites pop af - jp c, $6454 + jp c, Function42454 ld hl, $6473 call PrintText pop hl @@ -44341,7 +44340,7 @@ Function421d8: ; 421d8 ld c, $28 call DelayFrames call ClearTileMap - call $6414 + call Function42414 call GetBaseData ld hl, $d118 ld de, TempMonMaxHP @@ -44380,7 +44379,7 @@ Function421d8: ; 421d8 ld [$d265], a xor a ld [MonType], a - call $6487 + call Function42487 ld a, [$d265] dec a call SetSeenAndCaughtMon @@ -44427,7 +44426,7 @@ Function423ff: ; 423ff ret nz ld a, [$d268] and a - call nz, $3d47 + call nz, Function3d47 ret ; 42414 @@ -45004,7 +45003,7 @@ Function441cf: ; 441cf ld c, a push bc push hl - call $4207 + call Function44207 pop hl pop bc call DelayFrames @@ -45012,7 +45011,7 @@ Function441cf: ; 441cf jr nz, .asm_441d4 xor a ld [$c7db], a - call $4207 + call Function44207 ld c, $20 call DelayFrames ret @@ -45063,7 +45062,7 @@ Function4456e: ; 4456e ld hl, $5e76 rst FarCall jr nc, .asm_445be - call $4648 + call Function44648 cp $a jr nc, .asm_445be ld bc, $002f @@ -45250,13 +45249,13 @@ INCBIN "baserom.gbc", $44745, $447a0 - $44745 _KrisMailBoxMenu: ; 0x447a0 call InitMail jr z, .nomail - call $1d6e + call Function1d6e call Function44806 jp Function1c17 .nomail ld hl, .EmptyMailboxText - jp $1d67 + jp Function1d67 ; 0x447b4 .EmptyMailboxText ; 0x447b4 @@ -45329,13 +45328,13 @@ Function44806: ; 0x44806 call Function1d3c xor a ld [hBGMapMode], a - call $352f - call $1ad2 + call Function352f + call Function1ad2 ld a, [$d0f1] ld [$cf88], a ld a, [$d0f0] ld [$d0e4], a - call $350c + call Function350c ld a, [$d0e4] ld [$d0f0], a ld a, [$cfa9] @@ -45378,13 +45377,13 @@ Function4484a: ; 0x4484a dec a ld b, a call $45f4 - jp $2b3c + jp Function2b3c ; 0x44877 .PutInPack ; 0x44877 ld hl, .MessageLostText - call $1d4f - call $1dcf + call Function1d4f + call Function1dcf call Function1c07 ret c ld a, [MenuSelection] @@ -45393,10 +45392,10 @@ Function4484a: ; 0x4484a ld a, $1 ld [$d10c], a ld hl, NumItems - call $2f66 + call Function2f66 jr c, .asm_4489e ld hl, .PackFullText - jp $1d67 + jp Function1d67 .asm_4489e ld a, [MenuSelection] @@ -45404,7 +45403,7 @@ Function4484a: ; 0x4484a ld b, a call $45c0 ld hl, .PutAwayText - jp $1d67 + jp Function1d67 ; 0x448ac .PutAwayText ; 0x448ac @@ -45486,7 +45485,7 @@ Function4484a: ; 0x4484a call PrintText .asm_44939 - jp $2b3c + jp Function2b3c ; 0x4493c .HoldingMailText ; 0x4493c @@ -45588,7 +45587,7 @@ Function4925b: ; 4925b call GetSGBLayout xor a ld [$d142], a - call $52a5 + call Function492a5 ld [$d265], a ld [$d262], a call GetMoveName @@ -45606,7 +45605,7 @@ Function4925b: ; 4925b jr c, .asm_4929c .asm_49291 - call $52b9 + call Function492b9 jr nc, .asm_49289 xor a ld [ScriptVar], a @@ -45617,7 +45616,7 @@ Function4925b: ; 4925b ld [ScriptVar], a .asm_492a1 - call $2b3c + call Function2b3c ret ; 492a5 @@ -45658,7 +45657,7 @@ Function492b9: ; 492b9 pop de ld a, $b ld hl, $48ce - call $31b0 + call Function31b0 jr .asm_49300 .asm_492e5 @@ -45696,7 +45695,7 @@ Function49409: ; 49409 ld de, $d038 ld bc, $0008 ld a, $5 - call $306b + call Function306b ret ; 49418 @@ -45750,7 +45749,7 @@ MenuData2_0x49d1c: ; 49d1c db $80 ; flags db 0 ; items dw MainMenuItems - dw $1f79 + dw Function1f79 dw MainMenuText ; 49d20 @@ -45916,7 +45915,7 @@ Function49de4: ; 49de4 ld a, [$cfa5] set 5, a ld [$cfa5], a - call $1f1a + call Function1f1a ld a, [$cf73] cp $2 jr z, .asm_49e07 @@ -45992,7 +45991,7 @@ Function49e3d: ; 49e3d inc hl ld de, hMinutes ld bc, $8102 - call $3198 + call Function3198 ret ; 49e70 @@ -46105,14 +46104,14 @@ MainMenu_Mobile: ; 49efc call PlaceString call Function3200 call Function32f9 - call $1bc9 + call Function1bc9 ld hl, $cfa9 ld b, [hl] push bc jr .asm_49f5d .asm_49f55 - call $1bd3 + call Function1bd3 ld hl, $cfa9 ld b, [hl] push bc @@ -46136,7 +46135,7 @@ MainMenu_Mobile: ; 49efc cp $4 jp z, $6100 ld a, $1 - call $1ff8 + call Function1ff8 .asm_49f84 pop bc @@ -46859,11 +46858,11 @@ Function4d188: ; 4d188 ld a, $1 ld [rVBK], a ld hl, AttrMap - call $51cb + call Function4d1cb ld a, $0 ld [rVBK], a ld hl, TileMap - call $51cb + call Function4d1cb .asm_4d1bd ld a, [rLY] cp $8f @@ -46999,7 +46998,7 @@ Function4d35b: ; 4d35b ld l, e push bc push hl - call $537e + call Function4d37e pop hl pop bc ld de, $0939 @@ -47030,7 +47029,7 @@ Function4d37e: ; 4d37e ld a, $76 ld [hli], a inc a - call $53ab + call Function4d3ab inc a ld [hl], a pop hl @@ -47041,7 +47040,7 @@ Function4d37e: ; 4d37e ld a, $79 ld [hli], a ld a, $7f - call $53ab + call Function4d3ab ld [hl], $7a pop hl ld de, $0014 @@ -47051,7 +47050,7 @@ Function4d37e: ; 4d37e ld a, $7b ld [hli], a ld a, $7c - call $53ab + call Function4d3ab ld [hl], $7d ret ; 4d3ab @@ -47402,7 +47401,7 @@ INCBIN "baserom.gbc", $4d87a, $4db3b - $4d87a Function4db3b: ; 4db3b ld hl, $5b44 call PrintText - jp $1dcf + jp Function1dcf ; 4db44 INCBIN "baserom.gbc", $4db44, $4db49 - $4db44 @@ -47503,7 +47502,7 @@ StatsScreenInit: ; 4dc8a push hl call WhiteBGMap call ClearTileMap - call $1ad2 + call Function1ad2 ld a, $3e ld hl, $753e rst FarCall ; this loads graphics @@ -47621,7 +47620,7 @@ EggStatsScreen: ; 4e33a call Function32f9 ; pals call DelayFrame ld hl, TileMap - call $3786 + call Function3786 ld a, $41 ld hl, $402d rst FarCall @@ -47690,7 +47689,7 @@ Function4e5e1: ; 4e5e1 push af ld a, [BaseDexNo] push af - call $6607 + call Function4e607 pop af ld [BaseDexNo], a pop af @@ -47725,31 +47724,31 @@ Function4e607: ; 4e607 ld a, [MagikarpLength] ld [PlayerHPPal], a ld c, $0 - call $6703 + call Function4e703 ld a, [MagikarpLength] ld [CurPartySpecies], a ld [CurSpecies], a - call $6708 + call Function4e708 ld de, VTiles2 ld hl, $9310 ld bc, $0031 call Functioneba ld a, $31 ld [$d1ec], a - call $6755 + call Function4e755 ld a, [Buffer2] ld [CurPartySpecies], a ld [CurSpecies], a - call $6711 + call Function4e711 ld a, [MagikarpLength] ld [CurPartySpecies], a ld [CurSpecies], a ld a, $1 ld [hBGMapMode], a - call $6794 + call Function4e794 jr c, .asm_4e67c ld a, [MagikarpLength] - call $37ce + call Function37ce .asm_4e67c ld de, $0022 @@ -47757,21 +47756,21 @@ Function4e607: ; 4e607 ld c, $50 call DelayFrames ld c, $1 - call $6703 - call $6726 + call Function4e703 + call Function4e726 jr c, .asm_4e6df ld a, $cf ld [$d1ec], a - call $6755 + call Function4e755 xor a ld [$d1ed], a ld a, [Buffer2] ld [PlayerHPPal], a ld c, $0 - call $6703 - call $67a6 + call Function4e703 + call Function4e7a6 callba Function8cf53 - call $6794 + call Function4e794 jr c, .asm_4e6de ld a, [$c2c6] push af @@ -47801,13 +47800,13 @@ Function4e607: ; 4e607 ld a, [MagikarpLength] ld [PlayerHPPal], a ld c, $0 - call $6703 - call $67a6 + call Function4e703 + call Function4e7a6 callba Function8cf53 - call $6794 + call Function4e794 ret c ld a, [PlayerHPPal] - call $37ce + call Function37ce ret ; 4e703 @@ -47819,7 +47818,7 @@ Function4e703: ; 4e703 Function4e708: ; 4e708 call GetBaseData ld hl, $c4cf - jp $3786 + jp Function3786 ; 4e711 Function4e711: ; 4e711 @@ -47839,11 +47838,11 @@ Function4e726: ; 4e726 ld bc, $010e .asm_4e72c push bc - call $6779 + call Function4e779 pop bc jr c, .asm_4e73f push bc - call $6741 + call Function4e741 pop bc inc b dec c @@ -47861,10 +47860,10 @@ Function4e741: ; 4e741 .asm_4e741 ld a, $cf ld [$d1ec], a - call $6755 + call Function4e755 ld a, $31 ld [$d1ec], a - call $6755 + call Function4e755 dec b jr nz, .asm_4e741 ret @@ -47942,15 +47941,15 @@ Function4e7a6: ; 4e7a6 push af ld [hl], $0 .asm_4e7b8 - call $67cf + call Function4e7cf jr nc, .asm_4e7c2 - call $680c + call Function4e80c jr .asm_4e7b8 .asm_4e7c2 ld c, $20 .asm_4e7c4 - call $680c + call Function4e80c dec c jr nz, .asm_4e7c4 pop af @@ -47968,9 +47967,9 @@ Function4e7cf: ; 4e7cf and $1 jr nz, .asm_4e7e6 ld e, $0 - call $67e8 + call Function4e7e8 ld e, $10 - call $67e8 + call Function4e7e8 .asm_4e7e6 scf @@ -48119,10 +48118,10 @@ Function4e980: ; 4e980 push af ld a, $5 ld [rSVBK], a - call $6998 + call Function4e998 ld a, $43 ld [hLCDStatCustom], a - call $69ab + call Function4e9ab xor a ld [hLCDStatCustom], a pop af @@ -48131,7 +48130,7 @@ Function4e980: ; 4e980 ; 4e998 Function4e998: ; 4e998 - call $69e5 + call Function4e9e5 ld a, $90 ld [$ffcf], a ld a, $e4 @@ -48154,7 +48153,7 @@ Function4e9ab: ; 4e9ab jr c, .asm_4e9b3 ld a, d ld [$ffcf], a - call $69f1 + call Function4e9f1 inc e inc e dec d @@ -48164,7 +48163,7 @@ Function4e9ab: ; 4e9ab cp $1 jr z, .asm_4e9ce push de - call $69d6 + call Function4e9d6 pop de .asm_4e9ce @@ -48256,7 +48255,7 @@ Function4ea0a: ; 4ea0a Function4ea44: ; 4ea44 ld a, $0 ld hl, InLinkBattle - call $307b + call Function307b cp $4 jr z, .asm_4ea59 ld a, [Options] @@ -48283,7 +48282,7 @@ Function4ea44: ; 4ea44 .asm_4ea72 ld a, $5 ld hl, $dc00 - call $307b + call Function307b bit 0, a jr z, .asm_4ea80 and a @@ -48318,7 +48317,7 @@ Function4ea82: ; 4ea82 call Functionf82 ld de, $4200 ld hl, VTiles1 - ld bc, $3e80 + ld bc, Function3e80 call Functionf9d call Function4eac5 call WaitBGMap @@ -48443,7 +48442,7 @@ Function5001d: ; 5001d ld [PartyMenuActionText], a call Function2ed3 call WhiteBGMap - call $403f + call Function5003f call WaitBGMap ld b, $a call GetSGBLayout @@ -48455,9 +48454,9 @@ Function5001d: ; 5001d ; 5003f Function5003f: ; 5003f - call $404f - call $4405 - call $43e0 + call Function5004f + call Function50405 + call Function503e0 call WritePartyMenuTilemap call PrintPartyMenuText ret @@ -48486,7 +48485,7 @@ WritePartyMenuTilemap: ; 0x5005f ld bc, $0168 ld a, " " call ByteFill ; blank the tilemap - call $4396 ; This reads from a pointer table??? + call Function50396 ; This reads from a pointer table??? .asm_50077 ld a, [hli] cp $ff @@ -48517,14 +48516,14 @@ Function500cf: ; 500cf .asm_500de push bc push hl - call $4389 + call Function50389 jr z, .asm_50103 push hl - call $4117 + call Function50117 pop hl ld d, $6 ld b, $0 - call $3750 + call Function3750 ld hl, $cd9b ld a, [$cda9] ld c, a @@ -48587,7 +48586,7 @@ Function50138: ; 50138 .asm_50143 push bc push hl - call $4389 + call Function50389 jr z, .asm_5016b push hl ld a, b @@ -48599,14 +48598,14 @@ Function50138: ; 50138 pop hl push de ld bc, $0203 - call $3198 + call Function3198 pop de ld a, $f3 ld [hli], a inc de inc de ld bc, $0203 - call $3198 + call Function3198 .asm_5016b pop hl @@ -48629,7 +48628,7 @@ Function50176: ; 50176 .asm_50181 push bc push hl - call $4389 + call Function50389 jr z, .asm_501a7 push hl ld a, b @@ -48648,7 +48647,7 @@ Function50176: ; 50176 .asm_501a1 ld bc, $4103 - call $3198 + call Function3198 .asm_501a7 pop hl @@ -48671,7 +48670,7 @@ Function501b2: ; 501b2 .asm_501bd push bc push hl - call $4389 + call Function50389 jr z, .asm_501d5 push hl ld a, b @@ -48681,7 +48680,7 @@ Function501b2: ; 501b2 ld e, l ld d, h pop hl - call $4d0a + call Function50d0a .asm_501d5 pop hl @@ -48704,7 +48703,7 @@ Function501e0: ; 501e0 .asm_501eb push bc push hl - call $4389 + call Function50389 jr z, .asm_5020a push hl ld hl, PartySpecies @@ -48716,7 +48715,7 @@ Function501e0: ; 501e0 ld a, $e call Predef pop hl - call $4215 + call Function50215 call PlaceString .asm_5020a @@ -48755,7 +48754,7 @@ Function5022f: ; 5022f .asm_5023a push bc push hl - call $4389 + call Function50389 jr z, .asm_5025d push hl ld a, b @@ -48769,7 +48768,7 @@ Function5022f: ; 5022f ld hl, $65b1 add hl, de add hl, de - call $4268 + call Function50268 pop hl call PlaceString @@ -48834,7 +48833,7 @@ Function502b1: ; 502b1 .asm_502bc push bc push hl - call $4389 + call Function50389 jr z, .asm_502e3 ld [CurPartySpecies], a push hl @@ -49005,7 +49004,7 @@ Function50405: ; 50405 xor a ld [$d0e3], a ld de, $444f - call $1bb1 + call Function1bb1 ld a, [PartyCount] inc a ld [$cfa3], a @@ -49032,8 +49031,8 @@ INCBIN "baserom.gbc", $5042d, $50457 - $5042d PartyMenuSelect: ; 0x50457 ; sets carry if exitted menu. - call $1bc9 - call $1bee + call Function1bc9 + call Function1bee ld a, [PartyCount] inc a ld b, a @@ -49141,7 +49140,7 @@ Function50566: ; 50566 ld a, [PartyMenuActionText] and $f ld hl, $457b - call $45c1 + call Function505c1 ret ; 5057b @@ -49171,7 +49170,7 @@ INCBIN "baserom.gbc", $505da, $50730 - $505da Function50730: ; 50730 ld hl, $473c - call $31cd + call Function31cd ld a, $1 ld [$d0ec], a ret @@ -49199,7 +49198,7 @@ Function50779: ; 50779 cp $6 jr nz, .asm_507a9 ld hl, $47af - call $31cd + call Function31cd ld a, $1 ld [$d0ec], a ret @@ -49228,7 +49227,7 @@ Function507b4: ; 507b4 cp $a jr nz, .asm_507db ld hl, $47e1 - call $31cd + call Function31cd ld a, $1 ld [$d0ec], a ret @@ -49245,10 +49244,10 @@ INCBIN "baserom.gbc", $507e1, $507e6 - $507e1 Function507e6: ; 507e6 ld a, $0 ld [$d0ec], a - call $47fb + call Function507fb ret nc ld hl, $4821 - call $31cd + call Function31cd ld a, $1 ld [$d0ec], a ret @@ -49649,7 +49648,7 @@ Function50e47: ; 50e47 ld b, $0 ld hl, $4efa add hl, bc - call $4eed + call Function50eed ld a, d ld [hMultiplier], a call Multiply @@ -49669,7 +49668,7 @@ Function50e47: ; 50e47 push af ld a, [$ffb6] push af - call $4eed + call Function50eed ld a, [hl] and $7f ld [hMultiplier], a @@ -49799,7 +49798,7 @@ Function5120d: ; 5120d push de ld a, $4a call GetFarByte - call $51c5 + call Function511c5 push af inc hl ld a, $4a @@ -50438,7 +50437,7 @@ TrySurfStep: ; 801c0 .ExitWater call WaterToLandSprite - call $3cdf ; PlayMapMusic + call Function3cdf ; PlayMapMusic ld a, STEP_WALK call DoStep ld a, 6 @@ -50521,7 +50520,7 @@ CheckEdgeWarp: ; 80226 and 3 cp e jr nz, .asm_80259 - call $224a ; CheckFallPit? + call Function224a ; CheckFallPit? jr nc, .asm_80259 call StandInPlace @@ -50883,7 +50882,7 @@ WaterToLandSprite: ; 803f9 push bc ld a, PLAYER_NORMAL ld [PlayerState], a - call $e4a ; UpdateSprites + call Functione4a ; UpdateSprites pop bc ret ; 80404 @@ -51283,7 +51282,7 @@ INCBIN "gfx/fx/039.lz" INCBIN "baserom.gbc", $8640b, $8640e - $8640b HallOfFame3: ; 0x8640e - call $648e + call Function8648e ld a, [StatusFlags] push af ld a, $1 @@ -51308,13 +51307,13 @@ HallOfFame3: ; 0x8640e ld a, $5 ld hl, $4b85 rst FarCall - call $653f + call Function8653f ld a, $5 ld hl, $4b5f rst FarCall xor a ld [$c2cd], a - call $64c3 + call Function864c3 pop af ld b, a ld a, $42 @@ -51385,10 +51384,10 @@ Function864b4: ; 864b4 Function864c3: ; 864c3 xor a ld [$cf63], a - call $671c + call Function8671c jr c, .asm_864fb ld de, $0014 - call $64b4 + call Function864b4 xor a ld [$cf64], a .asm_864d6 @@ -51402,16 +51401,16 @@ Function864c3: ; 864c3 cp $ff jr z, .asm_864fb push hl - call $65b5 + call Function865b5 pop hl - call $650c + call Function8650c jr c, .asm_864fb ld hl, $cf64 inc [hl] jr .asm_864d6 .asm_864fb - call $6810 + call Function86810 ld a, $4 ld [MusicFade], a call $04b6 @@ -51421,7 +51420,7 @@ Function864c3: ; 864c3 ; 8650c Function8650c: ; 8650c - call $6748 + call Function86748 ld de, $652c ld hl, $c4c9 call PlaceString @@ -51561,7 +51560,7 @@ Function865b5: ; 865b5 ld b, $1a call GetSGBLayout call Function32f9 - call $6635 + call Function86635 xor a ld [$c2c6], a ld hl, TileMap @@ -51574,7 +51573,7 @@ Function865b5: ; 865b5 xor a ld [hBGMapMode], a ld [$ffd0], a - call $6643 + call Function86643 ret ; 86635 @@ -51681,7 +51680,7 @@ Function86748: ; 86748 ld hl, $c5a7 ld de, $d265 ld bc, $8103 - call $3198 + call Function3198 call GetBasePokemonName ld hl, $c5ab call PlaceString @@ -51703,7 +51702,7 @@ Function86748: ; 86748 ld de, StringBuffer2 call PlaceString ld hl, $c5e1 - call $382d + call Function382d .asm_867f8 ld hl, $c5e7 @@ -51715,7 +51714,7 @@ Function86748: ; 86748 ld hl, $c5ea ld de, TempMonID ld bc, $8205 - call $3198 + call Function3198 ret ; 86810 @@ -51749,7 +51748,7 @@ Function86810: ; 86810 ld b, $1a call GetSGBLayout call Function32f9 - call $6635 + call Function86635 xor a ld [$c2c6], a ld hl, TileMap @@ -51771,7 +51770,7 @@ Function86810: ; 86810 xor a ld [hBGMapMode], a ld [$ffd0], a - call $6643 + call Function86643 xor a ld [hBGMapMode], a ld hl, $c4c8 @@ -51792,19 +51791,19 @@ Function86810: ; 86810 ld hl, $c51c ld de, PlayerID ld bc, $8205 - call $3198 + call Function3198 ld hl, $c541 ld de, $68ed call PlaceString ld hl, $c557 ld de, GameTimeHours ld bc, $0203 - call $3198 + call Function3198 ld [hl], $63 inc hl ld de, GameTimeMinutes ld bc, $8102 - call $3198 + call Function3198 call WaitBGMap callba Function26601 ret @@ -52331,16 +52330,16 @@ Function8c079: ; 8c079 ld c, $12 call GetTimePalFade ld b, $4 - call $416d + call Function8c16d ret ; 8c084 Function8c084: ; 8c084 - call $40c1 + call Function8c0c1 ld c, $9 call GetTimePalFade ld b, $4 - call $415e + call Function8c15e ret ; 8c092 @@ -53134,13 +53133,13 @@ Function8e72a: ; 8e72a and $3f cp $20 jr nc, .asm_8e737 - call $6741 + call Function8e741 ld a, h ret .asm_8e737 and $1f - call $6741 + call Function8e741 ld a, h xor $ff inc a @@ -53189,7 +53188,7 @@ Function8e79d: ; 8e79d ld d, $0 .asm_8e7b5 push bc - call $67c6 + call Function8e7c6 call DelayFrame pop bc inc d @@ -53223,7 +53222,7 @@ Function8e7c6: ; 8e7c6 pop af push de push hl - call $672a + call Function8e72a pop hl pop de add $54 @@ -53751,7 +53750,7 @@ INCBIN "baserom.gbc", $90000, $9000f - $90000 Function9000f: ; 9000f - call $401c + call Function9001c jr nc, .asm_90017 xor a ld [hl], a @@ -53763,7 +53762,7 @@ Function9000f: ; 9000f ; 90019 Function90019: ; 90019 - jp $401c + jp Function9001c ; 9001c Function9001c: ; 9001c @@ -53810,8 +53809,8 @@ Function9029a: ; 9029a ld [$d003], a ld a, d ld [$d004], a - call $42b3 - call $42b3 + call Function902b3 + call Function902b3 ld a, $41 ld hl, $60d3 rst FarCall @@ -53819,18 +53818,18 @@ Function9029a: ; 9029a ; 902b3 Function902b3: ; 902b3 - call $433f + call Function9033f call $4357 - call $42c9 + call Function902c9 call $4357 - call $4375 + call Function90375 call $4357 - call $42c9 + call Function902c9 ret ; 902c9 Function902c9: ; 902c9 - call $4375 + call Function90375 ld hl, $c4c9 ld [hl], $62 inc hl @@ -53841,7 +53840,7 @@ Function902c9: ; 902c9 ld e, a ld a, [$d004] ld d, a - call $4069 + call Function90069 ret ; 902e3 @@ -53849,20 +53848,20 @@ INCBIN "baserom.gbc", $902e3, $902eb - $902e3 Function902eb: ; 902eb - call $431d - call $4355 - call $432f - call $4355 - call $433b - call $4355 - call $432f - call $4355 - call $433b - call $4355 - call $432f - call $4355 - call $433b - call $4355 + call Function9031d + call Function90355 + call Function9032f + call Function90355 + call Function9033b + call Function90355 + call Function9032f + call Function90355 + call Function9033b + call Function90355 + call Function9032f + call Function90355 + call Function9033b + call Function90355 ret ; 90316 @@ -53898,8 +53897,8 @@ Function9033f: ; 9033f call WaitSFX ld de, $006a call StartSFX - call $4375 - call $1ad2 + call Function90375 + call Function1ad2 ld a, $13 ld hl, $5188 rst FarCall @@ -53969,12 +53968,12 @@ Function91ae1: ; 91ae1 ld a, e and a jr nz, .asm_91aec - call $5ff2 + call Function91ff2 call FillJohtoMap ret .asm_91aec - call $5ff2 + call Function91ff2 call FillKantoMap ret ; 91af3 @@ -54853,7 +54852,7 @@ CheckTileEvent: ; 96874 call Function96712 jr z, .asm_96890 - call $2ad4 + call Function2ad4 jr c, .asm_968ba .asm_96890 @@ -54937,7 +54936,7 @@ Function968d8: ; 968d8 Function968e4: ; 968e4 call Function966d6 ret z - call $2f3e + call Function2f3e ret ; 968ec @@ -54947,7 +54946,7 @@ Function968ec: ; 968ec jr z, .asm_96938 ld c, a - call $211b + call Function211b cp c jr nc, .asm_96938 @@ -55754,7 +55753,7 @@ Function97c5f: ; 97c5f ld hl, $765b rst FarCall jr c, .asm_97cb9 - call $1894 + call Function1894 jr nz, .asm_97c7b ld a, $3 ld hl, $5186 @@ -55781,7 +55780,7 @@ Function97c5f: ; 97c5f .asm_97c9b ld a, [EngineBuffer1] - call $189a + call Function189a jr nz, .asm_97cad ld a, $3 ld hl, $4ec9 @@ -55978,7 +55977,7 @@ Function97db5: ; 97db5 ld a, [PlayerState] cp $1 jr nz, .asm_97df7 - call $2d05 + call Function2d05 and a jr nz, .asm_97df7 ld hl, $dca2 @@ -56191,7 +56190,7 @@ Function97eb7: ; 97eb7 ; 97eb8 Function97eb8: ; 97eb8 - call $2f3e + call Function2f3e ret ; 97ebc @@ -56326,7 +56325,7 @@ Function97f42: ; 97f42 ld a, [hl] cp $ff jr nz, .asm_97f71 - call $3567 + call Function3567 jr c, .asm_97f7c .asm_97f71 @@ -57763,7 +57762,7 @@ Functionb800a: ; b800a ld c, a call GetWorldMapLocation ld [$c2d9], a - call $4089 + call Functionb8089 jr z, .asm_b8024 call GetMapPermission cp $6 @@ -57778,16 +57777,16 @@ Functionb800a: ; b800a bit 1, [hl] res 1, [hl] jr nz, .asm_b8054 - call $4064 + call Functionb8064 jr z, .asm_b8054 ld a, [$c2d9] ld [$c2d8], a - call $4070 + call Functionb8070 jr z, .asm_b8054 ld a, $3c ld [$c2da], a - call $40c6 - call $40d3 + call Functionb80c6 + call Functionb80d3 ld a, $41 ld hl, $4303 rst FarCall @@ -57860,8 +57859,8 @@ Functionb80d3: ; b80d3 ld hl, TileMap ld b, $2 ld c, $12 - call $4115 - call $412f + call Functionb8115 + call Functionb812f ret ; b80e1 @@ -57897,23 +57896,23 @@ Functionb812f: ; b812f ld a, $61 ld [hli], a ld a, $62 - call $4164 + call Functionb8164 ld a, $64 ld [hli], a ld a, $65 ld [hli], a - call $415b + call Functionb815b ld a, $6b ld [hli], a ld a, $66 ld [hli], a - call $415b + call Functionb815b ld a, $6c ld [hli], a ld a, $67 ld [hli], a ld a, $68 - call $4164 + call Functionb8164 ld a, $6a ld [hl], a ret @@ -57966,21 +57965,21 @@ Functionb8172: ; b8172 .asm_b8194 ld [Buffer2], a push hl - call $41e2 + call Functionb81e2 ld e, a ld a, [$d1ec] sub e jr c, .asm_b81d2 cp $9 jr nc, .asm_b81d2 - call $41e2 + call Functionb81e2 ld d, a ld a, [$d1ed] sub d jr c, .asm_b81d2 cp $a jr nc, .asm_b81d2 - call $41e2 + call Functionb81e2 cp $7 jr nz, .asm_b81d2 ld a, [MagikarpLength] @@ -58756,7 +58755,7 @@ Functioncc000: ; cc000 ld l, c ld a, [$dfbb] ld [TempMonLevel], a - call $382d + call Function382d ld de, EnemyMonNick ld hl, $c541 call PlaceString @@ -58764,14 +58763,14 @@ Functioncc000: ; cc000 ld l, c ld a, [EnemyMonLevel] ld [TempMonLevel], a - call $382d + call Function382d ld hl, $c4fb ld de, $dfc0 ld bc, $0203 - call $3198 + call Function3198 ld hl, $c573 ld de, EnemyMonMaxHPHi - call $3198 + call Function3198 ld hl, $40c2 call PrintText pop af @@ -58800,7 +58799,7 @@ Functioncc0d6: ; cc0d6 push af ld a, $5 ld [rSVBK], a - call $40e4 + call Functioncc0e4 pop af ld [rSVBK], a ret @@ -58809,12 +58808,12 @@ Functioncc0d6: ; cc0d6 Functioncc0e4: ; cc0e4 ld c, $6 .asm_cc0e6 - call $41fb + call Functioncc1fb dec c jr nz, .asm_cc0e6 - call $48a4 - call $41e2 - call $41fb + call Functioncc8a4 + call Functioncc1e2 + call Functioncc1fb ld c, $1 ld a, [rKEY1] bit 7, a @@ -58826,14 +58825,14 @@ Functioncc0e4: ; cc0e4 ld a, [hl] push af ld [hl], c - call $411c + call Functioncc11c pop af ld [$ff9e], a ld a, $1 ld [hBGMapMode], a - call $41fb - call $41fb - call $41fb + call Functioncc1fb + call Functioncc1fb + call Functioncc1fb call WaitSFX ret ; cc11c @@ -58844,15 +58843,15 @@ Functioncc11c: ; cc11c jr nz, .asm_cc156 callba Function4ea44 jr c, .asm_cc141 - call $41a1 - call $4163 - call $48a4 - call $41e2 + call Functioncc1a1 + call Functioncc163 + call Functioncc8a4 + call Functioncc1e2 xor a ld [$ffcf], a ld [$ffd0], a - call $41fb - call $41bb + call Functioncc1fb + call Functioncc1bb .asm_cc141 ld a, [$cfca] @@ -58869,22 +58868,22 @@ Functioncc11c: ; cc11c .asm_cc156 call WaitSFX - call $4881 - call $4163 + call Functioncc881 + call Functioncc163 .asm_cc15f - call $48f6 + call Functioncc8f6 ret ; cc163 Functioncc163: ; cc163 - call $48d3 + call Functioncc8d3 .asm_cc166 - call $425f - call $4b48 - call $496e - call $3b0c - call $41e2 + call Functioncc25f + call Functionccb48 + call Functioncc96e + call Function3b0c + call Functioncc1e2 ld a, [FXAnimIDHi] or a jr nz, .asm_cc193 @@ -58903,31 +58902,31 @@ Functioncc163: ; cc163 jr nz, .asm_cc18c .asm_cc193 - call $41fb + call Functioncc1fb .asm_cc196 ld a, [$d40f] bit 0, a jr z, .asm_cc166 - call $423d + call Functioncc23d ret ; cc1a1 Functioncc1a1: ; cc1a1 - call $41fb + call Functioncc1fb call WaitTop - call $4207 + call Functioncc207 ld a, $1 ld [hBGMapMode], a - call $41fb - call $41fb - call $41fb + call Functioncc1fb + call Functioncc1fb + call Functioncc1fb call WaitTop ret ; cc1bb Functioncc1bb: ; cc1bb - call $41fb + call Functioncc1fb call WaitTop ld a, [rSVBK] push af @@ -58940,9 +58939,9 @@ Functioncc1bb: ; cc1bb ld [rSVBK], a ld a, $1 ld [hBGMapMode], a - call $41fb - call $41fb - call $41fb + call Functioncc1fb + call Functioncc1fb + call Functioncc1fb call WaitTop ret ; cc1e2 @@ -58955,12 +58954,12 @@ Functioncc1e2: ; cc1e2 ld b, a ld a, [$cfc7] cp b - call nz, $491a + call nz, Functioncc91a ld a, [rOBP0] ld b, a ld a, [$cfc8] cp b - call nz, $494b + call nz, Functioncc94b ret ; cc1fb @@ -59022,9 +59021,9 @@ Functioncc23d: ; cc23d ; cc25f Functioncc25f: ; cc25f - call $4267 + call Functioncc267 ret nc - call $4275 + call Functioncc275 ret ; cc267 @@ -59044,7 +59043,7 @@ Functioncc267: ; cc267 Functioncc275: ; cc275 .asm_cc275 - call $3af0 + call Function3af0 cp $ff jr nz, .asm_cc286 ld hl, $d40f @@ -59060,7 +59059,7 @@ Functioncc275: ; cc275 ret .asm_cc28e - call $4293 + call Functioncc293 jr .asm_cc275 ; cc293 @@ -59149,9 +59148,9 @@ Functioncc8d3: ; cc8d3 ld hl, $506f add hl, de add hl, de - call $3ae1 - call $48a4 - call $41fb + call Function3ae1 + call Functioncc8a4 + call Functioncc1fb ret ; cc8f6 @@ -59167,7 +59166,7 @@ Functioncc8f6: ; cc8f6 xor a ld [$ffcf], a ld [$ffd0], a - call $41fb + call Functioncc1fb ld a, $1 ld [hBGMapMode], a ret @@ -59236,8 +59235,8 @@ Functioncc96e: ; cc96e ld b, h push hl push de - call $4fbe - call $4a09 + call Functionccfbe + call Functioncca09 pop de pop hl jr c, .asm_cc9a0 @@ -59276,8 +59275,8 @@ INCBIN "baserom.gbc", $cc9c4, $cca09 - $cc9c4 Functioncca09: ; cca09 - call $4aaa - call $67d1 + call Functionccaaa + call Functionce7d1 cp $fd jp z, $4aa5 cp $fc @@ -59290,7 +59289,7 @@ Functioncca09: ; cca09 ld [hl], a pop af push bc - call $683c + call Functionce83c ld a, [$d41b] add [hl] ld [$d41b], a @@ -59375,7 +59374,7 @@ Functioncca09: ; cca09 pop bc jr .asm_ccaa5 - call $49bd + call Functioncc9bd .asm_ccaa5 and a @@ -59475,7 +59474,7 @@ INCBIN "baserom.gbc", $ccb31, $ccb48 - $ccb31 Functionccb48: ; ccb48 - ld hl, $4000 + ld hl, Functioncc000 ld a, $32 rst FarCall ret @@ -59509,7 +59508,7 @@ Functionce7d1: ; ce7d1 and a jr z, .asm_ce7e1 dec [hl] - call $6823 + call Functionce823 ld a, [hli] push af jr .asm_ce7fd @@ -59518,7 +59517,7 @@ Functionce7d1: ; ce7d1 ld hl, $000d add hl, bc inc [hl] - call $6823 + call Functionce823 ld a, [hli] cp $fe jr z, .asm_ce815 @@ -59940,7 +59939,7 @@ Functione48ac: ; e48ac push af ld a, [$ff9e] push af - call $4901 + call Functione4901 call Functiona57 ld a, [$ffa9] and $f @@ -59948,7 +59947,7 @@ Functione48ac: ; e48ac ld a, [$cf63] bit 7, a jr nz, .asm_e48e1 - call $490f + call Functione490f callba Function8cf69 call DelayFrame jp $48bc @@ -60324,7 +60323,7 @@ INCBIN "baserom.gbc", $f8ea3, $fb449 - $f8ea3 Functionfb449: ; fb449 ld de, $4200 ld hl, VTiles1 - ld bc, $3e80 + ld bc, Function3e80 ld a, [rLCDC] bit 7, a jp z, $0fa4 @@ -61682,14 +61681,14 @@ INCBIN "baserom.gbc", $fca98, $fcba8 - $fca98 Functionfcba8: ; fcba8 ld a, e ld [$cf63], a - call $4c59 + call Functionfcc59 ld b, $2 - call $4c4a + call Functionfcc4a ld a, $4 jr nz, .asm_fcc03 ld a, $0 - call $4f38 - call $1dcf + call Functionfcf38 + call Function1dcf ld a, $1 jr c, .asm_fcc03 ld b, $6 @@ -61704,23 +61703,23 @@ Functionfcba8: ; fcba8 cp [hl] ld a, $2 jr nz, .asm_fcc03 - call $4c23 + call Functionfcc23 ld a, $2 jr c, .asm_fcc03 ld b, $1 - call $4c4a + call Functionfcc4a ld hl, $4f7b call PrintText - call $4c63 - call $4c07 - call $4e1b + call Functionfcc63 + call Functionfcc07 + call Functionfce1b ld hl, $4f80 call PrintText - call $3d47 + call Function3d47 ld a, $3 .asm_fcc03 - call $4f38 + call Functionfcf38 ret ; fcc07 @@ -61797,33 +61796,33 @@ Functionfcc63: ; fcc63 ld [PlayerLightScreenCount], a ld a, [PlayerSDefLevel] ld de, PlayerAccLevel - call $4de8 - call $4df4 + call Functionfcde8 + call Functionfcdf4 ld a, [PlayerLightScreenCount] ld de, PlayerReflectCount - call $4de8 - call $4df4 + call Functionfcde8 + call Functionfcdf4 ld hl, PartyMon1OT ld bc, $000b - call $4dd7 + call Functionfcdd7 ld de, $c6f2 - call $4df4 + call Functionfcdf4 ld hl, PlayerName ld de, $c6e7 - call $4df4 + call Functionfcdf4 ld hl, PartyMon1ID ld bc, $0030 - call $4dd7 + call Functionfcdd7 ld de, PlayerScreens - call $4e0f + call Functionfce0f ld hl, PartyMon1DVs ld bc, $0030 - call $4dd7 + call Functionfcdd7 ld de, $c6fd - call $4e0f + call Functionfce0f ld hl, PartyMon1Species ld bc, $0030 - call $4dd7 + call Functionfcdd7 ld b, h ld c, l ld a, $13 @@ -61843,7 +61842,7 @@ Functionfcc63: ; fcc63 ld [$c733], a ld hl, PartyMon1Level ld bc, $0030 - call $4dd7 + call Functionfcdd7 ld a, [hl] ld [CurPartyLevel], a ld a, [PlayerLightScreenCount] @@ -61871,49 +61870,49 @@ Functionfcc63: ; fcc63 ld e, $3 call LoadTradesPointer ld de, FailedMessage - call $4df4 + call Functionfcdf4 ld hl, PartyMon1Nickname ld bc, $000b - call $4dde + call Functionfcdde ld hl, FailedMessage - call $4df4 + call Functionfcdf4 ld e, $13 call LoadTradesPointer push hl ld de, $c724 - call $4df4 + call Functionfcdf4 pop hl ld de, $c719 - call $4df4 + call Functionfcdf4 ld hl, PartyMon1OT ld bc, $000b - call $4dde + call Functionfcdde ld hl, $c724 - call $4df4 + call Functionfcdf4 ld e, $e call LoadTradesPointer ld de, $c72f - call $4e0f + call Functionfce0f ld hl, PartyMon1DVs ld bc, $0030 - call $4dde + call Functionfcdde ld hl, $c72f - call $4e0f + call Functionfce0f ld e, $11 call LoadTradesPointer ld de, $c732 - call $4e15 + call Functionfce15 ld hl, PartyMon1ID ld bc, $0030 - call $4dde + call Functionfcdde ld hl, $c731 - call $4e0f + call Functionfce0f ld e, $10 call LoadTradesPointer push hl ld hl, PartyMon1Item ld bc, $0030 - call $4dde + call Functionfcdde pop hl ld a, [hl] ld [de], a @@ -62011,15 +62010,15 @@ Functionfce1b: ; fce1b ld e, $2 call LoadTradesPointer ld a, [hl] - call $4de8 + call Functionfcde8 ld de, StringBuffer2 - call $4df4 + call Functionfcdf4 ld e, $1 call LoadTradesPointer ld a, [hl] - call $4de8 + call Functionfcde8 ld de, $d050 - call $4df4 + call Functionfcdf4 ld hl, StringBuffer1 .asm_fce3c ld a, [hli] @@ -62067,7 +62066,7 @@ Trades: ; 0xfce58 Functionfcf38: ; fcf38 push af - call $4e1b + call Functionfce1b pop af ld bc, $0008 ld hl, $4f53 @@ -62090,14 +62089,14 @@ Functionfcfec: ; fcfec ld a, [$d45c] and a ret nz - call $2d05 + call Function2d05 and a ret nz xor a ld [$dc18], a - call $5044 + call Functionfd044 ret nc - call $50c3 + call Functionfd0c3 ret nc ld b, $3f ld de, $500f @@ -62113,7 +62112,7 @@ Functionfd044: ; fd044 ld a, [$dc17] cp $a jr nc, .asm_fd065 - call $5117 + call Functionfd117 ld a, [hli] ld [$ffc3], a ld a, [hli] @@ -62149,7 +62148,7 @@ Functionfd044: ; fd044 rst FarCall jr z, .asm_fd08b jr nc, .asm_fd089 - call $5099 + call Functionfd099 jr .asm_fd074 .asm_fd089 @@ -62157,7 +62156,7 @@ Functionfd044: ; fd044 ret .asm_fd08b - call $5099 + call Functionfd099 ld a, $5 call Function2fb1 inc a @@ -62179,7 +62178,7 @@ INCBIN "baserom.gbc", $fd0a6, $fd0c3 - $fd0a6 Functionfd0c3: ; fd0c3 - call $5117 + call Functionfd117 ld de, $0006 add hl, de ld a, [hli] @@ -62200,7 +62199,7 @@ Functionfd0c3: ; fd0c3 ld a, $1 ld [$d10c], a ld hl, $d8f1 - call $2f66 + call Function2f66 ret ; fd0eb @@ -62243,7 +62242,7 @@ INCBIN "baserom.gbc", $100000, $10032e - $100000 Function10032e: ; 10032e - call $434d + call Function10034d ld e, a ret nc ld [$cd2b], a @@ -62251,7 +62250,7 @@ Function10032e: ; 10032e ; 100337 Function100337: ; 100337 - call $432e + call Function10032e ret c ld a, [$c821] bit 4, a @@ -62295,7 +62294,7 @@ Function10034d: ; 10034d .asm_10036a ld a, $0 - call $3e32 + call Function3e32 ld [$cd2c], a ld a, h ld [$cd2d], a @@ -62321,14 +62320,14 @@ Function100382: ; 100382 Function10038a: ; 10038a ld hl, $ccb4 ld a, $2e - call $3e32 + call Function3e32 ret ; 100393 Function100393: ; 100393 ld hl, $cc60 ld a, $3a - call $3e32 + call Function3e32 ret ; 10039c @@ -62373,7 +62372,7 @@ Function1003d8: ; 1003d8 ld [hl], a pop hl inc bc - call $443a + call Function10043a add hl, bc ld [hl], e inc hl @@ -62400,7 +62399,7 @@ Function100406: ; 100406 ld c, a ld b, $0 ld hl, $cc61 - call $443a + call Function10043a add hl, bc ld a, [hli] cp e @@ -62459,8 +62458,8 @@ INCBIN "baserom.gbc", $10044e, $10046a - $10044e Function10046a: ; 10046a ld hl, BGMapPalBuffer inc [hl] - call $43d8 - call $43ba + call Function1003d8 + call Function1003ba ld a, [$cd27] inc a ld [$cd27], a @@ -62468,7 +62467,7 @@ Function10046a: ; 10046a ; 10047c Function10047c: ; 10047c - call $4337 + call Function100337 ret c ret z cp $2 @@ -62492,7 +62491,7 @@ Function100493: ; 100493 jr .asm_100497 .asm_100497 - call $4337 + call Function100337 ret c ret z ld a, [$cd27] @@ -62502,10 +62501,10 @@ Function100493: ; 100493 ; 1004a4 Function1004a4: ; 1004a4 - call $4406 + call Function100406 jr c, .asm_1004b8 - call $43c9 - call $43f5 + call Function1003c9 + call Function1003f5 ld a, [$cd27] set 7, a ld [$cd27], a @@ -62517,7 +62516,7 @@ Function1004a4: ; 1004a4 ; 1004ba Function1004ba: ; 1004ba - call $438a + call Function10038a and a jr nz, .asm_1004c8 ld a, [$cd27] @@ -62532,7 +62531,7 @@ Function1004ba: ; 1004ba ; 1004ce Function1004ce: ; 1004ce - call $4337 + call Function100337 ret c ret z cp $2 @@ -62544,7 +62543,7 @@ Function1004ce: ; 1004ce ; 1004de Function1004de: ; 1004de - call $4393 + call Function100393 ld a, [$cd27] inc a ld [$cd27], a @@ -62552,7 +62551,7 @@ Function1004de: ; 1004de ; 1004e9 Function1004e9: ; 1004e9 - call $438a + call Function10038a ld a, [$cd27] inc a ld [$cd27], a @@ -62560,13 +62559,13 @@ Function1004e9: ; 1004e9 ; 1004f4 Function1004f4: ; 1004f4 - call $4337 + call Function100337 ret c ret z ld a, [$cd27] inc a ld [$cd27], a - call $439c + call Function10039c ret ; 100504 @@ -62575,7 +62574,7 @@ INCBIN "baserom.gbc", $100504, $10062d - $100504 Function10062d: ; 10062d push bc - call $464e + call Function10064e pop bc ld a, [$cd44] cp b @@ -62687,7 +62686,7 @@ Function10079c: ; 10079c ld [$cd6a], a ld d, b push de - call $47f6 + call Function1007f6 pop de jr c, .asm_1007e5 ld a, c @@ -62704,12 +62703,12 @@ Function10079c: ; 10079c ret z ld a, b ld [$cd6b], a - call $48e0 + call Function1008e0 and a ret .asm_1007e5 - call $48e0 + call Function1008e0 ld hl, $cd2a set 4, [hl] ld a, $fc @@ -62726,14 +62725,14 @@ Function1007f6: ; 1007f6 call UpdateTime ld hl, $cd74 ld de, $cd71 - call $46dc + call Function1006dc ld a, $4 call GetSRAMBank ld hl, $a802 - call $4826 + call Function100826 call CloseSRAM ld hl, $cd6e - call $4826 + call Function100826 ld a, [hHours] ld [$cd72], a ld a, [hMinutes] @@ -62783,9 +62782,9 @@ Function1008e0: ; 1008e0 ld [hBGMapMode], a ld a, $3 ld [$ff9e], a - call $4970 - call $4902 - call $4989 + call Function100970 + call Function100902 + call Function100989 call DelayFrame pop bc ld a, c @@ -62838,24 +62837,24 @@ INCBIN "baserom.gbc", $10095a, $100970 - $10095a Function100970: ; 100970 ld hl, TileMap ld de, $dc00 - call $49a5 + call Function1009a5 ld hl, AttrMap ld de, $dd68 - call $49a5 - call $49d2 - call $49ae + call Function1009a5 + call Function1009d2 + call Function1009ae ret ; 100989 Function100989: ; 100989 ld hl, $dc00 ld de, TileMap - call $49a5 - call $49ae + call Function1009a5 + call Function1009ae callba Function104061 ld hl, $dd68 ld de, AttrMap - call $49a5 + call Function1009a5 ret ; 1009a5 @@ -62931,21 +62930,21 @@ Function1009f3: ; 1009f3 ; 100a09 Function100a09: ; 100a09 - call $4a2e + call Function100a2e ld [$d431], a callba Function4000 ld a, [InLinkBattle] cp $4 jr nz, .asm_100a2a - call $4a87 - call $4da5 + call Function100a87 + call Function100da5 ld a, $f ld hl, $6e27 rst FarCall jr .asm_100a2d .asm_100a2a - call $4a53 + call Function100a53 .asm_100a2d ret @@ -63007,8 +63006,8 @@ Function100a53: ; 100a53 ; 100a87 Function100a87: ; 100a87 - call $4acf - call $4641 + call Function100acf + call Function100641 ld a, $0 ld [$cd27], a .asm_100a92 @@ -63020,13 +63019,13 @@ Function100a87: ; 100a87 ld c, $1 ld b, $3 push bc - call $462d + call Function10062d pop bc jr c, .asm_100ac7 ld b, $1 - call $479c + call Function10079c jr c, .asm_100ac7 - call $49f3 + call Function1009f3 jr c, .asm_100ac7 ld a, [$cd2b] and a @@ -63034,7 +63033,7 @@ Function100a87: ; 100a87 ld a, [$cd27] bit 7, a jr z, .asm_100a92 - call $4ae7 + call Function100ae7 jr .asm_100ace .asm_100ac7 @@ -63099,15 +63098,15 @@ Function100b12: ; 100b12 ld hl, $4f2c ld a, $9 ld de, Function1d35 - call $2d54 + call FarJpDe ld a, $9 ld [$cf94], a ld a, [$d0d2] ld [$cf88], a - call $4e72 - call $4b45 + call Function100e72 + call Function100b45 callba Function8e85 - call $4ed4 + call Function100ed4 ld a, [$cf88] ld [$d0d2], a call Function1c07 @@ -63115,13 +63114,13 @@ Function100b12: ; 100b12 ; 100b45 Function100b45: ; 100b45 - call $4b7a + call Function100b7a .asm_100b48 call Function100dd2 callba Function241ba push bc callba Function10402d - call $4e2d + call Function100e2d pop bc jr c, .asm_100b6b ld a, [$cfa8] @@ -63167,11 +63166,11 @@ Function100b9f: ; 100b9f ret z call Function100dd8 jp c, Function2ec8 - call $4e72 - call $4bc2 + call Function100e72 + call Function100bc2 push af callba Function8e85 - call $4ed4 + call Function100ed4 pop af ret ; 100bc2 @@ -63179,15 +63178,15 @@ Function100b9f: ; 100b9f Function100bc2: ; 100bc2 xor a ld [hBGMapMode], a - call $4c74 - call $4c98 + call Function100c74 + call Function100c98 callba MoveInfoBox .asm_100bd1 call Function100dd2 callba Function241ba push bc callba Function10402d - call $4e2d + call Function100e2d pop bc jr c, .asm_100c25 ld a, [$cfa8] @@ -63269,7 +63268,7 @@ Function100bc2: ; 100bc2 .asm_100c6b call FarBattleTextBox call Function30b4 - jp $4bc2 + jp Function100bc2 ; 100c74 Function100c74: ; 100c74 @@ -63305,13 +63304,13 @@ INCBIN "baserom.gbc", $100cad, $100cb5 - $100cad Function100cb5: ; 100cb5 - call $4dd8 + call Function100dd8 ret c ld hl, $cfa5 set 7, [hl] res 6, [hl] .asm_100cc0 - call $4dd2 + call Function100dd2 ld a, $9 ld hl, $41ba rst FarCall @@ -63320,7 +63319,7 @@ Function100cb5: ; 100cb5 ld a, $41 ld hl, $402d rst FarCall - call $4dfd + call Function100dfd pop bc jr c, .asm_100d17 ld a, [$cfa8] @@ -63364,7 +63363,7 @@ Function100cb5: ; 100cb5 Function100d22: ; 100d22 call Function100dd8 ret c - call $4d67 + call Function100d67 ld hl, $cfa5 set 7, [hl] res 6, [hl] @@ -63475,7 +63474,7 @@ Function100dd8: ; 100dd8 jr c, .asm_100dfb ld c, $3c ld b, $1 - call $479c + call Function10079c jr c, .asm_100dfb ld a, $40 ld hl, $432e @@ -63505,9 +63504,9 @@ Function100dfd: ; 100dfd pop bc jr c, .asm_100e2b ld b, $1 - call $479c + call Function10079c jr c, .asm_100e2b - call $49f3 + call Function1009f3 jr c, .asm_100e2b ld a, $40 ld hl, $432e @@ -63543,8 +63542,8 @@ Function100e2d: ; 100e2d ld a, [$cd2b] and a jr nz, .asm_100e61 - call $4e63 - call $4e84 + call Function100e63 + call Function100e84 xor a ret @@ -63557,7 +63556,7 @@ Function100e63: ; 100e63 ld a, e cp $2 ret nz - call $4db0 + call Function100db0 ret nc ld de, $0027 call StartSFX @@ -63590,11 +63589,11 @@ INCBIN "baserom.gbc", $100e8c, $100eae - $100e8c Function100eae: ; 100eae scf - call $4eca + call Function100eca jr .asm_100eb8 and a - call $4eca + call Function100eca .asm_100eb8 ld hl, $cd68 @@ -63617,7 +63616,7 @@ Function100eca: ; 100eca ld a, $2 ld hl, $4e8b rst FarCall - call $4ed4 + call Function100ed4 ret ; 100ed4 @@ -63635,7 +63634,7 @@ SECTION "bank41",DATA,BANK[$41] Function104000: ; 104000 ld hl, $4006 - jp $4177 + jp Function104177 ; 104006 INCBIN "baserom.gbc", $104006, $10402d - $104006 @@ -63651,7 +63650,7 @@ INCBIN "baserom.gbc", $104033, $104061 - $104033 Function104061: ; 104061 ld hl, $4067 - jp $4177 + jp Function104177 ; 104067 INCBIN "baserom.gbc", $104067, $104110 - $104067 @@ -63659,7 +63658,7 @@ INCBIN "baserom.gbc", $104067, $104110 - $104067 Function104110: ; 104110 ld hl, $4116 - jp $4177 + jp Function104177 ; 104116 INCBIN "baserom.gbc", $104116, $104177 - $104116 @@ -63679,7 +63678,7 @@ Function104177: ; 104177 ld [rSVBK], a ld a, [rVBK] push af - call $419c + call Function10419c pop af ld [rVBK], a pop af @@ -63846,7 +63845,7 @@ Function1042d6: ; 1042d6 Function104303: ; 104303 ld hl, $4309 - jp $4177 + jp Function104177 ; 104309 INCBIN "baserom.gbc", $104309, $104350 - $104309 @@ -64059,7 +64058,7 @@ INCBIN "baserom.gbc", $1048ba, $1050d9 - $1048ba Function1050d9: ; 1050d9 - call $5106 + call Function105106 ld hl, $abe2 ld de, $abe4 ld a, [hli] @@ -64631,8 +64630,8 @@ Function1061ef: ; 1061ef dec a .asm_10625b push af - call $62b2 - call $62ff + call Function1062b2 + call Function1062ff inc de inc de inc de @@ -64666,7 +64665,7 @@ Function1061ef: ; 1061ef ld [hl], a .asm_106288 - call $62ff + call Function1062ff ld a, $f6 add b ld [hli], a @@ -64851,10 +64850,10 @@ Function109847: ; 109847 ld [$cd21], a ld [CreditsTimer], a .asm_1098de - call $5908 - call $58fd + call Function109908 + call Function1098fd jr nz, .asm_1098ee - call $5926 + call Function109926 call DelayFrame jr .asm_1098de @@ -65551,8 +65550,8 @@ Function117b14: ret nz ld hl, Data117cbc call Function1d35 - call $1cbb - call $1cfd + call Function1cbb + call Function1cfd jp Function117cdd Function117b28: @@ -65563,8 +65562,8 @@ Function117b28: Function117b31: ld hl, Data117cc4 call Function1d35 - call $1cbb - call $1cfd + call Function1cbb + call Function1cfd ld hl, $c550 ld de, YesNo117ccc call PlaceString @@ -65711,8 +65710,8 @@ Function117bb6: Function117c4a: ld hl, Data117cbc call Function1d35 - call $1cbb - call $1cfd + call Function1cbb + call Function1cfd ld a, $41 ld hl, $4061 rst FarCall @@ -65930,8 +65929,8 @@ Function11c0c6: ; 11c0c6 jr z, .asm_11c133 push hl push bc - call $4156 - call $414a + call Function11c156 + call Function11c14a ld e, c pop bc pop hl @@ -67516,14 +67515,14 @@ Function1de247: ; 1de247 ld hl, $c4c7 ld a, $67 ld b, $f - call $627f + call Function1de27f ld [hl], $68 ld hl, $c607 ld [hl], $3c xor a ld b, $12 ld hl, $cdec - call $627f + call Function1de27f call Function3200 pop hl ld a, l @@ -67707,9 +67706,9 @@ Function1f8000: ; 1f8000 call AddNTimes ld bc, $000b call CopyBytes - call $4081 + call Function1f8081 pop af - ld hl, $4000 + ld hl, Function1f8000 ld bc, $0024 call AddNTimes ld bc, $0024 -- cgit v1.2.3 From c9b70ba1058846ff9e0ba0fcbe13c3ce3e498bdb Mon Sep 17 00:00:00 2001 From: yenatch Date: Tue, 30 Jul 2013 01:05:20 -0400 Subject: update predef/specials pointers --- main.asm | 67 ++++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 34 insertions(+), 33 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index aed5bce6e..6e2bf733d 100644 --- a/main.asm +++ b/main.asm @@ -19521,28 +19521,28 @@ PredefPointers: ; 856b dwb $4658, $03 dwb $57c1, $13 dwb $4699, $03 - dwb $5a6d, $03 - dwb $588c, $03 + dwb Functionda6d, BANK(Functionda6d) + dwb Functiond88c, BANK(Functiond88c) dwb $5a96, $03 dwb $5b3f, $03 - dwb $5e6e, $03 - dwb $5f8c, $03 + dwb Functionde6e, BANK(Functionde6e) + dwb Functiondf8c, BANK(Functiondf8c) dwb $46e0, $03 - dwb $6167, $03 - dwb $617b, $03 + dwb Functione167, BANK(Functione167) + dwb Functione17b, BANK(Functione17b) dwb $5639, $04 dwb $566a, $04 dwb $4eef, $0a - dwb $4b3e, $0b - dwb $5f48, $0f + dwb $4b3e, $0b ; PrintMoveDescription, BANK(PrintMoveDescription) + dwb Function3df48, BANK(Function3df48) dwb FillBox, BANK(FillBox) - dwb $5873, $0f - dwb $6036, $0f - dwb $74c1, $0f - dwb $7390, $0f - dwb $743d, $0f - dwb $747c, $0f - dwb $6487, $10 + dwb Function3d873, BANK(Function3d873) + dwb Function3e036, BANK(Function3e036) + dwb Function3f4c1, BANK(Function3f4c1) + dwb Function3f390, BANK(Function3f390) + dwb Function3f43d, BANK(Function3f43d) + dwb Function3f47c, BANK(Function3f47c) + dwb Function42487, BANK(Function42487) dwb $64e1, $10 dwb $61e6, $10 dwb $4f63, $0a @@ -19552,14 +19552,14 @@ PredefPointers: ; 856b dwb $4d2e, $14 dwb $4cdb, $14 dwb $4c50, $14 - dwb $4bdd, $14 + dwb GetGender, BANK(GetGender) dwb StatsScreenInit, BANK(StatsScreenInit) dwb $4b0a, $14 dwb $4b0e, $14 dwb $4b7b, $14 - dwb $4964, $14 - dwb $493a, $14 - dwb $4953, $14 + dwb LoadTypeName, BANK(LoadTypeName) + dwb PrintMoveType, BANK(PrintMoveType) + dwb PrintType, BANK(PrintType) dwb $490d, $14 dwb $5040, $14 dwb $7cdd, $32 @@ -19571,21 +19571,21 @@ PredefPointers: ; 856b dwb $420f, $23 dwb $4000, $23 dwb $4000, $23 - dwb $40d6, $33 + dwb Functioncc0d6, BANK(Functioncc0d6) dwb $40d5, $33 dwb $40d5, $33 dwb $51d0, $3f - dwb $6a6c, $04 + dwb PartyMonItemName, BANK(PartyMonItemName) dwb $5077, $14 dwb $516c, $14 dwb $508b, $14 - dwb $520d, $14 + dwb Function5120d, BANK(Function5120d) dwb DecompressPredef, BANK(DecompressPredef) - dwb $47d3, $0d + dwb Function0x347d3, BANK(Function0x347d3) dwb $7908, $3e dwb $7877, $3e dwb $4000, $34 - dwb $4d0a, $14 + dwb Function50d0a, BANK(Function50d0a) dwb $40a3, $34 dwb $408e, $34 dwb $4669, $34 @@ -19915,7 +19915,7 @@ Functionc01b: ; c01b ; c029 -SpecialsPointers: ; 0xc029 +SpecialsPointers: ; c029 dbw BANK(Function97c28), Function97c28 dbw $0a, $5ce8 dbw $0a, $5d11 @@ -19962,10 +19962,10 @@ SpecialsPointers: ; 0xc029 dbw $03, $4380 dbw $03, $438d dbw $03, $43db - dbw $23, $4084 + dbw BANK(Function8c084), Function8c084 dbw $23, $4092 dbw $23, $40b6 - dbw $23, $4079 + dbw BANK(Function8c079), Function8c079 dbw $23, $40ab dbw BANK(Functiond91), Functiond91 dbw BANK(WhiteBGMap), WhiteBGMap @@ -19995,9 +19995,9 @@ SpecialsPointers: ; 0xc029 dbw $01, $737e dbw $01, $73f7 dbw BANK(SpecialCheckPokerus),SpecialCheckPokerus - dbw $09, $4b25 + dbw BANK(Function24b25), Function24b25 dbw $09, $4b4e - dbw $09, $4ae8 + dbw BANK(Function24ae8), Function24ae8 dbw $13, $587a dbw $03, $4434 dbw $03, $4422 @@ -20010,14 +20010,14 @@ SpecialsPointers: ; 0xc029 dbw $0a, $64ab dbw $0a, $651f dbw $0a, $6567 - dbw $05, $4209 + dbw BANK(Function14209), Function14209 dbw $3e, $7841 dbw BANK(SpecialSnorlaxAwake),SpecialSnorlaxAwake dbw $01, $7413 dbw $01, $7418 dbw $01, $741d dbw $03, $4472 - dbw $09, $65ee + dbw BANK(ProfOaksPCBoot), ProfOaksPCBoot dbw BANK(SpecialGameboyCheck),SpecialGameboyCheck dbw BANK(SpecialTrainerHouse),SpecialTrainerHouse dbw $05, $6dc7 @@ -20047,7 +20047,7 @@ SpecialsPointers: ; 0xc029 dbw $40, $5220 dbw $40, $5225 dbw $40, $5231 - dbw $12, $525b + dbw BANK(Function4925b), Function4925b dbw $22, $6def dbw $47, $41ab dbw $5c, $4687 @@ -20074,7 +20074,7 @@ SpecialsPointers: ; 0xc029 dbw $40, $77eb dbw $40, $783c dbw $41, $60a2 - dbw $05, $4168 + dbw BANK(Function14168), Function14168 dbw $40, $77c2 dbw $41, $630f dbw $40, $7780 @@ -20085,6 +20085,7 @@ SpecialsPointers: ; 0xc029 dbw $24, $4a54 dbw $24, $4a88 dbw $03, $4224 +; c224 INCBIN "baserom.gbc", $c224, $c29d - $c224 -- cgit v1.2.3 From 814ab52b213617e063d29508f549657906b45d74 Mon Sep 17 00:00:00 2001 From: yenatch Date: Wed, 31 Jul 2013 18:03:18 -0400 Subject: cleanup and bank 9 menus --- main.asm | 986 +++++++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 829 insertions(+), 157 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index 6e2bf733d..8d13e7355 100644 --- a/main.asm +++ b/main.asm @@ -1390,7 +1390,7 @@ Functionaaf: ; aaf jr nz, .asm_ac1 call Functionac6 push de - ld de, $0008 + ld de, SFX_READ_TEXT_2 call StartSFX pop de ret @@ -5346,9 +5346,7 @@ Function1c00: ; 1c00 Function1c07: ; 0x1c07 push af - ld hl, $43e8 - ld a, $9 - rst $8 + callab Function243e8 pop af ret @@ -20910,39 +20908,36 @@ Functiond20d: ; d20d ret .data_d220 - db $3f - db $52 - db $3a - db $52 - db $28 - db $52 - db $2e - db $52 - db $21 - db $d7 - db $d8 - db $c3 - db $ff - db $52 - db $62 - db $6b - db $fa - db $6 - db $d1 - db $4f - db $cd - db $7 - db $54 - db $c3 - db $d8 - db $53 - db $62 - db $6b - db $c3 - db $74 - db $53 - db $62 - db $6b + dw .Item + dw .KeyItem + dw .Ball + dw .TMHM +; d228 + +.Ball ; d228 + ld hl, NumBalls + jp Functiond2ff +; d22e + +.TMHM ; d22e + ld h, d + ld l, e + ld a, [CurItem] + ld c, a + call GetTMHMNumber + jp Functiond3d8 +; d23a + +.KeyItem ; d23a + ld h, d + ld l, e + jp Functiond374 +; d23f + +.Item ; d23f + ld h, d + ld l, e +; d241 .asm_d241 jp Functiond2ff @@ -20961,39 +20956,36 @@ Functiond244: ; d244 ret .data_d257 - db $76 - db $52 - db $71 - db $52 - db $5f - db $52 - db $65 - db $52 - db $21 - db $d7 - db $d8 - db $c3 - db $49 - db $53 - db $62 - db $6b - db $fa - db $6 - db $d1 - db $4f - db $cd - db $7 - db $54 - db $c3 - db $fb - db $53 - db $62 - db $6b - db $c3 - db $b1 - db $53 - db $62 - db $6b + dw .Item + dw .KeyItem + dw .Ball + dw .TMHM +; d25f + +.Ball ; d25f + ld hl, NumBalls + jp Functiond349 +; d265 + +.TMHM ; d265 + ld h, d + ld l, e + ld a, [CurItem] + ld c, a + call GetTMHMNumber + jp Functiond3fb +; d271 + +.KeyItem ; d271 + ld h, d + ld l, e + jp Functiond3b1 +; d276 + +.Item ; d276 + ld h, d + ld l, e +; d278 .asm_d278 jp Functiond349 @@ -23075,7 +23067,7 @@ INCLUDE "items/item_effects.asm" Functionf780: ; f780 push de - ld de, $0005 + ld de, SFX_FULL_HEAL call WaitPlaySFX pop de ret @@ -23503,7 +23495,7 @@ Function1076f: ; 1076f and $3 ld [$cf63], a push de - ld de, $0062 + ld de, SFX_UNKNOWN_62 call StartSFX pop de scf @@ -23515,7 +23507,7 @@ Function1076f: ; 1076f and $3 ld [$cf63], a push de - ld de, $0062 + ld de, SFX_UNKNOWN_62 call StartSFX pop de scf @@ -29054,7 +29046,7 @@ INCBIN "baserom.gbc", $15f73, $15fc3 - $15f73 Function15fc3: ; 15fc3 call WaitSFX - ld de, $0022 + ld de, SFX_TRANSACTION call StartSFX ret ; 15fcd @@ -29824,7 +29816,6 @@ Function24193: ; 24193 ; 241a8 - Function241a8: ; 241a8 call $4329 ld hl, $cfa6 @@ -30277,15 +30268,17 @@ Function24426: ; 24426 ; 2445d Function2445d: ; 2445d - ld hl, $4468 + ld hl, UnknownText_0x24468 call PrintText call WaitBGMap .asm_24466 jr .asm_24466 ; 24468 -INCBIN "baserom.gbc", $24468, $2446d - $24468 - +UnknownText_0x24468: ; 24468 + text_jump UnknownText_0x1c46b7, BANK(UnknownText_0x1c46b7) + db "@" +; 2446d Function2446d: ; 2446d ld a, [$cf91] @@ -30365,9 +30358,7 @@ Function244c3: ; 0x244c3 cp $ff ret z ld de, $c5b9 - ld a, BANK(GetItemDescription) - ld hl, GetItemDescription - rst $8 + callba GetItemDescription ret ; 0x244e3 @@ -31021,17 +31012,16 @@ Function24ae8: ; 24ae8 INCBIN "baserom.gbc", $24b15, $24b25 - $24b15 - Function24b25: ; 24b25 ld hl, $c4ab ld b, $1 ld c, $7 call TextBox ld hl, $c4ac - ld de, $4b89 + ld de, CoinString call PlaceString ld hl, $c4c5 - ld de, $4b8e + ld de, String24b8e call PlaceString ld de, $d855 ld bc, $0204 @@ -31040,11 +31030,492 @@ Function24b25: ; 24b25 ret ; 24b4e -INCBIN "baserom.gbc", $24b4e, $24e99 - $24b4e +Function24b4e: ; 24b4e + ld hl, $c4a5 + ld b, $3 + ld c, $d + call TextBox + ld hl, $c4ba + ld de, MoneyString + call PlaceString + ld hl, $c4c0 + ld de, Money + ld bc, $2306 + call Function3198 + ld hl, $c4e2 + ld de, CoinString + call PlaceString + ld hl, $c4eb + ld de, $d855 + ld bc, $0204 + call Function3198 + ret +; 24b83 + +MoneyString: ; 24b83 + db "MONEY@" +CoinString: ; 24b89 + db "COIN@" +String24b8e: ; 24b8e + db "@" +; 24b8f + +Function24b8f: ; 24b8f + ld hl, Options + ld a, [hl] + push af + set 4, [hl] + ld hl, TileMap + ld b, $3 + ld c, $7 + call TextBox + ld hl, $c4b5 + ld de, $dc7a + ld bc, $0203 + call Function3198 + ld hl, $c4b8 + ld de, String24bcf + call PlaceString + ld hl, $c4dd + ld de, String24bd4 + call PlaceString + ld hl, $c4e1 + ld de, $dc79 + ld bc, $0102 + call Function3198 + pop af + ld [Options], a + ret +; 24bcf + +String24bcf: ; 24bcf + db "/500@" +String24bd4: ; 24bd4 + db "ボール こ@" +; 24bdc + +Function24bdc: ; 24bdc + ld hl, TileMap + ld b, $5 + ld c, $11 + call TextBox + ret +; 24be7 + +Function24be7: ; 24be7 + ld hl, Options + ld a, [hl] + push af + set 4, [hl] + call $4bdc + ld hl, $c505 + ld de, String24c52 + call PlaceString + ld hl, $c50c + ld de, $dc79 + ld bc, $4102 + call Function3198 + ld hl, $c4b5 + ld de, String24c4b + call PlaceString + ld a, [$df9c] + and a + ld de, String24c59 + jr z, .asm_24c1e + ld [$d265], a + call GetPokemonName + +.asm_24c1e + ld hl, $c4bc + call PlaceString + ld a, [$df9c] + and a + jr z, .asm_24c3e + ld hl, $c4dd + ld de, String24c5e + call PlaceString + ld a, [$dfbb] + ld h, b + ld l, c + inc hl + ld c, $3 + call $3842 + +.asm_24c3e + pop af + ld [Options], a + ret +; 24c43 + +String24c43: ; 24c43 + db "ボール こ@" +String24c4b: ; 24c4b + db "CAUGHT@" +String24c52: ; 24c52 + db "BALLS:@" +String24c59: ; 24c59 + db "None@" +String24c5e: ; 24c5e + db "LEVEL@" +; 24c64 + + +Function24c64: ; 24c64 + ld hl, Buffer1 + xor a + ld [hli], a + dec a + ld bc, $000a + call ByteFill + + ld hl, ApricornBalls +.asm_24c73 + ld a, [hl] + cp $ff + jr z, .asm_24c8d + push hl + ld [CurItem], a + ld hl, NumItems + call Function2f79 + pop hl + jr nc, .asm_24c89 + ld a, [hl] + call Function24c94 +.asm_24c89 + inc hl + inc hl + jr .asm_24c73 + +.asm_24c8d + ld a, [Buffer1] + and a + ret nz + scf + ret +; 24c94 + +Function24c94: ; 24c94 + push hl + ld hl, Buffer1 + inc [hl] + ld e, [hl] + ld d, 0 + add hl, de + ld [hl], a + pop hl + ret +; 24ca0 + +ApricornBalls: ; 24ca0 + db RED_APRICORN, LEVEL_BALL + db BLU_APRICORN, LURE_BALL + db YLW_APRICORN, MOON_BALL + db GRN_APRICORN, FRIEND_BALL + db WHT_APRICORN, FAST_BALL + db BLK_APRICORN, HEAVY_BALL + db PNK_APRICORN, LOVE_BALL + db $ff +; 24caf + + +MonMenuOptionStrings: ; 24caf + db "STATS@" + db "SWITCH@" + db "ITEM@" + db "CANCEL@" + db "MOVE@" + db "MAIL@" + db "ERROR!@" +; 24cd9 + +MonMenuOptions: ; 24cd9 + +; Moves + db 0, 1, CUT + db 0, 2, FLY + db 0, 3, SURF + db 0, 4, STRENGTH + db 0, 6, FLASH + db 0, 5, WATERFALL + db 0, 7, WHIRLPOOL + db 0, 8, DIG + db 0, 9, TELEPORT + db 0, 10, SOFTBOILED + db 0, 11, HEADBUTT + db 0, 12, ROCK_SMASH + db 0, 13, MILK_DRINK + db 0, 14, SWEET_SCENT + +; Options + db 1, 15, 1 ; STATS + db 1, 16, 2 ; SWITCH + db 1, 17, 3 ; ITEM + db 1, 18, 4 ; CANCEL + db 1, 19, 5 ; MOVE + db 1, 20, 6 ; MAIL + db 1, 21, 7 ; ERROR! + + db $ff +; 24d19 + +Function24d19: ; 24d19 + xor a + ld [hBGMapMode], a + call Function24dd4 + callba Function8ea4a + ld hl, MenuDataHeader_0x24d3f + call Function1d35 + call Function24d47 + call Function24d91 + + ld a, 1 + ld [hBGMapMode], a + call Function24d59 + ld [MenuSelection], a + + call Function1c07 + ret +; 24d3f + +MenuDataHeader_0x24d3f: ; 24d3f + db $40 ; tile backup + db 00, 06 ; start coords + db 17, 19 ; end coords + dw $0000 + db 1 ; default option +; 24d47 + +Function24d47: ; 24d47 + ld a, [Buffer1] + inc a + add a + ld b, a + ld a, [$cf84] + sub b + inc a + ld [$cf82], a + call Function1cbb + ret +; 24d59 + +Function24d59: ; 24d59 +.asm_24d59 + ld a, $a0 + ld [$cf91], a + ld a, [Buffer1] + ld [$cf92], a + call Function1c10 + ld hl, $cfa5 + set 6, [hl] + call Function1bc9 + ld de, SFX_READ_TEXT_2 + call StartSFX + ld a, [hJoyPressed] + bit 0, a ; A + jr nz, .asm_24d84 + bit 1, a ; B + jr nz, .asm_24d81 + jr .asm_24d59 + +.asm_24d81 + ld a, 18 ; CANCEL + ret + +.asm_24d84 + ld a, [$cfa9] + dec a + ld c, a + ld b, 0 + ld hl, Buffer2 + add hl, bc + ld a, [hl] + ret +; 24d91 + +Function24d91: ; 24d91 + call Function1cfd + ld bc, $002a + add hl, bc + ld de, Buffer2 +.asm_24d9b + ld a, [de] + inc de + cp $ff + ret z + push de + push hl + call Function24db0 + pop hl + call PlaceString + ld bc, $0028 + add hl, bc + pop de + jr .asm_24d9b +; 24db0 + +Function24db0: ; 24db0 + ld hl, MonMenuOptions + 1 + ld de, $0003 + call IsInArray + dec hl + ld a, [hli] + cp $1 + jr z, .asm_24dc8 + inc hl + ld a, [hl] + ld [$d265], a + call GetMoveName + ret + +.asm_24dc8 + inc hl + ld a, [hl] + dec a + ld hl, MonMenuOptionStrings + call GetNthString + ld d, h + ld e, l + ret +; 24dd4 + +Function24dd4: ; 24dd4 + call Function24e68 + ld a, [CurPartySpecies] + cp EGG + jr z, .asm_24e3f + ld a, [InLinkBattle] + and a + jr nz, .asm_24e03 + ld a, $2 + call GetPartyParamLocation + ld d, h + ld e, l + ld c, $4 +.asm_24ded + push bc + push de + ld a, [de] + and a + jr z, .asm_24dfd + push hl + call Function24e52 + pop hl + jr nc, .asm_24dfd + call Function24e83 + +.asm_24dfd + pop de + inc de + pop bc + dec c + jr nz, .asm_24ded + +.asm_24e03 + ld a, $f + call Function24e83 + ld a, $10 + call Function24e83 + ld a, $13 + call Function24e83 + ld a, [InLinkBattle] + and a + jr nz, .asm_24e2f + push hl + ld a, $1 + call GetPartyParamLocation + ld d, [hl] + callba Functionb9e76 + pop hl + ld a, $14 + jr c, .asm_24e2c + ld a, $11 + +.asm_24e2c + call Function24e83 + +.asm_24e2f + ld a, [Buffer1] + cp $8 + jr z, .asm_24e3b + ld a, $12 + call Function24e83 + +.asm_24e3b + call Function24e76 + ret + +.asm_24e3f + ld a, $f + call Function24e83 + ld a, $10 + call Function24e83 + ld a, $12 + call Function24e83 + call Function24e76 + ret +; 24e52 + +Function24e52: ; 24e52 + ld b, a + ld hl, MonMenuOptions +.asm_24e56 + ld a, [hli] + cp $ff + jr z, .asm_24e67 + cp $1 + jr z, .asm_24e67 + ld d, [hl] + inc hl + ld a, [hli] + cp b + jr nz, .asm_24e56 + ld a, d + scf + +.asm_24e67 + ret +; 24e68 +Function24e68: ; 24e68 + xor a + ld [Buffer1], a + ld hl, Buffer2 + ld bc, $0009 + call ByteFill + ret +; 24e76 + +Function24e76: ; 24e76 + ld a, [Buffer1] + ld e, a + ld d, $0 + ld hl, Buffer2 + add hl, de + ld [hl], $ff + ret +; 24e83 + +Function24e83: ; 24e83 + push hl + push de + push af + ld a, [Buffer1] + ld e, a + inc a + ld [Buffer1], a + ld d, $0 + ld hl, Buffer2 + add hl, de + pop af + ld [hl], a + pop de + pop hl + ret +; 24e99 Function24e99: ; 24e99 - ld hl, $4ed4 +; BattleMonMenu + ld hl, MenuDataHeader_0x24ed4 call Function1d3c xor a ld [hBGMapMode], a @@ -31060,7 +31531,7 @@ Function24e99: ; 24e99 ld hl, $cfa5 set 6, [hl] call Function1bc9 - ld de, $0008 + ld de, SFX_READ_TEXT_2 call StartSFX ld a, [hJoyPressed] bit 1, a @@ -31076,7 +31547,21 @@ Function24e99: ; 24e99 ret ; 24ed4 -INCBIN "baserom.gbc", $24ed4, $24ef2 - $24ed4 +MenuDataHeader_0x24ed4: ; 24ed4 + db $00 ; flags + db 11, 11 ; start coords + db 17, 19 ; end coords + dw MenuData2_0x24edc + db 1 ; default option +; 24edc + +MenuData2_0x24edc: ; 24edc + db $c0 ; flags + db 3 ; items + db "SWITCH@" + db "STATS@" + db "CANCEL@" +; 24ef2 Function24ef2: ; 4ef2 @@ -31093,14 +31578,19 @@ Function24ef2: ; 4ef2 Function24f0b: ; 24f0b - ld hl, $4f4e +; Safari battle menu (untranslated). + ld hl, MenuDataHeader_0x24f4e call Function1d35 - jr .asm_24f19 + jr Function24f19 +; 24f13 - ld hl, $4f89 +Function24f13: ; 24f13 +; Park battle menu. + ld hl, MenuDataHeader_0x24f89 call Function1d35 +; 24f19 -.asm_24f19 +Function24f19: ; 24f19 ld a, [$d0d2] ld [$cf88], a call Function202a @@ -31111,7 +31601,100 @@ Function24f0b: ; 24f0b ; 24f2c -INCBIN "baserom.gbc", $24f2c, $24fc9 - $24f2c +MenuDataHeader_0x24f2c: ; 24f2c + db $40 ; flags + db 12, 08 ; start coords + db 17, 19 ; end coords + dw MenuData_0x24f34 + db 1 ; default option +; 24f34 + +MenuData_0x24f34: ; 0x24f34 + db $81 ; flags + dn 2, 2 ; rows, columns + db 6 ; spacing + dbw BANK(Strings24f3d), Strings24f3d + dbw $09, $0000 +; 0x24f3d + +Strings24f3d: ; 0x24f3d + db "FIGHT@" + db $4a, "@" + db "PACK@" + db "RUN@" +; 24f4e + + +MenuDataHeader_0x24f4e: ; 24f4e + db $40 ; flags + db 12, 00 ; start coords + db 17, 19 ; end coords + dw MenuData_0x24f56 + db 1 ; default option +; 24f56 + +MenuData_0x24f56: ; 24f56 + db $81 ; flags + dn 2, 2 ; rows, columns + db 11 ; spacing + dbw BANK(Strings24f5f), Strings24f5f + dbw BANK(Function24f7c), Function24f7c +; 24f5f + +Strings24f5f: ; 24f5f + db "サファりボール× @" ; "SAFARI BALL× @" + db "エサをなげる@" ; "THROW BAIT" + db "いしをなげる@" ; "THROW ROCK" + db "にげる@" ; "RUN" +; 24f7c + +Function24f7c: ; 24f7c + ld hl, $c5b5 + ld de, $dc79 + ld bc, $8102 + call Function3198 + ret +; 24f89 + + +MenuDataHeader_0x24f89: ; 24f89 + db $40 ; flags + db 12, 02 ; start coords + db 17, 19 ; end coords + dw MenuData_0x24f91 + db 1 ; default option +; 24f91 + +MenuData_0x24f91: ; 24f91 + db $81 ; flags + dn 2, 2 ; rows, columns + db 12 ; spacing + dbw BANK(Strings24f9a), Strings24f9a + dbw BANK(Function24fb2), Function24fb2 +; 24f9a + +Strings24f9a: ; 24f9a + db "FIGHT@" + db $4a, "@" + db "PARKBALL× @" + db "RUN@" +; 24fb2 + +Function24fb2: ; 24fb2 + ld hl, $c5ed + ld de, $dc79 + ld bc, $8102 + call Function3198 + ret +; 24fbf + + +Function24fbf: ; 24fbf + ld hl, $50ed + call Function1d35 + call Function24ff9 + ret +; 24fc9 Function24fc9: ; 24fc9 @@ -31119,7 +31702,7 @@ Function24fc9: ; 24fc9 ld hl, $5486 rst FarCall ld a, d - ld [MagikarpLength], a + ld [Buffer1], a ld a, e ld [Buffer2], a ld hl, $50f5 @@ -31133,7 +31716,7 @@ Function24fe1: ; 24fe1 ld hl, $5486 rst FarCall ld a, d - ld [MagikarpLength], a + ld [Buffer1], a ld a, e ld [Buffer2], a ld hl, $50fd @@ -31259,7 +31842,76 @@ Function25072: ; 25072 ret ; 25097 -INCBIN "baserom.gbc", $25097, $265d3 - $25097 + +Function25097: ; 25097 + ret +; 25098 + +Function25098: ; 25098 + call Function250a9 + call Function250d1 + ret +; 2509f + +Function2509f: ; 2509f + call Function250a9 + call Function250c1 + call Function250d1 + ret +; 250a9 + +Function250a9: ; 250a9 + xor a + ld [hMultiplicand], a + ld a, [Buffer1] + ld [$ffb5], a + ld a, [Buffer2] + ld [$ffb6], a + ld a, [$d10c] + ld [hMultiplier], a + push hl + call Multiply + pop hl + ret +; 250c1 + +Function250c1: ; 250c1 + push hl + ld hl, hMultiplicand + ld a, [hl] + srl a + ld [hli], a + ld a, [hl] + rra + ld [hli], a + ld a, [hl] + rra + ld [hl], a + pop hl + ret +; 250d1 + +Function250d1: ; 250d1 + push hl + ld hl, $ffc3 + ld a, [hMultiplicand] + ld [hli], a + ld a, [$ffb5] + ld [hli], a + ld a, [$ffb6] + ld [hl], a + pop hl + inc hl + ld de, $ffc3 + ld bc, $2306 + call Function3198 + call WaitBGMap + ret +; 250ed + + +INCBIN "baserom.gbc", $250ed, $265d3 - $250ed + ProfOaksPC: ; 0x265d3 ld hl, OakPCText1 @@ -32480,7 +33132,7 @@ Function2c03a: ; 2c03a Function2c059: ; 2c059 ld a, [de] push af - ld de, MagikarpLength + ld de, Buffer1 ld c, $6 ld a, $34 .asm_2c062 @@ -32489,7 +33141,7 @@ Function2c059: ; 2c059 dec c jr nz, .asm_2c062 pop af - ld de, MagikarpLength + ld de, Buffer1 .asm_2c06b push af call Function2c075 @@ -32663,7 +33315,7 @@ Function2c10d: ; 2c10d ; 2c143 Function2c143: ; 2c143 - ld de, MagikarpLength + ld de, Buffer1 ld c, $6 .asm_2c148 ld a, [$cfc5] @@ -32840,7 +33492,7 @@ Function2c7fb: ; 2c7fb push de push bc push af - ld de, $0019 + ld de, SFX_WRONG call StartSFX call WaitSFX pop af @@ -33653,7 +34305,7 @@ Function38387: ; 38387 Function3839a: ; 3839a push de - ld de, $0005 + ld de, SFX_FULL_HEAL call StartSFX pop de ret @@ -34316,12 +34968,13 @@ Function3c0e5: ; 3c0e5 call Function3ceec call Function3d2e0 jr c, .asm_3c126 - ld de, $002b + + ld de, SFX_RUN call StartSFX .asm_3c126 call SetPlayerTurn - ld a, $1 + ld a, 1 ld [BattleEnded], a ret ; 3c12f @@ -36474,12 +37127,12 @@ Function3cef1: ; 3cef1 Function3cf14: ; 3cf14 call WaitSFX - ld de, $002f + ld de, SFX_KINESIS call StartSFX call Function3d432 - ld de, $002a + ld de, SFX_UNKNOWN_2A call StartSFX - ld hl, $c4a1 + hlcoord 1, 0 ld bc, $040a call ClearBox ld hl, BattleText_0x809a8 @@ -37151,7 +37804,7 @@ Function3d362: ; 3d362 ret nc call Function3d2e0 ret c - ld de, $0019 + ld de, SFX_WRONG call StartSFX call WaitSFX jr .asm_3d362 @@ -37517,10 +38170,10 @@ Function3d57a: ; 3d57a Function3d599: ; 3d599 ld b, $ff ld a, $1 - ld [MagikarpLength], a + ld [Buffer1], a ld [Buffer2], a .asm_3d5a3 - ld hl, MagikarpLength + ld hl, Buffer1 sla [hl] inc hl sla [hl] @@ -37582,7 +38235,7 @@ Function3d5d7: ; 3d5d7 ld a, [$d265] cp $b jr c, .asm_3d5e2 - ld hl, MagikarpLength + ld hl, Buffer1 set 0, [hl] ret @@ -37625,7 +38278,7 @@ Function3d618: ; 3d618 .asm_3d663 pop bc - ld hl, MagikarpLength + ld hl, Buffer1 bit 0, [hl] jr nz, .asm_3d66f inc hl @@ -37639,7 +38292,7 @@ Function3d618: ; 3d618 Function3d672: ; 3d672 .asm_3d672 - ld hl, MagikarpLength + ld hl, Buffer1 sla [hl] inc hl sla [hl] @@ -37655,7 +38308,7 @@ Function3d672: ; 3d672 jr .asm_3d681 .asm_3d68a - ld a, [MagikarpLength] + ld a, [Buffer1] and a jr z, .asm_3d69a ld b, $ff @@ -37935,7 +38588,6 @@ Function3d873: ; 3d873 ; 3d887 - Function3d887: ; 3d887 ld a, [CurPartyMon] ld hl, PartyMon1CurHP @@ -37965,32 +38617,38 @@ Function3d887: ; 3d887 ret ; 3d8b3 + Function3d8b3: ; 3d8b3 ld a, [BattleType] cp $2 - jp z, $59a2 + jp z, .asm_3d9a2 cp $6 - jp z, $59a2 + jp z, .asm_3d9a2 cp $9 - jp z, $598d + jp z, .asm_3d98d cp $b - jp z, $598d + jp z, .asm_3d98d cp $7 - jp z, $598d + jp z, .asm_3d98d cp $c - jp z, $598d + jp z, .asm_3d98d + ld a, [InLinkBattle] and a - jp nz, $59a2 + jp nz, .asm_3d9a2 + ld a, [IsInBattle] dec a - jp nz, $5992 + jp nz, .asm_3d992 + ld a, [EnemySubStatus5] bit 7, a - jp nz, $598d + jp nz, .asm_3d98d + ld a, [$c730] and a - jp nz, $598d + jp nz, .asm_3d98d + push hl push de ld a, [BattleMonItem] @@ -38002,11 +38660,12 @@ Function3d8b3: ; 3d8b3 pop de pop hl jr nz, .asm_3d916 + call SetPlayerTurn call GetItemName ld hl, BattleText_0x80b89 call FarBattleTextBox - jp $59a2 + jp .asm_3d9a2 .asm_3d916 ld a, [$d267] @@ -38074,9 +38733,11 @@ Function3d8b3: ; 3d8b3 ld hl, BattleText_0x80b3b jr .asm_3d995 +.asm_3d98d ld hl, BattleText_0x80ba0 jr .asm_3d995 +.asm_3d992 ld hl, BattleText_0x80b49 .asm_3d995 @@ -38103,12 +38764,13 @@ Function3d8b3: ; 3d8b3 call Function30b4 call Function3d2e0 jr c, .asm_3d9f5 + +; Got away safely ld a, [$d430] cp $f ld a, $2 jr z, .asm_3d9cf dec a - .asm_3d9cf ld b, a ld a, [$d0ee] @@ -38117,7 +38779,7 @@ Function3d8b3: ; 3d8b3 ld [$d0ee], a call Function3ceec push de - ld de, $002b + ld de, SFX_RUN call WaitPlaySFX pop de call WaitSFX @@ -38133,7 +38795,7 @@ Function3d8b3: ; 3d8b3 ld hl, $cd2a bit 4, [hl] jr nz, .asm_3da05 - ld hl, $5863 + ld hl, BattleText_0x81863 call FarBattleTextBox .asm_3da05 @@ -38144,7 +38806,6 @@ Function3d8b3: ; 3d8b3 ; 3da0d - Function3da0d: ; 3da0d ld a, $0 call GetPartyParamLocation @@ -38495,10 +39156,10 @@ Function3dc5b: ; 3dc5b ld a, [hli] or [hl] jr nz, .asm_3dce4 - ld de, $002f + ld de, SFX_KINESIS call StartSFX call WaitSFX - ld de, $002a + ld de, SFX_UNKNOWN_2A call StartSFX call WaitSFX call Function3d432 @@ -38595,7 +39256,7 @@ Function3dd2f: ; 3dd2f ld a, [hli] ld [Buffer2], a ld a, [hl] - ld [MagikarpLength], a + ld [Buffer1], a ld a, [de] add c ld [$d1ee], a @@ -39706,7 +40367,7 @@ Function3e4bc: ; 3e4bc .asm_3e513 ld a, $14 - ld [MagikarpLength], a + ld [Buffer1], a ld a, $20 call Predef ld b, $5 @@ -41739,7 +42400,7 @@ Function3ee3b: ; 3ee3b ld a, [CurPartyMon] cp b jr z, .asm_3f057 - ld de, $00b6 + ld de, SFX_HIT_END_OF_EXP_BAR call StartSFX call WaitSFX ld hl, BattleText_0x80c9c @@ -41989,7 +42650,7 @@ Function3f136: ; 3f136 ld bc, $000b call CopyBytes call Function3dfe - ld de, $00b6 + ld de, SFX_HIT_END_OF_EXP_BAR call StartSFX ld a, $23 ld hl, $679d @@ -42026,9 +42687,9 @@ Function3f136: ; 3f136 Function3f21b: ; 3f21b push bc call WaitSFX - ld de, $008c + ld de, SFX_EXP_BAR call StartSFX - ld c, $a + ld c, 10 call DelayFrames pop bc ret @@ -43743,7 +44404,7 @@ Function40000: ; 40000 jr .asm_40029 .asm_4003b - ld de, $0008 + ld de, SFX_READ_TEXT_2 call StartSFX call WaitSFX call ClearSprites @@ -44129,6 +44790,7 @@ Function41af7: ; 41af7 Moves: ; 0x41afb INCLUDE "battle/moves/moves.asm" + Function421d8: ; 421d8 ld hl, EvolvableFlags xor a @@ -44333,9 +44995,9 @@ Function421d8: ; 421d8 ld a, $41 ld hl, $6094 rst FarCall - ld de, $0000 + ld de, MUSIC_NONE call StartMusic - ld de, $0002 + ld de, SFX_CAUGHT_MON call StartSFX call WaitSFX ld c, $28 @@ -45653,7 +46315,7 @@ Function492b9: ; 492b9 and a jr nz, .asm_492e5 push de - ld de, $0019 + ld de, SFX_WRONG call StartSFX pop de ld a, $b @@ -47935,7 +48597,7 @@ Function4e7a6: ; 4e7a6 ld a, [$d1ed] and a ret nz - ld de, $00a4 + ld de, SFX_EVOLVED call StartSFX ld hl, $cf63 ld a, [hl] @@ -53870,23 +54532,29 @@ INCBIN "baserom.gbc", $90316, $9031d - $90316 Function9031d: ; 9031d - ld hl, $432a + ld hl, UnknownText_0x9032a call PrintText - ld de, $006b + ld de, SFX_HANG_UP call StartSFX ret ; 9032a -INCBIN "baserom.gbc", $9032a, $9032f - $9032a +UnknownText_0x9032a: ; 9032a + text_jump UnknownText_0x1c5580, BANK(UnknownText_0x1c5580) + db "@" +; 9032f Function9032f: ; 9032f - ld hl, $4336 + ld hl, UnknownText_0x90336 call PrintText ret ; 90336 -INCBIN "baserom.gbc", $90336, $9033b - $90336 +UnknownText_0x90336: ; 0x90336 + text_jump UnknownText_0x1c5588, BANK(UnknownText_0x1c5588) + db "@" +; 0x9033b Function9033b: ; 9033b @@ -53896,7 +54564,7 @@ Function9033b: ; 9033b Function9033f: ; 9033f call WaitSFX - ld de, $006a + ld de, SFX_CALL call StartSFX call Function90375 call Function1ad2 @@ -62806,14 +63474,14 @@ Function100902: ; 100902 sub c ld [StringBuffer2], a jr z, .asm_10093f - ld de, $4966 + ld de, .string_100966 ld hl, $c580 call PlaceString ld hl, $c584 ld bc, $0102 ld de, StringBuffer2 call Function3198 - ld de, $00cc + ld de, SFX_TWO_PC_BEEPS call StartSFX callba Function104061 ld c, $3c @@ -62821,10 +63489,10 @@ Function100902: ; 100902 ret .asm_10093f - ld de, $495a + ld de, .string_10095a ld hl, $c580 call PlaceString - ld de, $00cd + ld de, SFX_4_NOTE_DITTY call StartSFX callba Function104061 ld c, $78 @@ -62832,7 +63500,11 @@ Function100902: ; 100902 ret ; 10095a -INCBIN "baserom.gbc", $10095a, $100970 - $10095a +.string_10095a ; 10095a + db "たいせん しゅうりょう@" +.string_100966 ; 100966 + db "のこり ふん", $e7, "@" +; 100970 Function100970: ; 100970 @@ -63347,14 +64019,14 @@ Function100cb5: ; 100cb5 add hl, bc ld a, [hl] ld [CurPartySpecies], a - ld de, $0008 + ld de, SFX_READ_TEXT_2 call StartSFX call WaitSFX and a ret .asm_100d17 - ld de, $0008 + ld de, SFX_READ_TEXT_2 call StartSFX call WaitSFX scf @@ -63388,7 +64060,7 @@ Function100d22: ; 100d22 .asm_100d56 push af - ld de, $0008 + ld de, SFX_READ_TEXT_2 call StartSFX pop af bit 1, a @@ -63559,7 +64231,7 @@ Function100e63: ; 100e63 ret nz call Function100db0 ret nc - ld de, $0027 + ld de, SFX_ELEVATOR_END call StartSFX ret ; 100e72 -- cgit v1.2.3 From 59cb57b9545e1aaba5d45f1a627abf082edea7a9 Mon Sep 17 00:00:00 2001 From: yenatch Date: Wed, 31 Jul 2013 19:17:35 -0400 Subject: more cleanup --- main.asm | 128 ++++++++++++++++++++++++--------------------------------------- 1 file changed, 49 insertions(+), 79 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index 8d13e7355..ef26603a2 100644 --- a/main.asm +++ b/main.asm @@ -9322,10 +9322,10 @@ Function2f79: ; 2f79 push bc ld a, [hROMBank] push af - ld a, $3 + ld a, BANK(Functiond244) rst Bankswitch - call $5244 + call Functiond244 pop bc ld a, b rst Bankswitch @@ -20993,29 +20993,29 @@ Functiond244: ; d244 Functiond27b: ; d27b ld a, l - cp $92 + cp TMsHMsEnd % $100 ret nz ld a, h - cp $d8 + cp TMsHMsEnd / $100 ret ; d283 Functiond283: ; d283 ld c, $14 ld a, e - cp $92 + cp TMsHMsEnd % $100 jr nz, .asm_d28e ld a, d - cp $d8 + cp TMsHMsEnd / $100 ret z .asm_d28e ld c, $32 ld a, e - cp $f1 + cp BallsEnd % $100 jr nz, .asm_d299 ld a, d - cp $d8 + cp BallsEnd / $100 ret z .asm_d299 @@ -21029,7 +21029,7 @@ Functiond29c: ; d29c inc hl ld a, [CurItem] ld c, a - ld b, $0 + ld b, 0 .asm_d2a5 ld a, [hli] cp $ff @@ -33128,7 +33128,6 @@ Function2c03a: ; 2c03a ; 2c059 - Function2c059: ; 2c059 ld a, [de] push af @@ -33188,87 +33187,59 @@ Function2c075: ; 2c075 Function2c095: ; 2c095 ld hl, .data_2c0a9 ld de, $d004 - ld bc, $0004 + ld bc, 4 call CopyBytes ld hl, $c57a - ld de, rIE - jr .asm_2c0f1 + ld de, -1 + jr Function2c0f1 .data_2c0a9 db $73 db $77 db $6f db $76 - db $21 - db $c1 - db $40 - db $11 - db $4 - db $d0 - db $1 - db $4 - db $0 - db $cd - db $26 - db $30 - db $21 - db $7a - db $c5 - db $11 - db $ff - db $ff - db $18 - db $30 - db $73 - db $5c - db $6f - db $76 - db $21 - db $ed - db $40 - db $11 - db $4 - db $d0 - db $1 - db $4 - db $0 - db $cd - db $26 - db $30 - db $21 - db $c9 - db $c4 - db $11 - db $1 - db $0 - db $cd - db $f1 - db $40 - db $fa - db $2d - db $d2 - db $3d - db $c0 - db $fa - db $4 - db $d2 - db $3d - db $cd - db $93 - db $33 - db $c8 - db $21 - db $b5 - db $c4 - db $36 - db $5d - db $c9 +; 2c0ad + +Function2c0ad: ; 2c0ad + ld hl, .data_2c0c1 + ld de, $d004 + ld bc, 4 + call CopyBytes + ld hl, $c57a + ld de, -1 + jr Function2c0f1 + +.data_2c0c1 + db $73, $5c, $6f, $76 +; 2c0c5 + +Function2c0c5: ; 2c0c5 + ld hl, .data_2c0ed + ld de, $d004 + ld bc, 4 + call CopyBytes + ld hl, $c4c9 + ld de, 1 + call Function2c0f1 + ld a, [IsInBattle] + dec a + ret nz + ld a, [TempEnemyMonSpecies] + dec a + call CheckSeenMon + ret z + ld hl, $c4b5 + ld [hl], $5d + ret + +.data_2c0ed db $6d db $74 db $78 db $76 +; 2c0f1 -.asm_2c0f1 +Function2c0f1: ; 2c0f1 ld a, [$d004] ld [hl], a ld bc, $0014 @@ -33289,7 +33260,6 @@ Function2c095: ; 2c095 ; 2c10d - Function2c10d: ; 2c10d call Function2c165 ld hl, PartyMon1CurHP -- cgit v1.2.3 From d39dc68a8836a10e728030961de88ddcb2ffffec Mon Sep 17 00:00:00 2001 From: yenatch Date: Thu, 1 Aug 2013 05:34:10 -0400 Subject: field move asm --- main.asm | 2766 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 2694 insertions(+), 72 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index ef26603a2..2d431639c 100644 --- a/main.asm +++ b/main.asm @@ -17196,7 +17196,7 @@ Function5ce9: ; 5ce9 ; 5d23 Function5d23: ; 5d23 - call $610f + call Function610f ld a, $2 ld hl, $4029 rst FarCall @@ -17582,11 +17582,11 @@ OakSpeech: ; 0x5f99 ld [CurPartySpecies], a ld a, POKEMON_PROF ld [TrainerClass], a - call $619c + call Function619c ld b, $1c call GetSGBLayout - call $616a + call Function616a ld hl, OakText1 call PrintText @@ -17607,7 +17607,7 @@ OakSpeech: ; 0x5f99 ld b, $1c call GetSGBLayout - call $6182 + call Function6182 ld hl, OakText2 call PrintText @@ -17620,11 +17620,11 @@ OakSpeech: ; 0x5f99 ld [CurPartySpecies], a ld a, POKEMON_PROF ld [TrainerClass], a - call $619c + call Function619c ld b, $1c call GetSGBLayout - call $616a + call Function616a ld hl, OakText5 call PrintText @@ -17637,7 +17637,7 @@ OakSpeech: ; 0x5f99 ld b, $1c call GetSGBLayout - call $616a + call Function616a ld hl, OakText6 call PrintText @@ -17685,7 +17685,7 @@ NamePlayer: ; 0x6074 ld a, [$cfa9] dec a jr z, .NewName - call $60fa + call Function60fa ld a, $2 ld hl, $4c1d rst FarCall @@ -17731,7 +17731,81 @@ NamePlayer: ; 0x6074 db "KRIS@@@@@@@" ; 60e9 -INCBIN "baserom.gbc", $60e9, $617c - $60e9 +Function60e9: ; 60e9 + call Function1d35 + call Function1d81 + ld a, [$cfa9] + dec a + call Function1db8 + call Function1c17 + ret +; 60fa + +Function60fa: ; 60fa + ld a, $50 + ld bc, $000b + ld hl, PlayerName + call ByteFill + ld hl, PlayerName + ld de, StringBuffer2 + call CopyName2 + ret +; 610f + +Function610f: ; 610f + ld a, [hROMBank] + push af + ld a, $20 + 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 StartSFX + pop af + rst Bankswitch + + ld c, $8 + call DelayFrames + ld hl, $5249 + ld b, $13 + call Function61b4 + ld c, $8 + call DelayFrames + ld hl, $52d9 + ld b, $13 + call Function61b4 + ld c, $8 + call DelayFrames + ld hl, $c50a + ld b, $7 + ld c, $7 + call ClearBox + ld c, $3 + call DelayFrames + call $61cd + call Functione5f + ld c, $32 + call DelayFrames + call Function4b6 + call ClearTileMap + ret +; 616a + +Function616a: ; 616a + ld hl, IntroFadePalettes + ld b, $6 +.asm_616f + ld a, [hli] + call DmgToCgbBGPals + ld c, $a + call DelayFrames + dec b + jr nz, .asm_616f + ret +; 617c IntroFadePalettes: ; 0x617c db %01010100 @@ -17742,7 +17816,89 @@ IntroFadePalettes: ; 0x617c db %11100100 ; 6182 -INCBIN "baserom.gbc", $6182, $620b - $6182 +Function6182: ; 6182 + ld a, $77 + ld [$ffd1], a + call DelayFrame + ld a, $e4 + call DmgToCgbBGPals +.asm_618e + call DelayFrame + ld a, [$ffd1] + sub $8 + cp $ff + ret z + ld [$ffd1], a + jr .asm_618e +; 619c + +Function619c: ; 619c + ld de, VTiles2 + callba Function5120d + xor a + ld [$ffad], a + ld hl, $c4f6 + ld bc, $0707 + ld a, $13 + call Predef + ret +; 61b4 + +Function61b4: ; 61b4 + ld de, VTiles2 + ld c, $31 + ld a, $40 + call Predef + xor a + ld [$ffad], a + ld hl, $c4f6 + ld bc, $0707 + ld a, $13 + call Predef + ret +; 61cd + +Function61cd: ; 61cd + callba GetPlayerIcon + ld c, $c + ld hl, VTiles0 + call Functioneba + ld hl, Sprites + ld de, .data_61fe + ld a, [de] + inc de + ld c, a +.asm_61e4 + 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, .asm_61f8 + ld b, $1 + +.asm_61f8 + ld a, b + ld [hli], a + dec c + jr nz, .asm_61e4 + ret +; 61fe + +.data_61fe ; 61fe + db 4 + db $4c, $48, $00 + db $4c, $50, $01 + db $54, $48, $02 + db $54, $50, $03 +; 620b Function620b: ; 620b @@ -17790,8 +17946,8 @@ Function620b: ; 620b .asm_625e ld e, a - ld d, $0 - ld hl, $626a + ld d, 0 + ld hl, .data_626a add hl, de add hl, de ld a, [hli] @@ -17800,7 +17956,14 @@ Function620b: ; 620b jp [hl] ; 626a -INCBIN "baserom.gbc", $626a, $6274 - $626a +.data_626a + dw Function5ae8 + dw Function6389 + dw Function620b + dw Function620b + dw Function6392 +; 6274 + FarStartTitleScreen: ; 6274 callba StartTitleScreen @@ -17824,13 +17987,22 @@ Function627b: ; 627b ret ; 6292 -INCBIN "baserom.gbc", $6292, $62a3 - $6292 - +Function6292: ; 6292 + ld a, [$ff9b] + and $7 + ret nz + ld hl, $d15f + ld a, [hl] + dec a + ld bc, $0028 + call ByteFill + ret +; 62a3 Function62a3: ; 62a3 ld e, a - ld d, $0 - ld hl, $62af + ld d, 0 + ld hl, .data_62af add hl, de add hl, de ld a, [hli] @@ -17839,7 +18011,19 @@ Function62a3: ; 62a3 jp [hl] ; 62af -INCBIN "baserom.gbc", $62af, $62bc - $62af +.data_62af + dw TitleScreenEntrance + dw Function62f6 + dw Function6304 + dw Function6375 +; 62b7 + +Function62b7: ; 62b7 + ld hl, $cf63 + inc [hl] + ret +; 62bc + TitleScreenEntrance: ; 62bc @@ -17850,19 +18034,19 @@ TitleScreenEntrance: ; 62bc jr z, .done sub 4 ld [$ffcf], a - + ; Lay out a base (all lines scrolling together). ld e, a ld hl, $d100 ld bc, 8 * 10 ; logo height call ByteFill - + ; Alternate signage for each line's position vector. ; This is responsible for the interlaced effect. ld a, e xor $ff inc a - + ld b, 8 * 10 / 2 ; logo height / 2 ld hl, $d101 .loop @@ -17870,11 +18054,10 @@ TitleScreenEntrance: ; 62bc inc hl dec b jr nz, .loop - + callba AnimateTitleCrystal ret - - + .done ; Next scene ld hl, $cf63 @@ -17885,19 +18068,168 @@ TitleScreenEntrance: ; 62bc ; Play the title screen music. ld de, MUSIC_TITLE call StartMusic - + ld a, $88 ld [$ffd2], a ret ; 62f6 -INCBIN "baserom.gbc", $62f6, $63e2 - $62f6 + +Function62f6: ; 62f6 + ld hl, $cf63 + inc [hl] + ld hl, $cf65 + ld de, $1140 + ld [hl], e + inc hl + ld [hl], d + ret +; 6304 + +Function6304: ; 6304 + ld hl, $cf65 + ld e, [hl] + inc hl + ld d, [hl] + ld a, e + or d + jr z, .asm_6355 + dec de + ld [hl], d + dec hl + ld [hl], e + call GetJoypadPublic + ld hl, hJoyDown + ld a, [hl] + and $46 + cp $46 + jr z, .asm_634a + ld a, [$ffeb] + cp $34 + jr z, .asm_6332 + ld a, [hl] + and $86 + cp $86 + jr nz, .asm_6340 + ld a, $34 + ld [$ffeb], a + jr .asm_6340 + +.asm_6332 + bit 2, [hl] + jr nz, .asm_6340 + xor a + ld [$ffeb], a + ld a, [hl] + and $60 + cp $60 + jr z, .asm_636a + +.asm_6340 + ld a, [hl] + and $9 + jr nz, .asm_6346 + ret + +.asm_6346 + ld a, $0 + jr .asm_634c + +.asm_634a + ld a, $1 + +.asm_634c + ld [$cf64], a + ld hl, $cf63 + set 7, [hl] + ret + +.asm_6355 + ld hl, $cf63 + inc [hl] + xor a + ld [MusicFadeIDLo], a + ld [MusicFadeIDHi], a + ld hl, MusicFade + ld [hl], $8 + ld hl, $cf65 + inc [hl] + ret + +.asm_636a + ld a, $4 + ld [$cf64], a + ld hl, $cf63 + set 7, [hl] + ret +; 6375 + +Function6375: ; 6375 + ld hl, $cf65 + inc [hl] + ld a, [MusicFade] + and a + ret nz + ld a, $2 + ld [$cf64], a + ld hl, $cf63 + set 7, [hl] + ret +; 6389 + +Function6389: ; 6389 + ld a, $13 + ld hl, $554c + rst FarCall + jp Function17d +; 6392 + +Function6392: ; 6392 + ld a, $13 + ld hl, $53b1 + rst FarCall + jp Function17d +; 639b + +Function639b: ; 639b + ld a, [$cf65] + and $3 + ret nz + ld bc, $c3a4 + ld hl, $000a + add hl, bc + ld l, [hl] + ld h, 0 + add hl, hl + add hl, hl + ld de, Data63ca + add hl, de + ld a, [$cf65] + and $4 + srl a + srl a + ld e, a + ld d, 0 + add hl, de + add hl, de + ld a, [hli] + and a + ret z + ld e, a + ld d, [hl] + ld a, $1 + call Function3b2a + ret +; 63ca + +Data63ca: ; 63ca +INCBIN "baserom.gbc", $63ca, $63e2 - $63ca Function63e2: ; 63e2 call ClearTileMap call Functione5f - ld de, Function4000 + ld de, $4000 ld hl, $9600 ld bc, $391d call Functioneba @@ -17906,8 +18238,16 @@ Function63e2: ; 63e2 jp PlaceString ; 63fd -INCBIN "baserom.gbc", $63fd, $642e - $63fd +; 63fd + db $60, $61, $62, $63, $64, $65, $66 + db $67, $68, $69, $6a, $6b, $6c, $4e + db $60, $61, $62, $63, $64, $65, $66, $6d + db $6e, $6f, $70, $71, $72, $7a, $7b, $7c, $4e + + db $60, $61, $62, $63, $64, $65, $66, $73, $74 + db $75, $76, $77, $78, $79, $7a, $7b, $7c, "@" +; 642e Function642e: ; 642e ld a, $5 @@ -19630,7 +19970,52 @@ Function8ad1: ; 8ad1 ret ; 8ade -INCBIN "baserom.gbc", $8ade, $8d55 - $8ade +INCBIN "baserom.gbc", $8ade, $8cb4 - $8ade + +Function8cb4: ; 8cb4 + ld l, e + ld h, $0 + add hl, hl + add hl, hl + add hl, hl + ld de, $4d05 + add hl, de + call Function8d55 + jr nz, .asm_8cf0 + push hl + ld hl, $5ce6 + ld de, $cda9 + ld bc, $0010 + call CopyBytes + pop hl + inc hl + inc hl + ld a, [hli] + ld [$cdac], a + ld a, [hli] + ld [$cdad], a + ld a, [hli] + ld [$cdae], a + ld a, [hli] + ld [$cdaf], a + ld hl, $cda9 + call $5809 + ld hl, $5a86 + call $5809 + ret + +.asm_8cf0 + ld de, $d000 + ld bc, $0008 + ld a, $5 + call Function306b + call Function96a4 + call Function9699 + call $56b3 + ret +; 8d05 + +INCBIN "baserom.gbc", $8d05, $8d55 - $8d05 Function8d55: ; 8d55 @@ -19726,7 +20111,51 @@ Function96a4: ; 96a4 ret ; 96b3 -INCBIN "baserom.gbc", $96b3, $971a - $96b3 +Function96b3: ; 96b3 + ld a, [rLCDC] + bit 7, a + jr z, .asm_96d0 + ld a, [hBGMapMode] + push af + ld a, $2 + ld [hBGMapMode], a + call DelayFrame + call DelayFrame + call DelayFrame + call DelayFrame + pop af + ld [hBGMapMode], a + ret + +.asm_96d0 + ld hl, AttrMap + ld de, VBGMap0 + ld b, $12 + ld a, $1 + ld [rVBK], a +.asm_96dc + ld c, $14 +.asm_96de + ld a, [hli] + ld [de], a + inc de + dec c + jr nz, .asm_96de + ld a, $c + add e + jr nc, .asm_96ea + inc d + +.asm_96ea + ld e, a + dec b + jr nz, .asm_96dc + ld a, $0 + ld [rVBK], a + ret +; 96f3 + +INCBIN "baserom.gbc", $96f3, $971a - $96f3 Function971a: ; 971a @@ -19738,7 +20167,62 @@ Function971a: ; 971a ret ; 9729 -INCBIN "baserom.gbc", $9729, $9890 - $9729 +INCBIN "baserom.gbc", $9729, $9809 - $9729 + +Function9809: ; 9809 + ld a, [$cfbe] + push af + set 7, a + ld [$cfbe], a + call $581a + pop af + ld [$cfbe], a + ret +; 981a + +Function981a: ; 981a + ld a, [hl] + and $7 + ret z + ld b, a +.asm_981f + push bc + xor a + ld [rJOYP], a + ld a, $30 + ld [rJOYP], a + ld b, $10 +.asm_9829 + ld e, $8 + ld a, [hli] + ld d, a +.asm_982d + bit 0, d + ld a, $10 + jr nz, .asm_9835 + ld a, $20 + +.asm_9835 + ld [rJOYP], a + ld a, $30 + ld [rJOYP], a + rr d + dec e + jr nz, .asm_982d + dec b + jr nz, .asm_9829 + ld a, $20 + ld [rJOYP], a + ld a, $30 + ld [rJOYP], a + call $5a7a + pop bc + dec b + jr nz, .asm_981f + ret +; 9853 + +INCBIN "baserom.gbc", $9853, $9890 - $9853 Function9890: ; 9890 @@ -19843,7 +20327,20 @@ DrawDefaultTiles: ; 0x9a64 ret ; 0x9a7a -INCBIN "baserom.gbc", $9a7a, $a51e - $9a7a +Function9a7a: ; 9a7a + ld de, $1b58 +.asm_9a7d + nop + nop + nop + dec de + ld a, d + or e + jr nz, .asm_9a7d + ret +; 9a86 + +INCBIN "baserom.gbc", $9a86, $a51e - $9a86 SGBBorder: INCBIN "gfx/misc/sgb_border.2bpp" @@ -20558,7 +21055,84 @@ CheckPartyMove: ; c742 ret ; c779 -INCBIN "baserom.gbc", $c779, $c986 - $c779 +Functionc779: ; c779 + ld hl, $4780 + call Function1d67 + ret +; c780 + +INCBIN "baserom.gbc", $c780, $c785 - $c780 + +Functionc785: ; c785 + call Functionc6ea +.asm_c788 + ld hl, $4796 + call Functionc6f5 + jr nc, .asm_c788 + and $7f + ld [$d0ec], a + ret +; c796 + +INCBIN "baserom.gbc", $c796, $c8ac - $c796 + +Functionc8ac: ; c8ac + call Functionc8b5 + and $7f + ld [$d0ec], a + ret +; c8b5 + +Functionc8b5: ; c8b5 + ld de, $001b + ld a, $3 + ld hl, $4731 + rst FarCall + jr c, .asm_c8dd + push hl + ld a, $22 + ld hl, $6e30 + rst FarCall + pop hl + jr c, .asm_c8d1 + ld a, [$d847] + cp $ff + jr nz, .asm_c8d7 + +.asm_c8d1 + call $48e0 + ld a, $81 + ret + +.asm_c8d7 + call $4779 + ld a, $80 + ret + +.asm_c8dd + ld a, $80 + ret +; c8e0 + +Functionc8e0: ; c8e0 + ld hl, $48e6 + jp Function31cd +; c8e6 + +INCBIN "baserom.gbc", $c8e6, $c909 - $c8e6 + +Functionc909: ; c909 + call Functionc6ea +.asm_c90c + ld hl, $491a + call Functionc6f5 + jr nc, .asm_c90c + and $7f + ld [$d0ec], a + ret +; c91a + +INCBIN "baserom.gbc", $c91a, $c986 - $c91a UsedSurfScript: ; c986 @@ -20717,7 +21291,125 @@ AskSurfText: ; ca36 ; ca3b -INCBIN "baserom.gbc", $ca3b, $cb95 - $ca3b +Functionca3b: ; ca3b + call Functionc6ea +.asm_ca3e + ld hl, .data_ca4c + call Functionc6f5 + jr nc, .asm_ca3e + and $7f + ld [$d0ec], a + ret +; ca4c + +.data_ca4c + dw Functionca52 + dw Functionca94 + dw Functionca9d +; ca52 + + +Functionca52: ; ca52 +; Fly + ld de, $0020 ; storm badge + call CheckBadge + jr c, .asm_ca85 + call GetMapPermission + call CheckOutdoorMap + jr z, .asm_ca64 + jr .asm_ca88 + +.asm_ca64 + xor a + ld [$ffde], a + call Function1d6e + call ClearSprites + callba Function91af3 + ld a, e + cp $ff + jr z, .asm_ca8b + cp $1c + jr nc, .asm_ca8b + ld [$d001], a + call Function1c17 + ld a, $1 + ret + +.asm_ca85 + ld a, $82 + ret + +.asm_ca88 + ld a, $2 + ret + +.asm_ca8b + call Function1c17 + call WaitBGMap + ld a, $80 + ret +; ca94 + +Functionca94: ; ca94 + ld hl, Datacaa3 + call Function31cd + ld a, $81 + ret +; ca9d + +Functionca9d: ; ca9d + call Functionc779 + ld a, $82 + ret +; caa3 + +Datacaa3: ; caa3 +INCBIN "baserom.gbc", $caa3, $cade - $caa3 + +Functioncade: ; cade + call Functioncae7 + and $7f + ld [$d0ec], a + ret +; cae7 + +Functioncae7: ; cae7 + ld de, $0022 + ld a, $3 + ld hl, $4731 + rst FarCall + ld a, $80 + ret c + call $4b07 + jr c, .asm_cb01 + ld hl, $4b1c + call Function31cd + ld a, $81 + ret + +.asm_cb01 + call $4779 + ld a, $80 + ret +; cb07 + +Functioncb07: ; cb07 + ld a, [PlayerDirection] + and $c + cp $4 + jr nz, .asm_cb1a + ld a, [TileUp] + call CheckWaterfallTile + jr nz, .asm_cb1a + xor a + ret + +.asm_cb1a + scf + ret +; cb1c + +INCBIN "baserom.gbc", $cb1c, $cb95 - $cb1c Functioncb95: ; cb95 @@ -20739,7 +21431,143 @@ Functioncb95: ; cb95 ret ; cbb2 -INCBIN "baserom.gbc", $cbb2, $cf8e - $cbb2 +INCBIN "baserom.gbc", $cbb2, $cc61 - $cbb2 + +Functioncc61: ; cc61 + call Functionc6ea +.asm_cc64 + ld hl, $4c72 + call Functionc6f5 + jr nc, .asm_cc64 + and $7f + ld [$d0ec], a + ret +; cc72 + +INCBIN "baserom.gbc", $cc72, $cce5 - $cc72 + +Functioncce5: ; cce5 + call $4cee + and $7f + ld [$d0ec], a + ret +; ccee + +Functionccee: ; ccee + ld de, $001d + call CheckBadge + jr c, .asm_cd06 + jr .asm_cd09 + + ld hl, .data_cd01 + call Function1d67 + ld a, $80 + ret + +.data_cd01 + db $16 + db $51 + db $47 + db $70 + db $50 + +.asm_cd06 + ld a, $80 + ret + +.asm_cd09 + ld hl, $4d29 + call Function31cd + ld a, $81 + ret +; cd12 + +INCBIN "baserom.gbc", $cd12, $cd9d - $cd12 + +Functioncd9d: ; cd9d + call Functionc6ea +.asm_cda0 + ld hl, $4dae + call Functionc6f5 + jr nc, .asm_cda0 + and $7f + ld [$d0ec], a + ret +; cdae + +INCBIN "baserom.gbc", $cdae, $ce7d - $cdae + +Functionce7d: ; ce7d + call $4e86 + and $7f + ld [$d0ec], a + ret +; ce86 + +Functionce86: ; ce86 + call GetFacingTileCoord + call Function189a + jr nz, .asm_ce97 + ld hl, $4ea7 + call Function31cd + ld a, $81 + ret + +.asm_ce97 + call $4779 + ld a, $80 + ret +; ce9d + +INCBIN "baserom.gbc", $ce9d, $ceeb - $ce9d + +Functionceeb: ; ceeb + call $4ef4 + and $7f + ld [$d0ec], a + ret +; cef4 + +Functioncef4: ; cef4 + call $4f0d + jr c, .asm_cf07 + ld a, d + cp $18 + jr nz, .asm_cf07 + ld hl, $4f2e + call Function31cd + ld a, $81 + ret + +.asm_cf07 + call $4779 + ld a, $80 + ret +; cf0d + +Functioncf0d: ; cf0d + callba CheckFacingObject + jr nc, .asm_cf2c + ld a, [hConnectedMapWidth] + call Function1ae5 + ld hl, $0001 + add hl, bc + ld a, [hl] + ld [$ffe0], a + call GetMapObject + ld hl, $0004 + add hl, bc + ld a, [hl] + ld d, a + and a + ret + +.asm_cf2c + scf + ret +; cf2e + +INCBIN "baserom.gbc", $cf2e, $cf8e - $cf2e Functioncf8e: ; cf8e @@ -22819,7 +23647,21 @@ ClearPCItemScreen: ; e58b ret ; 0xe5bb -INCBIN "baserom.gbc", $e5bb, $e6ce - $e5bb +Functione5bb: ; e5bb + ld a, [CurPartyMon] + ld hl, $ad26 + ld bc, $0020 + call AddNTimes + ld de, TempMonSpecies + ld bc, $0020 + ld a, $1 + call GetSRAMBank + call CopyBytes + call CloseSRAM + ret +; e5d9 + +INCBIN "baserom.gbc", $e5d9, $e6ce - $e5d9 Functione6ce: ; e6ce @@ -24780,26 +25622,26 @@ PokemonActionSubmenu: ; 12a88 ret .Actions - dbw $01, $6e1b - dbw $02, $6e30 - dbw $03, $6ebd - dbw $04, $6e6a - dbw $06, $6e55 - dbw $07, $6e7f - dbw $08, $6ed1 - dbw $09, $6ea9 - dbw $0a, $6ee6 - dbw $0d, $6ee6 - dbw $0b, $6f26 - dbw $05, $6e94 - dbw $0c, $6f3b - dbw $0e, $6f50 - dbw $0f, OpenPartyStats - dbw $10, SwitchPartyMons - dbw $11, GiveTakePartyMonItem - dbw $12, CancelPokemonAction - dbw $13, $6fba ; move - dbw $14, $6d45 ; mail + dbw 1, Function12e1b ; Cut + dbw 2, Function12e30 ; Fly + dbw 3, Function12ebd ; Surf + dbw 4, Function12e6a ; Strength + dbw 6, Function12e55 ; Flash + dbw 7, Function12e7f ; Whirlpool + dbw 8, Function12ed1 ; Dig + dbw 9, Function12ea9 ; Teleport + dbw 10, Function12ee6 ; Softboiled + dbw 13, Function12ee6 ; MilkDrink + dbw 11, Function12f26 ; Headbutt + dbw 5, Function12e94 ; Flash + dbw 12, Function12f3b ; RockSmash + dbw 14, Function12f50 ; SweetScent + dbw 15, OpenPartyStats + dbw 16, SwitchPartyMons + dbw 17, GiveTakePartyMonItem + dbw 18, CancelPokemonAction + dbw 19, Function12fba ; move + dbw 20, Function12d45 ; mail ; 12aec @@ -25134,7 +25976,92 @@ GetPartyItemLocation: ; 12cd7 ; 12cdf -INCBIN "baserom.gbc", $12cdf, $12e00 - $12cdf +Function12cdf: ; 12cdf + ld a, $1 + ld [$d10c], a + ld hl, NumItems + jp Function2f66 +; 12cea + +INCBIN "baserom.gbc", $12cea, $12cf5 - $12cea + +Function12cf5: ; 12cf5 + call Function1d4f + call Function1dcf + jp Function1c07 +; 12cfe + +INCBIN "baserom.gbc", $12cfe, $12d45 - $12cfe + +Function12d45: ; 12d45 + ld a, [InLinkBattle] + cp $1 + jr z, .asm_12d6d + cp $2 + jr z, .asm_12d6d + ld hl, $6dc9 + call Function1d35 + call Function1d81 + call Function1c07 + jp c, $6dc6 + ld a, [$cfa9] + cp $1 + jr z, .asm_12d6d + cp $2 + jr z, .asm_12d76 + jp $6dc6 + +.asm_12d6d + ld a, $2e + ld hl, $5229 + rst FarCall + ld a, $0 + ret + +.asm_12d76 + ld hl, $6df1 + call $6cf5 + jr c, .asm_12d9a + ld a, [CurPartyMon] + ld b, a + callba Function4456e + jr c, .asm_12d92 + ld hl, $6dfb + call Function1d67 + jr .asm_12dc6 + +.asm_12d92 + ld hl, $6df6 + call Function1d67 + jr .asm_12dc6 + +.asm_12d9a + ld hl, $6de2 + call $6cf5 + jr c, .asm_12dc6 + call GetPartyItemLocation + ld a, [hl] + ld [CurItem], a + call $6cdf + jr nc, .asm_12dbe + call GetPartyItemLocation + ld [hl], $0 + call $389c + ld hl, $6de7 + call Function1d67 + jr .asm_12dc6 + +.asm_12dbe + ld hl, $6dec + call Function1d67 + jr .asm_12dc6 + +.asm_12dc6 + ld a, $3 + ret +; 12dc9 + +INCBIN "baserom.gbc", $12dc9, $12e00 - $12dc9 OpenPartyStats: ; 12e00 @@ -25153,7 +26080,692 @@ OpenPartyStats: ; 12e00 ; 12e1b -INCBIN "baserom.gbc", $12e1b, $13327 - $12e1b +Function12e1b: ; 12e1b + ld a, $3 + ld hl, $4785 + rst FarCall + ld a, [$d0ec] + cp $1 + jr nz, .asm_12e2d + ld b, $4 + ld a, $2 + ret + +.asm_12e2d + ld a, $3 + ret +; 12e30 + + +Function12e30: ; 12e30 + callba Functionca3b + ld a, [$d0ec] + cp $2 + jr z, .asm_12e4c + cp $0 + jr z, .asm_12e4f + ld a, $41 + ld hl, $60b5 + rst FarCall + ld b, $4 + ld a, $2 + ret + +.asm_12e4c + ld a, $3 + ret + +.asm_12e4f + ld a, $0 + ret +; 12e52 + +INCBIN "baserom.gbc", $12e52, $12e55 - $12e52 + +Function12e55: ; 12e55 + ld a, $3 + ld hl, $48ac + rst FarCall + ld a, [$d0ec] + cp $1 + jr nz, .asm_12e67 + ld b, $4 + ld a, $2 + ret + +.asm_12e67 + ld a, $3 + ret +; 12e6a + +Function12e6a: ; 12e6a + ld a, $3 + ld hl, $4ce5 + rst FarCall + ld a, [$d0ec] + cp $1 + jr nz, .asm_12e7c + ld b, $4 + ld a, $2 + ret + +.asm_12e7c + ld a, $3 + ret +; 12e7f + +Function12e7f: ; 12e7f + ld a, $3 + ld hl, $4d9d + rst FarCall + ld a, [$d0ec] + cp $1 + jr nz, .asm_12e91 + ld b, $4 + ld a, $2 + ret + +.asm_12e91 + ld a, $3 + ret +; 12e94 + +Function12e94: ; 12e94 + ld a, $3 + ld hl, $4ade + rst FarCall + ld a, [$d0ec] + cp $1 + jr nz, .asm_12ea6 + ld b, $4 + ld a, $2 + ret + +.asm_12ea6 + ld a, $3 + ret +; 12ea9 + +Function12ea9: ; 12ea9 + ld a, $3 + ld hl, $4c61 + rst FarCall + ld a, [$d0ec] + and a + jr z, .asm_12eba + ld b, $4 + ld a, $2 + ret + +.asm_12eba + ld a, $3 + ret +; 12ebd + +Function12ebd: ; 12ebd + ld a, $3 + ld hl, $4909 + rst FarCall + ld a, [$d0ec] + and a + jr z, .asm_12ece + ld b, $4 + ld a, $2 + ret + +.asm_12ece + ld a, $3 + ret +; 12ed1 + +Function12ed1: ; 12ed1 + ld a, $3 + ld hl, $4b9c + rst FarCall + ld a, [$d0ec] + cp $1 + jr nz, .asm_12ee3 + ld b, $4 + ld a, $2 + ret + +.asm_12ee3 + ld a, $3 + ret +; 12ee6 + +Function12ee6: ; 12ee6 + call $6f05 + jr nc, .asm_12ef3 + ld a, $3 + ld hl, $73df + rst FarCall + jr .asm_12ef9 + +.asm_12ef3 + ld hl, $6f00 + call PrintText + +.asm_12ef9 + xor a + ld [PartyMenuActionText], a + ld a, $3 + ret +; 12f00 + +INCBIN "baserom.gbc", $12f00, $12f05 - $12f00 + +Function12f05: ; 12f05 + ld a, $24 + call GetPartyParamLocation + ld a, [hli] + ld [hProduct], a + ld a, [hl] + ld [hMultiplicand], a + ld a, $5 + ld [hMultiplier], a + ld b, $2 + call Divide + ld a, $23 + call GetPartyParamLocation + ld a, [$ffb6] + sub [hl] + dec hl + ld a, [$ffb5] + sbc [hl] + ret +; 12f26 + +Function12f26: ; 12f26 + ld a, $3 + ld hl, $4e7d + rst FarCall + ld a, [$d0ec] + cp $1 + jr nz, .asm_12f38 + ld b, $4 + ld a, $2 + ret + +.asm_12f38 + ld a, $3 + ret +; 12f3b + +Function12f3b: ; 12f3b + ld a, $3 + ld hl, $4eeb + rst FarCall + ld a, [$d0ec] + cp $1 + jr nz, .asm_12f4d + ld b, $4 + ld a, $2 + ret + +.asm_12f4d + ld a, $3 + ret +; 12f50 + +Function12f50: ; 12f50 + ld a, $14 + ld hl, $46bc + rst FarCall + ld b, $4 + ld a, $2 + ret +; 12f5b + +INCBIN "baserom.gbc", $12f5b, $12fba - $12f5b + +Function12fba: ; 12fba + ld a, [CurPartySpecies] + cp $fd + jr z, .asm_12fd2 + ld hl, Options + ld a, [hl] + push af + set 4, [hl] + call $6fd5 + pop af + ld [Options], a + call WhiteBGMap + +.asm_12fd2 + ld a, $0 + ret +; 12fd5 + +Function12fd5: ; 12fd5 + ld a, [CurPartyMon] + inc a + ld [$d0d8], a + call $7172 + call $72d3 + ld de, $7163 + call Function1bb1 + call $71ef + ld hl, $cfa5 + set 6, [hl] + jr .asm_13009 + + call Function1bd3 + bit 1, a + jp nz, $7038 + bit 0, a + jp nz, $70c6 + bit 4, a + jp nz, $705b + bit 5, a + jp nz, $7075 + +.asm_13009 + call $7235 + ld a, [$d0e3] + and a + jr nz, .asm_13018 + call $7256 + jp $6ff2 + +.asm_13018 + ld a, $7f + ld hl, $c57d + ld bc, $0005 + call ByteFill + ld hl, $c591 + ld bc, $0512 + call ClearBox + ld hl, $c591 + ld de, $716b + call PlaceString + jp $6ff2 +; 13038 + +Function13038: ; 13038 + call PlayClickSFX + call WaitSFX + ld a, [$d0e3] + and a + jp z, $7154 + ld a, [$d0e3] + ld [$cfa9], a + xor a + ld [$d0e3], a + ld hl, $c4c9 + ld bc, $0812 + call ClearBox + jp $6fe8 +; 1305b + +Function1305b: ; 1305b + ld a, [$d0e3] + and a + jp nz, $6ff2 + ld a, [CurPartyMon] + ld b, a + push bc + call $708f + pop bc + ld a, [CurPartyMon] + cp b + jp z, $6ff2 + jp $6fd5 +; 13075 + +Function13075: ; 13075 + ld a, [$d0e3] + and a + jp nz, $6ff2 + ld a, [CurPartyMon] + ld b, a + push bc + call $70a7 + pop bc + ld a, [CurPartyMon] + cp b + jp z, $6ff2 + jp $6fd5 +; 1308f + +Function1308f: ; 1308f +.asm_1308f + ld a, [CurPartyMon] + inc a + ld [CurPartyMon], a + ld c, a + ld b, $0 + ld hl, PartySpecies + add hl, bc + ld a, [hl] + cp $ff + jr z, .asm_130a7 + cp $fd + ret nz + jr .asm_1308f + +.asm_130a7 + ld a, [CurPartyMon] + and a + ret z +.asm_130ac + ld a, [CurPartyMon] + dec a + ld [CurPartyMon], a + ld c, a + ld b, $0 + ld hl, PartySpecies + add hl, bc + ld a, [hl] + cp $fd + ret nz + ld a, [CurPartyMon] + and a + jr z, .asm_1308f + jr .asm_130ac +; 130c6 + +Function130c6: ; 130c6 + call PlayClickSFX + call WaitSFX + ld a, [$d0e3] + and a + jr nz, .asm_130de + ld a, [$cfa9] + ld [$d0e3], a + call Function1bee + jp $7018 + +.asm_130de + ld hl, PartyMon1Move1 + ld bc, $0030 + ld a, [CurPartyMon] + call AddNTimes + push hl + call $713a + pop hl + ld bc, $0015 + add hl, bc + call $713a + ld a, [IsInBattle] + jr z, .asm_13113 + ld hl, BattleMonMove1 + ld bc, $0020 + ld a, [CurPartyMon] + call AddNTimes + push hl + call $713a + pop hl + ld bc, $0006 + add hl, bc + call $713a + +.asm_13113 + ld de, $0020 + call StartSFX + call WaitSFX + ld de, $0020 + call StartSFX + call WaitSFX + ld hl, $c4c9 + ld bc, $0812 + call ClearBox + ld hl, $c572 + ld bc, $0109 + call ClearBox + jp $6fe8 +; 1313a + +Function1313a: ; 1313a + push hl + ld a, [$cfa9] + dec a + ld c, a + ld b, $0 + add hl, bc + ld d, h + ld e, l + pop hl + ld a, [$d0e3] + dec a + ld c, a + ld b, $0 + add hl, bc + ld a, [de] + ld b, [hl] + ld [hl], a + ld a, b + ld [de], a + ret +; 13154 + +Function13154: ; 13154 + xor a + ld [$d0e3], a + ld hl, $cfa5 + res 6, [hl] + call ClearSprites + jp ClearTileMap +; 13163 + +INCBIN "baserom.gbc", $13163, $13172 - $13163 + +Function13172: ; 13172 + call WhiteBGMap + call ClearTileMap + call ClearSprites + xor a + ld [hBGMapMode], a + ld a, $3e + ld hl, $7571 + rst FarCall + callba Function8e814 + ld a, [CurPartyMon] + ld e, a + ld d, $0 + ld hl, PartySpecies + add hl, de + ld a, [hl] + ld [$d265], a + ld e, $2 + ld a, $23 + ld hl, $683f + rst FarCall + ld hl, $c4b4 + ld b, $9 + ld c, $12 + call TextBox + ld hl, $c57c + ld b, $5 + ld c, $12 + call TextBox + ld hl, $c4a2 + ld bc, $0203 + call ClearBox + xor a + ld [MonType], a + ld hl, PartyMon1Nickname + ld a, [CurPartyMon] + call GetNick + ld hl, $c4b9 + call PlaceString + push bc + ld a, $14 + ld hl, $484a + rst FarCall + pop hl + call Function382d + ld hl, PlayerHPPal + call SetHPPal + ld b, $e + call GetSGBLayout + ld hl, $c4b0 + ld bc, $0103 + jp ClearBox +; 131ef + +Function131ef: ; 131ef + xor a + ld [hBGMapMode], a + ld [$d0e3], a + ld [MonType], a + ld a, $1f + call Predef + ld hl, TempMonMove1 + ld de, $d25e + ld bc, $0004 + call CopyBytes + ld a, $28 + ld [Buffer1], a + ld hl, $c4de + ld a, $20 + call Predef + ld hl, $c4fa + ld a, $23 + call Predef + call WaitBGMap + call Function32f9 + ld a, [$d0eb] + inc a + ld [$cfa3], a + ld hl, $c57c + ld b, $5 + ld c, $12 + jp TextBox +; 13235 + +Function13235: ; 13235 + ld hl, PartyMon1Move1 + ld bc, $0030 + ld a, [CurPartyMon] + call AddNTimes + ld a, [$cfa9] + dec a + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + ld [CurSpecies], a + ld hl, $c591 + ld bc, $0512 + jp ClearBox +; 13256 + +Function13256: ; 13256 + xor a + ld [hBGMapMode], a + ld hl, $c568 + ld de, $72ba + call PlaceString + ld hl, $c57c + ld de, $72c2 + call PlaceString + ld hl, $c59c + ld de, $72ca + call PlaceString + ld a, [CurSpecies] + ld b, a + ld hl, $c592 + ld a, $2a + call Predef + ld a, [CurSpecies] + dec a + ld hl, $5afd + ld bc, $0007 + call AddNTimes + ld a, $10 + call GetFarByte + ld hl, $c5a0 + cp $2 + jr c, .asm_132a7 + ld [$d265], a + ld de, $d265 + ld bc, $0103 + call Function3198 + jr .asm_132ad + +.asm_132a7 + ld de, $72cf + call PlaceString + +.asm_132ad + ld hl, $c5b9 + ld a, $11 + call Predef + ld a, $1 + ld [hBGMapMode], a + ret +; 132ba + +INCBIN "baserom.gbc", $132ba, $132d3 - $132ba + +Function132d3: ; 132d3 + call $72da + call $72fe + ret +; 132da + +Function132da: ; 132da + ld a, [CurPartyMon] + and a + ret z + ld c, a + ld e, a + ld d, $0 + ld hl, PartyCount + add hl, de +.asm_132e7 + ld a, [hl] + and a + jr z, .asm_132f3 + cp $fd + jr z, .asm_132f3 + cp $fc + jr c, .asm_132f8 + +.asm_132f3 + dec hl + dec c + jr nz, .asm_132e7 + ret + +.asm_132f8 + ld hl, $c4b0 + ld [hl], $71 + ret +; 132fe + +Function132fe: ; 132fe + ld a, [CurPartyMon] + inc a + ld c, a + ld a, [PartyCount] + cp c + ret z + ld e, c + ld d, $0 + ld hl, PartySpecies + add hl, de +.asm_1330f + ld a, [hl] + cp $ff + ret z + and a + jr z, .asm_1331e + cp $fd + jr z, .asm_1331e + cp $fc + jr c, .asm_13321 + +.asm_1331e + inc hl + jr .asm_1330f + +.asm_13321 + ld hl, $c4b2 + ld [hl], $ed + ret +; 13327 SelectMenu: ; 13327 @@ -47402,7 +49014,29 @@ TileTypeTable: ; 4ce1f db $00, $00, $00, $00, $00, $00, $00, $0f ; 4cf1f -INCBIN "baserom.gbc", $4cf1f, $4cffe - $4cf1f +Function4cf1f: ; 4cf1f + ld a, $0 + call $4f34 + ld a, $1 + call $4f34 + ld a, $2 + call $4f34 + ld a, $3 + call $4f34 + ret +; 4cf34 + +Function4cf34: ; 4cf34 + call GetSRAMBank + ld hl, $a000 + ld bc, $2000 + xor a + call ByteFill + call CloseSRAM + ret +; 4cf45 + +INCBIN "baserom.gbc", $4cf45, $4cffe - $4cf45 Function4cffe: ; 4cffe @@ -47697,7 +49331,276 @@ Function4d3ab: ; 4d3ab ret ; 4d3b1 -INCBIN "baserom.gbc", $4d3b1, $4d596 - $4d3b1 +Function4d3b1: ; 4d3b1 + ld a, $2 + ld hl, $4000 + rst FarCall + ld b, $8 + call GetSGBLayout + call Functione51 + call Functione5f + ld de, $0054 + call StartMusic + ld hl, $5408 + call PrintText + ld hl, $540d + call Function1d3c + call Function1d81 + ret c + ld a, [$cfa9] + cp $1 + ret z + call $541e + jr c, .asm_4d3f7 + ld a, $0 + call GetSRAMBank + ld a, $80 + ld [$ac60], a + call CloseSRAM + ld hl, $53fe + call PrintText + ret + +.asm_4d3f7 + ld hl, $5403 + call PrintText + ret +; 4d3fe + +INCBIN "baserom.gbc", $4d3fe, $4d41e - $4d3fe + +Function4d41e: ; 4d41e + call $550f + push de + ld hl, StringBuffer2 + ld bc, $0005 + xor a + call ByteFill + ld a, $4 + ld [$d08b], a + ld hl, $5463 + call PrintText +.asm_4d437 + call $5468 +.asm_4d43a + call Functiona57 + ld a, [$ffa9] + ld b, a + and $1 + jr nz, .asm_4d453 + ld a, b + and $f0 + jr z, .asm_4d43a + call $5490 + ld c, $3 + call DelayFrames + jr .asm_4d437 + +.asm_4d453 + call $54e0 + pop de + ld a, e + cp l + jr nz, .asm_4d461 + ld a, d + cp h + jr nz, .asm_4d461 + and a + ret + +.asm_4d461 + scf + ret +; 4d463 + +INCBIN "baserom.gbc", $4d463, $4d468 - $4d463 + +Function4d468: ; 4d468 + ld hl, $c5da + ld de, StringBuffer2 + ld c, $5 +.asm_4d470 + ld a, [de] + add $f6 + ld [hli], a + inc de + dec c + jr nz, .asm_4d470 + ld hl, $c5ee + ld bc, $0005 + ld a, $7f + call ByteFill + ld hl, $c5ee + ld a, [$d08b] + ld e, a + ld d, $0 + add hl, de + ld [hl], $61 + ret +; 4d490 + +Function4d490: ; 4d490 + ld a, b + and $20 + jr nz, .asm_4d4a5 + ld a, b + and $10 + jr nz, .asm_4d4af + ld a, b + and $40 + jr nz, .asm_4d4ba + ld a, b + and $80 + jr nz, .asm_4d4c8 + ret + +.asm_4d4a5 + ld a, [$d08b] + and a + ret z + dec a + ld [$d08b], a + ret + +.asm_4d4af + ld a, [$d08b] + cp $4 + ret z + inc a + ld [$d08b], a + ret + +.asm_4d4ba + call $54d5 + ld a, [hl] + cp $9 + jr z, .asm_4d4c5 + inc a + ld [hl], a + ret + +.asm_4d4c5 + ld [hl], $0 + ret + +.asm_4d4c8 + call $54d5 + ld a, [hl] + and a + jr z, .asm_4d4d2 + dec a + ld [hl], a + ret + +.asm_4d4d2 + ld [hl], $9 + ret +; 4d4d5 + +Function4d4d5: ; 4d4d5 + ld a, [$d08b] + ld e, a + ld d, $0 + ld hl, StringBuffer2 + add hl, de + ret +; 4d4e0 + +Function4d4e0: ; 4d4e0 + ld hl, $0000 + ld de, $d08a + ld bc, $0001 + call $5501 + ld bc, $000a + call $5501 + ld bc, $0064 + call $5501 + ld bc, $03e8 + call $5501 + ld bc, $2710 + ld a, [de] + dec de + push hl + ld hl, $0000 + call AddNTimes + ld c, l + ld b, h + pop hl + add hl, bc + ret +; 4d50f + +Function4d50f: ; 4d50f + ld a, $1 + call GetSRAMBank + ld de, $0000 + ld hl, $a009 + ld c, $2 + call $5533 + ld hl, $a00b + ld c, $5 + call $553e + ld hl, $a3dc + ld c, $3 + call $5533 + call CloseSRAM + ret +; 4d533 + +Function4d533: ; 4d533 +.asm_4d533 + ld a, [hli] + add e + ld e, a + ld a, $0 + adc d + ld d, a + dec c + jr nz, .asm_4d533 + ret +; 4d53e + +Function4d53e: ; 4d53e +.asm_4d53e + ld a, [hli] + cp $50 + ret z + add e + ld e, a + ld a, $0 + adc d + ld d, a + dec c + jr nz, .asm_4d53e + ret +; 4d54c + +Function4d54c: ; 4d54c + ld a, $2 + ld hl, $4000 + rst FarCall + ld b, $8 + call GetSGBLayout + call Functione51 + call Functione5f + ld de, $0054 + call StartMusic + ld hl, $5580 + call PrintText + ld hl, $5585 + call Function1d3c + call Function1d81 + ret c + ld a, [$cfa9] + cp $1 + ret z + ld a, $13 + ld hl, $4f1f + rst FarCall + ret +; 4d580 + +INCBIN "baserom.gbc", $4d580, $4d596 - $4d580 Tilesets: @@ -49798,7 +51701,17 @@ Function505c1: ; 505c1 ret ; 505da -INCBIN "baserom.gbc", $505da, $50730 - $505da +INCBIN "baserom.gbc", $505da, $506bc - $505da + +Function506bc: ; 506bc + ld hl, $46c8 + call Function31cd + ld a, $1 + ld [$d0ec], a + ret +; 506c8 + +INCBIN "baserom.gbc", $506c8, $50730 - $506c8 Function50730: ; 50730 @@ -49920,7 +51833,85 @@ Function507fb: ; 507fb ret ; 50821 -INCBIN "baserom.gbc", $50821, $5093a - $50821 +INCBIN "baserom.gbc", $50821, $5084a - $50821 + +Function5084a: ; 5084a + ld a, [CurPartyMon] + ld e, a + call $48d5 + ld a, [CurPartySpecies] + ld [CurSpecies], a + call GetBaseData + ld a, [MonType] + ld hl, PartyMon1Species + ld bc, $0030 + and a + jr z, .asm_5087b + ld hl, OTPartyMon1Species + ld bc, $0030 + cp $1 + jr z, .asm_5087b + ld bc, $0020 + ld hl, $65bb + ld a, $3 + rst FarCall + jr .asm_5088a + +.asm_5087b + ld a, [CurPartyMon] + call AddNTimes + ld de, TempMonSpecies + ld bc, $0030 + call CopyBytes + +.asm_5088a + ret +; 5088b + +INCBIN "baserom.gbc", $5088b, $508d5 - $5088b + +Function508d5: ; 508d5 + ld a, [MonType] + and a + jr z, .asm_508e7 + cp $1 + jr z, .asm_508ec + cp $2 + jr z, .asm_508f1 + cp $3 + jr z, .asm_50900 + +.asm_508e7 + ld hl, PartySpecies + jr .asm_50905 + +.asm_508ec + ld hl, OTPartySpecies + jr .asm_50905 + +.asm_508f1 + ld a, $1 + call GetSRAMBank + ld hl, $ad11 + call $4905 + call CloseSRAM + ret + +.asm_50900 + ld a, [BreedMon1Species] + jr .asm_50909 + +.asm_50905 + ld d, $0 + add hl, de + ld a, [hl] + +.asm_50909 + ld [CurPartySpecies], a + ret +; 5090d + +INCBIN "baserom.gbc", $5090d, $5093a - $5090d PrintMoveType: ; 5093a @@ -51661,7 +53652,55 @@ INCBIN "baserom.gbc", $82153, $823c8-$82153 SECTION "bank21",DATA,BANK[$21] -INCBIN "baserom.gbc", $84000, $842db - $84000 +Function84000: ; 84000 + ld hl, OverworldMap + ld bc, $040c + xor a + call $42ab + xor a + ld [rSB], a + ld [rSC], a + ld [$c2d5], a + ld hl, $c2d4 + set 0, [hl] + ld a, [GBPrinter] + ld [$cbfb], a + xor a + ld [$cf63], a + ret +; 84022 + +Function84022: ; 84022 + ld a, [$cf63] + ld e, a + ld d, $0 + ld hl, $4031 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 84031 + +INCBIN "baserom.gbc", $84031, $842ab - $84031 + +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 + +INCBIN "baserom.gbc", $842b7, $842db - $842b7 Function842db: ; 842db @@ -51677,7 +53716,231 @@ Function842db: ; 842db jp [hl] ; 842ea -INCBIN "baserom.gbc", $842ea, $84a2e - $842ea +INCBIN "baserom.gbc", $842ea, $843f0 - $842ea + +Function843f0: ; 843f0 +.asm_843f0 + call Functiona57 + call $46f6 + jr c, .asm_8440f + ld a, [$cf63] + bit 7, a + jr nz, .asm_8440d + call $4022 + call $4757 + call $4785 + call DelayFrame + jr .asm_843f0 + +.asm_8440d + and a + ret + +.asm_8440f + scf + ret +; 84411 + +Function84411: ; 84411 + xor a + ld [$c2d4], a + ld [$c2d5], a + ret +; 84419 + +Function84419: ; 84419 + push af + call $4000 + pop af + ld [$cbfa], a + call $4728 + ret +; 84425 + +Function84425: ; 84425 + call Function222a + call $4753 + ret +; 8442c + +INCBIN "baserom.gbc", $8442c, $845d4 - $8442c + +Function845d4: ; 845d4 + call $45db + call $4425 + ret +; 845db + +Function845db: ; 845db + ld a, [$cf65] + push af + xor a + ld [$ffac], a + call $474c + 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 $4419 + ld hl, $ff9e + ld a, [hl] + push af + ld [hl], $4 + ld a, $9 + ld [$cf65], a + call $43f0 + pop af + ld [$ff9e], a + call $4411 + call $4735 + xor a + ld [rIF], a + pop af + ld [rIE], a + pop af + ld [$cf65], a + ret +; 8461a + +INCBIN "baserom.gbc", $8461a, $846f6 - $8461a + +Function846f6: ; 846f6 + ld a, [hJoyDown] + and $2 + jr nz, .asm_846fe + and a + ret + +.asm_846fe + ld a, [$ca80] + cp $c + jr nz, .asm_84722 +.asm_84705 + ld a, [$c2d5] + and a + jr nz, .asm_84705 + ld a, $16 + ld [$c2d5], a + ld a, $88 + ld [rSB], a + ld a, $1 + ld [rSC], a + ld a, $81 + ld [rSC], a +.asm_8471c + ld a, [$c2d5] + and a + jr nz, .asm_8471c + +.asm_84722 + ld a, $1 + ld [$ffac], a + scf + ret +; 84728 + +Function84728: ; 84728 + ld hl, TileMap + ld de, $ca90 + ld bc, $0168 + call CopyBytes + ret +; 84735 + +Function84735: ; 84735 + ld hl, $ca90 + ld de, TileMap + ld bc, $0168 + call CopyBytes + ret +; 84742 + +INCBIN "baserom.gbc", $84742, $8474c - $84742 + +Function8474c: ; 8474c + ld de, $005b + call StartMusic2 + ret +; 84753 + +Function84753: ; 84753 + call Function3d47 + ret +; 84757 + +Function84757: ; 84757 + ld a, [$ca88] + cp $ff + jr nz, .asm_84765 + ld a, [$ca89] + cp $ff + jr z, .asm_8477f + +.asm_84765 + ld a, [$ca89] + and $e0 + ret z + bit 7, a + jr nz, .asm_8477b + bit 6, a + jr nz, .asm_84777 + ld a, $6 + jr .asm_84781 + +.asm_84777 + ld a, $7 + jr .asm_84781 + +.asm_8477b + ld a, $4 + jr .asm_84781 + +.asm_8477f + ld a, $5 + +.asm_84781 + ld [$cbf8], a + ret +; 84785 + +Function84785: ; 84785 + ld a, [$cbf8] + and a + ret z + push af + xor a + ld [hBGMapMode], a + ld hl, $c504 + ld bc, $0a12 + call TextBox + pop af + ld e, a + ld d, $0 + ld hl, $4807 + add hl, de + add hl, de + ld e, [hl] + inc hl + ld d, [hl] + ld hl, $c52d + ld a, $77 + call Function13d4 + ld hl, $c5ce + ld de, $47f5 + call PlaceString + ld a, $1 + ld [hBGMapMode], a + xor a + ld [$cbf8], a + ret +; 847bd + +INCBIN "baserom.gbc", $847bd, $84a2e - $847bd FX00GFX: FX01GFX: ; 84a2e @@ -52690,7 +54953,34 @@ SpecialHoOhChamber: ; 0x8addb ret ; 0x8adef -INCBIN "baserom.gbc", $8adef, $8b170 - $8adef +INCBIN "baserom.gbc", $8adef, $8ae30 - $8adef + +Function8ae30: ; 8ae30 + push de + push bc + call GetSecondaryMapHeaderPointer + ld a, h + cp $58 + jr nz, .asm_8ae4a + ld a, l + cp $e8 + jr nz, .asm_8ae4a + ld de, $0329 + ld b, $1 + call BitTable1Func + scf + jr .asm_8ae4b + +.asm_8ae4a + and a + +.asm_8ae4b + pop bc + pop de + ret +; 8ae4e + +INCBIN "baserom.gbc", $8ae4e, $8b170 - $8ae4e SpecialDratini: ; 0x8b170 ; if ScriptVar is 0 or 1, change the moveset of the last Dratini in the party. @@ -53907,7 +56197,29 @@ Function8e82b: ; 8e82b ret ; 8e83f -INCBIN "baserom.gbc", $8e83f, $8e9ac - $8e83f +Function8e83f: ; 8e83f + push hl + push de + push bc + call $6849 + pop bc + pop de + pop hl + ret +; 8e849 + +Function8e849: ; 8e849 + ld d, $0 + ld hl, $6854 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 8e854 + +INCBIN "baserom.gbc", $8e854, $8e9ac - $8e854 GetSpeciesIcon: ; 8e9ac ; Load species icon into VRAM at tile a @@ -54617,7 +56929,122 @@ Function91ae1: ; 91ae1 ret ; 91af3 -INCBIN "baserom.gbc", $91af3, $91bb5 - $91af3 + +Function91af3: ; 91af3 + call WhiteBGMap + call ClearTileMap + call ClearSprites + ld hl, $ffaa + ld a, [hl] + push af + ld [hl], $1 + xor a + ld [hBGMapMode], a + callba Function8cf53 + call Function91ff2 + ld de, $62e1 + ld hl, $9300 + ld bc, $2406 + call Functionf1e + call FlyMap + call $5c8f + ld b, $2 + call GetSGBLayout + call Function32f9 +.asm_91b29 + call Functiona57 + ld hl, hJoyPressed + ld a, [hl] + and $2 + jr nz, .asm_91b4a + ld a, [hl] + and $1 + jr nz, .asm_91b4e + call $5b73 + call $5c17 + callba Function8cf69 + call DelayFrame + jr .asm_91b29 + +.asm_91b4a + ld a, $ff + jr .asm_91b5a + +.asm_91b4e + ld a, [DefaultFlypoint] + ld l, a + ld h, $0 + add hl, hl + ld de, $5c5f + add hl, de + ld a, [hl] + +.asm_91b5a + ld [DefaultFlypoint], a + pop af + ld [$ffaa], a + call WhiteBGMap + ld a, $90 + ld [$ffd2], a + xor a + ld [hBGMapAddress], a + ld a, $98 + ld [$ffd7], a + ld a, [DefaultFlypoint] + ld e, a + ret +; 91b73 + +Function91b73: ; 91b73 + ld a, [StartFlypoint] + ld e, a + ld a, [EndFlypoint] + ld d, a + ld hl, $ffa9 + ld a, [hl] + and $40 + jr nz, .asm_91b89 + ld a, [hl] + and $80 + jr nz, .asm_91b9b + ret + +.asm_91b89 + ld hl, DefaultFlypoint + ld a, [hl] + cp d + jr nz, .asm_91b93 + ld a, e + dec a + ld [hl], a + +.asm_91b93 + inc [hl] + call $5c3c + jr z, .asm_91b89 + jr .asm_91bab + +.asm_91b9b + ld hl, DefaultFlypoint + ld a, [hl] + cp e + jr nz, .asm_91ba5 + ld a, d + inc a + ld [hl], a + +.asm_91ba5 + dec [hl] + call $5c3c + jr z, .asm_91b9b + +.asm_91bab + 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 @@ -54693,7 +57120,45 @@ TownMapBubble: ; 91bb5 ret ; 91c17 -INCBIN "baserom.gbc", $91c17, $91c50 - $91c17 +Function91c17: ; 91c17 + ld a, [DefaultFlypoint] + ld l, a + ld h, $0 + add hl, hl + ld de, Flypoints + add hl, de + ld e, [hl] + callba GetLandmarkCoords + ld a, [$d003] + ld c, a + ld a, [$d004] + ld b, a + ld hl, $0004 + add hl, bc + ld [hl], e + ld hl, $0005 + add hl, bc + ld [hl], d + ret +; 91c3c + +Function91c3c: ; 91c3c + push bc + push de + push hl + ld l, [hl] + ld h, $0 + add hl, hl + ld de, $5c5f + add hl, de + ld c, [hl] + call GetFlyPermission + pop hl + pop de + pop bc + and a + ret +; 91c50 GetFlyPermission: ; 91c50 ; Return flypoint c permission flag in a @@ -54739,7 +57204,11 @@ Flypoints: ; 91c5e ; 91c8e -INCBIN "baserom.gbc", $91c8e, $91c90 - $91c8e +INCBIN "baserom.gbc", $91c8e, $91c8f - $91c8e + +Function91c8f: ; 91c8f + ret +; 91c90 FlyMap: ; 91c90 @@ -58898,7 +61367,128 @@ WildRockMonTable: ; b83de db $ff ; end ; b83e5 -INCBIN "baserom.gbc", $b83e5, $b9e76 - $b83e5 +INCBIN "baserom.gbc", $b83e5, $b9229 - $b83e5 + +Functionb9229: ; b9229 + ld a, [CurPartyMon] + ld hl, $a600 + ld bc, $002f + call AddNTimes + ld d, h + ld e, l + push de + call WhiteBGMap + call ClearSprites + call ClearTileMap + call DisableLCD + call Functione5f + pop de + push de + ld a, $0 + call GetSRAMBank + ld a, $77 + ld hl, $65c8 + rst FarCall + call CloseSRAM + ld a, c + ld de, $65e6 + or a + jr z, .asm_b9268 + ld de, $69e6 + sub $3 + jr c, .asm_b9268 + ld de, $6de6 + +.asm_b9268 + ld hl, VTiles1 + ld bc, $7780 + call Functionf9d + pop de + call $52b8 + call EnableLCD + call WaitBGMap + ld a, [$d1ec] + ld e, a + ld a, $2 + ld hl, $4cb4 + rst FarCall + call Function32f9 + xor a + ld [hJoyPressed], a + call $529a + call WhiteBGMap + call DisableLCD + call Functione51 + jp EnableLCD +; b929a + +Functionb929a: ; b929a +.asm_b929a + call GetJoypadPublic + ld a, [hJoyPressed] + and $b + jr z, .asm_b929a + and $8 + jr nz, .asm_b92a8 + ret + +.asm_b92a8 + ld a, [$cf63] + push af + ld hl, $45d4 + ld a, $21 + rst FarCall + pop af + ld [$cf63], a + jr .asm_b929a +; b92b8 + +Functionb92b8: ; b92b8 + ld h, d + ld l, e + push hl + ld a, $0 + call GetSRAMBank + ld de, $002b + add hl, de + ld a, [hli] + ld [Buffer1], a + ld a, [hli] + ld [Buffer2], a + ld a, [hli] + ld [CurPartySpecies], a + ld b, [hl] + call CloseSRAM + ld hl, $52f8 + ld c, $0 +.asm_b92d9 + ld a, [hli] + cp b + jr z, .asm_b92ea + cp $ff + jr z, .asm_b92e6 + inc c + inc hl + inc hl + jr .asm_b92d9 + +.asm_b92e6 + ld hl, $52f8 + inc hl + +.asm_b92ea + ld a, c + ld [$d1ec], a + ld a, [hli] + ld h, [hl] + ld l, a + ld de, $52f7 + pop bc + push de + jp [hl] +; b92f7 + +INCBIN "baserom.gbc", $b92f7, $b9e76 - $b92f7 Functionb9e76: ; b9e76 @@ -65141,7 +67731,13 @@ Function106094: ; 106094 ret ; 106095 -INCBIN "baserom.gbc", $106095, $1060bb - $106095 +INCBIN "baserom.gbc", $106095, $1060b5 - $106095 + +Function1060b5: ; 1060b5 + ret +; 1060b6 + +INCBIN "baserom.gbc", $1060b6, $1060bb - $1060b6 Function1060bb: ; 1060bb ; commented out @@ -68242,7 +70838,33 @@ PokegearGFX: ; 1de2e4 INCBIN "gfx/misc/pokegear.lz" ; 1de5c7 -INCBIN "baserom.gbc", $1de5c7, $1df238 - $1de5c7 +INCBIN "baserom.gbc", $1de5c7, $1de5c8 - $1de5c7 + +Function1de5c8: ; 1de5c8 + ld c, $0 + ld hl, $0029 + add hl, de + ld a, [hli] + cp $84 + ret nz + ld a, [hli] + inc c + cp $85 + ret z + inc c + cp $86 + ret z + inc c + cp $88 + ret z + inc c + cp $92 + ret z + ld c, $0 + ret +; 1de5e6 + +INCBIN "baserom.gbc", $1de5e6, $1df238 - $1de5e6 SECTION "bank78",DATA,BANK[$78] -- cgit v1.2.3 From ce31567c4decea39233d535fae27245b2954ed8a Mon Sep 17 00:00:00 2001 From: yenatch Date: Thu, 1 Aug 2013 15:29:12 -0400 Subject: frames --- main.asm | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index 2d431639c..dab96cf3f 100644 --- a/main.asm +++ b/main.asm @@ -63540,7 +63540,19 @@ INCBIN "gfx/misc/font.1bpp", $0, $400 FontBattleExtra: INCBIN "gfx/misc/font_battle_extra.2bpp", $0, $200 -INCBIN "baserom.gbc", $f8800, $f8ba0 - $f8800 +Frames: ; f8800 +INCBIN "gfx/frames/1.1bpp" +INCBIN "gfx/frames/2.1bpp" +INCBIN "gfx/frames/3.1bpp" +INCBIN "gfx/frames/4.1bpp" +INCBIN "gfx/frames/5.1bpp" +INCBIN "gfx/frames/6.1bpp" +INCBIN "gfx/frames/7.1bpp" +INCBIN "gfx/frames/8.1bpp" +INCBIN "gfx/frames/9.1bpp" +; f89b0 + +INCBIN "baserom.gbc", $f89b0, $f8ba0 - $f89b0 TownMapGFX: ; f8ba0 INCBIN "gfx/misc/town_map.lz" @@ -63607,9 +63619,9 @@ Functionfb48a: ; fb48a .asm_fb4cc ld a, [TextBoxFrame] - and $7 + and 7 ld bc, $0030 - ld hl, $4800 + ld hl, Frames call AddNTimes ld d, h ld e, l -- cgit v1.2.3 From 257302dff95d7de4e32eb75109ebe2228b823805 Mon Sep 17 00:00:00 2001 From: yenatch Date: Thu, 1 Aug 2013 16:35:35 -0400 Subject: player hud stuff --- main.asm | 65 +++++++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 38 insertions(+), 27 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index dab96cf3f..6d6a6adb5 100644 --- a/main.asm +++ b/main.asm @@ -19877,7 +19877,7 @@ PredefPointers: ; 856b dwb Function3d873, BANK(Function3d873) dwb Function3e036, BANK(Function3e036) dwb Function3f4c1, BANK(Function3f4c1) - dwb Function3f390, BANK(Function3f390) + dwb FillInExpBar, BANK(FillInExpBar) dwb Function3f43d, BANK(Function3f43d) dwb Function3f47c, BANK(Function3f47c) dwb Function42487, BANK(Function42487) @@ -34796,7 +34796,7 @@ Function2c075: ; 2c075 ret ; 2c095 -Function2c095: ; 2c095 +DrawPlayerExpBar: ; 2c095 ld hl, .data_2c0a9 ld de, $d004 ld bc, 4 @@ -41117,10 +41117,10 @@ Function3df2c: ; 3df2c push hl push de push bc - call Function3df58 + call DrawPlayerHUD ld hl, PlayerHPPal call SetHPPal - call Function3df9e + call CheckDanger call Function3e043 ld hl, EnemyHPPal call SetHPPal @@ -41136,53 +41136,60 @@ Function3df48: ; 3df48 push hl push de push bc - call Function3df58 - call Function3df98 - call Function3df9e + call DrawPlayerHUD + call UpdatePlayerHPPal + call CheckDanger pop bc pop de pop hl ret ; 3df58 -Function3df58: ; 3df58 +DrawPlayerHUD: ; 3df58 xor a ld [hBGMapMode], a - ld hl, $c535 + +; Clear the area + hlcoord 9, 7 ld bc, $050b call ClearBox - ld a, $b - ld hl, $4095 - rst FarCall - ld hl, $c566 - ld [hl], $73 - call Function3dfbf - ld hl, $c55e - ld b, $1 + + callba DrawPlayerExpBar + + hlcoord 18, 9 + ld [hl], $73 ; vertical bar + call PrintPlayerHUD + +; HP bar + hlcoord 10, 9 + ld b, OTPARTYMON xor a ld [MonType], a - ld a, $26 + ld a, $26 ; PREDEF_DRAW_HP call Predef + +; Exp bar push de ld a, [CurBattleMon] - ld hl, $dce9 + ld hl, PartyMon1Exp + 2 call GetPartyLocation ld d, h ld e, l - ld hl, $c586 + + hlcoord 10, 11 ld a, [TempMonLevel] ld b, a - call Function3f390 + call FillInExpBar pop de ret ; 3df98 -Function3df98: ; 3df98 +UpdatePlayerHPPal: ; 3df98 ld hl, PlayerHPPal jp Function3e12e ; 3df9e -Function3df9e: ; 3df9e +CheckDanger: ; 3df9e ld hl, BattleMonHP ld a, [hli] or [hl] @@ -41207,12 +41214,14 @@ Function3df9e: ; 3df9e ret ; 3dfbf -Function3dfbf: ; 3dfbf +PrintPlayerHUD: ; 3dfbf ld de, BattleMonNick - ld hl, $c536 + hlcoord 10, 7 call Function3e138 call PlaceString + push bc + ld a, [CurBattleMon] ld hl, PartyMon1DVs call GetPartyLocation @@ -41233,8 +41242,10 @@ Function3dfbf: ; 3dfbf ld [CurPartySpecies], a ld [CurSpecies], a call GetBaseData + pop hl dec hl + ld a, $3 ld [MonType], a callab GetGender @@ -44226,7 +44237,7 @@ Function3f136: ; 3f136 call Function3f21b ld c, $40 call Function3f22c - call Function3dfbf + call PrintPlayerHUD ld hl, BattleMonNick ld de, StringBuffer1 ld bc, $000b @@ -44532,7 +44543,7 @@ Function3f360: ; 3f360 ; 3f390 -Function3f390: ; 3f390 +FillInExpBar: ; 3f390 push hl call Function3f39c pop hl -- cgit v1.2.3 From e2a0c68f4cb97e05d2b3ee8bd6b1e74fb0217d26 Mon Sep 17 00:00:00 2001 From: yenatch Date: Thu, 1 Aug 2013 18:30:30 -0400 Subject: comment more battle ui --- main.asm | 531 ++++++++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 409 insertions(+), 122 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index 6d6a6adb5..233f24b65 100644 --- a/main.asm +++ b/main.asm @@ -3653,7 +3653,7 @@ Text_09: ; 14d2 swap a set 6, a ld b, a - call Function3198 + call PrintNum ld b, h ld c, l pop hl @@ -9919,16 +9919,14 @@ CopyDataUntil: ; 318c ret ; 0x3198 -Function3198: ; 3198 +PrintNum: ; 3198 ld a, [hROMBank] push af - ld a, $3 + ld a, BANK(_PrintNum) rst Bankswitch - - call $44c7 + call _PrintNum pop af rst Bankswitch - ret ; 31a4 @@ -11216,50 +11214,62 @@ Function3741: ; 3741 ret ; 3750 -Function3750: ; 3750 + +DrawHPBar: ; 3750 +; Draw an HP bar d tiles long at hl +; Fill it up to e pixels + push hl push de push bc + +; Place 'HP:' ld a, $60 ld [hli], a ld a, $61 ld [hli], a + +; Draw a template push hl - ld a, $62 -.asm_375c + ld a, $62 ; empty bar +.template ld [hli], a dec d - jr nz, .asm_375c - ld a, $6b + jr nz, .template + ld a, $6b ; bar end add b ld [hl], a pop hl + +; Safety check # pixels ld a, e and a - jr nz, .asm_376f + jr nz, .fill ld a, c and a - jr z, .asm_3782 - ld e, $1 + jr z, .done + ld e, 1 -.asm_376f +.fill +; Keep drawing tiles until pixel length is reached ld a, e - sub $8 - jr c, .asm_377e + sub TILE_WIDTH + jr c, .lastbar + ld e, a - ld a, $6a + ld a, $6a ; full bar ld [hli], a ld a, e and a - jr z, .asm_3782 - jr .asm_376f + jr z, .done + jr .fill -.asm_377e - ld a, $62 - add e +.lastbar + ld a, $62 ; empty bar + add e ; + e ld [hl], a -.asm_3782 +.done pop bc pop de pop hl @@ -11267,7 +11277,6 @@ Function3750: ; 3750 ; 3786 - Function3786: ; 3786 ld a, $1 ld [$c2c6], a @@ -11397,28 +11406,39 @@ Function381e: ; 381e ret ; 382d -Function382d: ; 382d + +PrintLevel: ; 382d +; Print TempMonLevel at hl + ld a, [TempMonLevel] - ld [hl], $6e + ld [hl], $6e ; ":L" inc hl - ld c, $2 - cp $64 - jr c, .asm_3842 + +; How many digits? + ld c, 2 + cp 100 + jr c, .print + +; 3-digit numbers overwrite the :L. dec hl inc c - jr .asm_3842 + jr .print +; -------- +; Unused: print :L and all 3 digits ld [hl], $6e inc hl - ld c, $3 + ld c, 3 +; -------- -.asm_3842 +.print ld [$d265], a ld de, $d265 - ld b, $41 - jp Function3198 + ld b, %01000001 ; flags + jp PrintNum ; 384d + Function384d: ; 384d ld hl, $d25e ld c, a @@ -11808,7 +11828,7 @@ GetBattleVarPair: ; 39e7 ; get var id ld a, [hl] ld c, a - ld b, $0 + ld b, 0 ; seek ld hl, .vars @@ -17537,7 +17557,7 @@ Function5f58: ; 5f58 pop hl ld de, $d265 ld bc, $0102 - jp Function3198 + jp PrintNum ; 5f6b Function5f6b: ; 5f6b @@ -17551,18 +17571,18 @@ Function5f6b: ; 5f6b pop hl ld de, $d265 ld bc, $0103 - jp Function3198 + jp PrintNum ; 5f84 Function5f84: ; 5f84 ld de, GameTimeHours ld bc, $0203 - call Function3198 + call PrintNum ld [hl], $6d inc hl ld de, GameTimeMinutes ld bc, $8102 - jp Function3198 + jp PrintNum ; 5f99 @@ -19854,12 +19874,13 @@ GetPredefFn: ; 854b PredefPointers: ; 856b ; $4b Predef pointers ; address, bank + dwb $6508, $01 dwb $747a, $01 dwb $4658, $03 - dwb $57c1, $13 + dwb $57c1, $13 ; Flag, BANK(Flag) dwb $4699, $03 - dwb Functionda6d, BANK(Functionda6d) + dwb FillPP, BANK(FillPP) dwb Functiond88c, BANK(Functiond88c) dwb $5a96, $03 dwb $5b3f, $03 @@ -19872,16 +19893,16 @@ PredefPointers: ; 856b dwb $566a, $04 dwb $4eef, $0a dwb $4b3e, $0b ; PrintMoveDescription, BANK(PrintMoveDescription) - dwb Function3df48, BANK(Function3df48) + dwb Function3df48, BANK(Function3df48) ; UpdatePlayerHUD dwb FillBox, BANK(FillBox) dwb Function3d873, BANK(Function3d873) - dwb Function3e036, BANK(Function3e036) + dwb Function3e036, BANK(Function3e036) ; UpdateEnemyHUD dwb Function3f4c1, BANK(Function3f4c1) dwb FillInExpBar, BANK(FillInExpBar) dwb Function3f43d, BANK(Function3f43d) dwb Function3f47c, BANK(Function3f47c) dwb Function42487, BANK(Function42487) - dwb $64e1, $10 + dwb FillMoves, BANK(FillMoves) dwb $61e6, $10 dwb $4f63, $0a dwb $4f24, $0a @@ -19892,18 +19913,18 @@ PredefPointers: ; 856b dwb $4c50, $14 dwb GetGender, BANK(GetGender) dwb StatsScreenInit, BANK(StatsScreenInit) - dwb $4b0a, $14 - dwb $4b0e, $14 + dwb DrawPlayerHP, BANK(DrawPlayerHP) + dwb DrawEnemyHP, BANK(DrawEnemyHP) dwb $4b7b, $14 - dwb LoadTypeName, BANK(LoadTypeName) + dwb GetTypeName, BANK(GetTypeName) dwb PrintMoveType, BANK(PrintMoveType) dwb PrintType, BANK(PrintType) dwb $490d, $14 - dwb $5040, $14 + dwb $5040, $14 ; GetUnownLetter dwb $7cdd, $32 dwb $40d5, $33 dwb $5853, $02 - dwb $464c, $02 + dwb $464c, $02 ; LoadSGBLayout, BANK(LoadSGBLayout) dwb $5d11, $24 dwb $4a88, $02 dwb $420f, $23 @@ -20727,7 +20748,7 @@ SpecialTrainerHouse: ; 0xc4b9 ld [ScriptVar], a jp CloseSRAM -Functionc4c7: ; c4c7 +_PrintNum: ; c4c7 push bc bit 5, b jr z, .asm_c4d9 @@ -22506,7 +22527,7 @@ Functiond88c: ; d88c push de inc hl inc hl - call Functionda6d + call FillPP pop de pop hl inc de @@ -22629,7 +22650,7 @@ Functiond88c: ; d88c ret ; da6d -Functionda6d: ; da6d +FillPP: ; da6d push bc ld b, $4 .asm_da70 @@ -26594,7 +26615,7 @@ Function13172: ; 13172 ld hl, $484a rst FarCall pop hl - call Function382d + call PrintLevel ld hl, PlayerHPPal call SetHPPal ld b, $e @@ -26681,7 +26702,7 @@ Function13256: ; 13256 ld [$d265], a ld de, $d265 ld bc, $0103 - call Function3198 + call PrintNum jr .asm_132ad .asm_132a7 @@ -30265,7 +30286,7 @@ Function15be5: ; 15be5 ld hl, StringBuffer1 ld de, StringBuffer2 ld bc, $8206 - call Function3198 + call PrintNum pop hl ld de, StringBuffer1 ld c, $3 @@ -32592,7 +32613,7 @@ Function24ac3: ; 0x24ac3 inc hl ld de, $cf75 ld bc, $0102 - call Function3198 + call PrintNum .done ret @@ -32618,7 +32639,7 @@ Function24ae8: ; 24ae8 add hl, de ld de, Money ld bc, $2306 - call Function3198 + call PrintNum ret ; 24b15 @@ -32638,7 +32659,7 @@ Function24b25: ; 24b25 ld de, $d855 ld bc, $0204 ld hl, $c4c1 - call Function3198 + call PrintNum ret ; 24b4e @@ -32653,14 +32674,14 @@ Function24b4e: ; 24b4e ld hl, $c4c0 ld de, Money ld bc, $2306 - call Function3198 + call PrintNum ld hl, $c4e2 ld de, CoinString call PlaceString ld hl, $c4eb ld de, $d855 ld bc, $0204 - call Function3198 + call PrintNum ret ; 24b83 @@ -32684,7 +32705,7 @@ Function24b8f: ; 24b8f ld hl, $c4b5 ld de, $dc7a ld bc, $0203 - call Function3198 + call PrintNum ld hl, $c4b8 ld de, String24bcf call PlaceString @@ -32694,7 +32715,7 @@ Function24b8f: ; 24b8f ld hl, $c4e1 ld de, $dc79 ld bc, $0102 - call Function3198 + call PrintNum pop af ld [Options], a ret @@ -32726,7 +32747,7 @@ Function24be7: ; 24be7 ld hl, $c50c ld de, $dc79 ld bc, $4102 - call Function3198 + call PrintNum ld hl, $c4b5 ld de, String24c4b call PlaceString @@ -33264,7 +33285,7 @@ Function24f7c: ; 24f7c ld hl, $c5b5 ld de, $dc79 ld bc, $8102 - call Function3198 + call PrintNum ret ; 24f89 @@ -33296,7 +33317,7 @@ Function24fb2: ; 24fb2 ld hl, $c5ed ld de, $dc79 ld bc, $8102 - call Function3198 + call PrintNum ret ; 24fbf @@ -33444,7 +33465,7 @@ Function25072: ; 25072 inc hl ld de, $d10c ld bc, $8102 - call Function3198 + call PrintNum ld a, [$cf86] ld e, a ld a, [$cf87] @@ -33516,7 +33537,7 @@ Function250d1: ; 250d1 inc hl ld de, $ffc3 ld bc, $2306 - call Function3198 + call PrintNum call WaitBGMap ret ; 250ed @@ -33603,7 +33624,7 @@ ClearOakRatingBuffer: ; 0x2665a call ByteFill pop hl ld bc, $4103 - call Function3198 + call PrintNum ret ; 0x2666b @@ -36493,7 +36514,7 @@ Function3c000: ; 3c000 call Function3dbde call Function3dc18 call Function3db5f - call Function3edd1 + call EmptyBattleTextBox call Function309d call SetPlayerTurn call Function3dc23 @@ -38590,7 +38611,7 @@ Function3ce01: ; 3ce01 ld a, [IsInBattle] dec a call z, Function3d0ea - call Function3edd1 + call EmptyBattleTextBox call Function309d ld a, [$d0ee] and $c0 @@ -38844,7 +38865,7 @@ Function3cfa4: ; 3cfa4 call Function3ebd8 ld c, $28 call DelayFrames - call Function3edd1 + call EmptyBattleTextBox ld c, $3 ld a, $47 ld hl, $4000 @@ -39189,7 +39210,7 @@ Function3d1aa: ; 3d1aa ; 3d1f8 Function3d1f8: ; 3d1f8 - call Function3edd1 + call EmptyBattleTextBox call Function309d ld a, [IsInBattle] and a @@ -39215,7 +39236,7 @@ Function3d1f8: ; 3d1f8 ; 3d227 Function3d227: ; 3d227 - call Function3edd1 + call EmptyBattleTextBox call Function1d6e call Function3d2f7 call Function3d362 @@ -39268,7 +39289,7 @@ Function3d227: ; 3d227 call Function3dbde call Function3dc18 call Function3db5f - call Function3edd1 + call EmptyBattleTextBox call Function309d call SetPlayerTurn call Function3dc23 @@ -39290,7 +39311,7 @@ Function3d2b3: ; 3d2b3 call Function3dbde call Function3dc18 call Function3db5f - call Function3edd1 + call EmptyBattleTextBox call Function309d call SetPlayerTurn jp Function3dc23 @@ -39454,7 +39475,7 @@ LostBattle: ; 3d38e ld c, 40 call DelayFrames - call Function3edd1 + call EmptyBattleTextBox ld c, 2 ld a, $47 ld hl, $4000 @@ -39728,7 +39749,7 @@ Function3d557: ; 3d557 ld hl, $c4b2 ld a, $8 call Function3d490 - call Function3edd1 + call EmptyBattleTextBox jp Function1d6e ; 3d57a @@ -40544,7 +40565,7 @@ Function3db32: ; 3db32 call Function3dbde call Function3dc18 call Function3db5f - call Function3edd1 + call EmptyBattleTextBox call Function309d ld hl, EnemyMonHPHi ld a, [hli] @@ -40892,7 +40913,7 @@ Function3ddc8: ; 3ddc8 push hl push de push bc - call Function3edd1 + call EmptyBattleTextBox ld a, $69 ld [FXAnimIDLo], a call Function3c8e4 @@ -41165,7 +41186,7 @@ DrawPlayerHUD: ; 3df58 ld b, OTPARTYMON xor a ld [MonType], a - ld a, $26 ; PREDEF_DRAW_HP + ld a, PREDEF_DRAW_PLAYER_HP call Predef ; Exp bar @@ -41275,7 +41296,7 @@ PrintPlayerHUD: ; 3dfbf .asm_3e02d ld a, [BattleMonLevel] ld [TempMonLevel], a - jp Function382d + jp PrintLevel ; 3e036 Function3e036: ; 3e036 @@ -41352,7 +41373,7 @@ Function3e043: ; 3e043 .asm_3e0b5 ld a, [EnemyMonLevel] ld [TempMonLevel], a - call Function382d + call PrintLevel .asm_3e0be ld hl, EnemyMonHPHi @@ -41415,7 +41436,7 @@ Function3e043: ; 3e043 ld [$d10a], a ld hl, $c4ca ld b, $0 - call Function3750 + call DrawHPBar ret ; 3e127 @@ -41447,9 +41468,9 @@ Function3e139: ; 3e139 jr z, .asm_3e156 cp $3 jr z, .asm_3e156 - call Function3edd1 + call EmptyBattleTextBox call UpdateBattleHuds - call Function3edd1 + call EmptyBattleTextBox call Function309d .asm_3e156 @@ -41849,7 +41870,7 @@ Function3e40b: ; 3e40b call Function3dbde call Function3dc18 call Function3db5f - call Function3edd1 + call EmptyBattleTextBox call Function309d call SetPlayerTurn call Function3dc23 @@ -41872,7 +41893,7 @@ Function3e459: ; 3e459 ld [$d265], a call Function3ecab call Function3db5f - call Function3edd1 + call EmptyBattleTextBox call Function309d call SetPlayerTurn jp Function3dc23 @@ -42303,7 +42324,7 @@ Function3e75f: ; 3e75f push hl ld de, StringBuffer1 ld bc, $0102 - call Function3198 + call PrintNum pop hl inc hl inc hl @@ -42311,7 +42332,7 @@ Function3e75f: ; 3e75f inc hl ld de, $d265 ld bc, $0102 - call Function3198 + call PrintNum ret ; 3e786 @@ -42370,7 +42391,7 @@ Function3e7c1: ; 3e7c1 ld a, [InLinkBattle] and a jr z, .asm_3e817 - call Function3edd1 + call EmptyBattleTextBox call Function309d ld a, [$d0ec] and a @@ -42744,7 +42765,7 @@ LoadEnemyMon: ; 3e8eb ; Get letter based on DVs ld hl, EnemyMonDVs - ld a, PREDEF_GETUNOWNLETTER + ld a, PREDEF_GET_UNOWN_LETTER call Predef ; Can't use any letters that haven't been unlocked ; If combined with forced shiny battletype, causes an infinite loop @@ -43567,7 +43588,7 @@ Function3edad: ; 3edad ; 3edd1 -Function3edd1: ; 3edd1 +EmptyBattleTextBox: ; 3edd1 ld hl, .empty jp BattleTextBox .empty @@ -43979,7 +44000,7 @@ Function3ee3b: ; 3ee3b ld hl, Function3df48 ld a, $f rst FarCall - call Function3edd1 + call EmptyBattleTextBox call Function309d ld a, $1 ld [hBGMapMode], a @@ -44797,7 +44818,7 @@ Function3f4dd: ; 3f4dd set 6, [hl] xor a ld [hBGMapMode], a - call Function3edd1 + call EmptyBattleTextBox ld hl, $c535 ld bc, $050b call ClearBox @@ -45273,20 +45294,20 @@ Function3f85f: ; 3f85f push hl ld de, $d00d ld bc, $0204 - call Function3198 + call PrintNum pop hl ld de, $0005 add hl, de push hl ld de, $d00f ld bc, $0204 - call Function3198 + call PrintNum pop hl ld de, $0005 add hl, de ld de, $d011 ld bc, $0204 - call Function3198 + call PrintNum jr .asm_3f8cf .asm_3f8c9 @@ -45326,21 +45347,21 @@ Function3f85f: ; 3f85f jr c, .asm_3f92a ld bc, $0204 - call Function3198 + call PrintNum ld hl, $c4fb ld de, $b262 call .asm_3f92b ld bc, $0204 - call Function3198 + call PrintNum ld hl, $c500 ld de, $b264 call .asm_3f92b ld bc, $0204 - call Function3198 + call PrintNum .asm_3f92a ret @@ -46802,7 +46823,128 @@ Function42487: ; 42487 ret ; 424e1 -INCBIN "baserom.gbc", $424e1, $42577 - $424e1 + +FillMoves: ; 424e1 +; Fill in moves at de for CurPartySpecies at CurPartyLevle + + 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, [DefaultFlypoint] + 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 - PartyMon1Move4 + 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, PartyMon1PP - PartyMon1Moves + add hl, de + push hl + dec a + ld hl, Moves + MOVE_PP + ld bc, Move2 - Move1 + 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, $3 +.asm_42570 + inc de + ld a, [de] + ld [hli], a + dec c + jr nz, .asm_42570 + ret +; 42577 Function42577: ; 42577 @@ -48247,7 +48389,7 @@ Function49e3d: ; 49e3d inc hl ld de, hMinutes ld bc, $8102 - call Function3198 + call PrintNum ret ; 49e70 @@ -51070,7 +51212,7 @@ Function500cf: ; 500cf pop hl ld d, $6 ld b, $0 - call Function3750 + call DrawHPBar ld hl, $cd9b ld a, [$cda9] ld c, a @@ -51145,14 +51287,14 @@ Function50138: ; 50138 pop hl push de ld bc, $0203 - call Function3198 + call PrintNum pop de ld a, $f3 ld [hli], a inc de inc de ld bc, $0203 - call Function3198 + call PrintNum .asm_5016b pop hl @@ -51194,7 +51336,7 @@ Function50176: ; 50176 .asm_501a1 ld bc, $4103 - call Function3198 + call PrintNum .asm_501a7 pop hl @@ -51962,7 +52104,7 @@ PrintType: ; 50953 ; 50964 -LoadTypeName: ; 50964 +GetTypeName: ; 50964 ; Copy the name of type $d265 to StringBuffer1. ld a, [$d265] ld hl, TypeNames @@ -52050,7 +52192,96 @@ Dark: ; 50a28 -INCBIN "baserom.gbc", $50a28, $50bdd - $50a28 +INCBIN "baserom.gbc", $50a28, $50b0a - $50a28 + + +DrawPlayerHP: ; 50b0a + ld a, $1 + jr DrawHP + +DrawEnemyHP: ; 50b0e + ld a, $2 + +DrawHP: ; 50b10 + ld [$d10a], a + push hl + push bc + ld a, [MonType] + cp BOXMON + jr z, .asm_50b30 + + ld a, [TempMonCurHP] + ld b, a + ld a, [TempMonCurHP + 1] + ld c, a + +; Any HP? + or b + jr nz, .asm_50b30 + + xor a + ld c, a + ld e, a + ld a, 6 + ld d, a + jp .asm_50b4a + +.asm_50b30 + ld a, [TempMonMaxHP] + ld d, a + ld a, [TempMonMaxHP + 1] + ld e, a + ld a, [MonType] + cp BOXMON + jr nz, .asm_50b41 + + ld b, d + ld c, e + +.asm_50b41 + ld a, $4 + call Predef + ld a, 6 + ld d, a + ld c, a + +.asm_50b4a + ld a, c + pop bc + ld c, a + pop hl + push de + push hl + push hl + call DrawHPBar + pop hl + +; Print HP + ld bc, $0015 ; move (1,1) + add hl, bc + ld de, TempMonCurHP + ld a, [MonType] + cp BOXMON + jr nz, .asm_50b66 + ld de, TempMonMaxHP +.asm_50b66 + ld bc, $0203 + call PrintNum + + ld a, "/" + ld [hli], a + +; Print max HP + ld de, TempMonMaxHP + ld bc, $0203 + call PrintNum + pop hl + pop de + ret +; 50b7b + + +INCBIN "baserom.gbc", $50b7b, $50bdd - $50b7b GetGender: ; 50bdd @@ -52392,7 +52623,63 @@ Function50eed: ; 50eed jp Multiply ; 50efa -INCBIN "baserom.gbc", $50efa, $511c5 - $50efa + +INCBIN "baserom.gbc", $50efa, $51040 - $50efa + + +GetUnownLetter: ; 51040 +; Return Unown letter in UnownLetter based on DVs at hl + +; Take the middle 2 bits of each DV and place them in order: +; AtkDefDV | SpdSpcDV +; .ww..xx. .yy..zz. + + ; atk + ld a, [hl] + and %01100000 + sla a + ld b, a + ; def + ld a, [hli] + and %00000110 + swap a + srl a + or b + ld b, a + + ; spd + ld a, [hl] + and %01100000 + swap a + sla a + or b + ld b, a + ; spc + ld a, [hl] + and %00000110 + srl a + or b + +; Divide by 10 to get 0-25 + ld [hDividend + 3], a + xor a + ld [hDividend], a + ld [hDividend + 1], a + ld [hDividend + 2], a + ld a, 10 + ld [hDivisor], a + ld b, $4 + call Divide + +; Increment to get 1-26 + ld a, [hQuotient + 2] + inc a + ld [UnownLetter], a + ret +; 51077 + + +INCBIN "baserom.gbc", $51077, $511c5 - $51077 Function511c5: ; 511c5 @@ -52400,7 +52687,7 @@ Function511c5: ; 511c5 push bc sub $12 ld c, a - ld b, $0 + ld b, 0 ld hl, $51d4 add hl, bc ld a, [hl] @@ -54587,7 +54874,7 @@ Function86748: ; 86748 ld hl, $c5a7 ld de, $d265 ld bc, $8103 - call Function3198 + call PrintNum call GetBasePokemonName ld hl, $c5ab call PlaceString @@ -54609,7 +54896,7 @@ Function86748: ; 86748 ld de, StringBuffer2 call PlaceString ld hl, $c5e1 - call Function382d + call PrintLevel .asm_867f8 ld hl, $c5e7 @@ -54621,7 +54908,7 @@ Function86748: ; 86748 ld hl, $c5ea ld de, TempMonID ld bc, $8205 - call Function3198 + call PrintNum ret ; 86810 @@ -54698,19 +54985,19 @@ Function86810: ; 86810 ld hl, $c51c ld de, PlayerID ld bc, $8205 - call Function3198 + call PrintNum ld hl, $c541 ld de, $68ed call PlaceString ld hl, $c557 ld de, GameTimeHours ld bc, $0203 - call Function3198 + call PrintNum ld [hl], $63 inc hl ld de, GameTimeMinutes ld bc, $8102 - call Function3198 + call PrintNum call WaitBGMap callba Function26601 ret @@ -61995,7 +62282,7 @@ Functioncc000: ; cc000 ld l, c ld a, [$dfbb] ld [TempMonLevel], a - call Function382d + call PrintLevel ld de, EnemyMonNick ld hl, $c541 call PlaceString @@ -62003,14 +62290,14 @@ Functioncc000: ; cc000 ld l, c ld a, [EnemyMonLevel] ld [TempMonLevel], a - call Function382d + call PrintLevel ld hl, $c4fb ld de, $dfc0 ld bc, $0203 - call Function3198 + call PrintNum ld hl, $c573 ld de, EnemyMonMaxHPHi - call Function3198 + call PrintNum ld hl, $40c2 call PrintText pop af @@ -66063,7 +66350,7 @@ Function100902: ; 100902 ld hl, $c584 ld bc, $0102 ld de, StringBuffer2 - call Function3198 + call PrintNum ld de, SFX_TWO_PC_BEEPS call StartSFX callba Function104061 -- cgit v1.2.3 From 0e50b4c79833bbe07058a08fa91e59f4307e83a3 Mon Sep 17 00:00:00 2001 From: yenatch Date: Fri, 2 Aug 2013 05:46:14 -0400 Subject: more bank 1 incbins --- main.asm | 478 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 434 insertions(+), 44 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index 233f24b65..15f8fe373 100644 --- a/main.asm +++ b/main.asm @@ -18398,7 +18398,244 @@ Function64db: ; 64db ret ; 6508 -INCBIN "baserom.gbc", $6508, $669f - $6508 +Function6508: ; 6508 + call Function309d + ld a, [CurPartyMon] + ld hl, PartyMon1Nickname + call GetNick + ld hl, StringBuffer1 + ld de, $d050 + ld bc, $000b + call CopyBytes + ld hl, PartyMon1Move1 + ld bc, $0030 + ld a, [CurPartyMon] + call AddNTimes + ld d, h + ld e, l + ld b, $4 +.asm_6530 + ld a, [hl] + and a + jr z, .asm_6564 + inc hl + dec b + jr nz, .asm_6530 + push de + call $65d3 + pop de + jp c, $65b5 + push hl + push de + ld [$d265], a + ld b, a + ld a, [IsInBattle] + and a + jr z, .asm_6559 + ld a, [DisabledMove] + cp b + jr nz, .asm_6559 + xor a + ld [DisabledMove], a + ld [PlayerDisableCount], a + +.asm_6559 + call GetMoveName + ld hl, UnknownText_0x6684 + call PrintText + pop de + pop hl + +.asm_6564 + ld a, [$d262] + ld [hl], a + ld bc, $0015 + add hl, bc + push hl + push de + dec a + ld hl, $5b00 + ld bc, $0007 + call AddNTimes + ld a, $10 + call GetFarByte + pop de + pop hl + ld [hl], a + ld a, [IsInBattle] + and a + jp z, $65ca + ld a, [CurPartyMon] + ld b, a + ld a, [CurBattleMon] + cp b + jp nz, $65ca + ld a, [PlayerSubStatus5] + bit 3, a + jp nz, $65ca + ld h, d + ld l, e + ld de, BattleMonMove1 + ld bc, $0004 + call CopyBytes + ld bc, $0011 + add hl, bc + ld de, BattleMonPPMove1 + ld bc, $0004 + call CopyBytes + jp $65ca +; 65b5 + +Function65b5: ; 65b5 + ld hl, $6675 + call PrintText + call Function1dcf + jp c, $6520 + ld hl, $667a + call PrintText + ld b, $0 + ret +; 65ca + +Function65ca: ; 65ca + ld hl, $666b + call PrintText + ld b, $1 + ret +; 65d3 + +Function65d3: ; 65d3 + push hl + ld hl, UnknownText_0x667f + call PrintText + call Function1dcf + pop hl + ret c + ld bc, $fffc + add hl, bc + push hl + ld de, $d25e + ld bc, $0004 + call CopyBytes + pop hl +.asm_65ee + push hl + ld hl, UnknownText_0x6670 + call PrintText + ld hl, $c4cd + ld b, $8 + ld c, $d + call TextBox + ld hl, $c4f7 + ld a, $28 + ld [Buffer1], a + ld a, $20 + call Predef + ld a, $4 + ld [$cfa1], a + ld a, $6 + ld [$cfa2], a + ld a, [$d0eb] + inc a + ld [$cfa3], a + ld a, $1 + ld [$cfa4], a + ld [$cfa9], a + ld [$cfaa], a + ld a, $3 + ld [$cfa8], a + ld a, $20 + ld [$cfa5], a + xor a + ld [$cfa6], a + ld a, $20 + ld [$cfa7], a + call Function1bc9 + push af + call Function30b4 + pop af + pop hl + bit 1, a + jr nz, .asm_6669 + push hl + ld a, [$cfa9] + dec a + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + push af + push bc + call IsHMMove + pop bc + pop de + ld a, d + jr c, .asm_6660 + pop hl + add hl, bc + and a + ret + +.asm_6660 + ld hl, UnknownText_0x669a + call PrintText + pop hl + jr .asm_65ee + +.asm_6669 + scf + ret +; 666b + +UnknownText_0x666b: ; 666b + text_jump UnknownText_0x1c5660, BANK(UnknownText_0x1c5660) + db "@" +; 6670 + +UnknownText_0x6670: ; 6670 + text_jump UnknownText_0x1c5678, BANK(UnknownText_0x1c5678) + db "@" +; 6675 + +UnknownText_0x6675: ; 6675 + text_jump UnknownText_0x1c5699, BANK(UnknownText_0x1c5699) + db "@" +; 667a + +UnknownText_0x667a: ; 667a + text_jump UnknownText_0x1c56af, BANK(UnknownText_0x1c56af) + db "@" +; 667f + +UnknownText_0x667f: ; 667f + text_jump UnknownText_0x1c56c9, BANK(UnknownText_0x1c56c9) + db "@" +; 6684 + +UnknownText_0x6684: ; 6684 + text_jump UnknownText_0x1c5740, BANK(UnknownText_0x1c5740) + start_asm +; 6689 + +; 6689 + push de + ld de, SFX_SWITCH_POKEMON + call StartSFX + pop de + ld hl, UnknownText_0x6695 + ret +; 6695 + +UnknownText_0x6695: ; 6695 + text_jump UnknownText_0x1c574e, BANK(UnknownText_0x1c574e) + db "@" +; 669a + +UnknownText_0x669a: ; 669a + text_jump UnknownText_0x1c5772, BANK(UnknownText_0x1c5772) + db "@" +; 669f + CheckNickErrors: ; 669f ; error-check monster nick before use @@ -18682,8 +18919,42 @@ INCLUDE "items/item_attributes.asm" ; 6ec1 -INCBIN "baserom.gbc", $6ec1, $6eef - $6ec1 +Function6ec1: ; 6ec1 + + ld hl, $0006 + add hl, bc + bit 5, [hl] + jr z, .asm_6ed9 + ld hl, $0004 + add hl, bc + bit 4, [hl] + push hl + push bc + call $6f2c + pop bc + pop hl + ret c + jr .asm_6ee9 + +.asm_6ed9 + ld hl, $0004 + add hl, bc + bit 4, [hl] + jr nz, .asm_6ee9 + push hl + push bc + call Function6f07 + pop bc + pop hl + ret c +.asm_6ee9 + bit 6, [hl] + jr nz, Function6ef5 + push hl + push bc + ; fallthrough +; 6eef DrawGraphic: ; 6eef ; input: @@ -18696,6 +18967,10 @@ DrawGraphic: ; 6eef pop bc pop hl ret c + ; fallthrough +; 6ef5 + +Function6ef5: ; 6ef5 bit 5, [hl] jr nz, .asm_6f05 push hl @@ -18731,10 +19006,12 @@ Function6f07: ; 6f07 ld d, a call GetTileType and a - jr z, .asm_6f3e + jr z, Function6f3e scf ret +; 6f2c +Function6f2c: ; 6f2c call Function6f5f ret c ld hl, $000e @@ -18742,11 +19019,12 @@ Function6f07: ; 6f07 ld a, [hl] call GetTileType cp $1 - jr z, .asm_6f3e + jr z, Function6f3e scf ret +; 6f3e -.asm_6f3e +Function6f3e: ; 6f3e ld hl, $000e add hl, bc ld a, [hl] @@ -18756,10 +19034,10 @@ Function6f07: ; 6f07 ld hl, $0007 add hl, bc ld a, [hl] - and $3 + and 3 ld e, a - ld d, $0 - ld hl, $6f5b + ld d, 0 + ld hl, .data_6f5b add hl, de pop af and [hl] @@ -18768,8 +19046,9 @@ Function6f07: ; 6f07 ret ; 6f5b -INCBIN "baserom.gbc", $6f5b, $6f5f - $6f5b - +.data_6f5b + db 1, 2, 8, 4 +; 6f5f Function6f5f: ; 6f5f ld hl, $000f @@ -18780,10 +19059,10 @@ Function6f5f: ; 6f5f push af ld hl, $0007 add hl, bc - and $3 + and 3 ld e, a - ld d, $0 - ld hl, $6f7b + ld d, 0 + ld hl, .data_6f7b add hl, de pop af and [hl] @@ -18792,8 +19071,9 @@ Function6f5f: ; 6f5f ret ; 6f7b -INCBIN "baserom.gbc", $6f7b, $6f7f - $6f7b - +.data_6f7b + db 2, 1, 4, 8 +; 6f7f Function6f7f: ; 6f7f ld d, a @@ -18807,24 +19087,26 @@ Function6f7f: ; 6f7f .asm_6f8c ld a, d - and $7 + and 7 ld e, a - ld d, $0 - ld hl, $6f99 + ld d, 0 + ld hl, .data_6f99 add hl, de ld a, [hl] scf ret ; 6f99 -INCBIN "baserom.gbc", $6f99, $6fa1 - $6f99 - +.data_6f99 + db 8, 4, 1, 2 + db 10, 6, 9, 5 +; 6fa1 Function6fa1: ; 6fa1 ld hl, $0007 add hl, bc ld a, [hl] - and $3 + and 3 jr z, .asm_6fb2 dec a jr z, .asm_6fb7 @@ -18899,7 +19181,7 @@ CheckFacingObject: ; 6fd9 ld bc, $d4d6 ld a, 0 ld [hConnectionStripLength], a - call $7041 + call Function7041 ret nc ld hl, $0007 add hl, bc @@ -18922,14 +19204,17 @@ Function7009: ; 7009 ld hl, $0011 add hl, bc ld e, [hl] - jr .asm_7041 + jr Function7041 +; 7015 +Function7015: ; 7015 ld a, [hConnectionStripLength] call Function1ae5 - call $7021 - call $7041 + call Function7021 + call Function7041 ret +Function7021: ; 7021 ld hl, $0010 add hl, bc ld d, [hl] @@ -18957,8 +19242,9 @@ Function7009: ; 7009 .asm_703f dec d ret +; 7041 -.asm_7041 +Function7041: ; 7041 ld bc, $d4d6 xor a .asm_7045 @@ -19121,7 +19407,71 @@ Function70ed: ; 70ed ret ; 7113 -INCBIN "baserom.gbc", $7113, $7171 - $7113 +Function7113: ; 7113 + ld a, [MapX] + ld d, a + ld a, [MapY] + ld e, a + ld bc, $d4d6 + xor a +.asm_711f + ld [hConnectedMapWidth], a + call Function1af1 + jr z, .asm_7160 + ld hl, $0003 + add hl, bc + ld a, [hl] + cp $15 + jr nz, .asm_7136 + call Function7171 + jr c, .asm_716f + jr .asm_7160 + +.asm_7136 + ld hl, $0011 + add hl, bc + ld a, [hl] + cp e + jr nz, .asm_714e + ld hl, $0010 + add hl, bc + ld a, [hl] + cp d + jr nz, .asm_714e + ld a, [hConnectedMapWidth] + cp $0 + jr z, .asm_7160 + jr .asm_716f + +.asm_714e + ld hl, $0013 + add hl, bc + ld a, [hl] + cp e + jr nz, .asm_7160 + ld hl, $0012 + add hl, bc + ld a, [hl] + cp d + jr nz, .asm_7160 + jr .asm_716f + +.asm_7160 + ld hl, $0028 + add hl, bc + ld b, h + ld c, l + ld a, [hConnectedMapWidth] + inc a + cp $d + jr nz, .asm_711f + xor a + ret + +.asm_716f + scf + ret +; 7171 Function7171: ; 7171 @@ -19147,7 +19497,39 @@ Function7171: ; 7171 ret ; 718d -INCBIN "baserom.gbc", $718d, $71c2 - $718d +Function718d: ; 718d + ld hl, PartyMon1Happiness + ld bc, $0030 + ld de, PartySpecies +.asm_7196 + ld a, [de] + cp $fd + jr nz, .asm_719f + inc de + add hl, bc + jr .asm_7196 + +.asm_719f + ld [$d265], a + ld a, [hl] + ld [ScriptVar], a + call GetPokemonName + jp $746e +; 71ac + +Function71ac: ; 71ac + ld a, [PartySpecies] + ld [$d265], a + cp $fd + ld a, $1 + jr z, .asm_71b9 + xor a + +.asm_71b9 + ld [ScriptVar], a + call GetPokemonName + jp $746e +; 71c2 Function71c2: ; 71c2 @@ -19297,7 +19679,16 @@ SpecialGiveShuckle: ; 7305 ; 737e -INCBIN "baserom.gbc", $737e, $747b - $737e +INCBIN "baserom.gbc", $737e, $746e - $737e + +Function746e: ; 746e + ld hl, StringBuffer1 + ld de, StringBuffer3 + ld bc, $000b + jp CopyBytes +; 747a + +INCBIN "baserom.gbc", $747a, $747b - $747a SECTION "bank2",DATA,BANK[$2] @@ -19875,7 +20266,7 @@ PredefPointers: ; 856b ; $4b Predef pointers ; address, bank - dwb $6508, $01 + dwb Function6508, BANK(Function6508) dwb $747a, $01 dwb $4658, $03 dwb $57c1, $13 ; Flag, BANK(Flag) @@ -22920,12 +23311,8 @@ Functiondf47: ; df47 Functiondf8c: ; df8c ld a, [CurPartySpecies] push af - ld hl, $6581 - ld a, $10 - rst FarCall - ld hl, $6581 - ld a, $10 - rst FarCall + callab GetPreEvolution + callab GetPreEvolution ld a, [CurPartySpecies] dec a push af @@ -46956,11 +47343,16 @@ Function42577: ; 42577 ret ; 42581 -Function42581: ; 42581 - ld c, $0 +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, BULBASAUR - 1 .asm_42583 ld hl, EvosAttacksPointers - ld b, $0 + ld b, 0 add hl, bc add hl, bc ld a, [hli] @@ -46970,7 +47362,7 @@ Function42581: ; 42581 ld a, [hli] and a jr z, .asm_425a2 - cp $5 + cp EVOLVE_STAT jr nz, .asm_42596 inc hl @@ -46987,7 +47379,7 @@ Function42581: ; 42581 .asm_425a2 inc c ld a, c - cp $fb + cp CELEBI jr c, .asm_42583 and a ret @@ -53636,9 +54028,7 @@ Function80341: ; 80341 add e ld e, a ld bc, $d4d6 - ld a, $1 - ld hl, $7041 - rst FarCall + callba Function7041 jr nc, .asm_80369 call Function8036f jr c, .asm_8036c -- cgit v1.2.3 From 09dfa9f09e8aa854cea3532143858b81c7f33bb5 Mon Sep 17 00:00:00 2001 From: yenatch Date: Fri, 2 Aug 2013 14:40:47 -0400 Subject: incbin unown font --- main.asm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index 15f8fe373..ac670e103 100644 --- a/main.asm +++ b/main.asm @@ -71394,7 +71394,11 @@ SECTION "bank76",DATA,BANK[$76] SECTION "bank77",DATA,BANK[$77] -INCBIN "baserom.gbc", $1dc000, $1dc5a1 - $1dc000 +UnownFont: ; 1dc000 +INCBIN "gfx/misc/unown_font.2bpp" +; 1dc1b0 + +INCBIN "baserom.gbc", $1dc1b0, $1dc5a1 - $1dc1b0 Tileset26GFX: ; 0x1dc5a1 Tileset32GFX: ; 0x1dc5a1 -- cgit v1.2.3 From 46fea9799482a7d767f0d59ff080b20f1b0445e6 Mon Sep 17 00:00:00 2001 From: yenatch Date: Fri, 2 Aug 2013 20:14:39 -0400 Subject: more step handling --- main.asm | 530 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 497 insertions(+), 33 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index ac670e103..4f019369b 100644 --- a/main.asm +++ b/main.asm @@ -19532,54 +19532,60 @@ Function71ac: ; 71ac ; 71c2 -Function71c2: ; 71c2 +ChangeHappiness: ; 71c2 +; Perform happiness action c on CurPartyMon + ld a, [CurPartyMon] inc a ld e, a - ld d, $0 - ld hl, PartyCount + ld d, 0 + ld hl, PartySpecies - 1 add hl, de ld a, [hl] - cp $fd + cp EGG ret z + push bc ld hl, PartyMon1Happiness - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 ld a, [CurPartyMon] call AddNTimes pop bc + ld d, h ld e, l + push de ld a, [de] - cp $64 - ld e, $0 + cp 100 + ld e, 0 jr c, .asm_71ef inc e - cp $c8 + cp 200 jr c, .asm_71ef inc e .asm_71ef dec c - ld b, $0 - ld hl, $7221 + ld b, 0 + ld hl, .Actions add hl, bc add hl, bc add hl, bc - ld d, $0 + ld d, 0 add hl, de ld a, [hl] - cp $64 + cp 100 pop de + ld a, [de] - jr nc, .asm_7209 + jr nc, .negative add [hl] jr nc, .asm_720d ld a, $ff jr .asm_720d -.asm_7209 +.negative add [hl] jr c, .asm_720d xor a @@ -19599,7 +19605,147 @@ Function71c2: ; 71c2 ret ; 7221 -INCBIN "baserom.gbc", $7221, $7305 - $7221 +.Actions + db +5, +3, +2 + db +5, +3, +2 + db +1, +1, +0 + db +3, +2, +1 + db +1, +1, +0 + db -1, -1, -1 + db -5, -5, -10 + db -5, -5, -10 + db +1, +1, +1 + db +3, +3, +1 + db +5, +5, +2 + db +1, +1, +1 + db +3, +3, +1 + db +10, +10, +4 + db -5, -5, -10 + db -10, -10, -15 + db -15, -15, -20 + db +3, +3, +1 + db +10, +6, +4 +; 725a + + +StepHappiness: ; 725a +; Raise the party's happiness by 1 point every other step cycle. + + ld hl, $dc77 + ld a, [hl] + inc a + and 1 + ld [hl], a + ret nz + + ld de, PartyCount + ld a, [de] + and a + ret z + + ld c, a + ld hl, PartyMon1Happiness +.loop + inc de + ld a, [de] + cp EGG + jr z, .next + inc [hl] + jr nz, .next + ld [hl], $ff + +.next + push de + ld de, PartyMon2 - PartyMon1 + add hl, de + pop de + dec c + jr nz, .loop + ret +; 7282 + + +DaycareStep: ; 7282 + + ld a, [DaycareMan] + bit 0, a + jr z, .asm_72a4 + + ld a, [$df2b] ; level + cp 100 + jr nc, .asm_72a4 + ld hl, $df16 ; exp + inc [hl] + jr nz, .asm_72a4 + dec hl + inc [hl] + jr nz, .asm_72a4 + dec hl + inc [hl] + ld a, [hl] + cp $50 + jr c, .asm_72a4 + ld a, $50 + ld [hl], a + +.asm_72a4 + ld a, [DaycareLady] + bit 0, a + jr z, .asm_72c6 + + ld a, [$df64] ; level + cp 100 + jr nc, .asm_72c6 + ld hl, $df4f ; exp + inc [hl] + jr nz, .asm_72c6 + dec hl + inc [hl] + jr nz, .asm_72c6 + dec hl + inc [hl] + ld a, [hl] + cp $50 + jr c, .asm_72c6 + ld a, $50 + ld [hl], a + +.asm_72c6 + ld hl, DaycareMan + bit 5, [hl] ; egg + ret z + ld hl, StepsToEgg + dec [hl] + ret nz + + call RNG + ld [hl], a + ld hl, $6e1d + ld a, $5 + rst FarCall + ld a, [$d265] + cp $e6 + ld b, $50 + jr nc, .asm_72f8 + ld a, [$d265] + cp $aa + ld b, $28 + jr nc, .asm_72f8 + ld a, [$d265] + cp $6e + ld b, $1e + jr nc, .asm_72f8 + ld b, $a + +.asm_72f8 + call RNG + cp b + ret nc + ld hl, DaycareMan + res 5, [hl] + set 6, [hl] + ret +; 7305 SpecialGiveShuckle: ; 7305 @@ -31281,7 +31427,98 @@ Function160a1: ; 160a1 jp $600d ; 160a9 -INCBIN "baserom.gbc", $160a9, $16ecd - $160a9 +INCBIN "baserom.gbc", $160a9, $16e1d - $160a9 + +Function16e1d: ; 16e1d + call $6ed6 + ld c, $0 + jp nc, $6eb7 + ld a, [BreedMon1Species] + ld [CurPartySpecies], a + ld a, [$df21] + ld [TempMonDVs], a + ld a, [$df22] + ld [$d124], a + ld a, $3 + ld [MonType], a + ld a, $24 + call Predef + jr c, .asm_16e70 + ld b, $1 + jr nz, .asm_16e48 + inc b + +.asm_16e48 + push bc + ld a, [BreedMon2Species] + ld [CurPartySpecies], a + ld a, [$df5a] + ld [TempMonDVs], a + ld a, [$df5b] + ld [$d124], a + ld a, $3 + ld [MonType], a + ld a, $24 + call Predef + pop bc + jr c, .asm_16e70 + ld a, $1 + jr nz, .asm_16e6d + inc a + +.asm_16e6d + cp b + jr nz, .asm_16e89 + +.asm_16e70 + ld c, $0 + ld a, [BreedMon1Species] + cp $84 + jr z, .asm_16e82 + ld a, [BreedMon2Species] + cp $84 + jr nz, .asm_16eb7 + jr .asm_16e89 + +.asm_16e82 + ld a, [BreedMon2Species] + cp $84 + jr z, .asm_16eb7 + +.asm_16e89 + call $6ebc + ld c, $ff + jp z, $6eb7 + ld a, [BreedMon2Species] + ld b, a + ld a, [BreedMon1Species] + cp b + ld c, $fe + jr z, .asm_16e9f + ld c, $80 + +.asm_16e9f + ld a, [$df12] + ld b, a + ld a, [$df4b] + cp b + jr nz, .asm_16eb7 + ld a, [$df13] + ld b, a + ld a, [$df4c] + cp b + jr nz, .asm_16eb7 + ld a, c + sub $4d + ld c, a + +.asm_16eb7 + ld a, c + ld [$d265], a + ret +; 16ebc + +INCBIN "baserom.gbc", $16ebc, $16ecd - $16ebc Function16ecd: ; 16ecd @@ -31293,7 +31530,93 @@ Function16ecd: ; 16ecd ret ; 16ed6 -INCBIN "baserom.gbc", $16ed6, $174ba - $16ed6 +Function16ed6: ; 16ed6 + ld a, [BreedMon2Species] + ld [CurSpecies], a + call GetBaseData + ld a, [BaseEggGroups] + cp $ff + jr z, .asm_16f3a + ld a, [BreedMon1Species] + ld [CurSpecies], a + call GetBaseData + ld a, [BaseEggGroups] + cp $ff + jr z, .asm_16f3a + ld a, [BreedMon2Species] + cp $84 + jr z, .asm_16f3c + ld [CurSpecies], a + call GetBaseData + ld a, [BaseEggGroups] + push af + and $f + ld b, a + pop af + and $f0 + swap a + ld c, a + ld a, [BreedMon1Species] + cp $84 + jr z, .asm_16f3c + ld [CurSpecies], a + push bc + call GetBaseData + pop bc + ld a, [BaseEggGroups] + push af + and $f + ld d, a + pop af + and $f0 + swap a + ld e, a + ld a, d + cp b + jr z, .asm_16f3c + cp c + jr z, .asm_16f3c + ld a, e + cp b + jr z, .asm_16f3c + cp c + jr z, .asm_16f3c + +.asm_16f3a + and a + ret + +.asm_16f3c + scf + ret +; 16f3e + +Function16f3e: ; 16f3e + ld de, PartySpecies + ld hl, PartyMon1Happiness + ld c, 0 +.loop + ld a, [de] + inc de + cp $ff + ret z + cp EGG + jr nz, .next + dec [hl] + jr nz, .next + ld a, 1 + and a + ret + +.next + push de + ld de, PartyMon2 - PartyMon1 + add hl, de + pop de + jr .loop +; 16f5e + +INCBIN "baserom.gbc", $16f5e, $174ba - $16f5e SECTION "bank6",DATA,BANK[$6] @@ -34474,7 +34797,7 @@ Function2709e: ; 2709e ld c, $13 .asm_270bd - callab Function71c2 + callab ChangeHappiness ret ; 270c4 @@ -39585,7 +39908,7 @@ Function3d1aa: ; 3d1aa .asm_3d1dc ld a, [CurBattleMon] ld [CurPartyMon], a - callab Function71c2 + callab ChangeHappiness ld a, [$d0ee] and $c0 add $1 @@ -45314,7 +45637,7 @@ Function3f594: ; 3f594 or [hl] jr z, .asm_3f5fc ld c, $4 - callab Function71c2 + callab ChangeHappiness .asm_3f5fc pop bc @@ -48461,9 +48784,7 @@ Function492b9: ; 492b9 and a jr z, .asm_49300 ld c, $5 - ld hl, $71c2 - ld a, $1 - rst FarCall + callab ChangeHappiness jr .asm_49305 .asm_49300 @@ -52246,7 +52567,156 @@ Function505c1: ; 505c1 ret ; 505da -INCBIN "baserom.gbc", $505da, $506bc - $505da +Function505da: ; 505da + ld a, [PartyCount] + and a + jr z, .asm_5062c + xor a + ld c, 7 + ld hl, EngineBuffer1 +.asm_505e6 + ld [hli], a + dec c + jr nz, .asm_505e6 + xor a + ld [CurPartyMon], a +.asm_505ee + call Function5062e + jr nc, .asm_50605 + ld a, [CurPartyMon] + ld e, a + ld d, 0 + ld hl, CurFruit + add hl, de + ld [hl], c + ld a, [EngineBuffer1] + or c + ld [EngineBuffer1], a + +.asm_50605 + ld a, [PartyCount] + ld hl, CurPartyMon + inc [hl] + cp [hl] + jr nz, .asm_505ee + ld a, [EngineBuffer1] + and $2 + jr nz, .asm_50622 + ld a, [EngineBuffer1] + and $1 + jr z, .asm_5062c + call Function50658 + xor a + ret + +.asm_50622 + ld a, $14 + ld hl, $4669 + call PushScriptPointer + scf + ret + +.asm_5062c + xor a + ret +; 5062e + +Function5062e: ; 5062e + ld a, $20 + call GetPartyParamLocation + ld a, [hl] + and $8 + ret z + ld a, $22 + call GetPartyParamLocation + ld a, [hli] + ld b, a + ld c, [hl] + or c + ret z + dec bc + ld [hl], c + dec hl + ld [hl], b + ld a, b + or c + jr nz, .asm_50654 + ld a, $20 + call GetPartyParamLocation + ld [hl], $0 + ld c, $2 + scf + ret + +.asm_50654 + ld c, $1 + scf + ret +; 50658 + +Function50658: ; 50658 + ld de, SFX_POISON + call StartSFX + ld b, $2 + ld a, $2e + call Predef + call DelayFrame + ret +; 50669 + +UnknownScript_0x50669: ; 50669 + 3callasm $14, $4658 + loadfont + 3callasm $14, $467b + iffalse UnknownScript_0x50677 + loadmovesprites + end +; 50677 + +UnknownScript_0x50677: ; 50677 + 3jump BANK(UnknownScript_0x124c8), UnknownScript_0x124c8 +; 5067b + +Function5067b: ; 5067b + xor a + ld [CurPartyMon], a + ld de, CurFruit +.asm_50682 + push de + ld a, [de] + and 2 + jr z, .asm_5069c + ld c, 7 + callba Function71c2 + callba GetPartyNick + ld hl, PoisonFaintText + call PrintText + +.asm_5069c + pop de + inc de + ld hl, CurPartyMon + inc [hl] + ld a, [PartyCount] + cp [hl] + jr nz, .asm_50682 + ld a, $14 + call Predef + ld a, d + ld [ScriptVar], a + ret +; 506b2 + +PoisonFaintText: ; 506b2 + text_jump UnknownText_0x1c0acc, BANK(UnknownText_0x1c0acc) + db "@" +; 506b7 + +PoisonWhiteOutText: ; 506b7 + text_jump UnknownText_0x1c0ada, BANK(UnknownText_0x1c0ada) + db "@" +; 506bc + Function506bc: ; 506bc ld hl, $46c8 @@ -59261,24 +59731,18 @@ CountStep: ; 96b79 inc [hl] jr nz, .asm_96b9c - ld a, $1 - ld hl, $725a - rst FarCall + callba StepHappiness .asm_96b9c ld a, [StepCount] cp $80 jr nz, .asm_96bab - ld a, $5 - ld hl, $6f3e - rst FarCall + callba Function16f3e jr nz, .asm_96bcf .asm_96bab - ld a, $1 - ld hl, $7282 - rst FarCall + callba DaycareStep ld hl, PoisonStepCount ld a, [hl] -- cgit v1.2.3 From 0ee006a145dbe45a8844ad2dc6d8bf04b51f63bc Mon Sep 17 00:00:00 2001 From: yenatch Date: Sat, 3 Aug 2013 16:19:29 -0400 Subject: more item effects --- main.asm | 764 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 702 insertions(+), 62 deletions(-) (limited to 'main.asm') diff --git a/main.asm b/main.asm index 4f019369b..27bfa6b0d 100644 --- a/main.asm +++ b/main.asm @@ -366,25 +366,29 @@ Function4dd: ; 4dd jr z, .asm_4e9 ld hl, $0522 ld b, $4 - jr .asm_501 + jr Function501 .asm_4e9 ld hl, $053a ld b, $4 - jr .asm_501 + jr Function501 +; 4f0 +Function4f0: ; 4f0 ld a, [hCGB] and a jr z, .asm_4fc ld hl, $052b ld b, $3 - jr .asm_501 + jr Function501 .asm_4fc ld hl, $0543 ld b, $3 + ; fallthrough +; 501 -.asm_501 +Function501: ; 501 push de ld a, [hld] ld d, a @@ -397,7 +401,7 @@ Function4dd: ; 4dd call DelayFrames pop de dec b - jr nz, .asm_501 + jr nz, Function501 ret ; 517 @@ -17733,7 +17737,7 @@ NamePlayer: ; 0x6074 ld b, $1c call GetSGBLayout - call $04f0 + call Function4f0 ld hl, PlayerName ld de, .Chris @@ -19499,11 +19503,11 @@ Function7171: ; 7171 Function718d: ; 718d ld hl, PartyMon1Happiness - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 ld de, PartySpecies .asm_7196 ld a, [de] - cp $fd + cp EGG jr nz, .asm_719f inc de add hl, bc @@ -19520,7 +19524,7 @@ Function718d: ; 718d Function71ac: ; 71ac ld a, [PartySpecies] ld [$d265], a - cp $fd + cp EGG ld a, $1 jr z, .asm_71b9 xor a @@ -20456,7 +20460,7 @@ PredefPointers: ; 856b dwb GetTypeName, BANK(GetTypeName) dwb PrintMoveType, BANK(PrintMoveType) dwb PrintType, BANK(PrintType) - dwb $490d, $14 + dwb PrintMonTypes, BANK(PrintMonTypes) dwb $5040, $14 ; GetUnownLetter dwb $7cdd, $32 dwb $40d5, $33 @@ -22087,7 +22091,7 @@ Functionceeb: ; ceeb ; cef4 Functioncef4: ; cef4 - call $4f0d + call Functioncf0d jr c, .asm_cf07 ld a, d cp $18 @@ -25487,7 +25491,54 @@ BoxNameInputUpper: db "lower DEL END " -INCBIN "baserom.gbc", $11e5d, $12513 - $11e5d +INCBIN "baserom.gbc", $11e5d, $122c1 - $11e5d + +UnknownScript_0x122c1: ; 0x122c1 + checkbit2 $0011 + iffalse $62cd + setbit2 $0051 + special $0017 + end +; 0x122ce + +INCBIN "baserom.gbc", $122ce, $124c8 - $122ce + +UnknownScript_0x124c8: ; 0x124c8 + refreshscreen $0 + 3callasm BANK(Function124fa), Function124fa + 2writetext UnknownText_0x124f5 + closetext + special $002e + pause 40 + special $001b + checkbit2 $0011 + iftrue .script_64f2 + 3callasm BANK(HalveMoney), HalveMoney + 3callasm BANK(Function12527), Function12527 + 3call BANK(UnknownScript_0x122c1), UnknownScript_0x122c1 + special $0000 + newloadmap $f1 + resetfuncs + +.script_64f2 + jumpstd $0016 +; 0x124f5 + +UnknownText_0x124f5: ; 0x124f5 + text_jump UnknownText_0x1c0a4e, BANK(UnknownText_0x1c0a4e) + db $50 +; 0x124fa + +Function124fa: ; 124fa + call ClearPalettes + call Functionfdb + call Function3200 + call HideSprites + call Function4f0 + ret +; 1250a + +INCBIN "baserom.gbc", $1250a, $12513 - $1250a HalveMoney: ; 12513 @@ -25512,7 +25563,24 @@ HalveMoney: ; 12513 ; 12527 -INCBIN "baserom.gbc", $12527, $12580 - $12527 +Function12527: ; 12527 + ld a, [$dcb2] + ld d, a + ld a, [$dcb3] + ld e, a + ld a, $5 + ld hl, $5344 + rst FarCall + ld a, c + jr c, .asm_12539 + xor a + +.asm_12539 + ld [$d001], a + ret +; 1253d + +INCBIN "baserom.gbc", $1253d, $12580 - $1253d Function12580: ; 12580 @@ -27723,7 +27791,37 @@ Function13575: ; 13575 ret ; 13583 -INCBIN "baserom.gbc", $13583, $13b87 - $13583 +INCBIN "baserom.gbc", $13583, $135eb - $13583 + +UnknownScript_0x135eb: ; 0x135eb + writecode $3, $6 + battlecheck + startbattle + returnafterbattle + copybytetovar $dc79 + iffalse UnknownScript_0x13603 + end +; 0x135f8 + +INCBIN "baserom.gbc", $135f8, $13603 - $135f8 + +UnknownScript_0x13603: ; 0x13603 + playsound $0027 + loadfont + 2writetext UnknownText_0x13614 + closetext + loadmovesprites + jumpstd $0016 +; 0x1360f + +INCBIN "baserom.gbc", $1360f, $13614 - $1360f + +UnknownText_0x13614: ; 0x13614 + text_jump UnknownText_0x1bd2e7, BANK(UnknownText_0x1bd2e7) + db $50 +; 0x13619 + +INCBIN "baserom.gbc", $13619, $13b87 - $13619 GetSquareRoot: ; 13b87 @@ -29436,7 +29534,17 @@ Function149af: ; 149af ret ; 149c6 -INCBIN "baserom.gbc", $149c6, $14a07 - $149c6 +INCBIN "baserom.gbc", $149c6, $149dd - $149c6 + +Function149dd: ; 149dd + ld a, [StandingTile] + ld hl, $49ea + ld de, $0001 + call IsInArray + ret +; 149ea + +INCBIN "baserom.gbc", $149ea, $14a07 - $149ea Function14a07: ; 14a07 @@ -30078,7 +30186,38 @@ BlackoutPoints: ; 0x152ab db GROUP_FAST_SHIP_CABINS_SW_SSW_NW, MAP_FAST_SHIP_CABINS_SW_SSW_NW, 6, 2 db $ff, $ff, $ff, $ff -INCBIN "baserom.gbc", $1531f, $15363 - $1531f +INCBIN "baserom.gbc", $1531f, $15344 - $1531f + +Function15344: ; 15344 + ld hl, BlackoutPoints + ld c, $0 +.asm_15349 + ld a, [hl] + cp $ff + jr z, .asm_1535f + cp d + jr nz, .asm_15356 + inc hl + ld a, [hld] + cp e + jr z, .asm_15361 + +.asm_15356 + push bc + ld bc, $0004 + add hl, bc + pop bc + inc c + jr .asm_15349 + +.asm_1535f + and a + ret + +.asm_15361 + scf + ret +; 15363 Function15363: ; 15363 @@ -34987,7 +35126,220 @@ INCBIN "baserom.gbc", $27a28, $27a2d - $27a28 SECTION "bankA",DATA,BANK[$A] -INCBIN "baserom.gbc", $28000, $2a2a0 - $28000 +INCBIN "baserom.gbc", $28000, $2a111 - $28000 + +Function2a111: ; 2a111 + ld hl, $d25a + call Function1852 + ld a, $3 + jr z, .asm_2a11e + ld a, [TimeOfDay] + +.asm_2a11e + ld c, a + ld b, $0 + add hl, bc + ld b, [hl] + ret +; 2a124 + +INCBIN "baserom.gbc", $2a124, $2a14f - $2a124 + +Function2a14f: ; 2a14f + call $6200 + jp nc, $61c1 + call $62ce + jp c, $61c9 + inc hl + inc hl + inc hl + call Function1852 + ld de, $61d9 + jr z, .asm_2a174 + inc hl + inc hl + ld a, [TimeOfDay] + ld bc, $000e + call AddNTimes + ld de, $61cb + +.asm_2a174 + push hl +.asm_2a175 + call RNG + cp $64 + jr nc, .asm_2a175 + inc a + ld b, a + ld h, d + ld l, e +.asm_2a180 + ld a, [hli] + cp b + jr nc, .asm_2a187 + inc hl + jr .asm_2a180 + +.asm_2a187 + ld c, [hl] + ld b, $0 + pop hl + add hl, bc + ld a, [hli] + ld b, a + call Function1852 + jr nz, .asm_2a1aa + call RNG + cp $59 + jr c, .asm_2a1aa + inc b + cp $a5 + jr c, .asm_2a1aa + inc b + cp $d8 + jr c, .asm_2a1aa + inc b + cp $f2 + jr c, .asm_2a1aa + inc b + +.asm_2a1aa + ld a, b + ld [CurPartyLevel], a + ld b, [hl] + call $64a0 + jr c, .asm_2a1c1 + ld a, b + cp $c9 + jr nz, .asm_2a1bf + ld a, [UnlockedUnowns] + and a + jr z, .asm_2a1c1 + +.asm_2a1bf + jr .asm_2a1c5 + +.asm_2a1c1 + ld a, $1 + and a + ret + +.asm_2a1c5 + ld a, b + ld [$d22e], a + xor a + ret +; 2a1cb + +INCBIN "baserom.gbc", $2a1cb, $2a200 - $2a1cb + +Function2a200: ; 2a200 + call Function1852 + jr z, .asm_2a21d + ld hl, WildMons5 + ld bc, $002f + call $623d + ret c + ld hl, WildMons1 + ld de, WildMons3 + call $6235 + ld bc, $002f + jr .asm_2a27a + +.asm_2a21d + ld hl, WildMons6 + ld bc, $0009 + call $623d + ret c + ld hl, WildMons2 + ld de, WildMons4 + call $6235 + ld bc, $0009 + jr .asm_2a27a + + call Function2f17 + and a + ret z + ld h, d + ld l, e + ret + + call $627f + push hl + ld hl, $dc20 + bit 2, [hl] + pop hl + jr z, .asm_2a25c + ld a, [$dfcc] + cp d + jr nz, .asm_2a25c + ld a, [$dfcd] + cp e + jr nz, .asm_2a25c + call $6288 + jr nc, .asm_2a278 + scf + ret + +.asm_2a25c + push hl + ld hl, $dc20 + bit 3, [hl] + pop hl + jr z, .asm_2a278 + ld a, [$dc5a] + cp d + jr nz, .asm_2a278 + ld a, [$dc5b] + cp e + jr nz, .asm_2a278 + call $6288 + jr nc, .asm_2a278 + scf + ret + +.asm_2a278 + and a + ret + +.asm_2a27a + call $627f + jr .asm_2a288 + + ld a, [MapGroup] + ld d, a + ld a, [MapNumber] + ld e, a + ret + +.asm_2a288 + push hl + ld a, [hl] + inc a + jr z, .asm_2a29a + ld a, d + cp [hl] + jr nz, .asm_2a296 + inc hl + ld a, e + cp [hl] + jr z, .asm_2a29d + +.asm_2a296 + pop hl + add hl, bc + jr .asm_2a288 + +.asm_2a29a + pop hl + and a + ret + +.asm_2a29d + pop hl + scf + ret +; 2a2a0 SpecialRoamMons: ; 2a2a0 ; initialize RoamMon structs @@ -35035,7 +35387,47 @@ SpecialRoamMons: ; 2a2a0 ; 2a2ce -INCBIN "baserom.gbc", $2a2ce, $2a30d - $2a2ce +Function2a2ce: ; 2a2ce + push hl + call Function1852 + jr z, .asm_2a30a + call $627f + call RNG + cp $64 + jr nc, .asm_2a30a + and $3 + jr z, .asm_2a30a + dec a + ld hl, RoamMon1MapGroup + ld c, a + ld b, $0 + ld a, $7 + call AddNTimes + ld a, d + cp [hl] + jr nz, .asm_2a30a + inc hl + ld a, e + cp [hl] + jr nz, .asm_2a30a + dec hl + dec hl + dec hl + ld a, [hli] + ld [$d22e], a + ld a, [hl] + ld [CurPartyLevel], a + ld a, $5 + ld [BattleType], a + pop hl + scf + ret + +.asm_2a30a + pop hl + and a + ret +; 2a30d Function2a30d: ; 2a30d @@ -35214,7 +35606,22 @@ Function2a3f6: ; 2a3f6 ret ; 2a40f -INCBIN "baserom.gbc", $2a40f, $2a5e9 - $2a40f +INCBIN "baserom.gbc", $2a40f, $2a4a0 - $2a40f + +Function2a4a0: ; 2a4a0 + and a + jr z, .asm_2a4a9 + cp $fc + jr nc, .asm_2a4a9 + and a + ret + +.asm_2a4a9 + scf + ret +; 2a4ab + +INCBIN "baserom.gbc", $2a4ab, $2a5e9 - $2a4ab WildMons1: ; 0x2a5e9 @@ -52665,9 +53072,9 @@ Function50658: ; 50658 ; 50669 UnknownScript_0x50669: ; 50669 - 3callasm $14, $4658 + 3callasm BANK(Function50658), Function50658 loadfont - 3callasm $14, $467b + 3callasm BANK(Function5067b), Function5067b iffalse UnknownScript_0x50677 loadmovesprites end @@ -52687,7 +53094,7 @@ Function5067b: ; 5067b and 2 jr z, .asm_5069c ld c, 7 - callba Function71c2 + callba ChangeHappiness callba GetPartyNick ld hl, PoisonFaintText call PrintText @@ -52719,17 +53126,85 @@ PoisonWhiteOutText: ; 506b7 Function506bc: ; 506bc - ld hl, $46c8 + ld hl, UnknownScript_0x506c8 call Function31cd ld a, $1 ld [$d0ec], a ret ; 506c8 -INCBIN "baserom.gbc", $506c8, $50730 - $506c8 +UnknownScript_0x506c8: ; 0x506c8 + reloadmappart + special $0035 + 3callasm $03, $4706 + 2writetext UnknownText_0x50726 + closetext + 3callasm BANK(Function506ef), Function506ef + iffalse UnknownScript_0x506e9 + checkbit2 $0011 + iftrue UnknownScript_0x506e5 + battlecheck + startbattle + returnafterbattle + end +; 0x506e5 + +UnknownScript_0x506e5: ; 0x506e5 + 3jump BANK(UnknownScript_0x135eb), UnknownScript_0x135eb +; 0x506e9 +UnknownScript_0x506e9: ; 0x506e9 + 2writetext UnknownText_0x5072b + closetext + loadmovesprites + end +; 0x506ef -Function50730: ; 50730 +Function506ef: ; 506ef + callba Function97cfd + jr nc, .asm_5071e + ld hl, StatusFlags2 + bit 2, [hl] + jr nz, .asm_50712 + ld a, $a + ld hl, $6111 + rst FarCall + ld a, b + and a + jr z, .asm_5071e + ld a, $a + ld hl, $614f + rst FarCall + jr nz, .asm_5071e + jr .asm_50718 + +.asm_50712 + callba Function97d31 + +.asm_50718 + ld a, $1 + ld [ScriptVar], a + ret + +.asm_5071e + xor a + ld [ScriptVar], a + ld [BattleType], a + ret +; 50726 + +UnknownText_0x50726: ; 0x50726 + text_jump UnknownText_0x1c0b03, BANK(UnknownText_0x1c0b03) + db $50 +; 0x5072b + +UnknownText_0x5072b: ; 0x5072b + text_jump UnknownText_0x1c0b1a, BANK(UnknownText_0x1c0b1a) + db $50 +; 0x50730 + + +_Squirtbottle: ; 50730 ld hl, $473c call Function31cd ld a, $1 @@ -52737,28 +53212,73 @@ Function50730: ; 50730 ret ; 5073c -INCBIN "baserom.gbc", $5073c, $50779 - $5073c +UnknownScript_0x5073c: ; 0x5073c + reloadmappart + special $0035 + 3callasm BANK(Function50753), Function50753 + iffalse UnknownScript_0x5074b + 3jump BANK(WateredWeirdTreeScript), WateredWeirdTreeScript +; 0x5074b + +UnknownScript_0x5074b: ; 0x5074b + jumptext UnknownText_0x5074e +; 0x5074e +UnknownText_0x5074e: ; 0x5074e + text_jump UnknownText_0x1c0b3b, BANK(UnknownText_0x1c0b3b) + db $50 +; 0x50753 -Function50779: ; 50779 +Function50753: ; 50753 ld a, [MapGroup] - cp $3 + cp GROUP_ROUTE_36 + jr nz, .asm_50774 + + ld a, [MapNumber] + cp MAP_ROUTE_36 + jr nz, .asm_50774 + + callba Functioncf0d + jr c, .asm_50774 + + ld a, d + cp 23 + jr nz, .asm_50774 + + ld a, $1 + ld [ScriptVar], a + ret + +.asm_50774 + xor a + ld [ScriptVar], a + ret +; 50779 + + +_CardKey: ; 50779 + ld a, [MapGroup] + cp GROUP_RADIO_TOWER_3F jr nz, .asm_507a9 + ld a, [MapNumber] - cp $13 + cp MAP_RADIO_TOWER_3F jr nz, .asm_507a9 + ld a, [PlayerDirection] and $c - cp $4 + cp UP << 2 jr nz, .asm_507a9 + call GetFacingTileCoord ld a, d - cp $12 + cp 18 jr nz, .asm_507a9 ld a, e - cp $6 + cp 6 jr nz, .asm_507a9 - ld hl, $47af + + ld hl, UnknownScript_0x507af call Function31cd ld a, $1 ld [$d0ec], a @@ -52770,23 +53290,29 @@ Function50779: ; 50779 ret ; 507af -INCBIN "baserom.gbc", $507af, $507b4 - $507af +UnknownScript_0x507af: ; 0x507af + loadmovesprites + 3jump BANK(MapRadioTower3FSignpost2Script), MapRadioTower3FSignpost2Script +; 0x507b4 -Function507b4: ; 507b4 +_BasementKey: ; 507b4 ld a, [MapGroup] - cp $3 + cp GROUP_WAREHOUSE_ENTRANCE jr nz, .asm_507db + ld a, [MapNumber] - cp $35 + cp MAP_WAREHOUSE_ENTRANCE jr nz, .asm_507db + call GetFacingTileCoord ld a, d - cp $16 + cp 22 jr nz, .asm_507db ld a, e - cp $a + cp 10 jr nz, .asm_507db + ld hl, $47e1 call Function31cd ld a, $1 @@ -52799,45 +53325,51 @@ Function507b4: ; 507b4 ret ; 507e1 -INCBIN "baserom.gbc", $507e1, $507e6 - $507e1 +UnknownScript_0x507e1: ; 0x507e1 + loadmovesprites + 3jump BANK(MapWarehouseEntranceSignpost0Script), MapWarehouseEntranceSignpost0Script +; 0x507e6 -Function507e6: ; 507e6 +_SacredAsh: ; 507e6 ld a, $0 ld [$d0ec], a - call Function507fb + call CheckAnyFaintedMon ret nc - ld hl, $4821 + + ld hl, UnknownScript_0x50821 call Function31cd ld a, $1 ld [$d0ec], a ret ; 507fb -Function507fb: ; 507fb - ld de, $0030 +CheckAnyFaintedMon: ; 507fb + ld de, PartyMon2 - PartyMon1 ld bc, PartySpecies ld hl, PartyMon1CurHP ld a, [PartyCount] and a ret z -.asm_50809 + +.loop push af push hl ld a, [bc] inc bc - cp $fd - jr z, .asm_50815 + cp EGG + jr z, .next + ld a, [hli] or [hl] jr z, .asm_5081d -.asm_50815 +.next pop hl add hl, de pop af dec a - jr nz, .asm_50809 + jr nz, .loop xor a ret @@ -52848,22 +53380,45 @@ Function507fb: ; 507fb ret ; 50821 -INCBIN "baserom.gbc", $50821, $5084a - $50821 +UnknownScript_0x50821: ; 0x50821 + special $001b + reloadmappart + playsound SFX_WARP_TO + special $002e + special $0031 + special $002e + special $0031 + special $002e + special $0031 + waitbutton + 2writetext UnknownText_0x50845 + playsound SFX_CAUGHT_MON + waitbutton + closetext + loadmovesprites + end +; 0x50845 + +UnknownText_0x50845: ; 0x50845 + text_jump UnknownText_0x1c0b65, BANK(UnknownText_0x1c0b65) + db $50 +; 0x5084a Function5084a: ; 5084a ld a, [CurPartyMon] ld e, a - call $48d5 + call Function508d5 ld a, [CurPartySpecies] ld [CurSpecies], a call GetBaseData + ld a, [MonType] ld hl, PartyMon1Species - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 and a jr z, .asm_5087b ld hl, OTPartyMon1Species - ld bc, $0030 + ld bc, OTPartyMon2 - OTPartyMon1 cp $1 jr z, .asm_5087b ld bc, $0020 @@ -52883,18 +53438,74 @@ Function5084a: ; 5084a ret ; 5088b -INCBIN "baserom.gbc", $5088b, $508d5 - $5088b + +Function5088b: ; 5088b + ld bc, $d018 + jr Function50893 +; 50890 + +Function50890: ; 50890 + ld bc, TempMon + ; fallthrough +; 50893 + +Function50893: ; 50893 + ld hl, TempMonLevel - TempMon + add hl, bc + ld a, [hl] + ld [CurPartyLevel], a + ld hl, TempMonMaxHP - TempMon + add hl, bc + ld d, h + ld e, l + ld hl, TempMonExp + 2 - TempMon + add hl, bc + push bc + ld b, $1 + ld a, $c + call Predef + pop bc + ld hl, TempMonCurHP - TempMon + add hl, bc + ld d, h + ld e, l + ld a, [CurPartySpecies] + cp EGG + jr nz, .asm_508c1 + xor a + ld [de], a + inc de + ld [de], a + jr .asm_508cd + +.asm_508c1 + push bc + ld hl, TempMonMaxHP - TempMon + add hl, bc + ld bc, 2 + call CopyBytes + pop bc + +.asm_508cd + ld hl, TempMonStatus - TempMon + add hl, bc + xor a + ld [hli], a + ld [hl], a + ret +; 508d5 Function508d5: ; 508d5 ld a, [MonType] - and a + and a ; PARTYMON jr z, .asm_508e7 - cp $1 + cp OTPARTYMON jr z, .asm_508ec - cp $2 + cp BOXMON jr z, .asm_508f1 cp $3 jr z, .asm_50900 + ; WILDMON .asm_508e7 ld hl, PartySpecies @@ -52908,7 +53519,7 @@ Function508d5: ; 508d5 ld a, $1 call GetSRAMBank ld hl, $ad11 - call $4905 + call .asm_50905 call CloseSRAM ret @@ -52917,7 +53528,7 @@ Function508d5: ; 508d5 jr .asm_50909 .asm_50905 - ld d, $0 + ld d, 0 add hl, de ld a, [hl] @@ -52926,8 +53537,37 @@ Function508d5: ; 508d5 ret ; 5090d -INCBIN "baserom.gbc", $5090d, $5093a - $5090d +PrintMonTypes: ; 5090d + push hl + call GetBaseData + pop hl + push hl + ld a, [BaseType1] + call .asm_50928 + ld a, [BaseType1] + ld b, a + ld a, [BaseType2] + cp b + pop hl + jr z, .asm_5092b + ld bc, 20 + add hl, bc + +.asm_50928 + ld b, a + jr PrintType + +.asm_5092b + ld a, " " + ld bc, 20 - 3 + add hl, bc + ld [hl], a + inc bc + add hl, bc + ld bc, 5 + jp ByteFill +; 5093a PrintMoveType: ; 5093a ; Print the type of move b at hl. @@ -59826,7 +60466,7 @@ ScriptPointers96c0c: ; 96c0c dbw BANK(UnknownScript_0x96c4d), UnknownScript_0x96c4d dbw BANK(UnknownScript_0x96c34), UnknownScript_0x96c34 dbw BANK(FallIntoMapScript), FallIntoMapScript - dbw $04, $64c8 ; BANK(UnknownScript_0x124c8), UnknownScript_0x124c8 + dbw BANK(UnknownScript_0x124c8), UnknownScript_0x124c8 dbw BANK(UnknownScript_0x96c2f), UnknownScript_0x96c2f dbw BANK(UnknownScript_0x96c4f), UnknownScript_0x96c4f dbw BANK(UnknownScript_0x96c2d), UnknownScript_0x96c2d -- cgit v1.2.3