Routines |
Prev: 36059 | Up: Map | Next: 36418 |
Used by the routine at Game_Configs_Controls.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Game_Configs_Keys | 36249 | CALL Clear_Screen | Call Clear_Screen. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Displays the "for each direction ... press key" banner.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36252 | LD DE,36715 | Point to Text_Change_1 and call Print_String. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36255 | LD HL,301 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36258 | CALL Print_String | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36261 | LD DE,36745 | Point to Text_Change_2 and call Print_String. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36264 | LD HL,310 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36267 | CALL Print_String | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36270 | LD DE,36775 | Point to Text_Change_3 and call Print_String. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36273 | LD HL,319 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36276 | CALL Print_String | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Set that this player should use the "redefined keys" for their input.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36279 | LD HL,(36457) | Fetch the current player from Temp_Player, and set it in both DE and HL. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36282 | LD DE,(36457) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36286 | INC DE | Increase DE by two to point to the beginning of that players redefined keys map. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36287 | INC DE | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36288 | LD (HL),E | Stores either Player_1_Up or Player_2_Up at the address for the player control method. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36289 | INC HL | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36290 | LD (HL),D | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Go through each key and process.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36291 | LD HL,36795 | Point to Text_Up and call Print_Key_Loop. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36294 | CALL Print_Key_Loop | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36297 | LD HL,36798 | Point to Text_Up_Right and call Print_Key_Loop. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36300 | CALL Print_Key_Loop | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36303 | LD HL,36807 | Point to Text_Right and call Print_Key_Loop. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36306 | CALL Print_Key_Loop | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36309 | LD HL,36813 | Point to Text_Down_Right and call Print_Key_Loop. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36312 | CALL Print_Key_Loop | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36315 | LD HL,36824 | Point to Text_Down and call Print_Key_Loop. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36318 | CALL Print_Key_Loop | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36321 | LD HL,36829 | Point to Text_Down_Left and call Print_Key_Loop. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36324 | CALL Print_Key_Loop | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36327 | LD HL,36839 | Point to Text_Left and call Print_Key_Loop. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36330 | CALL Print_Key_Loop | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36333 | LD HL,36844 | Point to Text_Up_Left and call Print_Key_Loop. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36336 | CALL Print_Key_Loop | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36339 | LD HL,36852 | Point to Text_Fire and call Print_Key_Loop. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36342 | CALL Print_Key_Loop | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36345 | JP Game_Configs_Return | Jump to Game_Configs_Return. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Print the message, get the key and write it to the mapping buffer for this player.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Print_Key_Loop | 36348 | PUSH DE | Stash the current key mapping address on the stack. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36349 | EX DE,HL | Use Print_String to show the message for which key to press. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36350 | LD HL,1372 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36353 | CALL Print_String | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36356 | POP DE | Fetch the current key mapping address from the stack. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36357 | PUSH DE | Stash it again for later. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36358 | CALL Get_Key | Call Get_Key. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36361 | POP DE | Fetch the current key mapping address from the stack. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36362 | EX DE,HL | Writes the port number and key byte to the current key mapping address. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36363 | LD (HL),E | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36364 | INC HL | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36365 | LD (HL),D | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36366 | INC HL | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36367 | EX DE,HL | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36368 | PUSH DE | Stash the next key mapping address on the stack. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36369 | LD DE,36864 | Blank out the "press key" message with whitespace. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36372 | LD HL,1372 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36375 | CALL Print_String | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36378 | CALL Configs_Delay | Delay (for debounce) twice Configs_Delay. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36381 | CALL Configs_Delay | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36384 | POP DE | Restores the current key location off the stack. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36385 | RET | Return. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Detect the key press.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Get_Key | 36386 | LD DE,36410 | DE=Key_Data. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36389 | LD B,8 | Set a counter B=8. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Get_Key_Loop | 36391 | LD A,(DE) | Using the current port, read the keyboard. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36392 | IN A,(254) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36394 | CPL | Is a key being pressed? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36395 | AND 31 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36397 | JP NZ,Store_Key | Yes - jump to Store_Key. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36400 | INC DE | Increase DE by one. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36401 | DJNZ Get_Key_Loop | Decrease counter by one and loop back to Get_Key_Loop until counter is zero. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36403 | JP Get_Key | Jump to Get_Key. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Stores the port number as the MSB of HL, and the key byte as the LSB.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Store_Key | 36406 | LD L,A | Store the key byte as the LSB of HL. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36407 | LD A,(DE) | Store the port number from DE as the MSB of HL. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36408 | LD H,A | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36409 | RET | Return. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
The keyboard is split into 8 sections - 4 'half rows' on each side, and each with a unique port number.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Key_Data | 36410 | DEFB 254,253,251,247,239,223,191,127 | Key Data |
Prev: 36059 | Up: Map | Next: 36418 |