Routines |
Prev: A373 | Up: Map | Next: A3BB |
This finds the charstruct, or vischar, of the specified character index (A) and stores the route (A',C) in it.
Used by the routines at event_search_light, set_prisoners_and_guards_route and set_prisoners_and_guards_route_B.
|
||||||||||||||||
set_character_route | A38C | CALL get_character_struct | Get a pointer to the character struct in HL for character index A | |||||||||||||
A38F | BIT 6,(HL) | Is the character on-screen? characterstruct_FLAG_ON_SCREEN | ||||||||||||||
A391 | JP Z,set_character_struct_route | It's not - jump to characterstruct setting code | ||||||||||||||
set_vischar_route | A394 | PUSH BC | Save route step | |||||||||||||
A395 | LD A,(HL) | A = *HL & characterstruct_CHARACTER_MASK; | ||||||||||||||
A396 | AND $1F | |||||||||||||||
Search non-player characters to see if this character is already on-screen.
|
||||||||||||||||
A398 | LD B,$07 | There are seven non-player vischars | ||||||||||||||
A39A | LD DE,$0020 | Prepare the vischar stride | ||||||||||||||
A39D | LD HL,$8020 | Point HL at the second visible character | ||||||||||||||
Start loop
|
||||||||||||||||
set_character_route_0 | A3A0 | CP (HL) | Is this the character we want? | |||||||||||||
A3A1 | JR Z,set_character_route_vischar_found | Jump if so | ||||||||||||||
A3A3 | ADD HL,DE | Advance the vischar pointer | ||||||||||||||
A3A4 | DJNZ set_character_route_0 | ...loop | ||||||||||||||
A3A6 | POP BC | Restore | ||||||||||||||
A3A7 | JR set_character_route_exit | Jump to exit (note: why not just RET here?) | ||||||||||||||
A3A9 | DEFB $19 | Unreferenced byte | ||||||||||||||
set_character_struct_route | A3AA | INC HL | Advance HL to point to the characterstruct's route | |||||||||||||
A3AB | INC HL | |||||||||||||||
A3AC | INC HL | |||||||||||||||
A3AD | INC HL | |||||||||||||||
A3AE | INC HL | |||||||||||||||
A3AF | CALL store_route | Store the route at HL | ||||||||||||||
set_character_route_exit | A3B2 | RET | Return | |||||||||||||
set_character_route_vischar_found | A3B3 | POP BC | Restore route step | |||||||||||||
A3B4 | INC L | Reset vischar_FLAGS_TARGET_IS_DOOR flag | ||||||||||||||
A3B5 | RES 6,(HL) | |||||||||||||||
A3B7 | INC L | |||||||||||||||
A3B8 | CALL store_route | Store the route at HL | ||||||||||||||
FALL THROUGH into set_route.
|
Prev: A373 | Up: Map | Next: A3BB |