Jump to content
IGNORED

Altirra 2.00


phaeron

Recommended Posts

Caterpiggle, run the emulator (test 32).

Run file:

file ---> boot image ---> altirramapramtest.obx

turn on the option to System ---> memory size ---> MapRAM

Reset the "Shift + F5"

after this test is passed.

mapRAM works.

Thanks for the update Avery.

Link to comment
Share on other sites

No, you should be seeing a blue screen with ok in the top left.

 

The only way I can get a rainbow is either not to have the maprom enabled under memory or to be in 800 mode, XL and 1200 mode work fine and give the ok, I've tried every thing to recreate what you see but all I say is check you are in XL mode preferably using the XL bios (although Phaeron's HLE mode works).

 

As long as Maprom is ticked in beta 32 it should be giving that ok...

 

Just checking it is beta 32 you are using incase you missed the update from 31?

Link to comment
Share on other sites

I did not downloaded 31 , just from 30 to 32 leap.

 

I read that file is for storage highest scores for any games associated with atr or xex files. Is that right ?

 

I know XXL has developed a use for it doing the high scores, not sure if there's any other already developed uses so far but its all good.

 

Hope you get the maprom thing working, based on what I wrote previously (and Sergeys message) it should be working for you.

Link to comment
Share on other sites

It's often a good idea to allow illegal instructions, and untick "stop on BRK".

 

Plenty of software uses the "useful" illegal instructions, often it was just to throw off crackers, sometimes to save memory/cycles.

I get the same error though, and I have the above mentioned options set. Atari 800 Win + runs this.

Link to comment
Share on other sites

Ugh. I need to test this on a real Atari, but I don't have them handy with me right now. This demo has two horrible bugs. The first is that the DLI is too long -- P/M on, LMS on 224 horizontally scrolled narrow mode F lines means 57 cycles available after DMA. Problem is, the DLI is 59 cycles long, so this demo piles up RTI instructions on the stack. The second is that it changes HSCROL at random locations in the scanline, which can lengthen or shorten the mode line and more importantly blow the playfield start and stop deadlines. On Altirra, the DLI is recursing often enough to overflow the stack. I'll have to analyze the HSCROL write timings over a frame to figure out exactly what's going on.

Link to comment
Share on other sites

I tried to run it on my XL but the executable is classed as broken by Aspeqt, missing a file it says..

 

Seems this might have been coded on an emulator..?

 

Anyone with a bigger brain than me fancy converting it and trying on a real machine?

Edited by Mclaneinc
Link to comment
Share on other sites

I tried to run it on my XL but the executable is classed as broken by Aspeqt, missing a file it says..

 

Seems this might have been coded on an emulator..?

 

Anyone with a bigger brain than me fancy converting it and trying on a real machine?

 

The segment length is one byte too long. If you have the console open when you load the executable in Altirra you get this message:

 

WARNING: Invalid Atari executable: bad start/end range.
EXE: Loading program 0006-3AA9 to 2000-5AA4

 

Here's a version with an extra zero byte tacked on the end to make the segment length match up:

 

BITS1505-segment-fix.XEX

Edited by Xuel
Link to comment
Share on other sites

Thanks for that, I can now confirm that the demo crashes and reboots my PAL XL continuously...

 

Probably proves it was written on an emulator, most likely win plus.

 

Apologies to Avery for getting you to bug hunt someone's crap code..

Edited by Mclaneinc
  • Like 1
Link to comment
Share on other sites

Yeah, I figured as much. After examining a frame I found out that it's even worse in that it toggles between HSCROL values that would cause ANTIC to miss the playfield stop entirely, triggering the DMA-across-horizontal-blank bug. I'm pretty sure this demo is outright broken on any real hardware. No self-respecting Atari coder would ever use .PRG for a program file extension anyway. :P

 

Fixing the demo to work is left as an exercise for the reader....

Link to comment
Share on other sites

It's the same old as yet unemulated bug.

 

Essentially, there are only two places where ANTIC attempts to stop the playfield clock: at the right edge of the playfield and at regular intervals in horizontal blank. There are two ways to move the stop points, DMACTL and HSCROL. If you screw around with DMACTL, the worst you get is some funny length lines, because all of the playfield width settings have stop cycles that are multiples of 16 apart and eventually the playfield clock will be stopped in horizontal blank if nothing else. HSCROL is more dangerous because it can shift the pattern such that the clock won't be stopped in HBLANK. This happens because HSCROL can't shift the current DMA pattern -- the bits are already flying around the playfield clock -- but it can move the stop. If bit 1 is different at high speed (modes 2-5/D-F), bits 1-2 at medium speed (modes 6-7/A-C), or bits 1-3 at low speed (modes 8-9), ANTIC will miss the stop and the playfield clock will keep running.

 

Now, there is hardcoded logic to block playfield fetch requests at the beginning of horizontal blank, so you get playfield to the right edge and then everything goes quiet for a moment. Problem is, the DMA restriction is lifted at the start of the next scanline where special DMA needs to occur and that's where the pain starts: the special DMA and playfield DMA will both fire at the same time. When they coincide, you fetch occurs at the logical AND of the two addresses and the same data is sent to both the playfield and display list or P/M graphics. The playfield clock will keep running into the next scanline, and if the pattern is different again, it can result in solid DMA and block the CPU for several dozen cycles. This combined with the memory scan counter having counted way beyond where it should have generally results in a totally trashed display.

 

Needless the say, what you mainly need to know about this bug is that you don't want it.

Link to comment
Share on other sites

I presume there's nothing that actually uses the bug (sounds very unlikely)?

 

If not surely its not worth the time and effort even for your search for completeness to implement it?

Edited by Mclaneinc
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...