summaryrefslogtreecommitdiff
path: root/engine/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/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/menu.asm')
-rwxr-xr-xengine/menu.asm841
1 files changed, 0 insertions, 841 deletions
diff --git a/engine/menu.asm b/engine/menu.asm
deleted file mode 100755
index 51de2e1a4..000000000
--- a/engine/menu.asm
+++ /dev/null
@@ -1,841 +0,0 @@
-_2DMenu_:: ; 2400e
- ld hl, CopyMenuData
- ld a, [wMenuData_2DMenuItemStringsBank]
- rst FarCall
-
- call Draw2DMenu
- call UpdateSprites
- call ApplyTilemap
- call Get2DMenuSelection
- ret
-; 24022
-
-_InterpretBattleMenu:: ; 24022
- ld hl, CopyMenuData
- ld a, [wMenuData_2DMenuItemStringsBank]
- rst FarCall
-
- call Draw2DMenu
- farcall MobileTextBorder
- call UpdateSprites
- call ApplyTilemap
- call Get2DMenuSelection
- ret
-; 2403c
-
-_InterpretMobileMenu:: ; 2403c
- ld hl, CopyMenuData
- ld a, [wMenuData_2DMenuItemStringsBank]
- rst FarCall
-
- call Draw2DMenu
- farcall MobileTextBorder
- call UpdateSprites
- call ApplyTilemap
- call Init2DMenuCursorPosition
- ld hl, w2DMenuFlags1
- set 7, [hl]
-.loop
- call DelayFrame
- farcall Function10032e
- ld a, [wcd2b]
- and a
- jr nz, .quit
- call MobileMenuJoypad
- ld a, [wMenuJoypadFilter]
- and c
- jr z, .loop
- call Mobile_GetMenuSelection
- ret
-
-.quit
- ld a, [w2DMenuNumCols]
- ld c, a
- ld a, [w2DMenuNumRows]
- call SimpleMultiply
- ld [wMenuCursorBuffer], a
- and a
- ret
-; 24085
-
-
-
-Draw2DMenu: ; 24085
- xor a
- ld [hBGMapMode], a
- call MenuBox
- call Place2DMenuItemStrings
- ret
-; 2408f
-
-Get2DMenuSelection: ; 2408f
- call Init2DMenuCursorPosition
- call StaticMenuJoypad
- call MenuClickSound
-Mobile_GetMenuSelection: ; 24098
- ld a, [wMenuDataFlags]
- bit 1, a
- jr z, .skip
- call GetMenuJoypad
- bit SELECT_F, a
- jr nz, .quit1
-
-.skip
- ld a, [wMenuDataFlags]
- bit 0, a
- jr nz, .skip2
- call GetMenuJoypad
- bit B_BUTTON_F, a
- jr nz, .quit2
-
-.skip2
- ld a, [w2DMenuNumCols]
- ld c, a
- ld a, [wMenuCursorY]
- dec a
- call SimpleMultiply
- ld c, a
- ld a, [wMenuCursorX]
- add c
- ld [wMenuCursorBuffer], a
- and a
- ret
-
-.quit1
- scf
- ret
-
-.quit2
- scf
- ret
-; 240cd
-
-Get2DMenuNumberOfColumns: ; 240cd
- ld a, [wMenuData_2DMenuDimensions]
- and $f
- ret
-; 240d3
-
-Get2DMenuNumberOfRows: ; 240d3
- ld a, [wMenuData_2DMenuDimensions]
- swap a
- and $f
- ret
-; 240db
-
-Place2DMenuItemStrings: ; 240db
- ld hl, wMenuData_2DMenuItemStringsAddr
- ld e, [hl]
- inc hl
- ld d, [hl]
- call GetMenuTextStartCoord
- call Coord2Tile
- call Get2DMenuNumberOfRows
- ld b, a
-.row
- push bc
- push hl
- call Get2DMenuNumberOfColumns
- ld c, a
-.col
- push bc
- ld a, [wMenuData_2DMenuItemStringsBank]
- call Place2DMenuItemName
- inc de
- ld a, [wMenuData_2DMenuSpacing]
- ld c, a
- ld b, 0
- add hl, bc
- pop bc
- dec c
- jr nz, .col
- pop hl
- ld bc, 2 * SCREEN_WIDTH
- add hl, bc
- pop bc
- dec b
- jr nz, .row
- ld hl, wMenuData_2DMenuFunctionAddr
- ld a, [hli]
- ld h, [hl]
- ld l, a
- or h
- ret z
- ld a, [wMenuData_2DMenuFunctionBank]
- rst FarCall
- ret
-; 2411a
-
-
-Init2DMenuCursorPosition: ; 2411a (9:411a)
- call GetMenuTextStartCoord
- ld a, b
- ld [w2DMenuCursorInitY], a
- dec c
- ld a, c
- ld [w2DMenuCursorInitX], a
- call Get2DMenuNumberOfRows
- ld [w2DMenuNumRows], a
- call Get2DMenuNumberOfColumns
- ld [w2DMenuNumCols], a
- call .InitFlags_a
- call .InitFlags_b
- call .InitFlags_c
- ld a, [w2DMenuNumCols]
- ld e, a
- ld a, [wMenuCursorBuffer]
- ld b, a
- xor a
- ld d, 0
-.loop
- inc d
- add e
- cp b
- jr c, .loop
- sub e
- ld c, a
- ld a, b
- sub c
- and a
- jr z, .reset1
- cp e
- jr z, .okay1
- jr c, .okay1
-.reset1
- ld a, 1
-.okay1
- ld [wMenuCursorX], a
- ld a, [w2DMenuNumRows]
- ld e, a
- ld a, d
- and a
- jr z, .reset2
- cp e
- jr z, .okay2
- jr c, .okay2
-.reset2
- ld a, 1
-.okay2
- ld [wMenuCursorY], a
- xor a
- ld [wCursorOffCharacter], a
- ld [wCursorCurrentTile], a
- ld [wCursorCurrentTile + 1], a
- ret
-; 24179
-
-.InitFlags_a: ; 24179
- xor a
- ld hl, w2DMenuFlags1
- ld [hli], a
- ld [hld], a
- ld a, [wMenuDataFlags]
- bit 5, a
- ret z
- set 5, [hl]
- set 4, [hl]
- ret
-; 2418a
-
-.InitFlags_b: ; 2418a
- ld a, [wMenuData_2DMenuSpacing]
- or $20
- ld [w2DMenuCursorOffsets], a
- ret
-; 24193
-
-.InitFlags_c: ; 24193
- ld hl, wMenuDataFlags
- ld a, A_BUTTON
- bit 0, [hl]
- jr nz, .skip
- or B_BUTTON
-.skip
- bit 1, [hl]
- jr z, .skip2
- or SELECT
-.skip2
- ld [wMenuJoypadFilter], a
- ret
-; 241a8
-
-
-_StaticMenuJoypad:: ; 241a8
- call Place2DMenuCursor
-_ScrollingMenuJoypad:: ; 241ab
- ld hl, w2DMenuFlags2
- res 7, [hl]
- ld a, [hBGMapMode]
- push af
- call MenuJoypadLoop
- pop af
- ld [hBGMapMode], a
- ret
-; 241ba
-
-MobileMenuJoypad: ; 241ba
- ld hl, w2DMenuFlags2
- res 7, [hl]
- ld a, [hBGMapMode]
- push af
- call Move2DMenuCursor
- call Do2DMenuRTCJoypad
- jr nc, .skip_joypad
- call _2DMenuInterpretJoypad
-.skip_joypad
- pop af
- ld [hBGMapMode], a
- call GetMenuJoypad
- ld c, a
- ret
-; 241d5
-
-
-Unreferenced_Function241d5: ; 241d5
- call Place2DMenuCursor
-.loop
- call Move2DMenuCursor
- call HDMATransferTileMapToWRAMBank3 ; BUG: This function is in another bank.
- ; Pointer in current bank (9) is bogus.
- call .loop2
- jr nc, .done
- call _2DMenuInterpretJoypad
- jr c, .done
- ld a, [w2DMenuFlags1]
- bit 7, a
- jr nz, .done
- call GetMenuJoypad
- ld c, a
- ld a, [wMenuJoypadFilter]
- and c
- jr z, .loop
-
-.done
- ret
-
-.loop2
- call Menu_WasButtonPressed
- ret c
- ld c, 1
- ld b, 3
- call AdvanceMobileInactivityTimerAndCheckExpired ; BUG: This function is in another bank.
- ; Pointer in current bank (9) is bogus.
- ret c
- farcall Function100337
- ret c
- ld a, [w2DMenuFlags1]
- bit 7, a
- jr z, .loop2
- and a
- ret
-; 24216
-
-
-MenuJoypadLoop: ; 24216
-.loop
- call Move2DMenuCursor
- call .BGMap_OAM
- call Do2DMenuRTCJoypad
- jr nc, .done
- call _2DMenuInterpretJoypad
- jr c, .done
- ld a, [w2DMenuFlags1]
- bit 7, a
- jr nz, .done
- call GetMenuJoypad
- ld b, a
- ld a, [wMenuJoypadFilter]
- and b
- jr z, .loop
-
-.done
- ret
-; 24238
-
-.BGMap_OAM: ; 24238
- ld a, [hOAMUpdate]
- push af
- ld a, $1
- ld [hOAMUpdate], a
- call WaitBGMap
- pop af
- ld [hOAMUpdate], a
- xor a
- ld [hBGMapMode], a
- ret
-; 24249
-
-Do2DMenuRTCJoypad: ; 24249
-.loopRTC
- call RTC
- call Menu_WasButtonPressed
- ret c
- ld a, [w2DMenuFlags1]
- bit 7, a
- jr z, .loopRTC
- and a
- ret
-; 24259
-
-Menu_WasButtonPressed: ; 24259
- ld a, [w2DMenuFlags1]
- bit 6, a
- jr z, .skip_to_joypad
- callfar PlaySpriteAnimationsAndDelayFrame
-
-.skip_to_joypad
- call JoyTextDelay
- call GetMenuJoypad
- and a
- ret z
- scf
- ret
-; 24270
-
-_2DMenuInterpretJoypad: ; 24270
- call GetMenuJoypad
- bit A_BUTTON_F, a
- jp nz, .a_b_start_select
- bit B_BUTTON_F, a
- jp nz, .a_b_start_select
- bit SELECT_F, a
- jp nz, .a_b_start_select
- bit START_F, a
- jp nz, .a_b_start_select
- bit D_RIGHT_F, a
- jr nz, .d_right
- bit D_LEFT_F, a
- jr nz, .d_left
- bit D_UP_F, a
- jr nz, .d_up
- bit D_DOWN_F, a
- jr nz, .d_down
- and a
- ret
-
-.set_bit_7 ; 24299
- ld hl, w2DMenuFlags2
- set 7, [hl]
- scf
- ret
-
-.d_down
- ld hl, wMenuCursorY
- ld a, [w2DMenuNumRows]
- cp [hl]
- jr z, .check_wrap_around_down
- inc [hl]
- xor a
- ret
-
-.check_wrap_around_down
- ld a, [w2DMenuFlags1]
- bit 5, a
- jr nz, .wrap_around_down
- bit 3, a
- jp nz, .set_bit_7
- xor a
- ret
-
-.wrap_around_down
- ld [hl], $1
- xor a
- ret
-
-.d_up
- ld hl, wMenuCursorY
- ld a, [hl]
- dec a
- jr z, .check_wrap_around_up
- ld [hl], a
- xor a
- ret
-
-.check_wrap_around_up
- ld a, [w2DMenuFlags1]
- bit 5, a
- jr nz, .wrap_around_up
- bit 2, a
- jp nz, .set_bit_7
- xor a
- ret
-
-.wrap_around_up
- ld a, [w2DMenuNumRows]
- ld [hl], a
- xor a
- ret
-
-.d_left
- ld hl, wMenuCursorX
- ld a, [hl]
- dec a
- jr z, .check_wrap_around_left
- ld [hl], a
- xor a
- ret
-
-.check_wrap_around_left
- ld a, [w2DMenuFlags1]
- bit 4, a
- jr nz, .wrap_around_left
- bit 1, a
- jp nz, .set_bit_7
- xor a
- ret
-
-.wrap_around_left
- ld a, [w2DMenuNumCols]
- ld [hl], a
- xor a
- ret
-
-.d_right
- ld hl, wMenuCursorX
- ld a, [w2DMenuNumCols]
- cp [hl]
- jr z, .check_wrap_around_right
- inc [hl]
- xor a
- ret
-
-.check_wrap_around_right
- ld a, [w2DMenuFlags1]
- bit 4, a
- jr nz, .wrap_around_right
- bit 0, a
- jp nz, .set_bit_7
- xor a
- ret
-
-.wrap_around_right
- ld [hl], $1
- xor a
- ret
-; 24318
-
-.a_b_start_select ; 24318
- xor a
- ret
-; 2431a
-
-Move2DMenuCursor: ; 2431a
- ld hl, wCursorCurrentTile
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, [hl]
- cp "▶"
- jr nz, Place2DMenuCursor
- ld a, [wCursorOffCharacter]
- ld [hl], a
-Place2DMenuCursor: ; 24329
- ld a, [w2DMenuCursorInitY]
- ld b, a
- ld a, [w2DMenuCursorInitX]
- ld c, a
- call Coord2Tile
- ld a, [w2DMenuCursorOffsets]
- swap a
- and $f
- ld c, a
- ld a, [wMenuCursorY]
- ld b, a
- xor a
- dec b
- jr z, .got_row
-.row_loop
- add c
- dec b
- jr nz, .row_loop
-
-.got_row
- ld c, SCREEN_WIDTH
- call AddNTimes
- ld a, [w2DMenuCursorOffsets]
- and $f
- ld c, a
- ld a, [wMenuCursorX]
- ld b, a
- xor a
- dec b
- jr z, .got_col
-.col_loop
- add c
- dec b
- jr nz, .col_loop
-
-.got_col
- ld c, a
- add hl, bc
- ld a, [hl]
- cp "▶"
- jr z, .cursor_on
- ld [wCursorOffCharacter], a
- ld [hl], "▶"
-
-.cursor_on
- ld a, l
- ld [wCursorCurrentTile], a
- ld a, h
- ld [wCursorCurrentTile + 1], a
- ret
-; 24374
-
-_PushWindow:: ; 24374
- ld a, [rSVBK]
- push af
- ld a, BANK(wWindowStack)
- ld [rSVBK], a
-
- ld hl, wWindowStackPointer
- ld e, [hl]
- inc hl
- ld d, [hl]
- push de
-
- ld b, $10
- ld hl, wMenuFlags
-.loop
- ld a, [hli]
- ld [de], a
- dec de
- dec b
- jr nz, .loop
-
-; If bit 6 or 7 of the menu flags is set, set bit 0 of the address
-; at 7:[wWindowStackPointer], and draw the menu using the coordinates from the header.
-; Otherwise, reset bit 0 of 7:[wWindowStackPointer].
- ld a, [wMenuFlags]
- bit 6, a
- jr nz, .bit_6
- bit 7, a
- jr z, .not_bit_7
-
-.bit_6
- ld hl, wWindowStackPointer
- ld a, [hli]
- ld h, [hl]
- ld l, a
- set 0, [hl]
- call MenuBoxCoord2Tile
- call .copy
- call MenuBoxCoord2Attr
- call .copy
- jr .done
-
-.not_bit_7
- pop hl ; last-pushed register was de
- push hl
- ld a, [hld]
- ld l, [hl]
- ld h, a
- res 0, [hl]
-
-.done
- pop hl
- call .ret ; empty function
- ld a, h
- ld [de], a
- dec de
- ld a, l
- ld [de], a
- dec de
- ld hl, wWindowStackPointer
- ld [hl], e
- inc hl
- ld [hl], d
-
- pop af
- ld [rSVBK], a
- ld hl, wWindowStackSize
- inc [hl]
- ret
-; 243cd
-
-.copy ; 243cd
- call GetMenuBoxDims
- inc b
- inc c
- call .ret ; empty function
-
-.row
- push bc
- push hl
-
-.col
- ld a, [hli]
- ld [de], a
- dec de
- dec c
- jr nz, .col
-
- pop hl
- ld bc, SCREEN_WIDTH
- add hl, bc
- pop bc
- dec b
- jr nz, .row
-
- ret
-; 243e7
-
-.ret ; 243e7
- ret
-; 243e8
-
-_ExitMenu:: ; 243e8
- xor a
- ld [hBGMapMode], a
-
- ld a, [rSVBK]
- push af
- ld a, BANK(wWindowStack)
- ld [rSVBK], a
-
- call GetWindowStackTop
- ld a, l
- or h
- jp z, Error_Cant_ExitMenu
- ld a, l
- ld [wWindowStackPointer], a
- ld a, h
- ld [wWindowStackPointer + 1], a
- call PopWindow
- ld a, [wMenuFlags]
- bit 0, a
- jr z, .loop
- ld d, h
- ld e, l
- call RestoreTileBackup
-
-.loop
- call GetWindowStackTop
- ld a, h
- or l
- jr z, .done
- call PopWindow
-
-.done
- pop af
- ld [rSVBK], a
- ld hl, wWindowStackSize
- dec [hl]
- ret
-; 24423
-
-Unreferenced_Function24423: ; 24423
- ld a, [wVramState]
- bit 0, a
- ret z
- xor a ; sScratch
- call GetSRAMBank
- hlcoord 0, 0
- ld de, sScratch
- ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
- call CopyBytes
- call CloseSRAM
- call OverworldTextModeSwitch
- xor a ; sScratch
- call GetSRAMBank
- ld hl, sScratch
- decoord 0, 0
- ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-.loop
- ld a, [hl]
- cp $61
- jr c, .next
- ld [de], a
-.next
- inc hl
- inc de
- dec bc
- ld a, c
- or b
- jr nz, .loop
- call CloseSRAM
- ret
-; 2445d
-
-Error_Cant_ExitMenu: ; 2445d
- ld hl, .Text_NoWindowsAvailableForPopping
- call PrintText
- call WaitBGMap
-.InfiniteLoop:
- jr .InfiniteLoop
-; 24468
-
-.Text_NoWindowsAvailableForPopping: ; 24468
- text_jump UnknownText_0x1c46b7
- db "@"
-; 2446d
-
-_InitVerticalMenuCursor:: ; 2446d
- ld a, [wMenuDataFlags]
- ld b, a
- ld hl, w2DMenuCursorInitY
- ld a, [wMenuBorderTopCoord]
- inc a
- bit 6, b
- jr nz, .skip_offset
- inc a
-.skip_offset
- ld [hli], a
-; w2DMenuCursorInitX
- ld a, [wMenuBorderLeftCoord]
- inc a
- ld [hli], a
-; w2DMenuNumRows
- ld a, [wMenuDataItems]
- ld [hli], a
-; w2DMenuNumCols
- ld a, 1
- ld [hli], a
-; w2DMenuFlags1
- ld [hl], $0
- bit 5, b
- jr z, .skip_bit_5
- set 5, [hl]
-.skip_bit_5
- ld a, [wMenuFlags]
- bit 4, a
- jr z, .skip_bit_6
- set 6, [hl]
-.skip_bit_6
- inc hl
-; w2DMenuFlags2
- xor a
- ld [hli], a
-; w2DMenuCursorOffsets
- ln a, 2, 0
- ld [hli], a
-; wMenuJoypadFilter
- ld a, A_BUTTON
- bit 0, b
- jr nz, .skip_bit_1
- add B_BUTTON
-.skip_bit_1
- ld [hli], a
-; wMenuCursorY
- ld a, [wMenuCursorBuffer]
- and a
- jr z, .load_at_the_top
- ld c, a
- ld a, [wMenuDataItems]
- cp c
- jr nc, .load_position
-.load_at_the_top
- ld c, 1
-.load_position
- ld [hl], c
- inc hl
-; wMenuCursorX
- ld a, 1
- ld [hli], a
-; wCursorOffCharacter, wCursorCurrentTile
- xor a
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ret
-; 244c3