Prev: 63695 Up: Map Next: 63873
63766: Selection Screen
Used by the routine at GameEntryPoint.
This routine builds the game selection screen.
select-screen
SelectionScreen 63766 XOR A Set border colour to BLACK.
63767 OUT (254),A
63769 CALL UpdateXXXXXBuffer Call UpdateXXXXXBuffer.
The admin screens show the right-hand side of level 2.
63772 LD A,2 A=level 2.
63774 CALL FindScene Call FindScene.
63777 CALL WriteSceneToShadowBuffer Call WriteSceneToShadowBuffer.
63780 CALL CreateAdminPageTemplate Call CreateAdminPageTemplate.
63783 CALL Print_SelectionScreen Call Print_SelectionScreen.
The selection page displays for a period of time, and then the game cycles through playareas.
63786 LD B,255 B=255 (counter).
SelectionScreen_0 63788 HALT Halt operation (suspend CPU until the next interrupt).
63789 PUSH BC Stash BC on the stack.
63790 CALL ChooseControlType Call ChooseControlType.
63793 POP BC Restore BC from the stack.
63794 JR NZ,SelectionScreen_1 Jump to SelectionScreen_1 if {} is not zero.
63796 LD A,D Jump to SelectionScreen_1 if D is equal to 255.
63797 CP 255
63799 JR Z,SelectionScreen_1
63801 CP 30 Return if A is equal to 30.
63803 RET Z
63804 CP 15 Jump to SelectionScreen_0 if A is not equal to 15.
63806 JR NZ,SelectionScreen_0
Removes the print termination bit from the entire table at Table_ASCII.
63808 LD HL,64498 HL=Table_ASCII.
63811 LD B,40 B=40 (length).
StripPrintTerminationBit_Loop 63813 LD A,(HL) A=*HL.
63814 AND %01111111 Keep only bits 0-6.
63816 LD (HL),A Write A to *HL.
63817 INC HL Increment HL by one.
63818 DJNZ StripPrintTerminationBit_Loop Decrease counter by one and loop back to StripPrintTerminationBit_Loop until counter is zero.
63820 CALL CreateAdminPageTemplate Call CreateAdminPageTemplate.
63823 CALL ChangeControls Call ChangeControls.
63826 JR SelectionScreen Jump to SelectionScreen.
SelectionScreen_1 63828 DJNZ SelectionScreen_0 Decrease counter by one and loop back to SelectionScreen_0 until counter is zero.
63830 CALL PressAnyKey_Pause Call PressAnyKey_Pause.
63833 JR NZ,SelectionScreen Jump to SelectionScreen if {} is not zero.
This loops over some level playareas until a key is pressed or we reach level 11.
63835 LD B,1 B=level 1.
DisplayLevels_Loop 63837 PUSH BC Stash the current level on the stack twice.
63838 PUSH BC
63839 CALL UpdateXXXXXBuffer Call UpdateXXXXXBuffer.
63842 POP BC Restore current level from the stack.
63843 LD A,B A=current level to display.
63844 CALL FindScene Call FindScene.
63847 CALL WriteSceneToShadowBuffer Call WriteSceneToShadowBuffer.
63850 CALL Scene_DisplayCarpet Call Scene_DisplayCarpet.
63853 CALL ScreenBuffer_Update Call ScreenBuffer_Update.
63856 CALL AttributeBuffer_Update Call AttributeBuffer_Update.
63859 CALL PressAnyKey_Pause Call PressAnyKey_Pause.
63862 POP BC Restore current level from the stack.
63863 JR NZ,SelectionScreen Jump to SelectionScreen if any key has been pressed.
63865 INC B Increment current level by one.
Only display levels 0-10.
63866 LD A,B Loop back to DisplayLevels_Loop until B is equal to 11.
63867 CP 11
63869 JR NZ,DisplayLevels_Loop
Display the selection screen options.
63871 JR SelectionScreen Jump to SelectionScreen.
Prev: 63695 Up: Map Next: 63873