![]() |
Routines |
| Prev: 47147 | Up: Map | Next: 47300 |
|
Used by the routines at 46014, Switch_DrawSprite_Functions, DrawRoom, Handler_DisplayCharacterLocation, Redraw_Banner_Underline, PrintBanner, DrawCharacterItemLabel and 60919.
|
||||||||||
| Controller_Tile | 47179 | LD A,(HL) | A=*HL. | |||||||
| 47180 | INC HL | Increment HL by one. | ||||||||
| 47181 | CP 128 | If A is lower than 128 jump to Controller_Tile_Draw_Move_Down. | ||||||||
| 47183 | JR C,Controller_Tile_Draw_Move_Down | |||||||||
|
Return if the terminator is reached.
|
||||||||||
| 47185 | CP 255 | Return if A is the terminator (255). | ||||||||
| 47187 | RET Z | |||||||||
|
Check for the 254 control character. This signifies that the subsequent byte is the colour attribute.
|
||||||||||
| 47188 | CP 254 | If A is not 254 jump to Controller_Tile_Screen_Instructions. | ||||||||
| 47190 | JR NZ,Controller_Tile_Screen_Instructions | |||||||||
| 47192 | LD C,(HL) | C=*HL (set the attribute). | ||||||||
| 47193 | INC HL | Increment HL by one. | ||||||||
| 47194 | JR Controller_Tile | Jump to Controller_Tile. | ||||||||
|
If the value is between 168-232 then it is screen co-ordinates.
|
||||||||||
| Controller_Tile_Screen_Instructions | 47196 | CP 168 | If A is lower than 168 jump to Controller_Tile_Draw_Move_Down. | |||||||
| 47198 | JR C,Controller_Tile_Draw_Move_Down | |||||||||
| 47200 | CP 232 | If A is higher than 232 jump to Controller_Tile_Bank. | ||||||||
| 47202 | JR NC,Controller_Tile_Bank | |||||||||
|
Remove the control number, then we're left with the desired screen co-ordinate data updates.
|
||||||||||
| 47204 | SUB 200 | E=(A-200)+E. | ||||||||
| 47206 | ADD A,E | |||||||||
| 47207 | LD E,A | |||||||||
| 47208 | LD A,D | D+=*HL. | ||||||||
| 47209 | ADD A,(HL) | |||||||||
| 47210 | LD D,A | |||||||||
| 47211 | INC HL | Increment HL by one. | ||||||||
| 47212 | JR Controller_Tile | Jump to Controller_Tile. | ||||||||
|
Check for the 251 control character. This signifies that the following two bytes should be set as the sprite bank address.
|
||||||||||
| Controller_Tile_Bank | 47214 | CP 251 | If A is not 251 jump to Controller_Tile_Check_Move_Down. | |||||||
| 47216 | JR NZ,Controller_Tile_Check_Move_Down | |||||||||
| 47218 | LD A,(HL) | Write *HL to 47081. | ||||||||
| 47219 | LD (47081),A | |||||||||
| 47222 | INC HL | Increment HL by one. | ||||||||
| 47223 | LD A,(HL) | Write *HL to 47082. | ||||||||
| 47224 | LD (47082),A | |||||||||
| 47227 | INC HL | Increment HL by one. | ||||||||
| 47228 | JR Controller_Tile | Jump to Controller_Tile. | ||||||||
|
Check for the 241 control character. This signifies that the screen location should move down one block.
|
||||||||||
| Controller_Tile_Check_Move_Down | 47230 | CP 241 | If A is 241 jump to Controller_Tile_Move_Down. | |||||||
| 47232 | JR Z,Controller_Tile_Move_Down | |||||||||
|
Check for the 243 control character. This alters the current message pointer (HL).
|
||||||||||
| 47234 | CP 243 | If A is not 243 jump to Controller_Tile_Repeaters. | ||||||||
| 47236 | JR NZ,Controller_Tile_Repeaters | |||||||||
| 47238 | LD A,(HL) | A=*HL. | ||||||||
| 47239 | INC HL | Increment HL by one. | ||||||||
| 47240 | LD H,(HL) | H=*HL. | ||||||||
| 47241 | LD L,A | L=A. | ||||||||
| 47242 | JR Controller_Tile | Jump to Controller_Tile. | ||||||||
|
Anything from here involves repetition.
|
||||||||||
| Controller_Tile_Repeaters | 47244 | LD B,(HL) | B=*HL (counter). | |||||||
| 47245 | INC HL | Increment HL by one. | ||||||||
|
Check for the 240 control character. Tile sprite to the screen vertically, the number of times indicated in B.
|
||||||||||
| 47246 | CP 240 | If A is not 240 jump to Controller_Tile_0. | ||||||||
| 47248 | JR NZ,Controller_Tile_0 | |||||||||
| 47250 | LD A,(HL) | A=*HL. | ||||||||
| 47251 | INC HL | Increment HL by one. | ||||||||
| Controller_Tile_Vertical_Loop | 47252 | CALL DrawSprite | Call DrawSprite. | |||||||
| 47255 | INC D | Increment D by one. | ||||||||
| 47256 | DJNZ Controller_Tile_Vertical_Loop | Decrease counter by one and loop back to Controller_Tile_Vertical_Loop until counter is zero. | ||||||||
| 47258 | JR Controller_Tile | Jump to Controller_Tile. | ||||||||
|
Check for the 242 control character.
|
||||||||||
| Controller_Tile_0 | 47260 | CP 242 | If A is not 242 jump to Controller_Tile_Horizontal. | |||||||
| 47262 | JR NZ,Controller_Tile_Horizontal | |||||||||
| Controller_Tile_1 | 47264 | LD A,(HL) | ||||||||
| 47265 | INC HL | |||||||||
| 47266 | CALL DrawSprite | |||||||||
| 47269 | LD A,(HL) | |||||||||
| 47270 | INC E | |||||||||
| 47271 | CALL DrawSprite | |||||||||
| 47274 | INC E | |||||||||
| 47275 | DEC HL | |||||||||
| 47276 | DJNZ Controller_Tile_1 | |||||||||
| 47278 | INC HL | |||||||||
| 47279 | INC HL | |||||||||
| 47280 | JR Controller_Tile | Jump to Controller_Tile. | ||||||||
|
Tile sprite to the screen horizontally, the number of times indicated in B.
|
||||||||||
| Controller_Tile_Horizontal | 47282 | LD A,(HL) | A=*HL. | |||||||
| 47283 | INC HL | Increment HL by one. | ||||||||
| Controller_Tile_Horizontal_Loop | 47284 | CALL DrawSprite | Call DrawSprite. | |||||||
|
Move to the next screen buffer column.
|
||||||||||
| 47287 | INC E | Increment E by one. | ||||||||
| 47288 | DJNZ Controller_Tile_Horizontal_Loop | Decrease counter by one and loop back to Controller_Tile_Horizontal_Loop until counter is zero. | ||||||||
| 47290 | JP Controller_Tile | Jump to Controller_Tile. | ||||||||
|
Draw a tile, and move the screen position down one character block.
|
||||||||||
| Controller_Tile_Draw_Move_Down | 47293 | CALL DrawSprite | Call DrawSprite. | |||||||
| Controller_Tile_Move_Down | 47296 | INC E | Increment E by one. | |||||||
| 47297 | JP Controller_Tile | Jump to Controller_Tile. | ||||||||
| Prev: 47147 | Up: Map | Next: 47300 |