Furious Felines 2, Save the cheese!

In 2013, I wrote the original "Furious Felines", inspired by classic artillery games like Gorillas, Worms, and Angry birds.
But almost as soon as it was "ready", new ideas, new features, and things to be fixed came to my head.
A few years later, I started to write what was supposed to be just a cleaned up, slightly improved 1.1 version.
But, features, ideas and fixes keep coming up, and now we have "Furious Felines 2"
First, here is a link to download a disk image of the game, with a manual in PDF and printable versions.
And here is the source of the main program.

For a little while, I thought about offering the game in a SD card, with a printed manual and box, for sale, to help me get some CoCoFest money (I hope to make it back in 2020). But, just shipping from Uruguay to the USA would be $17.50. Plus the cost of the SD card, I would already be in $25. Way too expensive for what I have to offer, and I would still be loosing some money.
Therefore, I've included all the files in the download package, for everyone to print their own manual. If you happen to print it, I would love to see a picture.

Your goal is to make the cats jump over the walls and land on the mouse before it starts eating the cheese, or the cats "chicken out".
The more cats piled up on the left, the further up and away the cat on the right will jump. You will need the right number of cats, and consider the wind and weight of the cats to get a perfect score, but just catching the mouse is not that hard.


The files in the disk are:
FELINES.BAS The game itself.
FELINES.lvl The file with the description of the levels
FELINES.SC2 2 files with the intro image. The game graphics are loaded from this image.
FELINES.DRW The program used to create the graphics and save the SC files. Not needed to run the game.
FELINES.PAL The RGB color palette.
FELINES.CMP The CMP/TV color palette.
FELINES.INT Draws the text screen shown while the game is loading
FELINES.IN1 The loading screen saved in BIN format.
RUNME.BAS Sets up the 320x225 mode, displays the loading screen, and runs the main game file.
TRANSPUT.BIN A ML routine by Paul Thayer that hacks the HPUT command to make the palette entry 0 transparent.
VSYNC.BIN A ML routine by Paul Thayer that syncs the HPUT command with the screen refresh, reducing the flickering.
XF.BAS The X-Filer file manager. Not related to the game.


I usually try to make the code as clear to understand and follow as possible, but this time, I had to make consesions to speed (getting an extra 15-20% performance)
Line 1 to 13: Load the presentation, set up a few things, and call subroutines.
Lines 14 to 26: Main loop. The cat jumps.
Lines 50 to 57: Check if the mouse has been caught and move on.
Lines 75 to 79: Move the mouse.
Lines 100 to 104: Choose which cat will jump.
Lines 125 to 130: Pile up the cats on the left.
Lines 150 to 155: End this level and get the next one going.
Lines 175 to 189: GET the graphics from the intro, and draw the background.
Lines 200 to 210: Load the level and draw it.
Lines 225 to 231: The cat falls from the top of the pile to the spring.
Lines 250 to 255: All levels have been completed.
Lines 275 to 277: Set up the 320x225 screen mode.
Lines 300 to 307: Play intro music, initialize more variables.
Lines 325 to 330: Game over.
Lines 350 to 360: End credits.

HGET Buffers:

Standing cats looking to the right: 1 to 3
Standing cats looking to the left: 4 to 6
Mouse (looking right and left): 7 & 8
Bricks: 9
Moon: 10
Sitting cats: 11 to 13
Sitting cats looking to the left: 14 to 16, currently unused.
Background buffer: 17
Cheese: 18


0 Black
1 Yellow
2 Blue
3 Light gray
4 White
5 Cyan
6 Red
7 Light yellow
8 Dark blue
9 Gray
10 Orange
11 Red
12 Yellow
13 Bright red

Walls: 10,11
Buildings 0
Sky: 8
Windows: 1
Cats: 4,5,6,7,9

The cats will bounce from anything in color 10 or higher.


Levels are defined in the FELINES.LVL file.
The first line has a single number indicating the how many levels are in the file.
Then, there is a line for each level with the following data:
A first wall, always set for position 0,17. This is actually where the cats stand to pile up.
Another 4 walls, defined with the horizontal position of the left side, and the height. Set unused walls as 0,0. Horizontal should not be more than 318, and height should not be more that 150.
The next two values are the mouse's horizontal position, and the speed at which it will move.
Finally, the cheese's horizontal position.

Here here is the download link again.