diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d0b3d64..ca337dc 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -16,7 +16,7 @@ jobs: uses: actions/checkout@master with: path: rgbds - ref: v0.9.0 + ref: v0.9.3 repository: gbdev/rgbds - name: Install rgbds diff --git a/src/constants/charmaps.asm b/src/constants/charmaps.asm index ca78b9c..d5a2f5d 100644 --- a/src/constants/charmaps.asm +++ b/src/constants/charmaps.asm @@ -102,125 +102,31 @@ charmap "|", $7e charmap "‾", $7f -MACRO fwcharmap - charmap STRCAT("FW{x:\1}_", \2), \3 -ENDM +NEWCHARMAP katakana +NEWCHARMAP hiragana +NEWCHARMAP fullwidth -; TX_FULLWIDTH3 - fwcharmap TX_FULLWIDTH3, "A", $30 - fwcharmap TX_FULLWIDTH3, "B", $31 - fwcharmap TX_FULLWIDTH3, "C", $32 - fwcharmap TX_FULLWIDTH3, "D", $33 - fwcharmap TX_FULLWIDTH3, "E", $34 - fwcharmap TX_FULLWIDTH3, "F", $35 - fwcharmap TX_FULLWIDTH3, "G", $36 - fwcharmap TX_FULLWIDTH3, "H", $37 - fwcharmap TX_FULLWIDTH3, "I", $38 - fwcharmap TX_FULLWIDTH3, "J", $39 - fwcharmap TX_FULLWIDTH3, "K", $3a - fwcharmap TX_FULLWIDTH3, "L", $3b - fwcharmap TX_FULLWIDTH3, "M", $3c - fwcharmap TX_FULLWIDTH3, "N", $3d - fwcharmap TX_FULLWIDTH3, "O", $3e - fwcharmap TX_FULLWIDTH3, "P", $3f - fwcharmap TX_FULLWIDTH3, "Q", $40 - fwcharmap TX_FULLWIDTH3, "R", $41 - fwcharmap TX_FULLWIDTH3, "S", $42 - fwcharmap TX_FULLWIDTH3, "T", $43 - fwcharmap TX_FULLWIDTH3, "U", $44 - fwcharmap TX_FULLWIDTH3, "V", $45 - fwcharmap TX_FULLWIDTH3, "W", $46 - fwcharmap TX_FULLWIDTH3, "X", $47 - fwcharmap TX_FULLWIDTH3, "Y", $48 - fwcharmap TX_FULLWIDTH3, "Z", $49 - fwcharmap TX_FULLWIDTH3, "g", $4a - fwcharmap TX_FULLWIDTH3, "c", $4b - fwcharmap TX_FULLWIDTH3, "m", $4c - fwcharmap TX_FULLWIDTH3, "r.", $4d - fwcharmap TX_FULLWIDTH3, "♀", $4e - fwcharmap TX_FULLWIDTH3, "♂", $4f - fwcharmap TX_FULLWIDTH3, "【", $50 - fwcharmap TX_FULLWIDTH3, "】", $51 - fwcharmap TX_FULLWIDTH3, "●", $52 - fwcharmap TX_FULLWIDTH3, "◆", $53 - fwcharmap TX_FULLWIDTH3, "★", $54 - fwcharmap TX_FULLWIDTH3, "☆", $55 - fwcharmap TX_FULLWIDTH3, "_", $56 - fwcharmap TX_FULLWIDTH3, "▪", $57 - fwcharmap TX_FULLWIDTH3, "℃", $58 - fwcharmap TX_FULLWIDTH3, "゛", $59 - fwcharmap TX_FULLWIDTH3, "°", $5a - fwcharmap TX_FULLWIDTH3, "゜", $5b - fwcharmap TX_FULLWIDTH3, "ˍ", $5c - fwcharmap TX_FULLWIDTH3, "&", $5d - fwcharmap TX_FULLWIDTH3, ":", $5e - fwcharmap TX_FULLWIDTH3, "○", $5f - fwcharmap TX_FULLWIDTH3, "※", $60 - fwcharmap TX_FULLWIDTH3, "о", $61 - fwcharmap TX_FULLWIDTH3, "^", $62 - fwcharmap TX_FULLWIDTH3, "♪", $63 - fwcharmap TX_FULLWIDTH3, "a", $64 - fwcharmap TX_FULLWIDTH3, "b", $65 - fwcharmap TX_FULLWIDTH3, "d", $66 - fwcharmap TX_FULLWIDTH3, "e", $67 - fwcharmap TX_FULLWIDTH3, "f", $68 - fwcharmap TX_FULLWIDTH3, "h", $69 - fwcharmap TX_FULLWIDTH3, "i", $6a - fwcharmap TX_FULLWIDTH3, "j", $6b - fwcharmap TX_FULLWIDTH3, "k", $6c - fwcharmap TX_FULLWIDTH3, "l", $6d - fwcharmap TX_FULLWIDTH3, "n", $6e - fwcharmap TX_FULLWIDTH3, "o", $6f - fwcharmap TX_FULLWIDTH3, "p", $70 - fwcharmap TX_FULLWIDTH3, "q", $71 - fwcharmap TX_FULLWIDTH3, "s", $72 - fwcharmap TX_FULLWIDTH3, "t", $73 - fwcharmap TX_FULLWIDTH3, "u", $74 - fwcharmap TX_FULLWIDTH3, "v", $75 - fwcharmap TX_FULLWIDTH3, "w", $76 - fwcharmap TX_FULLWIDTH3, "x", $77 - fwcharmap TX_FULLWIDTH3, "y", $78 - fwcharmap TX_FULLWIDTH3, "z", $79 - fwcharmap TX_FULLWIDTH3, "'", $7a - fwcharmap TX_FULLWIDTH3, "”", $7b - fwcharmap TX_FULLWIDTH3, "■", $7c - fwcharmap TX_FULLWIDTH3, "r", $8e - fwcharmap TX_FULLWIDTH3, "「", $97 - fwcharmap TX_FULLWIDTH3, "\", $98 - fwcharmap TX_FULLWIDTH3, "」", $99 - fwcharmap TX_FULLWIDTH3, "|", $9a - fwcharmap TX_FULLWIDTH3, "ˉ", $9b - fwcharmap TX_FULLWIDTH3, " ", $9c - fwcharmap TX_FULLWIDTH3, "!", $9d - fwcharmap TX_FULLWIDTH3, "#", $9f - fwcharmap TX_FULLWIDTH3, "$", $a0 - fwcharmap TX_FULLWIDTH3, "%", $a1 - fwcharmap TX_FULLWIDTH3, "(", $a4 - fwcharmap TX_FULLWIDTH3, ")", $a5 - fwcharmap TX_FULLWIDTH3, "*", $a6 - fwcharmap TX_FULLWIDTH3, "+", $a7 - fwcharmap TX_FULLWIDTH3, "、", $a8 - fwcharmap TX_FULLWIDTH3, "-", $a9 - fwcharmap TX_FULLWIDTH3, "/", $ab - fwcharmap TX_FULLWIDTH3, "0", $ac - fwcharmap TX_FULLWIDTH3, "1", $ad - fwcharmap TX_FULLWIDTH3, "2", $ae - fwcharmap TX_FULLWIDTH3, "3", $af - fwcharmap TX_FULLWIDTH3, "4", $b0 - fwcharmap TX_FULLWIDTH3, "5", $b1 - fwcharmap TX_FULLWIDTH3, "6", $b2 - fwcharmap TX_FULLWIDTH3, "7", $b3 - fwcharmap TX_FULLWIDTH3, "8", $b4 - fwcharmap TX_FULLWIDTH3, "9", $b5 - fwcharmap TX_FULLWIDTH3, ";", $b7 - fwcharmap TX_FULLWIDTH3, "<", $b8 - fwcharmap TX_FULLWIDTH3, "=", $b9 - fwcharmap TX_FULLWIDTH3, ">", $ba - fwcharmap TX_FULLWIDTH3, "?", $bb - fwcharmap TX_FULLWIDTH3, "@", $bc - fwcharmap TX_FULLWIDTH3, "[", $d7 - fwcharmap TX_FULLWIDTH3, "¥", $d8 - fwcharmap TX_FULLWIDTH3, "]", $d9 + charmap "", TX_RAM1 + charmap "", TX_RAM2 + charmap "", TX_RAM3 + +MACRO fwcharmap + IF \1 == TX_KATAKANA + charmap \2, \3 + PUSHC katakana + charmap \2, \3 + POPC + ELIF \1 == TX_HIRAGANA + charmap \2, \3 + PUSHC hiragana + charmap \2, \3 + POPC + ELIF \1 == TX_FULLWIDTH0 + charmap \2, \3 + ELSE + charmap \2, \1, \3 + ENDC +ENDM ; TX_KATAKANA fwcharmap TX_KATAKANA, "ヲ", $10 @@ -386,7 +292,7 @@ ENDM fwcharmap TX_HIRAGANA, "ょ", $5e fwcharmap TX_HIRAGANA, "っ", $5f -; TX_KATAKANA, TX_HIRAGANA, and default font +; TX_KATAKANA, TX_HIRAGANA, and TX_FULLWIDTH0 fwcharmap TX_FULLWIDTH0, "0", $60 fwcharmap TX_FULLWIDTH0, "1", $61 fwcharmap TX_FULLWIDTH0, "2", $62 @@ -414,61 +320,160 @@ ENDM fwcharmap TX_FULLWIDTH0, "ー", $78 fwcharmap TX_FULLWIDTH0, "~", $79 -DEF FW_SPACE EQU $70 +; TX_FULLWIDTH3 + fwcharmap TX_FULLWIDTH3, "A", $30 + fwcharmap TX_FULLWIDTH3, "B", $31 + fwcharmap TX_FULLWIDTH3, "C", $32 + fwcharmap TX_FULLWIDTH3, "D", $33 + fwcharmap TX_FULLWIDTH3, "E", $34 + fwcharmap TX_FULLWIDTH3, "F", $35 + fwcharmap TX_FULLWIDTH3, "G", $36 + fwcharmap TX_FULLWIDTH3, "H", $37 + fwcharmap TX_FULLWIDTH3, "I", $38 + fwcharmap TX_FULLWIDTH3, "J", $39 + fwcharmap TX_FULLWIDTH3, "K", $3a + fwcharmap TX_FULLWIDTH3, "L", $3b + fwcharmap TX_FULLWIDTH3, "M", $3c + fwcharmap TX_FULLWIDTH3, "N", $3d + fwcharmap TX_FULLWIDTH3, "O", $3e + fwcharmap TX_FULLWIDTH3, "P", $3f + fwcharmap TX_FULLWIDTH3, "Q", $40 + fwcharmap TX_FULLWIDTH3, "R", $41 + fwcharmap TX_FULLWIDTH3, "S", $42 + fwcharmap TX_FULLWIDTH3, "T", $43 + fwcharmap TX_FULLWIDTH3, "U", $44 + fwcharmap TX_FULLWIDTH3, "V", $45 + fwcharmap TX_FULLWIDTH3, "W", $46 + fwcharmap TX_FULLWIDTH3, "X", $47 + fwcharmap TX_FULLWIDTH3, "Y", $48 + fwcharmap TX_FULLWIDTH3, "Z", $49 + fwcharmap TX_FULLWIDTH3, "g", $4a + fwcharmap TX_FULLWIDTH3, "c", $4b + fwcharmap TX_FULLWIDTH3, "m", $4c + fwcharmap TX_FULLWIDTH3, "r.", $4d + fwcharmap TX_FULLWIDTH3, "♀", $4e + fwcharmap TX_FULLWIDTH3, "♂", $4f + fwcharmap TX_FULLWIDTH3, "【", $50 + fwcharmap TX_FULLWIDTH3, "】", $51 + fwcharmap TX_FULLWIDTH3, "●", $52 + fwcharmap TX_FULLWIDTH3, "◆", $53 + fwcharmap TX_FULLWIDTH3, "★", $54 + fwcharmap TX_FULLWIDTH3, "☆", $55 + fwcharmap TX_FULLWIDTH3, "_", $56 + fwcharmap TX_FULLWIDTH3, "▪", $57 + fwcharmap TX_FULLWIDTH3, "℃", $58 + fwcharmap TX_FULLWIDTH3, "゛", $59 + fwcharmap TX_FULLWIDTH3, "°", $5a + fwcharmap TX_FULLWIDTH3, "゜", $5b + fwcharmap TX_FULLWIDTH3, "ˍ", $5c + fwcharmap TX_FULLWIDTH3, "&", $5d + fwcharmap TX_FULLWIDTH3, ":", $5e + fwcharmap TX_FULLWIDTH3, "○", $5f + fwcharmap TX_FULLWIDTH3, "※", $60 + fwcharmap TX_FULLWIDTH3, "о", $61 + fwcharmap TX_FULLWIDTH3, "^", $62 + fwcharmap TX_FULLWIDTH3, "♪", $63 + fwcharmap TX_FULLWIDTH3, "a", $64 + fwcharmap TX_FULLWIDTH3, "b", $65 + fwcharmap TX_FULLWIDTH3, "d", $66 + fwcharmap TX_FULLWIDTH3, "e", $67 + fwcharmap TX_FULLWIDTH3, "f", $68 + fwcharmap TX_FULLWIDTH3, "h", $69 + fwcharmap TX_FULLWIDTH3, "i", $6a + fwcharmap TX_FULLWIDTH3, "j", $6b + fwcharmap TX_FULLWIDTH3, "k", $6c + fwcharmap TX_FULLWIDTH3, "l", $6d + fwcharmap TX_FULLWIDTH3, "n", $6e + fwcharmap TX_FULLWIDTH3, "o", $6f + fwcharmap TX_FULLWIDTH3, "p", $70 + fwcharmap TX_FULLWIDTH3, "q", $71 + fwcharmap TX_FULLWIDTH3, "s", $72 + fwcharmap TX_FULLWIDTH3, "t", $73 + fwcharmap TX_FULLWIDTH3, "u", $74 + fwcharmap TX_FULLWIDTH3, "v", $75 + fwcharmap TX_FULLWIDTH3, "w", $76 + fwcharmap TX_FULLWIDTH3, "x", $77 + fwcharmap TX_FULLWIDTH3, "y", $78 + fwcharmap TX_FULLWIDTH3, "z", $79 + fwcharmap TX_FULLWIDTH3, "'", $7a + fwcharmap TX_FULLWIDTH3, "”", $7b + fwcharmap TX_FULLWIDTH3, "■", $7c + fwcharmap TX_FULLWIDTH3, "r", $8e + fwcharmap TX_FULLWIDTH3, "\", $98 + fwcharmap TX_FULLWIDTH3, "|", $9a + fwcharmap TX_FULLWIDTH3, "ˉ", $9b + fwcharmap TX_FULLWIDTH3, "#", $9f + fwcharmap TX_FULLWIDTH3, "$", $a0 + fwcharmap TX_FULLWIDTH3, "%", $a1 + fwcharmap TX_FULLWIDTH3, "*", $a6 + fwcharmap TX_FULLWIDTH3, ";", $b7 + fwcharmap TX_FULLWIDTH3, "<", $b8 + fwcharmap TX_FULLWIDTH3, "=", $b9 + fwcharmap TX_FULLWIDTH3, ">", $ba + fwcharmap TX_FULLWIDTH3, "@", $bc + fwcharmap TX_FULLWIDTH3, "[", $d7 + fwcharmap TX_FULLWIDTH3, "¥", $d8 + fwcharmap TX_FULLWIDTH3, "]", $d9 MACRO txsymbol - const SYM_\1 - charmap "<\1>", TX_SYMBOL, const_value - 1 + REDEF symbol EQUS \1 + charmap "<{symbol}>", TX_SYMBOL, const_value + PUSHC main + charmap "<{symbol}>", TX_SYMBOL, const_value + POPC + const SYM_{symbol} ENDM ; TX_SYMBOL const_def - txsymbol SPACE ; $00 - txsymbol FIRE ; $01 - txsymbol GRASS ; $02 - txsymbol LIGHTNING ; $03 - txsymbol WATER ; $04 - txsymbol FIGHTING ; $05 - txsymbol PSYCHIC ; $06 - txsymbol COLORLESS ; $07 - txsymbol POISONED ; $08 - txsymbol ASLEEP ; $09 - txsymbol CONFUSED ; $0a - txsymbol PARALYZED ; $0b - txsymbol CURSOR_U ; $0c - txsymbol POKEMON ; $0d - txsymbol ATK_DESCR ; $0e - txsymbol CURSOR_R ; $0f - txsymbol HP ; $10 - txsymbol Lv ; $11 - txsymbol E ; $12 - txsymbol No ; $13 - txsymbol PLUSPOWER ; $14 - txsymbol DEFENDER ; $15 - txsymbol HP_OK ; $16 - txsymbol HP_NOK ; $17 - txsymbol BOX_TOP_L ; $18 - txsymbol BOX_TOP_R ; $19 - txsymbol BOX_BTM_L ; $1a - txsymbol BOX_BTM_R ; $1b - txsymbol BOX_TOP ; $1c - txsymbol BOX_BOTTOM ; $1d - txsymbol BOX_LEFT ; $1e - txsymbol BOX_RIGHT ; $1f - txsymbol 0 ; $20 - txsymbol 1 ; $21 - txsymbol 2 ; $22 - txsymbol 3 ; $23 - txsymbol 4 ; $24 - txsymbol 5 ; $25 - txsymbol 6 ; $26 - txsymbol 7 ; $27 - txsymbol 8 ; $28 - txsymbol 9 ; $29 - txsymbol DOT ; $2a - txsymbol PLUS ; $2b - txsymbol MINUS ; $2c - txsymbol CROSS ; $2d - txsymbol SLASH ; $2e - txsymbol CURSOR_D ; $2f - txsymbol PRIZE ; $30 + txsymbol "SPACE" ; $00 + txsymbol "FIRE" ; $01 + txsymbol "GRASS" ; $02 + txsymbol "LIGHTNING" ; $03 + txsymbol "WATER" ; $04 + txsymbol "FIGHTING" ; $05 + txsymbol "PSYCHIC" ; $06 + txsymbol "COLORLESS" ; $07 + txsymbol "POISONED" ; $08 + txsymbol "ASLEEP" ; $09 + txsymbol "CONFUSED" ; $0a + txsymbol "PARALYZED" ; $0b + txsymbol "CURSOR_U" ; $0c + txsymbol "POKEMON" ; $0d + txsymbol "ATK_DESCR" ; $0e + txsymbol "CURSOR_R" ; $0f + txsymbol "HP" ; $10 + txsymbol "Lv" ; $11 + txsymbol "E" ; $12 + txsymbol "No" ; $13 + txsymbol "PLUSPOWER" ; $14 + txsymbol "DEFENDER" ; $15 + txsymbol "HP_OK" ; $16 + txsymbol "HP_NOK" ; $17 + txsymbol "BOX_TOP_L" ; $18 + txsymbol "BOX_TOP_R" ; $19 + txsymbol "BOX_BTM_L" ; $1a + txsymbol "BOX_BTM_R" ; $1b + txsymbol "BOX_TOP" ; $1c + txsymbol "BOX_BOTTOM" ; $1d + txsymbol "BOX_LEFT" ; $1e + txsymbol "BOX_RIGHT" ; $1f + txsymbol "0" ; $20 + txsymbol "1" ; $21 + txsymbol "2" ; $22 + txsymbol "3" ; $23 + txsymbol "4" ; $24 + txsymbol "5" ; $25 + txsymbol "6" ; $26 + txsymbol "7" ; $27 + txsymbol "8" ; $28 + txsymbol "9" ; $29 + txsymbol "DOT" ; $2a + txsymbol "PLUS" ; $2b + txsymbol "MINUS" ; $2c + txsymbol "CROSS" ; $2d + txsymbol "SLASH" ; $2e + txsymbol "CURSOR_D" ; $2f + txsymbol "PRIZE" ; $30 + +SETCHARMAP main diff --git a/src/engine/input_name.asm b/src/engine/input_name.asm index d5d7053..91cf4fc 100644 --- a/src/engine/input_name.asm +++ b/src/engine/input_name.asm @@ -281,9 +281,7 @@ PrintPlayerNameFromInput: .char_underbar db $56 -REPT 10 - textfw "_" -ENDR + textfw "__________" done ; checks if any buttons were pressed and handles the input. @@ -630,7 +628,7 @@ PlayerNamingScreen_ProcessInput: ld a, [wd009] cp $02 jr z, .read_char - lb bc, TX_FULLWIDTH3, "FW3_゛" + ldfw bc, "゛" ld a, d cp b jr nz, .asm_6af4 @@ -645,7 +643,7 @@ PlayerNamingScreen_ProcessInput: jr .asm_6b09 .asm_6af4 - lb bc, TX_FULLWIDTH3, "FW3_゜" + ldfw bc, "゜" ld a, d cp b jr nz, .asm_6b1d @@ -840,81 +838,86 @@ PlayerNamingScreen_GetCharInfoFromPos: ; unused data contains its character code as zero. MACRO kbitem db \1, \2, \3, \4 - IF (_NARG == 5) - dw \5 - ELIF (\5 == TX_FULLWIDTH0) - dw (\5 << 8) | STRCAT("FW0_", \6) - ELIF (\5 == TX_FULLWIDTH3) - dw (\5 << 8) | STRCAT("FW3_", \6) + PUSHC fullwidth + IF (_NARG > 4) + dwfw \5 ELSE - dw (\5 << 8) | \6 + dw 0 ENDC + POPC ENDM PlayerNamingScreen_KeyboardData: - kbitem $04, $02, $11, $00, TX_FULLWIDTH3, "A" - kbitem $06, $02, $12, $00, TX_FULLWIDTH3, "J" - kbitem $08, $02, $13, $00, TX_FULLWIDTH3, "S" - kbitem $0a, $02, $14, $00, TX_FULLWIDTH0, "?" - kbitem $0c, $02, $15, $00, TX_FULLWIDTH0, "4" - kbitem $10, $0f, $01, $09, $0000 + kbitem $04, $02, $11, $00, "A" + kbitem $06, $02, $12, $00, "J" + kbitem $08, $02, $13, $00, "S" + kbitem $0a, $02, $14, $00, "?" + kbitem $0c, $02, $15, $00, "4" + kbitem $10, $0f, $01, $09 - kbitem $04, $04, $16, $00, TX_FULLWIDTH3, "B" - kbitem $06, $04, $17, $00, TX_FULLWIDTH3, "K" - kbitem $08, $04, $18, $00, TX_FULLWIDTH3, "T" - kbitem $0a, $04, $19, $00, TX_FULLWIDTH3, "&" - kbitem $0c, $04, $1a, $00, TX_FULLWIDTH0, "5" - kbitem $10, $0f, $01, $09, $0000 + kbitem $04, $04, $16, $00, "B" + kbitem $06, $04, $17, $00, "K" + kbitem $08, $04, $18, $00, "T" + kbitem $0a, $04, $19, $00, "&" + kbitem $0c, $04, $1a, $00, "5" + kbitem $10, $0f, $01, $09 - kbitem $04, $06, $1b, $00, TX_FULLWIDTH3, "C" - kbitem $06, $06, $1c, $00, TX_FULLWIDTH3, "L" - kbitem $08, $06, $1d, $00, TX_FULLWIDTH3, "U" - kbitem $0a, $06, $1e, $00, TX_FULLWIDTH0, "+" - kbitem $0c, $06, $1f, $00, TX_FULLWIDTH0, "6" - kbitem $10, $0f, $01, $09, $0000 + kbitem $04, $06, $1b, $00, "C" + kbitem $06, $06, $1c, $00, "L" + kbitem $08, $06, $1d, $00, "U" + kbitem $0a, $06, $1e, $00, "+" + kbitem $0c, $06, $1f, $00, "6" + kbitem $10, $0f, $01, $09 - kbitem $04, $08, $20, $00, TX_FULLWIDTH3, "D" - kbitem $06, $08, $21, $00, TX_FULLWIDTH3, "M" - kbitem $08, $08, $22, $00, TX_FULLWIDTH3, "V" - kbitem $0a, $08, $23, $00, TX_FULLWIDTH0, "-" - kbitem $0c, $08, $24, $00, TX_FULLWIDTH0, "7" - kbitem $10, $0f, $01, $09, $0000 + kbitem $04, $08, $20, $00, "D" + kbitem $06, $08, $21, $00, "M" + kbitem $08, $08, $22, $00, "V" + kbitem $0a, $08, $23, $00, "-" + kbitem $0c, $08, $24, $00, "7" + kbitem $10, $0f, $01, $09 - kbitem $04, $0a, $25, $00, TX_FULLWIDTH3, "E" - kbitem $06, $0a, $26, $00, TX_FULLWIDTH3, "N" - kbitem $08, $0a, $27, $00, TX_FULLWIDTH3, "W" - kbitem $0a, $0a, $28, $00, TX_FULLWIDTH0, "・" - kbitem $0c, $0a, $29, $00, TX_FULLWIDTH0, "8" - kbitem $10, $0f, $01, $09, $0000 + kbitem $04, $0a, $25, $00, "E" + kbitem $06, $0a, $26, $00, "N" + kbitem $08, $0a, $27, $00, "W" + kbitem $0a, $0a, $28, $00, "・" + kbitem $0c, $0a, $29, $00, "8" + kbitem $10, $0f, $01, $09 - kbitem $04, $0c, $2a, $00, TX_FULLWIDTH3, "F" - kbitem $06, $0c, $2b, $00, TX_FULLWIDTH3, "O" - kbitem $08, $0c, $2c, $00, TX_FULLWIDTH3, "X" - kbitem $0a, $0c, $2d, $00, TX_FULLWIDTH0, "0" - kbitem $0c, $0c, $2e, $00, TX_FULLWIDTH0, "9" - kbitem $10, $0f, $01, $09, $0000 + kbitem $04, $0c, $2a, $00, "F" + kbitem $06, $0c, $2b, $00, "O" + kbitem $08, $0c, $2c, $00, "X" + kbitem $0a, $0c, $2d, $00, "0" + kbitem $0c, $0c, $2e, $00, "9" + kbitem $10, $0f, $01, $09 - kbitem $04, $0e, $2f, $00, TX_FULLWIDTH3, "G" - kbitem $06, $0e, $30, $00, TX_FULLWIDTH3, "P" - kbitem $08, $0e, $31, $00, TX_FULLWIDTH3, "Y" - kbitem $0a, $0e, $32, $00, TX_FULLWIDTH0, "1" - kbitem $0c, $0e, $33, $00, TX_SYMBOL, SYM_No - kbitem $10, $0f, $01, $09, $0000 + kbitem $04, $0e, $2f, $00, "G" + kbitem $06, $0e, $30, $00, "P" + kbitem $08, $0e, $31, $00, "Y" + kbitem $0a, $0e, $32, $00, "1" + kbitem $0c, $0e, $33, $00, "" + kbitem $10, $0f, $01, $09 - kbitem $04, $10, $34, $00, TX_FULLWIDTH3, "H" - kbitem $06, $10, $35, $00, TX_FULLWIDTH3, "Q" - kbitem $08, $10, $36, $00, TX_FULLWIDTH3, "Z" - kbitem $0a, $10, $3c, $00, TX_FULLWIDTH0, "2" - kbitem $0c, $10, $3d, $00, TX_SYMBOL, SYM_Lv - kbitem $10, $0f, $01, $09, $0000 + kbitem $04, $10, $34, $00, "H" + kbitem $06, $10, $35, $00, "Q" + kbitem $08, $10, $36, $00, "Z" + kbitem $0a, $10, $3c, $00, "2" + kbitem $0c, $10, $3d, $00, "" + kbitem $10, $0f, $01, $09 - kbitem $04, $12, $37, $00, TX_FULLWIDTH3, "I" - kbitem $06, $12, $38, $00, TX_FULLWIDTH3, "R" - kbitem $08, $12, $39, $00, TX_FULLWIDTH0, "!" - kbitem $0a, $12, $3a, $00, TX_FULLWIDTH0, "3" - kbitem $0c, $12, $3b, $00, TX_FULLWIDTH0, " " - kbitem $10, $0f, $01, $09, $0000 - kbitem $00, $00, $00, $00, $0000 + kbitem $04, $12, $37, $00, "I" + kbitem $06, $12, $38, $00, "R" + kbitem $08, $12, $39, $00, "!" + kbitem $0a, $12, $3a, $00, "3" + kbitem $0c, $12, $3b, $00, " " + kbitem $10, $0f, $01, $09 + kbitem $00, $00, $00, $00 + +MACRO diacritic + PUSHC hiragana + db \1, TX_HIRAGANA + db \2, 0 + POPC +ENDM ; a set of transition datum use to apply dakuten to katakana characters. ; unit: 4 bytes. @@ -923,47 +926,47 @@ PlayerNamingScreen_KeyboardData: ; - the former char. code contains 0x0e in high byte. ; - the latter char. code contains only low byte. TransitionTable1: - dw $0e16, $003e ; ka -> ga - dw $0e17, $003f ; ki -> gi - dw $0e18, $0040 ; ku -> gu - dw $0e19, $0041 ; ke -> ge - dw $0e1a, $0042 ; ko -> go - dw $0e1b, $0043 ; sa -> za - dw $0e1c, $0044 ; shi -> ji - dw $0e1d, $0045 ; su -> zu - dw $0e1e, $0046 ; se -> ze - dw $0e1f, $0047 ; so -> zo - dw $0e20, $0048 ; ta -> da - dw $0e21, $0049 ; chi -> dji - dw $0e22, $004a ; tsu -> dzu - dw $0e23, $004b ; te -> de - dw $0e24, $004c ; to -> do - dw $0e2a, $004d ; ha -> ba - dw $0e2b, $004e ; hi -> bi - dw $0e2c, $004f ; fu -> bu - dw $0e2d, $0050 ; he -> be - dw $0e2e, $0051 ; ho -> bo - dw $0e52, $004d ; pa -> ba - dw $0e53, $004e ; pi -> bi - dw $0e54, $004f ; pu -> bu - dw $0e55, $0050 ; pe -> be - dw $0e56, $0051 ; po -> bo - dw $0000 + diacritic "か", "が" ; katakana カ, ガ + diacritic "き", "ぎ" ; katakana キ, ギ + diacritic "く", "ぐ" ; katakana ク, グ + diacritic "け", "げ" ; katakana ケ, ゲ + diacritic "こ", "ご" ; katakana コ, ゴ + diacritic "さ", "ざ" ; katakana サ, ザ + diacritic "し", "じ" ; katakana シ, ジ + diacritic "す", "ず" ; katakana ス, ズ + diacritic "せ", "ぜ" ; katakana セ, ゼ + diacritic "そ", "ぞ" ; katakana ソ, ゾ + diacritic "た", "だ" ; katakana タ, ダ + diacritic "ち", "ぢ" ; katakana チ, ヂ + diacritic "つ", "づ" ; katakana ツ, ヅ + diacritic "て", "で" ; katakana テ, デ + diacritic "と", "ど" ; katakana ト, ド + diacritic "は", "ば" ; katakana ハ, バ + diacritic "ひ", "び" ; katakana ヒ, ビ + diacritic "ふ", "ぶ" ; katakana フ, ブ + diacritic "へ", "べ" ; katakana ヘ, ベ + diacritic "ほ", "ぼ" ; katakana ホ, ボ + diacritic "ぱ", "ば" ; katakana パ, バ + diacritic "ぴ", "び" ; katakana ピ, ビ + diacritic "ぷ", "ぶ" ; katakana プ, ブ + diacritic "ぺ", "べ" ; katakana ペ, ベ + diacritic "ぽ", "ぼ" ; katakana ポ, ボ + dw 0 ; end ; a set of transition datum use to apply handakuten to katakana characters. ; it has the same unit size and structure as TransitionTable1. TransitionTable2: - dw $0e2a, $0052 ; ha -> pa - dw $0e2b, $0053 ; hi -> pi - dw $0e2c, $0054 ; fu -> pu - dw $0e2d, $0055 ; he -> pe - dw $0e2e, $0056 ; ho -> po - dw $0e4d, $0052 ; ba -> pa - dw $0e4e, $0053 ; bi -> pi - dw $0e4f, $0054 ; bu -> pu - dw $0e50, $0055 ; be -> pe - dw $0e51, $0056 ; bo -> po - dw $0000 + diacritic "は", "ぱ" ; katakana ハ, パ + diacritic "ひ", "ぴ" ; katakana ヒ, ピ + diacritic "ふ", "ぷ" ; katakana フ, プ + diacritic "へ", "ぺ" ; katakana ヘ, ペ + diacritic "ほ", "ぽ" ; katakana ホ, ポ + diacritic "ば", "ぱ" ; katakana バ, パ + diacritic "び", "ぴ" ; katakana ビ, ピ + diacritic "ぶ", "ぷ" ; katakana ブ, プ + diacritic "べ", "ぺ" ; katakana ベ, ペ + diacritic "ぼ", "ぽ" ; katakana ボ, ポ + dw 0 ; end ; gets a deck name from user input and stores it in [de]. ; this function is similar to 'InputPlayerName'. @@ -1147,11 +1150,8 @@ PrintDeckNameFromInput: ret .underbar_data - db TX_HALFWIDTH -REPT MAX_DECK_NAME_LENGTH - db "_" -ENDR - db TX_END + text "____________________" + done ; draws the deck naming keyboard and prints the question, if it exists. ; this function is very similar to 'DrawPlayerNamingScreenBG'. diff --git a/src/engine/menus/card_album.asm b/src/engine/menus/card_album.asm index b437e4f..44b57ff 100644 --- a/src/engine/menus/card_album.asm +++ b/src/engine/menus/card_album.asm @@ -237,25 +237,25 @@ CreateCardSetListAndInitListCoords: push af cp CARD_SET_PROMOTIONAL jr nz, .laboratory - lb de, 3, "FW3_P" + ldfw de, "P" jr .got_prefix .laboratory cp CARD_SET_LABORATORY jr nz, .mystery - lb de, 3, "FW3_D" + ldfw de, "D" jr .got_prefix .mystery cp CARD_SET_MYSTERY jr nz, .evolution - lb de, 3, "FW3_C" + ldfw de, "C" jr .got_prefix .evolution cp CARD_SET_EVOLUTION jr nz, .colosseum - lb de, 3, "FW3_B" + ldfw de, "B" jr .got_prefix .colosseum - lb de, 3, "FW3_A" + ldfw de, "A" .got_prefix ld hl, wCurDeckName @@ -432,7 +432,7 @@ PrintCardSetListEntries: ld a, [hli] ld b, a ld hl, wCurDeckName + 2 - lb de, 3, "FW3_E" + ldfw de, "E" ld [hl], d inc hl ld [hl], e @@ -458,9 +458,9 @@ PrintCardSetListEntries: .phantom_card ; phantom cards get only "××" in their index number ld hl, wCurDeckName + 2 - ld [hl], "FW0_×" + ldfw [hl], "×" inc hl - ld [hl], "FW0_×" + ldfw [hl], "×" inc hl ld [hl], TX_SYMBOL inc hl diff --git a/src/engine/menus/deck_configuration.asm b/src/engine/menus/deck_configuration.asm index 20ca622..bdbaad7 100644 --- a/src/engine/menus/deck_configuration.asm +++ b/src/engine/menus/deck_configuration.asm @@ -2638,7 +2638,7 @@ PrintCurDeckNumberAndName: .got_deck_numeral ld hl, wDefaultText call ConvertToNumericalDigits - ld [hl], "FW0_・" + ldfw [hl], "・" inc hl ld [hl], TX_END ld hl, wDefaultText diff --git a/src/engine/menus/deck_machine.asm b/src/engine/menus/deck_machine.asm index 9dec966..b22e8d3 100644 --- a/src/engine/menus/deck_machine.asm +++ b/src/engine/menus/deck_machine.asm @@ -140,7 +140,7 @@ HandleDeckMissingCardsList: inc a ld hl, wDefaultText call ConvertToNumericalDigits - ld [hl], "FW0_・" + ldfw [hl], "・" inc hl ld [hl], TX_END ld hl, wDefaultText @@ -900,7 +900,7 @@ PrintDeckMachineEntry: ld hl, wDefaultText inc a call ConvertToNumericalDigits - ld [hl], "FW0_・" + ldfw [hl], "・" inc hl ld [hl], TX_END call InitTextPrinting @@ -954,7 +954,7 @@ PrintDeckMachineEntry: pop bc ld hl, wDefaultText jr c, .cannot_build - lb de, TX_FULLWIDTH3, "FW3_○" ; can build + ldfw de, "○" ; can build jr .asm_b4c2 .cannot_build push bc @@ -962,11 +962,11 @@ PrintDeckMachineEntry: call CheckIfCanBuildSavedDeck jr c, .cannot_build_at_all pop bc - lb de, TX_FULLWIDTH3, "FW3_※" ; can build by dismantling + ldfw de, "※" ; can build by dismantling jr .asm_b4c2 .cannot_build_at_all - lb de, TX_FULLWIDTH0, "FW0_×" ; cannot build even by dismantling + ldfw de, "×" ; cannot build even by dismantling call Func_22ca pop bc pop de diff --git a/src/home/process_text.asm b/src/home/process_text.asm index a5d307d..7d5b2f3 100644 --- a/src/home/process_text.asm +++ b/src/home/process_text.asm @@ -482,7 +482,7 @@ CopyTextData:: jr c, .fw_text_done push hl .fill_fw_loop - ld a, FW_SPACE + ldfw a, " " ld [hli], a dec d jr nz, .fill_fw_loop diff --git a/src/home/text_box.asm b/src/home/text_box.asm index ca922d2..f25ed27 100644 --- a/src/home/text_box.asm +++ b/src/home/text_box.asm @@ -83,7 +83,7 @@ DrawLabeledTextBox:: ld a, SYM_BOX_TOP_L ld [hli], a ; white tile before the text - ld a, FW_SPACE + ldfw a, " " ld [hli], a ; text label ld e, l @@ -97,7 +97,7 @@ DrawLabeledTextBox:: ; white tile after the text ld a, TX_HALF2FULL ld [hli], a - ld a, FW_SPACE + ldfw a, " " ld [hli], a pop de push de diff --git a/src/macros/text.asm b/src/macros/text.asm index 7cf197e..548ebf1 100644 --- a/src/macros/text.asm +++ b/src/macros/text.asm @@ -4,44 +4,36 @@ DEF done EQUS "db TX_END" DEF half2full EQUS "db TX_HALF2FULL" -MACRO _textfw - REPT _NARG - IF STRLEN(\1) > 0 - IF !STRCMP(STRSUB(\1, 1, 1), "<") && STRLEN(\1) > 1 - db \1 - ELSE - FOR i, 1, STRLEN(\1) + 1 - REDEF char EQUS STRSUB(\1, i, 1) - IF INCHARMAP("FW{x:TX_KATAKANA}_{char}") - IF cur_set != TX_KATAKANA - DEF cur_set = TX_KATAKANA - db cur_set - ENDC - db "FW{x:TX_KATAKANA}_{char}" - ELIF INCHARMAP("FW{x:TX_HIRAGANA}_{char}") - IF cur_set != TX_HIRAGANA - DEF cur_set = TX_HIRAGANA - db cur_set - ENDC - db "FW{x:TX_HIRAGANA}_{char}" - ELIF INCHARMAP("FW0_{char}") - db "FW0_{char}" - ELIF INCHARMAP("FW1_{char}") - db TX_FULLWIDTH1, "FW1_{char}" - ELIF INCHARMAP("FW2_{char}") - db TX_FULLWIDTH2, "FW2_{char}" - ELIF INCHARMAP("FW3_{char}") - db TX_FULLWIDTH3, "FW3_{char}" - ELIF INCHARMAP("FW4_{char}") - db TX_FULLWIDTH4, "FW4_{char}" - ELSE - FAIL "Unmapped fullwidth character: {char}" - ENDC - ENDR - ENDC +MACRO get_charset + PUSHC katakana + IF INCHARMAP(\1) + DEF charset = TX_KATAKANA + ELSE + SETCHARMAP hiragana + IF INCHARMAP(\1) + DEF charset = TX_HIRAGANA + ELSE + DEF charset = 0 ENDC + ENDC + POPC +ENDM + +MACRO _textfw + PUSHC fullwidth + REPT _NARG + FOR i, CHARLEN(\1) + REDEF char EQUS STRCHAR(\1, i) + get_charset "{char}" + IF charset != 0 && charset != cur_set + DEF cur_set = charset + db charset + ENDC + db "{char}" + ENDR SHIFT ENDR + POPC ENDM MACRO textfw @@ -65,3 +57,23 @@ MACRO hiragana db TX_HIRAGANA _textfw \# ENDM + +MACRO dwfw + PUSHC fullwidth + IF CHARSIZE(\1) > 1 + dw CHARVAL(\1, 0) << 8 + CHARVAL(\1, 1) + ELSE + dw \1 + ENDC + POPC +ENDM + +MACRO ldfw + PUSHC fullwidth + IF CHARSIZE(\2) > 1 + ld \1, CHARVAL(\2, 0) << 8 + CHARVAL(\2, 1) + ELSE + ld \1, \2 + ENDC + POPC +ENDM diff --git a/src/rgbdscheck.asm b/src/rgbdscheck.asm index ddf50e4..4761e22 100644 --- a/src/rgbdscheck.asm +++ b/src/rgbdscheck.asm @@ -1,6 +1,6 @@ IF !DEF(__RGBDS_MAJOR__) || !DEF(__RGBDS_MINOR__) || !DEF(__RGBDS_PATCH__) - fail "poketcg requires rgbds v0.9.0 or newer." + fail "poketcg requires rgbds v0.9.3 or newer." ENDC -IF __RGBDS_MAJOR__ == 0 && __RGBDS_MINOR__ < 9 - fail "poketcg requires rgbds v0.9.0 or newer." +IF __RGBDS_MAJOR__ == 0 && (__RGBDS_MINOR__ < 9 || (__RGBDS_MINOR__ == 9 && __RGBDS_PATCH__ < 3)) + fail "poketcg requires rgbds v0.9.3 or newer." ENDC diff --git a/src/text/text1.asm b/src/text/text1.asm index 88c2892..05d6d6a 100644 --- a/src/text/text1.asm +++ b/src/text/text1.asm @@ -602,7 +602,7 @@ SelectCheckText: done UnusedText0087: ; Unused - textfw "B", "", "S", "" + textfw "BS" done DuelistIsThinkingText: diff --git a/src/text/text2.asm b/src/text/text2.asm index 1b8e4a3..1e232c4 100644 --- a/src/text/text2.asm +++ b/src/text/text2.asm @@ -1554,7 +1554,7 @@ PlayerNameKeyboardText: linefw "J K L M N O P Q R" linefw "S T U V W X Y Z !" linefw "? & + - ・ 0 1 2 3" - linefw "4 5 6 7 8 9 ", "", " ", "", " " + linefw "4 5 6 7 8 9 " linefw " " done diff --git a/src/text/text9.asm b/src/text/text9.asm index 2babc43..2c89d1c 100644 --- a/src/text/text9.asm +++ b/src/text/text9.asm @@ -1155,27 +1155,27 @@ ChallengeMachineDuelLostIconText: done ChallengeMachineFireIconText: - textfw "【", "", "】" + textfw "【】" done ChallengeMachineLightningIconText: - textfw "【", "", "】" + textfw "【】" done ChallengeMachineWaterIconText: - textfw "【", "", "】" + textfw "【】" done ChallengeMachineFightingIconText: - textfw "【", "", "】" + textfw "【】" done ChallengeMachinePsychicIconText: - textfw "【", "", "】" + textfw "【】" done ChallengeMachineGrassIconText: - textfw "【", "", "】" + textfw "【】" done GrassEnergyName: