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 36a1be3..62fdd5c 100644 Binary files a/dict/en.dat and b/dict/en.dat differ diff --git a/inc/init.asm b/inc/init.asm index 7027e3f..47f22ff 100644 --- a/inc/init.asm +++ b/inc/init.asm @@ -2,20 +2,78 @@ 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 + + + +; 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 @@ -24,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 @@ -35,9 +98,13 @@ 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 + ; load the window data + ld hl, window_game + call load_window_map + ; initialise some more variables ld a, 0 ld [selected_letter_x], a @@ -64,7 +131,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 @@ -144,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, 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 b0ddf97..ac062c6 100644 --- a/inc/input.asm +++ b/inc/input.asm @@ -1,43 +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 - - ; char 26 doesn't exist, it's the enter sign - cp a, 26 - 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 @@ -84,12 +44,47 @@ 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] + ; flip the corresponding bits + xor a, STATE_MENU_START + STATE_MENU_HELP + ld [sub_state], a + and a, STATE_MENU_START + 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 + jp .return +.help_selected + call init_state_help + jp .return +.return + ret -.nothing + + +handle_input_help: + ld a, c + and a, INPUT_START + jp z, .return + call init_state_game +.return ret @@ -198,11 +193,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 @@ -269,3 +265,44 @@ 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, $80 + 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 a331ccb..b53710c 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,$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 +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,$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 +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-game.asm b/maps/window-game.asm new file mode 100644 index 0000000..f49e508 --- /dev/null +++ b/maps/window-game.asm @@ -0,0 +1,5 @@ +; 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,$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..4f8e5e6 --- /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,$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/maps/window.asm b/maps/window.asm deleted file mode 100644 index 844cb65..0000000 --- a/maps/window.asm +++ /dev/null @@ -1,36 +0,0 @@ -; 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 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 a5af41c..adeb178 100644 --- a/wordle.asm +++ b/wordle.asm @@ -3,22 +3,26 @@ include "inc/constants.asm" ;; Game specific constants ; Game states STATE_MENU EQU %00000001 -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 $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 TILE_MISPLACED EQU $20 TILE_WRONG EQU $21 +TILE_SLASH EQU $22 @@ -61,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 @@ -101,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 @@ -156,14 +167,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: @@ -174,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: @@ -184,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: @@ -194,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: @@ -205,36 +240,62 @@ 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 ; M + DB $88, $78, 05, OBJ_ATTR_PALETTE1 ; E + +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, 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 $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, 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 $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, 8, OBJ_ATTR_PALETTE1 ; I - DB $7a, $38, 19, OBJ_ATTR_PALETTE1 ; T - DB $7a, $40, 18, 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 @@ -248,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) @@ -270,9 +331,9 @@ input_state: current_state: DB -; Saves the current word -current_word: - DS 5 +; Saves the state in the submenu +sub_state: + DB ; Number of the current guess current_guess: @@ -282,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 65ca54d..4431168 100644 Binary files a/wordle.gb and b/wordle.gb differ