高解像対応をやりたいその3

1080p を対応した後に整数を可変に循環させて平均として小数倍をだすというアイディアを教えてもらったので実装しました. 理想的な pixel aspect ratio にそしてある程度近づけることができました. *1

各種欠点は消せてませんが下記の2解像度でそれぞれ2種類の pixel aspect ratio をだすことにしています.

      |div2       |div3       |div4
理想値|0.583  --- |0.875  --- |1.167  ---
720pA |0.667 1.143|1.000 1.143|1.333 1.143
720pB | ---   --- |0.875 1.000|1.167 1.000
1080pA|0.625 1.071|1.000 1.143|1.250 1.071
1080pB|0.588 1.008|0.941 1.076|1.176 1.008

* 720pB.div2 は正常に絵が出ない. 設計ミスと性能の限界で直せない.

  • divN = vce dotlock = pce master clock / N
  • 1つ目の値: pixel aspect ratio
  • 2つ目の値: 理想との比率(倍率, 理想値 / 1つ目の値)

pixel aspect ratio の計算方法

      |vertical   |horizonal.2|horizonal.3        |horizonal.4
720pA |3          |2          |3                  |4
720pB |3          |(1+2+2+2)/4|(2+3+2+3+2+3+3+3)/8|(3+4)/2
1080pA|4          |(2+3)/2    |4                  |5
1080pB|(4+4+4+5)/4|(2+3)/2    |4                  |5

理想値は256x224 pixel の領域を 4:3 という仮定*2で下記の計算する.
224/3*N/256

切り替え可能

720p の A と B, 1080p の A と B は設定メニューで切り替えができます.
この都合で pixel aspect ratio on 4x3 での 3x3 は廃止にします.

*1:もちろん平均として小数倍なので、スクロール時の波打ちなどの違和感はあります.

*2:CRTでは横幅をユーザーが調節できるので仮定