> it took me an hour to figure out how to load a rom-image into it
Don't worry, the next release is going to feature an external DLL to load files, and it'll accept files in the format you're used to.
I presume that will make koitsu very happy as well.
> at least if they are padded to min 32kbytes, else nothing happens
Not having enough ROM data to describe a reset vector isn't very fun
> And I thought no$sns was a bit old-fashioned, and the more modern emus would work by click-and-play
I do things the more correct way, rather than the easiest way. I'm not in it for the popularity.
But yeah, the external plugin works nicely. Lets me put all the legacy code somewhere outside the emulator, which is something I can tolerate.
> Looks as if there is at least one secret still hiding in the console.
I'm skeptical, but do let me know when you figure it out, I'll confirm your findings on the five or so decks I have here.
For what it's worth, there' a lot more than one secret remaining.
CPU:DMA/HDMA crash on CPU revision 1
If you start a DIV during a MUL, or vice versa, the results are psychotic
Initial values in WRAM are off the wall crazy; they vary per system and per reset ... approximating it to some degree would be good
On the very first frame only, the VIRQ value is off by one scanline
What is the exact timing involved in auto joypad polling? I only have an approximation because it is hard to test with manual input.
Need to wire up an Arduino to send deterministic data to it or something.
SMP:The TEST register has two mystery bits that make the timers go crazy.
DSP:When you mute a channel, it fades out and does not silence immediately
PPU:We barely understand this at all. Almost no data on cycle timings here.
What if you use the MUL functionality during a Mode7 screen rendering?
What if you toggle a BGMODE in the middle of a scanline? (god help us if it actually gets acknowledged ...)
I wrote some fun tests that wrote text on the screen by changing the registers mid-scanline. But otherwise, nobody's interested in emulating or coding for the PPU like this ... I currently have the only dot-based PPU renderer, and it's as slow as you think it is.
SuperFX:What happens if the secondary pixel cache fills up and the SFX CPU is accessing RAM? Does it interleave writes, or does one stall the other? If the CPU can stall the secondary pixel cache, you could have a RAM-only program permanently cause it to stay full.
SA-1:Some registers can only be accessed from the SA1, some from the CPU.
The stuff no games use is not understood: H/VIRQs (how does it time the H/V position?), clock-IRQs, etc.
How in god's name do we emulate the SA-1 memory conflict controller that stalls its CPU when the SNES CPU is reading from ROM/RAM? That's going to require monstrous overhead. We can't afford to step both the CPU and SA-1 one clock tick at a time.
DSP-n/ST01n NEC DSP:How do OV1 and S1 flags work? Documentation sucks.
Cx4 / Hitachi DSP:How does the program RAM work? It caches pages, but what's the overhead on that? Are all opcodes one cycle each?
Currently my emulation causes Rockman to die in the intro, unless you set a different frequency rate
$70-77:0000-7fff always returns 0 when read. Looks like it has the option to have RAM pass through it, but MMX2/3 didn't use that.
What's with all the regs? $7f52 has to be 1 for MMX3 to read past 1MB; has to be 0 for MMX2 to read past 1MB.
ST018:What's with the timer value thing?
Cydrak wrote a cool exploit to crush the stack and execute uploaded code out of RAM.
SPC7110:What does $4808 and $58:0000-ffff do?
What in the hell was the intended usage of the interleave/skip functions on decompression? What are the timing restrictions there?
How do we emulate bad input data causing the decompressor to 'crash' and spit out junk?
SPC7110-RTC:There's some interesting delays for certain actions, if you start reading too soon you get crazy stuff happening that's not in the datasheet.
SDD1:Can DMAs happen on any channel? If not, which bits control activating decompression DMA?
How the hell does the SDD1 know when a DMA is taking place?
What's with the crazy read data when you set bank selections bigger than the ROM size?
How do we emulate this chip crashing on bad input data (like a string of 0x00s for a long time)?
SRTC:There's a test register we know nothing about.
I haven't mapped out how the BCD works on invalid values. Took me a fucking week to do that for the SPC7110-RTC.
> Don't know when I get around to extract my ARM assembler/disassembler/emulator from no$gba for use in no$sns
Yours may be a bit trickier because I bet you share ARMv4/v5 for your NDS emulation; but I use the same CPU core for the GBA and ST018 (ARMv3), and it works fine. I need to make a separate instruction table to omit the v4-only stuff though.