Jump to content
stephena

Testing the new Stella TIA core

Recommended Posts

Yes, take a look at the Cart4A50.cxx file. In its install method, you will see it take control of the entire address space, including responsibility for the TIA and RIOT. This was required for the 4A50 scheme, since there were so many hotspots and gotchas, it was easier for the cart class to handle everything in its own peek/poke methods.

 

EDIT: It may not even be necessary to change the code very much. Just do installDelegate() on the TIA and RIOT, and you will get their peeks/pokes forwarded to you to do with as you please.

  • Like 2

Share this post


Link to post
Share on other sites

EDIT: It may not even be necessary to change the code very much. Just do installDelegate() on the TIA and RIOT, and you will get their peeks/pokes forwarded to you to do with as you please.

 

Thanks for the suggestion, over lunch I removed the changes to System.cxx and Cart.hxx and updated BUS to use the delegate.

 

post-3056-0-85172400-1488997978_thumb.png post-3056-0-82335500-1488998756_thumb.png post-3056-0-89024800-1488998759_thumb.png post-3056-0-14711400-1488998559_thumb.png post-3056-0-53432800-1488998562_thumb.png

  • Like 5

Share this post


Link to post
Share on other sites

These look pretty amazing, a real pity that my Jr. does not play well with bus stuffing ;-) Looking forward to the pull request, maybe I'll make an attempt to port BUS to 6502.ts ;)

Share this post


Link to post
Share on other sites

These may be all minor things..

 

Vong has this annoying background tone.

Zoo Fun doesn't start.

Canyon Bomber sometimes has a flashing blue or grey or pink scanline at the bottom. Sometimes it's full width, sometimes half, or smaller.

The 2 DPC arm demos don't run.

Test.bin outputs differently on pre-5 vs 4.7.3 vs 3.9.3
roms for this post.zip

Share this post


Link to post
Share on other sites

Keatah, could you check the failing ROMs with pre4, too? There is an experimental RIOT change in pre5 that I guess is responsible for at least some of those.

Share this post


Link to post
Share on other sites

CanyonBomber behaves the same way in pre4 and pre5.

It does not have the random/stray line in 3.9.3 or 4.7.3

Share this post


Link to post
Share on other sites

In 3.9.3 and 4.7.3 ZooFun starts with the title page, and then you can start the game. the game has a greenish backdrop. detects as 291 @ 53.61 PAL

 

In pre4 ZooFun starts with the title page, and then you can start the game. the game has a pinkish/violet colored backdrop. detects as 291 @ 54.02 NTSC

 

In pre5, ZooFun starts with the title page, and then trying to start the game gives a black screen. detects as 291 @54.02 NTSC, but then pressing 'fire' changes the info to 292 @ 53.84 and the black screen.

Share this post


Link to post
Share on other sites

Not sure what dpc+ arm demo.bin is supposed to do. In pre4 and pre5 dragging and dropping the rom into the emulator results in no window coming up, no emulator screen showing. just STELLA or STELLA5 in the task manager. in 4.7.3 I get two hex numbers at the bottom of the screen.

 

The dpc+ arm music demo works in 3.9.3. I get a waveform and music.

In 4.7.3, pre4, and pre5 I get a partly garbled debug screen as soon as I start the rom. Then I do <CTRL-Q> to exit to desktop. I'm testing on my 4:3 screen at 1024x768. Clicking just a little below the AL in HALT (on the scrambled text) lets me do other things in the debugger.

post-4806-0-97958600-1489052238_thumb.png

 

Share this post


Link to post
Share on other sites

Ski Hunt (1983) (Home Vision) (PAL).BIN

Works in 3.9.3, 4.7.3, and pre4. Game seems playable with music and all graphics like it's supposed to. detects as 296 @ 52.70 PAL. Holding the reset button makes the info flash 342 @ 45.61 PAL, and it makes the game reset over and over, till you release the reset button. The screen seems to scroll up half-way during this. This seems to be normal operation. I guess.

 

But the game does not work in pre5. I get a black screen. it detects as 296 @ 52.70 PAL.

When I hit reset or 'fire' to start, the screen goes all black and the info changes to 342 @ 45.61 PAL and stays like that till I exit with <ESC> or <CTRL-Q>.

 

Regarding the test.bin from https://github.com/stella-emu/stella/issues/58

Everything seems to be ok. pre4 = pre5.

My bad, kinda got carried away and forgot this was regression testing for pre4 & pre5. The differences I noted were in 3.9.3 and 4.7.3, compared against pre4 & pre5. I s'pose we don't care too much about those older versions in this case.

 

Love the work that's being done. That's all for a little while.

Edited by Keatah

Share this post


Link to post
Share on other sites

Ski Hunt has the same problems as Acid Drop or Panda Chase. They have a timer loop with an even cycle count. So when the timer underflows and reaches the loop with an odd value, it never returns 0 when checked by the code.

 

The old cores had a hack for fixing this, but the new core should work without hacks. Obviously there is some extra timer logic, which is not documented.

  • Like 1

Share this post


Link to post
Share on other sites

Ski Hunt, Acid Drop, Panda Chase, Zoo Fun, Pumukl, etc all have an issue with the changes in the RIOT timer behaviour. It's now known what is causing this, and a fix is underway. Issue is https://github.com/stella-emu/stella/issues/97.

 

The DPC+ demos are from an old version of the DPC+ spec, while it was still being finalized. Stella only contains the most recent revision of the DPC+ bankswitching specification, so unfortunately those ROMs are now considered broken and won't work in Stella going forward (similarly, newly developed DPC+ ROMs won't work in Stella 3.9.3).

 

As for the Vong ROMs, only the first one "Vong (2008)" has a background sound, and only during the startup screen. Once into the playfield and moving the paddle, there is no sound at all on my system(s).

 

Canyon Bomber is a bug, issue https://github.com/stella-emu/stella/issues/103.

  • Like 2

Share this post


Link to post
Share on other sites

As for the Vong ROMs, only the first one "Vong (2008)" has a background sound, and only during the startup screen. Once into the playfield and moving the paddle, there is no sound at all on my system(s).

In Stella that background sound continues. It is resulting from repeatedly writing 0 to AUDF0 while AUDV0 and AUDC0 are 0 too.

Share this post


Link to post
Share on other sites

Obviously there is some extra timer logic, which is not documented.

It turned out, that the extra timer logic was documented, but unfortunately not in all docs. Thanks to alex_79 for pointing at the right documentation. :thumbsup:

  • Like 1

Share this post


Link to post
Share on other sites

In Stella that background sound continues. It is resulting from repeatedly writing 0 to AUDF0 while AUDV0 and AUDC0 are 0 too.

 

I'm unable to duplicate this in Stella in Linux. I will try in OSX and Windows soon.

 

EDIT: Confirmed, but only on Windows, not Linux or OSX :( I really hate the bugs that pop up only on certain platforms; it makes them much harder to track down.

 

To be clear, Thomas, the correct behaviour should be no sound at all? Because writing 0 to AUDF0 shouldn't matter when AUDV0 is 0 anyway??

Share this post


Link to post
Share on other sites

I already checked on real hardware, and there is no sound (on my console at least).

Share this post


Link to post
Share on other sites

I already checked on real hardware, and there is no sound (on my console at least).

Confirmed.

Share this post


Link to post
Share on other sites

We now have a way to detect NTSC vs PAL!

 

I think I'll be able to use mySystem->cycles() and myDisplayFormat (console) or tvMode(TIA) to simulate a timer in the Thumbulator to return appropriate values.

Share this post


Link to post
Share on other sites

I'm pretty close - I've implemented the timer in the thumbulator. It requires the run() from the cartridge class to pass the elapsed 6507 cycles since last run, and true/false for NTSC/PAL.

 

void Thumbulator::updateTimer(uInt32 cycles, bool ntsc)
{
  const double NTSC = 58.6664323021;
  const double PAL  = 59.2061068702;
  double increment;

  if (T1TCR & 1) // bit 0 controls timer on/off
  {
    if (ntsc)
      increment = cycles * NTSC;
    else
      increment = cycles * PAL;
    T1TC += uInt32(increment);
  }
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
string Thumbulator::run(uInt32 cycles, bool ntsc)
{
  updateTimer(cycles, ntsc);
  return this->run();
}

in my CDF cartridge class if I execute the ARM code like this:

 

myThumbEmulator->run(myARMCycles, true);


the timer runs at the right speed for NTSC:

 

post-3056-0-40767100-1489548445_thumb.png

 

if I change it to this for PAL:

 

myThumbEmulator->run(myARMCycles, false);


the timer runs at the right speed for PAL:

post-3056-0-16754100-1489548451_thumb.png

 

What I've not been able to figure out is how, in the CDF cartridge class, to get access to tia->tvMode() or equivalent so I could do this:

 

myThumbEmulator->run(myARMCycles, myTIA->tvMode() == TvMode::ntsc);

Any suggestions on what to do?

Share this post


Link to post
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...