|  | Routines | 
| Prev: 54366 | Up: Map | Next: 54691 | 
|  | |||||||||||||||||||||
| 
Character state variables/ flags.
 | |||||||||||||||||||||
| Customer_Frame_01 | 54415 | DEFB 3 | Character frame index 1. | ||||||||||||||||||
| Customer_Frame_02 | 54416 | DEFB 4 | Character frame index 2. | ||||||||||||||||||
| Customer_Frame_03 | 54417 | DEFB 5 | Character frame index 3. | ||||||||||||||||||
| Customer_Frame_04 | 54418 | DEFB 6 | Character frame index 4. | ||||||||||||||||||
| Customer_Frame_05 | 54419 | DEFB 7 | Character frame index 5. | ||||||||||||||||||
| Customer_Flag_Uncover | 54420 | DEFB 1 | Represents whether the customer will move to uncover a bandit ($00 "normal" / $01 "uncover" action). | ||||||||||||||||||
| Customer_State_Ref | 54421 | DEFB 2 | The current character state. | ||||||||||||||||||
| Customer_Timer_01 | 54422 | DEFB 11 | Character timer 1. | ||||||||||||||||||
| Customer_Timer_02 | 54423 | DEFB 0 | Character timer 2. | ||||||||||||||||||
| Customer_Timer_03 | 54424 | DEFB 0 | Character timer 3. | ||||||||||||||||||
| Customer_Timer_04 | 54425 | DEFB 30 | Character timer 4. | ||||||||||||||||||
| Customer_Timer_05 | 54426 | DEFB 12 | Character timer 5. | ||||||||||||||||||
| Customer_Timer_06 | 54427 | DEFB 6 | Character timer 6. | ||||||||||||||||||
| Customer_Timer_07 | 54428 | DEFB 8 | Character timer 7. | ||||||||||||||||||
| Customer_Timer_08 | 54429 | DEFB 8 | Character timer 8. | ||||||||||||||||||
| 
This routine looks at the current character state and routes to the correct subroutine.
 | |||||||||||||||||||||
| Customer_Routing | 54430 | LD HL,54421 | A=Customer_State_Ref. | ||||||||||||||||||
| 54433 | LD A,(HL) | ||||||||||||||||||||
| 54434 | DEC A | Work out which routine to use based on the current state. 
 | |||||||||||||||||||
| 54435 | JR Z,Customer_Open_01 | ||||||||||||||||||||
| 54437 | DEC A | ||||||||||||||||||||
| 54438 | JR Z,Customer_Open_02 | ||||||||||||||||||||
| 54440 | DEC A | ||||||||||||||||||||
| 54441 | JR Z,Customer_Open_03 | ||||||||||||||||||||
| 54443 | DEC A | ||||||||||||||||||||
| 54444 | JR Z,Customer_Open_04 | ||||||||||||||||||||
| 54446 | DEC A | ||||||||||||||||||||
| 54447 | JP Z,Customer_Uncover | ||||||||||||||||||||
| 54450 | DEC A | ||||||||||||||||||||
| 54451 | JP Z,Customer_Close_03 | ||||||||||||||||||||
| 54454 | DEC A | ||||||||||||||||||||
| 54455 | JP Z,Customer_Close_02 | ||||||||||||||||||||
| 54458 | JP Customer_Close_01 | ||||||||||||||||||||
| 
Handle door frame 1 countdown/ transition to door frame 2.
 | |||||||||||||||||||||
| Customer_Open_01 | 54461 | LD A,(54422) | Decrease Customer_Timer_01 by one, return if result is not zero. | ||||||||||||||||||
| 54464 | DEC A | ||||||||||||||||||||
| 54465 | LD (54422),A | ||||||||||||||||||||
| 54468 | RET NZ | ||||||||||||||||||||
| 54469 | INC (HL) | Move onto next character state. | |||||||||||||||||||
| 54470 | LD A,(54415) | Grab the character frame index from Customer_Frame_01. | |||||||||||||||||||
| 54473 | CALL Draw_DoorFrame02 | Call Draw_DoorFrame02 and return. | |||||||||||||||||||
| 54476 | RET | ||||||||||||||||||||
| 
Handle door frame 2 countdown/ transition to door frame 3.
 | |||||||||||||||||||||
| Customer_Open_02 | 54477 | LD A,(54423) | Decrease Customer_Timer_02 by one, return if result is not zero. | ||||||||||||||||||
| 54480 | DEC A | ||||||||||||||||||||
| 54481 | LD (54423),A | ||||||||||||||||||||
| 54484 | RET NZ | ||||||||||||||||||||
| 54485 | INC (HL) | Move onto next character state. | |||||||||||||||||||
| 54486 | LD A,(54415) | Grab the character frame index from Customer_Frame_01. | |||||||||||||||||||
| 54489 | CALL Draw_DoorFrame03 | Call Draw_DoorFrame03 and return. | |||||||||||||||||||
| 54492 | RET | ||||||||||||||||||||
| 
Handle door frame 3 countdown/ transition to door frame 4.
 | |||||||||||||||||||||
| Customer_Open_03 | 54493 | LD A,(54424) | Decrease Customer_Timer_03 by one, return if result is not zero. | ||||||||||||||||||
| 54496 | DEC A | ||||||||||||||||||||
| 54497 | LD (54424),A | ||||||||||||||||||||
| 54500 | RET NZ | ||||||||||||||||||||
| 54501 | INC (HL) | Move onto next character state. | |||||||||||||||||||
| 54502 | LD A,(54415) | Grab the character frame index from Customer_Frame_01. | |||||||||||||||||||
| 54505 | CALL Draw_DoorFrame04 | Call Draw_DoorFrame04 and return. | |||||||||||||||||||
| 54508 | RET | ||||||||||||||||||||
| 
Handle door frame 4 timer...
 | |||||||||||||||||||||
| Customer_Open_04 | 54509 | LD DE,53137 | Calls Hit_Detection with DE=Init_Customer_Shot. | ||||||||||||||||||
| 54512 | CALL Hit_Detection | ||||||||||||||||||||
| 54515 | LD A,(54425) | Decrease Customer_Timer_04 by one, return if result is not zero. | |||||||||||||||||||
| 54518 | DEC A | ||||||||||||||||||||
| 54519 | LD (54425),A | ||||||||||||||||||||
| 54522 | RET NZ | ||||||||||||||||||||
| 54523 | LD A,(54420) | Jump to Customer_HandsUp if Customer_Flag_Uncover is not zero. | |||||||||||||||||||
| 54526 | AND A | ||||||||||||||||||||
| 54527 | JR NZ,Customer_HandsUp | ||||||||||||||||||||
| 54529 | LD (HL),7 | Set Customer_State_Ref to use state $07 (Customer_Close_02 on the next call to Customer_Routing). | |||||||||||||||||||
| 54531 | LD A,(54415) | Call Draw_DoorFrame03 using the character frame index from Customer_Frame_01. | |||||||||||||||||||
| 54534 | CALL Draw_DoorFrame03 | ||||||||||||||||||||
| 54537 | LD (IX+6),5 | Issue 500 points (by writing $05 to the high order byte of, e.g. Door_Scoring_01). | |||||||||||||||||||
| 54541 | LD A,1 | Register this as a deposit (by writing $01 to e.g. Door_Cash_Action_01). | |||||||||||||||||||
| 54543 | LD (IX+8),A | ||||||||||||||||||||
| 54546 | LD (53648),A | Writes $01 to 53648. | |||||||||||||||||||
| 54549 | RET | Return. | |||||||||||||||||||
| 
Handle customer putting their hands up.
 | |||||||||||||||||||||
| Customer_HandsUp | 54550 | LD A,(54421) | Increase Customer_State_Ref by one. | ||||||||||||||||||
| 54553 | INC A | ||||||||||||||||||||
| 54554 | LD (54421),A | ||||||||||||||||||||
| 54557 | LD A,(54416) | Grab the character frame index from Customer_Frame_02. | |||||||||||||||||||
| 54560 | CALL Draw_DoorFrame04 | Call Draw_DoorFrame04 and return. | |||||||||||||||||||
| 54563 | RET | ||||||||||||||||||||
| 
Handles customer uncovering a "hidden" bandit action.
 | |||||||||||||||||||||
| Customer_Uncover | 54564 | LD DE,53137 | Calls Hit_Detection with DE=Init_Customer_Shot. | ||||||||||||||||||
| 54567 | CALL Hit_Detection | ||||||||||||||||||||
| 54570 | LD A,(54426) | Decrease Customer_Timer_05 by one, return if result is not zero. | |||||||||||||||||||
| 54573 | DEC A | ||||||||||||||||||||
| 54574 | LD (54426),A | ||||||||||||||||||||
| 54577 | RET NZ | ||||||||||||||||||||
| 54578 | LD A,(54421) | Increase Customer_State_Ref by one. | |||||||||||||||||||
| 54581 | INC A | ||||||||||||||||||||
| 54582 | LD (54421),A | ||||||||||||||||||||
| 54585 | LD A,(54417) | Grab the character frame index from Customer_Frame_03. | |||||||||||||||||||
| 54588 | CALL Draw_DoorFrame04 | Call Draw_DoorFrame04 and return. | |||||||||||||||||||
| 54591 | RET | ||||||||||||||||||||
| 
Handle door frame 4 countdown/ transition to door frame 3.
 | |||||||||||||||||||||
