Hungry Horace

From C64-Wiki
Jump to navigationJump to search
Hungry Horace
Title screen of the game
Title screen of the game
Game No. 516
Voting 6.40 points, 5 votes
Developer Gregg Barnett
Company Beam Software
Publisher Melbourne House
HVSC-File /GAMES/G-L/Hungry_Horace.sid
Release 1983
Platform C64, Dragon, ZX Spectrum
Genre Arcade, Pac Man
Gamemode Single player
Operation Joystick Keyboard
Media Datassette
Language Language:english
Information Series:


Description[edit | edit source]

Horace

In the game "Hungry Horace", the player controls the comical but voracious mythical creature Horace, guiding him through four labyrinthine parks, where he devours the flowers planted there. He must avoid encounters with the park attendants, unless he manages to grab the alarm bell, which he can use to panic the attendants for a few seconds. Horace can exit the park at any time to enter the next labyrinth. After leaving the fourth park, the game resumes in the first area with an increased difficulty level.

A special feature of the game is an integrated level editor, which allows you to design, save, and load up to four of your own park mazes to play instead of the levels included with the game.

Design[edit | edit source]

During gameplay, the current maze occupies most of the screen and is always visible in its entirety. Only a line of text at the top of the screen indicates the current game status. The visuals are very simple; for example, only one type of green flower grows in the parks. This makes the mazes appear somewhat monotonous, but thanks to the white background, they are not as gloomy as, for example, in Pac-Man.


Horace quickly devours everything in the park and even manages to panic the park attendants...
...but don't let the park attendant catch you!
Both Horace and his pursuers cross the edge to the opposite side.



Graphics[edit | edit source]

The screen is displayed exclusively in monochrome text mode (video RAM at address $A000, character set starting at $A800). Horace and the up to four park attendants are sprites; all other graphical elements are part of the text display. To detect whether Horace has come into contact with a park attendant, the program relies on the VIC's sprite-sprite collision detection (register at address $D01A); only collisions in the tunnels, which exist at certain points in the parks, are detected by software.

Sound[edit | edit source]

The title screen is accompanied by a two-part melody (see section "Theme") and numerous sound effects, and a short, monophonic tone sequence plays when the game starts. Otherwise, the sound effects are limited to underscoring events in the game, such as the ringing of the alarm bell, the eating of flowers, or Horace's arrest by a guard.

Hints[edit | edit source]

Park guards on patrol...
...and the guards themselves in a panic

The goal of the game "Hungry Horace" is to guide the player character Horace through four labyrinthine parks, eating as many of the flowers growing there as possible, and ideally also devouring the picnic baskets left by the park guards — symbolically represented by cherries and strawberries — which they occasionally drop on their patrols. Meanwhile, the player must ensure that Horace is not caught by one of the up to four guards, as he would otherwise lose one of his initial four park tickets (corresponding to four lives in similar games).

Horace can briefly fend off his pursuers by collecting an alarm bell and using it to panic the guards. While they subsequently wander through the park with their hair standing on end, Horace is temporarily invulnerable; he can even knock the terrified guards out of the park with a touch, scoring 100 points for each one.

Horace can leave the current park at any time through the exit and thus move on to the next one. However, since the difficulty level gradually increases, and in particular the number of guards and their speed grow, it is advisable to head for the exit only after at least a large portion of the flowers and all the easily accessible snack packs belonging to the guards have been eaten.



Flower
10 points

Alarm Bell
100 points

Cherry
120 points

Strawberry
120 points



Screen Layout[edit | edit source]


Typical scene from the game



Controls[edit | edit source]

"Hungry Horace" can be controlled either with a joystick in Port 2 or with the keyboard. The game can be started by pressing the fire button or any key. If there is no user input, the program will switch to a demo mode after a while; in this case, it may be necessary to return to the title screen by pressing the T  key before the game can be started.

The following mapping then applies:

  • Joystick left and Joystick right or I  and P : The character moves left or right.
  • press fire button and press fire button or Q  and Z : The character moves up or down.
  • RUN/STOP RESTORE : Exits the game and returns to the title screen.


Levels[edit | edit source]



Level 1

Level 2




Level 3

Level 4



