JustPaste
HomeCategoriesAboutDonateContactTerms of UsePrivacy Policy
JustPaste

Free online notepad — write and share instantly

Navigate

  • Home
  • Timeline
  • Categories

Info

  • About
  • Donate
  • Contact

Legal

  • Terms of Use
  • Privacy Policy

© 2026 JustPaste.app. All rights reserved.

Made with ♥ by JustPaste

Untitled Page | JustPaste.app
24 days ago16 views
📄Other

Claro. Voy a dejarlo como **checkpoint canónico de esta sesión**, pensado para que podamos copiarlo a otra conversación y retomar sin reconstruir todo desde cero.

# Checkpoint — GT6 v1.22 Spec II / MLAA Patch / RPCS3 / Vertex Explosion

## 1. Contexto general

Estamos trabajando con:

* **Gran Turismo 6 v1.22**

* **Spec II Mod**

* **RPCS3**

Pruebas realizadas principalmente en *Time Trial → Mount Panorama / Bathurst**

Conducción automatizada mediante la opción interna CHANGE_DRIVER_DBG**

Importante: *no es B-Spec**

* Se eligió para mantener la conducción lo más repetible/controlada posible.

En *todas las pruebas de esta conversación**, EMAIN está **completamente intacto**.

* No se ha modificado ni parcheado directamente EMAIN.

Por decisión nuestra, *en este workflow no estamos haciendo ingeniería inversa ni modificaciones directas al ejecutable**.

La posibilidad de editar/parchear EMAIN queda reservada para un *workflow futuro separado**.

---

# 2. Parche MLAA que estamos probando

El parche actual consta de una única escritura:

```yaml

- [ be32, 0x00ED2E88, 0x39E00001 ]

```

Este parche:

* elimina MLAA;

* corrige/evita una parte importante del flickering original;

proporciona una *ganancia enorme de rendimiento**;

pero bajo determinadas condiciones, principalmente con *PPU LLVM**, produce **vertex explosions**.

Encontramos además un comentario externo que describe aparentemente **exactamente este mismo problema**:

> un parche puede arreglar flickering y eliminar MLAA, pero tiene efectos secundarios como grandes vertex explosions; no existe fix oficial porque todavía se desconoce si la causa está en el parche o en una interacción con alguna configuración de RPCS3.

Por lo tanto:

**nuestro vertex explosion no parece ser un problema exclusivo de nuestra instalación.**

Es un comportamiento ya observado anteriormente con esta clase de parche.

---

# 3. Resultado original antes de las pruebas controladas

### Parche original + configuración intended

Resultados aproximados:

GPU: *20–30%**

CPU: *30–45%**

FPS: *~60**

Frametime: *estable**

Audio: *completamente roto/basura**

MLAA: *OFF**

* Visuales: glitches presentes

Importante: esta configuración incluía **otros ajustes específicos recomendados junto con el parche**, por lo que esos 60 FPS no podían atribuirse únicamente a la instrucción de MLAA.

---

### Sin ningún parche

Resultados aproximados:

GPU: *5–20%**

CPU: *~40%**

FPS: *~38**

* Frametime: decente

* Audio: mejor

Race/prerace: *negro**

Buffer de elementos 2D: *no se limpia / acumulación**

Esto ya indicaba que quitar el parche no era un benchmark visualmente válido debido a la ruta de framebuffer rota.

---

# 4. Tests controlados

## Test A

Configuración principal:

```text

PPU: LLVM

Patch MLAA: OFF

WCB: ON

RCB: OFF

Force CPU Blit: OFF

```

Resultados:

* Prerace: parpadeante

Acumulación 2D: *MUY agresiva**

GPU: *21–30%**, spike observado de ~47%

* CPU: ~40%

FPS: *~35**

* Frametime: OK

* Audio: mejor

Race: *totalmente negra salvo elementos 2D**

### Conclusión

WCB ON / RCB OFF no reconstruye correctamente la escena de GT6 1.22.

---

# 5. Test B

Igual a A pero:

```text

Force CPU Blit: ON

```

Resultados:

* Prerace: parpadeante

