mirror of
https://github.com/lscharen/iigs-game-engine.git
synced 2024-11-25 00:30:48 +00:00
226 lines
7.8 KiB
ArmAsm
226 lines
7.8 KiB
ArmAsm
* Generic Tile Engine Macros
|
|
* by Lucas Scharenbroich
|
|
|
|
GTEToolNum equ $A0
|
|
|
|
_GTEBootInit MAC
|
|
UserTool $0100+GTEToolNum
|
|
<<<
|
|
_GTEStartUp MAC
|
|
UserTool $0200+GTEToolNum
|
|
<<<
|
|
_GTEShutDown MAC
|
|
UserTool $0300+GTEToolNum
|
|
<<<
|
|
_GTEVersion MAC
|
|
UserTool $0400+GTEToolNum
|
|
<<<
|
|
_GTEReset MAC
|
|
UserTool $0500+GTEToolNum
|
|
<<<
|
|
_GTEStatus MAC
|
|
UserTool $0600+GTEToolNum
|
|
<<<
|
|
_GTEReadControl MAC
|
|
UserTool $0900+GTEToolNum
|
|
<<<
|
|
_GTESetScreenMode MAC
|
|
UserTool $0A00+GTEToolNum
|
|
<<<
|
|
_GTESetTile MAC
|
|
UserTool $0B00+GTEToolNum
|
|
<<<
|
|
_GTESetBG0Origin MAC
|
|
UserTool $0C00+GTEToolNum
|
|
<<<
|
|
_GTERender MAC
|
|
UserTool $0D00+GTEToolNum
|
|
<<<
|
|
_GTELoadTileSet MAC
|
|
UserTool $0E00+GTEToolNum
|
|
<<<
|
|
_GTECreateSpriteStamp MAC
|
|
UserTool $0F00+GTEToolNum
|
|
<<<
|
|
_GTEAddSprite MAC
|
|
UserTool $1000+GTEToolNum
|
|
<<<
|
|
_GTEMoveSprite MAC
|
|
UserTool $1100+GTEToolNum
|
|
<<<
|
|
_GTEUpdateSprite MAC
|
|
UserTool $1200+GTEToolNum
|
|
<<<
|
|
_GTERemoveSprite MAC
|
|
UserTool $1300+GTEToolNum
|
|
<<<
|
|
_GTEGetSeconds MAC
|
|
UserTool $1400+GTEToolNum
|
|
<<<
|
|
_GTECopyTileToDynamic MAC
|
|
UserTool $1500+GTEToolNum
|
|
<<<
|
|
_GTESetPalette MAC
|
|
UserTool $1600+GTEToolNum
|
|
<<<
|
|
_GTECopyPicToBG1 MAC
|
|
UserTool $1700+GTEToolNum
|
|
<<<
|
|
_GTEBindSCBArray MAC
|
|
UserTool $1800+GTEToolNum
|
|
<<<
|
|
_GTEGetBG0TileMapInfo MAC
|
|
UserTool $1900+GTEToolNum
|
|
<<<
|
|
_GTEGetScreenInfo MAC
|
|
UserTool $1A00+GTEToolNum
|
|
<<<
|
|
_GTESetBG1Origin MAC
|
|
UserTool $1B00+GTEToolNum
|
|
<<<
|
|
_GTEGetTileAt MAC
|
|
UserTool $1C00+GTEToolNum
|
|
<<<
|
|
_GTESetBG0TileMapInfo MAC
|
|
UserTool $1D00+GTEToolNum
|
|
<<<
|
|
_GTESetBG1TileMapInfo MAC
|
|
UserTool $1E00+GTEToolNum
|
|
<<<
|
|
_GTEAddTimer MAC
|
|
UserTool $1F00+GTEToolNum
|
|
<<<
|
|
_GTERemoveTimer MAC
|
|
UserTool $2000+GTEToolNum
|
|
<<<
|
|
_GTEStartScript MAC
|
|
UserTool $2100+GTEToolNum
|
|
<<<
|
|
_GTESetOverlay MAC
|
|
UserTool $2200+GTEToolNum
|
|
<<<
|
|
_GTEClearOverlay MAC
|
|
UserTool $2300+GTEToolNum
|
|
<<<
|
|
_GTEGetTileDataAddr MAC
|
|
UserTool $2400+GTEToolNum
|
|
<<<
|
|
_GTEFillTileStore MAC
|
|
UserTool $2500+GTEToolNum
|
|
<<<
|
|
_GTERefresh MAC
|
|
UserTool $2600+GTEToolNum
|
|
<<<
|
|
_GTERenderDirty MAC
|
|
UserTool $2700+GTEToolNum
|
|
<<<
|
|
_GTESetBG1Displacement MAC
|
|
UserTool $2800+GTEToolNum
|
|
<<<
|
|
_GTESetBG1Rotation MAC
|
|
UserTool $2900+GTEToolNum
|
|
<<<
|
|
_GTEClearBG1Buffer MAC
|
|
UserTool $2A00+GTEToolNum
|
|
<<<
|
|
_GTESetBG1Scale MAC
|
|
UserTool $2B00+GTEToolNum
|
|
<<<
|
|
_GTEGetAddress MAC
|
|
UserTool $2C00+GTEToolNum
|
|
<<<
|
|
_GTECompileSpriteStamp MAC
|
|
UserTool $2D00+GTEToolNum
|
|
<<<
|
|
_GTESetAddress MAC
|
|
UserTool $2E00+GTEToolNum
|
|
<<<
|
|
_GTEUpdateOverlay MAC
|
|
UserTool $2F00+GTEToolNum
|
|
<<<
|
|
_GTEEnableSprites MAC
|
|
UserTool $3000+GTEToolNum
|
|
<<<
|
|
_GTEEnableBackground MAC
|
|
UserTool $3100+GTEToolNum
|
|
<<<
|
|
|
|
; EngineMode definitions
|
|
; Script definition
|
|
YIELD equ $8000
|
|
JUMP equ $4000
|
|
|
|
SET_PALETTE_ENTRY equ $0002
|
|
SWAP_PALETTE_ENTRY equ $0004
|
|
SET_DYN_TILE equ $0006
|
|
CALLBACK equ $0010
|
|
|
|
; ReadControl return value bits
|
|
PAD_BUTTON_B equ $0100
|
|
PAD_BUTTON_A equ $0200
|
|
PAD_KEY_DOWN equ $0400
|
|
|
|
; EngineMode definitions
|
|
ENGINE_MODE_TWO_LAYER equ $0001
|
|
ENGINE_MODE_DYN_TILES equ $0002
|
|
ENGINE_MODE_BNK0_BUFF equ $0004
|
|
ENGINE_MODE_USER_TOOL equ $8000 ; Communicate if GTE is loaded as a system tool, or a user tool
|
|
|
|
; Render flags
|
|
RENDER_ALT_BG1 equ $0001
|
|
RENDER_BG1_HORZ_OFFSET equ $0002
|
|
RENDER_BG1_VERT_OFFSET equ $0004
|
|
RENDER_BG1_ROTATION equ $0008
|
|
RENDER_PER_SCANLINE equ $0010
|
|
RENDER_WITH_SHADOWING equ $0020
|
|
RENDER_SPRITES_SORTED equ $0040
|
|
|
|
; Overlay flags
|
|
OVERLAY_MASKED equ $0000 ; Overlay has a mask, so the background must be draw first
|
|
OVERLAY_SOLID equ $8000 ; Overlay covers the scan line and is fully opaque
|
|
OVERLAY_ABOVE equ $0000 ; Overlay is drawn above scanline sprites
|
|
OVERLAY_BELOW equ $4000 ; Overlay is drawn below scanline sprites
|
|
|
|
; GetAddress IDs
|
|
scanlineHorzOffset equ $0001
|
|
scanlineHorzOffset2 equ $0002
|
|
tileStore equ $0003
|
|
vblCallback equ $0004
|
|
extSpriteRenderer equ $0005
|
|
rawDrawTile equ $0006
|
|
extBG0TileUpdate equ $0007
|
|
userTileCallback equ $0008
|
|
|
|
; CopyPicToBG1 flags
|
|
COPY_PIC_NORMAL equ $0000 ; Copy into BG1 buffer in "normal mode"
|
|
COPY_PIC_SCANLINE equ $0001 ; Copy in a way to support BG1 + RENDER_PER_SCANLINE.
|
|
|
|
; Tile constants
|
|
; TILE_RESERVED_BIT equ $8000
|
|
TILE_PRIORITY_BIT equ $4000 ; Put tile on top of sprite
|
|
TILE_USER_BIT equ $2000 ; User-defined tile. Execute registered callback.
|
|
TILE_SOLID_BIT equ $1000 ; Hint bit used in TWO_LAYER_MODE to optimize rendering
|
|
TILE_DYN_BIT equ $0800 ; Is this a Dynamic Tile?
|
|
TILE_VFLIP_BIT equ $0400
|
|
TILE_HFLIP_BIT equ $0200
|
|
TILE_ID_MASK equ $01FF
|
|
TILE_CTRL_MASK equ $FE00
|
|
|
|
; Sprite constants
|
|
SPRITE_COMPILED equ $4000 ; This is a compiled sprite
|
|
SPRITE_HIDE equ $2000
|
|
SPRITE_16X16 equ $1800
|
|
SPRITE_16X8 equ $1000
|
|
SPRITE_8X16 equ $0800
|
|
SPRITE_8X8 equ $0000
|
|
SPRITE_VFLIP equ $0400
|
|
SPRITE_HFLIP equ $0200
|
|
|
|
; Stamp storage parameters
|
|
VBUFF_STRIDE_BYTES equ {12*4} ; Each line has 4 slots of 16 pixels + 8 buffer pixels
|
|
VBUFF_TILE_ROW_BYTES equ {8*VBUFF_STRIDE_BYTES} ; Each row is comprised of 8 lines
|
|
VBUFF_TILE_COL_BYTES equ 4
|
|
VBUFF_SPRITE_STEP equ {VBUFF_TILE_ROW_BYTES*3} ; Allocate space for 16 rows + 8 rows of buffer
|
|
VBUFF_SPRITE_START equ {VBUFF_TILE_ROW_BYTES+4} ; Start at an offset so $0000 can be used as an empty value
|
|
VBUFF_SLOT_COUNT equ 48 ; Have space for this many stamps
|