This commit is contained in:
Rangi
2018-04-04 23:56:40 -04:00
274 changed files with 667 additions and 554 deletions

1447
engine/menus/debug.asm Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,36 @@
_DeleteSaveData: ; 4d54c
farcall BlankScreen
ld b, SCGB_DIPLOMA
call GetSGBLayout
call LoadStandardFont
call LoadFontsExtra
ld de, MUSIC_MAIN_MENU
call PlayMusic
ld hl, .Text_ClearAllSaveData
call PrintText
ld hl, .NoYesMenuHeader
call CopyMenuHeader
call VerticalMenu
ret c
ld a, [wMenuCursorY]
cp $1
ret z
farcall EmptyAllSRAMBanks
ret
.Text_ClearAllSaveData: ; 0x4d580
; Clear all save data?
text_jump UnknownText_0x1c564a
db "@"
.NoYesMenuHeader: ; 0x4d585
db 0 ; flags
menu_coords 14, 7, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
dw .MenuData
db 1 ; default option
.MenuData: ; 0x4d58d
db STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING ; flags
db 2 ; items
db "NO@"
db "YES@"

View File

@@ -0,0 +1,19 @@
EmptyAllSRAMBanks: ; 4cf1f
ld a, 0
call .EmptyBank
ld a, 1
call .EmptyBank
ld a, 2
call .EmptyBank
ld a, 3
call .EmptyBank
ret
.EmptyBank: ; 4cf34
call GetSRAMBank
ld hl, SRAM_Begin
ld bc, SRAM_End - SRAM_Begin
xor a
call ByteFill
call CloseSRAM
ret

View File

@@ -0,0 +1,111 @@
InitCrystalData: ; 48000
ld a, $1
ld [wd474], a
xor a
ld [wd473], a
ld [wPlayerGender], a
ld [wd475], a
ld [wd476], a
ld [wd477], a
ld [wd478], a
ld [wd002], a
ld [wd003], a
; could have done "ld a, [wd479] \ and %11111100", saved four operations
ld a, [wd479]
res 0, a
ld [wd479], a
ld a, [wd479]
res 1, a
ld [wd479], a
ret
; 4802f
INCLUDE "mobile/mobile_12.asm"
InitGender: ; 48dcb (12:4dcb)
call InitGenderScreen
call LoadGenderScreenPal
call LoadGenderScreenLightBlueTile
call WaitBGMap2
call SetPalettes
ld hl, TextJump_AreYouABoyOrAreYouAGirl
call PrintText
ld hl, .MenuHeader
call LoadMenuHeader
call WaitBGMap2
call VerticalMenu
call CloseWindow
ld a, [wMenuCursorY]
dec a
ld [wPlayerGender], a
ld c, 10
call DelayFrames
ret
; 48dfc (12:4dfc)
.MenuHeader: ; 0x48dfc
db MENU_BACKUP_TILES ; flags
menu_coords 6, 4, 12, 9
dw .MenuData
db 1 ; default option
; 0x48e04
.MenuData: ; 0x48e04
db STATICMENU_CURSOR | STATICMENU_WRAP | STATICMENU_DISABLE_B ; flags
db 2 ; items
db "Boy@"
db "Girl@"
; 0x48e0f
TextJump_AreYouABoyOrAreYouAGirl: ; 0x48e0f
; Are you a boy? Or are you a girl?
text_jump Text_AreYouABoyOrAreYouAGirl
db "@"
; 0x48e14
InitGenderScreen: ; 48e14 (12:4e14)
ld a, $10
ld [wMusicFade], a
ld a, MUSIC_NONE
ld [wMusicFadeID], a
ld a, $0
ld [wMusicFadeID + 1], a
ld c, 8
call DelayFrames
call ClearBGPalettes
call InitCrystalData
call LoadFontsExtra
hlcoord 0, 0
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
ld a, $0
call ByteFill
hlcoord 0, 0, wAttrMap
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
xor a
call ByteFill
ret
LoadGenderScreenPal: ; 48e47 (12:4e47)
ld hl, .Palette
ld de, wBGPals1
ld bc, 1 palettes
ld a, BANK(wBGPals1)
call FarCopyWRAM
farcall ApplyPals
ret
; 48e5c (12:4e5c)
.Palette: ; 48e5c
INCLUDE "gfx/new_game/gender_screen.pal"
; 48e64
LoadGenderScreenLightBlueTile: ; 48e64 (12:4e64)
ld de, .LightBlueTile
ld hl, vTiles2 tile $00
lb bc, BANK(.LightBlueTile), 1
call Get2bpp
ret
; 48e71 (12:4e71)
.LightBlueTile: ; 48e71
INCBIN "gfx/new_game/gender_screen.2bpp"