* Acumulación 2D: muy agresiva

GPU: *20–35%**

* CPU: ~40%

FPS: *~30**

* Frametime: OK

* Race: igual que A

### Conclusión

Force CPU Blit:

* empeora el rendimiento;

* no arregla esta combinación;

* no es solución para WCB ON / RCB OFF.

---

# 6. Test C — baseline visual válido sin parche

Configuración:

```text

PPU: LLVM

Patch MLAA: OFF

WCB: ON

RCB: ON

```

Resultados:

* Prerace: OK

GPU: *10–50%+**

* CPU: ~40%

FPS: *~35**

Frametime: *MUY bueno**

* Race: aparentemente correcta

* Audio: roto

* Artefacto importante:

* pequeños destellos/brillos constantes en follaje y árboles

* aspecto parecido a reflejos o pequeñas gotas brillando al sol

### Importante

Estos destellos:

**desaparecen al pausar el juego** en algunas configuraciones sin parche.

### Conclusión

Este se convirtió en nuestro **baseline visual válido sin parche**:

> **LLVM + WCB + RCB + patch OFF ≈ 35 FPS**

---

# 7. Test E

Configuración:

```text

PPU: Interpreter (Static)

Patch MLAA: ON

WCB: OFF

RCB: OFF

```

Importante:

Se omitió deliberadamente el resto de la configuración “intended” del parche para minimizar variables.

Resultados:

* Prerace: negro

* Sin acumulación 2D

* Solamente se veía el automóvil; pista ausente

GPU: *25–30%**

* CPU: ~40%

FPS: *~48**

* Frametime: decente

* Audio: mejor

* Al iniciar carrera:

* juego aparentemente normal

### Conclusión importante

El parche permite que la **carrera funcione sin WCB/RCB**, algo que sin parche no ocurre correctamente.

Esto sugirió que el parche modifica una parte importante de la ruta de postprocesado/framebuffer, no simplemente la apariencia del AA.

---

# 8. Test F

Configuración:

```text

PPU: LLVM

Patch: OFF

WCB: OFF

RCB: ON

Force CPU Blit: OFF

```

Resultados:

* Prerace: pista visible pero “se quiebra”

* Acumulación 2D agresiva, especialmente al pausar

GPU: *20–38%**

* CPU: ~40%

FPS: *~38**

* Frametime: variable

* Audio: roto

* Race:

* relativamente normal

* mismos destellos constantes en follaje/árboles

### Conclusión

Ganó aproximadamente 3 FPS frente a C, pero la ruta gráfica/2D queda dañada.

No es sustituto viable del parche MLAA.

---

# 9. Test F2

Igual a F pero:

```text

Force CPU Blit: ON

```

Resultados:

* Prerace: negro

* Acumulación 2D fuerte

GPU: *13–21%**

* CPU: ~40%

FPS: *~41**

* Frametime: consistente

* Audio: sorprendentemente bueno

* Race:

* **totalmente negra**

* acumulación 2D

### Conclusión

Aunque marca más FPS, el resultado no es válido porque la escena 3D desaparece.

También demostró algo útil:

**el audio roto no se correlaciona perfectamente con Accurate XFloat o FPS.**

---

# 10. Test G

Configuración:

```text

PPU: Interpreter (Static)

Patch: OFF

WCB: ON

RCB: ON

```

Resultados:

* Prerace: funciona

GPU: *35%+**

* CPU: ~40%

FPS: *25–35**

* Frametime: variable

* Audio: roto

* Race:

* destellos en follaje/árboles

* ocasionalmente tearing severo

Dato muy importante:

> los destellos **cesan al pausar**.

### Conclusión

Static sin parche es considerablemente más lento que LLVM.

---

# 11. Test H — uno de los resultados más importantes

Configuración:

```text

PPU: Interpreter (Static)

Patch MLAA: ON

WCB: ON

RCB: ON

```

Resultados:

* Prerace: roto

* Sin acumulación 2D

GPU: *~40%**

* CPU: ~40%

FPS: *45–55**

* Frametime: variable

* Audio: algo mejor

* Carrera:

