VOGONS

Common searches


First post, by ErikGG

User metadata
Rank Member
Rank
Member

A few days back I stumbled across an old post if DOSBox was able to play MP3 or OGG files in stead of CD-Audio. I think it was a post from DOSFreak.

Well this got me very interrested and I think I found a way around DOSBox's inability to do this. The thing I'm now trying to do is hook into the SDL DLL and watch for an Audio CD from being accessed. Then if the required options are selected in D.O.G. the SDL DLL will redirect the call intended for internal use to my frontend and D.O.G. will then play the Music file for DOSBox.

This is still in theory, but I know it is possible to do. Will let you know.

Been a while I reported on D.O.G.'s progress, so here I go.

In recent times D.O.G. went from a simple generator/database application to a nice feature packed frontend. It is now able to let users use zip/7-zip files and start exe's from within, without having a zip patch compiled into DOSBox. D.O.G. also supports ISO file browsing, so that a user can setup an installation program without ever to have to look at his mounted drives.
Besides these features, D.O.G. also supports Wav to MP3 and PNG to JPG capture conversion, without the users intervention. The user can also adjust the compression ratio's by changing D.O.G.'s options.
For the first time a frontend that supports real DOSBox short names.

The next things I'm planning to add to D.O.G. are :
- A D.O.G. Files Database, containing ready to use walkthroughs, cheats and possibly patches. (Already added, still mailing people to ask for permission to add their file to the database and this is a slow process. Already have all Quest for Glory games in DOS 1 -> 5)
- A Joy To Key feature built into D.O.G. Tested a simple one, just need to figure out how to simplefy the changing of the keys. Thinking of doing it the way M$ SideWinder GamePad did.
- An audio-cd simulator, see above. Thinking of making it profile specific.
- Ability to let a user mount a zip/7-zip file as a drive without the zip patch added to DOSBox.
- Improving the zip/7-zip experiance by allowing zip/7-zip files to be run from a CD-ROM or Drive that hasn't enough space anymore.

I'm calling it the next generation of frontends for DOSBox. Increasing the joy of playing old DOS games with the least of effort by the user.

EDIT-
Well I think I've topped myself, I now am able to write upon DOSBox whatever I want. So now I'm able to let people know in game what FPS they are getting if SDL_Flip is related to the number of frames drawn. Still need to investigate what happens when frameskip is employed, but I hope it doesn't mean SDL_Flip gets called.

EDIT AGAIN-
Just realized that SDL_Flip ain't related to the games internal "Flip". Am going to search for an alternate way to get the games FPS.

Erik.

Reply 1 of 12, by UK_John

User metadata
Rank Newbie
Rank
Newbie

This is a brilliant DOSBox front end. Better than D-Fend as far as I am concerned! Well done for taking your time to do this for us retro gamers!!! You are a star!

Reply 2 of 12, by ErikGG

User metadata
Rank Member
Rank
Member

Thanks man, I do my best.

D.O.G. is as stated on the DOSBox wikki a work in progress.And one that, as my ideas go, is neverending. 😎 😁 🙄

Anyways thanks,

Recent activities :
Getting this freak bug gone : The disapearing profiles in 1.53d and on.
Toolbar that is fully customisable
Full DOSBox long to shortname conversion.
...
And well, I can go on and on here but this forum is for DOSBox, so I'll stop.

Thanks to keep my spirit up,

Erik.

Read the new FAQ.doc

Reply 4 of 12, by UK_John

User metadata
Rank Newbie
Rank
Newbie

As this is a thread about D.O.G within the DOSBox forum, I think you have every right to post as many messages as you want Eric! 😀 Keep up the good work!

Reply 5 of 12, by ErikGG

User metadata
Rank Member
Rank
Member

Hi gulikoza,

The SDL_Flip is related to the number of frames drawn by DOSBox, not by the game. When I ran my SDLSpy on the official 0.65 running the house of the dead, then I always got 70 frames back. Wich in fact was not even close to the 1 frame a sec of the game.
I concluded that DOSBox just draws standard 70 frames a sec no matter what the game does (forgetting the frameskip), even if nothing changed. Correct me if I'm wrong here.
I don't know what the current CVS does, but I think it is due to the improved scalers.
The catch is that I need to get hold of a way to acces the internal flip command of the emulated VGA card.
When running into this problem I came up with two idea's. Maybe they already exist, don't know.

1.
Making a DOSBox patch that lets frontends read out values in DOXBox by using shared memorymapped files. But the problem with this is, I have no idea if Linux or a Mac allows such a thing, as I'm a Windows programmer.

2.
Making a DOSBox patch that allows for an auto frameskip. The current situation is that by setting cycles to auto, DOSBox decides what number of cycles need to be emulated but it keeps pumping out 70 frames a second while nothing changed in the picture. The thing that this patch could do is blocking an SDL_Flip and all mechanisms involved when no emulated VGA flip is done. Don't know what this does to the picture when doing this but if it works then I can read out the frames drawn by the game itself, and as a surplus DOSBox gets faster.

And I would love to do it myself, I've compiled DOSBox already a few times with gcc and it worked. But the thing I still need to know if I'm to build a patch, what do you need for it to be a valid patch, what files?

Erik.

Read the new FAQ.doc

Reply 6 of 12, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

The fps you're talking about is the screen refresh rate (70hz in
the case of your game).

> The catch is that I need to get hold of a way to acces the internal flip
> command of the emulated VGA card.

That's exactly the screen refresh rate. But, as you already noticed,
this is not correlated to what the game actually puts onto the screen.

Reply 7 of 12, by gulikoza

User metadata
Rank Oldbie
Rank
Oldbie

As I've said...no. 2 is in my build, see the source on my page, it's a simple change. Scalers already track what has changed, it's just the matter of skipping the unecessary flip...

http://www.si-gamer.net/gulikoza

Reply 8 of 12, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

what the game puts on the screen isn;t that easy to detect. (without slowing dosbox down) you might want to play with the renderer code and see on each loop if there are modified blocks. If there are increase the amount of drawn pages. but it's always an estimate and probably not very accurate.

Water flows down the stream
How to ask questions the smart way!

Reply 9 of 12, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

> Scalers already track what has changed, it's just the matter of skipping the unecessary flip...

That'd only give useful results if they're copying the screen at once.
How would you measure the fps of a game that has a static background
but uses a lot of sprites (which are not all drawn at once)?

Reply 10 of 12, by gulikoza

User metadata
Rank Oldbie
Rank
Oldbie

Of course you can only get an estimate...a dos game might not even be doublebuffered and thus the concept of frames is rather vague 😀

ErikGG, see how my builds report FPS in the titlebar...this also speeds up opengl (an openglhq) a lot, since the updates are expensive.

http://www.si-gamer.net/gulikoza

Reply 11 of 12, by ErikGG

User metadata
Rank Member
Rank
Member

Sorry gulikoza, got confused with "the number of frames drawn". Will check out the build.

The check for changes was one of the things I tried and as wd said, a static picture would return 0 frames rendered. Wich would freak out a noob and would think DOSBox isn't working anymore and it would slowdown DOSBox as QBix said.

So detecting the FPS of a DOS game is a bit more complex and game specific then I thought.
I could also copy the 'screen drawn' to D.O.G. from my SDLSPY and check it there. The advantage is that D.O.G. is on another core then DOSBox and therefore wouldn't slowdown DOSBox a lot. But this is only when running on a dual core.
Just checking a little block is a possibility but isn't accurate. I'll look for another way to detect a frame drawn.

Erik.

Read the new FAQ.doc