![]() |
![]() |
#1 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,611
|
Undocumented Amiga hardware stuff
I have found and confirmed many undocumented chipset features when improving emulation and i thought there may be some interest in seeing them documented..
Some of these may be common knowledge. I'll start with the copper: - Writing to "dangerous register" with COPCON bit 1 zeroed stops the copper (See AGA.guide COPCON for more information) - SKIP doesn't really skip anything, it just prevent's next MOVE to do its write. SKIP followed by WAIT or another SKIP never "skips". (Game Apocalypse, uses SKIPs as nops in copper list) - skipped MOVE to "dangerous register" (and COPCON zeroed) also stops the copper (Rainbow Island requires this.. it has quite buggy copperlist.) - Copper is waiting, disable copper DMA, access both COPJMP1 and COPJMP2, enable DMA -> copper stops. Copper stops = stays stopped until next vblank More random info later.. EDIT: COPJMP1+COPJMP2 stop condition updated. Last edited by Toni Wilen; 01 January 2006 at 20:12. |
![]() |
![]() |
#2 |
2 contact me: email only!
Join Date: May 2001
Location: Auckland / New Zealand
Posts: 3,188
|
Keep the info coming, that's great!
|
![]() |
![]() |
#3 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,611
|
ECS/AGA and DDFSTOP >= 228 (0xe4) results in full horizontal overscan bitplane DMA. Like someone had set DDFSTRT=0x18 and DDFSTOP>=0xd4.
Does not happen in OCS. Also some "illegal" DDFSTOP values can cause complete display corruption, syncs get messed up etc... (don't remember the exact values now) Non-aligned DDFSTRT values cause bitplane delays (BPLCON1) work incorrectly. Basically hidden offset which depends on DDFSTRT is added to shift value. (I have called it "delayoffset". New Zealand Story, James Pond II AGA, Pinball Illusions, Loons Docs disks, Overkill AGA etc..) |
![]() |
![]() |
#4 | |
Moderator
Join Date: Nov 2001
Location: Germany
Posts: 881
|
thanks for the info Toni, that can help a lot sometimes
Quote:
is the copper stopped for ever or until the next vblank? |
|
![]() |
![]() |
#5 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,611
|
Weird bitplane effect used in SWIV's scoreboard.
PF2P > 5 (BPLCON2) and BITPLANES == 5 and NOT AGA - pixel in bitplane 5 = zero: planes 1-4 work normally (any color from 0-15 is possible) - pixel in bitplane 5 = one: planes 1-4 are disabled, only pixel from plane 5 is shown (color 16 is visible) |
![]() |
![]() |
#6 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,611
|
Mysterious world of blitter line mode..
- D-channel can be disabled. No effect on anything.. (even speed of blit stays the same) - C must be enabled (nothing is drawn without C) - B (not tested) - disabling A stops BLTAPT from updating (result is incorrect lines) - BLTDMOD is not used in line mode. BLTCMOD is used for both C and D. And here is the most interesting undocumented feature ever: - First pixel is written to address pointed by BLTDPT, all following pixels are written to address pointed by BLTCPT! (Demos Cardamon and Cardamom) |
![]() |
![]() |
#7 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,611
|
Attached sprite:
Documentation says: odd sprite's SPRxCTL bit 7 must be set. ECS (probably OCS too, not tested yet): sprite is attached if odd _or_ even (or both) sprite SPRxCTL bit 7 is set. AGA: only odd sprite SPRxCTL bit 7 enables attachment. |
![]() |
![]() |
#8 |
Moderator
|
what the hell...
where did you get those infos... ![]() |
![]() |
![]() |
#9 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,611
|
Debugging incompatibilities and running lots of small test programs on my real A1200 and A500 (but this is painful from floppies... Anyone have spare A500 HD controller that includes passthrough connector and memory expansion for sale? for example SupraDrive500XP)
|
![]() |
![]() |
#10 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,611
|
More or less useless info..
CLXDAT bit 15 is always set. ("not used" says HRM) Game "Barney and Freddy Mouse" breaks if this bit is not set... HRM says [sprite to playfield] "collision detection does not change when you select either single- or dual-playfield mode". This is not true. There is small but significant difference.. |
![]() |
![]() |
#11 | |
Moderator
Join Date: Nov 2004
Location: Eksjö / Sweden
Posts: 5,761
|
Quote:
I did it by subtracting 1 from the blit height in the linedraw routine just before drawing, Slayer did it by XOR'ing an extra pixel so it goes away, but could this mean that by pointing BLTDPT to a trash area, the pixel goes there and the rest of the line goes to BLTCPT and is correct for filling? If it's true, then a bunch of cycles would be saved in the linedraw routine 1) one register saved and one sub.w (up to 12 cycles on A500) 2) one longword or word write to memory for the BLTDPT. UNLESS BLTDPT is increased after the blit to point to just beyond the last pixel. (up to 12 cycles more) |
|
![]() |
![]() |
#12 | ||
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,611
|
Quote:
Quote:
|
||
![]() |
![]() |
#13 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,611
|
Browsed older changelogs more..
Switching bitplane DMA on during DDFSTRT ~<= hpos ~<= (DDFSTOP - size of fetch unit) can have 3 different results: - OCS: nothing happens, bitplane DMA fetches don't restart until next line. (the rest of current horizontal line is also filled with background color) - ECS/AGA: DMA restart normally if DMA was previously disabled when hpos was outside of DDFSTRT and DDFSTOP. (Sixth Sense Investigation's buggy copper list requires this..) - ECS/AGA: display processing jumps to "DDFSTOP passed"-condition (process modulos after next fetch unit and end current line) immediately if DMA was previously disabled when hpos was between DDFSTRT and DDFSTOP. (Found this by doing tests on my real A1200) |
![]() |
![]() |
#14 | |
Registered User
Join Date: Dec 2007
Location: Dark Kingdom
Posts: 213
|
Hi all this is my first post in this board
![]() I resurrect this old thread. First to say that, according to my tests (which may be not as extensive as those made by Toni) also BLTALWM is unused in line mode. (In contrast to what C= HRM says). Thanks Toni for discovering BLTDPT is used just for first pixel, I now use this feature in my line routine. I have also tried to replicate Photon technique to avoid "filling problem", but it didn't work. It seems to me that the blit height in line mode is a pixel counter, not a line counter, so subtracting 1 avoids the last pixel to be drawn. This is ok for lines with slope >= 1 (because there is one pixel per line) but not for the others: a line finishing like ..............** .................*** in one-dot mode becomes ..................* .....................* so the last pixel would not be drawn in any case (because of one-dot mode). This is not good because next line will start exactly there, so we end up with 2 pixels in the row. I guess there is somethnig else I don't understand. Photon, could you enlight me, please? ![]() ![]() Quote:
Last edited by TheDarkCoder; 06 December 2007 at 16:01. |
|
![]() |
![]() |
#15 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,611
|
FMODE SSCAN2 bit. (This is documented but it can be easily missed and/or misunderstood..)
HRM says "If SSCAN2 bit in FMODE is set, then disable SH10 horizontal coincidence detect." 'Disable' means BOTH zero and one SH10 bit matches horizontal sprite comparator = same sprite can appear TWICE (horizontally) on screen. Without any copper tricks. Fantastic Dizzy CD32 in Big6 compilation uses this feature to create background tree graphics, background is created using 4 x 64 pixel attached sprites. |
![]() |
![]() |
#16 | |
Registered User
Join Date: Dec 2007
Location: Dark Kingdom
Posts: 213
|
Quote:
|
|
![]() |
![]() |
#17 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,611
|
Another interesting sprite-related undocumented feature:
Sprites are visible between DDFSTRT - End of scanline. Not DDFSTRT - DDFSTOP as documented. Tested with OCS and ECS Denise and A1200 (I am quite sure this is Denise's feature) (found while debugging Blittersweet-demo) |
![]() |
![]() |
#18 | |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,611
|
Quote:
It is first write to BPL0DAT that also enables sprites. Write to BPL0DAT enables bitplane shift registers inside Denise (this is nothing new, Agnus DMA does this automatically internally). My guess is that there is logic that outputs background color as long as BPL0DAT has not been written to. Test used: DDFSTRT set to 0x80, put sprite on left side of screen. It is not visible. Use copper to write to BPL0DAT on left side of screen. Single raster line of sprite is now visible + 16 pixels of bitplane data that was written to BPL0DAT. Perhaps useful for some weird tricks, not sure ![]() |
|
![]() |
![]() |
#19 | |
Moderator
Join Date: Nov 2004
Location: Eksjö / Sweden
Posts: 5,761
|
@Toni: Perhaps for a simple sprite-frame without having to add bitplane dma? (i.e. width 320 _plus_ some pixels, but only as sprites please)?
@TheDarkCoder: I'd have to look, but I think the trick was to calculate all blitter values normally, then subtract 1 from blitsize height just before drawing. This trick requires that all lines are drawn downward (or all upward), ie. swap endpoints to make sign of dy the same for all. Quote:
|
|
![]() |
![]() |
#20 | |
Registered User
Join Date: Dec 2007
Location: Dark Kingdom
Posts: 213
|
Quote:
|
|
![]() |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
who can provide hardware to create ADFs of some old rare stuff like Nautilus...? | Bernd | support.Other | 3 | 19 August 2011 23:41 |
Stuff for sale amiga a1200 plus more retro stuff | blast | MarketPlace | 23 | 22 June 2010 19:05 |
Action Replay Undocumented Features | deicidal | support.Hardware | 0 | 01 March 2010 17:15 |
I've got some Amiga stuff...I want your SNES stuff! | Fingerlickin_B | MarketPlace | 14 | 20 February 2009 01:33 |
Amiga stuff for trade for Atari Stuff | 8bitguy1 | MarketPlace | 0 | 12 February 2009 05:36 |
|
|