1418
engine/menus/intro_menu.asm Normal file

File diff suppressed because it is too large Load Diff

361
engine/menus/main_menu.asm Normal file
View File

@@ -0,0 +1,361 @@
GFX_49c0c: ; 49c0c
INCBIN "gfx/unknown/049c0c.2bpp"
; 49cdc
MainMenu: ; 49cdc
xor a
ld [wDisableTextAcceleration], a
call Function49ed0
ld b, SCGB_DIPLOMA
call GetSGBLayout
call SetPalettes
ld hl, wGameTimerPause
res GAMETIMERPAUSE_TIMER_PAUSED_F, [hl]
call MainMenu_GetWhichMenu
ld [wWhichIndexSet], a
call MainMenu_PrintCurrentTimeAndDay
ld hl, .MenuHeader
call LoadMenuHeader
call MainMenuJoypadLoop
call CloseWindow
jr c, .quit
call ClearTileMap
ld a, [wMenuSelection]
ld hl, .Jumptable
rst JumpTable
jr MainMenu
.quit
ret
; 49d14
.MenuHeader: ; 49d14
db MENU_BACKUP_TILES ; flags
menu_coords 0, 0, 16, 7
dw .MenuData
db 1 ; default option
; 49d1c
.MenuData: ; 49d1c
db STATICMENU_CURSOR ; flags
db 0 ; items
dw MainMenuItems
dw PlaceMenuStrings
dw .Strings
; 49d20
.Strings: ; 49d24
db "CONTINUE@"
db "NEW GAME@"
db "OPTION@"
db "MYSTERY GIFT@"
db "MOBILE@"
db "MOBILE STUDIUM@"
.Jumptable: ; 0x49d60
dw MainMenu_Continue
dw MainMenu_NewGame
dw MainMenu_Options
dw MainMenu_MysteryGift
dw MainMenu_Mobile
dw MainMenu_MobileStudium
; 0x49d6c
CONTINUE EQU 0
NEW_GAME EQU 1
OPTION EQU 2
MYSTERY_GIFT EQU 3
MOBILE EQU 4
MOBILE_STUDIUM EQU 5
MainMenuItems:
NewGameMenu: ; 0x49d6c
db 2
db NEW_GAME
db OPTION
db -1
ContinueMenu: ; 0x49d70
db 3
db CONTINUE
db NEW_GAME
db OPTION
db -1
MobileMysteryMenu: ; 0x49d75
db 5
db CONTINUE
db NEW_GAME
db OPTION
db MYSTERY_GIFT
db MOBILE
db -1
MobileMenu: ; 0x49d7c
db 4
db CONTINUE
db NEW_GAME
db OPTION
db MOBILE
db -1
MobileStudiumMenu: ; 0x49d82
db 5
db CONTINUE
db NEW_GAME
db OPTION
db MOBILE
db MOBILE_STUDIUM
db -1
MysteryMobileStudiumMenu: ; 0x49d89
db 6
db CONTINUE
db NEW_GAME
db OPTION
db MYSTERY_GIFT
db MOBILE
db MOBILE_STUDIUM
db -1
MysteryMenu: ; 0x49d91
db 4
db CONTINUE
db NEW_GAME
db OPTION
db MYSTERY_GIFT
db -1
MysteryStudiumMenu: ; 0x49d97
db 5
db CONTINUE
db NEW_GAME
db OPTION
db MYSTERY_GIFT
db MOBILE_STUDIUM
db -1
StudiumMenu: ; 0x49d9e
db 4
db CONTINUE
db NEW_GAME
db OPTION
db MOBILE_STUDIUM
db -1
MainMenu_GetWhichMenu: ; 49da4
nop
nop
nop
ld a, [wSaveFileExists]
and a
jr nz, .next
ld a, $0 ; New Game
ret
.next
ld a, [hCGB]
cp $1
ld a, $1
ret nz
ld a, BANK(sNumDailyMysteryGiftPartnerIDs)
call GetSRAMBank
ld a, [sNumDailyMysteryGiftPartnerIDs]
cp -1
call CloseSRAM
jr nz, .mystery_gift
; This check makes no difference.
ld a, [wStatusFlags]
bit STATUSFLAGS_MAIN_MENU_MOBILE_CHOICES_F, a
ld a, $1 ; Continue
jr z, .ok
jr .ok
.ok
jr .ok2
.ok2
ld a, $1 ; Continue
ret
.mystery_gift
; This check makes no difference.
ld a, [wStatusFlags]
bit STATUSFLAGS_MAIN_MENU_MOBILE_CHOICES_F, a
jr z, .ok3
jr .ok3
.ok3
jr .ok4
.ok4
ld a, $6 ; Mystery Gift
ret
; 49de4
MainMenuJoypadLoop: ; 49de4
call SetUpMenu
.loop
call MainMenu_PrintCurrentTimeAndDay
ld a, [w2DMenuFlags1]
set 5, a
ld [w2DMenuFlags1], a
call GetScrollingMenuJoypad
ld a, [wMenuJoypad]
cp B_BUTTON
jr z, .b_button
cp A_BUTTON
jr z, .a_button
jr .loop
.a_button
call PlayClickSFX
and a
ret
.b_button
scf
ret
; 49e09
MainMenu_PrintCurrentTimeAndDay: ; 49e09
ld a, [wSaveFileExists]
and a
ret z
xor a
ld [hBGMapMode], a
call .PlaceBox
ld hl, wOptions
ld a, [hl]
push af
set NO_TEXT_SCROLL, [hl]
call .PlaceTime
pop af
ld [wOptions], a
ld a, $1
ld [hBGMapMode], a
ret
; 49e27
.PlaceBox: ; 49e27
call CheckRTCStatus
and $80
jr nz, .TimeFail
hlcoord 0, 14
ld b, 2
ld c, 18
call TextBox
ret
.TimeFail:
call SpeechTextBox
ret
; 49e3d
.PlaceTime: ; 49e3d
ld a, [wSaveFileExists]
and a
ret z
call CheckRTCStatus
and $80
jp nz, .PrintTimeNotSet
call UpdateTime
call GetWeekday
ld b, a
decoord 1, 15
call .PlaceCurrentDay
decoord 4, 16
ld a, [hHours]
ld c, a
farcall PrintHour
ld [hl], ":"
inc hl
ld de, hMinutes
lb bc, PRINTNUM_LEADINGZEROS | 1, 2
call PrintNum
ret
.min
; unused
db "min.@"
; 49e75
.PrintTimeNotSet: ; 49e75
hlcoord 1, 14
ld de, .TimeNotSet
call PlaceString
ret
; 49e7f
.TimeNotSet: ; 49e7f
db "TIME NOT SET@"
; 49e8c
.UnusedText: ; 49e8c
; Clock time unknown
text_jump UnknownText_0x1c5182
db "@"
; 49e91
.PlaceCurrentDay: ; 49e91
push de
ld hl, .Days
ld a, b
call GetNthString
ld d, h
ld e, l
pop hl
call PlaceString
ld h, b
ld l, c
ld de, .Day
call PlaceString
ret
; 49ea8
.Days:
db "SUN@"
db "MON@"
db "TUES@"
db "WEDNES@"
db "THURS@"
db "FRI@"
db "SATUR@"
.Day:
db "DAY@"
; 49ed0
Function49ed0: ; 49ed0
xor a
ld [hMapAnims], a
call ClearTileMap
call LoadFontsExtra
call LoadStandardFont
call ClearWindowData
ret
; 49ee0
MainMenu_NewGame: ; 49ee0
farcall NewGame
ret
; 49ee7
MainMenu_Options: ; 49ee7
farcall OptionsMenu
ret
; 49eee
MainMenu_Continue: ; 49eee
farcall Continue
ret
; 49ef5
MainMenu_MysteryGift: ; 49ef5
farcall MysteryGift
ret
; 49efc

