A maior atualização da história do SilentPatch (20 anos de GTA SA)

Hoje é aniversário de 20 anos de GTA San Andreas!

Para comemorar, Silent está lançando a maior atualização da história de um dos mods mais importantes da história do GTA: SilentPatch!

O texto abaixo é escrito pelo Silent, diretamente do blog dele em inglês, traduzido em português pelo modder Junior_Djjr, na qual gastou umas boas horas revisando, e por ele ter conhecimento técnico do jogo, ele espera não ter cometido erros.

O texto foi traduzido porque esta atualização é muito importante (e provavelmente a última do SilentPatch), é um artigo muito completo e interessante, e eu gosto muito do estilo dos textos do Silent, portanto compartilhar isso tudo com vocês é muito mais interessante do que só traduzir o change log (na qual eu também retraduzi do zero nas postagens de download do mod: IIIVCSA).

O modder Junior_Djjr também procurou adicionar umas pequenas notas entre [] quando eu achei propício.

Há 70 mil caracteres aqui… divirta-se.


TL;DR: Este artigo detalha as várias correções introduzidas nesta atualização, tornando-a uma leitura relativamente longa. Se você quiser pular direto para o SilentPatch ou ver o código-fonte, vá para a seção Download e código-fonte para os links.


 

Introdução:

No dia 26 de outubro de 2024, o GTA San Andreas completa 20 anos. Não tive a chance de jogá-lo quando foi lançado em 2004 — eu [Silent] era uma criança que, naquela época, jogava exclusivamente no PC e jogava Vice City sempre que meus pais me deixavam. Minha primeira experiência com San Andreas foi em meados de 2005, quando o jogo foi lançado no PC; eu mal sabia naquela época o quão influente o GTA em geral, mas mais especificamente San Andreas, seria mais tarde para minha vida e minha carreira profissional — e que quase duas décadas depois, bem na minha vida adulta, eu ainda estaria consertando-o para torná-lo uma experiência tão agradável quanto possível.

Hoje, dia 25 de outubro, tenho a honra de publicar a maior atualização do SilentPatch para a trilogia clássica do Grand Theft Auto até hoje, com o código-fonte completo agora disponível no GitHub sob a licença MIT! Embora eu tenha planejado originalmente que o lançamento do código aberto fosse lançado em janeiro, uma combinação de um escopo de atualização maior e vários problemas reais acontecendo em segundo plano resultaram em um atraso tão grande, pelo qual peço sinceras desculpas.

No entanto, esse atraso vem com um lado positivo – o que eu inicialmente planejei ser um simples upload do código-fonte limpo para um lançamento público se transformou na maior atualização de conteúdo que já lancei. Este lançamento contém não apenas uma ampla seleção de novas correções; também voltei para muitas correções mais antigas e as atualizei para serem mais seguras, mais simples, mais compatíveis com outras modificações e livres de efeitos colaterais. Várias regressões menores introduzidas pelo SilentPatch agora estão resolvidas, garantindo que o patch se torne open source no estado mais perfeito possível.

Nesta postagem do blog, detalharei as correções mais significativas introduzidas nesta atualização, um ápice de aproximadamente 10 meses de desenvolvimento (embora não sem interrupções) e muitos testes em nove compilações de Release Candidate. Minhas explicações podem ficar um pouco mais técnicas do que o normal, mas fiz o meu melhor para mantê-las digeríveis. Sem codinomes desta vez! A última vez que tentei isso, meu codinome de escolha envelheceu mal muito rápido 😑.


Novas correções

Correções compartilhadas 

Várias correções incluídas nesta atualização se aplicam a vários jogos da trilogia.

Sou um bom cidadão e sempre deixo meus faróis acesos

Afeta: Todos os jogos da trilogia.

Para fornecer alguma variedade no mundo do jogo, os veículos de trânsito agem com um grau de aleatoriedade. Uma das decisões aleatórias que eles tomam é quando acendem as luzes à noite, ou quando fica nevoeiro ou chuvoso. Para cada veículo no mundo, um “limite” aleatório é escolhido, decidindo o quão escuro, chuvoso ou nevoeiro tem que estar para que o veículo acenda os faróis.

No entanto, esse pequeno recurso sofre de uma diferença em como a aleatoriedade funciona no PC vs PS2 – o alcance da aleatoriedade é menor no PC (0-32767) do que no PS2 (0-65535), mas o código que calcula os limites não foi atualizado. Isso mantém a variância nas decisões, mas involuntariamente elimina um resultado interessante – no PS2, durante condições de chuva ou neblina, alguns veículos podem decidir nunca acender os faróis! No PC, como o intervalo de aleatoriedade é menor, todos eles eventualmente acenderão os faróis.

SilentPatch redimensiona o código calculando os limites para corresponder ao comportamento do PS2, então, a partir desta atualização, você pode encontrar alguns motoristas ilegais que não usam as luzes, mesmo quando realmente deveriam:

 
 

Aquele carro explodiu duas vezes!?

Afeta: Todos os jogos da trilogia.

A trilogia inteira tinha um bug estranho em que os carros às vezes explodiam mais de uma vez sem nenhuma razão discernível. Junto com Nick007J, mergulhamos nesse problema e descobrimos que ele é causado pela seguinte cadeia de eventos:

  1. O veículo é incendiado.
  2. O motorista salta para fora. Antes de terminar a animação de saltar, o veículo explode e muda seu status para “destruído”.
  3. O motorista finaliza sua animação saltando pra fora. Isso muda o status do veículo para “abandonado”, sobrescrevendo o estado anterior.
  4. Alterar o status do veículo não restaura sua saúde, então ele é incendiado novamente e explode logo depois.

A partir dessas etapas, a correção se torna aparente: o SilentPatch agora não permite que o jogo faça a transição do estado do veículo de “destruído” para “abandonado”, corrigindo esse problema.

Infelizmente, essa correção também corrige outro problema bem conhecido que, pela primeira vez, eu não pretendia consertar:1 não é mais possível executar um truque famoso que permite ao jogador dirigir veículos explodidos em GTA III e Vice City:

Com essa correção, a primeira explosão do veículo simplesmente mata o jogador 😥


Ooh, brilhoso! 

Afeta: GTA III, GTA Vice City.

Em III e Vice City, os reflexos de ambiente não foi aplicado aos extras dos veículos. Isso resultou em todos os extras parecendo foscos (sem especularidade), o que é bom para partes como tetos de couro em Stallion e Mesa, mas não necessariamente em extras metálicos, como o teto de Stinger, que agora combina com a aparência de Yakuza Stinger:

Original:

Stock

SilentPatch:
SilentPatch

No entanto, há um porém: teoricamente, as peças não reflexivas devem ter sua especularidade definida como zero, mas isso não é feito com vários modelos originais. Por esse motivo, o arquivo INI agora inclui uma lista de exceções ExtraCompSpecularityExceptions onde modelos com extras não refletivos podem ser especificados. Por padrão, são Stallion (para III e Vice City) e Mesa (para Vice City). Além disso, também me certifiquei de que essas exceções não se aplicam a materiais de vidro, o que dá ao Mesa Grande um para-brisa traseiro refletivo:

Para modelos personalizados, a correção é simples: basta certificar-se de que seus extras tenham a especularidade definida corretamente. Este valor é simplesmente ignorado sem SilentPatch.


Rolagem de créditos! …ZZzzzZZZ…. 

Afeta: Todos os jogos da trilogia.

Parabéns, você completou a missão final e terminou o jogo! Agora é hora de assistir aos créditos. “Ugh, por que eles são tão pequenos e lentos?”, você pensa consigo mesmo. Bem notado, você acabou de detectar um bug! Os créditos não são dimensionados para a resolução, então eles parecem menores e mais lentos quanto maior for a resolução selecionada, a ponto de serem quase ilegíveis em 4K.

Começando com esta atualização do SilentPatch, os créditos são dimensionados para a resolução corretamente e, portanto, agora parecem exatamente como no PS2. Como agora eles se movem em uma velocidade consistente, independentemente da resolução, seu tempo de execução agora também corresponde ao lançamento original. Além disso, no GTA III, os créditos duravam um pouco mais do que o necessário, então, para o último corte de câmera, o jogo mostrava e imediatamente desaparecia novamente, pois os créditos já haviam sido concluídos. Para consertar isso, fiz os créditos rolarem alguns por cento mais rápido, para que terminassem no corte de câmera anterior.

Original:
Stock

SilentPatch:
SilentPatch
 
O que é isso, créditos para formigas?

