Files
Cristian Laporta 3a7c22c833 2026.10.09.1: aggiornamenti dei giochi, alimentazione, ventola e sessioni
- Aggiornamenti dei giochi (gameupd.c): per ogni gioco installato l'ultimo
  aggiornamento ufficiale compatibile con il firmware, scaricato dai server
  di Sony e installato. Il lavoro lo fa PatchDL di Knutwurst (GPL-3.0),
  incluso in patchdl/ e distribuito come payload; il demone avvia
  l'installazione quando un download finisce, anche a Omega chiusa.
- Alimentazione: modalità riposo, riavvio e spegnimento dal menu.
- Ventola: soglia scritta leggendo e riscrivendo tutti i 28 byte della
  configurazione, con verifica (prima partivano 10 byte quasi tutti a zero);
  il demone la ripristina quando un gioco la riporta a 91 °C. Fino a 85 °C.
- Sistema: velocità della ventola, sensore più caldo del SoC, frequenza della
  CPU, modello, tempo di accensione e firmware reale del kernel.
- Suoni dell'interfaccia rifatti: campane FM, aria filtrata e riverbero.
- Sessioni: scadono dopo 90 giorni senza uso e si rinnovano a ogni richiesta
  (migrazione 019); il demone non insiste più con un token rifiutato.
- Test: session.test.mjs.
2026-10-09 03:10:46 +02:00

48 lines
1.2 KiB
Python

#!/usr/bin/env python3
import argparse
import mimetypes
from pathlib import Path
def c_string(value):
return value.replace("\\", "\\\\").replace('"', '\\"')
def bytes_as_c_array(path):
data = Path(path).read_bytes()
lines = []
for offset in range(0, len(data), 16):
chunk = data[offset:offset + 16]
lines.append(" " + ", ".join(f"0x{byte:02x}" for byte in chunk))
return "{\n" + ",\n".join(lines) + "\n}"
def main():
parser = argparse.ArgumentParser()
parser.add_argument("--path", required=True)
parser.add_argument("file")
args = parser.parse_args()
mime = mimetypes.guess_type(args.path)[0] or "application/octet-stream"
symbol = (
"patchdl_asset_"
+ "".join(ch if ch.isalnum() else "_" for ch in args.path)
)
print('#include "patchdl_assets.h"')
print()
print(f"static const unsigned char {symbol}[] = {bytes_as_c_array(args.file)};")
print()
print("__attribute__((constructor)) static void")
print(f"register_{symbol}(void) {{")
print(
f' patchdl_asset_register("/{c_string(args.path)}", '
f"(const void*){symbol}, sizeof({symbol}), "
f'"{c_string(mime)}");'
)
print("}")
if __name__ == "__main__":
main()