Entry 138

The dungeon doors', the Chaos Gate's and Kite's town footsteps' sounds

Documented in Leaving the town - Kite in a field and its dungeon.

Filescrates/piney-world/src/dungeon_area.rscrates/piney-world/src/field_world.rscrates/piney-world/src/lib.rscrates/piney-world/src/motion.rscrates/piney-game/src/world.rscrates/piney-game/src/session/tests/shrine.rscrates/piney-game/src/session/tests/event22.rsdocs/engine/dungeon.mddocs/engine/field-walk.mddocs/engine/field-game.md

This came out of a sweep of the docs' Unknown lists for small gaps a player would notice. DungeonArea::move_door already worked out when a door opens or shuts, but FieldWorld dropped the result, so the dungeon doors made no sound.

MoveDoor (gcmn 0x005cd3d0) picks the sound from two jump tables, @8659 for opening and @8664 for closing. Both are indexed by DUNGEON.type (+0x10, confirmed by DWARF) and give the same sound for each type:

type  0 1 2 3  4 5 6 7  8 9
se    45 46 47 51  45 46 47 51  48 48

DungeonArea::door_se names the sound. FieldWorld sends each door's sound through the path the weather's sounds already take: an Op::Se3d in the ambient calls, which the area plays at the door with the active camera's ear.

the_doors_sound_as_they_open walks area 26's dungeon (type 3) to event 29's room. The rooms with enemies open their doors when cleared, and the walk hears sound 51 nine times.

The Chaos Gate's circle

Mac Anu's Chaos Gate had the same gap. Gate::step returned ccChgate::gateAnm's sound, 71 thirty frames after the circle starts opening and 72 as it closes, but the town never picked it up. World now keeps each sound with the gate's position (take_gate_sounds). The town plays them as Se3d with the active camera's ear, next to the Administrator's sounds.

the_gates_circle_sounds starts in Mac Anu, gives the gate the menu's command 11 and, 100 frames later, command 0. It hears 71 at frame 31 and 72 at frame 100.

The gate-hack run never reaches 71, because the town sleeps under the hack before the circle's count gets to 30. The game's count stops the same way.

Kite's footsteps in town

In a town Kite is piney-world's Player, not the battle's Kite, and its anim_ctrl stepped his animation without reading the notes. So he ran through Mac Anu without a sound. It now steps with forward_notes, as _AnimateForward then NoteProcess do, and turns the footstep notes (1 and 2, as ccPlayer::CheckNote reads them) into ActEvent::Step. The town keeps each one with his position and the ground's attribute (World::take_steps) and plays it through se3d::spc_note, as the fields play the battle Kite's. kite_has_footsteps_in_mac_anu runs him for 90 frames and hears 12 steps. His running dust in town (ccEffPawSmoke) is still missing.

The same sweep found one stale line, in field-walk.md. It said the party's field AI was not ported, but the members follow and fight through the battle's ccAI, as the walks' shots show. The line now says so.

Still unknown

ChangeClut, the door palette swap for clutType 3 and 4, is still not ported.