The problem will be that 8-bit graphics modes have values in memory 0-255, so this corresponds to the values in the ASCII table.
But 32-bit screens use pixels, not codes from the ASCII table.
The solution is to keep both screens in memory and always copy the 8-bit one to the 32-bit one before displaying it and release it from memory after displaying it.
Ideas like "I'll compare pixels and determine the character number based on that" will fail. It's enough to have graphics under the text, different colors of the letters' pixels, or just change the font... Moreover, in 32-bit mode, the text can start anywhere, but on a text screen, it's strictly defined. Even if you place the text on an 8-bit screen outside the place where Locate would place it, even SCREEN won't read it.
change printstring position and try it...
But 32-bit screens use pixels, not codes from the ASCII table.
The solution is to keep both screens in memory and always copy the 8-bit one to the 32-bit one before displaying it and release it from memory after displaying it.
Ideas like "I'll compare pixels and determine the character number based on that" will fail. It's enough to have graphics under the text, different colors of the letters' pixels, or just change the font... Moreover, in 32-bit mode, the text can start anywhere, but on a text screen, it's strictly defined. Even if you place the text on an 8-bit screen outside the place where Locate would place it, even SCREEN won't read it.
Code: (Select All)
Screen _NewImage(640, 480, 256)
'Locate 10, 10: Print "TEST"
_PrintString (72, 144), "TEST" 'the same position as Locate 10, 10 <---- try use (73, 144)
'Line (50, 120)-(78, 160), , BF
For a = 1 To 4
a$ = a$ + Chr$(Screen(10, 9 + a))
Next a
Locate 12, 10: Print a$ '<-- Output is, as expected, TEST.
change printstring position and try it...

