wisi-w / DKWDRV

Unified Single PS1DRV Replacement, compatible with mostly all PS2 models.
65 stars 1 forks source link

REPOSITORY MOVED TO https://github.com/DKWDRV/DKWDRV

Please go there from now on.

DKWDRV

Unified Single PS1DRV Replacement, compatible with mostly all PS2 models.

DKWDRV is a replacement for the original PS1DRV of Playstation 2 consoles. The original driver was heavily limited in features (sometimes on purpose and sometimes not) making user experience a real hassle. DKWDRV aims at overcoming this issues and making a much better gaming experience. Built from scratch by reversing both types of original drivers and merging them into one single unified driver. This project is not related in any way with any existing PS1 related PS2 homebrews out there.

At the moment the project can be considered BETA and many issues can come due to the big number of hardware and game differences. Users are welcome to submit issues or request features.

With time more details and documentation about PS1 operation in PS2 mode will be provided.

Changelog

1.7.2

1.7.1

Features

A full list of internal configs with proper documentation will be coming in the future.

Usage

Download the lastest release from the release page. Simple run the ELF files in any way you can. Make sure that you have a valid PS1 disc inserted prior to running. Users must configure options for the fixes and features that they want. If they want to save changes they have to use the Save Game Config option in the menu. Selection Run will boot into the game. Most options are easy to understand. Better naming and documentation coming soon. Do note that modchip CAN and WILL impact the boot sometimes and you might get black screens. Report issues in Github issues and remember to post AS MUCH INFO AS POSSIBLE. Your model, DKWDRV version, type of media, id, ids, redump links, modchip everything you find relevant. "Does not work" and "Black screen" are horrible reports! Remember to also note the information in the "INFO" section of DKWDRV. Make sure to always use the latest version.

User Configs

All user per game configs are stored in the memory card. Each game will create it's own save which can be managed from OSDSYS too in case you want to copy or delete it. The reason for having a save per game and not all configs inside a main save dir is because with many files OSDSYS won't copy or delete the main file. The main file will have a formatted game copy. For example Crash Bandicoot will have SCUS-94900 as game id but the save folder will be "SCUS94900". Inside it there will be two possible files, CONFIG.TXT and CHEATS.TXT for cheats. An import other case is the problem of games with no SYSTEM.CNF which only have PSX.EXE or that do indeed have SYSTEM.CNF but BOOT filename is still PSX.EXE. Since many games share the same id for this games the save name will be PSXyyyyyyyy where yyyyyy is hex value for CRC32 of PSX.exe from that game. This is the only proper way to be able to handler that many PSX.EXE titles out there where many are homebrews. Example of a memory card listing

mc0:
    SCUS147895 (folder for regular game)
              CONFIG.TXT
              CHEATS.TXT
    PSX1DBA2151 (folder for PSX.EXE game)
              CONFIG.TXT
              CHEATS.TXT

In order to create the folder automatically you need to run Save Game config at least once. If many games with PSX.EXE and unsure which is which you can find it out by the hex value of CRC32 in the filename. Extract PSX.EXE from your disc in a PC and calculate it's CRC32. 7zip right click context menu would do the job just fine. Select CRC SHA and in submenu CRC32.

DECKARD button combos

For DECKARD consoles users can press specific combos even while ingame.

Cheats

For DECKARD consoles only cheats can be applied. Cheats must be placed inside memory folder with the game name. Users can save general config to automatically create this folder. At the root of the folder a CHEATS.TXT must be present for cheats to show. Refer to "User Configs" for more info on how to find the save folder. The desired cheats must be enabled from the menu every time prior to booting the game. Cheats are applied every vblank. An example of a cheat file:

#Infinite Lives "Boulders" Stage
8009E584 6300
#Infinite Lives "Castle Machinery" Stage
8009E88C 6300
#Infinite Lives "Cortex Power" Stage
8009E77C 6300
....
Supported cheat types: Code(Hex) Type(Duckstation Naming )
00 CodeNop
30 ConstantWrite8
80 ConstantWrite16
90 ExtConstantWrite32
31 ExtConstantBitSet8
81 ExtConstantBitSet16
91 ExtConstantBitSet32
32 ExtConstantBitClear8
82 ExtConstantBitClear16
92 ExtConstantBitClear32
60 ExtIncrement32
61 ExtDecrement32
10 Increment16
11 Decrement16
20 Increment8
21 Decrement8
A0 ExtCompareEqual32
A1 ExtCompareNotEqual32
A2 ExtCompareLess32
A3 ExtCompareGreater32
A6 ExtConstantWriteIfMatch16
A7 ExtConstantWriteIfMatchWithRestore16
D0 CompareEqual16
D1 CompareNotEqual16
D3 CompareLess16
D3 CompareGreater16
E0 CompareEqual8
E1 CompareNotEqual8
E2 CompareLess8
E3 CompareGreater8
50 Slide
53 ExtImprovedSlide
C2 MemoryCopy

Technical documentation

Some initial documentation is now online. You can view it here. With time it will be updated so make sure to check regularly.