Routines |
Prev: 35141 | Up: Map | Next: 35393 |
|
||||||||
35293 | CALL 38116 | Set parameters for and play short downward scale sound... | ||||||
35296 | CALL 38116 | ...twice | ||||||
35299 | LD A,(23467) | Load A with 1 if Banshee is released, else load with 0... | ||||||
35302 | AND 1 | ... | ||||||
35304 | ADD A,11 | Set height of character selection menu window according to whether or not Banshee is free... | ||||||
35306 | LD (41901),A | ... | ||||||
35309 | LD A,3 | Display character selection menu... | ||||||
35311 | CALL 36979 | ... | ||||||
35314 | LD HL,44017 | Print "WHO DO YOU WANT TO..." text... | ||||||
35317 | CALL 36725 | ... | ||||||
35320 | POP HL | Restore HL (address to return to upon RET instruction)... | ||||||
35321 | EX (SP),HL | ...and swap with next value on stack (pointer to text that was PUSHed before this routine was called) | ||||||
35322 | CALL 36725 | Print the text | ||||||
35325 | LD HL,43221 | Set character at 43221 (letter preceding menu items) to "@" (i.e. the character immediately before "A")... | ||||||
35328 | LD A,64 | ... | ||||||
35330 | LD (HL),A | ... | ||||||
35331 | LD B,7 | Load B with 7 as there are initially 7 characters | ||||||
35333 | LD A,(23467) | If Banshee is not released... | ||||||
35336 | BIT 0,A | ... | ||||||
35338 | JR Z,35341 | ...then skip ahead to 35341 | ||||||
35340 | INC B | Add one as with Banshee free there are 8 characters | ||||||
35341 | LD A,B | Load number of characters into A... | ||||||
35342 | LD (35375),A | ...and use to modify instruction at 35374 | ||||||
35345 | XOR A | Set B to zero... | ||||||
35346 | LD B,A | ... | ||||||
35347 | PUSH AF | Store AF | ||||||
35348 | PUSH BC | Store BC | ||||||
35349 | LD (30615),A | Change Current Character to value in A | ||||||
35352 | LD A,B | Copy B into A | ||||||
35353 | ADD A,65 | Set character at 43221 (letter preceding menu items) to ASCII code of "A", plus index of character... | ||||||
35355 | LD (43221),A | ... | ||||||
35358 | LD HL,43220 | Point HL at this prefix text... | ||||||
35361 | CALL 36725 | ...and print it | ||||||
35364 | LD HL,34905 | Point HL to code to print full name of Current Character... | ||||||
35367 | CALL 36725 | ...and print it | ||||||
35370 | POP BC | Restore BC (B=current character number) | ||||||
35371 | INC B | Increase B for next character | ||||||
35372 | POP AF | Restore AF | ||||||
35373 | INC A | Increase A to count number characters printed in menu | ||||||
The operand of the instruction at 35374 represents the number of currently active characters in the game (excluding Magic Knight). This is modified by the instruction at 35342.
|
||||||||
35374 | CP 7 | If number of characters printed is not equal to number of characters to print... | ||||||
35376 | JR NZ,35347 | ...then loop back to 35347 for next character | ||||||
35378 | CALL 37333 | Process input for menu, and load ASCII code of shortcut for selected (i.e. SPACE or fire pressed) item into A | ||||||
35381 | SUB 65 | Subtract ASCII code of "A" from letter of character chosen to get index of selected character in A | ||||||
35383 | LD (30615),A | Set this to be the Current Character | ||||||
35386 | CALL 34896 | Print short name of Current Character in command summary window at bottom of screen | ||||||
35389 | CALL 35393 | Display warning and abort if command is not safe while Gimbal whited-out | ||||||
35392 | RET | Return |
Prev: 35141 | Up: Map | Next: 35393 |