Unofficial GBA SDK Available for Free
BlackGriffen writes "Anyone who is interested in making their own Gameboy Advance ROMs can go get an unofficial GBA SDK . With this and a flash ROM kit from someplace like lan-kwei.com, we could see a flourishing indie game making community. Available for Linux and Mac OS X only (for now, it's open source)."
I hope we can see more open-source community support for Mac OS X in the future. It's projects like this that help to solidify its position as not only a great consumer OS, but as a great workhorse and development OS as well.
While this is Good Thing (TM) and will encourage some interesting games for the handheld system, I am a little worried about who might try and use this to convert their favorite SNES ROMS (Chrono Trigger, FFIV (II US), Super Metroid, etc) to their own ROM kit and play it.
Ah, screw it - I want to see this happen, just so I have a reason to take the train into work and play Super Mario RPG.
52 Weeks, 52 Religions with John Hummel
I can start those rumors about someone porting Mario 64 to it! With any luck, it'll be as big as the DooM 2600 project. ;o)
[PowerPoint] is a tool for capitalist presentation
NES emu
Spectrum emu
Sega Master System Emu
I was planning on trying to develop something on my friends PS2 when he got the Linux kit. But since I actually own a GBA, this is a much more worthy project. I want to see someone do some good network games...I'm going to try and create something similar to Strategic Commander (PalmOS game from www.zindaware.com) that can actually communicate over the cables...maybe even allow disconnects and continuations. Wouldnt that be fun :-)
http://thechubbyferret.net - Ferret pictures and informative links.
DOOM is already available on the GBA.
Descent is probably beyond the GBA's capabilities, since it uses arbitrarily-angled perspective-correct textured polygons, which are a fair bit harder to render on a low-end CPU (the GBA has a 16MHz ARM7 CPU).
I guess you could just flat-shade the whole thing, but it wouldn't look anywhere near as good.
This sort of stuff has been around for a while.
here is one dev kit
here is some more stuff
that should give you plenty of links to play with.
The link in the article refers to the MacOS X port. Check out this for the "original" Unofficial Gameboy Advance SDK. It has been available for about a year or so. It has always worked on Win32 platforms too, so the submitter did a really bad job. The compiler in the SDK is actually GCC.
Check out www.gbadev.org and www.devrs.com/gba/ for some other GBA development stuff. (And while you're at it, check out my own GBA-page for some of the demos i've written for the GBA :)
This is not really news. Jason Wilkins, the creator if the Unofficial GBA DevKit, released it to the public at least a year ago. Also, there is a Win32 version (it came first).
This DevKit is basically just a port of GCC to the ARM with some AGB specific startup code for interrupt handling and whatnot. The official DevKit from Nintendo is the same thing (although using an older version of GCC), but you get some extra hardware and software also. Having done AGB development for a while, it is nice to have alternatives like this unofficial devkit available, but it is nothing revolutionary. The impressive thing is actually how good the emulators have gotten recently, they should begin to allow even official developers to rely less on the expensive Nintendo hardware for normal day-to-day development.
"Even when I say nothing it's a beautiful use of negative space." - Indelible, "Fire In Which You Burn"
I think a better idea is to keep linux away from it, stop recycling old games with emulators, and make some new worthwhile 2d games. I'm sick of the navigate a 3-D space to collect imiginary trinkets games such as Jet Set Radio, and Luigi's Mansion. Emulators are fun because their games have story and fun, not just a massive 3-D space demo.
Some of the better games were the 2D scrollers such as Double Dragon II or Super Mario 3. They at least had replay value.
Who says you have to program only games?
I used a homebrew SDK to design a digital voltage meter that plugged into a gameboy/gameboy colour when I was in college - It measured Vrms better than some commercial products we tested against.
I'd like to do a PDA setup - maybe I can hack a keyboard together to plug into my gba - someone did it for the gameboy - link - look about halfway down the page.
Besides, the GBA is a good medium to develop games for - you don't need a team of 3d modellers and designers and whatnot - you can do with a designer/programmer, artist, and musician.
Plus it's just fun to hack around with console games!
Robots are everywhere, and they eat old people's medicine for fuel.
At about $70 (Game Boy Advanced, Amazon price), you can create custom games, ports of other things, etc. This sounds to me like a much more practical thing to purchase to play around with the the PS2, which is in at least the $500 range to start hacking your own stuff for.
It would be interesting to know how many people will create practical, non-game applications. I know there are many non-game attachments, like a TV tuner and digital camera available for the unit.
I may actually get one of these myself to hack around with. The "other half" says I shouldn't waste money on the PS2, cuz I will may write one application, then never touch the $500 investment again. Same thing with the Sharp PDA. $70 is much more reasonable for this type of hobby.
-Pete
Soccer Goal Plans
>Actually, how low-level is the API?
well if you realyl want to consider assembler an API, that is your answer. ARM flavored assmebler.
This would totally rule.. I'd love to see Nethack for the GB. I'm currently working on a Palm version, and of course, it'll work on Windows CE, but honestly, wouldn't Nethack be an awesome alternative to bejeweled on the bus?
The Dopester
"Yes, I'm a Karma Whore, but I'm doing it to pay my way through school."
I think that companies like Nintendo and Sony and such should sell stipped down dev kits for like, say $50... including software you'd need and maybe a transfer cable.
No disrespect to the great underground game hackers out there, but I don't think there is much of a risk of an uber fantastic game like Gran Tourismo 3 getting put out. If there is, maybe a deal can be struck to distribute the game to the masses. The gaming industry itself could see what's being turned out, and maybe find some new prospective talent.
I also think that the console manufacturers should make and sell (as well as install for a fee) mod chips to play IMPORT games (not burned games) because then they can make more $$$ selling the import games (as well as maybe an import fee, who knows)
There are only 10 kinds of people in this world... those who understand binary and those who don't
Sorry - should have clarified - the ones I listed are all emulators for the GBA. You can burn a flash cart containing 100's of old videogame classics, and play them on your GBA.
HAM
The SGADE
The original Unofficial GameBoy Advance Software Development Kit
UK users should buy their kit (Flash ROM kit and lighting kit from Craig Rothwell -- reliable feller.
http://www.blitzbasic.com/
Graphics3D 640, 480
I've heard U.S. Customs is seizing things like this siting the DMCA and that it MIGHT be used for piracy.
--Won't that be grand? Computers and the programs will start thinking and the people will stop. - Dr. Walter Gibbs
The ability to program for the GameBoy Advance is *not* Linx or Mac only. The biggest group of developers centers around a partial build of GCC called "DevKit Advance", which has pre-made setups for Win32 and Linux. There are smaller communities each around "HAM", "SGADE", and "GCCGBA" - all Win32 prebuilt only. If you've ever built your own GCC, however, you can build to GBA, and that means you can build from damn near *anywhere*.
Good places to go to learn:
Compilers:
Some interesting stuff that's been done:
Miscellaneous news sites with links to code and tools:
Anyway, this is by no means an exhaustive list, but it's a start, and you can get to most of the good ones from there by linkage. If anyone needs a hand, my email address at slash should work.
StoneCyph on EfNet, johnisaheadcase / Fatty diZilla on mailing list
StoneCypher is Full of BS
If your GB compiler is the one I think it is (the one I used, the one that comes with that IDE), then I don't think it does support standard ANSI C - it's bitched at me for not putting a \n after my closing brace before now - that's a K&R-ism unless I'm gravely mistaken...
:-)
However, the GBA compiler, like the N64 one, is a GCC port, so as always you can get away with murder
The idsoftware screenshots are really lame. Check out the better shots at Gamespot. There's plenty of different heights and I don't recall Doom having a very engaging lighting model in the first place.
I have seen the future, and it is inconvenient.
But a devkit would allow you to work on a SNES emulator wouldn't it?
The Super NES has two processors connected by a slow bus: a 3.6 MHz 65C816 and a 2 MHz SPC700 (both relatives of the 6502). The GBA barely manages to emulate the NES with a 1.8 MHz 6502 processor. Besides, most games actually use all 224 scanlines of the display, not the 160 the GBA gives you.
If you want Genesis or Super NES games on GBA, either port them yourself using Devkit Advance (creating new levels and characters to circumvent copyright law) or petition the original publisher.
Will I retire or break 10K?
SNES games were written in ASM, GBA games are mostly written in C.
The inner loops of the graphics transformation and sound mixing in most GBA games are written in ARM assembly language and stored in a special fast RAM on the same die as the CPU.
Will I retire or break 10K?
have you seen the graphics on the GBA? It could easily handle almost any SNES game natively (screen size issues aside, that might cause problems with some games). I guess it would be like trying to port an application without access to the original source code.
BlackGriffen
maybe we should wait to see if a single game even gets created.
Here's such a game: Tetanus On Drugs. It's like playing Nintendo's The New Tetris® on LSD, except without the DEA breathing down your neck.
Will I retire or break 10K?
Actually, how low-level is the API? Any chance someone could get Linux running on one of these babies?"The API" isn't. HAM has an engine, SGADE has an engine, there are others (I don't use them), and there are some commercial ones. But, here's the thing: the hardware does a lot of stuff. Sprites and backgrounds are supported in hardware, and do scaling and blending stuff, etc. It's just register tweakage. You don't really need an API.
Big N does send an API of some sort, but I'm not a licensed developer, so I know dick about it. I'm told it's not that much of a difference - mostly just wrapper functions.
There are other compilers which can target the platform. Commercial people often use the ARM ADS or SDT. Other tools, like the Metaware toolchain and the Green Hills Optimizing Compiler (it's part of the name, not a parroted description, settle down) are commonly used because of their purported performance. Far from being an expert myself, I'll just point you at the Dhrystone that David Welch graciously presented to the community.
Homebrew developers thrive on being told it can't be done. The more you tell them they can't do commercial stuff, the more you're going to see commercial stuff done. That's what got me started.
This is our world now...the world of the electron and the switch, the beauty of the baud. Pre-chewed pieces of pap! And shouldn't be teaching anyway!!@!3T1!! r00l!
cough Sorry. Old habits die hard.
StoneCypher is Full of BS
I played one or two ray-casted video games on my TI-85 and TI-86 calculators. These had, I think, 6MHz Zilog Z80 microprocessors. These are old processors from the late '70s or early '80s, and they don't have a lot of registers, so complex stuff runs kind of slow on them. They also don't know how to divide, so you have to do that in code, and naturally they didn't have numeric coprocessors to make up for that deficiency.
The TI-85 had about 24K available RAM, and the '86 had something like 60K available RAM.
Considering the claustrophobic amount of RAM and CPU power, especially the limited number of registers (and the small width of them), and the lack of ability to do division or anything floating-point in the hardware, these ray-casted games ran fairly well.
Ray-casting is very different from *real* 3D, however. Real 3D involves things like rotating and translating potentially thousands of nodes, culling unseen polygons, searching large binary space partition arrays (BSPs), calculating whether or not (and where) to display objects not in the BSP (like health vials and other players), etc. And all of the above has to be done for every single frame.
Raycasting is loads easier. You cast out a ray for every pixel that your viewport is wide. If the ray collides with an object on a 2-D map, the engine grabs a vertical slice from a texture map, scales it according to distance, and drops the results into the framebuffer. If the engine supports transparent pixels and any were copied, the ray continues. Otherwise it's on to the next column.
There is some other work involved, such as drawing sprites and ammo/health/etc. bars. And there are a few other tricks, such as having variable-height floors and ceilings, like in Doom. Raycasting is very fast compared to real 3D, since there is a lot less floating-point math (and math in general) involved. However, you lose flexibility in order to gain speed. In Doom, you could only have one place for the player to stand at any grid location, so you couldn't have one room above another, or a bridge that could be gone over and also under. It is also tricky to get raycasting engines to do "looking up and down" without it looking distorted, so in most raycasted games, the player always looked straight forward.
If my old TI-85 with 32K of RAM and a 6MHz Z80 can handle a raycasting engine, then so can a GBA with 256K of RAM and a modern ARM processor with a lot more registers and almost 3x the clock speed. (Not to mention DMAs and hardware sprites and layers!)
Finally, the GBA has scaling and rotation, and the ability to draw primitive 3-D fields... all in hardware.
If texture usage is kept VERY conservative, it is reasonable to believe that a ray-casting engine with texture-mapping capabilities is reasonable.
What would be even more reasonable would be to write a ray-casting engine that didn't bother with textures at all, using solid colors instead. You could get some reasonable framerate out of a game like that, and it would still be fun to play. You might even be able to get away with some "dirty" shading.
I have also seen GBA ROMs containing "real" 3-D engines, but the only things in them were objects in space. This is reasonable for a 3-D version of Asteroids, or something like Wing Commander.
The 6502 is GB-compatible.
NO. The 6502 architecture (used in the NES and Super NES) and the Sharp-Z80 architecture (used in the Game Boy and Game Boy Color) are mutually incompatible. Otherwise, the Wide Boy (play Game Boy games on the Famicom, the Japanese NES) wouldn't have been so d*mn expensive.
That is Infinitely more powerful than a 65C816. The GBA runs laps around the SNES.
I have a 75 MHz Mac and a 333 MHz Acer laptop, and the laptop runs laps around the Mac. However, I don't think Mac software would run in real time on the laptop. There is a LOT of overhead involved in emulation of binary code for a foreign processor. It's not like wine, which is just a PE loader and a re-implementation of the Windows DLLS. It's not like vmware, which runs the target OS on the native processor and emulates the rest of the motherboard. You actually have to interpret every single instruction.
Have you ever played a GBA?
Yes. I've developed for the GBA, and I know that its CPU is not fast enough to emulate the whole Super NES chipset (65C816 Plus, Super PPU, SPC700, DSP, and Super FX) in real time. In general, a port of a Super NES game to the GBA is straightforward (except for the smaller screen size, the lack of A and X buttons, the lack of a mouse, light gun, or other pointing device, and the completely different multiplayer paradigm), but it does require access to the original trade-secret source code. You can't just prepend SuperNESOnGBA.bin to the .smc file as you can with NES games.
Will I retire or break 10K?
I used to be a retro gamer only, till I tried out Tony Hawk Pro Skater on a friend's Playstation.
Pro Skater is one of the most amazing games I've ever played. I've clocked in literally hundreds of hours on the series, and even got Pro Skater 3 to say "Game Complete" after beating it (no cheats) with all 25 characters. I'm currently trying to beat THPS2 again, but on my dreamcast this time (different bonuses than the N64).
My Point: Tony Hawk Pro Skater convinced me that spending time with 3-D games was worthwhile.
For those who like RPGs/deep story games, the next gen consoles are perfect: Skies of Arcadia, Final Fantasy, etc... those are fun, though not my favorites.
But the thing is that there is a lot of AWFUL games out there and a lot of games that just look cool at first and have no replay value.
I am very sad to see 2D games getting more and more ignored, but when stuff like Ikaruga, Capcom vs SNK 2, and Castlevania GBA are still being made, there is at least some hope. I think some development team is going to make a mindblowing 2D game one of these days, with twice as much resolution and animation frames as anything done in the past and it will bring 2d games mainstream appeal again.
The 65c816 was more than a 6502 on roids. It was a fully functional 16bit cpu
The 65c816, used in the Apple IIGS computer and Super NES game console, was a 16-bit processor with an 8-bit data bus and only three integer registers (A, X, and Y).
at least as capable as some low end 32bit cpu's
The Motorola 68000, used in the Sega Genesis and SNK Neo-Geo game consoles and the original Apple Macintosh computer, was a 32-bit processor with a 16-bit data bus. So was the Intel 386SX processor, used in some PC clones.
Without looking at the specs, the GBA is certainly more powerful than the SNES
After becoming intimately familiar with the specs, I'd say twice as powerful overall, or about as powerful as the Super NES with Super FX.
but we're not talking orders of magnitudes.
Correct. In general, you need at least an order of magnitude speed difference to emulate a video game console. The 16 MHz ARM7TDMI in the GBA just barely squeezes by when emulating a 1.8 MHz 6502 and the rest of the original NES chipset.
Will I retire or break 10K?
Descent is probably beyond the GBA's capabilities, since it uses arbitrarily-angled perspective-correct textured polygons, which are a fair bit harder to render on a low-end CPU (the GBA has a 16MHz ARM7 CPU).
You should see some of the stuff that's going on. There are a number of fully textured 3D engines out there, one of which actually uses Descent levels as its examples! (I linked to another in my previous post which uses the quake level 1) A good example is the Raylight [raylight.it] engine, though there are probably a dozen that I've seen (and a few proprietary, one of which I'm about halfway done writing
None of these engines do true perspective correct texturing. And yes, I'm fairly aware of the work that's going on out there - I am the author of FooN, and have also written a bunch of 3d engines for the GBA. My point was that, while DOOM/GBA is a more-or-less exact replica of the PC version, Descent/GBA is not going to look anywhere near as cool as the original.
Sorry - should have clarified - the ones I listed are all emulators for the GBA.
Sorry, but not even remotely close. You didn't even get the popular ones. There's a pretty decent list here [zophar.net], at Zophar's Domain (a pretty good dev site)
Read. Comprehend. Post.
"The ones I listed are all emulators for the GBA". Not "These are all the emulators for the GBA".
In other words, the emulators I listed are all emulators that run on the GBA, and emulate other machines.
Another thing - you mistakenly state that the GBA has a Z-buffer. WTF? As someone who claims to be developing a 3D engine for the GBA, you must be aware that the GBA most certainly doesn't have a Z buffer. It doesn't even have any polygon rendering hardware.
Maybe not but games aren't the only software that will run on the GBA. Some of the best Palm software is open source: Weasel. Plucker, Diddle, Keyring, etc. Gameboy (the first) was popular with electronics hobbyists because it was so easy to hack and program. I can see the same thing happening all over again with GBA. A 16MHz ARM and a colour LCD all running off batteries is nothing to sneer at.
A couple of other things:
Yes, a linux distro would fit
Since RAM is limited to 256K(slow) + 32K(fast), it's unlikely you're going to fit a Linux distro that can do anything meaningful. Bear in mind that the ARM7 does not have a MMU, so you'd be limited to uCLinux or something of that ilk.
Yes. In fact, there's a port of an emulator which runs NES binaries
It's not a port. It was written from scratch.