ゲームボーイのDAA(BCD)完全に理解した

なにもわからない。どこからともなくコピペして完全に敗北した。
BCD(Binary Coded Decimal)は16進数を10進数に変換したもの。
ゲームボーイではDAA命令を使って変換する。

0x9 -> 0x09
0xa -> 0x10
0xb -> 0x11
0x1a -> 0x20
0x2a -> 0x30

みたいな感じ。

以下正解。

let tmp = this.a;
if (this.negative == 0) {
  if (this.carry == 1 || tmp > 0x99) {
    tmp += 0x60;
    this.carry = 1;
  }
  if (this.half == 1 || (tmp & 0xf) > 0x9) {
    tmp += 0x06;
  }
} else {
  if (this.carry == 1) {
    tmp -= 0x60;
  }
  if (this.half == 1) {
    tmp -= 0x06;
  }
}
this.a = tmp & 0xff;
this.zero = this.a == 0;
this.half = 0;

よくわからなくてむかつくので全パターンはる。

negative = 0, half = 0, carry = 0
$00 -> $00
$01 -> $01
$02 -> $02
$03 -> $03
$04 -> $04
$05 -> $05
$06 -> $06
$07 -> $07
$08 -> $08
$09 -> $09
$0A -> $10
$0B -> $11
$0C -> $12
$0D -> $13
$0E -> $14
$0F -> $15
$10 -> $10
$11 -> $11
$12 -> $12
$13 -> $13
$14 -> $14
$15 -> $15
$16 -> $16
$17 -> $17
$18 -> $18
$19 -> $19
$1A -> $20
$1B -> $21
$1C -> $22
$1D -> $23
$1E -> $24
$1F -> $25
$20 -> $20
$21 -> $21
$22 -> $22
$23 -> $23
$24 -> $24
$25 -> $25
$26 -> $26
$27 -> $27
$28 -> $28
$29 -> $29
$2A -> $30
$2B -> $31
$2C -> $32
$2D -> $33
$2E -> $34
$2F -> $35
$30 -> $30
$31 -> $31
$32 -> $32
$33 -> $33
$34 -> $34
$35 -> $35
$36 -> $36
$37 -> $37
$38 -> $38
$39 -> $39
$3A -> $40
$3B -> $41
$3C -> $42
$3D -> $43
$3E -> $44
$3F -> $45
$40 -> $40
$41 -> $41
$42 -> $42
$43 -> $43
$44 -> $44
$45 -> $45
$46 -> $46
$47 -> $47
$48 -> $48
$49 -> $49
$4A -> $50
$4B -> $51
$4C -> $52
$4D -> $53
$4E -> $54
$4F -> $55
$50 -> $50
$51 -> $51
$52 -> $52
$53 -> $53
$54 -> $54
$55 -> $55
$56 -> $56
$57 -> $57
$58 -> $58
$59 -> $59
$5A -> $60
$5B -> $61
$5C -> $62
$5D -> $63
$5E -> $64
$5F -> $65
$60 -> $60
$61 -> $61
$62 -> $62
$63 -> $63
$64 -> $64
$65 -> $65
$66 -> $66
$67 -> $67
$68 -> $68
$69 -> $69
$6A -> $70
$6B -> $71
$6C -> $72
$6D -> $73
$6E -> $74
$6F -> $75
$70 -> $70
$71 -> $71
$72 -> $72
$73 -> $73
$74 -> $74
$75 -> $75
$76 -> $76
$77 -> $77
$78 -> $78
$79 -> $79
$7A -> $80
$7B -> $81
$7C -> $82
$7D -> $83
$7E -> $84
$7F -> $85
$80 -> $80
$81 -> $81
$82 -> $82
$83 -> $83
$84 -> $84
$85 -> $85
$86 -> $86
$87 -> $87
$88 -> $88
$89 -> $89
$8A -> $90
$8B -> $91
$8C -> $92
$8D -> $93
$8E -> $94
$8F -> $95
$90 -> $90
$91 -> $91
$92 -> $92
$93 -> $93
$94 -> $94
$95 -> $95
$96 -> $96
$97 -> $97
$98 -> $98
$99 -> $99
$9A -> $00
$9B -> $01
$9C -> $02
$9D -> $03
$9E -> $04
$9F -> $05
$A0 -> $00
$A1 -> $01
$A2 -> $02
$A3 -> $03
$A4 -> $04
$A5 -> $05
$A6 -> $06
$A7 -> $07
$A8 -> $08
$A9 -> $09
$AA -> $10
$AB -> $11
$AC -> $12
$AD -> $13
$AE -> $14
$AF -> $15
$B0 -> $10
$B1 -> $11
$B2 -> $12
$B3 -> $13
$B4 -> $14
$B5 -> $15
$B6 -> $16
$B7 -> $17
$B8 -> $18
$B9 -> $19
$BA -> $20
$BB -> $21
$BC -> $22
$BD -> $23
$BE -> $24
$BF -> $25
$C0 -> $20
$C1 -> $21
$C2 -> $22
$C3 -> $23
$C4 -> $24
$C5 -> $25
$C6 -> $26
$C7 -> $27
$C8 -> $28
$C9 -> $29
$CA -> $30
$CB -> $31
$CC -> $32
$CD -> $33
$CE -> $34
$CF -> $35
$D0 -> $30
$D1 -> $31
$D2 -> $32
$D3 -> $33
$D4 -> $34
$D5 -> $35
$D6 -> $36
$D7 -> $37
$D8 -> $38
$D9 -> $39
$DA -> $40
$DB -> $41
$DC -> $42
$DD -> $43
$DE -> $44
$DF -> $45
$E0 -> $40
$E1 -> $41
$E2 -> $42
$E3 -> $43
$E4 -> $44
$E5 -> $45
$E6 -> $46
$E7 -> $47
$E8 -> $48
$E9 -> $49
$EA -> $50
$EB -> $51
$EC -> $52
$ED -> $53
$EE -> $54
$EF -> $55
$F0 -> $50
$F1 -> $51
$F2 -> $52
$F3 -> $53
$F4 -> $54
$F5 -> $55
$F6 -> $56
$F7 -> $57
$F8 -> $58
$F9 -> $59
$FA -> $60
$FB -> $61
$FC -> $62
$FD -> $63
$FE -> $64
$FF -> $65

