Thread summary and reboot
This thread's getting longer and longer and I keep getting lost while trying to find "subthreads", like the naming subthread, the audio emulation subthread, the game playability subthread, the speedhack subthread, the request subthreads and the various subthreads started in the
original CATSFC thread, "CATSFC released". So this is a compilation of what's up right now, and the questions that still stand.
Naming subthread
See above (post #380)
Audio emulation subthread
the_randomizer, in post #4, started this subthread.
Since CATSFC 1.08, I have done many things to improve the audio, which improved the speed of the rest of emulation as well. Most notably, I redid the way the sound is synced in CATSFC 1.25, meaning the note lengths jump less, which may have been what the_randomizer was referring to. In addition to fixing the note lengths, this allowed me to raise the sampling frequency to 32 kHz and enable interpolation in version 1.29, which makes CATSFC sound very close to a real SNES in a lot of games. I have a working SNES here, and I played Yoshi's Cookie on my DS and that SNES and they sounded almost identical, barring slight timing issues like the music running 0.3% too fast or too slow.
the_randomizer, in post #35, continues this subthread.
I would like someone with a non-crappy camera and/or mic to record a video for the_randomizer's perusal, if possible. Then I want to know whether that's good enough. As he or she says in post #85:
Normmatt, in post #138, continues this subthread.
I managed to make it lag much less in 1.25 with just gcc -O3. I now have more understanding about the MIPS instructions I can submit to the DSTwo, and it doesn't seem to be anything more than just MIPS 1 (32-bit), so I can't vectorise anything in handcrafted ASM to speed it up. The JZ4740 doesn't even support the MIPS DSP extension.
The problem, as I've written in
post #203, was that the DSTwo tried to push 92 milliseconds of audio to the DS within a 20-millisecond frame.
Controls subthread
Rydian, in post #28, started this subthread.
Rydian, in post #123, continues this subthread.
Rydian, in
post #214, continues this subthread with a video.
Since CATSFC 1.08, I have made many efforts to improve the controls, which only recently culminated in CATSFC 1.29 which has perfect controls at the cost of making automatic frameskip equivalent to at least frameskip 2 (20 FPS in NTSC, 16.66 FPS in PAL). CATSFC 1.08 had bad controls even after my first attempt at a fix, and the lag persisted through all versions except 1.24 for some people. 1.17 was a Timer-Interrupt Audio Edition, so it had awesome controls but it crashed. 1.24 was an attempt at making the sound rendering tie up less processor time, and for many people it succeeded in making the controls better, but controls still jumped for me. In 1.28, I managed to get it perfect, or so I thought: the controls would lock up for 2 seconds every 20, but otherwise would be perfect. 1.28 had about 40 FPS in many sprite+BG games. 1.29 finally did it right.
Game playability subthread
Rydian in post #28 started this subthread with the report about Super Metroid.
Since then, the frame rate has decreased and increased in various versions, but in 1.29 is on the rise again.
mechagouki in posts #36 and #40 continues this subthread. The Secret of Mana subthread extends from the original CATSFC thread.
Since then, I have implemented a fix for Secret of Mana and Seiken Densetsu 3. The fix for Secret of Mana broke the Rareware icon in Donkey Kong Country, but the fix for SD3 restored it. nitendo in
post #104 has reported that this also fixed text in Treasure of the Rudras. The Secret of Mana/SD3 subthread ends at my
post #174. I remember it playing at ~8 FPS during the message box parts in those two games; how are those two games in CATSFC 1.30?
ferret7463 in post #41 continues this subthread.
I don't know how well Mega Man X2 and X3 work in CATSFC 1.30 compared to ShadauxCat's 1.1. wolfmanz51 has a big compatibility list, which would be best hosted on WikiTemp, for this.
Killermech in post #105 continues this subthread.
Since then, Aladdin has also had a sound bug fixed when reloading states. I'm curious to see how playable it is on 1.30 versus 1.13.
granville in post #146 continues this subthread.
Do Yoshi's Island, Mario RPG or Kirby Super Star work any better in 1.30 compared to 1.18?
nitendo, in post #191, continues this subthread.
This is an outstanding bug; I'd like it to go on GitHub, please. CATSFC needs to be updated to Snes9x 1.52+ by one or more porter(s).
remjay24, in post #192, continues this subthread.
Are any of these games better than 1.23 with 1.30?
Also, can someone take wolfmanz51's compatibility list from post #250 and put it on WikiTemp somewhere? I'd put a link to the page on the first post.
Donations subthread
2ndApex, in post #233, continues this subthread. It started in the original CATSFC thread, for different reasons in Shadaux's case.
I dare not demand donations (and can't, due to the Snes9x non-commercial license), and am not in a situation where lack of money is life-threatening like Shadaux, but I am quite broke, lacking a college diploma for 3 more months due to a missing "internship class" and having no financial aid - so any donations you guys want to make would be appreciated if you appreciated my updates. I have no Paypal, so something would have to be arranged in private. BassAceGold contributed to some optimisations I used in later versions which proved fruitful, such as Direct Memory Access (DMA) to draw emulated frames and de-interleave the ROM, as well as overclocking in the experimental branch and faster file reads with his libBAG, so I would split with him. Or you could split it yourself and give money where you think money is due.
Speed hacks subthread
windwakr in post #44 started this subthread. It extends from the original CATSFC thread.
I'm asking Shadaux what s/he tried in 2011. I'm also struggling to implement this because of incompatible ROM offsets.
Battery usage subthread
2ndApex in post #102 started this subthread.
That was when I implemented sleep on lid-close during emulation. I still don't know how this affects battery life. Since then, I have also implemented sleeping on lid-close during the menu, and the CPU frequencies below [5] 396 MHz are finally somewhat playable for sprite+BG games, so perhaps you could see some battery life timings for lower frequencies.