Live data from Hacker News

SNES Development Part 1: Getting Started

blog.wesleyac.com

1–10 of 48 posts

Re: SNES Development Part 1: Getting Started

#3
Also:

Part 2: https://blog.wesleyac.com/posts/snes-dev-2-background-graphi...

Part 3: https://blog.wesleyac.com/posts/snes-dev-3-input

Part 4: https://blog.wesleyac.com/posts/snes-dev-4-nmi-and-vblank

Part 5: https://blog.wesleyac.com/posts/snes-dev-5-dma

Part 6: https://blog.wesleyac.com/posts/snes-dev-6-sprites

Re: SNES Development Part 1: Getting Started

#5
Personally instead of Mesen-S, I'd use the fork at https://github.com/NovaSquirrel/Mesen-SX, which contains a fix for saving settings on Linux Mono 6.12 (https://github.com/NovaSquirrel/Mesen-SX/commit/c374ca8b9ed3...).

I'm more interested in SPC700 development for SNES music. Mesen-SX has a SPC debugger separate from the main debugger, but I'm not sure if it's more or less useful than bsnes-plus (I know the Mesen emulators have a far worse Linux UI when running under Mono, and I haven't tried running the Windows Mesen under Mono or real .NET yet). I don't know enough to judge if the disassembler is better or worse than bsnes-plus though.

Re: SNES Development Part 1: Getting Started

#6

On a related note, the Retro Game Mechanics Explained YouTube channel has excellent videos about how SNES hardware works: https://www.youtube.com/c/RetroGameMechanicsExplained/videos

I love this channel. My favorite video is the one about lag and blanking interrupts which is so widely applicable even today.

https://youtu.be/Q8ph2OVqZeM

Re: SNES Development Part 1: Getting Started

#8
post #7

also check out the bass asembler https://github.com/ARM9/bass and the snes dev kit https://github.com/alekmaul/pvsneslib

I generally advise against using bass for home-brew development. Bass is not a very well thought out assembler. I've never used it for 65816, but for other architectures like MIPS has some serious design issues that cause invalid code to be silently accepted by default, which is normally a disaster when it gets to debugging.

For MIPS at least, one of the completely wrong design decision has been to map basic register indices to raw numbers. For instance, in bass, this is a valid instruction:

    add 2, 4, 5
which means "add register 4 and 5 together and write the result in register 2". Normally, one would write that line with the register aliases:

    add v0, a0, a1
The problem comes with the fact that MIPS has also a "addi" (add immediate instruction) that you would use like this:

    addi v0, a0, 5
"add the immediate value 5 to a0 and store the result in v0". So I guess the problem is clear: what happens if you instead write:

    add v0, a0, 5
There are two possible reasonable outcomes: either the assembler should reject the above line as invalid, or it should silently convert it to "addi" which is what GNU as does for instance. Instead, with bass, the above is a perfectly valid line which gets assembled to the same of "add v0, a0, a1", which basically silently generates wrong code.

I think bass was a quick hack that overgrew its intended goal. I suggest to use something more mature.

Re: SNES Development Part 1: Getting Started

#10

If you decide you really enjoy 65816 development, just a gentle reminder: The Apple IIGS dev community would love to have you and we're seeing new hardware releases at a pace we haven't seen since the 1990s.

Is there a good website/subreddit/etc for the Apple IIGS dev community you’d recommend?
Post reply on HN