Mail has been fixed; you should now be able to confirm your e-mail address, watch pages, and the like.
Please report any issues on Discord.

Banjo-Kazooie

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Banjo-Kazooie

Also known as: Banjo to Kazooie no Daibouken (JP)
Developer: Rare
Publishers: Nintendo (N64), Microsoft Game Studios (360)
Platforms: Nintendo 64, Xbox 360
Released internationally: December 3, 2008 (360)
Released in JP: December 6, 1998 (N64)
Released in US: June 30, 1998 (N64)
Released in EU: July 17, 1998 (N64)


AreasIcon.png This game has unused areas.
DevTextIcon.png This game has hidden development-related text.
GraphicsIcon.png This game has unused graphics.
ModelsIcon.png This game has unused models.
MovieIcon.png This game has unused cinematics.
ItemsIcon.png This game has unused items.
MusicIcon.png This game has unused music.
TextIcon.png This game has unused text.
DebugIcon.png This game has debugging material.
RegionIcon.png This game has regional differences.
Carts.png This game has revisional differences.


NotesIcon.png This game has a notes page
BugsIcon.png This game has a bugs page
PrereleaseIcon.png This game has a prerelease article

In Banjo-Kazooie, Mario fell into a nuclear power plant and mutated into a strange bear, while Yoshi became a bird stuck to his back. The same fallout transformed all the Power Stars into Jiggies as well.

Debug Value Display

Exclusive to the US 1.0 version of the game is a debug system that can draw arbitrary values to the framebuffer with the CPU. These values can be floats and unsigned shorts (in decimal or hex), can be drawn in 1 of 7 colours, and at any size or position on the screen.

This may have had more extensive use during development, since there are only a few instances (below) left over in the final game. They trigger when the N64's video or audio interface encounters specific conditions, and they stall the CPU for 15 million instructions, to keep the message on-screen long enough to read. Some are known to have been encountered during normal gameplay.

Some custom values (non-vanilla) printed using the debug system. It includes auto-flowing to the next column, different colours, sizes, and value types.
Code 2000

This is triggered when a specific value is larger than a threshold. It then shows the value and threshold (2500) on-screen.

Code 2001

This is triggered when a specific pointer in RAM is null.

Code 2002

This appears to be triggered when the N64 audio interface is too busy.

Code 2005

This appears to be triggered when a specific OSMesg queue has no valid messages.


The following GameShark codes can be used to force these error codes to trigger.


Code 2000 Code 2001 Code 2002 Code 2005
8024012B 0001
80240287 0001
80240047 0001
80240447 0001


Banjo-Kazooie debug value 2000.png Banjo-Kazooie debug value 2001.png Banjo-Kazooie Random Numbers Last Battle.png Banjo-Kazooie debug value 2005.png

(Source: Wedarobi)

Test Map

Stonehenge has seen better days.

This simple test map consists of eight slopes arranged in a circle formation. All of them are too steep for Banjo and Kazooie to walk on in their normal forms, so they'll just slide down, though Banjo can walk up the slopes in any of his transformations. It was presumably used to test walking up steep slopes, both normally and with the Talon Trot. This map only exists in the US 1.0 version of the game.

The following code replaces Mumbo's Mountain with the test map. Any objects seen here are from Mumbo's Mountain.

8136ABFA 14D6
8136ABFC 0000

Unused Music

There are four unused songs that can be heard in-game by using one of the below GameShark codes. There are also two unused versions of the Click Clock Wood theme and an unused Mumbo Jumbo song called "Mumbo's Raindance".

