|  | Routines | 
| Prev: 35689 | Up: Map | Next: 36008 | 
| 
Used by the routine at 35689.
 
 | ||||||||
| 35735 | BIT 7,(IX+9) | If Berk's moving-upwards flag (floating power) is set... | ||||||
| 35739 | JP NZ,36542 | ...then jump to 36542 (update state of Berk, floating power active) | ||||||
| 35742 | BIT 0,(IX+9) | If Berk's must-process-current-script-data flag is set... | ||||||
| 35746 | JP NZ,48096 | ...then jump to 48096 (advance HL to next script instruction and execute) | ||||||
| 35749 | LD A,(34208) | If Drutt-mode flag is set... | ||||||
| 35752 | BIT 0,A | ... | ||||||
| 35754 | JP NZ,35577 | ...then jump to 35577 (change direction Berk is facing depending upon relative position of Drutt) | ||||||
| 
Drutt-mode flag is reset (i.e. Berk mode)
 | ||||||||
| 35757 | LD A,(34219) | Load A with control input | ||||||
| 35760 | BIT 0,A | If right has been pressed... | ||||||
| 35762 | JP NZ,36214 | ...then skip ahead to 36214 (move Berk right if appropriate) | ||||||
| 35765 | BIT 1,A | If left has been pressed... | ||||||
| 35767 | JP NZ,36137 | ...then skip ahead to 36137 (move Berk left if appropriate) | ||||||
| 35770 | CALL 54283 | Move Berk into new room (left or right) if he is at the edge of his current room | ||||||
| 35773 | LD A,(34219) | Load A with control input | ||||||
| 35776 | BIT 2,A | If forward has been pressed... | ||||||
| 35778 | JP NZ,36036 | ...then skip ahead to 36036 (update state of Berk, forward pressed) | ||||||
| 35781 | BIT 3,A | If back has been pressed... | ||||||
| 35783 | JP NZ,35827 | ...then skip ahead to 35827 | ||||||
| 35786 | BIT 6,(IX+9) | If Berk is not flying... | ||||||
| 35790 | JR Z,35802 | ...then skip ahead to 35802 | ||||||
| 
Berk is flying
 | ||||||||
| 35792 | RES 6,(IX+9) | Reset Berk's is-flying flag | ||||||
| 35796 | LD HL,35359 | Point HL at script data for Berk starting to fall downwards... | ||||||
| 35799 | JP 48098 | ...and execute | ||||||
| 
No control pressed and Berk not flying
 | ||||||||
| 35802 | BIT 1,(IX+9) | If Berk's facing-into-screen flag is reset... | ||||||
| 35806 | JR Z,35821 | ...then skip ahead to 35821 | ||||||
| 
No control pressed, Berk not flying and Berk's facing-into-screen flag is set
 | ||||||||
| 35808 | BIT 3,(IX+11) | If Berk's unused-(11,3) flag is reset... | ||||||
| 35812 | JP Z,48096 | ...then jump to 48096 (advance HL to next script instruction and execute) | ||||||
| 
This entry point is used by the routine at 35577.
 
No control pressed, Berk not flying, Berk's facing-into-screen and unused-(11,3) flags are set
 | ||||||||
| 35815 | LD HL,35113 | Point HL at script data for Berk facing into screen, ready to respond to control input... | ||||||
| 35818 | JP 48098 | ...and execute | ||||||
| 
This entry point is used by the routine at 35577.
 
No control pressed, Berk not flying and Berk's facing-into-screen flag is reset
 | ||||||||
| 35821 | LD HL,35081 | Point HL at script data for Berk facing out of screen, ready to respond to control input... | ||||||
| 35824 | JP 48098 | ...and execute | ||||||
| 
Back pressed
 | ||||||||
| 35827 | BIT 6,(IX+9) | If Berk is flying... | ||||||
| 35831 | JP NZ,48096 | ...then jump to 48096 (advance HL to next script instruction and execute) | ||||||
| 35834 | CALL 36008 | If Berk is holding an edible entity them make him eat it, process appropriate script data and return to calling routine | ||||||
| 35837 | DEC (IX+4) | Temporarily decrease y-coordinate of Berk's top edge | ||||||
| 35840 | CALL 54890 | Check entity at IX for collision with another entity (in reverse order) at next depth level into screen whose interaction-(11,7) flag is set | ||||||
| 35843 | PUSH AF | Store AF | ||||||
| 35844 | INC (IX+4) | Restore y-coordinate of Berk's top edge | ||||||
| 35847 | POP AF | Restore AF | ||||||
| 35848 | JR C,35953 | If no collision occurred, then skip ahead to 35953 | ||||||
| 35850 | CP 33 | If collision was not with an entity of class 33 (door)... | ||||||
| 35852 | JR NZ,35870 | ...then skip ahead 35870 | ||||||
| 
Collision with door
 | ||||||||
| 35854 | CALL 36116 | If Berk is not horizontally aligned with door then move him closer and exit this routine | ||||||
| 
Berk is now horizontally aligned with door
 | ||||||||
| 35857 | CALL 36367 | If Berk is neither facing into the screen nor walking then exit this routine and have Berk turn into screen | ||||||
| 35860 | LD (34256),IY | Store address of complex state data for door at 34256 | ||||||
| 35864 | LD HL,35017 | Point HL at script data for Berk interacting with a door behind him... | ||||||
| 35867 | JP 48098 | ...and execute | ||||||
| 
Collision with something other than door
 | ||||||||
| 35870 | CP 22 | If collision was with an entity of class of 22 or greater (can't be picked up)... | ||||||
| 35872 | JR NC,35924 | ...then skip ahead to 35924 | ||||||
| 
Collision with entity that can be picked up
 | ||||||||
| 35874 | BIT 4,(IX+9) | If Berk is already carrying something... | ||||||
| 35878 | JP NZ,35953 | ...then skip ahead to 35953 | ||||||
| 35881 | CALL 36116 | If Berk is not horizontally aligned with entity then move him closer and exit this routine | ||||||
| 
Berk is now horizontally aligned with entity pointed to by IY
 | ||||||||
| 35884 | CALL 36367 | If Berk is neither facing into the screen nor walking then exit this routine and have Berk turn into screen | ||||||
| 35887 | LD (34256),IY | Store address of complex state data for entity at 34256 | ||||||
| 35891 | LD B,(IX+6) | Load B with y-coordinate of Berk's bottom edge... | ||||||
| 35894 | DEC B | ...minus 1 (to take into account different depth) | ||||||
| 35895 | LD A,(IY+6) | Load A with y-coordinate of entity's bottom edge... | ||||||
| 35898 | CP (IX+4) | ...and if this is less than the y-coordinate of Berk's top edge... | ||||||
| 35901 | JR C,35918 | ...then skip ahead to 35918 | ||||||
| 
Entity is not above Berk
 | ||||||||
| 35903 | CP B | If entity's bottom edge is level with Berk's (taking into account different depth)... | ||||||
| 35904 | JR Z,35912 | ...then skip ahead to 35912 | ||||||
| 
Entity is above floor and below Berk's top edge
 | ||||||||
| 35906 | LD HL,35163 | Point HL at script data for Berk picking up an entity that is above floor and below Berk's top edge and behind him... | ||||||
| 35909 | JP 48098 | ...and execute | ||||||
| 
Entity is on floor behind Berk
 | ||||||||
| 35912 | LD HL,35135 | Point HL at script data for Berk picking up an entity on floor behind him... | ||||||
| 35915 | JP 48098 | ...and execute | ||||||
| 
Entity is above Berk
 | ||||||||
| 35918 | LD HL,35149 | Point HL at script data for Berk picking up an entity above and behind him... | ||||||
| 35921 | JP 48098 | ...and execute | ||||||
| 
Collision with something that can't be picked up
 | ||||||||
| 35924 | CP 32 | If collision was not with entity of class 32 (coloured creatures' slots, level 3)... | ||||||
| 35926 | JR NZ,35953 | ...then skip ahead to 35953 | ||||||
| 
Collision with a coloured creature slot
 | ||||||||
| 35928 | BIT 4,(IX+9) | If Berk is not carrying anything... | ||||||
| 35932 | JR Z,35953 | ...then skip ahead to 35953 | ||||||
| 
Berk is carrying something
 | ||||||||
| 35934 | CALL 36116 | If Berk is not horizontally aligned with coloured creature slot then move him closer and exit this routine | ||||||
| 
Berk is now horizontally aligned with coloured creature slot and carrying something
 | ||||||||
| 35937 | CALL 36367 | If Berk is neither facing into the screen nor walking then exit this routine and have Berk turn into screen | ||||||
| 35940 | LD A,(IY+4) | Load A with y-coordinate of top edge of coloured creature slot... (see trivia) | ||||||
| 35943 | DEC A | ...minus 1... | ||||||
| 35944 | LD (34222),A | ...and store at 34222 | ||||||
| 35947 | LD HL,35235 | Point HL at script data for Berk putting an entity down above floor behind him... | ||||||
| 35950 | JP 48098 | ...and execute | ||||||
| 
No collision, collision with non-interactive entity or interaction conditions not met
 | ||||||||
| 35953 | LD A,(34220) | If Berk has no current power... | ||||||
| 35956 | OR A | ... | ||||||
| 35957 | JR Z,35969 | ...then skip ahead to 35969 | ||||||
| 35959 | CP 4 | If Berk's current power is 1-3 (jumping)... | ||||||
| 35961 | JP C,35995 | ...then skip ahead to 35995 | ||||||
| 35964 | CP 9 | If Berk's current power is 4-8 (flying)... | ||||||
| 35966 | JP C,35985 | ...then skip ahead to 35985 | ||||||
| 
Berk has neither jumping nor flying power
 | ||||||||
| 35969 | BIT 4,(IX+9) | If Berk is not carrying anything... | ||||||
| 35973 | JP Z,35786 | ...then jump to 35786 (terminate Berk's flight, or have him (turn to) face out of screen as appropriate) | ||||||
| 
Berk is carrying something
 | ||||||||
| 35976 | CALL 36367 | If Berk is neither facing into the screen nor walking then exit this routine and have Berk turn into screen | ||||||
| 35979 | LD HL,35219 | Point HL at script data for Berk putting an entity down on floor behind him... | ||||||
| 35982 | JP 48098 | ...and execute | ||||||
| 
Berk's current power is flying
 | ||||||||
| 35985 | SET 6,(IX+9) | Set Berk's is-flying flag | ||||||
| 35989 | LD HL,35417 | Point HL at script data for Berk starting to fly... | ||||||
| 35992 | JP 48098 | ...and execute | ||||||
| 
Berk's current power is jumping
 | ||||||||
| 35995 | CALL 36296 | Make Berk drop the entity he is holding and load IY with its complex state data address | ||||||
| 35998 | LD (IX+12),129 | Set Berk's is-jumping flag and set initial jump velocity to 1 | ||||||
| 36002 | LD HL,35441 | Point HL at script data for Berk starting to jump straight up... | ||||||
| 36005 | JP 48098 | ...and execute | ||||||
| Prev: 35689 | Up: Map | Next: 36008 |