|
---|
| | Gunnar von Boehn (Apollo Team Member) Posts 6254 01 May 2020 15:25
| As we all know the Amiga Copper is excellent for maintaining the Chipregisters. AMIGA chipset is designed in such way that all GFX pointer, the 8 plane PTRs and the 8 Sprite PTRs need be repoked each frame. The Copper is ideally suited for this. The OCS Copper does this operation using 16bit MOVEs This means for updating one 32bit Pointer Register the Copper needs 2 Copper Moves each 16bit. To change Sprites or move/scroll planes the adress these Pointers point to also need be changed. This means the Program will update the Copperlist. As the 32bit address has to be split in the Copperlist into 2 Copperinstructions this code looks a little bit ackward. Example
move.l #image,D0 move.w D0,CopperPtr+4 swap D0 move.w D0,CopperPtr
The SAGA chipset supports a new COPPER Operation MOVE.L Using this makes the Copper 2 times faster and maybe more important allows very simple code like this move.l #image,CopperPtr
Coding because simpler and easier to read. And the Copper can not better switch for example planes
| |
| | Samuel Crow
Posts 424 02 May 2020 16:02
| Is all of this being maintained in the public wiki? https://www.apollo-accelerators.com/wiki/doku.php/saga:registers:start
| |
| | Stefano Briccolani
Posts 586 02 May 2020 16:39
| A SAGA hardware reference manual. This will surely draw the attentions of many ex-coders metal-bashers of the nineties, and maybe some new ones.. Don't underestimate the power of documentation..
| |
| | Saladriel Amrael
Posts 166 02 May 2020 18:03
| Stefano Briccolani wrote:
| A SAGA hardware reference manual. This will surely draw the attentions of many ex-coders metal-bashers of the nineties, and maybe some new ones.. Don't underestimate the power of documentation..
|
Exactly
| |
| | Gunnar von Boehn (Apollo Team Member) Posts 6254 03 May 2020 09:10
| The full register documentation is currently in writing When its fully finished with it will be made public A work in progress draft is here: CLICK HERE
| |
| | Ray Couzens
Posts 93 03 May 2020 09:55
| I'm very impressed by the work that is going into the Vampire project. Although currently not an ASM programmer, looking forward to the day I can buy the V4 SA and have a play with ASM, and hopefully get to try these coding snippets that Gunnar is showing here. Will the be any demo programs showing off the V4's capabilities pre-installed on the V4 when it's shipped? Maybe with source code? I know that is probably asking too much.
| |
| | Olivier Landemarre
Posts 147 03 May 2020 10:07
| Gunnar von Boehn wrote:
| The full register documentation is currently in writing When its fully finished with it will be made public A work in progress draft is here: CLICK HERE |
Good start! Thanks, I know it's a lot of work
| |
| | Samuel Crow
Posts 424 03 May 2020 10:54
| Excellent news about the docs. Getting back to the Copper a little bit, how does the long write get encoded into the Copper list? Also, how does the Copper address all of the new registers? At one point you mentioned using the low bit of the Copper addresses as a high bit since the registers are all word addressable but the sprite15 pointer on that priliminary list looks out of range even for that! If the Copper is usable on 1080p resolutions, how many CWAITs are needed at the end of an otherwise unpopulated Copper list?
| |
| | Gunnar von Boehn (Apollo Team Member) Posts 6254 03 May 2020 11:10
| Samuel Crow wrote:
| Excellent news about the docs. Getting back to the Copper a little bit, how does the long write get encoded into the Copper list?
|
Example:
OLD: dc.w $0120,$1111,$0122,$2222 Old uses two 16bit MOVE New: dc.w $8120,$1111,$2222 New uses one 32bit MOVE
The idea behind many improvements of SAGA is making it cleaner, and simpler. Samuel Crow wrote:
| Also, how does the Copper address all of the new registers?
|
Actually the copper never had a problem accessing more registers. The "used" register space in AGA is 10bit range but the Copper MOVE has reserved 16bit address. So there were always plenty bits for upgrades available. In fact 64 times more space as used in AGA.We gate copper access to NEW_register until SAGA mode activated.
| |
| | Paul H
Posts 13 03 May 2020 19:45
| Gunnar von Boehn wrote:
| The full register documentation is currently in writing When its fully finished with it will be made public A work in progress draft is here: CLICK HERE |
This is a good. If I wanted to add audio panning enhancements, for the Vampire, to the sound effects in our OCS compatible game, what is the best way to detect SAGA is available? The game runs under kickstart 1.3 and up.
| |
| | Gunnar von Boehn (Apollo Team Member) Posts 6254 03 May 2020 19:51
| Paul H wrote:
| what is the best way to detect SAGA is available? T
|
SAGA AUDIO reports PAULA revision $1 (Old Amiga has $0)
| |
| | Paul H
Posts 13 03 May 2020 20:18
| Is that a library call to get the audio revision or can I read a register to get it?
| |
| | Gunnar von Boehn (Apollo Team Member) Posts 6254 03 May 2020 20:31
| Paul H wrote:
| Is that a library call to get the audio revision or can I read a register to get it?
|
Yes you can read a Register. bits(7..1) in REGISTER $DFF016 are the PAULA Chip Revision Id
| |
| | Paul H
Posts 13 03 May 2020 21:00
| Gunnar von Boehn wrote:
| Yes you can read a Register. bits(7..1) in REGISTER $DFF016 are the PAULA Chip Revision Id
|
Perfect, thanks!
| |
|