Il a plusieurs semaines, des fans du célèbre jeu Super Mario 64 se sont lancés dans un défi particulièrement intéressant : faute de code source disponible pour ce jeu (qui est la propriété exclusive de Nintendo), des développeurs organisés sous le nom de "Team Atlas" ont effectué un incroyable travail de reverse-engeneering sur le jeu afin de donner naissance à un portage totalement fonctionnel sur PC.
Cette prouesse technique permet donc de jouer de manière native à ce jeu sur n'importe quel ordinateur fonctionnant sous Windows (le portage a été effectué dans un premier temps pour DirectX 12). Mais ce n'est pas tout, car étant donné qu'il s'agit ici d'un jeu PC à proprement parler, et non d'émulation, les limites traditionnelles ne s'appliquent donc pas : le jeu est jouable sans limite de résolution, en 4:3 comme en 16:9, en SD, HD, FHD, 2K, 4K et j'en passe, et il est même possible d'implémenter des outils que les gamers affectionnent particulièrement comme Reshade, qui peut apporter du ray-tracing par exmple ! Tout cela n'aurait pas été possible sans une communauté très active, qui a réalisé ici un travail de recherche incroyable.
Mais quel rapport avec notre chère Nintendo Switch me direz-vous ? Et bien comme vous le savez, cette console est particulièrement appréciée par les développeurs underground car son architecture et son système d'exploitation sont assez flexible pour faire fonctionner de nombreux portages (à commencer par Doom, mais ça c'est obligatoire !). Il aura donc fallu très peu de temps pour qu'émerge sur la toile une version installable de ce portage PC, disponible en fichier NSP et à installer avec votre outil favori (Awoo-Installer, Goldleaf...).
Update : La team AtlasNX nie avoir développé ce portage. https://twitter.com/...775706177241088
Aucun lien, ni demande de lien vers le jeu PC ou Switch ne sera toléré dans les commentaires, et vous exposera à un ban immédiat !!!
ho la vache merci pour l'info ! ça mériterai d'étre rajouté en newsAttention, la team AtlasNX nie avoir build ce portage
https://twitter.com/...775706177241088
J'ai essayé de le rajouter à le news mais je ne suis pas un pro haha je n'ai modifié que le post sur le forum...ho la vache merci pour l'info ! ça mériterai d'étre rajouté en newsAttention, la team AtlasNX nie avoir build ce portage https://twitter.com/...775706177241088
Il s'agit du lien pour télécharger le code source du portage PCmdr, en même temps, le lien est en bas de la vidéo youtube !
Je l'ai testé avant d'écrire la newsj'ai dl le portage je vais attendre des retours
mdr, en même temps, le lien est en bas de la vidéo youtube !
Salut,
Dépêches vous de télécharger le portage sur pc si vous voulait l'essayer les liens commence déjà a étre supprimer.
A cause d'une plainte des avocats de Big N
Nintendo et très (trop) réactif sur la suppression du portage je trouve.
Note: Ce qui est vraiment incompréhensible je trouve pour un vieux jeux N64 qui ces d' ailleurs très bien vendus sur n64.
Il sera toujours trouvable maintenant qu'il est sur le net
Moi j arrive pas a trouvé le jeux sur pc.
Plein de vidéo tourne mais aucun lien.
edit: j'ai trouvé
Dommage pas de FR
Tu n'as qu'à le traduire toi-même, à oui c'est beaucoup plus simple de rajouter "kaze-nico" aux releases des autres.Dommage qui est pas Traduit en FR
bah comme sur la version PC il faut faire le reverse de la rom eur de Mario 64 pour prendre ses assets et tous le reste pour le compiler et avoir une belle VF ....
bah comme sur la version PC il faut faire le reverse de la rom eur de Mario 64 pour prendre ses assets et tous le reste pour le compiler et avoir une belle VF ....
Un remaster est censé sortir cette année pour les 35 ans de mario, un peu logique que ça la fout mal.Salut,
Dépêches vous de télécharger le portage sur pc si vous voulait l'essayer les liens commence déjà a étre supprimer.
A cause d'une plainte des avocats de Big N
Nintendo et très (trop) réactif sur la suppression du portage je trouve.
Note: Ce qui est vraiment incompréhensible je trouve pour un vieux jeux N64 qui ces d' ailleurs très bien vendus sur n64.
Plus simple à dire qu'à faire.bah comme sur la version PC il faut faire le reverse de la rom eur de Mario 64 pour prendre ses assets et tous le reste pour le compiler et avoir une belle VF ....
bah comme sur la version PC il faut faire le reverse de la rom eur de Mario 64 pour prendre ses assets et tous le reste pour le compiler et avoir une belle VF ....
Les assets sont pas compilées, du texte ou des images ça se compile pas. Sur les jeux Switch ou 3DS par ex, les assets sont dans le RomFS (read-only FileSystem) et le ExeFS (executable FileSystem) contient les programmes compilés. Tout ça pour dire que pour choper les traductions de la rom EUR, je pense qu'il suffit d'extraire le RomFS du jeu, pas besoin de décompiler ou recompiler quoi que soit à mon avis. (Après sur les rom N64, je sais pas comment ça fonctionne mais j'imagine que c'est le même principe).
NB : En théorie, tu peux coder les "textes" du jeu en dur dans les programmes, mais en général c'est pas fait comme ça, le code fait référence à des assets dans la RomFS, justement pour gérer le multi-langue.
merci pour la news
enfin c'est bien , mais bof bof, la version N64 réagis beaucoup beaucoup mieux que cette version switch , par exemple lorsque tu fait un demi tour, Mario fait un pas en avant pour après se retourner ce qui te fait tomber des plateformes si tu est aux bords !!!!
c'est un de mes meilleurs souvenirs de cette époque , je l'ai poncé le jeu et je me souviens pas de ce contrôle très imprécis.
très déçu , même si c'est sympas quand même :/
Pour information, le code source obtenu par reverse engeenering est légal car ce n'est pas le code source original de Nintendo sous Copyright. Par contre, distribuer la rom du jeu ne l'est pas, pas plus que le jeu prêt à l'emploi, tant qu'il utilise les textures copyrightées par Nintendo, ainsi que leur marque, et les noms associés.
En gros, la situation est la même que pour Doom et Morrowind.
Dans les faits, n'importe qui pourrait légalement proposer un programme ici, se contentant de compiler automatiquement l'executable switch/Windows/Linux/etc... Du moment que l'utilisateur se débrouille par ses propres moyens pour fournir la rom du jeu (Version US, Eu, ou Jap), au programme.
J'ai tenté de compiler le jeu sur PC pour ma part, mais j'aboutis à des erreurs, c'est dommage, j'aurais voulu tenter de modder un peu pour remplacer les textures.
Que ce soit en natif ou avec docker, je tombe là dessus :
OPT_FLAGS := -g -m32
Et
CC_CHECK += -m32
Et
LDFLAGS := -m32 -march=i686 -Llib -lpthread -lglew32 sdl2-config --static-libs -lm -lglu32 -lsetupapi -ldinput8 -luser32 -lgdi32 -limm32 -lole32 -loleaut32 -lshell32 -lwinmm -lversion -luuid -lopengl32 -no-pie -static
Et
LDFLAGS := -m32 -march=i686 -lm -lGL sdl2-config --libs -no-pie -lpthread pkg-config --libs libusb-1.0 glfw3 -lasound -lX11 -lXrandr -lpulse
Chose que j'ai fait, qui a corrigé des blocages, et abouti aux erreurs avec la compilation ci dessus (le spoiler).
Pour information, un Dockerfile est disponible ici pour avoir les conditions idéales pour compiler le code source du jeu sans obligatoirement devoir installer la distribution Linux ciblé, ciblant toutes les plateformes (switch, windows, linux, opengl/dx12... :
FROM ubuntu:20.04 as build ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && \ apt-get install -y \ binutils-mips-linux-gnu \ bsdmainutils \ build-essential \ libaudiofile-dev \ libglew-dev \ libglfw3-dev \ libsdl2-dev \ libusb-dev \ libusb-1.0.0-dev \ pkg-config \ python3 \ wget \ x11proto-randr-dev \ zlib1g-dev RUN wget \ https://github.com/n64decomp/qemu-irix/releases/download/v2.11-deb/qemu-irix-2.11.0-2169-g32ab296eef_amd64.deb \ -O qemu.deb && \ echo 8170f37cf03a08cc2d7c1c58f10d650ea0d158f711f6916da9364f6d8c85f741 qemu.deb | sha256sum --check && \ dpkg -i qemu.deb && \ rm qemu.deb RUN mkdir /sm64 WORKDIR /sm64 ENV PATH="/sm64/tools:${PATH}" CMD echo 'This is Docker container about compiling Super Mario 64 on Linux and Windows 64bits, with SDL2/GL API Support, and Xinput Gamepads and Dualshock 4 (USB and Bluetooth), and keyboard.' \ 'usage (US Build): docker run --rm --mount type=bind,source="$(pwd)",destination=/sm64 --user $UID:$UID sm64 sm64 make VERSION=${VERSION:-us} -j$(nproc)\n' \ 'usage (JP Build): docker run --rm --mount type=bind,source="$(pwd)",destination=/sm64 --user $UID:$UID sm64 sm64 make VERSION=${VERSION:-jp} -j$(nproc)\n' \ 'usage (EU Build - Still WIP): docker run --rm --mount type=bind,source="$(pwd)",destination=/sm64 --user $UID:$UID sm64 sm64 make VERSION=${VERSION:-eu} COMPARE=0 -j$(nproc)\n' \ 'see https://github.com/n64decomp/sm64/blob/master/README.md for advanced usage'
on est pas pret de revoir la team atlas de si tot vu que nintendo a depose plainte ..... logique qu'ils disent que ce n'est pas eux ^^ merci pour la news et super taffAttention, la team AtlasNX nie avoir build ce portage https://twitter.com/...775706177241088
Ce lien n'est pas du warez puisque portage d'un code source rendu public par adobe lui même.Il y a déjà eu des liens pour du warez pourquoi interdire le lien pour ce portage ? (http://www.logic-sun...sur-switch.html)
Pour information, le code source obtenu par reverse engeenering est légal car ce n'est pas le code source original de Nintendo sous Copyright. Par contre, distribuer la rom du jeu ne l'est pas, pas plus que le jeu prêt à l'emploi, tant qu'il utilise les textures copyrightées par Nintendo, ainsi que leur marque, et les noms associés.
En gros, la situation est la même que pour Doom et Morrowind.
Dans les faits, n'importe qui pourrait légalement proposer un programme ici, se contentant de compiler automatiquement l'executable switch/Windows/Linux/etc... Du moment que l'utilisateur se débrouille par ses propres moyens pour fournir la rom du jeu (Version US, Eu, ou Jap), au programme.
J'ai tenté de compiler le jeu sur PC pour ma part, mais j'aboutis à des erreurs, c'est dommage, j'aurais voulu tenter de modder un peu pour remplacer les textures.
Que ce soit en natif ou avec docker, je tombe là dessus :
Spoiler
build/us_pc/src/engine/math_util.o: In function `vec3f_normalize':
math_util.c:(.text+0x7a0): undefined reference to `sqrtf'
build/us_pc/src/engine/math_util.o: In function `mtxf_lookat':
math_util.c:(.text+0x97c): undefined reference to `sqrtf'
math_util.c:(.text+0xac8): undefined reference to `sqrtf'
math_util.c:(.text+0xb89): undefined reference to `sqrtf'
math_util.c:(.text+0xc4a): undefined reference to `sqrtf'
build/us_pc/src/engine/math_util.o:math_util.c:(.text+0x2845): more undefined references to `sqrtf' follow
build/us_pc/src/game/display.o: In function `clear_frame_buffer':
display.c:(.text+0x79c): undefined reference to `ceilf'
display.c:(.text+0x805): undefined reference to `floorf'
build/us_pc/src/game/display.o: In function `clear_viewport':
display.c:(.text+0x968): undefined reference to `floorf'
display.c:(.text+0x9aa): undefined reference to `ceilf'
build/us_pc/src/game/object_collision.o: In function `func_802C8504':
object_collision.c:(.text+0x14c): undefined reference to `sqrtf'
build/us_pc/src/game/object_collision.o: In function `func_802C870C':
object_collision.c:(.text+0x399): undefined reference to `sqrtf'
build/us_pc/src/game/object_helpers.o: In function `lateral_dist_between_objects':
object_helpers.c:(.text+0xef4): undefined reference to `sqrtf'
build/us_pc/src/game/object_helpers.o: In function `dist_between_objects':
object_helpers.c:(.text+0xf97): undefined reference to `sqrtf'
build/us_pc/src/game/object_helpers.o: In function `obj_turn_toward_object':
object_helpers.c:(.text+0x1338): undefined reference to `sqrtf'
build/us_pc/src/game/object_helpers.o:object_helpers.c:(.text+0x3763): more undefined references to `sqrtf' follow
build/us_pc/src/game/rendering_graph_node.o: In function `geo_process_background':
rendering_graph_node.c:(.text+0x1582): undefined reference to `ceilf'
rendering_graph_node.c:(.text+0x15eb): undefined reference to `floorf'
build/us_pc/src/game/paintings.o: In function `painting_calculate_point_ripple':
paintings.c:(.text+0x11bd): undefined reference to `sqrtf'
build/us_pc/src/game/paintings.o: In function `func_802D39DC':
paintings.c:(.text+0x1982): undefined reference to `sqrtf'
build/us_pc/src/game/behavior_actions.o: In function `func_802AA7EC':
behavior_actions.c:(.text+0x52d8): undefined reference to `sqrtf'
build/us_pc/src/game/behavior_actions.o: In function `func_802B2894':
behavior_actions.c:(.text+0xcab3): undefined reference to `sqrtf'
build/us_pc/src/game/behavior_actions.o: In function `bhv_bowser_loop':
behavior_actions.c:(.text+0x10814): undefined reference to `sqrtf'
build/us_pc/src/game/behavior_actions.o:behavior_actions.c:(.text+0x15f18): more undefined references to `sqrtf' follow
build/us_pc/src/game/hud.o: In function `render_hud_mario_lives':
hud.c:(.text+0x8bc): undefined reference to `floorf'
hud.c:(.text+0x907): undefined reference to `floorf'
hud.c:(.text+0x95c): undefined reference to `floorf'
build/us_pc/src/game/hud.o: In function `render_hud_stars':
hud.c:(.text+0xa3b): undefined reference to `ceilf'
hud.c:(.text+0xa89): undefined reference to `ceilf'
hud.c:(.text+0xafa): undefined reference to `ceilf'
build/us_pc/src/game/hud.o: In function `render_hud_timer':
hud.c:(.text+0xc44): undefined reference to `ceilf'
hud.c:(.text+0xc90): undefined reference to `ceilf'
build/us_pc/src/game/hud.o:hud.c:(.text+0xcde): more undefined references to `ceilf' follow
build/us_pc/src/game/mario_actions_airborne.o: In function `check_horizontal_wind':
mario_actions_airborne.c:(.text+0x670): undefined reference to `sqrtf'
build/us_pc/src/game/obj_behaviors_2.o: In function `platform_on_track_update_pos_or_spawn_ball':
obj_behaviors_2.c:(.text+0x46a): undefined reference to `sqrtf'
obj_behaviors_2.c:(.text+0x6a8): undefined reference to `sqrtf'
build/us_pc/src/game/obj_behaviors_2.o: In function `treat_far_home_as_mario':
obj_behaviors_2.c:(.text+0x2116): undefined reference to `sqrtf'
obj_behaviors_2.c:(.text+0x2211): undefined reference to `sqrtf'
build/us_pc/src/game/obj_behaviors_2.o:obj_behaviors_2.c:(.text+0x628c): more undefined references to `sqrtf' follow
build/us_pc/src/game/mario_actions_cutscene.o: In function `print_displaying_credits_entry':
mario_actions_cutscene.c:(.text+0x125): undefined reference to `floorf'
mario_actions_cutscene.c:(.text+0x1ac): undefined reference to `floorf'
mario_actions_cutscene.c:(.text+0x229): undefined reference to `floorf'
mario_actions_cutscene.c:(.text+0x296): undefined reference to `ceilf'
build/us_pc/src/game/mario_actions_cutscene.o: In function `act_bbh_enter_spin':
mario_actions_cutscene.c:(.text+0x2fe0): undefined reference to `sqrtf'
mario_actions_cutscene.c:(.text+0x30c2): undefined reference to `sqrtf'
build/us_pc/src/game/mario_actions_cutscene.o: In function `act_bbh_enter_jump':
mario_actions_cutscene.c:(.text+0x343e): undefined reference to `sqrtf'
build/us_pc/src/game/mario_actions_cutscene.o: In function `jumbo_star_cutscene_flying':
mario_actions_cutscene.c:(.text+0x47e4): undefined reference to `sqrtf'
build/us_pc/src/game/screen_transition.o: In function `calc_tex_transition_time':
screen_transition.c:(.text+0x67d): undefined reference to `sqrtf'
build/us_pc/src/game/mario_actions_submerged.o:mario_actions_submerged.c:(.text+0x553): more undefined references to `sqrtf' follow
build/us_pc/src/pc/gfx/gfx_sdl2.o: In function `gfx_sdl_init':
gfx_sdl2.c:(.text+0xe): undefined reference to `SDL_Init'
gfx_sdl2.c:(.text+0x1d): undefined reference to `SDL_GL_SetAttribute'
gfx_sdl2.c:(.text+0x2c): undefined reference to `SDL_GL_SetAttribute'
gfx_sdl2.c:(.text+0x53): undefined reference to `SDL_CreateWindow'
gfx_sdl2.c:(.text+0x69): undefined reference to `SDL_GL_CreateContext'
gfx_sdl2.c:(.text+0x73): undefined reference to `SDL_GL_SetSwapInterval'
build/us_pc/src/pc/gfx/gfx_sdl2.o: In function `gfx_sdl_main_loop':
gfx_sdl2.c:(.text+0x208): undefined reference to `SDL_GetTicks'
gfx_sdl2.c:(.text+0x216): undefined reference to `SDL_GetTicks'
gfx_sdl2.c:(.text+0x237): undefined reference to `SDL_Delay'
build/us_pc/src/pc/gfx/gfx_sdl2.o: In function `gfx_sdl_get_dimensions':
gfx_sdl2.c:(.text+0x263): undefined reference to `SDL_GetWindowSize'
build/us_pc/src/pc/gfx/gfx_sdl2.o: In function `gfx_sdl_handle_events':
gfx_sdl2.c:(.text+0x335): undefined reference to `SDL_PollEvent'
build/us_pc/src/pc/gfx/gfx_sdl2.o: In function `gfx_sdl_swap_buffers_begin':
gfx_sdl2.c:(.text+0x36e): undefined reference to `SDL_GL_SwapWindow'
build/us_pc/src/pc/gfx/gfx_opengl.o: In function `gfx_opengl_vertex_array_set_attribs':
gfx_opengl.c:(.text+0x48): undefined reference to `glEnableVertexAttribArray'
gfx_opengl.c:(.text+0x96): undefined reference to `glVertexAttribPointer'
build/us_pc/src/pc/gfx/gfx_opengl.o: In function `gfx_opengl_unload_shader':
gfx_opengl.c:(.text+0xf7): undefined reference to `glDisableVertexAttribArray'
build/us_pc/src/pc/gfx/gfx_opengl.o: In function `gfx_opengl_load_shader':
gfx_opengl.c:(.text+0x128): undefined reference to `glUseProgram'
build/us_pc/src/pc/gfx/gfx_opengl.o: In function `gfx_opengl_create_and_load_new_shader':
gfx_opengl.c:(.text+0x1377): undefined reference to `glCreateShader'
gfx_opengl.c:(.text+0x139d): undefined reference to `glShaderSource'
gfx_opengl.c:(.text+0x13aa): undefined reference to `glCompileShader'
gfx_opengl.c:(.text+0x13c3): undefined reference to `glGetShaderiv'
gfx_opengl.c:(.text+0x13f4): undefined reference to `glGetShaderiv'
gfx_opengl.c:(.text+0x1435): undefined reference to `glGetShaderInfoLog'
gfx_opengl.c:(.text+0x1466): undefined reference to `glCreateShader'
gfx_opengl.c:(.text+0x1494): undefined reference to `glShaderSource'
gfx_opengl.c:(.text+0x14a1): undefined reference to `glCompileShader'
gfx_opengl.c:(.text+0x14ba): undefined reference to `glGetShaderiv'
gfx_opengl.c:(.text+0x14eb): undefined reference to `glGetShaderiv'
gfx_opengl.c:(.text+0x152c): undefined reference to `glGetShaderInfoLog'
gfx_opengl.c:(.text+0x1558): undefined reference to `glCreateProgram'
gfx_opengl.c:(.text+0x1573): undefined reference to `glAttachShader'
gfx_opengl.c:(.text+0x1588): undefined reference to `glAttachShader'
gfx_opengl.c:(.text+0x1595): undefined reference to `glLinkProgram'
gfx_opengl.c:(.text+0x15e8): undefined reference to `glGetAttribLocation'
gfx_opengl.c:(.text+0x1646): undefined reference to `glGetAttribLocation'
gfx_opengl.c:(.text+0x1697): undefined reference to `glGetAttribLocation'
gfx_opengl.c:(.text+0x1715): undefined reference to `glGetAttribLocation'
gfx_opengl.c:(.text+0x181d): undefined reference to `glGetUniformLocation'
gfx_opengl.c:(.text+0x1835): undefined reference to `glUniform1i'
gfx_opengl.c:(.text+0x1854): undefined reference to `glGetUniformLocation'
gfx_opengl.c:(.text+0x186c): undefined reference to `glUniform1i'
build/us_pc/src/pc/gfx/gfx_opengl.o: In function `gfx_opengl_new_texture':
gfx_opengl.c:(.text+0x195f): undefined reference to `glGenTextures'
build/us_pc/src/pc/gfx/gfx_opengl.o: In function `gfx_opengl_select_texture':
gfx_opengl.c:(.text+0x1995): undefined reference to `glActiveTexture'
gfx_opengl.c:(.text+0x19a4): undefined reference to `glBindTexture'
build/us_pc/src/pc/gfx/gfx_opengl.o: In function `gfx_opengl_upload_texture':
gfx_opengl.c:(.text+0x19ef): undefined reference to `glTexImage2D'
build/us_pc/src/pc/gfx/gfx_opengl.o: In function `gfx_opengl_set_sampler_parameters':
gfx_opengl.c:(.text+0x1a4b): undefined reference to `glActiveTexture'
gfx_opengl.c:(.text+0x1a6e): undefined reference to `glTexParameteri'
gfx_opengl.c:(.text+0x1a91): undefined reference to `glTexParameteri'
gfx_opengl.c:(.text+0x1aac): undefined reference to `glTexParameteri'
gfx_opengl.c:(.text+0x1ac7): undefined reference to `glTexParameteri'
build/us_pc/src/pc/gfx/gfx_opengl.o: In function `gfx_opengl_set_depth_test':
gfx_opengl.c:(.text+0x1ae7): undefined reference to `glEnable'
gfx_opengl.c:(.text+0x1af3): undefined reference to `glDisable'
build/us_pc/src/pc/gfx/gfx_opengl.o: In function `gfx_opengl_set_depth_mask':
gfx_opengl.c:(.text+0x1b11): undefined reference to `glDepthMask'
build/us_pc/src/pc/gfx/gfx_opengl.o: In function `gfx_opengl_set_zmode_decal':
gfx_opengl.c:(.text+0x1b3c): undefined reference to `glPolygonOffset'
gfx_opengl.c:(.text+0x1b46): undefined reference to `glEnable'
gfx_opengl.c:(.text+0x1b55): undefined reference to `glPolygonOffset'
gfx_opengl.c:(.text+0x1b5f): undefined reference to `glDisable'
build/us_pc/src/pc/gfx/gfx_opengl.o: In function `gfx_opengl_set_viewport':
gfx_opengl.c:(.text+0x1b89): undefined reference to `glViewport'
build/us_pc/src/pc/gfx/gfx_opengl.o: In function `gfx_opengl_set_scissor':
gfx_opengl.c:(.text+0x1bb3): undefined reference to `glScissor'
build/us_pc/src/pc/gfx/gfx_opengl.o: In function `gfx_opengl_set_use_alpha':
gfx_opengl.c:(.text+0x1bd3): undefined reference to `glEnable'
gfx_opengl.c:(.text+0x1bdf): undefined reference to `glDisable'
build/us_pc/src/pc/gfx/gfx_opengl.o: In function `gfx_opengl_draw_triangles':
gfx_opengl.c:(.text+0x1c17): undefined reference to `glBufferData'
gfx_opengl.c:(.text+0x1c34): undefined reference to `glDrawArrays'
build/us_pc/src/pc/gfx/gfx_opengl.o: In function `gfx_opengl_init':
gfx_opengl.c:(.text+0x1c4c): undefined reference to `glGenBuffers'
gfx_opengl.c:(.text+0x1c5e): undefined reference to `glBindBuffer'
gfx_opengl.c:(.text+0x1c68): undefined reference to `glDepthFunc'
gfx_opengl.c:(.text+0x1c77): undefined reference to `glBlendFunc'
build/us_pc/src/pc/gfx/gfx_opengl.o: In function `gfx_opengl_start_frame':
gfx_opengl.c:(.text+0x1c88): undefined reference to `glDisable'
gfx_opengl.c:(.text+0x1c92): undefined reference to `glDepthMask'
gfx_opengl.c:(.text+0x1cab): undefined reference to `glClearColor'
gfx_opengl.c:(.text+0x1cb5): undefined reference to `glClear'
gfx_opengl.c:(.text+0x1cbf): undefined reference to `glEnable'
build/us_pc/src/pc/audio/audio_sdl.o: In function `audio_sdl_init':
audio_sdl.c:(.text+0x1d): undefined reference to `SDL_Init'
audio_sdl.c:(.text+0x26): undefined reference to `SDL_GetError'
audio_sdl.c:(.text+0x64): undefined reference to `SDL_memset'
audio_sdl.c:(.text+0xa6): undefined reference to `SDL_OpenAudioDevice'
audio_sdl.c:(.text+0xbb): undefined reference to `SDL_GetError'
audio_sdl.c:(.text+0xf2): undefined reference to `SDL_PauseAudioDevice'
build/us_pc/src/pc/audio/audio_sdl.o: In function `audio_sdl_buffered':
audio_sdl.c:(.text+0x11e): undefined reference to `SDL_GetQueuedAudioSize'
build/us_pc/src/pc/audio/audio_sdl.o: In function `audio_sdl_play':
audio_sdl.c:(.text+0x164): undefined reference to `SDL_QueueAudio'
build/us_pc/src/pc/controller/controller_sdl.o: In function `controller_sdl_init':
controller_sdl.c:(.text+0xa): undefined reference to `SDL_Init'
controller_sdl.c:(.text+0x13): undefined reference to `SDL_GetError'
build/us_pc/src/pc/controller/controller_sdl.o: In function `controller_sdl_read':
controller_sdl.c:(.text+0x5f): undefined reference to `SDL_GameControllerUpdate'
controller_sdl.c:(.text+0x7a): undefined reference to `SDL_GameControllerGetAttached'
controller_sdl.c:(.text+0x8d): undefined reference to `SDL_GameControllerClose'
controller_sdl.c:(.text+0xb7): undefined reference to `SDL_IsGameController'
controller_sdl.c:(.text+0xc5): undefined reference to `SDL_GameControllerOpen'
controller_sdl.c:(.text+0xe1): undefined reference to `SDL_NumJoysticks'
controller_sdl.c:(.text+0x10d): undefined reference to `SDL_GameControllerGetButton'
controller_sdl.c:(.text+0x138): undefined reference to `SDL_GameControllerGetButton'
controller_sdl.c:(.text+0x163): undefined reference to `SDL_GameControllerGetButton'
controller_sdl.c:(.text+0x18e): undefined reference to `SDL_GameControllerGetButton'
controller_sdl.c:(.text+0x1ba): undefined reference to `SDL_GameControllerGetButton'
controller_sdl.c:(.text+0x1e5): undefined reference to `SDL_GameControllerGetAxis'
controller_sdl.c:(.text+0x1fd): undefined reference to `SDL_GameControllerGetAxis'
controller_sdl.c:(.text+0x215): undefined reference to `SDL_GameControllerGetAxis'
controller_sdl.c:(.text+0x22d): undefined reference to `SDL_GameControllerGetAxis'
controller_sdl.c:(.text+0x245): undefined reference to `SDL_GameControllerGetAxis'
build/us_pc/src/pc/controller/controller_sdl.o:controller_sdl.c:(.text+0x25d): more undefined references to `SDL_GameControllerGetAxis' follow
build/us_pc/lib/src/guNormalize.o: In function `guNormalize':
guNormalize.c:(.text+0x59): undefined reference to `sqrtf'
build/us_pc/lib/src/guLookAtRef.o: In function `guLookAtReflectF':
guLookAtRef.c:(.text+0x9b): undefined reference to `sqrtf'
guLookAtRef.c:(.text+0x161): undefined reference to `sqrtf'
guLookAtRef.c:(.text+0x227): undefined reference to `sqrtf'
build/us_pc/src/goddard/renderer.o: In function `gd_sqrt_d':
renderer.c:(.text+0x2ec): undefined reference to `sqrtf'
build/us_pc/src/goddard/renderer.o:renderer.c:(.text+0x3ef7): more undefined references to `sqrtf' follow
collect2: error: ld returned 1 exit status
make: *** [build/us_pc/sm64.us.f3dex2e] Error 1
Makefile:702: recipe for target 'build/us_pc/sm64.us.f3dex2e' failed
D'après certains sur le forum, il y aurait un problème avec le Makefile aussi, pour toutes les machines 64bits. il faudrait commenter :
OPT_FLAGS := -g -m32
Et
CC_CHECK += -m32
Et
LDFLAGS := -m32 -march=i686 -Llib -lpthread -lglew32 sdl2-config --static-libs -lm -lglu32 -lsetupapi -ldinput8 -luser32 -lgdi32 -limm32 -lole32 -loleaut32 -lshell32 -lwinmm -lversion -luuid -lopengl32 -no-pie -static
Et
LDFLAGS := -m32 -march=i686 -lm -lGL sdl2-config --libs -no-pie -lpthread pkg-config --libs libusb-1.0 glfw3 -lasound -lX11 -lXrandr -lpulse
Chose que j'ai fait, qui a corrigé des blocages, et abouti aux erreurs avec la compilation ci dessus (le spoiler).
Pour information, un Dockerfile est disponible ici pour avoir les conditions idéales pour compiler le code source du jeu sans obligatoirement devoir installer la distribution Linux ciblé, ciblant toutes les plateformes (switch, windows, linux, opengl/dx12... :
FROM ubuntu:20.04 as build
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && \
apt-get install -y \
binutils-mips-linux-gnu \
bsdmainutils \
build-essential \
libaudiofile-dev \
libglew-dev \
libglfw3-dev \
libsdl2-dev \
libusb-dev \
libusb-1.0.0-dev \
pkg-config \
python3 \
wget \
x11proto-randr-dev \
zlib1g-dev
RUN wget \
https://github.com/n...96eef_amd64.deb \
-O qemu.deb && \
echo 8170f37cf03a08cc2d7c1c58f10d650ea0d158f711f6916da9364f6d8c85f741 qemu.deb | sha256sum --check && \
dpkg -i qemu.deb && \
rm qemu.deb
RUN mkdir /sm64
WORKDIR /sm64
ENV PATH="/sm64/tools:${PATH}"
CMD echo 'This is Docker container about compiling Super Mario 64 on Linux and Windows 64bits, with SDL2/GL API Support, and Xinput Gamepads and Dualshock 4 (USB and Bluetooth), and keyboard.' \
'usage (US Build): docker run --rm --mount type=bind,source="$(pwd)",destination=/sm64 --user $UID:$UID sm64 sm64 make VERSION=${VERSION:-us} -j$(nproc)\n' \
'usage (JP Build): docker run --rm --mount type=bind,source="$(pwd)",destination=/sm64 --user $UID:$UID sm64 sm64 make VERSION=${VERSION:-jp} -j$(nproc)\n' \
'usage (EU Build - Still WIP): docker run --rm --mount type=bind,source="$(pwd)",destination=/sm64 --user $UID:$UID sm64 sm64 make VERSION=${VERSION:-eu} COMPARE=0 -j$(nproc)\n' \
'see https://github.com/n...aster/README.md for advanced usage'
Hello midorijin, j'ai fait cette mission hier soir et pour moi les piliers étaient bien présents, étoile récupéré sans soucis. (Version switch "Atlas" en NSP ). A+Malheureusement, il y a certains bugs sur switch qui empêchent d'obtenir certaines étoiles comme par exemple la mission "https://www.mariowik...g_for_Red_Coins ou les piliers n'apparaissent pas chez moi (...)
Oui, en fait, c'est que pour pouvoir libérer les piliers, il faut avoir fait le stage de bowser juste avant (absolument pas logique vu que ce n'est pas du tout le même monde, mais bon, c'est un prérequis).Hello midorijin, j'ai fait cette mission hier soir et pour moi les piliers étaient bien présents, étoile récupéré sans soucis. (Version switch "Atlas" en NSP ). A+Malheureusement, il y a certains bugs sur switch qui empêchent d'obtenir certaines étoiles comme par exemple la mission "https://www.mariowik...g_for_Red_Coins ou les piliers n'apparaissent pas chez moi (...)
Oh purée j'espère qu'ils vont porter Perfect Dark sur switch !Kiiwii a partager ça sur tweeter...
https://github.com/n...ab=repositories