Homebrew Question Mario 64 port?

Joined
Dec 1, 2019
Messages
306
Trophies
1
Location
My House
XP
1,207
Country
United States
Just like my thoughts.

Maybe someone (like @blawar) trying to disguise as an Atlas team. Maybe to defame them.

And maybe there's a hidden brick timebomb in this .NSP, for example: it's a normal game for now, but on 15th May or someday it'll brick your console and erase PRODINFO, or even mess the voltage / HW calibration and ooops.
No one would risk their hobby by releasing brickware when they have software that is being used by thousands of people. The use of the atlas name is at worst a veil of anonimity to prevent ninty from getting them. Again, calling this malware is the same as calling the pc version malware.
 

Goku1992A

Well-Known Member
Member
Joined
Nov 20, 2019
Messages
1,823
Trophies
1
Age
33
XP
2,612
Country
United States
I hate to sound like a Jerk but isn;t the port overrated when you can play OG Mario 64 via retro arch? Or the NDS port via Melon DS? I wonder why bother

I wonder if we would get some real gamecube/wii support instead of resorting to Lakka or Switchroot
 
Last edited by Goku1992A,
  • Like
Reactions: bad361
Joined
Dec 1, 2019
Messages
306
Trophies
1
Location
My House
XP
1,207
Country
United States
I hate to sound like a Jerk but isn;t the port overrated when you can play OG Mario 64 via retro arch? Or the NDS port via Melon DS? I wonder why bother

I wonder if we would get some real gamecube/wii support instead of resorting to Lakka or Switchroot
Melonds runs pretty poorly in my experience. We get full hd and 16:9 with the port
 
  • Like
Reactions: Broduskii

regnad

Button Masher
Member
Joined
May 19, 2008
Messages
2,514
Trophies
1
Age
53
XP
3,672
Country
Japan
The PC version doesn't have Shindou Edition rumble pak support, does it?

I'd love to see that at some point. For the time being I'd prefer playing Shindou Edition on RA.
 

spotanjo3

Well-Known Member
Member
Joined
Nov 6, 2002
Messages
11,145
Trophies
3
XP
6,204
Country
United States
its not gone everywhere, its actually incredibly easy to get the switch version lol, id say what to google, but i dont think that will be good for my accounts health
super mario 64 quest edition when bois, that would be insane

Yeah, I should have say that it is still there but it will disappear slowly, thought. Get it if you can but I dont need it. I finished it with my actually N64 console a long time ago!
 
  • Like
Reactions: SexiestManAlive

phonemonkey

Well-Known Member
Member
Joined
Apr 27, 2020
Messages
194
Trophies
0
XP
1,196
Country
New Zealand
  • Like
Reactions: octopus

octopus

Custom Title
Member
Joined
Sep 6, 2013
Messages
439
Trophies
1
Location
/
XP
1,930
Country
Somalia
Thanks for the link. I've just compiled my first nro and it works great.

Extra links if anyone wants a read:
https://mkwii.com/showthread.php?tid=1200
https://devkitpro.org/wiki/Getting_Started#Unix-like_platforms

I wasted half a day trying to build it on Win. The Win version didn't take so long, but it just wouldn't compile for Switch. Oh man what didn't I try. Reinstalled msys, combed my PATH, edited files... Even tried WSL.

Saw your post and it inspired me to try it on Arch. Built flawlessly with no tinkering whatsoever.
 
Last edited by octopus,
  • Like
Reactions: phonemonkey

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,798
Trophies
3
XP
28,311
Country
United Kingdom
What’s the process for decompiling?

Complicated and varies by language, processor used and a few other things.

Generally though
Most people vaguely involved in hacking, cheat making or whatever will have heard of disassembly.
Here this is where the binary code as it would be run on the CPU is taken and fired through a program to turn that into the human readable form of the operations (instructions in computer parlance) that the CPU does, maybe with a couple of concessions for obvious things. The disassembly turning the binary into assembly code, assembly being a (CPU and in many ways system and even OS specific) means of programming a computer.

However assembly is very hard/tedious to use so we have higher level languages to abstract some of the complexity away, make it easier to convert between systems and also more secure a bit later down the line (very hard to do the ASLR thing that is bothering Switch cheat makers when you code in assembly, not to mention if you are concerned with every little thing then security can slip away from you). Bonus is this was historically considered essentially one way for reasons we will cover shortly.
Indeed one of the big draws of the PS1 and N64 were the abilities to program in C (thousands of new kids taught per year) rather than assembly (only highly paid nerds and greybeards by this point in history, today it is even worse, and generally even then horrendous to work with, port around to other systems and debug) or Basic (slow as sin).

What each of these languages brings to the table and makes more complicated for decompilation efforts varies. Traditionally it got broken down into low level languages and runtime based languages (think Java, Python, Perl and the like where you essentially have a script that a program runs) and you can then decompile that more easily, though lines got blurry and get blurry even within runtime based stuff.

