[App] EmiGens emulator.

Andre o Botelho

New member
Apr 29, 2013
201
0
0
Visit site
I've cutted a lot of features to get it fast on Store, but will update it to add then back, please if have something you want to add post here that I'll reply but note that this is only the first version. I need to congratulate the MS team for the really fast( 2 days ) app testing.
Sorry about the paid version only, I'll post a free as soon as possible( I've waiting one month delay by MS team).
Please give feedback. Thanks.
 
Last edited:

Roman Ekaterininsky

New member
Jul 16, 2013
196
0
0
Visit site
Why no "demo" version? And when will EmiPSX come? I`ll buy it if it`ll costs the same.

P.S. Great work anyway, some games for PSone that I played was also on Sega. Also, thank you for making it available into Russian Federation. Some great apps sometimes getting delayed here.

Sorry for my English
 
Last edited:

Andre o Botelho

New member
Apr 29, 2013
201
0
0
Visit site
Don't worry, I've finished this to be my first emulator on WP and use its source as base of others, i'm finishing EmiPSX beta, please send me your live account tied to your device to get the link to download it when ready.
 

EdSherriff

New member
Mar 21, 2013
49
0
0
Visit site
Hi Andre

Thanks for your hard work porting the emulator but I'm afraid I'm having a problem with the app on my HTC 8X. I've tried both Sonic, Ghouls 'N Ghosts and Dune II but found the controls aren't working in game! I've tried portrait, landscape, three button and six button mode, the games definitely aren't recognizing the start button since they just run on to their attract mode demos. The game display is also overflowing the screen in landscape such that the bottom of the D-pad down arrow is not visible, the whole thing seems to be cut off by about half a VDP cell (judging from half the last line of in-game text being cut off). Something to do with the 1280x720 resolution of the 8X perhaps?

Also the skydrive integration is buggy, if an unsupported file extension is in the same folder as the ROMs the app won't open the folder to show its contents. E.g. My Dune 2 ROM was a .md, I had to rename it to .smd to get the folder to open, the game worked fine as an .smd (except for the controls!).

Apart from that the games are running smoothly with no frame rate issues. But the controls issue is obviously quite serious particularly since there is no demo version available for people to check it on their handset first.
 

Andre o Botelho

New member
Apr 29, 2013
201
0
0
Visit site
Thanks the reply, now that you've mentioned I can see, the multires support is causing the issue(I do not own a hires device so didn't notice) have to include support to multires controls, I'll fix it today and see if the update is disponible friday to you, sorry the bug. Posted a trial version without support to Save States today, I'll include the control fix on it.
 
Last edited:

EdSherriff

New member
Mar 21, 2013
49
0
0
Visit site
Control problems aside I have a few more thoughts on issues and features I'd like to see (most important first);

Allowing ROMs to be deleted from the app is pretty important, as would being certain the ROMs were deleted (not orphaned into other storage) when the app uninstalls.
Skydrive integration: App should remember credentials so I don't have to log in each time (this is possible because Snes8x does it), folders containing unsupported file extensions won't open.
A virtual joystick is easier for touch screens than a d-pad (for me at least), if the joystick control follows your finger then it is less obtrusive than d-pad buttons which always obscure parts of the game screen.
I haven't tried it yet but I can see importing Sega CD images onto phones with no SD card is going to be a real pain. Maybe there's a way to get them onto the phone using USB?
Options for small, medium and large buttons would be good (x, y and z are really small).


Some minor aesthetic gripes:
The internal storage display is pretty obtuse. Is there any need for the system folders to be displayed?
The live tile icon is really rough.
The folder icons look like something from Amiga workbench or Mac System 6. Are icons really necessary for the file/folder navigation?
The grey background to the controls seen in "stretch" mode, portrait orientation is a bit ugly, black would be better and provide some additional contrast for buttons.
On my phone (8X), the menu's background image doesn't reach all the way to the bottom of the screen so the edge of the image bisects the charm bar when it's closed, this makes the charms bar look a bit weird.
The text in your help screen is a bit rambling, maybe you could put the contact email address in the "About" section?


On a separate issue, how about a Windows Store version in the future? I think there's a gap in the market for emulators with on-screen controls for W8 and RT (SNES8X and VBA8 seem to be consistently popular in the W8 store). This could be a fallback for EmiPSX if you can't get the performance out of WP handsets, an x86 tablet will be able to handle it. You could even release them as x86 desktop apps for W8 users, you'd have no problem enabling dynarec then either.
 

