Jak wymusić na grze działanie "w oknie"?

2014-09-03 13:36
błagający
0

Witajcie moi mili.
Mam starą grę przygodową, 2d o nazwie książę i tchórz, ona raczej nie oferuje ani zmiany rozdzielczości, ani opcji grania w oknie (domyślnie jest na full screen i rozdzielczość ma niską) więc chciałbym na grze wymusić by zamiast na full screenie, była w oknie. Czy wiecie jak to zrobić?

Pozostało 580 znaków

2014-09-03 13:39
templas
0

a w czym pisałeś tę grę?

Rotfl! Ta gra przeciez to klasyk jest. - n0name_l 2014-09-03 13:41
lol czytaj uważniej posty - Sarrus 2014-09-03 13:44

Pozostało 580 znaków

2014-09-03 13:42
błagający
0

to nie moja gra, to popularna dawniej (1998), stara gra przygodowa Point & Click
http://www.gry-online.pl/S016.asp?ID=658

Pozostało 580 znaków

2014-09-03 14:11
0

@błagający</span></b> - nie robiłem nigdy takich rzeczy bo nie było mi to potrzebne, jednak szukałbym informacji o jakichś emulatorach, w których można by uruchomić grę stworzoną pod stare systemy; Emulatory z reguły pozwalają na pracę w oknie, więc w tym kierunku bym szedł.


Pozostało 580 znaków

2014-09-03 14:20
błagający
0

aha. Emulatorów nie szukałem, bo ta gra chodzi świetnie pod Windows 8 64 bitowym, kolory są prawidłowe, wszystko git, jedynie chciałem wymusić na grze by była w oknie

Pozostało 580 znaków

2014-09-03 14:21
0

Jeśli to gra DOS-owa, to spróbuj ją uruchomić pod DOS-Boxem. Pozwala na grę w oknie i na pełnym ekranie, i na zmianę rozdzielczości (ale to będzie tylko skalowanie, rozdzielczość grafiki w grze się nie zmieni).

Jeśli gra jest pod Windows, to będzie trochę większy problem. Jeszcze chyba nie ma emulatora Windows pod Windows, a do każdej starej gry podchodzi się indywidualnie, stosując różnorakie hacki.

Rozdzielczości na pewno nie zmienisz jeśli gra tego nie umożliwia. Ale w ustawieniach karty graficznej powinieneś znaleźć opcję skalowania obrazu tak, by nie rozciągało całego obrazu na panoramę (absurd! powinni tego zabronić!) tylko zachować standardowe proporcje 4:3.

EDIT: jeśli działa pod 64-bitowym systemem, to nie jest to gra pod DOS-a.

EDIT2: na wszelki wypadek, sprawdź czy lewy alt+enter nie przełącza gry w okno ;-)

edytowany 3x, ostatnio: Azarien, 2014-09-03 14:24
Miałem na myśli jakiś emulator, pozwalający na uruchamianie starych gier, które nie działają na nowych systemach; Np. stara gra Re-Volt nie zadziała na Win7, tyle że do tej gry ktoś zrobił poprawkę; Ale nie siedzę w temacie - to była tylko sugestia; - furious programming 2014-09-03 14:41
Według winehq da się skompilować wine na windowsa odpowiednio dużym nakładem sił: http://wiki.winehq.org/WineOnWindows - kq 2014-09-03 14:41
@kq: w dziale "work to be done" ciekawie brzmi pozycja Get the DirectX 10/11 implementation working well enough to be usable as a lib on Windows XP - Azarien 2014-09-03 16:07

Pozostało 580 znaków

2014-09-03 14:35
0

Nie wiem czy gra jest warta świeczki, ale zawsze możesz zainstalować Windows w VirtualBox i odpalić grę w nim.

"Jakieś" rozwiązanie to jest; - furious programming 2014-09-03 14:39

Pozostało 580 znaków

2014-09-03 14:44
błagający
0

Alt + Enter nie robi nic, znam ten skrót.
Sposób z VirtualBoxem znam, jednak nie chce mi się dla jednej gry instalować go i systemu :).

