Entry 125
"The drain streams' effect tasks and the Data Drain banner"
Filescrates/piney-stream/src/effect.rscrates/piney-stream/src/lib.rscrates/piney-stream/tests/effects.rscrates/piney-stream/examples/stream_shot.rscrates/piney-game/src/stream.rstools/test_stream_rs.pydocs/engine/stream.mddocs/engine/field-ui.md
Data Drain's movies played without their glitches. Neither Kite's drains (streams 108-111) nor Skeith's (18) had their noise, inversion or flashes. Skeith draining a member (stream 20) also had no letterbox and no "Data Drain" title. Stream 17's task was also missing.
Func_str8000runs the drain movies. It isFunc_str0300with two cues changed: 999 falls back toframeEnd, and 75 has no case of its own. Skeith'sstr9102runs it too.Func_str9000runs the member drained.- It letterboxes the view with
SetFrame(0, 30, 512, 324, 256, 162, 1, 0.84375). [[121]]'sFramecarries it. - It makes a banner when the game is running: a
ccMaskon a layer of its own (101), textured withxeffect'sTEX_detadrain. Every pass it draws the 256 x 20 title at (128, 10). - The texture is
DATA.BIN's, so the player passes it in:Options::skill_names, whichpiney-game's stream player sets.
- It letterboxes the view with
Func_str9001runs stream 17, each cue throughFunc_str9001sub.
The harness
The banner's sprite made the effects harness find three gaps:
ccSprite::MakePacketStrreturns at once whilefontTexis 0, which the game has long set by this point, so the harness now sets it.ccSprite::SetTexlooks the texture up in a CCSF file the harness does not have. It is hooked to give a marker TEX0 (256 x 128, PSMT4), which the GS model namesccs, as the Rust side namesTexRef::Ccs.- The sprite's GIF packet writes TEX0 in PACKED mode (register 6), which the decoder now reads, with CLAMP.
Every earlier fixture regenerates unchanged.
Checked
crates/piney-stream/tests/effects.rs runs these streams against the
game's tasks. Every pass matches by hash, and so does rand:
| stream | passes | primitives |
|---|---|---|
| 109 (a small enemy's drain) | 353 | 642 |
| 18 (Skeith's drain) | 353 | 642 |
| 20 | 353 | 884 (352 of them the banner) |
| 17 | 1,103 | 1,635 |
drain_movie_shotsshows the drain movie inverted and broken into bands at frame 161.stream_shot --stream 20 --bannershows the "Data Drain" title in the top bar of the letterbox.- The workspace's tests, clippy and fmt pass.
- Stream 20's fog, and the members drawn into it in
stream_shot.stream_shothas no party members; the field'sStreamMenudraws them. - Unported tasks.Func_str7100(the gate hack's movie),Func_str8800(streams 112-119) and stream 15'sFunc_str0580andFunc_str0581are not ported.