* aparentemente normal

* **MLAA OFF**

* los destellos de follaje desaparecen

* algunas transparencias están rotas

* problema suficientemente sutil para no ser muy molesto

### Comparación clave G → H

Misma configuración básica, mismo PPU Static, mismos WCB/RCB.

Cambio principal:

```text

Patch OFF → Patch ON

```

Resultado:

```text

~25–35 FPS

↓

~45–55 FPS

```

Es decir, aproximadamente:

**+15 a +25 FPS atribuibles al parche/ruta que elimina.**

Esto fue la evidencia más fuerte de que el parche elimina una cantidad **realmente grande** de trabajo y que la ganancia no proviene simplemente de quitar WCB/RCB.

---

# 12. Test I — resultado crítico

Configuración:

```text

PPU: LLVM

Patch MLAA: ON

WCB: ON

RCB: ON

```

Resultados:

* Prerace: negro

* Sin acumulación 2D

GPU: *~50%**

FPS: *60 clavados**

Frametime: *16.66 ms exactos**

Audio: *bien**

* Carrera:

* funciona

* MLAA OFF

* **vertex explosions / geometría rota**

* cielo y árboles parpadean

problema persiste *incluso estando pausado**

### Conclusión enorme

El parche **NO “rompe LLVM” en términos generales**.

LLVM:

* ejecuta el juego;

* llega a carrera;

* logra perfectamente 60 FPS;

* mantiene 16.66 ms;

* produce buen audio.

El problema verdadero es:

> **corrupción gráfica / vertex explosion al combinar el parche MLAA con PPU LLVM.**

---

# 13. Test J

Configuración:

```text

PPU: LLVM

Patch MLAA: ON

WCB: OFF

RCB: OFF

```

Resultados:

* Prerace: roto

FPS: *60**

Frametime: *16.66 ms**

GPU: *30–35%**

* Vertex explosions/glitches:

* **siguen presentes**

### Conclusión muy importante

WCB y RCB **NO son la causa principal del vertex explosion**.

Tenemos:

```text

LLVM + patch + WCB/RCB ON

→ vertex explosion

LLVM + patch + WCB/RCB OFF

→ vertex explosion

```

Por tanto, quitar la ruta de color buffers no soluciona el problema.

---

# 14. Disable Vertex Cache — Test L conceptual

Partiendo esencialmente de J:

```text

PPU LLVM

Patch ON

Disable Vertex Cache: ON

```

Resultado superficial:

> para alguien viendo dos videos, DVC ON y DVC OFF parecerían casi idénticos.

Pero después de 5–6 días observando el problema, se detectó claramente que con **DVC ON es peor**.

Cambios observados:

* vertex explosions más frecuentes;

* empeoran conforme se acerca la cámara a una “zona de explosión”;

las explosiones de colores a veces son reemplazadas por *texturas aleatorias**;

en ocasiones una *cara completa de un edificio distante** aparece:

* delante de la cámara;

* gigantesca;

* aplastada verticalmente;

* la corrupción visual parece más caótica.

### Capturas compartidas

Las imágenes muestran:

* grandes triángulos/polígonos cubriendo partes enteras del cielo;

* abanicos de geometría de colores;

* texturas reales del juego estiradas a tamaños absurdos;

* superficies que parecen provenir de meshes normales pero con posiciones/transformaciones incorrectas.

### Conclusión DVC

**Disable Vertex Cache NO corrige el problema.**

De hecho:

> parece empeorarlo.

Hipótesis actual:

La vertex cache probablemente **no genera el error**. Puede estar reutilizando datos suficientemente estables como para ocultar/amortiguar ligeramente la corrupción.

Al desactivarla, RPCS3 vuelve a procesar datos corruptos con mayor frecuencia y el síntoma se vuelve más agresivo.

Esto es una **hipótesis**, no una demostración.

---

# 15. Naturaleza visual del problema

Después de ver las capturas, ya no tratamos esto como:

* MLAA visualmente incorrecto;

* postprocesado roto;

* simple fallo de framebuffer.

Lo tratamos específicamente como:

