Routines |
Prev: 63614 | Up: Map | Next: 63749 |
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 | Next: 63749 |