8128189A ???? - U V1.0
812806DA ???? - U V1.1
812816BA ???? - E
812806DA ???? - J
(Source: Ferrox (GameShark codes), Banjordan's BK Lair, USF Central)

Advent

Value: 0039

The most famous due to theories of where it would be used. It's unknown exactly where it would've been used, but the internal name for the room which contains the entrance for Freezeezy Peak (Witch - Flr 2, Area 2 : Spooky/Advent) suggests that it may have been an early theme for that level. The entryway to Freezeezy Peak resembles a giant Advent calendar as part of its Christmas theming, furthering the connection.

Early Click Clock Wood #1 (House Summer)

Value: 0048

An unused variant of the Click Clock Wood theme. The name suggests that it may have been intended for Nabnut's or Gnawty's house.

Early Click Clock Wood #2 (House Autumn)

Value: 0049

Another unused variant of the Click Clock Wood theme.

Mumbo's Raindance (Rain)

Value: 004D

An unused song for Mumbo. A similar-sounding song would later appear in Banjo-Tooie for Mumbo's spells, suggesting that feature may have been intended for Banjo-Kazooie.

Unused Underwater Themes

The music tracks for several areas of the game contain MIDI channels which are never played. These make up the "aquatic" (underwater harp) versions of the music in several areas where it is impossible to swim underwater. To hear these in-game, use one of the music modifier codes from above, then stand near the entrance to Mumbo's Mountain in Gruntilda's lair.

Freezeezy Peak

Value: 0003

In-game, it is impossible to swim in the water in Freezeezy Peak because it is too cold (and also very shallow). While the player can become submerged using the walrus transformation, the music does not change.

Wozza's Cave

Value: 006B

As with its parent level of Freezeezy Peak, the water in Wozza's Cave is too cold to swim in and the music again does not change in the underwater tunnel accessible through the walrus transformation. It seems that at some point in development, this cavern was meant to be swam through instead of using the walrus.

This track can actually be heard during the normal game, albeit through an odd bug: if the Wozza's Cave BGM comes up in a "What level is this music from?" question in the Grunty's Furnace Fun quiz, this version and the regular version will play layered because the game is not told to mute the MIDI channels containing the harp sound.

It can also be heard without glitches by drowning in Wozza's Cave.

Rusty Bucket Bay Engine Room

Value: 0035

By far the oddest of the lot, as there is absolutely no place for swimmable water to exist in the engine room in Rusty Bucket Bay. According to Gregg Mayles on Twitter, he originally intended to flood the engine room, so this track is presumably a leftover from that.

(Source: Gregg Mayles on Twitter)

Unused Fanfares

Quit

Value: 005C

A shorter version of the Game Over fanfare (which has the internal name "Last Bit"). It might have been used for the Game Over screen before the cutscene was implemented.

Door Open

Value: 0037

This resembles the tune played when Mumbo transforms Banjo, albeit with softer instrumentation. It is later used in Banjo-Tooie if the player lets Dingpot replenish their items.

Mystery

Value: 0019

This jingle is used when a player collects the unused random honeycomb.

Unused Graphics

Firefly

Joss Whedon had nothing to do with this.

A firefly that looks similar to the Beehives' bees, even using the same sprite for its wings! It most likely would've appeared in Bubblegloop Swamp, adding extra atmosphere to the level.

2D Button Icons

BanjoKazooie-abutton.png BanjoKazooie-bbutton.png BanjoKazooie-cup.png BanjoKazooie-cdown.png BanjoKazooie-cleft.png BanjoKazooie-cright.png BanjoKazooie-lbutton.png BanjoKazooie-rbutton.png BanjoKazooie-zbutton.png BanjoKazooie-sbutton.png BanjoKazooie-dpad.png BanjoKazooie-cstick.png

2D button icons found near the dialogue font graphics. These were likely meant to appear in the dialogue instead of the button names.

Rusty Bucket Bay Toxic Pool

BanjoKazooie-rbbtoxicpool.png

Most of the textures for the toxic pool in Rusty Bucket Bay can't be seen in-game normally since the water texture is completely opaque and Banjo can't swim under it.

Christmas Tree

BanjoKazooie-christmastree.png

A small graphic of the Christmas tree in Freezeezy Peak.

Coconut

BanjoKazooie-coconut.png

An unused dialogue icon for what appears to be a coconut.

Tree

BKEarly-dream644.png

BanjoKazooie-tree.png

An unused 2D tree dating all the way back to the N64 version of Project Dream.

Early Empty Honeycomb

Early Final
BanjoKazooie-emptyhoneycombearly.png BanjoKazooie-emptyhoneycombfinal.png

An early version of the empty honeycomb icon, which looks like an altered copy-paste of the filled honeycomb icon. The final version is redone from scratch and makes the difference between the two more distinct.

Early Hourglass

Early Final
BanjoKazooie-hourglassearly.png BanjoKazooie-hourglassfinal.png

An early version of the hourglass icon which has skulls on it.

Lockup's Mouth

BanjoKazooie-lockupface.png

The eye texture for the Lockup enemies in Treasure Trove Cove has a mouth that isn't visible in-game.

Flag Textures

BanjoKazooie-redflag.pngBanjoKazooie-greenflag.pngBanjoKazooie-blueflag.png

Unused flag textures. An unused green flag model exists in the ROM.

Furnace Fun Podium

BanjoKazooie-podium.png

This texture is used on the other side of Grunty's podium in Furnace Fun. It can't be seen without glitches as there aren't any camera angles that show it and the podium disappears once Furnace Fun is completed.

(Source: Original TCRF research)

Unused Models

Picture

Hello, sailor.

This was probably intended to show up in one of the rooms in Mad Monster Mansion with all the other pictures.

Debug Stuff

SFX MAKE FIX KILL is my new band name.

These look like icons and text which would be used in a debug mode. No idea how they were used, though.

"ON VACATION" Sign

On vacation from what? You just sit there and wait for me to stop by!

This was very likely for use in Mumbo's hut in the Winter area of Click Clock Wood. Instead, a Beehive tells Banjo that Mumbo's on vacation.

BK Flag

BanjoKazooie-flag.png

A green flag that looks similar to the flags found in Boggy's sled race in Freezeezy Peak which has "BK" on it.

Unused Joints

Concert Cutscene Banjo-Kazooie - Unused Joints

Bk concert model unused joints.png

The skeleton for Banjo and Kazooie's intro concert cutscene model has three unused joints near Banjo's backpack (highlighted in blue in the picture, visualized by extracting the model data and viewing it in Maya). Based on its position within the model, this joint chain was likely intended to be used for animating the backpack's flap. The cutscene model is missing most of the backpack's polygons, though, so the joints end up being completely unnecessary. These joints are not present within the skeleton for Banjo and Kazooie's gameplay models.

Since the concert model is also missing a number of polygons around Banjo's back and the back of Kazooie's head, it's possible that the backpack was animated at an earlier stage in development but this was lost when some of the model's polygons were trimmed to improve the cutscene's framerate. It could be interesting to check if the backpack joints' positions and rotations are still being animated during the concert cutscene despite having no geometry assigned to them.

Random Honeycombs

Present in the game are unused random honeycombs which look exactly like regular ones. Upon collecting one, a short unused jingle will play and the honeycombs on Banjo's health bar will start flashing. After a couple of seconds, it'll stop and the currently lit honeycomb will now be how much health Banjo will have. GameShark code 81366CA4 0054 will re-enable the random honeycombs in the US 1.0 version.

Random honeycombs would later appear in Banjo-Tooie, but have a question mark or exclamation mark to differentiate them from normal honeycombs and also allow players to stop the roulette by pressing A.

Vent

The vent object hacked into the anchor room of Rusty Bucket Bay.

A global "vent" object is available within the game's code. It is a fully functional hazard that matches the aesthetics of Rusty Bucket Bay, and was likely used in that level as well as in place of the Grille Chompas outside of it. The vent remains closed until the player is within a certain proximity, at which point it will release steam on a fixed interval that will damage the player. It can't be killed or damaged.

Exit to Witch's Lair

BanjoKazooie-exittowitch'slair.png

An unused option for the pause menu was "Exit to Witch's Lair". This option would instantly return the player to Gruntilda's Lair from any level, without having to run back to the start pad. It's featured in a picture in the American and Australian instruction booklets, but absent again in the European one. The following GameShark codes will restore this option to the pause menu:

US v1.0 Europe Japan
80383080 0000
8136C4EC 002D
8136C4F0 3DCC
8136C4F2 CCCD
8136C4FC 004B
8036C4FE 0005
8136C500 3E4C
8136C502 CCCD
8136C50C 0069
8136C510 3E99
8136C512 999A
8136C51C 0087
8036C9B8 0000
8036C9B9 005A
8036C9C9 007D
8036C9D9 009C
8036C9BA 0005
813839F2 0100
8036CB0C 0000
8036CB0D 005A
8036CB1D 007D
8036CB2D 009C
8036CB0E 0005
81383B52 0100

Stop 'n' Swop

Maddening, isn't it?

If the player collects all of the Jiggies and then beats Gruntilda, Mumbo will show pictures of two Eggs and one Ice Key during the ending. These and four more Eggs can be obtained by using secret built-in codes: go to the sandcastle in Treasure Trove Cove and type in "CHEAT"; a cow moo will confirm correct entry. Now, enter any of these codes:

Code Description
NOW YOU CAN SEE A NICE ICE KEY WHICH YOU CAN HAVE FOR FREE In Wozza's Cave in Freezeezy Peak, the ice wall will disappear, allowing the player to go through into a room containing the Ice Key. Of note is that this was one of the first Stop 'n' Swop items to be obtained, due to the use of the "Press L to Levitate" GameShark code.
OUT OF THE SEA IT RISES TO REVEAL MORE SECRET PRIZES Sharkfood Island will rise out of the sea and the player will be able to enter it. Inside is a large structure that can be climbed to acquire the Pink Egg.
A DESERT DOOR OPENS WIDE ANCIENT SECRETS WAIT INSIDE In Gobi's Valley, the door which is normally always closed will be opened. Inside is a secret room with a sarcophagus which can be opened using a nearby switch. Inside the sarcophagus is the Blue Egg.
DONT YOU GO AND TELL HER ABOUT THE SECRET IN HER CELLAR In the wine cellar in Mad Monster Mansion, the keg which normally has an X printed on it will be opened. It leads to a secret room with the Cyan Egg inside.
AMIDST THE HAUNTED GLOOM A SECRET IN THE BATHROOM In the bathroom in Mad Monster Mansion, the Green Egg will appear on top of Loggo the toilet.
THIS SECRET YOULL BE GRABBIN IN THE CAPTAINS CABIN The Red Egg will appear in the Captain's Cabin in Rusty Bucket Bay.
NOW BANJO WILL BE ABLE TO SEE IT ON NABNUTS TABLE In Click Clock Wood, the Yellow Egg will appear on the table in Nabnut's house in Winter.

As soon as the player collects one of these, a new menu called "Stop 'n' Swop" will appear at the very end of the game totals, which shows all the secret items collected so far. None of these items have an effect in-game; they were intended to be used in Donkey Kong 64 and Banjo-Tooie by quickly swapping the cartridges after turning the power off, hence the feature's name. Unfortunately, due to technical limitations, the feature had to be scrapped - the feature depended on powered-off N64s retaining Rambus memory for 10 seconds, but newer models starting in 1999 reduced the time down to just 1 second, and attempting to swap one cartridge for another and turning the power back on within this time would be exceptionally difficult.

These codes are effectively permanent. New games started after these codes are input will begin with the locations unlocked, and new games started after the items are collected will still have them collected. The only way to erase these items is to use GameShark code 81283400 0000.

Rare reintroduced the concept in the Xbox Live Arcade release of Banjo-Kazooie: collecting the items both adds them to the player's inventory in Banjo-Tooie (which makes the breakable N64 carts drop different items for a "Stop 'n' Swop II") and unlocks rare parts in Banjo-Kazooie: Nuts & Bolts.

Unused Gameplay Demos

Present are four unused gameplay demos that can be seen at the title screen in the US 1.0 version by using the below GameShark codes.

(Source: Runehero123)

Spiral Mountain

Code:

80371F00 0001

A demo of Banjo running around in Spiral Mountain. Of the four unused demos, this one is the most complete and was probably intended to be used at one point.

Gruntilda's Lair

Code:

80371F00 0069

A short demo that takes place in the first room in Grunty's Lair. Banjo starts at the top of the slope near the first Note Door, slides down and walks towards the exit before the demo ends.

Freezeezy Peak

Code:

80371F00 0027
80371F03 0006

A demo of Banjo attacking a Sir Slush enemy in Freezeezy Peak. This demo desyncs partway through, causing Banjo to slide off the rooftop and run around in the water.

Rusty Bucket Bay

Code:

80371F00 003F
80371F02 005F

A very short demo that takes place in the Captain's Cabin in Rusty Bucket Bay. In this demo, Banjo attacks an enemy and jumps once before the demo ends.

Oddities

Out-of-Bounds Level Geometry

BanjoKazooie-triangle.png

Underneath the maze in King Sandybutt's tomb in Gobi's Valley is a large triangle that is never seen in-game.

(Source: Ferrox)

Song Name Oddity

The short fanfare that plays when a player completes Grunty's Furnace Fun is internally named "Note Door", indicating that it was intended to play when the player opens a Note Door at some point during development. In the final game, the Note Door fanfare uses the same fanfare for when the player collects all 10 Jiggies in a world (internally named "Jig 10").

Animation Filenames

The animations of Banjo and Kazooie firing eggs forwards and backwards are internally named "egg head" and "egg ass" respectively. These filenames would carry over to Banjo-Tooie.

(Source: Ferrox)

Mumbo Tokens

There are 116 Mumbo Tokens in the game, but only 115 can be collected through normal gameplay. This is because two tokens in Mad Monster Mansion, one inside a breakable keg in the wine cellar and the other next to the Jiggy found by flushing down Loggo the toilet, have been assigned the same bit in memory, so collecting one of these causes the other to disappear.

There is a way to collect all 116 tokens legitimately: if you enter the cellar without collecting the token, then collect the token in Loggo, the token will still be there in the cellar. This is because the cellar remains partially loaded if you've been in it before.

Unused Text

Present at 0x80277A80 in RAM are internal song names:

Blank
Scrap
Jungle 2
Snow 2
Bells
Beach
Swamp
Crab Cave
Title
Notes
Jinjo
Feather
Egg
Jigpiece
Sky
Spooky
Training
Lighthouse
Crab
Shell
Feather Inv
Extra life
Honeycomb
Empty honey piece
Extra honey
Mystery
You lose
Termite nest
Outside whale
Spell
Witch House
In whale
Desert
In spooky
Grave
Church
Sphinx
Invunerability
Collapse
Snake
Sandcastle
Summer
Winter
Right
Wrong
Achieve
Autumn
Default forest
5 Jinjos
Game over
Nintendo
Ship
Shark
Ship inside
100 Notes
Door Open
Organ sequence
Advent
Slalom
Race win
Race lose
Jigsaw magic
Oh dear
Up
Down
Shamen Hut
Jig 10
Carpet
Squirrel
Hornet
Treetop
Turtle Shell
House Summer
House Autumn
Out Buildings
Hornet 2
Cabins
Rain
Jigsaw Open
Jigsaw Close
Witch 1
Witch 2
Witch 3
Witch 4
Witch 5
Mr Vile
Bridge
Turbo Talon Trot
Long Legs
Witch 6
Boggy sad
Boggy happy
Quit
Witch 7
Witch 8
Spring
Squirrel attic
Lights
Box
Witch 9
Open up
Puzzle complete
Xmas tree
Puzzle in
Lite tune
Open extra
Ouija
Wozza
Intro
Gnawty
Banjo's Pad
Pause
Cesspit
Quiz
Frog
GameBoy
Lair
Red Extra
Gold Extra
Egg Extra
Note door
Cheaty
Fairy
Skull
Square Grunty
Square Banjo
Square Joker
Square Music
Lab
Fade Up
Puzzle Out
Secret Gobi
Secret Beach
Secret Ice
Secret Spooky
Secret Squirrel
Secret Egg
Jinjup
Turbo Talon Trot short
Fade Down
Big Jinjo
T1000
Credits
T1000x
Big Door
Descent
Wind up
Air
Do jig
Picture
Piece up
Piece down
Spin
BarBQ
Chord1
Chord2
Chord3
Chord4
Chord5
Chord6
Chord7
Chord8
Chord9
Chord10
Shock1
Shock2
Shock3
Shock4
Sad grunt
Podium
Endbit
Rock
Last Bit
Unnamed piece
Unnamed piece

Present at 0x802781A0 in RAM are internal world names:

gs
coshow
whale
haunted
desert
beach
jungle
swamp
ship
snow
tree
training
intro
witch
battle

Present at 0x80377740 in RAM are internal room names:

(gcSectionMin)
Training - Spiral Mountain
Jungle
Beach - Pirate Ship Hold
Beach - Crab Shell
Beach
Beach - Sea Castle
Beach - Sand Castle
Whale
Jungle - Termite Hill
Swamp
Jungle - Shamen Hut
Swamp - Crocodile Head
Swamp - Turtle
Desert
Desert - Pyramid 1 (Match the pairs)
Desert - Pyramid 2 (Maze)
Desert - Pyramid 3 (Water)
Desert - Pyramid 4 (Snake)
Desert - Sphinx
Desert - Secret Chamber
Haunted House
Haunted House - Organ
Haunted House - Cellar
Intro - Start - Nintendo
Intro - Start - Rareware
Intro - End Scene 2 : Not 100
Intro - Grunties Lair 1 - Scene 1
Intro - Grunties Lair 2
Intro - Grunties Lair 3 - Machine 1
Intro - Grunties Lair 4 - Game Over
Intro - Grunties Lair 5
Intro - Inside Banjo's Cave 1 - Scenes 3,7
Intro - Inside Banjo's Cave 2
Intro - Inside Banjo's Cave 3
Intro - Spiral 'A' - Scenes 2,4
Intro - Spiral 'B' - Scenes 5,6
Intro - Spiral 'C'
Intro - Spiral 'D'
Intro - Spiral 'E'
Intro - Spiral 'F'
Intro - Spiral 'G'
Intro - End Scene 3 : All 100
Intro - Grunty Threat 1
Intro - Grunty Threat 2
Intro - End Scene
Intro - End Scene 4
Whale - Inside A
Whale - Inside B
Whale - Inside C
Haunted House - Ouija Board
Haunted House - Well
Haunted House - Dining Room
Haunted House - Room 1
Haunted House - Room 2
Haunted House - Room 3 : Fireplace
Haunted House - Church
Haunted House - Room 4 : Bathroom
Haunted House - Room 5 : Bedroom
Haunted House - Room 6 : Floorboards
Haunted House - Barrel
Haunted House - Shamen Hut
Haunted House - Septic Tank
Ship
Ship - Anchor room
Ship - Prop Room
Ship - Warehouse 1
Ship - Warehouse 2
Ship - Container 1
Ship - Container 3
Ship - Crew Cabin
Ship - Hold
Ship - Store Room
Ship - Galley
Ship - Navigation Room
Ship - Container 2
Ship - Captain's Cabin
Tree - Start
Tree - Main (Spring)
Tree - Main (Summer)
Tree - Main (Autumn)
Tree - Main (Winter)
Swamp - Shamen Hut
Tree - Shamen Hut (Spring)
Tree - Shamen Hut (Summer)
Tree - Shamen Hut (Autumn)
Tree - Shamen Hut (Winter)
Snow - Inside Xmas Tree
Snow - Igloo
Snow
Snow - Shamen Hut
Tree - Wasp Hive (Summer)
Tree - Wasp Hive (Spring)
Tree - Wasp Hive (Autumn)
Tree - Squirrel House (Spring)
Tree - Squirrel House (Summer)
Tree - Squirrel House (Autumn)
Tree - Squirrel House (Winter)
Tree - Squirrel Room 1 (Winter)
Tree - Squirrel Room 2 (Autumn)
Tree - Squirrel Room 2 (Winter)
Tree - Top (Spring)
Tree - Top (Summer)
Tree - Top (Autumn)
Tree - Top (Winter)
Witch - Flr 1, Area 1 : Mumbo
Witch - Flr 1, Area 2
Witch - Flr 1, Area 3
Witch - Flr 1, Area 3a : Cauldron
Witch - Flr 1, Area 4 : Pirate ship
Witch - Flr 1, Area 5 : Pipes room
Witch - Flr 1, Area 6 : Witch statue
Witch - Flr 1, Area 7 : Swamp/Snow
Witch - Flr 2, Area 1 : Sand Chamber
Witch - Flr 2, Area 2 : Spooky/Advent
Witch - Flr 2, Area 4 : Dark room
Witch - Flr 2, Area 5 : Crypt outside
Witch - Flr 2, Area 5a : Crypt inside
Witch - Flr 3, Area 1
Witch - Flr 3, Area 2 : Ship side
Witch - Flr 3, Area 3
Witch - Flr 3, Area 4 : Tree trunks
Witch - Flr 3, Area 4a
Witch - Flr 4, Area 1 : Quiz Room
Witch - Flr 5, Area 1 : Gruntie's rooms
Witch - Battlements
Snow - Wozza Cave
Training - Banjo Cave
Training - Banjo Cave Save
(gcSectionMax)

Present at 0x80378550 in RAM is text for the unused Exit to Witch's Lair option:

EXIT TO WITCH'S LAIR

Present at 0x803950C0 in RAM is a test string for the quiz at the end of the game:

THIS IS A SLIGHTLY LONGER PIECE OF TEXT FOR THE QUIZ DIALOGS!

Present at 0x80368801 in RAM is a hidden copyright:

** BANJO KAZOOIE (c) RARE Ltd 1998 **
Early Final
MY OILY SCUM WILL MAKE YOU GASP AND CHOKE WHEN YOU'RE IN GRUNTY'S GRASP! MY OILY WATER, IN YOU PLUNGE, YOU'LL LOSE AIR WHILE IN THAT GUNGE!

An early version of the message Grunty says when the player jumps into the water in Rusty Bucket Bay. This change was likely done to make it more clear that Banjo still loses air when swimming on the surface. The earlier line is also fairly disjointed and loose in terms of rhyming.

Early Final
YOU'LL USE YOUR AIR UP DOUBLE FOLD. I'VE MADE THE WATER ICY COLD. YES THAT'S RIGHT, SWIM UNDER THERE, ICY WATER TAKES DOUBLE AIR!

An early version of the message Grunty says when the player swims under the icy water in the Winter section of Click Clock Wood. It's a slightly awkward line for Grunty to state she directly made the water ice-cold when the level's seasonal cycle can be directly manipulated by the player.

COOL...
AN ENORMOUS ICE KEY! WE OUGHT TO KEEP THIS FOR LATER.

This dialogue is spoken by Kazooie when Banjo collects the Ice Key which is normally inaccessible.

PRESS THE Z TO READ THE INSTRUCTIONS AGAIN, OR START TO QUIT OUT OF THE GAME AT ANY TIME.

Unused text for the puzzle mini-game inside Banjo's house. Pressing Start does quit the game, but pressing Z does nothing.

(Source: Ferrox)
GRRAAR…THIS CONGO'S TREE! ME HIT TERMITE WITH ORANGES!

This dialogue can be heard if the player approaches Conga as a termite. Conga was originally to be called "Congo".

Early Final
KAZOOIE CAN CARRY 100 OF THESE IN HER BACKPACK, SO GET COLLECTING! BIRD BRAIN CAN CARRY 100 EGGS IN HER BACKPACK.

Presumably, this was going to be part of Bottles' explanation for teaching Blue Eggs.

IF THE ITEM YOU PICKED UP ISN'T NEEDED JUST YET, BEAKY WILL STORE IT IN YOUR BACKPACK.

It's possible this text could have been used for picking up Blue Eggs, Red Feathers or Golden Feathers before they were learned, but each item has unique dialogue when collected.

Debugging Text

Present at 0x80278340 in RAM is some audio-related debugging text:

comusic.c
n_csplayer.c
n_seqplayer.c
FALSE
seqp->state != AL_PLAYING
seqp->state == AL_STOPPED
seqp->bank != NULL
event->type == AL_SEQ_MIDI_EVT || event->type == AL_SEQP_MIDI_EVT
TRACE: '%s' {Line %d}
inst != NULL

Present at 0x80275658 in RAM is this string:

HjunkDire:218755

A lot of development-related strings are sometimes loaded into memory, but never displayed onscreen. These were likely displayed on a developer console:

Unrecognised 2D prop %d - remove it from BanjoReactiveObjs in gsprops.c!
Unrecognised 3D prop %d - remove it from BanjoReactiveObjs in gsprops.c!
parentInst->Radius<=10
parentInst->Radius>=1
baavatar.c: This message means that bug #93 is fixed!
mode != baBanjoRestModeNull
(clock >= 0) && (clock < baBanjoClockLastClock)
badraw.c         : baDrawMake          :(CS) : Loading Banjo model
id < NUM_BANJO_SPHERES
C–(flag > baFlagNull) && (flag < baFlagLastFlag)
ffinput == baInputWaterDive
(id >= baKeyButtonStart) && (id < baKeyLastButton)
gsWorldGetSection() == gcSectionSpiralMountain
(done >= 0) && (done < baKnowDoneLastDone)
(done >= 0) && (done < baBanjoKnowLastKnow)
(knowledge >= 0) && (knowledge < baBanjoKnowLastKnow)
&Done-&Know == 1
------------------------------- OUT OF MAP! ---------------------
Don't know the id %d
bamesg.c: Queue is too big!
bamesg.c: Did not expect to get ChMsg_HitYou (CS)
bapreload.c      : baPreLoadMake       :(CS) : Pre-loading player model
bareact.c: Can't find a reaction to match the hitFx #%d
state < bsLastState
line < MAXRANGELINES
id < baTimerLast
numActiveBoosts < sizeof(AnimVels) / sizeof(float)
bscroc.c         : bsCrocEatMake        :(CS) : Crocodile food
ChMsg_RideStop was received
cabalookat.c: caBanjoCtrl is %d
cabalookat.c: Did not expect Mode to be %d
Spline.ref != -1
cabaspline.c: You have overlapped a 'Spline leave' box with a 'Spline goto' box (CS)
Me.link.List[index].used == 0
(List[index].used) && (List[index].camType == camType)
cadb.c: I expected to be passed camera type %d, but I was given camera type %d instead
cadb.c: Camera %d does not exist!
List[index].used
cadbdist.c       : caDbDistMake       :(CS) : Camera inst (distance data)
cadbdolly.c      : caDbDollyMake       :(CS) : Camera inst (fixed pos)
cadbfixpos.c     : caDbFixPosMake      :(CS) : Camera inst (fixed pos)
cadbfixposrot.c  : caDbFixPosRotMake   :(CS) : Camera inst (fixed pos and rot)
setup < sizeof(MarkerTable)
caworld.c: Bad setup number! (%d)
cofont           : meMakeWorld         :(ON) : Characters table
cofont           : meMakeWorld         :(ON) : Font units table
cofont           : meMakeWorld         :(ON) : Text units table
cofont           : meMakeWorld         :(ON) : Text world structure
INFO on Peak Gfx/Mtx/Vtx values:.Gfx=%d MAX=%d, Mtx=%d MAX=%d, Vtx=%d MAX=%d
gcSectionMin < section && section < gcSectionMax
dsIndexIsUsed(W->fadeindex, 1)
seq>=0
seq >= 0
(W) && (rate>0) && (rate<32768)
comusic.c: Trying to lock a non-existent tune (%d)
coMusic: Warning! You're trying to fade a non-existent tune (%d) to nothing?
comusic.c        : coMusicMake         :(JS) : W - Seq. List
cosectionstor    : coSectionStorSave   :(PJM): Saved section for re-entry
CubeList.top <= CubeList.base + CubeListMax
dbhit.c: Too many triangles - array overflow avoided - Tell CS
dbvtx.c          : dbVtxMake           :(MB) : Vtx array
index > 0 && index < ds->noBlocks
dsindex.c        : dsIndexMake         :(MB) : dsIndex..index > 0
0 <= index && index < (list->top - list->base) / list->blockSize
dst >= list->base && dst < list->top && src >= list->base && src < list->top
index >= 0 && index <= (list->top - list->base) / list->blockSize
dslist.c         : dsListMake          :(MB) : list.fx->audio
noTransitions >= 0..fx - fxBase
fxbanjoscore.c   : fxBanjoScoreTick    :(GS) : Demand Loading scoreboard 25d frame
fxbanjoscore.c        : fxBanjoScoreTick         :(GS): Demand Loading scoreboard 25d frame
fxbubble.c       : fxBubbleMake        :(JS) : 'inst'
fxbubble.c       : fxBubbleMake        :(JS) : 'Scales'
fxbubble.c       : fxBubbleMake        :(JS) : loading texture1 
fxbubble.c       : fxBubbleMake        :(JS) : loading texture0 
ERROR: fxBubbleMake : Not enough memory for inst
fxbubble.c       : fxBubbleMake        :(JS) : 'Frames'
fxbubble.c       : fxBubbleInsert      :(JS) : 'b'
fxcommon3score.c        : fxCommon3ScoreTick         :(GS): Demand Loading scoreboard 3d frame
fxcommonscore.c        : fxCommonScoreTick      :(GS): Demand Loading scoreboard 25d frame
fxenergybar.c        : fxEnergyBarTick         :(GS): Demand Loading scoreboard 25d frame
particleRef<MaxBit2D
particleRef>MinBit2D
particleRef<MaxBit3D
particleRef>=0
fxextracombs.c        : fxExtraCombsTick         :(GS): Demand Loading scoreboard 25d frame
fxfont           : meFontMakeLUT       :(PJM): Font lookup table
fxfont.c         : fxFontMake          :(KC) : Loading temporary scoreboard font texture
fxfont.c         : fxFontMake          :(KC) : Reload scoreboard alpha font
fxfont.c         : fxFontMake          :(KC) : Reload scoreboard numeric font
fxfont.c         : fxFontMake          :(KC) : Load scoreboard alpha font
glStringLen(pnt->Text) < 32.fl
yfadesize<=MAX_FADE_HEIGHT
fxfont           : fxFontMake          :(PJM): Font print list
fxfont.c         : fxFontMake          :(KC) : Load Japanese font
fxfont.c         : fxFontMake          :(KC) : Load scoreboard numeric font
fxfont.c         : fxFontMake          :(KC) : Load dialog alpha/numeric font
fxgen.c          : fxGenMake           :(MB) : frames
fxgen.c          : fxGenMake           :(MB) : model
lvel <= hvel
lyaw <= hyaw
lpitch <= hpitch
fxgen.c          : fxGenCtrlMake       :(PJM): CtrlList for automatic fxGen driver
fxgenerator.c    : fxGenMake             :(MB) : gen
G[d].used
d > 0 && d < MaxUnits
fxgendl.c: Had to delete an fxGenDl myself!
fxsnow.c         : fxIceMake          :(MB) : model
fxice.c          : fxIceMake          :(PJM): fxIce particle DBase
fxice.c          : fxIceMake          :(PJM): fxIce
fxjinjoscore.c        : fxJinjoScoreTick         :(GS): Demand Loading scoreboard 25d frame
fxleaves.c         : fxLeavesMake          :(MB) : model
fxleaves.c         : fxLeavesMake          :(MB) : fxLeaves
fxmix.c          : meMakeFrame         :(MB) : frame
mix->frame
fxrain.c         : fxRainMake          :(MB) : model
fxrain.c         : fxRainMake          :(MB) : fxRain
(rgb[0] != 255) || (rgb[1] != 255) || (rgb[2] != 255)
RefTable[ref].ref == ref
ref < sizeof(RefTable) / sizeof(struct Unit)
fxscore.c        : fxScorePreLoad      :(KC) : Quick-Load permanent scoreboard graphic
fxscore.c        : fxScorePreLoad      :(PJM): Pre-Load permanent scoreboard graphic
step->fx1
step->fx0
fxstep.c         : fxStepMake          :(CS) : fxStep info
fxwaterbar.c        : fxWaterBarTick         :(GS): Demand Loading scoreboard 25d frame
meFxTable[inst].active
gcaudio.c: The last sfx ref for this (now invalid) entry was %d
gcaudio.c: meFxTable[%d].active = %d called from line %d
gcaudio.c: Bad audio reference: %d
(ref > 0) && (ref <= MAXREFS)
ref <= MAXREFS
ref > 0
gcaudio.c: Too many sound effect references have been used! (CS)
!meFxRefGetValue(me->ref)
cam->pan >= 0 && cam->pan <= 127
start > stop
start < stop
gcaudio.c: You are trying to quick play a looped sound (%d)
*idx<HITlistSIZE
areaId < MAX_AREA_IDS
gccube.c         : gcCubeMake          :(GDS): gsGrid: infinite size grid with hits
gccube.c         : gcCubeMake          :(PJM): gsGrid: infinite size grid
gccube.c         : gcCubeMake          :(MB) : base
gccube.c         : gcCubeMakeBIL       :(PJM): BILbase
gccube.c         : meGenArray          :(PJM): Layer Array
gccube.c         : gcCubeMakeBAREA     :(PJM): Bounding Areas Array for Jigsaw pieces
gccube.c         : gcCubeMakeBAREA     :(PJM): Bounding Areas Array for Cameras
gccube.c         : gcCubeMakeBAREA     :(PJM): Bounding Areas Array
gccube.c         : gcCubeBoundInsert   :(PJM): Bounding Area List
gccube.c         : gcCubeBoundInsertCam:(PJM): Camera Bounding Area List
gccube.c         : gcCubeBoundInsertJig:(PJM): Jigsaw Bounding Area List
hed->id < MAX_AREA_IDS
gccube.c: Unknown camera bits in mask %x hex
VisNext<MaxCamBoxes
maxTo>minTo.Me
mult[2]<=MaxGridSize
rel<Me
mult[2]
rel>=0
Me.JapBodge != 2
Me.JapBodge != 1
inslen + curlen < INSERT_TEXT_LENGTH
Me.charID[Me.J] < MAX_CHARS - DIALOG_BANJO
gcdialog.c       : meDialogDemand      :(KC) : Dialog structure
gcDialogInProgress()
Me.CleanUpCount < MAX_DIALOG_BOXES
Me.Qsize < MAX_DIALOG_QUEUE
SplineNum >= 0 && SplineNum < obDialogSplineEnd - obDialogSplineStart
gcfloor.c        : gcFloorMake         :(CS) : Floor hit info
flag >= 0 && flag < gcGameFlagMax
flag >=0 && flag < gcGameFlagMax-N+1
flag >= 0 && flag < gcGameFlagMax-N+1
Me.top <= Me.min + Max
gchoneysaw.c: Incorrect honeysaw number (%d) - honeysaw probably does not have a 'honeysaw bounding area'
gcHoneySet:.  Incorrect honey number (%d) - honey probably does not have a 'honey bounding area'
gcjigsaw.c: Incorrect jigsaw number (%d) - jigsaw probably does not have a 'jigsaw bounding area'
gcJigsawSet:.  Incorrect jigsaw number (%d) - jigsaw probably does not have a 'jigsaw bounding area'
jig >= 1 && jig <= NoJigs
flag >= 0 && flag < gcLevelFlagMax
flag >=0 && flag < gcLevelFlagMax-N+1
flag >= 0 && flag < gcLevelFlagMax-N+1
gcMap: There is a problem with the section model - please show this to MB
gsmap.c          : gcMapMake           :(MB) : model (2)
Me.hit0 && gl3d1GetVtx(Me.model0)
gsmap.c          : gcMapMake           :(MB) : model (1)
gcPause.c        : gcPauseMake         :(KC) : Ice key model
gcPause.c        : gcPauseMake         :(KC) : Easter egg model
gcPause.c        : gcPauseMake         :(KC) : Japanese Total Title
gcPause.c        : gcPauseMake         :(KC) : Button graphic
gcPause.c        : gcPauseMake         :(KC) : Stick graphic
gcprops.c        : gecPropsGetModel3   :(MB) : Demand loading model
gcprops.c        : gcPropsGetModel2    :(PJM): Demand loading frame
gcprops.c        : gcProps3Make        :(PJM): Me2
gcprops.c        : gcProps3Make        :(MB) : Me3
gcPropsTick: The FORCED demand dumping has ended early because a usable free region was recovered from 'Me2'
gcPropsTick: The FORCED demand dumping has ended early because a usable free region was recovered from 'Me3'
Order[i] <= Upper
Question->Lines[boxID] <= MAX_LINES_PER_BOX.numWrong > 1
numCorrect + numWrong > 2
correct > 0 && correct <= numCorrect
numCorrect > 0..glDialogGetLanguage() < numLangs
gcQuestion.c     : meQuestionDemand    :(KC) : Raw Question Data
Callback
Timeout >= 0
Number >=0 && Number < gcQuestionNumberOfQuestions(Category)
Category >= 0 && Category < NUMBER_CATEGORIES
Question
gcQuestion.c     : gcQuestionMake      :(KC) : Fixed raw question data
gcQuestion.c     : gcQuestionMake      :(KC) : Question Data
flag >= 0 && flag < gcQuizFlagsMax
gcQuizFlags.c    : gcQuizFlagsMake     :(KC) : Quiz flags
EggBounce
gcshamensaw.c: Incorrect shamensaw number (%d) - shamensaw probably does not have a 'shamensaw bounding area'
gcShamenSet:.  Incorrect shamen number (%d) - shamen probably does not have a 'shamen bounding area'
gsmap.c          : gcSkyMake           :(MB) : model
numPoints > 0
switchNo < MAX_SWITCHES.switchNo > 0
value >= 0 && value <= 255
gcswitch.c       : gcSwitchMake        :(CS) : Switch list for intro characters
gctransition.c   : meSetMode           :(MB) : Model
gctransition.c   : meSetMode           :(MB) : Model (white)
gctransition.c   : meSetMode           :(MB) : Model (black)
flag >= 0 && flag < gcVolatileMax
flag >= 0 && flag < gcVolatileMax-N+1
Data->NumSounds == 0
index <= MAX_FRAME_SEQS.index <= MAX_SYLLABLES
Data->DrawBoxFlag
Head drawing
gcZoomBox.c      : gcZoomBoxMake       :(KC) : Head graphic
Text[i].NumLines <= MAX_LINES_PER_ZOOMBOX
Data->DrawOldHead
Data->TextLine
gcZoomBox.c      : gcZoomBoxMake       :(KC) : Demand loaded dialog box model
gcZoomBox.c      : gcZoomBoxMake       :(KC) : Zoom Box Data
(tickIdx >= geEdPropsCamGotoFirst) && (tickIdx <= geEdPropsCamGotoLast)
head->opcode >= 0 && head->opcode < mcOpcodeMax
switchId >= 0 && switchId < dbSwitchMax
model
distance > FadeInDistance && distance <= 30000
grp->childIp != 0
gl3d1.c: Asking for switch %d, when only values 0 to %d are valid (switchId %d)
End model
Start model
Transparency
alpha < 255
gl3d1.c          : gl3d1Draw        :(MB) : glDbLoading (virtual) model.Ez
(((int) model) & 3) == 0
0 <= joint && joint < anim->size
glanim1.c        : glAnim1Make         :(MB) : anim
cycle >= 0 && cycle <= 1
glanim1: cycle is %5.32f
0 <= cycle && cycle < 1.<€..(cycle >=0) && (cycle < 1.0)
anim3->tweenTo
anim3->tweenFrom
anim3->anim2
anim3->anim1
glanim3.c      : glAnim3SetAnim       :(MB) : Animation.anim3
glanim3.c        : glAnim3            :(MB) : anim3
1 != 0 && l2 != 0
glCalc.c         : glCalcMake          :(ON) : 'ASin2' inverse sine table
lz < uz
ly < uy
lx < ux
min[2] < max[2]
min[1] < max[1]
min[0] < max[0]
ToFrom==OUTgoing || ToFrom==INcoming
%c%cH
      If this is not enough to solve your woes then you'll probably be seeing my happy self again!!!
      Increase the value for 'Max' in 'gldb.c' to %d
object >= 0 && object < MemRoot->noOfObjects
gldb.c           : glDbReset           :(MB) : 'MemIndex'
gldb.c           : glDbReset           :(MB) : 'MemRoot'
gldb.c           : glDbReset           :(PJM): 'PjmLibObjs'
gldb.c           : glDbReset           :(PJM): 'PjmLibCount'
gldb.c           : glDbReset           :(PJM): 'PjmLibraryQik'
gldb.c           : glDbReset           :(PJM): 'PjmLibrary'
glDb: Description: '%s'
glDb: Trying to glDbLoadObject(unknown object id %d ~ NB. should be 0 to %d)
glDb: Cannot load to address as size of block is not large enough
OriginalSize>=0 && OriginalSize<1024*1024*2.glDbGetClass(object)!=dbClassNull
object was %d
glDb: PjmLibrary is too small for number of objects being loaded
Me.obDialog == -1
Me.RawBlock == NULL
glDialogGetLanguage() < dlgLangs
gldialog.c       : meDialogDemand      :(KC) : Raw dialog data
obDialog == Me.obDialog
value<((Name+1)*1000)
value>=(Name*1000)
Name<ErrMax.Name>=0
glface.c         : glFaceMake          :(MB) : glFace
glfx.c           : glFxMake            :(CS) : Allocating audio heap
new360fx.ctl
(mix >= 0) && (mix <= 127)
(pan >= 0) && (pan <= 127)
gameData[VERSION_OFFSET] == SAVE_GAME_VERSION
Assertion failed: '%s' in file %s, line %d
glGlobalAnCtrlFail failed: NOT a valid anCtrl pointer %p, in file %s, line %d
iMax > i
(char*) gu - (char*) gid == gsize
glid.c           : glIdMake            :(MB) : glId
me->frameNo < glFrames1GetNoOfFrames(me->frames)
me->frames
(i > 0) && (i < MAXITEMS) && (Items[i].used)
(item > 0) && (item < MAXITEMS) && (Items[item].used)
glitem2d.c       : glItem2SetFrames    :(CS) : 2D frame(s)
(item > 0) && (item < MAXITEMS)
Allocating mini frame buffer for jiggy subgame
jigInfos[id-1].data.link
id>start && id<=end
LF_ANKLEC
RT_ANKLEC
LF_KNEEB
RT_KNEEB
LF_ANKLEB
RT_ANKLEB
NECKA
BACKA
BASEA
RT_WINGC
RT_WINGB
RT_WINGA
LF_WINGC
LF_WINGB
LF_WINGA
RT_ANKLEA
RT_KNEEA
RT_HIPA
LF_ANKLEA
LF_KNEEA
LF_HIPA
GEN_ZZ
GEN_YY
GEN_XX
GEN_WW
GEN_VV
GEN_UU
GEN_TT
GEN_SS
GEN_RR
GEN_QQ
GEN_PP
GEN_OO
GEN_NN
GEN_MM
GEN_LL
GEN_KK
GEN_JJ
GEN_II
GEN_HH
GEN_GG
GEN_FF
GEN_EE
GEN_DD
GEN_CC
GEN_BB
GEN_AA
GEN_Z
GEN_Y
GEN_X
GEN_W
GEN_V
GEN_U
GEN_T
GEN_S
GEN_R
GEN_Q
GEN_P
GEN_O
GEN_N
GEN_M
GEN_L
GEN_K
GEN_J
GEN_I
GEN_H
GEN_G
GEN_F
GEN_E
GEN_D
GEN_C
GEN_B
GEN_A
HEAD
TAIL_TIP
TAIL
RT_TOES
RT_BTOES
LF_TOES
LF_BTOES
TAIL_C
TAIL_B
TAIL_A
RT_WRIST#
RT_WRIST
RT_SHOULDER#
RT_SHOULDER
RT_KNEE#
RT_KNEE
RT_HIP#
RT_HIP
RT_ELBOW#
RT_ELBOW
RT_ANKLE#
RT_ANKLE
NECK#
NECK
LF_WRIST#
LF_WRIST
LF_SHOULDER#
LF_SHOULDER
LF_KNEE#
LF_KNEE
LF_HIP#
LF_HIP
LF_ELBOW#
LF_ELBOW
LF_ANKLE#
LF_ANKLE
CENT
BASE#
BASE
BACK#
BACK
0 <= action && action < glJoyActionMax
Top - Base > 0
Top - Base < Max - 1
(move > 0) && (move < MAXMOVES) && (Moves[move].used)
(move > 0) && (move < MAXMOVES)
index >= 0 && index < pose->size
glpose.c         : glPoseMake          :(MB) : Pose.    
0 <= delta && delta <= 1
gfxTop - gfxBase <= MaxGfx
vtxTop - vtxBase <= MaxVtx
glquick.c        : glQuickMake         :(PJM): 'quick/vtxTop/vtxBase/unit->gfx' space
frames->noOfFrames <= MaxSizes
glrcp.c          : glRcpReset          :(MB) : VtxBase[1]
glrcp.c          : glRcpReset          :(MB) : VtxBase[0]
glrcp.c          : glRcpReset          :(MB) : MtxBase[1]
glrcp.c          : glRcpReset          :(MB) : MtxBase[0]
glrcp.c          : glRcpReset          :(MB) : GfxBase[1]
glrcp.c          : glRcpReset          :(MB) : GfxBase[0]
glRecordMake: Replay buffer (GDS 15/3/98)
0 <= refNo && refNo < dbRefMax
glref.c          : glRefMake           :(MB) : glRef
K
HZ
RCP 
CPU 
spareSlot4!=-1
spareSlot4 != -1
glscore.c: Don't know marker %d
glseq.c          : glSeqInsert         :(CS) : Load midi sequence into RAM before playing
N < MAXSEQS
glseq.c          : glSeqMake           :(CS) : List of pointers to sequences in RAM
nspans>=1
glspline.c       : glSplineMake        :(PJM): Spline
glspline.c       : glSplineMake        :(PJM): Spline Slider list
glspline.c       : glSplineMake        :(PJM): 'lst' table
glspline.c       : glSplineMake        :(PJM): Slots for SFX/MIDI (array)
glspline.c       : glSplineMake        :(PJM): SliderList (array)
glspline.c       : glSplineMake        :(PJM): SplinesList (array)
!fail
glsurface.c: Mismatch of surface table with surface %d on line %d
glsurface.c: Passed a surface of %d on line %d
texNo >= 0 && texNo < dbTexAnimMax
Units[me]
glunit.c: Failed on meAlloc() - cannot allocate a unit
link = %x
anim = %x
item = %x
move = %x
ctrl = %x
glunit.c: Unit #%d
me!=-1
(Me >= 0) && (Me < MAXUNITS)
Units[unit].active
! (maker->mode == gsMakerModeRamWrite && maker->ramMin)
gsmaker.c        : gsMakerMakeDb        :(JS) : Loading Db object
gsmaker.c : gsMakerMakeDb : Unable allocate memory for maker
gsmaker.c        : gsMakerMakeDb        :(JS) : gsMaker
maker->ramPtr + size <= maker->ramMax
!list2
!list
gsprops.c        : gs PropsMakeModule  :(PJM): DLoad list for avatar objects
gsPropsTickDemLoad: The FORCED demand dumping has ended early because a usable free region was recovered
gsprops.c        :gsPropsGetRemoteQuick:(PJM): Demand Loaded frame/quick for 2d remote avatar
link->BaddieFlag
gsprops.c        : gs PropsMaker       :(PJM): HitsBits
gsprops.c        : gsPropsMakeRoamsList:(PJM): gsPRoam list for avatar links (29/10/97)
(prop->avatar.parent)->avatar == (gsPropAvatar) prop
(prop->avatar.parent)->Plist == grid
gsprops.c        : me Insert           :(PJM): props
!LockPBase
gsprops.c        : gs Props Read       :(PJM): prop list
gsprops.c        : gs Props Read       :(PJM): ctrl list (19/05/97)
gsprops.c        : gs Props Read       :(PJM): ctrl list (6/10/97)
gsprops.c        :gsPropsGetRemoteModel:(PJM): Demand Loaded model for 3d remote avatar
(glDbGetClass(link->DemandLoadObj) == dbClassRaw || glDbGetClass(link->DemandLoadObj) == dbClassNull)
mode == gcModeDemo || mode == gcModeEdit || mode == gcModeGame || mode == gcModeNone
**** This version is too old to load the section - please upgrade to a newer version ****
!level || !overlay || glOverlayIsCurrent(overlay)
iu->userNext
Me.sound2
Me.sound1
Me.id0 && Me.id1
water1 && water2
water
sub
Me.sound
mafish.c         : maFishMake          :(MB) : Units
mafish.c         : maFishMake          :(MB) : Gens
mafish.c         : maFishMake          :(MB) : Sphere model
mafish.c         : maFishMake          :(MB) : Fish model
malens.c    : maLensMake         :(MB) : Model
maorgan.c: dialogEnd when current mode is %d
key >= 0 && key < 24
Cat >= 0 && Cat < NUMBER_OF_CATEGORIES
Flag >= 0 && Flag < Pool[Cat]
maQuiz_Quiz->Alarm
maQuiz.c         : maQuizMake          :(KC) : Quiz Lights
maQuiz.c         : maQuizMake          :(KC) : Quiz Data
meDummyFlags[num].link
meActiveFlags[num].link
num < NUM_GATES.num >=0 && num < NUM_BRIDGES
meBridgeLinks[num]
pntBoggy
Me.boggyLink
WARNING: (maslalom.c) - You must set a valid radius
distGatesSq
* WARNING * :maSnowButton.c: Jigsaw 45 CANNOT find it's bootup marker point
* WARNING * :masnowy.c: Jigsaw 49 CANNOT find it's bootup marker point
blink >= 1 && blink <= 4
mawhale.c        : maWhaleMake         :(MB) : Model
s->avatar
pid >= 0 && pid < Me.uTop - Me.uMin
u->audio
pcworld.c        : pcWorldMake         :(MB) : pcUnits
pcworld.c        : pcWorldMake         :(MB) : Model
prop->PTyp && ! prop->remote
inst->Mode == ModeBang
ctrl < MAXCTRLS
state < stDbLastState
(colour >= 0) && (colour <= 6)
suaudio.c        : suaudioMake         :(PJM): Slots for SFX/MIDI (array)
gsPropsGetIfRemoteModel(inst->avatar)
gsPropsUnlockMarker(inst)
gl3d1GetSkeleton(model)
gsPropsLockMarker(inst)
OBJECT TYPE CODE:
inst->dbvtx[i]
Test sphere size load subaddie: meGetRemoteModel
flags & DOUBLE_VERTEX
subaddie.c       :suBaddieInsert:(PJM): Instances DBase (ch_Instance)
(link)->meTickerSpline
RAWFiles\
(ctrl->cycleStart >= ctrl->markStart) && (ctrl->cycleStart <= ctrl->markEnd)
(mode > anCtrlModeNull) && (mode < anCtrlModeLastMode)
(dir == 0) || (dir == 1)
(tw == anCtrlTweenModeOff) || (tw == anCtrlTweenModeOn)
(mode == 0) || (mode == 1)
(cycle >= 0) && (cycle < 1)
anctrl.c         : anCtrlMake          :(CS) : Animation controller
ctrl->used
(mode > anCtrl2ModeNull) && (mode < anCtrl2ModeLastMode)
speed > 0
andb1.c: Possible leak (quiz not active) in index %d
Anims[ref].mode != meModeNull
---- 
USED 
%3d : 
%3d> - : 
%3d> X : 
Total memory used = %d bytes (largest so far = %d)      
 | .Ref>Use: Tick: Data  | Ref>Use: Tick: Data
andb2.c          : anDb2GetAnim        :(CS) : glDbLoading animation data
obAnim < obAnimEnd
anseq.c          : anSeqMake           :(CS) : anSeq header.loop
chbaddie.c       : chBaddieMake        :(PJM): RList
me->def->section
me->mode == TargetMove
pnt->SndLoop
FXGEN2 == NULL
FXGEN1 == NULL
Oops - had to delete lemming bounce object. Please tell Graham
* WARNING * :chBringStatueTick: Jigsaw 70 CANNOT find it's bootup marker point
pnt->ChildLink
me->audio[1]
me->audio[0]
chcamel2.c        : chCamel2Make        :(MB) : Sphere model
pnt->Radius<=10.pnt->Radius>=1
GetMarkerWp
chclimbbase.c: was found (at %s), seem to be rather far apart!
chclimbbase.c:   The base at %s and the closest top marker that
chclimbbase.c: Could not find any Climb Top marker points corresponding to the base at %s
MoleData[RADIUS_TO_TABLE].camera != NO_CAMERA
pnt->Radius > MIN_MOLEHILL && pnt->Radius < MAX_MOLEHILL
MoleData[RADIUS_TO_TABLE].learn != LEARN_NOTHING
MoleData[RADIUS_TO_TABLE].dialog != NO_DIALOG
sppoint.c        : spPointInsert       :(MB) : Test model
sppoint.c        : spPointMake         :(MB) : point
chflags.c        : chFlagsBuild        :(PJM): User Flags table
total < (1 << 3)
chgoblinhood: Help! I don't recognise this section as being on the tree level
chgodmother.c: I am saying more than I know! Help me!
* WARNING * :chhipirate.c / meChangeModeJig: Jigsaw 20 CANNOT find it's bootup marker point
chhipirate.c: I can't seem to find the request marker!
me->audio
chhoney.c: Can't find a honey bounding area for the newly setup honey piece at %s!
!honeyFullMask
honeyFullCount==1
chIDPodium: I could not obtain a sub for ID %d
Jiggy game data 4
Jiggy game data 3
Jiggy game data 2
Jiggy game data 1
chjiggy.c        : meTick       . :(GS) : jiggy frame image
chjiggy.c        : meTick       . :(GS) : Duplicate map model
chjigsaw.c: Can't find a jigsaw bounding area for the newly setup jigsaw piece at %s!
unit->sfx2
chlmonkey.c: This software only works on the Jungle
chmiditrigger.c: I was asked to trigger an effect, but there are no more in the table
inst->yaw < (sizeof(Main) / sizeof(struct Unit))
pnt->Radius > 0 && pnt->Radius < MAX_MOLEHILL
gcVolatileGet(gcVolatile_PhysicalChallenge_Active)
dsListGetSize(me->list) > 0
chphoto.c        : meTick       . :(GS) : Duplicate map model
chphysctrl: Oh dear, I couldn't change Banjo into a crocodile
spell > baBanjoBeBanjo && spell <= baBanjoBeBee
spell > baBanjoBeBanjo && spell <= baBanjoBeWasher
chshamen.c: Can't find a shamen bounding area for the newly setup shamen coin at %s!
!gcVolatileGet(gcVolatile_EndGameSequence_Active)
sharkRoam == NULL
chshipprop2.c    : chShipProp2Make     :(MB) : Model
pnt->wsExists
pt->Radius<=2
pt->Radius>=1
radius<=9
radius>=1
radius<=6
* WARNING * :chsmashes(), meSeq2: Jigsaw #%d CANNOT find it's bootup marker point
Level > gcLevelMin && Level < gcLevelTraining
WaterDropSound
* WARNING * :chSmashesTick_SwampSwitch1: Jigsaw 32 CANNOT find it's bootup marker point
* WARNING * :chSmashesTick_SwampSwitch37: Jigsaw 37 CANNOT find it's bootup marker point
pnt->Radius<=2
* WARNING * :meSetupJigsaw53: Jigsaw 53 CANNOT find it's bootup marker point
chswarm.c        : meMakeBees          :(KC) : Bee Data
chSwarm_AudioInUse
chswarm.c        : chSwarmTick         :(KC) : Shadow Model
Me.active > 0
chtreecamel.c    : chTreeCamelMake     :(MB) : Spit model
pnt->Mode == BM_VegPatch_NewGame
me->part < 7
chvile1.c        : chVile1Make         :(MB) : Model
mode >= MoveNone
mode < MoveNone
chVile1GetPart(me->vile1) > 0 && chVile1GetPart(me->vile1) < 7
chvile3.c        : chVile3Make         :(MB) : Vile3 model
(Source: Ferrox)

Regional Differences

Title Screen

In order to accommodate the language difference and altered title, which translates to Banjo and Kazooie's Great Adventure, the Japanese version's logo was completely redesigned.

Japan International
Banjo-Kazooie-titleJP.png Banjo-Kazooie-title.png

Version Differences

Gnawty's House in Spring

In Click Clock Wood, there's a beaver named Gnawty who is locked out of his home. Normally, the player would destroy the rock in Summer and then return in Fall to claim a Jiggy (and return in Winter for an empty honeycomb).

In the US v1.0 and European versions of the game, it is possible to destroy the rock in Spring as well. To do so, the player must run around the area to the path which leads around the center tree, and position themselves so they're roughly above the area where the rock blocking the tunnel is. From here, the player would need to shoot down eggs to destroy the rock (it's difficult, but possible). Alternatively, the player can use the Beak Buster attack above Gnawty to access the "walk underwater" glitch.

