the cutting room mirror

Zool: Majuu Tsukai Densetsu

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

Zool: Majuu Tsukai Densetsu is an obscure monster-collecting RPG in a similar vein to Pokémon, featuring such design decisions as having tank controls and a confusing battle system that puts control over monsters partially out of the player's hands.

Oh, and it is also completely unrelated to the international series of the same name. Trademark infringement ahoy!

Development Text#

Present throughout the ROM is various development related text.

0x3EAE0

*********** 
**************
select  %d
Event work %d
work 5
work 6
work 7
work 8
add %x   st %d
---------  bgm start = %d
sound vol
sound play
pan = %d
sound stop
sound entry
64
TEST
ZoorSaveData

0x53CA0

Draw%d  
stage01 UseAddress 0x%x
        Last       %dKByte
SafeData  map %d   event %d
%f %f %f   %f %f %f 
field_main_work %d

0x5E341

FIELD_DATA_TBL Size   %d
align + %d
tex_no %d
tex len %u
tlutlen %u
field_make_work %d  
%d  %x

Present at 0x8E790 in the ROM.

Use glistp %d
Use matrix %d
stage02 UseAddress 0x%x
        Last       %dKByte
BattleUseMem 1rest  Use %dKByte  LastAdd %x
BattleUseMem        Use %dKByte  LastAdd %x
BATTLE_PARAM_TBL Size   %d
align + %d
ZOOR_MONSTER_TBL Size   %d
ZOOR_PLAYER_TBL Size   %d
BATTLE_CHAR_DRAW_TBL Size   %d
ZOOR_MONSTER_TBL Size   %d
BATTLE_DRAW_TBL Size   %d
BATTLE_WORK_TBL Size   %d
BattleUseMem        Use %dKByte  LastAdd %x
MakeChar  Tex %d  Tlut %d
1_3 Work 1
1_3 Work 2
1_3 Work 3
1_3 Work 4
1_3 Work 5
1_3 Work 6
1_3 Work 7
1_3 Work 8
1_3 Work 9
1_3 Work 10
1_3 Work 11
1_3 Work 12
1_3 Work 13
1_3 Work 14
1_3 Work 17
1_3 Work 18
1_3 Work 19
1_3 Work 20
1_3 Work 21
BattleUseMem        Use %dKByte  LastAdd %x
%d %d   %2d %2d %2d %2d
battle_main_work %d
%3d.%f %f %f  %f %f %f
battle_char_make_work %d
flash %d %d 

0x9D454

BATTLE_FIELD_LINE_HIT_TBL %d
StartWork UseMem  %d
StartWork LastAdd 0x%x
work 1
work 2
work 3
end

0xA7681

-------- stage change = %d
town main pro = %d
-------  act pro = %d
    -----  DMA SIZE = 0 ERROR  -----
    -----  DMA RAM SIZE OVER ERROR  -----
-----  DMA_MAX_CNT OVER ERROR  -----
    -----  DMA RAM SIZE OVER ERROR  -----
-----  DMA_MAX_CNT OVER ERROR  -----
town dsp pro = %d
town select pro = %d
-----------  event no = %d
event no = %d
--------  event no = %d
home pro go
one_wait = %d
***  msg window count over error  ***

0xC8251

return stage_no = %d
main_loop pro = %d
one wait
-------  menu init start
menu main pro = %d
menu item pro = %d
item no = %d....5I..menu sts pro = %d
menu set pro = %d
menu cng pro = 
menu mon pro = %d
-----  shop pro = %d
bs_cnt = %d
----------  sel 0
----------  sel 1
----------  sel 2
menu name pro = %d
menu bank pro = %d
------  bank_count = %d
------   spl_count = %d
-----  param dma cnt = %d
--------  tbl_cnt = %d

0xC9C71

*** item pro error ***
-----  select pro = %d
-------  item use
----------------------  exp = %d
--------------- 0 up exp = %d
---------------  next exp = %d
--------------- 0 mon exp = %d
--------------- 1 mon exp = %d
--------------- 1 up exp = %d
--------------- 2 up exp = %d
-------  mon level = %d
--------------  set mon prm
------  use flag = 0
------  pos  = %d
------  page = %d
--------  fuki no = %d
-------  dsp mtx = %d
------------------  mon_dsp = %d
***  msg window count over error  ***

0xDE871

----------  title start
title retrn = %d
title main loop = %d
-------  dma_len = %x : len = %x

0xE8401

------  stage 07 start
------  stage 07 end : next stage = %d
-------  main pro = %d
one_wait = %d
-------  pack pro = %d
NO PACK TYPE
  pack_file_error = %d
NOT 1 CONT
OK PACK OPEN
NOT PACK
PACK ERROR CHANGE
PACK ERROR CONTRFAIL
PACK ERROR ID_FATAL
PACK ERROR DEVICE
NO PACK TYPE
pack [%d] = %x
NOT 1 CONT
PACK NO DATA ZOOR
-------  NOTE MAX
-------  MEM OVER
-------  NO ZOOR DATA
USE NOTE CNT = %d
USE PACK MEM = %d
PACK ERROR INCONSISTENT
PACK ERROR CONTRFAIL
PACK ERROR INVALID
PACK ERROR DATA FULL
PACK ERROR NOTE MAX
-----  ZOOR PACK CREATE OK !!
pack pro 0
pack pro 1 = %d
PFS_ERR_NEW_PACK
2<
pack pro 2
NOT PACK PRO
NOTE 16 MAX PRO
pack pro 6 : pro_no = %d
-------------  error = %d
PACK ERROR CHANGE
PACK ERROR ID_FATAL
PACK ERROR DEVICE
pack load pro = %d
pack save pro = %d
-------  save data set
pack = %d  :  now = %d
SAVE COUNT MAX OVER ERROR
SAVE PAGE MAX OVER ERROR
pack = %d  :  save = %d
------  save start
size1 = %d : max = %d
WRITE OK
WRITE ERROR NOPACK
WRITE ERROR NEW_PACK
WRITE ERROR INCONSISTENT
WRITE ERROR CONTRFAIL
WRITE ERROR INVALID
------  save end
READ OK
READ ERROR
WRITE ERROR NOPACK
WRITE ERROR NEW_PACK
WRITE ERROR INCONSISTENT
WRITE ERROR CONTRFAIL
WRITE ERROR INVALID
data[%2d] = %d

(Source: Ferrox)

Unused Map Locations#

In order for a location to be mapped to a 2D town it requires two types of event commands: one that sets the label location, and a callback when that label is selected. Without both, the location won't appear or won't function. Location names are hardcoded, in series, within codeblock 5. The index to the string is the location ID, so it's easy to tell when a location is skipped and what entry it should be.

Commune#

Location 5 was an exit to the world map. The label reads "町を出る / Leave Town". It lacks a trigger location but the event script is handled at offset 2236. This triggers a "Map_Exit" event, fading the screen to black.

Location 11 is a dummy entry. Its label reads "ダミー / Dummy". If triggered, this adds an "オラオラの♥ / Aurora's ♥" to inventory. There is no internal or external way to trigger the dispenser, and unlike other pickups no scripting to make it a one-time event. No message is printed.

Locations 12 through 15 have no labels or locations. The callback handler does attach events to them, at offsets 3169, 3180, 3191, and 3202 respectively. If triggered, each prints a placeholder message before returning control to the player: "イベント12 / Event12", "イベント13 / Event13", "イベント14 / Event14", or "イベント15 / Event15".

Stadium#

Location 8 would have provided a way to exit the stadium in the middle of the tournament. Its label reads "かり出口 / Temporary Exit", but lacks both a location and callback entry.

Hidden Map Locations#

Hidden locations can only be discovered in "Cursor Movement Mode 2". Unlike normal locations, they don't have a (x,y) cursor position set. All of these locations are named "???".

