Repository navigation
port: faithful turns, stops in clip frames, facing through flips - #133
Open
sp00ktober wants to merge 18 commits into
Open
sp00ktober wants to merge 18 commits into
sp00ktober wants to merge 18 commits into
Conversation
… facing holds through a flip `moves.curve` wrote the clip's turn keys only for `turn = "clip"`, so a step that turns toward the target lost the facing `carry` took out of its pose (clip 203's -90 swing, the first step of every claw-stamp combo). Every turn mode now plays them, under the entity's own yaw. `travel.body_turn` read the somersault's facing as -69 then +171 degrees once the body was upside down. Frames whose summed (w, y) is under 0.7 per child (tipped past vertical) now take the facing interpolated between the nearest frames that are not, held beyond them; a clip with none keeps its raw twist. Clip 225's keys turn 15.4 degrees a key at most and end at 12. The Zinogre's own moves now need 4218 turn keys (2432 before) against the 2944 the registry holds: the pool is B2's to size. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
A handler's TURN rate is `trunc(deg * ent[0xAC4] * 65536/360 + 0.5)` and the walk did not know ent[0xAC4], the clip's speed, so every rate fell back to the host's 64 units a frame. The walk's motion now holds it at 1.0. The rates that depend on the word at +0x540 off the global object (5.5 degrees where it reads 2, else 4) read the same `splice.GLOBAL_540` the script's `switch_global_540` is answered with: `Walker` takes `pointers`, global pointers by address with the words read off them. Every hunter turn of the Zinogre now has the donor's rate: 546 (3 degrees) for the combo openers, 728, 1001 for the stamps' re-aim, 1092 to 1365 for the others. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… rest A step on a clip that does not loop is cut by `stop`, the clip frame the walk's cursor stood at when the handler handed over, never by `length` in AI frames: the engine holds the cursor through a blend, so 30 AI frames left the backflip at 54 of its 60 (clip 25's joint 0 at 388 where the next clip starts from 134). `length` is left to a step on a looping clip. 14 of the Zinogre's steps went from `length` to `stop` (p3_7_33: 60). A step with a lift, a jump, ends on no wall: its clip counts as a loop, which a run ends at one, and the leap was cut short mid-air. It stops at the last frame whose height is at rest or above, so the landing clip takes the fall instead of the tail that sinks under the floor: p3_225_air at 39 (its lift reads -54 at 40), p3_209_air at 36, its lift never under rest. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The Turn row listed only the modes a person picks, so a move with `turn = "aim"` (a derived move) showed whichever mode was checked before it. It lists the derived modes after them: Aim turns exactly onto the target along the donor's code turn, and its button is on only for a move that has a code turn, which the game would refuse it without. The Hunter and Away tips say target. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
A hunter turn whose rate the walk lacks falls back to the host's, as before, but now says so (`P3_OWN_MOTION`), as it does for a rate out of range. Every rate of the Zinogre resolves. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The facing through a flip (`travel.body_turn`) changes the turn keys and the root's turn of 4 of the Brute's clips (7 degrees at most) and 20 of the Zinogre's. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…rt a path's stores negu, max, min and cvt.s.w on known values; lwc1 of a word the path stored; Walker.run(persist=True) reports every store to the entity as a Site, for a caller that carries cells from one run to the next. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…f a handler A walk can be at a bearing D: the side rule and the angle of the target are answered for it, the cells the handler stores are carried from frame to frame, and the yaw it adds is the step's code turn. Walk.arms samples D at 45 degrees, finds each change of plan to a 256th of a turn and gives the arcs that play one plan: a turn by code that comes to D itself is an aim turn on its curve at 90 or 180 degrees, one that does not a curve that stands; a fixed turn that varies with D is left out. Pairs of one handler that differ in what they hand over to share their arms. The blend a handler hands over with is the last step's. A clip is answered as blending in for the AI frames it was played with, where it was answered so all clip long: p3_7_0 and p3_7_236 turn at 1092 over frames 0 to 24 and 455 over 26 to 38, as the donor does. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Move.pick: no clip and no slot; where the target stands to the left of the move's facing, in 256ths of a turn, the script enters one of its variants. The splice compiles it to nested if_target_in_arc and, with an own move after it in the pair's list, one combo of each variant and that move; moves.slots, the module and the capacity check leave pickers out, moves.combos has a combo per variant. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…a variant per arm own.expand asks the walk for the arms of each pair a chain does not hand over to (that one is an after, so one move): more than one makes a picker, p3_2_26, over p3_2_26_a0, ..., each a chain of its own, entering the pair's list as combos where the list names the move after it, and handing over as any chain does where it does not. A turn by code is the step's code_turn, an aim one where it goes by the bearing, its aim_out the blend the donor hands over with. Variants equal across pickers are one move (the pairs of one wrapper handler share four), and a picker whose variants came to one is that move. A cost on a picker is on its variants; travel is held to what a move holds. The Brute: (2,19) plays clips 31 or 32 by the side and (7,14) three plans by how far round the target is, so both are pickers (16 own moves, was 10). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…'s pools hold them (1,1), (2,5), (2,6), (2,26) and the 38 turn wrappers are derived: two variants by side (clips 11, 39, a fixed 20 degrees), one move each for the sidesteps (a fixed 90 degrees and their travel), four by the bearing (clips 9, 38, 37, 8, aim turns on the curves of 90 and 180 degrees), and four shared by every wrapper, which stop where the donor hands over (clip frame 52 or 62) and slide the rest of the angle over 6 or 10 AI frames; a wrapper enters one combo of a variant and the move it leads to. 137 own moves (125), 88 combos. EM_KEYS, EM_SAMPLES, EM_TURNS and EM_LUNGES hold the Zinogre's need (4711, 1447, 322, 10) and a fifth, to a multiple of 64 (4 for lunges): 5696, 1792, 448, 12. EM_MOVES is 36976 bytes, was 30576. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…m is left out Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… not away from the hunter The studio's turn label read an aim steer as away; it and the hunter's say the target, as the move player aims at it. A picker has no clip, so the studio's check of own moves leaves it to its variants. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…icker branch Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The derivation's fixes from the second Zinogre play test (F1, F2, F4, F6-F9) on #132's framework.
ent[0xAC4]= 1.0,splice.GLOBAL_540) and its blend-in window.body_turnbridges the frames where the twist about y is ill-defined (a body upside down): clip 225's facing no longer flips 240°.stop), not an AI-frame count; air steps end on no wall and at their last frame at or above rest.if_target_in_arc; code yaw curves becomecode_turn(aimwhere the donor scales them to the angle). The 38 turn wrappers share 4 variants and reach their attack through combos.Live, lane 3, size 0.5: no hub frame in 142 hand-overs; the somersault lands as MHP3rd's model in 8/8; the turn variant matches the bearing in 48/49; aims and lunges at the Felyne within 1°; 20 min with no crash.
Tests: mhfu-port 1195, mhfu 1692, framework 808, studio/monster 1640 passed (with #129).
🤖 Generated with Claude Code