| Customer_Close_03 | 54592 | LD A,(54427) | Decrease Customer_Timer_06 by one, return if result is not zero. | ||||||||||||||||||
| 54595 | DEC A | ||||||||||||||||||||
| 54596 | LD (54427),A | ||||||||||||||||||||
| 54599 | RET NZ | ||||||||||||||||||||
| 54600 | CALL Init_Bandit_Open | Call Init_Bandit_Open. | |||||||||||||||||||
| 54603 | LD L,(IX+2) | Load, e.g. Door_Source_01 (bandit source data) into HL, and write $03 to the address contained in it. | |||||||||||||||||||
| 54606 | LD H,(IX+3) | ||||||||||||||||||||
| 54609 | LD (HL),3 | ||||||||||||||||||||
| 54611 | INC HL | Increase the pointer to the bandit source data by 3 and write $04 to this byte. | |||||||||||||||||||
| 54612 | INC HL | ||||||||||||||||||||
| 54613 | INC HL | ||||||||||||||||||||
| 54614 | LD (HL),4 | ||||||||||||||||||||
| 54616 | RET | Return. | |||||||||||||||||||
| 
Handle door frame 3 countdown/ transition to door frame 2.
 | |||||||||||||||||||||
| Customer_Close_02 | 54617 | LD A,(54428) | Decrease Customer_Timer_07 by one, return if result is not zero. | ||||||||||||||||||
| 54620 | DEC A | ||||||||||||||||||||
| 54621 | LD (54428),A | ||||||||||||||||||||
| 54624 | RET NZ | ||||||||||||||||||||
| 54625 | LD HL,54421 | Increase Customer_State_Ref by one. | |||||||||||||||||||
| 54628 | INC (HL) | ||||||||||||||||||||
| 54629 | LD A,(54415) | Grab the character frame index from Customer_Frame_01. | |||||||||||||||||||
| 54632 | CALL Draw_DoorFrame02 | Call Draw_DoorFrame02 and return. | |||||||||||||||||||
| 54635 | RET | ||||||||||||||||||||
| 
Handle door frame 2 countdown/ transition to door frame 1.
 | |||||||||||||||||||||
| Customer_Close_01 | 54636 | LD A,(54429) | Decrease Customer_Timer_08 by one, return if result is not zero. | ||||||||||||||||||
| 54639 | DEC A | ||||||||||||||||||||
| 54640 | LD (54429),A | ||||||||||||||||||||
| 54643 | RET NZ | ||||||||||||||||||||
| 54644 | CALL Draw_DoorFrame1 | Call Draw_DoorFrame1 (i.e. no character/ door is shut). | |||||||||||||||||||
| 54647 | CALL Reset___ | Call Reset___ and return. | |||||||||||||||||||
| 54650 | RET | ||||||||||||||||||||
| 
Handles customer being shot.
 | |||||||||||||||||||||
| Customer_Shot | 54651 | LD HL,54421 | If Customer_State_Ref is zero then jump to Customer_Shot_MidAir else jump to Customer_Shot_Floor. | ||||||||||||||||||
| 54654 | LD A,(HL) | ||||||||||||||||||||
| 54655 | DEC A | ||||||||||||||||||||
| 54656 | JR Z,Customer_Shot_MidAir | ||||||||||||||||||||
| 54658 | JR Customer_Shot_Floor | ||||||||||||||||||||
| Customer_Shot_MidAir | 54660 | INC (HL) | Move onto next character state. | ||||||||||||||||||
| 54661 | LD A,(54418) | Grab the character frame index from Customer_Frame_04. | |||||||||||||||||||
| 54664 | CALL Draw_DoorFrame04 | Call Draw_DoorFrame04 and return. | |||||||||||||||||||
| 54667 | RET | ||||||||||||||||||||
| Customer_Shot_Floor | 54668 | LD A,(54423) | Decrease Customer_Timer_02 by one, return if result is not zero. | ||||||||||||||||||
| 54671 | DEC A | ||||||||||||||||||||
| 54672 | LD (54423),A | ||||||||||||||||||||
| 54675 | RET NZ | ||||||||||||||||||||
| 54676 | LD A,(54419) | Grab the character frame index from Customer_Frame_05. | |||||||||||||||||||
| 54679 | CALL Draw_DoorFrame04 | Call Draw_DoorFrame04. | |||||||||||||||||||
| 54682 | LD A,2 | Writes $02 to 54014. | |||||||||||||||||||
| 54684 | LD (54014),A | ||||||||||||||||||||
| 54687 | CALL Reset___ | Call Reset___ and return. | |||||||||||||||||||
| 54690 | RET | ||||||||||||||||||||
| Prev: 54366 | Up: Map | Next: 54691 |