HN user

byuu

3 karma

#ByuuDidntKillHimself

Posts0
Comments870
View on HN
No posts found.

You can to varying degrees, yes. There's a barcode scanner, an exercise bike, a baseball bat, and more. I designed higan around a modular tree structure so that you can just create a new derived node for any peripheral, and define whatever API you like, so that we can emulate the protocol. Then it's up to the GUI to figure out how to do something when it sees Node::ExerciseBike, and how to do I/O with its API interface.

One could imagine, for instance, connecting an actual USB barcode reader to emulate the Barcode Battler, or providing a text box to hand-type a barcode number.

I don't see anyone actually bothering to simulate the entire horse betting network complete with virtual bank accounts, but if you're really interested, Raphael Assenat reverse engineered quite a bit of the JRA-PAT system for fun here:

https://www.raphnet.net/divers/retro_challenge_2018_09/index...

It's a pretty good read as well!

Hi all, thank you for sharing this article here! It is technically a "laymen's" version of https://byuu.org/articles/edge-of-emulation (submitted here earlier), meant for a wider audience, but it does elaborate on some new discoveries such as the digital video output testing mode.

In the off chance anyone is able to help with this, I've set up a Discord channel (#ars) for coordination here: https://discord.gg/Fx7TfKh

Every member of the bsnes-emu project is on said server.

Thanks so much!

Farewell 6 years ago

Oh, sorry I forgot I also had user-agent checks in the code, good catch! archive.is checking was based on IP ranges, since they spoof their user agents as Chrome and use proxies. I removed that too now. All that should be left is a noindex tag on the 1,200 individual game pages at byuu.org/preservation (which I'm told is very important for web indexers; they're all auto-generated thin-content pages.) I believe both archive.is and archive.org ignore noindex anyway, and the full databases are on GitHub at icarus/Database. We should be all good now, but let me know if you find any other issues please.

I don't know how long it'll take for archive.org to remove the exclusion. Requesting it originally took a couple weeks. But they have my approval to start indexing it all again in any case.

I've already paid up for the next year of hosting, so the site should hopefully remain online at least that long, but I might not pay for it forever in the possible event I don't return, so if folks want it mirrored in even more places, now is the time.

Farewell 6 years ago

Hello,

I removed the archive.is check, and requested the entire site to be crawled, which is now done. The entire site is mirrored here: http://archive.is/byuu.org

I also sent an e-mail to the archive.org staff requesting the exclusion to be removed.

I hope this will satisfy your request, and that you can sympathize with why I chose not to do this until retiring.

Farewell 6 years ago

I'll take my leave from HN as well now.

It's truly been an honor! I've always greatly appreciated the links to my articles shared here, and the discussions with everyone on these and other submissions on the site.

I'm hoping to return one day when things settle down a bit in my life. Hopefully when that day comes I'll have some great new things to share. Until then, take care everyone!

Farewell 6 years ago

Thank you kindly! The structural design aspects of programming was one of my favorite parts. I may've gone a bit too far in the final releases of higan with the reference-counted tree to describe system states (specifically serializing the tree is quite involved), but I'm still really happy with the result ^-^;

Hopefully a respite from coding in my spare time will help my hands recover a bit.

Farewell 6 years ago

Ah, yeah. Lovely bunch there.

Fwiw I think your fursona is adorable.

Thank you very much ^-^

Farewell 6 years ago

Thank you! Been calling them a dracat. Half-dragon, half-cat hybrid. It's a play on having traits and tendencies of both ^-^

Farewell 6 years ago

I give you my word, they've had a go at me online since 1998. I'm not worried about criticism directed my way. I mostly deserved it anyway.

But they went after my friends. Someone on an imageboard compiled a list of my friends' real names, photographs they had posted, locations where they lived ... really creepy stuff.

I'm stepping down because I don't want my personal friends and the dozens of volunteers who helped develop my emulators caught in the crossfire.

Farewell 6 years ago

What about this work made you happy? What was the reward?

It's like a really complicated puzzle. I have this game that's not working, and I have this 2 GiB trace log of millions of lines of CPU instructions and registers. I have to sort through it to understand where things went wrong. Sometimes it's obvious and takes five minutes, sometimes it takes two weeks and is mind-bending (like a loop reading from a non-existent I/O register that only breaks because eventually a DMA transfer occurs in between cycle instructions that fetches the correct value onto the data bus, which stays persistent through to the next cycle that compares the value read to finally break said loop.)

