If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!
Banjo-Kazooie
| Banjo-Kazooie |
|---|
|
Also known as: Banjo to Kazooie no Daibouken (JP)
|
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.
Contents
- 1 Debug Value Display
- 2 Test Map
- 3 Unused Music
- 4 Unused Underwater Themes
- 5 Unused Fanfares
- 6 Unused Graphics
- 7 Unused Models
- 8 Unused Joints
- 9 Random Honeycombs
- 10 Vent
- 11 Exit to Witch's Lair
- 12 Stop 'n' Swop
- 13 Unused Gameplay Demos
- 14 Oddities
- 15 Unused Text
- 16 Debugging Text
- 17 Regional Differences
- 18 Version Differences
- 19 Xbox 360 Differences
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.
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 |
Test Map
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
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.
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
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
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
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
A small graphic of the Christmas tree in Freezeezy Peak.
Coconut
An unused dialogue icon for what appears to be a coconut.
Tree
An unused 2D tree dating all the way back to the N64 version of Project Dream.
Early Empty Honeycomb
| Early | Final |
|---|---|
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 |
|---|---|
![]() |
An early version of the hourglass icon which has skulls on it.
Lockup's Mouth
The eye texture for the Lockup enemies in Treasure Trove Cove has a mouth that isn't visible in-game.
Flag Textures
Unused flag textures. An unused green flag model exists in the ROM.
Furnace Fun Podium
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.
Unused Models
Picture
This was probably intended to show up in one of the rooms in Mad Monster Mansion with all the other pictures.
Debug Stuff
These look like icons and text which would be used in a debug mode. No idea how they were used, though.
"ON VACATION" Sign
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
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
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
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
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
| To do: Updated info on Stop 'n' Swop from Paul Machacek |
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 GoldenEye 007, Blast Corps, Donkey Kong 64, Banjo-Tooie, and Conker's Bad Fur Day by quickly swapping the cartridges after turning the power off, hence the feature's name. Each egg corresponded to a different game, and transferring the Ice Key to every game and back would unlock a final, grand bonus. 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.
The mechanism
The original Stop 'N' Swop mechanism is left unused in Banjo-Kazooie but is still fully-functional.
On boot, the game scans all of main memory for a special 128-byte payload left behind by another game.
This payload starts with the magic number 0xC908C52F, contains data in the next 112 bytes (to transfer items between games), has 4 bytes of padding, and ends with two 4-byte checksums. If the magic number is present and the checksums are valid, the contents are transferred to an in-game word array, and then read by the game to make the relevant Stop 'N' Swop items accessible.
Receiving data from other games
The incoming payload should contain some or all of the values 0x108 through 0x10E inclusive:
| Value | Purpose |
|---|---|
| 0x108 | Makes the Yellow Egg appear (Click Clock Wood, Winter: Nabnut's Table) |
| 0x109 | Makes the Red Egg appear (Rusty Bucket Bay: Captain's Cabin) |
| 0x10A | Makes the Green Egg appear (Mad Monster Mansion: Loggo the Toilet) |
| 0x10B | Grants access to the Blue Egg (Gobi's Valley: Secret Chamber) |
| 0x10C | Grants access to the Pink Egg (Treasure Trove Cove: Sharkfood Island) |
| 0x10D | Grants access to the Cyan Egg (Mad Monster Mansion: Cellar) |
| 0x10E | Grants access to the Ice Key (Freezeezy Peak: Wozza's Cave) |
Here's a payload that will unlock all 7 Stop 'N' Swop areas if placed in RAM before the game boots, and at any 128-byte boundary past the first ~1MB of memory (e.g. at 0x80200000)
To use with latest Project64:
- Enable the debugger (Settings > Options > Advanced > Enable debugger)
- Open Banjo-Kazooie, and hit F2 to freeze the game as early as possible
- Open the memory viewer (Debugger > View Memory)
- Paste the payload at the desired address, e.g. 0x80200000
- Close the viewer and hit F2 to resume the game
| Make all Stop 'N' Swop items accessible |
|---|
C908C52F 00000108 00000109 0000010A 0000010B 0000010C 0000010D 0000010E 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 638AE93A 22A1C3FD |
Sending data to other games
The game also writes outgoing payloads into memory, meant to be sent to and read by another game. These are the values of one or more of the 7 SnS items you've collected in the game, represented by the values 0x100 to 0x106 inclusive. It also writes the value 0x1, but its purpose is unclear.
| Value | Purpose |
|---|---|
| 0x1 | (unknown) |
| 0x100 | Sends the Yellow Egg |
| 0x101 | Sends the Red Egg |
| 0x102 | Sends the Green Egg |
| 0x103 | Sends the Blue Egg |
| 0x104 | Sends the Pink Egg |
| 0x105 | Sends the Cyan Egg |
| 0x106 | Sends the Ice Key |
Here's the payload meant to send all 7 Stop 'N' Swop items to other Rare games:
| Send all Stop 'N' Swop items to other games |
|---|
C908C52F 00000001 00000100 00000101 00000102 00000103 00000104 00000105 00000106 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 55E7E71F 32815BC5 |
Interestingly, the magic number 0xC908C52F, when shifted right by 2, gives the ASCII string 2B1K. The orderly presence of the letters B and K suggests that this is not a coincidence. But the meaning of the numbers 2 and 1 are unclear.
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.
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
Underneath the maze in King Sandybutt's tomb in Gobi's Valley is a large triangle that is never seen in-game.
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.
Mumbo Tokens
There are 116 Mumbo Tokens in the game, but if you aren't careful, only 115 can be collected. 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.
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
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 |
|---|---|
|
|
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 360 Differences
| This needs some investigation. Discuss ideas and findings on the talk page. Specifically: Other stuff, if any. |
A "redooie" of sorts was released by 4J Studios for the Xbox 360's "Xbox Live Arcade" service on November 26, 2008 worldwide. This version of the game was later used for Rare Replay, running on Xbox One models via software emulation. It appears to have been completely rebuilt for the 360 rather than trying to emulate N64 hardware, and therefore has several major structural changes.
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 |
|---|---|
![]() |
The draw distance has been stepped up significantly, meaning objects no longer fade-in or stop animating from a distance. This is made even more clear with a bump in resolution and aspect ratio.
| Nintendo 64 | Xbox 360 |
|---|---|
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 |
|---|---|
![]() |
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 |
|---|---|
![]() |
In the N64 version, the textures surrounding the entrance to Freezeezy Peak are incorrectly stretched. This was fixed in the Xbox 360 version.
| Nintendo 64 | Xbox 360 |
|---|---|
![]() |
Most Nintendo references have been removed:
- The N64 "N" no longer exists on the start-up screen, leaving a very awkward change in pacing as the Buzzbomb whizzes by... nothing.
- 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.
| The Banjo-Kazooie series | |
|---|---|
| Nintendo 64 | Banjo-Kazooie • Banjo-Tooie |
| Game Boy Advance | Grunty's Revenge (Prototypes) • Banjo-Pilot (Prototypes) |
| Xbox 360 | Nuts & Bolts |
| Related Games | |
| Windows, Mac OS X, Linux, Nintendo Switch | Yooka-Laylee (Prototype) |
- Games developed by Rare
- Games developed by 4J Studios
- Games published by Nintendo
- Games published by Microsoft Game Studios
- Nintendo 64 games
- Xbox 360 games
- Games released in 1998
- Games with unused areas
- Games with hidden development-related text
- Games with unused graphics
- Games with unused models
- Games with unused cinematics
- Games with unused items
- Games with unused music
- Games with unused text
- Games with debugging functions
- Games with regional differences
- Games with revisional differences
- To do
- To investigate
- Banjo-Kazooie series
Cleanup > To do
Cleanup > To investigate
Games > Games by content > Games with debugging functions
Games > Games by content > Games with hidden development-related text
Games > Games by content > Games with regional differences
Games > Games by content > Games with revisional differences
Games > Games by content > Games with unused areas
Games > Games by content > Games with unused cinematics
Games > Games by content > Games with unused graphics
Games > Games by content > Games with unused items
Games > Games by content > Games with unused models
Games > Games by content > Games with unused music
Games > Games by content > Games with unused text
Games > Games by developer > Games developed by 4J Studios
Games > Games by developer > Games developed by Microsoft > Games developed by Xbox Game Studios > Games developed by Rare
Games > Games by platform > Nintendo 64 games
Games > Games by platform > Xbox 360 games
Games > Games by publisher > Games published by Microsoft > Games published by Microsoft Studios > Games published by Microsoft Game Studios
Games > Games by publisher > Games published by Nintendo
Games > Games by release date > Games released in 1998
Games > Games by series > Banjo-Kazooie series

