negative = 0, half = 0, carry = 1
$00 -> $60
$01 -> $61
$02 -> $62
$03 -> $63
$04 -> $64
$05 -> $65
$06 -> $66
$07 -> $67
$08 -> $68
$09 -> $69
$0A -> $70
$0B -> $71
$0C -> $72
$0D -> $73
$0E -> $74
$0F -> $75
$10 -> $70
$11 -> $71
$12 -> $72
$13 -> $73
$14 -> $74
$15 -> $75
$16 -> $76
$17 -> $77
$18 -> $78
$19 -> $79
$1A -> $80
$1B -> $81
$1C -> $82
$1D -> $83
$1E -> $84
$1F -> $85
$20 -> $80
$21 -> $81
$22 -> $82
$23 -> $83
$24 -> $84
$25 -> $85
$26 -> $86
$27 -> $87
$28 -> $88
$29 -> $89
$2A -> $90
$2B -> $91
$2C -> $92
$2D -> $93
$2E -> $94
$2F -> $95
$30 -> $90
$31 -> $91
$32 -> $92
$33 -> $93
$34 -> $94
$35 -> $95
$36 -> $96
$37 -> $97
$38 -> $98
$39 -> $99
$3A -> $A0
$3B -> $A1
$3C -> $A2
$3D -> $A3
$3E -> $A4
$3F -> $A5
$40 -> $A0
$41 -> $A1
$42 -> $A2
$43 -> $A3
$44 -> $A4
$45 -> $A5
$46 -> $A6
$47 -> $A7
$48 -> $A8
$49 -> $A9
$4A -> $B0
$4B -> $B1
$4C -> $B2
$4D -> $B3
$4E -> $B4
$4F -> $B5
$50 -> $B0
$51 -> $B1
$52 -> $B2
$53 -> $B3
$54 -> $B4
$55 -> $B5
$56 -> $B6
$57 -> $B7
$58 -> $B8
$59 -> $B9
$5A -> $C0
$5B -> $C1
$5C -> $C2
$5D -> $C3
$5E -> $C4
$5F -> $C5
$60 -> $C0
$61 -> $C1
$62 -> $C2
$63 -> $C3
$64 -> $C4
$65 -> $C5
$66 -> $C6
$67 -> $C7
$68 -> $C8
$69 -> $C9
$6A -> $D0
$6B -> $D1
$6C -> $D2
$6D -> $D3
$6E -> $D4
$6F -> $D5
$70 -> $D0
$71 -> $D1
$72 -> $D2
$73 -> $D3
$74 -> $D4
$75 -> $D5
$76 -> $D6
$77 -> $D7
$78 -> $D8
$79 -> $D9
$7A -> $E0
$7B -> $E1
$7C -> $E2
$7D -> $E3
$7E -> $E4
$7F -> $E5
$80 -> $E0
$81 -> $E1
$82 -> $E2
$83 -> $E3
$84 -> $E4
$85 -> $E5
$86 -> $E6
$87 -> $E7
$88 -> $E8
$89 -> $E9
$8A -> $F0
$8B -> $F1
$8C -> $F2
$8D -> $F3
$8E -> $F4
$8F -> $F5
$90 -> $F0
$91 -> $F1
$92 -> $F2
$93 -> $F3
$94 -> $F4
$95 -> $F5
$96 -> $F6
$97 -> $F7
$98 -> $F8
$99 -> $F9
$9A -> $00
$9B -> $01
$9C -> $02
$9D -> $03
$9E -> $04
$9F -> $05
$A0 -> $00
$A1 -> $01
$A2 -> $02
$A3 -> $03
$A4 -> $04
$A5 -> $05
$A6 -> $06
$A7 -> $07
$A8 -> $08
$A9 -> $09
$AA -> $10
$AB -> $11
$AC -> $12
$AD -> $13
$AE -> $14
$AF -> $15
$B0 -> $10
$B1 -> $11
$B2 -> $12
$B3 -> $13
$B4 -> $14
$B5 -> $15
$B6 -> $16
$B7 -> $17
$B8 -> $18
$B9 -> $19
$BA -> $20
$BB -> $21
$BC -> $22
$BD -> $23
$BE -> $24
$BF -> $25
$C0 -> $20
$C1 -> $21
$C2 -> $22
$C3 -> $23
$C4 -> $24
$C5 -> $25
$C6 -> $26
$C7 -> $27
$C8 -> $28
$C9 -> $29
$CA -> $30
$CB -> $31
$CC -> $32
$CD -> $33
$CE -> $34
$CF -> $35
$D0 -> $30
$D1 -> $31
$D2 -> $32
$D3 -> $33
$D4 -> $34
$D5 -> $35
$D6 -> $36
$D7 -> $37
$D8 -> $38
$D9 -> $39
$DA -> $40
$DB -> $41
$DC -> $42
$DD -> $43
$DE -> $44
$DF -> $45
$E0 -> $40
$E1 -> $41
$E2 -> $42
$E3 -> $43
$E4 -> $44
$E5 -> $45
$E6 -> $46
$E7 -> $47
$E8 -> $48
$E9 -> $49
$EA -> $50
$EB -> $51
$EC -> $52
$ED -> $53
$EE -> $54
$EF -> $55
$F0 -> $50
$F1 -> $51
$F2 -> $52
$F3 -> $53
$F4 -> $54
$F5 -> $55
$F6 -> $56
$F7 -> $57
$F8 -> $58
$F9 -> $59
$FA -> $60
$FB -> $61
$FC -> $62
$FD -> $63
$FE -> $64
$FF -> $65