The illustrations shown here draw the clickable boundaries using the six vertices assigned to each region.

Commune#

Commune Hidden Locations

Location 1 is a rock just south of the orphanage. Clicking here nets you 50 Pom. This is the only secret location that can be collected at any time.

Renault#

Renault Hidden Locations

Location 1 is the forest on the west side of town. Unlike the other secret locations, the text that appears here periodically updates throughout the game. If you come here after Bernie becomes an adult you can collect a "マギークのかざり / Mageek Ornament".

Location 2 is the field in the northeast part of town. Once you're able to leave town, you can collect a "赤いリズベル石 / Red Lisbel Stone" here.

Majyū Charmer Village#

MCV Hidden Locations

Location 1 is a tree near the lake in the northeast. Once you visit Garner Ranch this will become a one-way fast transit for 800 Pom.

Location 2 is a house in the east of town. If you complete both the first and second parts of Mintz's sidequest and decide to rescue the researcher, this will unlock the Curio Shop. Besides several unique items only sold here, you can also obtain a "きれいなアルゴー / Pristine Argo" by trading two "欠けたアルゴー / Chipped Argo".

Location 3 is the central pavilion, unlocked by visiting the hidden location in the City at the end of the game. The haul is worth the trip. You'll recieve a "青いリズベル石 / Blue Lisbel Stone", "青いマディク石 / Blue Madik Stone", "青いメデレク石 / Blue Mederek Stone", and "青いデシゾン石 / Blue Decision Stone".

Moyane#

Moyane Hidden Locations

Location 1 unlocks by talking to the jerk prejudiced against the man in the costume running the shop. When you click here (and before the MC can give their opinion) an earthquake occurs. The item you recieve depends on where you take shelter.

  1. If you hide under the tree you'll find "ルリアンのピアス / Lurian Earrings".
  2. If you run to the shop you'll find a "ランスートのはね / Rainsuit Wing".
  3. If you hide behind the house you'll find a "赤いマディク石 / Red Madik Stone".

Theodore#

Theodore Hidden Locations

After completing the story events in Theodore and visiting Spiral Forest, these two secret location will become active.

First visit location 1, the bridge. You'll be told there's something shining down below. This unlocks location 2.

Click on location 2, the base of the waterfall, and you'll recieve a "赤い石 / Red Jedna Stone".

Iseul#

Iseul Hidden Locations

The sole hidden location is a horse next to the hotel in the north of town. When Bernie becomes an adult you can click here for a "赤いグアルデ石 / Red Guarude Stone".

City#

City Hidden Locations

Once Bernie is an adult, clicking the hidden location at the base of the skyscraper will start a dialog with an old man from MCV. Talking to him unlocks location 3 in MCV.

World Map#

World Map SW

The third "アルゴーのかけら / Shard of Argo" is hidden in the southwest corner of the southwest part of the world map, in the beach near the water's edge.

Walk to the deepest part of the depression alongside the very edge of the map and eventually you'll collect the shard. Unlike the "スノウクリスタル / Snow Crystal", there are no clues regarding its location. These are the only two items on the world map.

Unused Encounter Data#

There are 11 battle maps, each one with encounter data. Scripted battles use an ID to look up a specific encounter. Random encounters also use IDs matching the region they're in, but multiple entries share the same ID. One will be randomly-selected from that list, and if a second random value is below its encounter rate, a battle starts with the selected party.

The tournament map (05) has random encounter data despite no region being assigned to it. It is only used for scripted battles in the two tournaments, and each battle has a unique set ID. Despite this, there is a "random encounter" table assigned to set 0. This table mixes enemies from field, forest, desert, and valley regions. The mansion map also mixes several regions but is a completely different assortment of enemies. (English names are from the fan translation.)

Rate

Party (Japanese)

Party (English)

20%

グルルン

Gururun

25%

カーロ

Kahlo

25%

モスキー

Mosquii

