diff options
38 files changed, 2876 insertions, 1794 deletions
diff --git a/constants/icon_constants.asm b/constants/icon_constants.asm new file mode 100644 index 00000000..870175f4 --- /dev/null +++ b/constants/icon_constants.asm @@ -0,0 +1,51 @@ +; IconPointers indexes (see data/icon_pointers.asm) + const_def + const ICON_NULL + const ICON_POLIWAG + const ICON_JIGGLYPUFF + const ICON_DIGLETT + const ICON_PIKACHU + const ICON_STARYU + const ICON_FISH + const ICON_BIRD + const ICON_MONSTER + const ICON_CLEFAIRY + const ICON_ODDISH + const ICON_BUG + const ICON_GHOST + const ICON_LAPRAS + const ICON_HUMANSHAPE + const ICON_FOX + const ICON_EQUINE + const ICON_SHELL + const ICON_BLOB + const ICON_SERPENT + const ICON_VOLTORB + const ICON_SQUIRTLE + const ICON_BULBASAUR + const ICON_CHARMANDER + const ICON_CATERPILLAR + const ICON_UNOWN + const ICON_GEODUDE + const ICON_FIGHTER + const ICON_EGG + const ICON_JELLYFISH + const ICON_MOTH + const ICON_BAT + const ICON_SNORLAX + const ICON_HO_OH + const ICON_LUGIA + const ICON_GYARADOS + const ICON_SLOWPOKE + const ICON_SUDOWOODO + const ICON_BIGMON + +; LoadMenuMonIcon.Jumptable indexes (see engine/gfx/mon_icons.asm) + const_def + const MONICON_PARTYMENU + const MONICON_NAMINGSCREEN + const MONICON_MOVES + const MONICON_TRADE + const MONICON_MOBILE1 + const MONICON_MOBILE2 + const MONICON_UNUSED diff --git a/constants/menu_constants.asm b/constants/menu_constants.asm index 7c5f2337..2c6c7910 100644 --- a/constants/menu_constants.asm +++ b/constants/menu_constants.asm @@ -32,6 +32,11 @@ shift_const SCROLLINGMENU_ENABLE_START shift_const SCROLLINGMENU_ENABLE_SELECT +; ScrollingMenu items structure format + const_def 1 + const SCROLLINGMENU_ITEMS_NORMAL + const SCROLLINGMENU_ITEMS_QUANTITY + ; MonMenuOptions indexes (see data/mon_menu.asm) ; used by PokemonActionSubmenu (see engine/menus/start_menu.asm) const_def 1 diff --git a/constants/phone_constants.asm b/constants/phone_constants.asm index 9247e927..1718e892 100644 --- a/constants/phone_constants.asm +++ b/constants/phone_constants.asm @@ -63,5 +63,5 @@ const PHONE_CONTACT_SCRIPT2_BANK const PHONE_CONTACT_SCRIPT2_ADDR_LO const PHONE_CONTACT_SCRIPT2_ADDR_HI -PHONE_TABLE_WIDTH EQU const_value +PHONE_CONTACT_SIZE EQU const_value CONTACT_LIST_SIZE EQU 10 diff --git a/constants/pokemon_data_constants.asm b/constants/pokemon_data_constants.asm index 04df889b..d29b4121 100644 --- a/constants/pokemon_data_constants.asm +++ b/constants/pokemon_data_constants.asm @@ -62,8 +62,9 @@ GENDER_UNKNOWN EQU -1 const EGG_DRAGON ; e const EGG_NONE ; f (Undiscovered) -; menu sprites -const_value SET 1 +; IconPointers indexes (see data/icon_pointers.asm) + const_def + const ICON_NULL const ICON_POLIWAG const ICON_JIGGLYPUFF const ICON_DIGLETT @@ -103,6 +104,16 @@ const_value SET 1 const ICON_SUDOWOODO const ICON_BIGMON +; LoadMenuMonIcon.Jumptable indexes (see engine/gfx/mon_icons.asm) + const_def + const MONICON_PARTYMENU + const MONICON_NAMINGSCREEN + const MONICON_MOVES + const MONICON_TRADE + const MONICON_MOBILE1 + const MONICON_MOBILE2 + const MONICON_UNUSED + ; maximum number of party pokemon PARTY_LENGTH EQU 6 diff --git a/constants/wram_constants.asm b/constants/wram_constants.asm index 7cdebc05..fba6f2ff 100644 --- a/constants/wram_constants.asm +++ b/constants/wram_constants.asm @@ -148,6 +148,8 @@ NUM_JOHTO_BADGES EQU const_value NUM_KANTO_BADGES EQU const_value NUM_BADGES EQU NUM_JOHTO_BADGES + NUM_KANTO_BADGES +POKEGEAR_OBTAINED_F EQU 7 + ; WhichRegisteredItem: ; d95b REGISTERED_POCKET EQU %11000000 REGISTERED_NUMBER EQU %00111111 diff --git a/data/events/elevator_floors.asm b/data/events/elevator_floors.asm new file mode 100644 index 00000000..abc793cf --- /dev/null +++ b/data/events/elevator_floors.asm @@ -0,0 +1,35 @@ +ElevatorFloorNames: +; entries correspond to FLOOR_* constants + dw .B4F + dw .B3F + dw .B2F + dw .B1F + dw ._1F + dw ._2F + dw ._3F + dw ._4F + dw ._5F + dw ._6F + dw ._7F + dw ._8F + dw ._9F + dw ._10F + dw ._11F + dw .ROOF + +.B4F: db "B4F@" +.B3F: db "B3F@" +.B2F: db "B2F@" +.B1F: db "B1F@" +._1F: db "1F@" +._2F: db "2F@" +._3F: db "3F@" +._4F: db "4F@" +._5F: db "5F@" +._6F: db "6F@" +._7F: db "7F@" +._8F: db "8F@" +._9F: db "9F@" +._10F: db "10F@" +._11F: db "11F@" +.ROOF: db "ROOF@" diff --git a/data/text/common_1.asm b/data/text/common_1.asm index 40f4bb79..82f153d0 100755 --- a/data/text/common_1.asm +++ b/data/text/common_1.asm @@ -223,7 +223,7 @@ Text_BreedingIsNotPossible:: UnknownText_0x1bd0d8:: text "The compatibility" line "is @" - text_decimal wTempNumBuffer, 1, 3 + text_decimal wBreedingCompatibility, 1, 3 text "." cont "Should they breed?" done @@ -961,7 +961,7 @@ _RocketRadioText10:: text "Is he listening?" done -UnknownText_0x1bd2bc:: +_AskFloorElevatorText:: text "Which floor?" done diff --git a/data/text/common_2.asm b/data/text/common_2.asm index 9f6c9413..5d712ccc 100644 --- a/data/text/common_2.asm +++ b/data/text/common_2.asm @@ -981,19 +981,19 @@ UnknownText_0x1c1a65:: text "Darn…" done -UnknownText_0x1c1a6c:: +_StartMenuContestEndText:: text "Would you like to" line "end the Contest?" done -UnknownText_0x1c1a90:: +_ItemsTossOutHowManyText:: text "Toss out how many" line "@" text_ram wStringBuffer2 text "(S)?" done -UnknownText_0x1c1aad:: +_ItemsThrowAwayText:: text "Throw away @" text_decimal wItemQuantityChangeBuffer, 1, 2 text_start @@ -1002,25 +1002,25 @@ UnknownText_0x1c1aad:: text "(S)?" done -UnknownText_0x1c1aca:: +_ItemsDiscardedText:: text "Discarded" line "@" text_ram wStringBuffer1 text "(S)." prompt -UnknownText_0x1c1adf:: +_ItemsTooImportantText:: text "That's too impor-" line "tant to toss out!" prompt -UnknownText_0x1c1b03:: +_ItemsOakWarningText:: text "OAK: <PLAYER>!" line "This isn't the" cont "time to use that!" done -UnknownText_0x1c1b2c:: +_PokemonSwapItemText:: text "Took @" text_ram wMonOrItemNameBuffer text "'s" @@ -1034,7 +1034,7 @@ UnknownText_0x1c1b2c:: text "." prompt -UnknownText_0x1c1b57:: +_PokemonHoldItemText:: text "Made @" text_ram wMonOrItemNameBuffer text_start @@ -1043,23 +1043,23 @@ UnknownText_0x1c1b57:: text "." prompt -UnknownText_0x1c1b6f:: +_PokemonRemoveMailText:: text "Please remove the" line "MAIL first." prompt -UnknownText_0x1c1b8e:: +_PokemonNotHoldingText:: text_ram wMonOrItemNameBuffer text " isn't" line "holding anything." prompt -UnknownText_0x1c1baa:: +_ItemStorageFullText:: text "Item storage space" line "full." prompt -UnknownText_0x1c1bc4:: +_PokemonTookItemText:: text "Took @" text_ram wStringBuffer1 text_start @@ -1068,7 +1068,7 @@ UnknownText_0x1c1bc4:: text "." prompt -UnknownText_0x1c1bdc:: +_PokemonAskSwapItemText:: text_ram wMonOrItemNameBuffer text " is" line "already holding" @@ -1079,48 +1079,48 @@ UnknownText_0x1c1bdc:: line "Switch items?" done -UnknownText_0x1c1c09:: +_ItemCantHeldText:: text "This item can't be" line "held." prompt -UnknownText_0x1c1c22:: +_MailLoseMessageText:: text "The MAIL will lose" line "its message. OK?" done -UnknownText_0x1c1c47:: +_MailDetachedText:: text "MAIL detached from" line "@" text_ram wStringBuffer1 text "." prompt -UnknownText_0x1c1c62:: +_MailNoSpaceText:: text "There's no space" line "for removing MAIL." prompt -UnknownText_0x1c1c86:: +_MailAskSendToPCText:: text "Send the removed" line "MAIL to your PC?" done -UnknownText_0x1c1ca9:: +_MailboxFullText:: text "Your PC's MAILBOX" line "is full." prompt -UnknownText_0x1c1cc4:: +_MailSentToPCText:: text "The MAIL was sent" line "to your PC." prompt -UnknownText_0x1c1ce3:: +_PokemonNotEnoughHPText:: text "Not enough HP!" prompt -UnknownText_0x1c1cf3:: +_MayRegisterItemText:: text "An item in your" line "PACK may be" @@ -1254,7 +1254,7 @@ UnknownText_0x1c41e6:: UnknownText_0x1c4212:: text "Trade @" - text_ram wTemporaryBuffer + text_ram wceef text_start line "for @" text_ram wStringBuffer1 diff --git a/engine/billspctop.asm b/engine/billspctop.asm index b0ec59a5..749718db 100644 --- a/engine/billspctop.asm +++ b/engine/billspctop.asm @@ -31,7 +31,7 @@ BillsPC_LogIn: ; e3f7 (3:63f7) call PrintText pop af ld [wOptions], a - call Functionda5 + call LoadFontsBattleExtra ret Text_BillsPCWhat: diff --git a/engine/events/elevator.asm b/engine/events/elevator.asm new file mode 100644 index 00000000..e51b6be1 --- /dev/null +++ b/engine/events/elevator.asm @@ -0,0 +1,215 @@ +Elevator:: + call .LoadPointer + call .FindCurrentFloor + jr c, .quit + ld [wElevatorOriginFloor], a + call Elevator_AskWhichFloor + jr c, .quit + ld hl, wElevatorOriginFloor + cp [hl] + jr z, .quit + call Elevator_GoToFloor + and a + ret + +.quit + scf + ret + +.LoadPointer: + ld a, b + ld [wElevatorPointerBank], a + ld a, e + ld [wElevatorPointer], a + ld a, d + ld [wElevatorPointer + 1], a + call .LoadFloors + ret + +.LoadFloors: + ld de, wCurElevator + ld bc, wElevatorDataEnd - wElevatorData + ld hl, wElevatorPointer + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wElevatorPointerBank] + call GetFarByte + inc hl + ld [de], a + inc de +.loop + ld a, [wElevatorPointerBank] + call GetFarByte + ld [de], a + inc de + add hl, bc + cp -1 + jr nz, .loop + ret + +.FindCurrentFloor: + ld hl, wElevatorPointer + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wElevatorPointerBank] + call GetFarByte + ld c, a + inc hl + ld a, [wBackupMapGroup] + ld d, a + ld a, [wBackupMapNumber] + ld e, a + ld b, 0 +.loop2 + ld a, [wElevatorPointerBank] + call GetFarByte + cp -1 + jr z, .fail + inc hl + inc hl + ld a, [wElevatorPointerBank] + call GetFarByte + inc hl + cp d + jr nz, .next1 + ld a, [wElevatorPointerBank] + call GetFarByte + inc hl + cp e + jr nz, .next2 + jr .done + +.next1 + inc hl +.next2 + inc b + jr .loop2 + +.done + xor a + ld a, b + ret + +.fail + scf + ret + +Elevator_GoToFloor: + push af + ld hl, wElevatorPointer + ld a, [hli] + ld h, [hl] + ld l, a + inc hl + pop af + ld bc, wElevatorDataEnd - wElevatorData + call AddNTimes + inc hl + ld de, wBackupWarpNumber + ld a, [wElevatorPointerBank] + ld bc, wElevatorDataEnd - wElevatorData - 1 + call FarCopyBytes + ret + +Elevator_AskWhichFloor: + call LoadStandardMenuHeader + ld hl, AskFloorElevatorText + call PrintText + call Elevator_GetCurrentFloorText + ld hl, Elevator_MenuHeader + call CopyMenuHeader + call InitScrollingMenu + call UpdateSprites + xor a + ld [wMenuScrollPosition], a + call ScrollingMenu + call CloseWindow + ld a, [wMenuJoypad] + cp B_BUTTON + jr z, .cancel + xor a + ld a, [wScrollingMenuCursorPosition] + ret + +.cancel + scf + ret + +AskFloorElevatorText: + text_far _AskFloorElevatorText + text_end + +Elevator_GetCurrentFloorText: + ld hl, wOptions + ld a, [hl] + push af + set NO_TEXT_SCROLL, [hl] + hlcoord 0, 0 + ld b, 4 + ld c, 8 + call Textbox + hlcoord 1, 2 + ld de, Elevator_CurrentFloorText + call PlaceString + hlcoord 4, 4 + call Elevator_GetCurrentFloorString + pop af + ld [wOptions], a + ret + +Elevator_CurrentFloorText: + db "Now on:@" + +Elevator_GetCurrentFloorString: + push hl + ld a, [wElevatorOriginFloor] + ld e, a + ld d, 0 + ld hl, wCurElevatorFloors + add hl, de + ld a, [hl] + pop de + call GetFloorString + ret + +Elevator_MenuHeader: + db MENU_BACKUP_TILES ; flags + menu_coords 12, 1, 18, 9 + dw Elevator_MenuData + db 1 ; default option + +Elevator_MenuData: + db SCROLLINGMENU_DISPLAY_ARROWS ; flags + db 4, 0 ; rows, columns + db SCROLLINGMENU_ITEMS_NORMAL ; item format + dbw 0, wCurElevator + dba GetElevatorFloorStrings + dba NULL + dba NULL + +GetElevatorFloorStrings: + ld a, [wMenuSelection] +GetFloorString: + push de + call FloorToString + ld d, h + ld e, l + pop hl + jp PlaceString + +FloorToString: + push de + ld e, a + ld d, 0 + ld hl, ElevatorFloorNames + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + pop de + ret + +INCLUDE "data/events/elevator_floors.asm" diff --git a/engine/events/misc_scripts.asm b/engine/events/misc_scripts.asm index f9ba459f..b08d313e 100755 --- a/engine/events/misc_scripts.asm +++ b/engine/events/misc_scripts.asm @@ -38,14 +38,14 @@ FindItemInBallScript:: .TryReceiveItem: xor a ld [wScriptVar], a - ld a, [wcf29] + ld a, [wItemBallItemID] ld [wDeciramBuffer], a call GetItemName ld hl, wStringBuffer3 call CopyName2 - ld a, [wcf29] - ld [wd002], a - ld a, [wcf2a] + ld a, [wItemBallItemID] + ld [wCurItem], a + ld a, [wItemBallQuantity] ld [wItemQuantityChangeBuffer], a ld hl, wNumItems call ReceiveItem diff --git a/engine/events/misc_scripts_2.asm b/engine/events/misc_scripts_2.asm index 4a9e9484..294dc6a0 100755 --- a/engine/events/misc_scripts_2.asm +++ b/engine/events/misc_scripts_2.asm @@ -11,7 +11,7 @@ RepelWoreOffScript:: HiddenItemScript:: opentext - copybytetovar wcf2b + copybytetovar wHiddenItemID itemtotext STRING_BUFFER_3, USE_SCRIPT_VAR writetext .PlayerFoundItemText giveitem ITEM_FROM_MEM @@ -39,7 +39,7 @@ HiddenItemScript:: db "@" SetMemEvent: - ld hl, wcf29 + ld hl, wHiddenItemEvent ld a, [hli] ld d, [hl] ld e, a diff --git a/engine/events/overworld.asm b/engine/events/overworld.asm index 0787d094..7cc64dff 100755 --- a/engine/events/overworld.asm +++ b/engine/events/overworld.asm @@ -477,7 +477,7 @@ TrySurfOW:: jr z, .quit cp PLAYER_SURF jr z, .quit - ld a, [wcf29] + ld a, [wFacingTileID] call GetTileCollision cp $1 jr nz, .quit @@ -835,6 +835,7 @@ DigReturnMovementData: return_dig 32 step_end +TeleportFunction: call FieldMoveBufferReset .asm_cc67 ld hl, .Jumptable @@ -1261,6 +1262,7 @@ Text_AskHeadbutt: ; cee9 text_far Text_AskHeadbutt_ db "@" +RockSmashFunction: call TryRockSmashFromMenu and $7f ld [wFieldMoveSucceeded], a diff --git a/engine/events/std_collision.asm b/engine/events/std_collision.asm index bb44687c..0e06b03c 100755 --- a/engine/events/std_collision.asm +++ b/engine/events/std_collision.asm @@ -7,12 +7,12 @@ CheckFacingTileForStdScript:: jr nc, .notintable ld a, jumpstd_command - ld [wcf2a], a + ld [wJumpStdScriptBuffer], a inc hl ld a, [hli] - ld [wcf2b], a + ld [wJumpStdScriptBuffer + 1], a ld a, [hli] - ld [wTempTrainer], a + ld [wJumpStdScriptBuffer + 2], a ld a, BANK(Script_JumpStdFromRAM) ld hl, Script_JumpStdFromRAM call CallScript @@ -26,4 +26,4 @@ CheckFacingTileForStdScript:: INCLUDE "data/events/collision_stdscripts.asm" Script_JumpStdFromRAM: - jump wcf2a
\ No newline at end of file + jump wJumpStdScriptBuffer diff --git a/engine/events/sweet_scent.asm b/engine/events/sweet_scent.asm new file mode 100644 index 00000000..d382936d --- /dev/null +++ b/engine/events/sweet_scent.asm @@ -0,0 +1,66 @@ +SweetScentFromMenu: + ld hl, .SweetScent + call QueueScript + ld a, $1 + ld [wFieldMoveSucceeded], a + ret + +.SweetScent: + reloadmappart + special UpdateTimePals + callasm GetPartyNick + writetext UseSweetScentText + waitbutton + callasm SweetScentEncounter + iffalse SweetScentNothing + checkflag ENGINE_BUG_CONTEST_TIMER + iftrue .BugCatchingContest + randomwildmon + startbattle + reloadmapafterbattle + end + +.BugCatchingContest: + farjump BugCatchingContestBattleScript + +SweetScentNothing: + writetext SweetScentNothingText + waitbutton + closetext + end + +SweetScentEncounter: + farcall CanUseSweetScent + jr nc, .no_battle + ld hl, wStatusFlags2 + bit STATUSFLAGS2_BUG_CONTEST_TIMER_F, [hl] + jr nz, .not_in_bug_contest + farcall GetMapEncounterRate + ld a, b + and a + jr z, .no_battle + farcall ChooseWildEncounter + jr nz, .no_battle + jr .start_battle + +.not_in_bug_contest + farcall ChooseWildEncounter_BugContest + +.start_battle + ld a, $1 + ld [wScriptVar], a + ret + +.no_battle + xor a + ld [wScriptVar], a + ld [wBattleType], a + ret + +UseSweetScentText: + text_far _UseSweetScentText + text_end + +SweetScentNothingText: + text_far _SweetScentNothingText + text_end diff --git a/engine/items.asm b/engine/items.asm index deafa60c..428f652e 100755 --- a/engine/items.asm +++ b/engine/items.asm @@ -33,7 +33,7 @@ ReceiveBall: ReceiveTMHM: ld h, d ld l, e - ld a, [wd002] + ld a, [wCurItem] ld c, a call GetTMHMNumber jp PutItemInTMPocket @@ -63,7 +63,7 @@ RemoveBall: RemoveTMHM: ld h, d ld l, e - ld a, [wd002] + ld a, [wCurItem] ld c, a call GetTMHMNumber jp RemoveTMorHM @@ -104,7 +104,7 @@ CheckBall: CheckTMHM: ld h, d ld l, e - ld a, [wd002] + ld a, [wCurItem] ld c, a call GetTMHMNumber jp CheckTMorHM @@ -152,7 +152,7 @@ PutItemInPocketOrPC: ; d2a9 (3:52a9) ld d, h ld e, l inc hl - ld a, [wd002] + ld a, [wCurItem] ld c, a ld b, $0 .asm_d2b2 @@ -184,7 +184,7 @@ PutItemInPocketOrPC: ; d2a9 (3:52a9) .asm_d2d3 ld h, d ld l, e - ld a, [wd002] + ld a, [wCurItem] ld c, a ld a, [wItemQuantityChangeBuffer] ld [wItemQuantityBuffer], a @@ -210,7 +210,7 @@ PutItemInPocketOrPC: ; d2a9 (3:52a9) .asm_d2fc dec hl - ld a, [wd002] + ld a, [wCurItem] ld [hli], a ld a, [wItemQuantityBuffer] ld [hli], a @@ -227,14 +227,14 @@ RemoveItemAndQuantity: ; d30c (3:530c) ld e, l ld a, [hli] ld c, a - ld a, [wd003] + ld a, [wCurItemQuantity] cp c jr nc, .asm_d325 ld c, a ld b, $0 add hl, bc add hl, bc - ld a, [wd002] + ld a, [wCurItem] cp [hl] inc hl jr z, .asm_d334 @@ -242,7 +242,7 @@ RemoveItemAndQuantity: ; d30c (3:530c) ld l, e inc hl .asm_d325 - ld a, [wd002] + ld a, [wCurItem] ld b, a .asm_d329 ld a, [hli] @@ -286,7 +286,7 @@ RemoveItemAndQuantity: ; d30c (3:530c) ret CheckItemWithQuantity: ; d356 (3:5356) - ld a, [wd002] + ld a, [wCurItem] ld c, a .asm_d35a inc hl @@ -310,7 +310,7 @@ PutItemInKeyItemPocket: ; d367 (3:5367) ld c, a ld b, $0 add hl, bc - ld a, [wd002] + ld a, [wCurItem] ld [hli], a ld [hl], $ff ld hl, wNumKeyItems @@ -323,7 +323,7 @@ PutItemInKeyItemPocket: ; d367 (3:5367) ret RemoveItemWithoutQuantity: ; d381 (3:5381) - ld a, [wd003] + ld a, [wCurItemQuantity] ld e, a ld d, $0 ld hl, wItemsEnd @@ -353,7 +353,7 @@ RemoveItemWithoutQuantity: ; d381 (3:5381) FindAndTossKeyItem: ; d3a3 (3:53a3) ld hl, wItemsEnd - ld a, [wd002] + ld a, [wCurItem] ld c, a .asm_d3aa inc hl @@ -373,7 +373,7 @@ FindAndTossKeyItem: ; d3a3 (3:53a3) ret CheckItemWithoutQuantity: ; d3be (3:53be) - ld a, [wd002] + ld a, [wCurItem] ld c, a ld hl, wKeyItems .asm_d3c5 @@ -520,7 +520,7 @@ GetItemAttr: ; d46d (3:546d) add hl, bc xor a ld [wItemAttributeParamBuffer], a - ld a, [wd002] + ld a, [wCurItem] dec a ld c, a ld a, $7 diff --git a/engine/learn.asm b/engine/learn.asm index f61b0c6c..b28f754b 100644 --- a/engine/learn.asm +++ b/engine/learn.asm @@ -46,7 +46,7 @@ LearnMove: pop de pop hl .asm_6643 - ld a, [wd14d] + ld a, [wPutativeTMHMMove] ld [hl], a ld bc, $15 add hl, bc @@ -110,7 +110,7 @@ LearnMove: ld bc, -4 add hl, bc push hl - ld de, wd149 + ld de, wListMoves_MoveIndicesBuffer ld bc, $4 call CopyBytes pop hl @@ -127,14 +127,14 @@ LearnMove: ld [wBuffer1], a predef ListMoves ld a, $4 - ld [wMenuDataEnd], a + ld [w2DMenuCursorInitY], a ld a, $6 - ld [wced9], a - ld a, [wcfe3] + ld [w2DMenuCursorInitX], a + ld a, [wNumMoves] inc a - ld [wceda], a + ld [w2DMenuNumRows], a ld a, $1 - ld [wcedb], a + ld [w2DMenuNumCols], a ld [wMenuCursorY], a ld [wcee1], a ld a, $3 @@ -142,9 +142,9 @@ LearnMove: ld a, $20 ld [w2DMenuFlags1], a xor a - ld [wcedd], a + ld [w2DMenuFlags2], a ld a, $20 - ld [wcede], a + ld [w2DMenuCursorOffsets], a call StaticMenuJoypad push af call SafeLoadTempTilemapToTilemap diff --git a/engine/learn_tm.asm b/engine/learn_tm.asm index 530ecf41..a7a135d9 100755 --- a/engine/learn_tm.asm +++ b/engine/learn_tm.asm @@ -4,7 +4,7 @@ CanLearnTMHMMove: ; 11a25 (4:5a25) call GetBaseData ld hl, wd138 push hl - ld a, [wd14d] + ld a, [wPutativeTMHMMove] ld b, a ld c, $0 ld hl, TMMovesList diff --git a/engine/menus/start_menu.asm b/engine/menus/start_menu.asm new file mode 100644 index 00000000..2e5cec79 --- /dev/null +++ b/engine/menus/start_menu.asm @@ -0,0 +1,541 @@ +; StartMenu.Items indexes + const_def + const STARTMENUITEM_POKEDEX ; 0 + const STARTMENUITEM_POKEMON ; 1 + const STARTMENUITEM_PACK ; 2 + const STARTMENUITEM_STATUS ; 3 + const STARTMENUITEM_SAVE ; 4 + const STARTMENUITEM_OPTION ; 5 + const STARTMENUITEM_EXIT ; 6 + const STARTMENUITEM_POKEGEAR ; 7 + const STARTMENUITEM_QUIT ; 8 + +StartMenu:: + call ClearWindowData + + ld de, SFX_MENU + call PlaySFX + + farcall ReanchorBGMap_NoOAMUpdate + + ld hl, wStatusFlags2 + bit STATUSFLAGS2_BUG_CONTEST_TIMER_F, [hl] + ld hl, .MenuHeader + jr z, .GotMenuData + ld hl, .ContestMenuHeader + +.GotMenuData: + call LoadMenuHeader + call .SetUpMenuItems + ld a, [wBattleMenuCursorBuffer] + ld [wMenuCursorBuffer], a + call .DrawMenuAccount + call DrawVariableLengthMenuBox + call .DrawBugContestStatusBox + call SafeUpdateSprites + call _OpenAndCloseMenu_HDMATransferTilemapAndAttrmap + farcall LoadFonts_NoOAMUpdate + call .DrawBugContestStatus + call UpdateTimePals + jr .Select + +.Reopen: + call UpdateSprites + call UpdateTimePals + call .SetUpMenuItems + ld a, [wBattleMenuCursorBuffer] + ld [wMenuCursorBuffer], a + +.Select: + call .GetInput + jr c, .Exit + call ._DrawMenuAccount + ld a, [wMenuCursorBuffer] + ld [wBattleMenuCursorBuffer], a + call PlayClickSFX + call PlaceHollowCursor + call .OpenMenu + +; Menu items have different return functions. +; For example, saving exits the menu. + ld hl, .MenuReturns + ld e, a + ld d, 0 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp hl + +.MenuReturns: + dw .Reopen + dw .Exit + dw .ExitMenuCallFuncCloseText + dw .ExitMenuRunScriptCloseText + dw .ExitMenuRunScript + dw .ReturnEnd + dw .ReturnRedraw + +.Exit: + ldh a, [hOAMUpdate] + push af + ld a, 1 + ldh [hOAMUpdate], a + call LoadFontsExtra + pop af + ldh [hOAMUpdate], a +.ReturnEnd: + call ExitMenu +.ReturnEnd2: + call CloseText + call UpdateTimePals + ret + +.GetInput: +; Return carry on exit, and no-carry on selection. + xor a + ldh [hBGMapMode], a + call ._DrawMenuAccount + call SetUpMenu + ld a, $ff + ld [wMenuSelection], a +.loop + call .PrintMenuAccount + call GetScrollingMenuJoypad + ld a, [wMenuJoypad] + cp B_BUTTON + jr z, .b + cp A_BUTTON + jr z, .a + jr .loop +.a + call PlayClickSFX + and a + ret +.b + scf + ret + +.ExitMenuRunScript: + call ExitMenu + ld a, HMENURETURN_SCRIPT + ldh [hMenuReturn], a + ret + +.ExitMenuRunScriptCloseText: + call ExitMenu + ld a, HMENURETURN_SCRIPT + ldh [hMenuReturn], a + jr .ReturnEnd2 + +.ExitMenuCallFuncCloseText: + call ExitMenu + ld hl, wQueuedScriptAddr + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wQueuedScriptBank] + rst FarCall + jr .ReturnEnd2 + +.ReturnRedraw: + call .Clear + jp .Reopen + +.Clear: + call ClearBGPalettes + call Call_ExitMenu + call ReloadTilesetAndPalettes + call .DrawMenuAccount + call DrawVariableLengthMenuBox + call .DrawBugContestStatus + call UpdateSprites + call Functiond2a + call FinishExitMenu + ret + +.MenuHeader: + db MENU_BACKUP_TILES ; flags + menu_coords 10, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1 + dw .MenuData + db 1 ; default selection + +.ContestMenuHeader: + db MENU_BACKUP_TILES ; flags + menu_coords 10, 2, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1 + dw .MenuData + db 1 ; default selection + +.MenuData: + db STATICMENU_CURSOR | STATICMENU_WRAP | STATICMENU_ENABLE_START ; flags + dn 0, 0 ; rows, columns + dw wMenuItemsList + dw .MenuString + dw .Items + +.Items: +; entries correspond to STARTMENUITEM_* constants + dw StartMenu_Pokedex, .PokedexString, .PokedexDesc + dw StartMenu_Pokemon, .PartyString, .PartyDesc + dw StartMenu_Pack, .PackString, .PackDesc + dw StartMenu_Status, .StatusString, .StatusDesc + dw StartMenu_Save, .SaveString, .SaveDesc + dw StartMenu_Option, .OptionString, .OptionDesc + dw StartMenu_Exit, .ExitString, .ExitDesc + dw StartMenu_Pokegear, .PokegearString, .PokegearDesc + dw StartMenu_Quit, .QuitString, .QuitDesc + +.PokedexString: db "#DEX@" +.PartyString: db "#MON@" +.PackString: db "PACK@" +.StatusString: db "<PLAYER>@" +.SaveString: db "SAVE@" +.OptionString: db "OPTION@" +.ExitString: db "EXIT@" +.PokegearString: db "<POKE>GEAR@" +.QuitString: db "QUIT@" + +.PokedexDesc: + db "#MON" + next "database@" + +.PartyDesc: + db "Party <PKMN>" + next "status@" + +.PackDesc: + db "Contains" + next "items@" + +.PokegearDesc: + db "Trainer's" + next "key device@" + +.StatusDesc: + db "Your own" + next "status@" + +.SaveDesc: + db "Save your" + next "progress@" + +.OptionDesc: + db "Change" + next "settings@" + +.ExitDesc: + db "Close this" + next "menu@" + +.QuitDesc: + db "Quit and" + next "be judged.@" + +.OpenMenu: + ld a, [wMenuSelection] + call .GetMenuAccountTextPointer + ld a, [hli] + ld h, [hl] + ld l, a + jp hl + +.MenuString: + push de + ld a, [wMenuSelection] + call .GetMenuAccountTextPointer + inc hl + inc hl + ld a, [hli] + ld d, [hl] + ld e, a + pop hl + call PlaceString + ret + +.MenuDesc: + push de + ld a, [wMenuSelection] + cp $ff + jr z, .none + call .GetMenuAccountTextPointer +rept 4 + inc hl +endr + ld a, [hli] + ld d, [hl] + ld e, a + pop hl + call PlaceString + ret +.none + pop de + ret + +.GetMenuAccountTextPointer: + ld e, a + ld d, 0 + ld hl, wMenuDataPointerTableAddr + ld a, [hli] + ld h, [hl] + ld l, a +rept 6 + add hl, de +endr + ret + +.SetUpMenuItems: + xor a + ld [wWhichIndexSet], a + call .FillMenuList + + ld hl, wStatusFlags + bit STATUSFLAGS_POKEDEX_F, [hl] + jr z, .no_pokedex + ld a, STARTMENUITEM_POKEDEX + call .AppendMenuList +.no_pokedex + + ld a, [wPartyCount] + and a + jr z, .no_pokemon + ld a, STARTMENUITEM_POKEMON + call .AppendMenuList +.no_pokemon + + ld a, [wLinkMode] + and a + jr nz, .no_pack + ld hl, wStatusFlags2 + bit STATUSFLAGS2_BUG_CONTEST_TIMER_F, [hl] + jr nz, .no_pack + ld a, STARTMENUITEM_PACK + call .AppendMenuList +.no_pack + + ld hl, wPokegearFlags + bit POKEGEAR_OBTAINED_F, [hl] + jr z, .no_pokegear + ld a, STARTMENUITEM_POKEGEAR + call .AppendMenuList +.no_pokegear + + ld a, STARTMENUITEM_STATUS + call .AppendMenuList + + ld a, [wLinkMode] + and a + jr nz, .no_save + ld hl, wStatusFlags2 + bit STATUSFLAGS2_BUG_CONTEST_TIMER_F, [hl] + ld a, STARTMENUITEM_QUIT + jr nz, .write + ld a, STARTMENUITEM_SAVE +.write + call .AppendMenuList +.no_save + + ld a, STARTMENUITEM_OPTION + call .AppendMenuList + ld a, STARTMENUITEM_EXIT + call .AppendMenuList + ld a, c + ld [wMenuItemsList], a + ret + +.FillMenuList: + xor a + ld hl, wMenuItemsList + ld [hli], a + ld a, -1 + ld bc, wMenuItemsListEnd - (wMenuItemsList + 1) + call ByteFill + ld de, wMenuItemsList + 1 + ld c, 0 + ret + +.AppendMenuList: + ld [de], a + inc de + inc c + ret + +.DrawMenuAccount: + jp ._DrawMenuAccount + +.PrintMenuAccount: + call .IsMenuAccountOn + ret z + call ._DrawMenuAccount + decoord 0, 14 + jp .MenuDesc + +._DrawMenuAccount: + call .IsMenuAccountOn + ret z + hlcoord 0, 13 + lb bc, 5, 10 + call ClearBox + hlcoord 0, 13 + ld b, 3 + ld c, 8 + jp TextboxPalette + +.IsMenuAccountOn: + ld a, [wOptions2] + and 1 << MENU_ACCOUNT + ret + +.DrawBugContestStatusBox: + ld hl, wStatusFlags2 + bit STATUSFLAGS2_BUG_CONTEST_TIMER_F, [hl] + ret z + farcall StartMenu_DrawBugContestStatusBox + ret + +.DrawBugContestStatus: + ld hl, wStatusFlags2 + bit STATUSFLAGS2_BUG_CONTEST_TIMER_F, [hl] + jr nz, .contest + ret +.contest + farcall StartMenu_PrintBugContestStatus + ret + +StartMenu_Exit: +; Exit the menu. + + ld a, 1 + ret + +StartMenu_Quit: +; Retire from the bug catching contest. + + ld hl, .StartMenuContestEndText + call StartMenuYesNo + jr c, .DontEndContest + ld a, BANK(BugCatchingContestReturnToGateScript) + ld hl, BugCatchingContestReturnToGateScript + call FarQueueScript + ld a, 4 + ret + +.DontEndContest: + ld a, 0 + ret + +.StartMenuContestEndText: + text_far _StartMenuContestEndText + text_end + +StartMenu_Save: +; Save the game. + + call BufferScreen + farcall SaveMenu + jr nc, .asm_12919 + ld a, 0 + ret +.asm_12919 + ld a, 1 + ret + +StartMenu_Option: +; Game options. + + call FadeToMenu + farcall MainMenu_Options + ld a, 6 + ret + +StartMenu_Status: +; Player status. + + call FadeToMenu + farcall TrainerCard + call CloseSubmenu + ld a, 0 + ret + +StartMenu_Pokedex: + ld a, [wPartyCount] + and a + jr z, .asm_12949 + + call FadeToMenu + farcall Pokedex + call CloseSubmenu + +.asm_12949 + ld a, 0 + ret + +StartMenu_Pokegear: + call FadeToMenu + farcall PokeGear + call CloseSubmenu + ld a, 0 + ret + +StartMenu_Pack: + call FadeToMenu + farcall Pack + ld a, [wPackUsedItem] + and a + jr nz, .used_item + call CloseSubmenu + ld a, 0 + ret + +.used_item + call ExitAllMenus + ld a, 4 + ret + +StartMenu_Pokemon: + ld a, [wPartyCount] + and a + jr z, .return + + call FadeToMenu + +.choosemenu + xor a + ld [wPartyMenuActionText], a ; Choose a POKéMON. + call ClearBGPalettes + +.menu + farcall LoadPartyMenuGFX + farcall InitPartyMenuWithCancel + farcall InitPartyMenuGFX + +.menunoreload + farcall WritePartyMenuTilemap + farcall PrintPartyMenuText + call WaitBGMap + call SetPalettes ; load regular palettes? + call DelayFrame + farcall PartyMenuSelect + jr c, .return ; if cancelled or pressed B + + call PokemonActionSubmenu + cp 3 + jr z, .menu + cp 0 + jr z, .choosemenu + cp 1 + jr z, .menunoreload + cp 2 + jr z, .quit + +.return + call CloseSubmenu + ld a, 0 + ret + +.quit + ld a, b + push af + call ExitAllMenus + pop af + ret diff --git a/engine/move_mon.asm b/engine/move_mon.asm index 7410375f..7198910d 100755 --- a/engine/move_mon.asm +++ b/engine/move_mon.asm @@ -1196,7 +1196,7 @@ RemoveMonFromPartyOrBox: ; e03f (3:603f) ld a, [wCurPartyMon] cp [hl] jr z, .asm_e137 - ld hl, s0_a600 + ld hl, sPartyMail ld bc, MAIL_STRUCT_LENGTH call AddNTimes push hl @@ -1502,14 +1502,14 @@ GivePoke: ; Give a Pokemon from script push bc push de push af - ld a, [wd002] + ld a, [wCurItem] and a jr z, .asm_e2fa ld a, [wCurPartyMon] ld hl, wPartyMon1Item ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes - ld a, [wd002] + ld a, [wCurItem] ld [hl], a jr .asm_e2fa @@ -1530,10 +1530,10 @@ GivePoke: ; Give a Pokemon from script push bc push de push af - ld a, [wd002] + ld a, [wCurItem] and a jr z, .asm_e2fa - ld a, [wd002] + ld a, [wCurItem] ld [sBoxMon1Item], a .asm_e2fa ld a, [wCurPartySpecies] diff --git a/engine/namingscreen.asm b/engine/namingscreen.asm index f907c463..ca0eb213 100644 --- a/engine/namingscreen.asm +++ b/engine/namingscreen.asm @@ -892,7 +892,7 @@ NamingScreenGFX_ED: INCBIN "gfx/namingscreen/ed.1bpp" ; leftover from gen 1 NamingScreenGFX_MiddleLine: INCBIN "gfx/namingscreen/middleline.1bpp" NamingScreenGFX_UnderLine: INCBIN "gfx/namingscreen/underline.1bpp" -ComposeMailMessage: +_ComposeMailMessage: ld hl, wNamingScreenDestinationPointer ld [hl], e inc hl diff --git a/engine/overworld/map_objects.asm b/engine/overworld/map_objects.asm index 887fb753..774d4cd8 100755 --- a/engine/overworld/map_objects.asm +++ b/engine/overworld/map_objects.asm @@ -928,7 +928,7 @@ Function5730:: ; 5730 (1:5730) ld [wce87], a ld [wce88], a xor a - ld [wcf39], a + ld [wPlayerTurningDirection], a ld [wPlayerObjectStepFrame], a call Function574f farcall Function14a44 diff --git a/engine/overworld/player_movement.asm b/engine/overworld/player_movement.asm index 3fa38cc0..e05fbb9d 100755 --- a/engine/overworld/player_movement.asm +++ b/engine/overworld/player_movement.asm @@ -1,18 +1,18 @@ DoPlayerMovement:: ; 10000 (4:4000) call Function10017 ld a, movement_step_sleep - ld [wcf2d], a + ld [wMovementAnimation], a xor a - ld [wcf2c], a + ld [wWalkingIntoEdgeWarp], a call Function1002d ld c, a - ld a, [wcf2d] + ld a, [wMovementAnimation] ld [wce87], a ret Function10017: ; 10017 (4:4017) ldh a, [hJoyDown] - ld [wcf29], a + ld [wCurInput], a CheckFlagHL ENGINE_DOWNHILL ret z ld c, a @@ -20,7 +20,7 @@ Function10017: ; 10017 (4:4017) ret nz ld a, c or $80 - ld [wcf29], a + ld [wCurInput], a ret Function1002d: ; 1002d (4:402d) @@ -74,7 +74,7 @@ Function1002d: ; 1002d (4:402d) ret c call Function10226 ret c - ld a, [wcf2e] + ld a, [wWalkingDirection] cp $ff jr z, .asm_10098 call Function103ee @@ -84,10 +84,10 @@ Function1002d: ; 1002d (4:402d) ret .asm_1009d - ld a, [wcf2e] + ld a, [wWalkingDirection] cp $ff jr z, .asm_100b2 - ld a, [wTempTrainer] + ld a, [wWalkingIntoEdgeWarp] and a jr nz, .asm_100ad call Function103ee @@ -130,7 +130,7 @@ Function100b7: ; 100b7 (4:40b7) ld hl, .water_table add hl, bc ld a, [hl] - ld [wcf2e], a + ld [wWalkingDirection], a jr .asm_1013e .water_table @@ -149,7 +149,7 @@ Function100b7: ; 100b7 (4:40b7) ld a, [hl] cp $ff jr z, .asm_1013c - ld [wcf2e], a + ld [wWalkingDirection], a jr .asm_1013e .land1_table @@ -172,7 +172,7 @@ Function100b7: ; 100b7 (4:40b7) ld a, [hl] cp $ff jr z, .asm_1013c - ld [wcf2e], a + ld [wWalkingDirection], a jr .asm_1013e .land2_table @@ -197,7 +197,7 @@ Function100b7: ; 100b7 (4:40b7) jr nz, .asm_1013c .asm_10135 ld a, $0 - ld [wcf2e], a + ld [wWalkingDirection], a jr .asm_1013e .asm_1013c @@ -212,10 +212,10 @@ Function100b7: ; 100b7 (4:40b7) ret Function10147: ; 10147 (4:4147) - ld a, [wcf39] + ld a, [wPlayerTurningDirection] cp $0 jr nz, .asm_10169 - ld a, [wcf2e] + ld a, [wWalkingDirection] cp $ff jr z, .asm_10169 ld e, a @@ -256,7 +256,7 @@ Function1016b: ; 1016b (4:416b) ld hl, wBikeFlags bit 2, [hl] jr z, .asm_101a7 - ld a, [wcf2e] + ld a, [wWalkingDirection] cp $0 jr z, .asm_101a7 ld a, $1 @@ -291,15 +291,15 @@ Function1016b: ; 1016b (4:416b) Function101c0: ; 101c0 (4:41c0) call Function103b4 - ld [wcf2b], a + ld [wWalkingIntoLand], a jr c, .asm_101f1 call Function10341 - ld [wcf2a], a + ld [wWalkingIntoNPC], a and a jr z, .asm_101f1 cp $2 jr z, .asm_101f1 - ld a, [wcf2b] + ld a, [wWalkingIntoLand] and a jr nz, .asm_101e2 ld a, $1 @@ -332,7 +332,7 @@ Function101f3: ; 101f3 (4:41f3) ld d, $0 ld hl, .data_1021e add hl, de - ld a, [wcf2f] + ld a, [wFacingDirection] and [hl] jr z, .asm_1021c ld de, $16 @@ -358,7 +358,7 @@ Function101f3: ; 101f3 (4:41f3) db FACE_UP | FACE_LEFT Function10226: ; 10226 (4:4226) - ld a, [wcf2e] + ld a, [wWalkingDirection] ld e, a ld d, $0 ld hl, .edge_warps @@ -367,8 +367,8 @@ Function10226: ; 10226 (4:4226) cp [hl] jr nz, .asm_10259 ld a, $1 - ld [wTempTrainer], a - ld a, [wcf2e] + ld [wWalkingIntoEdgeWarp], a + ld a, [wWalkingDirection] cp $ff jr z, .asm_10259 ld e, a @@ -401,17 +401,17 @@ Function1025f: ; 1025f (4:425f) ld a, [hli] ld h, [hl] ld l, a - ld a, [wcf2e] + ld a, [wWalkingDirection] ld e, a cp $ff jp z, Function102b3 add hl, de ld a, [hl] - ld [wcf2d], a + ld [wMovementAnimation], a ld hl, $42af add hl, de ld a, [hl] - ld [wcf39], a + ld [wPlayerTurningDirection], a ld a, $4 ret @@ -468,24 +468,24 @@ Function1025f: ; 1025f (4:425f) Function102b3: ; 102b3 (4:42b3) ld a, $0 - ld [wcf39], a + ld [wPlayerTurningDirection], a ld a, $3e - ld [wcf2d], a + ld [wMovementAnimation], a xor a ret Function102bf: ; 102bf (4:42bf) ld a, $0 - ld [wTempTrainerEnd], a + ld [wPlayerTurningDirection], a ld a, $50 - ld [wcf2d], a + ld [wMovementAnimation], a xor a ret Function102cb: ; 102cb (4:42cb) call Function10404 ret nc - ld a, [wTempTrainerEnd] + ld a, [wPlayerTurningDirection] .asm_102d2 cp $0 ret z @@ -494,10 +494,10 @@ Function102cb: ; 102cb (4:42cb) ld d, $0 ld hl, .forced_dpad add hl, de - ld a, [wcf29] + ld a, [wCurInput] and $f or [hl] - ld [wcf29], a + ld [wCurInput], a ret .forced_dpad @@ -506,7 +506,7 @@ Function102cb: ; 102cb (4:42cb) Function102ec: ; 102ec (4:42ec) ld hl, .table ld de, .table2 - .table1 - ld a, [wcf29] + ld a, [wCurInput] bit 7, a jr nz, .asm_10307 bit 6, a @@ -528,13 +528,13 @@ Function102ec: ; 102ec (4:42ec) add hl, de .asm_1030b ld a, [hli] - ld [wcf2e], a + ld [wWalkingDirection], a ld a, [hli] - ld [wcf2f], a + ld [wFacingDirection], a ld a, [hli] - ld [wcf30], a + ld [wWalkingX], a ld a, [hli] - ld [wcf31], a + ld [wWalkingY], a ld a, [hli] ld h, [hl] ld l, a @@ -567,12 +567,12 @@ Function10341: ; 10341 (4:4341) ldh [hMapObjectIndexBuffer], a ld a, [wPlayerStandingMapX] ld d, a - ld a, [wcf30] + ld a, [wWalkingX] add d ld d, a ld a, [wPlayerStandingMapY] ld e, a - ld a, [wcf31] + ld a, [wWalkingY] add e ld e, a ld bc, wPlayerSprite @@ -607,7 +607,7 @@ Function1036f: ; 1036f (4:436f) ld hl, $5 add hl, bc set 2, [hl] - ld a, [wcf2e] + ld a, [wWalkingDirection] ld d, a ld hl, $20 add hl, bc @@ -625,7 +625,7 @@ Function1036f: ; 1036f (4:436f) Function1039e: ; 1039e (4:439e) ld a, [wTilePermissions] ld d, a - ld a, [wcf2f] + ld a, [wFacingDirection] and d jr nz, .asm_103b2 ld a, [wWinTextPointer] @@ -641,7 +641,7 @@ Function1039e: ; 1039e (4:439e) Function103b4: ; 103b4 (4:43b4) ld a, [wTilePermissions] ld d, a - ld a, [wcf2f] + ld a, [wFacingDirection] and d jr nz, .asm_103c8 ld a, [wWinTextPointer] @@ -705,7 +705,7 @@ Function103f9: ; 103f9 (4:43f9) ret Function10404: ; 10404 (4:4404) - ld a, [wTempTrainerEnd] + ld a, [wPlayerTurningDirection] cp $0 jr z, .asm_10420 cp $f0 @@ -731,5 +731,5 @@ StopPlayerForEvent:: ret z ld [hl], a ld a, $0 - ld [wcf39], a + ld [wPlayerTurningDirection], a ret diff --git a/engine/overworld/player_object.asm b/engine/overworld/player_object.asm index 0865dbf8..26dbe9fd 100755 --- a/engine/overworld/player_object.asm +++ b/engine/overworld/player_object.asm @@ -478,7 +478,7 @@ TrainerWalkToPlayer: call InitMovementBuffer ld a, movement_step_sleep call AppendToMovementBuffer - ld a, [wcf2a] + ld a, [wWalkingIntoNPC] dec a jr z, .asm_892b ldh a, [hLastTalked] diff --git a/engine/overworld/select_menu.asm b/engine/overworld/select_menu.asm new file mode 100644 index 00000000..18532eda --- /dev/null +++ b/engine/overworld/select_menu.asm @@ -0,0 +1,172 @@ +SelectMenu:: + call CheckRegisteredItem + jr c, .NotRegistered + jp UseRegisteredItem + +.NotRegistered: + call OpenText + ld b, BANK(MayRegisterItemText) + ld hl, MayRegisterItemText + call MapTextbox + call WaitButton + jp CloseText + +MayRegisterItemText: + text_far _MayRegisterItemText + text_end + +CheckRegisteredItem: + ld a, [wWhichRegisteredItem] + and a + jr z, .NoRegisteredItem + and REGISTERED_POCKET + rlca + rlca + ld hl, .Pockets + rst JumpTable + ret + +.Pockets: +; entries correspond to *_POCKET constants + dw .CheckItem + dw .CheckBall + dw .CheckKeyItem + dw .CheckTMHM + +.CheckItem: + ld hl, wNumItems + 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, [wRegisteredItem] + ld hl, wKeyItems + ld de, 1 + call IsInArray + jr nc, .NoRegisteredItem + ld a, [wRegisteredItem] + ld [wCurItem], a + and a + ret + +.CheckBall: + ld hl, wNumBalls + 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 [wWhichRegisteredItem], a + ld [wRegisteredItem], a + scf + ret + +.CheckRegisteredNo: + ld a, [wWhichRegisteredItem] + and REGISTERED_NUMBER + dec a + cp [hl] + jr nc, .NotEnoughItems + ld [wCurItemQuantity], a + and a + ret + +.NotEnoughItems: + scf + ret + +.IsSameItem: + ld a, [wRegisteredItem] + cp [hl] + jr nz, .NotSameItem + ld [wCurItem], a + and a + ret + +.NotSameItem: + scf + ret + +UseRegisteredItem: + farcall CheckItemMenu + ld a, [wItemAttributeParamBuffer] + ld hl, .SwitchTo + rst JumpTable + ret + +.SwitchTo: +; entries correspond to ITEMMENU_* constants + dw .CantUse + dw .NoFunction + dw .NoFunction + dw .NoFunction + dw .Current + dw .Party + dw .Overworld + +.NoFunction: + call OpenText + call CantUseItem + call CloseText + and a + ret + +.Current: + call OpenText + call DoItemEffect + call CloseText + and a + ret + +.Party: + call RefreshScreen + call FadeToMenu + call DoItemEffect + call CloseSubmenu + call CloseText + and a + ret + +.Overworld: + call RefreshScreen + ld a, 1 + ld [wUsingItemWithSelect], a + call DoItemEffect + xor a + ld [wUsingItemWithSelect], a + ld a, [wItemEffectSucceeded] + cp 1 + jr nz, ._cantuse + scf + ld a, HMENURETURN_SCRIPT + ldh [hMenuReturn], a + ret + +.CantUse: + call RefreshScreen + +._cantuse + call CantUseItem + call CloseText + and a + ret diff --git a/engine/pack.asm b/engine/pack.asm index 620976a9..a8c1fedc 100755 --- a/engine/pack.asm +++ b/engine/pack.asm @@ -1,4 +1,4 @@ -Function10430: +Pack: ld hl, wOptions set NO_TEXT_SCROLL, [hl] call Function10aba @@ -61,9 +61,9 @@ Pack_ItemsPocketMenu: ld a, [wcfca] ld [wMenuCursorBuffer], a ld a, [wcfcf] - ld [wcfd4], a + ld [wMenuScrollPosition], a call ScrollingMenu - ld a, [wcfd4] + ld a, [wMenuScrollPosition] ld [wcfcf], a ld a, [wMenuCursorY] ld [wcfca], a @@ -90,9 +90,9 @@ Pack_KeyItemsPocketMenu: ld a, [wcfcb] ld [wMenuCursorBuffer], a ld a, [wcfd0] - ld [wcfd4], a + ld [wMenuScrollPosition], a call ScrollingMenu - ld a, [wcfd4] + ld a, [wMenuScrollPosition] ld [wcfd0], a ld a, [wMenuCursorY] ld [wcfcb], a @@ -214,9 +214,9 @@ Pack_BallsPocketMenu: ld a, [wcfcc] ld [wMenuCursorBuffer], a ld a, [wcfd1] - ld [wcfd4], a + ld [wMenuScrollPosition], a call ScrollingMenu - ld a, [wcfd4] + ld a, [wMenuScrollPosition] ld [wcfd1], a ld a, [wMenuCursorY] ld [wcfcc], a @@ -484,7 +484,7 @@ TossMenu: pop af jr c, .asm_107cc ld hl, wTMsHMsEnd - ld a, [wd003] + ld a, [wCurItemQuantity] call TossItem call Function10e38 ld hl, Text_ThrewAway @@ -530,12 +530,12 @@ RegisterItem: rrca and $c0 ld b, a - ld a, [wd003] + ld a, [wCurItemQuantity] inc a and $3f or b ld [wWhichRegisteredItem], a - ld a, [wd002] + ld a, [wCurItem] ld [wRegisteredItem], a call Function10e38 ld de, SFX_FULL_HEAL @@ -588,7 +588,7 @@ GiveItem: ld de, wMonOrItemNameBuffer ld bc, $b call CopyBytes - call Function12fa0 + call TryGiveItemToPartymon pop af ld [wce64], a pop af @@ -678,9 +678,9 @@ BattlePack_ItemsPocketMenu: ld a, [wcfca] ld [wMenuCursorBuffer], a ld a, [wcfcf] - ld [wcfd4], a + ld [wMenuScrollPosition], a call ScrollingMenu - ld a, [wcfd4] + ld a, [wMenuScrollPosition] ld [wcfcf], a ld a, [wMenuCursorY] ld [wcfca], a @@ -706,9 +706,9 @@ BattlePack_KeyItemsPocketMenu: ld a, [wcfcb] ld [wMenuCursorBuffer], a ld a, [wcfd0] - ld [wcfd4], a + ld [wMenuScrollPosition], a call ScrollingMenu - ld a, [wcfd4] + ld a, [wMenuScrollPosition] ld [wcfd0], a ld a, [wMenuCursorY] ld [wcfcb], a @@ -757,9 +757,9 @@ BattlePack_BallsPocketMenu: ld a, [wcfcc] ld [wMenuCursorBuffer], a ld a, [wcfd1] - ld [wcfd4], a + ld [wMenuScrollPosition], a call ScrollingMenu - ld a, [wcfd4] + ld a, [wMenuScrollPosition] ld [wcfd1], a ld a, [wMenuCursorY] ld [wcfcc], a @@ -895,33 +895,34 @@ Function10aba: ; 10aba (4:4aba) ld [wce63], a ld a, [wcfc8] and $3 - ld [wce65], a + ld [wCurPocket], a inc a add a dec a ld [wce64], a xor a - ld [wce66], a + ld [wPackUsedItem], a xor a - ld [wcfd3], a + ld [wSwitchItem], a ret -Function10ad5: ; 10ad5 (4:4ad5) +DepositSellInitPackBuffers: ; 10ad5 (4:4ad5) xor a ldh [hBGMapMode], a ld [wce63], a ld [wce64], a - ld [wce65], a - ld [wce66], a - ld [wcfd3], a + ld [wCurPocket], a + ld [wPackUsedItem], a + ld [wSwitchItem], a call Function10d70 call Function10e5b ret -.asm_10aee +DepositSellPack +.loop call Function10af7 call Function10b9f - jr c, .asm_10aee + jr c, .loop ret Function10af7: ; 10af7 (4:4af7) @@ -944,9 +945,9 @@ DepositOrSell_ItemPocket: ld a, [wcfca] ld [wMenuCursorBuffer], a ld a, [wcfcf] - ld [wcfd4], a + ld [wMenuScrollPosition], a call ScrollingMenu - ld a, [wcfd4] + ld a, [wMenuScrollPosition] ld [wcfcf], a ld a, [wMenuCursorY] ld [wcfca], a @@ -960,9 +961,9 @@ DepositOrSell_KeyItemsPocket: ld a, [wcfcb] ld [wMenuCursorBuffer], a ld a, [wcfd0] - ld [wcfd4], a + ld [wMenuScrollPosition], a call ScrollingMenu - ld a, [wcfd4] + ld a, [wMenuScrollPosition] ld [wcfd0], a ld a, [wMenuCursorY] ld [wcfcb], a @@ -973,8 +974,8 @@ DepositOrSell_TMHMPocket: call Function10b92 call Function10cca farcall Pack_TMHMPocketMenu_ ; b:457a - ld a, [wd002] - ld [wd002], a + ld a, [wCurItem] + ld [wCurItem], a ret DepositOrSell_BallsPocket: @@ -985,9 +986,9 @@ DepositOrSell_BallsPocket: ld a, [wcfcc] ld [wMenuCursorBuffer], a ld a, [wcfd1] - ld [wcfd4], a + ld [wMenuScrollPosition], a call ScrollingMenu - ld a, [wcfd4] + ld a, [wMenuScrollPosition] ld [wcfd1], a ld a, [wMenuCursorY] ld [wcfcc], a @@ -1054,7 +1055,7 @@ Function10b9f: ; 10b9f (4:4b9f) ret TutorialPack: - call Function10ad5 + call DepositSellInitPackBuffers ld a, [wInputType] or a jr z, .asm_10bfa @@ -1126,8 +1127,8 @@ TutorialTMHM: call Function10b92 call Function10cca farcall Pack_TMHMPocketMenu_ - ld a, [wd002] - ld [wd002], a + ld a, [wCurItem] + ld [wCurItem], a ret TutorialBalls: @@ -1224,7 +1225,7 @@ PackGFXPointers: Function10cef: ; 10cef (4:4cef) ld hl, wMenuJoypad - ld a, [wcfd3] + ld a, [wSwitchItem] and a jr nz, .asm_10d4c ld a, [hl] @@ -1302,7 +1303,7 @@ Function10cef: ; 10cef (4:4cef) call WaitPlaySFX .asm_10d6a xor a - ld [wcfd3], a + ld [wSwitchItem], a scf ret @@ -1401,7 +1402,7 @@ Function10dd6: ; 10dd6 (4:4dd6) db $02, $05, $05, $05, $03 ; bottom border Function10e38: ; 10e38 (4:4e38) - ld a, [wd002] + ld a, [wCurItem] ld [wd151], a call GetItemName call CopyName1 diff --git a/engine/pokemon/mon_menu.asm b/engine/pokemon/mon_menu.asm new file mode 100644 index 00000000..d40940be --- /dev/null +++ b/engine/pokemon/mon_menu.asm @@ -0,0 +1,1294 @@ +HasNoItems: + ld a, [wNumItems] + and a + ret nz + ld a, [wNumKeyItems] + and a + ret nz + ld a, [wNumBalls] + and a + ret nz + ld hl, wTMsHMs + ld b, NUM_TMS + NUM_HMS +.loop + ld a, [hli] + and a + jr nz, .done + dec b + jr nz, .loop + scf + ret +.done + and a + ret + +TossItemFromPC: + push de + call PartyMonItemName + farcall _CheckTossableItem + ld a, [wItemAttributeParamBuffer] + and a + jr nz, .key_item + ld hl, .ItemsTossOutHowManyText + call MenuTextbox + farcall SelectQuantityToToss + push af + call CloseWindow + call ExitMenu + pop af + jr c, .quit + ld hl, .ItemsThrowAwayText + call MenuTextbox + call YesNoBox + push af + call ExitMenu + pop af + jr c, .quit + pop hl + ld a, [wCurItemQuantity] + call TossItem + call PartyMonItemName + ld hl, .ItemsDiscardedText + call MenuTextbox + call ExitMenu + and a + ret + +.key_item + call .CantToss +.quit + pop hl + scf + ret + +.ItemsTossOutHowManyText: + text_far _ItemsTossOutHowManyText + text_end + +.ItemsThrowAwayText: + text_far _ItemsThrowAwayText + text_end + +.ItemsDiscardedText: + text_far _ItemsDiscardedText + text_end + +.CantToss: + ld hl, .ItemsTooImportantText + call MenuTextboxBackup + ret + +.ItemsTooImportantText: + text_far _ItemsTooImportantText + text_end + +CantUseItem: + ld hl, ItemsOakWarningText + call MenuTextboxWaitButton + ret + +ItemsOakWarningText: + text_far _ItemsOakWarningText + text_end + +PartyMonItemName: + ld a, [wCurItem] + ld [wNamedObjectIndexBuffer], a + call GetItemName + call CopyName1 + ret + +CancelPokemonAction: + farcall InitPartyMenuWithCancel + farcall UnfreezeMonIcons + ld a, 1 + ret + +PokemonActionSubmenu: + hlcoord 1, 15 + lb bc, 2, 18 + call ClearBox + farcall MonSubmenu + call GetCurNick + ld a, [wMenuSelection] + ld hl, .Actions + ld de, 3 + call IsInArray + jr nc, .nothing + + inc hl + ld a, [hli] + ld h, [hl] + ld l, a + jp hl + +.nothing + ld a, 0 + ret + +.Actions: + dbw MONMENUITEM_CUT, MonMenu_Cut + dbw MONMENUITEM_FLY, MonMenu_Fly + dbw MONMENUITEM_SURF, MonMenu_Surf + dbw MONMENUITEM_STRENGTH, MonMenu_Strength + dbw MONMENUITEM_FLASH, MonMenu_Flash + dbw MONMENUITEM_WHIRLPOOL, MonMenu_Whirlpool + dbw MONMENUITEM_DIG, MonMenu_Dig + dbw MONMENUITEM_TELEPORT, MonMenu_Teleport + dbw MONMENUITEM_SOFTBOILED, MonMenu_Softboiled_MilkDrink + dbw MONMENUITEM_MILKDRINK, MonMenu_Softboiled_MilkDrink + dbw MONMENUITEM_HEADBUTT, MonMenu_Headbutt + dbw MONMENUITEM_WATERFALL, MonMenu_Waterfall + dbw MONMENUITEM_ROCKSMASH, MonMenu_RockSmash + dbw MONMENUITEM_SWEETSCENT, MonMenu_SweetScent + dbw MONMENUITEM_STATS, OpenPartyStats + dbw MONMENUITEM_SWITCH, SwitchPartyMons + dbw MONMENUITEM_ITEM, GiveTakePartyMonItem + dbw MONMENUITEM_CANCEL, CancelPokemonAction + dbw MONMENUITEM_MOVE, ManagePokemonMoves + dbw MONMENUITEM_MAIL, MonMailAction + +SwitchPartyMons: +; Don't try if there's nothing to switch! + ld a, [wPartyCount] + cp 2 + jr c, .DontSwitch + + ld a, [wCurPartyMon] + inc a + ld [wSwitchMon], a + + farcall HoldSwitchmonIcon + farcall InitPartyMenuNoCancel + + ld a, PARTYMENUACTION_MOVE + ld [wPartyMenuActionText], a + farcall WritePartyMenuTilemap + farcall PrintPartyMenuText + + hlcoord 0, 1 + ld bc, SCREEN_WIDTH * 2 + ld a, [wSwitchMon] + dec a + call AddNTimes + ld [hl], "▷" + call WaitBGMap + call SetPalettes + call DelayFrame + + farcall PartyMenuSelect + bit 1, b + jr c, .DontSwitch + + farcall _SwitchPartyMons + + xor a + ld [wPartyMenuActionText], a + + farcall LoadPartyMenuGFX + farcall InitPartyMenuWithCancel + farcall InitPartyMenuGFX + + ld a, 1 + ret + +.DontSwitch: + xor a + ld [wPartyMenuActionText], a + call CancelPokemonAction + ret + +GiveTakePartyMonItem: +; Eggs can't hold items! + ld a, [wCurPartySpecies] + cp EGG + jr z, .cancel + + ld hl, GiveTakeItemMenuData + call LoadMenuHeader + call VerticalMenu + call ExitMenu + jr c, .cancel + + call GetCurNick + ld hl, wStringBuffer1 + ld de, wMonOrItemNameBuffer + ld bc, MON_NAME_LENGTH + call CopyBytes + ld a, [wMenuCursorY] + cp 1 + jr nz, .take + + call LoadStandardMenuHeader + call ClearPalettes + call .GiveItem + call ClearPalettes + call LoadFontsBattleExtra + call ExitMenu + ld a, 0 + ret + +.take + call TakePartyItem + ld a, 3 + ret + +.cancel + ld a, 3 + ret + +.GiveItem: + farcall DepositSellInitPackBuffers + +.loop + farcall DepositSellPack + + ld a, [wPackUsedItem] + and a + jr z, .quit + + ld a, [wCurPocket] + cp KEY_ITEM_POCKET + jr z, .next + + call CheckTossableItem + ld a, [wItemAttributeParamBuffer] + and a + jr nz, .next + + call TryGiveItemToPartymon + jr .quit + +.next + ld hl, ItemCantHeldText + call MenuTextboxBackup + jr .loop + +.quit + ret + +TryGiveItemToPartymon: + call SpeechTextbox + call PartyMonItemName + call GetPartyItemLocation + ld a, [hl] + and a + jr z, .give_item_to_mon + + push hl + ld d, a + farcall ItemIsMail + pop hl + jr c, .please_remove_mail + ld a, [hl] + jr .already_holding_item + +.give_item_to_mon + call GiveItemToPokemon + ld hl, PokemonHoldItemText + call MenuTextboxBackup + call GivePartyItem + ret + +.please_remove_mail + ld hl, PokemonRemoveMailText + call MenuTextboxBackup + ret + +.already_holding_item + ld [wNamedObjectIndexBuffer], a + call GetItemName + ld hl, PokemonAskSwapItemText + call StartMenuYesNo + jr c, .abort + + call GiveItemToPokemon + ld a, [wNamedObjectIndexBuffer] + push af + ld a, [wCurItem] + ld [wNamedObjectIndexBuffer], a + pop af + ld [wCurItem], a + call ReceiveItemFromPokemon + jr nc, .bag_full + + ld hl, PokemonSwapItemText + call MenuTextboxBackup + ld a, [wNamedObjectIndexBuffer] + ld [wCurItem], a + call GivePartyItem + ret + +.bag_full + ld a, [wNamedObjectIndexBuffer] + ld [wCurItem], a + call ReceiveItemFromPokemon + ld hl, ItemStorageFullText + call MenuTextboxBackup + +.abort + ret + +GivePartyItem: + call GetPartyItemLocation + ld a, [wCurItem] + ld [hl], a + ld d, a + farcall ItemIsMail + jr nc, .done + call ComposeMailMessage + +.done + ret + +TakePartyItem: + call SpeechTextbox + call GetPartyItemLocation + ld a, [hl] + and a + jr z, .asm_12c8c + + ld [wCurItem], a + call ReceiveItemFromPokemon + jr nc, .asm_12c94 + + farcall ItemIsMail + call GetPartyItemLocation + ld a, [hl] + ld [wNamedObjectIndexBuffer], a + ld [hl], NO_ITEM + call GetItemName + ld hl, PokemonTookItemText + call MenuTextboxBackup + jr .asm_12c9a + +.asm_12c8c + ld hl, PokemonNotHoldingText + call MenuTextboxBackup + jr .asm_12c9a + +.asm_12c94 + ld hl, ItemStorageFullText + call MenuTextboxBackup + +.asm_12c9a + ret + +GiveTakeItemMenuData: + db MENU_SPRITE_ANIMS | MENU_BACKUP_TILES ; flags + menu_coords 12, 12, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1 + dw .Items + db 1 ; default option + +.Items: + db STATICMENU_CURSOR ; flags + db 2 ; # items + db "GIVE@" + db "TAKE@" + +PokemonSwapItemText: + text_far _PokemonSwapItemText + text_end + +PokemonHoldItemText: + text_far _PokemonHoldItemText + text_end + +PokemonRemoveMailText: + text_far _PokemonRemoveMailText + text_end + +PokemonNotHoldingText: + text_far _PokemonNotHoldingText + text_end + +ItemStorageFullText: + text_far _ItemStorageFullText + text_end + +PokemonTookItemText: + text_far _PokemonTookItemText + text_end + +PokemonAskSwapItemText: + text_far _PokemonAskSwapItemText + text_end + +ItemCantHeldText: + text_far _ItemCantHeldText + text_end + +GetPartyItemLocation: + push af + ld a, MON_ITEM + call GetPartyParamLocation + pop af + ret + +ReceiveItemFromPokemon: + ld a, 1 + ld [wItemQuantityChangeBuffer], a + ld hl, wNumItems + jp ReceiveItem + +GiveItemToPokemon: + ld a, 1 + ld [wItemQuantityChangeBuffer], a + ld hl, wNumItems + jp TossItem + +StartMenuYesNo: + call MenuTextbox + call YesNoBox + jp ExitMenu + +ComposeMailMessage: + ld de, wTempMailMessage + farcall _ComposeMailMessage + ld hl, wPlayerName + ld de, wTempMailAuthor + ld bc, NAME_LENGTH - 1 + call CopyBytes + ld hl, wPlayerID + ld bc, 2 + call CopyBytes + ld a, [wCurPartySpecies] + ld [de], a + inc de + ld a, [wCurItem] + ld [de], a + ld a, [wCurPartyMon] + ld hl, sPartyMail + ld bc, MAIL_STRUCT_LENGTH + call AddNTimes + ld d, h + ld e, l + ld hl, wTempMail + ld bc, MAIL_STRUCT_LENGTH + ld a, BANK(sPartyMail) + call OpenSRAM + call CopyBytes + call CloseSRAM + ret + +MonMailAction: +; If in the time capsule or trade center, +; selecting the mail only allows you to +; read the mail. + ld a, [wLinkMode] + cp LINK_TIMECAPSULE + jr z, .read + cp LINK_TRADECENTER + jr z, .read + +; Show the READ/TAKE/QUIT menu. + ld hl, .MenuHeader + call LoadMenuHeader + call VerticalMenu + call ExitMenu + +; Interpret the menu. + jp c, .done + ld a, [wMenuCursorY] + cp $1 + jr z, .read + cp $2 + jr z, .take + jp .done + +.read + farcall ReadPartyMonMail + ld a, $0 + ret + +.take + ld hl, .MailAskSendToPCText + call StartMenuYesNo + jr c, .RemoveMailToBag + ld a, [wCurPartyMon] + ld b, a + farcall SendMailToPC + jr c, .MailboxFull + ld hl, .MailSentToPCText + call MenuTextboxBackup + jr .done + +.MailboxFull: + ld hl, .MailboxFullText + call MenuTextboxBackup + jr .done + +.RemoveMailToBag: + ld hl, .MailLoseMessageText + call StartMenuYesNo + jr c, .done + call GetPartyItemLocation + ld a, [hl] + ld [wCurItem], a + call ReceiveItemFromPokemon + jr nc, .BagIsFull + call GetPartyItemLocation + ld [hl], $0 + call GetCurNick + ld hl, .MailDetachedText + call MenuTextboxBackup + jr .done + +.BagIsFull: + ld hl, .MailNoSpaceText + call MenuTextboxBackup + jr .done + +.done + ld a, $3 + ret + +.MenuHeader: + db MENU_BACKUP_TILES ; flags + menu_coords 9, 10, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1 + dw .MenuData + db 1 ; default option + +.MenuData: + db STATICMENU_CURSOR ; flags + db 3 ; items + db "READ@" + db "TAKE@" + db "QUIT@" + +.MailLoseMessageText: + text_far _MailLoseMessageText + text_end + +.MailDetachedText: + text_far _MailDetachedText + text_end + +.MailNoSpaceText: + text_far _MailNoSpaceText + text_end + +.MailAskSendToPCText: + text_far _MailAskSendToPCText + text_end + +.MailboxFullText: + text_far _MailboxFullText + text_end + +.MailSentToPCText: + text_far _MailSentToPCText + text_end + +OpenPartyStats: + call LoadStandardMenuHeader + call ClearSprites +; PartyMon + xor a + ld [wMonType], a + call LowVolume + predef StatsScreenInit + call MaxVolume + call Call_ExitMenu + ld a, 0 + ret + +MonMenu_Cut: + farcall CutFunction + ld a, [wFieldMoveSucceeded] + cp $1 + jr nz, .Fail + ld b, $4 + ld a, $2 + ret + +.Fail: + ld a, $3 + ret + +MonMenu_Fly: + farcall FlyFunction + ld a, [wFieldMoveSucceeded] + cp $2 + jr z, .Fail + cp $0 + jr z, .Error + ;farcall StubbedTrainerRankings_Fly + ld b, $4 + ld a, $2 + ret + +.Fail: + ld a, $3 + ret + +.Error: + ld a, $0 + ret + +.Unreferenced: + ld a, $1 + ret + +MonMenu_Flash: + farcall FlashFunction + ld a, [wFieldMoveSucceeded] + cp $1 + jr nz, .Fail + ld b, $4 + ld a, $2 + ret + +.Fail: + ld a, $3 + ret + +MonMenu_Strength: + farcall StrengthFunction + ld a, [wFieldMoveSucceeded] + cp $1 + jr nz, .Fail + ld b, $4 + ld a, $2 + ret + +.Fail: + ld a, $3 + ret + +MonMenu_Whirlpool: + farcall WhirlpoolFunction + ld a, [wFieldMoveSucceeded] + cp $1 + jr nz, .Fail + ld b, $4 + ld a, $2 + ret + +.Fail: + ld a, $3 + ret + +MonMenu_Waterfall: + farcall WaterfallFunction + ld a, [wFieldMoveSucceeded] + cp $1 + jr nz, .Fail + ld b, $4 + ld a, $2 + ret + +.Fail: + ld a, $3 + ret + +MonMenu_Teleport: + farcall TeleportFunction + ld a, [wFieldMoveSucceeded] + and a + jr z, .Fail + ld b, $4 + ld a, $2 + ret + +.Fail: + ld a, $3 + ret + +MonMenu_Surf: + farcall SurfFunction + ld a, [wFieldMoveSucceeded] + and a + jr z, .Fail + ld b, $4 + ld a, $2 + ret + +.Fail: + ld a, $3 + ret + +MonMenu_Dig: + farcall DigFunction + ld a, [wFieldMoveSucceeded] + cp $1 + jr nz, .Fail + ld b, $4 + ld a, $2 + ret + +.Fail: + ld a, $3 + ret + +MonMenu_Softboiled_MilkDrink: + call .CheckMonHasEnoughHP + jr nc, .NotEnoughHP + farcall Softboiled_MilkDrinkFunction + jr .finish + +.NotEnoughHP: + ld hl, .PokemonNotEnoughHPText + call PrintText + +.finish + xor a + ld [wPartyMenuActionText], a + ld a, $3 + ret + +.PokemonNotEnoughHPText: + text_far _PokemonNotEnoughHPText + text_end + +.CheckMonHasEnoughHP: +; Need to have at least (MaxHP / 5) HP left. + ld a, MON_MAXHP + call GetPartyParamLocation + ld a, [hli] + ldh [hDividend + 0], a + ld a, [hl] + ldh [hDividend + 1], a + ld a, 5 + ldh [hDivisor], a + ld b, 2 + call Divide + ld a, MON_HP + 1 + call GetPartyParamLocation + ldh a, [hQuotient + 2] + sub [hl] + dec hl + ldh a, [hQuotient + 1] + sbc [hl] + ret + +MonMenu_Headbutt: + farcall HeadbuttFunction + ld a, [wFieldMoveSucceeded] + cp $1 + jr nz, .Fail + ld b, $4 + ld a, $2 + ret + +.Fail: + ld a, $3 + ret + +MonMenu_RockSmash: + farcall RockSmashFunction + ld a, [wFieldMoveSucceeded] + cp $1 + jr nz, .Fail + ld b, $4 + ld a, $2 + ret + +.Fail: + ld a, $3 + ret + +MonMenu_SweetScent: + farcall SweetScentFromMenu + ld b, $4 + ld a, $2 + ret + +ChooseMoveToDelete: + ld hl, wOptions + ld a, [hl] + push af + set NO_TEXT_SCROLL, [hl] + call LoadFontsBattleExtra + call .ChooseMoveToDelete + pop bc + ld a, b + ld [wOptions], a + push af + call ClearBGPalettes + pop af + ret + +.ChooseMoveToDelete + call SetUpMoveScreenBG + ld de, DeleteMoveScreenAttrs + call SetMenuAttributes + call SetUpMoveList + ld hl, w2DMenuFlags1 + set 6, [hl] + jr .enter_loop + +.loop + call ScrollingMenuJoypad + bit B_BUTTON_F, a + jp nz, .b_button + bit A_BUTTON_F, a + jp nz, .a_button + +.enter_loop + call PrepareToPlaceMoveData + call PlaceMoveData + jp .loop + +.a_button + and a + jr .finish + +.b_button + scf + +.finish + push af + xor a + ld [wSwitchMon], a + ld hl, w2DMenuFlags1 + res 6, [hl] + call ClearSprites + call ClearTilemap + pop af + ret + +DeleteMoveScreenAttrs: + db 3, 1 + db 3, 1 + db $40, $00 + dn 2, 0 + db D_UP | D_DOWN | A_BUTTON | B_BUTTON + +ManagePokemonMoves: + ld a, [wCurPartySpecies] + cp EGG + jr z, .egg + ld hl, wOptions + ld a, [hl] + push af + set NO_TEXT_SCROLL, [hl] + call MoveScreenLoop + pop af + ld [wOptions], a + call ClearBGPalettes + +.egg + ld a, $0 + ret + +MoveScreenLoop: + ld a, [wCurPartyMon] + inc a + ld [wPartyMenuCursor], a + call SetUpMoveScreenBG + call PlaceMoveScreenArrows + ld de, MoveScreenAttributes + call SetMenuAttributes +.loop + call SetUpMoveList + ld hl, w2DMenuFlags1 + set 6, [hl] + jr .skip_joy + +.joy_loop + call ScrollingMenuJoypad + bit 1, a + jp nz, .b_button + bit 0, a + jp nz, .a_button + bit 4, a + jp nz, .d_right + bit 5, a + jp nz, .d_left + +.skip_joy + call PrepareToPlaceMoveData + ld a, [wMoveSwapBuffer] + and a + jr nz, .moving_move + call PlaceMoveData + jp .joy_loop + +.moving_move + ld a, " " + hlcoord 1, 11 + ld bc, 5 + call ByteFill + hlcoord 1, 12 + lb bc, 5, SCREEN_WIDTH - 2 + call ClearBox + hlcoord 1, 12 + ld de, String_MoveWhere + call PlaceString + jp .joy_loop +.b_button + call PlayClickSFX + call WaitSFX + ld a, [wMoveSwapBuffer] + and a + jp z, .exit + + ld a, [wMoveSwapBuffer] + ld [wMenuCursorY], a + xor a + ld [wMoveSwapBuffer], a + hlcoord 1, 2 + lb bc, 8, SCREEN_WIDTH - 2 + call ClearBox + jp .loop + +.d_right + ld a, [wMoveSwapBuffer] + and a + jp nz, .joy_loop + + ld a, [wCurPartyMon] + ld b, a + push bc + call .cycle_right + pop bc + ld a, [wCurPartyMon] + cp b + jp z, .joy_loop + jp MoveScreenLoop + +.d_left + ld a, [wMoveSwapBuffer] + and a + jp nz, .joy_loop + ld a, [wCurPartyMon] + ld b, a + push bc + call .cycle_left + pop bc + ld a, [wCurPartyMon] + cp b + jp z, .joy_loop + jp MoveScreenLoop + +.cycle_right + ld a, [wCurPartyMon] + inc a + ld [wCurPartyMon], a + ld c, a + ld b, 0 + ld hl, wPartySpecies + add hl, bc + ld a, [hl] + cp -1 + jr z, .cycle_left + cp EGG + ret nz + jr .cycle_right + +.cycle_left + ld a, [wCurPartyMon] + and a + ret z +.cycle_left_loop + ld a, [wCurPartyMon] + dec a + ld [wCurPartyMon], a + ld c, a + ld b, 0 + ld hl, wPartySpecies + add hl, bc + ld a, [hl] + cp EGG + ret nz + ld a, [wCurPartyMon] + and a + jr z, .cycle_right + jr .cycle_left_loop + +.a_button + call PlayClickSFX + call WaitSFX + ld a, [wMoveSwapBuffer] + and a + jr nz, .place_move + ld a, [wMenuCursorY] + ld [wMoveSwapBuffer], a + call PlaceHollowCursor + jp .moving_move + +.place_move + ld hl, wPartyMon1Moves + ld bc, PARTYMON_STRUCT_LENGTH + ld a, [wCurPartyMon] + call AddNTimes + push hl + call .copy_move + pop hl + ld bc, $15 + add hl, bc + call .copy_move + ld a, [wBattleMode] + jr z, .swap_moves + ld hl, wBattleMonMoves + ld bc, $20 + ld a, [wCurPartyMon] + call AddNTimes + push hl + call .copy_move + pop hl + ld bc, 6 + add hl, bc + call .copy_move + +.swap_moves + ld de, SFX_SWITCH_POKEMON + call PlaySFX + call WaitSFX + ld de, SFX_SWITCH_POKEMON + call PlaySFX + call WaitSFX + hlcoord 1, 2 + lb bc, 8, 18 + call ClearBox + hlcoord 10, 10 + lb bc, 1, 9 + call ClearBox + jp .loop + +.copy_move + push hl + ld a, [wMenuCursorY] + dec a + ld c, a + ld b, $0 + add hl, bc + ld d, h + ld e, l + pop hl + ld a, [wMoveSwapBuffer] + dec a + ld c, a + ld b, $0 + add hl, bc + ld a, [de] + ld b, [hl] + ld [hl], a + ld a, b + ld [de], a + ret + +.exit + xor a + ld [wMoveSwapBuffer], a + ld hl, w2DMenuFlags1 + res 6, [hl] + call ClearSprites + jp ClearTilemap + +MoveScreenAttributes: + db 3, 1 + db 3, 1 + db $40, $00 + dn 2, 0 + db D_UP | D_DOWN | D_LEFT | D_RIGHT | A_BUTTON | B_BUTTON + +String_MoveWhere: + db "Where?@" + +SetUpMoveScreenBG: + call ClearBGPalettes + call ClearTilemap + call ClearSprites + xor a + ldh [hBGMapMode], a + farcall LoadStatsScreenPageTilesGFX + farcall ClearSpriteAnims2 + ld a, [wCurPartyMon] + ld e, a + ld d, $0 + ld hl, wPartySpecies + add hl, de + ld a, [hl] + ld [wTempIconSpecies], a + ld e, MONICON_MOVES + farcall LoadMenuMonIcon + hlcoord 0, 1 + ld b, 9 + ld c, 18 + call Textbox + hlcoord 0, 11 + ld b, 5 + ld c, 18 + call Textbox + hlcoord 2, 0 + lb bc, 2, 3 + call ClearBox + xor a + ld [wMonType], a + ld hl, wPartyMonNicknames + ld a, [wCurPartyMon] + call GetNick + hlcoord 5, 1 + call PlaceString + push bc + farcall CopyMonToTempMon + pop hl + call PrintLevel + ld hl, wPlayerHPPal + call SetHPPal + ld b, SCGB_MOVE_LIST + call GetSGBLayout + hlcoord 16, 0 + lb bc, 1, 3 + jp ClearBox + +SetUpMoveList: + xor a + ldh [hBGMapMode], a + ld [wMoveSwapBuffer], a + ld [wMonType], a + predef CopyMonToTempMon + ld hl, wTempMonMoves + ld de, wListMoves_MoveIndicesBuffer + ld bc, NUM_MOVES + call CopyBytes + ld a, SCREEN_WIDTH * 2 + ld [wBuffer1], a + hlcoord 2, 3 + predef ListMoves + hlcoord 10, 4 + predef ListMovePP + call WaitBGMap + call SetPalettes + ld a, [wNumMoves] + inc a + ld [w2DMenuNumRows], a + hlcoord 0, 11 + ld b, 5 + ld c, 18 + jp Textbox + +PrepareToPlaceMoveData: + ld hl, wPartyMon1Moves + ld bc, PARTYMON_STRUCT_LENGTH + ld a, [wCurPartyMon] + call AddNTimes + ld a, [wMenuCursorY] + dec a + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + ld [wCurSpecies], a + hlcoord 1, 12 + lb bc, 5, 18 + jp ClearBox + +PlaceMoveData: + xor a + ldh [hBGMapMode], a + hlcoord 0, 10 + ld de, String_MoveType_Top + call PlaceString + hlcoord 0, 11 + ld de, String_MoveType_Bottom + call PlaceString + hlcoord 11, 12 + ld de, String_MoveAtk + call PlaceString + ld a, [wCurSpecies] + ld b, a + hlcoord 2, 12 + predef PrintMoveType + ld a, [wCurSpecies] + dec a + ld hl, Moves + MOVE_POWER + ld bc, MOVE_LENGTH + call AddNTimes + ld a, BANK(Moves) + call GetFarByte + hlcoord 16, 12 + cp 2 + jr c, .no_power + ld [wDeciramBuffer], a + ld de, wDeciramBuffer + lb bc, 1, 3 + call PrintNum + jr .description + +.no_power + ld de, String_MoveNoPower + call PlaceString + +.description + hlcoord 1, 14 + predef PrintMoveDesc + ld a, $1 + ldh [hBGMapMode], a + ret + +String_MoveType_Top: + db "┌─────┐@" +String_MoveType_Bottom: + db "│TYPE/└@" +String_MoveAtk: + db "ATTK/@" +String_MoveNoPower: + db "---@" + +PlaceMoveScreenArrows: + call PlaceMoveScreenLeftArrow + call PlaceMoveScreenRightArrow + ret + +PlaceMoveScreenLeftArrow: + ld a, [wCurPartyMon] + and a + ret z + ld c, a + ld e, a + ld d, 0 + ld hl, wPartyCount + add hl, de +.loop + ld a, [hl] + and a + jr z, .prev + cp EGG + jr z, .prev + cp NUM_POKEMON + 1 + jr c, .legal + +.prev + dec hl + dec c + jr nz, .loop + ret + +.legal + hlcoord 16, 0 + ld [hl], "◀" + ret + +PlaceMoveScreenRightArrow: + ld a, [wCurPartyMon] + inc a + ld c, a + ld a, [wPartyCount] + cp c + ret z + ld e, c + ld d, 0 + ld hl, wPartySpecies + add hl, de +.loop + ld a, [hl] + cp -1 + ret z + and a + jr z, .next + cp EGG + jr z, .next + cp NUM_POKEMON + 1 + jr c, .legal + +.next + inc hl + jr .loop + +.legal + hlcoord 18, 0 + ld [hl], "▶" + ret diff --git a/engine/specials.asm b/engine/specials.asm index ad6c2085..bb0086bf 100755 --- a/engine/specials.asm +++ b/engine/specials.asm @@ -269,7 +269,7 @@ GetMysteryGiftItem: ; c463 (3:4463) ld a, $0 call OpenSRAM ld a, [$abe2] - ld [wd002], a + ld [wCurItem], a ld a, $1 ld [wItemQuantityChangeBuffer], a ld hl, wNumItems @@ -278,7 +278,7 @@ GetMysteryGiftItem: ; c463 (3:4463) xor a ld [$abe2], a call CloseSRAM - ld a, [wd002] + ld a, [wCurItem] ld [wd151], a call GetItemName ld hl, ReceivedMysteryGiftText ; $449f @@ -361,7 +361,7 @@ Functionc508: ; c508 (3:4508) or [hl] jr z, .asm_c51e ld a, COIN_CASE - ld [wd002], a + ld [wCurItem], a ld hl, wNumItems call CheckItem jr nc, .asm_c523 @@ -472,7 +472,7 @@ SelectApricornForKurt: ; c5bb (3:45bb) ld [wScriptVar], a and a ret z - ld [wd002], a + ld [wCurItem], a ld a, $1 ld [wItemQuantityChangeBuffer], a ld hl, wNumItems diff --git a/home/gfx.asm b/home/gfx.asm index 14a46844..7c5deb51 100644 --- a/home/gfx.asm +++ b/home/gfx.asm @@ -32,8 +32,8 @@ Functiond9e:: farcall Functionf8000 ret -Functionda5:: - farcall Functionf8032 +LoadFontsBattleExtra:: + farcall _LoadFontsBattleExtra ret LoadFontsExtra:: diff --git a/home/map.asm b/home/map.asm index cf60545b..d331c40d 100644 --- a/home/map.asm +++ b/home/map.asm @@ -2024,8 +2024,8 @@ CheckIfFacingTileCoordIsSign:: ; 2b8f (0:2b8f) .asm_2bad pop hl - ld de, wcf29 - ld bc, $5 + ld de, wCurBGEvent + ld bc, BG_EVENT_SIZE call CopyBytes scf ret @@ -2088,8 +2088,8 @@ CheckCurrentMapXYTriggers:: .asm_2c02 pop hl - ld de, wcf29 - ld bc, $8 + ld de, wCurCoordEvent + ld bc, COORD_EVENT_SIZE call CopyBytes scf ret diff --git a/home/menu.asm b/home/menu.asm index a82fa3a3..634d4bf3 100644 --- a/home/menu.asm +++ b/home/menu.asm @@ -110,8 +110,8 @@ RestoreTileBackup:: ret PopWindow:: - ld b, $10 - ld de, wMenuFlags + ld b, wMenuHeaderEnd - wMenuHeader + ld de, wMenuHeader .loop ld a, [hld] ld [de], a @@ -142,8 +142,8 @@ CopyMenuData:: ld a, [hli] ld h, [hl] ld l, a - ld de, wMenuDataFlags - ld bc, wMenuDataEnd - wMenuDataFlags + ld de, wMenuData + ld bc, wMenuDataEnd - wMenuData call CopyBytes pop af pop bc diff --git a/home/pokemon.asm b/home/pokemon.asm index 774bc04a..0c51fba8 100755 --- a/home/pokemon.asm +++ b/home/pokemon.asm @@ -204,7 +204,7 @@ Print8BitNumLeftAlign:: jp PrintNum Unreferenced_GetNthMove:: - ld hl, wd149 + ld hl, wListMoves_MoveIndicesBuffer ld c, a ld b, 0 add hl, bc diff --git a/items/item_effects.asm b/items/item_effects.asm index cdbaacc2..5cb96ba5 100755 --- a/items/item_effects.asm +++ b/items/item_effects.asm @@ -1,11 +1,11 @@ _DoItemEffect:: ; e7a6 (3:67a6) - ld a, [wd002] + ld a, [wCurItem] ld [wd151], a call GetItemName call CopyName1 ld a, $1 ld [wFieldMoveSucceeded], a - ld a, [wd002] + ld a, [wCurItem] dec a ld hl, .ItemEffects rst JumpTable @@ -219,7 +219,7 @@ UltraBall: ; e926 .room_in_party_or_pc xor a ld [wWildMon], a - ld a, [wd002] + ld a, [wCurItem] cp PARK_BALL call nz, ReturnToBattle_UseBall ld hl, wOptions @@ -231,10 +231,10 @@ UltraBall: ; e926 ld a, [wBattleType] cp BATTLETYPE_TUTORIAL jp z, .catch_without_fail - ld a, [wd002] + ld a, [wCurItem] cp MASTER_BALL jp z, .catch_without_fail - ld a, [wd002] + ld a, [wCurItem] ld c, a ld hl, BallMultiplierFunctionTable ; $6c73 .get_multiplier_loop @@ -256,7 +256,7 @@ UltraBall: ; e926 jp hl .skip_or_return_from_ball_fn - ld a, [wd002] + ld a, [wCurItem] cp LEVEL_BALL ld a, b jp z, .skip_hp_calc @@ -382,7 +382,7 @@ UltraBall: ; e926 ld [wWildMon], a ld c, 20 call DelayFrames - ld a, [wd002] + ld a, [wCurItem] cp POKE_BALL + 1 jr c, .asm_ea34 ld a, $5 @@ -519,7 +519,7 @@ UltraBall: ; e926 ld [wMonType], a call ClearSprites predef TryAddMonToParty - ld a, [wd002] + ld a, [wCurItem] cp FRIEND_BALL jr nz, .skip_party_mon_friend_ball ld a, [wPartyCount] @@ -568,7 +568,7 @@ UltraBall: ; e926 ld hl, wBattleResult set 7, [hl] .not_full_yet - ld a, [wd002] + ld a, [wCurItem] cp FRIEND_BALL jr nz, .skip_box_mon_friend_ball ld a, FRIEND_BALL_HAPPINESS @@ -1111,7 +1111,7 @@ StatStrings: .special db "SPECIAL@" Functionef2d: ; ef2d (3:6f2d) - ld a, [wd002] + ld a, [wCurItem] ld hl, StatOffsets .asm_ef33 cp [hl] @@ -1329,7 +1329,7 @@ Functionf086: ; f086 (3:7086) Functionf0ae: ; f0ae (3:70ae) push hl - ld a, [wd002] + ld a, [wCurItem] ld hl, .healingactions ; $70c7 ld bc, $3 .asm_f0b8 @@ -1421,7 +1421,7 @@ Functionf12c: ; f12c (3:712c) .asm_f15a xor a ld [wLowHealthAlarm], a - ld a, [wd002] + ld a, [wCurItem] cp REVIVE jr z, .asm_f16a call Functionf319 @@ -1822,7 +1822,7 @@ GetOneFifthMaxHP: ; f3ce (3:73ce) Functionf3eb: ; f3eb (3:73eb) push hl - ld a, [wd002] + ld a, [wCurItem] ld hl, HealingItemParameters ld d, a .asm_f3f3 @@ -1862,6 +1862,7 @@ HealingItemParameters: dbw BERRY_JUICE, 20 dbw -1, 0 +Softboiled_MilkDrinkFunction: ld a, [wPartyMenuCursor] dec a ld b, a @@ -2001,7 +2002,7 @@ XDefend: ; f515 XSpecial: ; f515 XSpeed: ; f515 call Functionf7d0 - ld a, [wd002] + ld a, [wCurItem] ld hl, .x_item_table .asm_f51e cp [hl] @@ -2148,7 +2149,7 @@ MaxElixer: ; f606 MaxEther: ; f606 Mysteryberry: ; f606 PPUp: ; f606 (3:7606) - ld a, [wd002] + ld a, [wCurItem] ld [wMovementBufferCount], a .asm_f60c ld b, $1 @@ -593,7 +593,7 @@ INCLUDE "items/item_effects.asm" KnowsMove: ld a, MON_MOVES call GetPartyParamLocation - ld a, [wd14d] + ld a, [wPutativeTMHMMove] ld b, a ld c, $4 .asm_fa28 @@ -627,13 +627,10 @@ INCLUDE "engine/events/heal_machine_anim.asm" INCLUDE "engine/events/whiteout.asm" INCLUDE "engine/events/forced_movement.asm" INCLUDE "engine/events/itemfinder.asm" -StartMenu: - dr $12994, $12e33 - -PartyMonItemName:: - dr $12e33, $12fa0 -Function12fa0: - dr $12fa0, $1399d +INCLUDE "engine/menus/start_menu.asm" +INCLUDE "engine/pokemon/mon_menu.asm" +INCLUDE "engine/overworld/select_menu.asm" +INCLUDE "engine/events/elevator.asm" INCLUDE "engine/events/bug_contest/contest.asm" INCLUDE "engine/events/misc_scripts_2.asm" INCLUDE "engine/events/std_collision.asm" @@ -679,7 +676,9 @@ Function14a2d:: ; 14a2d Function14a44: ; 14a44 dr $14a44, $14a73 CheckCutCollision: - dr $14a73, $14bd2 + dr $14a73, $14abe +SaveMenu: + dr $14abe, $14bd2 StartMovePkmnWOMail_SaveGame: dr $14bd2, $14ef5 TryLoadSaveFile: ; 14ef5 @@ -757,11 +756,19 @@ PlaceMoneyTopRight: DisplayCoinCaseBalance: dr $24a4d, $24a76 DisplayMoneyAndCoinBalance: - dr $24a76, $24b8d + dr $24a76, $24b05 +StartMenu_DrawBugContestStatusBox: + dr $24b05, $24b10 +StartMenu_PrintBugContestStatus: + dr $24b10, $24b8d Function24b8d: - dr $24b8d, $24f20 + dr $24b8d, $24c89 +MonSubmenu: + dr $24c89, $24f20 SelectQuantityToToss: - dr $24f20, $267ca + dr $24f20, $25061 +TrainerCard: + dr $25061, $267ca ProfOaksPCBoot: dr $267ca, $2692d InitDecorations: ; 2692d @@ -933,6 +940,7 @@ Function3f55d: dr $3f55d, $40000 SECTION "bank10", ROMX, BANK[$10] +Pokedex:: dr $40000, $41afe Moves:: dr $41afe, $421db @@ -962,7 +970,9 @@ PokedexDataPointerTable:: dr $44360, $44648 PlaceGraphic:: - dr $44648, $44870 + dr $44648, $44679 +SendMailToPC:: + dr $44679, $44870 DeletePartyMonMail: dr $44870, $4488c @@ -992,7 +1002,10 @@ InitPartyMenuGFX: dr $50355, $5037a InitPartyMenuWithCancel: - dr $5037a, $503cc + dr $5037a, $503a2 + +InitPartyMenuNoCancel: + dr $503a2, $503cc PartyMenuSelect: dr $503cc, $5040f @@ -1004,7 +1017,11 @@ PrintPartyMenuActionText: dr $504db, $5054f LoadFishingGFX: - dr $5054f, $50763 + dr $5054f, $506f2 + +; INCLUDE "engine/events/sweet_scent.asm" +SweetScentFromMenu: + dr $506f2, $50763 SquirtbottleFunction: dr $50763, $507ac @@ -1064,7 +1081,10 @@ CalcLevel: dr $51524, $51550 CalcExpAtLevel: - dr $51550, $51749 + dr $51550, $5161b + +_SwitchPartyMons: + dr $5161b, $51749 GetUnownLetter:: dr $51749, $51780 @@ -1216,17 +1236,29 @@ _InitSpriteAnimStruct:: ; 8d1f7 _ReinitSpriteAnimFrame:: ; 8d332 IF DEF(GOLD) - dr $8d332, $8e79f + dr $8d332, $8e774 +ClearSpriteAnims2:: + dr $8e774, $8e79f LoadMenuMonIcon:: - dr $8e79f, $90000 + dr $8e79f, $8e922 +UnfreezeMonIcons:: + dr $8e922, $8e93d +HoldSwitchmonIcon:: + dr $8e93d, $90000 ENDC IF DEF(SILVER) - dr $8d332, $8e785 + dr $8d332, $8e75a +ClearSpriteAnims2:: + dr $8e75a, $8e785 LoadMenuMonIcon:: - dr $8e785, $90000 + dr $8e785, $8e908 +UnfreezeMonIcons:: + dr $8e908, $8e923 +HoldSwitchmonIcon:: + dr $8e923, $90000 ENDC SECTION "bank24", ROMX, BANK[$24] @@ -1242,7 +1274,9 @@ InitialClearDSTFlag: MrChrono: dr $90a8d, $90b0f PrintHour: - dr $90b0f, $9188a + dr $90b0f, $90b5e +PokeGear: + dr $90b5e, $9188a Function9188a: dr $9188a, $919c1 Function919c1: @@ -1322,8 +1356,9 @@ TreeMonEncounter: dr $ba378, $ba3a1 RockMonEncounter: - dr $ba3a1, $bbaed - + dr $ba3a1, $baeca +ReadPartyMonMail: + dr $baeca, $bbaed ItemIsMail: dr $bbaed, $bc000 @@ -1453,8 +1488,10 @@ Functionf8000:: dr $f8000, $f800c Functionf800c:: dr $f800c, $f8032 -Functionf8032:: - dr $f8032, $fb4be +_LoadFontsBattleExtra:: + dr $f8032, $f80d9 +LoadStatsScreenPageTilesGFX:: + dr $f80d9, $fb4be TileCollisionTable:: dr $fb4be, $fb5be diff --git a/predef/cgb.asm b/predef/cgb.asm index a7baefe8..bd822607 100755 --- a/predef/cgb.asm +++ b/predef/cgb.asm @@ -92,7 +92,7 @@ Function9399: ; 9399 (2:5399) ld bc, Palettes_ad2d add hl, bc call Function9adb - ld a, [wcc99] + ld a, [wPlayerHPPal] ld l, a ld h, $0 add hl, hl @@ -553,7 +553,7 @@ Function976d: ; 976d (2:576d) call AddNTimes ld c, l ld b, h - ld a, [wcc99] + ld a, [wPlayerHPPal] call Function9bcb call Function9adb ld hl, Palettes_9c09 @@ -685,7 +685,7 @@ Function98be: ; 98be (2:58be) ld a, $10 call Function9ac7 call Function9ad2 - ld a, [wcc99] + ld a, [wPlayerHPPal] ld l, a ld h, $0 add hl, hl diff --git a/predef/sgb.asm b/predef/sgb.asm index eee36a80..e94ad9fc 100755 --- a/predef/sgb.asm +++ b/predef/sgb.asm @@ -66,7 +66,7 @@ Function8c97: ; 8c97 (2:4c97) ld de, wcca9 ld bc, $10 call CopyBytes - ld a, [wcc99] + ld a, [wPlayerHPPal] ld l, a ld h, $0 add hl, hl @@ -133,7 +133,7 @@ Function8d1f: ; 8d1f (2:4d1f) ld [hl], $10 inc hl inc hl - ld a, [wcc99] + ld a, [wPlayerHPPal] add $2f ld [hl], a ld hl, wcca9 @@ -374,7 +374,7 @@ Function8eb7: ; 8eb7 (2:4eb7) call AddNTimes ld c, l ld b, h - ld a, [wcc99] + ld a, [wPlayerHPPal] call Function9bcb ld a, [hli] ld [wccac], a @@ -365,1512 +365,53 @@ s0_a5fc:: ds 1 ; 0:a5fc s0_a5fd:: ds 1 ; 0:a5fd s0_a5fe:: ds 1 ; 0:a5fe s0_a5ff:: ds 1 ; 0:a5ff -s0_a600:: ds 1 ; 0:a600 -s0_a601:: ds 1 ; 0:a601 -s0_a602:: ds 1 ; 0:a602 -s0_a603:: ds 1 ; 0:a603 -s0_a604:: ds 1 ; 0:a604 -s0_a605:: ds 1 ; 0:a605 -s0_a606:: ds 1 ; 0:a606 -s0_a607:: ds 1 ; 0:a607 -s0_a608:: ds 1 ; 0:a608 -s0_a609:: ds 1 ; 0:a609 -s0_a60a:: ds 1 ; 0:a60a -s0_a60b:: ds 1 ; 0:a60b -s0_a60c:: ds 1 ; 0:a60c -s0_a60d:: ds 1 ; 0:a60d -s0_a60e:: ds 1 ; 0:a60e -s0_a60f:: ds 1 ; 0:a60f -s0_a610:: ds 1 ; 0:a610 -s0_a611:: ds 1 ; 0:a611 -s0_a612:: ds 1 ; 0:a612 -s0_a613:: ds 1 ; 0:a613 -s0_a614:: ds 1 ; 0:a614 -s0_a615:: ds 1 ; 0:a615 -s0_a616:: ds 1 ; 0:a616 -s0_a617:: ds 1 ; 0:a617 -s0_a618:: ds 1 ; 0:a618 -s0_a619:: ds 1 ; 0:a619 -s0_a61a:: ds 1 ; 0:a61a -s0_a61b:: ds 1 ; 0:a61b -s0_a61c:: ds 1 ; 0:a61c -s0_a61d:: ds 1 ; 0:a61d -s0_a61e:: ds 1 ; 0:a61e -s0_a61f:: ds 1 ; 0:a61f -s0_a620:: ds 1 ; 0:a620 -s0_a621:: ds 1 ; 0:a621 -s0_a622:: ds 1 ; 0:a622 -s0_a623:: ds 1 ; 0:a623 -s0_a624:: ds 1 ; 0:a624 -s0_a625:: ds 1 ; 0:a625 -s0_a626:: ds 1 ; 0:a626 -s0_a627:: ds 1 ; 0:a627 -s0_a628:: ds 1 ; 0:a628 -s0_a629:: ds 1 ; 0:a629 -s0_a62a:: ds 1 ; 0:a62a -s0_a62b:: ds 1 ; 0:a62b -s0_a62c:: ds 1 ; 0:a62c -s0_a62d:: ds 1 ; 0:a62d -s0_a62e:: ds 1 ; 0:a62e -s0_a62f:: ds 1 ; 0:a62f -s0_a630:: ds 1 ; 0:a630 -s0_a631:: ds 1 ; 0:a631 -s0_a632:: ds 1 ; 0:a632 -s0_a633:: ds 1 ; 0:a633 -s0_a634:: ds 1 ; 0:a634 -s0_a635:: ds 1 ; 0:a635 -s0_a636:: ds 1 ; 0:a636 -s0_a637:: ds 1 ; 0:a637 -s0_a638:: ds 1 ; 0:a638 -s0_a639:: ds 1 ; 0:a639 -s0_a63a:: ds 1 ; 0:a63a -s0_a63b:: ds 1 ; 0:a63b -s0_a63c:: ds 1 ; 0:a63c -s0_a63d:: ds 1 ; 0:a63d -s0_a63e:: ds 1 ; 0:a63e -s0_a63f:: ds 1 ; 0:a63f -s0_a640:: ds 1 ; 0:a640 -s0_a641:: ds 1 ; 0:a641 -s0_a642:: ds 1 ; 0:a642 -s0_a643:: ds 1 ; 0:a643 -s0_a644:: ds 1 ; 0:a644 -s0_a645:: ds 1 ; 0:a645 -s0_a646:: ds 1 ; 0:a646 -s0_a647:: ds 1 ; 0:a647 -s0_a648:: ds 1 ; 0:a648 -s0_a649:: ds 1 ; 0:a649 -s0_a64a:: ds 1 ; 0:a64a -s0_a64b:: ds 1 ; 0:a64b -s0_a64c:: ds 1 ; 0:a64c -s0_a64d:: ds 1 ; 0:a64d -s0_a64e:: ds 1 ; 0:a64e -s0_a64f:: ds 1 ; 0:a64f -s0_a650:: ds 1 ; 0:a650 -s0_a651:: ds 1 ; 0:a651 -s0_a652:: ds 1 ; 0:a652 -s0_a653:: ds 1 ; 0:a653 -s0_a654:: ds 1 ; 0:a654 -s0_a655:: ds 1 ; 0:a655 -s0_a656:: ds 1 ; 0:a656 -s0_a657:: ds 1 ; 0:a657 -s0_a658:: ds 1 ; 0:a658 -s0_a659:: ds 1 ; 0:a659 -s0_a65a:: ds 1 ; 0:a65a -s0_a65b:: ds 1 ; 0:a65b -s0_a65c:: ds 1 ; 0:a65c -s0_a65d:: ds 1 ; 0:a65d -s0_a65e:: ds 1 ; 0:a65e -s0_a65f:: ds 1 ; 0:a65f -s0_a660:: ds 1 ; 0:a660 -s0_a661:: ds 1 ; 0:a661 -s0_a662:: ds 1 ; 0:a662 -s0_a663:: ds 1 ; 0:a663 -s0_a664:: ds 1 ; 0:a664 -s0_a665:: ds 1 ; 0:a665 -s0_a666:: ds 1 ; 0:a666 -s0_a667:: ds 1 ; 0:a667 -s0_a668:: ds 1 ; 0:a668 -s0_a669:: ds 1 ; 0:a669 -s0_a66a:: ds 1 ; 0:a66a -s0_a66b:: ds 1 ; 0:a66b -s0_a66c:: ds 1 ; 0:a66c -s0_a66d:: ds 1 ; 0:a66d -s0_a66e:: ds 1 ; 0:a66e -s0_a66f:: ds 1 ; 0:a66f -s0_a670:: ds 1 ; 0:a670 -s0_a671:: ds 1 ; 0:a671 -s0_a672:: ds 1 ; 0:a672 -s0_a673:: ds 1 ; 0:a673 -s0_a674:: ds 1 ; 0:a674 -s0_a675:: ds 1 ; 0:a675 -s0_a676:: ds 1 ; 0:a676 -s0_a677:: ds 1 ; 0:a677 -s0_a678:: ds 1 ; 0:a678 -s0_a679:: ds 1 ; 0:a679 -s0_a67a:: ds 1 ; 0:a67a -s0_a67b:: ds 1 ; 0:a67b -s0_a67c:: ds 1 ; 0:a67c -s0_a67d:: ds 1 ; 0:a67d -s0_a67e:: ds 1 ; 0:a67e -s0_a67f:: ds 1 ; 0:a67f -s0_a680:: ds 1 ; 0:a680 -s0_a681:: ds 1 ; 0:a681 -s0_a682:: ds 1 ; 0:a682 -s0_a683:: ds 1 ; 0:a683 -s0_a684:: ds 1 ; 0:a684 -s0_a685:: ds 1 ; 0:a685 -s0_a686:: ds 1 ; 0:a686 -s0_a687:: ds 1 ; 0:a687 -s0_a688:: ds 1 ; 0:a688 -s0_a689:: ds 1 ; 0:a689 -s0_a68a:: ds 1 ; 0:a68a -s0_a68b:: ds 1 ; 0:a68b -s0_a68c:: ds 1 ; 0:a68c -s0_a68d:: ds 1 ; 0:a68d -s0_a68e:: ds 1 ; 0:a68e -s0_a68f:: ds 1 ; 0:a68f -s0_a690:: ds 1 ; 0:a690 -s0_a691:: ds 1 ; 0:a691 -s0_a692:: ds 1 ; 0:a692 -s0_a693:: ds 1 ; 0:a693 -s0_a694:: ds 1 ; 0:a694 -s0_a695:: ds 1 ; 0:a695 -s0_a696:: ds 1 ; 0:a696 -s0_a697:: ds 1 ; 0:a697 -s0_a698:: ds 1 ; 0:a698 -s0_a699:: ds 1 ; 0:a699 -s0_a69a:: ds 1 ; 0:a69a -s0_a69b:: ds 1 ; 0:a69b -s0_a69c:: ds 1 ; 0:a69c -s0_a69d:: ds 1 ; 0:a69d -s0_a69e:: ds 1 ; 0:a69e -s0_a69f:: ds 1 ; 0:a69f -s0_a6a0:: ds 1 ; 0:a6a0 -s0_a6a1:: ds 1 ; 0:a6a1 -s0_a6a2:: ds 1 ; 0:a6a2 -s0_a6a3:: ds 1 ; 0:a6a3 -s0_a6a4:: ds 1 ; 0:a6a4 -s0_a6a5:: ds 1 ; 0:a6a5 -s0_a6a6:: ds 1 ; 0:a6a6 -s0_a6a7:: ds 1 ; 0:a6a7 -s0_a6a8:: ds 1 ; 0:a6a8 -s0_a6a9:: ds 1 ; 0:a6a9 -s0_a6aa:: ds 1 ; 0:a6aa -s0_a6ab:: ds 1 ; 0:a6ab -s0_a6ac:: ds 1 ; 0:a6ac -s0_a6ad:: ds 1 ; 0:a6ad -s0_a6ae:: ds 1 ; 0:a6ae -s0_a6af:: ds 1 ; 0:a6af -s0_a6b0:: ds 1 ; 0:a6b0 -s0_a6b1:: ds 1 ; 0:a6b1 -s0_a6b2:: ds 1 ; 0:a6b2 -s0_a6b3:: ds 1 ; 0:a6b3 -s0_a6b4:: ds 1 ; 0:a6b4 -s0_a6b5:: ds 1 ; 0:a6b5 -s0_a6b6:: ds 1 ; 0:a6b6 -s0_a6b7:: ds 1 ; 0:a6b7 -s0_a6b8:: ds 1 ; 0:a6b8 -s0_a6b9:: ds 1 ; 0:a6b9 -s0_a6ba:: ds 1 ; 0:a6ba -s0_a6bb:: ds 1 ; 0:a6bb -s0_a6bc:: ds 1 ; 0:a6bc -s0_a6bd:: ds 1 ; 0:a6bd -s0_a6be:: ds 1 ; 0:a6be -s0_a6bf:: ds 1 ; 0:a6bf -s0_a6c0:: ds 1 ; 0:a6c0 -s0_a6c1:: ds 1 ; 0:a6c1 -s0_a6c2:: ds 1 ; 0:a6c2 -s0_a6c3:: ds 1 ; 0:a6c3 -s0_a6c4:: ds 1 ; 0:a6c4 -s0_a6c5:: ds 1 ; 0:a6c5 -s0_a6c6:: ds 1 ; 0:a6c6 -s0_a6c7:: ds 1 ; 0:a6c7 -s0_a6c8:: ds 1 ; 0:a6c8 -s0_a6c9:: ds 1 ; 0:a6c9 -s0_a6ca:: ds 1 ; 0:a6ca -s0_a6cb:: ds 1 ; 0:a6cb -s0_a6cc:: ds 1 ; 0:a6cc -s0_a6cd:: ds 1 ; 0:a6cd -s0_a6ce:: ds 1 ; 0:a6ce -s0_a6cf:: ds 1 ; 0:a6cf -s0_a6d0:: ds 1 ; 0:a6d0 -s0_a6d1:: ds 1 ; 0:a6d1 -s0_a6d2:: ds 1 ; 0:a6d2 -s0_a6d3:: ds 1 ; 0:a6d3 -s0_a6d4:: ds 1 ; 0:a6d4 -s0_a6d5:: ds 1 ; 0:a6d5 -s0_a6d6:: ds 1 ; 0:a6d6 -s0_a6d7:: ds 1 ; 0:a6d7 -s0_a6d8:: ds 1 ; 0:a6d8 -s0_a6d9:: ds 1 ; 0:a6d9 -s0_a6da:: ds 1 ; 0:a6da -s0_a6db:: ds 1 ; 0:a6db -s0_a6dc:: ds 1 ; 0:a6dc -s0_a6dd:: ds 1 ; 0:a6dd -s0_a6de:: ds 1 ; 0:a6de -s0_a6df:: ds 1 ; 0:a6df -s0_a6e0:: ds 1 ; 0:a6e0 -s0_a6e1:: ds 1 ; 0:a6e1 -s0_a6e2:: ds 1 ; 0:a6e2 -s0_a6e3:: ds 1 ; 0:a6e3 -s0_a6e4:: ds 1 ; 0:a6e4 -s0_a6e5:: ds 1 ; 0:a6e5 -s0_a6e6:: ds 1 ; 0:a6e6 -s0_a6e7:: ds 1 ; 0:a6e7 -s0_a6e8:: ds 1 ; 0:a6e8 -s0_a6e9:: ds 1 ; 0:a6e9 -s0_a6ea:: ds 1 ; 0:a6ea -s0_a6eb:: ds 1 ; 0:a6eb -s0_a6ec:: ds 1 ; 0:a6ec -s0_a6ed:: ds 1 ; 0:a6ed -s0_a6ee:: ds 1 ; 0:a6ee -s0_a6ef:: ds 1 ; 0:a6ef -s0_a6f0:: ds 1 ; 0:a6f0 -s0_a6f1:: ds 1 ; 0:a6f1 -s0_a6f2:: ds 1 ; 0:a6f2 -s0_a6f3:: ds 1 ; 0:a6f3 -s0_a6f4:: ds 1 ; 0:a6f4 -s0_a6f5:: ds 1 ; 0:a6f5 -s0_a6f6:: ds 1 ; 0:a6f6 -s0_a6f7:: ds 1 ; 0:a6f7 -s0_a6f8:: ds 1 ; 0:a6f8 -s0_a6f9:: ds 1 ; 0:a6f9 -s0_a6fa:: ds 1 ; 0:a6fa -s0_a6fb:: ds 1 ; 0:a6fb -s0_a6fc:: ds 1 ; 0:a6fc -s0_a6fd:: ds 1 ; 0:a6fd -s0_a6fe:: ds 1 ; 0:a6fe -s0_a6ff:: ds 1 ; 0:a6ff -s0_a700:: ds 1 ; 0:a700 -s0_a701:: ds 1 ; 0:a701 -s0_a702:: ds 1 ; 0:a702 -s0_a703:: ds 1 ; 0:a703 -s0_a704:: ds 1 ; 0:a704 -s0_a705:: ds 1 ; 0:a705 -s0_a706:: ds 1 ; 0:a706 -s0_a707:: ds 1 ; 0:a707 -s0_a708:: ds 1 ; 0:a708 -s0_a709:: ds 1 ; 0:a709 -s0_a70a:: ds 1 ; 0:a70a -s0_a70b:: ds 1 ; 0:a70b -s0_a70c:: ds 1 ; 0:a70c -s0_a70d:: ds 1 ; 0:a70d -s0_a70e:: ds 1 ; 0:a70e -s0_a70f:: ds 1 ; 0:a70f -s0_a710:: ds 1 ; 0:a710 -s0_a711:: ds 1 ; 0:a711 -s0_a712:: ds 1 ; 0:a712 -s0_a713:: ds 1 ; 0:a713 -s0_a714:: ds 1 ; 0:a714 -s0_a715:: ds 1 ; 0:a715 -s0_a716:: ds 1 ; 0:a716 -s0_a717:: ds 1 ; 0:a717 -s0_a718:: ds 1 ; 0:a718 -s0_a719:: ds 1 ; 0:a719 -s0_a71a:: ds 1 ; 0:a71a -s0_a71b:: ds 1 ; 0:a71b -s0_a71c:: ds 1 ; 0:a71c -s0_a71d:: ds 1 ; 0:a71d -s0_a71e:: ds 1 ; 0:a71e -s0_a71f:: ds 1 ; 0:a71f -s0_a720:: ds 1 ; 0:a720 -s0_a721:: ds 1 ; 0:a721 -s0_a722:: ds 1 ; 0:a722 -s0_a723:: ds 1 ; 0:a723 -s0_a724:: ds 1 ; 0:a724 -s0_a725:: ds 1 ; 0:a725 -s0_a726:: ds 1 ; 0:a726 -s0_a727:: ds 1 ; 0:a727 -s0_a728:: ds 1 ; 0:a728 -s0_a729:: ds 1 ; 0:a729 -s0_a72a:: ds 1 ; 0:a72a -s0_a72b:: ds 1 ; 0:a72b -s0_a72c:: ds 1 ; 0:a72c -s0_a72d:: ds 1 ; 0:a72d -s0_a72e:: ds 1 ; 0:a72e -s0_a72f:: ds 1 ; 0:a72f -s0_a730:: ds 1 ; 0:a730 -s0_a731:: ds 1 ; 0:a731 -s0_a732:: ds 1 ; 0:a732 -s0_a733:: ds 1 ; 0:a733 -s0_a734:: ds 1 ; 0:a734 -s0_a735:: ds 1 ; 0:a735 -s0_a736:: ds 1 ; 0:a736 -s0_a737:: ds 1 ; 0:a737 -s0_a738:: ds 1 ; 0:a738 -s0_a739:: ds 1 ; 0:a739 -s0_a73a:: ds 1 ; 0:a73a -s0_a73b:: ds 1 ; 0:a73b -s0_a73c:: ds 1 ; 0:a73c -s0_a73d:: ds 1 ; 0:a73d -s0_a73e:: ds 1 ; 0:a73e -s0_a73f:: ds 1 ; 0:a73f -s0_a740:: ds 1 ; 0:a740 -s0_a741:: ds 1 ; 0:a741 -s0_a742:: ds 1 ; 0:a742 -s0_a743:: ds 1 ; 0:a743 -s0_a744:: ds 1 ; 0:a744 -s0_a745:: ds 1 ; 0:a745 -s0_a746:: ds 1 ; 0:a746 -s0_a747:: ds 1 ; 0:a747 -s0_a748:: ds 1 ; 0:a748 -s0_a749:: ds 1 ; 0:a749 -s0_a74a:: ds 1 ; 0:a74a -s0_a74b:: ds 1 ; 0:a74b -s0_a74c:: ds 1 ; 0:a74c -s0_a74d:: ds 1 ; 0:a74d -s0_a74e:: ds 1 ; 0:a74e -s0_a74f:: ds 1 ; 0:a74f -s0_a750:: ds 1 ; 0:a750 -s0_a751:: ds 1 ; 0:a751 -s0_a752:: ds 1 ; 0:a752 -s0_a753:: ds 1 ; 0:a753 -s0_a754:: ds 1 ; 0:a754 -s0_a755:: ds 1 ; 0:a755 -s0_a756:: ds 1 ; 0:a756 -s0_a757:: ds 1 ; 0:a757 -s0_a758:: ds 1 ; 0:a758 -s0_a759:: ds 1 ; 0:a759 -s0_a75a:: ds 1 ; 0:a75a -s0_a75b:: ds 1 ; 0:a75b -s0_a75c:: ds 1 ; 0:a75c -s0_a75d:: ds 1 ; 0:a75d -s0_a75e:: ds 1 ; 0:a75e -s0_a75f:: ds 1 ; 0:a75f -s0_a760:: ds 1 ; 0:a760 -s0_a761:: ds 1 ; 0:a761 -s0_a762:: ds 1 ; 0:a762 -s0_a763:: ds 1 ; 0:a763 -s0_a764:: ds 1 ; 0:a764 -s0_a765:: ds 1 ; 0:a765 -s0_a766:: ds 1 ; 0:a766 -s0_a767:: ds 1 ; 0:a767 -s0_a768:: ds 1 ; 0:a768 -s0_a769:: ds 1 ; 0:a769 -s0_a76a:: ds 1 ; 0:a76a -s0_a76b:: ds 1 ; 0:a76b -s0_a76c:: ds 1 ; 0:a76c -s0_a76d:: ds 1 ; 0:a76d -s0_a76e:: ds 1 ; 0:a76e -s0_a76f:: ds 1 ; 0:a76f -s0_a770:: ds 1 ; 0:a770 -s0_a771:: ds 1 ; 0:a771 -s0_a772:: ds 1 ; 0:a772 -s0_a773:: ds 1 ; 0:a773 -s0_a774:: ds 1 ; 0:a774 -s0_a775:: ds 1 ; 0:a775 -s0_a776:: ds 1 ; 0:a776 -s0_a777:: ds 1 ; 0:a777 -s0_a778:: ds 1 ; 0:a778 -s0_a779:: ds 1 ; 0:a779 -s0_a77a:: ds 1 ; 0:a77a -s0_a77b:: ds 1 ; 0:a77b -s0_a77c:: ds 1 ; 0:a77c -s0_a77d:: ds 1 ; 0:a77d -s0_a77e:: ds 1 ; 0:a77e -s0_a77f:: ds 1 ; 0:a77f -s0_a780:: ds 1 ; 0:a780 -s0_a781:: ds 1 ; 0:a781 -s0_a782:: ds 1 ; 0:a782 -s0_a783:: ds 1 ; 0:a783 -s0_a784:: ds 1 ; 0:a784 -s0_a785:: ds 1 ; 0:a785 -s0_a786:: ds 1 ; 0:a786 -s0_a787:: ds 1 ; 0:a787 -s0_a788:: ds 1 ; 0:a788 -s0_a789:: ds 1 ; 0:a789 -s0_a78a:: ds 1 ; 0:a78a -s0_a78b:: ds 1 ; 0:a78b -s0_a78c:: ds 1 ; 0:a78c -s0_a78d:: ds 1 ; 0:a78d -s0_a78e:: ds 1 ; 0:a78e -s0_a78f:: ds 1 ; 0:a78f -s0_a790:: ds 1 ; 0:a790 -s0_a791:: ds 1 ; 0:a791 -s0_a792:: ds 1 ; 0:a792 -s0_a793:: ds 1 ; 0:a793 -s0_a794:: ds 1 ; 0:a794 -s0_a795:: ds 1 ; 0:a795 -s0_a796:: ds 1 ; 0:a796 -s0_a797:: ds 1 ; 0:a797 -s0_a798:: ds 1 ; 0:a798 -s0_a799:: ds 1 ; 0:a799 -s0_a79a:: ds 1 ; 0:a79a -s0_a79b:: ds 1 ; 0:a79b -s0_a79c:: ds 1 ; 0:a79c -s0_a79d:: ds 1 ; 0:a79d -s0_a79e:: ds 1 ; 0:a79e -s0_a79f:: ds 1 ; 0:a79f -s0_a7a0:: ds 1 ; 0:a7a0 -s0_a7a1:: ds 1 ; 0:a7a1 -s0_a7a2:: ds 1 ; 0:a7a2 -s0_a7a3:: ds 1 ; 0:a7a3 -s0_a7a4:: ds 1 ; 0:a7a4 -s0_a7a5:: ds 1 ; 0:a7a5 -s0_a7a6:: ds 1 ; 0:a7a6 -s0_a7a7:: ds 1 ; 0:a7a7 -s0_a7a8:: ds 1 ; 0:a7a8 -s0_a7a9:: ds 1 ; 0:a7a9 -s0_a7aa:: ds 1 ; 0:a7aa -s0_a7ab:: ds 1 ; 0:a7ab -s0_a7ac:: ds 1 ; 0:a7ac -s0_a7ad:: ds 1 ; 0:a7ad -s0_a7ae:: ds 1 ; 0:a7ae -s0_a7af:: ds 1 ; 0:a7af -s0_a7b0:: ds 1 ; 0:a7b0 -s0_a7b1:: ds 1 ; 0:a7b1 -s0_a7b2:: ds 1 ; 0:a7b2 -s0_a7b3:: ds 1 ; 0:a7b3 -s0_a7b4:: ds 1 ; 0:a7b4 -s0_a7b5:: ds 1 ; 0:a7b5 -s0_a7b6:: ds 1 ; 0:a7b6 -s0_a7b7:: ds 1 ; 0:a7b7 -s0_a7b8:: ds 1 ; 0:a7b8 -s0_a7b9:: ds 1 ; 0:a7b9 -s0_a7ba:: ds 1 ; 0:a7ba -s0_a7bb:: ds 1 ; 0:a7bb -s0_a7bc:: ds 1 ; 0:a7bc -s0_a7bd:: ds 1 ; 0:a7bd -s0_a7be:: ds 1 ; 0:a7be -s0_a7bf:: ds 1 ; 0:a7bf -s0_a7c0:: ds 1 ; 0:a7c0 -s0_a7c1:: ds 1 ; 0:a7c1 -s0_a7c2:: ds 1 ; 0:a7c2 -s0_a7c3:: ds 1 ; 0:a7c3 -s0_a7c4:: ds 1 ; 0:a7c4 -s0_a7c5:: ds 1 ; 0:a7c5 -s0_a7c6:: ds 1 ; 0:a7c6 -s0_a7c7:: ds 1 ; 0:a7c7 -s0_a7c8:: ds 1 ; 0:a7c8 -s0_a7c9:: ds 1 ; 0:a7c9 -s0_a7ca:: ds 1 ; 0:a7ca -s0_a7cb:: ds 1 ; 0:a7cb -s0_a7cc:: ds 1 ; 0:a7cc -s0_a7cd:: ds 1 ; 0:a7cd -s0_a7ce:: ds 1 ; 0:a7ce -s0_a7cf:: ds 1 ; 0:a7cf -s0_a7d0:: ds 1 ; 0:a7d0 -s0_a7d1:: ds 1 ; 0:a7d1 -s0_a7d2:: ds 1 ; 0:a7d2 -s0_a7d3:: ds 1 ; 0:a7d3 -s0_a7d4:: ds 1 ; 0:a7d4 -s0_a7d5:: ds 1 ; 0:a7d5 -s0_a7d6:: ds 1 ; 0:a7d6 -s0_a7d7:: ds 1 ; 0:a7d7 -s0_a7d8:: ds 1 ; 0:a7d8 -s0_a7d9:: ds 1 ; 0:a7d9 -s0_a7da:: ds 1 ; 0:a7da -s0_a7db:: ds 1 ; 0:a7db -s0_a7dc:: ds 1 ; 0:a7dc -s0_a7dd:: ds 1 ; 0:a7dd -s0_a7de:: ds 1 ; 0:a7de -s0_a7df:: ds 1 ; 0:a7df -s0_a7e0:: ds 1 ; 0:a7e0 -s0_a7e1:: ds 1 ; 0:a7e1 -s0_a7e2:: ds 1 ; 0:a7e2 -s0_a7e3:: ds 1 ; 0:a7e3 -s0_a7e4:: ds 1 ; 0:a7e4 -s0_a7e5:: ds 1 ; 0:a7e5 -s0_a7e6:: ds 1 ; 0:a7e6 -s0_a7e7:: ds 1 ; 0:a7e7 -s0_a7e8:: ds 1 ; 0:a7e8 -s0_a7e9:: ds 1 ; 0:a7e9 -s0_a7ea:: ds 1 ; 0:a7ea -s0_a7eb:: ds 1 ; 0:a7eb -s0_a7ec:: ds 1 ; 0:a7ec -s0_a7ed:: ds 1 ; 0:a7ed -s0_a7ee:: ds 1 ; 0:a7ee -s0_a7ef:: ds 1 ; 0:a7ef -s0_a7f0:: ds 1 ; 0:a7f0 -s0_a7f1:: ds 1 ; 0:a7f1 -s0_a7f2:: ds 1 ; 0:a7f2 -s0_a7f3:: ds 1 ; 0:a7f3 -s0_a7f4:: ds 1 ; 0:a7f4 -s0_a7f5:: ds 1 ; 0:a7f5 -s0_a7f6:: ds 1 ; 0:a7f6 -s0_a7f7:: ds 1 ; 0:a7f7 -s0_a7f8:: ds 1 ; 0:a7f8 -s0_a7f9:: ds 1 ; 0:a7f9 -s0_a7fa:: ds 1 ; 0:a7fa -s0_a7fb:: ds 1 ; 0:a7fb -s0_a7fc:: ds 1 ; 0:a7fc -s0_a7fd:: ds 1 ; 0:a7fd -s0_a7fe:: ds 1 ; 0:a7fe -s0_a7ff:: ds 1 ; 0:a7ff -s0_a800:: ds 1 ; 0:a800 -s0_a801:: ds 1 ; 0:a801 -s0_a802:: ds 1 ; 0:a802 -s0_a803:: ds 1 ; 0:a803 -s0_a804:: ds 1 ; 0:a804 -s0_a805:: ds 1 ; 0:a805 -s0_a806:: ds 1 ; 0:a806 -s0_a807:: ds 1 ; 0:a807 -s0_a808:: ds 1 ; 0:a808 -s0_a809:: ds 1 ; 0:a809 -s0_a80a:: ds 1 ; 0:a80a -s0_a80b:: ds 1 ; 0:a80b -s0_a80c:: ds 1 ; 0:a80c -s0_a80d:: ds 1 ; 0:a80d -s0_a80e:: ds 1 ; 0:a80e -s0_a80f:: ds 1 ; 0:a80f -s0_a810:: ds 1 ; 0:a810 -s0_a811:: ds 1 ; 0:a811 -s0_a812:: ds 1 ; 0:a812 -s0_a813:: ds 1 ; 0:a813 -s0_a814:: ds 1 ; 0:a814 -s0_a815:: ds 1 ; 0:a815 -s0_a816:: ds 1 ; 0:a816 -s0_a817:: ds 1 ; 0:a817 -s0_a818:: ds 1 ; 0:a818 -s0_a819:: ds 1 ; 0:a819 -s0_a81a:: ds 1 ; 0:a81a -s0_a81b:: ds 1 ; 0:a81b -s0_a81c:: ds 1 ; 0:a81c -s0_a81d:: ds 1 ; 0:a81d -s0_a81e:: ds 1 ; 0:a81e -s0_a81f:: ds 1 ; 0:a81f -s0_a820:: ds 1 ; 0:a820 -s0_a821:: ds 1 ; 0:a821 -s0_a822:: ds 1 ; 0:a822 -s0_a823:: ds 1 ; 0:a823 -s0_a824:: ds 1 ; 0:a824 -s0_a825:: ds 1 ; 0:a825 -s0_a826:: ds 1 ; 0:a826 -s0_a827:: ds 1 ; 0:a827 -s0_a828:: ds 1 ; 0:a828 -s0_a829:: ds 1 ; 0:a829 -s0_a82a:: ds 1 ; 0:a82a -s0_a82b:: ds 1 ; 0:a82b -s0_a82c:: ds 1 ; 0:a82c -s0_a82d:: ds 1 ; 0:a82d -s0_a82e:: ds 1 ; 0:a82e -s0_a82f:: ds 1 ; 0:a82f -s0_a830:: ds 1 ; 0:a830 -s0_a831:: ds 1 ; 0:a831 -s0_a832:: ds 1 ; 0:a832 -s0_a833:: ds 1 ; 0:a833 -s0_a834:: ds 1 ; 0:a834 -s0_a835:: ds 1 ; 0:a835 -s0_a836:: ds 1 ; 0:a836 -s0_a837:: ds 1 ; 0:a837 -s0_a838:: ds 1 ; 0:a838 -s0_a839:: ds 1 ; 0:a839 -s0_a83a:: ds 1 ; 0:a83a -s0_a83b:: ds 1 ; 0:a83b -s0_a83c:: ds 1 ; 0:a83c -s0_a83d:: ds 1 ; 0:a83d -s0_a83e:: ds 1 ; 0:a83e -s0_a83f:: ds 1 ; 0:a83f -s0_a840:: ds 1 ; 0:a840 -s0_a841:: ds 1 ; 0:a841 -s0_a842:: ds 1 ; 0:a842 -s0_a843:: ds 1 ; 0:a843 -s0_a844:: ds 1 ; 0:a844 -s0_a845:: ds 1 ; 0:a845 -s0_a846:: ds 1 ; 0:a846 -s0_a847:: ds 1 ; 0:a847 -s0_a848:: ds 1 ; 0:a848 -s0_a849:: ds 1 ; 0:a849 -s0_a84a:: ds 1 ; 0:a84a -s0_a84b:: ds 1 ; 0:a84b -s0_a84c:: ds 1 ; 0:a84c -s0_a84d:: ds 1 ; 0:a84d -s0_a84e:: ds 1 ; 0:a84e -s0_a84f:: ds 1 ; 0:a84f -s0_a850:: ds 1 ; 0:a850 -s0_a851:: ds 1 ; 0:a851 -s0_a852:: ds 1 ; 0:a852 -s0_a853:: ds 1 ; 0:a853 -s0_a854:: ds 1 ; 0:a854 -s0_a855:: ds 1 ; 0:a855 -s0_a856:: ds 1 ; 0:a856 -s0_a857:: ds 1 ; 0:a857 -s0_a858:: ds 1 ; 0:a858 -s0_a859:: ds 1 ; 0:a859 -s0_a85a:: ds 1 ; 0:a85a -s0_a85b:: ds 1 ; 0:a85b -s0_a85c:: ds 1 ; 0:a85c -s0_a85d:: ds 1 ; 0:a85d -s0_a85e:: ds 1 ; 0:a85e -s0_a85f:: ds 1 ; 0:a85f -s0_a860:: ds 1 ; 0:a860 -s0_a861:: ds 1 ; 0:a861 -s0_a862:: ds 1 ; 0:a862 -s0_a863:: ds 1 ; 0:a863 -s0_a864:: ds 1 ; 0:a864 -s0_a865:: ds 1 ; 0:a865 -s0_a866:: ds 1 ; 0:a866 -s0_a867:: ds 1 ; 0:a867 -s0_a868:: ds 1 ; 0:a868 -s0_a869:: ds 1 ; 0:a869 -s0_a86a:: ds 1 ; 0:a86a -s0_a86b:: ds 1 ; 0:a86b -s0_a86c:: ds 1 ; 0:a86c -s0_a86d:: ds 1 ; 0:a86d -s0_a86e:: ds 1 ; 0:a86e -s0_a86f:: ds 1 ; 0:a86f -s0_a870:: ds 1 ; 0:a870 -s0_a871:: ds 1 ; 0:a871 -s0_a872:: ds 1 ; 0:a872 -s0_a873:: ds 1 ; 0:a873 -s0_a874:: ds 1 ; 0:a874 -s0_a875:: ds 1 ; 0:a875 -s0_a876:: ds 1 ; 0:a876 -s0_a877:: ds 1 ; 0:a877 -s0_a878:: ds 1 ; 0:a878 -s0_a879:: ds 1 ; 0:a879 -s0_a87a:: ds 1 ; 0:a87a -s0_a87b:: ds 1 ; 0:a87b -s0_a87c:: ds 1 ; 0:a87c -s0_a87d:: ds 1 ; 0:a87d -s0_a87e:: ds 1 ; 0:a87e -s0_a87f:: ds 1 ; 0:a87f -s0_a880:: ds 1 ; 0:a880 -s0_a881:: ds 1 ; 0:a881 -s0_a882:: ds 1 ; 0:a882 -s0_a883:: ds 1 ; 0:a883 -s0_a884:: ds 1 ; 0:a884 -s0_a885:: ds 1 ; 0:a885 -s0_a886:: ds 1 ; 0:a886 -s0_a887:: ds 1 ; 0:a887 -s0_a888:: ds 1 ; 0:a888 -s0_a889:: ds 1 ; 0:a889 -s0_a88a:: ds 1 ; 0:a88a -s0_a88b:: ds 1 ; 0:a88b -s0_a88c:: ds 1 ; 0:a88c -s0_a88d:: ds 1 ; 0:a88d -s0_a88e:: ds 1 ; 0:a88e -s0_a88f:: ds 1 ; 0:a88f -s0_a890:: ds 1 ; 0:a890 -s0_a891:: ds 1 ; 0:a891 -s0_a892:: ds 1 ; 0:a892 -s0_a893:: ds 1 ; 0:a893 -s0_a894:: ds 1 ; 0:a894 -s0_a895:: ds 1 ; 0:a895 -s0_a896:: ds 1 ; 0:a896 -s0_a897:: ds 1 ; 0:a897 -s0_a898:: ds 1 ; 0:a898 -s0_a899:: ds 1 ; 0:a899 -s0_a89a:: ds 1 ; 0:a89a -s0_a89b:: ds 1 ; 0:a89b -s0_a89c:: ds 1 ; 0:a89c -s0_a89d:: ds 1 ; 0:a89d -s0_a89e:: ds 1 ; 0:a89e -s0_a89f:: ds 1 ; 0:a89f -s0_a8a0:: ds 1 ; 0:a8a0 -s0_a8a1:: ds 1 ; 0:a8a1 -s0_a8a2:: ds 1 ; 0:a8a2 -s0_a8a3:: ds 1 ; 0:a8a3 -s0_a8a4:: ds 1 ; 0:a8a4 -s0_a8a5:: ds 1 ; 0:a8a5 -s0_a8a6:: ds 1 ; 0:a8a6 -s0_a8a7:: ds 1 ; 0:a8a7 -s0_a8a8:: ds 1 ; 0:a8a8 -s0_a8a9:: ds 1 ; 0:a8a9 -s0_a8aa:: ds 1 ; 0:a8aa -s0_a8ab:: ds 1 ; 0:a8ab -s0_a8ac:: ds 1 ; 0:a8ac -s0_a8ad:: ds 1 ; 0:a8ad -s0_a8ae:: ds 1 ; 0:a8ae -s0_a8af:: ds 1 ; 0:a8af -s0_a8b0:: ds 1 ; 0:a8b0 -s0_a8b1:: ds 1 ; 0:a8b1 -s0_a8b2:: ds 1 ; 0:a8b2 -s0_a8b3:: ds 1 ; 0:a8b3 -s0_a8b4:: ds 1 ; 0:a8b4 -s0_a8b5:: ds 1 ; 0:a8b5 -s0_a8b6:: ds 1 ; 0:a8b6 -s0_a8b7:: ds 1 ; 0:a8b7 -s0_a8b8:: ds 1 ; 0:a8b8 -s0_a8b9:: ds 1 ; 0:a8b9 -s0_a8ba:: ds 1 ; 0:a8ba -s0_a8bb:: ds 1 ; 0:a8bb -s0_a8bc:: ds 1 ; 0:a8bc -s0_a8bd:: ds 1 ; 0:a8bd -s0_a8be:: ds 1 ; 0:a8be -s0_a8bf:: ds 1 ; 0:a8bf -s0_a8c0:: ds 1 ; 0:a8c0 -s0_a8c1:: ds 1 ; 0:a8c1 -s0_a8c2:: ds 1 ; 0:a8c2 -s0_a8c3:: ds 1 ; 0:a8c3 -s0_a8c4:: ds 1 ; 0:a8c4 -s0_a8c5:: ds 1 ; 0:a8c5 -s0_a8c6:: ds 1 ; 0:a8c6 -s0_a8c7:: ds 1 ; 0:a8c7 -s0_a8c8:: ds 1 ; 0:a8c8 -s0_a8c9:: ds 1 ; 0:a8c9 -s0_a8ca:: ds 1 ; 0:a8ca -s0_a8cb:: ds 1 ; 0:a8cb -s0_a8cc:: ds 1 ; 0:a8cc -s0_a8cd:: ds 1 ; 0:a8cd -s0_a8ce:: ds 1 ; 0:a8ce -s0_a8cf:: ds 1 ; 0:a8cf -s0_a8d0:: ds 1 ; 0:a8d0 -s0_a8d1:: ds 1 ; 0:a8d1 -s0_a8d2:: ds 1 ; 0:a8d2 -s0_a8d3:: ds 1 ; 0:a8d3 -s0_a8d4:: ds 1 ; 0:a8d4 -s0_a8d5:: ds 1 ; 0:a8d5 -s0_a8d6:: ds 1 ; 0:a8d6 -s0_a8d7:: ds 1 ; 0:a8d7 -s0_a8d8:: ds 1 ; 0:a8d8 -s0_a8d9:: ds 1 ; 0:a8d9 -s0_a8da:: ds 1 ; 0:a8da -s0_a8db:: ds 1 ; 0:a8db -s0_a8dc:: ds 1 ; 0:a8dc -s0_a8dd:: ds 1 ; 0:a8dd -s0_a8de:: ds 1 ; 0:a8de -s0_a8df:: ds 1 ; 0:a8df -s0_a8e0:: ds 1 ; 0:a8e0 -s0_a8e1:: ds 1 ; 0:a8e1 -s0_a8e2:: ds 1 ; 0:a8e2 -s0_a8e3:: ds 1 ; 0:a8e3 -s0_a8e4:: ds 1 ; 0:a8e4 -s0_a8e5:: ds 1 ; 0:a8e5 -s0_a8e6:: ds 1 ; 0:a8e6 -s0_a8e7:: ds 1 ; 0:a8e7 -s0_a8e8:: ds 1 ; 0:a8e8 -s0_a8e9:: ds 1 ; 0:a8e9 -s0_a8ea:: ds 1 ; 0:a8ea -s0_a8eb:: ds 1 ; 0:a8eb -s0_a8ec:: ds 1 ; 0:a8ec -s0_a8ed:: ds 1 ; 0:a8ed -s0_a8ee:: ds 1 ; 0:a8ee -s0_a8ef:: ds 1 ; 0:a8ef -s0_a8f0:: ds 1 ; 0:a8f0 -s0_a8f1:: ds 1 ; 0:a8f1 -s0_a8f2:: ds 1 ; 0:a8f2 -s0_a8f3:: ds 1 ; 0:a8f3 -s0_a8f4:: ds 1 ; 0:a8f4 -s0_a8f5:: ds 1 ; 0:a8f5 -s0_a8f6:: ds 1 ; 0:a8f6 -s0_a8f7:: ds 1 ; 0:a8f7 -s0_a8f8:: ds 1 ; 0:a8f8 -s0_a8f9:: ds 1 ; 0:a8f9 -s0_a8fa:: ds 1 ; 0:a8fa -s0_a8fb:: ds 1 ; 0:a8fb -s0_a8fc:: ds 1 ; 0:a8fc -s0_a8fd:: ds 1 ; 0:a8fd -s0_a8fe:: ds 1 ; 0:a8fe -s0_a8ff:: ds 1 ; 0:a8ff -s0_a900:: ds 1 ; 0:a900 -s0_a901:: ds 1 ; 0:a901 -s0_a902:: ds 1 ; 0:a902 -s0_a903:: ds 1 ; 0:a903 -s0_a904:: ds 1 ; 0:a904 -s0_a905:: ds 1 ; 0:a905 -s0_a906:: ds 1 ; 0:a906 -s0_a907:: ds 1 ; 0:a907 -s0_a908:: ds 1 ; 0:a908 -s0_a909:: ds 1 ; 0:a909 -s0_a90a:: ds 1 ; 0:a90a -s0_a90b:: ds 1 ; 0:a90b -s0_a90c:: ds 1 ; 0:a90c -s0_a90d:: ds 1 ; 0:a90d -s0_a90e:: ds 1 ; 0:a90e -s0_a90f:: ds 1 ; 0:a90f -s0_a910:: ds 1 ; 0:a910 -s0_a911:: ds 1 ; 0:a911 -s0_a912:: ds 1 ; 0:a912 -s0_a913:: ds 1 ; 0:a913 -s0_a914:: ds 1 ; 0:a914 -s0_a915:: ds 1 ; 0:a915 -s0_a916:: ds 1 ; 0:a916 -s0_a917:: ds 1 ; 0:a917 -s0_a918:: ds 1 ; 0:a918 -s0_a919:: ds 1 ; 0:a919 -s0_a91a:: ds 1 ; 0:a91a -s0_a91b:: ds 1 ; 0:a91b -s0_a91c:: ds 1 ; 0:a91c -s0_a91d:: ds 1 ; 0:a91d -s0_a91e:: ds 1 ; 0:a91e -s0_a91f:: ds 1 ; 0:a91f -s0_a920:: ds 1 ; 0:a920 -s0_a921:: ds 1 ; 0:a921 -s0_a922:: ds 1 ; 0:a922 -s0_a923:: ds 1 ; 0:a923 -s0_a924:: ds 1 ; 0:a924 -s0_a925:: ds 1 ; 0:a925 -s0_a926:: ds 1 ; 0:a926 -s0_a927:: ds 1 ; 0:a927 -s0_a928:: ds 1 ; 0:a928 -s0_a929:: ds 1 ; 0:a929 -s0_a92a:: ds 1 ; 0:a92a -s0_a92b:: ds 1 ; 0:a92b -s0_a92c:: ds 1 ; 0:a92c -s0_a92d:: ds 1 ; 0:a92d -s0_a92e:: ds 1 ; 0:a92e -s0_a92f:: ds 1 ; 0:a92f -s0_a930:: ds 1 ; 0:a930 -s0_a931:: ds 1 ; 0:a931 -s0_a932:: ds 1 ; 0:a932 -s0_a933:: ds 1 ; 0:a933 -s0_a934:: ds 1 ; 0:a934 -s0_a935:: ds 1 ; 0:a935 -s0_a936:: ds 1 ; 0:a936 -s0_a937:: ds 1 ; 0:a937 -s0_a938:: ds 1 ; 0:a938 -s0_a939:: ds 1 ; 0:a939 -s0_a93a:: ds 1 ; 0:a93a -s0_a93b:: ds 1 ; 0:a93b -s0_a93c:: ds 1 ; 0:a93c -s0_a93d:: ds 1 ; 0:a93d -s0_a93e:: ds 1 ; 0:a93e -s0_a93f:: ds 1 ; 0:a93f -s0_a940:: ds 1 ; 0:a940 -s0_a941:: ds 1 ; 0:a941 -s0_a942:: ds 1 ; 0:a942 -s0_a943:: ds 1 ; 0:a943 -s0_a944:: ds 1 ; 0:a944 -s0_a945:: ds 1 ; 0:a945 -s0_a946:: ds 1 ; 0:a946 -s0_a947:: ds 1 ; 0:a947 -s0_a948:: ds 1 ; 0:a948 -s0_a949:: ds 1 ; 0:a949 -s0_a94a:: ds 1 ; 0:a94a -s0_a94b:: ds 1 ; 0:a94b -s0_a94c:: ds 1 ; 0:a94c -s0_a94d:: ds 1 ; 0:a94d -s0_a94e:: ds 1 ; 0:a94e -s0_a94f:: ds 1 ; 0:a94f -s0_a950:: ds 1 ; 0:a950 -s0_a951:: ds 1 ; 0:a951 -s0_a952:: ds 1 ; 0:a952 -s0_a953:: ds 1 ; 0:a953 -s0_a954:: ds 1 ; 0:a954 -s0_a955:: ds 1 ; 0:a955 -s0_a956:: ds 1 ; 0:a956 -s0_a957:: ds 1 ; 0:a957 -s0_a958:: ds 1 ; 0:a958 -s0_a959:: ds 1 ; 0:a959 -s0_a95a:: ds 1 ; 0:a95a -s0_a95b:: ds 1 ; 0:a95b -s0_a95c:: ds 1 ; 0:a95c -s0_a95d:: ds 1 ; 0:a95d -s0_a95e:: ds 1 ; 0:a95e -s0_a95f:: ds 1 ; 0:a95f -s0_a960:: ds 1 ; 0:a960 -s0_a961:: ds 1 ; 0:a961 -s0_a962:: ds 1 ; 0:a962 -s0_a963:: ds 1 ; 0:a963 -s0_a964:: ds 1 ; 0:a964 -s0_a965:: ds 1 ; 0:a965 -s0_a966:: ds 1 ; 0:a966 -s0_a967:: ds 1 ; 0:a967 -s0_a968:: ds 1 ; 0:a968 -s0_a969:: ds 1 ; 0:a969 -s0_a96a:: ds 1 ; 0:a96a -s0_a96b:: ds 1 ; 0:a96b -s0_a96c:: ds 1 ; 0:a96c -s0_a96d:: ds 1 ; 0:a96d -s0_a96e:: ds 1 ; 0:a96e -s0_a96f:: ds 1 ; 0:a96f -s0_a970:: ds 1 ; 0:a970 -s0_a971:: ds 1 ; 0:a971 -s0_a972:: ds 1 ; 0:a972 -s0_a973:: ds 1 ; 0:a973 -s0_a974:: ds 1 ; 0:a974 -s0_a975:: ds 1 ; 0:a975 -s0_a976:: ds 1 ; 0:a976 -s0_a977:: ds 1 ; 0:a977 -s0_a978:: ds 1 ; 0:a978 -s0_a979:: ds 1 ; 0:a979 -s0_a97a:: ds 1 ; 0:a97a -s0_a97b:: ds 1 ; 0:a97b -s0_a97c:: ds 1 ; 0:a97c -s0_a97d:: ds 1 ; 0:a97d -s0_a97e:: ds 1 ; 0:a97e -s0_a97f:: ds 1 ; 0:a97f -s0_a980:: ds 1 ; 0:a980 -s0_a981:: ds 1 ; 0:a981 -s0_a982:: ds 1 ; 0:a982 -s0_a983:: ds 1 ; 0:a983 -s0_a984:: ds 1 ; 0:a984 -s0_a985:: ds 1 ; 0:a985 -s0_a986:: ds 1 ; 0:a986 -s0_a987:: ds 1 ; 0:a987 -s0_a988:: ds 1 ; 0:a988 -s0_a989:: ds 1 ; 0:a989 -s0_a98a:: ds 1 ; 0:a98a -s0_a98b:: ds 1 ; 0:a98b -s0_a98c:: ds 1 ; 0:a98c -s0_a98d:: ds 1 ; 0:a98d -s0_a98e:: ds 1 ; 0:a98e -s0_a98f:: ds 1 ; 0:a98f -s0_a990:: ds 1 ; 0:a990 -s0_a991:: ds 1 ; 0:a991 -s0_a992:: ds 1 ; 0:a992 -s0_a993:: ds 1 ; 0:a993 -s0_a994:: ds 1 ; 0:a994 -s0_a995:: ds 1 ; 0:a995 -s0_a996:: ds 1 ; 0:a996 -s0_a997:: ds 1 ; 0:a997 -s0_a998:: ds 1 ; 0:a998 -s0_a999:: ds 1 ; 0:a999 -s0_a99a:: ds 1 ; 0:a99a -s0_a99b:: ds 1 ; 0:a99b -s0_a99c:: ds 1 ; 0:a99c -s0_a99d:: ds 1 ; 0:a99d -s0_a99e:: ds 1 ; 0:a99e -s0_a99f:: ds 1 ; 0:a99f -s0_a9a0:: ds 1 ; 0:a9a0 -s0_a9a1:: ds 1 ; 0:a9a1 -s0_a9a2:: ds 1 ; 0:a9a2 -s0_a9a3:: ds 1 ; 0:a9a3 -s0_a9a4:: ds 1 ; 0:a9a4 -s0_a9a5:: ds 1 ; 0:a9a5 -s0_a9a6:: ds 1 ; 0:a9a6 -s0_a9a7:: ds 1 ; 0:a9a7 -s0_a9a8:: ds 1 ; 0:a9a8 -s0_a9a9:: ds 1 ; 0:a9a9 -s0_a9aa:: ds 1 ; 0:a9aa -s0_a9ab:: ds 1 ; 0:a9ab -s0_a9ac:: ds 1 ; 0:a9ac -s0_a9ad:: ds 1 ; 0:a9ad -s0_a9ae:: ds 1 ; 0:a9ae -s0_a9af:: ds 1 ; 0:a9af -s0_a9b0:: ds 1 ; 0:a9b0 -s0_a9b1:: ds 1 ; 0:a9b1 -s0_a9b2:: ds 1 ; 0:a9b2 -s0_a9b3:: ds 1 ; 0:a9b3 -s0_a9b4:: ds 1 ; 0:a9b4 -s0_a9b5:: ds 1 ; 0:a9b5 -s0_a9b6:: ds 1 ; 0:a9b6 -s0_a9b7:: ds 1 ; 0:a9b7 -s0_a9b8:: ds 1 ; 0:a9b8 -s0_a9b9:: ds 1 ; 0:a9b9 -s0_a9ba:: ds 1 ; 0:a9ba -s0_a9bb:: ds 1 ; 0:a9bb -s0_a9bc:: ds 1 ; 0:a9bc -s0_a9bd:: ds 1 ; 0:a9bd -s0_a9be:: ds 1 ; 0:a9be -s0_a9bf:: ds 1 ; 0:a9bf -s0_a9c0:: ds 1 ; 0:a9c0 -s0_a9c1:: ds 1 ; 0:a9c1 -s0_a9c2:: ds 1 ; 0:a9c2 -s0_a9c3:: ds 1 ; 0:a9c3 -s0_a9c4:: ds 1 ; 0:a9c4 -s0_a9c5:: ds 1 ; 0:a9c5 -s0_a9c6:: ds 1 ; 0:a9c6 -s0_a9c7:: ds 1 ; 0:a9c7 -s0_a9c8:: ds 1 ; 0:a9c8 -s0_a9c9:: ds 1 ; 0:a9c9 -s0_a9ca:: ds 1 ; 0:a9ca -s0_a9cb:: ds 1 ; 0:a9cb -s0_a9cc:: ds 1 ; 0:a9cc -s0_a9cd:: ds 1 ; 0:a9cd -s0_a9ce:: ds 1 ; 0:a9ce -s0_a9cf:: ds 1 ; 0:a9cf -s0_a9d0:: ds 1 ; 0:a9d0 -s0_a9d1:: ds 1 ; 0:a9d1 -s0_a9d2:: ds 1 ; 0:a9d2 -s0_a9d3:: ds 1 ; 0:a9d3 -s0_a9d4:: ds 1 ; 0:a9d4 -s0_a9d5:: ds 1 ; 0:a9d5 -s0_a9d6:: ds 1 ; 0:a9d6 -s0_a9d7:: ds 1 ; 0:a9d7 -s0_a9d8:: ds 1 ; 0:a9d8 -s0_a9d9:: ds 1 ; 0:a9d9 -s0_a9da:: ds 1 ; 0:a9da -s0_a9db:: ds 1 ; 0:a9db -s0_a9dc:: ds 1 ; 0:a9dc -s0_a9dd:: ds 1 ; 0:a9dd -s0_a9de:: ds 1 ; 0:a9de -s0_a9df:: ds 1 ; 0:a9df -s0_a9e0:: ds 1 ; 0:a9e0 -s0_a9e1:: ds 1 ; 0:a9e1 -s0_a9e2:: ds 1 ; 0:a9e2 -s0_a9e3:: ds 1 ; 0:a9e3 -s0_a9e4:: ds 1 ; 0:a9e4 -s0_a9e5:: ds 1 ; 0:a9e5 -s0_a9e6:: ds 1 ; 0:a9e6 -s0_a9e7:: ds 1 ; 0:a9e7 -s0_a9e8:: ds 1 ; 0:a9e8 -s0_a9e9:: ds 1 ; 0:a9e9 -s0_a9ea:: ds 1 ; 0:a9ea -s0_a9eb:: ds 1 ; 0:a9eb -s0_a9ec:: ds 1 ; 0:a9ec -s0_a9ed:: ds 1 ; 0:a9ed -s0_a9ee:: ds 1 ; 0:a9ee -s0_a9ef:: ds 1 ; 0:a9ef -s0_a9f0:: ds 1 ; 0:a9f0 -s0_a9f1:: ds 1 ; 0:a9f1 -s0_a9f2:: ds 1 ; 0:a9f2 -s0_a9f3:: ds 1 ; 0:a9f3 -s0_a9f4:: ds 1 ; 0:a9f4 -s0_a9f5:: ds 1 ; 0:a9f5 -s0_a9f6:: ds 1 ; 0:a9f6 -s0_a9f7:: ds 1 ; 0:a9f7 -s0_a9f8:: ds 1 ; 0:a9f8 -s0_a9f9:: ds 1 ; 0:a9f9 -s0_a9fa:: ds 1 ; 0:a9fa -s0_a9fb:: ds 1 ; 0:a9fb -s0_a9fc:: ds 1 ; 0:a9fc -s0_a9fd:: ds 1 ; 0:a9fd -s0_a9fe:: ds 1 ; 0:a9fe -s0_a9ff:: ds 1 ; 0:a9ff -s0_aa00:: ds 1 ; 0:aa00 -s0_aa01:: ds 1 ; 0:aa01 -s0_aa02:: ds 1 ; 0:aa02 -s0_aa03:: ds 1 ; 0:aa03 -s0_aa04:: ds 1 ; 0:aa04 -s0_aa05:: ds 1 ; 0:aa05 -s0_aa06:: ds 1 ; 0:aa06 -s0_aa07:: ds 1 ; 0:aa07 -s0_aa08:: ds 1 ; 0:aa08 -s0_aa09:: ds 1 ; 0:aa09 -s0_aa0a:: ds 1 ; 0:aa0a -s0_aa0b:: ds 1 ; 0:aa0b -s0_aa0c:: ds 1 ; 0:aa0c -s0_aa0d:: ds 1 ; 0:aa0d -s0_aa0e:: ds 1 ; 0:aa0e -s0_aa0f:: ds 1 ; 0:aa0f -s0_aa10:: ds 1 ; 0:aa10 -s0_aa11:: ds 1 ; 0:aa11 -s0_aa12:: ds 1 ; 0:aa12 -s0_aa13:: ds 1 ; 0:aa13 -s0_aa14:: ds 1 ; 0:aa14 -s0_aa15:: ds 1 ; 0:aa15 -s0_aa16:: ds 1 ; 0:aa16 -s0_aa17:: ds 1 ; 0:aa17 -s0_aa18:: ds 1 ; 0:aa18 -s0_aa19:: ds 1 ; 0:aa19 -s0_aa1a:: ds 1 ; 0:aa1a -s0_aa1b:: ds 1 ; 0:aa1b -s0_aa1c:: ds 1 ; 0:aa1c -s0_aa1d:: ds 1 ; 0:aa1d -s0_aa1e:: ds 1 ; 0:aa1e -s0_aa1f:: ds 1 ; 0:aa1f -s0_aa20:: ds 1 ; 0:aa20 -s0_aa21:: ds 1 ; 0:aa21 -s0_aa22:: ds 1 ; 0:aa22 -s0_aa23:: ds 1 ; 0:aa23 -s0_aa24:: ds 1 ; 0:aa24 -s0_aa25:: ds 1 ; 0:aa25 -s0_aa26:: ds 1 ; 0:aa26 -s0_aa27:: ds 1 ; 0:aa27 -s0_aa28:: ds 1 ; 0:aa28 -s0_aa29:: ds 1 ; 0:aa29 -s0_aa2a:: ds 1 ; 0:aa2a -s0_aa2b:: ds 1 ; 0:aa2b -s0_aa2c:: ds 1 ; 0:aa2c -s0_aa2d:: ds 1 ; 0:aa2d -s0_aa2e:: ds 1 ; 0:aa2e -s0_aa2f:: ds 1 ; 0:aa2f -s0_aa30:: ds 1 ; 0:aa30 -s0_aa31:: ds 1 ; 0:aa31 -s0_aa32:: ds 1 ; 0:aa32 -s0_aa33:: ds 1 ; 0:aa33 -s0_aa34:: ds 1 ; 0:aa34 -s0_aa35:: ds 1 ; 0:aa35 -s0_aa36:: ds 1 ; 0:aa36 -s0_aa37:: ds 1 ; 0:aa37 -s0_aa38:: ds 1 ; 0:aa38 -s0_aa39:: ds 1 ; 0:aa39 -s0_aa3a:: ds 1 ; 0:aa3a -s0_aa3b:: ds 1 ; 0:aa3b -s0_aa3c:: ds 1 ; 0:aa3c -s0_aa3d:: ds 1 ; 0:aa3d -s0_aa3e:: ds 1 ; 0:aa3e -s0_aa3f:: ds 1 ; 0:aa3f -s0_aa40:: ds 1 ; 0:aa40 -s0_aa41:: ds 1 ; 0:aa41 -s0_aa42:: ds 1 ; 0:aa42 -s0_aa43:: ds 1 ; 0:aa43 -s0_aa44:: ds 1 ; 0:aa44 -s0_aa45:: ds 1 ; 0:aa45 -s0_aa46:: ds 1 ; 0:aa46 -s0_aa47:: ds 1 ; 0:aa47 -s0_aa48:: ds 1 ; 0:aa48 -s0_aa49:: ds 1 ; 0:aa49 -s0_aa4a:: ds 1 ; 0:aa4a -s0_aa4b:: ds 1 ; 0:aa4b -s0_aa4c:: ds 1 ; 0:aa4c -s0_aa4d:: ds 1 ; 0:aa4d -s0_aa4e:: ds 1 ; 0:aa4e -s0_aa4f:: ds 1 ; 0:aa4f -s0_aa50:: ds 1 ; 0:aa50 -s0_aa51:: ds 1 ; 0:aa51 -s0_aa52:: ds 1 ; 0:aa52 -s0_aa53:: ds 1 ; 0:aa53 -s0_aa54:: ds 1 ; 0:aa54 -s0_aa55:: ds 1 ; 0:aa55 -s0_aa56:: ds 1 ; 0:aa56 -s0_aa57:: ds 1 ; 0:aa57 -s0_aa58:: ds 1 ; 0:aa58 -s0_aa59:: ds 1 ; 0:aa59 -s0_aa5a:: ds 1 ; 0:aa5a -s0_aa5b:: ds 1 ; 0:aa5b -s0_aa5c:: ds 1 ; 0:aa5c -s0_aa5d:: ds 1 ; 0:aa5d -s0_aa5e:: ds 1 ; 0:aa5e -s0_aa5f:: ds 1 ; 0:aa5f -s0_aa60:: ds 1 ; 0:aa60 -s0_aa61:: ds 1 ; 0:aa61 -s0_aa62:: ds 1 ; 0:aa62 -s0_aa63:: ds 1 ; 0:aa63 -s0_aa64:: ds 1 ; 0:aa64 -s0_aa65:: ds 1 ; 0:aa65 -s0_aa66:: ds 1 ; 0:aa66 -s0_aa67:: ds 1 ; 0:aa67 -s0_aa68:: ds 1 ; 0:aa68 -s0_aa69:: ds 1 ; 0:aa69 -s0_aa6a:: ds 1 ; 0:aa6a -s0_aa6b:: ds 1 ; 0:aa6b -s0_aa6c:: ds 1 ; 0:aa6c -s0_aa6d:: ds 1 ; 0:aa6d -s0_aa6e:: ds 1 ; 0:aa6e -s0_aa6f:: ds 1 ; 0:aa6f -s0_aa70:: ds 1 ; 0:aa70 -s0_aa71:: ds 1 ; 0:aa71 -s0_aa72:: ds 1 ; 0:aa72 -s0_aa73:: ds 1 ; 0:aa73 -s0_aa74:: ds 1 ; 0:aa74 -s0_aa75:: ds 1 ; 0:aa75 -s0_aa76:: ds 1 ; 0:aa76 -s0_aa77:: ds 1 ; 0:aa77 -s0_aa78:: ds 1 ; 0:aa78 -s0_aa79:: ds 1 ; 0:aa79 -s0_aa7a:: ds 1 ; 0:aa7a -s0_aa7b:: ds 1 ; 0:aa7b -s0_aa7c:: ds 1 ; 0:aa7c -s0_aa7d:: ds 1 ; 0:aa7d -s0_aa7e:: ds 1 ; 0:aa7e -s0_aa7f:: ds 1 ; 0:aa7f -s0_aa80:: ds 1 ; 0:aa80 -s0_aa81:: ds 1 ; 0:aa81 -s0_aa82:: ds 1 ; 0:aa82 -s0_aa83:: ds 1 ; 0:aa83 -s0_aa84:: ds 1 ; 0:aa84 -s0_aa85:: ds 1 ; 0:aa85 -s0_aa86:: ds 1 ; 0:aa86 -s0_aa87:: ds 1 ; 0:aa87 -s0_aa88:: ds 1 ; 0:aa88 -s0_aa89:: ds 1 ; 0:aa89 -s0_aa8a:: ds 1 ; 0:aa8a -s0_aa8b:: ds 1 ; 0:aa8b -s0_aa8c:: ds 1 ; 0:aa8c -s0_aa8d:: ds 1 ; 0:aa8d -s0_aa8e:: ds 1 ; 0:aa8e -s0_aa8f:: ds 1 ; 0:aa8f -s0_aa90:: ds 1 ; 0:aa90 -s0_aa91:: ds 1 ; 0:aa91 -s0_aa92:: ds 1 ; 0:aa92 -s0_aa93:: ds 1 ; 0:aa93 -s0_aa94:: ds 1 ; 0:aa94 -s0_aa95:: ds 1 ; 0:aa95 -s0_aa96:: ds 1 ; 0:aa96 -s0_aa97:: ds 1 ; 0:aa97 -s0_aa98:: ds 1 ; 0:aa98 -s0_aa99:: ds 1 ; 0:aa99 -s0_aa9a:: ds 1 ; 0:aa9a -s0_aa9b:: ds 1 ; 0:aa9b -s0_aa9c:: ds 1 ; 0:aa9c -s0_aa9d:: ds 1 ; 0:aa9d -s0_aa9e:: ds 1 ; 0:aa9e -s0_aa9f:: ds 1 ; 0:aa9f -s0_aaa0:: ds 1 ; 0:aaa0 -s0_aaa1:: ds 1 ; 0:aaa1 -s0_aaa2:: ds 1 ; 0:aaa2 -s0_aaa3:: ds 1 ; 0:aaa3 -s0_aaa4:: ds 1 ; 0:aaa4 -s0_aaa5:: ds 1 ; 0:aaa5 -s0_aaa6:: ds 1 ; 0:aaa6 -s0_aaa7:: ds 1 ; 0:aaa7 -s0_aaa8:: ds 1 ; 0:aaa8 -s0_aaa9:: ds 1 ; 0:aaa9 -s0_aaaa:: ds 1 ; 0:aaaa -s0_aaab:: ds 1 ; 0:aaab -s0_aaac:: ds 1 ; 0:aaac -s0_aaad:: ds 1 ; 0:aaad -s0_aaae:: ds 1 ; 0:aaae -s0_aaaf:: ds 1 ; 0:aaaf -s0_aab0:: ds 1 ; 0:aab0 -s0_aab1:: ds 1 ; 0:aab1 -s0_aab2:: ds 1 ; 0:aab2 -s0_aab3:: ds 1 ; 0:aab3 -s0_aab4:: ds 1 ; 0:aab4 -s0_aab5:: ds 1 ; 0:aab5 -s0_aab6:: ds 1 ; 0:aab6 -s0_aab7:: ds 1 ; 0:aab7 -s0_aab8:: ds 1 ; 0:aab8 -s0_aab9:: ds 1 ; 0:aab9 -s0_aaba:: ds 1 ; 0:aaba -s0_aabb:: ds 1 ; 0:aabb -s0_aabc:: ds 1 ; 0:aabc -s0_aabd:: ds 1 ; 0:aabd -s0_aabe:: ds 1 ; 0:aabe -s0_aabf:: ds 1 ; 0:aabf -s0_aac0:: ds 1 ; 0:aac0 -s0_aac1:: ds 1 ; 0:aac1 -s0_aac2:: ds 1 ; 0:aac2 -s0_aac3:: ds 1 ; 0:aac3 -s0_aac4:: ds 1 ; 0:aac4 -s0_aac5:: ds 1 ; 0:aac5 -s0_aac6:: ds 1 ; 0:aac6 -s0_aac7:: ds 1 ; 0:aac7 -s0_aac8:: ds 1 ; 0:aac8 -s0_aac9:: ds 1 ; 0:aac9 -s0_aaca:: ds 1 ; 0:aaca -s0_aacb:: ds 1 ; 0:aacb -s0_aacc:: ds 1 ; 0:aacc -s0_aacd:: ds 1 ; 0:aacd -s0_aace:: ds 1 ; 0:aace -s0_aacf:: ds 1 ; 0:aacf -s0_aad0:: ds 1 ; 0:aad0 -s0_aad1:: ds 1 ; 0:aad1 -s0_aad2:: ds 1 ; 0:aad2 -s0_aad3:: ds 1 ; 0:aad3 -s0_aad4:: ds 1 ; 0:aad4 -s0_aad5:: ds 1 ; 0:aad5 -s0_aad6:: ds 1 ; 0:aad6 -s0_aad7:: ds 1 ; 0:aad7 -s0_aad8:: ds 1 ; 0:aad8 -s0_aad9:: ds 1 ; 0:aad9 -s0_aada:: ds 1 ; 0:aada -s0_aadb:: ds 1 ; 0:aadb -s0_aadc:: ds 1 ; 0:aadc -s0_aadd:: ds 1 ; 0:aadd -s0_aade:: ds 1 ; 0:aade -s0_aadf:: ds 1 ; 0:aadf -s0_aae0:: ds 1 ; 0:aae0 -s0_aae1:: ds 1 ; 0:aae1 -s0_aae2:: ds 1 ; 0:aae2 -s0_aae3:: ds 1 ; 0:aae3 -s0_aae4:: ds 1 ; 0:aae4 -s0_aae5:: ds 1 ; 0:aae5 -s0_aae6:: ds 1 ; 0:aae6 -s0_aae7:: ds 1 ; 0:aae7 -s0_aae8:: ds 1 ; 0:aae8 -s0_aae9:: ds 1 ; 0:aae9 -s0_aaea:: ds 1 ; 0:aaea -s0_aaeb:: ds 1 ; 0:aaeb -s0_aaec:: ds 1 ; 0:aaec -s0_aaed:: ds 1 ; 0:aaed -s0_aaee:: ds 1 ; 0:aaee -s0_aaef:: ds 1 ; 0:aaef -s0_aaf0:: ds 1 ; 0:aaf0 -s0_aaf1:: ds 1 ; 0:aaf1 -s0_aaf2:: ds 1 ; 0:aaf2 -s0_aaf3:: ds 1 ; 0:aaf3 -s0_aaf4:: ds 1 ; 0:aaf4 -s0_aaf5:: ds 1 ; 0:aaf5 -s0_aaf6:: ds 1 ; 0:aaf6 -s0_aaf7:: ds 1 ; 0:aaf7 -s0_aaf8:: ds 1 ; 0:aaf8 -s0_aaf9:: ds 1 ; 0:aaf9 -s0_aafa:: ds 1 ; 0:aafa -s0_aafb:: ds 1 ; 0:aafb -s0_aafc:: ds 1 ; 0:aafc -s0_aafd:: ds 1 ; 0:aafd -s0_aafe:: ds 1 ; 0:aafe -s0_aaff:: ds 1 ; 0:aaff -s0_ab00:: ds 1 ; 0:ab00 -s0_ab01:: ds 1 ; 0:ab01 -s0_ab02:: ds 1 ; 0:ab02 -s0_ab03:: ds 1 ; 0:ab03 -s0_ab04:: ds 1 ; 0:ab04 -s0_ab05:: ds 1 ; 0:ab05 -s0_ab06:: ds 1 ; 0:ab06 -s0_ab07:: ds 1 ; 0:ab07 -s0_ab08:: ds 1 ; 0:ab08 -s0_ab09:: ds 1 ; 0:ab09 -s0_ab0a:: ds 1 ; 0:ab0a -s0_ab0b:: ds 1 ; 0:ab0b -s0_ab0c:: ds 1 ; 0:ab0c -s0_ab0d:: ds 1 ; 0:ab0d -s0_ab0e:: ds 1 ; 0:ab0e -s0_ab0f:: ds 1 ; 0:ab0f -s0_ab10:: ds 1 ; 0:ab10 -s0_ab11:: ds 1 ; 0:ab11 -s0_ab12:: ds 1 ; 0:ab12 -s0_ab13:: ds 1 ; 0:ab13 -s0_ab14:: ds 1 ; 0:ab14 -s0_ab15:: ds 1 ; 0:ab15 -s0_ab16:: ds 1 ; 0:ab16 -s0_ab17:: ds 1 ; 0:ab17 -s0_ab18:: ds 1 ; 0:ab18 -s0_ab19:: ds 1 ; 0:ab19 -s0_ab1a:: ds 1 ; 0:ab1a -s0_ab1b:: ds 1 ; 0:ab1b -s0_ab1c:: ds 1 ; 0:ab1c -s0_ab1d:: ds 1 ; 0:ab1d -s0_ab1e:: ds 1 ; 0:ab1e -s0_ab1f:: ds 1 ; 0:ab1f -s0_ab20:: ds 1 ; 0:ab20 -s0_ab21:: ds 1 ; 0:ab21 -s0_ab22:: ds 1 ; 0:ab22 -s0_ab23:: ds 1 ; 0:ab23 -s0_ab24:: ds 1 ; 0:ab24 -s0_ab25:: ds 1 ; 0:ab25 -s0_ab26:: ds 1 ; 0:ab26 -s0_ab27:: ds 1 ; 0:ab27 -s0_ab28:: ds 1 ; 0:ab28 -s0_ab29:: ds 1 ; 0:ab29 -s0_ab2a:: ds 1 ; 0:ab2a -s0_ab2b:: ds 1 ; 0:ab2b -s0_ab2c:: ds 1 ; 0:ab2c -s0_ab2d:: ds 1 ; 0:ab2d -s0_ab2e:: ds 1 ; 0:ab2e -s0_ab2f:: ds 1 ; 0:ab2f -s0_ab30:: ds 1 ; 0:ab30 -s0_ab31:: ds 1 ; 0:ab31 -s0_ab32:: ds 1 ; 0:ab32 -s0_ab33:: ds 1 ; 0:ab33 -s0_ab34:: ds 1 ; 0:ab34 -s0_ab35:: ds 1 ; 0:ab35 -s0_ab36:: ds 1 ; 0:ab36 -s0_ab37:: ds 1 ; 0:ab37 -s0_ab38:: ds 1 ; 0:ab38 -s0_ab39:: ds 1 ; 0:ab39 -s0_ab3a:: ds 1 ; 0:ab3a -s0_ab3b:: ds 1 ; 0:ab3b -s0_ab3c:: ds 1 ; 0:ab3c -s0_ab3d:: ds 1 ; 0:ab3d -s0_ab3e:: ds 1 ; 0:ab3e -s0_ab3f:: ds 1 ; 0:ab3f -s0_ab40:: ds 1 ; 0:ab40 -s0_ab41:: ds 1 ; 0:ab41 -s0_ab42:: ds 1 ; 0:ab42 -s0_ab43:: ds 1 ; 0:ab43 -s0_ab44:: ds 1 ; 0:ab44 -s0_ab45:: ds 1 ; 0:ab45 -s0_ab46:: ds 1 ; 0:ab46 -s0_ab47:: ds 1 ; 0:ab47 -s0_ab48:: ds 1 ; 0:ab48 -s0_ab49:: ds 1 ; 0:ab49 -s0_ab4a:: ds 1 ; 0:ab4a -s0_ab4b:: ds 1 ; 0:ab4b -s0_ab4c:: ds 1 ; 0:ab4c -s0_ab4d:: ds 1 ; 0:ab4d -s0_ab4e:: ds 1 ; 0:ab4e -s0_ab4f:: ds 1 ; 0:ab4f -s0_ab50:: ds 1 ; 0:ab50 -s0_ab51:: ds 1 ; 0:ab51 -s0_ab52:: ds 1 ; 0:ab52 -s0_ab53:: ds 1 ; 0:ab53 -s0_ab54:: ds 1 ; 0:ab54 -s0_ab55:: ds 1 ; 0:ab55 -s0_ab56:: ds 1 ; 0:ab56 -s0_ab57:: ds 1 ; 0:ab57 -s0_ab58:: ds 1 ; 0:ab58 -s0_ab59:: ds 1 ; 0:ab59 -s0_ab5a:: ds 1 ; 0:ab5a -s0_ab5b:: ds 1 ; 0:ab5b -s0_ab5c:: ds 1 ; 0:ab5c -s0_ab5d:: ds 1 ; 0:ab5d -s0_ab5e:: ds 1 ; 0:ab5e -s0_ab5f:: ds 1 ; 0:ab5f -s0_ab60:: ds 1 ; 0:ab60 -s0_ab61:: ds 1 ; 0:ab61 -s0_ab62:: ds 1 ; 0:ab62 -s0_ab63:: ds 1 ; 0:ab63 -s0_ab64:: ds 1 ; 0:ab64 -s0_ab65:: ds 1 ; 0:ab65 -s0_ab66:: ds 1 ; 0:ab66 -s0_ab67:: ds 1 ; 0:ab67 -s0_ab68:: ds 1 ; 0:ab68 -s0_ab69:: ds 1 ; 0:ab69 -s0_ab6a:: ds 1 ; 0:ab6a -s0_ab6b:: ds 1 ; 0:ab6b -s0_ab6c:: ds 1 ; 0:ab6c -s0_ab6d:: ds 1 ; 0:ab6d -s0_ab6e:: ds 1 ; 0:ab6e -s0_ab6f:: ds 1 ; 0:ab6f -s0_ab70:: ds 1 ; 0:ab70 -s0_ab71:: ds 1 ; 0:ab71 -s0_ab72:: ds 1 ; 0:ab72 -s0_ab73:: ds 1 ; 0:ab73 -s0_ab74:: ds 1 ; 0:ab74 -s0_ab75:: ds 1 ; 0:ab75 -s0_ab76:: ds 1 ; 0:ab76 -s0_ab77:: ds 1 ; 0:ab77 -s0_ab78:: ds 1 ; 0:ab78 -s0_ab79:: ds 1 ; 0:ab79 -s0_ab7a:: ds 1 ; 0:ab7a -s0_ab7b:: ds 1 ; 0:ab7b -s0_ab7c:: ds 1 ; 0:ab7c -s0_ab7d:: ds 1 ; 0:ab7d -s0_ab7e:: ds 1 ; 0:ab7e -s0_ab7f:: ds 1 ; 0:ab7f -s0_ab80:: ds 1 ; 0:ab80 -s0_ab81:: ds 1 ; 0:ab81 -s0_ab82:: ds 1 ; 0:ab82 -s0_ab83:: ds 1 ; 0:ab83 -s0_ab84:: ds 1 ; 0:ab84 -s0_ab85:: ds 1 ; 0:ab85 -s0_ab86:: ds 1 ; 0:ab86 -s0_ab87:: ds 1 ; 0:ab87 -s0_ab88:: ds 1 ; 0:ab88 -s0_ab89:: ds 1 ; 0:ab89 -s0_ab8a:: ds 1 ; 0:ab8a -s0_ab8b:: ds 1 ; 0:ab8b -s0_ab8c:: ds 1 ; 0:ab8c -s0_ab8d:: ds 1 ; 0:ab8d -s0_ab8e:: ds 1 ; 0:ab8e -s0_ab8f:: ds 1 ; 0:ab8f -s0_ab90:: ds 1 ; 0:ab90 -s0_ab91:: ds 1 ; 0:ab91 -s0_ab92:: ds 1 ; 0:ab92 -s0_ab93:: ds 1 ; 0:ab93 -s0_ab94:: ds 1 ; 0:ab94 -s0_ab95:: ds 1 ; 0:ab95 -s0_ab96:: ds 1 ; 0:ab96 -s0_ab97:: ds 1 ; 0:ab97 -s0_ab98:: ds 1 ; 0:ab98 -s0_ab99:: ds 1 ; 0:ab99 -s0_ab9a:: ds 1 ; 0:ab9a -s0_ab9b:: ds 1 ; 0:ab9b -s0_ab9c:: ds 1 ; 0:ab9c -s0_ab9d:: ds 1 ; 0:ab9d -s0_ab9e:: ds 1 ; 0:ab9e -s0_ab9f:: ds 1 ; 0:ab9f -s0_aba0:: ds 1 ; 0:aba0 -s0_aba1:: ds 1 ; 0:aba1 -s0_aba2:: ds 1 ; 0:aba2 -s0_aba3:: ds 1 ; 0:aba3 -s0_aba4:: ds 1 ; 0:aba4 -s0_aba5:: ds 1 ; 0:aba5 -s0_aba6:: ds 1 ; 0:aba6 -s0_aba7:: ds 1 ; 0:aba7 -s0_aba8:: ds 1 ; 0:aba8 -s0_aba9:: ds 1 ; 0:aba9 -s0_abaa:: ds 1 ; 0:abaa -s0_abab:: ds 1 ; 0:abab -s0_abac:: ds 1 ; 0:abac -s0_abad:: ds 1 ; 0:abad -s0_abae:: ds 1 ; 0:abae -s0_abaf:: ds 1 ; 0:abaf -s0_abb0:: ds 1 ; 0:abb0 -s0_abb1:: ds 1 ; 0:abb1 -s0_abb2:: ds 1 ; 0:abb2 -s0_abb3:: ds 1 ; 0:abb3 -s0_abb4:: ds 1 ; 0:abb4 -s0_abb5:: ds 1 ; 0:abb5 -s0_abb6:: ds 1 ; 0:abb6 -s0_abb7:: ds 1 ; 0:abb7 -s0_abb8:: ds 1 ; 0:abb8 -s0_abb9:: ds 1 ; 0:abb9 -s0_abba:: ds 1 ; 0:abba -s0_abbb:: ds 1 ; 0:abbb -s0_abbc:: ds 1 ; 0:abbc -s0_abbd:: ds 1 ; 0:abbd -s0_abbe:: ds 1 ; 0:abbe -s0_abbf:: ds 1 ; 0:abbf -s0_abc0:: ds 1 ; 0:abc0 -s0_abc1:: ds 1 ; 0:abc1 -s0_abc2:: ds 1 ; 0:abc2 -s0_abc3:: ds 1 ; 0:abc3 -s0_abc4:: ds 1 ; 0:abc4 -s0_abc5:: ds 1 ; 0:abc5 -s0_abc6:: ds 1 ; 0:abc6 -s0_abc7:: ds 1 ; 0:abc7 -s0_abc8:: ds 1 ; 0:abc8 -s0_abc9:: ds 1 ; 0:abc9 -s0_abca:: ds 1 ; 0:abca -s0_abcb:: ds 1 ; 0:abcb -s0_abcc:: ds 1 ; 0:abcc -s0_abcd:: ds 1 ; 0:abcd -s0_abce:: ds 1 ; 0:abce -s0_abcf:: ds 1 ; 0:abcf -s0_abd0:: ds 1 ; 0:abd0 -s0_abd1:: ds 1 ; 0:abd1 -s0_abd2:: ds 1 ; 0:abd2 -s0_abd3:: ds 1 ; 0:abd3 -s0_abd4:: ds 1 ; 0:abd4 -s0_abd5:: ds 1 ; 0:abd5 -s0_abd6:: ds 1 ; 0:abd6 -s0_abd7:: ds 1 ; 0:abd7 -s0_abd8:: ds 1 ; 0:abd8 -s0_abd9:: ds 1 ; 0:abd9 -s0_abda:: ds 1 ; 0:abda -s0_abdb:: ds 1 ; 0:abdb -s0_abdc:: ds 1 ; 0:abdc -s0_abdd:: ds 1 ; 0:abdd -s0_abde:: ds 1 ; 0:abde -s0_abdf:: ds 1 ; 0:abdf -s0_abe0:: ds 1 ; 0:abe0 -s0_abe1:: ds 1 ; 0:abe1 + +; a600 +sPartyMail:: +sPartyMon1Mail:: mailmsg sPartyMon1Mail +sPartyMon2Mail:: mailmsg sPartyMon2Mail +sPartyMon3Mail:: mailmsg sPartyMon3Mail +sPartyMon4Mail:: mailmsg sPartyMon4Mail +sPartyMon5Mail:: mailmsg sPartyMon5Mail +sPartyMon6Mail:: mailmsg sPartyMon6Mail + +; a71a +sPartyMailBackup:: +sPartyMon1MailBackup:: mailmsg sPartyMon1MailBackup +sPartyMon2MailBackup:: mailmsg sPartyMon2MailBackup +sPartyMon3MailBackup:: mailmsg sPartyMon3MailBackup +sPartyMon4MailBackup:: mailmsg sPartyMon4MailBackup +sPartyMon5MailBackup:: mailmsg sPartyMon5MailBackup +sPartyMon6MailBackup:: mailmsg sPartyMon6MailBackup + +; a834 +sMailboxCount:: db +sMailbox:: +sMailbox1:: mailmsg sMailbox1 +sMailbox2:: mailmsg sMailbox2 +sMailbox3:: mailmsg sMailbox3 +sMailbox4:: mailmsg sMailbox4 +sMailbox5:: mailmsg sMailbox5 +sMailbox6:: mailmsg sMailbox6 +sMailbox7:: mailmsg sMailbox7 +sMailbox8:: mailmsg sMailbox8 +sMailbox9:: mailmsg sMailbox9 +sMailbox10:: mailmsg sMailbox10 + +; aa0b +sMailboxCountBackup:: db +sMailboxBackup:: +sMailbox1Backup:: mailmsg sMailbox1Backup +sMailbox2Backup:: mailmsg sMailbox2Backup +sMailbox3Backup:: mailmsg sMailbox3Backup +sMailbox4Backup:: mailmsg sMailbox4Backup +sMailbox5Backup:: mailmsg sMailbox5Backup +sMailbox6Backup:: mailmsg sMailbox6Backup +sMailbox7Backup:: mailmsg sMailbox7Backup +sMailbox8Backup:: mailmsg sMailbox8Backup +sMailbox9Backup:: mailmsg sMailbox9Backup +sMailbox10Backup:: mailmsg sMailbox10Backup + s0_abe2:: ds 1 ; 0:abe2 s0_abe3:: ds 1 ; 0:abe3 s0_abe4:: ds 1 ; 0:abe4 @@ -1999,7 +1999,7 @@ wcc95:: ds 1 ; cc95 wcc96:: ds 1 ; cc96 wcc97:: ds 1 ; cc97 wColorLayoutPredefID:: ds 1 ; cc98 -wcc99:: ds 1 ; cc99 +wPlayerHPPal:: db ; cc99 wcc9a:: ds 1 ; cc9a wcc9b:: ds 1 ; cc9b wcc9c:: ds 1 ; cc9c @@ -2106,8 +2106,12 @@ wJumpTableIndex:: wce64:: ds 1 ; ce64 wce65:: wIntroSceneTimer:: +wCurPocket:: db ; ce65 -wce66:: ds 1 ; ce66 + +wPackUsedItem:: +wce66:: + db ; ce66 wRequested2bpp:: ds 1 ; ce67 wRequested2bppSource:: dw ; ce68 @@ -2181,7 +2185,7 @@ wMenuJoypad:: ds 1 ; ceaa wMenuSelection:: ds 1 ; ceab wceac:: ds 1 ; ceac wWhichIndexSet:: ds 1 ; cead -wceae:: ds 1 ; ceae +wScrollingMenuCursorPosition:: db ; ceae wceaf:: ds 1 ; ceaf wceb0:: ds 1 ; ceb0 wceb1:: ds 1 ; ceb1 @@ -2194,8 +2198,7 @@ wceb7:: ds 1 ; ceb7 wWindowDataEnd:: wMenuHeader:: -wMenuFlags:: -wceb8:: ds 1 ; ceb8 +wMenuFlags:: ds 1 ; ceb8 wMenuBorderTopCoord:: ds 1 ; ceb9 wMenuBorderLeftCoord:: ds 1 ; ceba wMenuBorderBottomCoord:: ds 1 ; cebb @@ -2230,15 +2233,25 @@ wced6:: ds 1 ; ced6 wced7:: ds 1 ; ced7 wMenuDataEnd:: -wMenuData3:: -w2DMenuCursorInitY:: ds 1 ; ced8 -wced9:: ds 1 ; ced9 -wceda:: ds 1 ; ceda -wcedb:: ds 1 ; cedb -w2DMenuFlags1:: ds 1 ; cedc -wcedd:: ds 1 ; cedd -wcede:: ds 1 ; cede -wMenuJoypadFilter:: ds 1 ; cedf +w2DMenuData:: +w2DMenuCursorInitY:: db ; ced8 +w2DMenuCursorInitX:: db ; ced9 +w2DMenuNumRows:: db ; ceda +w2DMenuNumCols:: db ; cedb +w2DMenuFlags1:: ; cedc +; bit 7: Disable checking of wMenuJoypadFilter +; bit 6: Enable sprite animations +; bit 5: Wrap around vertically +; bit 4: Wrap around horizontally +; bit 3: Set bit 7 in w2DMenuFlags2 and exit the loop if bit 5 is disabled and we tried to go too far down +; bit 2: Set bit 7 in w2DMenuFlags2 and exit the loop if bit 5 is disabled and we tried to go too far up +; bit 1: Set bit 7 in w2DMenuFlags2 and exit the loop if bit 4 is disabled and we tried to go too far left +; bit 0: Set bit 7 in w2DMenuFlags2 and exit the loop if bit 4 is disabled and we tried to go too far right + db +w2DMenuFlags2:: db ; cedd +w2DMenuCursorOffsets:: db ; cede +wMenuJoypadFilter:: db ; cedf +w2DMenuDataEnd:: wMenuCursorY:: ds 1 ; cee0 wcee1:: ds 1 ; cee1 wcee2:: ds 1 ; cee2 @@ -2256,27 +2269,41 @@ wVBlankOccurred:: ds 1 ; ceea wceeb:: ds 1 ; ceeb wceec:: ds 1 ; ceec -wMovementBufferCount:: ; ceed +UNION ; ceed +; mail temp storage +wTempMail:: mailmsg wTempMail + +NEXTU ; ceed +; bug-catching contest +wBugContestResults:: + bugcontestwinner wBugContestFirstPlace + bugcontestwinner wBugContestSecondPlace + bugcontestwinner wBugContestThirdPlace +wBugContestWinnersEnd:: + bugcontestwinner wBugContestTemp + ds 4 +wBugContestWinnerName:: ds NAME_LENGTH + +NEXTU ; ceed +; movement buffer data +wMovementBufferCount:: db +wMovementBufferObject:: db +wUnusedMovementBufferBank:: db +wUnusedMovementBufferPointer:: dw +wMovementBuffer:: ds 55 + +NEXTU ; ceed +; unidentified wceed:: ds 1 ; ceed - -wMovementBufferObject:: wceee:: ds 1 ; ceee - -wTemporaryBuffer:: -wBugContestFirstPlaceScore:: wceef:: ds 1 ; ceef wcef0:: ds 1 ; cef0 wcef1:: ds 1 ; cef1 - -wMovementBuffer:: wcef2:: ds 1 ; cef2 - -wBugContestSecondPlaceScore:: wcef3:: ds 1 ; cef3 wcef4:: ds 1 ; cef4 wcef5:: ds 1 ; cef5 wcef6:: ds 1 ; cef6 -wBugContestThirdPlaceScore:: wcef7:: ds 1 ; cef7 wcef8:: ds 1 ; cef8 wcef9:: ds 1 ; cef9 @@ -2287,7 +2314,6 @@ wcefd:: ds 1 ; cefd wcefe:: ds 1 ; cefe wceff:: ds 1 ; ceff wcf00:: ds 1 ; cf00 -wBugContestWinnerName:: wcf01:: ds 1 ; cf01 wcf02:: ds 1 ; cf02 wcf03:: ds 1 ; cf03 @@ -2328,33 +2354,97 @@ wcf25:: ds 1 ; cf25 wcf26:: ds 1 ; cf26 wcf27:: ds 1 ; cf27 wcf28:: ds 1 ; cf28 -wSeenTrainerBank:: -wcf29:: ds 1 ; cf29 -wSeenTrainerDistance:: -wcf2a:: ds 1 ; cf2a -wSeenTrainerDirection:: -wcf2b:: ds 1 ; cf2b + +UNION ; cf29 +; trainer data +wSeenTrainerBank:: db +wSeenTrainerDistance:: db +wSeenTrainerDirection:: db wTempTrainer:: -wcf2c:: ds 1 ; cf2c -wcf2d:: ds 1 ; cf2d -wcf2e:: ds 1 ; cf2e -wcf2f:: ds 1 ; cf2f -wcf30:: ds 1 ; cf30 -wcf31:: ds 1 ; cf31 -wWinTextPointer:: dw ; cf32 -wLossTextPointer:: dw ; cf34 -wcf36:: ds 1 ; cf36 -wcf37:: ds 1 ; cf37 -wRunningTrainerBattleScript:: -wcf38:: ds 1 ; cf38 +wTempTrainerEventFlag:: dw +wTempTrainerClass:: db +wTempTrainerID:: db +wSeenTextPointer:: dw +wWinTextPointer:: dw +wLossTextPointer:: dw +wScriptAfterPointer:: dw +wRunningTrainerBattleScript:: db wTempTrainerEnd:: -wcf39:: ds 1 ; cf39 -wcf3a:: ds 1 ; cf3a -wcf3b:: ds 1 ; cf3b -wcf3c:: ds 1 ; cf3c -wcf3d:: ds 1 ; cf3d -wcf3e:: ds 1 ; cf3e -wcf3f:: ds 1 ; cf3f + +NEXTU ; cf29 +; menu items list +wMenuItemsList:: ds 16 +wMenuItemsListEnd:: + +NEXTU ; cf29 +; item ball data +wItemBallData:: +wItemBallItemID:: db +wItemBallQuantity:: db +wItemBallDataEnd:: + +NEXTU ; cf29 +; hidden item data +wHiddenItemData:: +wHiddenItemEvent:: dw +wHiddenItemID:: db +wHiddenItemDataEnd:: + +NEXTU ; cf29 +; elevator data +wElevatorData:: +wElevatorPointerBank:: db +wElevatorPointer:: dw +wElevatorOriginFloor:: db +wElevatorDataEnd:: + +NEXTU ; cf29 +; coord event data +wCurCoordEvent:: +wCurCoordEventSceneID:: db +wCurCoordEventMapY:: db +wCurCoordEventMapX:: db + ds 1 +wCurCoordEventScriptAddr:: dw + +NEXTU ; cf29 +; BG event data +wCurBGEvent:: +wCurBGEventYCoord:: db +wCurBGEventXCoord:: db +wCurBGEventType:: db +wCurBGEventScriptAddr:: dw + +NEXTU ; cf29 +; player movement data +wCurInput:: +wFacingTileID:: db +wWalkingIntoNPC:: db +wWalkingIntoLand:: db +wWalkingIntoEdgeWarp:: db +wMovementAnimation:: db +wWalkingDirection:: db +wFacingDirection:: db +wWalkingX:: db +wWalkingY:: db +wWalkingTile:: db + ds 6 +wPlayerTurningDirection:: db + +NEXTU ; cf29 +; std script buffer + ds 1 +wJumpStdScriptBuffer:: ds 3 +ENDU + +wcf3a:: ds 1 +wcf3b:: ds 1 +wcf3c:: ds 1 +wcf3d:: ds 1 +wcf3e:: ds 1 +wcf3f:: ds 1 +ENDU + wcf40:: ds 1 ; cf40 wcf41:: ds 1 ; cf41 wcf42:: ds 1 ; cf42 @@ -2407,7 +2497,8 @@ wStringBuffer4:: ds 19 ; cfa4 UNION wStringBuffer5:: ds 19 ; cfb7 NEXTU - ds 15 + ds 13 +wBattleMenuCursorBuffer:: dw ; cfc4 wCurBattleMon:: ds 1 ; cfc6 wcfc7:: ds 1 ; cfc7 wcfc8:: ds 1 ; cfc8 @@ -2423,20 +2514,25 @@ wcfcf:: ds 1 ; cfcf wcfd0:: ds 1 ; cfd0 wcfd1:: ds 1 ; cfd1 wcfd2:: ds 1 ; cfd2 -wcfd3:: ds 1 ; cfd3 -wcfd4:: ds 1 ; cfd4 + +wSwitchMon:: +wSwitchItem:: +wMoveSwapBuffer:: +wcfd3:: + db ; cfd3 + +wMenuScrollPosition:: ds 1 ; cfd4 wcfd5:: ds 1 ; cfd5 wcfd6:: ds 1 ; cfd6 wcfd7:: ds 1 ; cfd7 -wQueuedScriptBank:: ds 1 ; cfd8 -wQueuedScriptAddr:: ds 1 ; cfd9 -wcfda:: ds 1 ; cfda +wQueuedScriptBank:: db ; cfd8 +wQueuedScriptAddr:: dw ; cfd9 wPredefID:: ds 1 ; cfdb wPredefTemp:: dw ; cfdc wPredefAddress:: dw ; cfde wFarCallBCBuffer:: dw ; cfe0 wcfe2:: ds 1 ; cfe2 -wcfe3:: ds 1 ; cfe3 +wNumMoves:: ds 1 ; cfe3 wFieldMoveSucceeded:: wItemEffectSucceeded:: @@ -2449,8 +2545,8 @@ wcfe8:: ds 1 ; cfe8 wBattleResult:: ds 1 ; cfe9 wcfea:: ds 1 ; cfea wUsingItemWithSelect:: ds 1 ; cfeb -wcfec:: ds 1 ; cfec -wcfed:: ds 1 ; cfed +wCurElevator:: db ; cfec +wCurElevatorFloors:: ds 1 ; cfed wcfee:: ds 1 ; cfee wcfef:: ds 1 ; cfef wcff0:: ds 1 ; cff0 @@ -2473,8 +2569,8 @@ wcfff:: ds 1 ; cfff SECTION "WRAM1", WRAMX, BANK[$1] wd000:: ds 1 ; d000 wd001:: ds 1 ; d001 -wd002:: ds 1 ; d002 -wd003:: ds 1 ; d003 +wCurItem:: db ; d002 +wCurItemQuantity:: db ; d003 wCurPartySpecies:: ; d004 ds 1 @@ -2751,20 +2847,32 @@ wd145:: ds 1 ; d145 wd146:: ds 1 ; d146 wd147:: ds 1 ; d147 wd148:: ds 1 ; d148 -wd149:: ds 1 ; d149 -wd14a:: ds 1 ; d14a -wd14b:: ds 1 ; d14b -wd14c:: ds 1 ; d14c -wd14d:: ds 1 ; d14d +wListMoves_MoveIndicesBuffer:: ds NUM_MOVES +wPutativeTMHMMove:: db ; d14d wd14e:: ds 1 ; d14e wWildMon:: ds 1 ; d14f wd150:: ds 1 ; d150 -wTempNumBuffer:: + +; d265 has many different short-term uses wNamedObjectIndexBuffer:: wDeciramBuffer:: -wBreedingCompatibility:: +wTempByteValue:: wNumSetBits:: -wd151:: ds 1 ; d151 +wTypeMatchup:: +wCurType:: +wTempSpecies:: +wTempIconSpecies:: +wTempTMHM:: +wTempPP:: +wNextBoxOrPartyIndex:: +wChosenCableClubRoom:: +wBreedingCompatibility:: +wMoveGrammar:: +wApplyStatLevelMultipliersToEnemy:: +wUsePPUp:: +wd151:: + db ; d151 + wd152:: ds 1 ; d152 wd153:: ds 1 ; d153 wd154:: ds 1 ; d154 |