Jump to content
IGNORED

Altirra 1.8 released


phaeron

Recommended Posts

  • 1 month later...

A few bug reports/issues here.

 

Not sure if this is the latest build of 1.8 I'm using, so some of these might be resolved:

 

- In a game I'm currently working on, I noticed that although I had a stable looking DLI/colour change, it was not the case on real hardware, so possibly some DMA issue there. The DLI occurs on a normal Mode 2+LMS line but the following line is a Mode 4+HSCROL+LMS line. But I can't release the code for this... still under wraps in development (and also resolved insofar as the program goes).

 

- More an annoyance than a bug. Single-step instruction via F11 doesn't work unless the Console window is in focus.

 

- Single-step bug. If you have VBXE enabled, then stop and then single-step, you get a downward colour bleed effect that progressively corrupts the display.

 

- Watch display. Kind of annoying, if VBXE enabled, the watch is done using skinnier text - much easier to read if VBXE not enabled.

Link to comment
Share on other sites

Rybags, here's the link to the very latest beta which looks like being the 1.9 final or very close to it, there's a load of stuff fixed since 1.8 and some great additions so might be worth a try..

 

http://www.virtualdu...-1.9-test20.zip

 

That link is a bit malformed.. http://www.virtualdub.org/beta/Altirra-1.9-test20.zip

Link to comment
Share on other sites

... here's the link to the very latest beta which looks like being the 1.9 final or very close to it, there's a load of stuff fixed since 1.8 and some great additions so might be worth a try..
cool, thanks. That fixes some stuff for me from the 1.8 final build.
Link to comment
Share on other sites

I'm just posting some "bug". When I have selected Integral Square Pixels stretch mode and use Adjust windows size feature (requested by me ;) ) then the windows is smaller due to menu is too long and splitted into two rows and the picture is distorted then. See attached pic (word MEMORY looks more like MCMORY i.e.).

 

post-3960-12995758766_thumb.png

Edited by MaPa
Link to comment
Share on other sites

If you can PM me about any clues or symptoms on the DLI issues, I can take a look.

 

F11+VBXE redraw issues -- do you have interlacing on? I can see an issue there to fix.

 

Yeah, I've been bitten by the debug key focus issue too. Part of the issue is that several of the debug commands are context sensitive, so I can't just bind them to global accelerators. Need to figure out a solution.

 

The narrow font happens because the VBXE and artifacting modes generate a 14MHz (640x) signal instead of 7MHz (320x). I was bad and hardcoded a lot of coordinates in the HUD code, though, so I need to fix all that up.

Link to comment
Share on other sites

Btw. when I coded intro for FLOP diskette magazine I ran into inaccurate emulation issue too. Altirra was working fine, but in A800Win it had some glitches and surprisingly on real HW were the same glitches. Probably some 1 cycle inaccuracy. I think it was on wide screen mode, character mode line and first line (badline) with hscroll enabled ;) I'll try to recover it out, as I fixed it already and I'm not sure where exactly it was and how the code was before fix.

Link to comment
Share on other sites

Is there (or can there be) a way to accelerate the mouse speed? I tend to run Atari800Win with the mouse sampling ramped up some when testing the GUI, and this appoximates to the responsiveness of a real mouse on actual hardware.

 

Hi Jon, if in the mouse input settings you set mouse movement axis's mode to relative and crank up the speed to 10 on either one or both depending if its a PC mouse mode or ST, that will give you more speed..

Link to comment
Share on other sites

Hi Jon, if in the mouse input settings you set mouse movement axis's mode to relative and crank up the speed to 10 on either one or both depending if its a PC mouse mode or ST, that will give you more speed..

Wow - I'd never been down in those dialogues before. This emulator is just amazing. I cranked both up to 10 and mouse movement feels much better now. Thanks! :)

Link to comment
Share on other sites

Btw. when I coded intro for FLOP diskette magazine I ran into inaccurate emulation issue too. Altirra was working fine, but in A800Win it had some glitches and surprisingly on real HW were the same glitches. Probably some 1 cycle inaccuracy. I think it was on wide screen mode, character mode line and first line (badline) with hscroll enabled ;) I'll try to recover it out, as I fixed it already and I'm not sure where exactly it was and how the code was before fix.

 

