![]() |
Routines |
| Prev: 34304 | Up: Map | Next: 34633 |
|
Used by the routine at GameInitialise.
|
|||||
|
|||||
| ChooseLocationOrTakeJob | 34406 | LD B,1 | Call 32853 with a count of 1. | ||
| 34408 | CALL 32853 | ||||
| 34411 | LD HL,61435 | Jump to ChooseLocationOrTakeJob if bit 0 ("Ticker On/ Off") of *GameState_2 is set. | |||
| 34414 | BIT 0,(HL) | ||||
| 34416 | JR NZ,ChooseLocationOrTakeJob | ||||
| 34418 | CALL ClearMenuScreenAreas | Call ClearMenuScreenAreas. | |||
|
Prints "Destination Fare".
|
|||||
| 34421 | LD HL,35944 | HL=Messaging_TravelHeader. | |||
| 34424 | LD DE,20554 | DE=20554 (screen buffer location). | |||
| 34427 | CALL Print_String | Call Print_String. | |||
| 34430 | LD HL,20586 | HL=20586 (screen buffer location). | |||
| 34433 | LD B,11 | Underline the header with 11 character blocks of 255. | |||
| 34435 | CALL Underline | ||||
| 34438 | LD HL,20600 | HL=20600 (screen buffer location). | |||
| 34441 | LD B,4 | Underline the header with 4 character blocks of 255. | |||
| 34443 | CALL Underline | ||||
| 34446 | LD A,128 | Initialise *TemporaryScreenLocation to 128. | |||
| 34448 | LD (30737),A | ||||
| 34451 | LD IX,(61426) | Loads the active players current location into BC (using either *1UP_Location or *2UP_Location). | |||
| 34455 | LD C,(IX+8) | ||||
| 34458 | LD B,(IX+9) | ||||
| 34461 | PUSH BC | Stash the active players current location on the stack. | |||
| 34462 | LD IX,2 | Move the pointer in IX by 0002. | |||
| 34466 | ADD IX,BC | ||||
| 34468 | LD L,(IX+0) | Load the current locations map co-ordinates into HL. | |||
| 34471 | LD H,(IX+1) | ||||
| 34474 | LD (30725),HL | Write the current locations map co-ordinates to *CurrentLocationCoordinates. | |||
|
Prints each destination (and cost) to the screen.
|
|||||
| 34477 | LD BC,2 | Set the increment value in BC so IX will point to the first flight destination from where the player is located. | |||
| PrintDestinations_Loop | 34480 | ADD IX,BC | Move the pointer in IX by the increment value in BC. | ||
| 34482 | LD L,(IX+0) | Fetch the destination and store it in HL. | |||
| 34485 | LD H,(IX+1) | ||||
| 34488 | LD A,96 | Jump to AllDestinationsPrinted if all destinations have been printed. | |||
| 34490 | CP H | ||||
| 34491 | JR NC,AllDestinationsPrinted | ||||
| 34493 | LD DE,17 | Move the pointer in HL to the destination name, the data before the name string is always 0017 bytes. | |||
| 34496 | ADD HL,DE | ||||
|
Load the screen position for printing into DE.
|
|||||
| 34497 | LD D,80 | D=80. | |||
| 34499 | LD A,(30737) | A=*TemporaryScreenLocation. | |||
| 34502 | OR %00001001 | Set bits 0 and 3. | |||
| 34504 | LD E,A | E=A. | |||
|
Print the destination location name to the screen.
|
|||||
| 34505 | CALL Print_String | Call Print_String. | |||
|
Calculate where to print the cost.
|
|||||
| 34508 | LD A,E | A=E. | |||
| 34509 | AND %11100000 | Keep only bits 5-7. | |||
| 34511 | OR %00011000 | Set bits 3-4. | |||
| 34513 | LD E,A | E=A. | |||
| 34514 | AND %11100000 | Keep only bits 5-7. | |||
| 34516 | ADD A,32 | A+=32. | |||
| 34518 | LD (30737),A | Write A to *TemporaryScreenLocation. | |||
| 34521 | PUSH IX | Stash IX on the stack. | |||
| 34523 | PUSH IX | HL=IX (using the stack). | |||
| 34525 | POP HL | ||||
| 34526 | INC HL | Move HL to the last digit of the cost, ready for printing. | |||
| 34527 | INC HL | ||||
| 34528 | INC HL | ||||
| 34529 | LD BC,514 | Set the number format in BC. | |||
| 34532 | CALL PrintNumbers | Call PrintNumbers. | |||
| 34535 | POP IX | Restore IX from the stack. | |||
| 34537 | LD HL,65532 | Move the printing position in DE back to the start of the cost. | |||
| 34540 | ADD HL,DE | ||||
| 34541 | EX DE,HL | ||||
|
Now print "£".
|
|||||
| 34542 | LD HL,35878 | HL=Messaging_£. | |||
| 34545 | CALL Print_String | Call Print_String. | |||
| 34548 | LD BC,4 | Set the increment in BC to point to the next destination. | |||
| 34551 | JR PrintDestinations_Loop | Jump to PrintDestinations_Loop. | |||
|
Now deduce if the current location has a playable game or not.
|
|||||
| AllDestinationsPrinted | 34553 | POP HL | Restore the current location into HL (from the stack). | ||
| 34554 | LD DE,16 | Move HL to this locations "state" and load the state into A. | |||
| 34557 | ADD HL,DE | ||||
| 34558 | LD A,(HL) | ||||
| 34559 | AND A | Jump to ShiftLocationState if *Pointer_ActivePlayer is pointing to 1UP_Name (is this player one?) | |||
| 34560 | LD HL,(61426) | ||||
| 34563 | LD DE,35880 | ||||
| 34566 | SBC HL,DE | ||||
| 34568 | JR Z,ShiftLocationState | ||||
|
This is player two, so shift the location state right through two positions.
|
|||||
| 34570 | RRCA | Set the carry flag if 2UP has completed the sub-game at this location. | |||
| ShiftLocationState | 34571 | RRCA | Set the carry flag if 1UP has completed the sub-game at this destination). | ||
| 34572 | LD B,224 | B=224. | |||
|
Decide which message to print; "Job completed" or "Accept job offered".
|
|||||
| 34574 | LD HL,35962 | HL=Messaging_JobComplete. | |||
| 34577 | JR C,PrintJobMessaging | Jump to PrintJobMessaging if the game at this location has already been completed. | |||
| 34579 | LD B,0 | B=0. | |||
| 34581 | LD HL,35975 | HL=Messaging_AcceptJobOffered. | |||
|
Calculate where to print the messaging.
|
|||||
| PrintJobMessaging | 34584 | LD A,(30737) | A=*TemporaryScreenLocation. | ||
| 34587 | OR %00001010 | Set bits 1 and 3. | |||
| 34589 | LD E,A | E=A. | |||
| 34590 | LD D,80 | D=80. | |||
| 34592 | AND %11100000 | Keep only bits 5-7. | |||
| 34594 | ADD A,B | A+=B. | |||
| 34595 | LD (30737),A | Write A to *TemporaryScreenLocation. | |||
| 34598 | PUSH BC | Stash BC on the stack. | |||
|
Print either "Job completed" or "Accept job offered" to the screen.
|
|||||
| 34599 | CALL Print_String | Call Print_String. | |||
| 34602 | POP AF | Restore AF from the stack. | |||
| 34603 | CP 0 | Return if A is equal to 0. | |||
| 34605 | RET Z | ||||
| 34606 | LD IX,(61426) | IX=Pointer_ActivePlayer. | |||
| 34610 | CALL Check_AffordToFly | Call Check_AffordToFly. | |||
| 34613 | RET NC | Return if the player can afford the "cheapest" destination. | |||
|
The active player can't afford to fly anywhere.
|
|||||
| 34614 | RES 7,(IX+15) | Reset bit 7 of *IX+15. | |||
| 34618 | LD B,100 | Call 32853 with a count of 100. | |||
| 34620 | CALL 32853 | ||||
| 34623 | CALL ClearMenuScreenAreas | Call ClearMenuScreenAreas. | |||
| 34626 | CALL Messaging_GenerateTicker | Call Messaging_GenerateTicker. | |||
| 34629 | POP HL | Restore HL from the stack. | |||
| 34630 | JP Handler_SubGame_6 | Jump to Handler_SubGame_6. | |||
| Prev: 34304 | Up: Map | Next: 34633 |