negative = 0, half = 1, carry = 0
$00 -> $06
$01 -> $01
$02 -> $02
$03 -> $03
$04 -> $04
$05 -> $05
$06 -> $06
$07 -> $07
$08 -> $08
$09 -> $09
$0A -> $10
$0B -> $11
$0C -> $12
$0D -> $13
$0E -> $14
$0F -> $15
$10 -> $10
$11 -> $11
$12 -> $12
$13 -> $13
$14 -> $14
$15 -> $15
$16 -> $16
$17 -> $17
$18 -> $18
$19 -> $19
$1A -> $20
$1B -> $21
$1C -> $22
$1D -> $23
$1E -> $24
$1F -> $25
$20 -> $20
$21 -> $21
$22 -> $22
$23 -> $23
$24 -> $24
$25 -> $25
$26 -> $26
$27 -> $27
$28 -> $28
$29 -> $29
$2A -> $30
$2B -> $31
$2C -> $32
$2D -> $33
$2E -> $34
$2F -> $35
$30 -> $30
$31 -> $31
$32 -> $32
$33 -> $33
$34 -> $34
$35 -> $35
$36 -> $36
$37 -> $37
$38 -> $38
$39 -> $39
$3A -> $40
$3B -> $41
$3C -> $42
$3D -> $43
$3E -> $44
$3F -> $45
$40 -> $40
$41 -> $41
$42 -> $42
$43 -> $43
$44 -> $44
$45 -> $45
$46 -> $46
$47 -> $47
$48 -> $48
$49 -> $49
$4A -> $50
$4B -> $51
$4C -> $52
$4D -> $53
$4E -> $54
$4F -> $55
$50 -> $50
$51 -> $51
$52 -> $52
$53 -> $53
$54 -> $54
$55 -> $55
$56 -> $56
$57 -> $57
$58 -> $58
$59 -> $59
$5A -> $60
$5B -> $61
$5C -> $62
$5D -> $63
$5E -> $64
$5F -> $65
$60 -> $60
$61 -> $61
$62 -> $62
$63 -> $63
$64 -> $64
$65 -> $65
$66 -> $66
$67 -> $67
$68 -> $68
$69 -> $69
$6A -> $70
$6B -> $71
$6C -> $72
$6D -> $73
$6E -> $74
$6F -> $75
$70 -> $70
$71 -> $71
$72 -> $72
$73 -> $73
$74 -> $74
$75 -> $75
$76 -> $76
$77 -> $77
$78 -> $78
$79 -> $79
$7A -> $80
$7B -> $81
$7C -> $82
$7D -> $83
$7E -> $84
$7F -> $85
$80 -> $80
$81 -> $81
$82 -> $82
$83 -> $83
$84 -> $84
$85 -> $85
$86 -> $86
$87 -> $87
$88 -> $88
$89 -> $89
$8A -> $90
$8B -> $91
$8C -> $92
$8D -> $93
$8E -> $94
$8F -> $95
$90 -> $90
$91 -> $91
$92 -> $92
$93 -> $93
$94 -> $94
$95 -> $95
$96 -> $96
$97 -> $97
$98 -> $98
$99 -> $99
$9A -> $00
$9B -> $01
$9C -> $02
$9D -> $03
$9E -> $04
$9F -> $05
$A0 -> $00
$A1 -> $01
$A2 -> $02
$A3 -> $03
$A4 -> $04
$A5 -> $05
$A6 -> $06
$A7 -> $07
$A8 -> $08
$A9 -> $09
$AA -> $10
$AB -> $11
$AC -> $12
$AD -> $13
$AE -> $14
$AF -> $15
$B0 -> $10
$B1 -> $11
$B2 -> $12
$B3 -> $13
$B4 -> $14
$B5 -> $15
$B6 -> $16
$B7 -> $17
$B8 -> $18
$B9 -> $19
$BA -> $20
$BB -> $21
$BC -> $22
$BD -> $23
$BE -> $24
$BF -> $25
$C0 -> $20
$C1 -> $21
$C2 -> $22
$C3 -> $23
$C4 -> $24
$C5 -> $25
$C6 -> $26
$C7 -> $27
$C8 -> $28
$C9 -> $29
$CA -> $30
$CB -> $31
$CC -> $32
$CD -> $33
$CE -> $34
$CF -> $35
$D0 -> $30
$D1 -> $31
$D2 -> $32
$D3 -> $33
$D4 -> $34
$D5 -> $35
$D6 -> $36
$D7 -> $37
$D8 -> $38
$D9 -> $39
$DA -> $40
$DB -> $41
$DC -> $42
$DD -> $43
$DE -> $44
$DF -> $45
$E0 -> $40
$E1 -> $41
$E2 -> $42
$E3 -> $43
$E4 -> $44
$E5 -> $45
$E6 -> $46
$E7 -> $47
$E8 -> $48
$E9 -> $49
$EA -> $50
$EB -> $51
$EC -> $52
$ED -> $53
$EE -> $54
$EF -> $55
$F0 -> $50
$F1 -> $51
$F2 -> $52
$F3 -> $53
$F4 -> $54
$F5 -> $55
$F6 -> $56
$F7 -> $57
$F8 -> $58
$F9 -> $59
$FA -> $60
$FB -> $61
$FC -> $62
$FD -> $63
$FE -> $64
$FF -> $65