Tips[edit | edit source]

  • The strategy by which the park rangers choose one of the possible paths at a crossroads while chasing Horace is easy to see through and can be used to deliberately lead the rangers astray (for example, by remaining just above the ranger's height until they have taken an upward-leading wrong path). However, if this tactic is pursued for too long, the pursuer will receive support from additional guards who gradually enter the park.
  • Horace takes significantly longer to cross a tunnel than the park guards. Therefore, if the guards are close behind him, he should avoid tunnels whenever possible, as they will either cost him a large portion of his head start (left animation in the following gallery) or he will even be caught in or just beyond the tunnel (right animation).


Crossing a tunnel costs Horace a large portion of his head start.
If the pursuer is hot on Horace's heels, they will catch him in or just beyond the tunnel.




Editor[edit | edit source]

"Hungry Horace" includes a level editor that allows you to design up to four of your own levels and save them to a cassette tape. You can access the editor's menu from the title screen by pressing the CTRL  key (top left image in the following gallery). Moving the joystick in any direction or pressing one of the keys used for keyboard controls (see section "Operation") causes the blinking cursor to jump from one menu item to the next. Once the desired functionality is reached, it can be selected by pressing the fire button or the F1  key.

The "EDIT" menu item is particularly interesting, though not necessarily self-explanatory. Selecting it prompts you to choose which of the four user-defined mazes you want to edit and whether you want to delete any existing mazes before editing. Answering "N" to the second question allows you to make corrections to an existing design.

When creating a maze for the first time, an empty canvas appears, covered with regular squares. These serve as guidelines during editing but are not visible in the game. Step by step, the elements that ultimately form the maze are entered into this "form": walls, flowers, entrance and exit, and finally the alarm bell.

All steps have in common that placement is done using a blinking cursor, which is moved with the joystick (or the equivalent keys for keyboard control). When drawing walls and flowers, the function keys can also be used to select how the maze is to be modified: F3  switches to "draw" mode, F5  activates erasing, and after pressing F7  the cursor can be moved without changing the maze. The middle animation in the first row of the following gallery illustrates this using the first phase, in which walls are drawn and, if necessary, deleted: The drawing mode, displayed in the upper right corner, switches between "PLOT" (draw a wall), "ERASE" (remove a wall), and "SKIP" (move the cursor to another position without changing the maze).

Once all the walls that the maze have been drawn, pressing the fire button or the F1  key switches the editor to the next step, planting the flowers. Here, too, the three modes "PLOT," "ERASE," and "SKIP" are available; however, a flower is only drawn at the cursor's position when either the fire button or the SHIFT  key is pressed. Once enough flowers have been planted in the park, pressing the F1  key completes this editing phase (right animation in the first row).

On the following stages, only elements that cannot appear more than once in the labyrinth need to be placed. These elements — the entrance, the exit, and the alarm bell — are simply moved to the desired position using the joystick or the corresponding buttons and then secured by pressing the fire button or F1 . Finally, it is possible to create up to two tunnels (each consisting of an entrance and an exit) in the labyrinth. If desired, answer the corresponding questions with "Y", then move the tunnel ends to their final positions and confirm them again with the fire button or F1 .


Menu of the integrated level editor
Drawing and deleting walls in the level editor
Drawing and deleting flowers




Placing the entrance, exit, and alarm bell
Optionally creating tunnels
Playing in a custom level



After saving the new maze and exiting the editor menu, press the T  key to activate the new level. You can then either watch a demonstration of the game using this maze or start the game and try out the maze yourself.

Saving custom mazes to a cassette tape saves the contents of the video RAM. Each individual maze consists of 1015 data bytes, located in memory at address $9000 (maze 1), $9400 (maze 2), $9800 (maze 3), or $9C00 (maze 4). If you choose to save all user-defined mazes together, you get a 4087-byte file with load address $9000.

If you want to read and write the user-defined mazes from and to floppy disk instead of saving them to cassette, you only need to change the device address 1 (for cassette) in the game's program code to the IEC address of the floppy disk (for example, 8). This is easiest with a cracked version where the program code is uncompressed, such as the version by Antisoft. After loading the game, enter the following command lines, confirming each with RETURN , before starting the game with "RUN":

POKE 11827,8 : REM WRITE TO DISK
POKE 11918,8 : REM LOAD FROM DISK

Those who plan to use the editor regularly can save the modified program to a floppy disk before starting it — thus avoiding having to enter these POKE commands in the future.

Solution[edit | edit source]

"Hungry Horace" doesn't have a solution where, for example, Horace eventually gets full and returns home satisfied. Instead, the goal is to eat flowers, cherries, and strawberries for as long as possible, level by level, without being caught by the park rangers, and thus achieve the highest possible score.


Cheats[edit | edit source]

Several cracks with a trainer function are available in the CSDb. Thanks to two correctly implemented trainer options, the use of Crack by Remember (left animation in the gallery below) is recommended. The Crack by Commo Bam (middle animation) only appears to offer the same functionality at first glance: Here, "invincibility" does not apply to collisions in tunnels, so you can still lose a life there even with the trainer activated.


Crack by Remember
Crack by Commo Bam
Crack by Shazam!



Internal Data Structures[edit | edit source]

For developing your own trainer functions and for analyzing or manipulating the data used by the game, knowledge of memory allocation and internal workings is helpful. The following table therefore compiles a range of information about "Hungry Horace".

Address Content Comments
$0047 Number of lives Value range 0..9
$3AD6 — $3ADA High score Storage as an ASCII string
$A04A — $A04E Score Storage and calculation take place directly in the video RAM
Successive crediting of points for cherries and strawberries (slow motion)

As can be seen from the table, the current score is stored only in the form of the ASCII codes for the digits in the screen memory. The points earned during the game are not simply added to this score; rather, there is a routine that increments the maximum five-digit score by 1 from the position specified in register X. This routine also takes into account any carryovers to higher-order positions — and if the first digit of the score is incremented in this process, the number of lives is simultaneously incremented by 1, unless Horace already has 9 lives.

To award the player 10 points, this routine is called with the parameter X=4, incrementing the fourth digit of the score. For 100 points when picking up the alarm bell, the call is instead made with X=3, increasing the third digit of the score by 1. Eating a cherry or a strawberry is calculated in a particularly clever way (see the animation on the right, in slow motion and with an initial score reset to 0 using the debugger): The stem of a cherry is worth 20, the two halves of the calyx on a strawberry are each worth 10 points, and both fruits are each divided in half, with each half worth 50 points.


; Credit 50 points
1A36: LDX #$04  ; 4th digit of the 5-digit score
1A38: JSR $1976 ; increase by 1 (thus increase score by 10)
1A3B: LDX #$04  ; Again 4th digit
1A3D: JSR $1976 ; increase by 1
1A40: LDX #$04  ; 3rd time the 4th digit
1A42: JSR $1976 ; increase by 1
1A45: LDX #$04  ; 4th time the 4th digit
1A47: JSR $1976 ; increase by 1
1A4A: LDX #$04  ; 5th time the 4th digit
1A4C: JSR $1976 ; increase by 1, so the total score increases by 50
.
.
.
.
; Increase decimal digit X of the scre by 1
1976: ...
197B: LDA $A049,X ; Load digit to be increased into A
197E: CMP #' '    ; Leading SPACE character?
1980: BNE $1987   ; Jump if not
1982: LDA #'0'    ; else load digit '0' into A
1984: STA $A049,X ; and replace SPACE character by digit '0'
1987: INC $A049,X ; Increase X-th digit of 5-digit score by 1
198A: CPX #$01    ; Was it the 1st digit, worth 10000 points?
198C: BNE $19CB   ; Jump if not
198E: LDA *$47    ; else load number of lives into A
1990: CMP #$09    ; Already 9 lives?
1992: BEQ $19CB   ; Jump if yes
1994: INC *$47    ; else increase number of lives
1996: ...

The monotonous color scheme, and especially the green flowers, results from the program writing the same byte to a memory cell in the video memory and to the corresponding memory cell in the color RAM — and because the flower has the video code $F5, the value $x5, corresponding to the color "dark green," is found in the color RAM for every flower in the video RAM.

The following illustration shows the second half of the character set that is active during gameplay, along with the corresponding video codes. The characters in the first half, not shown here, are identical to those in the C64's ROM. The color of the characters corresponds to that which would result if the video memory and color RAM were identical. The video codes of the characters modified by the game program are black, and those of all unchanged characters are light gray. Easily identifiable in this representation are the red fruits (cherry and strawberry), their green stems and the green flower, the blue walls, the purple bell, and the orange arrows for entrance and exit.



Modified second part of the font copied from the C64 ROM (screen codes of the modified characters in black)



Program Structure[edit | edit source]

The program code of "Hungry Horace" occupies the address range from $0900 to $4FFF in main memory. The game could therefore be stored as a program file of just under 18 KB on cassette, which begins with a single SYS instruction and, after starting, copies the machine code following this BASIC instruction.

Instead, the original "Hungry Horace" cassette contains an absolute-loading datasette file that is read into the address range $0324 to $4FFF, thus overwriting the C64's INPUT vector with the game's starting address $0900. While this does cause "Hungry Horace" to start automatically, it requires transferring approximately 1.5 KB of filler data to the memory range $0326–$08FF, which adds about 30 seconds to the loading time.

Votes[edit | edit source]

Voting of the C64-Wiki users (10=the best vote):
6.40 points at 5 votes (rank 731).
You need to be logged in to cast a vote.
C64Games 6 August 10, 2015 - "gut" - 21.430 downs
Lemon64 5,21 April 21, 2025 - 34 votes
Commodore User Presentation 1/5, Skill level 3/5, Interest 2/5, Value for Money 3/5 November 1983
Home Computing Weekly 2/5 (instructions 30%, playability 50%, graphics 30%, value for monry 40%) November 22 — 28, 1983
Personal Computer Games 7/10 (Graphics 7/10, Sound 7/10, Ease of Use 6/1ß, Originality 4/10, Lasting Interest 7/10) February 1984
Popular Computing Weekly 10/10 6 January 1983
Popular Computing Weekly 6/10 22 December 1983 — 4 January 1984
Happy Computer mäßig September 1984
Computer & Video Games Getting started 5/10, Graphics 6/10, Value 6/10, Playability 6/10 July 1984
Commodore User Presentation 1/5, Skill level 3/5, Interest 2/5, Value for Money 3/5 November 1983
Allt on Hemdatorer 5/5 Issue 1½ 1984
Rombachs C64-Spieleführer 8 September 1984 - "Verdict 2"
Universal Videogame List 2.8/5 April 21, 2025


Critics[edit | edit source]

Shakermaker303: "Back then, Horace was just a walking butt with legs to me :-) I wasn't very impressed with the game at the time, but now I find it quite decent for a game from 1983. The character isn't too slow and isn't too fast, and it's easy to maneuver through the canyons. The sound and music are great, and the hypnotic background melody has a certain charm. There's even a level editor – I haven't tried it yet, but that's a plus in my rating. Kudos to the creator of this C64 Wiki article about the game, Stephan64, for the detailed description."

Stephan64: "At first glance, Hungry Horace is just a tired Pac-Man clone, with far too few levels... and the only positive aspects are the charming design of the character Horace and the park attendants. However, the game's appeal lies in the ability to define and save your own mazes, and then try them out in demo mode, play them yourself, or share them with friends. The integrated editor that makes this possible isn't very user-friendly, but it's functional and a unique feature for a game from 1983. Therefore, I give it 6 points in recognition."

Rombachs C64-Spieleführer: "Although the ideas are reminiscent of Pac-Man, there are still enough original ideas in this program (Rating 2)." [1]

Miscellaneous[edit | edit source]

Cover[edit | edit source]

Cassette cover


Inlay[edit | edit source]


Cassette inlay, outside
Cassette inlay, inside



Cassette[edit | edit source]

Cassette for the game "Hungry Horace"


Theme[edit | edit source]

The following gallery shows the title screen theme and the sound sequences at game start and when chasing away a panicked guard, in standard musical notation. For creative reuse of the music, the sheet music is also available as a PDF document (File:HungryHorace Theme PDF.pdf) and in ABC musical notation (File:HungryHorace Theme.abc.txt).


Sheet music for the title theme, reconstructed by logging all write accesses to the SID
Sheet music for the melody at game start



Video Recording[edit | edit source]


Longplay of the game

Highscore[edit | edit source]

Topscore of Ivanpaduano
Topscore of Ivanpaduano
  1. Ivanpaduano - 8090 (08.06.2025)
  2. Shakermaker303 - 7560 (06.06.2025)
  3. Stephan64 - 5040 (25.04.2025)


#2 Shakermaker303 #3 Stephan64
#2 Shakermaker303 #3 Stephan64


Links[edit | edit source]

Wikipedia: Hungry_Horace
Magazine

Sources[edit | edit source]

  1. Oswald Reim, Martin Scholer: "Rombachs C64-Spieleführer", Rombach, 1984, page 175