I really enjoyed over-architecting the code, and I would build these massively elaborate (read: slow) designs to handle the most ridiculous edge cases (like stacking Game Genie cartridges one after another recursively. It's an incredibly inefficient way of getting more cheat code slots, but you can do it on real hardware, and so I wanted to preserve that experience.)

I don’t get the sense that it was something to do with making the people who used your emulators happy

That of course brought me joy as well. The tone of the farewell post aside, 98% of people throughout my time in emulation have been absolutely wonderfully supportive. It's meant the world to me.

in a way where it’s not necessarily true that anyone else would have come along to do the same thing if you hadn’t done it.

I'm under no delusions of granduer, these were "just video games", but I definitely had the sense that if I didn't do this, no one else would. The SNES was a large part of my childhood, and I had the skill and time to do this, so I went for it.

Farewell 6 years ago

Hey it could be worse, imagine having a link to your own KF thread in a frontpage HN article. Now that's a bad look ^-^;

Referring to GP, of course. I appreciate the link to my reply. For any folks here that read the post, please also read my reply if you don't mind. For folks who don't read the thread at all, just note that this is about me saying dumb things online, mostly when I was a young adult. I haven't actually done anything heinous nor are there substantiated allegations to that effect.

Specifically, my reason for stepping down is because in spite of doing my best to change and better myself, my mere presence was still dragging down the other developers working on my emulators, and my friends were starting to get dragged into things because of their association with me. They went rather easy on me on KF, but there's another 289 pages of this on 4chan. It got to a point where someone there was compiling a list of my friends' real names, photographs, and where they lived. A friend of mine suffered an anxiety attack when I replied to them on social media. Another was fearful enough to delete her Twitter account.

I can handle criticism and admit my mistakes, but I can't handle other people paying the price for them. I feel personally responsible for that, because I am. If I had behaved more professionally, this wouldn't have happened. So it's on me.

Farewell 6 years ago

Working on bsnes and higan were the things that made me most happy. Well, bug hunting was of course stressful but the joy of fixing a bug and seeing new games running was always well worth it! I'm definitely going to miss it a lot.

It was everything else that was a problem. If I could have just been left alone to code in peace and without all these pesky health and work issues, I'd be very happy to continue.

I think I still have a ways to go on the self-improvement, but it's hit a point where I think I need a few months' break to go at it offline, and maybe let my hands rest a while from typing so much. I ended up coming back to things the last two bouts of depression, so we'll see.

Thanks for the kind words, take care as well!

On Emulation 6 years ago

Yes it definitely would be. Every frame of run-ahead requires emulating another instance of the system. So a run-ahead of four frames means needing 5x the processing power. Generally speaking you'd only want 1-2 frames of run-ahead, however. And in practice you can usually skip video rendering during the run-ahead frames to reduce overhead a bit.

On Emulation 6 years ago

E.g., not only do emulators introduce lag, also modern systems tend to be laggier than vintage ones.

Some emulators have run-ahead now, which removes internal processing frames from games. Combined with an adaptive sync monitor, 1000hz USB polling, and other tricks, emulators can actually respond to inputs faster than the original gaming consoles did on CRTs. It's pretty much the closest thing we have to magic.

Here's a video demonstration I made: https://www.youtube.com/watch?v=1AvOa8yt6Vc

An an article of mine explaining the concept: https://byuu.net/input/run-ahead

Find the most qualified engineer in the world to desolder the surface-mount MCU, read out its firmware using the documented debugging mode from the datasheet, and then resolder the MCU back to the system. It won't happen, but it would be nice for posterity.

The Nintendo PlayStation contains an undumped 4-bit NEC MCU for its CD controller. Once that EEPROM bit-rots (it's already past its guaranteed lifetime), the SuperDisc BIOS cartridge will no longer boot as-is. The two fan-made games ported to the CD-drive will no longer function at that point, and we won't ever be able to directly fix this, only to hack around and approximate the original functionality.

I imagine this won't be a significant loss to its new owner, but it's still unfortunate.

"Most importantly, the appeals court also upheld a lower court ruling that prohibits LinkedIn from interfering with hiQ’s web scraping of its site."

How would this affect Cloudflare's "checking your browser" anti-DDoS protection screen, meant to block bot requests from accessing sites?

The problem is you can't move a domain once you've established it. I'm stuck on byuu.org for life. There's 15 years worth of links to it scattered across the web that would all go dark. Or more precisely, that would all suddenly point at spam. I could never get most of them updated.

Even my subdomain from my previous host from 15 years ago is squatted to this day to serve up advertising. It's even aware of the software that I used to host there.

One answer in my view is to remove the maximum length of prepayment for domains. Let us buy a domain for 100 years. Sure, that's $1,000. Maybe throw in a discount. But now we never have to worry about it again, as long as we live. Or at least, as long as the registry lives. It would never be squattable.

Okay, a) that's very clever, but b) mvn is really quite slow. DMA would be faster (presuming the data is on two separate buses, you can't perform RAM -> RAM DMAs.) Barring that, a manually unrolled loop in a slow memory area would definitely beat out an mvn in a fast memory area.

