Super Mario 64 (Nintendo 64)/Неиспользованные объекты
Это доп. страница статьи Super Mario 64 (Nintendo 64).
Contents
- 1 Ключ Бу
- 2 Маленькие Панцири Купы
- 3 Желтый Переключатель и его Прозрачный Блок
- 4 Яйцо Йоши
- 5 Графический вариант Пит-блока
- 6 Графический вариант Платформы Башни в Крепости Шмяков
- 7 Скальное Образование с Глазами - Альтернативная модель
- 8 Графические варианты катающих камней в Туманной Пещере
- 9 Платформа раннего тестирования
- 10 Unused Models
- 10.1 Alternate Koopa Shell and Shoes
- 10.2 Big Bully - Round Geometry
- 10.3 Early Test Platform
- 10.4 Heave Ho - Round Geometry
- 10.5 Hazy Maze Cave Rolling Rocks Graphic Variant
- 10.6 Klepto with Blue Star
- 10.7 Penguin Head Variants
- 10.8 Pit Block Graphic Variant
- 10.9 Small Koopa Shells
- 10.10 Unused Goomba Parts
- 10.11 Whomp's Fortress Tower Platform Graphic Variant
Ключ Бу
Этот Ключ Бу был показан на ранних кадрах, где он был получен путем победы над Большим Бу. Среди текстур HUD в японской версии игры есть еще неиспользуемый ключевой символ: Однако, это было заменено
в европейской версии, и полностью удалён из версии США.
Маленькие Панцири Купы
Эти красные и зеленые панцири Купы отличают необыкновенными голубыми днищами. Они могут быть загружены в игру с помощью кодов или взлома, но они полностью нефункциональны.
Recovered Behavior Data
#define ANM_unbaba_swim 0 #define ANM_unbaba_attack 1 e_unbaba: p_initialize(option) p_setbit(flag,stf_moveON | stf_YangleSAME | stf_FspeedON | stf_playerdistON | stf_playerangleON ) p_set_pointer(skelanime,unbaba_anime) p_save_nowpos p_set_skelanime_number(0) p_while p_program(s_unbaba) p_loop #define unbaba_movemode (execstp->s[stw_work0].d) #define unbaba_movecounter (execstp->s[stw_work1].d) static void unbaba_init(void) { obj_mode++; } static void unbaba_swim(void) { s_set_skelanimeNo(ANM_unbaba_swim); if ( obj_playerdist < 600 ) obj_mode = mode_unbaba_attack; } static void unbaba_attack(void) { s_set_skelanimeNo(ANM_unbaba_attack); if ( s_check_animeend() ) obj_mode = mode_unbaba_swim; } static void *unbaba_modejmp[] = { unbaba_init, unbaba_swim, unbaba_attack }; extern void s_unbaba(void) { int mode; s_set_scale(2.0); s_modejmp(unbaba_modejmp); }
Текстуры и закодированное свойство - это все, что осталось от этого неиспользуемого батута. Ему не хватает модели, поэтому изображение справа-это просто воссоздание того, что выглядело бы. Хотя разработчики закодировали для него некоторое свойство, код не работает должным образом и, следовательно, не влияет на Марио.
Желтый Переключатель и его Прозрачный Блок
В то время как красные, синие и зеленые переключатели и их прозрачные блоки используются в финальной игре, эти желтые версии не используются. При появлении желтого переключателя он всегда находится в "нажатом" состоянии.
Яйцо Йоши
Это неиспользованное яйцо Йоши имеет подпрыгивающую анимацию. Это может быть связано с убиранием событие Йоши, директор игры Шигеру Миямото ссылается в интервью показанное в официальном японском стратегии руководства Super Mario 64:
"Первоначально было событие с Йоши. Мы не были удовлетворены тем, как он вышел, поэтому мы удалили его. Но поскольку было бы бесполезно не использовать модель, которую мы сделали, мы включили его туда в конце."
e_teresa_key: p_initialize(item) p_setbit( flag,stf_moveON ) p_sethitbox(32,64) p_setmovedata(30,-400,-70,1000,1000,200,0,0) p_while p_program(s_teresa_key) p_loop e_key: p_initialize(item) p_setbit( flag,stf_moveON ) p_sethitbox(32,64) p_hitON p_while p_program(s_key) p_loop extern void s_key(void) { obj_animeangleZ += 0x200; obj_animeangleY += 0x200; if ( s_hitcheck(execstp,player1stp) ){ execstp->motherobj->s[stw_imm].d = 1; s_remove_obj(execstp); s_makeobj_nowpos(execstp,S_spark,e_coinspark); } } static void keycoin_bound(void) { s_enemybgcheck(); /* BGcheck Program */ s_enemymove(78); /* enemymove program */ if ( obj_animepositionY < 26 ) obj_animepositionY += 2; if ( (obj_animeangleZ & 0xffff ) != 0 ){ obj_animeangleZ &= 0xf800; obj_animeangleZ += 0x800; } if ( obj_movestatus & MOVESTAT_BGTOUCH ){ obj_speedX = 0; obj_speedZ = 0; } obj_animeangleY += 0x800; if ( ( obj_timer > 90 ) || (( obj_movestatus & MOVESTAT_BGBOUND )!= 0) ){ s_hitON(); if ( s_hitcheck(execstp,player1stp) ){ execstp->motherobj->s[stw_mail].d = 1; s_remove_obj(execstp); s_makeobj_nowpos(execstp,S_spark,e_coinspark); } } } static void keycoin_boundwait(void) { short playerY; float playerspeed; StrategyRecord *mother = execstp->motherobj; /* coin */ s_copy_worldXYZ(execstp,mother); if ( obj_timer == 0 ){ execstp->motherobj = mother->motherobj; /* change mother shape */ obj_mode = mode_keycoin_bound; playerY = (short)(player1stp->s[stw_angleY].d); playerspeed = 3; obj_speedX = playerspeed * sin(playerY); obj_speedZ = playerspeed * cos(playerY); obj_speedY = 40; } obj_animeangleY += 0x200; obj_animeangleZ += 0x200; } static void keycoin_take(void) { StrategyRecord *mother = execstp->motherobj; /* coin */ s_copy_worldXYZ(execstp,mother); obj_worldY += 40; if ( mother->s[stw_imm].d != 0){ obj_mode = mode_keycoin_boundwait; } obj_animeangleZ += 0x200; obj_animeangleY += 0x200; } static void *keycoin_modejmp[] = { keycoin_take, keycoin_boundwait, keycoin_bound }; extern void s_teresa_key(void) { s_modejmp(keycoin_modejmp); }
Графический вариант Пит-блока
Unused behavior exists for a type of fire that would circle around Mario, making it harder for him to platform. There is also a stubbed behavior script located near this one, indicating a removed object associated with the fire. Some who worked on the decomp of the game have speculated that this may be the remnants of a Fishing Boo enemy, like those in Super Mario World.
В Тик Так Часы, есть блок, который движется вверх и вниз возле звезды Ямы и Маятников. Этот блок имеет 2 вертикальных нашивки на каждой из своих сторон. Однако есть неиспользуемый вариант, который имеет 3 вертикальные полосы на каждой из его сторон.
Нормальный Пит-блок | Неиспользованный Пит-блок |
---|---|
Графический вариант Платформы Башни в Крепости Шмяков
В Крепости Шмяков, есть неиспользуемая графика для платформ башни. Эта неиспользуемая графика-трапеция вместо прямоугольника. Вполне вероятно, что статические платформы (т. е. каждая вторая платформа) изначально предназначались для использования этой неиспользуемой графики. С этой неиспользуемой графикой нет пустого пространства между последовательными платформами.
Платформы Башни с нормальной графикой | Платформы Башни с неиспользованной графикой |
---|---|
Скальное Образование с Глазами - Альтернативная модель
В Крепости Шмяков, движущаяся разумная горная порода имеет альтернативную модель, содержащую более узкую и плоскую грань. Этот объект, возможно, первоначально предназначался как низкополигональная модель, так как несколько частей Крепости Шмяков используется низкополигональные модели для решения проблем производительности, когда камера удалена. Однако в финальной игре, скальные образования пропадают когда не в близости. Чтобы просмотреть эту модель в том же параметре, что и снимок экрана, перепишите значение в версии США в смещении 0x49E46A с D9F0.
Используемая модель | Неиспользуемая модель |
---|---|
Графические варианты катающих камней в Туманной Пещере
В Туманной Пещере есть две неиспользуемые графики для катающих камней. Эти две графики меньше, чем каноническая графика катающий камень, и имеют более зубчатые формы. Возможно, катающие камни были предназначены для того, чтобы разбиться на эти мелкие кусочки при столкновении с Марио.
Стандартная графика катающего камня | Неиспользуемая графика катающего камня #1 (Увеличен в 2 раза) | Неиспользуемая графика катающего камня #2 (Увеличен в 4 раза) |
---|---|---|
Платформа раннего тестирования
В 0x08026260 в ОЗУ неиспользуемый список отображения для небольшой желтой квадратной платформы можно увидеть на скриншоте. Неизвестно, для чего это было, но это было вероятно для ранних тестов уровня, поскольку он также имеет столкновение, связанное с ним после DL, который также не используется.
Flames
- Unused behavior exists for a small flame that bounces in a straight line and can harm Mario on contact. It goes away if Bowser is near.
- The flames positioned around the castle for light have an unused behavior that would cause nine of them to spawn inside of each other and do nothing but move back and forth. While the castle flames are normally able to hurt Mario, these ones don't.
Paintings
The paintings inside the castle are actually split into three vertical sections (similar to the three horizontal sections used to control the water level in Wet-Dry World), each of which can be independently set to any warp destination in the game. However, because the three sections are always set to the same destination in the final game, this functionality goes unused.
Prototype Chest
An unused behavior allows one to spawn a chest that doesn't emit numbers or shock Mario. It simply opens, from the front or the back, and releases a bubble. It's an early version of the chest due to being dated before the Shoshinkai '95 demo and, it is listed as a regular path while the used chest is listed as iwapath, both coded by a separate person.
Behavior Data
extern void s_box1_init(void) { s_change_shape(S_t_box1); obj_angleY = Randomd(); obj_angleY = 0; s_makeobj_chain(0,0,424/8+44,(-328/8)-36,execstp,S_t_box2,e_box2); } extern void s_takarabox(void) { s_player_slideout_RH(200,200); } extern void s_box(void) { switch (obj_mode){ case 0: if ( s_distance_obj2obj(execstp->motherobj,player1stp) < 300 ) obj_mode++; break; case 1: if ( obj_timer == 0 ){ s_makeobj_chain(0,0,-80,120,execstp,S_bubble,e_random_bubble); AudStartSound(execstp,NA_SE2_BOXOPEN+NA_IN_WATER); } obj_animeangleX -= 0x400; if ( obj_animeangleX < -0x4000) obj_mode++; case 2: break; } } e_tbox: p_initialize(option) p_setbit( flag,stf_moveON | stf_YangleSAME ) p_BGcheckYset p_program(s_box1_init) p_while p_program(s_takarabox) p_loop e_box2: p_initialize(option) p_setbit( flag,stf_moveON | stf_YangleSAME ) p_save_nowpos p_while p_program(s_box) p_loop
Prototype Fish Easter Egg
In Whomp's Fortress, a level editor shows that an unused object can be seen next to the cannon that appears to do nothing. Looking at the script associated with the object reveals a clearly stubbed out function that only checks the water level associated with the object. This object is actually a relic of how the Fish Easter Egg in Super Mario 64 worked in the prototype build. In the final game, the game does a 1/256 roll every time Mario makes a splash to see if a fish splashes along with the puddle. In the Shoshinkai 1995 Mario 64 footage, the same can be seen at the exact spot of the unused object. The exact reason for the change is unknown, but it is likely that the change was made because having an easter egg associated with an object meant an object slot was taken up, where as a simple 1/256 roll removed the need for these objects. The rest of the object code was recovered during the 7/25 gigaleak.
Leftover Behavior Data
e_funsui: p_initialize(option) p_setbit(flag,stf_moveON | stf_playerdistON ) p_shapeDISABLE p_while p_program(s_funsui_main) p_loop extern void s_funsui_main(void) { int i; float sc; StrategyRecord *stratp; float waterY = mcWaterCheck(obj_worldX,obj_worldZ); #if 0
Recovered Behavior Data
switch(obj_mode){ case 0: if ( obj_playerdist < 200 ) obj_mode++; break; case 1: if ( waterY > -10000 ){ if ( beforeframe_objcount < ( NUM_STRATEGY - 28 )){ if ( frameCounter % 32 == 0 ) objsound(NA_SE2_FISH); for(i=0;i<2;i++){ if ( ( Randomd() & 0x1f ) == 0 ){ stratp = s_makeobj_nowpos(execstp,S_fish,e_smallwaterdrop); s_set_skeletonobj(stratp,(void *)RCP_fishAnime,0); } else { stratp = s_makeobj_nowpos(execstp,S_waterdrop,e_smallwaterdrop); sc = Randomf()*1+0.5; stSetScale(stratp,sc,sc,sc); s_softspritemodeON(stratp); } stratp->s[stw_angleY].d = Randomd(); stratp->s[stw_worldY].f = waterY; stratp->s[stw_speedF].f = Randomf()*3+2; stratp->s[stw_speedY].f = Randomf()*20+20; } } } if ( obj_playerdist > 300 ) obj_mode = 0; break; }
Prototype Star
There is unused behavior for an early version of the star like the 2D ones seen in early builds, it can not be collected. It is likely to be the remnants of the early 2D star as it uses the star model and appears before the final star's behavior.
Behavior Data
e_star: p_initialize(option) p_setbit(flag,stf_moveON ) p_while p_addd(animeangleX,0x100) p_addd(animeangleY,0x100) p_loop
Red Coins
Red coins have unused behaviors that allow them to both stay in front of Mario and remain at a fixed distance away from him at all times, baiting the player to chase after them.
Small Chill Bully
In the final game, normal Bullies come in both large and small sizes, as seen in Lethal Lava Land. However, the only Chill Bully in the game is the large one found in Snowman's Land, leaving this diminutive version unused.
Trampoline
To do: The trampoline appears in the cap stage object table next to the cap switch, so get a screenshot of it in one of the cap stages. |
While the developers coded some behavior for it, the code doesn't work properly, as the functions it calls for are stubbed out and don't affect Mario. The trampoline's model is split into three parts, the top, the center, and the bottom. Unfortunately, the model doesn't load properly, but the collision for it does work. It appears in the cap stage object table with the cap switch, meaning that at one point it could have appeared in a cap stage. The leaked partial source code indicates it was last updated on November 18th, 1995. It calls for an unused function "DoTrampoline", the code appears to be removed in the source code as it is left blank. The file refers to it as "pathjumpbg", and "bane".
Behavior Data
extern void s_bane_naka(void) { float sc; float dist; s_copy_worldXYZ_angleXYZ(execstp,execstp->motherobj); s_copy_animeposY(execstp,execstp->motherobj); obj_worldY -= 75; if ( ( dist = obj_worldY - obj_attY ) >= 0 ){ sc = (dist/ 10.0+1.0 ); } else { dist = -dist; sc = 1.0-(dist/ 500.0); } stSetScale(execstp,1.0,sc,1.0); } extern void s_jumpbg(void) { StrategyRecord *stp; s_change_shape(S_bane_ue); if ( obj_timer == 0 ){ stp = s_makeobj_nowpos(execstp,S_bane_naka,e_bane_naka); stp->s[stw_worldY].f -= 75; stp = s_makeobj_nowpos(execstp,S_bane_sita,e_stop); stp->s[stw_worldY].f -= 75 + 75 ; } if ( player1stp->ride_strat == execstp ) execstp->s[stw_work7].d = 1; else { execstp->s[stw_work7].d = 0; obj_worldY = obj_attY; } DoTrampoline(); }
Trapdoor Sound
The trapdoor leading to Bowser in the Dark World was originally going to have a sound effect for when the player activated the trapdoor.
Behavior Data
void bhv_castle_floor_trap_open(void) { if (o->oTimer == 0) cur_obj_play_sound_2(SOUND_GENERAL_CASTLE_TRAP_OPEN); o->oAngleVelRoll -= 0x100; o->oFaceAngleRoll += o->oAngleVelRoll; if (o->oFaceAngleRoll < -0x4000) { o->oFaceAngleRoll = -0x4000; o->oAction = 2; // after opening is done, enable close detection } }
The original sound remains in the game's files. However, the sound goes unused and does not play as the floor trap object is set to have rendering disabled. Sounds spawned by an object do not play when the object isn't rendered.
DISABLE_RENDERING(), // Command 0x35: Disables rendering for the object. // Usage: DISABLE_RENDERING() static s32 bhv_cmd_disable_rendering(void) { gCurrentObject->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE; gCurBhvCommand++; return BHV_PROC_CONTINUE; } void cur_obj_play_sound_2(s32 soundMagic) { if (gCurrentObject->header.gfx.node.flags & GRAPH_RENDER_ACTIVE) { play_sound(soundMagic, gCurrentObject->header.gfx.cameraToObject); }
Unused sound. |
Water Mine
This unused mine is found with other water-related objects. It looks similar to the bombs seen in Bowser levels, albeit slightly smaller.
Yellow Switch & Transparent Box
While red, blue, and green switches and transparent boxes are used in the final game, these yellow versions go unused. When spawned, the yellow switch is always in its "pressed" state as there is no save file flag. It appears it the player would need to press the yellow switch to unlock boxed Koopa shells instead of being unlocked by default, based on box contents.
Behavior Data
void ActionActivateCapSwitch3() { } // dead function
MakeIDJMP itembox_table[] = { { ITEMCODE_HAT_WING ,0,0,S_itemhat_wing ,e_itemhat_wing }, { ITEMCODE_HAT_METAL ,0,0,S_itemhat_metal ,e_itemhat_metal }, { ITEMCODE_HAT_ERASE ,0,0,S_itemhat_hat ,e_itemhat_erase }, { ITEMCODE_NOKO ,0,0,S_koura ,e_nokoboard }, { ITEMCODE_COIN_1 ,0,0,S_coin ,e_player_coin }, { ITEMCODE_COIN_3 ,0,0,S_NULL ,e_player_coin_3 }, { ITEMCODE_COIN_10 ,0,0,S_NULL ,e_player_coin_10 }, { ITEMCODE_1UP ,0,0,S_oneup_kinoko ,e_1up_kinoko }, { ITEMCODE_GOALSTAR ,0,0,S_polystar ,e_enemystar2 }, { ITEMCODE_1UP_ESCAPE ,0,0,S_oneup_kinoko ,e_1up_kinoko_escape }, { ITEMCODE_GOALSTAR_1 ,0,1,S_polystar ,e_enemystar2 }, { ITEMCODE_GOALSTAR_2 ,0,2,S_polystar ,e_enemystar2 }, { ITEMCODE_GOALSTAR_3 ,0,3,S_polystar ,e_enemystar2 }, { ITEMCODE_GOALSTAR_4 ,0,4,S_polystar ,e_enemystar2 }, { ITEMCODE_GOALSTAR_5 ,0,5,S_polystar ,e_enemystar2 }, { ITEMCODE_END ,0,0,0 ,NULL }, };
Unused Models
Alternate Koopa Shell and Shoes
The color of Koopa's alternate green mono-colored shoes and shell correlate with the unused small green shell in the screenshot above. These can be loaded by overriding the values at US-version offsets 0x1D7ED6 with C240 (shell), 0x1D7F2E with B6E0 (left shoe), and 0x1D7F62 with B6E0 (right shoe).
Used Model | Unused Shell and Shoes |
---|---|
Big Bully - Round Geometry
Located with the geometry for the Bullies is a large round 3D object, possibly once intended to have been the body for Big Bully. It is slightly larger than the round 2D body used by Big Bully in the game, and can be loaded by replacing the value at US-version offset 0x134C7A with 3878.
Early Test Platform
At 0x08026260 in RAM an unused display list for a small yellow square platform can be seen in the screenshot. It is unknown what this was for, but it was likely for early level tests as it also has collision associated with it after the DL which is also unused.
Heave Ho - Round Geometry
To do: The tires looks huge, are these loaded properly? |
Heave Ho has three unreferenced spherical geometries, possibly once used as Heave Ho's tires. They appear huge, either because they aren't scaled correctly or weren't loaded properly for the screenshot. The final model uses 2D tires, which is much more memory-conservative. To load these, replace the value at US-version offset 0x132C02 with 4188, 0x132C0E with 45D0, and 0x132C1A with 49A8.
Hazy Maze Cave Rolling Rocks Graphic Variant
In Hazy Maze Cave, there are two unused graphics for the rolling rocks. These two graphics are smaller than the canonical rolling rock graphic, and have more jagged shapes. Perhaps the rolling rocks were intended to break up into these smaller pieces upon colliding with Mario, or break up over time. The former would later take place in Super Mario 64 DS, while playing as Wario and using the Super Mushroom power-up.
Standard Rolling Rock Graphic | Unused Rolling Rock Graphic #1 (Scaled up 2x) | Unused Rolling Rock Graphic #2 (Scaled up 4x) |
---|---|---|
![]() |
![]() |
![]() |
Klepto with Blue Star
Klepto has 3 graphical variants: holding nothing, holding Mario's hat, and holding a yellow star. However, he has an unused fourth graphic in which he's holding a blue star. This suggests that originally, Klepto would have held a yellow star if the resulting star would be yellow, and a blue star if the resulting star would be blue. But later this was changed so that Klepto will hold a yellow star whether the resulting star is yellow or blue.
Penguin Head Variants
This penguin head variant is larger, darker, and texture-less. It also features an orange beak. This head was seen in an early screenshot of the game. To view this in-game, replace the value at US-version offset 0x1658B2 with 7358.
Unused - 7358 | Used |
---|---|
![]() |
![]() |
Another unused penguin head containing a sad expression, with eyes that share some resemblance to those from the Nintendo Shoshinkai 1995 demo. To view this in-game, replace the value at US-version offset 0x1658B2 with 64E8.
Unused - 64E8 | Shoshinkai 1995 |
---|---|
![]() |
![]() |
Pit Block Graphic Variant
In Tick Tock Clock, there's a block that moves up and down near the star - The Pit and the Pendulums. This block has 2 vertical stripes on each of its sides. However, there's an unused variant that has 3 vertical stripes on each of its sides.
Used | Unused |
---|---|
Small Koopa Shells
These red and green Koopa shells feature unusual blue bottoms. They can be loaded in-game via codes or hacking, but they're completely non-functional. To replace the Koopa Shell with one of these shells in-game, replace the value at US-version offset 0x2AC356 with 0ADC for the red shell or 0B08 for the green shell. It is included with the used Koopa model in the source code.
Unused Goomba Parts
To do: Replace the 2D body with the 3D body. The 3D body can overwrite the 2D body by inserting at 01D360 at 0x200FFD, but it doesn't scale properly. |
Goomba has a darker variant of its head. Although it lacks textures, the color matches that of Goomba's feet. There is also unused round 3D geometry for Goomba's body, which was possibly replaced with the 2D body to increase the game's performance. The unused head can be loaded in-game by replacing the value at US-version offset 0x201021 with 01D0D0.
Unused Head | Unused 3D Body |
---|---|
Whomp's Fortress Tower Platform Graphic Variant
In Whomp's Fortress, there's an unused graphic for the platforms of the tower. This unused graphic is a trapezoid instead of a rectangle. It's likely that the static platforms (i.e. every second platform) were originally intended to use this unused graphic. With this unused graphic, there's no empty space between consecutive platforms. It was used in the Shoshinkai 1995 demo. This model can be loaded in place of the current tower platforms by overwriting the value in the US-version offset 0x49E57A with EDC0.
Tower Platforms with Normal Graphics | Tower Platforms with Unused Graphics |
---|---|