negative = 0, half = 1, carry = 1
$00 -> $66
$01 -> $61
$02 -> $62
$03 -> $63
$04 -> $64
$05 -> $65
$06 -> $66
$07 -> $67
$08 -> $68
$09 -> $69
$0A -> $70
$0B -> $71
$0C -> $72
$0D -> $73
$0E -> $74
$0F -> $75
$10 -> $70
$11 -> $71
$12 -> $72
$13 -> $73
$14 -> $74
$15 -> $75
$16 -> $76
$17 -> $77
$18 -> $78
$19 -> $79
$1A -> $80
$1B -> $81
$1C -> $82
$1D -> $83
$1E -> $84
$1F -> $85
$20 -> $80
$21 -> $81
$22 -> $82
$23 -> $83
$24 -> $84
$25 -> $85
$26 -> $86
$27 -> $87
$28 -> $88
$29 -> $89
$2A -> $90
$2B -> $91
$2C -> $92
$2D -> $93
$2E -> $94
$2F -> $95
$30 -> $90
$31 -> $91
$32 -> $92
$33 -> $93
$34 -> $94
$35 -> $95
$36 -> $96
$37 -> $97
$38 -> $98
$39 -> $99
$3A -> $A0
$3B -> $A1
$3C -> $A2
$3D -> $A3
$3E -> $A4
$3F -> $A5
$40 -> $A0
$41 -> $A1
$42 -> $A2
$43 -> $A3
$44 -> $A4
$45 -> $A5
$46 -> $A6
$47 -> $A7
$48 -> $A8
$49 -> $A9
$4A -> $B0
$4B -> $B1
$4C -> $B2
$4D -> $B3
$4E -> $B4
$4F -> $B5
$50 -> $B0
$51 -> $B1
$52 -> $B2
$53 -> $B3
$54 -> $B4
$55 -> $B5
$56 -> $B6
$57 -> $B7
$58 -> $B8
$59 -> $B9
$5A -> $C0
$5B -> $C1
$5C -> $C2
$5D -> $C3
$5E -> $C4
$5F -> $C5
$60 -> $C0
$61 -> $C1
$62 -> $C2
$63 -> $C3
$64 -> $C4
$65 -> $C5
$66 -> $C6
$67 -> $C7
$68 -> $C8
$69 -> $C9
$6A -> $D0
$6B -> $D1
$6C -> $D2
$6D -> $D3
$6E -> $D4
$6F -> $D5
$70 -> $D0
$71 -> $D1
$72 -> $D2
$73 -> $D3
$74 -> $D4
$75 -> $D5
$76 -> $D6
$77 -> $D7
$78 -> $D8
$79 -> $D9
$7A -> $E0
$7B -> $E1
$7C -> $E2
$7D -> $E3
$7E -> $E4
$7F -> $E5
$80 -> $E0
$81 -> $E1
$82 -> $E2
$83 -> $E3
$84 -> $E4
$85 -> $E5
$86 -> $E6
$87 -> $E7
$88 -> $E8
$89 -> $E9
$8A -> $F0
$8B -> $F1
$8C -> $F2
$8D -> $F3
$8E -> $F4
$8F -> $F5
$90 -> $F0
$91 -> $F1
$92 -> $F2
$93 -> $F3
$94 -> $F4
$95 -> $F5
$96 -> $F6
$97 -> $F7
$98 -> $F8
$99 -> $F9
$9A -> $00
$9B -> $01
$9C -> $02
$9D -> $03
$9E -> $04
$9F -> $05
$A0 -> $00
$A1 -> $01
$A2 -> $02
$A3 -> $03
$A4 -> $04
$A5 -> $05
$A6 -> $06
$A7 -> $07
$A8 -> $08
$A9 -> $09
$AA -> $10
$AB -> $11
$AC -> $12
$AD -> $13
$AE -> $14
$AF -> $15
$B0 -> $10
$B1 -> $11
$B2 -> $12
$B3 -> $13
$B4 -> $14
$B5 -> $15
$B6 -> $16
$B7 -> $17
$B8 -> $18
$B9 -> $19
$BA -> $20
$BB -> $21
$BC -> $22
$BD -> $23
$BE -> $24
$BF -> $25
$C0 -> $20
$C1 -> $21
$C2 -> $22
$C3 -> $23
$C4 -> $24
$C5 -> $25
$C6 -> $26
$C7 -> $27
$C8 -> $28
$C9 -> $29
$CA -> $30
$CB -> $31
$CC -> $32
$CD -> $33
$CE -> $34
$CF -> $35
$D0 -> $30
$D1 -> $31
$D2 -> $32
$D3 -> $33
$D4 -> $34
$D5 -> $35
$D6 -> $36
$D7 -> $37
$D8 -> $38
$D9 -> $39
$DA -> $40
$DB -> $41
$DC -> $42
$DD -> $43
$DE -> $44
$DF -> $45
$E0 -> $40
$E1 -> $41
$E2 -> $42
$E3 -> $43
$E4 -> $44
$E5 -> $45
$E6 -> $46
$E7 -> $47
$E8 -> $48
$E9 -> $49
$EA -> $50
$EB -> $51
$EC -> $52
$ED -> $53
$EE -> $54
$EF -> $55
$F0 -> $50
$F1 -> $51
$F2 -> $52
$F3 -> $53
$F4 -> $54
$F5 -> $55
$F6 -> $56
$F7 -> $57
$F8 -> $58
$F9 -> $59
$FA -> $60
$FB -> $61
$FC -> $62
$FD -> $63
$FE -> $64
$FF -> $65

negative = 1, half = 0, carry = 0
$00 -> $00
$01 -> $01
$02 -> $02
$03 -> $03
$04 -> $04
$05 -> $05
$06 -> $06
$07 -> $07
$08 -> $08
$09 -> $09
$0A -> $0A
$0B -> $0B
$0C -> $0C
$0D -> $0D
$0E -> $0E
$0F -> $0F
$10 -> $10
$11 -> $11
$12 -> $12
$13 -> $13
$14 -> $14
$15 -> $15
$16 -> $16
$17 -> $17
$18 -> $18
$19 -> $19
$1A -> $1A
$1B -> $1B
$1C -> $1C
$1D -> $1D
$1E -> $1E
$1F -> $1F
$20 -> $20
$21 -> $21
$22 -> $22
$23 -> $23
$24 -> $24
$25 -> $25
$26 -> $26
$27 -> $27
$28 -> $28
$29 -> $29
$2A -> $2A
$2B -> $2B
$2C -> $2C
$2D -> $2D
$2E -> $2E
$2F -> $2F
$30 -> $30
$31 -> $31
$32 -> $32
$33 -> $33
$34 -> $34
$35 -> $35
$36 -> $36
$37 -> $37
$38 -> $38
$39 -> $39
$3A -> $3A
$3B -> $3B
$3C -> $3C
$3D -> $3D
$3E -> $3E
$3F -> $3F
$40 -> $40
$41 -> $41
$42 -> $42
$43 -> $43
$44 -> $44
$45 -> $45
$46 -> $46
$47 -> $47
$48 -> $48
$49 -> $49
$4A -> $4A
$4B -> $4B
$4C -> $4C
$4D -> $4D
$4E -> $4E
$4F -> $4F
$50 -> $50
$51 -> $51
$52 -> $52
$53 -> $53
$54 -> $54
$55 -> $55
$56 -> $56
$57 -> $57
$58 -> $58
$59 -> $59
$5A -> $5A
$5B -> $5B
$5C -> $5C
$5D -> $5D
$5E -> $5E
$5F -> $5F
$60 -> $60
$61 -> $61
$62 -> $62
$63 -> $63
$64 -> $64
$65 -> $65
$66 -> $66
$67 -> $67
$68 -> $68
$69 -> $69
$6A -> $6A
$6B -> $6B
$6C -> $6C
$6D -> $6D
$6E -> $6E
$6F -> $6F
$70 -> $70
$71 -> $71
$72 -> $72
$73 -> $73
$74 -> $74
$75 -> $75
$76 -> $76
$77 -> $77
$78 -> $78
$79 -> $79
$7A -> $7A
$7B -> $7B
$7C -> $7C
$7D -> $7D
$7E -> $7E
$7F -> $7F
$80 -> $80
$81 -> $81
$82 -> $82
$83 -> $83
$84 -> $84
$85 -> $85
$86 -> $86
$87 -> $87
$88 -> $88
$89 -> $89
$8A -> $8A
$8B -> $8B
$8C -> $8C
$8D -> $8D
$8E -> $8E
$8F -> $8F
$90 -> $90
$91 -> $91
$92 -> $92
$93 -> $93
$94 -> $94
$95 -> $95
$96 -> $96
$97 -> $97
$98 -> $98
$99 -> $99
$9A -> $9A
$9B -> $9B
$9C -> $9C
$9D -> $9D
$9E -> $9E
$9F -> $9F
$A0 -> $A0
$A1 -> $A1
$A2 -> $A2
$A3 -> $A3
$A4 -> $A4
$A5 -> $A5
$A6 -> $A6
$A7 -> $A7
$A8 -> $A8
$A9 -> $A9
$AA -> $AA
$AB -> $AB
$AC -> $AC
$AD -> $AD
$AE -> $AE
$AF -> $AF
$B0 -> $B0
$B1 -> $B1
$B2 -> $B2
$B3 -> $B3
$B4 -> $B4
$B5 -> $B5
$B6 -> $B6
$B7 -> $B7
$B8 -> $B8
$B9 -> $B9
$BA -> $BA
$BB -> $BB
$BC -> $BC
$BD -> $BD
$BE -> $BE
$BF -> $BF
$C0 -> $C0
$C1 -> $C1
$C2 -> $C2
$C3 -> $C3
$C4 -> $C4
$C5 -> $C5
$C6 -> $C6
$C7 -> $C7
$C8 -> $C8
$C9 -> $C9
$CA -> $CA
$CB -> $CB
$CC -> $CC
$CD -> $CD
$CE -> $CE
$CF -> $CF
$D0 -> $D0
$D1 -> $D1
$D2 -> $D2
$D3 -> $D3
$D4 -> $D4
$D5 -> $D5
$D6 -> $D6
$D7 -> $D7
$D8 -> $D8
$D9 -> $D9
$DA -> $DA
$DB -> $DB
$DC -> $DC
$DD -> $DD
$DE -> $DE
$DF -> $DF
$E0 -> $E0
$E1 -> $E1
$E2 -> $E2
$E3 -> $E3
$E4 -> $E4
$E5 -> $E5
$E6 -> $E6
$E7 -> $E7
$E8 -> $E8
$E9 -> $E9
$EA -> $EA
$EB -> $EB
$EC -> $EC
$ED -> $ED
$EE -> $EE
$EF -> $EF
$F0 -> $F0
$F1 -> $F1
$F2 -> $F2
$F3 -> $F3
$F4 -> $F4
$F5 -> $F5
$F6 -> $F6
$F7 -> $F7
$F8 -> $F8
$F9 -> $F9
$FA -> $FA
$FB -> $FB
$FC -> $FC
$FD -> $FD
$FE -> $FE
$FF -> $FF

