Editing Talk:PS2 Emulation

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
== Registers ==
TODO: Please remove unneeded uppercase letters not at the start of sentences.
* This Is Not Elon Musk Here :P - [[User:Roxanne|Roxanne]]
 
==Regs==


**1040000000 VU1 regs, mapping like on VU0.
**1040000000 VU1 regs, mapping like on VU0.
**1050000000 VU1 micro data  memory (1100C000 on real PS2 and PCSX2 debugger) size 0x4000.
**1050000000 VU1 micro data  memory (1100C000 on real ps2 and pcsx2 debugger) size 0x4000.
**1050004000 VU1 micro data memory mirror (1100C000 on real PS2 and PCSX2 debugger) size 0x4000. Likely mirrored 2 more times on 8000 and c000
**1050004000 VU1 micro data memory mirror (1100C000 on real ps2 and pcsx2 debugger) size 0x4000. Likely mirrored 2 more times on 8000 and c000
**104000C000 emulator place here VU1 constants used in popular operations. Eatan/eexp constants, masks for clamping, etc. Similar array can be found in PCSX2 (mVU_Globals), Dobiestation (atan_const, etc), Play! (GenerateEATAN, etc.)
**104000C000 emulator place here VU1 constants used in popular operations. Eatan/eexp constants, masks for clamping, etc. Similar array can be found in Pcsx2 (mVU_Globals), Dobiestation (atan_const, etc), Play! (GenerateEATAN, etc.)
**1030004000 emulator place here VU0 constants used in popular operations. Like above (vu0 don't have efu so placing there efu constants for eatan/eexp is pointless, but there they are).  
**1030004000 emulator place here VU0 constants used in popular operations. Like above (vu0 don't have efu so placing there efu constants for eatan/eexp is pointless, but there they are).  
--[[User:Kozarovv|Kozarovv]] ([[User talk:Kozarovv|talk]]) 09:37, 5 January 2023 (UTC)
--[[User:Kozarovv|Kozarovv]] ([[User talk:Kozarovv|talk]]) 09:37, 5 January 2023 (UTC)


== Miscellaneous information ==
=Misc info=
 
Some data that eventually need to be posted on main emulation page. All data posted here is obtained from jak tpl (so called v1) emulator. All data is confirmed in code itself, no guessing (unless said otherwise). Time to start releasing that old work to public.
Some data that eventually need to be posted on main emulation page. All data posted here is obtained from jak tpl (so called v1) emulator. All data is confirmed in code itself, no guessing (unless said otherwise). Time to start releasing that old work to public.


Line 24: Line 26:
*Default misc settings used by Jak TPL emu:                                https://pastebin.com/79JCRXkq (ps2_lang is changed later if host system match possible ps2 languages)
*Default misc settings used by Jak TPL emu:                                https://pastebin.com/79JCRXkq (ps2_lang is changed later if host system match possible ps2 languages)


== Miscellaneous information 2 ==
==Misc misc info==
 
*Both settings do the same thing:
*Both settings do the same thing:
  --external-hdd-fix
  --external-hdd-fix
Line 37: Line 38:
  No matter which value is used, 1 is set.
  No matter which value is used, 1 is set.


== ee-native-function ==
==Few popular misunderstandings==
*vu-xgkick-delay take integer between 0-31 (confirmed on both emu and compiler side), and not float (0.5 is invalid, will be truncated to 0 probably)
*Cop2 rounding in pcsx2 is governed by "EE/FPU" rounding setting, not by VU or VU0.
*Cop2 clamping is hardcodded in pcsx2 as far as i know, if no then is likely also governed by EE/FPU setting not VU/VU0
*xx-no-clamping setting is not really no clamping known from pcsx2. This is special mode which can be used regardless of other clamp commands. To compare pcsx2 have similar mode only for FPU (Full), to fully mimic that mode we still need fpu-to-double enabled.


==ee-native-function==
Emulator have set of predefined functions used in popular PS2 SDK libraries. Those function are highly optimized to run natively on x64. <br>
Emulator have set of predefined functions used in popular PS2 SDK libraries. Those function are highly optimized to run natively on x64. <br>
'''--ee-native-function=name,address''' under the hood this is hooking selected address, and replace it with jump to predefined function. Functions available in JAK TPL emu:
'''--ee-native-function=name,address''' under the hood this is hooking selected address, and replace it with jump to predefined function. Functions available in JAK TPL emu:
Line 96: Line 102:
  jr          $ra
  jr          $ra
  addiu        $sp, 0x30
  addiu        $sp, 0x30
This is corner case example as floatdidf convert a 64bit signed integer to IEEE double, and PS2 developers generally had no reason to use doubles (fpu/vu are operating on 32 bit floats). But you can see that whole conversion is practically done in 1 opcode, while ps2 take massive function to do this. Other functions are usually less optimized, but still really worth it.
This is corner case example as floatdidf convert a 64bit signed integer to IEEE double, and PS2 developers generally had no reason to use doubles (fpu/vu are operating on 32 bit floats). But you can see that whole conversion is practically done in 1 opcode, while ps2 take massive function to do this. Other functions are usually less optimized, but still really worth it.


== EE/VU injection ==
==EE/VU injection==
 
"Injections" are special sets of precompiled functions, idea is known better as HLE emulation. Available injections can vary depend on ps2-compiler.self, because that's where lookup for available functions is done. This literally replace code that normally is recompiler, with optimized version when address and hash match. Probably not many games can use this. Good candidates are games that use the same engine as currently released ps2 classics. Many times VU1 programs are reused by the same developer.  
"Injections" are special sets of precompiled functions. This idea is known better as "HLE emulation". Available injections can vary depending on ps2-compiler.self, because that is where the lookup for available functions is done. This literally replaces the code that normally is the recompiler, with optimized version when address and hash match. Probably not many games can use this. Good candidates are games that use the same engine as currently released PS2 classics. Many times VU1 programs are reused by the same developer.
<br>'''VU1'''
<br />
'''VU1'''
*Name + offset in JAK TPL compiler
*Name + offset in JAK TPL compiler
*unk1
*unk1
Line 245: Line 248:
Same goes for "kernel" injections, they are also based on ID + Hash + address. Generally all "injections" should be safe to be enabled by configs. There is really small chance for hash/address(and id) collision. Not to be confused with "native" / "native-patch" !
Same goes for "kernel" injections, they are also based on ID + Hash + address. Generally all "injections" should be safe to be enabled by configs. There is really small chance for hash/address(and id) collision. Not to be confused with "native" / "native-patch" !


= RESEARCH TO DO =


=RESEARCH TO DO=
{| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center;"
{| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center;"
! Name !! Notes
! Name !! Notes
|-
| 4-Player Multitap in urban reign || Done all thanks to you <3.
|-
|-
| Locating the gs registers || Abysmal.
| Locating the gs registers || Abysmal.
|-
| Fully understanding the hook functions || What does it actually do? Skip the instruction for an allocated number of times?
|-
|-
| Trying to reverse-engineer any emulator's executable by using assembly and hxd to improve compatibility || Tedious.
| Trying to reverse-engineer any emulator's executable by using assembly and hxd to improve compatibility || Tedious.
|-
|-
| Locating the proper CDVD read speed (God of war and Ratchet size matters [Both have affected music]) || IOP and CDVD commands help
| Locating the proper CDVD read speed (God of war and Ratchet size matters [Both have affected music]) || IOP and CDVD commands help
|-
| Fully understand what the vif chunk command thingy does || Too low and your game will freeze at the intro
|-
| Find the the most GIF accurate emulator there is. || Kof98??
|-
|-
| Find out what some of the gs commands do and edit their description || Infelicitous!
| Find out what some of the gs commands do and edit their description || Infelicitous!
|-
|-
| Understand the gs lua functions ||  
| Implement a EE memory patch for ratchet up your arsenal  || Not trivial obviously
|-
| Fix the two tenchu and harry potter games || (eughhh)
|-
|-
|}
|}
 
* GS registers aren't mapped in easy way comparing to other ones. Offsets will vary per emulator, and that's for sure. This is what you get in read mode on JAK emu (not sure if i have v1 or v2 to be honest, is known as ps2emu16):
* GS registers are not mapped in easy way comparing to other ones. Offsets will vary per emulator, and that is for sure. This is what you get in read mode on Jak games emulator (not sure if I have v1 or v2 to be honest, but it is known as ps2emu16):
  gs_reg_SCISSOR_1              0000000001B11800                   
  gs_reg_SCISSOR_1              0000000001B11800                   
  gs_reg_FBA_1                  0000000001B11808                   
  gs_reg_FBA_1                  0000000001B11808                   
Line 324: Line 336:
  hwreg_GS_EXTWRITE            0000000007D89FB8                   
  hwreg_GS_EXTWRITE            0000000007D89FB8                   
  hwreg_GS_BGCOLOR              0000000007D89FC0
  hwreg_GS_BGCOLOR              0000000007D89FC0
But keep in mind that GS regs can be "duplicated" for different emulation stages. GS is jited too, so it should have kind of pipeline too.
But keep in mind that GS regs can be "duplicated" for different emulation stages. GS is jited too, so it should have kind of pipeline too.
"Implement a EE memory patch for ratchet up your arsenal" Game write data using qmtc2/ctc2 and expect VU0 to still run at this point, which is not always true. Mega high vu0 mpg cycles could potentially push it little further. Patching that will be pain just because Ratchet use code overlays. This mean you need to patch game image with the same patch in more than 20 places. Because what you see in PCSX2 debugger / ps2dis will change depend on stage you play now. That's why PS3, and PCSX2 use dynamic JIT patches (PCSX2 use it for different issues tho). --[[User:Kozarovv|Kozarovv]] ([[User talk:Kozarovv|talk]]) 14:20, 27 February 2023 (CET)
"Implement a EE memory patch for ratchet up your arsenal" Game write data using qmtc2/ctc2 and expect VU0 to still run at this point, which is not always true. Mega high vu0 mpg cycles could potentially push it little further. Patching that will be pain just because Ratchet use code overlays. This mean you need to patch game image with the same patch in more than 20 places. Because what you see in pcsx2 debugger / ps2dis will change depend on stage you play now. That's why PS3, and PCSX2 use dynamic jit patches (pcsx2 use it for different issue tho). --[[User:Kozarovv|Kozarovv]] ([[User talk:Kozarovv|talk]]) 14:20, 27 February 2023 (CET)


== no-clamping ==


Sup. Can i know how no-clamping behavior was tested to confirm that "The default emulator's behavior cannot be set by CLI commands."? Because that doesn't sound right, and emulator explicitly set 0 or 1 on init, which is confirmed in emu code. What can happen, is that other clamping settings were changed during test, and that affected result. But looking at code i don't think there is any possibility that something "in between" exist. --[[User:Kozarovv|Kozarovv]] ([[User talk:Kozarovv|talk]]) 09:33, 21 June 2023 (CEST)


<br>It is based on a test I did on Sly Cooper 2. If VU1 Clamping was set to 1 or 0, the game crashes. If left empty, game works fine. --[[User:Scalerize|Scalerize]] ([[User talk:Scalerize|talk]]) 14:58, 21 June 2023 (CEST)
==
* Do you remember when game crash? Right after ps2 logo, when going ingame, any specific level, etc. --[[User:Kozarovv|Kozarovv]] ([[User talk:Kozarovv|talk]]) 15:32, 21 June 2023 (CEST)


<br>Right after the ps2 logo if I recall correctly --[[User:Scalerize|Scalerize]] ([[User talk:Scalerize|talk]]) 16:34, 21 June 2023 (CEST)
<br>-- Scalerize: I'm fully aware of the dynamic crap that the game uses, however, all I need is to find the CTC2 instruction that's causing this crap so I can advanceclock it, and then finding the rest of the locations that this offset resides in. It's also worth mentioning that I did find the vcallms instruction that causes the freeze, Although it's not a real fix. This game will need a lot of testing, but one thing is for sure, it's so well worth it.
* I think there was typo in config you tested. Crash right after PS2 logo is usually caused by unsupported command (emu will print "Unhandled option for this build/platform" and hit UD2 right after). Missing separator, typo, upper case characters, or something else was wrong. I double checked emu code, and it is set or not set (0 or 1). Recompiler parts which use it also test only for 0/1, and setting this command don't affect anything else. I'm going to leave description as is because without PS4 i can't test it by myself, but i'm really sceptical about it. :P --[[User:Kozarovv|Kozarovv]] ([[User talk:Kozarovv|talk]]) 16:46, 21 June 2023 (CEST)
* PS3 with similar issue consider every "ctc2 $zero, vi1 (0x48C00800)" and every "ctc2 $zero, vi2 (0x48C01000)" as problematic, this should give you 12 offsets to patch. All of them are in the same function "CmeUnpack" (which like you already know will change offsets many times during game). --[[User:Kozarovv|Kozarovv]] ([[User talk:Kozarovv|talk]]) 18:56, 28 February 2023 (CET)


So, after taking some time to think about it, I had remembered that the game would crash right after the first pyramid fmv at the press start screen. But yeah, leave as it is. You have the upper hand in removing/adding anything you like --[[User:Scalerize|Scalerize]] ([[User talk:Scalerize|talk]]) 17:19, 21 June 2023 (CEST)
--


== Configuration table with IDs from Jak games emulator ==
--[[User:Okawayati|Okawayati]] ([[User talk:Okawayati|talk]]) 20:48, 28 February 2023 (CET)
<br>WIP
<br>SCUS_973.53
<pre>
apiRequest(0.1)


Here is a table from Jak games emulator. This is how the PS2 emulator config parser sees data from CLI. Please do not edit typos, etc as this is exactly how it is in the emulator. I am leaving it here, so that the main page can be slowly updated with data from the table if needed. The PS2 emulator translates commands to ID, then uses ID in the jump table in its parser to apply configuration. ID is not guaranteed to be the same between emulators, but I have not tested that. Comments match ID too. UNK value is not critical for anything, but it is used for something, and it is part of the original table. This table is missing a few commands which are parsed outside of the main configuration routine.
-- new game
 
eeInsnReplace(0x003D5AB0, 0x48D02800, 0x0)
|============================================================================================================|
-- arriving at planet
| ID  |  UNK  |            COMMAND              |                        COMMENT                            |
eeInsnReplace(0x003F71D8, 0x48CE1800, 0x0) --This one freezes the game after couple of secs, but without it game won't proceed that far
|------------------------------------------------------------------------------------------------------------|
eeInsnReplace(0x003F71E0, 0x48CF2000, 0x0)
| 0  | 0x0    | --help                          |                                                          |
eeInsnReplace(0x003F71E8, 0x48D02800, 0x0)
| 0  | 0x0    | -?                              |                                                          |
</pre>
| 1  | 0x1    | --rom                          | filename                                                  |
| 2  | 0x1    | --image                        | filename                                                  |
| 3  | 0x1    | --pack-image                    | filename                                                  |
| 4  | 0x301  | --emulog-file                  |                                                          |
| 5  | 0x1    | --r30                          | filename                                                  |
| 6  | 0x1    | --vu0                          | filename                                                  |
| 7  | 0x1    | --vu1                          | filename                                                  |
| 8  | 0x1    | --cop1                          | filename                                                  |
| 9  | 0x1    | --cop2                          | filename                                                  |
| 10  | 0x1    | --gs-plugin                    | filename                                                  |
| 11  | 0x1    | --config                        | filename                                                  |
| 12  | 0x1    | --config-opt                    | filename                                                  |
| 13  | 0x1    | --config-local-lua              | full pathname                                            |
| 14  | 0x301  | --ee-cache-breaks-block        |                                                          |
| 15  | 0x2    | --unit-test                    | filename                                                  |
| 16  | 0x0    | --no-gs                        |                                                          |
| 17  | 0x0    | --cli-only                      |                                                          |
| 18  | 0x301  | --cpu-avx                      |                                                          |
| 19  | 0x301  | --cpu-crc32                    |                                                          |
| 21  | 0x0    | --stopped                      |                                                          |
| 22  | 0x4301 | --host-pad-enhance-deadzone    | Legacy value/ignored                                      |
| 23  | 0x301  | --savedata-delete              |                                                          |
| 24  | 0x1    | --vmc1  filename                |                                                          |
| 24  | 0x4001 | --mcd1  filename                |                                                          |
| 25  | 0x1    | --vmc2  filename                |                                                          |
| 25  | 0x4001 | --mcd2  filename                |                                                          |
| 26  | 0x301  | --formatted-vmc                |                                                          |
| 26  | 0x4301 | --formatted-mcd                |                                                          |
| 27  | 0x301  | --mtap1                        |                                                          |
| 28  | 0x301  | --mtap2                        |                                                          |
| 29  | 0x1    | --vmc-src                      | native,host,target,null                                  |
| 30  | 0x1    | --vmc-dest                      | native,host,target,null                                  |
| 31  | 0x1    | --vmc1-src                      | native,host,target,null                                  |
| 31  | 0x4001 | --mcd1-initialize              | native,host,target,null                                  |
| 32  | 0x1    | --vmc1-dest                    | native,host,target,null                                  |
| 32  | 0x4001 | --mcd1-write-type              | native,host,target,null                                  |
| 33  | 0x1    | --vmc2-src                      | native,host,target,null                                  |
| 33  | 0x4001 | --mcd2-initialize              | native,host,target,null                                  |
| 34  | 0x1    | --vmc2-dest                    | native,host,target,null                                  |
| 34  | 0x4001 | --mcd2-write-type              | native,host,target,null                                  |
| 35  | 0x301  | --jitproc-use-aslr              |                                                          |
| 36  | 0x301  | --jitproc-build-match          |                                                          |
| 37  | 0x301  | --host-gamepads                |                                                          |
| 38  | 0x101  | --host-keyboard                | slot [0-7]                                                |
| 39  | 0x302  | --host-pad-loses-focus          |                                                          |
| 40  | 0x301  | --ds4-deadzone-adjust          |                                                          |
| 41  | 0x301  | --ds4-diagonal-adjust          |                                                          |
| 42  | 0x301  | --pad-analog-to-digital        |                                                          |
| 43  | 0x301  | --hid-pad                      |                                                          |
| 44  | 0x1    | --host-audio                    | [1,0,on,off,mono]                                        |
| 45  | 0x1    | --mute-audio                    | [all,none,main,bgm]                                      |
| 46  | 0x201  | --host-audio-latency            | msec/float                                                |
| 47  | 0x301  | --host-vsync                    |                                                          |
| 48  | 0x1    | --host-osd                      | [0,off,minimal,verbose]                                  |
| 49  | 0x1    | --host-graph                    | [0,off,fps]                                              |
| 50  | 0x301  | --host-dbg-kbd                  |                                                          |
| 51  | 0x301  | --host-edit-safe-area          |                                                          |
| 52  | 0x302  | --threaded-gs                  |                                                          |
| 53  | 0x101  | --rtc-epoch                    | unix_time (seconds since epoch)                          |
| 54  | 0x2    | --isd-git-hash                  | git hash (sha1)                                          |
| 55  | 0x2    | --usrd-git-hash                | git hash (sha1)                                          |
| 56  | 0x301  | --playgo-disc-per-chunk        |                                                          |
| 57  | 0x201  | --external-hdd-sleep-idle      | idle timeout in ms                                        |
| 58  | 0x201  | --external-hdd-spinup-delay    | delay in ms                                              |
| 59  | 0x301  | --external-hdd-sim              |                                                          |
| 60  | 0x301  | --external-hdd-fix              |                                                          |
| 61  | 0x201  | --host-window-scale            | scale/float                                              |
| 62  | 0x1    | --host-window-pos              | x,y                                                      |
| 63  | 0x1    | --host-display-mode            | [normal/4:3,full/16:9]                                    |
| 64  | 0x301  | --framelimiter                  |                                                          |
| 65  | 0x201  | --framelimit-fps                | FPS/float                                                |
| 66  | 0x201  | --framelimit-scalar            | scalar/float                                              |
| 67  | 0x1    | --framelimit-mode              | [normal,fast,fastest,slow,slower,slowest]                |
| 68  | 0x301  | --force-pal-60hz                |                                                          |
| 69  | 0x301  | --force-frame-blend            |                                                          |
| 70  | 0x301  | --audio-stretching              |                                                          |
| 71  | 0x101  | --spu2-update-deferral          | Ts/integer                                                |
| 72  | 0x301  | --spu2-reverb                  |                                                          |
| 73  | 0x301  | --spu2-c0-memin-to-bgm          |                                                          |
| 74  | 0x301  | --spu2-c1-memin-to-bgm          |                                                          |
| 75  | 0x101  | --spu2-ignore-kof              |                                                          |
| 76  | 0x101  | --spu2-voice-keyoff-threshold  | Ts/integer                                                |
| 77  | 0x301  | --spu2-warnings                |                                                          |
| 78  | 0x101  | --stop-at                      | frameID/integer                                          |
| 79  | 0x101  | --exit-at                      | frameID/integer                                          |
| 80  | 0x2    | --pad-run                      | filename                                                  |
| 81  | 0x1    | --pad-run-stop-after            | [800ms,1s,3m,5h]                                          |
| 82  | 0x1    | --pad-run-exit-after            | [800ms,1s,3m,5h]                                          |
| 83  | 0x2    | --pad-record                    | filename                                                  |
| 84  | 0x101  | --pad-run-frame                | frame_id/integer                                          |
| 85  | 0x101  | --pad-record-frame              | frame_id/integer                                          |
| 86  | 0x301  | --record-video-hash            |                                                          |
| 87  | 0x301  | --record-audio-hash            |                                                          |
| 88  | 0x101  | --record-video-modulo          | frames/integer                                            |
| 89  | 0x301  | --record-audio                  |                                                          |
| 90  | 0x301  | --record-audio-image            |                                                          |
| 90  | 0x301  | --record-audio-img              |                                                          |
| 91  | 0x301  | --record-audio-ext              |                                                          |
| 92  | 0x1    | --path-snaps                    | dir/folder                                                |
| 93  | 0x1    | --path-recordings              | dir/folder                                                |
| 94  | 0x1    | --path-audio-images            | dir/folder                                                |
| 95  | 0x1    | --path-memcards                | dir/folder                                                |
| 95  | 0x1    | --path-vmc                      | dir/folder                                                |
| 96  | 0x1    | --path-emulog                  | dir/folder                                                |
| 97  | 0x1    | --path-manual                  | dir/folder                                                |
| 98  | 0x1    | --path-patches                  | dir/folder                                                |
| 99  | 0x1    | --path-trophydata              | dir/folder                                                |
| 100 | 0x1    | --path-featuredata              | dir/folder                                                |
| 101 | 0x1    | --path-postproc                | dir/folder                                                |
| 102 | 0x1    | --path-patches                  | dir/folder                                                |
| 103 | 0x1    | --path-toolingscript            | dir/folder                                                |
| 104 | 0x1    | --record-name                  | subdir/folder                                            |
| 105 | 0x1    | --max-console-spam              | bytes/lifetime                                            |
| 106 | 0x1    | --snapshot-name                | filename                                                  |
| 107 | 0x101  | --snapshot-save                | frameId                                                  |
| 108 | 0x2    | --snapshot-restore              | filename                                                  |
| 109 | 0x301  | --snapshot-mcd-files            |                                                          |
| 110 | 0x101  | --snapshot-repeat              | repeat_count                                              |
| 111 | 0x1    | --snapshot-datafile            | filename                                                  |
| 112 | 0x101  | --snapshot-modulo              | frames/integer                                            |
| 113 | 0x101  | --snapshot-debug                | dbg-on-of                                                |
| 114 | 0x1    | --ee-block-validation          | [PageProt,Hash,None]                                      |
| 115 | 0x301  | --ee-validate-kernel            |                                                          |
| 116 | 0x1    | --ee-const-folding              | [None,Gpr,Fpu,All]                                        |
| 117 | 0x301  | --ee-load-rewrites              |                                                          |
| 118 | 0x301  | --ee-store-rewrites            |                                                          |
| 119 | 0x301  | --ee-live32                    |                                                          |
| 120 | 0x1    | --ee-regalloc-scalar            | [0,none,ReadOnly,WriteOnly,RW]                            |
| 121 | 0x1    | --ee-regalloc-simd              | [0,none,ReadOnly,WriteOnly,RW]                            |
| 122 | 0x301  | --ee-insn-flush-pc              |                                                          |
| 122 | 0x4301 | --ee-pc-coherency              |                                                          |
| 123 | 0x301  | --ee-insn-callmark              |                                                          |
| 123 | 0x4301 | --ee-insn-marking              |                                                          |
| 123 | 0x4301 | --ee-inst-marking              |                                                          |
| 124 | 0x301  | --ee-injection-kernel          |                                                          |
| 124 | 0x301  | --ee-kernel-hle                |                                                          |
| 125 | 0x301  | --ee-injection-title            |                                                          |
| 126 | 0x1    | --ee-static-block-links        | Type,Type,... [None,Branches,JAL,COP2,All]                |
| 127 | 0x1    | --ee-regalloc-preserve-scalar  | [0,none,LoadOnly,StoreOnly,LS]                            |
| 128 | 0x1    | --ee-regalloc-preserve-simd    | [0,none,LoadOnly,StoreOnly,LS]                            |
| 129 | 0x301  | --ee-peephole                  |                                                          |
| 130 | 0x301  | --ee-ignore-break              |                                                          |
| 130 | 0x4301 | --ee-break-as-nop              |                                                          |
| 131 | 0x101  | --ee-inline-limit-full          | insn_count/integer                                        |
| 132 | 0x101  | --ee-inline-limit-partial      | insn_count/integer                                        |
| 133 | 0x101  | --ee-jit-pagefault-threshold    | fault_count/integer                                      |
| 134 | 0x301  | --ee-jit-opt-debug              |                                                          |
| 135 | 0x301  | --iop-validate-kernel          | [PageProt,ShortHash,Hash,None]                            |
| 136 | 0x1    | --iop-block-validation          | [PageProt,ShortHash,Hash,None]                            |
| 137 | 0x1    | --iop-shorthash-len            | insn_count/integer                                        |
| 138 | 0x301  | --iop-const-folding            |                                                          |
| 141 | 0x301  | --iop-pc-coherency              |                                                          |
| 142 | 0x301  | --iop-inst-marking              |                                                          |
| 143 | 0x301  | --fpu-to-double                |                                                          |
| 144 | 0x301  | --fpu-no-clamping              |                                                          |
| 145 | 0x301  | --fpu-clamp-operands            |                                                          |
| 146 | 0x301  | --fpu-clamp-results            |                                                          |
| 147 | 0x301  | --fpu-custom-min-max            |                                                          |
| 148 | 0x301  | --fpu-custom-fused-madd        |                                                          |
| 149 | 0x301  | --fpu-accurate-range            | start,end                                                |
| 150 | 0x301  | --fpu-accurate-muldiv          |                                                          |
| 151 | 0x1    | --fpu-accurate-muldiv-range    | start,end                                                |
| 152 | 0x1    | --fpu-accurate-mul-fast        |                                                          |
| 153 | 0x1    | --fpu-accurate-addsub          |                                                          |
| 154 | 0x1    | --fpu-accurate-addsub-range    | start,end                                                |
| 155 | 0x1    | --fpu-rsqrt-fast-estimate      |                                                          |
| 156 | 0x1    | --fpu-no-clamp-range            | start,edn                                                |
| 157 | 0x301  | --vu-to-double                  |                                                          |
| 158 | 0x301  | --vu-branch-hazard              |                                                          |
| 159 | 0x301  | --vu-evil-branches              |                                                          |
| 160 | 0x301  | --vu-d-bit                      |                                                          |
| 161 | 0x301  | --vu-t-bit                      |                                                          |
| 162 | 0x301  | --vu-inst-mflag                |                                                          |
| 163 | 0x301  | --vu-inst-cflag                |                                                          |
| 164 | 0x301  | --vu-custom-min-max            |                                                          |
| 165 | 0x301  | --vu-custom-fused-madd          |                                                          |
| 166 | 0x101  | --vu-xgkick-delay              | vu_cycles/integer                                        |
| 167 | 0x301  | --vu-hack-triace                |                                                          |
| 168 | 0x101  | --vu-range-merge                | vu_inst_cnt                                              |
| 169 | 0x301  | --vu0-no-clamping              |                                                          |
| 170 | 0x301  | --vu0-clamp-operands            |                                                          |
| 171 | 0x301  | --vu0-clamp-results            |                                                          |
| 172 | 0x101  | --vu0-opt-flags                | [0,1,2] - 1=safe, 2=unsafe                                |
| 173 | 0x101  | --vu0-opt-vf00                  | [0,1,2] - 1=safe, 2=unsafe                                |
| 174 | 0x301  | --vu0-opt-subroutine            |                                                          |
| 175 | 0x301  | --vu0-const-prop                |                                                          |
| 176 | 0x301  | --vu0-inst-q                    |                                                          |
| 177 | 0x301  | --vu0-inst-p                    |                                                          |
| 178 | 0x301  | --vu0-use-rcp                  |                                                          |
| 179 | 0x301  | --vu0-use-rsqrt                |                                                          |
| 180 | 0x301  | --vu0-di-bits                  |                                                          |
| 181 | 0x1    | --vu0-clamp-range              | start,end                                                |
| 182 | 0x1    | --vu0-jr-cache-policy          | [newprog,sameprog,auto]                                  |
| 183 | 0x1    | --vu0-jalr-cache-policy        | [newprog,sameprog,auto]                                  |
| 184 | 0x1    | --vu0-mul0fix-range            | start,end                                                |
| 185 | 0x1    | --vu0-accurate-addsub-range    | start,end                                                |
| 186 | 0x1    | --vu0-aot-outmode              | out/overwrite, append                                    |
| 187 | 0x101  | --vu0-aot-start-addr            | start address                                            |
| 188 | 0x101  | --vu0-aot-end-addr              | end address                                              |
| 189 | 0x1    | --vu0-aot-start-crc            | verify crc                                                |
| 190 | 0x1    | --vu0-aot-end-crc              | verify crc                                                |
| 191 | 0x301  | --vu1-no-clamping              |                                                          |
| 192 | 0x301  | --vu1-clamp-operands            |                                                          |
| 193 | 0x301  | --vu1-clamp-results            |                                                          |
| 194 | 0x101  | --vu1-opt-flags                | [0,1,2] - 1=safe, 2=unsafe                                |
| 195 | 0x101  | --vu1-opt-vf00                  | [0,1,2] - 1=safe, 2=unsafe                                |
| 196 | 0x301  | --vu1-opt-subroutine            |                                                          |
| 197 | 0x301  | --vu1-const-prop                |                                                          |
| 198 | 0x301  | --vu1-inst-q                    |                                                          |
| 199 | 0x301  | --vu1-inst-p                    |                                                          |
| 200 | 0x301  | --vu1-use-rcp                  |                                                          |
| 201 | 0x301  | --vu1-use-rsqrt                |                                                          |
| 202 | 0x301  | --vu1-di-bits                  |                                                          |
| 203 | 0x1    | --vu1-clamp-range              | start,end                                                |
| 204 | 0x1    | --vu1-jr-cache-policy          | [newprog,sameprog,auto]                                  |
| 205 | 0x1    | --vu1-jalr-cache-policy        | [newprog,sameprog,auto]                                  |
| 206 | 0x1    | --vu1-mul0fix-range            | start,end                                                |
| 207 | 0x1    | --vu1-accurate-addsub-range    | start,end                                                |
| 208 | 0x1    | --vu1-aot-outmode              | out/overwrite, append                                    |
| 209 | 0x101  | --vu1-aot-start-addr            | start address                                            |
| 210 | 0x101  | --vu1-aot-end-addr              | end address                                              |
| 211 | 0x1    | --vu1-aot-start-crc            | verify crc                                                |
| 212 | 0x1    | --vu1-aot-end-crc              | verify crc                                                |
| 214 | 0x301  | --vu0-injection                |                                                          |
| 215 | 0x301  | --vu1-injection                |                                                          |
| 216 | 0x301  | --vu1-native-patch              |                                                          |
| 217 | 0x301  | --cop2-no-clamping              |                                                          |
| 218 | 0x301  | --cop2-clamp-operands          |                                                          |
| 219 | 0x301  | --cop2-clamp-results            |                                                          |
| 220 | 0x101  | --cop2-opt-flags                | [0,1,2] - 1=safe, 2=unsafe                                |
| 221 | 0x101  | --cop2-opt-vf00                | [0,1,2] - 1=safe, 2=unsafe                                |
| 222 | 0x301  | --cop2-const-prop              |                                                          |
| 223 | 0x301  | --cop2-inst-q                  |                                                          |
| 224 | 0x301  | --cop2-inst-p                  |                                                          |
| 225 | 0x301  | --cop2-use-rcp                  |                                                          |
| 226 | 0x301  | --cop2-use-rsqrt                |                                                          |
| 227 | 0x301  | --cop2-di-bits                  |                                                          |
| 228 | 0x1    | --cop2-accurate-range          | start,end                                                |
| 229 | 0x301  | --cop2-accurate-mul            |                                                          |
| 230 | 0x1    | --cop2-accurate-mul-range      | start,end                                                |
| 231 | 0x1    | --cop2-accurate-addsub          |                                                          |
| 232 | 0x1    | --cop2-accurate-addsub-range    | start,end                                                |
| 233 | 0x1    | --cop2-no-clamp-range          | start,end                                                |
| 234 | 0x301  | --cop2-regalloc                |                                                          |
| 235 | 0x101  | --ee-jit-disasm                | [0,1=mips,2=x86]                                          |
| 236 | 0x101  | --iop-jit-disasm                | [0,1=mips,2=x86]                                          |
| 237 | 0x101  | --vu-jit-disasm                | [0,1=mips,2=x86]                                          |
| 238 | 0x301  | --vtune-ee                      |                                                          |
| 239 | 0x301  | --vtune-vu                      |                                                          |
| 240 | 0x1    | --ee-precompile-trace          | filename                                                  |
| 241 | 0x1    | --elf-symbols=                  | filename                                                  |
| 242 | 0x1    | --map-symbols=                  | filename                                                  |
| 243 | 0x1    | --symbols=                      | filename                                                  |
| 244 | 0x1    | --pc-bisect-srcfile=            | filename                                                  |
| 245 | 0x301  | --verbose-tooling              |                                                          |
| 246 | 0x301  | --log-tooling                  |                                                          |
| 247 | 0x301  | --verbose-deci2                |                                                          |
| 248 | 0x301  | --verbose-cdvd-reads            |                                                          |
| 249 | 0x301  | --verbose-cpu-cycles            |                                                          |
| 250 | 0x301  | --verbose-thread-id            |                                                          |
| 252 | 0x301  | --assert-path1-ad              |                                                          |
| 254 | 0x301  | --ee-evt-check-full            |                                                          |
| 255 | 0x201  | --ee-cycle-scalar              | scalar/float                                              |
| 256 | 0x1    | --ee-ignore-segfault            | [none,R,W,RW]                                            |
| 257 | 0x1    | --ee-native-function            | name,mipsaddr                                            |
| 258 | 0x101  | --ee-stlf-cycle-threshold      |                                                          |
| 259 | 0x201  | --ee-sif0-cycle-scalar          | multiplier/float                                          |
| 260 | 0x201  | --ee-sif1-cycle-scalar          | multiplier/float                                          |
| 261 | 0x201  | --iop-sif0-cycle-scalar        | multiplier/float                                          |
| 262 | 0x201  | --iop-sif1-cycle-scalar        | multiplier/float                                          |
| 263 | 0x101  | --iop-tight-slice-count        | slices/int                                                |
| 264 | 0x301  | --iop-evt-check-full            |                                                          |
| 265 | 0x201  | --iop-cycle-scalar              | scalar/float                                              |
| 266 | 0x101  | --cdvd-sector-read-cycles      | cycles_per_sector                                        |
| 267 | 0x101  | --cdvd-sector-seek-cycles      | cycles_per_sector                                        |
| 268 | 0x301  | --cdvd-determinism              |                                                          |
| 269 | 0x101  | --idec-cycles-per-qwc          | int/multiplier                                            |
| 270 | 0x301  | --vif1-instant-xfer            |                                                          |
| 271 | 0x301  | --vif1-ignore-cmd-ints          |                                                          |
| 272 | 0x301  | --vif-ignore-invalid-cmd        |                                                          |
| 273 | 0x101  | --vif-thread-chunk-size        | int/kilowords                                            |
| 274 | 0x1    | --vu1-mpg-cycles                | cycles,$vupc,$vupc...                                    |
| 275 | 0x1    | --vu0-mpg-cycles                | cycles,$vupc,$vupc...                                    |
| 276 | 0x301  | --detect-idle-vif              |                                                          |
| 277 | 0x301  | --detect-idle-ee                |                                                          |
| 278 | 0x301  | --detect-idle-iop              |                                                          |
| 279 | 0x301  | --detect-idle-intc              |                                                          |
| 280 | 0x1    | --detect-idle-chcr              | dmaChan,dmaChan,... [none,VIF0,VIF1,GIF,fromIPU,toIPU,etc]|
| 281 | 0x201  | --mfifo-manual-drain            | frame_multiplier/float                                    |
| 282 | 0x101  | --mfifo-chunk-drain-cycles      | cycles/int                                                |
| 283 | 0x101  | --gs-scanout-delay              | hsync_count/integer                                      |
| 284 | 0x101  | --gs-fieldswap-delay            | hsync_count/integer                                      |
| 285 | 0x301  | --gs-use-deferred-l2h          |                                                          |
| 286 | 0x1    | --l2h-2d-params                | TRXREG,BITBLTBUF,height                                  |
| 287 | 0x1    | --gs-uprender                  | [none,2x2]                                                |
| 288 | 0x1    | --gs-upscale                    | [none,gpu,edgesmooth,motionvec]                          |
| 289 | 0x201  | --gs-aspect-ratio              | aspect/float (default=0.81)                              |
| 290 | 0x301  | --gs-progressive                |                                                          |
| 291 | 0x301  | --gs-force-bilinear            |                                                          |
| 292 | 0x301  | --gs-use-mipmap                |                                                          |
| 293 | 0x301  | --gs-use-clut-merge            |                                                          |
| 294 | 0x1    | --gs-kernel-cl                  | kernelVariant                                            |
| 295 | 0x1    | --gs-kernel-cl-up              | kernelVariantUp                                          |
| 296 | 0x301  | --gs-optimize-30fps            |                                                          |
| 297 | 0x101  | --gs-motion-factor              | motion factor                                            |
| 298 | 0x101  | --gs-vert-precision            | pixelshift                                                |
| 299 | 0x301  | --gs-check-trans-rejection      |                                                          |
| 300 | 0x301  | --gs-check-trans-rejection68    |                                                          |
| 301 | 0x301  | --gs-override-small-tri-area    |                                                          |
| 302 | 0x1    | --gs-flush-ad-xyz              | [always,safe,off,0]                                      |
| 303 | 0x1    | --gs-dirty-page-policy          | dirtyPagePolicy                                          |
| 304 | 0x101  | --gs-render-tile-threshold      |                                                          |
| 305 | 0x101  | --gs-opt-frbuff-switch          |                                                          |
| 306 | 0x301  | --gs-uv-shift-pointsampling    |                                                          |
| 307 | 0x301  | --gs-h2l-list-opt              |                                                          |
| 308 | 0x301  | --gs-h2l-accurate-hash          |                                                          |
| 309 | 0x301  | --gs-ignore-rect-correction    |                                                          |
| 310 | 0x301  | --gs-ignore-dirty-page-border  |                                                          |
| 311 | 0x101  | --gs-frontend-opt-mode          |                                                          |
| 312 | 0x301  | --gs-hdr-support                |                                                          |
| 313 | 0x301  | --gs-adaptive-frameskip        |                                                          |
| 314 | 0x4101 | --gs-scanout-offsetx            | relative offset/ignored                                  |
| 315 | 0x4101 | --gs-scanout-offsety            | relative offset/ignored                                  |
| 316 | 0x301  | --gs-skip-dirty-flush-on-mipmap |                                                          |
| 317 | 0x301  | --gs-packed15-fmv-opt          |                                                          |
| 318 | 0x1    | --safe-area-min                | area/float (range 0.9 to 1.0)                            |
| 319 | 0x301  | --lopnor-config                |                                                          |
| 320 | 0x301  | --lua-script                    |                                                          |
| 321 | 0x301  | --lua-debug-api                |                                                          |
| 322 | 0x301  | --lua-use-pcall                |                                                          |
| 323 | 0x301  | --lua-trace-gc                  |                                                          |
| 324 | 0x301  | --lua-trace-fn                  |                                                          |
| 325 | 0x301  | --lua-trace-hooks              |                                                          |
| 326 | 0x301  | --lua-trace-vmsteps            |                                                          |
| 327 | 0x301  | --load-trophy-lua              |                                                          |
| 328 | 0x301  | --load-tooling-lua              |                                                          |
| 329 | 0x301  | --load-feature-lua              |                                                          |
| 330 | 0x301  | --host-trophy-support          |                                                          |
| 330 | 0x301  | --trophy-support                |                                                          |
| 331 | 0x201  | --pcr0-delta-hack              | ratio/float                                              |
| 332 | 0x1    | --app-entitlement              | entitlement/string                                        |
| 333 | 0x301  | --ee-mem-check-eob              |                                                          |
| 334 | 0x1    | --ee-hook                      |                                                          |
| 335 | 0x1    | --iop-hook                      |                                                          |
| 336 | 0x301  | --game-live-streaming          |                                                          |
| 337 | 0x301  | --game-live-streaming-record    |                                                          |
| 338 | 0x301  | --remote-play                  |                                                          |
| 339 | 0x301  | --screenshot                    |                                                          |
| 340 | 0x1    | --screenshot-overlay-image      | filename                                                  |
| 341 | 0x1    | --screenshot-photo-title        | title/string                                              |
| 343 | 0x1    | --screenshot-comment            | string                                                    |
| 344 | 0x301  | --video-recording              |                                                          |
| 345 | 0x1    | --mute-streaming-audio          | [none,all,main,bgm]                                      |
| 346 | 0x301  | --share-play                    |                                                          |
| 347 | 0x1    | --image-disc1                  | filename                                                  |
| 348 | 0x1    | --image-disc2                  | filename                                                  |
| 349 | 0x1    | --image-disc3                  | filename                                                  |
| 350 | 0x1    | --image-disc4                  | filename                                                  |
| 351 | 0x1    | --image-disc5                  | filename                                                  |
| 352 | 0x101  | --max-disc-num                  | [1-5]                                                    |
| 353 | 0x101  | --boot-disc-id                  | [0-4]                                                    |
| 354 | 0x101  | --switch-disc-delay            | frame_count/integer                                      |
| 355 | 0x301  | --switch-disc-reset            |                                                          |
| 356 | 0x1    | --ps2-title-id                  | title_id (ex: SLUS-21059)                                |
| 356 | 0x4001 | --title-id-override            | title_id (ex: SLUS-21059)                                |
| 357 | 0x1    | --ps2-lang                      |                                                          |
| 358 | 0x1    | --savedata-fingerprint          | ps2tc,ps4tc,fingerprint                                  |
| 359 | 0x301  | --pmc-enable                    |                                                          |
| 360 | 0x101  | --pmc-buffer-size              | MB                                                        |
| 361 | 0x1    | --pmc-sample-freq              | Hz                                                        |
| 362 | 0x1    | --pmc-measure-frames            | frames(int)                                               |
|============================================================================================================|
 
Note: Few commands is accidentally read with = , for example --elf-symbols=. Commands like this possibly expect == to be used. Anyway, good for us all of those cmds are meaningless.
 
=== PS2 Emulator Configuration Table Dumper IDA PRO Script ===
 
IDA Script to dump this information. It should find all by itself. Should... Tested on Jak games emulator, and Rogue Galaxy emulator. Keep in mind that it will dump only to IDA PRO output window. To dump it to file, you need to modify this script by yourself. Script will separate fields by comma. Output will be ID, UNK, COMMMAND, COMMENT. Next commas are eventually from config comment itself.
 
<source lang="py">
import idc
import idaapi
def dump():
    search = "00 2D 3F 00" #\x00 -? x\00
    addr = idaapi.find_binary(0, ida_idaapi.BADADDR, search, 0x10, SEARCH_DOWN)
    addr += 1
    addr = get_first_dref_to(addr)
    addr -= 0x8 # Some emus might need that line commented.
    if addr != BADADDR:
        while 1:
            nr = get_wide_word(addr)
            nr = "%s" % nr
            unk = get_wide_word(addr + 2)
            unk = "%x" % unk
            cfg_str_ptr = get_qword(addr + 8)
            cfg_str    = get_strlit_contents(cfg_str_ptr, -1, STRTYPE_C)
            cfg_str    = cfg_str.decode("ascii")
            cfg_cmt_ptr = get_qword(addr + 16)
            cfg_cmt    = get_strlit_contents(cfg_cmt_ptr, -1, STRTYPE_C)
            cfg_cmt    = cfg_cmt.decode("ascii")
            if cfg_cmt_ptr != 0:
                full_str = nr + ", 0x" + unk + ", " + cfg_str + ", " + cfg_cmt
            else:
                full_str = nr + ", 0x" + unk + ", " + cfg_str
            print(full_str)
            if cfg_str[0:1] != "-":
                print("Finished!")
                break
            addr += 0x18
dump()
</source>
 
== Fatal Fury Battle Archives Vol. 2 Modding ==
 
'''It seems that modifying the eboot.bin of any emulator using HxD allows us to use commands without adding them to the CLI. Potentially, we could locate VU0's jit-sync and modify it to fix many issues, while changing the values of other commands to suit our needs. This is a to-do in the future. Considering it needs a lot of researching, I am not sure when and if to work on it. It is filled with what Stayhye calls "speculation".'''
 
<br>Eboot MD5: 7fc9af268802b36ef299c3ee0448de7b
{| class="wikitable"
|-
! Fatal Fury Battle Archives Vol. 2 Eboot !!  !!  !! !! !!
|-
| || '''Offset (Eboot)''' || '''Value type''' || '''Normal value''' || '''Modified value''' || '''Notes'''
|-
| '''Counters speed''' || 50FE1 || 4 Bytes || 294912000 || Can be modified as needed for as long as the value fits 4 bytes. ||
|-
| '''EE Clock (Cycle scalar)''' || 50FE5 || 4 Bytes || 0x00010000 || Can be modified as needed for as long as the value fits 4 bytes. || It's converting decimals into hex?<br>0.1 -->0x19000000<br>0.19 --> 0x3000000<br>0.2 -->0x33000000<br>0.5 --> 0x80000000<br>0.98 --> 0xFA000000<br>0.987 --> 0xFC000000<br>0.996 --> 0xFE000000<br>0.999 --> 0xFF000000
|-
| '''IOP Clock (Cycle scalar)''' || 510EB  || 4 Bytes || 0x80000000 || Can be modified as needed for as long as the value fits 4 bytes. ||
|-
| '''VU0 mpg cycles''' || 4DE410  || 8x 2 bytes || 100 (dec) || ||
|-
| '''VU1 mpg cycles''' || 4DE420  || 8x 2 bytes || 100 (dec) || ||
|-
|  (?) || 5105B || 4 Bytes || 10000 || ||
|-style="background-color:#7698FF"
|  Binary or 1 byte??? ||  || ||  || ||
|-
| '''VU1 Jit-sync''' || 510DE || Binary || 1000001<span style="color:red">0</span> || 1000001<span style="color:red">1</span> || Adding jit-sync changes the value at the end to 1
|-
| '''Vif1-instant-xfer''' || Still unknown, but it sits to the left of VU1 Jit-sync when found using ps4 cheater. || Binary || 000<span style="color:red">1</span>1111 || 000<span style="color:red">0</span>1111 || Adding vif1-instant-xfer=0, changes the 1 to 0
|-
| '''VU0 vf00''' || 51109 and 5110A  || 1 Byte each?|| 0xCB and 0x26 ||  0x4B and 0x27|| Modified value is when the command is set to 2
|-
| '''VU0-di-bits''' || 5110A || 1 Byte || 0x26 || 0x06 ||
|-style="background-color:#7698FF"
| Completely unknown ||  || ||  || ||
|-
| ? || 51142 || 2 bytes? || 0x8 ||  || ||
|-
| ? || 51139 || 2 bytes? || 0x2 ||  || ||
|-
| ? || 510F5 || 2 bytes? || 0x7D ||  || ||
|-
| ? || 51114 || 2 bytes? || 0x3628 ||  || Modifying creates an insane amount of sps
|-
| ? || 5127E || 2 bytes? ||  0x8005 ||  ||
|-
| ? || 51109 || 2 bytes? ||  0xCB26 ||  ||
|-
| ? || 4DEF60 || 8x 2 bytes || 1098907648(dec) || || Seems to have something to do with VU0
|-
| ? || 51194 || 4bytes? || 00A00000 || || Controls screen size
|-
| ? || 50FD3 || 4bytes || 70000000 || || --vif-thread-chunk-size??
|-
| Framelimiter? || 59C318 || 0x3 || ||
|-
|}
 
== PS2 Classic Manuals (from ps2-museum website) ==
 
* Latest version of ps2-museum - v0.0.1 - 2015-11-24: https://s3.amazonaws.com/isdalive/2em/man/common/js/app.min.js
* CSS normalize script: https://s3.amazonaws.com/isdalive/2em/man/common/css/styles.min.css
 
Usage: create a index.html file at the root, containing (example here for the Fahrenheit game):
<source lang="html">
<!DOCTYPE HTML>
<html ng-app="museumApp">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width = device-width, initial-scale = 1.0, user-scalable=no">
    <script>
      var TITLE = "Fahrenheit™";
      var PAGES = 52;
    </script>
    <link rel="stylesheet" href="/css/styles.min.css"/>
    <link rel="stylesheet" href="https://s3.amazonaws.com/isdalive/2em/man/common/css/styles.min.css"/>
  </head>
  <body>
  <div id="main" ng-controller="MainController">
    <nav ng-class="{'toggle-menu': menuState}">
      <div class="nav-title">
        <h1 ng-bind="title"></h1>
      </div>
    </nav>
    <ng-include src="currentTemplate"></ng-include>
    <div ng-if="debug" ng-bind="debugInfo" style="position: fixed; top: 0; z-index: 8888;"></div>
  </div>
  <script src="/js/app.min.js"></script>
  <script src="https://s3.amazonaws.com/isdalive/2em/man/common/js/app.min.js"></script>
  </body>
</html>
</source>


If the issue is with the COP2 not running in perfect sync with the EE, then how come this patch does not work?
Please elaborate :D
<br>Vcallms nonsense
<pre>
SCUS-97353:
  name: "Ratchet & Clank - Up Your Arsenal"
  region: "NTSC-U"
  compat: 5
  patches:
    45FE0CC4:
      content: |-
        patch=1,EE,003D5BF0,word,0803FFC0
        patch=1,EE,000FFF04,word,3C160010
        patch=1,EE,000FFF08,word,26D6FEFC
        patch=1,EE,000FFF0C,word,8ED70000
        patch=1,EE,000FFF10,word,24130001
        patch=1,EE,000FFF14,word,12E00008
        patch=1,EE,000FFF1C,word,02F3B822
        patch=1,EE,000FFF24,word,16770008
        patch=1,EE,000FFF28,word,12770000
        patch=1,EE,000FFF30,word,4A000038
        patch=1,EE,000FFF34,word,0803FFD4
        patch=1,EE,000FFF3C,word,24174000
        patch=1,EE,000FFF4C,word,AED70000
        patch=1,EE,000FFF68,word,080F56FD
</pre>
Vif0 crap
<pre>
<pre>
SCEA:
SCUS-97353:
 
  name: "Ratchet & Clank - Up Your Arsenal"
War of the Monsters
  region: "NTSC-U"
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP9000-CUSA01554_00-SCUS971970000001/index.html
  compat: 5
Twisted Metal: Black
  patches:
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP9000-CUSA02036_00-SCUS971010000001/index.html
    45FE0CC4:
The Mark of Kri
      content: |-
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP9000-CUSA01729_00-SCUS971400000001/index.html
        patch=1,EE,003A9278,word,0803FFC0
Grand Thrft Auto: Vice City
        patch=1,EE,000FFF04,word,3C160010
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP1004-CUSA03509_00-SLUS205520000001/index.html
        patch=1,EE,000FFF08,word,26D6FEFC
Grand Theft Auto: San Andreas
        patch=1,EE,000FFF0C,word,8ED70000
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP1004-CUSA03506_00-SLUS209460000001/index.html
        patch=1,EE,000FFF10,word,24150001
Grand Theft Auto 3
        patch=1,EE,000FFF14,word,12E00008
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP1004-CUSA03508_00-SLUS200620000001/index.html
        patch=1,EE,000FFF1C,word,02F5B822
PaRappa the Rapper 2
        patch=1,EE,000FFF24,word,16B70008
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP9000-CUSA01555_00-SCUS971670000001/index.html
        patch=1,EE,000FFF28,word,12B70000
Arc the Lad: Twilight of the Spirits
        patch=1,EE,000FFF30,word,AC640000
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP9000-CUSA02205_00-SCUS972310000001/index.html
        patch=1,EE,000FFF34,word,0803FFD4
Star Wars: Racer Revenge
        patch=1,EE,000FFF3C,word,24170100
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP1082-CUSA03474_00-SLUS202680000001/index.html
        patch=1,EE,000FFF4C,word,AED70000
Star Wars Bounty Hunter
        patch=1,EE,000FFF68,word,080EA49F
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP1082-CUSA03472_00-SLUS204200000001/index.html
Dark Cloud 2
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP9000-CUSA02037_00-SCUS972130000001/index.html
Puzzle Quest: Challenge of the Warlords
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP0367-CUSA03571_00-SLUS216920000001/index.html
Rise of the Kasai
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP9000-CUSA01730_00-SCUS974160000001/index.html
OKAGE: Shadow King
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP9000-CUSA02199_00-SCUS971290000001/index.html
Manhunt
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP1004-CUSA03512_00-SLUS208270000001/index.html
Bully
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP1004-CUSA03507_00-SLUS212690000001/index.html
Max Payne
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP1004-CUSA03513_00-SLUS202300000001/index.html
THE KING OF FIGHTERS 2000
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP4002-CUSA03748_00-SLUS208340000001/index.html
Wild Arms 3
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP9000-CUSA02197_00-SCUS972030000001/index.html
Kinetica
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP9000-CUSA01725_00-SCUS971320000001/index.html
Rogue Galaxy
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP9000-CUSA02195_00-SCUS974900000001/index.html
Primal
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP9000-CUSA02035_00-SCUS971420000001/index.html
Psychonauts
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP2154-CUSA03881_00-SLUS211200000001/index.html
Dark Cloud
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP9000-CUSA01728_00-SCUS971110000001/index.html
SIREN
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP9000-CUSA02198_00-SCUS973550000001/index.html
The Warriors
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP1004-CUSA03515_00-SLUS212150000001/index.html
METAL SLUG ANTHOLOGY
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP0576-CUSA03749_00-SLUS215500000001/index.html
Indigo Prophecy
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP1642-CUSA04798_00-SLUS211960000001/index.html
Hot Shots Tennis
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP9000-CUSA02193_00-SCUS976100000001/index.html
Red Dead Revolver
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP1004-CUSA03517_00-SLUS205000000001/index.html
Destroy All Humans!
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP4389-CUSA05232_00-SLUS209450000001/index.html
Samurai Shodown VI
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP0576-CUSA03787_00-SLUS216290000001-A0100-V0100/index.html
Destroy All Humans! 2
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP4389-CUSA05233_00-SLUS214390000001/index.html
Red Faction
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP4389-CUSA06402_00-SLUS200730000001/index.html
FU'UN SUPER COMBO
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP0576-CUSA03784_00-SLPS257810000001-A0100-V0100/index.html
ADK DAMASHII
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP0576-CUSA03783_00-SLPS259060000001-A0100-V0100/index.html
Fatal Fury: Battle Archives Volume 2
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP0576-CUSA03750_00-SLUS217230000001-A0100-V0100/index.html
Harvest Moon: A Wonderful Life Special Edition
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP1014-CUSA06584_00-SLUS211710000001-A0100-V0100/index.html
RESIDENT EVIL CODE: Veronica X
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP0102-CUSA07104_00-SLUS201840000001-A0100-V0100/index.html
Harvest Moon: Save The Homeland
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP1014-CUSA06585_00-SLUS202510000001-A0100-V0100/index.html
Star Ocean: Till The End Of Time
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP0082-CUSA04778_00-SLUS204880000001/index.html
Eternal Ring
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP1022-CUSA04654_00-SLUS200150000001/index.html
Jak and Daxter: The Precursor Legacy
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP9000-CUSA02522_00-SCUS971240000001-A0100-V0100/index.html
Red Faction II
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP4389-CUSA06405_00-SLUS204420000001-A0100-V0100/index.html
Art of Fighting Anthology
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP0576-CUSA03754_00-SLUS214870000001-A0100-V0100/index.html
Jak X: Combat Racing
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP9000-CUSA07842_00-SCUS974290000001/index.html
Jak II
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP9000-CUSA07840_00-SCUS972650000001/index.html
Jak 3
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP9000-CUSA07841_00-SCUS973300000001/index.html
The King of Fighters ’98 Ultimate Match
https://isdalive.s3.amazonaws.com/2em/man/SCEA/UP0576-CUSA03751_00-SLUS218160000001/index.html
The King of Fighters Collection: The Orochi Saga
missing link
 
SCEE:
 
Ape Escape 2
https://isdalive.s3.amazonaws.com/2em/man/SCEE/EP9000-CUSA02269_00-SCES508850000001/index.html
Fahrenheit
https://isdalive.s3.amazonaws.com/2em/man/SCEE/EP1628-CUSA05760_00-SLES535390000001/index.html
</pre>
</pre>
Please note that all contributions to PS4 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS4 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)