- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
setRegState :: RegisterStates -> M_Register -> Word8 -> RegisterStates
setRegState rs r n =
let (a, b, c, d, e, f, h, l, pc, sp) = rs in
case r of
M_A -> (n, b, c, d, e, f, h, l, pc, sp)
M_B -> (a, n, c, d, e, f, h, l, pc, sp)
M_C -> (a, b, n, d, e, f, h, l, pc, sp)
M_D -> (a, b, c, n, e, f, h, l, pc, sp)
M_E -> (a, b, c, d, n, f, h, l, pc, sp)
M_F -> (a, b, c, d, e, n.&.0xF0, h, l, pc, sp)
M_H -> (a, b, c, d, e, f, n, l, pc, sp)
M_L -> (a, b, c, d, e, f, h, n, pc, sp)
Haskell has no boilerplate.
Из исходников заброшенного эмулятора GameBoy (https://github.com/bitc/omegagb/)
LispGovno 11.01.2014 00:17 # +8
Anderson 11.01.2014 03:01 # −2
Dummy00001 12.01.2014 21:13 # +3
https://github.com/bitc/omegagb/blob/master/src/CpuIO.hs
LispGovno 12.01.2014 21:34 # +1
bormand 12.01.2014 21:39 # +1
Ну и в конце-концов это же GameBoy, а не нинтендо64 или сонька какая-нибудь. Он и на javascript летать будет ;)
Dummy00001 12.01.2014 21:41 # +1
bormand 12.01.2014 21:43 # +1
Yuuri 13.01.2014 15:57 # +1
И представлять сложные состояния километровыми кортежами значений, когда есть хотя бы структуры — это говновато вне зависимости от задачи и подхода. Например, в LazyNES (https://github.com/trez/LazyNES/blob/master/CPU/Definition.hs) всё гораздо лучше организовано.
cpZFbWH 25.08.2021 02:56 # 0