home *** CD-ROM | disk | FTP | other *** search
- Docs about rtgmaster PPC
- ========================
-
- First of all: Sorry that the "real" Docs are not completely done yet :) Work is
- in Progress :)
-
- As now PowerPC Boards are available for the Amiga Computers, it will be interesting
- of creating games that will run on these Boards. The problem is, the current
- software available for PPC Boards does not feature PPC Native Graphics Functions.
- rtgmaster PPC will support such functions.
-
- Before i go into detail i have to tell some things about how the Amiga PowerPC
- Control Software works principially. Actually, there are TWO software systems,
- one called ppc.library being shipped with the Boards, and one called WarpUP
- being available as Freeware (Reminds a bit of CyberGraphX and Picasso96, doesn't
- it ?). If you ran a program that used ppc.library, and now want to run a WarpUP
- program, you have to reboot (and vice versa). I included the V27 version of
- rtgmaster (which was without PPC Code) so that people who use the ppc.library
- quite frequently, still can use rtgmaster.library (at least the 68k Part).
-
- 68k and PPC part
- ================
-
- New for both:
-
- - Added RtgBobSystem (Soft-sprites...) Have a look at the example in the
- Devdocs Directory (Thanks to Rady Marusa for both the Bob Functions and
- the Demo :) )
- - Changed CopyRtgPixelArray (in a backward compatible way, to support AGA Support
- without c2p...)
-
- * the Planar Copy under AGA is now fully functional (the function does Planar
- Copy under AGA, Chunky Copy under GFX Board, so you can do AGA Support
- without c2p, if you do not want c2p... you need two sets of graphics files
- then... if you want to use c2p, use CopyRtgBlit instead, it does c2p for
- AGA)
- * Blit Width/Destination Width don't have to be the same any longer.
- Destination Width/Height is always that of the Screen. Source Width
- has to be the same like Destination Width, but it is possible to copy only
- parts of the Buffer to the Destination, by using Source Offsets and
- smaller Width/Height.
-
- - Changed CopyRtgBlit (in a backward compatible way, due to user wishes... if you
- don't need the new features you won't have to change your code !!!)
- - C Part of the thing is now StormC instead of SAS/C (more system-conform
- Init-Code also...)
- - Fat/Mixed Binary (runs on PPC and on 68k Amigas !!!)
-
- Masked Parameter:
-
- 0: GfxBoard: Chunky Copy, AGA: c2p, Please use only Fullscreen c2p, not all c2p
- Modules support Not-Fullscreen-c2p. To do Fullscreen c2p simply set All Offsets
- to 0, all Width/Height to Screenwidth/Screenheight.
- 1: GfxBoard: Chunky Copy, No pixel will be overwritten with color 0. Not available
- for AGA.
- 2: The same like 0, but also works with Fastram Buffers. Performs Chunky-Copy
- for both GFX Boards and AGA.
- 3: The same like 1, but also works with Fastram Buffers. Performs Chunky-Copy with
- color-0-restriction for both GFX Boards and AGA.
-
- - rtg_MouseMove sends IDCMP_MOUSEMOVE messages additionally
- - rtg_DeltaMove sends IDCMP_MOUSEMOVE messages with Delta-Values. For EGS, which
- does not support this feature, the same like rtg_MouseMove.
- - rtg_Workbench: If you give this tag a parameter of LUT8 (512) rtgmaster opens
- a Workbench Window instead of a screen (slower, and on EGS it still opens a
- screen... on all other WB Emulations and ECS/AGA it works, though). Possibly
- later versions will support other Color Depths, also (currently only 1-8 Bit
- is supported).
- - rtg_PubScreenName: If used together with rtg_Workbench, the WB Window opens
- on a Public Screen, instead of the WB. Locking the PubScreen is not needed,
- rtgmaster does this already.
-
- Note: rtg_MouseMove/rtg_DeltaMove do not work with the PPC Versions of the Message
- functions. Use the 68k Functions with Context-Switch, if you need these tags.
-
- Also the PPC Versions do not send the timer values for IntuiMessages...
-
- The ppc.library<->WarpUP Discussion
- ===================================
-
- I am very sorry that i have to tell about this whole sad discussion. But i fear
- i HAVE to tell some words about it... I am sorry to Phase 5 that this text won't
- let their software look good. But as to game coding (what rtgmaster is intended
- mainly for) i am interest in EFFICIENCY. And for that i have to use WarpUP. Like
- most other PPC Software products that are in developpement do...
-
- Now, why does WarpUP exist at all ? Why a second software ? (I tell at this place,
- that rtgmaster PPC uses WarpUP, like probably ANY bigger PPC Application asides
- from Wildfire does).
-
- - A contextswitch always starts a completely new task on ppc.library
- - The 68k<->PPC Switches on ppc.library are slower than on WarpUP.
- - ppc.library Software is quite complicated to code... even if it is only a
- "Hello, World" program. More complicated programs are VERY complicated to do.
- - Only the WarpUP-using Compiler StormC deals with Context-Switches AUTOMATICALLY.
- - Overall, the performance of WarpUP is much better, the usability too.
- - AFAIK, only WarpUP features Fat Binary, Mixed Binary and PPC Shared Libs.
- (At least for the Version of ppc.library i saw last, this was true). I need
- all these three features for rtgmaster PPC.
- - WarpUP uses the AmigaDOS Executable Format, while ppc.library uses the Format
- of the Linux OS
- - I had really BAD experiences with the stability of ppc.library... sometimes
- a program suddently stopped to work. Partially this seems to have to do
- with certain programs having problems with ppc.library updates, sometimes
- they failed without an update... one more reason for WarpOS...
-
- I have to tell here, we have REALLY to be grateful to Phase 5 for creating the
- PowerUP Hardware. But they should have left the software part to Haage&Partner.
- Sorry, if i tell this that bluntly. Especially if you want to code a performance
- intensive game i only can recommend you to use WarpUP. Not only will the speed be
- better. You also will need much less knowledge to create PPC Applications. You can
- even create applications that run on both 68k and PPC very easy. Portability is the
- key :)
-
- Sometimes it is said, that ppc.library would support Multiprocessoring, what WarpUP
- would not. This is wrong. WarpUP supports Multiprocessoring (but you have to create
- the PROTOCOL for the CPU communication yourselves). This is, because with the given
- PowerUP Hardware, running PPC and 68k parallel will SLOW DOWN your program, not SPEED
- UP it. With future Hardware that might be different, but not with the existing
- PowerUP Boards. And Sam Jordan, the coder of WarpUP already said, he would enhance
- the Multiprocessoring support in case such hardware appears.
-
- Also Haage&Partner will support ANY Hardware manufacturer with WarpUP who wants to
- do a PPC Board. Not only the Phase 5 Hardware.
-
- So, as rtgmaster PPC uses WarpUP, what does this mean ?
-
- If you intend to use ppc.library, you should install the 68k Version of rtgmaster.
- Programs using the PPC functions of rtgmaster won't run then, of course. Alternatively
- you can simply install WarpUP V7. It provides compatibility with ppc.library, but it
- uses the same slow and problematic functions like ppc.library (because of that it is
- compatible...). When i tested rtgmaster PPC with powerpc.library V7 and ppc.library,
- though, i got a crash at startup, probably caused by the way ELF-Format does stack-handling,
- like i was told. I am not sure, if this is fixed with ppc.library V45, but to tell
- the truth, i don't care that much. If it does not run with ppc.library, try rtgmaster V27.
- Most new features of rtgmaster V30 are PPC-features, which are only usable with WarpUP.
-
- How does the concept of rtgmasterPPC work ?
- ===========================================
-
- rtgmaster PPC is a Mixed Shared Library, which means, that it has functions in 68k,
- and functions in PPC. On a 68k system, you should ONLY use the 68k functions, on a
- PowerUP system both can be used. Every rtgmaster function exists in both 68k and PPC,
- but not all of them are PPC Native. Some of those PPC functions (currently nearly all)
- simply call a Context-Switch and execute the function on 68k.
-
- You SHOULD USE the function CheckPPCCommand() to find out which functions are available
- in "true PPC code".
-
- To use the functions, for 68k you have to use the protos and the pragma-file (for
- SAS/C: pragmas-file). For PPC you only have to include the protos-File (works only
- with StormC PowerUP, in case other compilers supporting WarpUP appear, they will
- be supported, too, of course. And it works also with StormPowerASM, of course, and
- shold run with pASM - did not try it yet, just downloaded it- .
-
- List of true PPC functions:
-
- CS means that the PPC function exists, but is not a true PPC function. Instead
- it performs a context-switch to the 68k function. - means that not even this
- exists. I will fix this as soon as possible. Remember, this is yet a preview only.
- In case of - an empty function will be performed.
-
- rtgP96.library rtgCGX.library rtgAMI.library rtgEGS.library
- ============== ============== ============== ==============
-
- PPCCCopyRtgBlit PPCCopyRtgBlit PPCCopyRtgBlit -
- PPCLockRtgScreen PPCLockRtgScreen PPCLockRtgScreen -
- PPCUnlockRtgScreen PPCUnlockRtgScreen PPCUnlockRtgScreen -
- PPCGetBufAdr PPCGetBufAdr PPCGetBufAdr -
- PPCCopyRtgPixelArray PPCCopyRtgPixelArray - -
- PPCRtgSetTextMode PPCRtgSetTextMode PPCRtgSetTextMode -
- PPCRtgSetTextModeRGB PPCRtgSetTextModeRGB PPCRtgSetTextModeRGB -
- PPCRtgInitRDCMP PPCRtgInitRDCMP PPCRtgInitRDCMP -
- PPCopyRtgBlit PPCCopyRtgBlit PPCCopyRtgBlit -
- PPCRtgScreenAtFront PPCRtgScreenAtFront PPCRtgScreenAtFront -
- PPCDrawRtgLine PPCDrawRtgLine - -
- PPCWriteRtgPixel PPCWriteRtgPixel - -
- PPCRtgWaitRDCMP PPCWaitRDCMP PPCWaitRDCMP -
- PPCRtgGetMsg PPCRtgGetMsg PPCRtgGetMsg -
- PPCRtgReplyMsg PPCRtgReplyMsg PPCRtgReplyMsg -
- PPCFillRtgRect PPCFillRtgRect CS -
- PPCFillRtgRectRGB PPCFillRtgRectRGB No 24 Bit for AGA -
- PPCWriteRtgPixelArrayPPCWriteRtgPixelArray- -
- PPCCallRtgC2P PPCCallRtgC2P PPCCallRtgC2P -
-
- All other PPC functions simply perform a contextswitch to 68k.
-
- Steffen Haeuser
-
-
-
-