8 ms·
Nintendo 64 Java
- exabrial 4y ago> "RISC architecture is going to change everything" Classic
- deleted 4y ago[deleted]
- aussieshibe 4y agoMaybe I'm missing something here? This line read like a joke / sarcasm to me. But RISC did change everything, didn't it?
- chaosite 4y agoIt's a quote from Hackers (1995). https://www.youtube.com/watch?v=wPrUmViN_5c https://www.youtube.com/watch?v=wPrUmViN_5c
- newswasboring 4y agoI just rewatched that clip, did the writer transition from technobable to relationship dialogue? Because the scene has this tension and saying "RISC is good" can also be heard as "risk is good".
- doublerabbit 4y agoCould be a double entendre? Great film.
- kQq9oHeAz6wLLS 4y agoYes, that was very intentional
- aussieshibe 4y agoThanks, somehow I've never seen this movie.
- kevin_thibedeau 4y agoSuperscalar processors are a bigger advancement.
- asveikau 4y ago> But RISC did change everything, didn't it? Iirc it's not such a meaningful distinction anymore. "CISC" x86 uses micro-operations internally. "RISC" ARM has several different instruction encodings (ARM, Thumb, Thumb-2, A64). Increasing numbers of people are working in high level languages anyway.
- msla 4y ago> "CISC" x86 uses micro-operations internally. Like generations of CISC before it. That doesn't make it any less CISC. https://userpages.umbc.edu/~vijay/mashey.on.risc.html https://userpages.umbc.edu/~vijay/mashey.on.risc.html From that page, which collects a number of Usenet posts by John Mashey: > The RISC characteristics: > a) Are aimed at more performance from current compiler technology (i.e., enough registers). > OR > b) Are aimed at fast pipelining > - in a virtual-memory environment > - with the ability to still survive exceptions > - without inextricably increasing the number of gate delays (notice that I say gate delays, NOT just how many gates). The point b is where RISC chips really pulled away from CISC in terms of architectural design, especially chips like the MIPS, which Mashey worked on: The MIPS had a number of points where it exposed the tricks it used to pipeline more aggressively, even at the expense of making compilers somewhat harder to write and/or human assembly-language programmers think a bit harder. However, the lack of complicated addressing modes (post-increment, scale-and-offset, etc.) and the lack of register-memory opcodes with ALU operations, and total lack of memory-memory operations, is still a very common feature of RISC design.
- bee_rider 4y agoThat seems like RISC changing everything. How much did it change things? CISC has been transformed from a true competitor to RISC to a sort of abstraction layer on top of it.
- astrange 4y agoThat's not really true. x86 chips are not secretly RISC inside; the microcode often corresponds to individual instructions, it has complex things like 'lea' that are quite efficient, and you can't really abstract away things like variable length instructions.
- Gordonjcp 4y agoWell yeah, kind of. In the olden days we thought that massively complex instructions on chips with huge microcode would be just the thing. Simplify your code by calling a single machine code instruction that does a complete matrix manipulation, or solves a polynomial, kind of thing. It turned out that making CPUs that worked that way was expensive and complicated, and if they didn't quite work you were stuck with it. Then, it further turned out that actually it was easier to be Good At Software than it was to be Good At Hardware. If you wrote a clever assembler, and a clever compiler, and some clever libraries, you still didn't need to care about solving horrible maths, you just called a function to do it. And then, we came around to the idea that it was faster to use small simple instructions and cache a lot of them, and keep as many of the values we were juggling in registers so you didn't waste time with a memory cycle. So, CPUs got simpler instruction architectures and all that space previously used for selecting ever increasingly baroque instructions in the opcode could be used to select from an ever-growing number of registers. Ultimately CPUs will be only able to do a lsl, mov, add, and xor, in a single conditional instruction, with 131072 64-bit registers to choose from, in a single clock cycle at 10GHz or so. People will still say "well yeah but do you really need that add?"
- kllrnohj 4y agoRISC changed everything just like CISC did. It was a product of changing times & tradeoffs. Both RISC and CISC are effectively marginalized, though. The current trend for everything beyond embedded is somewhere kinda in the middle. With the some pretty pointless nitpicking about if something is or isn't RISC and devolving that entire movement down to just "but it doesn't do memory indexing!" or whatever. It turns out what makes a fast processor is something that uses both RISC and CISC ideas. And that's what nearly everything does these days as a result, because speed is all that matters
- mberning 4y agoThat's really cool. I had not heard of Java Grinder before, but I'm definitely checking it out.
- monocasa 4y ago> Most likely most game devs used someone else's RSP code Yeah, almost all RSP code used was written by SGI/Nintendo and used as shipped in the SDK. For a long time emulators simply high level emulated the RSP code based on the hash of the RSP binary and accepted that a few games like Rogue Squadron simply wouldn't run.
- JamesSwift 4y agoI couldnt find an answer online... what does RSP stand for?
- mikepurvis 4y agoReality Signal Processor: https://www.retroreversing.com/n64rsp https://www.retroreversing.com/n64rsp Basically a very, very early programmable GPU, but you were writing actual firmware for it, rather than writing the kind of high level shader functions that would come a decade+ later.
- tadfisher 4y agoI always heard it referred to as "microcode", and there were different RSP microcode packages floating around, shipped by Nintendo/SGI, or programmed from scratch and included in the ROM.
- monocasa 4y agoYeah, it was called that, but the term microcode was a bit of a stretch. It's a relatively straightforward 32bit MIPS with a 8x16bit SIMD vector unit strapped to the side as MIPS coprocessor 2. One cute thing is that since it can only access 4KiB of data, and load/store offsets in MIPS machine code are 12 bits, you can build any pointer in the load/store itself simply offsetting from the zero register. That's in contrast to most MIPS code where you generally need to build the pointer in a register first (or at least burn a register to be the global pointer).
- deleted 4y ago[deleted]
- als0 4y agoProjects like this is why I come to Hacker News.
- samspenc 4y agoAnd first I've heard of Java Grinder, really interesting and cool project, I wonder why I never heard of it before.
- andrewmcwatters 4y agoThe graphics and music are next level. I love it.
- sebazzz 4y agoJava runs on one million devices plus one, it appears :-)
- deleted 4y ago[deleted]
- naet 4y agoI want one of those Everdrive 64s for myself to play with N64 development but it's nearly the price of a new console at $200...
- qiqitori 4y agoThis is one of the things (along with repair) that finally motivated me to learn electronics. You could probably build your own Everdrive 64 for less than $20! (Plus hundreds of dollars for an oscilloscope and other equipment but you can keep that for the next project) Maybe worth it?
- ThatPlayer 4y agoThere's an open source effort to build one with a Pi Pico: https://github.com/kbeckmann/PicoCart64/tree/develop https://github.com/kbeckmann/PicoCart64/tree/develop I have no clue how tested it is, and README mentions only up to 2MB ROMs, but it is a start.
- hcs 4y agoLooks like it might work up to 16 MB? # If you have more than 2MB flash, you need to change the flash size by adding -DFLASH_SIZE_MB={one of 2,4,8,16} here. 2MB might be a minimum, as the standard bootcode needs 1MB + 4KB. See my boot_stub or modified 6102 bootcode for ways to bypass the 1MB checksum: https://hcs64.com/n64info.html https://hcs64.com/n64info.html
- ThatPlayer 4y agoI think it's actually a limitation of the Raspberry Pi Pico only having 2MB of flash space while some other RP2040 boards can support up to that 16MB. Reading SD cards with the PIO might be a bit much so the project README mentions the 'next-gen' version with added RAM
- fexecve 4y agoThere are knockoffs for a lot less, the author here is even using one. But then you aren't supporting the inventor of the thing, just a factory that's churning them out somewhere. Nobody asked, but I'll list differences I've noticed between the real everdrive and the knockoffs: Games that require a cartridge battery won't won't work correctly on the clones, the SD card slot is a lot cheaper on the clones, and the clone doesn't have a USB port (which I think is used for live game dev debugging?)
- davb 4y agoWhat a wonderful project to read about. It’s too easy to get into a mindset where you auto-filter your ideas based on whether or not it’ll make money, or directly help you reach some career goal (especially in the HN bubble). This is fun. This is art. I wish I took more time to do “pointless” (in the least derogatory sense of the word) projects like this one. Bravo.
- lostgame 4y agoI think; for myself, at least - doing ‘useless’; or passion/pet projects are a way to ‘keep up your chops’ or the like as a developer, and keep your inspiration for it. I do SEGA Saturn homebrew, and mostly actually just experiments (I’ve never published any of my Saturn projects so far, though I intend to for one of them), and I only really do it for the obscure interest of learning a kind of fairly obscure and complex processor and co-processor architecture for…the love of it? I don’t care if I make money off it; I don’t really need to, I don’t care if people see or use it; because that’s not the purpose behind the exercise, and I guess that does seem almost strange but the curiosity and learning is what drives me. I work a 9-5 as a mobile developer and it’s honestly usually not that challenging or growth-inducing. Not that I’m complaining, I love my job and my company, but in order to stay passionate and ‘into’ programming I find doing these weird passion projects really helps. Hope that makes sense! EDIT: I’m also a music producer, and one task I really like to do in a similar way to ‘keep up my chops’ is to re-produce an almost carbon copy of a song I’m interested in particular audio engineering qualities about to, EG, learn about particular techniques being used. I’ll obviously never be able to use or sell them, but I can re-apply the techniques I learned in that experience elsewhere.
- sasas 4y ago> I’m interested in particular audio engineering qualities about to, EG, learn about particular techniques being used Have you considered combining your enjoyment for audio production with your programming skills to develop audio plugins? This is also something that could be monetised, although the VST market seems to be pretty saturated. Start as a side project and see where it leads !
- 4y ago
- Decabytes 4y agoIs there an equivalent to Java Grinder for C#?
- jayd16 4y agoThe latest version of .NET has official AOT support. https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/ https://learn.microsoft.com/en-us/dotnet/core/deploying/nati...
- pjmlp 4y agoPlenty of .NET versions have AOT support in different flavours, - NGEN (part of .NET since day 1) - MDIL (Windows 8 and 8.1 store apps, partially based on Sigularity) - .NET Native (UWP, partially taken from Midori/Project N) - Mono AOT (Xamarin and Blazor) - IL2CPP / Burst (Unity) - CosmOS And now NativeAOT, which currently only supports CLI and libraries workloads.
- grishka 4y agoNow I wonder if there are any AOT compilers for Java besides OP's (though it's of limited utility as it doesn't implement garbage collection) and GraalVM.
- pjmlp 4y agoYes since around 2000, mostly suffered from being commercial offerings, thus only available in enterprise shops. - Excelsior JET (one of the most known ones, nowadays out of business) - Aonix (now gone, acquired by PTC) - PTC (https://www.ptc.com/en/products/developer-tools/perc https://www.ptc.com/en/products/developer-tools/perc) - JamaicaVM (https://www.aicas.com/wp/products-services/jamaicavm https://www.aicas.com/wp/products-services/jamaicavm) - Android since version 5 (https://source.android.com/docs/core/runtime/jit-compiler https://source.android.com/docs/core/runtime/jit-compiler). With version 7 it became JIT/AOT as mechanism to reduce compile times. - J/Rockit had JIT caches (nowadays merged into OpenJDK) - WebSphere Real Time and AS/400 JVM, nowadays lives on as OpenJ9 AOT (https://www.eclipse.org/openj9/docs/aot https://www.eclipse.org/openj9/docs/aot) - Jikes RVM (https://www.jikesrvm.org/Resources/Presentations/ https://www.jikesrvm.org/Resources/Presentations/) - JX research OS (https://en.wikipedia.org/wiki/JX_(operating_system) https://en.wikipedia.org/wiki/JX_(operating_system)), not really AOT, but everything gets compiled to native code when loaded, before use There were also some hardware implementations using the JVM bytecode as Assembly, - JOP (https://www.jopdesign.com https://www.jopdesign.com) - picoJava (https://en.wikipedia.org/wiki/PicoJava https://en.wikipedia.org/wiki/PicoJava) - ARM's Jazelle (https://en.wikipedia.org/wiki/Jazelle https://en.wikipedia.org/wiki/Jazelle)
- kristianp 4y agoDoes this open the door for a minecraft port of the java version?
- deleted 4y ago[deleted]
- rtpg 4y agoThere's also a PS2 version, really cool stuff to see. I don't know what schools are like nowadays but when I was in school I was taught Java and it feels like giving people ways to use that language in odd places is only going to bring about more good and fun projects to the world
- ahir 4y ago[flagged]
- tw1984 4y agoany doom port for java? will be cool to see Doom running in a jvm on a game console.
- deleted 4y ago[deleted]
- pjmlp 4y agoPlenty, https://www.google.com/search?client=firefox-b-d&q=doom+java https://www.google.com/search?client=firefox-b-d&q=doom+java
- pushedx 4y ago"It's me, Java!"