Professional Documents
Culture Documents
Default Dark
Simple (Hide this menu)
Print Mode (white background)
Top Menu
***Main Menu***
68000 Assembly programming for the The Commodore Amiga (500) Youtube channel
Forum
The Amiga was the first hugely popular 16 bit home computer, and was the envy of all the 8 bit owners in AkuSprite Editor
the 80's and early 90's...
Dec/Bin/Hex/Oct/Ascii Table
With graphics closer to the arcade, and impressive digital sound, the Amiga dominated home computing
until the 486's stared to give the PC superior power... while often graphically comparable to the Atari ST... Z80 Content
the Amiga's superior sound... with 4 PCM channels brought high quality music to games and amateur ***Z80 Tutorial List***
musicians Learn Z80 Assembly
Specs: Hello World
Amiga 500 Advanced Series
Cpu 7mhz 68000 Multiplatform Series
Platform Specific Series
Ram 512k1MB
ChibiAkumas Series
Vram 1MB Grime Z80
Resolution 320x240 32 color Z80 Downloads
Bitmap planes 6 bitplanes with multiple options eg... 2 x 8 color 1x32 color Z80 Cheatsheet
Max Sprites 8 hardware sprites - 16x?? - 4 color Sources.7z
Sound chip 4 channel PCM DevTools kit
Z80 Platforms
Amstrad CPC
Useful Documents Elan Enterprise
Amiga Hardware Ref Manual - The best hardware document I've found Gameboy & Gameboy Color
Master System & GameGear
ChibiAkumas Tutorials MSX & MSX2
Sam Coupe
Lesson P6 - Bitmap Functions on the Amiga TI-83
Lesson P12 - Joystick Reading on the Amiga ZX Spectrum
Spectrum NEXT
Lesson P17 - Palette Definitions on the Amiga
Camputers Lynx
Lesson P23 - Sound on the Amiga
Lesson P28 - Hardware Sprites on the Amiga
6502 Content
***6502 Tutorial List***
Learn 6502 Assembly
Advanced Series
Platform Specific Series
Palette Definitions Hello World Series
Grime 6502
Palette definitions on the Amiga are performed by writing to memory registers between
6502 Downloads
$DFF180 and $DFF1BE
F E D C B A 9 8 7 6 5 4 3 2 1 0 6502 Cheatsheet
Definitions can be performed by writing a word to these registers, with 4 bits per channel Sources.7z
- - - - R3 R2 R1 R0 G3 G2 G1 G0 B3 B2 B1 B0
in the format shown to the right DevTools kit
There are a set of 32 words between $DFF180 and $DFF1BE, NAME ADD DFFnnn FUNCTION
6502 Platforms
COLOR00 180 Color table 00 Apple IIe
We don't actually set these directly, we want to change them within our copperlist! COLOR01 182 Color table 01 Atari 800 and 5200
COLOR02 184 Color table 02 Atari Lynx
COLOR03 186 Color table 03
BBC Micro
COLOR04 188 Color table 04
COLOR05 18A Color table 05
Commodore 64
COLOR06 18C Color table 06 Commander x16
COLOR07 18E Color table 07 Super Nintendo (SNES)
COLOR08 190 Color table 08 Nintendo NES / Famicom
COLOR09 192 Color table 09 PC Engine (Turbografx-16)
COLOR10 194 Color table 10
Vic 20
COLOR11 196 Color table 11
COLOR12 198 Color table 12
COLOR13 19A Color table 13 68000 Content
COLOR14 19C Color table 14 ***68000 Tutorial List***
COLOR15 19E Color table 15
Learn 68000 Assembly
COLOR16 1A0 Color table 16
Hello World Series
COLOR17 1A2 Color table 17 ... Sprite 0/1 Color 1
COLOR18 1A4 Color table 18 ... Sprite 0/1 Color 2 Platform Specific Series
COLOR19 1A6 Color table 19 ... Sprite 0/1 Color 3 Grime 68000
COLOR20 1A8 Color table 20 68000 Downloads
COLOR21 1AA Color table 21 ... Sprite 2/3 Color 1 68000 Cheatsheet
COLOR22 1AC Color table 22 ... Sprite 2/3 Color 2
Sources.7z
COLOR23 1AE Color table 23 ... Sprite 2/3 Color 3
COLOR24 1B0 Color table 24
DevTools kit
COLOR25 1B2 Color table 25 ... Sprite 4/5 Color 1 68000 Platforms
COLOR26 1B4 Color table 26 ... Sprite 4/5 Color 2 Amiga 500
COLOR27 1B6 Color table 27 ... Sprite 4/5 Color 3 Atari ST
COLOR28 1B8 Color table 28 Neo Geo
COLOR29 1BA Color table 29 ... Sprite 6/7 Color 1
Sega Genesis / Mega Drive
COLOR30 1BC Color table 30 ... Sprite 6/7 Color 2
COLOR31 1BE Color table 31 ... Sprite 6/7 Color 3
Sinclair QL
X68000 (Sharp x68k)
Word 1 Word 2
F EDCBA 9 8 7 6 5 4 3 2 10 F E DCBA 9 8 7 6 5 4 3 2 1 0 Command Details
Change Buy my Assembly programming book
0 0 0 0 0 0 0n n n n n n n n 0 DDDDDDDD DDDDDDDD n= address to Change ($DFFnnn) D=new data for address
setting on Amazon in Print or Kindle!
Hardware Sprites
There are 8 hardware sprites on the Amiga, Hardware Sprites are 16 pixels wide, and can be any
height... each sprite is 4 colors (2bpp), but Sprites 0&1, 2&3 etc Sample Sprite Data:
StartSprite0:
Hardware sprites use a set of pointers, pointing to a sprite table in 'Chip Ram'... this table defines a dc.w $804A,$8800
dc.w $0001,$0304
;Header
;Bitmap Data
series of XY positions and bitmap data, that are used by the sprite DMA to define the image... dc.w $0001,$0304
dc.w $0001,$0304 Available worldwide!
dc.w $0001,$0304 Search 'ChibiAkumas' on
The format of the header is as follows: dc.w $0001,$0304 your local Amazon website!
dc.w $0001,$0304 Click here for more info!
dc.w $0001,$0304
Bit F E D C B A 9 8 7 6 5 4 3 2 1 0 dc.w $0001,$0304
Word1 S S S S S S S S H H H H H H H H S=Start Vertical position, H=Horizontal position dc.w $A070,$A800 ;Header
Word2 E E E E E E E E A - - - - - - - E=End Vertical position, A=Attatch to prev sprite dc.w $0304,$0001,$0304 ;Bitmap Data
dc.w $0001,$0304
dc.w $0001,$0304
The end of each Sprite list ends 0,0 dc.w $0001,$0304
dc.w $0001,$0304
dc.w $0001,$0304
We need to define the pointers to the sprite data, we do this in the Copperlist in the following way: dc.w $0001,$0304
dc.w $0001
move.l #StartSprite0,d0 dc.w 0,0 ;End of Sprites
move.w #$0122,(a6)+ ; StartSprite0 pointer (low 15 bits)
StartSprite1:
move.w d0,(a6)+ dc.w $804A,$8880 ;header
swap d0 dc.w $0001,$0304 ;Bitmap Data
dc.w $0001,$0304
move.w #$0120,(a6)+ ; StartSprite0 pointer (high 3 bits) dc.w $0010,$0403
move.w d0,(a6)+ dc.w $0010,$0403
dc.w $0304,$0001,$0304
dc.w $0010,$0403
dc.w $0010,$0403
dc.w $0001
The pointer addresses for other sprites are shown in the table below, you should define all the dc.w 0,0 ;End of Sprites
sprites, even if they point to an empty list... StartSprite2: ;Unused Sprites
StartSprite3:
StartSprite4:
StartSprite5:
Once we've defined our sprites, we need to turn the sprite DMA on: StartSprite6:
StartSprite7:
dc.w 0,0 ;End of Sprites
move.w #%1000001000100000,DMACON ; DMA set ON - DMA control (and blitter status) read
Sprite Pointers
The hardware sprites are defined by the following Chip Registers
As each channel is 16 bytes apart, we can specify the registers of Channel1 as Channel0's +16 - Eg: DFF0A2+16 for
DFF0B2
This will make it easier to see we're changing the equivalent setting of Channel 1 when we set both together.
Libraries
Offset
Category Offset Hex Meaning
Dec
exec 30 $ffe2 -$001e Supervisor(userFunction)(a5)
exec 36 $ffdc -$0024 ExitIntr()()
exec 42 $ffd6 -$002a Schedule()()
exec 48 $ffd0 -$0030 Reschedule()()
exec 54 $ffca -$0036 Switch()()
exec 60 $ffc4 -$003c Dispatch()()
exec 66 $ffbe -$0042 Exception()()
exec 72 $ffb8 -$0048 InitCode(startClass,version)(d0/d1)
exec 78 $ffb2 -$004e InitStruct(initTable,memory,size)(a1/a2,d0)
exec 84 $ffac -$0054 MakeLibrary(funcInit,structInit,libInit,dataSize,segList)
MakeFunctions(target,functionArray,funcDispBase)
exec 90 $ffa6 -$005a
(a0/a1/a2)
exec 96 $ffa0 -$0060 FindResident(name)(a1)
exec 102 $ff9a -$0066 InitResident(resident,segList)(a1,d1)
exec 108 $ff94 -$006c Alert(alertNum)(d7)
exec 114 $ff8e -$0072 Debug(flags)(d0)
exec 120 $ff88 -$0078 Disable()()
exec 126 $ff82 -$007e Enable()()
exec 132 $ff7c -$0084 Forbid()()
exec 138 $ff76 -$008a Permit()()
exec 144 $ff70 -$0090 SetSR(newSR,mask)(d0/d1)
exec 150 $ff6a -$0096 SuperState()()
exec 156 $ff64 -$009c UserState(sysStack)(d0)
exec 162 $ff5e -$00a2 SetIntVector(intNumber,interrupt)(d0/a1)
exec 168 $ff58 -$00a8 AddIntServer(intNumber,interrupt)(d0/a1)
exec 174 $ff52 -$00ae RemIntServer(intNumber,interrupt)(d0/a1)
exec 180 $ff4c -$00b4 Cause(interrupt)(a1)
exec 186 $ff46 -$00ba Allocate(freeList,byteSize)(a0,d0)
exec 192 $ff40 -$00c0 Deallocate(freeList,memoryBlock,byteSize)(a0/a1,d0)
exec 198 $ff3a -$00c6 AllocMem(byteSize,requirements)(d0/d1)
exec 204 $ff34 -$00cc AllocAbs(byteSize,location)(d0/a1)
exec 210 $ff2e -$00d2 FreeMem(memoryBlock,byteSize)(a1,d0)
exec 216 $ff28 -$00d8 AvailMem(requirements)(d1)
exec 222 $ff22 -$00de AllocEntry(entry)(a0)
exec 228 $ff1c -$00e4 FreeEntry(entry)(a0)
exec 234 $ff16 -$00ea Insert(list,node,pred)(a0/a1/a2)
exec 240 $ff10 -$00f0 AddHead(list,node)(a0/a1)
exec 246 $ff0a -$00f6 AddTail(list,node)(a0/a1)
exec 252 $ff04 -$00fc Remove(node)(a1)
exec 258 $fefe -$0102 RemHead(list)(a0)
exec 264 $fef8 -$0108 RemTail(list)(a0)
exec 270 $fef2 -$010e Enqueue(list,node)(a0/a1)
exec 276 $feec -$0114 FindName(list,name)(a0/a1)
exec 282 $fee6 -$011a AddTask(task,initPC,finalPC)(a1/a2/a3)
exec 288 $fee0 -$0120 RemTask(task)(a1)
exec 294 $feda -$0126 FindTask(name)(a1)
exec 300 $fed4 -$012c SetTaskPri(task,priority)(a1,d0)
exec 306 $fece -$0132 SetSignal(newSignals,signalSet)(d0/d1)
exec 312 $fec8 -$0138 SetExcept(newSignals,signalSet)(d0/d1)
exec 318 $fec2 -$013e Wait(signalSet)(d0)
exec 324 $febc -$0144 Signal(task,signalSet)(a1,d0)
exec 330 $feb6 -$014a AllocSignal(signalNum)(d0)
exec 336 $feb0 -$0150 FreeSignal(signalNum)(d0)
exec 342 $feaa -$0156 AllocTrap(trapNum)(d0)
exec 348 $fea4 -$015c FreeTrap(trapNum)(d0)
exec 354 $fe9e -$0162 AddPort(port)(a1)
exec 360 $fe98 -$0168 RemPort(port)(a1)
exec 366 $fe92 -$016e PutMsg(port,message)(a0/a1)
exec 372 $fe8c -$0174 GetMsg(port)(a0)
exec 378 $fe86 -$017a ReplyMsg(message)(a1)
exec 384 $fe80 -$0180 WaitPort(port)(a0)
exec 390 $fe7a -$0186 FindPort(name)(a1)
exec 396 $fe74 -$018c AddLibrary(library)(a1)
Buy my Assembly programming book
exec 402 $fe6e -$0192 RemLibrary(library)(a1) on Amazon in Print or Kindle!
exec 408 $fe68 -$0198 OldOpenLibrary(libName)(a1)
exec 414 $fe62 -$019e CloseLibrary(library)(a1)
exec 420 $fe5c -$01a4 SetFunction(library,funcOffset,newFunction)(a1,a0,d0)
exec 426 $fe56 -$01aa SumLibrary(library)(a1)
exec 432 $fe50 -$01b0 AddDevice(device)(a1)
exec 438 $fe4a -$01b6 RemDevice(device)(a1)
exec 444 $fe44 -$01bc OpenDevice(devName,unit,ioRequest,flags)(a0,d0/a1,d1)
exec 450 $fe3e -$01c2 CloseDevice(ioRequest)(a1)
exec 456 $fe38 -$01c8 DoIO(ioRequest)(a1)
exec 462 $fe32 -$01ce SendIO(ioRequest)(a1)
exec 468 $fe2c -$01d4 CheckIO(ioRequest)(a1)
exec 474 $fe26 -$01da WaitIO(ioRequest)(a1) Available worldwide!
exec 480 $fe20 -$01e0 AbortIO(ioRequest)(a1) Search 'ChibiAkumas' on
your local Amazon website!
exec 486 $fe1a -$01e6 AddResource(resource)(a1) Click here for more info!
Graphics.Library
Offset
Category Offset Hex Meaning
Dec
graphics.library 30 $ffe2 -$001e BltBitMap(srcBitMap,xSrc,ySrc,destBitMap,xDest,yDest,xSize,
graphics.library 36 $ffdc -$0024 BltTemplate(source,xSrc,srcMod,destRP,xDest,yDest,xSize,
graphics.library 42 $ffd6 -$002a ClearEOL(rp)(a1)
graphics.library 48 $ffd0 -$0030 ClearScreen(rp)(a1)
graphics.library 54 $ffca -$0036 TextLength(rp,string,count)(a1,a0,d0)
graphics.library 60 $ffc4 -$003c Text(rp,string,count)(a1,a0,d0)
graphics.library 66 $ffbe -$0042 SetFont(rp,textFont)(a1,a0)
graphics.library 72 $ffb8 -$0048 OpenFont(textAttr)(a0)
graphics.library 78 $ffb2 -$004e CloseFont(textFont)(a1) Recent New Content
Lesson P34 - Creating a game
graphics.library 84 $ffac -$0054 AskSoftStyle(rp)(a1)
for the NeoGeo CD!
graphics.library 90 $ffa6 -$005a SetSoftStyle(rp,style,enable)(a1,d0/d1)
graphics.library 96 $ffa0 -$0060 AddBob(bob,rp)(a0/a1) Sprite Movement on the Dragon
graphics.library 102 $ff9a -$0066 AddVSprite(vSprite,rp)(a0/a1) 32- Simple 6502 ASM Lesson S1
graphics.library 108 $ff94 -$006c DoCollision(rp)(a1)
graphics.library 114 $ff8e -$0072 DrawGList(rp,vp)(a1,a0) Amiga - ASM PSET and POINT
graphics.library 120 $ff88 -$0078 InitGels(head,tail,gelsInfo)(a0/a1/a2) for Pixel Plotting
graphics.library 126 $ff82 -$007e InitMasks(vSprite)(a0)
graphics.library 132 $ff7c -$0084 RemIBob(bob,rp,vp)(a0/a1/a2) Learn 65816 Assembly: 8 and 16
graphics.library 138 $ff76 -$008a RemVSprite(vSprite)(a0) bit modes on the 65816
graphics.library 144 $ff70 -$0090 SetCollision(num,routine,gelsInfo)(d0/a0/a1) SNES - ASM PSET and POINT
graphics.library 150 $ff6a -$0096 SortGList(rp)(a1) for Pixel Plotting
graphics.library 156 $ff64 -$009c AddAnimOb(anOb,anKey,rp)(a0/a1/a2)
graphics.library 162 $ff5e -$00a2 Animate(anKey,rp)(a0/a1) ARM Assembly Lesson H3
graphics.library 168 $ff58 -$00a8 GetGBuffers(anOb,rp,flag)(a0/a1,d0)
graphics.library 174 $ff52 -$00ae InitGMasks(anOb)(a0) Lesson P65 - Mouse reading on
graphics.library 180 $ff4c -$00b4 DrawEllipse(rp,xCenter,yCenter,a,b)(a1,d0/d1/d2/d3) the Sam Coupe
graphics.library 186 $ff46 -$00ba AreaEllipse(rp,xCenter,yCenter,a,b)(a1,d0/d1/d2/d3)
graphics.library 192 $ff40 -$00c0 LoadRGB4(vp,colors,count)(a0/a1,d0) Mouse Reading in MS-DOS
graphics.library 198 $ff3a -$00c6 InitRastPort(rp)(a1)
Risc-V Assembly Lesson 3 - Bit
graphics.library 204 $ff34 -$00cc InitVPort(vp)(a0) ops and more maths!
graphics.library 210 $ff2e -$00d2 MrgCop(view)(a1)
graphics.library 216 $ff28 -$00d8 MakeVPort(view,vp)(a0/a1) Mouse reading on the MSX
graphics.library 222 $ff22 -$00de LoadView(view)(a1)
graphics.library 228 $ff1c -$00e4 WaitBlit()() Hello World on RISC-OS
graphics.library 234 $ff16 -$00ea SetRast(rp,pen)(a1,d0)
graphics.library 240 $ff10 -$00f0 Move(rp,x,y)(a1,d0/d1) Atari 800 / 5200 - ASM PSET and
POINT for Pixel Plotting
graphics.library 246 $ff0a -$00f6 Draw(rp,x,y)(a1,d0/d1)
graphics.library 252 $ff04 -$00fc AreaMove(rp,x,y)(a1,d0/d1)
graphics.library 258 $fefe -$0102 AreaDraw(rp,x,y)(a1,d0/d1) Gaming + more:
graphics.library 264 $fef8 -$0108 AreaEnd(rp)(a1)
graphics.library 270 $fef2 -$010e WaitTOF()() Emily The Strange (DS) - Live
graphics.library 276 $feec -$0114 QBlit(blit)(a1) full playthrough
graphics.library 282 $fee6 -$011a InitArea(areaInfo,vectorBuffer,maxVectors)(a0/a1,d0)
graphics.library 288 $fee0 -$0120 SetRGB4(vp,index,red,green,blue)(a0,d0/d1/d2/d3) $150 calculator: Unboxing the
graphics.library 294 $feda -$0126 QBSBlit(blit)(a1) Ti-84 Plus CE (eZ80 cpu)
graphics.library 300 $fed4 -$012c BltClear(memBlock,byteCount,flags)(a1,d0/d1)
graphics.library 306 $fece -$0132 RectFill(rp,xMin,yMin,xMax,yMax)(a1,d0/d1/d2/d3)
graphics.library 312 $fec8 -$0138 BltPattern(rp,mask,xMin,yMin,xMax,yMax,maskBPR)
graphics.library 318 $fec2 -$013e ReadPixel(rp,x,y)(a1,d0/d1)
graphics.library 324 $febc -$0144 WritePixel(rp,x,y)(a1,d0/d1)
graphics.library 330 $feb6 -$014a Flood(rp,mode,x,y)(a1,d2,d0/d1)
graphics.library 336 $feb0 -$0150 PolyDraw(rp,count,polyTable)(a1,d0/a0)
graphics.library 342 $feaa -$0156 SetAPen(rp,pen)(a1,d0)
graphics.library 348 $fea4 -$015c SetBPen(rp,pen)(a1,d0)
graphics.library 354 $fe9e -$0162 SetDrMd(rp,drawMode)(a1,d0)
graphics.library 360 $fe98 -$0168 InitView(view)(a1)
graphics.library 366 $fe92 -$016e CBump(copList)(a1)
graphics.library 372 $fe8c -$0174 CMove(copList,destination,data)(a1,d0/d1)
graphics.library 378 $fe86 -$017a CWait(copList,v,h)(a1,d0/d1)
graphics.library 384 $fe80 -$0180 VBeamPos()()
graphics.library 390 $fe7a -$0186 InitBitMap(bitMap,depth,width,height)(a0,d0/d1/d2)
graphics.library 396 $fe74 -$018c ScrollRaster(rp,dx,dy,xMin,yMin,xMax,yMax)
graphics.library 402 $fe6e -$0192 WaitBOVP(vp)(a0)
graphics.library 408 $fe68 -$0198 GetSprite(sprite,num)(a0,d0)
graphics.library 414 $fe62 -$019e FreeSprite(num)(d0)
graphics.library 420 $fe5c -$01a4 ChangeSprite(vp,sprite,newData)(a0/a1/a2)
graphics.library 426 $fe56 -$01aa MoveSprite(vp,sprite,x,y)(a0/a1,d0/d1)
graphics.library 432 $fe50 -$01b0 LockLayerRom(layer)(a5)
graphics.library 438 $fe4a -$01b6 UnlockLayerRom(layer)(a5)
graphics.library 444 $fe44 -$01bc SyncSBitMap(layer)(a0)
graphics.library 450 $fe3e -$01c2 CopySBitMap(layer)(a0)
graphics.library 456 $fe38 -$01c8 OwnBlitter()()
graphics.library 462 $fe32 -$01ce DisownBlitter()()
graphics.library 468 $fe2c -$01d4 InitTmpRas(tmpRas,buffer,size)(a0/a1,d0)
graphics.library 474 $fe26 -$01da AskFont(rp,textAttr)(a1,a0)
graphics.library 480 $fe20 -$01e0 AddFont(textFont)(a1)
graphics.library 486 $fe1a -$01e6 RemFont(textFont)(a1)
graphics.library 492 $fe14 -$01ec AllocRaster(width,height)(d0/d1)
graphics.library 498 $fe0e -$01f2 FreeRaster(p,width,height)(a0,d0/d1)
graphics.library 504 $fe08 -$01f8 AndRectRegion(region,rectangle)(a0/a1)
graphics.library 510 $fe02 -$01fe OrRectRegion(region,rectangle)(a0/a1)
graphics.library 516 $fdfc -$0204 NewRegion()()
graphics.library 522 $fdf6 -$020a ClearRectRegion(region,rectangle)(a0/a1)
graphics.library 528 $fdf0 -$0210 ClearRegion(region)(a0)
graphics.library 534 $fdea -$0216 DisposeRegion(region)(a0)
graphics.library 540 $fde4 -$021c FreeVPortCopLists(vp)(a0)
graphics.library 546 $fdde -$0222 FreeCopList(copList)(a0)
graphics.library 552 $fdd8 -$0228 ClipBlit(srcRP,xSrc,ySrc,destRP,xDest,yDest,xSize,ySize,
graphics.library 558 $fdd2 -$022e XorRectRegion(region,rectangle)(a0/a1)
graphics.library 564 $fdcc -$0234 FreeCprList(cprList)(a0)
graphics.library 570 $fdc6 -$023a GetColorMap(entries)(d0)
graphics.library 576 $fdc0 -$0240 FreeColorMap(colorMap)(a0)
graphics.library 582 $fdba -$0246 GetRGB4(colorMap,entry)(a0,d0)
graphics.library 588 $fdb4 -$024c ScrollVPort(vp)(a0)
graphics.library 594 $fdae -$0252 UCopperListInit(uCopList,n)(a0,d0)
graphics.library 600 $fda8 -$0258 FreeGBuffers(anOb,rp,flag)(a0/a1,d0)
graphics.library 606 $fda2 -$025e BltBitMapRastPort(srcBitMap,xSrc,ySrc,destRP,xDest,yDest,
graphics.library 612 $fd9c -$0264 OrRegionRegion(srcRegion,destRegion)(a0/a1)
graphics.library 618 $fd96 -$026a XorRegionRegion(srcRegion,destRegion)(a0/a1)
graphics.library 624 $fd90 -$0270 AndRegionRegion(srcRegion,destRegion)(a0/a1)
graphics.library 630 $fd8a -$0276 SetRGB4CM(colorMap,index,red,green,blue)(a0,d0/d1/d2/d3)
graphics.library 636 $fd84 -$027c BltMaskBitMapRastPort(srcBitMap,xSrc,ySrc,destRP,xDest,
graphics.library 654 $fd72 -$028e AttemptLockLayerRom(layer)(a5)
graphics.library 660 $fd6c -$0294 GfxNew(gfxNodeType)(d0)
graphics.library 666 $fd66 -$029a GfxFree(gfxNodePtr)(a0)
graphics.library 672 $fd60 -$02a0 GfxAssociate(associateNode,gfxNodePtr)(a0/a1)
graphics.library 678 $fd5a -$02a6 BitMapScale(bitScaleArgs)(a0)
graphics.library 684 $fd54 -$02ac ScalerDiv(factor,numerator,denominator)(d0/d1/d2)
graphics.library 690 $fd4e -$02b2 TextExtent(rp,string,count,textExtent)(a1,a0,d0/a2)
graphics.library 696 $fd48 -$02b8 TextFit(rp,string,strLen,textExtent,constrainingExtent,
graphics.library 702 $fd42 -$02be GfxLookUp(associateNode)(a0)
graphics.library 708 $fd3c -$02c4 VideoControl(colorMap,tagarray)(a0/a1)
graphics.library 714 $fd36 -$02ca OpenMonitor(monitorName,displayID)(a1,d0)
graphics.library 720 $fd30 -$02d0 CloseMonitor(monitorSpec)(a0)
graphics.library 726 $fd2a -$02d6 FindDisplayInfo(displayID)(d0)
graphics.library 732 $fd24 -$02dc NextDisplayInfo(displayID)(d0)
graphics.library 738 $fd1e -$02e2 AddDisplayInfo(displayInfoRecord)(a0)
graphics.library 744 $fd18 -$02e8 AddDisplayInfoData(handle,buf,size,tagID,displayID)
graphics.library 750 $fd12 -$02ee SetDisplayInfoData(handle,buf,size,tagID,displayID)
graphics.library 756 $fd0c -$02f4 GetDisplayInfoData(handle,buf,size,tagID,displayID)
graphics.library 762 $fd06 -$02fa FontExtent(font,fontExtent)(a0/a1)
graphics.library 768 $fd00 -$0300 ReadPixelLine8(rp,xstart,ystart,width,array,tempRP)
graphics.library 774 $fcfa -$0306 WritePixelLine8(rp,xstart,ystart,width,array,tempRP)
graphics.library 780 $fcf4 -$030c ReadPixelArray8(rp,xstart,ystart,xstop,ystop,array,temprp)
graphics.library 786 $fcee -$0312 WritePixelArray8(rp,xstart,ystart,xstop,ystop,array,temprp)
graphics.library 792 $fce8 -$0318 GetVPModeID(vp)(a0)
graphics.library 798 $fce2 -$031e ModeNotAvailable(modeID)(d0)
graphics.library 804 $fcdc -$0324 WeighTAMatch(reqTextAttr,targetTextAttr,targetTags)
graphics.library 810 $fcd6 -$032a EraseRect(rp,xMin,yMin,xMax,yMax)(a1,d0/d1/d2/d3)
graphics.library 816 $fcd0 -$0330 ExtendFont(font,fontTags)(a0/a1)
graphics.library 822 $fcca -$0336 StripFont(font)(a0)
Blitter
These can be used to combine bits from multiple sources, Remember A and B can be bitshifted, and A can be masked. The MinTerm we use will
define the resulting data we write to D. the Sources A,B and C can be bitmap sprites, Masks or the current screen data (for XOR or masked
sprites). ABCD must be in CHIP RAM.
Surprisingly Bitshifting does not affect speed, however unsurprisingly the more DMA channels we use, the slower the transfer will be.
Minterms
'MinTerms' are Logical operations used by BLIT function - these are selected by the bottom 8 bits of BLTCON0 ($DFF040)
In the charts below, ! means NOT (Bits flipped)... in bit logic terms * is effectively AND ... + is effectively OR
$F0 D=A
$0F D=!A
$CC D=B
$33 D=!B
$AA D=C
$55 D=!C
Combining Minterms
Multiple Minterms can be added by ORing... for example: Multiple minterms can be multiplied by ANDing... for example:
'Minterms' are a boolean algebra thing!... but you only need to know which number code to use for your blitter.
If you're feeling brainy, and want to become a super smarypants, you can learn more about Minterms here... Just be careful
your head doesn't explode with all the maths!
Documentation
Amiga Hardware Reference Manual