You can always add main unit in uses clause. And for avoiding ciclick dependancies you do it in implementation part of your state units.
So for instance you have UMain unit as general game unit and several other units each for its own state.
For you to be able to create theese state objects you need to add theese units into uses section of your UMain file.
But if you wanna acces objects and variables declared which are in UMain file from theese state units you add UMain file into uses section which you declare in implementation section:
Code:
...
implementation
uses UMain //Main game unit
...
Do not add UMain unit into uses section on top of your states units othevise you will cause cicklic redundancies (compiler won't be able to figure out which units need which) and you won't be able to compile your project.