diff --git a/main.asm b/main.asm index 231ddbdc8..ca8db3006 100644 --- a/main.asm +++ b/main.asm @@ -2927,7 +2927,23 @@ CheckFacingSign: ; 2a8b ; 0x2ad4 -INCBIN "baserom.gbc", $2ad4, $2b74 - $2ad4 +INCBIN "baserom.gbc", $2ad4, $2b29 - $2ad4 + + +FadeToMenu: ; 2b29 + xor a + ld [hBGMapMode], a + call $1d6e + ld a, $23 + ld hl, $4084 + rst FarCall + call ClearSprites + call Function2ed3 + ret +; 2b3c + + +INCBIN "baserom.gbc", $2b3c, $2b74 - $2b3c Function2b74: ; 0x2b74 @@ -3201,7 +3217,27 @@ Predef: ; 2d83 ret ; 2dba -INCBIN "baserom.gbc", $2dba, $2e6f-$2dba + +ResetWindow: ; 2dba + + call $1fbf + ld a, [hROMBank] + push af + ld a, $1 + rst Bankswitch + + call $6454 + call $2e20 + call $64bf + + pop af + rst Bankswitch + ret +; 2dcf + + +INCBIN "baserom.gbc", $2dcf, $2e6f-$2dcf + BitTable1Func: ; 0x2e6f ld hl, $da72 @@ -3323,7 +3359,30 @@ InitString: ; 0x2ef9 ret ; 0x2f17 -INCBIN "baserom.gbc", $2f17, $2f8c - $2f17 + +INCBIN "baserom.gbc", $2f17, $2f3f - $2f17 + + +DoItemEffect: ; 2f3f + callba _DoItemEffect + ret +; 2f46 + + +CheckTossableItem: ; 2f46 + push hl + push de + push bc + callba _CheckTossableItem + pop bc + pop de + pop hl + ret +; 2f53 + + +INCBIN "baserom.gbc", $2f53, $2f8c - $2f53 + RNG: ; 2f8c ; Two random numbers are generated by adding and subtracting @@ -6763,7 +6822,7 @@ GetNumberedTMHM: ; d417 ; d427 -CheckTossableItem: ; d427 +_CheckTossableItem: ; d427 ; Return 1 in $d142 and carry if CurItem can't be removed from the bag. ld a, 4 call GetItemAttr @@ -6872,7 +6931,7 @@ ClearPCItemScreen: ; e58b INCBIN "baserom.gbc", $e5bb, $e722 - $e5bb -DoItemEffect: ; e722 +_DoItemEffect: ; e722 ld a, [CurItem] ld [$d265], a call GetItemName @@ -7663,7 +7722,7 @@ StartMenu_Save: ; 1290b StartMenu_Option: ; 1291c ; Game options. - call $2b29 + call FadeToMenu ld a, $1 ld hl, $5b64 rst FarCall @@ -7675,7 +7734,7 @@ StartMenu_Option: ; 1291c StartMenu_Status: ; 12928 ; Player status. - call $2b29 + call FadeToMenu ld a, $9 ld hl, $5105 rst FarCall @@ -7691,7 +7750,7 @@ StartMenu_Pokedex: ; 12937 and a jr z, .asm_12949 - call $2b29 + call FadeToMenu ld a, $10 ld hl, $4000 rst FarCall @@ -7705,7 +7764,7 @@ StartMenu_Pokedex: ; 12937 StartMenu_Pokegear: ; 1294c - call $2b29 + call FadeToMenu ld a, $24 ld hl, $4b8d rst FarCall @@ -7717,7 +7776,7 @@ StartMenu_Pokegear: ; 1294c StartMenu_Pack: ; 1295b - call $2b29 + call FadeToMenu ld a, $4 ld hl, $4000 rst FarCall @@ -7740,7 +7799,7 @@ StartMenu_Pokemon: ; 12976 and a jr z, .return - call $2b29 ; fade in? + call FadeToMenu .choosemenu xor a @@ -7791,7 +7850,19 @@ StartMenu_Pokemon: ; 12976 ; 129d5 -INCBIN "baserom.gbc", $129d5, $12a6c - $129d5 +INCBIN "baserom.gbc", $129d5, $12a60 - $129d5 + + +CantUseItem: ; 12a60 + ld hl, CantUseItemText + call $2012 + ret +; 12a67 + +CantUseItemText: ; 12a67 + text_jump UnknownText_0x1c1b03, BANK(UnknownText_0x1c1b03) + db "@" +; 12a6c PartyMonItemName: ; 12a6c @@ -7989,7 +8060,7 @@ Function12ba9: ; 12ba9 cp 2 jr z, .next - call $2f46 + call CheckTossableItem ld a, [$d142] and a jr nz, .next @@ -8213,7 +8284,201 @@ OpenPartyStats: ; 12e00 ; 12e1b -INCBIN "baserom.gbc", $12e1b, $13b87 - $12e1b +INCBIN "baserom.gbc", $12e1b, $13327 - $12e1b + + +SelectMenu: ; 13327 + + call CheckRegisteredItem + jr c, .NotRegistered + jp UseRegisteredItem + +.NotRegistered + call $2e08 + ld b, BANK(ItemMayBeRegisteredText) + ld hl, ItemMayBeRegisteredText + call $269a + call $0a46 + jp $2dcf +; 13340 + + +ItemMayBeRegisteredText: ; 13340 + text_jump UnknownText_0x1c1cf3, BANK(UnknownText_0x1c1cf3) + db "@" +; 13345 + + +CheckRegisteredItem: ; 13345 + + ld a, [WhichRegisteredItem] + and a + jr z, .NoRegisteredItem + and REGISTERED_POCKET + rlca + rlca + ld hl, .Pockets + rst $28 + ret + +.Pockets + dw .CheckItem + dw .CheckBall + dw .CheckKeyItem + dw .CheckTMHM + +.CheckItem + ld hl, NumItems + call .CheckRegisteredNo + jr c, .NoRegisteredItem + inc hl + ld e, a + ld d, 0 + add hl, de + add hl, de + call .IsSameItem + jr c, .NoRegisteredItem + and a + ret + +.CheckKeyItem + ld a, [RegisteredItem] + ld hl, KeyItems + ld de, 1 + call IsInArray + jr nc, .NoRegisteredItem + ld a, [RegisteredItem] + ld [CurItem], a + and a + ret + +.CheckBall + ld hl, NumBalls + call .CheckRegisteredNo + jr nc, .NoRegisteredItem + inc hl + ld e, a + ld d, 0 + add hl, de + add hl, de + call .IsSameItem + jr c, .NoRegisteredItem + ret + +.CheckTMHM + jr .NoRegisteredItem + +.NoRegisteredItem + xor a + ld [WhichRegisteredItem], a + ld [RegisteredItem], a + scf + ret +; 133a6 + + +.CheckRegisteredNo ; 133a6 + ld a, [WhichRegisteredItem] + and REGISTERED_NUMBER + dec a + cp [hl] + jr nc, .NotEnoughItems + ld [$d107], a + and a + ret + +.NotEnoughItems + scf + ret +; 133b6 + + +.IsSameItem ; 133b6 + ld a, [RegisteredItem] + cp [hl] + jr nz, .NotSameItem + ld [CurItem], a + and a + ret + +.NotSameItem + scf + ret +; 133c3 + + +UseRegisteredItem: ; 133c3 + + callba CheckItemMenu + ld a, [$d142] + ld hl, .SwitchTo + rst $28 + ret + +.SwitchTo + dw .CantUse + dw .NoFunction + dw .NoFunction + dw .NoFunction + dw .Current + dw .Party + dw .Overworld +; 133df + +.NoFunction ; 133df + call $2e08 + call CantUseItem + call $2dcf + and a + ret +; 133ea + +.Current ; 133ea + call $2e08 + call DoItemEffect + call $2dcf + and a + ret +; 133f5 + +.Party ; 133f5 + call ResetWindow + call FadeToMenu + call DoItemEffect + call $2b3c + call $2dcf + and a + ret +; 13406 + +.Overworld ; 13406 + call ResetWindow + ld a, 1 + ld [$d0ef], a + call DoItemEffect + xor a + ld [$d0ef], a + ld a, [$d0ec] + cp 1 + jr nz, .asm_13425 + scf + ld a, $80 + ld [$ffa0], a + ret +; 13422 + +.CantUse ; 13422 + call ResetWindow + +.asm_13425 + call CantUseItem + call $2dcf + and a + ret +; 1342d + + +INCBIN "baserom.gbc", $1342d, $13b87 - $1342d GetSquareRoot: ; 13b87 @@ -8401,8 +8666,8 @@ KrisWithdrawItemMenu: ; 0x157d1 Function157e9: ; 0x157e9 ; check if the item has a quantity - ld a, BANK(CheckTossableItem) - ld hl, CheckTossableItem + ld a, BANK(_CheckTossableItem) + ld hl, _CheckTossableItem rst $8 ld a, [$d142] and a @@ -8525,7 +8790,7 @@ KrisDepositItemMenu: ; 0x1588b jr z, .asm_158b3 call Function158cc ld a, $4 - ld hl, $7345 + ld hl, CheckRegisteredItem rst $8 jr .asm_1589c @@ -9105,8 +9370,8 @@ Function24ac3: ; 0x24ac3 push de ld a, [MenuSelection] ld [CurItem], a - ld a, BANK(CheckTossableItem) - ld hl, CheckTossableItem + ld a, BANK(_CheckTossableItem) + ld hl, _CheckTossableItem rst $8 ld a, [$d142] pop hl @@ -11803,7 +12068,7 @@ Function4484a: ; 0x4484a dw .Cancel .ReadMail ; 0x44869 - call $2b29 + call FadeToMenu ld a, [MenuSelection] dec a ld b, a @@ -11863,7 +12128,7 @@ Function4484a: ; 0x4484a ; 0x448d2 .AttachMail ; 0x448d2 - call $2b29 + call FadeToMenu xor a ld [$d141], a call $31f3 @@ -16956,26 +17221,27 @@ CheckMenuOW: ; 96b30 StartMenuScript: ; 96b58 3callasm BANK(StartMenu), StartMenu - 2jump UnknownScript_0x96b66 + 2jump StartMenuCallback ; 96b5f SelectMenuScript: ; 96b5f - 3callasm $04, $7327 ; SelectMenu - 2jump UnknownScript_0x96b66 + 3callasm BANK(SelectMenu), SelectMenu + 2jump SelectMenuCallback ; 96b66 -UnknownScript_0x96b66: ; 96b66 +StartMenuCallback: +SelectMenuCallback: ; 96b66 copybytetovar $ffa0 - if_equal $80, UnknownScript_0x96b72 - if_equal $ff, UnknownScript_0x96b75 + if_equal $80, .Script + if_equal $ff, .Asm end ; 96b72 -UnknownScript_0x96b72: ; 96b72 +.Script ; 96b72 2ptjump $d0e8 ; 96b75 -UnknownScript_0x96b75: ; 96b75 +.Asm ; 96b75 2ptcallasm $d0e8 end ; 96b79 diff --git a/wram.asm b/wram.asm index b454e9342..5731bb303 100644 --- a/wram.asm +++ b/wram.asm @@ -1665,19 +1665,26 @@ TMsHMs: ; d859 NumItems: ; d892 ds 1 Items: ; d893 - ds 69 + ds 41 NumKeyItems: ; d8bc ds 1 KeyItems: ; d8bd - ds 13 - + ds 26 + NumBalls: ; d8d7 ds 1 Balls: ; d8d8 ds 25 -SECTION "overworld",BSS[$d95d] +SECTION "overworld",BSS[$d95b] +WhichRegisteredItem: ; d95b +REGISTERED_POCKET EQU %11000000 +REGISTERED_NUMBER EQU %00111111 + ds 1 +RegisteredItem: ; d95c + ds 1 + PlayerState: ; d95d PLAYER_NORMAL EQU 0 PLAYER_BIKE EQU 1