Add Unown ! and ?

Taken from https://github.com/pret/pokecrystal/wiki/Add-a-new-Unown-form

There's some embedded palette errors that need fixing.
This commit is contained in:
Llinos Evans 2024-09-01 14:54:29 +01:00
parent bd817d99f9
commit 6a44f96575
29 changed files with 93 additions and 18 deletions

View file

@ -67,7 +67,7 @@
const ENGINE_UNLOCKED_UNOWNS_L_TO_R const ENGINE_UNLOCKED_UNOWNS_L_TO_R
const ENGINE_UNLOCKED_UNOWNS_S_TO_W const ENGINE_UNLOCKED_UNOWNS_S_TO_W
const ENGINE_UNLOCKED_UNOWNS_X_TO_Z const ENGINE_UNLOCKED_UNOWNS_X_TO_Z
const ENGINE_UNLOCKED_UNOWNS_UNUSED_4 const ENGINE_UNLOCKED_UNOWNS_EXCLAMATION_QUESTION
const ENGINE_UNLOCKED_UNOWNS_UNUSED_5 const ENGINE_UNLOCKED_UNOWNS_UNUSED_5
const ENGINE_UNLOCKED_UNOWNS_UNUSED_6 const ENGINE_UNLOCKED_UNOWNS_UNUSED_6
const ENGINE_UNLOCKED_UNOWNS_UNUSED_7 const ENGINE_UNLOCKED_UNOWNS_UNUSED_7

View file

@ -466,4 +466,6 @@ endc
const UNOWN_X ; 24 const UNOWN_X ; 24
const UNOWN_Y ; 25 const UNOWN_Y ; 25
const UNOWN_Z ; 26 const UNOWN_Z ; 26
const UNOWN_EXCLAMATION ; 27
const UNOWN_QUESTION ; 28
DEF NUM_UNOWN EQU const_value - 1 ; 26 DEF NUM_UNOWN EQU const_value - 1 ; 26

View file

@ -53,4 +53,8 @@ UnownPicPointers::
dba UnownYBackpic dba UnownYBackpic
dba UnownZFrontpic dba UnownZFrontpic
dba UnownZBackpic dba UnownZBackpic
dba UnownExclamationFrontpic
dba UnownExclamationBackpic
dba UnownQuestionFrontpic
dba UnownQuestionBackpic
assert_table_length NUM_UNOWN assert_table_length NUM_UNOWN

View file

@ -35,6 +35,8 @@ UnownWords:
dw UnownWordX dw UnownWordX
dw UnownWordY dw UnownWordY
dw UnownWordZ dw UnownWordZ
dw UnownWordExclamation
dw UnownWordQuestion
assert_table_length NUM_UNOWN + 1 assert_table_length NUM_UNOWN + 1
UnownWordA: unownword "ANGRY" UnownWordA: unownword "ANGRY"
@ -63,3 +65,6 @@ UnownWordW: unownword "WANT"
UnownWordX: unownword "XXXXX" UnownWordX: unownword "XXXXX"
UnownWordY: unownword "YIELD" UnownWordY: unownword "YIELD"
UnownWordZ: unownword "ZOOM" UnownWordZ: unownword "ZOOM"
UnownWordExclamation: unownword "(((((" ; "!!!!!" since "Z" + 1 == "("
UnownWordQuestion: unownword ")))))" ; "?????" since "Z" + 2 == ")"
; these use the words from the hgss unown report

View file

@ -13,6 +13,7 @@ UnlockedUnownLetterSets:
dw .Set_L_R ; UNLOCKED_UNOWNS_L_TO_R_F dw .Set_L_R ; UNLOCKED_UNOWNS_L_TO_R_F
dw .Set_S_W ; UNLOCKED_UNOWNS_S_TO_W_F dw .Set_S_W ; UNLOCKED_UNOWNS_S_TO_W_F
dw .Set_X_Z ; UNLOCKED_UNOWNS_X_TO_Z_F dw .Set_X_Z ; UNLOCKED_UNOWNS_X_TO_Z_F
dw .Set_Exclamation_Question ; UNLOCKED_UNOWNS_EXCLAMATION_QUESTION
assert_table_length NUM_UNLOCKED_UNOWN_SETS assert_table_length NUM_UNLOCKED_UNOWN_SETS
.Set_A_K: .Set_A_K:
@ -23,3 +24,5 @@ UnlockedUnownLetterSets:
unown_set S, T, U, V, W unown_set S, T, U, V, W
.Set_X_Z: .Set_X_Z:
unown_set X, Y, Z unown_set X, Y, Z
.Set_Exclamation_Question ; I'm not the biggest fan of this - could easily just put them with XYZ, but it seems in HGSS it was made more awkward, so let's do it this way. Could also be used to place them somewhere else - Tanoby Ruins?
unown_set EXCLAMATION, QUESTION

