c $7D04 This routine is called after a spell is cast... C $7D04 return if unknown1 is less than 6 C $7D0A store address of map object codes table in position of cursor C $7D10 load B with $9F (159) - the first table contains the object code for the item in each cell of the screen and is 320 bytes long C $7D12 stack loop counter C $7D13 load first byte of map object codes into A and jump further into routine ($7D3B) if A is outside the range 2 to 33 inclusive C $7D1E load DE with offset $0281 (641) and add DE to HL so that it points at the second table which contains ??? C $7D22 read byte pointed to by HL into A C $7D23 subtract $29 (41) from A C $7D25 jump further into routine ($7D3B) if A holds the same value as the current player (0-7) variable C $7D2B point HL at the map object codes table (address $$E01F/57375), load DE with $01E1 (481) and add to HL so that it points into the second half of the second table? C $7D32 load byte pointed to by HL into A C $7D33 mask to keep the bottom three bits in A C $7D35 jump to routine at $7D52 if A holds the same value as the current player variable C $7D3B pop loop counter C $7D3C point HL at the "position of cursor" variable C $7D3F increment HL C $7D40 store HL in "position of cursor" variable C $7D43 loop back to $7D12 158 times C $7D45 point HL at 9th byte in the 16 byte table at $AC16 C $7D48 load D with 0 C $7D4A load value of "current player (0-7)" into A C $7D4D store A in E C $7D4E add DE to HL (so current player offsets HL) C $7D4F store $14 in byte pointed to by HL C $7D51 return