Andre o Botelho

New member
Apr 29, 2013
201
0
0
Visit site
Control problems aside I have a few more thoughts on issues and features I'd like to see (most important first);

1 - Allowing ROMs to be deleted from the app is pretty important, as would being certain the ROMs were deleted (not orphaned into other storage) when the app uninstalls.
2- Skydrive integration: App should remember credentials so I don't have to log in each time (this is possible because Snes8x does it), folders containing unsupported file extensions won't open.
3- A virtual joystick is easier for touch screens than a d-pad (for me at least), if the joystick control follows your finger then it is less obtrusive than d-pad buttons which always obscure parts of the game screen.
4-I haven't tried it yet but I can see importing Sega CD images onto phones with no SD card is going to be a real pain. Maybe there's a way to get them onto the phone using USB?
5- Options for small, medium and large buttons would be good (x, y and z are really small).


Some minor aesthetic gripes:
6 -The internal storage display is pretty obtuse. Is there any need for the system folders to be displayed?
7- The live tile icon is really rough.
8- The folder icons look like something from Amiga workbench or Mac System 6. Are icons really necessary for the file/folder navigation?
9- The grey background to the controls seen in "stretch" mode, portrait orientation is a bit ugly, black would be better and provide some additional contrast for buttons.
10- On my phone (8X), the menu's background image doesn't reach all the way to the bottom of the screen so the edge of the image bisects the charm bar when it's closed, this makes the charms bar look a bit weird.
11- The text in your help screen is a bit rambling, maybe you could put the contact email address in the "About" section?


On a separate issue, how about a Windows Store version in the future? I think there's a gap in the market for emulators with on-screen controls for W8 and RT (SNES8X and VBA8 seem to be consistently popular in the W8 store). This could be a fallback for EmiPSX if you can't get the performance out of WP handsets, an x86 tablet will be able to handle it. You could even release them as x86 desktop apps for W8 users, you'd have no problem enabling dynarec then either.

Hi, thanks the (huge) feedback!:smile:
I've numbered the quote to answer:

1 - Is listed on TODO already.
2- Maybe the exception raised by the file filtering was causing the credentials not beeing saved, but the code saves it by default, you've authorized on live login screen. Bug fixed(I hope) version already uploaded to MS.
3- I can change the layout but the DPAD already folows your finger(like a full force joystick).
4- I'm implement inporting from SD on EmiPSX, once finished I'll move the code to EmiGens - Remember not every device has a SD card, only the low end.
5- Like I've said "I've cutted a lot of features to get it fast on Store", is on the TODO.
6 - I've made a full featured file browser but you are right, there's no need for folders, I don't think .
7 - the icons are simple, I had no time to draw and I'm not a designer, I was thinking on ask a designer my friend to draw but I'll have to pay him.
8 - WP just text way is not my favorite, I feel like on MS-DOS times. The idea is to put autosave images on the game Icons, the folder icon is the provided from MS SDK, just resized it.
9 - Maybe Skins for the virtual control, but just on the future.
10- post a screenshot, this may happen because the 720p resolution.
11- I can put the e-mail but the problem is that the emulator on 720p res on my Notebook runs at 1~3FPS so it is horrible to use it, I cant see what you see(the splash image get some black pixels on the top?).

On Windows Store app for tablets I think you cant use dynarec too, but the powerful cpu can run the emulator faster.
 

EdSherriff

New member
Mar 21, 2013
49
0
0
Visit site
Regarding point 4. I think you're confused about what I'm asking. My point was that for devices without SD card slots the only way of getting ROMs onto the phone is through an internet connection. I've found on other WP8 emulators (VBA8 in particular) that large ROMs (32MB) are very difficult to import from skydrive, the connection often seems to drop out even with perfect wifi reception. I would expect this to be much worse when trying to transfer something as large as a CD image to a phone. Hence why I asked if it would be possible to load it onto the phone from a PC using USB.

Point 11:
wp_ss_20130719_0001.jpg
As you can see it's very minor issue. It's just that when I first saw it I thought there was something wrong with my screen.

Regarding a Windows store app, I agree dynarec probably isn't possible for store apps either but there's plenty of decent x86 tablets out there and only a couple of emulators support proper on-screen controls, so it may be worth doing an x86 port. If dynarec is required to get performance you could always release it as a traditional windows desktop application (but maintaining multi-touch on screen controls), but going down that route obviously reduces your monetisation opportunities.
 

Andre o Botelho

New member
Apr 29, 2013
201
0
0
Visit site
Regarding point 4. I think you're confused about what I'm asking. My point was that for devices without SD card slots the only way of getting ROMs onto the phone is through an internet connection. I've found on other WP8 emulators (VBA8 in particular) that large ROMs (32MB) are very difficult to import from skydrive, the connection often seems to drop out even with perfect wifi reception. I would expect this to be much worse when trying to transfer something as large as a CD image to a phone. Hence why I asked if it would be possible to load it onto the phone from a PC using USB.

Point 11:
View attachment 37665
As you can see it's very minor issue. It's just that when I first saw it I thought there was something wrong with my screen.

Regarding a Windows store app, I agree dynarec probably isn't possible for store apps either but there's plenty of decent x86 tablets out there and only a couple of emulators support proper on-screen controls, so it may be worth doing an x86 port. If dynarec is required to get performance you could always release it as a traditional windows desktop application (but maintaining multi-touch on screen controls), but going down that route obviously reduces your monetisation opportunities.

Unfortunately, the first think I thought while porting EmiPSX was "How can I get these HUGE CD images onto the phone?" and did not find a answer. Currently, I'm importing(copying) from the sd card on my L620. WP8 does not have a user filesystem so there's no way to import using usb cable, the only avaliable options are: download from a website(.bin format), download from skydrive and my solution, import from SD card. If you can't download from skydrive or internet and don't have SD card support, I don see a way to play these games.
the image you see is cutted by the OS(or the sdk) because the aspect ratio is different(look at the top, the same is happening), I think the only way would be write a different UI for 720p devices(not a solution someone would do). Sorry but MS doesn't give good support to 720p devices too...
UPDATE: I cant try like this guy did http://www.komodosoft.net/ShareFolder.aspx
 
Last edited:

EdSherriff

New member
Mar 21, 2013
49
0
0
Visit site
Unfortunately, the first think I thought while porting EmiPSX was "How can I get these HUGE CD images onto the phone?" and did not find a answer. Currently, I'm importing(copying) from the sd card on my L620. WP8 does not have a user filesystem so there's no way to import using usb cable, the only avaliable options are: download from a website(.bin format), download from skydrive and my solution, import from SD card. If you can't download from skydrive or internet and don't have SD card support, I don see a way to play these games.

I thought that might be the case but I was wondering if there was some kind of hack that would allow you to load the ROM onto the phone using USB as if it were some kind of video file, then get the phone to load it using your app? Some apps for instance can get access to the phone's media files. If necessary you could possibly do some simple modification of the ROM to disguise it as a media file to WP8 by running it through a PC utility that puts the ROM image into a media container accepted by WP8?

Otherwise you could end up with the highly undesirable situation of EmiPSX not being fast enough on low end phones, but not being practical on high end phones which can't get the ROM onto the handset since they lack SD slots.

EDIT
I've also just been thinking about ways to improve your EmiPSX interpreter without actually executing data although you might already have tried it. If you use what's commonly called a "threaded interpreter" (not threaded as in multiple threaded execution), you use a conventional interpreter but also maintain a very large collection of function pointers in memory that can be indexed using the emulated program counter. If a given instruction is in the function pointer cache you can skip the decode stage for some instructions by loading the address of the final interpreted instruction in a function pointer. If a matching function pointer can't be found then the full interpreter decode is run before adding the final decode function's address to the function pointer table.

This way you are not having to actually execute data or make a block of memory executable, you merely use it as a pointer to existing functions in your interpreter which can provide a short cut to bypass the usual lengthy decode. Combine this with an intelligent profiler as used by most dynarecs and you can avoid decoding the most commonly used instructions. Does that make sense?
 
Last edited:

EdSherriff

New member
Mar 21, 2013
49
0
0
Visit site
It keeps crashing while trying to load anything from Skydrive on my phone.

Please try to be a little more descriptive when reporting bugs, one sentence isn't very useful. Where exactly is it crashing (when you log in to skydrive? when you try to open a skydrive folder? when you try to download the ROM? Etc, etc). Also try to provide some information about what ROM you are trying to load and what its' file extension is. What model phone are you using?!

