ZSNES v1.51, with the SPC7110 v5
Okay, at long last, I think I finally completed all the SPC7110 programming and tweaking (famous last words). If you find any issues, let me know, and I´ll try to fix it (sigh).
Windows:
http://zsnes.sourceforge.net/zsnesw-spc7110-5.zip
DOS:
http://zsnes.sourceforge.net/zsnes-spc7110-5.zip
Changes:
_Demo_ and I optimized the code even more, to the extent that we don´t think there´s anything else significant we can do.
Fixed a bug with save states/rewind that Deathlike found.
Removed the gfx packs stuff from the GUI and config file.
Added to the config file an option to turn off the graphics cache.
The cache isn´t used if there´s not enough free memory, but you can play SPC7110 games anyway.
Cleanup.
Post results of speeds with the cache on and off (changing the setting requires ZSNES to be restarted). I´d appreciate if people with sub 1 GHz machines can post some FPS and CPU info with and without cache.
Todo:
Post source changes for people who want them.
Coordinate with some translation teams to get the 4 SPC7110 games translated. If you need a special build of ZSNES for something, or some info which I can provide, let me know.
Party?
----------------------------------------------------------------------------------------------
ZSNES v1.51, with the SPC7110 v4
Okay, _Demo_ pointed out some relics of neviksti´s code still in our optimized version. I rewrote some of the tightest loops to use 64 less bytes of memory, and only loop 25% of the amount of loops it was currently doing.
http://zsnes.sourceforge.net/zsnesw-spc7110-4.zip
Let me know if I broke anything. If you also were getting a slow down on initial load in the previous build, that should be cut down now.
Test with the cache deleted, and let me know how it works.
---------------------------------------------------------------------------------------------
ZSNES v1.51, with the SPC7110 v3
Okay, anomie and I rewrote pretty much all of neviksti´s code and seriously optimized it like nuts. We still have a little bit more that we can optimize (and hopefully will), but we´re MUCH faster now.
http://zsnes.sourceforge.net/zsnesw-spc7110-3.zip
This build offers over the previous build even more optimized decompression, and a persistent cache (which at this point I don´t think we really need anymore).
Let me know what kind of FPS you get now, and how much CPU usage it takes (and list which CPU and MHz you have).
Also, please test save states and all that.
We´re almost done here. Once I am, I´ll figure out exactly what it is that I changed, so I can package a new source release.
If you run into any issues, let me know. If the persistent cache for whatever reason is causing issues, delete the *.idx and *.gfx files, and let me know about it.
Thanks.
-------------------------------------------------------------------------------------------
ZSNES v1.51, with the SPC7110 v2
Okay, I got a new build up. Thanks for the feedback everyone.
http://zsnes.sourceforge.net/zsnesw-spc7110-2.zip
I optimized neviksti´s decompression code a bit more, but this isn´t the good part. I wrote a completely new caching algorithm which is able to cache the complete decompressed data for any game, and search for entries with an upper bound of O(6). What this means, is that once the game already saw a graphic, it´ll be able to recall it instantly. Some initial screens may be slow, but if you ever come there again, it should be full speed. So for example, the first time or two watching the FEoEZ intro, I would have it dipping to 55 FPS on occasion, but after that, all repeat loops are full speed. Also, how long it dips for initially should be less as well, since the games keep on re-decompressing graphics multiple times on each screen, now, that´s been completely eliminated. Hold down fast forward, you may be surprised. In SPL4, in the field, I´m now able to get 196/60 FPS. I also redid the save state code again. It should now generate save states approximately 64KB smaller than before, which are obviously incompatible with previous build. I also double checked the movie code, so that should work too, unlike the previous build which had some issues there.
Todo:
Finish optimizing neviksti´s decompresser so initial loads are even quicker.
Perhaps offer an option to save the cache to disk, so every time you reload a game, it doesn´t have to rebuild it. Let me know if you guys want this or not.
Clean out the old pack path stuff from the GUI and the config file.
Let me know how this new build is working for you, if there´s any issues or not. Please post your results with FPS, and your CPU, and what you think of it.
Thanks.
Edit:
Er, redownload that, byuu caught a bug that I broke the Press A test if you started a game without an SRM. That´s fixed now.
------------------------------------------------------------------------------------------------
ZSNES v1.51, with the SPC7110
This is v1.51, with the SPC7110 pack loading code removed (although I didn´t remove the GUI stuff for it yet), and real decompression added.
Save states with this version are not compatible with SPC7110 save states of pack loading versions, however SRMs should remain compatible.
Thanks for the code is as follows:
SPC7110:
Research by Dark Force, zsKnight, and The Dumper.
Implementation by zsKnight, Jonas Quinn, and Nach
Decompression:
Research by neviksti, Andreas Naive, and jolly_codger
Implementation by neviksti, Nach, and TRAC
With lots of help from CaitSith2
I spent the better part of two days trying to optimize as much as I could the decompression code, since it was really slow, I was only getting 16 FPS on my 2.5 GHz machine in some cases. Now I get 60/60 and it uses ~20% CPU.
Games are:
Code:
NSRT v3.5 - Nach´s SNES ROM Tools
-------------------------Container--------------------------
File: Far East of Eden Zero (J).gz
Sub File: Far East of Eden Zero (J)
---------------------Internal ROM Info----------------------
Name: HU TENGAI MAKYO ZERO Company: Hudson Soft
Header: None Bank: HiROM
Interleaved: None ROM: 40 Mb
Type: SPC7110 + RTC SRAM: 64 Kb
Expansion: None Battery: Present
Country: Japan Video: NTSC
ROM Speed: 120ns (FastROM) Revision: 1.0
Checksum: Good 0xDE89 Game Code: Marked, AZRJ
---------------------------Hashes---------------------------
CRC32: 1E327BD9
MD5: 29998124A67DEDA111D5ACA8AAF5DCA5
RIPEMD: 4B4BFFEAC1B74E840F4E717BB19E6CC6475BEE43
SHA-1: 91FF16DA242D39736AEAD4D360BF6BF7C0AFCE82
SHA-256: 8620203DA71D32D017BB21F542864C1D90705B87EB67815D06 B43F09120318AA
SHA-512: 9A9D7BD00C1D5B89D04A721D84D1938E103F09BAEB286BDD81 762BD68EF6C4C0
B255C939350EE5A8474E14DD4B08AA6D44DFE1AADD05C765B8 8958F04F3EDEDC
Tiger: 7B8878874CE01F2A6945B163CEE43823955A980079FD17A1
Whirlpool: E441C19D24BB0E70411FFF1D0B42B35937170456206C2127AF 91983C81BEAC60
E7A6F849427E962A09D9E22D55B30004D472A3960D73C91A33 9834ED35E51C87
--------------------------Database--------------------------
Name: Far East of Eden Zero
Country: Japan Revision: 1.0
Port 1: Gamepad Port 2: Gamepad
Genre 1: RPG Genre 2: Unknown
-------------------------Container--------------------------
File: Far East of Eden Zero - Shounen Jump no Shou (J).gz
Sub File: Far East of Eden Zero - Shounen Jump no Shou (J)
---------------------Internal ROM Info----------------------
Name: JUMP TENGAIMAKYO ZERO Company: Hudson Soft
Header: None Bank: HiROM
Interleaved: None ROM: 40 Mb
Type: SPC7110 + RTC SRAM: 64 Kb
Expansion: None Battery: Present
Country: Japan Video: NTSC
ROM Speed: 120ns (FastROM) Revision: 1.0
Checksum: Good 0x2EE2 Game Code: Marked, AZQJ
---------------------------Hashes---------------------------
CRC32: BF8FEF7A
MD5: A7438CD69E608BD2B268DDC0ED05C2CD
RIPEMD: E283BF95078D166AD748E344ED9827B3374B45D9
SHA-1: 36E5099128088B95623FF77F8196FCECD3F26731
SHA-256: 69D06A3F3A4F3BA769541FE94E92B42142E423E9F0924EAB97 865B2D826EC82D
SHA-512: 61129E6CC759C65BCA4208B7C433CF0550B7A6E949E09B2F3E 4A08FD4445D308
BF663C2C19956BEA8348BF2991E538D5FC680D59BC828B8F67 B4EC6A7CBEC019
Tiger: 8412D4B472EC69C9632A64EA87E375FF6DA9D15B147B17B5
Whirlpool: BF8EA37FCCD8209AA560836D4240FF69A6BBAE6751BBEAB851 C36D551E7FBC0B
48492136A289C66A1109B4A733D062B1608AB260C22A5084CE E35BC205AE7FCE
--------------------------Database--------------------------
Name: Far East of Eden Zero - Shounen Jump no Shou
Country: Japan Revision: 1.0
Port 1: Gamepad Port 2: Gamepad
Genre 1: RPG Genre 2: Unknown
-------------------------Container--------------------------
File: Momotarou Dentetsu Happy (J).gz
Sub File: Momotarou Dentetsu Happy (J)
---------------------Internal ROM Info----------------------
Name: MOMOTETSU HAPPY Company: Hudson Soft
Header: None Bank: HiROM
Interleaved: None ROM: 24 Mb
Type: SPC7110 SRAM: 64 Kb
Expansion: None Battery: Present
Country: Japan Video: NTSC
ROM Speed: 120ns (FastROM) Revision: 1.0
Checksum: Good 0xE28C Game Code: Marked, AH8J
---------------------------Hashes---------------------------
CRC32: 0B8D1474
MD5: 18862A20E311F8CA08D064190C25504F
RIPEMD: 47BCFF141F8EDD2C39A476E0D16C95E9766D4D57
SHA-1: A0EEBF715C93751C6423DC277717E365D69C735F
SHA-256: 9FC7A66464E71D0F056FED2B560F527A5AF69034C96293A273 1107479763A9D8
SHA-512: B354DEBEA0430D7E54B4D4B646FE27FDFBBE9E1BA778C8B388 C173B982827A16
5DA5F588FD4DBCFF5311EA9B1B0E4625B9BDC38635D0B9A5C3 985D5D9C6F135C
Tiger: 2FC55D6A656BF7DA4CABA92A5139EB9DA0CAFE9B716010F1
Whirlpool: 4D4C68401B267FDA2F2777A770A174F534DFD97245F1B6E530 307A20BE819CA9
673D4BD9BD7F7561E3F2D375C40B4CDA43B9B7C09F7E9567A6 5529C2A08F1B15
--------------------------Database--------------------------
Name: Momotarou Dentetsu Happy
Country: Japan Revision: 1.0
Port 1: Gamepad Port 2: Gamepad
Genre 1: Board Game Genre 2: Unknown
-------------------------Container--------------------------
File: Super Power League 4 (J).gz
Sub File: Super Power League 4 (J)
---------------------Internal ROM Info----------------------
Name: SUPER POWER LEAG 4 Company: Hudson Soft
Header: None Bank: HiROM
Interleaved: None ROM: 16 Mb
Type: SPC7110 SRAM: 64 Kb
Expansion: None Battery: Present
Country: Japan Video: NTSC
ROM Speed: 120ns (FastROM) Revision: 1.0
Checksum: Good 0x01AA Game Code: Marked, AE7J
---------------------------Hashes---------------------------
CRC32: C07F099D
MD5: FEBCA3A92D34FFA119891247D9B27D09
RIPEMD: B62CD87A62ED17AECD7EB0C0D99D97E220B7A705
SHA-1: 632061AE4892EC6CD75616DA66F7BE5C75E8D7AF
SHA-256: 0847C8F8021AF9C7C139C98312E4974308650C2CBCB617161B B56C46626258BB
SHA-512: 26D9FD331BF78D6BD5D1545638C1D5AE80A5399A5A550C5082 8A439124287931
8BCB224AC43874FB0F3CE4C6649A54ABC5D9887DD1247EDB70 5D6891EB687DBF
Tiger: BE71AE8FA36AAE7DA599905228E7DC287F7A6D34CB877EFA
Whirlpool: 9EA72BA133C75DBA075507E5536267155040A8934C821AE1F5 8989CB1EFFE242
D42D3FE0EB664ED1961E339DD8C57B58109218AA8ACE6EED5A 08946EBE198B4B
--------------------------Database--------------------------
Name: Super Power League 4
Country: Japan Revision: 1.0
Port 1: Gamepad Port 2: Gamepad
Genre 1: Sports Genre 2: Baseball
Report how things work. What kind of FPS do you get. Which CPU do you have? How much CPU does it use?
Also play around the games a bit and see if something isn´t decompressing. I´m hoping I didn´t cut any important corners, so if a graphic appears missing, or severely garbled, please let me know.
Also test save states and make sure they´re working good.
Thanks guys.