Exodus 2.0 + Open Source Release

Official support forum for the Exodus Emulation Platform

Moderator: Nemesis

Dr. MefistO
Interested
Posts: 47
Joined: Wed Jan 08, 2014 3:39 pm

Post by Dr. MefistO » Sun May 03, 2015 8:42 pm

I cannot compile Exodus with my VS2015 Community RC.
First error was with Third Libraries: "Macro definition of snprintf conflicts with Standard Library function declaration"
Then, after commenting one line, I did it. But...

I can't compile Exodus:
1) std has no member inserter;
2) too many errors "cannot open include file 'afxres.h'";
3) Failed to specialize function template 'unknown-type std::invoke(_Callable &&,_Types &&...)' (compiling source file System.cpp);
4) Failed to specialize function template 'unknown-type std::invoke(_Callable &&,_Types &&...)' (compiling source file ExodusInterface.cpp);

Help me with compiling it.

Nemesis
Very interested
Posts: 791
Joined: Wed Nov 07, 2007 1:09 am
Location: Sydney, Australia

Post by Nemesis » Sun May 03, 2015 8:59 pm

VS2013 is the target development environment, and still the latest official release version published by Microsoft. If you want to attempt to use another environment, especially a pre-release version, you're on your own. When VS2015 is officially released, I'll upgrade Exodus to target it, and I'll address any compilation issues that may be present at that time. Until then, if you're unable to resolve these issues yourself, I suggest you use the supported toolset, which is Visual Studio 2013 Community Edition https://www.visualstudio.com/products/v ... mmunity-vs

Dr. MefistO
Interested
Posts: 47
Joined: Wed Jan 08, 2014 3:39 pm

Post by Dr. MefistO » Sun May 03, 2015 10:04 pm

Nemesis, ok. But in VS2013 Community, error with afxres.h still happens.

Nemesis
Very interested
Posts: 791
Joined: Wed Nov 07, 2007 1:09 am
Location: Sydney, Australia

Post by Nemesis » Mon May 04, 2015 12:39 am

Thanks for letting me know. I didn't try a clean install on a new machine before writing these instructions, so it's possible there's a missing step I need to add somewhere.

All that said, I know this "afxres.h" error would have occurred if you had Visual Studio 2013 Express installed, which didn't include any MFC headers, but my understanding is that Visual Studio 2013 Community does include MFC headers, meaning this error should not have occurred if you installed Visual Studio 2013 Community Edition, to the best of my knowledge. I didn't try running the installer myself, because I didn't have a good test machine on hand, and I would have had to uninstall Visual Studio 2013 Professional from my machine in order to test.

I'd stress again to confirm you have the 2013 Community edition installed, not the 2013 Express edition. The community edition was only released in November last year, so it's very new. Express has been around for years, but it's a totally different product. If you absolutely do have VS2013 Community edition installed, I'd check the installation options. You're looking for an option that talks about MFC support. I would have thought it was on by default, but if it's not, I'll need to add it to the instructions.

As an absolute fallback, you actually don't technically need MFC at all in order to compile Exodus, because it doesn't use it. The problem is that the resource files (.rc) generated by Visual Studio include that header by default. You can replace references to afxres.h with winres.h in all your .rc files, and it should then compile properly. I was going to change these header references when the Express edition was the only free one available, but with Community edition I didn't bother, because that header reference is in there by default for all newly created resource files. If there's still a need to change these header references, it's easy to do, but I didn't want to go against the tide here unless I had to.

Nemesis
Very interested
Posts: 791
Joined: Wed Nov 07, 2007 1:09 am
Location: Sydney, Australia

Post by Nemesis » Mon May 04, 2015 2:23 am

