| 906 | #include "Sifcmd.h" |
| 907 | |
| 908 | void SYSCALL() |
| 909 | { |
| 910 | u8 call; |
| 911 | |
| 912 | if (cpuRegs.GPR.n.v1.SL[0] < 0) |
| 913 | call = (u8)(-cpuRegs.GPR.n.v1.SL[0]); |
| 914 | else |
| 915 | call = cpuRegs.GPR.n.v1.UC[0]; |
| 916 | |
| 917 | BIOS_LOG("Bios call: %s (%x)", R5900::bios[call], call); |
| 918 | |
| 919 | |
| 920 | switch (static_cast<Syscall>(call)) |
| 921 | { |
| 922 | case Syscall::SetGsCrt: |
| 923 | { |
| 924 | //Function "SetGsCrt(Interlace, Mode, Field)" |
| 925 | //Useful for fetching information of interlace/video/field display parameters of the Graphics Synthesizer |
| 926 | |
| 927 | gsIsInterlaced = cpuRegs.GPR.n.a0.UL[0] & 1; |
| 928 | bool gsIsFrameMode = cpuRegs.GPR.n.a2.UL[0] & 1; |
| 929 | const char* inter = (gsIsInterlaced) ? "Interlaced" : "Progressive"; |
| 930 | const char* field = (gsIsFrameMode) ? "FRAME" : "FIELD"; |
| 931 | std::string mode; |
| 932 | // Warning info might be incorrect! |
| 933 | switch (cpuRegs.GPR.n.a1.UC[0]) |
| 934 | { |
| 935 | case 0x0: |
| 936 | case 0x2: |
| 937 | mode = "NTSC 640x448 @ 59.940 (59.82)"; gsSetVideoMode(GS_VideoMode::NTSC); break; |
| 938 | |
| 939 | case 0x1: |
| 940 | case 0x3: |
| 941 | mode = "PAL 640x512 @ 50.000 (49.76)"; gsSetVideoMode(GS_VideoMode::PAL); break; |
| 942 | |
| 943 | case 0x1A: mode = "VESA 640x480 @ 59.940"; gsSetVideoMode(GS_VideoMode::VESA); break; |
| 944 | case 0x1B: mode = "VESA 640x480 @ 72.809"; gsSetVideoMode(GS_VideoMode::VESA); break; |
| 945 | case 0x1C: mode = "VESA 640x480 @ 75.000"; gsSetVideoMode(GS_VideoMode::VESA); break; |
| 946 | case 0x1D: mode = "VESA 640x480 @ 85.008"; gsSetVideoMode(GS_VideoMode::VESA); break; |
| 947 | |
| 948 | case 0x2A: mode = "VESA 800x600 @ 56.250"; gsSetVideoMode(GS_VideoMode::VESA); break; |
| 949 | case 0x2B: mode = "VESA 800x600 @ 60.317"; gsSetVideoMode(GS_VideoMode::VESA); break; |
| 950 | case 0x2C: mode = "VESA 800x600 @ 72.188"; gsSetVideoMode(GS_VideoMode::VESA); break; |
| 951 | case 0x2D: mode = "VESA 800x600 @ 75.000"; gsSetVideoMode(GS_VideoMode::VESA); break; |
| 952 | case 0x2E: mode = "VESA 800x600 @ 85.061"; gsSetVideoMode(GS_VideoMode::VESA); break; |
| 953 | |
| 954 | case 0x3B: mode = "VESA 1024x768 @ 60.004"; gsSetVideoMode(GS_VideoMode::VESA); break; |
| 955 | case 0x3C: mode = "VESA 1024x768 @ 70.069"; gsSetVideoMode(GS_VideoMode::VESA); break; |
| 956 | case 0x3D: mode = "VESA 1024x768 @ 75.029"; gsSetVideoMode(GS_VideoMode::VESA); break; |
| 957 | case 0x3E: mode = "VESA 1024x768 @ 84.997"; gsSetVideoMode(GS_VideoMode::VESA); break; |
| 958 | |
| 959 | case 0x4A: mode = "VESA 1280x1024 @ 63.981"; gsSetVideoMode(GS_VideoMode::VESA); break; |
| 960 | case 0x4B: mode = "VESA 1280x1024 @ 79.976"; gsSetVideoMode(GS_VideoMode::VESA); break; |
| 961 | |
| 962 | case 0x50: mode = "SDTV 720x480 @ 59.94"; gsSetVideoMode(GS_VideoMode::SDTV_480P); break; |
| 963 | case 0x51: mode = "HDTV 1920x1080 @ 60.00"; gsSetVideoMode(GS_VideoMode::HDTV_1080I); break; |
| 964 | case 0x52: mode = "HDTV 1280x720 @ ??.???"; gsSetVideoMode(GS_VideoMode::HDTV_720P); break; |
| 965 | case 0x53: mode = "SDTV 768x576 @ ??.???"; gsSetVideoMode(GS_VideoMode::SDTV_576P); break; |
nothing calls this directly
no test coverage detected