Any thoughts on making it run in portrait mode?
Implementing Classic Mode
So I've decided to attempt to implement a "classic" mode which is meant to be a faithful reproduction of the original Gimme Friction. The original game is designed around a 4:3 640x480 window with 120 pixel sidebars yielding a game space of 400x480 with the bottom shooter area 85 pixels tall.
Early on in the development process I opted to deviate from this aspect ratio due to the physical limitations on the playdate. The original was a 4:3 aspect ratio (1.33) while the playdate is 16:9.6 (1.66). If you take the original board space of 400x480 and scaled it down 50% you get 200x240 which nicely fits on the playdate's 400x240, but because of the wider screen aspect ratio, the sidebars would need to be 100 pixels on each side wasting half available pixels. These sidebars would be 166% the size of the original leading making the whole thing look distorted and unbalanced. This felt like a huge waste to release a game that only used half the available pixels on an already small screen.
So I implemented a compromise. I made the playdate version have a wider board than the original. Instead of having the 100pixels sidebars using 50% of the horizontal screen, I opted for 75pixel sidebars using only 37.5%. Since the original sidebars took 40% of the screen width the result was a design that felt visually very similar to the original (horizontally speaking)
Naturally this improved visual came at the expense of vertical space used for gameplay. I adjusted the initial velocity parameters so that a ~45 degree bounce shot still landed on the center of the top rail which makes it feel similar to the original, it's definitely a different feeling. As someone who has spent many hundreds of hours playing this game, in my opinion it makes the Playdate version feel a bit claustrophobic.
The other major difference is the radius of the balls as they come out of the shooter (`ballSize` in the code). In the original these balls are 20pixels tall (ballSize=10). A strict 50% scaled down port of the original ball would be 10 pixels tall (ballsize=5). On the 173ppi playdate display this means the primary game motion is a moving dot that's only 1/20th of an an inch big. So I went with 18 pixels tall (ballsize=9).
And so I present an ugly prototype of classic mode:
I haven't yet drawn a ball which is 10pixels tall (shown above is 12pixels), obviously the sidebars need to be more responsive in their layout, the pass line likely needs to be adjusted down as we well as the shooter shrunk to make it appropriate for the smaller shots.
I'm hoping to have this incorporated into a proper release in the near future, but in the meantime if you'd like to take a give this prototype a whirl, on Github check out the classic_mode branch or follow along in the associated Pull Request.