Assignment 1: Cat Scan in MIPS
version: 1.1 last updated: 2025-03-07 16:50:00
Aims
- to give you experience writing MIPS assembly code
- to give you experience translating C to MIPS
- to give you experience with data and control structures in MIPS
Getting Started
Create a new directory for this assignment
called cat_scan
,
change to this directory,
and fetch the provided code
by running these commands:
mkdir -m 700 cat_scan cd cat_scan 1521 fetch cat_scan
If you're not working at CSE, you can download the provided files as a zip file or a tar file.
This will add the following files into the directory:
-
cat_scan.s
: a stub MIPS assembly file to complete. -
cat_scan.c
: a reference implementation of cat scan in C. -
cat_scan.simple.c
: a copy of the reference implementation of cat scan, for you to simplify. -
input.txt
: example input file. -
cat_scan.mk
: a make(1) fragment for compilingcat_scan.c
.
πΊπ¦ Cat Scan: The Game π§Άπ»
1521 mipsy cat_scan.s =============================================================== Welcome to Cat Scan! =============================================================== βββββββββββ βββββββββββ βββββββββββ β /\_/\ β β /\_/\ β β /\_/\ β β ( o.o ) β β ( ^_^ ) β β ( -.- ) β β / \ β β / \ β β / \ β βββββββββββ βββββββββββ βββββββββββ =============================================================== Enter a random seed (from 0 to 65535): 12 Enter a height (from 4 to 12): 4 Enter a width (from 4 to 12): 4 =============================================================== There are 1 cats hidden in a 4-by-4 box. Your goal is to deduce their locations by rolling balls of string in from the edges and noticing where they exit the grid. Balls of string interact with cats as follows: - Absorbed: when hitting a cat directly. - Deflected 90 degrees: when passing diagonally near a cat. - Reflected: when aimed between two cats one square apart. - Reflected: when deflected before entering the box. - Straight-line: otherwise (no interaction). Starting Score: 100 Points/Costs: - Correct guess = +25 points - Incorrect guess = -25 points - Rolling a ball = -12 points Available Commands: h - Print this help message. p - Print the game. a - Toggle auto-print ON/OFF. g - Guess a cat location. r - Roll a ball of string. s - Print game stats. c - Cheat (reveal cat positions). d - Debug info. q - Quit the game. =============================================================== Enter Command: g (guessing cat location) Enter a row edge number (from 1 to 4): 3 Enter a col edge number (from 5 to 8): 8 βββββ¬ββββ¬ββββ¬ββββ β β β β β βββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ β 16β 15β 14β 13β βββββ βββββΌββββΌββββΌββββΌββββΌββββ βββββ β β β 1 β β β β β 12β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 2 β β β β β 11β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 3 β β β β^_^β 10β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 4 β β β β β 9 β β β βββββ βββββΌββββΌββββΌββββΌββββΌββββ βββββ β 5 β 6 β 7 β 8 β βββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ β β β β β βββββ΄ββββ΄ββββ΄ββββ Good Guess! [+25 points] You found "Baron Chonk" All cats found. βββββββββββ β /\_/\ β β (*^_^*) β β / \ β βββββββββββ You win! Final Score: 125
Cat Scan is a variation of Black Box, a game where players shoot X-rays into a box to determine the locations of atoms hidden inside.
In cat_scan.c
, cats are hidden in a box across a two-dimensional grid.
The goal is to deduce their locations by rolling
balls of string
into the box and observing where they exit the grid.
The image below illustrates a game in which 4
cats are hiding in an 8-by-8
box.
The edges of the box are numbered counterclockwise from 1
to 32
.

