8 ms·
Emulating a PlayStation 1 (PSX) Entirely with C# and .NET
- nineteen999 7y ago> We often hear Full Stack in the context of a complete distributed web application, but for many the stack goes down to the metal. This emulator literally boots up from the real BIOS of a Playstation and emulates the MIPS R3000A, a BUS to connect components, the CPU, the CD-ROM, and display. As I say probably too often, the modern usage of "full stack" basically equates to "iceberg tip".
- jsingleton 7y agoMy background in Electrical Engineering has really helped me as a developer. Too often we ignore the computer in computer science. If you are unfamiliar with how you get from silicon to transistors, to logic circuits, to CPUs, then it's worth reading up on.
- bigredhdl 7y agoI've had the same experience. Understanding how the thing you are programming actually works can really help, at least in certain domains.
- wyldfire 7y ago>As I say probably too often, the modern usage of "full stack" basically equates to "iceberg tip". I'd never heard it prior to five or ten years ago. It's always been a pretty ambiguous term IMO. I think it may have been coined to make some genuine distinction but just how broad was it intended to mean? The question is moot because it was quickly spread to mean very different things. You need a lot of context to make a good guess what it refers to.
- nineteen999 7y agoI've only ever heard the term relating to web or mobile applications programming, and more often than not, where the application is cloud hosted. See the following for an example: https://hackernoon.com/6-essential-tips-on-how-to-become-a-full-stack-developer-1d10965aaead https://hackernoon.com/6-essential-tips-on-how-to-become-a-f... Important bits almost always left out: provisioning of hypervisors, network switching/trunking/routing, security, embedded on the backend, etc.
- alkonaut 7y ago"Full stack developer" is short for "Full stack web developer". Outside of web development it's rarely used. For other areas, we usually talk about "Systems programming" or "Application programming". I suppose the full stack there would be to do both?
- scarface74 7y agoAnd I hate the term there. I’ve seen too many “full stack” Microsoft developers who couldn’t troubleshoot the simplest database or IIS issues. Let alone figure out why their web app wasn’t communicating with a back end dependency. Even if they don’t have the authorization to fix it. They should at least be able to tell the ops folks what they need.
- nineteen999 7y agoIt's just that outside web programming, very few developers/programmers I know would refer to themselves as being able to program the "full stack", presumably meaning from the ISA level up to database programming, GUI and network programming etc etc. although there are plenty of people who can do all these. Even the omission of the word "web" as you have pointed out, seems to have the smell of arrogance, as if web programming is all there is worth working on these days. But the web programming world, IMHO, is full of this kind of CV inflating jargon, lingo and buzzwords, whether it's "full stack", "Agile", "devops" etc. Obviously, there is an element of old man "get off my lawn" that I am invoking. I am almost certainly projecting here, but it still grinds me the wrong way.
- pjc50 7y agoSome copies of my CV say "full stack developer from the transistors upwards", which is partly a joke and partly a reference to actually having written everything from web applications to IC design. (Should I link my professional life to my HN account in my bio? Is that the "done thing"?)
- ljf 7y agoYou can do - but then I found myself being discussed and doxed on a forum once, from a very uninteresting or controversial comment I'd made. So up to you...
- tracker1 7y agoHoping SH up-streamed a PR for the shift to .Net Core ... Looks like it's using Winforms... Would be interesting to see the .Net core port, and then shift from winforms to eto forms or something else cross platform.
- yodon 7y agoWow thanks for the pointer to Eto.Forms - cross platform Windows Forms including Linux, OSX, and iOS (but not yet Android) is pretty awesome to hear about
- jsingleton 7y agoSee also https://avaloniaui.net/ https://avaloniaui.net/
- tracker1 7y agoYeah, there's actually quite a few different cross platform projects that support basic to more complex forms. As a fan of Material Design and "The UI formerly known as Metro" I wish more of them would adopt one or the other as a baseline though. I just am most familiar with Eto off the top of my head... mostly because of PabloDraw.
- userbinator 7y agoOf course, that's silly. Good C# can run at near-native speed given all the work happening in the runtime/JITter, etc. The keyword being "near". It's like all the "Java is fast" articles out there --- in theory, you can write microbenchmarks that show your language is fast, but in practice, everyone knows what it's really like. Of course if you have a powerful enough CPU and enough RAM you could emulate any system at a decent speed with any language[1], but I'm willing to bet that if you ran this C# emulator on the best hardware from ~2000 (which is roughly when the first PSX emulators appeared), and compared it to the (native) ones that were around at that time, you'll see a huge difference in performance. I remember a 1GHz Pentium III with 256MB of RAM would've been sufficient for those. [1] The same "fast enough" justification being used to praise writing applications in JavaScript and bundling them with an entire web browser: https://en.wikipedia.org/wiki/Wirth%27s_law https://en.wikipedia.org/wiki/Wirth%27s_law
- andykx 7y agoI think your core point is somewhat valuable, but does it really matter if any modern software could run on such outdated software? Why would I care if my software couldn’t run on a 20 year old machine? The new Raspberry Pi 4s have better hardware specs than the machine you gave as an example. Also, sometimes “fast enough” is just that - fast enough. It is not necessarily true in every case, but sometimes it is.
- mirsadm 7y agoYes it does. People are much more likely to run your software on a battery powered device these days. This can have a massive impact on battery life.
- rjf72 7y agoYou could run this emulator against other "native emulators" (I understand your meaning but surely you see the humor there) and compare and contrast the CPU/memory usage today. I expect you'll be surprised - basing this on my experience developing rendering engines in C# and C++, though I cannot speak for Java. In any case you don't need a time machine to test your hypothesis.
- Hydraulix989 7y agoMaybe this should be a link to the actual project rather than someone else's article telling us that this project exists (even though I really do enjoy reading Handelman's blog)?
- tiernano 7y agoIt was posted last week already: https://news.ycombinator.com/item?id=20917742 https://news.ycombinator.com/item?id=20917742
- Hydraulix989 7y agoOkay, then this post really feels like a dupe then since it isn't a link to the original authors' work.