Yes it should be. Moving to mysql.
I'm not sure if you can use a case within an on update clause, but you can use an if:
INSERT INTO opl_comp(gamename, gamecode, region, mode, vmc, smb, hdd, usb, notes, comp) VALUES ('$gamename', '$cleangc', '$region', '$mode', '$vmc', '$smb', '$hdd', '$usb', '$notes', '$comp')
ON DUPLICATE KEY UPDATE
gamename = IF(gamename = '', $gamename, gamename),
region = IF(gamename = '', $region, region),
Old pedant may have some better ideas for this as well.