## **Vertex explosion / corrupción de geometría**

Manifestaciones:

* polígonos gigantes;

* triángulos proyectados por todo el cielo;

* caras de objetos desplazadas;

* geometría estirada;

* texturas válidas aplicadas a polígonos completamente deformados;

* objetos distantes que parecen aparecer delante de la cámara;

* superficies aplastadas en un eje.

Puede involucrar:

* vertex positions;

* vertex attributes;

* index data;

* transforms/matrices;

* UV coordinates;

* o datos relacionados con un draw call.

Aún no sabemos cuál.

---

# 16. Vertex explosion durante pausa

Hay dos clases de glitches que observamos y es importante NO confundirlos.

### Tipo A — destellos de follaje sin parche

En C/F/G:

* pequeños destellos/brillos;

* principalmente árboles/follaje;

en G *desaparecen al pausar**.

### Tipo B — vertex explosion con LLVM + parche

En I/J:

* cielo/árboles/geometría masivamente deformados;

* **continúa incluso estando pausado**.

Esto sugiere que los dos fenómenos pueden ser independientes.

---

# 17. NaN poisoning

Durante la investigación se encontró un thread sobre **NaN poisoning** en GT6/RPCS3.

Inicialmente parecía posible relacionarlo con nuestro problema.

Sin embargo, posteriormente encontramos el comentario que habla específicamente del:

> MLAA patch → big vertex explosions

Por eso actualmente:

**NO asumimos que nuestro vertex explosion sea causado por NaN.**

El problema de NaN del thread puede ser:

* otro bug distinto;

* relacionado;

* o simplemente coexistir con nuestro problema.

No hay suficiente evidencia para conectar ambos.

---

# 18. Opciones Accurate PPU bajo LLVM

Estas opciones se han probado anteriormente con LLVM:

```text

Accurate PPU Vector NaN Handling

Accurate PPU Non-Java Mode

Accurate PPU Float Condition Control

Accurate PPU/SPU Double-Precision FMA

```

RPCS3 reporta cosas como:

```text

Setting X is ENABLED, IGNORING

```

Es decir:

**LLVM las ignora.**

Pero detalle crucial:

> Durante TODOS los tests controlados A–J de esta conversación, estas opciones estaban DESACTIVADAS.

Antes de empezar esta investigación se creó una copia de las configuraciones estables y se inició un preset nuevo desde defaults.

Por lo tanto:

* H no se beneficiaba secretamente de esas opciones;

* I/J no diferían de H porque LLVM las estuviera ignorando;

* el experimento H vs I sigue siendo válido respecto a estas opciones.

Los tests K/L/M propuestos para alternarlas fueron descartados.

---

# 19. Accurate XFloat / audio

Durante buena parte de los tests se dejó **Accurate XFloat** activado deliberadamente para evitar contaminar resultados.

Se sabe que provoca/provocaba problemas importantes de audio en algunas configuraciones.

Sin embargo:

* algunos tests con Accurate XFloat tuvieron audio roto;

* otros, como I, tuvieron audio bueno;

* F2 también tuvo audio sorprendentemente correcto.

Por lo tanto:

> el audio no debe utilizarse como indicador único de XFloat ni como diagnóstico directo del parche.

Probablemente también intervienen scheduling/carga de SPU y otras rutas.

---

# 20. Uso de CPU

Se decidió dejar de registrar CPU UTIL.

Motivo:

Prácticamente siempre rondaba ~40%, incluso cuando el juego estaba en:

* 25 FPS;

* 35 FPS;

* 48 FPS;

* 60 FPS.

Por tanto, el porcentaje global de CPU no representa adecuadamente el hilo/cuello de botella crítico.

Métricas más útiles:

* FPS

* frametime

* GPU usage

* comportamiento gráfico

* prerace

* carrera

* pausa

* audio

---

# 21. Mount Panorama / Bathurst fue accidentalmente un stress test extremo

Esto es muy importante para interpretar todos los resultados.

El vertex explosion ocurre **en prácticamente toda la pista**, pero es especialmente visible:

* al inicio;

* después de tomar la primera izquierda tras meta;

