“未经验证的一段数据作为代码运行会造成严重后果”,游戏卡带也是一样,因为接触不良或是数据储存芯片出错可能会导致严重的问题,简单的ROM校验可以算是解决这类问题的最简单的手段。任天堂在设计GB的时候也加入了ROM校验,GBSpec是这么描述的:
014D Complement check
(PROGRAM WON'T RUN ON GB IF NOT CORRECT!!!)
(It will run on Super GB, however, if incorrect.)
014E-014F Checksum (higher byte first) produced by
adding all bytes of a cartridge except for two
checksum bytes and taking two lower bytes of
the result. (GameBoy ignores this value.)
其中0X14D到0X14F就是校验的内容了,尤其是0X014D,要想在实际的硬件上运行是一定要正确的。那么具体这两个值是如何计算的呢?
代码如下: