# Dev Log 6 - Quite a Lot of Progress

2025-02-06 - [53] 11:23

Initially, I wanted to do log posts that were sort of like tutorials as I built up this project. I have changed my mind on that and instead am just going to mention what has been done. I was going to write a dev log post a while back ago, but I decided to spend that writing time instead finishing up reading "Godel, Escher, Bach: an Eternal Golden Braid", which was on my list of things to do this year. With that book finished, it's time to write another dev log!

A LOT of progress has happened in the last month since I posted dev log 5. By the time I had written dev log 5, I had some controller input handling managed along with some bank switching, but not too much in terms of that was handled. I also added a "credits" intro card that mentions that I am the creator of this project. For the moment, the RFC 3339 timestamp of the build time is placed on this screen.

## Controller Input Handling

When a spread is shown, I can navigate to different cards of the spread by pressing Up, Down, Left, and Right. Internally in the code, for each card of the spread, a card position is defined for each of Up, Down, Left, and Right, some of which are the exact same card. For instance, the topmost card of the screen will likely "move" to itself if Up is pressed. The directional movement is meant to be intuitive for the individual moving the cursor, so they don't get too frustrated figuring out how to get to a particular card. There may be slightly more intuitive mappings, but each manually set mapping should be intuitive enough.

Also, while the animation of cards being set in the spread pattern is happening, START or A can now be pressed to skip the animation and immediately have the pattern set out.

When a card in a spread is navigated to, pressing A will go to a screen showing the card design, which also has the meanings of the tarot card. In that card design screen, pressing Up will expand a window that shows the meanings of the card, afterwhich, pressing Down will lower that window with the meanings, which will show the full design of the card again.

## Bank Switching

Game Boy cartridges can only read 32KB of ROM data at any time. In order to have more storage than 32KB, ROM bank switching is required, which swaps a section of ROM with another section. To do this, a mapper chip is included on the cartridge to map certain sections of cartridge memory to certain addresses requested by the Game Boy. Each of the 78 tarot cards use 2560 bytes of ROM space without any compression, which means at least 195KB is needed to include all 78 tarot cards on the cartridge. This means bank switching is absolutely necessary for this project.

To make the physical release of this cartridge simpler and cheaper, the circuitry to bank switch is the same as the "Wisdom Tree" cartridges. You might know them as the folks that put the Bible and Bible games on the Game Boy with unauthorized cartridges. The official mapper chips used by Nintendo aren't really available for folks who do homebrew without using a donor cartridge, which is not practical when making multiple physical cartridges. There is at least 1 discrete logic circuit available to replicate what I need out of the MBC1 chip, but it's easier to just use a single 74LS377 chip and a 256KB ROM chip.

An issue though is a lot of emulators do not support the Wisdom Tree mapper, so if someone wants to play the cartridge on an emulator based system like the RetroN 5, it's unlikely to be playable. To fix this, I can double the size of the ROM chip and copy the same first 16KB on each 32KB ROM bank and do ROM bank switching in the way the MBC1 does bank switching. Doing this will allow the cartridge to work on official Game Boy hardware, while also allowing the cartridge to successfully be dumped to a .gb ROM file and played. The dumped ROM will be a valid MBC1 .gb ROM while the hardware of the cartridge will be a valid Wisdom Tree based cartridge. This keeps the cartride cost down and lets the most amount of people successfully play with this project.

## Work Remaining

There are only a few things I "NEED" to add to this project before it's done. Those things are:

- Title Screen
- Start Screen while on a Spread Screen
- Navigation Screen to select a tarot card spread

I also am looking at potentially adding the following features, although there are no promises:

- Super Game Boy border
- Game Boy Printer support

## I'm Looking For a Publisher

I am looking for a publisher for this project. The things that would be expected (non-negotiable) of this project for the customer are:

- Game Boy Cartridge
- Printed physical 78 card tarot deck with the pixel art I made
- Instruction booklet for the cartridge that also includes tarot spread reading instructions
- A box that houses the instruction booklet, deck, and cartridge, which will look like other tarot deck boxes that usually contain a tarot deck and tarot reading instruction booklet

Designs would be provided by me for the box, booklet, physical deck, cartridge label/sticker, and even the cartridge PCB. It would just be a matter of assembly and distribution for the publisher.

The reason I am not going to self publish this project is because I do not want to have to deal with the complexities of sales tax and registering with every single state someone might buy this project from (which costs money itself) for the "privelege" of the state accepting sales tax from me. I'd much rather deal with a company that already handles physical distribution and has already handled the sales tax registrations.

If you are a publisher and are interested in this project or know a publisher who would be interested in this project, please feel free to contact me at the email address below. I'll try to reply relatively soon after I see the email, but please understand though that my email reply might end up in your Spam folder due to annoying email gatekeepers that seem to hate the idea of personal emails that aren't from the big 3-ish email providers".

## Contact/Reply

If you would like to reply to this post, feel free to send me an email.

Email: vi@vigrey.com [Email]
PGP Public Key [515F AD67 F931 0A2B 9B93 CE19 814F ECB1 A398 63CE]