Andre,
A few more thoughts about threaded interpreters if I may; there are a couple of ways to go about making one. The first way is to convert a dynarec core to a threaded interpreter by changing the code that reads and writes to the dynarec's instruction cache. Rather than storing blocks of executable code in the instruction cache you store arrays of function pointers. When loading from the instruction cache the dynarec would be changed to iterate over the function pointer array, calling each interpreter instruction function rather than executing a code block.

The second way is to convert a basic interpreter to a threaded one. Since most consoles only actually execute code from a small area of addressable memory (e.g. a PS1 has 2MB RAM and 4kB instruction cache, a megadrive 64kB work RAM, 4MB cartridge), you can just maintain arrays of function pointers equal in size to each of these respective areas. Before attempting to run the interpreter the emulator would use the emulated program counter to check the function pointer arrays, if the pointer isn't null the emulator calls the pointer rather than run the emulator. Otherwise the emulator runs the interpreter then adds the address of the decoded instruction to the function pointer array. This hybrid technique will still present some overhead compared to dynamic binary translation but I can't see a reason why it wouldn't work in a WP8 app since no data is ever executed.
 

jhoff80

New member
Apr 27, 2003
1,415
0
0
Visit site
Please try to be a little more descriptive when reporting bugs, one sentence isn't very useful. Where exactly is it crashing (when you log in to skydrive? when you try to open a skydrive folder? when you try to download the ROM? Etc, etc). Also try to provide some information about what ROM you are trying to load and what its' file extension is. What model phone are you using?!

Logs into Skydrive, where I can select yes, that I want to give permission to access Skydrive, attempts to show a folder list, and then crashes, so there isn't ever any ROM being loaded. It's a Lumia 920, but since it never loads a game in the first place that doesn't seem too relevant.

[ExceptionMessage]:[Specified cast is not valid.]
[StackTrace]:[
at PhoneDirect3DXamlAppInterop.MainPage.<GetSkydriveList>d__48.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at PhoneDirect3DXamlAppInterop.MainPage.<btnSignin_SessionChanged>d__41.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__0(Object state)]
[OccurrenceDate]:[Sat, 20 Jul 2013 15:17:44 GMT]
[AppInstallDate]:[Thu, 18 Jul 2013 21:59:09 GMT]
[AppTotalRuns]:[3]
[AppRunsAfterLastUpdate]:[3]
[AppPreviousRunDate]:[Thu, 18 Jul 2013 22:00:40 GMT]
[AppVersion]:[1.0]
[Culture]:[en-US]
[CurrentPageSource]:[/MainPage.xaml]
[NavigationStack]:[]
[DeviceManufacturer]:[NOKIA]
[DeviceModel]:[RM-820_nam_att_100]
[DeviceHardwareVersion]:[1.0.0.0]
[DeviceFirmwareVersion]:[1232.5962.1314.0001]
[OSVersion]:[Microsoft Windows NT 8.0.10211.0]
[CLRVersion]:[4.0.50829.0]
[DeviceType]:[Device]
[NetworkType]:[Wireless80211]
[DeviceTotalMemory(Mb)]:[898.3867]
[AppPeakMemoryUsage(Mb)]:[88.85938]
[AppCurrentMemoryUsage(Mb)]:[54.72656]
[IsoStorageAvailableSpace(Mb)]:[2557]
 

Andre o Botelho

New member
Apr 29, 2013
201
0
0
Visit site
Version 1.02 is published on WP store. Fixed touch controls for Hires Devices and invalid index exception for Skydrive.

@ EdSherriff
I've already worked on a threaded emulator like the second way youve told but have to work on the loop handling, the little time I have make things hard.

@jhoff80
If you can provide your skydrive login and account by PM I can fix the issue and teach a workaround while the fix is not published on WP store. sorry but I couldnt find out what is causing the Invalid cast exception and still having a lot of bug reports about this bug.

NOTE: Please note that there are several ways to load a ROM. For Skydrive you can still download on the IE(or SkyDrive app) and open with emigens if cant use skydrive integration.
 
Last edited:

Andre o Botelho

New member
Apr 29, 2013
201
0
0
Visit site
That was what I thought but didn't hurt to ask ^^.
The only thing I can make without reproducing the bug is catch the exception but this may hide something on your skydrive account. Like said before you can still download on the IE(or SkyDrive app) and open with emigens.
 

Members online

No members online now.

Forum statistics

Threads
323,183
Messages
2,243,404
Members
428,036
Latest member
Tallgeeselll05