Shadow wrote:
Nemesis wrote:Can you give me more information about this? If it's reproducible or fairly consistent, I'd love a savestate just before it appears to hang, or steps to reproduce it.
Quite difficult to repeat, this is very unpredictable. Sometimes I just leave the emulator to work in the background and it suddenly happens, in log also nothing is displayed. :(
If you can give me one or two scenarios where this happened, IE, what game was loaded and what state it was in (in a particular level, running demos at the title screen, etc), I'll see if I can make the same thing happen. If I can get it to lock up on my machine too, I can figure out what's caused the deadlock. If I can leave something running in the background for an hour or two until it locks up, I can work with that.

Dr. MefistO
Interested
Posts: 47
Joined: Wed Jan 08, 2014 3:39 pm

Post by Dr. MefistO » Mon May 04, 2015 8:05 am

It was my fault: I've removed a MFC checkbox when installing.
But I think, if Exodus doesn't use MFC, then you should replace "afxres.h" referrence with "winres.h".

deargodwhatisthat
Newbie
Posts: 9
Joined: Mon Mar 10, 2014 11:55 am

Post by deargodwhatisthat » Mon May 04, 2015 11:51 am

Uhh ... hmm. Idk how to put this, but I'll try my best to say the error I've come across.

I recently decided to move all emulators and such to a folder on my C drive, so that if a drive went down, I wouldn't have random games drop off location wise.

Anyway, I move over the new Exodus and it fails to start up properly.

.... Alright, what the hell? It works fine now. I'm not sure if I had a program up conflicting with it, but I had it constantly crash before it'd load the final piece.

I'm sure this wall of text was just confusing and helps nothing, but I'll try to simplify it as much as I can: I moved the exodus files through cutting and copying them to a new location on my drive. When I tried to start it there, it would crash. However, everything is perfectly fine now? :/

Nemesis
Very interested
Posts: 791
Joined: Wed Nov 07, 2007 1:09 am
Location: Sydney, Australia

Post by Nemesis » Mon May 04, 2015 1:07 pm

deargodwhatisthat wrote:Uhh ... hmm. Idk how to put this, but I'll try my best to say the error I've come across.

I recently decided to move all emulators and such to a folder on my C drive, so that if a drive went down, I wouldn't have random games drop off location wise.

Anyway, I move over the new Exodus and it fails to start up properly.

.... Alright, what the hell? It works fine now. I'm not sure if I had a program up conflicting with it, but I had it constantly crash before it'd load the final piece.

I'm sure this wall of text was just confusing and helps nothing, but I'll try to simplify it as much as I can: I moved the exodus files through cutting and copying them to a new location on my drive. When I tried to start it there, it would crash. However, everything is perfectly fine now? :/
Did exodus actually crash and display an error dialog, or did it hang? If it crashed, it should have generated a crash report under a "Crash Reports" subdirectory. If you can send any crash report files that have been generated to me, I should be able to figure out what's caused the crash.
Dr. MefistO wrote:It was my fault: I've removed a MFC checkbox when installing.
But I think, if Exodus doesn't use MFC, then you should replace "afxres.h" referrence with "winres.h".
Glad it's working for you now. After some thought, I think you're right. I don't like the dependency on the MFC headers either, and just because it's there by default isn't a good enough reason to keep it there, especially when there are plenty of other defaults that I already change in other areas. I'll commit a change to the repository to remove this dependency.

Dr. MefistO
Interested
Posts: 47
Joined: Wed Jan 08, 2014 3:39 pm

Post by Dr. MefistO » Mon May 04, 2015 2:16 pm

Nemesis, check my pull request. I did it for you)

Shadow
Very interested
Posts: 257
Joined: Wed Sep 16, 2009 7:13 am
Location: Russian Federation

Post by Shadow » Mon May 04, 2015 5:49 pm

Nemesis wrote:If you can give me one or two scenarios where this happened, IE, what game was loaded and what state it was in (in a particular level, running demos at the title screen, etc), I'll see if I can make the same thing happen. If I can get it to lock up on my machine too, I can figure out what's caused the deadlock. If I can leave something running in the background for an hour or two until it locks up, I can work with that.
Run the game Super Skidmarks (E) and watch a demonstration of the gameplay (not pressing any buttons) and wait until it happen. If after 1-2 hours, game still works, in some cases, better to restart emulator and try again.

I recorded the moment when the game freezes. (Today, it took almost 4 hours) http://dropmefiles.com/RDdz2

Nemesis
Very interested
Posts: 791
Joined: Wed Nov 07, 2007 1:09 am
Location: Sydney, Australia

Post by Nemesis » Mon May 04, 2015 8:51 pm

Dr. MefistO wrote:Nemesis, check my pull request. I did it for you)
I really appreciate the effort you're putting in, but you're bundling too many unrelated changes together, and the CodeMaid reformatter tool in particular that you ran is a change I won't be merging, because it's broken a lot of deliberate comment formatting. Since you did that change second, it's going to make the merge process much more difficult.

There's also some process involved here, some of which isn't in place yet. For example, I still need to get the CLA submission page live, which I'd need you to agree to before I can accept a pull request. I also need to review your changes to check for errors or other things to do, and I haven't worked out the process for that on Bitbucket yet. In order to make the change history manageable, I'll also need to create Jira tickets for merges from your fork, and that means I'll need to be able to define your changes under logical job names, and independent jobs should be isolated from each other, either through branches or by completing one job before you're submitting commits for another.

Especially since this is the first time I've ever attempted to merge a fork, so it's an untested process, I'd suggest one thing at a time here. The first issue was the resource file includes. Let me get the CLA live, and let's start with just that change, then we can do a separate merge for the bugs you've identified.

I'd also suggest you don't go too far down the performance track you've started on. There's a lot of code, and you could go on just about forever trying to tune and optimize it all. We only really need to worry about things on the "critical path" here, and for that, I'd insist you're using a profiler (AMD CodeXL is quite good) to guide and verify your changes. There's not too much point tuning code that only runs once in response to a direct user input.

Dr. MefistO
Interested
Posts: 47
Joined: Wed Jan 08, 2014 3:39 pm

Post by Dr. MefistO » Mon May 04, 2015 8:58 pm

Nemesis, I'm using PVS Studio to detect that bugs, that I've commited. You can ask me for it at PM. Then you will see what my every change means.

I know that I've comitted too many items, but what I have to do if it really valuable changes?)

CodeMaid is not so bad, as you think: code is more readable, comments are still there, and so on..) And this is for uniformity of your code and code by others. I don't know how to explain. But to develope code by few people in one style it should be code in one style.=)

I will update my pull request with some new commits, and you can check them as accurately as you want.
Last edited by Dr. MefistO on Mon May 04, 2015 9:23 pm, edited 1 time in total.

MetalliC
Interested
Posts: 30
Joined: Sat Aug 25, 2012 12:45 pm
Location: UA

Post by MetalliC » Mon May 04, 2015 9:21 pm

Nemesis
congrats with release, great work!

does YM in Exodus include all latest findings ? I've heard there was researches/tests about envelopeCycleCounter, and it shows its not such simple, like decrementing starting from 4095, and reload to 4095 at 0, but I dont see this in Exodus code

also I've noticed "Mr.Nutz Hoppin' Mad" won't work, both original and "fixed" versions hang at very start, sometimes after showing Sega logo.

Dr. MefistO
from a bit of experience - don't trust PVS Studio, in the case of optimised and/or tricky code (which is usually used in emulation) it gives a lot of false alarms. I'd say from practice - only 1 of 50 "errors" was errm.. real theoretically possible in some circumstances error.

Dr. MefistO
Interested
Posts: 47
Joined: Wed Jan 08, 2014 3:39 pm

Post by Dr. MefistO » Mon May 04, 2015 9:24 pm

MetalliC, sure. But I'm checking every warning by it anyway.

Shadow
Very interested
Posts: 257
Joined: Wed Sep 16, 2009 7:13 am
Location: Russian Federation

Post by Shadow » Mon May 04, 2015 11:56 pm

This night was very boring, so I decided to check the games.

Bram stoker's dracula: freezes at the beginning of the first level.

Killing game show: Black screen.

Mega-lo-Mania: Black screen.

Speedy Gonzales - Cheeze Cat-astrophe: no sound.

Strider II: no collision with enemies, immortality.

Shadow of the Beast: no collision with enemies.

The Lawnmower Man: flashing vertical stripes on 3d levels.

Post Reply