Gameboy Development Forum

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.

Ads

#1 2018-01-14 01:58:58

esotericsean
Member
From: Buena Park, CA
Registered: 2018-01-14
Posts: 15
Website

Suzy's Diary

Hello!

So happy to have found these forums. My name is Sean. I recently discovered GBDK and started creating a game. It's an action/adventure/exploration game called Suzy's Diary— it'll be reminiscent of Link's Awakening but you'll play a teenage girl named Suzy and it's set in our world in modern times.

I'm doing everything myself. Story, artwork, sound/music, development, promotion, and distribution. I plan on having a custom circuit board printed as well as a custom cartridge shell, manual, and box.

https://i.imgur.com/gdAHUQY.jpg https://i.imgur.com/KO7jyh0.gif

So far, I've been able to create sprites, set them as background tiles, and move a character around the screen. I'm having to learn a lot about how the GameBoy actually functions, but coding in C is a nostalgia trip— I'm having so much fun with it.

What I've found to be the most challenging is that every bit of resource online seems to be incomplete or doesn't exist anymore. Compiling in 4 color (DMG) mode seems to be working perfectly, but I'm having a few issues figuring out how to use color palettes and compile for CGB. I want my game to run on both Color and DMG/Pocket systems (as well as Advance/SP), but incorporating at least a bit of color makes a pretty big difference.

Anyway, I'll be hanging around here and posting updates on my game's progress. I'll probably be asking lots of questions and I'll also try and answer questions that other people have that I may be able to help with.

Offline

 

#2 2018-01-14 08:39:08

Mills
Member
Registered: 2012-12-21
Posts: 119

Re: Suzy's Diary

This looks promising.

How do you get a game boy cartridge and everything?

I'm interested in getting one or two to have my games in a real cart just for fun!.

Thanks.

Offline

 

#3 2018-01-14 15:25:27

esotericsean
Member
From: Buena Park, CA
Registered: 2018-01-14
Posts: 15
Website

Re: Suzy's Diary

Mills wrote:

This looks promising.

How do you get a game boy cartridge and everything?

I'm interested in getting one or two to have my games in a real cart just for fun!

Thanks! There are a few different ways. You can get a flashcart and put games on it yourself. The Everdrive would support multiple games (potentially all the games). Or something like this would let you put one game on it.

All games are a bit different. They have different ROM sizes, battery requirements. Pokémon Silver/Gold have a real-time clock that keeps track of the time of day IRL so they need a large battery, whereas Zelda DX only needs a basic battery for storing your save files. And older games like Tetris were super tiny while later games

I'm planning on ordering a custom circuit board from China. There are lots of places online (you can check Alibaba) that make them to any specification you want. They'll even flash a ROM on it for you.

Last edited by esotericsean (2018-01-14 15:25:44)

Offline

 

#4 2018-01-15 08:05:02

Mills
Member
Registered: 2012-12-21
Posts: 119

Re: Suzy's Diary

esotericsean wrote:

I'm planning on ordering a custom circuit board from China. There are lots of places online (you can check Alibaba) that make them to any specification you want. They'll even flash a ROM on it for you.

But, do you have to send them the schematic of a pcb board ? or do they have preconfigured ones?

I have a flasheable cart but i wanted to make a read only cart for two or three games with the box and everyting smile. My games will only use the mbc1 because they have no ram or sram to save.

Last edited by Mills (2018-01-15 08:17:45)

Offline

 

#5 2018-01-15 09:51:57

Hell_666
Member
Registered: 2017-12-13
Posts: 18

Re: Suzy's Diary

Sounds nice, but a litle ambitious ^^
Don't hesitate to post about the game progress, it's always nice to see other people projects smile

@Mills: You must flash the cart, but I don"t know how it works. Otherwise you can go here: https://catskullelectronics.com/32kcart
No tried yet but soon, I will give you my feedback if you are interested. If I'm right, you buy a cartridge to catskull and you send him your ROM. He will flash the cartridge and send it to you. So you buy a cartridge already flashed with your ROM.

Offline

 

#6 2018-01-15 10:31:51

Mills
Member
Registered: 2012-12-21
Posts: 119

Re: Suzy's Diary

Hell_666 wrote:

@Mills: You must flash the cart, but I don"t know how it works. Otherwise you can go here: https://catskullelectronics.com/32kcart
No tried yet but soon, I will give you my feedback if you are interested. If I'm right, you buy a cartridge to catskull and you send him your ROM. He will flash the cartridge and send it to you. So you buy a cartridge already flashed with your ROM.

That's just what I want, but that cart has only 32k, my roms are 256 and 512, well I should open another thread about this, and not use this one wink.

Offline

 

#7 2018-01-15 12:33:18

Hell_666
Member
Registered: 2017-12-13
Posts: 18

Re: Suzy's Diary

MBC on gb cartridge are not generic hardware, so it is no more in production nowaday hmm
The only method I know to have Memory Bank Controllers on a cartridge is to modify a game cartridge, so you need to destroy an original GB game using MBC to put your game on it. But I have no idea on how to do it, I just know its is more complicated than just falshin a cartridge, you need welding skills too.

But the link esotericsean gave seems to be good yor you: "Custom ROM's can be flashed at customers request.". If I understand you can ask them to flash it with your custom ROM for you.

Yes I think we should start a new thread before we start to really flood this one.

@esotericsean : thanks forBennVenn's Shop link, I didn't know it wink

Last edited by Hell_666 (2018-01-15 12:33:38)

Offline

 

#8 2018-01-15 15:16:29

esotericsean
Member
From: Buena Park, CA
Registered: 2018-01-14
Posts: 15
Website

Re: Suzy's Diary

Thanks guys! I've been researching MBCs and it seems there are definitely companies in China that at least claim to make whatever you could possibly imagine on a circuit board. If not, it's definitely possible to modify old cartridges fairly inexpensively.

For now, I'm going to focus more on the actual game rather than the hardware. Will update you guys when I've made some good progress!

Offline

 

#9 2018-01-15 16:28:22

Jonas
Member
From: Frankfurt, Germany
Registered: 2016-06-06
Posts: 75
Website

Re: Suzy's Diary

Hell_666 wrote:

MBC on gb cartridge are not generic hardware, so it is no more in production nowaday hmm
The only method I know to have Memory Bank Controllers on a cartridge is to modify a game cartridge, so you need to destroy an original GB game using MBC to put your game on it. But I have no idea on how to do it, I just know its is more complicated than just falshin a cartridge, you need welding skills too.

Well, that's not the only way. You can replace the MBC chip by parts that are available (and inexpensive) today. It depends on the PCB layout you use. But maybe it's indeed a topic for a thread of its own.

Offline

 

#10 2018-01-15 16:41:53

tobiasvl
Member
From: Norway
Registered: 2017-10-19
Posts: 26

Re: Suzy's Diary

Welcome! Looks like you have a solid game planned here, but yes, you will have to learn a lot about how the Game Boy works before you can make it work wink

Depending on your level of ambition here, I would suggest looking into doing it in assembler instead of C.

There's another Link's Awakening-like RPG in the making, called Aevilia: https://github.com/ISSOtm/Aevilia-GB/

Regarding resources, check this out: https://github.com/avivace/awesome-gbdev


Discord: tobiasvl#6844 | GitHub: tobiasvl

Offline

 

#11 2018-01-15 17:49:49

esotericsean
Member
From: Buena Park, CA
Registered: 2018-01-14
Posts: 15
Website

Re: Suzy's Diary

tobiasvl wrote:

Welcome! Looks like you have a solid game planned here, but yes, you will have to learn a lot about how the Game Boy works before you can make it work wink

Depending on your level of ambition here, I would suggest looking into doing it in assembler instead of C.

There's another Link's Awakening-like RPG in the making, called Aevilia: https://github.com/ISSOtm/Aevilia-GB/

Regarding resources, check this out: https://github.com/avivace/awesome-gbdev

Thanks for the info Tobias! I'll definitely be checking out Aevillia.

Any reason for suggesting Assembler instead of C? I have a ton of experience in C, C++, and C# and I couldn't even tell you what Assembler looks like, heh. I'm sure I could learn, but with GBDK and ZGB, it seemed like making a game was somewhat feasible.

Offline

 

#12 2018-01-15 17:59:44

Jonas
Member
From: Frankfurt, Germany
Registered: 2016-06-06
Posts: 75
Website

Re: Suzy's Diary

esotericsean wrote:

Any reason for suggesting Assembler instead of C?

It's faster. And you can be sure that all the glitches in your game are your own fault and not caused by the compiler.

Offline

 

#13 2018-01-16 04:35:53

Mills
Member
Registered: 2012-12-21
Posts: 119

Re: Suzy's Diary

esotericsean wrote:

Any reason for suggesting Assembler instead of C? I have a ton of experience in C, C++, and C# and I couldn't even tell you what Assembler looks like, heh. I'm sure I could learn, but with GBDK and ZGB, it seemed like making a game was somewhat feasible.

ZGB is cool and easy to use (for a noob like me), but it is a bit slow for the DMG when you use a lot of sprites and collisions. In CGB it works much better.

The main problem I see with assembly (my oppinion) is you get lost in the code sad.
I can think of a mixture of custom assembly functions called from gbdk as the best option, but gbdk has a lot of bugs and this will delay your development.

Last edited by Mills (2018-01-16 04:36:22)

Offline

 

#14 2018-01-16 06:52:10

Robbi_Blechdose
Member
Registered: 2017-12-10
Posts: 16

Re: Suzy's Diary

I've mentioned this before somewhere else, but I found this a while ago: http://www.rrsd.com/software_developmen … velopment/
It's GBDK, but a lot better. Not easy to get running, but once you have it, it's A LOT better. (If someone wants it, I could zip up the compiled version as well.)
It uses a newer version of SDCC as compiler and has slightly extended GBDK libs. Haven't seen a single of the evil "Compiler internal error" errors since...

Offline

 

#15 2018-01-16 19:51:12

ISSOtm
Member
From: Somewhere in Echo RAM
Registered: 2017-04-18
Posts: 90
Website

Re: Suzy's Diary

Hello !
I'm the programmer of Aevilia, the RPG tobiasvl just linked.
We're a small team of six, but I'm talking from my point of view only.

First, the big problem with C is that the libs that you may use (mostly GBDK) try to abstract the hardware. Thus, a lot of people have issues that they don't get, because the documentation is vague.
Besides, you don't get what happens, why the console is doing this. For example, a LOT of people use "printf" in their games, but it clobbers graphics a lot, and is generally intended for debugging purposes only.
C is also depriving you of debugging using BGB. BGB's a very good emulator (sharing first place in accuracy with Gambatte), which also has an excellent debugger. But due to the nature of the emulator, it only debugs the compiled ASM.
Due to the way it works, C adds some overhead compared to hand-optimized ASM. On modern computers, this is not much, especially because the stdlib removes a lot of hassle. But on the GB, you don't have power to waste on overhead.
(You can still make a very good game using GBDK, though : Imanolea originally made Last Crown Warriors in GBDK, and then switched to ASM. He published screenshots showing that ASM could support a much larger load [number of enemies] for the same CPU time.)

I want to debunk what Mills said : you don't get lost, if you segment your code well enough. In Aevilia, I write a lot of "utilities" functions. Such as `TransferTilesAcross`. I write a clear documentation for these functions ("Transfer c tiles from b:hl to de.").
Learning ASM is doable. It's actually fairly easy (imo). It requires you to think way differently, however. You're dealing with much more elementary instructions :

Code:

if(cameraYPos != 0) {
    cameraYPos--;
}

Code:

    ld a, [cameraYPos]
    and a
    jr z, .lockTop
    
    dec a
    ld [cameraYPos], a
.lockTop

This requires thinking much differently than in other languages. It's also more verbose. On the other hand :
You gain full control of the machine. You're interfacing directly with the hardware, which has defined behaviors, so when you tell it to do X, it does that.[1] (Also, GBDK puts a lot of restrictions on what you can do, for example set_bkg_tiles restricts you to a small section of VRAM)
This also greatly simplifies debugging and helping - you know what's wrong : your code. GBDK is quite buggy (ask it "a = b * [power of 2]", you'll see).
You can use BGB to debug your code. It's really practical, and I must say that it helped a TON when debugging Aevilia. It's an emulator, and even though it's a very accurate one, I still found a couple inaccuracies while developing Aevilia. beware was very helpful, though, and they have almost all been patched.


Overall, ASM does require some extra work from you, but it's both worth it and doable. It's still your choice, though, you can make your game in C, or decide to give ASM a shot.
By the way, if you want help, aside from the forums, we are on IRC and Discord, so feel free to join us there.



[1] : Actually, the Game Boy has small quirks that aren't always documented. So, *sometimes*, you'll encounter a bug that isn't really your fault. However, it would also have happened with C code - but you wouldn't have known why !


The French Lord Of Laziness.
Legend of Zelda and Undertale fan, I also tend to break Pokémon R/B/Y a little too much.

Twitter | Me on GCL | Discord : ISSOtm#9015 | Skype : isso.tm (I don't login anymore)

Offline

 

#16 2018-01-17 01:40:59

esotericsean
Member
From: Buena Park, CA
Registered: 2018-01-14
Posts: 15
Website

Re: Suzy's Diary

Appreciate all the info everyone! I've joined the Discord server and will definitely think about it a bit more.

I'm not a full time game developer. I'm actually a filmmaker. I make commercials and short films and have a studio that I rent with a friend. I started out a Comp Sci major in college. I switched to filmmaking, but was always interested in making games. I used to love making little things in TI-BASIC on my calculator in high school.

Simplicity and ease of use is paramount for me. There are so many brilliant programmer developers who spend ten years perfecting their own engine they’ll never use again.

Unless the performance cost severely impacts gameplay in a way players will notice, it’s not relevant enough to me. In this case, I'm still not sure how complex I'm going to need to be with my game since it's still early stages. But if it does get complex enough, it definitely sounds like I need to get a bit more serious with it.

Thanks!

Offline

 

#17 2018-01-17 04:16:13

tobiasvl
Member
From: Norway
Registered: 2017-10-19
Posts: 26

Re: Suzy's Diary

There are lots of people using GBDK too (especially here on the forums, it seems), so I'm sure you can get help if you go down that route. Most of the people on the Discord use assembler (RGBDS) though.

And no matter if the rest of us are comp sci majors or not, when it comes to Game Boy programming we're all enthusiast amateurs! The most important thing is having fun and learning, so pick what makes sense for you out of GBDK or RGBDS and just get cracking and make a game.

Of course, it'd also  be a shame if you halfway through development want to change from C to ASM and stop working on the game because of that hurdle, so you should probably make an informed initial decision on the programming language. Perhaps make a few smaller games first in GBDK and ASM just to get acquainted with them. Up to you!


Discord: tobiasvl#6844 | GitHub: tobiasvl

Offline

 

#18 2018-01-17 04:49:55

Zalo
Member
From: Spain
Registered: 2016-07-26
Posts: 59
Website

Re: Suzy's Diary

Jonas wrote:

esotericsean wrote:

Any reason for suggesting Assembler instead of C?

It's faster. And you can be sure that all the glitches in your game are your own fault and not caused by the compiler.

Robbi_Blechdose wrote:

I've mentioned this before somewhere else, but I found this a while ago: http://www.rrsd.com/software_developmen … velopment/
It's GBDK, but a lot better. Not easy to get running, but once you have it, it's A LOT better. (If someone wants it, I could zip up the compiled version as well.)
It uses a newer version of SDCC as compiler and has slightly extended GBDK libs. Haven't seen a single of the evil "Compiler internal error" errors since...

ZGB uses the  latest version of SDCC which fixes a lot of the compiler issues present in the latest version of GBDK

It's true that code generated by the compiler when using C is slower than the code generated directly in ASM. What most people doesn't seem to know is that whih the latest version of SDCC you can mix asm and C, so you can actually optimize a lot. You can start by using the generated function by the compilier and optimize it (focusing only on the parts that matter). This way of working is actually pretty cool because you can start having something that works and then improve it. I was also told at the begginning that GBDK was useless and you couldn't create some "real" games for the Game Boy with it. Just take a look at any of the games I created with all this:

Pretty Pricess' Castle Escape
Super Princess 2092 Exodus
Polka Sheep

It took me just a week to create the last one (it was developed for a game jam by 3 people)

Offline

 

Board footer

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson