Autor Beitrag
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Fr 20.08.10 21:37 
Ich muss ein Spiel im Fenstermodus ausführen lassen. Nativ geht es nicht (nix gefunden)
Darum meine Idee, mal den Aufruf auf die DirectX Funktion zu ändern
Irgendwo muss er ja sagen Fenstermodus-JA/NEIN, oder?
Nach welcher Funktion muss ich suchen? Das Spiel selbst sagt mir "Direct 3D HAL"
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Sa 21.08.10 01:33 
Nö, geht nicht.

DirectX ist da etwas anders als OpenGL, welches keinen speziellen Vollbildmodus hat, sondern auch da ein Fenster erzeugt welches dann einfach nur maximiert wird.
DirectDraw ist da etwas rabiater und plättet u.a. den Desktop weg. Das liegt daran, dass sich DirectDraw normalerweise nicht mit GDI verträgt.

Müsstest das CreateWindow ändern und die Inititalisierung. Ein Codebeispiel gibts hier:
www.gamedev.net/refe...icles/article608.asp
Abschnit "2. Initializing DirectDraw" hat etwas Kot, mit recht umfangreichen Kommentaren.
Viel Spaß, am Ende wirds wohl eh nicht laufen ;)

Unter "A Few Details" steht dann auch was dazu, wie man das richtig programmiert. Sowas müsstest du dann reinpatchen. Es bietet sich hier wohl an, den passenden Code in eine DLL zu schreiben und diese in den Spieleprozess zu injecten...

Um welches gehts denn? EA hat z.B. in fast jedem Spiel eine Kommandozeilenoption, scheint bei denen Publish-Bedingung zu sein und heißt fast immer -windowed.

Eigentlich ist DirectDraw ein ganz schöner Müll. Dass OpenGL sooo viel einfacher ist, wusste ich ja gar nicht.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 21.08.10 09:29 
Für den Fenster-Modus muss man bestimmte BackBuffer-Formate nutzen oder anders herum, du darfst nicht A2R10G10B10 nutzen, denn das ist Fullscreen only. Ansonsten halt das standard Format X8R8G8B8...
Flamefire Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Sa 21.08.10 12:16 
In dem Fall geht es um thandor.
Ich will es debuggen (am besten mit ollydbg) um verschiedene Strukturen herauszufinden.
Nur klappen Breakpoints im Fullscreenmodus nicht.
Darum die ganzen Umstände.
Gibt leider keinen Schalter.
Intressant ist nur, dass er den CooperativeLevel erst auf Normal und dann auf FullScreen setzt. War aber auch nix zu machen.

Kann ich nicht irgendwie anders debuggen? In ner VM vl?
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 21.08.10 13:48 
Was willst du denn genau machen? DirectX debuggen? Dazu startest du einfach das "DirectX Control Panel" und schaltest DirectX in den Debug-Mode.
Flamefire Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Sa 21.08.10 15:41 
Das Programm beinhaltet Dateien, die ich entpacken will.
Die Entpackroutinen findet man gut in der exe, nur sind die einfach nachzuvollziehn und zu kontrollieren, wenn das Programm läuft.
Das heißt in meinem Fall:
BP auf entpackroutine, starten, BP wird getriggert. Weiter gehts mit debuggen im Einzelschritt.

So weit die theorie. Die Praxis sieht so aus, dass der BP getriggert wird, das Programm stoppt, aber weils ja Vollbild ist, kann ich den Debugger nicht sehen.