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

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

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. :|