psxsdk

dogtale

A Dog Tale, a platform game across a desert in parallax, to free a dog chained up with five padlocks.

Controls

Left and right walk, Cross jumps, straight up or the way you are walking, and Triangle shows the keys found so far. Select pauses, and any direction or Cross goes on; Start while paused gives up and goes back to the title. On the title, left and right choose between About and Play and Cross chooses; Select closes the about box. There is no way to quit the program, as in the original.

A port of Ira Rainey's Net Yaroze game "A Dog Tale" (1997), which went out on the cover disc of the Official UK PlayStation Magazine and on Sony's own Net Yaroze demo discs: a platform game in sprites, twelve screens wide, in which a man sets out across a desert to free his dog, chained up at the far end with five padlocks, by finding the five keys. There are platforms to climb, some of them moving, bones to collect, fifty of which are worth a life, and cacti, which cost one. The desert scrolls in parallax, the two ranges of mountains and the floor each at their own speed under a fixed sky, which is what the author says the game grew out of. The title screen scrolls a message along its foot under a logo that spins in, with an about box that scales in over it, and when the last life goes the screen is grabbed into video memory and spun away to nothing. The tune is Sony's sample, the one the check sample plays, which the author's message says was borrowed. The author's readme asks anyone using the code for a thank you: thanks, Ira.

Differences from the original:

  • The pictures are read off the disc, as the one file the original was sent over the serial cable as, into the program's own memory rather than to a fixed address. The tune comes from the SDK's own files, as the check sample's does. The file's first picture, a Net Yaroze logo that a function the source declares but never defines would have shown, is loaded and never used.
  • Every object has an image description of its own. The original gives each a pointer to one that is never set, and so writes every image's description to address 0.
  • Objects are checked to be in use before their sizes are read, and the search for the platform under the man stops at the last object. The original reads the sizes of unused objects through null pointers, and one past the end of its array.
  • There are five keys. The original puts six into the world, reading past the end of its table of five for the last, which lands at the start of the level at whatever height the memory after the table gives.
  • The pad check reports nothing pressed when neither Select nor Start is, and the title's spin starts from zero. The original leaves both to whatever happened to be in a register or on the stack.

Nothing allocates after startup.

Source on GitHub