- 07-16-2013, 11:06 AM #1
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 by Andre o Botelho; 07-16-2013 at 03:35 PM.
- 07-16-2013, 01:13 PM #3
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 by Roman Ekaterininsky; 07-16-2013 at 01:28 PM.
- 07-17-2013, 01:04 PM #6
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.Random number generation is too important to be left to chance.
- 07-17-2013, 01:42 PM #7
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 by Andre o Botelho; 07-17-2013 at 01:45 PM. Reason: added trial note
- 07-18-2013, 01:23 PM #8
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.Random number generation is too important to be left to chance.
- 07-18-2013, 02:59 PM #9
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.
- 07-19-2013, 12:56 PM #11
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.
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.Random number generation is too important to be left to chance.
- 07-19-2013, 02:07 PM #12
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 by Andre o Botelho; 07-19-2013 at 02:30 PM. Reason: added sharedfolder
- 07-19-2013, 03:39 PM #13
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.
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 by EdSherriff; 07-19-2013 at 04:12 PM.Random number generation is too important to be left to chance.
- 07-20-2013, 03:09 AM #16
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.Random number generation is too important to be left to chance.
- 07-20-2013, 10:21 AM #17
[ExceptionMessage]:[Specified cast is not valid.]
--- 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)
--- 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]
[AppPreviousRunDate]:[Thu, 18 Jul 2013 22:00:40 GMT]
[OSVersion]:[Microsoft Windows NT 8.0.10211.0]
- 07-20-2013, 10:48 AM #18
Version 1.02 is published on WP store. Fixed touch controls for Hires Devices and invalid index exception for Skydrive.
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.
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 by Andre o Botelho; 07-20-2013 at 10:59 AM.
- 07-20-2013, 11:16 AM #20
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.
- 07-20-2013, 01:52 PM #21
Ok great update everything works but now the Internal dont work !"D I am using nokia lumia 920 but everything else works great ...now get the internal to work!
When trying to use the internal it now says " Index and length must refer to a location within the string. Parameter name: length"
- 07-20-2013, 02:40 PM #22
Andre, thanks a lot for the update the controls are working fine now. Hoping you get time to add the ability to delete ROMs soon. What's your gut feeling for the threaded interpreter? Do you think it will provide a sufficient performance increase or is it still too early to tell?Random number generation is too important to be left to chance.
- 07-20-2013, 03:54 PM #23
- 07-20-2013, 04:33 PM #24
I believe that a threaded interpreter can reach full speed on some games and make some 3D light games playable, the WP8 hardware is Powerfull enough to this, just not so fast to run simple interpreter( Symbian devices get full speed on some 2D games due to little pipeline on ARM 11 and 1.3GHZ but ARM11 are too weak to run 3D games).
- 07-21-2013, 03:15 PM #25
"Nokia 920" Now the sega cd works and everything i put the bios in but, when i try to download a game from the skydrive it logs out of the emulator and then the phone buzzes ?!?! Do you know why this is happening ?! the game is 455MB download "sonic CD" and i cant download it off the skydrive or any other way :P This only happens for sega cd's games :P
- By paddylaz in forum Windows Phone 8Replies: 4Last Post: 10-31-2013, 06:24 AM
- By GEOLOG in forum Developer SpotlightReplies: 3Last Post: 07-27-2013, 08:20 PM
- By idct in forum Developer SpotlightReplies: 1Last Post: 07-21-2013, 01:35 PM
- By thanhtung2805 in forum HTC 8XReplies: 1Last Post: 07-16-2013, 04:38 AM
- By aleph in forum Windows Phone AppsReplies: 1Last Post: 07-15-2013, 11:25 PM