negative = 1, half = 0, carry = 1
$00 -> $A0
$01 -> $A1
$02 -> $A2
$03 -> $A3
$04 -> $A4
$05 -> $A5
$06 -> $A6
$07 -> $A7
$08 -> $A8
$09 -> $A9
$0A -> $AA
$0B -> $AB
$0C -> $AC
$0D -> $AD
$0E -> $AE
$0F -> $AF
$10 -> $B0
$11 -> $B1
$12 -> $B2
$13 -> $B3
$14 -> $B4
$15 -> $B5
$16 -> $B6
$17 -> $B7
$18 -> $B8
$19 -> $B9
$1A -> $BA
$1B -> $BB
$1C -> $BC
$1D -> $BD
$1E -> $BE
$1F -> $BF
$20 -> $C0
$21 -> $C1
$22 -> $C2
$23 -> $C3
$24 -> $C4
$25 -> $C5
$26 -> $C6
$27 -> $C7
$28 -> $C8
$29 -> $C9
$2A -> $CA
$2B -> $CB
$2C -> $CC
$2D -> $CD
$2E -> $CE
$2F -> $CF
$30 -> $D0
$31 -> $D1
$32 -> $D2
$33 -> $D3
$34 -> $D4
$35 -> $D5
$36 -> $D6
$37 -> $D7
$38 -> $D8
$39 -> $D9
$3A -> $DA
$3B -> $DB
$3C -> $DC
$3D -> $DD
$3E -> $DE
$3F -> $DF
$40 -> $E0
$41 -> $E1
$42 -> $E2
$43 -> $E3
$44 -> $E4
$45 -> $E5
$46 -> $E6
$47 -> $E7
$48 -> $E8
$49 -> $E9
$4A -> $EA
$4B -> $EB
$4C -> $EC
$4D -> $ED
$4E -> $EE
$4F -> $EF
$50 -> $F0
$51 -> $F1
$52 -> $F2
$53 -> $F3
$54 -> $F4
$55 -> $F5
$56 -> $F6
$57 -> $F7
$58 -> $F8
$59 -> $F9
$5A -> $FA
$5B -> $FB
$5C -> $FC
$5D -> $FD
$5E -> $FE
$5F -> $FF
$60 -> $00
$61 -> $01
$62 -> $02
$63 -> $03
$64 -> $04
$65 -> $05
$66 -> $06
$67 -> $07
$68 -> $08
$69 -> $09
$6A -> $0A
$6B -> $0B
$6C -> $0C
$6D -> $0D
$6E -> $0E
$6F -> $0F
$70 -> $10
$71 -> $11
$72 -> $12
$73 -> $13
$74 -> $14
$75 -> $15
$76 -> $16
$77 -> $17
$78 -> $18
$79 -> $19
$7A -> $1A
$7B -> $1B
$7C -> $1C
$7D -> $1D
$7E -> $1E
$7F -> $1F
$80 -> $20
$81 -> $21
$82 -> $22
$83 -> $23
$84 -> $24
$85 -> $25
$86 -> $26
$87 -> $27
$88 -> $28
$89 -> $29
$8A -> $2A
$8B -> $2B
$8C -> $2C
$8D -> $2D
$8E -> $2E
$8F -> $2F
$90 -> $30
$91 -> $31
$92 -> $32
$93 -> $33
$94 -> $34
$95 -> $35
$96 -> $36
$97 -> $37
$98 -> $38
$99 -> $39
$9A -> $3A
$9B -> $3B
$9C -> $3C
$9D -> $3D
$9E -> $3E
$9F -> $3F
$A0 -> $40
$A1 -> $41
$A2 -> $42
$A3 -> $43
$A4 -> $44
$A5 -> $45
$A6 -> $46
$A7 -> $47
$A8 -> $48
$A9 -> $49
$AA -> $4A
$AB -> $4B
$AC -> $4C
$AD -> $4D
$AE -> $4E
$AF -> $4F
$B0 -> $50
$B1 -> $51
$B2 -> $52
$B3 -> $53
$B4 -> $54
$B5 -> $55
$B6 -> $56
$B7 -> $57
$B8 -> $58
$B9 -> $59
$BA -> $5A
$BB -> $5B
$BC -> $5C
$BD -> $5D
$BE -> $5E
$BF -> $5F
$C0 -> $60
$C1 -> $61
$C2 -> $62
$C3 -> $63
$C4 -> $64
$C5 -> $65
$C6 -> $66
$C7 -> $67
$C8 -> $68
$C9 -> $69
$CA -> $6A
$CB -> $6B
$CC -> $6C
$CD -> $6D
$CE -> $6E
$CF -> $6F
$D0 -> $70
$D1 -> $71
$D2 -> $72
$D3 -> $73
$D4 -> $74
$D5 -> $75
$D6 -> $76
$D7 -> $77
$D8 -> $78
$D9 -> $79
$DA -> $7A
$DB -> $7B
$DC -> $7C
$DD -> $7D
$DE -> $7E
$DF -> $7F
$E0 -> $80
$E1 -> $81
$E2 -> $82
$E3 -> $83
$E4 -> $84
$E5 -> $85
$E6 -> $86
$E7 -> $87
$E8 -> $88
$E9 -> $89
$EA -> $8A
$EB -> $8B
$EC -> $8C
$ED -> $8D
$EE -> $8E
$EF -> $8F
$F0 -> $90
$F1 -> $91
$F2 -> $92
$F3 -> $93
$F4 -> $94
$F5 -> $95
$F6 -> $96
$F7 -> $97
$F8 -> $98
$F9 -> $99
$FA -> $9A
$FB -> $9B
$FC -> $9C
$FD -> $9D
$FE -> $9E
$FF -> $9F