Missão concluída! Agora, por favor, deixe-me jogar, eu entendi

Afeta: Todos os jogos da trilogia.

Este é um dos problemas que tornam a vida dos speedrunners mais difícil: em todos os três jogos da trilogia, quanto maior for a resolução selecionada, mais tempo o título da missão e os textos de conclusão/falha da missão ficarão na tela! A princípio, isso parece completamente louco e eu não culparia ninguém por pensar que é mentira ou placebo — infelizmente, é verdade.

Tudo isso só faz sentido graças a um dos clipes de pré-lançamento de GTA III. Preste atenção ao texto “Reward”:

Em algum momento, esse texto (chamado internamente de “odd job text”), títulos de missão e o texto de conclusão/falha da missão foram projetados para deslizar da esquerda para a direita. Embora esse recurso nunca tenha chegado ao jogo final, muito do código permaneceu. Quando os jogos foram portados para PC, uma tentativa (talvez automatizada) foi feita para dimensionar a animação deslizante para resoluções arbitrárias. No entanto, essa tentativa foi incompleta – enquanto as margens de dimensionamento são dimensionadas, a velocidade de deslizamento não. Os textos permanecem na tela por mais tempo, porque o jogo espera o slide ser concluído, mesmo que os resultados desses cálculos não sejam usados ​​no final.

Nesta atualização, o SilentPatch corrige essa lógica, então agora a “velocidade de deslizamento” permanece consistente independentemente da resolução. Além disso, como tive que modificar esse código de qualquer maneira, duas novas opções de INI (e debug menu) foram adicionadas para todos os 3 jogos – SlidingMissionTitleText e SlidingOddJobText pode ser usado para reativar esse recurso removido. Embora os textos passados ​​na missão tecnicamente também possam deslizar, eles sempre foram centralizados, então deslizar não parece certo e, portanto, não faz sentido ativá-lo.


HUD minimalista 

Afeta: GTA Vice City, GTA San Andreas.

Os jogos têm um modo não utilizado, mas quase concluído, de exibir o HUD – quando ele está habilitado, apenas o relógio é exibido continuamente. Dinheiro, o ícone da arma, estrelas de nível de procurado e as barras de energia são exibidos apenas quando seus status mudam (por exemplo, você perde saúde ou pega dinheiro) e, depois disso, eles desaparecem após vários segundos. O SilentPatch corrige vários bugs visuais que esse recurso exibia e pode, opcionalmente, habilitá-lo por meio do arquivo INI.

Mesmo com minhas correções, ainda é difícil chamá-lo de “pronto para produção” – saúde e armadura não aparecem ao repor saúde ou perder oxigênio (em San Andreas) e, diferentemente do GTA IV, não é possível mostrar o HUD inteiro sob demanda, então você não consegue dar uma olhada em sua saúde ou dinheiro quando quiser.

Bem… minimalista.

O HUD minimalista em San Andreas não foi introduzido nesta atualização – ele existia no SilentPatch desde o final de 2017 e foi tornado público pela primeira vez na versão 29 lançada em Maio de 2018. No entanto, por algum motivo, eu nunca documentei essa opção, então ela permaneceu “oculta” e os usuários tiveram que adicioná-la ao arquivo INI por si mesmos. Com esta compilação, eu finalmente a documentei oficialmente, então ela aparece no arquivo de configuração e, consequentemente, também no debug menu.

No entanto, é novo para Vice City – pois só recentemente fiquei sabendo que esse recurso também existia lá! Portanto, nesta atualização, o HUD minimalista agora também pode ser habilitado em VC. Esteja ciente de que os mesmos problemas de San Andreas se aplicam.


Outras correções 

  • (Toda a trilogia): A aleatoriedade do script agora foi feita em 16 bits, como no PS2, em vez de 15 bits. Os resultados são mais perceptíveis em GTA III:
  • “Bling-bling Scramble” tem três caminhos de checkpoint possíveis no PS2, mas o script só conseguiu escolher dois no PC.
  • A ambulância em “Plaster Blaster” pode escolher três destinos possíveis no PS2, mas apenas dois no PC.
Essa correção faz com que essas duas missões atinjam a paridade de recursos com a versão original do PS2.

  • (GTA III, GTA VC): Linhas de texto lidas em CPlane::LoadPath e CTrain::ReadAndInterpretTrackFile agora são null-terminted. Esse problema que parece técnico tem um efeito divertido e facilmente perceptível: sob condições muito específicas que só são possíveis de acontecer em jogos modificados, os valores Z de caminhos predefinidos de trem, avião e iate podem ser lidos incorretamente, levando-os a serem redefinidos para 0. E o engraçado é que, eu sem saber tive esse problema há 11 anos, quando trabalhava em III Aircraft – e até gravei em um dos testes de gameplay! Neste vídeo, começando em 0:40, você pode observar o avião voando no nível do mar, exatamente por causa de… alguns nomes de arquivo longos causando esse problema:

Grand Theft Auto III:

Animações pilotando barcos

Observadores cuidadosos provavelmente notaram há muito tempo que em GTA III, Speeder é o único barco com assento de motorista. Isso não impede Claude de ficar de pé dentro daquele assento, no entanto, já que somente em Vice City a Rockstar introduziu uma flag indicando que o motorista do barco deveria usar a animação de sentar. Fire_Head também notou esse problema anos atrás e fez uma correção para ele. Nesta atualização do SilentPatch, o trabalho de Fire_Head foi integrado:

No jogo vanilla, Claude parecia bastante inquieto ao dirigir um Speeder.

Agora, ele finalmente pode sentar. Ele ainda está dirigindo o barco com seus poderes mentais, no entanto.

Junto com essa mudança, Fire_Head também fez um backport de uma pequena correção de Vice City: agora, um pequeno atraso entre entrar no barco e o jogo considerar que Claude está dentro de um foi removido; o jogo estava esperando a animação de entrada terminar, mas barcos não têm uma, então isso não fazia sentido. Essa correção também foi integrada ao SilentPatch.

Boas notícias para os usuários do III Aircraft – para essa mudança, o SilentPatch aplica uma correção idêntica ao Skimmer.


Mergulhando pela vida, específico de plataforma? 

A versão para PC de GTA III tem uma regressão de gameplay interessante em comparação com o lançamento original para PS2. Normalmente, os pedestres podem reagir a carros que se aproximam de três maneiras – eles podem:

  • Virar-se para o carro e levantar as mãos,
  • Tentar sair do caminho,
  • Tentar mergulhar para o lado, saindo fora do caminho do carro.

No PC, levantar as mãos e se afastar funciona bem. No entanto, os pedestres mergulham… em direção ao carro!

Isso não constitui uma fraude de seguro? Também tiro o chapéu para a polícia que chegou à cena, eu nunca teria conseguido um timing cômico melhor se tivesse tentado fazer isso de propósito.

É difícil saber exatamente o que aconteceu neste caso, mas tenho meu palpite com base em uma peculiaridade particular deste recurso: quando o veículo “ameaçador” está buzinando, isso deixa o NPC mais alerta e eles sempre tentam mergulhar para fora do caminho. Coincidentemente, neste cenário, o bug não se manifesta. Só posso teorizar com base nas diferenças de código entre PS2 e PC, mas o fato de o PC estar sem alguns cálculos me faz acreditar que esse bug foi introduzido por uma otimização de código com falha – alguém pode ter lido mal o código, então pensou que o ângulo de mergulho foi calculado duas vezes e introduziu um bug, já que os dois cálculos aconteceram em circunstâncias diferentes.

Nesta atualização, o SilentPatch restaura o código ausente do lançamento do PS2, fazendo com que o mergulho se comporte exatamente como originalmente:

Ai! Isso deve ter doído.

Correndo pela vida, específico de plataforma?? 

Em GTA III, os motoristas podem reagir de várias maneiras ao levarem tiros. Quando as balas atingem seus carros, eles escolhem aleatoriamente uma das três ações:

  • Acelerar e fugir com o carro,
  • Fazer nada,
  • Deixar o carro e sair correndo à pé em pânico.

Esta lista pode ter levantado sobrancelhas – você sente que nunca encontrou alguns desses eventos? Se sim, você está certo, pois esse recurso está com bugs em todas as plataformas, em mais de uma maneira.