841
engine/menus/menu.asm Normal file

File diff suppressed because it is too large Load Diff

253
engine/menus/menu_2.asm Normal file
View File

@@ -0,0 +1,253 @@
PlaceMenuItemName: ; 0x24ab4
push de
ld a, [wMenuSelection]
ld [wNamedObjectIndexBuffer], a
call GetItemName
pop hl
call PlaceString
ret
PlaceMenuItemQuantity: ; 0x24ac3
push de
ld a, [wMenuSelection]
ld [wCurItem], a
farcall _CheckTossableItem
ld a, [wItemAttributeParamBuffer]
pop hl
and a
jr nz, .done
ld de, $15
add hl, de
ld [hl], "×"
inc hl
ld de, wMenuSelectionQuantity
lb bc, 1, 2
call PrintNum
.done
ret
PlaceMoneyTopRight: ; 24ae8
ld hl, MenuHeader_0x24b15
call CopyMenuHeader
jr PlaceMoneyTextBox
PlaceMoneyBottomLeft: ; 24af0
ld hl, MenuHeader_0x24b1d
call CopyMenuHeader
jr PlaceMoneyTextBox
PlaceMoneyAtTopLeftOfTextbox: ; 24af8
ld hl, MenuHeader_0x24b15
lb de, 0, 11
call OffsetMenuHeader
PlaceMoneyTextBox: ; 24b01
call MenuBox
call MenuBoxCoord2Tile
ld de, SCREEN_WIDTH + 1
add hl, de
ld de, wMoney
lb bc, PRINTNUM_MONEY | 3, 6
call PrintNum
ret
MenuHeader_0x24b15: ; 0x24b15
db MENU_BACKUP_TILES ; flags
menu_coords 11, 0, SCREEN_WIDTH - 1, 2
dw NULL
db 1 ; default option
MenuHeader_0x24b1d: ; 0x24b1d
db MENU_BACKUP_TILES ; flags
menu_coords 0, 11, 8, 13
dw NULL
db 1 ; default option
DisplayCoinCaseBalance: ; 24b25
; Place a text box of size 1x7 at 11, 0.
hlcoord 11, 0
ld b, 1
ld c, 7
call TextBox
hlcoord 12, 0
ld de, CoinString
call PlaceString
hlcoord 17, 1
ld de, ShowMoney_TerminatorString
call PlaceString
ld de, wCoins
lb bc, 2, 4
hlcoord 13, 1
call PrintNum
ret
DisplayMoneyAndCoinBalance: ; 24b4e
hlcoord 5, 0
ld b, 3
ld c, 13
call TextBox
hlcoord 6, 1
ld de, MoneyString
call PlaceString
hlcoord 12, 1
ld de, wMoney
lb bc, PRINTNUM_MONEY | 3, 6
call PrintNum
hlcoord 6, 3
ld de, CoinString
call PlaceString
hlcoord 15, 3
ld de, wCoins
lb bc, 2, 4
call PrintNum
ret
MoneyString: ; 24b83
db "MONEY@"
CoinString: ; 24b89
db "COIN@"
ShowMoney_TerminatorString: ; 24b8e
db "@"
Unreferenced_Function24b8f: ; 24b8f
; related to safari?
ld hl, wOptions
ld a, [hl]
push af
set NO_TEXT_SCROLL, [hl]
hlcoord 0, 0
ld b, 3
ld c, 7
call TextBox
hlcoord 1, 1
ld de, wSafariTimeRemaining
lb bc, 2, 3
call PrintNum
hlcoord 4, 1
ld de, .slash_500
call PlaceString
hlcoord 1, 3
ld de, .booru_ko
call PlaceString
hlcoord 5, 3
ld de, wSafariBallsRemaining
lb bc, 1, 2
call PrintNum
pop af
ld [wOptions], a
ret
.slash_500 ; 24bcf
db "@"
.booru_ko ; 24bd4
db "ボール   こ@"
StartMenu_DrawBugContestStatusBox: ; 24bdc
hlcoord 0, 0
ld b, 5
ld c, 17
call TextBox
ret
StartMenu_PrintBugContestStatus: ; 24be7
ld hl, wOptions
ld a, [hl]
push af
set NO_TEXT_SCROLL, [hl]
call StartMenu_DrawBugContestStatusBox
hlcoord 1, 5
ld de, .Balls_EN
call PlaceString
hlcoord 8, 5
ld de, wParkBallsRemaining
lb bc, PRINTNUM_RIGHTALIGN | 1, 2
call PrintNum
hlcoord 1, 1
ld de, .CAUGHT
call PlaceString
ld a, [wContestMon]
and a
ld de, .None
jr z, .no_contest_mon
ld [wd265], a
call GetPokemonName
.no_contest_mon
hlcoord 8, 1
call PlaceString
ld a, [wContestMon]
and a
jr z, .skip_level
hlcoord 1, 3
ld de, .LEVEL
call PlaceString
ld a, [wContestMonLevel]
ld h, b
ld l, c
inc hl
ld c, 3
call Print8BitNumRightAlign
.skip_level
pop af
ld [wOptions], a
ret
.Balls_JP: ; 24c43
db "ボール   こ@"
.CAUGHT: ; 24c4b
db "CAUGHT@"
.Balls_EN: ; 24c52
db "BALLS:@"
.None: ; 24c59
db "None@"
.LEVEL: ; 24c5e
db "LEVEL@"
FindApricornsInBag: ; 24c64
; Checks the bag for Apricorns.
ld hl, wBuffer1
xor a
ld [hli], a
dec a
ld bc, 10
call ByteFill
ld hl, ApricornBalls
.loop
ld a, [hl]
cp -1
jr z, .done
push hl
ld [wCurItem], a
ld hl, wNumItems
call CheckItem
pop hl
jr nc, .nope
ld a, [hl]
call .addtobuffer
.nope
inc hl
inc hl
jr .loop
.done
ld a, [wBuffer1]
and a
ret nz
scf
ret
.addtobuffer ; 24c94
push hl
ld hl, wBuffer1
inc [hl]
ld e, [hl]
ld d, 0
add hl, de
ld [hl], a
pop hl
ret
INCLUDE "data/items/apricorn_balls.asm"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1210
engine/menus/save.asm Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,77 @@
SaveMenu_CopyTilemapAtOnce: ; 4cf45 (13:4f45)
ld a, [hCGB]
and a
jp z, WaitBGMap
; The following is a modified version of CopyTilemapAtOnce.
ld a, [hBGMapMode]
push af
xor a
ld [hBGMapMode], a
ld a, [hMapAnims]
push af
xor a
ld [hMapAnims], a
.WaitLY:
ld a, [rLY]
cp $60
jr c, .WaitLY
di
ld a, BANK(vBGMap2)
ld [rVBK], a
hlcoord 0, 0, wAttrMap
call .CopyTilemapAtOnce
ld a, BANK(vBGMap0)
ld [rVBK], a
hlcoord 0, 0
call .CopyTilemapAtOnce
.WaitLY2:
ld a, [rLY]
cp $60
jr c, .WaitLY2
ei
pop af
ld [hMapAnims], a
pop af
ld [hBGMapMode], a
ret
.CopyTilemapAtOnce: ; 4cf80 (13:4f80)
ld [hSPBuffer], sp ; $ffd9
ld sp, hl
ld a, [hBGMapAddress + 1]
ld h, a
ld l, 0
ld a, SCREEN_HEIGHT
ld [hTilesPerCycle], a
ld b, 1 << 1
ld c, LOW(rSTAT)
.loop
rept SCREEN_WIDTH / 2
pop de
.loop\@
ld a, [$ff00+c]
and b
jr nz, .loop\@
ld [hl], e
inc l
ld [hl], d
inc l
endr
ld de, BG_MAP_WIDTH - SCREEN_WIDTH
add hl, de
ld a, [hTilesPerCycle]
dec a
ld [hTilesPerCycle], a
jr nz, .loop
ld a, [hSPBuffer]
ld l, a
ld a, [hSPBuffer + 1]
ld h, a
ld sp, hl
ret

File diff suppressed because it is too large Load Diff

1993
engine/menus/start_menu.asm Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff