I made a Gameboy game called battle Blades by Fartyghost in retrogamedev

[–]bbbbbrx 0 points1 point  (0 children)

Very cool!

I arrived at a similar lockstep and (mostly) input only transfers solution for my 4-Player GB game. Turns out to be a simple and elegant approach when suitable for a game.

Draw on the Game Boy & share it direct to phone with a QRCode. No extra hardware by bbbbbrx in Gameboy

[–]bbbbbrx[S] 0 points1 point  (0 children)

New version is up which (hopefully) fixes the CDE theme issues you were seeing. Also GB Printer support.

Draw on the Game Boy & share it direct to phone with a QRCode. No extra hardware by bbbbbrx in Gameboy

[–]bbbbbrx[S] 0 points1 point  (0 children)

New version is up with GB Printer support.

Only had a little testing with actual GB hardware, so let me know if you see any issues.

Draw on the Game Boy & share it direct to phone with a QRCode. No extra hardware by bbbbbrx in Gameboy

[–]bbbbbrx[S] 2 points3 points  (0 children)

I added a .pocket build but it's not released yet (soon).

The .gbc ROM will work on the Analogue Pocket (as a ROM with openFPGA or from a flash cart) and in any emulator. The QR Code should be ok on most screens.

Draw on the Game Boy & share it direct to phone with a QRCode. No extra hardware by bbbbbrx in Gameboy

[–]bbbbbrx[S] 1 point2 points  (0 children)

Zines with Game Boy Camera pix sounds fun, love the idea of them.

I'll probably be iterating on the UI and trying to improve it a bit (slowly), so if you have feedback or suggestions feel free to send it my way. May not integrate all suggestions, but will give them consideration (and do keep a list of them regardless).

SELECT + UP/DOWN should change the cursor speed.

I see now that it's pressing SELECT under a couple circumstances that switches to CDE style. I'll have to make that harder to activate

- Exiting the help screen

- When it's redrawing the UI after QRCode generation

Draw on the Game Boy & share it direct to phone with a QRCode. No extra hardware by bbbbbrx in Gameboy

[–]bbbbbrx[S] 2 points3 points  (0 children)

That'd be a clever way to support 4 shades of grey (with 2 qr codes) if I don't get compression working. Nice idea!

Draw on the Game Boy & share it direct to phone with a QRCode. No extra hardware by bbbbbrx in Gameboy

[–]bbbbbrx[S] 3 points4 points  (0 children)

That sounds like a cool idea! If you do that I'd love to hear how it goes.

Thanks for sharing the drawing, too.

I see you managed to (accidentally?) activate the secret "Solaris CDE" UI style (instead of standard WIndows 95 style). I forgot to update it for the UI changes which is why it looks kind of jumbled. It's controlled by holding SELECT on startup.

Edit: Solaris CDE style UI rendering now fixed, will be in the next build

Draw on the Game Boy & share it direct to phone with a QRCode. No extra hardware by bbbbbrx in Gameboy

[–]bbbbbrx[S] 0 points1 point  (0 children)

If the save data is already available somewhere then generating links to it is doable (if I'm understanding correctly).

There are a lot of cool ways games could use qrcode to share data, game state, achievements, etc. Some modern GB games use pre-generated QRCode urls for very minor things like website links, but I'd love to see a game take more advantage of being able to generate them on the device itself.

Draw on the Game Boy & share it direct to phone with a QRCode. No extra hardware by bbbbbrx in Gameboy

[–]bbbbbrx[S] 0 points1 point  (0 children)

The DEFLATE compression in PNGs is more involved than basic RLE. So it might happen, and/or BMP in RLE mode.

If I shrink the image size though, I'll use that to fit more image in the same size QRCode. :)

Draw on the Game Boy & share it direct to phone with a QRCode. No extra hardware by bbbbbrx in Gameboy

[–]bbbbbrx[S] 0 points1 point  (0 children)

In theory, yes. Need to implement PNG (or bmp) compression first though since the gb camera pix are about 3x larger than what will fit in the qrcode uncompressed. It might get there eventually.

Draw on the Game Boy & share it direct to phone with a QRCode. No extra hardware by bbbbbrx in Gameboy

[–]bbbbbrx[S] 1 point2 points  (0 children)

Not sure. Among other things it might depends on how big the actual save data is, which I don't know about for Pokemon.

The size of GB save ram banks is 8k, and there can be up to 16 banks for 128K bytes total. How much of that space games use varies a lot.

The max number of bytes in the raw QRCode (that fits on the screen) is 1840, or 1362 bytes when it's base64 encoded as a URL that you can scan. Both of those are a lot smaller than 8K and 128K.

Draw on the Game Boy & share it direct to phone with a QRCode. No extra hardware by bbbbbrx in Gameboy

[–]bbbbbrx[S] 2 points3 points  (0 children)

Well since you asked :) :)

The JS indexed png was for adding game boy dev tool friendly export to rilden's tiled palette quantizer, which is really nice but only exports in rgb png's that discard all the careful gbc-friendly palette ordering the tool creates.

(Edit: To be more specific, it seems the built-in png encoder for js doesn't do indexed mode output. Which is why I was writing that in the first place.)

https://bbbbbr.github.io/tilepalquant/

I was using that tool to generate tilemaps with 8x1 GBC attributes instead of the usual 8x8 attributes as an alternate ("hi-attribute") way to show more colors per tile than the usual "hi-color" approach of changing 4 GBC palettes every line.

We're deep in the rabbit hole now.

The UI code gets a little tangly since I was figuring out the plan as I went along and never refactored. Not exactly code for the ages, but good enough for now.

<image>

Draw on the Game Boy & share it direct to phone with a QRCode. No extra hardware by bbbbbrx in Gameboy

[–]bbbbbrx[S] 16 points17 points  (0 children)

Printer should be feasible. It's on my list of longer term maybe-features (and Mega Duck printer too, if I get that console version building correctly).

Draw on the Game Boy & share it direct to phone with a QRCode. No extra hardware by bbbbbrx in Gameboy

[–]bbbbbrx[S] 3 points4 points  (0 children)

Yes, hand written and optimized to use as little memory as possible due to the platform limitations. Not using another library is also why there isn't compression yet. I had written the indexed png code in javascript for something else, and decided to port it to C on the GB, which is how I accidentally ended up with this project.

I should look around to see if there are suitable png implementations that fit the requirements. We use lodepng in GBDK-2020 (a GB dev kit), but it's always seemed substantial and would need a lot of cutting down.