Editing Talk:PS2 Emulation
Jump to navigation
Jump to search
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: | ||
TODO: Please remove unneeded uppercase letters not at the start of sentences. | |||
* This Is Not Elon Musk Here :P - [[User:Roxanne|Roxanne]] | |||
==Regs== | ==Regs== | ||
VF regs you (Scalerize) described are VU0/COP2 only. Right after vf regs you can find vi regs (210+). Vi regs are only 32regs x 32 bit (vi00 to vi15, and 16 control/special regs) Edit: mapped by 0x10 tho. You can find similar array of regs for VU1 on 1040000000 or 1050000000. I don't know exactly where. This is virtual mapping and i don't own ps4 to test it really. --[[User:Kozarovv|Kozarovv]] ([[User talk:Kozarovv|talk]]) 16:54, 2 January 2023 (UTC) | |||
<pre>Will work on this stuff when i get the time! thank you so much! -- Scalerize | |||
Edit: i do not know what the registers for vu1 are since pcsx2 does not use them, So here are dumps that i hope will help you figure it out! it's a dump from rayman m during the language select screen. why rayman m ? well because the values do not change in the registers at this screen! so it's the same values for both of us! </pre> | |||
[https://anonfiles.com/1e4eebQby6/SLES_504.57_7z SLES_504.57_7z ] | |||
* Thanks. Pcsx2 use vu1 regs, you just can't see them in debugger because for VU1 that will be pointless. :) From your dumps: | |||
**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. | ||
Line 7: | Line 15: | ||
**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) | ||
<pre> I have added vu1's regs, all i did was copy vu0's info and replace 0x10300 with 0x10400 in notepad++, so i'd love it if you could rename regs if they are wrong or make sure that the info i have added is correct --Scalerize </pre> | |||
=Misc info= | =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 21: | Line 29: | ||
*Default EE settings used by Jak TPL emu: https://pastebin.com/SBXimZhc (awesome formatting pastebin, good job) | *Default EE settings used by Jak TPL emu: https://pastebin.com/SBXimZhc (awesome formatting pastebin, good job) | ||
*Default COP2 settings used by Jak TPL emu: https://pastebin.com/aG0LDryy | *Default COP2 settings used by Jak TPL emu: https://pastebin.com/aG0LDryy | ||
==Misc misc info== | ==Misc misc info== | ||
Line 100: | Line 107: | ||
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. | ||