Todas as entidades no mundo do jogo têm um valor de seed aleatória atribuído a elas, permitindo que diferentes pedestres e carros se comportem de forma diferente, mas garantindo que cada entidade permaneça consistente em suas ações. No PS2, essa seed aleatória é um valor inteiro no intervalo 0-65535, no PC (e provavelmente Xbox também) é 0-32767. O problema com o comportamento dos motoristas está na função que atribui esses comportamentos à seed aleatória:

  • 0-34999 – corre com o carro.
  • 35000-69999 – fazer nada.
  • 70000-99999 – foge à pé.

Você vê o problema agora? Uma suposição incorreta sobre o alcance da seed aleatória levou a um (no PS2) ou dois (no PC/Xbox) casos sendo inalcançáveis. No SilentPatch, os alcances foram redimensionados para o alcance real da seed aleatória, então agora os motoristas podem ignorar as balas ou fugir a pé, pela primeira vez.


Roube carros do FBI 

Em todos os jogos da era 3D, os veículos do FBI são pretos como breu. No entanto, isso não se aplica a alguns Kurumas do FBI em GTA III. Ao contrário dos jogos posteriores, em GTA III, a entrada decarcols.dat do carro especifica uma cor de carroceria cinza escuro com para-choques sem pintura. Carros que aparecem em bloqueios de rua e carros importados por meio dos guindastes de importar/exportar, aderem a essa configuração, enquanto as unidades de perseguição são definidas à força para preto por meio do código do jogo. Isso leva a uma discrepância entre os carros, dependendo de onde eles vêm, e também faz com que os Kurumas pretos como breu mudem permanentemente de cor quando repintados.

A cor padrão faz com que o Kuruma do FBI pareça comicamente escuro.

Com o SilentPatch, os detalhes ficam visíveis e a cor é natural, como era de se esperar desde o início.

Não tenho certeza do porquê o jogo força os carros do FBI a ficarem pretos via código. Talvez em algum ponto do desenvolvimento o FBI tenha usado carros civis comuns pintados de preto, e isso nunca foi revertido quando eles receberam seu veículo dedicado? Independentemente disso, o SilentPatch agora remove esse código, então todos os carros do FBI usam as cores especificadas em carcols.dat.


“Nasty game” com melhorias

Exclusivamente nas versões PS2 e PC de GTA III, o jogador podia desmembrar outros personagens. No entanto, os membros separados nunca pareciam muito certos, mas não porque os modelos não eram detalhados o suficiente — um simples erro de código fez com que o modelo normal e o modelo LOD fossem exibidos ao mesmo tempo, ignorando o sistema LOD do jogo. Isso agora foi corrigido.

Pernas quadradas e duas mãos em cada braço? Em Liberty City, o Halloween dura o ano todo.
…até agora, é isso.

Por que o radar é tão feio? 

Desde o primeiro lançamento, o SilentPatch corrigiu vários elementos da UI que não estavam dimensionados corretamente para a resolução. Isso incluía as sombras de texto e alguns tipos de mensagens especializadas. Acontece que mais coisas precisavam ser corrigidas, embora não fossem imediatamente óbvias.

No PS2, a textura do disco de radar se estende por 4 pixels ao redor do mapa renderizado. No PC, esse mapa, assim como o disco de radar, escalam para resoluções, mas essa margem de 4px não. Antigamente, isso provavelmente era quase imperceptível em resoluções como 1024×768, mas com resoluções modernas como 4K, o problema se torna tão pronunciado que o disco de radar nem cobre mais o mapa abaixo:

A única razão pela qual isso foi enviado é porque parece menos ruim em resoluções menores. Em 4K, o radar original parece inaceitável.
Com SilentPatch, o radar parece arrumado. Também sinto que parece mais circular. Você também nota isso?

Você provavelmente notou que o posicionamento também mudou – isso porque a posição horizontal também não foi dimensionada para a resolução (embora a posição vertical seja), então o radar estava sempre a uma distância constante de 40 pixels da borda da tela. Nesta atualização, ambos os problemas foram corrigidos, então todo o radar é dimensionado corretamente.


Os modelos dos carros estão quebrados no PC? Não, o código que está

Nos círculos de mods do GTA, é relativamente bem conhecido que alguns pedaços de código de uma versão inicial do Vice City chegaram à versão para PC do GTA III; física de helicópteros, hierarquia de motos (mas nada além disso em motos!), etc. Por exemplo, o III Aircraft só foi possível graças a essas sobras. Essa teoria também foi confirmada pelo próprio Obbe Vermeij:

Poucos dias antes de este post ir ao ar, ficamos sabendo de mais uma diferença entre PS2 e PC que é consequência dessa confusão de código: os carros no GTA III têm dummies taillights e brakelights separados, enquanto que no Vice City só preservou o antigo! Isso teve um efeito adverso na maneira como essas luzes funcionam. É assim que elas foram concebidas para funcionar:

  • Durante o dia, quando as luzes estão apagadas, as luzes de freio e de ré usam o dummy brakelight.
  • À noite, quando as luzes estão acesas, todas as luzes usam o dummy taillight, e a corona da luz traseira muda de intensidade ou cor de acordo. Isso também significa que as luzes de ré “se movem” para outro ponto à noite.

Com o dummy das luzes de freio desaparecido, o III no PC voltou ao comportamento de Vice City: ou seja, sempre acender todas as luzes do dummy taillight. Nesta atualização do SilentPatch, eeintroduzi o código faltante na versão para PC, restaurando a paridade de recursos. É um detalhe bem bacana, então estou feliz em vê-lo funcionando novamente. Em muitos carros, as diferenças são difíceis de detectar, mas em outros é muito mais proeminente:

As luzes traseiras do Sentinel agora são mais usadas. As luzes de ré têm um dummy colocado na área branca da lâmpada, mas infelizmente o jogo não o usa, e as luzes de ré vão onde as luzes de freio estão.
As luzes de freio do Patriot estão colocadas em um local bastante incomum.
Vários veículos grandes, como o Enforcer, devem ter suas luzes de freio colocadas na parte superior.

Other fixes 

  • Na versão 1.0, o menu Estatísticas agora tem a fonte correta, como nas versões 1.1 e Steam.
Vanilla 1.0
Stock 1.0

SilentPatch
SilentPatch

  • Nick007J contribuiu para corrigir o CCarCtrl::PickNextNodeRandomly (retroportado de Vice City) que permite que o tráfego vire à direita em estradas de mão única. Anteriormente, eles só podiam seguir em frente ou virar à esquerda.
  • A filtragem bilinear agora é aplicada na pele do jogador, assim como em Vice City, ou quando o SkyGfx é instalado. Isso faz com que a textura da pele de Claude pareça mais suave quando vista de perto.
Que ano é isso? 1999?
Oh Fido, você está tão bonito agora.
  • Coletores temporários (como dinheiro) agora são limpos corretamente se houver muitos deles, corrigindo um possível vazamento de objeto. Esse problema, oficialmente corrigido em Vice City, agora também é resolvido em GTA III.
  • Os controles de teclado Dodo não estavam habilitados anteriormente para todos os carros quando o cheat “Flying Vehicles” era ativado. Esse problema, oficialmente corrigido em Vice City, agora também foi resolvido em GTA III.
  • Os cronômetros agora são zerados no Novo Jogo, evitando que o tempo de jogo seja transferido dos jogos salvos.
  • Uma correção semi-placebo para reflexos de carros quebrados na versão Steam do GTA III foi substituída por uma correção adequada, integrando Steam Car Colour Fix do Sergeanur.
  • Um bug na maneira como o jogo salva a opção de brilho foi corrigido, permitindo que valores de brilho mais baixos sejam salvos e carregados corretamente. Como o jogo armazenou uma variável de brilho de 2 bytes como um valor de 1 byte no arquivo de configuração, a opção foi incluída apenas parcialmente. Isso fez com que os valores de brilho aumentados fossem usados ​​corretamente, enquanto os valores diminuídos pareciam ocultos.

Grand Theft Auto: Vice City 

Pickups e brilhos

Vice City teve vários problemas com os objetos de coleta corrigidos:

  • Quase todos os pickups têm cores de texto predefinidas para casos em que algo (como um preço ou receita coletada) é exibido sobre eles. No entanto, esse não foi o caso do pickup de dinheiro de um ativo, o que levou ao texto do pickup ter cores aleatórias (no PS2) ou cores piscando a cada quadro (no PC). Nesta atualização, uma cor vermelha genérica (também usada, por exemplo, pelas roupas) foi atribuída a este pickup.

  • Cada tipo de arma tem uma cor de brilho única. Para rifles de precisão, o brilho é rosa, enquanto para armas pesadas, é roxo. No entanto, o brilho da minigun era muito mais brilhante do que o de um lança-chamas ou RPG, mais próximo do brilho de um rifle de precisão. Embora isso inicialmente parecesse uma atribuição de cor errada, acontece que é porque o captador de uma minigun consiste em dois modelos – a base estática e um cano giratório. Por algum motivo, esse cano recebeu um brilho branco, então ele tinha um ponto branco brilhante adicional e também iluminava o captador geral da arma. Isso agora foi corrigido.

