![]() |
Routines |
Prev: 63614 | Up: Map |
Used by the routine at 61630. Prepares everything for demo mode or a new game and then displays the introductory cutscene.
|
|||||||
63662 | CALL 64582 | Generate the table of mirrored values of 0-255 at 32256 | |||||
Now we initialise the game status buffer.
|
|||||||
63665 | INC H | HL=32512 | |||||
63666 | LD (HL),B | Zero out the first 222 bytes of the game status buffer | |||||
63667 | LD C,221 | ||||||
63669 | LD DE,32513 | ||||||
63672 | LDIR | ||||||
63674 | LD E,224 | DE=32736 | |||||
63676 | LD HL,65504 | Copy the data at 65504 into the last 32 bytes of the game status buffer | |||||
63679 | LD C,32 | ||||||
63681 | LDIR | ||||||
Next we ensure that all the shop and house doors are closed.
|
|||||||
63683 | LD B,32 | There are 32 Z values to check (one for each 8-tile wide segment of the play area) | |||||
63685 | LD HL,48384 | Point HL at the first Z value for y-coordinates 30-35 at 48384 | |||||
63688 | LD A,(HL) | Pick up the Z value | |||||
63689 | CP 83 | Jump unless the Z value corresponds to the open door of a shop (80) or house (81 or 82) | |||||
63691 | JR NC,63705 | ||||||
63693 | CP 80 | ||||||
63695 | JR C,63705 | ||||||
63697 | SET 2,(HL) | Set bit 2 of the Z value, thus closing the door | |||||
63699 | JR NZ,63705 | Jump unless we are dealing with a shop door | |||||
63701 | INC H | Update the Z value in the block at 48640 if we are dealing with a shop door | |||||
63702 | LD (HL),83 | ||||||
63704 | DEC H | Point HL back at the block of Z values at 48384 | |||||
63705 | INC L | Point HL at the next Z value | |||||
63706 | DJNZ 63688 | Jump back until we've checked every Z value | |||||
63708 | CALL 63472 | Initialise the character buffers for character groups 215-221 | |||||
63711 | CALL 28760 | Initialise the icon panel, score box and message line | |||||
63714 | CALL 31458 | Prepare the phone messages, events and objects | |||||
Let's not forget about the rope that may be above the roof of no. 19.
|
|||||||
63717 | LD HL,2827 | Set the appropriate Z values in the block at 47360 to 11, thus removing the rope (if any) from above the roof of no. 19 | |||||
63720 | LD (47386),HL | ||||||
And finally we initialise the main characters (222-230) before displaying the introductory cutscene.
|
|||||||
63723 | LD A,(32750) | A=current game mode (0 or 1) | |||||
63726 | JR 63733 | ||||||
This entry point is used by the routine at 24832.
|
|||||||
63728 | LD HL,32750 | 32750 holds the current game mode (0-4) | |||||
63731 | INC (HL) | Move to the next game mode | |||||
63732 | LD A,(HL) | A=next game mode | |||||
63733 | CALL 63614 | Initialise the character buffers for characters 222-230 | |||||
63736 | DEC H | Point HL at the message number in the set of initialisation parameters for the current game mode for Sam (see 58912) | |||||
63737 | DEC L | ||||||
63738 | LD A,(HL) | Pick up the message number in A | |||||
63739 | PUSH AF | ||||||
63740 | DEC L | Pick up the new y-coordinate for the topmost row of the play area on screen in D | |||||
63741 | LD D,(HL) | ||||||
63742 | DEC L | Pick up the new x-coordinate for the topmost row of the play area on screen in E | |||||
63743 | LD E,(HL) | ||||||
63744 | DEC L | Pick up the LSB of the address of the screen refresh buffer byte that corresponds to the top row of the cutscene window | |||||
63745 | LD A,(HL) | ||||||
63746 | JP 31451 | Display the cutscene |
Prev: 63614 | Up: Map |