From ed77bad912c21662dcac2eae014a1f9a7f085e36 Mon Sep 17 00:00:00 2001 From: Alexander Kramer Date: Fri, 16 Sep 2022 15:50:08 +0200 Subject: [PATCH 1/5] added a solver for debug purposes --- dict/solver.py | 136 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100755 dict/solver.py diff --git a/dict/solver.py b/dict/solver.py new file mode 100755 index 0000000..25e065a --- /dev/null +++ b/dict/solver.py @@ -0,0 +1,136 @@ +#!/usr/bin/env python3 +import random + +print("Welcome to this debug tool!") +print("Just follow the instructions,") +print("however the input syntax is special.") +print() +print("A letter following by a !:") +print(" this letter doesn't exist at all") +print() +print("A letter following by a ?:") +print(" this letter exits but is misplaced") +print() +print("For example:") +print("li!n?u!s!") +print() +print("Which translates into:") +print(" the first letter is an l") +print(" the word doesn't contain an i") +print(" the letter n is misplaced") +print(" the word doesn't contain an u") +print(" the word doesn't contain an s") +print() +print() + + +def determine_guess(words: list, tries: int) -> str: + """ Selects one word from the remaining dictionary """ + if tries > 0: + return random.choice(words) # good enough + else: + return "intro" + + +def is_letter(char: str) -> bool: + """ Checks if a character exists within the alphabet """ + return char >= "a" and char <= "z" + + +def get_next_letter(response: str, current_index: int) -> str: + """ Returns the following letter """ + next_index = current_index + 1 + if next_index >= len(response): + return None + + return response[next_index] + + +def update_hints(hints: dict, response: str) -> dict: + """ + Reads the user supplied response and translates it into logical assumptions + + The hints dictionary contains single letters as keys, + where the values are lists of possible locations for this letter. + + When the user enters o! we know that 'o' has no valid position within the searched word. + dict['o'] -> [] + + When a letter is marked as misplaced, this eliminates possible positions. + dict['k'] -> [0, 1, 3, 4] + + Lastly, correct letters are greatly reducing the possibilities. + dict['m'] -> [2] + """ + response = response.lower() + + position = 0 + for i in range(len(response)): + letter = response[i] + if not is_letter(letter): + continue + + if not letter in hints: + hints[letter] = [0, 1, 2, 3, 4] + + next_letter = get_next_letter(response, i) + if not next_letter or is_letter(next_letter): + hints[letter] = [position] + elif next_letter == "?": + hints[letter] = [l for l in hints[letter] if l != position] + elif next_letter == "!": + hints[letter] = [] + else: + print("invalid input syntax") + position += 1 + return hints + + +def narrow_dictionary(words: list, hints: dict) -> list: + """ Apply the hints to narrow down the possibilities """ + invalid_words = [] + + for word in words: + for key in hints: + pos = word.find(key) + + # skip optional hints + if pos == -1 and len(hints[key]) == 0: + continue + + if not pos in hints[key]: + invalid_words.append(word) + break + + return list(filter(lambda w: w not in invalid_words, words)) + + +with open("en.txt", "r") as handle: + words = handle.readlines() + words = list(map(lambda l: l.strip(), words)) + hints = {} + + tries = 0 + while tries < 6: + guess = determine_guess(words, tries) + + print(f"{len(words)} words remaining") + print(f"input: {guess}") + response = input("response: ") + print() + + hints = update_hints(hints, response) + words = narrow_dictionary(words, hints) + + if len(words) == 1: + print(f"It must be {words[0]}") + exit() + + if len(words) == 0: + print("There are no words left, please check your input.") + exit() + + tries += 1 + + print("I hope the last try was successful.") + print() From 314c75cb97b2f57ba7db550a1453a663b4e95044 Mon Sep 17 00:00:00 2001 From: Alexander Kramer Date: Fri, 16 Sep 2022 16:38:54 +0200 Subject: [PATCH 2/5] changed NULL to 0x00 --- dict/compress.py | 14 ++++----- dict/en.dat | Bin 8192 -> 8192 bytes inc/input.asm | 8 +++-- maps/background.asm | 70 ++++++++++++++++++++++---------------------- maps/window.asm | 70 ++++++++++++++++++++++---------------------- wordle.asm | 42 +++++++++++++------------- wordle.gb | Bin 16384 -> 16384 bytes 7 files changed, 103 insertions(+), 101 deletions(-) diff --git a/dict/compress.py b/dict/compress.py index e57ab3a..29b0e76 100755 --- a/dict/compress.py +++ b/dict/compress.py @@ -13,13 +13,13 @@ def compress(in_path: str, out_path:str): if len(set(list(word))) != len(word): continue - a = (((ord(word[0])-0x61) << 2) & 0x00fc) | \ - (((ord(word[1])-0x61) >> 4) & 0x0003) - b = (((ord(word[1])-0x61) << 4) & 0x00f0) | \ - (((ord(word[2])-0x61) >> 2) & 0x000f) - c = (((ord(word[2])-0x61) << 6) & 0x00c0) | \ - (((ord(word[3])-0x61) >> 0) & 0x003f); - d = (((ord(word[4])-0x61) << 2) & 0x00fc) + a = (((ord(word[0])-0x60) << 2) & 0x00fc) | \ + (((ord(word[1])-0x60) >> 4) & 0x0003) + b = (((ord(word[1])-0x60) << 4) & 0x00f0) | \ + (((ord(word[2])-0x60) >> 2) & 0x000f) + c = (((ord(word[2])-0x60) << 6) & 0x00c0) | \ + (((ord(word[3])-0x60) >> 0) & 0x003f); + d = (((ord(word[4])-0x60) << 2) & 0x00fc) pack = struct.pack("BBBB", a, b, c, d) data.write(pack) diff --git a/dict/en.dat b/dict/en.dat index 36a1be373253a4d62aa3b65c095626b68436d568..62fdd5c63a9785684fcb11bc8a637a318e25df8f 100644 GIT binary patch literal 8192 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 Xa)aD~KXwOi%y;mA#ho35u^0azhpC)} diff --git a/inc/input.asm b/inc/input.asm index b0ddf97..be17f9c 100644 --- a/inc/input.asm +++ b/inc/input.asm @@ -23,9 +23,10 @@ update_cursor_objects: ld b, $09 call multiply_ab add a, c + inc a - ; char 26 doesn't exist, it's the enter sign - cp a, 26 + ; char 27 doesn't exist, it's the enter sign + cp a, 27 jp nz, .not_enter ld a, TILE_ENTER .not_enter: @@ -198,11 +199,12 @@ select_letter: ld b, 9 call multiply_ab add a, d + inc a ld c, a ; check if it's enter ld a, c - cp a, 26 + cp a, 27 jp nz, .normal_letter call check_guess jp .return diff --git a/maps/background.asm b/maps/background.asm index a331ccb..0d4fe56 100644 --- a/maps/background.asm +++ b/maps/background.asm @@ -1,36 +1,36 @@ ; Background map -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$22,$23,$24,$25,$26,$27,$28,$29,$2a,$2b,$2c,$2d,$2e,$2f,$30,$31,$32,$33,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$34,$35,$36,$37,$38,$39,$3a,$3b,$3c,$3d,$3e,$3f,$40,$41,$42,$43,$44,$45,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$46,$47,$48,$49,$4a,$4b,$4c,$4d,$4e,$4f,$50,$51,$52,$53,$54,$55,$56,$57,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$58,$59,$5a,$5b,$5c,$5d,$5e,$5f,$60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1a,$1a,$1a,$1a,$0f,$11,$04,$12,$12,$1a,$1a,$12,$13,$00,$11,$13,$1a,$1a,$1a,$1a,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1d,$1b,$1d,$1b,$1d,$1b,$1d,$1b,$1d,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1d,$1b,$1d,$1b,$1d,$1b,$1d,$1b,$1d,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1d,$1b,$1d,$1b,$1d,$1b,$1d,$1b,$1d,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1d,$1b,$1d,$1b,$1d,$1b,$1d,$1b,$1d,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1d,$1b,$1d,$1b,$1d,$1b,$1d,$1b,$1d,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1d,$1b,$1d,$1b,$1d,$1b,$1d,$1b,$1d,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$22,$23,$24,$25,$26,$27,$28,$29,$2a,$2b,$2c,$2d,$2e,$2f,$30,$31,$32,$33,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$34,$35,$36,$37,$38,$39,$3a,$3b,$3c,$3d,$3e,$3f,$40,$41,$42,$43,$44,$45,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$46,$47,$48,$49,$4a,$4b,$4c,$4d,$4e,$4f,$50,$51,$52,$53,$54,$55,$56,$57,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$58,$59,$5a,$5b,$5c,$5d,$5e,$5f,$60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1b,$1b,$1b,$1b,$10,$12,$05,$13,$13,$1b,$1b,$13,$14,$01,$12,$14,$1b,$1b,$1b,$1b,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1d,$1c,$1d,$1c,$1d,$1c,$1d,$1c,$1d,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1d,$1c,$1d,$1c,$1d,$1c,$1d,$1c,$1d,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1d,$1c,$1d,$1c,$1d,$1c,$1d,$1c,$1d,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1d,$1c,$1d,$1c,$1d,$1c,$1d,$1c,$1d,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1d,$1c,$1d,$1c,$1d,$1c,$1d,$1c,$1d,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1d,$1c,$1d,$1c,$1d,$1c,$1d,$1c,$1d,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c diff --git a/maps/window.asm b/maps/window.asm index 844cb65..81772ae 100644 --- a/maps/window.asm +++ b/maps/window.asm @@ -1,36 +1,36 @@ ; Window map -DB $1a,$1a,$00,$1a,$01,$1a,$02,$1a,$03,$1a,$04,$1a,$05,$1a,$06,$1a,$07,$1a,$08,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a -DB $1a,$1a,$09,$1a,$0a,$1a,$0b,$1a,$0c,$1a,$0d,$1a,$0e,$1a,$0f,$1a,$10,$1a,$11,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a -DB $1a,$1a,$12,$1a,$13,$1a,$14,$1a,$15,$1a,$16,$1a,$17,$1a,$18,$1a,$19,$1a,$1e,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a -DB $1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b +DB $1b,$1b,$01,$1b,$02,$1b,$03,$1b,$04,$1b,$05,$1b,$06,$1b,$07,$1b,$08,$1b,$09,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b +DB $1b,$1b,$0a,$1b,$0b,$1b,$0c,$1b,$0d,$1b,$0e,$1b,$0f,$1b,$10,$1b,$11,$1b,$12,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b +DB $1b,$1b,$13,$1b,$14,$1b,$15,$1b,$16,$1b,$17,$1b,$18,$1b,$19,$1b,$1a,$1b,$1e,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b +DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c diff --git a/wordle.asm b/wordle.asm index a5af41c..ff91d5b 100644 --- a/wordle.asm +++ b/wordle.asm @@ -8,12 +8,12 @@ STATE_LOST EQU %00000100 STATE_WON EQU %00001100 ; Marker for invalid or undefined values -NULL EQU $1c +NULL EQU $00 ;; Indices of special tiles -TILE_BLACK EQU $1a -TILE_WHITE EQU $1b TILE_NULL EQU NULL +TILE_BLACK EQU $1b +TILE_WHITE EQU $1c TILE_PLACEHOLDER EQU $1d TILE_ENTER EQU $1e TILE_RIGHT EQU $1f @@ -156,14 +156,14 @@ include "inc/interrupts.asm" SECTION "DATA0", ROM0[$1000] ; Tiles tiles_start: +tile_null: + include "tiles/plain-null.asm" tiles_alphabet: include "tiles/alphabet.asm" tile_black: include "tiles/plain-black.asm" tile_white: include "tiles/plain-white.asm" -tile_null: - include "tiles/plain-null.asm" tiles_placeholder: include "tiles/sign-placeholder.asm" tiles_enter: @@ -207,29 +207,29 @@ message_clear: DB $00, $00, $00, $00 message_unknown: - DB $7a, $38, 20, OBJ_ATTR_PALETTE1 ; U - DB $7a, $40, 13, OBJ_ATTR_PALETTE1 ; N - DB $7a, $48, 10, OBJ_ATTR_PALETTE1 ; k - DB $7a, $50, 13, OBJ_ATTR_PALETTE1 ; N - DB $7a, $58, 14, OBJ_ATTR_PALETTE1 ; O - DB $7a, $60, 22, OBJ_ATTR_PALETTE1 ; W - DB $7a, $68, 13, OBJ_ATTR_PALETTE1 ; N + DB $7a, $38, 21, OBJ_ATTR_PALETTE1 ; U + DB $7a, $40, 14, OBJ_ATTR_PALETTE1 ; N + DB $7a, $48, 11, OBJ_ATTR_PALETTE1 ; k + DB $7a, $50, 14, OBJ_ATTR_PALETTE1 ; N + DB $7a, $58, 15, OBJ_ATTR_PALETTE1 ; O + DB $7a, $60, 23, OBJ_ATTR_PALETTE1 ; W + DB $7a, $68, 14, OBJ_ATTR_PALETTE1 ; N DB $00, $00, 0, 0 message_won: - DB $7a, $38, 24, OBJ_ATTR_PALETTE1 ; Y - DB $7a, $40, 14, OBJ_ATTR_PALETTE1 ; O - DB $7a, $48, 20, OBJ_ATTR_PALETTE1 ; U - DB $7a, $58, 22, OBJ_ATTR_PALETTE1 ; W - DB $7a, $60, 14, OBJ_ATTR_PALETTE1 ; O - DB $7a, $68, 13, OBJ_ATTR_PALETTE1 ; N + DB $7a, $38, 25, OBJ_ATTR_PALETTE1 ; Y + DB $7a, $40, 15, OBJ_ATTR_PALETTE1 ; O + DB $7a, $48, 21, OBJ_ATTR_PALETTE1 ; U + DB $7a, $58, 23, OBJ_ATTR_PALETTE1 ; W + DB $7a, $60, 15, OBJ_ATTR_PALETTE1 ; O + DB $7a, $68, 14, OBJ_ATTR_PALETTE1 ; N DB $00, $00, 0, 0 DB $00, $00, 0, 0 message_lost: - DB $7a, $30, 8, OBJ_ATTR_PALETTE1 ; I - DB $7a, $38, 19, OBJ_ATTR_PALETTE1 ; T - DB $7a, $40, 18, OBJ_ATTR_PALETTE1 ; S + DB $7a, $30, 9, OBJ_ATTR_PALETTE1 ; I + DB $7a, $38, 20, OBJ_ATTR_PALETTE1 ; T + DB $7a, $40, 19, OBJ_ATTR_PALETTE1 ; S DB $7a, $50, 0, OBJ_ATTR_PALETTE1 ; guess[0] DB $7a, $58, 0, OBJ_ATTR_PALETTE1 ; guess[1] DB $7a, $60, 0, OBJ_ATTR_PALETTE1 ; guess[2] diff --git a/wordle.gb b/wordle.gb index 65ca54d0fa264ec7feb49440029a71ef89c6bdff..f2cf247e092e12703f2a63c9bbbc027a146dab28 100644 GIT binary patch literal 16384 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 literal 16384 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 Date: Fri, 16 Sep 2022 17:31:18 +0200 Subject: [PATCH 3/5] new main menu --- inc/init.asm | 15 ++++-- inc/input.asm | 113 ++++++++++++++++++++++++++------------------ inc/messages.asm | 28 ++++++++++- maps/background.asm | 4 +- maps/window.asm | 33 +------------ wordle.asm | 32 +++++++++++++ wordle.gb | Bin 16384 -> 16384 bytes 7 files changed, 141 insertions(+), 84 deletions(-) diff --git a/inc/init.asm b/inc/init.asm index 7027e3f..b9eeac7 100644 --- a/inc/init.asm +++ b/inc/init.asm @@ -2,17 +2,21 @@ init_state_menu: ld a, STATE_MENU ld [current_state], a + ld a, STATE_MENU_START + ld [sub_state], a ; set the background position ld a, 0 ld [BKG_POS_X_REGISTER], a ld [BKG_POS_Y_REGISTER], a + call show_message_menu_start + ; turn the screen on ld a, DISPLAY_ON + TLS_USE_LOC_8000 \ - + BKG_DISPLAY_ON + BKG_USE_LOC_9800 \ + + BKG_DISPLAY_ON + BKG_USE_LOC_9800 \ + WND_DISPLAY_OFF + WND_USE_LOC_9C00 \ - + OBJ_DISPLAY_OFF + OBJ_SIZE_8X8 + + OBJ_DISPLAY_ON + OBJ_SIZE_8X8 ld [LCD_CONTROL_REGISTER], a ret @@ -38,6 +42,9 @@ init_state_game: ld a, $5e ld [WND_POS_Y_REGISTER], a + ; clear messages + call clear_message + ; initialise some more variables ld a, 0 ld [selected_letter_x], a @@ -64,7 +71,7 @@ init_state_game: jp nz, .loop2 ; turn the screen on - ld a, DISPLAY_ON + TLS_USE_LOC_8000 \ + ld a, DISPLAY_ON + TLS_USE_LOC_8000 \ + BKG_DISPLAY_ON + BKG_USE_LOC_9800 \ + WND_DISPLAY_ON + WND_USE_LOC_9C00 \ + OBJ_DISPLAY_ON + OBJ_SIZE_8X8 @@ -148,7 +155,7 @@ load_window_map: ld bc, window ld hl, WND_LOC_9C00 ld d, 32 - ld e, 32 + ld e, 4 .loop: ld a, [bc] diff --git a/inc/input.asm b/inc/input.asm index be17f9c..3ba282d 100644 --- a/inc/input.asm +++ b/inc/input.asm @@ -1,44 +1,3 @@ -; Update the object data for the alphabet cursor -update_cursor_objects: - ld hl, obj_selected_letter - - ; vertical position - ld a, [selected_letter_y] - ld b, $08 - call multiply_ab - add a, $86 - ld [hl+], a - - ; horizontal position - ld a, [selected_letter_x] - ld b, $10 - call multiply_ab - add a, $14 - ld [hl+], a - - ; tile index - ld a, [selected_letter_x] - ld c, a - ld a, [selected_letter_y] - ld b, $09 - call multiply_ab - add a, c - inc a - - ; char 27 doesn't exist, it's the enter sign - cp a, 27 - jp nz, .not_enter - ld a, TILE_ENTER -.not_enter: - ld [hl+], a - - ; attributes - ld a, OBJ_ATTR_PALETTE1 - ld [hl+], a - ret - - - ; Read the current input state ; -> b: current keystates ; -> c: changed keys since last read @@ -85,12 +44,36 @@ read_input: ; React on input within the menu handle_input_menu: +.check_movement: ld a, c - and a, INPUT_START - jp z, .nothing + and a, INPUT_UP | INPUT_DOWN + jp z, .check_confirm + ld a, [sub_state] + xor a, %00000001 ; flip the last bit + ld [sub_state], a + and a, %00000001 + jp z, .switch_to_help +.switch_to_start + call show_message_menu_start + jp .check_confirm +.switch_to_help + call show_message_menu_help + jp .check_confirm + +.check_confirm + ld a, c + and a, INPUT_START | INPUT_A + jp z, .return + + ld a, [sub_state] + and a, STATE_MENU_START + jp z, .help_selected +.start_selected call init_state_game - -.nothing + jp .return +.help_selected + jp .return +.return ret @@ -271,3 +254,43 @@ delete_letter: pop hl ret + + +; Update the object data for the alphabet cursor +update_cursor_objects: + ld hl, obj_selected_letter + + ; vertical position + ld a, [selected_letter_y] + ld b, $08 + call multiply_ab + add a, $86 + ld [hl+], a + + ; horizontal position + ld a, [selected_letter_x] + ld b, $10 + call multiply_ab + add a, $14 + ld [hl+], a + + ; tile index + ld a, [selected_letter_x] + ld c, a + ld a, [selected_letter_y] + ld b, $09 + call multiply_ab + add a, c + inc a + + ; char 27 doesn't exist, it's the enter sign + cp a, 27 + jp nz, .not_enter + ld a, TILE_ENTER +.not_enter: + ld [hl+], a + + ; attributes + ld a, OBJ_ATTR_PALETTE1 + ld [hl+], a + ret diff --git a/inc/messages.asm b/inc/messages.asm index 62b170f..b58edab 100644 --- a/inc/messages.asm +++ b/inc/messages.asm @@ -1,3 +1,21 @@ +; Highlights the menu entry "start game" +show_message_menu_start: + ld de, message_menu_start + ld b, 0 + call show_message + ret + + + +; Highlights the menu entry "how it works" +show_message_menu_help: + ld de, message_menu_help + ld b, 0 + call show_message + ret + + + ; Inform that the current guess is not in the dictionary show_message_unknown: ld de, message_unknown @@ -43,8 +61,12 @@ ENDR ; <- de ; <- b show_message: + push hl + push bc + push de + ld hl, obj_message_letters - ld c, 32 + ld c, 36 .loop: ld a, [de] ld [hl], a @@ -55,6 +77,10 @@ show_message: ld a, b ld [message_timeout], a + + pop de + pop bc + pop hl ret diff --git a/maps/background.asm b/maps/background.asm index 0d4fe56..4b1877e 100644 --- a/maps/background.asm +++ b/maps/background.asm @@ -13,9 +13,9 @@ DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$ DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1b,$1b,$1b,$1b,$10,$12,$05,$13,$13,$1b,$1b,$13,$14,$01,$12,$14,$1b,$1b,$1b,$1b,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1b,$1b,$1b,$1b,$1b,$13,$14,$01,$12,$14,$1b,$07,$01,$0d,$05,$1b,$1b,$1b,$1b,$1b,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1b,$1b,$1b,$1b,$1b,$08,$0f,$17,$1b,$14,$0f,$1b,$10,$0c,$01,$19,$1b,$1b,$1b,$1b,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c diff --git a/maps/window.asm b/maps/window.asm index 81772ae..7a371f5 100644 --- a/maps/window.asm +++ b/maps/window.asm @@ -2,35 +2,4 @@ DB $1b,$1b,$01,$1b,$02,$1b,$03,$1b,$04,$1b,$05,$1b,$06,$1b,$07,$1b,$08,$1b,$09,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b DB $1b,$1b,$0a,$1b,$0b,$1b,$0c,$1b,$0d,$1b,$0e,$1b,$0f,$1b,$10,$1b,$11,$1b,$12,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b DB $1b,$1b,$13,$1b,$14,$1b,$15,$1b,$16,$1b,$17,$1b,$18,$1b,$19,$1b,$1a,$1b,$1e,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b diff --git a/wordle.asm b/wordle.asm index ff91d5b..62524e9 100644 --- a/wordle.asm +++ b/wordle.asm @@ -3,6 +3,8 @@ include "inc/constants.asm" ;; Game specific constants ; Game states STATE_MENU EQU %00000001 +STATE_MENU_START EQU %01000001 +STATE_MENU_HELP EQU %10000001 STATE_GAME EQU %00000010 STATE_LOST EQU %00000100 STATE_WON EQU %00001100 @@ -205,6 +207,29 @@ message_clear: DB $00, $00, $00, $00 DB $00, $00, $00, $00 DB $00, $00, $00, $00 + DB $00, $00, $00, $00 + +message_menu_start: + DB $88, $30, 19, OBJ_ATTR_PALETTE1 ; S + DB $88, $38, 20, OBJ_ATTR_PALETTE1 ; T + DB $88, $40, 01, OBJ_ATTR_PALETTE1 ; A + DB $88, $48, 18, OBJ_ATTR_PALETTE1 ; R + DB $88, $50, 20, OBJ_ATTR_PALETTE1 ; T + DB $88, $60, 07, OBJ_ATTR_PALETTE1 ; G + DB $88, $68, 01, OBJ_ATTR_PALETTE1 ; A + DB $88, $70, 13, OBJ_ATTR_PALETTE1 ; G + DB $88, $78, 05, OBJ_ATTR_PALETTE1 ; A + +message_menu_help: + DB $90, $30, 08, OBJ_ATTR_PALETTE1 ; H + DB $90, $38, 15, OBJ_ATTR_PALETTE1 ; O + DB $90, $40, 23, OBJ_ATTR_PALETTE1 ; W + DB $90, $50, 20, OBJ_ATTR_PALETTE1 ; T + DB $90, $58, 15, OBJ_ATTR_PALETTE1 ; O + DB $90, $68, 16, OBJ_ATTR_PALETTE1 ; P + DB $90, $70, 12, OBJ_ATTR_PALETTE1 ; L + DB $90, $78, 01, OBJ_ATTR_PALETTE1 ; A + DB $90, $80, 25, OBJ_ATTR_PALETTE1 ; Y message_unknown: DB $7a, $38, 21, OBJ_ATTR_PALETTE1 ; U @@ -215,6 +240,7 @@ message_unknown: DB $7a, $60, 23, OBJ_ATTR_PALETTE1 ; W DB $7a, $68, 14, OBJ_ATTR_PALETTE1 ; N DB $00, $00, 0, 0 + DB $00, $00, 0, 0 message_won: DB $7a, $38, 25, OBJ_ATTR_PALETTE1 ; Y @@ -225,6 +251,7 @@ message_won: DB $7a, $68, 14, OBJ_ATTR_PALETTE1 ; N DB $00, $00, 0, 0 DB $00, $00, 0, 0 + DB $00, $00, 0, 0 message_lost: DB $7a, $30, 9, OBJ_ATTR_PALETTE1 ; I @@ -235,6 +262,7 @@ message_lost: DB $7a, $60, 0, OBJ_ATTR_PALETTE1 ; guess[2] DB $7a, $68, 0, OBJ_ATTR_PALETTE1 ; guess[3] DB $7a, $70, 0, OBJ_ATTR_PALETTE1 ; guess[4] + DB $00, $00, 0, 0 @@ -270,6 +298,10 @@ input_state: current_state: DB +; Saves the state in the submenu +sub_state: + DB + ; Saves the current word current_word: DS 5 diff --git a/wordle.gb b/wordle.gb index f2cf247e092e12703f2a63c9bbbc027a146dab28..7debabe3baff578da91598f492071e2405c62c58 100644 GIT binary patch delta 1357 zcmah|Urbw77(eISdrr&b&n;~k&<$FO(J(cbOhN=Muq|xSOo&+mF;PrhgeS8lX7s{F z?=)LFd8xZT%moY&10Db+VaeF$!{Js;?j0tL_yydzP-_H{v}+3=r`?5pNPPPsAz_0_!yM zx9-V!3iG^(+zVK$?MmSmFJk*T7Vj!48yAVah{c>D+NoGm#U)j0mG*5cmWsY7cjSgnLNE*)$k;C>7 zaqxUy1l_0$H-!&ODAAxj2J#rlC=@}nAghn%X^^Lhvok!x&>eS<497k^IoV@>LSku$ z&Fd(Fcnh_ch@kD4lWcUQr4Q{1*(V=CB)AAkown zMYKvZaux2Zbm#irPZg2HsaXa7P9e{S3wwOj$a&q*rEcU@_l_c#n32=muawE67cgMt z!fqM}0t_0tKKG$A1>~V}*vOgg9uN|T&mjXg{#_A%)yNU|FGakrPC_N8pp=f>p;m<* zpuSG_kFA|4Rv~7{2i=24F=Rid!j`GiD%85L%ozpG$-)XRQunlK)}hgc^T4{H8R^Ym zcT3a%GjcEv@x)ZKM-J{lM$eP6P&`PGd11w`ueLzGOp|6nnuF3Kqqy7+F)XWkQ;V*( zI1!cmpyvUxqw1{^j!HNo;f#c{08TcW#VVSpC_lT_s@fedhtAL-gjeB2uHN)*bH=J^ z<3u#-uQH0rewpt0I#5HJ#(;EEM}%oMjhj#fLyh7+I^mD1u_CocsgvE>i7fKrk!r*u z)A#HdYTUQ4QP!NYC<|9c4Hz{^W9iLZxkg*Acl#M@oDPhcp)G87UEHt>^wM2`%~UGFS=(LP&)V+U0oHck4l*4((P%XFBh``PTj*j)oM(>Dd1CzB#cr1rUw7H{(qkj? z5yy+%^0A=R%slXV<1*BXyt)0Ce^ zAhH9)P^}{#CHnuy`gbhvU9Z(%^IB$oYh}nEz_o#p2UpRMwN@W|%3E_V6sQSlmAGMj zt^NVQq4m+`Ncdw-J(XzpYl+T)mgvJ;;#94c7y|okkCqq*ey&PO#Hf~R_iD+`8ZFs( oP)mY8IRf^$rX|l+YRMSZl4gTunZ03awzt*#viHQg=9y9c0jgy(X#fBK delta 1182 zcmah|Z)jUp6uN@2}w zr-=#!1!eXjj?qCVtJBp%u>-g6gSR(Kcuy}Hv>)o6q(~oKP()-f@*#R|tPK6)gZJb7 ze)rsS&OL`yDBwZ?pL?R~Cx+Cw*+7I!{w{YWnl8`d7xF_y9whQ*BA+Mn10olRl-Qz` zKdq)pQ?1DB$UBXdI;qtz@j4dsSiYx~1g;bD5tipQd0&?~T@Ey~R&fnWtb?XJbRixv z3ss9;9$=-@*uvFI+(MNnD~GJfa%I%D2ng~jQJQrDRIT!i^-|?&xO10RtGs%JSC_f@ zDO`&7_IHXFVtU-_Y1mO>{h>nWD#ShNTCK|Xg*r*ned;jTD-IJE7o#RRA2oW7mKiPH zDNcfX5@ZxJ(ZU0H8sur>Ze%7I`rMl*ncQ1PXH(*Bk}JEcXdx5vekvA-Yw^kvYkx|7 zOx)0tvqlC;w$Irj=^^l_RXGdD0{QZ6f9)=3L1jjinN}ywK;KB#W8%1G_4ZrAe&jA)s?Hk_LKoDT3?T>n!+8mHg zZLjSYJRb-F?6H09{iexw-S&xhUz20{EVOeD`su0!Z8{{7&Yo5Ij@;GDdw0kBV54YKM zBnaII4Wm6}ngfEUD|htmGVVpq40X$4IunlTxjGet)ZK>qmUw2e9WnFuHF2EUH^l^H zeWe#EGg{*|cpaj-^7@vFk?=>p8gz>E$cb#CXiwtH3 zPkEO~W0xgiabSm*IULHLDWDqIka{Lw;w>3y#%-p>|KC{M-&75}|H^Z#9l`N{vl2C& zsjhvk!44V@$710K?ue|ebbUjd@4F_Pa}Ry{uYV<)UM<8-!};}~;e?Wg^LTRfFZd(+ ASO5S3 From 622bd527914bd7bfb7134218b4349a78e3ef812a Mon Sep 17 00:00:00 2001 From: Alexander Kramer Date: Fri, 16 Sep 2022 20:10:16 +0200 Subject: [PATCH 4/5] help page added --- inc/init.asm | 76 +++++++++++++++++-- inc/input.asm | 20 ++++- maps/background.asm | 8 +- maps/{window.asm => window-game.asm} | 4 +- maps/window-help.asm | 6 ++ tiles/sign-slash.asm | 17 +++++ wordle.asm | 107 ++++++++++++++++++--------- wordle.gb | Bin 16384 -> 16384 bytes 8 files changed, 183 insertions(+), 55 deletions(-) rename maps/{window.asm => window-game.asm} (83%) create mode 100644 maps/window-help.asm create mode 100644 tiles/sign-slash.asm diff --git a/inc/init.asm b/inc/init.asm index b9eeac7..47f22ff 100644 --- a/inc/init.asm +++ b/inc/init.asm @@ -19,7 +19,61 @@ init_state_menu: + OBJ_DISPLAY_ON + OBJ_SIZE_8X8 ld [LCD_CONTROL_REGISTER], a ret + + + +; Initialise everything for help screen +init_state_help: + ld a, STATE_HELP + ld [current_state], a + + ; turn the screen off + ld a, DISPLAY_OFF + ld [LCD_CONTROL_REGISTER], a + + call clear_message + + ; set the background position + ld a, 0 + ld [BKG_POS_X_REGISTER], a + ld a, $9a + ld [BKG_POS_Y_REGISTER], a + + ; set the window position + ld a, 3 + ld [WND_POS_X_REGISTER], a + ld a, $70 + ld [WND_POS_Y_REGISTER], a + + ld hl, window_help + call load_window_map + ; set a fixed game state + ld hl, current_word + ld de, help_word + ld c, 65 +.set_gamestate: + ld a, [de] + ld [hl], a + inc de + inc hl + dec c + jp nz, .set_gamestate + + ; This is only possible because the memory space of these + ; two variables is located directly after each other. + + call update_hint_markings + call update_guess_objects + + ; turn the screen on + ld a, DISPLAY_ON + TLS_USE_LOC_8000 \ + + BKG_DISPLAY_ON + BKG_USE_LOC_9800 \ + + WND_DISPLAY_ON + WND_USE_LOC_9C00 \ + + OBJ_DISPLAY_ON + OBJ_SIZE_8X8 + ld [LCD_CONTROL_REGISTER], a + ret + ; Initialise everything for the main game state @@ -28,7 +82,12 @@ init_state_game: ld a, STATE_GAME ld [current_state], a + ; turn the screen off + ld a, DISPLAY_OFF + ld [LCD_CONTROL_REGISTER], a + call select_word + call clear_message ; set the background position ld a, 0 @@ -39,11 +98,12 @@ init_state_game: ; set the window position ld a, 3 ld [WND_POS_X_REGISTER], a - ld a, $5e + ld a, $70 ld [WND_POS_Y_REGISTER], a - ; clear messages - call clear_message + ; load the window data + ld hl, window_game + call load_window_map ; initialise some more variables ld a, 0 @@ -151,17 +211,17 @@ load_background_map: ; Load the window map into the vram +; -> hl load_window_map: - ld bc, window - ld hl, WND_LOC_9C00 + ld bc, WND_LOC_9C00 ld d, 32 ld e, 4 .loop: - ld a, [bc] - ld [hl], a - inc bc + ld a, [hl] + ld [bc], a inc hl + inc bc dec d jp nz, .loop diff --git a/inc/input.asm b/inc/input.asm index 3ba282d..ac062c6 100644 --- a/inc/input.asm +++ b/inc/input.asm @@ -49,9 +49,10 @@ handle_input_menu: and a, INPUT_UP | INPUT_DOWN jp z, .check_confirm ld a, [sub_state] - xor a, %00000001 ; flip the last bit + ; flip the corresponding bits + xor a, STATE_MENU_START + STATE_MENU_HELP ld [sub_state], a - and a, %00000001 + and a, STATE_MENU_START jp z, .switch_to_help .switch_to_start call show_message_menu_start @@ -64,7 +65,6 @@ handle_input_menu: ld a, c and a, INPUT_START | INPUT_A jp z, .return - ld a, [sub_state] and a, STATE_MENU_START jp z, .help_selected @@ -72,12 +72,23 @@ handle_input_menu: call init_state_game jp .return .help_selected + call init_state_help jp .return .return ret +handle_input_help: + ld a, c + and a, INPUT_START + jp z, .return + call init_state_game +.return + ret + + + ; React on input within the main game ; <- c: changed keys since last read handle_input_game: @@ -264,7 +275,7 @@ update_cursor_objects: ld a, [selected_letter_y] ld b, $08 call multiply_ab - add a, $86 + add a, $80 ld [hl+], a ; horizontal position @@ -294,3 +305,4 @@ update_cursor_objects: ld a, OBJ_ATTR_PALETTE1 ld [hl+], a ret + diff --git a/maps/background.asm b/maps/background.asm index 4b1877e..b53710c 100644 --- a/maps/background.asm +++ b/maps/background.asm @@ -2,10 +2,10 @@ DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$22,$23,$24,$25,$26,$27,$28,$29,$2a,$2b,$2c,$2d,$2e,$2f,$30,$31,$32,$33,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$34,$35,$36,$37,$38,$39,$3a,$3b,$3c,$3d,$3e,$3f,$40,$41,$42,$43,$44,$45,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$46,$47,$48,$49,$4a,$4b,$4c,$4d,$4e,$4f,$50,$51,$52,$53,$54,$55,$56,$57,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c -DB $1c,$58,$59,$5a,$5b,$5c,$5d,$5e,$5f,$60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$23,$24,$25,$26,$27,$28,$29,$2a,$2b,$2c,$2d,$2e,$2f,$30,$31,$32,$33,$34,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$35,$36,$37,$38,$39,$3a,$3b,$3c,$3d,$3e,$3f,$40,$41,$42,$43,$44,$45,$46,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$47,$48,$49,$4a,$4b,$4c,$4d,$4e,$4f,$50,$51,$52,$53,$54,$55,$56,$57,$58,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c +DB $1c,$59,$5a,$5b,$5c,$5d,$5e,$5f,$60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$6a,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c DB $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c diff --git a/maps/window.asm b/maps/window-game.asm similarity index 83% rename from maps/window.asm rename to maps/window-game.asm index 7a371f5..f49e508 100644 --- a/maps/window.asm +++ b/maps/window-game.asm @@ -1,5 +1,5 @@ -; Window map +; Window map while in game DB $1b,$1b,$01,$1b,$02,$1b,$03,$1b,$04,$1b,$05,$1b,$06,$1b,$07,$1b,$08,$1b,$09,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$0a,$1b,$0b,$1b,$0c,$1b,$0d,$1b,$0e,$1b,$0f,$1b,$10,$1b,$11,$1b,$12,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b +DB $1b,$1b,$0a,$1b,$0b,$1b,$0c,$1b,$0d,$00,$0e,$1b,$0f,$1b,$10,$1b,$11,$1b,$12,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b DB $1b,$1b,$13,$1b,$14,$1b,$15,$1b,$16,$1b,$17,$1b,$18,$1b,$19,$1b,$1a,$1b,$1e,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b diff --git a/maps/window-help.asm b/maps/window-help.asm new file mode 100644 index 0000000..632ab68 --- /dev/null +++ b/maps/window-help.asm @@ -0,0 +1,6 @@ +; Window map while within help +DB $1b,$1b,$13,$14,$01,$12,$14,$1b,$1b,$0e,$05,$17,$1b,$07,$01,$0d,$05,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b +DB $1b,$1b,$13,$05,$0c,$05,$03,$14,$1b,$03,$08,$05,$03,$0b,$1b,$17,$0f,$12,$04,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b +DB $1b,$1b,$01,$22,$02,$1b,$1b,$1b,$1b,$04,$05,$22,$13,$05,$0c,$05,$03,$14,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b +DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b + diff --git a/tiles/sign-slash.asm b/tiles/sign-slash.asm new file mode 100644 index 0000000..4361a2f --- /dev/null +++ b/tiles/sign-slash.asm @@ -0,0 +1,17 @@ +; Slash +DB %00000000, \ + %00000000, \ + %00000010, \ + %00000010, \ + %00000100, \ + %00000100, \ + %00001000, \ + %00001000, \ + %00010000, \ + %00010000, \ + %00100000, \ + %00100000, \ + %01000000, \ + %01000000, \ + %10000000, \ + %10000000, \ diff --git a/wordle.asm b/wordle.asm index 62524e9..9bc1271 100644 --- a/wordle.asm +++ b/wordle.asm @@ -3,11 +3,12 @@ include "inc/constants.asm" ;; Game specific constants ; Game states STATE_MENU EQU %00000001 -STATE_MENU_START EQU %01000001 -STATE_MENU_HELP EQU %10000001 -STATE_GAME EQU %00000010 -STATE_LOST EQU %00000100 -STATE_WON EQU %00001100 +STATE_MENU_START EQU %01000000 +STATE_MENU_HELP EQU %10000000 +STATE_HELP EQU %00000010 +STATE_GAME EQU %00000100 +STATE_LOST EQU %00001000 +STATE_WON EQU %00011000 ; Marker for invalid or undefined values NULL EQU $00 @@ -21,6 +22,7 @@ TILE_ENTER EQU $1e TILE_RIGHT EQU $1f TILE_MISPLACED EQU $20 TILE_WRONG EQU $21 +TILE_SLASH EQU $22 @@ -63,7 +65,6 @@ main: ; load the video data call init_palettes call load_tiles - call load_window_map call load_background_map ; initialise the objects @@ -103,10 +104,18 @@ main_loop: .in_menu: cp a, STATE_MENU - jp nz, .in_game + jp nz, .in_help call handle_input_menu jp .cleanup +.in_help: + cp a, STATE_HELP + jp nz, .in_game + call handle_input_help + call update_hint_markings + call update_guess_objects + jp .cleanup + .in_game: cp a, STATE_GAME jp nz, .in_won @@ -176,6 +185,8 @@ tile_misplaced: include "tiles/sign-misplaced.asm" tiles_wrong: include "tiles/sign-wrong.asm" +tiles_slash: + include "tiles/sign-slash.asm" tiles_logo: include "tiles/logo.asm" tiles_end: @@ -186,8 +197,10 @@ tiles_end: maps_start: background: include "maps/background.asm" -window: - include "maps/window.asm" +window_help: + include "maps/window-help.asm" +window_game: + include "maps/window-game.asm" maps_end: dictionary: @@ -196,6 +209,26 @@ dictionary_end: DB +; Help data +help_word: + DB $12, $09, $07, $08, $14 ; right + +help_guess: + DB $06, $01, $15, $0c, $14 ; fault + DB $07, $09, $12, $14, $08 ; girth + DB $12, $09, $07, $08, $14 ; right + DB $0f, $0e, $0c, $19, $00 ; only + DB $13, $09, $18, $00, $00 ; six + DB $14, $12, $09, $05, $13 ; tries + +help_guess_hints: + DB TILE_WRONG, TILE_WRONG, TILE_WRONG, TILE_WRONG, TILE_RIGHT + DB TILE_MISPLACED, TILE_MISPLACED, TILE_MISPLACED, TILE_MISPLACED, TILE_MISPLACED + DB TILE_RIGHT, TILE_RIGHT, TILE_RIGHT, TILE_RIGHT, TILE_RIGHT + DB TILE_WHITE, TILE_WHITE, TILE_WHITE, TILE_WHITE, TILE_WHITE + DB TILE_WHITE, TILE_WHITE, TILE_WHITE, TILE_WHITE, TILE_WHITE + DB TILE_WHITE, TILE_WHITE, TILE_WHITE, TILE_WHITE, TILE_WHITE + ; Messages message_clear: @@ -217,8 +250,8 @@ message_menu_start: DB $88, $50, 20, OBJ_ATTR_PALETTE1 ; T DB $88, $60, 07, OBJ_ATTR_PALETTE1 ; G DB $88, $68, 01, OBJ_ATTR_PALETTE1 ; A - DB $88, $70, 13, OBJ_ATTR_PALETTE1 ; G - DB $88, $78, 05, OBJ_ATTR_PALETTE1 ; A + DB $88, $70, 13, OBJ_ATTR_PALETTE1 ; M + DB $88, $78, 05, OBJ_ATTR_PALETTE1 ; E message_menu_help: DB $90, $30, 08, OBJ_ATTR_PALETTE1 ; H @@ -232,36 +265,36 @@ message_menu_help: DB $90, $80, 25, OBJ_ATTR_PALETTE1 ; Y message_unknown: - DB $7a, $38, 21, OBJ_ATTR_PALETTE1 ; U - DB $7a, $40, 14, OBJ_ATTR_PALETTE1 ; N - DB $7a, $48, 11, OBJ_ATTR_PALETTE1 ; k - DB $7a, $50, 14, OBJ_ATTR_PALETTE1 ; N - DB $7a, $58, 15, OBJ_ATTR_PALETTE1 ; O - DB $7a, $60, 23, OBJ_ATTR_PALETTE1 ; W - DB $7a, $68, 14, OBJ_ATTR_PALETTE1 ; N + DB $74, $38, 21, OBJ_ATTR_PALETTE1 ; U + DB $74, $40, 14, OBJ_ATTR_PALETTE1 ; N + DB $74, $48, 11, OBJ_ATTR_PALETTE1 ; k + DB $74, $50, 14, OBJ_ATTR_PALETTE1 ; N + DB $74, $58, 15, OBJ_ATTR_PALETTE1 ; O + DB $74, $60, 23, OBJ_ATTR_PALETTE1 ; W + DB $74, $68, 14, OBJ_ATTR_PALETTE1 ; N DB $00, $00, 0, 0 DB $00, $00, 0, 0 message_won: - DB $7a, $38, 25, OBJ_ATTR_PALETTE1 ; Y - DB $7a, $40, 15, OBJ_ATTR_PALETTE1 ; O - DB $7a, $48, 21, OBJ_ATTR_PALETTE1 ; U - DB $7a, $58, 23, OBJ_ATTR_PALETTE1 ; W - DB $7a, $60, 15, OBJ_ATTR_PALETTE1 ; O - DB $7a, $68, 14, OBJ_ATTR_PALETTE1 ; N + DB $74, $38, 25, OBJ_ATTR_PALETTE1 ; Y + DB $74, $40, 15, OBJ_ATTR_PALETTE1 ; O + DB $74, $48, 21, OBJ_ATTR_PALETTE1 ; U + DB $74, $58, 23, OBJ_ATTR_PALETTE1 ; W + DB $74, $60, 15, OBJ_ATTR_PALETTE1 ; O + DB $74, $68, 14, OBJ_ATTR_PALETTE1 ; N DB $00, $00, 0, 0 DB $00, $00, 0, 0 DB $00, $00, 0, 0 message_lost: - DB $7a, $30, 9, OBJ_ATTR_PALETTE1 ; I - DB $7a, $38, 20, OBJ_ATTR_PALETTE1 ; T - DB $7a, $40, 19, OBJ_ATTR_PALETTE1 ; S - DB $7a, $50, 0, OBJ_ATTR_PALETTE1 ; guess[0] - DB $7a, $58, 0, OBJ_ATTR_PALETTE1 ; guess[1] - DB $7a, $60, 0, OBJ_ATTR_PALETTE1 ; guess[2] - DB $7a, $68, 0, OBJ_ATTR_PALETTE1 ; guess[3] - DB $7a, $70, 0, OBJ_ATTR_PALETTE1 ; guess[4] + DB $74, $30, 9, OBJ_ATTR_PALETTE1 ; I + DB $74, $38, 20, OBJ_ATTR_PALETTE1 ; T + DB $74, $40, 19, OBJ_ATTR_PALETTE1 ; S + DB $74, $50, 0, OBJ_ATTR_PALETTE1 ; guess[0] + DB $74, $58, 0, OBJ_ATTR_PALETTE1 ; guess[1] + DB $74, $60, 0, OBJ_ATTR_PALETTE1 ; guess[2] + DB $74, $68, 0, OBJ_ATTR_PALETTE1 ; guess[3] + DB $74, $70, 0, OBJ_ATTR_PALETTE1 ; guess[4] DB $00, $00, 0, 0 @@ -276,7 +309,7 @@ obj_selected_letter: obj_guess_letters: DS 120 obj_message_letters: - DS 32 + DS 36 obj_end: obj_dma_padding: DS 160 - (obj_end - obj_start) @@ -302,10 +335,6 @@ current_state: sub_state: DB -; Saves the current word -current_word: - DS 5 - ; Number of the current guess current_guess: DB @@ -314,6 +343,10 @@ current_guess: current_char: DB +; Saves the current word +current_word: + DS 5 + ; The guess attempts guesses: DS 30 diff --git a/wordle.gb b/wordle.gb index 7debabe3baff578da91598f492071e2405c62c58..c962307929602a759d88a0c27c1b3fd993c5f488 100644 GIT binary patch delta 1709 zcmah}eQZ-z6uW59e59fLeFX`*me&X+j*a=TR;BkSUK=?|_$P#aMfe@U?-Twb)@bU! zrlgc?kDf!x9ay0Ir0fYjhmFISpOX>;I7f^g%B%^0;>6ue{ zrdRiV0mnJ3YD$eQ#QUwTx%2i;GPBM`z?T33L@40ks9{xhh8kf;_13ezFX77-Cu z?Dazp1yrl5(bO8#E9-W68ytKN)uswHN2rBDtrBV@D05_F1k17OauXY^H#VJCuKt(~ z+2^5(LE4o=#)s785jrx6tB{qUDV$SyQ{}E4H7-N?l_7Y6+uCi2dG}l}GBkYAxItNU z;tpk=LSGnI*J#&Z|1j(kJ5HBvR^3;y>VM~)v4*{S9#nr~7wfM*XKZ7&=Z)>G_JXm4 z)m}70Ov9$n=SwufXJguT`WfN_%(NdLH!l0x**x;gIKl#Xj`yIB`(n%3?8pzSD{~V% zJ#1!gir>IJ762b^bdQPQ*;kBZiYexYWV9;$56TxZ_)9ERc%1Up3YfDLet;xe6__Yo z$FK0{nCFL24nDtL9fJH21Dzi$bPMxz}DURvGOJ~6&#?aS+4d3AlqhSy%-xM}knoo{ZL5RZLO z_Fe3Z(-!Y2|C}r@ao}Qy%VncwE(K4fu7{*Sgv~4aHW);$XP6(4kn19hSUXWGk#dCDw9;9K}{z;svSp2&on_ zp6rMZx-dVtkyZn`QDcxnMw9r zx0;gB`p~jI)CL+fg+9<4n{Cp+m*K9M+)E|~4G%upEDyV}i<($9CY!kR3~ZzL;+>su z&-u=oGjqqg6@qE982t{i%dia{{@`!XG=)=4P^Y<}7i1|3?S25=j zRbvmREoMuNvox{>B*9k8sY@&^86y(!k)wu`#>S+?$7Eiu@-G#BToK$V$tjk+!rWJ3X;Eoep;3t4vy7H3$!<)46HycqWd||oDk0Q{&*FmMJ2`{0 zr_k7k*TFQU@gg@mU*sxvEz`X~_X3TaZZrzCvP_=<`UE!T{hb8eu*R@I@KLMoGd{tA zIg^Z2H|SzicVODNV2nO`Pa z!ft&f>**}O0xjXP=0HJ!g<7J~x+@<8<*vL=ON6XNP_VTaluI<&_;;D-D_R0uf608m zqC<6$L3vHFL!JUVK+VngA2ajENH#x%KlHY1X{WJSfi0tZ6{vq|iV+not*I+4ty+7P zP!Z}{a}+c$G-z)6*M+6!|M6^3qo5T~LO$VKi!|RuUnnIcNU|W}*F$BHFR=@;K#1+a zB2IDA3ul;8XlWU>mzi#bIp94g;PVPC7f>T$mw*ldM*z%tJT56{Fgr6AJT%;*)(10( zC#W3`m~Fa;E;wcxA-U?>L60Z@Q7w&(dUf7Wi`LAk0Z{5xle^UToK%Xk30lkFRR{Au zN+7KoU8)(MnRibze`hWt?i06-GpcsS7*@&pXjmn#RUQqzbTu$Hy&z&#CU(qLgdeCa zJt60e6l(b3rjb&Q-vXG97L)19n?@d~yk+E*%G*W(sk~zp5-OP0LTzUf_ zUulx%Z1O`{s%)|+=l_JrknQ8FbNyYBJbNyVROc-y!7@+zhQ}*5ZmO)>yk+YX)lWXP ztz^Yhv%U7|x@YPeygs_4v1w=Xu4h-6OIljnp4+|W`Moc+?|X6oOC2x2;$La+eD%O< zuOB?r)&0idH;=s4)7$s<3VZnC>TkoWC^yny{5cMfI4dM)2+(s2lzJd?F3sl$p5knKfOBJuGbZSUp~Y^ T;0LoCW*^LcWRG04P04=)EdWuJ From 41e007254e404b465813014dde7b91c682ba5157 Mon Sep 17 00:00:00 2001 From: Alexander Kramer Date: Fri, 16 Sep 2022 20:20:35 +0200 Subject: [PATCH 5/5] clearer help text --- maps/window-help.asm | 2 +- wordle.asm | 10 +++++----- wordle.gb | Bin 16384 -> 16384 bytes 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/maps/window-help.asm b/maps/window-help.asm index 632ab68..4f8e5e6 100644 --- a/maps/window-help.asm +++ b/maps/window-help.asm @@ -1,6 +1,6 @@ ; Window map while within help DB $1b,$1b,$13,$14,$01,$12,$14,$1b,$1b,$0e,$05,$17,$1b,$07,$01,$0d,$05,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b DB $1b,$1b,$13,$05,$0c,$05,$03,$14,$1b,$03,$08,$05,$03,$0b,$1b,$17,$0f,$12,$04,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b -DB $1b,$1b,$01,$22,$02,$1b,$1b,$1b,$1b,$04,$05,$22,$13,$05,$0c,$05,$03,$14,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b +DB $1b,$1b,$02,$22,$01,$1b,$1b,$1b,$1b,$04,$05,$22,$13,$05,$0c,$05,$03,$14,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b DB $1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b,$1b diff --git a/wordle.asm b/wordle.asm index 9bc1271..adeb178 100644 --- a/wordle.asm +++ b/wordle.asm @@ -222,12 +222,12 @@ help_guess: DB $14, $12, $09, $05, $13 ; tries help_guess_hints: - DB TILE_WRONG, TILE_WRONG, TILE_WRONG, TILE_WRONG, TILE_RIGHT + DB TILE_WRONG, TILE_WRONG, TILE_WRONG, TILE_WRONG, TILE_RIGHT DB TILE_MISPLACED, TILE_MISPLACED, TILE_MISPLACED, TILE_MISPLACED, TILE_MISPLACED - DB TILE_RIGHT, TILE_RIGHT, TILE_RIGHT, TILE_RIGHT, TILE_RIGHT - DB TILE_WHITE, TILE_WHITE, TILE_WHITE, TILE_WHITE, TILE_WHITE - DB TILE_WHITE, TILE_WHITE, TILE_WHITE, TILE_WHITE, TILE_WHITE - DB TILE_WHITE, TILE_WHITE, TILE_WHITE, TILE_WHITE, TILE_WHITE + DB TILE_RIGHT, TILE_RIGHT, TILE_RIGHT, TILE_RIGHT, TILE_RIGHT + DB TILE_WHITE, TILE_WHITE, TILE_WHITE, TILE_WHITE, TILE_WHITE + DB TILE_WHITE, TILE_WHITE, TILE_WHITE, TILE_WHITE, TILE_WHITE + DB TILE_WHITE, TILE_WHITE, TILE_WHITE, TILE_WHITE, TILE_WHITE ; Messages diff --git a/wordle.gb b/wordle.gb index c962307929602a759d88a0c27c1b3fd993c5f488..44311683eee1de9748477780f7fd71171af4362a 100644 GIT binary patch delta 18 ZcmZo@U~Fh$+z=$q%%sG)IaGSJ3IH^~1v&r# delta 18 ZcmZo@U~Fh$+z=$q%&5e)IaGSJ3IH^|1v&r#