-
Posts
1,165 -
Joined
-
Last visited
-
Days Won
246
Content Type
Profiles
Events
Forums
Blogs
Downloads
Everything posted by Tux
-
It was epic, with 2 months where I simply gave up about this before returning to it finally, anyway... ! What to say about it ? It's huge, it's probably the version with the most changes inside even if there are almost no changes on the emulation side, except for the bug fixes I made while testing things. The 1st goal was to get rid of the opengl blits in windows while having a usable gui even in fullscreen, it's done. By the way it's a "desktop fullscreen" meaning it's just an invisible window using the whole desktop place, so it behaves exactly like a normal fullscreen and normally you don't see any difference. Also the games using rasters and the emudx games work correctly (didn't test all the emudx games, just 2, but the rest should be ok). The keys configuration has changed, because keys constants have changed in sdl2, so even if it still reads its configuration from the same file, it reads the keys from a new section, with -sdl2 at the end of the name of the section. Sorry for those who had a lot of custom inputs, but there were too many incompatible changes, it's better to restart from scratch here. New "game controllers" interface, so that you can plug or unplug a joystick during game play without problem, don't abuse this though, I tested it a little, but not sure I tested all the possible cases. And joystick 1 in raine won't become joystick 2 just because you plugged a new joystick. There is also a new command in the inputs menu "joysticks indexes" to change these joysticks positions if you have at least 2 joysticks plugged. There's a lot less changes in the configuration saved for the joysticks, maybe a few buttons will be different in configs which use more than 4 buttons though, just check and adapt... Also if you use a gamepad recognized by sdl2, the digital cross on the left should be automatically mapped to the left stick, so it can be used for movement without doing anything. The sound has a new 48 Khz option which is almost useless, just added that for testing. Opengl has the adaptive vsync now, check in "video info" after playing something to see if it works for you. Better vsync in windowed mode, but I double checked you can disable vsync if you want in "renderer options", yeah it works, but it didn't last night ! There is no video driver selection for windows anymore, useless normally. A new video renderer "sdl2 native", mainly for testing, not spectacular, and no specific options for now. Notice the opengl rendering is not super optimized yet, all the games are rendered in 32 bits, the simplest solution, but not the fastest one. It's enough for current hardware... Same thing for emudx, it could be remade using new functions for better performance... The gui has the most obvious changes, a simple animation now runs behind the transparent menus, if you load a game it starts in the background behind the menus, but if you start to play it's paused when you return to the gui, like before. While testing things the most obvious bugs fixed were : - all the cps1 games using 6 buttons had lost their 3 1st buttons ! It's due to the code to include inputs from another game, went too fast on this one, this time it should be fixed for good. - and bubble bobble has been broken in the 64 bits version since version 0.91.14, which was released about 9 months ago ! At least it's not a generic bug, it's something very specific to this driver, it's an old thing with non portable ideas inside which created a black screen on boot here, it's fixed anyway. - commands displayed from the command.dat file (like the buttons of 1941 in the "controls" section) were bad for quite some time, it's fixed too. There is a new index_roms file with this binary, it's to get the sizes of the roms from the internet archive so that the dialog is not inert while it's downloading since their server doesn't send the size of the file before the download starts. The 2 vera fonts have been replaced by DejaVu versions, which look about the same but contain more utf8 characters inside to be able to display more things without problems. they don't contain Japanese characters though. There might be a few other things I forgot. Well it's so huge that I can't be sure there won't be any problem anyway, we'll see... ! Don't forget to grab the dlls32-0.92 or dlls-0.92 file depending on the version you are using, it's bigger with plenty of useless stuff inside, but it's the price of using precompiled packages in mingw32 and mingw64, it simplifies things and allows fast updates, but it's bigger on disk. http://raine.1emulation.com/download/latest.html
-
Sorry not sure to finish today finally, underestimated the amount of work for that again. The api is quite simple, but it obliges to make big changes to handle it, plus there is a lot of testing to be done, I plugged again my old sidewinder joystick to have something which is not a gamepad, and it was a good idea, some functions like player indexes are not supported with this kind of joystick ! Also I forgot the inputs are recognized by name now, instead of button 0, you have A for xbox pads, etc... Simple changes, but which take time. And there are 3 indexes for joysticks now, the base index which is the order in which they are opened, the player index which is the index of the joystick for raine (which finally allows that a joystick stays in its position and doesn't change if something else is plugged), and the instance index which is the number used to identify it in events, and it changes everytime it's plugged/unplugged. So all that creates quite a mess, but I am starting to see the end of it... Also if you wonder why it wasn't easy to automatically map the cross, or digital pad on the left of a game pad to the left joystick, it's because there are no standard in the way these gamepads are built. For my old ps3 gamepad, this cross is just 4 buttons (!). For the xbox compatible game pad, it's a "hat" + some axis movement which is not related to the left stick ! So it was quite risky to try to map an input to some other input in these conditions. What they did in sdl2 is they added something to map and recognize the controls of all these gamepads, now you know exactly where an input comes from when you receive it, and so you can link it easily to some other input... !
-
And forgot something again : the new "game controllers" api as they call it. I thought 1st you got it without doing anything just by linking with sdl2, but no, it's a new api on top of the old joystick api... Meaning I need to test this. Well without it, we have exactly the same joystick handling as with sdl-1.2. With it, it handles joysticks which are added or removed during the emulation, and it's easier to convert dpad to joy movements (because they are standardized to the xbox/playstation model, one dpad, 2 sticks, 4 buttons on the right, plus the triggers and left and right buttons. It doesn't look too complex...
-
It's almost over, probably done tonight or tomorrow. It would be nice to test the opengl "anisotropic filtering", some kind of filtering which is supposed to work better, I am not sure it's good for 2d though, that's the kind of thing which is used in 3d games to make things readable in the 3d world. It's worth a try. Now I am starting to get tired, so not sure I'll test it now. And I noticed the display of commands from the command.dat is broken, it's been broken for a few versions actually but nobody noticed. It's probably not very hard to fix, so I'll try to have a look. The most obvious changes are in the gui, clearly, now the game starts as soon as it's loaded behind the main menu (so that you can change options like dipswitches or anything else, but at the same time the game's demo can play). If you start playing and return to the gui, then it's paused, it's a very bad idea not to pause it here, it might be in the middle of a game ! Otherwise if no game is loaded there is now a simple animation running behind the dialogs... A lot of dialogs didn't really need any title, so only needed titles are displayed now, for those that don't need it it makes more room for the background display. Emudx is fixed, it can be improved with the new sdl2 functions, but I'll probably keep this for later, it's enough to know it's working for now.
-
... and I got a cold. No kidding, got an electric scooter and the wind was just freezing the other morning, I didn't feel my hands anymore on arrival, and got a cold through my nose ! So finishing this might take more time, and even if the biggest part is done, there are still lots of small things to look into. Some small improvement I noticed in sdl2 : vsync support is better in opengl (and likely in sdl2 native too), now it supports adaptive vsync if your driver supports it (you'll see if it's supported in "video info" after having run something in opengl), and more importantly, I could never fix the tearing in windowed mode before (specially visible in a game like batrider, in the intro after inserting a coin, the super big letters crossing the screens from right to left there is nothing worse than that for tearing), well now no visible tearing anymore even in windowed mode, finally ! For adaptive vsync, it's like vsync but if you've already missed the vertical retrace for a given frame, it swaps buffers immediately, which might be less jarring for the user during occasional framerate drops, which should normaly never happen in raine anyway but it can't hurt to have it. The key configs are now saved in sections ending in config_sdl2 instead of just config before in raine.cfg and games.cfg. That's because too many keys are now different, and it's better to go back to the default keys than having most of the keys not recognized and not responding. Also raine has never been easier to compile than now, especially in windows with mingw, I'll probably update the notes on how to compile, but in a nutshell : you get the msys2 installer, it installs 4 shells, but only 2 of them are interesting for raine, either the 32 bits or the 64 bits one, you choose your flavor, then install gcc, g++, and nasm + the basic environment tools. Then all the libs are available as packages, you just need to install git (to get raine sources, although you can get a zip file from github if you prefer), sdl2, sdl2_image, sdl2_ttf, muParser, and that's all. All this can be installed in just 1 command line using their pacman tool. After that cd to the sources directory, type make, or make -j4 if you have at least 4 cores, and after a few seconds you'll have your new binary... ! If you try that on current git sources, the makefile will build a debug build, you have to edit it to build an optimized binary, but it's explained in comments at the beginning of the file and very easy to do.
-
Some unexpected problems in windows, as usual I would say, a solution is in progress but it takes time... I won't have finished before the end of the week ! (for the gory details, for some reason when calling SDL_OpenAudio the callback is never called, and when calling SDL_OpenAudioDevice, SDL_PauseAudio is ignored and I must use SDL_PauseAudioDevice... ! These 2 combined made me search for a long time ! Apparently everything needs to be migrated to the new audio device api in windows, when there's no need like that in linux... ! I'll do more testing later...) after a new session, all this mess was because the default sound driver in windows is something called "wasapi". Clearly it sticks to the device preferred setting and refuses to convert anything, for me that was 48000 Hz, samples in floats of 32 bits ! Simply unthinkable, I would have to rewrite a big part to handle this kind of samples... Forcing the directsound driver goes back to what we had with sdl-1.2, much better. There was also some allergy between direct3d and opengl : start raine in windowed mode with a game like gunbird. Start the game, then go to fullscreen while the game runs using the keyboard shortcut. Call the gui... and bam ! Message CreateTexture(D3DPOOL_DEFAULT): INVALIDCALL and return to desktop... ! There is a solution to that, thanks to people on the net who had the same kind of problem, there is a hint to tell sdl2 to use opengl instead of direct3d for its rendering : problem solved ! Still a few things to look into tomorrow, but it's starting to look good... And I think the new dlls will actually make a bigger archive because the mingw32 libs use all the optional libs, which would be totally useless here, but now they must be present on disk, so there is a ton of useless stuff to add... ! At least it simplifies a lot the installation when programming raine, binary packages are convenient... !
-
Yeah might be a way to do that...
-
Bad day for those who have some complex key configs, most of the key configs have changed, which means you need to update almost everything ! More keys are handled though... The joystick buttons seem to be the same though... Except that most of the work is done, opengl works fine (got a lot of trouble with DrawPixels and the overlay text in opengl which conflict with the sdl2 renderer), as expected the emulation of neogeo rasters is back to normal. Didn't test emudx yet. Still a few obvious fixes to make in the gui, and the console is totally broken, so it's not over, but most of the hard work is probably done now !
-
1st successful link, lot of things broken inside of course... sdl_sound was merged into raine for sdl2, that's what the authors seem to want, and it was impossible to get a 32 bits package out of their build system (+ no package in mingw32/mingw64 !).
-
I think this time it should work, I have a working test program for the gui (even if it's basic) and I am making good progress for the rest, even if it's awfully long to do... A patch of almost 900 kb so far, and it's not over, still quite a lot to do ! Things to expect : - no more normal blits ! This sdl2 is really different, there is almost no way to have direct access to the screen pixels like before, it's possible but not accelerated, so advised against. I'll keep the code, might be useful later to combine a scaler with something else, but for now they are gone. Those still in love with normal blits after all this time will have to stay with an old version... ! - the yuv overlays are gone too. For them it's because they have become useless : they were 1st done as a 1st approach to scaling to fullscreen in any resolution without opengl. Well today it's very hard to find a computer without opengl, and the picture with yuv overlays is not so good, so for now they are leaving too, but they are still supported in sdl2 if they are needed one day... So the only 2 rendering methods for now are opengl like before, and sdl2 native which uses either opengl or direct3d behind the scene, but is a lot easier to handle than native 3d programming. What's better then ? Well small things mainly, except in windows where the gui had become unusable without opengl blits, at least it will fix this mess for sure. Except that yes the gui can be rotated when rotating the screen, very easily, even if it's not done yet. Detects when a joystick is plugged or unplugged without relaunching, and it should be easier to assign a joystick to some specific inputs (will test that later). SDL_sound doesn't require any external lib anymore which means less dlls in the archive, good thing. Since everyting is 3d now, we have real hardware transparency, so it's easy to have some animation working in the background instead of a static picture like before. This is already done in the gui test program, just for fun ! There might be some better ways to render emudx games too since flip and rotation are supported in hardware now, will have to experiment. One of the biggest reason to upgrade for non windows users is simply the fact that this sdl2 is actively maintained contrary to sdl-1.2... Ah also it might allow to make an android version... well it would be a non asm version of course, but it should work. Also I hope to still be able to build the sdl-1.2 version at the end, just in case it's needed. I did this kind of update once when moving from allegro, but it was not so violent at the time, sdl-1.2 like allegro was using bitmaps to access the screen. It's not the case anymore in sdl2, and it changes a ton of things. For the gui, it can't update just a portion of the screen, so the whole thng needs to be redrawn all the time, it's very fast so it's working well, but it completely changes the way it works internally. Anyway I hope to see the end of it soon, since there should be bad weather in the following days, I hope to finish it then !
-
I had this autofire button configured for months, so it would be an extremely rare occurence... screenshot useless in this case. It's probably not random, but good luck to find the cause in this case !
-
It doesn't make much sense to play with the windows version in wine, I use it just to quickly check if it works that's all. For info it's not the emu which crashes, it's the x server. You should just not use these opengl blits in fullscreen with this version, they are here for the real windows only.
-
Just tested with sonicwi2, added 3 autofires because I had already 1 for p1 a, configured their buttons, quit, relaunched, everything is here with the right speed setting for the autofire. Did you use the command quit to quit and not closing the window ?
-
Nice find, well there's probably something weird here, but I can only confirm I have the same problem, for now I can't really look into it, deep inside sdl2 now... ! All I can say is samsho4 has correct soft dips. Ok, I took the time to look into this : it's probably a bug from samsho3 neocd, I guess they were mainly interesting by the Japanese strings, but not so much by the international ones. The specs say these strings should be 12 characters long, padded with spaces, apparently they used tabs sometimes to separate theirs, and maybe a / too in one of the bottom choices. Anyway, I added something to cope with at least the tab, which makes most of the strings readable, much better like that, now you just have to wait until I get something out of the sdl2 build (for now, just a very basic gui test program, but it's a start at least !).
-
I suggest you try it to see the effect anyway, quite impressive. Try with dimahoo, which looks really "slim" on a horizontal screen, then rotate the screen and behold ! By the way most of the vertical games are shoot'em up that's right, but not all of them. I just added an option to be able to add -rol and -ror on the command line when using -gl to display games rotating on the left and on the right, which gives as non shoot'em up vertical games : - pacman, all its clones, including miss pac man & cie. - arkanoid 1, 2, & returns. About returns it's been broken for quite a few versions, I just noticed it yesterday while checking for this windows asm compatibility. It's fixed. - block block, which I never played - bomb jack twin - Don Doko Don (platform) - Donkey Kong (better with emudx graphics, which are broken with opengl blits in windows, too bad !) - Drift Out - Exciting hour / matmania which is one of the rare games I played a lot with my cousin in the arcades, back in the day, a wrestling game... ! - fantasia (!) - frogger (same comment, better with emudx graphics) - gal's panic - Grand Cross Pinball - Kiki Kai Kai / knight boy - Liquid Kids - Maze of Flott - Mercs (although it's a commando like game, so shoot'em up but not in space !) - Pengo - us classic golf (not as good as the neogeo version) But yes, the vast majority are shoo'em ups, some very good ones being vertical indeed ! And while testing yesterday, I finally understood why there was no progression in the dialog when loading a rom from internet archive : it's because of their server which doesn't send the size of the file before the download. So I added a workaround by taking the list of the files in an index file, and getting the sizes from there. It works, the progression works again, useful for such a slow download, at least it proves that it works and it's not frozen !
-
You meant p3_b1b2 & p4_b1b2 I suppose ? Because you succeed to have 3 or 4 people playing at the same time on the same computer ? Lucky you ! I found out lately my flat screen can be easily rotated on its side for vertical games, then just update the rotation setting in video option to have rotation = 90, and suddenly the vertical games look a lot more impressive ! Less people, but still impressive ! (ideally we should also rotate the gui in this case, but it was hard to do with sdl-1.2, maybe easier with sdl2, we'll see...). For your special move working on the left but not on the right, don't hold your breath, it's ultra low priority for now, I'll have another look at sdl2, hoping that I am not pissed again at what I find... !
-
1) still not that, the player plays again, hint : renderer options. But it might be a better idea to just forget about that, it's risky business to disable opengl blits now, there will eventually be a better option one day... 2) default inputs change inputs for all the games which use these defaults, if you never switched any game to custom inputs then it's all the games, that's what you want from what you said... !
-
1) I never said to change the video renderer... ! 2) edit default inputs or switch to custom inputs and do what you want... experiment...
-
As I said, with opengl blits the neogeo games using rasters are broken. You can try to disable these opengl blits but it's very hard to use the gui without them in windows currently, so do it carefully, preferably in windowed mode only. After changing the setting in video options / Renderer options just quit raine and relaunch.
-
After some investigation, this address is a lot less interesting in windows than in linux. In linux all these asm functions go to the same area, which makes sense. In windows, following their motto "why make things easy when you can make them much more complex", they used multiple regions to store these functions, sometimes a region contains many functions, but sometimes only 1. You can get the address of the region using VirtualQuery, but after some tests I need 4 VirtualQuery calls (followed by 4 VirtualProtect calls) to get the same result as what I did here in 0.91.21 in a single VirtualProtect call, and in both cases I can't be sure I didn't forget anything ! So for now I'll keep the single VirtualProtect call, at least it's shorter ! I tested taito f3 (68020), matmania (6502), 68000 + z80 (neogeo/cps1/2), and dondokod for the rotating layer which also uses some asm code from memory. And thanks !
-
Ok captcomm fixed, it was a typo error, thanks for the info ! (and it didn't make it to 0.91.21 !)
-
Always the most recent version to use with the latest version, dates are displayed in format year/month/day beside the files so it shouldn't be that hard to guess... !
-
I'll look for the b1+b2 bad mapping, it's probably something stupid that nobody detected until now. For the assignment mess when you plug a new controller, well there are functions to simplify assigning a given controller to some inputs in sdl2, so if I fix that now, I'll have to redo it differently in sdl2, and really when I see how the windows version is getting broken lately, it would really be a good idea to get at least a basic sdl2 version working... So no promise, and it will probably get delayed then...
-
Tsss, shortly after 0.91.20, but big fixes again... The biggest one is about the 32 bits asm functions which suddenly started to crash in windows. I didn't know because I test in linux and wine doesn't care about the memory regions protections ! What probably happened is that this new protection came with the update of gcc, like what happened in linux. The difference is there is no /proc in windows, making things more messy. If someone knows how to get the base address of the region containing a given function, tell me ! For now I just used some rough approximation... Anyway normally all this asm code works again, assuming I didn't miss anything. The other big one is that I broke the init of all the neocd games in 0.91.20, sorry, it was easy to fix, but it made a lot of games unloadable ! And the last one is the return of the opengl blits : to fix the asm code I needed to test this in the real windows, and the gui is becoming almost unusable without this feature. So it's back, but this time it's optional, you can disable it in video options / Renderer options / Opengl blits. Like last time, it breaks emudx games and neogeo games using rasters, so it's not an ideal solution, but it's better than nothing, especially if you want fullscreen ! The real fix to that would be sdl2... ! They are enabled by default in windows, and it's saved in the configuration of course. And I also added some test before saving the neogeo backup ram because mine was probably saved at a bad time and it corrupted it. You'll see a warning if it detects it can't save the backup ram. Afaik, it happens only from the test mode. http://raine.1emulation.com/download/latest.html