In the July 12th NTSC-J prototype of PaRappa the Rapper 2, a press is judged by which slot of a fixed grid it lands in, not by its distance from the teacher's note. The line clock converts a vsync count to ticks as count × 96 × tempo / 3600, so with 60 vsyncs a second and tempo in beats per minute a beat is 96 ticks (computed). Each press is stored with its time less the line's start time (ofs_frame); on_th_make adds that start modulo 96, plus 96, and divides by 4, which puts the press in the 4-tick slot of its own time modulo 96 (computed). thnum_get reads the slot in a 24-bit pattern that repeats every beat and numbers its runs of equal bits, so a press in a run of 1s gets an even th_num and a press in a run of 0s an odd one. For the main grid (CK_TH_NORMAL, 0x00e79e79) the 1s cover ticks 92 to 11, 20 to 35, 44 to 59, and 68 to 83 of each beat, that is from 4 ticks before to 11 ticks after each multiple of 24 (a quarter of the beat), and the 0s cover the 8 ticks from 12 to 19 after it (computed). In the first of a line's three checks, exh_normal_add counts each press in a 1-run whose key the teacher's line uses (otehon_all; while the rank is Cool, any key, and in one-button play, triangle) and exh_normal_sub takes one off for each such press in a 0-run, each weighted 48/16, that is ±3 (computed); a press anywhere in a run scores the same. The same check's imitation test (exh_mane, weight 8/16) runs over every pair of a teacher's note and a press and counts each pair with the same th_num and, outside one-button play, the same key, so one press can count once for each note in its run; it scores 2 × that count − presses; it runs again on a late grid (CK_TH_LATE, 0x00f3cf3c, with the teacher's notes moved 2 slots later) and keeps the better result. The third check uses a swing grid (CK_TH_HANE, 0x00c1cc1c). A line's score (now_score) is the sum of the three checks' totals, and in the game play step (PSTEP_GAME) it is then halved as (now_score + 1) / 2 in one-button play (PLAY_TYPE_ONE) and halved that way again in the easy table mode (PLAY_TABLE_EASY), so twice when both apply; a check's total is 0 when its all-keys test fails and −100 when the presses reach the line's length in 24-tick steps, rounded up, plus 3 (exh_renda_out). In the hook play step (PSTEP_HOOK) a line is scored by an imitation test alone (manemane_check), on the main grid. | src/main/scrctrl.c L3990–3991src/main/scrctrl.c L2141–2145src/main/scrctrl.c L2765–2787src/main/scrctrl.c L136src/main/scrctrl.c L2222–2247src/main/scrctrl.c L2253–2312src/main/scrctrl.c L2317–2343src/main/scrctrl.c L99–110src/main/scrctrl.c L2583–2684src/main/scrctrl.c L2790–2856src/main/scrctrl.c L3077–3087src/main/scrctrl.c L131–134 | Code |
In the July 12th NTSC-J prototype of PaRappa the Rapper 2, the rank is one of 14 levels (RANK_LEVEL, RLVL_COOL 0 to RLVL_END2 13), and RANK_LEVEL2DISP_LEVEL shows levels 0 and 1 as Cool, 2 to 4 as Good, 5 to 7 as Bad, 8 to 10 as Awful, and 11 to 13 as none (DLVL_MAX). The stage's score data sets each exam's type (SCRRJ_EXAM). At an exam other than hook, VS, cancel, and bonus, the player's line score (now_score) is set against a target (exam_coolP): the line's coolup from the stage data plus what the teacher's own presses score when run through the same checks (ExamScoreCheckSame, which scores a copy and returns its unhalved sum, so in one-button play or the easy table mode a halved line score meets a target whose teacher part isn't halved), a part that is a flat 150 while the rank is at level 0 or 1, and 11111 when there is no line. Under a Cool exam a score below the target steps the rank down (levelDownRank) and any other steps it up (levelUpRank). Under a Good exam a score at or above the target steps up, a score of 0 or less steps down, and a score between them moves level 2 (RLVL_GOOD_COOL) down to Good, leaves Good alone, and steps any other level up. Under a Bad or Awful exam a score above 0 steps up and any other steps down. A step moves to the next level along the tables, which put an in-between level beside each rank: up from Good (3) is level 2, still shown Good, then Cool (0); down from Good is level 4, then Bad (6); down from Awful (9) is level 10 and then RLVL_END1 (12). So a shown rank changes after two steps the same way, and a step back from an in-between level returns to the plain rank (computed from the tables). In one-button play (PLAY_TYPE_ONE) or the easy table mode (PLAY_TABLE_EASY), a Good exam that would leave the rank at level 0, 1, or 2 sets it to Good (3), so the rank can't reach Cool there. | include/main/etc.h L246–259src/main/scrctrl.c L453–464src/main/scrctrl.c L1352–1353src/main/scrctrl.c L3067–3087src/main/scrctrl.c L2873–2908src/main/scrctrl.c L2859–2871src/main/scrctrl.c L3201–3259src/main/scrctrl.c L2922–2968src/main/scrctrl.c L3487–3491 | Code |
In the July 12th NTSC-J prototype of PaRappa the Rapper 2, while the rank is at level 0 or 1 (RLVL_COOL, RLVL_COOL_GOOD, both shown as Cool), a line is scored three ways differently. Every key the game maps (KcAll: triangle, circle, cross, square, L1, and R1 by GetIndex2KeyCode) counts as one the teacher's line uses (otehon_all), where otherwise only the keys in the teacher's line count, so on-grid presses of any of them score and exh_nombar_sub, which takes points for keys outside the teacher's, finds none (computed); in one-button play (PLAY_TYPE_ONE) the set is triangle alone either way. Five checks score 0: the all-keys test (EXH_ALLKEY_OUT), the imitation test (EXH_MANE), and three that compare the presses with the teacher's notes (EXH_MBAR_KEY_OUT and EXH_MBAR_TIME_OUT, the first press's key and slot run against the first note's, and EXH_MBAR_NUM_OUT, the count of presses against the count of notes). And the teacher's part of the target is a flat 150 (ExamScoreCheckSame), not the teacher's notes scored. The atlas reads this as Cool's freestyle: following the teacher is no longer checked, and off-grid presses and mashing (exh_renda_out) still cost. Under a Good exam the rank gets to Cool after two lines in a row that each score at least the target, the line's coolup plus the teacher's notes scored (computed: Good to level 2, then 0), except in one-button play or the easy table mode, which hold it at Good; under a Cool exam a line below coolup + 150 steps it down, and two in a row put it back at Good (computed). | src/main/scrctrl.c L2773–2787include/main/scrctrl.h L81–88src/main/etc.c L500–503src/main/scrctrl.c L2345–2357src/main/scrctrl.c L2383–2420src/main/scrctrl.c L2831–2844src/main/scrctrl.c L2868–2871src/main/scrctrl.c L3209–3247src/main/scrctrl.c L2922–2951 | Code |