Please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Robin Hood: Prince of Thieves

From The Cutting Room Floor
Jump to: navigation, search

Title Screen

Robin Hood: Prince of Thieves

Developer: Sculptured Software
Publishers: Virgin Games (US), Mindscape (EU)
Platform: NES
Released in US: November 1991
Released in EU: October 12, 1992


SourceIcon.png This game has uncompiled source code.
DevTextIcon.png This game has hidden development-related text.
ItemsIcon.png This game has unused items.
MusicIcon.png This game has unused music.
DebugIcon.png This game has debugging material.
LevelSelectIcon.png This game has a hidden level select.


Hmmm...
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 presumably based on a movie.

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, and sometimes not even that (CASTLEIN for example does not provide the Druid's Dagger).
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

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

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

Build Date

Located at 0x10 in the ROM.

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

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)