Froggo is a retro action game by Paul Wasson for the 1980s Apple // computers. The game is inspired by the original Frogger and the more recent Crossy Road.
Latest released disk image: Froggo version 1.2.2
Previous version: Froggo version 1.0.2
Also available to play online via Apple2TS emulator (version 1.2.2)
Apple //e or later with 128K of memory
Color or monochrome monitor
5¼" floppy drive
Free download (see above) -- fits on a single sided ProDOS 5¼" disk
Uses double buffered hires graphics
25* unique levels of increasing difficulty
Large, zany completion images after each level in a random order
Original two-tone music using Electric Duet by Paul Lutus
Smooth per pixel vertical scrolling for cars, trucks, logs, turtles and more
Support for color and monochrome monitors, like the Apple Monitor II
Configurable controls
2 game modes:
Casual - repeat levels until complete
Challenge - failure will restart the game from the beginning
A graphics editor is included on the disk to change any of the sprites, backgrounds or Froggo himself
Suitable for all ages
*Complete challenge mode for an additional bonus level!
Use the [A] and [Z] keys to hop up or down. Use [←] [→] to hop left or right.
On each level, Froggo starts on the left side of the screen. The objective is to get him to hop off the right side of the screen.
Trees and bushes will block his way, and watch out for speeding cars and trucks. He will have to hop on rocks and logs to cross rivers, but not fall in! He can also hop on turtles, unless they go under water.
More challenges await in later levels.
Press the [ESC] key to pause and access the menu.
All the vertical environment scrolling is done using unrolled loops in extended memory. There are 16 256-byte buffers that are used to transfer the sprite data directly onto specific columns of the screen that use absolute indexed addressing, instead of indirect addressing, that make it run faster. By offsetting into the buffer, the sprites can be displayed at any offset within the 128 row window. The code is repeated for both graphic pages.
The unrolled loops look like:
...
LDA $A100,Y ; read buffer
STA $2200,X ; write screen
LDA $A101,Y ; read buffer
STA $2600,X ; write screen
...
Where Y is the offset into the buffer and X is the screen column.
When completely unrolled, the scrolling code takes up over 24KB of extended memory of almost completely straight-line code with only a handful of branches. It doesn't need to use indirect addressing, calculate screen location or add buffer offsets since it is all baked into the code.
Other data, like level data and some images are also stored in the extended memory to reduce disk access.
This whole game came out of an experiment in doing vertical scrolling by unrolling code that writes a 256-byte buffer directly onto the screen (see 128K question above). After getting this to work and happy with the results, I tried to figure out what game would work with this mechanism and thought about cars on a road which made me think of Frogger, but turned on its side.
Disk image and source code available on the Froggo GitHub page.
If you've enjoyed Froggo or any of my other software projects and want to support the site, feel free to buy me a latte.
Here is Froggo running on my enhanced Apple //e with a real CRT Apple Monitor II green monochrome 12-inch monitor, showing off the monochrome support. Sorry about the poor lighting, but it looks really sharp in person.
Rewrote collision detection to cover entire playing field (20x16 = 320 tiles)
This allows Froggo to not die until hitting the edge of the map (note there is still some delay when jumping)
Detect if drifted into blocked tile on a jump from a moving log and place Froggo on an unblock tile
Display version number on info screen
Train track visuals updated to have railroad ties
Froggo now shown in the rightmost column when finishing a level
Can also jump into the leftmost column
Final level
Hitting a key doesn't interrupt the final level closing animation
Small cosmetic change to right side of final level
Pause turtle/train state in death just like the motion
Improve erasure code to have less visual glitches
Don't strobe keyboard after death song so can restart level quicker
Fixed top level directory disk corruption
Initial world wide release