I finally did it! After spending way
too much time re-learning assembly, learning the GNU assembler and linking tools and their quirks, and pulling my hair out while googling random error messages, I finally managed to compile my first 3DO program!
Of course, it's nothing very special. In fact, you've all seen it before. It's the "sonic_test" demo from http://thdo-homebrew.narod.ru
it was an important first step, and one that opens the doors to more interesting work.
So, my intention with this thread is to document my work and share technical information, as well as create a home here at 3DO Zone for technical homebrew discussion. I'll keep this first post updated with new information as I learn it.The Basics
- The CPU is a 32-bit ARM60 running in big-endian mode
- 3 MB of RAM starting at 0x0
- 1 MB of Video RAM starting at address 0x200000, directly accessible by CPU
- The frame buffer for the video mode that initializes at console boot starts at address 0x2c0000
There's lots more info out there, but this is all that I've played with so far. So, that means it's all that I really understand.
As I explore and learn more, I'll add more to the list. Basically, I'm just documenting the stuff I've actually worked with!Some Homebrew ResourcesHow To Get Started
- Download and install Cygwin to do development from Windows... Cygwin is a Linux emulation layer for Windows. Essentially, it lets you run a Linux environment on top of your Windows filesystem. I recommend you choose to include Nano in your install. It's a simple, easy to use text editor.
- Download and install GNUARM for your development environment (probably Cygwin)... This is a set of the GNU GCC tools compiled for ARM development. Install GNUARM with Big-Endian support and allow it to add itself to your path.
- Once GNUARM is installed, copy crt0.o and libc.a from C:\Program Files\GNUARM\arm-elf\lib\be to C:\Program Files\GNUARM\arm-elf\lib. If you don't do this, you'll get compilation errors!
How to compile and run your first 3DO demo on FreeDO!
I'm going to give this a go.