changed to a Sonic-style ball jump. makes it easier to add all kinds of mechanics. βšͺπŸ’¨

it looks better too in my opinion. what do you think?

#GameBoy #GameDev #PixelArt #RetroGaming #Nintendo #ProjectWhiskers

new map screen. gives a good sense of what the size of the world will be. πŸ—ΊοΈ

the unvisited tile looks a bit like Tetris blocks. may change it later...

#GameBoy #GameDev #PixelArt #RetroGaming #Nintendo #ProjectWhiskers

the minimap now shows room exits. so you can see the path you've traced. only for visited rooms, so it doesn't give away any secret exits. :)

this was a lot of work... the room exit directions are generated into some spare bits of the world data at compile time.

it's still very slow, but haven't looked at optimisations yet. maybe I'll keep it this way and create a scroll unroll effect instead? πŸ“œ

#GameBoy #GameDev #PixelArt #RetroGaming #Nintendo #ProjectWhiskers

never had to think about compiler output before... really want to stick to that 32kb limit. :)

rewrote this lookup function to output 150 lines of assembly instead of 370.

#GameBoy #GameDev #PixelArt #RetroGaming #Nintendo #ProjectWhiskers

finally got some useful insight into ROM space thanks to @bbbbbr's romusage tool. πŸ”

https://github.com/bbbbbr/romusage

41% free is a lot, since the world is a fixed size and already included. should be enough to make it a rich game!

#GameBoy #RetroDev #GameDev #PixelArt #RetroGaming #Nintendo #ProjectWhiskers

GitHub - bbbbbr/romusage: A small command line tool for estimating usage of Game Boy ROMs from map files, .noi files, binary ROMs and more

A small command line tool for estimating usage of Game Boy ROMs from map files, .noi files, binary ROMs and more - GitHub - bbbbbr/romusage: A small command line tool for estimating usage of Game B...

GitHub
@hbons @bbbbbr I think text takes up a lot of space though so that's something to consider.
@Jeltron @bbbbbr one letter for in-game text is one byte right? that adds up quick.
@hbons @bbbbbr I guess so, I have to admit I don't know exactly how it works under the hood.

@hbons @Jeltron Yeah, one byte per character.

Although, the people who make compiler (SDCC) have periodically worked on automatic compression of init data for some types of C vars. I think still turned off though.

@bbbbbr @Jeltron it makes Wordle even more impressive!
@hbons Nice! It's a fun challenge to try and fit in 32K.
@hbons This is actually safer than RSA.
@vancura let's integrate it everywhere!
@hbons No, *you* integrate it everywhere! The Switzerland office will approve :)

finally got some time again. added an inventory screen. 🧭 πŸ—ΊοΈ

I've no clue what most of the items should be. ideas welcome!

#GameBoy #GameDev #PixelArt #8bit #RetroGaming #Gaming #Nintendo #ProjectWhiskers

the #SuperGameboy can give the illusion that original games are full colour by clever use of its default palette.

it uses red mostly. but the darks in the background lean towards the purple, and the lights in the sprites lean towards the yellow.

really makes things pop! 🀩

#GameBoy #GameDev #PixelArt #8bit #RetroGaming #Gaming #Nintendo #ProjectWhiskers

hyperfocus is one hell of a drug. too bad it's an uncontrolled substance.

you get a custom border for the elusive #GameBoyLight when you set emulation to Pocket and the monochrome palette to Teal. πŸ’‘

(totally missed this because you need to reboot the game for it to take effect and the palette is very low contrast so I never use it)

#GameBoy #GameDev #PixelArt #8bit #RetroGaming #Gaming #Nintendo #ProjectWhiskers

@hbons Does sameboy support save states?
@Jeltron no idea, I've only used it for development so far. :)
@hbons I use save states a ton when developing games and I love how sameboy looks but wasn't able to find a save state function in it. Save states are really useful for backing out of a crash without having to reset the game.
@Jeltron good idea. I haven’t gotten to a point where I can’t get to with a quick reboot yet. maybe in the future,

@Jeltron @hbons This is such a great tip, save states are so useful for testing.

A bunch of the accurate GB emulators are also starting to get rewind support in the debugger which helps (less for GBS though, I guess).

Sameboy does have save states.

For hotkeys it should be:
save: CTRL+0 through 9
restore: CTRL+SHIFT+0 through 9

Unsure of the Mac UI (I'm on linux), but you can see it set up here, maybe under "Emulation" :
https://github.com/LIJI32/SameBoy/blob/7e6f1f866e89430adaa6be839aecc4a2ccabd69c/Cocoa/MainMenu.xib#L217

SameBoy/Cocoa/MainMenu.xib at 7e6f1f866e89430adaa6be839aecc4a2ccabd69c Β· LIJI32/SameBoy

Game Boy and Game Boy Color emulator written in C. Contribute to LIJI32/SameBoy development by creating an account on GitHub.

GitHub

@bbbbbr @hbons Thats really great to know! I just started using mGBA for testing games. It seems to have a ton of features. I can even turn off the window, sprite, and bg layers individually to reverse engineer how old games were made.

I feel like it's underrated as a DMG/GBC emulator. I rarely see it mentioned.

I do like the lcd filter in Sameboy better though...

@hbons I kinda want a little mechanical mouse, could be useful for puzzles and fits the theme.
@hbons cutest little inventory screen :-)
@hbons speak to chatgpt free version, tell it what you think that game should be about, and then hit it with straight up questions: what would the first level setting be? what quests can I add to the first level? What items would player need to solve these quests? You can also ask for witty or funny suggestions, it will try to fulfill that too.
@kvakvs I do this sometimes, but it never comes up with something original. only boring stuff. :)
@hbons The good thing that it does: it prints the most obvious solution, and a very detailed one. Then you can select things which are really boring and you've seen them 1000 times, and replace them with your creativity. Gives a framework for the thought. It can't give really original twists but it removes the writer block from your brain πŸ€”

