Gameboy Development on Mac OS X
Based off of 'Tsuru no Ongaeshi,' the Japanese folk story more commonly known as 'The Crane Wife,' this visual novel was made in less than 48 hours for Ludum Dare 24, August 2012, with Ren'py. In 'Inu no Ongaeshi,' you play a lonely freelance writer, if, with your lack of motivation, you can even call yourself that. Mini Harvest - v1.1! (now Mac OS and Linux compatible!) a small simplistic farming game. A Small World Game for Ludum Dare 38. Play in browser.
309
1
357294As I have gone more and more low-level over the past month, I was searching for a platform that is well understood/documented, not too fancy and thus allows me to use it for learning on different topics at once in a fun way. I.e. micro-processors/electrical-engineering, emulators, dev-tools.
Well, I found the old Gameboy to match that category:
- Electrical Engineering: Building own game cartridges/ROMs, ROM-readers/writers and play around with other interfacing possibilities. As it happens, I still have my old Gameboy lying around… somewhere…
- Emulators: Write a simple emulator for the Gameboy's Z80 processor. Compared to others, the instruction of the Z80 is 'quiet' small. Except for the CHIP-8 language, there are not many other processor that are this popular and have an as small instruction set.
- Dev-Tools: Understanding how compiler and linker for this platform work and tinkering with it. As one of the most popular tool-chains (Rednex Gameboy Development System358295) is open-source and a comparably small project, this is hopefully not a month-long endeavor.
And I like doing game-development for fun anyway. With a quiet old and restricted platform like the Gameboy, this is a nice thing to do in with limited time and good results. Building only a simple game for PC or any of the latest Mobile-platforms (iOS, Android) can take month when you also have some sense for art and style. With a four-color 160×144 pixel display, you are so restricted on itself, that doing the graphics yourself is quiet easy; even for someone that is not a great artist. I was surprised what can be achieved on a 14 hour flight. Maybe I will even enter the next Ludum Dare359296 with a Gameboy game.
The first step required to dive into the world of Gameboy development is to set up the development tools, emulator and some more useful tools like tile-editors on your Mac. The main purpose of this post is to describe the steps I have taken. And as it was more then just click-click-finish at some stages, I hope this will also be helpful to others.
RGBDS360297 seems to be a popular set of developer tools for the original Gameboy. It contains four command-line tool for which two are the assembler and the linker. Unfortunately, there is no binary available for Mac OS. Fortunately, it is open source. With minor modifications I was able to compile the tools for Mac OS X Lion. You can find the compiled binaries (rgbds.tar361298) and the Makefile I used in my github repository362299.
Next thing I needed for development was an emulator with an embeded deugger. Who writes a working game with closed eyes, loads it onto a gameboy cartidge and it works? Well, at least not me.
The emulators I found to be the best matches are no$gmb363300 and bgb364301. Both are similar feature wise; bgb seems to have been implemented based on no$gmb, so both interfaces look alike and also shortcuts in the debugger are mostly the same. bgb is still actively developed and you can also get tips by the developer in the EFNet #gbdev IRC channel.
Both emulators are for windows originally and they are not open source. So, using Wine was the only real option. If you don't have Wine yet installed, you might want to download MacPorts365302. It is a package manager for Mac OS and also allows to easily install said software. As you also need to have the X11 window server installed for Wine to work properly, best is to follow these instructions366303 for the whole installation.
The Installation of wine itself is straightforward: After the installing MacPorts type 'sudo port' in the Terminal.app to start the MacPorts package manager. Supply your user's password and the prompt of the package manager should appear. Type 'install wine' and do something else for the next half hour. This will download all dependencies (a lot) and install Wine on your system. I got an error like
while installing Wine because it seemed to interfere with other packages I have already had installed. If you also encounter this problem, follow the workaround at the bottom of this bug-ticket367304:
Once you have installed wine successfully, you can start the emulator. I was not able to get bgb running yet but no$gmb works just fine. Get the 32-bit Windows version from here368305 and start it with 'wine NO$GMB.EXE' from the commandline.
As said before, a quiet restricted platform like the Gameboy allows also a developer without a hand for art to create nice games. Still, you might want some tools to assist in the process. The Gameboy Tile Designer369306 and the Gameboy Map Builder370307 are two such tools. Easily generate tiles and maps and directly export them into an assembler-file containing the required data to directly work with the tiles/maps. These tools are again windows-only but work just fine with wine.
Unfortunately, as of this writing, the host for these tools seems to be shutting down its operation completely, so I hope the owner of these tools will find another host soon.
That's about what you need if you want to get into Gameboy development and have some retro-fun. To point you in the right direction for getting started I can recommend the notes of the Wichita State University's 2008 Z80 Assembler Programming lecture371308. Luckily, the exact same tools we just installed on our system are used 🙂
So, I think I may have mentioned that I love the classic RPG Traveller. I think I also mentioned that long ago, I wrote a very simple RPG to play with my daughters that used one of Traveller‘s rules. Because I have come to the conclusion that Traveller‘s basic task resolution mechanic is perfect.
So what is the mechanic? You have skill ratings for whatever your character can do. Skill ratings range from skill-0 (newbie) to skill-4 (seasoned veteran). In order to find out if you succeed at doing something, you throw two six-sided dice, add your skill rating, add any modifiers the GM assigns (for difficulty, etc) and try to hit 8 or higher. This mechanic was simply called 8+.
But…that rule was only used for combat skills. For reasons I cannot fathom, the designers of Classic Traveller did not use that lovely, lovely 8+ mechanic for general skill checks. Instead, each skill had its own mechanics, resulting in a horrible mish-mash. How bad was it? Allow me to quote from Classic Traveller Book 1, Characters & Combat, 1981 edition:
Gambling: The individual is well informed on games of chance, and wise in their play. He or she has an advantage over non-experts, and is generally capable of winning when engaged in such games. Gambling, however, should not be confused with general risk-taking.
Organized games (as at casinos) allow bets of up to Cr5000, and require a throw of 9+ to win. Private games allow bets ranging from Cr50 to Cr5000, and require a throw of 8+ to win. Gambling skill allows a DM of +1 per level, but the house will always win on a throw of 2 exactly. Games may be crooked (throw 10+ to be dishonest) in which case the referee will stack the odds against the players. Gambling-3 or better will usually detect crooked games (throw 7+ to detect). Gambling-4 or better may be suspected of cheating and ejected (or worse) due to the finesse of the skill involved (throw 9+ to be suspected; DM -1 per level over 4). Characters may elect to use a lower expertise level in some cases in order to avoid detection of true skill level. Referee: Characters' die rolls should not be divulged when gambling; instead merely inform the individual of wins and losses. This will serve to conceal any manipulation of the throws.
Most of the other skills aren't much better; it's all 9+ this and 3- that. It actually caused me physical pain to read the original Classic Traveller rulebooks and see them get this so wrong. Why not just use 8+ everywhere? It made no sense to me.
So, ever since, all us fans have been waiting for a 'fixed' version of Classic Traveller.
Then MegaTraveller came out. Its designers wanted to more thoroughly integrate stats into the game. In Classic Traveller, stats almost didn't matter once your character was created. It was very rare that any stat other than Education or Social Status was referenced in gameplay, and there were no mechanics for making a check against a stat as opposed to one against a skill.
So MegaTraveller introduced the idea of stat bonuses. A character's stat bonus for any stat was stat/5, round down. This means that a below-average stat of 5 gives characters a permanent +1 bonus on any success roll that pertains to that stat – in addition to any skill that also applied. This had the result of inflating the success rate of rolls, prompting MegaTraveller to abandon the simple 8+ mechanic in favor of a system of four values, for Simple, Routine, Difficult and Formidable tasks.
Now, MegaTraveller is a good game. Its task resolution system is highly regarded because it provides very clear details on what modifications to success rolls mean and how they should be calculated. But not only does MegaTraveller not fix Classic Traveller, it isn't even really compatible with it.
Then Traveller had kind of a dark age. Traveller: The New Era switched up the mechanics and made drastic changes to the Third Imperium setting that few fans seemed to like. Marc Miller, the original designer, tried to give us the 'fixed Classic Traveller' with Marc Miller's Traveller, but incomplete rules and a host of production problems prevented the product from clicking with players. Steve Jackson Games'GURPS Traveller married the Third Imperium setting to GURPS' realistic rules to great effect, producing some very good sourcebooks. But fans were still wanting a new version of the old rules.
Then things started getting better. In 2008, Mongoose Publishing came on the scene and produced a frankly excellent set of Traveller rules. Mongoose Traveller is well-regarded, but it leans towards the MegaTraveller rules, with characteristic modifiers still added to skills. It's not as bad as MegaTraveller, since even getting a +1 modifier requires an above-average characteristic of 9, but it's still an inflation of the original resolution curve.
Ludum Dare 38 - Contamination Mac Os Pro
Enter, at last, Cepheus Light, from Stellagama Publishing. Cepheus Light is Classic Traveller all the way, with several improvements. While there are task difficulty levels like in MegaTraveller, they are compatible with Classic Traveller‘s success distribution, and the majority of rolls during play will still be 8+ rolls. All skills use the same mechanics. While stats do have bonuses, they are never combined with skills, instead being used for things more like saving throws. And the system still only requires two six-sided dice.
Ludum Dare 22
And that's that. Cepheus Light completely fixes Classic Traveller Metamaze mac os. and I love it. Why? Why is a coherent ruleset based on the 8+ mechanic so important to me?
- Easy to remember. If you understand the mechanic and have done any roleplaying, you'll probably remember the mechanic forever, even if you never play Traveller in any form.
- Easily obtainable hardware. Polyhedral dice are awesome and canbeverypretty, but if someone is just getting into the hobby they can seem like a barrier to entry. 'I'll try it when I get some dice' can easily turn into 'I never got around to trying it'. With this mechanic, all the dice you need can be filched from that Monopoly set in the closet.
The first step required to dive into the world of Gameboy development is to set up the development tools, emulator and some more useful tools like tile-editors on your Mac. The main purpose of this post is to describe the steps I have taken. And as it was more then just click-click-finish at some stages, I hope this will also be helpful to others.
RGBDS360297 seems to be a popular set of developer tools for the original Gameboy. It contains four command-line tool for which two are the assembler and the linker. Unfortunately, there is no binary available for Mac OS. Fortunately, it is open source. With minor modifications I was able to compile the tools for Mac OS X Lion. You can find the compiled binaries (rgbds.tar361298) and the Makefile I used in my github repository362299.
Next thing I needed for development was an emulator with an embeded deugger. Who writes a working game with closed eyes, loads it onto a gameboy cartidge and it works? Well, at least not me.
The emulators I found to be the best matches are no$gmb363300 and bgb364301. Both are similar feature wise; bgb seems to have been implemented based on no$gmb, so both interfaces look alike and also shortcuts in the debugger are mostly the same. bgb is still actively developed and you can also get tips by the developer in the EFNet #gbdev IRC channel.
Both emulators are for windows originally and they are not open source. So, using Wine was the only real option. If you don't have Wine yet installed, you might want to download MacPorts365302. It is a package manager for Mac OS and also allows to easily install said software. As you also need to have the X11 window server installed for Wine to work properly, best is to follow these instructions366303 for the whole installation.
The Installation of wine itself is straightforward: After the installing MacPorts type 'sudo port' in the Terminal.app to start the MacPorts package manager. Supply your user's password and the prompt of the package manager should appear. Type 'install wine' and do something else for the next half hour. This will download all dependencies (a lot) and install Wine on your system. I got an error like
while installing Wine because it seemed to interfere with other packages I have already had installed. If you also encounter this problem, follow the workaround at the bottom of this bug-ticket367304:
Once you have installed wine successfully, you can start the emulator. I was not able to get bgb running yet but no$gmb works just fine. Get the 32-bit Windows version from here368305 and start it with 'wine NO$GMB.EXE' from the commandline.
As said before, a quiet restricted platform like the Gameboy allows also a developer without a hand for art to create nice games. Still, you might want some tools to assist in the process. The Gameboy Tile Designer369306 and the Gameboy Map Builder370307 are two such tools. Easily generate tiles and maps and directly export them into an assembler-file containing the required data to directly work with the tiles/maps. These tools are again windows-only but work just fine with wine.
Unfortunately, as of this writing, the host for these tools seems to be shutting down its operation completely, so I hope the owner of these tools will find another host soon.
That's about what you need if you want to get into Gameboy development and have some retro-fun. To point you in the right direction for getting started I can recommend the notes of the Wichita State University's 2008 Z80 Assembler Programming lecture371308. Luckily, the exact same tools we just installed on our system are used 🙂
So, I think I may have mentioned that I love the classic RPG Traveller. I think I also mentioned that long ago, I wrote a very simple RPG to play with my daughters that used one of Traveller‘s rules. Because I have come to the conclusion that Traveller‘s basic task resolution mechanic is perfect.
So what is the mechanic? You have skill ratings for whatever your character can do. Skill ratings range from skill-0 (newbie) to skill-4 (seasoned veteran). In order to find out if you succeed at doing something, you throw two six-sided dice, add your skill rating, add any modifiers the GM assigns (for difficulty, etc) and try to hit 8 or higher. This mechanic was simply called 8+.
But…that rule was only used for combat skills. For reasons I cannot fathom, the designers of Classic Traveller did not use that lovely, lovely 8+ mechanic for general skill checks. Instead, each skill had its own mechanics, resulting in a horrible mish-mash. How bad was it? Allow me to quote from Classic Traveller Book 1, Characters & Combat, 1981 edition:
Gambling: The individual is well informed on games of chance, and wise in their play. He or she has an advantage over non-experts, and is generally capable of winning when engaged in such games. Gambling, however, should not be confused with general risk-taking.
Organized games (as at casinos) allow bets of up to Cr5000, and require a throw of 9+ to win. Private games allow bets ranging from Cr50 to Cr5000, and require a throw of 8+ to win. Gambling skill allows a DM of +1 per level, but the house will always win on a throw of 2 exactly. Games may be crooked (throw 10+ to be dishonest) in which case the referee will stack the odds against the players. Gambling-3 or better will usually detect crooked games (throw 7+ to detect). Gambling-4 or better may be suspected of cheating and ejected (or worse) due to the finesse of the skill involved (throw 9+ to be suspected; DM -1 per level over 4). Characters may elect to use a lower expertise level in some cases in order to avoid detection of true skill level. Referee: Characters' die rolls should not be divulged when gambling; instead merely inform the individual of wins and losses. This will serve to conceal any manipulation of the throws.
Most of the other skills aren't much better; it's all 9+ this and 3- that. It actually caused me physical pain to read the original Classic Traveller rulebooks and see them get this so wrong. Why not just use 8+ everywhere? It made no sense to me.
So, ever since, all us fans have been waiting for a 'fixed' version of Classic Traveller.
Then MegaTraveller came out. Its designers wanted to more thoroughly integrate stats into the game. In Classic Traveller, stats almost didn't matter once your character was created. It was very rare that any stat other than Education or Social Status was referenced in gameplay, and there were no mechanics for making a check against a stat as opposed to one against a skill.
So MegaTraveller introduced the idea of stat bonuses. A character's stat bonus for any stat was stat/5, round down. This means that a below-average stat of 5 gives characters a permanent +1 bonus on any success roll that pertains to that stat – in addition to any skill that also applied. This had the result of inflating the success rate of rolls, prompting MegaTraveller to abandon the simple 8+ mechanic in favor of a system of four values, for Simple, Routine, Difficult and Formidable tasks.
Now, MegaTraveller is a good game. Its task resolution system is highly regarded because it provides very clear details on what modifications to success rolls mean and how they should be calculated. But not only does MegaTraveller not fix Classic Traveller, it isn't even really compatible with it.
Then Traveller had kind of a dark age. Traveller: The New Era switched up the mechanics and made drastic changes to the Third Imperium setting that few fans seemed to like. Marc Miller, the original designer, tried to give us the 'fixed Classic Traveller' with Marc Miller's Traveller, but incomplete rules and a host of production problems prevented the product from clicking with players. Steve Jackson Games'GURPS Traveller married the Third Imperium setting to GURPS' realistic rules to great effect, producing some very good sourcebooks. But fans were still wanting a new version of the old rules.
Then things started getting better. In 2008, Mongoose Publishing came on the scene and produced a frankly excellent set of Traveller rules. Mongoose Traveller is well-regarded, but it leans towards the MegaTraveller rules, with characteristic modifiers still added to skills. It's not as bad as MegaTraveller, since even getting a +1 modifier requires an above-average characteristic of 9, but it's still an inflation of the original resolution curve.
Ludum Dare 38 - Contamination Mac Os Pro
Enter, at last, Cepheus Light, from Stellagama Publishing. Cepheus Light is Classic Traveller all the way, with several improvements. While there are task difficulty levels like in MegaTraveller, they are compatible with Classic Traveller‘s success distribution, and the majority of rolls during play will still be 8+ rolls. All skills use the same mechanics. While stats do have bonuses, they are never combined with skills, instead being used for things more like saving throws. And the system still only requires two six-sided dice.
Ludum Dare 22
And that's that. Cepheus Light completely fixes Classic Traveller Metamaze mac os. and I love it. Why? Why is a coherent ruleset based on the 8+ mechanic so important to me?
- Easy to remember. If you understand the mechanic and have done any roleplaying, you'll probably remember the mechanic forever, even if you never play Traveller in any form.
- Easily obtainable hardware. Polyhedral dice are awesome and canbeverypretty, but if someone is just getting into the hobby they can seem like a barrier to entry. 'I'll try it when I get some dice' can easily turn into 'I never got around to trying it'. With this mechanic, all the dice you need can be filched from that Monopoly set in the closet.
- You can do the math in your head. The low die rolls and skill modifiers mean that the totals rarely come out to above 20.
- Players always want to roll high. Some systems use low rolls for some parts of the system like task resolution and saves, but high rolls for things like damage and reactions. It can be confusing, especially for new players. Cepheus Light makes it simple – you always want to roll high.
Does it have any drawbacks? Of course it does; nothing is perfect. (Yes, I know, I said it was perfect above. I may have exaggerated slightly for humorous effect.) Cemetery secretary mac os.
Ludum Dare 48
The main drawback is that the numbers are very 'crunchy'. The use of 2d6 as the base roll means that success percentages jump radically as players gain their first levels of skill. Going from skill-0 to skill-1 raises your chance to succeed by almost 17%, and while the jumps get smaller as you increase skill, they are still significant. Because of this, games based off of these mechanics tend to have very slow character growth, which can seem unsatisfying to players familiar with other systems. Still, good GMing can mitigate this and I feel all the benefits outweigh this drawback.
Well, you read to the bottom of this article, so you probably have an interest in Traveller and/or Cepheus Light and you deserve a reward. While the main rulebook for Cepheus Light has a suggested price of $10, you can download a free version called Cepheus Faster Than Light, which covers the basic task rules, character creation and combat. It's a great way to find out if you're interested in the main game and makes a great handout for new players if you're GMing a game.
Ludum Dare Prototype
And there's already Cepheus Modern, a Cepheus Light spinoff set in the modern age…