Should the player destroy the rock, the camera will show the flower (or the place where it would be if the player has not planted it). The player will then be able to jump down and swim into the tunnel. While it does exist (despite there being no way to enter it during the normal course of the game), it is untextured, and just leads into nothingness from which the player can jump into the void.

The rock in the Spring area was made indestructible in the US v1.1, Japanese, and XBLA versions of the game.

Slippery Slopes

In US v1.0 and European versions, when Banjo is on a slope that is too steep/slippery, he'll be able to stand on it for a couple of seconds before sliding off of it. In the US v1.1, Japanese, and XBLA versions, Banjo will instantly slide off it. This fixes a glitch where the player can climb to the top of the termite mound in Mumbo's Mountain without having to transform into the termite.

Well Collision

In US v1.0 and European versions, you can get out of bounds through the top of the inside of the well in Mad Monster Mansion. In the US v1.1, Japanese, and XBLA versions, the top of the well has collision which prevents this.

Xbox Live Arcade Differences

Elementary, my dear Cactus.
This needs some investigation.
Discuss ideas and findings on the talk page.
Specifically: Other stuff, if any.
Careful, you'll lose an eye.
This page or section needs more images.
There's a whole lotta words here, but not enough pictures. Please fix this.

Gameplay Changes

  • Notes now stay collected permanently (like the sequels), substantially lowering the difficulty of collecting them all. In the N64 version, every Note in an area had to be collected in one visit and one life.
    • This change resulted in a bug: Notes collected during the scenes of Bottles' Bonus Puzzles would not count but remain in their collected state, rendering them permanently lost. This was later fixed.
  • The Xbox 360 version takes advantage of the second analog stick to refine the camera movement.
    • This introduces a bug where a player can cause Banjo to die during the Rusty Bucket Bay demo and gain control of the game during the demo.
  • The Stop 'n' Swop items are automatically available if the console has a Banjo-Tooie or Nuts & Bolts save on it. Collecting them leads to bonuses in said games, mimicking the original intent.
  • Pressing L + R + B to skip dialogue no longer works. This feature was undocumented in the N64 versions.
  • The N64 version allows the player to enter any number of cheats in Treasure Trove Cove's sandcastle, but the third cheat input (not counting those that the player got legitimately from Cheato and Bottles as well as the Stop 'n' Swop cheats) will erase the game file. In the Xbox 360 version, entering any cheat except for those given by Cheato and Bottles will disable saving for the current playthrough and remove the player's score from the leaderboard. Oddly enough, there is no penalty for inputting too many cheat codes in the Xbox 360 version, even though all the text about erasing the savefile still shows up.