View file

@ -1,3 +1,5 @@
; Modified to add ! and ?
; Used https://github.com/pret/pokecrystal/wiki/Add-a-new-Unown-form
GetUnownLetter: GetUnownLetter:
; Return Unown letter in wUnownLetter based on DVs at hl ; Return Unown letter in wUnownLetter based on DVs at hl
@ -31,20 +33,25 @@ GetUnownLetter:
srl a srl a
or b or b
; Divide by 10 to get 0-25 ; Divide by 9 to get 0-28 - changed to add ! and ?
ldh [hDividend + 3], a ldh [hDividend + 3], a
xor a xor a
ldh [hDividend], a ldh [hDividend], a
ldh [hDividend + 1], a ldh [hDividend + 1], a
ldh [hDividend + 2], a ldh [hDividend + 2], a
ld a, $ff / NUM_UNOWN + 1 ld a, 9
ldh [hDivisor], a ldh [hDivisor], a
ld b, 4 ld b, 4
call Divide call Divide
; Increment to get 1-26 ; Increment to get 1-29
ldh a, [hQuotient + 3] ldh a, [hQuotient + 3]
inc a inc a
; The valid range is 1-28, so use UNOWN_E (5) instead of 29
cp NUM_UNOWN + 1
jr c, .valid
ld a, UNOWN_E
.valid
ld [wUnownLetter], a ld [wUnownLetter], a
ret ret

View file

@ -1005,7 +1005,7 @@ Pokedex_UnownModeEraseCursor:
Pokedex_UnownModePlaceCursor: Pokedex_UnownModePlaceCursor:
ld a, [wDexCurUnownIndex] ld a, [wDexCurUnownIndex]
ld c, FIRST_UNOWN_CHAR + NUM_UNOWN ; diamond cursor ld c, $5c ; diamond cursor
Pokedex_UnownModeUpdateCursorGfx: Pokedex_UnownModeUpdateCursorGfx:
ld e, a ld e, a
@ -1468,14 +1468,14 @@ Pokedex_PlaceSearchResultsTypeStrings:
Pokedex_DrawUnownModeBG: Pokedex_DrawUnownModeBG:
call Pokedex_FillBackgroundColor2 call Pokedex_FillBackgroundColor2
hlcoord 2, 1 hlcoord 2, 1
lb bc, 10, 13 lb bc, 10, 14
call Pokedex_PlaceBorder call Pokedex_PlaceBorder
hlcoord 2, 14 hlcoord 2, 14
lb bc, 1, 13 lb bc, 1, 14
call Pokedex_PlaceBorder call Pokedex_PlaceBorder
hlcoord 2, 15 hlcoord 2, 15
ld [hl], $3d ld [hl], $3d
hlcoord 16, 15 hlcoord 17, 15
ld [hl], $3e ld [hl], $3e
hlcoord 6, 5 hlcoord 6, 5
call Pokedex_PlaceFrontpicAtHL call Pokedex_PlaceFrontpicAtHL
@ -1529,14 +1529,16 @@ UnownModeLetterAndCursorCoords:
dwcoord 11, 3, 11, 2 ; P dwcoord 11, 3, 11, 2 ; P
dwcoord 12, 3, 12, 2 ; Q dwcoord 12, 3, 12, 2 ; Q
dwcoord 13, 3, 13, 2 ; R dwcoord 13, 3, 13, 2 ; R
dwcoord 14, 3, 15, 2 ; S dwcoord 14, 3, 14, 2 ; S
dwcoord 14, 4, 15, 4 ; T dwcoord 15, 3, 16, 2 ; T
dwcoord 14, 5, 15, 5 ; U dwcoord 15, 4, 16, 4 ; U
dwcoord 14, 6, 15, 6 ; V dwcoord 15, 5, 16, 5 ; V
dwcoord 14, 7, 15, 7 ; W dwcoord 15, 6, 16, 6 ; W
dwcoord 14, 8, 15, 8 ; X dwcoord 15, 7, 16, 7 ; X
dwcoord 14, 9, 15, 9 ; Y dwcoord 15, 8, 16, 8 ; Y
dwcoord 14,10, 15,10 ; Z dwcoord 15, 9, 16, 9 ; Z
dwcoord 15,10, 16,10 ; !
dwcoord 15,11, 16,11 ; ?
Pokedex_FillBackgroundColor2: Pokedex_FillBackgroundColor2:
hlcoord 0, 0 hlcoord 0, 0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 294 B

