INCLUDE "constants.asm" SECTION "engine/menu/start_menu.asm", ROMX DisplayStartMenu: ; 04:5DBE call RefreshScreen ld de, $0003 call PlaySFX ld hl, .StartMenuHeader call LoadMenuHeader .RefreshStartDisplay call UpdateTimePals call UpdateSprites call ClearJoypad call GetStartMenuState ld a, [wStartmenuCursor] ld [wMenuCursorBuffer], a call OpenMenu jr c, .MainReturn ld a, [wMenuCursorBuffer] ld [wStartmenuCursor], a call PlaceHollowCursor ld a, [wMenuSelection] ld hl, StartMenuJumpTable call CallJumptable ld hl, .StartMenuEntriesReturnTable jp CallJumptable .StartMenuEntriesReturnTable: ; 04:5DFC dw .RefreshStartDisplay dw .MainReturn dw .exit dw .UpdateTime dw .ExitAndHookFF .MainReturn call .WaitForARelease call LoadFontExtra .exit call ExitMenu .UpdateTime call Function1fea call UpdateTimePals ret .unused ; 04:5E16 call .WaitForARelease call LoadFontExtra call CloseWindow jr .UpdateTime .WaitForARelease call GetJoypad ldh a, [hJoyDown] bit A_BUTTON_F, a jr nz, .WaitForARelease ret .ExitAndHookFF: ; 04:5E2B call ExitMenu ld a, $FF ldh [hStartmenuCloseAndSelectHookEnable], a jr .UpdateTime .StartMenuHeader: ; 04:5E34 db MENU_BACKUP_TILES menu_coords $0C, 00, $13, $11 dw .MenuData db 1 ; default option .MenuData: ; 04:5E3C db $A8 db 0 ; items dw StartMenuItems db $8A, $1F dw .Strings .Strings: ; 04:5E44 db "ずかん@" db "ポケモン@" db "りュック@" db "@" db "レポート@" db "せってい@" db "とじる@" db "わくせん@" db "りセット@" StartMenuJumpTable: ; 04:5E6C dw StartMenu_Pokedex dw StartMenu_Party dw StartMenu_Backpack dw StartMenu_TrainerCard dw StartMenu_Save dw StartMenu_Settings dw StartMenu_Exit dw StartMenu_Pokegear dw StartMenu_Reset StartMenuItems: ; 04:5E7E db 4 db START_SAVE db START_OPTIONS db START_TRAINERCARD db START_EXIT db -1 db 5 db START_PARTY db START_TRAINERCARD db START_SAVE db START_OPTIONS db START_EXIT db -1 db 6 db START_POKEDEX db START_PARTY db START_TRAINERCARD db START_SAVE db START_OPTIONS db START_EXIT db -1 db 7 db START_POKEDEX db START_PARTY db START_BACKPACK db START_TRAINERCARD db START_SAVE db START_OPTIONS db START_EXIT db -1 db 6 db START_POKEDEX db START_PARTY db START_BACKPACK db START_TRAINERCARD db START_OPTIONS db START_EXIT db -1 GetStartMenuState: ; 04:5EA4 ; Stores one of four values to wActiveBackpackPocket ; based on story flags and debug mode. ; 4 = debug, 3 = starting, 2 = rival beat in lab ; 1 = pokedex recieved, 0 = chose starter ld b, 4 ld hl, wDebugFlags bit DEBUG_FIELD_F, [hl] jr z, .store ld b, 0 ld hl, wd41b bit 2, [hl] jr z, .store ld b, 1 ld hl, wd41c bit 4, [hl] jr z, .store ld b, 2 ld hl, wd41d bit 2, [hl] jr z, .store ld b, 3 .store ld a, b ld [wActiveBackpackPocket], a ret StartMenu_Exit: ; 04:5ECF ; Exits the menu ld a, 1 ret StartMenu_Pokegear: ; 04:5ED2 callab PokeGear ld a, 0 ret StartMenu_Reset: ; 04:5EDD ld hl, DisplayResetDialog ld a, BANK(DisplayResetDialog) call DisplayResetDialog ; should be farcall ld a, 0 ret StartMenu_Save: ; 04:5EE8 predef Function143e0 call UpdateSprites ld a, 0 ret StartMenu_Settings: ; 04:5EF3 call LoadStandardMenuHeader xor a ldh [hBGMapMode], a call ClearTileMap call UpdateSprites callab MenuCallSettings call ClearPalettes call Call_ExitMenu call LoadTilesetGFX call LoadFontExtra call UpdateSprites call WaitBGMap call UpdateTimePals ld a, 0 ret StartMenu_TrainerCard ; 04:5F1F call _TrainerCard ld a, 0 ret _TrainerCard: ; 04:5F25 call LoadStandardMenuHeader ldh a, [hMapAnims] push af xor a ldh [hMapAnims], a callab TrainerCardLoop call ClearPalettes call LoadFont call ReloadFontAndTileset call Call_ExitMenu call GetMemSGBLayout call WaitBGMap call UpdateTimePals pop af ldh [hMapAnims], a ret StartMenu_Pokedex: ; 04:5F4F call LoadStandardMenuHeader predef Function40000 call ClearPalettes call Function360b call ReloadFontAndTileset call Call_ExitMenu call GetMemSGBLayout call WaitBGMap call UpdateTimePals ld a, 0 ret UnusedToolPocketData: ; 04:5F6F dw ToolsPocketHeader dw wRegularItemsCursor dw wRegularItemsScrollPosition ToolsPocketHeader: ; 04:5F75 db MENU_BACKUP_TILES ; flags menu_coords 03, 03, $11, $0A dw .ToolsPocketData db 1 .ToolsPocketData ; 04:5F7D db $AD db 4, 9, 2, 0 dw wNumBagItems dbw BANK(Function2473b), Function2473b dbw BANK(Function24783), Function24783 dbw BANK(Function241ef), Function241ef dw KeyItemsPocketHeader dw wBackpackAndKeyItemsCursor dw wBackpackAndKeyItemsScrollPosition KeyItemsPocketHeader: ; 04:5F93 db MENU_BACKUP_TILES ; flags menu_coords 03, 03, $11, $0A dw .KeyPocketData db 1 .KeyPocketData ; 04:5F9B db $AD db 4, 9, 1, 0 dw wNumKeyItems dbw BANK(Function2473b), Function2473b dbw BANK(Function24783), Function24783 dbw BANK(Function241ef), Function241ef BackpackMenuHeader: ; 04:5FAB db MENU_BACKUP_TILES ; flags menu_coords 03, 03, $11, $0A dw .BackpackData db 01 .BackpackData ; 04:5FB3 db $A1 db 4, 9, 2, 0 dw wNumBagItems dbw BANK(Function2473b), Function2473b dbw BANK(Function24783), Function24783 dbw BANK(Function241ef), Function241ef GetPocket2Status: ; 04:5FC3 ; puts 2 in wActiveBackpackPocket if pocket 2 has items ; otherwise puts 1 in ld a, 2 ld [wActiveBackpackPocket], a ld a, [wNumBagItems] and a ret nz ld a, 1 ld [wActiveBackpackPocket], a ret FlipPocket2Status: ; 04:5FD3 ; stores 1 in wactivebackpocket if it's currently 2 ; and vice versa ld a, [wActiveBackpackPocket] cp 2 ld a, 1 jr z, .skip ld a, 2 .skip ld [wActiveBackpackPocket], a ret CheckItemsQuantity: ; 04:5FE2 ; sets clear flag if you have no items ld a, [wNumBagItems] and a ret nz ld a, [wNumKeyItems] and a ret nz scf ret DrawBackpack: ; 04:5FEE ld hl, wVramState res 0, [hl] call ClearSprites call ClearTileMap callab LoadBackpackGraphics hlcoord 2, 2 ld b, 08 ld c, $0F call DrawTextBox ret ; 04:600C ld hl, wVramState set 0, [hl] call ExitMenu ret StartMenu_Backpack: ; 04:6015 call CheckItemsQuantity jr c, .NoItems call LoadStandardMenuHeader ld hl, wVramState res 0, [hl] call DrawBackpack xor a ld [wSelectedSwapPosition], a call GetPocket2Status .loop call DebugBackpackLoop jr c, .jump call BackpackSelected jr nc, .loop jr .skip .jump ld a, 0 .skip push af ld hl, wVramState set 0, [hl] xor a ld [wSelectedSwapPosition], a call ClearPalettes call CloseWindow call LoadFontExtra pop af ret .NoItems call DrawNoItemsText ; 6371 scf ld a, 0 ret DebugBackpackLoop: ; 04:6056 ; checks the field debug flag, if set this runs ; otherwise NondebugBackpackLoop runs ; if wactivebackpackpocket is 1 (doesn't have key items) then jumps below ld a, [wDebugFlags] bit DEBUG_FIELD_F, a jp z, NondebugBackpackLoop ld a, [wActiveBackpackPocket] cp 2 jr nz, .NoTools ld hl, ToolsPocketHeader call CopyMenuHeader ld de, .ToolsPocketText call DrawBackpackTitleRow ld a, [wRegularItemsCursor] ld [wMenuCursorBuffer], a ld a, [wRegularItemsScrollPosition] ld [wMenuScrollPosition], a call ScrollingMenu ld a, [wMenuScrollPosition] ld [wRegularItemsScrollPosition], a ld a, [wMenuCursorY] ld [wRegularItemsCursor], a jp HandleBackpackInput .ToolsPocketText ; 04:608F db "      ふつうの どうぐ      @" .NoTools ld hl, KeyItemsPocketHeader call CopyMenuHeader ld de, KeyItemsPocketText call DrawBackpackTitleRow ld a, [wBackpackAndKeyItemsCursor] ld [wMenuCursorBuffer], a ld a, [wBackpackAndKeyItemsScrollPosition] ld [wMenuScrollPosition], a call ScrollingMenu ld a, [wMenuScrollPosition] ld [wBackpackAndKeyItemsScrollPosition], a ld a, [wMenuCursorY] ld [wBackpackAndKeyItemsCursor], a jr HandleBackpackInput KeyItemsPocketText: ; 04:60CD db "      だいじな もの       @" NondebugBackpackLoop: ; 04:60E2 ld hl, BackpackMenuHeader call CopyMenuHeader ld de, BackpackHeaderText call DrawBackpackTitleRow ld a, [wBackpackAndKeyItemsCursor] ld [wMenuCursorBuffer], a ld a, [wBackpackAndKeyItemsScrollPosition] ld [wMenuScrollPosition], a call ScrollingMenu ld a, [wMenuScrollPosition] ld [wBackpackAndKeyItemsScrollPosition], a ld a, [wMenuCursorY] ld [wBackpackAndKeyItemsCursor], a jr HandleBackpackInput BackpackHeaderText: ; 04:610B db "      りュックの なか     @" HandleBackpackInput: ; 04:611F ld a, [wMenuJoypad] cp A_BUTTON jp z, .BackpackA cp B_BUTTON jp z, .BackpackBack cp D_LEFT jp z, .BackpackSwapPocket cp D_RIGHT jp z, .BackpackSwapPocket cp SELECT jp z, .BackpackSelect jp .exit .BackpackSwapPocket ; 04:613E call FlipPocket2Status xor a ld [wSelectedSwapPosition], a jp .exit .BackpackSelect ; 04:6148 callab Function245c5 jp .exit .exit ; 04:6153 jp DebugBackpackLoop .UnusedNoItems ; 04:6156 call DrawNoItemsText scf ret .BackpackBack ; 04:615B scf ret .BackpackA ; 04:615D and a ret BackpackSelected: ; 04:615F callab Function243af call PlaceHollowCursor call LoadItemData callab CheckItemMenu ld a, [wItemAttributeParamBuffer] ld hl, .BagSelectJumptable jp CallJumptable .BagSelectJumptable: ; 04:617E dw SelectItem dw .UnknownSelection dw BallPocketLoop dw .SwapPocket dw SelectItem dw SelectItem dw SelectItem .SwapPocket ; 04:618C call FlipPocket2Status xor a ld [wSelectedSwapPosition], a and a ret .UnknownSelection ; 04:6195 call LoadStandardMenuHeader callab Function2d2fc call ExitMenu call DrawBackpack and a ret BallPocketLoop: ; 04:61A8 call BallPocket jr c, .exit call SelectItem ret c jr BallPocketLoop .exit and a ret SelectItem: ; 04:61B5 call ItemUseMenu jr c, .skip1 ld a, [wMenuCursorY] cp 1 jp z, UseItemSelection cp 2 jp z, TossItemSelection cp 3 jp z, RegisterItemSelection .skip1 and a ret ItemUseMenu: ; 04:61CE ; loads SelectedItemMenu if not debug, ; DebugSelectedItemMenu if debug ld a, [wDebugFlags] bit DEBUG_FIELD_F, a jr nz, .jump ld hl, SelectedItemMenu call LoadMenuHeader call VerticalMenu call CloseWindow ret .jump ld hl, DebugSelectedItemMenu call LoadMenuHeader call VerticalMenu call CloseWindow ret DebugSelectedItemMenu: ; 04:61EF db MENU_BACKUP_TILES menu_coords $0D, $0A, $13, $10 dw .DebugSelectedItemMenuText db 01 .DebugSelectedItemMenuText db $C0 db 3 db "つかう@" ; use db "すてる@" ; toss db "とうろく@" ; register SelectedItemMenu: ; 04:6206 db MENU_BACKUP_TILES menu_coords $0E, $0A, $13, $0E dw .SelectedItemMenuText db 01 .SelectedItemMenuText db $C0 db 2 db "つかう@" ; use db "すてる@" ; toss TossItemSelection: ; 04:6218 ld de, wNumBagItems call TryTossItem and a ret RegisterItemSelection: ; 04:6220 call TryRegisterItem and a ret UseItemSelection: ; 04:6225 callab CheckItemMenu ld a, [wItemAttributeParamBuffer] ld hl, .UseItemJumptable jp CallJumptable .UseItemJumptable: ; 04:6236 ; jumptable dw .FailedMove dw .unusable dw .unusable dw .unusable dw .SimpleItem dw .SpriteItem dw .FieldMove .unusable ; 04:6244 call PrintCantUseText and a ret .SimpleItem: ; 04:6249 call UseItem and a ret .SpriteItem: ; 04:624E ; might be a better name for this once ; bank 5 gets sorted out call UseItem call ClearBGPalettes call StartMenuLoadSprites call DrawBackpack and a ret .FieldMove: ; 04:625C call UseItem ld a, [wFieldMoveSucceeded] and a jr z, .FailedMove scf ld a, 4 ret .FailedMove ; 04:6269 call PrintCantUseText and a ret TryTossItem: ; 04:626E push de call LoadItemData callab _CheckTossableItem ld a, [wItemAttributeParamBuffer] and a jr nz, .TossFail ld hl, .TossedText call MenuTextBox callab Function24c60 push af call CloseWindow call ExitMenu pop af jr c, .TossReturn ld hl, .TossVerifyText call MenuTextBox call YesNoBox push af call ExitMenu pop af jr c, .TossReturn pop hl ld a, [wItemIndex] call TossItem call LoadItemData ld hl, .TossedTextCopy call MenuTextBox call ExitMenu and a ret .TossFail ; 04:62BD ;25 call CantDropItem .TossReturn pop hl scf ret .TossedText: ; 04:62C3 db 1 dw wStringBuffer2 text "を " line "いくつ すてますか?" done .TossVerifyText: ; 04:62D5 db 1 dw wStringBuffer2 text "を @" db 9 dw wItemQuantity db $12 text "こ" line "すててもよろしいですか?" done .TossedTextCopy: ; 04:62F0 db 1 dw wStringBuffer1 text "を" line "すてました!" CantDropItem: ; 04:62FD ld hl, .CantDropItemText call MenuTextBoxBackup ret .CantDropItemText: ; 04:6304 text "それは とても たいせつなモノです" line "すてることは できません!" PrintCantUseHM: ; 04:6325 ld hl, .CantUseHMText call MenuTextBoxBackup ret .CantUseHMText: ; 04:632C text "かいはつちゅう です" line "いまは つかえません" PrintCantUseText: ; 04:6343 ld hl, .CantUseHereText call MenuTextBoxBackup ret .CantUseHereText: ; 04:634A text "オーキドの ことば<⋯⋯>" line "よ! こういうものには" cont "つかいどきが あるのじゃ!" DrawNoItemsText: ; 04:6371 ld hl, .NoItemsText call MenuTextBoxBackup ret .NoItemsText: ; 04:6378 text "どうぐ をひとつももっていません!" BallPocket: ; 04:638C xor a ldh [hBGMapMode], a ld hl, .BallPocketHeader call CopyMenuHeader ld de, .BallHolderText call DrawBackpackTitleRow hlcoord 2, 2 ld b, 8 ld c, $F call DrawTextBox call ScrollingMenu ld a, [wMenuJoypad] cp 1 jr z, .jmp1 cp 2 jr z, .jmp2 jr BallPocket .jmp1 and a ret .jmp2 scf ret .BallHolderText: ; 04:63B9 db "     ボール ホルダ      @" .BallPocketHeader: ; 04:63CC db MENU_BACKUP_TILES menu_coords 03, 03, $11, $0A dw .MenuData db 1 .MenuData: ; 04:63D4 db SCROLLINGMENU_ENABLE_FUNCTION3 ; flags db 4, 8 ; rows, columns db $80 ; horizontal spacing? dbw 0, wNumBallItems dba Function24774 dba Function24783 dba Function241ef DrawBackpackTitleRow: ; 04:63E4 push de hlcoord 0, 0 ld de, .BlankLine call PlaceString pop de hlcoord 0, 1 call PlaceString ret .BlankLine: ; 04:63F6 db "                    @" LoadItemData: ; 04:640B ld a, [wCurItem] ld [wce37], a call GetItemName call CopyStringToStringBuffer2 ret StartMenuLoadSprites: ; 04:6418 call DisableLCD ld a, 6 call UpdateSoundNTimes callab Function140d9 call LoadTilesetGFX call LoadFontExtra call ClearSprites ld hl, wVramState set 0, [hl] call UpdateSprites call EnableLCD call GetMemSGBLayout ret TryRegisterItem: ; 04:6440 callab CheckItemMenu ld a, [wItemAttributeParamBuffer] ld hl, .RegisterItemJumptable jp CallJumptable .RegisterItemJumptable ; 04:6451 dw PrintCantRegisterToolText dw PrintCantRegisterToolText dw PrintCantRegisterToolText dw PrintCantRegisterToolText dw RegisterItem dw RegisterItem dw RegisterItem RegisterItem: ; 04:645F ld a, [wItemIndex] inc a ld b, a ld a, [wActiveBackpackPocket] cp 2 jr z, .skip set 7, b .skip ld a, b ld [wRegisteredItem], a ld a, [wCurItem] ld [wRegisteredItemQuantity], a call LoadItemData ld de, $0002 call WaitPlaySFX ld hl, .RegisteredItemText call MenuTextBoxBackup ret .RegisteredItemText: ; 04:6487 db 1 dw wStringBuffer2 text "を " line "べんりボタンに とうろくした!" PrintCantRegisterToolText: ; 04:649E ld hl, .CantRegisterToolText call MenuTextBoxBackup ret .CantRegisterToolText: ; 04:64A5 text "そのどうぐは " line "とうろくできません!" StartMenu_Party: ; 04:64B9 ld a, [wPartyCount] and a jr nz, .partynonzero ld a, 0 ret .partynonzero call LoadStandardMenuHeader callab Function50756 HandleSelectedPokemon: ; 04:64CD xor a ld [wcdb9], a ld [wSelectedSwapPosition], a predef Function50774 jr PartyPrompt.partypromptreturn PartyPrompt: ; 04:64DB ld a, [wWhichPokemon] inc a ld [wSelectedSwapPosition], a callab Function8f1f2 ld a, 4 ld [wcdb9], a predef Function50774 .partypromptreturn jr c, .return jp SelectedPokemonSubmenu .return ld a, 0 PartyPromptExit: ; 04:64FB push af call ClearBGPalettes call StartMenuLoadSprites nop nop nop ld hl, 0000 call Call_ExitMenu call WaitBGMap call UpdateTimePals pop af ret SelectedPokemonSubmenu: ; 04:6513 hlcoord 1, 13 lb bc, 4, $12 call ClearBox callab Function24955 call GetCurNick ld a, [wMenuSelection] ld hl, PartyJumpTable ld de, $3 call FindItemInTable jp nc, HandleSelectedPokemon inc hl ld a, [hli] ld h, [hl] ld l, a ld a, [wd163] jp hl PartyJumpTable: ; 04:653E dbw 1, PartyTryCut dbw 2, PartyTryFly dbw 3, PartyTrySurf dbw 4, PartyCantUseMove dbw 5, PartyCantUseMove dbw 6, PartyCantUseMove dbw 7, PartyCantUseMove dbw 8, PartyTryDig dbw 9, PartyTryTeleport dbw 10, PartyCalculateHealth dbw 11, PartyPokemonSummary dbw 12, PartyCheckLessThanTwo dbw 13, PartyHeldItem dbw 14, HandleSelectedPokemon dbw 15, PartyPokemonSummary2 dbw 16, PartyMailMenu PartyCheckLessThanTwo: ; 04:656E ; might have to do with switch? ld a, [wPartyCount] cp 2 jp c, HandleSelectedPokemon jp PartyPrompt PartyHeldItem: ; 04:6579 callab Function_8f1cb ld hl, .HoldItemMenu call LoadMenuHeader call VerticalMenu jp c, .close call GetCurNick ld hl, wStringBuffer1 ld de, wcd11 ld bc, $0006 call CopyBytes ld a, [wMenuCursorY] cp 1 jr nz, .skip call CloseWindow call .PartyGiveHeldItem jr .jump .skip call .PartyTryRecieveItem call CloseWindow jr .jump .close; 04:65B3 call CloseWindow .jump jp HandleSelectedPokemon .PartyGiveHeldItem ; 04:65B9 call LoadStandardMenuHeader call ClearPalettes call GetPocket2Status call DrawBackpack call DebugBackpackLoop ld a, [wMenuJoypad] cp 2 jp z, .ExitGiveItem call SpeechTextBox call LoadItemData call CheckTossableItem ld a, [wItemAttributeParamBuffer] and a jp nz, .CantGive call GetPartyItemOffset ld a, [hl] and a jr z, .NoItem ld [wce37], a call GetItemName ld hl, ItemPrompt6753 call MenuTextBox call YesNoBox call ExitMenu jp c, .ExitGiveItem ld a, 1 ld [wItemQuantity], a ld hl, wNumBagItems call TossItem ld a, [wce37] ld b, a ld a, [wCurItem] ld [wce37], a ld a, b ld [wCurItem], a call PartyRecieveItem jp nc, .GiveItem ld a, [wce37] ld [wCurItem], a ld hl, ItemWasEquippedText call MenuTextBoxBackup jr .CheckMail .NoItem ld a, 1 ld [wItemQuantity], a ld hl, wNumBagItems call TossItem ld hl, ItemPrompt66FA call MenuTextBoxBackup .CheckMail call GetPartyItemOffset ld a, [wCurItem] ld [hl], a ld a, [wCurItem] cp ITEM_MAIL call z, PartyGiveMail jr .ExitGiveItem .GiveItem ; 04:664B ld a, [wce37] ld [wCurItem], a call PartyRecieveItem ld hl, PartyItemRecieveBagFullText call MenuTextBoxBackup jr .ExitGiveItem .CantGive ; 04:665C ld hl, .CantBeEquippedText call MenuTextBoxBackup .ExitGiveItem ;04:6662 call ClearPalettes call LoadFontsBattleExtra call ExitMenu ret .PartyTryRecieveItem ; 04:666C call SpeechTextBox call GetPartyItemOffset ld a, [hl] and a jr z, .NoItemToRecieve ld [wCurItem], a call PartyRecieveItem jr nc, .jump2 call GetPartyItemOffset ld a, [hl] ld [wce37], a ld [hl], 0 call GetItemName ld hl, ItemPrompt673D call MenuTextBoxBackup jr .escape .NoItemToRecieve ld hl, PartyNoItemToRecieveText call MenuTextBoxBackup jr .escape .jump2 ld hl, PartyItemRecieveBagFullText call MenuTextBoxBackup .escape ret .HoldItemMenu ; 04:66A1 ; verticalmenu db STATICMENU_NO_TOP_SPACING | STATICMENU_PLACE_TITLE menu_coords 4, 4, $e, 9 dw .HoldItemMenuText db 1 .HoldItemMenuText ;04:66A9 db $80 db 2 db "そうびを する@" db "そうびを はずす@" .CantBeEquippedText ; 04:66BC db 1 dw wStringBuffer1 text "を そうびすることは" line "できません" ItemWasEquippedText ; 04:66D1 db 1 dw wcd11 text "は そうび していた" line "@" .UnusedText1 ; 04:66E1 db 1 dw wStringBuffer1 text "を はずして" para "@" .UnusedText2 ; 04:66ED db 1 dw wStringBuffer2 text "を そうびした!" ItemPrompt66FA: ; 04:66FA db 1 dw wcd11 text "は @" .UnusedText3 ; 04:6701 db 1 dw wStringBuffer2 text "を" line "そうびした!" PartyNoItemToRecieveText: ; 04:670E db 1 dw wcd11 text "は なにも" line "そうび していません!" PartyItemRecieveBagFullText: ; 04:6724 text "どうぐが いっぱいで" line "そうびを はずせません!" ItemPrompt673D: ; 04:673D db 1 dw wcd11 text "から @" .UnusedText4 ; 04:6745 db 1 dw wStringBuffer1 text "を" line "はずしました!" ItemPrompt6753: ; 04:6753 db 1 dw wcd11 text "は @" .UnusedText5; 04:675A db 1 dw wStringBuffer1 text "を" line "すでに そうび しています" para "そうびしている どうぐを" line "とりかえますか?" done GetPartyItemOffset: ; 04:6784 push af ld a, 1 call GetPartyParamLocation pop af ret PartyRecieveItem: ; 04:678C ld a, 1 ld [wItemQuantity], a ld hl, wNumBagItems call ReceiveItem ret UnusedHandleItemJumptable; 04:6798 callab CheckItemMenu ld a, [wItemAttributeParamBuffer] ld hl, UnusedItemJumptable jp CallJumptable UnusedItemJumptable: ; 04:67A9 dw EmptyFunction127b7 dw PartyGiveMail dw PartyBallPocket dw ChangeBackpackPocket dw EmptyFunction127b7 dw EmptyFunction127b7 dw EmptyFunction127b7 EmptyFunction127b7: ; 04:67B7 ret ChangeBackpackPocket: ; 04:67B8 call FlipPocket2Status xor a ld [wSelectedSwapPosition], a ret PartyBallPocket: ; 04:67C0 call BallPocket jr c, .exit call SelectItem ret c jr PartyBallPocket .exit ret PartyGiveMail: ; 04:67CC call LoadStandardMenuHeader ld de, wMovementBufferCount callab ComposeMailMessage xor a ldh [hBGMapMode], a call LoadFontsBattleExtra call Call_ExitMenu call WaitBGMap ld a, [wWhichPokemon] ld hl, $BA68 ld bc, $0028 call AddNTimes ld d, h ld e, l ld hl, wMovementBufferCount ld bc, $0028 ld a, 2 call OpenSRAM call CopyBytes call CloseSRAM ret PartyMailMenu: ; 04:6806 ld hl, .MailMenu call LoadMenuHeader call VerticalMenu call PlaceHollowCursor jp c, .exit ld a, [wMenuCursorY] cp 3 jp z, .exit cp 1 jr z, .GiveMail ld hl, .MessageRemoveMail call MenuTextBox call YesNoBox call CloseWindow jp c, .exit ld a, [wWhichPokemon] ld hl, wPartyMon1 + MON_ITEM ld bc, $0030 call AddNTimes ld a, [hl] ld [wCurItem], a ld a, 1 ld [wItemQuantity], a push hl ld hl, wNumBagItems call ReceiveItem pop hl jr nc, .MailFull xor a ld [hl], a call GetCurNick ld hl, .DrawNick call MenuTextBoxBackup jr .exit .GiveMail ld a, [wWhichPokemon] ld hl, $BA68 ld bc, $0028 call AddNTimes ld bc, $0028 ld de, wMovementBufferCount ld a, 2 call OpenSRAM call CopyBytes call CloseSRAM hlcoord 0, 12 ld b, 4 ld c, $12 call DrawTextBox ld de, wMovementBufferCount hlcoord 1, 14 call PlaceString ld c, 5 call DelayFrames xor a ldh [hJoyState], a call TextboxWaitPressAorB_BlinkCursor .exit call CloseWindow jp HandleSelectedPokemon .MailFull ; 04:689D ld hl, .MailFullText call MenuTextBoxBackup jr .exit .MailMenu ; 04:68A5 db MENU_BACKUP_TILES menu_coords 04, 04, $0E, $0B dw .MailMenuStrings db 01 .MailMenuStrings ; 04:68AD db $80 db 3 db "メールを よむ@" db "メールを はずす@" db "やめる@" .MessageRemoveMail ; 04:68C4 text "メールを はずすと メッセージが" line "きえてしまいますが いいですか?" done .DrawNick ; 04:68E7 db 1 dw wStringBuffer1 text "から @" .DeleteMailText ; 04:68EF text "メールを" line "はずしました!" .MailFullText ; 04:68FD text "どうぐが いっぱいで" line "メールを はずせません!" PartyPokemonSummary: ; 04:6916 call LoadStandardMenuHeader call ClearSprites xor a ld [wMonType], a call LowVolume predef Function502b5 call MaxVolume call ReloadFontAndTileset call Call_ExitMenu jp HandleSelectedPokemon PartyTryCut: ; 04:6934 callab CutFunction ld a, [wFieldMoveSucceeded] cp $F jp nz, HandleSelectedPokemon ld a, 4 jp PartyPromptExit PartyTryFly: ; 04:6949 bit 2, a jp z, PrintNeedNewBadgeText callab FlyFunction ld a, [wFieldMoveSucceeded] cp $F jp nz, HandleSelectedPokemon ld a, 4 jp PartyPromptExit PartyCantUseMove: ; 04:6963 call PrintCantUseHM jp HandleSelectedPokemon PartyTryTeleport: ; 04:6969 callab TeleportFunction ld a, [wFieldMoveSucceeded] and a jp z, HandleSelectedPokemon ld a, 4 jp PartyPromptExit PartyTrySurf: ; 04:697D bit 4, a jp z, PrintNeedNewBadgeText callab SurfFunction ld a, [wFieldMoveSucceeded] and a jp z, HandleSelectedPokemon ld a, 4 jp PartyPromptExit PartyTryDig: ; 04:6996 callab DigFunction ld a, [wFieldMoveSucceeded] cp $F jp nz, HandleSelectedPokemon ld a, 4 jp PartyPromptExit PartyCalculateHealth: ; 04:69AB ld a, MON_MAXHP ; might be wrong, was $24 call GetPartyParamLocation ld a, [hli] ldh [hDividend], a ld a, [hl] ldh [hQuotient], a ld a, 5 ldh [hDivisor], a ld b, 2 call Divide ld a, MON_HP + 1 ; might be wrong, was $23 call GetPartyParamLocation ldh a, [hQuotient + 2] sub [hl] dec hl ldh a, [hQuotient + 1] sbc a, [hl] jp nc, PrintNotHealthyEnoughText callab Functionf218 jp HandleSelectedPokemon PrintNotHealthyEnoughText: ; 04:69D9 ld hl, NotHealthyEnoughText call PrintText jp HandleSelectedPokemon NotHealthyEnoughText: ; 04:69E2 text "たいりょくが たりません!" PrintNeedNewBadgeText: ; 04:69F1 ld hl, NeedNewBadgeText call PrintText jp HandleSelectedPokemon NeedNewBadgeText: ; 04:69FA text "あたらしい バッジを てにするまで" line "まだ つかえません!" PartyPokemonSummary2: ; 04:6A18 ld hl, wce5f ld a, [hl] push af set 4, [hl] call PokeSummary pop af ld [wce5f], a call ClearBGPalettes jp HandleSelectedPokemon PokeSummary: ; 04:6A2C call ClearBGPalettes call ClearTileMap call ClearSprites xor a ldh [hBGMapMode], a callab LoadOnlyPokemonStatsGraphics callab Function8f0cc ld a, [wWhichPokemon] ld e, a ld d, 0 ld hl, wPartySpecies add hl, de ld a, [hl] ld [wce37], a ld hl, Function8f0e3 ld a, BANK(Function8f0e3) ld e, 2 call FarCall_hl hlcoord 0, 1 ld b, 8 ld c, $12 call DrawTextBox hlcoord 1, 1 lb bc, 2, $12 call ClearBox hlcoord 3, 1 predef Function508c4 ld hl, wccd1 call SetHPPal ld b, $0E call GetSGBLayout hlcoord 11, 0 lb bc, 1, 9 call ClearBox hlcoord 16, 0 ld a, [wWhichPokemon] and a jr z, .FirstPokeChosen ld [hl], "」" .FirstPokeChosen inc a ld b, a ld a, [wPartyCount] cp b jr z, .LastPokeChosen inc hl inc hl ld [hl], "▶" ; right filled arrow .LastPokeChosen ld de, PartyMenuAttributes call SetMenuAttributes SummaryDrawPoke: ; 04:6AAC xor a ldh [hBGMapMode], a ld [wSelectedSwapPosition], a ld [wMonType], a predef Function50000 ld hl, wcd81 ld de, wce2e ld bc, $0004 call CopyBytes ld a, $28 ld [wHPBarMaxHP], a hlcoord 2, 3 predef Function50bfe hlcoord 11, 3 predef Function506d4 call WaitBGMap call SetPalettes ld a, [wcd57] inc a ld [w2DMenuNumRows], a hlcoord 0, 10 ld b, 6 ld c, $12 call DrawTextBox ld hl, w2DMenuFlags set 6, [hl] jr PartySelectionInputs.PartySelectSkipInputs PartySelectionInputs: ; 04:6AF9 call Get2DMenuJoypad + 3 bit B_BUTTON_F, a jp nz, PartySelectionBackOut bit A_BUTTON_F, a jp nz, .PartyPokeSelect bit D_RIGHT_F, a jp nz, .PartyPokeDetailsAdvancePage bit D_LEFT_F, a jp nz, .PartyPokeDetailsBackPage .PartySelectSkipInputs ld hl, wPartyMon1 + MON_MOVES lb bc, 0, $30 ld a, [wWhichPokemon] call AddNTimes ld a, [wMenuCursorY] dec a ld c, a ld b, 0 add hl, bc ld a, [hl] ld [wCurSpecies], a hlcoord 1, 11 lb bc, $06, $12 call ClearBox hlcoord 1, 12 ld a, [wSelectedSwapPosition] and a jr nz, .DrawMovePokeText ld de, PartyTypeText call PlaceString ld a, [wCurSpecies] ld b, a hlcoord 5, 12 predef Function500a0 ld a, [wCurSpecies] dec a ld hl, Data4a8b8 ld bc, $0007 call AddNTimes ld a, BANK(Data4a8b8) call GetFarByte hlcoord 15, 12 cp 2 jr c, .NotAMove ld [wce37], a ld de, wce37 lb bc, 1, 3 call PrintNumber jr .step .NotAMove ld de, PartyPokeDivider call PlaceString .step hlcoord 1, 14 predef Function2d663 jp PartySelectionInputs .DrawMovePokeText ; 04:6B84 hlcoord 1, 11 lb bc, 6, $12 call ClearBox hlcoord 1, 12 ld de, PartyMoveText call PlaceString jp PartySelectionInputs .PartyPokeDetailsAdvancePage ; 04:6B99 ld hl, wWhichPokemon inc [hl] ld a, [wPartyCount] cp [hl] jp nz, PokeSummary dec [hl] jp PartySelectionInputs .PartyPokeDetailsBackPage ; 04:6BA8 ld hl, wWhichPokemon ld a, [hl] and a jp z, PartySelectionInputs dec [hl] jp PokeSummary .PartyPokeSelect ; 04:6BB4 ld a, [wSelectedSwapPosition] and a jr nz, .swap ld a, [wMenuCursorY] ld [wSelectedSwapPosition], a call PlaceHollowCursor jr .DrawMovePokeText .swap ld hl, wPartyMon1 + MON_MOVES ld bc, $0030 ld a, [wWhichPokemon] call AddNTimes push hl call SwapEntries pop hl ld bc, $0015 add hl, bc call SwapEntries ld a, [wBattleMode] jr z, .NotInBattle ld hl, wca04 ld bc, $0020 ld a, [wWhichPokemon] call AddNTimes push hl call SwapEntries pop hl ld bc, $0006 add hl, bc call SwapEntries .NotInBattle hlcoord 1, 2 lb bc, 8, $12 call ClearBox jp SummaryDrawPoke SwapEntries: ; 04:6C06 ; values at (hl + [cursor place]-1) ; and (hl + [wSelectedSwapPosition] -1) get swapped push hl ; saves hl ld a, [wMenuCursorY] dec a ld c, a ld b, 0 add hl, bc ld d, h ld e, l pop hl ; hl is same as start ld a, [wSelectedSwapPosition] dec a ld c, a ld b, 0 add hl, bc ; hl is now hl + bc ld a, [de] ld b, [hl] ld [hl], a ld a, b ld [de], a ret PartySelectionBackOut: ; 04:6C20 xor a ld [wSelectedSwapPosition], a ld hl, w2DMenuFlags res 6, [hl] call ClearSprites call ClearTileMap ret PartyMenuAttributes: ; 04:6C30 ; cursor y ; cursor y ; num rows ; num cols ; bit 6: animate sprites bit 5: wrap around ; ? ; distance between items (hi: y, lo: x) ; allowed buttons (mask) db 3, 1 db 3, 1 db $40, $00 dn 2, 0 db $F3 PartyTypeText: ; 04:6C38 db "タイプ/     いりょく/@" PartyPokeDivider: ; 04:6C47 db "ーーー@" PartyMoveText: ; 04:6C4B db "どこに いどうしますか?@" CheckRegisteredItem: ; 04:6C58 call .RegisteredItem ret .RegisteredItem ; 04:6C5C call GetRegisteredItemID jr c, .NotRegistered call UseRegisteredItem ret .NotRegistered ; 04:6C65 call RefreshScreen ld hl, .NothingRegisteredText call MenuTextBoxBackup call Function1fea ret .NothingRegisteredText: ; 04:6C72 text "べんりボタンを おした!" line "⋯しかしなにもおきない!" GetRegisteredItemID: ; 04:6C8D ; if you can use the registered item, sets the ID to a ; otherwise sets 0 to a and sets the carry flag ld a, [wRegisteredItem] and a jr z, .CantUse bit 7, a jr nz, .IsKey dec a ld hl, wNumBagItems cp [hl] jr nc, .CantUse inc hl ld [wItemIndex], a ld e, a ld d, 0 add hl, de add hl, de ld a, [wRegisteredItemQuantity] cp [hl] jr nz, .CantUse ld a, [hl] ld [wCurItem], a and a ret .IsKey and $7F dec a ld hl, wNumKeyItems cp [hl] jr nc, .CantUse ld [wItemIndex], a ld e, a ld d, 0 inc hl add hl, de ld a, [wRegisteredItemQuantity] cp [hl] jr nz, .CantUse ld a, [hl] ld [wCurItem], a and a ret .CantUse xor a ld [wRegisteredItem], a ld [wRegisteredItemQuantity], a scf ret UseRegisteredItem: ; 04:6CD9 callab CheckItemMenu ld a, [wItemAttributeParamBuffer] ld hl, .RegisteredItemJumptable jp CallJumptable .RegisteredItemJumptable ; 04:6CEA dw .CantUse2 dw .CantUse dw .CantUse dw .CantUse dw .overworld dw .FieldMove .CantUse ; 04:6CF6 call RefreshScreen call PrintCantUseText call Function1fea and a ret .UnusedSimpleUse ; 04:6D01 call RefreshScreen call UseItem call Function1fea and a ret .overworld ; 04:6D0C call RefreshScreen ld hl, wVramState res 0, [hl] call UseItem call ClearPalettes call StartMenuLoadSprites call UpdateTimePals call Function1fea and a ret .FieldMove ; 04:6D25 call UseItem ld a, [wFieldMoveSucceeded] and a jr z, .CantUse2 scf ld a, -1 ldh [hStartmenuCloseAndSelectHookEnable], a ld a, 4 ret .CantUse2 call RefreshScreen call PrintCantUseText call Function1fea and a ret TrainerCardLoop: ; 04:6D41 ld a, [wVramState] push af xor a ld [wVramState], a call ClearTrainerCardJumptable .loop call UpdateTime call HandleTrainerCardJumptable jr c, .escape call DelayFrame jr .loop .escape pop af ld [wVramState], a ret ClearTrainerCardJumptable; 04:6D5E ; sets four bytes at wJumpTableIndex to 0 call ClearPalettes ld hl, wJumptableIndex xor a ld [hli], a ld [hli], a ld [hli], a ld [hl], a call ClearTileMap call ClearSprites ld b, $0D call GetSGBLayout ret HandleTrainerCardJumptable: ; 04:6D75 ld a, [wJumptableIndex] ld e, a ld d, 0 ld hl, .TrainerCardJumptable add hl, de add hl, de ld a, [hli] ld h, [hl] ld l, a jp hl .TrainerCardJumptable: ; 04:6D84 dw TrainerCardMainPage dw .IncreaseJumpTableIndex dw .IncreaseJumpTableIndex dw .SetPalAndIncJumpTable dw TrainerCardMainInputs dw TrainerCardScroll dw .IncreaseJumpTableIndex dw .IncreaseJumpTableIndex dw TrainerCardClearTileMap dw .IncreaseJumpTableIndex dw .IncreaseJumpTableIndex dw TrainerCardSetWindowY dw TrainerCardBadgePage dw .IncreaseJumpTableIndex dw .IncreaseJumpTableIndex dw .SetPalAndIncJumpTable dw TrainerCardBadgeInput dw TrainerCardSetClearFlag .SetPalAndIncJumpTable: ; 04:6DA8 call SetPalettes .IncreaseJumpTableIndex: ; 04:6DAB ld a, [wJumptableIndex] inc a ld [wJumptableIndex], a ret TrainerCardMainPage: ; 04:6DB3 call ClearPalettes call ClearTileMap call TrainerCardDrawProtag call DisableLCD call PlaceMiscTilesTrainerCard ld hl, TrainerCardBorderGFX ld de, vTileset ld bc, $0240 ld a, BANK(TrainerCardBorderGFX) call FarCopyData call DrawTrainerCardMainPage call EnableLCD ld a, [wJumptableIndex] inc a ld [wJumptableIndex], a xor a ld [wFlyDestination], a and a ret TrainerCardMainInputs: ; 04:6DE3 call EmptyFunction12e37 call GetJoypad ld hl, hJoyDown ld a, [hl] and D_LEFT jr nz, .left ld a, [hl] and D_RIGHT jr nz, .right ld a, [hl] and A_BUTTON jr nz, .a ld a, [hl] and B_BUTTON jr nz, .exit and a ret .a ld a, [wFlyDestination] and a jr z, .exit ld a, 5 ld [wJumptableIndex], a and a ret .exit ld a, $11 ld [wJumptableIndex], a and a ret .left hlcoord 4, 16 ld [hl], "▶" hlcoord 11, 16 ld [hl], " " xor a ld [wFlyDestination], a and a ret .right hlcoord 4, 16 ld [hl], " " hlcoord 11, 16 ld [hl], "▶" ld a, 1 ld [wFlyDestination], a and a ret EmptyFunction12e37: ; 04:6E37 ret TrainerCardScroll: ; 04:6E38 ld a, $90 ldh [hWY], a ld a, $9C ldh [hBGMapAddress +1], a ld a, [wJumptableIndex] inc a ld [wJumptableIndex], a and a ret TrainerCardClearTileMap: ; 04:6E49 xor a ldh [hWY], a ld a, $98 ldh [hBGMapAddress +1], a call ClearTileMap ld a, [wJumptableIndex] inc a ld [wJumptableIndex], a and a ret TrainerCardSetWindowY: ; 04:6E5C ldh a, [hWY] cp $90 jr nc, TrainerCardClearPals add a, 4 ldh [hWY], a and a ret TrainerCardClearPals: ; 04:6E68 call ClearPalettes ld a, $90 ldh [hWY], a ld a, [wJumptableIndex] inc a ld [wJumptableIndex], a and a ret TrainerCardBadgePage: ; 04:6E78 call ClearPalettes call DisableLCD ld hl, TrainerCardLeadersGFX ld de, vTileset ld bc, $07F0 ld a, BANK(TrainerCardLeadersGFX) call FarCopyData call ClearTileMap call DrawTrainerCaseBadgePage call EnableLCD ld a, [wJumptableIndex] inc a ld [wJumptableIndex], a and a ret TrainerCardBadgeInput: ; 04:6E9E call GetJoypad ld hl, hJoyDown ld a, [hl] and 3 jr z, .skip ld a, $11 ld [wJumptableIndex], a .skip and a ret TrainerCardSetClearFlag: ; 04:6EB0 scf ret TrainerCardDrawProtag: ; 04:6EB2 ld de, ProtagonistPic ld a, BANK(ProtagonistPic) call UncompressSpriteFromDE ld a, 0 call OpenSRAM ld hl, sSpriteBuffer1 ld de, sSpriteBuffer0 ld bc, $0310 call CopyBytes call CloseSRAM ld de, vChars2 tile $30 call InterlaceMergeSpriteBuffers ret PlaceMiscTilesTrainerCard: ; 04:6ED5 ld a, $30 ldh [hGraphicStartTile], a hlcoord 13, 1 lb bc, 7, 7 predef PlaceGraphic ret DrawTrainerCardMainPage: ; 04:6EE5 hlcoord 0, 0 ld d, 5 call PlaceTrainerCardBGTile hlcoord 0, 8 ld d, 6 call PlaceTrainerCardBGTile hlcoord 2, 2 ld de, TrainerCardText call PlaceString hlcoord 16, 10 ld de, TrainerCardDexEntriesText call PlaceString hlcoord 6, 2 ld de, wPlayerName call PlaceString hlcoord 5, 4 ld de, wce73 lb bc, 2, 5 call PrintNumber hlcoord 7, 6 ld de, wd15d lb bc, 3, 6 call PrintNumber ld [hl], $F0 ld hl, wPokedexOwned ld b, $1C call CountSetBits ld de, wce37 hlcoord 13, 10 lb bc, 1, 3 call PrintNumber hlcoord 1, 0 ld de, TrainerCardNameTiles call PlaceTrainerCardTiles hlcoord 2, 4 ld de, TrainerCardIDNoTiles call PlaceTrainerCardTiles hlcoord 1, 3 ld de, TrainerCardNameUnderlineTiles call PlaceTrainerCardTiles hlcoord 1, 8 ld de, TrainerCardStatusTiles call PlaceTrainerCardTiles hlcoord 0, 13 ld de, TrainerCardBadgesOutlineTiles call PlaceTrainerCardTiles hlcoord 5, 16 ld de, TrainerCardBadgesTextTiles call PlaceTrainerCardTiles hlcoord 4, 16 ld [hl], "▶" ret TrainerCardText: ; 04:6F7A db "なまえ/おこづかい#ずかん@" TrainerCardDexEntriesText: ; 04:6F8C db "ひき@" TrainerCardNameTiles: ; 04:6F8F db $0A, $0C, $0D, $0E, $0F, $FF TrainerCardIDNoTiles: ; 04:6F95 db $22, $23, $FF TrainerCardNameUnderlineTiles: ; 04:6F98 db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $0B, $FF TrainerCardStatusTiles: ; 04:6FA6 db $0A, $10, $11, $12, $13, $FF TrainerCardBadgesOutlineTiles: ; 04:6FAC db $03, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $02, $7F, $14, $15, $16, $17, $18, $19, $1A, $1B, $1C, $1D, $7F, $7F, $7F, $FE, $BA, $7F, $7F, $7F, $05, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $FF TrainerCardBadgesTextTiles: ; 04:6FE9 db $1E, $1F, $20, $7F, $7F, $7F, $7F, $1B, $1C, $1D, $FF DrawTrainerCaseBadgePage: ; 04:6FF4 hlcoord 0, 0 ld d, $0E call PlaceTrainerCardBGTile hlcoord 5, 2 ld de, TrainerCardLeagueBadgesTextTiles call PlaceString hlcoord 1, 0 ld de, TrainerCardBadgesTiles call PlaceTrainerCardTiles hlcoord 0, 3 ld de, TrainerCardBadgeSilhouettesTiles call PlaceTrainerCardTiles ret TrainerCardLeagueBadgesTextTiles: ; 04:7018 db "#りーグバッジ@" TrainerCardBadgesTiles: ; 04:7020 db $0A, $0B, $0C, $0D, $0E, $FF TrainerCardBadgeSilhouettesTiles: ; 04:7026 db $07, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $07, $07, $02, $18, $58, $59, $5A, $19, $5B, $5C, $5D, $1A, $6B, $6C, $6D, $1B, $78, $79, $7A, $7F, $07, $07, $02, $7F, $20, $21, $22, $7F, $23, $24, $25, $7F, $26, $27, $28, $7F, $29, $2A, $2B, $7F, $07, $07, $02, $7F, $30, $31, $32, $7F, $33, $34, $35, $7F, $36, $37, $38, $7F, $39, $3A, $3B, $7F, $07, $07, $02, $7F, $40, $41, $42, $7F, $43, $44, $45, $7F, $46, $47, $48, $7F, $49, $4A, $4B, $7F, $07, $07, $05, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $04, $07, $07, $7F, $1C, $68, $69, $6A, $1D, $7E, $6F, $6F, $1E, $5E, $5F, $6E, $1F, $7B, $7C, $7D, $02, $07, $07, $7F, $7F, $2C, $2D, $2E, $7F, $2F, $50, $51, $7F, $52, $53, $54, $7F, $55, $56, $57, $02, $07, $07, $7F, $7F, $3C, $3D, $3E, $7F, $3F, $60, $61, $7F, $62, $63, $64, $7F, $65, $66, $67, $02, $07, $07, $7F, $7F, $4C, $4D, $4E, $7F, $4F, $70, $71, $7F, $72, $73, $74, $7F, $75, $76, $77, $02, $07, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $02, $07, $7F, $7F, $10, $7F, $11, $7F, $12, $7F, $13, $7F, $14, $7F, $15, $7F, $16, $7F, $17, $7F, $02, $07, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $06, $07, $FF PlaceTrainerCardTiles: ; 04:712B ; takes the tiles from de and places them at hl until FF is found. ld a, [de] cp $FF ret z ld [hli], a inc de jr PlaceTrainerCardTiles PlaceTrainerCardBGTile: ; 04:7133 ; puts tile $07 (chequered background) at coord hl. ; d controls how many times biggerloop loops. ld e, $14 .loop ld a, $07 ld [hli], a dec e jr nz, .loop ld a, $07 ld [hli], a ld e, $11 .ScanLoop inc hl dec e jr nz, .ScanLoop ld a, 9 ld [hli], a ld a, 7 ld [hli], a .OuterLoop ld a, 7 ld [hli], a ld e, $12 .InnerLoop inc hl dec e jr nz, .InnerLoop ld a, 7 ld [hli], a dec d jr nz, .OuterLoop ld a, 7 ld [hli], a ld a, 8 ld [hli], a ld e, $11 .ScanLoop2 inc hl dec e jr nz, .ScanLoop2 ld a, 7 ld [hli], a ld e, $14 .LastLoop ld a, 7 ld [hli], a dec e jr nz, .LastLoop ret ; end of section