Prev: 55052 Up: Map Next: 55238
55139: Handler: Bonus
Used by the routine at 54098.
Handler_Bonus 55139 LD A,(59229) A=*Tile_Horizontal_Position.
55142 DEC A Decrease A by one.
55143 LD B,A B=A.
55144 LD A,(59230) A=*Tile_Vertical_Position.
55147 DEC A Decrease A by one.
55148 LD C,A C=A.
55149 CALL Calculate_ScreenBlockAddress Call Calculate_ScreenBlockAddress.
55152 CALL Calculate_AttributeAddress Call Calculate_AttributeAddress.
55155 PUSH DE Stash DE on the stack.
55156 LD IX,(55438) IX=*55438.
55160 LD DE,46949 IX+=GraphicsData_Items_02.
55163 ADD IX,DE
55165 LD D,4 Set a counter in D for 4 rows.
Handler_Bonus_0 55167 PUSH BC Stash the co-ordinates on the stack.
55168 LD B,8 Set a counter in B for 8 columns.
Handler_Bonus_1 55170 PUSH BC Stash the column counter on the stack.
55171 LD B,4 Set a counter in B for 4 bytes per character.
55173 PUSH HL Stash the screen position on the stack.
Handler_Bonus_2 55174 LD A,(IX+0) Write a byte from the object data to the screen buffer position.
55177 LD (HL),A
55178 INC IX Increment the object data pointer by one.
55180 INC HL Increment the screen position by one.
55181 DJNZ Handler_Bonus_2 Decrease the object byte counter by one and loop back to Handler_Bonus_2 until counter is zero.
55183 POP HL Restore the original screen position for this row from the stack.
55184 INC H Increment H by one.
55185 LD BC,16 IX+=0016.
55188 ADD IX,BC
55190 POP BC Restore the column counter from the stack.
55191 DJNZ Handler_Bonus_1 Decrease the column counter by one and loop back to Handler_Bonus_1 until the column counter is zero.
55193 POP BC Restore the co-ordinates from the stack.
55194 INC B Increment B by one.
55195 CALL Calculate_ScreenBlockAddress Call Calculate_ScreenBlockAddress.
55198 DEC D Decrease D by one.
55199 JR NZ,Handler_Bonus_0 Jump to Handler_Bonus_0 if D is not zero.
55201 LD IX,(55440) IX=*55440.
55205 LD DE,46949 IX+=GraphicsData_Items_02.
55208 ADD IX,DE
55210 POP HL Restore HL from the stack.
55211 LD B,4 B=4.
55213 LD DE,28 DE=0028.
Handler_Bonus_3 55216 PUSH BC Stash BC on the stack.
55217 LD B,4 B=4.
Handler_Bonus_4 55219 LD A,(IX+0) Write *IX+0 to *HL.
55222 LD (HL),A
55223 INC IX Increment IX by one.
55225 INC HL Increment HL by one.
55226 DJNZ Handler_Bonus_4 Decrease counter by one and loop back to Handler_Bonus_4 until counter is zero.
55228 ADD HL,DE HL+=DE.
55229 LD BC,16 IX+=0016.
55232 ADD IX,BC
55234 POP BC Restore BC from the stack.
55235 DJNZ Handler_Bonus_3 Decrease counter by one and loop back to Handler_Bonus_3 until counter is zero.
55237 RET Return.
Prev: 55052 Up: Map Next: 55238