After

Width:  |  Height:  |  Size: 312 B

View file

@ -711,7 +711,10 @@ UnownRBackpic: INCBIN "gfx/pokemon/unown_r/back.2bpp.lz"
SECTION "Pics 19", ROMX SECTION "Pics 19", ROMX
; Seems to be an accidental copy of the previous bank UnownExclamationFrontpic: INCBIN "gfx/pokemon/unown_exclamation/front.animated.2bpp.lz"
UnownExclamationBackpic: INCBIN "gfx/pokemon/unown_exclamation/back.2bpp.lz"
UnownQuestionFrontpic: INCBIN "gfx/pokemon/unown_question/front.animated.2bpp.lz"
UnownQuestionBackpic: INCBIN "gfx/pokemon/unown_question/back.2bpp.lz"
BellignanFrontpic: INCBIN "gfx/pokemon/bellignan/front.animated.2bpp.lz" BellignanFrontpic: INCBIN "gfx/pokemon/bellignan/front.animated.2bpp.lz"
BellignanBackpic: INCBIN "gfx/pokemon/bellignan/back.2bpp.lz" BellignanBackpic: INCBIN "gfx/pokemon/bellignan/back.2bpp.lz"

View file

@ -0,0 +1,2 @@
Taken from here: https://github.com/pret/pokecrystal/wiki/Add-a-new-Pok%C3%A9mon
Made by SCMidna

View file

@ -26,4 +26,6 @@ UnownAnimationPointers:
dw UnownXAnimation dw UnownXAnimation
dw UnownYAnimation dw UnownYAnimation
dw UnownZAnimation dw UnownZAnimation
dw UnownExclamationAnimation
dw UnownQuestionAnimation
assert_table_length NUM_UNOWN assert_table_length NUM_UNOWN

View file

@ -24,3 +24,5 @@ UnownWAnimation: INCLUDE "gfx/pokemon/unown_w/anim.asm"
UnownXAnimation: INCLUDE "gfx/pokemon/unown_x/anim.asm" UnownXAnimation: INCLUDE "gfx/pokemon/unown_x/anim.asm"
UnownYAnimation: INCLUDE "gfx/pokemon/unown_y/anim.asm" UnownYAnimation: INCLUDE "gfx/pokemon/unown_y/anim.asm"
UnownZAnimation: INCLUDE "gfx/pokemon/unown_z/anim.asm" UnownZAnimation: INCLUDE "gfx/pokemon/unown_z/anim.asm"
UnownExclamationAnimation: INCLUDE "gfx/pokemon/unown_exclamation/anim.asm"
UnownQuestionAnimation: INCLUDE "gfx/pokemon/unown_question/anim.asm"

View file

@ -26,4 +26,6 @@ UnownBitmasksPointers:
dw UnownXBitmasks dw UnownXBitmasks
dw UnownYBitmasks dw UnownYBitmasks
dw UnownZBitmasks dw UnownZBitmasks
dw UnownExclamationBitmasks
dw UnownQuestionBitmasks
assert_table_length NUM_UNOWN assert_table_length NUM_UNOWN

View file

@ -24,3 +24,5 @@ UnownWBitmasks: INCLUDE "gfx/pokemon/unown_w/bitmask.asm"
UnownXBitmasks: INCLUDE "gfx/pokemon/unown_x/bitmask.asm" UnownXBitmasks: INCLUDE "gfx/pokemon/unown_x/bitmask.asm"
UnownYBitmasks: INCLUDE "gfx/pokemon/unown_y/bitmask.asm" UnownYBitmasks: INCLUDE "gfx/pokemon/unown_y/bitmask.asm"
UnownZBitmasks: INCLUDE "gfx/pokemon/unown_z/bitmask.asm" UnownZBitmasks: INCLUDE "gfx/pokemon/unown_z/bitmask.asm"
UnownExclamationBitmasks: INCLUDE "gfx/pokemon/unown_exclamation/bitmask.asm"
UnownQuestionBitmasks: INCLUDE "gfx/pokemon/unown_question/bitmask.asm"

