Chase H.Q. | Routines |
Prev: 9945 | Up: Map | Next: 99EC |
|
||||
drive_chatter | 9965 | LD A,($963D) | Load chatter_state | |
9968 | DEC A | If chatter_state was 1 (starting) then jump to drive_chatter_clear | ||
9969 | JR Z,drive_chatter_starting | |||
996B | DEC A | If chatter_state was 2 (displaying) then jump to drive_chatter_do_noise_effect | ||
996C | JR Z,drive_chatter_do_noise_effect | |||
996E | DEC A | If chatter_state was 0 (idle) then jump to drive_chatter_idle | ||
996F | JR NZ,drive_chatter_idle | |||
Otherwise chatter_state is 3 (stopping).
|
||||
9971 | LD HL,$963C | Decrement noise_counter in-place | ||
9974 | DEC (HL) | |||
9975 | LD A,(HL) | Load noise_counter | ||
9976 | JP NZ,ne_9a5c | Jump into noise_effect if it was non-zero | ||
9979 | LD ($963D),A | New chatter_state is 0 (idle) | ||
997C | CALL ne_plot_attrs | Call noise_plot_attrs to clear to black | ||
This is the flashing cursor.
|
||||
drive_chatter_idle | 997F | LD D,$20 | Plot a space character | |
9981 | LD A,$AA | Alternating bit generator: $AA rotated 1 becomes $55, $55 rotated 1 becomes $AA, and so on, result in carry flag | ||
9983 | RRCA | |||
9984 | LD ($9982),A | |||
9987 | LD A,$FF | (flag?) | ||
9989 | JP C,plot_mini_font_2 | Exit via plot_mini_font_2 if carry set | ||
998C | JP plot_mini_font_1 | Otherwise exit via plot_mini_font_1 | ||
drive_chatter_do_noise_effect | 998F | LD A,($963C) | If noise_counter > 0 exit via noise_effect | |
9992 | AND A | |||
9993 | JP NZ,noise_effect | |||
9996 | LD A,($9633) | If chatter_delay is zero jump to drive_chatter_clear_line | ||
9999 | AND A | |||
999A | JR Z,drive_chatter_clear_line | |||
999C | DEC A | Otherwise decrement chatter_delay | ||
999D | LD ($9633),A | |||
99A0 | LD B,A | Copy chatter_delay for later | ||
99A1 | JR Z,drive_chatter_99bd | If chatter_delay was zero jump to drive_chatter_99bd | ||
99A3 | LD HL,($962E) | Load address of next character | ||
99A6 | DEC HL | Go back 1 | ||
99A7 | LD D,(HL) | Load the character for when we call plot_mini_font* | ||
99A8 | RES 7,D | Clear string terminator bit | ||
99AA | LD A,($9632) | A = message_x - 1 | ||
99AD | DEC A | |||
99AE | RR B | Rotate chatter_delay (testing the bottom bit but why?) | ||
Could JP $9989 here instead.
|
||||
99B0 | JP C,plot_mini_font_2 | Exit via plot_mini_font_2 if carry set | ||
99B3 | JP plot_mini_font_1 | Otherwise exit via plot_mini_font_1 | ||
drive_chatter_clear_line | 99B6 | LD A,($9632) | If message_x != 0 exit via pc_clear_line | |
99B9 | AND A | |||
99BA | JP NZ,pc_clear_line | |||
drive_chatter_99bd | 99BD | LD HL,($9630) | Load message set address | |
99C0 | LD A,(HL) | Read a byte | ||
99C1 | CP $FF | Is it a message set terminator? Jump to drive_chatter_stop if so | ||
99C3 | JR Z,drive_chatter_stop | |||
An $FE byte means the next two bytes are the address of another message set.
|
||||
99C5 | CP $FE | Is it introducing a message set address? | ||
99C7 | JR NZ,pc_chatter_message | Exit via pc_chatter_message if not | ||
The next two bytes hold a message set address.
|
||||
99C9 | INC HL | Step over the $FE byte | ||
99CA | LD A,(HL) | message_set = wordat(HL) | ||
99CB | INC HL | |||
99CC | LD H,(HL) | |||
99CD | LD L,A | |||
99CE | LD ($9630),HL | |||
99D1 | JR drive_chatter_clear | Jump to drive_chatter_clear | ||
This entry point is used by the routines at run_pregame_screen and check_user_input.
|
||||
drive_chatter_stop | 99D3 | LD A,$04 | Set noise_counter to 4 | |
99D5 | LD ($963C),A | |||
99D8 | DEC A | Set chatter_state to 3 (stopping) | ||
99D9 | LD ($963D),A | |||
99DC | JP clear_message_line | Exit via clear_message_line | ||
drive_chatter_starting | 99DF | LD A,$02 | chatter_state = 2 (displaying) | |
99E1 | LD ($963D),A | |||
drive_chatter_clear | 99E4 | CALL clear_message_line | Call clear_message_line | |
99E7 | LD A,$04 | Set noise effect counter to 4 | ||
99E9 | JP noise_effect | Exit via noise_effect |
Prev: 9945 | Up: Map | Next: 99EC |