If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!
This article has a talk page!

Doubutsu no Mori

From The Cutting Room Floor
Jump to navigation Jump to search
This page contains changes which are not marked for translation.
Other languages:
English • ‎español • ‎日本語 • ‎한국어

Title Screen

Doubutsu no Mori

Also known as: Dòngwù Sēnlín (CN)
Developer: Nintendo EAD
Publishers: Nintendo (JP), iQue (CN)
Platforms: Nintendo 64, iQue Player
Released in JP: April 14, 2001
Released in CN: June 1, 2006


AreasIcon.png This game has unused areas.
DevTextIcon.png This game has hidden development-related text.
ObjectIcon.png This game has unused objects.
GraphicsIcon.png This game has unused graphics.
ModelsIcon.png This game has unused models.
ItemsIcon.png This game has unused items.
MusicIcon.png This game has unused music.
DebugIcon.png This game has debugging material.
LevelSelectIcon.png This game has a hidden level select.


DevelopmentIcon.png This game has a development article
PrereleaseIcon.png This game has a prerelease article
NotesIcon.png This game has a notes page

Doubutsu no Mori (Animal Forest) is a late-era Japan-only Nintendo 64 game that was re-released for the GameCube in Japan, then updated and released in the western world as Animal Crossing, and that version was re-re-released in Japan and (finally) released to the rest of the world, except for China, which got the original Nintendo 64 version years after its Japanese release.

Weird sentence, weirder story.

Hmmm...
To do:

Sub-Pages

Read about development information and materials for this game.
Development Info
Read about prerelease information and/or media for this game.
Prerelease Info
Miscellaneous tidbits that are interesting enough to point out here.
Notes
Animalforest flyingtrain2.png
Unused Maps
Where no train has gone before...

Crash Debugger

Present in the game is a crash debugger similar to the crash debuggers seen in Ocarina of Time and Majora's Mask on the N64. Whenever the game crashes, it will display a small red line at the upper-left corner of the screen. Input the following code which is the same code from Ocarina of Time:

  1. L + R, then while holding both press Z.
  2. D-Up
  3. C-Down
  4. C-Up
  5. D-Down
  6. D-Left
  7. C-Left
  8. C-Right
  9. D-Right
  10. A + B, then while holding both press Start.
(Source: Fkualol)

Debug Tools

Memory Usage Display

GameShark code 801DFA64 0001 will display some colorful memory usage bars. What each bar represents is currently unknown.

DnM-memory usage display.png

Debug Mode

There exists a debug mode that will display some build info on the title screen and enable some additional debug displays that can be toggled on and off by pressing buttons on the second controller.
There are 2 modes for this debug mode. Mode 1 allows you to enable or disable other debug features, but you can not manipulate the game with it in any way. Mode 2 allows you to have full control over the debug menu. It also allows using raw iNES Famicom ROMs on Controller Paks outside of its native NESINFO wrapper.

GameShark code 8010FD63 000X can be used to access this mode.
Replace X with 1 (Mode 1) or 2 (Mode 2).

Debug mode can also be enabled by entering the crash debugger code above on controller 2. Holding recenter on controller 1 when entering the code will also activate all Famicom emulator features, even for built-in games.

Normally, mode 2 replaces mode 1 when the game's GUID is set to "NAFJ#" (version code = 23). It can also be forced via a specially-crafted Controller Pak entry, even on iQue.

The color of the letter "D" indicates the current mode:

Color Description
Yellow Mode 1, Resetti enabled
Pink Mode 1
Green Mode 2, Resetti enabled
Gray Mode 2

Left of the "D", two error codes will always be displayed when relevant.

Bad Town Data: "X" is displayed if towndata[0xF8AC] is zero.

FLASH error codes: one of the following letters are printed if there is a problem with the game's internal save file.

Error Code Description
If not displayed, no error is present.
N Not found or no good. A failure occurred during initialization or it's an unrecognized chip ID.
A Allocation error. Failed to allocate a 0xF980 byte temporary buffer.
W Write error.
R Read error.
C Checksum error.
O Other. Typically due to a mismatch b/w master and its copy. Naturally occurs with uninitialized/erased saves since the copy isn't valid yet.

DnM-debugdisplay1.png