* durante los primeros sectores.

Luego parece disminuir bastante después de la recta/curva hacia la derecha al inicio de la subida.

Hipótesis del usuario:

> probablemente no disminuye realmente; simplemente durante la subida hay menos cielo visible y, por lo tanto, menos superficie donde notar los polígonos gigantes.

Esto es plausible.

---

# 22. Mount Panorama ya tiene problemas incluso en la configuración “estable”

Existe un backup previo de configuración considerada mucho más estable, que incluye aproximadamente:

* PPU Static;

* Strict Rendering;

* optimizaciones asociadas al parche;

* configuración recomendada/intended.

Incluso así:

> **Mount Panorama todavía presenta pequeñas roturas visuales.**

Son:

* muchísimo más sutiles;

* no agresivas;

* pero detectables después de observar el juego durante varios días.

### Conclusión

Mount Panorama es probablemente:

> **la peor pista posible para usar como único test de compatibilidad.**

Pero a la vez es:

> **excelente como stress test para detectar vertex explosions.**

En el futuro conviene usar:

* Bathurst → stress test;

* otra pista más ligera/estable → control.

---

# 23. Conclusiones técnicas principales hasta ahora

### Confirmado

```text

Patch OFF + LLVM + WCB/RCB

≈ 35 FPS

```

frente a:

```text

Patch ON + LLVM

= 60 FPS / 16.66 ms

```

Por tanto:

> **LLVM tiene potencia suficiente para entregar exactamente el rendimiento que buscamos.**

El problema ya no es rendimiento.

---

### Confirmado

```text

Patch ON + Static

→ visualmente mucho más estable

→ ~45–55 FPS

```

mientras:

```text

Patch ON + LLVM

→ 60 FPS

→ vertex explosions

```

Así que la interacción problemática se reduce aproximadamente a:

> **MLAA patch × PPU LLVM**

---

### Confirmado

WCB/RCB no son la causa principal.

---

### Confirmado

Disable Vertex Cache no arregla el problema y aparentemente **lo empeora**.

---

### Muy probable

No estamos ante un simple problema de postprocesado.

Existe corrupción de geometría/vertex data real.

---

### No confirmado

Todavía NO sabemos si la causa es:

```text

A) el parche en sí

B) cómo LLVM recompila el código alrededor del parche

C) una interacción parche + algún comportamiento de RPCS3

D) una corrupción posterior desencadenada por el nuevo control flow

E) otro bug de GT6/RPCS3 que el parche deja expuesto

```

El propio thread externo mantiene prácticamente estas mismas posibilidades abiertas.

---

# 24. Workflows que debemos mantener separados

## Workflow A — esta conversación

Permitido:

* configuración RPCS3;

* parche existente;

* PPU Static/LLVM;

* SPU;

* WCB/RCB;

* RSX;

* comparación de comportamiento;

* tests controlados.

Condición:

> **EMAIN permanece intacto.**

No entrar aquí en ingeniería inversa.

---

## Workflow B — conversación futura

Tema potencial:

* editar EMAIN;

* aplicar un parche directamente al ejecutable;

* analizar el punto 0x00ED2E88;

* buscar una forma más limpia de desactivar MLAA;

* analizar por qué 0x39E00001 produce el comportamiento observado;

* encontrar un punto anterior/posterior más seguro;

* investigar compatibilidad específica con LLVM.

Este workflow permanece **completamente separado** por ahora.

---

# 25. Estado actual del proyecto

Nuestra meta inicial era:

> conseguir aproximadamente el rendimiento del Disable MLAA patch usando LLVM, sin sus problemas.

Ahora sabemos algo mucho mejor:

## Ya conseguimos el rendimiento.

```text

60 FPS

16.66 ms

Audio bueno

PPU LLVM

MLAA OFF

```

Así que el objetivo actual ya no es “conseguir 60 FPS”.

Es:

> **mantener esos 60 FPS eliminando el vertex explosion.**

Y el parche:

```yaml

- [ be32, 0x00ED2E88, 0x39E00001 ]

```

es el eje central del problema.

---

← Back to timeline