Log In  
Follow
kaimonkey
Birb Bird Hills
by kaimonkey
Penny the Pumpkin V1.1
by kaimonkey
[ :: Read More :: ]

Music by @packbat, Game by @kaimonkey

Cart #birbbird-12 | 2023-10-05 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
28

Description

Tiny Wings? Never heard of her! In this totally originally concept, land as many jumps as you can without crashing! Every time you land a jump, you get a point!

Controls

  • X/x If in the air go down, if on the ground go fast
  • Z/O If in the air go down, if on the ground go fast (again)
  • Down If in the air go down, if on the ground go fast (again, again)
  • Clicking the screen If in the air go down, if on the ground go fast (Listen, it's a 1-button game)

Features

  • Five different terrain types which come as you get higher and higher score
  • A trajectory helper to get you to learn the ropes - be careful, once your points go above 5, or your highscore gets to 8 you'll lose it!
  • Music by @packbat which has different instruments change volume when you break a combo!
  • No death screen: every time you lose a combo, you can just start your next attempt straight away. In just a few hills time you'll be back in those gently flower hills, but maybe you'll get some extra cheeky points before you get there

Highscore Table

# Username Score
🥇 @kaimonkey 17
P#135479 2023-10-05 22:00

[ :: Read More :: ]

by @kaimonkey

Cart #blob-25 | 2024-03-04 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
37

Controls

Left/Right arrows: Move Penny left or right
Up/Down arrows: Stretch Penny up or down
X/O/Z buttons: Make Penny jump. HOLD jump for a bigger leap!
Menu/Space: Access the menu, featuring a soft-lock ejector just in case!

Description

Penny the Pumpkin takes you on a delightful platforming journey with light puzzles to solve. Guide Penny, our lovable gourd, as she collects 12 precious coins! Your progress is saved every time she grabs a coin or enters a new area.

Once you've collected all 12 coins, put your skills to the test by unlocking the thrilling speedrun mode! Note that saving is disabled in this mode, so it's all about your skill and reflexes. Can you beat the programmer's current record of 2:51.5? 🏆

Technical Notes


This game uses P9 Compression to have four banks of 16x128 tiles that can be switched between during gameplay.
[128x32]

Each level is then defined as an array of "blocks", where each block is a rectangle of the tilemap somewhere in the level. This allows me to have seven different areas, some of which are quite large, as well as easily having overlapping elements. Blocks can also have properties such as an update method ran each frame, if they should have collision disabled, if they should be drawn in front of the player, if they should be drawn just as a cheap rect fill, if they should be repeated etc. This gives me a lot of power in level design.

The physics is relatively simple, with the character animations being based on a very simple spring math:

spring_dy = (spring_y - spring_y_target) * SPRING_CONSTANT 
spring_dy *= (1-DAMPING_CONSTANT)
spring_y += spring_dy

Each level uses a different screen pallete, which often use the secret palette. Additionally for the title screen, a (trick)[https://www.lexaloffle.com/bbs/?tid=38565] documented by @BoneVolt is used to switch to a different pallete for the area of the screen behind the logo! I had to do some extra bit of bit math to have it drawn to an arbitrary place on the screen without clobbering memory!

 y= 10 -- The vertical position in PIXELS
 h= 3 -- The height in rows of EIGHT pixels
 poke(0x5f5f,0x10) -- enable the effect
 pal(NEW_PAL,2) -- Set the pallete for the section
 pal_memset(0x5f70,0,16) -- clear the settings from previous update
 local rem=flr(y)%8 -- calculate the remainder, since the dual-pallete mode works rows of 8 at a pixels at a time
 pal_memset(0x5f70+(y)/8-1,255<<rem,1) -- Set the flags above where main body made of full 8-high rows can be set
 pal_memset(0x5f70+(y)/8,255,h) --Set the flags for the main body of h 8-pixel-high rows
 pal_memset(0x5f70+(y)/8+h,~(255<<rem),1) -- Set the flags below where main body made of full 8-high rows can be set
function pal_memset(addr, val, len)
 local min_mem = 0x5f70
 local max_mem = 0x5f70 + 18

    if addr >= min_mem and (addr + len - 1) <= max_mem then
        memset(addr, val, len)
    end
end

New in Version 1.2

Halloween Mode

Play between 24th of October and 7th of November and Penny will be a Spooky Jack'o'Lantern! 🎃

New in Version 1.1

Area Complete Notification (And cute heart thought bubble)

  • Penny will now heart her family in

Thought bubble to help players in common difficult locations

.

Speedrun Leaderboard

# Runner Time
🥇 Josiah Winslow 1:20.2 (gif)
🥈 @ikumo 1:22.1 (video)
🥉 @supreee 1:46.9 (gif)
4 @pancelor 1:54.4 (video)
5 @mcman 2:03.7
6 @Ruva 2:26.5
7 @Gabe_8_bit 2:29.3
8 @kaimonkey 2:51.5
9 @VaniaIsAnIdiot 3:34.6
10 @Lisa 3:50.8
11 @TrevorJacobs 3:59.8
12 @Heracleum 5:58.4
13 @phil 6:44.6

Director's cut preview
https://www.lexaloffle.com/bbs/?tid=141450&tkey=nZX1qZ84gsmTCCAwseCn

P#127456 2023-03-22 13:39 ( Edited 2024-04-19 17:28)

Follow Lexaloffle:          
Generated 2024-04-20 08:53:34 | 0.466s | Q:28