No$PSX v.1.7 a few games tested.

Discussion in 'no$psx Discussion' started by SolisX, Dec 4, 2013.

  1. nocash

    nocash Emu author Emu Author

    Messages:
    217
    Likes Received:
    84
    Tracked down the Alundra problem! It can been seen using the no$psx Vram Viewer window: Stop the emu immediately after starting to save. Open the vram viewer. Run the emu in single frame steps (via keypad "/" key), until the letters "Save your p" are displayed, then run a few more frames until a black rectangle is drawn in lower left of the lower frame buffer.
    The frame buffer in the vram viewer shows the current vram content (ie. vram for the current, incomplete command list), whilst the command list in the vram viewer shows the must recent complete command list (for the previous frame). So, to see the command list that has drawn that black rectangle, run one more frame via keypad "/".

    The two problematic commands can be then seen directly at the bottom of the command list: Two "CpuToVram64x16" commands with destination x=03E0h. These will draw 32 pixels at x=3E0h..3FFh, and will then wrap to left vram edge, and draw 32 more pixels at x=000h..01Fh, destroying the CLUT memory (which is located right underneath of the lower frame buffer in this game).
    Real hardware apparently doesn't do that wrapping, or maybe it wraps differently (to same Y destination coord, instead of to next line at Y+1). I'll still need to check how that wrapping is handled on real hardware - but at least I figured out what went wrong there.

    EDIT: Just checked back: I did have already tested that wrapping cases for FillVram and CopyCpuToVram, they are wrapping from X=3FFh to X=0, with Y=same. But in the emulator, I did have implemented Y=same only for FillVram, not for CpuToVram; which is causing the problem in Alundra.
    Last edited: Jan 18, 2014
  2. nocash

    nocash Emu author Emu Author

    Messages:
    217
    Likes Received:
    84
    Thanks! Trying to fix that 'problem' might have gotten quite frustating ; - )
  3. nocash

    nocash Emu author Emu Author

    Messages:
    217
    Likes Received:
    84
    Does that game use the "Autopause" feature (automatically stop playing at end of track)?
    If it's doing so can been seen in the no$psx "I/O Map" window: Open I/O map window (F10-key in debug mode), select the "Timers" page, and look at the values in lower-left corner of the window (status, mode, file, etc.).
    If Autopause is enabled, then the "mode" value should have bit1 set (ie. "mode" should be 02h, or some other value if it has more bits set).
  4. SolisX

    SolisX Member

    Messages:
    264
    Likes Received:
    25
    Hello Nocash,

    For Rayman under mode i see a number 07. And i can hear the sound in the background in game but, its like the graphic is stuck.
  5. nocash

    nocash Emu author Emu Author

    Messages:
    217
    Likes Received:
    84
    Thanks, that has bit1 set, so the problem is probably caused by the (not yet emulated) autopause feature.
    One problem is that the PSX cannot accurately seek to the begin of a track because it's rounding down the TOC entries from MM:SS:FF to MM:SS:00, so it may be off by around 0.99 seconds (it. might seek to end of the previous track, which would cause the autopause feature to abort playing almost instantly, right before reaching the desired track). The reason why it is still working is probably that the TOC entries point to Index 01, and tracks are commonly preceeded by 2 seconds 'pause areas' with Index 00. So, even if it's off 0.99 seconds, it would be still within the track's leading 2 second region.
    The other problem is that I didn't have any info on what is happening on Autopause. I'll need to do some tests, but currently... it seems as if it will produce INT4(stat), similar as for the "auto-STOP-at-end-of-disc" effect. Interestingly, it looks as if Autopause does also affect that auto-stop feature (it. will turn it into "auto-PAUSE-at-end-of-disc") (ie. with Autopause, the spindle motor appears be kept spinning even at end of disc).
  6. Shendo

    Shendo Moderator Staff Member Moderator

    Messages:
    5,154
    Likes Received:
    45
    I have a challenge for you if you are up for it :p

    Vagrant Story, a very popular game, works on numerous emulators and generally seems to be working fine on whatever emulator you run it on.

    But, there is one aspect of the game which (to my knowledge) no one emulated correctly (i tried ePSXe, pSX, Xebra, PCSX-R and no$psx of course).
    It slipped past me all these years also and I managed to notice it recently after returning to the real hardware for playing games. And it's a very important aspect of the game...

    Combo reaction time.

    Here is how it works; When you hit the enemy an exclamation mark is shown on the screen. When you see the mark you must press action button again to perform a combo.
    Based on your reaction time you get the grade (too slow, slow, nice, great, cool, excellent, fast, too fast) which decides if you will perform a combo or not.

    Now, on the real PS1 you have a fraction of a second to perform a combo, but only after exclamation mark is shown. If you do it at exact same time you will get too fast and the combo will fail.
    Which makes sense, your reaction time is graded not your ability to predict when that exclamation would be shown.

    But, on emulators is different. You have to perform a combo exactly when that mark is shown. If you are off just a little (like on a real PS1) you will get slow or too slow and the combo will fail.
    That makes the whole thing a guessing game basically and it loses purpose. For years I wondered how I managed to do it as kid but now playing on the emulators it's a lot harder, not knowing that it's an emulation fault.

    Seeing how that is a Squaresoft game my guess would be that it's somehow SPU related...
    Last edited: Jan 22, 2014
  7. nocash

    nocash Emu author Emu Author

    Messages:
    217
    Likes Received:
    84
    Vagrant Story timing I haven't tested that game. It might be some general timing emulation issue (hardware timers, rendering time, dma/memory access timing), or joypad timing related (unlike as on real hardware the joypad gets routed through emulator & operating system; but that should make only a minimal difference). And then, there is this page,
    http://www.gamefaqs.com/boards/914326-vagrant-story/61447595 saying that doing the combos works better when listening to the "Ping" sounds as than looking at exclamation marks. Are you sure that you used the exclamation marks for button timing when playing the game on real hardware?
    And when listening to "Pings", is that making the game playable on emulators? Emulated audio timings might be actually a bit off because continous sound output works best when queuing some audio frames (so sound can be kept playing even if the emulator needs more rendering load in certain frames, or even if it gets interrupted by other tasks), the downside is that the queuing will cause all sounds to appear a bit delayed.

    Rayman is actually using/needing the cdrom Autopause feature. I've tested Autopause on real hardware: It's really generating INT4(stat) (with stat.bit7 still set, as if it would be still playing (=not yet paused) at time when entering the pause state). And then it seems to stay at the END of the track (not at the BEGIN of the next track), namely, when trying to resume playing via new Play command (without new Setloc command) then it will instantly fire another INT4(stat) and enter the pause state again (instead of playing the next track).
    I've looked at some .CUE files for some games. Most do have INDEX 00 and INDEX 01 entries (or PREGAP and INDEX 01 entries) on audio tracks. But there seem to be also some .CUE files that have only INDEX 01 entries. I don't know where those files came from, maybe they have been recorded on drives that didn't support subchannel reading, so the recording software could only omit or guess INDEX 00 locations. Anyways, this might be a nasty problem if it occurs on discs that need Autopause (due to the seek inaccuray; see above).
    Aside from that, there are two other problems in Rayman: After booting it increments a vblank irq counter at [801CF2CC] once, but then it stops incrementing it, and instead throws a bunch of "VSync: timeout" messages. That's annoying, but it least it does continue at the ubisoft logo after about 8 seconds. And worse, after the ubisoft logo (and after getting through the autopause stuff), it starts playing a movie sequence with XA-ADPCM sound. The sound is audible, but the movie isn't shown & the game doesn't react to joypad, so it just gets stuck at a black screen with the sound running in background.
  8. SolisX

    SolisX Member

    Messages:
    264
    Likes Received:
    25
    Hello Nocash,

    That Rayman sounds like a lot of trouble. Anyways i noticed sometimes that my controller does not work properly when i start the emulator the first time but when i close it out and restart it it works fine. And i also want to show you the Debug window messages for Wildarms.
    Last edited: Jan 28, 2014
  9. Shendo

    Shendo Moderator Staff Member Moderator

    Messages:
    5,154
    Likes Received:
    45
    I've decided to get scientific on this so i took phone and filmed myself playing on PS1, PS2, PSP, PCSX and No$PSX.
    I then used VirtualDub to slow the footage down and I exported video as animated gif. Here are results:

    Pressing attack in sync with exclamation mark (PS1 - PCSX - NO$PSX):
    [​IMG] [​IMG] [​IMG]

    Pressing attack after a slight delay (after noticing the mark)(PS1 - PS2 - PSP - PCSX - NO$PSX):
    [​IMG] [​IMG] [​IMG] [​IMG] [​IMG]

    As you can see, on the real hardware (and PSP emu) game expects you to react slightly after exclamation is shown, while emulators expect you to react immediately.
    On the other hand if you react immediately on the real hardware you get "fast" message and combo fails.

    It's not a big problem to adjust to either timing (although it is harder to do on emulators) but besides attack abilities there are defense abilities which you also must react to in order to dodge or defend yourself.

    Since there are number of spells and attack animations enemy can perform the only constant thing you can rely on is that exclamation point
    and if you have to guess precise moment when you will be hit it completely loses it's purpose.

    I don't know about the PSN version on the PS3 from the link you provided but if it's emulated incorrectly it could be a reason why OP struggles with the timing.

    If you want I can provide you with a savestate. If you don't leave the room and stay out of the menu you are free to perform combos without the actual disc present.
    Last edited: Jan 23, 2014
    KrossX likes this.
  10. nocash

    nocash Emu author Emu Author

    Messages:
    217
    Likes Received:
    84
    Ah, now I got it, you mean the huge big shadow in upper-left of the radar thing. The game is trying to draw a polygon with a nonsense vertex (0400h,0400h). The bugged polygon doesn't appear on real hardware because of the max height = 512 limit (ie. it's the same issue as in Spiderman; and already works in current/unreleased version).
    One other/minor issue is that some of the line segments (in upper left of Syphon Filter 2 screen) should be one pixel longer.
  11. SolisX

    SolisX Member

    Messages:
    264
    Likes Received:
    25
    Hello Nocash,

    One less bug good to hear. :)
  12. darksabre76

    darksabre76 New Member

    Messages:
    2
    Likes Received:
    0
    I found an odd issue with the game Casper (BIN/CUE, NTSC-U). In other emulators, there is a rather long opening credit sequence followed by a 3D interactive menu which then leads to the rest of the game. For some reason, when it is loaded in no$psx, it plays the opening sequence more smoothly than the others but then hangs indefinitely right before getting to the menu. The emulator does not crash, it just hangs. I'm not sure what sort of information would help you figure this one out. It's an old favorite of mine from when I was younger so I want to help how I can. Thanks for all the hard work Nocash!
  13. nocash

    nocash Emu author Emu Author

    Messages:
    217
    Likes Received:
    84
    Crashbandicootwarped - I've just added concave polygon detection, that fixes the "black holes in the sky" effect by forcing concave (or twisted) quads to be rendered as separate triangles.

    Casper - thanks for the info! I haven't tested the game, if it hangs due to some cdrom timing issue then there's a 50% chance that it might work in next update (would be great if keep it in mind, and let me know if it works when I get update released, if it still doesn't work, I'll try to fix in next update).
    Ah, and did you look at the TTY "Debug Message" window? If it does display something like "Unresolved exception" or "Unknown BIOS Patch" (in the bottom-most line) then it would look like something else, unrelated to cdrom timing.

    Wildarms - I am getting identical TTY messages when running up to the memory card screen, and at that you seem to have gotten the two "is not known device" error messages, but over here those errors don't occur. Whatever went wrong there, it seems that I might have already fixed it somehow : - )
  14. cloudstr

    cloudstr New Member

    Messages:
    27
    Likes Received:
    3
    Very good Emulator but I have some suggestions for the new version.
    1. Change the Hotkeys that more convenient: F1-Save F3-Load instead F5-Load F7-Save
    2. Add volume changes feature (Loud sounds hurt my ears)
    It was everything I could think of :p Cheers!
  15. darksabre76

    darksabre76 New Member

    Messages:
    2
    Likes Received:
    0
    Casper: The following is what shows up in the debug window:

  16. SolisX

    SolisX Member

    Messages:
    264
    Likes Received:
    25
    Hello Nocash,

    Oh i don't know i had cut some of the debug tty message it kept repeating the message.
  17. SolisX

    SolisX Member

    Messages:
    264
    Likes Received:
    25
    Hello Nocash,

    Here is a screenshot of Capcom vs SNK Pro when using Quads as triangles. It only affects some characters. I guess this is related to your triangle code.

    [​IMG]
    Last edited: Jan 27, 2014
  18. SolisX

    SolisX Member

    Messages:
    264
    Likes Received:
    25
    Hello Nocash,

    I just tried Ridge Racer. I just noticed that if i try to overwrite a save the game gives an error.

    This the debug messages.


    And other game i just tried is One. Problem with this one right is that if you save
    the next time you try to boot the game the game will not boot up. Another thing
    about this game is that it creates Memory cards _01_1_A_.mcd to _01_1_D_.mcd, 01_2_A_.mcd to 01_2_D_.mcd and also creates a memory card One.mcd. The game will boot again if you delete the One.mcd file.
    Last edited: Jan 29, 2014
  19. SolisX

    SolisX Member

    Messages:
    264
    Likes Received:
    25
    Hello Nocash,

    Any idea whats going on with ridge racer and one?
  20. nocash

    nocash Emu author Emu Author

    Messages:
    217
    Likes Received:
    84
    Thanks for pointing me on Ridge Racer bug! It didn't work due to a bug in the "Rename" function in my bios clone. Kinda stupid bug: At some locations I have (outcommented) "mov r4,r4" dummy opcodes, to indicate that the following function expects a parameter in "r4" (and that the value is already there, hence it's outcommented). For some reason, I've had also outcommented a "mov r4,r16" opcode.

    Maybe Wildarms had the same problem (since it occurred in memory card screen too, and did output same error message). But I didn't test actually saving something in Wildarms, so I don't know if the bug did (or still does) occur in that situation. Let me know if it still fails in next version!

    For Vagrant Story, I've had a look at a savestate. But can't see anything special with the timing. It's using vblank and timer2 irqs, which should work okay.
    Not sure how short the time-frame for button presses is. If it's only 3-4 frames then I could imagine the key-input and video-output might appear a frame slower as on PSX under windows; then it would leave only a 1-2 frames region in emulators.
    But I guess 3-4 frames could be too difficult even on real hardware. And it appears to me that the game does sometimes complain either SLOW or FAST even when pressing a button while the exclamation mark is shown - did you notice anything like that, too?
    If yes, it would appear as if the error occurs randomly, independed of the actual timing.

    Don't know why One hangs on booting after saving. Let's hope that it will work in next version (for whatever reason, just hope so), or let me know if it doesn't.
    Creating all those memory card files is normal, assuming that it's supporting 8 memory cards via multitap. The ninth file ("_01_1_A_.mcd") is some sort of dummy file for 1st memory card (which is actually stored in <cdrom_image_name>.mcd).

    Currently, I am trying to get no$psx's built-in assembler to recognize the official MIPS ASM syntax for PSX.
    The problem is that nobody seems to know how the official ASM syntax for PSX looks like at all.
    If somebody could help on syntax details would be very welcome!
    See here for more info/questions: http://www.psxdev.net/forum/viewtopic.php?f=41&t=518

Share This Page