The difference is screen mode.
In your first code, you’re doing this:
SCREEN 0
blah = _RGB...
blahblah = _RGB...
SCREEN _NEWIMAGE(x, y, 32)
Now, what value does those variables hold?
Since it’s for a screen 0 text screen, (the screen used before _RGB was called), those color values are going to be something from 0 to 15. (The only foreground values we have available...)
Now, when you swap to a 32-bit screen, is there *any* reason why those values would change??
Nope! They’re still going to be the same as before — and in 32 bit mode, what *is* COLOR 15?
It’s 0 Alpha, 0 Red, 0 Green, 15 Blue — It’s almost a fully transparent black!
*****************
RGB32, however, *doesn’t* care what screen mode you’re in. It only returns the 32-bit color value for the _RGB(Red, Green, Blue) you specify.
_RGB gives you the closest match possible for your current screen mode and palette. _RGB32 only returns back 32-bit color values. It’s an inherent difference in the nature of the commands.