All of the combinations below must be done on a controller plugged into port 2. (Some features only work on MODE 2.)

  • Pressing A will bring up a heads-up-display that displays coordinates, time, item IDs and other information. If you press R, you can cycle through different clock speeds. The time can only go forward. Settings are roughly an hour a minute, an hour every ten seconds, then restore clock using RTC. When active, the framecount will be displayed on the line just below "D". Only use this feature if a clock is on the board! It does not safely fall back to the default buffer and can lock the game, especially on iQue.
  • Pressing C-Right will display different colored numbers on-screen. What they represent is currently unknown.
  • Pressing C-Up will display "zelda_malloc" and "graph_malloc" followed by some Japanese text and numbers. What these are for is unknown.
  • Pressing D-Pad Down will make text appear that says 'ファミコン' which translates to 'Famicom'. Pressing Start will increase the number, this number represents which Famicom game to place. While inside of your house, pressing Z will force display a Famicom as a furniture item.
  • Pressing D-Pad Left will display yellow numbers and text. The periods will change characters based off what is going on in-game. What triggers these to change is unknown.
  • Pressing D-Pad Right will display orange numbers, their usage is unknown.
  • Pressing D-Pad Up will display a bunch of hex values, as you may have guessed by now, what these represent is unknown.
(Source: Nekokabu)

Memory View/Edit

Most town, player, and character memory registers can be viewed via the debugger. In mode 1 this is solely read-only, but values can be edited, to some degree, in mode 2. Hold the given button while pressing the other to display the menu. While holding the button, press the other again to display additional pages. There are 96 signed 16bit values (hw) in each list (0xC0 per block). When released, use D-Pad up/down to select an address. Press D-Pad left/right to change values; hold C down to change in faster increments. To clear from the screen, input the button sequence for any of the menus below.

HOLD PRESS Address (J) Address (iQue) Displayed Name
L R 801DFE24 801F0144 Y(SBREG)
L D-Pad Left 801DFEE4 801F0204 D(DREG)
L D-Pad Right 801DFFA4 801F02C4 U(UREG)
L D-Pad Up 801E0064 801F0384 I(IREG)
L D-Pad Down 801E02A4 801F05C4 N(NS1)
L A 801DFBE4 801EFF04 P(PREG)
L B 801E0124 801F0444 Z(ZREG)
L Z 801E01E4 801F0504 C(CRV)
L Start 801E0A24 801F0D44 G(GREG)
L C Left 801DFA64 801EFD84 S(SREG)
L C Right 801DFD64 801F0084 M(MREG)
L C Up 801DF9A4 801EFCC4 (REG)
L C Down 801DFB24 801EFE44 O(OREG)
R L 801E05A4 801F08C4 s(DEMOREG)
R D-Pad Left 801E07E4 801F0B04 A(AREG)
R D-Pad Right 801E0AE4 801F0E04 m(mREG)
R D-Pad Up 801E0BA4 801F0EC4 n(nREG)
R D-Pad Down -------- -------- *pause execution*
R A 801E0364 801F0684 K(SND)
R B 801E0424 801F0744 X(XREG)
R Z 801E04E4 801F0804 C(CRV2)
R Start 801E0964 801F0C84 H(HREG)
R C Left 801E08A4 801F0BC4 V(VREG)
R C Right 801E0724 801F0A44 W(WREG)
R C Up 801E0664 801F0984 i(TREG)
R C Down 801DFCA4 801EFFC4 Q(QREG)
Start L 801E10E4 801F1404 *(NIIREG)
Start R 801E0C64 801F0F84 B(BREG)
Start D-Pad Left 801E14A4 801F17C4 *(TAKREG)
Start D-Pad Right 801E13E4 801F1704 *(SAKREG)
Start D-Pad Up 801E1324 801F1644 *(CAMREG)
Start D-Pad Down 801E1564 801F1884 *(PL2REG)
Start A 801E0D24 801F1044 d(DORO)
Start B 801E0DE4 801F1104 k(kREG)
Start Z 801E11A4 801F14C4 *(GENREG)
Start C Left 801E0F64 801F1284 *(PLAYERREG)
Start C Right 801E0EA4 801F11C4 b(BAK)
Start C Up 801E1264 801F1584 *(MYKREG)
Start C Down 801E1024 801F1344 *(OTUREG)

Title Theme

Hmmm...
To do:
Figure out a way to have the title theme fully playback that doesn't involve the risk of damaging your cart and console through cart tilting.

In the normal course of play, the game's title theme fades out after a minute and 3 seconds, corresponding with the length of time of the demos played on the title screen. However, the full track runs for an additional 21 seconds. If you don't mind risking the long-term health of your cartridge, it is possible to hear the full title screen by slowly tilting the left side of the cartridge out of the console until the game crashes. If done correctly, the game will continue to play the title screen music on an endless loop.

In-game Full

Unused Items

Unused Clothing

Two clothing items are present in the game's code but never appear either as obtainable items or as items worn by villagers within the normal course of play:

Name (Japanese) Name (Chinese) Name (English translation) Hexadecimal ID Image Texture
パーティードレス 舞会礼服 Party Dress 18 14 DnM64 PartyDress.png DnM64 PartyDressTexture.png
タキシード 晚礼服 Tuxedo 18 18 DnM64 Tuxedo.png DnM64 TuxedoTexture.png

Unused Furniture

Several items in the game's files are unused and unobtainable through gameplay. Below is a list of the item's names along with their internal hexadecimal IDs. These items appear in Doubutsu no Mori +, Animal Crossing, and Doubutsu no Mori e+ as well, but with the sole exception of the unused chair in +, their models are replaced with duplicates of the Spooky Wardrobe furniture item (in +) or the DUMMY furniture item (in Animal Crossing and e+).

Name (Japanese) Name (English) ID Image Notes
しょうふがざぶとん zabuton 10 9C DnM64 Zabuton.png -
しょうふかチェスト chest 10 B0 DnM64 Chest.png -
しようふかラック rack 10 B4 DnM64 Rack.png -
いいスピーカー nice speaker 11 F8 DnM64 NiceSpeaker.png -
しょうふかタンス unused dresser 12 F0 DnM64 UnusedDresser.png -
しょうふかおさる unused monkey 13 14 DnM64 UnusedMonkey.png Animated; perpetually claps.
モノクロじむイス modern den chair 13 44 DnM64 ModernDenChair.png Interactive; can be sat on.
しょうふかチェア unused chair 14 CC DnM+ unused chair.png DnM+ unused chair 2.png Interactive; can be sat on.

Build Date

Present at 0x19D00 in the Japanese version and 0x21D50 in the Chinese version is a build date in the same format as Ocarina of Time and Majora's Mask. Curiously, it seems the Chinese version was compiled really early compared to the actual release date, even predating the Chinese version of Ocarina of Time by seven months.

Japanese Chinese
forest@srd038J.srd.nintendo.co.jp
01-02-14 16:37:16
root@indy500
03-03-07 16:48:26

Unused Overworld Textures

Most of these textures can be found in the final build of the game. It even survived through the localization process. These textures do not appear in any pre-release screenshots. The textures are also not compatible with the models of the retail build of the game, and they need to be converted in order to be viewed properly. Some of these textures can be seen if you place test acres in your town, but it should also be noted that the models for said early acres are bigger, and overlap surrounding areas in the game.

Dirt

Early Final
DnM-Early-Dirt-Texture.png DnM-Final-Dirt-Texture.png
Early Final
DnM-Early-DirtSnow-Texture.png DnM Dirt Snow.png

Cliff

Early Final
DnM-Early-Cliff-Texture.png DnM-Final-Cliff-Texture.png

Grass/Snow

Early Final
DnM-Early-Grass-Texture.png DnM-Final-Grass-Texture.png
Early Final
DnM-Early-Snow-Texture.png DnM Retail Snow.png

Sign Board

The early Sign texture resembles its Spaceworld 2000 counterpart, however there are still a few minor differences.

Early Final
DnM-Early-Sign-Texture.png DnM Retail Sign.png

Debugging Text

8003D180 boot
8003D188 idle
8003D190 ../idle.c
8003D19C main
8003D1B0 %ld
8003D1B4 ovlmgr: Out of Memory
8003D1D8 DMA ERROR: %.50s %d
8003D1EC DMA ERROR: %.50s %d
8003D200 DMA ERROR: %.50s
8003D218 %07X %08X %X %.50s
8003D230 percial_DMA
8003D23C ILLIGAL ALIGNMENT
8003D250 アライメント異常
8003D26C Segment Alignment Error
8003D284 セグメント境界をまたがってDMA転送することはできません
8003D2C4 Can't Transfer Segment
8003D2DC 圧縮されたセグメントの途中からはDMA転送することはできません
8003D320 Can't Transfer Segment
8003D338 圧縮されたセグメントの一部だけをDMA転送することはできません
8003D378 DATA DON'T EXIST
8003D38C 該当するデータが存在しません
8003D3AC ILLIGAL DMA-FUNCTION CALL
8003D3C8 パラメータ異常です
8003D3DC dmamgr
8003D3F0 圧縮展開異常
8003D400 slidma slidstart_szs ret=%d
8003D41C src:%08lx dst:%08lx siz:%08lx
8003D440 Interrupt
8003D44C TLB modification
8003D460 TLB exception on load
8003D478 TLB exception on store
8003D490 Address error on load
8003D4A8 Address error on store
8003D4C0 Bus error on inst.
8003D4D4 Bus error on data
8003D4E8 System call exception
8003D500 Breakpoint exception
8003D518 Reserved instruction
8003D530 Coprocessor unusable
8003D548 Arithmetic overflow
8003D55C Trap exception
8003D56C Virtual coherency on inst.
8003D588 Floating point exception
8003D5A4 Watchpoint exception
8003D5BC Virtual coherency on data
8003D5D8 Unimplemented operation
8003D5F0 Invalid operation
8003D604 Division by zero
8003D618 Overflow
8003D624 Underflow
8003D630 Inexact operation
8003D64C fault_AddClient: %08x は既にリスト中にある
8003D684 fault_RemoveClient: %08x リスト不整合です
8003D6BC fault_AddressConverterAddClient: %08x は既にリスト中にある
8003D704 fault_AddressConverterRemoveClient: %08x は既にリスト中にある
8003D748 F%02d:%14.7e
8003D758 F%02d:  %08x(16) 
8003D76C F%02d:%14.7e 
8003D77C F%02d:  %08x(16) 
8003D790 FPCSR:%08xH
8003D7A0 (%s)
8003D7AC FPCSR:%08xH 
8003D7BC (%s)
8003D7C4 THREAD:%d (%d:%s)
8003D7D8 PC:%08xH SR:%08xH VA:%08xH
8003D7F4 AT:%08xH V0:%08xH V1:%08xH
8003D810 A0:%08xH A1:%08xH A2:%08xH
8003D82C A3:%08xH T0:%08xH T1:%08xH
8003D848 T2:%08xH T3:%08xH T4:%08xH
8003D864 T5:%08xH T6:%08xH T7:%08xH
8003D880 S0:%08xH S1:%08xH S2:%08xH
8003D89C S3:%08xH S4:%08xH S5:%08xH
8003D8B8 S6:%08xH S7:%08xH T8:%08xH
8003D8D4 T9:%08xH GP:%08xH SP:%08xH
8003D8F0 S8:%08xH RA:%08xH LO:%08xH
8003D938 THREAD ID:%d (%d:%s)
8003D950 PC:%08xH   SR:%08xH   VA:%08xH
8003D970 AT:%08xH   V0:%08xH   V1:%08xH
8003D990 A0:%08xH   A1:%08xH   A2:%08xH
8003D9B0 A3:%08xH   T0:%08xH   T1:%08xH
8003D9D0 T2:%08xH   T3:%08xH   T4:%08xH
8003D9F0 T5:%08xH   T6:%08xH   T7:%08xH
8003DA10 S0:%08xH   S1:%08xH   S2:%08xH
8003DA30 S3:%08xH   S4:%08xH   S5:%08xH
8003DA50 S6:%08xH   S7:%08xH   T8:%08xH
8003DA70 T9:%08xH   GP:%08xH   SP:%08xH
8003DA90 S8:%08xH   RA:%08xH   LO:%08xH
8003DAD8 KeyWaitB (LRZ 上下 上下 左左 右右 BASTART)
8003DB84 %s %08x
8003DB8C PrintDump
8003DB98 %06x
8003DBA0 %08x
8003DBA8 Dump
8003DBB0 SP       PC       (VPC)
8003DBC8 %08x %08x
8003DBD4  -> %08x
8003DBE0 STACK TRACE
SP       PC       (VPC)
8003DC08 %08x %08x
8003DC14  -> %08x
8003DC24 CallBack (%d) %08x %08x %08x
8003DC48 フォルトマネージャ:OS_EVENT_CPU_BREAKを受信しました
8003DC80 フォルトマネージャ:OS_EVENT_FAULTを受信しました
8003DCB4 フォルトマネージャ:不明なメッセージを受信しました
8003DCE8 __osGetCurrFaultedThread()=%08x
8003DD0C FindFaultedThread()=%08x
8003DD28 STACK TRACE
8003DD34     CONGRATURATIONS!    
8003DD50 All Pages are displayed.
8003DD6C        THANK YOU!       
8003DD88  You are great debugger!
8003DDA4 fault
8003DDAC HungUp on Thread %d
8003DDC4 %s
8003DDC8 (NULL)
8003DDD0 %s
8003DDD4 (NULL)
8003DDDC HungUp on Thread %d
8003DDF4 %s
8003DDF8 (NULL)
8003DE00 %s
8003DE04 (NULL)
8003DE0C HungUp %s:%d
8003E280 (null)
8003E2B0 Reset
8003E310 __osRealloc(%08x, %d)
8003E46C ARENA INFO (0x%08x, %d)
8003E484 Arena is unitialized
8003E49C Memory Block Region status size
8003E4C0 %08x-%08x%c %s %08x
8003E4E0 %08x Block Invalid
8003E4F4 Total Alloc Block Size %08x
8003E514 Total Free Block Size %08x
8003E534 Largest Free Block Size %08x
8003E57C (%08x)
8003E594 (%08x %08x)
8003E900 forest@srd038J.srd.nintendo.co.jp
8003E924 01-02-14 16:37:16
80113310 GLOBAL USE %x
80113320 GLOBAL FREE %x
80113330 GLOBAL RELEASE %x
80113344 GLOBAL RELWAIT %x
80113358 List %x
80113364 Root %x
80116160 %4d %1d%1d %1d%1d %1d%1d %1d%1d
80116184 %1d%1d %4d %1d%1d %1d%1d %1d%1d
801161B0 ACTOR NAME is NULL
801161C8 ACTOR NAME %08x %s
801161DC Actor_draw
80116200 actor_dlftbls %u
80116214 No. RamStart- RamEnd cn Name
80116234 %3d %08x-%08x %3d %s
801163E0 ../m_choice_main.c
801163F4 ../m_choice_main.c
8011640C ../m_choice_main.c
8011641F ../m_choice_main.c
80116450 ../m_collision_bg.c
80116470 ../m_collision_bg.c
801164B4 ../m_collision_bg_rewrite.c_inc
80116830 %s
80116834 %s
80116838 REG
8011683C SREG
80116844 OREG
8011684C PREG
80116854 QREG
8011685C MREG
80116864 SBREG
8011686C DREG
80116874 UREG
8011687C IREG
80116884 ZREG
8011688C CRV
80116890 NS1
80116894 SND
80116898 XREG
801168A0 CRV2
801168A8 DEMOREG
801168B0 TREG
801168B8 WREG
801168C0 AREG
801168C8 VREG
801168D0 HREG
801168D8 GREG
801168E0 mREG
801168E8 nREG
801168F0 BREG
801168F8 DORO
80116900 kREG
80116908 BAK
8011690C PLAY
80116910 ERREG
80116918 OTUREG
80116920 NIIREG
80116928 GENREG
80116830 MYKREG
80116838 CAMREG
80116840 SAKREG
80116848 TAKREG
80116950 PL2REG
80116958 %c(%s)
80116960 %02d%6d
80116964 %s%02d%6d
80116974 zelda_malloc
801169B0 graph_alloc
80116AAC %3d
80116AB4 %3d %02d-%02d-%02d
80116AC4 %c%c%c%c%c%c%c%c
80116D40 %04d %04d %04d
80116D50  %02d %02d %02d %02d
80116D70 ../m_field_make.c
80116D88 ../m_field_make.c
80116D9C ../m_field_make.c
80116DAC ../m_field_make.c
80116DC0 ../m_field_make.c
80116DD4 ../m_field_make.c
80116DE8 ../m_field_make.c
80116DFC ../m_field_make.c
80116E10 ../m_field_make.c
80116E24 ../m_field_make.c
80116E40 ../m_field_info.c
80116E54 %d
80116E58 %d,%d - %4x - %d - %d
80116F30 ../m_font_basic.c
80116F44 ../m_font_basic.c
80116F58 ../m_font_mark.c
80116F6C ../m_font_mark.c
80116FC0 ../m_handbill.c
80116FD0 ../m_handbill.c
80116FE0 ../m_handbill.c
80116FF0 ../m_handbill.c
80117000 ../m_handbill.c
80117010 ../m_handbill.c
80117020 ../m_handbill.c
80117030 ../m_handbill.c
80117040 ../m_handbill.c
80117050 ../m_handbill.c
80117060 ../m_handbill.c
80117070 ../m_handbill.c
80117080 ../m_handbill.c
80117090 ../m_handbill.c
801170B0 ../m_item_name.c
80117250 ../m_msg_main.c
80117260 ../m_msg_main.c
80117270 ../m_msg_main.c
80117280 ../m_msg_main.c
80117290 %5d
80117294 C9ff:
../m_npc.c
../m_npc.c
../m_npc.c
../m_npc.c
../m_npc.c
../m_npc.c
../m_npc.c
%4x %3d %3d
%4x %3d ---
%4x --- %3d
%4x --- ---
****
%4x %3d 
**** *** 
../m_player_lib.c
../m_player_lib.c
../m_player_lib.c
../m_player_lib.c
../m_player_lib.c
../m_player_lib.c
../m_player_lib.c
../m_player_lib.c
../m_player_lib.c
%04x 
%04x 
**** 
%x
*
%x
*
%x
*
ショキカ
カワガケセイセイ
ウミセイセイ
ハシサカセイセイ
コウバンヒロバセイセイ
ミセユウビンキョクセイセイ
イケセイセ
ベースセッテイ
ウミニカワセイセイ
ブロックセンタク
ランダムカンリョウ
RandomTry %d
RandomStep %s
ファミコン %d
../m_scene_ftr.c
../m_shop.c
../m_shop.c
../m_shop.c
../m_shop.c
Pre
End
Opn
Rnw
%d %d %s
A%2d,%2d,%2d,%2d,%2d
%d %d %s->%d.%d.%d
A%2d,%2d,%2d,%2d,%2d
B%2d,%2d,%2d,%2d,%2d
C%2d,%2d,%2d,%2d,%2d
../m_string.c
../m_string.c
../m_string.c
../m_string.c
submenu_ovl
player_actor
SubmenuArea_visit
RamStart-RamEnd  Offset
%08x-%08x %06x
PC:%08x
RA:%08x
player infomation
main_index         :%d %d
request_main_index :%d %d %d
pos :%d %d %d
angleY :%d %d
../m_scene.c
../m_scene.c
../m_scene.c
../m_titledemo.c
sFRm_flashrom
AUDIO SP TIMEOUT2 %08x %08x
AUDIO CANSEL&RETRY %d
../cfbinfo.c
(予約)
../game.c
../game.c
ShowFrameBuffer PAGE 0/1/2
RCP is HUNG UP!!
Oh! MY GOD!!
../graph.c
../graph.c
CLASS SIZE= %d bytes
GAME CLASS MALLOC FAILED
GRAPH INF.LOOP %2d %3d %3d %6lu
AUDIO INF.LOOP %2d %3d     %6lu
irqmgr
sched
audio
padmgr
graph
何かのパックが抜かれました
何かのパックが差し込まれました
認識しました
オーバーランエラーが発生
応答しません
../padmgr.c
標準コントローラを認識しました
マウス装置を認識しました
音声認識装置を認識しました
知らない種類のコントローラを認識?しました
応答しません
../sched.c
__scHandleRSP:this->curRSPTask == NULL
__scHandleRDP:this->curRDPTask == NULL
../sys_initial_check.c
SUPERDMA
FastCopy
FastCopy
SLOWCOPY
BGCOPY
801F6100 == MML PASS CHECK ==
803BA610 ../m_trademark.c