XBox 360 support

BlitzMax Forums/BlitzMax Programming/XBox 360 support

JoshK(Posted 2009) [#1]
Assume for the sake of this discussion that money to fund this is unlimited. What would it take to get BlitzMax for the XBox 360? I don't care so much about all the assorted modules, just basic functionality.


Winni(Posted 2009) [#2]
You had to create some sort of hybrid between the Mac/PowerPC BlitzMax compiler and its Windows sibling; the Xbox 360 uses a triple core PowerPC chip, it has an own proprietary OS kernel (which is NOT Windows-based) and uses a framework that is close to DirectX for Windows.

It would sure be a hell of a lot of work, but I think it should be doable to create a 360-compatible version of BlitzMax with the foundation (the Windows and the Mac compilers) that is already there.

However, it would probably be a better approach if BlitzMax would be ported to the .NET/Mono framework -- then you could use XNA.NET on Windows and that implies full Xbox 360 support. Also, you would automagically support all targets for which a Mono runtime exists.


skidracer(Posted 2009) [#3]
For a 2D port, it's feasible PPC blitzmax output could be linked and working in number of months with standard devkit.

I would guess it would take the same amount of time for a team of monkeys to do a C++ conversion of same title.

A 3D project wouldn't be feasible, especially anything that was designed using OpenGL.


xlsior(Posted 2009) [#4]
The xbox 360 is built around a PPC CPU.

I have no idea if the xbox 360 requires a specific compiler or not, but if it doesn't:

Supposedly there is a MinGW build for the PPC platform. If this is indeed mostly compatible with the Windows MinGW, then it may theoretically be possible for BRL to add another compiler chain that creates compatible executables without TOO much work.

One potential complication would be the endianness -- the PPC CPU's use the opposite endianness than the Intel x86 platform does, so you may need to make changes to your programs source code to account for that (e.g. explicitly specify endianness in your read/write streams, or you may end up reading/writing garbled numerical data)
Depending on how BlitzMax itself generates its MinGW output, BlitzMax itself may also need some tweaks in the compiler chain to force the proper endianness for its internal workings while generating an xbox binary.

There's also the graphical system: It's neither pure DirectX nor OpenGL, so it would also involve creating libraries to interface with the xbox's graphics -- this could be a major undertaking.

Then there may be issues in getting the executables signed so the xbox would even accept them as legitimate software, but I'm sure that MS has procedures for developers to take care of that side of things...


dynaman(Posted 2009) [#5]
> Assume for the sake of this discussion that money to fund this is unlimited. What would it take to get BlitzMax for the XBox 360? I don't care so much about all the assorted modules, just basic functionality.

create a .net version of max using XNA calls for the graphics and sound functions. Other languages have been made to compile to the .net intermidiate language so finding one of them and asking should be good for getting started on the project.


JoshK(Posted 2009) [#6]
I wouldn't expect any BlitzMax graphics to work...it would just have to access DX9, which is probably where the task would become impossible?


xlsior(Posted 2009) [#7]
From wikipedia:

In a console-specific version, DirectX was used as a basis for Microsoft's Xbox and Xbox 360 console API. The API was developed jointly between Microsoft and Nvidia, who developed the custom graphics hardware used by the original Xbox. The Xbox API is similar to DirectX version 8.1, but is non-updateable like other console technologies.


So... No DX9, but a custom variation similar to DX8.1... Which I suppose would be a fairly major undertaking to deal with.


ImaginaryHuman(Posted 2009) [#8]
So is someone throwing some money at this?


slenkar(Posted 2009) [#9]
blitzmax could be ported to the common language interface?


JoshK(Posted 2009) [#10]
Actually, the way this would probably work is C++ would be used to make a low-level rendering API for both DX and OpenGL, and then BlitzMax would be used to write the rest of the engine. This is the best approach anyways.

I'm looking for venture capital, and the extent that BlitzMax is utilized is something I will be considering. No matter what, I am pretty sure it will be used for tools that only run on computers. If I can save a significant amount of development time and bug-hunting headaches, I would like to use BMX for whatever I can. When I consider the poor quality of so many C++ projects, it is worth looking at.