FAQ
Note: This is not a technical document. It is an FAQ meant to clarify some issues related to the CowBite emulator that come up frequently in e-mail and elsewhere.
Q. CowBite crashes for every game! It didn't do this before, what happened?
Q. How can I get source debugging working?
Q. Why doesn't X work in CowBite?
Q. So why'd you write CowBite in the first place?
Q. Was it before or after you sold your soul to Satan that you decided to promote piracy?
Q. So whose side are you really on? Lamerz or developerz? Eh? Eh??
Q. Is CowBite just a hobby or do you intend to sell it for money someday?
Q. When will my most needed feature, X, be implemented?
Q. I just thought you should know, CowBite won't play my favorite game, Super Lamo Advance.
Q. Who's helping you with this?
Q. Can I help with the coding?
Q. You're releasing the source? When will this be?
Q. Can you send me a private copy of the source? I promise I won't show it to anyone.
Q. Would you like me to send you a copy of Nintendo's official documentation?
Q. Can you give me some physical hardware specs on the cartrige and/or serial port?
Q. How'd you learn to write an emulator?
Q. Why the name "CowBite"? It doesn't have anything to do with the GBA!
Q. Why didn't you reply to my e-mail?
Q. The interface looks cool. What did you use to make it?
Q. CowBite crashes on startup, for every game! It didn't do this before, what happened?
A. Probably I changed the format of cowbite.cfg. I was sloppy in my configuration code and I have made other things a priority over fixing it, so until I do, it is best to remove this file every time you upgrade to a new CowBite.
Q. How can I get source debugging working?
A. Unfortunately CowBite is fairly picky about source debugging. Firstly you should be running gcc with the -gstabs option. Plain old "-g" alone doesn't do it. Second, make sure you have optimiation off (-O0), or gcc may assemble the code in a way that confuses the debugger. Third, open CowBite with the ".elf" file, not the ".gba" file. Also make sure you have no weirdly-named files or directories in your source. Sometimes CowBite has been known to interperete Multiboot .elfs incorrectly (somewhere in the elf data it specifies the executable as residing at 0x01FFFFFC rather than 0x02000000; I don't know why this is but I believe I've worked around it).
Q. Why doesn't X work in CowBite?
A. Probably I didn't implement it. I try to make a note of what isn't implemented in the readme and in the CowBite spec. If I have mislead you go ahead and let me know.
Q. So why'd you write CowBite in the first place?
A. A number of different reasons, the main ones being:
- My MFA project wasn't going so well. Before I finally decided to just make a game, I had wanted to make a short film (most computer animation students do), but getting my ideas approved turned into a bureaucratic fiasco. I needed another, completely unrelated project to keep me going.
- Emulation is fascinating to me
- I thought it would be fun
- I wanted to see if I could do it
Q. Was it before or after you sold your soul to Satan that you decided to promote piracy?
A. I didn't write it because I wanted to promote piracy, that's for sure. To be honest, I was ecstatic just to see it run a 2 kilobyte plasma demo written in assembler. I can't say for certain, but I suspect that a lot of other GBA emu authors feel similarly. Even considering that, Cowbite really isn't the best emulator if your goal is to play pirated games.
Q. So whose side are you really on? Lamerz or developerz? Eh? Eh??
A. When I first had the idea, I wasn't on anybody's side. I was just doing it. Actually the GBA wasn't even out in the states yet. But my end goal in life is to develop games, and it didn't take long to realize that the emulator could either be useful to game developers or hurtful to them. I try to tailor it for the former. I may even add some token features to help prevent piracy, but I suspect this is a lost cause in a world where software gets cracked the day it's released (or earlier).
Q. So is CowBite just a hobby or do you intend to sell it for money someday?
A. It's "just a hobby". A hobby that consumes more time than I should be letting it (I have that thesis project, you know...). I don't intend to ever charge money for it. My feeling is that if I charged money, people would pirate it or just find another emulator to use.
Q. When will my most needed feature, X, be implemented?
A. When I get around to it. One of the hazards of this being a hobby project is that it gets less of a share of my time than other responsibilities.
Q. I just thought you should know, CowBite won't play my favorite game, Super Lamo Advance.
A. It won't play a lot of games. It's not meant to. Unfortunately for developers this is also a measure of its innaccuracy.
Q. Who's helping you with this?
A. I do all of the coding on my own, but there are a number of people that send me helpful info and bug reports on a semi-regular basis. gbcft, Kay, and Robert Gebis deserve special mention in regards to this.
Q. Can I help with the coding?
A. I do appreciate the offer, but no. CowBite is a personal project for me only. At some point, however, I will release the source, and I wouldn't be averse to people sending me code corrections/additions that they have made independently.
Q. You're releasing the source? When will this be?
A. When CowBite is what I think of as "finished" -- when most things are implemented correctly and when I've gotten rid of any unsightly code that I'm ashamed to have written. In other words, not for a while.
Q. Can you send me a private copy of the source? I promise I won't show it to anyone.
A. No.
Q. Would you like me to send you a copy of Nintendo's official documentation?
A. As good as your intentions may be, I really don't want to do anything that would give Nintendo's lawyers a reason to shut down my "operation". Their official website makes it clear how little regard they have for emulator authors. I take it seriously.
Q. Nah, you're just a wimp. They would never find out and you know it.
A. I don't care.
Q. Nosepicker.
A. Boogereater.
Q. Can you give me some physical hardware specs on the cartrige and/or serial port?
A. I don't know much about the physical construction of the hardware, believe it or not. I'm more of a computer programmer than a computer engineer. I do my emulation from the programmer's perspective rather than the architect's perspective.
Q. How'd you learn to write an emulator?
A. I guess the basic ingredients for writing an emulator are -
- Having experience in a programming language (such as C)
- Having a decent knowledge of assembler (such as from a college course in assembler)
- Having some knowledge of computer architecture (a CS architecutre course did it for me)
- Know how to scour the net for technical documentation
If you have these skills, you could probably figure it out on your own. It's also a good idea to look at the source to other emulators (such as snes9x). Finally, Marat Fayzullin has written a nice howto that has a lot of good pointers.
Q. Why the name "CowBite"? It doesn't have anything to do with the GBA!
A. It is all part of my nefarious plan to make thousands of people use software and documentation that has a ridiculous-sounding name.
Q. Why didn't you reply to my e-mail?
A. Because I think you have the cooties and I want you to leave me alone, you boogereater! Also, a lot of times I don't answer mail for a while because I'm waiting until I actually have an answer to give. I also tend not to reply to mails about commercial game compatibility/lack thereof. Other times I am just being an airhead. Take your pick.
Q. The interface looks cool. What did you use to make it?
A. The images were mostly photoshop 6.0. I made the pipes and the furnace geometry in Maya, but these were later heavily modified. I hand drew the logo and then either scanned it, digitally photographed it, or traced it with a wacom (I forget which). The button rollovers are done with a standard windows GDI bit-blit.
GBA and game Boy Advance are registered trademarks of Nintendo.
CowBite is copyright 2002 Thomas Happ
Page Last Updated: God only knows