(Podsumowanie - gra sama z siebie działa świetnie na win8 64bit, obraz 4:3, kolory super, wszystko super, grywalna na full screenie normalnie. A to wymuszenie na grze by była "w oknie" to taka moja zachcianka z 2 powodów, jeden to cele edukacyjne, drugi to wygoda, okno z grą, obok okno jakiegoś programu do komunikacji lub jeszcze kilka innych spraw. Także jeśli nie da się na grze wymusić gry w oknie to nie umrę od tego) :)

Pozostało 580 znaków

2014-09-03 17:10
0

Tutaj @Azarien mógłby Tobie pomóc. Bo lepiej zna C++ na pewno ode mnie. Gdyż ja praktycznie wcale nie znam tego języka. Trzeba by było przeanalizować kod źródłowy dllki do spoofowania C&C RedAlert. Którą pozwala na granie w tę grę pod nowszymi systemami i ma parę konfiguracyjnych bajerów. I zobaczyć jak tam jest robiona obsługa pokazywania gry w oknie pod żądaną rozdzielczością.

Ale raczej z tego co widzę. Nie obejdzie się bez zmuszania obiektów od DirectX do zmiany ustawień stworzonego oryginalnie okna dla danej gry i jakiegoś rendera. Dlatego póki co pozostaje granie pod Virtualną maszyną i najlepiej na Windows 98. Żeby nie było problemów z paletą kolorów przy aktywnym explorer.exe.

A może i na to źle patrze w source. Jakby co macie je dołaczone. Może coś uda się Wam podpatrzeć i zrobić dllkę do spoofowania w Delphi. Żeby nie trzeba było rzeźbic dllki od zera macie także mój color fix. Bardzo lamerski, bo zatrzymuje proces Explorera. Jednak już jest jakaś baza exportów by móc podpiąc swój kod w ddraw.dll pod stare gry.


edytowany 2x, ostatnio: olesio, 2014-09-03 17:14

Pozostało 580 znaków

2014-09-03 17:43
1

Istnieje nieoficjalny dodatek do Fallouta 2 o nazwie sfall. Oprócz bycia wrapperem DirectDraw do Direct3D, modyfikuje różne aspekty gry, więc jako uniwersalny wrapper się nie nadaje - ale są źródła, więc powinno się dać wyciąć wszystko specyficzne dla F2.
Według readme jest możliwość gry w oknie.

(nigdy tego nie używałem)

Sfall (m. in.) został użyty przez Killapa do stworzenia moda Restoration Project. Więc w jakiś sposób pewnie jest użyteczny ;p. - Lucas Darkstorm 2014-09-03 18:39

Pozostało 580 znaków

2014-09-03 18:55
Rev
2

Robiłem jakiś czas temu m.in. wymuszenie działania w oknie dla pewnej gry. Używała DirectDraw.
Najpierw robimy jakiś DLL injecting i przechwytujemy CreateWindow oraz DirectDrawCreate. W tej pierwszej funkcji ustawiamy sobie style okna takie jak chcemy oraz ew. wołamy AdjustWindowRect i zachowujemy HWND. W tej drugiej funkcji, wołamy naszą oryginalną już na początku, ale lekko modyfikujemy otrzymane nam IDirectDraw, a dokładnie jego vtable. Pod indeksem 21 znajduje się tam wskaźnik do metody SetDisplayMode, którą nasza gra wołała przy uruchomieniu oraz przy żądaniu zmiany rozdzielczości w opcjach gry. Przechwytujemy tę funkcję i wołamy tam sobie AdjustWindowRect i SetWindowPos na naszym zachowanym HWND.
O tym, że gra wywołuje takie, a nie inne funkcje dowiedziałem się robiąc disassembling głównego exe-ka gry, a o 21. indeksie buszując w nagłówkach SDK DirectX.

Najciekawsze, czyli przechwycenie SetDisplayMode może wyglądać tak:

HRESULT WINAPI MyDirectDrawCreate(GUID *lpGUID, LPDIRECTDRAW *lplpDD, IUnknown *pUnkOuter)
{
    HRESULT result = DirectDrawCreate(lpGUID, lplpDD, pUnkOuter);

    IDirectDraw *directDraw = *lplpDD;

    void** vtable = *(void***) directDraw;
    vtable[21] = &SetDisplayMode;

    return result;
}

(w sumie to powinno się najpierw przeanalizować ten result)


edytowany 1x, ostatnio: Rev, 2014-09-03 18:59

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0