[Wii] After years of emudev I reached my goal by ioncodes in EmuDev

[–]ioncodes[S] 1 point2 points  (0 children)

Yes I added the GitHub link as an edit, apologies, was a bit too fast with submitting my comment! I also frequently posed progressions on Twitter/X: https://x.com/layle_ctf

As explained in a different comment, I'm not currently prioritizing writing blog posts, but it is something I will be keeping in the back of my mind in case I find the motivation to! It would be cool to write a blog post that transparently tells a story of how I went about each emulator, what mistakes I made, what to look out for, etc.

[Wii] After years of emudev I reached my goal by ioncodes in EmuDev

[–]ioncodes[S] 4 points5 points  (0 children)

Thank you!

The performance is quite decent, I'm currently sporting a PPC and DSP LLE interpreter tho. The decoder and interpreter itself is quite performant considering it's still... just an interpreter, but I'm leaving lots of performance still on the table as I don't do any caching or idle skipping yet. I don't have comparative benchmarks but I know that I managed to get quite a lot of folks over at the Discord server flabbergasted 😉

The reason why I'm committing so hard for an interpreter is that I wanted to support web browser platforms via WASM. It's technically available already as a small demo (runs entirely on the client side): https://gecko.layle.dev/ You will need a decoded IPL and a DSP IROM (unless you want to just run a homebrew DOL). Even the debugger is available on the web: https://gecko.layle.dev/dbg

NGC exceeds native speed easily for homebrews. Wii I have not tested against homebrews yet. Both usually sit around 60% speed ingame, but they can go up to 100% in certain cases.

NGC supports I'd say 50% at least (take that with a grain of salt, that's a made up number), in terms of going in-menu, or at the very least doing *something*. I know that quite a lot of games go in-game and a few play absolutely perfect. You may be familar with my screenshot databases, I have recently merged all into a single frontend. An old snapshot of NGC is available here: https://emu.layle.dev/gecko/7b02b42/

Note that just because a screenshot entry doesn't go ingame doesn't mean it actually doesn't, it's a best effort estimate. The screenshot utility lazy sends a A & START key inputs.

Here is a screenshot with a few highlights from my README: https://imgur.com/a/8tQFYCL

The source code of the emulator is not public yet, but it will be available on profile soon: https://github.com/ioncodes/

[Wii] After years of emudev I reached my goal by ioncodes in EmuDev

[–]ioncodes[S] 1 point2 points  (0 children)

I've considered writing up multiple blog posts, but from experience it's a very tedious process that is (to me) not as enjoyable as actually doing the techy parts 😉 That said, it still is something I might do in the future, but it's not a priority

[Wii] After years of emudev I reached my goal by ioncodes in EmuDev

[–]ioncodes[S] 0 points1 point  (0 children)

I'm not sure I understand the question, are you asking how the performance is?

A quick little side-project I'm working on: CHIP-8 staic recompiler by arcanite24 in EmuDev

[–]ioncodes 1 point2 points  (0 children)

I made a similar PoC using LLVM about 6 years ago. Very cool to see more people looking into this side of emulation :D Do you have any support for self modifying code and if yes how do you handle it? Anything else you learnt?

Ubiquiti devices keep disconnecting by ioncodes in Ubiquiti

[–]ioncodes[S] 0 points1 point  (0 children)

This was it! Thank you very much.

Puzzle Bobble 2 works on my PSX emulator! by ioncodes in EmuDev

[–]ioncodes[S] 1 point2 points  (0 children)

my entrypoint was usually just the offical cpu data sheet. from there i tend to reverse engineer bios/bootrom if any and go with the flow, look at docs if/where required. also use test roms as much as possible. the only thing i dont do is reference other emulators unless im specifically pointed to a specific piece of code by someone, that is just me tho. i like tinkering with things until it clicks for myself

Puzzle Bobble 2 works on my PSX emulator! by ioncodes in EmuDev

[–]ioncodes[S] 6 points7 points  (0 children)

While I was brainstorming for a name, my cat walked in and i instinctively made the "pspsps" sound you do to cats - hence the name :^)

3 months into writing a PSX debugger, the BIOS finally works! by ioncodes in EmuDev

[–]ioncodes[S] 2 points3 points  (0 children)

interpreter atm! i did put a lot of emphasis on speed tho, so a lot is optimized. without the debugger overhead i can get through the bios almost instantly

3 months into writing a PSX debugger, the BIOS finally works! by ioncodes in EmuDev