I believe this, but I'd really need to see an example. I do know of a couple of bugs in the way that Altirra handles HSCROL, in particular with when and what changes to it take effect. The window for this can be very late for a wide hscroll playfield, so it's possible to accidentally trip this with writes in HBLANK, especially if you have an LMS afterward fixing any discrepancies in the memory scan counter. I have a branch with some fixes to HSCROL handling, but I haven't integrated it into the mainline yet because there is a noticeable hit to emulation speed.

Link to comment
Share on other sites

  • 4 weeks later...

Doing some work on the MyIDE driver and fired up 1.9 test of Altirra... no HDD found. Has anything changed in the MyIDE emulation code? The 1.0RC SDX MyIDE driver which worked fine with previous versions of the emulator suddenly no longer detects the disk

 

EDIT: Went back to 1.8 and it's fine now. So something's not right in the 1.9 test code.

Edited by flashjazzcat
Link to comment
Share on other sites

Haven't changed the IDE code since 1.8, and actually, I can't get the driver in 4.43RC2_MYIDE (v1.0RC) working with $D1xx on that version either. I backed down to an earlier SDX build that has v0.6 of your driver, and it seems to work with 1.9-test.

 

What I'm seeing so far is that the OS search for PBI devices manages to initiate a valid READ SECTOR ($20) command on the device, due to the unfortunate aliasing of $D107 with $D1FF. This then puts the device in a state with DRQ set. Presumably this is why the current version of your MyIDE driver can't detect it, as if I hack the IDE code to ignore writes to $D1FF it works fine. However, the schematics I've been able to find for internal MyIDE interfaces at $D1xx don't decode A2-A7, so they wouldn't have this check.

 

I dug around a bit in ATA-4, and I found one possible reason for the difference from real hardware. Altirra emulates a hard disk that does not support the PACKET (ATAPI) command set, and therefore according to ATA-4 section 9.1 needs to init the command registers to head 0, cylinder 0, sector 1. This is unfortunately a valid CHS and thus the bogus READ SECTOR command succeeds. A device that supports the PACKET set, however, inits to cylinder $EB14 instead, which is most likely not valid and thus the READ SECTOR command fails. This still won't help on a warm reset since MyIDE doesn't pass reset through, but it would affect cold reset.

 

Altirra also doesn't reset the emulated IDE device on a cold reset, but that's easily fixed (and still doesn't affect the startup case).

 

A couple of questions I have:

  • Do you know or can you test if an internal MyIDE decodes $D1FF as the command register?
  • How does your device detection code handle a device that currently in a read sector command?

 

My instinct says that some device recovery code might be needed in the driver init path, but that's assuming the DRQ issue is what's actually happening.

Link to comment
Share on other sites

Yeah - you're right. The internal interface detection of 1.0RC doesn't work with Altirra 1.8. I can't get either internal or external to work with Altirra 1.9, however.

 

It's easy to test $D1FF as the command register. Just specify the custom hardware base address (in hex) as an argument to the driver. I don't have an internal interface setup at the moment, however.

 

The drive detection code just waits for ready to go high at the beginning of the routine. I guess what you're saying is that it should check for DRQ, and if it's high, execute reads until it goes low. However, the initial scan for the hardware base address is simply the following, and is executed before anything else:

 

detect_ide
lda #$0F ; check for internal interface
R25	sta $D105 ; IDE_CYLL (internal)
R26	lda $D105
cmp #$0F
rts
;

This is called twice: with $D105, and then with $D505 (the hardware addresses having been relocated before the second attempt). The actual method used inside detect_ide is a copy of what Sijmen uses in his BASIC version of FDISK

 

Thereafter - owing to the limited access we have to assume if not using 8-bit PIO mode - we do:

 

detect_drive ; attempt to read sector 0 on master/slave drive
sta usertable[0].dev
jsr lba0
lda secbuf_p ; point to internal partition table buffer
sta usertable[0].buf
lda secbuf_p+1
sta usertable[0].buf+1
lda #2
sta usertable[0].sec_size
jmp readsector
;

This tries to read sector 0 at 256bps, and returns the error on a failed read. It's fairly obvious that the driver is failing to detect the internal drive, not the internal interface: hence "HDD not found" rather than "No MyIDE found".

Edited by flashjazzcat
Link to comment
Share on other sites

Hi Phaeron!

 

What I'm seeing so far is that the OS search for PBI devices manages to initiate a valid READ SECTOR ($20) command on the device, due to the unfortunate aliasing of $D107 with $D1FF. This then puts the device in a state with DRQ set. Presumably this is why the current version of your MyIDE driver can't detect it, as if I hack the IDE code to ignore writes to $D1FF it works fine. However, the schematics I've been able to find for internal MyIDE interfaces at $D1xx don't decode A2-A7, so they wouldn't have this check.

Hardware doing no proper address decoding is a real pain in the ass. I considered this to be a bug (or unfortunate shortcut) in the original internal schematic, so I built my own interface which decodes A4-A7, limiting MyIDE addresses to $D10x (D107 is still aliased to D10F etc, but I did this intentionally so I could later map D108-D10F to the secondary IDE register set, enabling access to the alternate status/control register).

 

The MyIDE OS and all other software works fine with strict address decoding, so I'd say just limit MyIDE to D100-D107 (or D10F).

 

BTW: the original MyIDE cart also didn't do any address decoding and used the whole $D5xx range, the later MyIDE+flash cart limited IDE access to the lower D5xx addresses - still without any compatibility issues.

 

so long,

 

Hias

Link to comment
Share on other sites

LOL... turns out the $D1FF issue was masking a more basic problem: I had RAM mapped in at $D1xx! That was preventing external MyIDE detection ($D5xx) from working.

 

This version is fixed:

 

http://www.virtualdub.org/beta/Altirra-1.9-test33.zip

http://www.virtualdub.org/beta/Altirra-1.9-test33-src.zip

 

I went ahead and restricted the IDE register range. Without the actual hardware I can't test the address range, and with the detection problems it's not worth speculatively emulating the address mirroring (even though I kind of hate turning it off).

 

BTW, SDX seems to break slightly when the IDE partition table is scrambled: either it prints extra lines on the command prompt, or it starts spewing bogus errors. Works fine if either the MyIDE interface is not detected or the partition table is valid. I still think it would be worth looking at clearing a pending read, but there are lots of other cases that could arise on a warm reset, like a sector *write* in progress. Without being able to directly issue a reset to the drive -- having no access to the reset line or the secondary register set -- it's going to be hard to stably and safely reset the drive.

 

Just a quick question about the Quick Load State and Save State options on the File column: Did these ever work or are they ever going work?

 

They work, but they only save to a memory buffer. I'm not ready to commit to a save format yet.

Link to comment
Share on other sites

LOL... turns out the $D1FF issue was masking a more basic problem: I had RAM mapped in at $D1xx! That was preventing external MyIDE detection ($D5xx) from working.

 

This version is fixed:

 

http://www.virtualdu...-1.9-test33.zip

http://www.virtualdu...-test33-src.zip

 

I went ahead and restricted the IDE register range. Without the actual hardware I can't test the address range, and with the detection problems it's not worth speculatively emulating the address mirroring (even though I kind of hate turning it off).

 

BTW, SDX seems to break slightly when the IDE partition table is scrambled: either it prints extra lines on the command prompt, or it starts spewing bogus errors. Works fine if either the MyIDE interface is not detected or the partition table is valid. I still think it would be worth looking at clearing a pending read, but there are lots of other cases that could arise on a warm reset, like a sector *write* in progress. Without being able to directly issue a reset to the drive -- having no access to the reset line or the secondary register set -- it's going to be hard to stably and safely reset the drive.

Thanks. I'll test this later.

 

As for SDX breaking: I've noticed the exact same effect on real hardware, usually when testing unstable hardware which results in big problems on bootup. I need to track down what's happening there. Also, with regard to pending reads, we can't even rely on cautionary reads/writes to the data register to clear DRQ, since we can't know in advance which kind of operation we're "interrupting". It's a tricky problem indeed.

Edited by flashjazzcat
Link to comment
Share on other sites

  • 3 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...