Por padrão, o brilho da minigun é mais rosa do que roxo e parece mais próximo da cor do rifle de precisão.
Com o SilentPatch, ele é consistente com as outras armas pesadas.

Correções de backface culling 

Embora seja uma melhoria útil no desempenho da GPU, o backface culling nem sempre foi uma coisa nos GTAs da era 3D:4

  • Nenhuma versão original do GTA III tem ativado.
  • GTA Vice City ativa no PC mas não no PS2.
  • GTA San Andreas é ativado em todas as plataformas.

Enquanto a Rockstar consertou muitos modelos na versão para PC de Vice City para renderizar corretamente com backface culling, muitos outros foram perdidos. Nesta atualização, implementei várias exceções ao backface culling, semelhante ao que foi feito nas versões mobile de GTA III e Vice City:

  • O Backface culling sempre foi desabilitado em veículos, mas isso não se estendeu às partes destacadas do carro. Isso foi corrigido no SilentPatch para San Andreas por um longo tempo, mas agora também está presente em Vice City.
Original:
Stock

SilentPatch:
SilentPatch
  • Vários modelos de ped (incluindo as roupas de Tommy) quebram com o backface culling. Para consertar isso, ele foi desabilitado em todos os peds, bem como em San Andreas.
Original:
Stock

SilentPatch:
SilentPatch
Tommy’s a gola finalmente parece certa.

Original:
Stock

SilentPatch: 
SilentPatch
Esta senhora recuperou seu chapéu.
  • Para modelos de mapas, uma lista de exceções semelhante ao DrawBackfaces.txt das versões móveis foi implementado. Esta lista inclui todos os modelos das versões móveis, juntamente com muitos outros que foram meticulosamente identificados por Tomasak.
Original:
Stock

SilentPatch:
SilentPatch
Este canteiro de obras não parecia que passaria por uma inspeção de segurança antes.

Original:
Stock

SilentPatch:
SilentPatch
As janelas mágicas não existem mais.

LOD do canteiro de obras 

Na infame missão “Demolition Man”, o jogador é encarregado de destruir um canteiro de obras com o uso de um helicóptero de controle remoto. Devido a um bug no script da missão, quando o modelo regular do canteiro de obras é trocado pelo modelo danificado, o modelo LOD do edifício se torna “órfão” (como se perdesse um link para seu modelo de alta qualidade correspondente) e começa a ser exibido o tempo todo, resultando na renderização do edifício de baixa qualidade “dentro” do modelo danificado. A partir desta atualização, o LOD é revinculado ao modelo danificado recém-trocado e, portanto, mantém o resultado correto.

Original:
Stock

SilentPatch:
SilentPatch
É um daqueles problemas do tipo “Como foi lançado assim?”.

Curiosidade: o comportamento em que modelos LOD sem um modelo de alta qualidade correspondente são renderizados a qualquer distância é novo em Vice City, e a Rockstar provavelmente o introduziu para consertar guindastes que desapareciam de perto. Se isso parece familiar, é porque eu introduzi uma correção similar ao GTA III no Corona Update!


Greetings from Vice City… mas não tanto tempo assim, por favor!

A cena de fechamento na versão para PC de Vice City parece demorar uma eternidade, não é?

Para este lançamento, me perguntaram se o SilentPatch poderia encurtar a duração deste splash, e ao olhar o código, descobri que há mais nesta solicitação do que apenas um desejo subjetivo. O jogo determina a duração deste splash da seguinte forma:

  • Quando o fade-in estiver concluído, o jogo começará a contar o tempo em milissegundos.
  • A cada 10 milissegundos, um contador é incrementado.
  • Quando esse contador atinge 150, o jogo termina.

Há um problema, no entanto – quando o jogo é limitado a 30 FPS, esta função é executada a cada 33.(3) milissegundos, então o contador incrementa apenas 30 vezes por segundo. Isto significa que em vez de levar 10ms * 150 = 1.5 segundos, na verdade dura 33.(3)ms * 150 = ~5 segundos! Com o Limitador de Quadros desabilitado, ou no menu principal (onde o jogo trava apenas no VSync), esse tempo seria proporcionalmente menor.

A correção no SilentPatch é re-temporizar o fade – se aumentarmos o contador a cada 33 ms e contarmos até 45, o splash leva cerca de 1,5 segundos, independentemente da taxa de quadros. Implementei essa correção, mas percebi que, embora os 5s originais fossem muito longos, 1,5s também é meio curto. Portanto, o SilentPatch agora se estabelece em um tempo de 2,5 segundos (33ms * 75).


Mostrando o dedo com estilo 

Tanto em GTA III quanto em Vice City, os protagonistas mostram os punhos5 em veículos de tráfego que estão chegando. Normalmente, isso deveria acontecer quando o jogador está desarmado ou segura uma arma branca, pistola ou uma SMG. No entanto, em Vice City, esse recurso tinha vários bugs distintos, agora todos corrigidos no SilentPatch:

  • Segurar Brass Knuckles fez com que Tommy nunca mais mostrasse o punho.
  • Segurar a motosserra não impedia Tommy de mostrar o punho, mesmo sendo uma arma de duas mãos.
  • Em um caso, onde o código do jogo não foi atualizado para levar em conta as armas introduzidas em Vice City, Tommy não mostra o punho para o trânsito parado ao segurar qualquer arma branca, pistola ou submetralhadora introduzida neste jogo.
Aqui, usei as animações do PS2. Em uma versão completamente original para PC, esse gesto parece… um pouco diferente.

Por que este radar é tão feio? Parte 2 

Radar de novo? Sim, mas dessa vez é ainda pior.

O problema que eu mencionei anteriormente em contexto do GTA III ainda está presente, e além disso, novos problemas surgiram: em Vice City, o disco do radar foi redimensionado e refeito – o disco externo agora se estende 6 pixels ao redor do mapa, e um efeito de sombra extravagante foi adicionado 2 pixels abaixo do disco. Isso funcionou bem no PS2, mas está quebrado de várias maneiras em outras plataformas:

  • A sombra também não se adapta à resolução, então, em altas resoluções, ela é quase imperceptível.
  • Fazer o disco do radar escalar revela outro problema: seu tamanho de 6 pixels (ou 6 “unidades”, ao escalar) é muito, e agora há uma lacuna entre a metade inferior do disco do radar e o mapa! Inicialmente, pensei que havia escalado incorretamente esse elemento, mas… a mesma lacuna aparece na versão do Xbox! Preste bastante atenção ao radar em um segmento no tempo marcado deste vídeo de gameplay, e você notará uma lacuna de 1-2 pixels de largura, na cena pode ser vista:
    O HUD inteiro da versão para Xbox parece meio ruim, mas isso é a cereja do bolo, na minha opinião.

O SilentPatch implementa diversas correções para deixar o radar consistente e organizado:
  • Assim como no GTA III, o posicionamento horizontal e a margem do disco do radar, assim como a sombra, são dimensionados de acordo com a resolução.
  • O disco do radar foi reduzido em 2 pixels/“unidades”, de modo que a lacuna na parte inferior nunca aparece.
  • O contorno do blip de destino agora é dimensionado para resolução – enquanto Vice City corrigiu o bug em que o blip em si não era dimensionado, o contorno permaneceu com uma espessura constante. Curiosamente, ao corrigir esse bug na primeira versão do SilentPatch para GTA III, também abordei o dimensionamento do contorno, sem perceber que ele ainda estava parcialmente quebrado em Vice City.
Por padrão, o radar fica muito próximo da borda da tela, o efeito de sombra é quase inexistente e o ponto de destino tem um contorno de 1px.
Com o SilentPatch, o posicionamento do radar e todos os elementos são dimensionados para resolução corretamente. Sua aparência geral agora é muito mais organizada.

Além disso, a sombra da barra de contagem na tela e o contorno da barra de carregamento agora também são dimensionados para a resolução:

O texto parece bom, mas a barra de saúde, nem tanto.
 
Outra pequena vitória de consistência.

Outras correções 

  • Corrigido um problema em que os flashes de cano de rifles de assalto apontavam para a direção errada. Esta correção foi contribuída por Wesser.
