looking up and loaf mode. 🐱🍞

#gameboy #gamedev #pixelart #retrogaming #projectwhiskers

whiskers picked up a power star. 🐱🌟

#gameboy #gamedev #pixelart #retrogaming #projectwhiskers

got basic room switching working. the plan is to store only a bump map for each room and decorate on load that so the world can be quite big.

#gameboy #gamedev #pixelart #retrogaming #projectwhiskers

finally got some time again… and procrastinating on the hard stuff, so adding different weather effects.

you almost don't see it's part of the cat's face falling from the sky. πŸ™ƒ

#GameBoy #GameDev #PixelArt #RetroGaming #ProjectWhiskers

more randomness to the particles. different directions and floatiness.

to save sprite slots I think I'll use about 4 particles with different fixed behaviours. like the ghosts in Pac-Man that look more random and complex than they really are.

#GameBoy #GameDev #PixelArt #RetroGaming #ProjectWhiskers

already ran into a case where the #GameBoy chip design really shows itself: doing (x % 2) is fine. (x % 3)? MASSIVE slowdown. :)

#GameBoy #GameDev #PixelArt #RetroGaming #ProjectWhiskers

made a 8x8 pixel font so I can actually get some debug info on the screen. been doing almost without for too long… :)

#GameBoy #GameDev #PixelArt #RetroGaming #ProjectWhiskers

here's a version with the "fat" side of the letter on the right instead. it looks a bit lighter and more playful.

font folks: what's that called?

@hbons in general it’s contrast. Not sure if the asymmetry makes a difference.
@hbons
Looks really great! Just the W is unreadable, IMHO.
@amarok that's the trickiest one... it looks better when in a word. same with M. :)
@hbons I am sorry to rain on your parade; the thick lines are not generally based on the side where they are but on the direction of the stroke. Imagine you draw with a feather: drawing down makes the stroke thick, up thin. So, for instance, the letter N is thin/thick/thin, and V has a thick left line and a right light line. If you make the lines thick just because the lines on the right hand are wide, the font will look unbalanced.
@vancura @hbons Which precisely why this stands out. I dig it!
@hbons That means the letter U should be flipped. I think you’re almost there. Most of the glyphs look great; it’s just minor touches that the font needs. I can help you when I am back from Avatar later today, and I would love to :)
ok, ChatGPT just completely made up a function that doesn't even exist... anyone who can tell me how to change the palette on the window layer, you get to keep your job! :)
@hbons The window shares the same palette as the background

strings in C really are a pain! 😱 but managed to figure it out eventually.

it can only print a string, or max 2 names/values to the screen. but this will be a huge step up going forward. :)

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

a bit more automated decoration! 🏑

when a single block is sticking out of the floor/wall, it has a chance of turning into a chimney/shelf.

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

pretty happy with how much atmosphere such small details add. :)

next: windows! anyone remember this?

@hbons I love the cat sprite. It is so cute!
@jakub_neruda just wait until I add an animated tail! 🐈
@hbons This is a nice font. πŸ˜„ Too nice to be used just for debug info, haha.
@SirEdav thanks! I'll also use it for some menu stuff. I don't think there's memory for a whole lot of dialogue sadly. :)
@hbons look up table for it?
@hbons I'd have expected that on just about any older chip, 'x%2' is just a bitwise AND, but for 'x%3' you have to do tricks, if not a full divide

@hbons πŸ‘ πŸ‘ yeah, if using SDCC/GBDK then the compiler knows it can optimize modulo powers of 2 to bitmask operations.

This may not have been true for older sdcc versions, but i haven't checked.

I think I got a decent balance going. there are only 4 particles. 1 moves right, the other 3 move diagonally, 2 of which downward.

also the weather resets when moving from room to room.

next: proper tiles and and some fade in/out effects. :)

#GameBoy #GameDev #PixelArt #RetroGaming #ProjectWhiskers

you can't have atmosphere in a game without these particles apparently. whatever they may be is a mystery. 🧚

#GameBoy #GameDev #PixelArt #RetroGaming #ProjectWhiskers

got some block decorating working! 🏠

it's not very efficient as I'm looping the screen data twice (and will likely do more) but it doesn't need to be fast as this game will not scroll. also I prefer several task based loops over a single complex one.

#GameBoy #GameDev #PixelArt #RetroGaming #ProjectWhiskers

oh yea, the SameBoy emulator allows for several borders and palettes to check the game in different hardware. keeps things fresh too. super nice. :)

#GameBoy #GameDev #PixelArt #RetroGaming #ProjectWhiskers

the Pocket is my favourite for original GB games. the Color and Advance use different colours for sprites and backgrounds, which can give away secrets or show implementation quirks.

improved the block decorations a little. now different sides get treated differently.

next I want to throw some randomness into the mix and seed the RNG with the room number so it will always look the same. 🧱

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

I'm keeping the level blocks in an array in RAM, but maybe that's wasted space and I should just use Video RAM and use set_bkg_tile_xy() and get_bkg_tile_xy() to read and manipulate the data directly there instead?
I'm not even optimizing yet and I don't think I will even reach the limits of what the #GameBoy can do. it's a pretty powerful device. :D
@hbons Usually it is best practice to use RAM since get_bkg_tile_xy() and related have to wait for "safe" VRAM access times (vblank and hblank), whereas with RAM you can access at any time without delay.
@bbbbbr thanks! I don't need it to be fast for room switching, but I'll need the data later for collisions so that's good to know. :)

some more special cases solved. edge/corner decorations now won't happen at the edges of the screen.

platform blocks are 16x16, but decorations get decided in 8x8 sections. I like how this creates unintentionally smooth patterns without even adding randomness or extra tile variations yet. :)

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

ok, that was a huge pain.πŸ˜…

collisions now work! in the left/right direction only. I'm sure there are endless bugs with it, but I'm so glad I got something functional.

now at least I have a mental model of the logic to build on it further. :)

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

I wrote the can_move_down() function. then I let ChatGPT write the can_move_up function and it worked. :|