Routines |
Prev: 55052 | Up: Map | Next: 55238 |
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 |