negative = 1, half = 1, carry = 0
$00 -> $FA
$01 -> $01
$02 -> $02
$03 -> $03
$04 -> $04
$05 -> $05
$06 -> $06
$07 -> $07
$08 -> $08
$09 -> $09
$0A -> $0A
$0B -> $0B
$0C -> $0C
$0D -> $0D
$0E -> $0E
$0F -> $0F
$10 -> $10
$11 -> $11
$12 -> $12
$13 -> $13
$14 -> $14
$15 -> $15
$16 -> $16
$17 -> $17
$18 -> $18
$19 -> $19
$1A -> $1A
$1B -> $1B
$1C -> $1C
$1D -> $1D
$1E -> $1E
$1F -> $1F
$20 -> $20
$21 -> $21
$22 -> $22
$23 -> $23
$24 -> $24
$25 -> $25
$26 -> $26
$27 -> $27
$28 -> $28
$29 -> $29
$2A -> $2A
$2B -> $2B
$2C -> $2C
$2D -> $2D
$2E -> $2E
$2F -> $2F
$30 -> $30
$31 -> $31
$32 -> $32
$33 -> $33
$34 -> $34
$35 -> $35
$36 -> $36
$37 -> $37
$38 -> $38
$39 -> $39
$3A -> $3A
$3B -> $3B
$3C -> $3C
$3D -> $3D
$3E -> $3E
$3F -> $3F
$40 -> $40
$41 -> $41
$42 -> $42
$43 -> $43
$44 -> $44
$45 -> $45
$46 -> $46
$47 -> $47
$48 -> $48
$49 -> $49
$4A -> $4A
$4B -> $4B
$4C -> $4C
$4D -> $4D
$4E -> $4E
$4F -> $4F
$50 -> $50
$51 -> $51
$52 -> $52
$53 -> $53
$54 -> $54
$55 -> $55
$56 -> $56
$57 -> $57
$58 -> $58
$59 -> $59
$5A -> $5A
$5B -> $5B
$5C -> $5C
$5D -> $5D
$5E -> $5E
$5F -> $5F
$60 -> $60
$61 -> $61
$62 -> $62
$63 -> $63
$64 -> $64
$65 -> $65
$66 -> $66
$67 -> $67
$68 -> $68
$69 -> $69
$6A -> $6A
$6B -> $6B
$6C -> $6C
$6D -> $6D
$6E -> $6E
$6F -> $6F
$70 -> $70
$71 -> $71
$72 -> $72
$73 -> $73
$74 -> $74
$75 -> $75
$76 -> $76
$77 -> $77
$78 -> $78
$79 -> $79
$7A -> $7A
$7B -> $7B
$7C -> $7C
$7D -> $7D
$7E -> $7E
$7F -> $7F
$80 -> $80
$81 -> $81
$82 -> $82
$83 -> $83
$84 -> $84
$85 -> $85
$86 -> $86
$87 -> $87
$88 -> $88
$89 -> $89
$8A -> $8A
$8B -> $8B
$8C -> $8C
$8D -> $8D
$8E -> $8E
$8F -> $8F
$90 -> $90
$91 -> $91
$92 -> $92
$93 -> $93
$94 -> $94
$95 -> $95
$96 -> $96
$97 -> $97
$98 -> $98
$99 -> $99
$9A -> $9A
$9B -> $9B
$9C -> $9C
$9D -> $9D
$9E -> $9E
$9F -> $9F
$A0 -> $A0
$A1 -> $A1
$A2 -> $A2
$A3 -> $A3
$A4 -> $A4
$A5 -> $A5
$A6 -> $A6
$A7 -> $A7
$A8 -> $A8
$A9 -> $A9
$AA -> $AA
$AB -> $AB
$AC -> $AC
$AD -> $AD
$AE -> $AE
$AF -> $AF
$B0 -> $B0
$B1 -> $B1
$B2 -> $B2
$B3 -> $B3
$B4 -> $B4
$B5 -> $B5
$B6 -> $B6
$B7 -> $B7
$B8 -> $B8
$B9 -> $B9
$BA -> $BA
$BB -> $BB
$BC -> $BC
$BD -> $BD
$BE -> $BE
$BF -> $BF
$C0 -> $C0
$C1 -> $C1
$C2 -> $C2
$C3 -> $C3
$C4 -> $C4
$C5 -> $C5
$C6 -> $C6
$C7 -> $C7
$C8 -> $C8
$C9 -> $C9
$CA -> $CA
$CB -> $CB
$CC -> $CC
$CD -> $CD
$CE -> $CE
$CF -> $CF
$D0 -> $D0
$D1 -> $D1
$D2 -> $D2
$D3 -> $D3
$D4 -> $D4
$D5 -> $D5
$D6 -> $D6
$D7 -> $D7
$D8 -> $D8
$D9 -> $D9
$DA -> $DA
$DB -> $DB
$DC -> $DC
$DD -> $DD
$DE -> $DE
$DF -> $DF
$E0 -> $E0
$E1 -> $E1
$E2 -> $E2
$E3 -> $E3
$E4 -> $E4
$E5 -> $E5
$E6 -> $E6
$E7 -> $E7
$E8 -> $E8
$E9 -> $E9
$EA -> $EA
$EB -> $EB
$EC -> $EC
$ED -> $ED
$EE -> $EE
$EF -> $EF
$F0 -> $F0
$F1 -> $F1
$F2 -> $F2
$F3 -> $F3
$F4 -> $F4
$F5 -> $F5
$F6 -> $F6
$F7 -> $F7
$F8 -> $F8
$F9 -> $F9
$FA -> $FA
$FB -> $FB
$FC -> $FC
$FD -> $FD
$FE -> $FE
$FF -> $FF