messed up when writing the palette switching logic, but kind of digging the look. πŸ€”

#GameBoy #GameDev #PixelArt #8Bit #Retro #RetroComputing #RetroGaming #Gaming #Nintendo #ProjectWhiskers

@hbons That looks nice indeed! Maybe keep it as an option switchable with a sequence of control keys.

got a bit carried away with this one... πŸƒπŸ±βœ¨πŸ“œ

toggling the leaves at certain y-values makes it seem like they go behind the popup. the animation adds to the effect. :)

#GameBoy #GameDev #IndieDev #PixelArt #8Bit #Retro #RetroComputing #RetroGaming #Gaming #Nintendo #ProjectWhiskers

I want to improve the room draw time.

because of the limited ROM size only the bump map is stored and the room is decorated when switching rooms.

however this has a noticable delay (~20 frames). found this interrupt snippet so I can print how many frames were dropped and I can measure progress. πŸ‘

#GameBoy #GameDev #IndieDev #PixelArt #8Bit #Retro #RetroComputing #RetroGaming #Gaming #Nintendo #ProjectWhiskers

also... did you know that the #GameBoyColor has a CPU that's twice as fast? ⚑

you can make use of it like this:

#GameBoy #GameDev #IndieDev #PixelArt #8Bit #Retro #RetroComputing #RetroGaming #Gaming #Nintendo #ProjectWhiskers

@hbons I really, really need and want to take time to play around developing for actual GB hardware... it's always so fun to hear about the architecture and tidbits about it!
the tools are pretty good these days! documenting all my pitfalls for others in this thread. :P
@hbons It's actually highly inadvisable to do this: this introduces extra differences between DMG and CGB (anything timing-related will behave differently) which make them extra hard to test for;
and usually that ends up with highly unoptimised code that barely passes on CGB but lags af on DMG.
@hbons the custom camera ROM β€œPhoto!” makes uses of this and the faster Color crystal to allow it to allow the viewfinder frame rate to run at double speed! 🀯

alright! got about 25% speed improvement! πŸ’ͺ

there's a small bug, but too tired to fix that now...

the screen transition already feels better. need to iterate over 360 tiles, so I would be happy to get it close to 10 frames...

then I might load the next room in chunks in the leftover processing time as you're walking towards it and make it feel instant. 🀯

#GameBoy #GameDev #IndieDev #PixelArt #8Bit #Retro #RetroComputing #RetroGaming #Gaming #Nintendo #ProjectWhiskers

11! πŸ₯³

it's very smooth now, will post a before/after recording later. :)

lessons: was using a modulo-% somewhere. removed many function calls inline and simplified the calculations. moved stuff out of loops that didn't have to be recalculated.

#GameBoy #GameDev #IndieDev #PixelArt #8Bit #Retro #RetroComputing #RetroGaming #Gaming #Nintendo #ProjectWhiskers

7! πŸ™ƒ

had some redundant index/row/col calculations, and removed their reliance on non-powers-of-2 multiplications.

didn't think I could get it below 10. :D

#GameBoy #GameDev #IndieDev #PixelArt #8Bit #Retro #RetroComputing #RetroGaming #Gaming #Nintendo #ProjectWhiskers

I can't decide which map style to use. which do you prefer? πŸ—ΊοΈ (poll in the reply)

#ProjectWhiskers #GameBoy #GameDev #IndieDev #PixelArt #8Bit #Retro #RetroComputing #RetroGaming #Gaming #Nintendo

@hbons The left is easier on the eyes.
@hbons I don’t understand much of game dev but would this game theoretically run on a physical game boy? And which programming language are/were used to develop game boy games back then?

@lontrachen yes, already got it running on real hardware. :)

back then it was done in assembly, but I think they also used C at the end.

I'm using C, but you need to be really careful about how it translates to assembly to not make it too slow. it's kind of fun!

https://mastodon.social/@hbons/110730683061192892

@hbons Ah, ok. Very nice! I was reading a bit about ROMs and emulation and started wondering about it.
@lontrachen I'm using the SameBoy emulator for development. it's super accurate. only pop it into the real GB sometimes to check the colours.
@hbons I'll take a look on that. I'm more interested in decompiling a game and seeing how it works on the inside. But I assume it would be more assembly?
@hbons This looks really nice. Will you be sharing/ selling the rom so others can play it?
@binarymoon totally! it will take a while though. :)

@hbons no hurry πŸ˜ƒ

Coincidentally I've been thinking about making a platformer for the Gameboy too. I was going to use it as an excuse to learn GB studio.

@binarymoon I'd say go for it. it's a lot of fun. :)
@hbons sooo… howβ€˜s the frame rate? Is it like in the emulator?
@SushiLibre yes, identical. using SameBoy which is very accurate emulating the CPU limit.

@hbons It looks beautiful 😍

What genre will it be
when finished?

@theretrosven thank you. :)

somewhere between a puzzle-platformer and a Metroid I hope.

@hbons seems more like a 'Meow'troidvania πŸ‘

Keep me updated, I would love to play it one day 😊

@hbons I know how hard it is to get a picture like this w all the reflections on those screens!