tokumaru wrote:That's confusing as fuck. If I was ever gonna jump into 16-bit development, I'd probably choose the Genesis/MD, which appears to have a much more consistent architecture, without a shit-ton of possible configurations, from memory mappings to video modes.
I'm beating a dead horse here, but the color count kills it for me. Honestly, I think the onscreen color count on the SNES is kind of mediocre, especially when you see an arcade system from 1985-1986 or so that's inferior to the SNES in every way except it has over twice the number of colors. Hell, no need to look further than the PCE, and it was a home console. Anyway, if I were to go for a "balanced" 16 bit system, I would have started out with the M92.

(Unfortunately though, it has piss poor documentation...)
tokumaru wrote:Is there at least a consensus on what's better to do on the SNES these days, when cost isn't such a big factor?
Definitely FastROM. (You'd be a sucker not to use it.) I don't know about LoROM vs. HiROM, but I'd probably use HiROM because it's easy to switch over to ExHiROM if you find yourself running out of memory with graphics or whatever. (Although I can't imagine myself ever filling up over 4MB worth of graphics at the rate I draw... Better be safe than sorry?)
You know tepples, I was always under the impression that you made this (SNES.cfg) and although I think it's meant for LoROM, will it work for HiROM?
Code: Select all
# ca65 linker config for 256 KiB (2 Mbit) sfc file
# Physical areas of memory
MEMORY {
ZEROPAGE: start = $000000, size = $0100; # $0000-00ff -- zero page
# $0100-01ff -- stack
BSS: start = $000200, size = $1e00; # $0200-1fff -- RAM
BSS7E: start = $7e2000, size = $e000; # SNES work RAM, $7e2000-7effff
BSS7F: start = $7f0000, size = $10000; # SNES work RAM, $7f0000-$7ffff
ROM0: start = $008000, size = $8000, fill = yes;
ROM1: start = $018000, size = $8000, fill = yes;
ROM2: start = $028000, size = $8000, fill = yes;
ROM3: start = $038000, size = $8000, fill = yes;
ROM4: start = $048000, size = $8000, fill = yes;
ROM5: start = $058000, size = $8000, fill = yes;
ROM6: start = $068000, size = $8000, fill = yes;
ROM7: start = $078000, size = $8000, fill = yes;
}
# Logical areas code/data can be put into.
SEGMENTS {
CODE: load = ROM0, align = $100;
RODATA: load = ROM0, align = $100;
SNESHEADER: load = ROM0, start = $ffc0;
CODE1: load = ROM1, align = $100, optional = yes;
RODATA1: load = ROM1, align = $100, optional = yes;
CODE2: load = ROM2, align = $100, optional = yes;
RODATA2: load = ROM2, align = $100, optional = yes;
CODE3: load = ROM3, align = $100, optional = yes;
RODATA3: load = ROM3, align = $100, optional = yes;
CODE4: load = ROM4, align = $100, optional = yes;
RODATA4: load = ROM4, align = $100, optional = yes;
CODE5: load = ROM5, align = $100, optional = yes;
RODATA5: load = ROM5, align = $100, optional = yes;
CODE6: load = ROM6, align = $100, optional = yes;
RODATA6: load = ROM6, align = $100, optional = yes;
CODE7: load = ROM7, align = $100, optional = yes;
RODATA7: load = ROM7, align = $100, optional = yes;
ZEROPAGE: load = ZEROPAGE, type = zp;
BSS: load = BSS, type = bss, align = $100, optional = yes;
BSS7E: load = BSS7E, type = bss, align = $100, optional = yes;
BSS7F: load = BSS7F, type = bss, align = $100, optional = yes;
}