Routines |
Prev: B82B | Up: Map | Next: B8C4 |
Used by the routines at B3BE, Switch_DrawSprite_Functions, DrawRoom, Handler_DisplayCharacterLocation, Redraw_Banner_Underline, PrintBanner, DrawCharacterItemLabel and EDF7.
|
||||||||||
Controller_Tile | B84B | LD A,(HL) | A=*HL. | |||||||
B84C | INC HL | Increment HL by one. | ||||||||
B84D | CP $80 | If A is lower than 80 jump to Controller_Tile_Draw_Move_Down. | ||||||||
B84F | JR C,Controller_Tile_Draw_Move_Down | |||||||||
Return if the terminator is reached.
|
||||||||||
B851 | CP $FF | Return if A is the terminator (FF). | ||||||||
B853 | RET Z | |||||||||
Check for the FE control character. This signifies that the subsequent byte is the colour attribute.
|
||||||||||
B854 | CP $FE | If A is not FE jump to Controller_Tile_Screen_Instructions. | ||||||||
B856 | JR NZ,Controller_Tile_Screen_Instructions | |||||||||
B858 | LD C,(HL) | C=*HL (set the attribute). | ||||||||
B859 | INC HL | Increment HL by one. | ||||||||
B85A | JR Controller_Tile | Jump to Controller_Tile. | ||||||||
If the value is between A8-E8 then it is screen co-ordinates.
|
||||||||||
Controller_Tile_Screen_Instructions | B85C | CP $A8 | If A is lower than A8 jump to Controller_Tile_Draw_Move_Down. | |||||||
B85E | JR C,Controller_Tile_Draw_Move_Down | |||||||||
B860 | CP $E8 | If A is higher than E8 jump to Controller_Tile_Bank. | ||||||||
B862 | JR NC,Controller_Tile_Bank | |||||||||
Remove the control number, then we're left with the desired screen co-ordinate data updates.
|
||||||||||
B864 | SUB $C8 | E=(A-C8)+E. | ||||||||
B866 | ADD A,E | |||||||||
B867 | LD E,A | |||||||||
B868 | LD A,D | D+=*HL. | ||||||||
B869 | ADD A,(HL) | |||||||||
B86A | LD D,A | |||||||||
B86B | INC HL | Increment HL by one. | ||||||||
B86C | JR Controller_Tile | Jump to Controller_Tile. | ||||||||
Check for the FB control character. This signifies that the following two bytes should be set as the sprite bank address.
|
||||||||||
Controller_Tile_Bank | B86E | CP $FB | If A is not FB jump to Controller_Tile_Check_Move_Down. | |||||||
B870 | JR NZ,Controller_Tile_Check_Move_Down | |||||||||
B872 | LD A,(HL) | Write *HL to B7E9. | ||||||||
B873 | LD ($B7E9),A | |||||||||
B876 | INC HL | Increment HL by one. | ||||||||
B877 | LD A,(HL) | Write *HL to B7EA. | ||||||||
B878 | LD ($B7EA),A | |||||||||
B87B | INC HL | Increment HL by one. | ||||||||
B87C | JR Controller_Tile | Jump to Controller_Tile. | ||||||||
Check for the F1 control character. This signifies that the screen location should move down one block.
|
||||||||||
Controller_Tile_Check_Move_Down | B87E | CP $F1 | If A is F1 jump to Controller_Tile_Move_Down. | |||||||
B880 | JR Z,Controller_Tile_Move_Down | |||||||||
Check for the F3 control character. This alters the current message pointer (HL).
|
||||||||||
B882 | CP $F3 | If A is not F3 jump to Controller_Tile_Repeaters. | ||||||||
B884 | JR NZ,Controller_Tile_Repeaters | |||||||||
B886 | LD A,(HL) | A=*HL. | ||||||||
B887 | INC HL | Increment HL by one. | ||||||||
B888 | LD H,(HL) | H=*HL. | ||||||||
B889 | LD L,A | L=A. | ||||||||
B88A | JR Controller_Tile | Jump to Controller_Tile. | ||||||||
Anything from here involves repetition.
|
||||||||||
Controller_Tile_Repeaters | B88C | LD B,(HL) | B=*HL (counter). | |||||||
B88D | INC HL | Increment HL by one. | ||||||||
Check for the F0 control character. Tile sprite to the screen vertically, the number of times indicated in B.
|
||||||||||
B88E | CP $F0 | If A is not F0 jump to Controller_Tile_0. | ||||||||
B890 | JR NZ,Controller_Tile_0 | |||||||||
B892 | LD A,(HL) | A=*HL. | ||||||||
B893 | INC HL | Increment HL by one. | ||||||||
Controller_Tile_Vertical_Loop | B894 | CALL DrawSprite | Call DrawSprite. | |||||||
B897 | INC D | Increment D by one. | ||||||||
B898 | DJNZ Controller_Tile_Vertical_Loop | Decrease counter by one and loop back to Controller_Tile_Vertical_Loop until counter is zero. | ||||||||
B89A | JR Controller_Tile | Jump to Controller_Tile. | ||||||||
Check for the F2 control character.
|
||||||||||
Controller_Tile_0 | B89C | CP $F2 | If A is not F2 jump to Controller_Tile_Horizontal. | |||||||
B89E | JR NZ,Controller_Tile_Horizontal | |||||||||
Controller_Tile_1 | B8A0 | LD A,(HL) | ||||||||
B8A1 | INC HL | |||||||||
B8A2 | CALL DrawSprite | |||||||||
B8A5 | LD A,(HL) | |||||||||
B8A6 | INC E | |||||||||
B8A7 | CALL DrawSprite | |||||||||
B8AA | INC E | |||||||||
B8AB | DEC HL | |||||||||
B8AC | DJNZ Controller_Tile_1 | |||||||||
B8AE | INC HL | |||||||||
B8AF | INC HL | |||||||||
B8B0 | JR Controller_Tile | Jump to Controller_Tile. | ||||||||
Tile sprite to the screen horizontally, the number of times indicated in B.
|
||||||||||
Controller_Tile_Horizontal | B8B2 | LD A,(HL) | A=*HL. | |||||||
B8B3 | INC HL | Increment HL by one. | ||||||||
Controller_Tile_Horizontal_Loop | B8B4 | CALL DrawSprite | Call DrawSprite. | |||||||
Move to the next screen buffer column.
|
||||||||||
B8B7 | INC E | Increment E by one. | ||||||||
B8B8 | DJNZ Controller_Tile_Horizontal_Loop | Decrease counter by one and loop back to Controller_Tile_Horizontal_Loop until counter is zero. | ||||||||
B8BA | JP Controller_Tile | Jump to Controller_Tile. | ||||||||
Draw a tile, and move the screen position down one character block.
|
||||||||||
Controller_Tile_Draw_Move_Down | B8BD | CALL DrawSprite | Call DrawSprite. | |||||||
Controller_Tile_Move_Down | B8C0 | INC E | Increment E by one. | |||||||
B8C1 | JP Controller_Tile | Jump to Controller_Tile. |
Prev: B82B | Up: Map | Next: B8C4 |