I guess it's easy to judge this 25 years later with all we know now. That was a very cool idea to have implemented back then! Putting the mvn there would definitely be a boost compared to having the mvn be in a slow ROM area (6 master clock cycles per byte transferred.)

What's annoying about that memory space is it's fragmented: $4300-437f is the 128-byte region for DMA registers, but $43xc-f aren't usable (well, $43xf mirrors $43xb for whatever reason. $43xc-$43xe are open bus.)

So basically every 12 bytes, you get 4 bytes that are no longer usable before the next 12 bytes.

I haven't actually looked at this game's code, but it's certainly clever if the author found a way to avoid having to perform unconditional jumps in there that would sacrifice most of the gains in performance.

Oh certainly, it's just beyond what I can do as a C library. I've also seen another approach that implemented a customized libc replacement to allow this to work. But that and modifying the compiler itself are really extreme steps.

It's still doable, and it's definitely worth doing, but I understand the uses I've mentioned are rather niche, so it's unlikely to occur. For one, we still don't have built-in stackful coroutine support even in C++20.

Serialization [1].

Say you want to take a snapshot of where your program is, run the code some more, and then later on restore execution back to that snapshot.

In the parlance of video games and emulators, this would mean save states. You could use these save states to implement speculative execution to eg remove input latency from games using a method called run-ahead [2].

With state machines, this is trivial: just record all the state machine variables. With coroutines / cooperative threading, it's not: the state is all stored on the stack frame.

My stackful coroutine library can do this by essentially memcpy'ing the stack frames themselves, but it comes with some seriously negative caveats: the biggest is you can't save this to disk, because on the next program run, ASLR, etc would invalidate the pointers in the stack frame. In fact, you can't even safely release and allocate new memory between a serialize and unserialize point, or the stack frames may have dangling pointers in them. In practice, this is acceptable and workable for features like real-time rewind and run-ahead.

Library support for C++ coroutine serialization would be trivial since they are stackless. Getting around the limitations I mentioned for stackful coroutines would be immensely more challenging.

[1] https://byuu.net/design/cooperative-serialization

[2] https://byuu.net/input/run-ahead

DoH only hides the domain name lookup. You still connect to the other server by IP. Even $2.50/mo VPS plans offer a unique IP these days, and building a database of IP:hostname is extremely trivial, especially for ISPs that already run DNS resolvers.

But let's be real: the internet is quickly becoming a walled garden, so having access to DNS requests is mostly only going to give you a billion facebook.com + twitter.com + youtube.com + google.com + google-analytics.com lookups anyway.

You may trust Cloudflare, but I do not. I trust my DNS provider. It's fine for me, I keep up on these things and I have disabled DoH already (I don't care for any current DoH provider, and I also rely on /etc/hosts entries.) In any case, my post was only meant to inform. To each their own, use them if you like or if you trust their privacy promises more than I do. But people should be aware that Mozilla silently changed where all your DNS requests are routed to.

Well it would be both, right? A new IP and a new subdomain. When I did that for a wordpress install it had very low (<10) DA. I trust your experience more than my one attempt though.

Also my program was inside a ZIP archive. It did not help me.