Open questions
67 of 360 entries end with something unresolved. Each is quoted as its entry left it.
-
- (play) [[259]]: a later volume's image played without Infection's disc falls back to
work/, andcrate::dieends the process — a player who owns only a later disc. - [[4]]: the EE encodings the game never uses (the debug and performance-counter moves,rsqrt.s,max.s/min.s,vrnext/vrget, thepmfhlvariants) are decoded from the manuals only. - [[5]]: whether any requested name can miss its category table (the walk would pass the nameless terminator); the game relies on never asking. - [[5]]: the twos16fields (+0x24,+0x26) of asceneFileListentry. - [[6]]: the four-byte member missing fromccChunkIndex, and the 18 other classes' unexplained gaps. - [[242]]: what category 19 (a loose scene file outside the archive) was for; nothing in the code says. - [[15]]: what modes 1 and 0x1000 do (docs/engine/overview.md Unknown). - [[15]]: the full list of tasks each mode starts and their priorities; the port orders each ported mode's tasks itself (docs/engine/overview.md Unknown). - [[15]]:ccSystem::Ctrl's other branches (screen-mode changes, the flags at+0xbd4/+0xbd5); only the vibration countdown was read ([[232]]). - [[69]]: the load before F0 (ccLoadResourceFL) takes no frames in the port (docs/engine/event-vm.md Unknown). - [[82]]: the load time between the mode change and the desktop's set-up (docs/engine/event-vm.md Unknown). - [[62]]: a DualShock 2's real values at full diagonals: recalled, not measured. - [[62]]: half-way diagonals read slightly stronger, so the analogue walk may feel different; not measured. - [[232]]: the rumble has not been felt on a real pad (gilrs needs the pad's force-feedback node). - [[232]]: the pad's connection states (ccPad::Ctrl's other states,scePadInfoAct) are not modelled; a connected pad is a ready DualShock. - [[63]]: piney-eemu: subclass overrides of load, store and set do not reach the interpreter; exec overrides run slowly. - [[63]]: piney-eemu's RAM cannot grow past 32 MB; its registers are live views. - [[63]]: iopemu's machine stays oneemu.py. - [[82]]: a replayed story start lacks the earlier experience and items; its mails and posts are asccEventFlagSetleaves them. - [[82]]:story:12starts on the desktop where the game's first block would run in the top page's set-up. - [[148]]: Kite starts event 29's dungeon session as a ghost (dead 4); possibly the story start's doing. - [[149]]: a mid-dungeon story start leaves the room undrawn in its picture. - [[86]]: the unported-default counts say which defaults ran, not how often. - [[176]]: the host-call check plays blocks in isolation; a method reached only through earlier state may not show. - [[125]]:stream_shothas no party members (the field'sStreamMenudraws them). - [[161]]: decoding sd9 a second time after sd4 makes the interpreter'sDecodeSetupread a bad pointer (test order; docs/engine/dungeon.md Unknown). - [[181]]: whether xfer's ref and content passes misname anything beyond the tables they were built for. - [[182]]: a reader that swallows its error (.ok()?) would not show in smoke runs. - [[198]]: voldiff's "recompiled" rule is a heuristic: a changed field or a swapped comparison passes. - [[198]]: some OUT and QUA "changed" menus call nothing Infection's do, which points at misplaced carried names; to check inxfer.py. - [[202]], [[204]], [[206]]: finders for the remaining carry misses: Mutation 5, Outbreak 23, Quarantine 28 after [[206]]. - [[204]]: readers that take an Infection constant through a shape the scan does not see; not surveyed. - [[219]]: the other harnesses still name some Infection addresses of their own, moved tova()as each runs on a later volume. - [[271]]: whypiney-gen symsdid not carryFunc_str7100,Func_str8800andFunc_str0300to Mutation; a guess: jump-table relocations. - [[233]]: the game's log lines (stderr) do not reach the in-game console, and the console has no horizontal scroll. - [[241]]: nothing records from the window, and there is no key to record live play. - [[247]]: the window's switch from the launcher to a part is checked headless only. - [[255]]: how long an image's first start takes on a slow drive. - [[258]]: the default build at~/.local/share/piney/game, at data version 3, has to be remade. - [[259]]: whetherroot()(the repository path, compiled in) is reached by a build run on another machine. - [[262]]: the dialogue scan misses lines under four words, and text inside the games' textures. - [[262]]: the history's blobs are not scanned; the history will not be published as it is (plans/release.md). - [[263]]: how the pilot should find a Data Bug's protect break for Data Drain. - [[276]]: how the autopilot's run compares in time with a player's.
No. 282 — Open questions after the triage: the disc, the formats, the engine core and the tools
- (play) [[259]]: a later volume's image played without Infection's disc falls back to
-
- (play) [[38]], [[39]], [[72]]: the field water's run-time textures and scroll, and the clouds' blending, are approximations (docs/engine/field.md, field-walk.md) — every field with water or clouds. - (play) [[97]]: water 0's frame-buffer copy is the whole frame, not the game's 128 x 128 point-sampled one (docs/engine/field-game.md, town02.md) — the towns' water. - (play) [[157]], [[161]]:
EntryObject's palettes for the lakes' statues and flowers whenGetBGis not 0 are not ported (docs/engine/dungeon.md) — lake dungeons by evening and night. - (play) [[158]]:DUNGEON.fogis not zeroed at the game over's television, and the squeeze moves the whole finished frame, not only whatsysLayer's view draws — a game over, in a dungeon most. - (play) [[68]]: the white flash of the gate menu in town is dropped (R::Flashincrates/piney-game/src/world.rs) — leaving a town through the gate. - [[17]]: the DMA order of the matrix, material and model packets (docs/engine/render.md Unknown). - [[17]]: the full bone and skin packet layout, and which of theb/mprogram families is skin (docs/engine/render.md Unknown). - [[17]]: whatview + 0x110holds, and themc04b/mc04mvariants (docs/engine/render.md Unknown). - [[244]]: the port's ST ignores the1 + S * 2^-23factor, 3e-5 of a repeat, below a texel. - [[26]]: textures defined in other files (#entries) show white in the viewer; how#entries resolve is not written down. - [[27]]: the 15 morph-target-shaped models that noF_Morpherin their own file names. - [[36]]: which of the 11,086F_Morpherrecords are faces and which cloth; not needed to draw them. - [[55]]:ccMorpher'sGetWorkfirst-call path has never run (the same arithmetic). - [[137]]: the spot light controller (0x0607); no Infection room uses one (docs/engine/animation.md Unknown). - [[137]]:F_Obj's flag byte (+0xa2) is not modelled, except its effect-object branch for the streams ([[156]]). - [[137]]: whether anF_Objpose outlives its clip;F_Objis not checked in eemu as a whole, only its parts. - [[151]]: whether anything gives the direct light a parent coordinate, and whether the room anm's loop re-applies its frame-0 place. - [[141]]: the areas' light positions and colours at frame 1 are not checked (docs/engine/field-game.md Unknown). - [[141]]:ccDrawEnv +0x88, a second light groupSetLightMatrixwalks first, is not traced (docs/engine/field-game.md Unknown). - [[61]]: the order in which the gate's light joins the town's; [[141]] checks only the group logic. - [[114]]: howccLightcombines an event room'sLGT_record withSetRoom's place; the block's clump nodes drawn at its matrix (docs/engine/dungeon.md Unknown). - [[160]]: the shadow bounding box check readsvf21, never set; an open edge's second face reads VU1 memory below the directions (game quirks). - [[160]]: shadow modes 2 and 3, never made in Infection, are not ported; the later volumes are not surveyed for them. - [[160]]:EVENTAREA02and07set the light again afterGO; noted, not followed. - [[38]]: the field objects' own draw code, and the type-6FOBJECT2sDrawMeshdraws (docs/engine/field.md Unknown). - [[38]]: whetherExtObj-shared object models are lit once or per use. - [[38]]: whether a tile's alpha is clamped past 7,200 (docs/engine/field.md Unknown). - [[38]]: whether VU0 rounds as the modelled truncation; needs a console. - [[61]]: the near-plane rule is read from the VU1 microcode, not run. - [[61]]: the CPU renderer drops triangles behind the camera instead of cutting them (the software model only). - [[48]]: edge rasterisation (the GS's fill rules against the GPU's) and the selection bar's row are not explained. - [[37]], [[48]]: the order of failing and passing pixels where one draw overlaps itself (FB_ONLY's two passes); no test and no known case. - [[37]]: the GS's 8-bit rounding inside the pixel pipeline is not modelled; [[175]] snapped vertex alpha only. - [[48]]: both renderers are ours; neither is compared with a real GS frame capture. - [[53]]: which group, opaque or sorted, a mmat lands in is taken from the disassembly, not compared with the game. - [[57]]: VRAM past the draw buffer reads 0 in the port (docs/engine/stream.md Unknown). - [[121]]: the port's draw clips by the scissor, not by the letterbox's clip box (bboxClipMin/Max). - [[152]]: the GS's bilinear weights and reads past the frame for the depth shades; model Z clamped at 2^32 where the VU saturates. - [[145]]: the per-vertex fog: F values not run against VU1;PRIM.FGEtaken fromSetFogSw(docs/engine/evarea.md Unknown). - [[157]]: whatccObj::Duplicatecopies of the water's object (docs/engine/dungeon.md Unknown). - [[97]]: water 0's place forwaterUVModifi2's reach is taken as its root; its coordinate is not checked in a run. - [[84]]:EA_moveTex02's scroll restarts at 0 with a new map after the town, where the game's carries on (docs/engine/evarea.md Unknown). - [[161]]: the lake sky's scroll starts at 0 in each dungeon, where the game's runs on (phase only). - [[99]]: wherescFadeDefdraws (its layer word+0x94); taken as the font layer. - [[69]]: the fader drawn in the field with the desktop's corner constants; not checked. - [[130]]: the lens flare is left above the picture by the follow camera, and the eye view fails its camera test, as in the game's code; no shot. - [[165]]: the doubleatan2is Rust's libm, not newlib's; they agree in every case tried. - [[170]]: whetherccChar::Drawleaves node coordinates stale on a culled frame (docs/engine/battle.md Unknown). - [[177]]: whether the game'sGetChunkAdrsFfalls back to other loaded files for block 1. - [[264]]: whetherEVENTAREA01'sDrawObj/DrawObj2layer differs fromobjLayer; the port takes the active layer Draw set. - [[26]], [[59]]: whether the game showstown01's floors that dark, and the crisis town's drawing; never compared with a console picture. - [[97]]: what the clouds look like on the console; no capture. - [[99]]: the piros tint's pixels, drawn by the port's fog blend; not compared. - [[96]]: the gate hack's 3D against the game's pixels; the calls are compared. - [[130]]: the balloon's cloth scroll and Ω's runners, not seen in a shot (the story server is Δ). - [[139]]: the walking PCs' variants and steps against the game's pictures and sounds (docs/engine/field-game.md Unknown). - [[145]]: the per-vertex fog against a game picture. - [[146]]: theREGION_REPEATshades against the game's pictures; the texel choice is checked. - [[147]]: a swapped dungeon against a picture; a twin the file lacks gets a null palette in the game, where the port leaves it unswapped. - [[152]]: the field's depth shades against a game picture. - [[88]]: the sharp-bilinear scaler is not seen at the user's window size, only checked by test; there is no setting for a plain or television-like filter (a port option).
- (play) [[38]], [[39]], [[72]]: the field water's run-time textures and scroll, and the clouds' blending, are approximations (docs/engine/field.md, field-walk.md) — every field with water or clouds. - (play) [[97]]: water 0's frame-buffer copy is the whole frame, not the game's 128 x 128 point-sampled one (docs/engine/field-game.md, town02.md) — the towns' water. - (play) [[157]], [[161]]:
-
- (play) [[79]], [[231]]:
SetFogSwandSetShadowSwon the spell pieces (and on other objects that turn fog off; only the gate was fixed), and the drill'sccDrawEnvsettings, are not modelled (docs/engine/effects.md) — spells and objects fogged or shadowed where the game turns it off. - (play) [[79]]: the explosions' palette swaps are kept on the element but not drawn (docs/engine/effects.md) — the spell explosions' colours. - (play) docs/engine/effects.md:ccEntryChangeCLUTswaps every texture on the palette, where the game swaps per material — enemies whose palette-swapped texture shares a palette. - (play) [[170]]: the enemies' weapon flashes (and the boxes') put a light in the scene's light group in the game; the port does not — characters not lit by the flashes. - (play) [[266]]: Innis's pictures are not drawn: the missiles,SamonRings, particle generators, blur, shield, the mirrors' shards; theMagicSquarefor n 1 and 2 (docs/engine/boss-innis.md) — Mutation's first boss. - (play) [[274]]: Magus's pictures are named, not drawn: the leaves' markers, charges and bursts, the laser's shocks and thunder, the needles, the smoke; the body's dropped leaves are not hidden (docs/engine/boss-magus.md) — Mutation's Magus. - (play) [[280]]: Innis's ice missile and Fidchell'sIceBreakare not ported, so nothing throws their rocks — Mutation's and Outbreak's bosses. - (volumes) [[280]], [[281]]: Outbreak's and Quarantine'ssqrt.sin the distance fade and their one-ulp float differences; whether the per-volume hooks and the 42-spike wave make upheaval agree there; not rerun. - [[17]]: the effect program beyond its entry point (docs/engine/render.md Unknown). - [[79]]: undefined behaviour taken one way: odd sizes or drain types, stack leftovers as 0, the goblin summons' read (docs/engine/effects.md Unknown). - [[83]]:effResistantShieldwith noaffectPersonreads through a null pointer (game UB; docs/engine/effects.md Unknown). - [[83]]:effHeal's return: the game returns 0, the port its slot; no caller uses it. - [[79]]: a sprite's fog:Primhas no fog, and the effects' own sprites never fog (docs/engine/effects.md). - [[100]]: whetherccAnm::Drawof a fog-off clump (the portal) takes the field's lights; the port draws it unlit. - [[156]]: effect nodes in other files'ccAnmclumps; none found (docs/engine/effects.md Unknown). - [[170]]: what a stream's decoded dummy chunk holds at+0x10and+0x20; the port takes the file's place, w 1, degrees as radians. - [[280]]: whatccEffect::Mainids 0, 113 and -11..-8 were for; nothing makes them. - [[280]]: what a real PS2 keeps at address 0, which the -11..-8 case would overwrite. - [[281]]: why Mutation moved the spells' releases (93, 120, 60, 100). - [[281]]:AreaFx::spellrequests a spell at its first system call, so+0x70is the target's place at count 0; a runtime asking earlier must pass it. - [[238]]: whether any skill's animation draws (no clump; nothing draws+0x80). - [[279]]: whethereffAbilityDown's icon rows include a staff; the rows are not rendered one by one. - [[279]]: whether a killed foe's condition effect fades or ends at once (DispConditionEffectagainst the game's delete order). - [[266]]: which clump the game draws the Epitaph'sANM_ex2x*clips on. - [[272]]: which ofCMP_ex01gom2-4each gomora draws (docs/engine/boss-kyvia.md Unknown). - [[117]], [[128]]:ccBossBluris not ported; whether Skeith's fight blurs depends on the heap (docs/engine/boss.md "Not described yet"). - [[127]]: whatSetFog(0, 0, ...)'s divisions by zero leave infogA/fogB(stream 4); taken as no fog. [[267]] meets the same inFunc_str0932. - [[131]]:strEffectStopFlagis never set by anything the port runs; its setter in the game is not named. - [[53]]: blend types 2 and 3: the streams are not surveyed for them. - [[55]]: whether any stream uses a morph weight that is negative or 8 or more. - [[57]]: the rand state when stream 2 starts; the port matches only from a known state (docs/engine/stream.md Unknown). - [[104]]: a noise band's copy past the draw buffer reads 0, as in the stream. - [[130]]: the field's smoke puffs start a frame late (docs/engine/field.md Unknown). - [[141]]: Data Drain step 10's effects start at the next effect task, so theirrand()draws come a frame late (docs/engine/field-ui.md "Not yet known or not ported"). - [[165]]: the effects' shakes are applied after the frame, not inside the effect task (only therand()order within the frame). - [[172]]: the run-time's bursts drawccRandafter the entry control's frame (ordering). - [[160]]: the console's choice between the direct and the clipped shadow path (a pipelined sticky sign); they differ only past Z 0x7fffffff (docs/engine/shadow.md). - [[118]], [[119]]: the runners' dust: no shot of it, and the feet's pose is the port's stance at the start against the game's last draw. - [[175]]: whether the window showed Skeith's lag worse than the headless run; not measured in the window. - [[175]]: the drain's erasing of the figure is inferred from the rules. - [[53]]: the glows and stream 2's figure are checked against the code, not a console frame. - [[57]]: stream 2's effect task: the packets are checked, not the pixels and timing. - [[105]]: the drained enemy's look in the movie; its lights are worked out at its matrix. - [[117]]: the trail's projection, the reversed sprite and the light on the characters' shading, checked by eye only. - [[133]], [[136]]: stream 15's parts and opening against a game frame; the draws and the draw state are checked. - [[136]]: the other streams' light pictures (3, 5, 7, 8, 10, 11, 16) (docs/engine/stream.md Unknown). - [[153]]: a close-up of streams 5 or 15 against the game; str0581'sdivZ3000 and stream 5's 500 not looked at frame by frame (docs/engine/stream.md Unknown). - [[156]]: str0001's clouds against the game's picture. - [[141]]: the Data Drain side effects' pixels. - [[149]], [[155]]: the symbols' fires and light frame by frame, and the cast on a lake symbol and its puffs on screen. - [[234]]: the symbol room's darkness against a picture of the real game; the light values are harness-checked. - [[162]]: the growing-up particles and the foods' look against the console. - [[172]]: the flames against a game picture; the sprite's turn (+0x28) stays 0. - [[172]]: the first enemies' weapon trails and dust, not looked at after the fix. - [[195]]: the skill starts and shock waves against the game's pictures in play. - [[197]]: the weapon trails and particles against the game's pictures. - [[197]]: orange specks far off in the Flame Dance shots come from none of the weapon generators; which effect draws them is unknown. - [[197]]: a member'sStartArmsEffectis not seen in play; the hands' matrices are the port's pose. - [[83]]: the new particle generator rows are seen only in shots (docs/engine/effects.md Unknown).
No. 284 — Open questions after the triage: the effects and the streams' effect tasks
- (play) [[79]], [[231]]:
-
- (play) [[191]]:
come_backbuilds the lake room's doors open, where the game asksccCheckActiveObject— climbing back into a lake dungeon. - (volumes) [[206]]: where Mutation's and Outbreak'sidolItemList44is; neither candidate reads like Infection's. - (volumes) [[260]]: Fort Ouph and Lia Fail are not compared with the game in eemu. - (volumes) [[275]]: Outbreak's and Quarantine's fellow deletes are not compared; no name was carried. - [[11]]: what each value offieldType,weather,ground,objectandcircleOfslooks like in the game; the port runs the ported generator and draw for every value ([[33]], [[38]], [[130]]), but there is no catalogue (docs/engine/area-words.md Unknown). - [[11]], [[19]]:EVENTAREA_INFO.modelbeyond the sound bank and the story map file;.protectbeyondprotect[1]and the item pairs;.dungeonNum(docs/engine/area-words.md Unknown). - [[21]]: what area 126 is: a record with no address, added from Mutation ([[220]]). - [[21]]: why area 47 gets a different item offset from volume 3 (design; the mechanism is in [[21]]). - [[179]]: whether any Infection field is hacked outside the crisis (EVENTAREA_INFO.flag3); not surveyed. - [[19]]: why dungeon types 8 and 9 pick a down-stairs room on their single floor (docs/engine/dungeon.md Unknown). - [[19]]:sd4a.cmp, named byDungeonName2but not inDATA.BIN. - [[25]]: whatDUNGEON.ishackmeans; [[161]] reads 3 as hacked (the lakes' fireflies) (docs/engine/dungeon.md Unknown). - [[114]]: area 67's type-34 row behind a door with no branch would crash the game; whether the story reaches it. - [[33]]: where the game would loop forever, the port gives up withNoSite; no case has reached it. - [[28]]: why the canal water is three copies of one animation. Water 0 draws the refraction and waters 1 and 2 scroll in U and V ([[97]], docs/engine/town02.md), but what the first copy's otherDuplicateflag (8200 against 8192) changes is not known. (The triage cited docs/engine/root-towns.md here, whose undrawn waters are Carmina Gade's.) - [[28]]: what draws type 0 rows in the town classes other thanROOTTOWN01; not traced. - [[163]]: what row 19 withparam[2]0 was for; no setter leaves it 0. - [[163]]:GetNearDoorPositionwith every mark beyond 12,000 returns stack words; the port keeps the row's place. - [[164]]: the game's result for a field with no dungeon entrance (in-points 0). - [[164]]: the node places of the field's objects use the dungeon posing, checked on rooms only. - [[164]]: where the foods stand in the game; sums put them 250-370 from the centre, not looked at in a picture. - [[154]]: the fourth clock (+0x70) has no reader found. - [[154]]: the Zeit statue, on the last floor of its dungeon, is not reached and opened in play. - [[191]]: what readsWORLD_MAN+0x58[n](docs/engine/field-walk.md Unknown). - [[191]]: the walk between a lake's two dungeons against the game's run (docs/engine/dungeon.md Unknown). - [[111]]:RoomSelect'sbgColor0 and GS words are not modelled; the change's fade covers them. - [[134]]: whether Kite should walk around the fenced statue in a statue room's open doorway (area 18's dungeon). - [[72]], [[111]]:SimGenerateCodeandGOmove the global generator's seed andrandcnt; the port leaves those draws aside (docs/engine/field-walk.md Unknown). - [[97]]:fieldrand's state on entering a town (the port starts at 13), and the scrolls' statics starting at 0 in each town (phase only). - [[112]], [[115]]:fieldrand's seed on arrival is not carried across scenes, from the dungeon or into the arena (the fireflies' bobbing; phase only). - [[157]]: a story dungeon'sfieldrandafterGenerate(docs/engine/dungeon.md Unknown). - [[140]]:DungeonEntries.rngis a copy, so the dungeon'sfieldranddoes not advance with the breakables' draws; later draws can differ from the game's. - [[59]]:randis not seeded from the game's shared state, so idle fidgets differ in time (a run's history). - [[65]]: whether a party member or the gate has a body on the character list. - [[65]], [[132]]: the second argument toccSetRtownPCon the event path (ccEntryEventMng); the port uses -1 (docs/engine/field-game.md Unknown). - [[65]]:ccSys +0x358, the frame count that picks the PCs, is an input that depends on run time. - [[65]]: an event NPC placed after the set-up goes to the list's end; the order is not checked. - [[132]]: the event NPC classes step outside the entry control's NPC turn, so their effects start a frame late (docs/engine/field-game.md Unknown). - [[277]]: whether a walking PC can run off in a case the tests do not cover; only a member's run was caught. - [[108]]: the town branch ofSetCharPositionis read, not run; its offsets match the field's checked ones. - [[110]]: the town frame getsmenu_type-1 or 0, not which menu. - [[110]]: a secondrebootSpcManagerin one town visit makes no new AI for Kite's stand-in. - [[90]], [[103]], [[180]], [[250]]:inviteSpcin a field or dungeon: whether it is ever reached, and its copy of the table's equipment into the registry, not ported because no script makes one (docs/engine/field-game.md, field-walk.md Unknown). - [[106]]: how long the game holds the Chaos Gate loop (ccLoadResourceFL's time) (docs/engine/field-walk.md Unknown). - [[106]]:ghoCam's markers from the desktop's anm player, not compared (docs/engine/field-walk.md Unknown). - [[142]]:ccDog's constructor leaves the stuck count (+0x21c) unset; the port starts at 0. - [[142]]: the dogs' walks, not compared frame by frame. - [[162]]: the Grunties' camera writes land a frame's NPCs later than the game's (ordering). - [[162]]:runAway's one frame ofcheckHitResultAttlibute; the harness lacks the collision's last result. - [[166]]: the ride's task and its first cancel check run a frame later than the game's (ordering). - [[166]]: the port sleeps and wakes the whole party, whereccSPC::Wakeupwakes only those in it (the same in Infection's fields). - [[166]]:plw +0x10andccDamUprStr::CtrlAllin the ride menu's waits are not kept. - [[166]]: the Grunty's legs' places come from the port's last pose, not the game's last draw. - [[166]]: riding into a dungeon's way in (pgDIN) is not played through. - [[177]]: area 16'sEVENTAREA07against a game picture. - [[272]]:EVENTAREAB8is held by unit tests, not compared with the game'sDraw(docs/engine/evarea.md Unknown).
No. 285 — Open questions after the triage: towns, fields and dungeons
- (play) [[191]]:
-
- (play) [[268]]: Innis's drains at its breaks gave item drops and no Epitaph in the survey, where
innis_drained_through_the_menusreaches the Epitaph; possibly the queued-affect bug [[274]] fixed (a lost 21), not rechecked — Mutation's first boss fight may skip its Epitaph phase. - (play) [[272]]: Kyvia's gomoras do not push each other; the pad's sway, the arm's picture and the particles are missing (docs/engine/boss-kyvia.md) — Mutation's Kyvia 01 fight. - (play) [[274]]: Magus's shock beams are taken to meet the ground (noccHitCheckLMon the land);EntryFlash2and3are one flash; the grow's looping SE plays once (docs/engine/boss-magus.md) — Mutation's Magus fight. - (volumes) [[21]]: whetherccRegisterDifficultyEnemymatches on the other volumes; read on all four ([[275]]), never run in eemu there. - (volumes) [[67]]:piney-battleis checked against Infection and Mutation ([[219]] to [[224]]); not against Outbreak and Quarantine. - (volumes) [[278]]: how Outbreak's enemy tables changed row by row; only the offsets are compared. - [[12]], [[22]]: what type bits 0x100 and 0x200 mean; set on spells, read by no rule (docs/engine/battle.md Unknown). - [[22]]: that the protect break is the Data Drain window is still inferred (docs/engine/battle.md Unknown). - [[22]]: normal (non-drain) drops: nothing found;ccExpDistributorgives experience only; not surveyed. - [[12]]: whether the placeholder enemies can appear. - [[95]], [[101]]: what bit 0 of a skill row's+0x2c(ccGetSkillParam(sid) + 0x2c) means. - [[171]]:ccEnemyL's type 3 (rows 203-206): what they are and whether any event places them; not ported, and no Δ list registers them (GAPS.md). - [[105]]: the race's base formccThDrainEnemybuilds for a state 2 that no caller sets. - [[275]]: what the community note'senemyList00refers to; the code gives story areas column 6. - [[78]]: a dungeon way of 55 cells or more overwrites the beacon pointer, and unset destinations read stack garbage (game quirks; docs/engine/battle.md Unknown). - [[78]]: the third swing is never reached, andctrlType1 and 2 are unused (inferred; docs/engine/battle.md Unknown). - [[78]]: the equal-priority task order withinccThSpc(inferred). - [[98]]: whetherccThEntryCtrl's first slice runs in the frame ofccEnableThEvent(4)or the next (inferred from the task order). - [[110]]:ccThSpcandccThAISystemrun before a leaver's task ends, where the game's ends at slot 50, after them (docs/engine/field-game.md Unknown). - [[73]]:CalcRealskips a worn piece of -1 where the game reads the row before; no new-game member wears -1. - [[123]]:levelOldfrom the game's heap when a member is built in town (docs/engine/battle.md Unknown). - [[123]]: whether the stray#lines freeze a real console (docs/engine/battle.md Unknown). - [[123]]: the raised lines are said after the task, not inside the hit, so theirrand()draws come later. - [[123]]: what setssaveData +0x220d(id 1's garbled lines) (docs/engine/battle.md Unknown). - [[223]]: the game's windowed history walk never moves past a delivered item use that casts nothing; the port passes it over instead of hanging. - [[223]]:Ctx::item_firstreads a member without an AI as having no hit, where the game reads through a null pointer. - [[223]]: who sends message kind 0xc and broadcasts 23 and 24. - [[230]]: a member's item use is carried out after the AI's frame, one frame late for a reader in the same frame. - [[230]]: CHAT's heal order out of battle plans once and drops it, as the code has it. - [[192]]: whether a menu or script writes a party record in the same frame gap as the world's clears. - [[158]]: the party under manual control andccClearConditionAllEnemyat the game over are not run; nothing after the freeze reads them. - [[167]]:goldVolumeoutside 1-4 leaves wear to a register;checkGoldnever makes one. - [[167]]: a gold goblin's acts 2 (wander) and 4 (home) did not come up in the sample. - [[168]]: how oftensetBreathand the scorpions' spin come up; counted roughly. - [[171]]: the wyrms' and dragons'setBreathdid not come up in a 300-case count. - [[187]]: how many frames the game's weapon load takes beforeEquipWeapon. - [[155]], [[162]]:ccGimSymbol::objMainis read from the code, not run in eemu against the port. - [[79]]: the magic portal is ported twice (piney-battle'sentry.rsandpiney-effect); both are checked. - [[266]]: act 7 (the shake) on Innis itself is never reached. - [[274]]: Magus's acts 30 and 31 and a leaf's 23 are never reached; whether any path reaches them. - [[274]]: whether Skeith's and Innis's drains through the menus lost their 21 before [[274]]'s fix. - [[109]], [[117]]: the bosses' rules and effects are not checked together against the game; the effects' particles draw from the game's generators;IceBreak'sCreateorder andccRand(docs/engine/boss.md "Not described yet"). - [[103]]: the fellow task's own frames (a dismissed leaver's exit and walk away) are not run against the game in a field; the rules are compared. - [[75]]: idle animations under an event's manual control are not compared frame by frame (the game's rule,ccFellow::Action). - [[238]]: the party AI's skills through the same request are not watched in play. - [[67]]:party_ai::Ai::newhas no check. - [[167]]: a shaken-off hold is not played through. - [[229]]: no test drains an area skill's sub-targets (Drain Arc, Drain Heart). - [[230]]: no test drives a member's own item decision end to end. - [[265]], [[268]]: whether a party at a player's level beats the Squidbod and breaks Innis's protect sooner; the pilot's party is the start's. - [[273]], [[276]]: the lowest level at which the pilot beats Kyvia 01, whether a run without the level aid does, and a player's level and gear there. - [[272]], [[273]]: why the Hackberry King in area 47's dungeon recovers under the pilot's fight, and whether the game's would as fast. - [[279]]: which enemy and area the report's staff came from, and whether it was drained.
- (play) [[268]]: Innis's drains at its breaks gave item drops and no Epitaph in the survey, where
-
- (play) [[87]]: the event cameras in event 4's rooms (the user saw the camera in the walls) were not re-shot since each block plays in its own room — event 4's dungeon scenes. - [[11]]: which story areas Infection itself can reach; derivable from the scripts'
gate_add(docs/engine/events.md, ops 89 and 90), but no list is made. - [[18]]: how far the parody script diverges beyond the lines compared; only sampled. - [[69]]: when the field set-up enables the event task; taken from the desktop's check (docs/engine/event-vm.md Unknown). - [[74]]: when the event task wakes, read from the thread code (docs/engine/field-walk.md Unknown). - [[69]]: the event camera's remaining unknowns: its work-area reads, stack leftovers,currentOpen, the base-id lookups, the FIFO order within a priority (docs/engine/field-game.md Unknown). - [[87]], [[111]]:prev_room(WORLD_MAN::GoPrevRoom) is still the host default; no volume-1 script needs it, and the later volumes are not surveyed. - [[109]], [[117]], [[128]]:hold 7is not ported; no Infection script uses it (docs/engine/boss.md "Not described yet"). - [[99]]:piros_colourstatus 9 with an operand past 5; no script uses it. - [[178]]: walks along the town navigator's route (gPointnot -1) are not ported for Kite; no event sets one. - [[134]]: whether the game'sccGetDistinCheckOpentakes the wrapped frame for both points (assumed). - [[107]]: whether block 18'sin_point 5gates block 19 in the dungeon's first room. - [[228]]: what sets and clearseventStatus[40]in Mutation's story. - [[270]]: whether the game delivers mail 88 in the same desktop session as the port; not checked against the executable. - [[189]]: whether a player of Infection alone reaches friendship 50 with Black Rose by event 14. - [[90]]:ccEvent::CheckOperate(9)'s whole talk rule is not run in eemu; its pieces are checked. - [[91]]:player_distancein town is not run whole against the game; it reuses checked pieces. - [[91]]: the church's messages, cameras and timing are only seen to run. - [[277]]: Black Rose's own lines at the holy ground once her talk target was right. - [[143]]: event 27's talk (walking PC row 85) is not played through by a test. - [[177]]: event 62 is not played through end to end (mail, words, portal, the scene back). - [[178]]: event 30's walks in Dun Loireag are not run in a test (the same code as Mac Anu's). - [[178]]: the side events are not played to their ends. - [[180]]: event 61 is driven only to its opening lines; events 58 and 60 have no tests.
No. 287 — Open questions after the triage: the event scripts and their hosts
- (play) [[87]]: the event cameras in event 4's rooms (the user saw the camera in the walls) were not re-shot since each block plays in its own room — event 4's dungeon scenes. - [[11]]: which story areas Infection itself can reach; derivable from the scripts'
-
- (play) [[98]]: the epitaphs (
ccEpitaphMsg,Step::Epitaph) and the book viewer (ccThBook,Step::BookStart) are not carried out:crates/piney-world/src/field_world.rsitem_stepreturns false andcrates/piney-game/src/area.rslogs "item step not carried out" — using those items shows nothing. - (play) [[77]]: the map button is not held bymenuClrWait,ccCheckGtHackAnmor a wiped-out party, and the field and dungeon map is not hidden whileccGame.inBattle(docs/engine/map.md;area_frameincrates/piney-world/src/maphas no battle test; check whetherccThMenu's map alpha already hides it) — the minimap in fights. - (play) [[50]], [[51]], [[196]]: Adjust Screen's display offset (Request::DisplayOffset) is dropped (crates/piney-game/src/desktop.rs,world.rs) — the Screen option does nothing. - (play) [[67]]: a member's equipment remark in town (ChangeEquipReport) is dropped (crates/piney-game/src/world.rs) — equipping a member in town. - (play) docs/engine/title.md: the opening's cancel flash is not modelled — skipping the opening stream. - (volumes) [[94]]: the later volumes' staff rolls (stfroll2-4) are not tried; GAPS.md lists Quarantine's staff roll as its own. - (volumes) [[276]]: Mutation's staff roll, and what the desktop does after it (the save for Outbreak's carry-over). - [[9]]: the meaning ofmailFlgandreFlg: their writes are ported (docs/engine/desktop.md "Mail"), their readers are unnamed (docs/engine/text.md Unknown). - [[23]]: how the GS samples the kt 0 and kt 2 sprites, whosesxandsudiffer by a texel; the renderer assumes top-left sampling (docs/engine/font.md Unknown). - [[23]]: which view and scale the font layer uses (docs/engine/font.md Unknown). - [[23]]: where theccKanjitexture sits in VRAM; the port re-uploads one scratch page per kanji (docs/engine/font.md Unknown). - [[120]]: the balloon's text is drawn through a 128-rowInit(3, 24)texture, where the game's chat kanji isInit(2, 16); one line looks the same. - [[45]]: the kana, symbol and kanji grids of name entry, not reachable in the US build. - [[251]], [[253]]: whether the unused selector had music, or drew a copyright, of its own; no code survives. - [[77]]: what setsWORLD_MAN.specialRoom(+0x160) beyond the known rooms (docs/engine/map.md Unknown). - [[77]]:RT01ICONPOSand the pulse angles are the game's globals; the port starts a new area's pulse at 0 (docs/engine/map.md Unknown). - [[144]]: a rotated cell's off-screen test reads a leftover width and height; the port takes 0 (docs/engine/map.md Unknown). - [[144]]: the menu's turn usesf32sine and cosine, not the VU's; a sixteenth of a pixel at most. - [[73]]:PresentMenu's states 20-22 andBreedingMenu's 23 with index 0 never set; a trader of neither kind reads a stale register, as in the game. - [[71]]: past the equipment tables the port reads zeros where the game reads what follows (game UB). - [[94]]:ccBufferSampling(+0x138c) and the second mask (+0x1358) are created and never used, as in the game. - [[70]], [[71]], [[73]]: the menus keep their own copy ofrand()(PcMenuamong them), not the world's shared generator;FieldUi::set_randis not wired. - [[142]]: the dogs' menu drawstalkNumfromrand(), not from the town'sccRand. - [[94]]: the generators' state at the ending (the random characters) differs from a console's run. - [[66]], [[76]]: a menu a button opens stops the camera and player a frame later than the game, and camera 3 appears a frame later (the menus run after the world's tasks). - [[71]]: the equipment, party-add and Controller tasks finish one frame later than the shortest the game can take (disc timing). - [[69]]: menu 79 bumps its wait twice a frame, so Kite is mid warp-out at the change, as in the game. - [[96]]: after a success,proccessstays 2 until the area changes; how many frames the game shows it. - [[58]]: whether the top page task's firstMainruns in the frame it starts (docs/engine/toppage.md Unknown). - [[58]]: how the fader behaves while the system menu freezes the layers (docs/engine/toppage.md Unknown). - [[58]]: the set-up passes run at once and draw nothing; their timing is not modelled frame by frame. - [[174]]: whether the game'sinfo_nowon the set-up screen places its lines whereSetupScreendoes. - [[174]]: the tail of the last window before stream 10 is not timed. - [[43]]: the boot check's timing and the stream's end-flash alignment are inferred. - [[51]]:LOAD_FRAMES: the real time betweenChangeRequestandccSetupDesktop'sccAllSoundOff(docs/engine/title.md Unknown). - [[71]]: the OPTION helper's CD load, in real frames. - [[186]]: how long the game's loads take, and so how much of the loading display's fade and logo a player sees. - [[186]]: the load request's+0x18, which also stops the display; its setter is not traced. - [[226]]: whether the PS2 shows the recall's fades black too; every checked step matches the game. - [[237]]: the port's quit prompt uses the desktop's window, where the field's own confirmations use the field menu's. - [[247]]: nothing tells the player that a finished part's save loads in the next; New Game from a previous volume's save is not checked from a build (the import itself is the save's entry). - [[68]]: the gate-target fix has no eemu check of its own. - [[196]]: the present's remark is not run in a town with three members. - [[100]]: the minimap's markers are not checked frame by frame;tools/test_map_rs.pycovers the rule. - [[77]]: the map for the special dungeon types 8 and 9 and for story rooms of type 15 and up is not checked; labels are compared as strings only. - [[158]]: the game-over noise's draws are not checked frame by frame againstccGameOverNoise; the counts are tested. - [[159]]:ccMessage's rate-2 drawing (its button's pulse); the harness hooks it. - [[70]]: no run-time shot of a shop; covered by the checks. - [[75]]: no shot shows the world moving under a tutorial menu. - [[148]]: the object menus against the game's pictures; the checks are frame by frame in eemu. - [[94]]: the staff roll's pixels and the ending song's start and stop, not compared. - [[104]], [[179]], [[190]]: the field noise's, the crisis town's and the spells' screen noise's pixels; no capture. - [[193]]: the ALL PORTALS OPEN banner against the game's pictures. - [[194]]: the panels' shake and the protect marks against the game's pictures.
No. 288 — Open questions after the triage: menus, the desktop and the text
- (play) [[98]]: the epitaphs (
-
- (play) [[58]]:
SoundFadeOutstops every sequence at once (crates/piney-game/src/main.rsmaps it tobgm_stop), where the game'sccSoundFadeOutfades over 8 frames — every mode change that fades the music. - (play) [[96]]: the gate hack's cancel:ccSndGateHackCtrlrestarts sequences 0 and 2 at volume 0 and fades them in; the port fades them from where they are (docs/engine/field-ui.md) — cancelling a gate hack. - (play) [[89]]: changing Voice in The World's Options goes throughSoundEnv, which carries the volumes only; the driver may not follow until the next mode — the voice language option in the field. - (volumes) [[203]]: Outbreak's and Quarantine'sccVoiceRequestcases; [[227]] leaves theirspcVoiceDatato be checked. - (volumes) [[278]]: who ids 18-20 are on Outbreak and Quarantine (ccCharBaseParam.idrows) and their tables' sounds; [[239]] namescharTblrows 18-20 (Tsukasa, Subaru, Sora), the sound tables are not followed. - (volumes) [[267]], [[269]], [[271]]: Outbreak's and Quarantine's versions of the stream effect tasks Mutation changed (Func_str1070, str7100, str8800, str0300) are not compared. - [[14]]: the 48 kHz rate of the PCM paths rests on the SPU2's fixed input rate and on measurements, not on anything the code states (docs/formats/voice.md Unknown). - [[14]], [[243]]: the SPU2's exact ADPCM rounding; the port rounds as PCSX2 (docs/formats/snddata.md Unknown). - [[42]]: the SPU2 itself (envelope timing,ENVX/ENDX, interpolation, reverb) is taken from documentation, not hardware (docs/engine/sound.md Unknown). - [[42]]:sdCommand's reverb switches (cases 4 and 5): who asks for them (docs/engine/sound.md Unknown). - [[56]]: whatccSnd +98(set by mode 0) does, and whether mode 1 clears it. - [[56]]: the port-0 branch of the volume (the SE volume, sign-extended from 24 bits) is not modelled on its own. - [[184]]: whatccSnd +0x110is (docs/engine/sound.md Unknown). - [[95]]:vBank+0x08is left asevVoicePlaylast wrote it; the port sends none. - [[50]]: the load-confirmation jingle'sm_tempPNis never initialised (game UB); the port starts at 0. - [[176]]: whether the SE port's volume is ever below full whensound 8 0 256runs. - [[245]]: whether a Recovery Drink used by Kite on Quarantine stops voice channel 0 on a console; the port follows the code (docs/formats/voice.md Unknown). - [[245]]: whether the other characters' skill-word bases reach their tables' last rows; only Kite's is traced. - [[112]]: sound bank 5 is read from the session'sWORLD_MAN, which for the arena is area 27's. - [[101]]: a request the menus make reaches the sound task a frame after the game's (task order). - [[49]]: the IPU's exact IDCT arithmetic; needs a console. - [[49]]: what the SPU2 plays after the last audio block untilaudioDecReset. - [[49]]: how many frames the console takes before a movie's first picture. - [[52]], [[175]]: the frames the disc read and the decoding take are not modelled; the port reads ahead on a thread ([[175]]), where the game streams from disc as it plays. - [[52]]: the intro's end flash, drawn after stream 0, not over it, is placed 20 frames in by inference (docs/engine/title.md Unknown). - [[85]]: the exact frameccEventStream's loop sees the stream end (docs/engine/stream.md Unknown). - [[133]]: how many frames the game loads between str0580 and str0581 (docs/engine/stream.md Unknown). - [[133]]: str0581's frame-0 note (cue 900), given to the task's second pass (docs/engine/stream.md Unknown). - [[269]]: whetherOBJ_xpart00-05's models carry a bounding box (the game would drop parts the port keeps). - [[105]]: streams 37, 44, 67, 69 and 100 (a character's drain, by id) are not played (docs/engine/field-ui.md "Not yet known or not ported"). - [[240]]: which demo disc eachSTRT.BINscene belonged to, and how its menus' selection worked; not in the files. - [[249]]: whether the four discs'LOGO_B.PSSandLOGO_C.PSSare the same file; the build's dedup would say. - [[52]]: the Audio screen's movies have no test of their own; [[56]] covers their music only. - [[267]]: no harness compares Mutation's changed stream tasks with the game's code frame by frame. - [[89]]:--voiceis in no playthrough test. - [[60]], [[185]]: the music is not compared with the game playing, only the tables and the call order; Dun Loireag's sequence 2 is not listened to. - [[184]]: the canals' and the church's volumes against the game playing (docs/engine/sound.md Unknown). - [[150]]: the travellers' hum against the game.
No. 289 — Open questions after the triage: sound, voices and movies
- (play) [[58]]:
-
- (play) [[43]], [[201]], [[226]]: CONVERT, a previous volume's save into a new part:
Data_Control'sm_PrevFlgload screen reads the card, butRequest::ConvGameonly reaches "title asks" incrates/piney-game/src/session.rs, so nothing is imported (docs/engine/title.md) — starting Mutation, Outbreak or Quarantine from the previous part's clear data. - [[246]]: what eacheventStatusindex counts; it belongs to the scripts that use it. - [[193]]: what reads the save's portal counts (+0x6864,+0x6866,+0x6868) (docs/engine/effects.md Unknown). - [[45]]:save_va: the real heap addressNewGamestores as character 0's name pointer. - [[50]]: whetherccSaveSyskeeps its card position through a reset. - [[70]]: the Recorder's card position follows the title's Load, not a later desktop Data save (the cursor's start only). - [[45]], [[73]], [[159]]: real disc and card times: the port's card calls finish at once, so the card-busy frames and messages never show (docs/engine/desktop.md Unknown). - [[254]]: whether a player wants a save's own options to win when loading a card made elsewhere (a port design choice).
- (play) [[43]], [[201]], [[226]]: CONVERT, a previous volume's save into a new part:
-
- (play) [[24]], [[40]]: the later volumes' changed event cases (Outbreak's 6, 8, 9, 60, 71, 72, 150) and their event task's order run with Infection's semantics; what fills Outbreak's and Quarantine's BSS message groups (docs/engine/events.md, event-vm.md) — Outbreak's and Quarantine's stories. - (play) [[18]], [[65]], [[98]], [[116]]:
npc_act -3(row 139's drain, witheffVirusCrystal) and-5are not ported; only Mutation's event 114 uses them (docs/engine/events.md, effects.md, field-game.md) — Mutation's event 114. - (play) [[74]], [[275]]:marker_poson a plain field (WORLD_MAN +0x438's stream) is not ported, and no event map butEVENTAREA01answersStoryMap::file— Mutation's field events. - (play) [[209]], [[225]]: Mutation's flag race (menus 88-91, thePG_FLAGgimmick, the racers,ccThEvent's second flag) is not ported — Mutation's Grunty race. - (play) [[272]]: Kyvia's later fights (levels 2-5, the EX mode); fields 10-12 are not played through (docs/engine/evarea.md, boss-kyvia.md, GAPS.md) — Mutation onward. - (play) docs/engine/battle.md:ccBoss04's Affect and AI are not ported — a later volume's boss. - (play) [[118]]: the later volumes' bosses'effSmokecalls are not ported (docs/engine/effects.md Unknown) — the later bosses' smoke. - (play) [[72]], [[84]]: the otherEVENTAREAclasses (04-06; areas 66, 67, 91) get generated fields (docs/engine/evarea.md, field-walk.md) — the later volumes' story maps; no Infection script reaches them. - (play) [[112]]:EVENTAREAB0'sNextStage(field 8,se4_8) is not ported (docs/engine/evarea.md) — a later volume's last arena. - (play) [[114]], [[157]]: type 32's tree and leaves (ANM_se4_2lea,LEAF) are not ported (docs/engine/dungeon.md) — a later volume's event room. - (play) [[220]]: on Outbreak and QuarantineGetEventAreaInfo(0)returns NULL where the port finds row 0 — Outbreak's and Quarantine's areas. - (play) [[77]], [[260]]:DrawMapof towns 2-4 draws four sprites in the later volumes; [[260]] and docs/engine/map.md say the port draws three, butcrates/piney-world/src/map/town.rsnow carries a fourth (MARKS) on the towns' own layers: to confirm against the game — the later towns' maps. - (play) [[260]]: which events place characters in Fort Ouph and Lia Fail — Outbreak's and Quarantine's stories. - (volumes) [[198]], [[218]], [[220]]: the functions voldiff marks changed (296 on Mutation, 561 on Outbreak, 565 on Quarantine; 11 missing among those the port covers on Mutation): Mutation's are read as met ([[219]] to [[228]]), Outbreak's and Quarantine's not (GAPS.md Phase 3). - (volumes) [[265]]: Outbreak's and Quarantine's dungeon, area and sound tables are not compared with Mutation's. - [[20]], [[239]]: the names of the functions in the unnamed stretches; they survive nowhere. - [[173]]: only unnamed stretches of 8 KB or more were looked at; how much of Outbreak's and Quarantine's unnamed code is Infection's recompiled would need shape matching. - [[20]]: which compiler options changed between Mutation and Outbreak. - [[25]]: whether the hardwaresqrt.srounds as eemu models it; needs a console. - [[205]]: Mutation's remaining carry misses (@1489inChangeScene,@5293-@5295inExecute,InitSpcParam's default item lists), and Outbreak's and Quarantine's (23 and 28 after [[206]]). - [[221]], [[222]], [[224]]: the code that reads Mutation's newccSkillvector andccAIfields:+0x24is read ([[223]]);+0xa0and the hit fields beyonditem_firstare unread. - [[224]]: the port keeps 750gimPosslots, where Mutation searches only the first 75 per floor with fewer than ten floors (a rare case). - [[227]]: whattalkNum[1]stands for on Mutation and what sets it; the port only reads it. - [[227]]: where the English party tables are short, whether the game plays the next table's rows. - [[235]]: whether a Mutation save can ever make events 2-4 run; their conditions need events 1 and 2 done. - [[263]]: why event 108 logs in to Dun Loireag. - [[248]], [[250]]: the level and equipment a player carrying Infection's clear data brings to event 104 and to Mutation's dungeons, against the start's.
No. 291 — Open questions after the triage: the later volumes
- (play) [[24]], [[40]]: the later volumes' changed event cases (Outbreak's 6, 8, 9, 60, 71, 72, 150) and their event task's order run with Infection's semantics; what fills Outbreak's and Quarantine's BSS message groups (docs/engine/events.md, event-vm.md) — Outbreak's and Quarantine's stories. - (play) [[18]], [[65]], [[98]], [[116]]:
-
- The Ryu Books (273-280):
ccStartThread(ccThBook, 35, 0x1000)and the steps after it (BookStart,CloseChat,WaitBook) are not ported, so reading one still does nothing. - Whether the key items other than the epitaphs, the flute and the books have uses whose steps the runtime does not carry out: none was tried.
No. 292 — Key items were never used: the Key Items menu's use call, and the epitaphs' pages
- The Ryu Books (273-280):
-
entry 3 29(Lios as a walking PC, filectr1) is refused ("not a walking PC's file") in the towns of 209 and 216-218; whether the events need him there was not checked. - The whole run from Outbreak's new game (outbreak_whole_story) was not made; the events were only run from their own starts. - Whether a player's party, carried over from Mutation (ConvGame, not ported), would make 206's room easier than the starts' Kite at level 50 with the new game's gear.
-
- The pictures: the prediction's text, the meteors and their light, the bolts, the towers and the dust are named, not drawn; the voices are not played; a skill's cinema shows its bars without the name (OUT 0x00472550's rows are not read). -
effSkillStart's controller is taken to end 8 frames on; its real end under the effect task is not run with the boss (any end under 30 frames gives the same fight). -OnThinkTransferis ported but no pattern reaches it, so it is unchecked; acts 20 and 23 likewise. - Why the pilot's first drain fails: Kite is held against something about 1200 off Fidchell when the gauge breaks.
No. 294 — Fidchell, Outbreak's first phase boss, and its four spells
- The pictures: the prediction's text, the meteors and their light, the bolts, the towers and the dust are named, not drawn; the voices are not played; a skill's cinema shows its bars without the name (OUT 0x00472550's rows are not read). -
-
- In the fight a storm's magic square is made after the rules' pass, so its first
Drawis a frame late, and a picture's ownccRand(a mode 1 light's) comes in the effects' pass before the boss's, not in slot order: the field'sgenrandorder differs from the game's there. - The prediction's text and the skills' names are not run against the game's own drawing frame by frame;effSkillStart's end with the boss is still the rules' guess of [[294]]. - Quarantine'sccBossEffLightandccSetColorare taken to be Outbreak's (itscvt.w.sis seen); unchecked.
No. 295 — Fidchell's spells drawn, its prediction's text and voice, the skills' names
- In the fight a storm's magic square is made after the rules' pass, so its first
-
SendMessage's full switch and Brother's own per-brother formation/camera math (see "What is not ported" above); an eemu-backed harness comparing the port frame by frame against the game's ownccBoss05/ccBoss05Brother, as Fidchell got (tools/test_battle_fidchell_rs.py), was not attempted this session. -
the orbit's one-step drift past ~90 frames; whether the harness reaches 0 mismatches once that and the Wave/Tornade/SendMessage gaps above are closed;
ccBossCam's realMaxRengesource; whether the survey's stuck field-5 menu loop is Gorre's own doing, a pre-existingwalk_toissue, or both.No. 297 — Gorre's harness: the brothers' orbit, Order and ChangeAction checked against the game
-
- The port's recorded reads stand in for the game's
sceneFileList; a set-up whose file list names a file the port never inflates (or the reverse) could still differ from the game on whether the card shows. No two lists were compared. - Log in from the board goes throughWorldMode::enterdirectly and puts up no card at all; whether the game shows the town's card there (it would: the board's list lacks the town's files) was not checked in play.
No. 298 — "An event's scene -2 put the town's card up: the port skipped loadCheck"
- The port's recorded reads stand in for the game's
-
- Which Data Bug the report met (Mistral's quest, B3) was not identified; the fix covers all 45 rows but none was checked in that dungeon. - The second model's look on screen (layer 5, alpha from the camera) was not compared with the game's pictures; only that it is drawn. -
tools/test_battle_enemy_motion_rs.pystill leaves the middle bosses out of its rows; their motion with the copied clips is unchecked there.
- Which Data Bug the report met (Mistral's quest, B3) was not identified; the fix covers all 45 rows but none was checked in that dungeon. - The second model's look on screen (layer 5, alpha from the camera) was not compared with the game's pictures; only that it is drawn. -
-
nothing about these two paths. Whether any dungeon has a reachable cell whose room byte is 15 was not surveyed over every floor of every area.
-
effResistantShield's vector tweak on the brothers' shield (shown, not shaped); after msg 0's 21 the port keeps three gauges where the game shares Gorre's one (equal, and unchanged in the fight); theFinalPhotonFlash's picture. -
kind 2's camera reads
cameraGetPos/Rot/ViewofcamID, taken as the boss camera's; the bolts' picture (CMP_x012byBolt::segments) is not drawn; whether a retried fight meetsbossTbl's rows as the disc has them or with the core's added HP. -
- The 2 Outbreak
mainmotion cases left differ in a hit's number (8 to 9) and in the order a weapon's hits land; the damage paths' ownsqrtfs (damage, flow, drain, follow) were not checked for OUT'ssqrt.s. - Whether a Kite carried over from Mutation (ConvGame) would get through 206 withoutLONE_LEVEL; the run was only made from Outbreak's new game. - Whether the goal room's any-distance fights stall where a foe cannot be reached; none did in either story.
No. 305 — Outbreak's 206 in the survey's budget and its whole story from the new game
- The 2 Outbreak
-
why the foes of field 84's room 0-2 and field 90's room 2-6 stop taking damage, whether they are out of reach or not being hit; whether Black Death can be hurt at any level, and what
exdefense2 does; whether the game really ends SEARCH TUKASA at the second meeting; and whether a Kite carried over from Mutation would need the level aid.No. 306 — Outbreak's side events surveyed under the story autopilot
-
why Infection's drained forms feel too tanky (a pad log of the fight is needed); the one-ULP float in Outbreak's Kite
MainAI record (word 34 of 71); which debuff lowers Black Death's mDef or the Gaia Turtle's pDef below the table in play; whether a Data Bug's two blows in one frame (SIGN-7) happen on the game as they do in the port.No. 307 — Outbreak's foes that took no damage: Exdefense, and two area rules
-
what the leftover OUT mismatches in
test_battle_flow_rs.py(area_itemreturns,skill_mainaffects) andtest_battle_drain_rs.py(the erosion, 176 of 200) are; they predate this and are notsqrt.s. Whether the Grunty's stick matches on OUT (its harness does not run there). The other crates (piney-world's field objects, piney-effect, piney-audio) still call newlibsqrtfon every volume.No. 308 — Outbreak's sqrt.s in the party's distances: Kite's harness at 0
-
whether the issue 3 reporter's build predates the face fix (the report has only a picture; no way back to a town found without it). newlib's
rand()is one sequence through the whole game, so the NPCs' picks in the port are the game's kind of draw, not its values. The native check ran on Infection only; Mutation's and Outbreak's listings match but the eemu harness is Infection's.No. 309 — Back in town: the members' kit and the trade lists restocked, their faces
-
- Which build the issue 5 reporter ran. Also unchecked: three spots that could leave an orphaned condition effect: -
selectTarget's clear, dropped when the party is wiped (combat/mod.rs ~2155, ~1595); -EnemyRetargetflushing another enemy's output under the current one (enemy_motion.rs ~589); -clear_condition_all_enemy, which leavesconditionNumas it is. - The attack cursor's scale branch (0x0051f21c) may read the previousf20where the port usesca. It is untested.
- Which build the issue 5 reporter ran. Also unchecked: three spots that could leave an orphaned condition effect: -
-
whether the reporter's party was under Wonder Battle. If it was, the video's chatter may be the game's own loop at a Wavemaster's 1800 edge, unless the game's foes drift less than the port's. No capture of the game was at hand to compare. Why BlackRose (a Heavy Blade, territory 1500, stopRange 100) chattered too was not reproduced. In one run a walking PC (body id 268, kind 2) pushed Mistral about 50 units during her talk, after which she no longer faced Kite; that was not looked into.
No. 311 — Two player reports: a member spoken to while running, and the party's battle chatter
-
- the reporter's steps for all three, which a
--pad-logwould give; - which field and foe #5's sparks came from; - whether the game's camera shows a member so near; - worklog 311's walking PC pushing a talking Mistral, not looked into.
- the reporter's steps for all three, which a
-
- The Ryu Books (273-280,
ccThBook0x0041a990, theBOOKclass) are still not ported; the Book of Law does not need them. - Whether the report's box was room 4's; the screenshot's room is not named. Other gimmicks whose owner moves the body were not surveyed.
No. 313 — Three player reports: a scroll's cast, the Book of Law, a story box's body
- The Ryu Books (273-280,
-
- The later volumes' riding Grunty (
ccPucciguso's new members andControlMove's physics) is not ported; the ride harness fails on MUT and OUT. -outbreak_whole_storyandmutation_whole_storywere not re-run after the hold rule and the roots changed.
- The later volumes' riding Grunty (
-
nothing about these three rules. The reporter's own order of play is not known (in the screenshots Elk is in slot 1); it does not change the cause.
No. 315 — Three player reports: Elk left in the party, Natsume's talk, the Gott statue's hold
-
whether the report's picture is the frame Kite fell (the fade above) or another way to his marker; that needs the reporter's
--pad-logof that fight. -
- Books 4-8's pages and rewards (
type3-7) are not ported ([[317]]). - The cover's palette from the second book on is not swapped. - No test turns a book's pages or takes a reward yet.
- Books 4-8's pages and rewards (
-
- Every character drawn through
Bodynow fades with its clips' transparency keys. No other clip was checked by eye for a change this brings.
- Every character drawn through
-
the other session tests that reach the desktop through
new_gamestill drop those frames' events. They test no sound, so nothing else rests on it. -
nothing about this call. Whether a mode's set-up can start its own bank before the 8 frames are up (cutting the fade) follows each mode's frame order and was not checked per mode.
No. 321 — ccSoundFadeOut fades the music over 8 frames instead of cutting it
-
nothing about the option. The volumes' change from the same page reaching the driver a frame after the game's is [[101]]'s task order, which is still open.
No. 322 — A skill's words follow the Voiceover option the moment it changes
-
nothing about these two. A script loaded from somewhere other than the four executables (none is known) could still reach them.
No. 323 — "prev_room and hold 7: no script of any volume uses them"
-
whether a name built at run time (
sprintfarea and model names, names read fromenemyTbl,gimmickTbl,npcTbl) can miss its category's table, which would walk past the table's empty terminator. That needs each builder's name pattern checked against the tables.No. 324 — "File-list entries: deleteCnt is a reference count, addFlag is always -1"
-
what
eventAreaNumber126 loads for Quarantine's ending (event 314,scenefield 126; INF'seventAreaInfohas 126 records, 0-125); the port gives area 126 no words and has not played it. What fills OUT's and QUA's BSS message groups is still open from [[24]].No. 325 — "The later volumes' changed event cases: seven compile differently, six change behaviour"
-
whether a script's fade and a menu flash ever overlap in play, which is the only case the two copies differ in. Not surveyed. The port keeps them apart.
No. 326 — The gate menu's flash drawn in town on the menu fader
-
whether the real sound thread runs
sdCommandbetween the 4 and the CD load's end, turning the reverb off for the load's length (the harness loads at once). The port treats the load as instant.No. 327 — "The jukebox clears the reverb; ccSnd +98 and +0x110 settled"
-
no test rides a carrier to a marker. Which areas set
GetTransModeand usenear_markerthere was not surveyed. The other half of [[134]], the statue room's doorway in area 18's dungeon, is still open.No. 328 — "near_marker's distance: the player's posP is FZeroPosition with his ground height"
-
no test drives a town or field pass into a mode change, since no script does it. The load's frames between the passes at 2 and 4 are still taken as none (docs/engine/event-vm.md Unknown).
No. 329 — "The field's set-up passes checked: ccEnableThEvent and the game+4 exit"
-
nothing about the frame. The rest of [[74]]'s list (the battle pieces,
pc_command's walks, Kite held, the party back in Mac Anu) is unchanged.No. 330 — "scene does not sleep the event task: the pass runs on in its frame, disabled"
-
whether the later volumes ask for 0x1000 anywhere (their
ChangeRequestcalls were not listed). The rest of [[15]]'s list (each mode's tasks and their priorities,ccSystem::Ctrl's other branches) is unchanged.No. 331 — "Modes 1 and 0x1000: the soft reset, and a stop nothing asks for"
-
the mono pan law was not heard against the game.
No. 332 — "The Mono option reaches the synthesizer: ccSetOutputMode and sdCommand 3"
-
nothing about
CheckOperate. The rest of [[90]]'s list (members in town, the gate's invite warp-in) is unchanged.No. 333 — "CheckOperate run against the game: 600 random cases"
-
how the kernel orders tasks of equal priority (the title's, the desktop's and the top page's two at 33), taken as their start order.
ccSystem::Ctrl's other branches ([[15]]) are unchanged.No. 334 — "Each mode's tasks and priorities; the port's menu task runs after the world's"
-
nothing about +0x08. The rest of [[95]]'s list is unchanged.
No. 335 — "vBank+0x08 is never read: SEWORDS' wordPlay takes the offset, size, volume and name"
-
the remaining frame-level order inside the world's own step (the camera,
ccThSpc,ccThEntryCtrl, the effects,ccThSkill) was left as it was. The rest of [[101]]'s list (the chat balloon, the skill row's type bit) is unchanged.No. 336 — "The menu task runs in its place: ccThGameCtrl, ccThMenu, then the world"
-
the line's text was not compared with the game's in town. It comes from the same tables as the field's.
-
what wrote 0x8d84-byte slots into Infection's directory (a later volume, a save tool, or another release); and whether the reader takes a real PCSX2
.ps2image as it takes the built one.No. 338 — "Saves from PCSX2: a PS2 card image reader, the import, and Infection slots of 0x8d84"
-
nothing about the offset. A television's overscan, which hid some of the edge the offset brings in, is not modelled: the port shows the whole frame and the black where it moved, by choice.
No. 339 — Adjust Screen moves the picture: SetDisplayOffset's units, and the presenter's shift
-
the merge circuit's arithmetic on the console (ALP / 255 as PCSX2 takes it, or a shift); whether the user wants the deflicker on by default.
No. 340 — The frame-mode deflicker: read circuit 1 a line lower, merged at ALP 127
-
how many frames the stream takes to set its +0x17e bit 3 before the loop looks at the pad; the port starts on the stream's first step.
No. 342 — The opening stream's flashes over the stream: the cancel's and the end's
-
a lake's way between its two dungeons is still not run against the game's own (
Enter,GO(2),GoFieldread from the code); whetherSetItemBoxplaces a box already opened again on the way back (a second take of its item) is not checked.No. 343 — A lake's dungeons: every entry goes with the scene, and entryFlag places them again
-
whether any of the streams' files (
STREAM/*.BIN) carry an Obj2 chunk with bit 0 (onlyDATA.BINwas read); the stream player draws through its own code. -
the one-frame difference in the message window's
modejust after a book closes (frame 471 oftest_book_8when run past its closing frame; Books I-VII's scenarios also stop on that frame); the cover's palette from the second book on ([[317]], [[318]]).No. 347 — "Ryu Books IV to VIII: their pages, lists and keys, each run against the game"
-
the state that silences a revived member in the room of its fight. A pad log of a run that shows it (the console's
pad_logwrites the run since power-on) would replay it exactly.No. 349 — "A revived member who ignores orders: not reproduced; what was ruled out"
-
what the console's Tab report meant (BUGS); the REGION_REPEAT path reads a frame-buffer copy by its own texel count, so a repeat-clamped copy at a scale above 1 would mask in physical texels (no frame drawn so far reads a copy that way).
-
- [[226]] took Mutation's recall boards (
MDL_blackbord_a01) as models without a box, and left open why their cross-fades come out black. If those boards are rigid they now key on their box centres, which may be the smooth fade 226 suspected. Not yet looked at. - The port does not cull by the box (_ccCheckBoundingBoxEx, VU0mc0_CheckBoundingBox). That cull only drops models wholly outside the view.
- [[226]] took Mutation's recall boards (
-
the menus, the message window and the towns' own displays keep their size; which corner each menu should keep is a choice not yet made.
No. 354 — "A HUD scale: each HUD part shrinks toward its own corner"
-
- The pilot opens no idols, so event 22's cures (and any story item an idol holds) are not taken. Event 22 onward is unrun. - Why
in_battleheld at 1 in field 28 with no fight; a pilot that waits on it can stall. -story_survey(one start at a time) was not rerun across 1-31 after these changes; the game suite's pilot tests pass.
No. 358 — "Infection's whole story under the autopilot: the pilot's gaps up to event 21"
- The pilot opens no idols, so event 22's cures (and any story item an idol holds) are not taken. Event 22 onward is unrun. - Why
-
- [[358]]'s field-28 hold (
in_battle1 with no fight) did not come up again and was not explained. - The run plays with god, the infection held at 0 and cores given for the hacks; how the story goes without them is not measured.
- [[358]]'s field-28 hold (
-
- Whether a player at those levels clears area 26's room (three Armor Shoguns and a Grand Mage) in the game; no capture of that fight. - How Skeith's own drain picks its targets in a full fight without god; only seen at the end of one wiped run.