Entry 59

Audit fixes: board to 7, no-damage levels, flights, NPC walls, activity golf

Filescrates/rugrats/src/game.rs crates/rugrats/src/npc.rs crates/rugrats/src/golf.rs crates/rugrats/src/screens.rs crates/rugrats/src/main.rs crates/rugrats/src/level20.rs

An audit compared every docs/levels "For the port" list with the code and ranked the gaps: A blocks progress, B is wrong while playing, C is cosmetic. Fixed from it:

  • A1 (the board): once +0x30 bit 512 is set (Reptar 2010 begun), the board's use is SwitchEpisode(7) (0x8004d3f0). Before, a player who left level 7 had no way back and could not finish the game.
  • B1 (no damage): Damage is dropped in levels 1, 11, 17 and 23-31 (0x800780d8). Game::no_damage and Player::falls_hurt are now set by level. Verified: standing on golf's template 408 in DB25 no longer hurts.
  • B2 (flights): a thrown or dropped thing's step into a wall or a higher column is taken back, and the thing falls where it was (0x80060810). Things also land on resting things' tops (stacking, 0x8006c7a0). Verified: level 6's box thrown at the -4736 ledge now falls to the floor, where before it went onto the platform.
  • B5/B6 (buttons):
    • R1 puts the camera behind the player (0x80026ddc).
    • Select's restart menu no longer opens in activity play.
    • L1 (0x8002729c's animated tilt) is not ported.
  • B7 (pause): the pause shows the counters: pieces with model 292 at (-192, 76), bars with 291 at (192, 76) (screenshot).
  • B10 (NPCs and objects): npc::World now carries the frame's object boxes. A chaser's step deeper into one is taken back; route walkers in Posts/Wait mode are exempt. Without that exemption level 13's race stuck at post 37; with it the race ends at cine 20 as before. Level 9's Mr. Friend still reaches Tommy.
  • B13 (levels 20-21): Angelica follows the box itself, through Target::Point, and the lunge distance is measured to the box.
  • B14 (Hole Five): the ball-reset zone (template 1264, 0x80081758).
  • B4 (activity golf):
    • In activity play, holing ends the turn with no par judgement, cry or record; the strokes go into main's golf_scores.
    • Page::Scores is the score card (0x80095768 layout, strings 123-125, the globals 0x800c46d4-0x800c4704; screenshot). It is shown before each next hole and at the round's end, then the Activities menu follows.
Still unknown
  1. Mini-golf's player count and face picks (0x80096134) are not ported, so the round is one player, Tommy.
    closed by #70
  2. B3 (level 6's box route): stacking and the wall test are in, but the route has not been played through.
  3. B8 (the save record menu), B9 (the Audio menu), B11 (level 5's float cameras) and B12 (level 6's moving toys) are still to do.
    closed by #70