Skip to content

Releases: guzuold/CTRNativePorted

v0.5.9 — uscita dal matchmaking

Pre-release

Choose a tag to compare

@guzuold guzuold released this 21 Oct 19:47

Novità: uscire dalla schermata di matchmaking libera il giocatore, e se esce l'host un altro prende il suo posto.

Uscita dal matchmaking

  • Le richieste del gioco "lascio la lobby" e "annullo la ricerca" non venivano gestite dal servizio e, dal PC che usa un hub, non venivano nemmeno inoltrate.
  • Nella prova con la v0.5.8 è uscito l'host: per l'hub era ancora nella lobby, e l'altro gioco, rimasto solo, restava bloccato su "Preparazione lobby in corso..." in attesa di una conferma che non arrivava.
  • Ora l'hub toglie dalla lobby chi esce e ne annulla la ricerca; chi esce può cercare di nuovo subito.
  • Se esce l'host, il primo giocatore rimasto diventa host e riceve la lobby aggiornata.

Aggiornamento: con Check updates, chiudendo prima il gioco. Aggiornate tutti i PC. runtime/user e runtime/mods restano intatti.

Verifica

  • Nuovo test con due giocatori: l'host esce, l'altro diventa host e aggiorna la lobby, poi esce anche lui ed entrambi si ritrovano in una lobby nuova. Sulla v0.5.8 falliscono 4 controlli, su questa passano tutti.
  • L'uscita dal PC che non fa da hub arriva all'hub. 20 suite del servizio e del runtime (521 controlli), test dell'hub pubblico ed elezione dell'hub: tutti superati.

Non provato: il comportamento del gioco reale dopo l'uscita dell'host. Un giocatore rimasto solo resta host di una lobby a un posto: gli altri che cercano partita formano una lobby nuova invece di unirsi alla sua; per ricominciare basta uscire e cercare di nuovo. Release sperimentale; nessun file del gioco incluso.

Commit: 461610adefa1e400df59f08c2270cced9ff29209

SHA256 CTRNativePorted-v0.5.9-win64.zip: 693b456394084739eb78ddcb64270d560a1cca623ddd9aa3dc6e3bce4b0fd1c2
SHA256 CTRNativePorted-v0.5.9-source.zip: 188835f2432280134aab56bb1743a00c2436a2dd63ef6d880cbb420ac221cac3

v0.5.8 — i giochi tornano a collegarsi

Choose a tag to compare

@guzuold guzuold released this 21 Oct 19:29

Novità: i due giochi di una partita online tornano a collegarsi tra loro.

Collegamento tra i giochi

  • Dalla v0.5.5 il filtro dei pacchetti in arrivo scartava il primo pacchetto da un indirizzo finché il servizio non lo confermava, e un'autorizzazione senza traffico durava tre secondi.
  • Il collegamento tra due giochi manda una risposta e poi riprova solo dopo alcuni secondi: le risposte arrivavano sempre a un controllo in corso o già scaduto e i due giochi non si collegavano mai. Nella prova con la v0.5.7 lobby e host erano giusti, ma la gara non partiva.
  • Ora, quando il gioco scrive a un indirizzo autorizzato dal servizio, quell'indirizzo è autorizzato subito anche per i pacchetti in arrivo, come un firewall accetta le risposte alle connessioni aperte. Gli indirizzi a cui il gioco non ha scritto continuano a essere controllati prima.

Aggiornamento: con Check updates, chiudendo prima il gioco. Aggiornate tutti i PC. runtime/user e runtime/mods restano intatti.

Verifica

  • Nuovo test sulla DLL del runtime: il gioco scrive a un peer e il peer risponde subito con un solo pacchetto. Sulla v0.5.7 la risposta andava persa, ora arriva.
  • 20 suite del servizio e del runtime (521 controlli), test dell'hub pubblico ed elezione dell'hub: tutti superati.

Non provato: una gara reale tra due PC con questa versione. Release sperimentale; nessun file del gioco incluso.

Commit: 1c9226c746d824fa7b26d5fce1edfc5aeb8b0db2

