Hacker Newsnew | past | comments | ask | show | jobs | submit | Flex247A's commentslogin

time to log off

i read that and thought the same. actual based idea its even inspired me to log off

Slight tangent: I made a similar but simpler project that runs DOOM on a custom RISC-V emulator: https://github.com/lalitshankarch/rvcore

Great work!

This reminded me of a project I built a while back: a RV32IM emulator in C++ that can boot and run DOOM. Initially I implemented only RV32I, and implementing the M extension provided a massive speedup!

If anyone's curious, here's the source code: https://github.com/lalitshankarch/rvcore


Nice one! Sounds like a fun project to do. Did you follow any tutorial or guide for this? If so, I would appreciate it if you shared it.


If you don't want to delegate the fun of learning to an LLM, here's how I've built a RV64IM simulator in C in a weekend. All you need is an opcode table, the RISC-V specs and to implement each instruction; the good thing of RISC CPUs is that instructions are very simple (i.e. pretty much everything is a variation of `dest = src1 OP src2`) and memory instructions are dedicated. The other cool thing is that there are no "flags". Start with the base instruction set, then you can add M on top later. 64-bit support requires just a handful more instructions to zero/sign extend from 32-bit.

Then, wire your simulator to https://github.com/riscv-software-src/riscv-tests, and there you have an official test suite. When everything passes, you have a fully-compliant RISC-V CPU. You can at this point tell GCC or Rust or your favourite language to compile to RV32IM and see it run on your simulator. It's a very gratifying process.

If you get at this stage, you might want to use the ecall instruction to hard-code I/O operations such as "read from stdin" or "print a character", and there you have a sandboxed CPU that you can target with your favourite programming language. Make it run DOOM (start with https://github.com/ozkl/doomgeneric and see which I/O do you need), or turn it into a toy game console; the sky's the limit.

---

Here's a copy-paste of the list of resources I have saved in my notes:

- https://github.com/libriscv/libriscv A very fast RISC-V VM with sandboxing of memory and syscalls.

- https://luplab.gitlab.io/rvcodecjs/ RISC-V Instruction Encoder/Decoder

- https://www.cs.sfu.ca/~ashriram/Courses/CS295/assets/noteboo... Reference card

- https://cs.brown.edu/courses/csci1952y/2024/assets/docs/risc... Spec

- https://riscv-software-src.github.io/riscv-unified-db/manual...

- ABI: https://lists.riscv.org/g/tech-psabi/attachment/61/0/riscv-a...

Good luck!


Huge thanks! Will certainly try doing that.


Hi, I didn't follow any specific guide on this, but asked ChatGPT about the bare minimum environment needed to run DOOM. From there, I figured out how to execute the instructions using a switch-case and how to make a custom syscall to trigger rendering.

I made a post a while back that details the entire process: https://www.reddit.com/r/EmuDev/comments/1t1or4j/doom_runs_o...


Thanks, am going to check it out.


Pretty much yeah


Lights in games use real electricity :)


Even the stars use real electricity.


Not really, nuclear fusion doesn’t run on electrons.


So where does the magnetic field come from? ;) ;) ;)


Nuclear fusion produces a million times more energy from proton and neutron collisions than is produced by electron shells during the same event.


The energy leaves the star in the form of EM energy. This is also the energy that is responsible for electricity.


Leetcode monkeys with little dev experience will do that.


By compression they mean dynamic range compression, which loudens softer sounds so they are more audible.

Pop songs for example, are heavily compressed because "compressed" music sounds "better" on cheap external speakers with bad dynamic range. Kinda like increasing the saturation on a cheap TFT panel.


It's also useful for cars, which I think is where most radio listening is done, since you may not hear the quiet parts.


Just when it was included in S&P500 :(


Personal plug: https://github.com/lalitshankarch/Qitab

This is a small EPUB reader I made that uses the system Webview to render EPUB documents!


This is nice!


Not a good idea for someone with memory loss to use an LLM, especially when they are prone to hallucination!


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: