O Windows não pode entrar no modo de vídeo de baixa resolução com placas gráficas / drivers modernos

11

NOVO!

Eu estava tentando postar aqui ontem, mas ele continuou me dando um erro. Eu descobri que ele realmente não está usando o DirectX, mas o GDI ou o que for que não seja o gráfico DX no Windows (não o OpenGL ou qualquer outra API relacionada ao hardware). Me desculpe por isso. Eu realmente pensei que era DX.

Tenho vários EXEs de tela cheia de 32 bits do Windows que foram compilados para a era do Windows XP e usam alguma versão do DirectX para definir o modo gráfico: 320x240x8. É codificado, nativo (sem falsificação) e os binários não podem ser tocados, recompilados ou modificados de nenhuma maneira (não pergunte).

Estou tentando fazer com que eles sejam executados no Windows 7 de 64 bits e posterior (ele nem roda no XP sem a placa e o driver certos, apenas para esclarecer qualquer confusão). Eles só são executados se a placa de vídeo e seu driver suportarem especificamente esse modo, o que é extremamente raro, independentemente de ser executado no XP ou 7. As versões de 32/64 bits também parecem não ter impacto.

Estou com esse problema há muito tempo, pedindo ajuda a especialistas várias vezes e obtendo todos os tipos de soluções possíveis, que tentei uma a uma. Cada um deles falha com o mesmo erro: não é possível definir o modo de vídeo. O problema é sempre que ele não pode definir o modo de vídeo. A solução óbvia é que ele não pode tentar definir o modo de vídeo, porque não é suportado. Então, preciso de algum tipo de pequeno EXE que possa ser agregado a esses EXEs e que possa ser configurado para "envolvê-lo" e enganá-lo, pensando que ele realmente definiu o modo, enquanto na verdade está sendo executado em algum tipo de janela de vídeo emulada .

Eu tentei o "Wine on Windows", vários utilitários que "alteram a resolução" (incluindo DXWIN e D3DWindower), executando-o dentro de uma VM, configurações de compatibilidade, etc. Praticamente tudo o que você pensa imediatamente. Nada funciona. Mas a coisa da VM não seria boa, mesmo que funcionasse, porque isso também deve ser "distribuível".

Alguém pode me ajudar? Isso é possível de resolver? Parece tão bizarro que não é possível "enganar" os programas para que eles realmente definam o modo de vídeo.

Espero que um verdadeiro especialista seja capaz de encontrar alguma solução.

user1696157
fonte
O fato de você ter dito que não pode ser recomplicado, etc, implica experiência em programação - você é capaz de 'agrupar' o software no software? Por exemplo, criar um novo software com uma janela de 320x240 (como uma View)?
Dave
Bem, não é mais ... eu preferiria uma solução padronizada.
User1696157
Talvez você deva postar isso no SO e solicitar conselhos específicos sobre a melhor forma de codificar o wrapper (se essa abordagem for viável).
Karan
@ Karan: sua pergunta sobre o SO foi encerrada como off-topic e ele foi convidado a postar aqui. stackoverflow.com/questions/12576136/…
Harry Johnston
1
Tem certeza de que está usando o DX e não um OGL ou Glide mais antigo?
Synetech 30/09/12

Respostas:

2

Totalmente não é o que realmente pretende fazer, e não sei dizer se funcionará sem os arquivos reais em questão, mas você pode emular uma placa gráfica mais antiga com o 3danalyzer . Emula uma placa nvidia das séries 4000 e 5000 que é relativamente antigo e pode funcionar.

Journeyman Geek
fonte
Não funciona Desculpe. Nada parece funcionar.
user1696157
1
@ user1696157 O que aconteceu quando você tentou executá-lo? Quais códigos de fornecedor / dispositivo emulados você tentou? Algo apropriado para quando o aplicativo era novo? Você ativou o log de depuração? O que o log diz?
John Lyon
1
você teria um arquivo de exemplo que poderíamos tentar - supondo que seja algo redistribuível? É muito difícil solucionar problemas às cegas.
Journeyman Geek
2

O utilitário PowerStrip (US $ 29,95 com avaliação) pode adicionar resoluções personalizadas para o seu monitor. Para os loucos (como o seu), não se sabe como será.

O artigo da wiki Modos de exibição personalizados mostra como isso é feito e até menciona resoluções especificamente personalizadas, como 320x200 e 320x240.

No seu lugar, talvez eu tente primeiro em uma máquina virtual, apenas por precaução (embora eu realmente não saiba se funcionará corretamente em uma VM). Isso permitirá que você não destrua a tela do computador por nada, além de ver a tela do monitor em seu tamanho real (pequeno), em vez de espalhar-se por todo o monitor.

Se o Windows for de 32 bits e a placa de vídeo for VGA, talvez este artigo antigo também possa ajudar: Modos VGA ajustados .

[EDITAR]

Outra possibilidade é usar regedit e posição para esta chave:
HKEY_CURRENT_CONFIG\System\CurrentControlSet\Control\VIDEO\{video-card}\0000,
alterar as seguintes teclas: DefautlSettings.XResolution, DefautlSettings.YResolution, em seguida, reiniciar.

Se nada funcionar, sua placa de vídeo pode ser uma que não suporta resoluções personalizadas, adicionadas via driver, PowerStrip ou no regedit. Isso nos ajudaria a conhecer o modelo do seu cartão.

harrymc
fonte
1
Eu tentei suas sugestões, mas não funciona. :(
user1696157
1
Eu adicionei mais algumas informações. De que maneira o PowerStrip não funcionou para você?
precisa saber é
1
Não funcionou como em "não funcionou".
user1696157
1
Bem ... Na verdade, não ousei testar esses últimos programas suspeitos no computador. Mas não deve haver uma diferença ...
user1696157
1
Se o problema estiver com sua placa de vídeo, isso ainda poderá funcionar com uma placa emulada de outra marca. O PowerStrip ou o regedit hack devem funcionar se as condições forem adequadas.
harrymc