SNES Development Part 1: Getting Started
blog.wesleyac.com
SNES Development Part 1: Getting Started
1–10 of 48 posts
Re: SNES Development Part 1: Getting Started
#2The official developer manual? I want to flip through that just to learn more about the system and the context for game development at the time.
Re: SNES Development Part 1: Getting Started
#3Re: SNES Development Part 1: Getting Started
#4Re: SNES Development Part 1: Getting Started
#5I'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
#6On 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
Re: SNES Development Part 1: Getting Started
#7and the snes dev kit
Re: SNES Development Part 1: Getting Started
#8also check out the bass asembler https://github.com/ARM9/bass and the snes dev kit https://github.com/alekmaul/pvsneslib
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
#9Re: SNES Development Part 1: Getting Started
#10If 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.