View file

@ -0,0 +1,9 @@
frame 0, 09
frame 1, 09
frame 2, 09
frame 3, 05
frame 2, 05
frame 4, 05
frame 1, 05
frame 1, 05
endanim

View file

@ -0,0 +1,6 @@
frame 0, 18
setrepeat 2
frame 5, 05
frame 0, 05
dorepeat 2
endanim

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 B

View file

@ -0,0 +1 @@
Taken from Rangi's Tutorial: https://github.com/pret/pokecrystal/wiki/Add-a-new-Unown-form

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -26,4 +26,6 @@ UnownFramesPointers:
dw UnownXFrames dw UnownXFrames
dw UnownYFrames dw UnownYFrames
dw UnownZFrames dw UnownZFrames
dw UnownExclamationFrames
dw UnownQuestionFrames
assert_table_length NUM_UNOWN assert_table_length NUM_UNOWN

View file

@ -26,3 +26,5 @@ UnownWFrames: INCLUDE "gfx/pokemon/unown_w/frames.asm"
UnownXFrames: INCLUDE "gfx/pokemon/unown_x/frames.asm" UnownXFrames: INCLUDE "gfx/pokemon/unown_x/frames.asm"
UnownYFrames: INCLUDE "gfx/pokemon/unown_y/frames.asm" UnownYFrames: INCLUDE "gfx/pokemon/unown_y/frames.asm"
UnownZFrames: INCLUDE "gfx/pokemon/unown_z/frames.asm" UnownZFrames: INCLUDE "gfx/pokemon/unown_z/frames.asm"
UnownExclamationFrames: INCLUDE "gfx/pokemon/unown_exclamation/frames.asm"
UnownQuestionFrames: INCLUDE "gfx/pokemon/unown_question/frames.asm"

View file

@ -26,4 +26,6 @@ UnownAnimationIdlePointers:
dw UnownXAnimationIdle dw UnownXAnimationIdle
dw UnownYAnimationIdle dw UnownYAnimationIdle
dw UnownZAnimationIdle dw UnownZAnimationIdle
dw UnownExclamationAnimationIdle
dw UnownQuestionAnimationIdle
assert_table_length NUM_UNOWN assert_table_length NUM_UNOWN

View file

@ -24,3 +24,5 @@ UnownWAnimationIdle: INCLUDE "gfx/pokemon/unown_w/anim_idle.asm"
UnownXAnimationIdle: INCLUDE "gfx/pokemon/unown_x/anim_idle.asm" UnownXAnimationIdle: INCLUDE "gfx/pokemon/unown_x/anim_idle.asm"
UnownYAnimationIdle: INCLUDE "gfx/pokemon/unown_y/anim_idle.asm" UnownYAnimationIdle: INCLUDE "gfx/pokemon/unown_y/anim_idle.asm"
UnownZAnimationIdle: INCLUDE "gfx/pokemon/unown_z/anim_idle.asm" UnownZAnimationIdle: INCLUDE "gfx/pokemon/unown_z/anim_idle.asm"
UnownExclamationAnimationIdle: INCLUDE "gfx/pokemon/unown_exclamation/anim_idle.asm"
UnownQuestionAnimationIdle: INCLUDE "gfx/pokemon/unown_question/anim_idle.asm"

View file

@ -0,0 +1,8 @@
frame 0, 09
setrepeat 3
frame 1, 05
frame 2, 05
frame 1, 05
frame 0, 05
dorepeat 2
endanim

View file

@ -0,0 +1,6 @@
frame 0, 13
setrepeat 2
frame 3, 05
frame 0, 05
dorepeat 2
endanim

Binary file not shown.

After

Width:  |  Height:  |  Size: 481 B

View file

@ -0,0 +1 @@
Taken from Rangi's Tutorial: https://github.com/pret/pokecrystal/wiki/Add-a-new-Unown-form

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -3328,7 +3328,7 @@ wPartyMon{d:n}Nickname:: ds MON_NAME_LENGTH
endr endr
wPartyMonNicknamesEnd:: wPartyMonNicknamesEnd::
ds 22 ds 20 ; modified to fit the new unown
wPokedexCaught:: flag_array NUM_POKEMON wPokedexCaught:: flag_array NUM_POKEMON
wEndPokedexCaught:: wEndPokedexCaught::