No gameplay, o efeito de flash de disparo faz muito pouco sentido.
Com o SilentPatch, é muito melhor.

  • Corrigido um problema em que olhar para um lojista enquanto usava controles clássicos contava como mirar neles. Isso acontecia porque o comando de script IS_PLAYER_TARGETTING_CHAR, atualizado para controles Standard no PC, não diferenciava anteriormente entre esses estilos de controle. Esta correção também foi contribuída por Wesser.
  • Começar um Novo Jogo anteriormente reiniciava a sensibilidade do mouse, o mesmo que ao restaurar as configurações para os padrões. Isso agora foi resolvido.
  • Nesta versão, revisitei a correção de áudio de Rosenberg, famosamente a primeira correção feita para SilentPatch. Os resultados são surpreendentes – 12 anos depois, descobri que essa correção era placebo o tempo todo! Ao contrário da crença popular, esse recurso nunca foi quebrado no PC, por fim, e todas as falas de Rosenberg podem ser ouvidas mesmo sem mods. A diferença percebida na frequência dessas falas pode se resumir a uma função de aleatoriedade diferente entre as plataformas. Portanto, apenas para uma boa medida, junto com a remoção de uma correção de placebo, também fiz esse recurso usar uma função de aleatoriedade do PS2, para garantir que as chances desse áudio tocar correspondam ao console.
  • Ped Speech Patch do Sergeanur agora foi integrado ao SilentPatch. Isso torna os pedestres e Tommy muito mais falantes do que o padrão. Minha variação dessa correção também inclui uma correção para aleatoriedade imprópria da ação de iniciação do chat – as chances disso agora correspondem à versão do PS2.
  • Bater em veículos e objetos com uma chave de fenda agora produz um som de impacto. Anteriormente, a chave de fenda era a única arma completamente silenciosa.
  • O gás lacrimogêneo agora pode causar dano a Tommy e outros personagens da missão, como na versão para PS2.
  • Graças a Tomasak, mais interiores foram atualizados para que suas áreas externas sejam visíveis de dentro.
  • O efeito de fluxo de chuva nas estradas, que é exibido por um curto período após a chuva parar, agora é redefinido ao carregar um jogo salvo. Isso impede que o efeito seja exibido quando o clima no jogo salvo carregado estiver ensolarado.

Grand Theft Auto: San Andreas 

Enquanto todos os três jogos receberam inúmeras novas correções, desta vez, San Andreas foi o centro das atenções. Afinal, seu 20º aniversário está logo ali:

Melhorando veículos, uma animação de cada vez

Para este lançamento, Wesser contribuiu com várias correções relacionadas às animações de CJ em veículos:

  • As roupas de CJ balançam pelo vento ao dirigir uma moto [e carros conversíveis], mas não ao dirigir o Quad. Isso agora está corrigido.
  • Ao virar em baixas velocidades, os movimentos do guidão do Quad não correspondiam às animações do CJ. Isso foi corrigido agora.
  • Inverso à correção anteriormente citada do GTA III, mudar de estação de rádio enquanto dirige um barco onde CJ fica em pé o faria reproduzir a animação sentado. Isso agora foi corrigido, embora o jogo não tenha uma animação adequada para mudar de estação de rádio quando em pé, então agora isso é feito sem animação alguma.
Você é um mago, Carl.

Não consegue recrutar alguém? É isso que você ganha por jogar sem um disco! 

Este é um bug divertido, e provavelmente a principal razão pela qual fazer speedrunning em San Andreas em um patch 1.01 é preferível! Na superfície, é apenas um erro simples – uma vez que o jogador ativa um replay, recrutar membros de gangue mirando neles e apertando um botão não é mais possível. Embora nunca tenha sido mencionado no changelog oficial, ninguém nunca observou esse problema na versão 1.01 do jogo, apenas na 1.0, então foi assumido que ele foi corrigido lá.

No entanto, Wesser descobri que há mais nisso. Este não é um bug do jogo – em vez disso, foi um erro cometido quando HOODLUM derrubou inicialmente o SecuROM no executável 1.0 em 2005! Um pedaço de código ofuscado por DRM foi descriptografado incorretamente, resultando nessa quebra, que mais tarde foi transportada pelo listener para seu famoso Compact EXE. Wesser descobriu esse problema em detalhes e reimplementou o pedaço de código ausente que agora também está incluído no SilentPatch.

Se ao menos o listener ainda estivesse por perto para atualizar o Compact EXE… 😔

[Nota por Junior_Djjr: visto que isto é um problema do .exe do HOODLUM e não tem a ver com ser a versão 1.0 do jogo, como speedrunners achavam, isto denunciou speedrunners usando a versão pirata do jogo, mas que era esperado visto que não é simples conseguir a versão original 1.0 US hoje em dia. Será que há mais bugs do jogo que foram causados pelo .exe pirata e não sabemos?]


Fogo! Fogo! Oh, espere… 

Isso já aconteceu com você? Você está cuidando da sua vida em algum lugar em San Andreas, então, do nada, um 🔥 fogo 🔥 começa! Você não tem um extintor de incêndio com você, mas há uma solução: você se lembra que há extintores de incêndio espalhados em todos os restaurantes, e há a The Well Stacked Pizza Co. logo ali na esquina! Você aperta o botão de corrida o mais rápido que pode, esperando salvar o dia, entra no local e…

O pickup não está lá!? 🧯❌😭

Felizmente (ou infelizmente?) para você, isso não é aleatoriedade, mas um bug. Enquanto San Andreas geralmente está OK em redefinir o estado do jogo ao reiniciar um novo jogo dentro da mesma sessão, e SilentPatch melhora ainda mais a situação ao redefinir mais algumas variáveis ​​que foram perdidas, os arquivos IPL de mapa também exibiram um bug semelhante. Enquanto IPLs binários reinicializavam bem devido à sua natureza transmitida, IPLs de texto inicializavam vários spawns no jogo apenas uma vez no início do jogo, e nunca mais – então iniciar um novo jogo após carregar um salvamento existente resultava em esses spawns simplesmente não estarem presentes. Eles são:

  • Pickup de armas (cinco no jogo original, incluindo extintores de incêndio nas cozinhas)
  • Geradores de carros (nenhum no jogo original, mas suportado)
  • Saltos únicos (nenhum no jogo original, mas suportado)

Nesta versão, o SilentPatch mantém o controle dessas definições de IPL e as reinicializa ao iniciar um Novo Jogo. Infelizmente, os saves existentes afetados por esse problema não podem ser corrigidos automaticamente, mas pelo menos qualquer jogada futura terá os itens faltantes surgindo de forma confiável.

[Isto é importante para que mods de .ipl, em formato de texto, que adicionem pickups de armas, geradores de carros e saltos únicos, agora funcionem corretamente]


Carl Johnson é um homem inocente! 

Em 2005 ou 2006, quando eu estava casualmente brincando em San Andreas quando criança, eu frequentemente me encontrava em uma situação familiar: eu recebia um nível de procurado, policiais motociclistas vinham atrás de mim, então eu digitava o lendário código de trapaça AEZAKMI para me livrar da perseguição, e ainda assim… os policiais motociclistas continuavam atirando em CJ. Irritante, certo?

Rude.

Em 2024, finalmente mergulhei nessa questão e, após uma depuração pesada, percebi que isso acontece por causa de uma estranheza na forma como a tarefa Drive-By específica usada pelos policiais motociclistas é codificada: ao contrário de todas as outras atividades de perseguição, a tarefa Drive-By é na verdade a mesma usada pelos membros da gangue e, portanto, não é codificada para terminar automaticamente quando o jogador perde a perseguição!

No SilentPatch, atualizei o código para verificar se um policial que aborta a perseguição tem uma tarefa ativada TASK_SIMPLE_GANG_DRIVEBY, e se sim, cancele-o. Funciona muito bem e corrige uma das peculiaridades do jogo que costumava irritar um Silent de 11 anos de idade 😅.


BOOM! Para onde foi aquela roda? 

Em GTA III e Vice City, veículos explodindo sempre perdiam a roda dianteira esquerda. Em uma tentativa de melhorar esse recurso em San Andreas, os desenvolvedores fizeram com que ele destacasse uma roda aleatória na explosão. No entanto, a Rockstar fez essa melhoria pela metade – a roda pode ter se destacado visualmente muito bem, mas, no que diz respeito à física, o antigo comportamento de sempre perder a roda dianteira esquerda persistiu. Isso resulta em uma nova falha visual, onde a roda errada afunda:

Não é assim que a física funciona.

Nesta atualização, corrigi vários bugs relacionados a esse recurso:

  • A roda removida agora corresponde “visualmente” e “fisicamente”.
  • A roda traseira direita agora também pode ser removida. Anteriormente, a função aleatória consideraria apenas as rodas dianteiras e a roda traseira esquerda.
Muito melhor

Essa correção também tem um efeito colateral não intencional, mas legal: explodir o veículo várias vezes usando códigos de trapaça pode fazer com que ele perca várias rodas, eventualmente deixando um carro explodido com todas as quatro rodas removidas!

[Importante: MixSets também faz isso com a opção “RandWheelDettach”, e causa conflito com o novo SilentPatch fazendo não dar efeito! Portanto desative-a. A partir de hoje ela virá desativada por padrão no arquivo .ini do MixSets, com o aviso]


Isso não é uma bazuca, Zero 

“Air Raid”, a primeira missão dada ao jogador pelo Zero, é um caso interessante da Rockstar tentando consertar erros de script… e falhando. Esta missão coloca CJ em um modo torre operando uma minigun que é dada a ele apenas durante a missão. Na versão original do PS2 e PC 1.0, esta missão “rouba” a atual arma pesada do jogador completamente, e não há como evitá-la. Na 2.0, a Rockstar tentou consertar isso salvando informações sobre a arma existente neste slot, e ela foi devolvida ao jogador depois. No entanto, o script falha ao carregar o modelo da arma, então o jogador… recebe de volta uma arma invisível. Não tente usá-la – seu jogo vai crashar!

Não toque nessa dial arma.

Felizmente, esse erro não foi grave, e simplesmente salvar o jogo e recarregar esse salvamento o corrige. No entanto, nesta atualização, o SilentPatch injeta uma correção adequada para esta missão, garantindo que a arma seja preservada e o modelo seja carregado corretamente.


Aonde você vai, mano? Temos trabalho a fazer! 

Em meio ao caos dos tumultos de Los Santos nas partes finais da história de San Andreas, o jogo apresenta uma peculiaridade bastante frustrante. Em pontos aleatórios, membros de gangue no grupo de CJ podem abandoná-lo e fugir, aparentemente sem motivo. Embora isso possa adicionar alguma dinâmica interessante durante o roaming livre, pode ser um obstáculo durante as missões. Portanto, Nick007J se afundou no código para entender completamente esses eventos.

  1. Em intervalos regulares, o helicóptero da polícia voando sobre a cidade mira em um membro aleatório da gangue. Pode ser alguém do grupo de CJ ou qualquer outra pessoa aleatória.
  2. A pessoa visada começa a fugir, tentando escapar do helicóptero.

O SilentPatch refina esse recurso um pouco para evitar que atrapalhe – durante as missões, o grupo de CJ não pode mais ser alvo do helicóptero.


UFO/UAP, estrela cadente ou ambos?

Um dos mistérios que “assombram” San Andreas desde o início dos tempos é a presença de pontos pretos incomuns se movendo rapidamente no céu. As pessoas teorizaram que pode ser uma estranha gota de chuva, uma estrela cadente ou… OVNI. Isso era algo que eu sabia há algum tempo, mas somente depois que Bob El Aventurero fez um vídeo detalhado tentando desvendar esse mistério é que eu olhei para esse fenômeno com mais detalhes:

O vídeo toca um pouco no lado técnico desse efeito, afirmando que ele deveria ser renderizado como uma linha branca de um pixel de largura, mas não responde à pergunta sobre por que ele sai preto. Acontece que ele é renderizado como tal apenas porque… ele tenta desenhar usando a textura da nuvem. Como a linha tem apenas um pixel de largura e não tem dados UV, provavelmente ela amostrou o canto superior esquerdo da textura da nuvem, ignorando o alfa. A correção, como sempre, é trivial — desenhe a estrela sem textura. Por fim, o mistério é encerrado:


Chega de roubos ninja! 

O usuário do Twitter/X Radiant Eclipse fez uma pergunta interessante a Obbe Vermeij sobre um bug/recurso bem conhecido, mas misterioso:

Perguntei a Nick007J se ele havia pesquisado isso antes, e ele pesquisou, mas sem uma resposta definitiva – então decidimos pesquisar novamente. Acontece que, no caso do jogador segurar os botões do acelerador e/ou freio enquanto levanta o carro do lado do passageiro, o jogo faz as seguintes verificações:

  • Se o motorista estiver vivo, faça-o sair do carro morto.
  • Se o motorista estiver morto, faça-o sair do carro normalmente.

Isso parece… ao contrário, especialmente porque um caminho de código diferente na mesma função tinha essas verificações trocadas. Teorizamos que isso provavelmente era apenas um erro e que as condições deveriam ser trocadas, mas somente quando a ultragirl468 fez os testes, tivemos uma prova definitiva. Conseguiram roubar o carro de um motorista já morto, e…

O motorista abandona o carro e morre imediatamente (de novo).

Esta era a prova de que precisávamos – simplesmente inverter a verificação corrige esse problema. Agora, os motoristas vivos permanecem vivos, e os motoristas mortos permanecem mortos. Este problema também foi corrigido na Definitive Edition (mas não nas versões “clássicas” para celular/PS3/X360), onde ele se comporta da mesma forma que o San Andreas clássico com minha correção aplicada.

 

Você poderia dizer que alguém… disse ao Obbe que aconteceu de novo 😉

[Isto é uma referência à um comentário dentro do .exe do GTA San Andreas que diz “Tell Obbe it hapenned again”].
 
 

Vários monitores, vários problemas 

Esta seção contém links de afiliados, o que significa que eu [Silent] recebo uma comissão por cada compra feita por meio deles.

Recentemente, fui convidado para uma campanha promocional e recebi uma JSAUX FlipGo, um monitor portátil de tela dupla. Antes eu só tinha um monitor, então só agora percebi o quão estranho é o diálogo de seleção de monitor no GTA San Andreas. Como agora eu estava “afetado” por ele, consertei vários aborrecimentos presentes naquele diálogo e o aprimorei com algumas melhorias de QoL [qualidade de vida].

A caixa de diálogo original parece um pouco triste e lista os nomes da GPU, o que pode ser confuso.
Com o SilentPatch, a caixa de diálogo parece moderna, usa nomes de monitor fáceis de usar e pode ser ignorada.
  • Refiz o diálogo com controles comuns modernos, para que pareça nativo, em vez de ficar limitado aos controles no estilo Win9x.
  • Tornei os nomes de monitores de diálogo amigáveis ​​ao usuário (no Windows 7 e mais recentes) em vez dos nomes do adaptador DirectX 9, que para a maioria das pessoas apenas duplicavam os nomes da GPU. No meu caso, eu tinha três entradas NVIDIA GeForce GTX 1070, e agora elas são nomeadas de acordo com as telas.
  • A caixa de diálogo ignorava o controle X e o botão Esc, agora ela fecha corretamente.
  • O diálogo agora recebe o foco do teclado na criação.
  • O ícone da barra de tarefas agora é exibido de forma confiável, e a barra de título exibe um pequeno ícone.
  • A caixa de diálogo agora lembra a tela selecionada. Anteriormente, ele lembrava o índice de resolução, mas não o índice da tela (apesar de armazenar essas informações no arquivo .set), então, em vez disso, foi apontado para alguma resolução aleatória na primeira tela.
  • O diálogo agora retorna para a primeira tela se uma tela inexistente for selecionada, por exemplo, ao iniciar o jogo após desconectar uma das telas.
  • O diálogo agora é explicitamente inconsciente de DPI, então as configurações de compatibilidade de DPI não podem impedir que ele seja dimensionado.
  • O mais importante – as opções de monitor e resolução agora podem ser lembradas em um arquivo.set em local separado, e o diálogo pode ser suprimido! Uma dica de ferramenta foi adicionada à nova caixa de seleção, instruindo o jogador a excluir device_remembered.set da pasta “GTA San Andreas User Files” se quiser que o diálogo seja exibido novamente.

Estou tonto, confuso e vejo coisas engraçadas embaixo d’água 

Achamos que tínhamos terminado com os problemas de escala de resolução, depois de todos os problemas que já detalhei antes? Haha, não.

Os efeitos de pós-produção de San Andreas não são apenas os mais elaborados de todos os jogos da era 3D, mas também são bem diferentes entre o PS2 e as outras plataformas. Dito isso, o efeito de calor parece ser idêntico entre o PS2 e o PC… pelo menos se você não ficar mudando a resolução no jogo. Se você fizer isso, coisas estranhas podem acontecer — aqui está como o efeito fica se você rodar o jogo em 4K e depois mudar a resolução para 640×480:

Essa comida não é merd-

Uma simples reinicialização do jogo resolve isso, então não é um bug crítico – no entanto, ele foi corrigido nesta atualização do SilentPatch, então agora o efeito é redimensionado corretamente quando as configurações são alteradas.

[Por padrão MixSets e Widescreen Fix desativam esse efeito de calor, por ser muito bugado, também, em geral as pessoas não gostam deste efeito pois deixa a imagem borrada demais. Eu (Junior_Djjr) testei o efeito no novo SilentPatch e continua igual a sempre foi, somente o problema na mudança de resolução foi corrigido]


Mas, tem mais! O efeito ripple quando a câmera está debaixo d’água, por mais legal que seja, também parece um pouco diferente em diferentes resoluções. Não está quebrado por si só, pois ele escala bem, mas a frequência do efeito de onda é notavelmente maior em altas resoluções. Isso agora foi corrigido, então o efeito parece consistente:

Da esquerda para a direita – jogo original em 640×480, jogo original em 4K, jogo SilentPatched em 4K.

Outras correções 

  • Estatísticas contadas em quilogramas agora são exibidas corretamente no menu Estatísticas.
  • Builds anteriores do SilentPatch já faziam o jogo aceitar vários erros de digitação na hierarquia de veículos, corrigindo, por exemplo, uma roda do meio faltando no DFT-30. Para esta versão, mais dois erros de digitação agora são aceitos pelo jogo:
  • transmision na Dumper, tornando a suspensão animada, como no Monster Truck.
  • tailights no Uranus, realocando as luzes das lanternas traseiras do interior do carro para a traseira.
  • Um vazamento de memória significativo ao tirar fotos com uma câmera do jogo foi corrigido.
  • Wesser contribuiu com uma correção para os membros da gangue tirem foto de CJ. Anteriormente, segurar um rifle sniper mudava a “mira” da câmera para a mira do rifle sniper. Isso agora foi resolvido.
  • Os checkpoints de corrida agora são coloridos corretamente, mesmo que nenhum marcador enex tenha sido exibido na tela antes. Esse bug obscuro era praticamente impossível de testemunhar em um jogo original, mas podia ser facilmente visto com mods ou em corridas MTA.
Os memes de instanciação de geometria do RenderWare estão a todo vapor – a geometria da seta foi instanciada sem as cores do material.
Com o SilentPatch, isso não é mais um problema.
  • Corrigido um travamento que ocorria ao apertar o botão de replay perto de grupos de membros de gangues segurando itens. Isso envolve uma lista bem elaborada de etapas que deram errado na lógica do jogo, mas eu documentei em detalhes no código-fonte do patch, então vou apenas citar minha explicação técnica aqui:

CWorld::Process processa todas as entradas na lista de movimento, chamando ProcessControl nele. CPlayerPed::ProcessControl lida com o recrutamento de gangues, o que por sua vez pode resultar nos manos derrubando cigarros ou garrafas. Quando isso acontece, eles são destruídos imediatamente. Se esses adereços estiverem na lista de movimentação logo após o PlayerPed, isso corrompe um pré-armazenado em cachê no ponteiro node->next e referencia uma entidade já liberada. Para corrigir isso, coloque a entidade na fila para destruição de forma atrasada em vez de destruí-la imediatamente, e deixei que ela se destrua em CWorld::Process depois.

  • Wesser contribuiu com uma correção para o interpretador SCM, onde a geração de um policial motociclista (lapdm1) com o tipo PEDTYPE_COP gerava um policial normal em vez. Esse problema não afeta o script padrão, mas pode ter afetado os mods.
  • As garagens de apreensão agora só podem apreender carros e motos (e seus subtipos), pois outros tipos de veículos são muito grandes ou não podem sair da garagem sem explodir. Isso acaba com a apreensão de helicópteros e barcos.
Eu… tanto faz, cara.
  • Vários outros travamentos relacionados a replays foram corrigidos:
    • Ocorria um travamento ao iniciar uma cena após reproduzir um replay em que CJ usava roupas diferentes das que está vestindo no momento.
    • Ocorria um travamento ao reproduzir um replay em que CJ tinha um tipo de corpo diferente (gordo/musculoso/normal) do que seu atual.
  • A lógica de spawn de aviões foi levemente melhorada. Embora eles ainda possam cair após o spawn, isso agora deve ocorrer com menos frequência.
  • Agora é possível pairar com um jetpack usando os controles do teclado, segurando os botões da arma seguinte/anterior simultaneamente (Q + E por padrão).
  • Nunca percebi antes o quanto é mais fácil controlar o jetpack quando você pode pairar sem esforço.
  • A mira do míssil guiado por calor e a mira da arma mostrada ao mirar com um controle agora são dimensionadas corretamente para a resolução.
Não é inutilizável, mas é pequeno demais para ser confortável.
Acho que fica muito mais bonito nesse tamanho.
Em 4K, você mal consegue ver essa mira, para começar.
Finalmente, agora está utilizável.
  • Wesser contribuiu com uma correção para uma falha de script bem conhecida nas Escolas de Condução e Bicicleta. Anteriormente, um erro na forma como esses scripts destruíam os cones usados ​​nas aulas podia fazer com que objetos aleatórios fossem removidos do jogo. Essa falha era mais conhecida como “falha do quadro-negro”. Infelizmente, o SilentPatch não pode reparar salvamentos já afetados por esse problema.
  • O cursor na tela do mapa agora é dimensionado para resolução e agora pode sempre alcançar o canto superior esquerdo do mapa, independentemente da resolução. Esta correção foi contribuída por Wesser.
  • O preenchimento interno de 4 pixels das caixas de texto com um fundo agora é dimensionado para resolução corretamente. Esta correção foi contribuída por Wesser.
  • O nitro não se regenera mais rápido ao dar marcha ré no carro. Em vez disso, a velocidade de recarga durante a marcha ré agora é idêntica a quando o carro está parado. Mais uma vez, essa correção foi contribuída por Wesser.

Mudanças internas 

Além de todas as novas correções, para esta versão, a base de código do SilentPatch também foi bastante modernizada, e várias correções foram… bem, corrigidas. Algumas dessas mudanças valem a pena destacar.

Alguns desses pontos podem ser um pouco técnicos, mas podem ser úteis para modders que querem manter a compatibilidade com o SilentPatch ou estão procurando dicas sobre como fazer seus projetos aplicarem patches de código de uma forma mais resiliente.

  • A regressão mais severa introduzida pelo SilentPatch foi finalmente abordada. Desde a primeira compilação, o SilentPatch tentou corrigir o erro ‘Não é possível encontrar o modo de vídeo 640×480’. Embora minha correção tenha funcionado bem para usuários que não usavam escala de DPI, ela piorou as coisas para aqueles que usavam esse recurso – e o jogo reclamava sobre não conseguir encontrar resoluções impossíveis como 1152×867. Esse bug foi finalmente abordado, e a nova correção funciona corretamente independentemente da escala de DPI.
  • Migrei várias correções para usar HookEach. Essas correções conectariam várias chamadas a uma função e adicionariam minhas próprias alterações no topo [assim chamando as seguintes]. No entanto, anteriormente o SilentPatch presumia que todas essas chamadas estavam apontando para a mesma função, o que é verdade para um jogo não modificado, mas outra modificação instalada junto com o SP pode ter quebrado essa suposição. Com HookEach, cada instância é tratada separadamente, sem o risco de pisar em outro hook, e “empilhar” com outras modificações graciosamente. Na verdade, várias correções dentro do SilentPatch também se empilham umas sobre as outras assim, e elas são completamente inconscientes umas das outras, mesmo quando elas fazem hook com a mesma chamada no código. [Isto corrige os helicópteros não serem reconhecidos pelo VehFuncs ao ter SilentPatch instalado?]
  • Todos os SilentPatches lançados após maio de 2021 usam transactional patterns. Para esta versão, atualizei a base de código para usar esses também. Anteriormente, se algum padrão falhasse em corresponder enquanto o patch era aplicado, a biblioteca inteira seria descarregada e travaria o jogo ou simplesmente não faria nada. Com padrões transacionais (transactional patterns), cada correção é aplicada separadamente e, se algum padrão que forma uma correção específica não corresponder, uma exceção é lançada e a correção inteira é abortada sem fazer nenhuma alteração na memória do jogo.

