the cutting room mirror

Robin Hood: Prince of Thieves (NES)

This article has a talk page!
view on tcrf.net

To do:
There's a prototype of this game prior to it being a licensed game.

Robin Hood: Prince of Thieves is a Zelda-like action/adventure game based on the 1991 movie Robin Hood: Prince of Thieves.

Secret Passwords#

Robin_Hood_-_Prince_of_Thieves_(U)_(PRG0)_-!--2.png‎

It's fairly well-known, but this game contains a hidden password mode, which allows you to skip ahead to any segment of the game, including straight to the ending. At the title screen, press A (×8), B (×8). Note that each password only gives you all the items you strictly need to succeed in that area.

Password

Location

CATACOMB

Outside Arab jail

WALL

Hadrian's Wall

LOCKSLEY

Locksley Castle

DUBOIS

Dubois Manor

CHASE

Horse race to Sherwood

CATHEDRA

Rescue the maiden

BOAR

Battle the boar

MASTER

Search for Master Trainer

CHAPEL

Meet Marian at chapel

WELL

Search for haunted well

TAX

Attack gold wagons

POND

Search for healing water

VILLAGE

Defense of Sherwood Village

CELTS

Battle Celts

TOWN

Journey to town

TOWNHANG

In town, by gallows

CASTLEIN

Inside Sheriff's castle

WEDDING

End

Secret Credits#

While playing, open the menu, highlight "EXIT" and press A + Start. The credit list will pop up.

Programmed by
Peter Ward

Music by    
Paul Webb

Sculptured Software Manager 
Hal Rushton

Artists 
Les Pardew
Kelly Kofoed
Mike Lott
Lance Thornblad
Clark Sorenson

Producer
Dr. Stephen 
Clarke Willson

Virgin Project Manager  
Seth Mendelsohn

Additional Programming
Ken Moore
Ken Grant

Design and Text
Mike Breault 

(Source: Original TCRF research)

Debug Menu#

I challenge thee to a duel! Leave us, knave!

A powerful debug mode can be accessed via a button code. At the title screen, press А (×8), В, А (×7), В, А (×6), В, А (×5), В, В, В. A sound effect will indicate that debug mode is active. During gameplay, you can toggle debug mode on and off by pausing the game (press Select).

While in debug mode, pressing Start will show the cheat menu instead of the regular menu. This menu allows you to fight any duel in the game or warp to any location. Additionally, your HP will be always 100, rendering you invincible, and you can walk through walls and other obstacles.

(Source: Original TCRF research)

Unused Items#

Please elaborate.
Having more detail is always a good thing.
Specifically: How do you access these?

Completely Unused#

The Claymore is one glitchy weapon.

Unused items in video games are nothing new... but it's a rare case when they're actually mentioned in an official source! Many of these items were included in the manual, but were left out for whatever reason, leading many a player to fruitlessly search for them.

  • Short Sword - Not really a sword, but rather a stronger, heavier version of the Knife with the same icon. Attack: 6, Weight: 4.
  • Steel Sword - A standard sword which, like the Short Sword, is just an upgrade to the "Sword", and also uses the same icon. Attack: 10, Weight: 8.
  • Claymore - Presumably another sword-type weapon. "Presumably", because this weapon is basically one big glitch. It has no icon, and hacking it into the game causes the entire menu to flip out, as seen in the screenshot. You can equip the weapon and attack with it normally, but if you drop it, it cannot be picked back up, and may freeze the game. Attack: 12, Weight: 10.
  • It is indeed a shield. Shield - There were two shield-type items in the game, both mentioned in the manual, and both left unused. Noteworthy for having a unique icon.
  • How would these have worked, anyway? Locksley Shield - There's a Locksley Sword, Locksley Armor, and a Locksley Bow, so it stands to reason that there'd also be a Locksley Shield. Same icon as the other shield, and probably stronger somehow.
  • Not a ladder. Ladder - This item has no use, and its icon is just an odd palette swap of the Rope. Presumably, it would have had a similar effect. Unlike the other items listed here, this wasn't mentioned in the manual, so it may have been cut much earlier in development.

Partially Unused#

Rob from the rich and all that.

A few miscellaneous items/objects can also be made to appear in the inventory, something which never occurs normally.

  • Quiver - Found here and there throughout the game, and dropped by some defeated enemies, these add a few arrows to the "Arrow" counter on the menu, and are never normally seen in the inventory.
  • Gold Coin - Gives you 1 gold piece. Found laying around or dropped by enemies, another item that's just added to a counter, and not the inventory.
  • Bag of Gold - Same deal as the Gold Coin, except worth more, obviously. If hacked in, these items can be dropped and picked back up, and they'll function normally. Both the quiver and gold items weigh 1 "unit".
  • Locked Chest - Not an item, just a treasure chest, which you need a Chest Key to open. These can't be picked up, and aren't even technically items, but can be hacked into the inventory nonetheless. It's a bad idea to do so, however, as it weighs a whopping 229 "units", rendering you unable to pick up anything else until it's discarded. If you do discard it, it simply vanishes.
  • Empty Chest - Same as above, basically. Just what's left of the chest after opening it. It's not as ridiculously heavy as the locked version (185 "units"), but still not worth hacking in. Like the Locked Chest, it disappears if dropped.

(Source: Original TCRF research)

Unused Music#

The NSF file contains three songs not used at any point in the game:

Unused Song#

Track 4 on the NSF. A rather heroic song that sounds like it might have worked for the opening/title or ending.

Unused Fanfare 1#

Track 18 on the NSF is a short, victorious-sounding fanfare.

Unused Fanfare 2#

Track 25 on the NSF is another short, victorious-sounding fanfare, although different from the previous one.