25%

ウイン

Winda

18%

ウイン, ウイン

Winda, Winda

25%

モーギュ

Moogyu

25%

カッツェ

Katze

25%

きのっぴ

Shroompi

18%

きのっぴ, カッツェ

Shroompi, Katze

25%

ヨロイモ

Yoroimo

20%

ナナフシ

Nanafushi

15%

モーギュ, モスキー

Moogyu, Mosquii

Unused Items#

Name

Description

J

金のジェドナ石

装備すると、判断力が15%上がる。

E

Gold Jedna Stone

Increase THK 15% when equipped.

There are no pickups, drops, or shops that sell this item.

Name

Description

J

オラオラの♥

伝説の魔獣使いオラオラの心がふういんされているまぼろしの装備アイテム

E

Aurora's ♥

A mystical item imbued with the heart and soul of the legendary Majyū Charmer Aurora.

This item is a cheat item, either for debugging or magazine review. When equipped, it gives max stats by adding 9999 to HP & MP, 999 to all other stats. An unused event in Commune can dispense them. In normal gameplay it is impossible to collect.

Hidden Items#

These items are only available for purchase if you successfully complete both parts of Mintz's sidequest and make a particular moral choice at the end of it. This unlocks MCV's Curio Shop.

Name

Description

J

シムームの石けん

シムームのしっぽの毒から作った石けん。よごれがよく落ちる。また、おまじないにも使うらしい。

E

Simum Soap

Soap made from toxins in a Simum's tail. Dirt comes right off. Also used by some as a charm.

This is a very inexpensive consumable that gives +200 HP and +20 MP. Ironic it is only available here because according to "シムーム / Simum"'s bestiary entry this soap is sold across the continent.

Name

Description

J

ラフィのけ玉

ラフィが、季節変わりに落とすけで作ったお守り。モコモコしている。敵の魔法を弱めるらしい。

E

Rafiyu Fur Charm

Made of Rafiyu fur dropped at season's change. It's fluffy and said to weaken enemy magic.

This equipment raises magic defense (MDF) by 20%.

Name

Description

J

きれいなアルゴー

とても高価な器。ただ、見ているだけではもったいないので、使ってみることをおすすめする。

E

Pristine Argo

A very expensive bowl. It's a waste to just look at so try to find a use for it.

There are, very technically, two Pristine Argo. The final boss has a one-in-three chance of dropping one...which is utterly useless. You can complete a miniquest to trade for the other. You need to find three "アルゴーのかけら / Shard of Argo" and trade them at the shop in Theodore for a "欠けたアルゴー / Chipped Argo". Trade two Chipped Argo at the Curio Shop for the Pristine Argo. The prompt will only appear after your first visit to the store. When eaten(!?), this pottery gives a sizable permanent bonus to all stats: ATK +80, DEF +80, MAT +80, MDF +80, DEF +50, THK +50.

Unused Dialog#

There's one unused line of dialog attached to the watermelon thief quest. Line 55 from script/20.bin is never used:

J

$[$0$]「ふう、無事、アルバイトも終わったし、家に帰ろうっと」

E

$[$0$]"Phew! My work is all done for today! Now I can go home!"

It's pretty obvious it would play when you exit Renault's pub. The event script (event/24.bin) checks if the pub owner paid you (flag 139). If not, it returns. If he did pay you it checks if you've seen this line of dialog before (flag 140). If not the line is supposed to play, the flag is set, and it returns normally. The source of the bug is that flag happens to be shared by a lab door much later on. The other event's flag was probably a typo--the correct one should be 176, placing it with the other flags for this area.

Saika Forest has collection dialog for a removed pickup. Line 7 in script/74.bin goes unused:

J

“ラブレアのみつ”を手に入れた!

E

You obtained some “La Brea Nectar”!

