ref: dc4357b7fa120c47c1af9937eb809c1cc7ddbfd6
dir: /engine/prof_oaks_pc.asm/
ProfOaksPC: ; 0x265d3 ld hl, OakPCText1 call MenuTextBox call YesNoBox jr c, .shutdown call ProfOaksPCBoot ; player chose "yes"? .shutdown ld hl, OakPCText4 call PrintText call JoyWaitAorB call ExitMenu ret ProfOaksPCBoot ; 0x265ee ld hl, OakPCText2 call PrintText call Rate call PlaySFX ; sfx loaded by previous Rate function call call JoyWaitAorB call WaitSFX ret ProfOaksPCRating: ; 0x26601 call Rate push de ld de, MUSIC_NONE call PlayMusic pop de call PlaySFX call JoyWaitAorB call WaitSFX ret Rate: ; 0x26616 ; calculate Seen/Owned ld hl, PokedexSeen ld b, EndPokedexSeen - PokedexSeen call CountSetBits ld [wd002], a ld hl, PokedexCaught ld b, EndPokedexCaught - PokedexCaught call CountSetBits ld [wd003], a ; print appropriate rating call .UpdateRatingBuffers ld hl, OakPCText3 call PrintText call JoyWaitAorB ld a, [wd003] ld hl, OakRatings call FindOakRating push de call PrintText pop de ret .UpdateRatingBuffers: ; 0x26647 ld hl, StringBuffer3 ld de, wd002 call .UpdateRatingBuffer ld hl, StringBuffer4 ld de, wd003 call .UpdateRatingBuffer ret .UpdateRatingBuffer: ; 0x2665a push hl ld a, "@" ld bc, ITEM_NAME_LENGTH call ByteFill pop hl lb bc, PRINTNUM_RIGHTALIGN | 1, 3 call PrintNum ret 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 rept 4 inc hl endr jr .loop .match ld a, [hli] ld e, a ld a, [hli] ld d, a ld a, [hli] ld h, [hl] ld l, a ret OakRatings: ; 0x2667f oakrating: MACRO db \1 dw \2, \3 endm ; if you caught at most this many, play this sound, load this text oakrating 9, SFX_DEX_FANFARE_LESS_THAN_20, OakRating01 oakrating 19, SFX_DEX_FANFARE_LESS_THAN_20, OakRating02 oakrating 34, SFX_DEX_FANFARE_20_49, OakRating03 oakrating 49, SFX_DEX_FANFARE_20_49, OakRating04 oakrating 64, SFX_DEX_FANFARE_50_79, OakRating05 oakrating 79, SFX_DEX_FANFARE_50_79, OakRating06 oakrating 94, SFX_DEX_FANFARE_80_109, OakRating07 oakrating 109, SFX_DEX_FANFARE_80_109, OakRating08 oakrating 124, SFX_CAUGHT_MON, OakRating09 oakrating 139, SFX_CAUGHT_MON, OakRating10 oakrating 154, SFX_DEX_FANFARE_140_169, OakRating11 oakrating 169, SFX_DEX_FANFARE_140_169, OakRating12 oakrating 184, SFX_DEX_FANFARE_170_199, OakRating13 oakrating 199, SFX_DEX_FANFARE_170_199, OakRating14 oakrating 214, SFX_DEX_FANFARE_200_229, OakRating15 oakrating 229, SFX_DEX_FANFARE_200_229, OakRating16 oakrating 239, SFX_DEX_FANFARE_230_PLUS, OakRating17 oakrating 248, SFX_DEX_FANFARE_230_PLUS, OakRating18 oakrating 255, SFX_DEX_FANFARE_230_PLUS, OakRating19 OakPCText1: ; 0x266de text_jump _OakPCText1 db "@" OakPCText2: ; 0x266e3 text_jump _OakPCText2 db "@" OakPCText3: ; 0x266e8 text_jump _OakPCText3 db "@" OakRating01: text_jump _OakRating01 db "@" OakRating02: text_jump _OakRating02 db "@" OakRating03: text_jump _OakRating03 db "@" OakRating04: text_jump _OakRating04 db "@" OakRating05: text_jump _OakRating05 db "@" OakRating06: text_jump _OakRating06 db "@" OakRating07: text_jump _OakRating07 db "@" OakRating08: text_jump _OakRating08 db "@" OakRating09: text_jump _OakRating09 db "@" OakRating10: text_jump _OakRating10 db "@" OakRating11: text_jump _OakRating11 db "@" OakRating12: text_jump _OakRating12 db "@" OakRating13: text_jump _OakRating13 db "@" OakRating14: text_jump _OakRating14 db "@" OakRating15: text_jump _OakRating15 db "@" OakRating16: text_jump _OakRating16 db "@" OakRating17: text_jump _OakRating17 db "@" OakRating18: text_jump _OakRating18 db "@" OakRating19: text_jump _OakRating19 db "@" OakPCText4: ; 0x2674c text_jump _OakPCText4 db "@"