(Source: Original TCRF research)

Unused Text#

Development Text#

Assigned variable names are stored in the ROM at 0x17E49

sprite.face.tuck.chr 

translation 
charset.melee.church.chr 
pal.sherwood 
color.palettes 
sprite.face.guard.chr 
pal.hut 
sprite.shield.chr 

door0 
sprite.sword.chr 
sprite.wulfsit.chr 
pal.loxley.dark 
pal.sprites.robin 
pal.duel.castle 
sprite.saddle.chr 
sprite.weapon.shield.chr 
sprite.will.chr 
sprite.bigboar.chr 
pal.duboisout 
pal.melee.church 
pal.melee.sherwood 
sprite.misc.chr 
sprit

Uncompiled Code#

The first section of uncompiled, commented code can be found at 0xFBCF in the US ROM, 0xFDB6 in the German ROM, and 0xFDB6 in the European ROM. They have been combined here:

beq .done
    sty actor.type      ;Save actor type

    stx thisscan

;-------------------------------

    lda status,x
    and #(s.hidden|s.inchest|s.noshape)
    bne .done

    lda actor.flags-1,y ;Get ACTOR info flags
    sta actor.flag

;-------------------------------

    jsr newpix      ;Clear DRAW variables.
    jsr draw.meter

;-------------------------------

    lda actor.flag
    and #actor.flag.mask
    beq .1
    dec spmask      ;Do MASK behind backdrop.

;-------------------------------

.1  jsr set.pos     ;Set xpos(3) ypos(3) for actor.

    jsr get.actor.info  ;Get all info about this actor.

    lda status,x
    and #s.mirror
    sta mobs

;-------------------------------

    jsr locate      ;GET SCREEN LOCATION.
    lda offscreen
    beq .0          ;If ONSCREEN, draw him!

    lda status,x        ;Note actor is OFFSCREEN
    ora #s.offscreen
    sta status,x

    lda offscreen
    bmi .kill       ;If > 1 screen away, DELETE HIM

    lda actor.flag      ;Actor OFFSCREEN, but less than 1 screen away.
    and #actor.flag.deloff  ;Delete him ONLY if this type of ac

The second fragment is in the US version at 0x13E44 and in the European version at 0x13764. The European version has a much more complete version of this fragment. The below is a combination of the fragments from both versions:

                           flag
    and #%00100000
    beq .1

    lda #0
    sta xoffset+1
    sta xoffset+0
    sta readx

.1  lda action.flag
    and #%00010000
    beq .2

    lda #0
    sta yoffset+1
    sta yoffset+0
    sta ready

.2  rts


;**********
;process.actor
;
;-x is an actor
;
;-process ACTION requests
;
;-Called after AI routine, or JOYSTICK reading.
;
;-READX/READY   = Are movement values
;
;-SELECT    = SELECT BUTTON
;
;-FIREA/FIREB   = JOYSTICK FIRE BUTTONS
;
;**********

process.actor

    jsr ck.fire

    jmp get.direction   ;set DIR based on READX/READY



;**********
;ck.fire
;
;-x is an actor.
;
;-Handle FIREB button requests.
;
;**********

ck.fire

    lda #1

    cmp firea
    beq .fire
    cmp fireb
    bne .exit

.fire   lda action,x        ;Only do FIRE action if STAND or RUNing
    cmp #fire
    bcs .exit

    lda #fire
    jsr change.action


.exit   rts



;**********
;rand.velocity
;**********

rand.velocity

    jsr rand.xvelocity
    jmp rand.yvelocity



;**********
;rand.xvelocity
;**********

rand.xvelocity

    jsr rand
    and #3
    adc #1
    bit random
    bpl .1
    jsr negate.a
.1  sta xvel1,x
    rts



;**********
;rand.yvelocity
;**********

rand.yvelocity

    jsr rand
    and #3
    adc #1
    bit random
    bpl .1
    jsr negate.a
.1  sta yvel1,x
    rts



;**********
;fake.joystick
;
;-xoffset(2) yoffset(2) are movement forces.
;
;-Bogas joystick inputs for AI system.
;
;-Sets READX/READY to movement forces set.
;
;**********

fake.joystick

    lda xoffset+0       ;Compute READX/READY from xoffset(2) yoffset(2)
    bit xoffset+1
    bpl .0
    jsr negate.a
.0  cmp #24
    bcc .y

    lda #$ff
    bit xoffset+1
    bmi .1
    lda #1
.1  sta readx


.y  lda yoffset+0
    bit yoffset+1
    bpl .3
    jsr negate.a
.3  cmp #24
    bcc .9

    lda #$ff
    bit yoffset+1
    bmi .4
    lda #1
.4  sta ready

.9  rts



;**********
;get.direction
;
;-x is an actor.
;
;-Set STATUS based on readx/ready commands
;
;**********

;--------------------------------------------
;   Actor DIRECTIONS
;--------------------------------------------
;
;              08
;    07 \       |       / 01
;
;    06 -      00      -  04

(Source: Original TCRF research)

Regional Differences#

Build Date#

To see the ROM's build date, hold Up + A + B + Start + Select and then press Reset.

USA

USA Rev 1

Europe

ROBIN HOOD VERSION AUG 07/91
ROBIN HOOD VERSION OCT 31/91
ROBIN HOOD FRN PAL FEB 11/92

Germany

Spain

ROBIN HOOD GER PAL FEB 11/92
ROBIN HOOD SPN PAL SEP 11/92

The Spanish version of the game has different menu borders when compared to the other versions.

USA/Europe/Germany

Spain

Font#

The Spanish version has a different and smaller font when compared to the other versions. It was probably a necessary change to be able to feature accentuated letters.