- reading images from predefined ressources (stored at 0x8000+) works - drawing IDX2 images within widgets works - added some image ressources in IDX2 format
80 lines
2.3 KiB
NASM
80 lines
2.3 KiB
NASM
; ***************************************************************************
|
|
; copyright : (C) 2025 by Martin Preuss
|
|
; email : martin@libchipcard.de
|
|
;
|
|
; ***************************************************************************
|
|
; * This file is part of the project "AqHome". *
|
|
; * Please see toplevel file COPYING of that project for license details. *
|
|
; ***************************************************************************
|
|
|
|
#ifndef AQH_AVR_COMMON_RESSOURCE_H
|
|
#define AQH_AVR_COMMON_RESSOURCE_H
|
|
|
|
|
|
; ***************************************************************************
|
|
; defs
|
|
|
|
.equ RES_IMAGE_OFFS_TYPE_LO = 0
|
|
.equ RES_IMAGE_OFFS_TYPE_HI = 1
|
|
.equ RES_IMAGE_OFFS_WIDTH_LO = 2
|
|
.equ RES_IMAGE_OFFS_WIDTH_HI = 3
|
|
.equ RES_IMAGE_OFFS_HEIGHT_LO = 4
|
|
.equ RES_IMAGE_OFFS_HEIGHT_HI = 5
|
|
.equ RES_IMAGE_OFFS_COLORMAP_LO = 6
|
|
.equ RES_IMAGE_OFFS_COLORMAP_HI = 7
|
|
.equ RES_IMAGE_OFFS_PIXELS_LO = 8
|
|
.equ RES_IMAGE_OFFS_PIXELS_HI = 9
|
|
|
|
.equ RES_IMAGE_COLORMAP_OFFS_NUM_LO = 0
|
|
.equ RES_IMAGE_COLORMAP_OFFS_NUM_HI = 1
|
|
.equ RES_IMAGE_COLORMAP_OFFS_ENTRIES = 2
|
|
|
|
|
|
|
|
; ***************************************************************************
|
|
; code
|
|
|
|
.cseg
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; @routine RES_GetRessource
|
|
;
|
|
; The Ressource table has one entry for every ressource handled by this table.
|
|
; The first entry contains the number of ressource entries in the table.
|
|
; All following entries contain byte pointer addresses (for LPM) to ressources.
|
|
; Ressource ids start with zero.
|
|
;
|
|
; @param r17:r16 ressource id (starting with 0)
|
|
; @param Z pointer to start of ressources in FLASH (byte address)
|
|
; @return CF set if ressource found, cleared otherwise
|
|
; @return Z if CF set: pointer to ressource (byte address)
|
|
; @clobbers r16, r17, r18
|
|
|
|
RES_GetRessource:
|
|
lpm r18, Z+ ; first entry: number of entries in table
|
|
cp r16, r18 ; id must be < num entries
|
|
lpm r18, Z+ ; Z points to first entry now
|
|
cpc r17, r18
|
|
brcc RES_GetRessource_ret
|
|
RES_GetRessource_getRessource:
|
|
lsl r16 ; byte address, so we need to add ressource id twice (i.e. *2)
|
|
rol r17
|
|
add zl, r16
|
|
add zh, r17
|
|
lpm r16, Z+
|
|
lpm r17, Z+
|
|
mov zl, r16
|
|
mov zh, r17
|
|
sec
|
|
RES_GetRessource_ret:
|
|
ret
|
|
; @end
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|