gbadev
Game Boy Advance homebrew development forum
News

Demons of Asteborg DX

Hello there ! :D

I'm Simon from Neofid Studios,
We create new games for retro consoles (Demons of Asteborg, Astebros, now working on DaemonClaw for the Sega Genesis)

After spending many years developing for the Sega Genesis, we saw the evolution of the Butano devkit and we had to give it a try !
So we decided to remake our first game "Demons of Asteborg" in a Deluxe version !
Here are some gifs showing the current state of the project !





You can try the demo of the game here

We are currently running an Indiegogo campaign to make this project a reality, we are also creating a NeoGeo version of the game for those interested !
You can support the project here
We only have a few days lefts, I really hope we'll be able to make it, I hope this project will speak to you and that you'll have as much fun playing it as I had developing it!

Thanks for your time and attention !



Goodboy Galaxy for GBA is out now!

It feels surreal to finally be writing this but... Goodboy Galaxy for the GBA released earlier this week!

It's an exploration platformer about a dog in space, which myself, Rik and so many friends & collaborators have been working on for the last 2.5 years (or 5 years if you include the demo!). We've poured absolutely everything into this project and we really hope you enjoy it after all this time! <3

You can buy the game digitally on itch.io: https://goodboygalaxy.itch.io/goodboy-galaxy-gba

Physical carts are currently in production, and can be preordered from First Press Games.

title screenshot of maxwell looking into the sky gameplay footage gif screenshot of maxwell standing in a cave, pointing his gun at a glass orb FMV screenshot of three bears with a large machine crawling over the horizon

The game was made in the Nim programming language and uses the following libraries:

  • Natu (in development) - Nim GBA programming toolkit
  • libtonc - text rendering and many other utilities
  • maxmod - music / sound engine
  • libugba - interrupt handler
  • ACSL - heap allocator / C stdlib replacement
  • posprintf - string formatting
  • Cult-of-GBA BIOS - RLE Decompression for video cutscenes
  • agbabi - memcpy/set + coroutines
  • nimcoro - high-level coroutine wrapper
  • gba-rumble - brrrrrrrrrrrrrrrrr
    Full game credits here.

We're currently working on the native PC and Switch ports, which will be out next year, but I figured I'd post about the GBA release here for posterity. Lemme know if you have any questions!



Captcha Added

Hey all, we had some spam accounts joining recently, so I've added a simple captcha quiz to the registration form.

Hopefully this solves the problem! If not, we may have to explore other solutions.



160p Test Suite

Drawing of Gus (the mascot of PinoBatch's ports of 240p Test Suite, a wobbly man wearing a brown vest, yellow shirt, blue sack over his round bottom, and blue newsboy cap) along with screenshots of Shadow sprite, SMPTE bars, Timing & reflex test, Stopwatch, Linearity, Color bleed, and Audio sync

160p Test Suite is a port of Artemio Urbina's 240p Test Suite to Game Boy Advance. It has two goals:

  1. Evaluate TV sets and video processors for ability to handle retro console video signals.
  2. Turn a game console into a test signal generator to help in calibrating the black, white, and color levels and geometry of a display.

The port to GBA was originally requested by Extrems for testing Game Boy Interface (GBI), a Game Boy Player Start-Up Disc replacement app for Nintendo GameCube. It has since been used inside Nintendo, as reported by Kyle Orland of Ars Technica. It's been a long time since version 0.22 in November 2020, and even that was after forum.gbadev.org began to run into serious problems with its PHP installation.

Highlights from the past two releases:

0.23 (2023-03-03)

  • Help: fix blink sprite alignment
  • Credits: Display version from Git commit tag and ID
  • Credits: Pino has moved to the Fediverse
  • Motion blur: add health warning
  • Motion blur: increase duration cap to 60 frames (requested by zeta0134)
  • Motion blur: do not edit parameters while running
  • Shadow sprite: add Donna
  • Rename Manual lag test to Timing and reflex test to reflect how it is used
  • Hill zone scroll test: Switch from laggy libgba IRQs to HDMA to reduce split artifacts
  • Backlight zones: add speed control for measuring afterglow time

0.22 (2020-11-04)

  • Color bars: A to toggle NTSC 7.5% setup
  • Color bleed: Rearrange to 10 rectangles
  • Add a back story for mascot Gus

Download ROM and source zipfile or from the GitHub release



Creepy Castle (unauthorized port)

Recently, I've been reading the SFML Game Development book.
It covers a lot of topic about gamedev from scratch, including state stack based Scene class, GUI, command pattern, etc.

As a practice, I'm going to port Creepy Castle to the GBA, using Butano engine.

As it's an unauthorized port, I won't release it other than some video recordings...

Nothing much, only the GUI stuff for now;

The button implementation is a copycat of this menu implementation, but I'm not dynamically allocating it.

// buttons as member variables of the scene
ui::Container<4>           _uiContainer;
ui::SaveSlotButton         _btnSaveSlot[SAVE_SLOT_COUNT];
ui::IconTextButton<1, 4>   _btnBack;
ui::IconTextButton<2, 8>   _btnDeletion;

// initialize the buttons
_btnSaveSlot[0].setSaveFile(&_fakeTestSave1);
_btnSaveSlot[0].setPosition(SAVE_SLOT_BTN_START_POS);
_btnSaveSlot[0].setCallback([this]() {
    reqStackPop();
    reqStackPush(SceneId::GAME);
    getContext().saveFile = &_fakeTestSave1;
});
...

// add the buttons to the container
_uiContainer.addElement(&_btnSaveSlot[0]);
_uiContainer.addElement(&_btnSaveSlot[1]);
_uiContainer.addElement(&_btnBack);
_uiContainer.addElement(&_btnDeletion);

I'll work on loading 16x16 meta-tile based tilemap on this week.



GBT Player - A PSG music player library

Hi! Even though this isn't new, I'm going to leave a post here to get some exposure.

https://github.com/AntonioND/gbt-player

GBT Player is my music player for GBA (old versions supported GB/GBC). It uses the PSG channels (1 to 4, the ones that come from the GB). This means that the music you can make with them is fairly limited, but it doesn't need to use any CPU for mixing audio. Other players, like Maxmod or Apex Audio System, target the DMA channels, which means the music can be as complex as desired, but by using a lot of CPU to mix audio.

With GBT Player, you use a mod tracker like OpenMPT, create a S3M file with your song, and convert it with a python script. It generates files with the converted song. Then, you pass this data to the music player library (which is very small), and that's it!

PSG music players like GBT Player can be very useful for games that need a lot of CPU for other tasks (like for 3D software rendering), or for multiboot games.

Also, there is always the option of using both systems at once! This is an example that combines Maxmod and GBT Player. The music composer has to create a S3M file in which the first 4 channels are special (they correspond to the PSG channels of the GBA), and the rest are free to use as needed. GBT Player includes an utility that will split this S3M file into two, so that you can use the PSG part with GBT Player, and the rest of the S3M file with any player you like!

https://github.com/AntonioND/gbt-player/tree/efd8e754c9ae0ca444d48fced58ca99f0510faaf/gba/examples/combined_maxmod

And it isn't needed to use devkitARM to use this library, it's self-contained, all you need is a C compiler to use it!

Feel free to leave suggestions and bug reports in the repository, and I'm happy to help here if there are doubts about how to use it!



Krampus Hack '22

On desktop, I love using a library called Allegro, and they have their own game jam community called TINS; and along came the KrampusHack, which is a secret santa game jam thing. I thought it might be pretty interesting to join in...

Each participant submits a "wish list", and at the start of the jam, you are presented with one of the other participants wish-list. None of it is "required", but it is encouraged to try and fit the brief. The one I've got has some bits I think I'm capable of, and within the limits of the GBA too...

But wait... why am I annoying the GBA community with an Allegro jam... Well, Allegro is preferred, but not required, and whilst I am using Allegro, my game engine builds for both desktop and the GBA! So you'll all be getting a little Christmas game at the end of December, start of January.

Dev logs are encouraged on TINS, so I thought I'd kind of double-key and give you all the exciting news of my production too...



Apotris (physical GBA release) in stock at insideGadgets

Apotris is an absolutely stellar block stacking game for the GBA by @akouzoukos, which supports guideline rules, several game modes, heavy customisability, a banging soundtrack, and link cable multiplayer. Last month it had a physical release by insideGadgets, which sold out pretty quick, but is now back in stock.

You can order a cart (with optional rumble!) from shop.insidegadgets.com/product/apotris

or read more and grab the ROM from akouzoukos.itch.io/apotris/devlog/452358/apotris-v34-physical-release

picture of apotris GBA cartridge



GBA Jam 2022 Results

The GBA Jam 2022 has come to an end!

You can find the final results and download links for all 26 entries at gbadev.net/gbajam22.

Many thanks and congrats to everyone who took part. Hope to see you all next year! (whether it'll be a big jam or something more relaxed like last year's winter jam is undecided, but we'll keep you posted!)

Also, @avivace recently added a web build of mGBA to the Homebrew Hub, which means you can play all the entries in your browser too. So go and try them out if you haven't already!



Inky and the Alien Aquarium

EDIT: Our Kickstarter funded and Inky is now available for purchase digitally on Itch!

Hi everyone,

I thought it might be interesting to see what me and my partner Casey have been up to this past year. Our game isn't done yet, but it's getting very close. Our goal is to have it shippable by January 2023, but we will probably spend more time polishing it.

Inspiration

The inspiration for the game can be traced back to Baba Is You, which we both loved. After the game came out, I made some prototypes of block pushing games, just for fun. These prototypes never became games, and I put them down for a while.

April 2019

April 2019

April 2019

April 2019

Re-ignition

Fast forward a couple years, and in the fall of 2021, I wanted to get back into programming for the Game Boy Advance (more info here).

I wanted to start with a simple project that I thought I could finish quickly (lol). So I took inspiration from what I made years ago, but wanted to simplify it. For example, in my original prototypes, objects could move diagonally, and you could push multiple objects. I removed those ideas, and started making a prototype with much more simple rules.

You can see how I kept the logs, rocks, and holes.

You'll also notice that I don't worry about graphics at first :-). I aimed for simple readable JavaScript code that I could easily hack at, try new ideas, and edit levels using a text editor.

October 2021

October 2021

Quitting our Jobs

In January of this year, we had saved up enough money to take a year off of work, so decided to have a go at making a game company. We launched Pocket Pulp.

We originally thought we could finish the game by April, and we wanted to have products out before April, so we spent time making other puzzle games.

We made a card game, Monster Dedux, and successfully funded it on Kickstarter. We made a daily wooden puzzle game dotris, inspired a little bit by Wordle. And most recently we made a brainteaser wooden puzzle called The Pig Pen Puzzle.

These were a lot of fun to make, and they also bought us some time to keep working on the video game. They also bought us time to level up our skills.

Second Prototype

Since I wanted to make the game in assembly language, I started on a second prototype written in JavaScript that would be very close to the implementation on the GBA.

This prototype allowed me to plan ahead on the different functions I would need, and eventually break them down and translate them to assembly. This was really important for me because I wasn't used to writing assembly language at the time.

January 2021

January 2021

Work on the Game

Using the second prototype, we slowly started working on the actual game! Imagine that! Here is a version where we just got the walls drawn:

July 2022

July 2022

September 2022

September 2022

October 2022

October 2022

Work Continues

It is about to be December, and we are still hard at work! Here's roughly where we are today:

  • Puzzles: 100%
  • Game engine: 100%
  • Story: 100%
  • World Map: 95%
  • Title screen, pause screen, save, loading: 90%
  • Music: 75%
  • Cut scenes: 75%
  • Sound effects: 0%
  • Credits: 0%

We need to get over the finish line so that everything is done enough. Then we can move on to the polishing phase of making everything better. When we hit that phase, we will be able to stop working on it at any moment and launch if we think it's ready.

Challenges So Far

  1. I wanted to write the game in assembly language, so I made my own assembler. I did this both to help learn assembly, and because I enjoy making my own tools.
  2. I spent a lot of time researching sound on the GBA because I know it's notorious for having crappy sound. I created my own sound engine in order to output the highest quality sound I possibly could.
  3. Casey is a creative person, but never made pixel art before this project, so she has been leveling up her skill this entire time. One benefit of making physical puzzles is that gave Casey more time to practice her art. She's come a long way, if you compare her skill now compared to a game we made when she first started a year ago.
  4. One last big challenge is shipping on a physical cart and saving on those carts. I spent a lot of time researching how flash carts work, and wrote up a tutorial based on my findings. I still have some work to do to make sure the carts correctly save progress, but I've got it mostly working.

Thanks for reading, let me know if you have any questions!

If you're interested in our game, please follow our Kickstarter pre-launch page to be notified when we launch!


Statistics
Topics
43
Posts
202
Registered Users
86
Newest User
Online Users
0
Guests online
1