Author Topic: Question about CRTC register 1  (Read 1914 times)

0 Members and 1 Guest are viewing this topic.

Offline Devilmarkus

  • Vivid source of indefiniteness
  • 6128 Plus
  • ******
  • Posts: 4.035
  • Country: de
  • WebCPC / JavaCPC developer
    • index.php?action=treasury
    • CPC-Live website
  • Liked: 1014
  • Likes Given: 926
Question about CRTC register 1
« on: 19:20, 24 June 09 »
Hi together,
while I was coding on JavaCPC's CRTC emulation, i found some problems with "Backtro" demo.


I checked every CRTC register and figured this out:
- Backtro demo sets Register 1 to &BD

So i tried this (out &bc00,1:out &bd00,&bd) on several emulators, and on my CPC 6128...

Result was totally different...

Winape, WinCPC, and Arnold show this result:


JavaCPC shown this result:


AND!!! my CPC 6128 looked like:


After some help from Kevin, I fixed JavaCPC's register 1, too, so Backtro demo works now...


Question is now:
Why do emulators show a different result here, than my CPC 6128? (CRTC 1)

I set the border to red to make it visible.
When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release

Offline Executioner

  • Supporter
  • 6128 Plus
  • *
  • Posts: 783
  • Country: au
  • WinAPE Developer
    • WinAPE
  • Liked: 391
  • Likes Given: 60
Re: Question about CRTC register 1
« Reply #1 on: 07:43, 25 June 09 »
Question is now:
Why do emulators show a different result here, than my CPC 6128? (CRTC 1)

I set the border to red to make it visible.

Not sure, did you try this with different CRTC types?

Offline Devilmarkus

  • Vivid source of indefiniteness
  • 6128 Plus
  • ******
  • Posts: 4.035
  • Country: de
  • WebCPC / JavaCPC developer
    • index.php?action=treasury
    • CPC-Live website
  • Liked: 1014
  • Likes Given: 926
Re: Question about CRTC register 1
« Reply #2 on: 12:34, 25 June 09 »
Not sure, did you try this with different CRTC types?

Yes, I tried this with all possible CRTC configurations in Arnold and WinApe.
It seems to be CRTC independent.

I also wanted to try this on my 464, but it also has CRTC 1.
When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release

Offline Gryzor

  • Administrator
  • 6128 Plus
  • *****
  • Posts: 15.568
  • Country: gr
  • CPC-Wiki maintainer
    • CPCWiki
  • Liked: 3136
  • Likes Given: 5784
Re: Question about CRTC register 1
« Reply #3 on: 12:25, 26 June 09 »
So what emu does it run on perfectly? Because I'm pretty sure I've ran this in the past...

Offline Executioner

  • Supporter
  • 6128 Plus
  • *
  • Posts: 783
  • Country: au
  • WinAPE Developer
    • WinAPE
  • Liked: 391
  • Likes Given: 60
Re: Question about CRTC register 1
« Reply #4 on: 09:37, 30 June 09 »
Markus, how did you get the screenshot from your real CPC? Is it exactly as it appears?

Offline Devilmarkus

  • Vivid source of indefiniteness
  • 6128 Plus
  • ******
  • Posts: 4.035
  • Country: de
  • WebCPC / JavaCPC developer
    • index.php?action=treasury
    • CPC-Live website
  • Liked: 1014
  • Likes Given: 926
Re: Question about CRTC register 1
« Reply #5 on: 11:27, 30 June 09 »
Markus, how did you get the screenshot from your real CPC? Is it exactly as it appears?

Sorry, the screenshot is not 100% pixel-exact! (I modified WinApe screenshot using graphic program)
But it shows, 'how' the screen looks like on CPC 6128.
Do you see different result on your CPC/CPC+?

BTW.: Once I wrote, that "Preview 3" (hitech) demo crashes on WinApe.
I can tell you, why this happens.
It crashes, when printer output is enabled.
(I had the same problem in JavaCPC, so I modified the port-range for printer output)



To explain:
JavaCPC uses a function like this:
Code: [Select]
     if (Switches.Printer)
         if (((port & 0x1000) == 0) && ((value & 0x80) != 0)){

To make sure, that this port is not reached by some funny applications, I made this:
Code: [Select]
     if (Switches.Printer)
         if (port > 0xef30 && port < 0xef3f)
         if (((port & 0x1000) == 0) && ((value & 0x80) != 0)){

Not the niciest method, but it works  ;D
« Last Edit: 11:49, 30 June 09 by CPC-Live »
When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release