Item collection in 3D areas creates a trigger with a callback. When you walk into the trigger's range it jumps to the given code. 2820 is the handler for this item, printing line 7 above, adding the item to inventory, setting a flag to indicate it was collected, removing a sprite, then removing and trigger. This event presumably the default "item bag" sprite. No event trigger is ever created that calls 2820. Because "maze" areas recycle the same rooms repeatedly it's impossible to guess where the item may have been located.

Debug Event Flag#

Flag 1999 is a special event flag used to debug the three mother's dream sidequests. It can only be set externally. A number of event files test for it.

File

Description

Effect

70

Intro 3D Camera

Skips the camera sequence during the introduction. However, because "camera sequence played" flag 1000 is never set, as soon as you leave Renault event/2.bin will try to run the camera sequence again. Like the first time, the camera will not play and you'll immediately return to the Commune until flag 1000 is set.

71

Gina in Commune

Adds items needed for all of Gina's fetch quests to inventory, autocompletes the proprietress fetch quest and unlocks Renault's gates; an additional conditional tied to completing the Dodon Leaves fetch quest has no effect.

73

Mintz in MCV

Autocompletes Hermit's divine beast talk (before sending you to Moyane), the researcher and mutated researcher battles, talking to Mintz during the tournament, and the lab password confirmation.

75

Plancy in Iseul

Autocompletes learning the research lab's location at Garner Ranch, Gina's dodon leaves fetch quest, plus sets the collection flag.

76

Garner & Thárros Grass

Autoaccepts second Plancy "keep listening" prompt and completes Deloin Forest Thárros Grass collection. If you returned to Garner after collecting the Thárros Grass but before delivering it to Plancy, it sets that it was delivered.

78

Theodore's Pub

Sets Sheol's Basil Volcano quest started, and if ghosts' first level of annoyance is set will clear it. A second level of annoyance is still a hard fail for the event.

79

Saika Forest

Enables Uma-Uma Flowers in Saika Forest. As a side effect, starts both the Konkon fruit and Dodon Leaf fetch quests.

80

Deloin Forest

Enables Thárros Grass in Deloin Forest.

81

Lab near MCV

Automatically accepts Mintz's request, autocompletes the researcher battle, confirms the password, collects the keycard, saves the demutated researcher, and rescues all three of Mintz's Majyū.

82

Keller Caverns Research Lab

Unknown minor effect.

There's also a formatting difference unique to the event scripts above not found in the main game scripts. There are two script commands that wrap the names of characters, "$[" and "$]". The "$[" command clears the screen and prints what comes after it instantly until either an "$]" or newline is found. "$]" doubles as a newline. In the sidequest scripts only the main character's name is wrapped in these flags. Normal names are typed out one character at a time and followed by a newline.

Unused Game Over Screen#

Alternate Game Over w/ Options

A second, static "Game Over" screen is embedded in the title screen. Unlike the normal one, it has no animation and it tracks the Control Stick to select from multiple, unprinted options.

The cursor is initially drawn at (96, 136), slightly higher than the title screen options. There's 32 pixels between each option, more of a gap than the 20 pixels for the title screen. Setting 800456BE[0] = 1 will make the cursor visible. It's unclear how many options would be provided for because the menu layout was not set, but a gap of 32 pixels provides space for no more than three options. There are no option handlers to glean more info from. Pressing A, B, Z, or Start will return to caller, not a specific dedicated block of code. This menu uses a separate lookalike graphic for the text (ROM 0xA91E50) but has a much shorter fade in & out.

The normal "Game Over" screen has its own image (ROM 0xA011C0), a code block that manages an animation, and uses a callback that reads if player 1 has pressed any button. There is no Control Stick tracking. When closed, it automatically runs the player data initialization code before returning to the title screen.

Zool64_Title_cursor.16x16.ci8.png

The title screen also has an unused cursor graphic. It's completely unused and its palette isn't linked in code. The arrow faces the wrong way to be used for the game over option select.

Unused Images#

HUD Backdrop

