author: bocianu bocianu@gmail.com
Set of useful constants, registers and methods to fiddle with hardware Atari 8-bit sprites (and missiles).
This library is a part of 'blibs' - set of custom Mad-Pascal libraries.
https://gitlab.com/bocianu/blibs
| name: | value: | description: |
|---|---|---|
| PMG_vdelay_m0 | %00000001 | Vertical delay patterns |
| PMG_vdelay_m1 | %00000010 | |
| PMG_vdelay_m2 | %00000100 | |
| PMG_vdelay_m3 | %00001000 | |
| PMG_vdelay_p0 | %00010000 | |
| PMG_vdelay_p1 | %00100000 | |
| PMG_vdelay_p2 | %01000000 | |
| PMG_vdelay_p3 | %10000000 | |
| PMG_gractl_missiles | %00000001 | Turns on missiles |
| PMG_gractl_players | %00000010 | Turns on players |
| PMG_gractl_latch | %00000100 | |
| PMG_gractl_default | PMG_gractl_missiles or PMG_gractl_players | |
| PMG_sdmctl_DMA_missile | %00000100 | Enable missiles DMA |
| PMG_sdmctl_DMA_player | %00001000 | Enable players DMA |
| PMG_sdmctl_DMA_both | %00001100 | |
| PMG_sdmctl_oneline | %00010000 | Set one line resolution |
| PMG_sdmctl_default | PMG_sdmctl_DMA_both | |
| PMG_5player | %00010000 | Turn on 5th player |
| PMG_overlap | %00100000 | Additional color on players overlap |
| name: | address: | type: | description: |
|---|---|---|---|
| PMG_sdmctl | $D400 | byte | Direct Memory Access (DMA) enable flag. |
| PMG_sdmctl_S | $22F | byte | Direct Memory Access (DMA) enable flag - shadow register. |
| PMG_gprior | $D01B | byte | Priority selection register. |
| PMG_gprior_S | $26F | byte | Priority selection register - shadow register. |
| PMG_pcolr0 | $D012 | byte | Player colors. |
| PMG_pcolr1 | $D013 | byte | |
| PMG_pcolr2 | $D014 | byte | |
| PMG_pcolr3 | $D015 | byte | |
| PMG_pcolr0_S | $2C0 | byte | Player colors - shadow registers. |
| PMG_pcolr1_S | $2C1 | byte | |
| PMG_pcolr2_S | $2C2 | byte | |
| PMG_pcolr3_S | $2C3 | byte | |
| PMG_hpos0 | $D000 | byte | Horizontal positions of players. |
| PMG_hpos1 | $D001 | byte | |
| PMG_hpos2 | $D002 | byte | |
| PMG_hpos3 | $D003 | byte | |
| PMG_hposm0 | $D004 | byte | Horizontal positions of missiles. |
| PMG_hposm1 | $D005 | byte | |
| PMG_hposm2 | $D006 | byte | |
| PMG_hposm3 | $D007 | byte | |
| PMG_sizep0 | $D008 | byte | Size of players. |
| PMG_sizep1 | $D009 | byte | |
| PMG_sizep2 | $D00A | byte | |
| PMG_sizep3 | $D00B | byte | |
| PMG_sizem | $D00C | byte | Size of missiles |
| PMG_grafp0 | $D00D | byte | Players graphics shapes (non DMA). |
| PMG_grafp1 | $D00E | byte | |
| PMG_grafp2 | $D00F | byte | |
| PMG_grafp3 | $D010 | byte | |
| PMG_grafm | $D011 | byte | Missile graphics shapes (non DMA). |
| PMG_p0pl | $D00C | byte | Player to player collison statuses. |
| PMG_p1pl | $D00D | byte | |
| PMG_p2pl | $D00E | byte | |
| PMG_p3pl | $D00F | byte | |
| PMG_vdelay | $D01C | byte | Vertical delay register. |
| PMG_gractl | $D01D | byte | Graphics Control register. Controls receipt of Player/Missile DMA data |
| PMG_hitclr | $D01E | byte | Clear Collisions |
| PMG_pmbase | $D407 | byte | Upper byte of the player/missile base address |
| name: | type: | description: |
|---|---|---|
| PMG_oneline | boolean | contains true if current mode uses single line resolution. contains false for double line resolution |
| PMG_base | pointer | contains base address |
| PMG_size | word | contains memory size used by PMG |
| name: | description: |
|---|---|
| PMG_Init | procedure PMG_Init(base: byte); overload;Initializes PMG engine with default settings.
parameters: |
| PMG_Init | procedure PMG_Init(base, sdmctl: byte); overload;Initializes PMG engine with custom sdmctl value.
parameters: |
| PMG_Init | procedure PMG_Init(base, sdmctl, gractl: byte); overload;Initializes PMG engine with custom sdmctl and gractl values.
parameters: |
| PMG_Clear | procedure PMG_Clear;Clears memory of sprites and missiles filling it with zeroes. |