2011-03-01 56 views
4

在Gameboy Z80上,LD HL,(SP+e)操作如何影響H和C標誌? (半進+利差)GBZ80:LD HL(SP + e)如何影響H和C標誌?

參考:http://www.devrs.com/gb/files/opcodes.html

+0

他們很可能設置爲每個SP + e'的'的結果,除非我我錯過了什麼? – ninjalj 2011-03-02 01:26:58

+0

它有用嗎?或者它只是它在處理器上的實現方式?我真的不明白爲什麼有人會對這些信息感興趣。 – 2011-03-02 15:01:39

+0

我猜猜想神器。但這只是一個猜測。 – ninjalj 2011-03-02 19:46:26

回答

10

我意識到這是一個老問題,但我有一個類似的問題,前一段時間,只是想添加我的解決方案,因爲絕對沒有文檔或開源模擬器這對我的知識是正確的。花了我一些真正的遊戲玩家的實際調試來找到解決方案。

對於這16位SP + S8(符號立即)操作:

,如果有從7日至8位溢出時,進位標誌設置。

如果存在從第3位到第4位的溢出,則設置半進位標誌。

我發現它更容易爲雙方正負符號即時(LUA)單獨做的行爲:

local D8 = self:Read(self.PC+1) 
local S8 = ((D8&127)-(D8&128)) 
local SP = self.SP + S8 

if S8 >= 0 then 
    self.Cf = ((self.SP & 0xFF) + (S8)) > 0xFF 
    self.Hf = ((self.SP & 0xF) + (S8 & 0xF)) > 0xF 
else 
    self.Cf = (SP & 0xFF) <= (self.SP & 0xFF) 
    self.Hf = (SP & 0xF) <= (self.SP & 0xF) 
end