20 May 2010, 15:24 | #81 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,575
|
|
24 May 2010, 22:09 | #82 |
Moderator
Join Date: Nov 2004
Location: Eksjö / Sweden
Posts: 5,701
|
Undefined means that the CPU developers accept no responsibility for the predictability of the contents of the register, or whether register contents changes in the next CPU model. Now it's way after the fact and no more CPU models will be made, so possibly if some program relied on undefined data it could be hard to make it work on any Amiga or Amiga emulator or 68xxx emulator.
But for the chipset, a lot of vital behavior is still unmapped, and that's what needs to be documented if any Amiga remade in modern components is supposed to be an Amiga replacement, ie. if Amiga is to survive. |
16 August 2010, 10:30 | #83 |
68k
Join Date: Sep 2005
Location: Somewhere
Posts: 829
|
I have question about CHIP memory. Lets consider A500 with 0.5 MB CHIP ( $00000 - $07ffff ). What happens when I'm trying to read from $80000 or higher ? Is there kind of mirroring of the CHIP memory in such case ?
|
16 August 2010, 11:05 | #84 | |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,575
|
Quote:
Fun part: 1M Agnus in 512k+512k configuration still sees 1M of Chip RAM internally. First 512k at normal Chip RAM region, second 512k is at normal slow ram region ($c00000-$c7ffff). For example bitplane DMA pointer $090000 is actually CPU address $c10000. Quite useless information unless you want to write demo that requires 1M chip but also works in 512k+512k ECS Agnus A500s |
|
16 August 2010, 11:22 | #85 |
68k
Join Date: Sep 2005
Location: Somewhere
Posts: 829
|
Thank you Toni for answer ( fun part is awesome ). Its mean that is possible to make production ( game / demo ) which should works only for machines with 0.5MB CHIP and doesn't work on 1MB CHIP machines.
|
16 August 2010, 11:30 | #86 | |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,575
|
Quote:
http://eab.abime.net/showpost.php?p=417774 |
|
27 August 2010, 09:26 | #87 | |
Registered User
Join Date: Dec 2007
Location: Dark Kingdom
Posts: 213
|
Quote:
This would mean that this 512k ram is, from an hardware perspective, a chip ram area, even if the cpu sees it allocated at uncommon adresses and that is seen as fast only from the OS. Which Amiga models can have such configurations? |
|
27 August 2010, 14:29 | #88 | ||
Registered User
Join Date: Jun 2008
Location: somewhere else
Posts: 533
|
Quote:
Quote:
Unfortunately it doesn't seem to be automatically activated when using some $c00000 fake fast + at least ECS Agnus in Winuae configuration (as it should be). |
||
27 August 2010, 15:37 | #89 | |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,575
|
Quote:
|
|
27 August 2010, 18:26 | #90 |
Registered User
Join Date: Jun 2008
Location: somewhere else
Posts: 533
|
Unless i missed something this doesn't seem to work in WinUAE (but works perfectly on my A500):
http://franck.charlet.pagesperso-ora.../fake_chip.zip |
27 August 2010, 18:31 | #91 | |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,575
|
Quote:
|
|
27 August 2010, 18:41 | #92 |
Registered User
Join Date: Jun 2008
Location: somewhere else
Posts: 533
|
Oki, i assumed you would assemble it directly, second try:
http://franck.charlet.pagesperso-ora...p/fakechip.zip Edit: now it looks like you modified the way to enable that feature so it's automatic (there was some tricky manipulation to do before). |
27 August 2010, 18:46 | #93 | |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,575
|
Quote:
Works fine as expected, black screen and background color changes if I modify the background color move in copperlist. |
|
27 August 2010, 18:49 | #94 |
Registered User
Join Date: Jun 2008
Location: somewhere else
Posts: 533
|
The manipulation is still here apparently (something like setting the chip ram to 1mb, reset, set it to 512k, reset).
|
27 August 2010, 18:52 | #95 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,575
|
A500. "1.3 ROM, ECS Agnus, 512 KB Chip RAM + 512 KB Slow RAM" quickstart works fine. Any other way is unsupported and this is never going to be supported on the fly.
|
27 August 2010, 19:11 | #96 |
Registered User
Join Date: Jun 2008
Location: somewhere else
Posts: 533
|
I agree that the $c00000 memory trick was only available for A500 with newer Agnus (probably the most widespread Amiga model) but why isn't it activated automatically with the config you described ? (also i think it also worked when fast ram was plugged into the side expansion port (usually starting at $200000)).
|
27 August 2010, 19:20 | #97 | |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,575
|
Quote:
You are out of luck if you want to use it in any other configuration (that might work on real thing) Chipset/CPU emulation really isn't made for this kind of aliasing and I don't want to make things even more messier just for improving emulation of this trick. What are you exactly trying to do? "Not working" is not a bug report or any kind of report (I guess these posts should be moved to separate thread or something) |
|
09 September 2010, 20:12 | #98 |
Posts: n/a
|
Resurrecting this thread in search of information.
What I'm looking for is the workings of the blitter in line mode, for emulation purposes. The problem is, in line mode, the blitter reads/writes the same words multiple times, for each pixel, and is supposed to take 4 blitter cycles per pixel. The 'normal mode' A-CD blit takes 3 per word. Existing emulators, plus the minimig, just "make it take" 4 cycles per pixel for lines, but I'm looking for how it really works, pipelining and all. I consider the normal-mode A-CD cycle sequence something like this: Code:
A-CD: A0R C0R --- A1R C1R D0W A2R C2R D1W A3R C3R D2W --- D3W A0S D0M --- A1S D1M --- A2S D2M --- A3S D3M (I'm assuming here that there's an upper and a lower part of the pipeline, and every blitter cycle can execute one of each. DMA (R/W) is upper, and shift/minterm (S/M) is lower, I may be wrong) This doesn't cut it for line drawing, since C is read before D is written, so the last pixel written does not appear in the newly read C (plus, spec says 4 cycles per pixel). The B channel is still shifted in line mode, so an extra "lower" blitter cycle can be inserted (and upper have to get an empty cycle to follow), but it still does not provide for enough room to write D before C is read. Is there any deeper knowledge of line-drawing cycle sequence? |
09 September 2010, 20:36 | #99 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,575
|
In my opinion this has not been so undocumented for some time now (http://eab.abime.net/showpost.php?p=416779)
Standard line draw cycle sequence is simple -C-D-C-D (confirmed on logic analyzer. It is NOT more logical pipelined -C-C-D-C-D-D) It is always 4 cycles. Note that BLTCON0 channel selection bits don't work normally in line mode either. A needs to be enabled (or line will be drawn incorrectly) but it is never used for DMA transfers. BLTCON0 D bit can be disabled and linedraw still works correctly! (at least C is required or nothing gets drawn) EDIT: -> it should be perfectly emulated in WinUAE and most likely in Minimig too. Of course internal operation is not known, not really needed except when trying to emulate fully programs that change blitter registers while blitter is active, lots of very strange things can happen in this situation... Last edited by Toni Wilen; 09 September 2010 at 20:43. |
10 September 2010, 09:56 | #100 |
Posts: n/a
|
Ah, right - channel A is used but no DMA - I know this, but somehow I forgot
That makes it all fit better, thank you. I was too busy staring at the A-CD normal mode cycles. That could make my cycles come out like this (predictions): Code:
--- C0R --- D0W --- C1R --- D1W --- A0S --- D0M --- A1S --- D1M --- A2S Code:
--- C0R --- D0W --- C1R --- D1W --- A0S D0M --- --- A1S D1M --- --- A2S Then to fit in the fact that first pixel is written to D pointer, the rest to C pointer... Ah, the worries, but I have a fascination for the blitter and am trying to find a mechanism in which the cycles turn out 'right' as a matter of consequence, not design Emulation is aiming to have no cycle-controlling via tables or states. Two pipelining stages per channel, dma and logic. Value travels from dma to logic, except for D which is opposite. So for one word, B can be read while A is shifted, etc. Last edited by waperboy; 10 September 2010 at 10:04. |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Similar Threads | ||||
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 |
|
|