[HN Gopher] Incredibly Ambitious SMB 3 Hack Released After 12 Years
___________________________________________________________________
Incredibly Ambitious SMB 3 Hack Released After 12 Years
Author : CM30
Score : 100 points
Date : 2024-09-22 11:20 UTC (11 hours ago)
(HTM) web link (marioadventure3.com)
(TXT) w3m dump (marioadventure3.com)
| umvi wrote:
| Looks great. In the same vein I also enjoyed the rom hack "Super
| Mario Bros. 3mix". One of the worlds is space themed and features
| Mario Galaxy style gravity hijinks.
|
| https://www.romhacking.net/hacks/2068/
| CM30 wrote:
| Oh yeah I remember 3Mix. It's got some incredibly interesting
| mechanics and world themes, and it felt like a huge step
| forward for the Mario 3 hacking scene.
|
| I also interviewed its developer at one point too:
|
| https://gamingreinvented.com/interview/lets-interview-super-...
|
| (also did the same for the creator of the hack mentioned in
| this post too)
| a2tech wrote:
| This is super Mario bros 3, not server messaging block v3 if you
| were as confused as me
| CM30 wrote:
| I genuinely did not know that the acronym had another use,
| apologies. Apparently Wikipedia thinks it can refers to Server
| Messaging Block, Super Mario Bros 3 or Super Mega Baseball 3:
|
| https://en.wikipedia.org/wiki/SMB3
| Sakos wrote:
| Really glad to see Super Mega Baseball 3 is getting the
| recognition it deserves.
| nyanpasu64 wrote:
| BRB going back in time and drugging Sega into making Super
| Monkey Ball 3 instead of whatever they were thinking with
| Adventure...
| snapplebobapple wrote:
| Thanks for making my heart skip a few beats thinking I was going
| to have a butt load of mitigation work to do for my cifs shares
| at the office starting immediately and ruining the last day of my
| weekend....
| logifail wrote:
| google.com/search?q=smb+3 agrees - SMB 3 is the network file
| sharing protocol
| artie_effim wrote:
| same - I was like "Oh GAWD, what now...."
| snapplebobapple wrote:
| On the bright side, our hearts passed the stress test.
| userbinator wrote:
| I hope you don't have shares exposed to the Internet.
| x3n0ph3n3 wrote:
| Seriously. Change the damn title.
| ok123456 wrote:
| Better archive this before Nintendo DMCAs it.
| lbourdages wrote:
| Mario rom hacks are perfectly legal since the only thing that
| gets distributed is a patch file - the original ROM has to be
| provided by the user.
|
| Sites like SMW Central[1] contain thousands of hacks and
| Nintendo hasn't done anything about it.
|
| [1] https://www.smwcentral.net/
| black_puppydog wrote:
| Then I guess we better archive that entire site before
| someone new in middle management decides to make a name for
| themselves by killing it.
| loeg wrote:
| IP holders (or their representatives) don't always let
| legality get in the way of issuing DMCA notices for content
| they don't like.
| drdaeman wrote:
| In a sane world, it should be as easy as sending them a
| counter-notice and if they decide to escalate, sending a
| cardboard cutout of yourself to the court with a printed
| "no copyrighted materials (except for some screenshots,
| which is fair use for illustrative purposes) exist on the
| website" sign to win the case.
|
| We are not living in the sane world, of course.
| lbourdages wrote:
| Nintendo has shut down a bunch of fan games in the past
| (e.g. Pokemon Uranium) but I have never heard of any DMCA
| request on Mario rom hacks. I think it speaks for itself
| here.
| Dwedit wrote:
| The patch file will create 95% of a working ROM when applied
| to a blank file, but not enough to actually create a working
| ROM. Some important bytes are missing.
|
| Some ROM hack patches WILL create a complete working ROM when
| applied to a blank file. I don't think those can even be
| called patches anymore.
| wongarsu wrote:
| Is there an agreed part everyone leaves out, or can you
| just apply one patch to another patch to get a complete
| ROM?
| smegsicle wrote:
| theseus's copyright infringement
| derefr wrote:
| These patch files are _supposed_ to be diffs between the
| final version of the ROM after your modifications,
| against the original upstream ROM you started with.
| Ideally, they 're only _supposed_ to contain the code and
| assets you upserted into the game yourself.
|
| And if you don't move anything around, then that's all
| they _will_ contain.
|
| But if you _do_ start moving things around -- sliding
| sections of code or data forward in memory and fixing up
| references to them so as to make more room for new stuff
| -- then you run into the problem, at release time, that
| an .IPS file is literal _binary bytewise_ diff. So, by
| moving a section forward by one byte, the .IPS file will
| now contain a complete copy of that section, in order to
| overwrite [SECT_START+1:SECT_START+N+1] with
| [SECT_START:SECT_START+N].
|
| What is needed, to avoid this, is an alternative patch
| format, that doesn't just blindly say "overwrite [X:Y]
| with [binary]" but rather says something like (a binary
| encoding of) the following "data-unpacking command
| language" (here as pseudo-Elixir code):
| expected_output(size: 1000, sha256:
| <<0x012345...abcdef>>)
| require_external_data_source(id: :upstream, size: 1000,
| sha256: <<0x6789ab...beefee>>, description: "Super Mario
| World (U) v1.0 SFC ROM image")
| embed_data_source(id: :patch, size: 100, sha256:
| <<0x777777...cafefe>>) write_at(offset: 0,
| constant_u8(<<0x00>>, repeat: 100))
| write_at(offset: 100, embedded_data_slice(:patch, offset:
| 0, len: 100)) # some patch data write_at(offset:
| 200, external_data_slice(:upstream, offset: 0, len: 400))
| # then some source data write_at(offset: 204,
| constant_u32(<<0xaabbccdd>>, repeat: 1)) # fixup one
| little bit of the copied source data
| embed_data(:patch, compression: :deflate, data: <<...>>)
|
| ...where the patcher tool would ask you for "Super Mario
| World (U) v1.0 SFC ROM image"; check that the file you
| provide matches the given SHA; allocate a 1000-byte
| output buffer; run through the write ops against the
| output buffer; validate that the output buffer now
| matches the given SHA; and then write out the output (or
| pass the pointer to the buffer back to the caller, if
| being used as a library.)
|
| I'm not sure why no patchfile format with these semantics
| exists. It'd be relatively straightforward to write a
| library that computed such patch-op sequences from one or
| more infiles + one outfile, using (essentially) LZ77 to
| discover shifted partially-overwritten repeats, and
| gradient-descent optimization over alternative equivalent
| formulations to find minimal such descriptions.
|
| ---
|
| Alternately, though, maybe we just shouldn't be making
| _arbitrary low-level byte-delta patches_ to _opaque ROM
| images_ in the first place!
|
| IMHO we're at a point now with understanding the entire
| libraries of most of these old systems, that we could
| very well write a single program for each console that:
|
| 1. disassembles a source ROM into sections (individual
| assets, plus position-independent-code -ified assembly);
|
| 2. patches the _text_ sections with git-commit-like
| textual diff hunks over the PIC ASM (where the tool could
| very well extract these from a git worktree!);
|
| 3. replaces _assets_ wholesale with new per-asset
| binaries (that can be different sizes, or with different
| numbers in lists, or with individual assets in different
| formats -- in which cases, the code that loads them will
| be automatically modified to compensate);
|
| 4. and then reassembles the ROM, computing all the fixups
| in the process.
|
| Given the current state of whole-library game
| preservation (we've had GoodTools for a good 20 years
| now); and given the experience that game modders now have
| with building "perfect" build pipelines for game
| decompilation projects, that build the original ROM
| image... we _should_ (IMHO) be able to set up these
| "high-level patchers" in such a way as to _guarantee_
| that each tool works on 100% of known titles, to
| losslessly reproduce the input ROM after a disasm+reasm
| pass.
| acureau wrote:
| I'd wondered why the patches could contain unmodified
| game code, thanks for the explanation. I know a decent
| chunk of the ROM hacking community has moved to UPS
| patches but it seems that was done for efficiency and
| overcoming size limitations. According to this guy,
| xdelta does what you describe.
|
| https://www.reddit.com/r/Roms/comments/wj29mf/comment/ijh
| rak...
| derefr wrote:
| Neat! I'd never heard of xdelta or BPS. Which is weird;
| you'd think that any large host in the ecosystem
| (ROMHacking.net, SMWCentral, etc) would force all posters
| to switch over to these formats, just to ensure that no
| copyrighted material is making it onto their servers.
| lbourdages wrote:
| I would assume that the less vanilla a given hack is, the
| likelier it is that the patch is actually a full fledged
| ROM. If all of the code, textures and music have been
| replaced, there isn't anything left.
| zamadatix wrote:
| Adding on with a wall of text diving into the specific
| differences in projects that either have or haven't attracted
| Nintendo's legal attention (tl;dr: it's a lot more than just
| visibility/popularity).
|
| While it's always possible Nintendo will just decide to go
| after these one day (right or wrong in doing so) that they
| didn't even attempt to touch this particular type of Mario
| romhacking scene when Mario Maker came out ~10 years ago
| makes me think these particular types of projects (patchsets
| on old games without copyright protection) won't receive much
| trouble. Doubly so for these types of projects which don't
| (in and of themselves) make the game playable on unofficial
| systems.
|
| Nintendo seems largely focused on direct redistribution, non-
| patchset based remakes, "cracking" of modern game
| DRM/security to allow modification/unauthorized playing, and
| distribution of gameplay content on media which have stricter
| takedown requirements than the law strictly requires (e.g.
| YouTube). This makes some sense as Nintendo has either
| previously demonstrated these types of cases in court or has
| previously signalled they believe they could easily do so if
| challenged.
|
| While Nintendo, right or wrong in a specific instance, could
| definitely get away with a decent amount of "legal bullying"
| of individuals not interested in fighting a legal battle with
| a large company over their hobby website they aren't
| necessarily going to be interested in picking tons of such
| battles if they aren't relatively sure they'd win should one
| actually result in a real court battle. Setting precedent in
| court that something is explicitly okay (like 3rd party
| games, emulation, personal game backups) can sometimes be
| worse than just letting it ride as an "underground" thing.
| Particularly if they are defending their property elsewhere
| and it'd be hard for someone to argue in court these romhacks
| existing is counter to that.
|
| Anyways, this wall of text is to say: sure, nobody knows what
| Nintendo is going to do tomorrow, but 20 years of romhacks
| later they've never hinted at going after this particular
| type of project, despite going after many nearly identical
| but slightly differently implemented projects, so the same
| "get it before Nintendo DMCAs it" comment that one would
| expect from those threads doesn't necessarily hold the same
| weight. Not that it's an absolute possibility, anything is
| possible, but if this type of project were the only one then
| people wouldn't have the "it'll be DMCA'd by tomorrow"
| notion.
|
| But do back it up anyways... a great deal many more early
| efforts have been lost to the sands of time than Nintendo's
| lawyers.
| Y_Y wrote:
| Are you sure it's not a derivative work?
|
| https://www.copyright.gov/circs/circ14.pdf
| CM30 wrote:
| Eh, 99.9% of fan projects are left alone. The worries about
| takedowns are seriously overblown alone, even for the likes of
| Nintendo properties like Mario, Zelda and Pokemon.
|
| There have been projects and sites for those games online for
| over a decade without any issue, and ones played by hundreds of
| YouTubers that didn't have anything happen to them.
| stelonix wrote:
| Used to hang in the same irc room as the author. The asm hacks
| were impressive at the time. It's crazy it's been 20 years
| webdevladder wrote:
| This looks incredibly well-designed and documented, can't wait to
| watch some speed runs!
| kristopolous wrote:
| I might just not be seeing it but is there any video with the
| gameplay to watch?
| CM30 wrote:
| Most I can find is the trailer for the demo:
|
| https://www.youtube.com/watch?v=VN1ORLvuamI
|
| Unfortunately, the author seems to market their work on
| Facebook more than anywhere else, without much of a YouTube
| presence or what not.
| Medox wrote:
| She does have multiple videos on that channel [1] tough,
| including development videos [2].
|
| [1] https://www.youtube.com/@DahrkDaiz/videos
|
| [2] https://www.youtube.com/watch?v=Pb7HQ6jSCf0
___________________________________________________________________
(page generated 2024-09-22 23:01 UTC)