Comments (9)
Pawn intro screen for me was not HAM, it was a palette swap per line via the copper ...Dynamic Hires from Newtek Digi-View maybe interlaced (flicker)
I just run The Pawn with some debug output enabled. It turns out that we're both right. The Pawn draws in HAM mode (interlaced), just as it uses palette swapping. The Copper is used to update the color registers ever line:
E.g., the following is happening in frame 2970, line 50:
[2970] ( 50, 2) FC0F94: PCBD 65AC 1000: Colorizer: pokeCOLOR00(0)
[2970] ( 50, 6) FC0F94: PCBD 65AC 1000: Colorizer: pokeCOLOR01(13)
[2970] ( 50, 10) FC0F94: PCBD 65AC 1000: Colorizer: pokeCOLOR02(12)
[2970] ( 50, 14) FC0F94: PCBD 65AC 1000: Colorizer: pokeCOLOR03(0)
[2970] ( 50, 18) FC0F94: PCBD 65AC 1000: Colorizer: pokeCOLOR04(0)
[2970] ( 50, 22) FC0F94: PCBD 65AC 1000: Colorizer: pokeCOLOR05(0)
[2970] ( 50, 26) FC0F94: PCBD 65AC 1000: Colorizer: pokeCOLOR06(0)
[2970] ( 50, 30) FC0F94: PCBD 65AC 1000: Colorizer: pokeCOLOR07(0)
[2970] ( 50, 34) FC0F94: PCBD 65AC 1000: Colorizer: pokeCOLOR08(0)
[2970] ( 50, 38) FC0F94: PCBD 65AC 1000: Colorizer: pokeCOLOR09(0)
[2970] ( 50, 42) FC0F94: PCBD 65AC 1000: Colorizer: pokeCOLOR10(0)
[2970] ( 50, 46) FC0F94: PCBD 65AC 1000: Colorizer: pokeCOLOR11(0)
[2970] ( 50, 50) FC0F94: PCBD 65AC 1000: Colorizer: pokeCOLOR12(0)
[2970] ( 50, 54) FC0F94: PCBD 65AC 1000: Colorizer: pokeCOLOR13(0)
[2970] ( 50, 58) FC0F94: PCBD 65AC 1000: Colorizer: pokeCOLOR14(0)
[2970] ( 50, 62) FC0F94: PCBD 65AC 1000: Colorizer: pokeCOLOR15(0)
This makes Pawn a brilliant test case for checking the timing of color registers. Right now, Denise picks up a changed color value immediately which is not accurate.
from vamiga.
Solved 😎. DMA can take place in VBLANK area, it is simply not displayed. DMA is only delayed by the vertical DIW flop. Hence, if the DIW V flop is set inside the VBLANK area, DMA starts early.
from vamiga.
Hmm, experimental HAM mode seems to work:
However, Pawn looks like this 🤔:
from vamiga.
Pawn intro screen for me was not HAM, it was a palette swap per line via the copper ...Dynamic Hires from Newtek Digi-View maybe interlaced (flicker)
from vamiga.
That explains a lot. I took a screenshot from SAE and and it appeared to me that the pixels are squares. HAM pixels are lores pixels which means they are twice as wide as heigh.
But how come the HAM flag is set 🤔😟.
BTW, as HAM pixels are twice as wide as high, one could assigned the first pixel a mixed colour which should result in improved HAM picture quality (HAM is all about changing colours smoothly). I'll try to do some experiments with such an extra-smooth HAM mode.
from vamiga.
New color management code has recorded more than 128 color changes in a single row 😳.
Todo: Check how this is possible. Assuming that only Copper is used to change the color registers (to be checked), changes should be limited by approx. 224 / 4 = 56.
from vamiga.
Upper part of the intro screen:
SAE:
vAmiga:
Either vAmiga starts with wrong bitplane data or it starts drawing too early (maybe for certain biplanes only which may cause the graphics glitches).
from vamiga.
This bug is giving me a hard time, but I am coming closer. I faked the HAM mode in both SAE and vAmiga such that only 1 bitplane is drawn (without hold and modify).
This shows clearly that
- the bitplane data itself is not corrupted in vAmiga (at least plane 1)
- the bitplane data is shifted in vAmiga. But why? 🤔
from vamiga.
vAmiga starts DMA in rasterline 26:
[1610] ( 26,191) FC0F94 BCB-DA 65AC 0000 Agnus: addBPLMOD0 +30 = 159594 ($26F6A)
[1610] ( 27,191) FC0F94 BCB-DA 65AC 0000 Agnus: addBPLMOD0 +30 = 159654 ($26FA6)
[1610] ( 28,191) FC0F94 BCB-DA 65AC 0000 Agnus: addBPLMOD0 +30 = 159714 ($26FE2)
It is doing so, because lines 0 ... 25 belong to the VBLANK area where no DMA can take place.
Strangely enough, SAE DMA starts DMA in line 19 😳:
amiga.js:295 (19,191) add_modulo 0: add 30 to bplpt = 159594 bplptx = 159594
amiga.js:295 (20,191) add_modulo 0: add 30 to bplpt = 159654 bplptx = 159654
amiga.js:295 (21,??) add_modulos 0: 159714 (159714) 1: 174714 (174714) 2: 189714 (189714) 3: 204714 (204714) 4: 219714 (219714) 5: 234714 (234714)
amiga.js:295 (22,??) add_modulos 0: 159774 (159774) 1: 174774 (174774) 2: 189774 (189774) 3: 204774 (204774) 4: 219774 (219774) 5: 234774 (234774)
How come? 🤔
from vamiga.
Related Issues (20)
- SEC macro computes wrong cycle values HOT 3
- Relicense the emulator core under a different license? HOT 4
- serial data transmission and data item size HOT 1
- /tmp no longer accessible for running regression tests HOT 2
- Implementing a more flexible DIW logic HOT 1
- Getting a bluetooth tank mouse working HOT 2
- Test Denise/Sprites/spritedma/blocked3 fails HOT 1
- Support config files HOT 9
- Sprite test `disarm1` fails HOT 2
- The Amiga object needs to loose weight again HOT 2
- Run with reduced frame rate in warp mode HOT 2
- Accelerate the audio backend if no sound is playing HOT 1
- Speed-optimize Denise::translate() HOT 1
- Improve the RetroShell debugger HOT 3
- Add beamtraps HOT 1
- last line on workbench has always white color HOT 1
- CIA sleep logic bug
- Add RetroShell as a serial port device HOT 8
- Support for Atari ST floppy disk file format HOT 6
- Add RetroShell commands for loading and saving memory contents
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vamiga.