It is currently Fri Nov 24, 2017 10:24 pm

All times are UTC - 7 hours





Post new topic Reply to topic  [ 76 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next
Author Message
PostPosted: Fri Sep 22, 2017 7:31 pm 
Offline
Formerly Fx3
User avatar

Joined: Fri Nov 12, 2004 4:59 pm
Posts: 3076
Location: Brazil
I just removed a check of the irq latch value on 4022 write (non-zero only). I got a pass in all tests.


Top
 Profile  
 
PostPosted: Fri Sep 22, 2017 8:38 pm 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 5842
Location: Canada
Sour wrote:
rainwarrior wrote:
I did a few power tests to see if there were variations (didn't see any) but a strange thing, though: after running sometimes a red light comes on for the FDSStick and never shuts off. If I power cycle while this is happening I think I end up corrupting the disk sometimes, and get an "err 32" trying to load after that.
That sounds oddly similar to what Pokun mentioned, too. But I can't really see how the test could be causing it - it does absolutely nothing after displaying the results. Maybe a bug with the FDSStick itself?


I feel like writing repeatedly to $4023 has consequences for disk activity, like it's causing the RAM adapter to send signals to the drive in some way. Maybe not important in terms of nailing this IRQ behaviour down but relevant to disk behaviour? It's weird how inconsistent it is, though.

Trying to check what the corruption was, I tried to read the "corrupted" disk back using the FDSStick program, and it was only 16 bytes long. (FDS,$1A header + 12 x $00) So... that's strange. Maybe it's just from powering off while it's trying to write?

I don't know what the held red light on the FDSstick means. Actively writing? Usually it turns on whenever I press the button, and the green one turns on any time the disk is being read, I think. (Similarly on my other test a few posts back, I'd get a repeating held green light on that one where it just never stops reading?


I do notice that in my example I zeroed out RAM, even though I was masking the value from $FA ($4025 write mirror) when applying mirroring to $4025. Maybe this put the disk into write mode? (There's also bit 5 that the wiki says "always set to 1", which is a direction this violates but I don't know if that's meaningful.) The default value for $FA should be $2E, which is the last thing the BIOS set it to on reset.

I should fix my example not to clobber those BIOS variables. I thought I tried to avoid that, but I missed the ZP ones. :(


Top
 Profile  
 
PostPosted: Fri Sep 22, 2017 8:53 pm 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 5842
Location: Canada
Yeah, I patched V7 to fix that write to $4025 and now there's no more "weird" behaviour from the FDSstick. I can power cycle it with no problems at all.

So, yeah, I think the disk activity weirdness was my fault, a bug in my example (now fixed). Sorry.

I still think weird stuff can happen with the drive when writing to $4023, but seems well behaved/quiet as long as $4025 is properly set back to $2E beforehand? Anyhow, probably not relevant to the IRQ testing.

I also tried patching V5 to see if this affected that it hangs with only 1 heart displayed, but it's the same, so at least THAT wasn't my fault. ;)


Attachments:
fdsirqtestsV7_patched.fds [63.98 KiB]
Downloaded 26 times
Top
 Profile  
 
PostPosted: Sat Sep 23, 2017 8:04 am 
Offline

Joined: Sun Feb 07, 2016 6:16 pm
Posts: 299
I guess it didn't like write mode being turned on? Odd that this would matter since it also meant the motor was turned off - hard to see how the FDS could corrupt a disk while the motor is disabled..

I'm guessing there is probably a reason for the BIOS to be writing $83 to $4023 instead of $03, but there is no mention of bit 7 in $4023 anywhere, from what I can see.

I updated the wiki with the information that was confirmed from these IRQ tests.
I might try writing another set of tests for the drive itself (though that will be trickier I'd imagine) - it would be nice to get a solid understanding of all the flags in in $4030/$4032 as well as the behavior of the disk IRQs.
I'm guessing the actual timing of the disk read/write operations can't really be tested with the FDSStick, though?


Top
 Profile  
 
PostPosted: Mon Sep 25, 2017 12:49 am 
Offline

Joined: Tue May 28, 2013 5:49 am
Posts: 883
Location: Sweden
I guess there is still a possibility that the FDSStick behaves differently from the real disk drive and ignores the motor state. Maybe Loopy could answer that.

I tried googling in Japanese for more information about $4023 but found nothing that tells us more than the wiki or Enri. I guess information of the FDS is really scarce overall.


Top
 Profile  
 
PostPosted: Mon Oct 23, 2017 12:57 pm 
Offline

Joined: Wed Jun 15, 2016 11:49 am
Posts: 51
Hi all, I am trying to get these tests to work on BizHawk. The first problem I ran into is that the .FDS file indicates that there are 6 files on the disk, but looking over the file in hex editor I only see files 0-4. (Also, two files are both named FILE2, but that's not relevent to anything.)

I added in a blank file 5 to get it to run, but then it just repeatedly fires IRQ's and doesn't do anything else.

Am I missing something here?


Top
 Profile  
 
PostPosted: Mon Oct 23, 2017 1:17 pm 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 5842
Location: Canada
Alyosha_TAS wrote:
Hi all, I am trying to get these tests to work on BizHawk. The first problem I ran into is that the .FDS file indicates that there are 6 files on the disk, but looking over the file in hex editor I only see files 0-4. (Also, two files are both named FILE2, but that's not relevent to anything.)

The high file count is intentional, used to skip the BIOS' license screen. The technique is described here:
http://forums.nesdev.com/viewtopic.php?p=194826#p194826

The extra FILE2 is just a typo, should have been FILE1. (I need to fix that in my example template...)

You shouldn't need to add an extra file to get it to run... but a modified or high level replacement for the BIOS might break the license-skip technique?


Top
 Profile  
 
PostPosted: Mon Oct 23, 2017 1:36 pm 
Offline

Joined: Wed Jun 15, 2016 11:49 am
Posts: 51
Ah ok thanks for the info.

I went back and tried V3 which still had the copyright screen and I still just get a blank screen, so it looks like I have a bit of work to do here.

EDIT: Actually that wasn't so bad, got everything working.

Thanks for the valuable research Sour, rainwarrior, et al. !


Top
 Profile  
 
PostPosted: Thu Oct 26, 2017 4:34 am 
Offline
User avatar

Joined: Fri May 21, 2010 4:10 pm
Posts: 279
Thanks for posting this up Sour! I would like to try to implement this fix into nestopia as well. I am taking the hot spot snippet from the Nestopia plus! SVN here. This was the last commit which fixed the freeze in Lutter but now makes the game putter have no sound.

Code:
bool enabled = (data & 0x02) == 0x02; 
          bool reload = (data & 0x01) == 0x01; 
 
          if (enabled && !reload) 
           { 
              unit.timer.latch = 0; 
             //ClearIRQ(); 
          } 
   
          if (!unit.status) 
          { 
             //unit.timer.latch = 0; 
              ClearIRQ(); 
           } 


With this current code.

Putt Putt golf has NO sound but

Druid works as expected
Lutter does not freeze when starting a new game
Kaettekita Mario Bros works as expected on ALL 3 loading screens.

Anyone see anything I might can try?

Also the FDS game Aspic-Majaou no Noroi has issues sometimes when loading side b the system is unresponsive. IS this issue related to this?

After looking through the changelogs I found this:

"More accurate FDS disk drive emulation. Fixes "Aspic-Majaou no Noroi", But Apparently this got borked again somehow.

Anyways, this is awesome work guys. Hopefully this is fix of the trivial matter. :)


Top
 Profile  
 
PostPosted: Fri Oct 27, 2017 7:16 pm 
Offline
User avatar

Joined: Fri May 21, 2010 4:10 pm
Posts: 279
It's hard for me to get a screenshot so i will post the results. I ran the V7 FDS test against the FDS fixes from Nestopia plus! and got these results:

01 0
02 0
03 X
04 X
05 X
06 X
07 0
08 0
09 0
0A X
0B X
0C O
0D X
OE X
0F O
10 O
11 X
12 X
13 O
14 O
15 X

Can someone help me decipher what exactly is the issue. X meaning fail i am assuming right?


Top
 Profile  
 
PostPosted: Fri Oct 27, 2017 7:30 pm 
Offline

Joined: Mon Dec 12, 2011 8:15 pm
Posts: 352
Nestopia Plus!Is dead, please use Nestopia UE or Mesen!
Attachment:
2017-10-28_10-28-09.jpg
2017-10-28_10-28-09.jpg [ 115.17 KiB | Viewed 217 times ]


Top
 Profile  
 
PostPosted: Fri Oct 27, 2017 7:33 pm 
Offline
User avatar

Joined: Fri May 21, 2010 4:10 pm
Posts: 279
Zxbdragon, can you share these fixes please? If Nestopia plus! is dead, then how do you explain everything passing on your build? WTF.


Top
 Profile  
 
PostPosted: Fri Oct 27, 2017 7:34 pm 
Offline

Joined: Sun Feb 07, 2016 6:16 pm
Posts: 299
The text next to each test is essentially a summary of what the emulator should do.

As far as I remember:
03 Starting irq counter when reload value is 0 should still cause an irq
04 The irq reload value should never get reset (by anything other than $4020/$4021 writes)
05 Disabling disk registers while waiting for an irq should cancel that irq (it should never be triggered)
06 Starting an irq when disk registers are disabled should be impossible
0A Writing to $4022 with bit 1 set ($02) should not acknowledge the irq
0B Writing to $4023 with bit 0 set ($01) should not acknowledge the irq
0D Writing to $4022 to start the irq counter while the irq counter was already running resets the counter and delays the irq.
0E Writing to $4022 to start an irq while disk regs are disabled, and then enabling disk registers should not cause an irq
11 Writing $00 to $4022 should not reset the irq reload value
12 Writing $02 to $4022 4 times in a row (with a small delay between each write) when reload value is 0 should cause 4 irqs
15 Starting the irq counter with the repeat flag & a reload value of 0 should cause an infinite never-ending loop of IRQs

Some of these tests are a bit redundant since I was trying to test for every possible edge case I could think of.


Top
 Profile  
 
PostPosted: Fri Oct 27, 2017 7:58 pm 
Offline
User avatar

Joined: Fri May 21, 2010 4:10 pm
Posts: 279
Thank you for the clarification Sour. It's a little confusing but i see someone has it working in Nestopia.

Obviously ZxbDragon wants to throw it in my face that he has it working in his private modified build of Nestopia plus! so maybe he can help share this information, since he shared his other FDS fixes. So what do you say dragon, do you mind sharing your findings please? Since you already obviously have this working.


Top
 Profile  
 
PostPosted: Fri Oct 27, 2017 9:01 pm 
Offline

Joined: Mon Dec 12, 2011 8:15 pm
Posts: 352
*Spitfire_NES* wrote:
Zxbdragon, can you share these fixes please? If Nestopia plus! is dead, then how do you explain everything passing on your build? WTF.


I not fixed! this test code,I didn't save on the computer~! Wait UE solution


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 76 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next

All times are UTC - 7 hours


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group