Prev: E3B7 Up: Map Next: E46D
E42E: Sweep the playfield attributes toward their target colours
Called via the interpreter's self-modified $E030 dispatch. The gate byte at $E06C only lets it run on alternate calls. When it does run it walks all 512 attribute cells of $5900..$5AFF against the matching backbuffer bytes at $F000..$F1FF, which other code has rasterised the glyph shapes into: cells with BRIGHT set are left alone, cells whose masked colour already matches the backbuffer are copied verbatim, and the rest step their ink and paper fields one unit toward the target. Repeated over several frames this reveals the glyphs as a gradual colour change.
The ink increment at E45D and the paper increment at E468 are not masked back into their 3-bit fields, so a field that reaches its target exactly on the last step carries into the next one.
es_attribute_fade_in E42E LD HL,$5C6C HL -> data_e06c [$E06C]
E431 RLC (HL) 50-50 pattern, rotate in place
E433 RET C Return when bit set
E434 LD HL,$5900 Middle band of attributes
E437 LD DE,$F000 Backbuffer
es_attribute_fade_in_0 E43A BIT 6,(HL) Leave the cell alone if BRIGHT is set
E43C JR NZ,es_attribute_fade_in_2
E43E LD A,(DE)
E43F AND $3F
E441 CP (HL)
E442 JR NZ,e452
E444 LD A,(DE)
es_attribute_fade_in_1 E445 LD (HL),A
es_attribute_fade_in_2 E446 INC E
E447 INC L
E448 JR NZ,es_attribute_fade_in_0
E44A INC D
E44B INC H
E44C LD A,H
E44D CP $5B
E44F JR NZ,es_attribute_fade_in_0
E451 RET
e452 E452 LD B,A
E453 LD A,(HL)
E454 AND $07
E456 LD C,A
E457 LD A,B
E458 AND $07
E45A CP C
E45B JR Z,es_attribute_fade_in_3
E45D INC C
es_attribute_fade_in_3 E45E LD A,B
E45F AND $38
E461 LD B,A
E462 LD A,(HL)
E463 AND $38
E465 CP B
E466 JR Z,es_attribute_fade_in_4
E468 ADD A,$08
es_attribute_fade_in_4 E46A OR C
E46B JR es_attribute_fade_in_1
Prev: E3B7 Up: Map Next: E46D