The battle interface has a backdrop for stats that goes unused. The shape implies it would be drawn in the lower-right corner of the HUD and acts as a backdrop for the existing beastie stats. In this case "Level" (in Romaji) likely refers to the player's level. Code for a numeral printer has not been found.

Zool64_menu_1.48x48.png

Entry zero in the "B Menu" is a placeholder image. The image is loaded and attached to menu image index 0. Normal menu images start at index 1.

Credits#

There's a gap in the "Testing Staff" credits. A blank entry exists between the 5th and 6th name, a possible indicator of a dropped name or a conversion to a scrolled list from a page-by-page format. The ypos of subsequent entries was not adjusted after the removal.

Japanese

English

テスティング スタッフ

Testing Staff

長井 正吉

Masayoshi Nagai (Imagineer)

武田 厚樹

Atsuki Takeda (Imagineer)

園部 篤也

Atsuya Sonobe (Imagineer)

薄井 陽介

Yousuke Usui (Imagineer)

岡林 正純

Masazumi Okabayashi (Imagineer)

* A gap exists here.

市川 高洋

Takahiro Ichikawa (Imagineer)

山田 章博

Akihiro Yamada (Hired gun?)

若狭 秦之

Yasuyuki Wakasa (Hired gun?)

If a credit was supposed to appear here, among Imagineer's staff Makoto Sato is one possibility. They also appear as testing staff alongside the other names mentioned in Imagineer-published games. Not to say they worked on this game; it's just as likely they didn't and were removed without an update to the credits script.

Unused Code#

800139C8 is an unused function that tests Controller Pack functionality. First, it creates a 0x2800 byte dummy entry for GUID "TEST", company code "64", named "ZoorSaveData.a". Without confirming the results, it then reads back the entry (command 2006), reads the total and used Note count (command 2007), the amount of free space (command 2002), then erases the Note (command 2005). After the Note is erased, it attempts to read, then write, to the Note. This is expected to fail. It then runs the verify/repair function (command 2008) before exiting.

There are a number of script events that are unused.

Events 60 and 61 are unused commands that hide and restore specific party members, not the whole party. When used, the specific party member given by the argument is copied into the reserve buffer used to hide party members from the menu. Unlike events 62 and 63 that do this to the entire party, the other members can still be interacted with and appear in the menu. Restoring the member does not test if there's room in the party to fit them, potentially overwriting data.

Event 65 is used to promote Bernie's child form to an adult. This command accepts three arguments that are not used. The first is the majyuID which should be replaced, and the other two are byte values with no known purpose. The command ignores these and is hardcoded to only search your party for Bernie's ID (162). This may indicate some scrapped plans for other adult forms.

Event 5B plays a sound effect using a given speaker balance. In monaural mode, the sound is automatically centered. This can be used to direct sound effects from a certain side of the screen. The normal sound effect command, event 1D, refers to a built-in table for default stereo balance. In nearly every case sounds are centered.

Known Bugs#

The original game uses 65 Controller Pak pages but only checks that 64 pages remain when testing if a save file can be created. Creation would fail, but the wrong error message at boot would be displayed so you wouldn't necessary realize there isn't enough space.

If your Controller Pak needed a full reformatting using the repair feature, there was a situation that could lead to a string of hysterical "swapped pak" error messages because the ID field no longer matches the original one. Resetting the game is the only way to fix this problem.

Gina's proprietress quest plays Commune's music after you hand the list over instead of Renault's music.

If you visit Nook Marsh before the scripted event, the dialog is supposed to play only once when you enter the edge of the region, not every blasted step inside it. The bitflag that indicates you saw the displayed text is set but not checked.

The key card portion of the lab near MCV has snow Majyū. This is the only area where you can recruit snow Majyū, have them in your party, and leave to the main world map freely without them being incinerated.

Both the adult and child forms of your player-exclusive pet, "バ一ニイ / Bernie", have a 20% drop rate for "レコビアのあめ / Recobia Sweet".

References#


  1. ズール ~魔獣使い伝説~↩︎