Para o código do patch, isso simplifica a maneira como as correções são aplicadas ao jogo e torna impossível para mim quebrar acidentalmente o patch inteiro se eu esquecer de contabilizar, por exemplo, outro mod fazendo alterações no código. Isso traz benefícios para os usuários também, pois a compatibilidade com outros mods deve ser melhorada ainda mais! Outros SilentPatches recentes mostraram que, com padrões transacionais, é quase impossível “quebrar” o SP completamente.

  • O SilentPatch para San Andreas introduziu essa correção em várias versões atrás:

  • Um flash do cano da arma agora aparecerá ao disparar a última bala do carregador.
  • No entanto, isso introduziu uma regressão em que “disparar” de uma arma vazia enquanto estava em um jetpack ainda exibia o flash do cano:

    Esta correção foi refeita, resolvendo o problema.

  • SilentPatch para San Andreas tem essa correção desde o primeiro lançamento:
  • As peças removidas do veículo agora permanecerão da mesma cor do veículo de onde vieram.

Nesta versão, essa correção recebeu várias melhorias:

    • Recentemente, foi descoberto que essa mudança faria o jogo travar se uma parte removida de um veículo modificado tivesse mais de 15 materiais. Isso já foi resolvido.
    • Embora as cores das peças removidas sempre tenham sido preservadas, acontece que elas nunca foram iluminadas corretamente. Além disso, atualizações posteriores do SilentPatch removeram a luz auxiliar do veículo em favor de uma iluminação direcional funcionando corretamente, então a iluminação parecia ter regredido. Nesta atualização, as peças no chão agora são iluminadas da mesma forma que os carros.
  • Versões anteriores do SilentPatch para San Andreas lançaram várias correções para placas de veículos que não funcionavam corretamente. Recentemente, foi descoberto que essa correção faria com que as placas parassem de ser geradas se um veículo com placas personalizadas fosse equipado com peças tuning. Reimplementei essa correção do zero, tornando-a mais simples e, por sua vez, também resolvendo esse problema. [Tuning Mod também trabalha com as placas de uma forma adaptada ao SilentPatch, continua funcionando? Não testei]
  • O último lançamento do SilentPatch para San Andreas introduziu uma correção para as animações de paraquedas. No entanto, naquela época, essa correção veio às custas da remoção das Night Vertex Colors do modelo de paraquedas, fazendo com que parecesse muito brilhante à noite. Graças a B1ack_Wh1te, para esta atualização, essa correção foi revisitada e agora combina as cores corretas com animações funcionais. Além disso, como essa correção causou problemas de renderização no SA-MP, agora ela está desabilitada no multijogador, a menos que o Graphics Restore esteja instalado. [SkyGfx também faz trabalhos na renderização do paraquedas, eu testei e continua funciona corretamente sem conflitos com o novo SilentPatch]
Em “The Corona Update”, o paraquedas foi animado corretamente, mas parecia meio brilhante.
Nesta atualização, tanto a iluminação quanto as animações funcionam bem.
  • Na última atualização, esta correção presente em GTA III e Vice City foi reescrita:
  • Reintroduzido luzes brilhantes sob itens de armas/saúde/armaduras, subornos, pacotes ocultos e itens de dinheiro coletados — elas eram exibidas apenas no PS2 devido a um bug em todas as versões para PC.
  • No entanto, naquela época eu não percebi que minha reescrita fez com que aqueles brilhos de luz desaparecessem quando “caixas de luz” em carros eram renderizadas na tela (porque a correção de widescreen desabilita essas caixas). Agora atualizei esta correção novamente para resolver este problema e trazer paridade com a versão de San Andreas desta mudança.

  • Em III e Vice City, redefinições de variáveis ​​como a flag de Pay ‘n Spray foram atualizadas para usar a mesma abordagem menos invasiva usada em SilentPatch para San Andreas.
  • Patches para GTA III e Vice City foram atualizados para suportar IDs de modelo de 32 bits do fastman92 limit adjuster. A versão de San Andreas já era suportada anteriormente.
  • Patches para GTA III e Vice City foram atualizados para suportar ASLR. Embora nenhum executável oficialmente lançado desses jogos tenha esse recurso de segurança habilitado, alguns deles contêm informações de realocação válidas e, portanto, uma opção de segurança do Windows forçando ASLR sempre que possível poderia ter causado que o SilentPatch não fosse aplicado corretamente. Isso já foi resolvido.

Caso você esteja se perguntando para que serve o ASLR, aqui está um ótimo exemplo – um exploit em BeamNG.drive (que também se tornou mais fácil e confiável de realizar devido à desativação do ASLR do jogo em uma de suas bibliotecas6foi usado para hackear a Disney! Se ASLR não estivesse desabilitado, esse exploit teria sido muito mais difícil de criar; os comentários de código no exploit de prova de conceito até mencionam um “endereço base estático” especificamente.

  • Em todos os 3 jogos, correções relacionadas à aleatoriedade agora usam o mesmo mecanismo de aleatoriedade, com base no algoritmo do PS2. É improvável que resulte em diferenças perceptíveis, mas simplifica o código.

  • Em todos os 3 jogos, as opções INI que listam os IDs dos modelos de veículos (como RotorFixExceptions) agora também aceitam nomes dos modelos.

 

Download e código-fonte

No site do Silent: GTA IIIGTA Vice CityGTA San Andreas

Aqui no site da DetonandoGTA, com nossa própria organização, descrições, instruções, avisos, padrão de instalação etc: GTA IIIGTA Vice CityGTA San Andreas 

Ou de preferência, baixe o Essentials Pack, que é a única coisa que você precisa para começar a jogar e instalar mods no jogo, onde já inclui o novo SilentPatch:

Essentials Pack para GTA III
Essentials Pack para GTA Vice City
Essentials Pack para GTA San Andreas

Veja o código-fonte no GitHub

TJGM também publicou um vídeo de demonstração com foco em San Andreas, cobrindo muitas das adições introduzidas nesta atualização do SilentPatch:

 

Créditos e reconhecimentos 

Esta atualização só foi possível graças às contribuições de muitos indivíduos. Vários modders generosamente compartilharam suas descobertas e correções, que mais tarde foram integradas ao SilentPatch. Outros reservaram um tempo para testar o patch por meio de suas muitas iterações para garantir que eu pudesse lançá-lo em um estado quase perfeito:

Contribuidores: 

  • B1ack_Wh1te
  • Fire_Head
  • Nick007J
  • Sergeanur
  • Wesser

Testes e sociais: 

Testando: 

  • Time no Luigi’s Club
  • Tomasak
  • Wr3nch

Por último, mas não menos importante, um agradecimento especial a Obbe Vermeij por todas as curiosidades sobre o desenvolvimento do GTA que ele compartilhou com o mundo e, mais importante, por todo o trabalho que ele colocou nos jogos com os quais ainda nos importamos décadas depois. 🙌.

Futuro do SilentPatch? 

Haverá outro SilentPatch para os jogos GTA? Não sei. Meia década se passou entre “The Corona Update” e esta postagem, então, se isso for um indicador, é provável que não haja. No entanto, estou ciente de que disse “nada mais de novas correções” pelo menos duas vezes ao longo da vida útil do SilentPatch para San Andreas, então… nunca se sabe.

Desde então, o SilentPatch prosperou como uma “marca” fora do GTA, dando vida nova a muitos outros jogos antigos (e mais novos). Quer o GTA receba ou não mais atualizações no futuro, tenho certeza de que muitos outros lançamentos e postagens do blog virão. Que os jogos clássicos continuem a trazer alegria tanto para os novos jogadores quanto para aqueles que revivem suas memórias de infância!


  1. Outro exemplo de um bug que deixei intacto deliberadamente seria o car crusher glitch – é divertido, inofensivo e requer uma configuração elaborada, então quase não há chance de um jogador desavisado tropeçar nele por acidente. 

  2. reverselights e indicators dummies também existem nos modelos do GTA III, mas nunca são usados, nem existem no PS2. 

  3. Sim, estes brilhos são as infamas coronas. 

  4. Eu expliquei backface culling um tempo atrás no contexto de carros para o San Andreas. 

  5. Na realidade, o gesto parece diferente, mas o jogo se refere a ele internamente como “sacudir o punho” (fist shake). 

  6. Seguidores regulares no meu Twitter/X sabem o quanto eu falo sobre esse assunto em particular, a ponto de ser irritante. Não pretendo parar, pois é para o benefício de todos os jogadores, inclusive eu.. 

Anterior Proxima Página inicial