Open AngryMatt117 opened 3 years ago
@socram8888
It's totally possible to change the refresh rate but that'll take some time. I am not particularly interested myself and I prefer for now to focus on increase compatibility.
Fair enough! Perhaps an update for the future when compatibility is much better. Thanks again 😀
I would also be stoked to see this coming! That would allow for the first time (i guess) to properly play multiregion games on ps2 without emulation. I'm aware that GSM can override video mode but that's inconvenient. Patiently waiting for this enhancement to come up :)
I would also be stoked to see this coming! That would allow for the first time (i guess) to properly play multiregion games on ps2 without emulation. I'm aware that GSM can override video mode but that's inconvenient. Patiently waiting for this enhancement to come up :)
Agreed! This is why I am so excited about the potential of this exploit 😁 A way to play imports on proper hardware without a modchip or emulation! 😁
So I've spent years researching PAL 50Hz and NTSC 60Hz on SEGA Saturn and a little while back wrote a feature for it on the PlayStation1 and PS2: https://randomisedgaming.tumblr.com/post/96698245777/randomised-gaming-features-content
I now need to update it with GSM, PS1VModeNeg and Tonyhax. So if you have a PS1 and use Tonyhax the game will automatically be booted into 60Hz if it is NTSC and 50Hz if PAL. On a PlayStation 2 the consoles seems to boot all games to the console region so PAL 50Hz, NTSC 60Hz using Tonyhax, which will cause issue with many games. Currently there is no ideal solution to the issue as most of the programs that do this are incomplete. Running NTSC games at 50Hz will cause bugs to appear and the same the other way around.
Having a 50/60Hz option would be a huge benefit as it corrects the PlayStation 2 hardware issues and allows you to force PAL games into NTSC on a PS1 or NTSC into PAL if needed. Many PAL games are the NTSC code running at around 16.58% slower than intended, so having the option to force PAL into NTSC is a blessing, NTSC users also won't be able to play some PAL only games at 60Hz and will need the reverse option to force into 50Hz.
There is also an issue with Tonyhax where some games are misaligned on screen either too high or too low. I wasn't sure if Megaman X5 was cut off at the top so the function to adjust the X and Y feature will be needed for some game at some point. So I'll raise a bug about it later with screenshots.
But I agree with socram8888 for now getting as many games support as possible should be what he works on. This feature does need to be added at some point to grant close to 100% compatibility on most systems and games.
Right now if you have a PlayStation 2 use the program PS1VModeNeg to address this issue, unlike GSM which forces the console to output one resolution. It just switches video mode to the opposite of your console for PS1 games. This video has a demo of it work on a PAL console with Tonyhax using an NTSC game and includes a download link to v1.01, note you need to download the older PS1VModeNeg v1.01 as the newer version 1.10 does seems to works the same way. This is a PlayStation 2 program only, video that show it here https://youtu.be/Il3tD5sbT-Q
I'll be cover Tonyhax and 60Hz forcing on my own channel very shortly
NTSC and PAL PS1 have slightly different GPU-clocks, which the GPU processes* (divides) in order to make the subcarrier-frequency for composite/svideo-output. Later PS1-models have a dedicated xtal for that. But this also affects the sync-signal for RGB-output.
I.e. playing a NTSC-game on a NTSC-PS1, the video will have a vertical frequency of 59.82Hz (close to the standard 59.94Hz). But playing a NTSC-game on a PAL-PS1, due to the different GPU-clock, the vertical frequency is 59.27Hz. This can lead to the image being too high/low or the screen not syncing at all, or the game not working properly at all (e.g. several Dance Dance Revolution games).
To fix this, you have to either change the GPU-xtal or hardmod the console with a DFO (Dual Frequency Oscillator), which switches the GPU-clock depending on the PS1 playing a NTSC- or PAL-game. There's no software-fix like PS1VModeNeg.
On a PAL-PS2 it's quite the same, with the frequency being 59.4Hz. But with the aforementioned PS1VModeNeg, you can fix this and get the same video-signal a NTSC-PS2 would produce.
But then you still have the issue of a couple of games not working on PS1s in other regions due to bugs or unintended sideffects, though there's not much info on that. E.g. NTSC-games with antimod using the antimod-check to get/store/whatever some values to continue the gameplay, but the antimod-check is skipped on PAL-consoles. I think Vandal Hearts 2 (U) is such a game. The trainer for Toy Story 2 (U) by Kalisto also mentions one call in the game's executable needs to be NOP'd in order for the game to work on PAL-PS1s. In the Xstation-issues-tracker, Soul Reaver and Wipeout 3 are listed with similar issues.
Re: PS1VModeNeg behavior 1.01 vs 1.10 IIRC in 1.01 it configures the video to NTSC on a PAL-machine and vice-versa. In 1.10 it checks the game-disc and configures the console accordingly. PAL-game = video set to PAL. It seems that version was made with a modchip in mind. Too bad there's no way to override the settings.
I didn't want to go into super detail on the crystals inside them, but your are right to say that PAL consoles are slightly slower at 60Hz than a true NTSC console and the reverse is true of a NTSC console playing a PAL game it can't go quite as slow. This applies to most consoles from that era. The output speed depends on the game and resolution used, highest I've seen it is around 59.50 roughly, which I think was Tobal no 2 testing the other day, Vandal Hearts II does 59.40Hz on a PAL console on the title screen, in-game 59.29Hz (As per my OSSC) and other games do between 59.27-.30 range. Same will be true on a NTSC console only at a higher speed.
PAL consoles forcing into 60Hz are about a frame behind their NTSC counterpart, but most people don't realise this and are just glad they get a fuller screen and faster game when forcing PAL consoles into 60Hz. Being able to force the game into a version of 60Hz on a PAL console is a blessing, even if you are around a frame behind. As it greatly improves the experience. It was also proven it could be done by a software program only called ImportPlayer Light v2.1 on the PlayStation 1 (PAL console will get the slightly slower speed 60Hz speed). Thanks to Tonyhax, you can now run ImportPlayer Light v2.1 on a unmodded PS1. However, sadly it's an old piece of software from 2001 and is rather buggy, but I have got it to run with a few games using Tonyhax.
I detailed ImportPlayer Light v2.1 in the feature I linked to above and I've also now confirmed that the screen alignment feature it includes that lets you move the screen position up and down also works on my later model PSOne console PS1 PAL SCPH-102 BIOS V4.5 05/25/00. To my surprise as the creator of IPL listed this as a PS2 only function, but it works on my later PSOne unit, so there is a proven software fix, but may not work on early PS1 units. It does only works with a set number of games at present, again see the feature I wrote as I detailed my early test finding with a select number of games in a spreadsheet with IPL. Just as a quick FYI the screen adjust works well on PAL Jade Cocoon and Vandal Hearts II on a PS1 when you force them into 60Hz, many titles it doesn't work on. I'll be showcasing this feature working on an unmodded system in upcoming video.
Sadly ImportPlayer Light v2.1 was not an open source project and was created back in 2000/2001, I've tried to find the creator of it to see if updates would possible or have the source code released for others to update. But they appear to have vanished into the mists of time. Being it is over 20 years old now as a program.
NTSC and PAL PS1 have slightly different GPU-clocks, which the GPU processes* (divides) in order to make the subcarrier-frequency for composite/svideo-output. Later PS1-models have a dedicated xtal for that. But this also affects the sync-signal for RGB-output.
Which are those later ps1 models ? I have stock unmodified PAL SCPH-7502 and didn't notice any issues playing NTSC games over RGB output
@picadk PU-20 (most 700x) and newer.
tonyhax-v1.3b.zip (compiled from 8239674ee5c9621dea47980d3b5ff5d0ae091905)
Could you please try with this version? I've changed many things. Amongst them, tonyhax now detects the game's region and automatically changes to PAL or NTSC.
tonyhax-v1.3b.zip (compiled from 8239674)
Could you please try with this version? I've changed many things. Amongst them, tonyhax now detects the game's region and automatically changes to PAL or NTSC.
on PAL PS2 39xxx, starting game Brunschwick 2, target game Silent Hill NTSC-U, screen with tonyhax 1.3b appears, but no other text. When swapping to a target game, text eventually appears, but the screen is still not aligned correctly.
If it's not aligned correctly there's very little I can do. This version uses the very same screen settings that the original PS1 BIOS leaves before jumping to a game.
Could you please share a screen cap?
If it's not aligned correctly there's very little I can do. This version uses the very same screen settings that the original PS1 BIOS leaves before jumping to a game.
Could you please share a screen cap?
Sure:
This is straight after booting tonyhax:
This is after swapping the cd:
And component still identifies it as 576i@50hz
@picadk Alright. I will try on a PS1, since I am fearing this could be PS2-specific.
That console doesn't have a PS1 GPU but uses the Emotion Engine to emulate it, and it's well possible that it knows that the game used to launch that one is PAL and refuses to acknowledge the NTSC signal flag.
The reason I think this is because tonyhax v1.3b only enables PAL if the main executable has a particular string ("Licensed by Sony Computer Enterterinment for Europe area") at a very specific address. If the game there says "Japan", "North America" or literally anything else (if for instance the code was bugged and couldn't detect it properly, or if it's a homebrew), it falls back to NTSC.
@socram8888
Hello Socram,
Hope you are well!
Done some testing with the new update, and i get the same issue i'm afraid. I'm using a PS2.
Resident Evil 2 NTSC-J - the characters run very slow Tekken 3 NTSC-J - the fighters move slow
Both move at PAL speeds still unfortunately.
Judging by the changelog though great progress has been made overall! Well done and thanks once more! 😁
On Ps2, Ps1 games will always output in the console region format (it doesn't matter any patch or data you can modify in the games iso), it is normal. Also using MechaPWN is the same thing.
I think that the only possible thing to do, would be to integrate some PS1VModeNeg (or similar) code into tonyhax. Or otherwise, just use PS1VModeNeg externally as suggested before.
Last version of PS1VModeNeg check for the game's ID into SYSTEM.CNF and adjust the video output accordingly (NTSC-U in case of SCUS/SLUS, PAL if SCES/SLES, etc...), only if it can't access the SYSTEM.CNF file for some reason it works as the older version, outputting the opposite region of the console.
So if for example your Ps2 is PAL and you want a PAL game to output in NTSC, you can make a backup, patch the ISO's EXE file (same name but changing i.e. SLES to SLUS) with Disc Patcher 3 (also is good to patch the Y-fix to 0 - 0 with Zapper 2000), then burn the ISO.
The problem is that PS1VModeNeg doesn't change the output when booting the second game with TonyHax (it doesn't read the SYSTEM.CNF a second time from the second game, the program isn't running anymore), so it must be used the old version of the program.
With the new version you'd need a NTSC Ps1 game for the Ps2 to output NTSC. Impossible since it wouldn't be read on a PAL Ps2. Last version of PS1VModeNeg is useful for MechaPWN/modchip/swap trick users.
Hi Badore,
I don't want PAL PS1 games to output in NTSC on a PAL PS2 console.
I want NTSC PS1 games to output NTSC on a PAL PS2 console.
Are you saying there is a solution to this?
I don't have access to a US or JP PS2, so am using the hardware I have.
If you have a Ps2 from 5000X onward you can use MechaPWN.
Otherwise (3900X and previous) for now you can use Tonyhax combined with PS1VModeNeg 1.01:
Also for compatible games the best solution is POPStarter (it automatically output games in their native region).
PAL consoles forcing into 60Hz are about a frame behind their NTSC counterpart, but most people don't realise this...
Interesting deepening.
However I think even doing the tests on PC (setting those refresh rates precisely) you're not really going to see any difference (maybe on a side by side comparison, i.e. during a long cut-scene, you'll notice a little out of sync after a while).
However, regarding gameplay on real hardware (Ps1/Ps2) this difference doesn't matter at all since pratically there isn't any Ps1 games with perfect performance, all of them drop some frames here and there (many games never hit the target frame-rate in gameplay).
On many games you can't even tell the difference between PAL and NTSC. For example Driver: NTSC version target is 30fps, PAL version is 25fps, but them both run at about 20fps during gameplay. The difference is huge using a PC emulator ('cause it makes the game to run at the target speed).
Also there are games where the higher refresh rate is counterproductive (due to poor performance). For example Jak 3 (Ps2 game, but it is valid the same for ps1 too). On Spargus City, being the performance closer to 50fps than 60fps you get a quite heavy screen tearing in NTSC and no tearing at all in PAL.
If you have a Ps2 from 5000X onward you can use MechaPWN.
Otherwise (3900X and previous) for now you can use Tonyhax combined with PS1VModeNeg 1.01:
Also for compatible games the best solution is POPStarter (it automatically output games in their native region).
Just confirming. I have a PAL chipped PS2 that you need to boot holding the reset button for a few seconds in order to boot with the modchip disabled, to enable playing PS1 discs.
Using that method to boot, going into uLaunch and loading PS1VModeNeg (1.01), inserting Tony Hawk's Pro Skater 2, the PS2 loads the game running in 60Hz NTSC. As it's a PAL disc, the aspect ratio is skewed and the game runs fast. Loading Create A Skater (tonyhax) then allows you to insert a PS1 backup (NTSC) disc. This NTSC game then loads and runs at 60Hz.
This is a confirmed method for playing PS1 NTSC games on a PAL PS2, even if the PS2 has this modchip.
I only tested with an NTSC backup disc, although I do own a couple of NTSC retail discs, I see no reason why it wouldn't work for legit NTSC discs.
If you have a Ps2 from 5000X onward you can use MechaPWN. Otherwise (3900X and previous) for now you can use Tonyhax combined with PS1VModeNeg 1.01: PS1VModeNeg.zip Also for compatible games the best solution is POPStarter (it automatically output games in their native region).
Just confirming. I have a PAL chipped PS2 that you need to boot holding the reset button for a few seconds in order to boot with the modchip disabled, to enable playing PS1 discs.
Using that method to boot, going into uLaunch and loading PS1VModeNeg (1.01), inserting Tony Hawk's Pro Skater 2, the PS2 loads the game running in 60Hz NTSC. As it's a PAL disc, the aspect ratio is skewed and the game runs fast. Loading Create A Skater (tonyhax) then allows you to insert a PS1 backup (NTSC) disc. This NTSC game then loads and runs at 60Hz.
This is a confirmed method for playing PS1 NTSC games on a PAL PS2, even if the PS2 has this modchip.
I only tested with an NTSC backup disc, although I do own a couple of NTSC retail discs, I see no reason why it wouldn't work for legit NTSC discs.
So you also installed Mechapwn?
Also if the modchip allow you to boot on some specific path (most do) or even has a autolaunch function, you should be able to boot Ps1VModeNeg without need of MechaPWN
No need for Mechapwn on my machine @Badore90
I knew you was just testing, but I wasn't sure if you were aware about how to boot programs using the modchip. Better so ^^
I don't mate, not had the machine long so not sure about it's features other than running PS2 backups, and booting into default mode holding power :)
How can I set custom boot stuff? Will that be like booting while pressing a controller button? I have a HDD installed as well as using FreeMCB as my loader.
How can I set custom boot stuff? Will that be like booting while pressing a controller button?
Yes. The hotkeys depend on the modchip. For example with the matrix infinity (https://dokumen.tips/documents/matrix-infinity-usage-tutorial.html), holding R1 at Ps2 startup will boot mc0:/BOOT/BOOT.ELF so you can boot any ELF without need of FMCB (you just have to put the elf in that path and rename it to BOOT.ELF).
It also has a config menu, so I guess you can customize the hotkeys.
Search for your chip online.
Nice one mate. I'll open it up at some point and see what chip it is :)
Usually if the modchip has hotkeys they're more or less the same.
I'd try putting one elf on mc0:/BOOT/BOOT.ELF, another one on mass:/BOOT/BOOT.ELF, remove the FMCB MC then try some hotkeys at startup (you have to hold the button, like FMCB hotkeys).
Since PS2s can not change the video mode from PS1 mode (you HAVE to do it before in PS2 mode) I think this issue should be closed.
Edit: I think the video mode switch should only happen if the bios_is_ps1 function returns true to make this more clear.
Since PS2s can not change the video mode from PS1 mode (you HAVE to do it before in PS2 mode)
https://github.com/wisi-w/DKWDRV can be used as workaround for setting proper mode while in ps2 mode.
Since PS2s can not change the video mode from PS1 mode (you HAVE to do it before in PS2 mode)
https://github.com/wisi-w/DKWDRV can be used as workaround for setting proper mode while in ps2 mode.
Tonyhax is a ps1 software that can run on PS2s (in PS1 mode). Since it is literally impossible for a ps1 software to change the video mode while already in ps1 mode on a ps2, there is no way to fix this due to hardware limitations, which again is why I think this issue should be closed.
The workaround mentioned above and PS1VmodeNeg v1.0.1 provide the workaround needed (from PS2 mode).
Is it really impossible? I mean, has anyone tried to access the PS2 control registers for video mode while in PS1 mode?
For what I've decompiled from the source code, the PS1-mode BIOS accesses multiple PS2-only registers, so maybe we can do that from tonyhax as well. That fact is why I've yet not closed this.
It seems that Import Player Lite can change video mode and even screen position when ps2 is in ps1 mode.
That's interesting to hear. I guess I will keep decompiling the PS1-mode firmware in the PS2 to see how it achieves that.
FYI if you download a PS2 firmware and chop the last 3.5MB, keeping only the first 512KB, you get a PS1 firmware that you can use (sort-of) in no$psx - you'll boot into a black screen and unable to boot any game, but it runs far enough to get the RAM mostly initialized, so you can dump it and load into IDA to figure out these kind of doubts.
PCSX2 latest commits can run tonyhax just fine (as well as psone games).
I've further decompiled the PS1 BIOS in a SCPH-10000 and at least these PS2-only registers are freely readable and writable:
Does the PS2 really block access to PS2-only registers? Or are they just freely accesible but just in new addresses that don't collide with older PS1 code?
I've further decompiled the PS1 BIOS in a SCPH-10000 and at least these PS2-only registers are freely readable and writable:
* 0x1F802070 (HW_POST2, a debug reg) * 0x1F801450 (HW_ICFG, ?)
Does the PS2 really block access to PS2-only registers? Or are they just freely accesible but just in new addresses that don't collide with older PS1 code?
As I have 2 SCPH-10000s I can try to add any code snippets you come up with to my fork and we can find out.
Does the PS2 really block access to PS2-only registers? Or are they just freely accesible but just in new addresses that don't collide with older PS1 code?
@wisi-w
0x1F801450 (and maybe also 1454) is available in PS1 mode to be able to check if the IOP is in PS1 mode. Though RESET also checks the processor ID, but that may be for another reason... 0x1F802070 is in the EXTRA range, which depends on SSBUSC mapping settings (its size and base address) so it is normal to be accessible, Also SIO2 I think is accessible (if switched back to PS2 mode). But everything else mostly is not - stuff like DMAC channels for PS2 mode, SSBUSC channels for PS2 mode, maybe also timers, (and maybe other regs I am forgetting) as well as many other PS2 devices like the SPU2, Dev9 and so on are all reset into PS1 mode and their PS2 mode regs are inaccessible and can't be switched back to PS2 mode, but for a complete reset by their reset lines. USB and iLink should also be inaccessible (their regs). It is possible that some PS2 mode IOP registers are still accessible in PS1 mode, but those are exceptions from the rule rather than a common thing (at least based on what I tested).
It seems that Import Player Lite can change video mode and even screen position when ps2 is in ps1 mode.
I did some tests with Import Player Light and PS1VModeNeg, and Import Player Light didn't seem to be able to change refresh rate, it rather sticks to what was set from PS2 mode. However, it does seem capable to influence video output in other ways because using composite cables, I obtained black and white / glitched colors after selecting NTSC video mode. Their feature to manually adjust screen position via L1+L2+R1+R2 and directional buttons also works perfectly, so yeah they can definitely change that from ps1 mode.
I did some tests with Import Player Light and PS1VModeNeg
did you try DKWDRV ?
Otherwise (3900X and previous) for now you can use Tonyhax combined with PS1VModeNeg 1.01
Using an upscaler, I found this method to work great with RGB output. But with composite output, booting an NTSC game from a PAL PS2 using PS1VModeNeg 1.01 and tonyhax makes the screen shake horizontally.
Hello All!
First off, AMAZING WORK! I've been looking for a hardware mod free way of playing PS1 games for a very long time. Thank you!
So, when using the exploit (in a PAL PS2 with a PAL copy of Crash 2) to boot an NTSC import game (not a backup, genuine game), you are forced to play with the 50hz PAL refresh rate.
I tried a copy of Biohazard 2 (NTSC-J) and Tekken 3 (NTSC-U) and both games run slow/are forced into the inferior 50hz mode.
Can this be solved? Thanks again!