math: Added carry flag for m16
authorLukas Krickl <lukas@krickl.dev>
Mon, 2 Feb 2026 16:36:42 +0000 (17:36 +0100)
committerLukas Krickl <lukas@krickl.dev>
Mon, 2 Feb 2026 16:36:42 +0000 (17:36 +0100)
src/attributes.s
src/defs.s
src/math.s
src/wram.s

index f70e9d30c21f6779b27e4f5baa25c08d5bacaae9..ed325fb31551364adb189f3f61a308d53abaf0f1 100644 (file)
@@ -152,6 +152,13 @@ act_attr_take_weapon_damage:
 
        pop de
        call act_attr_write_hp
+       
+       BREAK
+       ; if m16_flags carry is set 
+       ; -> die
+       ld a, [m16_flags]
+       and a, M16_CARRY
+       ret z ; no carry?
 
        call act_die
        ret
index 9e8e307305a62b6d56210b10db09c53af1d06caa..7584686cae9fed1ebd34f7d6d258068c7cd6ef32 100644 (file)
 .de os_data, (OS_WIDTH * OS_HEIGHT)
 .de os_size, 0
 
+
+       ; 16 bit math flags
+.se 1
+.de M16_CARRY, 1
index c83aed80e58dacb762b634159b266ebe9b3919cb..caec83841b5a132bbec1061dda25f5fd52800be7 100644 (file)
        ;               m16_a/m16_b
        ;       returns:
        ;               m16_a: m16_a + m16_b
+       ;               m16_flags
 m16_add:
+       xor a, a
+       ld [m16_flags], a
+
        ld a, [m16_b]
        ld b, a
        ld a, [m16_a]
@@ -69,6 +73,11 @@ m16_add:
        ; high + carry stored
        adc a, b
        ld [m16_a+1], a
+       ret nc ; no carry? good to exit
+
+       ; when carry is set -> set flag
+       ld a, M16_CARRY
+       ld [m16_flags], a
 
        ret
 
@@ -77,7 +86,11 @@ m16_add:
        ;               m16_a/m16_b
        ;       returns:
        ;               m16_a: m16_a - m16_b
+       ;               m16_flags
 m16_sub:
+       xor a, a
+       ld [m16_flags], a
+
        ld a, [m16_b]
        ld b, a
        ld a, [m16_a]
@@ -93,4 +106,10 @@ m16_sub:
        ; high + carry stored
        sbc a, b
        ld [m16_a+1], a
+       ret nc
+
+       ; when carry is set -> set flag
+       ld a, M16_CARRY
+       ld [m16_flags], a
+
        ret
index b30b9a17def482af99f31bfd011ecd45e739946d..9099c76dd49073e7f3ef8e294dca4207fadc2348 100644 (file)
@@ -146,6 +146,8 @@ col_x: .adv 1
        ; store in LE
 m16_a: .adv 2
 m16_b: .adv 2
+       ; flags for 16 bit math
+m16_flags: .adv 1
 
 ticks: .adv 1