Homebrew Super Mario 64 (1996) Port for DSi

WiiHomebrew+Snes

Member of GBAtemp's shadow district
Member
Joined
May 4, 2016
Messages
641
Trophies
1
Age
39
Location
Floridia
Website
www.lucar.io
XP
2,823
Country
United States
For anyone having trouble with windows compiling, I figured it out.
You're gonna want to delete the msys2 folder in devkitpro and reinstall it from https://www.msys2.org/
I installed it in the same location/name as the old one for good measure. Follow all the steps on that site; for step 7 make sure you use this command:
Code:
pacman -S --needed base-devel mingw-w64-x86_64-toolchain
then hit enter twice until it lets you install.
after that open MSYS MinGW 64-bit from the start menu and continue like normal following the SM64 dsi compiling instructions.

keep in mind if you re-clone sm64 after this that folder moves to (whatever your mysys2 folder is)/home/(username). make sure to move the rom there.

It's a long install, and I don't know how much of it was necessary, but it works. Thanks to u/mightymos306 on reddit and the much more informative PC port readme.
 

Deleted member 323844

Well-Known Member
Member
Joined
Feb 17, 2013
Messages
802
Trophies
1
XP
2,335
Country
Spain
If anyone is wondering: yes, it works fine on Martin Korth's no$gba. I havent tried on melonDS but I guess it should work as well.

Just be sure to use the latest TWiLight Menu++ version with the fixes. Previous version just throw a "size error" no matter if you compile it with or without DLIBFAT.

https://i.imgur.com/I0GWMNA.gif

https://i.imgur.com/ksuhfky.gif
 

enderer

Well-Known Member
Member
Joined
Jul 19, 2015
Messages
382
Trophies
0
Age
34
XP
1,655
Country
United States
i'm stuck here
==== Build Options ====
Version: us
Microcode: f3d_old
Target: sm64.us
Compare ROM: yes
Build Matching: yes
=======================
Building tools...
libc_impl.c:23:10: fatal error: sys/mman.h: No such file or directory
23 | #include <sys/mman.h>
| ^~~~~~~~~~~~
compilation terminated.
make[1]: *** [Makefile:23: libc_impl.o] Error 1
make: *** [Makefile:76: ido5.3_recomp] Error 2
Makefile:192: *** Failed to build tools. Stop.
 

Hydr8gon

