You've already forked pokecrystal-board
mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2025-04-09 05:44:44 -07:00
Bit 6 of PrintNum left-aligns numbers
This commit is contained in:
@@ -13,12 +13,12 @@ PrintBCDNumber::
|
||||
; Note that bits 5 and 7 are modified during execution. The above reflects
|
||||
; their meaning at the beginning of the functions's execution.
|
||||
ld b, c ; save flags in b
|
||||
res 7, c
|
||||
res 6, c
|
||||
res 5, c ; c now holds the length
|
||||
bit 5, b
|
||||
res PRINTNUM_LEADINGZEROS_F, c
|
||||
res PRINTNUM_LEFTALIGN_F, c
|
||||
res PRINTNUM_MONEY_F, c ; c now holds the length
|
||||
bit PRINTNUM_MONEY_F, b
|
||||
jr z, .loop
|
||||
bit 7, b
|
||||
bit PRINTNUM_LEADINGZEROS_F, b
|
||||
jr nz, .loop ; skip currency symbol
|
||||
ld [hl], "¥"
|
||||
inc hl
|
||||
@@ -31,14 +31,14 @@ PrintBCDNumber::
|
||||
inc de
|
||||
dec c
|
||||
jr nz, .loop
|
||||
bit 7, b ; were any non-zero digits printed?
|
||||
bit PRINTNUM_LEADINGZEROS_F, b
|
||||
jr z, .done ; if so, we are done
|
||||
.numberEqualsZero ; if every digit of the BCD number is zero
|
||||
bit 6, b ; left or right alignment?
|
||||
jr nz, .skipRightAlignmentAdjustment
|
||||
dec hl ; if the string is right-aligned, it needs to be moved back one space
|
||||
.skipRightAlignmentAdjustment
|
||||
bit 5, b
|
||||
bit PRINTNUM_LEFTALIGN_F, b
|
||||
jr nz, .skipLeftAlignmentAdjustment
|
||||
dec hl ; if the string is left-aligned, it needs to be moved back one space
|
||||
.skipLeftAlignmentAdjustment
|
||||
bit PRINTNUM_MONEY_F, b
|
||||
jr z, .skipCurrencySymbol
|
||||
ld [hl], "¥" ; currency symbol
|
||||
inc hl
|
||||
@@ -54,25 +54,25 @@ PrintBCDDigit::
|
||||
and a
|
||||
jr z, .zeroDigit
|
||||
.nonzeroDigit
|
||||
bit 7, b ; have any non-space characters been printed?
|
||||
bit PRINTNUM_LEADINGZEROS_F, b ; have any non-space characters been printed?
|
||||
jr z, .outputDigit
|
||||
; if bit 7 is set, then no numbers have been printed yet
|
||||
bit 5, b ; print the currency symbol?
|
||||
bit PRINTNUM_MONEY_F, b
|
||||
jr z, .skipCurrencySymbol
|
||||
ld [hl], "¥"
|
||||
inc hl
|
||||
res 5, b
|
||||
res PRINTNUM_MONEY_F, b
|
||||
.skipCurrencySymbol
|
||||
res 7, b ; unset 7 to indicate that a nonzero digit has been reached
|
||||
res PRINTNUM_LEADINGZEROS_F, b ; unset 7 to indicate that a nonzero digit has been reached
|
||||
.outputDigit
|
||||
add "0"
|
||||
ld [hli], a
|
||||
jp PrintLetterDelay
|
||||
|
||||
.zeroDigit
|
||||
bit 7, b ; either printing leading zeroes or already reached a nonzero digit?
|
||||
bit PRINTNUM_LEADINGZEROS_F, b ; either printing leading zeroes or already reached a nonzero digit?
|
||||
jr z, .outputDigit ; if so, print a zero digit
|
||||
bit 6, b ; left or right alignment?
|
||||
bit PRINTNUM_LEFTALIGN_F, b
|
||||
ret nz
|
||||
ld a, " "
|
||||
ld [hli], a ; if right-aligned, "print" a space by advancing the pointer
|
||||
|
@@ -8,12 +8,12 @@ PrintLevel::
|
||||
; How many digits?
|
||||
ld c, 2
|
||||
cp 100 ; This is distinct from MAX_LEVEL.
|
||||
jr c, Print8BitNumRightAlign
|
||||
jr c, Print8BitNumLeftAlign
|
||||
|
||||
; 3-digit numbers overwrite the :L.
|
||||
dec hl
|
||||
inc c
|
||||
jr Print8BitNumRightAlign
|
||||
jr Print8BitNumLeftAlign
|
||||
|
||||
PrintLevel_Force3Digits::
|
||||
; Print :L and all 3 digits
|
||||
@@ -21,8 +21,8 @@ PrintLevel_Force3Digits::
|
||||
inc hl
|
||||
ld c, 3
|
||||
|
||||
Print8BitNumRightAlign::
|
||||
Print8BitNumLeftAlign::
|
||||
ld [wDeciramBuffer], a
|
||||
ld de, wDeciramBuffer
|
||||
ld b, PRINTNUM_RIGHTALIGN | 1
|
||||
ld b, PRINTNUM_LEFTALIGN | 1
|
||||
jp PrintNum
|
||||
|
@@ -896,7 +896,7 @@ TextCommand_NUM::
|
||||
ld a, b
|
||||
and $f0
|
||||
swap a
|
||||
set PRINTNUM_RIGHTALIGN_F, a
|
||||
set PRINTNUM_LEFTALIGN_F, a
|
||||
ld b, a
|
||||
call PrintNum
|
||||
ld b, h
|
||||
|
Reference in New Issue
Block a user