negative = 1, half = 1, carry = 1
$00 -> $9A
$01 -> $A1
$02 -> $A2
$03 -> $A3
$04 -> $A4
$05 -> $A5
$06 -> $A6
$07 -> $A7
$08 -> $A8
$09 -> $A9
$0A -> $AA
$0B -> $AB
$0C -> $AC
$0D -> $AD
$0E -> $AE
$0F -> $AF
$10 -> $B0
$11 -> $B1
$12 -> $B2
$13 -> $B3
$14 -> $B4
$15 -> $B5
$16 -> $B6
$17 -> $B7
$18 -> $B8
$19 -> $B9
$1A -> $BA
$1B -> $BB
$1C -> $BC
$1D -> $BD
$1E -> $BE
$1F -> $BF
$20 -> $C0
$21 -> $C1
$22 -> $C2
$23 -> $C3
$24 -> $C4
$25 -> $C5
$26 -> $C6
$27 -> $C7
$28 -> $C8
$29 -> $C9
$2A -> $CA
$2B -> $CB
$2C -> $CC
$2D -> $CD
$2E -> $CE
$2F -> $CF
$30 -> $D0
$31 -> $D1
$32 -> $D2
$33 -> $D3
$34 -> $D4
$35 -> $D5
$36 -> $D6
$37 -> $D7
$38 -> $D8
$39 -> $D9
$3A -> $DA
$3B -> $DB
$3C -> $DC
$3D -> $DD
$3E -> $DE
$3F -> $DF
$40 -> $E0
$41 -> $E1
$42 -> $E2
$43 -> $E3
$44 -> $E4
$45 -> $E5
$46 -> $E6
$47 -> $E7
$48 -> $E8
$49 -> $E9
$4A -> $EA
$4B -> $EB
$4C -> $EC
$4D -> $ED
$4E -> $EE
$4F -> $EF
$50 -> $F0
$51 -> $F1
$52 -> $F2
$53 -> $F3
$54 -> $F4
$55 -> $F5
$56 -> $F6
$57 -> $F7
$58 -> $F8
$59 -> $F9
$5A -> $FA
$5B -> $FB
$5C -> $FC
$5D -> $FD
$5E -> $FE
$5F -> $FF
$60 -> $00
$61 -> $01
$62 -> $02
$63 -> $03
$64 -> $04
$65 -> $05
$66 -> $06
$67 -> $07
$68 -> $08
$69 -> $09
$6A -> $0A
$6B -> $0B
$6C -> $0C
$6D -> $0D
$6E -> $0E
$6F -> $0F
$70 -> $10
$71 -> $11
$72 -> $12
$73 -> $13
$74 -> $14
$75 -> $15
$76 -> $16
$77 -> $17
$78 -> $18
$79 -> $19
$7A -> $1A
$7B -> $1B
$7C -> $1C
$7D -> $1D
$7E -> $1E
$7F -> $1F
$80 -> $20
$81 -> $21
$82 -> $22
$83 -> $23
$84 -> $24
$85 -> $25
$86 -> $26
$87 -> $27
$88 -> $28
$89 -> $29
$8A -> $2A
$8B -> $2B
$8C -> $2C
$8D -> $2D
$8E -> $2E
$8F -> $2F
$90 -> $30
$91 -> $31
$92 -> $32
$93 -> $33
$94 -> $34
$95 -> $35
$96 -> $36
$97 -> $37
$98 -> $38
$99 -> $39
$9A -> $3A
$9B -> $3B
$9C -> $3C
$9D -> $3D
$9E -> $3E
$9F -> $3F
$A0 -> $40
$A1 -> $41
$A2 -> $42
$A3 -> $43
$A4 -> $44
$A5 -> $45
$A6 -> $46
$A7 -> $47
$A8 -> $48
$A9 -> $49
$AA -> $4A
$AB -> $4B
$AC -> $4C
$AD -> $4D
$AE -> $4E
$AF -> $4F
$B0 -> $50
$B1 -> $51
$B2 -> $52
$B3 -> $53
$B4 -> $54
$B5 -> $55
$B6 -> $56
$B7 -> $57
$B8 -> $58
$B9 -> $59
$BA -> $5A
$BB -> $5B
$BC -> $5C
$BD -> $5D
$BE -> $5E
$BF -> $5F
$C0 -> $60
$C1 -> $61
$C2 -> $62
$C3 -> $63
$C4 -> $64
$C5 -> $65
$C6 -> $66
$C7 -> $67
$C8 -> $68
$C9 -> $69
$CA -> $6A
$CB -> $6B
$CC -> $6C
$CD -> $6D
$CE -> $6E
$CF -> $6F
$D0 -> $70
$D1 -> $71
$D2 -> $72
$D3 -> $73
$D4 -> $74
$D5 -> $75
$D6 -> $76
$D7 -> $77
$D8 -> $78
$D9 -> $79
$DA -> $7A
$DB -> $7B
$DC -> $7C
$DD -> $7D
$DE -> $7E
$DF -> $7F
$E0 -> $80
$E1 -> $81
$E2 -> $82
$E3 -> $83
$E4 -> $84
$E5 -> $85
$E6 -> $86
$E7 -> $87
$E8 -> $88
$E9 -> $89
$EA -> $8A
$EB -> $8B
$EC -> $8C
$ED -> $8D
$EE -> $8E
$EF -> $8F
$F0 -> $90
$F1 -> $91
$F2 -> $92
$F3 -> $93
$F4 -> $94
$F5 -> $95
$F6 -> $96
$F7 -> $97
$F8 -> $98
$F9 -> $99
$FA -> $9A
$FB -> $9B
$FC -> $9C
$FD -> $9D
$FE -> $9E
$FF -> $9F

以下失敗。 公式マニュアルのパターンテーブルをべた書きしたのが以下。

const n = this.negative == 1;
const c = this.carry == 1;
const h = this.half == 1;
const m = this.a >> 4 & 0xf;
const l = this.a & 0xf;

const b08 = (b: number): boolean => b >= 0 && b <= 8;
const b09 = (b: number): boolean => b >= 0 && b <= 9;
const baf = (b: number): boolean => b >= 0xa && b <= 0xf;
const b9f = (b: number): boolean => b >= 9 && b <= 0xf;
const b02 = (b: number): boolean => b >= 0 && b <= 2;
const b03 = (b: number): boolean => b >= 0 && b <= 3;
const b7f = (b: number): boolean => b >= 7 && b <= 0xf;
const b6f = (b: number): boolean => b >= 6 && b <= 0xf;

