mirror of
https://github.com/mi57730/a2d.git
synced 2024-06-01 13:41:30 +00:00
Dedupe icon masks using explicit pointers
This commit is contained in:
parent
39bf5c771a
commit
0c44a6e073
|
@ -26,6 +26,7 @@ graphics_icon:
|
|||
.byte px(%1001111),px(%1111111),px(%1111111),px(%1111001)
|
||||
.byte px(%1000000),px(%0000000),px(%0000000),px(%0000001)
|
||||
.byte px(%1111111),px(%1111111),px(%1111111),px(%1111111)
|
||||
|
||||
graphics_mask:
|
||||
.byte px(%1111111),px(%1111111),px(%1111111),px(%1111111)
|
||||
.byte px(%1111111),px(%1111111),px(%1111111),px(%1111111)
|
||||
|
@ -58,25 +59,6 @@ aw_wp_icon:
|
|||
.byte px(%0100000),px(%0000000),px(%0000000),px(%0000010)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
|
||||
;; TODO: Dedupe these document masks by making icon bitmap
|
||||
;; entries explicitly link to masks.
|
||||
.byte px(%0111111),px(%1111111),px(%1111100),px(%0000000)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%0000000)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1100000)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111000)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
|
||||
aw_ss_icon:
|
||||
.byte px(%0111111),px(%1111111),px(%1111100),px(%0000000)
|
||||
.byte px(%0100000),px(%0000000),px(%0001011),px(%0000000)
|
||||
|
@ -95,23 +77,6 @@ aw_ss_icon:
|
|||
.byte px(%0100000),px(%0000000),px(%0000000),px(%0000010)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
|
||||
.byte px(%0111111),px(%1111111),px(%1111100),px(%0000000)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%0000000)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1100000)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111000)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
|
||||
aw_db_icon:
|
||||
.byte px(%0111111),px(%1111111),px(%1111100),px(%0000000)
|
||||
.byte px(%0100000),px(%0000000),px(%0001011),px(%0000000)
|
||||
|
@ -130,25 +95,6 @@ aw_db_icon:
|
|||
.byte px(%0100000),px(%0000000),px(%0000000),px(%0000010)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
|
||||
|
||||
.byte px(%0111111),px(%1111111),px(%1111100),px(%0000000)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%0000000)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1100000)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111000)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
|
||||
|
||||
PAD_TO $8800
|
||||
|
||||
;;; ============================================================
|
||||
|
@ -1720,25 +1666,32 @@ L9F9F: copy #$80, L9F92
|
|||
lda L9F92
|
||||
ora #$40
|
||||
sta L9F92
|
||||
;; copy icon coords and bits
|
||||
;; copy icon entry coords and bits
|
||||
: ldy #IconEntry::iconx
|
||||
: lda ($06),y
|
||||
sta icon_paintbits_params::viewloc-IconEntry::iconx,y
|
||||
sta mask_paintbits_params::viewloc-IconEntry::iconx,y
|
||||
iny
|
||||
cpy #IconEntry::iconx + 6 ; x/y/bits
|
||||
bne :-
|
||||
|
||||
jsr push_pointers
|
||||
|
||||
;; copy icon definition bits
|
||||
copy16 icon_paintbits_params::mapbits, $08
|
||||
ldy #11
|
||||
ldy #.sizeof(MGTK::MapInfo) - .sizeof(MGTK::Point) - 1
|
||||
: lda ($08),y
|
||||
sta icon_paintbits_params::mapbits,y
|
||||
sta mask_paintbits_params::mapbits,y
|
||||
dey
|
||||
bpl :-
|
||||
|
||||
bit L9F92
|
||||
bpl :+
|
||||
jsr prepare_mask_params
|
||||
;; Icon definition is followed by pointer to mask address.
|
||||
;; NOTE: For volume icons, this is random data, but it is unused.
|
||||
ldy #.sizeof(MGTK::MapInfo) - .sizeof(MGTK::Point)
|
||||
copy16in ($08),y, mask_paintbits_params::mapbits
|
||||
: jsr pop_pointers
|
||||
|
||||
ldy #9
|
||||
|
@ -1828,24 +1781,6 @@ setbg: sta settextbg_params
|
|||
|
||||
;;; ============================================================
|
||||
|
||||
.proc prepare_mask_params
|
||||
COPY_BLOCK icon_paintbits_params, mask_paintbits_params
|
||||
|
||||
;; Calculate address of mask bitmap
|
||||
ldy mask_paintbits_params::maprect::y2
|
||||
loop: lda mask_paintbits_params::mapwidth
|
||||
clc
|
||||
adc mask_paintbits_params::mapbits
|
||||
sta mask_paintbits_params::mapbits
|
||||
bcc :+
|
||||
inc mask_paintbits_params::mapbits+1
|
||||
: dey
|
||||
bpl loop
|
||||
rts
|
||||
.endproc
|
||||
|
||||
;;; ============================================================
|
||||
|
||||
.proc LA14D
|
||||
ldx #0
|
||||
loop: add16 icon_paintbits_params::viewloc::xcoord,x, icon_paintbits_params::maprect::x1,x, paintrect_params6::x1,x
|
||||
|
@ -1866,6 +1801,8 @@ loop: add16 icon_paintbits_params::viewloc::xcoord,x, icon_paintbits_params:
|
|||
|
||||
.endproc
|
||||
|
||||
PAD_TO $A182
|
||||
|
||||
;;; ============================================================
|
||||
|
||||
;;; v0 v1
|
||||
|
|
|
@ -1470,25 +1470,28 @@ type_deltay_table:
|
|||
.byte 2, 2, 2
|
||||
.byte 0
|
||||
|
||||
.macro DEFICON mapbits, mapwidth, x1, y1, x2, y2
|
||||
.macro DEFICON mapbits, mapwidth, x1, y1, x2, y2, maskbits
|
||||
;; First part is MGTK::MapInfo without leading viewloc
|
||||
.addr mapbits
|
||||
.byte mapwidth
|
||||
.byte 0 ; reserved
|
||||
.word x1, y1, x2, y2
|
||||
;; Next part is link to mask
|
||||
.addr maskbits
|
||||
.endmacro
|
||||
|
||||
gen: DEFICON generic_icon, 4, 0, 0, 27, 15
|
||||
gen: DEFICON generic_icon, 4, 0, 0, 27, 15, generic_mask
|
||||
src:
|
||||
txt: DEFICON text_icon, 4, 0, 0, 27, 15
|
||||
bin: DEFICON binary_icon, 4, 0, 0, 27, 14
|
||||
dir: DEFICON folder_icon, 4, 0, 0, 27, 11
|
||||
sys: DEFICON sys_icon, 4, 0, 0, 27, 17
|
||||
bas: DEFICON basic_icon, 4, 0, 0, 27, 14
|
||||
fot: DEFICON desktop_aux::graphics_icon, 4, 0, 0, 27, 11
|
||||
aw_db: DEFICON desktop_aux::aw_db_icon, 4, 0, 0, 27, 15
|
||||
aw_wp: DEFICON desktop_aux::aw_wp_icon, 4, 0, 0, 27, 15
|
||||
aw_ss: DEFICON desktop_aux::aw_ss_icon, 4, 0, 0, 27, 15
|
||||
app: DEFICON app_icon, 5, 0, 0, 34, 16
|
||||
txt: DEFICON text_icon, 4, 0, 0, 27, 15, generic_mask
|
||||
bin: DEFICON binary_icon, 4, 0, 0, 27, 14, binary_mask
|
||||
dir: DEFICON folder_icon, 4, 0, 0, 27, 11, folder_mask
|
||||
sys: DEFICON sys_icon, 4, 0, 0, 27, 17, sys_mask
|
||||
bas: DEFICON basic_icon, 4, 0, 0, 27, 14, basic_mask
|
||||
fot: DEFICON desktop_aux::graphics_icon, 4, 0, 0, 27, 11, desktop_aux::graphics_mask
|
||||
aw_db: DEFICON desktop_aux::aw_db_icon, 4, 0, 0, 27, 15, generic_mask
|
||||
aw_wp: DEFICON desktop_aux::aw_wp_icon, 4, 0, 0, 27, 15, generic_mask
|
||||
aw_ss: DEFICON desktop_aux::aw_ss_icon, 4, 0, 0, 27, 15, generic_mask
|
||||
app: DEFICON app_icon, 5, 0, 0, 34, 16, app_mask
|
||||
|
||||
;;; Generic
|
||||
|
||||
|
@ -1510,6 +1513,7 @@ generic_icon:
|
|||
.byte px(%0100000),px(%0000000),px(%0000000),px(%0000010)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
|
||||
;; Generic mask is re-used for multiple "document" types
|
||||
generic_mask:
|
||||
.byte px(%0111111),px(%1111111),px(%1111100),px(%0000000)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%0000000)
|
||||
|
@ -1548,24 +1552,6 @@ text_icon:
|
|||
.byte px(%0100000),px(%0000000),px(%0000000),px(%0000010)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
|
||||
text_mask:
|
||||
.byte px(%0111111),px(%1111111),px(%1111100),px(%0000000)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%0000000)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1100000)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111000)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111110)
|
||||
|
||||
;;; Binary
|
||||
|
||||
binary_icon:
|
||||
|
@ -1586,6 +1572,7 @@ binary_icon:
|
|||
.byte px(%0000000),px(%0000001),px(%1000000),px(%0000000)
|
||||
|
||||
binary_mask:
|
||||
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
|
||||
.byte px(%0000000),px(%0000001),px(%1000000),px(%0000000)
|
||||
.byte px(%0000000),px(%0000111),px(%1110000),px(%0000000)
|
||||
.byte px(%0000000),px(%0011111),px(%1111100),px(%0000000)
|
||||
|
@ -1599,6 +1586,7 @@ binary_mask:
|
|||
.byte px(%0000000),px(%0011111),px(%1111100),px(%0000000)
|
||||
.byte px(%0000000),px(%0000111),px(%1110000),px(%0000000)
|
||||
.byte px(%0000000),px(%0000001),px(%1000000),px(%0000000)
|
||||
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
|
||||
|
||||
;;; Folder
|
||||
folder_icon:
|
||||
|
@ -1691,6 +1679,7 @@ basic_icon:
|
|||
.byte px(%0000000),px(%0000001),px(%1000000),px(%0000000)
|
||||
|
||||
basic_mask:
|
||||
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
|
||||
.byte px(%0000000),px(%0000001),px(%1000000),px(%0000000)
|
||||
.byte px(%0000000),px(%0000111),px(%1110000),px(%0000000)
|
||||
.byte px(%0000000),px(%0011111),px(%1111100),px(%0000000)
|
||||
|
@ -1704,6 +1693,7 @@ basic_mask:
|
|||
.byte px(%0000000),px(%0011111),px(%1111100),px(%0000000)
|
||||
.byte px(%0000000),px(%0000111),px(%1110000),px(%0000000)
|
||||
.byte px(%0000000),px(%0000001),px(%1000000),px(%0000000)
|
||||
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
|
||||
|
||||
;;; System (with .SYSTEM suffix)
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user