|
RLE解码 | 整数型 | |
|
读取位置 | 整数型 | | | |
行偏移 | 整数型 | | | | 宽度 | 整数型 | | | | 高度 | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 |
读地址 | 整数型 | | |
写地址 | 整数型 | | |
行长度 | 整数型 | | |
点阵长度 | 整数型 | | |
一字节 | 整数型 | | |
二比特 | 整数型 | | |
透明值 | 整数型 | | |
索引值 | 整数型 | | |
混合后 | 整数型 | | |
长度 | 整数型 | | |
a | 整数型 | | |
行数 | 整数型 | | |
写地址 = 全局内存指针
写整数 (写地址, 131072
) 写地址 = 写地址 + 4
写整数 (写地址, 0
)写地址 = 写地址 + 4
写整数 (写地址, 0
)写地址 = 写地址 + 4
写短整数 (写地址, 宽度
)写地址 = 写地址 + 2
写短整数 (写地址, 高度
)写地址 = 写地址 + 2
写短整数 (写地址, 2080
)写地址 = 写地址 + 2
读地址 = 行偏移
[高度
] + 1
循环判断首 ()
一字节 = was数据
[读地址
]
读地址 = 读地址 + 1

二比特 =
汇编右移 (一字节, 6
)

判断 (二比特 = 0
)

如果 (位与 (一字节, 63
) = 0
) 


判断 (行长度 > 宽度
)



写地址 = 写地址 �
�� (行长度 - 宽度
) × 4




行长度 = 0




行数 = 行数 + 1




如果真 (高度 ≠ 行数
)




读地址 = 行偏移
[高度 - 行数
] + 1








判断 (行长度 > 0
)



长度 = 宽度 - 行长度




计次循环首 (长度,
)



写整数 (写地址, 0
)








写地址 = 写地址 + 4




计次循环尾 ()






行长度 = 0




行数 = 行数 + 1




如果真 (高度 ≠ 行数
)




读地址 = 行偏移
[高度 - 行数
] + 1








判断 (行长度 = 0
且 was数据
[行偏移
[高度 - 行数
] - 1
] = 0
)



计次循环首 (宽度,
)



写整数 (写地址, 0
)




写地址 = 写地址 + 4




计次循环尾 ()



行数 = 行数 + 1




如果真 (高度 ≠ 行数
)




读地址 = 行偏移
[高度 - 行数
] + 1




















如果 (位与 (一字节, 32
) = 32
) 



透明值 =
位与 (一字节, 31
)



索引值 = was数据
[读地址
]



读地址 = 读地址 + 1




混合后 =
混合透明 (颜色表32
[索引值 + 1
], 透明值 × 8
)


写整数 (写地址, 混合后
)



行长度 = 行长度 + 1




写地址 = 写地址 + 4








透明值 = was数据
[读地址
] 



读地址 = 读地址 + 1




索引值 = was数据
[读地址
]



读地址 = 读地址 + 1




混合后 =
混合透明 (颜色表32
[索引值 + 1
], 透明值 × 8
)



计次循环首 (位与 (一字节, 31
),
)



写整数 (写地址, 混合后
)




写地址 = 写地址 + 4





行长度 = 行长度 + 1




计次循环尾 ()







判断 (二比特 = 1
) 

计次循环首 (位与 (一字节, 63
),
)


索引值 = was数据
[读地址
]


读地址 = 读地址 + 1


写整数 (写地址, 颜色表32
[索引值 + 1
])


写地址 = 写地址 + 4



行长度 = 行长度 + 1


计次循环尾 ()
判断 (二比特 = 2
) 

索引值 = was数据
[读地址
]

读地址 = 读地址 + 1


计次循环首 (位与 (一字节, 63
),
)

写整数 (写地址, 颜色表32
[索引值 + 1
])


写地址 = 写地址 + 4



行长度 = 行长度 + 1


计次循环尾 ()
判断 (二比特 = 3
) 

长度 =
位与 (一字节, 63
)
清零 (写地址, 长度
)

写地址 = 写地址 + 长度 × 4


行长度 = 行长度 + 长度






调试输出 (行数, 高度
)
循环判断尾 (行数 ≠ 高度
)返回 (宽度 × 高度 × 4 + 18
)