Jump to content
IGNORED

Altirra 2.20 released


phaeron

Recommended Posts

Ah I was excited to try this thinking it might let me run Crownland but it still crashes :P

 

I know I have some setting wrong or something, but not sure what. I posted in another thread about it, but here it is below too.

 

I really want to get this running haha.

 

Check System > CPU Options. Crownland will lock up like this if you have illegal instructions disabled or have switched the CPU mode to 65C816.

Link to comment
Share on other sites

Oops, bug in the debugger: .tracecio by itself just queries the state, and it's telling you tracing is enabled when it isn't. Use .tracecio on to actually enable it. You'll then get output like this:

 

CIO: IOCB=2 (-), CMD=$0C (close)
CIO: IOCB=0, CMD=$03 (open), AUX1=$0c, filename="E:"
CIO: IOCB=2 (-), CMD=$0C (close)
CIO: IOCB=2, CMD=$03 (open), AUX1=$0c, filename="D1:MEM.SAV"
CIO: IOCB=2 (D:), CMD=$0C (close)
CIO: IOCB=2 (-), CMD=$0C (close)
CIO: IOCB=1, CMD=$03 (open), AUX1=$04, filename="D1:DUP.SYS"
CIO: IOCB=1 (D:), CMD=$07 (get characters), buffer=$1df4, length=$0002
CIO: IOCB=1 (D:), CMD=$07 (get characters), buffer=$15a0, length=$0004
CIO: IOCB=1 (D:), CMD=$07 (get characters), buffer=$1f0c, length=$13fa
CIO: IOCB=1 (D:), CMD=$07 (get characters), buffer=$15a0, length=$0004
CIO: IOCB=1 (D:), CMD=$07 (get characters), buffer=$02e0, length=$0002
CIO: IOCB=1 (D:), CMD=$07 (get characters), buffer=$15a0, length=$0004
CIO: IOCB=1 (D:), CMD=$0C (close)
CIO: IOCB=2 (-), CMD=$0C (close)

Link to comment
Share on other sites

The trace is extremely useful. Could you please add the Y-register value/STATUS result value of the operation?

 

CIO: IOCB=1, CMD=$03 (open), AUX1=$04, filename="D:CALAMANI.EXE"

CIO: IOCB=1 (D:), CMD=$07 (get characters), buffer=$26e8, length=$0002

CIO: IOCB=2 (-), CMD=$0C (close)

CIO: IOCB=1, CMD=$27 (special): filename=""

CIO: IOCB=2 (-), CMD=$0C (close)

CIO: IOCB=2, CMD=$03 (open), AUX1=$04, filename="D:A.DAT"

CIO: IOCB=2 (D:), CMD=$07 (get characters), buffer=$8fff, length=$1000

CIO: IOCB=2 (D:), CMD=$0C (close)

CIO: IOCB=2 (-), CMD=$0C (close)

CIO: IOCB=2, CMD=$03 (open), AUX1=$04, filename="D:B.DAT"

CIO: IOCB=2 (D:), CMD=$07 (get characters), buffer=$8fff, length=$1000

CIO: IOCB=2 (D:), CMD=$0C (close)

CIO: IOCB=2 (-), CMD=$0C (close)

CIO: IOCB=2, CMD=$03 (open), AUX1=$04, filename="D:SL_DAT.DAT" => Actually ended with Y=$AA => error

CIO: IOCB=1 (-), CMD=$0C (close)

CIO: IOCB=1, CMD=$27 (special): filename="D1:DUP.SYS"

Edited by JAC!
Link to comment
Share on other sites

That's something I've been meaning to do for a while, but it requires some beefing up of the breakpoint system because it has to intercept execution at the end of CIO. In the meantime, this will set up a tracepoint at the end of the CIO routine in the XL/XE OS:

 

bx "pc=$e694 and y>=$80" \".printf \"CIO call failed: status=$%02x\" y ; g"

  • Like 1
Link to comment
Share on other sites

I think I might have found the crash that fjc was running into... there was a problem in the debugger where the history pane code could overflow the stack. Basically, when I fixed the stack unwrapping code so that it could trace JSR/RTS around the $1FF-$100 boundary, it then caused a problem where crashed 6502 code could nest more deeply than the tree node allocation code could handle. Sigh. Fixed version:

 

http://www.virtualdub.org/beta/Altirra-2.30-test2.zip

http://www.virtualdub.org/beta/Altirra-2.30-test2-src.zip

 

I hadn't intended to push it out yet, but this build also has more work on the LLE kernel, such as full support for PBI devices. It also contains a printer (P:) driver. I had figured that I didn't need one because no one uses it and I didn't emulate the printer device at an SIO anyway, but with my dumb luck I found a game that opens P: even though it doesn't need it... grr.

Link to comment
Share on other sites

I hadn't intended to push it out yet, but this build also has more work on the LLE kernel, such as full support for PBI devices. It also contains a printer (P:) driver. I had figured that I didn't need one because no one uses it and I didn't emulate the printer device at an SIO anyway, but with my dumb luck I found a game that opens P: even though it doesn't need it... grr.

 

:lol:

 

Sorry... that's just nuts..

 

So what game is it?

Link to comment
Share on other sites

  • 2 weeks later...

Oops. Fixed:

http://www.virtualdub.org/beta/Altirra-2.30-test3.zip

http://www.virtualdub.org/beta/Altirra-2.30-test3-src.zip

 

Also contains a bunch of compatibility fixes in the LLE kernel. That section in the OS Manual that says that CDTMF3-5 are never modified by the OS except for init and timeout? It's a lie. Spider Quake breaks if that behavior is actually implemented.

  • Like 1
Link to comment
Share on other sites

Using the Emulator to run Ultimate interface with hard disk and the FAT32S.XEX to mount an ATR to D1:, but today I loaded an ATR with ALT+SHIFT+D into drive D1: and all I can see is the previous ATR loaded with FAT32S.XEX. I finally got around the problem by editing the Altirra.ini file and deleting the "Disk 0" = "WF:\\THIRTY2\\BAS7FFF.ATR" entry. So my question is : How to disengage an ATR enabled with FAT32S.xex without enabling another unwanted ATR from fat32 volume.

 

With real hardware cycling the power switch will disengage the FAT volume.

Link to comment
Share on other sites

With real hardware cycling the power switch will disengage the FAT volume.

 

Try: Debug -> Options -> Randomize memory at cold reset. This should clear the flag which tells the PBI code not to re-read the partition table (since if the flag is set, it assumes a restart is happening after some ATR was mounted in the RAM-based table). Or you could just press Shift+Reset to force a partition table re-read if there's an APT on the disk.

Edited by flashjazzcat
Link to comment
Share on other sites

Whoa whoa whoa....

 

First, the drive mounting options in Altirra's Disk Drive dialog (Alt+Shift+D) and the drive mounts done in emulation through the FAT32 loader are entirely separate. The first the equivalent to putting a disk into a physical disk drive connected to the SIO bus; the second is just changing the mounted image in the virtual D1: provided by the SIDE PBI driver. Only one of the D1: drives will 'win' and be visible to running programs. Normally, this is the PBI driver, which means the PBI driver has priority and is intercepting disk requests before they go to the disk drive. You get the same effect if you try mounting an image on a real Atari with a physical disk drive also connected. Under no circumstances does Altirra allow any code running in the emulation, such as the FAT32 loader or the PBI driver, to unmount or mount images in its emulated disk drives. Code running in emulation can only choose to ignore the physical disk drives by doing its own thing in requests to D1:, as the PBI driver does.

 

Second, the randomize at disk reset only changes what bytes are set in memory when a cold reset (Shift+F5) occurs. If this option is not set, all memory is still cleared, just to $00. If any code is sensitive to the state of this option, that's bad, as it means that the code is relying on uninitialized memory. With static RAM this could be any value on startup and will lead to random bugs.

Link to comment
Share on other sites

Yeah - you're right about randomize: I forgot that what actually happened was that Candle changed the U1MB BIOS so that it clears the RAM under the IO area when the computer is coldstarted. My apologies. So the emulator's randomize setting will in fact make no difference to this scenario. The PBI code no longer relies on uninitialized memory loctions, so if it's not working as expected, something's wrong some place else.

 

As for the drive mounts: yes, of course they're separate. Editing the Altirra INI file would simply get rid of the ATR the emulator mounted, and not the disk image mounted by FAT32S.XEX. In either case, the PBI disk image will still be visible until the partition table is cleared in RAM.

Link to comment
Share on other sites

Cool, finally it's running on my small NetBook (Ubuntu 10.10 + wine).

 

The OpenGL option makes the Display visible (I don't have DirectX installed inside WINE).

 

Anyway, I put some photos of the true PAL artefacting of a real machine. May be, you could implemente it in future releases (PAL artefacts don't look accurate with the patterns on my screenshots). Screens: http://www.abbuc.de/~atarixle/blog/index.htm#xlpalartifacts

Link to comment
Share on other sites

I don't officially support WINE, particularly as its WineD3D layer has some... issues... but the last time I tested it on a LiveCD installation, I didn't have any problems. Does /gdi work for you? OpenGL mode is superior, but it's worrying that either GDI mode is not working or it's unable to fall back from D3D9 mode to GDI mode.

 

The PAL artifacts were reasonable compared to screenshots I had at the time. I'll have to study yours more closely... you have more artifacting in the pattern area and less on the text edges, which is strange.

 

I rewrote part of the UI to support tab stacking of panes, which allows for better use of screen space in the debugger. The caption is now omitted for panes in the main docking well, which means that the Display banner is now gone in normal operating mode. The new Window menu allows panes stacked there to be undocked or closed.

 

http://www.virtualdub.org/beta/Altirra-2.30-test4.zip

http://www.virtualdub.org/beta/Altirra-2.30-test4-src.zip

Link to comment
Share on other sites

Actually, I don't know why Altirra 2.10 didn't run on WINE on my NetBook (GPU: Intel GMA945). And I still don't know why it runs longer, so I can switch to OpenGL.

The same version ran perfectly on WINE on my PC (GPU: Nvidia GTX460) - with DirectX, and since I don't install NFS:World anymore also without.

May be it's caused by the older WINE version on the NetBook (WINE 1.4 vs. always the current version on the PC).

 

When I look at the artifacts in your emulator, I see the nicely drawn artifacts that cause Blue/Yellow colored borders.

Altirra just ignores those artifacts which cause the red/green coloring (caused by diagonally arranged pixels underneath).

Link to comment
Share on other sites

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...