[HN Gopher] RyujinX - Open Source Nintendo Switch Emulator
       ___________________________________________________________________
        
       RyujinX - Open Source Nintendo Switch Emulator
        
       Author : robertwt7
       Score  : 503 points
       Date   : 2023-08-31 04:33 UTC (18 hours ago)
        
 (HTM) web link (ryujinx.org)
 (TXT) w3m dump (ryujinx.org)
        
       | [deleted]
        
         | [deleted]
        
       | hardware2win wrote:
       | Ryujinx is one of the most impressive C# projects that Ive seen
       | 
       | The other is Roslyn
        
       | gigatexal wrote:
       | Absolutely stellar work, thank you for this!
        
       | monkeydust wrote:
       | I just found out about miyoo recently and brought a miyoo plus.
       | Great product / form factor.
        
       | cosmojg wrote:
       | Having tried both, I prefer Yuzu for playing Tears of the
       | Kingdom: https://yuzu-emu.org/
       | 
       | Both are great, though, and the rapid speed of development on
       | both projects means that whatever impressions I formed earlier
       | this year are likely already out of date!
        
         | psychphysic wrote:
         | Yuzu also has an android build although I believe it runs only
         | on snapdragon devices.
         | 
         | https://yuzu-emu.org/entry/yuzu-android/
         | 
         | On desktop at least it has an early access programme via
         | patreon (but available here https://pineappleea.github.io/ )
         | 
         | Skyline runs on Android but I've never managed to get it to
         | work on any device. It's no longer in development
         | 
         | https://skyline-emu.one/
        
           | esperent wrote:
           | If you have anything less than a flag ship from the last year
           | or so, don't expect to be playing Zelda on your phone anytime
           | soon though. Even then I heard people saying their phones
           | were getting very hot.
           | 
           | Source: researching this about 3 months ago to see if I could
           | play BotW on my S21 FE. I can't.
        
           | radiKal07 wrote:
           | Yes, for Yuzu you need a Snapdragon SoC otherwise the games
           | crash instantly. If you have a Mali GPU you have to wait
           | until they add support for it. Skyline supports Mali but
           | performance is reduced. Btw Skyline ceased development, some
           | of the devs forked it and will continue development on Strato
           | (https://strato-emu.com). If you guys use Android handhelds I
           | recommend using Beacon Game Launcher (https://play.google.com
           | /store/apps/details?id=com.radikal.ga...)
        
         | spectrumone wrote:
         | any reason why you prefer it over Ryujin? I'm on the opposite
         | side; I remember the setup with Ryujin is much faster if you
         | have a fairly recent rig.
        
           | SirMaster wrote:
           | It just performs better.
           | 
           | Also Yuzu has asynchronous gpu shader building which means
           | you don't need to find and download a pre-built shader cache
           | for a game for it to run smooth. Yuzu can build itself a
           | shader cache while playing and it doesn't cause the game to
           | stutter and hitch like crazy.
           | 
           | Yuzu just seems to me to be the technically superior option
           | at this time.
        
           | aeyes wrote:
           | I get much better framerate on Yuzu, it's almost locked at
           | 60fps - on Ryujin I only get 20-30fps with some lag here and
           | there.
        
         | jacek wrote:
         | I tried Yuzu too and was very impressed. Some useful
         | instructions on how to use it:
         | https://github.com/Abd-007/Switch-Emulators-Guide/blob/main/...
        
         | [deleted]
        
       | seabrookmx wrote:
       | I wouldn't have guessed C# would be a good fit for something like
       | this, but neat to see!
        
         | deaddodo wrote:
         | C# is a common choice for emulators, actually.
         | 
         | It probably goes C/C++ (it's really hard to disambiguate the
         | two, in this case; few codebases are pure either way) then Rust
         | (for hobby emulators, it's probably third or fourth for serious
         | efforts), C# and Java.
         | 
         | JavaScript and Python are very common for hobby efforts, but
         | generally exceptions for serious codebases (excepting WASM).
        
         | hx8 wrote:
         | BizHawk is a premier emulator for generating Tool Assisted
         | Speedruns and written in C#.
         | 
         | https://github.com/TASEmulators/BizHawk
        
           | minimaul wrote:
           | BizHawk is basically a wrapper for other emulators, though.
           | Essentially a fancy frontend.
        
         | lnxg33k1 wrote:
         | Oh, in terms of emulators written in C#, never heard of
         | Run[1]UO[2]? C# revolutionized the UO world back like 20 years
         | ago(?) it has(d?) the right balance between simplicity, clarity
         | and performance
         | 
         | [1] https://www.runuo.net/
         | 
         | [2] https://github.com/ClassicUO/ClassicUO
         | 
         | Shit shouldn't have thought about UO, now I am sad :'( (and
         | old)
        
           | wiz21c wrote:
           | In the future there's fire, in the past there is gold :-)
        
           | mentos wrote:
           | RunUO is what turned me from a player into a programmer. I
           | believe there's still a forum comment out there from 2001
           | where I was asking about the mess of squiggly brackets {} and
           | if this is really how programming is done. It's a really fun
           | reminder of what that first exposure to programming felt
           | like.
           | 
           | I'll never forget how magical it was to make my first edits
           | to the code and see it reflected in the game. Created a
           | feedback loop that has continued to reward me over 20 years
           | later. :)
        
             | lnxg33k1 wrote:
             | Yeah what did that for me was mIRC scripts, kinda miss
             | every now and then the feeling ^^
        
         | lbussell wrote:
         | I believe Ryujinx actually translates the ARM code to .NET IL,
         | which is then JIT compiled to machine code by .NET. As far as I
         | know it's a pretty innovative approach to emulation!
         | 
         | And on Apple Silicon, it just runs the Switch's Arm64v8
         | instructions natively using a hypervisor! [1]
         | 
         | [1] https://blog.ryujinx.org/the-impossible-port-macos/
        
           | averne_ wrote:
           | This isn't true anymore. It was their first approach, but
           | since then they have switched to their own JIT recompiler.
           | You can read their rationale here:
           | https://github.com/Ryujinx/Ryujinx/pull/693
           | 
           | For the MacOS port, they also added an ARM-to-ARM JIT in case
           | hypervisor runs into issues.
        
             | whizzter wrote:
             | I think that first approach (Part of the name RyujinX from
             | RyuJIT?) while not optimal did get them off the ground
             | quickly, now with a bit of traction (people into the
             | project since it actually functions) they can could easily
             | find takers(or the time) to write the improved JIT.
             | 
             | I'm actually tinkering on a WASM runtime and emitting MSIL
             | code from WASM trees is quite straightforward so far (tho
             | running into some more complicated cases now that I'm
             | integrating the test-suite), compared to the non-trivial
             | (code stamping) pure native JIT's I've done in the past
             | it's quite a big timesaver (and those still only did target
             | one CPU platform).
        
             | steelframe wrote:
             | > they have switched to their own JIT recompiler ... they
             | also added an ARM-to-ARM JIT in case hypervisor runs into
             | issues
             | 
             | Having worked in industry for some multiple of decades, I
             | can say with some confidence that if a small team were to
             | successfully build and deploy their own JIT recompiler to
             | solve an actual customer problem, they would be considered
             | gods by management and given bonuses and promotions.
             | Realistically the project would never get off the ground
             | because their management would be pressuring them to hurry
             | up and add some random new API within the next quarter.
             | Most devs just looking at the existing code and are more or
             | less doing a copy-and-paste with some minor tweaks for
             | their new "feature." They're trying to slap together quick
             | demos that are little more than, "And now this thing makes
             | an RPC call to that thing." The level of performance I see
             | from people who pull down well into 6 figures of income
             | typically falls well below the level that I'm seeing in
             | this Switch emulator project.
             | 
             | Usually for something like that to actually happen it takes
             | a VP mobilizing an org of size 20+, with multiple layers of
             | management taking a year or more to hire or steal talent
             | from other orgs. Some companies are built differently
             | (i.e., Apple) and can pull cross-org talent together for
             | something like "get Intel binaries running pretty well on
             | M1." But I find that tends to be the exception rather than
             | the norm for larger tech companies.
             | 
             | Maybe I'm just working in the wrong places.
        
               | IggleSniggle wrote:
               | That's the difference between people working for a
               | paycheck and people working for a passion project. Even
               | if 90% of the people working at a company are doing it
               | for the passion and not the paycheck, they still have to
               | contend with the other 10% who do not have the passion
               | (but may be good at hiding this fact).
               | 
               | With a passion project, you start and stop whenever you
               | want, and if you're not interested, you're not working on
               | it anymore. So only the people who are truly
               | intrinsically motivated will continue.
               | 
               | A paycheck is a form of compulsion. "You could be do
               | anything, but you're doing this for me specifically
               | because I pay you." You might also be very interested,
               | but it's the only thing that specifically binds you to
               | the company vs bound to the work itself.
        
           | josephg wrote:
           | I wonder if wasm would be another good target for this sort
           | of thing in the future.
        
         | meibo wrote:
         | C#, especially with in recent releases, has really been turning
         | into somewhat of a systems programming language.
         | 
         | They keep adding tools that allow for very low-level memory
         | management/manipulation and the ability to run on so many
         | platforms/generate native code makes it very attractive. It's
         | also just fun to write.
        
       | vladgiverts wrote:
       | Been using this on my Macbook Pro M1 to play Breath of the Wild
       | and Mario Kart using XBox controllers. My kids and I love it.
        
         | whiskeytuesday wrote:
         | Allegedly
        
           | lnxg33k1 wrote:
           | It's just a game where an italian guy runs in a supermarket
           | with a cart, nothing to do with the nintendo one :D
        
             | kmeisthax wrote:
             | Ren Tian Tang haWu Guan Xi  https://commons.wikimedia.org/w
             | iki/File:%E4%BB%BB%E5%A4%A9%E... Unrelated to Nintendo
        
         | beltsazar wrote:
         | What's the average FPS?
        
           | zamadatix wrote:
           | For BOTW specifically you're better off playing on CEMU (Wii
           | U emulator) as it's the exact same game(not a more limited
           | version as one would assume) but significantly faster. TOTK
           | you'll need RyujinX.
           | 
           | Exact numbers are hard to give: native game resolution or
           | native macbook resolution? Docked or undocked? Shaders cached
           | or not? Graphics mods (some of which are
           | efficiency/performance related) or not? Generally though most
           | games run at native size at native speeds once you get
           | everything going. BOTW/TOTK are some of the heavier ones
           | though and, ignoring BOTW as I play that on CEMU, TOTK runs
           | alright as long as you don't push it or expect high FPS mods.
        
           | dacryn wrote:
           | Dont know OP, but I am playing pokemon scarlet on it, m1 max
           | macbook 15, and its pinned at 30fps. Don't know if the game
           | just wants to run at 30fps, or if my macbook can't go any
           | faster. But since its stable at exactly 30, I assume it's the
           | game
        
             | whateveracct wrote:
             | [flagged]
        
             | dodos wrote:
             | From my experience with yuzu and ryujinx, in order to
             | exceed 30fps, most games need to be modded. Almost all
             | popular games have a mod available though.
        
             | aeyes wrote:
             | Most Switch games don't run at 60fps in docked mode because
             | they can't nearly hit the framerate at 1080p. The Switch
             | has dynamic resolution scaling but it still lags.
             | 
             | For this reason many games only run at 60fps in handheld
             | mode.
        
         | leokennis wrote:
         | Great that you're having fun. Consider buying a real Switch as
         | well. For me it excels in two use cases:
         | 
         | * Playing (Nintendo) games with the entire family (4 people,
         | all holding a small controller): every Nintendo game is very
         | thoughtfully designed to get 4 people through the "flow" before
         | the game starts (pick your character, set the options etc.)
         | 
         | * Playing games in the portable/detached mode, it is a joy to
         | hold and unlike a tablet you have physical controls. Most games
         | are so much better than your average iPad game (or better said,
         | the "match three" or mindless clicker games do not rise to the
         | surface as easily as on iPad).
        
           | callalex wrote:
           | It also creates a ton of e-waste for a few hours of
           | entertainment when you already have the compute power
           | available to you in another portable device you already have
           | to own anyway.
        
             | efields wrote:
             | False equivalence (at least). Software we want to run is
             | not just about raw compute available. Licensing of
             | Nintendo's software aside, what if the pocket computer I
             | have isn't mine? If I buy a Switch, I own it.
             | 
             | Just about everything creates waste. Being into any hobby
             | is expending energy in pursuit of leisure. You're opting
             | into excess from the jump.
        
             | leokennis wrote:
             | Certainly. I satisfy my conscience by not flying and biking
             | all distances under 20 kilometers.
        
               | illwrks wrote:
               | I've messed around with emulators in the past. To be
               | honest the tweaking and fiddling with things drove me
               | mad. It was 100 times easier to just switch on a
               | dedicated device and dive into a game.
               | 
               | Then again I'm not buying the latest games or consoles,
               | I've got some other ones that I dive into every now and
               | then for a distraction.
        
               | StimDeck wrote:
               | [dead]
        
       | swyx wrote:
       | i gotta ask, what kind of career path does one have to have to
       | figure out how to make this sort of thing? just hacking nights
       | and weekends for 2 years straight? because i dont know how anyone
       | gets paid to do this and yet there is so much incredible depth to
       | learn that is probably undocumented because of legal issues
        
         | hx8 wrote:
         | Reverse engineering. Systems programming. Firmware.
         | 
         | Sometimes yea, people have a career in an adjacent field and
         | hack on emulators on the evenings. Other times I've ran across
         | incredibly talented individuals with significant contributions
         | that have never been employed in tech. I've seen multiple
         | instances of this when a younger individual gets involved in a
         | project they don't feel comfortable putting their real identity
         | on for fear of hassles with Japanese companies known to be
         | litigious.
        
         | zirgs wrote:
         | A potential career path would be to work on commercial console
         | emulators at Nintendo or Microsoft. Or on compatibility layers
         | like Wine/Proton.
        
         | 0xcde4c3db wrote:
         | > just hacking nights and weekends for 2 years straight?
         | 
         | Yes. Believe it or not, the primary author of the ARM
         | translation engine used in the other major Switch emulator is a
         | medical doctor ("IRL white mage", as she sometimes puts it).
        
           | elteto wrote:
           | Con Kolivas, a well-known Linux kernel contributor and
           | hacker, is an anesthesiologist [0].
           | 
           | [0] https://en.wikipedia.org/wiki/Con_Kolivas
        
           | geswit2x wrote:
           | > the primary author of the ARM translation engine
           | 
           | Could you share more info about this?
        
             | mmebane wrote:
             | They're probably referring to dynarmic:
             | https://github.com/merryhime/dynarmic
        
         | tinus_hn wrote:
         | Programming can also be a creative hobby like painting or
         | writing.
        
         | CapsAdmin wrote:
         | I've worked on large projects for almost 10 years before I
         | started working in the field, though perhaps not as complex as
         | an emulator.
         | 
         | I dropped out of college due to medical reasons and was given
         | the "opportunity" to receive disability benefits for the rest
         | of my life. I accepted this and just continued my hobby doing
         | programming. In that time I met many hobby programmers online
         | who didn't seem to work or were temporarily taking breaks from
         | studying to eventually find a job.
         | 
         | Eventually I felt a bit lonely not knowing anyone in real life
         | who were interested in programming, so I found the meetup
         | website and started going to events to get to know people. The
         | friends I met there told me I should try working professionally
         | as a programmer, so I tried and now I've been 5 years in the
         | field and really enjoy it.
         | 
         | In retrospect being outside of the professional field, I knew
         | it existed but it never crossed my mind that I could be part of
         | this as it was for educated and highly experienced programmers
         | only. Because of this maybe I never bothered to even try.
         | 
         | One issue for me entering the field was that I was highly
         | specialized, but the field required me to be more general and
         | perhaps specialize more in other things. Luckily for me I found
         | the right people from the start with similar interests (game
         | engine development, graphics rendering, etc) to help me
         | understand the professional landscape.
         | 
         | I still find it satisfying to work on hobby projects in my
         | spare time. I don't have as much time as before because of work
         | and family, but I do manage to find the time now and then. :)
        
           | ToucanLoucan wrote:
           | That's a nice story yo. I'm happy for you.
           | 
           | I fell into professional programming basically by accident...
           | was a web developer by education and ended up being offered a
           | position as a mobile developer for iOS as my first out-of-
           | college career. Wasn't what I intended but they extended the
           | offer and said offer included paid education in the field, so
           | who was I to argue?
           | 
           | Years on I've gone through a few jobs and basically never
           | used my web development degree for my day job, only really
           | using it for side-gigs building websites for local
           | businesses.
           | 
           | Life is weird.
        
           | TX81Z wrote:
           | Good for you! Too many people are in it for the money and
           | pure self interest.
           | 
           | Now, I like the money our profession pays, it's great - but
           | I'd by doing something with computers either way, so what a
           | blessing to get rewarded financially as well.
           | 
           | Also, as an erstwhile professor who was at a top 3 program, a
           | motivated and curious student is the best. If you had
           | finished college you'd have done well with your attitude.
        
             | paulcole wrote:
             | > Too many people are in it for the money
             | 
             | What? It's a job.
             | 
             | You yourself say the financial rewards are a blessing.
             | Sounds like you're in it for the money, too. If you're not,
             | your boss might OK a 20 or 30% salary decrease should you
             | request it.
        
             | moonchrome wrote:
             | I feel the opposite. I've been programming for fun since 13
             | and have a similar experience as op - where I did my own
             | projects for ~10 years before I got a job. I always hated
             | professional programming.
             | 
             | It's boring, problems I'm solving are technically trivial.
             | Most of the real problem is tied to a domain I give 0 shits
             | about and am so bored by that I have to force myself to
             | stay focused. Things I build have practically no value to
             | me, and often no value to anyone except that someone
             | decided to allocate a budget that way.
             | 
             | I would never work on these projects if it didn't pay well.
             | I would prefer craft work if it paid the same.
             | 
             | I'm not complaining though ! I live very comfortably, I
             | came from extreme poverty and I don't see any realistic
             | alternative path that would end me in a better situation.
             | 
             | But I think expecting people to do most programming jobs
             | out of passion is not realistic. If you're really good
             | maybe you'll land in a role that gets you doing something
             | technically innovating that also pays well but I'd say
             | that's top few % of devs, most of us are in the dredges
             | where enthusiastic people are a detriment (worst projects
             | I've seen were a result of someone trying to be too clever
             | for their own good, not lacking skill)
        
             | jpbastyr wrote:
             | I really don't think there's a problem with doing a job
             | just for the money and going home, everyone needs to eat at
             | the end of the day
        
               | chefandy wrote:
               | Right. In my experience, in nearly any professional
               | discipline, words like 'passionate' and 'hungry' are
               | often management euphemisms for 'has trouble drawing
               | boundaries with work, and cares more about getting it
               | done than work/life balance and their own wellbeing.' I
               | think most of us get nerd sniped and spend half the night
               | working on something every now and then, but that's not
               | something any employer is _entitled_ to.
        
         | dmitrygr wrote:
         | For most, it is a labour of love. For some it is how their OCD
         | expresses itself. And some just refuse to give up until they
         | beat the problem into submission.
         | 
         | Note that none of those are career paths. Some career paths
         | might help you do emulator development (embedded C work, EE
         | work, reverse engineering work), but none align with it
         | perfectly.
         | 
         | It is mostly a hobby
        
         | MegaDeKay wrote:
         | Here is an interview with gdkchan, RyujinX creator, that should
         | directly answer your question :-)
         | 
         | https://web.archive.org/web/20230518095046/https://boilingst...
         | 
         | archive.org link because boilingsteam.com isn't loading for me
         | at the moment.
        
         | wslh wrote:
         | Because you really enjoy programming and hacking? And obviously
         | are very capable.
         | 
         | The emotional part is critical as human beings. I wonder why we
         | need to remind it again. A lot of human activities don't have
         | anything to do with money.
        
         | hortense wrote:
         | You start spending all your time programming in middle school.
         | By the time you enter college you know everything needed to
         | write simple emulators, and then you meet other students that
         | motivate you to up your game and complexify your projects, like
         | working on a Nintendo Switch emulator.
         | 
         | It doesn't require being a genius or a fast learner, it just
         | requires the good fortune of having programming be your
         | passion.
         | 
         | If you want to catch up to these guys when you only start to
         | learn programming in college, it's doable but it requires you
         | to be a fast learner and also be somewhat passionated in
         | programming.
        
         | petabytes wrote:
         | The only thing that allows these sort of projects to exist is a
         | very unhealthy obsession. And believe me, I spent 2 years
         | hacking Fujifilm cameras. Still am. Can't stop.
        
         | delfinom wrote:
         | The basic skills for this are taught in Electrical/(Computer)
         | Engineering. In fact depending on your college you may end up
         | writing a instruction set emulator lol. So it's not something
         | that requires a 20 year career experience background.
         | 
         | It just takes a lot of dedication and time/energy to reverse
         | engineer. People basically do it as a hobby. Usually the most
         | hobby interest is nostalgia vibes from old stuff but even
         | getting new stuff to run is done for the mental excercise fun
        
         | grishka wrote:
         | I'd say just being curious, reading and tinkering a lot. I
         | recently wrote a GameBoy emulator to give myself a better
         | understanding of the inner workings of CPUs. It's anything but
         | precise, but it passes all the CPU instruction test ROMs and
         | it's able to run all my childhood games so that's mission
         | accomplished for me. _Maybe_ I 'll try to emulate something
         | more complex next.
         | 
         | Writing an emulator is very frustrating at first (when nothing
         | works) but it eventually gets more rewarding as you get to the
         | point of meaningfully running preexisting software. IMO every
         | programmer needs to write one at some point.
        
           | swyx wrote:
           | and how long did that take you? just to gauge how big a task
           | this was
        
             | grishka wrote:
             | Something like 3-4 days combined I think? It also supports
             | sound but that part is far from perfect, especially the
             | noise channel.
        
         | Dalewyn wrote:
         | >because i dont know how anyone gets paid to do this
         | 
         | The reward here isn't a paycheck, the reward here is fun.
         | Things like console emulators by and large exist on volunteer
         | time and effort provided by nerds and enthusiasts who find
         | pleasure in the act itself with no concerns given to finances.
        
         | erfgh wrote:
         | Probably worked in a company that made Switch games or in
         | Nintendo itself.
        
           | Klonoar wrote:
           | Unlikely. You do not want to be caught reimplementing stuff
           | after having looked behind the curtain.
           | 
           | Emudev projects often outright kick people out if it's
           | determined they've peeked.
        
         | thiht wrote:
         | I started programming mainly because I wanted to make a bot on
         | an online game. I learned how to use Wireshark, how network
         | protocols worked (the game used a binary protocol I learned to
         | reverse engineer, and I wanted my bot to integrate with IRC
         | which uses a text protocol so I read its RFC), I learned how to
         | decompile and read obfuscated code (the game was an SWF, and I
         | could get my hand on bots made by other people), and even some
         | design patterns to make my code slightly maintainable.
         | 
         | I did it to have fun with my bot on the game, but in the end I
         | barely used the bot, I had way more fun making it and learning
         | how to improve it.
         | 
         | I suspect the people making these emulators spend way more time
         | writing the emulators than using them, that's where the actual
         | fun is.
        
         | [deleted]
        
         | saagarjha wrote:
         | Most of the people that work on emulators do it for fun, not to
         | get paid. Some do, but almost all have other jobs to support
         | them, or are in places in their life where they are supported
         | by other people: children and students, for example.
         | 
         | There's a lot of work that goes into a modern emulator, for
         | what it's worth. Obviously there are people that reverse
         | various parts of the console but it's really an amalgamation of
         | all sorts of talents. Someone's going to be a graphics expert.
         | Someone is going to be a compiler and codegen genius. Someone
         | needs to work on reimplementing APIs and improving game
         | compatibility. Someone needs to do UI work. Someone needs to
         | port the emulator to platforms people want to run it on.
         | Someone needs to do design, and PR, and copywriting, and
         | translation. For smaller emulator projects many of these roles
         | may be performed by the same person. For a large project it's
         | really a team of people working together, often organized in an
         | ad-hoc fashion. It's really a gem of open source development,
         | where people can bring their own skills to the table and make
         | something better than the sum of their parts, all the while
         | improving themselves.
        
           | MegaDeKay wrote:
           | Indeed. Reading the emulator progress reports (Dolphin,
           | Ryujinx, and Yuzu publish them on a regular basis) gives a
           | really good idea of all the different jobs it takes to pull
           | off a complex project.
        
         | UK-Al05 wrote:
         | People who are good at this basically spend their entire free
         | time on their computer.
         | 
         | Source: Me, and I'm not even good at it.
        
         | trollied wrote:
         | Sort of starts by being intrigued. You start wondering how a
         | simple emulator works. Then you realise that the simplest high
         | level CPU emulator is just a big switch statement, a block of
         | memory, variables for registers and the Program Counter... Then
         | you realise you need memory read/write functions. Then you
         | start looking at the other systems involved...
         | 
         | It's never ending, it's great fun, and a huge sense of
         | achievement. I'll never forget the first time I saw a BBC Basic
         | prompt when I devved my first emulator.
        
         | mattbee wrote:
         | My very first paid job in 1997 was extending a PC emulator
         | product for an ARM desktop computer with a 486 co-processor. I
         | was a teenager who knew a bit of C & ARM code, otherwise no
         | hardware or x86 knowledge at all. Obviously PCs have always
         | been _quite_ well documented, and there were other emulators to
         | look at for comparison. But where I couldn 't work it out, and
         | the few books I had were no use, I just had to experiment:
         | write a bit of code, see what the response was (usually crash,
         | sometimes the whole computer).
         | 
         | A lot of it is building a mental model of the enemy (for me:
         | Windows NT early boot, DirectDraw initialisation) and writing
         | code that got it to the next step, and the next step... It was
         | always slow work, but therapeutic once you find a thread to
         | pull on. When you get it right, the reward is sudden: you have
         | this alien world that is running where it shouldn't, like a
         | fish swimming in a tree.
         | 
         | I'd love to do more of that kind of work!
        
         | ouraf wrote:
         | " i dont know how anyone gets paid to do this and yet there is
         | so much incredible depth to learn that is probably undocumented
         | because of legal issues"
         | 
         | - There IS a path to commercial emulator development. Most of
         | these "retro collections" you see being sold on video game
         | online shops are a frontend, a custom made emulator to avoid
         | any legal/license issue (Avoiding GPL code as much as
         | possible), a cool frontend and some extras depending on how
         | much the team could unearth and license from the original
         | developer/publisher/rights owner. Hell, Nintendo and Sony had
         | teams making official emulators for the Playstation 1 emulation
         | on PSP/PSVita/PS3 or almost every nintendo console before the
         | GameCube for Virtual Console games
         | 
         | - Each country has its own set of laws, but using US cases as
         | an example, developing an emulator for research purposes only
         | (or at lease not competing directly with whatever you're
         | emulating) and not using any file or code snippet from the
         | original hardware can get a pass.
         | 
         | That's how some emulators go by without getting a Cease and
         | Desist from Nintendo or Sony. And that's why they never bundle
         | the BIOS with the emulator, even if it needs it to emulate...
         | well... Basic Input and Output Systems.
        
           | hx8 wrote:
           | Some of the official emulators use open source projects. The
           | PlayStation Classic uses ReARMed.
        
         | BaseballPhysics wrote:
         | Yes, just hacking nights and weekends. I've done my fair share
         | of console reverse engineering, developing software for console
         | devices (mostly GBA and NDS development, but a fair bit of SMS
         | and Genesis reverse engineering), etc, and it's seriously some
         | of the most fun I've had as a developer. But it takes an
         | enormous amount of tenacity to push through the inevitable
         | challenges.
        
           | robertwt7 wrote:
           | where do you start learning reverse engineering things? I'm
           | also curious, as a software eng focusing on web stuff and
           | api, it's getting quite boring.
           | 
           | These things excites me but i never got to start
        
             | johndoe0815 wrote:
             | If you're specifically interested in reverse engineering
             | for ARM-based systems (32 and 64 bit), this book is a
             | pretty good introduction:
             | 
             | "Blue Fox: Arm Assembly Internals and Reverse Engineering"
             | by Maria Markstedter
             | 
             | https://www.wiley.com/en-
             | us/Blue+Fox%3A+Arm+Assembly+Interna...
        
               | johndoe0815 wrote:
               | Related article on The Register, also mentioned here on
               | HN (https://news.ycombinator.com/item?id=37336623):
               | 
               | https://www.theregister.com/2023/08/31/a_star_star_domain
               | s/
               | 
               | "Maria Markstedter - a noted author, assembly language
               | expert, and security researcher who's written extensively
               | about Arm at the websites she operates - received a
               | cease-and-desist demand from Arm's lawyers. Her offense?
               | According to the letter she shared on Xitter, using the
               | trademark "Arm" in the domain name arm-assembly.com that
               | she used to promote a book she wrote about the ISA."
        
             | lauriewired wrote:
             | I've made a lot (50+) of videos on Reverse Engineering,
             | with a heavy focus on ARM assembly as well as mobile
             | platforms.
             | 
             | youtube.com/@lauriewired
             | 
             | Self-promotion I know, but I hope someone finds it useful
        
             | hadlock wrote:
             | This is a good place to start. Named "the ultimate game boy
             | talk" dives into the CPU used, the instruction set(s) used
             | by the CPU, how the video instruction sets work(ed) etc.
             | The game boy from 1989 is a pretty simple device to start
             | learning from. From there you can look at how various
             | people emulated the system.
             | 
             | https://www.youtube.com/watch?v=HyzD8pNlpwI
        
               | joestrong wrote:
               | I second this. I also have a web background, and last
               | year I started with this video, and the Gameboy is a
               | great place to start with this sort of thing.
               | 
               | Start making a game, and you'll soon realise how the CPU
               | works, and making a simple emulator will start to seem
               | very possible.
        
             | BaseballPhysics wrote:
             | So, to be clear, I spent my time reverse engineering
             | software rather than the hardware itself. That said, my
             | observation is that a lot of hardware reverse engineering
             | _is_ software reverse engineering since the software helps
             | you understand how the hardware works (the Asahi guys
             | literally built a hypervisor so they could watch macOS
             | interact with hardware).
             | 
             | And software reverse engineering is just grunt work. I'd
             | start with a very well known existing hardware platform
             | with a very simple CPU design--the GBA is actually a really
             | nice platform as the ARM has a very sane ISA and it's all
             | memory mapped I/O--and get a devkit and start experimenting
             | by writing software to run in an emulator so you can get a
             | feel for how the hardware works.
        
               | saagarjha wrote:
               | GameBoy Advance is also nice in that whenever you get
               | really stuck most of the answers are available online ;)
        
           | DanielHB wrote:
           | how do you guys find the energy to hack nights and weekends?
           | I do enjoy hobby programming but it takes me at least one
           | week of vacation to detox from the work grind so I end up
           | doing it only when I have extended vacation
        
             | minimaul wrote:
             | Honestly I agree with this.
             | 
             | When I was more junior, or not doing programming as a full
             | time job, I was more motivated to work on personal
             | projects. Now I am more senior and programming/managing
             | people full time, I can't get motivated to work on code-
             | related projects in my downtime. It sucks :/
        
               | _trackno5 wrote:
               | I'm in a senior position and most of my time goes to
               | architecting and design work. I barely get to code at my
               | day job.
               | 
               | I just use my free time to code. I see it as a relaxing
               | activity
        
             | Nursie wrote:
             | I have spurts of this, occasionally I'll spend a month of
             | evenings/weekend time doing a project. It's usually when
             | work isn't scratching the right sort of itch, so I scratch
             | it elsewhere.
             | 
             | Personal projects are often embedded coding of some sort,
             | though I spent some time poking at the PS3 firmware when
             | that was first cracked too.
             | 
             | Spending months reversing and emulating a console... that
             | takes dedication I don't have though. I guess these guys
             | are really itchy? Or it's in a really hard to reach spot?
        
             | Drakim wrote:
             | Honestly, it happens when I get some weird idea in my head
             | that I can't stop thinking about, and a sort of mania takes
             | over and gives me the energy and drive to work on it for
             | hours on end.
        
               | doctorpangloss wrote:
               | It helps when the end goal is really well defined like a
               | software emulator. Nearly everything that could slow you
               | down is a known quantity. Conversely, the unknowns, like
               | how to implement native hardware API X on non-native non-
               | accelerated platform Y, are naturally where community
               | emulators are weakest.
        
               | mysterydip wrote:
               | (not that you should take advice from random strangers on
               | the internet, but) that sounds like classic ADHD
               | hyperfocus to me. Giving a name to it might help in
               | figuring out how to maximize its benefit.
        
               | illwrks wrote:
               | I experience the same hyperfocus, but I don't have ADHD,
               | I'm quite the opposite really. My background is design
               | and when I was a child I could easily 'get lost' in
               | various forms of art etc for hours. I've met plenty
               | people over the years that are the same, so I'd argue it
               | might be something more aligned with some creative and
               | analytical thought process, and a drive etc to
               | understand/solve the problem at hand.
               | 
               | In terms of where to find the time, there are 24 hours in
               | the day, at least 8 for working the 9-5.
        
               | Aco- wrote:
               | There are three types of ADD[1]. That which you describe
               | here sounds a lot like the "Inattentive" type.
               | 
               | [1] https://www.healthline.com/health/adhd/three-types-
               | adhd
        
               | illwrks wrote:
               | I've learned something new, thank you!
        
               | widforss wrote:
               | That's about the only time I can do honest work
               | programming. It makes me avoid doing programming tasks at
               | work and try to find more writing-related stuff ...
        
               | jskherman wrote:
               | Ditto, that kind of mania is a force to be reckoned with.
               | On one hand you get insane productivity and momentum from
               | it and on the other hand can cause you to momentarily
               | neglect some responsibilities. I have a love/hate
               | relationship with that side of mine.
        
             | Barrin92 wrote:
             | in addition to what the others have said, I go home every
             | day at 5 pm, no crunch or grind, no work calls outside of
             | working hours. (luckily I live somewhere where that is
             | guaranteed by law).
             | 
             | I think keeping a schedule that way has prevented me from
             | every souring on programming in my free time.
        
             | jebarker wrote:
             | The key for me is that it has to be 100% fun. As soon as I
             | start thinking about external recognition or trying to make
             | money off of a personal project I lose motivation. Right
             | now despite coding all day at work I still have the energy
             | for coding on my own time on a NES emulator just because
             | it's really fun.
        
             | dfxm12 wrote:
             | Working with code day to day has almost fostered in me a
             | sense of contempt for computers. In high school/college, I
             | spent a lot of free time doing rom hacks, etc. I just can't
             | now. Now my tech hobbies lay more around arcade
             | repair/modding. Knowing what I know now, I wish I could
             | muster up the energy to combine the two and work on
             | projects similar to UMK3+ [0], but I just don't feel like
             | sitting in front of a debugger all evening after coding all
             | day at work :|
             | 
             | I guess in my case, I had to find a hobby that was not
             | exactly like work, even if it was work-adjacent.
             | 
             | 0 - https://mkombat.plus/
        
             | saagarjha wrote:
             | I don't code all that much at work. Personal projects and
             | open source work are my opportunity to make things I want.
        
             | hashar wrote:
             | > how do you guys find the energy to hack nights and
             | weekends? I do enjoy hobby programming but it takes me at
             | least one week of vacation to detox from the work grind so
             | I end up doing it only when I have extended vacation
             | 
             | Namely passion, curiosity and probably not having much more
             | other hobbies beside programming or hacking stuff around.
             | 
             | I recently went to try to improve a Linux kernel input
             | device driver for a USB headphone: adding unit tests (whose
             | execution is nearly instant). I have learned a ton of
             | things about Linux development, C (I don't know C at all),
             | input devices driver system (hid), the USB protocol and my
             | device specifications.
             | 
             | I have never managed to boot it live to test with my actual
             | device. That is despite spending probably despite spending
             | probably 40 hours including a 10pm - 4am session on a
             | Saturday night. But I had lot of fun doing it and I think
             | that was the point.
             | 
             | I guess you can't beat passion and curiosity.
        
           | wiz21c wrote:
           | This 1000X ! I'm currently working on emulating the Apple 2+
           | speaker better. It's been a 2-3 spare time hours a week for
           | about a year now :-)
           | 
           | But the joy of working on a machine that's part of your life,
           | without the need to please end users (which is cool too but
           | sometimes induce pressure), well, that's basically coding
           | like when I was a kid. Except that now I have a TON more
           | knowledge to work with !
           | 
           | And, while working on disk emulation I had the pleasure ot
           | discover those many copy protections that "prevented" me to
           | get many games :-)
        
             | BaseballPhysics wrote:
             | Absolutely.
             | 
             | And the other thing I love about it is the communities are
             | typically super open and collaborative. I remember back
             | when I first got into GBA development, there was a ton of
             | docs, tools, libraries, and other things that folks had put
             | together and then shared with one another. It's a lot of
             | very passionate people sharing some very niche interests,
             | which can be incredibly fun (of course it can also be a
             | drama filled nightmare but such is life with passionate
             | people).
        
         | raincole wrote:
         | People can also be retired or simply rich.
        
         | bb88 wrote:
         | Well... there's a lot of money to be made in reverse
         | engineering things --particularly in legal settings where
         | software is an issue.
         | 
         | Don't forget that the Chinese do this constantly with American
         | products. Trying to figure out how we built something, and
         | doing it for cheaper.
         | 
         | So what would be cool is if he could make a great console
         | experience cheaper than Nintendo could make it.
        
         | ambyra wrote:
         | I'm sure they're not doing it for the money, but their Patreon
         | brings in over 2k/month. Not enough to quit your day job, but
         | pretty good side money. Plays Zelda better than the Switch
         | too!!
        
         | deaddodo wrote:
         | Emudev is largely a hobby field. It takes skills from many
         | fields to accomplish. You need the combined efforts of hardware
         | engineers, reverse engineers, diligent documentarians, software
         | engineers with specialized skill sets, etc. Everyone building
         | on top of each other.
         | 
         | You'll see one-person operations, but they're usually relegated
         | to older hardware and they still utilize documentation from
         | many disparate sources. Even nesdev wiki was built on top of
         | 6502 researchers, Taiwanese clone manufacturer reverse
         | engineers, decappers, older NES emulators, heaps of existing
         | documentation, etc.
        
           | HeuristicsCG wrote:
           | There are many jobs for emulation development though. Every
           | company that makes chips has an interest in having software
           | emulators of them since it's easier to try out a new feature
           | in an emulator than to write it in hardware. For example any
           | GPU maker (AMD/NVIDIA/ARM/Qualcom/Imagination/Apple etc) will
           | have a team of 10-100 people working on one or several
           | emulators for their products.
        
         | derefr wrote:
         | "This sort of thing" is actually really simple to get started
         | with. You just read a few docs about the object-code format and
         | instruction-set of the device you want to emulate, and then
         | start writing a simple interpreter loop that reads and executes
         | instructions from any arbitrary existing program ROM. Compare
         | and contrast the results of running it on your emulator with
         | running the same thing on real hardware (or on some other
         | emulator.)
         | 
         | As soon as you get one well-known program working and
         | displaying something on the screen -- congratulations, you've
         | made "an emulator"! Now all that's left is "just" debugging the
         | inevitable compatibility issues that your emulator will
         | encounter with every _other_ program ever compiled for the
         | target architecture. It 's like Test Driven Development, but
         | your test suite is "the complete game library of the console"!
         | 
         | (And then, once you've got 100-ish percent compatibility, maybe
         | you can spare some time to optimize performance!)
         | 
         | If you've never done this before, it can be great fun! I'd
         | recommend starting with a Z80 (Gameboy) emulator -- it's an
         | extremely well-documented architecture, fairly simple (no weird
         | concepts like clipping masks or MMU mapper chips), fast to get
         | to the "rewarding" point where you've got something displaying
         | on-screen, and so low-powered that on modern hardware it'll run
         | at full speed even with the most naive implementation.
        
         | IggleSniggle wrote:
         | I had a friend get into it by being interested in middle school
         | and just getting deeper and further with time. I think the fact
         | that "they don't want you to do it" while many people _do_ want
         | you to do it is part of the allure: feels like being an
         | intellectual Robin Hood, even if it 's really not that; but
         | also it's just a satisfying puzzle in its own right.
        
       | urza wrote:
       | Why doesn't Nintento release their games to other platforms? I
       | would love to play Zelda, but I am not going to buy a console
       | just because of one game..
        
         | dathinab wrote:
         | they are obsessed with trying to force there products to be
         | only used roughly like intended
         | 
         | Or else they e.g. probably wouldn't patch out item duplication
         | glitches which are close to impossible to accidentally ran
         | into, or they would allow you to change control a age old basic
         | features missing from Nitendo games instead you can only use
         | controls in the intended (and play tested) ways. Similar they
         | where quite obnoxious when it comes to streaming, reviews or
         | other content containing game-play video for quite a long time.
         | To some degree they still are.
         | 
         | Through for many people it's not just one game I mean Nintendo
         | has quite a bunch of successful exclusive titles, to list some:
         | Zelda, Mario Cart, Smash, various jump and run Mario titles you
         | could split into 3D main titles and 2D complementary titles,
         | Splatoon, Mario Party, Fire Embleme, Xenoblade, Kirby and more.
         | In practice you tend to have at least 10 high quality enjoyable
         | (but expensive) exclusive games. (ignoring Wii-U which flopped
         | and leading to some strange results like Mario Cart 8 being
         | republished with the DLCs pre-included and later a large
         | expansion pass instead of releasing a Mario Cart 9).
        
         | causi wrote:
         | _I would love to play Zelda, but I am not going to buy a
         | console just because of one game_
         | 
         | I'd pay a thousand dollars cash right now to be able to play
         | Breath of the Wild and Tears of the Kingdom over for the first
         | time. It's worth it.
        
           | peatmoss wrote:
           | However as someone who purchased BoTW and played it years ago
           | on Switch, and again recentishly on CEMU, the experience on
           | CEMU in 4k @60hz, it was a whole different game.
           | 
           | I'd pay Nintendo 3x the cost of ToTK to play a version that
           | ran on my PC with improved resolution and frame rates. Until
           | then, I watch the status updates for Switch emulators, and
           | will play ToTK once emulation is reported to be ~perfect.
           | I'll buy ToTK, but I won't be playing on hobbled Switch
           | hardware.
        
             | causi wrote:
             | What's the problem with your PC? I've been playing TotK on
             | PC since before it launched and, after the rock-texture
             | problem was fixed, high framerate and 4K work just fine.
             | There's even a TotK mod manager now. Way better than my
             | wife's experience on Switch.
        
               | kridsdale3 wrote:
               | I considered this, but I decided that the 100% confidence
               | I had in a bug-free-experience (including crashes and
               | risk of save-game loss) on the native hardware was worth
               | the better experience I was likely to have at a higher
               | risk playing on the MacBook M1 Ultra at 4k. I don't
               | really regret it. My TV added "simulated HDR" and I
               | played with frame-smoothing on for a simulated 120FPS.
               | Yes there was latency but in this game it never mattered.
               | Not even a little bit. I enjoyed every one of the 175
               | hours I spent in TOTK.
        
         | schlurken wrote:
         | Beyond what some of the other comments mentioned, Nintendo also
         | took a different approach to their consoles compared to
         | Microsoft and Sony which kind of forces them to lock down their
         | first-party titles.
         | 
         | The Nintendo Switch is very underpowered compared to the other
         | consoles of the same generation (PS4/5, Xbox Series X) but has
         | a huge advantage of being the ultimate handheld / travel
         | console. While Sony and Microsoft consoles can generally push
         | out more FPS or better graphics (usually they lean towards
         | better graphics), the Switch is very limited since it needs to
         | strike a balance of form factor (less space for hardware) and
         | battery life (what's the point of the handheld if you can only
         | game for 30 minutes?).
         | 
         | For a big chunk of their user base, including the folks
         | interested in these type of emulators and using them legally,
         | they would probably prefer to use their other consoles and/or a
         | PC/Mac from a pure performance perspective.
         | 
         | I also suspect that they would get less revenue per copy sold
         | on other platforms compared their own platform, especially with
         | games released by in-house studios.
         | 
         | With the above in mind, releasing a game on other platforms
         | will cut into their revenue stream pretty significantly.
        
         | agloe_dreams wrote:
         | This is actually super interesting because they have. In China
         | they allowed Nvidia to ship a Wii emulator on the Shield.
         | 
         | https://www.nintendolife.com/news/2021/08/nvidia_shield_shut...
         | 
         | What is really wild to me is that they could 100% ship Zelda
         | for iOS and make a killing. The Switch has absolutely nothing
         | on a modern iPhone/iPad, even heatsoaked and it would
         | immediately be the best game on iOS.
        
         | lockhouse wrote:
         | You just answered your own question. :)
         | 
         | Want to play Zelda? You have to pay Nintendo at least $260.
         | $100 more if you want to play on something better than a Switch
         | Lite.
         | 
         | Unlike Sony and Microsoft, Nintendo actually makes a profit on
         | their hardware sales as well as game sales.
        
           | Grazester wrote:
           | The PS5 has broken even since 2001 by now it may be
           | profitable
        
           | selykg wrote:
           | Other console makers make a profit on their consoles as well.
           | Typically it's either a small margin at the beginning, or
           | maybe they're eating it somewhat, but as time goes on the
           | components get cheaper, production is improved, or they make
           | revisions to reduce complexity in the circuit boards, or they
           | release a newer smaller version of the console as well. But
           | it's not fair to say that Sony and Microsoft lose money on
           | their console hardware but Nintendo doesn't.
        
         | whywhywhywhy wrote:
         | >but I am not going to buy a console just because of one game..
         | 
         | You might not but many millions do consistently.
        
         | jitl wrote:
         | I bought a Switch OLED to play Tears of the Kingdom, plus the
         | game - $420 all in. If I could play it on my laptop which has a
         | better screen and speakers, I would only pay $60. Plus, now I'm
         | more likely to buy another Nintendo game to increase the
         | utility of my new gizmo. As a business I'm pretty sure I'd
         | rather have 7x the revenue.
        
         | amiga386 wrote:
         | Nintendo is just Nintendo, and enough people _have_ bought a
         | console just because of one game (or several games) for them
         | still have enough money to keep being Nintendo.
         | 
         | I don't really want to defend them, but you need to look at the
         | North American video game market crash of 1983 to understand
         | their current stance. The entire video game market collapsed,
         | because _any old crap_ was being released as a game. Consumers
         | lost confidence in the  "platform" of specific games consoles.
         | If they bought a home computer instead, there would still be
         | games and it had other utility.
         | 
         | The NES was the antithesis of this. A walled garden of
         | Nintendo, and plenty of first-party game development. The
         | approach worked, it brought them fortune and made them a major
         | player in the video game market. Why would they abandon this
         | approach if it's still working for them almost 40 years later?
        
           | kmeisthax wrote:
           | I think you're answering the wrong question. Parent post
           | wanted to know why Nintendo doesn't want you playing their
           | games on other people's hardware, you answered why Nintendo
           | locks out other people's games on their hardware.
           | 
           | Nintendo _has_ occasionally licensed out their brands for
           | other hardware, but it 's rare. Examples that come to mind
           | are:
           | 
           | - Home ports of Donkey Kong, most of which came out before
           | the NES
           | 
           | - Various Mario-branded edutainment games and typing
           | tutors[0], which were available for IBM-compatible/WinTel PCs
           | (probably also Mac OS but I don't remember)
           | 
           | - Phillips CDi games such as Hotel Mario and the two Zelda
           | games it got[1]
           | 
           | - Nintendo's spinoff mobile games such as Super Mario Run,
           | Animal Crossing Pocket Camp, etc
           | 
           | A general unifying factor is that many of these were garbage.
           | The mobile spinoffs are better, but those were made primarily
           | to appease shareholders angry that the Wii U wasn't selling
           | well. So I imagine Nintendo has had such a bad taste in their
           | mouth from working with third party platforms that they'd
           | rather just not. Furthermore, doing so means having to pay
           | 30%, instead of receiving it from other developers.
           | 
           | [0] One of which was also Charles Martinet's first stint as
           | Mario
           | 
           | [1] Notable for having lots of animated cutscenes that
           | provided ample YouTube Poop material
        
       | smashah wrote:
       | The developers shouldn't have to be anon for this type of amazing
       | project. They should be publicly celebrated instead of having to
       | hide for fear of being buried in legal trouble. Sad state of the
       | world.
        
         | balls187 wrote:
         | I think one need only to look a at happens in China to see the
         | ramifications when you have flagrant disregard to IP
         | protections.
         | 
         | Which world state is sadder?
        
           | 0xdeadbeefbabe wrote:
           | The one with broken international laws?
        
           | dvdkon wrote:
           | Are you trying to draw a connection between disregarding IP
           | laws and disregarding human rights? Because I'm pretty sure
           | there isn't any.
        
             | balls187 wrote:
             | No, I can see how discussing china could mean human rights,
             | but in this case I was referring to China's flagrant IP
             | violations.
             | 
             | https://www.technologyreview.com/2023/06/20/1075088/chinese
             | -...
        
               | dvdkon wrote:
               | I still don't see how China's IP violations lead to a
               | "sadder world state". The article you linked seems mostly
               | sympathetic to foreign trademark-infringing sellers, and
               | I certainly don't lose sleep over small-time trademark
               | problems. I'm not happy about the copyright infringement
               | and full-on fraud that happens in China, but there's
               | certainly an argument to be made that the current rules
               | (or absence thereof) were necessary to make China the
               | superpower it is now. If I was Chinese, I'd be pretty
               | happy about it.
        
           | rjzzleep wrote:
           | Can you be more specific?
        
           | conradev wrote:
           | China disregarding IP protections to bootstrap their
           | manufacturing base, military, etc was one of the greatest
           | decisions they could have ever made?
        
             | seanw444 wrote:
             | At the expense of the private individual, yes.
        
               | roywiggins wrote:
               | The US kind of famously behaved the same way at least
               | with regards to copyright.
               | 
               | https://digitalcommons.pace.edu/cgi/viewcontent.cgi?artic
               | le=...
        
             | BonitaPersona wrote:
             | "China politicians do what yours would if they could, and
             | will the moment they can".
             | 
             | Difficult to translate from the source in spanish. I hope
             | it is understandable.
        
           | bix6 wrote:
           | The world that hoards it's IP so a few can be rich is sadder
           | for sure. China will soon overtake the US in EVs per capita.
        
             | balls187 wrote:
             | Let me know how well that works with EV charging
             | infrastructure in China.
        
         | [deleted]
        
       | skykooler wrote:
       | Is there any way to play games (legally) on this if you don't
       | have a Switch to dump them from? Is it possible to buy Switch
       | games through a web browser?
        
         | psychphysic wrote:
         | This must depend on your jurisdiction.
         | 
         | But if you own the game, does it matter how you got the ROM?
        
           | spicyjpeg wrote:
           | > But if you own the game, does it matter how you got the
           | ROM?
           | 
           | It does from a legal standpoint. In many countries, making
           | your own backup copies of your games for personal use is
           | legal (although anti-circumvention laws like the DMCA blur
           | the lines here) but obtaining a backup copy from someone
           | else, regardless of whether or not it is a copy of a game you
           | already own, is not; at best it is a legal gray area.
        
             | gnopgnip wrote:
             | Does it matter from a legal standpoint?
             | 
             | You aren't reproducing _, distributing_ , performing,
             | publicly displaying, or making a derivative work. *The
             | uploader is the one reproducing the work, see Disney v.
             | VidAngel
             | 
             | And under fair use 3 of the four points would be in your
             | favor, but that isn't determinative
        
               | staticman2 wrote:
               | A finding that VidAngel violated copyright doesn't mean
               | their customers didn't also violate copyright. Their
               | customers weren't the ones being sued, that doesn't mean
               | the customers were in the clear.
               | 
               | I don't see where you are getting the uploader is the one
               | reproducing the work rather than both parties were? Also
               | that appears to have been a streaming case so not really
               | relevant?
        
               | deaddodo wrote:
               | VidAngel clarified what "distribution" meant in the
               | context of "digital piracy". Receipt is not a qualifying
               | symptom to make you an offender, you need to actively
               | make available for others.
               | 
               | As far as I am aware, in US law, there is no subject code
               | specifically for and simply for _possessing /receiving_
               | pirated material (unless it's legislated in some other
               | manner: CP, private govt documents, etc). Despite many
               | court attempts to argue that "downloading" is equivalent
               | to "making a copy".
               | 
               | This is why, during the MPAA/RIAA war against p2p, they
               | specifically targeted the fact that all users were mesh
               | sharing files. It's why one user was charged millions for
               | "sharing a file a multitude of times" and another was let
               | off completely free for sharing a minuscule percentage of
               | many downloaded files.
        
               | gnopgnip wrote:
               | VidAngel covers the requirements for copyright
               | infringement and cites all relevant previous cases
               | 
               | It is true that doesn't mean customers were in the clear.
               | But it's impossible to prove a negative. There are zero
               | copyright cases for streaming customers or downloading
               | without also uploading via p2p.
               | 
               | Are you aware of any case law that finds otherwise?
        
             | prmoustache wrote:
             | I'd be curious which one you are talking about?
             | 
             | Most countries allow downloads. They usually specifically
             | target torrent users because a typical torrent user is
             | making the file available to others while downloading. It
             | doesn't apply if you download with a protocol (like
             | http/https/ftp) that doesn't make you share the file.
        
               | bzzzt wrote:
               | Lots of countries don't. In the Netherlands, it was
               | allowed but later changed to prohibit 'downloading from
               | clearly illegal sources'.
        
               | prmoustache wrote:
               | So you can pretend it is not clear and you don't know it
               | is illegal then?
               | 
               | I promise I thought that website was legit and was
               | offering free licences for Super Mario![1]
               | 
               | [1] Apparently it works with software, you can purchase
               | licence keys of Microsoft products (OS, Office) at
               | roughly 5% of the original price through "reputable
               | vendors".
        
               | bzzzt wrote:
               | Dutch courts don't accept the excuse that you don't know,
               | you're supposed to know the law and do a bit of research
               | in what the normal price and suppliers of goods are.
               | 
               | It's comparable to buying a bicycle worth 800 euro for 20
               | from a drug addict. Even if you don't know it's stolen,
               | you're guilty of fencing.
        
         | Shared404 wrote:
         | > Is it possible to buy Switch games through a web browser?
         | 
         | https://www.nintendo.com/store/games/nintendo-switch-games/#...
         | 
         | You won't be able to download or dump them without a Switch
         | though.
        
         | verwalt wrote:
         | Having a jailbroken switch is the only way.
         | 
         | So every new one you buy is almost definitely a patched V2, and
         | all the Switch Lites and OLEDs are not jailbrakable either,
         | without soldering a modchip.
        
           | [deleted]
        
           | bb88 wrote:
           | I remember the original XBox had a pogo pin mod. Is this
           | possible today?
        
             | deaddodo wrote:
             | The classic Switches have a bridgeable pin in the
             | controller port that'll give you ring0 access. But it's
             | only that very first generation.
             | 
             | You just slide something like this:
             | 
             | https://www.amazon.com/Nintendo-Switch-Short-Connector-
             | Recov...
             | 
             | Into the controller slide and enable it when you want RCM
             | access.
        
         | [deleted]
        
       | KolmogorovComp wrote:
       | Tangential, but can these emulators run untrusted code? If not,
       | is there some way to check for authenticity of random ROM like
       | checksum?
       | 
       | If checksums were to work, do you know if a website centralizing
       | those would fall under the law?
        
         | [deleted]
        
         | Kipters wrote:
         | They can run any code. You can use checksum and such a site
         | centralizing would be in the clear as it doesn't contain any
         | copyrighted material, only hashes (perhaps including cover art
         | would be a problem?)
         | 
         | As far as I know there exists one specifically for switch
         | (nswdb.com, which is used by a common dumping tool to verify if
         | your dump is valid or not) and another for basically every
         | console but the switch (for some reason) run by no-intro
         | (datomatic.no-intro.org)
         | 
         | Another site that only cares about disc-based releases is
         | redump.org, which has quite a few dumping guides in their wiki.
        
           | KolmogorovComp wrote:
           | Thanks for the links! Missing word, I meant to ask if they
           | can _safely_ run untrusted code! I.e if the emulator is
           | sandboxed.
        
             | Kipters wrote:
             | In general emulated code should only be able to interact
             | with the emulated machine, not the host machine running the
             | emulator. But there's no specific sandboxing and there have
             | been cases of bugs in emulators that allowed specially
             | crafted roms to execute code on the host
             | (https://scarybeastsecurity.blogspot.com/2016/11/0day-
             | exploit...)
        
       | necrosyne wrote:
       | I love Yuzu and Ryujinx both. It's crazy that they can provide a
       | superior experience to the native console. I suspect the party's
       | about to be over thanks in no small part to Denuvo.
        
         | causi wrote:
         | I doubt it. So far Denuvo's claims to prevent emulation are
         | just that, claims. Even if they do, people have an unlimited
         | amount of time to work on bypassing it.
        
           | tetris11 wrote:
           | It also skims 5 fps from your framerate. Maybe that's nothing
           | for some, but
        
           | necrosyne wrote:
           | Eh, I'm less skeptical. Denuvo has a proven track history of
           | being exceptionally difficult to crack (and last I'd heard,
           | only one hacker even possesses the skill to do so.) If
           | they're as competent with locking down Switch titles (or, as
           | is rumored, future Unreal Engine games) the gaming community
           | at large is in for some chop.
        
       | satvikpendem wrote:
       | It is kind of annoying that Irdeto, the makers of the oft-
       | maligned Denuvo DRM, have made one that specifically targets
       | Switch emulators, even though emulators are legal.
        
         | zirgs wrote:
         | That's because most emulator users are pirates. Few people
         | bother dumping their games themselves.
        
           | agloe_dreams wrote:
           | Emulator users are generally only pirates because they cannot
           | just buy the software and dumping carts is costly due to
           | proprietary formats. There is tons of evidence that most
           | piracy is due to unavailability.
           | 
           | I would 100% pay $70 to buy Zelda that just runs on PC at
           | 4K...but nope, gotta have it at 720P @ 28FPS.
        
             | extraduder_ire wrote:
             | Modchips are available for every switch console now, and
             | the early ones can be softmodded pretty easily.
             | 
             | It's a bit hit or miss on other consoles, but it's often
             | pretty straightforward to dump your own games. IMO, it's
             | kind of dumb to make people "do a little dance and magical
             | incantation" to make what they're doing "more legal"
             | especially when there's little case law about it.
             | 
             | Also, _everything_ on the switch is ID-tagged. If nintendo
             | wants to, they can ban carts, consoles, controllers,
             | accounts, and more for arbitrary reasons.
        
           | satvikpendem wrote:
           | Many of them own the actual game, even if they don't
           | literally dump it themselves. I wouldn't call that piracy.
        
             | aqfamnzc wrote:
             | I agree with you. However, now that you bring it up, I
             | wonder what the law says? My guess is it's technically
             | still not legal, at least in the US. :(
        
               | callalex wrote:
               | It is 100% legal in the USA to use an emulator to run
               | ROMs you dumped from legally purchased games.
        
             | necrosyne wrote:
             | I have physical copies of the games I play in Ryujinx, and
             | don't dump the ROMs myself. I suspect I'm in the minority
             | however.
        
       | Weryj wrote:
       | This was a great way to bring controller focused games to Mac
        
       | geokon wrote:
       | Early emulators had to emulate the super funky hardware that
       | early consoles had.
       | 
       | Now a days consoles are pretty similar to consumer computers (I
       | though the switch was basically a Nvidia Jetson)
       | 
       | Is the emulation now more like Wine - about providing the
       | necessary APIs and then running on a VM, or is there actual
       | hardware emulation ?
        
         | grishka wrote:
         | It's more high-level than it used to be but GPU is the main
         | problem. The graphics APIs that games use usually expose
         | various hardware specifics so games could be fine-tuned to get
         | most out of that specific hardware. It takes a lot of work to
         | translate these hardware-specific API calls into
         | OpenGL/Direct3D/Vulkan/Metal.
        
           | zirgs wrote:
           | It helps that many console devs don't bother with low-level
           | optimisations, because they can get away with a bit worse
           | performance. Just cap the framerate to 30 like most other
           | console games do.
           | 
           | It wasn't an option during the NES era. Every clock cycle
           | counted back then.
        
             | [deleted]
        
             | grishka wrote:
             | NES-era games also ran on bare metal. Modern consoles run
             | proper modern operating systems with everything you'd
             | expect to find in one -- preemptive multitasking, virtual
             | memory, hardware abstractions, kernel- and user-mode with
             | syscalls, etc. PlayStation OS is a Unix system (something-
             | BSD IIRC), Xbox's is obviously based on Windows NT, and
             | Switch runs something Nintendo built from scratch.
             | 
             | Cycle-counting doesn't make much sense for code running in
             | a preemptive-multitasking OS because no matter how much you
             | count cycles, the actual execution time for a piece of code
             | would be non-deterministic. That, and I suppose most modern
             | games are bottlenecked by the GPU, not the CPU.
        
               | Retr0id wrote:
               | fwiw, the switch actually uses cooperative multitasking.
               | This causes emulation headaches of its own, because
               | sometimes retail games are buggy, but due to the relative
               | determinism of scheduling nobody ever noticed (e.g. race
               | conditions that are reliably won on real hardware will
               | suddenly start breaking in emulation).
        
               | grishka wrote:
               | Cooperative multitasking on a multi-core CPU? How on
               | earth does _that_ work? Do games themselves assign their
               | threads to cores explicitly?
        
         | bakugo wrote:
         | For the Switch specifically, it has an ARM CPU so an ARM
         | emulator is still necessary on x86 systems, but on native ARM
         | systems it's possible to run CPU code almost natively, and this
         | has already been done (a now-dead emulator for android called
         | Skyline did it, and apparently Yuzu will also implement this
         | feature in the future)
         | 
         | The bigger problem is the GPU, it's an Nvidia Maxwell GPU but
         | uses its own custom API made specifically for the Switch
         | (internally named NVN) so a full translation layer including
         | shader recompilation is still necessary.
        
       ___________________________________________________________________
       (page generated 2023-08-31 23:02 UTC)