Discussion about software development for the old-school Gameboys, ranging from the "Gray brick" to Gameboy Color
(Launched in 2008)
You are not logged in.
This forum seems a bit dead, but I joined up anyway. I've been coding for the Game Boy for about a week now. I'm using C (as opposed to assembly). I've decided to write a Game Boy game called "Frank the Fruit Fly." Right now all I have done is the title screen. I am trying to teach myself how to do this since the only experience I have with C is for Virtual Boy programming. Anyway, if you'd like, you can check out my updates at www.atari2600land.com/gameboy/stupid.html where I hope to write non-stupid Game Boy games, but since I am a beginner, well, you know. Here you can download the latest version as well as the code. I am using BGB for testing, but progress on this game is stalled for a bit since I'm waiting for a GB Everdrive to come in the mail. I just ordered it, so it will probably take a while to reach the States where I am. Frank the Fruit Fly will be an exploring game where you go around a house. Your main goal is to get out of the house, but there are several rooms (levels) to go through until you find your way outside (where all fruit flies should be.) Let me know how I'm doing with this game and tell me if I can do anything better with the code I have so far.
Offline
Great start! I look forward to following your progress and playing!
Offline
I got my Everdrive GB in the mail today and am happy to say it works on real hardware. Updated the site with the latest ROM. Press Start on the title screen to go to world 1: the bathroom. This is all I've done so far, so Frank can't move or anything. Now that I know that what I'm doing works on real hardware, I'll be working on this a lot more now.
Offline
You seem to be drawing the text in one frame. There isn't much time to do stuff in VBLANK. Maybe you could output characters one at a time? Nice work on the game though. You already have sound !
Offline
If there was a way to put the "cursor" back at 0,0 instead of where it left off printing text, then perhaps the background wouldn't have to blink. Is there a way to do that?
EDIT: I did find a way to solve the blinking problem. What I had to do is set each character individually, like so:
gotoxy(1, 16); setchar('I');
and then when I was done showing it, clear each character, like so:
gotoxy(1, 16); setchar(' ');
There should be an easier way to do this, but darned if I can figure it out.
Last edited by chris (2016-12-11 05:44:26)
Offline
After a ten day hiatus, I've returned to work on the game. I added some stuff, like screens to the left and right of the starting screen. Press A while hovering over a character to see what it has to say. You can't go to new screens at the bottom yet, but I plan to add 2 coins you need to get to the world 1 boss: Fred the Flea.
Offline
Frank the Fruit Fly proved to be too much of an ambitious game to be my first project. So I'm going for something simpler. It's like the 2600 game Fast Food, but in reverse, so you dodge the oranges instead of trying to eat them. The game is called Oranges. All I have so far is the title screen. I need to compose music and then figure out what the notes are and then program that in. Link is in my signature.
Offline
Just a notice that I'm restarting the Oranges project. All I have is a title screen so far. Link is in my signature.
Offline
I'm getting a little better at this. This is what I have right now:
Five oranges all at different speeds. The game ends if an orange hits you. There's not much to do except dodge oranges. I'm looking for feedback and suggestions on what to do. Link to the latest rom is in my signature.
Offline
Can you help me make a start screen with the game logo showing ?
please teach me gameboy programming
Offline
npzman wrote:
Can you help me make a start screen with the game logo showing ?
Try this tutorial:
https://retrospektakel.wordpress.com/ga … g-english/
Offline
I'm back. And working some more on the Oranges game. What I want is for someone to look at my code and see if there's a better way to get orange randomness than what I have now. The link to the latest ROM and .c file is in my signature. I've added a machine that spits out the oranges instead of them mysteriously appearing.
Last edited by chris (2017-02-16 19:52:16)
Offline
I would like a nice Ding! sound instead of the screechy sound I have in there now, but I need help. I read this page:
http://gbdev.gg8.se/wiki/articles/Gameb … d_hardware, but I don't understand any of it. The sound I have in there now is this:
NR41_REG = 0x40, NR42_REG = 0xf0, NR43_REG = 555, NR44_REG = 0xc0
I don't understand this, either, but it gave me at least a sound. Is there an easy ding sound I can use somewhere or can someone write me an easy one?
Last edited by chris (2017-02-17 17:56:58)
Offline
I got rid of the "GET READY..." statement at the beginning. It was there because it was taking too long, but I found a way to shorten it. I also added a fork powerup so you can eat the oranges as long as you're flashing. Link is in my signature. What do you think?
Offline
If I remember tonight, I send you over some functions I've written for playing some simple sound effects, you're settings register values for the Noise channel (Channel 4) there. You'll get a nicer "ding" using either channel 1 or 2.
Off the top of my head, try using the following settings - with comments
NR11_REG = 0x7f; // SQUARE WAVE DUTY
NR12_REG = 0x7f; // VOLUME 0 = quietest, 255 = loudest
NR13_REG = 0xFF; // LOWER BITS OF SOUND FREQ
NR14_REG = 0x86; // LARGER SOUND FREQ - MINIMUM VALUE OF 128, HIGHER = HIGHER
Offline
Well, I finally figured out what the problem was. As it turns out, putting wait_vbl_done made it work correctly, but made everything slow way down, so I sped it up. Before, I got the scratchy ding sound only when the guy was down at the bottom half of the screen. Which makes no sense to me. But I suddenly had the bright idea of trying wait_vbl_done since it wasn't in there before.
Offline
A short YouTube video in case you haven't seen or played the Oranges game yet.
https://youtu.be/vM40ORXwceQ
Offline