Thanks for the support! Good luck :)
grimmrobegames
Creator of
Recent community posts
Seeing objects farther than the space in front of you was not a rendering quirk or limitation but rather a design choice. When I was originally making it for the jam, having to draw multiple sized sprites was not something I had time for so I didn’t implement it, and in the classic games that inspired the plugin (specifically Wizardry and the original SMT) you can’t see chests, etc, until they are in front of you anyway so it worked.
It’s not something I’ll be building into the plugin (it’s finished besides possible bug fixes with newer versions of GBS) but if you decide to use it, you’re more than welcome to build that out.
Hi! The plugin is simply a type of Scene in GB Studio and is based on those limits, which you can read about in the GB Studio docs.
In the example scene that comes with the plugin, the background uses the maximum number of tiles (192), but that is only one area type. If you take a look at my (very unfinished) jam game, Abducted, there’s forests, caves, and a more plain warehouse style areas, each using different tilesets.
I don’t know how many full backgrounds you could fit into a GB Studio game, but there are projects with literally hundreds of them out there so just play around.
Thanks! Glad you like it :)
I don’t know how the GB Studio engine (or the Game Boy Color itself for that matter) handles colour so I can’t make any guarantees that it will work as expected with that mode, and updating it to support that is definitely out of scope.
If you have the plugin, you’re more than welcome to dig into it and make changes!
If you do, the plugin copies tiles from the background to an area just off the screen to build the view (ROM to VRAM) and then does a big copy of that constructed view to the screen (VRAM to VRAM). See the docs. It does this using “set_bkg_submap” and “vmemcopy” (in v4) respectively. After a quick look at gbdk (which the GB Studio engine is programmed with) it looks like there’s also a separate flag to set if you want to copy the tiles OR the colour data (attributes), the VBK_REG flag.
I don’t know if this means that each function in the plugin would have to be run twice to get the tile data and the colour data, or what the actual address in VRAM the colour info is supposed to be written (or even if that gets handled automatically by gbdk). Additionally, some of the underlying engine code uses 8 bit integers for tiles, meaning 0-255, so I don’t know if my plugin could reach the tiles above 255.
These are the things that first come to mind. Good luck!
As I mentioned in a previous comment, changing the dimensions of the viewport is not trivial and not something I’ll be supporting officially.
The goal of the plugin is to be a very niche thing: a “letterbox” first person view for classic grid-based dungeon crawl games like Wizardry or SMT. The most those very visually limited games have on the screen other than the view is usually text representing characters or player stats and other simplified things, which you can do using dialog boxes. That I managed to get a minimap in there is more than those classics usually offer. Doing more than that goes outside the scope (and spirit) of the plugin.
If you have the plugin, you’re more than welcome to change the code yourself!
If you do, keep in mind that reducing the size of the view does not necessarily free up many background tiles for other things. The example background uses the maximum amount of tiles for a GB Studio background already and it’s not very complex art. You’ll have to determine which tiles are not going to be used after the changes and remove them from the image to calculate the new tile count. The number of tiles you can reclaim may or may not be worth rewriting the plugin.
Inventory screens and whatnot are no small task in GB Studio and definitely goes outside the scope of what I can provide here.
As a suggestion, in Abducted I simply used a dialog box with inline variables for items. For a new project I’m replacing unused characters from the font file with item icons and using those for key items.
Just note that the graphics for rendering the view uses most of the tiles allocated in GB Studio so you’ll need to account for that if you plan on incorporating such a thing into the background tiles.
Also to answer an earlier question, GB Color mode is not supported by the plugin. You could maybe use a single palette for the view without trouble but that’s only a guess and not tested.
You can see the details of setting up the plugin and how the pieces work in the docs which are free to access. That will give you a better understanding of how it works and can help you decide if you want to purchase :)
Besides not distributing the source code, you can use the plugin for any project, commercial or otherwise. Credit is appreciated but also not required.
Thanks for your comment!
Drawing the minimap does NOT edit the 3D view. The 3D view and the minimap are both created from scene data in the ROM and are rendered separately.
There is currently no way to edit the map data, which is a limitation of GB Studio, and would require some extra tricks to achieve, including keeping track of the tiles that were changed so they don’t just change back.
There are two ways I can think of for doing a one-way door though:
1. You can make a door “lock” when you step through using a trigger by activating an actor over the door tile to block the player. I did this after the tutorial section of Abducted. Turning back and trying to step through the door activates the actor instead saying “it’s locked”.
2. You can place wall in the space after the door and a trigger on the door tile. When the player steps on the door tile, the trigger changes the player’s position to the other side of the wall. Kind of like a teleporter but only one extra tile ahead. If the player turns around they see a wall instead of the door they passed through.
Thanks for your comment!
Yeah, I have the plugin open sourced as well but it does take a bit of messing around to get it working. My plan is to tidy up the plugin (and also make it a real plugin since right now it just overwrites the point and click scene) to make it more user friendly. I tried to do that as I went but I ended up hacking things up trying to get the game finished.
The smoothness comes from building the background/view from all the pieces off-screen and then doing a big copy from that "buffer" into the VRAM's on-screen space. An even better way would be to draw off-screen and then move the whole background like a swap for an instant update, but I didn't manage to get that working in the GB Studio context during the jam.
Hi everyone (but probably mostly Shallan),
I'm looking at the amazing examples Shallan shared on their Github and learning a lot!
I am confused about one particular thing in the Nybble Mode example and I was hoping for some illumination. On lines 189, 206, and 211 there's instructions followed by variables but then a colon (:) and an additional hex value. For example, on 189:
ldz rowsToDraw:#$02
At first I thought it was maybe a pseudocommand for ldz from the version of KickAssembler that's needed for the MEGA65 support, but then it's also used with ora and lda which are standard 6502 instructions.
Thoughts?
-Mike