Dragon Trainer
OP
Developer
Joined
Dec 15, 2014
Messages
316
Trophies
1
Website
hydr8gon.github.io
XP
2,580
Country
Canada
Hey everyone, sorry I haven't been around today to answer questions and whatnot. A lot of people seem to be having issues compiling the game; I wish I could provide builds, but unfortunately that's not an option (and to anyone who has a build, please don't share it!). Apparently making a Docker container with everything necessary for compilation could make the process easier for people, so I might have someone looking into that. To anyone who's having trouble now, I think the updated readme is missing some dependencies that are required to build the stuff in the tools folder. If you're on Windows using MSYS2, try running "pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-capstone". I'm not on Windows so I haven't tested this myself, but hopefully it should work.

As an aside, I started looking into audio today. Like the graphics, using the PC port's audio implementation isn't really feasable on the DS(i) without tanking performance. I'm hoping to write something that can do audio decoding and mixing directly on the hardware, or at least do it in software on the ARM7 so it doesn't bring down performance on the ARM9. This is proving to be less straightforward than I thought, however, as the audio processing is somewhat entangled with the game code. I don't have anything usable at this point, but I figured I'd give an update in case anyone is interested.
 

Hecatia

Well-Known Member
Member
Joined
Mar 13, 2010
Messages
184
Trophies
1
XP
215
Country
New Zealand
I decided to create a .bps delta patch that patches the US N64 ROM into this port.
I'm not quite sure why more people don't do this, it is quite effective at bypassing the "can't release binaries" problem as a lot of the raw data is pulled from the original ROM by the patch. I can't see any problem with distributing it in this form.

This can be applied to a clean dumped little-endian sm64 ROM that you must supply yourself with a BPS patching tool, like beat or Floating IPS.

If anyone has a problem with this, I will remove it.
 

Attachments

  • sm64us_dsipatch.7z
    3.6 MB · Views: 152
Last edited by Hecatia,

Nexus45

New Member
Newbie
Joined
Nov 12, 2011
Messages
3
Trophies
1
XP
16
Country
France
I decided to create a .bps delta patch that patches the US N64 ROM into this port.
I'm not quite sure why more people don't do this, it is quite effective at bypassing the "can't release binaries" problem as a lot of the raw data is pulled from the original ROM by the patch. I can't see any problem with distributing it in this form.

This can be applied to a clean dumped little-endian sm64 ROM that you must supply yourself with a BPS patching tool, like beat or Floating IPS.

If anyone has a problem with this, I will remove it.

Works like a charm!
 
  • Like
Reactions: banjo2

Hydr8gon

Dragon Trainer
OP
Developer
Joined
Dec 15, 2014
Messages
316
Trophies
1
Website
hydr8gon.github.io
XP
2,580
Country
Canada
I decided to create a .bps delta patch that patches the US N64 ROM into this port.
I'm not quite sure why more people don't do this, it is quite effective at bypassing the "can't release binaries" problem as a lot of the raw data is pulled from the original ROM by the patch. I can't see any problem with distributing it in this form.

This can be applied to a clean dumped little-endian sm64 ROM that you must supply yourself with a BPS patching tool, like beat or Floating IPS.

If anyone has a problem with this, I will remove it.
Interesting, how did you make this? If it really doesn't contain any of the files that need to be dumped from a ROM, I suppose it should be safe. It could be a great way to simplify the build process for users, but I'm admittedly wary of it unless I know how it works and can be certain it's clean :unsure:
 

RocketRobz

Stylish TWiLight Hero
Developer
Joined
Oct 1, 2010
Messages
16,674
Trophies
3
Age
25
XP
21,204
Country
United States
Interesting, how did you make this? If it really doesn't contain any of the files that need to be dumped from a ROM, I suppose it should be safe. It could be a great way to simplify the build process for users, but I'm admittedly wary of it unless I know how it works and can be certain it's clean :unsure:
I created an xdelta patch, and is 6.51MB, compared to the BPS file, which is 4.40MB, so I assume it's safe.
 

Hecatia

Well-Known Member
Member
Joined
Mar 13, 2010
Messages
184
Trophies
1
XP
215
Country
New Zealand
I used Floating IPS (build) to create the patch, a tool normally used for ROM hacking.

I believe this works as long as the created patch is a "honest patch", meaning data from the original ROM is used by the patch and the patch file itself is unusable without it. A hypothetical "dishonest patch" on the other hand would match no data with the original ROM and the patch file would contain the entire game. Luckily this is not the case here and the patch does indeed depend on data from the original ROM. (this is why it is important to use the little-endian ROM as input for the patch so data can be matched)

So the question would be is there really any technical difference between a patch that lets you play as Luigi or one that changes the game to execute on a completely different system and architecture, I'd say no.
 
Joined
Feb 16, 2021
Messages
4
Trophies
0
Age
23
XP
54
Country
United States
Hm. I tried to compile from source on Debian, and after a while the compiler compiled that a "capstone.h" header file was missing. Looking through the repo I don't see a"capstone.h". I have the dependencies and dev-nds installed

I decided to create a .bps delta patch that patches the US N64 ROM into this port.
I'm not quite sure why more people don't do this, it is quite effective at bypassing the "can't release binaries" problem as a lot of the raw data is pulled from the original ROM by the patch. I can't see any problem with distributing it in this form.

This can be applied to a clean dumped little-endian sm64 ROM that you must supply yourself with a BPS patching tool, like beat or .

If anyone has a problem with this, I will remove it.

So I tried the patch MasterLaser so generously made for noobs like myself. I got the same checksum as the described in the README, but when running the *.nds from unlaunch, there's only a white screen? Am I missing something?
 
  • Like
Reactions: battlecatsahead

smf

Well-Known Member
Member
Joined
Feb 23, 2009
Messages
6,658
Trophies
2
XP
5,923
Country
United Kingdom
So the question would be is there really any technical difference between a patch that lets you play as Luigi or one that changes the game to execute on a completely different system and architecture, I'd say no.

It's legally messy. Both are unauthorised derivative works. In the US you have the interoperability fair use exemption.

I don't think it's clear enough that even Nintendo's lawyers would know whether it was illegal or not & I don't know what a court would make of it.
 
  • Like
Reactions: battlecatsahead

RocketRobz

Stylish TWiLight Hero
Developer
Joined
Oct 1, 2010
Messages
16,674
Trophies
3
Age
25
XP
21,204
Country
United States
This was a DSi that was put in storage for a while after being hacked with Unlaunch and TWLMenu++.

Unlaunch is version 1.8
TWLMenu++ is version 16.1.0
Unlaunch can be installed by simply launching the latest installer, and selecting "Install now".
TWLMenu++ can be updated by following one of the update links in the latest version's page.
 

Hydr8gon

Dragon Trainer
OP
Developer
Joined
Dec 15, 2014
Messages
316
Trophies
1
Website
hydr8gon.github.io
XP
2,580
Country
Canada
So, I couldn't get anything else to work, but the Docker instructions now on the main page worked out very well for me, as far as I could tell :yaynds:
Awesome, glad to hear the new instructions work!

Hm. I tried to compile from source on Debian, and after a while the compiler compiled that a "capstone.h" header file was missing. Looking through the repo I don't see a"capstone.h". I have the dependencies and dev-nds installed
Capstone is a separate dependency, although it shouldn't be needed with the most recent commit. If you're still having trouble, try installing it with "sudo apt install libcapstone-dev".
 
  • Like
Reactions: banjo2
Joined
Feb 16, 2021
Messages
4
Trophies
0
Age
23
XP
54
Country
United States
Unlaunch can be installed by simply launching the latest installer, and selecting "Install now".
TWLMenu++ can be updated by following one of the update links in the latest version's page.

Yep! That was it. I'm kicking myself now because I really should have thought of that before. Thanks Robz8!

Awesome, glad to hear the new instructions work!


Capstone is a separate dependency, although it shouldn't be needed with the most recent commit. If you're still having trouble, try installing it with "sudo apt install libcapstone-dev".

Nobody mentioned it earlier, but is this build without sound? The build I have doesn't have sound. I saw a video someone linked earlier and they didn't have sound either.
 
  • Like
Reactions: banjo2

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Psionic Roshambo @ Psionic Roshambo: Ohh I could cause soooo many problems with this. Lol