if (!n && !c && !h && b09(m) && b09(l)) {
  this.carry = 0;
} else if (!n && !c && !h && b08(m) && baf(l)) {
  this.a += 0x6;
  this.carry = 0;
} else if (!n && !c && h && b09(m) && b03(l)) {
  this.a += 0x6;
  this.carry = 0;
} else if (!n && !c && !h && baf(m) && b09(l)) {
  this.a += 0x60;
  this.carry = 1;
} else if (!n && !c && !h && b9f(m) && baf(l)) {
  this.a += 0x66;
  this.carry = 1;
} else if (!n && !c && h && baf(m) && b03(l)) {
  this.a += 0x66;
  this.carry = 1;
} else if (!n && c && !h && b02(m) && b09(l)) {
  this.a += 0x60;
  this.carry = 1;
} else if (!n && c && !h && b02(m) && baf(l)) {
  this.a += 0x66;
  this.carry = 1;
} else if (!n && c && h && b03(m) && b03(l)) {
  this.a += 0x66;
  this.carry = 1;
} else if (n && !c && !h && b09(m) && b09(l)) {
  this.carry = 0;
} else if (n && !c && h && b08(m) && b6f(l)) {
  this.a += 0xfa;
  this.carry = 0;
} else if (n && c && !h && b7f(m) && b09(l)) {
  this.a += 0xa0;
  this.carry = 1;
} else if (n && c && h && b6f(m) && b6f(l)) {
  this.a += 0x9a;
  this.carry = 1;
}
this.a &= 0xff;

公式コピペしたのにテスト通らないってどういうことよ。 公式でちがうんだからもう、何にも知らない。もう、何にも知らない。 他にも色々なところからコピペしたり自分で考えたりしてきた。以下続失敗。

let a = this.a;
let h = (this.a >> 4) & 0b1111;
let l = this.a & 0b1111;

if (this.negative == 0) {
  if (this.carry == 0) {
    if (this.half == 0) {
      if (h >= 0 && h <= 8) {
        if (l >= 0 && l <= 9) {
          this.carry = 0;
        } else {
          this.a = this._add_u8(this.a,0x6);
          this.carry = 0;
        }
      } else if (h == 9) {
        if (l >= 0 && l <= 9) {
          this.carry = 0;
        } else {
          this.a = this._add_u8(this.a,0x66);
          this.carry = 1;
        }
      } else {
        if (l >= 0 && l <= 9) {
          this.a = this._add_u8(this.a,0x60);
          this.carry = 1;
        } else {
          this.a = this._add_u8(this.a,0x66);
          this.carry = 1;
        }
      }
    } else {
      if (h >= 0 && h <= 8) {
        if (l >= 0 && l <= 15) {
          this.a = this._add_u8(this.a,0x06);
          this.carry = 0;
        }
      } else if (h == 9) {
        if (l >= 0 && l <= 9) {
          this.a = this._add_u8(this.a,0x06);
          this.carry = 0;
        } else {
          this.a = this._add_u8(this.a,0x66);
          this.carry = 1;
        }
      } else {
        if (l >= 0 && l <= 15) {
          this.a = this._add_u8(this.a,0x66);
          this.carry = 1;
        }
      }
    }
  } else {
    if (this.half == 0) {
      if (l >= 0 && l <= 9) {
        this.a = this._add_u8(this.a,0x60);
        this.carry = 1;
      } else {
        this.a = this._add_u8(this.a,0x66);
        this.carry = 1;
      }
    } else {
      this.a = this._add_u8(this.a,0x66);
      this.carry = 1;
    }
  }
} else {
  if (this.carry == 0) {
    if (this.half == 0) {
      if (h >= 0 && h <= 8) {
        if (l >= 0 && l <= 9) {
          this.carry = 0;
        } else {
          this.a = this._add_u8(this.a,0xfa);
          this.carry = 0;
        }
      } else if (h == 9) {
        if (l >= 0 && l <= 9) {
          this.carry = 0;
        } else {
          this.a = this._add_u8(this.a,0x9a);
          this.carry = 1;
        }
      } else {
        if (l >= 0 && l <= 9) {
          this.a = this._add_u8(this.a,0xa0);
          this.carry = 1;
        } else {
          this.a = this._add_u8(this.a,0x9a);
          this.carry = 1;
        }
      }
    } else {
      if (h >= 0 && h <= 8) {
        if (l >= 0 && l <= 15) {
          this.a = this._add_u8(this.a,0xfa);
          this.carry = 0;
        }
      } else if (h == 9) {
        if (l >= 0 && l <= 9) {
          this.a = this._add_u8(this.a,0xfa);
          this.carry = 0;
        } else {
          this.a = this._add_u8(this.a,0x9a);
          this.carry = 1;
        }
      } else {
        if (l >= 0 && l <= 15) {
          this.a = this._add_u8(this.a,0x9a);
          this.carry = 1;
        }
      }
    }
  } else {
    if (this.half == 0) {
      if (l >= 0 && l <= 9) {
        this.a = this._add_u8(this.a,0xa0);
        this.carry = 1;
      } else {
        this.a = this._add_u8(this.a,0x9a);
        this.carry = 1;
      }
    } else {
      this.a = this._add_u8(this.a,0x9a);
      this.carry = 1;
    }
  }
}
let t = 0;
if (this.half == 1 || l > 9) {
  t++;
}
if (this.carry == 1 || a > 0x99) {
  t += 2;
  this.carry = 1;
}
if (this.negative == 1 && this.half == 0) {
  //this.half = 0;
} else {
  if (this.negative == 1 && this.half == 1) {
    //this.half = l < 6 ? 1 : 0;
  } else {
    //this.half = l >= 0xa ? 1 : 0;
  }
}
let f = this.f;
switch (t) {
  case 1:
    this.a = this._add_u8(this.a, this.negative == 1 ? 0xfa : 0x06);
    break;
  case 2:
    this.a = this._add_u8(this.a, this.negative == 1 ? 0xa0 : 0x60);
    break;
  case 3:
    this.a = this._add_u8(this.a, this.negative == 1 ? 0x9a : 0x66);
    break;
}
this.f = f;
if (this.negative == 0) {
  if (this.half == 1 || l >= 0xa) {
    this.a = this._add_u8(this.a,0x6);
  }
  if (this.carry == 1 || this.a >= 0xa0) {
    this.a = this._add_u8(this.a,0x60);
  }
} else {
  if (this.half == 1 || l >= 0xa) {
    this.a = this._sub_u8(this.a,0x6);
  }
  if (this.carry == 1 || this.a >= 0xa0) {
    this.a = this._sub_u8(this.a,0x60);
  }
}

結局どこぞのエミュのコードコピペして敗北感すごい。 BCDまったくわからない。