Хламидомонада / Говнокод #14343 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 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/)

Запостил: Yuuri Yuuri, (Updated )

Комментарии (9) RSS

    • Интересно, насколько тормазная подобная интерпретация?
      Ответить
      • Ну switch то шустрый должен получиться, если хаскель сделает его именно табличкой переходов. А быстрее свича ты, имхо, ничего и не придумаешь, только JIT.

        Ну и в конце-концов это же GameBoy, а не нинтендо64 или сонька какая-нибудь. Он и на javascript летать будет 😉
        Ответить
        • В рассылке как раз жалуются, что «that is still only 10% of real time speed on my computer. And all this is still without emulating most of the GB graphics hardware».
          И представлять сложные состояния километровыми кортежами значений, когда есть хотя бы структуры — это говновато вне зависимости от задачи и подхода. Например, в LazyNES (https://github.com/trez/LazyNES/blob/master/CPU/Definition.hs) всё гораздо лучше организовано.
          Ответить
  • Но он так всосался в мою шею, оставив, видимо, синяк, и стал меня всего сжимать, месить, что такие идиотские мысли спросоня прошли. Он обхватил мои бедра ногами и его вставший член упирался мне в мошонку.
    Ответить

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8