Feos zmodyfikował ostatnią wersję PSXjin, emulatora A. Delikata, w którym podmienił wbudowany plugin GPU na standardową wtyczkę obsługującą OpenGL wraz z antyaliasingiem. Pozostałe rzeczy bez zmian - PSXjin jedynie pozwala określić, który bios ma używać w procesie emulacji.
Oprócz nowej wersji psxjin, feos opublikował też zaktualizowane narzędzia do recordingu TAS.
Rollcage (Psygnosis Limited, 1999)
Feos - PSXjin v2.0.2
Author: email@example.com | Date: 29 sierpnia 2014 21:48:17
- Added OpenGL GPU plugin (with antialiasing) to PSXjin.
PSXjin v2.0.2[SVN 726]
Author: firstname.lastname@example.org | Date: 4 listopada 2013 03:06:07
- Fix for movies with states embeded, dont call openplugins when creating the movie, its not call when loading a savestate so neither it should be call there.
PSXjin v2.0.2[SVN 725]
Author: email@example.com | Date: 24 października 2013 11:22:03
- Emulate 0-sized CDROM DMAs correctly
- Ape Escape does not current work. This is due to some weird behaviour in the game itself; namely that it performs a 0-sized CDROM DMA (and expects it to transfer something!). To elaborate:
- The game correctly locates a file on disc (DEMO/TITLE.ALL;1), commands the CDROM to read it, and then performs a 0-sized CDROM DMA (ie. it writes 0x00010000 to D3_BCR) to read the file's header. From this it expects to see at least 0x24B of data at the desired address, which it then uses to find the size of the file. Since this is (incorrectly) all 0 bytes, it reads a size of 0,
- and the loader routine fails due to underflowing the size, causing it to try to load 4GB of data into the PSX memory.
- On real PSX hardware, performing such a 0-sized CDROM (or OTC) DMA causes it to read 0x10000 words (0x40000B), not 0! The data after the sector is padded with a byte from the first sector. This has been verified on real hardware.
- This commit makes psxjin correctly emulate this behaviour, making Ape Escape work correctly.
- This might fix other games too, and hopefully won't break any others...
- Thanks to Martin Korth (nocash.emubase.de) for finding out the behaviour of these DMAs on real hardware!
PSXjin v2.0.2[SVN 724]
Author: firstname.lastname@example.org | Date: 24 października 2013 11:19:49
- Unpatch GTE opcodes on exception return
- PSXjin, in code that appears to be inherited from PCSX, has an ugly hack in an attempt to make exceptions that are raised when a GTE op is scheduled to be executed work properly.
- On real PSX hardware, when such a situation occurs, the GTE op is performed in parallel with the exception handler being invoked. The BIOS then contains code to check whether the EPC points to a GTE op when the exception handler is complete. If it does, it skips it so that it is not executed twice, which would lead to slowdown, or worse, incorrect results in the GTE registers (if the op's output is used in the input as well). See .
- PSXjin does not execute GTE ops in parallel with (ie. before) the exception handler is invoked, and hence needs to hack around the BIOS wanting to skip the GTE op on exception return. It does this by munging the GTE opcode in-memory so that the BIOS does not recognize it as a GTE op, and so that it returns to it again for execution post-invocation like any other op would.
- In Spyro 3 there are two elements to its copy protection. The first is a standard anti-modchip protection, which attempts to detect the presence of a modchip by looking for the CDROM controller picking up SCEx strings on sectors where they would not normally be found.
- The second is a thorough checksumming of the game's binaries in-memory as the game is running. If the checksums do not match their expected values, the various routines scattered throughout the code will fire, which impede the player by removing progress, or making it impossible to proceed.
- PSXjin's runtime patching of the game's binaries is causing these second checksums to be incorrect, leading to the anticrack routines firing.
- There are two possible fixes to this problem.
- The first is to correctly emulate the PSX and perform GTE ops before invoking the BIOS, and not patching the memory.
- Likelyhood of adversely affecting existing games (desyncs, not working at all, etc.): Medium
- Likelyhood of helping other games (that may be similarly affected): Low; it is unlikely many other games notice the GTE op patching.
- The second is to simply unpatch the patched GTE opcodes when the exception handler returns, ie. on RFE opcodes.
- Likelyhood of adversely affecting existing games: Tiny
- Likelyhood of helping other games: Low
- Since this is the better of the two options, this commit implements this fix.
- It requires storing the patch information at runtime, with it being stored in savestates in a backwards-compatible fashion if ones are made during gameplay.
- Thanks to Nitrofski (twitch.tv/nitrofski) for assisting in testing the patch!
-  http://nocash.emubase.de/psx-spx.htm#cop0exceptionhandling, "Interrupts vs GTE Commands"
-  http://www.gamasutra.com/view/feature/131439/keeping_the_pirates_at_bay.php
PSXjin v2.0.2[SVN 723]
Author: email@example.com | Date: 24 października 2013 11:16:15
- Emulate CdlGetTD correctly
- There are two things wrong with the emulation as-is:
- * It fails to handle non-CUE-using disc images correctly (due to the use of "= 0" instead of "== 0" in the if predicate)
- * It fails to handle track 0 requests, where it should return the end of the last track
- This fixes these issues, allowing Toy Story 2 to run. I wouldn't be surprised if this fixed other games too.
PSXjin v2.0.2[SVN 722]
Author: firstname.lastname@example.org | Date: 20 marca 2013 23:00:27
PSXjin v2.0.2[SVN 721]
Author: email@example.com | Date: 20 marca 2013 22:39:43
PSXjin v2.0.2[SVN 720]
Author: firstname.lastname@example.org | Date: 14 października 2012 00:39:41
PSXjin v2.0.2[SVN 719]
Author: goyuken | Date: 25 kwietnia 2012 17:55:53
- update SubWCRev (and .dll deps) to work correctly with newer releases of TortiseSVN
Inne treści związane z tematem