Balls of string interact with cats as follows:
-
Absorbed: When colliding directly with a cat.
The green arrow shows the path travelled by a ball of string rolled from
edge
22
. This ball collides directly with the cat at the[2][3]
, so it is absorbed. The edge is labelled with an A to record this result. -
Deflected 90 degrees: When passing diagonally near a cat.
The blue arrow shows the path travelled by a ball that enters from
edge
21
. This ball is deflected90
degrees to the left by the cat at[2][3]
, then90
degrees to the right by the cat at[5][5]
. The ball continues rolling and is deflected twice more before exiting the box at edge4
. The edges21
and4
are labelled 4 and 21, respectively. -
Reflected: When aimed between two cats one square apart.
The path of the ball rolled from edge
2
is aimed between the two cats at[0][3]
and[2][3]
so it reflects. It exits the box from the same edge it entered, which is labelled with an R. -
Reflected: When passing by a cat located on the edge.
The path of the ball rolled from edge
28
passes cat[0][3]
, which is located at the edge of the box, so the ball reflects, exiting the box from the same edge that it entered from. Again, this edge is labelled with an R. -
Straight Line Travel: Otherwise.
The dark gold arrow shows the path travelled by a ball of string rolled from
edge
8
. It doesn't interact with any cats, so continues in a straight line and exits the box at edge8
. The edges8
and17
are labelled 17 and 8, respectively.
Note: absorption takes priority over deflection.
When playing the game, the player has two main commands:
-
g
(guess) allows the player to guess the location of a cat. -
r
(roll) rolls a ball of string into the box from a given edge.
An example game of cat scan can be seen to the right.
To get a feel for this game, try it out in a terminal:
dcc cat_scan.c -o cat_scan ./cat_scan
You should read through cat_scan.c
.
There are comments throughout it
that should help you understand
what the program is doing
[citation needed]
β which you'll need for the next part of the assignment.
cat_scan.s: The Assignment
Your task in this assignment is
to implement cat_scan.s
in MIPS assembly.
You have been provided with some assembly
and some helpful information in cat_scan.s
.
Read through the provided code carefully,
then add MIPS assembly
so it executes exactly the same as cat_scan.c
.
You have to implement the following functions in MIPS assembly:
-
main
-
print_welcome
-
game_setup
-
prompt_for_int
-
initialise_ball_of_string
-
initialise_ball_paths
-
initialise_box
-
print_stats
-
game_loop
-
is_cat_at_position
-
do_move_ball_forward
-
do_turn_ball
-
spawn_cats
-
guess_cat_location
-
handle_ball_movement
-
generate_cat_name
-
roll_ball_of_string
You must translate each function separately to MIPS assembler, following the standard calling conventions used in lectures. When translating a function, you must not make any assumptions about the behaviour or side effects of any function which is called.
The following functions have already been translated to MIPS assembly for you:
-
random_in_range
-
update_random_number
-
process_command
-
print_help
-
print_debug_info
-
print_smiling_cat
-
print_crying_cat
-
configure_ball
-
check_ball_interactions
-
edge_number_from_position
-
print_game
-
print_game_row_upper
-
print_game_row_inner
-
print_game_row_lower
-
print_grid_row_edge
-
print_grid_row_edge_upper
-
print_grid_row_edge_inner
-
print_grid_row_edge_lower
-
print_grid_row_cells
-
print_cell_content
-
is_position_in_box
-
is_position_an_edge_number
-
is_position_a_path_result
-
print_edge_number
Subsets
This assignment is split into four subsets. Later subsets will involve more complex translation.
Subset | Functions | Performance Weight |
---|---|---|
Subset 0 |
|
10% |
Subset 1 |
|
45% |
Subset 2 |
|
25% |
Subset 3 |
|
20% |
The performance mark for the final subset also includes tests which run the program as a whole.
Commands
The get_command
function calls various other functions. When
translating you should follow the exact behaviour of the C code, however when
testing you may find it useful to consult the following table of commands.
Command | Description | Function called |
---|---|---|
h | Print this help message | print_help |
p | Print the game | print_game |
a | Toggle auto-print ON/OFF | |
g | Guess a cat location | guess_cat_location |
r | Roll a ball of string into the box from an edge | roll_ball_of_string |
s | Print game stats | print_stats |
c | Cheat (shows cat locations) | print_game |
d | Output debugging information | print_debug_info |
q | Quit the game |
Running & Testing
To run your MIPS code, simply enter the following in your terminal:
1521 mipsy cat_scan.s
Manual Testing
Once you have finished your translation, to test your implementation, you can compile the provided C implementation, run it to collect the expected output, run your assembly implementation to collect observed output, and then compare them.
The game takes a lot of input, so it's a good idea to write a file with the input you want to test, and then pipe that into your program.
You have been given a file called input.txt
as an example.
dcc cat_scan.c -o cat_scan cat input.txt | ./cat_scan | tee c.out cat input.txt | 1521 mipsy cat_scan.s | tee mips.out diff -s c.out mips.out Files c.out and mips.out are identical
Try this for different sequences of inputs. When testing some
functions you may find using the d
command (which
calls print_debug_info
) to be useful.
Automated Testing
There are two types of autotests for this assignment:
- Whole Program Tests
- Function Tests
Whole Program Tests run your entire cat_scan.s
file and compare the observed output against the expected output. These tests
are generally not practical until most or all of your functions have been
implemented in MIPS.
Function Tests only test individual functions from cat_scan.s
.
These tests isolate a function and run it separately to the rest of your solution.
For example, you can test the main
function with:
1521 autotest cat_scan mainThe result of this test is based entirely on the implementation of the
main
function. It does not depend on the correctness of any
other functions that main
calls, such as print_welcome
,
game_setup
, or game_loop
.
Hints
-
You should implement all the functions from one subset before moving on to the next.
-
You may find the provided
process_command
andprint_debug_info
function implementations to be useful guidance for your implementation including comments, label names, indentation and register usage.
Simplified C code
You are encouraged to simplify your C code
to remove any loop constructs and if-else
statements, and test that your simplified
code works correctly before translating it
to MIPS, in a separate file
cat_scan.simple.c
.
This file will not be marked - you do not need to submit it.
In order to allow you to check that your simplified code works correctly, we have provided a simple set of automated tests.
You can run these tests by running the following command:
1521 autotest cat_scan.simple
An example game of Cat Scan
1521 mipsy cat_scan.s =============================================================== Welcome to Cat Scan! =============================================================== βββββββββββ βββββββββββ βββββββββββ βββββββββββ βββββββββββ β /\_/\ β β /\_/\ β β /\_/\ β β /\_/\ β β /\_/\ β β ( o.o ) β β ( ^_^ ) β β ( -.- ) β β ( uwu ) β β ( z_z ) β β / \ β β / \ β β / \ β β / \ β β / \ β βββββββββββ βββββββββββ βββββββββββ βββββββββββ βββββββββββ =============================================================== Enter a random seed (from 0 to 65535): 3778 Enter a height (from 4 to 12): 8 Enter a width (from 4 to 12): 8 =============================================================== There are 4 cats hidden in a 8-by-8 box. Your goal is to deduce their locations by rolling balls of string in from the edges and noticing where they exit the grid. Balls of string interact with cats as follows: - Absorbed: when hitting a cat directly. - Deflected 90 degrees: when passing diagonally near a cat. - Reflected: when aimed between two cats one square apart. - Reflected: when deflected before entering the box. - Straight-line: otherwise (no interaction). Starting Score: 400 Points/Costs: - Correct guess = +25 points - Incorrect guess = -25 points - Rolling a ball = -25 points Available Commands: h - Print this help message. p - Print the game. a - Toggle auto-print ON/OFF. g - Guess a cat location. r - Roll a ball of string. s - Print game stats. c - Cheat (reveal cat positions). d - Debug info. q - Quit the game. =============================================================== Enter Command: p (printing game) βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β β β β β β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β 32β 31β 30β 29β 28β 27β 26β 25β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β β β 1 β β β β β β β β β 24β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 2 β β β β β β β β β 23β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 3 β β β β β β β β β 22β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 4 β β β β β β β β β 21β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 5 β β β β β β β β β 20β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 6 β β β β β β β β β 19β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 7 β β β β β β β β β 18β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 8 β β β β β β β β β 17β β β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 9 β 10β 11β 12β 13β 14β 15β 16β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β β β β β β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ Enter Command: s (printing game stats) You have 400 points = 16 guesses / 16 roll(s) left, with 4 cat(s) remaining. Enter Command: g (guessing cat location) Enter a row edge number (from 1 to 8): 4 Enter a col edge number (from 9 to 16): 13 βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β β β β β β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β 32β 31β 30β 29β 28β 27β 26β 25β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β β β 1 β β β β β β β β β 24β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 2 β β β β β β β β β 23β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 3 β β β β β β β β β 22β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 4 β β β β β X β β β β 21β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 5 β β β β β β β β β 20β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 6 β β β β β β β β β 19β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 7 β β β β β β β β β 18β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 8 β β β β β β β β β 17β β β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 9 β 10β 11β 12β 13β 14β 15β 16β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β β β β β β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ Bad Guess [-25 points] You have 375 points = 15 guesses / 15 roll(s) left, with 4 cat(s) remaining. Enter Command: r (rolling ball of string from edge) Enter an edge number (from 1 to 32): 30 βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β β A β β β β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β 32β 31β 30β 29β 28β 27β 26β 25β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β β β 1 β β β β β β β β β 24β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 2 β β β β β β β β β 23β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 3 β β β β β β β β β 22β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 4 β β β β β X β β β β 21β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 5 β β β β β β β β β 20β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 6 β β β β β β β β β 19β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 7 β β β β β β β β β 18β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 8 β β β β β β β β β 17β β β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 9 β 10β 11β 12β 13β 14β 15β 16β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β β β β β β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ Ball entered 30 and was ABSORBED Roll Cost [-25 points] You have 350 points = 14 guesses / 14 roll(s) left, with 4 cat(s) remaining. Enter Command: r (rolling ball of string from edge) Enter an edge number (from 1 to 32): 1 βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β β A β β β β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β 32β 31β 30β 29β 28β 27β 26β 25β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 24β β 1 β β β β β β β β β 24β β 1 β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 2 β β β β β β β β β 23β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 3 β β β β β β β β β 22β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 4 β β β β β X β β β β 21β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 5 β β β β β β β β β 20β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 6 β β β β β β β β β 19β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 7 β β β β β β β β β 18β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 8 β β β β β β β β β 17β β β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 9 β 10β 11β 12β 13β 14β 15β 16β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β β β β β β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ Ball entered 1 and exited 24 Roll Cost [-25 points] You have 325 points = 13 guesses / 13 roll(s) left, with 4 cat(s) remaining. Enter Command: r (rolling ball of string from edge) Enter an edge number (from 1 to 32): 2 βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β 2 β A β β β β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β 32β 31β 30β 29β 28β 27β 26β 25β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 24β β 1 β β β β β β β β β 24β β 1 β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β 31β β 2 β β β β β β β β β 23β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 3 β β β β β β β β β 22β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 4 β β β β β X β β β β 21β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 5 β β β β β β β β β 20β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 6 β β β β β β β β β 19β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 7 β β β β β β β β β 18β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 8 β β β β β β β β β 17β β β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 9 β 10β 11β 12β 13β 14β 15β 16β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β β β β β β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ Ball entered 2 and exited 31 Roll Cost [-25 points] You have 300 points = 12 guesses / 12 roll(s) left, with 4 cat(s) remaining. Enter Command: r (rolling ball of string from edge) Enter an edge number (from 1 to 32): 11 βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β 2 β A β β β β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β 32β 31β 30β 29β 28β 27β 26β 25β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 24β β 1 β β β β β β β β β 24β β 1 β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β 31β β 2 β β β β β β β β β 23β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 3 β β β β β β β β β 22β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 4 β β β β β X β β β β 21β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 5 β β β β β β β β β 20β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 6 β β β β β β β β β 19β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 7 β β β β β β β β β 18β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 8 β β β β β β β β β 17β β β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 9 β 10β 11β 12β 13β 14β 15β 16β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β β A β β β β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ Ball entered 11 and was ABSORBED Roll Cost [-25 points] You have 275 points = 11 guesses / 11 roll(s) left, with 4 cat(s) remaining. Enter Command: g (guessing cat location) Enter a row edge number (from 1 to 8): 3 Enter a col edge number (from 9 to 16): 11 βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β 2 β A β β β β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β 32β 31β 30β 29β 28β 27β 26β 25β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 24β β 1 β β β β β β β β β 24β β 1 β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β 31β β 2 β β β β β β β β β 23β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 3 β β β^_^β β β β β β 22β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 4 β β β β β X β β β β 21β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 5 β β β β β β β β β 20β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 6 β β β β β β β β β 19β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 7 β β β β β β β β β 18β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 8 β β β β β β β β β 17β β β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 9 β 10β 11β 12β 13β 14β 15β 16β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β β A β β β β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ Good Guess! [+25 points] You found "Empress Nibbleton" You have 300 points = 12 guesses / 12 roll(s) left, with 3 cat(s) remaining. Enter Command: r (rolling ball of string from edge) Enter an edge number (from 1 to 32): 12 βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β 2 β A β β β β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β 32β 31β 30β 29β 28β 27β 26β 25β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 24β β 1 β β β β β β β β β 24β β 1 β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β 31β β 2 β β β β β β β β β 23β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 3 β β β^_^β β β β β β 22β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 4 β β β β β X β β β β 21β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 5 β β β β β β β β β 20β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 6 β β β β β β β β β 19β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 7 β β β β β β β β β 18β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 8 β β β β β β β β β 17β β β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 9 β 10β 11β 12β 13β 14β 15β 16β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β β A β 14β β 12β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ Ball entered 12 and exited 14 Roll Cost [-25 points] You have 275 points = 11 guesses / 11 roll(s) left, with 3 cat(s) remaining. Enter Command: g (guessing cat location) Enter a row edge number (from 1 to 8): 3 Enter a col edge number (from 9 to 16): 15 βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β 2 β A β β β β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β 32β 31β 30β 29β 28β 27β 26β 25β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 24β β 1 β β β β β β β β β 24β β 1 β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β 31β β 2 β β β β β β β β β 23β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 3 β β β^_^β β β β X β β 22β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 4 β β β β β X β β β β 21β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 5 β β β β β β β β β 20β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 6 β β β β β β β β β 19β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 7 β β β β β β β β β 18β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 8 β β β β β β β β β 17β β β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 9 β 10β 11β 12β 13β 14β 15β 16β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β β A β 14β β 12β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ Bad Guess [-25 points] You have 250 points = 10 guesses / 10 roll(s) left, with 3 cat(s) remaining. Enter Command: r (rolling ball of string from edge) Enter an edge number (from 1 to 32): 7 βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β 2 β A β β β β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β 32β 31β 30β 29β 28β 27β 26β 25β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 24β β 1 β β β β β β β β β 24β β 1 β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β 31β β 2 β β β β β β β β β 23β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 3 β β β^_^β β β β X β β 22β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 4 β β β β β X β β β β 21β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 5 β β β β β β β β β 20β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 6 β β β β β β β β β 19β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β R β β 7 β β β β β β β β β 18β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 8 β β β β β β β β β 17β β β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 9 β 10β 11β 12β 13β 14β 15β 16β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β β A β 14β β 12β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ Ball entered 7 and exited 7 Roll Cost [-25 points] You have 225 points = 9 guesses / 9 roll(s) left, with 3 cat(s) remaining. Enter Command: r (rolling ball of string from edge) Enter an edge number (from 1 to 32): 6 βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β 2 β A β β β β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β 32β 31β 30β 29β 28β 27β 26β 25β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 24β β 1 β β β β β β β β β 24β β 1 β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β 31β β 2 β β β β β β β β β 23β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 3 β β β^_^β β β β X β β 22β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 4 β β β β β X β β β β 21β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 5 β β β β β β β β β 20β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β A β β 6 β β β β β β β β β 19β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β R β β 7 β β β β β β β β β 18β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 8 β β β β β β β β β 17β β β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 9 β 10β 11β 12β 13β 14β 15β 16β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β β A β 14β β 12β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ Ball entered 6 and was ABSORBED Roll Cost [-25 points] You have 200 points = 8 guesses / 8 roll(s) left, with 3 cat(s) remaining. Enter Command: r (rolling ball of string from edge) Enter an edge number (from 1 to 32): 5 βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β 2 β A β β β β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β 32β 31β 30β 29β 28β 27β 26β 25β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 24β β 1 β β β β β β β β β 24β β 1 β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β 31β β 2 β β β β β β β β β 23β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 3 β β β^_^β β β β X β β 22β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 4 β β β β β X β β β β 21β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β R β β 5 β β β β β β β β β 20β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β A β β 6 β β β β β β β β β 19β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β R β β 7 β β β β β β β β β 18β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 8 β β β β β β β β β 17β β β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 9 β 10β 11β 12β 13β 14β 15β 16β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β β A β 14β β 12β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ Ball entered 5 and exited 5 Roll Cost [-25 points] You have 175 points = 7 guesses / 7 roll(s) left, with 3 cat(s) remaining. Enter Command: g (guessing cat location) Enter a row edge number (from 1 to 8): 6 Enter a col edge number (from 9 to 16): 9 βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β 2 β A β β β β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β 32β 31β 30β 29β 28β 27β 26β 25β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 24β β 1 β β β β β β β β β 24β β 1 β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β 31β β 2 β β β β β β β β β 23β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 3 β β β^_^β β β β X β β 22β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 4 β β β β β X β β β β 21β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β R β β 5 β β β β β β β β β 20β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β A β β 6 β^_^β β β β β β β β 19β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β R β β 7 β β β β β β β β β 18β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 8 β β β β β β β β β 17β β β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 9 β 10β 11β 12β 13β 14β 15β 16β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β β A β 14β β 12β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ Good Guess! [+25 points] You found "Count Crumpet" You have 200 points = 8 guesses / 8 roll(s) left, with 2 cat(s) remaining. Enter Command: r (rolling ball of string from edge) Enter an edge number (from 1 to 32): 28 βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β 2 β A β β 13β β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β 32β 31β 30β 29β 28β 27β 26β 25β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 24β β 1 β β β β β β β β β 24β β 1 β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β 31β β 2 β β β β β β β β β 23β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 3 β β β^_^β β β β X β β 22β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 4 β β β β β X β β β β 21β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β R β β 5 β β β β β β β β β 20β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β A β β 6 β^_^β β β β β β β β 19β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β R β β 7 β β β β β β β β β 18β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 8 β β β β β β β β β 17β β β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 9 β 10β 11β 12β 13β 14β 15β 16β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β β A β 14β 28β 12β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ Ball entered 28 and exited 13 Roll Cost [-25 points] You have 175 points = 7 guesses / 7 roll(s) left, with 2 cat(s) remaining. Enter Command: r (rolling ball of string from edge) Enter an edge number (from 1 to 32): 4 βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β 2 β A β β 13β β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β 32β 31β 30β 29β 28β 27β 26β 25β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 24β β 1 β β β β β β β β β 24β β 1 β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β 31β β 2 β β β β β β β β β 23β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 3 β β β^_^β β β β X β β 22β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β R β β 4 β β β β β X β β β β 21β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β R β β 5 β β β β β β β β β 20β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β A β β 6 β^_^β β β β β β β β 19β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β R β β 7 β β β β β β β β β 18β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 8 β β β β β β β β β 17β β β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 9 β 10β 11β 12β 13β 14β 15β 16β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β β A β 14β 28β 12β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ Ball entered 4 and exited 4 Roll Cost [-25 points] You have 150 points = 6 guesses / 6 roll(s) left, with 2 cat(s) remaining. Enter Command: g (guessing cat location) Enter a row edge number (from 1 to 8): 5 Enter a col edge number (from 9 to 16): 11 βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β 2 β A β β 13β β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β 32β 31β 30β 29β 28β 27β 26β 25β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 24β β 1 β β β β β β β β β 24β β 1 β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β 31β β 2 β β β β β β β β β 23β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 3 β β β^_^β β β β X β β 22β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β R β β 4 β β β β β X β β β β 21β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β R β β 5 β β β^_^β β β β β β 20β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β A β β 6 β^_^β β β β β β β β 19β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β R β β 7 β β β β β β β β β 18β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 8 β β β β β β β β β 17β β β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 9 β 10β 11β 12β 13β 14β 15β 16β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β β A β 14β 28β 12β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ Good Guess! [+25 points] You found "Empress Fluffernap" You have 175 points = 7 guesses / 7 roll(s) left, with 1 cat(s) remaining. Enter Command: r (rolling ball of string from edge) Enter an edge number (from 1 to 32): 21 βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β 2 β A β β 13β β β 21β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β 32β 31β 30β 29β 28β 27β 26β 25β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 24β β 1 β β β β β β β β β 24β β 1 β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β 31β β 2 β β β β β β β β β 23β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 3 β β β^_^β β β β X β β 22β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β R β β 4 β β β β β X β β β β 21β β 25β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β R β β 5 β β β^_^β β β β β β 20β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β A β β 6 β^_^β β β β β β β β 19β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β R β β 7 β β β β β β β β β 18β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 8 β β β β β β β β β 17β β β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 9 β 10β 11β 12β 13β 14β 15β 16β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β β A β 14β 28β 12β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ Ball entered 21 and exited 25 Roll Cost [-25 points] You have 150 points = 6 guesses / 6 roll(s) left, with 1 cat(s) remaining. Enter Command: g (guessing cat location) Enter a row edge number (from 1 to 8): 5 Enter a col edge number (from 9 to 16): 15 βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β 2 β A β β 13β β β 21β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β 32β 31β 30β 29β 28β 27β 26β 25β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 24β β 1 β β β β β β β β β 24β β 1 β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β 31β β 2 β β β β β β β β β 23β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 3 β β β^_^β β β β X β β 22β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β R β β 4 β β β β β X β β β β 21β β 25β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β R β β 5 β β β^_^β β β β^_^β β 20β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β A β β 6 β^_^β β β β β β β β 19β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β R β β 7 β β β β β β β β β 18β β β βββββ€ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ€ βββββ€ β β β 8 β β β β β β β β β 17β β β βββββ βββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββΌββββ βββββ β 9 β 10β 11β 12β 13β 14β 15β 16β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β β β A β 14β 28β 12β β β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ Good Guess! [+25 points] You found "Master Crumpet" All cats found. βββββββββββ β /\_/\ β β (*^_^*) β β / \ β βββββββββββ You win! Final Score: 175
Assumptions, Clarifications, and Restrictions
Like all good programmers, you should make as few assumptions as possible.
Your submitted code must be hand-written MIPS assembly, which you yourself have written.
You may not submit code in other languages.
You may not submit compiled output.You may not copy a solution from an online source. e.g. Github.
Your functions will be tested individually. They must exactly match the behaviour of the corresponding C function and they must follow MIPS calling conventions.
You may assume the input provided to
cat_scan.s
will be correctly formatted. For example, where a number is expected the input will not be a letter.The C code defines constants using
#define
. Your MIPS translation should use the corresponding provided named constants, in the places where a#define
is used in the C code. You should not use a#define
constant in your MIPS translation if it is not used in the corresponding part of the C code.There will be a correctness penalty for assignments that do not follow standard MIPS calling conventions including:
Function arguments are passed in registers
$a0
..$a3
.Function return values are passed in register
$v0
Values in registers
$s0
..$s7
are preserved across function calls.
If a function changes these registers, it must restore the original value before returning.The only registers' values that can be relied upon across a function call are
$s0
..$s7
,$gp
,$sp
, and$fp
.
All other registers must be assumed to be have, an undefined value after a function call, except$v0
which has the function return value.
If you need clarification on what you can and cannot use or do for this assignment, ask in the class forum.
You are required to submit intermediate versions of your assignment. See below for details.
Change Log
-
Version 1.0
(2025-02-10 15:30:00) -
- Initial release
-
Version 1.1
(2025-03-07 16:50:00) -
- Added the walkthrough video link
Assessment
Testing
We have provided some automated tests to help you check the correctness
of your translation. To run all the provided tests, execute the following command:
1521 autotest cat_scan
Some of these tests check only a specific function, and some test your whole program.
To run all the tests for a specific function, pass the name of the
function to autotest
. For example, to run all the tests for
the main
function, run the command:
1521 autotest cat_scan main
You can also run all the autotests for a particular subset. For example,
to run all the autotests for subset 1, run the command:
1521 autotest cat_scan S1
To run the autotests which test your program as a whole, run the command:
1521 autotest cat_scan whole_prog
Some tests are more complex than others. If you are failing more than one test,
you are encouraged to focus on solving the first of those failing tests. To do so,
you can run a specific test by giving its name to the autotest
command:
1521 autotest cat_scan main_S0_0
Submission
When you are finished working on the assignment,
you must submit your work by running give
:
give cs1521 ass1_cat_scan cat_scan.s
You must run give
before Week 5 Friday 18:00:00
to obtain the marks for this assignment.
Note that this is an individual exercise,
the work you submit with give
must be entirely your own.
You can run give
multiple times.
Only your last submission will be marked.
If you are working at home, you may find it more convenient to upload your work via give's web interface.
You cannot obtain marks by emailing your code to tutors or lecturers.
You can check your latest submission on CSE servers with:
1521 classrun check ass1_cat_scan
You can check the files you have submitted here.
Manual marking will be done by your tutor, who will mark for style and readability, as described in the Assessment section below. After your tutor has assessed your work, you can view your results here; The resulting mark will also be available via give's web interface.
Due Date
This assignment is due Week 5 Friday 18:00:00 (2025-03-21 18:00:00).
The UNSW standard late penalty for assessment is 5% per day for 5 days - this is implemented hourly for this assignment.
Your assignment mark will be reduced by 0.2% for each hour (or part thereof) late past the submission deadline.
For example, if an assignment worth 60% was submitted half an hour late, it would be awarded 59.8%, whereas if it was submitted past 10 hours late, it would be awarded 57.8%.
Beware - submissions 5 or more days late will receive zero marks. This again is the UNSW standard assessment policy.
Assessment Scheme
This assignment will contribute 15 marks to your final COMP1521 mark.
80% of the marks for assignment 1 will come from the performance of your code on a large series of tests.
20% of the marks for assignment 1 will come from hand marking. These marks will be awarded on the basis of clarity, commenting, elegance and style. In other words, you will be assessed on how easy it is for a human to read and understand your program.
An indicative assessment scheme for performance follows.
The lecturer may vary the assessment scheme
after inspecting the assignment submissions,
but it is likely to be broadly similar to the following:
100% for performance |
implements all behaviours perfectly, following the spec exactly. |
---|---|
85% for performance | implements all simple and most difficult functions correctly. |
65% for performance |
implements all simple and some moderate difficulty functions correctly. |
≤ 50% for performance |
good progress, simple functions work correctly. |
An indicative assessment scheme for style follows.
The lecturer may vary the assessment scheme
after inspecting the assignment submissions,
but it is likely to be broadly similar to the following:
100% for style | perfect style |
---|---|
90% for style | great style, almost all style characteristics perfect. |
80% for style | good style, one or two style characteristics not well done. |
70% for style | good style, a few style characteristics not well done. |
60% for style | ok style, an attempt at most style characteristics. |
≤ 50% for style | an attempt at style. |
An indicative style rubric follows.
The lecturer may vary the assessment scheme
after inspecting the assignment submissions,
but it is likely to be broadly similar to the following:
-
Formatting (8/20):
- Whitespace
- Indentation (consistent, tabs or spaces are okay)
- Line length (below 120 characters unless very exceptional)
- Line breaks (using vertical whitespace to improve readability)
-
Documentation (12/20):
- Header comment (with name, zID, description of program)
- Function comments (above each function with a description)
- Sensible commenting throughout the code
- Descriptive label names, indicating structure
Note that the following penalties apply to your total mark for plagiarism:
0 for assignment 1 |
knowingly providing your work to anyone
and it is subsequently submitted (by anyone). |
---|---|
0 FL for COMP1521 |
submitting any other person's work; this includes joint work. |
academic misconduct |
submitting another person's work without their consent;
paying another person to do work for you. |
Intermediate Versions of Work
You are required to submit intermediate versions of your assignment.
Every time you work on the assignment
and make some progress
you should copy your work to your CSE account
and submit it using the give
command above.
It is fine if intermediate versions do not compile
or otherwise fail submission tests.
Only the final submitted version of your assignment will be marked.
Assignment Conditions
Joint work is not permitted on this assignment.
This is an individual assignment. The work you submit must be entirely your own work: submission of work even partly written by any other person is not permitted.
Do not request help from anyone other than the teaching staff of COMP1521 β for example, in the course forum, or in help sessions.
Do not post your assignment code to the course forum. The teaching staff can view code you have recently submitted with give, or recently autotested.
Assignment submissions are routinely examined both automatically and manually for work written by others.
Rationale: this assignment is designed to develop the individual skills needed to produce an entire working program. Using code written by, or taken from, other people will stop you learning these skills. Other CSE courses focus on skills needed for working in a team.
The use of code-synthesis tools, such as GitHub Copilot, ChatGPT, Google Bard, etc. are not permitted on this assignment.
Rationale: this assignment is designed to develop your understanding of basic concepts. Using synthesis tools will stop you learning these fundamental concepts, which will significantly impact your ability to complete future courses.
Sharing, publishing, or distributing your assignment work is not permitted.
Do not provide or show your assignment work to any other person, other than the teaching staff of COMP1521. For example, do not message your work to friends.
Do not publish your assignment code via the Internet. For example, do not place your assignment in a public GitHub repository.
Rationale: by publishing or sharing your work, you are facilitating other students using your work. If other students find your assignment work and submit part or all of it as their own work, you may become involved in an academic integrity investigation.
Sharing, publishing, or distributing your assignment work after the completion of COMP1521 is not permitted.
For example, do not place your assignment in a public GitHub repository after this offering of COMP1521 is over.
Rationale: COMP1521 may reuse assignment themes covering similar concepts and content. If students in future terms find your assignment work and submit part or all of it as their own work, you may become involved in an academic integrity investigation.
Violation of any of the above conditions may result in an academic integrity investigation, with possible penalties up to and including a mark of 0 in COMP1521, and exclusion from future studies at UNSW. For more information, read the UNSW Student Code, or contact the course account.