You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
1.4 KiB
98 lines
1.4 KiB
; Update the character hint objects |
|
update_hint_markings: |
|
ld hl, BKG_LOC_9800 + 20*32 + 6 |
|
ld de, guesses_hints |
|
|
|
ld b, 6 |
|
.loop_outer: |
|
ld c, 5 |
|
.loop_inner: |
|
ld a, [de] |
|
ld [hl], a |
|
inc hl |
|
inc hl |
|
inc de |
|
dec c |
|
ld a, c |
|
cp a, 0 |
|
jp nz, .loop_inner |
|
|
|
push de |
|
ld de, 32*2 - 10 |
|
add hl, de |
|
pop de |
|
|
|
dec b |
|
ld a, b |
|
cp a, 0 |
|
jp nz, .loop_outer |
|
ret |
|
|
|
|
|
|
|
; Update the hint data |
|
mark_hints: |
|
call get_guess_offset |
|
push hl |
|
pop de |
|
ld bc, 30 |
|
add hl, bc |
|
|
|
ld b, 0 |
|
.loop: |
|
ld a, [de] |
|
call hint_for_char |
|
ld [hl], a |
|
inc de |
|
inc hl |
|
inc b |
|
ld a, b |
|
cp a, 5 |
|
jp nz, .loop |
|
ret |
|
|
|
|
|
|
|
; Determines the hint for one character |
|
; <- a: character value to check |
|
; <- b: index within the guess |
|
hint_for_char: |
|
push hl |
|
push bc |
|
push de |
|
|
|
ld hl, current_word |
|
ld d, a ; char value |
|
ld e, b ; position |
|
ld c, 0 ; counter |
|
ld b, TILE_WRONG ; return value |
|
|
|
.loop: |
|
ld a, [hl] |
|
cp a, d |
|
jp nz, .not_equal |
|
ld a, c |
|
cp a, e |
|
jp nz, .misplaced |
|
|
|
.right: |
|
ld b, TILE_RIGHT |
|
jp .return |
|
|
|
.misplaced: |
|
ld b, TILE_MISPLACED |
|
|
|
.not_equal: |
|
inc c |
|
inc hl |
|
ld a, c |
|
cp a, 5 |
|
jp nz, .loop |
|
|
|
.return: |
|
ld a, b |
|
pop de |
|
pop bc |
|
pop hl |
|
ret |
|
|
|
|