Files
leggenda-del-regolo/docs/STATO.md
T

586 lines
58 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Stato dei lavori
Ultimo aggiornamento: 25 ottobre 2026. Da leggere insieme a `PROGETTO.md` all'inizio di ogni sessione.
## Da riprendere (chiusura del 25 ottobre, notte)
Online su 50037.manzolo.it tutto fino agli effetti ambientali di Codex. Aperto, da decidere con Andrea:
- **Chi racconta**: Andrea vive il 2007 o lo racconta da adulto? Al bar c'è ancora il segnaposto «Questo lo sa solo
Andrea»; le battute sul futuro (padel, Locura) dipendono da questa scelta.
- **Il furto**: un piccolo colpo di scena durante l'indagine (testimonianza, contraddizione); reazioni del paese.
- **Enigmi con gli spiriti** (scrivano del Trebbio, leone, San Pietro: lo stile per altri spiriti c'è) e **aneddoti
segnaposto** da far sostituire a Francesco Bacci e agli amici.
- **Frasi che promettono enigmi inesistenti** (soldi per il bar, moduli al Comune, porte «interessanti»): da togliere.
- **Consensi** delle persone vere nominate o ritratte (Gianna, Pappia, i sette ritratti dei Ringraziamenti).
- **Secondo capitolo**: le gare (passamano, carrette, caccia al tesoro, bandierine/lavanderine) e forse lì la scelta
del rione; musica delle gare.
- Il **leone fantasma** somiglia un po' ai leoni dei cartoni: Andrea non l'ha ancora commentato.
## Dove siamo arrivati
- **La folla dell'Ingorgo che salta (31 ottobre)**: nelle cinque scene della festa la gente dipinta nello sfondo va su
e giù a tempo (effetto `crowd` in render.js: la fascia della folla tagliata in strisce verticali, ognuna sobbalza sul
battito con una fase sua; due fasce per scena, dietro piano e davanti forte, al `bpm` delle luci della scena).
- **Il risveglio senza arretrati (31 ottobre)**: le palpebre si disegnano nette su una tela 128×72 e si allargano
con l'interpolazione (bordo morbido senza filtri né passate), tutto sulla tela principale, una versione sola. Con
la grafica software delle prove (swiftshader) ogni lavoro grafico si paga alla prima lettura dei pixel: dopo il
risveglio l'arretrato era di 24 s (filtro) o 14 s (sedici passate), ora un decimo di secondo; la 0.1.62 stava a 2,5.
Da ricordare per gli effetti futuri: niente `ctx.filter` e niente riempimenti trasparenti a tutto schermo ripetuti.
- **La Smarronata del 1993 (31 ottobre)**: la festa delle castagne degli alpini di San Piero, sotto il ponte sulla
Sieve fra il fiume e la strada del campo. Al Ponte sulla Sieve, sul lampione di destra, un vecchio cartello: si apre
ingrandito (primo piano `manifesto_smarronata`, Codex dal manifesto vero, senza lo sponsor), e toccandolo i ricordi di
Andrea (l'attesa, gli alpini che sfilavano suonando, i ricci disegnati a scuola) e la macchina del tempo. Il
cruscotto (17/10/1993), la partenza sulla strada del ponte, e la festa (`smarronata_1993`: il bruciatore delle
bruciate, i sacchi, la legna, gli stand della polenta e del vino, il cartellone, il ponte) e dentro il tendone giallo
(`smarronata_tendone`, le tavolate). Sfondi di Codex dai fotogrammi del video del 1993 (`assets/raw/smarronata/`).
«Torna al 2007» o la scaletta riportano al ponte, e la macchina sparisce. Dalle scene del viaggio (anche il
Barrettino) la mappa non porta più via. Test in `story.test.mjs`, prova `npm run browser:smarronata`.
Il tendone col tetto a botte e la fascia tricolore (come nel video), i cartelli dipinti della polenta e del vino gratis
da guardare nel tendone, il fuoco vivo sotto il cilindro (effetto `fire`) col fumo. La gente (sprite di gruppo di
Codex, inventati, vestiti come nel video): i volontari della Misericordia alle bruciate («Che Iddio ve ne renda
merito!! A voi e agli alpini!»), la fanfara degli alpini, gli alpini della polenta e del vino, la gente coi cartocci
(anche nel tendone), le coppie del liscio che girano (`flourish` continuo).
La musica di Andrea (Suno): il liscio fuori, più forte vicino alle coppie (`stages`), la mazurca nel tendone.
[DA ANDREA] le battute.
- **Il minigioco delle bruciate (31 ottobre)**: dai volontari della Misericordia («Vi do una mano alla manovella?»), o
usando il cilindro, si sceglie il livello e si gira la manovella a mano (`src/engine/bruciate.js`, disegno in
`bruciate-render.js`, sfondo di Codex `assets/closeups/smarronata-bruciatore.png`). Il gesto: tenendo premuto si
fanno giri, grandi o piccoli e dovunque (conta quanto gira la direzione del dito); Spazio, frecce: una spinta a
colpo. Troppo piano le castagne di sotto si carbonizzano e quelle di sopra restano crude, troppo forte volano nel
fuoco; quando son cotte, «Rovescia nel sacco». Contano le buone su 18 (alla bona 10, seria 15, a fassi male 16);
vincendo, il flag `bruciate_fatte`. Test in `bruciate.test.mjs`, prova `npm run browser:bruciate`.
[DA ANDREA] le battute dei volontari; un premio (un cartoccio da portare via?).
- **Il flipper del River / Il Regolo (31 ottobre)**: «Usa» o «Apri» il River in Via Provinciale, livello e
partita. Motore `src/engine/flipper.js`, disegno `flipper-render.js`. Tavolo rifatto in lacca scura, metallo,
rampe con ombre e luci ciano/ambra/viola, riflessi sulle palline e plastiche in rilievo; scena a 1280×720 con
coordinate logiche 640×360, gli altri ambienti restano in pixel art. Fondale di Codex conservato nel riquadro
illustrato del backglass; niente pannelli sopra il Trebbio. Superfici e bagliori in cache, senza disegnare la
strada nascosta sotto il flipper. Pannello a destra con progressione, timer, moltiplicatore e prossimo obiettivo.
Alleggerito (1 novembre): il mobile statico sta sullo sfondo CSS della tela (`cabinetBehind`), la tela si pulisce
e basta; estremità e giunti arrotondati solo nei livelli in cache. Arretrato grafico da 4,2 s a 0,03 s per 150
fotogrammi (regole e misure nella memoria «effetti leggeri»).
- Rampe FORTEZZA e TREBBIO: imbocchi centrali da 36 pixel, 27 utili alla pallina, salite accessibili con colpi
medi, 15.000 punti. Tre passaggi sulla stessa rampa entro 20 secondi dal primo: LOCK e nuova pallina gratis.
Un'altra rampa completata o il tempo esaurito interrompono la serie. Dopo il primo LOCK, primo passaggio
nell'altra rampa SPECIAL: jackpot da 100.000; tre passaggi ravvicinati fanno il secondo LOCK.
- Due LOCK alzano la rampa centrale SUPER SPECIAL: 250.000 punti (× moltiplicatore), una pallina extra in
riserva e, dal 1 novembre, **Il Regolo del futuro**. Un botto sintetico grave, lampo, onde d'urto, schegge
colorate e scossa del mobile precedono l'apertura in due metà del piano classico. Trasformazione di 3,2 s:
le tre palline restano protette, poi vengono servite sfalsate di 0,55 s verso le palette.
Prima della SUPER, perdere la sostitutiva recupera l'ultimo lock senza scalare vite.
- **Secondo campo vero**, disegnato in codice: niente corsie dei rioni o banchi classici; altri respingenti,
raccordi, tre percorsi sopraelevati e Regolo mobile sopra le palette. ORBITA DEL SERPENTE (loop esterno,
35.000 a giro), PONTE DELLA FORTEZZA (ponte incrociato, 50.000), SPIRA AL NEON (spirale più ripida,
65.000). Imbocchi dal basso, salita con perdita d'energia, quota e uscita nelle corsie interne; un tiro
debole ricade senza punti. Tabellone digitale, circuiti e bastioni immaginari, luci ciano/viola/rosa,
pulsazione musicale originale sintetizzata con Web Audio. È fantasia del mobile, nessun fatto nuovo sul paese.
- **Tre sigilli**: completare due volte ciascun percorso, in qualsiasi ordine e senza scadenza, poi colpire
il Regolo mobile: +500.000 e ritorno al classico con pallina sulla molla, senza consumare vite. Anche
perdendo l'ultima pallina si torna al classico, consumando una sola vita; il punteggio rimane. La SUPER
si può riaprire. Durante il multiball perdere una delle altre palline non scala la riserva.
- Completare una serie di bersagli alza il moltiplicatore jackpot fino a ×3, azzerato alla perdita di una vita.
Restano PONTI (+50.000 alternando le rampe entro 12 secondi), PALIO (+30.000), respingenti, bersagli e Regolo.
Traguardi 60.000/120.000/200.000: una pallina premio una sola volta, vittoria acquisita anche uscendo prima.
- Uscite laterali da 14/12 pixel, corsie di ritorno alle palette più ampie. Il canale di 10 pixel dietro la
Pieve, che portava la pallina dritta nell'uscita sinistra, è chiuso da due raccordi inclinati (1 novembre). Valvola inclinata alla corsia di
lancio: il lancio passa, i ritorni dal campo vengono deviati a sinistra. Ogni pallina ha contatti, scia e
anti-incastro propri; urti fra palline, palette mosse una sola volta per passo. Pausa ferma anche i timer.
- Luci che scorrono sulle rampe attive, frecce e spie 1/3–2/3–LOCK, rampa SUPER che si alza, fasci luminosi,
scintille, particelle e fanfare distinte per jackpot, apertura SUPER e multiball; la pallina resta leggibile.
Comandi: mouse, due dita, tasto destro, frecce, Spazio e pulsanti; istruzioni in «Come si gioca».
- Test `flipper.test.mjs`: sequenze a tutti i livelli e in entrambi gli ordini, trasformazione protetta,
rilascio sfalsato, fisica e punteggi dei nuovi percorsi, tiri reali dalla paletta, Regolo mobile, finale,
ritorno e nuova SUPER, ball save, stato serializzabile e disegno senza mutazioni. I salvataggi dell'avventura
continuano a usare il checkpoint prima del minigioco, come gli altri primi piani; la pausa mantiene il
campo in corso e rilascia i comandi senza avanzare il tempo. `npm test`: 326 test verdi.
- `node scripts/verify.mjs flipper`: desktop e touch, comandi e pausa nel futuro, percorso fino al finale;
schermate di esplosione, apertura, futuro, sigilli e ritorno in `/tmp/regolo-flipper`, guardate e corrette.
Arretrato grafico misurato separatamente su 150 fotogrammi classici, esplosione/apertura e futuro, con
lettura dei pixel prima e dopo. Fondali sullo sfondo CSS, binari e pannelli in cache, onde e schegge leggere;
niente filtri o tratti arrotondati nel disegno dinamico. Soglia per ogni misura: 1,5 s.
Verifica finale (1 novembre): `REGOLO_GPU=0`, SwiftShader, classico/esplosione/futuro **31/56/26 ms**
desktop e **27/22/22 ms** touch. Anche il comando senza variabili passa, selezionando SwiftShader.
`REGOLO_GPU=1`: **30/17/25 ms** desktop e **23/18/20 ms** touch, ma il renderer effettivo è
`ANGLE (Mesa, llvmpipe (LLVM 21.1.8 256 bits), OpenGL ES 3.2)`: ancora software. In questo ambiente
non sono esposti dispositivi GPU; la misura su scheda video fisica resta da fare su un host che la esponga.
Schermate del secondo backend in `/tmp/regolo-flipper/llvmpipe`.
[DA ANDREA] battute, premio nell'avventura (`flipper_vinto`), record persistente per livello.
- **Dedica allo zio Mario (31 ottobre)**: nei Ringraziamenti, sotto quella al Lele e più piccola: «Al mio caro zio
Mario, che mi ha fatto vivere tante avventure più belle della fantasia.»
- **Il Taglia (31 ottobre)**: tolte le battute sulla sua altezza (Baldoria: non gli fa piacere).
- **Il Muro del Sanpierino sul telefonino del Barone (31 ottobre)**: il Barone ora ha un dialogo a scelte (le
mutande, oppure «Hai visto cosa c'era sul muro del Sanpierino?»). Col muro tira fuori il telefonino, che sale dal
basso come il libro (primo piano `muro_sanpierino`, `src/engine/telefono.js`, telefonino di Codex); nello schermo la
home di sanpiero50037.it dalla Wayback Machine (31 dicembre 2007, senza la data in alto); un tocco la porta a tutto
schermo, e il mattone «Nuovo muro del Sanpierino» apre il muro: una pagina vera sopra la scena (`assets/muro`, iframe
`#muro`), rifatta da `tools/muro.py` dal muro riesumato (`~/Workspaces/misc/spswall`): stesso markup e CSS, i 24
messaggi veri del dump di novembre 2007 (Andrea: «quelli veri»; senza email né IP). I 654 ritrovati nella Wayback
Machine (2004-2012) restano solo nel muro riesumato in locale, separati dal gioco (Andrea, 31 ottobre). In
cima quelli del gioco (`messages` del primo piano, ognuno col suo `when`). «Scrivi» spento, niente email (Andrea);
«Aggiorna» ricarica e fa comparire i messaggi arrivati con la storia; «Home» torna alla home sul telefonino.
Test in `story.test.mjs`, prova `npm run browser:telefono`. [DA ANDREA] battute e messaggi del gioco, le cose del
2007-2008 sulla home (Ingorgo Sottozero, dicembre), e i **consensi** di chi ha scritto sul muro (i soprannomi dei 24
messaggi; per i 654 dell'archivio, se mai entrassero nel gioco: togliere cognomi e messaggi pesanti, e un modo per
chiedere di toglierli).
- **Il risveglio sulla panchina (31 ottobre)**: la partita non comincia più con Andrea in piedi in piazza ma col
risveglio dopo una notte brava (primo piano `risveglio`, `src/engine/risveglio.js`): visto da dentro gli occhi, le
palpebre si aprono a fatica e ricascano due volte, la piazza è sfocata e doppia e ondeggia, poi si schiarisce; si
è sulla panchina dei vecchietti, che danno la notizia del palio sparito. Il pulsante «Salta» lo salta. Test
`risveglio.test.mjs`, prova `npm run browser:risveglio`. [DA ANDREA] le battute, e l'ultima riga dell'introduzione.
- **L'Ingorgo Sonoro (30 ottobre, extra)**: in piazza il vecchio manifesto dell'Ingorgo (`manifesto_ingorgo`); guardandolo
si apre ingrandito (primo piano `poster`, `manifesto-ingorgo.png`: Codex dal manifesto vero del 2014, senza sponsor né
data); toccandolo, «Quanto darei per essere all'Ingorgo stasera?!?», poi l'effetto speciale (primo piano `incanto`, `incanto.js`: fasci di
luce, cassa che accelera, lampo bianco, coriandoli) e il centro diventa la notte della festa (flag `ingorgo`, fase
`ingorgo`, sfondi di notte di Codex in `backdrops`). La zona (`story.zones`): Piazza, Via dell'Antica Posta, Piazzetta
del Comune, cima di Via dell'Antica Posta, Piazzetta Cambray Digny; uscendo (a piedi o con la mappa) si torna a maggio.
Alla festa si clicca solo per spostarsi (zona con `exitsOnly`: panchine, porte e statue non rispondono).
Le luci da discoteca animate solo alla festa (`stagelights`, `lasers`, `mirrorball`, `floorspots` in render.js), rinforzate
su richiesta di Andrea: colpo di colore a ogni battuta, strobo a raffica a fine frase, macchie che corrono sulla folla.
In cima a Via dell'Antica Posta le luci sono quelle proposte da Codex (`pixelbeams`, `mirrorball`, `stagechase`,
`pixelspots`): Andrea ha tenuto la sua palla a specchi lì, e le nostre «caciarone» altrove. Fasci che spazzano, bagliore a
tempo, strobo, laser alla tecno, palla a specchi all'underground. Le console (`stages` delle scene, `music.js` `mix`): più brani insieme, ognuno più forte vicino alla sua console, anche
da fuori quadro (la piazza accanto). Generi provvisori: house in Piazza, latino al Comune, underground in cima a Via
dell'Antica Posta, tecno a Cambray Digny; i brani sono di Andrea (Suno), portati al volume del gioco. Gli sfondi sono
pieni zeppi di gente fino in primo piano (Andrea); la prima versione, con la piazza vuota davanti, in
`assets/raw/ingorgo-v1/`. La voce legge «console» come «consòl» (`tools/pronuncia.json`).
[DA ANDREA] i generi veri per piazza, le battute, i bar a tema; da fare: spillare la birra (minigioco) e bere.
Il 31 ottobre: la folla davanti ad Andrea (dalla vita in giù, `crowdFront` in render.js), Andrea con la birra alla
festa (foglio di Codex `andrea-birra`: cammina col bicchiere, fermo lo alza a tempo), sotto una console si sente solo
quella (`mix`), in cima a Via dell'Antica Posta si arriva sotto l'underground. Via Calimara entra nella festa (sfondo di
Codex, console nel giardino con la palla a specchi) con la musica anni '90 di Andrea (Suno, `ingorgo-anni90.mp3`);
da lontano la house della Piazza e il latino del Comune.
Anche l'inizio di Via Cipriani (sfondo di Codex, console sul campo da basket, laser rossi e strobo, folla che poga a
180 battiti) con la hardcore techno di Andrea (Suno, `ingorgo-hardcore.mp3`).
- **Baldoria al campo sportivo (30 ottobre)**: Yuri Baldi, dei Ringraziamenti, al Campo principale con la maglia
blucerchiata e un bandierone della Sampdoria grande come lui, che ogni tanto sventola (`flourish` delle persone).
Sprite di Codex (`assets/raw/baldoria-sheet.png`; `make character … FIX=wave=1.2,…` perché Codex ha disegnato più
piccole le figure col bandierone in alto). Un dialogo breve. [DA ANDREA: le battute; la somiglianza va rivista con
una sua foto]
- **La campana al campone delle poste (30 ottobre)**: dal Taglia, «E una partita a campana, Taglia?», poi il livello.
Primo piano `campana` visto dall'alto sul vialetto (`campone-campana.png`, Codex); la campana col gesso la disegna il
codice (`campana.js`, `campana-render.js`): 1-2-3, coppia 4-5, 6, coppia 7-8 e in cima il mezzo cerchio con scritto
CAMPANA (Andrea: non «cielo»), ogni casella tinta tenue col suo gesso. Il sassolino: la mira dà la direzione, tenendo
premuto la forza va e torna, si lascia; deve cadere nella casella che tocca senza toccare le righe (alla bona le
righe non contano e il puntino giallo mostra dove cade). I salti: la lancetta dell'equilibrio attraversa la barra e
si preme nel verde (presto: giù l'altro piede; tardi: pestata la riga); si scavalca la casella col sassolino e
tornando lo si raccoglie. Chi ce la fa passa alla casella dopo e ritira, chi sbaglia passa la mano; il Taglia gioca
da solo (in simulazione gli servono circa 22, 10 e 6 turni secondo il livello). Vince chi finisce la 8 (flag
`campana_vinta`). Test `campana.test.mjs`, prova `npm run browser:campana`. [DA ANDREA] le battute.
- **La macchina del tempo da fuori (30 ottobre)**: dopo il cruscotto, la partenza giù per Via Liguri Magelli
(primo piano `corsa`, `src/engine/corsa.js`): accelera, il fulmine la prende, il bianco, e restano due sgommate di
fuoco che bruciano e si spengono; al ritorno dal 1997 l'arrivo: il fulmine in fondo alla strada, lei viene avanti e
ci passa accanto lasciando le strisce. La macchina da dietro e davanti (coi lampi) è di Codex.
- **Lo zio Mario negli orti al tramonto (30 ottobre)**: dal tramonto (`indizio_regolo`) non è più davanti alla
Ghiacciomobile ma accanto al suo orto (`orti_zio_mario`), con una battuta provvisoria [DA ANDREA].
- **La Condor al campone delle poste (29 ottobre)**: la gara col Taglia (Andrea Tagliaferri, consenso dato) con la
pistola ad aria compressa coi pallini gialli (`condor.js`, `condor-render.js`, primo piano `condor`, sfondo di Codex).
Come la cerbottana: il mirino ondeggia col respiro; tenere premuto trattiene il fiato (il mirino si ferma), lasciare
spara, troppo e il colpo parte da solo. Il pallino cala con la distanza (alla porta in fondo si mira sopra). Il
cartone sull'albero (10/5/2), le lattine sulla panchina (3), le bottigliette sulla traversa (5), il palloncino
all'altalena (6), la lattina tirata in aria dal Taglia a seria e a fassi male (8). Si deve battere il punteggio del
Taglia (22, 34, 44 secondo il livello, ±3). Il Taglia sta al campone (sprite di Codex dalla sua foto, più alto di Andrea); si gareggia
parlandogli. [DA ANDREA] le battute.
- **La macchina del tempo e il pokerino del 1997 (29 ottobre)**: dall'Arcu sotto la tenda del Trappola, «Bei tempi
quando qui si faceva i pokerini…»: compare la macchina del tempo in Via Liguri Magelli. Dentro, il cruscotto (Codex)
compone 10/07/1997 18:30, poi tremori, lampi e il bianco (primo piano `viaggio`, `src/engine/viaggio.js`, tempi in
`TRIP` di `game.js`): si arriva al Barrettino del 1997 (`barrettino_1997`, scena `viaggio: true`: niente mappa né
strade; la porta o il pulsante «Torna al 2007», `scene.back` e `game.goBack()`, riportano nel 2007 e la macchina
sparisce: per rifare il viaggio si richiede all'Arcu), con l'Arcu che viene a guardare, Vannino (dalla descrizione di Andrea) e Pierino Parigi (consenso del figlio
Marco, 29 ottobre), sprite di Codex. Il pokerino (`poker.js`, `poker-render.js`): cinque carte col cambio, mazzo
corto dal 7 all'asso (colore sopra il full, A-7-8-9-10 scala), invito 2, punto 5, cinque mani. [DA ANDREA] l'interno
del Barrettino (è una proposta di Codex) e le battute.
- **Nuovi posti dalle foto di Andrea (29 ottobre, sfondi di Codex)**: Via della Compagnia (fra Via de' Medici, la
Pieve e Villa Adami), Via Cafaggio in tre tratti fino alla rotonda, la Provinciale sotto i platani, la passeggiata
sulla Carza (cascatella, orti, dietro le poste, sotto il ponte delle poste, gli orti dello zio Mario), la strada fra
il bivio della Provinciale e la stazione. Le strade vecchie passano ora da questi posti. Battute provvisorie
[DA ANDREA]; foto originali in `assets/raw/foto/`.
- **La cerbottana (29 ottobre)**: in piazza, la bottega di Pierin di Frilli sotto la tenda rossa; si compra lo stucco
verde e si tira al muro della piazza (`muro-cerbottana.png`, Codex). Motore `cerbottana.js`, disegno
`cerbottana-render.js`: si mira, si tiene premuto per il fiato (giusto al 70%: poco cade sotto, troppo va sopra), il
mirino ondeggia col respiro, troppo a fiato pieno si tossisce. Bersaglio di gesso (10/5/2), lattine sul muretto
(3), barattolo appeso (8, seria e a fassi male); 12 pallini, servono 30/40/50 punti; i pallini restano sul muro.
Test in `cerbottana.test.mjs` e `npm run browser:cerbottana`. [DA ANDREA] le battute, com'era la bottega, se far
comparire Pierino (è scomparso da anni: decide Andrea).
- **Il terrazzo di casa a Cardetole (29 ottobre)**: dalla foto di Andrea dalla finestra (il paese che sale e lassù
la Fortezza), Codex l'ha dipinta e ci ha messo davanti il terrazzo (`terrazza-cardetole.png`). Ci si sale da
«casa di Andrea» a Cardetole; la battuta dell'apparecchiare ora è sulla porta-finestra. Battute provvisorie
[DA ANDREA]. Come Cardetole, dice dove abita Andrea: da decidere prima di Pages.
- **La Ghiacciomobile nel muro (29 ottobre)**: non è più al circolino di Campomigliaio. In Via Liguri Magelli, prima
del tramonto (`!indizio_regolo`), è schiantata dentro il muro giallo coi mattoni rotti e senza targa
(`via-liguri-magelli-muro.png`, ritocco di Codex); dal tramonto il muro è rifatto e c'è la targa. Il motore ha le
varianti di sfondo per scena (`backdrops`, con `when`; `game.backdrop()`). Lo zio Mario (sprite di Codex dalla
foto di Andrea) davanti alla macchina che si gratta la testa; scala della scena rifatta (le persone erano troppo
piccole). [DA ANDREA] le battute dello zio (scherzava su tutto, anche sulla morte) e quella dello schianto.
- **GP di Fortezza, guida semplice (29 ottobre)**: alla bona e Seria si tiene premuto per il gas e lasciando si
frena; lo sterzo segue la strada da solo (scansa le buche, sorpassa, prende la miscela), ma oltre la velocità che la
curva regge il motorino scivola fuori verso la paglia (`SIMPLE` in `gara.js`). Ginocchio in terra resta con lo
sterzo vero. Il pannello nasconde Sterza, Frena, swipe e sensibilità. Test in `gara.test.mjs` e
`npm run browser:gara`. Seria più difficile (parere di Codex, simulato): sopra il 110% del limite in curva si esce
di sicuro (stun 1,2 s), la curva pulita dà una spinta, rivali a 0,81; CURVA! (preavviso) e LASCIA! sul motorino.
In simulazione: chi frena giusto 1° in 46 s, tutto gas 4°-5° in 55-59 s.
- **La pista col gesso (29 ottobre, modifiche locali)**: le Micro Machines sul parcheggio di Cardetole contro il
Chiaru (Matteo Chiarusi, sprite di Codex dalla foto di Andrea, accanto alla pista). Motore in `micro.js`, disegno in
`micro-render.js`: pista disegnata a gesso dal codice sopra l'asfalto di Codex (`micro-parcheggio.png`), un giro,
una spinta a testa (mira e carica come al biliardo), le macchinine di Codex (`assets/closeups/micro/`). Penalità
alla francese, per tutte si torna dov'eri: fuori, tagliè (curva presa dalla parte di dentro o erba saltata),
cappottè (urto forte), accompagnè (dito tenuto oltre la carica piena). Tre livelli: alla bona la guida mostra dove
ci si ferma. Test in `tests/micro.test.mjs` e nel browser (`npm run browser:micro`). Battute del Chiaru provvisorie
[DA ANDREA]; il Chiaru ha dato il consenso (29 ottobre).
Poi: si sceglie la macchinina (sei, il Chiaru tiene la blu), la forza parte da zero appena si preme e la spinta
parte quando si lascia; saluto «Vado a fare un girino alle case rosse» / «Vorrai dire un giochino!» / «Ciao Mattè»;
Andrea chiama Bertovo «Fabri». Musica sua: `assets/audio/macchinine.mp3` (Andrea con Suno).
- **Bertovo ora si chiama «Trappizzio Berti»** in tutte le scritte (Andrea, 29 ottobre); l'id resta `bertovo`.
Fabrizio Berti e il suo libro «Memorie di sport e di paese» nei Ringraziamenti; l'idea delle cartoline in `IDEE.md`.
- **I rinquarti di Bertovo (28 ottobre, modifiche locali)**: variante del biliardo in `rinquarto.js` e
`rinquarto-render.js`, con fisica, mira, carica e suoni del biliardo. Sei posizioni riproducibili dal seme,
diretto coperto da una biglia e almeno una soluzione di sponda verificata con `simulate` per ciascuna.
Un tiro per posizione: punto al primo contatto col bersaglio dopo almeno 1/2/3 sponde (bona/seria/male),
senza prima toccare biglie viola o birilli. Guide: fino alla seconda sponda / 65 cm e prima sponda / nessuna;
vittoria con 3/3/2 punti su 6. Esito del tiro, contatore delle sponde e riepilogo finale persistente.
Integrati primo piano, pannello, aiuto e dialogo `bertovo` con scelta del livello; Bertovo resta senza sprite
e senza scena: **Andrea decide dove collocarlo**. Battute provvisorie segnate `[DA ANDREA]`.
Ripresa verificata con `node --test tests/*.test.mjs` (22 file, nessun rosso, comprese le voci già presenti)
e 14 test mirati in `tests/rinquarto.test.mjs`. Completata l'animazione dei birilli durante l'esito
e nel riepilogo finale: anche un urto appena prima dell'arresto termina la caduta senza cambiare punti o risultato.
Verifica visiva Playwright/SwiftShader ancora da eseguire: in questa sessione la sandbox impedisce l'avvio
del server locale e di Chromium (`Operation not permitted`). Nessun `make voci`, commit o pubblicazione.
- **Briscola all'oratorio (26 ottobre)**: alle tavolate siede «Il giocatore di carte» (segnaposto, [DA ANDREA: chi è],
sprite e battute provvisorie di Codex). Parlandoci si sceglie il mazzo (toscane o napoletane) e il livello
(«Alla bona», «Seria», «A fassi male»), poi briscola a due fedele alle regole, conteggio delle prese a fine
partita e rivincita. Facoltativa: nessun flag serve alla soluzione. Motore `src/engine/briscola.js` (Claude),
disegno `briscola-render.js` (Codex), dettagli e taratura in `docs/BRISCOLA.md`. Prova: `npm run browser:briscola`.
**Tressette ai 21** (stesso giocatore, «Un tressette ai 21?»): in quattro a coppie, busso/striscio/volo e accuse,
motore e tavolo di Claude, regole e taratura in `docs/TRESSETTE.md`, prova `npm run browser:tressette`.
**Scopa agli 11** («Una scopa?»): carte, mattoni (o denari), settebello, primiera e scope, presa a scelta fra
più possibili; `docs/SCOPA.md`, prova `npm run browser:scopa`. Con la scopa i giochi di carte sono finiti
(decisione di Andrea, 26 ottobre). Tressette rivisto dopo la revisione critica di Codex (in `docs/TRESSETTE.md`).
- **Multimedia (25 ottobre, modifiche locali)**: il libro sfogliabile già presente conserva immagini, battute e
riapertura dall'inventario; il fruscio ora segue il volume degli effetti, non quello delle voci.
Nuovi paesaggi sonori sintetizzati con Web Audio (`src/engine/soundscape.js`, profili in
`src/story/soundscapes.js`): vento, acqua, uccelli di giorno e grilli di sera, campane, bicchieri,
gocce e scricchiolii distanziati. In **Pausa → Ambiente ed effetti** si regola il volume, salvato nel browser.
Muto, pausa e pagina nascosta fermano anche i suoni già avviati.
La **torcia nella fessura** apre un primo piano: mouse, tocco/trascinamento o frecce spostano la luce;
Invio aiuta a cercare il prossimo dettaglio. Pietra → palio → occhi; la musica si abbassa durante la ricerca.
«Torna fuori»/Esc permette di riprovare; soltanto dopo gli occhi «Continua» avvia la conclusione.
Nessun progresso parziale viene salvato. La tela usa la foto vera del 2007, ritagliata durante il disegno.
Controllo mirato: `npm run browser -- --media-only`; il collaudo normale include anche queste prove.
Verificati `npm test` e `npm run browser`: soluzione completa, salvataggi, libro su desktop/telefono,
torcia con mouse/tastiera/tocco/trascinamento, pausa e muto, segnale Web Audio senza saturazione.
Schermate in `/tmp/regolo-shots/media-*.png` e `/tmp/regolo-shots/05b-fessura-*.png`.
I copioni video sono aggiornati ai gesti richiesti dalla torcia; il montaggio audio da file continua a
includere solo musica e voci (gli effetti Web Audio non vengono esportati dal copione).
- **Ambienti animati (25 ottobre)**: alle prove già presenti (bandiere del campeggio, fascio di luce nella Pieve,
ombre al Bosco ai Frati) si aggiungono 51 dettagli nelle altre 35 scene. Configurazione in
`src/story/ambience.js`, richiamata da `story.js`; nuovi disegni in `src/engine/ambient.js`:
piccioni in piazza, merli sui prati, gatto nel vicolo, farfalle, libellula sul ponticino, falena alla festa,
increspature nelle pozze e nel torrente, gocce della fontanella, tende, passaggi dietro le vetrate,
ombre di nuvole sul sentiero e sulle vigne. Riutilizzati anche ombre delle fronde, stoffe, finestre e lampioni.
Le ombre delle fronde ora sono piccoli gruppi irregolari, senza gli ovali in fila che sembravano sassi.
Tutte le 38 scene hanno almeno un effetto; quelli diurni si spengono di sera e gli animali fanno lunghe pause.
Acqua, tende e vetrate usano ritagli locali; nessun asset aggiunto, nessun nuovo hotspot o flag narrativo.
Le animazioni complesse di altalene/reti e il movimento isolato di grandi fronde restano da fare con elementi
grafici separati: per ora quei luoghi hanno ombre e piccoli animali, senza deformare il fondale.
Verificati `npm test`, `npm run browser` (partita completa e telefono), `npm run browser:effects`
(38 scene × 3 fasi × 4 istanti, ritagli, giorno/sera, pause degli animali, salvataggio invariato).
Le immagini di controllo sono in `/tmp/regolo-effects`; si rigenerano con `npm run browser:effects`.
**Si gioca** in Docker su http://localhost:8080 (`make up`; Manzolo Rush è stato fermato per liberare la porta) e,
**online dal 2026-10-23**, su https://50037.manzolo.it (50037 è il CAP di San Piero), finché non va su GitHub Pages.
Dal 2026-10-31 il sito pubblico è sul **VPS Contabo** (CNAME `50037` → `vps.manzolo.it`, NPM del VPS col certificato
Let's Encrypt → container `leggenda-regolo`); la copia su home-server è stata tolta. Si aggiorna con `make deploy`:
test, immagine costruita e provata sul PC, spedita al VPS, e il controllo che https://50037.manzolo.it serva la
versione nuova.
- **Motore** (`src/engine/`): camminata con percorsi su aree concave, profondità, sette verbi + clic intelligente,
clic destro / pressione lunga = guarda, inventario con "usa… con" e "dai… a", dialoghi a scelte (anche una
tantum), salvataggio automatico con "Continua", fumetti sopra chi parla, impaginazione desktop e telefono.
- **Scene con sfondi veri** (`assets/scenes/`), collegate come il paese a gradini (`PROGETTO.md`, «La mappa»):
Piazza Colonna ↔ Pieve (livello 0) → Villa Adami (livello 1) → salita di
Villa Adami con la casa del leone → Fortezza (fuori dalle mura) → sentiero → Castello del Trebbio.
- **Altre scene** (ottobre 2026, dalle foto di Andrea con Codex): Via de' Medici, Oratorio, Ingresso del campeggio,
Bosco ai Frati, viale dei cipressi. Schermata del titolo (Fortezza al tramonto col Regolo) e introduzione a righe sul
panorama del Mugello.
- **Musica** di Andrea (Suno) in `assets/audio/`: titolo e introduzione, paese, ricordi (Trebbio e fine), il GP di Fortezza (`gara.mp3`); volume e muto.
- **Andrea vero** dal foglio sprite (`assets/characters/`, `tools/slice_sprites.py` + `tools/prepare_character.py`):
cammina, parla, si china a prendere, di spalle davanti alle porte.
- **Storia di prova** (`src/story/story.js`): il palio è sparito, i vecchietti litigano sulle due leggende, la squama
sotto la panchina, le impronte sotto la Fortezza → fine del prototipo. Il Trebbio fa da "psicologo": parlando con
la torre si riceve un indizio in base ai progressi.
- **Cartello d'apertura** «Manzolo (Poca) Art Presents» (5 s, si salta) prima del titolo.
- **Voci** (`make voci`, XTTS-v2 sulla GeForce): 112 battute, cinque voci (Andrea, vecchietta, vecchietto, castello,
leone); il fumetto dura quanto la voce, la musica si abbassa mentre si parla, il muto spegne anche le voci.
Controllate tutte con Whisper il 2026-10-23. Il leone ora parla (battute provvisorie).
- **Mappa** (pulsante in alto a sinistra o tasto P): i posti già visti, con le strade fra loro; un clic ci porta.
Un posto nuovo entra con `map: [x, y]` nella sua scena (percentuali della pianta, disposta come «il paese a gradini»).
- **Crediti** dal titolo e dalla fine (`story.credits`), dedica al Lele in testa; musichetta a 8 bit del cartello
(`tools/jingle.py`).
- **Primo indovinello**: la statua di San Pietro alla Pieve chiede quanti bastioni ha la Fortezza (la risposta la dà il
bastione stesso); la chiave apre l'oratorio, che da lì resta aperto, e la chiave sparisce. Verbo **Butta**: solo gli
oggetti `droppable` (per ora il libro), quelli che servono alla storia no. Pulsante **Pausa** (o Esc).
- **Il libro della storia infinita** sulle tavolate dell'oratorio; le idee in attesa in `docs/IDEE.md`.
- **Test**: `make test` (29 test, compresa la soluzione completa da `src/story/solution.js`) e `make browser`
(partita completa con clic veri in Chromium, ripresa del salvataggio, telefono).
- **Impaginazione (1 novembre, Andrea: «come mai non sfruttiamo tutto lo schermo?»):** la scena prende la finestra. La
riserva sotto non è più 250 px fissi ma l'altezza vera del pannello, 13,3 unità `--u` (un centesimo della larghezza
del gioco, `cqw`, fra 8,75 e 12,8 px: `#app` è un container). Frase, verbi, inventario, risposte, HUD e fumetti scalano
col gioco, non con la finestra: i verbi non si tagliano più nelle finestre piccole. Il pannello è alto sempre uguale
(ci stanno quattro risposte; da cinque il carattere cala, da sette ancora) così la scena non si muove nei dialoghi;
la frase è una riga sola coi puntini. «Schermo intero» nella Pausa (dove il browser lo permette). A 1040×590 la scena
passa da 604 a 842 px di larghezza, a 1366×650 da 711 a 935; sui telefoni niente cambia. Prova in `browser.mjs`.
- **Prove a sezioni (1 novembre, idea di Andrea):** `scripts/verify.mjs` conosce gli ingressi di ogni prova nel browser
(i file da cui dipende: i propri, più il motore comune; per la partita intera tutto il gioco tranne i minigiochi a sé)
e rifà solo quelle la cui impronta è cambiata dall'ultimo verde, ricordato in `.verify-ok.json` fuori da git. Così
`make bump` dopo una modifica alla briscola riprova la briscola e basta; dopo una modifica alla storia la partita intera
e le scene speciali (ambient, veicoli, ingorgo, smarronata), non la briscola; dopo `style.css` o `game.js` tutto.
Le prove dei minigiochi, che prima non entravano in `make verify`, ora ci stanno. `make verify-plan` spiega.
Nella pipeline di Gitea (runner sul PC) sui tag, o a mano, girano tutte e venti, una per job nell'immagine di
Playwright, prima della release: il primo giro completo (1 novembre, a mano su main) verde in 17 minuti.
- **Prove sulla scheda video (1 novembre, Andrea: «prova con la scheda video»):** Chromium disegnava con swiftshader,
sul processore: una schermata 633 ms. Con la RTX del PC (`--use-angle=gl-egl`) 41 ms; micro da 283 a 27 s, briscola da
259 a 29, flipper da 186 a 10; tutte e venti da ~16 minuti (due alla volta) a ~4 (sei alla volta), tutte verdi. Le
opzioni stanno in `tests/chromium.mjs`: scheda video se c'è (`/dev/dri`, `/dev/nvidia0`), altrimenti swiftshader;
`REGOLO_GPU=0/1` forza. Con 6 o 8 prove insieme il giro dura uguale: il limite è la partita intera (243 s, il tempo
del gioco, non della grafica). La pipeline dà la GPU ai job (`--gpus all`, runtime NVIDIA di Docker); runner a 6 job.
- **Schermo intero e flipper (1 novembre sera, Andrea):** pulsante ⛶ accanto ai volumi e tasto F; il gioco non si ferma
più a 1280 px (fino a 2560: a 1920×1080 la scena è 1553 px e prende tutta l'altezza). Nei minigiochi la scena lascia
sotto lo spazio vero dei comandi (`fitControls` in main.js, `--below`; cresce subito, cala solo oltre 24 px, «Come si
gioca» aperto non conta: una frase che va a capo faceva saltare il piano). Al flipper «Solo tavola» nasconde la
pulsantiera (ricordato nel browser); sul telefono in orizzontale è nascosta sempre e «Lascia stare» sta in alto. La
molla si carica toccando al centro (fascia 256-384), ai lati le palette anche prima del lancio; a pallina ferma la
tavola dice «TIENI PREMUTO QUI». Ponti rifatti da Codex (parapetti, portali, luci che seguono la pallina).
- **La prova del peso (1 novembre, Andrea: «senza GPU scoprivamo anche gli effetti troppo pesanti»):** con la scheda
video le prove non vedono più un effetto pesante. `tests/peso.browser.mjs` usa sempre swiftshader e, nel gioco vero,
in ogni scena nelle tre fasi e in ogni primo piano (il flipper anche in gioco e nel Regolo del futuro) misura
fotogrammi al secondo e arretrato grafico: soglie 30 e 400 ms (una scena normale pochi ms; un `ctx.filter` blur a
tutto schermo 816, quaranta tratti larghi trasparenti 718). Due trappole trovate: leggere i pixel della tela del
gioco la fa passare al processore (Chrome) e la misura cambia ciò che misura, quindi si legge una tela nuova
640×360; la prima visita di una scena paga il caricamento delle immagini, quindi prima si smaltisce. ~5 minuti, in
parallelo con le altre; si rifà quando cambia un disegno (`watch` in verify.mjs), e nella pipeline sempre.
- **Flipper da tastiera (1 novembre, Andrea):** la freccia giù carica la molla come Spazio, i due Shift comandano le
palette (sinistro e destro, `e.code` passato da main.js ai minigiochi). Test unitario e nel browser.
## Materiale ricevuto da Andrea (in `assets/raw/`, escluso da git)
| File | Cosa | Uso previsto |
| --- | --- | --- |
| `piazza-colonna.png`, `fortezza-esterno.png`, `trebbio.png` | sfondi puliti 16:9 | già nel gioco |
| `andrea-sheet.png` | foglio sprite di Andrea | già nel gioco |
| `pieve-prova-1.png` | Pieve (con interfaccia e personaggio) | da rifare pulito 16:9 |
| `andrea-arcu-prova-1.png`, `andrea-arcu-lele-prova-1.png` | Andrea (sinistra), l'Arcu (centro), il Lele (destra) | riferimento personaggi |
| `passamano-prova-1.png`, `carretta-prova-1.png`, `vaglio-rena-prova-1.png` | le sfide del Palio | tavole illustrate; per giocarle servono versioni larghe e vuote |
| `palio.png` | il premio con cornice dorata | **sbagliato**: il palio era un quadro dei ragazzi delle medie, senza cornice |
| `piazza-prova-1.png`, `trebbio-prova-1.png`, `fortezza-prova-1.png` | prime prove | superate |
I prompt fissi (stile, scene, foglio sprite) sono in `prompts/STILE.md`, escluso da git.
### Nuove fotografie e generatore
- Le tre foto aggiunte in `assets/raw/temp/` sono archiviate senza modifiche in
`assets/raw/foto/`: `pieve-dalla-salita.jpg`, `salita-villa-adami.jpg` e
`da-fare/oratorio-pieve.jpg` (oratorio rimandato).
- Geografia precisata da Andrea: dalla Pieve si sale lasciandola alle spalle,
si sbuca a Villa Adami e si prende la salita verso la Fortezza. La seconda
foto mostra il bivio presso Villa Adami, non le mura della Fortezza.
- `tools/genera.py` prepara batch via Images Edit (`gpt-image-2`), master 1536×864,
prompt in `prompts/backgrounds/`, registro e confronto in `assets/generated/`.
Guida: `docs/GENERAZIONE_SFONDI.md`. Preparazione verificata senza chiamate API,
con test offline e `--dry-run`; la generazione reale richiede conferma.
- Generate le due vedute con lo strumento immagini integrato, dopo la preparazione:
master in `assets/generated/`, copie a 640×360 e 64 colori in
`assets/scenes/pieve-dalla-salita.png` e `assets/scenes/salita-villa-adami.png`.
Prompt effettivi `prompts/backgrounds/*.integrated.txt`; provenienza nel registro.
Da valutare prima di collegarle alla storia e definire camminata e hotspot.
Il percorso API dello script è verificato con un client simulato, non con chiamate reali.
## Cosa manca
### Prossimi passi
- **Revisione di Codex del 24 ottobre, parte tecnica fatta**:
- **salvataggi a punti fermi**: si salva solo quando ogni sequenza è finita (`Game.commit`, `Game.savable`). Uscire a metà di una
risposta o della casetta riporta a prima, e la squama presa resta salvata anche senza cambiare scena. Un test interrompe ogni
passo della soluzione e della catena del ghiacciolo;
- **Salva su file** (pausa) e **Carica** (titolo), per portare la partita su un altro dispositivo;
- **cursore delle voci** («bla», 50% di partenza) accanto a quello della musica. Il muto zittisce subito la voce in corso, e la pausa
la ferma e poi la riprende;
- **col dito** un oggetto mancato di poco (circa 22 pixel di schermo) si prende lo stesso; i verbi in orizzontale vanno su due colonne;
- **sfondi caricati per vicinanza** alla scena di partenza (o a quella salvata), tre alla volta; a gioco fermo non si ridisegna;
- **`?debug`**: area calpestabile coi vertici numerati, hotspot con id, punti `at`/`talkAt`/`speakers`, coordinate del
puntatore; Maiusc+clic segna e copia un punto, K copia il poligono, X azzera, G nasconde;
- corretto: i crediti dal titolo restavano dietro il titolo.
- seconda passata di Codex: **Carica** controlla versione e contenuto (`checkSave`) prima di sostituire il salvataggio del
browser; col dito gli **oggetti piccoli** (sotto i 24×24) vincono sui grandi che li contengono (la squama sulla panchina);
uno **sfondo fallito** si riprova dopo 2, 4 e 8 secondi, poi basta.
- **Primo capitolo chiuso** (24 ottobre): squama e impronte portano a una fessura nel bastione; la torcia illumina un angolo
del palio (l'omino con la maglia rossa e le braccia alzate, dal quadro vero: foto in `assets/raw/palio-2007-foto.jpg`, già
descritto sul manifesto in piazza) e due occhi gialli che spariscono. La soluzione (40 passi, tragitti calcolati da
`route`) passa per indovinello, oratorio e catena del ghiacciolo; il Trebbio ha un indizio per ogni tappa della torcia.
Da fare: il disegno della fessura è provvisorio (forme in `art`); un taccuino con l'obiettivo corrente.
- **Mappa a gradini** (24 ottobre): una scheda per posto, con la miniatura dello sfondo (`make miniature`,
`assets/scenes/mini/`) e il nome, in quattro fasce dalla Fortezza ai campi; le strade fra le schede. Sta in una
schermata sul desktop; sul telefono si scorre in verticale.
- **Campomigliaio**: tre foto dell'Arcu (Marco Arcuri, nei crediti fra «Idee e consigli») trasformate da Codex: il ponte a due arcate sul
torrente, il Circolo SMS, la strada principale. Pronte in `assets/scenes/campomigliaio-{ponte,circolo,strada}.png`,
**ancora da collegare** (camminata, hotspot, uscite, posto sulla mappa). Andrea, 24 ottobre: ci si arriva dal bivio
della Via Provinciale (verso stazione e forno), andando a sinistra; ma prima viene **La Luna**, che Andrea deve
ancora fotografare: si collega bivio → La Luna → Campomigliaio.
- **Verso La Luna** (24 ottobre, foto di Andrea): dal bivio, a sinistra, il viale alberato della Provinciale
(`provinciale_viale`), poi la Provinciale lungo la Carza in secca con la luna (`verso_luna`; la Carza d'estate si
secca da quando hanno scavato le gallerie dell'alta velocità, d'inverno torna viva). In basso si va verso La Luna e
Campomigliaio (per ora solo battute). Da mettere: le case vecchie con la curva, il rettilineo col cartello della
rotonda, l'incrocio coi cartelli (`assets/raw/foto/luna-*.jpg`): ordine da chiedere ad Andrea.
- **Taccuino** (24 ottobre, dalla revisione di Codex): pulsante «Taccuino» e tasto N; le tappe in `story.notebook`
(fatte barrate, quella di adesso in evidenza) e in fondo il promemoria del Trebbio. Un test controlla che lungo la
soluzione si spuntino in ordine. Il palio era custodito a scuola e se n'è accorta la Gianna (Andrea, 24 ottobre:
in piazza all'inizio, alle porte della scuola, nel taccuino; la Gianna è una persona vera: serve il consenso).
Da decidere: se Andrea vive il 2007 o lo racconta da adulto (al bar c'è ancora il segnaposto «Questo lo sa solo Andrea»).
- **Ricerca nella mappa**: casella «Cerca un posto…», filtra mentre si scrive (`matchPlace`), Invio porta al primo.
- **Scelta del rione** (24 ottobre): dopo «Nuova partita», «Per chi corri quest'anno?» fra i quattro rioni
(`story.rioni`: Piazza rossi, Pieve bianchi, Cardetole verdi, Campomigliaio blu); resta nella partita come flag
`rione:<id>`. Cambiano la riga dell'introduzione e le battute su Pieve, Cardetole, Campomigliaio e la colonna.
Le parti future col rione (l'Arcu, il capitano) vanno scritte per ogni scelta.
**Per ora si sceglie solo Campomigliaio** (Andrea, 24 ottobre, per non moltiplicare battute e voci): Piazza, Pieve e
Cardetole si vedono chiusi (`locked: true` in `story.rioni`). **Quando si decide di sbloccarli**: togliere `locked`,
rileggere le battute per rione già scritte (introduzione, colonna, Pieve, strada per Cardetole e per Campomigliaio:
cercare `rione:` in `story.js`), scrivere per ogni rione le parti nuove nate nel frattempo (l'Arcu, il capitano),
`make voci`, e aggiornare il test «per ora si corre solo per Campomigliaio».
- **Audio sul telefono**: passando a un'altra app (pagina nascosta) musica, voce e musichetta si fermano subito e la
partita va in pausa; la musica riparte con Riprendi.
- **Pronuncia** (`tools/pronuncia.json`): le parole che XTTS legge male, scritte come vanno lette; vale solo per la voce.
Per ora «celo» → «ce l'ho». Le 32 voci nuove del 24 ottobre non sono state controllate con Whisper (qui non installato).
- **Sessione del 23-24 ottobre**: il paese è quasi tutto in gioco (circa 40 scene, sfondi di Codex dalle foto di
Andrea), collegato come quello vero; un test controlla che ogni strada vada e torni. Nuovi: carattere a pixel
Press Start 2P, pulsante «?» per vedere cosa si tocca, mappa scorrevole sul telefono, titolo e introduzione a tutto
schermo, inventario che si scorre, doppio clic per correre, pausa automatica.
- **La catena del ghiacciolo** (tennis della chiesa): la Tosca offre bibite e ghiacciolo; ghiacciolo nella cedrata →
stecco; gomma all'oratorio; stecco e gomma ripescano la chiavetta dalla griglia del ponticino; la chiavetta apre la
casetta dell'area feste, dove c'è la torcia (per il buio della Fortezza). Le bibite si bevono con un clic; un oggetto
cliccato due volte si usa da solo.
- **Da fare**: sprite della Tosca al chiosco (serve una foto o una descrizione); ascoltare le voci nuove (nomi come
Tosca e Tozzino); La Luna e Campomigliaio (foto in arrivo); la Pizzeria da Baffo (quadro da ridisegnare senza
personaggi Disney); le idee su chiavi e indovinelli in `docs/IDEE.md`, a partire dalla chiave della Fortezza.
- **Prima di GitHub Pages**: consensi delle persone nominate (Tosca, ing. Tozzi, Mariano Mirannalti per la sua foto),
sfondi da foto prese da internet (`docs/IMMAGINI.md`), Cardetole (dice dove abita Andrea).
- Vecchietta e vecchietto sono in gioco sulla panchina della Piazza (`assets/characters/`, da
`assets/raw/vecchiett?-sheet.png`): consenso delle persone ritratte confermato da Andrea il 2026-10-23; mancano i loro nomi.
- Via Provinciale (dalla rotonda verso la Pieve) → a destra Via del Pignone → in cima Piazzetta Cambray Digny, che porta
in Piazza (a sinistra, dove prima c'era l'uscita per il Comune) e in Via de' Medici. Battute provvisorie sul murale.
Via del Pignone (sfondo di Codex da `assets/raw/foto/via-del-pignone.png`): sul muro di destra il
murale di Cistola (Davide Poggi), «il talento di via del Pignone», alla maniera dei murali di Maradona a Napoli
(volto da `assets/raw/riferimenti/cistola.png`). Consenso di Davide confermato da Andrea il 2026-10-27.
- Via dell'Antica Posta (foto di Andrea, 28 ottobre, sfondi di Codex): dalla Piazza, a sinistra, sale verso Piazzetta
Cambray Digny, che non è più collegata direttamente alla Piazza. A sinistra la Piazzetta del Comune (il retro del
municipio con la torre e le sculture); in cima il muro di Villa Schifanoia, il ponticello, le panchine e due gatti.
Dalla Piazzetta, a destra accanto al palazzo, si scende per la scalinata in un cortile coi garage che porta ai
giardini del Comune (lato sinistro della scena del Comune); la scalinata si prende anche dalla curva a sinistra in
cima a Via dell'Antica Posta. In Piazzetta tutto il lato sinistro porta in Via de' Medici. Da confermare con Andrea:
il nome vero della scalinata. Battute provvisorie.
- Il sentiero della Fortezza (foto di Andrea, 28 ottobre, sfondo di Codex): fra la Fortezza (a diritto) e la casa del
maestro Bacci (alle spalle), che non sono più collegate direttamente. La pozza c'è anche il 15 d'agosto (Andrea).
Il nome del sentiero è provvisorio.
- La salita dei cipressi (foto di Andrea, 28 ottobre, sfondo di Codex): la strada bianca fra la casa del maestro
Bacci (alle spalle) e il viale dei cipressi (lassù spuntano i cipressi). Nome provvisorio, battute provvisorie.
- Il gioco pubblico sta sul VPS Contabo (dal 31 ottobre: regola in NPM del VPS, DNS spostato su Aruba, certificato
Let's Encrypt); la copia su home-server è stata tolta (Andrea: «la tengo fuori e basta»).
- Via Pietro Cipriani (fra Piazza e campeggio): Cinema Taiuti aperto con la locandina del Rattattù 2007 (stile da
`assets/raw/riferimenti/rattattu-locandina.png`, scaletta illeggibile). Al campo da basket del Circolo, «Fai due tiri»
(`src/engine/basket.js`, vista di lato, sfondo e sprite di Andrea col pallone da Codex): da solo, dieci palloni, a ogni
canestro si arretra fino alla linea da tre; tre livelli (quanti canestri per la gloria, quanta parabola mostra la
guida). Battute provvisorie. Idea di Andrea del 27 ottobre. Revisione critica di Codex (27 ottobre) applicata per
i punti gravi (angolo iniziale 64° con fascia di forza buona da ogni postazione, palo e tabellone da entrambi i lati,
canestro che conta subito, pose senza doppio pallone, guida fino al primo urto, obiettivo sempre in vista). Restano
le sue idee: «Riprova» dal risultato e record per livello; Andrea che arretra camminando; battute che dicono perché
è uscita (corto, lungo, ferro); l'angolo anche nei comandi HTML; testi del canvas piccoli sul telefono;
`basket_vinto` che lasci traccia nel paese; pannelli più compatti.
- Fuori paese, dal campo secondario (a destra): le Mozzète → il ponticino → Coldaia → la falegnameria → Gabbiano;
da Via Cipriani, indietro, Via Massorondinaio → campeggio. Sfondi da Street View, battute provvisorie.
- In Fortezza quattro ragazzi inventati si fanno le canne da pesca col bambù per il lago dell'Anatre (sprite di Codex,
`assets/raw/pescatori-sheet.png`, ritagliato 2x2 a mano: work, talk, laugh, proud); battuta finale di Andrea.
Parlandoci: «S'ha andà a fallo?!?» (Andrea, 28 ottobre) e si va a pescare: minigioco `src/engine/pesca.js`
(primo piano del lago, sfondo e Andrea con la canna di Codex; lancio tenendo premuto, tocchi finti e abboccata,
ferrata a tempo, recupero con la lenza che si può spezzare; sei lanci; pesci più grossi al largo, lo stivale sotto
riva; tre livelli). Battute provvisorie. Il lago come scena da visitare non c'è: serve una foto di Andrea.
Revisione di Codex (28 ottobre) applicata nei punti gravi (galleggiante che saltava, sesto lancio bloccato dal
pannello, invito a ferrare fuori tempo, lenza che non si spezzava mai, mira che si sbloccava) e in parecchi utili
(un gesto solo per ferrare e recuperare, pulsante Recupera/Molla, recupero breve per i pesci piccoli, attese ripetute
dimezzate, tocchi finti variabili, lenza dalla punta vera della canna, stivale con la sua battuta e senza peso,
risultato deciso all'ultimo pesce). Restano le sue idee: «Porta a casa la pescata» a gloria raggiunta; premio per
peso o varietà; i ragazzi che reagiscono (stivale, carpa, lenza rotta); paesaggio sonoro del lago (ora quello della
Fortezza); abboccata e tensione anche nei comandi HTML e un richiamo grande sul telefono; Esc col fuoco sui pulsanti.
- Il GP di Fortezza (Andrea, 28 ottobre): la gara dei cinquantini attorno alle mura della Fortezza, vista dall'alto
come le vecchie gare da sala giochi. Dall'Arcu sotto la tenda del Trappola in Via Liguri Magelli «Si fa una gara coi
motorini?», poi Alla bona, Seria o Ginocchio in terra; prima del via l'Arcu prende la rincorsa per accendere il Betino
in discesa. Minigioco `src/engine/gara.js`: gas tenendo premuto (Spazio, ↑, mouse, dito), sterzo con ← →,
trascinando di lato o coi pulsanti Sterza, ↓ frena; erba che frena, paglia che ferma, acceleratori, lattine di miscela
(sprint), buche (forte si casca); gli avversari sorpassano e scansano le buche. Prima del semaforo i piloti
arrivano in griglia uno alla volta col cartellino: il personaggio (sprite del gioco, o ritratto: Cistola dal murale,
Puntella sagoma finché manca il consenso), il motorino dipinto da Codex dalle foto (`assets/closeups/gp/`, foglio
`assets/raw/motorini-gp-sheet.png`, prompt `prompts/personaggi/motorini-gp-sheet.txt`), motore e testa; un tocco la salta. Gas, freno e sterzo hanno
fonti indipendenti (tasti, un dito sulla scena, pulsanti Gas, Sterza e Frena), il freno vince sul gas. Quadro di Codex
`assets/closeups/gp-fortezza.png` (prompt `prompts/closeups/gp-fortezza.txt`, guida dalla planimetria
`assets/raw/fortezza-planimetria.png`, satellite in `assets/raw/fortezza-satellite.png`); il tracciato è ricalcato
sulla strada dipinta. Disegno `gara-render.js`, test `tests/gara.test.mjs`. I piloti sono dati in
`src/story/piloti.js`: una riga per amico, `motore` e `testa` da 1 a 5, colori dalle foto. Corrono Puntella (SR
truccatissimo, motore 6, viola e giallo dalla sua foto, ritratto di Codex, testa «non pervenuta»), Bini (Andrea
Bini, consenso del 28 ottobre: Italjet Formula giallo, motore 5, ritratto di Codex), Cistola (CR 50 Z), Andrea (Malaguti Fifty rosso e nero), Tozzino (Booster blu
scuro, di serie, casco alla Damon Hill di Codex: `prompts/personaggi/casco-tozzino.txt`), l'Arcu (Betino). Col telefono
si guida con un dito: premuto è gas, lo swipe indica dove andare sullo schermo (Codex, 28 ottobre). Il Boccino (Gabriele Chiesi, consenso del 31 ottobre) col suo NRG bianco e rosso numero 1 e il ritratto di Codex. Puntella (Marco Villani) ha dato il consenso il 28 ottobre; chi ha `consenso: null` in piloti.js non corre. Mancano: quanto erano
truccati gli altri, le battute di Andrea, il rumore del motore (c'è solo
quello dell'arrivo in griglia); i confini della paglia non si vedono sul quadro (revisione di Codex, punto 9).
- Strade attorno a casa (Andrea, 28 ottobre): la scena `area_camper` ora si chiama «Le villette del Giannini» (ci abita
lui; i camper stanno dietro il suo campo). Cardetole: in basso a destra «dal Giannini» (le villette), a destra il
ponticino della Carza, a sinistra il Trappola. Il campo del Giannini: a destra le villette, a sinistra il Trappola;
dal ponticino non ci si va. Via Liguri Magelli: lassù vicino al Betino si torna a casa, laggiù a destra il campo.
Da sapere: dove si gira, in fondo al ponticino, per Cardetole [DA ANDREA].
- Bertovo (Fabrizio Berti, consenso del 28 ottobre) al tavolo di mezzo del Circolo 4 Maggio, sprite di Codex dalla sua
foto (`prompts/personaggi/bertovo-sheet.txt`): parlandoci, i suoi rinquarti (`src/engine/rinquarto.js`). Dopo la
revisione di Codex: gara a punti (sulla stessa posizione tira prima Andrea, poi il tavolo torna com'era e tira
Bertovo, preciso secondo il livello), allenamento («Fammi vedere un rinquarto»: tira prima lui), posizioni misurate
(finestra di angoli buoni sempre più stretta), forza sempre piena, traiettoria con le sponde numerate e Prossima,
tocco che mira senza tirare, un dito solo per volta, frecce che girano finché tenute.
- Via Liguri Magelli (Street View di Andrea, 28 ottobre), a sinistra dal campo del Giannini: a destra la casa salmone
con la tenda del Trappola (il Barrettino, «Vai dal Trappola»: niente interno, [DA ANDREA]), l'Arcu sotto la tenda
(scherzo: «ti ho visto du' minuti fa a Campomigliaio» col Betino, poi la sfida del GP), davanti la targa «Qui riposa la
Ghiacciomobile, che si è schiantata lì», in cima alla salita il Betino dell'Arcu (tolto dal circolino di
Campomigliaio), che per partire ha bisogno della discesa. Prompt `prompts/backgrounds/via-liguri-magelli.txt`.
- Andrea rifatto dalla sua foto del 2007 (`assets/raw/andrea-sheet-prova-2.png`; il vecchio foglio resta in `andrea-sheet.png`).
- Strada del campeggio (poi Bosco ai Frati) e strada della scuola: per ora battute, scene da fare con le foto di Andrea.
### Domande per Andrea
1. ~~Cosa c'era dipinto sul palio del 2007?~~ Risposto: foto in `assets/raw/palio-2007-foto.jpg` (la strada che sale alla
Fortezza con le bandiere, i ragazzi in fila, uno con la maglia rossa e le braccia alzate).
2. Il passamano dei mattoni: sul sentiero nel bosco o sulle mura della Fortezza?
3. Aggiungere i verbi **Spingi** e **Tira** (carretta, tiro alla fune)?
4. «La Colonna» era davvero il bar della piazza nel 2007? Chi c'era?
5. Consenso di Marco (l'Arcu), Mitrugno e Paleo; chi era Paleo; se e come ricordare Cipollone.
6. Il nonno: confermare il nome (Settimo Villani) e decidere come usare la sua leggenda nel finale.
7. Il Lele: come e quanto farlo comparire (con calma).
8. Battute e modi di dire del paese.
9. ~~Consenso del Chiaru~~ Dato il 29 ottobre. Le sue battute vanno bene?
### Grafica
- Sfondi puliti 16:9 di Pieve, Cardetole, Campomigliaio, interno della Fortezza (sotterranei).
- Fogli sprite: l'Arcu, i vecchietti (seduti: fermi e mentre parlano), poi gli altri personaggi.
- Interfaccia nello stile delle immagini di Andrea: cornice, inventario a icone (icone degli oggetti su sfondo verde).
### Motore
- Personaggi non giocanti con sprite (al posto dei blocchi colorati dei vecchietti).
- Tavole illustrate (immagine a tutto schermo con testo) per l'inizio e la fine delle sfide.
- Scorrimento della visuale per le scene panoramiche (se serviranno).
- Musica e suoni; titoli di coda con la dedica.
- Pubblicazione su GitHub Pages riusando `build-site.sh`, `bump.sh`, `check-public.sh` di Manzolo Rush
(solo quando Andrea lo chiede).
### Storia
- La prima zona vera (Piazza + Pieve) con un enigma del Palietto: passamano dei mattoni, carretta o vaglio della rena.
- La catena completa degli enigmi del documento, con gli indizi del Trebbio per ognuno.