Updating Stella in the future

Stephen Anthony 2018-07-11 23:34:12 -02:30
parent 5179ca459c
commit 8dca9addbc
1 changed files with 42 additions and 1 deletions

@ -108,3 +108,44 @@ The firmware running on the two WT51F104S MCUs is proprietary and has been publi
The FAT32 partition is wrongly labelled as type 0x83 (linux ext2). As a consequence, MacOS will not mount it and instead offer to format ("initialize") the card. This can be fixed by manually changing the partition type to 0x0c (FAT32) with fdisk.
**WARNING:** Only use fdisk if you know what you are doing. Don't accidentally mess up your other drives.
# The Future
## Improving the included version of Stella
The version of Stella included with this device is quite old; version 3.7.5, released in 2012. While it is compatible with most vintage-era games, its support for newer homebrew games is not as strong. As such, updating Stella to the latest version (from this point on known as 'Stella 5') is probably the most important upgrade for this system.
Upgrading to Stella 5 is not currently possible without updating other parts of the system as well. The main issue is that Stella 5 requires version 2 of the [SDL library](http://libsdl.org), and uses hardware acceleration exclusively (Direct3D, OpenGL(ES), Metal, etc). It is not compatible with SDL1.2. Updating the system to use SDL2 requires work in several areas, and for the developer to be very familiar with Linux development, compiling kernels and library software, etc.
### SDL2
SDL2 doesn't directly support the GPU included in this hardware (Mali 400).
* There is a fork of SDL2 with preliminary support for Mali400 at [[https://github.com/mihailescu2m/libsdl2-2.0.2-dfsg1]], with the actual diff located at [[https://github.com/RetroPie/SDL-mirror/commit/ab0cc17ccadb24f2a20deab249c82bcee6f33e69]].
* One would need to compile this fork on the system and debug/test it, as follows: [[https://github.com/cdev-tux/q3lite/issues/6]]. Note that this code *has* been shown to work with Quake 3 at a good framerate, which has much more demanding requirements than Stella 5.
### Mali 400 drivers (kernel-side and client-side)
There is both a kernel-side and client-side driver component required for Mali400 hardware. Depending on the version of the kernel to be used, there are different paths to follow (the first option is preferred, and probably quite a bit easier).
* Using kernel 3.4.113 (currently installed on the system). This kernel is supposed to include all required modules for the Mali400 hardware. It is unclear whether the current build actually compiles these modules into the kernel. If not, one will have to research how to do that (ie, enable the modules in Kconfig, test to make sure they are compiled in and enabled, etc). More information is available at [[http://linux-sunxi.org/Mali_binary_driver]].
* Using a 'mainline' kernel. Allwinner H3 and Mali400 support can also be included in a mainline kernel. More information on this is available [[https://bootlin.com/blog/mali-opengl-support-on-allwinner-platforms-with-mainline-linux]]. Note that if you go this route, you will have to determine all the changes that Hyperkin have done to the current kernel (mainly the sunxi-atari driver) and port it to the new kernel too.
### Stella 5
Once the Mali drivers and a Mali-enabled SDL2 are installed, compiling Stella 5 should be straightforward. At that point, the system will be quite similar to a modern Linux system, and compiling Stella should be as simple as it is on standard Linux.
## Basic requirements for development on this system
As mentioned above, one needs to be quite familiar with Linux development to attempt to upgrade to the latest version of Stella. You will need skills in the following:
* configuring and compiling kernels, as well as testing your results
* configuring and compiling SDL2 (the included link will get you most of the way, but there are always gotcha's)
* installing proprietary drivers onto the system, probably manually (there is unlikely to be an error-free install file, and some manual copying, etc will be required)
* compiling and testing Stella; this is actually the easiest part
As well, while not absolutely necessary, it would be much easier if you could connect to the system while it is running, to inspect it at runtime. For this, you will need a [Serial convertor module](https://www.amazon.ca/gp/product/B072K3Z3TL/ref=oh_aui_detailpage_o01_s01?ie=UTF8&psc=1) to connect to a serial debugger port on the system. More information will follow on how to connect this device once I have one myself.
Finally, while some members of the Stella Team may be able to direct you, answer general questions, etc, our time is limited, and dedicate to actually working on and improving Stella 5 (and beyond). If you decide to take on this project, please consider the work involved and level of experience required.