summaryrefslogtreecommitdiff
path: root/engine/scrolling_menu.asm
diff options
context:
space:
mode:
authormid-kid <esteve.varela@gmail.com>2018-03-13 13:07:16 +0100
committermid-kid <esteve.varela@gmail.com>2018-03-13 13:21:40 +0100
commitbaa0dc5a963a79843b37888bcfe1d2dfe833ade9 (patch)
tree968c86105bd67a3121d8f3f20018bfc59191f4c9 /engine/scrolling_menu.asm
parent12070ca50067d3abe36a730190f88ee43f2cace9 (diff)
Organize the engine/ directory
This is an informed attempt at reorganizing the engine/ directory by creating categorized subdirectories, in order to make it easier to navigate and find things. The directories created are as follows: * engine/game: Contains all "minigames", things like the unown puzzle and slot machine. * engine/gfx: Contains all handling of graphics. From loading palettes to playing animations. * engine/link: Contains all multiplayer functionality. * engine/menu: Contains all generic/misc. menus and menu code. Other, more specialized menus are in their own subdirectories (pokedex, pokegear, party menu, etc). * engine/overworld: Contains all handling of the overworld. From loading and connecting maps to wild encounters and the scripting engine. * engine/pokegear: In the same vein as engine/pokedex, except it could use some more splitting up. * engine/pokemon: Contains everything related to manipulating pokemon data. From the pokemon storage system to evolution and mail. * engine/printer: Contains everything related to printing things as well as the printer communication. * engine/title: Contains intro sequences, title screens and credits.
Diffstat (limited to 'engine/scrolling_menu.asm')
-rwxr-xr-xengine/scrolling_menu.asm543
1 files changed, 0 insertions, 543 deletions
diff --git a/engine/scrolling_menu.asm b/engine/scrolling_menu.asm
deleted file mode 100755
index 3be3d839c..000000000
--- a/engine/scrolling_menu.asm
+++ /dev/null
@@ -1,543 +0,0 @@
-_InitScrollingMenu:: ; 245af
- xor a
- ld [wMenuJoypad], a
- ld [hBGMapMode], a
- inc a
- ld [hInMenu], a
- call InitScrollingMenuCursor
- call ScrollingMenu_InitFlags
- call ScrollingMenu_ValidateSwitchItem
- call ScrollingMenu_InitDisplay
- call ApplyTilemap
- xor a
- ld [hBGMapMode], a
- ret
-; 245cb
-
-_ScrollingMenu:: ; 245cb
-.loop
- call ScrollingMenuJoyAction
- jp c, .exit
- call z, .zero
- jr .loop
-; 245d6
-
-.exit ; 245d6
- call MenuClickSound
- ld [wMenuJoypad], a
- ld a, 0
- ld [hInMenu], a
- ret
-; 245e1
-
-.zero ; 245e1
- call ScrollingMenu_InitDisplay
- ld a, 1
- ld [hBGMapMode], a
- ld c, 3
- call DelayFrames
- xor a
- ld [hBGMapMode], a
- ret
-; 245f1
-
-ScrollingMenu_InitDisplay: ; 245f1
- xor a
- ld [hBGMapMode], a
- ld hl, wOptions
- ld a, [hl]
- push af
- set NO_TEXT_SCROLL, [hl]
- call ScrollingMenu_UpdateDisplay
- call ScrollingMenu_PlaceCursor
- call ScrollingMenu_CheckCallFunction3
- pop af
- ld [wOptions], a
- ret
-; 24609
-
-ScrollingMenuJoyAction: ; 24609
-.loop
- call ScrollingMenuJoypad
- ld a, [hJoyLast]
- and D_PAD
- ld b, a
- ld a, [hJoyPressed]
- and BUTTONS
- or b
- bit A_BUTTON_F, a
- jp nz, .a_button
- bit B_BUTTON_F, a
- jp nz, .b_button
- bit SELECT_F, a
- jp nz, .select
- bit START_F, a
- jp nz, .start
- bit D_RIGHT_F, a
- jp nz, .d_right
- bit D_LEFT_F, a
- jp nz, .d_left
- bit D_UP_F, a
- jp nz, .d_up
- bit D_DOWN_F, a
- jp nz, .d_down
- jr .loop
-; 24640
-
-.unreferenced ; unused
- ld a, -1
- and a
- ret
-; 24644
-
-.a_button ; 24644
- call PlaceHollowCursor
- ld a, [wMenuCursorY]
- dec a
- call ScrollingMenu_GetListItemCoordAndFunctionArgs
- ld a, [wMenuSelection]
- ld [wCurItem], a
- ld a, [wMenuSelectionQuantity]
- ld [wItemQuantityBuffer], a
- call ScrollingMenu_GetCursorPosition
- dec a
- ld [wScrollingMenuCursorPosition], a
- ld [wCurItemQuantity], a
- ld a, [wMenuSelection]
- cp -1
- jr z, .b_button
- ld a, A_BUTTON
- scf
- ret
-; 2466f
-
-.b_button ; 2466f
- ld a, B_BUTTON
- scf
- ret
-; 24673
-
-.select ; 24673
- ld a, [wMenuDataFlags]
- bit 7, a
- jp z, xor_a_dec_a
- ld a, [wMenuCursorY]
- dec a
- call ScrollingMenu_GetListItemCoordAndFunctionArgs
- ld a, [wMenuSelection]
- cp -1
- jp z, xor_a_dec_a
- call ScrollingMenu_GetCursorPosition
- dec a
- ld [wScrollingMenuCursorPosition], a
- ld a, SELECT
- scf
- ret
-; 24695
-
-.start ; 24695
- ld a, [wMenuDataFlags]
- bit 6, a
- jp z, xor_a_dec_a
- ld a, START
- scf
- ret
-; 246a1
-
-.d_left ; 246a1
- ld hl, w2DMenuFlags2
- bit 7, [hl]
- jp z, xor_a_dec_a
- ld a, [wMenuDataFlags]
- bit 3, a
- jp z, xor_a_dec_a
- ld a, D_LEFT
- scf
- ret
-; 246b5
-
-.d_right ; 246b5
- ld hl, w2DMenuFlags2
- bit 7, [hl]
- jp z, xor_a_dec_a
- ld a, [wMenuDataFlags]
- bit 2, a
- jp z, xor_a_dec_a
- ld a, D_RIGHT
- scf
- ret
-; 246c9
-
-.d_up ; 246c9
- ld hl, w2DMenuFlags2
- bit 7, [hl]
- jp z, xor_a
- ld hl, wMenuScrollPosition
- ld a, [hl]
- and a
- jr z, .xor_dec_up
- dec [hl]
- jp xor_a
-
-.xor_dec_up
- jp xor_a_dec_a
-; 246df
-
-.d_down ; 246df
- ld hl, w2DMenuFlags2
- bit 7, [hl]
- jp z, xor_a
- ld hl, wMenuScrollPosition
- ld a, [wMenuData_ScrollingMenuHeight]
- add [hl]
- ld b, a
- ld a, [wScrollingMenuListSize]
- cp b
- jr c, .xor_dec_down
- inc [hl]
- jp xor_a
-
-.xor_dec_down
- jp xor_a_dec_a
-; 246fc
-
-ScrollingMenu_GetCursorPosition: ; 246fc
- ld a, [wMenuScrollPosition]
- ld c, a
- ld a, [wMenuCursorY]
- add c
- ld c, a
- ret
-; 24706
-
-ScrollingMenu_ClearLeftColumn: ; 24706 (9:4706)
- call MenuBoxCoord2Tile
- ld de, SCREEN_WIDTH
- add hl, de
- ld de, 2 * SCREEN_WIDTH
- ld a, [wMenuData_ScrollingMenuHeight]
-.loop
- ld [hl], " "
- add hl, de
- dec a
- jr nz, .loop
- ret
-
-InitScrollingMenuCursor: ; 2471a
- ld hl, wMenuData_ItemsPointerAddr
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, [wMenuData_ItemsPointerBank]
- call GetFarByte
- ld [wScrollingMenuListSize], a
- ld a, [wMenuData_ScrollingMenuHeight]
- ld c, a
- ld a, [wMenuScrollPosition]
- add c
- ld c, a
- ld a, [wScrollingMenuListSize]
- inc a
- cp c
- jr nc, .skip
- ld a, [wMenuData_ScrollingMenuHeight]
- ld c, a
- ld a, [wScrollingMenuListSize]
- inc a
- sub c
- jr nc, .store
- xor a
-
-.store
- ld [wMenuScrollPosition], a
-
-.skip
- ld a, [wMenuScrollPosition]
- ld c, a
- ld a, [wMenuCursorBuffer]
- add c
- ld b, a
- ld a, [wScrollingMenuListSize]
- inc a
- cp b
- jr c, .asm_2475a
- jr nc, .asm_24763
-
-.asm_2475a
- xor a
- ld [wMenuScrollPosition], a
- ld a, $1
- ld [wMenuCursorBuffer], a
-
-.asm_24763
- ret
-; 24764
-
-ScrollingMenu_InitFlags: ; 24764
- ld a, [wMenuDataFlags]
- ld c, a
- ld a, [wScrollingMenuListSize]
- ld b, a
- ld a, [wMenuBorderTopCoord]
- add 1
- ld [w2DMenuCursorInitY], a
- ld a, [wMenuBorderLeftCoord]
- add 0
- ld [w2DMenuCursorInitX], a
- ld a, [wMenuData_ScrollingMenuHeight]
- cp b
- jr c, .no_extra_row
- jr z, .no_extra_row
- ld a, b
- inc a
-.no_extra_row
- ld [w2DMenuNumRows], a
- ld a, 1
- ld [w2DMenuNumCols], a
- ld a, $8c
- bit 2, c
- jr z, .skip_set_0
- set 0, a
-
-.skip_set_0
- bit 3, c
- jr z, .skip_set_1
- set 1, a
-
-.skip_set_1
- ld [w2DMenuFlags1], a
- xor a
- ld [w2DMenuFlags2], a
- ld a, $20
- ld [w2DMenuCursorOffsets], a
- ld a, A_BUTTON | B_BUTTON | D_UP | D_DOWN
- bit 7, c
- jr z, .disallow_select
- add SELECT
-
-.disallow_select
- bit 6, c
- jr z, .disallow_start
- add START
-
-.disallow_start
- ld [wMenuJoypadFilter], a
- ld a, [w2DMenuNumRows]
- ld b, a
- ld a, [wMenuCursorBuffer]
- and a
- jr z, .reset_cursor
- cp b
- jr z, .cursor_okay
- jr c, .cursor_okay
-
-.reset_cursor
- ld a, 1
-
-.cursor_okay
- ld [wMenuCursorY], a
- ld a, 1
- ld [wMenuCursorX], a
- xor a
- ld [wCursorCurrentTile], a
- ld [wCursorCurrentTile + 1], a
- ld [wCursorOffCharacter], a
- ret
-; 247dd
-
-ScrollingMenu_ValidateSwitchItem: ; 247dd
- ld a, [wScrollingMenuListSize]
- ld c, a
- ld a, [wSwitchItem]
- and a
- jr z, .done
- dec a
- cp c
- jr c, .done
- xor a
- ld [wSwitchItem], a
-
-.done
- ret
-; 247f0
-
-ScrollingMenu_UpdateDisplay: ; 247f0
- call ClearWholeMenuBox
- ld a, [wMenuDataFlags]
- bit 4, a ; place arrows
- jr z, .okay
- ld a, [wMenuScrollPosition]
- and a
- jr z, .okay
- ld a, [wMenuBorderTopCoord]
- ld b, a
- ld a, [wMenuBorderRightCoord]
- ld c, a
- call Coord2Tile
- ld [hl], "▲"
-
-.okay
- call MenuBoxCoord2Tile
- ld bc, SCREEN_WIDTH + 1
- add hl, bc
- ld a, [wMenuData_ScrollingMenuHeight]
- ld b, a
- ld c, $0
-.loop
- ld a, [wMenuScrollPosition]
- add c
- ld [wScrollingMenuCursorPosition], a
- ld a, c
- call ScrollingMenu_GetListItemCoordAndFunctionArgs
- ld a, [wMenuSelection]
- cp -1
- jr z, .cancel
- push bc
- push hl
- call ScrollingMenu_CallFunctions1and2
- pop hl
- ld bc, 2 * SCREEN_WIDTH
- add hl, bc
- pop bc
- inc c
- ld a, c
- cp b
- jr nz, .loop
- ld a, [wMenuDataFlags]
- bit 4, a ; place arrows
- jr z, .done
- ld a, [wMenuBorderBottomCoord]
- ld b, a
- ld a, [wMenuBorderRightCoord]
- ld c, a
- call Coord2Tile
- ld [hl], "▼"
-
-.done
- ret
-
-.cancel
- ld a, [wMenuDataFlags]
- bit 0, a ; call function on cancel
- jr nz, .call_function
- ld de, .string_2485f
- call PlaceString
- ret
-
-.string_2485f
- db "CANCEL@"
-
-.call_function
- ld d, h
- ld e, l
- ld hl, wMenuData_ScrollingMenuFunction1
- jp CallPointerAt
-; 2486e
-
-ScrollingMenu_CallFunctions1and2: ; 2486e
- push hl
- ld d, h
- ld e, l
- ld hl, wMenuData_ScrollingMenuFunction1
- call CallPointerAt
- pop hl
- ld a, [wMenuData_ScrollingMenuWidth]
- and a
- jr z, .done
- ld e, a
- ld d, $0
- add hl, de
- ld d, h
- ld e, l
- ld hl, wMenuData_ScrollingMenuFunction2
- call CallPointerAt
-
-.done
- ret
-; 2488b
-
-ScrollingMenu_PlaceCursor: ; 2488b
- ld a, [wSwitchItem]
- and a
- jr z, .done
- ld b, a
- ld a, [wMenuScrollPosition]
- cp b
- jr nc, .done
- ld c, a
- ld a, [wMenuData_ScrollingMenuHeight]
- add c
- cp b
- jr c, .done
- ld a, b
- sub c
- dec a
- add a
- add $1
- ld c, a
- ld a, [wMenuBorderTopCoord]
- add c
- ld b, a
- ld a, [wMenuBorderLeftCoord]
- add $0
- ld c, a
- call Coord2Tile
- ld [hl], "▷"
-
-.done
- ret
-; 248b8
-
-ScrollingMenu_CheckCallFunction3: ; 248b8
- ld a, [wMenuDataFlags]
- bit 5, a ; call function 3
- ret z
- bit 1, a ; call function 3 if not switching items
- jr z, .call
- ld a, [wSwitchItem]
- and a
- ret nz
-
-.call
- ld a, [wMenuCursorY]
- dec a
- call ScrollingMenu_GetListItemCoordAndFunctionArgs
- ld hl, wMenuData_ScrollingMenuFunction3
- call CallPointerAt
- ret
-; 248d5
-
-ScrollingMenu_GetListItemCoordAndFunctionArgs: ; 248d5
- push de
- push hl
- ld e, a
- ld a, [wMenuScrollPosition]
- add e
- ld e, a
- ld d, $0
- ld hl, wMenuData_ItemsPointerAddr
- ld a, [hli]
- ld h, [hl]
- ld l, a
- inc hl ; items
- ld a, [wMenuData_ScrollingMenuSpacing]
- cp 1
- jr z, .got_spacing
- cp 2
- jr z, .pointless_jump
-.pointless_jump
- add hl, de
-.got_spacing
- add hl, de
- ld a, [wMenuData_ItemsPointerBank]
- call GetFarByte
- ld [wMenuSelection], a
- ld [wCurItem], a
- inc hl
- ld a, [wMenuData_ItemsPointerBank]
- call GetFarByte
- ld [wMenuSelectionQuantity], a
- pop hl
- pop de
- ret
-; 2490c