Menu

System architecture

Rico Diego
2017-12-21
2018-04-30
  • Rico Diego

    Rico Diego - 2017-12-21

    Firstly, I'm blown away by how well BoxedWine works; and how much it's improved over the fairly short time I've been looking at it. Very impressive.
    If it's not a rude question, is there any documentation around? No worries if you are concentrating only on devel. at this stage. :)
    Very curious about what you've done with Wine, the version, how much code you used, how you're building it etc, and about the structure of BoxedWine itself.
    Is getting a shared clipboard happening between the host and BoxedWine a big deal?

    Many thanks
    RIco

     
  • James Bryant

    James Bryant - 2017-12-21

    BoxedWine is a CPU emulator and also a Linux kernel emulator written in C with SDL. So it can run Linux apps, like XOrg and Wine, on multiple platforms. It runs as a single process and thus emulates threads and processes. With the normal CPU core I use only 1 host thread. I'm currently in the middle of creating a dynamic recompiler that targets x64 that will use 1 host thread per emulated thread.

    My ultimate goal is to run older Win95 era games without an official copy of Windows. I've tried writing my own Win32 API layer, even got Age of Empires working, but I quickly realized that was too big of a task. Then I tried modifying Wine to run in Windows, but I didn't get too far with that. Wine is just too big of a project for one person to modify. I got some basic command line stuff to run doing that.

    Now my aim to run an unmodified x86 Debian build of Wine. This worked well, I even got XOrg and all it dependencies running, but there was a bug that was just too hard to debug at the time that happened in the communication between XOrg and the window manager. So I took a step back and created my own replacement for Wine's X11 driver, winex11.drv. Now I can run Wine without XOrg and all of its dependencies. This makes debugging problems much easier. This also allows much easier access to the clipboard, the current source code supports text copy/paste between Wine and the host. The only downside to my X11 driver replacement is that it has to be compiled against a particular Wine version because Wine changes structures it uses between releases.

    I have also compiled my own libGL.so.1 that will forward OpenGL calls to the host. This was a much bigger project that I originally thought it would be. I'm sure there is still a lot of bugs, but I have gotten win32 Quake 2 with OpengGL to work.

    I don't really have a road map, but I keep a todo list in the code

    https://sourceforge.net/p/boxedwine/code/HEAD/tree/trunk/boxedwine/c/todo.txt

    If you have any particular questions about the code or a particular feature, feel free to ask.

     
  • Rico Diego

    Rico Diego - 2017-12-23

    Thanks very much James.
    I'm looking round at the source code right now. I'd like to contribute to the proj.; if I can come up with something worthwhile.

    How did you get started on the Linux/CPU emulator? You're so productive, have you done a bunch of low-level kernel hacking hacking previously or in your day job?

     
  • James Bryant

    James Bryant - 2017-12-23

    Help is always welcome.

    My current day job is as an iOS developer for the last 5 years, before that I did embedded java and c.

    I don't have any Linux programming experience, so developing the syscalls has been challenging, but also educational. I suspect mmap, clone and execv still have bugs. Those very pretty complicated kernel functions.

    As for CPU emulation, I got started on that by porting Dosbox to Java. If your are familiar with Dosbox's CPU emulation you will see similarities in my code.

    There are lots of areas that need help, so just let me know what you are interested in and maybe I can point you in a direction.

     
  • Rico Diego

    Rico Diego - 2018-04-30

    Hi James. Is there any chance of having a look at your Win32 API layer code/bin please?
    Thanks

     
  • James Bryant

    James Bryant - 2018-04-30

    Sorry, I didn't understand what exactly you are looking for.

    I started a new web site, http://boxedwine.org that I'm starting to put some documentation together that might help.

     

Log in to post a comment.