Back to assembly though. In the fundamental basics of computing/programming (which, as with a lot of things, we get to largely credit one Alan Turing) there is something known as the halting problem. The general idea is a program will eventually make a choice of what to do, even an utterly basic conversion program will probably have something here. See loops in any intro to programming course ( https://www.tutorialspoint.com/cprogramming/c_loops.htm ) for the overview of that one, though for the sake of debate we can consider the IF ELSE, which is to say IF this happens do that ELSE do something other, and quite often such things run IF IF IF IF IF IF... IF ELSE and might well exist within another loop, or have the computer have options to break out of it on its own terms and do something else (see interrupts).
When pulling apart the program by itself with just the binary you have no idea what the state is supposed to be as the program is not running to generate the state to compare things against (it is why we had dynamic recompilation emulators back... prior to that first N64 emulator in a technical sense but that was probably the big introduction to the world but general decompilation has taken until now really and still has major caveats and will probably only work for straight C for a while yet with C++ being a ways out).
Decompilers, or the people making them, however realise that most of the time one particular branch in the path of the code is usually taken so don't have to keep tabs on potentially thousands of possibilities expanding as the program goes on.
They can also note that certain constructions within assembly are the result of standard libraries (programming is all about reusing stuff already done rather than having to do it yourself) or common programming approaches (there are limited ways to do anything, certainly limited ways to sensibly do anything when you have limited computational resources), which is something the dynamic recompiler also makes use of.
It is quite possible to scan a program if you can get it into plain form (no compression, no encryption, possibly optimise things or indeed deoptimise things) to find where all the particular subroutines lie, name them something and watch how the main program builds things up.
If you have some nice debug options left over, or some leaks from other parts of the program for function names or something that can also help (Diablo also saw similar treatment as a basis of this -- https://www.gamasutra.com/view/news...red_Diablo_source_code_released_on_GitHub.php and video).
Can also help to run the program a few times to generate info -- ROM hackers have done lesser versions of this for years (FCEUX for the NES has a nice feature, https://tasvideos.github.io/fceux/web/help/fceux.html?TraceLogger.html , where you do everything but what you want, and then what you want, and the different things that had not happened before are what it says you might want to look at this. GBA hackers will often run things, note all calls to the ROM from compression functions in the BIOS and thus have a short list of places to look for good stuff and what it is supposed to be once you get there on the compression side of things, indeed compression tools may even be able to accept these logs).
With one or more of those you can then start to abstract the basics away back into the functional (maybe even actual) equivalent of the language it came from (or was translated into in some cases) and be left with fewer things to have to manually understand, and an easier job with the high level stuff.
It should also be noted that inline assembly is a thing -- C is great and all but occasionally you do need to get down and dirty with the CPU. To do this a dev might drop into some assembly for a little bit to make it as tight (or as complicated if they are trying to prevent hackers -- see deobfuscation by optimisation for a somewhat related concept, and another thing to feed into your decompilation tools) as they need it to be. With no C or whatever to back into then this can frustrate decompilation efforts. Today this is not so commonly seen (Microsoft for their stuff yanked it in favour of something called compiler intrinsics a while back, and as mentioned certain types of security don't play well with it) but back in the day it was common for a lot of things.
It gets an awful lot more complicated as you can then start to get into really fun areas of maths, probability, practical computation, compiler theory (I barely even scratched the surface of that one) and computation in general to hone this method down, to say nothing of it helping if you are already a competent programmer in the language and possibly device in question (and maybe history of it all -- compilers today are a lot better than they were back then, and that also makes things harder if you only have things compiled on new compilers where the optimise things a lot more).

To that end not a magic bullet, the resulting code has serious legal concerns (I can see some arguments in favour of, such as interoperability, that might hold up, however it is quite literally the opposite of independent recreation or clean room reverse engineering. Though at the same time outside of Nintendo sending in a lawyer to do the equivalent of this they can't use the code either), only works for a limited set of cases (so mostly C or scripting languages, and C# for reasons I am not going to get into here. Most games from the PS2 on up being C++ or worse. Most things older than the PS1 and N64 being assembly other than the PC which might well have been C for a while -- 1978 was the first and by 1989/1990 it was more or less dominant for most things), probably has to be trained on a given system (fortunately most things people care about are for X86 Windows and there are only half a dozen popular compilers with only a few major versions each, though this is not consoles of the mostly still programmed in C era) and still requires some fairly expert abilities to pick through once you start making headway (you probably don't have comments, design docs, or nice names for things to give a hint as to their function).

Edit. Probably should have noted some actual decompilers and projects. People do take all that and put it into programs for people to use. The people behind the famous IDA disassembly/debug/reverse engineering tool you likely see in almost any hacker talk using assembly have a version of one for a few processor types https://www.hex-rays.com/products/decompiler/
A few universities and PHD students also have some good stuff there (it really is cutting edge stuff). Not sure what we have in the open source world of particularly notable quality though https://rada.re/n/radare2.html has some stuff and https://www.nsa.gov/resources/everyone/ghidra/ also is worth mentioning in this.
 
Last edited by FAST6191,

specht

Well-Known Member
Member
Joined
Oct 26, 2008
Messages
234
Trophies
1
XP
917
Country
Canada
I hate to sound like a Jerk but isn;t the port overrated when you can play OG Mario 64 via retro arch? Or the NDS port via Melon DS? I wonder why bother

I wonder if we would get some real gamecube/wii support instead of resorting to Lakka or Switchroot

Removing the overhead of an emulator is always a good thing. I haven't tested to know for sure but I'd assume battery life would be improved playing this version over Mupen. That, and I've never been able to get the widescreen and 60 fps patches to work in Mupen (not the emulator option, but the patch that makes the HUD correctly display on the corners of the screen), the game just doesn't accept input with it for some reason.

And with the source being available in C I'd think it'd open up more potential for mods outside of the asm hacking scene.
 

Reecey

Mario 64 (favorite game of all time)
Member
Joined
Mar 7, 2010
Messages
5,864
Trophies
2
Location
At Home :)
XP
4,449
Country
Does anyone have a link for the switch version?
Grab it off jits shop. Or if not google xci switch and click on the first site that comes up.

I think it’s great SM64 has been done but what would be even better is Banjo Kazooie & Tooie being done also Conkers
 
Last edited by Reecey,

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    K3Nv2 @ K3Nv2: It's mostly the ones that are just pictures and no instructions at all