You didn't look good enough in the script sources .
0DD1 requires address of the string (being used in pair with 0DD0) , not string itself
0DD2 can't be used with direct addresses because game lib have different load base in runtime
0DD3/4 sets/gets reg with num from 0 to 5 , no variable for reg num required
0DD8/9 if used with direct address must have image base added (add_ib flag set to 1) or if it's using address which was got using name via 0DD1 or via some pointer from the game in runtime then add_ib must be 0
The way it is is the easy one for the most users .
Does it freeze without cleo ? How much ram you device has ?