You've already forked pokecrystal-board
mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2025-09-08 08:13:02 -07:00
Board menu: die roll input and animation (#11)
This commit is contained in:
@@ -11,7 +11,9 @@ BoardMenuScript::
|
||||
end
|
||||
|
||||
.Die:
|
||||
closetext
|
||||
callasm BoardMenu_Die
|
||||
iffalse BoardMenuScript
|
||||
callasm BoardMenu_BreakDieAnimation
|
||||
end
|
||||
|
||||
.Party:
|
||||
@@ -180,6 +182,50 @@ GetBoardMenuSelection:
|
||||
xor a
|
||||
ret ; nc
|
||||
|
||||
BoardMenu_Die:
|
||||
DIE_MAX_NUMBER EQU 6
|
||||
ld hl, wDisplaySecondarySprites
|
||||
set SECONDARYSPRITES_DIE_ROLL_F, [hl]
|
||||
ld a, 1
|
||||
ld [wDieRoll], a
|
||||
call HDMATransferTilemapAndAttrmap_OpenAndCloseMenu ;
|
||||
call CloseText ; closetext
|
||||
|
||||
.rotate_die_loop
|
||||
call IsSFXPlaying
|
||||
ld de, SFX_KINESIS
|
||||
call c, PlaySFX
|
||||
call Random
|
||||
.sample_die_loop
|
||||
sub DIE_MAX_NUMBER
|
||||
jr nc, .sample_die_loop
|
||||
add DIE_MAX_NUMBER
|
||||
add $1
|
||||
ld [wDieRoll], a
|
||||
farcall _UpdateSprites
|
||||
call GetJoypad
|
||||
ldh a, [hJoyPressed]
|
||||
bit B_BUTTON_F, a
|
||||
jr nz, .back_to_menu
|
||||
bit A_BUTTON_F, a
|
||||
jr nz, .confirm_roll
|
||||
call DelayFrame
|
||||
jr .rotate_die_loop
|
||||
|
||||
.back_to_menu
|
||||
call PlayClickSFX
|
||||
ld hl, wDisplaySecondarySprites
|
||||
res SECONDARYSPRITES_DIE_ROLL_F, [hl]
|
||||
xor a ; FALSE
|
||||
ld [wScriptVar], a
|
||||
ret
|
||||
|
||||
.confirm_roll
|
||||
call PlayClickSFX
|
||||
ld a, TRUE
|
||||
ld [wScriptVar], a
|
||||
ret
|
||||
|
||||
BoardMenu_Party:
|
||||
ld a, [wPartyCount]
|
||||
and a
|
||||
@@ -201,6 +247,9 @@ BoardMenu_Party:
|
||||
ldh [hMenuReturn], a
|
||||
ret
|
||||
|
||||
BoardMenu_BreakDieAnimation:
|
||||
ret
|
||||
|
||||
BoardMenu_Pack:
|
||||
call BoardMenu_OpenSubmenu
|
||||
farcall Pack
|
||||
|
||||
@@ -7,6 +7,10 @@ LoadBoardMenuGFX::
|
||||
ld hl, vTiles0 + BOARD_MENU_OAM_FIRST_TILE * LEN_2BPP_TILE
|
||||
lb bc, BANK(.BoardMenuOAMGFX), BOARD_MENU_ITEM_SIZE * NUM_BOARD_MENU_ITEMS
|
||||
call Get2bppViaHDMA
|
||||
ld de, .DieRollOAMGFX
|
||||
ld hl, vTiles0 + DIE_ROLL_OAM_FIRST_TILE * LEN_2BPP_TILE
|
||||
lb bc, BANK(.BoardMenuOAMGFX), DIE_SIZE * 10
|
||||
call Get2bppViaHDMA
|
||||
ret
|
||||
|
||||
.BoardMenuGFX:
|
||||
@@ -20,3 +24,6 @@ INCBIN "gfx/board/menu_pack.2bpp"
|
||||
INCBIN "gfx/board/menu_pokegear.2bpp"
|
||||
INCBIN "gfx/board/menu_exit.2bpp"
|
||||
assert_table_length NUM_BOARD_MENU_ITEMS
|
||||
|
||||
.DieRollOAMGFX:
|
||||
INCBIN "gfx/board/die_roll.2bpp"
|
||||
@@ -807,7 +807,6 @@ PlayerMovementPointers:
|
||||
CheckMenuOW:
|
||||
xor a
|
||||
ldh [hMenuReturn], a
|
||||
ldh [hUnusedByte], a
|
||||
ldh a, [hJoyPressed]
|
||||
|
||||
bit SELECT_F, a
|
||||
|
||||
@@ -3074,10 +3074,12 @@ InitSprites:
|
||||
InitSecondarySprites:
|
||||
ld a, [wDisplaySecondarySprites]
|
||||
bit SECONDARYSPRITES_BOARD_MENU_F, a
|
||||
call nz, .InitBoardMenuSprites
|
||||
call nz, InitBoardMenuSprites
|
||||
bit SECONDARYSPRITES_DIE_ROLL_F, a
|
||||
call nz, InitRollDieSprites
|
||||
ret
|
||||
|
||||
.InitBoardMenuSprites:
|
||||
InitBoardMenuSprites:
|
||||
push af
|
||||
|
||||
ld hl, BoardMenuOAM
|
||||
@@ -3102,4 +3104,30 @@ InitSecondarySprites:
|
||||
pop af
|
||||
ret
|
||||
|
||||
InitRollDieSprites:
|
||||
push af
|
||||
|
||||
ld hl, DieRollOAM
|
||||
ld a, [wDieRoll]
|
||||
dec a
|
||||
ld bc, DIE_SIZE * SPRITEOAMSTRUCT_LENGTH
|
||||
call AddNTimes
|
||||
; find the beginning of free space in OAM, and assure there's space for a DIE_SIZE object
|
||||
ldh a, [hUsedSpriteIndex]
|
||||
cp (NUM_SPRITE_OAM_STRUCTS * SPRITEOAMSTRUCT_LENGTH) - (DIE_SIZE * SPRITEOAMSTRUCT_LENGTH) + 1
|
||||
jr nc, .oam_full
|
||||
; copy the sprite data (DIE_SIZE objects) of that item to the available space in OAM
|
||||
ld e, a
|
||||
ld d, HIGH(wShadowOAM)
|
||||
ld bc, DIE_SIZE * SPRITEOAMSTRUCT_LENGTH
|
||||
call CopyBytes
|
||||
|
||||
ldh a, [hUsedSpriteIndex]
|
||||
add (DIE_SIZE * SPRITEOAMSTRUCT_LENGTH)
|
||||
ldh [hUsedSpriteIndex], a
|
||||
|
||||
.oam_full
|
||||
pop af
|
||||
ret
|
||||
|
||||
INCLUDE "data/sprites/secondary_sprites.asm"
|
||||
|
||||
Reference in New Issue
Block a user