RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login

    Box86 and Wine on RPi4

    Scheduled Pinned Locked Moved Ideas and Development
    box86wineqemux86windows
    475 Posts 40 Posters 240.9k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      mth75
      last edited by mth75

      And for inspiration ... The Settlers 3. All very playable on a Pi4, although overclocked to 2000Mhz and very good playable on a Pi400 (clocked to the max, 2375 CPU and 775GPU),

      new_1317.jpg

      1 Reply Last reply Reply Quote 0
      • G
        George
        last edited by

        Wow @mth75 and @Folly, you guys have been busy! Awesome stuff! It's so cool to see how you've gotten so many things running in such a short time.

        @mth75, I love your Commodore Pi/4. That is beautiful! Nice work! I'm a long time C64 user and have a C64 Reloaded MkII with a Pal VIC and Ultimate 1541-II+ hooked up to a FrameMeister for doing C64 stuff on. Lots of fun! For my Pi projects, I used old cases from a couple of broken Coleco handheld arcade games to create my own. But they run on a Pi3, so not really relevant to this conversation.

        I've been spending a lot (too much) of time trying to get the music playing in Space Cadet 3D Pinball. Even though it works fine in Windows natively, it doesn't in WINE. This is because of the way Space Cadet initializes the MIDI file for the music. It initializes it as a TYPE vs. an ELEMENT. Windows seems to have some ways of dealing with this, but WINE does not. A couple of years ago someone filed a bug in WINE (https://bugs.winehq.org/show_bug.cgi?id=46513) along with a patch to "fix" it, but the patch was never applied to the code. This might be because the problem only appeared for Space Cadet. Keep in mind that Space Cadet 3D Pinball is actually from Windows 95 and API calls could have been different then (along with software development practices). Although it's commonly thought that the code is notoriously impossible to deal with, it's not really a fair statement. Any code that is a given age will deal with the same issues of nobody knowing what anything does.

        Long story short, I fixed the music issue in Space Cadet and will be releasing the fix in my next push of the install script.

        I didn't feel that it would be a good idea to push for the patch to be included in WINE, or even build my own version of WINE that would fix this issue. I've actually compiled WINE on my RPI4 using QEMU and it took a LONG time. Instead, I chose to fix Space Cadet itself by editing the binary so that it would open the MIDI file as ELEMENT instead of TYPE and use the proper Element Name pointer. There's a lot more technical detail in decompilation, how I found the pointer, and then how I made the change that would probably be better posted in an article than a forum post. Now my task is to figure out the best way to propogate this fix. I'd rather not be responsible for putting another copy of the software out into the wild, as it is copyrighted. I might be able to do a binary patch from the RetroPie install script. In the mean time, it doesn't sound like you're missing the music. Here's a link to a YouTube video with the music if you're curious:

        Regarding audio issues: I haven't personally experienced crackling myself, but I'm not surprised. They are most likely caused by a buffer underrun, whereby the audio system is looking for more audio to output, but the buffer hasn't been filled by the software. This can happen a lot when the CPU is at high usage. This can be caused by lots of things, including Box86, Wine, and the software you're running. It can sometimes be alleviated by using a larger audio buffer, though that increases the latency, which may be offputting when playing games. It can also be alleviated by making sure there is no logging of any kind being done by Box86 and Wine. Unfortunately, I might have kept some logging variables in my setup scripts. Make sure you see WINEDEBUG=-all and maybe even add BOX86_LOG=0 in the command lines. I'm not sure there is a 100% fix for audio issues though. I've seen others run earlier versions of Wine for other reasons. Side note - there is a bug in Wine 5.22 that will crash if you add logging. That drove me crazy for quite a bit.

        Regarding making it easier to add software. I admit, I don't have a perfect answer. A script that creates ports could work. Alternatively, if Wine were registered as an emulator instead of a Port, then some other kind of scripts could be added in its "ROMS" directory, though you'd still need to create them. Finally, I thought perhaps one could link directly to the Start Menu items in the Wine Prefix directory. Then any software that gets installed using the standard Windows mechanisms would be automatically accessible from within EmulationStation. But this might not cover different Wine Prefix directories. This requires some investigation though and feedback from the RetroPie maintainers.

        @mth75, I'm not sure why the scripts weren't detecting that things were installed (besides the problem that occured with the Box86 installation). It could be something to do with the versions of RetroPie, but you said you've maintained and updated it. Well, hopefully Mesa gets updated soon and that is one less dependency to worry about! Commandos 1, Age of Empires II, and Settlers 3 are looking good! Definitely an inspiration. Wow!

        @Folly, thanks for the suggestion for Road Fighter. That might do the trick, though it crashes for me when going into Player Keys. Do you see the same issue? On the positive side, no installation program is necessary - you can just unzip the contents into Program Files.

        Thanks again for all the feedback and challenges you've gone through.

        - George

        F M 2 Replies Last reply Reply Quote 1
        • F
          Folly @George
          last edited by Folly

          @george said in Box86 and Wine on RPi4:

          Wow @mth75 and @Folly, you guys have been busy! Awesome stuff! It's so cool to see how you've gotten so many things running in such a short time.

          Cool, isn't it. I see the amazing possibilities here !
          This is quite impressive, what we all, including you, have done !

          I chose to fix Space Cadet itself by editing the binary so that it would open the MIDI file as ELEMENT instead of TYPE and use the proper Element Name pointer. There's a lot more technical detail in decompilation, how I found the pointer, and then how I made the change that would probably be better posted in an article than a forum post. Now my task is to figure out the best way to propogate this fix. I'd rather not be responsible for putting another copy of the software out into the wild, as it is copyrighted.

          Do you know about IPS patches ?
          You can create one without having to worry about copyrights.
          You then just share the differences you made.

          I already have some in this repository :
          https://github.com/FollyMaddy/RetroPie-Share

          You can patch or create from files up to about 7Mb.
          I am using this :
          https://github.com/kylon/Lipx
          Just run this to see the help :
          ./lipx.py

          Regarding making it easier to add software. I admit, I don't have a perfect answer. A script that creates ports could work. Alternatively, if Wine were registered as an emulator instead of a Port, then some other kind of scripts could be added in its "ROMS" directory, though you'd still need to create them. Finally, I thought perhaps one could link directly to the Start Menu items in the Wine Prefix directory. Then any software that gets installed using the standard Windows mechanisms would be automatically accessible from within EmulationStation. But this might not cover different Wine Prefix directories. This requires some investigation though and feedback from the RetroPie maintainers.

          Perhaps we get a good idea along the way.
          Indeed, your idea to link to the start menu, could be a nice solution.

          Have a look here, perhaps you get some inspiration from this too :
          https://github.com/FollyMaddy/RetroPie-Share/tree/main/00-scripts-00
          Like you said, creating scripts is one of the possibilities here.

          Or exporting *.exe as a string to a standard bash starter, could also be an idea.

          @Folly, thanks for the suggestion for Road Fighter. That might do the trick, though it crashes for me when going into Player Keys. Do you see the same issue?

          No crash here, I tested this menu for you.

          Did you see the top of the webpage ?
          There are more games you can choose from.
          Perhaps one of them wil do.

          See here for updated nightlies (seems only source):
          https://braingames.jorito.net/nightlies/

          Thanks again for all the feedback and challenges you've gone through.

          - George

          M 1 Reply Last reply Reply Quote 0
          • M
            mth75 @George
            last edited by mth75

            @georgeRe: Box86 and Wine on RPi4

            Where to begin :-). @George Indeed, I didn't missed the music, I couldn't even remember the music, at least not in the Win95 version. I'm interested in the patch though! Why not publish the patch on GitHub?

            Regarding install scripts, I don't think any script in order to install Windows applications is feasible (at all). I suspect everyone who want to use the Box86/Wine combo just has to create his own bottles on a another machine and has to do some manual labour.

            Regarding the C= Plus/Pi4, here some techporn: https://retropie.org.uk/forum/topic/25090/commodore-plus-4-rpi4-build-ready?_=1610376894522

            1 Reply Last reply Reply Quote 0
            • M
              mth75 @Folly
              last edited by

              @folly said in Box86 and Wine on RPi4:

              Perhaps we get a good idea along the way.
              Indeed, your idea to link to the start menu, could be a nice solution.

              Wouldn't this imply 1 bottle for all games? I don't think that would work. I believe most games would need their own bottles (which also creates a 1GB overhead if i'm not mistaking).

              F 1 Reply Last reply Reply Quote 0
              • F
                Folly @mth75
                last edited by Folly

                @mth75 said in Box86 and Wine on RPi4:

                @folly said in Box86 and Wine on RPi4:

                Perhaps we get a good idea along the way.
                Indeed, your idea to link to the start menu, could be a nice solution.

                Wouldn't this imply 1 bottle for all games? I don't think that would work. I believe most games would need their own bottles (which also creates a 1GB overhead if i'm not mistaking).

                I don't think so.
                But then again I don't have that much knowledge about wine.
                So if you know, then, indeed, it seems not the right path to take.

                1 Reply Last reply Reply Quote 0
                • G
                  George
                  last edited by

                  @Folly , thanks for the info on patches, seems to be close to what I'm looking for, if not exactly. Cross-platform is definitely a plus.

                  @mth75 The C= Plus/Pi4 is beautiful on the inside as well as the outside. Gorgeous job!

                  EmulationStation can handle sub-directories, so it is feasible to have multiple wine prefixes in a single ROM directory. Of course, a Windows Start menu also has its own sub-directories, so that would then require people to hunt through multiple directories in order to find the game they are looking for. Even though some people have thousands of ROMs to sift through, it's a little easier when they are in a single, alphabetized list!

                  - George

                  M 1 Reply Last reply Reply Quote 0
                  • M
                    mth75 @George
                    last edited by mth75

                    @george said in Box86 and Wine on RPi4:

                    EmulationStation can handle sub-directories, so it is feasible to have multiple wine prefixes in a single ROM directory. Of course, a Windows Start menu also has its own sub-directories, so that would then require people to hunt through multiple directories in order to find the game they are looking for. Even though some people have thousands of ROMs to sift through, it's a little easier when they are in a single, alphabetized list!

                    I made Wine prefixes and placed them in a Box86 Romfolder (so I adjusted the locations in your example script). I think this indeed is more in the "spirit" of retropie.

                    @Folly see screenshot

                    I 4d2eea5b-d17d-4d93-8fe4-b20fbc96ff1f.jpg

                    F 1 Reply Last reply Reply Quote 0
                    • F
                      Folly @mth75
                      last edited by Folly

                      @mth75 said in Box86 and Wine on RPi4:

                      @george said in Box86 and Wine on RPi4:

                      EmulationStation can handle sub-directories, so it is feasible to have multiple wine prefixes in a single ROM directory. Of course, a Windows Start menu also has its own sub-directories, so that would then require people to hunt through multiple directories in order to find the game they are looking for. Even though some people have thousands of ROMs to sift through, it's a little easier when they are in a single, alphabetized list!

                      I made Wine prefixes and placed them in a Box86 Romfolder (so I adjusted the locations in your example script). I think this indeed is more in the "spirit" of retropie.

                      Nice !

                      Can you give an example of a prefix ?

                      Does this prefix run the game directly or does it run a bash file from somewhere else ?

                      What is your rom folder now ?
                      /home/pi/RetroPie/roms/Box86
                      or
                      /home/pi/RetroPie/roms/ports/Box86

                      M 2 Replies Last reply Reply Quote 0
                      • M
                        mth75 @Folly
                        last edited by mth75

                        @folly said in Box86 and Wine on RPi4:

                        What is your rom folder now ?
                        /home/pi/RetroPie/roms/Box86

                        Indeed, /home/pi/RetroPie/roms/Box86/<Game folder> is my rom folder.

                        The <Game folder> is my wineprefix for example:

                        <Game folder>
                        -- dosdevices
                        -- drive_c
                        --- system.reg
                        --- user.reg

                        etc.

                        F 1 Reply Last reply Reply Quote 0
                        • M
                          mth75 @Folly
                          last edited by

                          @folly said in Box86 and Wine on RPi4:

                          Does this prefix run the game directly or does it run a bash file from somewhere else ?

                          I use the scripts from George, with only the game locations adjusted to the /home/pi/RetroPie/roms/box86/ folder.

                          I'm planning to look into making it somewhat easier in the near future.

                          shavecatS 1 Reply Last reply Reply Quote 0
                          • shavecatS
                            shavecat @mth75
                            last edited by shavecat

                            Hey all
                            I have Shovel Knight/unepic /Worldofgoo/Postal1/crimsonland runing on the box86 too.

                            And can i have more Info plz ,
                            How to run
                            Commands or AOE2 ?
                            plz
                            Got lost here abit :)

                            M F 2 Replies Last reply Reply Quote 0
                            • M
                              mth75 @shavecat
                              last edited by

                              @shavecat said in Box86 and Wine on RPi4:

                              ey all
                              I have Shovel Knight/unepic /Worldofgoo/Postal1/crimsonland runing on the box86 too.
                              And can i have more Info plz ,
                              How to run
                              Commands or AOE2 ?
                              plz
                              Got lost here abit :)

                              The way I did it. I'm running a separate Raspian OS (LXDE desktop) and installed both Box86 and Wine in order to make the wine_prefixes.

                              I compiled Box86: https://github.com/ptitSeb/box86/blob/master/COMPILE.md

                              or you could install Box86 with Pi Apps.

                              Then I installed Wine:

                              Download Wine

                              cd ~/Downloads
                              wget https://dl.winehq.org/wine-builds/debian/dists/buster/main/binary-i386/wine-devel-i386_5.22~buster_i386.deb
                              wget https://dl.winehq.org/wine-builds/debian/dists/buster/main/binary-i386/wine-devel_5.22~buster_i386.deb
                              dpkg-deb -xv wine-devel-i386_5.22~buster_i386.deb wine-installer
                              dpkg-deb -xv wine-devel_5.22~buster_i386.deb wine-installer

                              Install Wine

                              sudo mv wine-installer/opt/wine-devel ~/wine
                              sudo ln -sf ~/wine/bin/wine /usr/local/bin/wine
                              sudo ln -sf ~/wine/bin/winecfg /usr/local/bin/winecfg
                              sudo ln -sf ~/wine/bin/wineserver /usr/local/bin/wineserver

                              Boot wine

                              wine wineboot

                              Download Winetricks

                              cd ~/Downloads
                              wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks

                              Install winetricks

                              sudo chmod +x winetricks
                              sudo cp winetricks /usr/local/bin

                              winetricks needs this installed

                              sudo apt-get install cabextract -y

                              #Run Winetricks
                              BOX86_NOBANNER=1 winetricks dotnet20sp2

                              Furthermore I installed Q4Wine with the Add/Remove package manager from Raspbian OS (to easily create wine_prefixes (Bottles)).
                              or

                              you could use winetricks with the following command:

                              BOX86_NOBANNER=1 winetricks --gui.

                              Then, I copied the wine prefixes to my RetroPie machine (see the rest of this topic for how to use the wine_prefixes).

                              shavecatS 1 Reply Last reply Reply Quote 1
                              • shavecatS
                                shavecat @mth75
                                last edited by shavecat

                                @mth75
                                Thanks a LOT !!!
                                doing it now .
                                After the boot wine i got this -

                                pi@retropie:~/Downloads $ wine wineboot
                                Box86 with Dynarec v0.1.5 1e20a9ef built on Nov 14 2020 01:22:25
                                Box86 with Dynarec v0.1.5 1e20a9ef built on Nov 14 2020 01:22:25
                                Box86 with Dynarec v0.1.5 1e20a9ef built on Nov 14 2020 01:22:25
                                0024:err:environ:run_wineboot failed to start wineboot c000007b
                                wine: could not load kernel32.dll, status c000007b
                                

                                Thats OKAY ???

                                After that how can i run the games ?
                                like with exe file form sh file ???
                                now think im lost a bit ;

                                M 1 Reply Last reply Reply Quote 0
                                • M
                                  mth75 @shavecat
                                  last edited by

                                  @shavecat said in Box86 and Wine on RPi4:

                                  OKAY ???
                                  After that how can i run the games ?
                                  like with exe file form sh file ???
                                  now think im lost a bit ;

                                  No, that's not okay. Check your file permissions/ownership?

                                  you can start simply (if your install is ok) with: wine <gamename>.exe

                                  M 1 Reply Last reply Reply Quote 0
                                  • M
                                    mth75 @mth75
                                    last edited by

                                    @mth75 Btw, that's an old Box86 version, my Dynarec version on the Pi400 Desktop is v0.1.9.

                                    shavecatS 1 Reply Last reply Reply Quote 0
                                    • shavecatS
                                      shavecat @mth75
                                      last edited by shavecat

                                      @mth75
                                      How do i do that ? (Check your file permissions/ownership?) where and how ?
                                      im using putty on retropie 4.6 and i have pi4 2gb.
                                      So thats mean i can do an .sh file from ports in retrpoie with
                                      wine<gamename>.exe
                                      and it will work ??? :):):):)):):)<3<3<3<3(SOUNDS AMIAZING ! )

                                      M 1 Reply Last reply Reply Quote 0
                                      • M
                                        mth75 @shavecat
                                        last edited by mth75

                                        @shavecat

                                        Sorry mate, can't advise your there except:

                                        1. make sure to install box86 and wine maybe on a clean system.
                                        2. try to install an easy game for test purposes, maybe Space Cadet 3D pinball
                                        3. and build further ... with all of the above ...
                                        1 Reply Last reply Reply Quote 0
                                        • F
                                          Folly @mth75
                                          last edited by Folly

                                          @mth75 said in Box86 and Wine on RPi4:

                                          @folly said in Box86 and Wine on RPi4:

                                          What is your rom folder now ?
                                          /home/pi/RetroPie/roms/Box86

                                          Indeed, /home/pi/RetroPie/roms/Box86/<Game folder> is my rom folder.

                                          The <Game folder> is my wineprefix for example:

                                          <Game folder>
                                          -- dosdevices
                                          -- drive_c
                                          --- system.reg
                                          --- user.reg

                                          etc.

                                          OK, I understand how you do it, I think.
                                          But now I wonder, does this also work if you run emulationstation from your "cli" instead of the "Desktop" ?
                                          Because it needs to run xinit to display it all in te terminal/cli enviroment.
                                          The ultimate goal is that it's working in standard "RetroPie".

                                          M 1 Reply Last reply Reply Quote 0
                                          • M
                                            mth75 @Folly
                                            last edited by mth75

                                            @folly said in Box86 and Wine on RPi4:

                                            OK, I understand how you do it, I think.
                                            But now I wonder, does this also work if you run emulationstation from your "cli" instead of the "Desktop" ?
                                            Because it needs to run xinit to display it all in te terminal/cli enviroment.
                                            The ultimate goal is that it's working in standard "RetroPie".

                                            I'm running EmulationStation as part of a "standard" RetroPie image (so no LXDE Desktop installed) on my Pi4 build. I just build the packages (wine_prefixes) on my Pi400 (Raspbian OS/LXDE with no RetroPie/ES installed).IMG_1321.jpg

                                            F 1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

                                            Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.