diff options
Diffstat (limited to 'engine/prof_oaks_pc.asm')
-rwxr-xr-x | engine/prof_oaks_pc.asm | 219 |
1 files changed, 219 insertions, 0 deletions
diff --git a/engine/prof_oaks_pc.asm b/engine/prof_oaks_pc.asm new file mode 100755 index 000000000..05ff2b691 --- /dev/null +++ b/engine/prof_oaks_pc.asm @@ -0,0 +1,219 @@ + +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 "@" |