Bloody Paws
Release Date  1990
Original Publisher  G.LL. Software S.A. (Spain)
Min. Hardware  ZX-Spectrum 48K/128K
Language  Spanish
Genre  Arcade Game: Beat-em-up/Gang
Max. Players  1
Features  AY Sound
Controls  Interface 2 (right), Kempston Joystick
Themes  Horror/Halloween
Other Platforms  MSX
Martijn's WoS score  45% (8 votes)

Authors/Contributors
     Jose Manuel Alvarez (Spain)at Mar Entertainment - ?
     Manuel Matamoros (Spain)at Mar Entertainment - ?
     Juan Carlos Sanchez Alvarez (Spain)at Mar Entertainment - ?
     Miguel Alcón - Inlay/Poster Art

Known Errors
     Bugfix provided by Flavio M. Matsumoto:
  • Bloody Paws has a bug that causes the 'snow' effect in the screen. When IM 2 is activated with I register in the range 64-127 ($40-$7F), ULA is confused and shows noises in the screen. This bug does not affect machine code execution and game can be played normally, but this effect is visually very annoying.

    The program disassembly reveals forbidden value 93 ($5D) assigned to I register:

    24000   LD SP, 24000
    24003 DI
    24004 LD A, $5D
    24006 LD I, A
    24008 IM 2
    24010 XOR A


    The value of assembly instruction operand at 24004 must be replaced by any value greater than $7F. The chosen value was $FB because the RAM in the $FB00-$FC00 range was empty. The instruction at 24004 was altered to:

    24004   LD A, $FB


    In IM 2, the most significant byte (MSB) of the interrupt vector is the value of I register and the least significant byte (LSB) is read from data bus. Due to push-up resistors present in the data bus, the LSB is usually 255 ($FF), but it can return any other values because noise can be left by some device (mainly ULA). Programmer of Bloody Paws erroneously assumed that LSB will always be 255, but this is wrong! The proper way to handle interrupts would be making an interrupt vector table in the RAM, containing all possible values of LSB. Moreover, the interrupt routine address must be symmetrical because LSB can assume even or odd value.

    To prepare interrupt vector table, the RAM located at $FB00-$FC00 range was chosen because it was empty. Address $FAFA was also empty and was chosen to hold the interrupt routine that consists only by 'JP $FEF6' instruction ($FEF6 is the beginning of program's real interrupt routine).

Modified "BUGFIX" file provided by Flavio M. Matsumoto.

Main File Downloads
     FilenameReleaseMachineSchemeLanguageComments
BloodyPaws.tap.zipOriginalZX-Spectrum 48K/128K(None)Spanish
BloodyPaws.tzx.zipOriginalZX-Spectrum 48K/128K(None)Spanish
BloodyPaws(BUGFIX).tzx.zipOriginalZX-Spectrum 48K/128K(None)Spanish

Additional File Downloads
     FilenameSizeReleaseTypeLanguageComments
     BloodyPaws.scr6,912OriginalLoading screen
     BloodyPaws.gif3,512OriginalRunning screen
     BloodyPaws.jpg168,601OriginalInlay - Front
     BloodyPaws.pdf14,064OriginalInstructionsSpanish
     BloodyPaws.txt2,769OriginalInstructionsSpanish
     BloodyPaws.png78,399OriginalGame map
     bloodypaws.zip0OriginalRZX playback file - Recorded by Rafal (with rollback)
     Bloody Paws (1990)(G.LL. Software).pok177OriginalPOK pokes file

Magazine Reviews
     MicroHobbyissue #203-1990/Octpage 36- Review - Nuevo

Links
     RZX Archive(Information - in English)
     RZX Archive - YouTube(Information - in English)
     Speccy Screenshot Maps(Information - in English)
     The Tipshop(Information - in English)
     UVL(Information - in English)
     Spectrum 2.0(User Reviews)
     The TZX Vault(Software Preservation)
     ZX-Art(Spectrum Graphics)
     ZXInfo(ZXDB Front End)
     Every Game Going(Multi-Platform Archive)
     New World Of Spectrum(Spectrum Archive)
     Original World Of Spectrum(Spectrum Archive)
     World Of Spectrum Classic(Spectrum Archive)
     Spectrum Computing(MAIN VIEW)