# Ambient sound locations and identified effects

The [2D city map](../analysis/city/index.html) and [3D city explorer](../analysis/city/3d.html) show 30 recovered Delphi sound-source positions. Toggle **Ambient sound locations**, click a marker, or select a source from the dropdown to inspect its coordinates, identification confidence and baseline audition. The 3D dropdown also visits the cell.

Coordinates below are zero-based **(column, row)** in map resource 00/68. All source positions are cell centres. Overlay colours distinguish bells (gold), small beacons (cyan), and regional sources (pink). 3D markers show horizontal footprints, remain visible through geometry, and are inspection annotations; they do not represent source height, audible range, or the set of voices currently playing. Halon and underground sound locations have not been mapped.

## Fixed bells

The four bell records sit exactly on **type 105 bell towers**, surrounding the fountains. They are hardcoded positional emitters, not sound references embedded in the fountain or tower meshes. Listening during gameplay supports the identification.

| Effect | Cell | Pitch parameter | Repeat timer units | Approximate seconds |
| --- | --- | --- | --- | --- |
| 385A | (56,65) | 1300 | 1024 | 2.048 |
| 386E | (61,65) | 918 | 1072 | 2.144 |
| 3882 | (56,70) | 770 | 1120 | 2.240 |
| 3896 | (61,70) | 650 | 1168 | 2.336 |

All four use patch 1 and native height 1024. Callback `36C1` advances each previous deadline and clears retrigger bits. Distinct pitches and intervals explain the overlapping tolls. Mixer voice availability still affects playback. Timing uses PIT rate `1193180 / 2386`, approximately 500.075 timer units/second.

## Regional industrial sources

| Effect | Candidate cells (underlying map type) | Identification |
| --- | --- | --- |
| 380A | (21,15): 84; (116,58): 85; (115,112): 0 | Periodic power-complex ambience, inferred from location; not listening-confirmed |
| 381E | (23,12): 83; (111,59): 0; (111,112): 0 | Tentative power-station identification from listening, supported by positions |
| 3832 | (31,13): 80; (23,44): 80; (52,15): 80; (50,38): 79 | Factory chimney ambience generally, identified during gameplay; source positions verified |

These are **region-selected proxy positions**, not one emitter at every matching building. Empty cells between power-station components are intentional source coordinates. Each record selects one candidate using listener coordinates; the overlay displays all candidates for inspection.

Tables `3774` (380A), `377E` (381E), and `3788` (3832) each contain two threshold bytes followed by four packed cell words. The source selected by `36E2–3702` is:

| Listener region | Table word offset |
| --- | --- |
| x < threshold, y < threshold | +4 |
| x < threshold, y >= threshold | +2 |
| x >= threshold, y < threshold | +8 |
| x >= threshold, y >= threshold | +6 |

380A and 381E use thresholds (64,88); their x<64, y>=88 region is disabled (`FFFF`). Callback `36DB` also rejects these when byte `7E61` is nonzero. 3832 uses thresholds (40,26) and enters after that mode check. 380A repeats after 1920 timer units (~3.84 seconds); 381E and 3832 have zero stored duration (continuous). The 3832 audition includes its original clock-driven pitch modulation.

## Small radar-beacon beeps

`37A6` selects a source on the Cartesian lattice **13,49,85,121 on both axes**, matching all 16 type-12 cells in Delphi. Callback `3685` calls `3AFD` to select the nearby lattice point, rejects out-of-map coordinates, and checks mutable state bits `E0`, rather than explicitly testing the model type. Timer-change bit `0200` gates retriggering. Stored duration is 112 timer units, native height 1664. These 16 markers represent possible positions for one selected source, not 16 simultaneous voices.

## Other identified sounds and remaining work

- `3792`: Caero boost activation (Enter), confirmed during playtesting and by handler `B956–B977`.
- `37CE`: another full boost-reserve pip, confirmed during playtesting and by HUD update `5700–571B`.
- `38AA`: Caero weapon/control confirmation. `B903` selects `38D2` for other craft. Also used for engine/shield controls.
- `38FA`: Skimma shield startup/ready sequence. The E handler sets pitch `0302`, duration `FF`; display code later sets pitch `0362`, duration `12`. The stored baseline audition has different pitch/duration and is not an exact rendering of either triggered phase.
- `37BA`: energy-beacon continuous sound. Callback `372F` selects the nearest energy beacon, sets level to 218 times its state byte, and positions the source at native height 2400. Its stored zero level explains the missing baseline audition. Not included in this overlay yet.
- `3846`: landing/gate-associated source, controlled by landing coordinates `C81E` and byte `3708`. Descriptive identity is not listening-confirmed; no fixed marker has been invented for this dynamic source.

Gameplay observation: **type 11 are tiny streetlights**. Flying closely among them, away from an energy tower, appears to yield roughly one bar on the charge meter. Their possible contribution to brightness/charging is **unconfirmed**; trace the brightness and charging calculation before attributing this to the streetlights. No ambient sound has been attributed to type 11.

Follow-up: playtesting shows that crashing into a type-11 streetlight leaves its destroyed model visible during the player's death-camera pullback. Bank 30's type-11 definition at pool offset `0874` does have a damage link to `096C`, consistent with this observation. The collision-to-state mutation itself has not yet been traced; this does not establish equivalent collision damage for other buildings.

The recovered Caero recharge path (`7F35` → `8450`) only accepts type 1 at the nearest energy-tower lattice position and does not sum streetlight contributions. Its distance falloff has no occlusion test and can return weak power well away from a tower. Residual tower power is therefore a possible explanation for the reported low meter reading, not a demonstrated streetlight effect. A separate visual-lighting contribution from type 11 remains unresolved.

Observation clarification: there is no observed dynamic visual illumination from these lamps; ground-light artwork is part of the models. The observation to investigate is specifically a **one-bar minimum charging/light-meter reading near a streetlight**, absent elsewhere between towers. Do not dismiss this proximity-dependent report as residual tower power without a controlled trace. Likewise, the destruction observation concerns whether **player collisions trigger damage-state changes for streetlights but not other buildings**, not whether a damage model exists. Both comparisons remain open investigations.

## Reproduction and evidence

Run `PYTHONPATH=/tmp/darker-python python3 tools/inspect_ambient_sounds.py` to inspect native records and execute callback checks. [Verification results](../analysis/audio/effects/ambient-verification.json) cover four bell schedules, twelve regional selection cases, sixteen beacon positions/schedules and sixteen state-gate rejections. These are isolated original-code checks, not full mixer/gameplay tests.

[Identifications](../analysis/audio/effects/identifications.json) contain descriptions, confidence and source cells; [native source data](../analysis/audio/effects/ambient-sources.json) retain heights, pitches and region-selection examples. `tools/ambient_map.py` supplies both viewers from those identifications. Rebuild with `python3 tools/inspect_city.py`, `python3 tools/city_scene.py`, and `python3 tools/effect_gallery.py`.

The type-12 lattice also controls regional contact-display coverage: see [radar beacon logic](small-beacon-radar.md) for native-code checks and damage behaviour.

Follow-up: [player collision and damage](player-collision-and-damage.md) now verifies the streetlight-specific crash mutation, controlled native geometric sweeps, and the exact limits of the player damage cheat. Earlier open questions on that response path are superseded by these tests.