Visual Changes

Nintendo 64 Xbox 360
BanjoKazooie DrawDistanceOld.png BanjoKazooie DrawDistanceNew.png

The draw distance has been stepped up significantly, meaning objects no longer fade-in or stop animating from a distance.

Nintendo 64 Xbox 360
:D :V

Several textures have been redone. Some are simply in higher quality, while all talking head icons have been redone from scratch and the speech font has been changed to match that in Nuts & Bolts. One infamous change above concerns the... "upgrades" to the HUD textures. The rerelease has recreated them using the in-game models, presumably because the promotional models the N64 used were lost or otherwise unusable.

Nintendo 64 Xbox 360
BKBerri.png
Banjo-Kazooie-XBLA-Rusty-Bucket-Posters.png

The poster found in one of the Rusty Bucket cabins previously featured Berri from Twelve Tales: Conker 64. Since that game was given a major overhaul after the initial release of Banjo-Kazooie, the poster was changed to instead feature Conker from Conker's Bad Fur Day (pulled specifically from the cutscene where Mr. King Bee pollinates the sunflower) for the Xbox 360 release.

Nintendo 64 Xbox 360
BanjoKazooieN64-fpentrance.png BanjoKazooie360-fpentrance.png

In the N64 version, the textures surrounding the entrance to Freezeezy Peak are incorrectly stretched. This was fixed in the Xbox 360 version.

(Source: http://banjokazooie.wikia.com/wiki/Banjo-Kazooie_(Xbox_Live_Arcade)
Nintendo 64 Xbox 360
BanjoKazooie-nintendoxylophone.png BanjoKazooie-microsoftxylophone.png

Most Nintendo references have been removed:

  • The N64 "N" no longer exists on the intro screen. However, the squeaking noises it makes can still be heard.
  • The Nintendo logo on Mumbo's xylophone is replaced by a Microsoft Game Studios one.
  • Banjo still plays a Game Boy to represent File 3, but the startup noise no longer plays.

Miscellaneous

  • The higher framerate of the Xbox 360 version fixes many clip based glitches.
  • Firing eggs from behind before grabbing the Jiggy from Napper the Ghost will often crash the Xbox 360 version.
  • Constantly exiting and entering the file select on the Xbox 360 version (by signing in and out about 30 times) will cause a state called corruption, where many models become stretched out and distorted. In this state, many things will cause the game to crash.