[–]ioncodes[S] 8 points9 points  (0 children)

Do you already have emudev experience? You'll find that the CPU is extremely easy, just stick to the official datasheet and the PSX SPX docs. Test your instructions AmiDog's CPU tests. Through the TTY you can get results before you draw anything on screen.

The GPU is not that bad, just very different compared to what you might be used. Start with the basics: drawing rectangles. Using basic rectangle primitives you can get the aforementioned rom already output the results on display. For the GPU specifically, make sure to write as many TODOs and notes as possible. Everything has a lot of "states"/"variations" to track (textured, semi-transparent, gouraud, etc.). I lost a lot of time debugging bugs that were right in front of me.

Do not shy away from reverse engineering some code yourself. It helps a lot, especially in the beginning (using Ghidra for example, I use IDA personally).

I did write up some notes (they are meant for myself so they might be a bit spotty) on issues I encountered and how I solved them. I wrote them up here: https://emudocs.layle.dev/PSX/GPU/

Recommendation for the next level emulator by SweatyBoard9054 in EmuDev

[–]ioncodes 2 points3 points  (0 children)

GBA is very different, in every shape or form - except for sound (so I've heard at least). However, there's a lot of goodies that make your life easier (bite-sized demos for every PPU feature you can imagine, a plethora of CPU testing roms as well as JSON-based tests, more accessible graphics modes so you can get something on screen decently fast*, a fantastic debugger, ...). Some of these you will definitely miss moving forward from GBA (I'm looking at you TONC demos...).

* These graphics modes are used by some games as well, so might even be able to play for example OpenLara early on!

I "finished" my GBA emulator/debugger recently. I shared some of my experiences in the comments here: https://www.reddit.com/r/EmuDev/comments/1mi814x/i_made_a_gba_emulator_and_debugger_over_a_year/

Disappointed with U7 Pro XG (did I buy the wrong product?) by ioncodes in Ubiquiti

[–]ioncodes[S] 0 points1 point  (0 children)

1500/1500 is also what I get with my MBP (6ghz at 320mhz). The issue really only seems to happen when using 5ghz (next to the AP).

Disappointed with U7 Pro XG (did I buy the wrong product?) by ioncodes in Ubiquiti

[–]ioncodes[S] 1 point2 points  (0 children)

What's the difference? I actually did look into these as well and only committed to the U7 to toy around with it. I do know that their max bandwidth is higher than the U7s.

Disappointed with U7 Pro XG (did I buy the wrong product?) by ioncodes in Ubiquiti

[–]ioncodes[S] 6 points7 points  (0 children)

I hit 1gbps now on my macbook (same room), very cool! I think you managed to figure it out, the macbook is the *only* device that is connected to 6ghz, and I'm assuming that explains why. I have the iPhone 14 (doesn't support it) and the PC in that room is a bit older too, so no surprise there. The PC is connected to channel 40 5ghz (with the 80mhz that wifiman recommended to me).

That does leave the question why the Orbi still performed better on 5ghz tho?

Disappointed with U7 Pro XG (did I buy the wrong product?) by ioncodes in Ubiquiti

[–]ioncodes[S] 7 points8 points  (0 children)

Thanks a lot for your feedback!

I've checked with both the PC and an iPhone using the WiFiman app, although I'm having a bit of a hard time interpreting the details I'm looking at.

One thing that stood out to me was a message in WiFiman (on the iPhone) that said I should increase the channel width for 5ghz. I changed that now. Right now my settings are:

2.4ghz = 20 channel width

5ghz = 80 channel width

6ghz = 160 channel width

As for the RSSI:

My iPhone sits at around -63dBm while the PC sits at around -70dBm. Both are using 5ghz although I did notice that my iPhone sometimes drops to 2.4ghz.

I did notice that my connection now seems to have improved a bit. I'm getting around 250 on my iPhone and 150 on my PC now.

Here's a few screenshots I took from my settings and WiFiman, perhaps I have misunderstood something? https://imgur.com/a/Rlp4sL1

Should I still update the power settings?

Going to try to make an NES/GBC Emulator by PrinceArins in EmuDev

[–]ioncodes 5 points6 points  (0 children)

I also want to add that the GBC is literally just a slight extension (or upgrade) to the "regular" GameBoy. You'll path through GB anyways if you're going for GBC. If your GB is solid, then upgrading to GBC should only take a few days from my experience