SHA256 CTRNativePorted-v0.5.8-win64.zip: 83979d2627ed57a6fa23d9b436aa63cc091bf36c22a050f5003e18c23785a1a3
SHA256 CTRNativePorted-v0.5.8-source.zip: a9bfd37e0eba41a8414e6cbc94af99ef110380c9483ac132a84259d9d3cccf38

v0.5.7 — host raggiungibile ed Esc per uscire

Choose a tag to compare

@guzuold guzuold released this 21 Oct 19:07

Novità: nelle lobby del matchmaking pubblico fa da host un giocatore raggiungibile; Esc tenuto premuto chiude il gioco.

Host della lobby

  • Quando l'hub forma una lobby, sceglie come host il primo giocatore il cui PC accetta connessioni da Internet. Solo se nessuno è raggiungibile fa da host il primo che ha cercato, come prima.
  • Nella prova con la v0.5.6 il PC su hotspot aveva cercato per primo ed era diventato host, con un indirizzo della rete dell'operatore che l'altro gioco non poteva raggiungere: entrambi restavano nella lobby senza trovarsi.
  • Ogni servizio ora comunica all'hub se è raggiungibile. I servizi delle versioni precedenti non lo comunicano: aggiornate tutti i PC.

Esc per uscire

  • Tenendo premuto Esc per due secondi con la finestra del gioco in primo piano, il gioco si chiude come con il pulsante di chiusura della finestra.

Aggiornamento: con Check updates, chiudendo prima il gioco. runtime/user e runtime/mods restano intatti.

Verifica

  • Il test della scelta dell'host fallisce sulla v0.5.6 e passa su questa; 515 controlli delle suite del servizio e del runtime e il test dell'hub pubblico con due servizi passano. Test della pressione di Esc (tempo, rilascio, finestra non in primo piano) superato.

Non provato: una gara reale tra due PC con questa versione; Esc nel gioco vero. Se nessun giocatore della lobby è raggiungibile la partita non può ancora iniziare (servirebbero hole punching o relay). Release sperimentale; nessun file del gioco incluso.

Commit: de7a991c1ce7f811652d4458dbd97838bbfd0736

SHA256 CTRNativePorted-v0.5.7-win64.zip: 35a5ac8c966fe71a4c50037a6931fb6ddb39a566ff10af50c13c493116fe1238
SHA256 CTRNativePorted-v0.5.7-source.zip: 7a4457df348246f80c3c68751cdaadb2468a1666df1b6b913f7d20dec8bdd877

v0.5.6 — matchmaking pubblico dai PC non raggiungibili

Choose a tag to compare

@guzuold guzuold released this 21 Oct 18:34

Novità: matchmaking pubblico dai PC non raggiungibili (NAT dell'operatore, hotspot del telefono).

Niente più coda morta

  • Un PC che non può essere raggiunto da Internet e non ha ancora trovato un hub ora rifiuta la ricerca pubblica, invece di metterla in una coda sul proprio servizio dove nessun altro giocatore può entrare.
  • Il gioco riceve un errore per la ricerca; il tentativo successivo riparte da capo e usa l'hub se nel frattempo è stato trovato.
  • I PC raggiungibili continuano a fare il matchmaking come prima.

Elezione dell'hub nel log

  • A ogni giro il log del servizio (runtime/user/logs/online_server_*.jsonl) scrive una riga hub_round: indirizzi restituiti dalla DHT, identità che hanno risposto, candidati, raggiungibilità e hub scelto.
  • La ricerca rifiutata compare come hub_none con reason: search_refused.

Aggiornamento: con Check updates, chiudendo prima il gioco. Aggiornate tutti i PC. runtime/user e runtime/mods restano intatti.

Verifica

  • I test nuovi falliscono sulla v0.5.5 e passano su questa; 515 controlli delle suite del servizio e del runtime passano.
  • Compatibilità dei messaggi di matchmaking con un servizio 0.5.4 provata in locale nei due versi.

Non provato: come il gioco mostra la ricerca rifiutata e se riprova da solo (nei log del 19 ottobre il gioco ha retto errori su questi passi e ha rinunciato alla ricerca dopo 60 secondi); gare reali tra due PC con questa versione. La DHT pubblica può metterci alcuni minuti a far trovare l'hub: con un PC su hotspot conviene aspettare che nel suo log compaia hub_elected prima di cercare partita. Release sperimentale; nessun file del gioco incluso.

Commit: 3abec8869612975f49baeac87a35586995210a4a

SHA256 CTRNativePorted-v0.5.6-win64.zip: aee8475fa42b16bd27493ed7d09fe99bda5cef3c6b250ac405d9be508df38d75
SHA256 CTRNativePorted-v0.5.6-source.zip: 12619a5e95853abe05fb954bed8110ee03c0bd653d09f57d775b1c46361e74b2

v0.5.5 — sicurezza online e matchmaking pubblico

Choose a tag to compare

@guzuold guzuold released this 21 Oct 18:06

Novità: sicurezza del servizio online e matchmaking pubblico più affidabile.

Sicurezza del servizio online

  • Il gioco ora riceve pacchetti solo dagli avversari autorizzati: prima il filtro valeva solo per i pacchetti in uscita.
  • Una richiesta HTTP costruita apposta non può più far chiudere il launcher (limite di annidamento JSON e lettura non ricorsiva dei dati binari).
  • Le funzioni pensate per il gioco locale rispondono solo da questo PC: da Internet restano raggiungibili solo il canale firmato tra servizi, la lobby tra amici e la verifica d'identità.
  • Limiti di tempo e di numero sulle connessioni remote; il gioco locale ha una quota separata e non può essere tagliato fuori.
  • La porta TCP 3074 non viene più aperta sul router; la lobby e le porte diagnostiche ascoltano solo in locale.
  • Corretto il controllo del proprietario negli inviti.

Matchmaking pubblico

  • Un PC che non può fare da hub (per esempio dietro la NAT dell'operatore) ricorda gli hub già verificati, anche dopo un riavvio, e non li perde più quando una ricerca sulla DHT va a vuoto.
  • Se non conosce ancora un hub quando cerchi partita, aspetta fino a un secondo che l'elezione lo trovi.
  • Una ricerca iniziata sul servizio locale resta lì fino alla fine: un hub trovato a metà non la rifiuta più.
  • Nuovi eventi nel log del servizio: hub_elected, hub_lost, hub_none.

Aggiornamento: con Check updates, chiudendo prima il gioco. Aggiornate tutti i PC: i messaggi tra servizi non cambiano e una versione 0.5.4 resta compatibile, ma le correzioni valgono solo per chi aggiorna. runtime/user e runtime/mods restano intatti. Non è più possibile puntare un gioco a un CTR_ONLINE_SERVER su un altro PC.

Verifica

  • 515 controlli delle suite del servizio e del runtime, più i test nuovi, tutti passati; ogni correzione ha un test che falliva sulla versione precedente.
  • Un avversario autorizzato non perde più pacchetti: 360 su 360 con il servizio che risponde in 0, 30 e 100 ms (prima 355, 350 e 326).
  • Compatibilità dei messaggi di matchmaking con un servizio 0.5.4 provata in locale nei due versi.

Non provato: gare reali tra due PC con questa versione, gare con più di due giocatori, matchmaking con un PC dietro la NAT dell'operatore. Release sperimentale; nessun file del gioco incluso.

Commit: 29fb06fb828a4a90109b83ca5518e37acc600f03

SHA256 CTRNativePorted-v0.5.5-win64.zip: 1d04b06db2d3bb4e6335691d9c72ae0448850c60429c60603d5dc71347d67c43
SHA256 CTRNativePorted-v0.5.5-source.zip: f189c1a9b1eb3af246855765992ff4b086cac63e255496ac47acd711d04824aa

v0.5.4 — AMD FSR 3.1 e nomi degli amici

Choose a tag to compare

@guzuold guzuold released this 21 Oct 15:04

Novità: upscaling AMD FSR 3.1 e nomi degli amici conservati quando sono offline.

AMD FSR 3.1

  • Nuova opzione in Opzioni → Scene upscaling: AMD FSR 3.1, upscaling temporale tramite FireBurn/FSR-Vulkan (MIT).
  • Riceve gli stessi dati del DLSS: profondità della scena, vettori di movimento e jitter, prima dell'HUD. Funziona su qualsiasi GPU Vulkan con le funzioni richieste, non serve una RTX.
  • Nitidezza predefinita 0.3, modificabile con CTR_FSR3_SHARPNESS (0–1).
  • Quattro patch dal port di GetLostIn sono applicate a FSR-Vulkan; una evita che FSR 3 fallisca con "out of memory" sui PC senza Resizable BAR.

Lista amici

  • Un amico offline mantiene l'ultimo nome conosciuto invece di diventare un generico "Amico". Un soprannome predefinito viene sostituito dal nome vero appena è noto.

Generazione di frame: il codice AMD FSR 3.1.6 è nel renderer ma è messo da parte, senza opzione nel launcher, perché nei test le immagini in movimento lasciavano scie visibili.

Aggiornamento: con Check updates, chiudendo prima il gioco. runtime/user e runtime/mods restano intatti.

Verifica

  • FSR 3.1 su retail 1.21: da 1280×720 a 3840×2160 nella schermata iniziale con piani della camera validi; nessuno sfarfallio dopo la correzione del dispatch.
  • Tutti i binari sono compilati da un clone pulito di questa versione, FSR-Vulkan compreso.

Non provato: FSR 3.1 in una gara completa e la correzione dei nomi su due PC. Release sperimentale; nessun file del gioco incluso.

Commit: b95b24e5fd3af172ba6db2c77ba08a06e1afbff3

SHA256 CTRNativePorted-v0.5.4-win64.zip: de9cdbc4c14250aef6a51fd43179a146a6dc41f26b1910c570693ce935a4943a
SHA256 CTRNativePorted-v0.5.4-source.zip: f5615cea8a717bad7ca99fc060c3694b74e8441f52157143ebbca1d3bc1489d1

v0.5.3 — Trofei e controller per giocatore

Choose a tag to compare

@guzuold guzuold released this 21 Oct 12:53

Novità: trofei e un controller per ogni giocatore.

Trofei

  • I 48 trofei del gioco ora si sbloccano. Prima il runtime diceva al gioco che non c'erano trofei, e il gioco ripeteva lo stesso sblocco centinaia di volte.
  • Gli sblocchi restano in runtime/user/trophies e sono riportati al gioco; quelli registrati dalle versioni precedenti vengono importati.
  • A ogni sblocco compare per 5 secondi un avviso sopra il gioco, con l'icona del trofeo. Il platino arriva con l'ultimo trofeo del gioco base.
  • Nuova scheda TROFEI nel launcher: tutte le icone, colorate se sbloccate e grigie se bloccate, con avanzamento, grado e data di sblocco.
  • Nomi e descrizioni richiedono la propria chiave dei trofei PS4. Si può scrivere nella scheda o importare con IMPORTA DA shadPS4 (keys.json); senza chiave i trofei compaiono per numero.

Controller

  • Nelle Opzioni il launcher rileva i controller collegati e il loro tipo: controller Xbox con la sua porta XInput, DualShock 4, DualSense o altro gamepad.
  • Ognuno dei giocatori 1–4 ha un menu con Auto, Nessuno, Tastiera o un controller. Un controller assegnato a un giocatore è usato solo da lui ed entra appena collegato.
  • Assegnare un controller ai giocatori 2–4 attiva lo schermo diviso. I giocatori su Auto entrano tenendo premuto un tasto, come prima.
  • L'elenco si aggiorna quando si collega o si scollega un dispositivo.

Aggiornamento: con Check updates, chiudendo prima il gioco. runtime/user e runtime/mods restano intatti.

Verifica

  • Superati il controllo dello schermo diviso, con i nuovi casi di giocatori fissi, "Nessuno" e collegamento tardivo, e i test delle mod e degli inviti.
  • Il file dei trofei del dump viene letto (48 trofei e icone) e una chiave sbagliata viene rifiutata.
  • Le schede del launcher sono state controllate con catture dello schermo in italiano, tedesco e francese.
  • Con i nuovi binari il gioco si avvia fino alla schermata iniziale e legge l'assegnazione dei giocatori.

Non provato in gioco: l'avviso dei trofei, i nomi con una chiave vera e l'assegnazione con controller veri in gara. Tutti i binari sono compilati da un clone pulito di questa versione. Release sperimentale; nessun file del gioco incluso.

Commit: 30eed53ca0d763cce9f29f3b2d46b8dbb7054c14

SHA256 CTRNativePorted-v0.5.3-win64.zip: fb274cf59e2ecb33431f9cc4f0edf8cf0a8ef03d4d32eaa507f36a3e29220bb4
SHA256 CTRNativePorted-v0.5.3-source.zip: d98378f8556a5822b5066e5270f2c29e7afe91730436e53342d5f68dc24dc2ca

v0.5.2 — Giocatori con lo stesso nome distinti online

Choose a tag to compare

@guzuold guzuold released this 21 Oct 11:37

Correzione: due giocatori con lo stesso nome non si scontrano più online.

  • Fino alla v0.5.1 l'account che il gioco usa per un giocatore dipendeva solo dal nome, quindi due giocatori omonimi (ad esempio il nome predefinito "CTRPlayer") avevano lo stesso account su ogni PC. Nel matchmaking pubblico il secondo veniva rifiutato dall'hub; un invito o un JOIN tra omonimi veniva rifiutato come "Player on this PC"; in una partita privata un membro sostituiva l'altro.
  • Ora l'account dipende dal nome insieme al codice amico del launcher che ospita il giocatore. Amici, inviti, sessioni, hub del matchmaking ed elenco amici nel gioco usano lo stesso account.
  • Il portafoglio Pit Stop del vecchio account passa al nuovo alla prima connessione del gioco, se il nuovo account non ne ha già uno.

Importante: aggiornate tutti insieme. Tra un giocatore sulla v0.5.1 e uno sulla v0.5.2 gli account non corrispondono, quindi stato degli amici, inviti e matchmaking tra versioni diverse possono non funzionare.

Aggiornamento: con Check updates, chiudendo prima il gioco. runtime/user e runtime/mods restano intatti.

Verifica: test del servizio online senza errori, compreso il backup firmato del portafoglio con i nuovi account. Non provato in gioco: il caso degli omonimi e il passaggio del portafoglio vanno verificati sui PC. Launcher, servizio e ctr_hle.dll sono compilati da un clone pulito di questa versione; ctrport.exe e ctr_gpu.dll sono quelli della v0.5.1. Release sperimentale; nessun file del gioco incluso.

Commit: 19c7c86b99567ae98de8c9bb80972abceba347be

SHA256 CTRNativePorted-v0.5.2-win64.zip: 31192965d3793c5e7a6018cfe8ef8ce584f4821f9a994b8fae9e131495e758c7
SHA256 CTRNativePorted-v0.5.2-source.zip: d87a13a72b1650db741586455c2d4616149fd9512bf6c8c1855d3a2ffa5e0f9b

v0.5.1 — Launcher nella lingua del gioco, gare tra due PC confermate

Choose a tag to compare

@guzuold guzuold released this 21 Oct 10:38

Novità: launcher in inglese che segue la lingua del gioco, e conferma delle gare online tra due PC.

Online

  • Le gare tra due PC separati via Internet si completano, sia in partita privata con un amico sia con il matchmaking pubblico (prova sulla v0.5.0). Le gare con più di due giocatori non sono ancora state provate.

Lingua del launcher

  • Tutti i testi sono in inglese e seguono subito, senza riavvio, la lingua del gioco scelta nelle impostazioni (francese, italiano, tedesco o spagnolo). Con l'arabo resta l'inglese.
  • Nel selettore ogni lingua compare con il proprio nome.
  • Meno note e istruzioni nelle impostazioni, nella lista amici e nella scheda MODS.
  • Le finestre di invito nel gioco usano la lingua del gioco.
  • I messaggi del servizio online e dell'updater sono in inglese.
  • Il README elenca tutte le funzioni e descrive l'online peer-to-peer senza server centrale.

Aggiornamento: con Check updates, chiudendo prima il gioco. runtime/user e runtime/mods restano intatti.

Verifica: test del servizio online e delle finestre di invito senza errori. Launcher, servizio e ctr_hle.dll sono compilati da un clone pulito di questa versione; ctrport.exe e ctr_gpu.dll sono quelli della v0.5.0. Le traduzioni non sono state controllate a schermo: una traduzione lunga potrebbe non entrare in un pulsante. Release sperimentale; nessun file del gioco incluso.

Commit: 39f7eaa7118591528e41cfb5e0822b9e587d8c72

SHA256 CTRNativePorted-v0.5.1-win64.zip: d332995322167658316878637b59e4a859d2c718a861bc539d43c4a9e3483737
SHA256 CTRNativePorted-v0.5.1-source.zip: 647914a4254792575449c82c0e803924a4524c74c3b4c93dd3bb910f0d10e9dd

v0.5.0 — Mod e patch, compilazione dal sorgente pubblico

Choose a tag to compare

@guzuold guzuold released this 21 Oct 09:30

Novità: mod e patch nella scheda MODS del launcher, e compilazione dal solo repository pubblico.

Mod di file

  • Una cartella per mod in runtime/mods, con dentro le cartelle del gioco (archives/, icons/…). Sono accettate anche dentro app0/, CUSA14876/, CUSA13795/ o in una cartella creata dall'estrazione di uno ZIP.
  • Ordine e interruttori in runtime/user/mods.json ({"order": [...], "disabled": [...]}). Vince la mod più in basso nella lista.
  • Il gioco legge prima dalle mod attive, poi dall'aggiornamento e dal gioco base. I file del gioco non vengono mai modificati.
  • Collegamenti ed eboot.bin, sce_module o sce_sys dentro una mod vengono rifiutati con un messaggio.

Patch XML

  • File in formato shadPS4 / GoldHEN in runtime/patches, con le scelte in runtime/user/patches.json.
  • Una patch si applica solo se TitleID, AppElf e AppVer corrispondono al gioco in esecuzione.
  • Ogni scrittura deve stare dentro l'eboot. Le patch scelte vengono controllate tutte prima di scrivere: se una non è valida, l'avvio si ferma indicando il motivo.

Sono gli stessi formati di SacredFire e GetLostIn CTR-NitroFueled-PC, quindi le stesse cartelle e gli stessi file funzionano in entrambi. Dettagli in MODS.md.

Compilazione: ctrport/build_release.ps1 compila tutto il programma da un clone pulito, dopo tools/bootstrap.ps1. ctrport.exe, il launcher e il server di questa release sono compilati così; ctr_gpu.dll e ctr_hle.dll restano quelli della v0.5.0.

Aggiornamento: con Check updates nel launcher, chiudendo prima il gioco. runtime/mods e runtime/user restano intatti.

Verifica

  • 49 controlli dei formati di mod e patch, compilati sia in C++17 sia in C++20, su file sintetici.
  • Una partita con il gioco retail, una mod e una patch di prova: il log riporta 2 file sostituiti, la patch 01.21 applicata e quella 01.00 scartata. Il gioco ha letto gli archivi della mod fino alla schermata iniziale, con gli stessi messaggi del renderer della v0.5.0.
  • Il clone pulito compila con build_release.ps1.

Non ancora verificato: il risultato grafico delle mod e la nuova schermata MODS non sono stati controllati a schermo. Release sperimentale. Nessun file del gioco incluso; nessuna nuova funzione retail ricostruita viene dichiarata verificata.

Commit: a5c90e341be16789d562542930d72e46b10fc207

SHA256 CTRNativePorted-v0.5.0-win64.zip: d73df26e9657181af0c8b5d0d0c9d847e9be1ce1fe7fddfb8c600c54ce82b25e
SHA256 CTRNativePorted-v0.5.0-source.zip: 90b0e2d8bc14fa99dd8751487dee81fcf1c9b2724db63eaff40f760b2c42750b