98h 55m
- 248 The marks' face word, and the flight quads' screen test Two of the long-open drawing items are decoded.
- 247 Collectibles in the air, and before the slide Collectibles in the air are now taken as the original's air move meets them, not within a radius.
- 246 A room's follow camera snaps as the original's switch A room's follow camera now switches as the original's: a camera byte different from the last runs the follow setup, which snaps the camera behind the player at the new height.
- 245 Collectibles met by the walk's probes On the ground a collectible is now taken as the original takes it: the walk's probes meet its box, rather than the player coming within the model's radius plus his own.
- 244 Sizes in set-up order, and the collectibles' box Worklog 243's leftover objects are resolved: an object's size is taken at its own set-up, before the set-up's changes to shared model boxes.
- 243 An object's size and bound as 0x80046570 makes them An object's size (+0x86) and bound cube (+0x78..+0x84) are now computed as the original's 0x80046570, not taken from the model's radius.
- 242 The nearby test, and no flight outside the rooms The nearby test now measures as the original's (0x8006abbc).
- 241 The put-down's way ahead, and the object lists' order The put-down now tests the way ahead as the original does (0x80060810).
- 240 Which rests on which, and GRAB's choice, as the original's The stacking rule (0x8006c7a0) is decoded, ported and checked against the original.
45h 18m
- 239 A launch's room, and the particles' object touches Two more of the flights' "not here" are now done.
- 238 Particle flights meet objects and hurt characters; class 17's enter sound The particle flights now meet objects and characters as the thrown things do.
- 237 The flights' second mark from the stop test, and npc_check's put on the floor The flights' marks are now the original's mark for mark, and npc_check's put no longer leaves its own artifacts.
- 236 The looping sound sources as the original's, and placed sounds panned to the right side The looping sound sources now play as the original's, and every placed sound now pans to the correct side: the port had them mirrored.
24h 48m
- 235 Doors scheduled by their triggers as the original's, level 26's roar synced; the sweep's sounds and flights all the original's in 24 levels Doors now run by their trigger schedules, level 26's roar keeps the original's time, and the npc_check sync is wider.
- 234 The render's rooms, the spinners' and characters' hit callbacks, the flights' marks and splashes, the shared count The hit callbacks beyond the class 10 objects, the render's walk of rooms and portals, the flights' marks and splashes, and the shared sound count now all run in the port as in the original.
1921h 5m
- 233 The class 10 emitters as the original's: their clocks, schedule and callbacks The class 10 objects (think 0x8004e0f4) now run in the port as the original's: their clocks, their schedule and every callback the levels use, each launch checked against the oracle.
- 232 Level 5's robot bite, the cry and the respawn as the original's, frame for frame Level 5's robot biting Angelica, her cry and her respawn now play as the original's, frame for frame, over 400 frames.
- 231 The object set-up's changes to templates, models, places and copies; golf's ball and the guards' bite by the full line test The object set-up's changes to the shared tables, the objects' places and the copies it makes are now the port's too.
- 230 Every body's steps sound as the original's and the frames' events are the set-up's; the sweep compares the sounds Every body's steps now sound as the original's.
- 229 Reptar's fire and chomp match the original frame for frame without lag frames Reptar's fire and chomp, which level 7's doc listed as running twice as fast in the port, match the original frame for frame.
- 228 The cines' characters cast the original's shadows The in-engine cines' characters now cast shadows as the original's do.
- 227 The characters cast the original's shadows The characters now cast the original's shadows (0x8003414c).
- 226 COL floor flags 32 and 64 sink a character as drawn: level 4's deep water COL floor flags 32 and 64 are the sink depth: a character on such a tile is drawn 298 lower per step of depth and gets no shadow.
- 225 The follow camera's stale normal is a stack slot holding an address in the original's memory The follow camera's stale normal is traced to what it holds.
- 224 The box toss's lunge steers, the box rides the hand without a grip, the knock lobs at the aim the babies leave, and the player's root across turns by frame The box toss's Angelica and her knock now play as the original's.
- 223 A state left in a step keeps what the step spent on it, the next gap is taken from the height as the step began, and the oracle can run without lag frames The oracle can run as a console that never takes a third blank over a frame, and with it every playable level's characters match the original's in the height sweep but level 20's lunge start and level 21 after its knock.
- 222 Levels 20 and 21 as the original: Angelica's lunge as state 28 stopped by what it meets, the knock's throw up, idle characters facing the player and walking home, followed things read where they are Levels 20 and 21's characters play as the original's.
- 221 The follow camera's ray test is the original's: objects by their exact test, a start inside a box meeting it; the wall push's divide exact; the shelf's last camera difference is a stale stack normal The follow camera's ray test is the original's: objects by their exact test, a start inside a box meeting it, characters and flags 16 and 8 passed over, the world kept only when nearer on every axis.
- 220 The player turns in place as the original's stand asks it; a half turn keeps its sign; Spike and 34 turn slowly; the oracle's put leaves the floor The player turns where it stands as the original's does.
- 219 The trigger list's other entries act through the pass: speech lines, level 5's doors, level 12's batteries, the signs and sparklers, Cynthia; the cursor starts each level at the head The trigger list's other entries now act through the pass, as the original's enters and leaves do: - the speech lines; - level 5's sliding doors; - level 12's batteries; - the hub's door signs and level 16's sparklers; - level 4's Cynthia.
- 218 The floor query puts a step's lift back with the place; the cry comes from damage, not the health; hole 26's Reptar takes the golf table: the sweep matches in levels 1-7, 9-18 and holes 23-31 Every character in the height sweep now matches the original in levels 1-7, 9-18 and the golf holes 23-31.
- 217 A state's first frame moves by its gap, never its key: the sweep's characters match in 14 levels; level 10's babies hide at the original's spots; guards bite by bit 8 The characters' heights now match the original's frame for frame in the sweep.
- 216 Level 5's robot matches the original for 45 frames: the set up's lift, a root on its keys, the guard's goal out of range, guards bite through modes 5, 1 and 0 Level 5's robot matches the original for 45 frames from Angelica's arrival: its wake, its turn, its hover's height, both bites and the player's health.
- 215 Level 5's robot wakes on the original's frame and turns as the original's: the trigger pass late in the frame, the turn in place held Level 5's robot wakes on the original's frame and turns as the original's does: the trigger pass runs late in the frame, the turn moves nothing, and its animation is held.
3823h 49m
- 214 The trigger list is the original's in every level and its pass runs five a frame; the loader's skipped objects are not made The trigger list is the original's in every level, and its pass runs five a frame as the original's does.
- 213 A guard within reach turns to the player the original's way round, with the turn in place; the trigger pass's five a frame found A guard within reach turns to the player as the original's does, the original's way round and with the turn in place.
- 212 Level 5's ambience proven, the guards' attack test the original's, and the unused hint cards settled Level 5's ambience proven in the oracle, the guards' attack test made the original's, and the unused hint cards settled.
- 211 A jump begun mid-turn turns no more, as the original's A jump begun mid-turn turns no more, as the original's: found while trying to put the crouch over an edge in the oracle.
- 210 Levels 9, 10 and 15's uses are ACTION's touched object, a character in the nearby list by its size The remaining ACTION uses checked by distance are ACTION's touched object now, as the original's (0x800631d8, then the object's +0x54).
- 209 The light walking, the carried thing in the body's box, ACTION's touched object, and running into things as the original Level 12's light proven walking, and with it three engine rules: what a carried thing does to the body's box, when the carried thing is placed, and what ACTION's use takes.
- 208 A jump's crouch keeps its height, as the original's runs no ground step The last guess in the port's code: what the jump's crouch does to the height.
- 207 Only the pie in hand and flying pies are in the world; the ambience runs last; cines move characters in no room Three guesses resolved: which pies the toss shows, when the ambience runs and what level 5's robot line waits for, and where level 13's Angelica starts.
- 206 Level 12's flashlight is the original's shot, and a struck Shadow monster shrinks where it was hit Level 12's flashlight is the original's shot now, with no guessed width, and a struck Shadow monster shrinks where it was hit, as the original's does.
- 205 A pie's hit flashes its mark for a frame as the original's does; COL tile byte +5 is the shade A pie leaves the original's mark where it hits, and COL's tile byte +5 has a name.
- 204 A first frame begun again takes its lift's gap anew, characters of template flag 0x10000000 are put unsettled; settled unknowns out of the docs Two engine rules from 0x80055904 and 0x800452f8, and the docs' unknowns that the last worklogs settled.
- 203 Level 3's brothers wait at height -384 and the step's lift, the toss's pies are the shared ones and its strikes are its own; a level 3 pie matches the original Level 3's pie toss is the original's too, on the same pies as level 16's (worklog 201).
- 202 The tools compare a character's height: the original's has the root's lift in it, the port's place is the floor and the feet; Mr. Friend's posed parts are the original's to the unit The oracle's tools had never compared a character's height.
- 201 Level 16's pies are six objects thrown and flown as the original's, the held player kept to the camera and on his spot; a pie matches the original every frame Level 16's pie toss is the original's: the six pies are objects thrown by the player's own throw, and each flies the original's flight.
- 200 The put-down flies as the original's flight, the port's own flight is gone; frame events, the hierarchy box, the movie frame size and the cine record length named The put-down flies as the original's flight does, and the port's own flight with it is gone.
- 199 Characters held at a slant neither slide nor climb, the cry comes with the damage and runs its 210 frames; Mr. Friend in levels 9 and 14 matches the original every frame A longer sweep (npc_check, 900 frames past each level's opening) found Mr.
- 198 Level 10's hiders hold their hiding pose, standing bodies re-ask their after state, the box toss idle and level 12's lone Tommy match the original; the oracle's tools fixed The NPC sweep (npc_check, every level with characters, past the opening cinematics, the port's characters given the original's state once) now finds no character off the original in levels 2, 3, 4, 5, 6, 7, 10, 11, 12, 15, 16, 18 and 21, but for the frames the original lags.
- 197 Characters step through the shared body; the probe ahead's fall; posts and waits as the original's Characters now step through the player's own body code, as the original's shared body (0x8005a068) steps them.
- 196 Characters run only when scheduled, by script or trigger Characters now run only when the original schedules them.
- 195 A character's hit, its walk and its root as the original's; damage to characters posted The rest of a character's hit and the rest of its body follow the original.
- 194 Followers bite in the original's mode cycle; damage posted a frame late The followers' bite is now the original's mode cycle, and damage to the player arrives a frame late, as the original posts it.
- 193 Characters move as 0x80082264 moves them; the seat's held probe; post cameras The characters now move as the original moves them.
- 192 Rolling throws, level 9's aim, flights after the objects Rolling throws, level 9's aim and the order of a frame's flights now follow the original's code.
- 191 Held standing puts the speed by Standing with the way held puts the speed by.
- 190 The follow camera's heading held to the original's The follow camera's heading is now asserted in six oracle scripts (the hub's run, the playpen, the tap turn, the standing and held jumps, Spike at the wall).
- 189 What this session has answered A triage of the questions this session's work has answered.
- 188 The NPCs step before they ask; Spike held to the original The NPCs now take the original's order as the player does: the animation steps first, its root curve with it, and then the mode asks for what plays from the next step (0x8005a068 runs every character the same way).
- 187 The player's animation tracks held to the original's in every script Every oracle script now also holds the player's animation tracks (+0xa8, four of 12 bytes: state, frame before, frame showing, time left, phase) to the original's on every frame.
- 186 The put-down lets go only at its event The put-down lets go only at its event.
- 185 Root motion across for every state that has it Root motion across is no longer the bump's alone.
- 184 The body's height is the original's, frame by frame The body's height now matches the original's on every frame, root and all.
- 183 Throws fly as the original's flights Throws and lobs now fly as the original's flights.
- 182 The carry and the throw's start in the original's integers The carried thing and its throw now match the original's from the grab to the first thing the throw meets (hub_pick_up_as_the_original, ten flight frames held exact):.
- 181 The parts' matrices are the original's integers The parts' matrices were float: a quaternion to a float matrix, composed down the hierarchy in floats.
- 180 The animator is the original's; the carry holds by the pose as drawn The animator was a reconstruction: each track restarted from its first frame with no memory of the frame before, upper states were a flag, and the pose was a float slerp rebuilt from scratch each frame.
- 179 The timer laid out as the original lays it out Worklog 178 left the timer text at a place read off a screenshot.
- 178 HUD icons at the original's sizes; the overlay drawn in its order The HUD's icons were drawn at guessed sizes.
- 177 The object in focus as the original finds it The object in focus (player +0x1e8) is the original's, and level 10's playpen catch with it.
6124h 33m
- 176 Letting go stops the turn; a hazard hurts once a contact Two of the code's guesses replaced by what the original does, and an eighth script played against it.
- 175 Jumps as the original's, from press to landing Jumps are now the original's from the press to the landing, in all three coordinates while in the air; seven scripts are played against the original, all the same across on every frame.
- 174 The characters as the collision tests see them The other characters now meet the player as the original's collision tests see them, and two more scripts are played against the original.
- 173 The air as the original moves it The air is now the original's: its test of the move (0x80066014) and the move itself (0x8005f1b4 with 0x8005ee78), proved against the original called on the live player, and in play.
- 172 The world's objects in the player's probe The world's objects now meet the player through the original's own probe (worklog 171) in play, and what was left of the float stepping on the ground and in the jump is the original's integers.
- 171 The camera's rows and the objects in the probe The follow camera's rows are now the original's integers, and the ground probe meets objects as the original does: every part proved against the original called on the live player.
- 170 The ground probes as the original runs them The ground move's probes against the height field are now the original's, in its integers (actors::ground), proved against the original called on the live player (examples/ground_check: 2,700 of 2,700 spots, levels 1 and 18, the return, floor delta, wall normal, tangent and slant all the same):.
- 169 The port played against the original The port is now proved against the original by playing both.
- 168 Each cinematic's own lens Each cinematic now has its own lens.
- 167 The pause is a screen of its own The in-game pause is now a screen of its own, as the original's is.
- 166 The Load Game pages' button cubes The Load Game pages now show their button cubes.
- 165 The analog stick's dead zone and reach The analog stick's bytes now become axes as the original's do.
- 164 Slides, one bump, air control and the analog stick Running into things now slides, bumps and stands as the original does, the stick pushes a jump along in the air, and the port reads a DualShock's analog stick.
- 163 A put-down box slides on A put-down box slides on after it comes down.
- 162 No room to put it down; the put-down's own arms Worklog 160 left the put-down's room test (0x80063888) unported, its nearby list having peeked empty, and the drop's landing off by a hand.
- 161 The ground move meets objects by its probes; level 2's ride is Spike's Worklog 159's open item, the port stepping Tommy onto level 3's spinning toy, led to how the original moves the player against objects at all.
- 160 GRAB reaches as the original; a box put down does not stack Box stacking, worklog 158's last unchecked item, run on the oracle in level 6 as Tommy (no character hook; the level then plays as him).
- 159 The elevator stays down; a spinner turns about its own upright Two of worklog 158's guesses checked on the oracle; both were the port's.
- 158 Tipped objects block only where they lie; every level walked The walking campaign (levels_walked) found a port bug: an object turned other than about y blocked the body along an endless strip.
- 157 Levels 9 and 10 walked: characters gone up to by stick The walking campaign (levels_walked) still fell back to putting the player in level 9 (twice) and level 10 (once).
- 156 A cinematic in play leaves the player where it ends The start cinematics leave the player where their last frame poses it (worklog 155); one in play does the same.
- 155 A level starts where its start cinematic leaves the player The oracle, with each level's start cinematic played (the probe's --ret 0x80074958=0 had skipped them), shows the player afterwards where the cinematic's last frame posed it, not at the loader's place: level 13 (22739, -5365, -5925) heading 711, level 15 (44863, 8587, 12281) 2899, level 18 (2333, 779, -926) 1647 (the port started it on the hub's spot), level 20 (25993, 779, 17711), level 21 (4225, 779, 4176) 734, level 2 out of the playpen.
- 154 Level 2 starts out of the playpen, and its fence gap is open Walking level 2 by play found two things that kept a player from it:.
- 153 Every level won walking levels_walked now wins every level with the player walking (stick, Square, R1, Cross) to each place the level tests used to put it, all sixteen in one run (levels 2-6, 9-13, 15-18, 20, 21, about 30 s).
- 152 The body slides along walls; the tests walk where they put the player Port fixes, each found by playing the levels with the stick:.
- 151 The tests turn the player with the stick face set the heading.
- 150 Level 6's boxes are carried up the steps by play Level 6's win put four Reptar boxes in a column by hand.
- 149 Every place the tests put the player is walked to first The level tests put the player where play happens (put, enter_room).
- 148 The characters bob and crouch by their animations too Worklogs 137, 138 and 147 gave the player's body the height its animations' root keys put it at on the ground.
- 147 The ground follows each animation's root curve After a climb the oracle's Tommy goes from -55 over the floor to the floor in about seven frames.
- 146 The whole game, by play Before this, the whole game was covered two ways:.
- 145 A climb's last step is had When the climb animation runs out, the animator moves on to the next state within that step.
- 144 Level 4's brown water checked on the oracle Level 4 was booted as Spike (worklog 142) with the phase poked to 2 (0x800c4cd0).
- 143 Actions play their last frame out Animator::playing said an animation was over once its last frame began.
- 142 Level 4 on the oracle, as Spike Level 4 never finished loading under the probe (worklogs 119, 123, 126).
- 141 Chuckie's climb checked: the player is never scaled Booting the oracle as another character. The probe harness booted every level with Tommy.
- 140 A landing's animation starts the frame after 0x8005a068 steps the body's animation (0x80056834) before the state's handler runs.
- 139 Running jumps and landings as the original's A running jump from the hub, peeked on the oracle (LEFT held, Cross at VSync 2740, y and the table state 0x800e2bf0 each game frame):.
- 138 Running bobs with its root keys The run plays table states 3 and 4 in turn (0x80056484), each with its own root keys.
- 137 Jumps crouch, land and settle as the original's On the oracle, a standing jump from the hub's start (Cross at VSync 2702, the body's y peeked each game frame, with 0x800e2bf0's table state) goes:.
- 136 Climbs checked against the original The setup. On the oracle, Tommy was put at (8945, 779, 12500) in the hub, facing the hub's template 130, a seat whose top is 849 above the floor.
- 135 A climb carries the body on to the ledge Worklog 134 drew a climb as the body's position less the root motion still to come.
- 134 Climbs move by their root keys The ANM key with bit 29 (Key::Lift) is the root's move over its frame, not a lift alone.
- 133 Eyes: a stale binary, and faces carried between screens The user saw characters without eyes again.
- 132 The camera's line test meets objects Worklog 131 took 0x80090554 for a test against the room's polygons.
- 131 The follow camera, from 0x80027304 The port's camera eased its yaw toward the player's heading and its eye toward a point behind him.
- 130 Hole 26's Reptar roars Hole 26 (DB26) has a Reptar, id 9999 (template 8, hierarchy 9).
- 129 The speech call sites, surveyed; a struck goose honks This is the survey that open item 53.1 asked for.
- 128 The piano, the rugs and what floors touch The walk/run handler 0x8005e1f4 does more each frame for the player's own walk (object flag 0x4000 off):.
- 127 What a thrown thing knocks off A thrown thing's flags carry 0x40000.
- 126 Characters in no room are not drawn A check for characters drawn in their bind pose (no part has a rotation), 90 frames into each level, found some.
- 125 Thrown things meet objects 0x80061f88 builds the descriptor of a thing thrown or dropped.
- 124 More sounds where they happen A survey of the port's unplaced play calls against the original.
- 123 Broken objects fly apart 0x8004cdfc breaks an object into its faces.
- 122 The room lookup walks portals 0x8002b660(pos, hint) finds the room a point is in, in three steps:.
- 121 Signs sparkle; a lobster's end 0x80050fd0 throws three sparks:.
- 120 The goose loses feathers The touch callback 0x800511a8 switches on character - 2.
- 119 Grass from the yard: model flights Floor flag 16 (COL tile byte 4 bit 4) throws up a model, 0x80050b5c.
- 118 Landing sounds and the object in focus The landing (state 10, animation 4) has its own entry at 0x8005b624.
- 117 Water splashes, water steps and Reptar's stomp Walking or running over a water floor (COL tile byte 4 bit 0) now throws a splash each frame, as 0x80050770 does: a kind 5 flight, flags 0x10705, sprite 275, half-size 100, speed rand % 150 capped at 100, within 2048 of straight up, spin 3000, bounce 1000, 1000 ms.
- 116 The break burst From 114's list of callers: use callback 2 (0x8004d434, level 15's breakable hiding spots) throws a burst of five (0x80054894) as it hides the object:.
9423h 12m
- 115 Collectibles sparkle; Reptar's sounds in the world Two of 114's and 112's leftovers.
- 114 Effect flights and animated sprites: flames, explosions, debris, splats Delegated to a single agent and checked here.
- 113 Throws let go at their release; animations over the base; speed 30.2 left the animation events that time the grab and the release.
- 112 More sounds in the world 69.1 asked which other sounds the original plays positionally.
- 111 Hub: objects 80 and 518 as the start leaves them Two of 54.2's leftovers, from docs/levels/level-01.md:.
- 110 Spike: getting up, the toy in his mouth, the flinch, the can, the bump Part of 54.1, from docs/levels/level-01.md ("Spike" and "The fetch game").
- 109 Movers and the elevator as the original thinks them The port's moving platforms were a simplification.
- 108 No distance shading or lighting in play Several entries left the "wall shading" open: the depth cue the room renderer's code has, and the lighting of gouraud faces.
- 107 Golf's open questions closed Entry 35's two open items are answered by later work:.
- 106 Golf: the cup camera Part of 35.2: the golf camera's view near the cup (docs/levels/golf.md, "Golf mode 12").
- 105 The camera after a cry 40.3 left the camera after a cry.
- 104 Thrown things bounce; the can comes back 40.1 left the can bouncing back into Tommy.
- 103 The golf ball's collision step With the segment test ported (99), the golf ball's collision step (0x80086ef0, docs/levels/golf.md "Collision step") comes across as documented, in place of the per-axis stand-in.
- 102 NPCs bite only in sight In mode 4 (follow) 0x80084084 tests the way from the NPC to its target with the segment test (0x8002cd7c, ported in 99) before anything else.
- 101 The pie toss's aim marker Level 3's pie toss shows where a pie would go.
- 100 The camera pulled in by the segment test The follow camera (0x80027304) keeps its eye in front of walls by walking the segment from the aim point (the player less 768 in y) to the eye goal with 0x8002cd7c.
- 99 The segment test (vectorwalk, 0x8002cd7c), checked against the original The world segment test 0x8002cd7c ("vectorwalk") is ported as world::collide::segment.
- 98 Mr. Friend waits at home in phase 2 40.2 left the oracle's sight of 46 in level 9's phase 2 unported (docs/levels/level-09.md, "Cine 18 and phase 2").
- 97 Cinematics fade out at their end; the overlay's semi-transparent shapes are drawn Two fixes.
- 96 The fade before a cinematic in a level 95 left the screen's fade before a cinematic posted inside a level (0x80018ad0).
- 95 The song around cinematics; retro_rt's libsnd pause 71 left the fades around cinematics.
- 94 Pie splats A pie's flight ends in a splat (0x8005282c).
- 93 Idle fidgets Standing still now fidgets as the original does (0x800563bc, run each frame from 0x80056834 for the base track):.
- 92 Jumps land; the states' entry sounds Following up 91's open items.
- 91 Animations: logical numbers, the table's states, and the sequencer Worklog 90 left a question: are the port's animation numbers the game's logical ones played as table states? They are, and the oracle shows it.
- 90 Golf: the stance, the club, the aim line and Circle's camera The user saw the golfers in T-pose with no club.
- 89 The box toss arrow and lob Worklog 46 left two stand-ins in levels 20 and 21: a small marker for the arrow over the target, and a lob fitted to land on the baby.
- 88 The boot order and the opening's ending Two reports: the opening played after the demo instead of at boot, and the milk squirt at the end of the opening was missing.
- 87 A waiting runner goes on when the player is ahead Mode 7, a route walker waiting at a flag 2 post (0x800843f0), resumes (0x80083efc) on any of three rules (docs/levels/level-13.md, The waits).
- 86 Climbs the original refuses 0x80058da4, the climb test, returns 0 before looking at the ledge in two cases.
- 85 The cry's voice, the lobster's bite rate; walls do not slide Three items from the triage of open questions (the ones a player would notice most) were checked against the original.
- 84 Faces lost their eyes: model faces drawn in AddPrim's order The user found every character without eyes: on the title, in the opening and in play.
- 83 Rugrats never turns reverb up Whether the game's reverb is heard (82's question): no.
- 82 libsnd ticks are vblanks; 14 sequencer voices Two of the sound's open points, from the sound init (0x8006e7e8) and the VSync callback, now in the port through retro_rt 8dd8b57 (its worklog 17).
- 81 Mini golf played hole by hole; every level now won by play golf_course_is_played plays the nine holes in course order, stroke by stroke as a player does.
- 80 Reptar 2010, Chuckie's Glasses and Circus Angelicus won by play level_7_reptar_2010_reaches_city_hall: room 6 plays cine 85, and the game's ending follows.
- 79 Let There Be Light and Aisle 7 won by play level_12_let_there_be_light_is_won: Triangle at the refrigerator (602) plays cine 67, which puts Spike at a group-0 spot.
- 78 Cookie Race and Grandpa's Teeth won by play level_13_cookie_race_is_won: Tommy into the kitchen (room 20) while Angelica still runs her posts: cine 21.
- 77 Touchdown Tommy's throws fell at his feet; more levels won by play A play test for level 21 found that no throw ever left Tommy's hand.
- 76 Mirrorland, Mr. Friend and Cynthia won by play Three more levels are won in tests through their own rules, with the player put in place and the pad driving him.
- 75 The sound engine moves to retro_rt's libsnd The generic half of the port's sound now lives in retro_rt as rrt::kit::libsnd (retro_rt worklog 16, commit 4a945de, pushed as 3eb434d), and the port is pinned to it.
- 74 Gold Rush and Egg Hunt won by walking onto the pickups Two play tests win levels through the game's own rules, not their ending cinematics.
- 73 retro_rt 5d20233: the program driven tick by tick in tests retro_rt gained Tick::scripted and Tick::exiting (its worklog 15, commit 9c3f9d6, pushed as 5d20233), and the port is re-pinned to it.
- 72 Nine song banks crashed their levels; the whole game as a test A test that plays the campaign through the app's own flow found a crash that every earlier test missed.
- 71 Room songs crossfade A room's song now crossfades as 0x8006efcc does (docs/engine/sound.md, A room's song).
- 70 Triage: open questions answered by later work Questions still listed as open whose answer is already in the port, with where:.
- 69 Positional sound: the falloff, the pan and Mono World sounds now follow 0x8006f644 (docs/engine/front-end.md, The positional sounds).
- 68 Level 11: a standing jump never eats a bone 0x80060f1c, the jump launch, switches on the state less 3: - case 0, the standing jump, sets 0x800c4bc4 = 1; - case 12 sets 2; - the moving jumps (25, 35) set 0, or 64 when fast.
- 67 Golf round: the Loading Hole card and player 1's banner Between holes, an activity mini-golf round now follows golf.md's 0x80096a30 steps 4, 6.4 and 8.
- 66 Audio settings kept: restored at boot, kept by a new game The Audio menu's settings now behave as the original's (docs/engine/front-end.md).
- 65 Level 5's beam reflects off the first wall Angelica's zap in level 5 now reflects off the first wall it hits, with sound 70, and stops at the second, as 0x80090554 / 0x8007666c do (docs/levels/level-05.md).
- 64 L1, L2 and R2 look aside The camera's look buttons are ported from 0x8002729c, 0x800247fc and 0x8001e838 (docs/engine/gameplay.md, The look buttons).
- 63 The port restructured into idiomatic Rust The port's layout followed the original's call structure: level*.rs flat in the crate root, a single Game file of 2500 lines, tuples and bare numbers.
- 62 Mini-golf for one to four players Multiplayer mini-golf is ported from the golf.md activity section, which an agent traced and checked in the oracle.
- 61 Save and load pages, pause and title The card pages are ported from memory-card.md "Saving and loading from the pause", which an agent traced and checked in the oracle.
- 60 Title: the Audio menu The title's Audio menu is ported, from the front-end.md section an agent traced and checked in the oracle.
- 59 Audit fixes: board to 7, no-damage levels, flights, NPC walls, activity golf 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.
- 58 Effect meshes: the beam and the light 0x800243c4 draws small meshes kept in the executable.
- 57 Doors: class 8 swinging Class 8 doors are now Doors with a Swing, from docs/engine/doors.md "Class 8".
- 56 Doors: hinged and sliding Class 3 and class 4 doors are now ported, from docs/engine/doors.md (traced and checked in the oracle).
- 55 Speech: the NPC lines The NPC speech sites from the call-site survey are now wired.
- 54 Level 1: the hub's doors, signs and Spike The hub is ported from docs/levels/level-01.md.
- 53 Speech: XA lines, talkers, ambience Spoken lines are now ported.
- 52 Level 16, training, playable Training is ported: rugrats::level16 plus rugrats::training, the message system that level 1 shares.
- 51 Level 7 and the ending A delegated map, docs/levels/level-07.md, traced Reptar 2010 and the end of the game, walking the whole route to City Hall in the oracle.
- 50 Level 18 playable: Egg Hunt A delegated map, docs/levels/level-18.md, traced Egg Hunt and checked it in the oracle.
- 49 Level 13 playable: Cookie Race A delegated map, docs/levels/level-13.md, traced Cookie Race and checked it in the oracle.
- 48 Level 17 playable: Gold Rush A delegated map, docs/levels/level-17.md, traced Gold Rush and checked it in the oracle.
- 47 Level 21 playable: Touchdown Tommy A delegated map, docs/levels/level-21.md, traced Touchdown Tommy and checked it in the oracle.
- 46 Level 20 playable: No More Cookies A delegated map, docs/levels/level-20.md, traced No More Cookies and checked it in the oracle.
- 45 Levels 14 and 15, the hub's gates, docs/levels Two more delegated maps, and the level pages moved to their own folder.
- 44 Level 12 playable: the flashlight A fourteenth delegated map, docs/engine/level-12.md, traced Let There Be Light and checked it in the oracle.
- 43 Slopes read as walls; level 11's rings 2 and 3 Scripting level 11's second ring found two bugs that every level had.
- 42 Level 11 playable: three rings A twelfth delegated map, docs/engine/level-11.md, traced Circus Angelicus and checked each ring in the oracle.
- 41 Level 10 playable: hide and seek An eleventh delegated map, docs/engine/level-10.md, traced Chuckie's Glasses and checked it in the oracle.
- 40 Level 9 playable: Mr. Friend A tenth delegated map, docs/engine/level-09.md, traced The Mysterious Mr.
- 39 Level 6 playable, and climbing A ninth delegated map, docs/engine/level-06.md, traced Toy Palace and checked it in the oracle.
- 38 Level 5 playable: the remote, the robots, the float An eighth delegated map, docs/engine/level-05.md, traced Visitors from Outer Space and checked it in the oracle.
- 37 Level 4 playable, spawn groups, movers, loading screens A seventh delegated map, docs/engine/level-04.md, traced 7 Voyages of Cynthia and checked it in the oracle.
- 36 The puzzle board and the result screens A sixth delegated map, docs/engine/screens.md, traced the screens that run with the level frozen and checked them in the oracle with screenshots.
- 35 Mini golf, room cameras, hazards and the level timer A fifth delegated map, docs/engine/golf.md, traced the nine holes and checked them in the oracle.
- 34 Finishing levels, the cry, and level 3 playable A fourth delegated map, docs/engine/level-03.md, traced Incident on Aisle 7 to its end and checked it in the oracle with a scratch probe.
- 33 The HUD: health meter and gauges as sprites The level's HUD sprites now draw where the port showed numbers.
- 32 Level 2 playable: geese, the Spike chase, the shuffleboard, the win A third delegated map, docs/engine/level-02.md, traced Grandpa's Teeth to its end.
- 31 Pause menu, collectibles, progress and saving The level is now something to play and come back to.
- 30 Hint cards, carrying and throwing A second delegated map, docs/engine/objectives.md, covers carrying, flights, use callbacks, collectibles, progress, level 2's script, hint cards, the HUD and the pause menu.
- 29 Characters, cinematics between levels, room music Three more pieces of a playable game.
- 28 Play: the hub and levels, Tommy running, jumping and colliding The user's goal is a playable port.
- 27 Collision: the COL height field and its query, pinned to the original Work toward a playable port (the user's goal).
- 26 Music and menu effects: a software SPU playing libsnd's songs The title had no music.
- 25 Two-sided model faces, and hunting the trash can The user reported that Chuckie vanishes for a frame when he crashes into the trash can.
- 24 rugrats-re on rrt-dis, and XA through rrt-kit's Player retro_rt now has rrt-dis (disassembly, analysis, a lifting IR and the decompiler that started here) and rrt-kit's xa::Player, which is the drive drop rule from worklog 22 moved upstream.
- 23 Faces, the milk spray and the lens splash in the opening The opening had no moving faces, and the user saw no milk from Tommy's bottle.
- 22 The opening's sound: the drive drops the repeated audio sectors The opening's audio was badly wrong in the port.
213h 21m
- 21 The title's peeking babies, in step with the original's rand The two babies on the title are character objects.
- 20 The title menu answers the pad, and the attract cycle runs The title menu's loop is ported a frame at a time:.
- 19 The title's sign and buttons, from the original's cameras The title now matches the oracle's picture apart from the babies, who were not on screen in the compared frame.
- 18 The title screen begins: text, the backdrop, and main's chooser Main's mode chooser (0x80030158) answers where the opening plays with a pad in.
- 17 Memory cards as folders, the save file byte for byte The memory card is a folder per slot, as in the other ports: work/memcard/slot1 (always in) and slot2 (when the folder exists), each holding the game's one card file, BASLUS-00650Games , byte for byte.
- 16 The oracle takes input: SIO0 and the BIOS interrupt queues The game reads its pads through libpad's direct driver, so the oracle's BIOS pad buffers never reached it.
- 15 The port plays the opening cinematic After the logos the port now plays the opening (cine 0 on database 22): rugrats::cine reads OPEN.BIN whole the way the movies are read, keeps the stream's schedule (a data sector every 5 sectors at double speed, so 30 frames a second), plays the XA that the filter picks (file 1, channel 1), draws the rooms into a 4:3 target with the renderer, and moves the objects each frame.
- 14 The opening cinematic's frame matches the oracle's: camera, props, characters The cinematic stream's frame records are read: a camera (position, and a quaternion packed as four 13-bit fields over two words whose top 6 bits count the actors and poses), then 24-byte actors (single-model objects: quaternion, position, id) and poses (hierarchy objects: position, id, and one 8-byte quaternion key a channel).
- 13 Animation: quaternion keys by channel, pinned to the original's matrix A database's animations are three files.
- 12 Characters assembled: hierarchies (HIE) as depth-first skeletons The characters stand up in the port's viewer (rugrats-viewer 22 --hier): Chuckie, Angelica and the rest of DB22's cast, each assembled from its parts at rest.
- 11 Models: the MOD format, all 6286 parsed, drawn in the viewer A database's models are its MOD file: 0xc0de0001, a count, a table of offsets (the high 11 bits of each are the model's own index), and models with a 32-byte header pointing at vertices (8 bytes: s16 x, y, z, w), a colour palette, and face sections.
- 10 Rooms drawn natively: blob meshes, the texture table, room centres, rugrats-viewer rugrats-viewer 22 flies around database 22, the Pickles' house of the opening cinematic: staircase, hallway, the blue carpet, doors, the painted walls with their baked shading, all from the disc's data and drawn with wgpu.
- 9 The oracle plays the opening cinematic: a rewound CD FIFO and a lost load delay The opening cinematic now plays in the oracle: database 22's living room with Grandpa, Phil and Lil, Chuckie, Spike and Angelica, 954535 primitives over 3000 frames.
- 8 LEVELnn.BIN read the way the room loader reads it The room loader (load_rooms, 0x8002a208) walks a LEVEL file as five counted sections: 56-byte records (none in any file), 48-byte quads of four (s16 x, y, z, u16 flags) corners and 16 more bytes, 24-byte records (only LEVEL04's 63), 112-byte room records, then per room a byte list, per room a section of geometry blobs, and a final run of 12-byte records.
- 7 After the logos: the opening is an in-engine cinematic, and the oracle renders it empty After the n-Space logo, main reaches "Opening Cine Init" (0x8008f078), which loads database 22 (files 521, 456, 488, 264, 392, 424: textures, rooms, collision, models, hierarchy, loops) and the menu's eye and mouth TIMs, and plays an in-engine cinematic through play_cine (0x8007424c, cinemat.c).
- 6 The logo movies play in the port: STR, BS version 3, XA sound, the input module After the legal screen, main plays three movies, THQ, Nickelodeon and n-Space (movie_play(0..2, skippable), 0x8008b448), and the port now does too: frames decoded natively, the XA soundtrack through retro_rt's audio output, a button press skipping to the next logo.
- 5 The port begins: rugrats on retro_rt shows the legal screen, pixel for pixel rugrats is the port's program: retro_rt's loop at the NTSC rate, the player's disc read through the game's own file table, and the boot as far as it is ported.
- 4 A model of the CD-ROM drive: libcd and the opening stream run natively in the oracle The oracle's libcd hooks of #3 are gone: rugrats-hle now has a model of the drive behind 0x1f801800-0x1f801803 (cdrom.rs), and libcd runs as it does on the console.
- 3 The original boots in a harness on rrt-emu, to the legal screen rugrats-hle runs the unmodified SLUS_006.50 in retro_rt's R3000A (rrt::emu) for 600 frames in 4.8 seconds and reaches the opening cinematic.
- 2 The image puts its rodata between hand-written asm and the compiled code SLUS_006.50's text image is laid out in three parts, not hwtr's code then data:.
- 1 The disc, and the file table the game reads it through The US disc (SLUS-00650, THQ, mastered 1998-11-01) is one Mode 2 track of 258684 sectors with no CD-DA.