Legend OAM in branch space (#28), view map mode (#29), and talker events (#30)

This commit is contained in:
xCrystal 2023-12-23 14:44:36 +01:00
parent 2d8ccc53df
commit 05d925eeb4
15 changed files with 273 additions and 22 deletions

View File

@ -181,17 +181,25 @@ pushc
charmap "\r", $0d charmap "\r", $0d
popc popc
; Background tile equivalences (vTiles1) ;; Background tile equivalences (vTiles1)
DEF OVERWORLD_FRAME_FIRST_TILE EQU "┌" DEF OVERWORLD_FRAME_FIRST_TILE EQU "┌"
DEF BOARD_MENU_BG_FIRST_TILE EQU "A" DEF BOARD_MENU_BG_FIRST_TILE EQU "A"
; Object tile locations (vTiles0) ;; Object tile locations (vTiles0)
DEF SECONDARY_SPRITES_FIRST_TILE EQU $20 DEF SECONDARY_SPRITES_FIRST_TILE EQU $20
DEF BOARD_MENU_OAM_FIRST_TILE EQU SECONDARY_SPRITES_FIRST_TILE ; Menu and overworld
DEF DIE_ROLL_OAM_FIRST_TILE EQU BOARD_MENU_OAM_FIRST_TILE + 45 ; max(BOARD_MENU_ITEM_SIZE * NUM_BOARD_MENU_ITEMS, DIE_SIZE * 10) DEF BOARD_MENU_OAM_FIRST_TILE EQU SECONDARY_SPRITES_FIRST_TILE
DEF DIE_NUMBERS_OAM_FIRST_TILE EQU BOARD_MENU_OAM_FIRST_TILE DEF DIE_ROLL_OAM_FIRST_TILE EQU BOARD_MENU_OAM_FIRST_TILE + 45 ; max(BOARD_MENU_ITEM_SIZE * NUM_BOARD_MENU_ITEMS, DIE_SIZE * 10)
DEF DIE_NUMBERS_OAM_FIRST_TILE EQU BOARD_MENU_OAM_FIRST_TILE
DEF BRANCH_ARROWS_OAM_FIRST_TILE EQU DIE_NUMBERS_OAM_FIRST_TILE + 40 ; DIE_NUMBER_SIZE * 10 ; Branch space
DEF BRANCH_ARROWS_OAM_FIRST_TILE EQU DIE_NUMBERS_OAM_FIRST_TILE + 40 ; DIE_NUMBER_SIZE * 10
DEF BRANCH_LEGEND_OAM_FIRST_TILE EQU BRANCH_ARROWS_OAM_FIRST_TILE + 4 ; BRANCH_ARROWS_OAM_FIRST_TILE + NUM_DIRECTIONS
DEF VIEW_MAP_MODE_OAM_FIRST_TILE EQU BOARD_MENU_OAM_FIRST_TILE + 45 ; max(BRANCH_ARROWS_OAM_FIRST_TILE + NUM_DIRECTIONS, BOARD_MENU_ITEM_SIZE * NUM_BOARD_MENU_ITEMS) ; View map mode (from overworld or from branch space)
DEF VIEW_MAP_MODE_ARROWS_OAM_FIRST_TILE EQU BOARD_MENU_OAM_FIRST_TILE + 45 ; max(BRANCH_ARROWS_OAM_FIRST_TILE + NUM_DIRECTIONS, BOARD_MENU_ITEM_SIZE * NUM_BOARD_MENU_ITEMS)
DEF VIEW_MAP_MODE_LEGEND_OAM_FIRST_FILE EQU VIEW_MAP_MODE_ARROWS_OAM_FIRST_TILE + 4 ; VIEW_MAP_MODE_ARROWS_OAM_FIRST_TILE + NUM_DIRECTIONS
; Talker event
DEF TALKER_EVENT_LEGEND_OAM_FIRST_TILE EQU DIE_NUMBERS_OAM_FIRST_TILE + 40 ; DIE_NUMBER_SIZE * 10

View File

@ -8,11 +8,12 @@ DEF AUTO_INPUT EQU $ff
; wDisplaySecondarySprites ; wDisplaySecondarySprites
const_def const_def
const SECONDARYSPRITES_BOARD_MENU_F ; 0 const SECONDARYSPRITES_BOARD_MENU_F ; 0
const SECONDARYSPRITES_DIE_ROLL_F ; 1 const SECONDARYSPRITES_DIE_ROLL_F ; 1
const SECONDARYSPRITES_SPACES_LEFT_F ; 2 const SECONDARYSPRITES_SPACES_LEFT_F ; 2
const SECONDARYSPRITES_BRANCH_ARROWS_F ; 3 const SECONDARYSPRITES_BRANCH_SPACE_F ; 3
const SECONDARYSPRITES_VIEW_MAP_MODE_F ; 4 const SECONDARYSPRITES_VIEW_MAP_MODE_F ; 4
const SECONDARYSPRITES_TALKER_EVENT_F ; 5
; wCurDexMode:: ; wCurDexMode::
const_def const_def

View File

@ -1,3 +1,45 @@
; OAM tile grid
/*
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| | | | | | | | | | | | | | | | | | | | | 2
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| | | | | | | | | | | | | | | | | | | | | 3
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| | | | | | | | | | | | | | | | | | | | | 4
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| | | | | | | | | | | | | | | | | | | | | 5
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| | | | | | | | | | | | | | | | | | | | | 6
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| | | | | | | | | | | | | | | | | | | | | 7
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| | | | | | | | | | | | | | | | | | | | | 8
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| | | | | | | | | | | | | | | | | | | | | 9
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| | | | | | | | | | | | | | | | | | | | |10
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| | | | | | | | | | | | | | | | | | | | |11
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| | | | | | | | | | | | | | | | | | | | |12
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| | | | | | | | | | | | | | | | | | | | |13
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| | | | | | | | | | | | | | | | | | | | |14
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| | | | | | | | | | | | | | | | | | | | |15
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| | | | | | | | | | | | | | | | | | | | |16
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| | | | | | | | | | | | | | | | | | | | |17
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| | | | | | | | | | | | | | | | | | | | |18
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| | | | | | | | | | | | | | | | | | | | |19
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
*/
BoardMenuOAM: BoardMenuOAM:
; BOARDMENUITEM_DIE ; BOARDMENUITEM_DIE
dbsprite 2, 16, 4, 0, BOARD_MENU_OAM_FIRST_TILE, PAL_OW_MISC dbsprite 2, 16, 4, 0, BOARD_MENU_OAM_FIRST_TILE, PAL_OW_MISC
@ -121,9 +163,42 @@ BranchArrowsOAM:
dbsprite 9, 8, 4, 0, BRANCH_ARROWS_OAM_FIRST_TILE + 2, PAL_OW_RED ; up dbsprite 9, 8, 4, 0, BRANCH_ARROWS_OAM_FIRST_TILE + 2, PAL_OW_RED ; up
dbsprite 9, 12, 4, 0, BRANCH_ARROWS_OAM_FIRST_TILE + 3, PAL_OW_RED ; down dbsprite 9, 12, 4, 0, BRANCH_ARROWS_OAM_FIRST_TILE + 3, PAL_OW_RED ; down
BranchLegendOAM:
; the PAL_ argument is unused (actual palette comes from the player gender)
dbsprite 2, 16, 0, 4, BRANCH_LEGEND_OAM_FIRST_TILE + 2, PAL_OW_RED ; dpad icon
dbsprite 3, 16, 0, 4, BRANCH_LEGEND_OAM_FIRST_TILE + 5, PAL_OW_RED ; "choose" icon
dbsprite 4, 16, 0, 4, BRANCH_LEGEND_OAM_FIRST_TILE + 6, PAL_OW_RED ;
dbsprite 5, 16, 0, 4, BRANCH_LEGEND_OAM_FIRST_TILE + 7, PAL_OW_RED ;
dbsprite 2, 18, 0, 0, BRANCH_LEGEND_OAM_FIRST_TILE + 3, PAL_OW_RED ; select icon
dbsprite 3, 18, 0, 0, BRANCH_LEGEND_OAM_FIRST_TILE + 8, PAL_OW_RED ; "view" icon
dbsprite 4, 18, 0, 0, BRANCH_LEGEND_OAM_FIRST_TILE + 9, PAL_OW_RED ;
dbsprite 5, 18, 0, 0, BRANCH_LEGEND_OAM_FIRST_TILE + 10, PAL_OW_RED ;
ViewMapModeArrowsOAM: ViewMapModeArrowsOAM:
; the PAL_ argument is unused (actual palette comes from the player gender) ; the PAL_ argument is unused (actual palette comes from the player gender)
dbsprite 10, 18, 4, 4, VIEW_MAP_MODE_OAM_FIRST_TILE + 3, PAL_OW_RED ; down dbsprite 10, 18, 4, 4, VIEW_MAP_MODE_ARROWS_OAM_FIRST_TILE + 3, PAL_OW_RED ; down
dbsprite 10, 2, 4, 4, VIEW_MAP_MODE_OAM_FIRST_TILE + 2, PAL_OW_RED ; up dbsprite 10, 2, 4, 4, VIEW_MAP_MODE_ARROWS_OAM_FIRST_TILE + 2, PAL_OW_RED ; up
dbsprite 1, 10, 4, 0, VIEW_MAP_MODE_OAM_FIRST_TILE + 1, PAL_OW_RED ; left dbsprite 1, 10, 4, 0, VIEW_MAP_MODE_ARROWS_OAM_FIRST_TILE + 1, PAL_OW_RED ; left
dbsprite 19, 10, 4, 0, VIEW_MAP_MODE_OAM_FIRST_TILE, PAL_OW_RED ; right dbsprite 19, 10, 4, 0, VIEW_MAP_MODE_ARROWS_OAM_FIRST_TILE, PAL_OW_RED ; right
ViewMapModeLegendOAM:
; the PAL_ argument is unused (actual palette comes from the player gender)
dbsprite 2, 16, 0, 4, VIEW_MAP_MODE_LEGEND_OAM_FIRST_FILE + 2, PAL_OW_RED ; dpad icon
dbsprite 3, 16, 0, 4, VIEW_MAP_MODE_LEGEND_OAM_FIRST_FILE + 5, PAL_OW_RED ; "move" icon
dbsprite 4, 16, 0, 4, VIEW_MAP_MODE_LEGEND_OAM_FIRST_FILE + 6, PAL_OW_RED ;
dbsprite 5, 16, 0, 4, VIEW_MAP_MODE_LEGEND_OAM_FIRST_FILE + 7, PAL_OW_RED ;
dbsprite 2, 18, 0, 0, VIEW_MAP_MODE_LEGEND_OAM_FIRST_FILE + 1, PAL_OW_RED ; B icon
dbsprite 3, 18, 0, 0, VIEW_MAP_MODE_LEGEND_OAM_FIRST_FILE + 8, PAL_OW_RED ; "back" icon
dbsprite 4, 18, 0, 0, VIEW_MAP_MODE_LEGEND_OAM_FIRST_FILE + 9, PAL_OW_RED ;
dbsprite 5, 18, 0, 0, VIEW_MAP_MODE_LEGEND_OAM_FIRST_FILE + 10, PAL_OW_RED ;
TalkerEventLegendOAM:
; the PAL_ argument is unused (actual palette comes from the player gender)
dbsprite 2, 16, 0, 4, TALKER_EVENT_LEGEND_OAM_FIRST_TILE + 0, PAL_OW_RED ; A icon
dbsprite 3, 16, 0, 4, TALKER_EVENT_LEGEND_OAM_FIRST_TILE + 5, PAL_OW_RED ; "talk" icon
dbsprite 4, 16, 0, 4, TALKER_EVENT_LEGEND_OAM_FIRST_TILE + 6, PAL_OW_RED ;
dbsprite 5, 16, 0, 4, TALKER_EVENT_LEGEND_OAM_FIRST_TILE + 7, PAL_OW_RED ;
dbsprite 2, 18, 0, 0, TALKER_EVENT_LEGEND_OAM_FIRST_TILE + 1, PAL_OW_RED ; B icon
dbsprite 3, 18, 0, 0, TALKER_EVENT_LEGEND_OAM_FIRST_TILE + 8, PAL_OW_RED ; "skip" icon
dbsprite 4, 18, 0, 0, TALKER_EVENT_LEGEND_OAM_FIRST_TILE + 9, PAL_OW_RED ;
dbsprite 5, 18, 0, 0, TALKER_EVENT_LEGEND_OAM_FIRST_TILE + 10, PAL_OW_RED ;

View File

@ -176,9 +176,9 @@ ArriveToBranchSpaceScript:
call LoadTempSpaceBranchData call LoadTempSpaceBranchData
call .DisableDirectionsRequiringLockedTechniques call .DisableDirectionsRequiringLockedTechniques
; draw arrows for valid directions ; draw arrows for valid directions
farcall LoadBranchArrowsGFX farcall LoadBranchSpaceGFX
ld hl, wDisplaySecondarySprites ld hl, wDisplaySecondarySprites
set SECONDARYSPRITES_BRANCH_ARROWS_F, [hl] set SECONDARYSPRITES_BRANCH_SPACE_F, [hl]
; update sprites ; update sprites
jp UpdateActiveSprites jp UpdateActiveSprites
@ -260,7 +260,7 @@ PromptPlayerToChooseBranchDirection:
ld a, [hl] ld a, [hl]
ld [wCurSpaceNextSpace], a ld [wCurSpaceNextSpace], a
ld hl, wDisplaySecondarySprites ld hl, wDisplaySecondarySprites
res SECONDARYSPRITES_BRANCH_ARROWS_F, [hl] res SECONDARYSPRITES_BRANCH_SPACE_F, [hl]
ld a, TRUE ld a, TRUE
ldh [hScriptVar], a ldh [hScriptVar], a
jp PlayClickSFX jp PlayClickSFX
@ -292,7 +292,7 @@ PromptPlayerToChooseBranchDirection:
set INVISIBLE_F, [hl] set INVISIBLE_F, [hl]
ld hl, wDisplaySecondarySprites ld hl, wDisplaySecondarySprites
res SECONDARYSPRITES_SPACES_LEFT_F, [hl] res SECONDARYSPRITES_SPACES_LEFT_F, [hl]
res SECONDARYSPRITES_BRANCH_ARROWS_F, [hl] res SECONDARYSPRITES_BRANCH_SPACE_F, [hl]
farcall MockPlayerObject farcall MockPlayerObject
call UpdateSprites call UpdateSprites
farcall LoadViewMapModeGFX farcall LoadViewMapModeGFX

View File

@ -63,9 +63,15 @@ SeenByTalkerScript::
and TALKEREVENTTYPE_MASK and TALKEREVENTTYPE_MASK
cp TALKEREVENTTYPE_MANDATORY cp TALKEREVENTTYPE_MANDATORY
jr z, .skip jr z, .skip
farcall LoadTalkerEventLegendGFX
ld hl, wDisplaySecondarySprites
set SECONDARYSPRITES_TALKER_EVENT_F, [hl]
call UpdateActiveSprites
call JoyWaitAorB call JoyWaitAorB
call PlayClickSFX call PlayClickSFX
call WaitSFX call WaitSFX
ld hl, wDisplaySecondarySprites
res SECONDARYSPRITES_TALKER_EVENT_F, [hl]
ldh a, [hJoyPressed] ldh a, [hJoyPressed]
bit A_BUTTON_F, a bit A_BUTTON_F, a
jr z, .skip ; jump if b was pressed jr z, .skip ; jump if b was pressed

View File

@ -39,11 +39,21 @@ LoadBoardMenuDieNumbersGFX::
.DieNumbersOAMGFX: .DieNumbersOAMGFX:
INCBIN "gfx/board/die_numbers.2bpp" INCBIN "gfx/board/die_numbers.2bpp"
LoadBranchArrowsGFX:: LoadBranchSpaceGFX::
ld de, .BranchArrowsOAMGFX ld de, .BranchArrowsOAMGFX
ld hl, vTiles0 + BRANCH_ARROWS_OAM_FIRST_TILE * LEN_2BPP_TILE ld hl, vTiles0 + BRANCH_ARROWS_OAM_FIRST_TILE * LEN_2BPP_TILE
lb bc, BANK(.BranchArrowsOAMGFX), NUM_DIRECTIONS lb bc, BANK(.BranchArrowsOAMGFX), NUM_DIRECTIONS
call Get2bppViaHDMA call Get2bppViaHDMA
ld hl, vTiles0 + BRANCH_LEGEND_OAM_FIRST_TILE * LEN_2BPP_TILE
call LoadLegendButtonsGFX
ld de, LegendChooseOAMGFX
ld hl, vTiles0 + (BRANCH_LEGEND_OAM_FIRST_TILE + 5) * LEN_2BPP_TILE
lb bc, BANK(LegendChooseOAMGFX), 3
call Get2bppViaHDMA
ld de, LegendViewOAMGFX
ld hl, vTiles0 + (BRANCH_LEGEND_OAM_FIRST_TILE + 8) * LEN_2BPP_TILE
lb bc, BANK(LegendViewOAMGFX), 3
call Get2bppViaHDMA
ret ret
.BranchArrowsOAMGFX: .BranchArrowsOAMGFX:
@ -51,10 +61,60 @@ INCBIN "gfx/board/branch_arrows.2bpp"
LoadViewMapModeGFX:: LoadViewMapModeGFX::
ld de, .ViewMapModeArrowsOAMGFX ld de, .ViewMapModeArrowsOAMGFX
ld hl, vTiles0 + VIEW_MAP_MODE_OAM_FIRST_TILE * LEN_2BPP_TILE ld hl, vTiles0 + VIEW_MAP_MODE_ARROWS_OAM_FIRST_TILE * LEN_2BPP_TILE
lb bc, BANK(.ViewMapModeArrowsOAMGFX), NUM_DIRECTIONS lb bc, BANK(.ViewMapModeArrowsOAMGFX), NUM_DIRECTIONS
call Get2bppViaHDMA call Get2bppViaHDMA
ld hl, vTiles0 + VIEW_MAP_MODE_LEGEND_OAM_FIRST_FILE * LEN_2BPP_TILE
call LoadLegendButtonsGFX
ld de, LegendMoveOAMGFX
ld hl, vTiles0 + (VIEW_MAP_MODE_LEGEND_OAM_FIRST_FILE + 5) * LEN_2BPP_TILE
lb bc, BANK(LegendMoveOAMGFX), 3
call Get2bppViaHDMA
ld de, LegendBackOAMGFX
ld hl, vTiles0 + (VIEW_MAP_MODE_LEGEND_OAM_FIRST_FILE + 8) * LEN_2BPP_TILE
lb bc, BANK(LegendBackOAMGFX), 3
call Get2bppViaHDMA
ret ret
.ViewMapModeArrowsOAMGFX: .ViewMapModeArrowsOAMGFX:
INCBIN "gfx/board/view_map_arrows.2bpp" INCBIN "gfx/board/view_map_arrows.2bpp"
LoadTalkerEventLegendGFX::
ld hl, vTiles0 + TALKER_EVENT_LEGEND_OAM_FIRST_TILE * LEN_2BPP_TILE
call LoadLegendButtonsGFX
ld de, LegendTalkOAMGFX
ld hl, vTiles0 + (TALKER_EVENT_LEGEND_OAM_FIRST_TILE + 5) * LEN_2BPP_TILE
lb bc, BANK(LegendTalkOAMGFX), 3
call Get2bppViaHDMA
ld de, LegendSkipOAMGFX
ld hl, vTiles0 + (TALKER_EVENT_LEGEND_OAM_FIRST_TILE + 8) * LEN_2BPP_TILE
lb bc, BANK(LegendTalkOAMGFX), 3
call Get2bppViaHDMA
ret
LoadLegendButtonsGFX:
ld de, .LegendButtonsOAMGFX
lb bc, BANK(.LegendButtonsOAMGFX), 5
call Get2bppViaHDMA
ret
.LegendButtonsOAMGFX:
INCBIN "gfx/legend/buttons.2bpp"
LegendTalkOAMGFX:
INCBIN "gfx/legend/talk.2bpp"
LegendSkipOAMGFX:
INCBIN "gfx/legend/skip.2bpp"
LegendChooseOAMGFX:
INCBIN "gfx/legend/choose.2bpp"
LegendViewOAMGFX:
INCBIN "gfx/legend/view.2bpp"
LegendMoveOAMGFX:
INCBIN "gfx/legend/move.2bpp"
LegendBackOAMGFX:
INCBIN "gfx/legend/back.2bpp"

View File

@ -3112,10 +3112,12 @@ InitSecondarySprites:
call nz, InitDieRollSprites call nz, InitDieRollSprites
bit SECONDARYSPRITES_SPACES_LEFT_F, a bit SECONDARYSPRITES_SPACES_LEFT_F, a
call nz, InitSpacesLeftNumberSprites call nz, InitSpacesLeftNumberSprites
bit SECONDARYSPRITES_BRANCH_ARROWS_F, a bit SECONDARYSPRITES_BRANCH_SPACE_F, a
call nz, InitBranchArrowsSprites call nz, InitBranchArrowsSprites
bit SECONDARYSPRITES_VIEW_MAP_MODE_F, a bit SECONDARYSPRITES_VIEW_MAP_MODE_F, a
call nz, InitViewMapModeSprites call nz, InitViewMapModeSprites
bit SECONDARYSPRITES_TALKER_EVENT_F, a
call nz, InitTalkerEventSprites
ret ret
InitBoardMenuSprites: InitBoardMenuSprites:
@ -3200,6 +3202,7 @@ InitSpacesLeftNumberSprites:
InitBranchArrowsSprites: InitBranchArrowsSprites:
push af push af
;; arrows
; find the beginning of free space in OAM, and assure there's space for 4 objects ; find the beginning of free space in OAM, and assure there's space for 4 objects
ldh a, [hUsedSpriteIndex] ldh a, [hUsedSpriteIndex]
cp (NUM_SPRITE_OAM_STRUCTS * SPRITEOAMSTRUCT_LENGTH) - (NUM_DIRECTIONS * SPRITEOAMSTRUCT_LENGTH) + 1 cp (NUM_SPRITE_OAM_STRUCTS * SPRITEOAMSTRUCT_LENGTH) - (NUM_DIRECTIONS * SPRITEOAMSTRUCT_LENGTH) + 1
@ -3252,6 +3255,35 @@ InitBranchArrowsSprites:
dec c dec c
jr nz, .loop jr nz, .loop
;; legend
; find the beginning of free space in OAM, and assure there's space for 8 objects
ldh a, [hUsedSpriteIndex]
cp (NUM_SPRITE_OAM_STRUCTS * SPRITEOAMSTRUCT_LENGTH) - (8 * SPRITEOAMSTRUCT_LENGTH) + 1
jr nc, .oam_full
; copy the sprite data of the legend to the available space in OAM.
; the palette byte overrides that data as it matches the player's color palette.
ld e, a
ld d, HIGH(wShadowOAM)
gender_to_pal
ld b, a
ld c, 8 ; number of objects
ld hl, BranchLegendOAM
.loop2
push bc
ld bc, SPRITEOAMSTRUCT_LENGTH - 1
call CopyBytes
pop bc
ld a, b ; palette
ld [de], a
inc hl
inc de
dec c
jr nz, .loop2
ldh a, [hUsedSpriteIndex]
add (8 * SPRITEOAMSTRUCT_LENGTH)
ldh [hUsedSpriteIndex], a
.oam_full .oam_full
pop af pop af
ret ret
@ -3259,6 +3291,7 @@ InitBranchArrowsSprites:
InitViewMapModeSprites: InitViewMapModeSprites:
push af push af
;; arrows
; find the beginning of free space in OAM, and assure there's space for 4 objects ; find the beginning of free space in OAM, and assure there's space for 4 objects
ldh a, [hUsedSpriteIndex] ldh a, [hUsedSpriteIndex]
cp (NUM_SPRITE_OAM_STRUCTS * SPRITEOAMSTRUCT_LENGTH) - (NUM_DIRECTIONS * SPRITEOAMSTRUCT_LENGTH) + 1 cp (NUM_SPRITE_OAM_STRUCTS * SPRITEOAMSTRUCT_LENGTH) - (NUM_DIRECTIONS * SPRITEOAMSTRUCT_LENGTH) + 1
@ -3307,6 +3340,68 @@ InitViewMapModeSprites:
dec c dec c
jr nz, .loop jr nz, .loop
;; legend
; find the beginning of free space in OAM, and assure there's space for 8 objects
ldh a, [hUsedSpriteIndex]
cp (NUM_SPRITE_OAM_STRUCTS * SPRITEOAMSTRUCT_LENGTH) - (8 * SPRITEOAMSTRUCT_LENGTH) + 1
jr nc, .oam_full
; copy the sprite data of the legend to the available space in OAM.
; the palette byte overrides that data as it matches the player's color palette.
ld e, a
ld d, HIGH(wShadowOAM)
gender_to_pal
ld b, a
ld c, 8 ; number of objects
ld hl, ViewMapModeLegendOAM
.loop2
push bc
ld bc, SPRITEOAMSTRUCT_LENGTH - 1
call CopyBytes
pop bc
ld a, b ; palette
ld [de], a
inc hl
inc de
dec c
jr nz, .loop2
ldh a, [hUsedSpriteIndex]
add (8 * SPRITEOAMSTRUCT_LENGTH)
ldh [hUsedSpriteIndex], a
.oam_full
pop af
ret
InitTalkerEventSprites:
; find the beginning of free space in OAM, and assure there's space for 8 objects
ldh a, [hUsedSpriteIndex]
cp (NUM_SPRITE_OAM_STRUCTS * SPRITEOAMSTRUCT_LENGTH) - (8 * SPRITEOAMSTRUCT_LENGTH) + 1
jr nc, .oam_full
; copy the sprite data of the legend to the available space in OAM.
; the palette byte overrides that data as it matches the player's color palette.
ld e, a
ld d, HIGH(wShadowOAM)
gender_to_pal
ld b, a
ld c, 8 ; number of objects
ld hl, TalkerEventLegendOAM
.loop2
push bc
ld bc, SPRITEOAMSTRUCT_LENGTH - 1
call CopyBytes
pop bc
ld a, b ; palette
ld [de], a
inc hl
inc de
dec c
jr nz, .loop2
ldh a, [hUsedSpriteIndex]
add (8 * SPRITEOAMSTRUCT_LENGTH)
ldh [hUsedSpriteIndex], a
.oam_full .oam_full
pop af pop af
ret ret

View File

@ -1241,9 +1241,15 @@ Script_reloadmapafterviewmapmode:
jr z, .in_board_menu jr z, .in_board_menu
; .in_branch_space ; .in_branch_space
; load branch space gfx (overwritten by view map mode gfx)
; refresh sprites first without view map mode objects to avoid visual glitch
ld hl, wDisplaySecondarySprites
res SECONDARYSPRITES_VIEW_MAP_MODE_F, [hl]
call UpdateActiveSprites
farcall LoadBranchSpaceGFX
ld hl, wDisplaySecondarySprites ld hl, wDisplaySecondarySprites
set SECONDARYSPRITES_SPACES_LEFT_F, [hl] set SECONDARYSPRITES_SPACES_LEFT_F, [hl]
set SECONDARYSPRITES_BRANCH_ARROWS_F, [hl] set SECONDARYSPRITES_BRANCH_SPACE_F, [hl]
ld hl, wPlayerSpriteSetupFlags ld hl, wPlayerSpriteSetupFlags
; get the facing direction from the mocked object's facing direction ; get the facing direction from the mocked object's facing direction
ld a, [wMapObject{d:LAST_OBJECT}Movement] ld a, [wMapObject{d:LAST_OBJECT}Movement]

BIN
gfx/legend/back.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 B

BIN
gfx/legend/buttons.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 B

BIN
gfx/legend/choose.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 B

BIN
gfx/legend/move.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B

BIN
gfx/legend/skip.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 B

BIN
gfx/legend/talk.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 B

BIN
gfx/legend/view.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 B